{
  "version": 3,
  "sources": ["../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/index.js", "../../../node_modules/es-errors/type.js", "node-modules-polyfills:util", "node-modules-polyfills-commonjs:util", "../../../node_modules/object-inspect/util.inspect.js", "../../../node_modules/object-inspect/index.js", "../../../node_modules/side-channel-list/index.js", "../../../node_modules/es-object-atoms/index.js", "../../../node_modules/es-errors/index.js", "../../../node_modules/es-errors/eval.js", "../../../node_modules/es-errors/range.js", "../../../node_modules/es-errors/ref.js", "../../../node_modules/es-errors/syntax.js", "../../../node_modules/es-errors/uri.js", "../../../node_modules/math-intrinsics/abs.js", "../../../node_modules/math-intrinsics/floor.js", "../../../node_modules/math-intrinsics/max.js", "../../../node_modules/math-intrinsics/min.js", "../../../node_modules/math-intrinsics/pow.js", "../../../node_modules/math-intrinsics/round.js", "../../../node_modules/math-intrinsics/isNaN.js", "../../../node_modules/math-intrinsics/sign.js", "../../../node_modules/side-channel-map/node_modules/gopd/gOPD.js", "../../../node_modules/side-channel-map/node_modules/gopd/index.js", "../../../node_modules/es-define-property/index.js", "../../../node_modules/has-symbols/shams.js", "../../../node_modules/has-symbols/index.js", "../../../node_modules/get-proto/Reflect.getPrototypeOf.js", "../../../node_modules/get-proto/Object.getPrototypeOf.js", "../../../node_modules/function-bind/implementation.js", "../../../node_modules/function-bind/index.js", "../../../node_modules/call-bind-apply-helpers/functionCall.js", "../../../node_modules/call-bind-apply-helpers/functionApply.js", "../../../node_modules/call-bind-apply-helpers/reflectApply.js", "../../../node_modules/call-bind-apply-helpers/actualApply.js", "../../../node_modules/call-bind-apply-helpers/index.js", "../../../node_modules/dunder-proto/node_modules/gopd/gOPD.js", "../../../node_modules/dunder-proto/node_modules/gopd/index.js", "../../../node_modules/dunder-proto/get.js", "../../../node_modules/get-proto/index.js", "../../../node_modules/side-channel-map/node_modules/hasown/index.js", "../../../node_modules/side-channel-map/node_modules/get-intrinsic/index.js", "../../../node_modules/call-bound/node_modules/gopd/gOPD.js", "../../../node_modules/call-bound/node_modules/gopd/index.js", "../../../node_modules/call-bound/node_modules/hasown/index.js", "../../../node_modules/call-bound/node_modules/get-intrinsic/index.js", "../../../node_modules/call-bound/index.js", "../../../node_modules/side-channel-map/index.js", "../../../node_modules/side-channel-weakmap/node_modules/gopd/gOPD.js", "../../../node_modules/side-channel-weakmap/node_modules/gopd/index.js", "../../../node_modules/side-channel-weakmap/node_modules/hasown/index.js", "../../../node_modules/side-channel-weakmap/node_modules/get-intrinsic/index.js", "../../../node_modules/side-channel-weakmap/index.js", "../../../node_modules/side-channel/index.js", "../../../node_modules/qs/lib/formats.js", "../../../node_modules/qs/lib/utils.js", "../../../node_modules/qs/lib/stringify.js", "../../../node_modules/qs/lib/parse.js", "../../../node_modules/qs/lib/index.js", "../../../node_modules/@kurkle/color/dist/color.esm.js", "../../../node_modules/chart.js/src/helpers/helpers.core.ts", "../../../node_modules/chart.js/src/helpers/helpers.math.ts", "../../../node_modules/chart.js/src/helpers/helpers.collection.ts", "../../../node_modules/chart.js/src/helpers/helpers.extras.ts", "../../../node_modules/chart.js/src/helpers/helpers.easing.ts", "../../../node_modules/chart.js/src/helpers/helpers.color.ts", "../../../node_modules/chart.js/src/core/core.animations.defaults.js", "../../../node_modules/chart.js/src/core/core.layouts.defaults.js", "../../../node_modules/chart.js/src/helpers/helpers.intl.ts", "../../../node_modules/chart.js/src/core/core.ticks.js", "../../../node_modules/chart.js/src/core/core.scale.defaults.js", "../../../node_modules/chart.js/src/core/core.defaults.js", "../../../node_modules/chart.js/src/helpers/helpers.canvas.ts", "../../../node_modules/chart.js/src/helpers/helpers.options.ts", "../../../node_modules/chart.js/src/helpers/helpers.config.ts", "../../../node_modules/chart.js/src/helpers/helpers.curve.ts", "../../../node_modules/chart.js/src/helpers/helpers.dom.ts", "../../../node_modules/chart.js/src/helpers/helpers.interpolation.ts", "../../../node_modules/chart.js/src/helpers/helpers.rtl.ts", "../../../node_modules/chart.js/src/helpers/helpers.segment.js", "../../../node_modules/chart.js/src/helpers/helpers.dataset.ts", "../../../node_modules/chart.js/src/core/core.animator.js", "../../../node_modules/chart.js/src/core/core.animation.js", "../../../node_modules/chart.js/src/core/core.animations.js", "../../../node_modules/chart.js/src/core/core.datasetController.js", "../../../node_modules/chart.js/src/controllers/controller.bar.js", "../../../node_modules/chart.js/src/controllers/controller.bubble.js", "../../../node_modules/chart.js/src/controllers/controller.doughnut.js", "../../../node_modules/chart.js/src/controllers/controller.line.js", "../../../node_modules/chart.js/src/controllers/controller.polarArea.js", "../../../node_modules/chart.js/src/controllers/controller.pie.js", "../../../node_modules/chart.js/src/controllers/controller.radar.js", "../../../node_modules/chart.js/src/controllers/controller.scatter.js", "../../../node_modules/chart.js/src/core/core.adapters.ts", "../../../node_modules/chart.js/src/core/core.interaction.js", "../../../node_modules/chart.js/src/core/core.layouts.js", "../../../node_modules/chart.js/src/platform/platform.base.js", "../../../node_modules/chart.js/src/platform/platform.basic.js", "../../../node_modules/chart.js/src/platform/platform.dom.js", "../../../node_modules/chart.js/src/platform/index.js", "../../../node_modules/chart.js/src/core/core.element.ts", "../../../node_modules/chart.js/src/core/core.scale.autoskip.js", "../../../node_modules/chart.js/src/core/core.scale.js", "../../../node_modules/chart.js/src/core/core.typedRegistry.js", "../../../node_modules/chart.js/src/core/core.registry.js", "../../../node_modules/chart.js/src/core/core.plugins.js", "../../../node_modules/chart.js/src/core/core.config.js", "../../../node_modules/chart.js/src/core/core.controller.js", "../../../node_modules/chart.js/src/elements/element.arc.ts", "../../../node_modules/chart.js/src/elements/element.line.js", "../../../node_modules/chart.js/src/elements/element.point.ts", "../../../node_modules/chart.js/src/elements/element.bar.js", "../../../node_modules/chart.js/src/plugins/plugin.colors.ts", "../../../node_modules/chart.js/src/plugins/plugin.decimation.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.segment.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.helper.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.options.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.target.stack.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/simpleArc.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.target.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/filler.drawing.js", "../../../node_modules/chart.js/src/plugins/plugin.filler/index.js", "../../../node_modules/chart.js/src/plugins/plugin.legend.js", "../../../node_modules/chart.js/src/plugins/plugin.title.js", "../../../node_modules/chart.js/src/plugins/plugin.subtitle.js", "../../../node_modules/chart.js/src/plugins/plugin.tooltip.js", "../../../node_modules/chart.js/src/scales/scale.category.js", "../../../node_modules/chart.js/src/scales/scale.linearbase.js", "../../../node_modules/chart.js/src/scales/scale.linear.js", "../../../node_modules/chart.js/src/scales/scale.logarithmic.js", "../../../node_modules/chart.js/src/scales/scale.radialLinear.js", "../../../node_modules/chart.js/src/scales/scale.time.js", "../../../node_modules/chart.js/src/scales/scale.timeseries.js", "../../../node_modules/chart.js/src/index.ts", "node-modules-polyfills:crypto", "node-modules-polyfills-commonjs:crypto", "../../../node_modules/crypto-js/core.js", "../../../node_modules/crypto-js/md5.js", "../../../gems/collateral_design/app/javascripts/table/helpers.js", "../../../node_modules/moment/moment.js", "../../../node_modules/inputmask/dist/inputmask.js", "../../../node_modules/@rails/actiontext/app/assets/javascripts/actiontext.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/alpine-magic-helpers/dist/index.js", "../../../node_modules/alpine-turbo-drive-adapter/dist/alpine-turbo-drive-adapter.js", "../../../node_modules/alpinejs/dist/alpine.js", "../../../node_modules/flatpickr/dist/flatpickr.js", "../../../node_modules/trix/src/trix/config/attachments.js", "../../../node_modules/trix/src/trix/config/block_attributes.js", "../../../node_modules/trix/src/trix/config/browser.js", "../../../node_modules/trix/src/trix/config/dompurify.js", "../../../node_modules/trix/src/trix/config/lang.js", "../../../node_modules/trix/src/trix/config/file_size_formatting.js", "../../../node_modules/trix/src/trix/constants.js", "../../../node_modules/trix/src/trix/core/helpers/extend.js", "../../../node_modules/trix/src/trix/core/helpers/dom.js", "../../../node_modules/trix/src/trix/config/input.js", "../../../node_modules/trix/src/trix/config/key_names.js", "../../../node_modules/trix/src/trix/config/parser.js", "../../../node_modules/trix/src/trix/config/text_attributes.js", "../../../node_modules/trix/src/trix/config/toolbar.js", "../../../node_modules/trix/src/trix/config/undo.js", "../../../node_modules/trix/src/trix/config/css.js", "../../../node_modules/trix/src/trix/core/basic_object.js", "../../../node_modules/trix/src/trix/core/utilities/utf16_string.js", "../../../node_modules/trix/src/trix/core/object.js", "../../../node_modules/trix/src/trix/core/helpers/arrays.js", "../../../node_modules/trix/src/trix/core/helpers/bidi.js", "../../../node_modules/trix/src/trix/core/helpers/config.js", "../../../node_modules/trix/src/trix/core/helpers/custom_elements.js", "../../../node_modules/trix/src/trix/core/helpers/events.js", "../../../node_modules/trix/src/trix/core/helpers/functions.js", "../../../node_modules/trix/src/trix/core/helpers/objects.js", "../../../node_modules/trix/src/trix/core/helpers/ranges.js", "../../../node_modules/trix/src/trix/observers/selection_change_observer.js", "../../../node_modules/trix/src/trix/core/helpers/strings.js", "../../../node_modules/trix/src/trix/core/collections/hash.js", "../../../node_modules/trix/src/trix/core/collections/object_group.js", "../../../node_modules/trix/src/trix/core/collections/object_map.js", "../../../node_modules/trix/src/trix/core/collections/element_store.js", "../../../node_modules/trix/src/trix/core/utilities/operation.js", "../../../node_modules/trix/src/trix/views/object_view.js", "../../../node_modules/trix/node_modules/dompurify/dist/purify.es.mjs", "../../../node_modules/trix/src/trix/models/html_sanitizer.js", "../../../node_modules/trix/src/trix/views/attachment_view.js", "../../../node_modules/trix/src/trix/views/previewable_attachment_view.js", "../../../node_modules/trix/src/trix/views/piece_view.js", "../../../node_modules/trix/src/trix/views/text_view.js", "../../../node_modules/trix/src/trix/views/block_view.js", "../../../node_modules/trix/src/trix/views/document_view.js", "../../../node_modules/trix/src/trix/models/piece.js", "../../../node_modules/trix/src/trix/operations/image_preload_operation.js", "../../../node_modules/trix/src/trix/models/attachment.js", "../../../node_modules/trix/src/trix/models/attachment_piece.js", "../../../node_modules/trix/src/trix/models/string_piece.js", "../../../node_modules/trix/src/trix/models/splittable_list.js", "../../../node_modules/trix/src/trix/models/text.js", "../../../node_modules/trix/src/trix/models/block.js", "../../../node_modules/trix/src/trix/models/document.js", "../../../node_modules/trix/src/trix/models/html_parser.js", "../../../node_modules/trix/src/trix/core/serialization.js", "../../../node_modules/trix/src/trix/models/managed_attachment.js", "../../../node_modules/trix/src/trix/models/attachment_manager.js", "../../../node_modules/trix/src/trix/models/line_break_insertion.js", "../../../node_modules/trix/src/trix/models/composition.js", "../../../node_modules/trix/src/trix/models/undo_manager.js", "../../../node_modules/trix/src/trix/filters/filter.js", "../../../node_modules/trix/src/trix/filters/attachment_gallery_filter.js", "../../../node_modules/trix/src/trix/models/editor.js", "../../../node_modules/trix/src/trix/models/location_mapper.js", "../../../node_modules/trix/src/trix/models/point_mapper.js", "../../../node_modules/trix/src/trix/models/selection_manager.js", "../../../node_modules/trix/src/trix/controllers/attachment_editor_controller.js", "../../../node_modules/trix/src/trix/controllers/composition_controller.js", "../../../node_modules/trix/src/trix/controllers/controller.js", "../../../node_modules/trix/src/trix/observers/mutation_observer.js", "../../../node_modules/trix/src/trix/operations/file_verification_operation.js", "../../../node_modules/trix/src/trix/models/flaky_android_keyboard_detector.js", "../../../node_modules/trix/src/trix/controllers/input_controller.js", "../../../node_modules/trix/src/trix/controllers/level_0_input_controller.js", "../../../node_modules/trix/src/trix/controllers/level_2_input_controller.js", "../../../node_modules/trix/src/trix/controllers/toolbar_controller.js", "../../../node_modules/trix/src/trix/controllers/editor_controller.js", "../../../node_modules/trix/src/trix/elements/trix_toolbar_element.js", "../../../node_modules/trix/src/trix/elements/trix_editor_element.js", "../../../node_modules/trix/src/trix/trix.js", "../../../node_modules/prismjs/prism.js", "../../javascript/src/acceptAssignmentApp.js", "../../../node_modules/lodash/lodash.js", "../../javascript/src/advancedSearcheableApp.js", "../../javascript/src/anchorMenuApp.js", "../../javascript/src/anchorUrlApp.js", "../../javascript/src/utils.js", "../../javascript/src/appraisalCheckingApp.js", "../../javascript/src/assignVendorsApp.js", "../../javascript/src/autoAssignmentSettings.js", "../../javascript/src/batchActionsApp.js", "../../javascript/src/bidsApp.js", "../../javascript/src/changeTermsApp.js", "../../javascript/src/chiefAppraiserReviewApp.js", "../../javascript/src/commonResponsesApp.js", "../../javascript/src/coverageAreaRadiusApp.js", "../../javascript/src/coverageAreaStateApp.js", "../../javascript/src/clientAutoAssignmentApp.js", "../../javascript/src/customSelect.js", "../../javascript/src/customTrixTools.js", "../../../node_modules/sortablejs/modular/sortable.esm.js", "../../javascript/src/draggableApp.js", "../../javascript/src/durationSelectApp.js", "../../javascript/src/eventConditionsApp.js", "../../javascript/src/fileFieldApp.js", "../../javascript/src/flashMessage.js", "../../javascript/src/googlePayApp.js", "../../javascript/src/paymentProvidersFactory.js", "../../javascript/src/tokenizedPayApp.js", "../../javascript/src/paymentProviders/baseProvider.js", "../../javascript/src/paymentProviders/googlePayProvider.js", "../../javascript/src/paymentProviders/applePayProvider.js", "../../javascript/src/paymentProviders/index.js", "../../javascript/src/integrationsStatusApp.js", "../../javascript/src/invoiceSettingsSimulationApp.js", "../../javascript/src/mapViewApp.js", "../../javascript/src/mergeFieldsApp.js", "../../javascript/src/modal.js", "../../javascript/src/nestedDynamicForm.js", "../../javascript/src/newInvoiceApp.js", "../../javascript/src/newNoteApp.js", "../../javascript/src/newPaymentApp.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js", "../../javascript/channels/consumer.js", "../../../node_modules/relative-time-format/source/LocaleDataStore.js", "../../../node_modules/relative-time-format/source/resolveLocale.js", "../../../node_modules/relative-time-format/source/PluralRuleFunctions.js", "../../../node_modules/relative-time-format/source/getPluralRulesLocale.js", "../../../node_modules/relative-time-format/source/PluralRules.js", "../../../node_modules/relative-time-format/source/RelativeTimeFormat.js", "../../../node_modules/relative-time-format/index.js", "../../../node_modules/javascript-time-ago/source/cache.js", "../../../node_modules/javascript-time-ago/source/locale.js", "../../../node_modules/javascript-time-ago/source/isStyleObject.js", "../../../node_modules/javascript-time-ago/source/steps/units.js", "../../../node_modules/javascript-time-ago/source/steps/getStepDenominator.js", "../../../node_modules/javascript-time-ago/source/round.js", "../../../node_modules/javascript-time-ago/source/steps/getStepMinTime.js", "../../../node_modules/javascript-time-ago/source/steps/getStep.js", "../../../node_modules/javascript-time-ago/source/steps/getTimeToNextUpdateForUnit.js", "../../../node_modules/javascript-time-ago/source/steps/getTimeToNextUpdate.js", "../../../node_modules/javascript-time-ago/source/LocaleDataStore.js", "../../../node_modules/javascript-time-ago/source/steps/round.js", "../../../node_modules/javascript-time-ago/source/style/round.js", "../../../node_modules/javascript-time-ago/source/style/roundMinute.js", "../../../node_modules/javascript-time-ago/source/steps/approximate.js", "../../../node_modules/javascript-time-ago/source/style/approximate.js", "../../../node_modules/javascript-time-ago/source/style/approximateTime.js", "../../../node_modules/javascript-time-ago/source/steps/helpers.js", "../../../node_modules/javascript-time-ago/source/steps/index.js", "../../../node_modules/javascript-time-ago/source/style/twitter.js", "../../../node_modules/javascript-time-ago/source/style/twitterNow.js", "../../../node_modules/javascript-time-ago/source/style/twitterMinute.js", "../../../node_modules/javascript-time-ago/source/style/twitterMinuteNow.js", "../../../node_modules/javascript-time-ago/source/style/twitterFirstMinute.js", "../../../node_modules/javascript-time-ago/source/style/mini.js", "../../../node_modules/javascript-time-ago/source/style/miniNow.js", "../../../node_modules/javascript-time-ago/source/style/miniMinute.js", "../../../node_modules/javascript-time-ago/source/style/miniMinuteNow.js", "../../../node_modules/javascript-time-ago/source/style/getStyleByName.js", "../../../node_modules/javascript-time-ago/source/TimeAgo.js", "../../../node_modules/javascript-time-ago/index.js", "../../../node_modules/javascript-time-ago/locale/en.json.js", "../../javascript/src/notificationsApp.js", "../../javascript/src/orderAssignmentConsoleApp.js", "../../javascript/src/orderDetailsRailApp.js", "../../../node_modules/uuid/dist/stringify.js", "../../../node_modules/uuid/dist/rng.js", "../../../node_modules/uuid/dist/native.js", "../../../node_modules/uuid/dist/v4.js", "../../../node_modules/uuid/dist/index.js", "../../javascript/src/orderInteractionsApp.js", "../../javascript/src/orderTableColumnsApp.js", "../../javascript/src/orderWizardPropertyApp.js", "../../javascript/src/verticalScrollMirror.js", "../../javascript/src/pdfViewerApp.js", "../../javascript/src/placeInput.js", "../../javascript/src/phonesInputApp.js", "../../javascript/src/popoutApp.js", "../../javascript/src/preSubmissionFindingsCompletionApp.js", "../../javascript/src/radiusMapViewApp.js", "../../javascript/src/rangeDatepickerApp.js", "../../javascript/src/resizableTableSettings.js", "../../javascript/src/selectAutocompleteApp.js", "../../javascript/src/submissionApp.js", "../../javascript/src/switchButton.js", "../../javascript/src/tabApp.js", "../../javascript/src/tableFormApp.js", "../../javascript/src/tabs.js", "../../javascript/src/tagsInput.js", "../../javascript/src/paymentLinkEmailsApp.js", "../../javascript/src/userMenuApp.js", "../../javascript/src/vendorLicenseApp.js", "../../javascript/src/vendorProductFeeTableApp.js", "../../javascript/src/vendorAutoAssignConfigApp.js", "../../javascript/src/vendorsAutocomplete.js", "../../javascript/src/vendorsPanelFilter.js", "../../../node_modules/chart.js/auto/auto.js", "../../javascript/src/vendorStatisticsApp.js", "../../../node_modules/filepond/dist/filepond.js", "../../javascript/src/fileFormApp.js", "../../javascript/src/csvImportApp.js", "../../javascript/src/newFilesApp.js", "../../javascript/src/receivableStatisticsApp.js", "../../javascript/src/payablestatisticsApp.js", "../../../node_modules/clipboard/dist/clipboard.js", "../../../node_modules/flatpickr/dist/plugins/confirmDate/confirmDate.js", "../../../node_modules/@yaireo/dragsort/dist/dragsort.js", "../../../node_modules/@validide/resizable-table-columns/dist/js/es6/resizable-constants.js", "../../../node_modules/@validide/resizable-table-columns/dist/js/es6/resizable-event-data.js", "../../../node_modules/@validide/resizable-table-columns/dist/js/es6/utilities.js", "../../../node_modules/@validide/resizable-table-columns/dist/js/es6/utilities-dom.js", "../../../node_modules/@validide/resizable-table-columns/dist/js/es6/resizable-options.js", "../../../node_modules/@validide/resizable-table-columns/dist/js/es6/resizable-table-columns.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/constants.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/helpers.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/defaults.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/suggestions.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/dropdown.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/persist.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/texts.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/templates.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/events.js", "../../../node_modules/@yaireo/tagify/dist/src/tagify.js", "../../../node_modules/@yaireo/tagify/dist/src/parts/EventDispatcher.js", "../../../node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.esm.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", "../../../node_modules/@rails/request.js/src/fetch_response.js", "../../../node_modules/@rails/request.js/src/request_interceptor.js", "../../../node_modules/@rails/request.js/src/lib/utils.js", "../../../node_modules/@rails/request.js/src/fetch_request.js", "../../javascript/application.js", "../../../node_modules/chartkick/dist/chartkick.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/helpers/helpers.dataset.ts", "../../../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/node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../node_modules/date-fns/esm/_lib/toInteger/index.js", "../../../node_modules/date-fns/esm/_lib/requiredArgs/index.js", "../../../node_modules/date-fns/esm/toDate/index.js", "../../../node_modules/date-fns/esm/addDays/index.js", "../../../node_modules/date-fns/esm/addMonths/index.js", "../../../node_modules/date-fns/esm/addMilliseconds/index.js", "../../../node_modules/date-fns/esm/addHours/index.js", "../../../node_modules/date-fns/esm/_lib/defaultOptions/index.js", "../../../node_modules/date-fns/esm/startOfWeek/index.js", "../../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js", "../../../node_modules/date-fns/esm/startOfDay/index.js", "../../../node_modules/date-fns/esm/differenceInCalendarDays/index.js", "../../../node_modules/date-fns/esm/addMinutes/index.js", "../../../node_modules/date-fns/esm/addQuarters/index.js", "../../../node_modules/date-fns/esm/addSeconds/index.js", "../../../node_modules/date-fns/esm/addWeeks/index.js", "../../../node_modules/date-fns/esm/addYears/index.js", "../../../node_modules/date-fns/esm/compareAsc/index.js", "../../../node_modules/date-fns/esm/constants/index.js", "../../../node_modules/date-fns/esm/isDate/index.js", "../../../node_modules/date-fns/esm/isValid/index.js", "../../../node_modules/date-fns/esm/differenceInCalendarMonths/index.js", "../../../node_modules/date-fns/esm/differenceInCalendarYears/index.js", "../../../node_modules/date-fns/esm/differenceInDays/index.js", "../../../node_modules/date-fns/esm/differenceInMilliseconds/index.js", "../../../node_modules/date-fns/esm/_lib/roundingMethods/index.js", "../../../node_modules/date-fns/esm/differenceInHours/index.js", "../../../node_modules/date-fns/esm/differenceInMinutes/index.js", "../../../node_modules/date-fns/esm/endOfDay/index.js", "../../../node_modules/date-fns/esm/endOfMonth/index.js", "../../../node_modules/date-fns/esm/isLastDayOfMonth/index.js", "../../../node_modules/date-fns/esm/differenceInMonths/index.js", "../../../node_modules/date-fns/esm/differenceInQuarters/index.js", "../../../node_modules/date-fns/esm/differenceInSeconds/index.js", "../../../node_modules/date-fns/esm/differenceInWeeks/index.js", "../../../node_modules/date-fns/esm/differenceInYears/index.js", "../../../node_modules/date-fns/esm/startOfMinute/index.js", "../../../node_modules/date-fns/esm/startOfQuarter/index.js", "../../../node_modules/date-fns/esm/startOfMonth/index.js", "../../../node_modules/date-fns/esm/endOfYear/index.js", "../../../node_modules/date-fns/esm/startOfYear/index.js", "../../../node_modules/date-fns/esm/endOfHour/index.js", "../../../node_modules/date-fns/esm/endOfWeek/index.js", "../../../node_modules/date-fns/esm/endOfMinute/index.js", "../../../node_modules/date-fns/esm/endOfQuarter/index.js", "../../../node_modules/date-fns/esm/endOfSecond/index.js", "../../../node_modules/date-fns/esm/subMilliseconds/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js", "../../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js", "../../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js", "../../../node_modules/date-fns/esm/_lib/format/formatters/index.js", "../../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js", "../../../node_modules/date-fns/esm/_lib/protectedTokens/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js", "../../../node_modules/date-fns/esm/locale/en-US/index.js", "../../../node_modules/date-fns/esm/_lib/defaultLocale/index.js", "../../../node_modules/date-fns/esm/format/index.js", "../../../node_modules/date-fns/esm/_lib/assign/index.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/inherits.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createSuper.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createClass.js", "../../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/date-fns/esm/parse/_lib/Setter.js", "../../../node_modules/date-fns/esm/parse/_lib/Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js", "../../../node_modules/date-fns/esm/parse/_lib/constants.js", "../../../node_modules/date-fns/esm/parse/_lib/utils.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js", "../../../node_modules/date-fns/esm/_lib/setUTCWeek/index.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js", "../../../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js", "../../../node_modules/date-fns/esm/_lib/setUTCDay/index.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js", "../../../node_modules/date-fns/esm/_lib/setUTCISODay/index.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js", "../../../node_modules/date-fns/esm/parse/_lib/parsers/index.js", "../../../node_modules/date-fns/esm/parse/index.js", "../../../node_modules/date-fns/esm/startOfHour/index.js", "../../../node_modules/date-fns/esm/startOfSecond/index.js", "../../../node_modules/date-fns/esm/parseISO/index.js", "../../../node_modules/chartkick/node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js", "../../../node_modules/chartkick/chart.js/chart.esm.js", "../../../node_modules/chart.js/dist/helpers.js", "../../../node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js", "../../../gems/collateral_design/app/javascripts/collateral_design.js", "../../../gems/collateral_design/app/javascripts/table.js", "../../../node_modules/@validide/resizable-table-columns/sources/ts/resizable-constants.ts", "../../../node_modules/@validide/resizable-table-columns/sources/ts/resizable-event-data.ts", "../../../node_modules/@validide/resizable-table-columns/sources/ts/utilities.ts", "../../../node_modules/@validide/resizable-table-columns/sources/ts/utilities-dom.ts", "../../../node_modules/@validide/resizable-table-columns/sources/ts/resizable-options.ts", "../../../node_modules/@validide/resizable-table-columns/sources/ts/resizable-table-columns.ts", "../../../gems/collateral_design/app/javascripts/table/collateralStore.js", "../../../gems/collateral_design/app/javascripts/table/swapColumns.js", "../../../gems/collateral_design/app/javascripts/table/hideableColumns.js", "../../../gems/collateral_design/app/javascripts/table/csvApp.js", "../../../gems/collateral_design/app/javascripts/ag_grid.js", "../../../gems/collateral_design/app/javascripts/ag_grid/refine.js", "../../../gems/collateral_design/app/javascripts/ag_grid/header_pin_inner.js", "../../../gems/collateral_design/app/javascripts/popoverFactory.js", "../../../gems/collateral_design/app/javascripts/tooltip.js", "../../../gems/collateral_design/app/javascripts/drawer.js", "../../../gems/collateral_design/app/javascripts/dropdown_menu.js", "../../../gems/collateral_design/app/javascripts/popover.js", "webpack://pdf.js/webpack/bootstrap", "webpack://pdf.js/webpack/runtime/define%20property%20getters", "webpack://pdf.js/webpack/runtime/hasOwnProperty%20shorthand", "webpack://pdf.js/src/shared/util.js", "webpack://pdf.js/src/display/xfa_text.js", "webpack://pdf.js/src/display/xfa_layer.js", "webpack://pdf.js/src/display/display_utils.js", "webpack://pdf.js/src/display/editor/toolbar.js", "webpack://pdf.js/src/display/editor/tools.js", "webpack://pdf.js/src/display/editor/alt_text.js", "webpack://pdf.js/src/display/editor/comment.js", "webpack://pdf.js/src/display/touch_manager.js", "webpack://pdf.js/src/display/editor/editor.js", "webpack://pdf.js/src/shared/murmurhash3.js", "webpack://pdf.js/src/display/annotation_storage.js", "webpack://pdf.js/src/display/font_loader.js", "webpack://pdf.js/src/shared/obj-bin-transform.js", "webpack://pdf.js/src/display/api_utils.js", "webpack://pdf.js/src/shared/message_handler.js", "webpack://pdf.js/src/display/canvas_factory.js", "webpack://pdf.js/src/display/cmap_reader_factory.js", "webpack://pdf.js/src/display/filter_factory.js", "webpack://pdf.js/src/display/standard_fontdata_factory.js", "webpack://pdf.js/src/display/wasm_factory.js", "webpack://pdf.js/src/display/node_utils.js", "webpack://pdf.js/src/display/canvas_dependency_tracker.js", "webpack://pdf.js/src/display/pattern_helper.js", "webpack://pdf.js/src/shared/image_utils.js", "webpack://pdf.js/src/display/canvas.js", "webpack://pdf.js/src/display/worker_options.js", "webpack://pdf.js/src/display/metadata.js", "webpack://pdf.js/src/display/optional_content_config.js", "webpack://pdf.js/src/display/transport_stream.js", "webpack://pdf.js/src/display/content_disposition.js", "webpack://pdf.js/src/display/network_utils.js", "webpack://pdf.js/src/display/fetch_stream.js", "webpack://pdf.js/src/display/network.js", "webpack://pdf.js/src/display/node_stream.js", "webpack://pdf.js/src/display/pdf_objects.js", "webpack://pdf.js/src/display/text_layer.js", "webpack://pdf.js/src/display/api.js", "webpack://pdf.js/src/display/editor/color_picker.js", "webpack://pdf.js/src/shared/scripting_utils.js", "webpack://pdf.js/src/display/svg_factory.js", "webpack://pdf.js/src/display/annotation_layer.js", "webpack://pdf.js/src/display/editor/freetext.js", "webpack://pdf.js/src/display/editor/drawers/outline.js", "webpack://pdf.js/src/display/editor/drawers/freedraw.js", "webpack://pdf.js/src/display/editor/drawers/highlight.js", "webpack://pdf.js/src/display/editor/highlight.js", "webpack://pdf.js/src/display/editor/draw.js", "webpack://pdf.js/src/display/editor/drawers/inkdraw.js", "webpack://pdf.js/src/display/editor/ink.js", "webpack://pdf.js/src/display/editor/drawers/contour.js", "webpack://pdf.js/src/display/editor/drawers/signaturedraw.js", "webpack://pdf.js/src/display/editor/signature.js", "webpack://pdf.js/src/display/editor/stamp.js", "webpack://pdf.js/src/display/editor/annotation_editor_layer.js", "webpack://pdf.js/src/display/draw_layer.js", "webpack://pdf.js/src/pdf.js", "../../../node_modules/ag-grid-community/dist/package/main.esm.mjs"],
  "sourcesContent": ["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 // eslint-disable-line\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", "'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n", "// node_modules/@jspm/core/nodelibs/browser/chunk-DtcTpLWz.js\nvar exports$k = {};\nvar _dewExec$k = false;\nfunction dew$k() {\n  if (_dewExec$k) return exports$k;\n  _dewExec$k = true;\n  exports$k = function hasSymbols() {\n    if (typeof Symbol !== \"function\" || typeof Object.getOwnPropertySymbols !== \"function\") {\n      return false;\n    }\n    if (typeof Symbol.iterator === \"symbol\") {\n      return true;\n    }\n    var obj = {};\n    var sym = /* @__PURE__ */ Symbol(\"test\");\n    var symObj = Object(sym);\n    if (typeof sym === \"string\") {\n      return false;\n    }\n    if (Object.prototype.toString.call(sym) !== \"[object Symbol]\") {\n      return false;\n    }\n    if (Object.prototype.toString.call(symObj) !== \"[object Symbol]\") {\n      return false;\n    }\n    var symVal = 42;\n    obj[sym] = symVal;\n    for (sym in obj) {\n      return false;\n    }\n    if (typeof Object.keys === \"function\" && Object.keys(obj).length !== 0) {\n      return false;\n    }\n    if (typeof Object.getOwnPropertyNames === \"function\" && Object.getOwnPropertyNames(obj).length !== 0) {\n      return false;\n    }\n    var syms = Object.getOwnPropertySymbols(obj);\n    if (syms.length !== 1 || syms[0] !== sym) {\n      return false;\n    }\n    if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {\n      return false;\n    }\n    if (typeof Object.getOwnPropertyDescriptor === \"function\") {\n      var descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n      if (descriptor.value !== symVal || descriptor.enumerable !== true) {\n        return false;\n      }\n    }\n    return true;\n  };\n  return exports$k;\n}\nvar exports$j = {};\nvar _dewExec$j = false;\nfunction dew$j() {\n  if (_dewExec$j) return exports$j;\n  _dewExec$j = true;\n  exports$j = Error;\n  return exports$j;\n}\nvar exports$i = {};\nvar _dewExec$i = false;\nfunction dew$i() {\n  if (_dewExec$i) return exports$i;\n  _dewExec$i = true;\n  exports$i = EvalError;\n  return exports$i;\n}\nvar exports$h = {};\nvar _dewExec$h = false;\nfunction dew$h() {\n  if (_dewExec$h) return exports$h;\n  _dewExec$h = true;\n  exports$h = RangeError;\n  return exports$h;\n}\nvar exports$g = {};\nvar _dewExec$g = false;\nfunction dew$g() {\n  if (_dewExec$g) return exports$g;\n  _dewExec$g = true;\n  exports$g = ReferenceError;\n  return exports$g;\n}\nvar exports$f = {};\nvar _dewExec$f = false;\nfunction dew$f() {\n  if (_dewExec$f) return exports$f;\n  _dewExec$f = true;\n  exports$f = SyntaxError;\n  return exports$f;\n}\nvar exports$e = {};\nvar _dewExec$e = false;\nfunction dew$e() {\n  if (_dewExec$e) return exports$e;\n  _dewExec$e = true;\n  exports$e = TypeError;\n  return exports$e;\n}\nvar exports$d = {};\nvar _dewExec$d = false;\nfunction dew$d() {\n  if (_dewExec$d) return exports$d;\n  _dewExec$d = true;\n  exports$d = URIError;\n  return exports$d;\n}\nvar exports$c = {};\nvar _dewExec$c = false;\nfunction dew$c() {\n  if (_dewExec$c) return exports$c;\n  _dewExec$c = true;\n  var origSymbol = typeof Symbol !== \"undefined\" && Symbol;\n  var hasSymbolSham = dew$k();\n  exports$c = function hasNativeSymbols() {\n    if (typeof origSymbol !== \"function\") {\n      return false;\n    }\n    if (typeof Symbol !== \"function\") {\n      return false;\n    }\n    if (typeof origSymbol(\"foo\") !== \"symbol\") {\n      return false;\n    }\n    if (typeof /* @__PURE__ */ Symbol(\"bar\") !== \"symbol\") {\n      return false;\n    }\n    return hasSymbolSham();\n  };\n  return exports$c;\n}\nvar exports$b = {};\nvar _dewExec$b = false;\nfunction dew$b() {\n  if (_dewExec$b) return exports$b;\n  _dewExec$b = true;\n  var test = {\n    __proto__: null,\n    foo: {}\n  };\n  var $Object = Object;\n  exports$b = function hasProto() {\n    return {\n      __proto__: test\n    }.foo === test.foo && !(test instanceof $Object);\n  };\n  return exports$b;\n}\nvar exports$a = {};\nvar _dewExec$a = false;\nfunction dew$a() {\n  if (_dewExec$a) return exports$a;\n  _dewExec$a = true;\n  var ERROR_MESSAGE = \"Function.prototype.bind called on incompatible \";\n  var toStr = Object.prototype.toString;\n  var max = Math.max;\n  var funcType = \"[object Function]\";\n  var concatty = function concatty2(a, b) {\n    var arr = [];\n    for (var i = 0; i < a.length; i += 1) {\n      arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n      arr[j + a.length] = b[j];\n    }\n    return arr;\n  };\n  var slicy = function slicy2(arrLike, offset) {\n    var arr = [];\n    for (var i = offset, j = 0; i < arrLike.length; i += 1, j += 1) {\n      arr[j] = arrLike[i];\n    }\n    return arr;\n  };\n  var joiny = function(arr, joiner) {\n    var str = \"\";\n    for (var i = 0; i < arr.length; i += 1) {\n      str += arr[i];\n      if (i + 1 < arr.length) {\n        str += joiner;\n      }\n    }\n    return str;\n  };\n  exports$a = function bind(that) {\n    var target = this;\n    if (typeof target !== \"function\" || toStr.apply(target) !== funcType) {\n      throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n    var bound;\n    var binder = function() {\n      if (this instanceof bound) {\n        var result = target.apply(this, concatty(args, arguments));\n        if (Object(result) === result) {\n          return result;\n        }\n        return this;\n      }\n      return target.apply(that, concatty(args, arguments));\n    };\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n      boundArgs[i] = \"$\" + i;\n    }\n    bound = Function(\"binder\", \"return function (\" + joiny(boundArgs, \",\") + \"){ return binder.apply(this,arguments); }\")(binder);\n    if (target.prototype) {\n      var Empty = function Empty2() {\n      };\n      Empty.prototype = target.prototype;\n      bound.prototype = new Empty();\n      Empty.prototype = null;\n    }\n    return bound;\n  };\n  return exports$a;\n}\nvar exports$9 = {};\nvar _dewExec$9 = false;\nfunction dew$9() {\n  if (_dewExec$9) return exports$9;\n  _dewExec$9 = true;\n  var implementation = dew$a();\n  exports$9 = Function.prototype.bind || implementation;\n  return exports$9;\n}\nvar exports$8 = {};\nvar _dewExec$8 = false;\nfunction dew$8() {\n  if (_dewExec$8) return exports$8;\n  _dewExec$8 = true;\n  var call = Function.prototype.call;\n  var $hasOwn = Object.prototype.hasOwnProperty;\n  var bind = dew$9();\n  exports$8 = bind.call(call, $hasOwn);\n  return exports$8;\n}\nvar exports$7 = {};\nvar _dewExec$7 = false;\nfunction dew$7() {\n  if (_dewExec$7) return exports$7;\n  _dewExec$7 = true;\n  var undefined$1;\n  var $Error = dew$j();\n  var $EvalError = dew$i();\n  var $RangeError = dew$h();\n  var $ReferenceError = dew$g();\n  var $SyntaxError = dew$f();\n  var $TypeError = dew$e();\n  var $URIError = dew$d();\n  var $Function = Function;\n  var getEvalledConstructor = function(expressionSyntax) {\n    try {\n      return $Function('\"use strict\"; return (' + expressionSyntax + \").constructor;\")();\n    } catch (e) {\n    }\n  };\n  var $gOPD = Object.getOwnPropertyDescriptor;\n  if ($gOPD) {\n    try {\n      $gOPD({}, \"\");\n    } catch (e) {\n      $gOPD = null;\n    }\n  }\n  var throwTypeError = function() {\n    throw new $TypeError();\n  };\n  var ThrowTypeError = $gOPD ? (function() {\n    try {\n      arguments.callee;\n      return throwTypeError;\n    } catch (calleeThrows) {\n      try {\n        return $gOPD(arguments, \"callee\").get;\n      } catch (gOPDthrows) {\n        return throwTypeError;\n      }\n    }\n  })() : throwTypeError;\n  var hasSymbols = dew$c()();\n  var hasProto = dew$b()();\n  var getProto = Object.getPrototypeOf || (hasProto ? function(x) {\n    return x.__proto__;\n  } : null);\n  var needsEval = {};\n  var TypedArray = typeof Uint8Array === \"undefined\" || !getProto ? undefined$1 : getProto(Uint8Array);\n  var INTRINSICS = {\n    __proto__: null,\n    \"%AggregateError%\": typeof AggregateError === \"undefined\" ? undefined$1 : AggregateError,\n    \"%Array%\": Array,\n    \"%ArrayBuffer%\": typeof ArrayBuffer === \"undefined\" ? undefined$1 : ArrayBuffer,\n    \"%ArrayIteratorPrototype%\": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined$1,\n    \"%AsyncFromSyncIteratorPrototype%\": undefined$1,\n    \"%AsyncFunction%\": needsEval,\n    \"%AsyncGenerator%\": needsEval,\n    \"%AsyncGeneratorFunction%\": needsEval,\n    \"%AsyncIteratorPrototype%\": needsEval,\n    \"%Atomics%\": typeof Atomics === \"undefined\" ? undefined$1 : Atomics,\n    \"%BigInt%\": typeof BigInt === \"undefined\" ? undefined$1 : BigInt,\n    \"%BigInt64Array%\": typeof BigInt64Array === \"undefined\" ? undefined$1 : BigInt64Array,\n    \"%BigUint64Array%\": typeof BigUint64Array === \"undefined\" ? undefined$1 : BigUint64Array,\n    \"%Boolean%\": Boolean,\n    \"%DataView%\": typeof DataView === \"undefined\" ? undefined$1 : DataView,\n    \"%Date%\": Date,\n    \"%decodeURI%\": decodeURI,\n    \"%decodeURIComponent%\": decodeURIComponent,\n    \"%encodeURI%\": encodeURI,\n    \"%encodeURIComponent%\": encodeURIComponent,\n    \"%Error%\": $Error,\n    \"%eval%\": eval,\n    // eslint-disable-line no-eval\n    \"%EvalError%\": $EvalError,\n    \"%Float32Array%\": typeof Float32Array === \"undefined\" ? undefined$1 : Float32Array,\n    \"%Float64Array%\": typeof Float64Array === \"undefined\" ? undefined$1 : Float64Array,\n    \"%FinalizationRegistry%\": typeof FinalizationRegistry === \"undefined\" ? undefined$1 : FinalizationRegistry,\n    \"%Function%\": $Function,\n    \"%GeneratorFunction%\": needsEval,\n    \"%Int8Array%\": typeof Int8Array === \"undefined\" ? undefined$1 : Int8Array,\n    \"%Int16Array%\": typeof Int16Array === \"undefined\" ? undefined$1 : Int16Array,\n    \"%Int32Array%\": typeof Int32Array === \"undefined\" ? undefined$1 : Int32Array,\n    \"%isFinite%\": isFinite,\n    \"%isNaN%\": isNaN,\n    \"%IteratorPrototype%\": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined$1,\n    \"%JSON%\": typeof JSON === \"object\" ? JSON : undefined$1,\n    \"%Map%\": typeof Map === \"undefined\" ? undefined$1 : Map,\n    \"%MapIteratorPrototype%\": typeof Map === \"undefined\" || !hasSymbols || !getProto ? undefined$1 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()),\n    \"%Math%\": Math,\n    \"%Number%\": Number,\n    \"%Object%\": Object,\n    \"%parseFloat%\": parseFloat,\n    \"%parseInt%\": parseInt,\n    \"%Promise%\": typeof Promise === \"undefined\" ? undefined$1 : Promise,\n    \"%Proxy%\": typeof Proxy === \"undefined\" ? undefined$1 : Proxy,\n    \"%RangeError%\": $RangeError,\n    \"%ReferenceError%\": $ReferenceError,\n    \"%Reflect%\": typeof Reflect === \"undefined\" ? undefined$1 : Reflect,\n    \"%RegExp%\": RegExp,\n    \"%Set%\": typeof Set === \"undefined\" ? undefined$1 : Set,\n    \"%SetIteratorPrototype%\": typeof Set === \"undefined\" || !hasSymbols || !getProto ? undefined$1 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()),\n    \"%SharedArrayBuffer%\": typeof SharedArrayBuffer === \"undefined\" ? undefined$1 : SharedArrayBuffer,\n    \"%String%\": String,\n    \"%StringIteratorPrototype%\": hasSymbols && getProto ? getProto(\"\"[Symbol.iterator]()) : undefined$1,\n    \"%Symbol%\": hasSymbols ? Symbol : undefined$1,\n    \"%SyntaxError%\": $SyntaxError,\n    \"%ThrowTypeError%\": ThrowTypeError,\n    \"%TypedArray%\": TypedArray,\n    \"%TypeError%\": $TypeError,\n    \"%Uint8Array%\": typeof Uint8Array === \"undefined\" ? undefined$1 : Uint8Array,\n    \"%Uint8ClampedArray%\": typeof Uint8ClampedArray === \"undefined\" ? undefined$1 : Uint8ClampedArray,\n    \"%Uint16Array%\": typeof Uint16Array === \"undefined\" ? undefined$1 : Uint16Array,\n    \"%Uint32Array%\": typeof Uint32Array === \"undefined\" ? undefined$1 : Uint32Array,\n    \"%URIError%\": $URIError,\n    \"%WeakMap%\": typeof WeakMap === \"undefined\" ? undefined$1 : WeakMap,\n    \"%WeakRef%\": typeof WeakRef === \"undefined\" ? undefined$1 : WeakRef,\n    \"%WeakSet%\": typeof WeakSet === \"undefined\" ? undefined$1 : WeakSet\n  };\n  if (getProto) {\n    try {\n      null.error;\n    } catch (e) {\n      var errorProto = getProto(getProto(e));\n      INTRINSICS[\"%Error.prototype%\"] = errorProto;\n    }\n  }\n  var doEval = function doEval2(name) {\n    var value;\n    if (name === \"%AsyncFunction%\") {\n      value = getEvalledConstructor(\"async function () {}\");\n    } else if (name === \"%GeneratorFunction%\") {\n      value = getEvalledConstructor(\"function* () {}\");\n    } else if (name === \"%AsyncGeneratorFunction%\") {\n      value = getEvalledConstructor(\"async function* () {}\");\n    } else if (name === \"%AsyncGenerator%\") {\n      var fn = doEval2(\"%AsyncGeneratorFunction%\");\n      if (fn) {\n        value = fn.prototype;\n      }\n    } else if (name === \"%AsyncIteratorPrototype%\") {\n      var gen = doEval2(\"%AsyncGenerator%\");\n      if (gen && getProto) {\n        value = getProto(gen.prototype);\n      }\n    }\n    INTRINSICS[name] = value;\n    return value;\n  };\n  var LEGACY_ALIASES = {\n    __proto__: null,\n    \"%ArrayBufferPrototype%\": [\"ArrayBuffer\", \"prototype\"],\n    \"%ArrayPrototype%\": [\"Array\", \"prototype\"],\n    \"%ArrayProto_entries%\": [\"Array\", \"prototype\", \"entries\"],\n    \"%ArrayProto_forEach%\": [\"Array\", \"prototype\", \"forEach\"],\n    \"%ArrayProto_keys%\": [\"Array\", \"prototype\", \"keys\"],\n    \"%ArrayProto_values%\": [\"Array\", \"prototype\", \"values\"],\n    \"%AsyncFunctionPrototype%\": [\"AsyncFunction\", \"prototype\"],\n    \"%AsyncGenerator%\": [\"AsyncGeneratorFunction\", \"prototype\"],\n    \"%AsyncGeneratorPrototype%\": [\"AsyncGeneratorFunction\", \"prototype\", \"prototype\"],\n    \"%BooleanPrototype%\": [\"Boolean\", \"prototype\"],\n    \"%DataViewPrototype%\": [\"DataView\", \"prototype\"],\n    \"%DatePrototype%\": [\"Date\", \"prototype\"],\n    \"%ErrorPrototype%\": [\"Error\", \"prototype\"],\n    \"%EvalErrorPrototype%\": [\"EvalError\", \"prototype\"],\n    \"%Float32ArrayPrototype%\": [\"Float32Array\", \"prototype\"],\n    \"%Float64ArrayPrototype%\": [\"Float64Array\", \"prototype\"],\n    \"%FunctionPrototype%\": [\"Function\", \"prototype\"],\n    \"%Generator%\": [\"GeneratorFunction\", \"prototype\"],\n    \"%GeneratorPrototype%\": [\"GeneratorFunction\", \"prototype\", \"prototype\"],\n    \"%Int8ArrayPrototype%\": [\"Int8Array\", \"prototype\"],\n    \"%Int16ArrayPrototype%\": [\"Int16Array\", \"prototype\"],\n    \"%Int32ArrayPrototype%\": [\"Int32Array\", \"prototype\"],\n    \"%JSONParse%\": [\"JSON\", \"parse\"],\n    \"%JSONStringify%\": [\"JSON\", \"stringify\"],\n    \"%MapPrototype%\": [\"Map\", \"prototype\"],\n    \"%NumberPrototype%\": [\"Number\", \"prototype\"],\n    \"%ObjectPrototype%\": [\"Object\", \"prototype\"],\n    \"%ObjProto_toString%\": [\"Object\", \"prototype\", \"toString\"],\n    \"%ObjProto_valueOf%\": [\"Object\", \"prototype\", \"valueOf\"],\n    \"%PromisePrototype%\": [\"Promise\", \"prototype\"],\n    \"%PromiseProto_then%\": [\"Promise\", \"prototype\", \"then\"],\n    \"%Promise_all%\": [\"Promise\", \"all\"],\n    \"%Promise_reject%\": [\"Promise\", \"reject\"],\n    \"%Promise_resolve%\": [\"Promise\", \"resolve\"],\n    \"%RangeErrorPrototype%\": [\"RangeError\", \"prototype\"],\n    \"%ReferenceErrorPrototype%\": [\"ReferenceError\", \"prototype\"],\n    \"%RegExpPrototype%\": [\"RegExp\", \"prototype\"],\n    \"%SetPrototype%\": [\"Set\", \"prototype\"],\n    \"%SharedArrayBufferPrototype%\": [\"SharedArrayBuffer\", \"prototype\"],\n    \"%StringPrototype%\": [\"String\", \"prototype\"],\n    \"%SymbolPrototype%\": [\"Symbol\", \"prototype\"],\n    \"%SyntaxErrorPrototype%\": [\"SyntaxError\", \"prototype\"],\n    \"%TypedArrayPrototype%\": [\"TypedArray\", \"prototype\"],\n    \"%TypeErrorPrototype%\": [\"TypeError\", \"prototype\"],\n    \"%Uint8ArrayPrototype%\": [\"Uint8Array\", \"prototype\"],\n    \"%Uint8ClampedArrayPrototype%\": [\"Uint8ClampedArray\", \"prototype\"],\n    \"%Uint16ArrayPrototype%\": [\"Uint16Array\", \"prototype\"],\n    \"%Uint32ArrayPrototype%\": [\"Uint32Array\", \"prototype\"],\n    \"%URIErrorPrototype%\": [\"URIError\", \"prototype\"],\n    \"%WeakMapPrototype%\": [\"WeakMap\", \"prototype\"],\n    \"%WeakSetPrototype%\": [\"WeakSet\", \"prototype\"]\n  };\n  var bind = dew$9();\n  var hasOwn = dew$8();\n  var $concat = bind.call(Function.call, Array.prototype.concat);\n  var $spliceApply = bind.call(Function.apply, Array.prototype.splice);\n  var $replace = bind.call(Function.call, String.prototype.replace);\n  var $strSlice = bind.call(Function.call, String.prototype.slice);\n  var $exec = bind.call(Function.call, RegExp.prototype.exec);\n  var rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\n  var reEscapeChar = /\\\\(\\\\)?/g;\n  var stringToPath = function stringToPath2(string) {\n    var first = $strSlice(string, 0, 1);\n    var last = $strSlice(string, -1);\n    if (first === \"%\" && last !== \"%\") {\n      throw new $SyntaxError(\"invalid intrinsic syntax, expected closing `%`\");\n    } else if (last === \"%\" && first !== \"%\") {\n      throw new $SyntaxError(\"invalid intrinsic syntax, expected opening `%`\");\n    }\n    var result = [];\n    $replace(string, rePropName, function(match, number, quote, subString) {\n      result[result.length] = quote ? $replace(subString, reEscapeChar, \"$1\") : number || match;\n    });\n    return result;\n  };\n  var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) {\n    var intrinsicName = name;\n    var alias;\n    if (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n      alias = LEGACY_ALIASES[intrinsicName];\n      intrinsicName = \"%\" + alias[0] + \"%\";\n    }\n    if (hasOwn(INTRINSICS, intrinsicName)) {\n      var value = INTRINSICS[intrinsicName];\n      if (value === needsEval) {\n        value = doEval(intrinsicName);\n      }\n      if (typeof value === \"undefined\" && !allowMissing) {\n        throw new $TypeError(\"intrinsic \" + name + \" exists, but is not available. Please file an issue!\");\n      }\n      return {\n        alias,\n        name: intrinsicName,\n        value\n      };\n    }\n    throw new $SyntaxError(\"intrinsic \" + name + \" does not exist!\");\n  };\n  exports$7 = function GetIntrinsic(name, allowMissing) {\n    if (typeof name !== \"string\" || name.length === 0) {\n      throw new $TypeError(\"intrinsic name must be a non-empty string\");\n    }\n    if (arguments.length > 1 && typeof allowMissing !== \"boolean\") {\n      throw new $TypeError('\"allowMissing\" argument must be a boolean');\n    }\n    if ($exec(/^%?[^%]*%?$/, name) === null) {\n      throw new $SyntaxError(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\");\n    }\n    var parts = stringToPath(name);\n    var intrinsicBaseName = parts.length > 0 ? parts[0] : \"\";\n    var intrinsic = getBaseIntrinsic(\"%\" + intrinsicBaseName + \"%\", allowMissing);\n    var intrinsicRealName = intrinsic.name;\n    var value = intrinsic.value;\n    var skipFurtherCaching = false;\n    var alias = intrinsic.alias;\n    if (alias) {\n      intrinsicBaseName = alias[0];\n      $spliceApply(parts, $concat([0, 1], alias));\n    }\n    for (var i = 1, isOwn = true; i < parts.length; i += 1) {\n      var part = parts[i];\n      var first = $strSlice(part, 0, 1);\n      var last = $strSlice(part, -1);\n      if ((first === '\"' || first === \"'\" || first === \"`\" || last === '\"' || last === \"'\" || last === \"`\") && first !== last) {\n        throw new $SyntaxError(\"property names with quotes must have matching quotes\");\n      }\n      if (part === \"constructor\" || !isOwn) {\n        skipFurtherCaching = true;\n      }\n      intrinsicBaseName += \".\" + part;\n      intrinsicRealName = \"%\" + intrinsicBaseName + \"%\";\n      if (hasOwn(INTRINSICS, intrinsicRealName)) {\n        value = INTRINSICS[intrinsicRealName];\n      } else if (value != null) {\n        if (!(part in value)) {\n          if (!allowMissing) {\n            throw new $TypeError(\"base intrinsic for \" + name + \" exists, but the property is not available.\");\n          }\n          return void undefined$1;\n        }\n        if ($gOPD && i + 1 >= parts.length) {\n          var desc = $gOPD(value, part);\n          isOwn = !!desc;\n          if (isOwn && \"get\" in desc && !(\"originalValue\" in desc.get)) {\n            value = desc.get;\n          } else {\n            value = value[part];\n          }\n        } else {\n          isOwn = hasOwn(value, part);\n          value = value[part];\n        }\n        if (isOwn && !skipFurtherCaching) {\n          INTRINSICS[intrinsicRealName] = value;\n        }\n      }\n    }\n    return value;\n  };\n  return exports$7;\n}\nvar exports$6 = {};\nvar _dewExec$6 = false;\nfunction dew$6() {\n  if (_dewExec$6) return exports$6;\n  _dewExec$6 = true;\n  var GetIntrinsic = dew$7();\n  var $defineProperty = GetIntrinsic(\"%Object.defineProperty%\", true) || false;\n  if ($defineProperty) {\n    try {\n      $defineProperty({}, \"a\", {\n        value: 1\n      });\n    } catch (e) {\n      $defineProperty = false;\n    }\n  }\n  exports$6 = $defineProperty;\n  return exports$6;\n}\nvar exports$5 = {};\nvar _dewExec$5 = false;\nfunction dew$5() {\n  if (_dewExec$5) return exports$5;\n  _dewExec$5 = true;\n  var GetIntrinsic = dew$7();\n  var $gOPD = GetIntrinsic(\"%Object.getOwnPropertyDescriptor%\", true);\n  if ($gOPD) {\n    try {\n      $gOPD([], \"length\");\n    } catch (e) {\n      $gOPD = null;\n    }\n  }\n  exports$5 = $gOPD;\n  return exports$5;\n}\nvar exports$4 = {};\nvar _dewExec$4 = false;\nfunction dew$4() {\n  if (_dewExec$4) return exports$4;\n  _dewExec$4 = true;\n  var $defineProperty = dew$6();\n  var $SyntaxError = dew$f();\n  var $TypeError = dew$e();\n  var gopd = dew$5();\n  exports$4 = function defineDataProperty(obj, property, value) {\n    if (!obj || typeof obj !== \"object\" && typeof obj !== \"function\") {\n      throw new $TypeError(\"`obj` must be an object or a function`\");\n    }\n    if (typeof property !== \"string\" && typeof property !== \"symbol\") {\n      throw new $TypeError(\"`property` must be a string or a symbol`\");\n    }\n    if (arguments.length > 3 && typeof arguments[3] !== \"boolean\" && arguments[3] !== null) {\n      throw new $TypeError(\"`nonEnumerable`, if provided, must be a boolean or null\");\n    }\n    if (arguments.length > 4 && typeof arguments[4] !== \"boolean\" && arguments[4] !== null) {\n      throw new $TypeError(\"`nonWritable`, if provided, must be a boolean or null\");\n    }\n    if (arguments.length > 5 && typeof arguments[5] !== \"boolean\" && arguments[5] !== null) {\n      throw new $TypeError(\"`nonConfigurable`, if provided, must be a boolean or null\");\n    }\n    if (arguments.length > 6 && typeof arguments[6] !== \"boolean\") {\n      throw new $TypeError(\"`loose`, if provided, must be a boolean\");\n    }\n    var nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n    var nonWritable = arguments.length > 4 ? arguments[4] : null;\n    var nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n    var loose = arguments.length > 6 ? arguments[6] : false;\n    var desc = !!gopd && gopd(obj, property);\n    if ($defineProperty) {\n      $defineProperty(obj, property, {\n        configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n        enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n        value,\n        writable: nonWritable === null && desc ? desc.writable : !nonWritable\n      });\n    } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) {\n      obj[property] = value;\n    } else {\n      throw new $SyntaxError(\"This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.\");\n    }\n  };\n  return exports$4;\n}\nvar exports$3 = {};\nvar _dewExec$3 = false;\nfunction dew$3() {\n  if (_dewExec$3) return exports$3;\n  _dewExec$3 = true;\n  var $defineProperty = dew$6();\n  var hasPropertyDescriptors = function hasPropertyDescriptors2() {\n    return !!$defineProperty;\n  };\n  hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n    if (!$defineProperty) {\n      return null;\n    }\n    try {\n      return $defineProperty([], \"length\", {\n        value: 1\n      }).length !== 1;\n    } catch (e) {\n      return true;\n    }\n  };\n  exports$3 = hasPropertyDescriptors;\n  return exports$3;\n}\nvar exports$2 = {};\nvar _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  var GetIntrinsic = dew$7();\n  var define = dew$4();\n  var hasDescriptors = dew$3()();\n  var gOPD = dew$5();\n  var $TypeError = dew$e();\n  var $floor = GetIntrinsic(\"%Math.floor%\");\n  exports$2 = function setFunctionLength(fn, length) {\n    if (typeof fn !== \"function\") {\n      throw new $TypeError(\"`fn` is not a function\");\n    }\n    if (typeof length !== \"number\" || length < 0 || length > 4294967295 || $floor(length) !== length) {\n      throw new $TypeError(\"`length` must be a positive 32-bit integer\");\n    }\n    var loose = arguments.length > 2 && !!arguments[2];\n    var functionLengthIsConfigurable = true;\n    var functionLengthIsWritable = true;\n    if (\"length\" in fn && gOPD) {\n      var desc = gOPD(fn, \"length\");\n      if (desc && !desc.configurable) {\n        functionLengthIsConfigurable = false;\n      }\n      if (desc && !desc.writable) {\n        functionLengthIsWritable = false;\n      }\n    }\n    if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n      if (hasDescriptors) {\n        define(\n          /** @type {Parameters<define>[0]} */\n          fn,\n          \"length\",\n          length,\n          true,\n          true\n        );\n      } else {\n        define(\n          /** @type {Parameters<define>[0]} */\n          fn,\n          \"length\",\n          length\n        );\n      }\n    }\n    return fn;\n  };\n  return exports$2;\n}\nvar exports$1 = {};\nvar _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  var bind = dew$9();\n  var GetIntrinsic = dew$7();\n  var setFunctionLength = dew$2();\n  var $TypeError = dew$e();\n  var $apply = GetIntrinsic(\"%Function.prototype.apply%\");\n  var $call = GetIntrinsic(\"%Function.prototype.call%\");\n  var $reflectApply = GetIntrinsic(\"%Reflect.apply%\", true) || bind.call($call, $apply);\n  var $defineProperty = dew$6();\n  var $max = GetIntrinsic(\"%Math.max%\");\n  exports$1 = function callBind(originalFunction) {\n    if (typeof originalFunction !== \"function\") {\n      throw new $TypeError(\"a function is required\");\n    }\n    var func = $reflectApply(bind, $call, arguments);\n    return setFunctionLength(func, 1 + $max(0, originalFunction.length - (arguments.length - 1)), true);\n  };\n  var applyBind = function applyBind2() {\n    return $reflectApply(bind, $apply, arguments);\n  };\n  if ($defineProperty) {\n    $defineProperty(exports$1, \"apply\", {\n      value: applyBind\n    });\n  } else {\n    exports$1.apply = applyBind;\n  }\n  return exports$1;\n}\nvar exports = {};\nvar _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  var GetIntrinsic = dew$7();\n  var callBind = dew$1();\n  var $indexOf = callBind(GetIntrinsic(\"String.prototype.indexOf\"));\n  exports = function callBoundIntrinsic(name, allowMissing) {\n    var intrinsic = GetIntrinsic(name, !!allowMissing);\n    if (typeof intrinsic === \"function\" && $indexOf(name, \".prototype.\") > -1) {\n      return callBind(intrinsic);\n    }\n    return intrinsic;\n  };\n  return exports;\n}\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-CkFCi-G1.js\nvar exports2 = {};\nvar _dewExec2 = false;\nfunction dew2() {\n  if (_dewExec2) return exports2;\n  _dewExec2 = true;\n  if (typeof Object.create === \"function\") {\n    exports2 = function inherits2(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    exports2 = function inherits2(ctor, superCtor) {\n      if (superCtor) {\n        ctor.super_ = superCtor;\n        var TempCtor = function() {\n        };\n        TempCtor.prototype = superCtor.prototype;\n        ctor.prototype = new TempCtor();\n        ctor.prototype.constructor = ctor;\n      }\n    };\n  }\n  return exports2;\n}\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-DEMDiNwt.js\nfunction unimplemented(name) {\n  throw new Error(\"Node.js process \" + name + \" is not supported by JSPM core outside of Node.js\");\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue)\n    return;\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}\nfunction drainQueue() {\n  if (draining)\n    return;\n  var timeout = setTimeout(cleanUpNextTick, 0);\n  draining = true;\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    queueIndex = -1;\n    len = queue.length;\n  }\n  currentQueue = null;\n  draining = false;\n  clearTimeout(timeout);\n}\nfunction nextTick(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  queue.push(new Item(fun, args));\n  if (queue.length === 1 && !draining)\n    setTimeout(drainQueue, 0);\n}\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};\nvar title = \"browser\";\nvar arch = \"x64\";\nvar platform = \"browser\";\nvar env = {\n  PATH: \"/usr/bin\",\n  LANG: navigator.language + \".UTF-8\",\n  PWD: \"/\",\n  HOME: \"/home\",\n  TMP: \"/tmp\"\n};\nvar argv = [\"/usr/bin/node\"];\nvar execArgv = [];\nvar version = \"v16.8.0\";\nvar versions = {};\nvar emitWarning = function(message, type) {\n  console.warn((type ? type + \": \" : \"\") + message);\n};\nvar binding = function(name) {\n  unimplemented(\"binding\");\n};\nvar umask = function(mask) {\n  return 0;\n};\nvar cwd = function() {\n  return \"/\";\n};\nvar chdir = function(dir) {\n};\nvar release = {\n  name: \"node\",\n  sourceUrl: \"\",\n  headersUrl: \"\",\n  libUrl: \"\"\n};\nfunction noop() {\n}\nvar _rawDebug = noop;\nvar moduleLoadList = [];\nfunction _linkedBinding(name) {\n  unimplemented(\"_linkedBinding\");\n}\nvar domain = {};\nvar _exiting = false;\nvar config = {};\nfunction dlopen(name) {\n  unimplemented(\"dlopen\");\n}\nfunction _getActiveRequests() {\n  return [];\n}\nfunction _getActiveHandles() {\n  return [];\n}\nvar reallyExit = noop;\nvar _kill = noop;\nvar cpuUsage = function() {\n  return {};\n};\nvar resourceUsage = cpuUsage;\nvar memoryUsage = cpuUsage;\nvar kill = noop;\nvar exit = noop;\nvar openStdin = noop;\nvar allowedNodeEnvironmentFlags = {};\nfunction assert(condition, message) {\n  if (!condition) throw new Error(message || \"assertion error\");\n}\nvar features = {\n  inspector: false,\n  debug: false,\n  uv: false,\n  ipv6: false,\n  tls_alpn: false,\n  tls_sni: false,\n  tls_ocsp: false,\n  tls: false,\n  cached_builtins: true\n};\nvar _fatalExceptions = noop;\nvar setUncaughtExceptionCaptureCallback = noop;\nfunction hasUncaughtExceptionCaptureCallback() {\n  return false;\n}\nvar _tickCallback = noop;\nvar _debugProcess = noop;\nvar _debugEnd = noop;\nvar _startProfilerIdleNotifier = noop;\nvar _stopProfilerIdleNotifier = noop;\nvar stdout = void 0;\nvar stderr = void 0;\nvar stdin = void 0;\nvar abort = noop;\nvar pid = 2;\nvar ppid = 1;\nvar execPath = \"/bin/usr/node\";\nvar debugPort = 9229;\nvar argv0 = \"node\";\nvar _preload_modules = [];\nvar setSourceMapsEnabled = noop;\nvar _performance = {\n  now: typeof performance !== \"undefined\" ? performance.now.bind(performance) : void 0,\n  timing: typeof performance !== \"undefined\" ? performance.timing : void 0\n};\nif (_performance.now === void 0) {\n  nowOffset = Date.now();\n  if (_performance.timing && _performance.timing.navigationStart) {\n    nowOffset = _performance.timing.navigationStart;\n  }\n  _performance.now = () => Date.now() - nowOffset;\n}\nvar nowOffset;\nfunction uptime() {\n  return _performance.now() / 1e3;\n}\nvar nanoPerSec = 1e9;\nfunction hrtime(previousTimestamp) {\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\n  var clocktime = _performance.now() * 1e-3;\n  var seconds = Math.floor(clocktime) + baseNow;\n  var nanoseconds = Math.floor(clocktime % 1 * 1e9);\n  if (previousTimestamp) {\n    seconds = seconds - previousTimestamp[0];\n    nanoseconds = nanoseconds - previousTimestamp[1];\n    if (nanoseconds < 0) {\n      seconds--;\n      nanoseconds += nanoPerSec;\n    }\n  }\n  return [seconds, nanoseconds];\n}\nhrtime.bigint = function(time) {\n  var diff = hrtime(time);\n  if (typeof BigInt === \"undefined\") {\n    return diff[0] * nanoPerSec + diff[1];\n  }\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\n};\nvar _maxListeners = 10;\nvar _events = {};\nvar _eventsCount = 0;\nfunction on() {\n  return process;\n}\nvar addListener = on;\nvar once = on;\nvar off = on;\nvar removeListener = on;\nvar removeAllListeners = on;\nvar emit = noop;\nvar prependListener = on;\nvar prependOnceListener = on;\nfunction listeners(name) {\n  return [];\n}\nvar process = {\n  version,\n  versions,\n  arch,\n  platform,\n  release,\n  _rawDebug,\n  moduleLoadList,\n  binding,\n  _linkedBinding,\n  _events,\n  _eventsCount,\n  _maxListeners,\n  on,\n  addListener,\n  once,\n  off,\n  removeListener,\n  removeAllListeners,\n  emit,\n  prependListener,\n  prependOnceListener,\n  listeners,\n  domain,\n  _exiting,\n  config,\n  dlopen,\n  uptime,\n  _getActiveRequests,\n  _getActiveHandles,\n  reallyExit,\n  _kill,\n  cpuUsage,\n  resourceUsage,\n  memoryUsage,\n  kill,\n  exit,\n  openStdin,\n  allowedNodeEnvironmentFlags,\n  assert,\n  features,\n  _fatalExceptions,\n  setUncaughtExceptionCaptureCallback,\n  hasUncaughtExceptionCaptureCallback,\n  emitWarning,\n  nextTick,\n  _tickCallback,\n  _debugProcess,\n  _debugEnd,\n  _startProfilerIdleNotifier,\n  _stopProfilerIdleNotifier,\n  stdout,\n  stdin,\n  stderr,\n  abort,\n  umask,\n  chdir,\n  cwd,\n  env,\n  title,\n  argv,\n  execArgv,\n  pid,\n  ppid,\n  execPath,\n  debugPort,\n  hrtime,\n  argv0,\n  _preload_modules,\n  setSourceMapsEnabled\n};\n\n// node_modules/@jspm/core/nodelibs/browser/util.js\nvar exports$c2 = {};\nvar _dewExec$b2 = false;\nfunction dew$b2() {\n  if (_dewExec$b2) return exports$c2;\n  _dewExec$b2 = true;\n  var hasSymbols = dew$k();\n  exports$c2 = function hasToStringTagShams() {\n    return hasSymbols() && !!Symbol.toStringTag;\n  };\n  return exports$c2;\n}\nvar exports$b2 = {};\nvar _dewExec$a2 = false;\nfunction dew$a2() {\n  if (_dewExec$a2) return exports$b2;\n  _dewExec$a2 = true;\n  var hasToStringTag = dew$b2()();\n  var callBound = dew();\n  var $toString = callBound(\"Object.prototype.toString\");\n  var isStandardArguments = function isArguments(value) {\n    if (hasToStringTag && value && typeof value === \"object\" && Symbol.toStringTag in value) {\n      return false;\n    }\n    return $toString(value) === \"[object Arguments]\";\n  };\n  var isLegacyArguments = function isArguments(value) {\n    if (isStandardArguments(value)) {\n      return true;\n    }\n    return value !== null && typeof value === \"object\" && typeof value.length === \"number\" && value.length >= 0 && $toString(value) !== \"[object Array]\" && $toString(value.callee) === \"[object Function]\";\n  };\n  var supportsStandardArguments = (function() {\n    return isStandardArguments(arguments);\n  })();\n  isStandardArguments.isLegacyArguments = isLegacyArguments;\n  exports$b2 = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n  return exports$b2;\n}\nvar exports$a2 = {};\nvar _dewExec$92 = false;\nfunction dew$92() {\n  if (_dewExec$92) return exports$a2;\n  _dewExec$92 = true;\n  var toStr = Object.prototype.toString;\n  var fnToStr = Function.prototype.toString;\n  var isFnRegex = /^\\s*(?:function)?\\*/;\n  var hasToStringTag = dew$b2()();\n  var getProto = Object.getPrototypeOf;\n  var getGeneratorFunc = function() {\n    if (!hasToStringTag) {\n      return false;\n    }\n    try {\n      return Function(\"return function*() {}\")();\n    } catch (e) {\n    }\n  };\n  var GeneratorFunction;\n  exports$a2 = function isGeneratorFunction(fn) {\n    if (typeof fn !== \"function\") {\n      return false;\n    }\n    if (isFnRegex.test(fnToStr.call(fn))) {\n      return true;\n    }\n    if (!hasToStringTag) {\n      var str = toStr.call(fn);\n      return str === \"[object GeneratorFunction]\";\n    }\n    if (!getProto) {\n      return false;\n    }\n    if (typeof GeneratorFunction === \"undefined\") {\n      var generatorFunc = getGeneratorFunc();\n      GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n    }\n    return getProto(fn) === GeneratorFunction;\n  };\n  return exports$a2;\n}\nvar exports$92 = {};\nvar _dewExec$82 = false;\nfunction dew$82() {\n  if (_dewExec$82) return exports$92;\n  _dewExec$82 = true;\n  var fnToStr = Function.prototype.toString;\n  var reflectApply = typeof Reflect === \"object\" && Reflect !== null && Reflect.apply;\n  var badArrayLike;\n  var isCallableMarker;\n  if (typeof reflectApply === \"function\" && typeof Object.defineProperty === \"function\") {\n    try {\n      badArrayLike = Object.defineProperty({}, \"length\", {\n        get: function() {\n          throw isCallableMarker;\n        }\n      });\n      isCallableMarker = {};\n      reflectApply(function() {\n        throw 42;\n      }, null, badArrayLike);\n    } catch (_) {\n      if (_ !== isCallableMarker) {\n        reflectApply = null;\n      }\n    }\n  } else {\n    reflectApply = null;\n  }\n  var constructorRegex = /^\\s*class\\b/;\n  var isES6ClassFn = function isES6ClassFunction(value) {\n    try {\n      var fnStr = fnToStr.call(value);\n      return constructorRegex.test(fnStr);\n    } catch (e) {\n      return false;\n    }\n  };\n  var tryFunctionObject = function tryFunctionToStr(value) {\n    try {\n      if (isES6ClassFn(value)) {\n        return false;\n      }\n      fnToStr.call(value);\n      return true;\n    } catch (e) {\n      return false;\n    }\n  };\n  var toStr = Object.prototype.toString;\n  var objectClass = \"[object Object]\";\n  var fnClass = \"[object Function]\";\n  var genClass = \"[object GeneratorFunction]\";\n  var ddaClass = \"[object HTMLAllCollection]\";\n  var ddaClass2 = \"[object HTML document.all class]\";\n  var ddaClass3 = \"[object HTMLCollection]\";\n  var hasToStringTag = typeof Symbol === \"function\" && !!Symbol.toStringTag;\n  var isIE68 = !(0 in [,]);\n  var isDDA = function isDocumentDotAll() {\n    return false;\n  };\n  if (typeof document === \"object\") {\n    var all = document.all;\n    if (toStr.call(all) === toStr.call(document.all)) {\n      isDDA = function isDocumentDotAll(value) {\n        if ((isIE68 || !value) && (typeof value === \"undefined\" || typeof value === \"object\")) {\n          try {\n            var str = toStr.call(value);\n            return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value(\"\") == null;\n          } catch (e) {\n          }\n        }\n        return false;\n      };\n    }\n  }\n  exports$92 = reflectApply ? function isCallable(value) {\n    if (isDDA(value)) {\n      return true;\n    }\n    if (!value) {\n      return false;\n    }\n    if (typeof value !== \"function\" && typeof value !== \"object\") {\n      return false;\n    }\n    try {\n      reflectApply(value, null, badArrayLike);\n    } catch (e) {\n      if (e !== isCallableMarker) {\n        return false;\n      }\n    }\n    return !isES6ClassFn(value) && tryFunctionObject(value);\n  } : function isCallable(value) {\n    if (isDDA(value)) {\n      return true;\n    }\n    if (!value) {\n      return false;\n    }\n    if (typeof value !== \"function\" && typeof value !== \"object\") {\n      return false;\n    }\n    if (hasToStringTag) {\n      return tryFunctionObject(value);\n    }\n    if (isES6ClassFn(value)) {\n      return false;\n    }\n    var strClass = toStr.call(value);\n    if (strClass !== fnClass && strClass !== genClass && !/^\\[object HTML/.test(strClass)) {\n      return false;\n    }\n    return tryFunctionObject(value);\n  };\n  return exports$92;\n}\nvar exports$82 = {};\nvar _dewExec$72 = false;\nfunction dew$72() {\n  if (_dewExec$72) return exports$82;\n  _dewExec$72 = true;\n  var isCallable = dew$82();\n  var toStr = Object.prototype.toString;\n  var hasOwnProperty = Object.prototype.hasOwnProperty;\n  var forEachArray = function forEachArray2(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n      if (hasOwnProperty.call(array, i)) {\n        if (receiver == null) {\n          iterator(array[i], i, array);\n        } else {\n          iterator.call(receiver, array[i], i, array);\n        }\n      }\n    }\n  };\n  var forEachString = function forEachString2(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n      if (receiver == null) {\n        iterator(string.charAt(i), i, string);\n      } else {\n        iterator.call(receiver, string.charAt(i), i, string);\n      }\n    }\n  };\n  var forEachObject = function forEachObject2(object, iterator, receiver) {\n    for (var k in object) {\n      if (hasOwnProperty.call(object, k)) {\n        if (receiver == null) {\n          iterator(object[k], k, object);\n        } else {\n          iterator.call(receiver, object[k], k, object);\n        }\n      }\n    }\n  };\n  var forEach = function forEach2(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n      throw new TypeError(\"iterator must be a function\");\n    }\n    var receiver;\n    if (arguments.length >= 3) {\n      receiver = thisArg;\n    }\n    if (toStr.call(list) === \"[object Array]\") {\n      forEachArray(list, iterator, receiver);\n    } else if (typeof list === \"string\") {\n      forEachString(list, iterator, receiver);\n    } else {\n      forEachObject(list, iterator, receiver);\n    }\n  };\n  exports$82 = forEach;\n  return exports$82;\n}\nvar exports$72 = {};\nvar _dewExec$62 = false;\nfunction dew$62() {\n  if (_dewExec$62) return exports$72;\n  _dewExec$62 = true;\n  exports$72 = [\"Float32Array\", \"Float64Array\", \"Int8Array\", \"Int16Array\", \"Int32Array\", \"Uint8Array\", \"Uint8ClampedArray\", \"Uint16Array\", \"Uint32Array\", \"BigInt64Array\", \"BigUint64Array\"];\n  return exports$72;\n}\nvar exports$62 = {};\nvar _dewExec$52 = false;\nvar _global$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$52() {\n  if (_dewExec$52) return exports$62;\n  _dewExec$52 = true;\n  var possibleNames = dew$62();\n  var g = typeof globalThis === \"undefined\" ? _global$2 : globalThis;\n  exports$62 = function availableTypedArrays() {\n    var out = [];\n    for (var i = 0; i < possibleNames.length; i++) {\n      if (typeof g[possibleNames[i]] === \"function\") {\n        out[out.length] = possibleNames[i];\n      }\n    }\n    return out;\n  };\n  return exports$62;\n}\nvar exports$52 = {};\nvar _dewExec$42 = false;\nvar _global$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$42() {\n  if (_dewExec$42) return exports$52;\n  _dewExec$42 = true;\n  var forEach = dew$72();\n  var availableTypedArrays = dew$52();\n  var callBind = dew$1();\n  var callBound = dew();\n  var gOPD = dew$5();\n  var $toString = callBound(\"Object.prototype.toString\");\n  var hasToStringTag = dew$b2()();\n  var g = typeof globalThis === \"undefined\" ? _global$1 : globalThis;\n  var typedArrays = availableTypedArrays();\n  var $slice = callBound(\"String.prototype.slice\");\n  var getPrototypeOf = Object.getPrototypeOf;\n  var $indexOf = callBound(\"Array.prototype.indexOf\", true) || function indexOf(array, value) {\n    for (var i = 0; i < array.length; i += 1) {\n      if (array[i] === value) {\n        return i;\n      }\n    }\n    return -1;\n  };\n  var cache = {\n    __proto__: null\n  };\n  if (hasToStringTag && gOPD && getPrototypeOf) {\n    forEach(typedArrays, function(typedArray) {\n      var arr = new g[typedArray]();\n      if (Symbol.toStringTag in arr) {\n        var proto = getPrototypeOf(arr);\n        var descriptor = gOPD(proto, Symbol.toStringTag);\n        if (!descriptor) {\n          var superProto = getPrototypeOf(proto);\n          descriptor = gOPD(superProto, Symbol.toStringTag);\n        }\n        cache[\"$\" + typedArray] = callBind(descriptor.get);\n      }\n    });\n  } else {\n    forEach(typedArrays, function(typedArray) {\n      var arr = new g[typedArray]();\n      var fn = arr.slice || arr.set;\n      if (fn) {\n        cache[\"$\" + typedArray] = callBind(fn);\n      }\n    });\n  }\n  var tryTypedArrays = function tryAllTypedArrays(value) {\n    var found = false;\n    forEach(\n      // eslint-disable-next-line no-extra-parens\n      /** @type {Record<`\\$${TypedArrayName}`, Getter>} */\n      /** @type {any} */\n      cache,\n      /** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n      function(getter, typedArray) {\n        if (!found) {\n          try {\n            if (\"$\" + getter(value) === typedArray) {\n              found = $slice(typedArray, 1);\n            }\n          } catch (e) {\n          }\n        }\n      }\n    );\n    return found;\n  };\n  var trySlices = function tryAllSlices(value) {\n    var found = false;\n    forEach(\n      // eslint-disable-next-line no-extra-parens\n      /** @type {Record<`\\$${TypedArrayName}`, Getter>} */\n      /** @type {any} */\n      cache,\n      /** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */\n      function(getter, name) {\n        if (!found) {\n          try {\n            getter(value);\n            found = $slice(name, 1);\n          } catch (e) {\n          }\n        }\n      }\n    );\n    return found;\n  };\n  exports$52 = function whichTypedArray(value) {\n    if (!value || typeof value !== \"object\") {\n      return false;\n    }\n    if (!hasToStringTag) {\n      var tag = $slice($toString(value), 8, -1);\n      if ($indexOf(typedArrays, tag) > -1) {\n        return tag;\n      }\n      if (tag !== \"Object\") {\n        return false;\n      }\n      return trySlices(value);\n    }\n    if (!gOPD) {\n      return null;\n    }\n    return tryTypedArrays(value);\n  };\n  return exports$52;\n}\nvar exports$42 = {};\nvar _dewExec$32 = false;\nfunction dew$32() {\n  if (_dewExec$32) return exports$42;\n  _dewExec$32 = true;\n  var whichTypedArray = dew$42();\n  exports$42 = function isTypedArray(value) {\n    return !!whichTypedArray(value);\n  };\n  return exports$42;\n}\nvar exports$32 = {};\nvar _dewExec$22 = false;\nfunction dew$22() {\n  if (_dewExec$22) return exports$32;\n  _dewExec$22 = true;\n  var isArgumentsObject = dew$a2();\n  var isGeneratorFunction = dew$92();\n  var whichTypedArray = dew$42();\n  var isTypedArray = dew$32();\n  function uncurryThis(f) {\n    return f.call.bind(f);\n  }\n  var BigIntSupported = typeof BigInt !== \"undefined\";\n  var SymbolSupported = typeof Symbol !== \"undefined\";\n  var ObjectToString = uncurryThis(Object.prototype.toString);\n  var numberValue = uncurryThis(Number.prototype.valueOf);\n  var stringValue = uncurryThis(String.prototype.valueOf);\n  var booleanValue = uncurryThis(Boolean.prototype.valueOf);\n  if (BigIntSupported) {\n    var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n  }\n  if (SymbolSupported) {\n    var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n  }\n  function checkBoxedPrimitive(value, prototypeValueOf) {\n    if (typeof value !== \"object\") {\n      return false;\n    }\n    try {\n      prototypeValueOf(value);\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n  exports$32.isArgumentsObject = isArgumentsObject;\n  exports$32.isGeneratorFunction = isGeneratorFunction;\n  exports$32.isTypedArray = isTypedArray;\n  function isPromise(input) {\n    return typeof Promise !== \"undefined\" && input instanceof Promise || input !== null && typeof input === \"object\" && typeof input.then === \"function\" && typeof input.catch === \"function\";\n  }\n  exports$32.isPromise = isPromise;\n  function isArrayBufferView(value) {\n    if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView) {\n      return ArrayBuffer.isView(value);\n    }\n    return isTypedArray(value) || isDataView(value);\n  }\n  exports$32.isArrayBufferView = isArrayBufferView;\n  function isUint8Array(value) {\n    return whichTypedArray(value) === \"Uint8Array\";\n  }\n  exports$32.isUint8Array = isUint8Array;\n  function isUint8ClampedArray(value) {\n    return whichTypedArray(value) === \"Uint8ClampedArray\";\n  }\n  exports$32.isUint8ClampedArray = isUint8ClampedArray;\n  function isUint16Array(value) {\n    return whichTypedArray(value) === \"Uint16Array\";\n  }\n  exports$32.isUint16Array = isUint16Array;\n  function isUint32Array(value) {\n    return whichTypedArray(value) === \"Uint32Array\";\n  }\n  exports$32.isUint32Array = isUint32Array;\n  function isInt8Array(value) {\n    return whichTypedArray(value) === \"Int8Array\";\n  }\n  exports$32.isInt8Array = isInt8Array;\n  function isInt16Array(value) {\n    return whichTypedArray(value) === \"Int16Array\";\n  }\n  exports$32.isInt16Array = isInt16Array;\n  function isInt32Array(value) {\n    return whichTypedArray(value) === \"Int32Array\";\n  }\n  exports$32.isInt32Array = isInt32Array;\n  function isFloat32Array(value) {\n    return whichTypedArray(value) === \"Float32Array\";\n  }\n  exports$32.isFloat32Array = isFloat32Array;\n  function isFloat64Array(value) {\n    return whichTypedArray(value) === \"Float64Array\";\n  }\n  exports$32.isFloat64Array = isFloat64Array;\n  function isBigInt64Array(value) {\n    return whichTypedArray(value) === \"BigInt64Array\";\n  }\n  exports$32.isBigInt64Array = isBigInt64Array;\n  function isBigUint64Array(value) {\n    return whichTypedArray(value) === \"BigUint64Array\";\n  }\n  exports$32.isBigUint64Array = isBigUint64Array;\n  function isMapToString(value) {\n    return ObjectToString(value) === \"[object Map]\";\n  }\n  isMapToString.working = typeof Map !== \"undefined\" && isMapToString(/* @__PURE__ */ new Map());\n  function isMap(value) {\n    if (typeof Map === \"undefined\") {\n      return false;\n    }\n    return isMapToString.working ? isMapToString(value) : value instanceof Map;\n  }\n  exports$32.isMap = isMap;\n  function isSetToString(value) {\n    return ObjectToString(value) === \"[object Set]\";\n  }\n  isSetToString.working = typeof Set !== \"undefined\" && isSetToString(/* @__PURE__ */ new Set());\n  function isSet(value) {\n    if (typeof Set === \"undefined\") {\n      return false;\n    }\n    return isSetToString.working ? isSetToString(value) : value instanceof Set;\n  }\n  exports$32.isSet = isSet;\n  function isWeakMapToString(value) {\n    return ObjectToString(value) === \"[object WeakMap]\";\n  }\n  isWeakMapToString.working = typeof WeakMap !== \"undefined\" && isWeakMapToString(/* @__PURE__ */ new WeakMap());\n  function isWeakMap(value) {\n    if (typeof WeakMap === \"undefined\") {\n      return false;\n    }\n    return isWeakMapToString.working ? isWeakMapToString(value) : value instanceof WeakMap;\n  }\n  exports$32.isWeakMap = isWeakMap;\n  function isWeakSetToString(value) {\n    return ObjectToString(value) === \"[object WeakSet]\";\n  }\n  isWeakSetToString.working = typeof WeakSet !== \"undefined\" && isWeakSetToString(/* @__PURE__ */ new WeakSet());\n  function isWeakSet(value) {\n    return isWeakSetToString(value);\n  }\n  exports$32.isWeakSet = isWeakSet;\n  function isArrayBufferToString(value) {\n    return ObjectToString(value) === \"[object ArrayBuffer]\";\n  }\n  isArrayBufferToString.working = typeof ArrayBuffer !== \"undefined\" && isArrayBufferToString(new ArrayBuffer());\n  function isArrayBuffer(value) {\n    if (typeof ArrayBuffer === \"undefined\") {\n      return false;\n    }\n    return isArrayBufferToString.working ? isArrayBufferToString(value) : value instanceof ArrayBuffer;\n  }\n  exports$32.isArrayBuffer = isArrayBuffer;\n  function isDataViewToString(value) {\n    return ObjectToString(value) === \"[object DataView]\";\n  }\n  isDataViewToString.working = typeof ArrayBuffer !== \"undefined\" && typeof DataView !== \"undefined\" && isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1));\n  function isDataView(value) {\n    if (typeof DataView === \"undefined\") {\n      return false;\n    }\n    return isDataViewToString.working ? isDataViewToString(value) : value instanceof DataView;\n  }\n  exports$32.isDataView = isDataView;\n  var SharedArrayBufferCopy = typeof SharedArrayBuffer !== \"undefined\" ? SharedArrayBuffer : void 0;\n  function isSharedArrayBufferToString(value) {\n    return ObjectToString(value) === \"[object SharedArrayBuffer]\";\n  }\n  function isSharedArrayBuffer(value) {\n    if (typeof SharedArrayBufferCopy === \"undefined\") {\n      return false;\n    }\n    if (typeof isSharedArrayBufferToString.working === \"undefined\") {\n      isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n    }\n    return isSharedArrayBufferToString.working ? isSharedArrayBufferToString(value) : value instanceof SharedArrayBufferCopy;\n  }\n  exports$32.isSharedArrayBuffer = isSharedArrayBuffer;\n  function isAsyncFunction(value) {\n    return ObjectToString(value) === \"[object AsyncFunction]\";\n  }\n  exports$32.isAsyncFunction = isAsyncFunction;\n  function isMapIterator(value) {\n    return ObjectToString(value) === \"[object Map Iterator]\";\n  }\n  exports$32.isMapIterator = isMapIterator;\n  function isSetIterator(value) {\n    return ObjectToString(value) === \"[object Set Iterator]\";\n  }\n  exports$32.isSetIterator = isSetIterator;\n  function isGeneratorObject(value) {\n    return ObjectToString(value) === \"[object Generator]\";\n  }\n  exports$32.isGeneratorObject = isGeneratorObject;\n  function isWebAssemblyCompiledModule(value) {\n    return ObjectToString(value) === \"[object WebAssembly.Module]\";\n  }\n  exports$32.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n  function isNumberObject(value) {\n    return checkBoxedPrimitive(value, numberValue);\n  }\n  exports$32.isNumberObject = isNumberObject;\n  function isStringObject(value) {\n    return checkBoxedPrimitive(value, stringValue);\n  }\n  exports$32.isStringObject = isStringObject;\n  function isBooleanObject(value) {\n    return checkBoxedPrimitive(value, booleanValue);\n  }\n  exports$32.isBooleanObject = isBooleanObject;\n  function isBigIntObject(value) {\n    return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n  }\n  exports$32.isBigIntObject = isBigIntObject;\n  function isSymbolObject(value) {\n    return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n  }\n  exports$32.isSymbolObject = isSymbolObject;\n  function isBoxedPrimitive(value) {\n    return isNumberObject(value) || isStringObject(value) || isBooleanObject(value) || isBigIntObject(value) || isSymbolObject(value);\n  }\n  exports$32.isBoxedPrimitive = isBoxedPrimitive;\n  function isAnyArrayBuffer(value) {\n    return typeof Uint8Array !== \"undefined\" && (isArrayBuffer(value) || isSharedArrayBuffer(value));\n  }\n  exports$32.isAnyArrayBuffer = isAnyArrayBuffer;\n  [\"isProxy\", \"isExternal\", \"isModuleNamespaceObject\"].forEach(function(method) {\n    Object.defineProperty(exports$32, method, {\n      enumerable: false,\n      value: function() {\n        throw new Error(method + \" is not supported in userland\");\n      }\n    });\n  });\n  return exports$32;\n}\nvar exports$22 = {};\nvar _dewExec$12 = false;\nfunction dew$12() {\n  if (_dewExec$12) return exports$22;\n  _dewExec$12 = true;\n  exports$22 = function isBuffer2(arg) {\n    return arg && typeof arg === \"object\" && typeof arg.copy === \"function\" && typeof arg.fill === \"function\" && typeof arg.readUInt8 === \"function\";\n  };\n  return exports$22;\n}\nvar exports$12 = {};\nvar _dewExec3 = false;\nvar _global = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew3() {\n  if (_dewExec3) return exports$12;\n  _dewExec3 = true;\n  var process$1 = process;\n  var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors2(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n  var formatRegExp = /%[sdj%]/g;\n  exports$12.format = function(f) {\n    if (!isString2(f)) {\n      var objects = [];\n      for (var i = 0; i < arguments.length; i++) {\n        objects.push(inspect2(arguments[i]));\n      }\n      return objects.join(\" \");\n    }\n    var i = 1;\n    var args = arguments;\n    var len = args.length;\n    var str = String(f).replace(formatRegExp, function(x2) {\n      if (x2 === \"%%\") return \"%\";\n      if (i >= len) return x2;\n      switch (x2) {\n        case \"%s\":\n          return String(args[i++]);\n        case \"%d\":\n          return Number(args[i++]);\n        case \"%j\":\n          try {\n            return JSON.stringify(args[i++]);\n          } catch (_) {\n            return \"[Circular]\";\n          }\n        default:\n          return x2;\n      }\n    });\n    for (var x = args[i]; i < len; x = args[++i]) {\n      if (isNull2(x) || !isObject2(x)) {\n        str += \" \" + x;\n      } else {\n        str += \" \" + inspect2(x);\n      }\n    }\n    return str;\n  };\n  exports$12.deprecate = function(fn, msg) {\n    if (typeof process$1 !== \"undefined\" && process$1.noDeprecation === true) {\n      return fn;\n    }\n    if (typeof process$1 === \"undefined\") {\n      return function() {\n        return exports$12.deprecate(fn, msg).apply(this || _global, arguments);\n      };\n    }\n    var warned = false;\n    function deprecated() {\n      if (!warned) {\n        if (process$1.throwDeprecation) {\n          throw new Error(msg);\n        } else if (process$1.traceDeprecation) {\n          console.trace(msg);\n        } else {\n          console.error(msg);\n        }\n        warned = true;\n      }\n      return fn.apply(this || _global, arguments);\n    }\n    return deprecated;\n  };\n  var debugs = {};\n  var debugEnvRegex = /^$/;\n  if (process$1.env.NODE_DEBUG) {\n    var debugEnv = process$1.env.NODE_DEBUG;\n    debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, \"\\\\$&\").replace(/\\*/g, \".*\").replace(/,/g, \"$|^\").toUpperCase();\n    debugEnvRegex = new RegExp(\"^\" + debugEnv + \"$\", \"i\");\n  }\n  exports$12.debuglog = function(set) {\n    set = set.toUpperCase();\n    if (!debugs[set]) {\n      if (debugEnvRegex.test(set)) {\n        var pid2 = process$1.pid;\n        debugs[set] = function() {\n          var msg = exports$12.format.apply(exports$12, arguments);\n          console.error(\"%s %d: %s\", set, pid2, msg);\n        };\n      } else {\n        debugs[set] = function() {\n        };\n      }\n    }\n    return debugs[set];\n  };\n  function inspect2(obj, opts) {\n    var ctx = {\n      seen: [],\n      stylize: stylizeNoColor\n    };\n    if (arguments.length >= 3) ctx.depth = arguments[2];\n    if (arguments.length >= 4) ctx.colors = arguments[3];\n    if (isBoolean2(opts)) {\n      ctx.showHidden = opts;\n    } else if (opts) {\n      exports$12._extend(ctx, opts);\n    }\n    if (isUndefined2(ctx.showHidden)) ctx.showHidden = false;\n    if (isUndefined2(ctx.depth)) ctx.depth = 2;\n    if (isUndefined2(ctx.colors)) ctx.colors = false;\n    if (isUndefined2(ctx.customInspect)) ctx.customInspect = true;\n    if (ctx.colors) ctx.stylize = stylizeWithColor;\n    return formatValue(ctx, obj, ctx.depth);\n  }\n  exports$12.inspect = inspect2;\n  inspect2.colors = {\n    \"bold\": [1, 22],\n    \"italic\": [3, 23],\n    \"underline\": [4, 24],\n    \"inverse\": [7, 27],\n    \"white\": [37, 39],\n    \"grey\": [90, 39],\n    \"black\": [30, 39],\n    \"blue\": [34, 39],\n    \"cyan\": [36, 39],\n    \"green\": [32, 39],\n    \"magenta\": [35, 39],\n    \"red\": [31, 39],\n    \"yellow\": [33, 39]\n  };\n  inspect2.styles = {\n    \"special\": \"cyan\",\n    \"number\": \"yellow\",\n    \"boolean\": \"yellow\",\n    \"undefined\": \"grey\",\n    \"null\": \"bold\",\n    \"string\": \"green\",\n    \"date\": \"magenta\",\n    // \"name\": intentionally not styling\n    \"regexp\": \"red\"\n  };\n  function stylizeWithColor(str, styleType) {\n    var style = inspect2.styles[styleType];\n    if (style) {\n      return \"\\x1B[\" + inspect2.colors[style][0] + \"m\" + str + \"\\x1B[\" + inspect2.colors[style][1] + \"m\";\n    } else {\n      return str;\n    }\n  }\n  function stylizeNoColor(str, styleType) {\n    return str;\n  }\n  function arrayToHash(array) {\n    var hash = {};\n    array.forEach(function(val, idx) {\n      hash[val] = true;\n    });\n    return hash;\n  }\n  function formatValue(ctx, value, recurseTimes) {\n    if (ctx.customInspect && value && isFunction2(value.inspect) && // Filter out the util module, it's inspect function is special\n    value.inspect !== exports$12.inspect && // Also filter out any prototype objects using the circular check.\n    !(value.constructor && value.constructor.prototype === value)) {\n      var ret = value.inspect(recurseTimes, ctx);\n      if (!isString2(ret)) {\n        ret = formatValue(ctx, ret, recurseTimes);\n      }\n      return ret;\n    }\n    var primitive = formatPrimitive(ctx, value);\n    if (primitive) {\n      return primitive;\n    }\n    var keys = Object.keys(value);\n    var visibleKeys = arrayToHash(keys);\n    if (ctx.showHidden) {\n      keys = Object.getOwnPropertyNames(value);\n    }\n    if (isError2(value) && (keys.indexOf(\"message\") >= 0 || keys.indexOf(\"description\") >= 0)) {\n      return formatError(value);\n    }\n    if (keys.length === 0) {\n      if (isFunction2(value)) {\n        var name = value.name ? \": \" + value.name : \"\";\n        return ctx.stylize(\"[Function\" + name + \"]\", \"special\");\n      }\n      if (isRegExp2(value)) {\n        return ctx.stylize(RegExp.prototype.toString.call(value), \"regexp\");\n      }\n      if (isDate2(value)) {\n        return ctx.stylize(Date.prototype.toString.call(value), \"date\");\n      }\n      if (isError2(value)) {\n        return formatError(value);\n      }\n    }\n    var base = \"\", array = false, braces = [\"{\", \"}\"];\n    if (isArray2(value)) {\n      array = true;\n      braces = [\"[\", \"]\"];\n    }\n    if (isFunction2(value)) {\n      var n = value.name ? \": \" + value.name : \"\";\n      base = \" [Function\" + n + \"]\";\n    }\n    if (isRegExp2(value)) {\n      base = \" \" + RegExp.prototype.toString.call(value);\n    }\n    if (isDate2(value)) {\n      base = \" \" + Date.prototype.toUTCString.call(value);\n    }\n    if (isError2(value)) {\n      base = \" \" + formatError(value);\n    }\n    if (keys.length === 0 && (!array || value.length == 0)) {\n      return braces[0] + base + braces[1];\n    }\n    if (recurseTimes < 0) {\n      if (isRegExp2(value)) {\n        return ctx.stylize(RegExp.prototype.toString.call(value), \"regexp\");\n      } else {\n        return ctx.stylize(\"[Object]\", \"special\");\n      }\n    }\n    ctx.seen.push(value);\n    var output;\n    if (array) {\n      output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n    } else {\n      output = keys.map(function(key) {\n        return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n      });\n    }\n    ctx.seen.pop();\n    return reduceToSingleString(output, base, braces);\n  }\n  function formatPrimitive(ctx, value) {\n    if (isUndefined2(value)) return ctx.stylize(\"undefined\", \"undefined\");\n    if (isString2(value)) {\n      var simple = \"'\" + JSON.stringify(value).replace(/^\"|\"$/g, \"\").replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + \"'\";\n      return ctx.stylize(simple, \"string\");\n    }\n    if (isNumber2(value)) return ctx.stylize(\"\" + value, \"number\");\n    if (isBoolean2(value)) return ctx.stylize(\"\" + value, \"boolean\");\n    if (isNull2(value)) return ctx.stylize(\"null\", \"null\");\n  }\n  function formatError(value) {\n    return \"[\" + Error.prototype.toString.call(value) + \"]\";\n  }\n  function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n    var output = [];\n    for (var i = 0, l = value.length; i < l; ++i) {\n      if (hasOwnProperty(value, String(i))) {\n        output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n      } else {\n        output.push(\"\");\n      }\n    }\n    keys.forEach(function(key) {\n      if (!key.match(/^\\d+$/)) {\n        output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n      }\n    });\n    return output;\n  }\n  function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n    var name, str, desc;\n    desc = Object.getOwnPropertyDescriptor(value, key) || {\n      value: value[key]\n    };\n    if (desc.get) {\n      if (desc.set) {\n        str = ctx.stylize(\"[Getter/Setter]\", \"special\");\n      } else {\n        str = ctx.stylize(\"[Getter]\", \"special\");\n      }\n    } else {\n      if (desc.set) {\n        str = ctx.stylize(\"[Setter]\", \"special\");\n      }\n    }\n    if (!hasOwnProperty(visibleKeys, key)) {\n      name = \"[\" + key + \"]\";\n    }\n    if (!str) {\n      if (ctx.seen.indexOf(desc.value) < 0) {\n        if (isNull2(recurseTimes)) {\n          str = formatValue(ctx, desc.value, null);\n        } else {\n          str = formatValue(ctx, desc.value, recurseTimes - 1);\n        }\n        if (str.indexOf(\"\\n\") > -1) {\n          if (array) {\n            str = str.split(\"\\n\").map(function(line) {\n              return \"  \" + line;\n            }).join(\"\\n\").slice(2);\n          } else {\n            str = \"\\n\" + str.split(\"\\n\").map(function(line) {\n              return \"   \" + line;\n            }).join(\"\\n\");\n          }\n        }\n      } else {\n        str = ctx.stylize(\"[Circular]\", \"special\");\n      }\n    }\n    if (isUndefined2(name)) {\n      if (array && key.match(/^\\d+$/)) {\n        return str;\n      }\n      name = JSON.stringify(\"\" + key);\n      if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n        name = name.slice(1, -1);\n        name = ctx.stylize(name, \"name\");\n      } else {\n        name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n        name = ctx.stylize(name, \"string\");\n      }\n    }\n    return name + \": \" + str;\n  }\n  function reduceToSingleString(output, base, braces) {\n    var length = output.reduce(function(prev, cur) {\n      if (cur.indexOf(\"\\n\") >= 0) ;\n      return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, \"\").length + 1;\n    }, 0);\n    if (length > 60) {\n      return braces[0] + (base === \"\" ? \"\" : base + \"\\n \") + \" \" + output.join(\",\\n  \") + \" \" + braces[1];\n    }\n    return braces[0] + base + \" \" + output.join(\", \") + \" \" + braces[1];\n  }\n  exports$12.types = dew$22();\n  function isArray2(ar) {\n    return Array.isArray(ar);\n  }\n  exports$12.isArray = isArray2;\n  function isBoolean2(arg) {\n    return typeof arg === \"boolean\";\n  }\n  exports$12.isBoolean = isBoolean2;\n  function isNull2(arg) {\n    return arg === null;\n  }\n  exports$12.isNull = isNull2;\n  function isNullOrUndefined2(arg) {\n    return arg == null;\n  }\n  exports$12.isNullOrUndefined = isNullOrUndefined2;\n  function isNumber2(arg) {\n    return typeof arg === \"number\";\n  }\n  exports$12.isNumber = isNumber2;\n  function isString2(arg) {\n    return typeof arg === \"string\";\n  }\n  exports$12.isString = isString2;\n  function isSymbol2(arg) {\n    return typeof arg === \"symbol\";\n  }\n  exports$12.isSymbol = isSymbol2;\n  function isUndefined2(arg) {\n    return arg === void 0;\n  }\n  exports$12.isUndefined = isUndefined2;\n  function isRegExp2(re) {\n    return isObject2(re) && objectToString(re) === \"[object RegExp]\";\n  }\n  exports$12.isRegExp = isRegExp2;\n  exports$12.types.isRegExp = isRegExp2;\n  function isObject2(arg) {\n    return typeof arg === \"object\" && arg !== null;\n  }\n  exports$12.isObject = isObject2;\n  function isDate2(d) {\n    return isObject2(d) && objectToString(d) === \"[object Date]\";\n  }\n  exports$12.isDate = isDate2;\n  exports$12.types.isDate = isDate2;\n  function isError2(e) {\n    return isObject2(e) && (objectToString(e) === \"[object Error]\" || e instanceof Error);\n  }\n  exports$12.isError = isError2;\n  exports$12.types.isNativeError = isError2;\n  function isFunction2(arg) {\n    return typeof arg === \"function\";\n  }\n  exports$12.isFunction = isFunction2;\n  function isPrimitive2(arg) {\n    return arg === null || typeof arg === \"boolean\" || typeof arg === \"number\" || typeof arg === \"string\" || typeof arg === \"symbol\" || // ES6 symbol\n    typeof arg === \"undefined\";\n  }\n  exports$12.isPrimitive = isPrimitive2;\n  exports$12.isBuffer = dew$12();\n  function objectToString(o) {\n    return Object.prototype.toString.call(o);\n  }\n  function pad(n) {\n    return n < 10 ? \"0\" + n.toString(10) : n.toString(10);\n  }\n  var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n  function timestamp() {\n    var d = /* @__PURE__ */ new Date();\n    var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(\":\");\n    return [d.getDate(), months[d.getMonth()], time].join(\" \");\n  }\n  exports$12.log = function() {\n    console.log(\"%s - %s\", timestamp(), exports$12.format.apply(exports$12, arguments));\n  };\n  exports$12.inherits = dew2();\n  exports$12._extend = function(origin, add) {\n    if (!add || !isObject2(add)) return origin;\n    var keys = Object.keys(add);\n    var i = keys.length;\n    while (i--) {\n      origin[keys[i]] = add[keys[i]];\n    }\n    return origin;\n  };\n  function hasOwnProperty(obj, prop) {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n  }\n  var kCustomPromisifiedSymbol = typeof Symbol !== \"undefined\" ? /* @__PURE__ */ Symbol(\"util.promisify.custom\") : void 0;\n  exports$12.promisify = function promisify2(original) {\n    if (typeof original !== \"function\") throw new TypeError('The \"original\" argument must be of type Function');\n    if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n      fn = original[kCustomPromisifiedSymbol];\n      if (typeof fn !== \"function\") {\n        throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n      }\n      Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n        value: fn,\n        enumerable: false,\n        writable: false,\n        configurable: true\n      });\n      return fn;\n    }\n    function fn() {\n      var promiseResolve, promiseReject;\n      var promise = new Promise(function(resolve, reject) {\n        promiseResolve = resolve;\n        promiseReject = reject;\n      });\n      var args = [];\n      for (var i = 0; i < arguments.length; i++) {\n        args.push(arguments[i]);\n      }\n      args.push(function(err, value) {\n        if (err) {\n          promiseReject(err);\n        } else {\n          promiseResolve(value);\n        }\n      });\n      try {\n        original.apply(this || _global, args);\n      } catch (err) {\n        promiseReject(err);\n      }\n      return promise;\n    }\n    Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n    if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn,\n      enumerable: false,\n      writable: false,\n      configurable: true\n    });\n    return Object.defineProperties(fn, getOwnPropertyDescriptors(original));\n  };\n  exports$12.promisify.custom = kCustomPromisifiedSymbol;\n  function callbackifyOnRejected(reason, cb) {\n    if (!reason) {\n      var newReason = new Error(\"Promise was rejected with a falsy value\");\n      newReason.reason = reason;\n      reason = newReason;\n    }\n    return cb(reason);\n  }\n  function callbackify2(original) {\n    if (typeof original !== \"function\") {\n      throw new TypeError('The \"original\" argument must be of type Function');\n    }\n    function callbackified() {\n      var args = [];\n      for (var i = 0; i < arguments.length; i++) {\n        args.push(arguments[i]);\n      }\n      var maybeCb = args.pop();\n      if (typeof maybeCb !== \"function\") {\n        throw new TypeError(\"The last argument must be of type Function\");\n      }\n      var self2 = this || _global;\n      var cb = function() {\n        return maybeCb.apply(self2, arguments);\n      };\n      original.apply(this || _global, args).then(function(ret) {\n        process$1.nextTick(cb.bind(null, null, ret));\n      }, function(rej) {\n        process$1.nextTick(callbackifyOnRejected.bind(null, rej, cb));\n      });\n    }\n    Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n    Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));\n    return callbackified;\n  }\n  exports$12.callbackify = callbackify2;\n  return exports$12;\n}\nvar exports3 = dew3();\nexports3[\"format\"];\nexports3[\"deprecate\"];\nexports3[\"debuglog\"];\nexports3[\"inspect\"];\nexports3[\"types\"];\nexports3[\"isArray\"];\nexports3[\"isBoolean\"];\nexports3[\"isNull\"];\nexports3[\"isNullOrUndefined\"];\nexports3[\"isNumber\"];\nexports3[\"isString\"];\nexports3[\"isSymbol\"];\nexports3[\"isUndefined\"];\nexports3[\"isRegExp\"];\nexports3[\"isObject\"];\nexports3[\"isDate\"];\nexports3[\"isError\"];\nexports3[\"isFunction\"];\nexports3[\"isPrimitive\"];\nexports3[\"isBuffer\"];\nexports3[\"log\"];\nexports3[\"inherits\"];\nexports3[\"_extend\"];\nexports3[\"promisify\"];\nexports3[\"callbackify\"];\nvar _extend = exports3._extend;\nvar callbackify = exports3.callbackify;\nvar debuglog = exports3.debuglog;\nvar deprecate = exports3.deprecate;\nvar format = exports3.format;\nvar inherits = exports3.inherits;\nvar inspect = exports3.inspect;\nvar isArray = exports3.isArray;\nvar isBoolean = exports3.isBoolean;\nvar isBuffer = exports3.isBuffer;\nvar isDate = exports3.isDate;\nvar isError = exports3.isError;\nvar isFunction = exports3.isFunction;\nvar isNull = exports3.isNull;\nvar isNullOrUndefined = exports3.isNullOrUndefined;\nvar isNumber = exports3.isNumber;\nvar isObject = exports3.isObject;\nvar isPrimitive = exports3.isPrimitive;\nvar isRegExp = exports3.isRegExp;\nvar isString = exports3.isString;\nvar isSymbol = exports3.isSymbol;\nvar isUndefined = exports3.isUndefined;\nvar log = exports3.log;\nvar promisify = exports3.promisify;\nvar types = exports3.types;\nvar TextEncoder = exports3.TextEncoder = globalThis.TextEncoder;\nvar TextDecoder = exports3.TextDecoder = globalThis.TextDecoder;\nexport {\n  TextDecoder,\n  TextEncoder,\n  _extend,\n  callbackify,\n  debuglog,\n  exports3 as default,\n  deprecate,\n  format,\n  inherits,\n  inspect,\n  isArray,\n  isBoolean,\n  isBuffer,\n  isDate,\n  isError,\n  isFunction,\n  isNull,\n  isNullOrUndefined,\n  isNumber,\n  isObject,\n  isPrimitive,\n  isRegExp,\n  isString,\n  isSymbol,\n  isUndefined,\n  log,\n  promisify,\n  types\n};\n", "export * from 'util'", "module.exports = require('util').inspect;\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 $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\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';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\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\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\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('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\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        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\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 = $arrSlice.call(seen);\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' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\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 += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\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 '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\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    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\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 ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(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($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\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' : '') + $toUpperCase.call(n.toString(16));\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) : $join.call(entries, ', ');\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 = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), 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 + $join.call(xs, ',' + 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 ($test.call(/[^\\w$]/, 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 inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\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 = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType<typeof getSideChannelList>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;\n\n\t/** @type {Channel} */\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\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n", "'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n", "'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n", "'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n", "'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n", "'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n", "'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n", "'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n", "'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n", "'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n", "'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n", "'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n", "'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n", "'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n", "'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\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 = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n", "'use strict';\n\n/** @type {import('./shams')} */\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\t/** @type {{ [k in symbol]?: unknown }} */\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 (var _ 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\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (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\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\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/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n", "'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ 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 implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n", "'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n", "'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n", "'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {import('.')} */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n", "'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n", "'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n", "'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n", "'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\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 = require('gopd');\nvar $defineProperty = require('es-define-property');\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 = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\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 ? 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'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\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(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 || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\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 || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? 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\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\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 && getProto) {\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__proto__: null,\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('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\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\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\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\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n", "'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\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 = require('gopd');\nvar $defineProperty = require('es-define-property');\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 = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\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 ? 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'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\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(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 || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\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 || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? 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\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\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 && getProto) {\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__proto__: null,\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('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\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\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\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 GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t// eslint-disable-next-line no-extra-parens\n\tvar intrinsic = /** @type {Parameters<typeof callBindBasic>[0][0]} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic([intrinsic]);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {<K, V>(thisArg: Map<K, V>) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType<typeof getSideChannelMap>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {Map<K, V> | undefined} */ var $m;\n\n\t/** @type {Channel} */\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\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n", "'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n", "'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\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 = require('gopd');\nvar $defineProperty = require('es-define-property');\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 = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\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 ? 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'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\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(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 || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\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 || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? 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\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\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 && getProto) {\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__proto__: null,\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('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\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\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\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 GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */\n\t\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t\t/** @type {WeakMap<K & object, V> | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n", "'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType<typeof getSideChannel>} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\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\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\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\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((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[compacted.length] = 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 ? { __proto__: 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' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\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        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\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[target.length] = 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\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\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, defaultDecoder, 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 limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\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 j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\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                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\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[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = 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, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\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[mapped.length] = 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    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\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 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    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\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    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\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            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        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\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    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\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            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : 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 (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\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    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\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 generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\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        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\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('\u2713')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\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    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: 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, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the \u2713 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 \u2713 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('\u2713')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\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;\n        var 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\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\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            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = parent;\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = segment[1];\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys[keys.length] = '[' + key.slice(segment.index) + ']';\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\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 (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof 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\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\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        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\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        duplicates: duplicates,\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        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\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 ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: 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", "'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", "/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 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  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}\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 = round1(chart.height * pixelRatio);\n  const deviceWidth = round1(chart.width * pixelRatio);\n\n  (chart as PrivateChart).height = round1(chart.height);\n  (chart as PrivateChart).width = round1(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 type {Chart, ChartArea, ChartMeta, Scale, TRBL} from '../types/index.js';\n\nfunction getSizeForArea(scale: Scale, chartArea: ChartArea, field: keyof ChartArea) {\n  return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta: ChartMeta, chartArea: ChartArea): TRBL {\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\nexport function getDatasetClipArea(chart: Chart, meta: ChartMeta): TRBL | false {\n  const clip = meta._clip;\n  if (clip.disabled) {\n    return false;\n  }\n  const area = getDatasetArea(meta, chart.chartArea);\n\n  return {\n    left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left),\n    right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right),\n    top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top),\n    bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom)\n  };\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  _getAxisCount() {\n    return this._getAxis().length;\n  }\n\n  getFirstScaleIdForIndexAxis() {\n    const scales = this.chart.scales;\n    const indexScaleId = this.chart.options.indexAxis;\n    return Object.keys(scales).filter(key => scales[key].axis === indexScaleId).shift();\n  }\n\n  _getAxis() {\n    const axis = {};\n    const firstScaleAxisId = this.getFirstScaleIdForIndexAxis();\n    for (const dataset of this.chart.data.datasets) {\n      axis[valueOrDefault(\n        this.chart.options.indexAxis === 'x' ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId\n      )] = true;\n    }\n    return Object.keys(axis);\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    const axisCount = this._getAxisCount();\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 * axisCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount * axisCount);\n      const axisID = this.chart.options.indexAxis === 'x' ? this.getDataset().xAxisID : this.getDataset().yAxisID;\n      const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis()));\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined) + axisNumber;\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\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            const {labels: {pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n            if (data.labels.length && data.datasets.length) {\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                  fontColor: color,\n                  hidden: !chart.getDataVisibility(i),\n                  lineDash: style.borderDash,\n                  lineDashOffset: style.borderDashOffset,\n                  lineJoin: style.borderJoinStyle,\n                  lineWidth: style.borderWidth,\n                  strokeStyle: style.borderColor,\n                  textAlign: textAlign,\n                  pointStyle: pointStyle,\n                  borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\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 = undefined;\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    if (this._init === undefined) { // Do not trigger events before install\n      return;\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      this._init = undefined; // Do not trigger events after 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 {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea, _isDomSupported, retinaScale, getDatasetClipArea} 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\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 args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n    // @ts-expect-error\n    const clip = getDatasetClipArea(this, meta);\n\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n\n    if (clip) {\n      clipArea(ctx, clip);\n    }\n\n    meta.controller.draw();\n\n    if (clip) {\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, _angleDiff, _normalizeAngle, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\nfunction clipSelf(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n  const {startAngle, x, y, outerRadius, innerRadius, options} = element;\n  const {borderWidth, borderJoinStyle} = options;\n  const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle));\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2);\n\n  if (innerRadius > 0) {\n    const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle));\n    ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true);\n  } else {\n    const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle));\n\n    if (borderJoinStyle === 'round') {\n      ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true);\n    } else if (borderJoinStyle === 'bevel') {\n      const r = 2 * clipWidth * clipWidth;\n      const endX = -r * Math.cos(endAngle + PI / 2) + x;\n      const endY = -r * Math.sin(endAngle + PI / 2) + y;\n      const startX = r * Math.cos(startAngle + PI / 2) + x;\n      const startY = r * Math.sin(startAngle + PI / 2) + y;\n      ctx.lineTo(endX, endY);\n      ctx.lineTo(startX, startY);\n    }\n  }\n  ctx.closePath();\n\n  ctx.moveTo(0, 0);\n  ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);\n\n  ctx.clip('evenodd');\n}\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, borderRadius} = 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 (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== 'miter') {\n    clipSelf(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    selfJoin: false,\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 a segment -> need to add another point before this,\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        // In the middle of a 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, getDatasetClipArea} 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 {chart, index, 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  const meta = chart.getDatasetMeta(index);\n  const clip = getDatasetClipArea(chart, meta);\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis, clip});\n    unclipArea(ctx);\n  }\n}\n\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale, clip} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n\n  ctx.save();\n\n  let fillColor = below;\n  if (below !== above) {\n    if (property === 'x') {\n      clipVertical(ctx, target, area.top);\n      fill(ctx, {line, target, color: above, scale, property, clip});\n      ctx.restore();\n      ctx.save();\n      clipVertical(ctx, target, area.bottom);\n    } else if (property === 'y') {\n      clipHorizontal(ctx, target, area.left);\n      fill(ctx, {line, target, color: below, scale, property, clip});\n      ctx.restore();\n      ctx.save();\n      clipHorizontal(ctx, target, area.right);\n      fillColor = above;\n    }\n  }\n  fill(ctx, {line, target, color: fillColor, scale, property, clip});\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 clipHorizontal(ctx, target, clipX) {\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(clipX, firstPoint.y);\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(clipX, lastPoint.y);\n    }\n  }\n\n  ctx.lineTo(clipX, target.first().y);\n  ctx.closePath();\n  ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale, clip} = 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, clip, 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, clip, bounds) {\n  const chartArea = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n\n  if (property === 'x' || property === 'y') {\n    let left, top, right, bottom;\n\n    if (property === 'x') {\n      left = start;\n      top = chartArea.top;\n      right = end;\n      bottom = chartArea.bottom;\n    } else {\n      left = chartArea.left;\n      top = start;\n      right = chartArea.right;\n      bottom = end;\n    }\n\n    ctx.beginPath();\n\n    if (clip) {\n      left = Math.max(left, clip.left);\n      right = Math.min(right, clip.right);\n      top = Math.max(top, clip.top);\n      bottom = Math.min(bottom, clip.bottom);\n    }\n\n    ctx.rect(left, top, right - left, 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", "// node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js\nvar exports$2 = {};\nvar _dewExec$2 = false;\nfunction dew$2() {\n  if (_dewExec$2) return exports$2;\n  _dewExec$2 = true;\n  exports$2.byteLength = byteLength;\n  exports$2.toByteArray = toByteArray;\n  exports$2.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i5 = 0, len = code.length; i5 < len; ++i5) {\n    lookup[i5] = code[i5];\n    revLookup[code.charCodeAt(i5)] = i5;\n  }\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len2 = b64.length;\n    if (len2 % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len2;\n    var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n  function 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  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n    var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i6;\n    for (i6 = 0; i6 < len2; i6 += 4) {\n      tmp = revLookup[b64.charCodeAt(i6)] << 18 | revLookup[b64.charCodeAt(i6 + 1)] << 12 | revLookup[b64.charCodeAt(i6 + 2)] << 6 | revLookup[b64.charCodeAt(i6 + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i6)] << 2 | revLookup[b64.charCodeAt(i6 + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i6)] << 10 | revLookup[b64.charCodeAt(i6 + 1)] << 4 | revLookup[b64.charCodeAt(i6 + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i6 = start; i6 < end; i6 += 3) {\n      tmp = (uint8[i6] << 16 & 16711680) + (uint8[i6 + 1] << 8 & 65280) + (uint8[i6 + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len2 = uint8.length;\n    var extraBytes = len2 % 3;\n    var parts = [];\n    var maxChunkLength = 16383;\n    for (var i6 = 0, len22 = len2 - extraBytes; i6 < len22; i6 += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i6, i6 + maxChunkLength > len22 ? len22 : i6 + maxChunkLength));\n    }\n    if (extraBytes === 1) {\n      tmp = uint8[len2 - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2;\n}\nvar exports$1 = {};\nvar _dewExec$1 = false;\nfunction dew$1() {\n  if (_dewExec$1) return exports$1;\n  _dewExec$1 = true;\n  exports$1.read = function(buffer2, offset, isLE, mLen, nBytes) {\n    var e7, m4;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i5 = isLE ? nBytes - 1 : 0;\n    var d4 = isLE ? -1 : 1;\n    var s5 = buffer2[offset + i5];\n    i5 += d4;\n    e7 = s5 & (1 << -nBits) - 1;\n    s5 >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e7 = e7 * 256 + buffer2[offset + i5], i5 += d4, nBits -= 8) {\n    }\n    m4 = e7 & (1 << -nBits) - 1;\n    e7 >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m4 = m4 * 256 + buffer2[offset + i5], i5 += d4, nBits -= 8) {\n    }\n    if (e7 === 0) {\n      e7 = 1 - eBias;\n    } else if (e7 === eMax) {\n      return m4 ? NaN : (s5 ? -1 : 1) * Infinity;\n    } else {\n      m4 = m4 + Math.pow(2, mLen);\n      e7 = e7 - eBias;\n    }\n    return (s5 ? -1 : 1) * m4 * Math.pow(2, e7 - mLen);\n  };\n  exports$1.write = function(buffer2, value, offset, isLE, mLen, nBytes) {\n    var e7, m4, c5;\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 i5 = isLE ? 0 : nBytes - 1;\n    var d4 = isLE ? 1 : -1;\n    var s5 = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m4 = isNaN(value) ? 1 : 0;\n      e7 = eMax;\n    } else {\n      e7 = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c5 = Math.pow(2, -e7)) < 1) {\n        e7--;\n        c5 *= 2;\n      }\n      if (e7 + eBias >= 1) {\n        value += rt / c5;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c5 >= 2) {\n        e7++;\n        c5 /= 2;\n      }\n      if (e7 + eBias >= eMax) {\n        m4 = 0;\n        e7 = eMax;\n      } else if (e7 + eBias >= 1) {\n        m4 = (value * c5 - 1) * Math.pow(2, mLen);\n        e7 = e7 + eBias;\n      } else {\n        m4 = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e7 = 0;\n      }\n    }\n    for (; mLen >= 8; buffer2[offset + i5] = m4 & 255, i5 += d4, m4 /= 256, mLen -= 8) {\n    }\n    e7 = e7 << mLen | m4;\n    eLen += mLen;\n    for (; eLen > 0; buffer2[offset + i5] = e7 & 255, i5 += d4, e7 /= 256, eLen -= 8) {\n    }\n    buffer2[offset + i5 - d4] |= s5 * 128;\n  };\n  return exports$1;\n}\nvar exports = {};\nvar _dewExec = false;\nfunction dew() {\n  if (_dewExec) return exports;\n  _dewExec = true;\n  const base64 = dew$2();\n  const ieee754 = dew$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") : null;\n  exports.Buffer = Buffer;\n  exports.SlowBuffer = SlowBuffer;\n  exports.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports.kMaxLength = K_MAX_LENGTH;\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function() {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e7) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function() {\n      if (!Buffer.isBuffer(this)) return void 0;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function() {\n      if (!Buffer.isBuffer(this)) return void 0;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"');\n    }\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function Buffer(arg, encodingOrOffset, length) {\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError('The \"string\" argument must be of type string. Received type number');\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192;\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type number');\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b4 = fromObject(value);\n    if (b4) return b4;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof value);\n  }\n  Buffer.from = function(value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError('\"size\" argument must be of type number');\n    } else if (size < 0) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== void 0) {\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n  Buffer.alloc = function(size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n  Buffer.allocUnsafe = function(size) {\n    return allocUnsafe(size);\n  };\n  Buffer.allocUnsafeSlow = function(size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i5 = 0; i5 < length; i5 += 1) {\n      buf[i5] = array[i5] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError('\"offset\" is outside of buffer bounds');\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError('\"length\" is outside of buffer bounds');\n    }\n    let buf;\n    if (byteOffset === void 0 && length === void 0) {\n      buf = new Uint8Array(array);\n    } else if (length === void 0) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== void 0) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b4) {\n    return b4 != null && b4._isBuffer === true && b4 !== Buffer.prototype;\n  };\n  Buffer.compare = function compare(a5, b4) {\n    if (isInstance(a5, Uint8Array)) a5 = Buffer.from(a5, a5.offset, a5.byteLength);\n    if (isInstance(b4, Uint8Array)) b4 = Buffer.from(b4, b4.offset, b4.byteLength);\n    if (!Buffer.isBuffer(a5) || !Buffer.isBuffer(b4)) {\n      throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');\n    }\n    if (a5 === b4) return 0;\n    let x4 = a5.length;\n    let y5 = b4.length;\n    for (let i5 = 0, len = Math.min(x4, y5); i5 < len; ++i5) {\n      if (a5[i5] !== b4[i5]) {\n        x4 = a5[i5];\n        y5 = b4[i5];\n        break;\n      }\n    }\n    if (x4 < y5) return -1;\n    if (y5 < x4) return 1;\n    return 0;\n  };\n  Buffer.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  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers');\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i5;\n    if (length === void 0) {\n      length = 0;\n      for (i5 = 0; i5 < list.length; ++i5) {\n        length += list[i5].length;\n      }\n    }\n    const buffer2 = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i5 = 0; i5 < list.length; ++i5) {\n      let buf = list[i5];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer2.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer2, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer2, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError('\"list\" argument must be an Array of Buffers');\n      } else {\n        buf.copy(buffer2, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer2;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n    let 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          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) {\n            return mustMatch ? -1 : utf8ToBytes(string).length;\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n    if (start === void 0 || start < 0) {\n      start = 0;\n    }\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === void 0 || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.prototype._isBuffer = true;\n  function swap(b4, n5, m4) {\n    const i5 = b4[n5];\n    b4[n5] = b4[m4];\n    b4[m4] = i5;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i5 = 0; i5 < len; i5 += 2) {\n      swap(this, i5, i5 + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i5 = 0; i5 < len; i5 += 4) {\n      swap(this, i5, i5 + 3);\n      swap(this, i5 + 1, i5 + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i5 = 0; i5 < len; i5 += 8) {\n      swap(this, i5, i5 + 7);\n      swap(this, i5 + 1, i5 + 6);\n      swap(this, i5 + 2, i5 + 5);\n      swap(this, i5 + 3, i5 + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b4) {\n    if (!Buffer.isBuffer(b4)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b4) return true;\n    return Buffer.compare(this, b4) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target);\n    }\n    if (start === void 0) {\n      start = 0;\n    }\n    if (end === void 0) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === void 0) {\n      thisStart = 0;\n    }\n    if (thisEnd === void 0) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\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    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x4 = thisEnd - thisStart;\n    let y5 = end - start;\n    const len = Math.min(x4, y5);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i5 = 0; i5 < len; ++i5) {\n      if (thisCopy[i5] !== targetCopy[i5]) {\n        x4 = thisCopy[i5];\n        y5 = targetCopy[i5];\n        break;\n      }\n    }\n    if (x4 < y5) return -1;\n    if (y5 < x4) return 1;\n    return 0;\n  };\n  function bidirectionalIndexOf(buffer2, val, byteOffset, encoding, dir) {\n    if (buffer2.length === 0) return -1;\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset;\n    if (numberIsNaN(byteOffset)) {\n      byteOffset = dir ? 0 : buffer2.length - 1;\n    }\n    if (byteOffset < 0) byteOffset = buffer2.length + byteOffset;\n    if (byteOffset >= buffer2.length) {\n      if (dir) return -1;\n      else byteOffset = buffer2.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;\n      else return -1;\n    }\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n    if (Buffer.isBuffer(val)) {\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer2, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer2, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer2, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer2, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== void 0) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || 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    function read(buf, i6) {\n      if (indexSize === 1) {\n        return buf[i6];\n      } else {\n        return buf.readUInt16BE(i6 * indexSize);\n      }\n    }\n    let i5;\n    if (dir) {\n      let foundIndex = -1;\n      for (i5 = byteOffset; i5 < arrLength; i5++) {\n        if (read(arr, i5) === read(val, foundIndex === -1 ? 0 : i5 - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i5;\n          if (i5 - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i5 -= i5 - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i5 = byteOffset; i5 >= 0; i5--) {\n        let found = true;\n        for (let j4 = 0; j4 < valLength; j4++) {\n          if (read(arr, i5 + j4) !== read(val, j4)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i5;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf3(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const 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    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i5;\n    for (i5 = 0; i5 < length; ++i5) {\n      const parsed = parseInt(string.substr(i5 * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i5;\n      buf[offset + i5] = parsed;\n    }\n    return i5;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    if (offset === void 0) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n    } else if (length === void 0 && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === void 0) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = void 0;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === void 0 || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (; ; ) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function 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  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i5 = start;\n    while (i5 < end) {\n      const firstByte = buf[i5];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i5 + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i5 + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i5 + 1];\n            thirdByte = buf[i5 + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i5 + 1];\n            thirdByte = buf[i5 + 2];\n            fourthByte = buf[i5 + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i5 += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints);\n    }\n    let res = \"\";\n    let i5 = 0;\n    while (i5 < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i5, i5 += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i5 = start; i5 < end; ++i5) {\n      ret += String.fromCharCode(buf[i5] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i5 = start; i5 < end; ++i5) {\n      ret += String.fromCharCode(buf[i5]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i5 = start; i5 < end; ++i5) {\n      out += hexSliceLookupTable[buf[i5]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    for (let i5 = 0; i5 < bytes.length - 1; i5 += 2) {\n      res += String.fromCharCode(bytes[i5] + bytes[i5 + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === void 0 ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n  function 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  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength2, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i5 = 0;\n    while (++i5 < byteLength2 && (mul *= 256)) {\n      val += this[offset + i5] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength2, this.length);\n    }\n    let val = this[offset + --byteLength2];\n    let mul = 1;\n    while (byteLength2 > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength2] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === void 0 || last === void 0) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === void 0 || last === void 0) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength2, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i5 = 0;\n    while (++i5 < byteLength2 && (mul *= 256)) {\n      val += this[offset + i5] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength2, this.length);\n    let i5 = byteLength2;\n    let mul = 1;\n    let val = this[offset + --i5];\n    while (i5 > 0 && (mul *= 256)) {\n      val += this[offset + --i5] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === void 0 || last === void 0) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24);\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === void 0 || last === void 0) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function 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  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n      checkInt(this, value, offset, byteLength2, maxBytes, 0);\n    }\n    let mul = 1;\n    let i5 = 0;\n    this[offset] = value & 255;\n    while (++i5 < byteLength2 && (mul *= 256)) {\n      this[offset + i5] = value / mul & 255;\n    }\n    return offset + byteLength2;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n      checkInt(this, value, offset, byteLength2, maxBytes, 0);\n    }\n    let i5 = byteLength2 - 1;\n    let mul = 1;\n    this[offset + i5] = value & 255;\n    while (--i5 >= 0 && (mul *= 256)) {\n      this[offset + i5] = value / mul & 255;\n    }\n    return offset + byteLength2;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength2 - 1);\n      checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n    }\n    let i5 = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i5 < byteLength2 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i5 - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i5] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength2;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength2 - 1);\n      checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n    }\n    let i5 = byteLength2 - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i5] = value & 255;\n    while (--i5 >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i5 + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i5] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength2;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function 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  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\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    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\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 (encoding !== void 0 && 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      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === void 0 ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i5;\n    if (typeof val === \"number\") {\n      for (i5 = start; i5 < end; ++i5) {\n        this[i5] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError('The value \"' + val + '\" is invalid for argument \"value\"');\n      }\n      for (i5 = 0; i5 < end - start; ++i5) {\n        this[i5 + start] = bytes[i5 % len];\n      }\n    }\n    return this;\n  };\n  const errors = {};\n  function E4(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n        this.name = `${this.name} [${sym}]`;\n        this.stack;\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E4(\"ERR_BUFFER_OUT_OF_BOUNDS\", function(name2) {\n    if (name2) {\n      return `${name2} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E4(\"ERR_INVALID_ARG_TYPE\", function(name2, actual) {\n    return `The \"${name2}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E4(\"ERR_OUT_OF_RANGE\", function(str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i5 = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i5 >= start + 4; i5 -= 3) {\n      res = `_${val.slice(i5 - 3, i5)}${res}`;\n    }\n    return `${val.slice(0, i5)}${res}`;\n  }\n  function checkBounds(buf, offset, byteLength2) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) {\n      boundsError(offset, buf.length - (byteLength2 + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength2) {\n    if (value > max || value < min) {\n      const n5 = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n5} and < 2${n5} ** ${(byteLength2 + 1) * 8}${n5}`;\n        } else {\n          range = `>= -(2${n5} ** ${(byteLength2 + 1) * 8 - 1}${n5}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n5}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength2);\n  }\n  function validateNumber(value, name2) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name2, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    str = str.split(\"=\")[0];\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    if (str.length < 2) return \"\";\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i5 = 0; i5 < length; ++i5) {\n      codePoint = string.charCodeAt(i5);\n      if (codePoint > 55295 && codePoint < 57344) {\n        if (!leadSurrogate) {\n          if (codePoint > 56319) {\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i5 + 1 === length) {\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n          leadSurrogate = codePoint;\n          continue;\n        }\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i5 = 0; i5 < str.length; ++i5) {\n      byteArray.push(str.charCodeAt(i5) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c5, hi, lo;\n    const byteArray = [];\n    for (let i5 = 0; i5 < str.length; ++i5) {\n      if ((units -= 2) < 0) break;\n      c5 = str.charCodeAt(i5);\n      hi = c5 >> 8;\n      lo = c5 % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i5;\n    for (i5 = 0; i5 < length; ++i5) {\n      if (i5 + offset >= dst.length || i5 >= src.length) break;\n      dst[i5 + offset] = src[i5];\n    }\n    return i5;\n  }\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    return obj !== obj;\n  }\n  const hexSliceLookupTable = (function() {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i5 = 0; i5 < 16; ++i5) {\n      const i16 = i5 * 16;\n      for (let j4 = 0; j4 < 16; ++j4) {\n        table[i16 + j4] = alphabet[i5] + alphabet[j4];\n      }\n    }\n    return table;\n  })();\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports;\n}\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-CcCWfKp1.js\nvar exports$22 = {};\nvar _dewExec$12 = false;\nfunction dew$12() {\n  if (_dewExec$12) return exports$22;\n  _dewExec$12 = true;\n  var buffer2 = dew();\n  var Buffer = buffer2.Buffer;\n  function copyProps(src, dst) {\n    for (var key in src) {\n      dst[key] = src[key];\n    }\n  }\n  if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n    exports$22 = buffer2;\n  } else {\n    copyProps(buffer2, exports$22);\n    exports$22.Buffer = SafeBuffer;\n  }\n  function SafeBuffer(arg, encodingOrOffset, length) {\n    return Buffer(arg, encodingOrOffset, length);\n  }\n  SafeBuffer.prototype = Object.create(Buffer.prototype);\n  copyProps(Buffer, SafeBuffer);\n  SafeBuffer.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  SafeBuffer.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 !== void 0) {\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  SafeBuffer.allocUnsafe = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return Buffer(size);\n  };\n  SafeBuffer.allocUnsafeSlow = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return buffer2.SlowBuffer(size);\n  };\n  return exports$22;\n}\nvar exports$12 = {};\nvar _dewExec2 = false;\nfunction dew2() {\n  if (_dewExec2) return exports$12;\n  _dewExec2 = true;\n  var Buffer = dew$12().Buffer;\n  var isEncoding = Buffer.isEncoding || function(encoding) {\n    encoding = \"\" + encoding;\n    switch (encoding && encoding.toLowerCase()) {\n      case \"hex\":\n      case \"utf8\":\n      case \"utf-8\":\n      case \"ascii\":\n      case \"binary\":\n      case \"base64\":\n      case \"ucs2\":\n      case \"ucs-2\":\n      case \"utf16le\":\n      case \"utf-16le\":\n      case \"raw\":\n        return true;\n      default:\n        return false;\n    }\n  };\n  function _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;\n          enc = (\"\" + enc).toLowerCase();\n          retried = true;\n      }\n    }\n  }\n  function 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  exports$12.StringDecoder = StringDecoder2;\n  function StringDecoder2(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  StringDecoder2.prototype.write = function(buf) {\n    if (buf.length === 0) return \"\";\n    var r5;\n    var i5;\n    if (this.lastNeed) {\n      r5 = this.fillLast(buf);\n      if (r5 === void 0) return \"\";\n      i5 = this.lastNeed;\n      this.lastNeed = 0;\n    } else {\n      i5 = 0;\n    }\n    if (i5 < buf.length) return r5 ? r5 + this.text(buf, i5) : this.text(buf, i5);\n    return r5 || \"\";\n  };\n  StringDecoder2.prototype.end = utf8End;\n  StringDecoder2.prototype.text = utf8Text;\n  StringDecoder2.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  function utf8CheckByte(byte) {\n    if (byte <= 127) return 0;\n    else if (byte >> 5 === 6) return 2;\n    else if (byte >> 4 === 14) return 3;\n    else if (byte >> 3 === 30) return 4;\n    return byte >> 6 === 2 ? -1 : -2;\n  }\n  function utf8CheckIncomplete(self2, buf, i5) {\n    var j4 = buf.length - 1;\n    if (j4 < i5) return 0;\n    var nb = utf8CheckByte(buf[j4]);\n    if (nb >= 0) {\n      if (nb > 0) self2.lastNeed = nb - 1;\n      return nb;\n    }\n    if (--j4 < i5 || nb === -2) return 0;\n    nb = utf8CheckByte(buf[j4]);\n    if (nb >= 0) {\n      if (nb > 0) self2.lastNeed = nb - 2;\n      return nb;\n    }\n    if (--j4 < i5 || nb === -2) return 0;\n    nb = utf8CheckByte(buf[j4]);\n    if (nb >= 0) {\n      if (nb > 0) {\n        if (nb === 2) nb = 0;\n        else self2.lastNeed = nb - 3;\n      }\n      return nb;\n    }\n    return 0;\n  }\n  function utf8CheckExtraBytes(self2, buf, p5) {\n    if ((buf[0] & 192) !== 128) {\n      self2.lastNeed = 0;\n      return \"\\uFFFD\";\n    }\n    if (self2.lastNeed > 1 && buf.length > 1) {\n      if ((buf[1] & 192) !== 128) {\n        self2.lastNeed = 1;\n        return \"\\uFFFD\";\n      }\n      if (self2.lastNeed > 2 && buf.length > 2) {\n        if ((buf[2] & 192) !== 128) {\n          self2.lastNeed = 2;\n          return \"\\uFFFD\";\n        }\n      }\n    }\n  }\n  function utf8FillLast(buf) {\n    var p5 = this.lastTotal - this.lastNeed;\n    var r5 = utf8CheckExtraBytes(this, buf);\n    if (r5 !== void 0) return r5;\n    if (this.lastNeed <= buf.length) {\n      buf.copy(this.lastChar, p5, 0, this.lastNeed);\n      return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n    }\n    buf.copy(this.lastChar, p5, 0, buf.length);\n    this.lastNeed -= buf.length;\n  }\n  function utf8Text(buf, i5) {\n    var total = utf8CheckIncomplete(this, buf, i5);\n    if (!this.lastNeed) return buf.toString(\"utf8\", i5);\n    this.lastTotal = total;\n    var end = buf.length - (total - this.lastNeed);\n    buf.copy(this.lastChar, 0, end);\n    return buf.toString(\"utf8\", i5, end);\n  }\n  function utf8End(buf) {\n    var r5 = buf && buf.length ? this.write(buf) : \"\";\n    if (this.lastNeed) return r5 + \"\\uFFFD\";\n    return r5;\n  }\n  function utf16Text(buf, i5) {\n    if ((buf.length - i5) % 2 === 0) {\n      var r5 = buf.toString(\"utf16le\", i5);\n      if (r5) {\n        var c5 = r5.charCodeAt(r5.length - 1);\n        if (c5 >= 55296 && c5 <= 56319) {\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 r5.slice(0, -1);\n        }\n      }\n      return r5;\n    }\n    this.lastNeed = 1;\n    this.lastTotal = 2;\n    this.lastChar[0] = buf[buf.length - 1];\n    return buf.toString(\"utf16le\", i5, buf.length - 1);\n  }\n  function utf16End(buf) {\n    var r5 = buf && buf.length ? this.write(buf) : \"\";\n    if (this.lastNeed) {\n      var end = this.lastTotal - this.lastNeed;\n      return r5 + this.lastChar.toString(\"utf16le\", 0, end);\n    }\n    return r5;\n  }\n  function base64Text(buf, i5) {\n    var n5 = (buf.length - i5) % 3;\n    if (n5 === 0) return buf.toString(\"base64\", i5);\n    this.lastNeed = 3 - n5;\n    this.lastTotal = 3;\n    if (n5 === 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\", i5, buf.length - n5);\n  }\n  function base64End(buf) {\n    var r5 = buf && buf.length ? this.write(buf) : \"\";\n    if (this.lastNeed) return r5 + this.lastChar.toString(\"base64\", 0, 3 - this.lastNeed);\n    return r5;\n  }\n  function simpleWrite(buf) {\n    return buf.toString(this.encoding);\n  }\n  function simpleEnd(buf) {\n    return buf && buf.length ? this.write(buf) : \"\";\n  }\n  return exports$12;\n}\nvar exports2 = dew2();\nexports2[\"StringDecoder\"];\nvar StringDecoder = exports2.StringDecoder;\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-DEMDiNwt.js\nfunction unimplemented(name2) {\n  throw new Error(\"Node.js process \" + name2 + \" is not supported by JSPM core outside of Node.js\");\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue)\n    return;\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}\nfunction drainQueue() {\n  if (draining)\n    return;\n  var timeout = setTimeout(cleanUpNextTick, 0);\n  draining = true;\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    queueIndex = -1;\n    len = queue.length;\n  }\n  currentQueue = null;\n  draining = false;\n  clearTimeout(timeout);\n}\nfunction nextTick(fun) {\n  var args = new Array(arguments.length - 1);\n  if (arguments.length > 1) {\n    for (var i5 = 1; i5 < arguments.length; i5++)\n      args[i5 - 1] = arguments[i5];\n  }\n  queue.push(new Item(fun, args));\n  if (queue.length === 1 && !draining)\n    setTimeout(drainQueue, 0);\n}\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};\nvar title = \"browser\";\nvar arch = \"x64\";\nvar platform = \"browser\";\nvar env = {\n  PATH: \"/usr/bin\",\n  LANG: navigator.language + \".UTF-8\",\n  PWD: \"/\",\n  HOME: \"/home\",\n  TMP: \"/tmp\"\n};\nvar argv = [\"/usr/bin/node\"];\nvar execArgv = [];\nvar version = \"v16.8.0\";\nvar versions = {};\nvar emitWarning = function(message, type) {\n  console.warn((type ? type + \": \" : \"\") + message);\n};\nvar binding = function(name2) {\n  unimplemented(\"binding\");\n};\nvar umask = function(mask) {\n  return 0;\n};\nvar cwd = function() {\n  return \"/\";\n};\nvar chdir = function(dir) {\n};\nvar release = {\n  name: \"node\",\n  sourceUrl: \"\",\n  headersUrl: \"\",\n  libUrl: \"\"\n};\nfunction noop() {\n}\nvar _rawDebug = noop;\nvar moduleLoadList = [];\nfunction _linkedBinding(name2) {\n  unimplemented(\"_linkedBinding\");\n}\nvar domain = {};\nvar _exiting = false;\nvar config = {};\nfunction dlopen(name2) {\n  unimplemented(\"dlopen\");\n}\nfunction _getActiveRequests() {\n  return [];\n}\nfunction _getActiveHandles() {\n  return [];\n}\nvar reallyExit = noop;\nvar _kill = noop;\nvar cpuUsage = function() {\n  return {};\n};\nvar resourceUsage = cpuUsage;\nvar memoryUsage = cpuUsage;\nvar kill = noop;\nvar exit = noop;\nvar openStdin = noop;\nvar allowedNodeEnvironmentFlags = {};\nfunction assert(condition, message) {\n  if (!condition) throw new Error(message || \"assertion error\");\n}\nvar features = {\n  inspector: false,\n  debug: false,\n  uv: false,\n  ipv6: false,\n  tls_alpn: false,\n  tls_sni: false,\n  tls_ocsp: false,\n  tls: false,\n  cached_builtins: true\n};\nvar _fatalExceptions = noop;\nvar setUncaughtExceptionCaptureCallback = noop;\nfunction hasUncaughtExceptionCaptureCallback() {\n  return false;\n}\nvar _tickCallback = noop;\nvar _debugProcess = noop;\nvar _debugEnd = noop;\nvar _startProfilerIdleNotifier = noop;\nvar _stopProfilerIdleNotifier = noop;\nvar stdout = void 0;\nvar stderr = void 0;\nvar stdin = void 0;\nvar abort = noop;\nvar pid = 2;\nvar ppid = 1;\nvar execPath = \"/bin/usr/node\";\nvar debugPort = 9229;\nvar argv0 = \"node\";\nvar _preload_modules = [];\nvar setSourceMapsEnabled = noop;\nvar _performance = {\n  now: typeof performance !== \"undefined\" ? performance.now.bind(performance) : void 0,\n  timing: typeof performance !== \"undefined\" ? performance.timing : void 0\n};\nif (_performance.now === void 0) {\n  nowOffset = Date.now();\n  if (_performance.timing && _performance.timing.navigationStart) {\n    nowOffset = _performance.timing.navigationStart;\n  }\n  _performance.now = () => Date.now() - nowOffset;\n}\nvar nowOffset;\nfunction uptime() {\n  return _performance.now() / 1e3;\n}\nvar nanoPerSec = 1e9;\nfunction hrtime(previousTimestamp) {\n  var baseNow = Math.floor((Date.now() - _performance.now()) * 1e-3);\n  var clocktime = _performance.now() * 1e-3;\n  var seconds = Math.floor(clocktime) + baseNow;\n  var nanoseconds = Math.floor(clocktime % 1 * 1e9);\n  if (previousTimestamp) {\n    seconds = seconds - previousTimestamp[0];\n    nanoseconds = nanoseconds - previousTimestamp[1];\n    if (nanoseconds < 0) {\n      seconds--;\n      nanoseconds += nanoPerSec;\n    }\n  }\n  return [seconds, nanoseconds];\n}\nhrtime.bigint = function(time) {\n  var diff = hrtime(time);\n  if (typeof BigInt === \"undefined\") {\n    return diff[0] * nanoPerSec + diff[1];\n  }\n  return BigInt(diff[0] * nanoPerSec) + BigInt(diff[1]);\n};\nvar _maxListeners = 10;\nvar _events = {};\nvar _eventsCount = 0;\nfunction on() {\n  return process;\n}\nvar addListener = on;\nvar once = on;\nvar off = on;\nvar removeListener = on;\nvar removeAllListeners = on;\nvar emit = noop;\nvar prependListener = on;\nvar prependOnceListener = on;\nfunction listeners(name2) {\n  return [];\n}\nvar process = {\n  version,\n  versions,\n  arch,\n  platform,\n  release,\n  _rawDebug,\n  moduleLoadList,\n  binding,\n  _linkedBinding,\n  _events,\n  _eventsCount,\n  _maxListeners,\n  on,\n  addListener,\n  once,\n  off,\n  removeListener,\n  removeAllListeners,\n  emit,\n  prependListener,\n  prependOnceListener,\n  listeners,\n  domain,\n  _exiting,\n  config,\n  dlopen,\n  uptime,\n  _getActiveRequests,\n  _getActiveHandles,\n  reallyExit,\n  _kill,\n  cpuUsage,\n  resourceUsage,\n  memoryUsage,\n  kill,\n  exit,\n  openStdin,\n  allowedNodeEnvironmentFlags,\n  assert,\n  features,\n  _fatalExceptions,\n  setUncaughtExceptionCaptureCallback,\n  hasUncaughtExceptionCaptureCallback,\n  emitWarning,\n  nextTick,\n  _tickCallback,\n  _debugProcess,\n  _debugEnd,\n  _startProfilerIdleNotifier,\n  _stopProfilerIdleNotifier,\n  stdout,\n  stdin,\n  stderr,\n  abort,\n  umask,\n  chdir,\n  cwd,\n  env,\n  title,\n  argv,\n  execArgv,\n  pid,\n  ppid,\n  execPath,\n  debugPort,\n  hrtime,\n  argv0,\n  _preload_modules,\n  setSourceMapsEnabled\n};\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-CkFCi-G1.js\nvar exports3 = {};\nvar _dewExec3 = false;\nfunction dew3() {\n  if (_dewExec3) return exports3;\n  _dewExec3 = true;\n  if (typeof Object.create === \"function\") {\n    exports3 = 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    exports3 = function inherits(ctor, superCtor) {\n      if (superCtor) {\n        ctor.super_ = superCtor;\n        var TempCtor = function() {\n        };\n        TempCtor.prototype = superCtor.prototype;\n        ctor.prototype = new TempCtor();\n        ctor.prototype.constructor = ctor;\n      }\n    };\n  }\n  return exports3;\n}\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-tHuMsdT0.js\nvar e;\nvar t;\nvar n = \"object\" == typeof Reflect ? Reflect : null;\nvar r = n && \"function\" == typeof n.apply ? n.apply : function(e7, t5, n5) {\n  return Function.prototype.apply.call(e7, t5, n5);\n};\nt = n && \"function\" == typeof n.ownKeys ? n.ownKeys : Object.getOwnPropertySymbols ? function(e7) {\n  return Object.getOwnPropertyNames(e7).concat(Object.getOwnPropertySymbols(e7));\n} : function(e7) {\n  return Object.getOwnPropertyNames(e7);\n};\nvar i = Number.isNaN || function(e7) {\n  return e7 != e7;\n};\nfunction o() {\n  o.init.call(this);\n}\ne = o, o.EventEmitter = o, o.prototype._events = void 0, o.prototype._eventsCount = 0, o.prototype._maxListeners = void 0;\nvar s = 10;\nfunction u(e7) {\n  if (\"function\" != typeof e7) throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof e7);\n}\nfunction f(e7) {\n  return void 0 === e7._maxListeners ? o.defaultMaxListeners : e7._maxListeners;\n}\nfunction v(e7, t5, n5, r5) {\n  var i5, o5, s5, v5;\n  if (u(n5), void 0 === (o5 = e7._events) ? (o5 = e7._events = /* @__PURE__ */ Object.create(null), e7._eventsCount = 0) : (void 0 !== o5.newListener && (e7.emit(\"newListener\", t5, n5.listener ? n5.listener : n5), o5 = e7._events), s5 = o5[t5]), void 0 === s5) s5 = o5[t5] = n5, ++e7._eventsCount;\n  else if (\"function\" == typeof s5 ? s5 = o5[t5] = r5 ? [n5, s5] : [s5, n5] : r5 ? s5.unshift(n5) : s5.push(n5), (i5 = f(e7)) > 0 && s5.length > i5 && !s5.warned) {\n    s5.warned = true;\n    var a5 = new Error(\"Possible EventEmitter memory leak detected. \" + s5.length + \" \" + String(t5) + \" listeners added. Use emitter.setMaxListeners() to increase limit\");\n    a5.name = \"MaxListenersExceededWarning\", a5.emitter = e7, a5.type = t5, a5.count = s5.length, v5 = a5, console && console.warn && console.warn(v5);\n  }\n  return e7;\n}\nfunction a() {\n  if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = true, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);\n}\nfunction l(e7, t5, n5) {\n  var r5 = { fired: false, wrapFn: void 0, target: e7, type: t5, listener: n5 }, i5 = a.bind(r5);\n  return i5.listener = n5, r5.wrapFn = i5, i5;\n}\nfunction h(e7, t5, n5) {\n  var r5 = e7._events;\n  if (void 0 === r5) return [];\n  var i5 = r5[t5];\n  return void 0 === i5 ? [] : \"function\" == typeof i5 ? n5 ? [i5.listener || i5] : [i5] : n5 ? (function(e8) {\n    for (var t6 = new Array(e8.length), n6 = 0; n6 < t6.length; ++n6) t6[n6] = e8[n6].listener || e8[n6];\n    return t6;\n  })(i5) : c(i5, i5.length);\n}\nfunction p(e7) {\n  var t5 = this._events;\n  if (void 0 !== t5) {\n    var n5 = t5[e7];\n    if (\"function\" == typeof n5) return 1;\n    if (void 0 !== n5) return n5.length;\n  }\n  return 0;\n}\nfunction c(e7, t5) {\n  for (var n5 = new Array(t5), r5 = 0; r5 < t5; ++r5) n5[r5] = e7[r5];\n  return n5;\n}\nObject.defineProperty(o, \"defaultMaxListeners\", { enumerable: true, get: function() {\n  return s;\n}, set: function(e7) {\n  if (\"number\" != typeof e7 || e7 < 0 || i(e7)) throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + e7 + \".\");\n  s = e7;\n} }), o.init = function() {\n  void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;\n}, o.prototype.setMaxListeners = function(e7) {\n  if (\"number\" != typeof e7 || e7 < 0 || i(e7)) throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + e7 + \".\");\n  return this._maxListeners = e7, this;\n}, o.prototype.getMaxListeners = function() {\n  return f(this);\n}, o.prototype.emit = function(e7) {\n  for (var t5 = [], n5 = 1; n5 < arguments.length; n5++) t5.push(arguments[n5]);\n  var i5 = \"error\" === e7, o5 = this._events;\n  if (void 0 !== o5) i5 = i5 && void 0 === o5.error;\n  else if (!i5) return false;\n  if (i5) {\n    var s5;\n    if (t5.length > 0 && (s5 = t5[0]), s5 instanceof Error) throw s5;\n    var u5 = new Error(\"Unhandled error.\" + (s5 ? \" (\" + s5.message + \")\" : \"\"));\n    throw u5.context = s5, u5;\n  }\n  var f6 = o5[e7];\n  if (void 0 === f6) return false;\n  if (\"function\" == typeof f6) r(f6, this, t5);\n  else {\n    var v5 = f6.length, a5 = c(f6, v5);\n    for (n5 = 0; n5 < v5; ++n5) r(a5[n5], this, t5);\n  }\n  return true;\n}, o.prototype.addListener = function(e7, t5) {\n  return v(this, e7, t5, false);\n}, o.prototype.on = o.prototype.addListener, o.prototype.prependListener = function(e7, t5) {\n  return v(this, e7, t5, true);\n}, o.prototype.once = function(e7, t5) {\n  return u(t5), this.on(e7, l(this, e7, t5)), this;\n}, o.prototype.prependOnceListener = function(e7, t5) {\n  return u(t5), this.prependListener(e7, l(this, e7, t5)), this;\n}, o.prototype.removeListener = function(e7, t5) {\n  var n5, r5, i5, o5, s5;\n  if (u(t5), void 0 === (r5 = this._events)) return this;\n  if (void 0 === (n5 = r5[e7])) return this;\n  if (n5 === t5 || n5.listener === t5) 0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : (delete r5[e7], r5.removeListener && this.emit(\"removeListener\", e7, n5.listener || t5));\n  else if (\"function\" != typeof n5) {\n    for (i5 = -1, o5 = n5.length - 1; o5 >= 0; o5--) if (n5[o5] === t5 || n5[o5].listener === t5) {\n      s5 = n5[o5].listener, i5 = o5;\n      break;\n    }\n    if (i5 < 0) return this;\n    0 === i5 ? n5.shift() : !(function(e8, t6) {\n      for (; t6 + 1 < e8.length; t6++) e8[t6] = e8[t6 + 1];\n      e8.pop();\n    })(n5, i5), 1 === n5.length && (r5[e7] = n5[0]), void 0 !== r5.removeListener && this.emit(\"removeListener\", e7, s5 || t5);\n  }\n  return this;\n}, o.prototype.off = o.prototype.removeListener, o.prototype.removeAllListeners = function(e7) {\n  var t5, n5, r5;\n  if (void 0 === (n5 = this._events)) return this;\n  if (void 0 === n5.removeListener) return 0 === arguments.length ? (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0) : void 0 !== n5[e7] && (0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : delete n5[e7]), this;\n  if (0 === arguments.length) {\n    var i5, o5 = Object.keys(n5);\n    for (r5 = 0; r5 < o5.length; ++r5) \"removeListener\" !== (i5 = o5[r5]) && this.removeAllListeners(i5);\n    return this.removeAllListeners(\"removeListener\"), this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0, this;\n  }\n  if (\"function\" == typeof (t5 = n5[e7])) this.removeListener(e7, t5);\n  else if (void 0 !== t5) for (r5 = t5.length - 1; r5 >= 0; r5--) this.removeListener(e7, t5[r5]);\n  return this;\n}, o.prototype.listeners = function(e7) {\n  return h(this, e7, true);\n}, o.prototype.rawListeners = function(e7) {\n  return h(this, e7, false);\n}, o.listenerCount = function(e7, t5) {\n  return \"function\" == typeof e7.listenerCount ? e7.listenerCount(t5) : p.call(e7, t5);\n}, o.prototype.listenerCount = p, o.prototype.eventNames = function() {\n  return this._eventsCount > 0 ? t(this._events) : [];\n};\nvar y = e;\ny.EventEmitter;\ny.defaultMaxListeners;\ny.init;\ny.listenerCount;\ny.EventEmitter;\ny.defaultMaxListeners;\ny.init;\ny.listenerCount;\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-DtDiafJB.js\ny.once = function(emitter, event) {\n  return new Promise((resolve, reject) => {\n    function eventListener(...args) {\n      if (errorListener !== void 0) {\n        emitter.removeListener(\"error\", errorListener);\n      }\n      resolve(args);\n    }\n    let errorListener;\n    if (event !== \"error\") {\n      errorListener = (err) => {\n        emitter.removeListener(name, eventListener);\n        reject(err);\n      };\n      emitter.once(\"error\", errorListener);\n    }\n    emitter.once(event, eventListener);\n  });\n};\ny.on = function(emitter, event) {\n  const unconsumedEventValues = [];\n  const unconsumedPromises = [];\n  let error = null;\n  let finished = false;\n  const iterator = {\n    async next() {\n      const value = unconsumedEventValues.shift();\n      if (value) {\n        return createIterResult(value, false);\n      }\n      if (error) {\n        const p5 = Promise.reject(error);\n        error = null;\n        return p5;\n      }\n      if (finished) {\n        return createIterResult(void 0, true);\n      }\n      return new Promise((resolve, reject) => unconsumedPromises.push({ resolve, reject }));\n    },\n    async return() {\n      emitter.removeListener(event, eventHandler);\n      emitter.removeListener(\"error\", errorHandler);\n      finished = true;\n      for (const promise of unconsumedPromises) {\n        promise.resolve(createIterResult(void 0, true));\n      }\n      return createIterResult(void 0, true);\n    },\n    throw(err) {\n      error = err;\n      emitter.removeListener(event, eventHandler);\n      emitter.removeListener(\"error\", errorHandler);\n    },\n    [Symbol.asyncIterator]() {\n      return this;\n    }\n  };\n  emitter.on(event, eventHandler);\n  emitter.on(\"error\", errorHandler);\n  return iterator;\n  function eventHandler(...args) {\n    const promise = unconsumedPromises.shift();\n    if (promise) {\n      promise.resolve(createIterResult(args, false));\n    } else {\n      unconsumedEventValues.push(args);\n    }\n  }\n  function errorHandler(err) {\n    finished = true;\n    const toError = unconsumedPromises.shift();\n    if (toError) {\n      toError.reject(err);\n    } else {\n      error = err;\n    }\n    iterator.return();\n  }\n};\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-D3uu3VYh.js\nvar e$2;\nvar t$3;\nvar n$2;\nvar r$2 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar o$3 = e$2 = {};\nfunction i$2() {\n  throw new Error(\"setTimeout has not been defined\");\n}\nfunction u$2() {\n  throw new Error(\"clearTimeout has not been defined\");\n}\nfunction c$2(e7) {\n  if (t$3 === setTimeout) return setTimeout(e7, 0);\n  if ((t$3 === i$2 || !t$3) && setTimeout) return t$3 = setTimeout, setTimeout(e7, 0);\n  try {\n    return t$3(e7, 0);\n  } catch (n5) {\n    try {\n      return t$3.call(null, e7, 0);\n    } catch (n6) {\n      return t$3.call(this || r$2, e7, 0);\n    }\n  }\n}\n!(function() {\n  try {\n    t$3 = \"function\" == typeof setTimeout ? setTimeout : i$2;\n  } catch (e7) {\n    t$3 = i$2;\n  }\n  try {\n    n$2 = \"function\" == typeof clearTimeout ? clearTimeout : u$2;\n  } catch (e7) {\n    n$2 = u$2;\n  }\n})();\nvar l$2;\nvar s$1 = [];\nvar f$1 = false;\nvar a$1 = -1;\nfunction h$1() {\n  f$1 && l$2 && (f$1 = false, l$2.length ? s$1 = l$2.concat(s$1) : a$1 = -1, s$1.length && d$1());\n}\nfunction d$1() {\n  if (!f$1) {\n    var e7 = c$2(h$1);\n    f$1 = true;\n    for (var t5 = s$1.length; t5; ) {\n      for (l$2 = s$1, s$1 = []; ++a$1 < t5; ) l$2 && l$2[a$1].run();\n      a$1 = -1, t5 = s$1.length;\n    }\n    l$2 = null, f$1 = false, (function(e8) {\n      if (n$2 === clearTimeout) return clearTimeout(e8);\n      if ((n$2 === u$2 || !n$2) && clearTimeout) return n$2 = clearTimeout, clearTimeout(e8);\n      try {\n        n$2(e8);\n      } catch (t6) {\n        try {\n          return n$2.call(null, e8);\n        } catch (t7) {\n          return n$2.call(this || r$2, e8);\n        }\n      }\n    })(e7);\n  }\n}\nfunction m$1(e7, t5) {\n  (this || r$2).fun = e7, (this || r$2).array = t5;\n}\nfunction p$1() {\n}\no$3.nextTick = function(e7) {\n  var t5 = new Array(arguments.length - 1);\n  if (arguments.length > 1) for (var n5 = 1; n5 < arguments.length; n5++) t5[n5 - 1] = arguments[n5];\n  s$1.push(new m$1(e7, t5)), 1 !== s$1.length || f$1 || c$2(d$1);\n}, m$1.prototype.run = function() {\n  (this || r$2).fun.apply(null, (this || r$2).array);\n}, o$3.title = \"browser\", o$3.browser = true, o$3.env = {}, o$3.argv = [], o$3.version = \"\", o$3.versions = {}, o$3.on = p$1, o$3.addListener = p$1, o$3.once = p$1, o$3.off = p$1, o$3.removeListener = p$1, o$3.removeAllListeners = p$1, o$3.emit = p$1, o$3.prependListener = p$1, o$3.prependOnceListener = p$1, o$3.listeners = function(e7) {\n  return [];\n}, o$3.binding = function(e7) {\n  throw new Error(\"process.binding is not supported\");\n}, o$3.cwd = function() {\n  return \"/\";\n}, o$3.chdir = function(e7) {\n  throw new Error(\"process.chdir is not supported\");\n}, o$3.umask = function() {\n  return 0;\n};\nvar T$1 = e$2;\nT$1.addListener;\nT$1.argv;\nT$1.binding;\nT$1.browser;\nT$1.chdir;\nT$1.cwd;\nT$1.emit;\nT$1.env;\nT$1.listeners;\nT$1.nextTick;\nT$1.off;\nT$1.on;\nT$1.once;\nT$1.prependListener;\nT$1.prependOnceListener;\nT$1.removeAllListeners;\nT$1.removeListener;\nT$1.title;\nT$1.umask;\nT$1.version;\nT$1.versions;\nvar t2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.toStringTag;\nvar e2 = Object.prototype.toString;\nvar o2 = function(o5) {\n  return !(t2 && o5 && \"object\" == typeof o5 && Symbol.toStringTag in o5) && \"[object Arguments]\" === e2.call(o5);\n};\nvar n2 = function(t5) {\n  return !!o2(t5) || null !== t5 && \"object\" == typeof t5 && \"number\" == typeof t5.length && t5.length >= 0 && \"[object Array]\" !== e2.call(t5) && \"[object Function]\" === e2.call(t5.callee);\n};\nvar r2 = (function() {\n  return o2(arguments);\n})();\no2.isLegacyArguments = n2;\nvar l2 = r2 ? o2 : n2;\nvar t$1 = Object.prototype.toString;\nvar o$1 = Function.prototype.toString;\nvar n$1 = /^\\s*(?:function)?\\*/;\nvar e$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.toStringTag;\nvar r$1 = Object.getPrototypeOf;\nvar c2 = (function() {\n  if (!e$1) return false;\n  try {\n    return Function(\"return function*() {}\")();\n  } catch (t5) {\n  }\n})();\nvar u2 = c2 ? r$1(c2) : {};\nvar i2 = function(c5) {\n  return \"function\" == typeof c5 && (!!n$1.test(o$1.call(c5)) || (e$1 ? r$1(c5) === u2 : \"[object GeneratorFunction]\" === t$1.call(c5)));\n};\nvar t$2 = \"function\" == typeof Object.create ? function(t5, e7) {\n  e7 && (t5.super_ = e7, t5.prototype = Object.create(e7.prototype, { constructor: { value: t5, enumerable: false, writable: true, configurable: true } }));\n} : function(t5, e7) {\n  if (e7) {\n    t5.super_ = e7;\n    var o5 = function() {\n    };\n    o5.prototype = e7.prototype, t5.prototype = new o5(), t5.prototype.constructor = t5;\n  }\n};\nvar i$1 = function(e7) {\n  return e7 && \"object\" == typeof e7 && \"function\" == typeof e7.copy && \"function\" == typeof e7.fill && \"function\" == typeof e7.readUInt8;\n};\nvar o$2 = {};\nvar u$1 = i$1;\nvar f2 = l2;\nvar a2 = i2;\nfunction c$1(e7) {\n  return e7.call.bind(e7);\n}\nvar s2 = \"undefined\" != typeof BigInt;\nvar p2 = \"undefined\" != typeof Symbol;\nvar y2 = p2 && void 0 !== Symbol.toStringTag;\nvar l$1 = \"undefined\" != typeof Uint8Array;\nvar d = \"undefined\" != typeof ArrayBuffer;\nif (l$1 && y2) g = Object.getPrototypeOf(Uint8Array.prototype), b = c$1(Object.getOwnPropertyDescriptor(g, Symbol.toStringTag).get);\nvar g;\nvar b;\nvar m = c$1(Object.prototype.toString);\nvar h2 = c$1(Number.prototype.valueOf);\nvar j = c$1(String.prototype.valueOf);\nvar A = c$1(Boolean.prototype.valueOf);\nif (s2) w = c$1(BigInt.prototype.valueOf);\nvar w;\nif (p2) v2 = c$1(Symbol.prototype.valueOf);\nvar v2;\nfunction O(e7, t5) {\n  if (\"object\" != typeof e7) return false;\n  try {\n    return t5(e7), true;\n  } catch (e8) {\n    return false;\n  }\n}\nfunction S(e7) {\n  return l$1 && y2 ? void 0 !== b(e7) : B(e7) || k(e7) || E(e7) || D(e7) || U(e7) || P(e7) || x(e7) || I(e7) || M(e7) || z(e7) || F(e7);\n}\nfunction B(e7) {\n  return l$1 && y2 ? \"Uint8Array\" === b(e7) : \"[object Uint8Array]\" === m(e7) || u$1(e7) && void 0 !== e7.buffer;\n}\nfunction k(e7) {\n  return l$1 && y2 ? \"Uint8ClampedArray\" === b(e7) : \"[object Uint8ClampedArray]\" === m(e7);\n}\nfunction E(e7) {\n  return l$1 && y2 ? \"Uint16Array\" === b(e7) : \"[object Uint16Array]\" === m(e7);\n}\nfunction D(e7) {\n  return l$1 && y2 ? \"Uint32Array\" === b(e7) : \"[object Uint32Array]\" === m(e7);\n}\nfunction U(e7) {\n  return l$1 && y2 ? \"Int8Array\" === b(e7) : \"[object Int8Array]\" === m(e7);\n}\nfunction P(e7) {\n  return l$1 && y2 ? \"Int16Array\" === b(e7) : \"[object Int16Array]\" === m(e7);\n}\nfunction x(e7) {\n  return l$1 && y2 ? \"Int32Array\" === b(e7) : \"[object Int32Array]\" === m(e7);\n}\nfunction I(e7) {\n  return l$1 && y2 ? \"Float32Array\" === b(e7) : \"[object Float32Array]\" === m(e7);\n}\nfunction M(e7) {\n  return l$1 && y2 ? \"Float64Array\" === b(e7) : \"[object Float64Array]\" === m(e7);\n}\nfunction z(e7) {\n  return l$1 && y2 ? \"BigInt64Array\" === b(e7) : \"[object BigInt64Array]\" === m(e7);\n}\nfunction F(e7) {\n  return l$1 && y2 ? \"BigUint64Array\" === b(e7) : \"[object BigUint64Array]\" === m(e7);\n}\nfunction T(e7) {\n  return \"[object Map]\" === m(e7);\n}\nfunction N(e7) {\n  return \"[object Set]\" === m(e7);\n}\nfunction W(e7) {\n  return \"[object WeakMap]\" === m(e7);\n}\nfunction $(e7) {\n  return \"[object WeakSet]\" === m(e7);\n}\nfunction C(e7) {\n  return \"[object ArrayBuffer]\" === m(e7);\n}\nfunction V(e7) {\n  return \"undefined\" != typeof ArrayBuffer && (C.working ? C(e7) : e7 instanceof ArrayBuffer);\n}\nfunction G(e7) {\n  return \"[object DataView]\" === m(e7);\n}\nfunction R(e7) {\n  return \"undefined\" != typeof DataView && (G.working ? G(e7) : e7 instanceof DataView);\n}\nfunction J(e7) {\n  return \"[object SharedArrayBuffer]\" === m(e7);\n}\nfunction _(e7) {\n  return \"undefined\" != typeof SharedArrayBuffer && (J.working ? J(e7) : e7 instanceof SharedArrayBuffer);\n}\nfunction H(e7) {\n  return O(e7, h2);\n}\nfunction Z(e7) {\n  return O(e7, j);\n}\nfunction q(e7) {\n  return O(e7, A);\n}\nfunction K(e7) {\n  return s2 && O(e7, w);\n}\nfunction L(e7) {\n  return p2 && O(e7, v2);\n}\no$2.isArgumentsObject = f2, o$2.isGeneratorFunction = a2, o$2.isPromise = function(e7) {\n  return \"undefined\" != typeof Promise && e7 instanceof Promise || null !== e7 && \"object\" == typeof e7 && \"function\" == typeof e7.then && \"function\" == typeof e7.catch;\n}, o$2.isArrayBufferView = function(e7) {\n  return d && ArrayBuffer.isView ? ArrayBuffer.isView(e7) : S(e7) || R(e7);\n}, o$2.isTypedArray = S, o$2.isUint8Array = B, o$2.isUint8ClampedArray = k, o$2.isUint16Array = E, o$2.isUint32Array = D, o$2.isInt8Array = U, o$2.isInt16Array = P, o$2.isInt32Array = x, o$2.isFloat32Array = I, o$2.isFloat64Array = M, o$2.isBigInt64Array = z, o$2.isBigUint64Array = F, T.working = \"undefined\" != typeof Map && T(/* @__PURE__ */ new Map()), o$2.isMap = function(e7) {\n  return \"undefined\" != typeof Map && (T.working ? T(e7) : e7 instanceof Map);\n}, N.working = \"undefined\" != typeof Set && N(/* @__PURE__ */ new Set()), o$2.isSet = function(e7) {\n  return \"undefined\" != typeof Set && (N.working ? N(e7) : e7 instanceof Set);\n}, W.working = \"undefined\" != typeof WeakMap && W(/* @__PURE__ */ new WeakMap()), o$2.isWeakMap = function(e7) {\n  return \"undefined\" != typeof WeakMap && (W.working ? W(e7) : e7 instanceof WeakMap);\n}, $.working = \"undefined\" != typeof WeakSet && $(/* @__PURE__ */ new WeakSet()), o$2.isWeakSet = function(e7) {\n  return $(e7);\n}, C.working = \"undefined\" != typeof ArrayBuffer && C(new ArrayBuffer()), o$2.isArrayBuffer = V, G.working = \"undefined\" != typeof ArrayBuffer && \"undefined\" != typeof DataView && G(new DataView(new ArrayBuffer(1), 0, 1)), o$2.isDataView = R, J.working = \"undefined\" != typeof SharedArrayBuffer && J(new SharedArrayBuffer()), o$2.isSharedArrayBuffer = _, o$2.isAsyncFunction = function(e7) {\n  return \"[object AsyncFunction]\" === m(e7);\n}, o$2.isMapIterator = function(e7) {\n  return \"[object Map Iterator]\" === m(e7);\n}, o$2.isSetIterator = function(e7) {\n  return \"[object Set Iterator]\" === m(e7);\n}, o$2.isGeneratorObject = function(e7) {\n  return \"[object Generator]\" === m(e7);\n}, o$2.isWebAssemblyCompiledModule = function(e7) {\n  return \"[object WebAssembly.Module]\" === m(e7);\n}, o$2.isNumberObject = H, o$2.isStringObject = Z, o$2.isBooleanObject = q, o$2.isBigIntObject = K, o$2.isSymbolObject = L, o$2.isBoxedPrimitive = function(e7) {\n  return H(e7) || Z(e7) || q(e7) || K(e7) || L(e7);\n}, o$2.isAnyArrayBuffer = function(e7) {\n  return l$1 && (V(e7) || _(e7));\n}, [\"isProxy\", \"isExternal\", \"isModuleNamespaceObject\"].forEach((function(e7) {\n  Object.defineProperty(o$2, e7, { enumerable: false, value: function() {\n    throw new Error(e7 + \" is not supported in userland\");\n  } });\n}));\nvar Q = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar X = {};\nvar Y = T$1;\nvar ee = Object.getOwnPropertyDescriptors || function(e7) {\n  for (var t5 = Object.keys(e7), r5 = {}, n5 = 0; n5 < t5.length; n5++) r5[t5[n5]] = Object.getOwnPropertyDescriptor(e7, t5[n5]);\n  return r5;\n};\nvar te = /%[sdj%]/g;\nX.format = function(e7) {\n  if (!ge(e7)) {\n    for (var t5 = [], r5 = 0; r5 < arguments.length; r5++) t5.push(oe(arguments[r5]));\n    return t5.join(\" \");\n  }\n  r5 = 1;\n  for (var n5 = arguments, i5 = n5.length, o5 = String(e7).replace(te, (function(e8) {\n    if (\"%%\" === e8) return \"%\";\n    if (r5 >= i5) return e8;\n    switch (e8) {\n      case \"%s\":\n        return String(n5[r5++]);\n      case \"%d\":\n        return Number(n5[r5++]);\n      case \"%j\":\n        try {\n          return JSON.stringify(n5[r5++]);\n        } catch (e9) {\n          return \"[Circular]\";\n        }\n      default:\n        return e8;\n    }\n  })), u5 = n5[r5]; r5 < i5; u5 = n5[++r5]) le(u5) || !he(u5) ? o5 += \" \" + u5 : o5 += \" \" + oe(u5);\n  return o5;\n}, X.deprecate = function(e7, t5) {\n  if (void 0 !== Y && true === Y.noDeprecation) return e7;\n  if (void 0 === Y) return function() {\n    return X.deprecate(e7, t5).apply(this || Q, arguments);\n  };\n  var r5 = false;\n  return function() {\n    if (!r5) {\n      if (Y.throwDeprecation) throw new Error(t5);\n      Y.traceDeprecation ? console.trace(t5) : console.error(t5), r5 = true;\n    }\n    return e7.apply(this || Q, arguments);\n  };\n};\nvar re = {};\nvar ne = /^$/;\nif (Y.env.NODE_DEBUG) {\n  ie2 = Y.env.NODE_DEBUG;\n  ie2 = ie2.replace(/[|\\\\{}()[\\]^$+?.]/g, \"\\\\$&\").replace(/\\*/g, \".*\").replace(/,/g, \"$|^\").toUpperCase(), ne = new RegExp(\"^\" + ie2 + \"$\", \"i\");\n}\nvar ie2;\nfunction oe(e7, t5) {\n  var r5 = { seen: [], stylize: fe };\n  return arguments.length >= 3 && (r5.depth = arguments[2]), arguments.length >= 4 && (r5.colors = arguments[3]), ye(t5) ? r5.showHidden = t5 : t5 && X._extend(r5, t5), be(r5.showHidden) && (r5.showHidden = false), be(r5.depth) && (r5.depth = 2), be(r5.colors) && (r5.colors = false), be(r5.customInspect) && (r5.customInspect = true), r5.colors && (r5.stylize = ue), ae(r5, e7, r5.depth);\n}\nfunction ue(e7, t5) {\n  var r5 = oe.styles[t5];\n  return r5 ? \"\\x1B[\" + oe.colors[r5][0] + \"m\" + e7 + \"\\x1B[\" + oe.colors[r5][1] + \"m\" : e7;\n}\nfunction fe(e7, t5) {\n  return e7;\n}\nfunction ae(e7, t5, r5) {\n  if (e7.customInspect && t5 && we(t5.inspect) && t5.inspect !== X.inspect && (!t5.constructor || t5.constructor.prototype !== t5)) {\n    var n5 = t5.inspect(r5, e7);\n    return ge(n5) || (n5 = ae(e7, n5, r5)), n5;\n  }\n  var i5 = (function(e8, t6) {\n    if (be(t6)) return e8.stylize(\"undefined\", \"undefined\");\n    if (ge(t6)) {\n      var r6 = \"'\" + JSON.stringify(t6).replace(/^\"|\"$/g, \"\").replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + \"'\";\n      return e8.stylize(r6, \"string\");\n    }\n    if (de(t6)) return e8.stylize(\"\" + t6, \"number\");\n    if (ye(t6)) return e8.stylize(\"\" + t6, \"boolean\");\n    if (le(t6)) return e8.stylize(\"null\", \"null\");\n  })(e7, t5);\n  if (i5) return i5;\n  var o5 = Object.keys(t5), u5 = (function(e8) {\n    var t6 = {};\n    return e8.forEach((function(e9, r6) {\n      t6[e9] = true;\n    })), t6;\n  })(o5);\n  if (e7.showHidden && (o5 = Object.getOwnPropertyNames(t5)), Ae(t5) && (o5.indexOf(\"message\") >= 0 || o5.indexOf(\"description\") >= 0)) return ce(t5);\n  if (0 === o5.length) {\n    if (we(t5)) {\n      var f6 = t5.name ? \": \" + t5.name : \"\";\n      return e7.stylize(\"[Function\" + f6 + \"]\", \"special\");\n    }\n    if (me(t5)) return e7.stylize(RegExp.prototype.toString.call(t5), \"regexp\");\n    if (je(t5)) return e7.stylize(Date.prototype.toString.call(t5), \"date\");\n    if (Ae(t5)) return ce(t5);\n  }\n  var a5, c5 = \"\", s5 = false, p5 = [\"{\", \"}\"];\n  (pe(t5) && (s5 = true, p5 = [\"[\", \"]\"]), we(t5)) && (c5 = \" [Function\" + (t5.name ? \": \" + t5.name : \"\") + \"]\");\n  return me(t5) && (c5 = \" \" + RegExp.prototype.toString.call(t5)), je(t5) && (c5 = \" \" + Date.prototype.toUTCString.call(t5)), Ae(t5) && (c5 = \" \" + ce(t5)), 0 !== o5.length || s5 && 0 != t5.length ? r5 < 0 ? me(t5) ? e7.stylize(RegExp.prototype.toString.call(t5), \"regexp\") : e7.stylize(\"[Object]\", \"special\") : (e7.seen.push(t5), a5 = s5 ? (function(e8, t6, r6, n6, i6) {\n    for (var o6 = [], u6 = 0, f7 = t6.length; u6 < f7; ++u6) ke(t6, String(u6)) ? o6.push(se(e8, t6, r6, n6, String(u6), true)) : o6.push(\"\");\n    return i6.forEach((function(i7) {\n      i7.match(/^\\d+$/) || o6.push(se(e8, t6, r6, n6, i7, true));\n    })), o6;\n  })(e7, t5, r5, u5, o5) : o5.map((function(n6) {\n    return se(e7, t5, r5, u5, n6, s5);\n  })), e7.seen.pop(), (function(e8, t6, r6) {\n    var n6 = 0;\n    if (e8.reduce((function(e9, t7) {\n      return n6++, t7.indexOf(\"\\n\") >= 0 && n6++, e9 + t7.replace(/\\u001b\\[\\d\\d?m/g, \"\").length + 1;\n    }), 0) > 60) return r6[0] + (\"\" === t6 ? \"\" : t6 + \"\\n \") + \" \" + e8.join(\",\\n  \") + \" \" + r6[1];\n    return r6[0] + t6 + \" \" + e8.join(\", \") + \" \" + r6[1];\n  })(a5, c5, p5)) : p5[0] + c5 + p5[1];\n}\nfunction ce(e7) {\n  return \"[\" + Error.prototype.toString.call(e7) + \"]\";\n}\nfunction se(e7, t5, r5, n5, i5, o5) {\n  var u5, f6, a5;\n  if ((a5 = Object.getOwnPropertyDescriptor(t5, i5) || { value: t5[i5] }).get ? f6 = a5.set ? e7.stylize(\"[Getter/Setter]\", \"special\") : e7.stylize(\"[Getter]\", \"special\") : a5.set && (f6 = e7.stylize(\"[Setter]\", \"special\")), ke(n5, i5) || (u5 = \"[\" + i5 + \"]\"), f6 || (e7.seen.indexOf(a5.value) < 0 ? (f6 = le(r5) ? ae(e7, a5.value, null) : ae(e7, a5.value, r5 - 1)).indexOf(\"\\n\") > -1 && (f6 = o5 ? f6.split(\"\\n\").map((function(e8) {\n    return \"  \" + e8;\n  })).join(\"\\n\").substr(2) : \"\\n\" + f6.split(\"\\n\").map((function(e8) {\n    return \"   \" + e8;\n  })).join(\"\\n\")) : f6 = e7.stylize(\"[Circular]\", \"special\")), be(u5)) {\n    if (o5 && i5.match(/^\\d+$/)) return f6;\n    (u5 = JSON.stringify(\"\" + i5)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/) ? (u5 = u5.substr(1, u5.length - 2), u5 = e7.stylize(u5, \"name\")) : (u5 = u5.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\"), u5 = e7.stylize(u5, \"string\"));\n  }\n  return u5 + \": \" + f6;\n}\nfunction pe(e7) {\n  return Array.isArray(e7);\n}\nfunction ye(e7) {\n  return \"boolean\" == typeof e7;\n}\nfunction le(e7) {\n  return null === e7;\n}\nfunction de(e7) {\n  return \"number\" == typeof e7;\n}\nfunction ge(e7) {\n  return \"string\" == typeof e7;\n}\nfunction be(e7) {\n  return void 0 === e7;\n}\nfunction me(e7) {\n  return he(e7) && \"[object RegExp]\" === ve(e7);\n}\nfunction he(e7) {\n  return \"object\" == typeof e7 && null !== e7;\n}\nfunction je(e7) {\n  return he(e7) && \"[object Date]\" === ve(e7);\n}\nfunction Ae(e7) {\n  return he(e7) && (\"[object Error]\" === ve(e7) || e7 instanceof Error);\n}\nfunction we(e7) {\n  return \"function\" == typeof e7;\n}\nfunction ve(e7) {\n  return Object.prototype.toString.call(e7);\n}\nfunction Oe(e7) {\n  return e7 < 10 ? \"0\" + e7.toString(10) : e7.toString(10);\n}\nX.debuglog = function(e7) {\n  if (e7 = e7.toUpperCase(), !re[e7]) if (ne.test(e7)) {\n    var t5 = Y.pid;\n    re[e7] = function() {\n      var r5 = X.format.apply(X, arguments);\n      console.error(\"%s %d: %s\", e7, t5, r5);\n    };\n  } else re[e7] = function() {\n  };\n  return re[e7];\n}, X.inspect = oe, oe.colors = { bold: [1, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], white: [37, 39], grey: [90, 39], black: [30, 39], blue: [34, 39], cyan: [36, 39], green: [32, 39], magenta: [35, 39], red: [31, 39], yellow: [33, 39] }, oe.styles = { special: \"cyan\", number: \"yellow\", boolean: \"yellow\", undefined: \"grey\", null: \"bold\", string: \"green\", date: \"magenta\", regexp: \"red\" }, X.types = o$2, X.isArray = pe, X.isBoolean = ye, X.isNull = le, X.isNullOrUndefined = function(e7) {\n  return null == e7;\n}, X.isNumber = de, X.isString = ge, X.isSymbol = function(e7) {\n  return \"symbol\" == typeof e7;\n}, X.isUndefined = be, X.isRegExp = me, X.types.isRegExp = me, X.isObject = he, X.isDate = je, X.types.isDate = je, X.isError = Ae, X.types.isNativeError = Ae, X.isFunction = we, X.isPrimitive = function(e7) {\n  return null === e7 || \"boolean\" == typeof e7 || \"number\" == typeof e7 || \"string\" == typeof e7 || \"symbol\" == typeof e7 || void 0 === e7;\n}, X.isBuffer = i$1;\nvar Se = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nfunction Be() {\n  var e7 = /* @__PURE__ */ new Date(), t5 = [Oe(e7.getHours()), Oe(e7.getMinutes()), Oe(e7.getSeconds())].join(\":\");\n  return [e7.getDate(), Se[e7.getMonth()], t5].join(\" \");\n}\nfunction ke(e7, t5) {\n  return Object.prototype.hasOwnProperty.call(e7, t5);\n}\nX.log = function() {\n  console.log(\"%s - %s\", Be(), X.format.apply(X, arguments));\n}, X.inherits = t$2, X._extend = function(e7, t5) {\n  if (!t5 || !he(t5)) return e7;\n  for (var r5 = Object.keys(t5), n5 = r5.length; n5--; ) e7[r5[n5]] = t5[r5[n5]];\n  return e7;\n};\nvar Ee = \"undefined\" != typeof Symbol ? /* @__PURE__ */ Symbol(\"util.promisify.custom\") : void 0;\nfunction De(e7, t5) {\n  if (!e7) {\n    var r5 = new Error(\"Promise was rejected with a falsy value\");\n    r5.reason = e7, e7 = r5;\n  }\n  return t5(e7);\n}\nX.promisify = function(e7) {\n  if (\"function\" != typeof e7) throw new TypeError('The \"original\" argument must be of type Function');\n  if (Ee && e7[Ee]) {\n    var t5;\n    if (\"function\" != typeof (t5 = e7[Ee])) throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    return Object.defineProperty(t5, Ee, { value: t5, enumerable: false, writable: false, configurable: true }), t5;\n  }\n  function t5() {\n    for (var t6, r5, n5 = new Promise((function(e8, n6) {\n      t6 = e8, r5 = n6;\n    })), i5 = [], o5 = 0; o5 < arguments.length; o5++) i5.push(arguments[o5]);\n    i5.push((function(e8, n6) {\n      e8 ? r5(e8) : t6(n6);\n    }));\n    try {\n      e7.apply(this || Q, i5);\n    } catch (e8) {\n      r5(e8);\n    }\n    return n5;\n  }\n  return Object.setPrototypeOf(t5, Object.getPrototypeOf(e7)), Ee && Object.defineProperty(t5, Ee, { value: t5, enumerable: false, writable: false, configurable: true }), Object.defineProperties(t5, ee(e7));\n}, X.promisify.custom = Ee, X.callbackify = function(e7) {\n  if (\"function\" != typeof e7) throw new TypeError('The \"original\" argument must be of type Function');\n  function t5() {\n    for (var t6 = [], r5 = 0; r5 < arguments.length; r5++) t6.push(arguments[r5]);\n    var n5 = t6.pop();\n    if (\"function\" != typeof n5) throw new TypeError(\"The last argument must be of type Function\");\n    var i5 = this || Q, o5 = function() {\n      return n5.apply(i5, arguments);\n    };\n    e7.apply(this || Q, t6).then((function(e8) {\n      Y.nextTick(o5.bind(null, null, e8));\n    }), (function(e8) {\n      Y.nextTick(De.bind(null, e8, o5));\n    }));\n  }\n  return Object.setPrototypeOf(t5, Object.getPrototypeOf(e7)), Object.defineProperties(t5, ee(e7)), t5;\n};\nX._extend;\nX.callbackify;\nX.debuglog;\nX.deprecate;\nX.format;\nX.inherits;\nX.inspect;\nX.isArray;\nX.isBoolean;\nX.isBuffer;\nX.isDate;\nX.isError;\nX.isFunction;\nX.isNull;\nX.isNullOrUndefined;\nX.isNumber;\nX.isObject;\nX.isPrimitive;\nX.isRegExp;\nX.isString;\nX.isSymbol;\nX.isUndefined;\nX.log;\nX.promisify;\nX._extend;\nX.callbackify;\nX.debuglog;\nX.deprecate;\nX.format;\nX.inherits;\nX.inspect;\nX.isArray;\nX.isBoolean;\nX.isBuffer;\nX.isDate;\nX.isError;\nX.isFunction;\nX.isNull;\nX.isNullOrUndefined;\nX.isNumber;\nX.isObject;\nX.isPrimitive;\nX.isRegExp;\nX.isString;\nX.isSymbol;\nX.isUndefined;\nX.log;\nvar promisify = X.promisify;\nX.types;\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-b0rmRow7.js\nvar exports4 = {};\nvar _dewExec4 = false;\nvar _global = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew4() {\n  if (_dewExec4) return exports4;\n  _dewExec4 = true;\n  var process3 = exports4 = {};\n  var cachedSetTimeout;\n  var cachedClearTimeout;\n  function defaultSetTimout() {\n    throw new Error(\"setTimeout has not been defined\");\n  }\n  function 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 (e7) {\n      cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n      if (typeof clearTimeout === \"function\") {\n        cachedClearTimeout = clearTimeout;\n      } else {\n        cachedClearTimeout = defaultClearTimeout;\n      }\n    } catch (e7) {\n      cachedClearTimeout = defaultClearTimeout;\n    }\n  })();\n  function runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n      return setTimeout(fun, 0);\n    }\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n      cachedSetTimeout = setTimeout;\n      return setTimeout(fun, 0);\n    }\n    try {\n      return cachedSetTimeout(fun, 0);\n    } catch (e7) {\n      try {\n        return cachedSetTimeout.call(null, fun, 0);\n      } catch (e8) {\n        return cachedSetTimeout.call(this || _global, fun, 0);\n      }\n    }\n  }\n  function runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n      return clearTimeout(marker);\n    }\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n      cachedClearTimeout = clearTimeout;\n      return clearTimeout(marker);\n    }\n    try {\n      return cachedClearTimeout(marker);\n    } catch (e7) {\n      try {\n        return cachedClearTimeout.call(null, marker);\n      } catch (e8) {\n        return cachedClearTimeout.call(this || _global, marker);\n      }\n    }\n  }\n  var queue2 = [];\n  var draining2 = false;\n  var currentQueue2;\n  var queueIndex2 = -1;\n  function cleanUpNextTick2() {\n    if (!draining2 || !currentQueue2) {\n      return;\n    }\n    draining2 = false;\n    if (currentQueue2.length) {\n      queue2 = currentQueue2.concat(queue2);\n    } else {\n      queueIndex2 = -1;\n    }\n    if (queue2.length) {\n      drainQueue2();\n    }\n  }\n  function drainQueue2() {\n    if (draining2) {\n      return;\n    }\n    var timeout = runTimeout(cleanUpNextTick2);\n    draining2 = true;\n    var len = queue2.length;\n    while (len) {\n      currentQueue2 = queue2;\n      queue2 = [];\n      while (++queueIndex2 < len) {\n        if (currentQueue2) {\n          currentQueue2[queueIndex2].run();\n        }\n      }\n      queueIndex2 = -1;\n      len = queue2.length;\n    }\n    currentQueue2 = null;\n    draining2 = false;\n    runClearTimeout(timeout);\n  }\n  process3.nextTick = function(fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n      for (var i5 = 1; i5 < arguments.length; i5++) {\n        args[i5 - 1] = arguments[i5];\n      }\n    }\n    queue2.push(new Item2(fun, args));\n    if (queue2.length === 1 && !draining2) {\n      runTimeout(drainQueue2);\n    }\n  };\n  function Item2(fun, array) {\n    (this || _global).fun = fun;\n    (this || _global).array = array;\n  }\n  Item2.prototype.run = function() {\n    (this || _global).fun.apply(null, (this || _global).array);\n  };\n  process3.title = \"browser\";\n  process3.browser = true;\n  process3.env = {};\n  process3.argv = [];\n  process3.version = \"\";\n  process3.versions = {};\n  function noop2() {\n  }\n  process3.on = noop2;\n  process3.addListener = noop2;\n  process3.once = noop2;\n  process3.off = noop2;\n  process3.removeListener = noop2;\n  process3.removeAllListeners = noop2;\n  process3.emit = noop2;\n  process3.prependListener = noop2;\n  process3.prependOnceListener = noop2;\n  process3.listeners = function(name2) {\n    return [];\n  };\n  process3.binding = function(name2) {\n    throw new Error(\"process.binding is not supported\");\n  };\n  process3.cwd = function() {\n    return \"/\";\n  };\n  process3.chdir = function(dir) {\n    throw new Error(\"process.chdir is not supported\");\n  };\n  process3.umask = function() {\n    return 0;\n  };\n  return exports4;\n}\nvar process2 = dew4();\nprocess2.platform = \"browser\";\nprocess2.addListener;\nprocess2.argv;\nprocess2.binding;\nprocess2.browser;\nprocess2.chdir;\nprocess2.cwd;\nprocess2.emit;\nprocess2.env;\nprocess2.listeners;\nprocess2.nextTick;\nprocess2.off;\nprocess2.on;\nprocess2.once;\nprocess2.prependListener;\nprocess2.prependOnceListener;\nprocess2.removeAllListeners;\nprocess2.removeListener;\nprocess2.title;\nprocess2.umask;\nprocess2.version;\nprocess2.versions;\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-B738Er4n.js\nfor (r$13 = { byteLength: function(r5) {\n  var t5 = u$22(r5), e7 = t5[0], n5 = t5[1];\n  return 3 * (e7 + n5) / 4 - n5;\n}, toByteArray: function(r5) {\n  var t5, o5, a5 = u$22(r5), h5 = a5[0], c5 = a5[1], d4 = new n$23((function(r6, t6, e7) {\n    return 3 * (t6 + e7) / 4 - e7;\n  })(0, h5, c5)), f6 = 0, A4 = c5 > 0 ? h5 - 4 : h5;\n  for (o5 = 0; o5 < A4; o5 += 4) t5 = e$23[r5.charCodeAt(o5)] << 18 | e$23[r5.charCodeAt(o5 + 1)] << 12 | e$23[r5.charCodeAt(o5 + 2)] << 6 | e$23[r5.charCodeAt(o5 + 3)], d4[f6++] = t5 >> 16 & 255, d4[f6++] = t5 >> 8 & 255, d4[f6++] = 255 & t5;\n  2 === c5 && (t5 = e$23[r5.charCodeAt(o5)] << 2 | e$23[r5.charCodeAt(o5 + 1)] >> 4, d4[f6++] = 255 & t5);\n  1 === c5 && (t5 = e$23[r5.charCodeAt(o5)] << 10 | e$23[r5.charCodeAt(o5 + 1)] << 4 | e$23[r5.charCodeAt(o5 + 2)] >> 2, d4[f6++] = t5 >> 8 & 255, d4[f6++] = 255 & t5);\n  return d4;\n}, fromByteArray: function(r5) {\n  for (var e7, n5 = r5.length, o5 = n5 % 3, a5 = [], h5 = 0, u5 = n5 - o5; h5 < u5; h5 += 16383) a5.push(c$12(r5, h5, h5 + 16383 > u5 ? u5 : h5 + 16383));\n  1 === o5 ? (e7 = r5[n5 - 1], a5.push(t$13[e7 >> 2] + t$13[e7 << 4 & 63] + \"==\")) : 2 === o5 && (e7 = (r5[n5 - 2] << 8) + r5[n5 - 1], a5.push(t$13[e7 >> 10] + t$13[e7 >> 4 & 63] + t$13[e7 << 2 & 63] + \"=\"));\n  return a5.join(\"\");\n} }, t$13 = [], e$23 = [], n$23 = \"undefined\" != typeof Uint8Array ? Uint8Array : Array, o$23 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", a$13 = 0, h$13 = o$23.length; a$13 < h$13; ++a$13) t$13[a$13] = o$23[a$13], e$23[o$23.charCodeAt(a$13)] = a$13;\nvar r$13;\nvar t$13;\nvar e$23;\nvar n$23;\nvar o$23;\nvar a$13;\nvar h$13;\nfunction u$22(r5) {\n  var t5 = r5.length;\n  if (t5 % 4 > 0) throw new Error(\"Invalid string. Length must be a multiple of 4\");\n  var e7 = r5.indexOf(\"=\");\n  return -1 === e7 && (e7 = t5), [e7, e7 === t5 ? 0 : 4 - e7 % 4];\n}\nfunction c$12(r5, e7, n5) {\n  for (var o5, a5, h5 = [], u5 = e7; u5 < n5; u5 += 3) o5 = (r5[u5] << 16 & 16711680) + (r5[u5 + 1] << 8 & 65280) + (255 & r5[u5 + 2]), h5.push(t$13[(a5 = o5) >> 18 & 63] + t$13[a5 >> 12 & 63] + t$13[a5 >> 6 & 63] + t$13[63 & a5]);\n  return h5.join(\"\");\n}\ne$23[\"-\".charCodeAt(0)] = 62, e$23[\"_\".charCodeAt(0)] = 63;\nvar a$1$1 = { read: function(a5, t5, o5, r5, h5) {\n  var M4, f6, p5 = 8 * h5 - r5 - 1, w4 = (1 << p5) - 1, e7 = w4 >> 1, i5 = -7, N4 = o5 ? h5 - 1 : 0, n5 = o5 ? -1 : 1, u5 = a5[t5 + N4];\n  for (N4 += n5, M4 = u5 & (1 << -i5) - 1, u5 >>= -i5, i5 += p5; i5 > 0; M4 = 256 * M4 + a5[t5 + N4], N4 += n5, i5 -= 8) ;\n  for (f6 = M4 & (1 << -i5) - 1, M4 >>= -i5, i5 += r5; i5 > 0; f6 = 256 * f6 + a5[t5 + N4], N4 += n5, i5 -= 8) ;\n  if (0 === M4) M4 = 1 - e7;\n  else {\n    if (M4 === w4) return f6 ? NaN : 1 / 0 * (u5 ? -1 : 1);\n    f6 += Math.pow(2, r5), M4 -= e7;\n  }\n  return (u5 ? -1 : 1) * f6 * Math.pow(2, M4 - r5);\n}, write: function(a5, t5, o5, r5, h5, M4) {\n  var f6, p5, w4, e7 = 8 * M4 - h5 - 1, i5 = (1 << e7) - 1, N4 = i5 >> 1, n5 = 23 === h5 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, u5 = r5 ? 0 : M4 - 1, l5 = r5 ? 1 : -1, s5 = t5 < 0 || 0 === t5 && 1 / t5 < 0 ? 1 : 0;\n  for (t5 = Math.abs(t5), isNaN(t5) || t5 === 1 / 0 ? (p5 = isNaN(t5) ? 1 : 0, f6 = i5) : (f6 = Math.floor(Math.log(t5) / Math.LN2), t5 * (w4 = Math.pow(2, -f6)) < 1 && (f6--, w4 *= 2), (t5 += f6 + N4 >= 1 ? n5 / w4 : n5 * Math.pow(2, 1 - N4)) * w4 >= 2 && (f6++, w4 /= 2), f6 + N4 >= i5 ? (p5 = 0, f6 = i5) : f6 + N4 >= 1 ? (p5 = (t5 * w4 - 1) * Math.pow(2, h5), f6 += N4) : (p5 = t5 * Math.pow(2, N4 - 1) * Math.pow(2, h5), f6 = 0)); h5 >= 8; a5[o5 + u5] = 255 & p5, u5 += l5, p5 /= 256, h5 -= 8) ;\n  for (f6 = f6 << h5 | p5, e7 += h5; e7 > 0; a5[o5 + u5] = 255 & f6, u5 += l5, f6 /= 256, e7 -= 8) ;\n  a5[o5 + u5 - l5] |= 128 * s5;\n} };\nvar e$1$1 = {};\nvar n$1$1 = r$13;\nvar i$12 = a$1$1;\nvar o$1$1 = \"function\" == typeof Symbol && \"function\" == typeof Symbol.for ? /* @__PURE__ */ Symbol.for(\"nodejs.util.inspect.custom\") : null;\ne$1$1.Buffer = u$1$1, e$1$1.SlowBuffer = function(t5) {\n  +t5 != t5 && (t5 = 0);\n  return u$1$1.alloc(+t5);\n}, e$1$1.INSPECT_MAX_BYTES = 50;\nfunction f$2(t5) {\n  if (t5 > 2147483647) throw new RangeError('The value \"' + t5 + '\" is invalid for option \"size\"');\n  var r5 = new Uint8Array(t5);\n  return Object.setPrototypeOf(r5, u$1$1.prototype), r5;\n}\nfunction u$1$1(t5, r5, e7) {\n  if (\"number\" == typeof t5) {\n    if (\"string\" == typeof r5) throw new TypeError('The \"string\" argument must be of type string. Received type number');\n    return a$2(t5);\n  }\n  return s$12(t5, r5, e7);\n}\nfunction s$12(t5, r5, e7) {\n  if (\"string\" == typeof t5) return (function(t6, r6) {\n    \"string\" == typeof r6 && \"\" !== r6 || (r6 = \"utf8\");\n    if (!u$1$1.isEncoding(r6)) throw new TypeError(\"Unknown encoding: \" + r6);\n    var e8 = 0 | y3(t6, r6), n6 = f$2(e8), i6 = n6.write(t6, r6);\n    i6 !== e8 && (n6 = n6.slice(0, i6));\n    return n6;\n  })(t5, r5);\n  if (ArrayBuffer.isView(t5)) return p3(t5);\n  if (null == t5) throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof t5);\n  if (F2(t5, ArrayBuffer) || t5 && F2(t5.buffer, ArrayBuffer)) return c$1$1(t5, r5, e7);\n  if (\"undefined\" != typeof SharedArrayBuffer && (F2(t5, SharedArrayBuffer) || t5 && F2(t5.buffer, SharedArrayBuffer))) return c$1$1(t5, r5, e7);\n  if (\"number\" == typeof t5) throw new TypeError('The \"value\" argument must not be of type number. Received type number');\n  var n5 = t5.valueOf && t5.valueOf();\n  if (null != n5 && n5 !== t5) return u$1$1.from(n5, r5, e7);\n  var i5 = (function(t6) {\n    if (u$1$1.isBuffer(t6)) {\n      var r6 = 0 | l$12(t6.length), e8 = f$2(r6);\n      return 0 === e8.length || t6.copy(e8, 0, 0, r6), e8;\n    }\n    if (void 0 !== t6.length) return \"number\" != typeof t6.length || N2(t6.length) ? f$2(0) : p3(t6);\n    if (\"Buffer\" === t6.type && Array.isArray(t6.data)) return p3(t6.data);\n  })(t5);\n  if (i5) return i5;\n  if (\"undefined\" != typeof Symbol && null != Symbol.toPrimitive && \"function\" == typeof t5[Symbol.toPrimitive]) return u$1$1.from(t5[Symbol.toPrimitive](\"string\"), r5, e7);\n  throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof t5);\n}\nfunction h$1$1(t5) {\n  if (\"number\" != typeof t5) throw new TypeError('\"size\" argument must be of type number');\n  if (t5 < 0) throw new RangeError('The value \"' + t5 + '\" is invalid for option \"size\"');\n}\nfunction a$2(t5) {\n  return h$1$1(t5), f$2(t5 < 0 ? 0 : 0 | l$12(t5));\n}\nfunction p3(t5) {\n  for (var r5 = t5.length < 0 ? 0 : 0 | l$12(t5.length), e7 = f$2(r5), n5 = 0; n5 < r5; n5 += 1) e7[n5] = 255 & t5[n5];\n  return e7;\n}\nfunction c$1$1(t5, r5, e7) {\n  if (r5 < 0 || t5.byteLength < r5) throw new RangeError('\"offset\" is outside of buffer bounds');\n  if (t5.byteLength < r5 + (e7 || 0)) throw new RangeError('\"length\" is outside of buffer bounds');\n  var n5;\n  return n5 = void 0 === r5 && void 0 === e7 ? new Uint8Array(t5) : void 0 === e7 ? new Uint8Array(t5, r5) : new Uint8Array(t5, r5, e7), Object.setPrototypeOf(n5, u$1$1.prototype), n5;\n}\nfunction l$12(t5) {\n  if (t5 >= 2147483647) throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\" + 2147483647 .toString(16) + \" bytes\");\n  return 0 | t5;\n}\nfunction y3(t5, r5) {\n  if (u$1$1.isBuffer(t5)) return t5.length;\n  if (ArrayBuffer.isView(t5) || F2(t5, ArrayBuffer)) return t5.byteLength;\n  if (\"string\" != typeof t5) throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof t5);\n  var e7 = t5.length, n5 = arguments.length > 2 && true === arguments[2];\n  if (!n5 && 0 === e7) return 0;\n  for (var i5 = false; ; ) switch (r5) {\n    case \"ascii\":\n    case \"latin1\":\n    case \"binary\":\n      return e7;\n    case \"utf8\":\n    case \"utf-8\":\n      return _2(t5).length;\n    case \"ucs2\":\n    case \"ucs-2\":\n    case \"utf16le\":\n    case \"utf-16le\":\n      return 2 * e7;\n    case \"hex\":\n      return e7 >>> 1;\n    case \"base64\":\n      return z2(t5).length;\n    default:\n      if (i5) return n5 ? -1 : _2(t5).length;\n      r5 = (\"\" + r5).toLowerCase(), i5 = true;\n  }\n}\nfunction g2(t5, r5, e7) {\n  var n5 = false;\n  if ((void 0 === r5 || r5 < 0) && (r5 = 0), r5 > this.length) return \"\";\n  if ((void 0 === e7 || e7 > this.length) && (e7 = this.length), e7 <= 0) return \"\";\n  if ((e7 >>>= 0) <= (r5 >>>= 0)) return \"\";\n  for (t5 || (t5 = \"utf8\"); ; ) switch (t5) {\n    case \"hex\":\n      return O2(this, r5, e7);\n    case \"utf8\":\n    case \"utf-8\":\n      return I2(this, r5, e7);\n    case \"ascii\":\n      return S2(this, r5, e7);\n    case \"latin1\":\n    case \"binary\":\n      return R2(this, r5, e7);\n    case \"base64\":\n      return T2(this, r5, e7);\n    case \"ucs2\":\n    case \"ucs-2\":\n    case \"utf16le\":\n    case \"utf-16le\":\n      return L2(this, r5, e7);\n    default:\n      if (n5) throw new TypeError(\"Unknown encoding: \" + t5);\n      t5 = (t5 + \"\").toLowerCase(), n5 = true;\n  }\n}\nfunction w2(t5, r5, e7) {\n  var n5 = t5[r5];\n  t5[r5] = t5[e7], t5[e7] = n5;\n}\nfunction d2(t5, r5, e7, n5, i5) {\n  if (0 === t5.length) return -1;\n  if (\"string\" == typeof e7 ? (n5 = e7, e7 = 0) : e7 > 2147483647 ? e7 = 2147483647 : e7 < -2147483648 && (e7 = -2147483648), N2(e7 = +e7) && (e7 = i5 ? 0 : t5.length - 1), e7 < 0 && (e7 = t5.length + e7), e7 >= t5.length) {\n    if (i5) return -1;\n    e7 = t5.length - 1;\n  } else if (e7 < 0) {\n    if (!i5) return -1;\n    e7 = 0;\n  }\n  if (\"string\" == typeof r5 && (r5 = u$1$1.from(r5, n5)), u$1$1.isBuffer(r5)) return 0 === r5.length ? -1 : v3(t5, r5, e7, n5, i5);\n  if (\"number\" == typeof r5) return r5 &= 255, \"function\" == typeof Uint8Array.prototype.indexOf ? i5 ? Uint8Array.prototype.indexOf.call(t5, r5, e7) : Uint8Array.prototype.lastIndexOf.call(t5, r5, e7) : v3(t5, [r5], e7, n5, i5);\n  throw new TypeError(\"val must be string, number or Buffer\");\n}\nfunction v3(t5, r5, e7, n5, i5) {\n  var o5, f6 = 1, u5 = t5.length, s5 = r5.length;\n  if (void 0 !== n5 && (\"ucs2\" === (n5 = String(n5).toLowerCase()) || \"ucs-2\" === n5 || \"utf16le\" === n5 || \"utf-16le\" === n5)) {\n    if (t5.length < 2 || r5.length < 2) return -1;\n    f6 = 2, u5 /= 2, s5 /= 2, e7 /= 2;\n  }\n  function h5(t6, r6) {\n    return 1 === f6 ? t6[r6] : t6.readUInt16BE(r6 * f6);\n  }\n  if (i5) {\n    var a5 = -1;\n    for (o5 = e7; o5 < u5; o5++) if (h5(t5, o5) === h5(r5, -1 === a5 ? 0 : o5 - a5)) {\n      if (-1 === a5 && (a5 = o5), o5 - a5 + 1 === s5) return a5 * f6;\n    } else -1 !== a5 && (o5 -= o5 - a5), a5 = -1;\n  } else for (e7 + s5 > u5 && (e7 = u5 - s5), o5 = e7; o5 >= 0; o5--) {\n    for (var p5 = true, c5 = 0; c5 < s5; c5++) if (h5(t5, o5 + c5) !== h5(r5, c5)) {\n      p5 = false;\n      break;\n    }\n    if (p5) return o5;\n  }\n  return -1;\n}\nfunction b2(t5, r5, e7, n5) {\n  e7 = Number(e7) || 0;\n  var i5 = t5.length - e7;\n  n5 ? (n5 = Number(n5)) > i5 && (n5 = i5) : n5 = i5;\n  var o5 = r5.length;\n  n5 > o5 / 2 && (n5 = o5 / 2);\n  for (var f6 = 0; f6 < n5; ++f6) {\n    var u5 = parseInt(r5.substr(2 * f6, 2), 16);\n    if (N2(u5)) return f6;\n    t5[e7 + f6] = u5;\n  }\n  return f6;\n}\nfunction m2(t5, r5, e7, n5) {\n  return D2(_2(r5, t5.length - e7), t5, e7, n5);\n}\nfunction E2(t5, r5, e7, n5) {\n  return D2((function(t6) {\n    for (var r6 = [], e8 = 0; e8 < t6.length; ++e8) r6.push(255 & t6.charCodeAt(e8));\n    return r6;\n  })(r5), t5, e7, n5);\n}\nfunction B2(t5, r5, e7, n5) {\n  return E2(t5, r5, e7, n5);\n}\nfunction A2(t5, r5, e7, n5) {\n  return D2(z2(r5), t5, e7, n5);\n}\nfunction U2(t5, r5, e7, n5) {\n  return D2((function(t6, r6) {\n    for (var e8, n6, i5, o5 = [], f6 = 0; f6 < t6.length && !((r6 -= 2) < 0); ++f6) e8 = t6.charCodeAt(f6), n6 = e8 >> 8, i5 = e8 % 256, o5.push(i5), o5.push(n6);\n    return o5;\n  })(r5, t5.length - e7), t5, e7, n5);\n}\nfunction T2(t5, r5, e7) {\n  return 0 === r5 && e7 === t5.length ? n$1$1.fromByteArray(t5) : n$1$1.fromByteArray(t5.slice(r5, e7));\n}\nfunction I2(t5, r5, e7) {\n  e7 = Math.min(t5.length, e7);\n  for (var n5 = [], i5 = r5; i5 < e7; ) {\n    var o5, f6, u5, s5, h5 = t5[i5], a5 = null, p5 = h5 > 239 ? 4 : h5 > 223 ? 3 : h5 > 191 ? 2 : 1;\n    if (i5 + p5 <= e7) switch (p5) {\n      case 1:\n        h5 < 128 && (a5 = h5);\n        break;\n      case 2:\n        128 == (192 & (o5 = t5[i5 + 1])) && (s5 = (31 & h5) << 6 | 63 & o5) > 127 && (a5 = s5);\n        break;\n      case 3:\n        o5 = t5[i5 + 1], f6 = t5[i5 + 2], 128 == (192 & o5) && 128 == (192 & f6) && (s5 = (15 & h5) << 12 | (63 & o5) << 6 | 63 & f6) > 2047 && (s5 < 55296 || s5 > 57343) && (a5 = s5);\n        break;\n      case 4:\n        o5 = t5[i5 + 1], f6 = t5[i5 + 2], u5 = t5[i5 + 3], 128 == (192 & o5) && 128 == (192 & f6) && 128 == (192 & u5) && (s5 = (15 & h5) << 18 | (63 & o5) << 12 | (63 & f6) << 6 | 63 & u5) > 65535 && s5 < 1114112 && (a5 = s5);\n    }\n    null === a5 ? (a5 = 65533, p5 = 1) : a5 > 65535 && (a5 -= 65536, n5.push(a5 >>> 10 & 1023 | 55296), a5 = 56320 | 1023 & a5), n5.push(a5), i5 += p5;\n  }\n  return (function(t6) {\n    var r6 = t6.length;\n    if (r6 <= 4096) return String.fromCharCode.apply(String, t6);\n    var e8 = \"\", n6 = 0;\n    for (; n6 < r6; ) e8 += String.fromCharCode.apply(String, t6.slice(n6, n6 += 4096));\n    return e8;\n  })(n5);\n}\ne$1$1.kMaxLength = 2147483647, u$1$1.TYPED_ARRAY_SUPPORT = (function() {\n  try {\n    var t5 = new Uint8Array(1), r5 = { foo: function() {\n      return 42;\n    } };\n    return Object.setPrototypeOf(r5, Uint8Array.prototype), Object.setPrototypeOf(t5, r5), 42 === t5.foo();\n  } catch (t6) {\n    return false;\n  }\n})(), u$1$1.TYPED_ARRAY_SUPPORT || \"undefined\" == typeof console || \"function\" != typeof console.error || console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"), Object.defineProperty(u$1$1.prototype, \"parent\", { enumerable: true, get: function() {\n  if (u$1$1.isBuffer(this)) return this.buffer;\n} }), Object.defineProperty(u$1$1.prototype, \"offset\", { enumerable: true, get: function() {\n  if (u$1$1.isBuffer(this)) return this.byteOffset;\n} }), u$1$1.poolSize = 8192, u$1$1.from = function(t5, r5, e7) {\n  return s$12(t5, r5, e7);\n}, Object.setPrototypeOf(u$1$1.prototype, Uint8Array.prototype), Object.setPrototypeOf(u$1$1, Uint8Array), u$1$1.alloc = function(t5, r5, e7) {\n  return (function(t6, r6, e8) {\n    return h$1$1(t6), t6 <= 0 ? f$2(t6) : void 0 !== r6 ? \"string\" == typeof e8 ? f$2(t6).fill(r6, e8) : f$2(t6).fill(r6) : f$2(t6);\n  })(t5, r5, e7);\n}, u$1$1.allocUnsafe = function(t5) {\n  return a$2(t5);\n}, u$1$1.allocUnsafeSlow = function(t5) {\n  return a$2(t5);\n}, u$1$1.isBuffer = function(t5) {\n  return null != t5 && true === t5._isBuffer && t5 !== u$1$1.prototype;\n}, u$1$1.compare = function(t5, r5) {\n  if (F2(t5, Uint8Array) && (t5 = u$1$1.from(t5, t5.offset, t5.byteLength)), F2(r5, Uint8Array) && (r5 = u$1$1.from(r5, r5.offset, r5.byteLength)), !u$1$1.isBuffer(t5) || !u$1$1.isBuffer(r5)) throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');\n  if (t5 === r5) return 0;\n  for (var e7 = t5.length, n5 = r5.length, i5 = 0, o5 = Math.min(e7, n5); i5 < o5; ++i5) if (t5[i5] !== r5[i5]) {\n    e7 = t5[i5], n5 = r5[i5];\n    break;\n  }\n  return e7 < n5 ? -1 : n5 < e7 ? 1 : 0;\n}, u$1$1.isEncoding = function(t5) {\n  switch (String(t5).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}, u$1$1.concat = function(t5, r5) {\n  if (!Array.isArray(t5)) throw new TypeError('\"list\" argument must be an Array of Buffers');\n  if (0 === t5.length) return u$1$1.alloc(0);\n  var e7;\n  if (void 0 === r5) for (r5 = 0, e7 = 0; e7 < t5.length; ++e7) r5 += t5[e7].length;\n  var n5 = u$1$1.allocUnsafe(r5), i5 = 0;\n  for (e7 = 0; e7 < t5.length; ++e7) {\n    var o5 = t5[e7];\n    if (F2(o5, Uint8Array) && (o5 = u$1$1.from(o5)), !u$1$1.isBuffer(o5)) throw new TypeError('\"list\" argument must be an Array of Buffers');\n    o5.copy(n5, i5), i5 += o5.length;\n  }\n  return n5;\n}, u$1$1.byteLength = y3, u$1$1.prototype._isBuffer = true, u$1$1.prototype.swap16 = function() {\n  var t5 = this.length;\n  if (t5 % 2 != 0) throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n  for (var r5 = 0; r5 < t5; r5 += 2) w2(this, r5, r5 + 1);\n  return this;\n}, u$1$1.prototype.swap32 = function() {\n  var t5 = this.length;\n  if (t5 % 4 != 0) throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n  for (var r5 = 0; r5 < t5; r5 += 4) w2(this, r5, r5 + 3), w2(this, r5 + 1, r5 + 2);\n  return this;\n}, u$1$1.prototype.swap64 = function() {\n  var t5 = this.length;\n  if (t5 % 8 != 0) throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n  for (var r5 = 0; r5 < t5; r5 += 8) w2(this, r5, r5 + 7), w2(this, r5 + 1, r5 + 6), w2(this, r5 + 2, r5 + 5), w2(this, r5 + 3, r5 + 4);\n  return this;\n}, u$1$1.prototype.toString = function() {\n  var t5 = this.length;\n  return 0 === t5 ? \"\" : 0 === arguments.length ? I2(this, 0, t5) : g2.apply(this, arguments);\n}, u$1$1.prototype.toLocaleString = u$1$1.prototype.toString, u$1$1.prototype.equals = function(t5) {\n  if (!u$1$1.isBuffer(t5)) throw new TypeError(\"Argument must be a Buffer\");\n  return this === t5 || 0 === u$1$1.compare(this, t5);\n}, u$1$1.prototype.inspect = function() {\n  var t5 = \"\", r5 = e$1$1.INSPECT_MAX_BYTES;\n  return t5 = this.toString(\"hex\", 0, r5).replace(/(.{2})/g, \"$1 \").trim(), this.length > r5 && (t5 += \" ... \"), \"<Buffer \" + t5 + \">\";\n}, o$1$1 && (u$1$1.prototype[o$1$1] = u$1$1.prototype.inspect), u$1$1.prototype.compare = function(t5, r5, e7, n5, i5) {\n  if (F2(t5, Uint8Array) && (t5 = u$1$1.from(t5, t5.offset, t5.byteLength)), !u$1$1.isBuffer(t5)) throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type ' + typeof t5);\n  if (void 0 === r5 && (r5 = 0), void 0 === e7 && (e7 = t5 ? t5.length : 0), void 0 === n5 && (n5 = 0), void 0 === i5 && (i5 = this.length), r5 < 0 || e7 > t5.length || n5 < 0 || i5 > this.length) throw new RangeError(\"out of range index\");\n  if (n5 >= i5 && r5 >= e7) return 0;\n  if (n5 >= i5) return -1;\n  if (r5 >= e7) return 1;\n  if (this === t5) return 0;\n  for (var o5 = (i5 >>>= 0) - (n5 >>>= 0), f6 = (e7 >>>= 0) - (r5 >>>= 0), s5 = Math.min(o5, f6), h5 = this.slice(n5, i5), a5 = t5.slice(r5, e7), p5 = 0; p5 < s5; ++p5) if (h5[p5] !== a5[p5]) {\n    o5 = h5[p5], f6 = a5[p5];\n    break;\n  }\n  return o5 < f6 ? -1 : f6 < o5 ? 1 : 0;\n}, u$1$1.prototype.includes = function(t5, r5, e7) {\n  return -1 !== this.indexOf(t5, r5, e7);\n}, u$1$1.prototype.indexOf = function(t5, r5, e7) {\n  return d2(this, t5, r5, e7, true);\n}, u$1$1.prototype.lastIndexOf = function(t5, r5, e7) {\n  return d2(this, t5, r5, e7, false);\n}, u$1$1.prototype.write = function(t5, r5, e7, n5) {\n  if (void 0 === r5) n5 = \"utf8\", e7 = this.length, r5 = 0;\n  else if (void 0 === e7 && \"string\" == typeof r5) n5 = r5, e7 = this.length, r5 = 0;\n  else {\n    if (!isFinite(r5)) throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    r5 >>>= 0, isFinite(e7) ? (e7 >>>= 0, void 0 === n5 && (n5 = \"utf8\")) : (n5 = e7, e7 = void 0);\n  }\n  var i5 = this.length - r5;\n  if ((void 0 === e7 || e7 > i5) && (e7 = i5), t5.length > 0 && (e7 < 0 || r5 < 0) || r5 > this.length) throw new RangeError(\"Attempt to write outside buffer bounds\");\n  n5 || (n5 = \"utf8\");\n  for (var o5 = false; ; ) switch (n5) {\n    case \"hex\":\n      return b2(this, t5, r5, e7);\n    case \"utf8\":\n    case \"utf-8\":\n      return m2(this, t5, r5, e7);\n    case \"ascii\":\n      return E2(this, t5, r5, e7);\n    case \"latin1\":\n    case \"binary\":\n      return B2(this, t5, r5, e7);\n    case \"base64\":\n      return A2(this, t5, r5, e7);\n    case \"ucs2\":\n    case \"ucs-2\":\n    case \"utf16le\":\n    case \"utf-16le\":\n      return U2(this, t5, r5, e7);\n    default:\n      if (o5) throw new TypeError(\"Unknown encoding: \" + n5);\n      n5 = (\"\" + n5).toLowerCase(), o5 = true;\n  }\n}, u$1$1.prototype.toJSON = function() {\n  return { type: \"Buffer\", data: Array.prototype.slice.call(this._arr || this, 0) };\n};\nfunction S2(t5, r5, e7) {\n  var n5 = \"\";\n  e7 = Math.min(t5.length, e7);\n  for (var i5 = r5; i5 < e7; ++i5) n5 += String.fromCharCode(127 & t5[i5]);\n  return n5;\n}\nfunction R2(t5, r5, e7) {\n  var n5 = \"\";\n  e7 = Math.min(t5.length, e7);\n  for (var i5 = r5; i5 < e7; ++i5) n5 += String.fromCharCode(t5[i5]);\n  return n5;\n}\nfunction O2(t5, r5, e7) {\n  var n5 = t5.length;\n  (!r5 || r5 < 0) && (r5 = 0), (!e7 || e7 < 0 || e7 > n5) && (e7 = n5);\n  for (var i5 = \"\", o5 = r5; o5 < e7; ++o5) i5 += Y2[t5[o5]];\n  return i5;\n}\nfunction L2(t5, r5, e7) {\n  for (var n5 = t5.slice(r5, e7), i5 = \"\", o5 = 0; o5 < n5.length; o5 += 2) i5 += String.fromCharCode(n5[o5] + 256 * n5[o5 + 1]);\n  return i5;\n}\nfunction x2(t5, r5, e7) {\n  if (t5 % 1 != 0 || t5 < 0) throw new RangeError(\"offset is not uint\");\n  if (t5 + r5 > e7) throw new RangeError(\"Trying to access beyond buffer length\");\n}\nfunction C2(t5, r5, e7, n5, i5, o5) {\n  if (!u$1$1.isBuffer(t5)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n  if (r5 > i5 || r5 < o5) throw new RangeError('\"value\" argument is out of bounds');\n  if (e7 + n5 > t5.length) throw new RangeError(\"Index out of range\");\n}\nfunction P2(t5, r5, e7, n5, i5, o5) {\n  if (e7 + n5 > t5.length) throw new RangeError(\"Index out of range\");\n  if (e7 < 0) throw new RangeError(\"Index out of range\");\n}\nfunction k2(t5, r5, e7, n5, o5) {\n  return r5 = +r5, e7 >>>= 0, o5 || P2(t5, 0, e7, 4), i$12.write(t5, r5, e7, n5, 23, 4), e7 + 4;\n}\nfunction M2(t5, r5, e7, n5, o5) {\n  return r5 = +r5, e7 >>>= 0, o5 || P2(t5, 0, e7, 8), i$12.write(t5, r5, e7, n5, 52, 8), e7 + 8;\n}\nu$1$1.prototype.slice = function(t5, r5) {\n  var e7 = this.length;\n  (t5 = ~~t5) < 0 ? (t5 += e7) < 0 && (t5 = 0) : t5 > e7 && (t5 = e7), (r5 = void 0 === r5 ? e7 : ~~r5) < 0 ? (r5 += e7) < 0 && (r5 = 0) : r5 > e7 && (r5 = e7), r5 < t5 && (r5 = t5);\n  var n5 = this.subarray(t5, r5);\n  return Object.setPrototypeOf(n5, u$1$1.prototype), n5;\n}, u$1$1.prototype.readUIntLE = function(t5, r5, e7) {\n  t5 >>>= 0, r5 >>>= 0, e7 || x2(t5, r5, this.length);\n  for (var n5 = this[t5], i5 = 1, o5 = 0; ++o5 < r5 && (i5 *= 256); ) n5 += this[t5 + o5] * i5;\n  return n5;\n}, u$1$1.prototype.readUIntBE = function(t5, r5, e7) {\n  t5 >>>= 0, r5 >>>= 0, e7 || x2(t5, r5, this.length);\n  for (var n5 = this[t5 + --r5], i5 = 1; r5 > 0 && (i5 *= 256); ) n5 += this[t5 + --r5] * i5;\n  return n5;\n}, u$1$1.prototype.readUInt8 = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 1, this.length), this[t5];\n}, u$1$1.prototype.readUInt16LE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 2, this.length), this[t5] | this[t5 + 1] << 8;\n}, u$1$1.prototype.readUInt16BE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 2, this.length), this[t5] << 8 | this[t5 + 1];\n}, u$1$1.prototype.readUInt32LE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 4, this.length), (this[t5] | this[t5 + 1] << 8 | this[t5 + 2] << 16) + 16777216 * this[t5 + 3];\n}, u$1$1.prototype.readUInt32BE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 4, this.length), 16777216 * this[t5] + (this[t5 + 1] << 16 | this[t5 + 2] << 8 | this[t5 + 3]);\n}, u$1$1.prototype.readIntLE = function(t5, r5, e7) {\n  t5 >>>= 0, r5 >>>= 0, e7 || x2(t5, r5, this.length);\n  for (var n5 = this[t5], i5 = 1, o5 = 0; ++o5 < r5 && (i5 *= 256); ) n5 += this[t5 + o5] * i5;\n  return n5 >= (i5 *= 128) && (n5 -= Math.pow(2, 8 * r5)), n5;\n}, u$1$1.prototype.readIntBE = function(t5, r5, e7) {\n  t5 >>>= 0, r5 >>>= 0, e7 || x2(t5, r5, this.length);\n  for (var n5 = r5, i5 = 1, o5 = this[t5 + --n5]; n5 > 0 && (i5 *= 256); ) o5 += this[t5 + --n5] * i5;\n  return o5 >= (i5 *= 128) && (o5 -= Math.pow(2, 8 * r5)), o5;\n}, u$1$1.prototype.readInt8 = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 1, this.length), 128 & this[t5] ? -1 * (255 - this[t5] + 1) : this[t5];\n}, u$1$1.prototype.readInt16LE = function(t5, r5) {\n  t5 >>>= 0, r5 || x2(t5, 2, this.length);\n  var e7 = this[t5] | this[t5 + 1] << 8;\n  return 32768 & e7 ? 4294901760 | e7 : e7;\n}, u$1$1.prototype.readInt16BE = function(t5, r5) {\n  t5 >>>= 0, r5 || x2(t5, 2, this.length);\n  var e7 = this[t5 + 1] | this[t5] << 8;\n  return 32768 & e7 ? 4294901760 | e7 : e7;\n}, u$1$1.prototype.readInt32LE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 4, this.length), this[t5] | this[t5 + 1] << 8 | this[t5 + 2] << 16 | this[t5 + 3] << 24;\n}, u$1$1.prototype.readInt32BE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 4, this.length), this[t5] << 24 | this[t5 + 1] << 16 | this[t5 + 2] << 8 | this[t5 + 3];\n}, u$1$1.prototype.readFloatLE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 4, this.length), i$12.read(this, t5, true, 23, 4);\n}, u$1$1.prototype.readFloatBE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 4, this.length), i$12.read(this, t5, false, 23, 4);\n}, u$1$1.prototype.readDoubleLE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 8, this.length), i$12.read(this, t5, true, 52, 8);\n}, u$1$1.prototype.readDoubleBE = function(t5, r5) {\n  return t5 >>>= 0, r5 || x2(t5, 8, this.length), i$12.read(this, t5, false, 52, 8);\n}, u$1$1.prototype.writeUIntLE = function(t5, r5, e7, n5) {\n  (t5 = +t5, r5 >>>= 0, e7 >>>= 0, n5) || C2(this, t5, r5, e7, Math.pow(2, 8 * e7) - 1, 0);\n  var i5 = 1, o5 = 0;\n  for (this[r5] = 255 & t5; ++o5 < e7 && (i5 *= 256); ) this[r5 + o5] = t5 / i5 & 255;\n  return r5 + e7;\n}, u$1$1.prototype.writeUIntBE = function(t5, r5, e7, n5) {\n  (t5 = +t5, r5 >>>= 0, e7 >>>= 0, n5) || C2(this, t5, r5, e7, Math.pow(2, 8 * e7) - 1, 0);\n  var i5 = e7 - 1, o5 = 1;\n  for (this[r5 + i5] = 255 & t5; --i5 >= 0 && (o5 *= 256); ) this[r5 + i5] = t5 / o5 & 255;\n  return r5 + e7;\n}, u$1$1.prototype.writeUInt8 = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 1, 255, 0), this[r5] = 255 & t5, r5 + 1;\n}, u$1$1.prototype.writeUInt16LE = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 2, 65535, 0), this[r5] = 255 & t5, this[r5 + 1] = t5 >>> 8, r5 + 2;\n}, u$1$1.prototype.writeUInt16BE = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 2, 65535, 0), this[r5] = t5 >>> 8, this[r5 + 1] = 255 & t5, r5 + 2;\n}, u$1$1.prototype.writeUInt32LE = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 4, 4294967295, 0), this[r5 + 3] = t5 >>> 24, this[r5 + 2] = t5 >>> 16, this[r5 + 1] = t5 >>> 8, this[r5] = 255 & t5, r5 + 4;\n}, u$1$1.prototype.writeUInt32BE = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 4, 4294967295, 0), this[r5] = t5 >>> 24, this[r5 + 1] = t5 >>> 16, this[r5 + 2] = t5 >>> 8, this[r5 + 3] = 255 & t5, r5 + 4;\n}, u$1$1.prototype.writeIntLE = function(t5, r5, e7, n5) {\n  if (t5 = +t5, r5 >>>= 0, !n5) {\n    var i5 = Math.pow(2, 8 * e7 - 1);\n    C2(this, t5, r5, e7, i5 - 1, -i5);\n  }\n  var o5 = 0, f6 = 1, u5 = 0;\n  for (this[r5] = 255 & t5; ++o5 < e7 && (f6 *= 256); ) t5 < 0 && 0 === u5 && 0 !== this[r5 + o5 - 1] && (u5 = 1), this[r5 + o5] = (t5 / f6 >> 0) - u5 & 255;\n  return r5 + e7;\n}, u$1$1.prototype.writeIntBE = function(t5, r5, e7, n5) {\n  if (t5 = +t5, r5 >>>= 0, !n5) {\n    var i5 = Math.pow(2, 8 * e7 - 1);\n    C2(this, t5, r5, e7, i5 - 1, -i5);\n  }\n  var o5 = e7 - 1, f6 = 1, u5 = 0;\n  for (this[r5 + o5] = 255 & t5; --o5 >= 0 && (f6 *= 256); ) t5 < 0 && 0 === u5 && 0 !== this[r5 + o5 + 1] && (u5 = 1), this[r5 + o5] = (t5 / f6 >> 0) - u5 & 255;\n  return r5 + e7;\n}, u$1$1.prototype.writeInt8 = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 1, 127, -128), t5 < 0 && (t5 = 255 + t5 + 1), this[r5] = 255 & t5, r5 + 1;\n}, u$1$1.prototype.writeInt16LE = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 2, 32767, -32768), this[r5] = 255 & t5, this[r5 + 1] = t5 >>> 8, r5 + 2;\n}, u$1$1.prototype.writeInt16BE = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 2, 32767, -32768), this[r5] = t5 >>> 8, this[r5 + 1] = 255 & t5, r5 + 2;\n}, u$1$1.prototype.writeInt32LE = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 4, 2147483647, -2147483648), this[r5] = 255 & t5, this[r5 + 1] = t5 >>> 8, this[r5 + 2] = t5 >>> 16, this[r5 + 3] = t5 >>> 24, r5 + 4;\n}, u$1$1.prototype.writeInt32BE = function(t5, r5, e7) {\n  return t5 = +t5, r5 >>>= 0, e7 || C2(this, t5, r5, 4, 2147483647, -2147483648), t5 < 0 && (t5 = 4294967295 + t5 + 1), this[r5] = t5 >>> 24, this[r5 + 1] = t5 >>> 16, this[r5 + 2] = t5 >>> 8, this[r5 + 3] = 255 & t5, r5 + 4;\n}, u$1$1.prototype.writeFloatLE = function(t5, r5, e7) {\n  return k2(this, t5, r5, true, e7);\n}, u$1$1.prototype.writeFloatBE = function(t5, r5, e7) {\n  return k2(this, t5, r5, false, e7);\n}, u$1$1.prototype.writeDoubleLE = function(t5, r5, e7) {\n  return M2(this, t5, r5, true, e7);\n}, u$1$1.prototype.writeDoubleBE = function(t5, r5, e7) {\n  return M2(this, t5, r5, false, e7);\n}, u$1$1.prototype.copy = function(t5, r5, e7, n5) {\n  if (!u$1$1.isBuffer(t5)) throw new TypeError(\"argument should be a Buffer\");\n  if (e7 || (e7 = 0), n5 || 0 === n5 || (n5 = this.length), r5 >= t5.length && (r5 = t5.length), r5 || (r5 = 0), n5 > 0 && n5 < e7 && (n5 = e7), n5 === e7) return 0;\n  if (0 === t5.length || 0 === this.length) return 0;\n  if (r5 < 0) throw new RangeError(\"targetStart out of bounds\");\n  if (e7 < 0 || e7 >= this.length) throw new RangeError(\"Index out of range\");\n  if (n5 < 0) throw new RangeError(\"sourceEnd out of bounds\");\n  n5 > this.length && (n5 = this.length), t5.length - r5 < n5 - e7 && (n5 = t5.length - r5 + e7);\n  var i5 = n5 - e7;\n  if (this === t5 && \"function\" == typeof Uint8Array.prototype.copyWithin) this.copyWithin(r5, e7, n5);\n  else if (this === t5 && e7 < r5 && r5 < n5) for (var o5 = i5 - 1; o5 >= 0; --o5) t5[o5 + r5] = this[o5 + e7];\n  else Uint8Array.prototype.set.call(t5, this.subarray(e7, n5), r5);\n  return i5;\n}, u$1$1.prototype.fill = function(t5, r5, e7, n5) {\n  if (\"string\" == typeof t5) {\n    if (\"string\" == typeof r5 ? (n5 = r5, r5 = 0, e7 = this.length) : \"string\" == typeof e7 && (n5 = e7, e7 = this.length), void 0 !== n5 && \"string\" != typeof n5) throw new TypeError(\"encoding must be a string\");\n    if (\"string\" == typeof n5 && !u$1$1.isEncoding(n5)) throw new TypeError(\"Unknown encoding: \" + n5);\n    if (1 === t5.length) {\n      var i5 = t5.charCodeAt(0);\n      (\"utf8\" === n5 && i5 < 128 || \"latin1\" === n5) && (t5 = i5);\n    }\n  } else \"number\" == typeof t5 ? t5 &= 255 : \"boolean\" == typeof t5 && (t5 = Number(t5));\n  if (r5 < 0 || this.length < r5 || this.length < e7) throw new RangeError(\"Out of range index\");\n  if (e7 <= r5) return this;\n  var o5;\n  if (r5 >>>= 0, e7 = void 0 === e7 ? this.length : e7 >>> 0, t5 || (t5 = 0), \"number\" == typeof t5) for (o5 = r5; o5 < e7; ++o5) this[o5] = t5;\n  else {\n    var f6 = u$1$1.isBuffer(t5) ? t5 : u$1$1.from(t5, n5), s5 = f6.length;\n    if (0 === s5) throw new TypeError('The value \"' + t5 + '\" is invalid for argument \"value\"');\n    for (o5 = 0; o5 < e7 - r5; ++o5) this[o5 + r5] = f6[o5 % s5];\n  }\n  return this;\n};\nvar j2 = /[^+/0-9A-Za-z-_]/g;\nfunction _2(t5, r5) {\n  var e7;\n  r5 = r5 || 1 / 0;\n  for (var n5 = t5.length, i5 = null, o5 = [], f6 = 0; f6 < n5; ++f6) {\n    if ((e7 = t5.charCodeAt(f6)) > 55295 && e7 < 57344) {\n      if (!i5) {\n        if (e7 > 56319) {\n          (r5 -= 3) > -1 && o5.push(239, 191, 189);\n          continue;\n        }\n        if (f6 + 1 === n5) {\n          (r5 -= 3) > -1 && o5.push(239, 191, 189);\n          continue;\n        }\n        i5 = e7;\n        continue;\n      }\n      if (e7 < 56320) {\n        (r5 -= 3) > -1 && o5.push(239, 191, 189), i5 = e7;\n        continue;\n      }\n      e7 = 65536 + (i5 - 55296 << 10 | e7 - 56320);\n    } else i5 && (r5 -= 3) > -1 && o5.push(239, 191, 189);\n    if (i5 = null, e7 < 128) {\n      if ((r5 -= 1) < 0) break;\n      o5.push(e7);\n    } else if (e7 < 2048) {\n      if ((r5 -= 2) < 0) break;\n      o5.push(e7 >> 6 | 192, 63 & e7 | 128);\n    } else if (e7 < 65536) {\n      if ((r5 -= 3) < 0) break;\n      o5.push(e7 >> 12 | 224, e7 >> 6 & 63 | 128, 63 & e7 | 128);\n    } else {\n      if (!(e7 < 1114112)) throw new Error(\"Invalid code point\");\n      if ((r5 -= 4) < 0) break;\n      o5.push(e7 >> 18 | 240, e7 >> 12 & 63 | 128, e7 >> 6 & 63 | 128, 63 & e7 | 128);\n    }\n  }\n  return o5;\n}\nfunction z2(t5) {\n  return n$1$1.toByteArray((function(t6) {\n    if ((t6 = (t6 = t6.split(\"=\")[0]).trim().replace(j2, \"\")).length < 2) return \"\";\n    for (; t6.length % 4 != 0; ) t6 += \"=\";\n    return t6;\n  })(t5));\n}\nfunction D2(t5, r5, e7, n5) {\n  for (var i5 = 0; i5 < n5 && !(i5 + e7 >= r5.length || i5 >= t5.length); ++i5) r5[i5 + e7] = t5[i5];\n  return i5;\n}\nfunction F2(t5, r5) {\n  return t5 instanceof r5 || null != t5 && null != t5.constructor && null != t5.constructor.name && t5.constructor.name === r5.name;\n}\nfunction N2(t5) {\n  return t5 != t5;\n}\nvar Y2 = (function() {\n  for (var t5 = new Array(256), r5 = 0; r5 < 16; ++r5) for (var e7 = 16 * r5, n5 = 0; n5 < 16; ++n5) t5[e7 + n5] = \"0123456789abcdef\"[r5] + \"0123456789abcdef\"[n5];\n  return t5;\n})();\ne$1$1.Buffer;\ne$1$1.INSPECT_MAX_BYTES;\ne$1$1.kMaxLength;\nvar e3 = {};\nvar n3 = e$1$1;\nvar o3 = n3.Buffer;\nfunction t3(r5, e7) {\n  for (var n5 in r5) e7[n5] = r5[n5];\n}\nfunction f3(r5, e7, n5) {\n  return o3(r5, e7, n5);\n}\no3.from && o3.alloc && o3.allocUnsafe && o3.allocUnsafeSlow ? e3 = n3 : (t3(n3, e3), e3.Buffer = f3), f3.prototype = Object.create(o3.prototype), t3(o3, f3), f3.from = function(r5, e7, n5) {\n  if (\"number\" == typeof r5) throw new TypeError(\"Argument must not be a number\");\n  return o3(r5, e7, n5);\n}, f3.alloc = function(r5, e7, n5) {\n  if (\"number\" != typeof r5) throw new TypeError(\"Argument must be a number\");\n  var t5 = o3(r5);\n  return void 0 !== e7 ? \"string\" == typeof n5 ? t5.fill(e7, n5) : t5.fill(e7) : t5.fill(0), t5;\n}, f3.allocUnsafe = function(r5) {\n  if (\"number\" != typeof r5) throw new TypeError(\"Argument must be a number\");\n  return o3(r5);\n}, f3.allocUnsafeSlow = function(r5) {\n  if (\"number\" != typeof r5) throw new TypeError(\"Argument must be a number\");\n  return n3.SlowBuffer(r5);\n};\nvar u3 = e3;\nvar e$12 = {};\nvar s3 = u3.Buffer;\nvar i3 = s3.isEncoding || function(t5) {\n  switch ((t5 = \"\" + t5) && t5.toLowerCase()) {\n    case \"hex\":\n    case \"utf8\":\n    case \"utf-8\":\n    case \"ascii\":\n    case \"binary\":\n    case \"base64\":\n    case \"ucs2\":\n    case \"ucs-2\":\n    case \"utf16le\":\n    case \"utf-16le\":\n    case \"raw\":\n      return true;\n    default:\n      return false;\n  }\n};\nfunction a3(t5) {\n  var e7;\n  switch (this.encoding = (function(t6) {\n    var e8 = (function(t7) {\n      if (!t7) return \"utf8\";\n      for (var e9; ; ) switch (t7) {\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 t7;\n        default:\n          if (e9) return;\n          t7 = (\"\" + t7).toLowerCase(), e9 = true;\n      }\n    })(t6);\n    if (\"string\" != typeof e8 && (s3.isEncoding === i3 || !i3(t6))) throw new Error(\"Unknown encoding: \" + t6);\n    return e8 || t6;\n  })(t5), this.encoding) {\n    case \"utf16le\":\n      this.text = h3, this.end = l3, e7 = 4;\n      break;\n    case \"utf8\":\n      this.fillLast = n$12, e7 = 4;\n      break;\n    case \"base64\":\n      this.text = u$12, this.end = o$12, e7 = 3;\n      break;\n    default:\n      return this.write = f$12, this.end = c3, void 0;\n  }\n  this.lastNeed = 0, this.lastTotal = 0, this.lastChar = s3.allocUnsafe(e7);\n}\nfunction r3(t5) {\n  return t5 <= 127 ? 0 : t5 >> 5 == 6 ? 2 : t5 >> 4 == 14 ? 3 : t5 >> 3 == 30 ? 4 : t5 >> 6 == 2 ? -1 : -2;\n}\nfunction n$12(t5) {\n  var e7 = this.lastTotal - this.lastNeed, s5 = (function(t6, e8, s6) {\n    if (128 != (192 & e8[0])) return t6.lastNeed = 0, \"\\uFFFD\";\n    if (t6.lastNeed > 1 && e8.length > 1) {\n      if (128 != (192 & e8[1])) return t6.lastNeed = 1, \"\\uFFFD\";\n      if (t6.lastNeed > 2 && e8.length > 2 && 128 != (192 & e8[2])) return t6.lastNeed = 2, \"\\uFFFD\";\n    }\n  })(this, t5);\n  return void 0 !== s5 ? s5 : this.lastNeed <= t5.length ? (t5.copy(this.lastChar, e7, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal)) : (t5.copy(this.lastChar, e7, 0, t5.length), this.lastNeed -= t5.length, void 0);\n}\nfunction h3(t5, e7) {\n  if ((t5.length - e7) % 2 == 0) {\n    var s5 = t5.toString(\"utf16le\", e7);\n    if (s5) {\n      var i5 = s5.charCodeAt(s5.length - 1);\n      if (i5 >= 55296 && i5 <= 56319) return this.lastNeed = 2, this.lastTotal = 4, this.lastChar[0] = t5[t5.length - 2], this.lastChar[1] = t5[t5.length - 1], s5.slice(0, -1);\n    }\n    return s5;\n  }\n  return this.lastNeed = 1, this.lastTotal = 2, this.lastChar[0] = t5[t5.length - 1], t5.toString(\"utf16le\", e7, t5.length - 1);\n}\nfunction l3(t5) {\n  var e7 = t5 && t5.length ? this.write(t5) : \"\";\n  if (this.lastNeed) {\n    var s5 = this.lastTotal - this.lastNeed;\n    return e7 + this.lastChar.toString(\"utf16le\", 0, s5);\n  }\n  return e7;\n}\nfunction u$12(t5, e7) {\n  var s5 = (t5.length - e7) % 3;\n  return 0 === s5 ? t5.toString(\"base64\", e7) : (this.lastNeed = 3 - s5, this.lastTotal = 3, 1 === s5 ? this.lastChar[0] = t5[t5.length - 1] : (this.lastChar[0] = t5[t5.length - 2], this.lastChar[1] = t5[t5.length - 1]), t5.toString(\"base64\", e7, t5.length - s5));\n}\nfunction o$12(t5) {\n  var e7 = t5 && t5.length ? this.write(t5) : \"\";\n  return this.lastNeed ? e7 + this.lastChar.toString(\"base64\", 0, 3 - this.lastNeed) : e7;\n}\nfunction f$12(t5) {\n  return t5.toString(this.encoding);\n}\nfunction c3(t5) {\n  return t5 && t5.length ? this.write(t5) : \"\";\n}\ne$12.StringDecoder = a3, a3.prototype.write = function(t5) {\n  if (0 === t5.length) return \"\";\n  var e7, s5;\n  if (this.lastNeed) {\n    if (void 0 === (e7 = this.fillLast(t5))) return \"\";\n    s5 = this.lastNeed, this.lastNeed = 0;\n  } else s5 = 0;\n  return s5 < t5.length ? e7 ? e7 + this.text(t5, s5) : this.text(t5, s5) : e7 || \"\";\n}, a3.prototype.end = function(t5) {\n  var e7 = t5 && t5.length ? this.write(t5) : \"\";\n  return this.lastNeed ? e7 + \"\\uFFFD\" : e7;\n}, a3.prototype.text = function(t5, e7) {\n  var s5 = (function(t6, e8, s6) {\n    var i6 = e8.length - 1;\n    if (i6 < s6) return 0;\n    var a5 = r3(e8[i6]);\n    if (a5 >= 0) return a5 > 0 && (t6.lastNeed = a5 - 1), a5;\n    if (--i6 < s6 || -2 === a5) return 0;\n    if ((a5 = r3(e8[i6])) >= 0) return a5 > 0 && (t6.lastNeed = a5 - 2), a5;\n    if (--i6 < s6 || -2 === a5) return 0;\n    if ((a5 = r3(e8[i6])) >= 0) return a5 > 0 && (2 === a5 ? a5 = 0 : t6.lastNeed = a5 - 3), a5;\n    return 0;\n  })(this, t5, e7);\n  if (!this.lastNeed) return t5.toString(\"utf8\", e7);\n  this.lastTotal = s5;\n  var i5 = t5.length - (s5 - this.lastNeed);\n  return t5.copy(this.lastChar, 0, i5), t5.toString(\"utf8\", e7, i5);\n}, a3.prototype.fillLast = function(t5) {\n  if (this.lastNeed <= t5.length) return t5.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  t5.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, t5.length), this.lastNeed -= t5.length;\n};\nvar exports$2$1 = {};\nvar _dewExec$2$1 = false;\nfunction dew$2$1() {\n  if (_dewExec$2$1) return exports$2$1;\n  _dewExec$2$1 = true;\n  exports$2$1.byteLength = byteLength;\n  exports$2$1.toByteArray = toByteArray;\n  exports$2$1.fromByteArray = fromByteArray;\n  var lookup = [];\n  var revLookup = [];\n  var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n  var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  for (var i5 = 0, len = code.length; i5 < len; ++i5) {\n    lookup[i5] = code[i5];\n    revLookup[code.charCodeAt(i5)] = i5;\n  }\n  revLookup[\"-\".charCodeAt(0)] = 62;\n  revLookup[\"_\".charCodeAt(0)] = 63;\n  function getLens(b64) {\n    var len2 = b64.length;\n    if (len2 % 4 > 0) {\n      throw new Error(\"Invalid string. Length must be a multiple of 4\");\n    }\n    var validLen = b64.indexOf(\"=\");\n    if (validLen === -1) validLen = len2;\n    var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4;\n    return [validLen, placeHoldersLen];\n  }\n  function 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  function _byteLength(b64, validLen, placeHoldersLen) {\n    return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n  }\n  function toByteArray(b64) {\n    var tmp;\n    var lens = getLens(b64);\n    var validLen = lens[0];\n    var placeHoldersLen = lens[1];\n    var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n    var curByte = 0;\n    var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen;\n    var i6;\n    for (i6 = 0; i6 < len2; i6 += 4) {\n      tmp = revLookup[b64.charCodeAt(i6)] << 18 | revLookup[b64.charCodeAt(i6 + 1)] << 12 | revLookup[b64.charCodeAt(i6 + 2)] << 6 | revLookup[b64.charCodeAt(i6 + 3)];\n      arr[curByte++] = tmp >> 16 & 255;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 2) {\n      tmp = revLookup[b64.charCodeAt(i6)] << 2 | revLookup[b64.charCodeAt(i6 + 1)] >> 4;\n      arr[curByte++] = tmp & 255;\n    }\n    if (placeHoldersLen === 1) {\n      tmp = revLookup[b64.charCodeAt(i6)] << 10 | revLookup[b64.charCodeAt(i6 + 1)] << 4 | revLookup[b64.charCodeAt(i6 + 2)] >> 2;\n      arr[curByte++] = tmp >> 8 & 255;\n      arr[curByte++] = tmp & 255;\n    }\n    return arr;\n  }\n  function tripletToBase64(num) {\n    return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n  }\n  function encodeChunk(uint8, start, end) {\n    var tmp;\n    var output = [];\n    for (var i6 = start; i6 < end; i6 += 3) {\n      tmp = (uint8[i6] << 16 & 16711680) + (uint8[i6 + 1] << 8 & 65280) + (uint8[i6 + 2] & 255);\n      output.push(tripletToBase64(tmp));\n    }\n    return output.join(\"\");\n  }\n  function fromByteArray(uint8) {\n    var tmp;\n    var len2 = uint8.length;\n    var extraBytes = len2 % 3;\n    var parts = [];\n    var maxChunkLength = 16383;\n    for (var i6 = 0, len22 = len2 - extraBytes; i6 < len22; i6 += maxChunkLength) {\n      parts.push(encodeChunk(uint8, i6, i6 + maxChunkLength > len22 ? len22 : i6 + maxChunkLength));\n    }\n    if (extraBytes === 1) {\n      tmp = uint8[len2 - 1];\n      parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n    } else if (extraBytes === 2) {\n      tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1];\n      parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n    }\n    return parts.join(\"\");\n  }\n  return exports$2$1;\n}\nvar exports$1$1 = {};\nvar _dewExec$1$1 = false;\nfunction dew$1$1() {\n  if (_dewExec$1$1) return exports$1$1;\n  _dewExec$1$1 = true;\n  exports$1$1.read = function(buffer2, offset, isLE, mLen, nBytes) {\n    var e7, m4;\n    var eLen = nBytes * 8 - mLen - 1;\n    var eMax = (1 << eLen) - 1;\n    var eBias = eMax >> 1;\n    var nBits = -7;\n    var i5 = isLE ? nBytes - 1 : 0;\n    var d4 = isLE ? -1 : 1;\n    var s5 = buffer2[offset + i5];\n    i5 += d4;\n    e7 = s5 & (1 << -nBits) - 1;\n    s5 >>= -nBits;\n    nBits += eLen;\n    for (; nBits > 0; e7 = e7 * 256 + buffer2[offset + i5], i5 += d4, nBits -= 8) {\n    }\n    m4 = e7 & (1 << -nBits) - 1;\n    e7 >>= -nBits;\n    nBits += mLen;\n    for (; nBits > 0; m4 = m4 * 256 + buffer2[offset + i5], i5 += d4, nBits -= 8) {\n    }\n    if (e7 === 0) {\n      e7 = 1 - eBias;\n    } else if (e7 === eMax) {\n      return m4 ? NaN : (s5 ? -1 : 1) * Infinity;\n    } else {\n      m4 = m4 + Math.pow(2, mLen);\n      e7 = e7 - eBias;\n    }\n    return (s5 ? -1 : 1) * m4 * Math.pow(2, e7 - mLen);\n  };\n  exports$1$1.write = function(buffer2, value, offset, isLE, mLen, nBytes) {\n    var e7, m4, c5;\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 i5 = isLE ? 0 : nBytes - 1;\n    var d4 = isLE ? 1 : -1;\n    var s5 = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n    value = Math.abs(value);\n    if (isNaN(value) || value === Infinity) {\n      m4 = isNaN(value) ? 1 : 0;\n      e7 = eMax;\n    } else {\n      e7 = Math.floor(Math.log(value) / Math.LN2);\n      if (value * (c5 = Math.pow(2, -e7)) < 1) {\n        e7--;\n        c5 *= 2;\n      }\n      if (e7 + eBias >= 1) {\n        value += rt / c5;\n      } else {\n        value += rt * Math.pow(2, 1 - eBias);\n      }\n      if (value * c5 >= 2) {\n        e7++;\n        c5 /= 2;\n      }\n      if (e7 + eBias >= eMax) {\n        m4 = 0;\n        e7 = eMax;\n      } else if (e7 + eBias >= 1) {\n        m4 = (value * c5 - 1) * Math.pow(2, mLen);\n        e7 = e7 + eBias;\n      } else {\n        m4 = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n        e7 = 0;\n      }\n    }\n    for (; mLen >= 8; buffer2[offset + i5] = m4 & 255, i5 += d4, m4 /= 256, mLen -= 8) {\n    }\n    e7 = e7 << mLen | m4;\n    eLen += mLen;\n    for (; eLen > 0; buffer2[offset + i5] = e7 & 255, i5 += d4, e7 /= 256, eLen -= 8) {\n    }\n    buffer2[offset + i5 - d4] |= s5 * 128;\n  };\n  return exports$1$1;\n}\nvar exports$g = {};\nvar _dewExec$g = false;\nfunction dew$g() {\n  if (_dewExec$g) return exports$g;\n  _dewExec$g = true;\n  const base64 = dew$2$1();\n  const ieee754 = dew$1$1();\n  const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") : null;\n  exports$g.Buffer = Buffer;\n  exports$g.SlowBuffer = SlowBuffer;\n  exports$g.INSPECT_MAX_BYTES = 50;\n  const K_MAX_LENGTH = 2147483647;\n  exports$g.kMaxLength = K_MAX_LENGTH;\n  Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n  if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n    console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n  }\n  function typedArraySupport() {\n    try {\n      const arr = new Uint8Array(1);\n      const proto = {\n        foo: function() {\n          return 42;\n        }\n      };\n      Object.setPrototypeOf(proto, Uint8Array.prototype);\n      Object.setPrototypeOf(arr, proto);\n      return arr.foo() === 42;\n    } catch (e7) {\n      return false;\n    }\n  }\n  Object.defineProperty(Buffer.prototype, \"parent\", {\n    enumerable: true,\n    get: function() {\n      if (!Buffer.isBuffer(this)) return void 0;\n      return this.buffer;\n    }\n  });\n  Object.defineProperty(Buffer.prototype, \"offset\", {\n    enumerable: true,\n    get: function() {\n      if (!Buffer.isBuffer(this)) return void 0;\n      return this.byteOffset;\n    }\n  });\n  function createBuffer(length) {\n    if (length > K_MAX_LENGTH) {\n      throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"');\n    }\n    const buf = new Uint8Array(length);\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function Buffer(arg, encodingOrOffset, length) {\n    if (typeof arg === \"number\") {\n      if (typeof encodingOrOffset === \"string\") {\n        throw new TypeError('The \"string\" argument must be of type string. Received type number');\n      }\n      return allocUnsafe(arg);\n    }\n    return from(arg, encodingOrOffset, length);\n  }\n  Buffer.poolSize = 8192;\n  function from(value, encodingOrOffset, length) {\n    if (typeof value === \"string\") {\n      return fromString(value, encodingOrOffset);\n    }\n    if (ArrayBuffer.isView(value)) {\n      return fromArrayView(value);\n    }\n    if (value == null) {\n      throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof value);\n    }\n    if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n      return fromArrayBuffer(value, encodingOrOffset, length);\n    }\n    if (typeof value === \"number\") {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type number');\n    }\n    const valueOf = value.valueOf && value.valueOf();\n    if (valueOf != null && valueOf !== value) {\n      return Buffer.from(valueOf, encodingOrOffset, length);\n    }\n    const b4 = fromObject(value);\n    if (b4) return b4;\n    if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n      return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n    }\n    throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof value);\n  }\n  Buffer.from = function(value, encodingOrOffset, length) {\n    return from(value, encodingOrOffset, length);\n  };\n  Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n  Object.setPrototypeOf(Buffer, Uint8Array);\n  function assertSize(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError('\"size\" argument must be of type number');\n    } else if (size < 0) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n    }\n  }\n  function alloc(size, fill, encoding) {\n    assertSize(size);\n    if (size <= 0) {\n      return createBuffer(size);\n    }\n    if (fill !== void 0) {\n      return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n    }\n    return createBuffer(size);\n  }\n  Buffer.alloc = function(size, fill, encoding) {\n    return alloc(size, fill, encoding);\n  };\n  function allocUnsafe(size) {\n    assertSize(size);\n    return createBuffer(size < 0 ? 0 : checked(size) | 0);\n  }\n  Buffer.allocUnsafe = function(size) {\n    return allocUnsafe(size);\n  };\n  Buffer.allocUnsafeSlow = function(size) {\n    return allocUnsafe(size);\n  };\n  function fromString(string, encoding) {\n    if (typeof encoding !== \"string\" || encoding === \"\") {\n      encoding = \"utf8\";\n    }\n    if (!Buffer.isEncoding(encoding)) {\n      throw new TypeError(\"Unknown encoding: \" + encoding);\n    }\n    const length = byteLength(string, encoding) | 0;\n    let buf = createBuffer(length);\n    const actual = buf.write(string, encoding);\n    if (actual !== length) {\n      buf = buf.slice(0, actual);\n    }\n    return buf;\n  }\n  function fromArrayLike(array) {\n    const length = array.length < 0 ? 0 : checked(array.length) | 0;\n    const buf = createBuffer(length);\n    for (let i5 = 0; i5 < length; i5 += 1) {\n      buf[i5] = array[i5] & 255;\n    }\n    return buf;\n  }\n  function fromArrayView(arrayView) {\n    if (isInstance(arrayView, Uint8Array)) {\n      const copy = new Uint8Array(arrayView);\n      return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n    }\n    return fromArrayLike(arrayView);\n  }\n  function fromArrayBuffer(array, byteOffset, length) {\n    if (byteOffset < 0 || array.byteLength < byteOffset) {\n      throw new RangeError('\"offset\" is outside of buffer bounds');\n    }\n    if (array.byteLength < byteOffset + (length || 0)) {\n      throw new RangeError('\"length\" is outside of buffer bounds');\n    }\n    let buf;\n    if (byteOffset === void 0 && length === void 0) {\n      buf = new Uint8Array(array);\n    } else if (length === void 0) {\n      buf = new Uint8Array(array, byteOffset);\n    } else {\n      buf = new Uint8Array(array, byteOffset, length);\n    }\n    Object.setPrototypeOf(buf, Buffer.prototype);\n    return buf;\n  }\n  function fromObject(obj) {\n    if (Buffer.isBuffer(obj)) {\n      const len = checked(obj.length) | 0;\n      const buf = createBuffer(len);\n      if (buf.length === 0) {\n        return buf;\n      }\n      obj.copy(buf, 0, 0, len);\n      return buf;\n    }\n    if (obj.length !== void 0) {\n      if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n        return createBuffer(0);\n      }\n      return fromArrayLike(obj);\n    }\n    if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n      return fromArrayLike(obj.data);\n    }\n  }\n  function checked(length) {\n    if (length >= K_MAX_LENGTH) {\n      throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n    }\n    return length | 0;\n  }\n  function SlowBuffer(length) {\n    if (+length != length) {\n      length = 0;\n    }\n    return Buffer.alloc(+length);\n  }\n  Buffer.isBuffer = function isBuffer(b4) {\n    return b4 != null && b4._isBuffer === true && b4 !== Buffer.prototype;\n  };\n  Buffer.compare = function compare(a5, b4) {\n    if (isInstance(a5, Uint8Array)) a5 = Buffer.from(a5, a5.offset, a5.byteLength);\n    if (isInstance(b4, Uint8Array)) b4 = Buffer.from(b4, b4.offset, b4.byteLength);\n    if (!Buffer.isBuffer(a5) || !Buffer.isBuffer(b4)) {\n      throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');\n    }\n    if (a5 === b4) return 0;\n    let x4 = a5.length;\n    let y5 = b4.length;\n    for (let i5 = 0, len = Math.min(x4, y5); i5 < len; ++i5) {\n      if (a5[i5] !== b4[i5]) {\n        x4 = a5[i5];\n        y5 = b4[i5];\n        break;\n      }\n    }\n    if (x4 < y5) return -1;\n    if (y5 < x4) return 1;\n    return 0;\n  };\n  Buffer.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  Buffer.concat = function concat(list, length) {\n    if (!Array.isArray(list)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers');\n    }\n    if (list.length === 0) {\n      return Buffer.alloc(0);\n    }\n    let i5;\n    if (length === void 0) {\n      length = 0;\n      for (i5 = 0; i5 < list.length; ++i5) {\n        length += list[i5].length;\n      }\n    }\n    const buffer2 = Buffer.allocUnsafe(length);\n    let pos = 0;\n    for (i5 = 0; i5 < list.length; ++i5) {\n      let buf = list[i5];\n      if (isInstance(buf, Uint8Array)) {\n        if (pos + buf.length > buffer2.length) {\n          if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n          buf.copy(buffer2, pos);\n        } else {\n          Uint8Array.prototype.set.call(buffer2, buf, pos);\n        }\n      } else if (!Buffer.isBuffer(buf)) {\n        throw new TypeError('\"list\" argument must be an Array of Buffers');\n      } else {\n        buf.copy(buffer2, pos);\n      }\n      pos += buf.length;\n    }\n    return buffer2;\n  };\n  function byteLength(string, encoding) {\n    if (Buffer.isBuffer(string)) {\n      return string.length;\n    }\n    if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n      return string.byteLength;\n    }\n    if (typeof string !== \"string\") {\n      throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string);\n    }\n    const len = string.length;\n    const mustMatch = arguments.length > 2 && arguments[2] === true;\n    if (!mustMatch && len === 0) return 0;\n    let 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          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) {\n            return mustMatch ? -1 : utf8ToBytes(string).length;\n          }\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.byteLength = byteLength;\n  function slowToString(encoding, start, end) {\n    let loweredCase = false;\n    if (start === void 0 || start < 0) {\n      start = 0;\n    }\n    if (start > this.length) {\n      return \"\";\n    }\n    if (end === void 0 || end > this.length) {\n      end = this.length;\n    }\n    if (end <= 0) {\n      return \"\";\n    }\n    end >>>= 0;\n    start >>>= 0;\n    if (end <= start) {\n      return \"\";\n    }\n    if (!encoding) encoding = \"utf8\";\n    while (true) {\n      switch (encoding) {\n        case \"hex\":\n          return hexSlice(this, start, end);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Slice(this, start, end);\n        case \"ascii\":\n          return asciiSlice(this, start, end);\n        case \"latin1\":\n        case \"binary\":\n          return latin1Slice(this, start, end);\n        case \"base64\":\n          return base64Slice(this, start, end);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return utf16leSlice(this, start, end);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (encoding + \"\").toLowerCase();\n          loweredCase = true;\n      }\n    }\n  }\n  Buffer.prototype._isBuffer = true;\n  function swap(b4, n5, m4) {\n    const i5 = b4[n5];\n    b4[n5] = b4[m4];\n    b4[m4] = i5;\n  }\n  Buffer.prototype.swap16 = function swap16() {\n    const len = this.length;\n    if (len % 2 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n    }\n    for (let i5 = 0; i5 < len; i5 += 2) {\n      swap(this, i5, i5 + 1);\n    }\n    return this;\n  };\n  Buffer.prototype.swap32 = function swap32() {\n    const len = this.length;\n    if (len % 4 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n    }\n    for (let i5 = 0; i5 < len; i5 += 4) {\n      swap(this, i5, i5 + 3);\n      swap(this, i5 + 1, i5 + 2);\n    }\n    return this;\n  };\n  Buffer.prototype.swap64 = function swap64() {\n    const len = this.length;\n    if (len % 8 !== 0) {\n      throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n    }\n    for (let i5 = 0; i5 < len; i5 += 8) {\n      swap(this, i5, i5 + 7);\n      swap(this, i5 + 1, i5 + 6);\n      swap(this, i5 + 2, i5 + 5);\n      swap(this, i5 + 3, i5 + 4);\n    }\n    return this;\n  };\n  Buffer.prototype.toString = function toString() {\n    const length = this.length;\n    if (length === 0) return \"\";\n    if (arguments.length === 0) return utf8Slice(this, 0, length);\n    return slowToString.apply(this, arguments);\n  };\n  Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n  Buffer.prototype.equals = function equals(b4) {\n    if (!Buffer.isBuffer(b4)) throw new TypeError(\"Argument must be a Buffer\");\n    if (this === b4) return true;\n    return Buffer.compare(this, b4) === 0;\n  };\n  Buffer.prototype.inspect = function inspect() {\n    let str = \"\";\n    const max = exports$g.INSPECT_MAX_BYTES;\n    str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n    if (this.length > max) str += \" ... \";\n    return \"<Buffer \" + str + \">\";\n  };\n  if (customInspectSymbol) {\n    Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n  }\n  Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n    if (isInstance(target, Uint8Array)) {\n      target = Buffer.from(target, target.offset, target.byteLength);\n    }\n    if (!Buffer.isBuffer(target)) {\n      throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target);\n    }\n    if (start === void 0) {\n      start = 0;\n    }\n    if (end === void 0) {\n      end = target ? target.length : 0;\n    }\n    if (thisStart === void 0) {\n      thisStart = 0;\n    }\n    if (thisEnd === void 0) {\n      thisEnd = this.length;\n    }\n    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n      throw new RangeError(\"out of range index\");\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    start >>>= 0;\n    end >>>= 0;\n    thisStart >>>= 0;\n    thisEnd >>>= 0;\n    if (this === target) return 0;\n    let x4 = thisEnd - thisStart;\n    let y5 = end - start;\n    const len = Math.min(x4, y5);\n    const thisCopy = this.slice(thisStart, thisEnd);\n    const targetCopy = target.slice(start, end);\n    for (let i5 = 0; i5 < len; ++i5) {\n      if (thisCopy[i5] !== targetCopy[i5]) {\n        x4 = thisCopy[i5];\n        y5 = targetCopy[i5];\n        break;\n      }\n    }\n    if (x4 < y5) return -1;\n    if (y5 < x4) return 1;\n    return 0;\n  };\n  function bidirectionalIndexOf(buffer2, val, byteOffset, encoding, dir) {\n    if (buffer2.length === 0) return -1;\n    if (typeof byteOffset === \"string\") {\n      encoding = byteOffset;\n      byteOffset = 0;\n    } else if (byteOffset > 2147483647) {\n      byteOffset = 2147483647;\n    } else if (byteOffset < -2147483648) {\n      byteOffset = -2147483648;\n    }\n    byteOffset = +byteOffset;\n    if (numberIsNaN(byteOffset)) {\n      byteOffset = dir ? 0 : buffer2.length - 1;\n    }\n    if (byteOffset < 0) byteOffset = buffer2.length + byteOffset;\n    if (byteOffset >= buffer2.length) {\n      if (dir) return -1;\n      else byteOffset = buffer2.length - 1;\n    } else if (byteOffset < 0) {\n      if (dir) byteOffset = 0;\n      else return -1;\n    }\n    if (typeof val === \"string\") {\n      val = Buffer.from(val, encoding);\n    }\n    if (Buffer.isBuffer(val)) {\n      if (val.length === 0) {\n        return -1;\n      }\n      return arrayIndexOf(buffer2, val, byteOffset, encoding, dir);\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n      if (typeof Uint8Array.prototype.indexOf === \"function\") {\n        if (dir) {\n          return Uint8Array.prototype.indexOf.call(buffer2, val, byteOffset);\n        } else {\n          return Uint8Array.prototype.lastIndexOf.call(buffer2, val, byteOffset);\n        }\n      }\n      return arrayIndexOf(buffer2, [val], byteOffset, encoding, dir);\n    }\n    throw new TypeError(\"val must be string, number or Buffer\");\n  }\n  function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n    let indexSize = 1;\n    let arrLength = arr.length;\n    let valLength = val.length;\n    if (encoding !== void 0) {\n      encoding = String(encoding).toLowerCase();\n      if (encoding === \"ucs2\" || encoding === \"ucs-2\" || 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    function read(buf, i6) {\n      if (indexSize === 1) {\n        return buf[i6];\n      } else {\n        return buf.readUInt16BE(i6 * indexSize);\n      }\n    }\n    let i5;\n    if (dir) {\n      let foundIndex = -1;\n      for (i5 = byteOffset; i5 < arrLength; i5++) {\n        if (read(arr, i5) === read(val, foundIndex === -1 ? 0 : i5 - foundIndex)) {\n          if (foundIndex === -1) foundIndex = i5;\n          if (i5 - foundIndex + 1 === valLength) return foundIndex * indexSize;\n        } else {\n          if (foundIndex !== -1) i5 -= i5 - foundIndex;\n          foundIndex = -1;\n        }\n      }\n    } else {\n      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n      for (i5 = byteOffset; i5 >= 0; i5--) {\n        let found = true;\n        for (let j4 = 0; j4 < valLength; j4++) {\n          if (read(arr, i5 + j4) !== read(val, j4)) {\n            found = false;\n            break;\n          }\n        }\n        if (found) return i5;\n      }\n    }\n    return -1;\n  }\n  Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n    return this.indexOf(val, byteOffset, encoding) !== -1;\n  };\n  Buffer.prototype.indexOf = function indexOf3(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n  };\n  Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n    return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n  };\n  function hexWrite(buf, string, offset, length) {\n    offset = Number(offset) || 0;\n    const 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    const strLen = string.length;\n    if (length > strLen / 2) {\n      length = strLen / 2;\n    }\n    let i5;\n    for (i5 = 0; i5 < length; ++i5) {\n      const parsed = parseInt(string.substr(i5 * 2, 2), 16);\n      if (numberIsNaN(parsed)) return i5;\n      buf[offset + i5] = parsed;\n    }\n    return i5;\n  }\n  function utf8Write(buf, string, offset, length) {\n    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  function asciiWrite(buf, string, offset, length) {\n    return blitBuffer(asciiToBytes(string), buf, offset, length);\n  }\n  function base64Write(buf, string, offset, length) {\n    return blitBuffer(base64ToBytes(string), buf, offset, length);\n  }\n  function ucs2Write(buf, string, offset, length) {\n    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n  }\n  Buffer.prototype.write = function write(string, offset, length, encoding) {\n    if (offset === void 0) {\n      encoding = \"utf8\";\n      length = this.length;\n      offset = 0;\n    } else if (length === void 0 && typeof offset === \"string\") {\n      encoding = offset;\n      length = this.length;\n      offset = 0;\n    } else if (isFinite(offset)) {\n      offset = offset >>> 0;\n      if (isFinite(length)) {\n        length = length >>> 0;\n        if (encoding === void 0) encoding = \"utf8\";\n      } else {\n        encoding = length;\n        length = void 0;\n      }\n    } else {\n      throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n    }\n    const remaining = this.length - offset;\n    if (length === void 0 || length > remaining) length = remaining;\n    if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n      throw new RangeError(\"Attempt to write outside buffer bounds\");\n    }\n    if (!encoding) encoding = \"utf8\";\n    let loweredCase = false;\n    for (; ; ) {\n      switch (encoding) {\n        case \"hex\":\n          return hexWrite(this, string, offset, length);\n        case \"utf8\":\n        case \"utf-8\":\n          return utf8Write(this, string, offset, length);\n        case \"ascii\":\n        case \"latin1\":\n        case \"binary\":\n          return asciiWrite(this, string, offset, length);\n        case \"base64\":\n          return base64Write(this, string, offset, length);\n        case \"ucs2\":\n        case \"ucs-2\":\n        case \"utf16le\":\n        case \"utf-16le\":\n          return ucs2Write(this, string, offset, length);\n        default:\n          if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n          encoding = (\"\" + encoding).toLowerCase();\n          loweredCase = true;\n      }\n    }\n  };\n  Buffer.prototype.toJSON = function toJSON() {\n    return {\n      type: \"Buffer\",\n      data: Array.prototype.slice.call(this._arr || this, 0)\n    };\n  };\n  function 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  function utf8Slice(buf, start, end) {\n    end = Math.min(buf.length, end);\n    const res = [];\n    let i5 = start;\n    while (i5 < end) {\n      const firstByte = buf[i5];\n      let codePoint = null;\n      let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n      if (i5 + bytesPerSequence <= end) {\n        let secondByte, thirdByte, fourthByte, tempCodePoint;\n        switch (bytesPerSequence) {\n          case 1:\n            if (firstByte < 128) {\n              codePoint = firstByte;\n            }\n            break;\n          case 2:\n            secondByte = buf[i5 + 1];\n            if ((secondByte & 192) === 128) {\n              tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n              if (tempCodePoint > 127) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 3:\n            secondByte = buf[i5 + 1];\n            thirdByte = buf[i5 + 2];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n              if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n                codePoint = tempCodePoint;\n              }\n            }\n            break;\n          case 4:\n            secondByte = buf[i5 + 1];\n            thirdByte = buf[i5 + 2];\n            fourthByte = buf[i5 + 3];\n            if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n              tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n              if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n                codePoint = tempCodePoint;\n              }\n            }\n        }\n      }\n      if (codePoint === null) {\n        codePoint = 65533;\n        bytesPerSequence = 1;\n      } else if (codePoint > 65535) {\n        codePoint -= 65536;\n        res.push(codePoint >>> 10 & 1023 | 55296);\n        codePoint = 56320 | codePoint & 1023;\n      }\n      res.push(codePoint);\n      i5 += bytesPerSequence;\n    }\n    return decodeCodePointsArray(res);\n  }\n  const MAX_ARGUMENTS_LENGTH = 4096;\n  function decodeCodePointsArray(codePoints) {\n    const len = codePoints.length;\n    if (len <= MAX_ARGUMENTS_LENGTH) {\n      return String.fromCharCode.apply(String, codePoints);\n    }\n    let res = \"\";\n    let i5 = 0;\n    while (i5 < len) {\n      res += String.fromCharCode.apply(String, codePoints.slice(i5, i5 += MAX_ARGUMENTS_LENGTH));\n    }\n    return res;\n  }\n  function asciiSlice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i5 = start; i5 < end; ++i5) {\n      ret += String.fromCharCode(buf[i5] & 127);\n    }\n    return ret;\n  }\n  function latin1Slice(buf, start, end) {\n    let ret = \"\";\n    end = Math.min(buf.length, end);\n    for (let i5 = start; i5 < end; ++i5) {\n      ret += String.fromCharCode(buf[i5]);\n    }\n    return ret;\n  }\n  function hexSlice(buf, start, end) {\n    const len = buf.length;\n    if (!start || start < 0) start = 0;\n    if (!end || end < 0 || end > len) end = len;\n    let out = \"\";\n    for (let i5 = start; i5 < end; ++i5) {\n      out += hexSliceLookupTable[buf[i5]];\n    }\n    return out;\n  }\n  function utf16leSlice(buf, start, end) {\n    const bytes = buf.slice(start, end);\n    let res = \"\";\n    for (let i5 = 0; i5 < bytes.length - 1; i5 += 2) {\n      res += String.fromCharCode(bytes[i5] + bytes[i5 + 1] * 256);\n    }\n    return res;\n  }\n  Buffer.prototype.slice = function slice(start, end) {\n    const len = this.length;\n    start = ~~start;\n    end = end === void 0 ? len : ~~end;\n    if (start < 0) {\n      start += len;\n      if (start < 0) start = 0;\n    } else if (start > len) {\n      start = len;\n    }\n    if (end < 0) {\n      end += len;\n      if (end < 0) end = 0;\n    } else if (end > len) {\n      end = len;\n    }\n    if (end < start) end = start;\n    const newBuf = this.subarray(start, end);\n    Object.setPrototypeOf(newBuf, Buffer.prototype);\n    return newBuf;\n  };\n  function 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  Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength2, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i5 = 0;\n    while (++i5 < byteLength2 && (mul *= 256)) {\n      val += this[offset + i5] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) {\n      checkOffset(offset, byteLength2, this.length);\n    }\n    let val = this[offset + --byteLength2];\n    let mul = 1;\n    while (byteLength2 > 0 && (mul *= 256)) {\n      val += this[offset + --byteLength2] * mul;\n    }\n    return val;\n  };\n  Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    return this[offset];\n  };\n  Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] | this[offset + 1] << 8;\n  };\n  Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    return this[offset] << 8 | this[offset + 1];\n  };\n  Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n  };\n  Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n  };\n  Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === void 0 || last === void 0) {\n      boundsError(offset, this.length - 8);\n    }\n    const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n    const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n    return BigInt(lo) + (BigInt(hi) << BigInt(32));\n  });\n  Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === void 0 || last === void 0) {\n      boundsError(offset, this.length - 8);\n    }\n    const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n    return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n  });\n  Buffer.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength2, this.length);\n    let val = this[offset];\n    let mul = 1;\n    let i5 = 0;\n    while (++i5 < byteLength2 && (mul *= 256)) {\n      val += this[offset + i5] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n    return val;\n  };\n  Buffer.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) checkOffset(offset, byteLength2, this.length);\n    let i5 = byteLength2;\n    let mul = 1;\n    let val = this[offset + --i5];\n    while (i5 > 0 && (mul *= 256)) {\n      val += this[offset + --i5] * mul;\n    }\n    mul *= 128;\n    if (val >= mul) val -= Math.pow(2, 8 * byteLength2);\n    return val;\n  };\n  Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 1, this.length);\n    if (!(this[offset] & 128)) return this[offset];\n    return (255 - this[offset] + 1) * -1;\n  };\n  Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset] | this[offset + 1] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 2, this.length);\n    const val = this[offset + 1] | this[offset] << 8;\n    return val & 32768 ? val | 4294901760 : val;\n  };\n  Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n  };\n  Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n  };\n  Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === void 0 || last === void 0) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24);\n    return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n  });\n  Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n    offset = offset >>> 0;\n    validateNumber(offset, \"offset\");\n    const first = this[offset];\n    const last = this[offset + 7];\n    if (first === void 0 || last === void 0) {\n      boundsError(offset, this.length - 8);\n    }\n    const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n    return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n  });\n  Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, true, 23, 4);\n  };\n  Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 4, this.length);\n    return ieee754.read(this, offset, false, 23, 4);\n  };\n  Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, true, 52, 8);\n  };\n  Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n    offset = offset >>> 0;\n    if (!noAssert) checkOffset(offset, 8, this.length);\n    return ieee754.read(this, offset, false, 52, 8);\n  };\n  function 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  Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n      checkInt(this, value, offset, byteLength2, maxBytes, 0);\n    }\n    let mul = 1;\n    let i5 = 0;\n    this[offset] = value & 255;\n    while (++i5 < byteLength2 && (mul *= 256)) {\n      this[offset + i5] = value / mul & 255;\n    }\n    return offset + byteLength2;\n  };\n  Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    byteLength2 = byteLength2 >>> 0;\n    if (!noAssert) {\n      const maxBytes = Math.pow(2, 8 * byteLength2) - 1;\n      checkInt(this, value, offset, byteLength2, maxBytes, 0);\n    }\n    let i5 = byteLength2 - 1;\n    let mul = 1;\n    this[offset + i5] = value & 255;\n    while (--i5 >= 0 && (mul *= 256)) {\n      this[offset + i5] = value / mul & 255;\n    }\n    return offset + byteLength2;\n  };\n  Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset + 3] = value >>> 24;\n    this[offset + 2] = value >>> 16;\n    this[offset + 1] = value >>> 8;\n    this[offset] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  function wrtBigUInt64LE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    lo = lo >> 8;\n    buf[offset++] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    hi = hi >> 8;\n    buf[offset++] = hi;\n    return offset;\n  }\n  function wrtBigUInt64BE(buf, value, offset, min, max) {\n    checkIntBI(value, min, max, buf, offset, 7);\n    let lo = Number(value & BigInt(4294967295));\n    buf[offset + 7] = lo;\n    lo = lo >> 8;\n    buf[offset + 6] = lo;\n    lo = lo >> 8;\n    buf[offset + 5] = lo;\n    lo = lo >> 8;\n    buf[offset + 4] = lo;\n    let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n    buf[offset + 3] = hi;\n    hi = hi >> 8;\n    buf[offset + 2] = hi;\n    hi = hi >> 8;\n    buf[offset + 1] = hi;\n    hi = hi >> 8;\n    buf[offset] = hi;\n    return offset + 8;\n  }\n  Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n  });\n  Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength2 - 1);\n      checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n    }\n    let i5 = 0;\n    let mul = 1;\n    let sub = 0;\n    this[offset] = value & 255;\n    while (++i5 < byteLength2 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i5 - 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i5] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength2;\n  };\n  Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      const limit = Math.pow(2, 8 * byteLength2 - 1);\n      checkInt(this, value, offset, byteLength2, limit - 1, -limit);\n    }\n    let i5 = byteLength2 - 1;\n    let mul = 1;\n    let sub = 0;\n    this[offset + i5] = value & 255;\n    while (--i5 >= 0 && (mul *= 256)) {\n      if (value < 0 && sub === 0 && this[offset + i5 + 1] !== 0) {\n        sub = 1;\n      }\n      this[offset + i5] = (value / mul >> 0) - sub & 255;\n    }\n    return offset + byteLength2;\n  };\n  Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n    if (value < 0) value = 255 + value + 1;\n    this[offset] = value & 255;\n    return offset + 1;\n  };\n  Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n    this[offset] = value >>> 8;\n    this[offset + 1] = value & 255;\n    return offset + 2;\n  };\n  Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    this[offset] = value & 255;\n    this[offset + 1] = value >>> 8;\n    this[offset + 2] = value >>> 16;\n    this[offset + 3] = value >>> 24;\n    return offset + 4;\n  };\n  Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n    if (value < 0) value = 4294967295 + value + 1;\n    this[offset] = value >>> 24;\n    this[offset + 1] = value >>> 16;\n    this[offset + 2] = value >>> 8;\n    this[offset + 3] = value & 255;\n    return offset + 4;\n  };\n  Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n    return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n    return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n  });\n  function 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  function writeFloat(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 4);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 23, 4);\n    return offset + 4;\n  }\n  Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n    return writeFloat(this, value, offset, false, noAssert);\n  };\n  function writeDouble(buf, value, offset, littleEndian, noAssert) {\n    value = +value;\n    offset = offset >>> 0;\n    if (!noAssert) {\n      checkIEEE754(buf, value, offset, 8);\n    }\n    ieee754.write(buf, value, offset, littleEndian, 52, 8);\n    return offset + 8;\n  }\n  Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, true, noAssert);\n  };\n  Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n    return writeDouble(this, value, offset, false, noAssert);\n  };\n  Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n    if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\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    if (end === start) return 0;\n    if (target.length === 0 || this.length === 0) return 0;\n    if (targetStart < 0) {\n      throw new RangeError(\"targetStart out of bounds\");\n    }\n    if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n    if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n    if (end > this.length) end = this.length;\n    if (target.length - targetStart < end - start) {\n      end = target.length - targetStart + start;\n    }\n    const len = end - start;\n    if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n      this.copyWithin(targetStart, start, end);\n    } else {\n      Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n    }\n    return len;\n  };\n  Buffer.prototype.fill = function fill(val, start, end, encoding) {\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 (encoding !== void 0 && 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      if (val.length === 1) {\n        const code = val.charCodeAt(0);\n        if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n          val = code;\n        }\n      }\n    } else if (typeof val === \"number\") {\n      val = val & 255;\n    } else if (typeof val === \"boolean\") {\n      val = Number(val);\n    }\n    if (start < 0 || this.length < start || this.length < end) {\n      throw new RangeError(\"Out of range index\");\n    }\n    if (end <= start) {\n      return this;\n    }\n    start = start >>> 0;\n    end = end === void 0 ? this.length : end >>> 0;\n    if (!val) val = 0;\n    let i5;\n    if (typeof val === \"number\") {\n      for (i5 = start; i5 < end; ++i5) {\n        this[i5] = val;\n      }\n    } else {\n      const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n      const len = bytes.length;\n      if (len === 0) {\n        throw new TypeError('The value \"' + val + '\" is invalid for argument \"value\"');\n      }\n      for (i5 = 0; i5 < end - start; ++i5) {\n        this[i5 + start] = bytes[i5 % len];\n      }\n    }\n    return this;\n  };\n  const errors = {};\n  function E4(sym, getMessage, Base) {\n    errors[sym] = class NodeError extends Base {\n      constructor() {\n        super();\n        Object.defineProperty(this, \"message\", {\n          value: getMessage.apply(this, arguments),\n          writable: true,\n          configurable: true\n        });\n        this.name = `${this.name} [${sym}]`;\n        this.stack;\n        delete this.name;\n      }\n      get code() {\n        return sym;\n      }\n      set code(value) {\n        Object.defineProperty(this, \"code\", {\n          configurable: true,\n          enumerable: true,\n          value,\n          writable: true\n        });\n      }\n      toString() {\n        return `${this.name} [${sym}]: ${this.message}`;\n      }\n    };\n  }\n  E4(\"ERR_BUFFER_OUT_OF_BOUNDS\", function(name2) {\n    if (name2) {\n      return `${name2} is outside of buffer bounds`;\n    }\n    return \"Attempt to access memory outside buffer bounds\";\n  }, RangeError);\n  E4(\"ERR_INVALID_ARG_TYPE\", function(name2, actual) {\n    return `The \"${name2}\" argument must be of type number. Received type ${typeof actual}`;\n  }, TypeError);\n  E4(\"ERR_OUT_OF_RANGE\", function(str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`;\n    let received = input;\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input));\n    } else if (typeof input === \"bigint\") {\n      received = String(input);\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received);\n      }\n      received += \"n\";\n    }\n    msg += ` It must be ${range}. Received ${received}`;\n    return msg;\n  }, RangeError);\n  function addNumericalSeparator(val) {\n    let res = \"\";\n    let i5 = val.length;\n    const start = val[0] === \"-\" ? 1 : 0;\n    for (; i5 >= start + 4; i5 -= 3) {\n      res = `_${val.slice(i5 - 3, i5)}${res}`;\n    }\n    return `${val.slice(0, i5)}${res}`;\n  }\n  function checkBounds(buf, offset, byteLength2) {\n    validateNumber(offset, \"offset\");\n    if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) {\n      boundsError(offset, buf.length - (byteLength2 + 1));\n    }\n  }\n  function checkIntBI(value, min, max, buf, offset, byteLength2) {\n    if (value > max || value < min) {\n      const n5 = typeof min === \"bigint\" ? \"n\" : \"\";\n      let range;\n      {\n        if (min === 0 || min === BigInt(0)) {\n          range = `>= 0${n5} and < 2${n5} ** ${(byteLength2 + 1) * 8}${n5}`;\n        } else {\n          range = `>= -(2${n5} ** ${(byteLength2 + 1) * 8 - 1}${n5}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n5}`;\n        }\n      }\n      throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n    }\n    checkBounds(buf, offset, byteLength2);\n  }\n  function validateNumber(value, name2) {\n    if (typeof value !== \"number\") {\n      throw new errors.ERR_INVALID_ARG_TYPE(name2, \"number\", value);\n    }\n  }\n  function boundsError(value, length, type) {\n    if (Math.floor(value) !== value) {\n      validateNumber(value, type);\n      throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n    }\n    if (length < 0) {\n      throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n    }\n    throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n  }\n  const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n  function base64clean(str) {\n    str = str.split(\"=\")[0];\n    str = str.trim().replace(INVALID_BASE64_RE, \"\");\n    if (str.length < 2) return \"\";\n    while (str.length % 4 !== 0) {\n      str = str + \"=\";\n    }\n    return str;\n  }\n  function utf8ToBytes(string, units) {\n    units = units || Infinity;\n    let codePoint;\n    const length = string.length;\n    let leadSurrogate = null;\n    const bytes = [];\n    for (let i5 = 0; i5 < length; ++i5) {\n      codePoint = string.charCodeAt(i5);\n      if (codePoint > 55295 && codePoint < 57344) {\n        if (!leadSurrogate) {\n          if (codePoint > 56319) {\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          } else if (i5 + 1 === length) {\n            if ((units -= 3) > -1) bytes.push(239, 191, 189);\n            continue;\n          }\n          leadSurrogate = codePoint;\n          continue;\n        }\n        if (codePoint < 56320) {\n          if ((units -= 3) > -1) bytes.push(239, 191, 189);\n          leadSurrogate = codePoint;\n          continue;\n        }\n        codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n      } else if (leadSurrogate) {\n        if ((units -= 3) > -1) bytes.push(239, 191, 189);\n      }\n      leadSurrogate = null;\n      if (codePoint < 128) {\n        if ((units -= 1) < 0) break;\n        bytes.push(codePoint);\n      } else if (codePoint < 2048) {\n        if ((units -= 2) < 0) break;\n        bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n      } else if (codePoint < 65536) {\n        if ((units -= 3) < 0) break;\n        bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else if (codePoint < 1114112) {\n        if ((units -= 4) < 0) break;\n        bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n      } else {\n        throw new Error(\"Invalid code point\");\n      }\n    }\n    return bytes;\n  }\n  function asciiToBytes(str) {\n    const byteArray = [];\n    for (let i5 = 0; i5 < str.length; ++i5) {\n      byteArray.push(str.charCodeAt(i5) & 255);\n    }\n    return byteArray;\n  }\n  function utf16leToBytes(str, units) {\n    let c5, hi, lo;\n    const byteArray = [];\n    for (let i5 = 0; i5 < str.length; ++i5) {\n      if ((units -= 2) < 0) break;\n      c5 = str.charCodeAt(i5);\n      hi = c5 >> 8;\n      lo = c5 % 256;\n      byteArray.push(lo);\n      byteArray.push(hi);\n    }\n    return byteArray;\n  }\n  function base64ToBytes(str) {\n    return base64.toByteArray(base64clean(str));\n  }\n  function blitBuffer(src, dst, offset, length) {\n    let i5;\n    for (i5 = 0; i5 < length; ++i5) {\n      if (i5 + offset >= dst.length || i5 >= src.length) break;\n      dst[i5 + offset] = src[i5];\n    }\n    return i5;\n  }\n  function isInstance(obj, type) {\n    return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n  }\n  function numberIsNaN(obj) {\n    return obj !== obj;\n  }\n  const hexSliceLookupTable = (function() {\n    const alphabet = \"0123456789abcdef\";\n    const table = new Array(256);\n    for (let i5 = 0; i5 < 16; ++i5) {\n      const i16 = i5 * 16;\n      for (let j4 = 0; j4 < 16; ++j4) {\n        table[i16 + j4] = alphabet[i5] + alphabet[j4];\n      }\n    }\n    return table;\n  })();\n  function defineBigIntMethod(fn) {\n    return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n  }\n  function BufferBigIntNotDefined() {\n    throw new Error(\"BigInt not supported\");\n  }\n  return exports$g;\n}\nvar buffer = dew$g();\nbuffer.Buffer;\nbuffer.INSPECT_MAX_BYTES;\nbuffer.kMaxLength;\nvar exports$f = {};\nvar _dewExec$f = false;\nfunction dew$f() {\n  if (_dewExec$f) return exports$f;\n  _dewExec$f = true;\n  if (typeof Object.create === \"function\") {\n    exports$f = 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    exports$f = function inherits(ctor, superCtor) {\n      if (superCtor) {\n        ctor.super_ = superCtor;\n        var TempCtor = function() {\n        };\n        TempCtor.prototype = superCtor.prototype;\n        ctor.prototype = new TempCtor();\n        ctor.prototype.constructor = ctor;\n      }\n    };\n  }\n  return exports$f;\n}\nvar exports$e = {};\nvar _dewExec$e = false;\nfunction dew$e() {\n  if (_dewExec$e) return exports$e;\n  _dewExec$e = true;\n  exports$e = y.EventEmitter;\n  return exports$e;\n}\nvar exports$d = {};\nvar _dewExec$d = false;\nfunction dew$d() {\n  if (_dewExec$d) return exports$d;\n  _dewExec$d = true;\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\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    return keys;\n  }\n  function _objectSpread(target) {\n    for (var i5 = 1; i5 < arguments.length; i5++) {\n      var source = arguments[i5] != null ? arguments[i5] : {};\n      if (i5 % 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  }\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n    return obj;\n  }\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  function _defineProperties(target, props) {\n    for (var i5 = 0; i5 < props.length; i5++) {\n      var descriptor = props[i5];\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  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    return Constructor;\n  }\n  var _require = buffer, Buffer = _require.Buffer;\n  var _require2 = X, inspect = _require2.inspect;\n  var custom = inspect && inspect.custom || \"inspect\";\n  function copyBuffer(src, target, offset) {\n    Buffer.prototype.copy.call(src, target, offset);\n  }\n  exports$d = /* @__PURE__ */ (function() {\n    function BufferList() {\n      _classCallCheck(this, BufferList);\n      this.head = null;\n      this.tail = null;\n      this.length = 0;\n    }\n    _createClass(BufferList, [{\n      key: \"push\",\n      value: function push(v5) {\n        var entry = {\n          data: v5,\n          next: null\n        };\n        if (this.length > 0) this.tail.next = entry;\n        else this.head = entry;\n        this.tail = entry;\n        ++this.length;\n      }\n    }, {\n      key: \"unshift\",\n      value: function unshift(v5) {\n        var entry = {\n          data: v5,\n          next: this.head\n        };\n        if (this.length === 0) this.tail = entry;\n        this.head = entry;\n        ++this.length;\n      }\n    }, {\n      key: \"shift\",\n      value: function shift() {\n        if (this.length === 0) return;\n        var ret = this.head.data;\n        if (this.length === 1) this.head = this.tail = null;\n        else this.head = this.head.next;\n        --this.length;\n        return ret;\n      }\n    }, {\n      key: \"clear\",\n      value: function clear() {\n        this.head = this.tail = null;\n        this.length = 0;\n      }\n    }, {\n      key: \"join\",\n      value: function join(s5) {\n        if (this.length === 0) return \"\";\n        var p5 = this.head;\n        var ret = \"\" + p5.data;\n        while (p5 = p5.next) {\n          ret += s5 + p5.data;\n        }\n        return ret;\n      }\n    }, {\n      key: \"concat\",\n      value: function concat(n5) {\n        if (this.length === 0) return Buffer.alloc(0);\n        var ret = Buffer.allocUnsafe(n5 >>> 0);\n        var p5 = this.head;\n        var i5 = 0;\n        while (p5) {\n          copyBuffer(p5.data, ret, i5);\n          i5 += p5.data.length;\n          p5 = p5.next;\n        }\n        return ret;\n      }\n      // Consumes a specified amount of bytes or characters from the buffered data.\n    }, {\n      key: \"consume\",\n      value: function consume(n5, hasStrings) {\n        var ret;\n        if (n5 < this.head.data.length) {\n          ret = this.head.data.slice(0, n5);\n          this.head.data = this.head.data.slice(n5);\n        } else if (n5 === this.head.data.length) {\n          ret = this.shift();\n        } else {\n          ret = hasStrings ? this._getString(n5) : this._getBuffer(n5);\n        }\n        return ret;\n      }\n    }, {\n      key: \"first\",\n      value: function first() {\n        return this.head.data;\n      }\n      // Consumes a specified amount of characters from the buffered data.\n    }, {\n      key: \"_getString\",\n      value: function _getString(n5) {\n        var p5 = this.head;\n        var c5 = 1;\n        var ret = p5.data;\n        n5 -= ret.length;\n        while (p5 = p5.next) {\n          var str = p5.data;\n          var nb = n5 > str.length ? str.length : n5;\n          if (nb === str.length) ret += str;\n          else ret += str.slice(0, n5);\n          n5 -= nb;\n          if (n5 === 0) {\n            if (nb === str.length) {\n              ++c5;\n              if (p5.next) this.head = p5.next;\n              else this.head = this.tail = null;\n            } else {\n              this.head = p5;\n              p5.data = str.slice(nb);\n            }\n            break;\n          }\n          ++c5;\n        }\n        this.length -= c5;\n        return ret;\n      }\n      // Consumes a specified amount of bytes from the buffered data.\n    }, {\n      key: \"_getBuffer\",\n      value: function _getBuffer(n5) {\n        var ret = Buffer.allocUnsafe(n5);\n        var p5 = this.head;\n        var c5 = 1;\n        p5.data.copy(ret);\n        n5 -= p5.data.length;\n        while (p5 = p5.next) {\n          var buf = p5.data;\n          var nb = n5 > buf.length ? buf.length : n5;\n          buf.copy(ret, ret.length - n5, 0, nb);\n          n5 -= nb;\n          if (n5 === 0) {\n            if (nb === buf.length) {\n              ++c5;\n              if (p5.next) this.head = p5.next;\n              else this.head = this.tail = null;\n            } else {\n              this.head = p5;\n              p5.data = buf.slice(nb);\n            }\n            break;\n          }\n          ++c5;\n        }\n        this.length -= c5;\n        return ret;\n      }\n      // Make sure the linked list only shows the minimal necessary information.\n    }, {\n      key: custom,\n      value: function value(_4, options) {\n        return inspect(this, _objectSpread({}, options, {\n          // Only inspect one level.\n          depth: 0,\n          // It should not recurse.\n          customInspect: false\n        }));\n      }\n    }]);\n    return BufferList;\n  })();\n  return exports$d;\n}\nvar exports$c = {};\nvar _dewExec$c = false;\nfunction dew$c() {\n  if (_dewExec$c) return exports$c;\n  _dewExec$c = true;\n  var process$1 = process2;\n  function destroy(err, cb) {\n    var _this = this;\n    var readableDestroyed = this._readableState && this._readableState.destroyed;\n    var writableDestroyed = this._writableState && this._writableState.destroyed;\n    if (readableDestroyed || writableDestroyed) {\n      if (cb) {\n        cb(err);\n      } else if (err) {\n        if (!this._writableState) {\n          process$1.nextTick(emitErrorNT, this, err);\n        } else if (!this._writableState.errorEmitted) {\n          this._writableState.errorEmitted = true;\n          process$1.nextTick(emitErrorNT, this, err);\n        }\n      }\n      return this;\n    }\n    if (this._readableState) {\n      this._readableState.destroyed = true;\n    }\n    if (this._writableState) {\n      this._writableState.destroyed = true;\n    }\n    this._destroy(err || null, function(err2) {\n      if (!cb && err2) {\n        if (!_this._writableState) {\n          process$1.nextTick(emitErrorAndCloseNT, _this, err2);\n        } else if (!_this._writableState.errorEmitted) {\n          _this._writableState.errorEmitted = true;\n          process$1.nextTick(emitErrorAndCloseNT, _this, err2);\n        } else {\n          process$1.nextTick(emitCloseNT, _this);\n        }\n      } else if (cb) {\n        process$1.nextTick(emitCloseNT, _this);\n        cb(err2);\n      } else {\n        process$1.nextTick(emitCloseNT, _this);\n      }\n    });\n    return this;\n  }\n  function emitErrorAndCloseNT(self2, err) {\n    emitErrorNT(self2, err);\n    emitCloseNT(self2);\n  }\n  function emitCloseNT(self2) {\n    if (self2._writableState && !self2._writableState.emitClose) return;\n    if (self2._readableState && !self2._readableState.emitClose) return;\n    self2.emit(\"close\");\n  }\n  function 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    if (this._writableState) {\n      this._writableState.destroyed = false;\n      this._writableState.ended = false;\n      this._writableState.ending = false;\n      this._writableState.finalCalled = false;\n      this._writableState.prefinished = false;\n      this._writableState.finished = false;\n      this._writableState.errorEmitted = false;\n    }\n  }\n  function emitErrorNT(self2, err) {\n    self2.emit(\"error\", err);\n  }\n  function errorOrDestroy(stream2, err) {\n    var rState = stream2._readableState;\n    var wState = stream2._writableState;\n    if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream2.destroy(err);\n    else stream2.emit(\"error\", err);\n  }\n  exports$c = {\n    destroy,\n    undestroy,\n    errorOrDestroy\n  };\n  return exports$c;\n}\nvar exports$b = {};\nvar _dewExec$b = false;\nfunction dew$b() {\n  if (_dewExec$b) return exports$b;\n  _dewExec$b = true;\n  const codes = {};\n  function createErrorType(code, message, Base) {\n    if (!Base) {\n      Base = Error;\n    }\n    function getMessage(arg1, arg2, arg3) {\n      if (typeof message === \"string\") {\n        return message;\n      } else {\n        return message(arg1, arg2, arg3);\n      }\n    }\n    class NodeError extends Base {\n      constructor(arg1, arg2, arg3) {\n        super(getMessage(arg1, arg2, arg3));\n      }\n    }\n    NodeError.prototype.name = Base.name;\n    NodeError.prototype.code = code;\n    codes[code] = NodeError;\n  }\n  function oneOf(expected, thing) {\n    if (Array.isArray(expected)) {\n      const len = expected.length;\n      expected = expected.map((i5) => String(i5));\n      if (len > 2) {\n        return `one of ${thing} ${expected.slice(0, len - 1).join(\", \")}, or ` + expected[len - 1];\n      } else if (len === 2) {\n        return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n      } else {\n        return `of ${thing} ${expected[0]}`;\n      }\n    } else {\n      return `of ${thing} ${String(expected)}`;\n    }\n  }\n  function startsWith(str, search, pos) {\n    return str.substr(0, search.length) === search;\n  }\n  function endsWith(str, search, this_len) {\n    if (this_len === void 0 || this_len > str.length) {\n      this_len = str.length;\n    }\n    return str.substring(this_len - search.length, this_len) === search;\n  }\n  function includes(str, search, start) {\n    if (typeof start !== \"number\") {\n      start = 0;\n    }\n    if (start + search.length > str.length) {\n      return false;\n    } else {\n      return str.indexOf(search, start) !== -1;\n    }\n  }\n  createErrorType(\"ERR_INVALID_OPT_VALUE\", function(name2, value) {\n    return 'The value \"' + value + '\" is invalid for option \"' + name2 + '\"';\n  }, TypeError);\n  createErrorType(\"ERR_INVALID_ARG_TYPE\", function(name2, expected, actual) {\n    let determiner;\n    if (typeof expected === \"string\" && startsWith(expected, \"not \")) {\n      determiner = \"must not be\";\n      expected = expected.replace(/^not /, \"\");\n    } else {\n      determiner = \"must be\";\n    }\n    let msg;\n    if (endsWith(name2, \" argument\")) {\n      msg = `The ${name2} ${determiner} ${oneOf(expected, \"type\")}`;\n    } else {\n      const type = includes(name2, \".\") ? \"property\" : \"argument\";\n      msg = `The \"${name2}\" ${type} ${determiner} ${oneOf(expected, \"type\")}`;\n    }\n    msg += `. Received type ${typeof actual}`;\n    return msg;\n  }, TypeError);\n  createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\", \"stream.push() after EOF\");\n  createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\", function(name2) {\n    return \"The \" + name2 + \" method is not implemented\";\n  });\n  createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\", \"Premature close\");\n  createErrorType(\"ERR_STREAM_DESTROYED\", function(name2) {\n    return \"Cannot call \" + name2 + \" after a stream was destroyed\";\n  });\n  createErrorType(\"ERR_MULTIPLE_CALLBACK\", \"Callback called multiple times\");\n  createErrorType(\"ERR_STREAM_CANNOT_PIPE\", \"Cannot pipe, not readable\");\n  createErrorType(\"ERR_STREAM_WRITE_AFTER_END\", \"write after end\");\n  createErrorType(\"ERR_STREAM_NULL_VALUES\", \"May not write null values to stream\", TypeError);\n  createErrorType(\"ERR_UNKNOWN_ENCODING\", function(arg) {\n    return \"Unknown encoding: \" + arg;\n  }, TypeError);\n  createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\", \"stream.unshift() after end event\");\n  exports$b.codes = codes;\n  return exports$b;\n}\nvar exports$a = {};\nvar _dewExec$a = false;\nfunction dew$a() {\n  if (_dewExec$a) return exports$a;\n  _dewExec$a = true;\n  var ERR_INVALID_OPT_VALUE = dew$b().codes.ERR_INVALID_OPT_VALUE;\n  function highWaterMarkFrom(options, isDuplex, duplexKey) {\n    return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n  }\n  function getHighWaterMark(state, options, duplexKey, isDuplex) {\n    var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n    if (hwm != null) {\n      if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n        var name2 = isDuplex ? duplexKey : \"highWaterMark\";\n        throw new ERR_INVALID_OPT_VALUE(name2, hwm);\n      }\n      return Math.floor(hwm);\n    }\n    return state.objectMode ? 16 : 16 * 1024;\n  }\n  exports$a = {\n    getHighWaterMark\n  };\n  return exports$a;\n}\nvar exports$9 = {};\nvar _dewExec$9 = false;\nvar _global$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$9() {\n  if (_dewExec$9) return exports$9;\n  _dewExec$9 = true;\n  exports$9 = deprecate;\n  function deprecate(fn, msg) {\n    if (config2(\"noDeprecation\")) {\n      return fn;\n    }\n    var warned = false;\n    function deprecated() {\n      if (!warned) {\n        if (config2(\"throwDeprecation\")) {\n          throw new Error(msg);\n        } else if (config2(\"traceDeprecation\")) {\n          console.trace(msg);\n        } else {\n          console.warn(msg);\n        }\n        warned = true;\n      }\n      return fn.apply(this || _global$2, arguments);\n    }\n    return deprecated;\n  }\n  function config2(name2) {\n    try {\n      if (!_global$2.localStorage) return false;\n    } catch (_4) {\n      return false;\n    }\n    var val = _global$2.localStorage[name2];\n    if (null == val) return false;\n    return String(val).toLowerCase() === \"true\";\n  }\n  return exports$9;\n}\nvar exports$8 = {};\nvar _dewExec$8 = false;\nvar _global$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$8() {\n  if (_dewExec$8) return exports$8;\n  _dewExec$8 = true;\n  var process$1 = process2;\n  exports$8 = Writable;\n  function CorkedRequest(state) {\n    var _this = this;\n    this.next = null;\n    this.entry = null;\n    this.finish = function() {\n      onCorkedFinish(_this, state);\n    };\n  }\n  var Duplex;\n  Writable.WritableState = WritableState;\n  var internalUtil = {\n    deprecate: dew$9()\n  };\n  var Stream = dew$e();\n  var Buffer = buffer.Buffer;\n  var OurUint8Array = _global$1.Uint8Array || function() {\n  };\n  function _uint8ArrayToBuffer(chunk) {\n    return Buffer.from(chunk);\n  }\n  function _isUint8Array(obj) {\n    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n  }\n  var destroyImpl = dew$c();\n  var _require = dew$a(), getHighWaterMark = _require.getHighWaterMark;\n  var _require$codes = dew$b().codes, ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n  var errorOrDestroy = destroyImpl.errorOrDestroy;\n  dew$f()(Writable, Stream);\n  function nop() {\n  }\n  function WritableState(options, stream2, isDuplex) {\n    Duplex = Duplex || dew$7();\n    options = options || {};\n    if (typeof isDuplex !== \"boolean\") isDuplex = stream2 instanceof Duplex;\n    this.objectMode = !!options.objectMode;\n    if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n    this.highWaterMark = getHighWaterMark(this, options, \"writableHighWaterMark\", isDuplex);\n    this.finalCalled = false;\n    this.needDrain = false;\n    this.ending = false;\n    this.ended = false;\n    this.finished = false;\n    this.destroyed = false;\n    var noDecode = options.decodeStrings === false;\n    this.decodeStrings = !noDecode;\n    this.defaultEncoding = options.defaultEncoding || \"utf8\";\n    this.length = 0;\n    this.writing = false;\n    this.corked = 0;\n    this.sync = true;\n    this.bufferProcessing = false;\n    this.onwrite = function(er) {\n      onwrite(stream2, er);\n    };\n    this.writecb = null;\n    this.writelen = 0;\n    this.bufferedRequest = null;\n    this.lastBufferedRequest = null;\n    this.pendingcb = 0;\n    this.prefinished = false;\n    this.errorEmitted = false;\n    this.emitClose = options.emitClose !== false;\n    this.autoDestroy = !!options.autoDestroy;\n    this.bufferedRequestCount = 0;\n    this.corkedRequestsFree = new CorkedRequest(this);\n  }\n  WritableState.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  (function() {\n    try {\n      Object.defineProperty(WritableState.prototype, \"buffer\", {\n        get: internalUtil.deprecate(function writableStateBufferGetter() {\n          return this.getBuffer();\n        }, \"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\", \"DEP0003\")\n      });\n    } catch (_4) {\n    }\n  })();\n  var realHasInstance;\n  if (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 value(object) {\n        if (realHasInstance.call(this, object)) return true;\n        if (this !== Writable) return false;\n        return object && object._writableState instanceof WritableState;\n      }\n    });\n  } else {\n    realHasInstance = function realHasInstance2(object) {\n      return object instanceof this;\n    };\n  }\n  function Writable(options) {\n    Duplex = Duplex || dew$7();\n    var isDuplex = this instanceof Duplex;\n    if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n    this._writableState = new WritableState(options, this, isDuplex);\n    this.writable = true;\n    if (options) {\n      if (typeof options.write === \"function\") this._write = options.write;\n      if (typeof options.writev === \"function\") this._writev = options.writev;\n      if (typeof options.destroy === \"function\") this._destroy = options.destroy;\n      if (typeof options.final === \"function\") this._final = options.final;\n    }\n    Stream.call(this);\n  }\n  Writable.prototype.pipe = function() {\n    errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n  };\n  function writeAfterEnd(stream2, cb) {\n    var er = new ERR_STREAM_WRITE_AFTER_END();\n    errorOrDestroy(stream2, er);\n    process$1.nextTick(cb, er);\n  }\n  function validChunk(stream2, state, chunk, cb) {\n    var er;\n    if (chunk === null) {\n      er = new ERR_STREAM_NULL_VALUES();\n    } else if (typeof chunk !== \"string\" && !state.objectMode) {\n      er = new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\"], chunk);\n    }\n    if (er) {\n      errorOrDestroy(stream2, er);\n      process$1.nextTick(cb, er);\n      return false;\n    }\n    return true;\n  }\n  Writable.prototype.write = function(chunk, encoding, cb) {\n    var state = this._writableState;\n    var ret = false;\n    var isBuf = !state.objectMode && _isUint8Array(chunk);\n    if (isBuf && !Buffer.isBuffer(chunk)) {\n      chunk = _uint8ArrayToBuffer(chunk);\n    }\n    if (typeof encoding === \"function\") {\n      cb = encoding;\n      encoding = null;\n    }\n    if (isBuf) encoding = \"buffer\";\n    else if (!encoding) encoding = state.defaultEncoding;\n    if (typeof cb !== \"function\") cb = nop;\n    if (state.ending) writeAfterEnd(this, cb);\n    else if (isBuf || validChunk(this, state, chunk, cb)) {\n      state.pendingcb++;\n      ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n    }\n    return ret;\n  };\n  Writable.prototype.cork = function() {\n    this._writableState.corked++;\n  };\n  Writable.prototype.uncork = function() {\n    var state = this._writableState;\n    if (state.corked) {\n      state.corked--;\n      if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n    }\n  };\n  Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\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 ERR_UNKNOWN_ENCODING(encoding);\n    this._writableState.defaultEncoding = encoding;\n    return this;\n  };\n  Object.defineProperty(Writable.prototype, \"writableBuffer\", {\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 get() {\n      return this._writableState && this._writableState.getBuffer();\n    }\n  });\n  function 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  Object.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 get() {\n      return this._writableState.highWaterMark;\n    }\n  });\n  function writeOrBuffer(stream2, 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    state.length += len;\n    var ret = state.length < state.highWaterMark;\n    if (!ret) state.needDrain = true;\n    if (state.writing || state.corked) {\n      var last = state.lastBufferedRequest;\n      state.lastBufferedRequest = {\n        chunk,\n        encoding,\n        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(stream2, state, false, len, chunk, encoding, cb);\n    }\n    return ret;\n  }\n  function doWrite(stream2, state, writev, len, chunk, encoding, cb) {\n    state.writelen = len;\n    state.writecb = cb;\n    state.writing = true;\n    state.sync = true;\n    if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED(\"write\"));\n    else if (writev) stream2._writev(chunk, state.onwrite);\n    else stream2._write(chunk, encoding, state.onwrite);\n    state.sync = false;\n  }\n  function onwriteError(stream2, state, sync, er, cb) {\n    --state.pendingcb;\n    if (sync) {\n      process$1.nextTick(cb, er);\n      process$1.nextTick(finishMaybe, stream2, state);\n      stream2._writableState.errorEmitted = true;\n      errorOrDestroy(stream2, er);\n    } else {\n      cb(er);\n      stream2._writableState.errorEmitted = true;\n      errorOrDestroy(stream2, er);\n      finishMaybe(stream2, state);\n    }\n  }\n  function onwriteStateUpdate(state) {\n    state.writing = false;\n    state.writecb = null;\n    state.length -= state.writelen;\n    state.writelen = 0;\n  }\n  function onwrite(stream2, er) {\n    var state = stream2._writableState;\n    var sync = state.sync;\n    var cb = state.writecb;\n    if (typeof cb !== \"function\") throw new ERR_MULTIPLE_CALLBACK();\n    onwriteStateUpdate(state);\n    if (er) onwriteError(stream2, state, sync, er, cb);\n    else {\n      var finished = needFinish(state) || stream2.destroyed;\n      if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n        clearBuffer(stream2, state);\n      }\n      if (sync) {\n        process$1.nextTick(afterWrite, stream2, state, finished, cb);\n      } else {\n        afterWrite(stream2, state, finished, cb);\n      }\n    }\n  }\n  function afterWrite(stream2, state, finished, cb) {\n    if (!finished) onwriteDrain(stream2, state);\n    state.pendingcb--;\n    cb();\n    finishMaybe(stream2, state);\n  }\n  function onwriteDrain(stream2, state) {\n    if (state.length === 0 && state.needDrain) {\n      state.needDrain = false;\n      stream2.emit(\"drain\");\n    }\n  }\n  function clearBuffer(stream2, state) {\n    state.bufferProcessing = true;\n    var entry = state.bufferedRequest;\n    if (stream2._writev && entry && entry.next) {\n      var l5 = state.bufferedRequestCount;\n      var buffer2 = new Array(l5);\n      var holder = state.corkedRequestsFree;\n      holder.entry = entry;\n      var count = 0;\n      var allBuffers = true;\n      while (entry) {\n        buffer2[count] = entry;\n        if (!entry.isBuf) allBuffers = false;\n        entry = entry.next;\n        count += 1;\n      }\n      buffer2.allBuffers = allBuffers;\n      doWrite(stream2, state, true, state.length, buffer2, \"\", holder.finish);\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      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        doWrite(stream2, state, false, len, chunk, encoding, cb);\n        entry = entry.next;\n        state.bufferedRequestCount--;\n        if (state.writing) {\n          break;\n        }\n      }\n      if (entry === null) state.lastBufferedRequest = null;\n    }\n    state.bufferedRequest = entry;\n    state.bufferProcessing = false;\n  }\n  Writable.prototype._write = function(chunk, encoding, cb) {\n    cb(new ERR_METHOD_NOT_IMPLEMENTED(\"_write()\"));\n  };\n  Writable.prototype._writev = null;\n  Writable.prototype.end = function(chunk, encoding, cb) {\n    var state = this._writableState;\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    if (chunk !== null && chunk !== void 0) this.write(chunk, encoding);\n    if (state.corked) {\n      state.corked = 1;\n      this.uncork();\n    }\n    if (!state.ending) endWritable(this, state, cb);\n    return this;\n  };\n  Object.defineProperty(Writable.prototype, \"writableLength\", {\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 get() {\n      return this._writableState.length;\n    }\n  });\n  function needFinish(state) {\n    return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n  }\n  function callFinal(stream2, state) {\n    stream2._final(function(err) {\n      state.pendingcb--;\n      if (err) {\n        errorOrDestroy(stream2, err);\n      }\n      state.prefinished = true;\n      stream2.emit(\"prefinish\");\n      finishMaybe(stream2, state);\n    });\n  }\n  function prefinish(stream2, state) {\n    if (!state.prefinished && !state.finalCalled) {\n      if (typeof stream2._final === \"function\" && !state.destroyed) {\n        state.pendingcb++;\n        state.finalCalled = true;\n        process$1.nextTick(callFinal, stream2, state);\n      } else {\n        state.prefinished = true;\n        stream2.emit(\"prefinish\");\n      }\n    }\n  }\n  function finishMaybe(stream2, state) {\n    var need = needFinish(state);\n    if (need) {\n      prefinish(stream2, state);\n      if (state.pendingcb === 0) {\n        state.finished = true;\n        stream2.emit(\"finish\");\n        if (state.autoDestroy) {\n          var rState = stream2._readableState;\n          if (!rState || rState.autoDestroy && rState.endEmitted) {\n            stream2.destroy();\n          }\n        }\n      }\n    }\n    return need;\n  }\n  function endWritable(stream2, state, cb) {\n    state.ending = true;\n    finishMaybe(stream2, state);\n    if (cb) {\n      if (state.finished) process$1.nextTick(cb);\n      else stream2.once(\"finish\", cb);\n    }\n    state.ended = true;\n    stream2.writable = false;\n  }\n  function 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    state.corkedRequestsFree.next = corkReq;\n  }\n  Object.defineProperty(Writable.prototype, \"destroyed\", {\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 get() {\n      if (this._writableState === void 0) {\n        return false;\n      }\n      return this._writableState.destroyed;\n    },\n    set: function set(value) {\n      if (!this._writableState) {\n        return;\n      }\n      this._writableState.destroyed = value;\n    }\n  });\n  Writable.prototype.destroy = destroyImpl.destroy;\n  Writable.prototype._undestroy = destroyImpl.undestroy;\n  Writable.prototype._destroy = function(err, cb) {\n    cb(err);\n  };\n  return exports$8;\n}\nvar exports$7 = {};\nvar _dewExec$7 = false;\nfunction dew$7() {\n  if (_dewExec$7) return exports$7;\n  _dewExec$7 = true;\n  var process$1 = process2;\n  var objectKeys = Object.keys || function(obj) {\n    var keys2 = [];\n    for (var key in obj) {\n      keys2.push(key);\n    }\n    return keys2;\n  };\n  exports$7 = Duplex;\n  var Readable2 = dew$3();\n  var Writable = dew$8();\n  dew$f()(Duplex, Readable2);\n  {\n    var keys = objectKeys(Writable.prototype);\n    for (var v5 = 0; v5 < keys.length; v5++) {\n      var method = keys[v5];\n      if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n    }\n  }\n  function Duplex(options) {\n    if (!(this instanceof Duplex)) return new Duplex(options);\n    Readable2.call(this, options);\n    Writable.call(this, options);\n    this.allowHalfOpen = true;\n    if (options) {\n      if (options.readable === false) this.readable = false;\n      if (options.writable === false) this.writable = false;\n      if (options.allowHalfOpen === false) {\n        this.allowHalfOpen = false;\n        this.once(\"end\", onend);\n      }\n    }\n  }\n  Object.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 get() {\n      return this._writableState.highWaterMark;\n    }\n  });\n  Object.defineProperty(Duplex.prototype, \"writableBuffer\", {\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 get() {\n      return this._writableState && this._writableState.getBuffer();\n    }\n  });\n  Object.defineProperty(Duplex.prototype, \"writableLength\", {\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 get() {\n      return this._writableState.length;\n    }\n  });\n  function onend() {\n    if (this._writableState.ended) return;\n    process$1.nextTick(onEndNT, this);\n  }\n  function onEndNT(self2) {\n    self2.end();\n  }\n  Object.defineProperty(Duplex.prototype, \"destroyed\", {\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 get() {\n      if (this._readableState === void 0 || this._writableState === void 0) {\n        return false;\n      }\n      return this._readableState.destroyed && this._writableState.destroyed;\n    },\n    set: function set(value) {\n      if (this._readableState === void 0 || this._writableState === void 0) {\n        return;\n      }\n      this._readableState.destroyed = value;\n      this._writableState.destroyed = value;\n    }\n  });\n  return exports$7;\n}\nvar exports$6 = {};\nvar _dewExec$6 = false;\nfunction dew$6() {\n  if (_dewExec$6) return exports$6;\n  _dewExec$6 = true;\n  var ERR_STREAM_PREMATURE_CLOSE = dew$b().codes.ERR_STREAM_PREMATURE_CLOSE;\n  function once2(callback) {\n    var called = false;\n    return function() {\n      if (called) return;\n      called = true;\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      callback.apply(this, args);\n    };\n  }\n  function noop2() {\n  }\n  function isRequest(stream2) {\n    return stream2.setHeader && typeof stream2.abort === \"function\";\n  }\n  function eos(stream2, opts, callback) {\n    if (typeof opts === \"function\") return eos(stream2, null, opts);\n    if (!opts) opts = {};\n    callback = once2(callback || noop2);\n    var readable = opts.readable || opts.readable !== false && stream2.readable;\n    var writable = opts.writable || opts.writable !== false && stream2.writable;\n    var onlegacyfinish = function onlegacyfinish2() {\n      if (!stream2.writable) onfinish();\n    };\n    var writableEnded = stream2._writableState && stream2._writableState.finished;\n    var onfinish = function onfinish2() {\n      writable = false;\n      writableEnded = true;\n      if (!readable) callback.call(stream2);\n    };\n    var readableEnded = stream2._readableState && stream2._readableState.endEmitted;\n    var onend = function onend2() {\n      readable = false;\n      readableEnded = true;\n      if (!writable) callback.call(stream2);\n    };\n    var onerror = function onerror2(err) {\n      callback.call(stream2, err);\n    };\n    var onclose = function onclose2() {\n      var err;\n      if (readable && !readableEnded) {\n        if (!stream2._readableState || !stream2._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n        return callback.call(stream2, err);\n      }\n      if (writable && !writableEnded) {\n        if (!stream2._writableState || !stream2._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n        return callback.call(stream2, err);\n      }\n    };\n    var onrequest = function onrequest2() {\n      stream2.req.on(\"finish\", onfinish);\n    };\n    if (isRequest(stream2)) {\n      stream2.on(\"complete\", onfinish);\n      stream2.on(\"abort\", onclose);\n      if (stream2.req) onrequest();\n      else stream2.on(\"request\", onrequest);\n    } else if (writable && !stream2._writableState) {\n      stream2.on(\"end\", onlegacyfinish);\n      stream2.on(\"close\", onlegacyfinish);\n    }\n    stream2.on(\"end\", onend);\n    stream2.on(\"finish\", onfinish);\n    if (opts.error !== false) stream2.on(\"error\", onerror);\n    stream2.on(\"close\", onclose);\n    return function() {\n      stream2.removeListener(\"complete\", onfinish);\n      stream2.removeListener(\"abort\", onclose);\n      stream2.removeListener(\"request\", onrequest);\n      if (stream2.req) stream2.req.removeListener(\"finish\", onfinish);\n      stream2.removeListener(\"end\", onlegacyfinish);\n      stream2.removeListener(\"close\", onlegacyfinish);\n      stream2.removeListener(\"finish\", onfinish);\n      stream2.removeListener(\"end\", onend);\n      stream2.removeListener(\"error\", onerror);\n      stream2.removeListener(\"close\", onclose);\n    };\n  }\n  exports$6 = eos;\n  return exports$6;\n}\nvar exports$5 = {};\nvar _dewExec$5 = false;\nfunction dew$5() {\n  if (_dewExec$5) return exports$5;\n  _dewExec$5 = true;\n  var process$1 = process2;\n  var _Object$setPrototypeO;\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n    return obj;\n  }\n  var finished = dew$6();\n  var kLastResolve = /* @__PURE__ */ Symbol(\"lastResolve\");\n  var kLastReject = /* @__PURE__ */ Symbol(\"lastReject\");\n  var kError = /* @__PURE__ */ Symbol(\"error\");\n  var kEnded = /* @__PURE__ */ Symbol(\"ended\");\n  var kLastPromise = /* @__PURE__ */ Symbol(\"lastPromise\");\n  var kHandlePromise = /* @__PURE__ */ Symbol(\"handlePromise\");\n  var kStream = /* @__PURE__ */ Symbol(\"stream\");\n  function createIterResult2(value, done) {\n    return {\n      value,\n      done\n    };\n  }\n  function readAndResolve(iter) {\n    var resolve = iter[kLastResolve];\n    if (resolve !== null) {\n      var data = iter[kStream].read();\n      if (data !== null) {\n        iter[kLastPromise] = null;\n        iter[kLastResolve] = null;\n        iter[kLastReject] = null;\n        resolve(createIterResult2(data, false));\n      }\n    }\n  }\n  function onReadable(iter) {\n    process$1.nextTick(readAndResolve, iter);\n  }\n  function wrapForNext(lastPromise, iter) {\n    return function(resolve, reject) {\n      lastPromise.then(function() {\n        if (iter[kEnded]) {\n          resolve(createIterResult2(void 0, true));\n          return;\n        }\n        iter[kHandlePromise](resolve, reject);\n      }, reject);\n    };\n  }\n  var AsyncIteratorPrototype = Object.getPrototypeOf(function() {\n  });\n  var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n    get stream() {\n      return this[kStream];\n    },\n    next: function next() {\n      var _this = this;\n      var error = this[kError];\n      if (error !== null) {\n        return Promise.reject(error);\n      }\n      if (this[kEnded]) {\n        return Promise.resolve(createIterResult2(void 0, true));\n      }\n      if (this[kStream].destroyed) {\n        return new Promise(function(resolve, reject) {\n          process$1.nextTick(function() {\n            if (_this[kError]) {\n              reject(_this[kError]);\n            } else {\n              resolve(createIterResult2(void 0, true));\n            }\n          });\n        });\n      }\n      var lastPromise = this[kLastPromise];\n      var promise;\n      if (lastPromise) {\n        promise = new Promise(wrapForNext(lastPromise, this));\n      } else {\n        var data = this[kStream].read();\n        if (data !== null) {\n          return Promise.resolve(createIterResult2(data, false));\n        }\n        promise = new Promise(this[kHandlePromise]);\n      }\n      this[kLastPromise] = promise;\n      return promise;\n    }\n  }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function() {\n    return this;\n  }), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n    var _this2 = this;\n    return new Promise(function(resolve, reject) {\n      _this2[kStream].destroy(null, function(err) {\n        if (err) {\n          reject(err);\n          return;\n        }\n        resolve(createIterResult2(void 0, true));\n      });\n    });\n  }), _Object$setPrototypeO), AsyncIteratorPrototype);\n  var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator2(stream2) {\n    var _Object$create;\n    var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n      value: stream2,\n      writable: true\n    }), _defineProperty(_Object$create, kLastResolve, {\n      value: null,\n      writable: true\n    }), _defineProperty(_Object$create, kLastReject, {\n      value: null,\n      writable: true\n    }), _defineProperty(_Object$create, kError, {\n      value: null,\n      writable: true\n    }), _defineProperty(_Object$create, kEnded, {\n      value: stream2._readableState.endEmitted,\n      writable: true\n    }), _defineProperty(_Object$create, kHandlePromise, {\n      value: function value(resolve, reject) {\n        var data = iterator[kStream].read();\n        if (data) {\n          iterator[kLastPromise] = null;\n          iterator[kLastResolve] = null;\n          iterator[kLastReject] = null;\n          resolve(createIterResult2(data, false));\n        } else {\n          iterator[kLastResolve] = resolve;\n          iterator[kLastReject] = reject;\n        }\n      },\n      writable: true\n    }), _Object$create));\n    iterator[kLastPromise] = null;\n    finished(stream2, function(err) {\n      if (err && err.code !== \"ERR_STREAM_PREMATURE_CLOSE\") {\n        var reject = iterator[kLastReject];\n        if (reject !== null) {\n          iterator[kLastPromise] = null;\n          iterator[kLastResolve] = null;\n          iterator[kLastReject] = null;\n          reject(err);\n        }\n        iterator[kError] = err;\n        return;\n      }\n      var resolve = iterator[kLastResolve];\n      if (resolve !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult2(void 0, true));\n      }\n      iterator[kEnded] = true;\n    });\n    stream2.on(\"readable\", onReadable.bind(null, iterator));\n    return iterator;\n  };\n  exports$5 = createReadableStreamAsyncIterator;\n  return exports$5;\n}\nvar exports$4 = {};\nvar _dewExec$4 = false;\nfunction dew$4() {\n  if (_dewExec$4) return exports$4;\n  _dewExec$4 = true;\n  exports$4 = function() {\n    throw new Error(\"Readable.from is not available in the browser\");\n  };\n  return exports$4;\n}\nvar exports$3 = {};\nvar _dewExec$3 = false;\nvar _global2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3() {\n  if (_dewExec$3) return exports$3;\n  _dewExec$3 = true;\n  var process$1 = process2;\n  exports$3 = Readable2;\n  var Duplex;\n  Readable2.ReadableState = ReadableState;\n  y.EventEmitter;\n  var EElistenerCount = function EElistenerCount2(emitter, type) {\n    return emitter.listeners(type).length;\n  };\n  var Stream = dew$e();\n  var Buffer = buffer.Buffer;\n  var OurUint8Array = _global2.Uint8Array || function() {\n  };\n  function _uint8ArrayToBuffer(chunk) {\n    return Buffer.from(chunk);\n  }\n  function _isUint8Array(obj) {\n    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n  }\n  var debugUtil = X;\n  var debug;\n  if (debugUtil && debugUtil.debuglog) {\n    debug = debugUtil.debuglog(\"stream\");\n  } else {\n    debug = function debug2() {\n    };\n  }\n  var BufferList = dew$d();\n  var destroyImpl = dew$c();\n  var _require = dew$a(), getHighWaterMark = _require.getHighWaterMark;\n  var _require$codes = dew$b().codes, ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n  var StringDecoder2;\n  var createReadableStreamAsyncIterator;\n  var from;\n  dew$f()(Readable2, Stream);\n  var errorOrDestroy = destroyImpl.errorOrDestroy;\n  var kProxyEvents = [\"error\", \"close\", \"destroy\", \"pause\", \"resume\"];\n  function prependListener2(emitter, event, fn) {\n    if (typeof emitter.prependListener === \"function\") return emitter.prependListener(event, fn);\n    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);\n    else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);\n    else emitter._events[event] = [fn, emitter._events[event]];\n  }\n  function ReadableState(options, stream2, isDuplex) {\n    Duplex = Duplex || dew$7();\n    options = options || {};\n    if (typeof isDuplex !== \"boolean\") isDuplex = stream2 instanceof Duplex;\n    this.objectMode = !!options.objectMode;\n    if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n    this.highWaterMark = getHighWaterMark(this, options, \"readableHighWaterMark\", isDuplex);\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    this.sync = true;\n    this.needReadable = false;\n    this.emittedReadable = false;\n    this.readableListening = false;\n    this.resumeScheduled = false;\n    this.paused = true;\n    this.emitClose = options.emitClose !== false;\n    this.autoDestroy = !!options.autoDestroy;\n    this.destroyed = false;\n    this.defaultEncoding = options.defaultEncoding || \"utf8\";\n    this.awaitDrain = 0;\n    this.readingMore = false;\n    this.decoder = null;\n    this.encoding = null;\n    if (options.encoding) {\n      if (!StringDecoder2) StringDecoder2 = e$12.StringDecoder;\n      this.decoder = new StringDecoder2(options.encoding);\n      this.encoding = options.encoding;\n    }\n  }\n  function Readable2(options) {\n    Duplex = Duplex || dew$7();\n    if (!(this instanceof Readable2)) return new Readable2(options);\n    var isDuplex = this instanceof Duplex;\n    this._readableState = new ReadableState(options, this, isDuplex);\n    this.readable = true;\n    if (options) {\n      if (typeof options.read === \"function\") this._read = options.read;\n      if (typeof options.destroy === \"function\") this._destroy = options.destroy;\n    }\n    Stream.call(this);\n  }\n  Object.defineProperty(Readable2.prototype, \"destroyed\", {\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 get() {\n      if (this._readableState === void 0) {\n        return false;\n      }\n      return this._readableState.destroyed;\n    },\n    set: function set(value) {\n      if (!this._readableState) {\n        return;\n      }\n      this._readableState.destroyed = value;\n    }\n  });\n  Readable2.prototype.destroy = destroyImpl.destroy;\n  Readable2.prototype._undestroy = destroyImpl.undestroy;\n  Readable2.prototype._destroy = function(err, cb) {\n    cb(err);\n  };\n  Readable2.prototype.push = function(chunk, encoding) {\n    var state = this._readableState;\n    var skipChunkCheck;\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    return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n  };\n  Readable2.prototype.unshift = function(chunk) {\n    return readableAddChunk(this, chunk, null, true, false);\n  };\n  function readableAddChunk(stream2, chunk, encoding, addToFront, skipChunkCheck) {\n    debug(\"readableAddChunk\", chunk);\n    var state = stream2._readableState;\n    if (chunk === null) {\n      state.reading = false;\n      onEofChunk(stream2, state);\n    } else {\n      var er;\n      if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n      if (er) {\n        errorOrDestroy(stream2, 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        if (addToFront) {\n          if (state.endEmitted) errorOrDestroy(stream2, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());\n          else addChunk(stream2, state, chunk, true);\n        } else if (state.ended) {\n          errorOrDestroy(stream2, new ERR_STREAM_PUSH_AFTER_EOF());\n        } else if (state.destroyed) {\n          return false;\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(stream2, state, chunk, false);\n            else maybeReadMore(stream2, state);\n          } else {\n            addChunk(stream2, state, chunk, false);\n          }\n        }\n      } else if (!addToFront) {\n        state.reading = false;\n        maybeReadMore(stream2, state);\n      }\n    }\n    return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n  }\n  function addChunk(stream2, state, chunk, addToFront) {\n    if (state.flowing && state.length === 0 && !state.sync) {\n      state.awaitDrain = 0;\n      stream2.emit(\"data\", chunk);\n    } else {\n      state.length += state.objectMode ? 1 : chunk.length;\n      if (addToFront) state.buffer.unshift(chunk);\n      else state.buffer.push(chunk);\n      if (state.needReadable) emitReadable(stream2);\n    }\n    maybeReadMore(stream2, state);\n  }\n  function chunkInvalid(state, chunk) {\n    var er;\n    if (!_isUint8Array(chunk) && typeof chunk !== \"string\" && chunk !== void 0 && !state.objectMode) {\n      er = new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], chunk);\n    }\n    return er;\n  }\n  Readable2.prototype.isPaused = function() {\n    return this._readableState.flowing === false;\n  };\n  Readable2.prototype.setEncoding = function(enc) {\n    if (!StringDecoder2) StringDecoder2 = e$12.StringDecoder;\n    var decoder = new StringDecoder2(enc);\n    this._readableState.decoder = decoder;\n    this._readableState.encoding = this._readableState.decoder.encoding;\n    var p5 = this._readableState.buffer.head;\n    var content = \"\";\n    while (p5 !== null) {\n      content += decoder.write(p5.data);\n      p5 = p5.next;\n    }\n    this._readableState.buffer.clear();\n    if (content !== \"\") this._readableState.buffer.push(content);\n    this._readableState.length = content.length;\n    return this;\n  };\n  var MAX_HWM = 1073741824;\n  function computeNewHighWaterMark(n5) {\n    if (n5 >= MAX_HWM) {\n      n5 = MAX_HWM;\n    } else {\n      n5--;\n      n5 |= n5 >>> 1;\n      n5 |= n5 >>> 2;\n      n5 |= n5 >>> 4;\n      n5 |= n5 >>> 8;\n      n5 |= n5 >>> 16;\n      n5++;\n    }\n    return n5;\n  }\n  function howMuchToRead(n5, state) {\n    if (n5 <= 0 || state.length === 0 && state.ended) return 0;\n    if (state.objectMode) return 1;\n    if (n5 !== n5) {\n      if (state.flowing && state.length) return state.buffer.head.data.length;\n      else return state.length;\n    }\n    if (n5 > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n5);\n    if (n5 <= state.length) return n5;\n    if (!state.ended) {\n      state.needReadable = true;\n      return 0;\n    }\n    return state.length;\n  }\n  Readable2.prototype.read = function(n5) {\n    debug(\"read\", n5);\n    n5 = parseInt(n5, 10);\n    var state = this._readableState;\n    var nOrig = n5;\n    if (n5 !== 0) state.emittedReadable = false;\n    if (n5 === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n      debug(\"read: emitReadable\", state.length, state.ended);\n      if (state.length === 0 && state.ended) endReadable(this);\n      else emitReadable(this);\n      return null;\n    }\n    n5 = howMuchToRead(n5, state);\n    if (n5 === 0 && state.ended) {\n      if (state.length === 0) endReadable(this);\n      return null;\n    }\n    var doRead = state.needReadable;\n    debug(\"need readable\", doRead);\n    if (state.length === 0 || state.length - n5 < state.highWaterMark) {\n      doRead = true;\n      debug(\"length less than watermark\", doRead);\n    }\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 (state.length === 0) state.needReadable = true;\n      this._read(state.highWaterMark);\n      state.sync = false;\n      if (!state.reading) n5 = howMuchToRead(nOrig, state);\n    }\n    var ret;\n    if (n5 > 0) ret = fromList(n5, state);\n    else ret = null;\n    if (ret === null) {\n      state.needReadable = state.length <= state.highWaterMark;\n      n5 = 0;\n    } else {\n      state.length -= n5;\n      state.awaitDrain = 0;\n    }\n    if (state.length === 0) {\n      if (!state.ended) state.needReadable = true;\n      if (nOrig !== n5 && state.ended) endReadable(this);\n    }\n    if (ret !== null) this.emit(\"data\", ret);\n    return ret;\n  };\n  function onEofChunk(stream2, state) {\n    debug(\"onEofChunk\");\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    if (state.sync) {\n      emitReadable(stream2);\n    } else {\n      state.needReadable = false;\n      if (!state.emittedReadable) {\n        state.emittedReadable = true;\n        emitReadable_(stream2);\n      }\n    }\n  }\n  function emitReadable(stream2) {\n    var state = stream2._readableState;\n    debug(\"emitReadable\", state.needReadable, state.emittedReadable);\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      debug(\"emitReadable\", state.flowing);\n      state.emittedReadable = true;\n      process$1.nextTick(emitReadable_, stream2);\n    }\n  }\n  function emitReadable_(stream2) {\n    var state = stream2._readableState;\n    debug(\"emitReadable_\", state.destroyed, state.length, state.ended);\n    if (!state.destroyed && (state.length || state.ended)) {\n      stream2.emit(\"readable\");\n      state.emittedReadable = false;\n    }\n    state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n    flow(stream2);\n  }\n  function maybeReadMore(stream2, state) {\n    if (!state.readingMore) {\n      state.readingMore = true;\n      process$1.nextTick(maybeReadMore_, stream2, state);\n    }\n  }\n  function maybeReadMore_(stream2, state) {\n    while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n      var len = state.length;\n      debug(\"maybeReadMore read 0\");\n      stream2.read(0);\n      if (len === state.length)\n        break;\n    }\n    state.readingMore = false;\n  }\n  Readable2.prototype._read = function(n5) {\n    errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED(\"_read()\"));\n  };\n  Readable2.prototype.pipe = function(dest, pipeOpts) {\n    var src = this;\n    var state = this._readableState;\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    var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process$1.stdout && dest !== process$1.stderr;\n    var endFn = doEnd ? onend : unpipe;\n    if (state.endEmitted) process$1.nextTick(endFn);\n    else src.once(\"end\", endFn);\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    function onend() {\n      debug(\"onend\");\n      dest.end();\n    }\n    var ondrain = pipeOnDrain(src);\n    dest.on(\"drain\", ondrain);\n    var cleanedUp = false;\n    function cleanup() {\n      debug(\"cleanup\");\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      cleanedUp = true;\n      if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n    }\n    src.on(\"data\", ondata);\n    function ondata(chunk) {\n      debug(\"ondata\");\n      var ret = dest.write(chunk);\n      debug(\"dest.write\", ret);\n      if (ret === false) {\n        if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf3(state.pipes, dest) !== -1) && !cleanedUp) {\n          debug(\"false write response, pause\", state.awaitDrain);\n          state.awaitDrain++;\n        }\n        src.pause();\n      }\n    }\n    function onerror(er) {\n      debug(\"onerror\", er);\n      unpipe();\n      dest.removeListener(\"error\", onerror);\n      if (EElistenerCount(dest, \"error\") === 0) errorOrDestroy(dest, er);\n    }\n    prependListener2(dest, \"error\", onerror);\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    function unpipe() {\n      debug(\"unpipe\");\n      src.unpipe(dest);\n    }\n    dest.emit(\"pipe\", src);\n    if (!state.flowing) {\n      debug(\"pipe resume\");\n      src.resume();\n    }\n    return dest;\n  };\n  function pipeOnDrain(src) {\n    return function pipeOnDrainFunctionResult() {\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  Readable2.prototype.unpipe = function(dest) {\n    var state = this._readableState;\n    var unpipeInfo = {\n      hasUnpiped: false\n    };\n    if (state.pipesCount === 0) return this;\n    if (state.pipesCount === 1) {\n      if (dest && dest !== state.pipes) return this;\n      if (!dest) dest = state.pipes;\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    if (!dest) {\n      var dests = state.pipes;\n      var len = state.pipesCount;\n      state.pipes = null;\n      state.pipesCount = 0;\n      state.flowing = false;\n      for (var i5 = 0; i5 < len; i5++) {\n        dests[i5].emit(\"unpipe\", this, {\n          hasUnpiped: false\n        });\n      }\n      return this;\n    }\n    var index = indexOf3(state.pipes, dest);\n    if (index === -1) return this;\n    state.pipes.splice(index, 1);\n    state.pipesCount -= 1;\n    if (state.pipesCount === 1) state.pipes = state.pipes[0];\n    dest.emit(\"unpipe\", this, unpipeInfo);\n    return this;\n  };\n  Readable2.prototype.on = function(ev, fn) {\n    var res = Stream.prototype.on.call(this, ev, fn);\n    var state = this._readableState;\n    if (ev === \"data\") {\n      state.readableListening = this.listenerCount(\"readable\") > 0;\n      if (state.flowing !== false) this.resume();\n    } else if (ev === \"readable\") {\n      if (!state.endEmitted && !state.readableListening) {\n        state.readableListening = state.needReadable = true;\n        state.flowing = false;\n        state.emittedReadable = false;\n        debug(\"on readable\", state.length, state.reading);\n        if (state.length) {\n          emitReadable(this);\n        } else if (!state.reading) {\n          process$1.nextTick(nReadingNextTick, this);\n        }\n      }\n    }\n    return res;\n  };\n  Readable2.prototype.addListener = Readable2.prototype.on;\n  Readable2.prototype.removeListener = function(ev, fn) {\n    var res = Stream.prototype.removeListener.call(this, ev, fn);\n    if (ev === \"readable\") {\n      process$1.nextTick(updateReadableListening, this);\n    }\n    return res;\n  };\n  Readable2.prototype.removeAllListeners = function(ev) {\n    var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n    if (ev === \"readable\" || ev === void 0) {\n      process$1.nextTick(updateReadableListening, this);\n    }\n    return res;\n  };\n  function updateReadableListening(self2) {\n    var state = self2._readableState;\n    state.readableListening = self2.listenerCount(\"readable\") > 0;\n    if (state.resumeScheduled && !state.paused) {\n      state.flowing = true;\n    } else if (self2.listenerCount(\"data\") > 0) {\n      self2.resume();\n    }\n  }\n  function nReadingNextTick(self2) {\n    debug(\"readable nexttick read 0\");\n    self2.read(0);\n  }\n  Readable2.prototype.resume = function() {\n    var state = this._readableState;\n    if (!state.flowing) {\n      debug(\"resume\");\n      state.flowing = !state.readableListening;\n      resume(this, state);\n    }\n    state.paused = false;\n    return this;\n  };\n  function resume(stream2, state) {\n    if (!state.resumeScheduled) {\n      state.resumeScheduled = true;\n      process$1.nextTick(resume_, stream2, state);\n    }\n  }\n  function resume_(stream2, state) {\n    debug(\"resume\", state.reading);\n    if (!state.reading) {\n      stream2.read(0);\n    }\n    state.resumeScheduled = false;\n    stream2.emit(\"resume\");\n    flow(stream2);\n    if (state.flowing && !state.reading) stream2.read(0);\n  }\n  Readable2.prototype.pause = function() {\n    debug(\"call pause flowing=%j\", this._readableState.flowing);\n    if (this._readableState.flowing !== false) {\n      debug(\"pause\");\n      this._readableState.flowing = false;\n      this.emit(\"pause\");\n    }\n    this._readableState.paused = true;\n    return this;\n  };\n  function flow(stream2) {\n    var state = stream2._readableState;\n    debug(\"flow\", state.flowing);\n    while (state.flowing && stream2.read() !== null) {\n    }\n  }\n  Readable2.prototype.wrap = function(stream2) {\n    var _this = this;\n    var state = this._readableState;\n    var paused = false;\n    stream2.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      _this.push(null);\n    });\n    stream2.on(\"data\", function(chunk) {\n      debug(\"wrapped data\");\n      if (state.decoder) chunk = state.decoder.write(chunk);\n      if (state.objectMode && (chunk === null || chunk === void 0)) return;\n      else if (!state.objectMode && (!chunk || !chunk.length)) return;\n      var ret = _this.push(chunk);\n      if (!ret) {\n        paused = true;\n        stream2.pause();\n      }\n    });\n    for (var i5 in stream2) {\n      if (this[i5] === void 0 && typeof stream2[i5] === \"function\") {\n        this[i5] = /* @__PURE__ */ (function methodWrap(method) {\n          return function methodWrapReturnFunction() {\n            return stream2[method].apply(stream2, arguments);\n          };\n        })(i5);\n      }\n    }\n    for (var n5 = 0; n5 < kProxyEvents.length; n5++) {\n      stream2.on(kProxyEvents[n5], this.emit.bind(this, kProxyEvents[n5]));\n    }\n    this._read = function(n6) {\n      debug(\"wrapped _read\", n6);\n      if (paused) {\n        paused = false;\n        stream2.resume();\n      }\n    };\n    return this;\n  };\n  if (typeof Symbol === \"function\") {\n    Readable2.prototype[Symbol.asyncIterator] = function() {\n      if (createReadableStreamAsyncIterator === void 0) {\n        createReadableStreamAsyncIterator = dew$5();\n      }\n      return createReadableStreamAsyncIterator(this);\n    };\n  }\n  Object.defineProperty(Readable2.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 get() {\n      return this._readableState.highWaterMark;\n    }\n  });\n  Object.defineProperty(Readable2.prototype, \"readableBuffer\", {\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 get() {\n      return this._readableState && this._readableState.buffer;\n    }\n  });\n  Object.defineProperty(Readable2.prototype, \"readableFlowing\", {\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 get() {\n      return this._readableState.flowing;\n    },\n    set: function set(state) {\n      if (this._readableState) {\n        this._readableState.flowing = state;\n      }\n    }\n  });\n  Readable2._fromList = fromList;\n  Object.defineProperty(Readable2.prototype, \"readableLength\", {\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 get() {\n      return this._readableState.length;\n    }\n  });\n  function fromList(n5, state) {\n    if (state.length === 0) return null;\n    var ret;\n    if (state.objectMode) ret = state.buffer.shift();\n    else if (!n5 || n5 >= state.length) {\n      if (state.decoder) ret = state.buffer.join(\"\");\n      else if (state.buffer.length === 1) ret = state.buffer.first();\n      else ret = state.buffer.concat(state.length);\n      state.buffer.clear();\n    } else {\n      ret = state.buffer.consume(n5, state.decoder);\n    }\n    return ret;\n  }\n  function endReadable(stream2) {\n    var state = stream2._readableState;\n    debug(\"endReadable\", state.endEmitted);\n    if (!state.endEmitted) {\n      state.ended = true;\n      process$1.nextTick(endReadableNT, state, stream2);\n    }\n  }\n  function endReadableNT(state, stream2) {\n    debug(\"endReadableNT\", state.endEmitted, state.length);\n    if (!state.endEmitted && state.length === 0) {\n      state.endEmitted = true;\n      stream2.readable = false;\n      stream2.emit(\"end\");\n      if (state.autoDestroy) {\n        var wState = stream2._writableState;\n        if (!wState || wState.autoDestroy && wState.finished) {\n          stream2.destroy();\n        }\n      }\n    }\n  }\n  if (typeof Symbol === \"function\") {\n    Readable2.from = function(iterable, opts) {\n      if (from === void 0) {\n        from = dew$4();\n      }\n      return from(Readable2, iterable, opts);\n    };\n  }\n  function indexOf3(xs, x4) {\n    for (var i5 = 0, l5 = xs.length; i5 < l5; i5++) {\n      if (xs[i5] === x4) return i5;\n    }\n    return -1;\n  }\n  return exports$3;\n}\nvar exports$23 = {};\nvar _dewExec$22 = false;\nfunction dew$22() {\n  if (_dewExec$22) return exports$23;\n  _dewExec$22 = true;\n  exports$23 = Transform;\n  var _require$codes = dew$b().codes, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n  var Duplex = dew$7();\n  dew$f()(Transform, Duplex);\n  function afterTransform(er, data) {\n    var ts = this._transformState;\n    ts.transforming = false;\n    var cb = ts.writecb;\n    if (cb === null) {\n      return this.emit(\"error\", new ERR_MULTIPLE_CALLBACK());\n    }\n    ts.writechunk = null;\n    ts.writecb = null;\n    if (data != null)\n      this.push(data);\n    cb(er);\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  function Transform(options) {\n    if (!(this instanceof Transform)) return new Transform(options);\n    Duplex.call(this, options);\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    this._readableState.needReadable = true;\n    this._readableState.sync = false;\n    if (options) {\n      if (typeof options.transform === \"function\") this._transform = options.transform;\n      if (typeof options.flush === \"function\") this._flush = options.flush;\n    }\n    this.on(\"prefinish\", prefinish);\n  }\n  function prefinish() {\n    var _this = this;\n    if (typeof this._flush === \"function\" && !this._readableState.destroyed) {\n      this._flush(function(er, data) {\n        done(_this, er, data);\n      });\n    } else {\n      done(this, null, null);\n    }\n  }\n  Transform.prototype.push = function(chunk, encoding) {\n    this._transformState.needTransform = false;\n    return Duplex.prototype.push.call(this, chunk, encoding);\n  };\n  Transform.prototype._transform = function(chunk, encoding, cb) {\n    cb(new ERR_METHOD_NOT_IMPLEMENTED(\"_transform()\"));\n  };\n  Transform.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  Transform.prototype._read = function(n5) {\n    var ts = this._transformState;\n    if (ts.writechunk !== null && !ts.transforming) {\n      ts.transforming = true;\n      this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n    } else {\n      ts.needTransform = true;\n    }\n  };\n  Transform.prototype._destroy = function(err, cb) {\n    Duplex.prototype._destroy.call(this, err, function(err2) {\n      cb(err2);\n    });\n  };\n  function done(stream2, er, data) {\n    if (er) return stream2.emit(\"error\", er);\n    if (data != null)\n      stream2.push(data);\n    if (stream2._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n    if (stream2._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n    return stream2.push(null);\n  }\n  return exports$23;\n}\nvar exports$13 = {};\nvar _dewExec$13 = false;\nfunction dew$13() {\n  if (_dewExec$13) return exports$13;\n  _dewExec$13 = true;\n  exports$13 = PassThrough;\n  var Transform = dew$22();\n  dew$f()(PassThrough, Transform);\n  function PassThrough(options) {\n    if (!(this instanceof PassThrough)) return new PassThrough(options);\n    Transform.call(this, options);\n  }\n  PassThrough.prototype._transform = function(chunk, encoding, cb) {\n    cb(null, chunk);\n  };\n  return exports$13;\n}\nvar exports5 = {};\nvar _dewExec5 = false;\nfunction dew5() {\n  if (_dewExec5) return exports5;\n  _dewExec5 = true;\n  var eos;\n  function once2(callback) {\n    var called = false;\n    return function() {\n      if (called) return;\n      called = true;\n      callback.apply(void 0, arguments);\n    };\n  }\n  var _require$codes = dew$b().codes, ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n  function noop2(err) {\n    if (err) throw err;\n  }\n  function isRequest(stream2) {\n    return stream2.setHeader && typeof stream2.abort === \"function\";\n  }\n  function destroyer(stream2, reading, writing, callback) {\n    callback = once2(callback);\n    var closed = false;\n    stream2.on(\"close\", function() {\n      closed = true;\n    });\n    if (eos === void 0) eos = dew$6();\n    eos(stream2, {\n      readable: reading,\n      writable: writing\n    }, function(err) {\n      if (err) return callback(err);\n      closed = true;\n      callback();\n    });\n    var destroyed = false;\n    return function(err) {\n      if (closed) return;\n      if (destroyed) return;\n      destroyed = true;\n      if (isRequest(stream2)) return stream2.abort();\n      if (typeof stream2.destroy === \"function\") return stream2.destroy();\n      callback(err || new ERR_STREAM_DESTROYED(\"pipe\"));\n    };\n  }\n  function call(fn) {\n    fn();\n  }\n  function pipe(from, to) {\n    return from.pipe(to);\n  }\n  function popCallback(streams) {\n    if (!streams.length) return noop2;\n    if (typeof streams[streams.length - 1] !== \"function\") return noop2;\n    return streams.pop();\n  }\n  function pipeline() {\n    for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n      streams[_key] = arguments[_key];\n    }\n    var callback = popCallback(streams);\n    if (Array.isArray(streams[0])) streams = streams[0];\n    if (streams.length < 2) {\n      throw new ERR_MISSING_ARGS(\"streams\");\n    }\n    var error;\n    var destroys = streams.map(function(stream2, i5) {\n      var reading = i5 < streams.length - 1;\n      var writing = i5 > 0;\n      return destroyer(stream2, reading, writing, function(err) {\n        if (!error) error = err;\n        if (err) destroys.forEach(call);\n        if (reading) return;\n        destroys.forEach(call);\n        callback(error);\n      });\n    });\n    return streams.reduce(pipe);\n  }\n  exports5 = pipeline;\n  return exports5;\n}\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-CbQqNoLO.js\nX._extend;\nX.callbackify;\nX.debuglog;\nX.deprecate;\nX.format;\nX.inherits;\nX.inspect;\nX.isArray;\nX.isBoolean;\nX.isBuffer;\nX.isDate;\nX.isError;\nX.isFunction;\nX.isNull;\nX.isNullOrUndefined;\nX.isNumber;\nX.isObject;\nX.isPrimitive;\nX.isRegExp;\nX.isString;\nX.isSymbol;\nX.isUndefined;\nX.log;\nvar promisify2 = X.promisify;\nX.types;\nX.TextEncoder = globalThis.TextEncoder;\nX.TextDecoder = globalThis.TextDecoder;\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-B6-G-Ftj.js\nvar exports$14 = {};\nvar _dewExec6 = false;\nvar _global3 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew6() {\n  if (_dewExec6) return exports$14;\n  _dewExec6 = true;\n  exports$14 = Stream;\n  var EE = y.EventEmitter;\n  var inherits = dew$f();\n  inherits(Stream, EE);\n  Stream.Readable = dew$3();\n  Stream.Writable = dew$8();\n  Stream.Duplex = dew$7();\n  Stream.Transform = dew$22();\n  Stream.PassThrough = dew$13();\n  Stream.finished = dew$6();\n  Stream.pipeline = dew5();\n  Stream.Stream = Stream;\n  function Stream() {\n    EE.call(this || _global3);\n  }\n  Stream.prototype.pipe = function(dest, options) {\n    var source = this || _global3;\n    function ondata(chunk) {\n      if (dest.writable) {\n        if (false === dest.write(chunk) && source.pause) {\n          source.pause();\n        }\n      }\n    }\n    source.on(\"data\", ondata);\n    function ondrain() {\n      if (source.readable && source.resume) {\n        source.resume();\n      }\n    }\n    dest.on(\"drain\", ondrain);\n    if (!dest._isStdio && (!options || options.end !== false)) {\n      source.on(\"end\", onend);\n      source.on(\"close\", onclose);\n    }\n    var didOnEnd = false;\n    function onend() {\n      if (didOnEnd) return;\n      didOnEnd = true;\n      dest.end();\n    }\n    function onclose() {\n      if (didOnEnd) return;\n      didOnEnd = true;\n      if (typeof dest.destroy === \"function\") dest.destroy();\n    }\n    function onerror(er) {\n      cleanup();\n      if (EE.listenerCount(this || _global3, \"error\") === 0) {\n        throw er;\n      }\n    }\n    source.on(\"error\", onerror);\n    dest.on(\"error\", onerror);\n    function cleanup() {\n      source.removeListener(\"data\", ondata);\n      dest.removeListener(\"drain\", ondrain);\n      source.removeListener(\"end\", onend);\n      source.removeListener(\"close\", onclose);\n      source.removeListener(\"error\", onerror);\n      dest.removeListener(\"error\", onerror);\n      source.removeListener(\"end\", cleanup);\n      source.removeListener(\"close\", cleanup);\n      dest.removeListener(\"close\", cleanup);\n    }\n    source.on(\"end\", cleanup);\n    source.on(\"close\", cleanup);\n    dest.on(\"close\", cleanup);\n    dest.emit(\"pipe\", source);\n    return dest;\n  };\n  return exports$14;\n}\nvar exports6 = dew6();\nvar Readable = exports6.Readable;\nReadable.wrap = function(src, options) {\n  options = Object.assign({ objectMode: src.readableObjectMode != null || src.objectMode != null || true }, options);\n  options.destroy = function(err, callback) {\n    src.destroy(err);\n    callback(err);\n  };\n  return new Readable(options).wrap(src);\n};\nexports6.Writable;\nexports6.Duplex;\nexports6.Transform;\nexports6.PassThrough;\nexports6.finished;\nexports6.pipeline;\nexports6.Stream;\n({\n  finished: promisify2(exports6.finished),\n  pipeline: promisify2(exports6.pipeline)\n});\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-C4rKjYLo.js\nvar exports7 = {};\nvar _dewExec7 = false;\nfunction dew7() {\n  if (_dewExec7) return exports7;\n  _dewExec7 = true;\n  exports7 = exports7 = dew$3();\n  exports7.Stream = exports7;\n  exports7.Readable = exports7;\n  exports7.Writable = dew$8();\n  exports7.Duplex = dew$7();\n  exports7.Transform = dew$22();\n  exports7.PassThrough = dew$13();\n  exports7.finished = dew$6();\n  exports7.pipeline = dew5();\n  return exports7;\n}\n\n// node_modules/@jspm/core/nodelibs/browser/chunk-BsRZ0PEC.js\nvar exports8 = {};\nvar _dewExec8 = false;\nvar _global4 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew8() {\n  if (_dewExec8) return exports8;\n  _dewExec8 = true;\n  exports8 = deprecate;\n  function deprecate(fn, msg) {\n    if (config2(\"noDeprecation\")) {\n      return fn;\n    }\n    var warned = false;\n    function deprecated() {\n      if (!warned) {\n        if (config2(\"throwDeprecation\")) {\n          throw new Error(msg);\n        } else if (config2(\"traceDeprecation\")) {\n          console.trace(msg);\n        } else {\n          console.warn(msg);\n        }\n        warned = true;\n      }\n      return fn.apply(this || _global4, arguments);\n    }\n    return deprecated;\n  }\n  function config2(name2) {\n    try {\n      if (!_global4.localStorage) return false;\n    } catch (_4) {\n      return false;\n    }\n    var val = _global4.localStorage[name2];\n    if (null == val) return false;\n    return String(val).toLowerCase() === \"true\";\n  }\n  return exports8;\n}\n\n// node_modules/@jspm/core/nodelibs/browser/vm.js\nvar exports$15 = {};\nvar _dewExec9 = false;\nvar _global5 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew9() {\n  if (_dewExec9) return exports$15;\n  _dewExec9 = true;\n  var indexOf = function(xs, item) {\n    if (xs.indexOf) return xs.indexOf(item);\n    else for (var i5 = 0; i5 < xs.length; i5++) {\n      if (xs[i5] === item) return i5;\n    }\n    return -1;\n  };\n  var Object_keys = function(obj) {\n    if (Object.keys) return Object.keys(obj);\n    else {\n      var res = [];\n      for (var key in obj) res.push(key);\n      return res;\n    }\n  };\n  var forEach = function(xs, fn) {\n    if (xs.forEach) return xs.forEach(fn);\n    else for (var i5 = 0; i5 < xs.length; i5++) {\n      fn(xs[i5], i5, xs);\n    }\n  };\n  var defineProp = (function() {\n    try {\n      Object.defineProperty({}, \"_\", {});\n      return function(obj, name2, value) {\n        Object.defineProperty(obj, name2, {\n          writable: true,\n          enumerable: false,\n          configurable: true,\n          value\n        });\n      };\n    } catch (e7) {\n      return function(obj, name2, value) {\n        obj[name2] = value;\n      };\n    }\n  })();\n  var globals = [\"Array\", \"Boolean\", \"Date\", \"Error\", \"EvalError\", \"Function\", \"Infinity\", \"JSON\", \"Math\", \"NaN\", \"Number\", \"Object\", \"RangeError\", \"ReferenceError\", \"RegExp\", \"String\", \"SyntaxError\", \"TypeError\", \"URIError\", \"decodeURI\", \"decodeURIComponent\", \"encodeURI\", \"encodeURIComponent\", \"escape\", \"eval\", \"isFinite\", \"isNaN\", \"parseFloat\", \"parseInt\", \"undefined\", \"unescape\"];\n  function Context() {\n  }\n  Context.prototype = {};\n  var Script = exports$15.Script = function NodeScript(code) {\n    if (!((this || _global5) instanceof Script)) return new Script(code);\n    (this || _global5).code = code;\n  };\n  Script.prototype.runInContext = function(context) {\n    if (!(context instanceof Context)) {\n      throw new TypeError(\"needs a 'context' argument.\");\n    }\n    var iframe = document.createElement(\"iframe\");\n    if (!iframe.style) iframe.style = {};\n    iframe.style.display = \"none\";\n    document.body.appendChild(iframe);\n    var win = iframe.contentWindow;\n    var wEval = win.eval, wExecScript = win.execScript;\n    if (!wEval && wExecScript) {\n      wExecScript.call(win, \"null\");\n      wEval = win.eval;\n    }\n    forEach(Object_keys(context), function(key) {\n      win[key] = context[key];\n    });\n    forEach(globals, function(key) {\n      if (context[key]) {\n        win[key] = context[key];\n      }\n    });\n    var winKeys = Object_keys(win);\n    var res = wEval.call(win, (this || _global5).code);\n    forEach(Object_keys(win), function(key) {\n      if (key in context || indexOf(winKeys, key) === -1) {\n        context[key] = win[key];\n      }\n    });\n    forEach(globals, function(key) {\n      if (!(key in context)) {\n        defineProp(context, key, win[key]);\n      }\n    });\n    document.body.removeChild(iframe);\n    return res;\n  };\n  Script.prototype.runInThisContext = function() {\n    return (0,eval)((this || _global5).code);\n  };\n  Script.prototype.runInNewContext = function(context) {\n    var ctx = Script.createContext(context);\n    var res = this.runInContext(ctx);\n    if (context) {\n      forEach(Object_keys(ctx), function(key) {\n        context[key] = ctx[key];\n      });\n    }\n    return res;\n  };\n  forEach(Object_keys(Script.prototype), function(name2) {\n    exports$15[name2] = Script[name2] = function(code) {\n      var s5 = Script(code);\n      return s5[name2].apply(s5, [].slice.call(arguments, 1));\n    };\n  });\n  exports$15.isContext = function(context) {\n    return context instanceof Context;\n  };\n  exports$15.createScript = function(code) {\n    return exports$15.Script(code);\n  };\n  exports$15.createContext = Script.createContext = function(context) {\n    var copy = new Context();\n    if (typeof context === \"object\") {\n      forEach(Object_keys(context), function(key) {\n        copy[key] = context[key];\n      });\n    }\n    return copy;\n  };\n  return exports$15;\n}\nvar exports9 = dew9();\nexports9[\"Script\"];\nexports9[\"isContext\"];\nexports9[\"createScript\"];\nexports9[\"createContext\"];\nvar Script2 = exports9.Script;\nvar createContext = exports9.createContext;\nvar createScript = exports9.createScript;\nvar isContext = exports9.isContext;\nvar runInContext = exports9.runInContext;\nvar runInNewContext = exports9.runInNewContext;\nvar runInThisContext = exports9.runInThisContext;\n\n// node_modules/@jspm/core/nodelibs/browser/crypto.js\nvar exports$3H = {};\nvar _dewExec$3G = false;\nvar _global$1e = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3G() {\n  if (_dewExec$3G) return exports$3H;\n  _dewExec$3G = true;\n  var process$1 = process;\n  var MAX_BYTES = 65536;\n  var MAX_UINT32 = 4294967295;\n  function oldBrowser() {\n    throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\");\n  }\n  var Buffer = dew$12().Buffer;\n  var crypto2 = _global$1e.crypto || _global$1e.msCrypto;\n  if (crypto2 && crypto2.getRandomValues) {\n    exports$3H = randomBytes2;\n  } else {\n    exports$3H = oldBrowser;\n  }\n  function randomBytes2(size, cb) {\n    if (size > MAX_UINT32) throw new RangeError(\"requested too many random bytes\");\n    var bytes = Buffer.allocUnsafe(size);\n    if (size > 0) {\n      if (size > MAX_BYTES) {\n        for (var generated = 0; generated < size; generated += MAX_BYTES) {\n          crypto2.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));\n        }\n      } else {\n        crypto2.getRandomValues(bytes);\n      }\n    }\n    if (typeof cb === \"function\") {\n      return process$1.nextTick(function() {\n        cb(null, bytes);\n      });\n    }\n    return bytes;\n  }\n  return exports$3H;\n}\nvar exports$3G = {};\nvar _dewExec$3F = false;\nfunction dew$3F() {\n  if (_dewExec$3F) return exports$3G;\n  _dewExec$3F = true;\n  var Buffer = dew$12().Buffer;\n  var Transform = exports6.Transform;\n  var inherits = dew3();\n  function throwIfNotStringOrBuffer(val, prefix) {\n    if (!Buffer.isBuffer(val) && typeof val !== \"string\") {\n      throw new TypeError(prefix + \" must be a string or a buffer\");\n    }\n  }\n  function HashBase(blockSize) {\n    Transform.call(this);\n    this._block = Buffer.allocUnsafe(blockSize);\n    this._blockSize = blockSize;\n    this._blockOffset = 0;\n    this._length = [0, 0, 0, 0];\n    this._finalized = false;\n  }\n  inherits(HashBase, Transform);\n  HashBase.prototype._transform = function(chunk, encoding, callback) {\n    var error = null;\n    try {\n      this.update(chunk, encoding);\n    } catch (err) {\n      error = err;\n    }\n    callback(error);\n  };\n  HashBase.prototype._flush = function(callback) {\n    var error = null;\n    try {\n      this.push(this.digest());\n    } catch (err) {\n      error = err;\n    }\n    callback(error);\n  };\n  HashBase.prototype.update = function(data, encoding) {\n    throwIfNotStringOrBuffer(data, \"Data\");\n    if (this._finalized) throw new Error(\"Digest already called\");\n    if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding);\n    var block = this._block;\n    var offset = 0;\n    while (this._blockOffset + data.length - offset >= this._blockSize) {\n      for (var i5 = this._blockOffset; i5 < this._blockSize; ) block[i5++] = data[offset++];\n      this._update();\n      this._blockOffset = 0;\n    }\n    while (offset < data.length) block[this._blockOffset++] = data[offset++];\n    for (var j4 = 0, carry = data.length * 8; carry > 0; ++j4) {\n      this._length[j4] += carry;\n      carry = this._length[j4] / 4294967296 | 0;\n      if (carry > 0) this._length[j4] -= 4294967296 * carry;\n    }\n    return this;\n  };\n  HashBase.prototype._update = function() {\n    throw new Error(\"_update is not implemented\");\n  };\n  HashBase.prototype.digest = function(encoding) {\n    if (this._finalized) throw new Error(\"Digest already called\");\n    this._finalized = true;\n    var digest = this._digest();\n    if (encoding !== void 0) digest = digest.toString(encoding);\n    this._block.fill(0);\n    this._blockOffset = 0;\n    for (var i5 = 0; i5 < 4; ++i5) this._length[i5] = 0;\n    return digest;\n  };\n  HashBase.prototype._digest = function() {\n    throw new Error(\"_digest is not implemented\");\n  };\n  exports$3G = HashBase;\n  return exports$3G;\n}\nvar exports$3F = {};\nvar _dewExec$3E = false;\nfunction dew$3E() {\n  if (_dewExec$3E) return exports$3F;\n  _dewExec$3E = true;\n  var inherits = dew3();\n  var HashBase = dew$3F();\n  var Buffer = dew$12().Buffer;\n  var ARRAY16 = new Array(16);\n  function MD5() {\n    HashBase.call(this, 64);\n    this._a = 1732584193;\n    this._b = 4023233417;\n    this._c = 2562383102;\n    this._d = 271733878;\n  }\n  inherits(MD5, HashBase);\n  MD5.prototype._update = function() {\n    var M4 = ARRAY16;\n    for (var i5 = 0; i5 < 16; ++i5) M4[i5] = this._block.readInt32LE(i5 * 4);\n    var a5 = this._a;\n    var b4 = this._b;\n    var c5 = this._c;\n    var d4 = this._d;\n    a5 = fnF(a5, b4, c5, d4, M4[0], 3614090360, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[1], 3905402710, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[2], 606105819, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[3], 3250441966, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[4], 4118548399, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[5], 1200080426, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[6], 2821735955, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[7], 4249261313, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[8], 1770035416, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[9], 2336552879, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[10], 4294925233, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[11], 2304563134, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[12], 1804603682, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[13], 4254626195, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[14], 2792965006, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[15], 1236535329, 22);\n    a5 = fnG(a5, b4, c5, d4, M4[1], 4129170786, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[6], 3225465664, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[11], 643717713, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[0], 3921069994, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[5], 3593408605, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[10], 38016083, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[15], 3634488961, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[4], 3889429448, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[9], 568446438, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[14], 3275163606, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[3], 4107603335, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[8], 1163531501, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[13], 2850285829, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[2], 4243563512, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[7], 1735328473, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[12], 2368359562, 20);\n    a5 = fnH(a5, b4, c5, d4, M4[5], 4294588738, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[8], 2272392833, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[11], 1839030562, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[14], 4259657740, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[1], 2763975236, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[4], 1272893353, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[7], 4139469664, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[10], 3200236656, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[13], 681279174, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[0], 3936430074, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[3], 3572445317, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[6], 76029189, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[9], 3654602809, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[12], 3873151461, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[15], 530742520, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[2], 3299628645, 23);\n    a5 = fnI(a5, b4, c5, d4, M4[0], 4096336452, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[7], 1126891415, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[14], 2878612391, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[5], 4237533241, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[12], 1700485571, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[3], 2399980690, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[10], 4293915773, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[1], 2240044497, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[8], 1873313359, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[15], 4264355552, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[6], 2734768916, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[13], 1309151649, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[4], 4149444226, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[11], 3174756917, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[2], 718787259, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[9], 3951481745, 21);\n    this._a = this._a + a5 | 0;\n    this._b = this._b + b4 | 0;\n    this._c = this._c + c5 | 0;\n    this._d = this._d + d4 | 0;\n  };\n  MD5.prototype._digest = function() {\n    this._block[this._blockOffset++] = 128;\n    if (this._blockOffset > 56) {\n      this._block.fill(0, this._blockOffset, 64);\n      this._update();\n      this._blockOffset = 0;\n    }\n    this._block.fill(0, this._blockOffset, 56);\n    this._block.writeUInt32LE(this._length[0], 56);\n    this._block.writeUInt32LE(this._length[1], 60);\n    this._update();\n    var buffer2 = Buffer.allocUnsafe(16);\n    buffer2.writeInt32LE(this._a, 0);\n    buffer2.writeInt32LE(this._b, 4);\n    buffer2.writeInt32LE(this._c, 8);\n    buffer2.writeInt32LE(this._d, 12);\n    return buffer2;\n  };\n  function rotl(x4, n5) {\n    return x4 << n5 | x4 >>> 32 - n5;\n  }\n  function fnF(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 & c5 | ~b4 & d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnG(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 & d4 | c5 & ~d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnH(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ c5 ^ d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnI(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (c5 ^ (b4 | ~d4)) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  exports$3F = MD5;\n  return exports$3F;\n}\nvar exports$3E = {};\nvar _dewExec$3D = false;\nfunction dew$3D() {\n  if (_dewExec$3D) return exports$3E;\n  _dewExec$3D = true;\n  var Buffer = dew().Buffer;\n  var inherits = dew3();\n  var HashBase = dew$3F();\n  var ARRAY16 = new Array(16);\n  var zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\n  var zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\n  var sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\n  var sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n  var hl = [0, 1518500249, 1859775393, 2400959708, 2840853838];\n  var hr = [1352829926, 1548603684, 1836072691, 2053994217, 0];\n  function RIPEMD160() {\n    HashBase.call(this, 64);\n    this._a = 1732584193;\n    this._b = 4023233417;\n    this._c = 2562383102;\n    this._d = 271733878;\n    this._e = 3285377520;\n  }\n  inherits(RIPEMD160, HashBase);\n  RIPEMD160.prototype._update = function() {\n    var words = ARRAY16;\n    for (var j4 = 0; j4 < 16; ++j4) words[j4] = this._block.readInt32LE(j4 * 4);\n    var al = this._a | 0;\n    var bl = this._b | 0;\n    var cl = this._c | 0;\n    var dl = this._d | 0;\n    var el = this._e | 0;\n    var ar = this._a | 0;\n    var br = this._b | 0;\n    var cr = this._c | 0;\n    var dr = this._d | 0;\n    var er = this._e | 0;\n    for (var i5 = 0; i5 < 80; i5 += 1) {\n      var tl;\n      var tr;\n      if (i5 < 16) {\n        tl = fn1(al, bl, cl, dl, el, words[zl[i5]], hl[0], sl[i5]);\n        tr = fn5(ar, br, cr, dr, er, words[zr[i5]], hr[0], sr[i5]);\n      } else if (i5 < 32) {\n        tl = fn2(al, bl, cl, dl, el, words[zl[i5]], hl[1], sl[i5]);\n        tr = fn4(ar, br, cr, dr, er, words[zr[i5]], hr[1], sr[i5]);\n      } else if (i5 < 48) {\n        tl = fn3(al, bl, cl, dl, el, words[zl[i5]], hl[2], sl[i5]);\n        tr = fn3(ar, br, cr, dr, er, words[zr[i5]], hr[2], sr[i5]);\n      } else if (i5 < 64) {\n        tl = fn4(al, bl, cl, dl, el, words[zl[i5]], hl[3], sl[i5]);\n        tr = fn2(ar, br, cr, dr, er, words[zr[i5]], hr[3], sr[i5]);\n      } else {\n        tl = fn5(al, bl, cl, dl, el, words[zl[i5]], hl[4], sl[i5]);\n        tr = fn1(ar, br, cr, dr, er, words[zr[i5]], hr[4], sr[i5]);\n      }\n      al = el;\n      el = dl;\n      dl = rotl(cl, 10);\n      cl = bl;\n      bl = tl;\n      ar = er;\n      er = dr;\n      dr = rotl(cr, 10);\n      cr = br;\n      br = tr;\n    }\n    var t5 = this._b + cl + dr | 0;\n    this._b = this._c + dl + er | 0;\n    this._c = this._d + el + ar | 0;\n    this._d = this._e + al + br | 0;\n    this._e = this._a + bl + cr | 0;\n    this._a = t5;\n  };\n  RIPEMD160.prototype._digest = function() {\n    this._block[this._blockOffset++] = 128;\n    if (this._blockOffset > 56) {\n      this._block.fill(0, this._blockOffset, 64);\n      this._update();\n      this._blockOffset = 0;\n    }\n    this._block.fill(0, this._blockOffset, 56);\n    this._block.writeUInt32LE(this._length[0], 56);\n    this._block.writeUInt32LE(this._length[1], 60);\n    this._update();\n    var buffer2 = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20);\n    buffer2.writeInt32LE(this._a, 0);\n    buffer2.writeInt32LE(this._b, 4);\n    buffer2.writeInt32LE(this._c, 8);\n    buffer2.writeInt32LE(this._d, 12);\n    buffer2.writeInt32LE(this._e, 16);\n    return buffer2;\n  };\n  function rotl(x4, n5) {\n    return x4 << n5 | x4 >>> 32 - n5;\n  }\n  function fn1(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ c5 ^ d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn2(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 & c5 | ~b4 & d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn3(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + ((b4 | ~c5) ^ d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn4(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 & d4 | c5 & ~d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn5(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ (c5 | ~d4)) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  exports$3E = RIPEMD160;\n  return exports$3E;\n}\nvar exports$3D = {};\nvar _dewExec$3C = false;\nvar _global$1d = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3C() {\n  if (_dewExec$3C) return exports$3D;\n  _dewExec$3C = true;\n  var Buffer = dew$12().Buffer;\n  function Hash2(blockSize, finalSize) {\n    (this || _global$1d)._block = Buffer.alloc(blockSize);\n    (this || _global$1d)._finalSize = finalSize;\n    (this || _global$1d)._blockSize = blockSize;\n    (this || _global$1d)._len = 0;\n  }\n  Hash2.prototype.update = function(data, enc) {\n    if (typeof data === \"string\") {\n      enc = enc || \"utf8\";\n      data = Buffer.from(data, enc);\n    }\n    var block = (this || _global$1d)._block;\n    var blockSize = (this || _global$1d)._blockSize;\n    var length = data.length;\n    var accum = (this || _global$1d)._len;\n    for (var offset = 0; offset < length; ) {\n      var assigned = accum % blockSize;\n      var remainder = Math.min(length - offset, blockSize - assigned);\n      for (var i5 = 0; i5 < remainder; i5++) {\n        block[assigned + i5] = data[offset + i5];\n      }\n      accum += remainder;\n      offset += remainder;\n      if (accum % blockSize === 0) {\n        this._update(block);\n      }\n    }\n    (this || _global$1d)._len += length;\n    return this || _global$1d;\n  };\n  Hash2.prototype.digest = function(enc) {\n    var rem = (this || _global$1d)._len % (this || _global$1d)._blockSize;\n    (this || _global$1d)._block[rem] = 128;\n    (this || _global$1d)._block.fill(0, rem + 1);\n    if (rem >= (this || _global$1d)._finalSize) {\n      this._update((this || _global$1d)._block);\n      (this || _global$1d)._block.fill(0);\n    }\n    var bits = (this || _global$1d)._len * 8;\n    if (bits <= 4294967295) {\n      (this || _global$1d)._block.writeUInt32BE(bits, (this || _global$1d)._blockSize - 4);\n    } else {\n      var lowBits = (bits & 4294967295) >>> 0;\n      var highBits = (bits - lowBits) / 4294967296;\n      (this || _global$1d)._block.writeUInt32BE(highBits, (this || _global$1d)._blockSize - 8);\n      (this || _global$1d)._block.writeUInt32BE(lowBits, (this || _global$1d)._blockSize - 4);\n    }\n    this._update((this || _global$1d)._block);\n    var hash = this._hash();\n    return enc ? hash.toString(enc) : hash;\n  };\n  Hash2.prototype._update = function() {\n    throw new Error(\"_update must be implemented by subclass\");\n  };\n  exports$3D = Hash2;\n  return exports$3D;\n}\nvar exports$3C = {};\nvar _dewExec$3B = false;\nvar _global$1c = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3B() {\n  if (_dewExec$3B) return exports$3C;\n  _dewExec$3B = true;\n  var inherits = dew3();\n  var Hash2 = dew$3C();\n  var Buffer = dew$12().Buffer;\n  var K3 = [1518500249, 1859775393, 2400959708 | 0, 3395469782 | 0];\n  var W3 = new Array(80);\n  function Sha() {\n    this.init();\n    (this || _global$1c)._w = W3;\n    Hash2.call(this || _global$1c, 64, 56);\n  }\n  inherits(Sha, Hash2);\n  Sha.prototype.init = function() {\n    (this || _global$1c)._a = 1732584193;\n    (this || _global$1c)._b = 4023233417;\n    (this || _global$1c)._c = 2562383102;\n    (this || _global$1c)._d = 271733878;\n    (this || _global$1c)._e = 3285377520;\n    return this || _global$1c;\n  };\n  function rotl5(num) {\n    return num << 5 | num >>> 27;\n  }\n  function rotl30(num) {\n    return num << 30 | num >>> 2;\n  }\n  function ft(s5, b4, c5, d4) {\n    if (s5 === 0) return b4 & c5 | ~b4 & d4;\n    if (s5 === 2) return b4 & c5 | b4 & d4 | c5 & d4;\n    return b4 ^ c5 ^ d4;\n  }\n  Sha.prototype._update = function(M4) {\n    var W4 = (this || _global$1c)._w;\n    var a5 = (this || _global$1c)._a | 0;\n    var b4 = (this || _global$1c)._b | 0;\n    var c5 = (this || _global$1c)._c | 0;\n    var d4 = (this || _global$1c)._d | 0;\n    var e7 = (this || _global$1c)._e | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 80; ++i5) W4[i5] = W4[i5 - 3] ^ W4[i5 - 8] ^ W4[i5 - 14] ^ W4[i5 - 16];\n    for (var j4 = 0; j4 < 80; ++j4) {\n      var s5 = ~~(j4 / 20);\n      var t5 = rotl5(a5) + ft(s5, b4, c5, d4) + e7 + W4[j4] + K3[s5] | 0;\n      e7 = d4;\n      d4 = c5;\n      c5 = rotl30(b4);\n      b4 = a5;\n      a5 = t5;\n    }\n    (this || _global$1c)._a = a5 + (this || _global$1c)._a | 0;\n    (this || _global$1c)._b = b4 + (this || _global$1c)._b | 0;\n    (this || _global$1c)._c = c5 + (this || _global$1c)._c | 0;\n    (this || _global$1c)._d = d4 + (this || _global$1c)._d | 0;\n    (this || _global$1c)._e = e7 + (this || _global$1c)._e | 0;\n  };\n  Sha.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(20);\n    H3.writeInt32BE((this || _global$1c)._a | 0, 0);\n    H3.writeInt32BE((this || _global$1c)._b | 0, 4);\n    H3.writeInt32BE((this || _global$1c)._c | 0, 8);\n    H3.writeInt32BE((this || _global$1c)._d | 0, 12);\n    H3.writeInt32BE((this || _global$1c)._e | 0, 16);\n    return H3;\n  };\n  exports$3C = Sha;\n  return exports$3C;\n}\nvar exports$3B = {};\nvar _dewExec$3A = false;\nvar _global$1b = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3A() {\n  if (_dewExec$3A) return exports$3B;\n  _dewExec$3A = true;\n  var inherits = dew3();\n  var Hash2 = dew$3C();\n  var Buffer = dew$12().Buffer;\n  var K3 = [1518500249, 1859775393, 2400959708 | 0, 3395469782 | 0];\n  var W3 = new Array(80);\n  function Sha1() {\n    this.init();\n    (this || _global$1b)._w = W3;\n    Hash2.call(this || _global$1b, 64, 56);\n  }\n  inherits(Sha1, Hash2);\n  Sha1.prototype.init = function() {\n    (this || _global$1b)._a = 1732584193;\n    (this || _global$1b)._b = 4023233417;\n    (this || _global$1b)._c = 2562383102;\n    (this || _global$1b)._d = 271733878;\n    (this || _global$1b)._e = 3285377520;\n    return this || _global$1b;\n  };\n  function rotl1(num) {\n    return num << 1 | num >>> 31;\n  }\n  function rotl5(num) {\n    return num << 5 | num >>> 27;\n  }\n  function rotl30(num) {\n    return num << 30 | num >>> 2;\n  }\n  function ft(s5, b4, c5, d4) {\n    if (s5 === 0) return b4 & c5 | ~b4 & d4;\n    if (s5 === 2) return b4 & c5 | b4 & d4 | c5 & d4;\n    return b4 ^ c5 ^ d4;\n  }\n  Sha1.prototype._update = function(M4) {\n    var W4 = (this || _global$1b)._w;\n    var a5 = (this || _global$1b)._a | 0;\n    var b4 = (this || _global$1b)._b | 0;\n    var c5 = (this || _global$1b)._c | 0;\n    var d4 = (this || _global$1b)._d | 0;\n    var e7 = (this || _global$1b)._e | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 80; ++i5) W4[i5] = rotl1(W4[i5 - 3] ^ W4[i5 - 8] ^ W4[i5 - 14] ^ W4[i5 - 16]);\n    for (var j4 = 0; j4 < 80; ++j4) {\n      var s5 = ~~(j4 / 20);\n      var t5 = rotl5(a5) + ft(s5, b4, c5, d4) + e7 + W4[j4] + K3[s5] | 0;\n      e7 = d4;\n      d4 = c5;\n      c5 = rotl30(b4);\n      b4 = a5;\n      a5 = t5;\n    }\n    (this || _global$1b)._a = a5 + (this || _global$1b)._a | 0;\n    (this || _global$1b)._b = b4 + (this || _global$1b)._b | 0;\n    (this || _global$1b)._c = c5 + (this || _global$1b)._c | 0;\n    (this || _global$1b)._d = d4 + (this || _global$1b)._d | 0;\n    (this || _global$1b)._e = e7 + (this || _global$1b)._e | 0;\n  };\n  Sha1.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(20);\n    H3.writeInt32BE((this || _global$1b)._a | 0, 0);\n    H3.writeInt32BE((this || _global$1b)._b | 0, 4);\n    H3.writeInt32BE((this || _global$1b)._c | 0, 8);\n    H3.writeInt32BE((this || _global$1b)._d | 0, 12);\n    H3.writeInt32BE((this || _global$1b)._e | 0, 16);\n    return H3;\n  };\n  exports$3B = Sha1;\n  return exports$3B;\n}\nvar exports$3A = {};\nvar _dewExec$3z = false;\nvar _global$1a = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3z() {\n  if (_dewExec$3z) return exports$3A;\n  _dewExec$3z = true;\n  var inherits = dew3();\n  var Hash2 = dew$3C();\n  var Buffer = dew$12().Buffer;\n  var K3 = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298];\n  var W3 = new Array(64);\n  function Sha256() {\n    this.init();\n    (this || _global$1a)._w = W3;\n    Hash2.call(this || _global$1a, 64, 56);\n  }\n  inherits(Sha256, Hash2);\n  Sha256.prototype.init = function() {\n    (this || _global$1a)._a = 1779033703;\n    (this || _global$1a)._b = 3144134277;\n    (this || _global$1a)._c = 1013904242;\n    (this || _global$1a)._d = 2773480762;\n    (this || _global$1a)._e = 1359893119;\n    (this || _global$1a)._f = 2600822924;\n    (this || _global$1a)._g = 528734635;\n    (this || _global$1a)._h = 1541459225;\n    return this || _global$1a;\n  };\n  function ch(x4, y5, z4) {\n    return z4 ^ x4 & (y5 ^ z4);\n  }\n  function maj(x4, y5, z4) {\n    return x4 & y5 | z4 & (x4 | y5);\n  }\n  function sigma0(x4) {\n    return (x4 >>> 2 | x4 << 30) ^ (x4 >>> 13 | x4 << 19) ^ (x4 >>> 22 | x4 << 10);\n  }\n  function sigma1(x4) {\n    return (x4 >>> 6 | x4 << 26) ^ (x4 >>> 11 | x4 << 21) ^ (x4 >>> 25 | x4 << 7);\n  }\n  function gamma0(x4) {\n    return (x4 >>> 7 | x4 << 25) ^ (x4 >>> 18 | x4 << 14) ^ x4 >>> 3;\n  }\n  function gamma1(x4) {\n    return (x4 >>> 17 | x4 << 15) ^ (x4 >>> 19 | x4 << 13) ^ x4 >>> 10;\n  }\n  Sha256.prototype._update = function(M4) {\n    var W4 = (this || _global$1a)._w;\n    var a5 = (this || _global$1a)._a | 0;\n    var b4 = (this || _global$1a)._b | 0;\n    var c5 = (this || _global$1a)._c | 0;\n    var d4 = (this || _global$1a)._d | 0;\n    var e7 = (this || _global$1a)._e | 0;\n    var f6 = (this || _global$1a)._f | 0;\n    var g4 = (this || _global$1a)._g | 0;\n    var h5 = (this || _global$1a)._h | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 64; ++i5) W4[i5] = gamma1(W4[i5 - 2]) + W4[i5 - 7] + gamma0(W4[i5 - 15]) + W4[i5 - 16] | 0;\n    for (var j4 = 0; j4 < 64; ++j4) {\n      var T1 = h5 + sigma1(e7) + ch(e7, f6, g4) + K3[j4] + W4[j4] | 0;\n      var T22 = sigma0(a5) + maj(a5, b4, c5) | 0;\n      h5 = g4;\n      g4 = f6;\n      f6 = e7;\n      e7 = d4 + T1 | 0;\n      d4 = c5;\n      c5 = b4;\n      b4 = a5;\n      a5 = T1 + T22 | 0;\n    }\n    (this || _global$1a)._a = a5 + (this || _global$1a)._a | 0;\n    (this || _global$1a)._b = b4 + (this || _global$1a)._b | 0;\n    (this || _global$1a)._c = c5 + (this || _global$1a)._c | 0;\n    (this || _global$1a)._d = d4 + (this || _global$1a)._d | 0;\n    (this || _global$1a)._e = e7 + (this || _global$1a)._e | 0;\n    (this || _global$1a)._f = f6 + (this || _global$1a)._f | 0;\n    (this || _global$1a)._g = g4 + (this || _global$1a)._g | 0;\n    (this || _global$1a)._h = h5 + (this || _global$1a)._h | 0;\n  };\n  Sha256.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(32);\n    H3.writeInt32BE((this || _global$1a)._a, 0);\n    H3.writeInt32BE((this || _global$1a)._b, 4);\n    H3.writeInt32BE((this || _global$1a)._c, 8);\n    H3.writeInt32BE((this || _global$1a)._d, 12);\n    H3.writeInt32BE((this || _global$1a)._e, 16);\n    H3.writeInt32BE((this || _global$1a)._f, 20);\n    H3.writeInt32BE((this || _global$1a)._g, 24);\n    H3.writeInt32BE((this || _global$1a)._h, 28);\n    return H3;\n  };\n  exports$3A = Sha256;\n  return exports$3A;\n}\nvar exports$3z = {};\nvar _dewExec$3y = false;\nvar _global$19 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3y() {\n  if (_dewExec$3y) return exports$3z;\n  _dewExec$3y = true;\n  var inherits = dew3();\n  var Sha256 = dew$3z();\n  var Hash2 = dew$3C();\n  var Buffer = dew$12().Buffer;\n  var W3 = new Array(64);\n  function Sha224() {\n    this.init();\n    (this || _global$19)._w = W3;\n    Hash2.call(this || _global$19, 64, 56);\n  }\n  inherits(Sha224, Sha256);\n  Sha224.prototype.init = function() {\n    (this || _global$19)._a = 3238371032;\n    (this || _global$19)._b = 914150663;\n    (this || _global$19)._c = 812702999;\n    (this || _global$19)._d = 4144912697;\n    (this || _global$19)._e = 4290775857;\n    (this || _global$19)._f = 1750603025;\n    (this || _global$19)._g = 1694076839;\n    (this || _global$19)._h = 3204075428;\n    return this || _global$19;\n  };\n  Sha224.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(28);\n    H3.writeInt32BE((this || _global$19)._a, 0);\n    H3.writeInt32BE((this || _global$19)._b, 4);\n    H3.writeInt32BE((this || _global$19)._c, 8);\n    H3.writeInt32BE((this || _global$19)._d, 12);\n    H3.writeInt32BE((this || _global$19)._e, 16);\n    H3.writeInt32BE((this || _global$19)._f, 20);\n    H3.writeInt32BE((this || _global$19)._g, 24);\n    return H3;\n  };\n  exports$3z = Sha224;\n  return exports$3z;\n}\nvar exports$3y = {};\nvar _dewExec$3x = false;\nvar _global$18 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3x() {\n  if (_dewExec$3x) return exports$3y;\n  _dewExec$3x = true;\n  var inherits = dew3();\n  var Hash2 = dew$3C();\n  var Buffer = dew$12().Buffer;\n  var K3 = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591];\n  var W3 = new Array(160);\n  function Sha512() {\n    this.init();\n    (this || _global$18)._w = W3;\n    Hash2.call(this || _global$18, 128, 112);\n  }\n  inherits(Sha512, Hash2);\n  Sha512.prototype.init = function() {\n    (this || _global$18)._ah = 1779033703;\n    (this || _global$18)._bh = 3144134277;\n    (this || _global$18)._ch = 1013904242;\n    (this || _global$18)._dh = 2773480762;\n    (this || _global$18)._eh = 1359893119;\n    (this || _global$18)._fh = 2600822924;\n    (this || _global$18)._gh = 528734635;\n    (this || _global$18)._hh = 1541459225;\n    (this || _global$18)._al = 4089235720;\n    (this || _global$18)._bl = 2227873595;\n    (this || _global$18)._cl = 4271175723;\n    (this || _global$18)._dl = 1595750129;\n    (this || _global$18)._el = 2917565137;\n    (this || _global$18)._fl = 725511199;\n    (this || _global$18)._gl = 4215389547;\n    (this || _global$18)._hl = 327033209;\n    return this || _global$18;\n  };\n  function Ch(x4, y5, z4) {\n    return z4 ^ x4 & (y5 ^ z4);\n  }\n  function maj(x4, y5, z4) {\n    return x4 & y5 | z4 & (x4 | y5);\n  }\n  function sigma0(x4, xl) {\n    return (x4 >>> 28 | xl << 4) ^ (xl >>> 2 | x4 << 30) ^ (xl >>> 7 | x4 << 25);\n  }\n  function sigma1(x4, xl) {\n    return (x4 >>> 14 | xl << 18) ^ (x4 >>> 18 | xl << 14) ^ (xl >>> 9 | x4 << 23);\n  }\n  function Gamma0(x4, xl) {\n    return (x4 >>> 1 | xl << 31) ^ (x4 >>> 8 | xl << 24) ^ x4 >>> 7;\n  }\n  function Gamma0l(x4, xl) {\n    return (x4 >>> 1 | xl << 31) ^ (x4 >>> 8 | xl << 24) ^ (x4 >>> 7 | xl << 25);\n  }\n  function Gamma1(x4, xl) {\n    return (x4 >>> 19 | xl << 13) ^ (xl >>> 29 | x4 << 3) ^ x4 >>> 6;\n  }\n  function Gamma1l(x4, xl) {\n    return (x4 >>> 19 | xl << 13) ^ (xl >>> 29 | x4 << 3) ^ (x4 >>> 6 | xl << 26);\n  }\n  function getCarry(a5, b4) {\n    return a5 >>> 0 < b4 >>> 0 ? 1 : 0;\n  }\n  Sha512.prototype._update = function(M4) {\n    var W4 = (this || _global$18)._w;\n    var ah = (this || _global$18)._ah | 0;\n    var bh = (this || _global$18)._bh | 0;\n    var ch = (this || _global$18)._ch | 0;\n    var dh = (this || _global$18)._dh | 0;\n    var eh = (this || _global$18)._eh | 0;\n    var fh = (this || _global$18)._fh | 0;\n    var gh = (this || _global$18)._gh | 0;\n    var hh = (this || _global$18)._hh | 0;\n    var al = (this || _global$18)._al | 0;\n    var bl = (this || _global$18)._bl | 0;\n    var cl = (this || _global$18)._cl | 0;\n    var dl = (this || _global$18)._dl | 0;\n    var el = (this || _global$18)._el | 0;\n    var fl = (this || _global$18)._fl | 0;\n    var gl = (this || _global$18)._gl | 0;\n    var hl = (this || _global$18)._hl | 0;\n    for (var i5 = 0; i5 < 32; i5 += 2) {\n      W4[i5] = M4.readInt32BE(i5 * 4);\n      W4[i5 + 1] = M4.readInt32BE(i5 * 4 + 4);\n    }\n    for (; i5 < 160; i5 += 2) {\n      var xh = W4[i5 - 15 * 2];\n      var xl = W4[i5 - 15 * 2 + 1];\n      var gamma0 = Gamma0(xh, xl);\n      var gamma0l = Gamma0l(xl, xh);\n      xh = W4[i5 - 2 * 2];\n      xl = W4[i5 - 2 * 2 + 1];\n      var gamma1 = Gamma1(xh, xl);\n      var gamma1l = Gamma1l(xl, xh);\n      var Wi7h = W4[i5 - 7 * 2];\n      var Wi7l = W4[i5 - 7 * 2 + 1];\n      var Wi16h = W4[i5 - 16 * 2];\n      var Wi16l = W4[i5 - 16 * 2 + 1];\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      W4[i5] = Wih;\n      W4[i5 + 1] = Wil;\n    }\n    for (var j4 = 0; j4 < 160; j4 += 2) {\n      Wih = W4[j4];\n      Wil = W4[j4 + 1];\n      var majh = maj(ah, bh, ch);\n      var majl = maj(al, bl, cl);\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      var Kih = K3[j4];\n      var Kil = K3[j4 + 1];\n      var chh = Ch(eh, fh, gh);\n      var chl = Ch(el, fl, gl);\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      var t2l = sigma0l + majl | 0;\n      var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;\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    (this || _global$18)._al = (this || _global$18)._al + al | 0;\n    (this || _global$18)._bl = (this || _global$18)._bl + bl | 0;\n    (this || _global$18)._cl = (this || _global$18)._cl + cl | 0;\n    (this || _global$18)._dl = (this || _global$18)._dl + dl | 0;\n    (this || _global$18)._el = (this || _global$18)._el + el | 0;\n    (this || _global$18)._fl = (this || _global$18)._fl + fl | 0;\n    (this || _global$18)._gl = (this || _global$18)._gl + gl | 0;\n    (this || _global$18)._hl = (this || _global$18)._hl + hl | 0;\n    (this || _global$18)._ah = (this || _global$18)._ah + ah + getCarry((this || _global$18)._al, al) | 0;\n    (this || _global$18)._bh = (this || _global$18)._bh + bh + getCarry((this || _global$18)._bl, bl) | 0;\n    (this || _global$18)._ch = (this || _global$18)._ch + ch + getCarry((this || _global$18)._cl, cl) | 0;\n    (this || _global$18)._dh = (this || _global$18)._dh + dh + getCarry((this || _global$18)._dl, dl) | 0;\n    (this || _global$18)._eh = (this || _global$18)._eh + eh + getCarry((this || _global$18)._el, el) | 0;\n    (this || _global$18)._fh = (this || _global$18)._fh + fh + getCarry((this || _global$18)._fl, fl) | 0;\n    (this || _global$18)._gh = (this || _global$18)._gh + gh + getCarry((this || _global$18)._gl, gl) | 0;\n    (this || _global$18)._hh = (this || _global$18)._hh + hh + getCarry((this || _global$18)._hl, hl) | 0;\n  };\n  Sha512.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(64);\n    function writeInt64BE(h5, l5, offset) {\n      H3.writeInt32BE(h5, offset);\n      H3.writeInt32BE(l5, offset + 4);\n    }\n    writeInt64BE((this || _global$18)._ah, (this || _global$18)._al, 0);\n    writeInt64BE((this || _global$18)._bh, (this || _global$18)._bl, 8);\n    writeInt64BE((this || _global$18)._ch, (this || _global$18)._cl, 16);\n    writeInt64BE((this || _global$18)._dh, (this || _global$18)._dl, 24);\n    writeInt64BE((this || _global$18)._eh, (this || _global$18)._el, 32);\n    writeInt64BE((this || _global$18)._fh, (this || _global$18)._fl, 40);\n    writeInt64BE((this || _global$18)._gh, (this || _global$18)._gl, 48);\n    writeInt64BE((this || _global$18)._hh, (this || _global$18)._hl, 56);\n    return H3;\n  };\n  exports$3y = Sha512;\n  return exports$3y;\n}\nvar exports$3x = {};\nvar _dewExec$3w = false;\nvar _global$17 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3w() {\n  if (_dewExec$3w) return exports$3x;\n  _dewExec$3w = true;\n  var inherits = dew3();\n  var SHA512 = dew$3x();\n  var Hash2 = dew$3C();\n  var Buffer = dew$12().Buffer;\n  var W3 = new Array(160);\n  function Sha384() {\n    this.init();\n    (this || _global$17)._w = W3;\n    Hash2.call(this || _global$17, 128, 112);\n  }\n  inherits(Sha384, SHA512);\n  Sha384.prototype.init = function() {\n    (this || _global$17)._ah = 3418070365;\n    (this || _global$17)._bh = 1654270250;\n    (this || _global$17)._ch = 2438529370;\n    (this || _global$17)._dh = 355462360;\n    (this || _global$17)._eh = 1731405415;\n    (this || _global$17)._fh = 2394180231;\n    (this || _global$17)._gh = 3675008525;\n    (this || _global$17)._hh = 1203062813;\n    (this || _global$17)._al = 3238371032;\n    (this || _global$17)._bl = 914150663;\n    (this || _global$17)._cl = 812702999;\n    (this || _global$17)._dl = 4144912697;\n    (this || _global$17)._el = 4290775857;\n    (this || _global$17)._fl = 1750603025;\n    (this || _global$17)._gl = 1694076839;\n    (this || _global$17)._hl = 3204075428;\n    return this || _global$17;\n  };\n  Sha384.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(48);\n    function writeInt64BE(h5, l5, offset) {\n      H3.writeInt32BE(h5, offset);\n      H3.writeInt32BE(l5, offset + 4);\n    }\n    writeInt64BE((this || _global$17)._ah, (this || _global$17)._al, 0);\n    writeInt64BE((this || _global$17)._bh, (this || _global$17)._bl, 8);\n    writeInt64BE((this || _global$17)._ch, (this || _global$17)._cl, 16);\n    writeInt64BE((this || _global$17)._dh, (this || _global$17)._dl, 24);\n    writeInt64BE((this || _global$17)._eh, (this || _global$17)._el, 32);\n    writeInt64BE((this || _global$17)._fh, (this || _global$17)._fl, 40);\n    return H3;\n  };\n  exports$3x = Sha384;\n  return exports$3x;\n}\nvar exports$3w = {};\nvar _dewExec$3v = false;\nvar module$f = {\n  exports: exports$3w\n};\nfunction dew$3v() {\n  if (_dewExec$3v) return module$f.exports;\n  _dewExec$3v = true;\n  var exports11 = module$f.exports = function SHA(algorithm) {\n    algorithm = algorithm.toLowerCase();\n    var Algorithm = exports11[algorithm];\n    if (!Algorithm) throw new Error(algorithm + \" is not supported (we accept pull requests)\");\n    return new Algorithm();\n  };\n  exports11.sha = dew$3B();\n  exports11.sha1 = dew$3A();\n  exports11.sha224 = dew$3y();\n  exports11.sha256 = dew$3z();\n  exports11.sha384 = dew$3w();\n  exports11.sha512 = dew$3x();\n  return module$f.exports;\n}\nvar exports$3v = {};\nvar _dewExec$3u = false;\nvar _global$16 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3u() {\n  if (_dewExec$3u) return exports$3v;\n  _dewExec$3u = true;\n  var Buffer = dew$12().Buffer;\n  var Transform = exports6.Transform;\n  var StringDecoder2 = e$12.StringDecoder;\n  var inherits = dew3();\n  function CipherBase(hashMode) {\n    Transform.call(this || _global$16);\n    (this || _global$16).hashMode = typeof hashMode === \"string\";\n    if ((this || _global$16).hashMode) {\n      (this || _global$16)[hashMode] = (this || _global$16)._finalOrDigest;\n    } else {\n      (this || _global$16).final = (this || _global$16)._finalOrDigest;\n    }\n    if ((this || _global$16)._final) {\n      (this || _global$16).__final = (this || _global$16)._final;\n      (this || _global$16)._final = null;\n    }\n    (this || _global$16)._decoder = null;\n    (this || _global$16)._encoding = null;\n  }\n  inherits(CipherBase, Transform);\n  CipherBase.prototype.update = function(data, inputEnc, outputEnc) {\n    if (typeof data === \"string\") {\n      data = Buffer.from(data, inputEnc);\n    }\n    var outData = this._update(data);\n    if ((this || _global$16).hashMode) return this || _global$16;\n    if (outputEnc) {\n      outData = this._toString(outData, outputEnc);\n    }\n    return outData;\n  };\n  CipherBase.prototype.setAutoPadding = function() {\n  };\n  CipherBase.prototype.getAuthTag = function() {\n    throw new Error(\"trying to get auth tag in unsupported state\");\n  };\n  CipherBase.prototype.setAuthTag = function() {\n    throw new Error(\"trying to set auth tag in unsupported state\");\n  };\n  CipherBase.prototype.setAAD = function() {\n    throw new Error(\"trying to set aad in unsupported state\");\n  };\n  CipherBase.prototype._transform = function(data, _4, next) {\n    var err;\n    try {\n      if ((this || _global$16).hashMode) {\n        this._update(data);\n      } else {\n        this.push(this._update(data));\n      }\n    } catch (e7) {\n      err = e7;\n    } finally {\n      next(err);\n    }\n  };\n  CipherBase.prototype._flush = function(done) {\n    var err;\n    try {\n      this.push(this.__final());\n    } catch (e7) {\n      err = e7;\n    }\n    done(err);\n  };\n  CipherBase.prototype._finalOrDigest = function(outputEnc) {\n    var outData = this.__final() || Buffer.alloc(0);\n    if (outputEnc) {\n      outData = this._toString(outData, outputEnc, true);\n    }\n    return outData;\n  };\n  CipherBase.prototype._toString = function(value, enc, fin) {\n    if (!(this || _global$16)._decoder) {\n      (this || _global$16)._decoder = new StringDecoder2(enc);\n      (this || _global$16)._encoding = enc;\n    }\n    if ((this || _global$16)._encoding !== enc) throw new Error(\"can't switch encodings\");\n    var out = (this || _global$16)._decoder.write(value);\n    if (fin) {\n      out += (this || _global$16)._decoder.end();\n    }\n    return out;\n  };\n  exports$3v = CipherBase;\n  return exports$3v;\n}\nvar exports$3u = {};\nvar _dewExec$3t = false;\nfunction dew$3t() {\n  if (_dewExec$3t) return exports$3u;\n  _dewExec$3t = true;\n  var inherits = dew3();\n  var MD5 = dew$3E();\n  var RIPEMD160 = dew$3D();\n  var sha = dew$3v();\n  var Base = dew$3u();\n  function Hash2(hash) {\n    Base.call(this, \"digest\");\n    this._hash = hash;\n  }\n  inherits(Hash2, Base);\n  Hash2.prototype._update = function(data) {\n    this._hash.update(data);\n  };\n  Hash2.prototype._final = function() {\n    return this._hash.digest();\n  };\n  exports$3u = function createHash2(alg) {\n    alg = alg.toLowerCase();\n    if (alg === \"md5\") return new MD5();\n    if (alg === \"rmd160\" || alg === \"ripemd160\") return new RIPEMD160();\n    return new Hash2(sha(alg));\n  };\n  return exports$3u;\n}\nvar exports$3t = {};\nvar _dewExec$3s = false;\nfunction dew$3s() {\n  if (_dewExec$3s) return exports$3t;\n  _dewExec$3s = true;\n  var inherits = dew3();\n  var Buffer = dew$12().Buffer;\n  var Base = dew$3u();\n  var ZEROS = Buffer.alloc(128);\n  var blocksize = 64;\n  function Hmac2(alg, key) {\n    Base.call(this, \"digest\");\n    if (typeof key === \"string\") {\n      key = Buffer.from(key);\n    }\n    this._alg = alg;\n    this._key = key;\n    if (key.length > blocksize) {\n      key = alg(key);\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n    var opad = this._opad = Buffer.allocUnsafe(blocksize);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    this._hash = [ipad];\n  }\n  inherits(Hmac2, Base);\n  Hmac2.prototype._update = function(data) {\n    this._hash.push(data);\n  };\n  Hmac2.prototype._final = function() {\n    var h5 = this._alg(Buffer.concat(this._hash));\n    return this._alg(Buffer.concat([this._opad, h5]));\n  };\n  exports$3t = Hmac2;\n  return exports$3t;\n}\nvar exports$3s = {};\nvar _dewExec$3r = false;\nfunction dew$3r() {\n  if (_dewExec$3r) return exports$3s;\n  _dewExec$3r = true;\n  var MD5 = dew$3E();\n  exports$3s = function(buffer2) {\n    return new MD5().update(buffer2).digest();\n  };\n  return exports$3s;\n}\nvar exports$3r = {};\nvar _dewExec$3q = false;\nfunction dew$3q() {\n  if (_dewExec$3q) return exports$3r;\n  _dewExec$3q = true;\n  var inherits = dew3();\n  var Legacy = dew$3s();\n  var Base = dew$3u();\n  var Buffer = dew$12().Buffer;\n  var md5 = dew$3r();\n  var RIPEMD160 = dew$3D();\n  var sha = dew$3v();\n  var ZEROS = Buffer.alloc(128);\n  function Hmac2(alg, key) {\n    Base.call(this, \"digest\");\n    if (typeof key === \"string\") {\n      key = Buffer.from(key);\n    }\n    var blocksize = alg === \"sha512\" || alg === \"sha384\" ? 128 : 64;\n    this._alg = alg;\n    this._key = key;\n    if (key.length > blocksize) {\n      var hash = alg === \"rmd160\" ? new RIPEMD160() : sha(alg);\n      key = hash.update(key).digest();\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n    var opad = this._opad = Buffer.allocUnsafe(blocksize);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    this._hash = alg === \"rmd160\" ? new RIPEMD160() : sha(alg);\n    this._hash.update(ipad);\n  }\n  inherits(Hmac2, Base);\n  Hmac2.prototype._update = function(data) {\n    this._hash.update(data);\n  };\n  Hmac2.prototype._final = function() {\n    var h5 = this._hash.digest();\n    var hash = this._alg === \"rmd160\" ? new RIPEMD160() : sha(this._alg);\n    return hash.update(this._opad).update(h5).digest();\n  };\n  exports$3r = function createHmac2(alg, key) {\n    alg = alg.toLowerCase();\n    if (alg === \"rmd160\" || alg === \"ripemd160\") {\n      return new Hmac2(\"rmd160\", key);\n    }\n    if (alg === \"md5\") {\n      return new Legacy(md5, key);\n    }\n    return new Hmac2(alg, key);\n  };\n  return exports$3r;\n}\nvar _algorithms$2 = {\n  \"sha224WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"RSA-SHA224\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"sha256WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"RSA-SHA256\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"sha384WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"RSA-SHA384\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"sha512WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA512\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA1\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"3021300906052b0e03021a05000414\"\n  },\n  \"ecdsa-with-SHA1\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"sha256\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"sha224\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"sha384\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"sha512\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA1\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-RIPEMD160\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"\"\n  },\n  \"ripemd160WithRSA\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"RSA-RIPEMD160\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"md5WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  },\n  \"RSA-MD5\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  }\n};\nvar exports$3q = {};\nvar _dewExec$3p = false;\nfunction dew$3p() {\n  if (_dewExec$3p) return exports$3q;\n  _dewExec$3p = true;\n  exports$3q = _algorithms$2;\n  return exports$3q;\n}\nvar exports$3p = {};\nvar _dewExec$3o = false;\nfunction dew$3o() {\n  if (_dewExec$3o) return exports$3p;\n  _dewExec$3o = true;\n  var MAX_ALLOC = Math.pow(2, 30) - 1;\n  exports$3p = function(iterations, keylen) {\n    if (typeof iterations !== \"number\") {\n      throw new TypeError(\"Iterations not a number\");\n    }\n    if (iterations < 0) {\n      throw new TypeError(\"Bad iterations\");\n    }\n    if (typeof keylen !== \"number\") {\n      throw new TypeError(\"Key length not a number\");\n    }\n    if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) {\n      throw new TypeError(\"Bad key length\");\n    }\n  };\n  return exports$3p;\n}\nvar exports$3o = {};\nvar _dewExec$3n = false;\nvar _global$15 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3n() {\n  if (_dewExec$3n) return exports$3o;\n  _dewExec$3n = true;\n  var process$1 = process;\n  var defaultEncoding;\n  if (_global$15.process && _global$15.process.browser) {\n    defaultEncoding = \"utf-8\";\n  } else if (_global$15.process && _global$15.process.version) {\n    var pVersionMajor = parseInt(process$1.version.split(\".\")[0].slice(1), 10);\n    defaultEncoding = pVersionMajor >= 6 ? \"utf-8\" : \"binary\";\n  } else {\n    defaultEncoding = \"utf-8\";\n  }\n  exports$3o = defaultEncoding;\n  return exports$3o;\n}\nvar exports$3n = {};\nvar _dewExec$3m = false;\nfunction dew$3m() {\n  if (_dewExec$3m) return exports$3n;\n  _dewExec$3m = true;\n  var Buffer = dew$12().Buffer;\n  exports$3n = function(thing, encoding, name2) {\n    if (Buffer.isBuffer(thing)) {\n      return thing;\n    } else if (typeof thing === \"string\") {\n      return Buffer.from(thing, encoding);\n    } else if (ArrayBuffer.isView(thing)) {\n      return Buffer.from(thing.buffer);\n    } else {\n      throw new TypeError(name2 + \" must be a string, a Buffer, a typed array or a DataView\");\n    }\n  };\n  return exports$3n;\n}\nvar exports$3m = {};\nvar _dewExec$3l = false;\nvar _global$14 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3l() {\n  if (_dewExec$3l) return exports$3m;\n  _dewExec$3l = true;\n  var md5 = dew$3r();\n  var RIPEMD160 = dew$3D();\n  var sha = dew$3v();\n  var Buffer = dew$12().Buffer;\n  var checkParameters = dew$3o();\n  var defaultEncoding = dew$3n();\n  var toBuffer = dew$3m();\n  var ZEROS = Buffer.alloc(128);\n  var sizes = {\n    md5: 16,\n    sha1: 20,\n    sha224: 28,\n    sha256: 32,\n    sha384: 48,\n    sha512: 64,\n    rmd160: 20,\n    ripemd160: 20\n  };\n  function Hmac2(alg, key, saltLen) {\n    var hash = getDigest(alg);\n    var blocksize = alg === \"sha512\" || alg === \"sha384\" ? 128 : 64;\n    if (key.length > blocksize) {\n      key = hash(key);\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n    var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);\n    ipad.copy(ipad1, 0, 0, blocksize);\n    (this || _global$14).ipad1 = ipad1;\n    (this || _global$14).ipad2 = ipad;\n    (this || _global$14).opad = opad;\n    (this || _global$14).alg = alg;\n    (this || _global$14).blocksize = blocksize;\n    (this || _global$14).hash = hash;\n    (this || _global$14).size = sizes[alg];\n  }\n  Hmac2.prototype.run = function(data, ipad) {\n    data.copy(ipad, (this || _global$14).blocksize);\n    var h5 = this.hash(ipad);\n    h5.copy((this || _global$14).opad, (this || _global$14).blocksize);\n    return this.hash((this || _global$14).opad);\n  };\n  function getDigest(alg) {\n    function shaFunc(data) {\n      return sha(alg).update(data).digest();\n    }\n    function rmd160Func(data) {\n      return new RIPEMD160().update(data).digest();\n    }\n    if (alg === \"rmd160\" || alg === \"ripemd160\") return rmd160Func;\n    if (alg === \"md5\") return md5;\n    return shaFunc;\n  }\n  function pbkdf22(password, salt, iterations, keylen, digest) {\n    checkParameters(iterations, keylen);\n    password = toBuffer(password, defaultEncoding, \"Password\");\n    salt = toBuffer(salt, defaultEncoding, \"Salt\");\n    digest = digest || \"sha1\";\n    var hmac = new Hmac2(digest, password, salt.length);\n    var DK = Buffer.allocUnsafe(keylen);\n    var block1 = Buffer.allocUnsafe(salt.length + 4);\n    salt.copy(block1, 0, 0, salt.length);\n    var destPos = 0;\n    var hLen = sizes[digest];\n    var l5 = Math.ceil(keylen / hLen);\n    for (var i5 = 1; i5 <= l5; i5++) {\n      block1.writeUInt32BE(i5, salt.length);\n      var T4 = hmac.run(block1, hmac.ipad1);\n      var U4 = T4;\n      for (var j4 = 1; j4 < iterations; j4++) {\n        U4 = hmac.run(U4, hmac.ipad2);\n        for (var k4 = 0; k4 < hLen; k4++) T4[k4] ^= U4[k4];\n      }\n      T4.copy(DK, destPos);\n      destPos += hLen;\n    }\n    return DK;\n  }\n  exports$3m = pbkdf22;\n  return exports$3m;\n}\nvar exports$3l = {};\nvar _dewExec$3k = false;\nvar _global$13 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3k() {\n  if (_dewExec$3k) return exports$3l;\n  _dewExec$3k = true;\n  var Buffer = dew$12().Buffer;\n  var checkParameters = dew$3o();\n  var defaultEncoding = dew$3n();\n  var sync = dew$3l();\n  var toBuffer = dew$3m();\n  var ZERO_BUF;\n  var subtle = _global$13.crypto && _global$13.crypto.subtle;\n  var toBrowser = {\n    sha: \"SHA-1\",\n    \"sha-1\": \"SHA-1\",\n    sha1: \"SHA-1\",\n    sha256: \"SHA-256\",\n    \"sha-256\": \"SHA-256\",\n    sha384: \"SHA-384\",\n    \"sha-384\": \"SHA-384\",\n    \"sha-512\": \"SHA-512\",\n    sha512: \"SHA-512\"\n  };\n  var checks = [];\n  function checkNative(algo) {\n    if (_global$13.process && !_global$13.process.browser) {\n      return Promise.resolve(false);\n    }\n    if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n      return Promise.resolve(false);\n    }\n    if (checks[algo] !== void 0) {\n      return checks[algo];\n    }\n    ZERO_BUF = ZERO_BUF || Buffer.alloc(8);\n    var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function() {\n      return true;\n    }).catch(function() {\n      return false;\n    });\n    checks[algo] = prom;\n    return prom;\n  }\n  var nextTick2;\n  function getNextTick() {\n    if (nextTick2) {\n      return nextTick2;\n    }\n    if (_global$13.process && _global$13.process.nextTick) {\n      nextTick2 = _global$13.process.nextTick;\n    } else if (_global$13.queueMicrotask) {\n      nextTick2 = _global$13.queueMicrotask;\n    } else if (_global$13.setImmediate) {\n      nextTick2 = _global$13.setImmediate;\n    } else {\n      nextTick2 = _global$13.setTimeout;\n    }\n    return nextTick2;\n  }\n  function browserPbkdf2(password, salt, iterations, length, algo) {\n    return subtle.importKey(\"raw\", password, {\n      name: \"PBKDF2\"\n    }, false, [\"deriveBits\"]).then(function(key) {\n      return subtle.deriveBits({\n        name: \"PBKDF2\",\n        salt,\n        iterations,\n        hash: {\n          name: algo\n        }\n      }, key, length << 3);\n    }).then(function(res) {\n      return Buffer.from(res);\n    });\n  }\n  function resolvePromise(promise, callback) {\n    promise.then(function(out) {\n      getNextTick()(function() {\n        callback(null, out);\n      });\n    }, function(e7) {\n      getNextTick()(function() {\n        callback(e7);\n      });\n    });\n  }\n  exports$3l = function(password, salt, iterations, keylen, digest, callback) {\n    if (typeof digest === \"function\") {\n      callback = digest;\n      digest = void 0;\n    }\n    digest = digest || \"sha1\";\n    var algo = toBrowser[digest.toLowerCase()];\n    if (!algo || typeof _global$13.Promise !== \"function\") {\n      getNextTick()(function() {\n        var out;\n        try {\n          out = sync(password, salt, iterations, keylen, digest);\n        } catch (e7) {\n          return callback(e7);\n        }\n        callback(null, out);\n      });\n      return;\n    }\n    checkParameters(iterations, keylen);\n    password = toBuffer(password, defaultEncoding, \"Password\");\n    salt = toBuffer(salt, defaultEncoding, \"Salt\");\n    if (typeof callback !== \"function\") throw new Error(\"No callback provided to pbkdf2\");\n    resolvePromise(checkNative(algo).then(function(resp) {\n      if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo);\n      return sync(password, salt, iterations, keylen, digest);\n    }), callback);\n  };\n  return exports$3l;\n}\nvar exports$3k = {};\nvar _dewExec$3j = false;\nfunction dew$3j() {\n  if (_dewExec$3j) return exports$3k;\n  _dewExec$3j = true;\n  exports$3k.pbkdf2 = dew$3k();\n  exports$3k.pbkdf2Sync = dew$3l();\n  return exports$3k;\n}\nvar exports$3j = {};\nvar _dewExec$3i = false;\nfunction dew$3i() {\n  if (_dewExec$3i) return exports$3j;\n  _dewExec$3i = true;\n  exports$3j.readUInt32BE = function readUInt32BE(bytes, off2) {\n    var res = bytes[0 + off2] << 24 | bytes[1 + off2] << 16 | bytes[2 + off2] << 8 | bytes[3 + off2];\n    return res >>> 0;\n  };\n  exports$3j.writeUInt32BE = function writeUInt32BE(bytes, value, off2) {\n    bytes[0 + off2] = value >>> 24;\n    bytes[1 + off2] = value >>> 16 & 255;\n    bytes[2 + off2] = value >>> 8 & 255;\n    bytes[3 + off2] = value & 255;\n  };\n  exports$3j.ip = function ip(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 6; i5 >= 0; i5 -= 2) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inR >>> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inL >>> j4 + i5 & 1;\n      }\n    }\n    for (var i5 = 6; i5 >= 0; i5 -= 2) {\n      for (var j4 = 1; j4 <= 25; j4 += 8) {\n        outR <<= 1;\n        outR |= inR >>> j4 + i5 & 1;\n      }\n      for (var j4 = 1; j4 <= 25; j4 += 8) {\n        outR <<= 1;\n        outR |= inL >>> j4 + i5 & 1;\n      }\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$3j.rip = function rip(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 0; i5 < 4; i5++) {\n      for (var j4 = 24; j4 >= 0; j4 -= 8) {\n        outL <<= 1;\n        outL |= inR >>> j4 + i5 & 1;\n        outL <<= 1;\n        outL |= inL >>> j4 + i5 & 1;\n      }\n    }\n    for (var i5 = 4; i5 < 8; i5++) {\n      for (var j4 = 24; j4 >= 0; j4 -= 8) {\n        outR <<= 1;\n        outR |= inR >>> j4 + i5 & 1;\n        outR <<= 1;\n        outR |= inL >>> j4 + i5 & 1;\n      }\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$3j.pc1 = function pc1(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 7; i5 >= 5; i5--) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inR >> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inL >> j4 + i5 & 1;\n      }\n    }\n    for (var j4 = 0; j4 <= 24; j4 += 8) {\n      outL <<= 1;\n      outL |= inR >> j4 + i5 & 1;\n    }\n    for (var i5 = 1; i5 <= 3; i5++) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outR <<= 1;\n        outR |= inR >> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outR <<= 1;\n        outR |= inL >> j4 + i5 & 1;\n      }\n    }\n    for (var j4 = 0; j4 <= 24; j4 += 8) {\n      outR <<= 1;\n      outR |= inL >> j4 + i5 & 1;\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$3j.r28shl = function r28shl(num, shift) {\n    return num << shift & 268435455 | num >>> 28 - shift;\n  };\n  var pc2table = [\n    // inL => outL\n    14,\n    11,\n    17,\n    4,\n    27,\n    23,\n    25,\n    0,\n    13,\n    22,\n    7,\n    18,\n    5,\n    9,\n    16,\n    24,\n    2,\n    20,\n    12,\n    21,\n    1,\n    8,\n    15,\n    26,\n    // inR => outR\n    15,\n    4,\n    25,\n    19,\n    9,\n    1,\n    26,\n    16,\n    5,\n    11,\n    23,\n    8,\n    12,\n    7,\n    17,\n    0,\n    22,\n    3,\n    10,\n    14,\n    6,\n    20,\n    27,\n    24\n  ];\n  exports$3j.pc2 = function pc2(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    var len = pc2table.length >>> 1;\n    for (var i5 = 0; i5 < len; i5++) {\n      outL <<= 1;\n      outL |= inL >>> pc2table[i5] & 1;\n    }\n    for (var i5 = len; i5 < pc2table.length; i5++) {\n      outR <<= 1;\n      outR |= inR >>> pc2table[i5] & 1;\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$3j.expand = function expand(r5, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    outL = (r5 & 1) << 5 | r5 >>> 27;\n    for (var i5 = 23; i5 >= 15; i5 -= 4) {\n      outL <<= 6;\n      outL |= r5 >>> i5 & 63;\n    }\n    for (var i5 = 11; i5 >= 3; i5 -= 4) {\n      outR |= r5 >>> i5 & 63;\n      outR <<= 6;\n    }\n    outR |= (r5 & 31) << 1 | r5 >>> 31;\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  var sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\n  exports$3j.substitute = function substitute(inL, inR) {\n    var out = 0;\n    for (var i5 = 0; i5 < 4; i5++) {\n      var b4 = inL >>> 18 - i5 * 6 & 63;\n      var sb = sTable[i5 * 64 + b4];\n      out <<= 4;\n      out |= sb;\n    }\n    for (var i5 = 0; i5 < 4; i5++) {\n      var b4 = inR >>> 18 - i5 * 6 & 63;\n      var sb = sTable[4 * 64 + i5 * 64 + b4];\n      out <<= 4;\n      out |= sb;\n    }\n    return out >>> 0;\n  };\n  var permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\n  exports$3j.permute = function permute(num) {\n    var out = 0;\n    for (var i5 = 0; i5 < permuteTable.length; i5++) {\n      out <<= 1;\n      out |= num >>> permuteTable[i5] & 1;\n    }\n    return out >>> 0;\n  };\n  exports$3j.padSplit = function padSplit(num, size, group) {\n    var str = num.toString(2);\n    while (str.length < size) str = \"0\" + str;\n    var out = [];\n    for (var i5 = 0; i5 < size; i5 += group) out.push(str.slice(i5, i5 + group));\n    return out.join(\" \");\n  };\n  return exports$3j;\n}\nvar exports$3i = {};\nvar _dewExec$3h = false;\nfunction dew$3h() {\n  if (_dewExec$3h) return exports$3i;\n  _dewExec$3h = true;\n  exports$3i = assert2;\n  function assert2(val, msg) {\n    if (!val) throw new Error(msg || \"Assertion failed\");\n  }\n  assert2.equal = function assertEqual(l5, r5, msg) {\n    if (l5 != r5) throw new Error(msg || \"Assertion failed: \" + l5 + \" != \" + r5);\n  };\n  return exports$3i;\n}\nvar exports$3h = {};\nvar _dewExec$3g = false;\nfunction dew$3g() {\n  if (_dewExec$3g) return exports$3h;\n  _dewExec$3g = true;\n  var assert2 = dew$3h();\n  function Cipher2(options) {\n    this.options = options;\n    this.type = this.options.type;\n    this.blockSize = 8;\n    this._init();\n    this.buffer = new Array(this.blockSize);\n    this.bufferOff = 0;\n    this.padding = options.padding !== false;\n  }\n  exports$3h = Cipher2;\n  Cipher2.prototype._init = function _init() {\n  };\n  Cipher2.prototype.update = function update(data) {\n    if (data.length === 0) return [];\n    if (this.type === \"decrypt\") return this._updateDecrypt(data);\n    else return this._updateEncrypt(data);\n  };\n  Cipher2.prototype._buffer = function _buffer(data, off2) {\n    var min = Math.min(this.buffer.length - this.bufferOff, data.length - off2);\n    for (var i5 = 0; i5 < min; i5++) this.buffer[this.bufferOff + i5] = data[off2 + i5];\n    this.bufferOff += min;\n    return min;\n  };\n  Cipher2.prototype._flushBuffer = function _flushBuffer(out, off2) {\n    this._update(this.buffer, 0, out, off2);\n    this.bufferOff = 0;\n    return this.blockSize;\n  };\n  Cipher2.prototype._updateEncrypt = function _updateEncrypt(data) {\n    var inputOff = 0;\n    var outputOff = 0;\n    var count = (this.bufferOff + data.length) / this.blockSize | 0;\n    var out = new Array(count * this.blockSize);\n    if (this.bufferOff !== 0) {\n      inputOff += this._buffer(data, inputOff);\n      if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n    }\n    var max = data.length - (data.length - inputOff) % this.blockSize;\n    for (; inputOff < max; inputOff += this.blockSize) {\n      this._update(data, inputOff, out, outputOff);\n      outputOff += this.blockSize;\n    }\n    for (; inputOff < data.length; inputOff++, this.bufferOff++) this.buffer[this.bufferOff] = data[inputOff];\n    return out;\n  };\n  Cipher2.prototype._updateDecrypt = function _updateDecrypt(data) {\n    var inputOff = 0;\n    var outputOff = 0;\n    var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n    var out = new Array(count * this.blockSize);\n    for (; count > 0; count--) {\n      inputOff += this._buffer(data, inputOff);\n      outputOff += this._flushBuffer(out, outputOff);\n    }\n    inputOff += this._buffer(data, inputOff);\n    return out;\n  };\n  Cipher2.prototype.final = function final(buffer2) {\n    var first;\n    if (buffer2) first = this.update(buffer2);\n    var last;\n    if (this.type === \"encrypt\") last = this._finalEncrypt();\n    else last = this._finalDecrypt();\n    if (first) return first.concat(last);\n    else return last;\n  };\n  Cipher2.prototype._pad = function _pad(buffer2, off2) {\n    if (off2 === 0) return false;\n    while (off2 < buffer2.length) buffer2[off2++] = 0;\n    return true;\n  };\n  Cipher2.prototype._finalEncrypt = function _finalEncrypt() {\n    if (!this._pad(this.buffer, this.bufferOff)) return [];\n    var out = new Array(this.blockSize);\n    this._update(this.buffer, 0, out, 0);\n    return out;\n  };\n  Cipher2.prototype._unpad = function _unpad(buffer2) {\n    return buffer2;\n  };\n  Cipher2.prototype._finalDecrypt = function _finalDecrypt() {\n    assert2.equal(this.bufferOff, this.blockSize, \"Not enough data to decrypt\");\n    var out = new Array(this.blockSize);\n    this._flushBuffer(out, 0);\n    return this._unpad(out);\n  };\n  return exports$3h;\n}\nvar exports$3g = {};\nvar _dewExec$3f = false;\nfunction dew$3f() {\n  if (_dewExec$3f) return exports$3g;\n  _dewExec$3f = true;\n  var assert2 = dew$3h();\n  var inherits = dew3();\n  var utils = dew$3i();\n  var Cipher2 = dew$3g();\n  function DESState() {\n    this.tmp = new Array(2);\n    this.keys = null;\n  }\n  function DES(options) {\n    Cipher2.call(this, options);\n    var state = new DESState();\n    this._desState = state;\n    this.deriveKeys(state, options.key);\n  }\n  inherits(DES, Cipher2);\n  exports$3g = DES;\n  DES.create = function create(options) {\n    return new DES(options);\n  };\n  var shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\n  DES.prototype.deriveKeys = function deriveKeys(state, key) {\n    state.keys = new Array(16 * 2);\n    assert2.equal(key.length, this.blockSize, \"Invalid key length\");\n    var kL = utils.readUInt32BE(key, 0);\n    var kR = utils.readUInt32BE(key, 4);\n    utils.pc1(kL, kR, state.tmp, 0);\n    kL = state.tmp[0];\n    kR = state.tmp[1];\n    for (var i5 = 0; i5 < state.keys.length; i5 += 2) {\n      var shift = shiftTable[i5 >>> 1];\n      kL = utils.r28shl(kL, shift);\n      kR = utils.r28shl(kR, shift);\n      utils.pc2(kL, kR, state.keys, i5);\n    }\n  };\n  DES.prototype._update = function _update(inp, inOff, out, outOff) {\n    var state = this._desState;\n    var l5 = utils.readUInt32BE(inp, inOff);\n    var r5 = utils.readUInt32BE(inp, inOff + 4);\n    utils.ip(l5, r5, state.tmp, 0);\n    l5 = state.tmp[0];\n    r5 = state.tmp[1];\n    if (this.type === \"encrypt\") this._encrypt(state, l5, r5, state.tmp, 0);\n    else this._decrypt(state, l5, r5, state.tmp, 0);\n    l5 = state.tmp[0];\n    r5 = state.tmp[1];\n    utils.writeUInt32BE(out, l5, outOff);\n    utils.writeUInt32BE(out, r5, outOff + 4);\n  };\n  DES.prototype._pad = function _pad(buffer2, off2) {\n    if (this.padding === false) {\n      return false;\n    }\n    var value = buffer2.length - off2;\n    for (var i5 = off2; i5 < buffer2.length; i5++) buffer2[i5] = value;\n    return true;\n  };\n  DES.prototype._unpad = function _unpad(buffer2) {\n    if (this.padding === false) {\n      return buffer2;\n    }\n    var pad = buffer2[buffer2.length - 1];\n    for (var i5 = buffer2.length - pad; i5 < buffer2.length; i5++) assert2.equal(buffer2[i5], pad);\n    return buffer2.slice(0, buffer2.length - pad);\n  };\n  DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off2) {\n    var l5 = lStart;\n    var r5 = rStart;\n    for (var i5 = 0; i5 < state.keys.length; i5 += 2) {\n      var keyL = state.keys[i5];\n      var keyR = state.keys[i5 + 1];\n      utils.expand(r5, state.tmp, 0);\n      keyL ^= state.tmp[0];\n      keyR ^= state.tmp[1];\n      var s5 = utils.substitute(keyL, keyR);\n      var f6 = utils.permute(s5);\n      var t5 = r5;\n      r5 = (l5 ^ f6) >>> 0;\n      l5 = t5;\n    }\n    utils.rip(r5, l5, out, off2);\n  };\n  DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off2) {\n    var l5 = rStart;\n    var r5 = lStart;\n    for (var i5 = state.keys.length - 2; i5 >= 0; i5 -= 2) {\n      var keyL = state.keys[i5];\n      var keyR = state.keys[i5 + 1];\n      utils.expand(l5, state.tmp, 0);\n      keyL ^= state.tmp[0];\n      keyR ^= state.tmp[1];\n      var s5 = utils.substitute(keyL, keyR);\n      var f6 = utils.permute(s5);\n      var t5 = l5;\n      l5 = (r5 ^ f6) >>> 0;\n      r5 = t5;\n    }\n    utils.rip(l5, r5, out, off2);\n  };\n  return exports$3g;\n}\nvar exports$3f = {};\nvar _dewExec$3e = false;\nfunction dew$3e() {\n  if (_dewExec$3e) return exports$3f;\n  _dewExec$3e = true;\n  var assert2 = dew$3h();\n  var inherits = dew3();\n  var proto = {};\n  function CBCState(iv) {\n    assert2.equal(iv.length, 8, \"Invalid IV length\");\n    this.iv = new Array(8);\n    for (var i5 = 0; i5 < this.iv.length; i5++) this.iv[i5] = iv[i5];\n  }\n  function instantiate(Base) {\n    function CBC(options) {\n      Base.call(this, options);\n      this._cbcInit();\n    }\n    inherits(CBC, Base);\n    var keys = Object.keys(proto);\n    for (var i5 = 0; i5 < keys.length; i5++) {\n      var key = keys[i5];\n      CBC.prototype[key] = proto[key];\n    }\n    CBC.create = function create(options) {\n      return new CBC(options);\n    };\n    return CBC;\n  }\n  exports$3f.instantiate = instantiate;\n  proto._cbcInit = function _cbcInit() {\n    var state = new CBCState(this.options.iv);\n    this._cbcState = state;\n  };\n  proto._update = function _update(inp, inOff, out, outOff) {\n    var state = this._cbcState;\n    var superProto = this.constructor.super_.prototype;\n    var iv = state.iv;\n    if (this.type === \"encrypt\") {\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] ^= inp[inOff + i5];\n      superProto._update.call(this, iv, 0, out, outOff);\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] = out[outOff + i5];\n    } else {\n      superProto._update.call(this, inp, inOff, out, outOff);\n      for (var i5 = 0; i5 < this.blockSize; i5++) out[outOff + i5] ^= iv[i5];\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] = inp[inOff + i5];\n    }\n  };\n  return exports$3f;\n}\nvar exports$3e = {};\nvar _dewExec$3d = false;\nfunction dew$3d() {\n  if (_dewExec$3d) return exports$3e;\n  _dewExec$3d = true;\n  var assert2 = dew$3h();\n  var inherits = dew3();\n  var Cipher2 = dew$3g();\n  var DES = dew$3f();\n  function EDEState(type, key) {\n    assert2.equal(key.length, 24, \"Invalid key length\");\n    var k1 = key.slice(0, 8);\n    var k22 = key.slice(8, 16);\n    var k32 = key.slice(16, 24);\n    if (type === \"encrypt\") {\n      this.ciphers = [DES.create({\n        type: \"encrypt\",\n        key: k1\n      }), DES.create({\n        type: \"decrypt\",\n        key: k22\n      }), DES.create({\n        type: \"encrypt\",\n        key: k32\n      })];\n    } else {\n      this.ciphers = [DES.create({\n        type: \"decrypt\",\n        key: k32\n      }), DES.create({\n        type: \"encrypt\",\n        key: k22\n      }), DES.create({\n        type: \"decrypt\",\n        key: k1\n      })];\n    }\n  }\n  function EDE(options) {\n    Cipher2.call(this, options);\n    var state = new EDEState(this.type, this.options.key);\n    this._edeState = state;\n  }\n  inherits(EDE, Cipher2);\n  exports$3e = EDE;\n  EDE.create = function create(options) {\n    return new EDE(options);\n  };\n  EDE.prototype._update = function _update(inp, inOff, out, outOff) {\n    var state = this._edeState;\n    state.ciphers[0]._update(inp, inOff, out, outOff);\n    state.ciphers[1]._update(out, outOff, out, outOff);\n    state.ciphers[2]._update(out, outOff, out, outOff);\n  };\n  EDE.prototype._pad = DES.prototype._pad;\n  EDE.prototype._unpad = DES.prototype._unpad;\n  return exports$3e;\n}\nvar exports$3d = {};\nvar _dewExec$3c = false;\nfunction dew$3c() {\n  if (_dewExec$3c) return exports$3d;\n  _dewExec$3c = true;\n  exports$3d.utils = dew$3i();\n  exports$3d.Cipher = dew$3g();\n  exports$3d.DES = dew$3f();\n  exports$3d.CBC = dew$3e();\n  exports$3d.EDE = dew$3d();\n  return exports$3d;\n}\nvar exports$3c = {};\nvar _dewExec$3b = false;\nvar _global$12 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3b() {\n  if (_dewExec$3b) return exports$3c;\n  _dewExec$3b = true;\n  var CipherBase = dew$3u();\n  var des = dew$3c();\n  var inherits = dew3();\n  var Buffer = dew$12().Buffer;\n  var modes = {\n    \"des-ede3-cbc\": des.CBC.instantiate(des.EDE),\n    \"des-ede3\": des.EDE,\n    \"des-ede-cbc\": des.CBC.instantiate(des.EDE),\n    \"des-ede\": des.EDE,\n    \"des-cbc\": des.CBC.instantiate(des.DES),\n    \"des-ecb\": des.DES\n  };\n  modes.des = modes[\"des-cbc\"];\n  modes.des3 = modes[\"des-ede3-cbc\"];\n  exports$3c = DES;\n  inherits(DES, CipherBase);\n  function DES(opts) {\n    CipherBase.call(this || _global$12);\n    var modeName = opts.mode.toLowerCase();\n    var mode = modes[modeName];\n    var type;\n    if (opts.decrypt) {\n      type = \"decrypt\";\n    } else {\n      type = \"encrypt\";\n    }\n    var key = opts.key;\n    if (!Buffer.isBuffer(key)) {\n      key = Buffer.from(key);\n    }\n    if (modeName === \"des-ede\" || modeName === \"des-ede-cbc\") {\n      key = Buffer.concat([key, key.slice(0, 8)]);\n    }\n    var iv = opts.iv;\n    if (!Buffer.isBuffer(iv)) {\n      iv = Buffer.from(iv);\n    }\n    (this || _global$12)._des = mode.create({\n      key,\n      iv,\n      type\n    });\n  }\n  DES.prototype._update = function(data) {\n    return Buffer.from((this || _global$12)._des.update(data));\n  };\n  DES.prototype._final = function() {\n    return Buffer.from((this || _global$12)._des.final());\n  };\n  return exports$3c;\n}\nvar exports$3b = {};\nvar _dewExec$3a = false;\nfunction dew$3a() {\n  if (_dewExec$3a) return exports$3b;\n  _dewExec$3a = true;\n  exports$3b.encrypt = function(self2, block) {\n    return self2._cipher.encryptBlock(block);\n  };\n  exports$3b.decrypt = function(self2, block) {\n    return self2._cipher.decryptBlock(block);\n  };\n  return exports$3b;\n}\nvar exports$3a = {};\nvar _dewExec$39 = false;\nfunction dew$39() {\n  if (_dewExec$39) return exports$3a;\n  _dewExec$39 = true;\n  var Buffer = dew().Buffer;\n  exports$3a = function xor(a5, b4) {\n    var length = Math.min(a5.length, b4.length);\n    var buffer2 = new Buffer(length);\n    for (var i5 = 0; i5 < length; ++i5) {\n      buffer2[i5] = a5[i5] ^ b4[i5];\n    }\n    return buffer2;\n  };\n  return exports$3a;\n}\nvar exports$39 = {};\nvar _dewExec$38 = false;\nfunction dew$38() {\n  if (_dewExec$38) return exports$39;\n  _dewExec$38 = true;\n  var xor = dew$39();\n  exports$39.encrypt = function(self2, block) {\n    var data = xor(block, self2._prev);\n    self2._prev = self2._cipher.encryptBlock(data);\n    return self2._prev;\n  };\n  exports$39.decrypt = function(self2, block) {\n    var pad = self2._prev;\n    self2._prev = block;\n    var out = self2._cipher.decryptBlock(block);\n    return xor(out, pad);\n  };\n  return exports$39;\n}\nvar exports$38 = {};\nvar _dewExec$37 = false;\nfunction dew$37() {\n  if (_dewExec$37) return exports$38;\n  _dewExec$37 = true;\n  var Buffer = dew$12().Buffer;\n  var xor = dew$39();\n  function encryptStart(self2, data, decrypt) {\n    var len = data.length;\n    var out = xor(data, self2._cache);\n    self2._cache = self2._cache.slice(len);\n    self2._prev = Buffer.concat([self2._prev, decrypt ? data : out]);\n    return out;\n  }\n  exports$38.encrypt = function(self2, data, decrypt) {\n    var out = Buffer.allocUnsafe(0);\n    var len;\n    while (data.length) {\n      if (self2._cache.length === 0) {\n        self2._cache = self2._cipher.encryptBlock(self2._prev);\n        self2._prev = Buffer.allocUnsafe(0);\n      }\n      if (self2._cache.length <= data.length) {\n        len = self2._cache.length;\n        out = Buffer.concat([out, encryptStart(self2, data.slice(0, len), decrypt)]);\n        data = data.slice(len);\n      } else {\n        out = Buffer.concat([out, encryptStart(self2, data, decrypt)]);\n        break;\n      }\n    }\n    return out;\n  };\n  return exports$38;\n}\nvar exports$37 = {};\nvar _dewExec$36 = false;\nfunction dew$36() {\n  if (_dewExec$36) return exports$37;\n  _dewExec$36 = true;\n  var Buffer = dew$12().Buffer;\n  function encryptByte(self2, byteParam, decrypt) {\n    var pad = self2._cipher.encryptBlock(self2._prev);\n    var out = pad[0] ^ byteParam;\n    self2._prev = Buffer.concat([self2._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\n    return out;\n  }\n  exports$37.encrypt = function(self2, chunk, decrypt) {\n    var len = chunk.length;\n    var out = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      out[i5] = encryptByte(self2, chunk[i5], decrypt);\n    }\n    return out;\n  };\n  return exports$37;\n}\nvar exports$36 = {};\nvar _dewExec$35 = false;\nfunction dew$35() {\n  if (_dewExec$35) return exports$36;\n  _dewExec$35 = true;\n  var Buffer = dew$12().Buffer;\n  function encryptByte(self2, byteParam, decrypt) {\n    var pad;\n    var i5 = -1;\n    var len = 8;\n    var out = 0;\n    var bit, value;\n    while (++i5 < len) {\n      pad = self2._cipher.encryptBlock(self2._prev);\n      bit = byteParam & 1 << 7 - i5 ? 128 : 0;\n      value = pad[0] ^ bit;\n      out += (value & 128) >> i5 % 8;\n      self2._prev = shiftIn(self2._prev, decrypt ? bit : value);\n    }\n    return out;\n  }\n  function shiftIn(buffer2, value) {\n    var len = buffer2.length;\n    var i5 = -1;\n    var out = Buffer.allocUnsafe(buffer2.length);\n    buffer2 = Buffer.concat([buffer2, Buffer.from([value])]);\n    while (++i5 < len) {\n      out[i5] = buffer2[i5] << 1 | buffer2[i5 + 1] >> 7;\n    }\n    return out;\n  }\n  exports$36.encrypt = function(self2, chunk, decrypt) {\n    var len = chunk.length;\n    var out = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      out[i5] = encryptByte(self2, chunk[i5], decrypt);\n    }\n    return out;\n  };\n  return exports$36;\n}\nvar exports$35 = {};\nvar _dewExec$34 = false;\nfunction dew$34() {\n  if (_dewExec$34) return exports$35;\n  _dewExec$34 = true;\n  var Buffer = dew().Buffer;\n  var xor = dew$39();\n  function getBlock(self2) {\n    self2._prev = self2._cipher.encryptBlock(self2._prev);\n    return self2._prev;\n  }\n  exports$35.encrypt = function(self2, chunk) {\n    while (self2._cache.length < chunk.length) {\n      self2._cache = Buffer.concat([self2._cache, getBlock(self2)]);\n    }\n    var pad = self2._cache.slice(0, chunk.length);\n    self2._cache = self2._cache.slice(chunk.length);\n    return xor(chunk, pad);\n  };\n  return exports$35;\n}\nvar exports$34 = {};\nvar _dewExec$33 = false;\nfunction dew$33() {\n  if (_dewExec$33) return exports$34;\n  _dewExec$33 = true;\n  function incr32(iv) {\n    var len = iv.length;\n    var item;\n    while (len--) {\n      item = iv.readUInt8(len);\n      if (item === 255) {\n        iv.writeUInt8(0, len);\n      } else {\n        item++;\n        iv.writeUInt8(item, len);\n        break;\n      }\n    }\n  }\n  exports$34 = incr32;\n  return exports$34;\n}\nvar exports$33 = {};\nvar _dewExec$32 = false;\nfunction dew$32() {\n  if (_dewExec$32) return exports$33;\n  _dewExec$32 = true;\n  var xor = dew$39();\n  var Buffer = dew$12().Buffer;\n  var incr32 = dew$33();\n  function getBlock(self2) {\n    var out = self2._cipher.encryptBlockRaw(self2._prev);\n    incr32(self2._prev);\n    return out;\n  }\n  var blockSize = 16;\n  exports$33.encrypt = function(self2, chunk) {\n    var chunkNum = Math.ceil(chunk.length / blockSize);\n    var start = self2._cache.length;\n    self2._cache = Buffer.concat([self2._cache, Buffer.allocUnsafe(chunkNum * blockSize)]);\n    for (var i5 = 0; i5 < chunkNum; i5++) {\n      var out = getBlock(self2);\n      var offset = start + i5 * blockSize;\n      self2._cache.writeUInt32BE(out[0], offset + 0);\n      self2._cache.writeUInt32BE(out[1], offset + 4);\n      self2._cache.writeUInt32BE(out[2], offset + 8);\n      self2._cache.writeUInt32BE(out[3], offset + 12);\n    }\n    var pad = self2._cache.slice(0, chunk.length);\n    self2._cache = self2._cache.slice(chunk.length);\n    return xor(chunk, pad);\n  };\n  return exports$33;\n}\nvar _list$2 = {\n  \"aes-128-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-192-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-256-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-192-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-256-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes128\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes192\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes256\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-192-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-256-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  }\n};\nvar exports$32 = {};\nvar _dewExec$31 = false;\nfunction dew$31() {\n  if (_dewExec$31) return exports$32;\n  _dewExec$31 = true;\n  var modeModules = {\n    ECB: dew$3a(),\n    CBC: dew$38(),\n    CFB: dew$37(),\n    CFB8: dew$36(),\n    CFB1: dew$35(),\n    OFB: dew$34(),\n    CTR: dew$32(),\n    GCM: dew$32()\n  };\n  var modes = _list$2;\n  for (var key in modes) {\n    modes[key].module = modeModules[modes[key].mode];\n  }\n  exports$32 = modes;\n  return exports$32;\n}\nvar exports$31 = {};\nvar _dewExec$30 = false;\nvar _global$11 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$30() {\n  if (_dewExec$30) return exports$31;\n  _dewExec$30 = true;\n  var Buffer = dew$12().Buffer;\n  function asUInt32Array(buf) {\n    if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n    var len = buf.length / 4 | 0;\n    var out = new Array(len);\n    for (var i5 = 0; i5 < len; i5++) {\n      out[i5] = buf.readUInt32BE(i5 * 4);\n    }\n    return out;\n  }\n  function scrubVec(v5) {\n    for (var i5 = 0; i5 < v5.length; v5++) {\n      v5[i5] = 0;\n    }\n  }\n  function cryptBlock(M4, keySchedule, SUB_MIX, SBOX, nRounds) {\n    var SUB_MIX0 = SUB_MIX[0];\n    var SUB_MIX1 = SUB_MIX[1];\n    var SUB_MIX2 = SUB_MIX[2];\n    var SUB_MIX3 = SUB_MIX[3];\n    var s0 = M4[0] ^ keySchedule[0];\n    var s1 = M4[1] ^ keySchedule[1];\n    var s22 = M4[2] ^ keySchedule[2];\n    var s32 = M4[3] ^ keySchedule[3];\n    var t0, t1, t22, t32;\n    var ksRow = 4;\n    for (var round = 1; round < nRounds; round++) {\n      t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 255] ^ SUB_MIX2[s22 >>> 8 & 255] ^ SUB_MIX3[s32 & 255] ^ keySchedule[ksRow++];\n      t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s22 >>> 16 & 255] ^ SUB_MIX2[s32 >>> 8 & 255] ^ SUB_MIX3[s0 & 255] ^ keySchedule[ksRow++];\n      t22 = SUB_MIX0[s22 >>> 24] ^ SUB_MIX1[s32 >>> 16 & 255] ^ SUB_MIX2[s0 >>> 8 & 255] ^ SUB_MIX3[s1 & 255] ^ keySchedule[ksRow++];\n      t32 = SUB_MIX0[s32 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 255] ^ SUB_MIX2[s1 >>> 8 & 255] ^ SUB_MIX3[s22 & 255] ^ keySchedule[ksRow++];\n      s0 = t0;\n      s1 = t1;\n      s22 = t22;\n      s32 = t32;\n    }\n    t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 255] << 16 | SBOX[s22 >>> 8 & 255] << 8 | SBOX[s32 & 255]) ^ keySchedule[ksRow++];\n    t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s22 >>> 16 & 255] << 16 | SBOX[s32 >>> 8 & 255] << 8 | SBOX[s0 & 255]) ^ keySchedule[ksRow++];\n    t22 = (SBOX[s22 >>> 24] << 24 | SBOX[s32 >>> 16 & 255] << 16 | SBOX[s0 >>> 8 & 255] << 8 | SBOX[s1 & 255]) ^ keySchedule[ksRow++];\n    t32 = (SBOX[s32 >>> 24] << 24 | SBOX[s0 >>> 16 & 255] << 16 | SBOX[s1 >>> 8 & 255] << 8 | SBOX[s22 & 255]) ^ keySchedule[ksRow++];\n    t0 = t0 >>> 0;\n    t1 = t1 >>> 0;\n    t22 = t22 >>> 0;\n    t32 = t32 >>> 0;\n    return [t0, t1, t22, t32];\n  }\n  var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];\n  var G3 = (function() {\n    var d4 = new Array(256);\n    for (var j4 = 0; j4 < 256; j4++) {\n      if (j4 < 128) {\n        d4[j4] = j4 << 1;\n      } else {\n        d4[j4] = j4 << 1 ^ 283;\n      }\n    }\n    var SBOX = [];\n    var INV_SBOX = [];\n    var SUB_MIX = [[], [], [], []];\n    var INV_SUB_MIX = [[], [], [], []];\n    var x4 = 0;\n    var xi = 0;\n    for (var i5 = 0; i5 < 256; ++i5) {\n      var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n      sx = sx >>> 8 ^ sx & 255 ^ 99;\n      SBOX[x4] = sx;\n      INV_SBOX[sx] = x4;\n      var x22 = d4[x4];\n      var x42 = d4[x22];\n      var x8 = d4[x42];\n      var t5 = d4[sx] * 257 ^ sx * 16843008;\n      SUB_MIX[0][x4] = t5 << 24 | t5 >>> 8;\n      SUB_MIX[1][x4] = t5 << 16 | t5 >>> 16;\n      SUB_MIX[2][x4] = t5 << 8 | t5 >>> 24;\n      SUB_MIX[3][x4] = t5;\n      t5 = x8 * 16843009 ^ x42 * 65537 ^ x22 * 257 ^ x4 * 16843008;\n      INV_SUB_MIX[0][sx] = t5 << 24 | t5 >>> 8;\n      INV_SUB_MIX[1][sx] = t5 << 16 | t5 >>> 16;\n      INV_SUB_MIX[2][sx] = t5 << 8 | t5 >>> 24;\n      INV_SUB_MIX[3][sx] = t5;\n      if (x4 === 0) {\n        x4 = xi = 1;\n      } else {\n        x4 = x22 ^ d4[d4[d4[x8 ^ x22]]];\n        xi ^= d4[d4[xi]];\n      }\n    }\n    return {\n      SBOX,\n      INV_SBOX,\n      SUB_MIX,\n      INV_SUB_MIX\n    };\n  })();\n  function AES(key) {\n    (this || _global$11)._key = asUInt32Array(key);\n    this._reset();\n  }\n  AES.blockSize = 4 * 4;\n  AES.keySize = 256 / 8;\n  AES.prototype.blockSize = AES.blockSize;\n  AES.prototype.keySize = AES.keySize;\n  AES.prototype._reset = function() {\n    var keyWords = (this || _global$11)._key;\n    var keySize = keyWords.length;\n    var nRounds = keySize + 6;\n    var ksRows = (nRounds + 1) * 4;\n    var keySchedule = [];\n    for (var k4 = 0; k4 < keySize; k4++) {\n      keySchedule[k4] = keyWords[k4];\n    }\n    for (k4 = keySize; k4 < ksRows; k4++) {\n      var t5 = keySchedule[k4 - 1];\n      if (k4 % keySize === 0) {\n        t5 = t5 << 8 | t5 >>> 24;\n        t5 = G3.SBOX[t5 >>> 24] << 24 | G3.SBOX[t5 >>> 16 & 255] << 16 | G3.SBOX[t5 >>> 8 & 255] << 8 | G3.SBOX[t5 & 255];\n        t5 ^= RCON[k4 / keySize | 0] << 24;\n      } else if (keySize > 6 && k4 % keySize === 4) {\n        t5 = G3.SBOX[t5 >>> 24] << 24 | G3.SBOX[t5 >>> 16 & 255] << 16 | G3.SBOX[t5 >>> 8 & 255] << 8 | G3.SBOX[t5 & 255];\n      }\n      keySchedule[k4] = keySchedule[k4 - keySize] ^ t5;\n    }\n    var invKeySchedule = [];\n    for (var ik = 0; ik < ksRows; ik++) {\n      var ksR = ksRows - ik;\n      var tt2 = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n      if (ik < 4 || ksR <= 4) {\n        invKeySchedule[ik] = tt2;\n      } else {\n        invKeySchedule[ik] = G3.INV_SUB_MIX[0][G3.SBOX[tt2 >>> 24]] ^ G3.INV_SUB_MIX[1][G3.SBOX[tt2 >>> 16 & 255]] ^ G3.INV_SUB_MIX[2][G3.SBOX[tt2 >>> 8 & 255]] ^ G3.INV_SUB_MIX[3][G3.SBOX[tt2 & 255]];\n      }\n    }\n    (this || _global$11)._nRounds = nRounds;\n    (this || _global$11)._keySchedule = keySchedule;\n    (this || _global$11)._invKeySchedule = invKeySchedule;\n  };\n  AES.prototype.encryptBlockRaw = function(M4) {\n    M4 = asUInt32Array(M4);\n    return cryptBlock(M4, (this || _global$11)._keySchedule, G3.SUB_MIX, G3.SBOX, (this || _global$11)._nRounds);\n  };\n  AES.prototype.encryptBlock = function(M4) {\n    var out = this.encryptBlockRaw(M4);\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0], 0);\n    buf.writeUInt32BE(out[1], 4);\n    buf.writeUInt32BE(out[2], 8);\n    buf.writeUInt32BE(out[3], 12);\n    return buf;\n  };\n  AES.prototype.decryptBlock = function(M4) {\n    M4 = asUInt32Array(M4);\n    var m1 = M4[1];\n    M4[1] = M4[3];\n    M4[3] = m1;\n    var out = cryptBlock(M4, (this || _global$11)._invKeySchedule, G3.INV_SUB_MIX, G3.INV_SBOX, (this || _global$11)._nRounds);\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0], 0);\n    buf.writeUInt32BE(out[3], 4);\n    buf.writeUInt32BE(out[2], 8);\n    buf.writeUInt32BE(out[1], 12);\n    return buf;\n  };\n  AES.prototype.scrub = function() {\n    scrubVec((this || _global$11)._keySchedule);\n    scrubVec((this || _global$11)._invKeySchedule);\n    scrubVec((this || _global$11)._key);\n  };\n  exports$31.AES = AES;\n  return exports$31;\n}\nvar exports$30 = {};\nvar _dewExec$2$ = false;\nvar _global$10 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2$() {\n  if (_dewExec$2$) return exports$30;\n  _dewExec$2$ = true;\n  var Buffer = dew$12().Buffer;\n  var ZEROES = Buffer.alloc(16, 0);\n  function toArray(buf) {\n    return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n  }\n  function fromArray(out) {\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0] >>> 0, 0);\n    buf.writeUInt32BE(out[1] >>> 0, 4);\n    buf.writeUInt32BE(out[2] >>> 0, 8);\n    buf.writeUInt32BE(out[3] >>> 0, 12);\n    return buf;\n  }\n  function GHASH(key) {\n    (this || _global$10).h = key;\n    (this || _global$10).state = Buffer.alloc(16, 0);\n    (this || _global$10).cache = Buffer.allocUnsafe(0);\n  }\n  GHASH.prototype.ghash = function(block) {\n    var i5 = -1;\n    while (++i5 < block.length) {\n      (this || _global$10).state[i5] ^= block[i5];\n    }\n    this._multiply();\n  };\n  GHASH.prototype._multiply = function() {\n    var Vi = toArray((this || _global$10).h);\n    var Zi = [0, 0, 0, 0];\n    var j4, xi, lsbVi;\n    var i5 = -1;\n    while (++i5 < 128) {\n      xi = ((this || _global$10).state[~~(i5 / 8)] & 1 << 7 - i5 % 8) !== 0;\n      if (xi) {\n        Zi[0] ^= Vi[0];\n        Zi[1] ^= Vi[1];\n        Zi[2] ^= Vi[2];\n        Zi[3] ^= Vi[3];\n      }\n      lsbVi = (Vi[3] & 1) !== 0;\n      for (j4 = 3; j4 > 0; j4--) {\n        Vi[j4] = Vi[j4] >>> 1 | (Vi[j4 - 1] & 1) << 31;\n      }\n      Vi[0] = Vi[0] >>> 1;\n      if (lsbVi) {\n        Vi[0] = Vi[0] ^ 225 << 24;\n      }\n    }\n    (this || _global$10).state = fromArray(Zi);\n  };\n  GHASH.prototype.update = function(buf) {\n    (this || _global$10).cache = Buffer.concat([(this || _global$10).cache, buf]);\n    var chunk;\n    while ((this || _global$10).cache.length >= 16) {\n      chunk = (this || _global$10).cache.slice(0, 16);\n      (this || _global$10).cache = (this || _global$10).cache.slice(16);\n      this.ghash(chunk);\n    }\n  };\n  GHASH.prototype.final = function(abl, bl) {\n    if ((this || _global$10).cache.length) {\n      this.ghash(Buffer.concat([(this || _global$10).cache, ZEROES], 16));\n    }\n    this.ghash(fromArray([0, abl, 0, bl]));\n    return (this || _global$10).state;\n  };\n  exports$30 = GHASH;\n  return exports$30;\n}\nvar exports$2$ = {};\nvar _dewExec$2_ = false;\nvar _global$$ = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2_() {\n  if (_dewExec$2_) return exports$2$;\n  _dewExec$2_ = true;\n  var aes = dew$30();\n  var Buffer = dew$12().Buffer;\n  var Transform = dew$3u();\n  var inherits = dew3();\n  var GHASH = dew$2$();\n  var xor = dew$39();\n  var incr32 = dew$33();\n  function xorTest(a5, b4) {\n    var out = 0;\n    if (a5.length !== b4.length) out++;\n    var len = Math.min(a5.length, b4.length);\n    for (var i5 = 0; i5 < len; ++i5) {\n      out += a5[i5] ^ b4[i5];\n    }\n    return out;\n  }\n  function calcIv(self2, iv, ck) {\n    if (iv.length === 12) {\n      self2._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]);\n      return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]);\n    }\n    var ghash = new GHASH(ck);\n    var len = iv.length;\n    var toPad = len % 16;\n    ghash.update(iv);\n    if (toPad) {\n      toPad = 16 - toPad;\n      ghash.update(Buffer.alloc(toPad, 0));\n    }\n    ghash.update(Buffer.alloc(8, 0));\n    var ivBits = len * 8;\n    var tail = Buffer.alloc(8);\n    tail.writeUIntBE(ivBits, 0, 8);\n    ghash.update(tail);\n    self2._finID = ghash.state;\n    var out = Buffer.from(self2._finID);\n    incr32(out);\n    return out;\n  }\n  function StreamCipher(mode, key, iv, decrypt) {\n    Transform.call(this || _global$$);\n    var h5 = Buffer.alloc(4, 0);\n    (this || _global$$)._cipher = new aes.AES(key);\n    var ck = (this || _global$$)._cipher.encryptBlock(h5);\n    (this || _global$$)._ghash = new GHASH(ck);\n    iv = calcIv(this || _global$$, iv, ck);\n    (this || _global$$)._prev = Buffer.from(iv);\n    (this || _global$$)._cache = Buffer.allocUnsafe(0);\n    (this || _global$$)._secCache = Buffer.allocUnsafe(0);\n    (this || _global$$)._decrypt = decrypt;\n    (this || _global$$)._alen = 0;\n    (this || _global$$)._len = 0;\n    (this || _global$$)._mode = mode;\n    (this || _global$$)._authTag = null;\n    (this || _global$$)._called = false;\n  }\n  inherits(StreamCipher, Transform);\n  StreamCipher.prototype._update = function(chunk) {\n    if (!(this || _global$$)._called && (this || _global$$)._alen) {\n      var rump = 16 - (this || _global$$)._alen % 16;\n      if (rump < 16) {\n        rump = Buffer.alloc(rump, 0);\n        (this || _global$$)._ghash.update(rump);\n      }\n    }\n    (this || _global$$)._called = true;\n    var out = (this || _global$$)._mode.encrypt(this || _global$$, chunk);\n    if ((this || _global$$)._decrypt) {\n      (this || _global$$)._ghash.update(chunk);\n    } else {\n      (this || _global$$)._ghash.update(out);\n    }\n    (this || _global$$)._len += chunk.length;\n    return out;\n  };\n  StreamCipher.prototype._final = function() {\n    if ((this || _global$$)._decrypt && !(this || _global$$)._authTag) throw new Error(\"Unsupported state or unable to authenticate data\");\n    var tag = xor((this || _global$$)._ghash.final((this || _global$$)._alen * 8, (this || _global$$)._len * 8), (this || _global$$)._cipher.encryptBlock((this || _global$$)._finID));\n    if ((this || _global$$)._decrypt && xorTest(tag, (this || _global$$)._authTag)) throw new Error(\"Unsupported state or unable to authenticate data\");\n    (this || _global$$)._authTag = tag;\n    (this || _global$$)._cipher.scrub();\n  };\n  StreamCipher.prototype.getAuthTag = function getAuthTag() {\n    if ((this || _global$$)._decrypt || !Buffer.isBuffer((this || _global$$)._authTag)) throw new Error(\"Attempting to get auth tag in unsupported state\");\n    return (this || _global$$)._authTag;\n  };\n  StreamCipher.prototype.setAuthTag = function setAuthTag(tag) {\n    if (!(this || _global$$)._decrypt) throw new Error(\"Attempting to set auth tag in unsupported state\");\n    (this || _global$$)._authTag = tag;\n  };\n  StreamCipher.prototype.setAAD = function setAAD(buf) {\n    if ((this || _global$$)._called) throw new Error(\"Attempting to set AAD in unsupported state\");\n    (this || _global$$)._ghash.update(buf);\n    (this || _global$$)._alen += buf.length;\n  };\n  exports$2$ = StreamCipher;\n  return exports$2$;\n}\nvar exports$2_ = {};\nvar _dewExec$2Z = false;\nvar _global$_ = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2Z() {\n  if (_dewExec$2Z) return exports$2_;\n  _dewExec$2Z = true;\n  var aes = dew$30();\n  var Buffer = dew$12().Buffer;\n  var Transform = dew$3u();\n  var inherits = dew3();\n  function StreamCipher(mode, key, iv, decrypt) {\n    Transform.call(this || _global$_);\n    (this || _global$_)._cipher = new aes.AES(key);\n    (this || _global$_)._prev = Buffer.from(iv);\n    (this || _global$_)._cache = Buffer.allocUnsafe(0);\n    (this || _global$_)._secCache = Buffer.allocUnsafe(0);\n    (this || _global$_)._decrypt = decrypt;\n    (this || _global$_)._mode = mode;\n  }\n  inherits(StreamCipher, Transform);\n  StreamCipher.prototype._update = function(chunk) {\n    return (this || _global$_)._mode.encrypt(this || _global$_, chunk, (this || _global$_)._decrypt);\n  };\n  StreamCipher.prototype._final = function() {\n    (this || _global$_)._cipher.scrub();\n  };\n  exports$2_ = StreamCipher;\n  return exports$2_;\n}\nvar exports$2Z = {};\nvar _dewExec$2Y = false;\nfunction dew$2Y() {\n  if (_dewExec$2Y) return exports$2Z;\n  _dewExec$2Y = true;\n  var Buffer = dew$12().Buffer;\n  var MD5 = dew$3E();\n  function EVP_BytesToKey(password, salt, keyBits, ivLen) {\n    if (!Buffer.isBuffer(password)) password = Buffer.from(password, \"binary\");\n    if (salt) {\n      if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, \"binary\");\n      if (salt.length !== 8) throw new RangeError(\"salt should be Buffer with 8 byte length\");\n    }\n    var keyLen = keyBits / 8;\n    var key = Buffer.alloc(keyLen);\n    var iv = Buffer.alloc(ivLen || 0);\n    var tmp = Buffer.alloc(0);\n    while (keyLen > 0 || ivLen > 0) {\n      var hash = new MD5();\n      hash.update(tmp);\n      hash.update(password);\n      if (salt) hash.update(salt);\n      tmp = hash.digest();\n      var used = 0;\n      if (keyLen > 0) {\n        var keyStart = key.length - keyLen;\n        used = Math.min(keyLen, tmp.length);\n        tmp.copy(key, keyStart, 0, used);\n        keyLen -= used;\n      }\n      if (used < tmp.length && ivLen > 0) {\n        var ivStart = iv.length - ivLen;\n        var length = Math.min(ivLen, tmp.length - used);\n        tmp.copy(iv, ivStart, used, used + length);\n        ivLen -= length;\n      }\n    }\n    tmp.fill(0);\n    return {\n      key,\n      iv\n    };\n  }\n  exports$2Z = EVP_BytesToKey;\n  return exports$2Z;\n}\nvar exports$2Y = {};\nvar _dewExec$2X = false;\nvar _global$Z = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2X() {\n  if (_dewExec$2X) return exports$2Y;\n  _dewExec$2X = true;\n  var MODES = dew$31();\n  var AuthCipher = dew$2_();\n  var Buffer = dew$12().Buffer;\n  var StreamCipher = dew$2Z();\n  var Transform = dew$3u();\n  var aes = dew$30();\n  var ebtk = dew$2Y();\n  var inherits = dew3();\n  function Cipher2(mode, key, iv) {\n    Transform.call(this || _global$Z);\n    (this || _global$Z)._cache = new Splitter();\n    (this || _global$Z)._cipher = new aes.AES(key);\n    (this || _global$Z)._prev = Buffer.from(iv);\n    (this || _global$Z)._mode = mode;\n    (this || _global$Z)._autopadding = true;\n  }\n  inherits(Cipher2, Transform);\n  Cipher2.prototype._update = function(data) {\n    (this || _global$Z)._cache.add(data);\n    var chunk;\n    var thing;\n    var out = [];\n    while (chunk = (this || _global$Z)._cache.get()) {\n      thing = (this || _global$Z)._mode.encrypt(this || _global$Z, chunk);\n      out.push(thing);\n    }\n    return Buffer.concat(out);\n  };\n  var PADDING = Buffer.alloc(16, 16);\n  Cipher2.prototype._final = function() {\n    var chunk = (this || _global$Z)._cache.flush();\n    if ((this || _global$Z)._autopadding) {\n      chunk = (this || _global$Z)._mode.encrypt(this || _global$Z, chunk);\n      (this || _global$Z)._cipher.scrub();\n      return chunk;\n    }\n    if (!chunk.equals(PADDING)) {\n      (this || _global$Z)._cipher.scrub();\n      throw new Error(\"data not multiple of block length\");\n    }\n  };\n  Cipher2.prototype.setAutoPadding = function(setTo) {\n    (this || _global$Z)._autopadding = !!setTo;\n    return this || _global$Z;\n  };\n  function Splitter() {\n    (this || _global$Z).cache = Buffer.allocUnsafe(0);\n  }\n  Splitter.prototype.add = function(data) {\n    (this || _global$Z).cache = Buffer.concat([(this || _global$Z).cache, data]);\n  };\n  Splitter.prototype.get = function() {\n    if ((this || _global$Z).cache.length > 15) {\n      var out = (this || _global$Z).cache.slice(0, 16);\n      (this || _global$Z).cache = (this || _global$Z).cache.slice(16);\n      return out;\n    }\n    return null;\n  };\n  Splitter.prototype.flush = function() {\n    var len = 16 - (this || _global$Z).cache.length;\n    var padBuff = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      padBuff.writeUInt8(len, i5);\n    }\n    return Buffer.concat([(this || _global$Z).cache, padBuff]);\n  };\n  function createCipheriv2(suite, password, iv) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    if (typeof password === \"string\") password = Buffer.from(password);\n    if (password.length !== config2.key / 8) throw new TypeError(\"invalid key length \" + password.length);\n    if (typeof iv === \"string\") iv = Buffer.from(iv);\n    if (config2.mode !== \"GCM\" && iv.length !== config2.iv) throw new TypeError(\"invalid iv length \" + iv.length);\n    if (config2.type === \"stream\") {\n      return new StreamCipher(config2.module, password, iv);\n    } else if (config2.type === \"auth\") {\n      return new AuthCipher(config2.module, password, iv);\n    }\n    return new Cipher2(config2.module, password, iv);\n  }\n  function createCipher2(suite, password) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    var keys = ebtk(password, false, config2.key, config2.iv);\n    return createCipheriv2(suite, keys.key, keys.iv);\n  }\n  exports$2Y.createCipheriv = createCipheriv2;\n  exports$2Y.createCipher = createCipher2;\n  return exports$2Y;\n}\nvar exports$2X = {};\nvar _dewExec$2W = false;\nvar _global$Y = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2W() {\n  if (_dewExec$2W) return exports$2X;\n  _dewExec$2W = true;\n  var AuthCipher = dew$2_();\n  var Buffer = dew$12().Buffer;\n  var MODES = dew$31();\n  var StreamCipher = dew$2Z();\n  var Transform = dew$3u();\n  var aes = dew$30();\n  var ebtk = dew$2Y();\n  var inherits = dew3();\n  function Decipher2(mode, key, iv) {\n    Transform.call(this || _global$Y);\n    (this || _global$Y)._cache = new Splitter();\n    (this || _global$Y)._last = void 0;\n    (this || _global$Y)._cipher = new aes.AES(key);\n    (this || _global$Y)._prev = Buffer.from(iv);\n    (this || _global$Y)._mode = mode;\n    (this || _global$Y)._autopadding = true;\n  }\n  inherits(Decipher2, Transform);\n  Decipher2.prototype._update = function(data) {\n    (this || _global$Y)._cache.add(data);\n    var chunk;\n    var thing;\n    var out = [];\n    while (chunk = (this || _global$Y)._cache.get((this || _global$Y)._autopadding)) {\n      thing = (this || _global$Y)._mode.decrypt(this || _global$Y, chunk);\n      out.push(thing);\n    }\n    return Buffer.concat(out);\n  };\n  Decipher2.prototype._final = function() {\n    var chunk = (this || _global$Y)._cache.flush();\n    if ((this || _global$Y)._autopadding) {\n      return unpad((this || _global$Y)._mode.decrypt(this || _global$Y, chunk));\n    } else if (chunk) {\n      throw new Error(\"data not multiple of block length\");\n    }\n  };\n  Decipher2.prototype.setAutoPadding = function(setTo) {\n    (this || _global$Y)._autopadding = !!setTo;\n    return this || _global$Y;\n  };\n  function Splitter() {\n    (this || _global$Y).cache = Buffer.allocUnsafe(0);\n  }\n  Splitter.prototype.add = function(data) {\n    (this || _global$Y).cache = Buffer.concat([(this || _global$Y).cache, data]);\n  };\n  Splitter.prototype.get = function(autoPadding) {\n    var out;\n    if (autoPadding) {\n      if ((this || _global$Y).cache.length > 16) {\n        out = (this || _global$Y).cache.slice(0, 16);\n        (this || _global$Y).cache = (this || _global$Y).cache.slice(16);\n        return out;\n      }\n    } else {\n      if ((this || _global$Y).cache.length >= 16) {\n        out = (this || _global$Y).cache.slice(0, 16);\n        (this || _global$Y).cache = (this || _global$Y).cache.slice(16);\n        return out;\n      }\n    }\n    return null;\n  };\n  Splitter.prototype.flush = function() {\n    if ((this || _global$Y).cache.length) return (this || _global$Y).cache;\n  };\n  function unpad(last) {\n    var padded = last[15];\n    if (padded < 1 || padded > 16) {\n      throw new Error(\"unable to decrypt data\");\n    }\n    var i5 = -1;\n    while (++i5 < padded) {\n      if (last[i5 + (16 - padded)] !== padded) {\n        throw new Error(\"unable to decrypt data\");\n      }\n    }\n    if (padded === 16) return;\n    return last.slice(0, 16 - padded);\n  }\n  function createDecipheriv2(suite, password, iv) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    if (typeof iv === \"string\") iv = Buffer.from(iv);\n    if (config2.mode !== \"GCM\" && iv.length !== config2.iv) throw new TypeError(\"invalid iv length \" + iv.length);\n    if (typeof password === \"string\") password = Buffer.from(password);\n    if (password.length !== config2.key / 8) throw new TypeError(\"invalid key length \" + password.length);\n    if (config2.type === \"stream\") {\n      return new StreamCipher(config2.module, password, iv, true);\n    } else if (config2.type === \"auth\") {\n      return new AuthCipher(config2.module, password, iv, true);\n    }\n    return new Decipher2(config2.module, password, iv);\n  }\n  function createDecipher2(suite, password) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    var keys = ebtk(password, false, config2.key, config2.iv);\n    return createDecipheriv2(suite, keys.key, keys.iv);\n  }\n  exports$2X.createDecipher = createDecipher2;\n  exports$2X.createDecipheriv = createDecipheriv2;\n  return exports$2X;\n}\nvar exports$2W = {};\nvar _dewExec$2V = false;\nfunction dew$2V() {\n  if (_dewExec$2V) return exports$2W;\n  _dewExec$2V = true;\n  var ciphers = dew$2X();\n  var deciphers = dew$2W();\n  var modes = _list$2;\n  function getCiphers2() {\n    return Object.keys(modes);\n  }\n  exports$2W.createCipher = exports$2W.Cipher = ciphers.createCipher;\n  exports$2W.createCipheriv = exports$2W.Cipheriv = ciphers.createCipheriv;\n  exports$2W.createDecipher = exports$2W.Decipher = deciphers.createDecipher;\n  exports$2W.createDecipheriv = exports$2W.Decipheriv = deciphers.createDecipheriv;\n  exports$2W.listCiphers = exports$2W.getCiphers = getCiphers2;\n  return exports$2W;\n}\nvar exports$2V = {};\nvar _dewExec$2U = false;\nfunction dew$2U() {\n  if (_dewExec$2U) return exports$2V;\n  _dewExec$2U = true;\n  exports$2V[\"des-ecb\"] = {\n    key: 8,\n    iv: 0\n  };\n  exports$2V[\"des-cbc\"] = exports$2V.des = {\n    key: 8,\n    iv: 8\n  };\n  exports$2V[\"des-ede3-cbc\"] = exports$2V.des3 = {\n    key: 24,\n    iv: 8\n  };\n  exports$2V[\"des-ede3\"] = {\n    key: 24,\n    iv: 0\n  };\n  exports$2V[\"des-ede-cbc\"] = {\n    key: 16,\n    iv: 8\n  };\n  exports$2V[\"des-ede\"] = {\n    key: 16,\n    iv: 0\n  };\n  return exports$2V;\n}\nvar exports$2U = {};\nvar _dewExec$2T = false;\nfunction dew$2T() {\n  if (_dewExec$2T) return exports$2U;\n  _dewExec$2T = true;\n  var DES = dew$3b();\n  var aes = dew$2V();\n  var aesModes = dew$31();\n  var desModes = dew$2U();\n  var ebtk = dew$2Y();\n  function createCipher2(suite, password) {\n    suite = suite.toLowerCase();\n    var keyLen, ivLen;\n    if (aesModes[suite]) {\n      keyLen = aesModes[suite].key;\n      ivLen = aesModes[suite].iv;\n    } else if (desModes[suite]) {\n      keyLen = desModes[suite].key * 8;\n      ivLen = desModes[suite].iv;\n    } else {\n      throw new TypeError(\"invalid suite type\");\n    }\n    var keys = ebtk(password, false, keyLen, ivLen);\n    return createCipheriv2(suite, keys.key, keys.iv);\n  }\n  function createDecipher2(suite, password) {\n    suite = suite.toLowerCase();\n    var keyLen, ivLen;\n    if (aesModes[suite]) {\n      keyLen = aesModes[suite].key;\n      ivLen = aesModes[suite].iv;\n    } else if (desModes[suite]) {\n      keyLen = desModes[suite].key * 8;\n      ivLen = desModes[suite].iv;\n    } else {\n      throw new TypeError(\"invalid suite type\");\n    }\n    var keys = ebtk(password, false, keyLen, ivLen);\n    return createDecipheriv2(suite, keys.key, keys.iv);\n  }\n  function createCipheriv2(suite, key, iv) {\n    suite = suite.toLowerCase();\n    if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);\n    if (desModes[suite]) return new DES({\n      key,\n      iv,\n      mode: suite\n    });\n    throw new TypeError(\"invalid suite type\");\n  }\n  function createDecipheriv2(suite, key, iv) {\n    suite = suite.toLowerCase();\n    if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);\n    if (desModes[suite]) return new DES({\n      key,\n      iv,\n      mode: suite,\n      decrypt: true\n    });\n    throw new TypeError(\"invalid suite type\");\n  }\n  function getCiphers2() {\n    return Object.keys(desModes).concat(aes.getCiphers());\n  }\n  exports$2U.createCipher = exports$2U.Cipher = createCipher2;\n  exports$2U.createCipheriv = exports$2U.Cipheriv = createCipheriv2;\n  exports$2U.createDecipher = exports$2U.Decipher = createDecipher2;\n  exports$2U.createDecipheriv = exports$2U.Decipheriv = createDecipheriv2;\n  exports$2U.listCiphers = exports$2U.getCiphers = getCiphers2;\n  return exports$2U;\n}\nvar exports$2T = {};\nvar _dewExec$2S = false;\nvar module$e = {\n  exports: exports$2T\n};\nvar _global$X = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2S() {\n  if (_dewExec$2S) return module$e.exports;\n  _dewExec$2S = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$X).negative = 0;\n      (this || _global$X).words = null;\n      (this || _global$X).length = 0;\n      (this || _global$X).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = dew().Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$X).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$X).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$X).words = [number & 67108863];\n        (this || _global$X).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$X).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$X).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$X).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$X).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$X).words = [0];\n        (this || _global$X).length = 1;\n        return this || _global$X;\n      }\n      (this || _global$X).length = Math.ceil(number.length / 3);\n      (this || _global$X).words = new Array((this || _global$X).length);\n      for (var i5 = 0; i5 < (this || _global$X).length; i5++) {\n        (this || _global$X).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$X).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$X).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$X).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$X).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$X).length = Math.ceil((number.length - start) / 6);\n      (this || _global$X).words = new Array((this || _global$X).length);\n      for (var i5 = 0; i5 < (this || _global$X).length; i5++) {\n        (this || _global$X).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$X).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$X).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$X).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$X).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$X).words = [0];\n      (this || _global$X).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$X).words[0] + word < 67108864) {\n          (this || _global$X).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$X).words[0] + word < 67108864) {\n          (this || _global$X).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$X).length);\n      for (var i5 = 0; i5 < (this || _global$X).length; i5++) {\n        dest.words[i5] = (this || _global$X).words[i5];\n      }\n      dest.length = (this || _global$X).length;\n      dest.negative = (this || _global$X).negative;\n      dest.red = (this || _global$X).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$X).length < size) {\n        (this || _global$X).words[(this || _global$X).length++] = 0;\n      }\n      return this || _global$X;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$X).length > 1 && (this || _global$X).words[(this || _global$X).length - 1] === 0) {\n        (this || _global$X).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$X).length === 1 && (this || _global$X).words[0] === 0) {\n        (this || _global$X).negative = 0;\n      }\n      return this || _global$X;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$X).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$X).length; i5++) {\n          var w4 = (this || _global$X).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$X).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$X).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$X).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$X).words[0];\n      if ((this || _global$X).length === 2) {\n        ret += (this || _global$X).words[1] * 67108864;\n      } else if ((this || _global$X).length === 3 && (this || _global$X).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$X).words[1] * 67108864;\n      } else if ((this || _global$X).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$X).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$X).words[(this || _global$X).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$X).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$X).length; i5++) {\n        var b4 = this._zeroBits((this || _global$X).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$X).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$X).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$X).negative ^= 1;\n      }\n      return this || _global$X;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$X).length < num.length) {\n        (this || _global$X).words[(this || _global$X).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$X).words[i5] = (this || _global$X).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$X).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$X).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$X);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$X).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$X);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$X).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$X;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$X).words[i5] = (this || _global$X).words[i5] & num.words[i5];\n      }\n      (this || _global$X).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$X).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$X).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$X);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$X).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$X);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$X).length > num.length) {\n        a5 = this || _global$X;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$X;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$X).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$X) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$X).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$X).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$X).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$X).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$X);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$X).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$X);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$X).words[i5] = ~(this || _global$X).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$X).words[i5] = ~(this || _global$X).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$X).words[off2] = (this || _global$X).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$X).words[off2] = (this || _global$X).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$X).negative !== 0 && num.negative === 0) {\n        (this || _global$X).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$X).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$X).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$X).length > num.length) {\n        a5 = this || _global$X;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$X;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$X).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$X).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$X).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$X).words[(this || _global$X).length] = carry;\n        (this || _global$X).length++;\n      } else if (a5 !== (this || _global$X)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$X).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$X;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$X).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$X).negative !== 0) {\n        (this || _global$X).negative = 0;\n        res = num.sub(this || _global$X);\n        (this || _global$X).negative = 1;\n        return res;\n      }\n      if ((this || _global$X).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$X);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$X).negative !== 0) {\n        (this || _global$X).negative = 0;\n        this.iadd(num);\n        (this || _global$X).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$X).negative = 0;\n        (this || _global$X).length = 1;\n        (this || _global$X).words[0] = 0;\n        return this || _global$X;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$X;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$X;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$X).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$X).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$X)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$X).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$X).length = Math.max((this || _global$X).length, i5);\n      if (a5 !== (this || _global$X)) {\n        (this || _global$X).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$X).length + num.length;\n      if ((this || _global$X).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$X, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$X, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$X, num, out);\n      } else {\n        res = jumboMulTo(this || _global$X, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$X).x = x4;\n      (this || _global$X).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$X).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$X).length + num.length);\n      return jumboMulTo(this || _global$X, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$X);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$X).length; i5++) {\n        var w4 = ((this || _global$X).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$X).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$X).words[i5] = carry;\n        (this || _global$X).length++;\n      }\n      return this || _global$X;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$X);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$X;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$X).length; i5++) {\n          var newCarry = (this || _global$X).words[i5] & carryMask;\n          var c5 = ((this || _global$X).words[i5] | 0) - newCarry << r5;\n          (this || _global$X).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$X).words[i5] = carry;\n          (this || _global$X).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$X).length - 1; i5 >= 0; i5--) {\n          (this || _global$X).words[i5 + s5] = (this || _global$X).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$X).words[i5] = 0;\n        }\n        (this || _global$X).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$X).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$X).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$X).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$X).length > s5) {\n        (this || _global$X).length -= s5;\n        for (i5 = 0; i5 < (this || _global$X).length; i5++) {\n          (this || _global$X).words[i5] = (this || _global$X).words[i5 + s5];\n        }\n      } else {\n        (this || _global$X).words[0] = 0;\n        (this || _global$X).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$X).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$X).words[i5] | 0;\n        (this || _global$X).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$X).length === 0) {\n        (this || _global$X).words[0] = 0;\n        (this || _global$X).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$X).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$X).length <= s5) return false;\n      var w4 = (this || _global$X).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$X).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$X).length <= s5) {\n        return this || _global$X;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$X).length = Math.min(s5, (this || _global$X).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$X).words[(this || _global$X).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$X).negative !== 0) {\n        if ((this || _global$X).length === 1 && ((this || _global$X).words[0] | 0) < num) {\n          (this || _global$X).words[0] = num - ((this || _global$X).words[0] | 0);\n          (this || _global$X).negative = 0;\n          return this || _global$X;\n        }\n        (this || _global$X).negative = 0;\n        this.isubn(num);\n        (this || _global$X).negative = 1;\n        return this || _global$X;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$X).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$X).length && (this || _global$X).words[i5] >= 67108864; i5++) {\n        (this || _global$X).words[i5] -= 67108864;\n        if (i5 === (this || _global$X).length - 1) {\n          (this || _global$X).words[i5 + 1] = 1;\n        } else {\n          (this || _global$X).words[i5 + 1]++;\n        }\n      }\n      (this || _global$X).length = Math.max((this || _global$X).length, i5 + 1);\n      return this || _global$X;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$X).negative !== 0) {\n        (this || _global$X).negative = 0;\n        this.iaddn(num);\n        (this || _global$X).negative = 1;\n        return this || _global$X;\n      }\n      (this || _global$X).words[0] -= num;\n      if ((this || _global$X).length === 1 && (this || _global$X).words[0] < 0) {\n        (this || _global$X).words[0] = -(this || _global$X).words[0];\n        (this || _global$X).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$X).length && (this || _global$X).words[i5] < 0; i5++) {\n          (this || _global$X).words[i5] += 67108864;\n          (this || _global$X).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$X).negative = 0;\n      return this || _global$X;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$X).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$X).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$X).length - shift; i5++) {\n        w4 = ((this || _global$X).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$X).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$X).length; i5++) {\n        w4 = -((this || _global$X).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$X).words[i5] = w4 & 67108863;\n      }\n      (this || _global$X).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$X).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$X).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$X).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$X).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$X).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$X\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$X).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$X).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$X).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$X).words[i5] | 0) + carry * 67108864;\n        (this || _global$X).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$X;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$X;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$X).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$X).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$X).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$X).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$X).words[s5] |= q3;\n        return this || _global$X;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$X).length; i5++) {\n        var w4 = (this || _global$X).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$X).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$X).words[i5] = carry;\n        (this || _global$X).length++;\n      }\n      return this || _global$X;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$X).length === 1 && (this || _global$X).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$X).negative !== 0 && !negative) return -1;\n      if ((this || _global$X).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$X).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$X).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$X).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$X).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$X).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$X).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$X).length > num.length) return 1;\n      if ((this || _global$X).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$X).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$X).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$X).red, \"Already a number in reduction context\");\n      assert2((this || _global$X).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$X)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$X).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$X).red.convertFrom(this || _global$X);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$X).red = ctx;\n      return this || _global$X;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$X).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$X).red, \"redAdd works only with red numbers\");\n      return (this || _global$X).red.add(this || _global$X, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$X).red, \"redIAdd works only with red numbers\");\n      return (this || _global$X).red.iadd(this || _global$X, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$X).red, \"redSub works only with red numbers\");\n      return (this || _global$X).red.sub(this || _global$X, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$X).red, \"redISub works only with red numbers\");\n      return (this || _global$X).red.isub(this || _global$X, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$X).red, \"redShl works only with red numbers\");\n      return (this || _global$X).red.shl(this || _global$X, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$X).red, \"redMul works only with red numbers\");\n      (this || _global$X).red._verify2(this || _global$X, num);\n      return (this || _global$X).red.mul(this || _global$X, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$X).red, \"redMul works only with red numbers\");\n      (this || _global$X).red._verify2(this || _global$X, num);\n      return (this || _global$X).red.imul(this || _global$X, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$X).red, \"redSqr works only with red numbers\");\n      (this || _global$X).red._verify1(this || _global$X);\n      return (this || _global$X).red.sqr(this || _global$X);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$X).red, \"redISqr works only with red numbers\");\n      (this || _global$X).red._verify1(this || _global$X);\n      return (this || _global$X).red.isqr(this || _global$X);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$X).red, \"redSqrt works only with red numbers\");\n      (this || _global$X).red._verify1(this || _global$X);\n      return (this || _global$X).red.sqrt(this || _global$X);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$X).red, \"redInvm works only with red numbers\");\n      (this || _global$X).red._verify1(this || _global$X);\n      return (this || _global$X).red.invm(this || _global$X);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$X).red, \"redNeg works only with red numbers\");\n      (this || _global$X).red._verify1(this || _global$X);\n      return (this || _global$X).red.neg(this || _global$X);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$X).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$X).red._verify1(this || _global$X);\n      return (this || _global$X).red.pow(this || _global$X, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$X).name = name2;\n      (this || _global$X).p = new BN(p5, 16);\n      (this || _global$X).n = (this || _global$X).p.bitLength();\n      (this || _global$X).k = new BN(1).iushln((this || _global$X).n).isub((this || _global$X).p);\n      (this || _global$X).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$X).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$X).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$X).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$X).n);\n      var cmp = rlen < (this || _global$X).n ? -1 : r5.ucmp((this || _global$X).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$X).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$X).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$X).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$X, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$X, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$X, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$X, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$X).m = prime.p;\n        (this || _global$X).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$X).m = m4;\n        (this || _global$X).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$X).prime) return (this || _global$X).prime.ireduce(a5)._forceRed(this || _global$X);\n      return a5.umod((this || _global$X).m)._forceRed(this || _global$X);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$X).m.sub(a5)._forceRed(this || _global$X);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$X).m) >= 0) {\n        res.isub((this || _global$X).m);\n      }\n      return res._forceRed(this || _global$X);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$X).m) >= 0) {\n        res.isub((this || _global$X).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$X).m);\n      }\n      return res._forceRed(this || _global$X);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$X).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$X).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$X).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$X).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$X);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$X).m.subn(1).iushrn(1);\n      var z4 = (this || _global$X).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$X);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$X).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$X);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$X);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$X).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$X, m4);\n      (this || _global$X).shift = (this || _global$X).m.bitLength();\n      if ((this || _global$X).shift % 26 !== 0) {\n        (this || _global$X).shift += 26 - (this || _global$X).shift % 26;\n      }\n      (this || _global$X).r = new BN(1).iushln((this || _global$X).shift);\n      (this || _global$X).r2 = this.imod((this || _global$X).r.sqr());\n      (this || _global$X).rinv = (this || _global$X).r._invmp((this || _global$X).m);\n      (this || _global$X).minv = (this || _global$X).rinv.mul((this || _global$X).r).isubn(1).div((this || _global$X).m);\n      (this || _global$X).minv = (this || _global$X).minv.umod((this || _global$X).r);\n      (this || _global$X).minv = (this || _global$X).r.sub((this || _global$X).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$X).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$X).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$X).shift).mul((this || _global$X).minv).imaskn((this || _global$X).shift).mul((this || _global$X).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$X).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$X).m) >= 0) {\n        res = u5.isub((this || _global$X).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$X).m);\n      }\n      return res._forceRed(this || _global$X);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$X);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$X).shift).mul((this || _global$X).minv).imaskn((this || _global$X).shift).mul((this || _global$X).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$X).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$X).m) >= 0) {\n        res = u5.isub((this || _global$X).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$X).m);\n      }\n      return res._forceRed(this || _global$X);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$X).m).mul((this || _global$X).r2));\n      return res._forceRed(this || _global$X);\n    };\n  })(module$e, exports$2T);\n  return module$e.exports;\n}\nvar exports$2S = {};\nvar _dewExec$2R = false;\nvar module$d = {\n  exports: exports$2S\n};\nvar _global$W = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2R() {\n  if (_dewExec$2R) return module$d.exports;\n  _dewExec$2R = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$W).negative = 0;\n      (this || _global$W).words = null;\n      (this || _global$W).length = 0;\n      (this || _global$W).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = dew().Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$W).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$W).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$W).words = [number & 67108863];\n        (this || _global$W).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$W).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$W).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$W).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$W).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$W).words = [0];\n        (this || _global$W).length = 1;\n        return this || _global$W;\n      }\n      (this || _global$W).length = Math.ceil(number.length / 3);\n      (this || _global$W).words = new Array((this || _global$W).length);\n      for (var i5 = 0; i5 < (this || _global$W).length; i5++) {\n        (this || _global$W).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$W).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$W).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$W).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$W).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$W).length = Math.ceil((number.length - start) / 6);\n      (this || _global$W).words = new Array((this || _global$W).length);\n      for (var i5 = 0; i5 < (this || _global$W).length; i5++) {\n        (this || _global$W).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$W).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$W).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$W).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$W).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$W).words = [0];\n      (this || _global$W).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$W).words[0] + word < 67108864) {\n          (this || _global$W).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$W).words[0] + word < 67108864) {\n          (this || _global$W).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$W).length);\n      for (var i5 = 0; i5 < (this || _global$W).length; i5++) {\n        dest.words[i5] = (this || _global$W).words[i5];\n      }\n      dest.length = (this || _global$W).length;\n      dest.negative = (this || _global$W).negative;\n      dest.red = (this || _global$W).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$W).length < size) {\n        (this || _global$W).words[(this || _global$W).length++] = 0;\n      }\n      return this || _global$W;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$W).length > 1 && (this || _global$W).words[(this || _global$W).length - 1] === 0) {\n        (this || _global$W).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$W).length === 1 && (this || _global$W).words[0] === 0) {\n        (this || _global$W).negative = 0;\n      }\n      return this || _global$W;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$W).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$W).length; i5++) {\n          var w4 = (this || _global$W).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$W).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$W).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$W).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$W).words[0];\n      if ((this || _global$W).length === 2) {\n        ret += (this || _global$W).words[1] * 67108864;\n      } else if ((this || _global$W).length === 3 && (this || _global$W).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$W).words[1] * 67108864;\n      } else if ((this || _global$W).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$W).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$W).words[(this || _global$W).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$W).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$W).length; i5++) {\n        var b4 = this._zeroBits((this || _global$W).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$W).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$W).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$W).negative ^= 1;\n      }\n      return this || _global$W;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$W).length < num.length) {\n        (this || _global$W).words[(this || _global$W).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$W).words[i5] = (this || _global$W).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$W).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$W).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$W);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$W).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$W);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$W).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$W;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$W).words[i5] = (this || _global$W).words[i5] & num.words[i5];\n      }\n      (this || _global$W).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$W).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$W).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$W);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$W).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$W);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$W).length > num.length) {\n        a5 = this || _global$W;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$W;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$W).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$W) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$W).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$W).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$W).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$W).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$W);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$W).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$W);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$W).words[i5] = ~(this || _global$W).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$W).words[i5] = ~(this || _global$W).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$W).words[off2] = (this || _global$W).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$W).words[off2] = (this || _global$W).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$W).negative !== 0 && num.negative === 0) {\n        (this || _global$W).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$W).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$W).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$W).length > num.length) {\n        a5 = this || _global$W;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$W;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$W).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$W).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$W).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$W).words[(this || _global$W).length] = carry;\n        (this || _global$W).length++;\n      } else if (a5 !== (this || _global$W)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$W).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$W;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$W).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$W).negative !== 0) {\n        (this || _global$W).negative = 0;\n        res = num.sub(this || _global$W);\n        (this || _global$W).negative = 1;\n        return res;\n      }\n      if ((this || _global$W).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$W);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$W).negative !== 0) {\n        (this || _global$W).negative = 0;\n        this.iadd(num);\n        (this || _global$W).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$W).negative = 0;\n        (this || _global$W).length = 1;\n        (this || _global$W).words[0] = 0;\n        return this || _global$W;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$W;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$W;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$W).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$W).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$W)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$W).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$W).length = Math.max((this || _global$W).length, i5);\n      if (a5 !== (this || _global$W)) {\n        (this || _global$W).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$W).length + num.length;\n      if ((this || _global$W).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$W, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$W, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$W, num, out);\n      } else {\n        res = jumboMulTo(this || _global$W, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$W).x = x4;\n      (this || _global$W).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$W).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$W).length + num.length);\n      return jumboMulTo(this || _global$W, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$W);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$W).length; i5++) {\n        var w4 = ((this || _global$W).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$W).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$W).words[i5] = carry;\n        (this || _global$W).length++;\n      }\n      return this || _global$W;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$W);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$W;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$W).length; i5++) {\n          var newCarry = (this || _global$W).words[i5] & carryMask;\n          var c5 = ((this || _global$W).words[i5] | 0) - newCarry << r5;\n          (this || _global$W).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$W).words[i5] = carry;\n          (this || _global$W).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$W).length - 1; i5 >= 0; i5--) {\n          (this || _global$W).words[i5 + s5] = (this || _global$W).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$W).words[i5] = 0;\n        }\n        (this || _global$W).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$W).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$W).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$W).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$W).length > s5) {\n        (this || _global$W).length -= s5;\n        for (i5 = 0; i5 < (this || _global$W).length; i5++) {\n          (this || _global$W).words[i5] = (this || _global$W).words[i5 + s5];\n        }\n      } else {\n        (this || _global$W).words[0] = 0;\n        (this || _global$W).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$W).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$W).words[i5] | 0;\n        (this || _global$W).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$W).length === 0) {\n        (this || _global$W).words[0] = 0;\n        (this || _global$W).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$W).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$W).length <= s5) return false;\n      var w4 = (this || _global$W).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$W).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$W).length <= s5) {\n        return this || _global$W;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$W).length = Math.min(s5, (this || _global$W).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$W).words[(this || _global$W).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$W).negative !== 0) {\n        if ((this || _global$W).length === 1 && ((this || _global$W).words[0] | 0) < num) {\n          (this || _global$W).words[0] = num - ((this || _global$W).words[0] | 0);\n          (this || _global$W).negative = 0;\n          return this || _global$W;\n        }\n        (this || _global$W).negative = 0;\n        this.isubn(num);\n        (this || _global$W).negative = 1;\n        return this || _global$W;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$W).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$W).length && (this || _global$W).words[i5] >= 67108864; i5++) {\n        (this || _global$W).words[i5] -= 67108864;\n        if (i5 === (this || _global$W).length - 1) {\n          (this || _global$W).words[i5 + 1] = 1;\n        } else {\n          (this || _global$W).words[i5 + 1]++;\n        }\n      }\n      (this || _global$W).length = Math.max((this || _global$W).length, i5 + 1);\n      return this || _global$W;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$W).negative !== 0) {\n        (this || _global$W).negative = 0;\n        this.iaddn(num);\n        (this || _global$W).negative = 1;\n        return this || _global$W;\n      }\n      (this || _global$W).words[0] -= num;\n      if ((this || _global$W).length === 1 && (this || _global$W).words[0] < 0) {\n        (this || _global$W).words[0] = -(this || _global$W).words[0];\n        (this || _global$W).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$W).length && (this || _global$W).words[i5] < 0; i5++) {\n          (this || _global$W).words[i5] += 67108864;\n          (this || _global$W).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$W).negative = 0;\n      return this || _global$W;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$W).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$W).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$W).length - shift; i5++) {\n        w4 = ((this || _global$W).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$W).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$W).length; i5++) {\n        w4 = -((this || _global$W).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$W).words[i5] = w4 & 67108863;\n      }\n      (this || _global$W).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$W).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$W).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$W).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$W).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$W).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$W\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$W).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$W).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$W).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$W).words[i5] | 0) + carry * 67108864;\n        (this || _global$W).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$W;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$W;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$W).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$W).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$W).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$W).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$W).words[s5] |= q3;\n        return this || _global$W;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$W).length; i5++) {\n        var w4 = (this || _global$W).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$W).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$W).words[i5] = carry;\n        (this || _global$W).length++;\n      }\n      return this || _global$W;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$W).length === 1 && (this || _global$W).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$W).negative !== 0 && !negative) return -1;\n      if ((this || _global$W).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$W).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$W).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$W).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$W).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$W).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$W).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$W).length > num.length) return 1;\n      if ((this || _global$W).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$W).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$W).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$W).red, \"Already a number in reduction context\");\n      assert2((this || _global$W).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$W)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$W).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$W).red.convertFrom(this || _global$W);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$W).red = ctx;\n      return this || _global$W;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$W).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$W).red, \"redAdd works only with red numbers\");\n      return (this || _global$W).red.add(this || _global$W, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$W).red, \"redIAdd works only with red numbers\");\n      return (this || _global$W).red.iadd(this || _global$W, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$W).red, \"redSub works only with red numbers\");\n      return (this || _global$W).red.sub(this || _global$W, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$W).red, \"redISub works only with red numbers\");\n      return (this || _global$W).red.isub(this || _global$W, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$W).red, \"redShl works only with red numbers\");\n      return (this || _global$W).red.shl(this || _global$W, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$W).red, \"redMul works only with red numbers\");\n      (this || _global$W).red._verify2(this || _global$W, num);\n      return (this || _global$W).red.mul(this || _global$W, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$W).red, \"redMul works only with red numbers\");\n      (this || _global$W).red._verify2(this || _global$W, num);\n      return (this || _global$W).red.imul(this || _global$W, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$W).red, \"redSqr works only with red numbers\");\n      (this || _global$W).red._verify1(this || _global$W);\n      return (this || _global$W).red.sqr(this || _global$W);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$W).red, \"redISqr works only with red numbers\");\n      (this || _global$W).red._verify1(this || _global$W);\n      return (this || _global$W).red.isqr(this || _global$W);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$W).red, \"redSqrt works only with red numbers\");\n      (this || _global$W).red._verify1(this || _global$W);\n      return (this || _global$W).red.sqrt(this || _global$W);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$W).red, \"redInvm works only with red numbers\");\n      (this || _global$W).red._verify1(this || _global$W);\n      return (this || _global$W).red.invm(this || _global$W);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$W).red, \"redNeg works only with red numbers\");\n      (this || _global$W).red._verify1(this || _global$W);\n      return (this || _global$W).red.neg(this || _global$W);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$W).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$W).red._verify1(this || _global$W);\n      return (this || _global$W).red.pow(this || _global$W, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$W).name = name2;\n      (this || _global$W).p = new BN(p5, 16);\n      (this || _global$W).n = (this || _global$W).p.bitLength();\n      (this || _global$W).k = new BN(1).iushln((this || _global$W).n).isub((this || _global$W).p);\n      (this || _global$W).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$W).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$W).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$W).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$W).n);\n      var cmp = rlen < (this || _global$W).n ? -1 : r5.ucmp((this || _global$W).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$W).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$W).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$W).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$W, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$W, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$W, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$W, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$W).m = prime.p;\n        (this || _global$W).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$W).m = m4;\n        (this || _global$W).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$W).prime) return (this || _global$W).prime.ireduce(a5)._forceRed(this || _global$W);\n      return a5.umod((this || _global$W).m)._forceRed(this || _global$W);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$W).m.sub(a5)._forceRed(this || _global$W);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$W).m) >= 0) {\n        res.isub((this || _global$W).m);\n      }\n      return res._forceRed(this || _global$W);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$W).m) >= 0) {\n        res.isub((this || _global$W).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$W).m);\n      }\n      return res._forceRed(this || _global$W);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$W).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$W).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$W).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$W).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$W);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$W).m.subn(1).iushrn(1);\n      var z4 = (this || _global$W).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$W);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$W).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$W);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$W);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$W).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$W, m4);\n      (this || _global$W).shift = (this || _global$W).m.bitLength();\n      if ((this || _global$W).shift % 26 !== 0) {\n        (this || _global$W).shift += 26 - (this || _global$W).shift % 26;\n      }\n      (this || _global$W).r = new BN(1).iushln((this || _global$W).shift);\n      (this || _global$W).r2 = this.imod((this || _global$W).r.sqr());\n      (this || _global$W).rinv = (this || _global$W).r._invmp((this || _global$W).m);\n      (this || _global$W).minv = (this || _global$W).rinv.mul((this || _global$W).r).isubn(1).div((this || _global$W).m);\n      (this || _global$W).minv = (this || _global$W).minv.umod((this || _global$W).r);\n      (this || _global$W).minv = (this || _global$W).r.sub((this || _global$W).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$W).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$W).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$W).shift).mul((this || _global$W).minv).imaskn((this || _global$W).shift).mul((this || _global$W).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$W).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$W).m) >= 0) {\n        res = u5.isub((this || _global$W).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$W).m);\n      }\n      return res._forceRed(this || _global$W);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$W);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$W).shift).mul((this || _global$W).minv).imaskn((this || _global$W).shift).mul((this || _global$W).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$W).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$W).m) >= 0) {\n        res = u5.isub((this || _global$W).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$W).m);\n      }\n      return res._forceRed(this || _global$W);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$W).m).mul((this || _global$W).r2));\n      return res._forceRed(this || _global$W);\n    };\n  })(module$d, exports$2S);\n  return module$d.exports;\n}\nvar exports$2Q = {};\nvar _dewExec$2P = false;\nfunction dew$2P() {\n  if (_dewExec$2P) return exports$2Q;\n  _dewExec$2P = true;\n  var buffer$1 = buffer;\n  var Buffer = buffer$1.Buffer;\n  function copyProps(src, dst) {\n    for (var key in src) {\n      dst[key] = src[key];\n    }\n  }\n  if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n    exports$2Q = buffer$1;\n  } else {\n    copyProps(buffer$1, exports$2Q);\n    exports$2Q.Buffer = SafeBuffer;\n  }\n  function SafeBuffer(arg, encodingOrOffset, length) {\n    return Buffer(arg, encodingOrOffset, length);\n  }\n  copyProps(Buffer, SafeBuffer);\n  SafeBuffer.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  SafeBuffer.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 !== void 0) {\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  SafeBuffer.allocUnsafe = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return Buffer(size);\n  };\n  SafeBuffer.allocUnsafeSlow = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return buffer$1.SlowBuffer(size);\n  };\n  return exports$2Q;\n}\nvar exports$2P = {};\nvar _dewExec$2O = false;\nvar _global$U = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2O() {\n  if (_dewExec$2O) return exports$2P;\n  _dewExec$2O = true;\n  var process$1$1 = process2;\n  var MAX_BYTES = 65536;\n  var MAX_UINT32 = 4294967295;\n  function oldBrowser() {\n    throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\");\n  }\n  var Buffer = dew$2P().Buffer;\n  var crypto2 = _global$U.crypto || _global$U.msCrypto;\n  if (crypto2 && crypto2.getRandomValues) {\n    exports$2P = randomBytes2;\n  } else {\n    exports$2P = oldBrowser;\n  }\n  function randomBytes2(size, cb) {\n    if (size > MAX_UINT32) throw new RangeError(\"requested too many random bytes\");\n    var bytes = Buffer.allocUnsafe(size);\n    if (size > 0) {\n      if (size > MAX_BYTES) {\n        for (var generated = 0; generated < size; generated += MAX_BYTES) {\n          crypto2.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));\n        }\n      } else {\n        crypto2.getRandomValues(bytes);\n      }\n    }\n    if (typeof cb === \"function\") {\n      return process$1$1.nextTick(function() {\n        cb(null, bytes);\n      });\n    }\n    return bytes;\n  }\n  return exports$2P;\n}\nvar exports$2O = {};\nvar _dewExec$2N = false;\nfunction dew$2N() {\n  if (_dewExec$2N) return exports$2O;\n  _dewExec$2N = true;\n  var buffer$1 = buffer;\n  var Buffer = buffer$1.Buffer;\n  function copyProps(src, dst) {\n    for (var key in src) {\n      dst[key] = src[key];\n    }\n  }\n  if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n    exports$2O = buffer$1;\n  } else {\n    copyProps(buffer$1, exports$2O);\n    exports$2O.Buffer = SafeBuffer;\n  }\n  function SafeBuffer(arg, encodingOrOffset, length) {\n    return Buffer(arg, encodingOrOffset, length);\n  }\n  SafeBuffer.prototype = Object.create(Buffer.prototype);\n  copyProps(Buffer, SafeBuffer);\n  SafeBuffer.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  SafeBuffer.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 !== void 0) {\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  SafeBuffer.allocUnsafe = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return Buffer(size);\n  };\n  SafeBuffer.allocUnsafeSlow = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return buffer$1.SlowBuffer(size);\n  };\n  return exports$2O;\n}\nvar exports$2N = {};\nvar _dewExec$2M = false;\nfunction dew$2M() {\n  if (_dewExec$2M) return exports$2N;\n  _dewExec$2M = true;\n  var Buffer = dew$2N().Buffer;\n  var Transform = dew7().Transform;\n  var inherits = dew$f();\n  function throwIfNotStringOrBuffer(val, prefix) {\n    if (!Buffer.isBuffer(val) && typeof val !== \"string\") {\n      throw new TypeError(prefix + \" must be a string or a buffer\");\n    }\n  }\n  function HashBase(blockSize) {\n    Transform.call(this);\n    this._block = Buffer.allocUnsafe(blockSize);\n    this._blockSize = blockSize;\n    this._blockOffset = 0;\n    this._length = [0, 0, 0, 0];\n    this._finalized = false;\n  }\n  inherits(HashBase, Transform);\n  HashBase.prototype._transform = function(chunk, encoding, callback) {\n    var error = null;\n    try {\n      this.update(chunk, encoding);\n    } catch (err) {\n      error = err;\n    }\n    callback(error);\n  };\n  HashBase.prototype._flush = function(callback) {\n    var error = null;\n    try {\n      this.push(this.digest());\n    } catch (err) {\n      error = err;\n    }\n    callback(error);\n  };\n  HashBase.prototype.update = function(data, encoding) {\n    throwIfNotStringOrBuffer(data, \"Data\");\n    if (this._finalized) throw new Error(\"Digest already called\");\n    if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding);\n    var block = this._block;\n    var offset = 0;\n    while (this._blockOffset + data.length - offset >= this._blockSize) {\n      for (var i5 = this._blockOffset; i5 < this._blockSize; ) block[i5++] = data[offset++];\n      this._update();\n      this._blockOffset = 0;\n    }\n    while (offset < data.length) block[this._blockOffset++] = data[offset++];\n    for (var j4 = 0, carry = data.length * 8; carry > 0; ++j4) {\n      this._length[j4] += carry;\n      carry = this._length[j4] / 4294967296 | 0;\n      if (carry > 0) this._length[j4] -= 4294967296 * carry;\n    }\n    return this;\n  };\n  HashBase.prototype._update = function() {\n    throw new Error(\"_update is not implemented\");\n  };\n  HashBase.prototype.digest = function(encoding) {\n    if (this._finalized) throw new Error(\"Digest already called\");\n    this._finalized = true;\n    var digest = this._digest();\n    if (encoding !== void 0) digest = digest.toString(encoding);\n    this._block.fill(0);\n    this._blockOffset = 0;\n    for (var i5 = 0; i5 < 4; ++i5) this._length[i5] = 0;\n    return digest;\n  };\n  HashBase.prototype._digest = function() {\n    throw new Error(\"_digest is not implemented\");\n  };\n  exports$2N = HashBase;\n  return exports$2N;\n}\nvar exports$2M = {};\nvar _dewExec$2L = false;\nfunction dew$2L() {\n  if (_dewExec$2L) return exports$2M;\n  _dewExec$2L = true;\n  var inherits = dew$f();\n  var HashBase = dew$2M();\n  var Buffer = dew$2P().Buffer;\n  var ARRAY16 = new Array(16);\n  function MD5() {\n    HashBase.call(this, 64);\n    this._a = 1732584193;\n    this._b = 4023233417;\n    this._c = 2562383102;\n    this._d = 271733878;\n  }\n  inherits(MD5, HashBase);\n  MD5.prototype._update = function() {\n    var M4 = ARRAY16;\n    for (var i5 = 0; i5 < 16; ++i5) M4[i5] = this._block.readInt32LE(i5 * 4);\n    var a5 = this._a;\n    var b4 = this._b;\n    var c5 = this._c;\n    var d4 = this._d;\n    a5 = fnF(a5, b4, c5, d4, M4[0], 3614090360, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[1], 3905402710, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[2], 606105819, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[3], 3250441966, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[4], 4118548399, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[5], 1200080426, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[6], 2821735955, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[7], 4249261313, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[8], 1770035416, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[9], 2336552879, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[10], 4294925233, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[11], 2304563134, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[12], 1804603682, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[13], 4254626195, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[14], 2792965006, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[15], 1236535329, 22);\n    a5 = fnG(a5, b4, c5, d4, M4[1], 4129170786, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[6], 3225465664, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[11], 643717713, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[0], 3921069994, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[5], 3593408605, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[10], 38016083, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[15], 3634488961, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[4], 3889429448, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[9], 568446438, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[14], 3275163606, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[3], 4107603335, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[8], 1163531501, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[13], 2850285829, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[2], 4243563512, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[7], 1735328473, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[12], 2368359562, 20);\n    a5 = fnH(a5, b4, c5, d4, M4[5], 4294588738, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[8], 2272392833, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[11], 1839030562, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[14], 4259657740, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[1], 2763975236, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[4], 1272893353, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[7], 4139469664, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[10], 3200236656, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[13], 681279174, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[0], 3936430074, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[3], 3572445317, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[6], 76029189, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[9], 3654602809, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[12], 3873151461, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[15], 530742520, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[2], 3299628645, 23);\n    a5 = fnI(a5, b4, c5, d4, M4[0], 4096336452, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[7], 1126891415, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[14], 2878612391, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[5], 4237533241, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[12], 1700485571, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[3], 2399980690, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[10], 4293915773, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[1], 2240044497, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[8], 1873313359, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[15], 4264355552, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[6], 2734768916, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[13], 1309151649, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[4], 4149444226, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[11], 3174756917, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[2], 718787259, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[9], 3951481745, 21);\n    this._a = this._a + a5 | 0;\n    this._b = this._b + b4 | 0;\n    this._c = this._c + c5 | 0;\n    this._d = this._d + d4 | 0;\n  };\n  MD5.prototype._digest = function() {\n    this._block[this._blockOffset++] = 128;\n    if (this._blockOffset > 56) {\n      this._block.fill(0, this._blockOffset, 64);\n      this._update();\n      this._blockOffset = 0;\n    }\n    this._block.fill(0, this._blockOffset, 56);\n    this._block.writeUInt32LE(this._length[0], 56);\n    this._block.writeUInt32LE(this._length[1], 60);\n    this._update();\n    var buffer2 = Buffer.allocUnsafe(16);\n    buffer2.writeInt32LE(this._a, 0);\n    buffer2.writeInt32LE(this._b, 4);\n    buffer2.writeInt32LE(this._c, 8);\n    buffer2.writeInt32LE(this._d, 12);\n    return buffer2;\n  };\n  function rotl(x4, n5) {\n    return x4 << n5 | x4 >>> 32 - n5;\n  }\n  function fnF(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 & c5 | ~b4 & d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnG(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 & d4 | c5 & ~d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnH(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ c5 ^ d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnI(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (c5 ^ (b4 | ~d4)) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  exports$2M = MD5;\n  return exports$2M;\n}\nvar exports$2L = {};\nvar _dewExec$2K = false;\nfunction dew$2K() {\n  if (_dewExec$2K) return exports$2L;\n  _dewExec$2K = true;\n  var Buffer = buffer.Buffer;\n  var inherits = dew$f();\n  var HashBase = dew$2M();\n  var ARRAY16 = new Array(16);\n  var zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\n  var zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\n  var sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\n  var sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n  var hl = [0, 1518500249, 1859775393, 2400959708, 2840853838];\n  var hr = [1352829926, 1548603684, 1836072691, 2053994217, 0];\n  function RIPEMD160() {\n    HashBase.call(this, 64);\n    this._a = 1732584193;\n    this._b = 4023233417;\n    this._c = 2562383102;\n    this._d = 271733878;\n    this._e = 3285377520;\n  }\n  inherits(RIPEMD160, HashBase);\n  RIPEMD160.prototype._update = function() {\n    var words = ARRAY16;\n    for (var j4 = 0; j4 < 16; ++j4) words[j4] = this._block.readInt32LE(j4 * 4);\n    var al = this._a | 0;\n    var bl = this._b | 0;\n    var cl = this._c | 0;\n    var dl = this._d | 0;\n    var el = this._e | 0;\n    var ar = this._a | 0;\n    var br = this._b | 0;\n    var cr = this._c | 0;\n    var dr = this._d | 0;\n    var er = this._e | 0;\n    for (var i5 = 0; i5 < 80; i5 += 1) {\n      var tl;\n      var tr;\n      if (i5 < 16) {\n        tl = fn1(al, bl, cl, dl, el, words[zl[i5]], hl[0], sl[i5]);\n        tr = fn5(ar, br, cr, dr, er, words[zr[i5]], hr[0], sr[i5]);\n      } else if (i5 < 32) {\n        tl = fn2(al, bl, cl, dl, el, words[zl[i5]], hl[1], sl[i5]);\n        tr = fn4(ar, br, cr, dr, er, words[zr[i5]], hr[1], sr[i5]);\n      } else if (i5 < 48) {\n        tl = fn3(al, bl, cl, dl, el, words[zl[i5]], hl[2], sl[i5]);\n        tr = fn3(ar, br, cr, dr, er, words[zr[i5]], hr[2], sr[i5]);\n      } else if (i5 < 64) {\n        tl = fn4(al, bl, cl, dl, el, words[zl[i5]], hl[3], sl[i5]);\n        tr = fn2(ar, br, cr, dr, er, words[zr[i5]], hr[3], sr[i5]);\n      } else {\n        tl = fn5(al, bl, cl, dl, el, words[zl[i5]], hl[4], sl[i5]);\n        tr = fn1(ar, br, cr, dr, er, words[zr[i5]], hr[4], sr[i5]);\n      }\n      al = el;\n      el = dl;\n      dl = rotl(cl, 10);\n      cl = bl;\n      bl = tl;\n      ar = er;\n      er = dr;\n      dr = rotl(cr, 10);\n      cr = br;\n      br = tr;\n    }\n    var t5 = this._b + cl + dr | 0;\n    this._b = this._c + dl + er | 0;\n    this._c = this._d + el + ar | 0;\n    this._d = this._e + al + br | 0;\n    this._e = this._a + bl + cr | 0;\n    this._a = t5;\n  };\n  RIPEMD160.prototype._digest = function() {\n    this._block[this._blockOffset++] = 128;\n    if (this._blockOffset > 56) {\n      this._block.fill(0, this._blockOffset, 64);\n      this._update();\n      this._blockOffset = 0;\n    }\n    this._block.fill(0, this._blockOffset, 56);\n    this._block.writeUInt32LE(this._length[0], 56);\n    this._block.writeUInt32LE(this._length[1], 60);\n    this._update();\n    var buffer2 = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20);\n    buffer2.writeInt32LE(this._a, 0);\n    buffer2.writeInt32LE(this._b, 4);\n    buffer2.writeInt32LE(this._c, 8);\n    buffer2.writeInt32LE(this._d, 12);\n    buffer2.writeInt32LE(this._e, 16);\n    return buffer2;\n  };\n  function rotl(x4, n5) {\n    return x4 << n5 | x4 >>> 32 - n5;\n  }\n  function fn1(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ c5 ^ d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn2(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 & c5 | ~b4 & d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn3(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + ((b4 | ~c5) ^ d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn4(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 & d4 | c5 & ~d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn5(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ (c5 | ~d4)) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  exports$2L = RIPEMD160;\n  return exports$2L;\n}\nvar exports$2K = {};\nvar _dewExec$2J = false;\nvar _global$T = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2J() {\n  if (_dewExec$2J) return exports$2K;\n  _dewExec$2J = true;\n  var Buffer = dew$2P().Buffer;\n  function Hash2(blockSize, finalSize) {\n    (this || _global$T)._block = Buffer.alloc(blockSize);\n    (this || _global$T)._finalSize = finalSize;\n    (this || _global$T)._blockSize = blockSize;\n    (this || _global$T)._len = 0;\n  }\n  Hash2.prototype.update = function(data, enc) {\n    if (typeof data === \"string\") {\n      enc = enc || \"utf8\";\n      data = Buffer.from(data, enc);\n    }\n    var block = (this || _global$T)._block;\n    var blockSize = (this || _global$T)._blockSize;\n    var length = data.length;\n    var accum = (this || _global$T)._len;\n    for (var offset = 0; offset < length; ) {\n      var assigned = accum % blockSize;\n      var remainder = Math.min(length - offset, blockSize - assigned);\n      for (var i5 = 0; i5 < remainder; i5++) {\n        block[assigned + i5] = data[offset + i5];\n      }\n      accum += remainder;\n      offset += remainder;\n      if (accum % blockSize === 0) {\n        this._update(block);\n      }\n    }\n    (this || _global$T)._len += length;\n    return this || _global$T;\n  };\n  Hash2.prototype.digest = function(enc) {\n    var rem = (this || _global$T)._len % (this || _global$T)._blockSize;\n    (this || _global$T)._block[rem] = 128;\n    (this || _global$T)._block.fill(0, rem + 1);\n    if (rem >= (this || _global$T)._finalSize) {\n      this._update((this || _global$T)._block);\n      (this || _global$T)._block.fill(0);\n    }\n    var bits = (this || _global$T)._len * 8;\n    if (bits <= 4294967295) {\n      (this || _global$T)._block.writeUInt32BE(bits, (this || _global$T)._blockSize - 4);\n    } else {\n      var lowBits = (bits & 4294967295) >>> 0;\n      var highBits = (bits - lowBits) / 4294967296;\n      (this || _global$T)._block.writeUInt32BE(highBits, (this || _global$T)._blockSize - 8);\n      (this || _global$T)._block.writeUInt32BE(lowBits, (this || _global$T)._blockSize - 4);\n    }\n    this._update((this || _global$T)._block);\n    var hash = this._hash();\n    return enc ? hash.toString(enc) : hash;\n  };\n  Hash2.prototype._update = function() {\n    throw new Error(\"_update must be implemented by subclass\");\n  };\n  exports$2K = Hash2;\n  return exports$2K;\n}\nvar exports$2J = {};\nvar _dewExec$2I = false;\nvar _global$S = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2I() {\n  if (_dewExec$2I) return exports$2J;\n  _dewExec$2I = true;\n  var inherits = dew$f();\n  var Hash2 = dew$2J();\n  var Buffer = dew$2P().Buffer;\n  var K3 = [1518500249, 1859775393, 2400959708 | 0, 3395469782 | 0];\n  var W3 = new Array(80);\n  function Sha() {\n    this.init();\n    (this || _global$S)._w = W3;\n    Hash2.call(this || _global$S, 64, 56);\n  }\n  inherits(Sha, Hash2);\n  Sha.prototype.init = function() {\n    (this || _global$S)._a = 1732584193;\n    (this || _global$S)._b = 4023233417;\n    (this || _global$S)._c = 2562383102;\n    (this || _global$S)._d = 271733878;\n    (this || _global$S)._e = 3285377520;\n    return this || _global$S;\n  };\n  function rotl5(num) {\n    return num << 5 | num >>> 27;\n  }\n  function rotl30(num) {\n    return num << 30 | num >>> 2;\n  }\n  function ft(s5, b4, c5, d4) {\n    if (s5 === 0) return b4 & c5 | ~b4 & d4;\n    if (s5 === 2) return b4 & c5 | b4 & d4 | c5 & d4;\n    return b4 ^ c5 ^ d4;\n  }\n  Sha.prototype._update = function(M4) {\n    var W4 = (this || _global$S)._w;\n    var a5 = (this || _global$S)._a | 0;\n    var b4 = (this || _global$S)._b | 0;\n    var c5 = (this || _global$S)._c | 0;\n    var d4 = (this || _global$S)._d | 0;\n    var e7 = (this || _global$S)._e | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 80; ++i5) W4[i5] = W4[i5 - 3] ^ W4[i5 - 8] ^ W4[i5 - 14] ^ W4[i5 - 16];\n    for (var j4 = 0; j4 < 80; ++j4) {\n      var s5 = ~~(j4 / 20);\n      var t5 = rotl5(a5) + ft(s5, b4, c5, d4) + e7 + W4[j4] + K3[s5] | 0;\n      e7 = d4;\n      d4 = c5;\n      c5 = rotl30(b4);\n      b4 = a5;\n      a5 = t5;\n    }\n    (this || _global$S)._a = a5 + (this || _global$S)._a | 0;\n    (this || _global$S)._b = b4 + (this || _global$S)._b | 0;\n    (this || _global$S)._c = c5 + (this || _global$S)._c | 0;\n    (this || _global$S)._d = d4 + (this || _global$S)._d | 0;\n    (this || _global$S)._e = e7 + (this || _global$S)._e | 0;\n  };\n  Sha.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(20);\n    H3.writeInt32BE((this || _global$S)._a | 0, 0);\n    H3.writeInt32BE((this || _global$S)._b | 0, 4);\n    H3.writeInt32BE((this || _global$S)._c | 0, 8);\n    H3.writeInt32BE((this || _global$S)._d | 0, 12);\n    H3.writeInt32BE((this || _global$S)._e | 0, 16);\n    return H3;\n  };\n  exports$2J = Sha;\n  return exports$2J;\n}\nvar exports$2I = {};\nvar _dewExec$2H = false;\nvar _global$R = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2H() {\n  if (_dewExec$2H) return exports$2I;\n  _dewExec$2H = true;\n  var inherits = dew$f();\n  var Hash2 = dew$2J();\n  var Buffer = dew$2P().Buffer;\n  var K3 = [1518500249, 1859775393, 2400959708 | 0, 3395469782 | 0];\n  var W3 = new Array(80);\n  function Sha1() {\n    this.init();\n    (this || _global$R)._w = W3;\n    Hash2.call(this || _global$R, 64, 56);\n  }\n  inherits(Sha1, Hash2);\n  Sha1.prototype.init = function() {\n    (this || _global$R)._a = 1732584193;\n    (this || _global$R)._b = 4023233417;\n    (this || _global$R)._c = 2562383102;\n    (this || _global$R)._d = 271733878;\n    (this || _global$R)._e = 3285377520;\n    return this || _global$R;\n  };\n  function rotl1(num) {\n    return num << 1 | num >>> 31;\n  }\n  function rotl5(num) {\n    return num << 5 | num >>> 27;\n  }\n  function rotl30(num) {\n    return num << 30 | num >>> 2;\n  }\n  function ft(s5, b4, c5, d4) {\n    if (s5 === 0) return b4 & c5 | ~b4 & d4;\n    if (s5 === 2) return b4 & c5 | b4 & d4 | c5 & d4;\n    return b4 ^ c5 ^ d4;\n  }\n  Sha1.prototype._update = function(M4) {\n    var W4 = (this || _global$R)._w;\n    var a5 = (this || _global$R)._a | 0;\n    var b4 = (this || _global$R)._b | 0;\n    var c5 = (this || _global$R)._c | 0;\n    var d4 = (this || _global$R)._d | 0;\n    var e7 = (this || _global$R)._e | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 80; ++i5) W4[i5] = rotl1(W4[i5 - 3] ^ W4[i5 - 8] ^ W4[i5 - 14] ^ W4[i5 - 16]);\n    for (var j4 = 0; j4 < 80; ++j4) {\n      var s5 = ~~(j4 / 20);\n      var t5 = rotl5(a5) + ft(s5, b4, c5, d4) + e7 + W4[j4] + K3[s5] | 0;\n      e7 = d4;\n      d4 = c5;\n      c5 = rotl30(b4);\n      b4 = a5;\n      a5 = t5;\n    }\n    (this || _global$R)._a = a5 + (this || _global$R)._a | 0;\n    (this || _global$R)._b = b4 + (this || _global$R)._b | 0;\n    (this || _global$R)._c = c5 + (this || _global$R)._c | 0;\n    (this || _global$R)._d = d4 + (this || _global$R)._d | 0;\n    (this || _global$R)._e = e7 + (this || _global$R)._e | 0;\n  };\n  Sha1.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(20);\n    H3.writeInt32BE((this || _global$R)._a | 0, 0);\n    H3.writeInt32BE((this || _global$R)._b | 0, 4);\n    H3.writeInt32BE((this || _global$R)._c | 0, 8);\n    H3.writeInt32BE((this || _global$R)._d | 0, 12);\n    H3.writeInt32BE((this || _global$R)._e | 0, 16);\n    return H3;\n  };\n  exports$2I = Sha1;\n  return exports$2I;\n}\nvar exports$2H = {};\nvar _dewExec$2G = false;\nvar _global$Q = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2G() {\n  if (_dewExec$2G) return exports$2H;\n  _dewExec$2G = true;\n  var inherits = dew$f();\n  var Hash2 = dew$2J();\n  var Buffer = dew$2P().Buffer;\n  var K3 = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298];\n  var W3 = new Array(64);\n  function Sha256() {\n    this.init();\n    (this || _global$Q)._w = W3;\n    Hash2.call(this || _global$Q, 64, 56);\n  }\n  inherits(Sha256, Hash2);\n  Sha256.prototype.init = function() {\n    (this || _global$Q)._a = 1779033703;\n    (this || _global$Q)._b = 3144134277;\n    (this || _global$Q)._c = 1013904242;\n    (this || _global$Q)._d = 2773480762;\n    (this || _global$Q)._e = 1359893119;\n    (this || _global$Q)._f = 2600822924;\n    (this || _global$Q)._g = 528734635;\n    (this || _global$Q)._h = 1541459225;\n    return this || _global$Q;\n  };\n  function ch(x4, y5, z4) {\n    return z4 ^ x4 & (y5 ^ z4);\n  }\n  function maj(x4, y5, z4) {\n    return x4 & y5 | z4 & (x4 | y5);\n  }\n  function sigma0(x4) {\n    return (x4 >>> 2 | x4 << 30) ^ (x4 >>> 13 | x4 << 19) ^ (x4 >>> 22 | x4 << 10);\n  }\n  function sigma1(x4) {\n    return (x4 >>> 6 | x4 << 26) ^ (x4 >>> 11 | x4 << 21) ^ (x4 >>> 25 | x4 << 7);\n  }\n  function gamma0(x4) {\n    return (x4 >>> 7 | x4 << 25) ^ (x4 >>> 18 | x4 << 14) ^ x4 >>> 3;\n  }\n  function gamma1(x4) {\n    return (x4 >>> 17 | x4 << 15) ^ (x4 >>> 19 | x4 << 13) ^ x4 >>> 10;\n  }\n  Sha256.prototype._update = function(M4) {\n    var W4 = (this || _global$Q)._w;\n    var a5 = (this || _global$Q)._a | 0;\n    var b4 = (this || _global$Q)._b | 0;\n    var c5 = (this || _global$Q)._c | 0;\n    var d4 = (this || _global$Q)._d | 0;\n    var e7 = (this || _global$Q)._e | 0;\n    var f6 = (this || _global$Q)._f | 0;\n    var g4 = (this || _global$Q)._g | 0;\n    var h5 = (this || _global$Q)._h | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 64; ++i5) W4[i5] = gamma1(W4[i5 - 2]) + W4[i5 - 7] + gamma0(W4[i5 - 15]) + W4[i5 - 16] | 0;\n    for (var j4 = 0; j4 < 64; ++j4) {\n      var T1 = h5 + sigma1(e7) + ch(e7, f6, g4) + K3[j4] + W4[j4] | 0;\n      var T22 = sigma0(a5) + maj(a5, b4, c5) | 0;\n      h5 = g4;\n      g4 = f6;\n      f6 = e7;\n      e7 = d4 + T1 | 0;\n      d4 = c5;\n      c5 = b4;\n      b4 = a5;\n      a5 = T1 + T22 | 0;\n    }\n    (this || _global$Q)._a = a5 + (this || _global$Q)._a | 0;\n    (this || _global$Q)._b = b4 + (this || _global$Q)._b | 0;\n    (this || _global$Q)._c = c5 + (this || _global$Q)._c | 0;\n    (this || _global$Q)._d = d4 + (this || _global$Q)._d | 0;\n    (this || _global$Q)._e = e7 + (this || _global$Q)._e | 0;\n    (this || _global$Q)._f = f6 + (this || _global$Q)._f | 0;\n    (this || _global$Q)._g = g4 + (this || _global$Q)._g | 0;\n    (this || _global$Q)._h = h5 + (this || _global$Q)._h | 0;\n  };\n  Sha256.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(32);\n    H3.writeInt32BE((this || _global$Q)._a, 0);\n    H3.writeInt32BE((this || _global$Q)._b, 4);\n    H3.writeInt32BE((this || _global$Q)._c, 8);\n    H3.writeInt32BE((this || _global$Q)._d, 12);\n    H3.writeInt32BE((this || _global$Q)._e, 16);\n    H3.writeInt32BE((this || _global$Q)._f, 20);\n    H3.writeInt32BE((this || _global$Q)._g, 24);\n    H3.writeInt32BE((this || _global$Q)._h, 28);\n    return H3;\n  };\n  exports$2H = Sha256;\n  return exports$2H;\n}\nvar exports$2G = {};\nvar _dewExec$2F = false;\nvar _global$P = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2F() {\n  if (_dewExec$2F) return exports$2G;\n  _dewExec$2F = true;\n  var inherits = dew$f();\n  var Sha256 = dew$2G();\n  var Hash2 = dew$2J();\n  var Buffer = dew$2P().Buffer;\n  var W3 = new Array(64);\n  function Sha224() {\n    this.init();\n    (this || _global$P)._w = W3;\n    Hash2.call(this || _global$P, 64, 56);\n  }\n  inherits(Sha224, Sha256);\n  Sha224.prototype.init = function() {\n    (this || _global$P)._a = 3238371032;\n    (this || _global$P)._b = 914150663;\n    (this || _global$P)._c = 812702999;\n    (this || _global$P)._d = 4144912697;\n    (this || _global$P)._e = 4290775857;\n    (this || _global$P)._f = 1750603025;\n    (this || _global$P)._g = 1694076839;\n    (this || _global$P)._h = 3204075428;\n    return this || _global$P;\n  };\n  Sha224.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(28);\n    H3.writeInt32BE((this || _global$P)._a, 0);\n    H3.writeInt32BE((this || _global$P)._b, 4);\n    H3.writeInt32BE((this || _global$P)._c, 8);\n    H3.writeInt32BE((this || _global$P)._d, 12);\n    H3.writeInt32BE((this || _global$P)._e, 16);\n    H3.writeInt32BE((this || _global$P)._f, 20);\n    H3.writeInt32BE((this || _global$P)._g, 24);\n    return H3;\n  };\n  exports$2G = Sha224;\n  return exports$2G;\n}\nvar exports$2F = {};\nvar _dewExec$2E = false;\nvar _global$O = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2E() {\n  if (_dewExec$2E) return exports$2F;\n  _dewExec$2E = true;\n  var inherits = dew$f();\n  var Hash2 = dew$2J();\n  var Buffer = dew$2P().Buffer;\n  var K3 = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591];\n  var W3 = new Array(160);\n  function Sha512() {\n    this.init();\n    (this || _global$O)._w = W3;\n    Hash2.call(this || _global$O, 128, 112);\n  }\n  inherits(Sha512, Hash2);\n  Sha512.prototype.init = function() {\n    (this || _global$O)._ah = 1779033703;\n    (this || _global$O)._bh = 3144134277;\n    (this || _global$O)._ch = 1013904242;\n    (this || _global$O)._dh = 2773480762;\n    (this || _global$O)._eh = 1359893119;\n    (this || _global$O)._fh = 2600822924;\n    (this || _global$O)._gh = 528734635;\n    (this || _global$O)._hh = 1541459225;\n    (this || _global$O)._al = 4089235720;\n    (this || _global$O)._bl = 2227873595;\n    (this || _global$O)._cl = 4271175723;\n    (this || _global$O)._dl = 1595750129;\n    (this || _global$O)._el = 2917565137;\n    (this || _global$O)._fl = 725511199;\n    (this || _global$O)._gl = 4215389547;\n    (this || _global$O)._hl = 327033209;\n    return this || _global$O;\n  };\n  function Ch(x4, y5, z4) {\n    return z4 ^ x4 & (y5 ^ z4);\n  }\n  function maj(x4, y5, z4) {\n    return x4 & y5 | z4 & (x4 | y5);\n  }\n  function sigma0(x4, xl) {\n    return (x4 >>> 28 | xl << 4) ^ (xl >>> 2 | x4 << 30) ^ (xl >>> 7 | x4 << 25);\n  }\n  function sigma1(x4, xl) {\n    return (x4 >>> 14 | xl << 18) ^ (x4 >>> 18 | xl << 14) ^ (xl >>> 9 | x4 << 23);\n  }\n  function Gamma0(x4, xl) {\n    return (x4 >>> 1 | xl << 31) ^ (x4 >>> 8 | xl << 24) ^ x4 >>> 7;\n  }\n  function Gamma0l(x4, xl) {\n    return (x4 >>> 1 | xl << 31) ^ (x4 >>> 8 | xl << 24) ^ (x4 >>> 7 | xl << 25);\n  }\n  function Gamma1(x4, xl) {\n    return (x4 >>> 19 | xl << 13) ^ (xl >>> 29 | x4 << 3) ^ x4 >>> 6;\n  }\n  function Gamma1l(x4, xl) {\n    return (x4 >>> 19 | xl << 13) ^ (xl >>> 29 | x4 << 3) ^ (x4 >>> 6 | xl << 26);\n  }\n  function getCarry(a5, b4) {\n    return a5 >>> 0 < b4 >>> 0 ? 1 : 0;\n  }\n  Sha512.prototype._update = function(M4) {\n    var W4 = (this || _global$O)._w;\n    var ah = (this || _global$O)._ah | 0;\n    var bh = (this || _global$O)._bh | 0;\n    var ch = (this || _global$O)._ch | 0;\n    var dh = (this || _global$O)._dh | 0;\n    var eh = (this || _global$O)._eh | 0;\n    var fh = (this || _global$O)._fh | 0;\n    var gh = (this || _global$O)._gh | 0;\n    var hh = (this || _global$O)._hh | 0;\n    var al = (this || _global$O)._al | 0;\n    var bl = (this || _global$O)._bl | 0;\n    var cl = (this || _global$O)._cl | 0;\n    var dl = (this || _global$O)._dl | 0;\n    var el = (this || _global$O)._el | 0;\n    var fl = (this || _global$O)._fl | 0;\n    var gl = (this || _global$O)._gl | 0;\n    var hl = (this || _global$O)._hl | 0;\n    for (var i5 = 0; i5 < 32; i5 += 2) {\n      W4[i5] = M4.readInt32BE(i5 * 4);\n      W4[i5 + 1] = M4.readInt32BE(i5 * 4 + 4);\n    }\n    for (; i5 < 160; i5 += 2) {\n      var xh = W4[i5 - 15 * 2];\n      var xl = W4[i5 - 15 * 2 + 1];\n      var gamma0 = Gamma0(xh, xl);\n      var gamma0l = Gamma0l(xl, xh);\n      xh = W4[i5 - 2 * 2];\n      xl = W4[i5 - 2 * 2 + 1];\n      var gamma1 = Gamma1(xh, xl);\n      var gamma1l = Gamma1l(xl, xh);\n      var Wi7h = W4[i5 - 7 * 2];\n      var Wi7l = W4[i5 - 7 * 2 + 1];\n      var Wi16h = W4[i5 - 16 * 2];\n      var Wi16l = W4[i5 - 16 * 2 + 1];\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      W4[i5] = Wih;\n      W4[i5 + 1] = Wil;\n    }\n    for (var j4 = 0; j4 < 160; j4 += 2) {\n      Wih = W4[j4];\n      Wil = W4[j4 + 1];\n      var majh = maj(ah, bh, ch);\n      var majl = maj(al, bl, cl);\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      var Kih = K3[j4];\n      var Kil = K3[j4 + 1];\n      var chh = Ch(eh, fh, gh);\n      var chl = Ch(el, fl, gl);\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      var t2l = sigma0l + majl | 0;\n      var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;\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    (this || _global$O)._al = (this || _global$O)._al + al | 0;\n    (this || _global$O)._bl = (this || _global$O)._bl + bl | 0;\n    (this || _global$O)._cl = (this || _global$O)._cl + cl | 0;\n    (this || _global$O)._dl = (this || _global$O)._dl + dl | 0;\n    (this || _global$O)._el = (this || _global$O)._el + el | 0;\n    (this || _global$O)._fl = (this || _global$O)._fl + fl | 0;\n    (this || _global$O)._gl = (this || _global$O)._gl + gl | 0;\n    (this || _global$O)._hl = (this || _global$O)._hl + hl | 0;\n    (this || _global$O)._ah = (this || _global$O)._ah + ah + getCarry((this || _global$O)._al, al) | 0;\n    (this || _global$O)._bh = (this || _global$O)._bh + bh + getCarry((this || _global$O)._bl, bl) | 0;\n    (this || _global$O)._ch = (this || _global$O)._ch + ch + getCarry((this || _global$O)._cl, cl) | 0;\n    (this || _global$O)._dh = (this || _global$O)._dh + dh + getCarry((this || _global$O)._dl, dl) | 0;\n    (this || _global$O)._eh = (this || _global$O)._eh + eh + getCarry((this || _global$O)._el, el) | 0;\n    (this || _global$O)._fh = (this || _global$O)._fh + fh + getCarry((this || _global$O)._fl, fl) | 0;\n    (this || _global$O)._gh = (this || _global$O)._gh + gh + getCarry((this || _global$O)._gl, gl) | 0;\n    (this || _global$O)._hh = (this || _global$O)._hh + hh + getCarry((this || _global$O)._hl, hl) | 0;\n  };\n  Sha512.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(64);\n    function writeInt64BE(h5, l5, offset) {\n      H3.writeInt32BE(h5, offset);\n      H3.writeInt32BE(l5, offset + 4);\n    }\n    writeInt64BE((this || _global$O)._ah, (this || _global$O)._al, 0);\n    writeInt64BE((this || _global$O)._bh, (this || _global$O)._bl, 8);\n    writeInt64BE((this || _global$O)._ch, (this || _global$O)._cl, 16);\n    writeInt64BE((this || _global$O)._dh, (this || _global$O)._dl, 24);\n    writeInt64BE((this || _global$O)._eh, (this || _global$O)._el, 32);\n    writeInt64BE((this || _global$O)._fh, (this || _global$O)._fl, 40);\n    writeInt64BE((this || _global$O)._gh, (this || _global$O)._gl, 48);\n    writeInt64BE((this || _global$O)._hh, (this || _global$O)._hl, 56);\n    return H3;\n  };\n  exports$2F = Sha512;\n  return exports$2F;\n}\nvar exports$2E = {};\nvar _dewExec$2D = false;\nvar _global$N = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2D() {\n  if (_dewExec$2D) return exports$2E;\n  _dewExec$2D = true;\n  var inherits = dew$f();\n  var SHA512 = dew$2E();\n  var Hash2 = dew$2J();\n  var Buffer = dew$2P().Buffer;\n  var W3 = new Array(160);\n  function Sha384() {\n    this.init();\n    (this || _global$N)._w = W3;\n    Hash2.call(this || _global$N, 128, 112);\n  }\n  inherits(Sha384, SHA512);\n  Sha384.prototype.init = function() {\n    (this || _global$N)._ah = 3418070365;\n    (this || _global$N)._bh = 1654270250;\n    (this || _global$N)._ch = 2438529370;\n    (this || _global$N)._dh = 355462360;\n    (this || _global$N)._eh = 1731405415;\n    (this || _global$N)._fh = 2394180231;\n    (this || _global$N)._gh = 3675008525;\n    (this || _global$N)._hh = 1203062813;\n    (this || _global$N)._al = 3238371032;\n    (this || _global$N)._bl = 914150663;\n    (this || _global$N)._cl = 812702999;\n    (this || _global$N)._dl = 4144912697;\n    (this || _global$N)._el = 4290775857;\n    (this || _global$N)._fl = 1750603025;\n    (this || _global$N)._gl = 1694076839;\n    (this || _global$N)._hl = 3204075428;\n    return this || _global$N;\n  };\n  Sha384.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(48);\n    function writeInt64BE(h5, l5, offset) {\n      H3.writeInt32BE(h5, offset);\n      H3.writeInt32BE(l5, offset + 4);\n    }\n    writeInt64BE((this || _global$N)._ah, (this || _global$N)._al, 0);\n    writeInt64BE((this || _global$N)._bh, (this || _global$N)._bl, 8);\n    writeInt64BE((this || _global$N)._ch, (this || _global$N)._cl, 16);\n    writeInt64BE((this || _global$N)._dh, (this || _global$N)._dl, 24);\n    writeInt64BE((this || _global$N)._eh, (this || _global$N)._el, 32);\n    writeInt64BE((this || _global$N)._fh, (this || _global$N)._fl, 40);\n    return H3;\n  };\n  exports$2E = Sha384;\n  return exports$2E;\n}\nvar exports$2D = {};\nvar _dewExec$2C = false;\nvar module$b = {\n  exports: exports$2D\n};\nfunction dew$2C() {\n  if (_dewExec$2C) return module$b.exports;\n  _dewExec$2C = true;\n  var exports11 = module$b.exports = function SHA(algorithm) {\n    algorithm = algorithm.toLowerCase();\n    var Algorithm = exports11[algorithm];\n    if (!Algorithm) throw new Error(algorithm + \" is not supported (we accept pull requests)\");\n    return new Algorithm();\n  };\n  exports11.sha = dew$2I();\n  exports11.sha1 = dew$2H();\n  exports11.sha224 = dew$2F();\n  exports11.sha256 = dew$2G();\n  exports11.sha384 = dew$2D();\n  exports11.sha512 = dew$2E();\n  return module$b.exports;\n}\nvar exports$f$2 = {};\nvar _dewExec$f$2 = false;\nfunction dew$f$2() {\n  if (_dewExec$f$2) return exports$f$2;\n  _dewExec$f$2 = true;\n  if (typeof Object.create === \"function\") {\n    exports$f$2 = 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    exports$f$2 = function inherits(ctor, superCtor) {\n      if (superCtor) {\n        ctor.super_ = superCtor;\n        var TempCtor = function() {\n        };\n        TempCtor.prototype = superCtor.prototype;\n        ctor.prototype = new TempCtor();\n        ctor.prototype.constructor = ctor;\n      }\n    };\n  }\n  return exports$f$2;\n}\nvar exports$e$2 = {};\nvar _dewExec$e$2 = false;\nfunction dew$e$2() {\n  if (_dewExec$e$2) return exports$e$2;\n  _dewExec$e$2 = true;\n  exports$e$2 = y.EventEmitter;\n  return exports$e$2;\n}\nvar exports$d$2 = {};\nvar _dewExec$d$2 = false;\nfunction dew$d$2() {\n  if (_dewExec$d$2) return exports$d$2;\n  _dewExec$d$2 = true;\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\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    return keys;\n  }\n  function _objectSpread(target) {\n    for (var i5 = 1; i5 < arguments.length; i5++) {\n      var source = arguments[i5] != null ? arguments[i5] : {};\n      if (i5 % 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  }\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n    return obj;\n  }\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  function _defineProperties(target, props) {\n    for (var i5 = 0; i5 < props.length; i5++) {\n      var descriptor = props[i5];\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  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    return Constructor;\n  }\n  var _require = e$1$1, Buffer = _require.Buffer;\n  var _require2 = X, inspect = _require2.inspect;\n  var custom = inspect && inspect.custom || \"inspect\";\n  function copyBuffer(src, target, offset) {\n    Buffer.prototype.copy.call(src, target, offset);\n  }\n  exports$d$2 = /* @__PURE__ */ (function() {\n    function BufferList() {\n      _classCallCheck(this, BufferList);\n      this.head = null;\n      this.tail = null;\n      this.length = 0;\n    }\n    _createClass(BufferList, [{\n      key: \"push\",\n      value: function push(v5) {\n        var entry = {\n          data: v5,\n          next: null\n        };\n        if (this.length > 0) this.tail.next = entry;\n        else this.head = entry;\n        this.tail = entry;\n        ++this.length;\n      }\n    }, {\n      key: \"unshift\",\n      value: function unshift(v5) {\n        var entry = {\n          data: v5,\n          next: this.head\n        };\n        if (this.length === 0) this.tail = entry;\n        this.head = entry;\n        ++this.length;\n      }\n    }, {\n      key: \"shift\",\n      value: function shift() {\n        if (this.length === 0) return;\n        var ret = this.head.data;\n        if (this.length === 1) this.head = this.tail = null;\n        else this.head = this.head.next;\n        --this.length;\n        return ret;\n      }\n    }, {\n      key: \"clear\",\n      value: function clear() {\n        this.head = this.tail = null;\n        this.length = 0;\n      }\n    }, {\n      key: \"join\",\n      value: function join(s5) {\n        if (this.length === 0) return \"\";\n        var p5 = this.head;\n        var ret = \"\" + p5.data;\n        while (p5 = p5.next) {\n          ret += s5 + p5.data;\n        }\n        return ret;\n      }\n    }, {\n      key: \"concat\",\n      value: function concat(n5) {\n        if (this.length === 0) return Buffer.alloc(0);\n        var ret = Buffer.allocUnsafe(n5 >>> 0);\n        var p5 = this.head;\n        var i5 = 0;\n        while (p5) {\n          copyBuffer(p5.data, ret, i5);\n          i5 += p5.data.length;\n          p5 = p5.next;\n        }\n        return ret;\n      }\n      // Consumes a specified amount of bytes or characters from the buffered data.\n    }, {\n      key: \"consume\",\n      value: function consume(n5, hasStrings) {\n        var ret;\n        if (n5 < this.head.data.length) {\n          ret = this.head.data.slice(0, n5);\n          this.head.data = this.head.data.slice(n5);\n        } else if (n5 === this.head.data.length) {\n          ret = this.shift();\n        } else {\n          ret = hasStrings ? this._getString(n5) : this._getBuffer(n5);\n        }\n        return ret;\n      }\n    }, {\n      key: \"first\",\n      value: function first() {\n        return this.head.data;\n      }\n      // Consumes a specified amount of characters from the buffered data.\n    }, {\n      key: \"_getString\",\n      value: function _getString(n5) {\n        var p5 = this.head;\n        var c5 = 1;\n        var ret = p5.data;\n        n5 -= ret.length;\n        while (p5 = p5.next) {\n          var str = p5.data;\n          var nb = n5 > str.length ? str.length : n5;\n          if (nb === str.length) ret += str;\n          else ret += str.slice(0, n5);\n          n5 -= nb;\n          if (n5 === 0) {\n            if (nb === str.length) {\n              ++c5;\n              if (p5.next) this.head = p5.next;\n              else this.head = this.tail = null;\n            } else {\n              this.head = p5;\n              p5.data = str.slice(nb);\n            }\n            break;\n          }\n          ++c5;\n        }\n        this.length -= c5;\n        return ret;\n      }\n      // Consumes a specified amount of bytes from the buffered data.\n    }, {\n      key: \"_getBuffer\",\n      value: function _getBuffer(n5) {\n        var ret = Buffer.allocUnsafe(n5);\n        var p5 = this.head;\n        var c5 = 1;\n        p5.data.copy(ret);\n        n5 -= p5.data.length;\n        while (p5 = p5.next) {\n          var buf = p5.data;\n          var nb = n5 > buf.length ? buf.length : n5;\n          buf.copy(ret, ret.length - n5, 0, nb);\n          n5 -= nb;\n          if (n5 === 0) {\n            if (nb === buf.length) {\n              ++c5;\n              if (p5.next) this.head = p5.next;\n              else this.head = this.tail = null;\n            } else {\n              this.head = p5;\n              p5.data = buf.slice(nb);\n            }\n            break;\n          }\n          ++c5;\n        }\n        this.length -= c5;\n        return ret;\n      }\n      // Make sure the linked list only shows the minimal necessary information.\n    }, {\n      key: custom,\n      value: function value(_4, options) {\n        return inspect(this, _objectSpread({}, options, {\n          // Only inspect one level.\n          depth: 0,\n          // It should not recurse.\n          customInspect: false\n        }));\n      }\n    }]);\n    return BufferList;\n  })();\n  return exports$d$2;\n}\nvar exports$c$2 = {};\nvar _dewExec$c$2 = false;\nfunction dew$c$2() {\n  if (_dewExec$c$2) return exports$c$2;\n  _dewExec$c$2 = true;\n  var process3 = T$1;\n  function destroy(err, cb) {\n    var _this = this;\n    var readableDestroyed = this._readableState && this._readableState.destroyed;\n    var writableDestroyed = this._writableState && this._writableState.destroyed;\n    if (readableDestroyed || writableDestroyed) {\n      if (cb) {\n        cb(err);\n      } else if (err) {\n        if (!this._writableState) {\n          process3.nextTick(emitErrorNT, this, err);\n        } else if (!this._writableState.errorEmitted) {\n          this._writableState.errorEmitted = true;\n          process3.nextTick(emitErrorNT, this, err);\n        }\n      }\n      return this;\n    }\n    if (this._readableState) {\n      this._readableState.destroyed = true;\n    }\n    if (this._writableState) {\n      this._writableState.destroyed = true;\n    }\n    this._destroy(err || null, function(err2) {\n      if (!cb && err2) {\n        if (!_this._writableState) {\n          process3.nextTick(emitErrorAndCloseNT, _this, err2);\n        } else if (!_this._writableState.errorEmitted) {\n          _this._writableState.errorEmitted = true;\n          process3.nextTick(emitErrorAndCloseNT, _this, err2);\n        } else {\n          process3.nextTick(emitCloseNT, _this);\n        }\n      } else if (cb) {\n        process3.nextTick(emitCloseNT, _this);\n        cb(err2);\n      } else {\n        process3.nextTick(emitCloseNT, _this);\n      }\n    });\n    return this;\n  }\n  function emitErrorAndCloseNT(self2, err) {\n    emitErrorNT(self2, err);\n    emitCloseNT(self2);\n  }\n  function emitCloseNT(self2) {\n    if (self2._writableState && !self2._writableState.emitClose) return;\n    if (self2._readableState && !self2._readableState.emitClose) return;\n    self2.emit(\"close\");\n  }\n  function 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    if (this._writableState) {\n      this._writableState.destroyed = false;\n      this._writableState.ended = false;\n      this._writableState.ending = false;\n      this._writableState.finalCalled = false;\n      this._writableState.prefinished = false;\n      this._writableState.finished = false;\n      this._writableState.errorEmitted = false;\n    }\n  }\n  function emitErrorNT(self2, err) {\n    self2.emit(\"error\", err);\n  }\n  function errorOrDestroy(stream2, err) {\n    var rState = stream2._readableState;\n    var wState = stream2._writableState;\n    if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream2.destroy(err);\n    else stream2.emit(\"error\", err);\n  }\n  exports$c$2 = {\n    destroy,\n    undestroy,\n    errorOrDestroy\n  };\n  return exports$c$2;\n}\nvar exports$b$2 = {};\nvar _dewExec$b$2 = false;\nfunction dew$b$2() {\n  if (_dewExec$b$2) return exports$b$2;\n  _dewExec$b$2 = true;\n  const codes = {};\n  function createErrorType(code, message, Base) {\n    if (!Base) {\n      Base = Error;\n    }\n    function getMessage(arg1, arg2, arg3) {\n      if (typeof message === \"string\") {\n        return message;\n      } else {\n        return message(arg1, arg2, arg3);\n      }\n    }\n    class NodeError extends Base {\n      constructor(arg1, arg2, arg3) {\n        super(getMessage(arg1, arg2, arg3));\n      }\n    }\n    NodeError.prototype.name = Base.name;\n    NodeError.prototype.code = code;\n    codes[code] = NodeError;\n  }\n  function oneOf(expected, thing) {\n    if (Array.isArray(expected)) {\n      const len = expected.length;\n      expected = expected.map((i5) => String(i5));\n      if (len > 2) {\n        return `one of ${thing} ${expected.slice(0, len - 1).join(\", \")}, or ` + expected[len - 1];\n      } else if (len === 2) {\n        return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n      } else {\n        return `of ${thing} ${expected[0]}`;\n      }\n    } else {\n      return `of ${thing} ${String(expected)}`;\n    }\n  }\n  function startsWith(str, search, pos) {\n    return str.substr(0, search.length) === search;\n  }\n  function endsWith(str, search, this_len) {\n    if (this_len === void 0 || this_len > str.length) {\n      this_len = str.length;\n    }\n    return str.substring(this_len - search.length, this_len) === search;\n  }\n  function includes(str, search, start) {\n    if (typeof start !== \"number\") {\n      start = 0;\n    }\n    if (start + search.length > str.length) {\n      return false;\n    } else {\n      return str.indexOf(search, start) !== -1;\n    }\n  }\n  createErrorType(\"ERR_INVALID_OPT_VALUE\", function(name2, value) {\n    return 'The value \"' + value + '\" is invalid for option \"' + name2 + '\"';\n  }, TypeError);\n  createErrorType(\"ERR_INVALID_ARG_TYPE\", function(name2, expected, actual) {\n    let determiner;\n    if (typeof expected === \"string\" && startsWith(expected, \"not \")) {\n      determiner = \"must not be\";\n      expected = expected.replace(/^not /, \"\");\n    } else {\n      determiner = \"must be\";\n    }\n    let msg;\n    if (endsWith(name2, \" argument\")) {\n      msg = `The ${name2} ${determiner} ${oneOf(expected, \"type\")}`;\n    } else {\n      const type = includes(name2, \".\") ? \"property\" : \"argument\";\n      msg = `The \"${name2}\" ${type} ${determiner} ${oneOf(expected, \"type\")}`;\n    }\n    msg += `. Received type ${typeof actual}`;\n    return msg;\n  }, TypeError);\n  createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\", \"stream.push() after EOF\");\n  createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\", function(name2) {\n    return \"The \" + name2 + \" method is not implemented\";\n  });\n  createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\", \"Premature close\");\n  createErrorType(\"ERR_STREAM_DESTROYED\", function(name2) {\n    return \"Cannot call \" + name2 + \" after a stream was destroyed\";\n  });\n  createErrorType(\"ERR_MULTIPLE_CALLBACK\", \"Callback called multiple times\");\n  createErrorType(\"ERR_STREAM_CANNOT_PIPE\", \"Cannot pipe, not readable\");\n  createErrorType(\"ERR_STREAM_WRITE_AFTER_END\", \"write after end\");\n  createErrorType(\"ERR_STREAM_NULL_VALUES\", \"May not write null values to stream\", TypeError);\n  createErrorType(\"ERR_UNKNOWN_ENCODING\", function(arg) {\n    return \"Unknown encoding: \" + arg;\n  }, TypeError);\n  createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\", \"stream.unshift() after end event\");\n  exports$b$2.codes = codes;\n  return exports$b$2;\n}\nvar exports$a$2 = {};\nvar _dewExec$a$2 = false;\nfunction dew$a$2() {\n  if (_dewExec$a$2) return exports$a$2;\n  _dewExec$a$2 = true;\n  var ERR_INVALID_OPT_VALUE = dew$b$2().codes.ERR_INVALID_OPT_VALUE;\n  function highWaterMarkFrom(options, isDuplex, duplexKey) {\n    return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n  }\n  function getHighWaterMark(state, options, duplexKey, isDuplex) {\n    var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n    if (hwm != null) {\n      if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n        var name2 = isDuplex ? duplexKey : \"highWaterMark\";\n        throw new ERR_INVALID_OPT_VALUE(name2, hwm);\n      }\n      return Math.floor(hwm);\n    }\n    return state.objectMode ? 16 : 16 * 1024;\n  }\n  exports$a$2 = {\n    getHighWaterMark\n  };\n  return exports$a$2;\n}\nvar exports$9$2 = {};\nvar _dewExec$9$2 = false;\nvar _global$2$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$9$2() {\n  if (_dewExec$9$2) return exports$9$2;\n  _dewExec$9$2 = true;\n  exports$9$2 = deprecate;\n  function deprecate(fn, msg) {\n    if (config2(\"noDeprecation\")) {\n      return fn;\n    }\n    var warned = false;\n    function deprecated() {\n      if (!warned) {\n        if (config2(\"throwDeprecation\")) {\n          throw new Error(msg);\n        } else if (config2(\"traceDeprecation\")) {\n          console.trace(msg);\n        } else {\n          console.warn(msg);\n        }\n        warned = true;\n      }\n      return fn.apply(this || _global$2$2, arguments);\n    }\n    return deprecated;\n  }\n  function config2(name2) {\n    try {\n      if (!_global$2$2.localStorage) return false;\n    } catch (_4) {\n      return false;\n    }\n    var val = _global$2$2.localStorage[name2];\n    if (null == val) return false;\n    return String(val).toLowerCase() === \"true\";\n  }\n  return exports$9$2;\n}\nvar exports$8$2 = {};\nvar _dewExec$8$2 = false;\nvar _global$1$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$8$2() {\n  if (_dewExec$8$2) return exports$8$2;\n  _dewExec$8$2 = true;\n  var process3 = T$1;\n  exports$8$2 = Writable;\n  function CorkedRequest(state) {\n    var _this = this;\n    this.next = null;\n    this.entry = null;\n    this.finish = function() {\n      onCorkedFinish(_this, state);\n    };\n  }\n  var Duplex;\n  Writable.WritableState = WritableState;\n  var internalUtil = {\n    deprecate: dew$9$2()\n  };\n  var Stream = dew$e$2();\n  var Buffer = e$1$1.Buffer;\n  var OurUint8Array = _global$1$2.Uint8Array || function() {\n  };\n  function _uint8ArrayToBuffer(chunk) {\n    return Buffer.from(chunk);\n  }\n  function _isUint8Array(obj) {\n    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n  }\n  var destroyImpl = dew$c$2();\n  var _require = dew$a$2(), getHighWaterMark = _require.getHighWaterMark;\n  var _require$codes = dew$b$2().codes, ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n  var errorOrDestroy = destroyImpl.errorOrDestroy;\n  dew$f$2()(Writable, Stream);\n  function nop() {\n  }\n  function WritableState(options, stream2, isDuplex) {\n    Duplex = Duplex || dew$7$2();\n    options = options || {};\n    if (typeof isDuplex !== \"boolean\") isDuplex = stream2 instanceof Duplex;\n    this.objectMode = !!options.objectMode;\n    if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n    this.highWaterMark = getHighWaterMark(this, options, \"writableHighWaterMark\", isDuplex);\n    this.finalCalled = false;\n    this.needDrain = false;\n    this.ending = false;\n    this.ended = false;\n    this.finished = false;\n    this.destroyed = false;\n    var noDecode = options.decodeStrings === false;\n    this.decodeStrings = !noDecode;\n    this.defaultEncoding = options.defaultEncoding || \"utf8\";\n    this.length = 0;\n    this.writing = false;\n    this.corked = 0;\n    this.sync = true;\n    this.bufferProcessing = false;\n    this.onwrite = function(er) {\n      onwrite(stream2, er);\n    };\n    this.writecb = null;\n    this.writelen = 0;\n    this.bufferedRequest = null;\n    this.lastBufferedRequest = null;\n    this.pendingcb = 0;\n    this.prefinished = false;\n    this.errorEmitted = false;\n    this.emitClose = options.emitClose !== false;\n    this.autoDestroy = !!options.autoDestroy;\n    this.bufferedRequestCount = 0;\n    this.corkedRequestsFree = new CorkedRequest(this);\n  }\n  WritableState.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  (function() {\n    try {\n      Object.defineProperty(WritableState.prototype, \"buffer\", {\n        get: internalUtil.deprecate(function writableStateBufferGetter() {\n          return this.getBuffer();\n        }, \"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\", \"DEP0003\")\n      });\n    } catch (_4) {\n    }\n  })();\n  var realHasInstance;\n  if (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 value(object) {\n        if (realHasInstance.call(this, object)) return true;\n        if (this !== Writable) return false;\n        return object && object._writableState instanceof WritableState;\n      }\n    });\n  } else {\n    realHasInstance = function realHasInstance2(object) {\n      return object instanceof this;\n    };\n  }\n  function Writable(options) {\n    Duplex = Duplex || dew$7$2();\n    var isDuplex = this instanceof Duplex;\n    if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n    this._writableState = new WritableState(options, this, isDuplex);\n    this.writable = true;\n    if (options) {\n      if (typeof options.write === \"function\") this._write = options.write;\n      if (typeof options.writev === \"function\") this._writev = options.writev;\n      if (typeof options.destroy === \"function\") this._destroy = options.destroy;\n      if (typeof options.final === \"function\") this._final = options.final;\n    }\n    Stream.call(this);\n  }\n  Writable.prototype.pipe = function() {\n    errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n  };\n  function writeAfterEnd(stream2, cb) {\n    var er = new ERR_STREAM_WRITE_AFTER_END();\n    errorOrDestroy(stream2, er);\n    process3.nextTick(cb, er);\n  }\n  function validChunk(stream2, state, chunk, cb) {\n    var er;\n    if (chunk === null) {\n      er = new ERR_STREAM_NULL_VALUES();\n    } else if (typeof chunk !== \"string\" && !state.objectMode) {\n      er = new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\"], chunk);\n    }\n    if (er) {\n      errorOrDestroy(stream2, er);\n      process3.nextTick(cb, er);\n      return false;\n    }\n    return true;\n  }\n  Writable.prototype.write = function(chunk, encoding, cb) {\n    var state = this._writableState;\n    var ret = false;\n    var isBuf = !state.objectMode && _isUint8Array(chunk);\n    if (isBuf && !Buffer.isBuffer(chunk)) {\n      chunk = _uint8ArrayToBuffer(chunk);\n    }\n    if (typeof encoding === \"function\") {\n      cb = encoding;\n      encoding = null;\n    }\n    if (isBuf) encoding = \"buffer\";\n    else if (!encoding) encoding = state.defaultEncoding;\n    if (typeof cb !== \"function\") cb = nop;\n    if (state.ending) writeAfterEnd(this, cb);\n    else if (isBuf || validChunk(this, state, chunk, cb)) {\n      state.pendingcb++;\n      ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n    }\n    return ret;\n  };\n  Writable.prototype.cork = function() {\n    this._writableState.corked++;\n  };\n  Writable.prototype.uncork = function() {\n    var state = this._writableState;\n    if (state.corked) {\n      state.corked--;\n      if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n    }\n  };\n  Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\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 ERR_UNKNOWN_ENCODING(encoding);\n    this._writableState.defaultEncoding = encoding;\n    return this;\n  };\n  Object.defineProperty(Writable.prototype, \"writableBuffer\", {\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 get() {\n      return this._writableState && this._writableState.getBuffer();\n    }\n  });\n  function 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  Object.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 get() {\n      return this._writableState.highWaterMark;\n    }\n  });\n  function writeOrBuffer(stream2, 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    state.length += len;\n    var ret = state.length < state.highWaterMark;\n    if (!ret) state.needDrain = true;\n    if (state.writing || state.corked) {\n      var last = state.lastBufferedRequest;\n      state.lastBufferedRequest = {\n        chunk,\n        encoding,\n        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(stream2, state, false, len, chunk, encoding, cb);\n    }\n    return ret;\n  }\n  function doWrite(stream2, state, writev, len, chunk, encoding, cb) {\n    state.writelen = len;\n    state.writecb = cb;\n    state.writing = true;\n    state.sync = true;\n    if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED(\"write\"));\n    else if (writev) stream2._writev(chunk, state.onwrite);\n    else stream2._write(chunk, encoding, state.onwrite);\n    state.sync = false;\n  }\n  function onwriteError(stream2, state, sync, er, cb) {\n    --state.pendingcb;\n    if (sync) {\n      process3.nextTick(cb, er);\n      process3.nextTick(finishMaybe, stream2, state);\n      stream2._writableState.errorEmitted = true;\n      errorOrDestroy(stream2, er);\n    } else {\n      cb(er);\n      stream2._writableState.errorEmitted = true;\n      errorOrDestroy(stream2, er);\n      finishMaybe(stream2, state);\n    }\n  }\n  function onwriteStateUpdate(state) {\n    state.writing = false;\n    state.writecb = null;\n    state.length -= state.writelen;\n    state.writelen = 0;\n  }\n  function onwrite(stream2, er) {\n    var state = stream2._writableState;\n    var sync = state.sync;\n    var cb = state.writecb;\n    if (typeof cb !== \"function\") throw new ERR_MULTIPLE_CALLBACK();\n    onwriteStateUpdate(state);\n    if (er) onwriteError(stream2, state, sync, er, cb);\n    else {\n      var finished = needFinish(state) || stream2.destroyed;\n      if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n        clearBuffer(stream2, state);\n      }\n      if (sync) {\n        process3.nextTick(afterWrite, stream2, state, finished, cb);\n      } else {\n        afterWrite(stream2, state, finished, cb);\n      }\n    }\n  }\n  function afterWrite(stream2, state, finished, cb) {\n    if (!finished) onwriteDrain(stream2, state);\n    state.pendingcb--;\n    cb();\n    finishMaybe(stream2, state);\n  }\n  function onwriteDrain(stream2, state) {\n    if (state.length === 0 && state.needDrain) {\n      state.needDrain = false;\n      stream2.emit(\"drain\");\n    }\n  }\n  function clearBuffer(stream2, state) {\n    state.bufferProcessing = true;\n    var entry = state.bufferedRequest;\n    if (stream2._writev && entry && entry.next) {\n      var l5 = state.bufferedRequestCount;\n      var buffer2 = new Array(l5);\n      var holder = state.corkedRequestsFree;\n      holder.entry = entry;\n      var count = 0;\n      var allBuffers = true;\n      while (entry) {\n        buffer2[count] = entry;\n        if (!entry.isBuf) allBuffers = false;\n        entry = entry.next;\n        count += 1;\n      }\n      buffer2.allBuffers = allBuffers;\n      doWrite(stream2, state, true, state.length, buffer2, \"\", holder.finish);\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      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        doWrite(stream2, state, false, len, chunk, encoding, cb);\n        entry = entry.next;\n        state.bufferedRequestCount--;\n        if (state.writing) {\n          break;\n        }\n      }\n      if (entry === null) state.lastBufferedRequest = null;\n    }\n    state.bufferedRequest = entry;\n    state.bufferProcessing = false;\n  }\n  Writable.prototype._write = function(chunk, encoding, cb) {\n    cb(new ERR_METHOD_NOT_IMPLEMENTED(\"_write()\"));\n  };\n  Writable.prototype._writev = null;\n  Writable.prototype.end = function(chunk, encoding, cb) {\n    var state = this._writableState;\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    if (chunk !== null && chunk !== void 0) this.write(chunk, encoding);\n    if (state.corked) {\n      state.corked = 1;\n      this.uncork();\n    }\n    if (!state.ending) endWritable(this, state, cb);\n    return this;\n  };\n  Object.defineProperty(Writable.prototype, \"writableLength\", {\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 get() {\n      return this._writableState.length;\n    }\n  });\n  function needFinish(state) {\n    return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n  }\n  function callFinal(stream2, state) {\n    stream2._final(function(err) {\n      state.pendingcb--;\n      if (err) {\n        errorOrDestroy(stream2, err);\n      }\n      state.prefinished = true;\n      stream2.emit(\"prefinish\");\n      finishMaybe(stream2, state);\n    });\n  }\n  function prefinish(stream2, state) {\n    if (!state.prefinished && !state.finalCalled) {\n      if (typeof stream2._final === \"function\" && !state.destroyed) {\n        state.pendingcb++;\n        state.finalCalled = true;\n        process3.nextTick(callFinal, stream2, state);\n      } else {\n        state.prefinished = true;\n        stream2.emit(\"prefinish\");\n      }\n    }\n  }\n  function finishMaybe(stream2, state) {\n    var need = needFinish(state);\n    if (need) {\n      prefinish(stream2, state);\n      if (state.pendingcb === 0) {\n        state.finished = true;\n        stream2.emit(\"finish\");\n        if (state.autoDestroy) {\n          var rState = stream2._readableState;\n          if (!rState || rState.autoDestroy && rState.endEmitted) {\n            stream2.destroy();\n          }\n        }\n      }\n    }\n    return need;\n  }\n  function endWritable(stream2, state, cb) {\n    state.ending = true;\n    finishMaybe(stream2, state);\n    if (cb) {\n      if (state.finished) process3.nextTick(cb);\n      else stream2.once(\"finish\", cb);\n    }\n    state.ended = true;\n    stream2.writable = false;\n  }\n  function 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    state.corkedRequestsFree.next = corkReq;\n  }\n  Object.defineProperty(Writable.prototype, \"destroyed\", {\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 get() {\n      if (this._writableState === void 0) {\n        return false;\n      }\n      return this._writableState.destroyed;\n    },\n    set: function set(value) {\n      if (!this._writableState) {\n        return;\n      }\n      this._writableState.destroyed = value;\n    }\n  });\n  Writable.prototype.destroy = destroyImpl.destroy;\n  Writable.prototype._undestroy = destroyImpl.undestroy;\n  Writable.prototype._destroy = function(err, cb) {\n    cb(err);\n  };\n  return exports$8$2;\n}\nvar exports$7$2 = {};\nvar _dewExec$7$2 = false;\nfunction dew$7$2() {\n  if (_dewExec$7$2) return exports$7$2;\n  _dewExec$7$2 = true;\n  var process3 = T$1;\n  var objectKeys = Object.keys || function(obj) {\n    var keys2 = [];\n    for (var key in obj) {\n      keys2.push(key);\n    }\n    return keys2;\n  };\n  exports$7$2 = Duplex;\n  var Readable2 = dew$3$2();\n  var Writable = dew$8$2();\n  dew$f$2()(Duplex, Readable2);\n  {\n    var keys = objectKeys(Writable.prototype);\n    for (var v5 = 0; v5 < keys.length; v5++) {\n      var method = keys[v5];\n      if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n    }\n  }\n  function Duplex(options) {\n    if (!(this instanceof Duplex)) return new Duplex(options);\n    Readable2.call(this, options);\n    Writable.call(this, options);\n    this.allowHalfOpen = true;\n    if (options) {\n      if (options.readable === false) this.readable = false;\n      if (options.writable === false) this.writable = false;\n      if (options.allowHalfOpen === false) {\n        this.allowHalfOpen = false;\n        this.once(\"end\", onend);\n      }\n    }\n  }\n  Object.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 get() {\n      return this._writableState.highWaterMark;\n    }\n  });\n  Object.defineProperty(Duplex.prototype, \"writableBuffer\", {\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 get() {\n      return this._writableState && this._writableState.getBuffer();\n    }\n  });\n  Object.defineProperty(Duplex.prototype, \"writableLength\", {\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 get() {\n      return this._writableState.length;\n    }\n  });\n  function onend() {\n    if (this._writableState.ended) return;\n    process3.nextTick(onEndNT, this);\n  }\n  function onEndNT(self2) {\n    self2.end();\n  }\n  Object.defineProperty(Duplex.prototype, \"destroyed\", {\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 get() {\n      if (this._readableState === void 0 || this._writableState === void 0) {\n        return false;\n      }\n      return this._readableState.destroyed && this._writableState.destroyed;\n    },\n    set: function set(value) {\n      if (this._readableState === void 0 || this._writableState === void 0) {\n        return;\n      }\n      this._readableState.destroyed = value;\n      this._writableState.destroyed = value;\n    }\n  });\n  return exports$7$2;\n}\nvar exports$6$2 = {};\nvar _dewExec$6$2 = false;\nfunction dew$6$2() {\n  if (_dewExec$6$2) return exports$6$2;\n  _dewExec$6$2 = true;\n  var ERR_STREAM_PREMATURE_CLOSE = dew$b$2().codes.ERR_STREAM_PREMATURE_CLOSE;\n  function once2(callback) {\n    var called = false;\n    return function() {\n      if (called) return;\n      called = true;\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      callback.apply(this, args);\n    };\n  }\n  function noop2() {\n  }\n  function isRequest(stream2) {\n    return stream2.setHeader && typeof stream2.abort === \"function\";\n  }\n  function eos(stream2, opts, callback) {\n    if (typeof opts === \"function\") return eos(stream2, null, opts);\n    if (!opts) opts = {};\n    callback = once2(callback || noop2);\n    var readable = opts.readable || opts.readable !== false && stream2.readable;\n    var writable = opts.writable || opts.writable !== false && stream2.writable;\n    var onlegacyfinish = function onlegacyfinish2() {\n      if (!stream2.writable) onfinish();\n    };\n    var writableEnded = stream2._writableState && stream2._writableState.finished;\n    var onfinish = function onfinish2() {\n      writable = false;\n      writableEnded = true;\n      if (!readable) callback.call(stream2);\n    };\n    var readableEnded = stream2._readableState && stream2._readableState.endEmitted;\n    var onend = function onend2() {\n      readable = false;\n      readableEnded = true;\n      if (!writable) callback.call(stream2);\n    };\n    var onerror = function onerror2(err) {\n      callback.call(stream2, err);\n    };\n    var onclose = function onclose2() {\n      var err;\n      if (readable && !readableEnded) {\n        if (!stream2._readableState || !stream2._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n        return callback.call(stream2, err);\n      }\n      if (writable && !writableEnded) {\n        if (!stream2._writableState || !stream2._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n        return callback.call(stream2, err);\n      }\n    };\n    var onrequest = function onrequest2() {\n      stream2.req.on(\"finish\", onfinish);\n    };\n    if (isRequest(stream2)) {\n      stream2.on(\"complete\", onfinish);\n      stream2.on(\"abort\", onclose);\n      if (stream2.req) onrequest();\n      else stream2.on(\"request\", onrequest);\n    } else if (writable && !stream2._writableState) {\n      stream2.on(\"end\", onlegacyfinish);\n      stream2.on(\"close\", onlegacyfinish);\n    }\n    stream2.on(\"end\", onend);\n    stream2.on(\"finish\", onfinish);\n    if (opts.error !== false) stream2.on(\"error\", onerror);\n    stream2.on(\"close\", onclose);\n    return function() {\n      stream2.removeListener(\"complete\", onfinish);\n      stream2.removeListener(\"abort\", onclose);\n      stream2.removeListener(\"request\", onrequest);\n      if (stream2.req) stream2.req.removeListener(\"finish\", onfinish);\n      stream2.removeListener(\"end\", onlegacyfinish);\n      stream2.removeListener(\"close\", onlegacyfinish);\n      stream2.removeListener(\"finish\", onfinish);\n      stream2.removeListener(\"end\", onend);\n      stream2.removeListener(\"error\", onerror);\n      stream2.removeListener(\"close\", onclose);\n    };\n  }\n  exports$6$2 = eos;\n  return exports$6$2;\n}\nvar exports$5$2 = {};\nvar _dewExec$5$2 = false;\nfunction dew$5$2() {\n  if (_dewExec$5$2) return exports$5$2;\n  _dewExec$5$2 = true;\n  var process3 = T$1;\n  var _Object$setPrototypeO;\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n    return obj;\n  }\n  var finished = dew$6$2();\n  var kLastResolve = /* @__PURE__ */ Symbol(\"lastResolve\");\n  var kLastReject = /* @__PURE__ */ Symbol(\"lastReject\");\n  var kError = /* @__PURE__ */ Symbol(\"error\");\n  var kEnded = /* @__PURE__ */ Symbol(\"ended\");\n  var kLastPromise = /* @__PURE__ */ Symbol(\"lastPromise\");\n  var kHandlePromise = /* @__PURE__ */ Symbol(\"handlePromise\");\n  var kStream = /* @__PURE__ */ Symbol(\"stream\");\n  function createIterResult2(value, done) {\n    return {\n      value,\n      done\n    };\n  }\n  function readAndResolve(iter) {\n    var resolve = iter[kLastResolve];\n    if (resolve !== null) {\n      var data = iter[kStream].read();\n      if (data !== null) {\n        iter[kLastPromise] = null;\n        iter[kLastResolve] = null;\n        iter[kLastReject] = null;\n        resolve(createIterResult2(data, false));\n      }\n    }\n  }\n  function onReadable(iter) {\n    process3.nextTick(readAndResolve, iter);\n  }\n  function wrapForNext(lastPromise, iter) {\n    return function(resolve, reject) {\n      lastPromise.then(function() {\n        if (iter[kEnded]) {\n          resolve(createIterResult2(void 0, true));\n          return;\n        }\n        iter[kHandlePromise](resolve, reject);\n      }, reject);\n    };\n  }\n  var AsyncIteratorPrototype = Object.getPrototypeOf(function() {\n  });\n  var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n    get stream() {\n      return this[kStream];\n    },\n    next: function next() {\n      var _this = this;\n      var error = this[kError];\n      if (error !== null) {\n        return Promise.reject(error);\n      }\n      if (this[kEnded]) {\n        return Promise.resolve(createIterResult2(void 0, true));\n      }\n      if (this[kStream].destroyed) {\n        return new Promise(function(resolve, reject) {\n          process3.nextTick(function() {\n            if (_this[kError]) {\n              reject(_this[kError]);\n            } else {\n              resolve(createIterResult2(void 0, true));\n            }\n          });\n        });\n      }\n      var lastPromise = this[kLastPromise];\n      var promise;\n      if (lastPromise) {\n        promise = new Promise(wrapForNext(lastPromise, this));\n      } else {\n        var data = this[kStream].read();\n        if (data !== null) {\n          return Promise.resolve(createIterResult2(data, false));\n        }\n        promise = new Promise(this[kHandlePromise]);\n      }\n      this[kLastPromise] = promise;\n      return promise;\n    }\n  }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function() {\n    return this;\n  }), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n    var _this2 = this;\n    return new Promise(function(resolve, reject) {\n      _this2[kStream].destroy(null, function(err) {\n        if (err) {\n          reject(err);\n          return;\n        }\n        resolve(createIterResult2(void 0, true));\n      });\n    });\n  }), _Object$setPrototypeO), AsyncIteratorPrototype);\n  var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator2(stream2) {\n    var _Object$create;\n    var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n      value: stream2,\n      writable: true\n    }), _defineProperty(_Object$create, kLastResolve, {\n      value: null,\n      writable: true\n    }), _defineProperty(_Object$create, kLastReject, {\n      value: null,\n      writable: true\n    }), _defineProperty(_Object$create, kError, {\n      value: null,\n      writable: true\n    }), _defineProperty(_Object$create, kEnded, {\n      value: stream2._readableState.endEmitted,\n      writable: true\n    }), _defineProperty(_Object$create, kHandlePromise, {\n      value: function value(resolve, reject) {\n        var data = iterator[kStream].read();\n        if (data) {\n          iterator[kLastPromise] = null;\n          iterator[kLastResolve] = null;\n          iterator[kLastReject] = null;\n          resolve(createIterResult2(data, false));\n        } else {\n          iterator[kLastResolve] = resolve;\n          iterator[kLastReject] = reject;\n        }\n      },\n      writable: true\n    }), _Object$create));\n    iterator[kLastPromise] = null;\n    finished(stream2, function(err) {\n      if (err && err.code !== \"ERR_STREAM_PREMATURE_CLOSE\") {\n        var reject = iterator[kLastReject];\n        if (reject !== null) {\n          iterator[kLastPromise] = null;\n          iterator[kLastResolve] = null;\n          iterator[kLastReject] = null;\n          reject(err);\n        }\n        iterator[kError] = err;\n        return;\n      }\n      var resolve = iterator[kLastResolve];\n      if (resolve !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult2(void 0, true));\n      }\n      iterator[kEnded] = true;\n    });\n    stream2.on(\"readable\", onReadable.bind(null, iterator));\n    return iterator;\n  };\n  exports$5$2 = createReadableStreamAsyncIterator;\n  return exports$5$2;\n}\nvar exports$4$2 = {};\nvar _dewExec$4$2 = false;\nfunction dew$4$2() {\n  if (_dewExec$4$2) return exports$4$2;\n  _dewExec$4$2 = true;\n  exports$4$2 = function() {\n    throw new Error(\"Readable.from is not available in the browser\");\n  };\n  return exports$4$2;\n}\nvar exports$3$2 = {};\nvar _dewExec$3$2 = false;\nvar _global$M = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$3$2() {\n  if (_dewExec$3$2) return exports$3$2;\n  _dewExec$3$2 = true;\n  var process3 = T$1;\n  exports$3$2 = Readable2;\n  var Duplex;\n  Readable2.ReadableState = ReadableState;\n  y.EventEmitter;\n  var EElistenerCount = function EElistenerCount2(emitter, type) {\n    return emitter.listeners(type).length;\n  };\n  var Stream = dew$e$2();\n  var Buffer = e$1$1.Buffer;\n  var OurUint8Array = _global$M.Uint8Array || function() {\n  };\n  function _uint8ArrayToBuffer(chunk) {\n    return Buffer.from(chunk);\n  }\n  function _isUint8Array(obj) {\n    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n  }\n  var debugUtil = X;\n  var debug;\n  if (debugUtil && debugUtil.debuglog) {\n    debug = debugUtil.debuglog(\"stream\");\n  } else {\n    debug = function debug2() {\n    };\n  }\n  var BufferList = dew$d$2();\n  var destroyImpl = dew$c$2();\n  var _require = dew$a$2(), getHighWaterMark = _require.getHighWaterMark;\n  var _require$codes = dew$b$2().codes, ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n  var StringDecoder2;\n  var createReadableStreamAsyncIterator;\n  var from;\n  dew$f$2()(Readable2, Stream);\n  var errorOrDestroy = destroyImpl.errorOrDestroy;\n  var kProxyEvents = [\"error\", \"close\", \"destroy\", \"pause\", \"resume\"];\n  function prependListener2(emitter, event, fn) {\n    if (typeof emitter.prependListener === \"function\") return emitter.prependListener(event, fn);\n    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);\n    else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);\n    else emitter._events[event] = [fn, emitter._events[event]];\n  }\n  function ReadableState(options, stream2, isDuplex) {\n    Duplex = Duplex || dew$7$2();\n    options = options || {};\n    if (typeof isDuplex !== \"boolean\") isDuplex = stream2 instanceof Duplex;\n    this.objectMode = !!options.objectMode;\n    if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n    this.highWaterMark = getHighWaterMark(this, options, \"readableHighWaterMark\", isDuplex);\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    this.sync = true;\n    this.needReadable = false;\n    this.emittedReadable = false;\n    this.readableListening = false;\n    this.resumeScheduled = false;\n    this.paused = true;\n    this.emitClose = options.emitClose !== false;\n    this.autoDestroy = !!options.autoDestroy;\n    this.destroyed = false;\n    this.defaultEncoding = options.defaultEncoding || \"utf8\";\n    this.awaitDrain = 0;\n    this.readingMore = false;\n    this.decoder = null;\n    this.encoding = null;\n    if (options.encoding) {\n      if (!StringDecoder2) StringDecoder2 = e$12.StringDecoder;\n      this.decoder = new StringDecoder2(options.encoding);\n      this.encoding = options.encoding;\n    }\n  }\n  function Readable2(options) {\n    Duplex = Duplex || dew$7$2();\n    if (!(this instanceof Readable2)) return new Readable2(options);\n    var isDuplex = this instanceof Duplex;\n    this._readableState = new ReadableState(options, this, isDuplex);\n    this.readable = true;\n    if (options) {\n      if (typeof options.read === \"function\") this._read = options.read;\n      if (typeof options.destroy === \"function\") this._destroy = options.destroy;\n    }\n    Stream.call(this);\n  }\n  Object.defineProperty(Readable2.prototype, \"destroyed\", {\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 get() {\n      if (this._readableState === void 0) {\n        return false;\n      }\n      return this._readableState.destroyed;\n    },\n    set: function set(value) {\n      if (!this._readableState) {\n        return;\n      }\n      this._readableState.destroyed = value;\n    }\n  });\n  Readable2.prototype.destroy = destroyImpl.destroy;\n  Readable2.prototype._undestroy = destroyImpl.undestroy;\n  Readable2.prototype._destroy = function(err, cb) {\n    cb(err);\n  };\n  Readable2.prototype.push = function(chunk, encoding) {\n    var state = this._readableState;\n    var skipChunkCheck;\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    return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n  };\n  Readable2.prototype.unshift = function(chunk) {\n    return readableAddChunk(this, chunk, null, true, false);\n  };\n  function readableAddChunk(stream2, chunk, encoding, addToFront, skipChunkCheck) {\n    debug(\"readableAddChunk\", chunk);\n    var state = stream2._readableState;\n    if (chunk === null) {\n      state.reading = false;\n      onEofChunk(stream2, state);\n    } else {\n      var er;\n      if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n      if (er) {\n        errorOrDestroy(stream2, 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        if (addToFront) {\n          if (state.endEmitted) errorOrDestroy(stream2, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());\n          else addChunk(stream2, state, chunk, true);\n        } else if (state.ended) {\n          errorOrDestroy(stream2, new ERR_STREAM_PUSH_AFTER_EOF());\n        } else if (state.destroyed) {\n          return false;\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(stream2, state, chunk, false);\n            else maybeReadMore(stream2, state);\n          } else {\n            addChunk(stream2, state, chunk, false);\n          }\n        }\n      } else if (!addToFront) {\n        state.reading = false;\n        maybeReadMore(stream2, state);\n      }\n    }\n    return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n  }\n  function addChunk(stream2, state, chunk, addToFront) {\n    if (state.flowing && state.length === 0 && !state.sync) {\n      state.awaitDrain = 0;\n      stream2.emit(\"data\", chunk);\n    } else {\n      state.length += state.objectMode ? 1 : chunk.length;\n      if (addToFront) state.buffer.unshift(chunk);\n      else state.buffer.push(chunk);\n      if (state.needReadable) emitReadable(stream2);\n    }\n    maybeReadMore(stream2, state);\n  }\n  function chunkInvalid(state, chunk) {\n    var er;\n    if (!_isUint8Array(chunk) && typeof chunk !== \"string\" && chunk !== void 0 && !state.objectMode) {\n      er = new ERR_INVALID_ARG_TYPE(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], chunk);\n    }\n    return er;\n  }\n  Readable2.prototype.isPaused = function() {\n    return this._readableState.flowing === false;\n  };\n  Readable2.prototype.setEncoding = function(enc) {\n    if (!StringDecoder2) StringDecoder2 = e$12.StringDecoder;\n    var decoder = new StringDecoder2(enc);\n    this._readableState.decoder = decoder;\n    this._readableState.encoding = this._readableState.decoder.encoding;\n    var p5 = this._readableState.buffer.head;\n    var content = \"\";\n    while (p5 !== null) {\n      content += decoder.write(p5.data);\n      p5 = p5.next;\n    }\n    this._readableState.buffer.clear();\n    if (content !== \"\") this._readableState.buffer.push(content);\n    this._readableState.length = content.length;\n    return this;\n  };\n  var MAX_HWM = 1073741824;\n  function computeNewHighWaterMark(n5) {\n    if (n5 >= MAX_HWM) {\n      n5 = MAX_HWM;\n    } else {\n      n5--;\n      n5 |= n5 >>> 1;\n      n5 |= n5 >>> 2;\n      n5 |= n5 >>> 4;\n      n5 |= n5 >>> 8;\n      n5 |= n5 >>> 16;\n      n5++;\n    }\n    return n5;\n  }\n  function howMuchToRead(n5, state) {\n    if (n5 <= 0 || state.length === 0 && state.ended) return 0;\n    if (state.objectMode) return 1;\n    if (n5 !== n5) {\n      if (state.flowing && state.length) return state.buffer.head.data.length;\n      else return state.length;\n    }\n    if (n5 > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n5);\n    if (n5 <= state.length) return n5;\n    if (!state.ended) {\n      state.needReadable = true;\n      return 0;\n    }\n    return state.length;\n  }\n  Readable2.prototype.read = function(n5) {\n    debug(\"read\", n5);\n    n5 = parseInt(n5, 10);\n    var state = this._readableState;\n    var nOrig = n5;\n    if (n5 !== 0) state.emittedReadable = false;\n    if (n5 === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n      debug(\"read: emitReadable\", state.length, state.ended);\n      if (state.length === 0 && state.ended) endReadable(this);\n      else emitReadable(this);\n      return null;\n    }\n    n5 = howMuchToRead(n5, state);\n    if (n5 === 0 && state.ended) {\n      if (state.length === 0) endReadable(this);\n      return null;\n    }\n    var doRead = state.needReadable;\n    debug(\"need readable\", doRead);\n    if (state.length === 0 || state.length - n5 < state.highWaterMark) {\n      doRead = true;\n      debug(\"length less than watermark\", doRead);\n    }\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 (state.length === 0) state.needReadable = true;\n      this._read(state.highWaterMark);\n      state.sync = false;\n      if (!state.reading) n5 = howMuchToRead(nOrig, state);\n    }\n    var ret;\n    if (n5 > 0) ret = fromList(n5, state);\n    else ret = null;\n    if (ret === null) {\n      state.needReadable = state.length <= state.highWaterMark;\n      n5 = 0;\n    } else {\n      state.length -= n5;\n      state.awaitDrain = 0;\n    }\n    if (state.length === 0) {\n      if (!state.ended) state.needReadable = true;\n      if (nOrig !== n5 && state.ended) endReadable(this);\n    }\n    if (ret !== null) this.emit(\"data\", ret);\n    return ret;\n  };\n  function onEofChunk(stream2, state) {\n    debug(\"onEofChunk\");\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    if (state.sync) {\n      emitReadable(stream2);\n    } else {\n      state.needReadable = false;\n      if (!state.emittedReadable) {\n        state.emittedReadable = true;\n        emitReadable_(stream2);\n      }\n    }\n  }\n  function emitReadable(stream2) {\n    var state = stream2._readableState;\n    debug(\"emitReadable\", state.needReadable, state.emittedReadable);\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      debug(\"emitReadable\", state.flowing);\n      state.emittedReadable = true;\n      process3.nextTick(emitReadable_, stream2);\n    }\n  }\n  function emitReadable_(stream2) {\n    var state = stream2._readableState;\n    debug(\"emitReadable_\", state.destroyed, state.length, state.ended);\n    if (!state.destroyed && (state.length || state.ended)) {\n      stream2.emit(\"readable\");\n      state.emittedReadable = false;\n    }\n    state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n    flow(stream2);\n  }\n  function maybeReadMore(stream2, state) {\n    if (!state.readingMore) {\n      state.readingMore = true;\n      process3.nextTick(maybeReadMore_, stream2, state);\n    }\n  }\n  function maybeReadMore_(stream2, state) {\n    while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n      var len = state.length;\n      debug(\"maybeReadMore read 0\");\n      stream2.read(0);\n      if (len === state.length)\n        break;\n    }\n    state.readingMore = false;\n  }\n  Readable2.prototype._read = function(n5) {\n    errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED(\"_read()\"));\n  };\n  Readable2.prototype.pipe = function(dest, pipeOpts) {\n    var src = this;\n    var state = this._readableState;\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    var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process3.stdout && dest !== process3.stderr;\n    var endFn = doEnd ? onend : unpipe;\n    if (state.endEmitted) process3.nextTick(endFn);\n    else src.once(\"end\", endFn);\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    function onend() {\n      debug(\"onend\");\n      dest.end();\n    }\n    var ondrain = pipeOnDrain(src);\n    dest.on(\"drain\", ondrain);\n    var cleanedUp = false;\n    function cleanup() {\n      debug(\"cleanup\");\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      cleanedUp = true;\n      if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n    }\n    src.on(\"data\", ondata);\n    function ondata(chunk) {\n      debug(\"ondata\");\n      var ret = dest.write(chunk);\n      debug(\"dest.write\", ret);\n      if (ret === false) {\n        if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf3(state.pipes, dest) !== -1) && !cleanedUp) {\n          debug(\"false write response, pause\", state.awaitDrain);\n          state.awaitDrain++;\n        }\n        src.pause();\n      }\n    }\n    function onerror(er) {\n      debug(\"onerror\", er);\n      unpipe();\n      dest.removeListener(\"error\", onerror);\n      if (EElistenerCount(dest, \"error\") === 0) errorOrDestroy(dest, er);\n    }\n    prependListener2(dest, \"error\", onerror);\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    function unpipe() {\n      debug(\"unpipe\");\n      src.unpipe(dest);\n    }\n    dest.emit(\"pipe\", src);\n    if (!state.flowing) {\n      debug(\"pipe resume\");\n      src.resume();\n    }\n    return dest;\n  };\n  function pipeOnDrain(src) {\n    return function pipeOnDrainFunctionResult() {\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  Readable2.prototype.unpipe = function(dest) {\n    var state = this._readableState;\n    var unpipeInfo = {\n      hasUnpiped: false\n    };\n    if (state.pipesCount === 0) return this;\n    if (state.pipesCount === 1) {\n      if (dest && dest !== state.pipes) return this;\n      if (!dest) dest = state.pipes;\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    if (!dest) {\n      var dests = state.pipes;\n      var len = state.pipesCount;\n      state.pipes = null;\n      state.pipesCount = 0;\n      state.flowing = false;\n      for (var i5 = 0; i5 < len; i5++) {\n        dests[i5].emit(\"unpipe\", this, {\n          hasUnpiped: false\n        });\n      }\n      return this;\n    }\n    var index = indexOf3(state.pipes, dest);\n    if (index === -1) return this;\n    state.pipes.splice(index, 1);\n    state.pipesCount -= 1;\n    if (state.pipesCount === 1) state.pipes = state.pipes[0];\n    dest.emit(\"unpipe\", this, unpipeInfo);\n    return this;\n  };\n  Readable2.prototype.on = function(ev, fn) {\n    var res = Stream.prototype.on.call(this, ev, fn);\n    var state = this._readableState;\n    if (ev === \"data\") {\n      state.readableListening = this.listenerCount(\"readable\") > 0;\n      if (state.flowing !== false) this.resume();\n    } else if (ev === \"readable\") {\n      if (!state.endEmitted && !state.readableListening) {\n        state.readableListening = state.needReadable = true;\n        state.flowing = false;\n        state.emittedReadable = false;\n        debug(\"on readable\", state.length, state.reading);\n        if (state.length) {\n          emitReadable(this);\n        } else if (!state.reading) {\n          process3.nextTick(nReadingNextTick, this);\n        }\n      }\n    }\n    return res;\n  };\n  Readable2.prototype.addListener = Readable2.prototype.on;\n  Readable2.prototype.removeListener = function(ev, fn) {\n    var res = Stream.prototype.removeListener.call(this, ev, fn);\n    if (ev === \"readable\") {\n      process3.nextTick(updateReadableListening, this);\n    }\n    return res;\n  };\n  Readable2.prototype.removeAllListeners = function(ev) {\n    var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n    if (ev === \"readable\" || ev === void 0) {\n      process3.nextTick(updateReadableListening, this);\n    }\n    return res;\n  };\n  function updateReadableListening(self2) {\n    var state = self2._readableState;\n    state.readableListening = self2.listenerCount(\"readable\") > 0;\n    if (state.resumeScheduled && !state.paused) {\n      state.flowing = true;\n    } else if (self2.listenerCount(\"data\") > 0) {\n      self2.resume();\n    }\n  }\n  function nReadingNextTick(self2) {\n    debug(\"readable nexttick read 0\");\n    self2.read(0);\n  }\n  Readable2.prototype.resume = function() {\n    var state = this._readableState;\n    if (!state.flowing) {\n      debug(\"resume\");\n      state.flowing = !state.readableListening;\n      resume(this, state);\n    }\n    state.paused = false;\n    return this;\n  };\n  function resume(stream2, state) {\n    if (!state.resumeScheduled) {\n      state.resumeScheduled = true;\n      process3.nextTick(resume_, stream2, state);\n    }\n  }\n  function resume_(stream2, state) {\n    debug(\"resume\", state.reading);\n    if (!state.reading) {\n      stream2.read(0);\n    }\n    state.resumeScheduled = false;\n    stream2.emit(\"resume\");\n    flow(stream2);\n    if (state.flowing && !state.reading) stream2.read(0);\n  }\n  Readable2.prototype.pause = function() {\n    debug(\"call pause flowing=%j\", this._readableState.flowing);\n    if (this._readableState.flowing !== false) {\n      debug(\"pause\");\n      this._readableState.flowing = false;\n      this.emit(\"pause\");\n    }\n    this._readableState.paused = true;\n    return this;\n  };\n  function flow(stream2) {\n    var state = stream2._readableState;\n    debug(\"flow\", state.flowing);\n    while (state.flowing && stream2.read() !== null) {\n    }\n  }\n  Readable2.prototype.wrap = function(stream2) {\n    var _this = this;\n    var state = this._readableState;\n    var paused = false;\n    stream2.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      _this.push(null);\n    });\n    stream2.on(\"data\", function(chunk) {\n      debug(\"wrapped data\");\n      if (state.decoder) chunk = state.decoder.write(chunk);\n      if (state.objectMode && (chunk === null || chunk === void 0)) return;\n      else if (!state.objectMode && (!chunk || !chunk.length)) return;\n      var ret = _this.push(chunk);\n      if (!ret) {\n        paused = true;\n        stream2.pause();\n      }\n    });\n    for (var i5 in stream2) {\n      if (this[i5] === void 0 && typeof stream2[i5] === \"function\") {\n        this[i5] = /* @__PURE__ */ (function methodWrap(method) {\n          return function methodWrapReturnFunction() {\n            return stream2[method].apply(stream2, arguments);\n          };\n        })(i5);\n      }\n    }\n    for (var n5 = 0; n5 < kProxyEvents.length; n5++) {\n      stream2.on(kProxyEvents[n5], this.emit.bind(this, kProxyEvents[n5]));\n    }\n    this._read = function(n6) {\n      debug(\"wrapped _read\", n6);\n      if (paused) {\n        paused = false;\n        stream2.resume();\n      }\n    };\n    return this;\n  };\n  if (typeof Symbol === \"function\") {\n    Readable2.prototype[Symbol.asyncIterator] = function() {\n      if (createReadableStreamAsyncIterator === void 0) {\n        createReadableStreamAsyncIterator = dew$5$2();\n      }\n      return createReadableStreamAsyncIterator(this);\n    };\n  }\n  Object.defineProperty(Readable2.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 get() {\n      return this._readableState.highWaterMark;\n    }\n  });\n  Object.defineProperty(Readable2.prototype, \"readableBuffer\", {\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 get() {\n      return this._readableState && this._readableState.buffer;\n    }\n  });\n  Object.defineProperty(Readable2.prototype, \"readableFlowing\", {\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 get() {\n      return this._readableState.flowing;\n    },\n    set: function set(state) {\n      if (this._readableState) {\n        this._readableState.flowing = state;\n      }\n    }\n  });\n  Readable2._fromList = fromList;\n  Object.defineProperty(Readable2.prototype, \"readableLength\", {\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 get() {\n      return this._readableState.length;\n    }\n  });\n  function fromList(n5, state) {\n    if (state.length === 0) return null;\n    var ret;\n    if (state.objectMode) ret = state.buffer.shift();\n    else if (!n5 || n5 >= state.length) {\n      if (state.decoder) ret = state.buffer.join(\"\");\n      else if (state.buffer.length === 1) ret = state.buffer.first();\n      else ret = state.buffer.concat(state.length);\n      state.buffer.clear();\n    } else {\n      ret = state.buffer.consume(n5, state.decoder);\n    }\n    return ret;\n  }\n  function endReadable(stream2) {\n    var state = stream2._readableState;\n    debug(\"endReadable\", state.endEmitted);\n    if (!state.endEmitted) {\n      state.ended = true;\n      process3.nextTick(endReadableNT, state, stream2);\n    }\n  }\n  function endReadableNT(state, stream2) {\n    debug(\"endReadableNT\", state.endEmitted, state.length);\n    if (!state.endEmitted && state.length === 0) {\n      state.endEmitted = true;\n      stream2.readable = false;\n      stream2.emit(\"end\");\n      if (state.autoDestroy) {\n        var wState = stream2._writableState;\n        if (!wState || wState.autoDestroy && wState.finished) {\n          stream2.destroy();\n        }\n      }\n    }\n  }\n  if (typeof Symbol === \"function\") {\n    Readable2.from = function(iterable, opts) {\n      if (from === void 0) {\n        from = dew$4$2();\n      }\n      return from(Readable2, iterable, opts);\n    };\n  }\n  function indexOf3(xs, x4) {\n    for (var i5 = 0, l5 = xs.length; i5 < l5; i5++) {\n      if (xs[i5] === x4) return i5;\n    }\n    return -1;\n  }\n  return exports$3$2;\n}\nvar exports$2$2 = {};\nvar _dewExec$2$2 = false;\nfunction dew$2$2() {\n  if (_dewExec$2$2) return exports$2$2;\n  _dewExec$2$2 = true;\n  exports$2$2 = Transform;\n  var _require$codes = dew$b$2().codes, ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n  var Duplex = dew$7$2();\n  dew$f$2()(Transform, Duplex);\n  function afterTransform(er, data) {\n    var ts = this._transformState;\n    ts.transforming = false;\n    var cb = ts.writecb;\n    if (cb === null) {\n      return this.emit(\"error\", new ERR_MULTIPLE_CALLBACK());\n    }\n    ts.writechunk = null;\n    ts.writecb = null;\n    if (data != null)\n      this.push(data);\n    cb(er);\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  function Transform(options) {\n    if (!(this instanceof Transform)) return new Transform(options);\n    Duplex.call(this, options);\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    this._readableState.needReadable = true;\n    this._readableState.sync = false;\n    if (options) {\n      if (typeof options.transform === \"function\") this._transform = options.transform;\n      if (typeof options.flush === \"function\") this._flush = options.flush;\n    }\n    this.on(\"prefinish\", prefinish);\n  }\n  function prefinish() {\n    var _this = this;\n    if (typeof this._flush === \"function\" && !this._readableState.destroyed) {\n      this._flush(function(er, data) {\n        done(_this, er, data);\n      });\n    } else {\n      done(this, null, null);\n    }\n  }\n  Transform.prototype.push = function(chunk, encoding) {\n    this._transformState.needTransform = false;\n    return Duplex.prototype.push.call(this, chunk, encoding);\n  };\n  Transform.prototype._transform = function(chunk, encoding, cb) {\n    cb(new ERR_METHOD_NOT_IMPLEMENTED(\"_transform()\"));\n  };\n  Transform.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  Transform.prototype._read = function(n5) {\n    var ts = this._transformState;\n    if (ts.writechunk !== null && !ts.transforming) {\n      ts.transforming = true;\n      this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n    } else {\n      ts.needTransform = true;\n    }\n  };\n  Transform.prototype._destroy = function(err, cb) {\n    Duplex.prototype._destroy.call(this, err, function(err2) {\n      cb(err2);\n    });\n  };\n  function done(stream2, er, data) {\n    if (er) return stream2.emit(\"error\", er);\n    if (data != null)\n      stream2.push(data);\n    if (stream2._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n    if (stream2._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n    return stream2.push(null);\n  }\n  return exports$2$2;\n}\nvar exports$1$2 = {};\nvar _dewExec$1$2 = false;\nfunction dew$1$2() {\n  if (_dewExec$1$2) return exports$1$2;\n  _dewExec$1$2 = true;\n  exports$1$2 = PassThrough;\n  var Transform = dew$2$2();\n  dew$f$2()(PassThrough, Transform);\n  function PassThrough(options) {\n    if (!(this instanceof PassThrough)) return new PassThrough(options);\n    Transform.call(this, options);\n  }\n  PassThrough.prototype._transform = function(chunk, encoding, cb) {\n    cb(null, chunk);\n  };\n  return exports$1$2;\n}\nvar exports$2C = {};\nvar _dewExec$2B = false;\nfunction dew$2B() {\n  if (_dewExec$2B) return exports$2C;\n  _dewExec$2B = true;\n  var eos;\n  function once2(callback) {\n    var called = false;\n    return function() {\n      if (called) return;\n      called = true;\n      callback.apply(void 0, arguments);\n    };\n  }\n  var _require$codes = dew$b$2().codes, ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n  function noop2(err) {\n    if (err) throw err;\n  }\n  function isRequest(stream2) {\n    return stream2.setHeader && typeof stream2.abort === \"function\";\n  }\n  function destroyer(stream2, reading, writing, callback) {\n    callback = once2(callback);\n    var closed = false;\n    stream2.on(\"close\", function() {\n      closed = true;\n    });\n    if (eos === void 0) eos = dew$6$2();\n    eos(stream2, {\n      readable: reading,\n      writable: writing\n    }, function(err) {\n      if (err) return callback(err);\n      closed = true;\n      callback();\n    });\n    var destroyed = false;\n    return function(err) {\n      if (closed) return;\n      if (destroyed) return;\n      destroyed = true;\n      if (isRequest(stream2)) return stream2.abort();\n      if (typeof stream2.destroy === \"function\") return stream2.destroy();\n      callback(err || new ERR_STREAM_DESTROYED(\"pipe\"));\n    };\n  }\n  function call(fn) {\n    fn();\n  }\n  function pipe(from, to) {\n    return from.pipe(to);\n  }\n  function popCallback(streams) {\n    if (!streams.length) return noop2;\n    if (typeof streams[streams.length - 1] !== \"function\") return noop2;\n    return streams.pop();\n  }\n  function pipeline() {\n    for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n      streams[_key] = arguments[_key];\n    }\n    var callback = popCallback(streams);\n    if (Array.isArray(streams[0])) streams = streams[0];\n    if (streams.length < 2) {\n      throw new ERR_MISSING_ARGS(\"streams\");\n    }\n    var error;\n    var destroys = streams.map(function(stream2, i5) {\n      var reading = i5 < streams.length - 1;\n      var writing = i5 > 0;\n      return destroyer(stream2, reading, writing, function(err) {\n        if (!error) error = err;\n        if (err) destroys.forEach(call);\n        if (reading) return;\n        destroys.forEach(call);\n        callback(error);\n      });\n    });\n    return streams.reduce(pipe);\n  }\n  exports$2C = pipeline;\n  return exports$2C;\n}\nvar exports$2B = {};\nvar _dewExec$2A = false;\nvar _global$L = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2A() {\n  if (_dewExec$2A) return exports$2B;\n  _dewExec$2A = true;\n  exports$2B = Stream;\n  var EE = y.EventEmitter;\n  var inherits = dew$f$2();\n  inherits(Stream, EE);\n  Stream.Readable = dew$3$2();\n  Stream.Writable = dew$8$2();\n  Stream.Duplex = dew$7$2();\n  Stream.Transform = dew$2$2();\n  Stream.PassThrough = dew$1$2();\n  Stream.finished = dew$6$2();\n  Stream.pipeline = dew$2B();\n  Stream.Stream = Stream;\n  function Stream() {\n    EE.call(this || _global$L);\n  }\n  Stream.prototype.pipe = function(dest, options) {\n    var source = this || _global$L;\n    function ondata(chunk) {\n      if (dest.writable) {\n        if (false === dest.write(chunk) && source.pause) {\n          source.pause();\n        }\n      }\n    }\n    source.on(\"data\", ondata);\n    function ondrain() {\n      if (source.readable && source.resume) {\n        source.resume();\n      }\n    }\n    dest.on(\"drain\", ondrain);\n    if (!dest._isStdio && (!options || options.end !== false)) {\n      source.on(\"end\", onend);\n      source.on(\"close\", onclose);\n    }\n    var didOnEnd = false;\n    function onend() {\n      if (didOnEnd) return;\n      didOnEnd = true;\n      dest.end();\n    }\n    function onclose() {\n      if (didOnEnd) return;\n      didOnEnd = true;\n      if (typeof dest.destroy === \"function\") dest.destroy();\n    }\n    function onerror(er) {\n      cleanup();\n      if (EE.listenerCount(this || _global$L, \"error\") === 0) {\n        throw er;\n      }\n    }\n    source.on(\"error\", onerror);\n    dest.on(\"error\", onerror);\n    function cleanup() {\n      source.removeListener(\"data\", ondata);\n      dest.removeListener(\"drain\", ondrain);\n      source.removeListener(\"end\", onend);\n      source.removeListener(\"close\", onclose);\n      source.removeListener(\"error\", onerror);\n      dest.removeListener(\"error\", onerror);\n      source.removeListener(\"end\", cleanup);\n      source.removeListener(\"close\", cleanup);\n      dest.removeListener(\"close\", cleanup);\n    }\n    source.on(\"end\", cleanup);\n    source.on(\"close\", cleanup);\n    dest.on(\"close\", cleanup);\n    dest.emit(\"pipe\", source);\n    return dest;\n  };\n  return exports$2B;\n}\nvar stream = dew$2A();\nstream.Readable;\nstream.Writable;\nstream.Duplex;\nstream.Transform;\nstream.PassThrough;\nstream.finished;\nstream.pipeline;\nstream.Stream;\n({\n  finished: promisify(stream.finished),\n  pipeline: promisify(stream.pipeline)\n});\nvar exports$2A = {};\nvar _dewExec$2z = false;\nvar _global$K = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2z() {\n  if (_dewExec$2z) return exports$2A;\n  _dewExec$2z = true;\n  var Buffer = dew$2P().Buffer;\n  var Transform = stream.Transform;\n  var StringDecoder2 = e$12.StringDecoder;\n  var inherits = dew$f();\n  function CipherBase(hashMode) {\n    Transform.call(this || _global$K);\n    (this || _global$K).hashMode = typeof hashMode === \"string\";\n    if ((this || _global$K).hashMode) {\n      (this || _global$K)[hashMode] = (this || _global$K)._finalOrDigest;\n    } else {\n      (this || _global$K).final = (this || _global$K)._finalOrDigest;\n    }\n    if ((this || _global$K)._final) {\n      (this || _global$K).__final = (this || _global$K)._final;\n      (this || _global$K)._final = null;\n    }\n    (this || _global$K)._decoder = null;\n    (this || _global$K)._encoding = null;\n  }\n  inherits(CipherBase, Transform);\n  CipherBase.prototype.update = function(data, inputEnc, outputEnc) {\n    if (typeof data === \"string\") {\n      data = Buffer.from(data, inputEnc);\n    }\n    var outData = this._update(data);\n    if ((this || _global$K).hashMode) return this || _global$K;\n    if (outputEnc) {\n      outData = this._toString(outData, outputEnc);\n    }\n    return outData;\n  };\n  CipherBase.prototype.setAutoPadding = function() {\n  };\n  CipherBase.prototype.getAuthTag = function() {\n    throw new Error(\"trying to get auth tag in unsupported state\");\n  };\n  CipherBase.prototype.setAuthTag = function() {\n    throw new Error(\"trying to set auth tag in unsupported state\");\n  };\n  CipherBase.prototype.setAAD = function() {\n    throw new Error(\"trying to set aad in unsupported state\");\n  };\n  CipherBase.prototype._transform = function(data, _4, next) {\n    var err;\n    try {\n      if ((this || _global$K).hashMode) {\n        this._update(data);\n      } else {\n        this.push(this._update(data));\n      }\n    } catch (e7) {\n      err = e7;\n    } finally {\n      next(err);\n    }\n  };\n  CipherBase.prototype._flush = function(done) {\n    var err;\n    try {\n      this.push(this.__final());\n    } catch (e7) {\n      err = e7;\n    }\n    done(err);\n  };\n  CipherBase.prototype._finalOrDigest = function(outputEnc) {\n    var outData = this.__final() || Buffer.alloc(0);\n    if (outputEnc) {\n      outData = this._toString(outData, outputEnc, true);\n    }\n    return outData;\n  };\n  CipherBase.prototype._toString = function(value, enc, fin) {\n    if (!(this || _global$K)._decoder) {\n      (this || _global$K)._decoder = new StringDecoder2(enc);\n      (this || _global$K)._encoding = enc;\n    }\n    if ((this || _global$K)._encoding !== enc) throw new Error(\"can't switch encodings\");\n    var out = (this || _global$K)._decoder.write(value);\n    if (fin) {\n      out += (this || _global$K)._decoder.end();\n    }\n    return out;\n  };\n  exports$2A = CipherBase;\n  return exports$2A;\n}\nvar exports$2z = {};\nvar _dewExec$2y = false;\nfunction dew$2y() {\n  if (_dewExec$2y) return exports$2z;\n  _dewExec$2y = true;\n  var inherits = dew$f();\n  var MD5 = dew$2L();\n  var RIPEMD160 = dew$2K();\n  var sha = dew$2C();\n  var Base = dew$2z();\n  function Hash2(hash) {\n    Base.call(this, \"digest\");\n    this._hash = hash;\n  }\n  inherits(Hash2, Base);\n  Hash2.prototype._update = function(data) {\n    this._hash.update(data);\n  };\n  Hash2.prototype._final = function() {\n    return this._hash.digest();\n  };\n  exports$2z = function createHash2(alg) {\n    alg = alg.toLowerCase();\n    if (alg === \"md5\") return new MD5();\n    if (alg === \"rmd160\" || alg === \"ripemd160\") return new RIPEMD160();\n    return new Hash2(sha(alg));\n  };\n  return exports$2z;\n}\nvar exports$2y = {};\nvar _dewExec$2x = false;\nfunction dew$2x() {\n  if (_dewExec$2x) return exports$2y;\n  _dewExec$2x = true;\n  var inherits = dew$f();\n  var Buffer = dew$2P().Buffer;\n  var Base = dew$2z();\n  var ZEROS = Buffer.alloc(128);\n  var blocksize = 64;\n  function Hmac2(alg, key) {\n    Base.call(this, \"digest\");\n    if (typeof key === \"string\") {\n      key = Buffer.from(key);\n    }\n    this._alg = alg;\n    this._key = key;\n    if (key.length > blocksize) {\n      key = alg(key);\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n    var opad = this._opad = Buffer.allocUnsafe(blocksize);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    this._hash = [ipad];\n  }\n  inherits(Hmac2, Base);\n  Hmac2.prototype._update = function(data) {\n    this._hash.push(data);\n  };\n  Hmac2.prototype._final = function() {\n    var h5 = this._alg(Buffer.concat(this._hash));\n    return this._alg(Buffer.concat([this._opad, h5]));\n  };\n  exports$2y = Hmac2;\n  return exports$2y;\n}\nvar exports$2x = {};\nvar _dewExec$2w = false;\nfunction dew$2w() {\n  if (_dewExec$2w) return exports$2x;\n  _dewExec$2w = true;\n  var MD5 = dew$2L();\n  exports$2x = function(buffer2) {\n    return new MD5().update(buffer2).digest();\n  };\n  return exports$2x;\n}\nvar exports$2w = {};\nvar _dewExec$2v = false;\nfunction dew$2v() {\n  if (_dewExec$2v) return exports$2w;\n  _dewExec$2v = true;\n  var inherits = dew$f();\n  var Legacy = dew$2x();\n  var Base = dew$2z();\n  var Buffer = dew$2P().Buffer;\n  var md5 = dew$2w();\n  var RIPEMD160 = dew$2K();\n  var sha = dew$2C();\n  var ZEROS = Buffer.alloc(128);\n  function Hmac2(alg, key) {\n    Base.call(this, \"digest\");\n    if (typeof key === \"string\") {\n      key = Buffer.from(key);\n    }\n    var blocksize = alg === \"sha512\" || alg === \"sha384\" ? 128 : 64;\n    this._alg = alg;\n    this._key = key;\n    if (key.length > blocksize) {\n      var hash = alg === \"rmd160\" ? new RIPEMD160() : sha(alg);\n      key = hash.update(key).digest();\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n    var opad = this._opad = Buffer.allocUnsafe(blocksize);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    this._hash = alg === \"rmd160\" ? new RIPEMD160() : sha(alg);\n    this._hash.update(ipad);\n  }\n  inherits(Hmac2, Base);\n  Hmac2.prototype._update = function(data) {\n    this._hash.update(data);\n  };\n  Hmac2.prototype._final = function() {\n    var h5 = this._hash.digest();\n    var hash = this._alg === \"rmd160\" ? new RIPEMD160() : sha(this._alg);\n    return hash.update(this._opad).update(h5).digest();\n  };\n  exports$2w = function createHmac2(alg, key) {\n    alg = alg.toLowerCase();\n    if (alg === \"rmd160\" || alg === \"ripemd160\") {\n      return new Hmac2(\"rmd160\", key);\n    }\n    if (alg === \"md5\") {\n      return new Legacy(md5, key);\n    }\n    return new Hmac2(alg, key);\n  };\n  return exports$2w;\n}\nvar _algorithms$1 = {\n  \"sha224WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"RSA-SHA224\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"sha256WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"RSA-SHA256\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"sha384WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"RSA-SHA384\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"sha512WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA512\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA1\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"3021300906052b0e03021a05000414\"\n  },\n  \"ecdsa-with-SHA1\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"sha256\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"sha224\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"sha384\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"sha512\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA1\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-RIPEMD160\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"\"\n  },\n  \"ripemd160WithRSA\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"RSA-RIPEMD160\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"md5WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  },\n  \"RSA-MD5\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  }\n};\nvar exports$2v = {};\nvar _dewExec$2u = false;\nfunction dew$2u() {\n  if (_dewExec$2u) return exports$2v;\n  _dewExec$2u = true;\n  exports$2v = _algorithms$1;\n  return exports$2v;\n}\nvar exports$2u = {};\nvar _dewExec$2t = false;\nfunction dew$2t() {\n  if (_dewExec$2t) return exports$2u;\n  _dewExec$2t = true;\n  var MAX_ALLOC = Math.pow(2, 30) - 1;\n  exports$2u = function(iterations, keylen) {\n    if (typeof iterations !== \"number\") {\n      throw new TypeError(\"Iterations not a number\");\n    }\n    if (iterations < 0) {\n      throw new TypeError(\"Bad iterations\");\n    }\n    if (typeof keylen !== \"number\") {\n      throw new TypeError(\"Key length not a number\");\n    }\n    if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) {\n      throw new TypeError(\"Bad key length\");\n    }\n  };\n  return exports$2u;\n}\nvar exports$2t = {};\nvar _dewExec$2s = false;\nvar _global$J = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2s() {\n  if (_dewExec$2s) return exports$2t;\n  _dewExec$2s = true;\n  var process$1$1 = process2;\n  var defaultEncoding;\n  if (_global$J.process && _global$J.process.browser) {\n    defaultEncoding = \"utf-8\";\n  } else if (_global$J.process && _global$J.process.version) {\n    var pVersionMajor = parseInt(process$1$1.version.split(\".\")[0].slice(1), 10);\n    defaultEncoding = pVersionMajor >= 6 ? \"utf-8\" : \"binary\";\n  } else {\n    defaultEncoding = \"utf-8\";\n  }\n  exports$2t = defaultEncoding;\n  return exports$2t;\n}\nvar exports$2s = {};\nvar _dewExec$2r = false;\nfunction dew$2r() {\n  if (_dewExec$2r) return exports$2s;\n  _dewExec$2r = true;\n  var Buffer = dew$2P().Buffer;\n  exports$2s = function(thing, encoding, name2) {\n    if (Buffer.isBuffer(thing)) {\n      return thing;\n    } else if (typeof thing === \"string\") {\n      return Buffer.from(thing, encoding);\n    } else if (ArrayBuffer.isView(thing)) {\n      return Buffer.from(thing.buffer);\n    } else {\n      throw new TypeError(name2 + \" must be a string, a Buffer, a typed array or a DataView\");\n    }\n  };\n  return exports$2s;\n}\nvar exports$2r = {};\nvar _dewExec$2q = false;\nvar _global$I = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2q() {\n  if (_dewExec$2q) return exports$2r;\n  _dewExec$2q = true;\n  var md5 = dew$2w();\n  var RIPEMD160 = dew$2K();\n  var sha = dew$2C();\n  var Buffer = dew$2P().Buffer;\n  var checkParameters = dew$2t();\n  var defaultEncoding = dew$2s();\n  var toBuffer = dew$2r();\n  var ZEROS = Buffer.alloc(128);\n  var sizes = {\n    md5: 16,\n    sha1: 20,\n    sha224: 28,\n    sha256: 32,\n    sha384: 48,\n    sha512: 64,\n    rmd160: 20,\n    ripemd160: 20\n  };\n  function Hmac2(alg, key, saltLen) {\n    var hash = getDigest(alg);\n    var blocksize = alg === \"sha512\" || alg === \"sha384\" ? 128 : 64;\n    if (key.length > blocksize) {\n      key = hash(key);\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n    var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);\n    ipad.copy(ipad1, 0, 0, blocksize);\n    (this || _global$I).ipad1 = ipad1;\n    (this || _global$I).ipad2 = ipad;\n    (this || _global$I).opad = opad;\n    (this || _global$I).alg = alg;\n    (this || _global$I).blocksize = blocksize;\n    (this || _global$I).hash = hash;\n    (this || _global$I).size = sizes[alg];\n  }\n  Hmac2.prototype.run = function(data, ipad) {\n    data.copy(ipad, (this || _global$I).blocksize);\n    var h5 = this.hash(ipad);\n    h5.copy((this || _global$I).opad, (this || _global$I).blocksize);\n    return this.hash((this || _global$I).opad);\n  };\n  function getDigest(alg) {\n    function shaFunc(data) {\n      return sha(alg).update(data).digest();\n    }\n    function rmd160Func(data) {\n      return new RIPEMD160().update(data).digest();\n    }\n    if (alg === \"rmd160\" || alg === \"ripemd160\") return rmd160Func;\n    if (alg === \"md5\") return md5;\n    return shaFunc;\n  }\n  function pbkdf22(password, salt, iterations, keylen, digest) {\n    checkParameters(iterations, keylen);\n    password = toBuffer(password, defaultEncoding, \"Password\");\n    salt = toBuffer(salt, defaultEncoding, \"Salt\");\n    digest = digest || \"sha1\";\n    var hmac = new Hmac2(digest, password, salt.length);\n    var DK = Buffer.allocUnsafe(keylen);\n    var block1 = Buffer.allocUnsafe(salt.length + 4);\n    salt.copy(block1, 0, 0, salt.length);\n    var destPos = 0;\n    var hLen = sizes[digest];\n    var l5 = Math.ceil(keylen / hLen);\n    for (var i5 = 1; i5 <= l5; i5++) {\n      block1.writeUInt32BE(i5, salt.length);\n      var T4 = hmac.run(block1, hmac.ipad1);\n      var U4 = T4;\n      for (var j4 = 1; j4 < iterations; j4++) {\n        U4 = hmac.run(U4, hmac.ipad2);\n        for (var k4 = 0; k4 < hLen; k4++) T4[k4] ^= U4[k4];\n      }\n      T4.copy(DK, destPos);\n      destPos += hLen;\n    }\n    return DK;\n  }\n  exports$2r = pbkdf22;\n  return exports$2r;\n}\nvar exports$2q = {};\nvar _dewExec$2p = false;\nvar _global$H = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2p() {\n  if (_dewExec$2p) return exports$2q;\n  _dewExec$2p = true;\n  var Buffer = dew$2P().Buffer;\n  var checkParameters = dew$2t();\n  var defaultEncoding = dew$2s();\n  var sync = dew$2q();\n  var toBuffer = dew$2r();\n  var ZERO_BUF;\n  var subtle = _global$H.crypto && _global$H.crypto.subtle;\n  var toBrowser = {\n    sha: \"SHA-1\",\n    \"sha-1\": \"SHA-1\",\n    sha1: \"SHA-1\",\n    sha256: \"SHA-256\",\n    \"sha-256\": \"SHA-256\",\n    sha384: \"SHA-384\",\n    \"sha-384\": \"SHA-384\",\n    \"sha-512\": \"SHA-512\",\n    sha512: \"SHA-512\"\n  };\n  var checks = [];\n  function checkNative(algo) {\n    if (_global$H.process && !_global$H.process.browser) {\n      return Promise.resolve(false);\n    }\n    if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n      return Promise.resolve(false);\n    }\n    if (checks[algo] !== void 0) {\n      return checks[algo];\n    }\n    ZERO_BUF = ZERO_BUF || Buffer.alloc(8);\n    var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function() {\n      return true;\n    }).catch(function() {\n      return false;\n    });\n    checks[algo] = prom;\n    return prom;\n  }\n  var nextTick2;\n  function getNextTick() {\n    if (nextTick2) {\n      return nextTick2;\n    }\n    if (_global$H.process && _global$H.process.nextTick) {\n      nextTick2 = _global$H.process.nextTick;\n    } else if (_global$H.queueMicrotask) {\n      nextTick2 = _global$H.queueMicrotask;\n    } else if (_global$H.setImmediate) {\n      nextTick2 = _global$H.setImmediate;\n    } else {\n      nextTick2 = _global$H.setTimeout;\n    }\n    return nextTick2;\n  }\n  function browserPbkdf2(password, salt, iterations, length, algo) {\n    return subtle.importKey(\"raw\", password, {\n      name: \"PBKDF2\"\n    }, false, [\"deriveBits\"]).then(function(key) {\n      return subtle.deriveBits({\n        name: \"PBKDF2\",\n        salt,\n        iterations,\n        hash: {\n          name: algo\n        }\n      }, key, length << 3);\n    }).then(function(res) {\n      return Buffer.from(res);\n    });\n  }\n  function resolvePromise(promise, callback) {\n    promise.then(function(out) {\n      getNextTick()(function() {\n        callback(null, out);\n      });\n    }, function(e7) {\n      getNextTick()(function() {\n        callback(e7);\n      });\n    });\n  }\n  exports$2q = function(password, salt, iterations, keylen, digest, callback) {\n    if (typeof digest === \"function\") {\n      callback = digest;\n      digest = void 0;\n    }\n    digest = digest || \"sha1\";\n    var algo = toBrowser[digest.toLowerCase()];\n    if (!algo || typeof _global$H.Promise !== \"function\") {\n      getNextTick()(function() {\n        var out;\n        try {\n          out = sync(password, salt, iterations, keylen, digest);\n        } catch (e7) {\n          return callback(e7);\n        }\n        callback(null, out);\n      });\n      return;\n    }\n    checkParameters(iterations, keylen);\n    password = toBuffer(password, defaultEncoding, \"Password\");\n    salt = toBuffer(salt, defaultEncoding, \"Salt\");\n    if (typeof callback !== \"function\") throw new Error(\"No callback provided to pbkdf2\");\n    resolvePromise(checkNative(algo).then(function(resp) {\n      if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo);\n      return sync(password, salt, iterations, keylen, digest);\n    }), callback);\n  };\n  return exports$2q;\n}\nvar exports$2p = {};\nvar _dewExec$2o = false;\nfunction dew$2o() {\n  if (_dewExec$2o) return exports$2p;\n  _dewExec$2o = true;\n  exports$2p.pbkdf2 = dew$2p();\n  exports$2p.pbkdf2Sync = dew$2q();\n  return exports$2p;\n}\nvar exports$2o = {};\nvar _dewExec$2n = false;\nfunction dew$2n() {\n  if (_dewExec$2n) return exports$2o;\n  _dewExec$2n = true;\n  exports$2o.readUInt32BE = function readUInt32BE(bytes, off2) {\n    var res = bytes[0 + off2] << 24 | bytes[1 + off2] << 16 | bytes[2 + off2] << 8 | bytes[3 + off2];\n    return res >>> 0;\n  };\n  exports$2o.writeUInt32BE = function writeUInt32BE(bytes, value, off2) {\n    bytes[0 + off2] = value >>> 24;\n    bytes[1 + off2] = value >>> 16 & 255;\n    bytes[2 + off2] = value >>> 8 & 255;\n    bytes[3 + off2] = value & 255;\n  };\n  exports$2o.ip = function ip(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 6; i5 >= 0; i5 -= 2) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inR >>> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inL >>> j4 + i5 & 1;\n      }\n    }\n    for (var i5 = 6; i5 >= 0; i5 -= 2) {\n      for (var j4 = 1; j4 <= 25; j4 += 8) {\n        outR <<= 1;\n        outR |= inR >>> j4 + i5 & 1;\n      }\n      for (var j4 = 1; j4 <= 25; j4 += 8) {\n        outR <<= 1;\n        outR |= inL >>> j4 + i5 & 1;\n      }\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$2o.rip = function rip(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 0; i5 < 4; i5++) {\n      for (var j4 = 24; j4 >= 0; j4 -= 8) {\n        outL <<= 1;\n        outL |= inR >>> j4 + i5 & 1;\n        outL <<= 1;\n        outL |= inL >>> j4 + i5 & 1;\n      }\n    }\n    for (var i5 = 4; i5 < 8; i5++) {\n      for (var j4 = 24; j4 >= 0; j4 -= 8) {\n        outR <<= 1;\n        outR |= inR >>> j4 + i5 & 1;\n        outR <<= 1;\n        outR |= inL >>> j4 + i5 & 1;\n      }\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$2o.pc1 = function pc1(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 7; i5 >= 5; i5--) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inR >> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inL >> j4 + i5 & 1;\n      }\n    }\n    for (var j4 = 0; j4 <= 24; j4 += 8) {\n      outL <<= 1;\n      outL |= inR >> j4 + i5 & 1;\n    }\n    for (var i5 = 1; i5 <= 3; i5++) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outR <<= 1;\n        outR |= inR >> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outR <<= 1;\n        outR |= inL >> j4 + i5 & 1;\n      }\n    }\n    for (var j4 = 0; j4 <= 24; j4 += 8) {\n      outR <<= 1;\n      outR |= inL >> j4 + i5 & 1;\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$2o.r28shl = function r28shl(num, shift) {\n    return num << shift & 268435455 | num >>> 28 - shift;\n  };\n  var pc2table = [\n    // inL => outL\n    14,\n    11,\n    17,\n    4,\n    27,\n    23,\n    25,\n    0,\n    13,\n    22,\n    7,\n    18,\n    5,\n    9,\n    16,\n    24,\n    2,\n    20,\n    12,\n    21,\n    1,\n    8,\n    15,\n    26,\n    // inR => outR\n    15,\n    4,\n    25,\n    19,\n    9,\n    1,\n    26,\n    16,\n    5,\n    11,\n    23,\n    8,\n    12,\n    7,\n    17,\n    0,\n    22,\n    3,\n    10,\n    14,\n    6,\n    20,\n    27,\n    24\n  ];\n  exports$2o.pc2 = function pc2(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    var len = pc2table.length >>> 1;\n    for (var i5 = 0; i5 < len; i5++) {\n      outL <<= 1;\n      outL |= inL >>> pc2table[i5] & 1;\n    }\n    for (var i5 = len; i5 < pc2table.length; i5++) {\n      outR <<= 1;\n      outR |= inR >>> pc2table[i5] & 1;\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$2o.expand = function expand(r5, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    outL = (r5 & 1) << 5 | r5 >>> 27;\n    for (var i5 = 23; i5 >= 15; i5 -= 4) {\n      outL <<= 6;\n      outL |= r5 >>> i5 & 63;\n    }\n    for (var i5 = 11; i5 >= 3; i5 -= 4) {\n      outR |= r5 >>> i5 & 63;\n      outR <<= 6;\n    }\n    outR |= (r5 & 31) << 1 | r5 >>> 31;\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  var sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\n  exports$2o.substitute = function substitute(inL, inR) {\n    var out = 0;\n    for (var i5 = 0; i5 < 4; i5++) {\n      var b4 = inL >>> 18 - i5 * 6 & 63;\n      var sb = sTable[i5 * 64 + b4];\n      out <<= 4;\n      out |= sb;\n    }\n    for (var i5 = 0; i5 < 4; i5++) {\n      var b4 = inR >>> 18 - i5 * 6 & 63;\n      var sb = sTable[4 * 64 + i5 * 64 + b4];\n      out <<= 4;\n      out |= sb;\n    }\n    return out >>> 0;\n  };\n  var permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\n  exports$2o.permute = function permute(num) {\n    var out = 0;\n    for (var i5 = 0; i5 < permuteTable.length; i5++) {\n      out <<= 1;\n      out |= num >>> permuteTable[i5] & 1;\n    }\n    return out >>> 0;\n  };\n  exports$2o.padSplit = function padSplit(num, size, group) {\n    var str = num.toString(2);\n    while (str.length < size) str = \"0\" + str;\n    var out = [];\n    for (var i5 = 0; i5 < size; i5 += group) out.push(str.slice(i5, i5 + group));\n    return out.join(\" \");\n  };\n  return exports$2o;\n}\nvar exports$2n = {};\nvar _dewExec$2m = false;\nfunction dew$2m() {\n  if (_dewExec$2m) return exports$2n;\n  _dewExec$2m = true;\n  exports$2n = assert2;\n  function assert2(val, msg) {\n    if (!val) throw new Error(msg || \"Assertion failed\");\n  }\n  assert2.equal = function assertEqual(l5, r5, msg) {\n    if (l5 != r5) throw new Error(msg || \"Assertion failed: \" + l5 + \" != \" + r5);\n  };\n  return exports$2n;\n}\nvar exports$2m = {};\nvar _dewExec$2l = false;\nfunction dew$2l() {\n  if (_dewExec$2l) return exports$2m;\n  _dewExec$2l = true;\n  var assert2 = dew$2m();\n  function Cipher2(options) {\n    this.options = options;\n    this.type = this.options.type;\n    this.blockSize = 8;\n    this._init();\n    this.buffer = new Array(this.blockSize);\n    this.bufferOff = 0;\n  }\n  exports$2m = Cipher2;\n  Cipher2.prototype._init = function _init() {\n  };\n  Cipher2.prototype.update = function update(data) {\n    if (data.length === 0) return [];\n    if (this.type === \"decrypt\") return this._updateDecrypt(data);\n    else return this._updateEncrypt(data);\n  };\n  Cipher2.prototype._buffer = function _buffer(data, off2) {\n    var min = Math.min(this.buffer.length - this.bufferOff, data.length - off2);\n    for (var i5 = 0; i5 < min; i5++) this.buffer[this.bufferOff + i5] = data[off2 + i5];\n    this.bufferOff += min;\n    return min;\n  };\n  Cipher2.prototype._flushBuffer = function _flushBuffer(out, off2) {\n    this._update(this.buffer, 0, out, off2);\n    this.bufferOff = 0;\n    return this.blockSize;\n  };\n  Cipher2.prototype._updateEncrypt = function _updateEncrypt(data) {\n    var inputOff = 0;\n    var outputOff = 0;\n    var count = (this.bufferOff + data.length) / this.blockSize | 0;\n    var out = new Array(count * this.blockSize);\n    if (this.bufferOff !== 0) {\n      inputOff += this._buffer(data, inputOff);\n      if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n    }\n    var max = data.length - (data.length - inputOff) % this.blockSize;\n    for (; inputOff < max; inputOff += this.blockSize) {\n      this._update(data, inputOff, out, outputOff);\n      outputOff += this.blockSize;\n    }\n    for (; inputOff < data.length; inputOff++, this.bufferOff++) this.buffer[this.bufferOff] = data[inputOff];\n    return out;\n  };\n  Cipher2.prototype._updateDecrypt = function _updateDecrypt(data) {\n    var inputOff = 0;\n    var outputOff = 0;\n    var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n    var out = new Array(count * this.blockSize);\n    for (; count > 0; count--) {\n      inputOff += this._buffer(data, inputOff);\n      outputOff += this._flushBuffer(out, outputOff);\n    }\n    inputOff += this._buffer(data, inputOff);\n    return out;\n  };\n  Cipher2.prototype.final = function final(buffer2) {\n    var first;\n    if (buffer2) first = this.update(buffer2);\n    var last;\n    if (this.type === \"encrypt\") last = this._finalEncrypt();\n    else last = this._finalDecrypt();\n    if (first) return first.concat(last);\n    else return last;\n  };\n  Cipher2.prototype._pad = function _pad(buffer2, off2) {\n    if (off2 === 0) return false;\n    while (off2 < buffer2.length) buffer2[off2++] = 0;\n    return true;\n  };\n  Cipher2.prototype._finalEncrypt = function _finalEncrypt() {\n    if (!this._pad(this.buffer, this.bufferOff)) return [];\n    var out = new Array(this.blockSize);\n    this._update(this.buffer, 0, out, 0);\n    return out;\n  };\n  Cipher2.prototype._unpad = function _unpad(buffer2) {\n    return buffer2;\n  };\n  Cipher2.prototype._finalDecrypt = function _finalDecrypt() {\n    assert2.equal(this.bufferOff, this.blockSize, \"Not enough data to decrypt\");\n    var out = new Array(this.blockSize);\n    this._flushBuffer(out, 0);\n    return this._unpad(out);\n  };\n  return exports$2m;\n}\nvar exports$2l = {};\nvar _dewExec$2k = false;\nfunction dew$2k() {\n  if (_dewExec$2k) return exports$2l;\n  _dewExec$2k = true;\n  var assert2 = dew$2m();\n  var inherits = dew$f();\n  var utils = dew$2n();\n  var Cipher2 = dew$2l();\n  function DESState() {\n    this.tmp = new Array(2);\n    this.keys = null;\n  }\n  function DES(options) {\n    Cipher2.call(this, options);\n    var state = new DESState();\n    this._desState = state;\n    this.deriveKeys(state, options.key);\n  }\n  inherits(DES, Cipher2);\n  exports$2l = DES;\n  DES.create = function create(options) {\n    return new DES(options);\n  };\n  var shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\n  DES.prototype.deriveKeys = function deriveKeys(state, key) {\n    state.keys = new Array(16 * 2);\n    assert2.equal(key.length, this.blockSize, \"Invalid key length\");\n    var kL = utils.readUInt32BE(key, 0);\n    var kR = utils.readUInt32BE(key, 4);\n    utils.pc1(kL, kR, state.tmp, 0);\n    kL = state.tmp[0];\n    kR = state.tmp[1];\n    for (var i5 = 0; i5 < state.keys.length; i5 += 2) {\n      var shift = shiftTable[i5 >>> 1];\n      kL = utils.r28shl(kL, shift);\n      kR = utils.r28shl(kR, shift);\n      utils.pc2(kL, kR, state.keys, i5);\n    }\n  };\n  DES.prototype._update = function _update(inp, inOff, out, outOff) {\n    var state = this._desState;\n    var l5 = utils.readUInt32BE(inp, inOff);\n    var r5 = utils.readUInt32BE(inp, inOff + 4);\n    utils.ip(l5, r5, state.tmp, 0);\n    l5 = state.tmp[0];\n    r5 = state.tmp[1];\n    if (this.type === \"encrypt\") this._encrypt(state, l5, r5, state.tmp, 0);\n    else this._decrypt(state, l5, r5, state.tmp, 0);\n    l5 = state.tmp[0];\n    r5 = state.tmp[1];\n    utils.writeUInt32BE(out, l5, outOff);\n    utils.writeUInt32BE(out, r5, outOff + 4);\n  };\n  DES.prototype._pad = function _pad(buffer2, off2) {\n    var value = buffer2.length - off2;\n    for (var i5 = off2; i5 < buffer2.length; i5++) buffer2[i5] = value;\n    return true;\n  };\n  DES.prototype._unpad = function _unpad(buffer2) {\n    var pad = buffer2[buffer2.length - 1];\n    for (var i5 = buffer2.length - pad; i5 < buffer2.length; i5++) assert2.equal(buffer2[i5], pad);\n    return buffer2.slice(0, buffer2.length - pad);\n  };\n  DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off2) {\n    var l5 = lStart;\n    var r5 = rStart;\n    for (var i5 = 0; i5 < state.keys.length; i5 += 2) {\n      var keyL = state.keys[i5];\n      var keyR = state.keys[i5 + 1];\n      utils.expand(r5, state.tmp, 0);\n      keyL ^= state.tmp[0];\n      keyR ^= state.tmp[1];\n      var s5 = utils.substitute(keyL, keyR);\n      var f6 = utils.permute(s5);\n      var t5 = r5;\n      r5 = (l5 ^ f6) >>> 0;\n      l5 = t5;\n    }\n    utils.rip(r5, l5, out, off2);\n  };\n  DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off2) {\n    var l5 = rStart;\n    var r5 = lStart;\n    for (var i5 = state.keys.length - 2; i5 >= 0; i5 -= 2) {\n      var keyL = state.keys[i5];\n      var keyR = state.keys[i5 + 1];\n      utils.expand(l5, state.tmp, 0);\n      keyL ^= state.tmp[0];\n      keyR ^= state.tmp[1];\n      var s5 = utils.substitute(keyL, keyR);\n      var f6 = utils.permute(s5);\n      var t5 = l5;\n      l5 = (r5 ^ f6) >>> 0;\n      r5 = t5;\n    }\n    utils.rip(l5, r5, out, off2);\n  };\n  return exports$2l;\n}\nvar exports$2k = {};\nvar _dewExec$2j = false;\nfunction dew$2j() {\n  if (_dewExec$2j) return exports$2k;\n  _dewExec$2j = true;\n  var assert2 = dew$2m();\n  var inherits = dew$f();\n  var proto = {};\n  function CBCState(iv) {\n    assert2.equal(iv.length, 8, \"Invalid IV length\");\n    this.iv = new Array(8);\n    for (var i5 = 0; i5 < this.iv.length; i5++) this.iv[i5] = iv[i5];\n  }\n  function instantiate(Base) {\n    function CBC(options) {\n      Base.call(this, options);\n      this._cbcInit();\n    }\n    inherits(CBC, Base);\n    var keys = Object.keys(proto);\n    for (var i5 = 0; i5 < keys.length; i5++) {\n      var key = keys[i5];\n      CBC.prototype[key] = proto[key];\n    }\n    CBC.create = function create(options) {\n      return new CBC(options);\n    };\n    return CBC;\n  }\n  exports$2k.instantiate = instantiate;\n  proto._cbcInit = function _cbcInit() {\n    var state = new CBCState(this.options.iv);\n    this._cbcState = state;\n  };\n  proto._update = function _update(inp, inOff, out, outOff) {\n    var state = this._cbcState;\n    var superProto = this.constructor.super_.prototype;\n    var iv = state.iv;\n    if (this.type === \"encrypt\") {\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] ^= inp[inOff + i5];\n      superProto._update.call(this, iv, 0, out, outOff);\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] = out[outOff + i5];\n    } else {\n      superProto._update.call(this, inp, inOff, out, outOff);\n      for (var i5 = 0; i5 < this.blockSize; i5++) out[outOff + i5] ^= iv[i5];\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] = inp[inOff + i5];\n    }\n  };\n  return exports$2k;\n}\nvar exports$2j = {};\nvar _dewExec$2i = false;\nfunction dew$2i() {\n  if (_dewExec$2i) return exports$2j;\n  _dewExec$2i = true;\n  var assert2 = dew$2m();\n  var inherits = dew$f();\n  var Cipher2 = dew$2l();\n  var DES = dew$2k();\n  function EDEState(type, key) {\n    assert2.equal(key.length, 24, \"Invalid key length\");\n    var k1 = key.slice(0, 8);\n    var k22 = key.slice(8, 16);\n    var k32 = key.slice(16, 24);\n    if (type === \"encrypt\") {\n      this.ciphers = [DES.create({\n        type: \"encrypt\",\n        key: k1\n      }), DES.create({\n        type: \"decrypt\",\n        key: k22\n      }), DES.create({\n        type: \"encrypt\",\n        key: k32\n      })];\n    } else {\n      this.ciphers = [DES.create({\n        type: \"decrypt\",\n        key: k32\n      }), DES.create({\n        type: \"encrypt\",\n        key: k22\n      }), DES.create({\n        type: \"decrypt\",\n        key: k1\n      })];\n    }\n  }\n  function EDE(options) {\n    Cipher2.call(this, options);\n    var state = new EDEState(this.type, this.options.key);\n    this._edeState = state;\n  }\n  inherits(EDE, Cipher2);\n  exports$2j = EDE;\n  EDE.create = function create(options) {\n    return new EDE(options);\n  };\n  EDE.prototype._update = function _update(inp, inOff, out, outOff) {\n    var state = this._edeState;\n    state.ciphers[0]._update(inp, inOff, out, outOff);\n    state.ciphers[1]._update(out, outOff, out, outOff);\n    state.ciphers[2]._update(out, outOff, out, outOff);\n  };\n  EDE.prototype._pad = DES.prototype._pad;\n  EDE.prototype._unpad = DES.prototype._unpad;\n  return exports$2j;\n}\nvar exports$2i = {};\nvar _dewExec$2h = false;\nfunction dew$2h() {\n  if (_dewExec$2h) return exports$2i;\n  _dewExec$2h = true;\n  exports$2i.utils = dew$2n();\n  exports$2i.Cipher = dew$2l();\n  exports$2i.DES = dew$2k();\n  exports$2i.CBC = dew$2j();\n  exports$2i.EDE = dew$2i();\n  return exports$2i;\n}\nvar exports$2h = {};\nvar _dewExec$2g = false;\nvar _global$G = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$2g() {\n  if (_dewExec$2g) return exports$2h;\n  _dewExec$2g = true;\n  var CipherBase = dew$2z();\n  var des = dew$2h();\n  var inherits = dew$f();\n  var Buffer = dew$2P().Buffer;\n  var modes = {\n    \"des-ede3-cbc\": des.CBC.instantiate(des.EDE),\n    \"des-ede3\": des.EDE,\n    \"des-ede-cbc\": des.CBC.instantiate(des.EDE),\n    \"des-ede\": des.EDE,\n    \"des-cbc\": des.CBC.instantiate(des.DES),\n    \"des-ecb\": des.DES\n  };\n  modes.des = modes[\"des-cbc\"];\n  modes.des3 = modes[\"des-ede3-cbc\"];\n  exports$2h = DES;\n  inherits(DES, CipherBase);\n  function DES(opts) {\n    CipherBase.call(this || _global$G);\n    var modeName = opts.mode.toLowerCase();\n    var mode = modes[modeName];\n    var type;\n    if (opts.decrypt) {\n      type = \"decrypt\";\n    } else {\n      type = \"encrypt\";\n    }\n    var key = opts.key;\n    if (!Buffer.isBuffer(key)) {\n      key = Buffer.from(key);\n    }\n    if (modeName === \"des-ede\" || modeName === \"des-ede-cbc\") {\n      key = Buffer.concat([key, key.slice(0, 8)]);\n    }\n    var iv = opts.iv;\n    if (!Buffer.isBuffer(iv)) {\n      iv = Buffer.from(iv);\n    }\n    (this || _global$G)._des = mode.create({\n      key,\n      iv,\n      type\n    });\n  }\n  DES.prototype._update = function(data) {\n    return Buffer.from((this || _global$G)._des.update(data));\n  };\n  DES.prototype._final = function() {\n    return Buffer.from((this || _global$G)._des.final());\n  };\n  return exports$2h;\n}\nvar exports$2g = {};\nvar _dewExec$2f = false;\nfunction dew$2f() {\n  if (_dewExec$2f) return exports$2g;\n  _dewExec$2f = true;\n  exports$2g.encrypt = function(self2, block) {\n    return self2._cipher.encryptBlock(block);\n  };\n  exports$2g.decrypt = function(self2, block) {\n    return self2._cipher.decryptBlock(block);\n  };\n  return exports$2g;\n}\nvar exports$2f = {};\nvar _dewExec$2e = false;\nfunction dew$2e() {\n  if (_dewExec$2e) return exports$2f;\n  _dewExec$2e = true;\n  var Buffer = buffer.Buffer;\n  exports$2f = function xor(a5, b4) {\n    var length = Math.min(a5.length, b4.length);\n    var buffer2 = new Buffer(length);\n    for (var i5 = 0; i5 < length; ++i5) {\n      buffer2[i5] = a5[i5] ^ b4[i5];\n    }\n    return buffer2;\n  };\n  return exports$2f;\n}\nvar exports$2e = {};\nvar _dewExec$2d = false;\nfunction dew$2d() {\n  if (_dewExec$2d) return exports$2e;\n  _dewExec$2d = true;\n  var xor = dew$2e();\n  exports$2e.encrypt = function(self2, block) {\n    var data = xor(block, self2._prev);\n    self2._prev = self2._cipher.encryptBlock(data);\n    return self2._prev;\n  };\n  exports$2e.decrypt = function(self2, block) {\n    var pad = self2._prev;\n    self2._prev = block;\n    var out = self2._cipher.decryptBlock(block);\n    return xor(out, pad);\n  };\n  return exports$2e;\n}\nvar exports$2d = {};\nvar _dewExec$2c = false;\nfunction dew$2c() {\n  if (_dewExec$2c) return exports$2d;\n  _dewExec$2c = true;\n  var Buffer = dew$2P().Buffer;\n  var xor = dew$2e();\n  function encryptStart(self2, data, decrypt) {\n    var len = data.length;\n    var out = xor(data, self2._cache);\n    self2._cache = self2._cache.slice(len);\n    self2._prev = Buffer.concat([self2._prev, decrypt ? data : out]);\n    return out;\n  }\n  exports$2d.encrypt = function(self2, data, decrypt) {\n    var out = Buffer.allocUnsafe(0);\n    var len;\n    while (data.length) {\n      if (self2._cache.length === 0) {\n        self2._cache = self2._cipher.encryptBlock(self2._prev);\n        self2._prev = Buffer.allocUnsafe(0);\n      }\n      if (self2._cache.length <= data.length) {\n        len = self2._cache.length;\n        out = Buffer.concat([out, encryptStart(self2, data.slice(0, len), decrypt)]);\n        data = data.slice(len);\n      } else {\n        out = Buffer.concat([out, encryptStart(self2, data, decrypt)]);\n        break;\n      }\n    }\n    return out;\n  };\n  return exports$2d;\n}\nvar exports$2c = {};\nvar _dewExec$2b = false;\nfunction dew$2b() {\n  if (_dewExec$2b) return exports$2c;\n  _dewExec$2b = true;\n  var Buffer = dew$2P().Buffer;\n  function encryptByte(self2, byteParam, decrypt) {\n    var pad = self2._cipher.encryptBlock(self2._prev);\n    var out = pad[0] ^ byteParam;\n    self2._prev = Buffer.concat([self2._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\n    return out;\n  }\n  exports$2c.encrypt = function(self2, chunk, decrypt) {\n    var len = chunk.length;\n    var out = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      out[i5] = encryptByte(self2, chunk[i5], decrypt);\n    }\n    return out;\n  };\n  return exports$2c;\n}\nvar exports$2b = {};\nvar _dewExec$2a = false;\nfunction dew$2a() {\n  if (_dewExec$2a) return exports$2b;\n  _dewExec$2a = true;\n  var Buffer = dew$2P().Buffer;\n  function encryptByte(self2, byteParam, decrypt) {\n    var pad;\n    var i5 = -1;\n    var len = 8;\n    var out = 0;\n    var bit, value;\n    while (++i5 < len) {\n      pad = self2._cipher.encryptBlock(self2._prev);\n      bit = byteParam & 1 << 7 - i5 ? 128 : 0;\n      value = pad[0] ^ bit;\n      out += (value & 128) >> i5 % 8;\n      self2._prev = shiftIn(self2._prev, decrypt ? bit : value);\n    }\n    return out;\n  }\n  function shiftIn(buffer2, value) {\n    var len = buffer2.length;\n    var i5 = -1;\n    var out = Buffer.allocUnsafe(buffer2.length);\n    buffer2 = Buffer.concat([buffer2, Buffer.from([value])]);\n    while (++i5 < len) {\n      out[i5] = buffer2[i5] << 1 | buffer2[i5 + 1] >> 7;\n    }\n    return out;\n  }\n  exports$2b.encrypt = function(self2, chunk, decrypt) {\n    var len = chunk.length;\n    var out = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      out[i5] = encryptByte(self2, chunk[i5], decrypt);\n    }\n    return out;\n  };\n  return exports$2b;\n}\nvar exports$2a = {};\nvar _dewExec$29 = false;\nfunction dew$29() {\n  if (_dewExec$29) return exports$2a;\n  _dewExec$29 = true;\n  var Buffer = buffer.Buffer;\n  var xor = dew$2e();\n  function getBlock(self2) {\n    self2._prev = self2._cipher.encryptBlock(self2._prev);\n    return self2._prev;\n  }\n  exports$2a.encrypt = function(self2, chunk) {\n    while (self2._cache.length < chunk.length) {\n      self2._cache = Buffer.concat([self2._cache, getBlock(self2)]);\n    }\n    var pad = self2._cache.slice(0, chunk.length);\n    self2._cache = self2._cache.slice(chunk.length);\n    return xor(chunk, pad);\n  };\n  return exports$2a;\n}\nvar exports$29 = {};\nvar _dewExec$28 = false;\nfunction dew$28() {\n  if (_dewExec$28) return exports$29;\n  _dewExec$28 = true;\n  function incr32(iv) {\n    var len = iv.length;\n    var item;\n    while (len--) {\n      item = iv.readUInt8(len);\n      if (item === 255) {\n        iv.writeUInt8(0, len);\n      } else {\n        item++;\n        iv.writeUInt8(item, len);\n        break;\n      }\n    }\n  }\n  exports$29 = incr32;\n  return exports$29;\n}\nvar exports$28 = {};\nvar _dewExec$27 = false;\nfunction dew$27() {\n  if (_dewExec$27) return exports$28;\n  _dewExec$27 = true;\n  var xor = dew$2e();\n  var Buffer = dew$2P().Buffer;\n  var incr32 = dew$28();\n  function getBlock(self2) {\n    var out = self2._cipher.encryptBlockRaw(self2._prev);\n    incr32(self2._prev);\n    return out;\n  }\n  var blockSize = 16;\n  exports$28.encrypt = function(self2, chunk) {\n    var chunkNum = Math.ceil(chunk.length / blockSize);\n    var start = self2._cache.length;\n    self2._cache = Buffer.concat([self2._cache, Buffer.allocUnsafe(chunkNum * blockSize)]);\n    for (var i5 = 0; i5 < chunkNum; i5++) {\n      var out = getBlock(self2);\n      var offset = start + i5 * blockSize;\n      self2._cache.writeUInt32BE(out[0], offset + 0);\n      self2._cache.writeUInt32BE(out[1], offset + 4);\n      self2._cache.writeUInt32BE(out[2], offset + 8);\n      self2._cache.writeUInt32BE(out[3], offset + 12);\n    }\n    var pad = self2._cache.slice(0, chunk.length);\n    self2._cache = self2._cache.slice(chunk.length);\n    return xor(chunk, pad);\n  };\n  return exports$28;\n}\nvar _list$1 = {\n  \"aes-128-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-192-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-256-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-192-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-256-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes128\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes192\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes256\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-192-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-256-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  }\n};\nvar exports$27 = {};\nvar _dewExec$26 = false;\nfunction dew$26() {\n  if (_dewExec$26) return exports$27;\n  _dewExec$26 = true;\n  var modeModules = {\n    ECB: dew$2f(),\n    CBC: dew$2d(),\n    CFB: dew$2c(),\n    CFB8: dew$2b(),\n    CFB1: dew$2a(),\n    OFB: dew$29(),\n    CTR: dew$27(),\n    GCM: dew$27()\n  };\n  var modes = _list$1;\n  for (var key in modes) {\n    modes[key].module = modeModules[modes[key].mode];\n  }\n  exports$27 = modes;\n  return exports$27;\n}\nvar exports$26 = {};\nvar _dewExec$25 = false;\nvar _global$F = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$25() {\n  if (_dewExec$25) return exports$26;\n  _dewExec$25 = true;\n  var Buffer = dew$2P().Buffer;\n  function asUInt32Array(buf) {\n    if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n    var len = buf.length / 4 | 0;\n    var out = new Array(len);\n    for (var i5 = 0; i5 < len; i5++) {\n      out[i5] = buf.readUInt32BE(i5 * 4);\n    }\n    return out;\n  }\n  function scrubVec(v5) {\n    for (var i5 = 0; i5 < v5.length; v5++) {\n      v5[i5] = 0;\n    }\n  }\n  function cryptBlock(M4, keySchedule, SUB_MIX, SBOX, nRounds) {\n    var SUB_MIX0 = SUB_MIX[0];\n    var SUB_MIX1 = SUB_MIX[1];\n    var SUB_MIX2 = SUB_MIX[2];\n    var SUB_MIX3 = SUB_MIX[3];\n    var s0 = M4[0] ^ keySchedule[0];\n    var s1 = M4[1] ^ keySchedule[1];\n    var s22 = M4[2] ^ keySchedule[2];\n    var s32 = M4[3] ^ keySchedule[3];\n    var t0, t1, t22, t32;\n    var ksRow = 4;\n    for (var round = 1; round < nRounds; round++) {\n      t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 255] ^ SUB_MIX2[s22 >>> 8 & 255] ^ SUB_MIX3[s32 & 255] ^ keySchedule[ksRow++];\n      t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s22 >>> 16 & 255] ^ SUB_MIX2[s32 >>> 8 & 255] ^ SUB_MIX3[s0 & 255] ^ keySchedule[ksRow++];\n      t22 = SUB_MIX0[s22 >>> 24] ^ SUB_MIX1[s32 >>> 16 & 255] ^ SUB_MIX2[s0 >>> 8 & 255] ^ SUB_MIX3[s1 & 255] ^ keySchedule[ksRow++];\n      t32 = SUB_MIX0[s32 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 255] ^ SUB_MIX2[s1 >>> 8 & 255] ^ SUB_MIX3[s22 & 255] ^ keySchedule[ksRow++];\n      s0 = t0;\n      s1 = t1;\n      s22 = t22;\n      s32 = t32;\n    }\n    t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 255] << 16 | SBOX[s22 >>> 8 & 255] << 8 | SBOX[s32 & 255]) ^ keySchedule[ksRow++];\n    t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s22 >>> 16 & 255] << 16 | SBOX[s32 >>> 8 & 255] << 8 | SBOX[s0 & 255]) ^ keySchedule[ksRow++];\n    t22 = (SBOX[s22 >>> 24] << 24 | SBOX[s32 >>> 16 & 255] << 16 | SBOX[s0 >>> 8 & 255] << 8 | SBOX[s1 & 255]) ^ keySchedule[ksRow++];\n    t32 = (SBOX[s32 >>> 24] << 24 | SBOX[s0 >>> 16 & 255] << 16 | SBOX[s1 >>> 8 & 255] << 8 | SBOX[s22 & 255]) ^ keySchedule[ksRow++];\n    t0 = t0 >>> 0;\n    t1 = t1 >>> 0;\n    t22 = t22 >>> 0;\n    t32 = t32 >>> 0;\n    return [t0, t1, t22, t32];\n  }\n  var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];\n  var G3 = (function() {\n    var d4 = new Array(256);\n    for (var j4 = 0; j4 < 256; j4++) {\n      if (j4 < 128) {\n        d4[j4] = j4 << 1;\n      } else {\n        d4[j4] = j4 << 1 ^ 283;\n      }\n    }\n    var SBOX = [];\n    var INV_SBOX = [];\n    var SUB_MIX = [[], [], [], []];\n    var INV_SUB_MIX = [[], [], [], []];\n    var x4 = 0;\n    var xi = 0;\n    for (var i5 = 0; i5 < 256; ++i5) {\n      var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n      sx = sx >>> 8 ^ sx & 255 ^ 99;\n      SBOX[x4] = sx;\n      INV_SBOX[sx] = x4;\n      var x22 = d4[x4];\n      var x42 = d4[x22];\n      var x8 = d4[x42];\n      var t5 = d4[sx] * 257 ^ sx * 16843008;\n      SUB_MIX[0][x4] = t5 << 24 | t5 >>> 8;\n      SUB_MIX[1][x4] = t5 << 16 | t5 >>> 16;\n      SUB_MIX[2][x4] = t5 << 8 | t5 >>> 24;\n      SUB_MIX[3][x4] = t5;\n      t5 = x8 * 16843009 ^ x42 * 65537 ^ x22 * 257 ^ x4 * 16843008;\n      INV_SUB_MIX[0][sx] = t5 << 24 | t5 >>> 8;\n      INV_SUB_MIX[1][sx] = t5 << 16 | t5 >>> 16;\n      INV_SUB_MIX[2][sx] = t5 << 8 | t5 >>> 24;\n      INV_SUB_MIX[3][sx] = t5;\n      if (x4 === 0) {\n        x4 = xi = 1;\n      } else {\n        x4 = x22 ^ d4[d4[d4[x8 ^ x22]]];\n        xi ^= d4[d4[xi]];\n      }\n    }\n    return {\n      SBOX,\n      INV_SBOX,\n      SUB_MIX,\n      INV_SUB_MIX\n    };\n  })();\n  function AES(key) {\n    (this || _global$F)._key = asUInt32Array(key);\n    this._reset();\n  }\n  AES.blockSize = 4 * 4;\n  AES.keySize = 256 / 8;\n  AES.prototype.blockSize = AES.blockSize;\n  AES.prototype.keySize = AES.keySize;\n  AES.prototype._reset = function() {\n    var keyWords = (this || _global$F)._key;\n    var keySize = keyWords.length;\n    var nRounds = keySize + 6;\n    var ksRows = (nRounds + 1) * 4;\n    var keySchedule = [];\n    for (var k4 = 0; k4 < keySize; k4++) {\n      keySchedule[k4] = keyWords[k4];\n    }\n    for (k4 = keySize; k4 < ksRows; k4++) {\n      var t5 = keySchedule[k4 - 1];\n      if (k4 % keySize === 0) {\n        t5 = t5 << 8 | t5 >>> 24;\n        t5 = G3.SBOX[t5 >>> 24] << 24 | G3.SBOX[t5 >>> 16 & 255] << 16 | G3.SBOX[t5 >>> 8 & 255] << 8 | G3.SBOX[t5 & 255];\n        t5 ^= RCON[k4 / keySize | 0] << 24;\n      } else if (keySize > 6 && k4 % keySize === 4) {\n        t5 = G3.SBOX[t5 >>> 24] << 24 | G3.SBOX[t5 >>> 16 & 255] << 16 | G3.SBOX[t5 >>> 8 & 255] << 8 | G3.SBOX[t5 & 255];\n      }\n      keySchedule[k4] = keySchedule[k4 - keySize] ^ t5;\n    }\n    var invKeySchedule = [];\n    for (var ik = 0; ik < ksRows; ik++) {\n      var ksR = ksRows - ik;\n      var tt2 = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n      if (ik < 4 || ksR <= 4) {\n        invKeySchedule[ik] = tt2;\n      } else {\n        invKeySchedule[ik] = G3.INV_SUB_MIX[0][G3.SBOX[tt2 >>> 24]] ^ G3.INV_SUB_MIX[1][G3.SBOX[tt2 >>> 16 & 255]] ^ G3.INV_SUB_MIX[2][G3.SBOX[tt2 >>> 8 & 255]] ^ G3.INV_SUB_MIX[3][G3.SBOX[tt2 & 255]];\n      }\n    }\n    (this || _global$F)._nRounds = nRounds;\n    (this || _global$F)._keySchedule = keySchedule;\n    (this || _global$F)._invKeySchedule = invKeySchedule;\n  };\n  AES.prototype.encryptBlockRaw = function(M4) {\n    M4 = asUInt32Array(M4);\n    return cryptBlock(M4, (this || _global$F)._keySchedule, G3.SUB_MIX, G3.SBOX, (this || _global$F)._nRounds);\n  };\n  AES.prototype.encryptBlock = function(M4) {\n    var out = this.encryptBlockRaw(M4);\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0], 0);\n    buf.writeUInt32BE(out[1], 4);\n    buf.writeUInt32BE(out[2], 8);\n    buf.writeUInt32BE(out[3], 12);\n    return buf;\n  };\n  AES.prototype.decryptBlock = function(M4) {\n    M4 = asUInt32Array(M4);\n    var m1 = M4[1];\n    M4[1] = M4[3];\n    M4[3] = m1;\n    var out = cryptBlock(M4, (this || _global$F)._invKeySchedule, G3.INV_SUB_MIX, G3.INV_SBOX, (this || _global$F)._nRounds);\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0], 0);\n    buf.writeUInt32BE(out[3], 4);\n    buf.writeUInt32BE(out[2], 8);\n    buf.writeUInt32BE(out[1], 12);\n    return buf;\n  };\n  AES.prototype.scrub = function() {\n    scrubVec((this || _global$F)._keySchedule);\n    scrubVec((this || _global$F)._invKeySchedule);\n    scrubVec((this || _global$F)._key);\n  };\n  exports$26.AES = AES;\n  return exports$26;\n}\nvar exports$25 = {};\nvar _dewExec$24 = false;\nvar _global$E = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$24() {\n  if (_dewExec$24) return exports$25;\n  _dewExec$24 = true;\n  var Buffer = dew$2P().Buffer;\n  var ZEROES = Buffer.alloc(16, 0);\n  function toArray(buf) {\n    return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n  }\n  function fromArray(out) {\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0] >>> 0, 0);\n    buf.writeUInt32BE(out[1] >>> 0, 4);\n    buf.writeUInt32BE(out[2] >>> 0, 8);\n    buf.writeUInt32BE(out[3] >>> 0, 12);\n    return buf;\n  }\n  function GHASH(key) {\n    (this || _global$E).h = key;\n    (this || _global$E).state = Buffer.alloc(16, 0);\n    (this || _global$E).cache = Buffer.allocUnsafe(0);\n  }\n  GHASH.prototype.ghash = function(block) {\n    var i5 = -1;\n    while (++i5 < block.length) {\n      (this || _global$E).state[i5] ^= block[i5];\n    }\n    this._multiply();\n  };\n  GHASH.prototype._multiply = function() {\n    var Vi = toArray((this || _global$E).h);\n    var Zi = [0, 0, 0, 0];\n    var j4, xi, lsbVi;\n    var i5 = -1;\n    while (++i5 < 128) {\n      xi = ((this || _global$E).state[~~(i5 / 8)] & 1 << 7 - i5 % 8) !== 0;\n      if (xi) {\n        Zi[0] ^= Vi[0];\n        Zi[1] ^= Vi[1];\n        Zi[2] ^= Vi[2];\n        Zi[3] ^= Vi[3];\n      }\n      lsbVi = (Vi[3] & 1) !== 0;\n      for (j4 = 3; j4 > 0; j4--) {\n        Vi[j4] = Vi[j4] >>> 1 | (Vi[j4 - 1] & 1) << 31;\n      }\n      Vi[0] = Vi[0] >>> 1;\n      if (lsbVi) {\n        Vi[0] = Vi[0] ^ 225 << 24;\n      }\n    }\n    (this || _global$E).state = fromArray(Zi);\n  };\n  GHASH.prototype.update = function(buf) {\n    (this || _global$E).cache = Buffer.concat([(this || _global$E).cache, buf]);\n    var chunk;\n    while ((this || _global$E).cache.length >= 16) {\n      chunk = (this || _global$E).cache.slice(0, 16);\n      (this || _global$E).cache = (this || _global$E).cache.slice(16);\n      this.ghash(chunk);\n    }\n  };\n  GHASH.prototype.final = function(abl, bl) {\n    if ((this || _global$E).cache.length) {\n      this.ghash(Buffer.concat([(this || _global$E).cache, ZEROES], 16));\n    }\n    this.ghash(fromArray([0, abl, 0, bl]));\n    return (this || _global$E).state;\n  };\n  exports$25 = GHASH;\n  return exports$25;\n}\nvar exports$24 = {};\nvar _dewExec$23 = false;\nvar _global$D = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$23() {\n  if (_dewExec$23) return exports$24;\n  _dewExec$23 = true;\n  var aes = dew$25();\n  var Buffer = dew$2P().Buffer;\n  var Transform = dew$2z();\n  var inherits = dew$f();\n  var GHASH = dew$24();\n  var xor = dew$2e();\n  var incr32 = dew$28();\n  function xorTest(a5, b4) {\n    var out = 0;\n    if (a5.length !== b4.length) out++;\n    var len = Math.min(a5.length, b4.length);\n    for (var i5 = 0; i5 < len; ++i5) {\n      out += a5[i5] ^ b4[i5];\n    }\n    return out;\n  }\n  function calcIv(self2, iv, ck) {\n    if (iv.length === 12) {\n      self2._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]);\n      return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]);\n    }\n    var ghash = new GHASH(ck);\n    var len = iv.length;\n    var toPad = len % 16;\n    ghash.update(iv);\n    if (toPad) {\n      toPad = 16 - toPad;\n      ghash.update(Buffer.alloc(toPad, 0));\n    }\n    ghash.update(Buffer.alloc(8, 0));\n    var ivBits = len * 8;\n    var tail = Buffer.alloc(8);\n    tail.writeUIntBE(ivBits, 0, 8);\n    ghash.update(tail);\n    self2._finID = ghash.state;\n    var out = Buffer.from(self2._finID);\n    incr32(out);\n    return out;\n  }\n  function StreamCipher(mode, key, iv, decrypt) {\n    Transform.call(this || _global$D);\n    var h5 = Buffer.alloc(4, 0);\n    (this || _global$D)._cipher = new aes.AES(key);\n    var ck = (this || _global$D)._cipher.encryptBlock(h5);\n    (this || _global$D)._ghash = new GHASH(ck);\n    iv = calcIv(this || _global$D, iv, ck);\n    (this || _global$D)._prev = Buffer.from(iv);\n    (this || _global$D)._cache = Buffer.allocUnsafe(0);\n    (this || _global$D)._secCache = Buffer.allocUnsafe(0);\n    (this || _global$D)._decrypt = decrypt;\n    (this || _global$D)._alen = 0;\n    (this || _global$D)._len = 0;\n    (this || _global$D)._mode = mode;\n    (this || _global$D)._authTag = null;\n    (this || _global$D)._called = false;\n  }\n  inherits(StreamCipher, Transform);\n  StreamCipher.prototype._update = function(chunk) {\n    if (!(this || _global$D)._called && (this || _global$D)._alen) {\n      var rump = 16 - (this || _global$D)._alen % 16;\n      if (rump < 16) {\n        rump = Buffer.alloc(rump, 0);\n        (this || _global$D)._ghash.update(rump);\n      }\n    }\n    (this || _global$D)._called = true;\n    var out = (this || _global$D)._mode.encrypt(this || _global$D, chunk);\n    if ((this || _global$D)._decrypt) {\n      (this || _global$D)._ghash.update(chunk);\n    } else {\n      (this || _global$D)._ghash.update(out);\n    }\n    (this || _global$D)._len += chunk.length;\n    return out;\n  };\n  StreamCipher.prototype._final = function() {\n    if ((this || _global$D)._decrypt && !(this || _global$D)._authTag) throw new Error(\"Unsupported state or unable to authenticate data\");\n    var tag = xor((this || _global$D)._ghash.final((this || _global$D)._alen * 8, (this || _global$D)._len * 8), (this || _global$D)._cipher.encryptBlock((this || _global$D)._finID));\n    if ((this || _global$D)._decrypt && xorTest(tag, (this || _global$D)._authTag)) throw new Error(\"Unsupported state or unable to authenticate data\");\n    (this || _global$D)._authTag = tag;\n    (this || _global$D)._cipher.scrub();\n  };\n  StreamCipher.prototype.getAuthTag = function getAuthTag() {\n    if ((this || _global$D)._decrypt || !Buffer.isBuffer((this || _global$D)._authTag)) throw new Error(\"Attempting to get auth tag in unsupported state\");\n    return (this || _global$D)._authTag;\n  };\n  StreamCipher.prototype.setAuthTag = function setAuthTag(tag) {\n    if (!(this || _global$D)._decrypt) throw new Error(\"Attempting to set auth tag in unsupported state\");\n    (this || _global$D)._authTag = tag;\n  };\n  StreamCipher.prototype.setAAD = function setAAD(buf) {\n    if ((this || _global$D)._called) throw new Error(\"Attempting to set AAD in unsupported state\");\n    (this || _global$D)._ghash.update(buf);\n    (this || _global$D)._alen += buf.length;\n  };\n  exports$24 = StreamCipher;\n  return exports$24;\n}\nvar exports$232 = {};\nvar _dewExec$222 = false;\nvar _global$C = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$222() {\n  if (_dewExec$222) return exports$232;\n  _dewExec$222 = true;\n  var aes = dew$25();\n  var Buffer = dew$2P().Buffer;\n  var Transform = dew$2z();\n  var inherits = dew$f();\n  function StreamCipher(mode, key, iv, decrypt) {\n    Transform.call(this || _global$C);\n    (this || _global$C)._cipher = new aes.AES(key);\n    (this || _global$C)._prev = Buffer.from(iv);\n    (this || _global$C)._cache = Buffer.allocUnsafe(0);\n    (this || _global$C)._secCache = Buffer.allocUnsafe(0);\n    (this || _global$C)._decrypt = decrypt;\n    (this || _global$C)._mode = mode;\n  }\n  inherits(StreamCipher, Transform);\n  StreamCipher.prototype._update = function(chunk) {\n    return (this || _global$C)._mode.encrypt(this || _global$C, chunk, (this || _global$C)._decrypt);\n  };\n  StreamCipher.prototype._final = function() {\n    (this || _global$C)._cipher.scrub();\n  };\n  exports$232 = StreamCipher;\n  return exports$232;\n}\nvar exports$222 = {};\nvar _dewExec$21 = false;\nfunction dew$21() {\n  if (_dewExec$21) return exports$222;\n  _dewExec$21 = true;\n  var Buffer = dew$2P().Buffer;\n  var MD5 = dew$2L();\n  function EVP_BytesToKey(password, salt, keyBits, ivLen) {\n    if (!Buffer.isBuffer(password)) password = Buffer.from(password, \"binary\");\n    if (salt) {\n      if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, \"binary\");\n      if (salt.length !== 8) throw new RangeError(\"salt should be Buffer with 8 byte length\");\n    }\n    var keyLen = keyBits / 8;\n    var key = Buffer.alloc(keyLen);\n    var iv = Buffer.alloc(ivLen || 0);\n    var tmp = Buffer.alloc(0);\n    while (keyLen > 0 || ivLen > 0) {\n      var hash = new MD5();\n      hash.update(tmp);\n      hash.update(password);\n      if (salt) hash.update(salt);\n      tmp = hash.digest();\n      var used = 0;\n      if (keyLen > 0) {\n        var keyStart = key.length - keyLen;\n        used = Math.min(keyLen, tmp.length);\n        tmp.copy(key, keyStart, 0, used);\n        keyLen -= used;\n      }\n      if (used < tmp.length && ivLen > 0) {\n        var ivStart = iv.length - ivLen;\n        var length = Math.min(ivLen, tmp.length - used);\n        tmp.copy(iv, ivStart, used, used + length);\n        ivLen -= length;\n      }\n    }\n    tmp.fill(0);\n    return {\n      key,\n      iv\n    };\n  }\n  exports$222 = EVP_BytesToKey;\n  return exports$222;\n}\nvar exports$21 = {};\nvar _dewExec$20 = false;\nvar _global$B = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$20() {\n  if (_dewExec$20) return exports$21;\n  _dewExec$20 = true;\n  var MODES = dew$26();\n  var AuthCipher = dew$23();\n  var Buffer = dew$2P().Buffer;\n  var StreamCipher = dew$222();\n  var Transform = dew$2z();\n  var aes = dew$25();\n  var ebtk = dew$21();\n  var inherits = dew$f();\n  function Cipher2(mode, key, iv) {\n    Transform.call(this || _global$B);\n    (this || _global$B)._cache = new Splitter();\n    (this || _global$B)._cipher = new aes.AES(key);\n    (this || _global$B)._prev = Buffer.from(iv);\n    (this || _global$B)._mode = mode;\n    (this || _global$B)._autopadding = true;\n  }\n  inherits(Cipher2, Transform);\n  Cipher2.prototype._update = function(data) {\n    (this || _global$B)._cache.add(data);\n    var chunk;\n    var thing;\n    var out = [];\n    while (chunk = (this || _global$B)._cache.get()) {\n      thing = (this || _global$B)._mode.encrypt(this || _global$B, chunk);\n      out.push(thing);\n    }\n    return Buffer.concat(out);\n  };\n  var PADDING = Buffer.alloc(16, 16);\n  Cipher2.prototype._final = function() {\n    var chunk = (this || _global$B)._cache.flush();\n    if ((this || _global$B)._autopadding) {\n      chunk = (this || _global$B)._mode.encrypt(this || _global$B, chunk);\n      (this || _global$B)._cipher.scrub();\n      return chunk;\n    }\n    if (!chunk.equals(PADDING)) {\n      (this || _global$B)._cipher.scrub();\n      throw new Error(\"data not multiple of block length\");\n    }\n  };\n  Cipher2.prototype.setAutoPadding = function(setTo) {\n    (this || _global$B)._autopadding = !!setTo;\n    return this || _global$B;\n  };\n  function Splitter() {\n    (this || _global$B).cache = Buffer.allocUnsafe(0);\n  }\n  Splitter.prototype.add = function(data) {\n    (this || _global$B).cache = Buffer.concat([(this || _global$B).cache, data]);\n  };\n  Splitter.prototype.get = function() {\n    if ((this || _global$B).cache.length > 15) {\n      var out = (this || _global$B).cache.slice(0, 16);\n      (this || _global$B).cache = (this || _global$B).cache.slice(16);\n      return out;\n    }\n    return null;\n  };\n  Splitter.prototype.flush = function() {\n    var len = 16 - (this || _global$B).cache.length;\n    var padBuff = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      padBuff.writeUInt8(len, i5);\n    }\n    return Buffer.concat([(this || _global$B).cache, padBuff]);\n  };\n  function createCipheriv2(suite, password, iv) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    if (typeof password === \"string\") password = Buffer.from(password);\n    if (password.length !== config2.key / 8) throw new TypeError(\"invalid key length \" + password.length);\n    if (typeof iv === \"string\") iv = Buffer.from(iv);\n    if (config2.mode !== \"GCM\" && iv.length !== config2.iv) throw new TypeError(\"invalid iv length \" + iv.length);\n    if (config2.type === \"stream\") {\n      return new StreamCipher(config2.module, password, iv);\n    } else if (config2.type === \"auth\") {\n      return new AuthCipher(config2.module, password, iv);\n    }\n    return new Cipher2(config2.module, password, iv);\n  }\n  function createCipher2(suite, password) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    var keys = ebtk(password, false, config2.key, config2.iv);\n    return createCipheriv2(suite, keys.key, keys.iv);\n  }\n  exports$21.createCipheriv = createCipheriv2;\n  exports$21.createCipher = createCipher2;\n  return exports$21;\n}\nvar exports$20 = {};\nvar _dewExec$1$ = false;\nvar _global$A = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1$() {\n  if (_dewExec$1$) return exports$20;\n  _dewExec$1$ = true;\n  var AuthCipher = dew$23();\n  var Buffer = dew$2P().Buffer;\n  var MODES = dew$26();\n  var StreamCipher = dew$222();\n  var Transform = dew$2z();\n  var aes = dew$25();\n  var ebtk = dew$21();\n  var inherits = dew$f();\n  function Decipher2(mode, key, iv) {\n    Transform.call(this || _global$A);\n    (this || _global$A)._cache = new Splitter();\n    (this || _global$A)._last = void 0;\n    (this || _global$A)._cipher = new aes.AES(key);\n    (this || _global$A)._prev = Buffer.from(iv);\n    (this || _global$A)._mode = mode;\n    (this || _global$A)._autopadding = true;\n  }\n  inherits(Decipher2, Transform);\n  Decipher2.prototype._update = function(data) {\n    (this || _global$A)._cache.add(data);\n    var chunk;\n    var thing;\n    var out = [];\n    while (chunk = (this || _global$A)._cache.get((this || _global$A)._autopadding)) {\n      thing = (this || _global$A)._mode.decrypt(this || _global$A, chunk);\n      out.push(thing);\n    }\n    return Buffer.concat(out);\n  };\n  Decipher2.prototype._final = function() {\n    var chunk = (this || _global$A)._cache.flush();\n    if ((this || _global$A)._autopadding) {\n      return unpad((this || _global$A)._mode.decrypt(this || _global$A, chunk));\n    } else if (chunk) {\n      throw new Error(\"data not multiple of block length\");\n    }\n  };\n  Decipher2.prototype.setAutoPadding = function(setTo) {\n    (this || _global$A)._autopadding = !!setTo;\n    return this || _global$A;\n  };\n  function Splitter() {\n    (this || _global$A).cache = Buffer.allocUnsafe(0);\n  }\n  Splitter.prototype.add = function(data) {\n    (this || _global$A).cache = Buffer.concat([(this || _global$A).cache, data]);\n  };\n  Splitter.prototype.get = function(autoPadding) {\n    var out;\n    if (autoPadding) {\n      if ((this || _global$A).cache.length > 16) {\n        out = (this || _global$A).cache.slice(0, 16);\n        (this || _global$A).cache = (this || _global$A).cache.slice(16);\n        return out;\n      }\n    } else {\n      if ((this || _global$A).cache.length >= 16) {\n        out = (this || _global$A).cache.slice(0, 16);\n        (this || _global$A).cache = (this || _global$A).cache.slice(16);\n        return out;\n      }\n    }\n    return null;\n  };\n  Splitter.prototype.flush = function() {\n    if ((this || _global$A).cache.length) return (this || _global$A).cache;\n  };\n  function unpad(last) {\n    var padded = last[15];\n    if (padded < 1 || padded > 16) {\n      throw new Error(\"unable to decrypt data\");\n    }\n    var i5 = -1;\n    while (++i5 < padded) {\n      if (last[i5 + (16 - padded)] !== padded) {\n        throw new Error(\"unable to decrypt data\");\n      }\n    }\n    if (padded === 16) return;\n    return last.slice(0, 16 - padded);\n  }\n  function createDecipheriv2(suite, password, iv) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    if (typeof iv === \"string\") iv = Buffer.from(iv);\n    if (config2.mode !== \"GCM\" && iv.length !== config2.iv) throw new TypeError(\"invalid iv length \" + iv.length);\n    if (typeof password === \"string\") password = Buffer.from(password);\n    if (password.length !== config2.key / 8) throw new TypeError(\"invalid key length \" + password.length);\n    if (config2.type === \"stream\") {\n      return new StreamCipher(config2.module, password, iv, true);\n    } else if (config2.type === \"auth\") {\n      return new AuthCipher(config2.module, password, iv, true);\n    }\n    return new Decipher2(config2.module, password, iv);\n  }\n  function createDecipher2(suite, password) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    var keys = ebtk(password, false, config2.key, config2.iv);\n    return createDecipheriv2(suite, keys.key, keys.iv);\n  }\n  exports$20.createDecipher = createDecipher2;\n  exports$20.createDecipheriv = createDecipheriv2;\n  return exports$20;\n}\nvar exports$1$ = {};\nvar _dewExec$1_ = false;\nfunction dew$1_() {\n  if (_dewExec$1_) return exports$1$;\n  _dewExec$1_ = true;\n  var ciphers = dew$20();\n  var deciphers = dew$1$();\n  var modes = _list$1;\n  function getCiphers2() {\n    return Object.keys(modes);\n  }\n  exports$1$.createCipher = exports$1$.Cipher = ciphers.createCipher;\n  exports$1$.createCipheriv = exports$1$.Cipheriv = ciphers.createCipheriv;\n  exports$1$.createDecipher = exports$1$.Decipher = deciphers.createDecipher;\n  exports$1$.createDecipheriv = exports$1$.Decipheriv = deciphers.createDecipheriv;\n  exports$1$.listCiphers = exports$1$.getCiphers = getCiphers2;\n  return exports$1$;\n}\nvar exports$1_ = {};\nvar _dewExec$1Z = false;\nfunction dew$1Z() {\n  if (_dewExec$1Z) return exports$1_;\n  _dewExec$1Z = true;\n  exports$1_[\"des-ecb\"] = {\n    key: 8,\n    iv: 0\n  };\n  exports$1_[\"des-cbc\"] = exports$1_.des = {\n    key: 8,\n    iv: 8\n  };\n  exports$1_[\"des-ede3-cbc\"] = exports$1_.des3 = {\n    key: 24,\n    iv: 8\n  };\n  exports$1_[\"des-ede3\"] = {\n    key: 24,\n    iv: 0\n  };\n  exports$1_[\"des-ede-cbc\"] = {\n    key: 16,\n    iv: 8\n  };\n  exports$1_[\"des-ede\"] = {\n    key: 16,\n    iv: 0\n  };\n  return exports$1_;\n}\nvar exports$1Z = {};\nvar _dewExec$1Y = false;\nfunction dew$1Y() {\n  if (_dewExec$1Y) return exports$1Z;\n  _dewExec$1Y = true;\n  var DES = dew$2g();\n  var aes = dew$1_();\n  var aesModes = dew$26();\n  var desModes = dew$1Z();\n  var ebtk = dew$21();\n  function createCipher2(suite, password) {\n    suite = suite.toLowerCase();\n    var keyLen, ivLen;\n    if (aesModes[suite]) {\n      keyLen = aesModes[suite].key;\n      ivLen = aesModes[suite].iv;\n    } else if (desModes[suite]) {\n      keyLen = desModes[suite].key * 8;\n      ivLen = desModes[suite].iv;\n    } else {\n      throw new TypeError(\"invalid suite type\");\n    }\n    var keys = ebtk(password, false, keyLen, ivLen);\n    return createCipheriv2(suite, keys.key, keys.iv);\n  }\n  function createDecipher2(suite, password) {\n    suite = suite.toLowerCase();\n    var keyLen, ivLen;\n    if (aesModes[suite]) {\n      keyLen = aesModes[suite].key;\n      ivLen = aesModes[suite].iv;\n    } else if (desModes[suite]) {\n      keyLen = desModes[suite].key * 8;\n      ivLen = desModes[suite].iv;\n    } else {\n      throw new TypeError(\"invalid suite type\");\n    }\n    var keys = ebtk(password, false, keyLen, ivLen);\n    return createDecipheriv2(suite, keys.key, keys.iv);\n  }\n  function createCipheriv2(suite, key, iv) {\n    suite = suite.toLowerCase();\n    if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);\n    if (desModes[suite]) return new DES({\n      key,\n      iv,\n      mode: suite\n    });\n    throw new TypeError(\"invalid suite type\");\n  }\n  function createDecipheriv2(suite, key, iv) {\n    suite = suite.toLowerCase();\n    if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);\n    if (desModes[suite]) return new DES({\n      key,\n      iv,\n      mode: suite,\n      decrypt: true\n    });\n    throw new TypeError(\"invalid suite type\");\n  }\n  function getCiphers2() {\n    return Object.keys(desModes).concat(aes.getCiphers());\n  }\n  exports$1Z.createCipher = exports$1Z.Cipher = createCipher2;\n  exports$1Z.createCipheriv = exports$1Z.Cipheriv = createCipheriv2;\n  exports$1Z.createDecipher = exports$1Z.Decipher = createDecipher2;\n  exports$1Z.createDecipheriv = exports$1Z.Decipheriv = createDecipheriv2;\n  exports$1Z.listCiphers = exports$1Z.getCiphers = getCiphers2;\n  return exports$1Z;\n}\nvar exports$1Y = {};\nvar _dewExec$1X = false;\nvar module$a = {\n  exports: exports$1Y\n};\nvar _global$z = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1X() {\n  if (_dewExec$1X) return module$a.exports;\n  _dewExec$1X = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$z).negative = 0;\n      (this || _global$z).words = null;\n      (this || _global$z).length = 0;\n      (this || _global$z).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = buffer.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$z).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$z).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$z).words = [number & 67108863];\n        (this || _global$z).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$z).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$z).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$z).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$z).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$z).words = [0];\n        (this || _global$z).length = 1;\n        return this || _global$z;\n      }\n      (this || _global$z).length = Math.ceil(number.length / 3);\n      (this || _global$z).words = new Array((this || _global$z).length);\n      for (var i5 = 0; i5 < (this || _global$z).length; i5++) {\n        (this || _global$z).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$z).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$z).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$z).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$z).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$z).length = Math.ceil((number.length - start) / 6);\n      (this || _global$z).words = new Array((this || _global$z).length);\n      for (var i5 = 0; i5 < (this || _global$z).length; i5++) {\n        (this || _global$z).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$z).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$z).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$z).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$z).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$z).words = [0];\n      (this || _global$z).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$z).words[0] + word < 67108864) {\n          (this || _global$z).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$z).words[0] + word < 67108864) {\n          (this || _global$z).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$z).length);\n      for (var i5 = 0; i5 < (this || _global$z).length; i5++) {\n        dest.words[i5] = (this || _global$z).words[i5];\n      }\n      dest.length = (this || _global$z).length;\n      dest.negative = (this || _global$z).negative;\n      dest.red = (this || _global$z).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$z).length < size) {\n        (this || _global$z).words[(this || _global$z).length++] = 0;\n      }\n      return this || _global$z;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$z).length > 1 && (this || _global$z).words[(this || _global$z).length - 1] === 0) {\n        (this || _global$z).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$z).length === 1 && (this || _global$z).words[0] === 0) {\n        (this || _global$z).negative = 0;\n      }\n      return this || _global$z;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$z).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$z).length; i5++) {\n          var w4 = (this || _global$z).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$z).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$z).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$z).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$z).words[0];\n      if ((this || _global$z).length === 2) {\n        ret += (this || _global$z).words[1] * 67108864;\n      } else if ((this || _global$z).length === 3 && (this || _global$z).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$z).words[1] * 67108864;\n      } else if ((this || _global$z).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$z).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$z).words[(this || _global$z).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$z).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$z).length; i5++) {\n        var b4 = this._zeroBits((this || _global$z).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$z).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$z).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$z).negative ^= 1;\n      }\n      return this || _global$z;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$z).length < num.length) {\n        (this || _global$z).words[(this || _global$z).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$z).words[i5] = (this || _global$z).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$z).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$z).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$z);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$z).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$z);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$z).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$z;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$z).words[i5] = (this || _global$z).words[i5] & num.words[i5];\n      }\n      (this || _global$z).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$z).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$z).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$z);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$z).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$z);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$z).length > num.length) {\n        a5 = this || _global$z;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$z;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$z).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$z) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$z).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$z).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$z).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$z).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$z);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$z).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$z);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$z).words[i5] = ~(this || _global$z).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$z).words[i5] = ~(this || _global$z).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$z).words[off2] = (this || _global$z).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$z).words[off2] = (this || _global$z).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$z).negative !== 0 && num.negative === 0) {\n        (this || _global$z).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$z).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$z).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$z).length > num.length) {\n        a5 = this || _global$z;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$z;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$z).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$z).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$z).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$z).words[(this || _global$z).length] = carry;\n        (this || _global$z).length++;\n      } else if (a5 !== (this || _global$z)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$z).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$z;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$z).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$z).negative !== 0) {\n        (this || _global$z).negative = 0;\n        res = num.sub(this || _global$z);\n        (this || _global$z).negative = 1;\n        return res;\n      }\n      if ((this || _global$z).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$z);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$z).negative !== 0) {\n        (this || _global$z).negative = 0;\n        this.iadd(num);\n        (this || _global$z).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$z).negative = 0;\n        (this || _global$z).length = 1;\n        (this || _global$z).words[0] = 0;\n        return this || _global$z;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$z;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$z;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$z).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$z).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$z)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$z).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$z).length = Math.max((this || _global$z).length, i5);\n      if (a5 !== (this || _global$z)) {\n        (this || _global$z).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$z).length + num.length;\n      if ((this || _global$z).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$z, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$z, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$z, num, out);\n      } else {\n        res = jumboMulTo(this || _global$z, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$z).x = x4;\n      (this || _global$z).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$z).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$z).length + num.length);\n      return jumboMulTo(this || _global$z, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$z);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$z).length; i5++) {\n        var w4 = ((this || _global$z).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$z).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$z).words[i5] = carry;\n        (this || _global$z).length++;\n      }\n      return this || _global$z;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$z);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$z;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$z).length; i5++) {\n          var newCarry = (this || _global$z).words[i5] & carryMask;\n          var c5 = ((this || _global$z).words[i5] | 0) - newCarry << r5;\n          (this || _global$z).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$z).words[i5] = carry;\n          (this || _global$z).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$z).length - 1; i5 >= 0; i5--) {\n          (this || _global$z).words[i5 + s5] = (this || _global$z).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$z).words[i5] = 0;\n        }\n        (this || _global$z).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$z).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$z).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$z).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$z).length > s5) {\n        (this || _global$z).length -= s5;\n        for (i5 = 0; i5 < (this || _global$z).length; i5++) {\n          (this || _global$z).words[i5] = (this || _global$z).words[i5 + s5];\n        }\n      } else {\n        (this || _global$z).words[0] = 0;\n        (this || _global$z).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$z).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$z).words[i5] | 0;\n        (this || _global$z).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$z).length === 0) {\n        (this || _global$z).words[0] = 0;\n        (this || _global$z).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$z).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$z).length <= s5) return false;\n      var w4 = (this || _global$z).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$z).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$z).length <= s5) {\n        return this || _global$z;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$z).length = Math.min(s5, (this || _global$z).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$z).words[(this || _global$z).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$z).negative !== 0) {\n        if ((this || _global$z).length === 1 && ((this || _global$z).words[0] | 0) < num) {\n          (this || _global$z).words[0] = num - ((this || _global$z).words[0] | 0);\n          (this || _global$z).negative = 0;\n          return this || _global$z;\n        }\n        (this || _global$z).negative = 0;\n        this.isubn(num);\n        (this || _global$z).negative = 1;\n        return this || _global$z;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$z).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$z).length && (this || _global$z).words[i5] >= 67108864; i5++) {\n        (this || _global$z).words[i5] -= 67108864;\n        if (i5 === (this || _global$z).length - 1) {\n          (this || _global$z).words[i5 + 1] = 1;\n        } else {\n          (this || _global$z).words[i5 + 1]++;\n        }\n      }\n      (this || _global$z).length = Math.max((this || _global$z).length, i5 + 1);\n      return this || _global$z;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$z).negative !== 0) {\n        (this || _global$z).negative = 0;\n        this.iaddn(num);\n        (this || _global$z).negative = 1;\n        return this || _global$z;\n      }\n      (this || _global$z).words[0] -= num;\n      if ((this || _global$z).length === 1 && (this || _global$z).words[0] < 0) {\n        (this || _global$z).words[0] = -(this || _global$z).words[0];\n        (this || _global$z).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$z).length && (this || _global$z).words[i5] < 0; i5++) {\n          (this || _global$z).words[i5] += 67108864;\n          (this || _global$z).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$z).negative = 0;\n      return this || _global$z;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$z).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$z).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$z).length - shift; i5++) {\n        w4 = ((this || _global$z).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$z).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$z).length; i5++) {\n        w4 = -((this || _global$z).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$z).words[i5] = w4 & 67108863;\n      }\n      (this || _global$z).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$z).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$z).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$z).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$z).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$z).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$z\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$z).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$z).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$z).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$z).words[i5] | 0) + carry * 67108864;\n        (this || _global$z).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$z;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$z;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$z).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$z).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$z).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$z).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$z).words[s5] |= q3;\n        return this || _global$z;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$z).length; i5++) {\n        var w4 = (this || _global$z).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$z).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$z).words[i5] = carry;\n        (this || _global$z).length++;\n      }\n      return this || _global$z;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$z).length === 1 && (this || _global$z).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$z).negative !== 0 && !negative) return -1;\n      if ((this || _global$z).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$z).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$z).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$z).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$z).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$z).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$z).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$z).length > num.length) return 1;\n      if ((this || _global$z).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$z).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$z).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$z).red, \"Already a number in reduction context\");\n      assert2((this || _global$z).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$z)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$z).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$z).red.convertFrom(this || _global$z);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$z).red = ctx;\n      return this || _global$z;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$z).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$z).red, \"redAdd works only with red numbers\");\n      return (this || _global$z).red.add(this || _global$z, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$z).red, \"redIAdd works only with red numbers\");\n      return (this || _global$z).red.iadd(this || _global$z, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$z).red, \"redSub works only with red numbers\");\n      return (this || _global$z).red.sub(this || _global$z, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$z).red, \"redISub works only with red numbers\");\n      return (this || _global$z).red.isub(this || _global$z, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$z).red, \"redShl works only with red numbers\");\n      return (this || _global$z).red.shl(this || _global$z, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$z).red, \"redMul works only with red numbers\");\n      (this || _global$z).red._verify2(this || _global$z, num);\n      return (this || _global$z).red.mul(this || _global$z, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$z).red, \"redMul works only with red numbers\");\n      (this || _global$z).red._verify2(this || _global$z, num);\n      return (this || _global$z).red.imul(this || _global$z, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$z).red, \"redSqr works only with red numbers\");\n      (this || _global$z).red._verify1(this || _global$z);\n      return (this || _global$z).red.sqr(this || _global$z);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$z).red, \"redISqr works only with red numbers\");\n      (this || _global$z).red._verify1(this || _global$z);\n      return (this || _global$z).red.isqr(this || _global$z);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$z).red, \"redSqrt works only with red numbers\");\n      (this || _global$z).red._verify1(this || _global$z);\n      return (this || _global$z).red.sqrt(this || _global$z);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$z).red, \"redInvm works only with red numbers\");\n      (this || _global$z).red._verify1(this || _global$z);\n      return (this || _global$z).red.invm(this || _global$z);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$z).red, \"redNeg works only with red numbers\");\n      (this || _global$z).red._verify1(this || _global$z);\n      return (this || _global$z).red.neg(this || _global$z);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$z).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$z).red._verify1(this || _global$z);\n      return (this || _global$z).red.pow(this || _global$z, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$z).name = name2;\n      (this || _global$z).p = new BN(p5, 16);\n      (this || _global$z).n = (this || _global$z).p.bitLength();\n      (this || _global$z).k = new BN(1).iushln((this || _global$z).n).isub((this || _global$z).p);\n      (this || _global$z).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$z).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$z).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$z).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$z).n);\n      var cmp = rlen < (this || _global$z).n ? -1 : r5.ucmp((this || _global$z).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$z).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$z).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$z).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$z, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$z, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$z, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$z, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$z).m = prime.p;\n        (this || _global$z).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$z).m = m4;\n        (this || _global$z).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$z).prime) return (this || _global$z).prime.ireduce(a5)._forceRed(this || _global$z);\n      return a5.umod((this || _global$z).m)._forceRed(this || _global$z);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$z).m.sub(a5)._forceRed(this || _global$z);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$z).m) >= 0) {\n        res.isub((this || _global$z).m);\n      }\n      return res._forceRed(this || _global$z);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$z).m) >= 0) {\n        res.isub((this || _global$z).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$z).m);\n      }\n      return res._forceRed(this || _global$z);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$z).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$z).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$z).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$z).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$z);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$z).m.subn(1).iushrn(1);\n      var z4 = (this || _global$z).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$z);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$z).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$z);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$z);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$z).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$z, m4);\n      (this || _global$z).shift = (this || _global$z).m.bitLength();\n      if ((this || _global$z).shift % 26 !== 0) {\n        (this || _global$z).shift += 26 - (this || _global$z).shift % 26;\n      }\n      (this || _global$z).r = new BN(1).iushln((this || _global$z).shift);\n      (this || _global$z).r2 = this.imod((this || _global$z).r.sqr());\n      (this || _global$z).rinv = (this || _global$z).r._invmp((this || _global$z).m);\n      (this || _global$z).minv = (this || _global$z).rinv.mul((this || _global$z).r).isubn(1).div((this || _global$z).m);\n      (this || _global$z).minv = (this || _global$z).minv.umod((this || _global$z).r);\n      (this || _global$z).minv = (this || _global$z).r.sub((this || _global$z).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$z).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$z).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$z).shift).mul((this || _global$z).minv).imaskn((this || _global$z).shift).mul((this || _global$z).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$z).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$z).m) >= 0) {\n        res = u5.isub((this || _global$z).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$z).m);\n      }\n      return res._forceRed(this || _global$z);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$z);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$z).shift).mul((this || _global$z).minv).imaskn((this || _global$z).shift).mul((this || _global$z).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$z).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$z).m) >= 0) {\n        res = u5.isub((this || _global$z).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$z).m);\n      }\n      return res._forceRed(this || _global$z);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$z).m).mul((this || _global$z).r2));\n      return res._forceRed(this || _global$z);\n    };\n  })(module$a, exports$1Y);\n  return module$a.exports;\n}\nvar exports$1X = {};\nvar _dewExec$1W = false;\nvar module$9 = {\n  exports: exports$1X\n};\nvar _global$y = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1W() {\n  if (_dewExec$1W) return module$9.exports;\n  _dewExec$1W = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$y).negative = 0;\n      (this || _global$y).words = null;\n      (this || _global$y).length = 0;\n      (this || _global$y).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = buffer.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$y).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$y).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$y).words = [number & 67108863];\n        (this || _global$y).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$y).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$y).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$y).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$y).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$y).words = [0];\n        (this || _global$y).length = 1;\n        return this || _global$y;\n      }\n      (this || _global$y).length = Math.ceil(number.length / 3);\n      (this || _global$y).words = new Array((this || _global$y).length);\n      for (var i5 = 0; i5 < (this || _global$y).length; i5++) {\n        (this || _global$y).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$y).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$y).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$y).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$y).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$y).length = Math.ceil((number.length - start) / 6);\n      (this || _global$y).words = new Array((this || _global$y).length);\n      for (var i5 = 0; i5 < (this || _global$y).length; i5++) {\n        (this || _global$y).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$y).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$y).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$y).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$y).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$y).words = [0];\n      (this || _global$y).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$y).words[0] + word < 67108864) {\n          (this || _global$y).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$y).words[0] + word < 67108864) {\n          (this || _global$y).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$y).length);\n      for (var i5 = 0; i5 < (this || _global$y).length; i5++) {\n        dest.words[i5] = (this || _global$y).words[i5];\n      }\n      dest.length = (this || _global$y).length;\n      dest.negative = (this || _global$y).negative;\n      dest.red = (this || _global$y).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$y).length < size) {\n        (this || _global$y).words[(this || _global$y).length++] = 0;\n      }\n      return this || _global$y;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$y).length > 1 && (this || _global$y).words[(this || _global$y).length - 1] === 0) {\n        (this || _global$y).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$y).length === 1 && (this || _global$y).words[0] === 0) {\n        (this || _global$y).negative = 0;\n      }\n      return this || _global$y;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$y).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$y).length; i5++) {\n          var w4 = (this || _global$y).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$y).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$y).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$y).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$y).words[0];\n      if ((this || _global$y).length === 2) {\n        ret += (this || _global$y).words[1] * 67108864;\n      } else if ((this || _global$y).length === 3 && (this || _global$y).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$y).words[1] * 67108864;\n      } else if ((this || _global$y).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$y).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$y).words[(this || _global$y).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$y).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$y).length; i5++) {\n        var b4 = this._zeroBits((this || _global$y).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$y).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$y).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$y).negative ^= 1;\n      }\n      return this || _global$y;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$y).length < num.length) {\n        (this || _global$y).words[(this || _global$y).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$y).words[i5] = (this || _global$y).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$y).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$y).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$y);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$y).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$y);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$y).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$y;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$y).words[i5] = (this || _global$y).words[i5] & num.words[i5];\n      }\n      (this || _global$y).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$y).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$y).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$y);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$y).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$y);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$y).length > num.length) {\n        a5 = this || _global$y;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$y;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$y).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$y) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$y).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$y).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$y).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$y).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$y);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$y).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$y);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$y).words[i5] = ~(this || _global$y).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$y).words[i5] = ~(this || _global$y).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$y).words[off2] = (this || _global$y).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$y).words[off2] = (this || _global$y).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$y).negative !== 0 && num.negative === 0) {\n        (this || _global$y).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$y).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$y).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$y).length > num.length) {\n        a5 = this || _global$y;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$y;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$y).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$y).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$y).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$y).words[(this || _global$y).length] = carry;\n        (this || _global$y).length++;\n      } else if (a5 !== (this || _global$y)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$y).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$y;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$y).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$y).negative !== 0) {\n        (this || _global$y).negative = 0;\n        res = num.sub(this || _global$y);\n        (this || _global$y).negative = 1;\n        return res;\n      }\n      if ((this || _global$y).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$y);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$y).negative !== 0) {\n        (this || _global$y).negative = 0;\n        this.iadd(num);\n        (this || _global$y).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$y).negative = 0;\n        (this || _global$y).length = 1;\n        (this || _global$y).words[0] = 0;\n        return this || _global$y;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$y;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$y;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$y).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$y).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$y)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$y).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$y).length = Math.max((this || _global$y).length, i5);\n      if (a5 !== (this || _global$y)) {\n        (this || _global$y).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$y).length + num.length;\n      if ((this || _global$y).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$y, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$y, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$y, num, out);\n      } else {\n        res = jumboMulTo(this || _global$y, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$y).x = x4;\n      (this || _global$y).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$y).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$y).length + num.length);\n      return jumboMulTo(this || _global$y, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$y);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$y).length; i5++) {\n        var w4 = ((this || _global$y).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$y).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$y).words[i5] = carry;\n        (this || _global$y).length++;\n      }\n      return this || _global$y;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$y);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$y;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$y).length; i5++) {\n          var newCarry = (this || _global$y).words[i5] & carryMask;\n          var c5 = ((this || _global$y).words[i5] | 0) - newCarry << r5;\n          (this || _global$y).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$y).words[i5] = carry;\n          (this || _global$y).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$y).length - 1; i5 >= 0; i5--) {\n          (this || _global$y).words[i5 + s5] = (this || _global$y).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$y).words[i5] = 0;\n        }\n        (this || _global$y).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$y).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$y).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$y).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$y).length > s5) {\n        (this || _global$y).length -= s5;\n        for (i5 = 0; i5 < (this || _global$y).length; i5++) {\n          (this || _global$y).words[i5] = (this || _global$y).words[i5 + s5];\n        }\n      } else {\n        (this || _global$y).words[0] = 0;\n        (this || _global$y).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$y).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$y).words[i5] | 0;\n        (this || _global$y).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$y).length === 0) {\n        (this || _global$y).words[0] = 0;\n        (this || _global$y).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$y).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$y).length <= s5) return false;\n      var w4 = (this || _global$y).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$y).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$y).length <= s5) {\n        return this || _global$y;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$y).length = Math.min(s5, (this || _global$y).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$y).words[(this || _global$y).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$y).negative !== 0) {\n        if ((this || _global$y).length === 1 && ((this || _global$y).words[0] | 0) < num) {\n          (this || _global$y).words[0] = num - ((this || _global$y).words[0] | 0);\n          (this || _global$y).negative = 0;\n          return this || _global$y;\n        }\n        (this || _global$y).negative = 0;\n        this.isubn(num);\n        (this || _global$y).negative = 1;\n        return this || _global$y;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$y).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$y).length && (this || _global$y).words[i5] >= 67108864; i5++) {\n        (this || _global$y).words[i5] -= 67108864;\n        if (i5 === (this || _global$y).length - 1) {\n          (this || _global$y).words[i5 + 1] = 1;\n        } else {\n          (this || _global$y).words[i5 + 1]++;\n        }\n      }\n      (this || _global$y).length = Math.max((this || _global$y).length, i5 + 1);\n      return this || _global$y;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$y).negative !== 0) {\n        (this || _global$y).negative = 0;\n        this.iaddn(num);\n        (this || _global$y).negative = 1;\n        return this || _global$y;\n      }\n      (this || _global$y).words[0] -= num;\n      if ((this || _global$y).length === 1 && (this || _global$y).words[0] < 0) {\n        (this || _global$y).words[0] = -(this || _global$y).words[0];\n        (this || _global$y).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$y).length && (this || _global$y).words[i5] < 0; i5++) {\n          (this || _global$y).words[i5] += 67108864;\n          (this || _global$y).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$y).negative = 0;\n      return this || _global$y;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$y).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$y).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$y).length - shift; i5++) {\n        w4 = ((this || _global$y).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$y).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$y).length; i5++) {\n        w4 = -((this || _global$y).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$y).words[i5] = w4 & 67108863;\n      }\n      (this || _global$y).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$y).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$y).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$y).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$y).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$y).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$y\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$y).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$y).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$y).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$y).words[i5] | 0) + carry * 67108864;\n        (this || _global$y).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$y;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$y;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$y).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$y).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$y).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$y).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$y).words[s5] |= q3;\n        return this || _global$y;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$y).length; i5++) {\n        var w4 = (this || _global$y).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$y).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$y).words[i5] = carry;\n        (this || _global$y).length++;\n      }\n      return this || _global$y;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$y).length === 1 && (this || _global$y).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$y).negative !== 0 && !negative) return -1;\n      if ((this || _global$y).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$y).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$y).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$y).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$y).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$y).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$y).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$y).length > num.length) return 1;\n      if ((this || _global$y).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$y).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$y).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$y).red, \"Already a number in reduction context\");\n      assert2((this || _global$y).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$y)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$y).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$y).red.convertFrom(this || _global$y);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$y).red = ctx;\n      return this || _global$y;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$y).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$y).red, \"redAdd works only with red numbers\");\n      return (this || _global$y).red.add(this || _global$y, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$y).red, \"redIAdd works only with red numbers\");\n      return (this || _global$y).red.iadd(this || _global$y, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$y).red, \"redSub works only with red numbers\");\n      return (this || _global$y).red.sub(this || _global$y, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$y).red, \"redISub works only with red numbers\");\n      return (this || _global$y).red.isub(this || _global$y, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$y).red, \"redShl works only with red numbers\");\n      return (this || _global$y).red.shl(this || _global$y, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$y).red, \"redMul works only with red numbers\");\n      (this || _global$y).red._verify2(this || _global$y, num);\n      return (this || _global$y).red.mul(this || _global$y, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$y).red, \"redMul works only with red numbers\");\n      (this || _global$y).red._verify2(this || _global$y, num);\n      return (this || _global$y).red.imul(this || _global$y, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$y).red, \"redSqr works only with red numbers\");\n      (this || _global$y).red._verify1(this || _global$y);\n      return (this || _global$y).red.sqr(this || _global$y);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$y).red, \"redISqr works only with red numbers\");\n      (this || _global$y).red._verify1(this || _global$y);\n      return (this || _global$y).red.isqr(this || _global$y);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$y).red, \"redSqrt works only with red numbers\");\n      (this || _global$y).red._verify1(this || _global$y);\n      return (this || _global$y).red.sqrt(this || _global$y);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$y).red, \"redInvm works only with red numbers\");\n      (this || _global$y).red._verify1(this || _global$y);\n      return (this || _global$y).red.invm(this || _global$y);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$y).red, \"redNeg works only with red numbers\");\n      (this || _global$y).red._verify1(this || _global$y);\n      return (this || _global$y).red.neg(this || _global$y);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$y).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$y).red._verify1(this || _global$y);\n      return (this || _global$y).red.pow(this || _global$y, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$y).name = name2;\n      (this || _global$y).p = new BN(p5, 16);\n      (this || _global$y).n = (this || _global$y).p.bitLength();\n      (this || _global$y).k = new BN(1).iushln((this || _global$y).n).isub((this || _global$y).p);\n      (this || _global$y).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$y).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$y).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$y).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$y).n);\n      var cmp = rlen < (this || _global$y).n ? -1 : r5.ucmp((this || _global$y).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$y).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$y).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$y).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$y, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$y, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$y, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$y, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$y).m = prime.p;\n        (this || _global$y).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$y).m = m4;\n        (this || _global$y).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$y).prime) return (this || _global$y).prime.ireduce(a5)._forceRed(this || _global$y);\n      return a5.umod((this || _global$y).m)._forceRed(this || _global$y);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$y).m.sub(a5)._forceRed(this || _global$y);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$y).m) >= 0) {\n        res.isub((this || _global$y).m);\n      }\n      return res._forceRed(this || _global$y);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$y).m) >= 0) {\n        res.isub((this || _global$y).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$y).m);\n      }\n      return res._forceRed(this || _global$y);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$y).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$y).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$y).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$y).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$y);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$y).m.subn(1).iushrn(1);\n      var z4 = (this || _global$y).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$y);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$y).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$y);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$y);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$y).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$y, m4);\n      (this || _global$y).shift = (this || _global$y).m.bitLength();\n      if ((this || _global$y).shift % 26 !== 0) {\n        (this || _global$y).shift += 26 - (this || _global$y).shift % 26;\n      }\n      (this || _global$y).r = new BN(1).iushln((this || _global$y).shift);\n      (this || _global$y).r2 = this.imod((this || _global$y).r.sqr());\n      (this || _global$y).rinv = (this || _global$y).r._invmp((this || _global$y).m);\n      (this || _global$y).minv = (this || _global$y).rinv.mul((this || _global$y).r).isubn(1).div((this || _global$y).m);\n      (this || _global$y).minv = (this || _global$y).minv.umod((this || _global$y).r);\n      (this || _global$y).minv = (this || _global$y).r.sub((this || _global$y).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$y).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$y).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$y).shift).mul((this || _global$y).minv).imaskn((this || _global$y).shift).mul((this || _global$y).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$y).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$y).m) >= 0) {\n        res = u5.isub((this || _global$y).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$y).m);\n      }\n      return res._forceRed(this || _global$y);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$y);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$y).shift).mul((this || _global$y).minv).imaskn((this || _global$y).shift).mul((this || _global$y).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$y).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$y).m) >= 0) {\n        res = u5.isub((this || _global$y).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$y).m);\n      }\n      return res._forceRed(this || _global$y);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$y).m).mul((this || _global$y).r2));\n      return res._forceRed(this || _global$y);\n    };\n  })(module$9, exports$1X);\n  return module$9.exports;\n}\nvar exports$1W = {};\nvar _dewExec$1V = false;\nfunction dew$1V() {\n  if (_dewExec$1V) return exports$1W;\n  _dewExec$1V = true;\n  exports$1W = exports$1W = dew$3$2();\n  exports$1W.Stream = exports$1W;\n  exports$1W.Readable = exports$1W;\n  exports$1W.Writable = dew$8$2();\n  exports$1W.Duplex = dew$7$2();\n  exports$1W.Transform = dew$2$2();\n  exports$1W.PassThrough = dew$1$2();\n  exports$1W.finished = dew$6$2();\n  exports$1W.pipeline = dew$2B();\n  return exports$1W;\n}\nvar exports$1U = {};\nvar _dewExec$1T = false;\nfunction dew$1T() {\n  if (_dewExec$1T) return exports$1U;\n  _dewExec$1T = true;\n  var buffer2 = e$1$1;\n  var Buffer = buffer2.Buffer;\n  function copyProps(src, dst) {\n    for (var key in src) {\n      dst[key] = src[key];\n    }\n  }\n  if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n    exports$1U = buffer2;\n  } else {\n    copyProps(buffer2, exports$1U);\n    exports$1U.Buffer = SafeBuffer;\n  }\n  function SafeBuffer(arg, encodingOrOffset, length) {\n    return Buffer(arg, encodingOrOffset, length);\n  }\n  SafeBuffer.prototype = Object.create(Buffer.prototype);\n  copyProps(Buffer, SafeBuffer);\n  SafeBuffer.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  SafeBuffer.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 !== void 0) {\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  SafeBuffer.allocUnsafe = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return Buffer(size);\n  };\n  SafeBuffer.allocUnsafeSlow = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return buffer2.SlowBuffer(size);\n  };\n  return exports$1U;\n}\nvar exports$1T = {};\nvar _dewExec$1S = false;\nvar _global$w = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1S() {\n  if (_dewExec$1S) return exports$1T;\n  _dewExec$1S = true;\n  var process3 = T$1;\n  var MAX_BYTES = 65536;\n  var MAX_UINT32 = 4294967295;\n  function oldBrowser() {\n    throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\");\n  }\n  var Buffer = dew$1T().Buffer;\n  var crypto2 = _global$w.crypto || _global$w.msCrypto;\n  if (crypto2 && crypto2.getRandomValues) {\n    exports$1T = randomBytes2;\n  } else {\n    exports$1T = oldBrowser;\n  }\n  function randomBytes2(size, cb) {\n    if (size > MAX_UINT32) throw new RangeError(\"requested too many random bytes\");\n    var bytes = Buffer.allocUnsafe(size);\n    if (size > 0) {\n      if (size > MAX_BYTES) {\n        for (var generated = 0; generated < size; generated += MAX_BYTES) {\n          crypto2.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));\n        }\n      } else {\n        crypto2.getRandomValues(bytes);\n      }\n    }\n    if (typeof cb === \"function\") {\n      return process3.nextTick(function() {\n        cb(null, bytes);\n      });\n    }\n    return bytes;\n  }\n  return exports$1T;\n}\nvar exports$1S = {};\nvar _dewExec$1R = false;\nfunction dew$1R() {\n  if (_dewExec$1R) return exports$1S;\n  _dewExec$1R = true;\n  var Buffer = dew$1T().Buffer;\n  var Transform = dew$1V().Transform;\n  var inherits = dew$f$2();\n  function throwIfNotStringOrBuffer(val, prefix) {\n    if (!Buffer.isBuffer(val) && typeof val !== \"string\") {\n      throw new TypeError(prefix + \" must be a string or a buffer\");\n    }\n  }\n  function HashBase(blockSize) {\n    Transform.call(this);\n    this._block = Buffer.allocUnsafe(blockSize);\n    this._blockSize = blockSize;\n    this._blockOffset = 0;\n    this._length = [0, 0, 0, 0];\n    this._finalized = false;\n  }\n  inherits(HashBase, Transform);\n  HashBase.prototype._transform = function(chunk, encoding, callback) {\n    var error = null;\n    try {\n      this.update(chunk, encoding);\n    } catch (err) {\n      error = err;\n    }\n    callback(error);\n  };\n  HashBase.prototype._flush = function(callback) {\n    var error = null;\n    try {\n      this.push(this.digest());\n    } catch (err) {\n      error = err;\n    }\n    callback(error);\n  };\n  HashBase.prototype.update = function(data, encoding) {\n    throwIfNotStringOrBuffer(data, \"Data\");\n    if (this._finalized) throw new Error(\"Digest already called\");\n    if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding);\n    var block = this._block;\n    var offset = 0;\n    while (this._blockOffset + data.length - offset >= this._blockSize) {\n      for (var i5 = this._blockOffset; i5 < this._blockSize; ) block[i5++] = data[offset++];\n      this._update();\n      this._blockOffset = 0;\n    }\n    while (offset < data.length) block[this._blockOffset++] = data[offset++];\n    for (var j4 = 0, carry = data.length * 8; carry > 0; ++j4) {\n      this._length[j4] += carry;\n      carry = this._length[j4] / 4294967296 | 0;\n      if (carry > 0) this._length[j4] -= 4294967296 * carry;\n    }\n    return this;\n  };\n  HashBase.prototype._update = function() {\n    throw new Error(\"_update is not implemented\");\n  };\n  HashBase.prototype.digest = function(encoding) {\n    if (this._finalized) throw new Error(\"Digest already called\");\n    this._finalized = true;\n    var digest = this._digest();\n    if (encoding !== void 0) digest = digest.toString(encoding);\n    this._block.fill(0);\n    this._blockOffset = 0;\n    for (var i5 = 0; i5 < 4; ++i5) this._length[i5] = 0;\n    return digest;\n  };\n  HashBase.prototype._digest = function() {\n    throw new Error(\"_digest is not implemented\");\n  };\n  exports$1S = HashBase;\n  return exports$1S;\n}\nvar exports$1R = {};\nvar _dewExec$1Q = false;\nfunction dew$1Q() {\n  if (_dewExec$1Q) return exports$1R;\n  _dewExec$1Q = true;\n  var inherits = dew$f$2();\n  var HashBase = dew$1R();\n  var Buffer = dew$1T().Buffer;\n  var ARRAY16 = new Array(16);\n  function MD5() {\n    HashBase.call(this, 64);\n    this._a = 1732584193;\n    this._b = 4023233417;\n    this._c = 2562383102;\n    this._d = 271733878;\n  }\n  inherits(MD5, HashBase);\n  MD5.prototype._update = function() {\n    var M4 = ARRAY16;\n    for (var i5 = 0; i5 < 16; ++i5) M4[i5] = this._block.readInt32LE(i5 * 4);\n    var a5 = this._a;\n    var b4 = this._b;\n    var c5 = this._c;\n    var d4 = this._d;\n    a5 = fnF(a5, b4, c5, d4, M4[0], 3614090360, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[1], 3905402710, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[2], 606105819, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[3], 3250441966, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[4], 4118548399, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[5], 1200080426, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[6], 2821735955, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[7], 4249261313, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[8], 1770035416, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[9], 2336552879, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[10], 4294925233, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[11], 2304563134, 22);\n    a5 = fnF(a5, b4, c5, d4, M4[12], 1804603682, 7);\n    d4 = fnF(d4, a5, b4, c5, M4[13], 4254626195, 12);\n    c5 = fnF(c5, d4, a5, b4, M4[14], 2792965006, 17);\n    b4 = fnF(b4, c5, d4, a5, M4[15], 1236535329, 22);\n    a5 = fnG(a5, b4, c5, d4, M4[1], 4129170786, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[6], 3225465664, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[11], 643717713, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[0], 3921069994, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[5], 3593408605, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[10], 38016083, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[15], 3634488961, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[4], 3889429448, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[9], 568446438, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[14], 3275163606, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[3], 4107603335, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[8], 1163531501, 20);\n    a5 = fnG(a5, b4, c5, d4, M4[13], 2850285829, 5);\n    d4 = fnG(d4, a5, b4, c5, M4[2], 4243563512, 9);\n    c5 = fnG(c5, d4, a5, b4, M4[7], 1735328473, 14);\n    b4 = fnG(b4, c5, d4, a5, M4[12], 2368359562, 20);\n    a5 = fnH(a5, b4, c5, d4, M4[5], 4294588738, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[8], 2272392833, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[11], 1839030562, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[14], 4259657740, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[1], 2763975236, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[4], 1272893353, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[7], 4139469664, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[10], 3200236656, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[13], 681279174, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[0], 3936430074, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[3], 3572445317, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[6], 76029189, 23);\n    a5 = fnH(a5, b4, c5, d4, M4[9], 3654602809, 4);\n    d4 = fnH(d4, a5, b4, c5, M4[12], 3873151461, 11);\n    c5 = fnH(c5, d4, a5, b4, M4[15], 530742520, 16);\n    b4 = fnH(b4, c5, d4, a5, M4[2], 3299628645, 23);\n    a5 = fnI(a5, b4, c5, d4, M4[0], 4096336452, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[7], 1126891415, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[14], 2878612391, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[5], 4237533241, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[12], 1700485571, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[3], 2399980690, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[10], 4293915773, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[1], 2240044497, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[8], 1873313359, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[15], 4264355552, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[6], 2734768916, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[13], 1309151649, 21);\n    a5 = fnI(a5, b4, c5, d4, M4[4], 4149444226, 6);\n    d4 = fnI(d4, a5, b4, c5, M4[11], 3174756917, 10);\n    c5 = fnI(c5, d4, a5, b4, M4[2], 718787259, 15);\n    b4 = fnI(b4, c5, d4, a5, M4[9], 3951481745, 21);\n    this._a = this._a + a5 | 0;\n    this._b = this._b + b4 | 0;\n    this._c = this._c + c5 | 0;\n    this._d = this._d + d4 | 0;\n  };\n  MD5.prototype._digest = function() {\n    this._block[this._blockOffset++] = 128;\n    if (this._blockOffset > 56) {\n      this._block.fill(0, this._blockOffset, 64);\n      this._update();\n      this._blockOffset = 0;\n    }\n    this._block.fill(0, this._blockOffset, 56);\n    this._block.writeUInt32LE(this._length[0], 56);\n    this._block.writeUInt32LE(this._length[1], 60);\n    this._update();\n    var buffer2 = Buffer.allocUnsafe(16);\n    buffer2.writeInt32LE(this._a, 0);\n    buffer2.writeInt32LE(this._b, 4);\n    buffer2.writeInt32LE(this._c, 8);\n    buffer2.writeInt32LE(this._d, 12);\n    return buffer2;\n  };\n  function rotl(x4, n5) {\n    return x4 << n5 | x4 >>> 32 - n5;\n  }\n  function fnF(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 & c5 | ~b4 & d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnG(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 & d4 | c5 & ~d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnH(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ c5 ^ d4) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  function fnI(a5, b4, c5, d4, m4, k4, s5) {\n    return rotl(a5 + (c5 ^ (b4 | ~d4)) + m4 + k4 | 0, s5) + b4 | 0;\n  }\n  exports$1R = MD5;\n  return exports$1R;\n}\nvar exports$1Q = {};\nvar _dewExec$1P = false;\nfunction dew$1P() {\n  if (_dewExec$1P) return exports$1Q;\n  _dewExec$1P = true;\n  var Buffer = e$1$1.Buffer;\n  var inherits = dew$f$2();\n  var HashBase = dew$1R();\n  var ARRAY16 = new Array(16);\n  var zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\n  var zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\n  var sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\n  var sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n  var hl = [0, 1518500249, 1859775393, 2400959708, 2840853838];\n  var hr = [1352829926, 1548603684, 1836072691, 2053994217, 0];\n  function RIPEMD160() {\n    HashBase.call(this, 64);\n    this._a = 1732584193;\n    this._b = 4023233417;\n    this._c = 2562383102;\n    this._d = 271733878;\n    this._e = 3285377520;\n  }\n  inherits(RIPEMD160, HashBase);\n  RIPEMD160.prototype._update = function() {\n    var words = ARRAY16;\n    for (var j4 = 0; j4 < 16; ++j4) words[j4] = this._block.readInt32LE(j4 * 4);\n    var al = this._a | 0;\n    var bl = this._b | 0;\n    var cl = this._c | 0;\n    var dl = this._d | 0;\n    var el = this._e | 0;\n    var ar = this._a | 0;\n    var br = this._b | 0;\n    var cr = this._c | 0;\n    var dr = this._d | 0;\n    var er = this._e | 0;\n    for (var i5 = 0; i5 < 80; i5 += 1) {\n      var tl;\n      var tr;\n      if (i5 < 16) {\n        tl = fn1(al, bl, cl, dl, el, words[zl[i5]], hl[0], sl[i5]);\n        tr = fn5(ar, br, cr, dr, er, words[zr[i5]], hr[0], sr[i5]);\n      } else if (i5 < 32) {\n        tl = fn2(al, bl, cl, dl, el, words[zl[i5]], hl[1], sl[i5]);\n        tr = fn4(ar, br, cr, dr, er, words[zr[i5]], hr[1], sr[i5]);\n      } else if (i5 < 48) {\n        tl = fn3(al, bl, cl, dl, el, words[zl[i5]], hl[2], sl[i5]);\n        tr = fn3(ar, br, cr, dr, er, words[zr[i5]], hr[2], sr[i5]);\n      } else if (i5 < 64) {\n        tl = fn4(al, bl, cl, dl, el, words[zl[i5]], hl[3], sl[i5]);\n        tr = fn2(ar, br, cr, dr, er, words[zr[i5]], hr[3], sr[i5]);\n      } else {\n        tl = fn5(al, bl, cl, dl, el, words[zl[i5]], hl[4], sl[i5]);\n        tr = fn1(ar, br, cr, dr, er, words[zr[i5]], hr[4], sr[i5]);\n      }\n      al = el;\n      el = dl;\n      dl = rotl(cl, 10);\n      cl = bl;\n      bl = tl;\n      ar = er;\n      er = dr;\n      dr = rotl(cr, 10);\n      cr = br;\n      br = tr;\n    }\n    var t5 = this._b + cl + dr | 0;\n    this._b = this._c + dl + er | 0;\n    this._c = this._d + el + ar | 0;\n    this._d = this._e + al + br | 0;\n    this._e = this._a + bl + cr | 0;\n    this._a = t5;\n  };\n  RIPEMD160.prototype._digest = function() {\n    this._block[this._blockOffset++] = 128;\n    if (this._blockOffset > 56) {\n      this._block.fill(0, this._blockOffset, 64);\n      this._update();\n      this._blockOffset = 0;\n    }\n    this._block.fill(0, this._blockOffset, 56);\n    this._block.writeUInt32LE(this._length[0], 56);\n    this._block.writeUInt32LE(this._length[1], 60);\n    this._update();\n    var buffer2 = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20);\n    buffer2.writeInt32LE(this._a, 0);\n    buffer2.writeInt32LE(this._b, 4);\n    buffer2.writeInt32LE(this._c, 8);\n    buffer2.writeInt32LE(this._d, 12);\n    buffer2.writeInt32LE(this._e, 16);\n    return buffer2;\n  };\n  function rotl(x4, n5) {\n    return x4 << n5 | x4 >>> 32 - n5;\n  }\n  function fn1(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ c5 ^ d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn2(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 & c5 | ~b4 & d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn3(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + ((b4 | ~c5) ^ d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn4(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 & d4 | c5 & ~d4) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  function fn5(a5, b4, c5, d4, e7, m4, k4, s5) {\n    return rotl(a5 + (b4 ^ (c5 | ~d4)) + m4 + k4 | 0, s5) + e7 | 0;\n  }\n  exports$1Q = RIPEMD160;\n  return exports$1Q;\n}\nvar exports$1P = {};\nvar _dewExec$1O = false;\nvar _global$v = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1O() {\n  if (_dewExec$1O) return exports$1P;\n  _dewExec$1O = true;\n  var Buffer = dew$1T().Buffer;\n  function Hash2(blockSize, finalSize) {\n    (this || _global$v)._block = Buffer.alloc(blockSize);\n    (this || _global$v)._finalSize = finalSize;\n    (this || _global$v)._blockSize = blockSize;\n    (this || _global$v)._len = 0;\n  }\n  Hash2.prototype.update = function(data, enc) {\n    if (typeof data === \"string\") {\n      enc = enc || \"utf8\";\n      data = Buffer.from(data, enc);\n    }\n    var block = (this || _global$v)._block;\n    var blockSize = (this || _global$v)._blockSize;\n    var length = data.length;\n    var accum = (this || _global$v)._len;\n    for (var offset = 0; offset < length; ) {\n      var assigned = accum % blockSize;\n      var remainder = Math.min(length - offset, blockSize - assigned);\n      for (var i5 = 0; i5 < remainder; i5++) {\n        block[assigned + i5] = data[offset + i5];\n      }\n      accum += remainder;\n      offset += remainder;\n      if (accum % blockSize === 0) {\n        this._update(block);\n      }\n    }\n    (this || _global$v)._len += length;\n    return this || _global$v;\n  };\n  Hash2.prototype.digest = function(enc) {\n    var rem = (this || _global$v)._len % (this || _global$v)._blockSize;\n    (this || _global$v)._block[rem] = 128;\n    (this || _global$v)._block.fill(0, rem + 1);\n    if (rem >= (this || _global$v)._finalSize) {\n      this._update((this || _global$v)._block);\n      (this || _global$v)._block.fill(0);\n    }\n    var bits = (this || _global$v)._len * 8;\n    if (bits <= 4294967295) {\n      (this || _global$v)._block.writeUInt32BE(bits, (this || _global$v)._blockSize - 4);\n    } else {\n      var lowBits = (bits & 4294967295) >>> 0;\n      var highBits = (bits - lowBits) / 4294967296;\n      (this || _global$v)._block.writeUInt32BE(highBits, (this || _global$v)._blockSize - 8);\n      (this || _global$v)._block.writeUInt32BE(lowBits, (this || _global$v)._blockSize - 4);\n    }\n    this._update((this || _global$v)._block);\n    var hash = this._hash();\n    return enc ? hash.toString(enc) : hash;\n  };\n  Hash2.prototype._update = function() {\n    throw new Error(\"_update must be implemented by subclass\");\n  };\n  exports$1P = Hash2;\n  return exports$1P;\n}\nvar exports$1O = {};\nvar _dewExec$1N = false;\nvar _global$u = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1N() {\n  if (_dewExec$1N) return exports$1O;\n  _dewExec$1N = true;\n  var inherits = dew$f$2();\n  var Hash2 = dew$1O();\n  var Buffer = dew$1T().Buffer;\n  var K3 = [1518500249, 1859775393, 2400959708 | 0, 3395469782 | 0];\n  var W3 = new Array(80);\n  function Sha() {\n    this.init();\n    (this || _global$u)._w = W3;\n    Hash2.call(this || _global$u, 64, 56);\n  }\n  inherits(Sha, Hash2);\n  Sha.prototype.init = function() {\n    (this || _global$u)._a = 1732584193;\n    (this || _global$u)._b = 4023233417;\n    (this || _global$u)._c = 2562383102;\n    (this || _global$u)._d = 271733878;\n    (this || _global$u)._e = 3285377520;\n    return this || _global$u;\n  };\n  function rotl5(num) {\n    return num << 5 | num >>> 27;\n  }\n  function rotl30(num) {\n    return num << 30 | num >>> 2;\n  }\n  function ft(s5, b4, c5, d4) {\n    if (s5 === 0) return b4 & c5 | ~b4 & d4;\n    if (s5 === 2) return b4 & c5 | b4 & d4 | c5 & d4;\n    return b4 ^ c5 ^ d4;\n  }\n  Sha.prototype._update = function(M4) {\n    var W4 = (this || _global$u)._w;\n    var a5 = (this || _global$u)._a | 0;\n    var b4 = (this || _global$u)._b | 0;\n    var c5 = (this || _global$u)._c | 0;\n    var d4 = (this || _global$u)._d | 0;\n    var e7 = (this || _global$u)._e | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 80; ++i5) W4[i5] = W4[i5 - 3] ^ W4[i5 - 8] ^ W4[i5 - 14] ^ W4[i5 - 16];\n    for (var j4 = 0; j4 < 80; ++j4) {\n      var s5 = ~~(j4 / 20);\n      var t5 = rotl5(a5) + ft(s5, b4, c5, d4) + e7 + W4[j4] + K3[s5] | 0;\n      e7 = d4;\n      d4 = c5;\n      c5 = rotl30(b4);\n      b4 = a5;\n      a5 = t5;\n    }\n    (this || _global$u)._a = a5 + (this || _global$u)._a | 0;\n    (this || _global$u)._b = b4 + (this || _global$u)._b | 0;\n    (this || _global$u)._c = c5 + (this || _global$u)._c | 0;\n    (this || _global$u)._d = d4 + (this || _global$u)._d | 0;\n    (this || _global$u)._e = e7 + (this || _global$u)._e | 0;\n  };\n  Sha.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(20);\n    H3.writeInt32BE((this || _global$u)._a | 0, 0);\n    H3.writeInt32BE((this || _global$u)._b | 0, 4);\n    H3.writeInt32BE((this || _global$u)._c | 0, 8);\n    H3.writeInt32BE((this || _global$u)._d | 0, 12);\n    H3.writeInt32BE((this || _global$u)._e | 0, 16);\n    return H3;\n  };\n  exports$1O = Sha;\n  return exports$1O;\n}\nvar exports$1N = {};\nvar _dewExec$1M = false;\nvar _global$t = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1M() {\n  if (_dewExec$1M) return exports$1N;\n  _dewExec$1M = true;\n  var inherits = dew$f$2();\n  var Hash2 = dew$1O();\n  var Buffer = dew$1T().Buffer;\n  var K3 = [1518500249, 1859775393, 2400959708 | 0, 3395469782 | 0];\n  var W3 = new Array(80);\n  function Sha1() {\n    this.init();\n    (this || _global$t)._w = W3;\n    Hash2.call(this || _global$t, 64, 56);\n  }\n  inherits(Sha1, Hash2);\n  Sha1.prototype.init = function() {\n    (this || _global$t)._a = 1732584193;\n    (this || _global$t)._b = 4023233417;\n    (this || _global$t)._c = 2562383102;\n    (this || _global$t)._d = 271733878;\n    (this || _global$t)._e = 3285377520;\n    return this || _global$t;\n  };\n  function rotl1(num) {\n    return num << 1 | num >>> 31;\n  }\n  function rotl5(num) {\n    return num << 5 | num >>> 27;\n  }\n  function rotl30(num) {\n    return num << 30 | num >>> 2;\n  }\n  function ft(s5, b4, c5, d4) {\n    if (s5 === 0) return b4 & c5 | ~b4 & d4;\n    if (s5 === 2) return b4 & c5 | b4 & d4 | c5 & d4;\n    return b4 ^ c5 ^ d4;\n  }\n  Sha1.prototype._update = function(M4) {\n    var W4 = (this || _global$t)._w;\n    var a5 = (this || _global$t)._a | 0;\n    var b4 = (this || _global$t)._b | 0;\n    var c5 = (this || _global$t)._c | 0;\n    var d4 = (this || _global$t)._d | 0;\n    var e7 = (this || _global$t)._e | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 80; ++i5) W4[i5] = rotl1(W4[i5 - 3] ^ W4[i5 - 8] ^ W4[i5 - 14] ^ W4[i5 - 16]);\n    for (var j4 = 0; j4 < 80; ++j4) {\n      var s5 = ~~(j4 / 20);\n      var t5 = rotl5(a5) + ft(s5, b4, c5, d4) + e7 + W4[j4] + K3[s5] | 0;\n      e7 = d4;\n      d4 = c5;\n      c5 = rotl30(b4);\n      b4 = a5;\n      a5 = t5;\n    }\n    (this || _global$t)._a = a5 + (this || _global$t)._a | 0;\n    (this || _global$t)._b = b4 + (this || _global$t)._b | 0;\n    (this || _global$t)._c = c5 + (this || _global$t)._c | 0;\n    (this || _global$t)._d = d4 + (this || _global$t)._d | 0;\n    (this || _global$t)._e = e7 + (this || _global$t)._e | 0;\n  };\n  Sha1.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(20);\n    H3.writeInt32BE((this || _global$t)._a | 0, 0);\n    H3.writeInt32BE((this || _global$t)._b | 0, 4);\n    H3.writeInt32BE((this || _global$t)._c | 0, 8);\n    H3.writeInt32BE((this || _global$t)._d | 0, 12);\n    H3.writeInt32BE((this || _global$t)._e | 0, 16);\n    return H3;\n  };\n  exports$1N = Sha1;\n  return exports$1N;\n}\nvar exports$1M = {};\nvar _dewExec$1L = false;\nvar _global$s = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1L() {\n  if (_dewExec$1L) return exports$1M;\n  _dewExec$1L = true;\n  var inherits = dew$f$2();\n  var Hash2 = dew$1O();\n  var Buffer = dew$1T().Buffer;\n  var K3 = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298];\n  var W3 = new Array(64);\n  function Sha256() {\n    this.init();\n    (this || _global$s)._w = W3;\n    Hash2.call(this || _global$s, 64, 56);\n  }\n  inherits(Sha256, Hash2);\n  Sha256.prototype.init = function() {\n    (this || _global$s)._a = 1779033703;\n    (this || _global$s)._b = 3144134277;\n    (this || _global$s)._c = 1013904242;\n    (this || _global$s)._d = 2773480762;\n    (this || _global$s)._e = 1359893119;\n    (this || _global$s)._f = 2600822924;\n    (this || _global$s)._g = 528734635;\n    (this || _global$s)._h = 1541459225;\n    return this || _global$s;\n  };\n  function ch(x4, y5, z4) {\n    return z4 ^ x4 & (y5 ^ z4);\n  }\n  function maj(x4, y5, z4) {\n    return x4 & y5 | z4 & (x4 | y5);\n  }\n  function sigma0(x4) {\n    return (x4 >>> 2 | x4 << 30) ^ (x4 >>> 13 | x4 << 19) ^ (x4 >>> 22 | x4 << 10);\n  }\n  function sigma1(x4) {\n    return (x4 >>> 6 | x4 << 26) ^ (x4 >>> 11 | x4 << 21) ^ (x4 >>> 25 | x4 << 7);\n  }\n  function gamma0(x4) {\n    return (x4 >>> 7 | x4 << 25) ^ (x4 >>> 18 | x4 << 14) ^ x4 >>> 3;\n  }\n  function gamma1(x4) {\n    return (x4 >>> 17 | x4 << 15) ^ (x4 >>> 19 | x4 << 13) ^ x4 >>> 10;\n  }\n  Sha256.prototype._update = function(M4) {\n    var W4 = (this || _global$s)._w;\n    var a5 = (this || _global$s)._a | 0;\n    var b4 = (this || _global$s)._b | 0;\n    var c5 = (this || _global$s)._c | 0;\n    var d4 = (this || _global$s)._d | 0;\n    var e7 = (this || _global$s)._e | 0;\n    var f6 = (this || _global$s)._f | 0;\n    var g4 = (this || _global$s)._g | 0;\n    var h5 = (this || _global$s)._h | 0;\n    for (var i5 = 0; i5 < 16; ++i5) W4[i5] = M4.readInt32BE(i5 * 4);\n    for (; i5 < 64; ++i5) W4[i5] = gamma1(W4[i5 - 2]) + W4[i5 - 7] + gamma0(W4[i5 - 15]) + W4[i5 - 16] | 0;\n    for (var j4 = 0; j4 < 64; ++j4) {\n      var T1 = h5 + sigma1(e7) + ch(e7, f6, g4) + K3[j4] + W4[j4] | 0;\n      var T22 = sigma0(a5) + maj(a5, b4, c5) | 0;\n      h5 = g4;\n      g4 = f6;\n      f6 = e7;\n      e7 = d4 + T1 | 0;\n      d4 = c5;\n      c5 = b4;\n      b4 = a5;\n      a5 = T1 + T22 | 0;\n    }\n    (this || _global$s)._a = a5 + (this || _global$s)._a | 0;\n    (this || _global$s)._b = b4 + (this || _global$s)._b | 0;\n    (this || _global$s)._c = c5 + (this || _global$s)._c | 0;\n    (this || _global$s)._d = d4 + (this || _global$s)._d | 0;\n    (this || _global$s)._e = e7 + (this || _global$s)._e | 0;\n    (this || _global$s)._f = f6 + (this || _global$s)._f | 0;\n    (this || _global$s)._g = g4 + (this || _global$s)._g | 0;\n    (this || _global$s)._h = h5 + (this || _global$s)._h | 0;\n  };\n  Sha256.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(32);\n    H3.writeInt32BE((this || _global$s)._a, 0);\n    H3.writeInt32BE((this || _global$s)._b, 4);\n    H3.writeInt32BE((this || _global$s)._c, 8);\n    H3.writeInt32BE((this || _global$s)._d, 12);\n    H3.writeInt32BE((this || _global$s)._e, 16);\n    H3.writeInt32BE((this || _global$s)._f, 20);\n    H3.writeInt32BE((this || _global$s)._g, 24);\n    H3.writeInt32BE((this || _global$s)._h, 28);\n    return H3;\n  };\n  exports$1M = Sha256;\n  return exports$1M;\n}\nvar exports$1L = {};\nvar _dewExec$1K = false;\nvar _global$r = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1K() {\n  if (_dewExec$1K) return exports$1L;\n  _dewExec$1K = true;\n  var inherits = dew$f$2();\n  var Sha256 = dew$1L();\n  var Hash2 = dew$1O();\n  var Buffer = dew$1T().Buffer;\n  var W3 = new Array(64);\n  function Sha224() {\n    this.init();\n    (this || _global$r)._w = W3;\n    Hash2.call(this || _global$r, 64, 56);\n  }\n  inherits(Sha224, Sha256);\n  Sha224.prototype.init = function() {\n    (this || _global$r)._a = 3238371032;\n    (this || _global$r)._b = 914150663;\n    (this || _global$r)._c = 812702999;\n    (this || _global$r)._d = 4144912697;\n    (this || _global$r)._e = 4290775857;\n    (this || _global$r)._f = 1750603025;\n    (this || _global$r)._g = 1694076839;\n    (this || _global$r)._h = 3204075428;\n    return this || _global$r;\n  };\n  Sha224.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(28);\n    H3.writeInt32BE((this || _global$r)._a, 0);\n    H3.writeInt32BE((this || _global$r)._b, 4);\n    H3.writeInt32BE((this || _global$r)._c, 8);\n    H3.writeInt32BE((this || _global$r)._d, 12);\n    H3.writeInt32BE((this || _global$r)._e, 16);\n    H3.writeInt32BE((this || _global$r)._f, 20);\n    H3.writeInt32BE((this || _global$r)._g, 24);\n    return H3;\n  };\n  exports$1L = Sha224;\n  return exports$1L;\n}\nvar exports$1K = {};\nvar _dewExec$1J = false;\nvar _global$q = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1J() {\n  if (_dewExec$1J) return exports$1K;\n  _dewExec$1J = true;\n  var inherits = dew$f$2();\n  var Hash2 = dew$1O();\n  var Buffer = dew$1T().Buffer;\n  var K3 = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591];\n  var W3 = new Array(160);\n  function Sha512() {\n    this.init();\n    (this || _global$q)._w = W3;\n    Hash2.call(this || _global$q, 128, 112);\n  }\n  inherits(Sha512, Hash2);\n  Sha512.prototype.init = function() {\n    (this || _global$q)._ah = 1779033703;\n    (this || _global$q)._bh = 3144134277;\n    (this || _global$q)._ch = 1013904242;\n    (this || _global$q)._dh = 2773480762;\n    (this || _global$q)._eh = 1359893119;\n    (this || _global$q)._fh = 2600822924;\n    (this || _global$q)._gh = 528734635;\n    (this || _global$q)._hh = 1541459225;\n    (this || _global$q)._al = 4089235720;\n    (this || _global$q)._bl = 2227873595;\n    (this || _global$q)._cl = 4271175723;\n    (this || _global$q)._dl = 1595750129;\n    (this || _global$q)._el = 2917565137;\n    (this || _global$q)._fl = 725511199;\n    (this || _global$q)._gl = 4215389547;\n    (this || _global$q)._hl = 327033209;\n    return this || _global$q;\n  };\n  function Ch(x4, y5, z4) {\n    return z4 ^ x4 & (y5 ^ z4);\n  }\n  function maj(x4, y5, z4) {\n    return x4 & y5 | z4 & (x4 | y5);\n  }\n  function sigma0(x4, xl) {\n    return (x4 >>> 28 | xl << 4) ^ (xl >>> 2 | x4 << 30) ^ (xl >>> 7 | x4 << 25);\n  }\n  function sigma1(x4, xl) {\n    return (x4 >>> 14 | xl << 18) ^ (x4 >>> 18 | xl << 14) ^ (xl >>> 9 | x4 << 23);\n  }\n  function Gamma0(x4, xl) {\n    return (x4 >>> 1 | xl << 31) ^ (x4 >>> 8 | xl << 24) ^ x4 >>> 7;\n  }\n  function Gamma0l(x4, xl) {\n    return (x4 >>> 1 | xl << 31) ^ (x4 >>> 8 | xl << 24) ^ (x4 >>> 7 | xl << 25);\n  }\n  function Gamma1(x4, xl) {\n    return (x4 >>> 19 | xl << 13) ^ (xl >>> 29 | x4 << 3) ^ x4 >>> 6;\n  }\n  function Gamma1l(x4, xl) {\n    return (x4 >>> 19 | xl << 13) ^ (xl >>> 29 | x4 << 3) ^ (x4 >>> 6 | xl << 26);\n  }\n  function getCarry(a5, b4) {\n    return a5 >>> 0 < b4 >>> 0 ? 1 : 0;\n  }\n  Sha512.prototype._update = function(M4) {\n    var W4 = (this || _global$q)._w;\n    var ah = (this || _global$q)._ah | 0;\n    var bh = (this || _global$q)._bh | 0;\n    var ch = (this || _global$q)._ch | 0;\n    var dh = (this || _global$q)._dh | 0;\n    var eh = (this || _global$q)._eh | 0;\n    var fh = (this || _global$q)._fh | 0;\n    var gh = (this || _global$q)._gh | 0;\n    var hh = (this || _global$q)._hh | 0;\n    var al = (this || _global$q)._al | 0;\n    var bl = (this || _global$q)._bl | 0;\n    var cl = (this || _global$q)._cl | 0;\n    var dl = (this || _global$q)._dl | 0;\n    var el = (this || _global$q)._el | 0;\n    var fl = (this || _global$q)._fl | 0;\n    var gl = (this || _global$q)._gl | 0;\n    var hl = (this || _global$q)._hl | 0;\n    for (var i5 = 0; i5 < 32; i5 += 2) {\n      W4[i5] = M4.readInt32BE(i5 * 4);\n      W4[i5 + 1] = M4.readInt32BE(i5 * 4 + 4);\n    }\n    for (; i5 < 160; i5 += 2) {\n      var xh = W4[i5 - 15 * 2];\n      var xl = W4[i5 - 15 * 2 + 1];\n      var gamma0 = Gamma0(xh, xl);\n      var gamma0l = Gamma0l(xl, xh);\n      xh = W4[i5 - 2 * 2];\n      xl = W4[i5 - 2 * 2 + 1];\n      var gamma1 = Gamma1(xh, xl);\n      var gamma1l = Gamma1l(xl, xh);\n      var Wi7h = W4[i5 - 7 * 2];\n      var Wi7l = W4[i5 - 7 * 2 + 1];\n      var Wi16h = W4[i5 - 16 * 2];\n      var Wi16l = W4[i5 - 16 * 2 + 1];\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      W4[i5] = Wih;\n      W4[i5 + 1] = Wil;\n    }\n    for (var j4 = 0; j4 < 160; j4 += 2) {\n      Wih = W4[j4];\n      Wil = W4[j4 + 1];\n      var majh = maj(ah, bh, ch);\n      var majl = maj(al, bl, cl);\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      var Kih = K3[j4];\n      var Kil = K3[j4 + 1];\n      var chh = Ch(eh, fh, gh);\n      var chl = Ch(el, fl, gl);\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      var t2l = sigma0l + majl | 0;\n      var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;\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    (this || _global$q)._al = (this || _global$q)._al + al | 0;\n    (this || _global$q)._bl = (this || _global$q)._bl + bl | 0;\n    (this || _global$q)._cl = (this || _global$q)._cl + cl | 0;\n    (this || _global$q)._dl = (this || _global$q)._dl + dl | 0;\n    (this || _global$q)._el = (this || _global$q)._el + el | 0;\n    (this || _global$q)._fl = (this || _global$q)._fl + fl | 0;\n    (this || _global$q)._gl = (this || _global$q)._gl + gl | 0;\n    (this || _global$q)._hl = (this || _global$q)._hl + hl | 0;\n    (this || _global$q)._ah = (this || _global$q)._ah + ah + getCarry((this || _global$q)._al, al) | 0;\n    (this || _global$q)._bh = (this || _global$q)._bh + bh + getCarry((this || _global$q)._bl, bl) | 0;\n    (this || _global$q)._ch = (this || _global$q)._ch + ch + getCarry((this || _global$q)._cl, cl) | 0;\n    (this || _global$q)._dh = (this || _global$q)._dh + dh + getCarry((this || _global$q)._dl, dl) | 0;\n    (this || _global$q)._eh = (this || _global$q)._eh + eh + getCarry((this || _global$q)._el, el) | 0;\n    (this || _global$q)._fh = (this || _global$q)._fh + fh + getCarry((this || _global$q)._fl, fl) | 0;\n    (this || _global$q)._gh = (this || _global$q)._gh + gh + getCarry((this || _global$q)._gl, gl) | 0;\n    (this || _global$q)._hh = (this || _global$q)._hh + hh + getCarry((this || _global$q)._hl, hl) | 0;\n  };\n  Sha512.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(64);\n    function writeInt64BE(h5, l5, offset) {\n      H3.writeInt32BE(h5, offset);\n      H3.writeInt32BE(l5, offset + 4);\n    }\n    writeInt64BE((this || _global$q)._ah, (this || _global$q)._al, 0);\n    writeInt64BE((this || _global$q)._bh, (this || _global$q)._bl, 8);\n    writeInt64BE((this || _global$q)._ch, (this || _global$q)._cl, 16);\n    writeInt64BE((this || _global$q)._dh, (this || _global$q)._dl, 24);\n    writeInt64BE((this || _global$q)._eh, (this || _global$q)._el, 32);\n    writeInt64BE((this || _global$q)._fh, (this || _global$q)._fl, 40);\n    writeInt64BE((this || _global$q)._gh, (this || _global$q)._gl, 48);\n    writeInt64BE((this || _global$q)._hh, (this || _global$q)._hl, 56);\n    return H3;\n  };\n  exports$1K = Sha512;\n  return exports$1K;\n}\nvar exports$1J = {};\nvar _dewExec$1I = false;\nvar _global$p = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1I() {\n  if (_dewExec$1I) return exports$1J;\n  _dewExec$1I = true;\n  var inherits = dew$f$2();\n  var SHA512 = dew$1J();\n  var Hash2 = dew$1O();\n  var Buffer = dew$1T().Buffer;\n  var W3 = new Array(160);\n  function Sha384() {\n    this.init();\n    (this || _global$p)._w = W3;\n    Hash2.call(this || _global$p, 128, 112);\n  }\n  inherits(Sha384, SHA512);\n  Sha384.prototype.init = function() {\n    (this || _global$p)._ah = 3418070365;\n    (this || _global$p)._bh = 1654270250;\n    (this || _global$p)._ch = 2438529370;\n    (this || _global$p)._dh = 355462360;\n    (this || _global$p)._eh = 1731405415;\n    (this || _global$p)._fh = 2394180231;\n    (this || _global$p)._gh = 3675008525;\n    (this || _global$p)._hh = 1203062813;\n    (this || _global$p)._al = 3238371032;\n    (this || _global$p)._bl = 914150663;\n    (this || _global$p)._cl = 812702999;\n    (this || _global$p)._dl = 4144912697;\n    (this || _global$p)._el = 4290775857;\n    (this || _global$p)._fl = 1750603025;\n    (this || _global$p)._gl = 1694076839;\n    (this || _global$p)._hl = 3204075428;\n    return this || _global$p;\n  };\n  Sha384.prototype._hash = function() {\n    var H3 = Buffer.allocUnsafe(48);\n    function writeInt64BE(h5, l5, offset) {\n      H3.writeInt32BE(h5, offset);\n      H3.writeInt32BE(l5, offset + 4);\n    }\n    writeInt64BE((this || _global$p)._ah, (this || _global$p)._al, 0);\n    writeInt64BE((this || _global$p)._bh, (this || _global$p)._bl, 8);\n    writeInt64BE((this || _global$p)._ch, (this || _global$p)._cl, 16);\n    writeInt64BE((this || _global$p)._dh, (this || _global$p)._dl, 24);\n    writeInt64BE((this || _global$p)._eh, (this || _global$p)._el, 32);\n    writeInt64BE((this || _global$p)._fh, (this || _global$p)._fl, 40);\n    return H3;\n  };\n  exports$1J = Sha384;\n  return exports$1J;\n}\nvar exports$1I = {};\nvar _dewExec$1H = false;\nvar module$7 = {\n  exports: exports$1I\n};\nfunction dew$1H() {\n  if (_dewExec$1H) return module$7.exports;\n  _dewExec$1H = true;\n  var exports11 = module$7.exports = function SHA(algorithm) {\n    algorithm = algorithm.toLowerCase();\n    var Algorithm = exports11[algorithm];\n    if (!Algorithm) throw new Error(algorithm + \" is not supported (we accept pull requests)\");\n    return new Algorithm();\n  };\n  exports11.sha = dew$1N();\n  exports11.sha1 = dew$1M();\n  exports11.sha224 = dew$1K();\n  exports11.sha256 = dew$1L();\n  exports11.sha384 = dew$1I();\n  exports11.sha512 = dew$1J();\n  return module$7.exports;\n}\nvar e$g = y.EventEmitter;\nvar e$1$12 = {};\nvar t$c = {};\nfunction n$q(e7, n5, r5) {\n  r5 || (r5 = Error);\n  class o5 extends r5 {\n    constructor(e8, t5, r6) {\n      super((function(e9, t6, r7) {\n        return \"string\" == typeof n5 ? n5 : n5(e9, t6, r7);\n      })(e8, t5, r6));\n    }\n  }\n  o5.prototype.name = r5.name, o5.prototype.code = e7, t$c[e7] = o5;\n}\nfunction r$h(e7, t5) {\n  if (Array.isArray(e7)) {\n    const n5 = e7.length;\n    return e7 = e7.map((e8) => String(e8)), n5 > 2 ? `one of ${t5} ${e7.slice(0, n5 - 1).join(\", \")}, or ` + e7[n5 - 1] : 2 === n5 ? `one of ${t5} ${e7[0]} or ${e7[1]}` : `of ${t5} ${e7[0]}`;\n  }\n  return `of ${t5} ${String(e7)}`;\n}\nn$q(\"ERR_INVALID_OPT_VALUE\", (function(e7, t5) {\n  return 'The value \"' + t5 + '\" is invalid for option \"' + e7 + '\"';\n}), TypeError), n$q(\"ERR_INVALID_ARG_TYPE\", (function(e7, t5, n5) {\n  let o5;\n  var E4;\n  let u5;\n  if (\"string\" == typeof t5 && (E4 = \"not \", t5.substr(0, E4.length) === E4) ? (o5 = \"must not be\", t5 = t5.replace(/^not /, \"\")) : o5 = \"must be\", (function(e8, t6, n6) {\n    return (void 0 === n6 || n6 > e8.length) && (n6 = e8.length), e8.substring(n6 - t6.length, n6) === t6;\n  })(e7, \" argument\")) u5 = `The ${e7} ${o5} ${r$h(t5, \"type\")}`;\n  else {\n    u5 = `The \"${e7}\" ${(function(e8, t6, n6) {\n      return \"number\" != typeof n6 && (n6 = 0), !(n6 + t6.length > e8.length) && -1 !== e8.indexOf(t6, n6);\n    })(e7, \".\") ? \"property\" : \"argument\"} ${o5} ${r$h(t5, \"type\")}`;\n  }\n  return u5 += `. Received type ${typeof n5}`, u5;\n}), TypeError), n$q(\"ERR_STREAM_PUSH_AFTER_EOF\", \"stream.push() after EOF\"), n$q(\"ERR_METHOD_NOT_IMPLEMENTED\", (function(e7) {\n  return \"The \" + e7 + \" method is not implemented\";\n})), n$q(\"ERR_STREAM_PREMATURE_CLOSE\", \"Premature close\"), n$q(\"ERR_STREAM_DESTROYED\", (function(e7) {\n  return \"Cannot call \" + e7 + \" after a stream was destroyed\";\n})), n$q(\"ERR_MULTIPLE_CALLBACK\", \"Callback called multiple times\"), n$q(\"ERR_STREAM_CANNOT_PIPE\", \"Cannot pipe, not readable\"), n$q(\"ERR_STREAM_WRITE_AFTER_END\", \"write after end\"), n$q(\"ERR_STREAM_NULL_VALUES\", \"May not write null values to stream\", TypeError), n$q(\"ERR_UNKNOWN_ENCODING\", (function(e7) {\n  return \"Unknown encoding: \" + e7;\n}), TypeError), n$q(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\", \"stream.unshift() after end event\"), e$1$12.codes = t$c;\nvar r$1$1 = function() {\n  throw new Error(\"Readable.from is not available in the browser\");\n};\nvar r$2$1 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction e$2$1(e7) {\n  try {\n    if (!r$2$1.localStorage) return false;\n  } catch (r5) {\n    return false;\n  }\n  var t5 = r$2$1.localStorage[e7];\n  return null != t5 && \"true\" === String(t5).toLowerCase();\n}\nvar t$1$1 = function(t5, n5) {\n  if (e$2$1(\"noDeprecation\")) return t5;\n  var o5 = false;\n  return function() {\n    if (!o5) {\n      if (e$2$1(\"throwDeprecation\")) throw new Error(n5);\n      e$2$1(\"traceDeprecation\") ? console.trace(n5) : console.warn(n5), o5 = true;\n    }\n    return t5.apply(this || r$2$1, arguments);\n  };\n};\nfunction u$p(e7, t5) {\n  var n5 = Object.keys(e7);\n  if (Object.getOwnPropertySymbols) {\n    var r5 = Object.getOwnPropertySymbols(e7);\n    t5 && (r5 = r5.filter((function(t6) {\n      return Object.getOwnPropertyDescriptor(e7, t6).enumerable;\n    }))), n5.push.apply(n5, r5);\n  }\n  return n5;\n}\nfunction f$v(e7, t5, n5) {\n  return t5 in e7 ? Object.defineProperty(e7, t5, { value: n5, enumerable: true, configurable: true, writable: true }) : e7[t5] = n5, e7;\n}\nfunction h$l(e7, t5) {\n  for (var n5 = 0; n5 < t5.length; n5++) {\n    var r5 = t5[n5];\n    r5.enumerable = r5.enumerable || false, r5.configurable = true, \"value\" in r5 && (r5.writable = true), Object.defineProperty(e7, r5.key, r5);\n  }\n}\nvar c$n = e$1$1.Buffer;\nvar b$j = X.inspect;\nvar p$s = b$j && b$j.custom || \"inspect\";\nvar g$h = (function() {\n  function e7() {\n    !(function(e8, t6) {\n      if (!(e8 instanceof t6)) throw new TypeError(\"Cannot call a class as a function\");\n    })(this, e7), this.head = null, this.tail = null, this.length = 0;\n  }\n  var t5, n5;\n  return t5 = e7, (n5 = [{ key: \"push\", value: function(e8) {\n    var t6 = { data: e8, next: null };\n    this.length > 0 ? this.tail.next = t6 : this.head = t6, this.tail = t6, ++this.length;\n  } }, { key: \"unshift\", value: function(e8) {\n    var t6 = { data: e8, next: this.head };\n    0 === this.length && (this.tail = t6), this.head = t6, ++this.length;\n  } }, { key: \"shift\", value: function() {\n    if (0 !== this.length) {\n      var e8 = this.head.data;\n      return 1 === this.length ? this.head = this.tail = null : this.head = this.head.next, --this.length, e8;\n    }\n  } }, { key: \"clear\", value: function() {\n    this.head = this.tail = null, this.length = 0;\n  } }, { key: \"join\", value: function(e8) {\n    if (0 === this.length) return \"\";\n    for (var t6 = this.head, n6 = \"\" + t6.data; t6 = t6.next; ) n6 += e8 + t6.data;\n    return n6;\n  } }, { key: \"concat\", value: function(e8) {\n    if (0 === this.length) return c$n.alloc(0);\n    for (var t6, n6, r5, i5 = c$n.allocUnsafe(e8 >>> 0), a5 = this.head, o5 = 0; a5; ) t6 = a5.data, n6 = i5, r5 = o5, void c$n.prototype.copy.call(t6, n6, r5), o5 += a5.data.length, a5 = a5.next;\n    return i5;\n  } }, { key: \"consume\", value: function(e8, t6) {\n    var n6;\n    return e8 < this.head.data.length ? (n6 = this.head.data.slice(0, e8), this.head.data = this.head.data.slice(e8)) : n6 = e8 === this.head.data.length ? this.shift() : t6 ? this._getString(e8) : this._getBuffer(e8), n6;\n  } }, { key: \"first\", value: function() {\n    return this.head.data;\n  } }, { key: \"_getString\", value: function(e8) {\n    var t6 = this.head, n6 = 1, r5 = t6.data;\n    for (e8 -= r5.length; t6 = t6.next; ) {\n      var i5 = t6.data, a5 = e8 > i5.length ? i5.length : e8;\n      if (a5 === i5.length ? r5 += i5 : r5 += i5.slice(0, e8), 0 == (e8 -= a5)) {\n        a5 === i5.length ? (++n6, t6.next ? this.head = t6.next : this.head = this.tail = null) : (this.head = t6, t6.data = i5.slice(a5));\n        break;\n      }\n      ++n6;\n    }\n    return this.length -= n6, r5;\n  } }, { key: \"_getBuffer\", value: function(e8) {\n    var t6 = c$n.allocUnsafe(e8), n6 = this.head, r5 = 1;\n    for (n6.data.copy(t6), e8 -= n6.data.length; n6 = n6.next; ) {\n      var i5 = n6.data, a5 = e8 > i5.length ? i5.length : e8;\n      if (i5.copy(t6, t6.length - e8, 0, a5), 0 == (e8 -= a5)) {\n        a5 === i5.length ? (++r5, n6.next ? this.head = n6.next : this.head = this.tail = null) : (this.head = n6, n6.data = i5.slice(a5));\n        break;\n      }\n      ++r5;\n    }\n    return this.length -= r5, t6;\n  } }, { key: p$s, value: function(e8, t6) {\n    return b$j(this, (function(e9) {\n      for (var t7 = 1; t7 < arguments.length; t7++) {\n        var n6 = null != arguments[t7] ? arguments[t7] : {};\n        t7 % 2 ? u$p(Object(n6), true).forEach((function(t8) {\n          f$v(e9, t8, n6[t8]);\n        })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e9, Object.getOwnPropertyDescriptors(n6)) : u$p(Object(n6)).forEach((function(t8) {\n          Object.defineProperty(e9, t8, Object.getOwnPropertyDescriptor(n6, t8));\n        }));\n      }\n      return e9;\n    })({}, t6, { depth: 0, customInspect: false }));\n  } }]) && h$l(t5.prototype, n5), e7;\n})();\nvar y$n = T$1;\nfunction w$j(e7, t5) {\n  _$h(e7, t5), v$k(e7);\n}\nfunction v$k(e7) {\n  e7._writableState && !e7._writableState.emitClose || e7._readableState && !e7._readableState.emitClose || e7.emit(\"close\");\n}\nfunction _$h(e7, t5) {\n  e7.emit(\"error\", t5);\n}\nvar m$m = { destroy: function(e7, t5) {\n  var n5 = this, r5 = this._readableState && this._readableState.destroyed, i5 = this._writableState && this._writableState.destroyed;\n  return r5 || i5 ? (t5 ? t5(e7) : e7 && (this._writableState ? this._writableState.errorEmitted || (this._writableState.errorEmitted = true, y$n.nextTick(_$h, this, e7)) : y$n.nextTick(_$h, this, e7)), this) : (this._readableState && (this._readableState.destroyed = true), this._writableState && (this._writableState.destroyed = true), this._destroy(e7 || null, (function(e8) {\n    !t5 && e8 ? n5._writableState ? n5._writableState.errorEmitted ? y$n.nextTick(v$k, n5) : (n5._writableState.errorEmitted = true, y$n.nextTick(w$j, n5, e8)) : y$n.nextTick(w$j, n5, e8) : t5 ? (y$n.nextTick(v$k, n5), t5(e8)) : y$n.nextTick(v$k, n5);\n  })), this);\n}, undestroy: function() {\n  this._readableState && (this._readableState.destroyed = false, this._readableState.reading = false, this._readableState.ended = false, this._readableState.endEmitted = false), this._writableState && (this._writableState.destroyed = false, this._writableState.ended = false, this._writableState.ending = false, this._writableState.finalCalled = false, this._writableState.prefinished = false, this._writableState.finished = false, this._writableState.errorEmitted = false);\n}, errorOrDestroy: function(e7, t5) {\n  var n5 = e7._readableState, r5 = e7._writableState;\n  n5 && n5.autoDestroy || r5 && r5.autoDestroy ? e7.destroy(t5) : e7.emit(\"error\", t5);\n} };\nvar S$e = e$1$12.codes.ERR_INVALID_OPT_VALUE;\nvar R$7 = { getHighWaterMark: function(e7, t5, n5, r5) {\n  var i5 = (function(e8, t6, n6) {\n    return null != e8.highWaterMark ? e8.highWaterMark : t6 ? e8[n6] : null;\n  })(t5, r5, n5);\n  if (null != i5) {\n    if (!isFinite(i5) || Math.floor(i5) !== i5 || i5 < 0) throw new S$e(r5 ? n5 : \"highWaterMark\", i5);\n    return Math.floor(i5);\n  }\n  return e7.objectMode ? 16 : 16384;\n} };\nvar k$g = e$1$12.codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction E$e() {\n}\nvar M$a;\nvar j$a = function e4(t5, n5, r5) {\n  if (\"function\" == typeof n5) return e4(t5, null, n5);\n  n5 || (n5 = {}), r5 = /* @__PURE__ */ (function(e7) {\n    var t6 = false;\n    return function() {\n      if (!t6) {\n        t6 = true;\n        for (var n6 = arguments.length, r6 = new Array(n6), i6 = 0; i6 < n6; i6++) r6[i6] = arguments[i6];\n        e7.apply(this, r6);\n      }\n    };\n  })(r5 || E$e);\n  var i5 = n5.readable || false !== n5.readable && t5.readable, a5 = n5.writable || false !== n5.writable && t5.writable, o5 = function() {\n    t5.writable || l5();\n  }, s5 = t5._writableState && t5._writableState.finished, l5 = function() {\n    a5 = false, s5 = true, i5 || r5.call(t5);\n  }, d4 = t5._readableState && t5._readableState.endEmitted, u5 = function() {\n    i5 = false, d4 = true, a5 || r5.call(t5);\n  }, f6 = function(e7) {\n    r5.call(t5, e7);\n  }, h5 = function() {\n    var e7;\n    return i5 && !d4 ? (t5._readableState && t5._readableState.ended || (e7 = new k$g()), r5.call(t5, e7)) : a5 && !s5 ? (t5._writableState && t5._writableState.ended || (e7 = new k$g()), r5.call(t5, e7)) : void 0;\n  }, c5 = function() {\n    t5.req.on(\"finish\", l5);\n  };\n  return !(function(e7) {\n    return e7.setHeader && \"function\" == typeof e7.abort;\n  })(t5) ? a5 && !t5._writableState && (t5.on(\"end\", o5), t5.on(\"close\", o5)) : (t5.on(\"complete\", l5), t5.on(\"abort\", h5), t5.req ? c5() : t5.on(\"request\", c5)), t5.on(\"end\", u5), t5.on(\"finish\", l5), false !== n5.error && t5.on(\"error\", f6), t5.on(\"close\", h5), function() {\n    t5.removeListener(\"complete\", l5), t5.removeListener(\"abort\", h5), t5.removeListener(\"request\", c5), t5.req && t5.req.removeListener(\"finish\", l5), t5.removeListener(\"end\", o5), t5.removeListener(\"close\", o5), t5.removeListener(\"finish\", l5), t5.removeListener(\"end\", u5), t5.removeListener(\"error\", f6), t5.removeListener(\"close\", h5);\n  };\n};\nvar O$8 = T$1;\nfunction T$8(e7, t5, n5) {\n  return t5 in e7 ? Object.defineProperty(e7, t5, { value: n5, enumerable: true, configurable: true, writable: true }) : e7[t5] = n5, e7;\n}\nvar P$8 = j$a;\nvar x$a = /* @__PURE__ */ Symbol(\"lastResolve\");\nvar L$8 = /* @__PURE__ */ Symbol(\"lastReject\");\nvar D$9 = /* @__PURE__ */ Symbol(\"error\");\nvar C$9 = /* @__PURE__ */ Symbol(\"ended\");\nvar A$c = /* @__PURE__ */ Symbol(\"lastPromise\");\nvar q$8 = /* @__PURE__ */ Symbol(\"handlePromise\");\nvar W$5 = /* @__PURE__ */ Symbol(\"stream\");\nfunction B$c(e7, t5) {\n  return { value: e7, done: t5 };\n}\nfunction I$b(e7) {\n  var t5 = e7[x$a];\n  if (null !== t5) {\n    var n5 = e7[W$5].read();\n    null !== n5 && (e7[A$c] = null, e7[x$a] = null, e7[L$8] = null, t5(B$c(n5, false)));\n  }\n}\nfunction N$7(e7) {\n  O$8.nextTick(I$b, e7);\n}\nvar U$a = Object.getPrototypeOf((function() {\n}));\nvar H$7 = Object.setPrototypeOf((T$8(M$a = { get stream() {\n  return this[W$5];\n}, next: function() {\n  var e7 = this, t5 = this[D$9];\n  if (null !== t5) return Promise.reject(t5);\n  if (this[C$9]) return Promise.resolve(B$c(void 0, true));\n  if (this[W$5].destroyed) return new Promise((function(t6, n6) {\n    O$8.nextTick((function() {\n      e7[D$9] ? n6(e7[D$9]) : t6(B$c(void 0, true));\n    }));\n  }));\n  var n5, r5 = this[A$c];\n  if (r5) n5 = new Promise(/* @__PURE__ */ (function(e8, t6) {\n    return function(n6, r6) {\n      e8.then((function() {\n        if (t6[C$9]) return n6(B$c(void 0, true)), void 0;\n        t6[q$8](n6, r6);\n      }), r6);\n    };\n  })(r5, this));\n  else {\n    var i5 = this[W$5].read();\n    if (null !== i5) return Promise.resolve(B$c(i5, false));\n    n5 = new Promise(this[q$8]);\n  }\n  return this[A$c] = n5, n5;\n} }, Symbol.asyncIterator, (function() {\n  return this;\n})), T$8(M$a, \"return\", (function() {\n  var e7 = this;\n  return new Promise((function(t5, n5) {\n    e7[W$5].destroy(null, (function(e8) {\n      if (e8) return n5(e8), void 0;\n      t5(B$c(void 0, true));\n    }));\n  }));\n})), M$a), U$a);\nvar F$8 = function(e7) {\n  var t5, n5 = Object.create(H$7, (T$8(t5 = {}, W$5, { value: e7, writable: true }), T$8(t5, x$a, { value: null, writable: true }), T$8(t5, L$8, { value: null, writable: true }), T$8(t5, D$9, { value: null, writable: true }), T$8(t5, C$9, { value: e7._readableState.endEmitted, writable: true }), T$8(t5, q$8, { value: function(e8, t6) {\n    var r5 = n5[W$5].read();\n    r5 ? (n5[A$c] = null, n5[x$a] = null, n5[L$8] = null, e8(B$c(r5, false))) : (n5[x$a] = e8, n5[L$8] = t6);\n  }, writable: true }), t5));\n  return n5[A$c] = null, P$8(e7, (function(e8) {\n    if (e8 && \"ERR_STREAM_PREMATURE_CLOSE\" !== e8.code) {\n      var t6 = n5[L$8];\n      return null !== t6 && (n5[A$c] = null, n5[x$a] = null, n5[L$8] = null, t6(e8)), n5[D$9] = e8, void 0;\n    }\n    var r5 = n5[x$a];\n    null !== r5 && (n5[A$c] = null, n5[x$a] = null, n5[L$8] = null, r5(B$c(void 0, true))), n5[C$9] = true;\n  })), e7.on(\"readable\", N$7.bind(null, n5)), n5;\n};\nvar V$6 = {};\nvar G$5 = false;\nvar Y$4 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction K$8() {\n  if (G$5) return V$6;\n  G$5 = true;\n  var d4, u5 = T$1;\n  V$6 = C4, C4.ReadableState = D4;\n  y.EventEmitter;\n  var f6 = function(e7, t5) {\n    return e7.listeners(t5).length;\n  }, h5 = e$g, c5 = e$1$1.Buffer, b4 = Y$4.Uint8Array || function() {\n  };\n  var p5, y5 = X;\n  p5 = y5 && y5.debuglog ? y5.debuglog(\"stream\") : function() {\n  };\n  var w4, v5, _4, S4 = g$h, k4 = m$m, E4 = R$7.getHighWaterMark, M4 = e$1$12.codes, j4 = M4.ERR_INVALID_ARG_TYPE, O4 = M4.ERR_STREAM_PUSH_AFTER_EOF, T4 = M4.ERR_METHOD_NOT_IMPLEMENTED, P4 = M4.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n  t$2(C4, h5);\n  var x4 = k4.errorOrDestroy, L4 = [\"error\", \"close\", \"destroy\", \"pause\", \"resume\"];\n  function D4(e7, t5, n5) {\n    d4 = d4 || ee$1(), e7 = e7 || {}, \"boolean\" != typeof n5 && (n5 = t5 instanceof d4), this.objectMode = !!e7.objectMode, n5 && (this.objectMode = this.objectMode || !!e7.readableObjectMode), this.highWaterMark = E4(this, e7, \"readableHighWaterMark\", n5), this.buffer = new S4(), this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = false, this.endEmitted = false, this.reading = false, this.sync = true, this.needReadable = false, this.emittedReadable = false, this.readableListening = false, this.resumeScheduled = false, this.paused = true, this.emitClose = false !== e7.emitClose, this.autoDestroy = !!e7.autoDestroy, this.destroyed = false, this.defaultEncoding = e7.defaultEncoding || \"utf8\", this.awaitDrain = 0, this.readingMore = false, this.decoder = null, this.encoding = null, e7.encoding && (w4 || (w4 = e$12.StringDecoder), this.decoder = new w4(e7.encoding), this.encoding = e7.encoding);\n  }\n  function C4(e7) {\n    if (d4 = d4 || ee$1(), !(this instanceof C4)) return new C4(e7);\n    var t5 = this instanceof d4;\n    this._readableState = new D4(e7, this, t5), this.readable = true, e7 && (\"function\" == typeof e7.read && (this._read = e7.read), \"function\" == typeof e7.destroy && (this._destroy = e7.destroy)), h5.call(this);\n  }\n  function A4(e7, t5, n5, r5, i5) {\n    p5(\"readableAddChunk\", t5);\n    var a5, o5 = e7._readableState;\n    if (null === t5) o5.reading = false, (function(e8, t6) {\n      if (p5(\"onEofChunk\"), t6.ended) return;\n      if (t6.decoder) {\n        var n6 = t6.decoder.end();\n        n6 && n6.length && (t6.buffer.push(n6), t6.length += t6.objectMode ? 1 : n6.length);\n      }\n      t6.ended = true, t6.sync ? B4(e8) : (t6.needReadable = false, t6.emittedReadable || (t6.emittedReadable = true, I4(e8)));\n    })(e7, o5);\n    else if (i5 || (a5 = (function(e8, t6) {\n      var n6;\n      r6 = t6, c5.isBuffer(r6) || r6 instanceof b4 || \"string\" == typeof t6 || void 0 === t6 || e8.objectMode || (n6 = new j4(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], t6));\n      var r6;\n      return n6;\n    })(o5, t5)), a5) x4(e7, a5);\n    else if (o5.objectMode || t5 && t5.length > 0) if (\"string\" == typeof t5 || o5.objectMode || Object.getPrototypeOf(t5) === c5.prototype || (t5 = (function(e8) {\n      return c5.from(e8);\n    })(t5)), r5) o5.endEmitted ? x4(e7, new P4()) : q3(e7, o5, t5, true);\n    else if (o5.ended) x4(e7, new O4());\n    else {\n      if (o5.destroyed) return false;\n      o5.reading = false, o5.decoder && !n5 ? (t5 = o5.decoder.write(t5), o5.objectMode || 0 !== t5.length ? q3(e7, o5, t5, false) : N4(e7, o5)) : q3(e7, o5, t5, false);\n    }\n    else r5 || (o5.reading = false, N4(e7, o5));\n    return !o5.ended && (o5.length < o5.highWaterMark || 0 === o5.length);\n  }\n  function q3(e7, t5, n5, r5) {\n    t5.flowing && 0 === t5.length && !t5.sync ? (t5.awaitDrain = 0, e7.emit(\"data\", n5)) : (t5.length += t5.objectMode ? 1 : n5.length, r5 ? t5.buffer.unshift(n5) : t5.buffer.push(n5), t5.needReadable && B4(e7)), N4(e7, t5);\n  }\n  Object.defineProperty(C4.prototype, \"destroyed\", { enumerable: false, get: function() {\n    return void 0 !== this._readableState && this._readableState.destroyed;\n  }, set: function(e7) {\n    this._readableState && (this._readableState.destroyed = e7);\n  } }), C4.prototype.destroy = k4.destroy, C4.prototype._undestroy = k4.undestroy, C4.prototype._destroy = function(e7, t5) {\n    t5(e7);\n  }, C4.prototype.push = function(e7, t5) {\n    var n5, r5 = this._readableState;\n    return r5.objectMode ? n5 = true : \"string\" == typeof e7 && ((t5 = t5 || r5.defaultEncoding) !== r5.encoding && (e7 = c5.from(e7, t5), t5 = \"\"), n5 = true), A4(this, e7, t5, false, n5);\n  }, C4.prototype.unshift = function(e7) {\n    return A4(this, e7, null, true, false);\n  }, C4.prototype.isPaused = function() {\n    return false === this._readableState.flowing;\n  }, C4.prototype.setEncoding = function(e7) {\n    w4 || (w4 = e$12.StringDecoder);\n    var t5 = new w4(e7);\n    this._readableState.decoder = t5, this._readableState.encoding = this._readableState.decoder.encoding;\n    for (var n5 = this._readableState.buffer.head, r5 = \"\"; null !== n5; ) r5 += t5.write(n5.data), n5 = n5.next;\n    return this._readableState.buffer.clear(), \"\" !== r5 && this._readableState.buffer.push(r5), this._readableState.length = r5.length, this;\n  };\n  function W3(e7, t5) {\n    return e7 <= 0 || 0 === t5.length && t5.ended ? 0 : t5.objectMode ? 1 : e7 != e7 ? t5.flowing && t5.length ? t5.buffer.head.data.length : t5.length : (e7 > t5.highWaterMark && (t5.highWaterMark = (function(e8) {\n      return e8 >= 1073741824 ? e8 = 1073741824 : (e8--, e8 |= e8 >>> 1, e8 |= e8 >>> 2, e8 |= e8 >>> 4, e8 |= e8 >>> 8, e8 |= e8 >>> 16, e8++), e8;\n    })(e7)), e7 <= t5.length ? e7 : t5.ended ? t5.length : (t5.needReadable = true, 0));\n  }\n  function B4(e7) {\n    var t5 = e7._readableState;\n    p5(\"emitReadable\", t5.needReadable, t5.emittedReadable), t5.needReadable = false, t5.emittedReadable || (p5(\"emitReadable\", t5.flowing), t5.emittedReadable = true, u5.nextTick(I4, e7));\n  }\n  function I4(e7) {\n    var t5 = e7._readableState;\n    p5(\"emitReadable_\", t5.destroyed, t5.length, t5.ended), t5.destroyed || !t5.length && !t5.ended || (e7.emit(\"readable\"), t5.emittedReadable = false), t5.needReadable = !t5.flowing && !t5.ended && t5.length <= t5.highWaterMark, J3(e7);\n  }\n  function N4(e7, t5) {\n    t5.readingMore || (t5.readingMore = true, u5.nextTick(U4, e7, t5));\n  }\n  function U4(e7, t5) {\n    for (; !t5.reading && !t5.ended && (t5.length < t5.highWaterMark || t5.flowing && 0 === t5.length); ) {\n      var n5 = t5.length;\n      if (p5(\"maybeReadMore read 0\"), e7.read(0), n5 === t5.length) break;\n    }\n    t5.readingMore = false;\n  }\n  function H3(e7) {\n    var t5 = e7._readableState;\n    t5.readableListening = e7.listenerCount(\"readable\") > 0, t5.resumeScheduled && !t5.paused ? t5.flowing = true : e7.listenerCount(\"data\") > 0 && e7.resume();\n  }\n  function K3(e7) {\n    p5(\"readable nexttick read 0\"), e7.read(0);\n  }\n  function z4(e7, t5) {\n    p5(\"resume\", t5.reading), t5.reading || e7.read(0), t5.resumeScheduled = false, e7.emit(\"resume\"), J3(e7), t5.flowing && !t5.reading && e7.read(0);\n  }\n  function J3(e7) {\n    var t5 = e7._readableState;\n    for (p5(\"flow\", t5.flowing); t5.flowing && null !== e7.read(); ) ;\n  }\n  function Q3(e7, t5) {\n    return 0 === t5.length ? null : (t5.objectMode ? n5 = t5.buffer.shift() : !e7 || e7 >= t5.length ? (n5 = t5.decoder ? t5.buffer.join(\"\") : 1 === t5.buffer.length ? t5.buffer.first() : t5.buffer.concat(t5.length), t5.buffer.clear()) : n5 = t5.buffer.consume(e7, t5.decoder), n5);\n    var n5;\n  }\n  function X3(e7) {\n    var t5 = e7._readableState;\n    p5(\"endReadable\", t5.endEmitted), t5.endEmitted || (t5.ended = true, u5.nextTick(Z3, t5, e7));\n  }\n  function Z3(e7, t5) {\n    if (p5(\"endReadableNT\", e7.endEmitted, e7.length), !e7.endEmitted && 0 === e7.length && (e7.endEmitted = true, t5.readable = false, t5.emit(\"end\"), e7.autoDestroy)) {\n      var n5 = t5._writableState;\n      (!n5 || n5.autoDestroy && n5.finished) && t5.destroy();\n    }\n  }\n  function $3(e7, t5) {\n    for (var n5 = 0, r5 = e7.length; n5 < r5; n5++) if (e7[n5] === t5) return n5;\n    return -1;\n  }\n  return C4.prototype.read = function(e7) {\n    p5(\"read\", e7), e7 = parseInt(e7, 10);\n    var t5 = this._readableState, n5 = e7;\n    if (0 !== e7 && (t5.emittedReadable = false), 0 === e7 && t5.needReadable && ((0 !== t5.highWaterMark ? t5.length >= t5.highWaterMark : t5.length > 0) || t5.ended)) return p5(\"read: emitReadable\", t5.length, t5.ended), 0 === t5.length && t5.ended ? X3(this) : B4(this), null;\n    if (0 === (e7 = W3(e7, t5)) && t5.ended) return 0 === t5.length && X3(this), null;\n    var r5, i5 = t5.needReadable;\n    return p5(\"need readable\", i5), (0 === t5.length || t5.length - e7 < t5.highWaterMark) && p5(\"length less than watermark\", i5 = true), t5.ended || t5.reading ? p5(\"reading or ended\", i5 = false) : i5 && (p5(\"do read\"), t5.reading = true, t5.sync = true, 0 === t5.length && (t5.needReadable = true), this._read(t5.highWaterMark), t5.sync = false, t5.reading || (e7 = W3(n5, t5))), null === (r5 = e7 > 0 ? Q3(e7, t5) : null) ? (t5.needReadable = t5.length <= t5.highWaterMark, e7 = 0) : (t5.length -= e7, t5.awaitDrain = 0), 0 === t5.length && (t5.ended || (t5.needReadable = true), n5 !== e7 && t5.ended && X3(this)), null !== r5 && this.emit(\"data\", r5), r5;\n  }, C4.prototype._read = function(e7) {\n    x4(this, new T4(\"_read()\"));\n  }, C4.prototype.pipe = function(e7, t5) {\n    var n5 = this, r5 = this._readableState;\n    switch (r5.pipesCount) {\n      case 0:\n        r5.pipes = e7;\n        break;\n      case 1:\n        r5.pipes = [r5.pipes, e7];\n        break;\n      default:\n        r5.pipes.push(e7);\n    }\n    r5.pipesCount += 1, p5(\"pipe count=%d opts=%j\", r5.pipesCount, t5);\n    var i5 = (!t5 || false !== t5.end) && e7 !== u5.stdout && e7 !== u5.stderr ? o5 : g4;\n    function a5(t6, i6) {\n      p5(\"onunpipe\"), t6 === n5 && i6 && false === i6.hasUnpiped && (i6.hasUnpiped = true, p5(\"cleanup\"), e7.removeListener(\"close\", c6), e7.removeListener(\"finish\", b5), e7.removeListener(\"drain\", s5), e7.removeListener(\"error\", h6), e7.removeListener(\"unpipe\", a5), n5.removeListener(\"end\", o5), n5.removeListener(\"end\", g4), n5.removeListener(\"data\", d5), l5 = true, !r5.awaitDrain || e7._writableState && !e7._writableState.needDrain || s5());\n    }\n    function o5() {\n      p5(\"onend\"), e7.end();\n    }\n    r5.endEmitted ? u5.nextTick(i5) : n5.once(\"end\", i5), e7.on(\"unpipe\", a5);\n    var s5 = /* @__PURE__ */ (function(e8) {\n      return function() {\n        var t6 = e8._readableState;\n        p5(\"pipeOnDrain\", t6.awaitDrain), t6.awaitDrain && t6.awaitDrain--, 0 === t6.awaitDrain && f6(e8, \"data\") && (t6.flowing = true, J3(e8));\n      };\n    })(n5);\n    e7.on(\"drain\", s5);\n    var l5 = false;\n    function d5(t6) {\n      p5(\"ondata\");\n      var i6 = e7.write(t6);\n      p5(\"dest.write\", i6), false === i6 && ((1 === r5.pipesCount && r5.pipes === e7 || r5.pipesCount > 1 && -1 !== $3(r5.pipes, e7)) && !l5 && (p5(\"false write response, pause\", r5.awaitDrain), r5.awaitDrain++), n5.pause());\n    }\n    function h6(t6) {\n      p5(\"onerror\", t6), g4(), e7.removeListener(\"error\", h6), 0 === f6(e7, \"error\") && x4(e7, t6);\n    }\n    function c6() {\n      e7.removeListener(\"finish\", b5), g4();\n    }\n    function b5() {\n      p5(\"onfinish\"), e7.removeListener(\"close\", c6), g4();\n    }\n    function g4() {\n      p5(\"unpipe\"), n5.unpipe(e7);\n    }\n    return n5.on(\"data\", d5), (function(e8, t6, n6) {\n      if (\"function\" == typeof e8.prependListener) return e8.prependListener(t6, n6);\n      e8._events && e8._events[t6] ? Array.isArray(e8._events[t6]) ? e8._events[t6].unshift(n6) : e8._events[t6] = [n6, e8._events[t6]] : e8.on(t6, n6);\n    })(e7, \"error\", h6), e7.once(\"close\", c6), e7.once(\"finish\", b5), e7.emit(\"pipe\", n5), r5.flowing || (p5(\"pipe resume\"), n5.resume()), e7;\n  }, C4.prototype.unpipe = function(e7) {\n    var t5 = this._readableState, n5 = { hasUnpiped: false };\n    if (0 === t5.pipesCount) return this;\n    if (1 === t5.pipesCount) return e7 && e7 !== t5.pipes || (e7 || (e7 = t5.pipes), t5.pipes = null, t5.pipesCount = 0, t5.flowing = false, e7 && e7.emit(\"unpipe\", this, n5)), this;\n    if (!e7) {\n      var r5 = t5.pipes, i5 = t5.pipesCount;\n      t5.pipes = null, t5.pipesCount = 0, t5.flowing = false;\n      for (var a5 = 0; a5 < i5; a5++) r5[a5].emit(\"unpipe\", this, { hasUnpiped: false });\n      return this;\n    }\n    var o5 = $3(t5.pipes, e7);\n    return -1 === o5 || (t5.pipes.splice(o5, 1), t5.pipesCount -= 1, 1 === t5.pipesCount && (t5.pipes = t5.pipes[0]), e7.emit(\"unpipe\", this, n5)), this;\n  }, C4.prototype.on = function(e7, t5) {\n    var n5 = h5.prototype.on.call(this, e7, t5), r5 = this._readableState;\n    return \"data\" === e7 ? (r5.readableListening = this.listenerCount(\"readable\") > 0, false !== r5.flowing && this.resume()) : \"readable\" === e7 && (r5.endEmitted || r5.readableListening || (r5.readableListening = r5.needReadable = true, r5.flowing = false, r5.emittedReadable = false, p5(\"on readable\", r5.length, r5.reading), r5.length ? B4(this) : r5.reading || u5.nextTick(K3, this))), n5;\n  }, C4.prototype.addListener = C4.prototype.on, C4.prototype.removeListener = function(e7, t5) {\n    var n5 = h5.prototype.removeListener.call(this, e7, t5);\n    return \"readable\" === e7 && u5.nextTick(H3, this), n5;\n  }, C4.prototype.removeAllListeners = function(e7) {\n    var t5 = h5.prototype.removeAllListeners.apply(this, arguments);\n    return \"readable\" !== e7 && void 0 !== e7 || u5.nextTick(H3, this), t5;\n  }, C4.prototype.resume = function() {\n    var e7 = this._readableState;\n    return e7.flowing || (p5(\"resume\"), e7.flowing = !e7.readableListening, (function(e8, t5) {\n      t5.resumeScheduled || (t5.resumeScheduled = true, u5.nextTick(z4, e8, t5));\n    })(this, e7)), e7.paused = false, this;\n  }, C4.prototype.pause = function() {\n    return p5(\"call pause flowing=%j\", this._readableState.flowing), false !== this._readableState.flowing && (p5(\"pause\"), this._readableState.flowing = false, this.emit(\"pause\")), this._readableState.paused = true, this;\n  }, C4.prototype.wrap = function(e7) {\n    var t5 = this, n5 = this._readableState, r5 = false;\n    for (var i5 in e7.on(\"end\", (function() {\n      if (p5(\"wrapped end\"), n5.decoder && !n5.ended) {\n        var e8 = n5.decoder.end();\n        e8 && e8.length && t5.push(e8);\n      }\n      t5.push(null);\n    })), e7.on(\"data\", (function(i6) {\n      (p5(\"wrapped data\"), n5.decoder && (i6 = n5.decoder.write(i6)), n5.objectMode && null == i6) || (n5.objectMode || i6 && i6.length) && (t5.push(i6) || (r5 = true, e7.pause()));\n    })), e7) void 0 === this[i5] && \"function\" == typeof e7[i5] && (this[i5] = /* @__PURE__ */ (function(t6) {\n      return function() {\n        return e7[t6].apply(e7, arguments);\n      };\n    })(i5));\n    for (var a5 = 0; a5 < L4.length; a5++) e7.on(L4[a5], this.emit.bind(this, L4[a5]));\n    return this._read = function(t6) {\n      p5(\"wrapped _read\", t6), r5 && (r5 = false, e7.resume());\n    }, this;\n  }, \"function\" == typeof Symbol && (C4.prototype[Symbol.asyncIterator] = function() {\n    return void 0 === v5 && (v5 = F$8), v5(this);\n  }), Object.defineProperty(C4.prototype, \"readableHighWaterMark\", { enumerable: false, get: function() {\n    return this._readableState.highWaterMark;\n  } }), Object.defineProperty(C4.prototype, \"readableBuffer\", { enumerable: false, get: function() {\n    return this._readableState && this._readableState.buffer;\n  } }), Object.defineProperty(C4.prototype, \"readableFlowing\", { enumerable: false, get: function() {\n    return this._readableState.flowing;\n  }, set: function(e7) {\n    this._readableState && (this._readableState.flowing = e7);\n  } }), C4._fromList = Q3, Object.defineProperty(C4.prototype, \"readableLength\", { enumerable: false, get: function() {\n    return this._readableState.length;\n  } }), \"function\" == typeof Symbol && (C4.from = function(e7, t5) {\n    return void 0 === _4 && (_4 = r$1$1), _4(C4, e7, t5);\n  }), V$6;\n}\nvar z$9 = {};\nvar J$5 = false;\nvar Q$4 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction X$4() {\n  if (J$5) return z$9;\n  J$5 = true;\n  var e$23, r5 = T$1;\n  function s5(e7) {\n    var t5 = this;\n    this.next = null, this.entry = null, this.finish = function() {\n      !(function(e8, t6, n5) {\n        var r6 = e8.entry;\n        e8.entry = null;\n        for (; r6; ) {\n          var i5 = r6.callback;\n          t6.pendingcb--, i5(n5), r6 = r6.next;\n        }\n        t6.corkedRequestsFree.next = e8;\n      })(t5, e7);\n    };\n  }\n  z$9 = P4, P4.WritableState = T4;\n  var l5 = { deprecate: t$1$1 }, u5 = e$g, f6 = e$1$1.Buffer, h5 = Q$4.Uint8Array || function() {\n  };\n  var c5, b4 = m$m, p5 = R$7.getHighWaterMark, g4 = e$1$12.codes, y5 = g4.ERR_INVALID_ARG_TYPE, w4 = g4.ERR_METHOD_NOT_IMPLEMENTED, v5 = g4.ERR_MULTIPLE_CALLBACK, _4 = g4.ERR_STREAM_CANNOT_PIPE, S4 = g4.ERR_STREAM_DESTROYED, k4 = g4.ERR_STREAM_NULL_VALUES, E4 = g4.ERR_STREAM_WRITE_AFTER_END, M4 = g4.ERR_UNKNOWN_ENCODING, j4 = b4.errorOrDestroy;\n  function O4() {\n  }\n  function T4(t5, n5, i5) {\n    e$23 = e$23 || ee$1(), t5 = t5 || {}, \"boolean\" != typeof i5 && (i5 = n5 instanceof e$23), this.objectMode = !!t5.objectMode, i5 && (this.objectMode = this.objectMode || !!t5.writableObjectMode), this.highWaterMark = p5(this, t5, \"writableHighWaterMark\", i5), this.finalCalled = false, this.needDrain = false, this.ending = false, this.ended = false, this.finished = false, this.destroyed = false;\n    var a5 = false === t5.decodeStrings;\n    this.decodeStrings = !a5, this.defaultEncoding = t5.defaultEncoding || \"utf8\", this.length = 0, this.writing = false, this.corked = 0, this.sync = true, this.bufferProcessing = false, this.onwrite = function(e7) {\n      !(function(e8, t6) {\n        var n6 = e8._writableState, i6 = n6.sync, a6 = n6.writecb;\n        if (\"function\" != typeof a6) throw new v5();\n        if ((function(e9) {\n          e9.writing = false, e9.writecb = null, e9.length -= e9.writelen, e9.writelen = 0;\n        })(n6), t6) !(function(e9, t7, n7, i7, a7) {\n          --t7.pendingcb, n7 ? (r5.nextTick(a7, i7), r5.nextTick(q3, e9, t7), e9._writableState.errorEmitted = true, j4(e9, i7)) : (a7(i7), e9._writableState.errorEmitted = true, j4(e9, i7), q3(e9, t7));\n        })(e8, n6, i6, t6, a6);\n        else {\n          var o5 = C4(n6) || e8.destroyed;\n          o5 || n6.corked || n6.bufferProcessing || !n6.bufferedRequest || D4(e8, n6), i6 ? r5.nextTick(L4, e8, n6, o5, a6) : L4(e8, n6, o5, a6);\n        }\n      })(n5, e7);\n    }, this.writecb = null, this.writelen = 0, this.bufferedRequest = null, this.lastBufferedRequest = null, this.pendingcb = 0, this.prefinished = false, this.errorEmitted = false, this.emitClose = false !== t5.emitClose, this.autoDestroy = !!t5.autoDestroy, this.bufferedRequestCount = 0, this.corkedRequestsFree = new s5(this);\n  }\n  function P4(t5) {\n    var n5 = this instanceof (e$23 = e$23 || ee$1());\n    if (!n5 && !c5.call(P4, this)) return new P4(t5);\n    this._writableState = new T4(t5, this, n5), this.writable = true, t5 && (\"function\" == typeof t5.write && (this._write = t5.write), \"function\" == typeof t5.writev && (this._writev = t5.writev), \"function\" == typeof t5.destroy && (this._destroy = t5.destroy), \"function\" == typeof t5.final && (this._final = t5.final)), u5.call(this);\n  }\n  function x4(e7, t5, n5, r6, i5, a5, o5) {\n    t5.writelen = r6, t5.writecb = o5, t5.writing = true, t5.sync = true, t5.destroyed ? t5.onwrite(new S4(\"write\")) : n5 ? e7._writev(i5, t5.onwrite) : e7._write(i5, a5, t5.onwrite), t5.sync = false;\n  }\n  function L4(e7, t5, n5, r6) {\n    n5 || !(function(e8, t6) {\n      0 === t6.length && t6.needDrain && (t6.needDrain = false, e8.emit(\"drain\"));\n    })(e7, t5), t5.pendingcb--, r6(), q3(e7, t5);\n  }\n  function D4(e7, t5) {\n    t5.bufferProcessing = true;\n    var n5 = t5.bufferedRequest;\n    if (e7._writev && n5 && n5.next) {\n      var r6 = t5.bufferedRequestCount, i5 = new Array(r6), a5 = t5.corkedRequestsFree;\n      a5.entry = n5;\n      for (var o5 = 0, l6 = true; n5; ) i5[o5] = n5, n5.isBuf || (l6 = false), n5 = n5.next, o5 += 1;\n      i5.allBuffers = l6, x4(e7, t5, true, t5.length, i5, \"\", a5.finish), t5.pendingcb++, t5.lastBufferedRequest = null, a5.next ? (t5.corkedRequestsFree = a5.next, a5.next = null) : t5.corkedRequestsFree = new s5(t5), t5.bufferedRequestCount = 0;\n    } else {\n      for (; n5; ) {\n        var d4 = n5.chunk, u6 = n5.encoding, f7 = n5.callback;\n        if (x4(e7, t5, false, t5.objectMode ? 1 : d4.length, d4, u6, f7), n5 = n5.next, t5.bufferedRequestCount--, t5.writing) break;\n      }\n      null === n5 && (t5.lastBufferedRequest = null);\n    }\n    t5.bufferedRequest = n5, t5.bufferProcessing = false;\n  }\n  function C4(e7) {\n    return e7.ending && 0 === e7.length && null === e7.bufferedRequest && !e7.finished && !e7.writing;\n  }\n  function A4(e7, t5) {\n    e7._final((function(n5) {\n      t5.pendingcb--, n5 && j4(e7, n5), t5.prefinished = true, e7.emit(\"prefinish\"), q3(e7, t5);\n    }));\n  }\n  function q3(e7, t5) {\n    var n5 = C4(t5);\n    if (n5 && (!(function(e8, t6) {\n      t6.prefinished || t6.finalCalled || (\"function\" != typeof e8._final || t6.destroyed ? (t6.prefinished = true, e8.emit(\"prefinish\")) : (t6.pendingcb++, t6.finalCalled = true, r5.nextTick(A4, e8, t6)));\n    })(e7, t5), 0 === t5.pendingcb && (t5.finished = true, e7.emit(\"finish\"), t5.autoDestroy))) {\n      var i5 = e7._readableState;\n      (!i5 || i5.autoDestroy && i5.endEmitted) && e7.destroy();\n    }\n    return n5;\n  }\n  return t$2(P4, u5), T4.prototype.getBuffer = function() {\n    for (var e7 = this.bufferedRequest, t5 = []; e7; ) t5.push(e7), e7 = e7.next;\n    return t5;\n  }, (function() {\n    try {\n      Object.defineProperty(T4.prototype, \"buffer\", { get: l5.deprecate((function() {\n        return this.getBuffer();\n      }), \"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\", \"DEP0003\") });\n    } catch (e7) {\n    }\n  })(), \"function\" == typeof Symbol && Symbol.hasInstance && \"function\" == typeof Function.prototype[Symbol.hasInstance] ? (c5 = Function.prototype[Symbol.hasInstance], Object.defineProperty(P4, Symbol.hasInstance, { value: function(e7) {\n    return !!c5.call(this, e7) || this === P4 && (e7 && e7._writableState instanceof T4);\n  } })) : c5 = function(e7) {\n    return e7 instanceof this;\n  }, P4.prototype.pipe = function() {\n    j4(this, new _4());\n  }, P4.prototype.write = function(e7, t5, n5) {\n    var i5, a5 = this._writableState, o5 = false, s6 = !a5.objectMode && (i5 = e7, f6.isBuffer(i5) || i5 instanceof h5);\n    return s6 && !f6.isBuffer(e7) && (e7 = (function(e8) {\n      return f6.from(e8);\n    })(e7)), \"function\" == typeof t5 && (n5 = t5, t5 = null), s6 ? t5 = \"buffer\" : t5 || (t5 = a5.defaultEncoding), \"function\" != typeof n5 && (n5 = O4), a5.ending ? (function(e8, t6) {\n      var n6 = new E4();\n      j4(e8, n6), r5.nextTick(t6, n6);\n    })(this, n5) : (s6 || (function(e8, t6, n6, i6) {\n      var a6;\n      return null === n6 ? a6 = new k4() : \"string\" == typeof n6 || t6.objectMode || (a6 = new y5(\"chunk\", [\"string\", \"Buffer\"], n6)), !a6 || (j4(e8, a6), r5.nextTick(i6, a6), false);\n    })(this, a5, e7, n5)) && (a5.pendingcb++, o5 = (function(e8, t6, n6, r6, i6, a6) {\n      if (!n6) {\n        var o6 = (function(e9, t7, n7) {\n          e9.objectMode || false === e9.decodeStrings || \"string\" != typeof t7 || (t7 = f6.from(t7, n7));\n          return t7;\n        })(t6, r6, i6);\n        r6 !== o6 && (n6 = true, i6 = \"buffer\", r6 = o6);\n      }\n      var s7 = t6.objectMode ? 1 : r6.length;\n      t6.length += s7;\n      var l6 = t6.length < t6.highWaterMark;\n      l6 || (t6.needDrain = true);\n      if (t6.writing || t6.corked) {\n        var d4 = t6.lastBufferedRequest;\n        t6.lastBufferedRequest = { chunk: r6, encoding: i6, isBuf: n6, callback: a6, next: null }, d4 ? d4.next = t6.lastBufferedRequest : t6.bufferedRequest = t6.lastBufferedRequest, t6.bufferedRequestCount += 1;\n      } else x4(e8, t6, false, s7, r6, i6, a6);\n      return l6;\n    })(this, a5, s6, e7, t5, n5)), o5;\n  }, P4.prototype.cork = function() {\n    this._writableState.corked++;\n  }, P4.prototype.uncork = function() {\n    var e7 = this._writableState;\n    e7.corked && (e7.corked--, e7.writing || e7.corked || e7.bufferProcessing || !e7.bufferedRequest || D4(this, e7));\n  }, P4.prototype.setDefaultEncoding = function(e7) {\n    if (\"string\" == typeof e7 && (e7 = e7.toLowerCase()), !([\"hex\", \"utf8\", \"utf-8\", \"ascii\", \"binary\", \"base64\", \"ucs2\", \"ucs-2\", \"utf16le\", \"utf-16le\", \"raw\"].indexOf((e7 + \"\").toLowerCase()) > -1)) throw new M4(e7);\n    return this._writableState.defaultEncoding = e7, this;\n  }, Object.defineProperty(P4.prototype, \"writableBuffer\", { enumerable: false, get: function() {\n    return this._writableState && this._writableState.getBuffer();\n  } }), Object.defineProperty(P4.prototype, \"writableHighWaterMark\", { enumerable: false, get: function() {\n    return this._writableState.highWaterMark;\n  } }), P4.prototype._write = function(e7, t5, n5) {\n    n5(new w4(\"_write()\"));\n  }, P4.prototype._writev = null, P4.prototype.end = function(e7, t5, n5) {\n    var i5 = this._writableState;\n    return \"function\" == typeof e7 ? (n5 = e7, e7 = null, t5 = null) : \"function\" == typeof t5 && (n5 = t5, t5 = null), null != e7 && this.write(e7, t5), i5.corked && (i5.corked = 1, this.uncork()), i5.ending || (function(e8, t6, n6) {\n      t6.ending = true, q3(e8, t6), n6 && (t6.finished ? r5.nextTick(n6) : e8.once(\"finish\", n6));\n      t6.ended = true, e8.writable = false;\n    })(this, i5, n5), this;\n  }, Object.defineProperty(P4.prototype, \"writableLength\", { enumerable: false, get: function() {\n    return this._writableState.length;\n  } }), Object.defineProperty(P4.prototype, \"destroyed\", { enumerable: false, get: function() {\n    return void 0 !== this._writableState && this._writableState.destroyed;\n  }, set: function(e7) {\n    this._writableState && (this._writableState.destroyed = e7);\n  } }), P4.prototype.destroy = b4.destroy, P4.prototype._undestroy = b4.undestroy, P4.prototype._destroy = function(e7, t5) {\n    t5(e7);\n  }, z$9;\n}\nvar Z$3 = {};\nvar $$3 = false;\nfunction ee$1() {\n  if ($$3) return Z$3;\n  $$3 = true;\n  var e7 = T$1, t5 = Object.keys || function(e8) {\n    var t6 = [];\n    for (var n6 in e8) t6.push(n6);\n    return t6;\n  };\n  Z$3 = d4;\n  var n5 = K$8(), r5 = X$4();\n  t$2(d4, n5);\n  for (var a5 = t5(r5.prototype), s5 = 0; s5 < a5.length; s5++) {\n    var l5 = a5[s5];\n    d4.prototype[l5] || (d4.prototype[l5] = r5.prototype[l5]);\n  }\n  function d4(e8) {\n    if (!(this instanceof d4)) return new d4(e8);\n    n5.call(this, e8), r5.call(this, e8), this.allowHalfOpen = true, e8 && (false === e8.readable && (this.readable = false), false === e8.writable && (this.writable = false), false === e8.allowHalfOpen && (this.allowHalfOpen = false, this.once(\"end\", u5)));\n  }\n  function u5() {\n    this._writableState.ended || e7.nextTick(f6, this);\n  }\n  function f6(e8) {\n    e8.end();\n  }\n  return Object.defineProperty(d4.prototype, \"writableHighWaterMark\", { enumerable: false, get: function() {\n    return this._writableState.highWaterMark;\n  } }), Object.defineProperty(d4.prototype, \"writableBuffer\", { enumerable: false, get: function() {\n    return this._writableState && this._writableState.getBuffer();\n  } }), Object.defineProperty(d4.prototype, \"writableLength\", { enumerable: false, get: function() {\n    return this._writableState.length;\n  } }), Object.defineProperty(d4.prototype, \"destroyed\", { enumerable: false, get: function() {\n    return void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed && this._writableState.destroyed);\n  }, set: function(e8) {\n    void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed = e8, this._writableState.destroyed = e8);\n  } }), Z$3;\n}\nvar t$2$1 = K$8();\nvar r$3$1 = e$1$12.codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction t$3$1() {\n}\nvar n$1$12 = function e5(n5, o5, a5) {\n  if (\"function\" == typeof o5) return e5(n5, null, o5);\n  o5 || (o5 = {}), a5 = /* @__PURE__ */ (function(e7) {\n    var r5 = false;\n    return function() {\n      if (!r5) {\n        r5 = true;\n        for (var t5 = arguments.length, n6 = new Array(t5), o6 = 0; o6 < t5; o6++) n6[o6] = arguments[o6];\n        e7.apply(this, n6);\n      }\n    };\n  })(a5 || t$3$1);\n  var i5 = o5.readable || false !== o5.readable && n5.readable, l5 = o5.writable || false !== o5.writable && n5.writable, c5 = function() {\n    n5.writable || s5();\n  }, f6 = n5._writableState && n5._writableState.finished, s5 = function() {\n    l5 = false, f6 = true, i5 || a5.call(n5);\n  }, u5 = n5._readableState && n5._readableState.endEmitted, d4 = function() {\n    i5 = false, u5 = true, l5 || a5.call(n5);\n  }, b4 = function(e7) {\n    a5.call(n5, e7);\n  }, v5 = function() {\n    var e7;\n    return i5 && !u5 ? (n5._readableState && n5._readableState.ended || (e7 = new r$3$1()), a5.call(n5, e7)) : l5 && !f6 ? (n5._writableState && n5._writableState.ended || (e7 = new r$3$1()), a5.call(n5, e7)) : void 0;\n  }, m4 = function() {\n    n5.req.on(\"finish\", s5);\n  };\n  return !(function(e7) {\n    return e7.setHeader && \"function\" == typeof e7.abort;\n  })(n5) ? l5 && !n5._writableState && (n5.on(\"end\", c5), n5.on(\"close\", c5)) : (n5.on(\"complete\", s5), n5.on(\"abort\", v5), n5.req ? m4() : n5.on(\"request\", m4)), n5.on(\"end\", d4), n5.on(\"finish\", s5), false !== o5.error && n5.on(\"error\", b4), n5.on(\"close\", v5), function() {\n    n5.removeListener(\"complete\", s5), n5.removeListener(\"abort\", v5), n5.removeListener(\"request\", m4), n5.req && n5.req.removeListener(\"finish\", s5), n5.removeListener(\"end\", c5), n5.removeListener(\"close\", c5), n5.removeListener(\"finish\", s5), n5.removeListener(\"end\", d4), n5.removeListener(\"error\", b4), n5.removeListener(\"close\", v5);\n  };\n};\nfunction f$1$1(e7, t5) {\n  var n5 = Object.keys(e7);\n  if (Object.getOwnPropertySymbols) {\n    var r5 = Object.getOwnPropertySymbols(e7);\n    t5 && (r5 = r5.filter((function(t6) {\n      return Object.getOwnPropertyDescriptor(e7, t6).enumerable;\n    }))), n5.push.apply(n5, r5);\n  }\n  return n5;\n}\nfunction h$1$12(e7, t5, n5) {\n  return t5 in e7 ? Object.defineProperty(e7, t5, { value: n5, enumerable: true, configurable: true, writable: true }) : e7[t5] = n5, e7;\n}\nfunction c$1$12(e7, t5) {\n  for (var n5 = 0; n5 < t5.length; n5++) {\n    var r5 = t5[n5];\n    r5.enumerable = r5.enumerable || false, r5.configurable = true, \"value\" in r5 && (r5.writable = true), Object.defineProperty(e7, r5.key, r5);\n  }\n}\nvar b$1$1 = e$1$1.Buffer;\nvar p$1$1 = X.inspect;\nvar g$1$1 = p$1$1 && p$1$1.custom || \"inspect\";\nvar y$1$1 = (function() {\n  function e7() {\n    !(function(e8, t6) {\n      if (!(e8 instanceof t6)) throw new TypeError(\"Cannot call a class as a function\");\n    })(this, e7), this.head = null, this.tail = null, this.length = 0;\n  }\n  var t5, n5;\n  return t5 = e7, (n5 = [{ key: \"push\", value: function(e8) {\n    var t6 = { data: e8, next: null };\n    this.length > 0 ? this.tail.next = t6 : this.head = t6, this.tail = t6, ++this.length;\n  } }, { key: \"unshift\", value: function(e8) {\n    var t6 = { data: e8, next: this.head };\n    0 === this.length && (this.tail = t6), this.head = t6, ++this.length;\n  } }, { key: \"shift\", value: function() {\n    if (0 !== this.length) {\n      var e8 = this.head.data;\n      return 1 === this.length ? this.head = this.tail = null : this.head = this.head.next, --this.length, e8;\n    }\n  } }, { key: \"clear\", value: function() {\n    this.head = this.tail = null, this.length = 0;\n  } }, { key: \"join\", value: function(e8) {\n    if (0 === this.length) return \"\";\n    for (var t6 = this.head, n6 = \"\" + t6.data; t6 = t6.next; ) n6 += e8 + t6.data;\n    return n6;\n  } }, { key: \"concat\", value: function(e8) {\n    if (0 === this.length) return b$1$1.alloc(0);\n    for (var t6, n6, r5, i5 = b$1$1.allocUnsafe(e8 >>> 0), a5 = this.head, o5 = 0; a5; ) t6 = a5.data, n6 = i5, r5 = o5, void b$1$1.prototype.copy.call(t6, n6, r5), o5 += a5.data.length, a5 = a5.next;\n    return i5;\n  } }, { key: \"consume\", value: function(e8, t6) {\n    var n6;\n    return e8 < this.head.data.length ? (n6 = this.head.data.slice(0, e8), this.head.data = this.head.data.slice(e8)) : n6 = e8 === this.head.data.length ? this.shift() : t6 ? this._getString(e8) : this._getBuffer(e8), n6;\n  } }, { key: \"first\", value: function() {\n    return this.head.data;\n  } }, { key: \"_getString\", value: function(e8) {\n    var t6 = this.head, n6 = 1, r5 = t6.data;\n    for (e8 -= r5.length; t6 = t6.next; ) {\n      var i5 = t6.data, a5 = e8 > i5.length ? i5.length : e8;\n      if (a5 === i5.length ? r5 += i5 : r5 += i5.slice(0, e8), 0 == (e8 -= a5)) {\n        a5 === i5.length ? (++n6, t6.next ? this.head = t6.next : this.head = this.tail = null) : (this.head = t6, t6.data = i5.slice(a5));\n        break;\n      }\n      ++n6;\n    }\n    return this.length -= n6, r5;\n  } }, { key: \"_getBuffer\", value: function(e8) {\n    var t6 = b$1$1.allocUnsafe(e8), n6 = this.head, r5 = 1;\n    for (n6.data.copy(t6), e8 -= n6.data.length; n6 = n6.next; ) {\n      var i5 = n6.data, a5 = e8 > i5.length ? i5.length : e8;\n      if (i5.copy(t6, t6.length - e8, 0, a5), 0 == (e8 -= a5)) {\n        a5 === i5.length ? (++r5, n6.next ? this.head = n6.next : this.head = this.tail = null) : (this.head = n6, n6.data = i5.slice(a5));\n        break;\n      }\n      ++r5;\n    }\n    return this.length -= r5, t6;\n  } }, { key: g$1$1, value: function(e8, t6) {\n    return p$1$1(this, (function(e9) {\n      for (var t7 = 1; t7 < arguments.length; t7++) {\n        var n6 = null != arguments[t7] ? arguments[t7] : {};\n        t7 % 2 ? f$1$1(Object(n6), true).forEach((function(t8) {\n          h$1$12(e9, t8, n6[t8]);\n        })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e9, Object.getOwnPropertyDescriptors(n6)) : f$1$1(Object(n6)).forEach((function(t8) {\n          Object.defineProperty(e9, t8, Object.getOwnPropertyDescriptor(n6, t8));\n        }));\n      }\n      return e9;\n    })({}, t6, { depth: 0, customInspect: false }));\n  } }]) && c$1$12(t5.prototype, n5), e7;\n})();\nvar w$1$1 = T$1;\nfunction _$1$1(e7, t5) {\n  m$1$1(e7, t5), v$1$1(e7);\n}\nfunction v$1$1(e7) {\n  e7._writableState && !e7._writableState.emitClose || e7._readableState && !e7._readableState.emitClose || e7.emit(\"close\");\n}\nfunction m$1$1(e7, t5) {\n  e7.emit(\"error\", t5);\n}\nvar S$1$1 = { destroy: function(e7, t5) {\n  var n5 = this, r5 = this._readableState && this._readableState.destroyed, i5 = this._writableState && this._writableState.destroyed;\n  return r5 || i5 ? (t5 ? t5(e7) : e7 && (this._writableState ? this._writableState.errorEmitted || (this._writableState.errorEmitted = true, w$1$1.nextTick(m$1$1, this, e7)) : w$1$1.nextTick(m$1$1, this, e7)), this) : (this._readableState && (this._readableState.destroyed = true), this._writableState && (this._writableState.destroyed = true), this._destroy(e7 || null, (function(e8) {\n    !t5 && e8 ? n5._writableState ? n5._writableState.errorEmitted ? w$1$1.nextTick(v$1$1, n5) : (n5._writableState.errorEmitted = true, w$1$1.nextTick(_$1$1, n5, e8)) : w$1$1.nextTick(_$1$1, n5, e8) : t5 ? (w$1$1.nextTick(v$1$1, n5), t5(e8)) : w$1$1.nextTick(v$1$1, n5);\n  })), this);\n}, undestroy: function() {\n  this._readableState && (this._readableState.destroyed = false, this._readableState.reading = false, this._readableState.ended = false, this._readableState.endEmitted = false), this._writableState && (this._writableState.destroyed = false, this._writableState.ended = false, this._writableState.ending = false, this._writableState.finalCalled = false, this._writableState.prefinished = false, this._writableState.finished = false, this._writableState.errorEmitted = false);\n}, errorOrDestroy: function(e7, t5) {\n  var n5 = e7._readableState, r5 = e7._writableState;\n  n5 && n5.autoDestroy || r5 && r5.autoDestroy ? e7.destroy(t5) : e7.emit(\"error\", t5);\n} };\nvar R$1$1 = e$1$12.codes.ERR_INVALID_OPT_VALUE;\nvar k$1$1;\nvar E$1$1 = { getHighWaterMark: function(e7, t5, n5, r5) {\n  var i5 = (function(e8, t6, n6) {\n    return null != e8.highWaterMark ? e8.highWaterMark : t6 ? e8[n6] : null;\n  })(t5, r5, n5);\n  if (null != i5) {\n    if (!isFinite(i5) || Math.floor(i5) !== i5 || i5 < 0) throw new R$1$1(r5 ? n5 : \"highWaterMark\", i5);\n    return Math.floor(i5);\n  }\n  return e7.objectMode ? 16 : 16384;\n} };\nvar M$1$1 = T$1;\nfunction j$1$1(e7, t5, n5) {\n  return t5 in e7 ? Object.defineProperty(e7, t5, { value: n5, enumerable: true, configurable: true, writable: true }) : e7[t5] = n5, e7;\n}\nvar O$1$1 = n$1$12;\nvar T$1$1 = /* @__PURE__ */ Symbol(\"lastResolve\");\nvar x$1$1 = /* @__PURE__ */ Symbol(\"lastReject\");\nvar P$1$1 = /* @__PURE__ */ Symbol(\"error\");\nvar D$1$1 = /* @__PURE__ */ Symbol(\"ended\");\nvar L$1$1 = /* @__PURE__ */ Symbol(\"lastPromise\");\nvar C$1$1 = /* @__PURE__ */ Symbol(\"handlePromise\");\nvar A$1$1 = /* @__PURE__ */ Symbol(\"stream\");\nfunction W$1$1(e7, t5) {\n  return { value: e7, done: t5 };\n}\nfunction B$1$1(e7) {\n  var t5 = e7[T$1$1];\n  if (null !== t5) {\n    var n5 = e7[A$1$1].read();\n    null !== n5 && (e7[L$1$1] = null, e7[T$1$1] = null, e7[x$1$1] = null, t5(W$1$1(n5, false)));\n  }\n}\nfunction q$1$1(e7) {\n  M$1$1.nextTick(B$1$1, e7);\n}\nvar I$1$1 = Object.getPrototypeOf((function() {\n}));\nvar N$1$1 = Object.setPrototypeOf((j$1$1(k$1$1 = { get stream() {\n  return this[A$1$1];\n}, next: function() {\n  var e7 = this, t5 = this[P$1$1];\n  if (null !== t5) return Promise.reject(t5);\n  if (this[D$1$1]) return Promise.resolve(W$1$1(void 0, true));\n  if (this[A$1$1].destroyed) return new Promise((function(t6, n6) {\n    M$1$1.nextTick((function() {\n      e7[P$1$1] ? n6(e7[P$1$1]) : t6(W$1$1(void 0, true));\n    }));\n  }));\n  var n5, r5 = this[L$1$1];\n  if (r5) n5 = new Promise(/* @__PURE__ */ (function(e8, t6) {\n    return function(n6, r6) {\n      e8.then((function() {\n        if (t6[D$1$1]) return n6(W$1$1(void 0, true)), void 0;\n        t6[C$1$1](n6, r6);\n      }), r6);\n    };\n  })(r5, this));\n  else {\n    var i5 = this[A$1$1].read();\n    if (null !== i5) return Promise.resolve(W$1$1(i5, false));\n    n5 = new Promise(this[C$1$1]);\n  }\n  return this[L$1$1] = n5, n5;\n} }, Symbol.asyncIterator, (function() {\n  return this;\n})), j$1$1(k$1$1, \"return\", (function() {\n  var e7 = this;\n  return new Promise((function(t5, n5) {\n    e7[A$1$1].destroy(null, (function(e8) {\n      if (e8) return n5(e8), void 0;\n      t5(W$1$1(void 0, true));\n    }));\n  }));\n})), k$1$1), I$1$1);\nvar U$1$1 = function(e7) {\n  var t5, n5 = Object.create(N$1$1, (j$1$1(t5 = {}, A$1$1, { value: e7, writable: true }), j$1$1(t5, T$1$1, { value: null, writable: true }), j$1$1(t5, x$1$1, { value: null, writable: true }), j$1$1(t5, P$1$1, { value: null, writable: true }), j$1$1(t5, D$1$1, { value: e7._readableState.endEmitted, writable: true }), j$1$1(t5, C$1$1, { value: function(e8, t6) {\n    var r5 = n5[A$1$1].read();\n    r5 ? (n5[L$1$1] = null, n5[T$1$1] = null, n5[x$1$1] = null, e8(W$1$1(r5, false))) : (n5[T$1$1] = e8, n5[x$1$1] = t6);\n  }, writable: true }), t5));\n  return n5[L$1$1] = null, O$1$1(e7, (function(e8) {\n    if (e8 && \"ERR_STREAM_PREMATURE_CLOSE\" !== e8.code) {\n      var t6 = n5[x$1$1];\n      return null !== t6 && (n5[L$1$1] = null, n5[T$1$1] = null, n5[x$1$1] = null, t6(e8)), n5[P$1$1] = e8, void 0;\n    }\n    var r5 = n5[T$1$1];\n    null !== r5 && (n5[L$1$1] = null, n5[T$1$1] = null, n5[x$1$1] = null, r5(W$1$1(void 0, true))), n5[D$1$1] = true;\n  })), e7.on(\"readable\", q$1$1.bind(null, n5)), n5;\n};\nvar H$1$1 = {};\nvar F$1$1 = false;\nvar V$1$1 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction G$1$1() {\n  if (F$1$1) return H$1$1;\n  F$1$1 = true;\n  var l5, u5 = T$1;\n  H$1$1 = C4, C4.ReadableState = L4;\n  y.EventEmitter;\n  var f6 = function(e7, t5) {\n    return e7.listeners(t5).length;\n  }, h5 = e$g, c5 = e$1$1.Buffer, b4 = V$1$1.Uint8Array || function() {\n  };\n  var p5, g4 = X;\n  p5 = g4 && g4.debuglog ? g4.debuglog(\"stream\") : function() {\n  };\n  var w4, _4, v5, m4 = y$1$1, R4 = S$1$1, k4 = E$1$1.getHighWaterMark, M4 = e$1$12.codes, j4 = M4.ERR_INVALID_ARG_TYPE, O4 = M4.ERR_STREAM_PUSH_AFTER_EOF, T4 = M4.ERR_METHOD_NOT_IMPLEMENTED, x4 = M4.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n  t$2(C4, h5);\n  var P4 = R4.errorOrDestroy, D4 = [\"error\", \"close\", \"destroy\", \"pause\", \"resume\"];\n  function L4(e7, t5, n5) {\n    l5 = l5 || Z$1$1(), e7 = e7 || {}, \"boolean\" != typeof n5 && (n5 = t5 instanceof l5), this.objectMode = !!e7.objectMode, n5 && (this.objectMode = this.objectMode || !!e7.readableObjectMode), this.highWaterMark = k4(this, e7, \"readableHighWaterMark\", n5), this.buffer = new m4(), this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = false, this.endEmitted = false, this.reading = false, this.sync = true, this.needReadable = false, this.emittedReadable = false, this.readableListening = false, this.resumeScheduled = false, this.paused = true, this.emitClose = false !== e7.emitClose, this.autoDestroy = !!e7.autoDestroy, this.destroyed = false, this.defaultEncoding = e7.defaultEncoding || \"utf8\", this.awaitDrain = 0, this.readingMore = false, this.decoder = null, this.encoding = null, e7.encoding && (w4 || (w4 = e$12.StringDecoder), this.decoder = new w4(e7.encoding), this.encoding = e7.encoding);\n  }\n  function C4(e7) {\n    if (l5 = l5 || Z$1$1(), !(this instanceof C4)) return new C4(e7);\n    var t5 = this instanceof l5;\n    this._readableState = new L4(e7, this, t5), this.readable = true, e7 && (\"function\" == typeof e7.read && (this._read = e7.read), \"function\" == typeof e7.destroy && (this._destroy = e7.destroy)), h5.call(this);\n  }\n  function A4(e7, t5, n5, r5, i5) {\n    p5(\"readableAddChunk\", t5);\n    var a5, o5 = e7._readableState;\n    if (null === t5) o5.reading = false, (function(e8, t6) {\n      if (p5(\"onEofChunk\"), t6.ended) return;\n      if (t6.decoder) {\n        var n6 = t6.decoder.end();\n        n6 && n6.length && (t6.buffer.push(n6), t6.length += t6.objectMode ? 1 : n6.length);\n      }\n      t6.ended = true, t6.sync ? q3(e8) : (t6.needReadable = false, t6.emittedReadable || (t6.emittedReadable = true, I4(e8)));\n    })(e7, o5);\n    else if (i5 || (a5 = (function(e8, t6) {\n      var n6;\n      r6 = t6, c5.isBuffer(r6) || r6 instanceof b4 || \"string\" == typeof t6 || void 0 === t6 || e8.objectMode || (n6 = new j4(\"chunk\", [\"string\", \"Buffer\", \"Uint8Array\"], t6));\n      var r6;\n      return n6;\n    })(o5, t5)), a5) P4(e7, a5);\n    else if (o5.objectMode || t5 && t5.length > 0) if (\"string\" == typeof t5 || o5.objectMode || Object.getPrototypeOf(t5) === c5.prototype || (t5 = (function(e8) {\n      return c5.from(e8);\n    })(t5)), r5) o5.endEmitted ? P4(e7, new x4()) : W3(e7, o5, t5, true);\n    else if (o5.ended) P4(e7, new O4());\n    else {\n      if (o5.destroyed) return false;\n      o5.reading = false, o5.decoder && !n5 ? (t5 = o5.decoder.write(t5), o5.objectMode || 0 !== t5.length ? W3(e7, o5, t5, false) : N4(e7, o5)) : W3(e7, o5, t5, false);\n    }\n    else r5 || (o5.reading = false, N4(e7, o5));\n    return !o5.ended && (o5.length < o5.highWaterMark || 0 === o5.length);\n  }\n  function W3(e7, t5, n5, r5) {\n    t5.flowing && 0 === t5.length && !t5.sync ? (t5.awaitDrain = 0, e7.emit(\"data\", n5)) : (t5.length += t5.objectMode ? 1 : n5.length, r5 ? t5.buffer.unshift(n5) : t5.buffer.push(n5), t5.needReadable && q3(e7)), N4(e7, t5);\n  }\n  Object.defineProperty(C4.prototype, \"destroyed\", { enumerable: false, get: function() {\n    return void 0 !== this._readableState && this._readableState.destroyed;\n  }, set: function(e7) {\n    this._readableState && (this._readableState.destroyed = e7);\n  } }), C4.prototype.destroy = R4.destroy, C4.prototype._undestroy = R4.undestroy, C4.prototype._destroy = function(e7, t5) {\n    t5(e7);\n  }, C4.prototype.push = function(e7, t5) {\n    var n5, r5 = this._readableState;\n    return r5.objectMode ? n5 = true : \"string\" == typeof e7 && ((t5 = t5 || r5.defaultEncoding) !== r5.encoding && (e7 = c5.from(e7, t5), t5 = \"\"), n5 = true), A4(this, e7, t5, false, n5);\n  }, C4.prototype.unshift = function(e7) {\n    return A4(this, e7, null, true, false);\n  }, C4.prototype.isPaused = function() {\n    return false === this._readableState.flowing;\n  }, C4.prototype.setEncoding = function(e7) {\n    w4 || (w4 = e$12.StringDecoder);\n    var t5 = new w4(e7);\n    this._readableState.decoder = t5, this._readableState.encoding = this._readableState.decoder.encoding;\n    for (var n5 = this._readableState.buffer.head, r5 = \"\"; null !== n5; ) r5 += t5.write(n5.data), n5 = n5.next;\n    return this._readableState.buffer.clear(), \"\" !== r5 && this._readableState.buffer.push(r5), this._readableState.length = r5.length, this;\n  };\n  function B4(e7, t5) {\n    return e7 <= 0 || 0 === t5.length && t5.ended ? 0 : t5.objectMode ? 1 : e7 != e7 ? t5.flowing && t5.length ? t5.buffer.head.data.length : t5.length : (e7 > t5.highWaterMark && (t5.highWaterMark = (function(e8) {\n      return e8 >= 1073741824 ? e8 = 1073741824 : (e8--, e8 |= e8 >>> 1, e8 |= e8 >>> 2, e8 |= e8 >>> 4, e8 |= e8 >>> 8, e8 |= e8 >>> 16, e8++), e8;\n    })(e7)), e7 <= t5.length ? e7 : t5.ended ? t5.length : (t5.needReadable = true, 0));\n  }\n  function q3(e7) {\n    var t5 = e7._readableState;\n    p5(\"emitReadable\", t5.needReadable, t5.emittedReadable), t5.needReadable = false, t5.emittedReadable || (p5(\"emitReadable\", t5.flowing), t5.emittedReadable = true, u5.nextTick(I4, e7));\n  }\n  function I4(e7) {\n    var t5 = e7._readableState;\n    p5(\"emitReadable_\", t5.destroyed, t5.length, t5.ended), t5.destroyed || !t5.length && !t5.ended || (e7.emit(\"readable\"), t5.emittedReadable = false), t5.needReadable = !t5.flowing && !t5.ended && t5.length <= t5.highWaterMark, J3(e7);\n  }\n  function N4(e7, t5) {\n    t5.readingMore || (t5.readingMore = true, u5.nextTick(G3, e7, t5));\n  }\n  function G3(e7, t5) {\n    for (; !t5.reading && !t5.ended && (t5.length < t5.highWaterMark || t5.flowing && 0 === t5.length); ) {\n      var n5 = t5.length;\n      if (p5(\"maybeReadMore read 0\"), e7.read(0), n5 === t5.length) break;\n    }\n    t5.readingMore = false;\n  }\n  function Y4(e7) {\n    var t5 = e7._readableState;\n    t5.readableListening = e7.listenerCount(\"readable\") > 0, t5.resumeScheduled && !t5.paused ? t5.flowing = true : e7.listenerCount(\"data\") > 0 && e7.resume();\n  }\n  function K3(e7) {\n    p5(\"readable nexttick read 0\"), e7.read(0);\n  }\n  function z4(e7, t5) {\n    p5(\"resume\", t5.reading), t5.reading || e7.read(0), t5.resumeScheduled = false, e7.emit(\"resume\"), J3(e7), t5.flowing && !t5.reading && e7.read(0);\n  }\n  function J3(e7) {\n    var t5 = e7._readableState;\n    for (p5(\"flow\", t5.flowing); t5.flowing && null !== e7.read(); ) ;\n  }\n  function Q3(e7, t5) {\n    return 0 === t5.length ? null : (t5.objectMode ? n5 = t5.buffer.shift() : !e7 || e7 >= t5.length ? (n5 = t5.decoder ? t5.buffer.join(\"\") : 1 === t5.buffer.length ? t5.buffer.first() : t5.buffer.concat(t5.length), t5.buffer.clear()) : n5 = t5.buffer.consume(e7, t5.decoder), n5);\n    var n5;\n  }\n  function X3(e7) {\n    var t5 = e7._readableState;\n    p5(\"endReadable\", t5.endEmitted), t5.endEmitted || (t5.ended = true, u5.nextTick($3, t5, e7));\n  }\n  function $3(e7, t5) {\n    if (p5(\"endReadableNT\", e7.endEmitted, e7.length), !e7.endEmitted && 0 === e7.length && (e7.endEmitted = true, t5.readable = false, t5.emit(\"end\"), e7.autoDestroy)) {\n      var n5 = t5._writableState;\n      (!n5 || n5.autoDestroy && n5.finished) && t5.destroy();\n    }\n  }\n  function ee3(e7, t5) {\n    for (var n5 = 0, r5 = e7.length; n5 < r5; n5++) if (e7[n5] === t5) return n5;\n    return -1;\n  }\n  return C4.prototype.read = function(e7) {\n    p5(\"read\", e7), e7 = parseInt(e7, 10);\n    var t5 = this._readableState, n5 = e7;\n    if (0 !== e7 && (t5.emittedReadable = false), 0 === e7 && t5.needReadable && ((0 !== t5.highWaterMark ? t5.length >= t5.highWaterMark : t5.length > 0) || t5.ended)) return p5(\"read: emitReadable\", t5.length, t5.ended), 0 === t5.length && t5.ended ? X3(this) : q3(this), null;\n    if (0 === (e7 = B4(e7, t5)) && t5.ended) return 0 === t5.length && X3(this), null;\n    var r5, i5 = t5.needReadable;\n    return p5(\"need readable\", i5), (0 === t5.length || t5.length - e7 < t5.highWaterMark) && p5(\"length less than watermark\", i5 = true), t5.ended || t5.reading ? p5(\"reading or ended\", i5 = false) : i5 && (p5(\"do read\"), t5.reading = true, t5.sync = true, 0 === t5.length && (t5.needReadable = true), this._read(t5.highWaterMark), t5.sync = false, t5.reading || (e7 = B4(n5, t5))), null === (r5 = e7 > 0 ? Q3(e7, t5) : null) ? (t5.needReadable = t5.length <= t5.highWaterMark, e7 = 0) : (t5.length -= e7, t5.awaitDrain = 0), 0 === t5.length && (t5.ended || (t5.needReadable = true), n5 !== e7 && t5.ended && X3(this)), null !== r5 && this.emit(\"data\", r5), r5;\n  }, C4.prototype._read = function(e7) {\n    P4(this, new T4(\"_read()\"));\n  }, C4.prototype.pipe = function(e7, t5) {\n    var n5 = this, r5 = this._readableState;\n    switch (r5.pipesCount) {\n      case 0:\n        r5.pipes = e7;\n        break;\n      case 1:\n        r5.pipes = [r5.pipes, e7];\n        break;\n      default:\n        r5.pipes.push(e7);\n    }\n    r5.pipesCount += 1, p5(\"pipe count=%d opts=%j\", r5.pipesCount, t5);\n    var i5 = (!t5 || false !== t5.end) && e7 !== u5.stdout && e7 !== u5.stderr ? o5 : g5;\n    function a5(t6, i6) {\n      p5(\"onunpipe\"), t6 === n5 && i6 && false === i6.hasUnpiped && (i6.hasUnpiped = true, p5(\"cleanup\"), e7.removeListener(\"close\", c6), e7.removeListener(\"finish\", b5), e7.removeListener(\"drain\", s5), e7.removeListener(\"error\", h6), e7.removeListener(\"unpipe\", a5), n5.removeListener(\"end\", o5), n5.removeListener(\"end\", g5), n5.removeListener(\"data\", d4), l6 = true, !r5.awaitDrain || e7._writableState && !e7._writableState.needDrain || s5());\n    }\n    function o5() {\n      p5(\"onend\"), e7.end();\n    }\n    r5.endEmitted ? u5.nextTick(i5) : n5.once(\"end\", i5), e7.on(\"unpipe\", a5);\n    var s5 = /* @__PURE__ */ (function(e8) {\n      return function() {\n        var t6 = e8._readableState;\n        p5(\"pipeOnDrain\", t6.awaitDrain), t6.awaitDrain && t6.awaitDrain--, 0 === t6.awaitDrain && f6(e8, \"data\") && (t6.flowing = true, J3(e8));\n      };\n    })(n5);\n    e7.on(\"drain\", s5);\n    var l6 = false;\n    function d4(t6) {\n      p5(\"ondata\");\n      var i6 = e7.write(t6);\n      p5(\"dest.write\", i6), false === i6 && ((1 === r5.pipesCount && r5.pipes === e7 || r5.pipesCount > 1 && -1 !== ee3(r5.pipes, e7)) && !l6 && (p5(\"false write response, pause\", r5.awaitDrain), r5.awaitDrain++), n5.pause());\n    }\n    function h6(t6) {\n      p5(\"onerror\", t6), g5(), e7.removeListener(\"error\", h6), 0 === f6(e7, \"error\") && P4(e7, t6);\n    }\n    function c6() {\n      e7.removeListener(\"finish\", b5), g5();\n    }\n    function b5() {\n      p5(\"onfinish\"), e7.removeListener(\"close\", c6), g5();\n    }\n    function g5() {\n      p5(\"unpipe\"), n5.unpipe(e7);\n    }\n    return n5.on(\"data\", d4), (function(e8, t6, n6) {\n      if (\"function\" == typeof e8.prependListener) return e8.prependListener(t6, n6);\n      e8._events && e8._events[t6] ? Array.isArray(e8._events[t6]) ? e8._events[t6].unshift(n6) : e8._events[t6] = [n6, e8._events[t6]] : e8.on(t6, n6);\n    })(e7, \"error\", h6), e7.once(\"close\", c6), e7.once(\"finish\", b5), e7.emit(\"pipe\", n5), r5.flowing || (p5(\"pipe resume\"), n5.resume()), e7;\n  }, C4.prototype.unpipe = function(e7) {\n    var t5 = this._readableState, n5 = { hasUnpiped: false };\n    if (0 === t5.pipesCount) return this;\n    if (1 === t5.pipesCount) return e7 && e7 !== t5.pipes || (e7 || (e7 = t5.pipes), t5.pipes = null, t5.pipesCount = 0, t5.flowing = false, e7 && e7.emit(\"unpipe\", this, n5)), this;\n    if (!e7) {\n      var r5 = t5.pipes, i5 = t5.pipesCount;\n      t5.pipes = null, t5.pipesCount = 0, t5.flowing = false;\n      for (var a5 = 0; a5 < i5; a5++) r5[a5].emit(\"unpipe\", this, { hasUnpiped: false });\n      return this;\n    }\n    var o5 = ee3(t5.pipes, e7);\n    return -1 === o5 || (t5.pipes.splice(o5, 1), t5.pipesCount -= 1, 1 === t5.pipesCount && (t5.pipes = t5.pipes[0]), e7.emit(\"unpipe\", this, n5)), this;\n  }, C4.prototype.on = function(e7, t5) {\n    var n5 = h5.prototype.on.call(this, e7, t5), r5 = this._readableState;\n    return \"data\" === e7 ? (r5.readableListening = this.listenerCount(\"readable\") > 0, false !== r5.flowing && this.resume()) : \"readable\" === e7 && (r5.endEmitted || r5.readableListening || (r5.readableListening = r5.needReadable = true, r5.flowing = false, r5.emittedReadable = false, p5(\"on readable\", r5.length, r5.reading), r5.length ? q3(this) : r5.reading || u5.nextTick(K3, this))), n5;\n  }, C4.prototype.addListener = C4.prototype.on, C4.prototype.removeListener = function(e7, t5) {\n    var n5 = h5.prototype.removeListener.call(this, e7, t5);\n    return \"readable\" === e7 && u5.nextTick(Y4, this), n5;\n  }, C4.prototype.removeAllListeners = function(e7) {\n    var t5 = h5.prototype.removeAllListeners.apply(this, arguments);\n    return \"readable\" !== e7 && void 0 !== e7 || u5.nextTick(Y4, this), t5;\n  }, C4.prototype.resume = function() {\n    var e7 = this._readableState;\n    return e7.flowing || (p5(\"resume\"), e7.flowing = !e7.readableListening, (function(e8, t5) {\n      t5.resumeScheduled || (t5.resumeScheduled = true, u5.nextTick(z4, e8, t5));\n    })(this, e7)), e7.paused = false, this;\n  }, C4.prototype.pause = function() {\n    return p5(\"call pause flowing=%j\", this._readableState.flowing), false !== this._readableState.flowing && (p5(\"pause\"), this._readableState.flowing = false, this.emit(\"pause\")), this._readableState.paused = true, this;\n  }, C4.prototype.wrap = function(e7) {\n    var t5 = this, n5 = this._readableState, r5 = false;\n    for (var i5 in e7.on(\"end\", (function() {\n      if (p5(\"wrapped end\"), n5.decoder && !n5.ended) {\n        var e8 = n5.decoder.end();\n        e8 && e8.length && t5.push(e8);\n      }\n      t5.push(null);\n    })), e7.on(\"data\", (function(i6) {\n      (p5(\"wrapped data\"), n5.decoder && (i6 = n5.decoder.write(i6)), n5.objectMode && null == i6) || (n5.objectMode || i6 && i6.length) && (t5.push(i6) || (r5 = true, e7.pause()));\n    })), e7) void 0 === this[i5] && \"function\" == typeof e7[i5] && (this[i5] = /* @__PURE__ */ (function(t6) {\n      return function() {\n        return e7[t6].apply(e7, arguments);\n      };\n    })(i5));\n    for (var a5 = 0; a5 < D4.length; a5++) e7.on(D4[a5], this.emit.bind(this, D4[a5]));\n    return this._read = function(t6) {\n      p5(\"wrapped _read\", t6), r5 && (r5 = false, e7.resume());\n    }, this;\n  }, \"function\" == typeof Symbol && (C4.prototype[Symbol.asyncIterator] = function() {\n    return void 0 === _4 && (_4 = U$1$1), _4(this);\n  }), Object.defineProperty(C4.prototype, \"readableHighWaterMark\", { enumerable: false, get: function() {\n    return this._readableState.highWaterMark;\n  } }), Object.defineProperty(C4.prototype, \"readableBuffer\", { enumerable: false, get: function() {\n    return this._readableState && this._readableState.buffer;\n  } }), Object.defineProperty(C4.prototype, \"readableFlowing\", { enumerable: false, get: function() {\n    return this._readableState.flowing;\n  }, set: function(e7) {\n    this._readableState && (this._readableState.flowing = e7);\n  } }), C4._fromList = Q3, Object.defineProperty(C4.prototype, \"readableLength\", { enumerable: false, get: function() {\n    return this._readableState.length;\n  } }), \"function\" == typeof Symbol && (C4.from = function(e7, t5) {\n    return void 0 === v5 && (v5 = r$1$1), v5(C4, e7, t5);\n  }), H$1$1;\n}\nvar Y$1$1 = {};\nvar K$1$1 = false;\nvar z$1$1 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction J$1$1() {\n  if (K$1$1) return Y$1$1;\n  K$1$1 = true;\n  var e$23, r5 = T$1;\n  function s5(e7) {\n    var t5 = this;\n    this.next = null, this.entry = null, this.finish = function() {\n      !(function(e8, t6, n5) {\n        var r6 = e8.entry;\n        e8.entry = null;\n        for (; r6; ) {\n          var i5 = r6.callback;\n          t6.pendingcb--, i5(n5), r6 = r6.next;\n        }\n        t6.corkedRequestsFree.next = e8;\n      })(t5, e7);\n    };\n  }\n  Y$1$1 = x4, x4.WritableState = T4;\n  var l5 = { deprecate: t$1$1 }, d4 = e$g, f6 = e$1$1.Buffer, h5 = z$1$1.Uint8Array || function() {\n  };\n  var c5, b4 = S$1$1, p5 = E$1$1.getHighWaterMark, g4 = e$1$12.codes, y5 = g4.ERR_INVALID_ARG_TYPE, w4 = g4.ERR_METHOD_NOT_IMPLEMENTED, _4 = g4.ERR_MULTIPLE_CALLBACK, v5 = g4.ERR_STREAM_CANNOT_PIPE, m4 = g4.ERR_STREAM_DESTROYED, R4 = g4.ERR_STREAM_NULL_VALUES, k4 = g4.ERR_STREAM_WRITE_AFTER_END, M4 = g4.ERR_UNKNOWN_ENCODING, j4 = b4.errorOrDestroy;\n  function O4() {\n  }\n  function T4(t5, n5, i5) {\n    e$23 = e$23 || Z$1$1(), t5 = t5 || {}, \"boolean\" != typeof i5 && (i5 = n5 instanceof e$23), this.objectMode = !!t5.objectMode, i5 && (this.objectMode = this.objectMode || !!t5.writableObjectMode), this.highWaterMark = p5(this, t5, \"writableHighWaterMark\", i5), this.finalCalled = false, this.needDrain = false, this.ending = false, this.ended = false, this.finished = false, this.destroyed = false;\n    var a5 = false === t5.decodeStrings;\n    this.decodeStrings = !a5, this.defaultEncoding = t5.defaultEncoding || \"utf8\", this.length = 0, this.writing = false, this.corked = 0, this.sync = true, this.bufferProcessing = false, this.onwrite = function(e7) {\n      !(function(e8, t6) {\n        var n6 = e8._writableState, i6 = n6.sync, a6 = n6.writecb;\n        if (\"function\" != typeof a6) throw new _4();\n        if ((function(e9) {\n          e9.writing = false, e9.writecb = null, e9.length -= e9.writelen, e9.writelen = 0;\n        })(n6), t6) !(function(e9, t7, n7, i7, a7) {\n          --t7.pendingcb, n7 ? (r5.nextTick(a7, i7), r5.nextTick(W3, e9, t7), e9._writableState.errorEmitted = true, j4(e9, i7)) : (a7(i7), e9._writableState.errorEmitted = true, j4(e9, i7), W3(e9, t7));\n        })(e8, n6, i6, t6, a6);\n        else {\n          var o5 = C4(n6) || e8.destroyed;\n          o5 || n6.corked || n6.bufferProcessing || !n6.bufferedRequest || L4(e8, n6), i6 ? r5.nextTick(D4, e8, n6, o5, a6) : D4(e8, n6, o5, a6);\n        }\n      })(n5, e7);\n    }, this.writecb = null, this.writelen = 0, this.bufferedRequest = null, this.lastBufferedRequest = null, this.pendingcb = 0, this.prefinished = false, this.errorEmitted = false, this.emitClose = false !== t5.emitClose, this.autoDestroy = !!t5.autoDestroy, this.bufferedRequestCount = 0, this.corkedRequestsFree = new s5(this);\n  }\n  function x4(t5) {\n    var n5 = this instanceof (e$23 = e$23 || Z$1$1());\n    if (!n5 && !c5.call(x4, this)) return new x4(t5);\n    this._writableState = new T4(t5, this, n5), this.writable = true, t5 && (\"function\" == typeof t5.write && (this._write = t5.write), \"function\" == typeof t5.writev && (this._writev = t5.writev), \"function\" == typeof t5.destroy && (this._destroy = t5.destroy), \"function\" == typeof t5.final && (this._final = t5.final)), d4.call(this);\n  }\n  function P4(e7, t5, n5, r6, i5, a5, o5) {\n    t5.writelen = r6, t5.writecb = o5, t5.writing = true, t5.sync = true, t5.destroyed ? t5.onwrite(new m4(\"write\")) : n5 ? e7._writev(i5, t5.onwrite) : e7._write(i5, a5, t5.onwrite), t5.sync = false;\n  }\n  function D4(e7, t5, n5, r6) {\n    n5 || !(function(e8, t6) {\n      0 === t6.length && t6.needDrain && (t6.needDrain = false, e8.emit(\"drain\"));\n    })(e7, t5), t5.pendingcb--, r6(), W3(e7, t5);\n  }\n  function L4(e7, t5) {\n    t5.bufferProcessing = true;\n    var n5 = t5.bufferedRequest;\n    if (e7._writev && n5 && n5.next) {\n      var r6 = t5.bufferedRequestCount, i5 = new Array(r6), a5 = t5.corkedRequestsFree;\n      a5.entry = n5;\n      for (var o5 = 0, l6 = true; n5; ) i5[o5] = n5, n5.isBuf || (l6 = false), n5 = n5.next, o5 += 1;\n      i5.allBuffers = l6, P4(e7, t5, true, t5.length, i5, \"\", a5.finish), t5.pendingcb++, t5.lastBufferedRequest = null, a5.next ? (t5.corkedRequestsFree = a5.next, a5.next = null) : t5.corkedRequestsFree = new s5(t5), t5.bufferedRequestCount = 0;\n    } else {\n      for (; n5; ) {\n        var d5 = n5.chunk, u5 = n5.encoding, f7 = n5.callback;\n        if (P4(e7, t5, false, t5.objectMode ? 1 : d5.length, d5, u5, f7), n5 = n5.next, t5.bufferedRequestCount--, t5.writing) break;\n      }\n      null === n5 && (t5.lastBufferedRequest = null);\n    }\n    t5.bufferedRequest = n5, t5.bufferProcessing = false;\n  }\n  function C4(e7) {\n    return e7.ending && 0 === e7.length && null === e7.bufferedRequest && !e7.finished && !e7.writing;\n  }\n  function A4(e7, t5) {\n    e7._final((function(n5) {\n      t5.pendingcb--, n5 && j4(e7, n5), t5.prefinished = true, e7.emit(\"prefinish\"), W3(e7, t5);\n    }));\n  }\n  function W3(e7, t5) {\n    var n5 = C4(t5);\n    if (n5 && (!(function(e8, t6) {\n      t6.prefinished || t6.finalCalled || (\"function\" != typeof e8._final || t6.destroyed ? (t6.prefinished = true, e8.emit(\"prefinish\")) : (t6.pendingcb++, t6.finalCalled = true, r5.nextTick(A4, e8, t6)));\n    })(e7, t5), 0 === t5.pendingcb && (t5.finished = true, e7.emit(\"finish\"), t5.autoDestroy))) {\n      var i5 = e7._readableState;\n      (!i5 || i5.autoDestroy && i5.endEmitted) && e7.destroy();\n    }\n    return n5;\n  }\n  return t$2(x4, d4), T4.prototype.getBuffer = function() {\n    for (var e7 = this.bufferedRequest, t5 = []; e7; ) t5.push(e7), e7 = e7.next;\n    return t5;\n  }, (function() {\n    try {\n      Object.defineProperty(T4.prototype, \"buffer\", { get: l5.deprecate((function() {\n        return this.getBuffer();\n      }), \"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\", \"DEP0003\") });\n    } catch (e7) {\n    }\n  })(), \"function\" == typeof Symbol && Symbol.hasInstance && \"function\" == typeof Function.prototype[Symbol.hasInstance] ? (c5 = Function.prototype[Symbol.hasInstance], Object.defineProperty(x4, Symbol.hasInstance, { value: function(e7) {\n    return !!c5.call(this, e7) || this === x4 && (e7 && e7._writableState instanceof T4);\n  } })) : c5 = function(e7) {\n    return e7 instanceof this;\n  }, x4.prototype.pipe = function() {\n    j4(this, new v5());\n  }, x4.prototype.write = function(e7, t5, n5) {\n    var i5, a5 = this._writableState, o5 = false, s6 = !a5.objectMode && (i5 = e7, f6.isBuffer(i5) || i5 instanceof h5);\n    return s6 && !f6.isBuffer(e7) && (e7 = (function(e8) {\n      return f6.from(e8);\n    })(e7)), \"function\" == typeof t5 && (n5 = t5, t5 = null), s6 ? t5 = \"buffer\" : t5 || (t5 = a5.defaultEncoding), \"function\" != typeof n5 && (n5 = O4), a5.ending ? (function(e8, t6) {\n      var n6 = new k4();\n      j4(e8, n6), r5.nextTick(t6, n6);\n    })(this, n5) : (s6 || (function(e8, t6, n6, i6) {\n      var a6;\n      return null === n6 ? a6 = new R4() : \"string\" == typeof n6 || t6.objectMode || (a6 = new y5(\"chunk\", [\"string\", \"Buffer\"], n6)), !a6 || (j4(e8, a6), r5.nextTick(i6, a6), false);\n    })(this, a5, e7, n5)) && (a5.pendingcb++, o5 = (function(e8, t6, n6, r6, i6, a6) {\n      if (!n6) {\n        var o6 = (function(e9, t7, n7) {\n          e9.objectMode || false === e9.decodeStrings || \"string\" != typeof t7 || (t7 = f6.from(t7, n7));\n          return t7;\n        })(t6, r6, i6);\n        r6 !== o6 && (n6 = true, i6 = \"buffer\", r6 = o6);\n      }\n      var s7 = t6.objectMode ? 1 : r6.length;\n      t6.length += s7;\n      var l6 = t6.length < t6.highWaterMark;\n      l6 || (t6.needDrain = true);\n      if (t6.writing || t6.corked) {\n        var d5 = t6.lastBufferedRequest;\n        t6.lastBufferedRequest = { chunk: r6, encoding: i6, isBuf: n6, callback: a6, next: null }, d5 ? d5.next = t6.lastBufferedRequest : t6.bufferedRequest = t6.lastBufferedRequest, t6.bufferedRequestCount += 1;\n      } else P4(e8, t6, false, s7, r6, i6, a6);\n      return l6;\n    })(this, a5, s6, e7, t5, n5)), o5;\n  }, x4.prototype.cork = function() {\n    this._writableState.corked++;\n  }, x4.prototype.uncork = function() {\n    var e7 = this._writableState;\n    e7.corked && (e7.corked--, e7.writing || e7.corked || e7.bufferProcessing || !e7.bufferedRequest || L4(this, e7));\n  }, x4.prototype.setDefaultEncoding = function(e7) {\n    if (\"string\" == typeof e7 && (e7 = e7.toLowerCase()), !([\"hex\", \"utf8\", \"utf-8\", \"ascii\", \"binary\", \"base64\", \"ucs2\", \"ucs-2\", \"utf16le\", \"utf-16le\", \"raw\"].indexOf((e7 + \"\").toLowerCase()) > -1)) throw new M4(e7);\n    return this._writableState.defaultEncoding = e7, this;\n  }, Object.defineProperty(x4.prototype, \"writableBuffer\", { enumerable: false, get: function() {\n    return this._writableState && this._writableState.getBuffer();\n  } }), Object.defineProperty(x4.prototype, \"writableHighWaterMark\", { enumerable: false, get: function() {\n    return this._writableState.highWaterMark;\n  } }), x4.prototype._write = function(e7, t5, n5) {\n    n5(new w4(\"_write()\"));\n  }, x4.prototype._writev = null, x4.prototype.end = function(e7, t5, n5) {\n    var i5 = this._writableState;\n    return \"function\" == typeof e7 ? (n5 = e7, e7 = null, t5 = null) : \"function\" == typeof t5 && (n5 = t5, t5 = null), null != e7 && this.write(e7, t5), i5.corked && (i5.corked = 1, this.uncork()), i5.ending || (function(e8, t6, n6) {\n      t6.ending = true, W3(e8, t6), n6 && (t6.finished ? r5.nextTick(n6) : e8.once(\"finish\", n6));\n      t6.ended = true, e8.writable = false;\n    })(this, i5, n5), this;\n  }, Object.defineProperty(x4.prototype, \"writableLength\", { enumerable: false, get: function() {\n    return this._writableState.length;\n  } }), Object.defineProperty(x4.prototype, \"destroyed\", { enumerable: false, get: function() {\n    return void 0 !== this._writableState && this._writableState.destroyed;\n  }, set: function(e7) {\n    this._writableState && (this._writableState.destroyed = e7);\n  } }), x4.prototype.destroy = b4.destroy, x4.prototype._undestroy = b4.undestroy, x4.prototype._destroy = function(e7, t5) {\n    t5(e7);\n  }, Y$1$1;\n}\nvar Q$1$1 = {};\nvar X$1$1 = false;\nfunction Z$1$1() {\n  if (X$1$1) return Q$1$1;\n  X$1$1 = true;\n  var e7 = T$1, t5 = Object.keys || function(e8) {\n    var t6 = [];\n    for (var n6 in e8) t6.push(n6);\n    return t6;\n  };\n  Q$1$1 = d4;\n  var n5 = G$1$1(), r5 = J$1$1();\n  t$2(d4, n5);\n  for (var a5 = t5(r5.prototype), s5 = 0; s5 < a5.length; s5++) {\n    var l5 = a5[s5];\n    d4.prototype[l5] || (d4.prototype[l5] = r5.prototype[l5]);\n  }\n  function d4(e8) {\n    if (!(this instanceof d4)) return new d4(e8);\n    n5.call(this, e8), r5.call(this, e8), this.allowHalfOpen = true, e8 && (false === e8.readable && (this.readable = false), false === e8.writable && (this.writable = false), false === e8.allowHalfOpen && (this.allowHalfOpen = false, this.once(\"end\", u5)));\n  }\n  function u5() {\n    this._writableState.ended || e7.nextTick(f6, this);\n  }\n  function f6(e8) {\n    e8.end();\n  }\n  return Object.defineProperty(d4.prototype, \"writableHighWaterMark\", { enumerable: false, get: function() {\n    return this._writableState.highWaterMark;\n  } }), Object.defineProperty(d4.prototype, \"writableBuffer\", { enumerable: false, get: function() {\n    return this._writableState && this._writableState.getBuffer();\n  } }), Object.defineProperty(d4.prototype, \"writableLength\", { enumerable: false, get: function() {\n    return this._writableState.length;\n  } }), Object.defineProperty(d4.prototype, \"destroyed\", { enumerable: false, get: function() {\n    return void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed && this._writableState.destroyed);\n  }, set: function(e8) {\n    void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed = e8, this._writableState.destroyed = e8);\n  } }), Q$1$1;\n}\nvar t$4$1 = J$1$1();\nvar t$5$1 = ee$1();\nvar n$2$1;\nn$2$1 = u$1$12;\nvar i$e = e$1$12.codes;\nvar a$p = i$e.ERR_METHOD_NOT_IMPLEMENTED;\nvar o$s = i$e.ERR_MULTIPLE_CALLBACK;\nvar s$q = i$e.ERR_TRANSFORM_ALREADY_TRANSFORMING;\nvar f$2$1 = i$e.ERR_TRANSFORM_WITH_LENGTH_0;\nvar h$2$1 = t$5$1;\nfunction l$s(t5, r5) {\n  var e7 = this._transformState;\n  e7.transforming = false;\n  var n5 = e7.writecb;\n  if (null === n5) return this.emit(\"error\", new o$s());\n  e7.writechunk = null, e7.writecb = null, null != r5 && this.push(r5), n5(t5);\n  var i5 = this._readableState;\n  i5.reading = false, (i5.needReadable || i5.length < i5.highWaterMark) && this._read(i5.highWaterMark);\n}\nfunction u$1$12(t5) {\n  if (!(this instanceof u$1$12)) return new u$1$12(t5);\n  h$2$1.call(this, t5), this._transformState = { afterTransform: l$s.bind(this), needTransform: false, transforming: false, writecb: null, writechunk: null, writeencoding: null }, this._readableState.needReadable = true, this._readableState.sync = false, t5 && (\"function\" == typeof t5.transform && (this._transform = t5.transform), \"function\" == typeof t5.flush && (this._flush = t5.flush)), this.on(\"prefinish\", m$2$1);\n}\nfunction m$2$1() {\n  var t5 = this;\n  \"function\" != typeof this._flush || this._readableState.destroyed ? _$2$1(this, null, null) : this._flush((function(r5, e7) {\n    _$2$1(t5, r5, e7);\n  }));\n}\nfunction _$2$1(t5, r5, e7) {\n  if (r5) return t5.emit(\"error\", r5);\n  if (null != e7 && t5.push(e7), t5._writableState.length) throw new f$2$1();\n  if (t5._transformState.transforming) throw new s$q();\n  return t5.push(null);\n}\nt$2(u$1$12, h$2$1), u$1$12.prototype.push = function(t5, r5) {\n  return this._transformState.needTransform = false, h$2$1.prototype.push.call(this, t5, r5);\n}, u$1$12.prototype._transform = function(t5, r5, e7) {\n  e7(new a$p(\"_transform()\"));\n}, u$1$12.prototype._write = function(t5, r5, e7) {\n  var n5 = this._transformState;\n  if (n5.writecb = e7, n5.writechunk = t5, n5.writeencoding = r5, !n5.transforming) {\n    var i5 = this._readableState;\n    (n5.needTransform || i5.needReadable || i5.length < i5.highWaterMark) && this._read(i5.highWaterMark);\n  }\n}, u$1$12.prototype._read = function(t5) {\n  var r5 = this._transformState;\n  null === r5.writechunk || r5.transforming ? r5.needTransform = true : (r5.transforming = true, this._transform(r5.writechunk, r5.writeencoding, r5.afterTransform));\n}, u$1$12.prototype._destroy = function(t5, r5) {\n  h$2$1.prototype._destroy.call(this, t5, (function(t6) {\n    r5(t6);\n  }));\n};\nvar p$2$1 = n$2$1;\nvar o$1$12;\no$1$12 = i$1$1;\nvar e$3$1 = p$2$1;\nfunction i$1$1(r5) {\n  if (!(this instanceof i$1$1)) return new i$1$1(r5);\n  e$3$1.call(this, r5);\n}\nt$2(i$1$1, e$3$1), i$1$1.prototype._transform = function(r5, t5, o5) {\n  o5(null, r5);\n};\nvar s$1$1 = o$1$12;\nvar t$6$1;\nvar o$2$1 = e$1$12.codes;\nvar e$4$1 = o$2$1.ERR_MISSING_ARGS;\nvar f$3$1 = o$2$1.ERR_STREAM_DESTROYED;\nfunction i$2$1(r5) {\n  if (r5) throw r5;\n}\nfunction u$2$1(r5, o5, e7, i5) {\n  i5 = /* @__PURE__ */ (function(r6) {\n    var n5 = false;\n    return function() {\n      n5 || (n5 = true, r6.apply(void 0, arguments));\n    };\n  })(i5);\n  var u5 = false;\n  r5.on(\"close\", (function() {\n    u5 = true;\n  })), void 0 === t$6$1 && (t$6$1 = n$1$12), t$6$1(r5, { readable: o5, writable: e7 }, (function(r6) {\n    if (r6) return i5(r6);\n    u5 = true, i5();\n  }));\n  var a5 = false;\n  return function(n5) {\n    if (!u5 && !a5) return a5 = true, (function(r6) {\n      return r6.setHeader && \"function\" == typeof r6.abort;\n    })(r5) ? r5.abort() : \"function\" == typeof r5.destroy ? r5.destroy() : (i5(n5 || new f$3$1(\"pipe\")), void 0);\n  };\n}\nfunction a$1$12(r5) {\n  r5();\n}\nfunction c$2$1(r5, n5) {\n  return r5.pipe(n5);\n}\nfunction p$3$1(r5) {\n  return r5.length ? \"function\" != typeof r5[r5.length - 1] ? i$2$1 : r5.pop() : i$2$1;\n}\nvar v$2$1 = function() {\n  for (var r5 = arguments.length, n5 = new Array(r5), t5 = 0; t5 < r5; t5++) n5[t5] = arguments[t5];\n  var o5, f6 = p$3$1(n5);\n  if (Array.isArray(n5[0]) && (n5 = n5[0]), n5.length < 2) throw new e$4$1(\"streams\");\n  var i5 = n5.map((function(r6, t6) {\n    var e7 = t6 < n5.length - 1;\n    return u$2$1(r6, e7, t6 > 0, (function(r7) {\n      o5 || (o5 = r7), r7 && i5.forEach(a$1$12), e7 || (i5.forEach(a$1$12), f6(o5));\n    }));\n  }));\n  return n5.reduce(c$2$1);\n};\nvar l$r;\nvar d$n = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nl$r = p$r;\nvar f$u = y.EventEmitter;\nfunction p$r() {\n  f$u.call(this || d$n);\n}\nt$2(p$r, f$u), p$r.Readable = t$2$1, p$r.Writable = t$4$1, p$r.Duplex = t$5$1, p$r.Transform = p$2$1, p$r.PassThrough = s$1$1, p$r.finished = n$1$12, p$r.pipeline = v$2$1, p$r.Stream = p$r, p$r.prototype.pipe = function(e7, r5) {\n  var t5 = this || d$n;\n  function o5(r6) {\n    e7.writable && false === e7.write(r6) && t5.pause && t5.pause();\n  }\n  function i5() {\n    t5.readable && t5.resume && t5.resume();\n  }\n  t5.on(\"data\", o5), e7.on(\"drain\", i5), e7._isStdio || r5 && false === r5.end || (t5.on(\"end\", a5), t5.on(\"close\", s5));\n  var n5 = false;\n  function a5() {\n    n5 || (n5 = true, e7.end());\n  }\n  function s5() {\n    n5 || (n5 = true, \"function\" == typeof e7.destroy && e7.destroy());\n  }\n  function m4(e8) {\n    if (l5(), 0 === f$u.listenerCount(this || d$n, \"error\")) throw e8;\n  }\n  function l5() {\n    t5.removeListener(\"data\", o5), e7.removeListener(\"drain\", i5), t5.removeListener(\"end\", a5), t5.removeListener(\"close\", s5), t5.removeListener(\"error\", m4), e7.removeListener(\"error\", m4), t5.removeListener(\"end\", l5), t5.removeListener(\"close\", l5), e7.removeListener(\"close\", l5);\n  }\n  return t5.on(\"error\", m4), e7.on(\"error\", m4), t5.on(\"end\", l5), t5.on(\"close\", l5), e7.on(\"close\", l5), e7.emit(\"pipe\", t5), e7;\n};\nvar b$i = l$r;\nb$i.Readable;\nb$i.Writable;\nb$i.Duplex;\nb$i.Transform;\nb$i.PassThrough;\nb$i.finished;\nb$i.pipeline;\nb$i.Stream;\nvar exports$1H = {};\nvar _dewExec$1G = false;\nvar _global$o = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1G() {\n  if (_dewExec$1G) return exports$1H;\n  _dewExec$1G = true;\n  var Buffer = dew$1T().Buffer;\n  var Transform = b$i.Transform;\n  var StringDecoder2 = e$12.StringDecoder;\n  var inherits = dew$f$2();\n  function CipherBase(hashMode) {\n    Transform.call(this || _global$o);\n    (this || _global$o).hashMode = typeof hashMode === \"string\";\n    if ((this || _global$o).hashMode) {\n      (this || _global$o)[hashMode] = (this || _global$o)._finalOrDigest;\n    } else {\n      (this || _global$o).final = (this || _global$o)._finalOrDigest;\n    }\n    if ((this || _global$o)._final) {\n      (this || _global$o).__final = (this || _global$o)._final;\n      (this || _global$o)._final = null;\n    }\n    (this || _global$o)._decoder = null;\n    (this || _global$o)._encoding = null;\n  }\n  inherits(CipherBase, Transform);\n  CipherBase.prototype.update = function(data, inputEnc, outputEnc) {\n    if (typeof data === \"string\") {\n      data = Buffer.from(data, inputEnc);\n    }\n    var outData = this._update(data);\n    if ((this || _global$o).hashMode) return this || _global$o;\n    if (outputEnc) {\n      outData = this._toString(outData, outputEnc);\n    }\n    return outData;\n  };\n  CipherBase.prototype.setAutoPadding = function() {\n  };\n  CipherBase.prototype.getAuthTag = function() {\n    throw new Error(\"trying to get auth tag in unsupported state\");\n  };\n  CipherBase.prototype.setAuthTag = function() {\n    throw new Error(\"trying to set auth tag in unsupported state\");\n  };\n  CipherBase.prototype.setAAD = function() {\n    throw new Error(\"trying to set aad in unsupported state\");\n  };\n  CipherBase.prototype._transform = function(data, _4, next) {\n    var err;\n    try {\n      if ((this || _global$o).hashMode) {\n        this._update(data);\n      } else {\n        this.push(this._update(data));\n      }\n    } catch (e7) {\n      err = e7;\n    } finally {\n      next(err);\n    }\n  };\n  CipherBase.prototype._flush = function(done) {\n    var err;\n    try {\n      this.push(this.__final());\n    } catch (e7) {\n      err = e7;\n    }\n    done(err);\n  };\n  CipherBase.prototype._finalOrDigest = function(outputEnc) {\n    var outData = this.__final() || Buffer.alloc(0);\n    if (outputEnc) {\n      outData = this._toString(outData, outputEnc, true);\n    }\n    return outData;\n  };\n  CipherBase.prototype._toString = function(value, enc, fin) {\n    if (!(this || _global$o)._decoder) {\n      (this || _global$o)._decoder = new StringDecoder2(enc);\n      (this || _global$o)._encoding = enc;\n    }\n    if ((this || _global$o)._encoding !== enc) throw new Error(\"can't switch encodings\");\n    var out = (this || _global$o)._decoder.write(value);\n    if (fin) {\n      out += (this || _global$o)._decoder.end();\n    }\n    return out;\n  };\n  exports$1H = CipherBase;\n  return exports$1H;\n}\nvar exports$1G = {};\nvar _dewExec$1F = false;\nfunction dew$1F() {\n  if (_dewExec$1F) return exports$1G;\n  _dewExec$1F = true;\n  var inherits = dew$f$2();\n  var MD5 = dew$1Q();\n  var RIPEMD160 = dew$1P();\n  var sha = dew$1H();\n  var Base = dew$1G();\n  function Hash2(hash) {\n    Base.call(this, \"digest\");\n    this._hash = hash;\n  }\n  inherits(Hash2, Base);\n  Hash2.prototype._update = function(data) {\n    this._hash.update(data);\n  };\n  Hash2.prototype._final = function() {\n    return this._hash.digest();\n  };\n  exports$1G = function createHash2(alg) {\n    alg = alg.toLowerCase();\n    if (alg === \"md5\") return new MD5();\n    if (alg === \"rmd160\" || alg === \"ripemd160\") return new RIPEMD160();\n    return new Hash2(sha(alg));\n  };\n  return exports$1G;\n}\nvar exports$1F = {};\nvar _dewExec$1E = false;\nfunction dew$1E() {\n  if (_dewExec$1E) return exports$1F;\n  _dewExec$1E = true;\n  var inherits = dew$f$2();\n  var Buffer = dew$1T().Buffer;\n  var Base = dew$1G();\n  var ZEROS = Buffer.alloc(128);\n  var blocksize = 64;\n  function Hmac2(alg, key) {\n    Base.call(this, \"digest\");\n    if (typeof key === \"string\") {\n      key = Buffer.from(key);\n    }\n    this._alg = alg;\n    this._key = key;\n    if (key.length > blocksize) {\n      key = alg(key);\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n    var opad = this._opad = Buffer.allocUnsafe(blocksize);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    this._hash = [ipad];\n  }\n  inherits(Hmac2, Base);\n  Hmac2.prototype._update = function(data) {\n    this._hash.push(data);\n  };\n  Hmac2.prototype._final = function() {\n    var h5 = this._alg(Buffer.concat(this._hash));\n    return this._alg(Buffer.concat([this._opad, h5]));\n  };\n  exports$1F = Hmac2;\n  return exports$1F;\n}\nvar exports$1E = {};\nvar _dewExec$1D = false;\nfunction dew$1D() {\n  if (_dewExec$1D) return exports$1E;\n  _dewExec$1D = true;\n  var MD5 = dew$1Q();\n  exports$1E = function(buffer2) {\n    return new MD5().update(buffer2).digest();\n  };\n  return exports$1E;\n}\nvar exports$1D = {};\nvar _dewExec$1C = false;\nfunction dew$1C() {\n  if (_dewExec$1C) return exports$1D;\n  _dewExec$1C = true;\n  var inherits = dew$f$2();\n  var Legacy = dew$1E();\n  var Base = dew$1G();\n  var Buffer = dew$1T().Buffer;\n  var md5 = dew$1D();\n  var RIPEMD160 = dew$1P();\n  var sha = dew$1H();\n  var ZEROS = Buffer.alloc(128);\n  function Hmac2(alg, key) {\n    Base.call(this, \"digest\");\n    if (typeof key === \"string\") {\n      key = Buffer.from(key);\n    }\n    var blocksize = alg === \"sha512\" || alg === \"sha384\" ? 128 : 64;\n    this._alg = alg;\n    this._key = key;\n    if (key.length > blocksize) {\n      var hash = alg === \"rmd160\" ? new RIPEMD160() : sha(alg);\n      key = hash.update(key).digest();\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n    var opad = this._opad = Buffer.allocUnsafe(blocksize);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    this._hash = alg === \"rmd160\" ? new RIPEMD160() : sha(alg);\n    this._hash.update(ipad);\n  }\n  inherits(Hmac2, Base);\n  Hmac2.prototype._update = function(data) {\n    this._hash.update(data);\n  };\n  Hmac2.prototype._final = function() {\n    var h5 = this._hash.digest();\n    var hash = this._alg === \"rmd160\" ? new RIPEMD160() : sha(this._alg);\n    return hash.update(this._opad).update(h5).digest();\n  };\n  exports$1D = function createHmac2(alg, key) {\n    alg = alg.toLowerCase();\n    if (alg === \"rmd160\" || alg === \"ripemd160\") {\n      return new Hmac2(\"rmd160\", key);\n    }\n    if (alg === \"md5\") {\n      return new Legacy(md5, key);\n    }\n    return new Hmac2(alg, key);\n  };\n  return exports$1D;\n}\nvar _algorithms = {\n  \"sha224WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"RSA-SHA224\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"302d300d06096086480165030402040500041c\"\n  },\n  \"sha256WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"RSA-SHA256\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"3031300d060960864801650304020105000420\"\n  },\n  \"sha384WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"RSA-SHA384\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"3041300d060960864801650304020205000430\"\n  },\n  \"sha512WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA512\": {\n    \"sign\": \"ecdsa/rsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"3051300d060960864801650304020305000440\"\n  },\n  \"RSA-SHA1\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"3021300906052b0e03021a05000414\"\n  },\n  \"ecdsa-with-SHA1\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"sha256\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"sha224\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"sha384\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"sha512\": {\n    \"sign\": \"ecdsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA1\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha1\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA224\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha224\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA256\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha256\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA384\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha384\",\n    \"id\": \"\"\n  },\n  \"DSA-WITH-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-SHA512\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"sha512\",\n    \"id\": \"\"\n  },\n  \"DSA-RIPEMD160\": {\n    \"sign\": \"dsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"\"\n  },\n  \"ripemd160WithRSA\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"RSA-RIPEMD160\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"rmd160\",\n    \"id\": \"3021300906052b2403020105000414\"\n  },\n  \"md5WithRSAEncryption\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  },\n  \"RSA-MD5\": {\n    \"sign\": \"rsa\",\n    \"hash\": \"md5\",\n    \"id\": \"3020300c06082a864886f70d020505000410\"\n  }\n};\nvar exports$1C = {};\nvar _dewExec$1B = false;\nfunction dew$1B() {\n  if (_dewExec$1B) return exports$1C;\n  _dewExec$1B = true;\n  exports$1C = _algorithms;\n  return exports$1C;\n}\nvar exports$1B = {};\nvar _dewExec$1A = false;\nfunction dew$1A() {\n  if (_dewExec$1A) return exports$1B;\n  _dewExec$1A = true;\n  var MAX_ALLOC = Math.pow(2, 30) - 1;\n  exports$1B = function(iterations, keylen) {\n    if (typeof iterations !== \"number\") {\n      throw new TypeError(\"Iterations not a number\");\n    }\n    if (iterations < 0) {\n      throw new TypeError(\"Bad iterations\");\n    }\n    if (typeof keylen !== \"number\") {\n      throw new TypeError(\"Key length not a number\");\n    }\n    if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) {\n      throw new TypeError(\"Bad key length\");\n    }\n  };\n  return exports$1B;\n}\nvar exports$1A = {};\nvar _dewExec$1z = false;\nvar _global$n = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1z() {\n  if (_dewExec$1z) return exports$1A;\n  _dewExec$1z = true;\n  var process3 = T$1;\n  var defaultEncoding;\n  if (_global$n.process && _global$n.process.browser) {\n    defaultEncoding = \"utf-8\";\n  } else if (_global$n.process && _global$n.process.version) {\n    var pVersionMajor = parseInt(process3.version.split(\".\")[0].slice(1), 10);\n    defaultEncoding = pVersionMajor >= 6 ? \"utf-8\" : \"binary\";\n  } else {\n    defaultEncoding = \"utf-8\";\n  }\n  exports$1A = defaultEncoding;\n  return exports$1A;\n}\nvar exports$1z = {};\nvar _dewExec$1y = false;\nfunction dew$1y() {\n  if (_dewExec$1y) return exports$1z;\n  _dewExec$1y = true;\n  var Buffer = dew$1T().Buffer;\n  exports$1z = function(thing, encoding, name2) {\n    if (Buffer.isBuffer(thing)) {\n      return thing;\n    } else if (typeof thing === \"string\") {\n      return Buffer.from(thing, encoding);\n    } else if (ArrayBuffer.isView(thing)) {\n      return Buffer.from(thing.buffer);\n    } else {\n      throw new TypeError(name2 + \" must be a string, a Buffer, a typed array or a DataView\");\n    }\n  };\n  return exports$1z;\n}\nvar exports$1y = {};\nvar _dewExec$1x = false;\nvar _global$m = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1x() {\n  if (_dewExec$1x) return exports$1y;\n  _dewExec$1x = true;\n  var md5 = dew$1D();\n  var RIPEMD160 = dew$1P();\n  var sha = dew$1H();\n  var Buffer = dew$1T().Buffer;\n  var checkParameters = dew$1A();\n  var defaultEncoding = dew$1z();\n  var toBuffer = dew$1y();\n  var ZEROS = Buffer.alloc(128);\n  var sizes = {\n    md5: 16,\n    sha1: 20,\n    sha224: 28,\n    sha256: 32,\n    sha384: 48,\n    sha512: 64,\n    rmd160: 20,\n    ripemd160: 20\n  };\n  function Hmac2(alg, key, saltLen) {\n    var hash = getDigest(alg);\n    var blocksize = alg === \"sha512\" || alg === \"sha384\" ? 128 : 64;\n    if (key.length > blocksize) {\n      key = hash(key);\n    } else if (key.length < blocksize) {\n      key = Buffer.concat([key, ZEROS], blocksize);\n    }\n    var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n    var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n    for (var i5 = 0; i5 < blocksize; i5++) {\n      ipad[i5] = key[i5] ^ 54;\n      opad[i5] = key[i5] ^ 92;\n    }\n    var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);\n    ipad.copy(ipad1, 0, 0, blocksize);\n    (this || _global$m).ipad1 = ipad1;\n    (this || _global$m).ipad2 = ipad;\n    (this || _global$m).opad = opad;\n    (this || _global$m).alg = alg;\n    (this || _global$m).blocksize = blocksize;\n    (this || _global$m).hash = hash;\n    (this || _global$m).size = sizes[alg];\n  }\n  Hmac2.prototype.run = function(data, ipad) {\n    data.copy(ipad, (this || _global$m).blocksize);\n    var h5 = this.hash(ipad);\n    h5.copy((this || _global$m).opad, (this || _global$m).blocksize);\n    return this.hash((this || _global$m).opad);\n  };\n  function getDigest(alg) {\n    function shaFunc(data) {\n      return sha(alg).update(data).digest();\n    }\n    function rmd160Func(data) {\n      return new RIPEMD160().update(data).digest();\n    }\n    if (alg === \"rmd160\" || alg === \"ripemd160\") return rmd160Func;\n    if (alg === \"md5\") return md5;\n    return shaFunc;\n  }\n  function pbkdf22(password, salt, iterations, keylen, digest) {\n    checkParameters(iterations, keylen);\n    password = toBuffer(password, defaultEncoding, \"Password\");\n    salt = toBuffer(salt, defaultEncoding, \"Salt\");\n    digest = digest || \"sha1\";\n    var hmac = new Hmac2(digest, password, salt.length);\n    var DK = Buffer.allocUnsafe(keylen);\n    var block1 = Buffer.allocUnsafe(salt.length + 4);\n    salt.copy(block1, 0, 0, salt.length);\n    var destPos = 0;\n    var hLen = sizes[digest];\n    var l5 = Math.ceil(keylen / hLen);\n    for (var i5 = 1; i5 <= l5; i5++) {\n      block1.writeUInt32BE(i5, salt.length);\n      var T4 = hmac.run(block1, hmac.ipad1);\n      var U4 = T4;\n      for (var j4 = 1; j4 < iterations; j4++) {\n        U4 = hmac.run(U4, hmac.ipad2);\n        for (var k4 = 0; k4 < hLen; k4++) T4[k4] ^= U4[k4];\n      }\n      T4.copy(DK, destPos);\n      destPos += hLen;\n    }\n    return DK;\n  }\n  exports$1y = pbkdf22;\n  return exports$1y;\n}\nvar exports$1x = {};\nvar _dewExec$1w = false;\nvar _global$l = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1w() {\n  if (_dewExec$1w) return exports$1x;\n  _dewExec$1w = true;\n  var Buffer = dew$1T().Buffer;\n  var checkParameters = dew$1A();\n  var defaultEncoding = dew$1z();\n  var sync = dew$1x();\n  var toBuffer = dew$1y();\n  var ZERO_BUF;\n  var subtle = _global$l.crypto && _global$l.crypto.subtle;\n  var toBrowser = {\n    sha: \"SHA-1\",\n    \"sha-1\": \"SHA-1\",\n    sha1: \"SHA-1\",\n    sha256: \"SHA-256\",\n    \"sha-256\": \"SHA-256\",\n    sha384: \"SHA-384\",\n    \"sha-384\": \"SHA-384\",\n    \"sha-512\": \"SHA-512\",\n    sha512: \"SHA-512\"\n  };\n  var checks = [];\n  function checkNative(algo) {\n    if (_global$l.process && !_global$l.process.browser) {\n      return Promise.resolve(false);\n    }\n    if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n      return Promise.resolve(false);\n    }\n    if (checks[algo] !== void 0) {\n      return checks[algo];\n    }\n    ZERO_BUF = ZERO_BUF || Buffer.alloc(8);\n    var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function() {\n      return true;\n    }).catch(function() {\n      return false;\n    });\n    checks[algo] = prom;\n    return prom;\n  }\n  var nextTick2;\n  function getNextTick() {\n    if (nextTick2) {\n      return nextTick2;\n    }\n    if (_global$l.process && _global$l.process.nextTick) {\n      nextTick2 = _global$l.process.nextTick;\n    } else if (_global$l.queueMicrotask) {\n      nextTick2 = _global$l.queueMicrotask;\n    } else if (_global$l.setImmediate) {\n      nextTick2 = _global$l.setImmediate;\n    } else {\n      nextTick2 = _global$l.setTimeout;\n    }\n    return nextTick2;\n  }\n  function browserPbkdf2(password, salt, iterations, length, algo) {\n    return subtle.importKey(\"raw\", password, {\n      name: \"PBKDF2\"\n    }, false, [\"deriveBits\"]).then(function(key) {\n      return subtle.deriveBits({\n        name: \"PBKDF2\",\n        salt,\n        iterations,\n        hash: {\n          name: algo\n        }\n      }, key, length << 3);\n    }).then(function(res) {\n      return Buffer.from(res);\n    });\n  }\n  function resolvePromise(promise, callback) {\n    promise.then(function(out) {\n      getNextTick()(function() {\n        callback(null, out);\n      });\n    }, function(e7) {\n      getNextTick()(function() {\n        callback(e7);\n      });\n    });\n  }\n  exports$1x = function(password, salt, iterations, keylen, digest, callback) {\n    if (typeof digest === \"function\") {\n      callback = digest;\n      digest = void 0;\n    }\n    digest = digest || \"sha1\";\n    var algo = toBrowser[digest.toLowerCase()];\n    if (!algo || typeof _global$l.Promise !== \"function\") {\n      getNextTick()(function() {\n        var out;\n        try {\n          out = sync(password, salt, iterations, keylen, digest);\n        } catch (e7) {\n          return callback(e7);\n        }\n        callback(null, out);\n      });\n      return;\n    }\n    checkParameters(iterations, keylen);\n    password = toBuffer(password, defaultEncoding, \"Password\");\n    salt = toBuffer(salt, defaultEncoding, \"Salt\");\n    if (typeof callback !== \"function\") throw new Error(\"No callback provided to pbkdf2\");\n    resolvePromise(checkNative(algo).then(function(resp) {\n      if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo);\n      return sync(password, salt, iterations, keylen, digest);\n    }), callback);\n  };\n  return exports$1x;\n}\nvar exports$1w = {};\nvar _dewExec$1v = false;\nfunction dew$1v() {\n  if (_dewExec$1v) return exports$1w;\n  _dewExec$1v = true;\n  exports$1w.pbkdf2 = dew$1w();\n  exports$1w.pbkdf2Sync = dew$1x();\n  return exports$1w;\n}\nvar exports$1v = {};\nvar _dewExec$1u = false;\nfunction dew$1u() {\n  if (_dewExec$1u) return exports$1v;\n  _dewExec$1u = true;\n  exports$1v.readUInt32BE = function readUInt32BE(bytes, off2) {\n    var res = bytes[0 + off2] << 24 | bytes[1 + off2] << 16 | bytes[2 + off2] << 8 | bytes[3 + off2];\n    return res >>> 0;\n  };\n  exports$1v.writeUInt32BE = function writeUInt32BE(bytes, value, off2) {\n    bytes[0 + off2] = value >>> 24;\n    bytes[1 + off2] = value >>> 16 & 255;\n    bytes[2 + off2] = value >>> 8 & 255;\n    bytes[3 + off2] = value & 255;\n  };\n  exports$1v.ip = function ip(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 6; i5 >= 0; i5 -= 2) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inR >>> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inL >>> j4 + i5 & 1;\n      }\n    }\n    for (var i5 = 6; i5 >= 0; i5 -= 2) {\n      for (var j4 = 1; j4 <= 25; j4 += 8) {\n        outR <<= 1;\n        outR |= inR >>> j4 + i5 & 1;\n      }\n      for (var j4 = 1; j4 <= 25; j4 += 8) {\n        outR <<= 1;\n        outR |= inL >>> j4 + i5 & 1;\n      }\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$1v.rip = function rip(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 0; i5 < 4; i5++) {\n      for (var j4 = 24; j4 >= 0; j4 -= 8) {\n        outL <<= 1;\n        outL |= inR >>> j4 + i5 & 1;\n        outL <<= 1;\n        outL |= inL >>> j4 + i5 & 1;\n      }\n    }\n    for (var i5 = 4; i5 < 8; i5++) {\n      for (var j4 = 24; j4 >= 0; j4 -= 8) {\n        outR <<= 1;\n        outR |= inR >>> j4 + i5 & 1;\n        outR <<= 1;\n        outR |= inL >>> j4 + i5 & 1;\n      }\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$1v.pc1 = function pc1(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    for (var i5 = 7; i5 >= 5; i5--) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inR >> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outL <<= 1;\n        outL |= inL >> j4 + i5 & 1;\n      }\n    }\n    for (var j4 = 0; j4 <= 24; j4 += 8) {\n      outL <<= 1;\n      outL |= inR >> j4 + i5 & 1;\n    }\n    for (var i5 = 1; i5 <= 3; i5++) {\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outR <<= 1;\n        outR |= inR >> j4 + i5 & 1;\n      }\n      for (var j4 = 0; j4 <= 24; j4 += 8) {\n        outR <<= 1;\n        outR |= inL >> j4 + i5 & 1;\n      }\n    }\n    for (var j4 = 0; j4 <= 24; j4 += 8) {\n      outR <<= 1;\n      outR |= inL >> j4 + i5 & 1;\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$1v.r28shl = function r28shl(num, shift) {\n    return num << shift & 268435455 | num >>> 28 - shift;\n  };\n  var pc2table = [\n    // inL => outL\n    14,\n    11,\n    17,\n    4,\n    27,\n    23,\n    25,\n    0,\n    13,\n    22,\n    7,\n    18,\n    5,\n    9,\n    16,\n    24,\n    2,\n    20,\n    12,\n    21,\n    1,\n    8,\n    15,\n    26,\n    // inR => outR\n    15,\n    4,\n    25,\n    19,\n    9,\n    1,\n    26,\n    16,\n    5,\n    11,\n    23,\n    8,\n    12,\n    7,\n    17,\n    0,\n    22,\n    3,\n    10,\n    14,\n    6,\n    20,\n    27,\n    24\n  ];\n  exports$1v.pc2 = function pc2(inL, inR, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    var len = pc2table.length >>> 1;\n    for (var i5 = 0; i5 < len; i5++) {\n      outL <<= 1;\n      outL |= inL >>> pc2table[i5] & 1;\n    }\n    for (var i5 = len; i5 < pc2table.length; i5++) {\n      outR <<= 1;\n      outR |= inR >>> pc2table[i5] & 1;\n    }\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  exports$1v.expand = function expand(r5, out, off2) {\n    var outL = 0;\n    var outR = 0;\n    outL = (r5 & 1) << 5 | r5 >>> 27;\n    for (var i5 = 23; i5 >= 15; i5 -= 4) {\n      outL <<= 6;\n      outL |= r5 >>> i5 & 63;\n    }\n    for (var i5 = 11; i5 >= 3; i5 -= 4) {\n      outR |= r5 >>> i5 & 63;\n      outR <<= 6;\n    }\n    outR |= (r5 & 31) << 1 | r5 >>> 31;\n    out[off2 + 0] = outL >>> 0;\n    out[off2 + 1] = outR >>> 0;\n  };\n  var sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\n  exports$1v.substitute = function substitute(inL, inR) {\n    var out = 0;\n    for (var i5 = 0; i5 < 4; i5++) {\n      var b4 = inL >>> 18 - i5 * 6 & 63;\n      var sb = sTable[i5 * 64 + b4];\n      out <<= 4;\n      out |= sb;\n    }\n    for (var i5 = 0; i5 < 4; i5++) {\n      var b4 = inR >>> 18 - i5 * 6 & 63;\n      var sb = sTable[4 * 64 + i5 * 64 + b4];\n      out <<= 4;\n      out |= sb;\n    }\n    return out >>> 0;\n  };\n  var permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\n  exports$1v.permute = function permute(num) {\n    var out = 0;\n    for (var i5 = 0; i5 < permuteTable.length; i5++) {\n      out <<= 1;\n      out |= num >>> permuteTable[i5] & 1;\n    }\n    return out >>> 0;\n  };\n  exports$1v.padSplit = function padSplit(num, size, group) {\n    var str = num.toString(2);\n    while (str.length < size) str = \"0\" + str;\n    var out = [];\n    for (var i5 = 0; i5 < size; i5 += group) out.push(str.slice(i5, i5 + group));\n    return out.join(\" \");\n  };\n  return exports$1v;\n}\nvar exports$1u = {};\nvar _dewExec$1t = false;\nfunction dew$1t() {\n  if (_dewExec$1t) return exports$1u;\n  _dewExec$1t = true;\n  exports$1u = assert2;\n  function assert2(val, msg) {\n    if (!val) throw new Error(msg || \"Assertion failed\");\n  }\n  assert2.equal = function assertEqual(l5, r5, msg) {\n    if (l5 != r5) throw new Error(msg || \"Assertion failed: \" + l5 + \" != \" + r5);\n  };\n  return exports$1u;\n}\nvar exports$1t = {};\nvar _dewExec$1s = false;\nfunction dew$1s() {\n  if (_dewExec$1s) return exports$1t;\n  _dewExec$1s = true;\n  var assert2 = dew$1t();\n  function Cipher2(options) {\n    this.options = options;\n    this.type = this.options.type;\n    this.blockSize = 8;\n    this._init();\n    this.buffer = new Array(this.blockSize);\n    this.bufferOff = 0;\n  }\n  exports$1t = Cipher2;\n  Cipher2.prototype._init = function _init() {\n  };\n  Cipher2.prototype.update = function update(data) {\n    if (data.length === 0) return [];\n    if (this.type === \"decrypt\") return this._updateDecrypt(data);\n    else return this._updateEncrypt(data);\n  };\n  Cipher2.prototype._buffer = function _buffer(data, off2) {\n    var min = Math.min(this.buffer.length - this.bufferOff, data.length - off2);\n    for (var i5 = 0; i5 < min; i5++) this.buffer[this.bufferOff + i5] = data[off2 + i5];\n    this.bufferOff += min;\n    return min;\n  };\n  Cipher2.prototype._flushBuffer = function _flushBuffer(out, off2) {\n    this._update(this.buffer, 0, out, off2);\n    this.bufferOff = 0;\n    return this.blockSize;\n  };\n  Cipher2.prototype._updateEncrypt = function _updateEncrypt(data) {\n    var inputOff = 0;\n    var outputOff = 0;\n    var count = (this.bufferOff + data.length) / this.blockSize | 0;\n    var out = new Array(count * this.blockSize);\n    if (this.bufferOff !== 0) {\n      inputOff += this._buffer(data, inputOff);\n      if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n    }\n    var max = data.length - (data.length - inputOff) % this.blockSize;\n    for (; inputOff < max; inputOff += this.blockSize) {\n      this._update(data, inputOff, out, outputOff);\n      outputOff += this.blockSize;\n    }\n    for (; inputOff < data.length; inputOff++, this.bufferOff++) this.buffer[this.bufferOff] = data[inputOff];\n    return out;\n  };\n  Cipher2.prototype._updateDecrypt = function _updateDecrypt(data) {\n    var inputOff = 0;\n    var outputOff = 0;\n    var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n    var out = new Array(count * this.blockSize);\n    for (; count > 0; count--) {\n      inputOff += this._buffer(data, inputOff);\n      outputOff += this._flushBuffer(out, outputOff);\n    }\n    inputOff += this._buffer(data, inputOff);\n    return out;\n  };\n  Cipher2.prototype.final = function final(buffer2) {\n    var first;\n    if (buffer2) first = this.update(buffer2);\n    var last;\n    if (this.type === \"encrypt\") last = this._finalEncrypt();\n    else last = this._finalDecrypt();\n    if (first) return first.concat(last);\n    else return last;\n  };\n  Cipher2.prototype._pad = function _pad(buffer2, off2) {\n    if (off2 === 0) return false;\n    while (off2 < buffer2.length) buffer2[off2++] = 0;\n    return true;\n  };\n  Cipher2.prototype._finalEncrypt = function _finalEncrypt() {\n    if (!this._pad(this.buffer, this.bufferOff)) return [];\n    var out = new Array(this.blockSize);\n    this._update(this.buffer, 0, out, 0);\n    return out;\n  };\n  Cipher2.prototype._unpad = function _unpad(buffer2) {\n    return buffer2;\n  };\n  Cipher2.prototype._finalDecrypt = function _finalDecrypt() {\n    assert2.equal(this.bufferOff, this.blockSize, \"Not enough data to decrypt\");\n    var out = new Array(this.blockSize);\n    this._flushBuffer(out, 0);\n    return this._unpad(out);\n  };\n  return exports$1t;\n}\nvar exports$1s = {};\nvar _dewExec$1r = false;\nfunction dew$1r() {\n  if (_dewExec$1r) return exports$1s;\n  _dewExec$1r = true;\n  var assert2 = dew$1t();\n  var inherits = dew$f$2();\n  var utils = dew$1u();\n  var Cipher2 = dew$1s();\n  function DESState() {\n    this.tmp = new Array(2);\n    this.keys = null;\n  }\n  function DES(options) {\n    Cipher2.call(this, options);\n    var state = new DESState();\n    this._desState = state;\n    this.deriveKeys(state, options.key);\n  }\n  inherits(DES, Cipher2);\n  exports$1s = DES;\n  DES.create = function create(options) {\n    return new DES(options);\n  };\n  var shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\n  DES.prototype.deriveKeys = function deriveKeys(state, key) {\n    state.keys = new Array(16 * 2);\n    assert2.equal(key.length, this.blockSize, \"Invalid key length\");\n    var kL = utils.readUInt32BE(key, 0);\n    var kR = utils.readUInt32BE(key, 4);\n    utils.pc1(kL, kR, state.tmp, 0);\n    kL = state.tmp[0];\n    kR = state.tmp[1];\n    for (var i5 = 0; i5 < state.keys.length; i5 += 2) {\n      var shift = shiftTable[i5 >>> 1];\n      kL = utils.r28shl(kL, shift);\n      kR = utils.r28shl(kR, shift);\n      utils.pc2(kL, kR, state.keys, i5);\n    }\n  };\n  DES.prototype._update = function _update(inp, inOff, out, outOff) {\n    var state = this._desState;\n    var l5 = utils.readUInt32BE(inp, inOff);\n    var r5 = utils.readUInt32BE(inp, inOff + 4);\n    utils.ip(l5, r5, state.tmp, 0);\n    l5 = state.tmp[0];\n    r5 = state.tmp[1];\n    if (this.type === \"encrypt\") this._encrypt(state, l5, r5, state.tmp, 0);\n    else this._decrypt(state, l5, r5, state.tmp, 0);\n    l5 = state.tmp[0];\n    r5 = state.tmp[1];\n    utils.writeUInt32BE(out, l5, outOff);\n    utils.writeUInt32BE(out, r5, outOff + 4);\n  };\n  DES.prototype._pad = function _pad(buffer2, off2) {\n    var value = buffer2.length - off2;\n    for (var i5 = off2; i5 < buffer2.length; i5++) buffer2[i5] = value;\n    return true;\n  };\n  DES.prototype._unpad = function _unpad(buffer2) {\n    var pad = buffer2[buffer2.length - 1];\n    for (var i5 = buffer2.length - pad; i5 < buffer2.length; i5++) assert2.equal(buffer2[i5], pad);\n    return buffer2.slice(0, buffer2.length - pad);\n  };\n  DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off2) {\n    var l5 = lStart;\n    var r5 = rStart;\n    for (var i5 = 0; i5 < state.keys.length; i5 += 2) {\n      var keyL = state.keys[i5];\n      var keyR = state.keys[i5 + 1];\n      utils.expand(r5, state.tmp, 0);\n      keyL ^= state.tmp[0];\n      keyR ^= state.tmp[1];\n      var s5 = utils.substitute(keyL, keyR);\n      var f6 = utils.permute(s5);\n      var t5 = r5;\n      r5 = (l5 ^ f6) >>> 0;\n      l5 = t5;\n    }\n    utils.rip(r5, l5, out, off2);\n  };\n  DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off2) {\n    var l5 = rStart;\n    var r5 = lStart;\n    for (var i5 = state.keys.length - 2; i5 >= 0; i5 -= 2) {\n      var keyL = state.keys[i5];\n      var keyR = state.keys[i5 + 1];\n      utils.expand(l5, state.tmp, 0);\n      keyL ^= state.tmp[0];\n      keyR ^= state.tmp[1];\n      var s5 = utils.substitute(keyL, keyR);\n      var f6 = utils.permute(s5);\n      var t5 = l5;\n      l5 = (r5 ^ f6) >>> 0;\n      r5 = t5;\n    }\n    utils.rip(l5, r5, out, off2);\n  };\n  return exports$1s;\n}\nvar exports$1r = {};\nvar _dewExec$1q = false;\nfunction dew$1q() {\n  if (_dewExec$1q) return exports$1r;\n  _dewExec$1q = true;\n  var assert2 = dew$1t();\n  var inherits = dew$f$2();\n  var proto = {};\n  function CBCState(iv) {\n    assert2.equal(iv.length, 8, \"Invalid IV length\");\n    this.iv = new Array(8);\n    for (var i5 = 0; i5 < this.iv.length; i5++) this.iv[i5] = iv[i5];\n  }\n  function instantiate(Base) {\n    function CBC(options) {\n      Base.call(this, options);\n      this._cbcInit();\n    }\n    inherits(CBC, Base);\n    var keys = Object.keys(proto);\n    for (var i5 = 0; i5 < keys.length; i5++) {\n      var key = keys[i5];\n      CBC.prototype[key] = proto[key];\n    }\n    CBC.create = function create(options) {\n      return new CBC(options);\n    };\n    return CBC;\n  }\n  exports$1r.instantiate = instantiate;\n  proto._cbcInit = function _cbcInit() {\n    var state = new CBCState(this.options.iv);\n    this._cbcState = state;\n  };\n  proto._update = function _update(inp, inOff, out, outOff) {\n    var state = this._cbcState;\n    var superProto = this.constructor.super_.prototype;\n    var iv = state.iv;\n    if (this.type === \"encrypt\") {\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] ^= inp[inOff + i5];\n      superProto._update.call(this, iv, 0, out, outOff);\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] = out[outOff + i5];\n    } else {\n      superProto._update.call(this, inp, inOff, out, outOff);\n      for (var i5 = 0; i5 < this.blockSize; i5++) out[outOff + i5] ^= iv[i5];\n      for (var i5 = 0; i5 < this.blockSize; i5++) iv[i5] = inp[inOff + i5];\n    }\n  };\n  return exports$1r;\n}\nvar exports$1q = {};\nvar _dewExec$1p = false;\nfunction dew$1p() {\n  if (_dewExec$1p) return exports$1q;\n  _dewExec$1p = true;\n  var assert2 = dew$1t();\n  var inherits = dew$f$2();\n  var Cipher2 = dew$1s();\n  var DES = dew$1r();\n  function EDEState(type, key) {\n    assert2.equal(key.length, 24, \"Invalid key length\");\n    var k1 = key.slice(0, 8);\n    var k22 = key.slice(8, 16);\n    var k32 = key.slice(16, 24);\n    if (type === \"encrypt\") {\n      this.ciphers = [DES.create({\n        type: \"encrypt\",\n        key: k1\n      }), DES.create({\n        type: \"decrypt\",\n        key: k22\n      }), DES.create({\n        type: \"encrypt\",\n        key: k32\n      })];\n    } else {\n      this.ciphers = [DES.create({\n        type: \"decrypt\",\n        key: k32\n      }), DES.create({\n        type: \"encrypt\",\n        key: k22\n      }), DES.create({\n        type: \"decrypt\",\n        key: k1\n      })];\n    }\n  }\n  function EDE(options) {\n    Cipher2.call(this, options);\n    var state = new EDEState(this.type, this.options.key);\n    this._edeState = state;\n  }\n  inherits(EDE, Cipher2);\n  exports$1q = EDE;\n  EDE.create = function create(options) {\n    return new EDE(options);\n  };\n  EDE.prototype._update = function _update(inp, inOff, out, outOff) {\n    var state = this._edeState;\n    state.ciphers[0]._update(inp, inOff, out, outOff);\n    state.ciphers[1]._update(out, outOff, out, outOff);\n    state.ciphers[2]._update(out, outOff, out, outOff);\n  };\n  EDE.prototype._pad = DES.prototype._pad;\n  EDE.prototype._unpad = DES.prototype._unpad;\n  return exports$1q;\n}\nvar exports$1p = {};\nvar _dewExec$1o = false;\nfunction dew$1o() {\n  if (_dewExec$1o) return exports$1p;\n  _dewExec$1o = true;\n  exports$1p.utils = dew$1u();\n  exports$1p.Cipher = dew$1s();\n  exports$1p.DES = dew$1r();\n  exports$1p.CBC = dew$1q();\n  exports$1p.EDE = dew$1p();\n  return exports$1p;\n}\nvar exports$1o = {};\nvar _dewExec$1n = false;\nvar _global$k = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1n() {\n  if (_dewExec$1n) return exports$1o;\n  _dewExec$1n = true;\n  var CipherBase = dew$1G();\n  var des = dew$1o();\n  var inherits = dew$f$2();\n  var Buffer = dew$1T().Buffer;\n  var modes = {\n    \"des-ede3-cbc\": des.CBC.instantiate(des.EDE),\n    \"des-ede3\": des.EDE,\n    \"des-ede-cbc\": des.CBC.instantiate(des.EDE),\n    \"des-ede\": des.EDE,\n    \"des-cbc\": des.CBC.instantiate(des.DES),\n    \"des-ecb\": des.DES\n  };\n  modes.des = modes[\"des-cbc\"];\n  modes.des3 = modes[\"des-ede3-cbc\"];\n  exports$1o = DES;\n  inherits(DES, CipherBase);\n  function DES(opts) {\n    CipherBase.call(this || _global$k);\n    var modeName = opts.mode.toLowerCase();\n    var mode = modes[modeName];\n    var type;\n    if (opts.decrypt) {\n      type = \"decrypt\";\n    } else {\n      type = \"encrypt\";\n    }\n    var key = opts.key;\n    if (!Buffer.isBuffer(key)) {\n      key = Buffer.from(key);\n    }\n    if (modeName === \"des-ede\" || modeName === \"des-ede-cbc\") {\n      key = Buffer.concat([key, key.slice(0, 8)]);\n    }\n    var iv = opts.iv;\n    if (!Buffer.isBuffer(iv)) {\n      iv = Buffer.from(iv);\n    }\n    (this || _global$k)._des = mode.create({\n      key,\n      iv,\n      type\n    });\n  }\n  DES.prototype._update = function(data) {\n    return Buffer.from((this || _global$k)._des.update(data));\n  };\n  DES.prototype._final = function() {\n    return Buffer.from((this || _global$k)._des.final());\n  };\n  return exports$1o;\n}\nvar exports$1n = {};\nvar _dewExec$1m = false;\nfunction dew$1m() {\n  if (_dewExec$1m) return exports$1n;\n  _dewExec$1m = true;\n  exports$1n.encrypt = function(self2, block) {\n    return self2._cipher.encryptBlock(block);\n  };\n  exports$1n.decrypt = function(self2, block) {\n    return self2._cipher.decryptBlock(block);\n  };\n  return exports$1n;\n}\nvar exports$1m = {};\nvar _dewExec$1l = false;\nfunction dew$1l() {\n  if (_dewExec$1l) return exports$1m;\n  _dewExec$1l = true;\n  var Buffer = e$1$1.Buffer;\n  exports$1m = function xor(a5, b4) {\n    var length = Math.min(a5.length, b4.length);\n    var buffer2 = new Buffer(length);\n    for (var i5 = 0; i5 < length; ++i5) {\n      buffer2[i5] = a5[i5] ^ b4[i5];\n    }\n    return buffer2;\n  };\n  return exports$1m;\n}\nvar exports$1l = {};\nvar _dewExec$1k = false;\nfunction dew$1k() {\n  if (_dewExec$1k) return exports$1l;\n  _dewExec$1k = true;\n  var xor = dew$1l();\n  exports$1l.encrypt = function(self2, block) {\n    var data = xor(block, self2._prev);\n    self2._prev = self2._cipher.encryptBlock(data);\n    return self2._prev;\n  };\n  exports$1l.decrypt = function(self2, block) {\n    var pad = self2._prev;\n    self2._prev = block;\n    var out = self2._cipher.decryptBlock(block);\n    return xor(out, pad);\n  };\n  return exports$1l;\n}\nvar exports$1k = {};\nvar _dewExec$1j = false;\nfunction dew$1j() {\n  if (_dewExec$1j) return exports$1k;\n  _dewExec$1j = true;\n  var Buffer = dew$1T().Buffer;\n  var xor = dew$1l();\n  function encryptStart(self2, data, decrypt) {\n    var len = data.length;\n    var out = xor(data, self2._cache);\n    self2._cache = self2._cache.slice(len);\n    self2._prev = Buffer.concat([self2._prev, decrypt ? data : out]);\n    return out;\n  }\n  exports$1k.encrypt = function(self2, data, decrypt) {\n    var out = Buffer.allocUnsafe(0);\n    var len;\n    while (data.length) {\n      if (self2._cache.length === 0) {\n        self2._cache = self2._cipher.encryptBlock(self2._prev);\n        self2._prev = Buffer.allocUnsafe(0);\n      }\n      if (self2._cache.length <= data.length) {\n        len = self2._cache.length;\n        out = Buffer.concat([out, encryptStart(self2, data.slice(0, len), decrypt)]);\n        data = data.slice(len);\n      } else {\n        out = Buffer.concat([out, encryptStart(self2, data, decrypt)]);\n        break;\n      }\n    }\n    return out;\n  };\n  return exports$1k;\n}\nvar exports$1j$1 = {};\nvar _dewExec$1i$1 = false;\nfunction dew$1i$1() {\n  if (_dewExec$1i$1) return exports$1j$1;\n  _dewExec$1i$1 = true;\n  var Buffer = dew$1T().Buffer;\n  function encryptByte(self2, byteParam, decrypt) {\n    var pad = self2._cipher.encryptBlock(self2._prev);\n    var out = pad[0] ^ byteParam;\n    self2._prev = Buffer.concat([self2._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\n    return out;\n  }\n  exports$1j$1.encrypt = function(self2, chunk, decrypt) {\n    var len = chunk.length;\n    var out = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      out[i5] = encryptByte(self2, chunk[i5], decrypt);\n    }\n    return out;\n  };\n  return exports$1j$1;\n}\nvar exports$1i$1 = {};\nvar _dewExec$1h$1 = false;\nfunction dew$1h$1() {\n  if (_dewExec$1h$1) return exports$1i$1;\n  _dewExec$1h$1 = true;\n  var Buffer = dew$1T().Buffer;\n  function encryptByte(self2, byteParam, decrypt) {\n    var pad;\n    var i5 = -1;\n    var len = 8;\n    var out = 0;\n    var bit, value;\n    while (++i5 < len) {\n      pad = self2._cipher.encryptBlock(self2._prev);\n      bit = byteParam & 1 << 7 - i5 ? 128 : 0;\n      value = pad[0] ^ bit;\n      out += (value & 128) >> i5 % 8;\n      self2._prev = shiftIn(self2._prev, decrypt ? bit : value);\n    }\n    return out;\n  }\n  function shiftIn(buffer2, value) {\n    var len = buffer2.length;\n    var i5 = -1;\n    var out = Buffer.allocUnsafe(buffer2.length);\n    buffer2 = Buffer.concat([buffer2, Buffer.from([value])]);\n    while (++i5 < len) {\n      out[i5] = buffer2[i5] << 1 | buffer2[i5 + 1] >> 7;\n    }\n    return out;\n  }\n  exports$1i$1.encrypt = function(self2, chunk, decrypt) {\n    var len = chunk.length;\n    var out = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      out[i5] = encryptByte(self2, chunk[i5], decrypt);\n    }\n    return out;\n  };\n  return exports$1i$1;\n}\nvar exports$1h$1 = {};\nvar _dewExec$1g$1 = false;\nfunction dew$1g$1() {\n  if (_dewExec$1g$1) return exports$1h$1;\n  _dewExec$1g$1 = true;\n  var Buffer = e$1$1.Buffer;\n  var xor = dew$1l();\n  function getBlock(self2) {\n    self2._prev = self2._cipher.encryptBlock(self2._prev);\n    return self2._prev;\n  }\n  exports$1h$1.encrypt = function(self2, chunk) {\n    while (self2._cache.length < chunk.length) {\n      self2._cache = Buffer.concat([self2._cache, getBlock(self2)]);\n    }\n    var pad = self2._cache.slice(0, chunk.length);\n    self2._cache = self2._cache.slice(chunk.length);\n    return xor(chunk, pad);\n  };\n  return exports$1h$1;\n}\nvar exports$1g$1 = {};\nvar _dewExec$1f$1 = false;\nfunction dew$1f$1() {\n  if (_dewExec$1f$1) return exports$1g$1;\n  _dewExec$1f$1 = true;\n  function incr32(iv) {\n    var len = iv.length;\n    var item;\n    while (len--) {\n      item = iv.readUInt8(len);\n      if (item === 255) {\n        iv.writeUInt8(0, len);\n      } else {\n        item++;\n        iv.writeUInt8(item, len);\n        break;\n      }\n    }\n  }\n  exports$1g$1 = incr32;\n  return exports$1g$1;\n}\nvar exports$1f$1 = {};\nvar _dewExec$1e$1 = false;\nfunction dew$1e$1() {\n  if (_dewExec$1e$1) return exports$1f$1;\n  _dewExec$1e$1 = true;\n  var xor = dew$1l();\n  var Buffer = dew$1T().Buffer;\n  var incr32 = dew$1f$1();\n  function getBlock(self2) {\n    var out = self2._cipher.encryptBlockRaw(self2._prev);\n    incr32(self2._prev);\n    return out;\n  }\n  var blockSize = 16;\n  exports$1f$1.encrypt = function(self2, chunk) {\n    var chunkNum = Math.ceil(chunk.length / blockSize);\n    var start = self2._cache.length;\n    self2._cache = Buffer.concat([self2._cache, Buffer.allocUnsafe(chunkNum * blockSize)]);\n    for (var i5 = 0; i5 < chunkNum; i5++) {\n      var out = getBlock(self2);\n      var offset = start + i5 * blockSize;\n      self2._cache.writeUInt32BE(out[0], offset + 0);\n      self2._cache.writeUInt32BE(out[1], offset + 4);\n      self2._cache.writeUInt32BE(out[2], offset + 8);\n      self2._cache.writeUInt32BE(out[3], offset + 12);\n    }\n    var pad = self2._cache.slice(0, chunk.length);\n    self2._cache = self2._cache.slice(chunk.length);\n    return xor(chunk, pad);\n  };\n  return exports$1f$1;\n}\nvar _list = {\n  \"aes-128-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-192-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-256-ecb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 0,\n    \"mode\": \"ECB\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-192-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-256-cbc\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes128\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes192\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes256\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CBC\",\n    \"type\": \"block\"\n  },\n  \"aes-128-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb8\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB8\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-cfb1\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CFB1\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ofb\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"OFB\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-192-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-256-ctr\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 16,\n    \"mode\": \"CTR\",\n    \"type\": \"stream\"\n  },\n  \"aes-128-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 128,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-192-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 192,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  },\n  \"aes-256-gcm\": {\n    \"cipher\": \"AES\",\n    \"key\": 256,\n    \"iv\": 12,\n    \"mode\": \"GCM\",\n    \"type\": \"auth\"\n  }\n};\nvar exports$1e$1 = {};\nvar _dewExec$1d$1 = false;\nfunction dew$1d$1() {\n  if (_dewExec$1d$1) return exports$1e$1;\n  _dewExec$1d$1 = true;\n  var modeModules = {\n    ECB: dew$1m(),\n    CBC: dew$1k(),\n    CFB: dew$1j(),\n    CFB8: dew$1i$1(),\n    CFB1: dew$1h$1(),\n    OFB: dew$1g$1(),\n    CTR: dew$1e$1(),\n    GCM: dew$1e$1()\n  };\n  var modes = _list;\n  for (var key in modes) {\n    modes[key].module = modeModules[modes[key].mode];\n  }\n  exports$1e$1 = modes;\n  return exports$1e$1;\n}\nvar exports$1d$1 = {};\nvar _dewExec$1c$1 = false;\nvar _global$j$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1c$1() {\n  if (_dewExec$1c$1) return exports$1d$1;\n  _dewExec$1c$1 = true;\n  var Buffer = dew$1T().Buffer;\n  function asUInt32Array(buf) {\n    if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n    var len = buf.length / 4 | 0;\n    var out = new Array(len);\n    for (var i5 = 0; i5 < len; i5++) {\n      out[i5] = buf.readUInt32BE(i5 * 4);\n    }\n    return out;\n  }\n  function scrubVec(v5) {\n    for (var i5 = 0; i5 < v5.length; v5++) {\n      v5[i5] = 0;\n    }\n  }\n  function cryptBlock(M4, keySchedule, SUB_MIX, SBOX, nRounds) {\n    var SUB_MIX0 = SUB_MIX[0];\n    var SUB_MIX1 = SUB_MIX[1];\n    var SUB_MIX2 = SUB_MIX[2];\n    var SUB_MIX3 = SUB_MIX[3];\n    var s0 = M4[0] ^ keySchedule[0];\n    var s1 = M4[1] ^ keySchedule[1];\n    var s22 = M4[2] ^ keySchedule[2];\n    var s32 = M4[3] ^ keySchedule[3];\n    var t0, t1, t22, t32;\n    var ksRow = 4;\n    for (var round = 1; round < nRounds; round++) {\n      t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 255] ^ SUB_MIX2[s22 >>> 8 & 255] ^ SUB_MIX3[s32 & 255] ^ keySchedule[ksRow++];\n      t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s22 >>> 16 & 255] ^ SUB_MIX2[s32 >>> 8 & 255] ^ SUB_MIX3[s0 & 255] ^ keySchedule[ksRow++];\n      t22 = SUB_MIX0[s22 >>> 24] ^ SUB_MIX1[s32 >>> 16 & 255] ^ SUB_MIX2[s0 >>> 8 & 255] ^ SUB_MIX3[s1 & 255] ^ keySchedule[ksRow++];\n      t32 = SUB_MIX0[s32 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 255] ^ SUB_MIX2[s1 >>> 8 & 255] ^ SUB_MIX3[s22 & 255] ^ keySchedule[ksRow++];\n      s0 = t0;\n      s1 = t1;\n      s22 = t22;\n      s32 = t32;\n    }\n    t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 255] << 16 | SBOX[s22 >>> 8 & 255] << 8 | SBOX[s32 & 255]) ^ keySchedule[ksRow++];\n    t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s22 >>> 16 & 255] << 16 | SBOX[s32 >>> 8 & 255] << 8 | SBOX[s0 & 255]) ^ keySchedule[ksRow++];\n    t22 = (SBOX[s22 >>> 24] << 24 | SBOX[s32 >>> 16 & 255] << 16 | SBOX[s0 >>> 8 & 255] << 8 | SBOX[s1 & 255]) ^ keySchedule[ksRow++];\n    t32 = (SBOX[s32 >>> 24] << 24 | SBOX[s0 >>> 16 & 255] << 16 | SBOX[s1 >>> 8 & 255] << 8 | SBOX[s22 & 255]) ^ keySchedule[ksRow++];\n    t0 = t0 >>> 0;\n    t1 = t1 >>> 0;\n    t22 = t22 >>> 0;\n    t32 = t32 >>> 0;\n    return [t0, t1, t22, t32];\n  }\n  var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];\n  var G3 = (function() {\n    var d4 = new Array(256);\n    for (var j4 = 0; j4 < 256; j4++) {\n      if (j4 < 128) {\n        d4[j4] = j4 << 1;\n      } else {\n        d4[j4] = j4 << 1 ^ 283;\n      }\n    }\n    var SBOX = [];\n    var INV_SBOX = [];\n    var SUB_MIX = [[], [], [], []];\n    var INV_SUB_MIX = [[], [], [], []];\n    var x4 = 0;\n    var xi = 0;\n    for (var i5 = 0; i5 < 256; ++i5) {\n      var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n      sx = sx >>> 8 ^ sx & 255 ^ 99;\n      SBOX[x4] = sx;\n      INV_SBOX[sx] = x4;\n      var x22 = d4[x4];\n      var x42 = d4[x22];\n      var x8 = d4[x42];\n      var t5 = d4[sx] * 257 ^ sx * 16843008;\n      SUB_MIX[0][x4] = t5 << 24 | t5 >>> 8;\n      SUB_MIX[1][x4] = t5 << 16 | t5 >>> 16;\n      SUB_MIX[2][x4] = t5 << 8 | t5 >>> 24;\n      SUB_MIX[3][x4] = t5;\n      t5 = x8 * 16843009 ^ x42 * 65537 ^ x22 * 257 ^ x4 * 16843008;\n      INV_SUB_MIX[0][sx] = t5 << 24 | t5 >>> 8;\n      INV_SUB_MIX[1][sx] = t5 << 16 | t5 >>> 16;\n      INV_SUB_MIX[2][sx] = t5 << 8 | t5 >>> 24;\n      INV_SUB_MIX[3][sx] = t5;\n      if (x4 === 0) {\n        x4 = xi = 1;\n      } else {\n        x4 = x22 ^ d4[d4[d4[x8 ^ x22]]];\n        xi ^= d4[d4[xi]];\n      }\n    }\n    return {\n      SBOX,\n      INV_SBOX,\n      SUB_MIX,\n      INV_SUB_MIX\n    };\n  })();\n  function AES(key) {\n    (this || _global$j$1)._key = asUInt32Array(key);\n    this._reset();\n  }\n  AES.blockSize = 4 * 4;\n  AES.keySize = 256 / 8;\n  AES.prototype.blockSize = AES.blockSize;\n  AES.prototype.keySize = AES.keySize;\n  AES.prototype._reset = function() {\n    var keyWords = (this || _global$j$1)._key;\n    var keySize = keyWords.length;\n    var nRounds = keySize + 6;\n    var ksRows = (nRounds + 1) * 4;\n    var keySchedule = [];\n    for (var k4 = 0; k4 < keySize; k4++) {\n      keySchedule[k4] = keyWords[k4];\n    }\n    for (k4 = keySize; k4 < ksRows; k4++) {\n      var t5 = keySchedule[k4 - 1];\n      if (k4 % keySize === 0) {\n        t5 = t5 << 8 | t5 >>> 24;\n        t5 = G3.SBOX[t5 >>> 24] << 24 | G3.SBOX[t5 >>> 16 & 255] << 16 | G3.SBOX[t5 >>> 8 & 255] << 8 | G3.SBOX[t5 & 255];\n        t5 ^= RCON[k4 / keySize | 0] << 24;\n      } else if (keySize > 6 && k4 % keySize === 4) {\n        t5 = G3.SBOX[t5 >>> 24] << 24 | G3.SBOX[t5 >>> 16 & 255] << 16 | G3.SBOX[t5 >>> 8 & 255] << 8 | G3.SBOX[t5 & 255];\n      }\n      keySchedule[k4] = keySchedule[k4 - keySize] ^ t5;\n    }\n    var invKeySchedule = [];\n    for (var ik = 0; ik < ksRows; ik++) {\n      var ksR = ksRows - ik;\n      var tt2 = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n      if (ik < 4 || ksR <= 4) {\n        invKeySchedule[ik] = tt2;\n      } else {\n        invKeySchedule[ik] = G3.INV_SUB_MIX[0][G3.SBOX[tt2 >>> 24]] ^ G3.INV_SUB_MIX[1][G3.SBOX[tt2 >>> 16 & 255]] ^ G3.INV_SUB_MIX[2][G3.SBOX[tt2 >>> 8 & 255]] ^ G3.INV_SUB_MIX[3][G3.SBOX[tt2 & 255]];\n      }\n    }\n    (this || _global$j$1)._nRounds = nRounds;\n    (this || _global$j$1)._keySchedule = keySchedule;\n    (this || _global$j$1)._invKeySchedule = invKeySchedule;\n  };\n  AES.prototype.encryptBlockRaw = function(M4) {\n    M4 = asUInt32Array(M4);\n    return cryptBlock(M4, (this || _global$j$1)._keySchedule, G3.SUB_MIX, G3.SBOX, (this || _global$j$1)._nRounds);\n  };\n  AES.prototype.encryptBlock = function(M4) {\n    var out = this.encryptBlockRaw(M4);\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0], 0);\n    buf.writeUInt32BE(out[1], 4);\n    buf.writeUInt32BE(out[2], 8);\n    buf.writeUInt32BE(out[3], 12);\n    return buf;\n  };\n  AES.prototype.decryptBlock = function(M4) {\n    M4 = asUInt32Array(M4);\n    var m1 = M4[1];\n    M4[1] = M4[3];\n    M4[3] = m1;\n    var out = cryptBlock(M4, (this || _global$j$1)._invKeySchedule, G3.INV_SUB_MIX, G3.INV_SBOX, (this || _global$j$1)._nRounds);\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0], 0);\n    buf.writeUInt32BE(out[3], 4);\n    buf.writeUInt32BE(out[2], 8);\n    buf.writeUInt32BE(out[1], 12);\n    return buf;\n  };\n  AES.prototype.scrub = function() {\n    scrubVec((this || _global$j$1)._keySchedule);\n    scrubVec((this || _global$j$1)._invKeySchedule);\n    scrubVec((this || _global$j$1)._key);\n  };\n  exports$1d$1.AES = AES;\n  return exports$1d$1;\n}\nvar exports$1c$1 = {};\nvar _dewExec$1b$1 = false;\nvar _global$i$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1b$1() {\n  if (_dewExec$1b$1) return exports$1c$1;\n  _dewExec$1b$1 = true;\n  var Buffer = dew$1T().Buffer;\n  var ZEROES = Buffer.alloc(16, 0);\n  function toArray(buf) {\n    return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n  }\n  function fromArray(out) {\n    var buf = Buffer.allocUnsafe(16);\n    buf.writeUInt32BE(out[0] >>> 0, 0);\n    buf.writeUInt32BE(out[1] >>> 0, 4);\n    buf.writeUInt32BE(out[2] >>> 0, 8);\n    buf.writeUInt32BE(out[3] >>> 0, 12);\n    return buf;\n  }\n  function GHASH(key) {\n    (this || _global$i$1).h = key;\n    (this || _global$i$1).state = Buffer.alloc(16, 0);\n    (this || _global$i$1).cache = Buffer.allocUnsafe(0);\n  }\n  GHASH.prototype.ghash = function(block) {\n    var i5 = -1;\n    while (++i5 < block.length) {\n      (this || _global$i$1).state[i5] ^= block[i5];\n    }\n    this._multiply();\n  };\n  GHASH.prototype._multiply = function() {\n    var Vi = toArray((this || _global$i$1).h);\n    var Zi = [0, 0, 0, 0];\n    var j4, xi, lsbVi;\n    var i5 = -1;\n    while (++i5 < 128) {\n      xi = ((this || _global$i$1).state[~~(i5 / 8)] & 1 << 7 - i5 % 8) !== 0;\n      if (xi) {\n        Zi[0] ^= Vi[0];\n        Zi[1] ^= Vi[1];\n        Zi[2] ^= Vi[2];\n        Zi[3] ^= Vi[3];\n      }\n      lsbVi = (Vi[3] & 1) !== 0;\n      for (j4 = 3; j4 > 0; j4--) {\n        Vi[j4] = Vi[j4] >>> 1 | (Vi[j4 - 1] & 1) << 31;\n      }\n      Vi[0] = Vi[0] >>> 1;\n      if (lsbVi) {\n        Vi[0] = Vi[0] ^ 225 << 24;\n      }\n    }\n    (this || _global$i$1).state = fromArray(Zi);\n  };\n  GHASH.prototype.update = function(buf) {\n    (this || _global$i$1).cache = Buffer.concat([(this || _global$i$1).cache, buf]);\n    var chunk;\n    while ((this || _global$i$1).cache.length >= 16) {\n      chunk = (this || _global$i$1).cache.slice(0, 16);\n      (this || _global$i$1).cache = (this || _global$i$1).cache.slice(16);\n      this.ghash(chunk);\n    }\n  };\n  GHASH.prototype.final = function(abl, bl) {\n    if ((this || _global$i$1).cache.length) {\n      this.ghash(Buffer.concat([(this || _global$i$1).cache, ZEROES], 16));\n    }\n    this.ghash(fromArray([0, abl, 0, bl]));\n    return (this || _global$i$1).state;\n  };\n  exports$1c$1 = GHASH;\n  return exports$1c$1;\n}\nvar exports$1b$1 = {};\nvar _dewExec$1a$1 = false;\nvar _global$h$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1a$1() {\n  if (_dewExec$1a$1) return exports$1b$1;\n  _dewExec$1a$1 = true;\n  var aes = dew$1c$1();\n  var Buffer = dew$1T().Buffer;\n  var Transform = dew$1G();\n  var inherits = dew$f$2();\n  var GHASH = dew$1b$1();\n  var xor = dew$1l();\n  var incr32 = dew$1f$1();\n  function xorTest(a5, b4) {\n    var out = 0;\n    if (a5.length !== b4.length) out++;\n    var len = Math.min(a5.length, b4.length);\n    for (var i5 = 0; i5 < len; ++i5) {\n      out += a5[i5] ^ b4[i5];\n    }\n    return out;\n  }\n  function calcIv(self2, iv, ck) {\n    if (iv.length === 12) {\n      self2._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]);\n      return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]);\n    }\n    var ghash = new GHASH(ck);\n    var len = iv.length;\n    var toPad = len % 16;\n    ghash.update(iv);\n    if (toPad) {\n      toPad = 16 - toPad;\n      ghash.update(Buffer.alloc(toPad, 0));\n    }\n    ghash.update(Buffer.alloc(8, 0));\n    var ivBits = len * 8;\n    var tail = Buffer.alloc(8);\n    tail.writeUIntBE(ivBits, 0, 8);\n    ghash.update(tail);\n    self2._finID = ghash.state;\n    var out = Buffer.from(self2._finID);\n    incr32(out);\n    return out;\n  }\n  function StreamCipher(mode, key, iv, decrypt) {\n    Transform.call(this || _global$h$1);\n    var h5 = Buffer.alloc(4, 0);\n    (this || _global$h$1)._cipher = new aes.AES(key);\n    var ck = (this || _global$h$1)._cipher.encryptBlock(h5);\n    (this || _global$h$1)._ghash = new GHASH(ck);\n    iv = calcIv(this || _global$h$1, iv, ck);\n    (this || _global$h$1)._prev = Buffer.from(iv);\n    (this || _global$h$1)._cache = Buffer.allocUnsafe(0);\n    (this || _global$h$1)._secCache = Buffer.allocUnsafe(0);\n    (this || _global$h$1)._decrypt = decrypt;\n    (this || _global$h$1)._alen = 0;\n    (this || _global$h$1)._len = 0;\n    (this || _global$h$1)._mode = mode;\n    (this || _global$h$1)._authTag = null;\n    (this || _global$h$1)._called = false;\n  }\n  inherits(StreamCipher, Transform);\n  StreamCipher.prototype._update = function(chunk) {\n    if (!(this || _global$h$1)._called && (this || _global$h$1)._alen) {\n      var rump = 16 - (this || _global$h$1)._alen % 16;\n      if (rump < 16) {\n        rump = Buffer.alloc(rump, 0);\n        (this || _global$h$1)._ghash.update(rump);\n      }\n    }\n    (this || _global$h$1)._called = true;\n    var out = (this || _global$h$1)._mode.encrypt(this || _global$h$1, chunk);\n    if ((this || _global$h$1)._decrypt) {\n      (this || _global$h$1)._ghash.update(chunk);\n    } else {\n      (this || _global$h$1)._ghash.update(out);\n    }\n    (this || _global$h$1)._len += chunk.length;\n    return out;\n  };\n  StreamCipher.prototype._final = function() {\n    if ((this || _global$h$1)._decrypt && !(this || _global$h$1)._authTag) throw new Error(\"Unsupported state or unable to authenticate data\");\n    var tag = xor((this || _global$h$1)._ghash.final((this || _global$h$1)._alen * 8, (this || _global$h$1)._len * 8), (this || _global$h$1)._cipher.encryptBlock((this || _global$h$1)._finID));\n    if ((this || _global$h$1)._decrypt && xorTest(tag, (this || _global$h$1)._authTag)) throw new Error(\"Unsupported state or unable to authenticate data\");\n    (this || _global$h$1)._authTag = tag;\n    (this || _global$h$1)._cipher.scrub();\n  };\n  StreamCipher.prototype.getAuthTag = function getAuthTag() {\n    if ((this || _global$h$1)._decrypt || !Buffer.isBuffer((this || _global$h$1)._authTag)) throw new Error(\"Attempting to get auth tag in unsupported state\");\n    return (this || _global$h$1)._authTag;\n  };\n  StreamCipher.prototype.setAuthTag = function setAuthTag(tag) {\n    if (!(this || _global$h$1)._decrypt) throw new Error(\"Attempting to set auth tag in unsupported state\");\n    (this || _global$h$1)._authTag = tag;\n  };\n  StreamCipher.prototype.setAAD = function setAAD(buf) {\n    if ((this || _global$h$1)._called) throw new Error(\"Attempting to set AAD in unsupported state\");\n    (this || _global$h$1)._ghash.update(buf);\n    (this || _global$h$1)._alen += buf.length;\n  };\n  exports$1b$1 = StreamCipher;\n  return exports$1b$1;\n}\nvar exports$1a$1 = {};\nvar _dewExec$19$1 = false;\nvar _global$g$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$19$1() {\n  if (_dewExec$19$1) return exports$1a$1;\n  _dewExec$19$1 = true;\n  var aes = dew$1c$1();\n  var Buffer = dew$1T().Buffer;\n  var Transform = dew$1G();\n  var inherits = dew$f$2();\n  function StreamCipher(mode, key, iv, decrypt) {\n    Transform.call(this || _global$g$1);\n    (this || _global$g$1)._cipher = new aes.AES(key);\n    (this || _global$g$1)._prev = Buffer.from(iv);\n    (this || _global$g$1)._cache = Buffer.allocUnsafe(0);\n    (this || _global$g$1)._secCache = Buffer.allocUnsafe(0);\n    (this || _global$g$1)._decrypt = decrypt;\n    (this || _global$g$1)._mode = mode;\n  }\n  inherits(StreamCipher, Transform);\n  StreamCipher.prototype._update = function(chunk) {\n    return (this || _global$g$1)._mode.encrypt(this || _global$g$1, chunk, (this || _global$g$1)._decrypt);\n  };\n  StreamCipher.prototype._final = function() {\n    (this || _global$g$1)._cipher.scrub();\n  };\n  exports$1a$1 = StreamCipher;\n  return exports$1a$1;\n}\nvar exports$19$1 = {};\nvar _dewExec$18$1 = false;\nfunction dew$18$1() {\n  if (_dewExec$18$1) return exports$19$1;\n  _dewExec$18$1 = true;\n  var Buffer = dew$1T().Buffer;\n  var MD5 = dew$1Q();\n  function EVP_BytesToKey(password, salt, keyBits, ivLen) {\n    if (!Buffer.isBuffer(password)) password = Buffer.from(password, \"binary\");\n    if (salt) {\n      if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, \"binary\");\n      if (salt.length !== 8) throw new RangeError(\"salt should be Buffer with 8 byte length\");\n    }\n    var keyLen = keyBits / 8;\n    var key = Buffer.alloc(keyLen);\n    var iv = Buffer.alloc(ivLen || 0);\n    var tmp = Buffer.alloc(0);\n    while (keyLen > 0 || ivLen > 0) {\n      var hash = new MD5();\n      hash.update(tmp);\n      hash.update(password);\n      if (salt) hash.update(salt);\n      tmp = hash.digest();\n      var used = 0;\n      if (keyLen > 0) {\n        var keyStart = key.length - keyLen;\n        used = Math.min(keyLen, tmp.length);\n        tmp.copy(key, keyStart, 0, used);\n        keyLen -= used;\n      }\n      if (used < tmp.length && ivLen > 0) {\n        var ivStart = iv.length - ivLen;\n        var length = Math.min(ivLen, tmp.length - used);\n        tmp.copy(iv, ivStart, used, used + length);\n        ivLen -= length;\n      }\n    }\n    tmp.fill(0);\n    return {\n      key,\n      iv\n    };\n  }\n  exports$19$1 = EVP_BytesToKey;\n  return exports$19$1;\n}\nvar exports$18$1 = {};\nvar _dewExec$17$1 = false;\nvar _global$f$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$17$1() {\n  if (_dewExec$17$1) return exports$18$1;\n  _dewExec$17$1 = true;\n  var MODES = dew$1d$1();\n  var AuthCipher = dew$1a$1();\n  var Buffer = dew$1T().Buffer;\n  var StreamCipher = dew$19$1();\n  var Transform = dew$1G();\n  var aes = dew$1c$1();\n  var ebtk = dew$18$1();\n  var inherits = dew$f$2();\n  function Cipher2(mode, key, iv) {\n    Transform.call(this || _global$f$1);\n    (this || _global$f$1)._cache = new Splitter();\n    (this || _global$f$1)._cipher = new aes.AES(key);\n    (this || _global$f$1)._prev = Buffer.from(iv);\n    (this || _global$f$1)._mode = mode;\n    (this || _global$f$1)._autopadding = true;\n  }\n  inherits(Cipher2, Transform);\n  Cipher2.prototype._update = function(data) {\n    (this || _global$f$1)._cache.add(data);\n    var chunk;\n    var thing;\n    var out = [];\n    while (chunk = (this || _global$f$1)._cache.get()) {\n      thing = (this || _global$f$1)._mode.encrypt(this || _global$f$1, chunk);\n      out.push(thing);\n    }\n    return Buffer.concat(out);\n  };\n  var PADDING = Buffer.alloc(16, 16);\n  Cipher2.prototype._final = function() {\n    var chunk = (this || _global$f$1)._cache.flush();\n    if ((this || _global$f$1)._autopadding) {\n      chunk = (this || _global$f$1)._mode.encrypt(this || _global$f$1, chunk);\n      (this || _global$f$1)._cipher.scrub();\n      return chunk;\n    }\n    if (!chunk.equals(PADDING)) {\n      (this || _global$f$1)._cipher.scrub();\n      throw new Error(\"data not multiple of block length\");\n    }\n  };\n  Cipher2.prototype.setAutoPadding = function(setTo) {\n    (this || _global$f$1)._autopadding = !!setTo;\n    return this || _global$f$1;\n  };\n  function Splitter() {\n    (this || _global$f$1).cache = Buffer.allocUnsafe(0);\n  }\n  Splitter.prototype.add = function(data) {\n    (this || _global$f$1).cache = Buffer.concat([(this || _global$f$1).cache, data]);\n  };\n  Splitter.prototype.get = function() {\n    if ((this || _global$f$1).cache.length > 15) {\n      var out = (this || _global$f$1).cache.slice(0, 16);\n      (this || _global$f$1).cache = (this || _global$f$1).cache.slice(16);\n      return out;\n    }\n    return null;\n  };\n  Splitter.prototype.flush = function() {\n    var len = 16 - (this || _global$f$1).cache.length;\n    var padBuff = Buffer.allocUnsafe(len);\n    var i5 = -1;\n    while (++i5 < len) {\n      padBuff.writeUInt8(len, i5);\n    }\n    return Buffer.concat([(this || _global$f$1).cache, padBuff]);\n  };\n  function createCipheriv2(suite, password, iv) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    if (typeof password === \"string\") password = Buffer.from(password);\n    if (password.length !== config2.key / 8) throw new TypeError(\"invalid key length \" + password.length);\n    if (typeof iv === \"string\") iv = Buffer.from(iv);\n    if (config2.mode !== \"GCM\" && iv.length !== config2.iv) throw new TypeError(\"invalid iv length \" + iv.length);\n    if (config2.type === \"stream\") {\n      return new StreamCipher(config2.module, password, iv);\n    } else if (config2.type === \"auth\") {\n      return new AuthCipher(config2.module, password, iv);\n    }\n    return new Cipher2(config2.module, password, iv);\n  }\n  function createCipher2(suite, password) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    var keys = ebtk(password, false, config2.key, config2.iv);\n    return createCipheriv2(suite, keys.key, keys.iv);\n  }\n  exports$18$1.createCipheriv = createCipheriv2;\n  exports$18$1.createCipher = createCipher2;\n  return exports$18$1;\n}\nvar exports$17$1 = {};\nvar _dewExec$16$1 = false;\nvar _global$e$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$16$1() {\n  if (_dewExec$16$1) return exports$17$1;\n  _dewExec$16$1 = true;\n  var AuthCipher = dew$1a$1();\n  var Buffer = dew$1T().Buffer;\n  var MODES = dew$1d$1();\n  var StreamCipher = dew$19$1();\n  var Transform = dew$1G();\n  var aes = dew$1c$1();\n  var ebtk = dew$18$1();\n  var inherits = dew$f$2();\n  function Decipher2(mode, key, iv) {\n    Transform.call(this || _global$e$1);\n    (this || _global$e$1)._cache = new Splitter();\n    (this || _global$e$1)._last = void 0;\n    (this || _global$e$1)._cipher = new aes.AES(key);\n    (this || _global$e$1)._prev = Buffer.from(iv);\n    (this || _global$e$1)._mode = mode;\n    (this || _global$e$1)._autopadding = true;\n  }\n  inherits(Decipher2, Transform);\n  Decipher2.prototype._update = function(data) {\n    (this || _global$e$1)._cache.add(data);\n    var chunk;\n    var thing;\n    var out = [];\n    while (chunk = (this || _global$e$1)._cache.get((this || _global$e$1)._autopadding)) {\n      thing = (this || _global$e$1)._mode.decrypt(this || _global$e$1, chunk);\n      out.push(thing);\n    }\n    return Buffer.concat(out);\n  };\n  Decipher2.prototype._final = function() {\n    var chunk = (this || _global$e$1)._cache.flush();\n    if ((this || _global$e$1)._autopadding) {\n      return unpad((this || _global$e$1)._mode.decrypt(this || _global$e$1, chunk));\n    } else if (chunk) {\n      throw new Error(\"data not multiple of block length\");\n    }\n  };\n  Decipher2.prototype.setAutoPadding = function(setTo) {\n    (this || _global$e$1)._autopadding = !!setTo;\n    return this || _global$e$1;\n  };\n  function Splitter() {\n    (this || _global$e$1).cache = Buffer.allocUnsafe(0);\n  }\n  Splitter.prototype.add = function(data) {\n    (this || _global$e$1).cache = Buffer.concat([(this || _global$e$1).cache, data]);\n  };\n  Splitter.prototype.get = function(autoPadding) {\n    var out;\n    if (autoPadding) {\n      if ((this || _global$e$1).cache.length > 16) {\n        out = (this || _global$e$1).cache.slice(0, 16);\n        (this || _global$e$1).cache = (this || _global$e$1).cache.slice(16);\n        return out;\n      }\n    } else {\n      if ((this || _global$e$1).cache.length >= 16) {\n        out = (this || _global$e$1).cache.slice(0, 16);\n        (this || _global$e$1).cache = (this || _global$e$1).cache.slice(16);\n        return out;\n      }\n    }\n    return null;\n  };\n  Splitter.prototype.flush = function() {\n    if ((this || _global$e$1).cache.length) return (this || _global$e$1).cache;\n  };\n  function unpad(last) {\n    var padded = last[15];\n    if (padded < 1 || padded > 16) {\n      throw new Error(\"unable to decrypt data\");\n    }\n    var i5 = -1;\n    while (++i5 < padded) {\n      if (last[i5 + (16 - padded)] !== padded) {\n        throw new Error(\"unable to decrypt data\");\n      }\n    }\n    if (padded === 16) return;\n    return last.slice(0, 16 - padded);\n  }\n  function createDecipheriv2(suite, password, iv) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    if (typeof iv === \"string\") iv = Buffer.from(iv);\n    if (config2.mode !== \"GCM\" && iv.length !== config2.iv) throw new TypeError(\"invalid iv length \" + iv.length);\n    if (typeof password === \"string\") password = Buffer.from(password);\n    if (password.length !== config2.key / 8) throw new TypeError(\"invalid key length \" + password.length);\n    if (config2.type === \"stream\") {\n      return new StreamCipher(config2.module, password, iv, true);\n    } else if (config2.type === \"auth\") {\n      return new AuthCipher(config2.module, password, iv, true);\n    }\n    return new Decipher2(config2.module, password, iv);\n  }\n  function createDecipher2(suite, password) {\n    var config2 = MODES[suite.toLowerCase()];\n    if (!config2) throw new TypeError(\"invalid suite type\");\n    var keys = ebtk(password, false, config2.key, config2.iv);\n    return createDecipheriv2(suite, keys.key, keys.iv);\n  }\n  exports$17$1.createDecipher = createDecipher2;\n  exports$17$1.createDecipheriv = createDecipheriv2;\n  return exports$17$1;\n}\nvar exports$16$1 = {};\nvar _dewExec$15$1 = false;\nfunction dew$15$1() {\n  if (_dewExec$15$1) return exports$16$1;\n  _dewExec$15$1 = true;\n  var ciphers = dew$17$1();\n  var deciphers = dew$16$1();\n  var modes = _list;\n  function getCiphers2() {\n    return Object.keys(modes);\n  }\n  exports$16$1.createCipher = exports$16$1.Cipher = ciphers.createCipher;\n  exports$16$1.createCipheriv = exports$16$1.Cipheriv = ciphers.createCipheriv;\n  exports$16$1.createDecipher = exports$16$1.Decipher = deciphers.createDecipher;\n  exports$16$1.createDecipheriv = exports$16$1.Decipheriv = deciphers.createDecipheriv;\n  exports$16$1.listCiphers = exports$16$1.getCiphers = getCiphers2;\n  return exports$16$1;\n}\nvar exports$15$1 = {};\nvar _dewExec$14$1 = false;\nfunction dew$14$1() {\n  if (_dewExec$14$1) return exports$15$1;\n  _dewExec$14$1 = true;\n  exports$15$1[\"des-ecb\"] = {\n    key: 8,\n    iv: 0\n  };\n  exports$15$1[\"des-cbc\"] = exports$15$1.des = {\n    key: 8,\n    iv: 8\n  };\n  exports$15$1[\"des-ede3-cbc\"] = exports$15$1.des3 = {\n    key: 24,\n    iv: 8\n  };\n  exports$15$1[\"des-ede3\"] = {\n    key: 24,\n    iv: 0\n  };\n  exports$15$1[\"des-ede-cbc\"] = {\n    key: 16,\n    iv: 8\n  };\n  exports$15$1[\"des-ede\"] = {\n    key: 16,\n    iv: 0\n  };\n  return exports$15$1;\n}\nvar exports$14$1 = {};\nvar _dewExec$13$1 = false;\nfunction dew$13$1() {\n  if (_dewExec$13$1) return exports$14$1;\n  _dewExec$13$1 = true;\n  var DES = dew$1n();\n  var aes = dew$15$1();\n  var aesModes = dew$1d$1();\n  var desModes = dew$14$1();\n  var ebtk = dew$18$1();\n  function createCipher2(suite, password) {\n    suite = suite.toLowerCase();\n    var keyLen, ivLen;\n    if (aesModes[suite]) {\n      keyLen = aesModes[suite].key;\n      ivLen = aesModes[suite].iv;\n    } else if (desModes[suite]) {\n      keyLen = desModes[suite].key * 8;\n      ivLen = desModes[suite].iv;\n    } else {\n      throw new TypeError(\"invalid suite type\");\n    }\n    var keys = ebtk(password, false, keyLen, ivLen);\n    return createCipheriv2(suite, keys.key, keys.iv);\n  }\n  function createDecipher2(suite, password) {\n    suite = suite.toLowerCase();\n    var keyLen, ivLen;\n    if (aesModes[suite]) {\n      keyLen = aesModes[suite].key;\n      ivLen = aesModes[suite].iv;\n    } else if (desModes[suite]) {\n      keyLen = desModes[suite].key * 8;\n      ivLen = desModes[suite].iv;\n    } else {\n      throw new TypeError(\"invalid suite type\");\n    }\n    var keys = ebtk(password, false, keyLen, ivLen);\n    return createDecipheriv2(suite, keys.key, keys.iv);\n  }\n  function createCipheriv2(suite, key, iv) {\n    suite = suite.toLowerCase();\n    if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);\n    if (desModes[suite]) return new DES({\n      key,\n      iv,\n      mode: suite\n    });\n    throw new TypeError(\"invalid suite type\");\n  }\n  function createDecipheriv2(suite, key, iv) {\n    suite = suite.toLowerCase();\n    if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);\n    if (desModes[suite]) return new DES({\n      key,\n      iv,\n      mode: suite,\n      decrypt: true\n    });\n    throw new TypeError(\"invalid suite type\");\n  }\n  function getCiphers2() {\n    return Object.keys(desModes).concat(aes.getCiphers());\n  }\n  exports$14$1.createCipher = exports$14$1.Cipher = createCipher2;\n  exports$14$1.createCipheriv = exports$14$1.Cipheriv = createCipheriv2;\n  exports$14$1.createDecipher = exports$14$1.Decipher = createDecipher2;\n  exports$14$1.createDecipheriv = exports$14$1.Decipheriv = createDecipheriv2;\n  exports$14$1.listCiphers = exports$14$1.getCiphers = getCiphers2;\n  return exports$14$1;\n}\nvar exports$13$1 = {};\nvar _dewExec$12$1 = false;\nvar module$6 = {\n  exports: exports$13$1\n};\nvar _global$d$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$12$1() {\n  if (_dewExec$12$1) return module$6.exports;\n  _dewExec$12$1 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$d$1).negative = 0;\n      (this || _global$d$1).words = null;\n      (this || _global$d$1).length = 0;\n      (this || _global$d$1).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = e$1$1.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$d$1).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$d$1).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$d$1).words = [number & 67108863];\n        (this || _global$d$1).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$d$1).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$d$1).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$d$1).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$d$1).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$d$1).words = [0];\n        (this || _global$d$1).length = 1;\n        return this || _global$d$1;\n      }\n      (this || _global$d$1).length = Math.ceil(number.length / 3);\n      (this || _global$d$1).words = new Array((this || _global$d$1).length);\n      for (var i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n        (this || _global$d$1).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$d$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$d$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$d$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$d$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$d$1).length = Math.ceil((number.length - start) / 6);\n      (this || _global$d$1).words = new Array((this || _global$d$1).length);\n      for (var i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n        (this || _global$d$1).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$d$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$d$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$d$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$d$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$d$1).words = [0];\n      (this || _global$d$1).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$d$1).words[0] + word < 67108864) {\n          (this || _global$d$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$d$1).words[0] + word < 67108864) {\n          (this || _global$d$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$d$1).length);\n      for (var i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n        dest.words[i5] = (this || _global$d$1).words[i5];\n      }\n      dest.length = (this || _global$d$1).length;\n      dest.negative = (this || _global$d$1).negative;\n      dest.red = (this || _global$d$1).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$d$1).length < size) {\n        (this || _global$d$1).words[(this || _global$d$1).length++] = 0;\n      }\n      return this || _global$d$1;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$d$1).length > 1 && (this || _global$d$1).words[(this || _global$d$1).length - 1] === 0) {\n        (this || _global$d$1).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$d$1).length === 1 && (this || _global$d$1).words[0] === 0) {\n        (this || _global$d$1).negative = 0;\n      }\n      return this || _global$d$1;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$d$1).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n          var w4 = (this || _global$d$1).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$d$1).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$d$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$d$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$d$1).words[0];\n      if ((this || _global$d$1).length === 2) {\n        ret += (this || _global$d$1).words[1] * 67108864;\n      } else if ((this || _global$d$1).length === 3 && (this || _global$d$1).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$d$1).words[1] * 67108864;\n      } else if ((this || _global$d$1).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$d$1).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$d$1).words[(this || _global$d$1).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$d$1).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n        var b4 = this._zeroBits((this || _global$d$1).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$d$1).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$d$1).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$d$1).negative ^= 1;\n      }\n      return this || _global$d$1;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$d$1).length < num.length) {\n        (this || _global$d$1).words[(this || _global$d$1).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$d$1).words[i5] = (this || _global$d$1).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$d$1).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$d$1).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$d$1);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$d$1).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$d$1);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$d$1).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$d$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$d$1).words[i5] = (this || _global$d$1).words[i5] & num.words[i5];\n      }\n      (this || _global$d$1).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$d$1).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$d$1).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$d$1);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$d$1).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$d$1);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$d$1).length > num.length) {\n        a5 = this || _global$d$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$d$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$d$1).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$d$1) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$d$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$d$1).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$d$1).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$d$1).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$d$1);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$d$1).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$d$1);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$d$1).words[i5] = ~(this || _global$d$1).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$d$1).words[i5] = ~(this || _global$d$1).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$d$1).words[off2] = (this || _global$d$1).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$d$1).words[off2] = (this || _global$d$1).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$d$1).negative !== 0 && num.negative === 0) {\n        (this || _global$d$1).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$d$1).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$d$1).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$d$1).length > num.length) {\n        a5 = this || _global$d$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$d$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$d$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$d$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$d$1).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$d$1).words[(this || _global$d$1).length] = carry;\n        (this || _global$d$1).length++;\n      } else if (a5 !== (this || _global$d$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$d$1).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$d$1;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$d$1).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$d$1).negative !== 0) {\n        (this || _global$d$1).negative = 0;\n        res = num.sub(this || _global$d$1);\n        (this || _global$d$1).negative = 1;\n        return res;\n      }\n      if ((this || _global$d$1).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$d$1);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$d$1).negative !== 0) {\n        (this || _global$d$1).negative = 0;\n        this.iadd(num);\n        (this || _global$d$1).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$d$1).negative = 0;\n        (this || _global$d$1).length = 1;\n        (this || _global$d$1).words[0] = 0;\n        return this || _global$d$1;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$d$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$d$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$d$1).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$d$1).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$d$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$d$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$d$1).length = Math.max((this || _global$d$1).length, i5);\n      if (a5 !== (this || _global$d$1)) {\n        (this || _global$d$1).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$d$1).length + num.length;\n      if ((this || _global$d$1).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$d$1, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$d$1, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$d$1, num, out);\n      } else {\n        res = jumboMulTo(this || _global$d$1, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$d$1).x = x4;\n      (this || _global$d$1).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$d$1).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$d$1).length + num.length);\n      return jumboMulTo(this || _global$d$1, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$d$1);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n        var w4 = ((this || _global$d$1).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$d$1).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$d$1).words[i5] = carry;\n        (this || _global$d$1).length++;\n      }\n      return this || _global$d$1;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$d$1);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$d$1;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n          var newCarry = (this || _global$d$1).words[i5] & carryMask;\n          var c5 = ((this || _global$d$1).words[i5] | 0) - newCarry << r5;\n          (this || _global$d$1).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$d$1).words[i5] = carry;\n          (this || _global$d$1).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$d$1).length - 1; i5 >= 0; i5--) {\n          (this || _global$d$1).words[i5 + s5] = (this || _global$d$1).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$d$1).words[i5] = 0;\n        }\n        (this || _global$d$1).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$d$1).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$d$1).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$d$1).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$d$1).length > s5) {\n        (this || _global$d$1).length -= s5;\n        for (i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n          (this || _global$d$1).words[i5] = (this || _global$d$1).words[i5 + s5];\n        }\n      } else {\n        (this || _global$d$1).words[0] = 0;\n        (this || _global$d$1).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$d$1).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$d$1).words[i5] | 0;\n        (this || _global$d$1).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$d$1).length === 0) {\n        (this || _global$d$1).words[0] = 0;\n        (this || _global$d$1).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$d$1).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$d$1).length <= s5) return false;\n      var w4 = (this || _global$d$1).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$d$1).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$d$1).length <= s5) {\n        return this || _global$d$1;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$d$1).length = Math.min(s5, (this || _global$d$1).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$d$1).words[(this || _global$d$1).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$d$1).negative !== 0) {\n        if ((this || _global$d$1).length === 1 && ((this || _global$d$1).words[0] | 0) < num) {\n          (this || _global$d$1).words[0] = num - ((this || _global$d$1).words[0] | 0);\n          (this || _global$d$1).negative = 0;\n          return this || _global$d$1;\n        }\n        (this || _global$d$1).negative = 0;\n        this.isubn(num);\n        (this || _global$d$1).negative = 1;\n        return this || _global$d$1;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$d$1).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$d$1).length && (this || _global$d$1).words[i5] >= 67108864; i5++) {\n        (this || _global$d$1).words[i5] -= 67108864;\n        if (i5 === (this || _global$d$1).length - 1) {\n          (this || _global$d$1).words[i5 + 1] = 1;\n        } else {\n          (this || _global$d$1).words[i5 + 1]++;\n        }\n      }\n      (this || _global$d$1).length = Math.max((this || _global$d$1).length, i5 + 1);\n      return this || _global$d$1;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$d$1).negative !== 0) {\n        (this || _global$d$1).negative = 0;\n        this.iaddn(num);\n        (this || _global$d$1).negative = 1;\n        return this || _global$d$1;\n      }\n      (this || _global$d$1).words[0] -= num;\n      if ((this || _global$d$1).length === 1 && (this || _global$d$1).words[0] < 0) {\n        (this || _global$d$1).words[0] = -(this || _global$d$1).words[0];\n        (this || _global$d$1).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$d$1).length && (this || _global$d$1).words[i5] < 0; i5++) {\n          (this || _global$d$1).words[i5] += 67108864;\n          (this || _global$d$1).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$d$1).negative = 0;\n      return this || _global$d$1;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$d$1).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$d$1).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$d$1).length - shift; i5++) {\n        w4 = ((this || _global$d$1).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$d$1).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$d$1).length; i5++) {\n        w4 = -((this || _global$d$1).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$d$1).words[i5] = w4 & 67108863;\n      }\n      (this || _global$d$1).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$d$1).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$d$1).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$d$1).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$d$1).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$d$1).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$d$1\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$d$1).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$d$1).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$d$1).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$d$1).words[i5] | 0) + carry * 67108864;\n        (this || _global$d$1).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$d$1;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$d$1;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$d$1).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$d$1).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$d$1).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$d$1).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$d$1).words[s5] |= q3;\n        return this || _global$d$1;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$d$1).length; i5++) {\n        var w4 = (this || _global$d$1).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$d$1).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$d$1).words[i5] = carry;\n        (this || _global$d$1).length++;\n      }\n      return this || _global$d$1;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$d$1).length === 1 && (this || _global$d$1).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$d$1).negative !== 0 && !negative) return -1;\n      if ((this || _global$d$1).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$d$1).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$d$1).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$d$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$d$1).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$d$1).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$d$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$d$1).length > num.length) return 1;\n      if ((this || _global$d$1).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$d$1).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$d$1).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$d$1).red, \"Already a number in reduction context\");\n      assert2((this || _global$d$1).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$d$1)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$d$1).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$d$1).red.convertFrom(this || _global$d$1);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$d$1).red = ctx;\n      return this || _global$d$1;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$d$1).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$d$1).red, \"redAdd works only with red numbers\");\n      return (this || _global$d$1).red.add(this || _global$d$1, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$d$1).red, \"redIAdd works only with red numbers\");\n      return (this || _global$d$1).red.iadd(this || _global$d$1, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$d$1).red, \"redSub works only with red numbers\");\n      return (this || _global$d$1).red.sub(this || _global$d$1, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$d$1).red, \"redISub works only with red numbers\");\n      return (this || _global$d$1).red.isub(this || _global$d$1, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$d$1).red, \"redShl works only with red numbers\");\n      return (this || _global$d$1).red.shl(this || _global$d$1, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$d$1).red, \"redMul works only with red numbers\");\n      (this || _global$d$1).red._verify2(this || _global$d$1, num);\n      return (this || _global$d$1).red.mul(this || _global$d$1, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$d$1).red, \"redMul works only with red numbers\");\n      (this || _global$d$1).red._verify2(this || _global$d$1, num);\n      return (this || _global$d$1).red.imul(this || _global$d$1, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$d$1).red, \"redSqr works only with red numbers\");\n      (this || _global$d$1).red._verify1(this || _global$d$1);\n      return (this || _global$d$1).red.sqr(this || _global$d$1);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$d$1).red, \"redISqr works only with red numbers\");\n      (this || _global$d$1).red._verify1(this || _global$d$1);\n      return (this || _global$d$1).red.isqr(this || _global$d$1);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$d$1).red, \"redSqrt works only with red numbers\");\n      (this || _global$d$1).red._verify1(this || _global$d$1);\n      return (this || _global$d$1).red.sqrt(this || _global$d$1);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$d$1).red, \"redInvm works only with red numbers\");\n      (this || _global$d$1).red._verify1(this || _global$d$1);\n      return (this || _global$d$1).red.invm(this || _global$d$1);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$d$1).red, \"redNeg works only with red numbers\");\n      (this || _global$d$1).red._verify1(this || _global$d$1);\n      return (this || _global$d$1).red.neg(this || _global$d$1);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$d$1).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$d$1).red._verify1(this || _global$d$1);\n      return (this || _global$d$1).red.pow(this || _global$d$1, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$d$1).name = name2;\n      (this || _global$d$1).p = new BN(p5, 16);\n      (this || _global$d$1).n = (this || _global$d$1).p.bitLength();\n      (this || _global$d$1).k = new BN(1).iushln((this || _global$d$1).n).isub((this || _global$d$1).p);\n      (this || _global$d$1).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$d$1).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$d$1).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$d$1).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$d$1).n);\n      var cmp = rlen < (this || _global$d$1).n ? -1 : r5.ucmp((this || _global$d$1).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$d$1).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$d$1).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$d$1).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$d$1, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$d$1, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$d$1, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$d$1, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$d$1).m = prime.p;\n        (this || _global$d$1).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$d$1).m = m4;\n        (this || _global$d$1).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$d$1).prime) return (this || _global$d$1).prime.ireduce(a5)._forceRed(this || _global$d$1);\n      return a5.umod((this || _global$d$1).m)._forceRed(this || _global$d$1);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$d$1).m.sub(a5)._forceRed(this || _global$d$1);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$d$1).m) >= 0) {\n        res.isub((this || _global$d$1).m);\n      }\n      return res._forceRed(this || _global$d$1);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$d$1).m) >= 0) {\n        res.isub((this || _global$d$1).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$d$1).m);\n      }\n      return res._forceRed(this || _global$d$1);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$d$1).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$d$1).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$d$1).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$d$1).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$d$1);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$d$1).m.subn(1).iushrn(1);\n      var z4 = (this || _global$d$1).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$d$1);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$d$1).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$d$1);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$d$1);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$d$1).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$d$1, m4);\n      (this || _global$d$1).shift = (this || _global$d$1).m.bitLength();\n      if ((this || _global$d$1).shift % 26 !== 0) {\n        (this || _global$d$1).shift += 26 - (this || _global$d$1).shift % 26;\n      }\n      (this || _global$d$1).r = new BN(1).iushln((this || _global$d$1).shift);\n      (this || _global$d$1).r2 = this.imod((this || _global$d$1).r.sqr());\n      (this || _global$d$1).rinv = (this || _global$d$1).r._invmp((this || _global$d$1).m);\n      (this || _global$d$1).minv = (this || _global$d$1).rinv.mul((this || _global$d$1).r).isubn(1).div((this || _global$d$1).m);\n      (this || _global$d$1).minv = (this || _global$d$1).minv.umod((this || _global$d$1).r);\n      (this || _global$d$1).minv = (this || _global$d$1).r.sub((this || _global$d$1).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$d$1).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$d$1).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$d$1).shift).mul((this || _global$d$1).minv).imaskn((this || _global$d$1).shift).mul((this || _global$d$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$d$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$d$1).m) >= 0) {\n        res = u5.isub((this || _global$d$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$d$1).m);\n      }\n      return res._forceRed(this || _global$d$1);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$d$1);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$d$1).shift).mul((this || _global$d$1).minv).imaskn((this || _global$d$1).shift).mul((this || _global$d$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$d$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$d$1).m) >= 0) {\n        res = u5.isub((this || _global$d$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$d$1).m);\n      }\n      return res._forceRed(this || _global$d$1);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$d$1).m).mul((this || _global$d$1).r2));\n      return res._forceRed(this || _global$d$1);\n    };\n  })(module$6, exports$13$1);\n  return module$6.exports;\n}\nvar exports$12$1 = {};\nvar _dewExec$11$1 = false;\nvar module$5 = {\n  exports: exports$12$1\n};\nvar _global$c$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$11$1() {\n  if (_dewExec$11$1) return module$5.exports;\n  _dewExec$11$1 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$c$1).negative = 0;\n      (this || _global$c$1).words = null;\n      (this || _global$c$1).length = 0;\n      (this || _global$c$1).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = e$1$1.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$c$1).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$c$1).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$c$1).words = [number & 67108863];\n        (this || _global$c$1).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$c$1).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$c$1).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$c$1).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$c$1).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$c$1).words = [0];\n        (this || _global$c$1).length = 1;\n        return this || _global$c$1;\n      }\n      (this || _global$c$1).length = Math.ceil(number.length / 3);\n      (this || _global$c$1).words = new Array((this || _global$c$1).length);\n      for (var i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n        (this || _global$c$1).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$c$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$c$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$c$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$c$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$c$1).length = Math.ceil((number.length - start) / 6);\n      (this || _global$c$1).words = new Array((this || _global$c$1).length);\n      for (var i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n        (this || _global$c$1).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$c$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$c$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$c$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$c$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$c$1).words = [0];\n      (this || _global$c$1).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$c$1).words[0] + word < 67108864) {\n          (this || _global$c$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$c$1).words[0] + word < 67108864) {\n          (this || _global$c$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$c$1).length);\n      for (var i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n        dest.words[i5] = (this || _global$c$1).words[i5];\n      }\n      dest.length = (this || _global$c$1).length;\n      dest.negative = (this || _global$c$1).negative;\n      dest.red = (this || _global$c$1).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$c$1).length < size) {\n        (this || _global$c$1).words[(this || _global$c$1).length++] = 0;\n      }\n      return this || _global$c$1;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$c$1).length > 1 && (this || _global$c$1).words[(this || _global$c$1).length - 1] === 0) {\n        (this || _global$c$1).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$c$1).length === 1 && (this || _global$c$1).words[0] === 0) {\n        (this || _global$c$1).negative = 0;\n      }\n      return this || _global$c$1;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$c$1).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n          var w4 = (this || _global$c$1).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$c$1).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$c$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$c$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$c$1).words[0];\n      if ((this || _global$c$1).length === 2) {\n        ret += (this || _global$c$1).words[1] * 67108864;\n      } else if ((this || _global$c$1).length === 3 && (this || _global$c$1).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$c$1).words[1] * 67108864;\n      } else if ((this || _global$c$1).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$c$1).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$c$1).words[(this || _global$c$1).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$c$1).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n        var b4 = this._zeroBits((this || _global$c$1).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$c$1).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$c$1).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$c$1).negative ^= 1;\n      }\n      return this || _global$c$1;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$c$1).length < num.length) {\n        (this || _global$c$1).words[(this || _global$c$1).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$c$1).words[i5] = (this || _global$c$1).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$c$1).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$c$1).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$c$1);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$c$1).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$c$1);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$c$1).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$c$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$c$1).words[i5] = (this || _global$c$1).words[i5] & num.words[i5];\n      }\n      (this || _global$c$1).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$c$1).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$c$1).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$c$1);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$c$1).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$c$1);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$c$1).length > num.length) {\n        a5 = this || _global$c$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$c$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$c$1).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$c$1) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$c$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$c$1).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$c$1).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$c$1).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$c$1);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$c$1).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$c$1);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$c$1).words[i5] = ~(this || _global$c$1).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$c$1).words[i5] = ~(this || _global$c$1).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$c$1).words[off2] = (this || _global$c$1).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$c$1).words[off2] = (this || _global$c$1).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$c$1).negative !== 0 && num.negative === 0) {\n        (this || _global$c$1).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$c$1).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$c$1).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$c$1).length > num.length) {\n        a5 = this || _global$c$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$c$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$c$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$c$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$c$1).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$c$1).words[(this || _global$c$1).length] = carry;\n        (this || _global$c$1).length++;\n      } else if (a5 !== (this || _global$c$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$c$1).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$c$1;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$c$1).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$c$1).negative !== 0) {\n        (this || _global$c$1).negative = 0;\n        res = num.sub(this || _global$c$1);\n        (this || _global$c$1).negative = 1;\n        return res;\n      }\n      if ((this || _global$c$1).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$c$1);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$c$1).negative !== 0) {\n        (this || _global$c$1).negative = 0;\n        this.iadd(num);\n        (this || _global$c$1).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$c$1).negative = 0;\n        (this || _global$c$1).length = 1;\n        (this || _global$c$1).words[0] = 0;\n        return this || _global$c$1;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$c$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$c$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$c$1).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$c$1).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$c$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$c$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$c$1).length = Math.max((this || _global$c$1).length, i5);\n      if (a5 !== (this || _global$c$1)) {\n        (this || _global$c$1).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$c$1).length + num.length;\n      if ((this || _global$c$1).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$c$1, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$c$1, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$c$1, num, out);\n      } else {\n        res = jumboMulTo(this || _global$c$1, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$c$1).x = x4;\n      (this || _global$c$1).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$c$1).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$c$1).length + num.length);\n      return jumboMulTo(this || _global$c$1, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$c$1);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n        var w4 = ((this || _global$c$1).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$c$1).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$c$1).words[i5] = carry;\n        (this || _global$c$1).length++;\n      }\n      return this || _global$c$1;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$c$1);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$c$1;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n          var newCarry = (this || _global$c$1).words[i5] & carryMask;\n          var c5 = ((this || _global$c$1).words[i5] | 0) - newCarry << r5;\n          (this || _global$c$1).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$c$1).words[i5] = carry;\n          (this || _global$c$1).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$c$1).length - 1; i5 >= 0; i5--) {\n          (this || _global$c$1).words[i5 + s5] = (this || _global$c$1).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$c$1).words[i5] = 0;\n        }\n        (this || _global$c$1).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$c$1).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$c$1).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$c$1).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$c$1).length > s5) {\n        (this || _global$c$1).length -= s5;\n        for (i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n          (this || _global$c$1).words[i5] = (this || _global$c$1).words[i5 + s5];\n        }\n      } else {\n        (this || _global$c$1).words[0] = 0;\n        (this || _global$c$1).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$c$1).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$c$1).words[i5] | 0;\n        (this || _global$c$1).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$c$1).length === 0) {\n        (this || _global$c$1).words[0] = 0;\n        (this || _global$c$1).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$c$1).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$c$1).length <= s5) return false;\n      var w4 = (this || _global$c$1).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$c$1).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$c$1).length <= s5) {\n        return this || _global$c$1;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$c$1).length = Math.min(s5, (this || _global$c$1).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$c$1).words[(this || _global$c$1).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$c$1).negative !== 0) {\n        if ((this || _global$c$1).length === 1 && ((this || _global$c$1).words[0] | 0) < num) {\n          (this || _global$c$1).words[0] = num - ((this || _global$c$1).words[0] | 0);\n          (this || _global$c$1).negative = 0;\n          return this || _global$c$1;\n        }\n        (this || _global$c$1).negative = 0;\n        this.isubn(num);\n        (this || _global$c$1).negative = 1;\n        return this || _global$c$1;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$c$1).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$c$1).length && (this || _global$c$1).words[i5] >= 67108864; i5++) {\n        (this || _global$c$1).words[i5] -= 67108864;\n        if (i5 === (this || _global$c$1).length - 1) {\n          (this || _global$c$1).words[i5 + 1] = 1;\n        } else {\n          (this || _global$c$1).words[i5 + 1]++;\n        }\n      }\n      (this || _global$c$1).length = Math.max((this || _global$c$1).length, i5 + 1);\n      return this || _global$c$1;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$c$1).negative !== 0) {\n        (this || _global$c$1).negative = 0;\n        this.iaddn(num);\n        (this || _global$c$1).negative = 1;\n        return this || _global$c$1;\n      }\n      (this || _global$c$1).words[0] -= num;\n      if ((this || _global$c$1).length === 1 && (this || _global$c$1).words[0] < 0) {\n        (this || _global$c$1).words[0] = -(this || _global$c$1).words[0];\n        (this || _global$c$1).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$c$1).length && (this || _global$c$1).words[i5] < 0; i5++) {\n          (this || _global$c$1).words[i5] += 67108864;\n          (this || _global$c$1).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$c$1).negative = 0;\n      return this || _global$c$1;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$c$1).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$c$1).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$c$1).length - shift; i5++) {\n        w4 = ((this || _global$c$1).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$c$1).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$c$1).length; i5++) {\n        w4 = -((this || _global$c$1).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$c$1).words[i5] = w4 & 67108863;\n      }\n      (this || _global$c$1).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$c$1).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$c$1).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$c$1).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$c$1).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$c$1).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$c$1\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$c$1).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$c$1).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$c$1).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$c$1).words[i5] | 0) + carry * 67108864;\n        (this || _global$c$1).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$c$1;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$c$1;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$c$1).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$c$1).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$c$1).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$c$1).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$c$1).words[s5] |= q3;\n        return this || _global$c$1;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$c$1).length; i5++) {\n        var w4 = (this || _global$c$1).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$c$1).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$c$1).words[i5] = carry;\n        (this || _global$c$1).length++;\n      }\n      return this || _global$c$1;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$c$1).length === 1 && (this || _global$c$1).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$c$1).negative !== 0 && !negative) return -1;\n      if ((this || _global$c$1).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$c$1).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$c$1).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$c$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$c$1).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$c$1).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$c$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$c$1).length > num.length) return 1;\n      if ((this || _global$c$1).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$c$1).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$c$1).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$c$1).red, \"Already a number in reduction context\");\n      assert2((this || _global$c$1).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$c$1)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$c$1).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$c$1).red.convertFrom(this || _global$c$1);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$c$1).red = ctx;\n      return this || _global$c$1;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$c$1).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$c$1).red, \"redAdd works only with red numbers\");\n      return (this || _global$c$1).red.add(this || _global$c$1, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$c$1).red, \"redIAdd works only with red numbers\");\n      return (this || _global$c$1).red.iadd(this || _global$c$1, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$c$1).red, \"redSub works only with red numbers\");\n      return (this || _global$c$1).red.sub(this || _global$c$1, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$c$1).red, \"redISub works only with red numbers\");\n      return (this || _global$c$1).red.isub(this || _global$c$1, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$c$1).red, \"redShl works only with red numbers\");\n      return (this || _global$c$1).red.shl(this || _global$c$1, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$c$1).red, \"redMul works only with red numbers\");\n      (this || _global$c$1).red._verify2(this || _global$c$1, num);\n      return (this || _global$c$1).red.mul(this || _global$c$1, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$c$1).red, \"redMul works only with red numbers\");\n      (this || _global$c$1).red._verify2(this || _global$c$1, num);\n      return (this || _global$c$1).red.imul(this || _global$c$1, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$c$1).red, \"redSqr works only with red numbers\");\n      (this || _global$c$1).red._verify1(this || _global$c$1);\n      return (this || _global$c$1).red.sqr(this || _global$c$1);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$c$1).red, \"redISqr works only with red numbers\");\n      (this || _global$c$1).red._verify1(this || _global$c$1);\n      return (this || _global$c$1).red.isqr(this || _global$c$1);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$c$1).red, \"redSqrt works only with red numbers\");\n      (this || _global$c$1).red._verify1(this || _global$c$1);\n      return (this || _global$c$1).red.sqrt(this || _global$c$1);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$c$1).red, \"redInvm works only with red numbers\");\n      (this || _global$c$1).red._verify1(this || _global$c$1);\n      return (this || _global$c$1).red.invm(this || _global$c$1);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$c$1).red, \"redNeg works only with red numbers\");\n      (this || _global$c$1).red._verify1(this || _global$c$1);\n      return (this || _global$c$1).red.neg(this || _global$c$1);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$c$1).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$c$1).red._verify1(this || _global$c$1);\n      return (this || _global$c$1).red.pow(this || _global$c$1, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$c$1).name = name2;\n      (this || _global$c$1).p = new BN(p5, 16);\n      (this || _global$c$1).n = (this || _global$c$1).p.bitLength();\n      (this || _global$c$1).k = new BN(1).iushln((this || _global$c$1).n).isub((this || _global$c$1).p);\n      (this || _global$c$1).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$c$1).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$c$1).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$c$1).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$c$1).n);\n      var cmp = rlen < (this || _global$c$1).n ? -1 : r5.ucmp((this || _global$c$1).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$c$1).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$c$1).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$c$1).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$c$1, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$c$1, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$c$1, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$c$1, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$c$1).m = prime.p;\n        (this || _global$c$1).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$c$1).m = m4;\n        (this || _global$c$1).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$c$1).prime) return (this || _global$c$1).prime.ireduce(a5)._forceRed(this || _global$c$1);\n      return a5.umod((this || _global$c$1).m)._forceRed(this || _global$c$1);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$c$1).m.sub(a5)._forceRed(this || _global$c$1);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$c$1).m) >= 0) {\n        res.isub((this || _global$c$1).m);\n      }\n      return res._forceRed(this || _global$c$1);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$c$1).m) >= 0) {\n        res.isub((this || _global$c$1).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$c$1).m);\n      }\n      return res._forceRed(this || _global$c$1);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$c$1).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$c$1).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$c$1).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$c$1).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$c$1);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$c$1).m.subn(1).iushrn(1);\n      var z4 = (this || _global$c$1).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$c$1);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$c$1).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$c$1);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$c$1);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$c$1).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$c$1, m4);\n      (this || _global$c$1).shift = (this || _global$c$1).m.bitLength();\n      if ((this || _global$c$1).shift % 26 !== 0) {\n        (this || _global$c$1).shift += 26 - (this || _global$c$1).shift % 26;\n      }\n      (this || _global$c$1).r = new BN(1).iushln((this || _global$c$1).shift);\n      (this || _global$c$1).r2 = this.imod((this || _global$c$1).r.sqr());\n      (this || _global$c$1).rinv = (this || _global$c$1).r._invmp((this || _global$c$1).m);\n      (this || _global$c$1).minv = (this || _global$c$1).rinv.mul((this || _global$c$1).r).isubn(1).div((this || _global$c$1).m);\n      (this || _global$c$1).minv = (this || _global$c$1).minv.umod((this || _global$c$1).r);\n      (this || _global$c$1).minv = (this || _global$c$1).r.sub((this || _global$c$1).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$c$1).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$c$1).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$c$1).shift).mul((this || _global$c$1).minv).imaskn((this || _global$c$1).shift).mul((this || _global$c$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$c$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$c$1).m) >= 0) {\n        res = u5.isub((this || _global$c$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$c$1).m);\n      }\n      return res._forceRed(this || _global$c$1);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$c$1);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$c$1).shift).mul((this || _global$c$1).minv).imaskn((this || _global$c$1).shift).mul((this || _global$c$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$c$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$c$1).m) >= 0) {\n        res = u5.isub((this || _global$c$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$c$1).m);\n      }\n      return res._forceRed(this || _global$c$1);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$c$1).m).mul((this || _global$c$1).r2));\n      return res._forceRed(this || _global$c$1);\n    };\n  })(module$5, exports$12$1);\n  return module$5.exports;\n}\nvar _global$b$1 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar exports$11$1 = {};\nvar indexOf2 = function(e7, t5) {\n  if (e7.indexOf) return e7.indexOf(t5);\n  for (var n5 = 0; n5 < e7.length; n5++) if (e7[n5] === t5) return n5;\n  return -1;\n};\nvar Object_keys2 = function(e7) {\n  if (Object.keys) return Object.keys(e7);\n  var t5 = [];\n  for (var n5 in e7) t5.push(n5);\n  return t5;\n};\nvar forEach2 = function(e7, t5) {\n  if (e7.forEach) return e7.forEach(t5);\n  for (var n5 = 0; n5 < e7.length; n5++) t5(e7[n5], n5, e7);\n};\nvar defineProp2 = (function() {\n  try {\n    return Object.defineProperty({}, \"_\", {}), function(e7, t5, n5) {\n      Object.defineProperty(e7, t5, { writable: true, enumerable: false, configurable: true, value: n5 });\n    };\n  } catch (e7) {\n    return function(e8, t5, n5) {\n      e8[t5] = n5;\n    };\n  }\n})();\nvar globals2 = [\"Array\", \"Boolean\", \"Date\", \"Error\", \"EvalError\", \"Function\", \"Infinity\", \"JSON\", \"Math\", \"NaN\", \"Number\", \"Object\", \"RangeError\", \"ReferenceError\", \"RegExp\", \"String\", \"SyntaxError\", \"TypeError\", \"URIError\", \"decodeURI\", \"decodeURIComponent\", \"encodeURI\", \"encodeURIComponent\", \"escape\", \"eval\", \"isFinite\", \"isNaN\", \"parseFloat\", \"parseInt\", \"undefined\", \"unescape\"];\nfunction Context2() {\n}\nContext2.prototype = {};\nvar Script3 = exports$11$1.Script = function(e7) {\n  if (!((this || _global$b$1) instanceof Script3)) return new Script3(e7);\n  (this || _global$b$1).code = e7;\n};\nScript3.prototype.runInContext = function(e7) {\n  if (!(e7 instanceof Context2)) throw new TypeError(\"needs a 'context' argument.\");\n  var t5 = document.createElement(\"iframe\");\n  t5.style || (t5.style = {}), t5.style.display = \"none\", document.body.appendChild(t5);\n  var n5 = t5.contentWindow, r5 = n5.eval, o5 = n5.execScript;\n  !r5 && o5 && (o5.call(n5, \"null\"), r5 = n5.eval), forEach2(Object_keys2(e7), (function(t6) {\n    n5[t6] = e7[t6];\n  })), forEach2(globals2, (function(t6) {\n    e7[t6] && (n5[t6] = e7[t6]);\n  }));\n  var c5 = Object_keys2(n5), i5 = r5.call(n5, (this || _global$b$1).code);\n  return forEach2(Object_keys2(n5), (function(t6) {\n    (t6 in e7 || -1 === indexOf2(c5, t6)) && (e7[t6] = n5[t6]);\n  })), forEach2(globals2, (function(t6) {\n    t6 in e7 || defineProp2(e7, t6, n5[t6]);\n  })), document.body.removeChild(t5), i5;\n}, Script3.prototype.runInThisContext = function() {\n  return (0,eval)((this || _global$b$1).code);\n}, Script3.prototype.runInNewContext = function(e7) {\n  var t5 = Script3.createContext(e7), n5 = this.runInContext(t5);\n  return e7 && forEach2(Object_keys2(t5), (function(n6) {\n    e7[n6] = t5[n6];\n  })), n5;\n}, forEach2(Object_keys2(Script3.prototype), (function(e7) {\n  exports$11$1[e7] = Script3[e7] = function(t5) {\n    var n5 = Script3(t5);\n    return n5[e7].apply(n5, [].slice.call(arguments, 1));\n  };\n})), exports$11$1.isContext = function(e7) {\n  return e7 instanceof Context2;\n}, exports$11$1.createScript = function(e7) {\n  return exports$11$1.Script(e7);\n}, exports$11$1.createContext = Script3.createContext = function(e7) {\n  var t5 = new Context2();\n  return \"object\" == typeof e7 && forEach2(Object_keys2(e7), (function(n5) {\n    t5[n5] = e7[n5];\n  })), t5;\n};\nexports$11$1.Script;\nexports$11$1.createContext;\nexports$11$1.createScript;\nexports$11$1.isContext;\nexports$11$1.runInContext;\nexports$11$1.runInNewContext;\nexports$11$1.runInThisContext;\nvar o4 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar n4 = T$1;\nvar t4 = u3.Buffer;\nvar f4 = o4.crypto || o4.msCrypto;\nvar a4 = f4 && f4.getRandomValues ? function(e7, r5) {\n  if (e7 > 4294967295) throw new RangeError(\"requested too many random bytes\");\n  var o5 = t4.allocUnsafe(e7);\n  if (e7 > 0) if (e7 > 65536) for (var a5 = 0; a5 < e7; a5 += 65536) f4.getRandomValues(o5.slice(a5, a5 + 65536));\n  else f4.getRandomValues(o5);\n  if (\"function\" == typeof r5) return n4.nextTick((function() {\n    r5(null, o5);\n  }));\n  return o5;\n} : function() {\n  throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\");\n};\nvar e6 = u3.Buffer;\nvar o$13 = b$i.Transform;\nfunction s4(t5) {\n  o$13.call(this), this._block = e6.allocUnsafe(t5), this._blockSize = t5, this._blockOffset = 0, this._length = [0, 0, 0, 0], this._finalized = false;\n}\nt$2(s4, o$13), s4.prototype._transform = function(t5, i5, r5) {\n  var e7 = null;\n  try {\n    this.update(t5, i5);\n  } catch (t6) {\n    e7 = t6;\n  }\n  r5(e7);\n}, s4.prototype._flush = function(t5) {\n  var i5 = null;\n  try {\n    this.push(this.digest());\n  } catch (t6) {\n    i5 = t6;\n  }\n  t5(i5);\n}, s4.prototype.update = function(t5, i5) {\n  if (!(function(t6, i6) {\n    if (!e6.isBuffer(t6) && \"string\" != typeof t6) throw new TypeError(i6 + \" must be a string or a buffer\");\n  })(t5, \"Data\"), this._finalized) throw new Error(\"Digest already called\");\n  e6.isBuffer(t5) || (t5 = e6.from(t5, i5));\n  for (var r5 = this._block, o5 = 0; this._blockOffset + t5.length - o5 >= this._blockSize; ) {\n    for (var s5 = this._blockOffset; s5 < this._blockSize; ) r5[s5++] = t5[o5++];\n    this._update(), this._blockOffset = 0;\n  }\n  for (; o5 < t5.length; ) r5[this._blockOffset++] = t5[o5++];\n  for (var f6 = 0, n5 = 8 * t5.length; n5 > 0; ++f6) this._length[f6] += n5, (n5 = this._length[f6] / 4294967296 | 0) > 0 && (this._length[f6] -= 4294967296 * n5);\n  return this;\n}, s4.prototype._update = function() {\n  throw new Error(\"_update is not implemented\");\n}, s4.prototype.digest = function(t5) {\n  if (this._finalized) throw new Error(\"Digest already called\");\n  this._finalized = true;\n  var i5 = this._digest();\n  void 0 !== t5 && (i5 = i5.toString(t5)), this._block.fill(0), this._blockOffset = 0;\n  for (var r5 = 0; r5 < 4; ++r5) this._length[r5] = 0;\n  return i5;\n}, s4.prototype._digest = function() {\n  throw new Error(\"_digest is not implemented\");\n};\nvar f$13 = s4;\nvar h4 = t$2;\nvar r4 = f$13;\nvar _3 = u3.Buffer;\nvar e$13 = new Array(16);\nfunction n$13() {\n  r4.call(this, 64), this._a = 1732584193, this._b = 4023233417, this._c = 2562383102, this._d = 271733878;\n}\nfunction o$22(t5, i5) {\n  return t5 << i5 | t5 >>> 32 - i5;\n}\nfunction f$22(t5, i5, s5, h5, r5, _4, e7) {\n  return o$22(t5 + (i5 & s5 | ~i5 & h5) + r5 + _4 | 0, e7) + i5 | 0;\n}\nfunction c4(t5, i5, s5, h5, r5, _4, e7) {\n  return o$22(t5 + (i5 & h5 | s5 & ~h5) + r5 + _4 | 0, e7) + i5 | 0;\n}\nfunction a$12(t5, i5, s5, h5, r5, _4, e7) {\n  return o$22(t5 + (i5 ^ s5 ^ h5) + r5 + _4 | 0, e7) + i5 | 0;\n}\nfunction l4(t5, i5, s5, h5, r5, _4, e7) {\n  return o$22(t5 + (s5 ^ (i5 | ~h5)) + r5 + _4 | 0, e7) + i5 | 0;\n}\nh4(n$13, r4), n$13.prototype._update = function() {\n  for (var t5 = e$13, i5 = 0; i5 < 16; ++i5) t5[i5] = this._block.readInt32LE(4 * i5);\n  var s5 = this._a, h5 = this._b, r5 = this._c, _4 = this._d;\n  s5 = f$22(s5, h5, r5, _4, t5[0], 3614090360, 7), _4 = f$22(_4, s5, h5, r5, t5[1], 3905402710, 12), r5 = f$22(r5, _4, s5, h5, t5[2], 606105819, 17), h5 = f$22(h5, r5, _4, s5, t5[3], 3250441966, 22), s5 = f$22(s5, h5, r5, _4, t5[4], 4118548399, 7), _4 = f$22(_4, s5, h5, r5, t5[5], 1200080426, 12), r5 = f$22(r5, _4, s5, h5, t5[6], 2821735955, 17), h5 = f$22(h5, r5, _4, s5, t5[7], 4249261313, 22), s5 = f$22(s5, h5, r5, _4, t5[8], 1770035416, 7), _4 = f$22(_4, s5, h5, r5, t5[9], 2336552879, 12), r5 = f$22(r5, _4, s5, h5, t5[10], 4294925233, 17), h5 = f$22(h5, r5, _4, s5, t5[11], 2304563134, 22), s5 = f$22(s5, h5, r5, _4, t5[12], 1804603682, 7), _4 = f$22(_4, s5, h5, r5, t5[13], 4254626195, 12), r5 = f$22(r5, _4, s5, h5, t5[14], 2792965006, 17), s5 = c4(s5, h5 = f$22(h5, r5, _4, s5, t5[15], 1236535329, 22), r5, _4, t5[1], 4129170786, 5), _4 = c4(_4, s5, h5, r5, t5[6], 3225465664, 9), r5 = c4(r5, _4, s5, h5, t5[11], 643717713, 14), h5 = c4(h5, r5, _4, s5, t5[0], 3921069994, 20), s5 = c4(s5, h5, r5, _4, t5[5], 3593408605, 5), _4 = c4(_4, s5, h5, r5, t5[10], 38016083, 9), r5 = c4(r5, _4, s5, h5, t5[15], 3634488961, 14), h5 = c4(h5, r5, _4, s5, t5[4], 3889429448, 20), s5 = c4(s5, h5, r5, _4, t5[9], 568446438, 5), _4 = c4(_4, s5, h5, r5, t5[14], 3275163606, 9), r5 = c4(r5, _4, s5, h5, t5[3], 4107603335, 14), h5 = c4(h5, r5, _4, s5, t5[8], 1163531501, 20), s5 = c4(s5, h5, r5, _4, t5[13], 2850285829, 5), _4 = c4(_4, s5, h5, r5, t5[2], 4243563512, 9), r5 = c4(r5, _4, s5, h5, t5[7], 1735328473, 14), s5 = a$12(s5, h5 = c4(h5, r5, _4, s5, t5[12], 2368359562, 20), r5, _4, t5[5], 4294588738, 4), _4 = a$12(_4, s5, h5, r5, t5[8], 2272392833, 11), r5 = a$12(r5, _4, s5, h5, t5[11], 1839030562, 16), h5 = a$12(h5, r5, _4, s5, t5[14], 4259657740, 23), s5 = a$12(s5, h5, r5, _4, t5[1], 2763975236, 4), _4 = a$12(_4, s5, h5, r5, t5[4], 1272893353, 11), r5 = a$12(r5, _4, s5, h5, t5[7], 4139469664, 16), h5 = a$12(h5, r5, _4, s5, t5[10], 3200236656, 23), s5 = a$12(s5, h5, r5, _4, t5[13], 681279174, 4), _4 = a$12(_4, s5, h5, r5, t5[0], 3936430074, 11), r5 = a$12(r5, _4, s5, h5, t5[3], 3572445317, 16), h5 = a$12(h5, r5, _4, s5, t5[6], 76029189, 23), s5 = a$12(s5, h5, r5, _4, t5[9], 3654602809, 4), _4 = a$12(_4, s5, h5, r5, t5[12], 3873151461, 11), r5 = a$12(r5, _4, s5, h5, t5[15], 530742520, 16), s5 = l4(s5, h5 = a$12(h5, r5, _4, s5, t5[2], 3299628645, 23), r5, _4, t5[0], 4096336452, 6), _4 = l4(_4, s5, h5, r5, t5[7], 1126891415, 10), r5 = l4(r5, _4, s5, h5, t5[14], 2878612391, 15), h5 = l4(h5, r5, _4, s5, t5[5], 4237533241, 21), s5 = l4(s5, h5, r5, _4, t5[12], 1700485571, 6), _4 = l4(_4, s5, h5, r5, t5[3], 2399980690, 10), r5 = l4(r5, _4, s5, h5, t5[10], 4293915773, 15), h5 = l4(h5, r5, _4, s5, t5[1], 2240044497, 21), s5 = l4(s5, h5, r5, _4, t5[8], 1873313359, 6), _4 = l4(_4, s5, h5, r5, t5[15], 4264355552, 10), r5 = l4(r5, _4, s5, h5, t5[6], 2734768916, 15), h5 = l4(h5, r5, _4, s5, t5[13], 1309151649, 21), s5 = l4(s5, h5, r5, _4, t5[4], 4149444226, 6), _4 = l4(_4, s5, h5, r5, t5[11], 3174756917, 10), r5 = l4(r5, _4, s5, h5, t5[2], 718787259, 15), h5 = l4(h5, r5, _4, s5, t5[9], 3951481745, 21), this._a = this._a + s5 | 0, this._b = this._b + h5 | 0, this._c = this._c + r5 | 0, this._d = this._d + _4 | 0;\n}, n$13.prototype._digest = function() {\n  this._block[this._blockOffset++] = 128, this._blockOffset > 56 && (this._block.fill(0, this._blockOffset, 64), this._update(), this._blockOffset = 0), this._block.fill(0, this._blockOffset, 56), this._block.writeUInt32LE(this._length[0], 56), this._block.writeUInt32LE(this._length[1], 60), this._update();\n  var t5 = _3.allocUnsafe(16);\n  return t5.writeInt32LE(this._a, 0), t5.writeInt32LE(this._b, 4), t5.writeInt32LE(this._c, 8), t5.writeInt32LE(this._d, 12), t5;\n};\nvar u4 = n$13;\nvar h$12 = e$1$1.Buffer;\nvar _$1 = t$2;\nvar r$12 = f$13;\nvar e$22 = new Array(16);\nvar n$22 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar o$32 = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar f$3 = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar c$13 = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\nvar a$22 = [0, 1518500249, 1859775393, 2400959708, 2840853838];\nvar l$13 = [1352829926, 1548603684, 1836072691, 2053994217, 0];\nfunction u$13() {\n  r$12.call(this, 64), this._a = 1732584193, this._b = 4023233417, this._c = 2562383102, this._d = 271733878, this._e = 3285377520;\n}\nfunction b3(t5, i5) {\n  return t5 << i5 | t5 >>> 32 - i5;\n}\nfunction d3(t5, i5, s5, h5, _4, r5, e7, n5) {\n  return b3(t5 + (i5 ^ s5 ^ h5) + r5 + e7 | 0, n5) + _4 | 0;\n}\nfunction k3(t5, i5, s5, h5, _4, r5, e7, n5) {\n  return b3(t5 + (i5 & s5 | ~i5 & h5) + r5 + e7 | 0, n5) + _4 | 0;\n}\nfunction p4(t5, i5, s5, h5, _4, r5, e7, n5) {\n  return b3(t5 + ((i5 | ~s5) ^ h5) + r5 + e7 | 0, n5) + _4 | 0;\n}\nfunction w3(t5, i5, s5, h5, _4, r5, e7, n5) {\n  return b3(t5 + (i5 & h5 | s5 & ~h5) + r5 + e7 | 0, n5) + _4 | 0;\n}\nfunction E3(t5, i5, s5, h5, _4, r5, e7, n5) {\n  return b3(t5 + (i5 ^ (s5 | ~h5)) + r5 + e7 | 0, n5) + _4 | 0;\n}\n_$1(u$13, r$12), u$13.prototype._update = function() {\n  for (var t5 = e$22, i5 = 0; i5 < 16; ++i5) t5[i5] = this._block.readInt32LE(4 * i5);\n  for (var s5 = 0 | this._a, h5 = 0 | this._b, _4 = 0 | this._c, r5 = 0 | this._d, u5 = 0 | this._e, I4 = 0 | this._a, L4 = 0 | this._b, v5 = 0 | this._c, m4 = 0 | this._d, O4 = 0 | this._e, g4 = 0; g4 < 80; g4 += 1) {\n    var y5, U4;\n    g4 < 16 ? (y5 = d3(s5, h5, _4, r5, u5, t5[n$22[g4]], a$22[0], f$3[g4]), U4 = E3(I4, L4, v5, m4, O4, t5[o$32[g4]], l$13[0], c$13[g4])) : g4 < 32 ? (y5 = k3(s5, h5, _4, r5, u5, t5[n$22[g4]], a$22[1], f$3[g4]), U4 = w3(I4, L4, v5, m4, O4, t5[o$32[g4]], l$13[1], c$13[g4])) : g4 < 48 ? (y5 = p4(s5, h5, _4, r5, u5, t5[n$22[g4]], a$22[2], f$3[g4]), U4 = p4(I4, L4, v5, m4, O4, t5[o$32[g4]], l$13[2], c$13[g4])) : g4 < 64 ? (y5 = w3(s5, h5, _4, r5, u5, t5[n$22[g4]], a$22[3], f$3[g4]), U4 = k3(I4, L4, v5, m4, O4, t5[o$32[g4]], l$13[3], c$13[g4])) : (y5 = E3(s5, h5, _4, r5, u5, t5[n$22[g4]], a$22[4], f$3[g4]), U4 = d3(I4, L4, v5, m4, O4, t5[o$32[g4]], l$13[4], c$13[g4])), s5 = u5, u5 = r5, r5 = b3(_4, 10), _4 = h5, h5 = y5, I4 = O4, O4 = m4, m4 = b3(v5, 10), v5 = L4, L4 = U4;\n  }\n  var x4 = this._b + _4 + m4 | 0;\n  this._b = this._c + r5 + O4 | 0, this._c = this._d + u5 + I4 | 0, this._d = this._e + s5 + L4 | 0, this._e = this._a + h5 + v5 | 0, this._a = x4;\n}, u$13.prototype._digest = function() {\n  this._block[this._blockOffset++] = 128, this._blockOffset > 56 && (this._block.fill(0, this._blockOffset, 64), this._update(), this._blockOffset = 0), this._block.fill(0, this._blockOffset, 56), this._block.writeUInt32LE(this._length[0], 56), this._block.writeUInt32LE(this._length[1], 60), this._update();\n  var t5 = h$12.alloc ? h$12.alloc(20) : new h$12(20);\n  return t5.writeInt32LE(this._a, 0), t5.writeInt32LE(this._b, 4), t5.writeInt32LE(this._c, 8), t5.writeInt32LE(this._d, 12), t5.writeInt32LE(this._e, 16), t5;\n};\nvar I3 = u$13;\nvar s$13 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar h$2 = u3.Buffer;\nfunction e$3(t5, i5) {\n  (this || s$13)._block = h$2.alloc(t5), (this || s$13)._finalSize = i5, (this || s$13)._blockSize = t5, (this || s$13)._len = 0;\n}\ne$3.prototype.update = function(t5, i5) {\n  \"string\" == typeof t5 && (i5 = i5 || \"utf8\", t5 = h$2.from(t5, i5));\n  for (var e7 = (this || s$13)._block, _4 = (this || s$13)._blockSize, n5 = t5.length, r5 = (this || s$13)._len, o5 = 0; o5 < n5; ) {\n    for (var f6 = r5 % _4, l5 = Math.min(n5 - o5, _4 - f6), a5 = 0; a5 < l5; a5++) e7[f6 + a5] = t5[o5 + a5];\n    o5 += l5, (r5 += l5) % _4 == 0 && this._update(e7);\n  }\n  return (this || s$13)._len += n5, this || s$13;\n}, e$3.prototype.digest = function(t5) {\n  var i5 = (this || s$13)._len % (this || s$13)._blockSize;\n  (this || s$13)._block[i5] = 128, (this || s$13)._block.fill(0, i5 + 1), i5 >= (this || s$13)._finalSize && (this._update((this || s$13)._block), (this || s$13)._block.fill(0));\n  var h5 = 8 * (this || s$13)._len;\n  if (h5 <= 4294967295) (this || s$13)._block.writeUInt32BE(h5, (this || s$13)._blockSize - 4);\n  else {\n    var e7 = (4294967295 & h5) >>> 0, _4 = (h5 - e7) / 4294967296;\n    (this || s$13)._block.writeUInt32BE(_4, (this || s$13)._blockSize - 8), (this || s$13)._block.writeUInt32BE(e7, (this || s$13)._blockSize - 4);\n  }\n  this._update((this || s$13)._block);\n  var n5 = this._hash();\n  return t5 ? n5.toString(t5) : n5;\n}, e$3.prototype._update = function() {\n  throw new Error(\"_update must be implemented by subclass\");\n};\nvar _$2 = e$3;\nvar n$3 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar r$22 = t$2;\nvar o$4 = _$2;\nvar f$4 = u3.Buffer;\nvar l$22 = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298];\nvar a$3 = new Array(64);\nfunction u$23() {\n  this.init(), (this || n$3)._w = a$3, o$4.call(this || n$3, 64, 56);\n}\nfunction c$22(t5, i5, s5) {\n  return s5 ^ t5 & (i5 ^ s5);\n}\nfunction b$1(t5, i5, s5) {\n  return t5 & i5 | s5 & (t5 | i5);\n}\nfunction p$12(t5) {\n  return (t5 >>> 2 | t5 << 30) ^ (t5 >>> 13 | t5 << 19) ^ (t5 >>> 22 | t5 << 10);\n}\nfunction d$12(t5) {\n  return (t5 >>> 6 | t5 << 26) ^ (t5 >>> 11 | t5 << 21) ^ (t5 >>> 25 | t5 << 7);\n}\nfunction k$1(t5) {\n  return (t5 >>> 7 | t5 << 25) ^ (t5 >>> 18 | t5 << 14) ^ t5 >>> 3;\n}\nr$22(u$23, o$4), u$23.prototype.init = function() {\n  return (this || n$3)._a = 1779033703, (this || n$3)._b = 3144134277, (this || n$3)._c = 1013904242, (this || n$3)._d = 2773480762, (this || n$3)._e = 1359893119, (this || n$3)._f = 2600822924, (this || n$3)._g = 528734635, (this || n$3)._h = 1541459225, this || n$3;\n}, u$23.prototype._update = function(t5) {\n  for (var i5, s5 = (this || n$3)._w, h5 = 0 | (this || n$3)._a, e7 = 0 | (this || n$3)._b, _4 = 0 | (this || n$3)._c, r5 = 0 | (this || n$3)._d, o5 = 0 | (this || n$3)._e, f6 = 0 | (this || n$3)._f, a5 = 0 | (this || n$3)._g, u5 = 0 | (this || n$3)._h, w4 = 0; w4 < 16; ++w4) s5[w4] = t5.readInt32BE(4 * w4);\n  for (; w4 < 64; ++w4) s5[w4] = 0 | (((i5 = s5[w4 - 2]) >>> 17 | i5 << 15) ^ (i5 >>> 19 | i5 << 13) ^ i5 >>> 10) + s5[w4 - 7] + k$1(s5[w4 - 15]) + s5[w4 - 16];\n  for (var g4 = 0; g4 < 64; ++g4) {\n    var B4 = u5 + d$12(o5) + c$22(o5, f6, a5) + l$22[g4] + s5[g4] | 0, v5 = p$12(h5) + b$1(h5, e7, _4) | 0;\n    u5 = a5, a5 = f6, f6 = o5, o5 = r5 + B4 | 0, r5 = _4, _4 = e7, e7 = h5, h5 = B4 + v5 | 0;\n  }\n  (this || n$3)._a = h5 + (this || n$3)._a | 0, (this || n$3)._b = e7 + (this || n$3)._b | 0, (this || n$3)._c = _4 + (this || n$3)._c | 0, (this || n$3)._d = r5 + (this || n$3)._d | 0, (this || n$3)._e = o5 + (this || n$3)._e | 0, (this || n$3)._f = f6 + (this || n$3)._f | 0, (this || n$3)._g = a5 + (this || n$3)._g | 0, (this || n$3)._h = u5 + (this || n$3)._h | 0;\n}, u$23.prototype._hash = function() {\n  var t5 = f$4.allocUnsafe(32);\n  return t5.writeInt32BE((this || n$3)._a, 0), t5.writeInt32BE((this || n$3)._b, 4), t5.writeInt32BE((this || n$3)._c, 8), t5.writeInt32BE((this || n$3)._d, 12), t5.writeInt32BE((this || n$3)._e, 16), t5.writeInt32BE((this || n$3)._f, 20), t5.writeInt32BE((this || n$3)._g, 24), t5.writeInt32BE((this || n$3)._h, 28), t5;\n};\nvar w$1 = u$23;\nvar _$3 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar e$4 = t$2;\nvar n$4 = _$2;\nvar r$3 = u3.Buffer;\nvar l$3 = [1518500249, 1859775393, -1894007588, -899497514];\nvar o$5 = new Array(80);\nfunction f$5() {\n  this.init(), (this || _$3)._w = o$5, n$4.call(this || _$3, 64, 56);\n}\nfunction a$4(t5) {\n  return t5 << 30 | t5 >>> 2;\n}\nfunction u$3(t5, i5, h5, s5) {\n  return 0 === t5 ? i5 & h5 | ~i5 & s5 : 2 === t5 ? i5 & h5 | i5 & s5 | h5 & s5 : i5 ^ h5 ^ s5;\n}\ne$4(f$5, n$4), f$5.prototype.init = function() {\n  return (this || _$3)._a = 1732584193, (this || _$3)._b = 4023233417, (this || _$3)._c = 2562383102, (this || _$3)._d = 271733878, (this || _$3)._e = 3285377520, this || _$3;\n}, f$5.prototype._update = function(t5) {\n  for (var i5, h5 = (this || _$3)._w, s5 = 0 | (this || _$3)._a, e7 = 0 | (this || _$3)._b, n5 = 0 | (this || _$3)._c, r5 = 0 | (this || _$3)._d, o5 = 0 | (this || _$3)._e, f6 = 0; f6 < 16; ++f6) h5[f6] = t5.readInt32BE(4 * f6);\n  for (; f6 < 80; ++f6) h5[f6] = h5[f6 - 3] ^ h5[f6 - 8] ^ h5[f6 - 14] ^ h5[f6 - 16];\n  for (var c5 = 0; c5 < 80; ++c5) {\n    var d4 = ~~(c5 / 20), p5 = 0 | ((i5 = s5) << 5 | i5 >>> 27) + u$3(d4, e7, n5, r5) + o5 + h5[c5] + l$3[d4];\n    o5 = r5, r5 = n5, n5 = a$4(e7), e7 = s5, s5 = p5;\n  }\n  (this || _$3)._a = s5 + (this || _$3)._a | 0, (this || _$3)._b = e7 + (this || _$3)._b | 0, (this || _$3)._c = n5 + (this || _$3)._c | 0, (this || _$3)._d = r5 + (this || _$3)._d | 0, (this || _$3)._e = o5 + (this || _$3)._e | 0;\n}, f$5.prototype._hash = function() {\n  var t5 = r$3.allocUnsafe(20);\n  return t5.writeInt32BE(0 | (this || _$3)._a, 0), t5.writeInt32BE(0 | (this || _$3)._b, 4), t5.writeInt32BE(0 | (this || _$3)._c, 8), t5.writeInt32BE(0 | (this || _$3)._d, 12), t5.writeInt32BE(0 | (this || _$3)._e, 16), t5;\n};\nvar c$3 = f$5;\nvar d$2 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar p$2 = t$2;\nvar b$2 = _$2;\nvar w$2 = u3.Buffer;\nvar g3 = [1518500249, 1859775393, -1894007588, -899497514];\nvar B3 = new Array(80);\nfunction y4() {\n  this.init(), (this || d$2)._w = B3, b$2.call(this || d$2, 64, 56);\n}\nfunction E$1(t5) {\n  return t5 << 5 | t5 >>> 27;\n}\nfunction I$1(t5) {\n  return t5 << 30 | t5 >>> 2;\n}\nfunction v4(t5, i5, h5, s5) {\n  return 0 === t5 ? i5 & h5 | ~i5 & s5 : 2 === t5 ? i5 & h5 | i5 & s5 | h5 & s5 : i5 ^ h5 ^ s5;\n}\np$2(y4, b$2), y4.prototype.init = function() {\n  return (this || d$2)._a = 1732584193, (this || d$2)._b = 4023233417, (this || d$2)._c = 2562383102, (this || d$2)._d = 271733878, (this || d$2)._e = 3285377520, this || d$2;\n}, y4.prototype._update = function(t5) {\n  for (var i5, h5 = (this || d$2)._w, s5 = 0 | (this || d$2)._a, _4 = 0 | (this || d$2)._b, e7 = 0 | (this || d$2)._c, n5 = 0 | (this || d$2)._d, r5 = 0 | (this || d$2)._e, l5 = 0; l5 < 16; ++l5) h5[l5] = t5.readInt32BE(4 * l5);\n  for (; l5 < 80; ++l5) h5[l5] = (i5 = h5[l5 - 3] ^ h5[l5 - 8] ^ h5[l5 - 14] ^ h5[l5 - 16]) << 1 | i5 >>> 31;\n  for (var o5 = 0; o5 < 80; ++o5) {\n    var f6 = ~~(o5 / 20), a5 = E$1(s5) + v4(f6, _4, e7, n5) + r5 + h5[o5] + g3[f6] | 0;\n    r5 = n5, n5 = e7, e7 = I$1(_4), _4 = s5, s5 = a5;\n  }\n  (this || d$2)._a = s5 + (this || d$2)._a | 0, (this || d$2)._b = _4 + (this || d$2)._b | 0, (this || d$2)._c = e7 + (this || d$2)._c | 0, (this || d$2)._d = n5 + (this || d$2)._d | 0, (this || d$2)._e = r5 + (this || d$2)._e | 0;\n}, y4.prototype._hash = function() {\n  var t5 = w$2.allocUnsafe(20);\n  return t5.writeInt32BE(0 | (this || d$2)._a, 0), t5.writeInt32BE(0 | (this || d$2)._b, 4), t5.writeInt32BE(0 | (this || d$2)._c, 8), t5.writeInt32BE(0 | (this || d$2)._d, 12), t5.writeInt32BE(0 | (this || d$2)._e, 16), t5;\n};\nvar T3 = y4;\nvar m3 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar A3 = t$2;\nvar U3 = w$1;\nvar x3 = _$2;\nvar j3 = u3.Buffer;\nvar q2 = new Array(64);\nfunction C3() {\n  this.init(), (this || m3)._w = q2, x3.call(this || m3, 64, 56);\n}\nA3(C3, U3), C3.prototype.init = function() {\n  return (this || m3)._a = 3238371032, (this || m3)._b = 914150663, (this || m3)._c = 812702999, (this || m3)._d = 4144912697, (this || m3)._e = 4290775857, (this || m3)._f = 1750603025, (this || m3)._g = 1694076839, (this || m3)._h = 3204075428, this || m3;\n}, C3.prototype._hash = function() {\n  var t5 = j3.allocUnsafe(28);\n  return t5.writeInt32BE((this || m3)._a, 0), t5.writeInt32BE((this || m3)._b, 4), t5.writeInt32BE((this || m3)._c, 8), t5.writeInt32BE((this || m3)._d, 12), t5.writeInt32BE((this || m3)._e, 16), t5.writeInt32BE((this || m3)._f, 20), t5.writeInt32BE((this || m3)._g, 24), t5;\n};\nvar L3 = C3;\nvar k$2 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar z3 = t$2;\nvar D3 = _$2;\nvar F3 = u3.Buffer;\nvar G2 = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591];\nvar H2 = new Array(160);\nfunction J2() {\n  this.init(), (this || k$2)._w = H2, D3.call(this || k$2, 128, 112);\n}\nfunction K2(t5, i5, h5) {\n  return h5 ^ t5 & (i5 ^ h5);\n}\nfunction M3(t5, i5, h5) {\n  return t5 & i5 | h5 & (t5 | i5);\n}\nfunction N3(t5, i5) {\n  return (t5 >>> 28 | i5 << 4) ^ (i5 >>> 2 | t5 << 30) ^ (i5 >>> 7 | t5 << 25);\n}\nfunction O3(t5, i5) {\n  return (t5 >>> 14 | i5 << 18) ^ (t5 >>> 18 | i5 << 14) ^ (i5 >>> 9 | t5 << 23);\n}\nfunction P3(t5, i5) {\n  return (t5 >>> 1 | i5 << 31) ^ (t5 >>> 8 | i5 << 24) ^ t5 >>> 7;\n}\nfunction Q2(t5, i5) {\n  return (t5 >>> 1 | i5 << 31) ^ (t5 >>> 8 | i5 << 24) ^ (t5 >>> 7 | i5 << 25);\n}\nfunction R3(t5, i5) {\n  return (t5 >>> 19 | i5 << 13) ^ (i5 >>> 29 | t5 << 3) ^ t5 >>> 6;\n}\nfunction S3(t5, i5) {\n  return (t5 >>> 19 | i5 << 13) ^ (i5 >>> 29 | t5 << 3) ^ (t5 >>> 6 | i5 << 26);\n}\nfunction V2(t5, i5) {\n  return t5 >>> 0 < i5 >>> 0 ? 1 : 0;\n}\nz3(J2, D3), J2.prototype.init = function() {\n  return (this || k$2)._ah = 1779033703, (this || k$2)._bh = 3144134277, (this || k$2)._ch = 1013904242, (this || k$2)._dh = 2773480762, (this || k$2)._eh = 1359893119, (this || k$2)._fh = 2600822924, (this || k$2)._gh = 528734635, (this || k$2)._hh = 1541459225, (this || k$2)._al = 4089235720, (this || k$2)._bl = 2227873595, (this || k$2)._cl = 4271175723, (this || k$2)._dl = 1595750129, (this || k$2)._el = 2917565137, (this || k$2)._fl = 725511199, (this || k$2)._gl = 4215389547, (this || k$2)._hl = 327033209, this || k$2;\n}, J2.prototype._update = function(t5) {\n  for (var i5 = (this || k$2)._w, h5 = 0 | (this || k$2)._ah, s5 = 0 | (this || k$2)._bh, _4 = 0 | (this || k$2)._ch, e7 = 0 | (this || k$2)._dh, n5 = 0 | (this || k$2)._eh, r5 = 0 | (this || k$2)._fh, l5 = 0 | (this || k$2)._gh, o5 = 0 | (this || k$2)._hh, f6 = 0 | (this || k$2)._al, a5 = 0 | (this || k$2)._bl, u5 = 0 | (this || k$2)._cl, c5 = 0 | (this || k$2)._dl, d4 = 0 | (this || k$2)._el, p5 = 0 | (this || k$2)._fl, b4 = 0 | (this || k$2)._gl, w4 = 0 | (this || k$2)._hl, g4 = 0; g4 < 32; g4 += 2) i5[g4] = t5.readInt32BE(4 * g4), i5[g4 + 1] = t5.readInt32BE(4 * g4 + 4);\n  for (; g4 < 160; g4 += 2) {\n    var B4 = i5[g4 - 30], y5 = i5[g4 - 30 + 1], E4 = P3(B4, y5), I4 = Q2(y5, B4), v5 = R3(B4 = i5[g4 - 4], y5 = i5[g4 - 4 + 1]), T4 = S3(y5, B4), m4 = i5[g4 - 14], A4 = i5[g4 - 14 + 1], U4 = i5[g4 - 32], x4 = i5[g4 - 32 + 1], j4 = I4 + A4 | 0, q3 = E4 + m4 + V2(j4, I4) | 0;\n    q3 = (q3 = q3 + v5 + V2(j4 = j4 + T4 | 0, T4) | 0) + U4 + V2(j4 = j4 + x4 | 0, x4) | 0, i5[g4] = q3, i5[g4 + 1] = j4;\n  }\n  for (var C4 = 0; C4 < 160; C4 += 2) {\n    q3 = i5[C4], j4 = i5[C4 + 1];\n    var L4 = M3(h5, s5, _4), z4 = M3(f6, a5, u5), D4 = N3(h5, f6), F4 = N3(f6, h5), H3 = O3(n5, d4), J3 = O3(d4, n5), W3 = G2[C4], X3 = G2[C4 + 1], Y4 = K2(n5, r5, l5), Z3 = K2(d4, p5, b4), $3 = w4 + J3 | 0, tt2 = o5 + H3 + V2($3, w4) | 0;\n    tt2 = (tt2 = (tt2 = tt2 + Y4 + V2($3 = $3 + Z3 | 0, Z3) | 0) + W3 + V2($3 = $3 + X3 | 0, X3) | 0) + q3 + V2($3 = $3 + j4 | 0, j4) | 0;\n    var it2 = F4 + z4 | 0, ht2 = D4 + L4 + V2(it2, F4) | 0;\n    o5 = l5, w4 = b4, l5 = r5, b4 = p5, r5 = n5, p5 = d4, n5 = e7 + tt2 + V2(d4 = c5 + $3 | 0, c5) | 0, e7 = _4, c5 = u5, _4 = s5, u5 = a5, s5 = h5, a5 = f6, h5 = tt2 + ht2 + V2(f6 = $3 + it2 | 0, $3) | 0;\n  }\n  (this || k$2)._al = (this || k$2)._al + f6 | 0, (this || k$2)._bl = (this || k$2)._bl + a5 | 0, (this || k$2)._cl = (this || k$2)._cl + u5 | 0, (this || k$2)._dl = (this || k$2)._dl + c5 | 0, (this || k$2)._el = (this || k$2)._el + d4 | 0, (this || k$2)._fl = (this || k$2)._fl + p5 | 0, (this || k$2)._gl = (this || k$2)._gl + b4 | 0, (this || k$2)._hl = (this || k$2)._hl + w4 | 0, (this || k$2)._ah = (this || k$2)._ah + h5 + V2((this || k$2)._al, f6) | 0, (this || k$2)._bh = (this || k$2)._bh + s5 + V2((this || k$2)._bl, a5) | 0, (this || k$2)._ch = (this || k$2)._ch + _4 + V2((this || k$2)._cl, u5) | 0, (this || k$2)._dh = (this || k$2)._dh + e7 + V2((this || k$2)._dl, c5) | 0, (this || k$2)._eh = (this || k$2)._eh + n5 + V2((this || k$2)._el, d4) | 0, (this || k$2)._fh = (this || k$2)._fh + r5 + V2((this || k$2)._fl, p5) | 0, (this || k$2)._gh = (this || k$2)._gh + l5 + V2((this || k$2)._gl, b4) | 0, (this || k$2)._hh = (this || k$2)._hh + o5 + V2((this || k$2)._hl, w4) | 0;\n}, J2.prototype._hash = function() {\n  var t5 = F3.allocUnsafe(64);\n  function i5(i6, h5, s5) {\n    t5.writeInt32BE(i6, s5), t5.writeInt32BE(h5, s5 + 4);\n  }\n  return i5((this || k$2)._ah, (this || k$2)._al, 0), i5((this || k$2)._bh, (this || k$2)._bl, 8), i5((this || k$2)._ch, (this || k$2)._cl, 16), i5((this || k$2)._dh, (this || k$2)._dl, 24), i5((this || k$2)._eh, (this || k$2)._el, 32), i5((this || k$2)._fh, (this || k$2)._fl, 40), i5((this || k$2)._gh, (this || k$2)._gl, 48), i5((this || k$2)._hh, (this || k$2)._hl, 56), t5;\n};\nvar W2 = J2;\nvar X2 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar Y3 = t$2;\nvar Z2 = W2;\nvar $2 = _$2;\nvar tt = u3.Buffer;\nvar it = new Array(160);\nfunction ht() {\n  this.init(), (this || X2)._w = it, $2.call(this || X2, 128, 112);\n}\nY3(ht, Z2), ht.prototype.init = function() {\n  return (this || X2)._ah = 3418070365, (this || X2)._bh = 1654270250, (this || X2)._ch = 2438529370, (this || X2)._dh = 355462360, (this || X2)._eh = 1731405415, (this || X2)._fh = 2394180231, (this || X2)._gh = 3675008525, (this || X2)._hh = 1203062813, (this || X2)._al = 3238371032, (this || X2)._bl = 914150663, (this || X2)._cl = 812702999, (this || X2)._dl = 4144912697, (this || X2)._el = 4290775857, (this || X2)._fl = 1750603025, (this || X2)._gl = 1694076839, (this || X2)._hl = 3204075428, this || X2;\n}, ht.prototype._hash = function() {\n  var t5 = tt.allocUnsafe(48);\n  function i5(i6, h5, s5) {\n    t5.writeInt32BE(i6, s5), t5.writeInt32BE(h5, s5 + 4);\n  }\n  return i5((this || X2)._ah, (this || X2)._al, 0), i5((this || X2)._bh, (this || X2)._bl, 8), i5((this || X2)._ch, (this || X2)._cl, 16), i5((this || X2)._dh, (this || X2)._dl, 24), i5((this || X2)._eh, (this || X2)._el, 32), i5((this || X2)._fh, (this || X2)._fl, 40), t5;\n};\nvar st;\nvar _t = ht;\nvar et = { exports: st = {} };\n(st = et.exports = function(t5) {\n  t5 = t5.toLowerCase();\n  var i5 = st[t5];\n  if (!i5) throw new Error(t5 + \" is not supported (we accept pull requests)\");\n  return new i5();\n}).sha = c$3, st.sha1 = T3, st.sha224 = L3, st.sha256 = w$1, st.sha384 = _t, st.sha512 = W2;\nvar nt = et.exports;\nvar e$5 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar n$5 = u3.Buffer;\nvar s$2 = b$i.Transform;\nvar h$3 = e$12.StringDecoder;\nfunction a$5(t5) {\n  s$2.call(this || e$5), (this || e$5).hashMode = \"string\" == typeof t5, (this || e$5).hashMode ? (this || e$5)[t5] = (this || e$5)._finalOrDigest : (this || e$5).final = (this || e$5)._finalOrDigest, (this || e$5)._final && ((this || e$5).__final = (this || e$5)._final, (this || e$5)._final = null), (this || e$5)._decoder = null, (this || e$5)._encoding = null;\n}\nt$2(a$5, s$2), a$5.prototype.update = function(t5, i5, r5) {\n  \"string\" == typeof t5 && (t5 = n$5.from(t5, i5));\n  var o5 = this._update(t5);\n  return (this || e$5).hashMode ? this || e$5 : (r5 && (o5 = this._toString(o5, r5)), o5);\n}, a$5.prototype.setAutoPadding = function() {\n}, a$5.prototype.getAuthTag = function() {\n  throw new Error(\"trying to get auth tag in unsupported state\");\n}, a$5.prototype.setAuthTag = function() {\n  throw new Error(\"trying to set auth tag in unsupported state\");\n}, a$5.prototype.setAAD = function() {\n  throw new Error(\"trying to set aad in unsupported state\");\n}, a$5.prototype._transform = function(t5, i5, r5) {\n  var o5;\n  try {\n    (this || e$5).hashMode ? this._update(t5) : this.push(this._update(t5));\n  } catch (t6) {\n    o5 = t6;\n  } finally {\n    r5(o5);\n  }\n}, a$5.prototype._flush = function(t5) {\n  var i5;\n  try {\n    this.push(this.__final());\n  } catch (t6) {\n    i5 = t6;\n  }\n  t5(i5);\n}, a$5.prototype._finalOrDigest = function(t5) {\n  var i5 = this.__final() || n$5.alloc(0);\n  return t5 && (i5 = this._toString(i5, t5, true)), i5;\n}, a$5.prototype._toString = function(t5, i5, r5) {\n  if ((this || e$5)._decoder || ((this || e$5)._decoder = new h$3(i5), (this || e$5)._encoding = i5), (this || e$5)._encoding !== i5) throw new Error(\"can't switch encodings\");\n  var o5 = (this || e$5)._decoder.write(t5);\n  return r5 && (o5 += (this || e$5)._decoder.end()), o5;\n};\nvar f$6 = a$5;\nvar m$12 = u4;\nvar n$6 = I3;\nvar p$3 = nt;\nvar s$3 = f$6;\nfunction a$6(t5) {\n  s$3.call(this, \"digest\"), this._hash = t5;\n}\nt$2(a$6, s$3), a$6.prototype._update = function(t5) {\n  this._hash.update(t5);\n}, a$6.prototype._final = function() {\n  return this._hash.digest();\n};\nvar h$4 = function(t5) {\n  return \"md5\" === (t5 = t5.toLowerCase()) ? new m$12() : \"rmd160\" === t5 || \"ripemd160\" === t5 ? new n$6() : new a$6(p$3(t5));\n};\nvar e$6 = u4;\nvar r$4 = function(t5) {\n  return new e$6().update(t5).digest();\n};\nvar o$6 = t$2;\nvar h$5 = u3.Buffer;\nvar n$7 = f$6;\nvar p$4 = h$5.alloc(128);\nfunction f$7(t5, a5) {\n  n$7.call(this, \"digest\"), \"string\" == typeof a5 && (a5 = h$5.from(a5)), this._alg = t5, this._key = a5, a5.length > 64 ? a5 = t5(a5) : a5.length < 64 && (a5 = h$5.concat([a5, p$4], 64));\n  for (var e7 = this._ipad = h$5.allocUnsafe(64), i5 = this._opad = h$5.allocUnsafe(64), r5 = 0; r5 < 64; r5++) e7[r5] = 54 ^ a5[r5], i5[r5] = 92 ^ a5[r5];\n  this._hash = [e7];\n}\no$6(f$7, n$7), f$7.prototype._update = function(t5) {\n  this._hash.push(t5);\n}, f$7.prototype._final = function() {\n  var t5 = this._alg(h$5.concat(this._hash));\n  return this._alg(h$5.concat([this._opad, t5]));\n};\nvar l$4 = t$2;\nvar d$3 = f$7;\nvar c$4 = f$6;\nvar _$4 = u3.Buffer;\nvar m$2 = r$4;\nvar u$4 = I3;\nvar g$1 = nt;\nvar v$1 = _$4.alloc(128);\nfunction y$1(t5, a5) {\n  c$4.call(this, \"digest\"), \"string\" == typeof a5 && (a5 = _$4.from(a5));\n  var e7 = \"sha512\" === t5 || \"sha384\" === t5 ? 128 : 64;\n  (this._alg = t5, this._key = a5, a5.length > e7) ? a5 = (\"rmd160\" === t5 ? new u$4() : g$1(t5)).update(a5).digest() : a5.length < e7 && (a5 = _$4.concat([a5, v$1], e7));\n  for (var i5 = this._ipad = _$4.allocUnsafe(e7), r5 = this._opad = _$4.allocUnsafe(e7), s5 = 0; s5 < e7; s5++) i5[s5] = 54 ^ a5[s5], r5[s5] = 92 ^ a5[s5];\n  this._hash = \"rmd160\" === t5 ? new u$4() : g$1(t5), this._hash.update(i5);\n}\nl$4(y$1, c$4), y$1.prototype._update = function(t5) {\n  this._hash.update(t5);\n}, y$1.prototype._final = function() {\n  var t5 = this._hash.digest();\n  return (\"rmd160\" === this._alg ? new u$4() : g$1(this._alg)).update(this._opad).update(t5).digest();\n};\nvar w$3 = function(t5, a5) {\n  return \"rmd160\" === (t5 = t5.toLowerCase()) || \"ripemd160\" === t5 ? new y$1(\"rmd160\", a5) : \"md5\" === t5 ? new d$3(m$2, a5) : new y$1(t5, a5);\n};\nvar s$4 = { sha224WithRSAEncryption: { sign: \"rsa\", hash: \"sha224\", id: \"302d300d06096086480165030402040500041c\" }, \"RSA-SHA224\": { sign: \"ecdsa/rsa\", hash: \"sha224\", id: \"302d300d06096086480165030402040500041c\" }, sha256WithRSAEncryption: { sign: \"rsa\", hash: \"sha256\", id: \"3031300d060960864801650304020105000420\" }, \"RSA-SHA256\": { sign: \"ecdsa/rsa\", hash: \"sha256\", id: \"3031300d060960864801650304020105000420\" }, sha384WithRSAEncryption: { sign: \"rsa\", hash: \"sha384\", id: \"3041300d060960864801650304020205000430\" }, \"RSA-SHA384\": { sign: \"ecdsa/rsa\", hash: \"sha384\", id: \"3041300d060960864801650304020205000430\" }, sha512WithRSAEncryption: { sign: \"rsa\", hash: \"sha512\", id: \"3051300d060960864801650304020305000440\" }, \"RSA-SHA512\": { sign: \"ecdsa/rsa\", hash: \"sha512\", id: \"3051300d060960864801650304020305000440\" }, \"RSA-SHA1\": { sign: \"rsa\", hash: \"sha1\", id: \"3021300906052b0e03021a05000414\" }, \"ecdsa-with-SHA1\": { sign: \"ecdsa\", hash: \"sha1\", id: \"\" }, sha256: { sign: \"ecdsa\", hash: \"sha256\", id: \"\" }, sha224: { sign: \"ecdsa\", hash: \"sha224\", id: \"\" }, sha384: { sign: \"ecdsa\", hash: \"sha384\", id: \"\" }, sha512: { sign: \"ecdsa\", hash: \"sha512\", id: \"\" }, \"DSA-SHA\": { sign: \"dsa\", hash: \"sha1\", id: \"\" }, \"DSA-SHA1\": { sign: \"dsa\", hash: \"sha1\", id: \"\" }, DSA: { sign: \"dsa\", hash: \"sha1\", id: \"\" }, \"DSA-WITH-SHA224\": { sign: \"dsa\", hash: \"sha224\", id: \"\" }, \"DSA-SHA224\": { sign: \"dsa\", hash: \"sha224\", id: \"\" }, \"DSA-WITH-SHA256\": { sign: \"dsa\", hash: \"sha256\", id: \"\" }, \"DSA-SHA256\": { sign: \"dsa\", hash: \"sha256\", id: \"\" }, \"DSA-WITH-SHA384\": { sign: \"dsa\", hash: \"sha384\", id: \"\" }, \"DSA-SHA384\": { sign: \"dsa\", hash: \"sha384\", id: \"\" }, \"DSA-WITH-SHA512\": { sign: \"dsa\", hash: \"sha512\", id: \"\" }, \"DSA-SHA512\": { sign: \"dsa\", hash: \"sha512\", id: \"\" }, \"DSA-RIPEMD160\": { sign: \"dsa\", hash: \"rmd160\", id: \"\" }, ripemd160WithRSA: { sign: \"rsa\", hash: \"rmd160\", id: \"3021300906052b2403020105000414\" }, \"RSA-RIPEMD160\": { sign: \"rsa\", hash: \"rmd160\", id: \"3021300906052b2403020105000414\" }, md5WithRSAEncryption: { sign: \"rsa\", hash: \"md5\", id: \"3020300c06082a864886f70d020505000410\" }, \"RSA-MD5\": { sign: \"rsa\", hash: \"md5\", id: \"3020300c06082a864886f70d020505000410\" } };\nvar f$8 = e$1$1.Buffer;\nvar a$7 = Math.pow(2, 30) - 1;\nfunction s$5(r5, e7) {\n  if (\"string\" != typeof r5 && !f$8.isBuffer(r5)) throw new TypeError(e7 + \" must be a buffer or string\");\n}\nvar u$5;\nvar h$6 = function(r5, e7, t5, n5) {\n  if (s$5(r5, \"Password\"), s$5(e7, \"Salt\"), \"number\" != typeof t5) throw new TypeError(\"Iterations not a number\");\n  if (t5 < 0) throw new TypeError(\"Bad iterations\");\n  if (\"number\" != typeof n5) throw new TypeError(\"Key length not a number\");\n  if (n5 < 0 || n5 > a$7 || n5 != n5) throw new TypeError(\"Bad key length\");\n};\nvar c$5 = T$1;\nc$5.browser ? u$5 = \"utf-8\" : u$5 = parseInt(c$5.version.split(\".\")[0].slice(1), 10) >= 6 ? \"utf-8\" : \"binary\";\nvar l$5 = u$5;\nvar p$5 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar d$4 = r$4;\nvar m$3 = I3;\nvar y$2 = nt;\nvar b$3 = h$6;\nvar v$2 = l$5;\nvar w$4 = u3.Buffer;\nvar g$2 = w$4.alloc(128);\nvar B$1 = { md5: 16, sha1: 20, sha224: 28, sha256: 32, sha384: 48, sha512: 64, rmd160: 20, ripemd160: 20 };\nfunction T$12(r5, e7, t5) {\n  var n5 = /* @__PURE__ */ (function(r6) {\n    function e8(e9) {\n      return y$2(r6).update(e9).digest();\n    }\n    return \"rmd160\" === r6 || \"ripemd160\" === r6 ? function(r7) {\n      return new m$3().update(r7).digest();\n    } : \"md5\" === r6 ? d$4 : e8;\n  })(r5), o5 = \"sha512\" === r5 || \"sha384\" === r5 ? 128 : 64;\n  e7.length > o5 ? e7 = n5(e7) : e7.length < o5 && (e7 = w$4.concat([e7, g$2], o5));\n  for (var i5 = w$4.allocUnsafe(o5 + B$1[r5]), f6 = w$4.allocUnsafe(o5 + B$1[r5]), a5 = 0; a5 < o5; a5++) i5[a5] = 54 ^ e7[a5], f6[a5] = 92 ^ e7[a5];\n  var s5 = w$4.allocUnsafe(o5 + t5 + 4);\n  i5.copy(s5, 0, 0, o5), (this || p$5).ipad1 = s5, (this || p$5).ipad2 = i5, (this || p$5).opad = f6, (this || p$5).alg = r5, (this || p$5).blocksize = o5, (this || p$5).hash = n5, (this || p$5).size = B$1[r5];\n}\nT$12.prototype.run = function(r5, e7) {\n  return r5.copy(e7, (this || p$5).blocksize), this.hash(e7).copy((this || p$5).opad, (this || p$5).blocksize), this.hash((this || p$5).opad);\n};\nvar k$3;\nvar S$1 = function(r5, e7, t5, n5, o5) {\n  b$3(r5, e7, t5, n5), w$4.isBuffer(r5) || (r5 = w$4.from(r5, v$2)), w$4.isBuffer(e7) || (e7 = w$4.from(e7, v$2));\n  var i5 = new T$12(o5 = o5 || \"sha1\", r5, e7.length), f6 = w$4.allocUnsafe(n5), a5 = w$4.allocUnsafe(e7.length + 4);\n  e7.copy(a5, 0, 0, e7.length);\n  for (var s5 = 0, u5 = B$1[o5], h5 = Math.ceil(n5 / u5), c5 = 1; c5 <= h5; c5++) {\n    a5.writeUInt32BE(c5, e7.length);\n    for (var l5 = i5.run(a5, i5.ipad1), p5 = l5, d4 = 1; d4 < t5; d4++) {\n      p5 = i5.run(p5, i5.ipad2);\n      for (var m4 = 0; m4 < u5; m4++) l5[m4] ^= p5[m4];\n    }\n    l5.copy(f6, s5), s5 += u5;\n  }\n  return f6;\n};\nvar A$1 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar H$1 = T$1;\nvar E$2 = h$6;\nvar P$1 = l$5;\nvar U$1 = S$1;\nvar K$1 = u3.Buffer;\nvar x$1 = A$1.crypto && A$1.crypto.subtle;\nvar z$1 = { sha: \"SHA-1\", \"sha-1\": \"SHA-1\", sha1: \"SHA-1\", sha256: \"SHA-256\", \"sha-256\": \"SHA-256\", sha384: \"SHA-384\", \"sha-384\": \"SHA-384\", \"sha-512\": \"SHA-512\", sha512: \"SHA-512\" };\nvar I$2 = [];\nfunction D$1(r5, e7, t5, n5, o5) {\n  return x$1.importKey(\"raw\", r5, { name: \"PBKDF2\" }, false, [\"deriveBits\"]).then((function(r6) {\n    return x$1.deriveBits({ name: \"PBKDF2\", salt: e7, iterations: t5, hash: { name: o5 } }, r6, n5 << 3);\n  })).then((function(r6) {\n    return K$1.from(r6);\n  }));\n}\nvar F$1 = function(r5, e7, t5, n5, o5, i5) {\n  \"function\" == typeof o5 && (i5 = o5, o5 = void 0);\n  var f6 = z$1[(o5 = o5 || \"sha1\").toLowerCase()];\n  if (!f6 || \"function\" != typeof A$1.Promise) return H$1.nextTick((function() {\n    var f7;\n    try {\n      f7 = U$1(r5, e7, t5, n5, o5);\n    } catch (r6) {\n      return i5(r6);\n    }\n    i5(null, f7);\n  }));\n  if (E$2(r5, e7, t5, n5), \"function\" != typeof i5) throw new Error(\"No callback provided to pbkdf2\");\n  K$1.isBuffer(r5) || (r5 = K$1.from(r5, P$1)), K$1.isBuffer(e7) || (e7 = K$1.from(e7, P$1)), (function(r6, e8) {\n    r6.then((function(r7) {\n      H$1.nextTick((function() {\n        e8(null, r7);\n      }));\n    }), (function(r7) {\n      H$1.nextTick((function() {\n        e8(r7);\n      }));\n    }));\n  })((function(r6) {\n    if (A$1.process && !A$1.process.browser) return Promise.resolve(false);\n    if (!x$1 || !x$1.importKey || !x$1.deriveBits) return Promise.resolve(false);\n    if (void 0 !== I$2[r6]) return I$2[r6];\n    var e8 = D$1(k$3 = k$3 || K$1.alloc(8), k$3, 10, 128, r6).then((function() {\n      return true;\n    })).catch((function() {\n      return false;\n    }));\n    return I$2[r6] = e8, e8;\n  })(f6).then((function(i6) {\n    return i6 ? D$1(r5, e7, t5, n5, f6) : U$1(r5, e7, t5, n5, o5);\n  })), i5);\n};\nvar M$1 = {};\nM$1.pbkdf2 = F$1, M$1.pbkdf2Sync = S$1;\nvar r$5;\nfunction e$7(r5, e7) {\n  if (!r5) throw new Error(e7 || \"Assertion failed\");\n}\nr$5 = e$7, e$7.equal = function(r5, e7, o5) {\n  if (r5 != e7) throw new Error(o5 || \"Assertion failed: \" + r5 + \" != \" + e7);\n};\nvar o$7 = r$5;\nvar r$6 = { readUInt32BE: function(t5, e7) {\n  return (t5[0 + e7] << 24 | t5[1 + e7] << 16 | t5[2 + e7] << 8 | t5[3 + e7]) >>> 0;\n}, writeUInt32BE: function(t5, e7, r5) {\n  t5[0 + r5] = e7 >>> 24, t5[1 + r5] = e7 >>> 16 & 255, t5[2 + r5] = e7 >>> 8 & 255, t5[3 + r5] = 255 & e7;\n}, ip: function(t5, e7, r5, i5) {\n  for (var n5 = 0, f6 = 0, o5 = 6; o5 >= 0; o5 -= 2) {\n    for (var p5 = 0; p5 <= 24; p5 += 8) n5 <<= 1, n5 |= e7 >>> p5 + o5 & 1;\n    for (p5 = 0; p5 <= 24; p5 += 8) n5 <<= 1, n5 |= t5 >>> p5 + o5 & 1;\n  }\n  for (o5 = 6; o5 >= 0; o5 -= 2) {\n    for (p5 = 1; p5 <= 25; p5 += 8) f6 <<= 1, f6 |= e7 >>> p5 + o5 & 1;\n    for (p5 = 1; p5 <= 25; p5 += 8) f6 <<= 1, f6 |= t5 >>> p5 + o5 & 1;\n  }\n  r5[i5 + 0] = n5 >>> 0, r5[i5 + 1] = f6 >>> 0;\n}, rip: function(t5, e7, r5, i5) {\n  for (var n5 = 0, f6 = 0, o5 = 0; o5 < 4; o5++) for (var p5 = 24; p5 >= 0; p5 -= 8) n5 <<= 1, n5 |= e7 >>> p5 + o5 & 1, n5 <<= 1, n5 |= t5 >>> p5 + o5 & 1;\n  for (o5 = 4; o5 < 8; o5++) for (p5 = 24; p5 >= 0; p5 -= 8) f6 <<= 1, f6 |= e7 >>> p5 + o5 & 1, f6 <<= 1, f6 |= t5 >>> p5 + o5 & 1;\n  r5[i5 + 0] = n5 >>> 0, r5[i5 + 1] = f6 >>> 0;\n}, pc1: function(t5, e7, r5, i5) {\n  for (var n5 = 0, f6 = 0, o5 = 7; o5 >= 5; o5--) {\n    for (var p5 = 0; p5 <= 24; p5 += 8) n5 <<= 1, n5 |= e7 >> p5 + o5 & 1;\n    for (p5 = 0; p5 <= 24; p5 += 8) n5 <<= 1, n5 |= t5 >> p5 + o5 & 1;\n  }\n  for (p5 = 0; p5 <= 24; p5 += 8) n5 <<= 1, n5 |= e7 >> p5 + o5 & 1;\n  for (o5 = 1; o5 <= 3; o5++) {\n    for (p5 = 0; p5 <= 24; p5 += 8) f6 <<= 1, f6 |= e7 >> p5 + o5 & 1;\n    for (p5 = 0; p5 <= 24; p5 += 8) f6 <<= 1, f6 |= t5 >> p5 + o5 & 1;\n  }\n  for (p5 = 0; p5 <= 24; p5 += 8) f6 <<= 1, f6 |= t5 >> p5 + o5 & 1;\n  r5[i5 + 0] = n5 >>> 0, r5[i5 + 1] = f6 >>> 0;\n}, r28shl: function(t5, e7) {\n  return t5 << e7 & 268435455 | t5 >>> 28 - e7;\n} };\nvar i4 = [14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, 15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24];\nr$6.pc2 = function(t5, e7, r5, n5) {\n  for (var f6 = 0, o5 = 0, p5 = i4.length >>> 1, u5 = 0; u5 < p5; u5++) f6 <<= 1, f6 |= t5 >>> i4[u5] & 1;\n  for (u5 = p5; u5 < i4.length; u5++) o5 <<= 1, o5 |= e7 >>> i4[u5] & 1;\n  r5[n5 + 0] = f6 >>> 0, r5[n5 + 1] = o5 >>> 0;\n}, r$6.expand = function(t5, e7, r5) {\n  var i5 = 0, n5 = 0;\n  i5 = (1 & t5) << 5 | t5 >>> 27;\n  for (var f6 = 23; f6 >= 15; f6 -= 4) i5 <<= 6, i5 |= t5 >>> f6 & 63;\n  for (f6 = 11; f6 >= 3; f6 -= 4) n5 |= t5 >>> f6 & 63, n5 <<= 6;\n  n5 |= (31 & t5) << 1 | t5 >>> 31, e7[r5 + 0] = i5 >>> 0, e7[r5 + 1] = n5 >>> 0;\n};\nvar n$8 = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\nr$6.substitute = function(t5, e7) {\n  for (var r5 = 0, i5 = 0; i5 < 4; i5++) {\n    r5 <<= 4, r5 |= n$8[64 * i5 + (t5 >>> 18 - 6 * i5 & 63)];\n  }\n  for (i5 = 0; i5 < 4; i5++) {\n    r5 <<= 4, r5 |= n$8[256 + 64 * i5 + (e7 >>> 18 - 6 * i5 & 63)];\n  }\n  return r5 >>> 0;\n};\nvar f$9 = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\nr$6.permute = function(t5) {\n  for (var e7 = 0, r5 = 0; r5 < f$9.length; r5++) e7 <<= 1, e7 |= t5 >>> f$9[r5] & 1;\n  return e7 >>> 0;\n}, r$6.padSplit = function(t5, e7, r5) {\n  for (var i5 = t5.toString(2); i5.length < e7; ) i5 = \"0\" + i5;\n  for (var n5 = [], f6 = 0; f6 < e7; f6 += r5) n5.push(i5.slice(f6, f6 + r5));\n  return n5.join(\" \");\n};\nvar o$8;\nvar p$6 = o$7;\nfunction u$6(t5) {\n  this.options = t5, this.type = this.options.type, this.blockSize = 8, this._init(), this.buffer = new Array(this.blockSize), this.bufferOff = 0;\n}\no$8 = u$6, u$6.prototype._init = function() {\n}, u$6.prototype.update = function(t5) {\n  return 0 === t5.length ? [] : \"decrypt\" === this.type ? this._updateDecrypt(t5) : this._updateEncrypt(t5);\n}, u$6.prototype._buffer = function(t5, e7) {\n  for (var r5 = Math.min(this.buffer.length - this.bufferOff, t5.length - e7), i5 = 0; i5 < r5; i5++) this.buffer[this.bufferOff + i5] = t5[e7 + i5];\n  return this.bufferOff += r5, r5;\n}, u$6.prototype._flushBuffer = function(t5, e7) {\n  return this._update(this.buffer, 0, t5, e7), this.bufferOff = 0, this.blockSize;\n}, u$6.prototype._updateEncrypt = function(t5) {\n  var e7 = 0, r5 = 0, i5 = (this.bufferOff + t5.length) / this.blockSize | 0, n5 = new Array(i5 * this.blockSize);\n  0 !== this.bufferOff && (e7 += this._buffer(t5, e7), this.bufferOff === this.buffer.length && (r5 += this._flushBuffer(n5, r5)));\n  for (var f6 = t5.length - (t5.length - e7) % this.blockSize; e7 < f6; e7 += this.blockSize) this._update(t5, e7, n5, r5), r5 += this.blockSize;\n  for (; e7 < t5.length; e7++, this.bufferOff++) this.buffer[this.bufferOff] = t5[e7];\n  return n5;\n}, u$6.prototype._updateDecrypt = function(t5) {\n  for (var e7 = 0, r5 = 0, i5 = Math.ceil((this.bufferOff + t5.length) / this.blockSize) - 1, n5 = new Array(i5 * this.blockSize); i5 > 0; i5--) e7 += this._buffer(t5, e7), r5 += this._flushBuffer(n5, r5);\n  return e7 += this._buffer(t5, e7), n5;\n}, u$6.prototype.final = function(t5) {\n  var e7, r5;\n  return t5 && (e7 = this.update(t5)), r5 = \"encrypt\" === this.type ? this._finalEncrypt() : this._finalDecrypt(), e7 ? e7.concat(r5) : r5;\n}, u$6.prototype._pad = function(t5, e7) {\n  if (0 === e7) return false;\n  for (; e7 < t5.length; ) t5[e7++] = 0;\n  return true;\n}, u$6.prototype._finalEncrypt = function() {\n  if (!this._pad(this.buffer, this.bufferOff)) return [];\n  var t5 = new Array(this.blockSize);\n  return this._update(this.buffer, 0, t5, 0), t5;\n}, u$6.prototype._unpad = function(t5) {\n  return t5;\n}, u$6.prototype._finalDecrypt = function() {\n  p$6.equal(this.bufferOff, this.blockSize, \"Not enough data to decrypt\");\n  var t5 = new Array(this.blockSize);\n  return this._flushBuffer(t5, 0), this._unpad(t5);\n};\nvar s$6;\nvar a$8 = o$8;\nvar h$7 = o$7;\nvar c$6 = r$6;\nvar l$6 = a$8;\nfunction y$3() {\n  this.tmp = new Array(2), this.keys = null;\n}\nfunction v$3(t5) {\n  l$6.call(this, t5);\n  var e7 = new y$3();\n  this._desState = e7, this.deriveKeys(e7, t5.key);\n}\nt$2(v$3, l$6), s$6 = v$3, v$3.create = function(t5) {\n  return new v$3(t5);\n};\nvar d$5 = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\nv$3.prototype.deriveKeys = function(t5, e7) {\n  t5.keys = new Array(32), h$7.equal(e7.length, this.blockSize, \"Invalid key length\");\n  var r5 = c$6.readUInt32BE(e7, 0), i5 = c$6.readUInt32BE(e7, 4);\n  c$6.pc1(r5, i5, t5.tmp, 0), r5 = t5.tmp[0], i5 = t5.tmp[1];\n  for (var n5 = 0; n5 < t5.keys.length; n5 += 2) {\n    var f6 = d$5[n5 >>> 1];\n    r5 = c$6.r28shl(r5, f6), i5 = c$6.r28shl(i5, f6), c$6.pc2(r5, i5, t5.keys, n5);\n  }\n}, v$3.prototype._update = function(t5, e7, r5, i5) {\n  var n5 = this._desState, f6 = c$6.readUInt32BE(t5, e7), o5 = c$6.readUInt32BE(t5, e7 + 4);\n  c$6.ip(f6, o5, n5.tmp, 0), f6 = n5.tmp[0], o5 = n5.tmp[1], \"encrypt\" === this.type ? this._encrypt(n5, f6, o5, n5.tmp, 0) : this._decrypt(n5, f6, o5, n5.tmp, 0), f6 = n5.tmp[0], o5 = n5.tmp[1], c$6.writeUInt32BE(r5, f6, i5), c$6.writeUInt32BE(r5, o5, i5 + 4);\n}, v$3.prototype._pad = function(t5, e7) {\n  for (var r5 = t5.length - e7, i5 = e7; i5 < t5.length; i5++) t5[i5] = r5;\n  return true;\n}, v$3.prototype._unpad = function(t5) {\n  for (var e7 = t5[t5.length - 1], r5 = t5.length - e7; r5 < t5.length; r5++) h$7.equal(t5[r5], e7);\n  return t5.slice(0, t5.length - e7);\n}, v$3.prototype._encrypt = function(t5, e7, r5, i5, n5) {\n  for (var f6 = e7, o5 = r5, p5 = 0; p5 < t5.keys.length; p5 += 2) {\n    var u5 = t5.keys[p5], s5 = t5.keys[p5 + 1];\n    c$6.expand(o5, t5.tmp, 0), u5 ^= t5.tmp[0], s5 ^= t5.tmp[1];\n    var a5 = c$6.substitute(u5, s5), h5 = o5;\n    o5 = (f6 ^ c$6.permute(a5)) >>> 0, f6 = h5;\n  }\n  c$6.rip(o5, f6, i5, n5);\n}, v$3.prototype._decrypt = function(t5, e7, r5, i5, n5) {\n  for (var f6 = r5, o5 = e7, p5 = t5.keys.length - 2; p5 >= 0; p5 -= 2) {\n    var u5 = t5.keys[p5], s5 = t5.keys[p5 + 1];\n    c$6.expand(f6, t5.tmp, 0), u5 ^= t5.tmp[0], s5 ^= t5.tmp[1];\n    var a5 = c$6.substitute(u5, s5), h5 = f6;\n    f6 = (o5 ^ c$6.permute(a5)) >>> 0, o5 = h5;\n  }\n  c$6.rip(f6, o5, i5, n5);\n};\nvar _$5 = s$6;\nvar b$4 = {};\nvar k$4 = o$7;\nvar g$3 = t$2;\nvar m$4 = {};\nfunction S$2(t5) {\n  k$4.equal(t5.length, 8, \"Invalid IV length\"), this.iv = new Array(8);\n  for (var e7 = 0; e7 < this.iv.length; e7++) this.iv[e7] = t5[e7];\n}\nb$4.instantiate = function(t5) {\n  function e7(e8) {\n    t5.call(this, e8), this._cbcInit();\n  }\n  g$3(e7, t5);\n  for (var r5 = Object.keys(m$4), i5 = 0; i5 < r5.length; i5++) {\n    var n5 = r5[i5];\n    e7.prototype[n5] = m$4[n5];\n  }\n  return e7.create = function(t6) {\n    return new e7(t6);\n  }, e7;\n}, m$4._cbcInit = function() {\n  var t5 = new S$2(this.options.iv);\n  this._cbcState = t5;\n}, m$4._update = function(t5, e7, r5, i5) {\n  var n5 = this._cbcState, f6 = this.constructor.super_.prototype, o5 = n5.iv;\n  if (\"encrypt\" === this.type) {\n    for (var p5 = 0; p5 < this.blockSize; p5++) o5[p5] ^= t5[e7 + p5];\n    f6._update.call(this, o5, 0, r5, i5);\n    for (p5 = 0; p5 < this.blockSize; p5++) o5[p5] = r5[i5 + p5];\n  } else {\n    f6._update.call(this, t5, e7, r5, i5);\n    for (p5 = 0; p5 < this.blockSize; p5++) r5[i5 + p5] ^= o5[p5];\n    for (p5 = 0; p5 < this.blockSize; p5++) o5[p5] = t5[e7 + p5];\n  }\n};\nvar z$2;\nvar w$5 = o$7;\nvar E$3 = a$8;\nvar I$3 = _$5;\nfunction O$1(t5, e7) {\n  w$5.equal(e7.length, 24, \"Invalid key length\");\n  var r5 = e7.slice(0, 8), i5 = e7.slice(8, 16), n5 = e7.slice(16, 24);\n  this.ciphers = \"encrypt\" === t5 ? [I$3.create({ type: \"encrypt\", key: r5 }), I$3.create({ type: \"decrypt\", key: i5 }), I$3.create({ type: \"encrypt\", key: n5 })] : [I$3.create({ type: \"decrypt\", key: n5 }), I$3.create({ type: \"encrypt\", key: i5 }), I$3.create({ type: \"decrypt\", key: r5 })];\n}\nfunction B$2(t5) {\n  E$3.call(this, t5);\n  var e7 = new O$1(this.type, this.options.key);\n  this._edeState = e7;\n}\nt$2(B$2, E$3), z$2 = B$2, B$2.create = function(t5) {\n  return new B$2(t5);\n}, B$2.prototype._update = function(t5, e7, r5, i5) {\n  var n5 = this._edeState;\n  n5.ciphers[0]._update(t5, e7, r5, i5), n5.ciphers[1]._update(r5, i5, r5, i5), n5.ciphers[2]._update(r5, i5, r5, i5);\n}, B$2.prototype._pad = I$3.prototype._pad, B$2.prototype._unpad = I$3.prototype._unpad;\nvar A$2 = z$2;\nvar U$2 = {};\nU$2.utils = r$6, U$2.Cipher = a$8, U$2.DES = _$5, U$2.CBC = b$4, U$2.EDE = A$2;\nvar d$6;\nvar i$13 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar f$a = f$6;\nvar o$9 = U$2;\nvar a$9 = t$2;\nvar c$7 = u3.Buffer;\nvar n$9 = { \"des-ede3-cbc\": o$9.CBC.instantiate(o$9.EDE), \"des-ede3\": o$9.EDE, \"des-ede-cbc\": o$9.CBC.instantiate(o$9.EDE), \"des-ede\": o$9.EDE, \"des-cbc\": o$9.CBC.instantiate(o$9.DES), \"des-ecb\": o$9.DES };\nfunction p$7(e7) {\n  f$a.call(this || i$13);\n  var t5, r5 = e7.mode.toLowerCase(), s5 = n$9[r5];\n  t5 = e7.decrypt ? \"decrypt\" : \"encrypt\";\n  var d4 = e7.key;\n  c$7.isBuffer(d4) || (d4 = c$7.from(d4)), \"des-ede\" !== r5 && \"des-ede-cbc\" !== r5 || (d4 = c$7.concat([d4, d4.slice(0, 8)]));\n  var o5 = e7.iv;\n  c$7.isBuffer(o5) || (o5 = c$7.from(o5)), (this || i$13)._des = s5.create({ key: d4, iv: o5, type: t5 });\n}\nn$9.des = n$9[\"des-cbc\"], n$9.des3 = n$9[\"des-ede3-cbc\"], d$6 = p$7, a$9(p$7, f$a), p$7.prototype._update = function(e7) {\n  return c$7.from((this || i$13)._des.update(e7));\n}, p$7.prototype._final = function() {\n  return c$7.from((this || i$13)._des.final());\n};\nvar l$7 = d$6;\nvar e$8 = e$1$1.Buffer;\nvar f$b = function(r5, f6) {\n  for (var t5 = Math.min(r5.length, f6.length), n5 = new e$8(t5), o5 = 0; o5 < t5; ++o5) n5[o5] = r5[o5] ^ f6[o5];\n  return n5;\n};\nvar t$12 = function(e7) {\n  for (var c5, r5 = e7.length; r5--; ) {\n    if (255 !== (c5 = e7.readUInt8(r5))) {\n      c5++, e7.writeUInt8(c5, r5);\n      break;\n    }\n    e7.writeUInt8(0, r5);\n  }\n};\nvar a$a = { encrypt: function(e7, c5) {\n  return e7._cipher.encryptBlock(c5);\n}, decrypt: function(e7, c5) {\n  return e7._cipher.decryptBlock(c5);\n} };\nvar p$8 = {};\nvar n$a = f$b;\np$8.encrypt = function(e7, c5) {\n  var r5 = n$a(c5, e7._prev);\n  return e7._prev = e7._cipher.encryptBlock(r5), e7._prev;\n}, p$8.decrypt = function(e7, c5) {\n  var r5 = e7._prev;\n  e7._prev = c5;\n  var t5 = e7._cipher.decryptBlock(c5);\n  return n$a(t5, r5);\n};\nvar i$22 = {};\nvar o$a = u3.Buffer;\nvar h$8 = f$b;\nfunction v$4(e7, c5, r5) {\n  var t5 = c5.length, a5 = h$8(c5, e7._cache);\n  return e7._cache = e7._cache.slice(t5), e7._prev = o$a.concat([e7._prev, r5 ? c5 : a5]), a5;\n}\ni$22.encrypt = function(e7, c5, r5) {\n  for (var t5, a5 = o$a.allocUnsafe(0); c5.length; ) {\n    if (0 === e7._cache.length && (e7._cache = e7._cipher.encryptBlock(e7._prev), e7._prev = o$a.allocUnsafe(0)), !(e7._cache.length <= c5.length)) {\n      a5 = o$a.concat([a5, v$4(e7, c5, r5)]);\n      break;\n    }\n    t5 = e7._cache.length, a5 = o$a.concat([a5, v$4(e7, c5.slice(0, t5), r5)]), c5 = c5.slice(t5);\n  }\n  return a5;\n};\nvar y$4 = {};\nvar f$c = u3.Buffer;\nfunction s$7(e7, c5, r5) {\n  var t5 = e7._cipher.encryptBlock(e7._prev)[0] ^ c5;\n  return e7._prev = f$c.concat([e7._prev.slice(1), f$c.from([r5 ? c5 : t5])]), t5;\n}\ny$4.encrypt = function(e7, c5, r5) {\n  for (var t5 = c5.length, a5 = f$c.allocUnsafe(t5), p5 = -1; ++p5 < t5; ) a5[p5] = s$7(e7, c5[p5], r5);\n  return a5;\n};\nvar l$8 = {};\nvar m$5 = u3.Buffer;\nfunction _$6(e7, c5, r5) {\n  for (var t5, a5, p5 = -1, n5 = 0; ++p5 < 8; ) t5 = c5 & 1 << 7 - p5 ? 128 : 0, n5 += (128 & (a5 = e7._cipher.encryptBlock(e7._prev)[0] ^ t5)) >> p5 % 8, e7._prev = k$5(e7._prev, r5 ? t5 : a5);\n  return n5;\n}\nfunction k$5(e7, c5) {\n  var r5 = e7.length, t5 = -1, a5 = m$5.allocUnsafe(e7.length);\n  for (e7 = m$5.concat([e7, m$5.from([c5])]); ++t5 < r5; ) a5[t5] = e7[t5] << 1 | e7[t5 + 1] >> 7;\n  return a5;\n}\nl$8.encrypt = function(e7, c5, r5) {\n  for (var t5 = c5.length, a5 = m$5.allocUnsafe(t5), p5 = -1; ++p5 < t5; ) a5[p5] = _$6(e7, c5[p5], r5);\n  return a5;\n};\nvar B$3 = {};\nvar u$7 = e$1$1.Buffer;\nvar C$1 = f$b;\nfunction E$4(e7) {\n  return e7._prev = e7._cipher.encryptBlock(e7._prev), e7._prev;\n}\nB$3.encrypt = function(e7, c5) {\n  for (; e7._cache.length < c5.length; ) e7._cache = u$7.concat([e7._cache, E$4(e7)]);\n  var r5 = e7._cache.slice(0, c5.length);\n  return e7._cache = e7._cache.slice(c5.length), C$1(c5, r5);\n};\nvar d$7 = {};\nvar b$5 = f$b;\nvar A$3 = u3.Buffer;\nvar S$3 = t$12;\nfunction g$4(e7) {\n  var c5 = e7._cipher.encryptBlockRaw(e7._prev);\n  return S$3(e7._prev), c5;\n}\nd$7.encrypt = function(e7, c5) {\n  var r5 = Math.ceil(c5.length / 16), t5 = e7._cache.length;\n  e7._cache = A$3.concat([e7._cache, A$3.allocUnsafe(16 * r5)]);\n  for (var a5 = 0; a5 < r5; a5++) {\n    var p5 = g$4(e7), n5 = t5 + 16 * a5;\n    e7._cache.writeUInt32BE(p5[0], n5 + 0), e7._cache.writeUInt32BE(p5[1], n5 + 4), e7._cache.writeUInt32BE(p5[2], n5 + 8), e7._cache.writeUInt32BE(p5[3], n5 + 12);\n  }\n  var i5 = e7._cache.slice(0, c5.length);\n  return e7._cache = e7._cache.slice(c5.length), b$5(c5, i5);\n};\nvar F$2 = { \"aes-128-ecb\": { cipher: \"AES\", key: 128, iv: 0, mode: \"ECB\", type: \"block\" }, \"aes-192-ecb\": { cipher: \"AES\", key: 192, iv: 0, mode: \"ECB\", type: \"block\" }, \"aes-256-ecb\": { cipher: \"AES\", key: 256, iv: 0, mode: \"ECB\", type: \"block\" }, \"aes-128-cbc\": { cipher: \"AES\", key: 128, iv: 16, mode: \"CBC\", type: \"block\" }, \"aes-192-cbc\": { cipher: \"AES\", key: 192, iv: 16, mode: \"CBC\", type: \"block\" }, \"aes-256-cbc\": { cipher: \"AES\", key: 256, iv: 16, mode: \"CBC\", type: \"block\" }, aes128: { cipher: \"AES\", key: 128, iv: 16, mode: \"CBC\", type: \"block\" }, aes192: { cipher: \"AES\", key: 192, iv: 16, mode: \"CBC\", type: \"block\" }, aes256: { cipher: \"AES\", key: 256, iv: 16, mode: \"CBC\", type: \"block\" }, \"aes-128-cfb\": { cipher: \"AES\", key: 128, iv: 16, mode: \"CFB\", type: \"stream\" }, \"aes-192-cfb\": { cipher: \"AES\", key: 192, iv: 16, mode: \"CFB\", type: \"stream\" }, \"aes-256-cfb\": { cipher: \"AES\", key: 256, iv: 16, mode: \"CFB\", type: \"stream\" }, \"aes-128-cfb8\": { cipher: \"AES\", key: 128, iv: 16, mode: \"CFB8\", type: \"stream\" }, \"aes-192-cfb8\": { cipher: \"AES\", key: 192, iv: 16, mode: \"CFB8\", type: \"stream\" }, \"aes-256-cfb8\": { cipher: \"AES\", key: 256, iv: 16, mode: \"CFB8\", type: \"stream\" }, \"aes-128-cfb1\": { cipher: \"AES\", key: 128, iv: 16, mode: \"CFB1\", type: \"stream\" }, \"aes-192-cfb1\": { cipher: \"AES\", key: 192, iv: 16, mode: \"CFB1\", type: \"stream\" }, \"aes-256-cfb1\": { cipher: \"AES\", key: 256, iv: 16, mode: \"CFB1\", type: \"stream\" }, \"aes-128-ofb\": { cipher: \"AES\", key: 128, iv: 16, mode: \"OFB\", type: \"stream\" }, \"aes-192-ofb\": { cipher: \"AES\", key: 192, iv: 16, mode: \"OFB\", type: \"stream\" }, \"aes-256-ofb\": { cipher: \"AES\", key: 256, iv: 16, mode: \"OFB\", type: \"stream\" }, \"aes-128-ctr\": { cipher: \"AES\", key: 128, iv: 16, mode: \"CTR\", type: \"stream\" }, \"aes-192-ctr\": { cipher: \"AES\", key: 192, iv: 16, mode: \"CTR\", type: \"stream\" }, \"aes-256-ctr\": { cipher: \"AES\", key: 256, iv: 16, mode: \"CTR\", type: \"stream\" }, \"aes-128-gcm\": { cipher: \"AES\", key: 128, iv: 12, mode: \"GCM\", type: \"auth\" }, \"aes-192-gcm\": { cipher: \"AES\", key: 192, iv: 12, mode: \"GCM\", type: \"auth\" }, \"aes-256-gcm\": { cipher: \"AES\", key: 256, iv: 12, mode: \"GCM\", type: \"auth\" } };\nvar U$3 = { ECB: a$a, CBC: p$8, CFB: i$22, CFB8: y$4, CFB1: l$8, OFB: B$3, CTR: d$7, GCM: d$7 };\nvar w$6 = F$2;\nfor (I$4 in w$6) w$6[I$4].module = U$3[w$6[I$4].mode];\nvar I$4;\nvar M$2 = w$6;\nvar a$b = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar h$9 = {};\nvar o$b = u3.Buffer;\nfunction s$8(t5) {\n  o$b.isBuffer(t5) || (t5 = o$b.from(t5));\n  for (var e7 = t5.length / 4 | 0, i5 = new Array(e7), r5 = 0; r5 < e7; r5++) i5[r5] = t5.readUInt32BE(4 * r5);\n  return i5;\n}\nfunction c$8(t5) {\n  for (; 0 < t5.length; t5++) t5[0] = 0;\n}\nfunction l$9(t5, e7, i5, r5, n5) {\n  for (var a5, h5, o5, s5, c5 = i5[0], l5 = i5[1], f6 = i5[2], u5 = i5[3], p5 = t5[0] ^ e7[0], _4 = t5[1] ^ e7[1], d4 = t5[2] ^ e7[2], y5 = t5[3] ^ e7[3], B4 = 4, g4 = 1; g4 < n5; g4++) a5 = c5[p5 >>> 24] ^ l5[_4 >>> 16 & 255] ^ f6[d4 >>> 8 & 255] ^ u5[255 & y5] ^ e7[B4++], h5 = c5[_4 >>> 24] ^ l5[d4 >>> 16 & 255] ^ f6[y5 >>> 8 & 255] ^ u5[255 & p5] ^ e7[B4++], o5 = c5[d4 >>> 24] ^ l5[y5 >>> 16 & 255] ^ f6[p5 >>> 8 & 255] ^ u5[255 & _4] ^ e7[B4++], s5 = c5[y5 >>> 24] ^ l5[p5 >>> 16 & 255] ^ f6[_4 >>> 8 & 255] ^ u5[255 & d4] ^ e7[B4++], p5 = a5, _4 = h5, d4 = o5, y5 = s5;\n  return a5 = (r5[p5 >>> 24] << 24 | r5[_4 >>> 16 & 255] << 16 | r5[d4 >>> 8 & 255] << 8 | r5[255 & y5]) ^ e7[B4++], h5 = (r5[_4 >>> 24] << 24 | r5[d4 >>> 16 & 255] << 16 | r5[y5 >>> 8 & 255] << 8 | r5[255 & p5]) ^ e7[B4++], o5 = (r5[d4 >>> 24] << 24 | r5[y5 >>> 16 & 255] << 16 | r5[p5 >>> 8 & 255] << 8 | r5[255 & _4]) ^ e7[B4++], s5 = (r5[y5 >>> 24] << 24 | r5[p5 >>> 16 & 255] << 16 | r5[_4 >>> 8 & 255] << 8 | r5[255 & d4]) ^ e7[B4++], [a5 >>>= 0, h5 >>>= 0, o5 >>>= 0, s5 >>>= 0];\n}\nvar f$d = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];\nvar u$8 = (function() {\n  for (var t5 = new Array(256), e7 = 0; e7 < 256; e7++) t5[e7] = e7 < 128 ? e7 << 1 : e7 << 1 ^ 283;\n  for (var i5 = [], r5 = [], n5 = [[], [], [], []], a5 = [[], [], [], []], h5 = 0, o5 = 0, s5 = 0; s5 < 256; ++s5) {\n    var c5 = o5 ^ o5 << 1 ^ o5 << 2 ^ o5 << 3 ^ o5 << 4;\n    c5 = c5 >>> 8 ^ 255 & c5 ^ 99, i5[h5] = c5, r5[c5] = h5;\n    var l5 = t5[h5], f6 = t5[l5], u5 = t5[f6], p5 = 257 * t5[c5] ^ 16843008 * c5;\n    n5[0][h5] = p5 << 24 | p5 >>> 8, n5[1][h5] = p5 << 16 | p5 >>> 16, n5[2][h5] = p5 << 8 | p5 >>> 24, n5[3][h5] = p5, p5 = 16843009 * u5 ^ 65537 * f6 ^ 257 * l5 ^ 16843008 * h5, a5[0][c5] = p5 << 24 | p5 >>> 8, a5[1][c5] = p5 << 16 | p5 >>> 16, a5[2][c5] = p5 << 8 | p5 >>> 24, a5[3][c5] = p5, 0 === h5 ? h5 = o5 = 1 : (h5 = l5 ^ t5[t5[t5[u5 ^ l5]]], o5 ^= t5[t5[o5]]);\n  }\n  return { SBOX: i5, INV_SBOX: r5, SUB_MIX: n5, INV_SUB_MIX: a5 };\n})();\nfunction p$9(t5) {\n  (this || a$b)._key = s$8(t5), this._reset();\n}\np$9.blockSize = 16, p$9.keySize = 32, p$9.prototype.blockSize = p$9.blockSize, p$9.prototype.keySize = p$9.keySize, p$9.prototype._reset = function() {\n  for (var t5 = (this || a$b)._key, e7 = t5.length, i5 = e7 + 6, r5 = 4 * (i5 + 1), n5 = [], h5 = 0; h5 < e7; h5++) n5[h5] = t5[h5];\n  for (h5 = e7; h5 < r5; h5++) {\n    var o5 = n5[h5 - 1];\n    h5 % e7 == 0 ? (o5 = o5 << 8 | o5 >>> 24, o5 = u$8.SBOX[o5 >>> 24] << 24 | u$8.SBOX[o5 >>> 16 & 255] << 16 | u$8.SBOX[o5 >>> 8 & 255] << 8 | u$8.SBOX[255 & o5], o5 ^= f$d[h5 / e7 | 0] << 24) : e7 > 6 && h5 % e7 == 4 && (o5 = u$8.SBOX[o5 >>> 24] << 24 | u$8.SBOX[o5 >>> 16 & 255] << 16 | u$8.SBOX[o5 >>> 8 & 255] << 8 | u$8.SBOX[255 & o5]), n5[h5] = n5[h5 - e7] ^ o5;\n  }\n  for (var s5 = [], c5 = 0; c5 < r5; c5++) {\n    var l5 = r5 - c5, p5 = n5[l5 - (c5 % 4 ? 0 : 4)];\n    s5[c5] = c5 < 4 || l5 <= 4 ? p5 : u$8.INV_SUB_MIX[0][u$8.SBOX[p5 >>> 24]] ^ u$8.INV_SUB_MIX[1][u$8.SBOX[p5 >>> 16 & 255]] ^ u$8.INV_SUB_MIX[2][u$8.SBOX[p5 >>> 8 & 255]] ^ u$8.INV_SUB_MIX[3][u$8.SBOX[255 & p5]];\n  }\n  (this || a$b)._nRounds = i5, (this || a$b)._keySchedule = n5, (this || a$b)._invKeySchedule = s5;\n}, p$9.prototype.encryptBlockRaw = function(t5) {\n  return l$9(t5 = s$8(t5), (this || a$b)._keySchedule, u$8.SUB_MIX, u$8.SBOX, (this || a$b)._nRounds);\n}, p$9.prototype.encryptBlock = function(t5) {\n  var e7 = this.encryptBlockRaw(t5), i5 = o$b.allocUnsafe(16);\n  return i5.writeUInt32BE(e7[0], 0), i5.writeUInt32BE(e7[1], 4), i5.writeUInt32BE(e7[2], 8), i5.writeUInt32BE(e7[3], 12), i5;\n}, p$9.prototype.decryptBlock = function(t5) {\n  var e7 = (t5 = s$8(t5))[1];\n  t5[1] = t5[3], t5[3] = e7;\n  var i5 = l$9(t5, (this || a$b)._invKeySchedule, u$8.INV_SUB_MIX, u$8.INV_SBOX, (this || a$b)._nRounds), r5 = o$b.allocUnsafe(16);\n  return r5.writeUInt32BE(i5[0], 0), r5.writeUInt32BE(i5[3], 4), r5.writeUInt32BE(i5[2], 8), r5.writeUInt32BE(i5[1], 12), r5;\n}, p$9.prototype.scrub = function() {\n  c$8((this || a$b)._keySchedule), c$8((this || a$b)._invKeySchedule), c$8((this || a$b)._key);\n}, h$9.AES = p$9;\nvar _$7 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar d$8 = u3.Buffer;\nvar y$5 = d$8.alloc(16, 0);\nfunction B$4(t5) {\n  var e7 = d$8.allocUnsafe(16);\n  return e7.writeUInt32BE(t5[0] >>> 0, 0), e7.writeUInt32BE(t5[1] >>> 0, 4), e7.writeUInt32BE(t5[2] >>> 0, 8), e7.writeUInt32BE(t5[3] >>> 0, 12), e7;\n}\nfunction g$5(t5) {\n  (this || _$7).h = t5, (this || _$7).state = d$8.alloc(16, 0), (this || _$7).cache = d$8.allocUnsafe(0);\n}\ng$5.prototype.ghash = function(t5) {\n  for (var e7 = -1; ++e7 < t5.length; ) (this || _$7).state[e7] ^= t5[e7];\n  this._multiply();\n}, g$5.prototype._multiply = function() {\n  for (var t5, e7, i5, r5 = [(t5 = (this || _$7).h).readUInt32BE(0), t5.readUInt32BE(4), t5.readUInt32BE(8), t5.readUInt32BE(12)], n5 = [0, 0, 0, 0], a5 = -1; ++a5 < 128; ) {\n    for (0 != ((this || _$7).state[~~(a5 / 8)] & 1 << 7 - a5 % 8) && (n5[0] ^= r5[0], n5[1] ^= r5[1], n5[2] ^= r5[2], n5[3] ^= r5[3]), i5 = 0 != (1 & r5[3]), e7 = 3; e7 > 0; e7--) r5[e7] = r5[e7] >>> 1 | (1 & r5[e7 - 1]) << 31;\n    r5[0] = r5[0] >>> 1, i5 && (r5[0] = r5[0] ^ 225 << 24);\n  }\n  (this || _$7).state = B$4(n5);\n}, g$5.prototype.update = function(t5) {\n  var e7;\n  for ((this || _$7).cache = d$8.concat([(this || _$7).cache, t5]); (this || _$7).cache.length >= 16; ) e7 = (this || _$7).cache.slice(0, 16), (this || _$7).cache = (this || _$7).cache.slice(16), this.ghash(e7);\n}, g$5.prototype.final = function(t5, e7) {\n  return (this || _$7).cache.length && this.ghash(d$8.concat([(this || _$7).cache, y$5], 16)), this.ghash(B$4([0, t5, 0, e7])), (this || _$7).state;\n};\nvar S$4 = g$5;\nvar v$5 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar I$5 = h$9;\nvar U$4 = u3.Buffer;\nvar w$7 = f$6;\nvar m$6 = S$4;\nvar E$5 = f$b;\nvar b$6 = t$12;\nfunction X$1(t5, e7, i5, r5) {\n  w$7.call(this || v$5);\n  var n5 = U$4.alloc(4, 0);\n  (this || v$5)._cipher = new I$5.AES(e7);\n  var a5 = (this || v$5)._cipher.encryptBlock(n5);\n  (this || v$5)._ghash = new m$6(a5), i5 = (function(t6, e8, i6) {\n    if (12 === e8.length) return t6._finID = U$4.concat([e8, U$4.from([0, 0, 0, 1])]), U$4.concat([e8, U$4.from([0, 0, 0, 2])]);\n    var r6 = new m$6(i6), n6 = e8.length, a6 = n6 % 16;\n    r6.update(e8), a6 && (a6 = 16 - a6, r6.update(U$4.alloc(a6, 0))), r6.update(U$4.alloc(8, 0));\n    var h5 = 8 * n6, o5 = U$4.alloc(8);\n    o5.writeUIntBE(h5, 0, 8), r6.update(o5), t6._finID = r6.state;\n    var s5 = U$4.from(t6._finID);\n    return b$6(s5), s5;\n  })(this || v$5, i5, a5), (this || v$5)._prev = U$4.from(i5), (this || v$5)._cache = U$4.allocUnsafe(0), (this || v$5)._secCache = U$4.allocUnsafe(0), (this || v$5)._decrypt = r5, (this || v$5)._alen = 0, (this || v$5)._len = 0, (this || v$5)._mode = t5, (this || v$5)._authTag = null, (this || v$5)._called = false;\n}\nt$2(X$1, w$7), X$1.prototype._update = function(t5) {\n  if (!(this || v$5)._called && (this || v$5)._alen) {\n    var e7 = 16 - (this || v$5)._alen % 16;\n    e7 < 16 && (e7 = U$4.alloc(e7, 0), (this || v$5)._ghash.update(e7));\n  }\n  (this || v$5)._called = true;\n  var i5 = (this || v$5)._mode.encrypt(this || v$5, t5);\n  return (this || v$5)._decrypt ? (this || v$5)._ghash.update(t5) : (this || v$5)._ghash.update(i5), (this || v$5)._len += t5.length, i5;\n}, X$1.prototype._final = function() {\n  if ((this || v$5)._decrypt && !(this || v$5)._authTag) throw new Error(\"Unsupported state or unable to authenticate data\");\n  var t5 = E$5((this || v$5)._ghash.final(8 * (this || v$5)._alen, 8 * (this || v$5)._len), (this || v$5)._cipher.encryptBlock((this || v$5)._finID));\n  if ((this || v$5)._decrypt && (function(t6, e7) {\n    var i5 = 0;\n    t6.length !== e7.length && i5++;\n    for (var r5 = Math.min(t6.length, e7.length), n5 = 0; n5 < r5; ++n5) i5 += t6[n5] ^ e7[n5];\n    return i5;\n  })(t5, (this || v$5)._authTag)) throw new Error(\"Unsupported state or unable to authenticate data\");\n  (this || v$5)._authTag = t5, (this || v$5)._cipher.scrub();\n}, X$1.prototype.getAuthTag = function() {\n  if ((this || v$5)._decrypt || !U$4.isBuffer((this || v$5)._authTag)) throw new Error(\"Attempting to get auth tag in unsupported state\");\n  return (this || v$5)._authTag;\n}, X$1.prototype.setAuthTag = function(t5) {\n  if (!(this || v$5)._decrypt) throw new Error(\"Attempting to set auth tag in unsupported state\");\n  (this || v$5)._authTag = t5;\n}, X$1.prototype.setAAD = function(t5) {\n  if ((this || v$5)._called) throw new Error(\"Attempting to set AAD in unsupported state\");\n  (this || v$5)._ghash.update(t5), (this || v$5)._alen += t5.length;\n};\nvar k$6 = X$1;\nvar T$2 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar O$2 = h$9;\nvar A$4 = u3.Buffer;\nvar M$3 = f$6;\nfunction N$1(t5, e7, i5, r5) {\n  M$3.call(this || T$2), (this || T$2)._cipher = new O$2.AES(e7), (this || T$2)._prev = A$4.from(i5), (this || T$2)._cache = A$4.allocUnsafe(0), (this || T$2)._secCache = A$4.allocUnsafe(0), (this || T$2)._decrypt = r5, (this || T$2)._mode = t5;\n}\nt$2(N$1, M$3), N$1.prototype._update = function(t5) {\n  return (this || T$2)._mode.encrypt(this || T$2, t5, (this || T$2)._decrypt);\n}, N$1.prototype._final = function() {\n  (this || T$2)._cipher.scrub();\n};\nvar V$1 = N$1;\nvar t$22 = u3.Buffer;\nvar f$e = u4;\nvar a$c = function(r5, e7, a5, l5) {\n  if (t$22.isBuffer(r5) || (r5 = t$22.from(r5, \"binary\")), e7 && (t$22.isBuffer(e7) || (e7 = t$22.from(e7, \"binary\")), 8 !== e7.length)) throw new RangeError(\"salt should be Buffer with 8 byte length\");\n  for (var n5 = a5 / 8, o5 = t$22.alloc(n5), i5 = t$22.alloc(l5 || 0), h5 = t$22.alloc(0); n5 > 0 || l5 > 0; ) {\n    var u5 = new f$e();\n    u5.update(h5), u5.update(r5), e7 && u5.update(e7), h5 = u5.digest();\n    var g4 = 0;\n    if (n5 > 0) {\n      var m4 = o5.length - n5;\n      g4 = Math.min(n5, h5.length), h5.copy(o5, m4, 0, g4), n5 -= g4;\n    }\n    if (g4 < h5.length && l5 > 0) {\n      var p5 = i5.length - l5, v5 = Math.min(l5, h5.length - g4);\n      h5.copy(i5, p5, g4, g4 + v5), l5 -= v5;\n    }\n  }\n  return h5.fill(0), { key: o5, iv: i5 };\n};\nvar c$9 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar s$9 = {};\nvar f$f = k$6;\nvar p$a = u3.Buffer;\nvar u$9 = M$2;\nvar l$a = V$1;\nvar d$9 = f$6;\nvar y$6 = h$9;\nvar m$7 = a$c;\nfunction g$6(t5, e7, r5) {\n  d$9.call(this || c$9), (this || c$9)._cache = new v$6(), (this || c$9)._last = void 0, (this || c$9)._cipher = new y$6.AES(e7), (this || c$9)._prev = p$a.from(r5), (this || c$9)._mode = t5, (this || c$9)._autopadding = true;\n}\nfunction v$6() {\n  (this || c$9).cache = p$a.allocUnsafe(0);\n}\nfunction w$8(t5, e7, r5) {\n  var i5 = u$9[t5.toLowerCase()];\n  if (!i5) throw new TypeError(\"invalid suite type\");\n  if (\"string\" == typeof r5 && (r5 = p$a.from(r5)), \"GCM\" !== i5.mode && r5.length !== i5.iv) throw new TypeError(\"invalid iv length \" + r5.length);\n  if (\"string\" == typeof e7 && (e7 = p$a.from(e7)), e7.length !== i5.key / 8) throw new TypeError(\"invalid key length \" + e7.length);\n  return \"stream\" === i5.type ? new l$a(i5.module, e7, r5, true) : \"auth\" === i5.type ? new f$f(i5.module, e7, r5, true) : new g$6(i5.module, e7, r5);\n}\nt$2(g$6, d$9), g$6.prototype._update = function(t5) {\n  var e7, r5;\n  (this || c$9)._cache.add(t5);\n  for (var i5 = []; e7 = (this || c$9)._cache.get((this || c$9)._autopadding); ) r5 = (this || c$9)._mode.decrypt(this || c$9, e7), i5.push(r5);\n  return p$a.concat(i5);\n}, g$6.prototype._final = function() {\n  var t5 = (this || c$9)._cache.flush();\n  if ((this || c$9)._autopadding) return (function(t6) {\n    var e7 = t6[15];\n    if (e7 < 1 || e7 > 16) throw new Error(\"unable to decrypt data\");\n    var r5 = -1;\n    for (; ++r5 < e7; ) if (t6[r5 + (16 - e7)] !== e7) throw new Error(\"unable to decrypt data\");\n    if (16 === e7) return;\n    return t6.slice(0, 16 - e7);\n  })((this || c$9)._mode.decrypt(this || c$9, t5));\n  if (t5) throw new Error(\"data not multiple of block length\");\n}, g$6.prototype.setAutoPadding = function(t5) {\n  return (this || c$9)._autopadding = !!t5, this || c$9;\n}, v$6.prototype.add = function(t5) {\n  (this || c$9).cache = p$a.concat([(this || c$9).cache, t5]);\n}, v$6.prototype.get = function(t5) {\n  var e7;\n  if (t5) {\n    if ((this || c$9).cache.length > 16) return e7 = (this || c$9).cache.slice(0, 16), (this || c$9).cache = (this || c$9).cache.slice(16), e7;\n  } else if ((this || c$9).cache.length >= 16) return e7 = (this || c$9).cache.slice(0, 16), (this || c$9).cache = (this || c$9).cache.slice(16), e7;\n  return null;\n}, v$6.prototype.flush = function() {\n  if ((this || c$9).cache.length) return (this || c$9).cache;\n}, s$9.createDecipher = function(t5, e7) {\n  var r5 = u$9[t5.toLowerCase()];\n  if (!r5) throw new TypeError(\"invalid suite type\");\n  var i5 = m$7(e7, false, r5.key, r5.iv);\n  return w$8(t5, i5.key, i5.iv);\n}, s$9.createDecipheriv = w$8;\nvar c$a = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar s$a = {};\nvar f$g = M$2;\nvar p$b = k$6;\nvar l$b = u3.Buffer;\nvar u$a = V$1;\nvar d$a = f$6;\nvar m$8 = h$9;\nvar y$7 = a$c;\nfunction v$7(t5, e7, r5) {\n  d$a.call(this || c$a), (this || c$a)._cache = new g$7(), (this || c$a)._cipher = new m$8.AES(e7), (this || c$a)._prev = l$b.from(r5), (this || c$a)._mode = t5, (this || c$a)._autopadding = true;\n}\nt$2(v$7, d$a), v$7.prototype._update = function(t5) {\n  var e7, r5;\n  (this || c$a)._cache.add(t5);\n  for (var i5 = []; e7 = (this || c$a)._cache.get(); ) r5 = (this || c$a)._mode.encrypt(this || c$a, e7), i5.push(r5);\n  return l$b.concat(i5);\n};\nvar _$8 = l$b.alloc(16, 16);\nfunction g$7() {\n  (this || c$a).cache = l$b.allocUnsafe(0);\n}\nfunction w$9(t5, e7, r5) {\n  var i5 = f$g[t5.toLowerCase()];\n  if (!i5) throw new TypeError(\"invalid suite type\");\n  if (\"string\" == typeof e7 && (e7 = l$b.from(e7)), e7.length !== i5.key / 8) throw new TypeError(\"invalid key length \" + e7.length);\n  if (\"string\" == typeof r5 && (r5 = l$b.from(r5)), \"GCM\" !== i5.mode && r5.length !== i5.iv) throw new TypeError(\"invalid iv length \" + r5.length);\n  return \"stream\" === i5.type ? new u$a(i5.module, e7, r5) : \"auth\" === i5.type ? new p$b(i5.module, e7, r5) : new v$7(i5.module, e7, r5);\n}\nv$7.prototype._final = function() {\n  var t5 = (this || c$a)._cache.flush();\n  if ((this || c$a)._autopadding) return t5 = (this || c$a)._mode.encrypt(this || c$a, t5), (this || c$a)._cipher.scrub(), t5;\n  if (!t5.equals(_$8)) throw (this || c$a)._cipher.scrub(), new Error(\"data not multiple of block length\");\n}, v$7.prototype.setAutoPadding = function(t5) {\n  return (this || c$a)._autopadding = !!t5, this || c$a;\n}, g$7.prototype.add = function(t5) {\n  (this || c$a).cache = l$b.concat([(this || c$a).cache, t5]);\n}, g$7.prototype.get = function() {\n  if ((this || c$a).cache.length > 15) {\n    var t5 = (this || c$a).cache.slice(0, 16);\n    return (this || c$a).cache = (this || c$a).cache.slice(16), t5;\n  }\n  return null;\n}, g$7.prototype.flush = function() {\n  for (var t5 = 16 - (this || c$a).cache.length, e7 = l$b.allocUnsafe(t5), r5 = -1; ++r5 < t5; ) e7.writeUInt8(t5, r5);\n  return l$b.concat([(this || c$a).cache, e7]);\n}, s$a.createCipheriv = w$9, s$a.createCipher = function(t5, e7) {\n  var r5 = f$g[t5.toLowerCase()];\n  if (!r5) throw new TypeError(\"invalid suite type\");\n  var i5 = y$7(e7, false, r5.key, r5.iv);\n  return w$9(t5, i5.key, i5.iv);\n};\nvar t$32 = {};\nvar p$c = s$a;\nvar c$b = s$9;\nvar o$c = F$2;\nt$32.createCipher = t$32.Cipher = p$c.createCipher, t$32.createCipheriv = t$32.Cipheriv = p$c.createCipheriv, t$32.createDecipher = t$32.Decipher = c$b.createDecipher, t$32.createDecipheriv = t$32.Decipheriv = c$b.createDecipheriv, t$32.listCiphers = t$32.getCiphers = function() {\n  return Object.keys(o$c);\n};\nvar e$9 = { \"des-ecb\": { key: 8, iv: 0 } };\ne$9[\"des-cbc\"] = e$9.des = { key: 8, iv: 8 }, e$9[\"des-ede3-cbc\"] = e$9.des3 = { key: 24, iv: 8 }, e$9[\"des-ede3\"] = { key: 24, iv: 0 }, e$9[\"des-ede-cbc\"] = { key: 16, iv: 8 }, e$9[\"des-ede\"] = { key: 16, iv: 0 };\nvar p$d = {};\nvar n$b = l$7;\nvar s$b = t$32;\nvar v$8 = M$2;\nvar y$8 = e$9;\nvar a$d = a$c;\nfunction f$h(e7, r5, i5) {\n  if (e7 = e7.toLowerCase(), v$8[e7]) return s$b.createCipheriv(e7, r5, i5);\n  if (y$8[e7]) return new n$b({ key: r5, iv: i5, mode: e7 });\n  throw new TypeError(\"invalid suite type\");\n}\nfunction c$c(e7, r5, i5) {\n  if (e7 = e7.toLowerCase(), v$8[e7]) return s$b.createDecipheriv(e7, r5, i5);\n  if (y$8[e7]) return new n$b({ key: r5, iv: i5, mode: e7, decrypt: true });\n  throw new TypeError(\"invalid suite type\");\n}\np$d.createCipher = p$d.Cipher = function(e7, r5) {\n  var i5, t5;\n  if (e7 = e7.toLowerCase(), v$8[e7]) i5 = v$8[e7].key, t5 = v$8[e7].iv;\n  else {\n    if (!y$8[e7]) throw new TypeError(\"invalid suite type\");\n    i5 = 8 * y$8[e7].key, t5 = y$8[e7].iv;\n  }\n  var o5 = a$d(r5, false, i5, t5);\n  return f$h(e7, o5.key, o5.iv);\n}, p$d.createCipheriv = p$d.Cipheriv = f$h, p$d.createDecipher = p$d.Decipher = function(e7, r5) {\n  var i5, t5;\n  if (e7 = e7.toLowerCase(), v$8[e7]) i5 = v$8[e7].key, t5 = v$8[e7].iv;\n  else {\n    if (!y$8[e7]) throw new TypeError(\"invalid suite type\");\n    i5 = 8 * y$8[e7].key, t5 = y$8[e7].iv;\n  }\n  var o5 = a$d(r5, false, i5, t5);\n  return c$c(e7, o5.key, o5.iv);\n}, p$d.createDecipheriv = p$d.Decipheriv = c$c, p$d.listCiphers = p$d.getCiphers = function() {\n  return Object.keys(y$8).concat(s$b.getCiphers());\n};\nvar t$4 = Object.freeze({});\nvar i$3 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar r$7 = {};\nvar h$a = { exports: r$7 };\n!(function(r5, h5) {\n  function n5(t5, i5) {\n    if (!t5) throw new Error(i5 || \"Assertion failed\");\n  }\n  function e7(t5, i5) {\n    t5.super_ = i5;\n    var r6 = function() {\n    };\n    r6.prototype = i5.prototype, t5.prototype = new r6(), t5.prototype.constructor = t5;\n  }\n  function o5(t5, r6, h6) {\n    if (o5.isBN(t5)) return t5;\n    (this || i$3).negative = 0, (this || i$3).words = null, (this || i$3).length = 0, (this || i$3).red = null, null !== t5 && (\"le\" !== r6 && \"be\" !== r6 || (h6 = r6, r6 = 10), this._init(t5 || 0, r6 || 10, h6 || \"be\"));\n  }\n  var s5;\n  \"object\" == typeof r5 ? r5.exports = o5 : h5.BN = o5, o5.BN = o5, o5.wordSize = 26;\n  try {\n    s5 = t$4.Buffer;\n  } catch (t5) {\n  }\n  function u5(t5, i5, r6) {\n    for (var h6 = 0, n6 = Math.min(t5.length, r6), e8 = i5; e8 < n6; e8++) {\n      var o6 = t5.charCodeAt(e8) - 48;\n      h6 <<= 4, h6 |= o6 >= 49 && o6 <= 54 ? o6 - 49 + 10 : o6 >= 17 && o6 <= 22 ? o6 - 17 + 10 : 15 & o6;\n    }\n    return h6;\n  }\n  function a5(t5, i5, r6, h6) {\n    for (var n6 = 0, e8 = Math.min(t5.length, r6), o6 = i5; o6 < e8; o6++) {\n      var s6 = t5.charCodeAt(o6) - 48;\n      n6 *= h6, n6 += s6 >= 49 ? s6 - 49 + 10 : s6 >= 17 ? s6 - 17 + 10 : s6;\n    }\n    return n6;\n  }\n  o5.isBN = function(t5) {\n    return t5 instanceof o5 || null !== t5 && \"object\" == typeof t5 && t5.constructor.wordSize === o5.wordSize && Array.isArray(t5.words);\n  }, o5.max = function(t5, i5) {\n    return t5.cmp(i5) > 0 ? t5 : i5;\n  }, o5.min = function(t5, i5) {\n    return t5.cmp(i5) < 0 ? t5 : i5;\n  }, o5.prototype._init = function(t5, r6, h6) {\n    if (\"number\" == typeof t5) return this._initNumber(t5, r6, h6);\n    if (\"object\" == typeof t5) return this._initArray(t5, r6, h6);\n    \"hex\" === r6 && (r6 = 16), n5(r6 === (0 | r6) && r6 >= 2 && r6 <= 36);\n    var e8 = 0;\n    \"-\" === (t5 = t5.toString().replace(/\\s+/g, \"\"))[0] && e8++, 16 === r6 ? this._parseHex(t5, e8) : this._parseBase(t5, r6, e8), \"-\" === t5[0] && ((this || i$3).negative = 1), this.strip(), \"le\" === h6 && this._initArray(this.toArray(), r6, h6);\n  }, o5.prototype._initNumber = function(t5, r6, h6) {\n    t5 < 0 && ((this || i$3).negative = 1, t5 = -t5), t5 < 67108864 ? ((this || i$3).words = [67108863 & t5], (this || i$3).length = 1) : t5 < 4503599627370496 ? ((this || i$3).words = [67108863 & t5, t5 / 67108864 & 67108863], (this || i$3).length = 2) : (n5(t5 < 9007199254740992), (this || i$3).words = [67108863 & t5, t5 / 67108864 & 67108863, 1], (this || i$3).length = 3), \"le\" === h6 && this._initArray(this.toArray(), r6, h6);\n  }, o5.prototype._initArray = function(t5, r6, h6) {\n    if (n5(\"number\" == typeof t5.length), t5.length <= 0) return (this || i$3).words = [0], (this || i$3).length = 1, this || i$3;\n    (this || i$3).length = Math.ceil(t5.length / 3), (this || i$3).words = new Array((this || i$3).length);\n    for (var e8 = 0; e8 < (this || i$3).length; e8++) (this || i$3).words[e8] = 0;\n    var o6, s6, u6 = 0;\n    if (\"be\" === h6) for (e8 = t5.length - 1, o6 = 0; e8 >= 0; e8 -= 3) s6 = t5[e8] | t5[e8 - 1] << 8 | t5[e8 - 2] << 16, (this || i$3).words[o6] |= s6 << u6 & 67108863, (this || i$3).words[o6 + 1] = s6 >>> 26 - u6 & 67108863, (u6 += 24) >= 26 && (u6 -= 26, o6++);\n    else if (\"le\" === h6) for (e8 = 0, o6 = 0; e8 < t5.length; e8 += 3) s6 = t5[e8] | t5[e8 + 1] << 8 | t5[e8 + 2] << 16, (this || i$3).words[o6] |= s6 << u6 & 67108863, (this || i$3).words[o6 + 1] = s6 >>> 26 - u6 & 67108863, (u6 += 24) >= 26 && (u6 -= 26, o6++);\n    return this.strip();\n  }, o5.prototype._parseHex = function(t5, r6) {\n    (this || i$3).length = Math.ceil((t5.length - r6) / 6), (this || i$3).words = new Array((this || i$3).length);\n    for (var h6 = 0; h6 < (this || i$3).length; h6++) (this || i$3).words[h6] = 0;\n    var n6, e8, o6 = 0;\n    for (h6 = t5.length - 6, n6 = 0; h6 >= r6; h6 -= 6) e8 = u5(t5, h6, h6 + 6), (this || i$3).words[n6] |= e8 << o6 & 67108863, (this || i$3).words[n6 + 1] |= e8 >>> 26 - o6 & 4194303, (o6 += 24) >= 26 && (o6 -= 26, n6++);\n    h6 + 6 !== r6 && (e8 = u5(t5, r6, h6 + 6), (this || i$3).words[n6] |= e8 << o6 & 67108863, (this || i$3).words[n6 + 1] |= e8 >>> 26 - o6 & 4194303), this.strip();\n  }, o5.prototype._parseBase = function(t5, r6, h6) {\n    (this || i$3).words = [0], (this || i$3).length = 1;\n    for (var n6 = 0, e8 = 1; e8 <= 67108863; e8 *= r6) n6++;\n    n6--, e8 = e8 / r6 | 0;\n    for (var o6 = t5.length - h6, s6 = o6 % n6, u6 = Math.min(o6, o6 - s6) + h6, l6 = 0, m5 = h6; m5 < u6; m5 += n6) l6 = a5(t5, m5, m5 + n6, r6), this.imuln(e8), (this || i$3).words[0] + l6 < 67108864 ? (this || i$3).words[0] += l6 : this._iaddn(l6);\n    if (0 !== s6) {\n      var f7 = 1;\n      for (l6 = a5(t5, m5, t5.length, r6), m5 = 0; m5 < s6; m5++) f7 *= r6;\n      this.imuln(f7), (this || i$3).words[0] + l6 < 67108864 ? (this || i$3).words[0] += l6 : this._iaddn(l6);\n    }\n  }, o5.prototype.copy = function(t5) {\n    t5.words = new Array((this || i$3).length);\n    for (var r6 = 0; r6 < (this || i$3).length; r6++) t5.words[r6] = (this || i$3).words[r6];\n    t5.length = (this || i$3).length, t5.negative = (this || i$3).negative, t5.red = (this || i$3).red;\n  }, o5.prototype.clone = function() {\n    var t5 = new o5(null);\n    return this.copy(t5), t5;\n  }, o5.prototype._expand = function(t5) {\n    for (; (this || i$3).length < t5; ) (this || i$3).words[(this || i$3).length++] = 0;\n    return this || i$3;\n  }, o5.prototype.strip = function() {\n    for (; (this || i$3).length > 1 && 0 === (this || i$3).words[(this || i$3).length - 1]; ) (this || i$3).length--;\n    return this._normSign();\n  }, o5.prototype._normSign = function() {\n    return 1 === (this || i$3).length && 0 === (this || i$3).words[0] && ((this || i$3).negative = 0), this || i$3;\n  }, o5.prototype.inspect = function() {\n    return ((this || i$3).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n  };\n  var l5 = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"], m4 = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], f6 = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n  function d4(t5, i5, r6) {\n    r6.negative = i5.negative ^ t5.negative;\n    var h6 = t5.length + i5.length | 0;\n    r6.length = h6, h6 = h6 - 1 | 0;\n    var n6 = 0 | t5.words[0], e8 = 0 | i5.words[0], o6 = n6 * e8, s6 = 67108863 & o6, u6 = o6 / 67108864 | 0;\n    r6.words[0] = s6;\n    for (var a6 = 1; a6 < h6; a6++) {\n      for (var l6 = u6 >>> 26, m5 = 67108863 & u6, f7 = Math.min(a6, i5.length - 1), d5 = Math.max(0, a6 - t5.length + 1); d5 <= f7; d5++) {\n        var p6 = a6 - d5 | 0;\n        l6 += (o6 = (n6 = 0 | t5.words[p6]) * (e8 = 0 | i5.words[d5]) + m5) / 67108864 | 0, m5 = 67108863 & o6;\n      }\n      r6.words[a6] = 0 | m5, u6 = 0 | l6;\n    }\n    return 0 !== u6 ? r6.words[a6] = 0 | u6 : r6.length--, r6.strip();\n  }\n  o5.prototype.toString = function(t5, r6) {\n    var h6;\n    if (r6 = 0 | r6 || 1, 16 === (t5 = t5 || 10) || \"hex\" === t5) {\n      h6 = \"\";\n      for (var e8 = 0, o6 = 0, s6 = 0; s6 < (this || i$3).length; s6++) {\n        var u6 = (this || i$3).words[s6], a6 = (16777215 & (u6 << e8 | o6)).toString(16);\n        h6 = 0 !== (o6 = u6 >>> 24 - e8 & 16777215) || s6 !== (this || i$3).length - 1 ? l5[6 - a6.length] + a6 + h6 : a6 + h6, (e8 += 2) >= 26 && (e8 -= 26, s6--);\n      }\n      for (0 !== o6 && (h6 = o6.toString(16) + h6); h6.length % r6 != 0; ) h6 = \"0\" + h6;\n      return 0 !== (this || i$3).negative && (h6 = \"-\" + h6), h6;\n    }\n    if (t5 === (0 | t5) && t5 >= 2 && t5 <= 36) {\n      var d5 = m4[t5], p6 = f6[t5];\n      h6 = \"\";\n      var M5 = this.clone();\n      for (M5.negative = 0; !M5.isZero(); ) {\n        var v6 = M5.modn(p6).toString(t5);\n        h6 = (M5 = M5.idivn(p6)).isZero() ? v6 + h6 : l5[d5 - v6.length] + v6 + h6;\n      }\n      for (this.isZero() && (h6 = \"0\" + h6); h6.length % r6 != 0; ) h6 = \"0\" + h6;\n      return 0 !== (this || i$3).negative && (h6 = \"-\" + h6), h6;\n    }\n    n5(false, \"Base should be between 2 and 36\");\n  }, o5.prototype.toNumber = function() {\n    var t5 = (this || i$3).words[0];\n    return 2 === (this || i$3).length ? t5 += 67108864 * (this || i$3).words[1] : 3 === (this || i$3).length && 1 === (this || i$3).words[2] ? t5 += 4503599627370496 + 67108864 * (this || i$3).words[1] : (this || i$3).length > 2 && n5(false, \"Number can only safely store up to 53 bits\"), 0 !== (this || i$3).negative ? -t5 : t5;\n  }, o5.prototype.toJSON = function() {\n    return this.toString(16);\n  }, o5.prototype.toBuffer = function(t5, i5) {\n    return n5(void 0 !== s5), this.toArrayLike(s5, t5, i5);\n  }, o5.prototype.toArray = function(t5, i5) {\n    return this.toArrayLike(Array, t5, i5);\n  }, o5.prototype.toArrayLike = function(t5, i5, r6) {\n    var h6 = this.byteLength(), e8 = r6 || Math.max(1, h6);\n    n5(h6 <= e8, \"byte array longer than desired length\"), n5(e8 > 0, \"Requested array length <= 0\"), this.strip();\n    var o6, s6, u6 = \"le\" === i5, a6 = new t5(e8), l6 = this.clone();\n    if (u6) {\n      for (s6 = 0; !l6.isZero(); s6++) o6 = l6.andln(255), l6.iushrn(8), a6[s6] = o6;\n      for (; s6 < e8; s6++) a6[s6] = 0;\n    } else {\n      for (s6 = 0; s6 < e8 - h6; s6++) a6[s6] = 0;\n      for (s6 = 0; !l6.isZero(); s6++) o6 = l6.andln(255), l6.iushrn(8), a6[e8 - s6 - 1] = o6;\n    }\n    return a6;\n  }, Math.clz32 ? o5.prototype._countBits = function(t5) {\n    return 32 - Math.clz32(t5);\n  } : o5.prototype._countBits = function(t5) {\n    var i5 = t5, r6 = 0;\n    return i5 >= 4096 && (r6 += 13, i5 >>>= 13), i5 >= 64 && (r6 += 7, i5 >>>= 7), i5 >= 8 && (r6 += 4, i5 >>>= 4), i5 >= 2 && (r6 += 2, i5 >>>= 2), r6 + i5;\n  }, o5.prototype._zeroBits = function(t5) {\n    if (0 === t5) return 26;\n    var i5 = t5, r6 = 0;\n    return 0 == (8191 & i5) && (r6 += 13, i5 >>>= 13), 0 == (127 & i5) && (r6 += 7, i5 >>>= 7), 0 == (15 & i5) && (r6 += 4, i5 >>>= 4), 0 == (3 & i5) && (r6 += 2, i5 >>>= 2), 0 == (1 & i5) && r6++, r6;\n  }, o5.prototype.bitLength = function() {\n    var t5 = (this || i$3).words[(this || i$3).length - 1], r6 = this._countBits(t5);\n    return 26 * ((this || i$3).length - 1) + r6;\n  }, o5.prototype.zeroBits = function() {\n    if (this.isZero()) return 0;\n    for (var t5 = 0, r6 = 0; r6 < (this || i$3).length; r6++) {\n      var h6 = this._zeroBits((this || i$3).words[r6]);\n      if (t5 += h6, 26 !== h6) break;\n    }\n    return t5;\n  }, o5.prototype.byteLength = function() {\n    return Math.ceil(this.bitLength() / 8);\n  }, o5.prototype.toTwos = function(t5) {\n    return 0 !== (this || i$3).negative ? this.abs().inotn(t5).iaddn(1) : this.clone();\n  }, o5.prototype.fromTwos = function(t5) {\n    return this.testn(t5 - 1) ? this.notn(t5).iaddn(1).ineg() : this.clone();\n  }, o5.prototype.isNeg = function() {\n    return 0 !== (this || i$3).negative;\n  }, o5.prototype.neg = function() {\n    return this.clone().ineg();\n  }, o5.prototype.ineg = function() {\n    return this.isZero() || ((this || i$3).negative ^= 1), this || i$3;\n  }, o5.prototype.iuor = function(t5) {\n    for (; (this || i$3).length < t5.length; ) (this || i$3).words[(this || i$3).length++] = 0;\n    for (var r6 = 0; r6 < t5.length; r6++) (this || i$3).words[r6] = (this || i$3).words[r6] | t5.words[r6];\n    return this.strip();\n  }, o5.prototype.ior = function(t5) {\n    return n5(0 == ((this || i$3).negative | t5.negative)), this.iuor(t5);\n  }, o5.prototype.or = function(t5) {\n    return (this || i$3).length > t5.length ? this.clone().ior(t5) : t5.clone().ior(this || i$3);\n  }, o5.prototype.uor = function(t5) {\n    return (this || i$3).length > t5.length ? this.clone().iuor(t5) : t5.clone().iuor(this || i$3);\n  }, o5.prototype.iuand = function(t5) {\n    var r6;\n    r6 = (this || i$3).length > t5.length ? t5 : this || i$3;\n    for (var h6 = 0; h6 < r6.length; h6++) (this || i$3).words[h6] = (this || i$3).words[h6] & t5.words[h6];\n    return (this || i$3).length = r6.length, this.strip();\n  }, o5.prototype.iand = function(t5) {\n    return n5(0 == ((this || i$3).negative | t5.negative)), this.iuand(t5);\n  }, o5.prototype.and = function(t5) {\n    return (this || i$3).length > t5.length ? this.clone().iand(t5) : t5.clone().iand(this || i$3);\n  }, o5.prototype.uand = function(t5) {\n    return (this || i$3).length > t5.length ? this.clone().iuand(t5) : t5.clone().iuand(this || i$3);\n  }, o5.prototype.iuxor = function(t5) {\n    var r6, h6;\n    (this || i$3).length > t5.length ? (r6 = this || i$3, h6 = t5) : (r6 = t5, h6 = this || i$3);\n    for (var n6 = 0; n6 < h6.length; n6++) (this || i$3).words[n6] = r6.words[n6] ^ h6.words[n6];\n    if ((this || i$3) !== r6) for (; n6 < r6.length; n6++) (this || i$3).words[n6] = r6.words[n6];\n    return (this || i$3).length = r6.length, this.strip();\n  }, o5.prototype.ixor = function(t5) {\n    return n5(0 == ((this || i$3).negative | t5.negative)), this.iuxor(t5);\n  }, o5.prototype.xor = function(t5) {\n    return (this || i$3).length > t5.length ? this.clone().ixor(t5) : t5.clone().ixor(this || i$3);\n  }, o5.prototype.uxor = function(t5) {\n    return (this || i$3).length > t5.length ? this.clone().iuxor(t5) : t5.clone().iuxor(this || i$3);\n  }, o5.prototype.inotn = function(t5) {\n    n5(\"number\" == typeof t5 && t5 >= 0);\n    var r6 = 0 | Math.ceil(t5 / 26), h6 = t5 % 26;\n    this._expand(r6), h6 > 0 && r6--;\n    for (var e8 = 0; e8 < r6; e8++) (this || i$3).words[e8] = 67108863 & ~(this || i$3).words[e8];\n    return h6 > 0 && ((this || i$3).words[e8] = ~(this || i$3).words[e8] & 67108863 >> 26 - h6), this.strip();\n  }, o5.prototype.notn = function(t5) {\n    return this.clone().inotn(t5);\n  }, o5.prototype.setn = function(t5, r6) {\n    n5(\"number\" == typeof t5 && t5 >= 0);\n    var h6 = t5 / 26 | 0, e8 = t5 % 26;\n    return this._expand(h6 + 1), (this || i$3).words[h6] = r6 ? (this || i$3).words[h6] | 1 << e8 : (this || i$3).words[h6] & ~(1 << e8), this.strip();\n  }, o5.prototype.iadd = function(t5) {\n    var r6, h6, n6;\n    if (0 !== (this || i$3).negative && 0 === t5.negative) return (this || i$3).negative = 0, r6 = this.isub(t5), (this || i$3).negative ^= 1, this._normSign();\n    if (0 === (this || i$3).negative && 0 !== t5.negative) return t5.negative = 0, r6 = this.isub(t5), t5.negative = 1, r6._normSign();\n    (this || i$3).length > t5.length ? (h6 = this || i$3, n6 = t5) : (h6 = t5, n6 = this || i$3);\n    for (var e8 = 0, o6 = 0; o6 < n6.length; o6++) r6 = (0 | h6.words[o6]) + (0 | n6.words[o6]) + e8, (this || i$3).words[o6] = 67108863 & r6, e8 = r6 >>> 26;\n    for (; 0 !== e8 && o6 < h6.length; o6++) r6 = (0 | h6.words[o6]) + e8, (this || i$3).words[o6] = 67108863 & r6, e8 = r6 >>> 26;\n    if ((this || i$3).length = h6.length, 0 !== e8) (this || i$3).words[(this || i$3).length] = e8, (this || i$3).length++;\n    else if (h6 !== (this || i$3)) for (; o6 < h6.length; o6++) (this || i$3).words[o6] = h6.words[o6];\n    return this || i$3;\n  }, o5.prototype.add = function(t5) {\n    var r6;\n    return 0 !== t5.negative && 0 === (this || i$3).negative ? (t5.negative = 0, r6 = this.sub(t5), t5.negative ^= 1, r6) : 0 === t5.negative && 0 !== (this || i$3).negative ? ((this || i$3).negative = 0, r6 = t5.sub(this || i$3), (this || i$3).negative = 1, r6) : (this || i$3).length > t5.length ? this.clone().iadd(t5) : t5.clone().iadd(this || i$3);\n  }, o5.prototype.isub = function(t5) {\n    if (0 !== t5.negative) {\n      t5.negative = 0;\n      var r6 = this.iadd(t5);\n      return t5.negative = 1, r6._normSign();\n    }\n    if (0 !== (this || i$3).negative) return (this || i$3).negative = 0, this.iadd(t5), (this || i$3).negative = 1, this._normSign();\n    var h6, n6, e8 = this.cmp(t5);\n    if (0 === e8) return (this || i$3).negative = 0, (this || i$3).length = 1, (this || i$3).words[0] = 0, this || i$3;\n    e8 > 0 ? (h6 = this || i$3, n6 = t5) : (h6 = t5, n6 = this || i$3);\n    for (var o6 = 0, s6 = 0; s6 < n6.length; s6++) o6 = (r6 = (0 | h6.words[s6]) - (0 | n6.words[s6]) + o6) >> 26, (this || i$3).words[s6] = 67108863 & r6;\n    for (; 0 !== o6 && s6 < h6.length; s6++) o6 = (r6 = (0 | h6.words[s6]) + o6) >> 26, (this || i$3).words[s6] = 67108863 & r6;\n    if (0 === o6 && s6 < h6.length && h6 !== (this || i$3)) for (; s6 < h6.length; s6++) (this || i$3).words[s6] = h6.words[s6];\n    return (this || i$3).length = Math.max((this || i$3).length, s6), h6 !== (this || i$3) && ((this || i$3).negative = 1), this.strip();\n  }, o5.prototype.sub = function(t5) {\n    return this.clone().isub(t5);\n  };\n  var p5 = function(t5, i5, r6) {\n    var h6, n6, e8, o6 = t5.words, s6 = i5.words, u6 = r6.words, a6 = 0, l6 = 0 | o6[0], m5 = 8191 & l6, f7 = l6 >>> 13, d5 = 0 | o6[1], p6 = 8191 & d5, M5 = d5 >>> 13, v6 = 0 | o6[2], g5 = 8191 & v6, c6 = v6 >>> 13, w5 = 0 | o6[3], y6 = 8191 & w5, b5 = w5 >>> 13, _5 = 0 | o6[4], k5 = 8191 & _5, A5 = _5 >>> 13, x4 = 0 | o6[5], S4 = 8191 & x4, Z3 = x4 >>> 13, R4 = 0 | o6[6], q3 = 8191 & R4, B4 = R4 >>> 13, N4 = 0 | o6[7], L4 = 8191 & N4, I4 = N4 >>> 13, T4 = 0 | o6[8], z4 = 8191 & T4, E4 = T4 >>> 13, O4 = 0 | o6[9], j4 = 8191 & O4, K3 = O4 >>> 13, P4 = 0 | s6[0], F4 = 8191 & P4, C4 = P4 >>> 13, D4 = 0 | s6[1], H3 = 8191 & D4, J3 = D4 >>> 13, U4 = 0 | s6[2], G3 = 8191 & U4, Q3 = U4 >>> 13, V3 = 0 | s6[3], W3 = 8191 & V3, X3 = V3 >>> 13, Y4 = 0 | s6[4], $3 = 8191 & Y4, tt2 = Y4 >>> 13, it2 = 0 | s6[5], rt = 8191 & it2, ht2 = it2 >>> 13, nt2 = 0 | s6[6], et2 = 8191 & nt2, ot = nt2 >>> 13, st2 = 0 | s6[7], ut = 8191 & st2, at = st2 >>> 13, lt = 0 | s6[8], mt = 8191 & lt, ft = lt >>> 13, dt = 0 | s6[9], pt = 8191 & dt, Mt = dt >>> 13;\n    r6.negative = t5.negative ^ i5.negative, r6.length = 19;\n    var vt = (a6 + (h6 = Math.imul(m5, F4)) | 0) + ((8191 & (n6 = (n6 = Math.imul(m5, C4)) + Math.imul(f7, F4) | 0)) << 13) | 0;\n    a6 = ((e8 = Math.imul(f7, C4)) + (n6 >>> 13) | 0) + (vt >>> 26) | 0, vt &= 67108863, h6 = Math.imul(p6, F4), n6 = (n6 = Math.imul(p6, C4)) + Math.imul(M5, F4) | 0, e8 = Math.imul(M5, C4);\n    var gt = (a6 + (h6 = h6 + Math.imul(m5, H3) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, J3) | 0) + Math.imul(f7, H3) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, J3) | 0) + (n6 >>> 13) | 0) + (gt >>> 26) | 0, gt &= 67108863, h6 = Math.imul(g5, F4), n6 = (n6 = Math.imul(g5, C4)) + Math.imul(c6, F4) | 0, e8 = Math.imul(c6, C4), h6 = h6 + Math.imul(p6, H3) | 0, n6 = (n6 = n6 + Math.imul(p6, J3) | 0) + Math.imul(M5, H3) | 0, e8 = e8 + Math.imul(M5, J3) | 0;\n    var ct = (a6 + (h6 = h6 + Math.imul(m5, G3) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, Q3) | 0) + Math.imul(f7, G3) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, Q3) | 0) + (n6 >>> 13) | 0) + (ct >>> 26) | 0, ct &= 67108863, h6 = Math.imul(y6, F4), n6 = (n6 = Math.imul(y6, C4)) + Math.imul(b5, F4) | 0, e8 = Math.imul(b5, C4), h6 = h6 + Math.imul(g5, H3) | 0, n6 = (n6 = n6 + Math.imul(g5, J3) | 0) + Math.imul(c6, H3) | 0, e8 = e8 + Math.imul(c6, J3) | 0, h6 = h6 + Math.imul(p6, G3) | 0, n6 = (n6 = n6 + Math.imul(p6, Q3) | 0) + Math.imul(M5, G3) | 0, e8 = e8 + Math.imul(M5, Q3) | 0;\n    var wt = (a6 + (h6 = h6 + Math.imul(m5, W3) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, X3) | 0) + Math.imul(f7, W3) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, X3) | 0) + (n6 >>> 13) | 0) + (wt >>> 26) | 0, wt &= 67108863, h6 = Math.imul(k5, F4), n6 = (n6 = Math.imul(k5, C4)) + Math.imul(A5, F4) | 0, e8 = Math.imul(A5, C4), h6 = h6 + Math.imul(y6, H3) | 0, n6 = (n6 = n6 + Math.imul(y6, J3) | 0) + Math.imul(b5, H3) | 0, e8 = e8 + Math.imul(b5, J3) | 0, h6 = h6 + Math.imul(g5, G3) | 0, n6 = (n6 = n6 + Math.imul(g5, Q3) | 0) + Math.imul(c6, G3) | 0, e8 = e8 + Math.imul(c6, Q3) | 0, h6 = h6 + Math.imul(p6, W3) | 0, n6 = (n6 = n6 + Math.imul(p6, X3) | 0) + Math.imul(M5, W3) | 0, e8 = e8 + Math.imul(M5, X3) | 0;\n    var yt = (a6 + (h6 = h6 + Math.imul(m5, $3) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, tt2) | 0) + Math.imul(f7, $3) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, tt2) | 0) + (n6 >>> 13) | 0) + (yt >>> 26) | 0, yt &= 67108863, h6 = Math.imul(S4, F4), n6 = (n6 = Math.imul(S4, C4)) + Math.imul(Z3, F4) | 0, e8 = Math.imul(Z3, C4), h6 = h6 + Math.imul(k5, H3) | 0, n6 = (n6 = n6 + Math.imul(k5, J3) | 0) + Math.imul(A5, H3) | 0, e8 = e8 + Math.imul(A5, J3) | 0, h6 = h6 + Math.imul(y6, G3) | 0, n6 = (n6 = n6 + Math.imul(y6, Q3) | 0) + Math.imul(b5, G3) | 0, e8 = e8 + Math.imul(b5, Q3) | 0, h6 = h6 + Math.imul(g5, W3) | 0, n6 = (n6 = n6 + Math.imul(g5, X3) | 0) + Math.imul(c6, W3) | 0, e8 = e8 + Math.imul(c6, X3) | 0, h6 = h6 + Math.imul(p6, $3) | 0, n6 = (n6 = n6 + Math.imul(p6, tt2) | 0) + Math.imul(M5, $3) | 0, e8 = e8 + Math.imul(M5, tt2) | 0;\n    var bt = (a6 + (h6 = h6 + Math.imul(m5, rt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, ht2) | 0) + Math.imul(f7, rt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, ht2) | 0) + (n6 >>> 13) | 0) + (bt >>> 26) | 0, bt &= 67108863, h6 = Math.imul(q3, F4), n6 = (n6 = Math.imul(q3, C4)) + Math.imul(B4, F4) | 0, e8 = Math.imul(B4, C4), h6 = h6 + Math.imul(S4, H3) | 0, n6 = (n6 = n6 + Math.imul(S4, J3) | 0) + Math.imul(Z3, H3) | 0, e8 = e8 + Math.imul(Z3, J3) | 0, h6 = h6 + Math.imul(k5, G3) | 0, n6 = (n6 = n6 + Math.imul(k5, Q3) | 0) + Math.imul(A5, G3) | 0, e8 = e8 + Math.imul(A5, Q3) | 0, h6 = h6 + Math.imul(y6, W3) | 0, n6 = (n6 = n6 + Math.imul(y6, X3) | 0) + Math.imul(b5, W3) | 0, e8 = e8 + Math.imul(b5, X3) | 0, h6 = h6 + Math.imul(g5, $3) | 0, n6 = (n6 = n6 + Math.imul(g5, tt2) | 0) + Math.imul(c6, $3) | 0, e8 = e8 + Math.imul(c6, tt2) | 0, h6 = h6 + Math.imul(p6, rt) | 0, n6 = (n6 = n6 + Math.imul(p6, ht2) | 0) + Math.imul(M5, rt) | 0, e8 = e8 + Math.imul(M5, ht2) | 0;\n    var _t2 = (a6 + (h6 = h6 + Math.imul(m5, et2) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, ot) | 0) + Math.imul(f7, et2) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, ot) | 0) + (n6 >>> 13) | 0) + (_t2 >>> 26) | 0, _t2 &= 67108863, h6 = Math.imul(L4, F4), n6 = (n6 = Math.imul(L4, C4)) + Math.imul(I4, F4) | 0, e8 = Math.imul(I4, C4), h6 = h6 + Math.imul(q3, H3) | 0, n6 = (n6 = n6 + Math.imul(q3, J3) | 0) + Math.imul(B4, H3) | 0, e8 = e8 + Math.imul(B4, J3) | 0, h6 = h6 + Math.imul(S4, G3) | 0, n6 = (n6 = n6 + Math.imul(S4, Q3) | 0) + Math.imul(Z3, G3) | 0, e8 = e8 + Math.imul(Z3, Q3) | 0, h6 = h6 + Math.imul(k5, W3) | 0, n6 = (n6 = n6 + Math.imul(k5, X3) | 0) + Math.imul(A5, W3) | 0, e8 = e8 + Math.imul(A5, X3) | 0, h6 = h6 + Math.imul(y6, $3) | 0, n6 = (n6 = n6 + Math.imul(y6, tt2) | 0) + Math.imul(b5, $3) | 0, e8 = e8 + Math.imul(b5, tt2) | 0, h6 = h6 + Math.imul(g5, rt) | 0, n6 = (n6 = n6 + Math.imul(g5, ht2) | 0) + Math.imul(c6, rt) | 0, e8 = e8 + Math.imul(c6, ht2) | 0, h6 = h6 + Math.imul(p6, et2) | 0, n6 = (n6 = n6 + Math.imul(p6, ot) | 0) + Math.imul(M5, et2) | 0, e8 = e8 + Math.imul(M5, ot) | 0;\n    var kt = (a6 + (h6 = h6 + Math.imul(m5, ut) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, at) | 0) + Math.imul(f7, ut) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, at) | 0) + (n6 >>> 13) | 0) + (kt >>> 26) | 0, kt &= 67108863, h6 = Math.imul(z4, F4), n6 = (n6 = Math.imul(z4, C4)) + Math.imul(E4, F4) | 0, e8 = Math.imul(E4, C4), h6 = h6 + Math.imul(L4, H3) | 0, n6 = (n6 = n6 + Math.imul(L4, J3) | 0) + Math.imul(I4, H3) | 0, e8 = e8 + Math.imul(I4, J3) | 0, h6 = h6 + Math.imul(q3, G3) | 0, n6 = (n6 = n6 + Math.imul(q3, Q3) | 0) + Math.imul(B4, G3) | 0, e8 = e8 + Math.imul(B4, Q3) | 0, h6 = h6 + Math.imul(S4, W3) | 0, n6 = (n6 = n6 + Math.imul(S4, X3) | 0) + Math.imul(Z3, W3) | 0, e8 = e8 + Math.imul(Z3, X3) | 0, h6 = h6 + Math.imul(k5, $3) | 0, n6 = (n6 = n6 + Math.imul(k5, tt2) | 0) + Math.imul(A5, $3) | 0, e8 = e8 + Math.imul(A5, tt2) | 0, h6 = h6 + Math.imul(y6, rt) | 0, n6 = (n6 = n6 + Math.imul(y6, ht2) | 0) + Math.imul(b5, rt) | 0, e8 = e8 + Math.imul(b5, ht2) | 0, h6 = h6 + Math.imul(g5, et2) | 0, n6 = (n6 = n6 + Math.imul(g5, ot) | 0) + Math.imul(c6, et2) | 0, e8 = e8 + Math.imul(c6, ot) | 0, h6 = h6 + Math.imul(p6, ut) | 0, n6 = (n6 = n6 + Math.imul(p6, at) | 0) + Math.imul(M5, ut) | 0, e8 = e8 + Math.imul(M5, at) | 0;\n    var At = (a6 + (h6 = h6 + Math.imul(m5, mt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, ft) | 0) + Math.imul(f7, mt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, ft) | 0) + (n6 >>> 13) | 0) + (At >>> 26) | 0, At &= 67108863, h6 = Math.imul(j4, F4), n6 = (n6 = Math.imul(j4, C4)) + Math.imul(K3, F4) | 0, e8 = Math.imul(K3, C4), h6 = h6 + Math.imul(z4, H3) | 0, n6 = (n6 = n6 + Math.imul(z4, J3) | 0) + Math.imul(E4, H3) | 0, e8 = e8 + Math.imul(E4, J3) | 0, h6 = h6 + Math.imul(L4, G3) | 0, n6 = (n6 = n6 + Math.imul(L4, Q3) | 0) + Math.imul(I4, G3) | 0, e8 = e8 + Math.imul(I4, Q3) | 0, h6 = h6 + Math.imul(q3, W3) | 0, n6 = (n6 = n6 + Math.imul(q3, X3) | 0) + Math.imul(B4, W3) | 0, e8 = e8 + Math.imul(B4, X3) | 0, h6 = h6 + Math.imul(S4, $3) | 0, n6 = (n6 = n6 + Math.imul(S4, tt2) | 0) + Math.imul(Z3, $3) | 0, e8 = e8 + Math.imul(Z3, tt2) | 0, h6 = h6 + Math.imul(k5, rt) | 0, n6 = (n6 = n6 + Math.imul(k5, ht2) | 0) + Math.imul(A5, rt) | 0, e8 = e8 + Math.imul(A5, ht2) | 0, h6 = h6 + Math.imul(y6, et2) | 0, n6 = (n6 = n6 + Math.imul(y6, ot) | 0) + Math.imul(b5, et2) | 0, e8 = e8 + Math.imul(b5, ot) | 0, h6 = h6 + Math.imul(g5, ut) | 0, n6 = (n6 = n6 + Math.imul(g5, at) | 0) + Math.imul(c6, ut) | 0, e8 = e8 + Math.imul(c6, at) | 0, h6 = h6 + Math.imul(p6, mt) | 0, n6 = (n6 = n6 + Math.imul(p6, ft) | 0) + Math.imul(M5, mt) | 0, e8 = e8 + Math.imul(M5, ft) | 0;\n    var xt = (a6 + (h6 = h6 + Math.imul(m5, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(m5, Mt) | 0) + Math.imul(f7, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(f7, Mt) | 0) + (n6 >>> 13) | 0) + (xt >>> 26) | 0, xt &= 67108863, h6 = Math.imul(j4, H3), n6 = (n6 = Math.imul(j4, J3)) + Math.imul(K3, H3) | 0, e8 = Math.imul(K3, J3), h6 = h6 + Math.imul(z4, G3) | 0, n6 = (n6 = n6 + Math.imul(z4, Q3) | 0) + Math.imul(E4, G3) | 0, e8 = e8 + Math.imul(E4, Q3) | 0, h6 = h6 + Math.imul(L4, W3) | 0, n6 = (n6 = n6 + Math.imul(L4, X3) | 0) + Math.imul(I4, W3) | 0, e8 = e8 + Math.imul(I4, X3) | 0, h6 = h6 + Math.imul(q3, $3) | 0, n6 = (n6 = n6 + Math.imul(q3, tt2) | 0) + Math.imul(B4, $3) | 0, e8 = e8 + Math.imul(B4, tt2) | 0, h6 = h6 + Math.imul(S4, rt) | 0, n6 = (n6 = n6 + Math.imul(S4, ht2) | 0) + Math.imul(Z3, rt) | 0, e8 = e8 + Math.imul(Z3, ht2) | 0, h6 = h6 + Math.imul(k5, et2) | 0, n6 = (n6 = n6 + Math.imul(k5, ot) | 0) + Math.imul(A5, et2) | 0, e8 = e8 + Math.imul(A5, ot) | 0, h6 = h6 + Math.imul(y6, ut) | 0, n6 = (n6 = n6 + Math.imul(y6, at) | 0) + Math.imul(b5, ut) | 0, e8 = e8 + Math.imul(b5, at) | 0, h6 = h6 + Math.imul(g5, mt) | 0, n6 = (n6 = n6 + Math.imul(g5, ft) | 0) + Math.imul(c6, mt) | 0, e8 = e8 + Math.imul(c6, ft) | 0;\n    var St = (a6 + (h6 = h6 + Math.imul(p6, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(p6, Mt) | 0) + Math.imul(M5, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(M5, Mt) | 0) + (n6 >>> 13) | 0) + (St >>> 26) | 0, St &= 67108863, h6 = Math.imul(j4, G3), n6 = (n6 = Math.imul(j4, Q3)) + Math.imul(K3, G3) | 0, e8 = Math.imul(K3, Q3), h6 = h6 + Math.imul(z4, W3) | 0, n6 = (n6 = n6 + Math.imul(z4, X3) | 0) + Math.imul(E4, W3) | 0, e8 = e8 + Math.imul(E4, X3) | 0, h6 = h6 + Math.imul(L4, $3) | 0, n6 = (n6 = n6 + Math.imul(L4, tt2) | 0) + Math.imul(I4, $3) | 0, e8 = e8 + Math.imul(I4, tt2) | 0, h6 = h6 + Math.imul(q3, rt) | 0, n6 = (n6 = n6 + Math.imul(q3, ht2) | 0) + Math.imul(B4, rt) | 0, e8 = e8 + Math.imul(B4, ht2) | 0, h6 = h6 + Math.imul(S4, et2) | 0, n6 = (n6 = n6 + Math.imul(S4, ot) | 0) + Math.imul(Z3, et2) | 0, e8 = e8 + Math.imul(Z3, ot) | 0, h6 = h6 + Math.imul(k5, ut) | 0, n6 = (n6 = n6 + Math.imul(k5, at) | 0) + Math.imul(A5, ut) | 0, e8 = e8 + Math.imul(A5, at) | 0, h6 = h6 + Math.imul(y6, mt) | 0, n6 = (n6 = n6 + Math.imul(y6, ft) | 0) + Math.imul(b5, mt) | 0, e8 = e8 + Math.imul(b5, ft) | 0;\n    var Zt = (a6 + (h6 = h6 + Math.imul(g5, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(g5, Mt) | 0) + Math.imul(c6, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(c6, Mt) | 0) + (n6 >>> 13) | 0) + (Zt >>> 26) | 0, Zt &= 67108863, h6 = Math.imul(j4, W3), n6 = (n6 = Math.imul(j4, X3)) + Math.imul(K3, W3) | 0, e8 = Math.imul(K3, X3), h6 = h6 + Math.imul(z4, $3) | 0, n6 = (n6 = n6 + Math.imul(z4, tt2) | 0) + Math.imul(E4, $3) | 0, e8 = e8 + Math.imul(E4, tt2) | 0, h6 = h6 + Math.imul(L4, rt) | 0, n6 = (n6 = n6 + Math.imul(L4, ht2) | 0) + Math.imul(I4, rt) | 0, e8 = e8 + Math.imul(I4, ht2) | 0, h6 = h6 + Math.imul(q3, et2) | 0, n6 = (n6 = n6 + Math.imul(q3, ot) | 0) + Math.imul(B4, et2) | 0, e8 = e8 + Math.imul(B4, ot) | 0, h6 = h6 + Math.imul(S4, ut) | 0, n6 = (n6 = n6 + Math.imul(S4, at) | 0) + Math.imul(Z3, ut) | 0, e8 = e8 + Math.imul(Z3, at) | 0, h6 = h6 + Math.imul(k5, mt) | 0, n6 = (n6 = n6 + Math.imul(k5, ft) | 0) + Math.imul(A5, mt) | 0, e8 = e8 + Math.imul(A5, ft) | 0;\n    var Rt = (a6 + (h6 = h6 + Math.imul(y6, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(y6, Mt) | 0) + Math.imul(b5, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(b5, Mt) | 0) + (n6 >>> 13) | 0) + (Rt >>> 26) | 0, Rt &= 67108863, h6 = Math.imul(j4, $3), n6 = (n6 = Math.imul(j4, tt2)) + Math.imul(K3, $3) | 0, e8 = Math.imul(K3, tt2), h6 = h6 + Math.imul(z4, rt) | 0, n6 = (n6 = n6 + Math.imul(z4, ht2) | 0) + Math.imul(E4, rt) | 0, e8 = e8 + Math.imul(E4, ht2) | 0, h6 = h6 + Math.imul(L4, et2) | 0, n6 = (n6 = n6 + Math.imul(L4, ot) | 0) + Math.imul(I4, et2) | 0, e8 = e8 + Math.imul(I4, ot) | 0, h6 = h6 + Math.imul(q3, ut) | 0, n6 = (n6 = n6 + Math.imul(q3, at) | 0) + Math.imul(B4, ut) | 0, e8 = e8 + Math.imul(B4, at) | 0, h6 = h6 + Math.imul(S4, mt) | 0, n6 = (n6 = n6 + Math.imul(S4, ft) | 0) + Math.imul(Z3, mt) | 0, e8 = e8 + Math.imul(Z3, ft) | 0;\n    var qt = (a6 + (h6 = h6 + Math.imul(k5, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(k5, Mt) | 0) + Math.imul(A5, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(A5, Mt) | 0) + (n6 >>> 13) | 0) + (qt >>> 26) | 0, qt &= 67108863, h6 = Math.imul(j4, rt), n6 = (n6 = Math.imul(j4, ht2)) + Math.imul(K3, rt) | 0, e8 = Math.imul(K3, ht2), h6 = h6 + Math.imul(z4, et2) | 0, n6 = (n6 = n6 + Math.imul(z4, ot) | 0) + Math.imul(E4, et2) | 0, e8 = e8 + Math.imul(E4, ot) | 0, h6 = h6 + Math.imul(L4, ut) | 0, n6 = (n6 = n6 + Math.imul(L4, at) | 0) + Math.imul(I4, ut) | 0, e8 = e8 + Math.imul(I4, at) | 0, h6 = h6 + Math.imul(q3, mt) | 0, n6 = (n6 = n6 + Math.imul(q3, ft) | 0) + Math.imul(B4, mt) | 0, e8 = e8 + Math.imul(B4, ft) | 0;\n    var Bt = (a6 + (h6 = h6 + Math.imul(S4, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(S4, Mt) | 0) + Math.imul(Z3, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(Z3, Mt) | 0) + (n6 >>> 13) | 0) + (Bt >>> 26) | 0, Bt &= 67108863, h6 = Math.imul(j4, et2), n6 = (n6 = Math.imul(j4, ot)) + Math.imul(K3, et2) | 0, e8 = Math.imul(K3, ot), h6 = h6 + Math.imul(z4, ut) | 0, n6 = (n6 = n6 + Math.imul(z4, at) | 0) + Math.imul(E4, ut) | 0, e8 = e8 + Math.imul(E4, at) | 0, h6 = h6 + Math.imul(L4, mt) | 0, n6 = (n6 = n6 + Math.imul(L4, ft) | 0) + Math.imul(I4, mt) | 0, e8 = e8 + Math.imul(I4, ft) | 0;\n    var Nt = (a6 + (h6 = h6 + Math.imul(q3, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(q3, Mt) | 0) + Math.imul(B4, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(B4, Mt) | 0) + (n6 >>> 13) | 0) + (Nt >>> 26) | 0, Nt &= 67108863, h6 = Math.imul(j4, ut), n6 = (n6 = Math.imul(j4, at)) + Math.imul(K3, ut) | 0, e8 = Math.imul(K3, at), h6 = h6 + Math.imul(z4, mt) | 0, n6 = (n6 = n6 + Math.imul(z4, ft) | 0) + Math.imul(E4, mt) | 0, e8 = e8 + Math.imul(E4, ft) | 0;\n    var Lt = (a6 + (h6 = h6 + Math.imul(L4, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(L4, Mt) | 0) + Math.imul(I4, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(I4, Mt) | 0) + (n6 >>> 13) | 0) + (Lt >>> 26) | 0, Lt &= 67108863, h6 = Math.imul(j4, mt), n6 = (n6 = Math.imul(j4, ft)) + Math.imul(K3, mt) | 0, e8 = Math.imul(K3, ft);\n    var It = (a6 + (h6 = h6 + Math.imul(z4, pt) | 0) | 0) + ((8191 & (n6 = (n6 = n6 + Math.imul(z4, Mt) | 0) + Math.imul(E4, pt) | 0)) << 13) | 0;\n    a6 = ((e8 = e8 + Math.imul(E4, Mt) | 0) + (n6 >>> 13) | 0) + (It >>> 26) | 0, It &= 67108863;\n    var Tt = (a6 + (h6 = Math.imul(j4, pt)) | 0) + ((8191 & (n6 = (n6 = Math.imul(j4, Mt)) + Math.imul(K3, pt) | 0)) << 13) | 0;\n    return a6 = ((e8 = Math.imul(K3, Mt)) + (n6 >>> 13) | 0) + (Tt >>> 26) | 0, Tt &= 67108863, u6[0] = vt, u6[1] = gt, u6[2] = ct, u6[3] = wt, u6[4] = yt, u6[5] = bt, u6[6] = _t2, u6[7] = kt, u6[8] = At, u6[9] = xt, u6[10] = St, u6[11] = Zt, u6[12] = Rt, u6[13] = qt, u6[14] = Bt, u6[15] = Nt, u6[16] = Lt, u6[17] = It, u6[18] = Tt, 0 !== a6 && (u6[19] = a6, r6.length++), r6;\n  };\n  function M4(t5, i5, r6) {\n    return new v5().mulp(t5, i5, r6);\n  }\n  function v5(t5, r6) {\n    (this || i$3).x = t5, (this || i$3).y = r6;\n  }\n  Math.imul || (p5 = d4), o5.prototype.mulTo = function(t5, r6) {\n    var h6 = (this || i$3).length + t5.length;\n    return 10 === (this || i$3).length && 10 === t5.length ? p5(this || i$3, t5, r6) : h6 < 63 ? d4(this || i$3, t5, r6) : h6 < 1024 ? (function(t6, i5, r7) {\n      r7.negative = i5.negative ^ t6.negative, r7.length = t6.length + i5.length;\n      for (var h7 = 0, n6 = 0, e8 = 0; e8 < r7.length - 1; e8++) {\n        var o6 = n6;\n        n6 = 0;\n        for (var s6 = 67108863 & h7, u6 = Math.min(e8, i5.length - 1), a6 = Math.max(0, e8 - t6.length + 1); a6 <= u6; a6++) {\n          var l6 = e8 - a6, m5 = (0 | t6.words[l6]) * (0 | i5.words[a6]), f7 = 67108863 & m5;\n          s6 = 67108863 & (f7 = f7 + s6 | 0), n6 += (o6 = (o6 = o6 + (m5 / 67108864 | 0) | 0) + (f7 >>> 26) | 0) >>> 26, o6 &= 67108863;\n        }\n        r7.words[e8] = s6, h7 = o6, o6 = n6;\n      }\n      return 0 !== h7 ? r7.words[e8] = h7 : r7.length--, r7.strip();\n    })(this || i$3, t5, r6) : M4(this || i$3, t5, r6);\n  }, v5.prototype.makeRBT = function(t5) {\n    for (var i5 = new Array(t5), r6 = o5.prototype._countBits(t5) - 1, h6 = 0; h6 < t5; h6++) i5[h6] = this.revBin(h6, r6, t5);\n    return i5;\n  }, v5.prototype.revBin = function(t5, i5, r6) {\n    if (0 === t5 || t5 === r6 - 1) return t5;\n    for (var h6 = 0, n6 = 0; n6 < i5; n6++) h6 |= (1 & t5) << i5 - n6 - 1, t5 >>= 1;\n    return h6;\n  }, v5.prototype.permute = function(t5, i5, r6, h6, n6, e8) {\n    for (var o6 = 0; o6 < e8; o6++) h6[o6] = i5[t5[o6]], n6[o6] = r6[t5[o6]];\n  }, v5.prototype.transform = function(t5, i5, r6, h6, n6, e8) {\n    this.permute(e8, t5, i5, r6, h6, n6);\n    for (var o6 = 1; o6 < n6; o6 <<= 1) for (var s6 = o6 << 1, u6 = Math.cos(2 * Math.PI / s6), a6 = Math.sin(2 * Math.PI / s6), l6 = 0; l6 < n6; l6 += s6) for (var m5 = u6, f7 = a6, d5 = 0; d5 < o6; d5++) {\n      var p6 = r6[l6 + d5], M5 = h6[l6 + d5], v6 = r6[l6 + d5 + o6], g5 = h6[l6 + d5 + o6], c6 = m5 * v6 - f7 * g5;\n      g5 = m5 * g5 + f7 * v6, v6 = c6, r6[l6 + d5] = p6 + v6, h6[l6 + d5] = M5 + g5, r6[l6 + d5 + o6] = p6 - v6, h6[l6 + d5 + o6] = M5 - g5, d5 !== s6 && (c6 = u6 * m5 - a6 * f7, f7 = u6 * f7 + a6 * m5, m5 = c6);\n    }\n  }, v5.prototype.guessLen13b = function(t5, i5) {\n    var r6 = 1 | Math.max(i5, t5), h6 = 1 & r6, n6 = 0;\n    for (r6 = r6 / 2 | 0; r6; r6 >>>= 1) n6++;\n    return 1 << n6 + 1 + h6;\n  }, v5.prototype.conjugate = function(t5, i5, r6) {\n    if (!(r6 <= 1)) for (var h6 = 0; h6 < r6 / 2; h6++) {\n      var n6 = t5[h6];\n      t5[h6] = t5[r6 - h6 - 1], t5[r6 - h6 - 1] = n6, n6 = i5[h6], i5[h6] = -i5[r6 - h6 - 1], i5[r6 - h6 - 1] = -n6;\n    }\n  }, v5.prototype.normalize13b = function(t5, i5) {\n    for (var r6 = 0, h6 = 0; h6 < i5 / 2; h6++) {\n      var n6 = 8192 * Math.round(t5[2 * h6 + 1] / i5) + Math.round(t5[2 * h6] / i5) + r6;\n      t5[h6] = 67108863 & n6, r6 = n6 < 67108864 ? 0 : n6 / 67108864 | 0;\n    }\n    return t5;\n  }, v5.prototype.convert13b = function(t5, i5, r6, h6) {\n    for (var e8 = 0, o6 = 0; o6 < i5; o6++) e8 += 0 | t5[o6], r6[2 * o6] = 8191 & e8, e8 >>>= 13, r6[2 * o6 + 1] = 8191 & e8, e8 >>>= 13;\n    for (o6 = 2 * i5; o6 < h6; ++o6) r6[o6] = 0;\n    n5(0 === e8), n5(0 == (-8192 & e8));\n  }, v5.prototype.stub = function(t5) {\n    for (var i5 = new Array(t5), r6 = 0; r6 < t5; r6++) i5[r6] = 0;\n    return i5;\n  }, v5.prototype.mulp = function(t5, i5, r6) {\n    var h6 = 2 * this.guessLen13b(t5.length, i5.length), n6 = this.makeRBT(h6), e8 = this.stub(h6), o6 = new Array(h6), s6 = new Array(h6), u6 = new Array(h6), a6 = new Array(h6), l6 = new Array(h6), m5 = new Array(h6), f7 = r6.words;\n    f7.length = h6, this.convert13b(t5.words, t5.length, o6, h6), this.convert13b(i5.words, i5.length, a6, h6), this.transform(o6, e8, s6, u6, h6, n6), this.transform(a6, e8, l6, m5, h6, n6);\n    for (var d5 = 0; d5 < h6; d5++) {\n      var p6 = s6[d5] * l6[d5] - u6[d5] * m5[d5];\n      u6[d5] = s6[d5] * m5[d5] + u6[d5] * l6[d5], s6[d5] = p6;\n    }\n    return this.conjugate(s6, u6, h6), this.transform(s6, u6, f7, e8, h6, n6), this.conjugate(f7, e8, h6), this.normalize13b(f7, h6), r6.negative = t5.negative ^ i5.negative, r6.length = t5.length + i5.length, r6.strip();\n  }, o5.prototype.mul = function(t5) {\n    var r6 = new o5(null);\n    return r6.words = new Array((this || i$3).length + t5.length), this.mulTo(t5, r6);\n  }, o5.prototype.mulf = function(t5) {\n    var r6 = new o5(null);\n    return r6.words = new Array((this || i$3).length + t5.length), M4(this || i$3, t5, r6);\n  }, o5.prototype.imul = function(t5) {\n    return this.clone().mulTo(t5, this || i$3);\n  }, o5.prototype.imuln = function(t5) {\n    n5(\"number\" == typeof t5), n5(t5 < 67108864);\n    for (var r6 = 0, h6 = 0; h6 < (this || i$3).length; h6++) {\n      var e8 = (0 | (this || i$3).words[h6]) * t5, o6 = (67108863 & e8) + (67108863 & r6);\n      r6 >>= 26, r6 += e8 / 67108864 | 0, r6 += o6 >>> 26, (this || i$3).words[h6] = 67108863 & o6;\n    }\n    return 0 !== r6 && ((this || i$3).words[h6] = r6, (this || i$3).length++), this || i$3;\n  }, o5.prototype.muln = function(t5) {\n    return this.clone().imuln(t5);\n  }, o5.prototype.sqr = function() {\n    return this.mul(this || i$3);\n  }, o5.prototype.isqr = function() {\n    return this.imul(this.clone());\n  }, o5.prototype.pow = function(t5) {\n    var r6 = (function(t6) {\n      for (var i5 = new Array(t6.bitLength()), r7 = 0; r7 < i5.length; r7++) {\n        var h7 = r7 / 26 | 0, n7 = r7 % 26;\n        i5[r7] = (t6.words[h7] & 1 << n7) >>> n7;\n      }\n      return i5;\n    })(t5);\n    if (0 === r6.length) return new o5(1);\n    for (var h6 = this || i$3, n6 = 0; n6 < r6.length && 0 === r6[n6]; n6++, h6 = h6.sqr()) ;\n    if (++n6 < r6.length) for (var e8 = h6.sqr(); n6 < r6.length; n6++, e8 = e8.sqr()) 0 !== r6[n6] && (h6 = h6.mul(e8));\n    return h6;\n  }, o5.prototype.iushln = function(t5) {\n    n5(\"number\" == typeof t5 && t5 >= 0);\n    var r6, h6 = t5 % 26, e8 = (t5 - h6) / 26, o6 = 67108863 >>> 26 - h6 << 26 - h6;\n    if (0 !== h6) {\n      var s6 = 0;\n      for (r6 = 0; r6 < (this || i$3).length; r6++) {\n        var u6 = (this || i$3).words[r6] & o6, a6 = (0 | (this || i$3).words[r6]) - u6 << h6;\n        (this || i$3).words[r6] = a6 | s6, s6 = u6 >>> 26 - h6;\n      }\n      s6 && ((this || i$3).words[r6] = s6, (this || i$3).length++);\n    }\n    if (0 !== e8) {\n      for (r6 = (this || i$3).length - 1; r6 >= 0; r6--) (this || i$3).words[r6 + e8] = (this || i$3).words[r6];\n      for (r6 = 0; r6 < e8; r6++) (this || i$3).words[r6] = 0;\n      (this || i$3).length += e8;\n    }\n    return this.strip();\n  }, o5.prototype.ishln = function(t5) {\n    return n5(0 === (this || i$3).negative), this.iushln(t5);\n  }, o5.prototype.iushrn = function(t5, r6, h6) {\n    var e8;\n    n5(\"number\" == typeof t5 && t5 >= 0), e8 = r6 ? (r6 - r6 % 26) / 26 : 0;\n    var o6 = t5 % 26, s6 = Math.min((t5 - o6) / 26, (this || i$3).length), u6 = 67108863 ^ 67108863 >>> o6 << o6, a6 = h6;\n    if (e8 -= s6, e8 = Math.max(0, e8), a6) {\n      for (var l6 = 0; l6 < s6; l6++) a6.words[l6] = (this || i$3).words[l6];\n      a6.length = s6;\n    }\n    if (0 === s6) ;\n    else if ((this || i$3).length > s6) for ((this || i$3).length -= s6, l6 = 0; l6 < (this || i$3).length; l6++) (this || i$3).words[l6] = (this || i$3).words[l6 + s6];\n    else (this || i$3).words[0] = 0, (this || i$3).length = 1;\n    var m5 = 0;\n    for (l6 = (this || i$3).length - 1; l6 >= 0 && (0 !== m5 || l6 >= e8); l6--) {\n      var f7 = 0 | (this || i$3).words[l6];\n      (this || i$3).words[l6] = m5 << 26 - o6 | f7 >>> o6, m5 = f7 & u6;\n    }\n    return a6 && 0 !== m5 && (a6.words[a6.length++] = m5), 0 === (this || i$3).length && ((this || i$3).words[0] = 0, (this || i$3).length = 1), this.strip();\n  }, o5.prototype.ishrn = function(t5, r6, h6) {\n    return n5(0 === (this || i$3).negative), this.iushrn(t5, r6, h6);\n  }, o5.prototype.shln = function(t5) {\n    return this.clone().ishln(t5);\n  }, o5.prototype.ushln = function(t5) {\n    return this.clone().iushln(t5);\n  }, o5.prototype.shrn = function(t5) {\n    return this.clone().ishrn(t5);\n  }, o5.prototype.ushrn = function(t5) {\n    return this.clone().iushrn(t5);\n  }, o5.prototype.testn = function(t5) {\n    n5(\"number\" == typeof t5 && t5 >= 0);\n    var r6 = t5 % 26, h6 = (t5 - r6) / 26, e8 = 1 << r6;\n    return !((this || i$3).length <= h6) && !!((this || i$3).words[h6] & e8);\n  }, o5.prototype.imaskn = function(t5) {\n    n5(\"number\" == typeof t5 && t5 >= 0);\n    var r6 = t5 % 26, h6 = (t5 - r6) / 26;\n    if (n5(0 === (this || i$3).negative, \"imaskn works only with positive numbers\"), (this || i$3).length <= h6) return this || i$3;\n    if (0 !== r6 && h6++, (this || i$3).length = Math.min(h6, (this || i$3).length), 0 !== r6) {\n      var e8 = 67108863 ^ 67108863 >>> r6 << r6;\n      (this || i$3).words[(this || i$3).length - 1] &= e8;\n    }\n    return this.strip();\n  }, o5.prototype.maskn = function(t5) {\n    return this.clone().imaskn(t5);\n  }, o5.prototype.iaddn = function(t5) {\n    return n5(\"number\" == typeof t5), n5(t5 < 67108864), t5 < 0 ? this.isubn(-t5) : 0 !== (this || i$3).negative ? 1 === (this || i$3).length && (0 | (this || i$3).words[0]) < t5 ? ((this || i$3).words[0] = t5 - (0 | (this || i$3).words[0]), (this || i$3).negative = 0, this || i$3) : ((this || i$3).negative = 0, this.isubn(t5), (this || i$3).negative = 1, this || i$3) : this._iaddn(t5);\n  }, o5.prototype._iaddn = function(t5) {\n    (this || i$3).words[0] += t5;\n    for (var r6 = 0; r6 < (this || i$3).length && (this || i$3).words[r6] >= 67108864; r6++) (this || i$3).words[r6] -= 67108864, r6 === (this || i$3).length - 1 ? (this || i$3).words[r6 + 1] = 1 : (this || i$3).words[r6 + 1]++;\n    return (this || i$3).length = Math.max((this || i$3).length, r6 + 1), this || i$3;\n  }, o5.prototype.isubn = function(t5) {\n    if (n5(\"number\" == typeof t5), n5(t5 < 67108864), t5 < 0) return this.iaddn(-t5);\n    if (0 !== (this || i$3).negative) return (this || i$3).negative = 0, this.iaddn(t5), (this || i$3).negative = 1, this || i$3;\n    if ((this || i$3).words[0] -= t5, 1 === (this || i$3).length && (this || i$3).words[0] < 0) (this || i$3).words[0] = -(this || i$3).words[0], (this || i$3).negative = 1;\n    else for (var r6 = 0; r6 < (this || i$3).length && (this || i$3).words[r6] < 0; r6++) (this || i$3).words[r6] += 67108864, (this || i$3).words[r6 + 1] -= 1;\n    return this.strip();\n  }, o5.prototype.addn = function(t5) {\n    return this.clone().iaddn(t5);\n  }, o5.prototype.subn = function(t5) {\n    return this.clone().isubn(t5);\n  }, o5.prototype.iabs = function() {\n    return (this || i$3).negative = 0, this || i$3;\n  }, o5.prototype.abs = function() {\n    return this.clone().iabs();\n  }, o5.prototype._ishlnsubmul = function(t5, r6, h6) {\n    var e8, o6, s6 = t5.length + h6;\n    this._expand(s6);\n    var u6 = 0;\n    for (e8 = 0; e8 < t5.length; e8++) {\n      o6 = (0 | (this || i$3).words[e8 + h6]) + u6;\n      var a6 = (0 | t5.words[e8]) * r6;\n      u6 = ((o6 -= 67108863 & a6) >> 26) - (a6 / 67108864 | 0), (this || i$3).words[e8 + h6] = 67108863 & o6;\n    }\n    for (; e8 < (this || i$3).length - h6; e8++) u6 = (o6 = (0 | (this || i$3).words[e8 + h6]) + u6) >> 26, (this || i$3).words[e8 + h6] = 67108863 & o6;\n    if (0 === u6) return this.strip();\n    for (n5(-1 === u6), u6 = 0, e8 = 0; e8 < (this || i$3).length; e8++) u6 = (o6 = -(0 | (this || i$3).words[e8]) + u6) >> 26, (this || i$3).words[e8] = 67108863 & o6;\n    return (this || i$3).negative = 1, this.strip();\n  }, o5.prototype._wordDiv = function(t5, r6) {\n    var h6 = ((this || i$3).length, t5.length), n6 = this.clone(), e8 = t5, s6 = 0 | e8.words[e8.length - 1];\n    0 !== (h6 = 26 - this._countBits(s6)) && (e8 = e8.ushln(h6), n6.iushln(h6), s6 = 0 | e8.words[e8.length - 1]);\n    var u6, a6 = n6.length - e8.length;\n    if (\"mod\" !== r6) {\n      (u6 = new o5(null)).length = a6 + 1, u6.words = new Array(u6.length);\n      for (var l6 = 0; l6 < u6.length; l6++) u6.words[l6] = 0;\n    }\n    var m5 = n6.clone()._ishlnsubmul(e8, 1, a6);\n    0 === m5.negative && (n6 = m5, u6 && (u6.words[a6] = 1));\n    for (var f7 = a6 - 1; f7 >= 0; f7--) {\n      var d5 = 67108864 * (0 | n6.words[e8.length + f7]) + (0 | n6.words[e8.length + f7 - 1]);\n      for (d5 = Math.min(d5 / s6 | 0, 67108863), n6._ishlnsubmul(e8, d5, f7); 0 !== n6.negative; ) d5--, n6.negative = 0, n6._ishlnsubmul(e8, 1, f7), n6.isZero() || (n6.negative ^= 1);\n      u6 && (u6.words[f7] = d5);\n    }\n    return u6 && u6.strip(), n6.strip(), \"div\" !== r6 && 0 !== h6 && n6.iushrn(h6), { div: u6 || null, mod: n6 };\n  }, o5.prototype.divmod = function(t5, r6, h6) {\n    return n5(!t5.isZero()), this.isZero() ? { div: new o5(0), mod: new o5(0) } : 0 !== (this || i$3).negative && 0 === t5.negative ? (u6 = this.neg().divmod(t5, r6), \"mod\" !== r6 && (e8 = u6.div.neg()), \"div\" !== r6 && (s6 = u6.mod.neg(), h6 && 0 !== s6.negative && s6.iadd(t5)), { div: e8, mod: s6 }) : 0 === (this || i$3).negative && 0 !== t5.negative ? (u6 = this.divmod(t5.neg(), r6), \"mod\" !== r6 && (e8 = u6.div.neg()), { div: e8, mod: u6.mod }) : 0 != ((this || i$3).negative & t5.negative) ? (u6 = this.neg().divmod(t5.neg(), r6), \"div\" !== r6 && (s6 = u6.mod.neg(), h6 && 0 !== s6.negative && s6.isub(t5)), { div: u6.div, mod: s6 }) : t5.length > (this || i$3).length || this.cmp(t5) < 0 ? { div: new o5(0), mod: this || i$3 } : 1 === t5.length ? \"div\" === r6 ? { div: this.divn(t5.words[0]), mod: null } : \"mod\" === r6 ? { div: null, mod: new o5(this.modn(t5.words[0])) } : { div: this.divn(t5.words[0]), mod: new o5(this.modn(t5.words[0])) } : this._wordDiv(t5, r6);\n    var e8, s6, u6;\n  }, o5.prototype.div = function(t5) {\n    return this.divmod(t5, \"div\", false).div;\n  }, o5.prototype.mod = function(t5) {\n    return this.divmod(t5, \"mod\", false).mod;\n  }, o5.prototype.umod = function(t5) {\n    return this.divmod(t5, \"mod\", true).mod;\n  }, o5.prototype.divRound = function(t5) {\n    var i5 = this.divmod(t5);\n    if (i5.mod.isZero()) return i5.div;\n    var r6 = 0 !== i5.div.negative ? i5.mod.isub(t5) : i5.mod, h6 = t5.ushrn(1), n6 = t5.andln(1), e8 = r6.cmp(h6);\n    return e8 < 0 || 1 === n6 && 0 === e8 ? i5.div : 0 !== i5.div.negative ? i5.div.isubn(1) : i5.div.iaddn(1);\n  }, o5.prototype.modn = function(t5) {\n    n5(t5 <= 67108863);\n    for (var r6 = (1 << 26) % t5, h6 = 0, e8 = (this || i$3).length - 1; e8 >= 0; e8--) h6 = (r6 * h6 + (0 | (this || i$3).words[e8])) % t5;\n    return h6;\n  }, o5.prototype.idivn = function(t5) {\n    n5(t5 <= 67108863);\n    for (var r6 = 0, h6 = (this || i$3).length - 1; h6 >= 0; h6--) {\n      var e8 = (0 | (this || i$3).words[h6]) + 67108864 * r6;\n      (this || i$3).words[h6] = e8 / t5 | 0, r6 = e8 % t5;\n    }\n    return this.strip();\n  }, o5.prototype.divn = function(t5) {\n    return this.clone().idivn(t5);\n  }, o5.prototype.egcd = function(t5) {\n    n5(0 === t5.negative), n5(!t5.isZero());\n    var r6 = this || i$3, h6 = t5.clone();\n    r6 = 0 !== r6.negative ? r6.umod(t5) : r6.clone();\n    for (var e8 = new o5(1), s6 = new o5(0), u6 = new o5(0), a6 = new o5(1), l6 = 0; r6.isEven() && h6.isEven(); ) r6.iushrn(1), h6.iushrn(1), ++l6;\n    for (var m5 = h6.clone(), f7 = r6.clone(); !r6.isZero(); ) {\n      for (var d5 = 0, p6 = 1; 0 == (r6.words[0] & p6) && d5 < 26; ++d5, p6 <<= 1) ;\n      if (d5 > 0) for (r6.iushrn(d5); d5-- > 0; ) (e8.isOdd() || s6.isOdd()) && (e8.iadd(m5), s6.isub(f7)), e8.iushrn(1), s6.iushrn(1);\n      for (var M5 = 0, v6 = 1; 0 == (h6.words[0] & v6) && M5 < 26; ++M5, v6 <<= 1) ;\n      if (M5 > 0) for (h6.iushrn(M5); M5-- > 0; ) (u6.isOdd() || a6.isOdd()) && (u6.iadd(m5), a6.isub(f7)), u6.iushrn(1), a6.iushrn(1);\n      r6.cmp(h6) >= 0 ? (r6.isub(h6), e8.isub(u6), s6.isub(a6)) : (h6.isub(r6), u6.isub(e8), a6.isub(s6));\n    }\n    return { a: u6, b: a6, gcd: h6.iushln(l6) };\n  }, o5.prototype._invmp = function(t5) {\n    n5(0 === t5.negative), n5(!t5.isZero());\n    var r6 = this || i$3, h6 = t5.clone();\n    r6 = 0 !== r6.negative ? r6.umod(t5) : r6.clone();\n    for (var e8, s6 = new o5(1), u6 = new o5(0), a6 = h6.clone(); r6.cmpn(1) > 0 && h6.cmpn(1) > 0; ) {\n      for (var l6 = 0, m5 = 1; 0 == (r6.words[0] & m5) && l6 < 26; ++l6, m5 <<= 1) ;\n      if (l6 > 0) for (r6.iushrn(l6); l6-- > 0; ) s6.isOdd() && s6.iadd(a6), s6.iushrn(1);\n      for (var f7 = 0, d5 = 1; 0 == (h6.words[0] & d5) && f7 < 26; ++f7, d5 <<= 1) ;\n      if (f7 > 0) for (h6.iushrn(f7); f7-- > 0; ) u6.isOdd() && u6.iadd(a6), u6.iushrn(1);\n      r6.cmp(h6) >= 0 ? (r6.isub(h6), s6.isub(u6)) : (h6.isub(r6), u6.isub(s6));\n    }\n    return (e8 = 0 === r6.cmpn(1) ? s6 : u6).cmpn(0) < 0 && e8.iadd(t5), e8;\n  }, o5.prototype.gcd = function(t5) {\n    if (this.isZero()) return t5.abs();\n    if (t5.isZero()) return this.abs();\n    var i5 = this.clone(), r6 = t5.clone();\n    i5.negative = 0, r6.negative = 0;\n    for (var h6 = 0; i5.isEven() && r6.isEven(); h6++) i5.iushrn(1), r6.iushrn(1);\n    for (; ; ) {\n      for (; i5.isEven(); ) i5.iushrn(1);\n      for (; r6.isEven(); ) r6.iushrn(1);\n      var n6 = i5.cmp(r6);\n      if (n6 < 0) {\n        var e8 = i5;\n        i5 = r6, r6 = e8;\n      } else if (0 === n6 || 0 === r6.cmpn(1)) break;\n      i5.isub(r6);\n    }\n    return r6.iushln(h6);\n  }, o5.prototype.invm = function(t5) {\n    return this.egcd(t5).a.umod(t5);\n  }, o5.prototype.isEven = function() {\n    return 0 == (1 & (this || i$3).words[0]);\n  }, o5.prototype.isOdd = function() {\n    return 1 == (1 & (this || i$3).words[0]);\n  }, o5.prototype.andln = function(t5) {\n    return (this || i$3).words[0] & t5;\n  }, o5.prototype.bincn = function(t5) {\n    n5(\"number\" == typeof t5);\n    var r6 = t5 % 26, h6 = (t5 - r6) / 26, e8 = 1 << r6;\n    if ((this || i$3).length <= h6) return this._expand(h6 + 1), (this || i$3).words[h6] |= e8, this || i$3;\n    for (var o6 = e8, s6 = h6; 0 !== o6 && s6 < (this || i$3).length; s6++) {\n      var u6 = 0 | (this || i$3).words[s6];\n      o6 = (u6 += o6) >>> 26, u6 &= 67108863, (this || i$3).words[s6] = u6;\n    }\n    return 0 !== o6 && ((this || i$3).words[s6] = o6, (this || i$3).length++), this || i$3;\n  }, o5.prototype.isZero = function() {\n    return 1 === (this || i$3).length && 0 === (this || i$3).words[0];\n  }, o5.prototype.cmpn = function(t5) {\n    var r6, h6 = t5 < 0;\n    if (0 !== (this || i$3).negative && !h6) return -1;\n    if (0 === (this || i$3).negative && h6) return 1;\n    if (this.strip(), (this || i$3).length > 1) r6 = 1;\n    else {\n      h6 && (t5 = -t5), n5(t5 <= 67108863, \"Number is too big\");\n      var e8 = 0 | (this || i$3).words[0];\n      r6 = e8 === t5 ? 0 : e8 < t5 ? -1 : 1;\n    }\n    return 0 !== (this || i$3).negative ? 0 | -r6 : r6;\n  }, o5.prototype.cmp = function(t5) {\n    if (0 !== (this || i$3).negative && 0 === t5.negative) return -1;\n    if (0 === (this || i$3).negative && 0 !== t5.negative) return 1;\n    var r6 = this.ucmp(t5);\n    return 0 !== (this || i$3).negative ? 0 | -r6 : r6;\n  }, o5.prototype.ucmp = function(t5) {\n    if ((this || i$3).length > t5.length) return 1;\n    if ((this || i$3).length < t5.length) return -1;\n    for (var r6 = 0, h6 = (this || i$3).length - 1; h6 >= 0; h6--) {\n      var n6 = 0 | (this || i$3).words[h6], e8 = 0 | t5.words[h6];\n      if (n6 !== e8) {\n        n6 < e8 ? r6 = -1 : n6 > e8 && (r6 = 1);\n        break;\n      }\n    }\n    return r6;\n  }, o5.prototype.gtn = function(t5) {\n    return 1 === this.cmpn(t5);\n  }, o5.prototype.gt = function(t5) {\n    return 1 === this.cmp(t5);\n  }, o5.prototype.gten = function(t5) {\n    return this.cmpn(t5) >= 0;\n  }, o5.prototype.gte = function(t5) {\n    return this.cmp(t5) >= 0;\n  }, o5.prototype.ltn = function(t5) {\n    return -1 === this.cmpn(t5);\n  }, o5.prototype.lt = function(t5) {\n    return -1 === this.cmp(t5);\n  }, o5.prototype.lten = function(t5) {\n    return this.cmpn(t5) <= 0;\n  }, o5.prototype.lte = function(t5) {\n    return this.cmp(t5) <= 0;\n  }, o5.prototype.eqn = function(t5) {\n    return 0 === this.cmpn(t5);\n  }, o5.prototype.eq = function(t5) {\n    return 0 === this.cmp(t5);\n  }, o5.red = function(t5) {\n    return new k4(t5);\n  }, o5.prototype.toRed = function(t5) {\n    return n5(!(this || i$3).red, \"Already a number in reduction context\"), n5(0 === (this || i$3).negative, \"red works only with positives\"), t5.convertTo(this || i$3)._forceRed(t5);\n  }, o5.prototype.fromRed = function() {\n    return n5((this || i$3).red, \"fromRed works only with numbers in reduction context\"), (this || i$3).red.convertFrom(this || i$3);\n  }, o5.prototype._forceRed = function(t5) {\n    return (this || i$3).red = t5, this || i$3;\n  }, o5.prototype.forceRed = function(t5) {\n    return n5(!(this || i$3).red, \"Already a number in reduction context\"), this._forceRed(t5);\n  }, o5.prototype.redAdd = function(t5) {\n    return n5((this || i$3).red, \"redAdd works only with red numbers\"), (this || i$3).red.add(this || i$3, t5);\n  }, o5.prototype.redIAdd = function(t5) {\n    return n5((this || i$3).red, \"redIAdd works only with red numbers\"), (this || i$3).red.iadd(this || i$3, t5);\n  }, o5.prototype.redSub = function(t5) {\n    return n5((this || i$3).red, \"redSub works only with red numbers\"), (this || i$3).red.sub(this || i$3, t5);\n  }, o5.prototype.redISub = function(t5) {\n    return n5((this || i$3).red, \"redISub works only with red numbers\"), (this || i$3).red.isub(this || i$3, t5);\n  }, o5.prototype.redShl = function(t5) {\n    return n5((this || i$3).red, \"redShl works only with red numbers\"), (this || i$3).red.shl(this || i$3, t5);\n  }, o5.prototype.redMul = function(t5) {\n    return n5((this || i$3).red, \"redMul works only with red numbers\"), (this || i$3).red._verify2(this || i$3, t5), (this || i$3).red.mul(this || i$3, t5);\n  }, o5.prototype.redIMul = function(t5) {\n    return n5((this || i$3).red, \"redMul works only with red numbers\"), (this || i$3).red._verify2(this || i$3, t5), (this || i$3).red.imul(this || i$3, t5);\n  }, o5.prototype.redSqr = function() {\n    return n5((this || i$3).red, \"redSqr works only with red numbers\"), (this || i$3).red._verify1(this || i$3), (this || i$3).red.sqr(this || i$3);\n  }, o5.prototype.redISqr = function() {\n    return n5((this || i$3).red, \"redISqr works only with red numbers\"), (this || i$3).red._verify1(this || i$3), (this || i$3).red.isqr(this || i$3);\n  }, o5.prototype.redSqrt = function() {\n    return n5((this || i$3).red, \"redSqrt works only with red numbers\"), (this || i$3).red._verify1(this || i$3), (this || i$3).red.sqrt(this || i$3);\n  }, o5.prototype.redInvm = function() {\n    return n5((this || i$3).red, \"redInvm works only with red numbers\"), (this || i$3).red._verify1(this || i$3), (this || i$3).red.invm(this || i$3);\n  }, o5.prototype.redNeg = function() {\n    return n5((this || i$3).red, \"redNeg works only with red numbers\"), (this || i$3).red._verify1(this || i$3), (this || i$3).red.neg(this || i$3);\n  }, o5.prototype.redPow = function(t5) {\n    return n5((this || i$3).red && !t5.red, \"redPow(normalNum)\"), (this || i$3).red._verify1(this || i$3), (this || i$3).red.pow(this || i$3, t5);\n  };\n  var g4 = { k256: null, p224: null, p192: null, p25519: null };\n  function c5(t5, r6) {\n    (this || i$3).name = t5, (this || i$3).p = new o5(r6, 16), (this || i$3).n = (this || i$3).p.bitLength(), (this || i$3).k = new o5(1).iushln((this || i$3).n).isub((this || i$3).p), (this || i$3).tmp = this._tmp();\n  }\n  function w4() {\n    c5.call(this || i$3, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n  }\n  function y5() {\n    c5.call(this || i$3, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n  }\n  function b4() {\n    c5.call(this || i$3, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n  }\n  function _4() {\n    c5.call(this || i$3, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n  }\n  function k4(t5) {\n    if (\"string\" == typeof t5) {\n      var r6 = o5._prime(t5);\n      (this || i$3).m = r6.p, (this || i$3).prime = r6;\n    } else n5(t5.gtn(1), \"modulus must be greater than 1\"), (this || i$3).m = t5, (this || i$3).prime = null;\n  }\n  function A4(t5) {\n    k4.call(this || i$3, t5), (this || i$3).shift = (this || i$3).m.bitLength(), (this || i$3).shift % 26 != 0 && ((this || i$3).shift += 26 - (this || i$3).shift % 26), (this || i$3).r = new o5(1).iushln((this || i$3).shift), (this || i$3).r2 = this.imod((this || i$3).r.sqr()), (this || i$3).rinv = (this || i$3).r._invmp((this || i$3).m), (this || i$3).minv = (this || i$3).rinv.mul((this || i$3).r).isubn(1).div((this || i$3).m), (this || i$3).minv = (this || i$3).minv.umod((this || i$3).r), (this || i$3).minv = (this || i$3).r.sub((this || i$3).minv);\n  }\n  c5.prototype._tmp = function() {\n    var t5 = new o5(null);\n    return t5.words = new Array(Math.ceil((this || i$3).n / 13)), t5;\n  }, c5.prototype.ireduce = function(t5) {\n    var r6, h6 = t5;\n    do {\n      this.split(h6, (this || i$3).tmp), r6 = (h6 = (h6 = this.imulK(h6)).iadd((this || i$3).tmp)).bitLength();\n    } while (r6 > (this || i$3).n);\n    var n6 = r6 < (this || i$3).n ? -1 : h6.ucmp((this || i$3).p);\n    return 0 === n6 ? (h6.words[0] = 0, h6.length = 1) : n6 > 0 ? h6.isub((this || i$3).p) : h6.strip(), h6;\n  }, c5.prototype.split = function(t5, r6) {\n    t5.iushrn((this || i$3).n, 0, r6);\n  }, c5.prototype.imulK = function(t5) {\n    return t5.imul((this || i$3).k);\n  }, e7(w4, c5), w4.prototype.split = function(t5, i5) {\n    for (var r6 = Math.min(t5.length, 9), h6 = 0; h6 < r6; h6++) i5.words[h6] = t5.words[h6];\n    if (i5.length = r6, t5.length <= 9) return t5.words[0] = 0, t5.length = 1, void 0;\n    var n6 = t5.words[9];\n    for (i5.words[i5.length++] = 4194303 & n6, h6 = 10; h6 < t5.length; h6++) {\n      var e8 = 0 | t5.words[h6];\n      t5.words[h6 - 10] = (4194303 & e8) << 4 | n6 >>> 22, n6 = e8;\n    }\n    n6 >>>= 22, t5.words[h6 - 10] = n6, 0 === n6 && t5.length > 10 ? t5.length -= 10 : t5.length -= 9;\n  }, w4.prototype.imulK = function(t5) {\n    t5.words[t5.length] = 0, t5.words[t5.length + 1] = 0, t5.length += 2;\n    for (var i5 = 0, r6 = 0; r6 < t5.length; r6++) {\n      var h6 = 0 | t5.words[r6];\n      i5 += 977 * h6, t5.words[r6] = 67108863 & i5, i5 = 64 * h6 + (i5 / 67108864 | 0);\n    }\n    return 0 === t5.words[t5.length - 1] && (t5.length--, 0 === t5.words[t5.length - 1] && t5.length--), t5;\n  }, e7(y5, c5), e7(b4, c5), e7(_4, c5), _4.prototype.imulK = function(t5) {\n    for (var i5 = 0, r6 = 0; r6 < t5.length; r6++) {\n      var h6 = 19 * (0 | t5.words[r6]) + i5, n6 = 67108863 & h6;\n      h6 >>>= 26, t5.words[r6] = n6, i5 = h6;\n    }\n    return 0 !== i5 && (t5.words[t5.length++] = i5), t5;\n  }, o5._prime = function(t5) {\n    if (g4[t5]) return g4[t5];\n    var i5;\n    if (\"k256\" === t5) i5 = new w4();\n    else if (\"p224\" === t5) i5 = new y5();\n    else if (\"p192\" === t5) i5 = new b4();\n    else {\n      if (\"p25519\" !== t5) throw new Error(\"Unknown prime \" + t5);\n      i5 = new _4();\n    }\n    return g4[t5] = i5, i5;\n  }, k4.prototype._verify1 = function(t5) {\n    n5(0 === t5.negative, \"red works only with positives\"), n5(t5.red, \"red works only with red numbers\");\n  }, k4.prototype._verify2 = function(t5, i5) {\n    n5(0 == (t5.negative | i5.negative), \"red works only with positives\"), n5(t5.red && t5.red === i5.red, \"red works only with red numbers\");\n  }, k4.prototype.imod = function(t5) {\n    return (this || i$3).prime ? (this || i$3).prime.ireduce(t5)._forceRed(this || i$3) : t5.umod((this || i$3).m)._forceRed(this || i$3);\n  }, k4.prototype.neg = function(t5) {\n    return t5.isZero() ? t5.clone() : (this || i$3).m.sub(t5)._forceRed(this || i$3);\n  }, k4.prototype.add = function(t5, r6) {\n    this._verify2(t5, r6);\n    var h6 = t5.add(r6);\n    return h6.cmp((this || i$3).m) >= 0 && h6.isub((this || i$3).m), h6._forceRed(this || i$3);\n  }, k4.prototype.iadd = function(t5, r6) {\n    this._verify2(t5, r6);\n    var h6 = t5.iadd(r6);\n    return h6.cmp((this || i$3).m) >= 0 && h6.isub((this || i$3).m), h6;\n  }, k4.prototype.sub = function(t5, r6) {\n    this._verify2(t5, r6);\n    var h6 = t5.sub(r6);\n    return h6.cmpn(0) < 0 && h6.iadd((this || i$3).m), h6._forceRed(this || i$3);\n  }, k4.prototype.isub = function(t5, r6) {\n    this._verify2(t5, r6);\n    var h6 = t5.isub(r6);\n    return h6.cmpn(0) < 0 && h6.iadd((this || i$3).m), h6;\n  }, k4.prototype.shl = function(t5, i5) {\n    return this._verify1(t5), this.imod(t5.ushln(i5));\n  }, k4.prototype.imul = function(t5, i5) {\n    return this._verify2(t5, i5), this.imod(t5.imul(i5));\n  }, k4.prototype.mul = function(t5, i5) {\n    return this._verify2(t5, i5), this.imod(t5.mul(i5));\n  }, k4.prototype.isqr = function(t5) {\n    return this.imul(t5, t5.clone());\n  }, k4.prototype.sqr = function(t5) {\n    return this.mul(t5, t5);\n  }, k4.prototype.sqrt = function(t5) {\n    if (t5.isZero()) return t5.clone();\n    var r6 = (this || i$3).m.andln(3);\n    if (n5(r6 % 2 == 1), 3 === r6) {\n      var h6 = (this || i$3).m.add(new o5(1)).iushrn(2);\n      return this.pow(t5, h6);\n    }\n    for (var e8 = (this || i$3).m.subn(1), s6 = 0; !e8.isZero() && 0 === e8.andln(1); ) s6++, e8.iushrn(1);\n    n5(!e8.isZero());\n    var u6 = new o5(1).toRed(this || i$3), a6 = u6.redNeg(), l6 = (this || i$3).m.subn(1).iushrn(1), m5 = (this || i$3).m.bitLength();\n    for (m5 = new o5(2 * m5 * m5).toRed(this || i$3); 0 !== this.pow(m5, l6).cmp(a6); ) m5.redIAdd(a6);\n    for (var f7 = this.pow(m5, e8), d5 = this.pow(t5, e8.addn(1).iushrn(1)), p6 = this.pow(t5, e8), M5 = s6; 0 !== p6.cmp(u6); ) {\n      for (var v6 = p6, g5 = 0; 0 !== v6.cmp(u6); g5++) v6 = v6.redSqr();\n      n5(g5 < M5);\n      var c6 = this.pow(f7, new o5(1).iushln(M5 - g5 - 1));\n      d5 = d5.redMul(c6), f7 = c6.redSqr(), p6 = p6.redMul(f7), M5 = g5;\n    }\n    return d5;\n  }, k4.prototype.invm = function(t5) {\n    var r6 = t5._invmp((this || i$3).m);\n    return 0 !== r6.negative ? (r6.negative = 0, this.imod(r6).redNeg()) : this.imod(r6);\n  }, k4.prototype.pow = function(t5, r6) {\n    if (r6.isZero()) return new o5(1).toRed(this || i$3);\n    if (0 === r6.cmpn(1)) return t5.clone();\n    var h6 = new Array(16);\n    h6[0] = new o5(1).toRed(this || i$3), h6[1] = t5;\n    for (var n6 = 2; n6 < h6.length; n6++) h6[n6] = this.mul(h6[n6 - 1], t5);\n    var e8 = h6[0], s6 = 0, u6 = 0, a6 = r6.bitLength() % 26;\n    for (0 === a6 && (a6 = 26), n6 = r6.length - 1; n6 >= 0; n6--) {\n      for (var l6 = r6.words[n6], m5 = a6 - 1; m5 >= 0; m5--) {\n        var f7 = l6 >> m5 & 1;\n        e8 !== h6[0] && (e8 = this.sqr(e8)), 0 !== f7 || 0 !== s6 ? (s6 <<= 1, s6 |= f7, (4 === ++u6 || 0 === n6 && 0 === m5) && (e8 = this.mul(e8, h6[s6]), u6 = 0, s6 = 0)) : u6 = 0;\n      }\n      a6 = 26;\n    }\n    return e8;\n  }, k4.prototype.convertTo = function(t5) {\n    var r6 = t5.umod((this || i$3).m);\n    return r6 === t5 ? r6.clone() : r6;\n  }, k4.prototype.convertFrom = function(t5) {\n    var i5 = t5.clone();\n    return i5.red = null, i5;\n  }, o5.mont = function(t5) {\n    return new A4(t5);\n  }, e7(A4, k4), A4.prototype.convertTo = function(t5) {\n    return this.imod(t5.ushln((this || i$3).shift));\n  }, A4.prototype.convertFrom = function(t5) {\n    var r6 = this.imod(t5.mul((this || i$3).rinv));\n    return r6.red = null, r6;\n  }, A4.prototype.imul = function(t5, r6) {\n    if (t5.isZero() || r6.isZero()) return t5.words[0] = 0, t5.length = 1, t5;\n    var h6 = t5.imul(r6), n6 = h6.maskn((this || i$3).shift).mul((this || i$3).minv).imaskn((this || i$3).shift).mul((this || i$3).m), e8 = h6.isub(n6).iushrn((this || i$3).shift), o6 = e8;\n    return e8.cmp((this || i$3).m) >= 0 ? o6 = e8.isub((this || i$3).m) : e8.cmpn(0) < 0 && (o6 = e8.iadd((this || i$3).m)), o6._forceRed(this || i$3);\n  }, A4.prototype.mul = function(t5, r6) {\n    if (t5.isZero() || r6.isZero()) return new o5(0)._forceRed(this || i$3);\n    var h6 = t5.mul(r6), n6 = h6.maskn((this || i$3).shift).mul((this || i$3).minv).imaskn((this || i$3).shift).mul((this || i$3).m), e8 = h6.isub(n6).iushrn((this || i$3).shift), s6 = e8;\n    return e8.cmp((this || i$3).m) >= 0 ? s6 = e8.isub((this || i$3).m) : e8.cmpn(0) < 0 && (s6 = e8.iadd((this || i$3).m)), s6._forceRed(this || i$3);\n  }, A4.prototype.invm = function(t5) {\n    return this.imod(t5._invmp((this || i$3).m).mul((this || i$3).r2))._forceRed(this || i$3);\n  };\n})(h$a, r$7);\nvar n$c = h$a.exports;\nvar t$5;\nvar e$a;\nvar r$8 = Object.freeze({});\nvar n$d = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction o$d(t5) {\n  (this || n$d).rand = t5;\n}\nif ((t$5 = function(t5) {\n  return e$a || (e$a = new o$d(null)), e$a.generate(t5);\n}).Rand = o$d, o$d.prototype.generate = function(t5) {\n  return this._rand(t5);\n}, o$d.prototype._rand = function(t5) {\n  if ((this || n$d).rand.getBytes) return (this || n$d).rand.getBytes(t5);\n  for (var e7 = new Uint8Array(t5), r5 = 0; r5 < e7.length; r5++) e7[r5] = (this || n$d).rand.getByte();\n  return e7;\n}, \"object\" == typeof self) self.crypto && self.crypto.getRandomValues ? o$d.prototype._rand = function(t5) {\n  var e7 = new Uint8Array(t5);\n  return self.crypto.getRandomValues(e7), e7;\n} : self.msCrypto && self.msCrypto.getRandomValues ? o$d.prototype._rand = function(t5) {\n  var e7 = new Uint8Array(t5);\n  return self.msCrypto.getRandomValues(e7), e7;\n} : \"object\" == typeof window && (o$d.prototype._rand = function() {\n  throw new Error(\"Not implemented yet\");\n});\nelse try {\n  a$e = r$8;\n  if (\"function\" != typeof a$e.randomBytes) throw new Error(\"Not supported\");\n  o$d.prototype._rand = function(t5) {\n    return a$e.randomBytes(t5);\n  };\n} catch (t5) {\n}\nvar a$e;\nvar f$i = t$5;\nvar n$e;\nvar t$6 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar o$e = n$c;\nvar a$f = f$i;\nfunction d$b(r5) {\n  (this || t$6).rand = r5 || new a$f.Rand();\n}\nn$e = d$b, d$b.create = function(r5) {\n  return new d$b(r5);\n}, d$b.prototype._randbelow = function(r5) {\n  var e7 = r5.bitLength(), n5 = Math.ceil(e7 / 8);\n  do {\n    var a5 = new o$e((this || t$6).rand.generate(n5));\n  } while (a5.cmp(r5) >= 0);\n  return a5;\n}, d$b.prototype._randrange = function(r5, e7) {\n  var n5 = e7.sub(r5);\n  return r5.add(this._randbelow(n5));\n}, d$b.prototype.test = function(r5, e7, n5) {\n  var t5 = r5.bitLength(), a5 = o$e.mont(r5), d4 = new o$e(1).toRed(a5);\n  e7 || (e7 = Math.max(1, t5 / 48 | 0));\n  for (var i5 = r5.subn(1), f6 = 0; !i5.testn(f6); f6++) ;\n  for (var u5 = r5.shrn(f6), p5 = i5.toRed(a5); e7 > 0; e7--) {\n    var c5 = this._randrange(new o$e(2), i5);\n    n5 && n5(c5);\n    var s5 = c5.toRed(a5).redPow(u5);\n    if (0 !== s5.cmp(d4) && 0 !== s5.cmp(p5)) {\n      for (var m4 = 1; m4 < f6; m4++) {\n        if (0 === (s5 = s5.redSqr()).cmp(d4)) return false;\n        if (0 === s5.cmp(p5)) break;\n      }\n      if (m4 === f6) return false;\n    }\n  }\n  return true;\n}, d$b.prototype.getDivisor = function(r5, e7) {\n  var n5 = r5.bitLength(), t5 = o$e.mont(r5), a5 = new o$e(1).toRed(t5);\n  e7 || (e7 = Math.max(1, n5 / 48 | 0));\n  for (var d4 = r5.subn(1), i5 = 0; !d4.testn(i5); i5++) ;\n  for (var f6 = r5.shrn(i5), u5 = d4.toRed(t5); e7 > 0; e7--) {\n    var p5 = this._randrange(new o$e(2), d4), c5 = r5.gcd(p5);\n    if (0 !== c5.cmpn(1)) return c5;\n    var s5 = p5.toRed(t5).redPow(f6);\n    if (0 !== s5.cmp(a5) && 0 !== s5.cmp(u5)) {\n      for (var m4 = 1; m4 < i5; m4++) {\n        if (0 === (s5 = s5.redSqr()).cmp(a5)) return s5.fromRed().subn(1).gcd(r5);\n        if (0 === s5.cmp(u5)) break;\n      }\n      if (m4 === i5) return (s5 = s5.redSqr()).fromRed().subn(1).gcd(r5);\n    }\n  }\n  return false;\n};\nvar i$4 = n$e;\nvar b$7;\nvar d$c = a4;\nb$7 = v$9, v$9.simpleSieve = _$9, v$9.fermatTest = g$8;\nvar r$9 = n$c;\nvar t$7 = new r$9(24);\nvar n$f = new i$4();\nvar i$5 = new r$9(1);\nvar o$f = new r$9(2);\nvar p$e = new r$9(5);\nvar s$c = (new r$9(16), new r$9(8), new r$9(10));\nvar m$9 = new r$9(3);\nvar u$b = (new r$9(7), new r$9(11));\nvar h$b = new r$9(4);\nvar w$a = (new r$9(12), null);\nfunction l$c() {\n  if (null !== w$a) return w$a;\n  var f6 = [];\n  f6[0] = 2;\n  for (var e7 = 1, c5 = 3; c5 < 1048576; c5 += 2) {\n    for (var a5 = Math.ceil(Math.sqrt(c5)), b4 = 0; b4 < e7 && f6[b4] <= a5 && c5 % f6[b4] != 0; b4++) ;\n    e7 !== b4 && f6[b4] <= a5 || (f6[e7++] = c5);\n  }\n  return w$a = f6, f6;\n}\nfunction _$9(f6) {\n  for (var e7 = l$c(), c5 = 0; c5 < e7.length; c5++) if (0 === f6.modn(e7[c5])) return 0 === f6.cmpn(e7[c5]);\n  return true;\n}\nfunction g$8(f6) {\n  var e7 = r$9.mont(f6);\n  return 0 === o$f.toRed(e7).redPow(f6.subn(1)).fromRed().cmpn(1);\n}\nfunction v$9(f6, e7) {\n  if (f6 < 16) return new r$9(2 === e7 || 5 === e7 ? [140, 123] : [140, 39]);\n  var c5, a5;\n  for (e7 = new r$9(e7); ; ) {\n    for (c5 = new r$9(d$c(Math.ceil(f6 / 8))); c5.bitLength() > f6; ) c5.ishrn(1);\n    if (c5.isEven() && c5.iadd(i$5), c5.testn(1) || c5.iadd(o$f), e7.cmp(o$f)) {\n      if (!e7.cmp(p$e)) for (; c5.mod(s$c).cmp(m$9); ) c5.iadd(h$b);\n    } else for (; c5.mod(t$7).cmp(u$b); ) c5.iadd(h$b);\n    if (_$9(a5 = c5.shrn(1)) && _$9(c5) && g$8(a5) && g$8(c5) && n$f.test(a5) && n$f.test(c5)) return c5;\n  }\n}\nvar y$9;\nvar P$2 = b$7;\nvar B$5 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar K$2 = e$1$1.Buffer;\nvar R$1 = n$c;\nvar S$5 = new i$4();\nvar x$2 = new R$1(24);\nvar C$2 = new R$1(11);\nvar D$2 = new R$1(10);\nvar G$1 = new R$1(3);\nvar H$2 = new R$1(7);\nvar T$3 = P$2;\nvar j$1 = a4;\nfunction E$6(f6, e7) {\n  return e7 = e7 || \"utf8\", K$2.isBuffer(f6) || (f6 = new K$2(f6, e7)), (this || B$5)._pub = new R$1(f6), this || B$5;\n}\nfunction L$1(f6, e7) {\n  return e7 = e7 || \"utf8\", K$2.isBuffer(f6) || (f6 = new K$2(f6, e7)), (this || B$5)._priv = new R$1(f6), this || B$5;\n}\ny$9 = k$7;\nvar M$4 = {};\nfunction k$7(f6, e7, c5) {\n  this.setGenerator(e7), (this || B$5).__prime = new R$1(f6), (this || B$5)._prime = R$1.mont((this || B$5).__prime), (this || B$5)._primeLen = f6.length, (this || B$5)._pub = void 0, (this || B$5)._priv = void 0, (this || B$5)._primeCode = void 0, c5 ? ((this || B$5).setPublicKey = E$6, (this || B$5).setPrivateKey = L$1) : (this || B$5)._primeCode = 8;\n}\nfunction A$5(f6, e7) {\n  var c5 = new K$2(f6.toArray());\n  return e7 ? c5.toString(e7) : c5;\n}\nObject.defineProperty(k$7.prototype, \"verifyError\", { enumerable: true, get: function() {\n  return \"number\" != typeof (this || B$5)._primeCode && ((this || B$5)._primeCode = (function(f6, e7) {\n    var c5 = e7.toString(\"hex\"), a5 = [c5, f6.toString(16)].join(\"_\");\n    if (a5 in M$4) return M$4[a5];\n    var b4, d4 = 0;\n    if (f6.isEven() || !T$3.simpleSieve || !T$3.fermatTest(f6) || !S$5.test(f6)) return d4 += 1, d4 += \"02\" === c5 || \"05\" === c5 ? 8 : 4, M$4[a5] = d4, d4;\n    switch (S$5.test(f6.shrn(1)) || (d4 += 2), c5) {\n      case \"02\":\n        f6.mod(x$2).cmp(C$2) && (d4 += 8);\n        break;\n      case \"05\":\n        (b4 = f6.mod(D$2)).cmp(G$1) && b4.cmp(H$2) && (d4 += 8);\n        break;\n      default:\n        d4 += 4;\n    }\n    return M$4[a5] = d4, d4;\n  })((this || B$5).__prime, (this || B$5).__gen)), (this || B$5)._primeCode;\n} }), k$7.prototype.generateKeys = function() {\n  return (this || B$5)._priv || ((this || B$5)._priv = new R$1(j$1((this || B$5)._primeLen))), (this || B$5)._pub = (this || B$5)._gen.toRed((this || B$5)._prime).redPow((this || B$5)._priv).fromRed(), this.getPublicKey();\n}, k$7.prototype.computeSecret = function(f6) {\n  var e7 = (f6 = (f6 = new R$1(f6)).toRed((this || B$5)._prime)).redPow((this || B$5)._priv).fromRed(), c5 = new K$2(e7.toArray()), a5 = this.getPrime();\n  if (c5.length < a5.length) {\n    var b4 = new K$2(a5.length - c5.length);\n    b4.fill(0), c5 = K$2.concat([b4, c5]);\n  }\n  return c5;\n}, k$7.prototype.getPublicKey = function(f6) {\n  return A$5((this || B$5)._pub, f6);\n}, k$7.prototype.getPrivateKey = function(f6) {\n  return A$5((this || B$5)._priv, f6);\n}, k$7.prototype.getPrime = function(f6) {\n  return A$5((this || B$5).__prime, f6);\n}, k$7.prototype.getGenerator = function(f6) {\n  return A$5((this || B$5)._gen, f6);\n}, k$7.prototype.setGenerator = function(f6, e7) {\n  return e7 = e7 || \"utf8\", K$2.isBuffer(f6) || (f6 = new K$2(f6, e7)), (this || B$5).__gen = f6, (this || B$5)._gen = new R$1(f6), this || B$5;\n};\nvar q$1 = y$9;\nvar O$3 = {};\nvar z$3 = e$1$1.Buffer;\nvar F$3 = P$2;\nvar I$6 = { modp1: { gen: \"02\", prime: \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\" }, modp2: { gen: \"02\", prime: \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\" }, modp5: { gen: \"02\", prime: \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\" }, modp14: { gen: \"02\", prime: \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\" }, modp15: { gen: \"02\", prime: \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\" }, modp16: { gen: \"02\", prime: \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\" }, modp17: { gen: \"02\", prime: \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\" }, modp18: { gen: \"02\", prime: \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\" } };\nvar J$1 = q$1;\nvar N$2 = { binary: true, hex: true, base64: true };\nO$3.DiffieHellmanGroup = O$3.createDiffieHellmanGroup = O$3.getDiffieHellman = function(f6) {\n  var e7 = new z$3(I$6[f6].prime, \"hex\"), c5 = new z$3(I$6[f6].gen, \"hex\");\n  return new J$1(e7, c5);\n}, O$3.createDiffieHellman = O$3.DiffieHellman = function f5(e7, c5, a5, b4) {\n  return z$3.isBuffer(c5) || void 0 === N$2[c5] ? f5(e7, \"binary\", c5, a5) : (c5 = c5 || \"binary\", b4 = b4 || \"binary\", a5 = a5 || new z$3([2]), z$3.isBuffer(a5) || (a5 = new z$3(a5, b4)), \"number\" == typeof e7 ? new J$1(F$3(e7, a5), a5, true) : (z$3.isBuffer(e7) || (e7 = new z$3(e7, c5)), new J$1(e7, a5, true)));\n};\nvar m$a;\nvar u$c = e$1$1.Buffer;\nvar n$g = n$c;\nvar d$d = a4;\nfunction t$8(e7, o5) {\n  var r5 = (function(e8) {\n    var o6 = i$6(e8);\n    return { blinder: o6.toRed(n$g.mont(e8.modulus)).redPow(new n$g(e8.publicExponent)).fromRed(), unblinder: o6.invm(e8.modulus) };\n  })(o5), m4 = o5.modulus.byteLength(), d4 = (n$g.mont(o5.modulus), new n$g(e7).mul(r5.blinder).umod(o5.modulus)), t5 = d4.toRed(n$g.mont(o5.prime1)), l5 = d4.toRed(n$g.mont(o5.prime2)), f6 = o5.coefficient, p5 = o5.prime1, b4 = o5.prime2, s5 = t5.redPow(o5.exponent1), a5 = l5.redPow(o5.exponent2);\n  s5 = s5.fromRed(), a5 = a5.fromRed();\n  var w4 = s5.isub(a5).imul(f6).umod(p5);\n  return w4.imul(b4), a5.iadd(w4), new u$c(a5.imul(r5.unblinder).umod(o5.modulus).toArray(false, m4));\n}\nfunction i$6(e7) {\n  for (var o5 = e7.modulus.byteLength(), r5 = new n$g(d$d(o5)); r5.cmp(e7.modulus) >= 0 || !r5.umod(e7.prime1) || !r5.umod(e7.prime2); ) r5 = new n$g(d$d(o5));\n  return r5;\n}\nm$a = t$8, t$8.getr = i$6;\nvar l$d = m$a;\nvar r$a = {};\nvar e$b = r$a;\nfunction t$9(r5) {\n  return 1 === r5.length ? \"0\" + r5 : r5;\n}\nfunction n$h(r5) {\n  for (var e7 = \"\", n5 = 0; n5 < r5.length; n5++) e7 += t$9(r5[n5].toString(16));\n  return e7;\n}\ne$b.toArray = function(r5, e7) {\n  if (Array.isArray(r5)) return r5.slice();\n  if (!r5) return [];\n  var t5 = [];\n  if (\"string\" != typeof r5) {\n    for (var n5 = 0; n5 < r5.length; n5++) t5[n5] = 0 | r5[n5];\n    return t5;\n  }\n  if (\"hex\" === e7) {\n    (r5 = r5.replace(/[^a-z0-9]+/gi, \"\")).length % 2 != 0 && (r5 = \"0\" + r5);\n    for (n5 = 0; n5 < r5.length; n5 += 2) t5.push(parseInt(r5[n5] + r5[n5 + 1], 16));\n  } else for (n5 = 0; n5 < r5.length; n5++) {\n    var o5 = r5.charCodeAt(n5), u5 = o5 >> 8, f6 = 255 & o5;\n    u5 ? t5.push(u5, f6) : t5.push(f6);\n  }\n  return t5;\n}, e$b.zero2 = t$9, e$b.toHex = n$h, e$b.encode = function(r5, e7) {\n  return \"hex\" === e7 ? n$h(r5) : r5;\n};\nvar n$i = {};\nvar a$g = n$i;\nvar i$7 = n$c;\nvar o$g = o$7;\nvar c$d = r$a;\na$g.assert = o$g, a$g.toArray = c$d.toArray, a$g.zero2 = c$d.zero2, a$g.toHex = c$d.toHex, a$g.encode = c$d.encode, a$g.getNAF = function(r5, t5, e7) {\n  var n5 = new Array(Math.max(r5.bitLength(), e7) + 1);\n  n5.fill(0);\n  for (var a5 = 1 << t5 + 1, i5 = r5.clone(), o5 = 0; o5 < n5.length; o5++) {\n    var c5, s5 = i5.andln(a5 - 1);\n    i5.isOdd() ? (c5 = s5 > (a5 >> 1) - 1 ? (a5 >> 1) - s5 : s5, i5.isubn(c5)) : c5 = 0, n5[o5] = c5, i5.iushrn(1);\n  }\n  return n5;\n}, a$g.getJSF = function(r5, t5) {\n  var e7 = [[], []];\n  r5 = r5.clone(), t5 = t5.clone();\n  for (var n5 = 0, a5 = 0; r5.cmpn(-n5) > 0 || t5.cmpn(-a5) > 0; ) {\n    var i5, o5, c5, s5 = r5.andln(3) + n5 & 3, l5 = t5.andln(3) + a5 & 3;\n    if (3 === s5 && (s5 = -1), 3 === l5 && (l5 = -1), 0 == (1 & s5)) i5 = 0;\n    else i5 = 3 !== (c5 = r5.andln(7) + n5 & 7) && 5 !== c5 || 2 !== l5 ? s5 : -s5;\n    if (e7[0].push(i5), 0 == (1 & l5)) o5 = 0;\n    else o5 = 3 !== (c5 = t5.andln(7) + a5 & 7) && 5 !== c5 || 2 !== s5 ? l5 : -l5;\n    e7[1].push(o5), 2 * n5 === i5 + 1 && (n5 = 1 - n5), 2 * a5 === o5 + 1 && (a5 = 1 - a5), r5.iushrn(1), t5.iushrn(1);\n  }\n  return e7;\n}, a$g.cachedProperty = function(r5, t5, e7) {\n  var n5 = \"_\" + t5;\n  r5.prototype[t5] = function() {\n    return void 0 !== this[n5] ? this[n5] : this[n5] = e7.call(this);\n  };\n}, a$g.parseBytes = function(r5) {\n  return \"string\" == typeof r5 ? a$g.toArray(r5, \"hex\") : r5;\n}, a$g.intFromLE = function(r5) {\n  return new i$7(r5, \"hex\", \"le\");\n};\nvar s$d;\nvar l$e = n$c;\nvar u$d = n$i;\nvar h$c = u$d.assert;\nfunction p$f(r5, t5) {\n  if (r5 instanceof p$f) return r5;\n  this._importDER(r5, t5) || (h$c(r5.r && r5.s, \"Signature without r or s\"), this.r = new l$e(r5.r, 16), this.s = new l$e(r5.s, 16), void 0 === r5.recoveryParam ? this.recoveryParam = null : this.recoveryParam = r5.recoveryParam);\n}\nfunction f$j() {\n  this.place = 0;\n}\nfunction v$a(r5, t5) {\n  var e7 = r5[t5.place++];\n  if (!(128 & e7)) return e7;\n  for (var n5 = 15 & e7, a5 = 0, i5 = 0, o5 = t5.place; i5 < n5; i5++, o5++) a5 <<= 8, a5 |= r5[o5];\n  return t5.place = o5, a5;\n}\nfunction m$b(r5) {\n  for (var t5 = 0, e7 = r5.length - 1; !r5[t5] && !(128 & r5[t5 + 1]) && t5 < e7; ) t5++;\n  return 0 === t5 ? r5 : r5.slice(t5);\n}\nfunction y$a(r5, t5) {\n  if (t5 < 128) return r5.push(t5), void 0;\n  var e7 = 1 + (Math.log(t5) / Math.LN2 >>> 3);\n  for (r5.push(128 | e7); --e7; ) r5.push(t5 >>> (e7 << 3) & 255);\n  r5.push(t5);\n}\ns$d = p$f, p$f.prototype._importDER = function(r5, t5) {\n  r5 = u$d.toArray(r5, t5);\n  var e7 = new f$j();\n  if (48 !== r5[e7.place++]) return false;\n  if (v$a(r5, e7) + e7.place !== r5.length) return false;\n  if (2 !== r5[e7.place++]) return false;\n  var n5 = v$a(r5, e7), a5 = r5.slice(e7.place, n5 + e7.place);\n  if (e7.place += n5, 2 !== r5[e7.place++]) return false;\n  var i5 = v$a(r5, e7);\n  if (r5.length !== i5 + e7.place) return false;\n  var o5 = r5.slice(e7.place, i5 + e7.place);\n  return 0 === a5[0] && 128 & a5[1] && (a5 = a5.slice(1)), 0 === o5[0] && 128 & o5[1] && (o5 = o5.slice(1)), this.r = new l$e(a5), this.s = new l$e(o5), this.recoveryParam = null, true;\n}, p$f.prototype.toDER = function(r5) {\n  var t5 = this.r.toArray(), e7 = this.s.toArray();\n  for (128 & t5[0] && (t5 = [0].concat(t5)), 128 & e7[0] && (e7 = [0].concat(e7)), t5 = m$b(t5), e7 = m$b(e7); !(e7[0] || 128 & e7[1]); ) e7 = e7.slice(1);\n  var n5 = [2];\n  y$a(n5, t5.length), (n5 = n5.concat(t5)).push(2), y$a(n5, e7.length);\n  var a5 = n5.concat(e7), i5 = [48];\n  return y$a(i5, a5.length), i5 = i5.concat(a5), u$d.encode(i5, r5);\n};\nvar d$e = s$d;\nvar r$b = {};\nvar i$8 = o$7;\nvar e$c = t$2;\nfunction h$d(t5, n5) {\n  return 55296 == (64512 & t5.charCodeAt(n5)) && (!(n5 < 0 || n5 + 1 >= t5.length) && 56320 == (64512 & t5.charCodeAt(n5 + 1)));\n}\nfunction o$h(t5) {\n  return (t5 >>> 24 | t5 >>> 8 & 65280 | t5 << 8 & 16711680 | (255 & t5) << 24) >>> 0;\n}\nfunction u$e(t5) {\n  return 1 === t5.length ? \"0\" + t5 : t5;\n}\nfunction s$e(t5) {\n  return 7 === t5.length ? \"0\" + t5 : 6 === t5.length ? \"00\" + t5 : 5 === t5.length ? \"000\" + t5 : 4 === t5.length ? \"0000\" + t5 : 3 === t5.length ? \"00000\" + t5 : 2 === t5.length ? \"000000\" + t5 : 1 === t5.length ? \"0000000\" + t5 : t5;\n}\nr$b.inherits = e$c, r$b.toArray = function(t5, n5) {\n  if (Array.isArray(t5)) return t5.slice();\n  if (!t5) return [];\n  var r5 = [];\n  if (\"string\" == typeof t5) if (n5) {\n    if (\"hex\" === n5) for ((t5 = t5.replace(/[^a-z0-9]+/gi, \"\")).length % 2 != 0 && (t5 = \"0\" + t5), e7 = 0; e7 < t5.length; e7 += 2) r5.push(parseInt(t5[e7] + t5[e7 + 1], 16));\n  } else for (var i5 = 0, e7 = 0; e7 < t5.length; e7++) {\n    var o5 = t5.charCodeAt(e7);\n    o5 < 128 ? r5[i5++] = o5 : o5 < 2048 ? (r5[i5++] = o5 >> 6 | 192, r5[i5++] = 63 & o5 | 128) : h$d(t5, e7) ? (o5 = 65536 + ((1023 & o5) << 10) + (1023 & t5.charCodeAt(++e7)), r5[i5++] = o5 >> 18 | 240, r5[i5++] = o5 >> 12 & 63 | 128, r5[i5++] = o5 >> 6 & 63 | 128, r5[i5++] = 63 & o5 | 128) : (r5[i5++] = o5 >> 12 | 224, r5[i5++] = o5 >> 6 & 63 | 128, r5[i5++] = 63 & o5 | 128);\n  }\n  else for (e7 = 0; e7 < t5.length; e7++) r5[e7] = 0 | t5[e7];\n  return r5;\n}, r$b.toHex = function(t5) {\n  for (var n5 = \"\", r5 = 0; r5 < t5.length; r5++) n5 += u$e(t5[r5].toString(16));\n  return n5;\n}, r$b.htonl = o$h, r$b.toHex32 = function(t5, n5) {\n  for (var r5 = \"\", i5 = 0; i5 < t5.length; i5++) {\n    var e7 = t5[i5];\n    \"little\" === n5 && (e7 = o$h(e7)), r5 += s$e(e7.toString(16));\n  }\n  return r5;\n}, r$b.zero2 = u$e, r$b.zero8 = s$e, r$b.join32 = function(t5, n5, r5, e7) {\n  var h5 = r5 - n5;\n  i$8(h5 % 4 == 0);\n  for (var o5 = new Array(h5 / 4), u5 = 0, s5 = n5; u5 < o5.length; u5++, s5 += 4) {\n    var a5;\n    a5 = \"big\" === e7 ? t5[s5] << 24 | t5[s5 + 1] << 16 | t5[s5 + 2] << 8 | t5[s5 + 3] : t5[s5 + 3] << 24 | t5[s5 + 2] << 16 | t5[s5 + 1] << 8 | t5[s5], o5[u5] = a5 >>> 0;\n  }\n  return o5;\n}, r$b.split32 = function(t5, n5) {\n  for (var r5 = new Array(4 * t5.length), i5 = 0, e7 = 0; i5 < t5.length; i5++, e7 += 4) {\n    var h5 = t5[i5];\n    \"big\" === n5 ? (r5[e7] = h5 >>> 24, r5[e7 + 1] = h5 >>> 16 & 255, r5[e7 + 2] = h5 >>> 8 & 255, r5[e7 + 3] = 255 & h5) : (r5[e7 + 3] = h5 >>> 24, r5[e7 + 2] = h5 >>> 16 & 255, r5[e7 + 1] = h5 >>> 8 & 255, r5[e7] = 255 & h5);\n  }\n  return r5;\n}, r$b.rotr32 = function(t5, n5) {\n  return t5 >>> n5 | t5 << 32 - n5;\n}, r$b.rotl32 = function(t5, n5) {\n  return t5 << n5 | t5 >>> 32 - n5;\n}, r$b.sum32 = function(t5, n5) {\n  return t5 + n5 >>> 0;\n}, r$b.sum32_3 = function(t5, n5, r5) {\n  return t5 + n5 + r5 >>> 0;\n}, r$b.sum32_4 = function(t5, n5, r5, i5) {\n  return t5 + n5 + r5 + i5 >>> 0;\n}, r$b.sum32_5 = function(t5, n5, r5, i5, e7) {\n  return t5 + n5 + r5 + i5 + e7 >>> 0;\n}, r$b.sum64 = function(t5, n5, r5, i5) {\n  var e7 = t5[n5], h5 = i5 + t5[n5 + 1] >>> 0, o5 = (h5 < i5 ? 1 : 0) + r5 + e7;\n  t5[n5] = o5 >>> 0, t5[n5 + 1] = h5;\n}, r$b.sum64_hi = function(t5, n5, r5, i5) {\n  return (n5 + i5 >>> 0 < n5 ? 1 : 0) + t5 + r5 >>> 0;\n}, r$b.sum64_lo = function(t5, n5, r5, i5) {\n  return n5 + i5 >>> 0;\n}, r$b.sum64_4_hi = function(t5, n5, r5, i5, e7, h5, o5, u5) {\n  var s5 = 0, a5 = n5;\n  return s5 += (a5 = a5 + i5 >>> 0) < n5 ? 1 : 0, s5 += (a5 = a5 + h5 >>> 0) < h5 ? 1 : 0, t5 + r5 + e7 + o5 + (s5 += (a5 = a5 + u5 >>> 0) < u5 ? 1 : 0) >>> 0;\n}, r$b.sum64_4_lo = function(t5, n5, r5, i5, e7, h5, o5, u5) {\n  return n5 + i5 + h5 + u5 >>> 0;\n}, r$b.sum64_5_hi = function(t5, n5, r5, i5, e7, h5, o5, u5, s5, a5) {\n  var l5 = 0, g4 = n5;\n  return l5 += (g4 = g4 + i5 >>> 0) < n5 ? 1 : 0, l5 += (g4 = g4 + h5 >>> 0) < h5 ? 1 : 0, l5 += (g4 = g4 + u5 >>> 0) < u5 ? 1 : 0, t5 + r5 + e7 + o5 + s5 + (l5 += (g4 = g4 + a5 >>> 0) < a5 ? 1 : 0) >>> 0;\n}, r$b.sum64_5_lo = function(t5, n5, r5, i5, e7, h5, o5, u5, s5, a5) {\n  return n5 + i5 + h5 + u5 + a5 >>> 0;\n}, r$b.rotr64_hi = function(t5, n5, r5) {\n  return (n5 << 32 - r5 | t5 >>> r5) >>> 0;\n}, r$b.rotr64_lo = function(t5, n5, r5) {\n  return (t5 << 32 - r5 | n5 >>> r5) >>> 0;\n}, r$b.shr64_hi = function(t5, n5, r5) {\n  return t5 >>> r5;\n}, r$b.shr64_lo = function(t5, n5, r5) {\n  return (t5 << 32 - r5 | n5 >>> r5) >>> 0;\n};\nvar a$h = {};\nvar l$f = r$b;\nvar g$9 = o$7;\nfunction c$e() {\n  this.pending = null, this.pendingTotal = 0, this.blockSize = this.constructor.blockSize, this.outSize = this.constructor.outSize, this.hmacStrength = this.constructor.hmacStrength, this.padLength = this.constructor.padLength / 8, this.endian = \"big\", this._delta8 = this.blockSize / 8, this._delta32 = this.blockSize / 32;\n}\na$h.BlockHash = c$e, c$e.prototype.update = function(t5, n5) {\n  if (t5 = l$f.toArray(t5, n5), this.pending ? this.pending = this.pending.concat(t5) : this.pending = t5, this.pendingTotal += t5.length, this.pending.length >= this._delta8) {\n    var r5 = (t5 = this.pending).length % this._delta8;\n    this.pending = t5.slice(t5.length - r5, t5.length), 0 === this.pending.length && (this.pending = null), t5 = l$f.join32(t5, 0, t5.length - r5, this.endian);\n    for (var i5 = 0; i5 < t5.length; i5 += this._delta32) this._update(t5, i5, i5 + this._delta32);\n  }\n  return this;\n}, c$e.prototype.digest = function(t5) {\n  return this.update(this._pad()), g$9(null === this.pending), this._digest(t5);\n}, c$e.prototype._pad = function() {\n  var t5 = this.pendingTotal, n5 = this._delta8, r5 = n5 - (t5 + this.padLength) % n5, i5 = new Array(r5 + this.padLength);\n  i5[0] = 128;\n  for (var e7 = 1; e7 < r5; e7++) i5[e7] = 0;\n  if (t5 <<= 3, \"big\" === this.endian) {\n    for (var h5 = 8; h5 < this.padLength; h5++) i5[e7++] = 0;\n    i5[e7++] = 0, i5[e7++] = 0, i5[e7++] = 0, i5[e7++] = 0, i5[e7++] = t5 >>> 24 & 255, i5[e7++] = t5 >>> 16 & 255, i5[e7++] = t5 >>> 8 & 255, i5[e7++] = 255 & t5;\n  } else for (i5[e7++] = 255 & t5, i5[e7++] = t5 >>> 8 & 255, i5[e7++] = t5 >>> 16 & 255, i5[e7++] = t5 >>> 24 & 255, i5[e7++] = 0, i5[e7++] = 0, i5[e7++] = 0, i5[e7++] = 0, h5 = 8; h5 < this.padLength; h5++) i5[e7++] = 0;\n  return i5;\n};\nvar r$c;\nvar n$j = r$b;\nvar s$f = a$h;\nvar o$i = o$7;\nvar e$d = n$j.rotr64_hi;\nvar u$f = n$j.rotr64_lo;\nvar a$i = n$j.shr64_hi;\nvar c$f = n$j.shr64_lo;\nvar f$k = n$j.sum64;\nvar v$b = n$j.sum64_hi;\nvar _$a = n$j.sum64_lo;\nvar l$g = n$j.sum64_4_hi;\nvar p$g = n$j.sum64_4_lo;\nvar m$c = n$j.sum64_5_hi;\nvar g$a = n$j.sum64_5_lo;\nvar k$8 = s$f.BlockHash;\nvar d$f = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591];\nfunction y$b() {\n  if (!(this instanceof y$b)) return new y$b();\n  k$8.call(this), this.h = [1779033703, 4089235720, 3144134277, 2227873595, 1013904242, 4271175723, 2773480762, 1595750129, 1359893119, 2917565137, 2600822924, 725511199, 528734635, 4215389547, 1541459225, 327033209], this.k = d$f, this.W = new Array(160);\n}\nfunction b$8(t5, h5, i5, r5, n5) {\n  var s5 = t5 & i5 ^ ~t5 & n5;\n  return s5 < 0 && (s5 += 4294967296), s5;\n}\nfunction x$3(t5, h5, i5, r5, n5, s5) {\n  var o5 = h5 & r5 ^ ~h5 & s5;\n  return o5 < 0 && (o5 += 4294967296), o5;\n}\nfunction B$6(t5, h5, i5, r5, n5) {\n  var s5 = t5 & i5 ^ t5 & n5 ^ i5 & n5;\n  return s5 < 0 && (s5 += 4294967296), s5;\n}\nfunction S$6(t5, h5, i5, r5, n5, s5) {\n  var o5 = h5 & r5 ^ h5 & s5 ^ r5 & s5;\n  return o5 < 0 && (o5 += 4294967296), o5;\n}\nfunction W$1(t5, h5) {\n  var i5 = e$d(t5, h5, 28) ^ e$d(h5, t5, 2) ^ e$d(h5, t5, 7);\n  return i5 < 0 && (i5 += 4294967296), i5;\n}\nfunction w$b(t5, h5) {\n  var i5 = u$f(t5, h5, 28) ^ u$f(h5, t5, 2) ^ u$f(h5, t5, 7);\n  return i5 < 0 && (i5 += 4294967296), i5;\n}\nfunction z$4(t5, h5) {\n  var i5 = e$d(t5, h5, 14) ^ e$d(t5, h5, 18) ^ e$d(h5, t5, 9);\n  return i5 < 0 && (i5 += 4294967296), i5;\n}\nfunction H$3(t5, h5) {\n  var i5 = u$f(t5, h5, 14) ^ u$f(t5, h5, 18) ^ u$f(h5, t5, 9);\n  return i5 < 0 && (i5 += 4294967296), i5;\n}\nfunction j$2(t5, h5) {\n  var i5 = e$d(t5, h5, 1) ^ e$d(t5, h5, 8) ^ a$i(t5, h5, 7);\n  return i5 < 0 && (i5 += 4294967296), i5;\n}\nfunction A$6(t5, h5) {\n  var i5 = u$f(t5, h5, 1) ^ u$f(t5, h5, 8) ^ c$f(t5, h5, 7);\n  return i5 < 0 && (i5 += 4294967296), i5;\n}\nfunction L$2(t5, h5) {\n  var i5 = e$d(t5, h5, 19) ^ e$d(h5, t5, 29) ^ a$i(t5, h5, 6);\n  return i5 < 0 && (i5 += 4294967296), i5;\n}\nfunction q$2(t5, h5) {\n  var i5 = u$f(t5, h5, 19) ^ u$f(h5, t5, 29) ^ c$f(t5, h5, 6);\n  return i5 < 0 && (i5 += 4294967296), i5;\n}\nn$j.inherits(y$b, k$8), r$c = y$b, y$b.blockSize = 1024, y$b.outSize = 512, y$b.hmacStrength = 192, y$b.padLength = 128, y$b.prototype._prepareBlock = function(t5, h5) {\n  for (var i5 = this.W, r5 = 0; r5 < 32; r5++) i5[r5] = t5[h5 + r5];\n  for (; r5 < i5.length; r5 += 2) {\n    var n5 = L$2(i5[r5 - 4], i5[r5 - 3]), s5 = q$2(i5[r5 - 4], i5[r5 - 3]), o5 = i5[r5 - 14], e7 = i5[r5 - 13], u5 = j$2(i5[r5 - 30], i5[r5 - 29]), a5 = A$6(i5[r5 - 30], i5[r5 - 29]), c5 = i5[r5 - 32], f6 = i5[r5 - 31];\n    i5[r5] = l$g(n5, s5, o5, e7, u5, a5, c5, f6), i5[r5 + 1] = p$g(n5, s5, o5, e7, u5, a5, c5, f6);\n  }\n}, y$b.prototype._update = function(t5, h5) {\n  this._prepareBlock(t5, h5);\n  var i5 = this.W, r5 = this.h[0], n5 = this.h[1], s5 = this.h[2], e7 = this.h[3], u5 = this.h[4], a5 = this.h[5], c5 = this.h[6], l5 = this.h[7], p5 = this.h[8], k4 = this.h[9], d4 = this.h[10], y5 = this.h[11], j4 = this.h[12], A4 = this.h[13], L4 = this.h[14], q3 = this.h[15];\n  o$i(this.k.length === i5.length);\n  for (var C4 = 0; C4 < i5.length; C4 += 2) {\n    var D4 = L4, E4 = q3, F4 = z$4(p5, k4), G3 = H$3(p5, k4), I4 = b$8(p5, k4, d4, y5, j4), J3 = x$3(p5, k4, d4, y5, j4, A4), K3 = this.k[C4], M4 = this.k[C4 + 1], N4 = i5[C4], O4 = i5[C4 + 1], P4 = m$c(D4, E4, F4, G3, I4, J3, K3, M4, N4, O4), Q3 = g$a(D4, E4, F4, G3, I4, J3, K3, M4, N4, O4);\n    D4 = W$1(r5, n5), E4 = w$b(r5, n5), F4 = B$6(r5, n5, s5, e7, u5), G3 = S$6(r5, n5, s5, e7, u5, a5);\n    var R4 = v$b(D4, E4, F4, G3), T4 = _$a(D4, E4, F4, G3);\n    L4 = j4, q3 = A4, j4 = d4, A4 = y5, d4 = p5, y5 = k4, p5 = v$b(c5, l5, P4, Q3), k4 = _$a(l5, l5, P4, Q3), c5 = u5, l5 = a5, u5 = s5, a5 = e7, s5 = r5, e7 = n5, r5 = v$b(P4, Q3, R4, T4), n5 = _$a(P4, Q3, R4, T4);\n  }\n  f$k(this.h, 0, r5, n5), f$k(this.h, 2, s5, e7), f$k(this.h, 4, u5, a5), f$k(this.h, 6, c5, l5), f$k(this.h, 8, p5, k4), f$k(this.h, 10, d4, y5), f$k(this.h, 12, j4, A4), f$k(this.h, 14, L4, q3);\n}, y$b.prototype._digest = function(t5) {\n  return \"hex\" === t5 ? n$j.toHex32(this.h, \"big\") : n$j.split32(this.h, \"big\");\n};\nvar C$3 = r$c;\nvar s$g = {};\nvar n$k = r$b.rotr32;\nfunction r$d(t5, h5, i5) {\n  return t5 & h5 ^ ~t5 & i5;\n}\nfunction e$e(t5, h5, i5) {\n  return t5 & h5 ^ t5 & i5 ^ h5 & i5;\n}\nfunction o$j(t5, h5, i5) {\n  return t5 ^ h5 ^ i5;\n}\ns$g.ft_1 = function(t5, h5, i5, s5) {\n  return 0 === t5 ? r$d(h5, i5, s5) : 1 === t5 || 3 === t5 ? o$j(h5, i5, s5) : 2 === t5 ? e$e(h5, i5, s5) : void 0;\n}, s$g.ch32 = r$d, s$g.maj32 = e$e, s$g.p32 = o$j, s$g.s0_256 = function(t5) {\n  return n$k(t5, 2) ^ n$k(t5, 13) ^ n$k(t5, 22);\n}, s$g.s1_256 = function(t5) {\n  return n$k(t5, 6) ^ n$k(t5, 11) ^ n$k(t5, 25);\n}, s$g.g0_256 = function(t5) {\n  return n$k(t5, 7) ^ n$k(t5, 18) ^ t5 >>> 3;\n}, s$g.g1_256 = function(t5) {\n  return n$k(t5, 17) ^ n$k(t5, 19) ^ t5 >>> 10;\n};\nvar u$g;\nvar a$j = r$b;\nvar c$g = a$h;\nvar f$l = s$g;\nvar _$b = o$7;\nvar g$b = a$j.sum32;\nvar m$d = a$j.sum32_4;\nvar p$h = a$j.sum32_5;\nvar l$h = f$l.ch32;\nvar v$c = f$l.maj32;\nvar d$g = f$l.s0_256;\nvar k$9 = f$l.s1_256;\nvar b$9 = f$l.g0_256;\nvar j$3 = f$l.g1_256;\nvar x$4 = c$g.BlockHash;\nvar y$c = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298];\nfunction S$7() {\n  if (!(this instanceof S$7)) return new S$7();\n  x$4.call(this), this.h = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225], this.k = y$c, this.W = new Array(64);\n}\na$j.inherits(S$7, x$4), u$g = S$7, S$7.blockSize = 512, S$7.outSize = 256, S$7.hmacStrength = 192, S$7.padLength = 64, S$7.prototype._update = function(t5, h5) {\n  for (var i5 = this.W, s5 = 0; s5 < 16; s5++) i5[s5] = t5[h5 + s5];\n  for (; s5 < i5.length; s5++) i5[s5] = m$d(j$3(i5[s5 - 2]), i5[s5 - 7], b$9(i5[s5 - 15]), i5[s5 - 16]);\n  var n5 = this.h[0], r5 = this.h[1], e7 = this.h[2], o5 = this.h[3], u5 = this.h[4], a5 = this.h[5], c5 = this.h[6], f6 = this.h[7];\n  for (_$b(this.k.length === i5.length), s5 = 0; s5 < i5.length; s5++) {\n    var x4 = p$h(f6, k$9(u5), l$h(u5, a5, c5), this.k[s5], i5[s5]), y5 = g$b(d$g(n5), v$c(n5, r5, e7));\n    f6 = c5, c5 = a5, a5 = u5, u5 = g$b(o5, x4), o5 = e7, e7 = r5, r5 = n5, n5 = g$b(x4, y5);\n  }\n  this.h[0] = g$b(this.h[0], n5), this.h[1] = g$b(this.h[1], r5), this.h[2] = g$b(this.h[2], e7), this.h[3] = g$b(this.h[3], o5), this.h[4] = g$b(this.h[4], u5), this.h[5] = g$b(this.h[5], a5), this.h[6] = g$b(this.h[6], c5), this.h[7] = g$b(this.h[7], f6);\n}, S$7.prototype._digest = function(t5) {\n  return \"hex\" === t5 ? a$j.toHex32(this.h, \"big\") : a$j.split32(this.h, \"big\");\n};\nvar w$c = u$g;\nvar r$e;\nvar o$k = r$b;\nvar a$k = a$h;\nvar u$h = s$g;\nvar l$i = o$k.rotl32;\nvar c$h = o$k.sum32;\nvar p$i = o$k.sum32_5;\nvar f$m = u$h.ft_1;\nvar g$c = a$k.BlockHash;\nvar d$h = [1518500249, 1859775393, 2400959708, 3395469782];\nfunction m$e() {\n  if (!(this instanceof m$e)) return new m$e();\n  g$c.call(this), this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520], this.W = new Array(80);\n}\no$k.inherits(m$e, g$c), r$e = m$e, m$e.blockSize = 512, m$e.outSize = 160, m$e.hmacStrength = 80, m$e.padLength = 64, m$e.prototype._update = function(t5, h5) {\n  for (var i5 = this.W, s5 = 0; s5 < 16; s5++) i5[s5] = t5[h5 + s5];\n  for (; s5 < i5.length; s5++) i5[s5] = l$i(i5[s5 - 3] ^ i5[s5 - 8] ^ i5[s5 - 14] ^ i5[s5 - 16], 1);\n  var e7 = this.h[0], n5 = this.h[1], r5 = this.h[2], o5 = this.h[3], a5 = this.h[4];\n  for (s5 = 0; s5 < i5.length; s5++) {\n    var u5 = ~~(s5 / 20), g4 = p$i(l$i(e7, 5), f$m(u5, n5, r5, o5), a5, i5[s5], d$h[u5]);\n    a5 = o5, o5 = r5, r5 = l$i(n5, 30), n5 = e7, e7 = g4;\n  }\n  this.h[0] = c$h(this.h[0], e7), this.h[1] = c$h(this.h[1], n5), this.h[2] = c$h(this.h[2], r5), this.h[3] = c$h(this.h[3], o5), this.h[4] = c$h(this.h[4], a5);\n}, m$e.prototype._digest = function(t5) {\n  return \"hex\" === t5 ? o$k.toHex32(this.h, \"big\") : o$k.split32(this.h, \"big\");\n};\nvar S$8;\nvar _$c = r$e;\nvar b$a = r$b;\nvar z$5 = w$c;\nfunction v$d() {\n  if (!(this instanceof v$d)) return new v$d();\n  z$5.call(this), this.h = [3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428];\n}\nb$a.inherits(v$d, z$5), S$8 = v$d, v$d.blockSize = 512, v$d.outSize = 224, v$d.hmacStrength = 192, v$d.padLength = 64, v$d.prototype._digest = function(t5) {\n  return \"hex\" === t5 ? b$a.toHex32(this.h.slice(0, 7), \"big\") : b$a.split32(this.h.slice(0, 7), \"big\");\n};\nvar k$a;\nvar y$d = S$8;\nvar H$4 = r$b;\nvar w$d = C$3;\nfunction x$5() {\n  if (!(this instanceof x$5)) return new x$5();\n  w$d.call(this), this.h = [3418070365, 3238371032, 1654270250, 914150663, 2438529370, 812702999, 355462360, 4144912697, 1731405415, 4290775857, 2394180231, 1750603025, 3675008525, 1694076839, 1203062813, 3204075428];\n}\nH$4.inherits(x$5, w$d), k$a = x$5, x$5.blockSize = 1024, x$5.outSize = 384, x$5.hmacStrength = 192, x$5.padLength = 128, x$5.prototype._digest = function(t5) {\n  return \"hex\" === t5 ? H$4.toHex32(this.h.slice(0, 12), \"big\") : H$4.split32(this.h.slice(0, 12), \"big\");\n};\nvar L$3 = k$a;\nvar j$4 = {};\nj$4.sha1 = _$c, j$4.sha224 = y$d, j$4.sha256 = w$c, j$4.sha384 = L$3, j$4.sha512 = C$3;\nvar A$7 = {};\nvar B$7 = r$b;\nvar W$2 = a$h;\nvar q$3 = B$7.rotl32;\nvar C$4 = B$7.sum32;\nvar D$3 = B$7.sum32_3;\nvar E$7 = B$7.sum32_4;\nvar F$4 = W$2.BlockHash;\nfunction G$2() {\n  if (!(this instanceof G$2)) return new G$2();\n  F$4.call(this), this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520], this.endian = \"little\";\n}\nfunction I$7(t5, h5, i5, s5) {\n  return t5 <= 15 ? h5 ^ i5 ^ s5 : t5 <= 31 ? h5 & i5 | ~h5 & s5 : t5 <= 47 ? (h5 | ~i5) ^ s5 : t5 <= 63 ? h5 & s5 | i5 & ~s5 : h5 ^ (i5 | ~s5);\n}\nfunction J$2(t5) {\n  return t5 <= 15 ? 0 : t5 <= 31 ? 1518500249 : t5 <= 47 ? 1859775393 : t5 <= 63 ? 2400959708 : 2840853838;\n}\nfunction K$3(t5) {\n  return t5 <= 15 ? 1352829926 : t5 <= 31 ? 1548603684 : t5 <= 47 ? 1836072691 : t5 <= 63 ? 2053994217 : 0;\n}\nB$7.inherits(G$2, F$4), A$7.ripemd160 = G$2, G$2.blockSize = 512, G$2.outSize = 160, G$2.hmacStrength = 192, G$2.padLength = 64, G$2.prototype._update = function(t5, h5) {\n  for (var i5 = this.h[0], s5 = this.h[1], e7 = this.h[2], n5 = this.h[3], r5 = this.h[4], o5 = i5, a5 = s5, u5 = e7, l5 = n5, c5 = r5, p5 = 0; p5 < 80; p5++) {\n    var f6 = C$4(q$3(E$7(i5, I$7(p5, s5, e7, n5), t5[N$3[p5] + h5], J$2(p5)), P$3[p5]), r5);\n    i5 = r5, r5 = n5, n5 = q$3(e7, 10), e7 = s5, s5 = f6, f6 = C$4(q$3(E$7(o5, I$7(79 - p5, a5, u5, l5), t5[O$4[p5] + h5], K$3(p5)), Q$1[p5]), c5), o5 = c5, c5 = l5, l5 = q$3(u5, 10), u5 = a5, a5 = f6;\n  }\n  f6 = D$3(this.h[1], e7, l5), this.h[1] = D$3(this.h[2], n5, c5), this.h[2] = D$3(this.h[3], r5, o5), this.h[3] = D$3(this.h[4], i5, a5), this.h[4] = D$3(this.h[0], s5, u5), this.h[0] = f6;\n}, G$2.prototype._digest = function(t5) {\n  return \"hex\" === t5 ? B$7.toHex32(this.h, \"little\") : B$7.split32(this.h, \"little\");\n};\nvar M$5;\nvar N$3 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar O$4 = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar P$3 = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar Q$1 = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\nvar R$2 = r$b;\nvar T$4 = o$7;\nfunction U$5(t5, h5, i5) {\n  if (!(this instanceof U$5)) return new U$5(t5, h5, i5);\n  this.Hash = t5, this.blockSize = t5.blockSize / 8, this.outSize = t5.outSize / 8, this.inner = null, this.outer = null, this._init(R$2.toArray(h5, i5));\n}\nM$5 = U$5, U$5.prototype._init = function(t5) {\n  t5.length > this.blockSize && (t5 = new this.Hash().update(t5).digest()), T$4(t5.length <= this.blockSize);\n  for (var h5 = t5.length; h5 < this.blockSize; h5++) t5.push(0);\n  for (h5 = 0; h5 < t5.length; h5++) t5[h5] ^= 54;\n  for (this.inner = new this.Hash().update(t5), h5 = 0; h5 < t5.length; h5++) t5[h5] ^= 106;\n  this.outer = new this.Hash().update(t5);\n}, U$5.prototype.update = function(t5, h5) {\n  return this.inner.update(t5, h5), this;\n}, U$5.prototype.digest = function(t5) {\n  return this.outer.update(this.inner.digest()), this.outer.digest(t5);\n};\nvar V$2 = M$5;\nvar X$2 = {};\nvar Y$1 = X$2;\nY$1.utils = r$b, Y$1.common = a$h, Y$1.sha = j$4, Y$1.ripemd = A$7, Y$1.hmac = V$2, Y$1.sha1 = Y$1.sha.sha1, Y$1.sha256 = Y$1.sha.sha256, Y$1.sha224 = Y$1.sha.sha224, Y$1.sha384 = Y$1.sha.sha384, Y$1.sha512 = Y$1.sha.sha512, Y$1.ripemd160 = Y$1.ripemd.ripemd160;\nvar s$h;\nvar h$e = X$2;\nvar r$f = r$a;\nvar n$l = o$7;\nfunction o$l(t5) {\n  if (!(this instanceof o$l)) return new o$l(t5);\n  this.hash = t5.hash, this.predResist = !!t5.predResist, this.outLen = this.hash.outSize, this.minEntropy = t5.minEntropy || this.hash.hmacStrength, this._reseed = null, this.reseedInterval = null, this.K = null, this.V = null;\n  var e7 = r$f.toArray(t5.entropy, t5.entropyEnc || \"hex\"), i5 = r$f.toArray(t5.nonce, t5.nonceEnc || \"hex\"), s5 = r$f.toArray(t5.pers, t5.persEnc || \"hex\");\n  n$l(e7.length >= this.minEntropy / 8, \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\"), this._init(e7, i5, s5);\n}\ns$h = o$l, o$l.prototype._init = function(t5, e7, i5) {\n  var s5 = t5.concat(e7).concat(i5);\n  this.K = new Array(this.outLen / 8), this.V = new Array(this.outLen / 8);\n  for (var h5 = 0; h5 < this.V.length; h5++) this.K[h5] = 0, this.V[h5] = 1;\n  this._update(s5), this._reseed = 1, this.reseedInterval = 281474976710656;\n}, o$l.prototype._hmac = function() {\n  return new h$e.hmac(this.hash, this.K);\n}, o$l.prototype._update = function(t5) {\n  var e7 = this._hmac().update(this.V).update([0]);\n  t5 && (e7 = e7.update(t5)), this.K = e7.digest(), this.V = this._hmac().update(this.V).digest(), t5 && (this.K = this._hmac().update(this.V).update([1]).update(t5).digest(), this.V = this._hmac().update(this.V).digest());\n}, o$l.prototype.reseed = function(t5, e7, i5, s5) {\n  \"string\" != typeof e7 && (s5 = i5, i5 = e7, e7 = null), t5 = r$f.toArray(t5, e7), i5 = r$f.toArray(i5, s5), n$l(t5.length >= this.minEntropy / 8, \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\"), this._update(t5.concat(i5 || [])), this._reseed = 1;\n}, o$l.prototype.generate = function(t5, e7, i5, s5) {\n  if (this._reseed > this.reseedInterval) throw new Error(\"Reseed is required\");\n  \"string\" != typeof e7 && (s5 = i5, i5 = e7, e7 = null), i5 && (i5 = r$f.toArray(i5, s5 || \"hex\"), this._update(i5));\n  for (var h5 = []; h5.length < t5; ) this.V = this._hmac().update(this.V).digest(), h5 = h5.concat(this.V);\n  var n5 = h5.slice(0, t5);\n  return this._update(i5), this._reseed++, r$f.encode(n5, e7);\n};\nvar a$l = s$h;\nvar b$b;\nvar i$9 = n$c;\nvar n$m = n$i;\nvar s$i = n$m.getNAF;\nvar o$m = n$m.getJSF;\nvar u$i = n$m.assert;\nfunction h$f(e7, f6) {\n  this.type = e7, this.p = new i$9(f6.p, 16), this.red = f6.prime ? i$9.red(f6.prime) : i$9.mont(this.p), this.zero = new i$9(0).toRed(this.red), this.one = new i$9(1).toRed(this.red), this.two = new i$9(2).toRed(this.red), this.n = f6.n && new i$9(f6.n, 16), this.g = f6.g && this.pointFromJSON(f6.g, f6.gRed), this._wnafT1 = new Array(4), this._wnafT2 = new Array(4), this._wnafT3 = new Array(4), this._wnafT4 = new Array(4), this._bitLength = this.n ? this.n.bitLength() : 0;\n  var d4 = this.n && this.p.div(this.n);\n  !d4 || d4.cmpn(100) > 0 ? this.redN = null : (this._maxwellTrick = true, this.redN = this.n.toRed(this.red));\n}\nfunction p$j(e7, f6) {\n  this.curve = e7, this.type = f6, this.precomputed = null;\n}\nb$b = h$f, h$f.prototype.point = function() {\n  throw new Error(\"Not implemented\");\n}, h$f.prototype.validate = function() {\n  throw new Error(\"Not implemented\");\n}, h$f.prototype._fixedNafMul = function(e7, f6) {\n  u$i(e7.precomputed);\n  var d4 = e7._getDoubles(), c5 = s$i(f6, 1, this._bitLength), t5 = (1 << d4.step + 1) - (d4.step % 2 == 0 ? 2 : 1);\n  t5 /= 3;\n  for (var a5 = [], r5 = 0; r5 < c5.length; r5 += d4.step) {\n    var b4 = 0;\n    for (f6 = r5 + d4.step - 1; f6 >= r5; f6--) b4 = (b4 << 1) + c5[f6];\n    a5.push(b4);\n  }\n  for (var i5 = this.jpoint(null, null, null), n5 = this.jpoint(null, null, null), o5 = t5; o5 > 0; o5--) {\n    for (r5 = 0; r5 < a5.length; r5++) {\n      (b4 = a5[r5]) === o5 ? n5 = n5.mixedAdd(d4.points[r5]) : b4 === -o5 && (n5 = n5.mixedAdd(d4.points[r5].neg()));\n    }\n    i5 = i5.add(n5);\n  }\n  return i5.toP();\n}, h$f.prototype._wnafMul = function(e7, f6) {\n  var d4 = 4, c5 = e7._getNAFPoints(d4);\n  d4 = c5.wnd;\n  for (var t5 = c5.points, a5 = s$i(f6, d4, this._bitLength), r5 = this.jpoint(null, null, null), b4 = a5.length - 1; b4 >= 0; b4--) {\n    for (f6 = 0; b4 >= 0 && 0 === a5[b4]; b4--) f6++;\n    if (b4 >= 0 && f6++, r5 = r5.dblp(f6), b4 < 0) break;\n    var i5 = a5[b4];\n    u$i(0 !== i5), r5 = \"affine\" === e7.type ? i5 > 0 ? r5.mixedAdd(t5[i5 - 1 >> 1]) : r5.mixedAdd(t5[-i5 - 1 >> 1].neg()) : i5 > 0 ? r5.add(t5[i5 - 1 >> 1]) : r5.add(t5[-i5 - 1 >> 1].neg());\n  }\n  return \"affine\" === e7.type ? r5.toP() : r5;\n}, h$f.prototype._wnafMulAdd = function(e7, f6, d4, c5, t5) {\n  for (var a5 = this._wnafT1, r5 = this._wnafT2, b4 = this._wnafT3, i5 = 0, n5 = 0; n5 < c5; n5++) {\n    var u5 = (x4 = f6[n5])._getNAFPoints(e7);\n    a5[n5] = u5.wnd, r5[n5] = u5.points;\n  }\n  for (n5 = c5 - 1; n5 >= 1; n5 -= 2) {\n    var h5 = n5 - 1, p5 = n5;\n    if (1 === a5[h5] && 1 === a5[p5]) {\n      var l5 = [f6[h5], null, null, f6[p5]];\n      0 === f6[h5].y.cmp(f6[p5].y) ? (l5[1] = f6[h5].add(f6[p5]), l5[2] = f6[h5].toJ().mixedAdd(f6[p5].neg())) : 0 === f6[h5].y.cmp(f6[p5].y.redNeg()) ? (l5[1] = f6[h5].toJ().mixedAdd(f6[p5]), l5[2] = f6[h5].add(f6[p5].neg())) : (l5[1] = f6[h5].toJ().mixedAdd(f6[p5]), l5[2] = f6[h5].toJ().mixedAdd(f6[p5].neg()));\n      var v5 = [-3, -1, -5, -7, 0, 7, 5, 1, 3], y5 = o$m(d4[h5], d4[p5]);\n      i5 = Math.max(y5[0].length, i5), b4[h5] = new Array(i5), b4[p5] = new Array(i5);\n      for (var m4 = 0; m4 < i5; m4++) {\n        var S4 = 0 | y5[0][m4], g4 = 0 | y5[1][m4];\n        b4[h5][m4] = v5[3 * (S4 + 1) + (g4 + 1)], b4[p5][m4] = 0, r5[h5] = l5;\n      }\n    } else b4[h5] = s$i(d4[h5], a5[h5], this._bitLength), b4[p5] = s$i(d4[p5], a5[p5], this._bitLength), i5 = Math.max(b4[h5].length, i5), i5 = Math.max(b4[p5].length, i5);\n  }\n  var A4 = this.jpoint(null, null, null), I4 = this._wnafT4;\n  for (n5 = i5; n5 >= 0; n5--) {\n    for (var w4 = 0; n5 >= 0; ) {\n      var M4 = true;\n      for (m4 = 0; m4 < c5; m4++) I4[m4] = 0 | b4[m4][n5], 0 !== I4[m4] && (M4 = false);\n      if (!M4) break;\n      w4++, n5--;\n    }\n    if (n5 >= 0 && w4++, A4 = A4.dblp(w4), n5 < 0) break;\n    for (m4 = 0; m4 < c5; m4++) {\n      var x4, _4 = I4[m4];\n      0 !== _4 && (_4 > 0 ? x4 = r5[m4][_4 - 1 >> 1] : _4 < 0 && (x4 = r5[m4][-_4 - 1 >> 1].neg()), A4 = \"affine\" === x4.type ? A4.mixedAdd(x4) : A4.add(x4));\n    }\n  }\n  for (n5 = 0; n5 < c5; n5++) r5[n5] = null;\n  return t5 ? A4 : A4.toP();\n}, h$f.BasePoint = p$j, p$j.prototype.eq = function() {\n  throw new Error(\"Not implemented\");\n}, p$j.prototype.validate = function() {\n  return this.curve.validate(this);\n}, h$f.prototype.decodePoint = function(e7, f6) {\n  e7 = n$m.toArray(e7, f6);\n  var d4 = this.p.byteLength();\n  if ((4 === e7[0] || 6 === e7[0] || 7 === e7[0]) && e7.length - 1 == 2 * d4) return 6 === e7[0] ? u$i(e7[e7.length - 1] % 2 == 0) : 7 === e7[0] && u$i(e7[e7.length - 1] % 2 == 1), this.point(e7.slice(1, 1 + d4), e7.slice(1 + d4, 1 + 2 * d4));\n  if ((2 === e7[0] || 3 === e7[0]) && e7.length - 1 === d4) return this.pointFromX(e7.slice(1, 1 + d4), 3 === e7[0]);\n  throw new Error(\"Unknown point format\");\n}, p$j.prototype.encodeCompressed = function(e7) {\n  return this.encode(e7, true);\n}, p$j.prototype._encode = function(e7) {\n  var f6 = this.curve.p.byteLength(), d4 = this.getX().toArray(\"be\", f6);\n  return e7 ? [this.getY().isEven() ? 2 : 3].concat(d4) : [4].concat(d4, this.getY().toArray(\"be\", f6));\n}, p$j.prototype.encode = function(e7, f6) {\n  return n$m.encode(this._encode(f6), e7);\n}, p$j.prototype.precompute = function(e7) {\n  if (this.precomputed) return this;\n  var f6 = { doubles: null, naf: null, beta: null };\n  return f6.naf = this._getNAFPoints(8), f6.doubles = this._getDoubles(4, e7), f6.beta = this._getBeta(), this.precomputed = f6, this;\n}, p$j.prototype._hasDoubles = function(e7) {\n  if (!this.precomputed) return false;\n  var f6 = this.precomputed.doubles;\n  return !!f6 && f6.points.length >= Math.ceil((e7.bitLength() + 1) / f6.step);\n}, p$j.prototype._getDoubles = function(e7, f6) {\n  if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n  for (var d4 = [this], c5 = this, t5 = 0; t5 < f6; t5 += e7) {\n    for (var a5 = 0; a5 < e7; a5++) c5 = c5.dbl();\n    d4.push(c5);\n  }\n  return { step: e7, points: d4 };\n}, p$j.prototype._getNAFPoints = function(e7) {\n  if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n  for (var f6 = [this], d4 = (1 << e7) - 1, c5 = 1 === d4 ? null : this.dbl(), t5 = 1; t5 < d4; t5++) f6[t5] = f6[t5 - 1].add(c5);\n  return { wnd: e7, points: f6 };\n}, p$j.prototype._getBeta = function() {\n  return null;\n}, p$j.prototype.dblp = function(e7) {\n  for (var f6 = this, d4 = 0; d4 < e7; d4++) f6 = f6.dbl();\n  return f6;\n};\nvar l$j;\nvar v$e = b$b;\nvar y$e = n$c;\nvar m$f = t$2;\nvar S$9 = v$e;\nvar g$d = n$i.assert;\nfunction A$8(e7) {\n  S$9.call(this, \"short\", e7), this.a = new y$e(e7.a, 16).toRed(this.red), this.b = new y$e(e7.b, 16).toRed(this.red), this.tinv = this.two.redInvm(), this.zeroA = 0 === this.a.fromRed().cmpn(0), this.threeA = 0 === this.a.fromRed().sub(this.p).cmpn(-3), this.endo = this._getEndomorphism(e7), this._endoWnafT1 = new Array(4), this._endoWnafT2 = new Array(4);\n}\nfunction I$8(e7, f6, d4, c5) {\n  S$9.BasePoint.call(this, e7, \"affine\"), null === f6 && null === d4 ? (this.x = null, this.y = null, this.inf = true) : (this.x = new y$e(f6, 16), this.y = new y$e(d4, 16), c5 && (this.x.forceRed(this.curve.red), this.y.forceRed(this.curve.red)), this.x.red || (this.x = this.x.toRed(this.curve.red)), this.y.red || (this.y = this.y.toRed(this.curve.red)), this.inf = false);\n}\nfunction w$e(e7, f6, d4, c5) {\n  S$9.BasePoint.call(this, e7, \"jacobian\"), null === f6 && null === d4 && null === c5 ? (this.x = this.curve.one, this.y = this.curve.one, this.z = new y$e(0)) : (this.x = new y$e(f6, 16), this.y = new y$e(d4, 16), this.z = new y$e(c5, 16)), this.x.red || (this.x = this.x.toRed(this.curve.red)), this.y.red || (this.y = this.y.toRed(this.curve.red)), this.z.red || (this.z = this.z.toRed(this.curve.red)), this.zOne = this.z === this.curve.one;\n}\nm$f(A$8, S$9), l$j = A$8, A$8.prototype._getEndomorphism = function(e7) {\n  if (this.zeroA && this.g && this.n && 1 === this.p.modn(3)) {\n    var f6, d4;\n    if (e7.beta) f6 = new y$e(e7.beta, 16).toRed(this.red);\n    else {\n      var c5 = this._getEndoRoots(this.p);\n      f6 = (f6 = c5[0].cmp(c5[1]) < 0 ? c5[0] : c5[1]).toRed(this.red);\n    }\n    if (e7.lambda) d4 = new y$e(e7.lambda, 16);\n    else {\n      var t5 = this._getEndoRoots(this.n);\n      0 === this.g.mul(t5[0]).x.cmp(this.g.x.redMul(f6)) ? d4 = t5[0] : (d4 = t5[1], g$d(0 === this.g.mul(d4).x.cmp(this.g.x.redMul(f6))));\n    }\n    return { beta: f6, lambda: d4, basis: e7.basis ? e7.basis.map((function(e8) {\n      return { a: new y$e(e8.a, 16), b: new y$e(e8.b, 16) };\n    })) : this._getEndoBasis(d4) };\n  }\n}, A$8.prototype._getEndoRoots = function(e7) {\n  var f6 = e7 === this.p ? this.red : y$e.mont(e7), d4 = new y$e(2).toRed(f6).redInvm(), c5 = d4.redNeg(), t5 = new y$e(3).toRed(f6).redNeg().redSqrt().redMul(d4);\n  return [c5.redAdd(t5).fromRed(), c5.redSub(t5).fromRed()];\n}, A$8.prototype._getEndoBasis = function(e7) {\n  for (var f6, d4, c5, t5, a5, r5, b4, i5, n5, s5 = this.n.ushrn(Math.floor(this.n.bitLength() / 2)), o5 = e7, u5 = this.n.clone(), h5 = new y$e(1), p5 = new y$e(0), l5 = new y$e(0), v5 = new y$e(1), m4 = 0; 0 !== o5.cmpn(0); ) {\n    var S4 = u5.div(o5);\n    i5 = u5.sub(S4.mul(o5)), n5 = l5.sub(S4.mul(h5));\n    var g4 = v5.sub(S4.mul(p5));\n    if (!c5 && i5.cmp(s5) < 0) f6 = b4.neg(), d4 = h5, c5 = i5.neg(), t5 = n5;\n    else if (c5 && 2 == ++m4) break;\n    b4 = i5, u5 = o5, o5 = i5, l5 = h5, h5 = n5, v5 = p5, p5 = g4;\n  }\n  a5 = i5.neg(), r5 = n5;\n  var A4 = c5.sqr().add(t5.sqr());\n  return a5.sqr().add(r5.sqr()).cmp(A4) >= 0 && (a5 = f6, r5 = d4), c5.negative && (c5 = c5.neg(), t5 = t5.neg()), a5.negative && (a5 = a5.neg(), r5 = r5.neg()), [{ a: c5, b: t5 }, { a: a5, b: r5 }];\n}, A$8.prototype._endoSplit = function(e7) {\n  var f6 = this.endo.basis, d4 = f6[0], c5 = f6[1], t5 = c5.b.mul(e7).divRound(this.n), a5 = d4.b.neg().mul(e7).divRound(this.n), r5 = t5.mul(d4.a), b4 = a5.mul(c5.a), i5 = t5.mul(d4.b), n5 = a5.mul(c5.b);\n  return { k1: e7.sub(r5).sub(b4), k2: i5.add(n5).neg() };\n}, A$8.prototype.pointFromX = function(e7, f6) {\n  (e7 = new y$e(e7, 16)).red || (e7 = e7.toRed(this.red));\n  var d4 = e7.redSqr().redMul(e7).redIAdd(e7.redMul(this.a)).redIAdd(this.b), c5 = d4.redSqrt();\n  if (0 !== c5.redSqr().redSub(d4).cmp(this.zero)) throw new Error(\"invalid point\");\n  var t5 = c5.fromRed().isOdd();\n  return (f6 && !t5 || !f6 && t5) && (c5 = c5.redNeg()), this.point(e7, c5);\n}, A$8.prototype.validate = function(e7) {\n  if (e7.inf) return true;\n  var f6 = e7.x, d4 = e7.y, c5 = this.a.redMul(f6), t5 = f6.redSqr().redMul(f6).redIAdd(c5).redIAdd(this.b);\n  return 0 === d4.redSqr().redISub(t5).cmpn(0);\n}, A$8.prototype._endoWnafMulAdd = function(e7, f6, d4) {\n  for (var c5 = this._endoWnafT1, t5 = this._endoWnafT2, a5 = 0; a5 < e7.length; a5++) {\n    var r5 = this._endoSplit(f6[a5]), b4 = e7[a5], i5 = b4._getBeta();\n    r5.k1.negative && (r5.k1.ineg(), b4 = b4.neg(true)), r5.k2.negative && (r5.k2.ineg(), i5 = i5.neg(true)), c5[2 * a5] = b4, c5[2 * a5 + 1] = i5, t5[2 * a5] = r5.k1, t5[2 * a5 + 1] = r5.k2;\n  }\n  for (var n5 = this._wnafMulAdd(1, c5, t5, 2 * a5, d4), s5 = 0; s5 < 2 * a5; s5++) c5[s5] = null, t5[s5] = null;\n  return n5;\n}, m$f(I$8, S$9.BasePoint), A$8.prototype.point = function(e7, f6, d4) {\n  return new I$8(this, e7, f6, d4);\n}, A$8.prototype.pointFromJSON = function(e7, f6) {\n  return I$8.fromJSON(this, e7, f6);\n}, I$8.prototype._getBeta = function() {\n  if (this.curve.endo) {\n    var e7 = this.precomputed;\n    if (e7 && e7.beta) return e7.beta;\n    var f6 = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n    if (e7) {\n      var d4 = this.curve, c5 = function(e8) {\n        return d4.point(e8.x.redMul(d4.endo.beta), e8.y);\n      };\n      e7.beta = f6, f6.precomputed = { beta: null, naf: e7.naf && { wnd: e7.naf.wnd, points: e7.naf.points.map(c5) }, doubles: e7.doubles && { step: e7.doubles.step, points: e7.doubles.points.map(c5) } };\n    }\n    return f6;\n  }\n}, I$8.prototype.toJSON = function() {\n  return this.precomputed ? [this.x, this.y, this.precomputed && { doubles: this.precomputed.doubles && { step: this.precomputed.doubles.step, points: this.precomputed.doubles.points.slice(1) }, naf: this.precomputed.naf && { wnd: this.precomputed.naf.wnd, points: this.precomputed.naf.points.slice(1) } }] : [this.x, this.y];\n}, I$8.fromJSON = function(e7, f6, d4) {\n  \"string\" == typeof f6 && (f6 = JSON.parse(f6));\n  var c5 = e7.point(f6[0], f6[1], d4);\n  if (!f6[2]) return c5;\n  function t5(f7) {\n    return e7.point(f7[0], f7[1], d4);\n  }\n  var a5 = f6[2];\n  return c5.precomputed = { beta: null, doubles: a5.doubles && { step: a5.doubles.step, points: [c5].concat(a5.doubles.points.map(t5)) }, naf: a5.naf && { wnd: a5.naf.wnd, points: [c5].concat(a5.naf.points.map(t5)) } }, c5;\n}, I$8.prototype.inspect = function() {\n  return this.isInfinity() ? \"<EC Point Infinity>\" : \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \">\";\n}, I$8.prototype.isInfinity = function() {\n  return this.inf;\n}, I$8.prototype.add = function(e7) {\n  if (this.inf) return e7;\n  if (e7.inf) return this;\n  if (this.eq(e7)) return this.dbl();\n  if (this.neg().eq(e7)) return this.curve.point(null, null);\n  if (0 === this.x.cmp(e7.x)) return this.curve.point(null, null);\n  var f6 = this.y.redSub(e7.y);\n  0 !== f6.cmpn(0) && (f6 = f6.redMul(this.x.redSub(e7.x).redInvm()));\n  var d4 = f6.redSqr().redISub(this.x).redISub(e7.x), c5 = f6.redMul(this.x.redSub(d4)).redISub(this.y);\n  return this.curve.point(d4, c5);\n}, I$8.prototype.dbl = function() {\n  if (this.inf) return this;\n  var e7 = this.y.redAdd(this.y);\n  if (0 === e7.cmpn(0)) return this.curve.point(null, null);\n  var f6 = this.curve.a, d4 = this.x.redSqr(), c5 = e7.redInvm(), t5 = d4.redAdd(d4).redIAdd(d4).redIAdd(f6).redMul(c5), a5 = t5.redSqr().redISub(this.x.redAdd(this.x)), r5 = t5.redMul(this.x.redSub(a5)).redISub(this.y);\n  return this.curve.point(a5, r5);\n}, I$8.prototype.getX = function() {\n  return this.x.fromRed();\n}, I$8.prototype.getY = function() {\n  return this.y.fromRed();\n}, I$8.prototype.mul = function(e7) {\n  return e7 = new y$e(e7, 16), this.isInfinity() ? this : this._hasDoubles(e7) ? this.curve._fixedNafMul(this, e7) : this.curve.endo ? this.curve._endoWnafMulAdd([this], [e7]) : this.curve._wnafMul(this, e7);\n}, I$8.prototype.mulAdd = function(e7, f6, d4) {\n  var c5 = [this, f6], t5 = [e7, d4];\n  return this.curve.endo ? this.curve._endoWnafMulAdd(c5, t5) : this.curve._wnafMulAdd(1, c5, t5, 2);\n}, I$8.prototype.jmulAdd = function(e7, f6, d4) {\n  var c5 = [this, f6], t5 = [e7, d4];\n  return this.curve.endo ? this.curve._endoWnafMulAdd(c5, t5, true) : this.curve._wnafMulAdd(1, c5, t5, 2, true);\n}, I$8.prototype.eq = function(e7) {\n  return this === e7 || this.inf === e7.inf && (this.inf || 0 === this.x.cmp(e7.x) && 0 === this.y.cmp(e7.y));\n}, I$8.prototype.neg = function(e7) {\n  if (this.inf) return this;\n  var f6 = this.curve.point(this.x, this.y.redNeg());\n  if (e7 && this.precomputed) {\n    var d4 = this.precomputed, c5 = function(e8) {\n      return e8.neg();\n    };\n    f6.precomputed = { naf: d4.naf && { wnd: d4.naf.wnd, points: d4.naf.points.map(c5) }, doubles: d4.doubles && { step: d4.doubles.step, points: d4.doubles.points.map(c5) } };\n  }\n  return f6;\n}, I$8.prototype.toJ = function() {\n  return this.inf ? this.curve.jpoint(null, null, null) : this.curve.jpoint(this.x, this.y, this.curve.one);\n}, m$f(w$e, S$9.BasePoint), A$8.prototype.jpoint = function(e7, f6, d4) {\n  return new w$e(this, e7, f6, d4);\n}, w$e.prototype.toP = function() {\n  if (this.isInfinity()) return this.curve.point(null, null);\n  var e7 = this.z.redInvm(), f6 = e7.redSqr(), d4 = this.x.redMul(f6), c5 = this.y.redMul(f6).redMul(e7);\n  return this.curve.point(d4, c5);\n}, w$e.prototype.neg = function() {\n  return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n}, w$e.prototype.add = function(e7) {\n  if (this.isInfinity()) return e7;\n  if (e7.isInfinity()) return this;\n  var f6 = e7.z.redSqr(), d4 = this.z.redSqr(), c5 = this.x.redMul(f6), t5 = e7.x.redMul(d4), a5 = this.y.redMul(f6.redMul(e7.z)), r5 = e7.y.redMul(d4.redMul(this.z)), b4 = c5.redSub(t5), i5 = a5.redSub(r5);\n  if (0 === b4.cmpn(0)) return 0 !== i5.cmpn(0) ? this.curve.jpoint(null, null, null) : this.dbl();\n  var n5 = b4.redSqr(), s5 = n5.redMul(b4), o5 = c5.redMul(n5), u5 = i5.redSqr().redIAdd(s5).redISub(o5).redISub(o5), h5 = i5.redMul(o5.redISub(u5)).redISub(a5.redMul(s5)), p5 = this.z.redMul(e7.z).redMul(b4);\n  return this.curve.jpoint(u5, h5, p5);\n}, w$e.prototype.mixedAdd = function(e7) {\n  if (this.isInfinity()) return e7.toJ();\n  if (e7.isInfinity()) return this;\n  var f6 = this.z.redSqr(), d4 = this.x, c5 = e7.x.redMul(f6), t5 = this.y, a5 = e7.y.redMul(f6).redMul(this.z), r5 = d4.redSub(c5), b4 = t5.redSub(a5);\n  if (0 === r5.cmpn(0)) return 0 !== b4.cmpn(0) ? this.curve.jpoint(null, null, null) : this.dbl();\n  var i5 = r5.redSqr(), n5 = i5.redMul(r5), s5 = d4.redMul(i5), o5 = b4.redSqr().redIAdd(n5).redISub(s5).redISub(s5), u5 = b4.redMul(s5.redISub(o5)).redISub(t5.redMul(n5)), h5 = this.z.redMul(r5);\n  return this.curve.jpoint(o5, u5, h5);\n}, w$e.prototype.dblp = function(e7) {\n  if (0 === e7) return this;\n  if (this.isInfinity()) return this;\n  if (!e7) return this.dbl();\n  if (this.curve.zeroA || this.curve.threeA) {\n    for (var f6 = this, d4 = 0; d4 < e7; d4++) f6 = f6.dbl();\n    return f6;\n  }\n  var c5 = this.curve.a, t5 = this.curve.tinv, a5 = this.x, r5 = this.y, b4 = this.z, i5 = b4.redSqr().redSqr(), n5 = r5.redAdd(r5);\n  for (d4 = 0; d4 < e7; d4++) {\n    var s5 = a5.redSqr(), o5 = n5.redSqr(), u5 = o5.redSqr(), h5 = s5.redAdd(s5).redIAdd(s5).redIAdd(c5.redMul(i5)), p5 = a5.redMul(o5), l5 = h5.redSqr().redISub(p5.redAdd(p5)), v5 = p5.redISub(l5), y5 = h5.redMul(v5);\n    y5 = y5.redIAdd(y5).redISub(u5);\n    var m4 = n5.redMul(b4);\n    d4 + 1 < e7 && (i5 = i5.redMul(u5)), a5 = l5, b4 = m4, n5 = y5;\n  }\n  return this.curve.jpoint(a5, n5.redMul(t5), b4);\n}, w$e.prototype.dbl = function() {\n  return this.isInfinity() ? this : this.curve.zeroA ? this._zeroDbl() : this.curve.threeA ? this._threeDbl() : this._dbl();\n}, w$e.prototype._zeroDbl = function() {\n  var e7, f6, d4;\n  if (this.zOne) {\n    var c5 = this.x.redSqr(), t5 = this.y.redSqr(), a5 = t5.redSqr(), r5 = this.x.redAdd(t5).redSqr().redISub(c5).redISub(a5);\n    r5 = r5.redIAdd(r5);\n    var b4 = c5.redAdd(c5).redIAdd(c5), i5 = b4.redSqr().redISub(r5).redISub(r5), n5 = a5.redIAdd(a5);\n    n5 = (n5 = n5.redIAdd(n5)).redIAdd(n5), e7 = i5, f6 = b4.redMul(r5.redISub(i5)).redISub(n5), d4 = this.y.redAdd(this.y);\n  } else {\n    var s5 = this.x.redSqr(), o5 = this.y.redSqr(), u5 = o5.redSqr(), h5 = this.x.redAdd(o5).redSqr().redISub(s5).redISub(u5);\n    h5 = h5.redIAdd(h5);\n    var p5 = s5.redAdd(s5).redIAdd(s5), l5 = p5.redSqr(), v5 = u5.redIAdd(u5);\n    v5 = (v5 = v5.redIAdd(v5)).redIAdd(v5), e7 = l5.redISub(h5).redISub(h5), f6 = p5.redMul(h5.redISub(e7)).redISub(v5), d4 = (d4 = this.y.redMul(this.z)).redIAdd(d4);\n  }\n  return this.curve.jpoint(e7, f6, d4);\n}, w$e.prototype._threeDbl = function() {\n  var e7, f6, d4;\n  if (this.zOne) {\n    var c5 = this.x.redSqr(), t5 = this.y.redSqr(), a5 = t5.redSqr(), r5 = this.x.redAdd(t5).redSqr().redISub(c5).redISub(a5);\n    r5 = r5.redIAdd(r5);\n    var b4 = c5.redAdd(c5).redIAdd(c5).redIAdd(this.curve.a), i5 = b4.redSqr().redISub(r5).redISub(r5);\n    e7 = i5;\n    var n5 = a5.redIAdd(a5);\n    n5 = (n5 = n5.redIAdd(n5)).redIAdd(n5), f6 = b4.redMul(r5.redISub(i5)).redISub(n5), d4 = this.y.redAdd(this.y);\n  } else {\n    var s5 = this.z.redSqr(), o5 = this.y.redSqr(), u5 = this.x.redMul(o5), h5 = this.x.redSub(s5).redMul(this.x.redAdd(s5));\n    h5 = h5.redAdd(h5).redIAdd(h5);\n    var p5 = u5.redIAdd(u5), l5 = (p5 = p5.redIAdd(p5)).redAdd(p5);\n    e7 = h5.redSqr().redISub(l5), d4 = this.y.redAdd(this.z).redSqr().redISub(o5).redISub(s5);\n    var v5 = o5.redSqr();\n    v5 = (v5 = (v5 = v5.redIAdd(v5)).redIAdd(v5)).redIAdd(v5), f6 = h5.redMul(p5.redISub(e7)).redISub(v5);\n  }\n  return this.curve.jpoint(e7, f6, d4);\n}, w$e.prototype._dbl = function() {\n  var e7 = this.curve.a, f6 = this.x, d4 = this.y, c5 = this.z, t5 = c5.redSqr().redSqr(), a5 = f6.redSqr(), r5 = d4.redSqr(), b4 = a5.redAdd(a5).redIAdd(a5).redIAdd(e7.redMul(t5)), i5 = f6.redAdd(f6), n5 = (i5 = i5.redIAdd(i5)).redMul(r5), s5 = b4.redSqr().redISub(n5.redAdd(n5)), o5 = n5.redISub(s5), u5 = r5.redSqr();\n  u5 = (u5 = (u5 = u5.redIAdd(u5)).redIAdd(u5)).redIAdd(u5);\n  var h5 = b4.redMul(o5).redISub(u5), p5 = d4.redAdd(d4).redMul(c5);\n  return this.curve.jpoint(s5, h5, p5);\n}, w$e.prototype.trpl = function() {\n  if (!this.curve.zeroA) return this.dbl().add(this);\n  var e7 = this.x.redSqr(), f6 = this.y.redSqr(), d4 = this.z.redSqr(), c5 = f6.redSqr(), t5 = e7.redAdd(e7).redIAdd(e7), a5 = t5.redSqr(), r5 = this.x.redAdd(f6).redSqr().redISub(e7).redISub(c5), b4 = (r5 = (r5 = (r5 = r5.redIAdd(r5)).redAdd(r5).redIAdd(r5)).redISub(a5)).redSqr(), i5 = c5.redIAdd(c5);\n  i5 = (i5 = (i5 = i5.redIAdd(i5)).redIAdd(i5)).redIAdd(i5);\n  var n5 = t5.redIAdd(r5).redSqr().redISub(a5).redISub(b4).redISub(i5), s5 = f6.redMul(n5);\n  s5 = (s5 = s5.redIAdd(s5)).redIAdd(s5);\n  var o5 = this.x.redMul(b4).redISub(s5);\n  o5 = (o5 = o5.redIAdd(o5)).redIAdd(o5);\n  var u5 = this.y.redMul(n5.redMul(i5.redISub(n5)).redISub(r5.redMul(b4)));\n  u5 = (u5 = (u5 = u5.redIAdd(u5)).redIAdd(u5)).redIAdd(u5);\n  var h5 = this.z.redAdd(r5).redSqr().redISub(d4).redISub(b4);\n  return this.curve.jpoint(o5, u5, h5);\n}, w$e.prototype.mul = function(e7, f6) {\n  return e7 = new y$e(e7, f6), this.curve._wnafMul(this, e7);\n}, w$e.prototype.eq = function(e7) {\n  if (\"affine\" === e7.type) return this.eq(e7.toJ());\n  if (this === e7) return true;\n  var f6 = this.z.redSqr(), d4 = e7.z.redSqr();\n  if (0 !== this.x.redMul(d4).redISub(e7.x.redMul(f6)).cmpn(0)) return false;\n  var c5 = f6.redMul(this.z), t5 = d4.redMul(e7.z);\n  return 0 === this.y.redMul(t5).redISub(e7.y.redMul(c5)).cmpn(0);\n}, w$e.prototype.eqXToP = function(e7) {\n  var f6 = this.z.redSqr(), d4 = e7.toRed(this.curve.red).redMul(f6);\n  if (0 === this.x.cmp(d4)) return true;\n  for (var c5 = e7.clone(), t5 = this.curve.redN.redMul(f6); ; ) {\n    if (c5.iadd(this.curve.n), c5.cmp(this.curve.p) >= 0) return false;\n    if (d4.redIAdd(t5), 0 === this.x.cmp(d4)) return true;\n  }\n}, w$e.prototype.inspect = function() {\n  return this.isInfinity() ? \"<EC JPoint Infinity>\" : \"<EC JPoint x: \" + this.x.toString(16, 2) + \" y: \" + this.y.toString(16, 2) + \" z: \" + this.z.toString(16, 2) + \">\";\n}, w$e.prototype.isInfinity = function() {\n  return 0 === this.z.cmpn(0);\n};\nvar M$6;\nvar x$6 = l$j;\nvar _$d = n$c;\nvar z$6 = t$2;\nvar q$4 = v$e;\nvar R$3 = n$i;\nfunction P$4(e7) {\n  q$4.call(this, \"mont\", e7), this.a = new _$d(e7.a, 16).toRed(this.red), this.b = new _$d(e7.b, 16).toRed(this.red), this.i4 = new _$d(4).toRed(this.red).redInvm(), this.two = new _$d(2).toRed(this.red), this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\nfunction j$5(e7, f6, d4) {\n  q$4.BasePoint.call(this, e7, \"projective\"), null === f6 && null === d4 ? (this.x = this.curve.one, this.z = this.curve.zero) : (this.x = new _$d(f6, 16), this.z = new _$d(d4, 16), this.x.red || (this.x = this.x.toRed(this.curve.red)), this.z.red || (this.z = this.z.toRed(this.curve.red)));\n}\nz$6(P$4, q$4), M$6 = P$4, P$4.prototype.validate = function(e7) {\n  var f6 = e7.normalize().x, d4 = f6.redSqr(), c5 = d4.redMul(f6).redAdd(d4.redMul(this.a)).redAdd(f6);\n  return 0 === c5.redSqrt().redSqr().cmp(c5);\n}, z$6(j$5, q$4.BasePoint), P$4.prototype.decodePoint = function(e7, f6) {\n  return this.point(R$3.toArray(e7, f6), 1);\n}, P$4.prototype.point = function(e7, f6) {\n  return new j$5(this, e7, f6);\n}, P$4.prototype.pointFromJSON = function(e7) {\n  return j$5.fromJSON(this, e7);\n}, j$5.prototype.precompute = function() {\n}, j$5.prototype._encode = function() {\n  return this.getX().toArray(\"be\", this.curve.p.byteLength());\n}, j$5.fromJSON = function(e7, f6) {\n  return new j$5(e7, f6[0], f6[1] || e7.one);\n}, j$5.prototype.inspect = function() {\n  return this.isInfinity() ? \"<EC Point Infinity>\" : \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n}, j$5.prototype.isInfinity = function() {\n  return 0 === this.z.cmpn(0);\n}, j$5.prototype.dbl = function() {\n  var e7 = this.x.redAdd(this.z).redSqr(), f6 = this.x.redSub(this.z).redSqr(), d4 = e7.redSub(f6), c5 = e7.redMul(f6), t5 = d4.redMul(f6.redAdd(this.curve.a24.redMul(d4)));\n  return this.curve.point(c5, t5);\n}, j$5.prototype.add = function() {\n  throw new Error(\"Not supported on Montgomery curve\");\n}, j$5.prototype.diffAdd = function(e7, f6) {\n  var d4 = this.x.redAdd(this.z), c5 = this.x.redSub(this.z), t5 = e7.x.redAdd(e7.z), a5 = e7.x.redSub(e7.z).redMul(d4), r5 = t5.redMul(c5), b4 = f6.z.redMul(a5.redAdd(r5).redSqr()), i5 = f6.x.redMul(a5.redISub(r5).redSqr());\n  return this.curve.point(b4, i5);\n}, j$5.prototype.mul = function(e7) {\n  for (var f6 = e7.clone(), d4 = this, c5 = this.curve.point(null, null), t5 = []; 0 !== f6.cmpn(0); f6.iushrn(1)) t5.push(f6.andln(1));\n  for (var a5 = t5.length - 1; a5 >= 0; a5--) 0 === t5[a5] ? (d4 = d4.diffAdd(c5, this), c5 = c5.dbl()) : (c5 = d4.diffAdd(c5, this), d4 = d4.dbl());\n  return c5;\n}, j$5.prototype.mulAdd = function() {\n  throw new Error(\"Not supported on Montgomery curve\");\n}, j$5.prototype.jumlAdd = function() {\n  throw new Error(\"Not supported on Montgomery curve\");\n}, j$5.prototype.eq = function(e7) {\n  return 0 === this.getX().cmp(e7.getX());\n}, j$5.prototype.normalize = function() {\n  return this.x = this.x.redMul(this.z.redInvm()), this.z = this.curve.one, this;\n}, j$5.prototype.getX = function() {\n  return this.normalize(), this.x.fromRed();\n};\nvar N$4;\nvar E$8 = M$6;\nvar k$b = n$c;\nvar O$5 = t$2;\nvar L$4 = v$e;\nvar B$8 = n$i.assert;\nfunction F$5(e7) {\n  this.twisted = 1 != (0 | e7.a), this.mOneA = this.twisted && -1 == (0 | e7.a), this.extended = this.mOneA, L$4.call(this, \"edwards\", e7), this.a = new k$b(e7.a, 16).umod(this.red.m), this.a = this.a.toRed(this.red), this.c = new k$b(e7.c, 16).toRed(this.red), this.c2 = this.c.redSqr(), this.d = new k$b(e7.d, 16).toRed(this.red), this.dd = this.d.redAdd(this.d), B$8(!this.twisted || 0 === this.c.fromRed().cmpn(1)), this.oneC = 1 == (0 | e7.c);\n}\nfunction C$5(e7, f6, d4, c5, t5) {\n  L$4.BasePoint.call(this, e7, \"projective\"), null === f6 && null === d4 && null === c5 ? (this.x = this.curve.zero, this.y = this.curve.one, this.z = this.curve.one, this.t = this.curve.zero, this.zOne = true) : (this.x = new k$b(f6, 16), this.y = new k$b(d4, 16), this.z = c5 ? new k$b(c5, 16) : this.curve.one, this.t = t5 && new k$b(t5, 16), this.x.red || (this.x = this.x.toRed(this.curve.red)), this.y.red || (this.y = this.y.toRed(this.curve.red)), this.z.red || (this.z = this.z.toRed(this.curve.red)), this.t && !this.t.red && (this.t = this.t.toRed(this.curve.red)), this.zOne = this.z === this.curve.one, this.curve.extended && !this.t && (this.t = this.x.redMul(this.y), this.zOne || (this.t = this.t.redMul(this.z.redInvm()))));\n}\nO$5(F$5, L$4), N$4 = F$5, F$5.prototype._mulA = function(e7) {\n  return this.mOneA ? e7.redNeg() : this.a.redMul(e7);\n}, F$5.prototype._mulC = function(e7) {\n  return this.oneC ? e7 : this.c.redMul(e7);\n}, F$5.prototype.jpoint = function(e7, f6, d4, c5) {\n  return this.point(e7, f6, d4, c5);\n}, F$5.prototype.pointFromX = function(e7, f6) {\n  (e7 = new k$b(e7, 16)).red || (e7 = e7.toRed(this.red));\n  var d4 = e7.redSqr(), c5 = this.c2.redSub(this.a.redMul(d4)), t5 = this.one.redSub(this.c2.redMul(this.d).redMul(d4)), a5 = c5.redMul(t5.redInvm()), r5 = a5.redSqrt();\n  if (0 !== r5.redSqr().redSub(a5).cmp(this.zero)) throw new Error(\"invalid point\");\n  var b4 = r5.fromRed().isOdd();\n  return (f6 && !b4 || !f6 && b4) && (r5 = r5.redNeg()), this.point(e7, r5);\n}, F$5.prototype.pointFromY = function(e7, f6) {\n  (e7 = new k$b(e7, 16)).red || (e7 = e7.toRed(this.red));\n  var d4 = e7.redSqr(), c5 = d4.redSub(this.c2), t5 = d4.redMul(this.d).redMul(this.c2).redSub(this.a), a5 = c5.redMul(t5.redInvm());\n  if (0 === a5.cmp(this.zero)) {\n    if (f6) throw new Error(\"invalid point\");\n    return this.point(this.zero, e7);\n  }\n  var r5 = a5.redSqrt();\n  if (0 !== r5.redSqr().redSub(a5).cmp(this.zero)) throw new Error(\"invalid point\");\n  return r5.fromRed().isOdd() !== f6 && (r5 = r5.redNeg()), this.point(r5, e7);\n}, F$5.prototype.validate = function(e7) {\n  if (e7.isInfinity()) return true;\n  e7.normalize();\n  var f6 = e7.x.redSqr(), d4 = e7.y.redSqr(), c5 = f6.redMul(this.a).redAdd(d4), t5 = this.c2.redMul(this.one.redAdd(this.d.redMul(f6).redMul(d4)));\n  return 0 === c5.cmp(t5);\n}, O$5(C$5, L$4.BasePoint), F$5.prototype.pointFromJSON = function(e7) {\n  return C$5.fromJSON(this, e7);\n}, F$5.prototype.point = function(e7, f6, d4, c5) {\n  return new C$5(this, e7, f6, d4, c5);\n}, C$5.fromJSON = function(e7, f6) {\n  return new C$5(e7, f6[0], f6[1], f6[2]);\n}, C$5.prototype.inspect = function() {\n  return this.isInfinity() ? \"<EC Point Infinity>\" : \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n}, C$5.prototype.isInfinity = function() {\n  return 0 === this.x.cmpn(0) && (0 === this.y.cmp(this.z) || this.zOne && 0 === this.y.cmp(this.curve.c));\n}, C$5.prototype._extDbl = function() {\n  var e7 = this.x.redSqr(), f6 = this.y.redSqr(), d4 = this.z.redSqr();\n  d4 = d4.redIAdd(d4);\n  var c5 = this.curve._mulA(e7), t5 = this.x.redAdd(this.y).redSqr().redISub(e7).redISub(f6), a5 = c5.redAdd(f6), r5 = a5.redSub(d4), b4 = c5.redSub(f6), i5 = t5.redMul(r5), n5 = a5.redMul(b4), s5 = t5.redMul(b4), o5 = r5.redMul(a5);\n  return this.curve.point(i5, n5, o5, s5);\n}, C$5.prototype._projDbl = function() {\n  var e7, f6, d4, c5 = this.x.redAdd(this.y).redSqr(), t5 = this.x.redSqr(), a5 = this.y.redSqr();\n  if (this.curve.twisted) {\n    var r5 = (n5 = this.curve._mulA(t5)).redAdd(a5);\n    if (this.zOne) e7 = c5.redSub(t5).redSub(a5).redMul(r5.redSub(this.curve.two)), f6 = r5.redMul(n5.redSub(a5)), d4 = r5.redSqr().redSub(r5).redSub(r5);\n    else {\n      var b4 = this.z.redSqr(), i5 = r5.redSub(b4).redISub(b4);\n      e7 = c5.redSub(t5).redISub(a5).redMul(i5), f6 = r5.redMul(n5.redSub(a5)), d4 = r5.redMul(i5);\n    }\n  } else {\n    var n5 = t5.redAdd(a5);\n    b4 = this.curve._mulC(this.z).redSqr(), i5 = n5.redSub(b4).redSub(b4);\n    e7 = this.curve._mulC(c5.redISub(n5)).redMul(i5), f6 = this.curve._mulC(n5).redMul(t5.redISub(a5)), d4 = n5.redMul(i5);\n  }\n  return this.curve.point(e7, f6, d4);\n}, C$5.prototype.dbl = function() {\n  return this.isInfinity() ? this : this.curve.extended ? this._extDbl() : this._projDbl();\n}, C$5.prototype._extAdd = function(e7) {\n  var f6 = this.y.redSub(this.x).redMul(e7.y.redSub(e7.x)), d4 = this.y.redAdd(this.x).redMul(e7.y.redAdd(e7.x)), c5 = this.t.redMul(this.curve.dd).redMul(e7.t), t5 = this.z.redMul(e7.z.redAdd(e7.z)), a5 = d4.redSub(f6), r5 = t5.redSub(c5), b4 = t5.redAdd(c5), i5 = d4.redAdd(f6), n5 = a5.redMul(r5), s5 = b4.redMul(i5), o5 = a5.redMul(i5), u5 = r5.redMul(b4);\n  return this.curve.point(n5, s5, u5, o5);\n}, C$5.prototype._projAdd = function(e7) {\n  var f6, d4, c5 = this.z.redMul(e7.z), t5 = c5.redSqr(), a5 = this.x.redMul(e7.x), r5 = this.y.redMul(e7.y), b4 = this.curve.d.redMul(a5).redMul(r5), i5 = t5.redSub(b4), n5 = t5.redAdd(b4), s5 = this.x.redAdd(this.y).redMul(e7.x.redAdd(e7.y)).redISub(a5).redISub(r5), o5 = c5.redMul(i5).redMul(s5);\n  return this.curve.twisted ? (f6 = c5.redMul(n5).redMul(r5.redSub(this.curve._mulA(a5))), d4 = i5.redMul(n5)) : (f6 = c5.redMul(n5).redMul(r5.redSub(a5)), d4 = this.curve._mulC(i5).redMul(n5)), this.curve.point(o5, f6, d4);\n}, C$5.prototype.add = function(e7) {\n  return this.isInfinity() ? e7 : e7.isInfinity() ? this : this.curve.extended ? this._extAdd(e7) : this._projAdd(e7);\n}, C$5.prototype.mul = function(e7) {\n  return this._hasDoubles(e7) ? this.curve._fixedNafMul(this, e7) : this.curve._wnafMul(this, e7);\n}, C$5.prototype.mulAdd = function(e7, f6, d4) {\n  return this.curve._wnafMulAdd(1, [this, f6], [e7, d4], 2, false);\n}, C$5.prototype.jmulAdd = function(e7, f6, d4) {\n  return this.curve._wnafMulAdd(1, [this, f6], [e7, d4], 2, true);\n}, C$5.prototype.normalize = function() {\n  if (this.zOne) return this;\n  var e7 = this.z.redInvm();\n  return this.x = this.x.redMul(e7), this.y = this.y.redMul(e7), this.t && (this.t = this.t.redMul(e7)), this.z = this.curve.one, this.zOne = true, this;\n}, C$5.prototype.neg = function() {\n  return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n}, C$5.prototype.getX = function() {\n  return this.normalize(), this.x.fromRed();\n}, C$5.prototype.getY = function() {\n  return this.normalize(), this.y.fromRed();\n}, C$5.prototype.eq = function(e7) {\n  return this === e7 || 0 === this.getX().cmp(e7.getX()) && 0 === this.getY().cmp(e7.getY());\n}, C$5.prototype.eqXToP = function(e7) {\n  var f6 = e7.toRed(this.curve.red).redMul(this.z);\n  if (0 === this.x.cmp(f6)) return true;\n  for (var d4 = e7.clone(), c5 = this.curve.redN.redMul(this.z); ; ) {\n    if (d4.iadd(this.curve.n), d4.cmp(this.curve.p) >= 0) return false;\n    if (f6.redIAdd(c5), 0 === this.x.cmp(f6)) return true;\n  }\n}, C$5.prototype.toP = C$5.prototype.normalize, C$5.prototype.mixedAdd = C$5.prototype.add;\nvar T$5 = N$4;\nvar J$3 = {};\nvar X$3 = J$3;\nX$3.base = v$e, X$3.short = x$6, X$3.mont = E$8, X$3.edwards = T$5;\nvar D$4;\nvar Y$2 = { doubles: { step: 4, points: [[\"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\", \"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"], [\"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\", \"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"], [\"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\", \"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"], [\"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\", \"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"], [\"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\", \"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"], [\"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\", \"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"], [\"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\", \"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"], [\"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\", \"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"], [\"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\", \"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"], [\"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\", \"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"], [\"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\", \"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"], [\"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\", \"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"], [\"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\", \"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"], [\"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\", \"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"], [\"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\", \"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"], [\"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\", \"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"], [\"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\", \"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"], [\"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\", \"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"], [\"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\", \"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"], [\"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\", \"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"], [\"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\", \"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"], [\"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\", \"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"], [\"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\", \"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"], [\"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\", \"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"], [\"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\", \"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"], [\"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\", \"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"], [\"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\", \"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"], [\"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\", \"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"], [\"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\", \"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"], [\"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\", \"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"], [\"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\", \"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"], [\"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\", \"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"], [\"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\", \"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"], [\"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\", \"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"], [\"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\", \"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"], [\"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\", \"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"], [\"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\", \"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"], [\"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\", \"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"], [\"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\", \"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"], [\"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\", \"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"], [\"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\", \"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"], [\"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\", \"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"], [\"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\", \"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"], [\"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\", \"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"], [\"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\", \"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"], [\"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\", \"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"], [\"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\", \"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"], [\"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\", \"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"], [\"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\", \"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"], [\"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\", \"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"], [\"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\", \"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"], [\"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\", \"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"], [\"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\", \"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"], [\"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\", \"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"], [\"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\", \"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"], [\"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\", \"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"], [\"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\", \"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"], [\"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\", \"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"], [\"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\", \"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"], [\"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\", \"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"], [\"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\", \"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"], [\"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\", \"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"], [\"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\", \"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"], [\"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\", \"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"], [\"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\", \"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"]] }, naf: { wnd: 7, points: [[\"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\", \"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"], [\"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\", \"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"], [\"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\", \"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"], [\"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\", \"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"], [\"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\", \"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"], [\"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\", \"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"], [\"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\", \"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"], [\"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\", \"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"], [\"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\", \"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"], [\"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\", \"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"], [\"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\", \"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"], [\"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\", \"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"], [\"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\", \"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"], [\"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\", \"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"], [\"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\", \"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"], [\"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\", \"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"], [\"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\", \"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"], [\"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\", \"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"], [\"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\", \"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"], [\"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\", \"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"], [\"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\", \"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"], [\"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\", \"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"], [\"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\", \"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"], [\"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\", \"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"], [\"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\", \"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"], [\"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\", \"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"], [\"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\", \"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"], [\"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\", \"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"], [\"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\", \"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"], [\"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\", \"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"], [\"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\", \"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"], [\"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\", \"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"], [\"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\", \"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"], [\"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\", \"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"], [\"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\", \"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"], [\"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\", \"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"], [\"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\", \"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"], [\"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\", \"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"], [\"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\", \"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"], [\"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\", \"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"], [\"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\", \"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"], [\"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\", \"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"], [\"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\", \"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"], [\"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\", \"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"], [\"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\", \"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"], [\"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\", \"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"], [\"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\", \"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"], [\"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\", \"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"], [\"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\", \"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"], [\"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\", \"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"], [\"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\", \"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"], [\"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\", \"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"], [\"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\", \"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"], [\"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\", \"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"], [\"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\", \"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"], [\"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\", \"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"], [\"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\", \"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"], [\"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\", \"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"], [\"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\", \"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"], [\"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\", \"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"], [\"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\", \"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"], [\"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\", \"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"], [\"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\", \"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"], [\"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\", \"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"], [\"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\", \"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"], [\"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\", \"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"], [\"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\", \"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"], [\"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\", \"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"], [\"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\", \"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"], [\"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\", \"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"], [\"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\", \"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"], [\"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\", \"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"], [\"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\", \"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"], [\"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\", \"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"], [\"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\", \"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"], [\"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\", \"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"], [\"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\", \"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"], [\"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\", \"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"], [\"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\", \"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"], [\"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\", \"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"], [\"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\", \"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"], [\"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\", \"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"], [\"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\", \"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"], [\"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\", \"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"], [\"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\", \"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"], [\"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\", \"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"], [\"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\", \"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"], [\"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\", \"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"], [\"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\", \"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"], [\"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\", \"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"], [\"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\", \"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"], [\"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\", \"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"], [\"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\", \"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"], [\"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\", \"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"], [\"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\", \"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"], [\"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\", \"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"], [\"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\", \"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"], [\"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\", \"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"], [\"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\", \"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"], [\"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\", \"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"], [\"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\", \"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"], [\"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\", \"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"], [\"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\", \"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"], [\"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\", \"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"], [\"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\", \"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"], [\"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\", \"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"], [\"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\", \"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"], [\"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\", \"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"], [\"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\", \"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"], [\"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\", \"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"], [\"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\", \"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"], [\"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\", \"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"], [\"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\", \"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"], [\"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\", \"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"], [\"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\", \"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"], [\"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\", \"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"], [\"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\", \"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"], [\"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\", \"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"], [\"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\", \"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"], [\"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\", \"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"], [\"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\", \"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"], [\"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\", \"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"], [\"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\", \"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"], [\"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\", \"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"], [\"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\", \"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"], [\"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\", \"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"], [\"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\", \"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"]] } };\nvar W$3 = {};\nvar K$4 = W$3;\nvar U$6 = X$2;\nvar G$3 = J$3;\nvar H$5 = n$i.assert;\nfunction Q$2(e7) {\n  \"short\" === e7.type ? this.curve = new G$3.short(e7) : \"edwards\" === e7.type ? this.curve = new G$3.edwards(e7) : this.curve = new G$3.mont(e7), this.g = this.curve.g, this.n = this.curve.n, this.hash = e7.hash, H$5(this.g.validate(), \"Invalid curve\"), H$5(this.g.mul(this.n).isInfinity(), \"Invalid curve, G*N != O\");\n}\nfunction V$3(e7, f6) {\n  Object.defineProperty(K$4, e7, { configurable: true, enumerable: true, get: function() {\n    var d4 = new Q$2(f6);\n    return Object.defineProperty(K$4, e7, { configurable: true, enumerable: true, value: d4 }), d4;\n  } });\n}\nK$4.PresetCurve = Q$2, V$3(\"p192\", { type: \"short\", prime: \"p192\", p: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\", a: \"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\", b: \"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\", n: \"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\", hash: U$6.sha256, gRed: false, g: [\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\", \"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"] }), V$3(\"p224\", { type: \"short\", prime: \"p224\", p: \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\", a: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\", b: \"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\", n: \"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\", hash: U$6.sha256, gRed: false, g: [\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\", \"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"] }), V$3(\"p256\", { type: \"short\", prime: null, p: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\", a: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\", b: \"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\", n: \"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\", hash: U$6.sha256, gRed: false, g: [\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\", \"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"] }), V$3(\"p384\", { type: \"short\", prime: null, p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\", a: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\", b: \"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\", n: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\", hash: U$6.sha384, gRed: false, g: [\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\", \"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"] }), V$3(\"p521\", { type: \"short\", prime: null, p: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\", a: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\", b: \"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\", n: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\", hash: U$6.sha512, gRed: false, g: [\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\", \"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"] }), V$3(\"curve25519\", { type: \"mont\", prime: \"p25519\", p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\", a: \"76d06\", b: \"1\", n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\", hash: U$6.sha256, gRed: false, g: [\"9\"] }), V$3(\"ed25519\", { type: \"edwards\", prime: \"p25519\", p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\", a: \"-1\", c: \"1\", d: \"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\", n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\", hash: U$6.sha256, gRed: false, g: [\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\", \"6666666666666666666666666666666666666666666666666666666666666658\"] });\ntry {\n  D$4 = Y$2;\n} catch (e7) {\n  D$4 = void 0;\n}\nV$3(\"secp256k1\", { type: \"short\", prime: \"k256\", p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\", a: \"0\", b: \"7\", n: \"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\", h: \"1\", hash: U$6.sha256, beta: \"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\", lambda: \"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\", basis: [{ a: \"3086d221a7d46bcde86c90e49284eb15\", b: \"-e4437ed6010e88286f547fa90abfe4c3\" }, { a: \"114ca50f7a8e2f3f657c1108d9d44cfd8\", b: \"3086d221a7d46bcde86c90e49284eb15\" }], gRed: false, g: [\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\", \"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\", D$4] });\nvar Z$1;\nvar $$1 = n$c;\nvar ee2 = n$i.assert;\nfunction fe2(e7, f6) {\n  this.ec = e7, this.priv = null, this.pub = null, f6.priv && this._importPrivate(f6.priv, f6.privEnc), f6.pub && this._importPublic(f6.pub, f6.pubEnc);\n}\nZ$1 = fe2, fe2.fromPublic = function(e7, f6, d4) {\n  return f6 instanceof fe2 ? f6 : new fe2(e7, { pub: f6, pubEnc: d4 });\n}, fe2.fromPrivate = function(e7, f6, d4) {\n  return f6 instanceof fe2 ? f6 : new fe2(e7, { priv: f6, privEnc: d4 });\n}, fe2.prototype.validate = function() {\n  var e7 = this.getPublic();\n  return e7.isInfinity() ? { result: false, reason: \"Invalid public key\" } : e7.validate() ? e7.mul(this.ec.curve.n).isInfinity() ? { result: true, reason: null } : { result: false, reason: \"Public key * N != O\" } : { result: false, reason: \"Public key is not a point\" };\n}, fe2.prototype.getPublic = function(e7, f6) {\n  return \"string\" == typeof e7 && (f6 = e7, e7 = null), this.pub || (this.pub = this.ec.g.mul(this.priv)), f6 ? this.pub.encode(f6, e7) : this.pub;\n}, fe2.prototype.getPrivate = function(e7) {\n  return \"hex\" === e7 ? this.priv.toString(16, 2) : this.priv;\n}, fe2.prototype._importPrivate = function(e7, f6) {\n  this.priv = new $$1(e7, f6 || 16), this.priv = this.priv.umod(this.ec.curve.n);\n}, fe2.prototype._importPublic = function(e7, f6) {\n  if (e7.x || e7.y) return \"mont\" === this.ec.curve.type ? ee2(e7.x, \"Need x coordinate\") : \"short\" !== this.ec.curve.type && \"edwards\" !== this.ec.curve.type || ee2(e7.x && e7.y, \"Need both x and y coordinate\"), this.pub = this.ec.curve.point(e7.x, e7.y), void 0;\n  this.pub = this.ec.curve.decodePoint(e7, f6);\n}, fe2.prototype.derive = function(e7) {\n  return e7.mul(this.priv).getX();\n}, fe2.prototype.sign = function(e7, f6, d4) {\n  return this.ec.sign(e7, this, f6, d4);\n}, fe2.prototype.verify = function(e7, f6) {\n  return this.ec.verify(e7, f6, this);\n}, fe2.prototype.inspect = function() {\n  return \"<Key priv: \" + (this.priv && this.priv.toString(16, 2)) + \" pub: \" + (this.pub && this.pub.inspect()) + \" >\";\n};\nvar de2;\nvar ce2 = Z$1;\nvar te2 = n$c;\nvar ae2 = a$l;\nvar re2 = W$3;\nvar be2 = f$i;\nvar ie = n$i.assert;\nvar ne2 = ce2;\nvar se2 = d$e;\nfunction oe2(e7) {\n  if (!(this instanceof oe2)) return new oe2(e7);\n  \"string\" == typeof e7 && (ie(re2.hasOwnProperty(e7), \"Unknown curve \" + e7), e7 = re2[e7]), e7 instanceof re2.PresetCurve && (e7 = { curve: e7 }), this.curve = e7.curve.curve, this.n = this.curve.n, this.nh = this.n.ushrn(1), this.g = this.curve.g, this.g = e7.curve.g, this.g.precompute(e7.curve.n.bitLength() + 1), this.hash = e7.hash || e7.curve.hash;\n}\nde2 = oe2, oe2.prototype.keyPair = function(e7) {\n  return new ne2(this, e7);\n}, oe2.prototype.keyFromPrivate = function(e7, f6) {\n  return ne2.fromPrivate(this, e7, f6);\n}, oe2.prototype.keyFromPublic = function(e7, f6) {\n  return ne2.fromPublic(this, e7, f6);\n}, oe2.prototype.genKeyPair = function(e7) {\n  e7 || (e7 = {});\n  for (var f6 = new ae2({ hash: this.hash, pers: e7.pers, persEnc: e7.persEnc || \"utf8\", entropy: e7.entropy || be2(this.hash.hmacStrength), entropyEnc: e7.entropy && e7.entropyEnc || \"utf8\", nonce: this.n.toArray() }), d4 = this.n.byteLength(), c5 = this.n.sub(new te2(2)); ; ) {\n    var t5 = new te2(f6.generate(d4));\n    if (!(t5.cmp(c5) > 0)) return t5.iaddn(1), this.keyFromPrivate(t5);\n  }\n}, oe2.prototype._truncateToN = function(e7, f6) {\n  var d4 = 8 * e7.byteLength() - this.n.bitLength();\n  return d4 > 0 && (e7 = e7.ushrn(d4)), !f6 && e7.cmp(this.n) >= 0 ? e7.sub(this.n) : e7;\n}, oe2.prototype.sign = function(e7, f6, d4, c5) {\n  \"object\" == typeof d4 && (c5 = d4, d4 = null), c5 || (c5 = {}), f6 = this.keyFromPrivate(f6, d4), e7 = this._truncateToN(new te2(e7, 16));\n  for (var t5 = this.n.byteLength(), a5 = f6.getPrivate().toArray(\"be\", t5), r5 = e7.toArray(\"be\", t5), b4 = new ae2({ hash: this.hash, entropy: a5, nonce: r5, pers: c5.pers, persEnc: c5.persEnc || \"utf8\" }), i5 = this.n.sub(new te2(1)), n5 = 0; ; n5++) {\n    var s5 = c5.k ? c5.k(n5) : new te2(b4.generate(this.n.byteLength()));\n    if (!((s5 = this._truncateToN(s5, true)).cmpn(1) <= 0 || s5.cmp(i5) >= 0)) {\n      var o5 = this.g.mul(s5);\n      if (!o5.isInfinity()) {\n        var u5 = o5.getX(), h5 = u5.umod(this.n);\n        if (0 !== h5.cmpn(0)) {\n          var p5 = s5.invm(this.n).mul(h5.mul(f6.getPrivate()).iadd(e7));\n          if (0 !== (p5 = p5.umod(this.n)).cmpn(0)) {\n            var l5 = (o5.getY().isOdd() ? 1 : 0) | (0 !== u5.cmp(h5) ? 2 : 0);\n            return c5.canonical && p5.cmp(this.nh) > 0 && (p5 = this.n.sub(p5), l5 ^= 1), new se2({ r: h5, s: p5, recoveryParam: l5 });\n          }\n        }\n      }\n    }\n  }\n}, oe2.prototype.verify = function(e7, f6, d4, c5) {\n  e7 = this._truncateToN(new te2(e7, 16)), d4 = this.keyFromPublic(d4, c5);\n  var t5 = (f6 = new se2(f6, \"hex\")).r, a5 = f6.s;\n  if (t5.cmpn(1) < 0 || t5.cmp(this.n) >= 0) return false;\n  if (a5.cmpn(1) < 0 || a5.cmp(this.n) >= 0) return false;\n  var r5, b4 = a5.invm(this.n), i5 = b4.mul(e7).umod(this.n), n5 = b4.mul(t5).umod(this.n);\n  return this.curve._maxwellTrick ? !(r5 = this.g.jmulAdd(i5, d4.getPublic(), n5)).isInfinity() && r5.eqXToP(t5) : !(r5 = this.g.mulAdd(i5, d4.getPublic(), n5)).isInfinity() && 0 === r5.getX().umod(this.n).cmp(t5);\n}, oe2.prototype.recoverPubKey = function(e7, f6, d4, c5) {\n  ie((3 & d4) === d4, \"The recovery param is more than two bits\"), f6 = new se2(f6, c5);\n  var t5 = this.n, a5 = new te2(e7), r5 = f6.r, b4 = f6.s, i5 = 1 & d4, n5 = d4 >> 1;\n  if (r5.cmp(this.curve.p.umod(this.curve.n)) >= 0 && n5) throw new Error(\"Unable to find sencond key candinate\");\n  r5 = n5 ? this.curve.pointFromX(r5.add(this.curve.n), i5) : this.curve.pointFromX(r5, i5);\n  var s5 = f6.r.invm(t5), o5 = t5.sub(a5).mul(s5).umod(t5), u5 = b4.mul(s5).umod(t5);\n  return this.g.mulAdd(o5, r5, u5);\n}, oe2.prototype.getKeyRecoveryParam = function(e7, f6, d4, c5) {\n  if (null !== (f6 = new se2(f6, c5)).recoveryParam) return f6.recoveryParam;\n  for (var t5 = 0; t5 < 4; t5++) {\n    var a5;\n    try {\n      a5 = this.recoverPubKey(e7, f6, t5);\n    } catch (e8) {\n      continue;\n    }\n    if (a5.eq(d4)) return t5;\n  }\n  throw new Error(\"Unable to find valid recovery factor\");\n};\nvar ue2 = de2;\nvar he2 = n$i;\nvar pe2 = he2.assert;\nvar le2 = he2.parseBytes;\nvar ve2 = he2.cachedProperty;\nfunction ye2(e7, f6) {\n  this.eddsa = e7, this._secret = le2(f6.secret), e7.isPoint(f6.pub) ? this._pub = f6.pub : this._pubBytes = le2(f6.pub);\n}\nye2.fromPublic = function(e7, f6) {\n  return f6 instanceof ye2 ? f6 : new ye2(e7, { pub: f6 });\n}, ye2.fromSecret = function(e7, f6) {\n  return f6 instanceof ye2 ? f6 : new ye2(e7, { secret: f6 });\n}, ye2.prototype.secret = function() {\n  return this._secret;\n}, ve2(ye2, \"pubBytes\", (function() {\n  return this.eddsa.encodePoint(this.pub());\n})), ve2(ye2, \"pub\", (function() {\n  return this._pubBytes ? this.eddsa.decodePoint(this._pubBytes) : this.eddsa.g.mul(this.priv());\n})), ve2(ye2, \"privBytes\", (function() {\n  var e7 = this.eddsa, f6 = this.hash(), d4 = e7.encodingLength - 1, c5 = f6.slice(0, e7.encodingLength);\n  return c5[0] &= 248, c5[d4] &= 127, c5[d4] |= 64, c5;\n})), ve2(ye2, \"priv\", (function() {\n  return this.eddsa.decodeInt(this.privBytes());\n})), ve2(ye2, \"hash\", (function() {\n  return this.eddsa.hash().update(this.secret()).digest();\n})), ve2(ye2, \"messagePrefix\", (function() {\n  return this.hash().slice(this.eddsa.encodingLength);\n})), ye2.prototype.sign = function(e7) {\n  return pe2(this._secret, \"KeyPair can only verify\"), this.eddsa.sign(e7, this);\n}, ye2.prototype.verify = function(e7, f6) {\n  return this.eddsa.verify(e7, f6, this);\n}, ye2.prototype.getSecret = function(e7) {\n  return pe2(this._secret, \"KeyPair is public only\"), he2.encode(this.secret(), e7);\n}, ye2.prototype.getPublic = function(e7) {\n  return he2.encode(this.pubBytes(), e7);\n};\nvar me2 = ye2;\nvar Se2 = n$c;\nvar ge2 = n$i;\nvar Ae2 = ge2.assert;\nvar Ie = ge2.cachedProperty;\nvar we2 = ge2.parseBytes;\nfunction Me(e7, f6) {\n  this.eddsa = e7, \"object\" != typeof f6 && (f6 = we2(f6)), Array.isArray(f6) && (f6 = { R: f6.slice(0, e7.encodingLength), S: f6.slice(e7.encodingLength) }), Ae2(f6.R && f6.S, \"Signature without R or S\"), e7.isPoint(f6.R) && (this._R = f6.R), f6.S instanceof Se2 && (this._S = f6.S), this._Rencoded = Array.isArray(f6.R) ? f6.R : f6.Rencoded, this._Sencoded = Array.isArray(f6.S) ? f6.S : f6.Sencoded;\n}\nIe(Me, \"S\", (function() {\n  return this.eddsa.decodeInt(this.Sencoded());\n})), Ie(Me, \"R\", (function() {\n  return this.eddsa.decodePoint(this.Rencoded());\n})), Ie(Me, \"Rencoded\", (function() {\n  return this.eddsa.encodePoint(this.R());\n})), Ie(Me, \"Sencoded\", (function() {\n  return this.eddsa.encodeInt(this.S());\n})), Me.prototype.toBytes = function() {\n  return this.Rencoded().concat(this.Sencoded());\n}, Me.prototype.toHex = function() {\n  return ge2.encode(this.toBytes(), \"hex\").toUpperCase();\n};\nvar xe;\nvar _e = Me;\nvar ze = X$2;\nvar qe = W$3;\nvar Re = n$i;\nvar Pe = Re.assert;\nvar je2 = Re.parseBytes;\nvar Ne = me2;\nvar Ee2 = _e;\nfunction ke2(e7) {\n  if (Pe(\"ed25519\" === e7, \"only tested with ed25519 so far\"), !(this instanceof ke2)) return new ke2(e7);\n  e7 = qe[e7].curve;\n  this.curve = e7, this.g = e7.g, this.g.precompute(e7.n.bitLength() + 1), this.pointClass = e7.point().constructor, this.encodingLength = Math.ceil(e7.n.bitLength() / 8), this.hash = ze.sha512;\n}\nxe = ke2, ke2.prototype.sign = function(e7, f6) {\n  e7 = je2(e7);\n  var d4 = this.keyFromSecret(f6), c5 = this.hashInt(d4.messagePrefix(), e7), t5 = this.g.mul(c5), a5 = this.encodePoint(t5), r5 = this.hashInt(a5, d4.pubBytes(), e7).mul(d4.priv()), b4 = c5.add(r5).umod(this.curve.n);\n  return this.makeSignature({ R: t5, S: b4, Rencoded: a5 });\n}, ke2.prototype.verify = function(e7, f6, d4) {\n  e7 = je2(e7), f6 = this.makeSignature(f6);\n  var c5 = this.keyFromPublic(d4), t5 = this.hashInt(f6.Rencoded(), c5.pubBytes(), e7), a5 = this.g.mul(f6.S());\n  return f6.R().add(c5.pub().mul(t5)).eq(a5);\n}, ke2.prototype.hashInt = function() {\n  for (var e7 = this.hash(), f6 = 0; f6 < arguments.length; f6++) e7.update(arguments[f6]);\n  return Re.intFromLE(e7.digest()).umod(this.curve.n);\n}, ke2.prototype.keyFromPublic = function(e7) {\n  return Ne.fromPublic(this, e7);\n}, ke2.prototype.keyFromSecret = function(e7) {\n  return Ne.fromSecret(this, e7);\n}, ke2.prototype.makeSignature = function(e7) {\n  return e7 instanceof Ee2 ? e7 : new Ee2(this, e7);\n}, ke2.prototype.encodePoint = function(e7) {\n  var f6 = e7.getY().toArray(\"le\", this.encodingLength);\n  return f6[this.encodingLength - 1] |= e7.getX().isOdd() ? 128 : 0, f6;\n}, ke2.prototype.decodePoint = function(e7) {\n  var f6 = (e7 = Re.parseBytes(e7)).length - 1, d4 = e7.slice(0, f6).concat(-129 & e7[f6]), c5 = 0 != (128 & e7[f6]), t5 = Re.intFromLE(d4);\n  return this.curve.pointFromY(t5, c5);\n}, ke2.prototype.encodeInt = function(e7) {\n  return e7.toArray(\"le\", this.encodingLength);\n}, ke2.prototype.decodeInt = function(e7) {\n  return Re.intFromLE(e7);\n}, ke2.prototype.isPoint = function(e7) {\n  return e7 instanceof this.pointClass;\n};\nvar Oe2 = xe;\nvar Le = {};\nvar Be2 = Le;\nBe2.version = [\"elliptic\", \"6.5.2\", \"EC cryptography\", \"lib/elliptic.js\", [\"lib\"], { jscs: \"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\", jshint: \"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\", lint: \"npm run jscs && npm run jshint\", unit: \"istanbul test _mocha --reporter=spec test/index.js\", test: \"npm run lint && npm run unit\", version: \"grunt dist && git add dist/\" }, { type: \"git\", url: \"git@github.com:indutny/elliptic\" }, [\"EC\", \"Elliptic\", \"curve\", \"Cryptography\"], \"Fedor Indutny <fedor@indutny.com>\", \"MIT\", { url: \"https://github.com/indutny/elliptic/issues\" }, \"https://github.com/indutny/elliptic\", { brfs: \"^1.4.3\", coveralls: \"^3.0.8\", grunt: \"^1.0.4\", \"grunt-browserify\": \"^5.0.0\", \"grunt-cli\": \"^1.2.0\", \"grunt-contrib-connect\": \"^1.0.0\", \"grunt-contrib-copy\": \"^1.0.0\", \"grunt-contrib-uglify\": \"^1.0.1\", \"grunt-mocha-istanbul\": \"^3.0.1\", \"grunt-saucelabs\": \"^9.0.1\", istanbul: \"^0.4.2\", jscs: \"^3.0.7\", jshint: \"^2.10.3\", mocha: \"^6.2.2\" }, { \"bn.js\": \"^4.4.0\", brorand: \"^1.0.1\", \"hash.js\": \"^1.0.0\", \"hmac-drbg\": \"^1.0.0\", inherits: \"^2.0.1\", \"minimalistic-assert\": \"^1.0.0\", \"minimalistic-crypto-utils\": \"^1.0.0\" }][1], Be2.utils = n$i, Be2.rand = f$i, Be2.curve = J$3, Be2.curves = W$3, Be2.ec = ue2, Be2.eddsa = Oe2;\nvar o$n = {};\nvar s$j = false;\nvar a$m = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar u$j = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar c$i = {};\nvar f$n = t$2;\nfunction l$k(e7) {\n  (this || u$j)._reporterState = { obj: null, path: [], options: e7 || {}, errors: [] };\n}\nfunction h$g(e7, t5) {\n  (this || u$j).path = e7, this.rethrow(t5);\n}\nc$i.Reporter = l$k, l$k.prototype.isError = function(e7) {\n  return e7 instanceof h$g;\n}, l$k.prototype.save = function() {\n  var e7 = (this || u$j)._reporterState;\n  return { obj: e7.obj, pathLen: e7.path.length };\n}, l$k.prototype.restore = function(e7) {\n  var t5 = (this || u$j)._reporterState;\n  t5.obj = e7.obj, t5.path = t5.path.slice(0, e7.pathLen);\n}, l$k.prototype.enterKey = function(e7) {\n  return (this || u$j)._reporterState.path.push(e7);\n}, l$k.prototype.exitKey = function(e7) {\n  var t5 = (this || u$j)._reporterState;\n  t5.path = t5.path.slice(0, e7 - 1);\n}, l$k.prototype.leaveKey = function(e7, t5, r5) {\n  var n5 = (this || u$j)._reporterState;\n  this.exitKey(e7), null !== n5.obj && (n5.obj[t5] = r5);\n}, l$k.prototype.path = function() {\n  return (this || u$j)._reporterState.path.join(\"/\");\n}, l$k.prototype.enterObject = function() {\n  var e7 = (this || u$j)._reporterState, t5 = e7.obj;\n  return e7.obj = {}, t5;\n}, l$k.prototype.leaveObject = function(e7) {\n  var t5 = (this || u$j)._reporterState, r5 = t5.obj;\n  return t5.obj = e7, r5;\n}, l$k.prototype.error = function(e7) {\n  var t5, r5 = (this || u$j)._reporterState, n5 = e7 instanceof h$g;\n  if (t5 = n5 ? e7 : new h$g(r5.path.map((function(e8) {\n    return \"[\" + JSON.stringify(e8) + \"]\";\n  })).join(\"\"), e7.message || e7, e7.stack), !r5.options.partial) throw t5;\n  return n5 || r5.errors.push(t5), t5;\n}, l$k.prototype.wrapResult = function(e7) {\n  var t5 = (this || u$j)._reporterState;\n  return t5.options.partial ? { result: this.isError(e7) ? null : e7, errors: t5.errors } : e7;\n}, f$n(h$g, Error), h$g.prototype.rethrow = function(e7) {\n  if ((this || u$j).message = e7 + \" at: \" + ((this || u$j).path || \"(shallow)\"), Error.captureStackTrace && Error.captureStackTrace(this || u$j, h$g), !(this || u$j).stack) try {\n    throw new Error((this || u$j).message);\n  } catch (e8) {\n    (this || u$j).stack = e8.stack;\n  }\n  return this || u$j;\n};\nvar p$k = {};\nvar d$i = false;\nvar g$e = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction y$f() {\n  if (d$i) return p$k;\n  d$i = true;\n  var e7 = t$2, r5 = E$9().Reporter, i5 = e$1$1.Buffer;\n  function o5(e8, t5) {\n    if (r5.call(this || g$e, t5), !i5.isBuffer(e8)) return this.error(\"Input not Buffer\"), void 0;\n    (this || g$e).base = e8, (this || g$e).offset = 0, (this || g$e).length = e8.length;\n  }\n  function s5(e8, t5) {\n    if (Array.isArray(e8)) (this || g$e).length = 0, (this || g$e).value = e8.map((function(e9) {\n      return e9 instanceof s5 || (e9 = new s5(e9, t5)), (this || g$e).length += e9.length, e9;\n    }), this || g$e);\n    else if (\"number\" == typeof e8) {\n      if (!(0 <= e8 && e8 <= 255)) return t5.error(\"non-byte EncoderBuffer value\");\n      (this || g$e).value = e8, (this || g$e).length = 1;\n    } else if (\"string\" == typeof e8) (this || g$e).value = e8, (this || g$e).length = i5.byteLength(e8);\n    else {\n      if (!i5.isBuffer(e8)) return t5.error(\"Unsupported type: \" + typeof e8);\n      (this || g$e).value = e8, (this || g$e).length = e8.length;\n    }\n  }\n  return e7(o5, r5), p$k.DecoderBuffer = o5, o5.prototype.save = function() {\n    return { offset: (this || g$e).offset, reporter: r5.prototype.save.call(this || g$e) };\n  }, o5.prototype.restore = function(e8) {\n    var t5 = new o5((this || g$e).base);\n    return t5.offset = e8.offset, t5.length = (this || g$e).offset, (this || g$e).offset = e8.offset, r5.prototype.restore.call(this || g$e, e8.reporter), t5;\n  }, o5.prototype.isEmpty = function() {\n    return (this || g$e).offset === (this || g$e).length;\n  }, o5.prototype.readUInt8 = function(e8) {\n    return (this || g$e).offset + 1 <= (this || g$e).length ? (this || g$e).base.readUInt8((this || g$e).offset++, true) : this.error(e8 || \"DecoderBuffer overrun\");\n  }, o5.prototype.skip = function(e8, t5) {\n    if (!((this || g$e).offset + e8 <= (this || g$e).length)) return this.error(t5 || \"DecoderBuffer overrun\");\n    var r6 = new o5((this || g$e).base);\n    return r6._reporterState = (this || g$e)._reporterState, r6.offset = (this || g$e).offset, r6.length = (this || g$e).offset + e8, (this || g$e).offset += e8, r6;\n  }, o5.prototype.raw = function(e8) {\n    return (this || g$e).base.slice(e8 ? e8.offset : (this || g$e).offset, (this || g$e).length);\n  }, p$k.EncoderBuffer = s5, s5.prototype.join = function(e8, t5) {\n    return e8 || (e8 = new i5((this || g$e).length)), t5 || (t5 = 0), 0 === (this || g$e).length || (Array.isArray((this || g$e).value) ? (this || g$e).value.forEach((function(r6) {\n      r6.join(e8, t5), t5 += r6.length;\n    })) : (\"number\" == typeof (this || g$e).value ? e8[t5] = (this || g$e).value : \"string\" == typeof (this || g$e).value ? e8.write((this || g$e).value, t5) : i5.isBuffer((this || g$e).value) && (this || g$e).value.copy(e8, t5), t5 += (this || g$e).length)), e8;\n  }, p$k;\n}\nvar _$e = {};\nvar v$f = false;\nvar b$c = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar m$g = {};\nvar S$a = false;\nfunction E$9() {\n  if (S$a) return m$g;\n  S$a = true;\n  var e7 = m$g;\n  return e7.Reporter = c$i.Reporter, e7.DecoderBuffer = y$f().DecoderBuffer, e7.EncoderBuffer = y$f().EncoderBuffer, e7.Node = (function() {\n    if (v$f) return _$e;\n    v$f = true;\n    var e8 = E$9().Reporter, t5 = E$9().EncoderBuffer, r5 = E$9().DecoderBuffer, n5 = o$7, o5 = [\"seq\", \"seqof\", \"set\", \"setof\", \"objid\", \"bool\", \"gentime\", \"utctime\", \"null_\", \"enum\", \"int\", \"objDesc\", \"bitstr\", \"bmpstr\", \"charstr\", \"genstr\", \"graphstr\", \"ia5str\", \"iso646str\", \"numstr\", \"octstr\", \"printstr\", \"t61str\", \"unistr\", \"utf8str\", \"videostr\"], s5 = [\"key\", \"obj\", \"use\", \"optional\", \"explicit\", \"implicit\", \"def\", \"choice\", \"any\", \"contains\"].concat(o5);\n    function a5(e9, t6) {\n      var r6 = {};\n      (this || b$c)._baseState = r6, r6.enc = e9, r6.parent = t6 || null, r6.children = null, r6.tag = null, r6.args = null, r6.reverseArgs = null, r6.choice = null, r6.optional = false, r6.any = false, r6.obj = false, r6.use = null, r6.useDecoder = null, r6.key = null, r6.default = null, r6.explicit = null, r6.implicit = null, r6.contains = null, r6.parent || (r6.children = [], this._wrap());\n    }\n    _$e = a5;\n    var u5 = [\"enc\", \"parent\", \"children\", \"tag\", \"args\", \"reverseArgs\", \"choice\", \"optional\", \"any\", \"obj\", \"use\", \"alteredUse\", \"key\", \"default\", \"explicit\", \"implicit\", \"contains\"];\n    return a5.prototype.clone = function() {\n      var e9 = (this || b$c)._baseState, t6 = {};\n      u5.forEach((function(r7) {\n        t6[r7] = e9[r7];\n      }));\n      var r6 = new (this || b$c).constructor(t6.parent);\n      return r6._baseState = t6, r6;\n    }, a5.prototype._wrap = function() {\n      var e9 = (this || b$c)._baseState;\n      s5.forEach((function(t6) {\n        (this || b$c)[t6] = function() {\n          var r6 = new (this || b$c).constructor(this || b$c);\n          return e9.children.push(r6), r6[t6].apply(r6, arguments);\n        };\n      }), this || b$c);\n    }, a5.prototype._init = function(e9) {\n      var t6 = (this || b$c)._baseState;\n      n5(null === t6.parent), e9.call(this || b$c), t6.children = t6.children.filter((function(e10) {\n        return e10._baseState.parent === (this || b$c);\n      }), this || b$c), n5.equal(t6.children.length, 1, \"Root node can have only one child\");\n    }, a5.prototype._useArgs = function(e9) {\n      var t6 = (this || b$c)._baseState, r6 = e9.filter((function(e10) {\n        return e10 instanceof (this || b$c).constructor;\n      }), this || b$c);\n      e9 = e9.filter((function(e10) {\n        return !(e10 instanceof (this || b$c).constructor);\n      }), this || b$c), 0 !== r6.length && (n5(null === t6.children), t6.children = r6, r6.forEach((function(e10) {\n        e10._baseState.parent = this || b$c;\n      }), this || b$c)), 0 !== e9.length && (n5(null === t6.args), t6.args = e9, t6.reverseArgs = e9.map((function(e10) {\n        if (\"object\" != typeof e10 || e10.constructor !== Object) return e10;\n        var t7 = {};\n        return Object.keys(e10).forEach((function(r7) {\n          r7 == (0 | r7) && (r7 |= 0);\n          var n6 = e10[r7];\n          t7[n6] = r7;\n        })), t7;\n      })));\n    }, [\"_peekTag\", \"_decodeTag\", \"_use\", \"_decodeStr\", \"_decodeObjid\", \"_decodeTime\", \"_decodeNull\", \"_decodeInt\", \"_decodeBool\", \"_decodeList\", \"_encodeComposite\", \"_encodeStr\", \"_encodeObjid\", \"_encodeTime\", \"_encodeNull\", \"_encodeInt\", \"_encodeBool\"].forEach((function(e9) {\n      a5.prototype[e9] = function() {\n        var t6 = (this || b$c)._baseState;\n        throw new Error(e9 + \" not implemented for encoding: \" + t6.enc);\n      };\n    })), o5.forEach((function(e9) {\n      a5.prototype[e9] = function() {\n        var t6 = (this || b$c)._baseState, r6 = Array.prototype.slice.call(arguments);\n        return n5(null === t6.tag), t6.tag = e9, this._useArgs(r6), this || b$c;\n      };\n    })), a5.prototype.use = function(e9) {\n      n5(e9);\n      var t6 = (this || b$c)._baseState;\n      return n5(null === t6.use), t6.use = e9, this || b$c;\n    }, a5.prototype.optional = function() {\n      return (this || b$c)._baseState.optional = true, this || b$c;\n    }, a5.prototype.def = function(e9) {\n      var t6 = (this || b$c)._baseState;\n      return n5(null === t6.default), t6.default = e9, t6.optional = true, this || b$c;\n    }, a5.prototype.explicit = function(e9) {\n      var t6 = (this || b$c)._baseState;\n      return n5(null === t6.explicit && null === t6.implicit), t6.explicit = e9, this || b$c;\n    }, a5.prototype.implicit = function(e9) {\n      var t6 = (this || b$c)._baseState;\n      return n5(null === t6.explicit && null === t6.implicit), t6.implicit = e9, this || b$c;\n    }, a5.prototype.obj = function() {\n      var e9 = (this || b$c)._baseState, t6 = Array.prototype.slice.call(arguments);\n      return e9.obj = true, 0 !== t6.length && this._useArgs(t6), this || b$c;\n    }, a5.prototype.key = function(e9) {\n      var t6 = (this || b$c)._baseState;\n      return n5(null === t6.key), t6.key = e9, this || b$c;\n    }, a5.prototype.any = function() {\n      return (this || b$c)._baseState.any = true, this || b$c;\n    }, a5.prototype.choice = function(e9) {\n      var t6 = (this || b$c)._baseState;\n      return n5(null === t6.choice), t6.choice = e9, this._useArgs(Object.keys(e9).map((function(t7) {\n        return e9[t7];\n      }))), this || b$c;\n    }, a5.prototype.contains = function(e9) {\n      var t6 = (this || b$c)._baseState;\n      return n5(null === t6.use), t6.contains = e9, this || b$c;\n    }, a5.prototype._decode = function(e9, t6) {\n      var n6 = (this || b$c)._baseState;\n      if (null === n6.parent) return e9.wrapResult(n6.children[0]._decode(e9, t6));\n      var i5, o6 = n6.default, s6 = true, a6 = null;\n      if (null !== n6.key && (a6 = e9.enterKey(n6.key)), n6.optional) {\n        var u6 = null;\n        if (null !== n6.explicit ? u6 = n6.explicit : null !== n6.implicit ? u6 = n6.implicit : null !== n6.tag && (u6 = n6.tag), null !== u6 || n6.any) {\n          if (s6 = this._peekTag(e9, u6, n6.any), e9.isError(s6)) return s6;\n        } else {\n          var c5 = e9.save();\n          try {\n            null === n6.choice ? this._decodeGeneric(n6.tag, e9, t6) : this._decodeChoice(e9, t6), s6 = true;\n          } catch (e10) {\n            s6 = false;\n          }\n          e9.restore(c5);\n        }\n      }\n      if (n6.obj && s6 && (i5 = e9.enterObject()), s6) {\n        if (null !== n6.explicit) {\n          var f6 = this._decodeTag(e9, n6.explicit);\n          if (e9.isError(f6)) return f6;\n          e9 = f6;\n        }\n        var l5 = e9.offset;\n        if (null === n6.use && null === n6.choice) {\n          if (n6.any) c5 = e9.save();\n          var h5 = this._decodeTag(e9, null !== n6.implicit ? n6.implicit : n6.tag, n6.any);\n          if (e9.isError(h5)) return h5;\n          n6.any ? o6 = e9.raw(c5) : e9 = h5;\n        }\n        if (t6 && t6.track && null !== n6.tag && t6.track(e9.path(), l5, e9.length, \"tagged\"), t6 && t6.track && null !== n6.tag && t6.track(e9.path(), e9.offset, e9.length, \"content\"), o6 = n6.any ? o6 : null === n6.choice ? this._decodeGeneric(n6.tag, e9, t6) : this._decodeChoice(e9, t6), e9.isError(o6)) return o6;\n        if (n6.any || null !== n6.choice || null === n6.children || n6.children.forEach((function(r6) {\n          r6._decode(e9, t6);\n        })), n6.contains && (\"octstr\" === n6.tag || \"bitstr\" === n6.tag)) {\n          var p5 = new r5(o6);\n          o6 = this._getUse(n6.contains, e9._reporterState.obj)._decode(p5, t6);\n        }\n      }\n      return n6.obj && s6 && (o6 = e9.leaveObject(i5)), null === n6.key || null === o6 && true !== s6 ? null !== a6 && e9.exitKey(a6) : e9.leaveKey(a6, n6.key, o6), o6;\n    }, a5.prototype._decodeGeneric = function(e9, t6, r6) {\n      var n6 = (this || b$c)._baseState;\n      return \"seq\" === e9 || \"set\" === e9 ? null : \"seqof\" === e9 || \"setof\" === e9 ? this._decodeList(t6, e9, n6.args[0], r6) : /str$/.test(e9) ? this._decodeStr(t6, e9, r6) : \"objid\" === e9 && n6.args ? this._decodeObjid(t6, n6.args[0], n6.args[1], r6) : \"objid\" === e9 ? this._decodeObjid(t6, null, null, r6) : \"gentime\" === e9 || \"utctime\" === e9 ? this._decodeTime(t6, e9, r6) : \"null_\" === e9 ? this._decodeNull(t6, r6) : \"bool\" === e9 ? this._decodeBool(t6, r6) : \"objDesc\" === e9 ? this._decodeStr(t6, e9, r6) : \"int\" === e9 || \"enum\" === e9 ? this._decodeInt(t6, n6.args && n6.args[0], r6) : null !== n6.use ? this._getUse(n6.use, t6._reporterState.obj)._decode(t6, r6) : t6.error(\"unknown tag: \" + e9);\n    }, a5.prototype._getUse = function(e9, t6) {\n      var r6 = (this || b$c)._baseState;\n      return r6.useDecoder = this._use(e9, t6), n5(null === r6.useDecoder._baseState.parent), r6.useDecoder = r6.useDecoder._baseState.children[0], r6.implicit !== r6.useDecoder._baseState.implicit && (r6.useDecoder = r6.useDecoder.clone(), r6.useDecoder._baseState.implicit = r6.implicit), r6.useDecoder;\n    }, a5.prototype._decodeChoice = function(e9, t6) {\n      var r6 = (this || b$c)._baseState, n6 = null, i5 = false;\n      return Object.keys(r6.choice).some((function(o6) {\n        var s6 = e9.save(), a6 = r6.choice[o6];\n        try {\n          var u6 = a6._decode(e9, t6);\n          if (e9.isError(u6)) return false;\n          n6 = { type: o6, value: u6 }, i5 = true;\n        } catch (t7) {\n          return e9.restore(s6), false;\n        }\n        return true;\n      }), this || b$c), i5 ? n6 : e9.error(\"Choice not matched\");\n    }, a5.prototype._createEncoderBuffer = function(e9) {\n      return new t5(e9, (this || b$c).reporter);\n    }, a5.prototype._encode = function(e9, t6, r6) {\n      var n6 = (this || b$c)._baseState;\n      if (null === n6.default || n6.default !== e9) {\n        var i5 = this._encodeValue(e9, t6, r6);\n        if (void 0 !== i5 && !this._skipDefault(i5, t6, r6)) return i5;\n      }\n    }, a5.prototype._encodeValue = function(t6, r6, n6) {\n      var i5 = (this || b$c)._baseState;\n      if (null === i5.parent) return i5.children[0]._encode(t6, r6 || new e8());\n      var o6 = null;\n      if ((this || b$c).reporter = r6, i5.optional && void 0 === t6) {\n        if (null === i5.default) return;\n        t6 = i5.default;\n      }\n      var s6 = null, a6 = false;\n      if (i5.any) o6 = this._createEncoderBuffer(t6);\n      else if (i5.choice) o6 = this._encodeChoice(t6, r6);\n      else if (i5.contains) s6 = this._getUse(i5.contains, n6)._encode(t6, r6), a6 = true;\n      else if (i5.children) s6 = i5.children.map((function(e9) {\n        if (\"null_\" === e9._baseState.tag) return e9._encode(null, r6, t6);\n        if (null === e9._baseState.key) return r6.error(\"Child should have a key\");\n        var n7 = r6.enterKey(e9._baseState.key);\n        if (\"object\" != typeof t6) return r6.error(\"Child expected, but input is not object\");\n        var i6 = e9._encode(t6[e9._baseState.key], r6, t6);\n        return r6.leaveKey(n7), i6;\n      }), this || b$c).filter((function(e9) {\n        return e9;\n      })), s6 = this._createEncoderBuffer(s6);\n      else if (\"seqof\" === i5.tag || \"setof\" === i5.tag) {\n        if (!i5.args || 1 !== i5.args.length) return r6.error(\"Too many args for : \" + i5.tag);\n        if (!Array.isArray(t6)) return r6.error(\"seqof/setof, but data is not Array\");\n        var u6 = this.clone();\n        u6._baseState.implicit = null, s6 = this._createEncoderBuffer(t6.map((function(e9) {\n          var n7 = (this || b$c)._baseState;\n          return this._getUse(n7.args[0], t6)._encode(e9, r6);\n        }), u6));\n      } else null !== i5.use ? o6 = this._getUse(i5.use, n6)._encode(t6, r6) : (s6 = this._encodePrimitive(i5.tag, t6), a6 = true);\n      if (!i5.any && null === i5.choice) {\n        var c5 = null !== i5.implicit ? i5.implicit : i5.tag, f6 = null === i5.implicit ? \"universal\" : \"context\";\n        null === c5 ? null === i5.use && r6.error(\"Tag could be omitted only for .use()\") : null === i5.use && (o6 = this._encodeComposite(c5, a6, f6, s6));\n      }\n      return null !== i5.explicit && (o6 = this._encodeComposite(i5.explicit, false, \"context\", o6)), o6;\n    }, a5.prototype._encodeChoice = function(e9, t6) {\n      var r6 = (this || b$c)._baseState, i5 = r6.choice[e9.type];\n      return i5 || n5(false, e9.type + \" not found in \" + JSON.stringify(Object.keys(r6.choice))), i5._encode(e9.value, t6);\n    }, a5.prototype._encodePrimitive = function(e9, t6) {\n      var r6 = (this || b$c)._baseState;\n      if (/str$/.test(e9)) return this._encodeStr(t6, e9);\n      if (\"objid\" === e9 && r6.args) return this._encodeObjid(t6, r6.reverseArgs[0], r6.args[1]);\n      if (\"objid\" === e9) return this._encodeObjid(t6, null, null);\n      if (\"gentime\" === e9 || \"utctime\" === e9) return this._encodeTime(t6, e9);\n      if (\"null_\" === e9) return this._encodeNull();\n      if (\"int\" === e9 || \"enum\" === e9) return this._encodeInt(t6, r6.args && r6.reverseArgs[0]);\n      if (\"bool\" === e9) return this._encodeBool(t6);\n      if (\"objDesc\" === e9) return this._encodeStr(t6, e9);\n      throw new Error(\"Unsupported tag: \" + e9);\n    }, a5.prototype._isNumstr = function(e9) {\n      return /^[0-9 ]*$/.test(e9);\n    }, a5.prototype._isPrintstr = function(e9) {\n      return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(e9);\n    }, _$e;\n  })(), m$g;\n}\nvar j$6 = {};\nvar w$f = false;\nvar B$9 = {};\nvar k$c = false;\nfunction T$6() {\n  if (k$c) return B$9;\n  k$c = true;\n  var e7 = B$9;\n  return e7._reverse = function(e8) {\n    var t5 = {};\n    return Object.keys(e8).forEach((function(r5) {\n      (0 | r5) == r5 && (r5 |= 0);\n      var n5 = e8[r5];\n      t5[n5] = r5;\n    })), t5;\n  }, e7.der = (function() {\n    if (w$f) return j$6;\n    w$f = true;\n    var e8 = T$6();\n    return j$6.tagClass = { 0: \"universal\", 1: \"application\", 2: \"context\", 3: \"private\" }, j$6.tagClassByName = e8._reverse(j$6.tagClass), j$6.tag = { 0: \"end\", 1: \"bool\", 2: \"int\", 3: \"bitstr\", 4: \"octstr\", 5: \"null_\", 6: \"objid\", 7: \"objDesc\", 8: \"external\", 9: \"real\", 10: \"enum\", 11: \"embed\", 12: \"utf8str\", 13: \"relativeOid\", 16: \"seq\", 17: \"set\", 18: \"numstr\", 19: \"printstr\", 20: \"t61str\", 21: \"videostr\", 22: \"ia5str\", 23: \"utctime\", 24: \"gentime\", 25: \"graphstr\", 26: \"iso646str\", 27: \"genstr\", 28: \"unistr\", 29: \"charstr\", 30: \"bmpstr\" }, j$6.tagByName = e8._reverse(j$6.tag), j$6;\n  })(), B$9;\n}\nvar D$5 = {};\nvar U$7 = false;\nvar N$5 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction C$6() {\n  if (U$7) return D$5;\n  U$7 = true;\n  var e7 = t$2, r5 = Y$3(), n5 = r5.base, i5 = r5.bignum, o5 = r5.constants.der;\n  function s5(e8) {\n    (this || N$5).enc = \"der\", (this || N$5).name = e8.name, (this || N$5).entity = e8, (this || N$5).tree = new a5(), (this || N$5).tree._init(e8.body);\n  }\n  function a5(e8) {\n    n5.Node.call(this || N$5, \"der\", e8);\n  }\n  function u5(e8, t5) {\n    var r6 = e8.readUInt8(t5);\n    if (e8.isError(r6)) return r6;\n    var n6 = o5.tagClass[r6 >> 6], i6 = 0 == (32 & r6);\n    if (31 == (31 & r6)) {\n      var s6 = r6;\n      for (r6 = 0; 128 == (128 & s6); ) {\n        if (s6 = e8.readUInt8(t5), e8.isError(s6)) return s6;\n        r6 <<= 7, r6 |= 127 & s6;\n      }\n    } else r6 &= 31;\n    return { cls: n6, primitive: i6, tag: r6, tagStr: o5.tag[r6] };\n  }\n  function c5(e8, t5, r6) {\n    var n6 = e8.readUInt8(r6);\n    if (e8.isError(n6)) return n6;\n    if (!t5 && 128 === n6) return null;\n    if (0 == (128 & n6)) return n6;\n    var i6 = 127 & n6;\n    if (i6 > 4) return e8.error(\"length octect is too long\");\n    n6 = 0;\n    for (var o6 = 0; o6 < i6; o6++) {\n      n6 <<= 8;\n      var s6 = e8.readUInt8(r6);\n      if (e8.isError(s6)) return s6;\n      n6 |= s6;\n    }\n    return n6;\n  }\n  return D$5 = s5, s5.prototype.decode = function(e8, t5) {\n    return e8 instanceof n5.DecoderBuffer || (e8 = new n5.DecoderBuffer(e8, t5)), (this || N$5).tree._decode(e8, t5);\n  }, e7(a5, n5.Node), a5.prototype._peekTag = function(e8, t5, r6) {\n    if (e8.isEmpty()) return false;\n    var n6 = e8.save(), i6 = u5(e8, 'Failed to peek tag: \"' + t5 + '\"');\n    return e8.isError(i6) ? i6 : (e8.restore(n6), i6.tag === t5 || i6.tagStr === t5 || i6.tagStr + \"of\" === t5 || r6);\n  }, a5.prototype._decodeTag = function(e8, t5, r6) {\n    var n6 = u5(e8, 'Failed to decode tag of \"' + t5 + '\"');\n    if (e8.isError(n6)) return n6;\n    var i6 = c5(e8, n6.primitive, 'Failed to get length of \"' + t5 + '\"');\n    if (e8.isError(i6)) return i6;\n    if (!r6 && n6.tag !== t5 && n6.tagStr !== t5 && n6.tagStr + \"of\" !== t5) return e8.error('Failed to match tag: \"' + t5 + '\"');\n    if (n6.primitive || null !== i6) return e8.skip(i6, 'Failed to match body of: \"' + t5 + '\"');\n    var o6 = e8.save(), s6 = this._skipUntilEnd(e8, 'Failed to skip indefinite length body: \"' + (this || N$5).tag + '\"');\n    return e8.isError(s6) ? s6 : (i6 = e8.offset - o6.offset, e8.restore(o6), e8.skip(i6, 'Failed to match body of: \"' + t5 + '\"'));\n  }, a5.prototype._skipUntilEnd = function(e8, t5) {\n    for (; ; ) {\n      var r6 = u5(e8, t5);\n      if (e8.isError(r6)) return r6;\n      var n6, i6 = c5(e8, r6.primitive, t5);\n      if (e8.isError(i6)) return i6;\n      if (n6 = r6.primitive || null !== i6 ? e8.skip(i6) : this._skipUntilEnd(e8, t5), e8.isError(n6)) return n6;\n      if (\"end\" === r6.tagStr) break;\n    }\n  }, a5.prototype._decodeList = function(e8, t5, r6, n6) {\n    for (var i6 = []; !e8.isEmpty(); ) {\n      var o6 = this._peekTag(e8, \"end\");\n      if (e8.isError(o6)) return o6;\n      var s6 = r6.decode(e8, \"der\", n6);\n      if (e8.isError(s6) && o6) break;\n      i6.push(s6);\n    }\n    return i6;\n  }, a5.prototype._decodeStr = function(e8, t5) {\n    if (\"bitstr\" === t5) {\n      var r6 = e8.readUInt8();\n      return e8.isError(r6) ? r6 : { unused: r6, data: e8.raw() };\n    }\n    if (\"bmpstr\" === t5) {\n      var n6 = e8.raw();\n      if (n6.length % 2 == 1) return e8.error(\"Decoding of string type: bmpstr length mismatch\");\n      for (var i6 = \"\", o6 = 0; o6 < n6.length / 2; o6++) i6 += String.fromCharCode(n6.readUInt16BE(2 * o6));\n      return i6;\n    }\n    if (\"numstr\" === t5) {\n      var s6 = e8.raw().toString(\"ascii\");\n      return this._isNumstr(s6) ? s6 : e8.error(\"Decoding of string type: numstr unsupported characters\");\n    }\n    if (\"octstr\" === t5) return e8.raw();\n    if (\"objDesc\" === t5) return e8.raw();\n    if (\"printstr\" === t5) {\n      var a6 = e8.raw().toString(\"ascii\");\n      return this._isPrintstr(a6) ? a6 : e8.error(\"Decoding of string type: printstr unsupported characters\");\n    }\n    return /str$/.test(t5) ? e8.raw().toString() : e8.error(\"Decoding of string type: \" + t5 + \" unsupported\");\n  }, a5.prototype._decodeObjid = function(e8, t5, r6) {\n    for (var n6, i6 = [], o6 = 0; !e8.isEmpty(); ) {\n      var s6 = e8.readUInt8();\n      o6 <<= 7, o6 |= 127 & s6, 0 == (128 & s6) && (i6.push(o6), o6 = 0);\n    }\n    128 & s6 && i6.push(o6);\n    var a6 = i6[0] / 40 | 0, u6 = i6[0] % 40;\n    if (n6 = r6 ? i6 : [a6, u6].concat(i6.slice(1)), t5) {\n      var c6 = t5[n6.join(\" \")];\n      void 0 === c6 && (c6 = t5[n6.join(\".\")]), void 0 !== c6 && (n6 = c6);\n    }\n    return n6;\n  }, a5.prototype._decodeTime = function(e8, t5) {\n    var r6 = e8.raw().toString();\n    if (\"gentime\" === t5) var n6 = 0 | r6.slice(0, 4), i6 = 0 | r6.slice(4, 6), o6 = 0 | r6.slice(6, 8), s6 = 0 | r6.slice(8, 10), a6 = 0 | r6.slice(10, 12), u6 = 0 | r6.slice(12, 14);\n    else {\n      if (\"utctime\" !== t5) return e8.error(\"Decoding \" + t5 + \" time is not supported yet\");\n      n6 = 0 | r6.slice(0, 2), i6 = 0 | r6.slice(2, 4), o6 = 0 | r6.slice(4, 6), s6 = 0 | r6.slice(6, 8), a6 = 0 | r6.slice(8, 10), u6 = 0 | r6.slice(10, 12);\n      n6 = n6 < 70 ? 2e3 + n6 : 1900 + n6;\n    }\n    return Date.UTC(n6, i6 - 1, o6, s6, a6, u6, 0);\n  }, a5.prototype._decodeNull = function(e8) {\n    return null;\n  }, a5.prototype._decodeBool = function(e8) {\n    var t5 = e8.readUInt8();\n    return e8.isError(t5) ? t5 : 0 !== t5;\n  }, a5.prototype._decodeInt = function(e8, t5) {\n    var r6 = e8.raw(), n6 = new i5(r6);\n    return t5 && (n6 = t5[n6.toString(10)] || n6), n6;\n  }, a5.prototype._use = function(e8, t5) {\n    return \"function\" == typeof e8 && (e8 = e8(t5)), e8._getDecoder(\"der\").tree;\n  }, D$5;\n}\nvar O$6 = {};\nvar A$9 = false;\nvar x$7 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar I$9 = {};\nvar q$5 = false;\nfunction P$5() {\n  if (q$5) return I$9;\n  q$5 = true;\n  var e7 = I$9;\n  return e7.der = C$6(), e7.pem = (function() {\n    if (A$9) return O$6;\n    A$9 = true;\n    var e8 = t$2, r5 = e$1$1.Buffer, i5 = C$6();\n    function o5(e9) {\n      i5.call(this || x$7, e9), (this || x$7).enc = \"pem\";\n    }\n    return e8(o5, i5), O$6 = o5, o5.prototype.decode = function(e9, t5) {\n      for (var n5 = e9.toString().split(/[\\r\\n]+/g), o6 = t5.label.toUpperCase(), s5 = /^-----(BEGIN|END) ([^-]+)-----$/, a5 = -1, u5 = -1, c5 = 0; c5 < n5.length; c5++) {\n        var f6 = n5[c5].match(s5);\n        if (null !== f6 && f6[2] === o6) {\n          if (-1 !== a5) {\n            if (\"END\" !== f6[1]) break;\n            u5 = c5;\n            break;\n          }\n          if (\"BEGIN\" !== f6[1]) break;\n          a5 = c5;\n        }\n      }\n      if (-1 === a5 || -1 === u5) throw new Error(\"PEM section not found for: \" + o6);\n      var l5 = n5.slice(a5 + 1, u5).join(\"\");\n      l5.replace(/[^a-z0-9\\+\\/=]+/gi, \"\");\n      var h5 = new r5(l5, \"base64\");\n      return i5.prototype.decode.call(this || x$7, h5, t5);\n    }, O$6;\n  })(), I$9;\n}\nvar F$6 = {};\nvar K$5 = false;\nvar R$4 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nfunction $$2() {\n  if (K$5) return F$6;\n  K$5 = true;\n  var e7 = t$2, r5 = e$1$1.Buffer, i5 = Y$3(), o5 = i5.base, s5 = i5.constants.der;\n  function a5(e8) {\n    (this || R$4).enc = \"der\", (this || R$4).name = e8.name, (this || R$4).entity = e8, (this || R$4).tree = new u5(), (this || R$4).tree._init(e8.body);\n  }\n  function u5(e8) {\n    o5.Node.call(this || R$4, \"der\", e8);\n  }\n  function c5(e8) {\n    return e8 < 10 ? \"0\" + e8 : e8;\n  }\n  return F$6 = a5, a5.prototype.encode = function(e8, t5) {\n    return (this || R$4).tree._encode(e8, t5).join();\n  }, e7(u5, o5.Node), u5.prototype._encodeComposite = function(e8, t5, n5, i6) {\n    var o6, a6 = (function(e9, t6, r6, n6) {\n      var i7;\n      \"seqof\" === e9 ? e9 = \"seq\" : \"setof\" === e9 && (e9 = \"set\");\n      if (s5.tagByName.hasOwnProperty(e9)) i7 = s5.tagByName[e9];\n      else {\n        if (\"number\" != typeof e9 || (0 | e9) !== e9) return n6.error(\"Unknown tag: \" + e9);\n        i7 = e9;\n      }\n      if (i7 >= 31) return n6.error(\"Multi-octet tag encoding unsupported\");\n      t6 || (i7 |= 32);\n      return i7 |= s5.tagClassByName[r6 || \"universal\"] << 6;\n    })(e8, t5, n5, (this || R$4).reporter);\n    if (i6.length < 128) return (o6 = new r5(2))[0] = a6, o6[1] = i6.length, this._createEncoderBuffer([o6, i6]);\n    for (var u6 = 1, c6 = i6.length; c6 >= 256; c6 >>= 8) u6++;\n    (o6 = new r5(2 + u6))[0] = a6, o6[1] = 128 | u6;\n    c6 = 1 + u6;\n    for (var f6 = i6.length; f6 > 0; c6--, f6 >>= 8) o6[c6] = 255 & f6;\n    return this._createEncoderBuffer([o6, i6]);\n  }, u5.prototype._encodeStr = function(e8, t5) {\n    if (\"bitstr\" === t5) return this._createEncoderBuffer([0 | e8.unused, e8.data]);\n    if (\"bmpstr\" === t5) {\n      for (var n5 = new r5(2 * e8.length), i6 = 0; i6 < e8.length; i6++) n5.writeUInt16BE(e8.charCodeAt(i6), 2 * i6);\n      return this._createEncoderBuffer(n5);\n    }\n    return \"numstr\" === t5 ? this._isNumstr(e8) ? this._createEncoderBuffer(e8) : (this || R$4).reporter.error(\"Encoding of string type: numstr supports only digits and space\") : \"printstr\" === t5 ? this._isPrintstr(e8) ? this._createEncoderBuffer(e8) : (this || R$4).reporter.error(\"Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark\") : /str$/.test(t5) || \"objDesc\" === t5 ? this._createEncoderBuffer(e8) : (this || R$4).reporter.error(\"Encoding of string type: \" + t5 + \" unsupported\");\n  }, u5.prototype._encodeObjid = function(e8, t5, n5) {\n    if (\"string\" == typeof e8) {\n      if (!t5) return (this || R$4).reporter.error(\"string objid given, but no values map found\");\n      if (!t5.hasOwnProperty(e8)) return (this || R$4).reporter.error(\"objid not found in values map\");\n      e8 = t5[e8].split(/[\\s\\.]+/g);\n      for (var i6 = 0; i6 < e8.length; i6++) e8[i6] |= 0;\n    } else if (Array.isArray(e8)) {\n      e8 = e8.slice();\n      for (i6 = 0; i6 < e8.length; i6++) e8[i6] |= 0;\n    }\n    if (!Array.isArray(e8)) return (this || R$4).reporter.error(\"objid() should be either array or string, got: \" + JSON.stringify(e8));\n    if (!n5) {\n      if (e8[1] >= 40) return (this || R$4).reporter.error(\"Second objid identifier OOB\");\n      e8.splice(0, 2, 40 * e8[0] + e8[1]);\n    }\n    var o6 = 0;\n    for (i6 = 0; i6 < e8.length; i6++) {\n      var s6 = e8[i6];\n      for (o6++; s6 >= 128; s6 >>= 7) o6++;\n    }\n    var a6 = new r5(o6), u6 = a6.length - 1;\n    for (i6 = e8.length - 1; i6 >= 0; i6--) {\n      s6 = e8[i6];\n      for (a6[u6--] = 127 & s6; (s6 >>= 7) > 0; ) a6[u6--] = 128 | 127 & s6;\n    }\n    return this._createEncoderBuffer(a6);\n  }, u5.prototype._encodeTime = function(e8, t5) {\n    var r6, n5 = new Date(e8);\n    return \"gentime\" === t5 ? r6 = [c5(n5.getFullYear()), c5(n5.getUTCMonth() + 1), c5(n5.getUTCDate()), c5(n5.getUTCHours()), c5(n5.getUTCMinutes()), c5(n5.getUTCSeconds()), \"Z\"].join(\"\") : \"utctime\" === t5 ? r6 = [c5(n5.getFullYear() % 100), c5(n5.getUTCMonth() + 1), c5(n5.getUTCDate()), c5(n5.getUTCHours()), c5(n5.getUTCMinutes()), c5(n5.getUTCSeconds()), \"Z\"].join(\"\") : (this || R$4).reporter.error(\"Encoding \" + t5 + \" time is not supported yet\"), this._encodeStr(r6, \"octstr\");\n  }, u5.prototype._encodeNull = function() {\n    return this._createEncoderBuffer(\"\");\n  }, u5.prototype._encodeInt = function(e8, t5) {\n    if (\"string\" == typeof e8) {\n      if (!t5) return (this || R$4).reporter.error(\"String int or enum given, but no values map\");\n      if (!t5.hasOwnProperty(e8)) return (this || R$4).reporter.error(\"Values map doesn't contain: \" + JSON.stringify(e8));\n      e8 = t5[e8];\n    }\n    if (\"number\" != typeof e8 && !r5.isBuffer(e8)) {\n      var n5 = e8.toArray();\n      !e8.sign && 128 & n5[0] && n5.unshift(0), e8 = new r5(n5);\n    }\n    if (r5.isBuffer(e8)) {\n      var i6 = e8.length;\n      0 === e8.length && i6++;\n      var o6 = new r5(i6);\n      return e8.copy(o6), 0 === e8.length && (o6[0] = 0), this._createEncoderBuffer(o6);\n    }\n    if (e8 < 128) return this._createEncoderBuffer(e8);\n    if (e8 < 256) return this._createEncoderBuffer([0, e8]);\n    i6 = 1;\n    for (var s6 = e8; s6 >= 256; s6 >>= 8) i6++;\n    for (s6 = (o6 = new Array(i6)).length - 1; s6 >= 0; s6--) o6[s6] = 255 & e8, e8 >>= 8;\n    return 128 & o6[0] && o6.unshift(0), this._createEncoderBuffer(new r5(o6));\n  }, u5.prototype._encodeBool = function(e8) {\n    return this._createEncoderBuffer(e8 ? 255 : 0);\n  }, u5.prototype._use = function(e8, t5) {\n    return \"function\" == typeof e8 && (e8 = e8(t5)), e8._getEncoder(\"der\").tree;\n  }, u5.prototype._skipDefault = function(e8, t5, r6) {\n    var n5, i6 = (this || R$4)._baseState;\n    if (null === i6.default) return false;\n    var o6 = e8.join();\n    if (void 0 === i6.defaultBuffer && (i6.defaultBuffer = this._encodeValue(i6.default, t5, r6).join()), o6.length !== i6.defaultBuffer.length) return false;\n    for (n5 = 0; n5 < o6.length; n5++) if (o6[n5] !== i6.defaultBuffer[n5]) return false;\n    return true;\n  }, F$6;\n}\nvar G$4 = {};\nvar L$5 = false;\nvar M$7 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar J$4 = {};\nvar V$4 = false;\nfunction Z$2() {\n  if (V$4) return J$4;\n  V$4 = true;\n  var e7 = J$4;\n  return e7.der = $$2(), e7.pem = (function() {\n    if (L$5) return G$4;\n    L$5 = true;\n    var e8 = t$2, r5 = $$2();\n    function n5(e9) {\n      r5.call(this || M$7, e9), (this || M$7).enc = \"pem\";\n    }\n    return e8(n5, r5), G$4 = n5, n5.prototype.encode = function(e9, t5) {\n      for (var n6 = r5.prototype.encode.call(this || M$7, e9).toString(\"base64\"), i5 = [\"-----BEGIN \" + t5.label + \"-----\"], o5 = 0; o5 < n6.length; o5 += 64) i5.push(n6.slice(o5, o5 + 64));\n      return i5.push(\"-----END \" + t5.label + \"-----\"), i5.join(\"\\n\");\n    }, G$4;\n  })(), J$4;\n}\nvar z$7 = {};\nvar H$6 = false;\nfunction Y$3() {\n  if (H$6) return z$7;\n  H$6 = true;\n  var n5 = z$7;\n  return n5.bignum = n$c, n5.define = (function() {\n    if (s$j) return o$n;\n    s$j = true;\n    var e7 = Y$3(), n6 = t$2;\n    function i5(e8, t5) {\n      (this || a$m).name = e8, (this || a$m).body = t5, (this || a$m).decoders = {}, (this || a$m).encoders = {};\n    }\n    return o$n.define = function(e8, t5) {\n      return new i5(e8, t5);\n    }, i5.prototype._createNamed = function(e8) {\n      var t5;\n      try {\n        t5 = exports$11$1.runInThisContext(\"(function \" + (this || a$m).name + \"(entity) {\\n  this._initNamed(entity);\\n})\");\n      } catch (e9) {\n        t5 = function(e10) {\n          this._initNamed(e10);\n        };\n      }\n      return n6(t5, e8), t5.prototype._initNamed = function(t6) {\n        e8.call(this || a$m, t6);\n      }, new t5(this || a$m);\n    }, i5.prototype._getDecoder = function(t5) {\n      return t5 = t5 || \"der\", (this || a$m).decoders.hasOwnProperty(t5) || ((this || a$m).decoders[t5] = this._createNamed(e7.decoders[t5])), (this || a$m).decoders[t5];\n    }, i5.prototype.decode = function(e8, t5, r5) {\n      return this._getDecoder(t5).decode(e8, r5);\n    }, i5.prototype._getEncoder = function(t5) {\n      return t5 = t5 || \"der\", (this || a$m).encoders.hasOwnProperty(t5) || ((this || a$m).encoders[t5] = this._createNamed(e7.encoders[t5])), (this || a$m).encoders[t5];\n    }, i5.prototype.encode = function(e8, t5, r5) {\n      return this._getEncoder(t5).encode(e8, r5);\n    }, o$n;\n  })().define, n5.base = E$9(), n5.constants = T$6(), n5.decoders = P$5(), n5.encoders = Z$2(), z$7;\n}\nvar Q$3 = Y$3();\nvar e$f = Q$3;\nvar t$a = e$f.define(\"Time\", (function() {\n  this.choice({ utcTime: this.utctime(), generalTime: this.gentime() });\n}));\nvar s$k = e$f.define(\"AttributeTypeValue\", (function() {\n  this.seq().obj(this.key(\"type\").objid(), this.key(\"value\").any());\n}));\nvar n$n = e$f.define(\"AlgorithmIdentifier\", (function() {\n  this.seq().obj(this.key(\"algorithm\").objid(), this.key(\"parameters\").optional(), this.key(\"curve\").objid().optional());\n}));\nvar o$o = e$f.define(\"SubjectPublicKeyInfo\", (function() {\n  this.seq().obj(this.key(\"algorithm\").use(n$n), this.key(\"subjectPublicKey\").bitstr());\n}));\nvar h$h = e$f.define(\"RelativeDistinguishedName\", (function() {\n  this.setof(s$k);\n}));\nvar y$g = e$f.define(\"RDNSequence\", (function() {\n  this.seqof(h$h);\n}));\nvar r$g = e$f.define(\"Name\", (function() {\n  this.choice({ rdnSequence: this.use(y$g) });\n}));\nvar u$k = e$f.define(\"Validity\", (function() {\n  this.seq().obj(this.key(\"notBefore\").use(t$a), this.key(\"notAfter\").use(t$a));\n}));\nvar a$n = e$f.define(\"Extension\", (function() {\n  this.seq().obj(this.key(\"extnID\").objid(), this.key(\"critical\").bool().def(false), this.key(\"extnValue\").octstr());\n}));\nvar c$j = e$f.define(\"TBSCertificate\", (function() {\n  this.seq().obj(this.key(\"version\").explicit(0).int().optional(), this.key(\"serialNumber\").int(), this.key(\"signature\").use(n$n), this.key(\"issuer\").use(r$g), this.key(\"validity\").use(u$k), this.key(\"subject\").use(r$g), this.key(\"subjectPublicKeyInfo\").use(o$o), this.key(\"issuerUniqueID\").implicit(1).bitstr().optional(), this.key(\"subjectUniqueID\").implicit(2).bitstr().optional(), this.key(\"extensions\").explicit(3).seqof(a$n).optional());\n}));\nvar k$d = e$f.define(\"X509Certificate\", (function() {\n  this.seq().obj(this.key(\"tbsCertificate\").use(c$j), this.key(\"signatureAlgorithm\").use(n$n), this.key(\"signatureValue\").bitstr());\n}));\nvar f$o = {};\nvar b$d = Q$3;\nf$o.certificate = k$d;\nvar l$l = b$d.define(\"RSAPrivateKey\", (function() {\n  this.seq().obj(this.key(\"version\").int(), this.key(\"modulus\").int(), this.key(\"publicExponent\").int(), this.key(\"privateExponent\").int(), this.key(\"prime1\").int(), this.key(\"prime2\").int(), this.key(\"exponent1\").int(), this.key(\"exponent2\").int(), this.key(\"coefficient\").int());\n}));\nf$o.RSAPrivateKey = l$l;\nvar d$j = b$d.define(\"RSAPublicKey\", (function() {\n  this.seq().obj(this.key(\"modulus\").int(), this.key(\"publicExponent\").int());\n}));\nf$o.RSAPublicKey = d$j;\nvar p$l = b$d.define(\"SubjectPublicKeyInfo\", (function() {\n  this.seq().obj(this.key(\"algorithm\").use(j$7), this.key(\"subjectPublicKey\").bitstr());\n}));\nf$o.PublicKey = p$l;\nvar j$7 = b$d.define(\"AlgorithmIdentifier\", (function() {\n  this.seq().obj(this.key(\"algorithm\").objid(), this.key(\"none\").null_().optional(), this.key(\"curve\").objid().optional(), this.key(\"params\").seq().obj(this.key(\"p\").int(), this.key(\"q\").int(), this.key(\"g\").int()).optional());\n}));\nvar v$g = b$d.define(\"PrivateKeyInfo\", (function() {\n  this.seq().obj(this.key(\"version\").int(), this.key(\"algorithm\").use(j$7), this.key(\"subjectPrivateKey\").octstr());\n}));\nf$o.PrivateKey = v$g;\nvar m$h = b$d.define(\"EncryptedPrivateKeyInfo\", (function() {\n  this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(), this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(), this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(), this.key(\"iters\").int())), this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(), this.key(\"iv\").octstr()))), this.key(\"subjectPrivateKey\").octstr());\n}));\nf$o.EncryptedPrivateKey = m$h;\nvar q$6 = b$d.define(\"DSAPrivateKey\", (function() {\n  this.seq().obj(this.key(\"version\").int(), this.key(\"p\").int(), this.key(\"q\").int(), this.key(\"g\").int(), this.key(\"pub_key\").int(), this.key(\"priv_key\").int());\n}));\nf$o.DSAPrivateKey = q$6, f$o.DSAparam = b$d.define(\"DSAparam\", (function() {\n  this.int();\n}));\nvar K$6 = b$d.define(\"ECPrivateKey\", (function() {\n  this.seq().obj(this.key(\"version\").int(), this.key(\"privateKey\").octstr(), this.key(\"parameters\").optional().explicit(0).use(P$6), this.key(\"publicKey\").optional().explicit(1).bitstr());\n}));\nf$o.ECPrivateKey = K$6;\nvar P$6 = b$d.define(\"ECParameters\", (function() {\n  this.choice({ namedCurve: this.objid() });\n}));\nf$o.signature = b$d.define(\"signature\", (function() {\n  this.seq().obj(this.key(\"r\").int(), this.key(\"s\").int());\n}));\nvar s$l;\nvar i$a = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r\\+\\/\\=]+)[\\n\\r]+/m;\nvar o$p = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\nvar d$k = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r\\+\\/\\=]+)-----END \\1-----$/m;\nvar n$o = a$c;\nvar p$m = t$32;\nvar u$l = u3.Buffer;\nvar y$h = f$o;\nvar m$i = { \"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\", \"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\", \"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\", \"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\", \"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\", \"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\", \"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\", \"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\", \"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\", \"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\", \"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\", \"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\" };\nvar f$p = function(e7, r5) {\n  var a5, t5 = e7.toString(), c5 = t5.match(i$a);\n  if (c5) {\n    var s5 = \"aes\" + c5[1], y5 = u$l.from(c5[2], \"hex\"), m4 = u$l.from(c5[3].replace(/[\\r\\n]/g, \"\"), \"base64\"), f6 = n$o(r5, y5.slice(0, 8), parseInt(c5[1], 10)).key, b4 = [], E4 = p$m.createDecipheriv(s5, f6, y5);\n    b4.push(E4.update(m4)), b4.push(E4.final()), a5 = u$l.concat(b4);\n  } else {\n    var h5 = t5.match(d$k);\n    a5 = new u$l(h5[2].replace(/[\\r\\n]/g, \"\"), \"base64\");\n  }\n  return { tag: t5.match(o$p)[1], data: a5 };\n};\nvar b$e = t$32;\nvar E$a = M$1;\nvar h$i = u3.Buffer;\nfunction l$m(e7) {\n  var r5;\n  \"object\" != typeof e7 || h$i.isBuffer(e7) || (r5 = e7.passphrase, e7 = e7.key), \"string\" == typeof e7 && (e7 = h$i.from(e7));\n  var a5, t5, c5 = f$p(e7, r5), s5 = c5.tag, i5 = c5.data;\n  switch (s5) {\n    case \"CERTIFICATE\":\n      t5 = y$h.certificate.decode(i5, \"der\").tbsCertificate.subjectPublicKeyInfo;\n    case \"PUBLIC KEY\":\n      switch (t5 || (t5 = y$h.PublicKey.decode(i5, \"der\")), a5 = t5.algorithm.algorithm.join(\".\")) {\n        case \"1.2.840.113549.1.1.1\":\n          return y$h.RSAPublicKey.decode(t5.subjectPublicKey.data, \"der\");\n        case \"1.2.840.10045.2.1\":\n          return t5.subjectPrivateKey = t5.subjectPublicKey, { type: \"ec\", data: t5 };\n        case \"1.2.840.10040.4.1\":\n          return t5.algorithm.params.pub_key = y$h.DSAparam.decode(t5.subjectPublicKey.data, \"der\"), { type: \"dsa\", data: t5.algorithm.params };\n        default:\n          throw new Error(\"unknown key id \" + a5);\n      }\n    case \"ENCRYPTED PRIVATE KEY\":\n      i5 = (function(e8, r6) {\n        var a6 = e8.algorithm.decrypt.kde.kdeparams.salt, t6 = parseInt(e8.algorithm.decrypt.kde.kdeparams.iters.toString(), 10), c6 = m$i[e8.algorithm.decrypt.cipher.algo.join(\".\")], s6 = e8.algorithm.decrypt.cipher.iv, i6 = e8.subjectPrivateKey, o5 = parseInt(c6.split(\"-\")[1], 10) / 8, d4 = E$a.pbkdf2Sync(r6, a6, t6, o5, \"sha1\"), n5 = b$e.createDecipheriv(c6, d4, s6), p5 = [];\n        return p5.push(n5.update(i6)), p5.push(n5.final()), h$i.concat(p5);\n      })(i5 = y$h.EncryptedPrivateKey.decode(i5, \"der\"), r5);\n    case \"PRIVATE KEY\":\n      switch (a5 = (t5 = y$h.PrivateKey.decode(i5, \"der\")).algorithm.algorithm.join(\".\")) {\n        case \"1.2.840.113549.1.1.1\":\n          return y$h.RSAPrivateKey.decode(t5.subjectPrivateKey, \"der\");\n        case \"1.2.840.10045.2.1\":\n          return { curve: t5.algorithm.curve, privateKey: y$h.ECPrivateKey.decode(t5.subjectPrivateKey, \"der\").privateKey };\n        case \"1.2.840.10040.4.1\":\n          return t5.algorithm.params.priv_key = y$h.DSAparam.decode(t5.subjectPrivateKey, \"der\"), { type: \"dsa\", params: t5.algorithm.params };\n        default:\n          throw new Error(\"unknown key id \" + a5);\n      }\n    case \"RSA PUBLIC KEY\":\n      return y$h.RSAPublicKey.decode(i5, \"der\");\n    case \"RSA PRIVATE KEY\":\n      return y$h.RSAPrivateKey.decode(i5, \"der\");\n    case \"DSA PRIVATE KEY\":\n      return { type: \"dsa\", params: y$h.DSAPrivateKey.decode(i5, \"der\") };\n    case \"EC PRIVATE KEY\":\n      return { curve: (i5 = y$h.ECPrivateKey.decode(i5, \"der\")).parameters.value, privateKey: i5.privateKey };\n    default:\n      throw new Error(\"unknown key type \" + s5);\n  }\n}\ns$l = l$m, l$m.signature = y$h.signature;\nvar v$h = s$l;\nvar p$n = { \"1.3.132.0.10\": \"secp256k1\", \"1.3.132.0.33\": \"p224\", \"1.2.840.10045.3.1.1\": \"p192\", \"1.2.840.10045.3.1.7\": \"p256\", \"1.3.132.0.34\": \"p384\", \"1.3.132.0.35\": \"p521\" };\nvar d$l = {};\nvar f$q = e$1$1.Buffer;\nvar c$k = w$3;\nvar g$f = l$d;\nvar w$g = Le.ec;\nvar l$n = n$c;\nvar m$j = v$h;\nvar v$i = p$n;\nfunction y$i(e7, t5, r5, n5) {\n  if ((e7 = new f$q(e7.toArray())).length < t5.byteLength()) {\n    var a5 = new f$q(t5.byteLength() - e7.length);\n    a5.fill(0), e7 = f$q.concat([a5, e7]);\n  }\n  var o5 = r5.length, i5 = (function(e8, t6) {\n    e8 = (e8 = b$f(e8, t6)).mod(t6);\n    var r6 = new f$q(e8.toArray());\n    if (r6.length < t6.byteLength()) {\n      var n6 = new f$q(t6.byteLength() - r6.length);\n      n6.fill(0), r6 = f$q.concat([n6, r6]);\n    }\n    return r6;\n  })(r5, t5), s5 = new f$q(o5);\n  s5.fill(1);\n  var h5 = new f$q(o5);\n  return h5.fill(0), h5 = c$k(n5, h5).update(s5).update(new f$q([0])).update(e7).update(i5).digest(), s5 = c$k(n5, h5).update(s5).digest(), { k: h5 = c$k(n5, h5).update(s5).update(new f$q([1])).update(e7).update(i5).digest(), v: s5 = c$k(n5, h5).update(s5).digest() };\n}\nfunction b$f(e7, t5) {\n  var r5 = new l$n(e7), n5 = (e7.length << 3) - t5.bitLength();\n  return n5 > 0 && r5.ishrn(n5), r5;\n}\nfunction _$f(e7, t5, r5) {\n  var n5, a5;\n  do {\n    for (n5 = new f$q(0); 8 * n5.length < e7.bitLength(); ) t5.v = c$k(r5, t5.k).update(t5.v).digest(), n5 = f$q.concat([n5, t5.v]);\n    a5 = b$f(n5, e7), t5.k = c$k(r5, t5.k).update(t5.v).update(new f$q([0])).digest(), t5.v = c$k(r5, t5.k).update(t5.v).digest();\n  } while (-1 !== a5.cmp(e7));\n  return a5;\n}\nfunction k$e(e7, t5, r5, n5) {\n  return e7.toRed(l$n.mont(r5)).redPow(t5).fromRed().mod(n5);\n}\n(d$l = function(e7, t5, r5, n5, a5) {\n  var o5 = m$j(t5);\n  if (o5.curve) {\n    if (\"ecdsa\" !== n5 && \"ecdsa/rsa\" !== n5) throw new Error(\"wrong private key type\");\n    return (function(e8, t6) {\n      var r6 = v$i[t6.curve.join(\".\")];\n      if (!r6) throw new Error(\"unknown curve \" + t6.curve.join(\".\"));\n      var n6 = new w$g(r6).keyFromPrivate(t6.privateKey).sign(e8);\n      return new f$q(n6.toDER());\n    })(e7, o5);\n  }\n  if (\"dsa\" === o5.type) {\n    if (\"dsa\" !== n5) throw new Error(\"wrong private key type\");\n    return (function(e8, t6, r6) {\n      var n6, a6 = t6.params.priv_key, o6 = t6.params.p, i6 = t6.params.q, s6 = t6.params.g, h6 = new l$n(0), u5 = b$f(e8, i6).mod(i6), p5 = false, d4 = y$i(a6, i6, e8, r6);\n      for (; false === p5; ) n6 = _$f(i6, d4, r6), h6 = k$e(s6, n6, o6, i6), 0 === (p5 = n6.invm(i6).imul(u5.add(a6.mul(h6))).mod(i6)).cmpn(0) && (p5 = false, h6 = new l$n(0));\n      return (function(e9, t7) {\n        e9 = e9.toArray(), t7 = t7.toArray(), 128 & e9[0] && (e9 = [0].concat(e9));\n        128 & t7[0] && (t7 = [0].concat(t7));\n        var r7 = [48, e9.length + t7.length + 4, 2, e9.length];\n        return r7 = r7.concat(e9, [2, t7.length], t7), new f$q(r7);\n      })(h6, p5);\n    })(e7, o5, r5);\n  }\n  if (\"rsa\" !== n5 && \"ecdsa/rsa\" !== n5) throw new Error(\"wrong private key type\");\n  e7 = f$q.concat([a5, e7]);\n  for (var i5 = o5.modulus.byteLength(), s5 = [0, 1]; e7.length + s5.length + 1 < i5; ) s5.push(255);\n  s5.push(0);\n  for (var h5 = -1; ++h5 < e7.length; ) s5.push(e7[h5]);\n  return g$f(s5, o5);\n}).getKey = y$i, d$l.makeKey = _$f;\nvar E$b = d$l;\nvar L$6 = e$1$1.Buffer;\nvar R$5 = n$c;\nvar j$8 = Le.ec;\nvar T$7 = v$h;\nvar P$7 = p$n;\nfunction A$a(e7, t5) {\n  if (e7.cmpn(0) <= 0) throw new Error(\"invalid sig\");\n  if (e7.cmp(t5) >= t5) throw new Error(\"invalid sig\");\n}\nvar K$7 = function(e7, t5, r5, n5, a5) {\n  var o5 = T$7(r5);\n  if (\"ec\" === o5.type) {\n    if (\"ecdsa\" !== n5 && \"ecdsa/rsa\" !== n5) throw new Error(\"wrong public key type\");\n    return (function(e8, t6, r6) {\n      var n6 = P$7[r6.data.algorithm.curve.join(\".\")];\n      if (!n6) throw new Error(\"unknown curve \" + r6.data.algorithm.curve.join(\".\"));\n      var a6 = new j$8(n6), o6 = r6.data.subjectPrivateKey.data;\n      return a6.verify(t6, e8, o6);\n    })(e7, t5, o5);\n  }\n  if (\"dsa\" === o5.type) {\n    if (\"dsa\" !== n5) throw new Error(\"wrong public key type\");\n    return (function(e8, t6, r6) {\n      var n6 = r6.data.p, a6 = r6.data.q, o6 = r6.data.g, i6 = r6.data.pub_key, s6 = T$7.signature.decode(e8, \"der\"), h6 = s6.s, u6 = s6.r;\n      A$a(h6, a6), A$a(u6, a6);\n      var p6 = R$5.mont(n6), d5 = h6.invm(a6);\n      return 0 === o6.toRed(p6).redPow(new R$5(t6).mul(d5).mod(a6)).fromRed().mul(i6.toRed(p6).redPow(u6.mul(d5).mod(a6)).fromRed()).mod(n6).mod(a6).cmp(u6);\n    })(e7, t5, o5);\n  }\n  if (\"rsa\" !== n5 && \"ecdsa/rsa\" !== n5) throw new Error(\"wrong public key type\");\n  t5 = L$6.concat([a5, t5]);\n  for (var i5 = o5.modulus.byteLength(), s5 = [1], h5 = 0; t5.length + s5.length + 2 < i5; ) s5.push(255), h5++;\n  s5.push(0);\n  for (var u5 = -1; ++u5 < t5.length; ) s5.push(t5[u5]);\n  s5 = new L$6(s5);\n  var p5 = R$5.mont(o5.modulus);\n  e7 = (e7 = new R$5(e7).toRed(p5)).redPow(new R$5(o5.publicExponent)), e7 = new L$6(e7.fromRed().toArray());\n  var d4 = h5 < 8 ? 1 : 0;\n  for (i5 = Math.min(e7.length, s5.length), e7.length !== s5.length && (d4 = 1), u5 = -1; ++u5 < i5; ) d4 |= e7[u5] ^ s5[u5];\n  return 0 === d4;\n};\nvar W$4 = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar x$8 = e$1$1.Buffer;\nvar B$a = h$4;\nvar S$b = b$i;\nvar q$7 = t$2;\nvar U$8 = E$b;\nvar V$5 = K$7;\nvar C$7 = s$4;\nfunction D$6(e7) {\n  S$b.Writable.call(this || W$4);\n  var t5 = C$7[e7];\n  if (!t5) throw new Error(\"Unknown message digest\");\n  (this || W$4)._hashType = t5.hash, (this || W$4)._hash = B$a(t5.hash), (this || W$4)._tag = t5.id, (this || W$4)._signType = t5.sign;\n}\nfunction F$7(e7) {\n  S$b.Writable.call(this || W$4);\n  var t5 = C$7[e7];\n  if (!t5) throw new Error(\"Unknown message digest\");\n  (this || W$4)._hash = B$a(t5.hash), (this || W$4)._tag = t5.id, (this || W$4)._signType = t5.sign;\n}\nfunction M$8(e7) {\n  return new D$6(e7);\n}\nfunction O$7(e7) {\n  return new F$7(e7);\n}\nObject.keys(C$7).forEach((function(e7) {\n  C$7[e7].id = new x$8(C$7[e7].id, \"hex\"), C$7[e7.toLowerCase()] = C$7[e7];\n})), q$7(D$6, S$b.Writable), D$6.prototype._write = function(e7, t5, r5) {\n  (this || W$4)._hash.update(e7), r5();\n}, D$6.prototype.update = function(e7, t5) {\n  return \"string\" == typeof e7 && (e7 = new x$8(e7, t5)), (this || W$4)._hash.update(e7), this || W$4;\n}, D$6.prototype.sign = function(e7, t5) {\n  this.end();\n  var r5 = (this || W$4)._hash.digest(), n5 = U$8(r5, e7, (this || W$4)._hashType, (this || W$4)._signType, (this || W$4)._tag);\n  return t5 ? n5.toString(t5) : n5;\n}, q$7(F$7, S$b.Writable), F$7.prototype._write = function(e7, t5, r5) {\n  (this || W$4)._hash.update(e7), r5();\n}, F$7.prototype.update = function(e7, t5) {\n  return \"string\" == typeof e7 && (e7 = new x$8(e7, t5)), (this || W$4)._hash.update(e7), this || W$4;\n}, F$7.prototype.verify = function(e7, t5, r5) {\n  \"string\" == typeof t5 && (t5 = new x$8(t5, r5)), this.end();\n  var n5 = (this || W$4)._hash.digest();\n  return V$5(t5, n5, e7, (this || W$4)._signType, (this || W$4)._tag);\n};\nvar z$8 = { Sign: M$8, Verify: O$7, createSign: M$8, createVerify: O$7 };\nvar i$b;\nvar n$p = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar p$o = e$1$1.Buffer;\nvar s$m = Le;\nvar u$m = n$c;\ni$b = function(e7) {\n  return new c$l(e7);\n};\nvar o$q = { secp256k1: { name: \"secp256k1\", byteLength: 32 }, secp224r1: { name: \"p224\", byteLength: 28 }, prime256v1: { name: \"p256\", byteLength: 32 }, prime192v1: { name: \"p192\", byteLength: 24 }, ed25519: { name: \"ed25519\", byteLength: 32 }, secp384r1: { name: \"p384\", byteLength: 48 }, secp521r1: { name: \"p521\", byteLength: 66 } };\nfunction c$l(e7) {\n  (this || n$p).curveType = o$q[e7], (this || n$p).curveType || ((this || n$p).curveType = { name: e7 }), (this || n$p).curve = new s$m.ec((this || n$p).curveType.name), (this || n$p).keys = void 0;\n}\nfunction y$j(e7, t5, r5) {\n  Array.isArray(e7) || (e7 = e7.toArray());\n  var i5 = new p$o(e7);\n  if (r5 && i5.length < r5) {\n    var n5 = new p$o(r5 - i5.length);\n    n5.fill(0), i5 = p$o.concat([n5, i5]);\n  }\n  return t5 ? i5.toString(t5) : i5;\n}\no$q.p224 = o$q.secp224r1, o$q.p256 = o$q.secp256r1 = o$q.prime256v1, o$q.p192 = o$q.secp192r1 = o$q.prime192v1, o$q.p384 = o$q.secp384r1, o$q.p521 = o$q.secp521r1, c$l.prototype.generateKeys = function(e7, t5) {\n  return (this || n$p).keys = (this || n$p).curve.genKeyPair(), this.getPublicKey(e7, t5);\n}, c$l.prototype.computeSecret = function(e7, t5, r5) {\n  return t5 = t5 || \"utf8\", p$o.isBuffer(e7) || (e7 = new p$o(e7, t5)), y$j((this || n$p).curve.keyFromPublic(e7).getPublic().mul((this || n$p).keys.getPrivate()).getX(), r5, (this || n$p).curveType.byteLength);\n}, c$l.prototype.getPublicKey = function(e7, t5) {\n  var r5 = (this || n$p).keys.getPublic(\"compressed\" === t5, true);\n  return \"hybrid\" === t5 && (r5[r5.length - 1] % 2 ? r5[0] = 7 : r5[0] = 6), y$j(r5, e7);\n}, c$l.prototype.getPrivateKey = function(e7) {\n  return y$j((this || n$p).keys.getPrivate(), e7);\n}, c$l.prototype.setPublicKey = function(e7, t5) {\n  return t5 = t5 || \"utf8\", p$o.isBuffer(e7) || (e7 = new p$o(e7, t5)), (this || n$p).keys._importPublic(e7), this || n$p;\n}, c$l.prototype.setPrivateKey = function(e7, t5) {\n  t5 = t5 || \"utf8\", p$o.isBuffer(e7) || (e7 = new p$o(e7, t5));\n  var r5 = new u$m(e7);\n  return r5 = r5.toString(16), (this || n$p).keys = (this || n$p).curve.genKeyPair(), (this || n$p).keys._importPrivate(r5), this || n$p;\n};\nvar f$r = i$b;\nvar i$c = h$4;\nvar l$o = u3.Buffer;\nfunction f$s(r5) {\n  var n5 = l$o.allocUnsafe(4);\n  return n5.writeUInt32BE(r5, 0), n5;\n}\nvar u$n = function(r5, n5) {\n  for (var e7, t5 = l$o.alloc(0), o5 = 0; t5.length < n5; ) e7 = f$s(o5++), t5 = l$o.concat([t5, i$c(\"sha1\").update(r5).update(e7).digest()]);\n  return t5.slice(0, n5);\n};\nvar c$m = function(r5, n5) {\n  for (var e7 = r5.length, t5 = -1; ++t5 < e7; ) r5[t5] ^= n5[t5];\n  return r5;\n};\nvar p$p = n$c;\nvar d$m = u3.Buffer;\nvar h$j = function(r5, n5) {\n  return d$m.from(r5.toRed(p$p.mont(n5.modulus)).redPow(new p$p(n5.publicExponent)).fromRed().toArray());\n};\nvar s$n = v$h;\nvar g$g = a4;\nvar m$k = h$4;\nvar w$h = u$n;\nvar v$j = c$m;\nvar y$k = n$c;\nvar E$c = h$j;\nvar b$g = l$d;\nvar B$b = u3.Buffer;\nvar x$9 = function(r5, n5, e7) {\n  var t5;\n  t5 = r5.padding ? r5.padding : e7 ? 1 : 4;\n  var o5, a5 = s$n(r5);\n  if (4 === t5) o5 = (function(r6, n6) {\n    var e8 = r6.modulus.byteLength(), t6 = n6.length, o6 = m$k(\"sha1\").update(B$b.alloc(0)).digest(), a6 = o6.length, i5 = 2 * a6;\n    if (t6 > e8 - i5 - 2) throw new Error(\"message too long\");\n    var l5 = B$b.alloc(e8 - t6 - i5 - 2), f6 = e8 - a6 - 1, u5 = g$g(a6), c5 = v$j(B$b.concat([o6, l5, B$b.alloc(1, 1), n6], f6), w$h(u5, f6)), p5 = v$j(u5, w$h(c5, a6));\n    return new y$k(B$b.concat([B$b.alloc(1), p5, c5], e8));\n  })(a5, n5);\n  else if (1 === t5) o5 = (function(r6, n6, e8) {\n    var t6, o6 = n6.length, a6 = r6.modulus.byteLength();\n    if (o6 > a6 - 11) throw new Error(\"message too long\");\n    t6 = e8 ? B$b.alloc(a6 - o6 - 3, 255) : (function(r7) {\n      var n7, e9 = B$b.allocUnsafe(r7), t7 = 0, o7 = g$g(2 * r7), a7 = 0;\n      for (; t7 < r7; ) a7 === o7.length && (o7 = g$g(2 * r7), a7 = 0), (n7 = o7[a7++]) && (e9[t7++] = n7);\n      return e9;\n    })(a6 - o6 - 3);\n    return new y$k(B$b.concat([B$b.from([0, e8 ? 1 : 2]), t6, B$b.alloc(1), n6], a6));\n  })(a5, n5, e7);\n  else {\n    if (3 !== t5) throw new Error(\"unknown padding\");\n    if ((o5 = new y$k(n5)).cmp(a5.modulus) >= 0) throw new Error(\"data too long for modulus\");\n  }\n  return e7 ? b$g(o5, a5) : E$c(o5, a5);\n};\nvar L$7 = v$h;\nvar k$f = u$n;\nvar D$7 = c$m;\nvar U$9 = n$c;\nvar R$6 = l$d;\nvar S$c = h$4;\nvar j$9 = h$j;\nvar A$b = u3.Buffer;\nvar I$a = function(r5, n5, e7) {\n  var t5;\n  t5 = r5.padding ? r5.padding : e7 ? 1 : 4;\n  var o5, a5 = L$7(r5), i5 = a5.modulus.byteLength();\n  if (n5.length > i5 || new U$9(n5).cmp(a5.modulus) >= 0) throw new Error(\"decryption error\");\n  o5 = e7 ? j$9(new U$9(n5), a5) : R$6(n5, a5);\n  var l5 = A$b.alloc(i5 - o5.length);\n  if (o5 = A$b.concat([l5, o5], i5), 4 === t5) return (function(r6, n6) {\n    var e8 = r6.modulus.byteLength(), t6 = S$c(\"sha1\").update(A$b.alloc(0)).digest(), o6 = t6.length;\n    if (0 !== n6[0]) throw new Error(\"decryption error\");\n    var a6 = n6.slice(1, o6 + 1), i6 = n6.slice(o6 + 1), l6 = D$7(a6, k$f(i6, o6)), f6 = D$7(i6, k$f(l6, e8 - o6 - 1));\n    if ((function(r7, n7) {\n      r7 = A$b.from(r7), n7 = A$b.from(n7);\n      var e9 = 0, t7 = r7.length;\n      r7.length !== n7.length && (e9++, t7 = Math.min(r7.length, n7.length));\n      var o7 = -1;\n      for (; ++o7 < t7; ) e9 += r7[o7] ^ n7[o7];\n      return e9;\n    })(t6, f6.slice(0, o6))) throw new Error(\"decryption error\");\n    var u5 = o6;\n    for (; 0 === f6[u5]; ) u5++;\n    if (1 !== f6[u5++]) throw new Error(\"decryption error\");\n    return f6.slice(u5);\n  })(a5, o5);\n  if (1 === t5) return (function(r6, n6, e8) {\n    var t6 = n6.slice(0, 2), o6 = 2, a6 = 0;\n    for (; 0 !== n6[o6++]; ) if (o6 >= n6.length) {\n      a6++;\n      break;\n    }\n    var i6 = n6.slice(2, o6 - 1);\n    (\"0002\" !== t6.toString(\"hex\") && !e8 || \"0001\" !== t6.toString(\"hex\") && e8) && a6++;\n    i6.length < 8 && a6++;\n    if (a6) throw new Error(\"decryption error\");\n    return n6.slice(o6);\n  })(0, o5, e7);\n  if (3 === t5) return o5;\n  throw new Error(\"unknown padding\");\n};\nvar M$9 = {};\nM$9.publicEncrypt = x$9, M$9.privateDecrypt = I$a, M$9.privateEncrypt = function(r5, n5) {\n  return M$9.publicEncrypt(r5, n5, true);\n}, M$9.publicDecrypt = function(r5, n5) {\n  return M$9.privateDecrypt(r5, n5, true);\n};\nvar o$r = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : global;\nvar t$b = {};\nvar f$t = T$1;\nfunction i$d() {\n  throw new Error(\"secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11\");\n}\nvar u$o = u3;\nvar a$o = a4;\nvar s$o = u$o.Buffer;\nvar l$p = u$o.kMaxLength;\nvar m$l = o$r.crypto || o$r.msCrypto;\nvar p$q = Math.pow(2, 32) - 1;\nfunction y$l(r5, e7) {\n  if (\"number\" != typeof r5 || r5 != r5) throw new TypeError(\"offset must be a number\");\n  if (r5 > p$q || r5 < 0) throw new TypeError(\"offset must be a uint32\");\n  if (r5 > l$p || r5 > e7) throw new RangeError(\"offset out of range\");\n}\nfunction b$h(r5, e7, n5) {\n  if (\"number\" != typeof r5 || r5 != r5) throw new TypeError(\"size must be a number\");\n  if (r5 > p$q || r5 < 0) throw new TypeError(\"size must be a uint32\");\n  if (r5 + e7 > n5 || r5 > l$p) throw new RangeError(\"buffer too small\");\n}\nfunction w$i(r5, e7, n5, o5) {\n  if (f$t.browser) {\n    var t5 = r5.buffer, i5 = new Uint8Array(t5, e7, n5);\n    return m$l.getRandomValues(i5), o5 ? (f$t.nextTick((function() {\n      o5(null, r5);\n    })), void 0) : r5;\n  }\n  return o5 ? (a$o(n5, (function(n6, t6) {\n    if (n6) return o5(n6);\n    t6.copy(r5, e7), o5(null, r5);\n  })), void 0) : (a$o(n5).copy(r5, e7), r5);\n}\nm$l && m$l.getRandomValues || !f$t.browser ? (t$b.randomFill = function(r5, e7, n5, t5) {\n  if (!(s$o.isBuffer(r5) || r5 instanceof o$r.Uint8Array)) throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n  if (\"function\" == typeof e7) t5 = e7, e7 = 0, n5 = r5.length;\n  else if (\"function\" == typeof n5) t5 = n5, n5 = r5.length - e7;\n  else if (\"function\" != typeof t5) throw new TypeError('\"cb\" argument must be a function');\n  return y$l(e7, r5.length), b$h(n5, e7, r5.length), w$i(r5, e7, n5, t5);\n}, t$b.randomFillSync = function(r5, e7, n5) {\n  void 0 === e7 && (e7 = 0);\n  if (!(s$o.isBuffer(r5) || r5 instanceof o$r.Uint8Array)) throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n  y$l(e7, r5.length), void 0 === n5 && (n5 = r5.length - e7);\n  return b$h(n5, e7, r5.length), w$i(r5, e7, n5);\n}) : (t$b.randomFill = i$d, t$b.randomFillSync = i$d);\nvar l$q = {};\nl$q.randomBytes = l$q.rng = l$q.pseudoRandomBytes = l$q.prng = a4, l$q.createHash = l$q.Hash = h$4, l$q.createHmac = l$q.Hmac = w$3;\nvar D$8 = s$4;\nvar s$p = Object.keys(D$8);\nvar _$g = [\"sha1\", \"sha224\", \"sha256\", \"sha384\", \"sha512\", \"md5\", \"rmd160\"].concat(s$p);\nl$q.getHashes = function() {\n  return _$g;\n};\nvar h$k = M$1;\nl$q.pbkdf2 = h$k.pbkdf2, l$q.pbkdf2Sync = h$k.pbkdf2Sync;\nvar y$m = p$d;\nl$q.Cipher = y$m.Cipher, l$q.createCipher = y$m.createCipher, l$q.Cipheriv = y$m.Cipheriv, l$q.createCipheriv = y$m.createCipheriv, l$q.Decipher = y$m.Decipher, l$q.createDecipher = y$m.createDecipher, l$q.Decipheriv = y$m.Decipheriv, l$q.createDecipheriv = y$m.createDecipheriv, l$q.getCiphers = y$m.getCiphers, l$q.listCiphers = y$m.listCiphers;\nvar E$d = O$3;\nl$q.DiffieHellmanGroup = E$d.DiffieHellmanGroup, l$q.createDiffieHellmanGroup = E$d.createDiffieHellmanGroup, l$q.getDiffieHellman = E$d.getDiffieHellman, l$q.createDiffieHellman = E$d.createDiffieHellman, l$q.DiffieHellman = E$d.DiffieHellman;\nvar S$d = z$8;\nl$q.createSign = S$d.createSign, l$q.Sign = S$d.Sign, l$q.createVerify = S$d.createVerify, l$q.Verify = S$d.Verify, l$q.createECDH = f$r;\nvar C$8 = M$9;\nl$q.publicEncrypt = C$8.publicEncrypt, l$q.privateEncrypt = C$8.privateEncrypt, l$q.publicDecrypt = C$8.publicDecrypt, l$q.privateDecrypt = C$8.privateDecrypt;\nvar N$6 = t$b;\nl$q.randomFill = N$6.randomFill, l$q.randomFillSync = N$6.randomFillSync, l$q.createCredentials = function() {\n  throw new Error([\"sorry, createCredentials is not implemented yet\", \"we accept pull requests\", \"https://github.com/crypto-browserify/crypto-browserify\"].join(\"\\n\"));\n}, l$q.constants = { DH_CHECK_P_NOT_SAFE_PRIME: 2, DH_CHECK_P_NOT_PRIME: 1, DH_UNABLE_TO_CHECK_GENERATOR: 4, DH_NOT_SUITABLE_GENERATOR: 8, NPN_ENABLED: 1, ALPN_ENABLED: 1, RSA_PKCS1_PADDING: 1, RSA_SSLV23_PADDING: 2, RSA_NO_PADDING: 3, RSA_PKCS1_OAEP_PADDING: 4, RSA_X931_PADDING: 5, RSA_PKCS1_PSS_PADDING: 6, POINT_CONVERSION_COMPRESSED: 2, POINT_CONVERSION_UNCOMPRESSED: 4, POINT_CONVERSION_HYBRID: 6 };\nvar exports$10$1 = {};\nvar _dewExec$10$1 = false;\nvar _global$a$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$10$1() {\n  if (_dewExec$10$1) return exports$10$1;\n  _dewExec$10$1 = true;\n  var r5;\n  exports$10$1 = function rand(len) {\n    if (!r5) r5 = new Rand(null);\n    return r5.generate(len);\n  };\n  function Rand(rand) {\n    (this || _global$a$1).rand = rand;\n  }\n  exports$10$1.Rand = Rand;\n  Rand.prototype.generate = function generate(len) {\n    return this._rand(len);\n  };\n  Rand.prototype._rand = function _rand(n5) {\n    if ((this || _global$a$1).rand.getBytes) return (this || _global$a$1).rand.getBytes(n5);\n    var res = new Uint8Array(n5);\n    for (var i5 = 0; i5 < res.length; i5++) res[i5] = (this || _global$a$1).rand.getByte();\n    return res;\n  };\n  if (typeof self === \"object\") {\n    if (self.crypto && self.crypto.getRandomValues) {\n      Rand.prototype._rand = function _rand(n5) {\n        var arr = new Uint8Array(n5);\n        self.crypto.getRandomValues(arr);\n        return arr;\n      };\n    } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n      Rand.prototype._rand = function _rand(n5) {\n        var arr = new Uint8Array(n5);\n        self.msCrypto.getRandomValues(arr);\n        return arr;\n      };\n    } else if (typeof window === \"object\") {\n      Rand.prototype._rand = function() {\n        throw new Error(\"Not implemented yet\");\n      };\n    }\n  } else {\n    try {\n      var crypto2 = l$q;\n      if (typeof crypto2.randomBytes !== \"function\") throw new Error(\"Not supported\");\n      Rand.prototype._rand = function _rand(n5) {\n        return crypto2.randomBytes(n5);\n      };\n    } catch (e7) {\n    }\n  }\n  return exports$10$1;\n}\nvar exports$$$1 = {};\nvar _dewExec$$$1 = false;\nvar _global$9$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$$$1() {\n  if (_dewExec$$$1) return exports$$$1;\n  _dewExec$$$1 = true;\n  var bn = dew$11$1();\n  var brorand = dew$10$1();\n  function MillerRabin(rand) {\n    (this || _global$9$1).rand = rand || new brorand.Rand();\n  }\n  exports$$$1 = MillerRabin;\n  MillerRabin.create = function create(rand) {\n    return new MillerRabin(rand);\n  };\n  MillerRabin.prototype._randbelow = function _randbelow(n5) {\n    var len = n5.bitLength();\n    var min_bytes = Math.ceil(len / 8);\n    do\n      var a5 = new bn((this || _global$9$1).rand.generate(min_bytes));\n    while (a5.cmp(n5) >= 0);\n    return a5;\n  };\n  MillerRabin.prototype._randrange = function _randrange(start, stop) {\n    var size = stop.sub(start);\n    return start.add(this._randbelow(size));\n  };\n  MillerRabin.prototype.test = function test(n5, k4, cb) {\n    var len = n5.bitLength();\n    var red = bn.mont(n5);\n    var rone = new bn(1).toRed(red);\n    if (!k4) k4 = Math.max(1, len / 48 | 0);\n    var n1 = n5.subn(1);\n    for (var s5 = 0; !n1.testn(s5); s5++) {\n    }\n    var d4 = n5.shrn(s5);\n    var rn1 = n1.toRed(red);\n    var prime = true;\n    for (; k4 > 0; k4--) {\n      var a5 = this._randrange(new bn(2), n1);\n      if (cb) cb(a5);\n      var x4 = a5.toRed(red).redPow(d4);\n      if (x4.cmp(rone) === 0 || x4.cmp(rn1) === 0) continue;\n      for (var i5 = 1; i5 < s5; i5++) {\n        x4 = x4.redSqr();\n        if (x4.cmp(rone) === 0) return false;\n        if (x4.cmp(rn1) === 0) break;\n      }\n      if (i5 === s5) return false;\n    }\n    return prime;\n  };\n  MillerRabin.prototype.getDivisor = function getDivisor(n5, k4) {\n    var len = n5.bitLength();\n    var red = bn.mont(n5);\n    var rone = new bn(1).toRed(red);\n    if (!k4) k4 = Math.max(1, len / 48 | 0);\n    var n1 = n5.subn(1);\n    for (var s5 = 0; !n1.testn(s5); s5++) {\n    }\n    var d4 = n5.shrn(s5);\n    var rn1 = n1.toRed(red);\n    for (; k4 > 0; k4--) {\n      var a5 = this._randrange(new bn(2), n1);\n      var g4 = n5.gcd(a5);\n      if (g4.cmpn(1) !== 0) return g4;\n      var x4 = a5.toRed(red).redPow(d4);\n      if (x4.cmp(rone) === 0 || x4.cmp(rn1) === 0) continue;\n      for (var i5 = 1; i5 < s5; i5++) {\n        x4 = x4.redSqr();\n        if (x4.cmp(rone) === 0) return x4.fromRed().subn(1).gcd(n5);\n        if (x4.cmp(rn1) === 0) break;\n      }\n      if (i5 === s5) {\n        x4 = x4.redSqr();\n        return x4.fromRed().subn(1).gcd(n5);\n      }\n    }\n    return false;\n  };\n  return exports$$$1;\n}\nvar exports$_$1 = {};\nvar _dewExec$_$1 = false;\nfunction dew$_$1() {\n  if (_dewExec$_$1) return exports$_$1;\n  _dewExec$_$1 = true;\n  var randomBytes2 = dew$1S();\n  exports$_$1 = findPrime;\n  findPrime.simpleSieve = simpleSieve;\n  findPrime.fermatTest = fermatTest;\n  var BN = dew$12$1();\n  var TWENTYFOUR = new BN(24);\n  var MillerRabin = dew$$$1();\n  var millerRabin = new MillerRabin();\n  var ONE = new BN(1);\n  var TWO = new BN(2);\n  var FIVE = new BN(5);\n  new BN(16);\n  new BN(8);\n  var TEN = new BN(10);\n  var THREE = new BN(3);\n  new BN(7);\n  var ELEVEN = new BN(11);\n  var FOUR = new BN(4);\n  new BN(12);\n  var primes = null;\n  function _getPrimes() {\n    if (primes !== null) return primes;\n    var limit = 1048576;\n    var res = [];\n    res[0] = 2;\n    for (var i5 = 1, k4 = 3; k4 < limit; k4 += 2) {\n      var sqrt = Math.ceil(Math.sqrt(k4));\n      for (var j4 = 0; j4 < i5 && res[j4] <= sqrt; j4++) if (k4 % res[j4] === 0) break;\n      if (i5 !== j4 && res[j4] <= sqrt) continue;\n      res[i5++] = k4;\n    }\n    primes = res;\n    return res;\n  }\n  function simpleSieve(p5) {\n    var primes2 = _getPrimes();\n    for (var i5 = 0; i5 < primes2.length; i5++) if (p5.modn(primes2[i5]) === 0) {\n      if (p5.cmpn(primes2[i5]) === 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n    return true;\n  }\n  function fermatTest(p5) {\n    var red = BN.mont(p5);\n    return TWO.toRed(red).redPow(p5.subn(1)).fromRed().cmpn(1) === 0;\n  }\n  function findPrime(bits, gen) {\n    if (bits < 16) {\n      if (gen === 2 || gen === 5) {\n        return new BN([140, 123]);\n      } else {\n        return new BN([140, 39]);\n      }\n    }\n    gen = new BN(gen);\n    var num, n22;\n    while (true) {\n      num = new BN(randomBytes2(Math.ceil(bits / 8)));\n      while (num.bitLength() > bits) {\n        num.ishrn(1);\n      }\n      if (num.isEven()) {\n        num.iadd(ONE);\n      }\n      if (!num.testn(1)) {\n        num.iadd(TWO);\n      }\n      if (!gen.cmp(TWO)) {\n        while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n          num.iadd(FOUR);\n        }\n      } else if (!gen.cmp(FIVE)) {\n        while (num.mod(TEN).cmp(THREE)) {\n          num.iadd(FOUR);\n        }\n      }\n      n22 = num.shrn(1);\n      if (simpleSieve(n22) && simpleSieve(num) && fermatTest(n22) && fermatTest(num) && millerRabin.test(n22) && millerRabin.test(num)) {\n        return num;\n      }\n    }\n  }\n  return exports$_$1;\n}\nvar _primes$1 = {\n  \"modp1\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"\n  },\n  \"modp2\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"\n  },\n  \"modp5\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"\n  },\n  \"modp14\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"\n  },\n  \"modp15\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"\n  },\n  \"modp16\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n  },\n  \"modp17\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"\n  },\n  \"modp18\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"\n  }\n};\nvar exports$Z$1 = {};\nvar _dewExec$Z$1 = false;\nvar _global$8$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$Z$1() {\n  if (_dewExec$Z$1) return exports$Z$1;\n  _dewExec$Z$1 = true;\n  var Buffer = e$1$1.Buffer;\n  var BN = dew$12$1();\n  var MillerRabin = dew$$$1();\n  var millerRabin = new MillerRabin();\n  var TWENTYFOUR = new BN(24);\n  var ELEVEN = new BN(11);\n  var TEN = new BN(10);\n  var THREE = new BN(3);\n  var SEVEN = new BN(7);\n  var primes = dew$_$1();\n  var randomBytes2 = dew$1S();\n  exports$Z$1 = DH;\n  function setPublicKey(pub, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(pub)) {\n      pub = new Buffer(pub, enc);\n    }\n    (this || _global$8$1)._pub = new BN(pub);\n    return this || _global$8$1;\n  }\n  function setPrivateKey(priv, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(priv)) {\n      priv = new Buffer(priv, enc);\n    }\n    (this || _global$8$1)._priv = new BN(priv);\n    return this || _global$8$1;\n  }\n  var primeCache = {};\n  function checkPrime(prime, generator) {\n    var gen = generator.toString(\"hex\");\n    var hex = [gen, prime.toString(16)].join(\"_\");\n    if (hex in primeCache) {\n      return primeCache[hex];\n    }\n    var error = 0;\n    if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n      error += 1;\n      if (gen === \"02\" || gen === \"05\") {\n        error += 8;\n      } else {\n        error += 4;\n      }\n      primeCache[hex] = error;\n      return error;\n    }\n    if (!millerRabin.test(prime.shrn(1))) {\n      error += 2;\n    }\n    var rem;\n    switch (gen) {\n      case \"02\":\n        if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n          error += 8;\n        }\n        break;\n      case \"05\":\n        rem = prime.mod(TEN);\n        if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n          error += 8;\n        }\n        break;\n      default:\n        error += 4;\n    }\n    primeCache[hex] = error;\n    return error;\n  }\n  function DH(prime, generator, malleable) {\n    this.setGenerator(generator);\n    (this || _global$8$1).__prime = new BN(prime);\n    (this || _global$8$1)._prime = BN.mont((this || _global$8$1).__prime);\n    (this || _global$8$1)._primeLen = prime.length;\n    (this || _global$8$1)._pub = void 0;\n    (this || _global$8$1)._priv = void 0;\n    (this || _global$8$1)._primeCode = void 0;\n    if (malleable) {\n      (this || _global$8$1).setPublicKey = setPublicKey;\n      (this || _global$8$1).setPrivateKey = setPrivateKey;\n    } else {\n      (this || _global$8$1)._primeCode = 8;\n    }\n  }\n  Object.defineProperty(DH.prototype, \"verifyError\", {\n    enumerable: true,\n    get: function() {\n      if (typeof (this || _global$8$1)._primeCode !== \"number\") {\n        (this || _global$8$1)._primeCode = checkPrime((this || _global$8$1).__prime, (this || _global$8$1).__gen);\n      }\n      return (this || _global$8$1)._primeCode;\n    }\n  });\n  DH.prototype.generateKeys = function() {\n    if (!(this || _global$8$1)._priv) {\n      (this || _global$8$1)._priv = new BN(randomBytes2((this || _global$8$1)._primeLen));\n    }\n    (this || _global$8$1)._pub = (this || _global$8$1)._gen.toRed((this || _global$8$1)._prime).redPow((this || _global$8$1)._priv).fromRed();\n    return this.getPublicKey();\n  };\n  DH.prototype.computeSecret = function(other) {\n    other = new BN(other);\n    other = other.toRed((this || _global$8$1)._prime);\n    var secret = other.redPow((this || _global$8$1)._priv).fromRed();\n    var out = new Buffer(secret.toArray());\n    var prime = this.getPrime();\n    if (out.length < prime.length) {\n      var front = new Buffer(prime.length - out.length);\n      front.fill(0);\n      out = Buffer.concat([front, out]);\n    }\n    return out;\n  };\n  DH.prototype.getPublicKey = function getPublicKey(enc) {\n    return formatReturnValue((this || _global$8$1)._pub, enc);\n  };\n  DH.prototype.getPrivateKey = function getPrivateKey(enc) {\n    return formatReturnValue((this || _global$8$1)._priv, enc);\n  };\n  DH.prototype.getPrime = function(enc) {\n    return formatReturnValue((this || _global$8$1).__prime, enc);\n  };\n  DH.prototype.getGenerator = function(enc) {\n    return formatReturnValue((this || _global$8$1)._gen, enc);\n  };\n  DH.prototype.setGenerator = function(gen, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(gen)) {\n      gen = new Buffer(gen, enc);\n    }\n    (this || _global$8$1).__gen = gen;\n    (this || _global$8$1)._gen = new BN(gen);\n    return this || _global$8$1;\n  };\n  function formatReturnValue(bn, enc) {\n    var buf = new Buffer(bn.toArray());\n    if (!enc) {\n      return buf;\n    } else {\n      return buf.toString(enc);\n    }\n  }\n  return exports$Z$1;\n}\nvar exports$Y$1 = {};\nvar _dewExec$Y$1 = false;\nfunction dew$Y$1() {\n  if (_dewExec$Y$1) return exports$Y$1;\n  _dewExec$Y$1 = true;\n  var Buffer = e$1$1.Buffer;\n  var generatePrime = dew$_$1();\n  var primes = _primes$1;\n  var DH = dew$Z$1();\n  function getDiffieHellman2(mod) {\n    var prime = new Buffer(primes[mod].prime, \"hex\");\n    var gen = new Buffer(primes[mod].gen, \"hex\");\n    return new DH(prime, gen);\n  }\n  var ENCODINGS = {\n    \"binary\": true,\n    \"hex\": true,\n    \"base64\": true\n  };\n  function createDiffieHellman2(prime, enc, generator, genc) {\n    if (Buffer.isBuffer(enc) || ENCODINGS[enc] === void 0) {\n      return createDiffieHellman2(prime, \"binary\", enc, generator);\n    }\n    enc = enc || \"binary\";\n    genc = genc || \"binary\";\n    generator = generator || new Buffer([2]);\n    if (!Buffer.isBuffer(generator)) {\n      generator = new Buffer(generator, genc);\n    }\n    if (typeof prime === \"number\") {\n      return new DH(generatePrime(prime, generator), generator, true);\n    }\n    if (!Buffer.isBuffer(prime)) {\n      prime = new Buffer(prime, enc);\n    }\n    return new DH(prime, generator, true);\n  }\n  exports$Y$1.DiffieHellmanGroup = exports$Y$1.createDiffieHellmanGroup = exports$Y$1.getDiffieHellman = getDiffieHellman2;\n  exports$Y$1.createDiffieHellman = exports$Y$1.DiffieHellman = createDiffieHellman2;\n  return exports$Y$1;\n}\nvar exports$X$1 = {};\nvar _dewExec$X$1 = false;\nvar module$4$1 = {\n  exports: exports$X$1\n};\nvar _global$7$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$X$1() {\n  if (_dewExec$X$1) return module$4$1.exports;\n  _dewExec$X$1 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$7$1).negative = 0;\n      (this || _global$7$1).words = null;\n      (this || _global$7$1).length = 0;\n      (this || _global$7$1).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = e$1$1.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$7$1).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$7$1).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$7$1).words = [number & 67108863];\n        (this || _global$7$1).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$7$1).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$7$1).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$7$1).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$7$1).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$7$1).words = [0];\n        (this || _global$7$1).length = 1;\n        return this || _global$7$1;\n      }\n      (this || _global$7$1).length = Math.ceil(number.length / 3);\n      (this || _global$7$1).words = new Array((this || _global$7$1).length);\n      for (var i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n        (this || _global$7$1).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$7$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$7$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$7$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$7$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this._strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 48 && c5 <= 57) {\n        return c5 - 48;\n      } else if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        assert2(false, \"Invalid character in \" + string);\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$7$1).length = Math.ceil((number.length - start) / 6);\n      (this || _global$7$1).words = new Array((this || _global$7$1).length);\n      for (var i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n        (this || _global$7$1).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$7$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$7$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$7$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$7$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this._strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var b4 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          b4 = c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          b4 = c5 - 17 + 10;\n        } else {\n          b4 = c5;\n        }\n        assert2(c5 >= 0 && b4 < mul, \"Invalid character\");\n        r5 += b4;\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$7$1).words = [0];\n      (this || _global$7$1).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$7$1).words[0] + word < 67108864) {\n          (this || _global$7$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$7$1).words[0] + word < 67108864) {\n          (this || _global$7$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this._strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$7$1).length);\n      for (var i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n        dest.words[i5] = (this || _global$7$1).words[i5];\n      }\n      dest.length = (this || _global$7$1).length;\n      dest.negative = (this || _global$7$1).negative;\n      dest.red = (this || _global$7$1).red;\n    };\n    function move(dest, src) {\n      dest.words = src.words;\n      dest.length = src.length;\n      dest.negative = src.negative;\n      dest.red = src.red;\n    }\n    BN.prototype._move = function _move(dest) {\n      move(dest, this || _global$7$1);\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$7$1).length < size) {\n        (this || _global$7$1).words[(this || _global$7$1).length++] = 0;\n      }\n      return this || _global$7$1;\n    };\n    BN.prototype._strip = function strip() {\n      while ((this || _global$7$1).length > 1 && (this || _global$7$1).words[(this || _global$7$1).length - 1] === 0) {\n        (this || _global$7$1).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$7$1).length === 1 && (this || _global$7$1).words[0] === 0) {\n        (this || _global$7$1).negative = 0;\n      }\n      return this || _global$7$1;\n    };\n    if (typeof Symbol !== \"undefined\" && typeof Symbol.for === \"function\") {\n      try {\n        BN.prototype[/* @__PURE__ */ Symbol.for(\"nodejs.util.inspect.custom\")] = inspect;\n      } catch (e7) {\n        BN.prototype.inspect = inspect;\n      }\n    } else {\n      BN.prototype.inspect = inspect;\n    }\n    function inspect() {\n      return ((this || _global$7$1).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    }\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n          var w4 = (this || _global$7$1).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$7$1).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$7$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modrn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$7$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$7$1).words[0];\n      if ((this || _global$7$1).length === 2) {\n        ret += (this || _global$7$1).words[1] * 67108864;\n      } else if ((this || _global$7$1).length === 3 && (this || _global$7$1).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$7$1).words[1] * 67108864;\n      } else if ((this || _global$7$1).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$7$1).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16, 2);\n    };\n    if (Buffer) {\n      BN.prototype.toBuffer = function toBuffer(endian, length) {\n        return this.toArrayLike(Buffer, endian, length);\n      };\n    }\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    var allocate = function allocate2(ArrayType, size) {\n      if (ArrayType.allocUnsafe) {\n        return ArrayType.allocUnsafe(size);\n      }\n      return new ArrayType(size);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      this._strip();\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      var res = allocate(ArrayType, reqLength);\n      var postfix = endian === \"le\" ? \"LE\" : \"BE\";\n      this[\"_toArrayLike\" + postfix](res, byteLength);\n      return res;\n    };\n    BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n      var position = 0;\n      var carry = 0;\n      for (var i5 = 0, shift = 0; i5 < (this || _global$7$1).length; i5++) {\n        var word = (this || _global$7$1).words[i5] << shift | carry;\n        res[position++] = word & 255;\n        if (position < res.length) {\n          res[position++] = word >> 8 & 255;\n        }\n        if (position < res.length) {\n          res[position++] = word >> 16 & 255;\n        }\n        if (shift === 6) {\n          if (position < res.length) {\n            res[position++] = word >> 24 & 255;\n          }\n          carry = 0;\n          shift = 0;\n        } else {\n          carry = word >>> 24;\n          shift += 2;\n        }\n      }\n      if (position < res.length) {\n        res[position++] = carry;\n        while (position < res.length) {\n          res[position++] = 0;\n        }\n      }\n    };\n    BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n      var position = res.length - 1;\n      var carry = 0;\n      for (var i5 = 0, shift = 0; i5 < (this || _global$7$1).length; i5++) {\n        var word = (this || _global$7$1).words[i5] << shift | carry;\n        res[position--] = word & 255;\n        if (position >= 0) {\n          res[position--] = word >> 8 & 255;\n        }\n        if (position >= 0) {\n          res[position--] = word >> 16 & 255;\n        }\n        if (shift === 6) {\n          if (position >= 0) {\n            res[position--] = word >> 24 & 255;\n          }\n          carry = 0;\n          shift = 0;\n        } else {\n          carry = word >>> 24;\n          shift += 2;\n        }\n      }\n      if (position >= 0) {\n        res[position--] = carry;\n        while (position >= 0) {\n          res[position--] = 0;\n        }\n      }\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$7$1).words[(this || _global$7$1).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$7$1).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = num.words[off2] >>> wbit & 1;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n        var b4 = this._zeroBits((this || _global$7$1).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$7$1).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$7$1).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$7$1).negative ^= 1;\n      }\n      return this || _global$7$1;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$7$1).length < num.length) {\n        (this || _global$7$1).words[(this || _global$7$1).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$7$1).words[i5] = (this || _global$7$1).words[i5] | num.words[i5];\n      }\n      return this._strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$7$1).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$7$1).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$7$1);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$7$1).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$7$1);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$7$1).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$7$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$7$1).words[i5] = (this || _global$7$1).words[i5] & num.words[i5];\n      }\n      (this || _global$7$1).length = b4.length;\n      return this._strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$7$1).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$7$1).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$7$1);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$7$1).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$7$1);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$7$1).length > num.length) {\n        a5 = this || _global$7$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$7$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$7$1).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$7$1) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$7$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$7$1).length = a5.length;\n      return this._strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$7$1).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$7$1).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$7$1);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$7$1).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$7$1);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$7$1).words[i5] = ~(this || _global$7$1).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$7$1).words[i5] = ~(this || _global$7$1).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this._strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$7$1).words[off2] = (this || _global$7$1).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$7$1).words[off2] = (this || _global$7$1).words[off2] & ~(1 << wbit);\n      }\n      return this._strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$7$1).negative !== 0 && num.negative === 0) {\n        (this || _global$7$1).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$7$1).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$7$1).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$7$1).length > num.length) {\n        a5 = this || _global$7$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$7$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$7$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$7$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$7$1).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$7$1).words[(this || _global$7$1).length] = carry;\n        (this || _global$7$1).length++;\n      } else if (a5 !== (this || _global$7$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$7$1).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$7$1;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$7$1).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$7$1).negative !== 0) {\n        (this || _global$7$1).negative = 0;\n        res = num.sub(this || _global$7$1);\n        (this || _global$7$1).negative = 1;\n        return res;\n      }\n      if ((this || _global$7$1).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$7$1);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$7$1).negative !== 0) {\n        (this || _global$7$1).negative = 0;\n        this.iadd(num);\n        (this || _global$7$1).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$7$1).negative = 0;\n        (this || _global$7$1).length = 1;\n        (this || _global$7$1).words[0] = 0;\n        return this || _global$7$1;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$7$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$7$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$7$1).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$7$1).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$7$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$7$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$7$1).length = Math.max((this || _global$7$1).length, i5);\n      if (a5 !== (this || _global$7$1)) {\n        (this || _global$7$1).negative = 1;\n      }\n      return this._strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out._strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out._strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      return bigMulTo(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$7$1).length + num.length;\n      if ((this || _global$7$1).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$7$1, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$7$1, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$7$1, num, out);\n      } else {\n        res = jumboMulTo(this || _global$7$1, num, out);\n      }\n      return res;\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$7$1).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$7$1).length + num.length);\n      return jumboMulTo(this || _global$7$1, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$7$1);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n        var w4 = ((this || _global$7$1).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$7$1).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$7$1).words[i5] = carry;\n        (this || _global$7$1).length++;\n      }\n      return isNegNum ? this.ineg() : this || _global$7$1;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$7$1);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$7$1;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n          var newCarry = (this || _global$7$1).words[i5] & carryMask;\n          var c5 = ((this || _global$7$1).words[i5] | 0) - newCarry << r5;\n          (this || _global$7$1).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$7$1).words[i5] = carry;\n          (this || _global$7$1).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$7$1).length - 1; i5 >= 0; i5--) {\n          (this || _global$7$1).words[i5 + s5] = (this || _global$7$1).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$7$1).words[i5] = 0;\n        }\n        (this || _global$7$1).length += s5;\n      }\n      return this._strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$7$1).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$7$1).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$7$1).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$7$1).length > s5) {\n        (this || _global$7$1).length -= s5;\n        for (i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n          (this || _global$7$1).words[i5] = (this || _global$7$1).words[i5 + s5];\n        }\n      } else {\n        (this || _global$7$1).words[0] = 0;\n        (this || _global$7$1).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$7$1).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$7$1).words[i5] | 0;\n        (this || _global$7$1).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$7$1).length === 0) {\n        (this || _global$7$1).words[0] = 0;\n        (this || _global$7$1).length = 1;\n      }\n      return this._strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$7$1).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$7$1).length <= s5) return false;\n      var w4 = (this || _global$7$1).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$7$1).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$7$1).length <= s5) {\n        return this || _global$7$1;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$7$1).length = Math.min(s5, (this || _global$7$1).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$7$1).words[(this || _global$7$1).length - 1] &= mask;\n      }\n      return this._strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$7$1).negative !== 0) {\n        if ((this || _global$7$1).length === 1 && ((this || _global$7$1).words[0] | 0) <= num) {\n          (this || _global$7$1).words[0] = num - ((this || _global$7$1).words[0] | 0);\n          (this || _global$7$1).negative = 0;\n          return this || _global$7$1;\n        }\n        (this || _global$7$1).negative = 0;\n        this.isubn(num);\n        (this || _global$7$1).negative = 1;\n        return this || _global$7$1;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$7$1).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$7$1).length && (this || _global$7$1).words[i5] >= 67108864; i5++) {\n        (this || _global$7$1).words[i5] -= 67108864;\n        if (i5 === (this || _global$7$1).length - 1) {\n          (this || _global$7$1).words[i5 + 1] = 1;\n        } else {\n          (this || _global$7$1).words[i5 + 1]++;\n        }\n      }\n      (this || _global$7$1).length = Math.max((this || _global$7$1).length, i5 + 1);\n      return this || _global$7$1;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$7$1).negative !== 0) {\n        (this || _global$7$1).negative = 0;\n        this.iaddn(num);\n        (this || _global$7$1).negative = 1;\n        return this || _global$7$1;\n      }\n      (this || _global$7$1).words[0] -= num;\n      if ((this || _global$7$1).length === 1 && (this || _global$7$1).words[0] < 0) {\n        (this || _global$7$1).words[0] = -(this || _global$7$1).words[0];\n        (this || _global$7$1).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$7$1).length && (this || _global$7$1).words[i5] < 0; i5++) {\n          (this || _global$7$1).words[i5] += 67108864;\n          (this || _global$7$1).words[i5 + 1] -= 1;\n        }\n      }\n      return this._strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$7$1).negative = 0;\n      return this || _global$7$1;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$7$1).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$7$1).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$7$1).length - shift; i5++) {\n        w4 = ((this || _global$7$1).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$7$1).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this._strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$7$1).length; i5++) {\n        w4 = -((this || _global$7$1).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$7$1).words[i5] = w4 & 67108863;\n      }\n      (this || _global$7$1).negative = 1;\n      return this._strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$7$1).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3._strip();\n      }\n      a5._strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$7$1).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$7$1).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$7$1).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$7$1).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$7$1\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modrn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modrn = function modrn(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$7$1).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$7$1).words[i5] | 0)) % num;\n      }\n      return isNegNum ? -acc : acc;\n    };\n    BN.prototype.modn = function modn(num) {\n      return this.modrn(num);\n    };\n    BN.prototype.idivn = function idivn(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$7$1).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$7$1).words[i5] | 0) + carry * 67108864;\n        (this || _global$7$1).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      this._strip();\n      return isNegNum ? this.ineg() : this || _global$7$1;\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$7$1;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$7$1;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$7$1).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$7$1).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$7$1).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$7$1).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$7$1).words[s5] |= q3;\n        return this || _global$7$1;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$7$1).length; i5++) {\n        var w4 = (this || _global$7$1).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$7$1).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$7$1).words[i5] = carry;\n        (this || _global$7$1).length++;\n      }\n      return this || _global$7$1;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$7$1).length === 1 && (this || _global$7$1).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$7$1).negative !== 0 && !negative) return -1;\n      if ((this || _global$7$1).negative === 0 && negative) return 1;\n      this._strip();\n      var res;\n      if ((this || _global$7$1).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$7$1).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$7$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$7$1).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$7$1).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$7$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$7$1).length > num.length) return 1;\n      if ((this || _global$7$1).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$7$1).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$7$1).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$7$1).red, \"Already a number in reduction context\");\n      assert2((this || _global$7$1).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$7$1)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$7$1).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$7$1).red.convertFrom(this || _global$7$1);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$7$1).red = ctx;\n      return this || _global$7$1;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$7$1).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$7$1).red, \"redAdd works only with red numbers\");\n      return (this || _global$7$1).red.add(this || _global$7$1, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$7$1).red, \"redIAdd works only with red numbers\");\n      return (this || _global$7$1).red.iadd(this || _global$7$1, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$7$1).red, \"redSub works only with red numbers\");\n      return (this || _global$7$1).red.sub(this || _global$7$1, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$7$1).red, \"redISub works only with red numbers\");\n      return (this || _global$7$1).red.isub(this || _global$7$1, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$7$1).red, \"redShl works only with red numbers\");\n      return (this || _global$7$1).red.shl(this || _global$7$1, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$7$1).red, \"redMul works only with red numbers\");\n      (this || _global$7$1).red._verify2(this || _global$7$1, num);\n      return (this || _global$7$1).red.mul(this || _global$7$1, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$7$1).red, \"redMul works only with red numbers\");\n      (this || _global$7$1).red._verify2(this || _global$7$1, num);\n      return (this || _global$7$1).red.imul(this || _global$7$1, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$7$1).red, \"redSqr works only with red numbers\");\n      (this || _global$7$1).red._verify1(this || _global$7$1);\n      return (this || _global$7$1).red.sqr(this || _global$7$1);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$7$1).red, \"redISqr works only with red numbers\");\n      (this || _global$7$1).red._verify1(this || _global$7$1);\n      return (this || _global$7$1).red.isqr(this || _global$7$1);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$7$1).red, \"redSqrt works only with red numbers\");\n      (this || _global$7$1).red._verify1(this || _global$7$1);\n      return (this || _global$7$1).red.sqrt(this || _global$7$1);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$7$1).red, \"redInvm works only with red numbers\");\n      (this || _global$7$1).red._verify1(this || _global$7$1);\n      return (this || _global$7$1).red.invm(this || _global$7$1);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$7$1).red, \"redNeg works only with red numbers\");\n      (this || _global$7$1).red._verify1(this || _global$7$1);\n      return (this || _global$7$1).red.neg(this || _global$7$1);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$7$1).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$7$1).red._verify1(this || _global$7$1);\n      return (this || _global$7$1).red.pow(this || _global$7$1, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$7$1).name = name2;\n      (this || _global$7$1).p = new BN(p5, 16);\n      (this || _global$7$1).n = (this || _global$7$1).p.bitLength();\n      (this || _global$7$1).k = new BN(1).iushln((this || _global$7$1).n).isub((this || _global$7$1).p);\n      (this || _global$7$1).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$7$1).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$7$1).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$7$1).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$7$1).n);\n      var cmp = rlen < (this || _global$7$1).n ? -1 : r5.ucmp((this || _global$7$1).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$7$1).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$7$1).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$7$1).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$7$1, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$7$1, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$7$1, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$7$1, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$7$1).m = prime.p;\n        (this || _global$7$1).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$7$1).m = m4;\n        (this || _global$7$1).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$7$1).prime) return (this || _global$7$1).prime.ireduce(a5)._forceRed(this || _global$7$1);\n      move(a5, a5.umod((this || _global$7$1).m)._forceRed(this || _global$7$1));\n      return a5;\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$7$1).m.sub(a5)._forceRed(this || _global$7$1);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$7$1).m) >= 0) {\n        res.isub((this || _global$7$1).m);\n      }\n      return res._forceRed(this || _global$7$1);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$7$1).m) >= 0) {\n        res.isub((this || _global$7$1).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$7$1).m);\n      }\n      return res._forceRed(this || _global$7$1);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$7$1).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$7$1).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$7$1).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$7$1).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$7$1);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$7$1).m.subn(1).iushrn(1);\n      var z4 = (this || _global$7$1).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$7$1);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$7$1).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$7$1);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$7$1);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$7$1).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$7$1, m4);\n      (this || _global$7$1).shift = (this || _global$7$1).m.bitLength();\n      if ((this || _global$7$1).shift % 26 !== 0) {\n        (this || _global$7$1).shift += 26 - (this || _global$7$1).shift % 26;\n      }\n      (this || _global$7$1).r = new BN(1).iushln((this || _global$7$1).shift);\n      (this || _global$7$1).r2 = this.imod((this || _global$7$1).r.sqr());\n      (this || _global$7$1).rinv = (this || _global$7$1).r._invmp((this || _global$7$1).m);\n      (this || _global$7$1).minv = (this || _global$7$1).rinv.mul((this || _global$7$1).r).isubn(1).div((this || _global$7$1).m);\n      (this || _global$7$1).minv = (this || _global$7$1).minv.umod((this || _global$7$1).r);\n      (this || _global$7$1).minv = (this || _global$7$1).r.sub((this || _global$7$1).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$7$1).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$7$1).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$7$1).shift).mul((this || _global$7$1).minv).imaskn((this || _global$7$1).shift).mul((this || _global$7$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$7$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$7$1).m) >= 0) {\n        res = u5.isub((this || _global$7$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$7$1).m);\n      }\n      return res._forceRed(this || _global$7$1);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$7$1);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$7$1).shift).mul((this || _global$7$1).minv).imaskn((this || _global$7$1).shift).mul((this || _global$7$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$7$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$7$1).m) >= 0) {\n        res = u5.isub((this || _global$7$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$7$1).m);\n      }\n      return res._forceRed(this || _global$7$1);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$7$1).m).mul((this || _global$7$1).r2));\n      return res._forceRed(this || _global$7$1);\n    };\n  })(module$4$1, exports$X$1);\n  return module$4$1.exports;\n}\nvar exports$W$1 = {};\nvar _dewExec$W$1 = false;\nfunction dew$W$1() {\n  if (_dewExec$W$1) return exports$W$1;\n  _dewExec$W$1 = true;\n  var Buffer = e$1$1.Buffer;\n  var BN = dew$X$1();\n  var randomBytes2 = dew$1S();\n  function blind(priv) {\n    var r5 = getr(priv);\n    var blinder = r5.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n    return {\n      blinder,\n      unblinder: r5.invm(priv.modulus)\n    };\n  }\n  function getr(priv) {\n    var len = priv.modulus.byteLength();\n    var r5;\n    do {\n      r5 = new BN(randomBytes2(len));\n    } while (r5.cmp(priv.modulus) >= 0 || !r5.umod(priv.prime1) || !r5.umod(priv.prime2));\n    return r5;\n  }\n  function crt(msg, priv) {\n    var blinds = blind(priv);\n    var len = priv.modulus.byteLength();\n    var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n    var c1 = blinded.toRed(BN.mont(priv.prime1));\n    var c22 = blinded.toRed(BN.mont(priv.prime2));\n    var qinv = priv.coefficient;\n    var p5 = priv.prime1;\n    var q3 = priv.prime2;\n    var m1 = c1.redPow(priv.exponent1).fromRed();\n    var m22 = c22.redPow(priv.exponent2).fromRed();\n    var h5 = m1.isub(m22).imul(qinv).umod(p5).imul(q3);\n    return m22.iadd(h5).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, \"be\", len);\n  }\n  crt.getr = getr;\n  exports$W$1 = crt;\n  return exports$W$1;\n}\nvar _package$1 = {\n  \"_args\": [\n    [\n      \"elliptic@6.5.4\",\n      \"C:\\\\Users\\\\guybe\\\\Projects\\\\rollup-plugin-jspm\"\n    ]\n  ],\n  \"_from\": \"elliptic@6.5.4\",\n  \"_id\": \"elliptic@6.5.4\",\n  \"_inBundle\": false,\n  \"_integrity\": \"sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==\",\n  \"_location\": \"/@jspm/core/elliptic\",\n  \"_phantomChildren\": {},\n  \"_requested\": {\n    \"type\": \"version\",\n    \"registry\": true,\n    \"raw\": \"elliptic@6.5.4\",\n    \"name\": \"elliptic\",\n    \"escapedName\": \"elliptic\",\n    \"rawSpec\": \"6.5.4\",\n    \"saveSpec\": null,\n    \"fetchSpec\": \"6.5.4\"\n  },\n  \"_requiredBy\": [\n    \"/@jspm/core/browserify-sign\",\n    \"/@jspm/core/create-ecdh\"\n  ],\n  \"_resolved\": \"https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz\",\n  \"_spec\": \"6.5.4\",\n  \"_where\": \"C:\\\\Users\\\\guybe\\\\Projects\\\\rollup-plugin-jspm\",\n  \"author\": {\n    \"name\": \"Fedor Indutny\",\n    \"email\": \"fedor@indutny.com\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/indutny/elliptic/issues\"\n  },\n  \"dependencies\": {\n    \"bn.js\": \"^4.11.9\",\n    \"brorand\": \"^1.1.0\",\n    \"hash.js\": \"^1.0.0\",\n    \"hmac-drbg\": \"^1.0.1\",\n    \"inherits\": \"^2.0.4\",\n    \"minimalistic-assert\": \"^1.0.1\",\n    \"minimalistic-crypto-utils\": \"^1.0.1\"\n  },\n  \"description\": \"EC cryptography\",\n  \"devDependencies\": {\n    \"brfs\": \"^2.0.2\",\n    \"coveralls\": \"^3.1.0\",\n    \"eslint\": \"^7.6.0\",\n    \"grunt\": \"^1.2.1\",\n    \"grunt-browserify\": \"^5.3.0\",\n    \"grunt-cli\": \"^1.3.2\",\n    \"grunt-contrib-connect\": \"^3.0.0\",\n    \"grunt-contrib-copy\": \"^1.0.0\",\n    \"grunt-contrib-uglify\": \"^5.0.0\",\n    \"grunt-mocha-istanbul\": \"^5.0.2\",\n    \"grunt-saucelabs\": \"^9.0.1\",\n    \"istanbul\": \"^0.4.5\",\n    \"mocha\": \"^8.0.1\"\n  },\n  \"files\": [\n    \"lib\"\n  ],\n  \"homepage\": \"https://github.com/indutny/elliptic\",\n  \"keywords\": [\n    \"EC\",\n    \"Elliptic\",\n    \"curve\",\n    \"Cryptography\"\n  ],\n  \"license\": \"MIT\",\n  \"main\": \"lib/elliptic.js\",\n  \"name\": \"elliptic\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+ssh://git@github.com/indutny/elliptic.git\"\n  },\n  \"scripts\": {\n    \"lint\": \"eslint lib test\",\n    \"lint:fix\": \"npm run lint -- --fix\",\n    \"test\": \"npm run lint && npm run unit\",\n    \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n    \"version\": \"grunt dist && git add dist/\"\n  },\n  \"version\": \"6.5.4\"\n};\nvar exports$V$1 = {};\nvar _dewExec$V$1 = false;\nvar module$3$1 = {\n  exports: exports$V$1\n};\nvar _global$6$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$V$1() {\n  if (_dewExec$V$1) return module$3$1.exports;\n  _dewExec$V$1 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$6$1).negative = 0;\n      (this || _global$6$1).words = null;\n      (this || _global$6$1).length = 0;\n      (this || _global$6$1).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = e$1$1.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$6$1).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$6$1).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$6$1).words = [number & 67108863];\n        (this || _global$6$1).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$6$1).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$6$1).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$6$1).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$6$1).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$6$1).words = [0];\n        (this || _global$6$1).length = 1;\n        return this || _global$6$1;\n      }\n      (this || _global$6$1).length = Math.ceil(number.length / 3);\n      (this || _global$6$1).words = new Array((this || _global$6$1).length);\n      for (var i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n        (this || _global$6$1).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$6$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$6$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$6$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$6$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$6$1).length = Math.ceil((number.length - start) / 6);\n      (this || _global$6$1).words = new Array((this || _global$6$1).length);\n      for (var i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n        (this || _global$6$1).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$6$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$6$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$6$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$6$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$6$1).words = [0];\n      (this || _global$6$1).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$6$1).words[0] + word < 67108864) {\n          (this || _global$6$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$6$1).words[0] + word < 67108864) {\n          (this || _global$6$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$6$1).length);\n      for (var i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n        dest.words[i5] = (this || _global$6$1).words[i5];\n      }\n      dest.length = (this || _global$6$1).length;\n      dest.negative = (this || _global$6$1).negative;\n      dest.red = (this || _global$6$1).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$6$1).length < size) {\n        (this || _global$6$1).words[(this || _global$6$1).length++] = 0;\n      }\n      return this || _global$6$1;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$6$1).length > 1 && (this || _global$6$1).words[(this || _global$6$1).length - 1] === 0) {\n        (this || _global$6$1).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$6$1).length === 1 && (this || _global$6$1).words[0] === 0) {\n        (this || _global$6$1).negative = 0;\n      }\n      return this || _global$6$1;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$6$1).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n          var w4 = (this || _global$6$1).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$6$1).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$6$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$6$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$6$1).words[0];\n      if ((this || _global$6$1).length === 2) {\n        ret += (this || _global$6$1).words[1] * 67108864;\n      } else if ((this || _global$6$1).length === 3 && (this || _global$6$1).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$6$1).words[1] * 67108864;\n      } else if ((this || _global$6$1).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$6$1).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$6$1).words[(this || _global$6$1).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$6$1).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n        var b4 = this._zeroBits((this || _global$6$1).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$6$1).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$6$1).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$6$1).negative ^= 1;\n      }\n      return this || _global$6$1;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$6$1).length < num.length) {\n        (this || _global$6$1).words[(this || _global$6$1).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$6$1).words[i5] = (this || _global$6$1).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$6$1).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$6$1).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$6$1);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$6$1).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$6$1);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$6$1).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$6$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$6$1).words[i5] = (this || _global$6$1).words[i5] & num.words[i5];\n      }\n      (this || _global$6$1).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$6$1).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$6$1).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$6$1);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$6$1).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$6$1);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$6$1).length > num.length) {\n        a5 = this || _global$6$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$6$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$6$1).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$6$1) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$6$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$6$1).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$6$1).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$6$1).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$6$1);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$6$1).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$6$1);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$6$1).words[i5] = ~(this || _global$6$1).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$6$1).words[i5] = ~(this || _global$6$1).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$6$1).words[off2] = (this || _global$6$1).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$6$1).words[off2] = (this || _global$6$1).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$6$1).negative !== 0 && num.negative === 0) {\n        (this || _global$6$1).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$6$1).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$6$1).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$6$1).length > num.length) {\n        a5 = this || _global$6$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$6$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$6$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$6$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$6$1).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$6$1).words[(this || _global$6$1).length] = carry;\n        (this || _global$6$1).length++;\n      } else if (a5 !== (this || _global$6$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$6$1).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$6$1;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$6$1).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$6$1).negative !== 0) {\n        (this || _global$6$1).negative = 0;\n        res = num.sub(this || _global$6$1);\n        (this || _global$6$1).negative = 1;\n        return res;\n      }\n      if ((this || _global$6$1).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$6$1);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$6$1).negative !== 0) {\n        (this || _global$6$1).negative = 0;\n        this.iadd(num);\n        (this || _global$6$1).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$6$1).negative = 0;\n        (this || _global$6$1).length = 1;\n        (this || _global$6$1).words[0] = 0;\n        return this || _global$6$1;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$6$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$6$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$6$1).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$6$1).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$6$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$6$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$6$1).length = Math.max((this || _global$6$1).length, i5);\n      if (a5 !== (this || _global$6$1)) {\n        (this || _global$6$1).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$6$1).length + num.length;\n      if ((this || _global$6$1).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$6$1, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$6$1, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$6$1, num, out);\n      } else {\n        res = jumboMulTo(this || _global$6$1, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$6$1).x = x4;\n      (this || _global$6$1).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$6$1).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$6$1).length + num.length);\n      return jumboMulTo(this || _global$6$1, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$6$1);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n        var w4 = ((this || _global$6$1).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$6$1).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$6$1).words[i5] = carry;\n        (this || _global$6$1).length++;\n      }\n      return this || _global$6$1;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$6$1);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$6$1;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n          var newCarry = (this || _global$6$1).words[i5] & carryMask;\n          var c5 = ((this || _global$6$1).words[i5] | 0) - newCarry << r5;\n          (this || _global$6$1).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$6$1).words[i5] = carry;\n          (this || _global$6$1).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$6$1).length - 1; i5 >= 0; i5--) {\n          (this || _global$6$1).words[i5 + s5] = (this || _global$6$1).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$6$1).words[i5] = 0;\n        }\n        (this || _global$6$1).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$6$1).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$6$1).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$6$1).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$6$1).length > s5) {\n        (this || _global$6$1).length -= s5;\n        for (i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n          (this || _global$6$1).words[i5] = (this || _global$6$1).words[i5 + s5];\n        }\n      } else {\n        (this || _global$6$1).words[0] = 0;\n        (this || _global$6$1).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$6$1).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$6$1).words[i5] | 0;\n        (this || _global$6$1).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$6$1).length === 0) {\n        (this || _global$6$1).words[0] = 0;\n        (this || _global$6$1).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$6$1).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$6$1).length <= s5) return false;\n      var w4 = (this || _global$6$1).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$6$1).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$6$1).length <= s5) {\n        return this || _global$6$1;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$6$1).length = Math.min(s5, (this || _global$6$1).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$6$1).words[(this || _global$6$1).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$6$1).negative !== 0) {\n        if ((this || _global$6$1).length === 1 && ((this || _global$6$1).words[0] | 0) < num) {\n          (this || _global$6$1).words[0] = num - ((this || _global$6$1).words[0] | 0);\n          (this || _global$6$1).negative = 0;\n          return this || _global$6$1;\n        }\n        (this || _global$6$1).negative = 0;\n        this.isubn(num);\n        (this || _global$6$1).negative = 1;\n        return this || _global$6$1;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$6$1).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$6$1).length && (this || _global$6$1).words[i5] >= 67108864; i5++) {\n        (this || _global$6$1).words[i5] -= 67108864;\n        if (i5 === (this || _global$6$1).length - 1) {\n          (this || _global$6$1).words[i5 + 1] = 1;\n        } else {\n          (this || _global$6$1).words[i5 + 1]++;\n        }\n      }\n      (this || _global$6$1).length = Math.max((this || _global$6$1).length, i5 + 1);\n      return this || _global$6$1;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$6$1).negative !== 0) {\n        (this || _global$6$1).negative = 0;\n        this.iaddn(num);\n        (this || _global$6$1).negative = 1;\n        return this || _global$6$1;\n      }\n      (this || _global$6$1).words[0] -= num;\n      if ((this || _global$6$1).length === 1 && (this || _global$6$1).words[0] < 0) {\n        (this || _global$6$1).words[0] = -(this || _global$6$1).words[0];\n        (this || _global$6$1).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$6$1).length && (this || _global$6$1).words[i5] < 0; i5++) {\n          (this || _global$6$1).words[i5] += 67108864;\n          (this || _global$6$1).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$6$1).negative = 0;\n      return this || _global$6$1;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$6$1).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$6$1).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$6$1).length - shift; i5++) {\n        w4 = ((this || _global$6$1).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$6$1).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$6$1).length; i5++) {\n        w4 = -((this || _global$6$1).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$6$1).words[i5] = w4 & 67108863;\n      }\n      (this || _global$6$1).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$6$1).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$6$1).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$6$1).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$6$1).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$6$1).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$6$1\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$6$1).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$6$1).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$6$1).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$6$1).words[i5] | 0) + carry * 67108864;\n        (this || _global$6$1).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$6$1;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$6$1;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$6$1).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$6$1).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$6$1).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$6$1).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$6$1).words[s5] |= q3;\n        return this || _global$6$1;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$6$1).length; i5++) {\n        var w4 = (this || _global$6$1).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$6$1).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$6$1).words[i5] = carry;\n        (this || _global$6$1).length++;\n      }\n      return this || _global$6$1;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$6$1).length === 1 && (this || _global$6$1).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$6$1).negative !== 0 && !negative) return -1;\n      if ((this || _global$6$1).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$6$1).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$6$1).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$6$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$6$1).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$6$1).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$6$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$6$1).length > num.length) return 1;\n      if ((this || _global$6$1).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$6$1).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$6$1).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$6$1).red, \"Already a number in reduction context\");\n      assert2((this || _global$6$1).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$6$1)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$6$1).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$6$1).red.convertFrom(this || _global$6$1);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$6$1).red = ctx;\n      return this || _global$6$1;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$6$1).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$6$1).red, \"redAdd works only with red numbers\");\n      return (this || _global$6$1).red.add(this || _global$6$1, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$6$1).red, \"redIAdd works only with red numbers\");\n      return (this || _global$6$1).red.iadd(this || _global$6$1, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$6$1).red, \"redSub works only with red numbers\");\n      return (this || _global$6$1).red.sub(this || _global$6$1, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$6$1).red, \"redISub works only with red numbers\");\n      return (this || _global$6$1).red.isub(this || _global$6$1, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$6$1).red, \"redShl works only with red numbers\");\n      return (this || _global$6$1).red.shl(this || _global$6$1, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$6$1).red, \"redMul works only with red numbers\");\n      (this || _global$6$1).red._verify2(this || _global$6$1, num);\n      return (this || _global$6$1).red.mul(this || _global$6$1, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$6$1).red, \"redMul works only with red numbers\");\n      (this || _global$6$1).red._verify2(this || _global$6$1, num);\n      return (this || _global$6$1).red.imul(this || _global$6$1, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$6$1).red, \"redSqr works only with red numbers\");\n      (this || _global$6$1).red._verify1(this || _global$6$1);\n      return (this || _global$6$1).red.sqr(this || _global$6$1);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$6$1).red, \"redISqr works only with red numbers\");\n      (this || _global$6$1).red._verify1(this || _global$6$1);\n      return (this || _global$6$1).red.isqr(this || _global$6$1);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$6$1).red, \"redSqrt works only with red numbers\");\n      (this || _global$6$1).red._verify1(this || _global$6$1);\n      return (this || _global$6$1).red.sqrt(this || _global$6$1);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$6$1).red, \"redInvm works only with red numbers\");\n      (this || _global$6$1).red._verify1(this || _global$6$1);\n      return (this || _global$6$1).red.invm(this || _global$6$1);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$6$1).red, \"redNeg works only with red numbers\");\n      (this || _global$6$1).red._verify1(this || _global$6$1);\n      return (this || _global$6$1).red.neg(this || _global$6$1);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$6$1).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$6$1).red._verify1(this || _global$6$1);\n      return (this || _global$6$1).red.pow(this || _global$6$1, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$6$1).name = name2;\n      (this || _global$6$1).p = new BN(p5, 16);\n      (this || _global$6$1).n = (this || _global$6$1).p.bitLength();\n      (this || _global$6$1).k = new BN(1).iushln((this || _global$6$1).n).isub((this || _global$6$1).p);\n      (this || _global$6$1).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$6$1).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$6$1).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$6$1).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$6$1).n);\n      var cmp = rlen < (this || _global$6$1).n ? -1 : r5.ucmp((this || _global$6$1).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$6$1).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$6$1).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$6$1).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$6$1, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$6$1, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$6$1, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$6$1, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$6$1).m = prime.p;\n        (this || _global$6$1).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$6$1).m = m4;\n        (this || _global$6$1).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$6$1).prime) return (this || _global$6$1).prime.ireduce(a5)._forceRed(this || _global$6$1);\n      return a5.umod((this || _global$6$1).m)._forceRed(this || _global$6$1);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$6$1).m.sub(a5)._forceRed(this || _global$6$1);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$6$1).m) >= 0) {\n        res.isub((this || _global$6$1).m);\n      }\n      return res._forceRed(this || _global$6$1);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$6$1).m) >= 0) {\n        res.isub((this || _global$6$1).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$6$1).m);\n      }\n      return res._forceRed(this || _global$6$1);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$6$1).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$6$1).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$6$1).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$6$1).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$6$1);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$6$1).m.subn(1).iushrn(1);\n      var z4 = (this || _global$6$1).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$6$1);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$6$1).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$6$1);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$6$1);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$6$1).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$6$1, m4);\n      (this || _global$6$1).shift = (this || _global$6$1).m.bitLength();\n      if ((this || _global$6$1).shift % 26 !== 0) {\n        (this || _global$6$1).shift += 26 - (this || _global$6$1).shift % 26;\n      }\n      (this || _global$6$1).r = new BN(1).iushln((this || _global$6$1).shift);\n      (this || _global$6$1).r2 = this.imod((this || _global$6$1).r.sqr());\n      (this || _global$6$1).rinv = (this || _global$6$1).r._invmp((this || _global$6$1).m);\n      (this || _global$6$1).minv = (this || _global$6$1).rinv.mul((this || _global$6$1).r).isubn(1).div((this || _global$6$1).m);\n      (this || _global$6$1).minv = (this || _global$6$1).minv.umod((this || _global$6$1).r);\n      (this || _global$6$1).minv = (this || _global$6$1).r.sub((this || _global$6$1).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$6$1).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$6$1).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$6$1).shift).mul((this || _global$6$1).minv).imaskn((this || _global$6$1).shift).mul((this || _global$6$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$6$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$6$1).m) >= 0) {\n        res = u5.isub((this || _global$6$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$6$1).m);\n      }\n      return res._forceRed(this || _global$6$1);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$6$1);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$6$1).shift).mul((this || _global$6$1).minv).imaskn((this || _global$6$1).shift).mul((this || _global$6$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$6$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$6$1).m) >= 0) {\n        res = u5.isub((this || _global$6$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$6$1).m);\n      }\n      return res._forceRed(this || _global$6$1);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$6$1).m).mul((this || _global$6$1).r2));\n      return res._forceRed(this || _global$6$1);\n    };\n  })(module$3$1, exports$V$1);\n  return module$3$1.exports;\n}\nvar exports$U$1 = {};\nvar _dewExec$U$1 = false;\nfunction dew$U$1() {\n  if (_dewExec$U$1) return exports$U$1;\n  _dewExec$U$1 = true;\n  var utils = exports$U$1;\n  function toArray(msg, enc) {\n    if (Array.isArray(msg)) return msg.slice();\n    if (!msg) return [];\n    var res = [];\n    if (typeof msg !== \"string\") {\n      for (var i5 = 0; i5 < msg.length; i5++) res[i5] = msg[i5] | 0;\n      return res;\n    }\n    if (enc === \"hex\") {\n      msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n      if (msg.length % 2 !== 0) msg = \"0\" + msg;\n      for (var i5 = 0; i5 < msg.length; i5 += 2) res.push(parseInt(msg[i5] + msg[i5 + 1], 16));\n    } else {\n      for (var i5 = 0; i5 < msg.length; i5++) {\n        var c5 = msg.charCodeAt(i5);\n        var hi = c5 >> 8;\n        var lo = c5 & 255;\n        if (hi) res.push(hi, lo);\n        else res.push(lo);\n      }\n    }\n    return res;\n  }\n  utils.toArray = toArray;\n  function zero2(word) {\n    if (word.length === 1) return \"0\" + word;\n    else return word;\n  }\n  utils.zero2 = zero2;\n  function toHex(msg) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) res += zero2(msg[i5].toString(16));\n    return res;\n  }\n  utils.toHex = toHex;\n  utils.encode = function encode(arr, enc) {\n    if (enc === \"hex\") return toHex(arr);\n    else return arr;\n  };\n  return exports$U$1;\n}\nvar exports$T$1 = {};\nvar _dewExec$T$1 = false;\nfunction dew$T$1() {\n  if (_dewExec$T$1) return exports$T$1;\n  _dewExec$T$1 = true;\n  var utils = exports$T$1;\n  var BN = dew$V$1();\n  var minAssert = dew$1t();\n  var minUtils = dew$U$1();\n  utils.assert = minAssert;\n  utils.toArray = minUtils.toArray;\n  utils.zero2 = minUtils.zero2;\n  utils.toHex = minUtils.toHex;\n  utils.encode = minUtils.encode;\n  function getNAF(num, w4, bits) {\n    var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n    naf.fill(0);\n    var ws = 1 << w4 + 1;\n    var k4 = num.clone();\n    for (var i5 = 0; i5 < naf.length; i5++) {\n      var z4;\n      var mod = k4.andln(ws - 1);\n      if (k4.isOdd()) {\n        if (mod > (ws >> 1) - 1) z4 = (ws >> 1) - mod;\n        else z4 = mod;\n        k4.isubn(z4);\n      } else {\n        z4 = 0;\n      }\n      naf[i5] = z4;\n      k4.iushrn(1);\n    }\n    return naf;\n  }\n  utils.getNAF = getNAF;\n  function getJSF(k1, k22) {\n    var jsf = [[], []];\n    k1 = k1.clone();\n    k22 = k22.clone();\n    var d1 = 0;\n    var d22 = 0;\n    var m8;\n    while (k1.cmpn(-d1) > 0 || k22.cmpn(-d22) > 0) {\n      var m14 = k1.andln(3) + d1 & 3;\n      var m24 = k22.andln(3) + d22 & 3;\n      if (m14 === 3) m14 = -1;\n      if (m24 === 3) m24 = -1;\n      var u1;\n      if ((m14 & 1) === 0) {\n        u1 = 0;\n      } else {\n        m8 = k1.andln(7) + d1 & 7;\n        if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;\n        else u1 = m14;\n      }\n      jsf[0].push(u1);\n      var u22;\n      if ((m24 & 1) === 0) {\n        u22 = 0;\n      } else {\n        m8 = k22.andln(7) + d22 & 7;\n        if ((m8 === 3 || m8 === 5) && m14 === 2) u22 = -m24;\n        else u22 = m24;\n      }\n      jsf[1].push(u22);\n      if (2 * d1 === u1 + 1) d1 = 1 - d1;\n      if (2 * d22 === u22 + 1) d22 = 1 - d22;\n      k1.iushrn(1);\n      k22.iushrn(1);\n    }\n    return jsf;\n  }\n  utils.getJSF = getJSF;\n  function cachedProperty(obj, name2, computer) {\n    var key = \"_\" + name2;\n    obj.prototype[name2] = function cachedProperty2() {\n      return this[key] !== void 0 ? this[key] : this[key] = computer.call(this);\n    };\n  }\n  utils.cachedProperty = cachedProperty;\n  function parseBytes(bytes) {\n    return typeof bytes === \"string\" ? utils.toArray(bytes, \"hex\") : bytes;\n  }\n  utils.parseBytes = parseBytes;\n  function intFromLE(bytes) {\n    return new BN(bytes, \"hex\", \"le\");\n  }\n  utils.intFromLE = intFromLE;\n  return exports$T$1;\n}\nvar exports$S$1 = {};\nvar _dewExec$S$1 = false;\nfunction dew$S$1() {\n  if (_dewExec$S$1) return exports$S$1;\n  _dewExec$S$1 = true;\n  var BN = dew$V$1();\n  var utils = dew$T$1();\n  var getNAF = utils.getNAF;\n  var getJSF = utils.getJSF;\n  var assert2 = utils.assert;\n  function BaseCurve(type, conf) {\n    this.type = type;\n    this.p = new BN(conf.p, 16);\n    this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n    this.zero = new BN(0).toRed(this.red);\n    this.one = new BN(1).toRed(this.red);\n    this.two = new BN(2).toRed(this.red);\n    this.n = conf.n && new BN(conf.n, 16);\n    this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n    this._wnafT1 = new Array(4);\n    this._wnafT2 = new Array(4);\n    this._wnafT3 = new Array(4);\n    this._wnafT4 = new Array(4);\n    this._bitLength = this.n ? this.n.bitLength() : 0;\n    var adjustCount = this.n && this.p.div(this.n);\n    if (!adjustCount || adjustCount.cmpn(100) > 0) {\n      this.redN = null;\n    } else {\n      this._maxwellTrick = true;\n      this.redN = this.n.toRed(this.red);\n    }\n  }\n  exports$S$1 = BaseCurve;\n  BaseCurve.prototype.point = function point() {\n    throw new Error(\"Not implemented\");\n  };\n  BaseCurve.prototype.validate = function validate() {\n    throw new Error(\"Not implemented\");\n  };\n  BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p5, k4) {\n    assert2(p5.precomputed);\n    var doubles = p5._getDoubles();\n    var naf = getNAF(k4, 1, this._bitLength);\n    var I4 = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n    I4 /= 3;\n    var repr = [];\n    var j4;\n    var nafW;\n    for (j4 = 0; j4 < naf.length; j4 += doubles.step) {\n      nafW = 0;\n      for (var l5 = j4 + doubles.step - 1; l5 >= j4; l5--) nafW = (nafW << 1) + naf[l5];\n      repr.push(nafW);\n    }\n    var a5 = this.jpoint(null, null, null);\n    var b4 = this.jpoint(null, null, null);\n    for (var i5 = I4; i5 > 0; i5--) {\n      for (j4 = 0; j4 < repr.length; j4++) {\n        nafW = repr[j4];\n        if (nafW === i5) b4 = b4.mixedAdd(doubles.points[j4]);\n        else if (nafW === -i5) b4 = b4.mixedAdd(doubles.points[j4].neg());\n      }\n      a5 = a5.add(b4);\n    }\n    return a5.toP();\n  };\n  BaseCurve.prototype._wnafMul = function _wnafMul(p5, k4) {\n    var w4 = 4;\n    var nafPoints = p5._getNAFPoints(w4);\n    w4 = nafPoints.wnd;\n    var wnd = nafPoints.points;\n    var naf = getNAF(k4, w4, this._bitLength);\n    var acc = this.jpoint(null, null, null);\n    for (var i5 = naf.length - 1; i5 >= 0; i5--) {\n      for (var l5 = 0; i5 >= 0 && naf[i5] === 0; i5--) l5++;\n      if (i5 >= 0) l5++;\n      acc = acc.dblp(l5);\n      if (i5 < 0) break;\n      var z4 = naf[i5];\n      assert2(z4 !== 0);\n      if (p5.type === \"affine\") {\n        if (z4 > 0) acc = acc.mixedAdd(wnd[z4 - 1 >> 1]);\n        else acc = acc.mixedAdd(wnd[-z4 - 1 >> 1].neg());\n      } else {\n        if (z4 > 0) acc = acc.add(wnd[z4 - 1 >> 1]);\n        else acc = acc.add(wnd[-z4 - 1 >> 1].neg());\n      }\n    }\n    return p5.type === \"affine\" ? acc.toP() : acc;\n  };\n  BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n    var wndWidth = this._wnafT1;\n    var wnd = this._wnafT2;\n    var naf = this._wnafT3;\n    var max = 0;\n    var i5;\n    var j4;\n    var p5;\n    for (i5 = 0; i5 < len; i5++) {\n      p5 = points[i5];\n      var nafPoints = p5._getNAFPoints(defW);\n      wndWidth[i5] = nafPoints.wnd;\n      wnd[i5] = nafPoints.points;\n    }\n    for (i5 = len - 1; i5 >= 1; i5 -= 2) {\n      var a5 = i5 - 1;\n      var b4 = i5;\n      if (wndWidth[a5] !== 1 || wndWidth[b4] !== 1) {\n        naf[a5] = getNAF(coeffs[a5], wndWidth[a5], this._bitLength);\n        naf[b4] = getNAF(coeffs[b4], wndWidth[b4], this._bitLength);\n        max = Math.max(naf[a5].length, max);\n        max = Math.max(naf[b4].length, max);\n        continue;\n      }\n      var comb = [\n        points[a5],\n        /* 1 */\n        null,\n        /* 3 */\n        null,\n        /* 5 */\n        points[b4]\n        /* 7 */\n      ];\n      if (points[a5].y.cmp(points[b4].y) === 0) {\n        comb[1] = points[a5].add(points[b4]);\n        comb[2] = points[a5].toJ().mixedAdd(points[b4].neg());\n      } else if (points[a5].y.cmp(points[b4].y.redNeg()) === 0) {\n        comb[1] = points[a5].toJ().mixedAdd(points[b4]);\n        comb[2] = points[a5].add(points[b4].neg());\n      } else {\n        comb[1] = points[a5].toJ().mixedAdd(points[b4]);\n        comb[2] = points[a5].toJ().mixedAdd(points[b4].neg());\n      }\n      var index = [\n        -3,\n        /* -1 -1 */\n        -1,\n        /* -1 0 */\n        -5,\n        /* -1 1 */\n        -7,\n        /* 0 -1 */\n        0,\n        /* 0 0 */\n        7,\n        /* 0 1 */\n        5,\n        /* 1 -1 */\n        1,\n        /* 1 0 */\n        3\n        /* 1 1 */\n      ];\n      var jsf = getJSF(coeffs[a5], coeffs[b4]);\n      max = Math.max(jsf[0].length, max);\n      naf[a5] = new Array(max);\n      naf[b4] = new Array(max);\n      for (j4 = 0; j4 < max; j4++) {\n        var ja = jsf[0][j4] | 0;\n        var jb = jsf[1][j4] | 0;\n        naf[a5][j4] = index[(ja + 1) * 3 + (jb + 1)];\n        naf[b4][j4] = 0;\n        wnd[a5] = comb;\n      }\n    }\n    var acc = this.jpoint(null, null, null);\n    var tmp = this._wnafT4;\n    for (i5 = max; i5 >= 0; i5--) {\n      var k4 = 0;\n      while (i5 >= 0) {\n        var zero = true;\n        for (j4 = 0; j4 < len; j4++) {\n          tmp[j4] = naf[j4][i5] | 0;\n          if (tmp[j4] !== 0) zero = false;\n        }\n        if (!zero) break;\n        k4++;\n        i5--;\n      }\n      if (i5 >= 0) k4++;\n      acc = acc.dblp(k4);\n      if (i5 < 0) break;\n      for (j4 = 0; j4 < len; j4++) {\n        var z4 = tmp[j4];\n        if (z4 === 0) continue;\n        else if (z4 > 0) p5 = wnd[j4][z4 - 1 >> 1];\n        else if (z4 < 0) p5 = wnd[j4][-z4 - 1 >> 1].neg();\n        if (p5.type === \"affine\") acc = acc.mixedAdd(p5);\n        else acc = acc.add(p5);\n      }\n    }\n    for (i5 = 0; i5 < len; i5++) wnd[i5] = null;\n    if (jacobianResult) return acc;\n    else return acc.toP();\n  };\n  function BasePoint(curve, type) {\n    this.curve = curve;\n    this.type = type;\n    this.precomputed = null;\n  }\n  BaseCurve.BasePoint = BasePoint;\n  BasePoint.prototype.eq = function eq() {\n    throw new Error(\"Not implemented\");\n  };\n  BasePoint.prototype.validate = function validate() {\n    return this.curve.validate(this);\n  };\n  BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n    bytes = utils.toArray(bytes, enc);\n    var len = this.p.byteLength();\n    if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) {\n      if (bytes[0] === 6) assert2(bytes[bytes.length - 1] % 2 === 0);\n      else if (bytes[0] === 7) assert2(bytes[bytes.length - 1] % 2 === 1);\n      var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n      return res;\n    } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) {\n      return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3);\n    }\n    throw new Error(\"Unknown point format\");\n  };\n  BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n    return this.encode(enc, true);\n  };\n  BasePoint.prototype._encode = function _encode(compact) {\n    var len = this.curve.p.byteLength();\n    var x4 = this.getX().toArray(\"be\", len);\n    if (compact) return [this.getY().isEven() ? 2 : 3].concat(x4);\n    return [4].concat(x4, this.getY().toArray(\"be\", len));\n  };\n  BasePoint.prototype.encode = function encode(enc, compact) {\n    return utils.encode(this._encode(compact), enc);\n  };\n  BasePoint.prototype.precompute = function precompute(power) {\n    if (this.precomputed) return this;\n    var precomputed = {\n      doubles: null,\n      naf: null,\n      beta: null\n    };\n    precomputed.naf = this._getNAFPoints(8);\n    precomputed.doubles = this._getDoubles(4, power);\n    precomputed.beta = this._getBeta();\n    this.precomputed = precomputed;\n    return this;\n  };\n  BasePoint.prototype._hasDoubles = function _hasDoubles(k4) {\n    if (!this.precomputed) return false;\n    var doubles = this.precomputed.doubles;\n    if (!doubles) return false;\n    return doubles.points.length >= Math.ceil((k4.bitLength() + 1) / doubles.step);\n  };\n  BasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n    if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n    var doubles = [this];\n    var acc = this;\n    for (var i5 = 0; i5 < power; i5 += step) {\n      for (var j4 = 0; j4 < step; j4++) acc = acc.dbl();\n      doubles.push(acc);\n    }\n    return {\n      step,\n      points: doubles\n    };\n  };\n  BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n    if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n    var res = [this];\n    var max = (1 << wnd) - 1;\n    var dbl = max === 1 ? null : this.dbl();\n    for (var i5 = 1; i5 < max; i5++) res[i5] = res[i5 - 1].add(dbl);\n    return {\n      wnd,\n      points: res\n    };\n  };\n  BasePoint.prototype._getBeta = function _getBeta() {\n    return null;\n  };\n  BasePoint.prototype.dblp = function dblp(k4) {\n    var r5 = this;\n    for (var i5 = 0; i5 < k4; i5++) r5 = r5.dbl();\n    return r5;\n  };\n  return exports$S$1;\n}\nvar exports$R$1 = {};\nvar _dewExec$R$1 = false;\nfunction dew$R$1() {\n  if (_dewExec$R$1) return exports$R$1;\n  _dewExec$R$1 = true;\n  var utils = dew$T$1();\n  var BN = dew$V$1();\n  var inherits = dew$f$2();\n  var Base = dew$S$1();\n  var assert2 = utils.assert;\n  function ShortCurve(conf) {\n    Base.call(this, \"short\", conf);\n    this.a = new BN(conf.a, 16).toRed(this.red);\n    this.b = new BN(conf.b, 16).toRed(this.red);\n    this.tinv = this.two.redInvm();\n    this.zeroA = this.a.fromRed().cmpn(0) === 0;\n    this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n    this.endo = this._getEndomorphism(conf);\n    this._endoWnafT1 = new Array(4);\n    this._endoWnafT2 = new Array(4);\n  }\n  inherits(ShortCurve, Base);\n  exports$R$1 = ShortCurve;\n  ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n    if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return;\n    var beta;\n    var lambda;\n    if (conf.beta) {\n      beta = new BN(conf.beta, 16).toRed(this.red);\n    } else {\n      var betas = this._getEndoRoots(this.p);\n      beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n      beta = beta.toRed(this.red);\n    }\n    if (conf.lambda) {\n      lambda = new BN(conf.lambda, 16);\n    } else {\n      var lambdas = this._getEndoRoots(this.n);\n      if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n        lambda = lambdas[0];\n      } else {\n        lambda = lambdas[1];\n        assert2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n      }\n    }\n    var basis;\n    if (conf.basis) {\n      basis = conf.basis.map(function(vec) {\n        return {\n          a: new BN(vec.a, 16),\n          b: new BN(vec.b, 16)\n        };\n      });\n    } else {\n      basis = this._getEndoBasis(lambda);\n    }\n    return {\n      beta,\n      lambda,\n      basis\n    };\n  };\n  ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n    var red = num === this.p ? this.red : BN.mont(num);\n    var tinv = new BN(2).toRed(red).redInvm();\n    var ntinv = tinv.redNeg();\n    var s5 = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n    var l1 = ntinv.redAdd(s5).fromRed();\n    var l22 = ntinv.redSub(s5).fromRed();\n    return [l1, l22];\n  };\n  ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n    var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n    var u5 = lambda;\n    var v5 = this.n.clone();\n    var x1 = new BN(1);\n    var y1 = new BN(0);\n    var x22 = new BN(0);\n    var y22 = new BN(1);\n    var a0;\n    var b0;\n    var a1;\n    var b1;\n    var a22;\n    var b22;\n    var prevR;\n    var i5 = 0;\n    var r5;\n    var x4;\n    while (u5.cmpn(0) !== 0) {\n      var q3 = v5.div(u5);\n      r5 = v5.sub(q3.mul(u5));\n      x4 = x22.sub(q3.mul(x1));\n      var y5 = y22.sub(q3.mul(y1));\n      if (!a1 && r5.cmp(aprxSqrt) < 0) {\n        a0 = prevR.neg();\n        b0 = x1;\n        a1 = r5.neg();\n        b1 = x4;\n      } else if (a1 && ++i5 === 2) {\n        break;\n      }\n      prevR = r5;\n      v5 = u5;\n      u5 = r5;\n      x22 = x1;\n      x1 = x4;\n      y22 = y1;\n      y1 = y5;\n    }\n    a22 = r5.neg();\n    b22 = x4;\n    var len1 = a1.sqr().add(b1.sqr());\n    var len2 = a22.sqr().add(b22.sqr());\n    if (len2.cmp(len1) >= 0) {\n      a22 = a0;\n      b22 = b0;\n    }\n    if (a1.negative) {\n      a1 = a1.neg();\n      b1 = b1.neg();\n    }\n    if (a22.negative) {\n      a22 = a22.neg();\n      b22 = b22.neg();\n    }\n    return [{\n      a: a1,\n      b: b1\n    }, {\n      a: a22,\n      b: b22\n    }];\n  };\n  ShortCurve.prototype._endoSplit = function _endoSplit(k4) {\n    var basis = this.endo.basis;\n    var v1 = basis[0];\n    var v22 = basis[1];\n    var c1 = v22.b.mul(k4).divRound(this.n);\n    var c22 = v1.b.neg().mul(k4).divRound(this.n);\n    var p1 = c1.mul(v1.a);\n    var p22 = c22.mul(v22.a);\n    var q1 = c1.mul(v1.b);\n    var q22 = c22.mul(v22.b);\n    var k1 = k4.sub(p1).sub(p22);\n    var k22 = q1.add(q22).neg();\n    return {\n      k1,\n      k2: k22\n    };\n  };\n  ShortCurve.prototype.pointFromX = function pointFromX(x4, odd) {\n    x4 = new BN(x4, 16);\n    if (!x4.red) x4 = x4.toRed(this.red);\n    var y22 = x4.redSqr().redMul(x4).redIAdd(x4.redMul(this.a)).redIAdd(this.b);\n    var y5 = y22.redSqrt();\n    if (y5.redSqr().redSub(y22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    var isOdd = y5.fromRed().isOdd();\n    if (odd && !isOdd || !odd && isOdd) y5 = y5.redNeg();\n    return this.point(x4, y5);\n  };\n  ShortCurve.prototype.validate = function validate(point) {\n    if (point.inf) return true;\n    var x4 = point.x;\n    var y5 = point.y;\n    var ax = this.a.redMul(x4);\n    var rhs = x4.redSqr().redMul(x4).redIAdd(ax).redIAdd(this.b);\n    return y5.redSqr().redISub(rhs).cmpn(0) === 0;\n  };\n  ShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n    var npoints = this._endoWnafT1;\n    var ncoeffs = this._endoWnafT2;\n    for (var i5 = 0; i5 < points.length; i5++) {\n      var split = this._endoSplit(coeffs[i5]);\n      var p5 = points[i5];\n      var beta = p5._getBeta();\n      if (split.k1.negative) {\n        split.k1.ineg();\n        p5 = p5.neg(true);\n      }\n      if (split.k2.negative) {\n        split.k2.ineg();\n        beta = beta.neg(true);\n      }\n      npoints[i5 * 2] = p5;\n      npoints[i5 * 2 + 1] = beta;\n      ncoeffs[i5 * 2] = split.k1;\n      ncoeffs[i5 * 2 + 1] = split.k2;\n    }\n    var res = this._wnafMulAdd(1, npoints, ncoeffs, i5 * 2, jacobianResult);\n    for (var j4 = 0; j4 < i5 * 2; j4++) {\n      npoints[j4] = null;\n      ncoeffs[j4] = null;\n    }\n    return res;\n  };\n  function Point(curve, x4, y5, isRed) {\n    Base.BasePoint.call(this, curve, \"affine\");\n    if (x4 === null && y5 === null) {\n      this.x = null;\n      this.y = null;\n      this.inf = true;\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      if (isRed) {\n        this.x.forceRed(this.curve.red);\n        this.y.forceRed(this.curve.red);\n      }\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n      this.inf = false;\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  ShortCurve.prototype.point = function point(x4, y5, isRed) {\n    return new Point(this, x4, y5, isRed);\n  };\n  ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n    return Point.fromJSON(this, obj, red);\n  };\n  Point.prototype._getBeta = function _getBeta() {\n    if (!this.curve.endo) return;\n    var pre = this.precomputed;\n    if (pre && pre.beta) return pre.beta;\n    var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n    if (pre) {\n      var curve = this.curve;\n      var endoMul = function(p5) {\n        return curve.point(p5.x.redMul(curve.endo.beta), p5.y);\n      };\n      pre.beta = beta;\n      beta.precomputed = {\n        beta: null,\n        naf: pre.naf && {\n          wnd: pre.naf.wnd,\n          points: pre.naf.points.map(endoMul)\n        },\n        doubles: pre.doubles && {\n          step: pre.doubles.step,\n          points: pre.doubles.points.map(endoMul)\n        }\n      };\n    }\n    return beta;\n  };\n  Point.prototype.toJSON = function toJSON() {\n    if (!this.precomputed) return [this.x, this.y];\n    return [this.x, this.y, this.precomputed && {\n      doubles: this.precomputed.doubles && {\n        step: this.precomputed.doubles.step,\n        points: this.precomputed.doubles.points.slice(1)\n      },\n      naf: this.precomputed.naf && {\n        wnd: this.precomputed.naf.wnd,\n        points: this.precomputed.naf.points.slice(1)\n      }\n    }];\n  };\n  Point.fromJSON = function fromJSON(curve, obj, red) {\n    if (typeof obj === \"string\") obj = JSON.parse(obj);\n    var res = curve.point(obj[0], obj[1], red);\n    if (!obj[2]) return res;\n    function obj2point(obj2) {\n      return curve.point(obj2[0], obj2[1], red);\n    }\n    var pre = obj[2];\n    res.precomputed = {\n      beta: null,\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: [res].concat(pre.doubles.points.map(obj2point))\n      },\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: [res].concat(pre.naf.points.map(obj2point))\n      }\n    };\n    return res;\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.inf;\n  };\n  Point.prototype.add = function add(p5) {\n    if (this.inf) return p5;\n    if (p5.inf) return this;\n    if (this.eq(p5)) return this.dbl();\n    if (this.neg().eq(p5)) return this.curve.point(null, null);\n    if (this.x.cmp(p5.x) === 0) return this.curve.point(null, null);\n    var c5 = this.y.redSub(p5.y);\n    if (c5.cmpn(0) !== 0) c5 = c5.redMul(this.x.redSub(p5.x).redInvm());\n    var nx = c5.redSqr().redISub(this.x).redISub(p5.x);\n    var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n    return this.curve.point(nx, ny);\n  };\n  Point.prototype.dbl = function dbl() {\n    if (this.inf) return this;\n    var ys1 = this.y.redAdd(this.y);\n    if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n    var a5 = this.curve.a;\n    var x22 = this.x.redSqr();\n    var dyinv = ys1.redInvm();\n    var c5 = x22.redAdd(x22).redIAdd(x22).redIAdd(a5).redMul(dyinv);\n    var nx = c5.redSqr().redISub(this.x.redAdd(this.x));\n    var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n    return this.curve.point(nx, ny);\n  };\n  Point.prototype.getX = function getX() {\n    return this.x.fromRed();\n  };\n  Point.prototype.getY = function getY() {\n    return this.y.fromRed();\n  };\n  Point.prototype.mul = function mul(k4) {\n    k4 = new BN(k4, 16);\n    if (this.isInfinity()) return this;\n    else if (this._hasDoubles(k4)) return this.curve._fixedNafMul(this, k4);\n    else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k4]);\n    else return this.curve._wnafMul(this, k4);\n  };\n  Point.prototype.mulAdd = function mulAdd(k1, p22, k22) {\n    var points = [this, p22];\n    var coeffs = [k1, k22];\n    if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);\n    else return this.curve._wnafMulAdd(1, points, coeffs, 2);\n  };\n  Point.prototype.jmulAdd = function jmulAdd(k1, p22, k22) {\n    var points = [this, p22];\n    var coeffs = [k1, k22];\n    if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);\n    else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n  };\n  Point.prototype.eq = function eq(p5) {\n    return this === p5 || this.inf === p5.inf && (this.inf || this.x.cmp(p5.x) === 0 && this.y.cmp(p5.y) === 0);\n  };\n  Point.prototype.neg = function neg(_precompute) {\n    if (this.inf) return this;\n    var res = this.curve.point(this.x, this.y.redNeg());\n    if (_precompute && this.precomputed) {\n      var pre = this.precomputed;\n      var negate = function(p5) {\n        return p5.neg();\n      };\n      res.precomputed = {\n        naf: pre.naf && {\n          wnd: pre.naf.wnd,\n          points: pre.naf.points.map(negate)\n        },\n        doubles: pre.doubles && {\n          step: pre.doubles.step,\n          points: pre.doubles.points.map(negate)\n        }\n      };\n    }\n    return res;\n  };\n  Point.prototype.toJ = function toJ() {\n    if (this.inf) return this.curve.jpoint(null, null, null);\n    var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n    return res;\n  };\n  function JPoint(curve, x4, y5, z4) {\n    Base.BasePoint.call(this, curve, \"jacobian\");\n    if (x4 === null && y5 === null && z4 === null) {\n      this.x = this.curve.one;\n      this.y = this.curve.one;\n      this.z = new BN(0);\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      this.z = new BN(z4, 16);\n    }\n    if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n    if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n    this.zOne = this.z === this.curve.one;\n  }\n  inherits(JPoint, Base.BasePoint);\n  ShortCurve.prototype.jpoint = function jpoint(x4, y5, z4) {\n    return new JPoint(this, x4, y5, z4);\n  };\n  JPoint.prototype.toP = function toP() {\n    if (this.isInfinity()) return this.curve.point(null, null);\n    var zinv = this.z.redInvm();\n    var zinv2 = zinv.redSqr();\n    var ax = this.x.redMul(zinv2);\n    var ay = this.y.redMul(zinv2).redMul(zinv);\n    return this.curve.point(ax, ay);\n  };\n  JPoint.prototype.neg = function neg() {\n    return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n  };\n  JPoint.prototype.add = function add(p5) {\n    if (this.isInfinity()) return p5;\n    if (p5.isInfinity()) return this;\n    var pz2 = p5.z.redSqr();\n    var z22 = this.z.redSqr();\n    var u1 = this.x.redMul(pz2);\n    var u22 = p5.x.redMul(z22);\n    var s1 = this.y.redMul(pz2.redMul(p5.z));\n    var s22 = p5.y.redMul(z22.redMul(this.z));\n    var h5 = u1.redSub(u22);\n    var r5 = s1.redSub(s22);\n    if (h5.cmpn(0) === 0) {\n      if (r5.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);\n      else return this.dbl();\n    }\n    var h22 = h5.redSqr();\n    var h32 = h22.redMul(h5);\n    var v5 = u1.redMul(h22);\n    var nx = r5.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n    var ny = r5.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n    var nz = this.z.redMul(p5.z).redMul(h5);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.mixedAdd = function mixedAdd(p5) {\n    if (this.isInfinity()) return p5.toJ();\n    if (p5.isInfinity()) return this;\n    var z22 = this.z.redSqr();\n    var u1 = this.x;\n    var u22 = p5.x.redMul(z22);\n    var s1 = this.y;\n    var s22 = p5.y.redMul(z22).redMul(this.z);\n    var h5 = u1.redSub(u22);\n    var r5 = s1.redSub(s22);\n    if (h5.cmpn(0) === 0) {\n      if (r5.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);\n      else return this.dbl();\n    }\n    var h22 = h5.redSqr();\n    var h32 = h22.redMul(h5);\n    var v5 = u1.redMul(h22);\n    var nx = r5.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n    var ny = r5.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n    var nz = this.z.redMul(h5);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.dblp = function dblp(pow) {\n    if (pow === 0) return this;\n    if (this.isInfinity()) return this;\n    if (!pow) return this.dbl();\n    var i5;\n    if (this.curve.zeroA || this.curve.threeA) {\n      var r5 = this;\n      for (i5 = 0; i5 < pow; i5++) r5 = r5.dbl();\n      return r5;\n    }\n    var a5 = this.curve.a;\n    var tinv = this.curve.tinv;\n    var jx = this.x;\n    var jy = this.y;\n    var jz = this.z;\n    var jz4 = jz.redSqr().redSqr();\n    var jyd = jy.redAdd(jy);\n    for (i5 = 0; i5 < pow; i5++) {\n      var jx2 = jx.redSqr();\n      var jyd2 = jyd.redSqr();\n      var jyd4 = jyd2.redSqr();\n      var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a5.redMul(jz4));\n      var t1 = jx.redMul(jyd2);\n      var nx = c5.redSqr().redISub(t1.redAdd(t1));\n      var t22 = t1.redISub(nx);\n      var dny = c5.redMul(t22);\n      dny = dny.redIAdd(dny).redISub(jyd4);\n      var nz = jyd.redMul(jz);\n      if (i5 + 1 < pow) jz4 = jz4.redMul(jyd4);\n      jx = nx;\n      jz = nz;\n      jyd = dny;\n    }\n    return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n  };\n  JPoint.prototype.dbl = function dbl() {\n    if (this.isInfinity()) return this;\n    if (this.curve.zeroA) return this._zeroDbl();\n    else if (this.curve.threeA) return this._threeDbl();\n    else return this._dbl();\n  };\n  JPoint.prototype._zeroDbl = function _zeroDbl() {\n    var nx;\n    var ny;\n    var nz;\n    if (this.zOne) {\n      var xx = this.x.redSqr();\n      var yy = this.y.redSqr();\n      var yyyy = yy.redSqr();\n      var s5 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n      s5 = s5.redIAdd(s5);\n      var m4 = xx.redAdd(xx).redIAdd(xx);\n      var t5 = m4.redSqr().redISub(s5).redISub(s5);\n      var yyyy8 = yyyy.redIAdd(yyyy);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      nx = t5;\n      ny = m4.redMul(s5.redISub(t5)).redISub(yyyy8);\n      nz = this.y.redAdd(this.y);\n    } else {\n      var a5 = this.x.redSqr();\n      var b4 = this.y.redSqr();\n      var c5 = b4.redSqr();\n      var d4 = this.x.redAdd(b4).redSqr().redISub(a5).redISub(c5);\n      d4 = d4.redIAdd(d4);\n      var e7 = a5.redAdd(a5).redIAdd(a5);\n      var f6 = e7.redSqr();\n      var c8 = c5.redIAdd(c5);\n      c8 = c8.redIAdd(c8);\n      c8 = c8.redIAdd(c8);\n      nx = f6.redISub(d4).redISub(d4);\n      ny = e7.redMul(d4.redISub(nx)).redISub(c8);\n      nz = this.y.redMul(this.z);\n      nz = nz.redIAdd(nz);\n    }\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype._threeDbl = function _threeDbl() {\n    var nx;\n    var ny;\n    var nz;\n    if (this.zOne) {\n      var xx = this.x.redSqr();\n      var yy = this.y.redSqr();\n      var yyyy = yy.redSqr();\n      var s5 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n      s5 = s5.redIAdd(s5);\n      var m4 = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n      var t5 = m4.redSqr().redISub(s5).redISub(s5);\n      nx = t5;\n      var yyyy8 = yyyy.redIAdd(yyyy);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      ny = m4.redMul(s5.redISub(t5)).redISub(yyyy8);\n      nz = this.y.redAdd(this.y);\n    } else {\n      var delta = this.z.redSqr();\n      var gamma = this.y.redSqr();\n      var beta = this.x.redMul(gamma);\n      var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n      alpha = alpha.redAdd(alpha).redIAdd(alpha);\n      var beta4 = beta.redIAdd(beta);\n      beta4 = beta4.redIAdd(beta4);\n      var beta8 = beta4.redAdd(beta4);\n      nx = alpha.redSqr().redISub(beta8);\n      nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n      var ggamma8 = gamma.redSqr();\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n    }\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype._dbl = function _dbl() {\n    var a5 = this.curve.a;\n    var jx = this.x;\n    var jy = this.y;\n    var jz = this.z;\n    var jz4 = jz.redSqr().redSqr();\n    var jx2 = jx.redSqr();\n    var jy2 = jy.redSqr();\n    var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a5.redMul(jz4));\n    var jxd4 = jx.redAdd(jx);\n    jxd4 = jxd4.redIAdd(jxd4);\n    var t1 = jxd4.redMul(jy2);\n    var nx = c5.redSqr().redISub(t1.redAdd(t1));\n    var t22 = t1.redISub(nx);\n    var jyd8 = jy2.redSqr();\n    jyd8 = jyd8.redIAdd(jyd8);\n    jyd8 = jyd8.redIAdd(jyd8);\n    jyd8 = jyd8.redIAdd(jyd8);\n    var ny = c5.redMul(t22).redISub(jyd8);\n    var nz = jy.redAdd(jy).redMul(jz);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.trpl = function trpl() {\n    if (!this.curve.zeroA) return this.dbl().add(this);\n    var xx = this.x.redSqr();\n    var yy = this.y.redSqr();\n    var zz = this.z.redSqr();\n    var yyyy = yy.redSqr();\n    var m4 = xx.redAdd(xx).redIAdd(xx);\n    var mm = m4.redSqr();\n    var e7 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    e7 = e7.redIAdd(e7);\n    e7 = e7.redAdd(e7).redIAdd(e7);\n    e7 = e7.redISub(mm);\n    var ee3 = e7.redSqr();\n    var t5 = yyyy.redIAdd(yyyy);\n    t5 = t5.redIAdd(t5);\n    t5 = t5.redIAdd(t5);\n    t5 = t5.redIAdd(t5);\n    var u5 = m4.redIAdd(e7).redSqr().redISub(mm).redISub(ee3).redISub(t5);\n    var yyu4 = yy.redMul(u5);\n    yyu4 = yyu4.redIAdd(yyu4);\n    yyu4 = yyu4.redIAdd(yyu4);\n    var nx = this.x.redMul(ee3).redISub(yyu4);\n    nx = nx.redIAdd(nx);\n    nx = nx.redIAdd(nx);\n    var ny = this.y.redMul(u5.redMul(t5.redISub(u5)).redISub(e7.redMul(ee3)));\n    ny = ny.redIAdd(ny);\n    ny = ny.redIAdd(ny);\n    ny = ny.redIAdd(ny);\n    var nz = this.z.redAdd(e7).redSqr().redISub(zz).redISub(ee3);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.mul = function mul(k4, kbase) {\n    k4 = new BN(k4, kbase);\n    return this.curve._wnafMul(this, k4);\n  };\n  JPoint.prototype.eq = function eq(p5) {\n    if (p5.type === \"affine\") return this.eq(p5.toJ());\n    if (this === p5) return true;\n    var z22 = this.z.redSqr();\n    var pz2 = p5.z.redSqr();\n    if (this.x.redMul(pz2).redISub(p5.x.redMul(z22)).cmpn(0) !== 0) return false;\n    var z32 = z22.redMul(this.z);\n    var pz3 = pz2.redMul(p5.z);\n    return this.y.redMul(pz3).redISub(p5.y.redMul(z32)).cmpn(0) === 0;\n  };\n  JPoint.prototype.eqXToP = function eqXToP(x4) {\n    var zs = this.z.redSqr();\n    var rx = x4.toRed(this.curve.red).redMul(zs);\n    if (this.x.cmp(rx) === 0) return true;\n    var xc = x4.clone();\n    var t5 = this.curve.redN.redMul(zs);\n    for (; ; ) {\n      xc.iadd(this.curve.n);\n      if (xc.cmp(this.curve.p) >= 0) return false;\n      rx.redIAdd(t5);\n      if (this.x.cmp(rx) === 0) return true;\n    }\n  };\n  JPoint.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC JPoint Infinity>\";\n    return \"<EC JPoint x: \" + this.x.toString(16, 2) + \" y: \" + this.y.toString(16, 2) + \" z: \" + this.z.toString(16, 2) + \">\";\n  };\n  JPoint.prototype.isInfinity = function isInfinity() {\n    return this.z.cmpn(0) === 0;\n  };\n  return exports$R$1;\n}\nvar exports$Q$1 = {};\nvar _dewExec$Q$1 = false;\nfunction dew$Q$1() {\n  if (_dewExec$Q$1) return exports$Q$1;\n  _dewExec$Q$1 = true;\n  var BN = dew$V$1();\n  var inherits = dew$f$2();\n  var Base = dew$S$1();\n  var utils = dew$T$1();\n  function MontCurve(conf) {\n    Base.call(this, \"mont\", conf);\n    this.a = new BN(conf.a, 16).toRed(this.red);\n    this.b = new BN(conf.b, 16).toRed(this.red);\n    this.i4 = new BN(4).toRed(this.red).redInvm();\n    this.two = new BN(2).toRed(this.red);\n    this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n  }\n  inherits(MontCurve, Base);\n  exports$Q$1 = MontCurve;\n  MontCurve.prototype.validate = function validate(point) {\n    var x4 = point.normalize().x;\n    var x22 = x4.redSqr();\n    var rhs = x22.redMul(x4).redAdd(x22.redMul(this.a)).redAdd(x4);\n    var y5 = rhs.redSqrt();\n    return y5.redSqr().cmp(rhs) === 0;\n  };\n  function Point(curve, x4, z4) {\n    Base.BasePoint.call(this, curve, \"projective\");\n    if (x4 === null && z4 === null) {\n      this.x = this.curve.one;\n      this.z = this.curve.zero;\n    } else {\n      this.x = new BN(x4, 16);\n      this.z = new BN(z4, 16);\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n    return this.point(utils.toArray(bytes, enc), 1);\n  };\n  MontCurve.prototype.point = function point(x4, z4) {\n    return new Point(this, x4, z4);\n  };\n  MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n    return Point.fromJSON(this, obj);\n  };\n  Point.prototype.precompute = function precompute() {\n  };\n  Point.prototype._encode = function _encode() {\n    return this.getX().toArray(\"be\", this.curve.p.byteLength());\n  };\n  Point.fromJSON = function fromJSON(curve, obj) {\n    return new Point(curve, obj[0], obj[1] || curve.one);\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.z.cmpn(0) === 0;\n  };\n  Point.prototype.dbl = function dbl() {\n    var a5 = this.x.redAdd(this.z);\n    var aa = a5.redSqr();\n    var b4 = this.x.redSub(this.z);\n    var bb = b4.redSqr();\n    var c5 = aa.redSub(bb);\n    var nx = aa.redMul(bb);\n    var nz = c5.redMul(bb.redAdd(this.curve.a24.redMul(c5)));\n    return this.curve.point(nx, nz);\n  };\n  Point.prototype.add = function add() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.diffAdd = function diffAdd(p5, diff) {\n    var a5 = this.x.redAdd(this.z);\n    var b4 = this.x.redSub(this.z);\n    var c5 = p5.x.redAdd(p5.z);\n    var d4 = p5.x.redSub(p5.z);\n    var da = d4.redMul(a5);\n    var cb = c5.redMul(b4);\n    var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n    var nz = diff.x.redMul(da.redISub(cb).redSqr());\n    return this.curve.point(nx, nz);\n  };\n  Point.prototype.mul = function mul(k4) {\n    var t5 = k4.clone();\n    var a5 = this;\n    var b4 = this.curve.point(null, null);\n    var c5 = this;\n    for (var bits = []; t5.cmpn(0) !== 0; t5.iushrn(1)) bits.push(t5.andln(1));\n    for (var i5 = bits.length - 1; i5 >= 0; i5--) {\n      if (bits[i5] === 0) {\n        a5 = a5.diffAdd(b4, c5);\n        b4 = b4.dbl();\n      } else {\n        b4 = a5.diffAdd(b4, c5);\n        a5 = a5.dbl();\n      }\n    }\n    return b4;\n  };\n  Point.prototype.mulAdd = function mulAdd() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.jumlAdd = function jumlAdd() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.eq = function eq(other) {\n    return this.getX().cmp(other.getX()) === 0;\n  };\n  Point.prototype.normalize = function normalize() {\n    this.x = this.x.redMul(this.z.redInvm());\n    this.z = this.curve.one;\n    return this;\n  };\n  Point.prototype.getX = function getX() {\n    this.normalize();\n    return this.x.fromRed();\n  };\n  return exports$Q$1;\n}\nvar exports$P$1 = {};\nvar _dewExec$P$1 = false;\nfunction dew$P$1() {\n  if (_dewExec$P$1) return exports$P$1;\n  _dewExec$P$1 = true;\n  var utils = dew$T$1();\n  var BN = dew$V$1();\n  var inherits = dew$f$2();\n  var Base = dew$S$1();\n  var assert2 = utils.assert;\n  function EdwardsCurve(conf) {\n    this.twisted = (conf.a | 0) !== 1;\n    this.mOneA = this.twisted && (conf.a | 0) === -1;\n    this.extended = this.mOneA;\n    Base.call(this, \"edwards\", conf);\n    this.a = new BN(conf.a, 16).umod(this.red.m);\n    this.a = this.a.toRed(this.red);\n    this.c = new BN(conf.c, 16).toRed(this.red);\n    this.c2 = this.c.redSqr();\n    this.d = new BN(conf.d, 16).toRed(this.red);\n    this.dd = this.d.redAdd(this.d);\n    assert2(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n    this.oneC = (conf.c | 0) === 1;\n  }\n  inherits(EdwardsCurve, Base);\n  exports$P$1 = EdwardsCurve;\n  EdwardsCurve.prototype._mulA = function _mulA(num) {\n    if (this.mOneA) return num.redNeg();\n    else return this.a.redMul(num);\n  };\n  EdwardsCurve.prototype._mulC = function _mulC(num) {\n    if (this.oneC) return num;\n    else return this.c.redMul(num);\n  };\n  EdwardsCurve.prototype.jpoint = function jpoint(x4, y5, z4, t5) {\n    return this.point(x4, y5, z4, t5);\n  };\n  EdwardsCurve.prototype.pointFromX = function pointFromX(x4, odd) {\n    x4 = new BN(x4, 16);\n    if (!x4.red) x4 = x4.toRed(this.red);\n    var x22 = x4.redSqr();\n    var rhs = this.c2.redSub(this.a.redMul(x22));\n    var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x22));\n    var y22 = rhs.redMul(lhs.redInvm());\n    var y5 = y22.redSqrt();\n    if (y5.redSqr().redSub(y22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    var isOdd = y5.fromRed().isOdd();\n    if (odd && !isOdd || !odd && isOdd) y5 = y5.redNeg();\n    return this.point(x4, y5);\n  };\n  EdwardsCurve.prototype.pointFromY = function pointFromY(y5, odd) {\n    y5 = new BN(y5, 16);\n    if (!y5.red) y5 = y5.toRed(this.red);\n    var y22 = y5.redSqr();\n    var lhs = y22.redSub(this.c2);\n    var rhs = y22.redMul(this.d).redMul(this.c2).redSub(this.a);\n    var x22 = lhs.redMul(rhs.redInvm());\n    if (x22.cmp(this.zero) === 0) {\n      if (odd) throw new Error(\"invalid point\");\n      else return this.point(this.zero, y5);\n    }\n    var x4 = x22.redSqrt();\n    if (x4.redSqr().redSub(x22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    if (x4.fromRed().isOdd() !== odd) x4 = x4.redNeg();\n    return this.point(x4, y5);\n  };\n  EdwardsCurve.prototype.validate = function validate(point) {\n    if (point.isInfinity()) return true;\n    point.normalize();\n    var x22 = point.x.redSqr();\n    var y22 = point.y.redSqr();\n    var lhs = x22.redMul(this.a).redAdd(y22);\n    var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x22).redMul(y22)));\n    return lhs.cmp(rhs) === 0;\n  };\n  function Point(curve, x4, y5, z4, t5) {\n    Base.BasePoint.call(this, curve, \"projective\");\n    if (x4 === null && y5 === null && z4 === null) {\n      this.x = this.curve.zero;\n      this.y = this.curve.one;\n      this.z = this.curve.one;\n      this.t = this.curve.zero;\n      this.zOne = true;\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      this.z = z4 ? new BN(z4, 16) : this.curve.one;\n      this.t = t5 && new BN(t5, 16);\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n      if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n      if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n      this.zOne = this.z === this.curve.one;\n      if (this.curve.extended && !this.t) {\n        this.t = this.x.redMul(this.y);\n        if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n      }\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n    return Point.fromJSON(this, obj);\n  };\n  EdwardsCurve.prototype.point = function point(x4, y5, z4, t5) {\n    return new Point(this, x4, y5, z4, t5);\n  };\n  Point.fromJSON = function fromJSON(curve, obj) {\n    return new Point(curve, obj[0], obj[1], obj[2]);\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n  };\n  Point.prototype._extDbl = function _extDbl() {\n    var a5 = this.x.redSqr();\n    var b4 = this.y.redSqr();\n    var c5 = this.z.redSqr();\n    c5 = c5.redIAdd(c5);\n    var d4 = this.curve._mulA(a5);\n    var e7 = this.x.redAdd(this.y).redSqr().redISub(a5).redISub(b4);\n    var g4 = d4.redAdd(b4);\n    var f6 = g4.redSub(c5);\n    var h5 = d4.redSub(b4);\n    var nx = e7.redMul(f6);\n    var ny = g4.redMul(h5);\n    var nt2 = e7.redMul(h5);\n    var nz = f6.redMul(g4);\n    return this.curve.point(nx, ny, nz, nt2);\n  };\n  Point.prototype._projDbl = function _projDbl() {\n    var b4 = this.x.redAdd(this.y).redSqr();\n    var c5 = this.x.redSqr();\n    var d4 = this.y.redSqr();\n    var nx;\n    var ny;\n    var nz;\n    var e7;\n    var h5;\n    var j4;\n    if (this.curve.twisted) {\n      e7 = this.curve._mulA(c5);\n      var f6 = e7.redAdd(d4);\n      if (this.zOne) {\n        nx = b4.redSub(c5).redSub(d4).redMul(f6.redSub(this.curve.two));\n        ny = f6.redMul(e7.redSub(d4));\n        nz = f6.redSqr().redSub(f6).redSub(f6);\n      } else {\n        h5 = this.z.redSqr();\n        j4 = f6.redSub(h5).redISub(h5);\n        nx = b4.redSub(c5).redISub(d4).redMul(j4);\n        ny = f6.redMul(e7.redSub(d4));\n        nz = f6.redMul(j4);\n      }\n    } else {\n      e7 = c5.redAdd(d4);\n      h5 = this.curve._mulC(this.z).redSqr();\n      j4 = e7.redSub(h5).redSub(h5);\n      nx = this.curve._mulC(b4.redISub(e7)).redMul(j4);\n      ny = this.curve._mulC(e7).redMul(c5.redISub(d4));\n      nz = e7.redMul(j4);\n    }\n    return this.curve.point(nx, ny, nz);\n  };\n  Point.prototype.dbl = function dbl() {\n    if (this.isInfinity()) return this;\n    if (this.curve.extended) return this._extDbl();\n    else return this._projDbl();\n  };\n  Point.prototype._extAdd = function _extAdd(p5) {\n    var a5 = this.y.redSub(this.x).redMul(p5.y.redSub(p5.x));\n    var b4 = this.y.redAdd(this.x).redMul(p5.y.redAdd(p5.x));\n    var c5 = this.t.redMul(this.curve.dd).redMul(p5.t);\n    var d4 = this.z.redMul(p5.z.redAdd(p5.z));\n    var e7 = b4.redSub(a5);\n    var f6 = d4.redSub(c5);\n    var g4 = d4.redAdd(c5);\n    var h5 = b4.redAdd(a5);\n    var nx = e7.redMul(f6);\n    var ny = g4.redMul(h5);\n    var nt2 = e7.redMul(h5);\n    var nz = f6.redMul(g4);\n    return this.curve.point(nx, ny, nz, nt2);\n  };\n  Point.prototype._projAdd = function _projAdd(p5) {\n    var a5 = this.z.redMul(p5.z);\n    var b4 = a5.redSqr();\n    var c5 = this.x.redMul(p5.x);\n    var d4 = this.y.redMul(p5.y);\n    var e7 = this.curve.d.redMul(c5).redMul(d4);\n    var f6 = b4.redSub(e7);\n    var g4 = b4.redAdd(e7);\n    var tmp = this.x.redAdd(this.y).redMul(p5.x.redAdd(p5.y)).redISub(c5).redISub(d4);\n    var nx = a5.redMul(f6).redMul(tmp);\n    var ny;\n    var nz;\n    if (this.curve.twisted) {\n      ny = a5.redMul(g4).redMul(d4.redSub(this.curve._mulA(c5)));\n      nz = f6.redMul(g4);\n    } else {\n      ny = a5.redMul(g4).redMul(d4.redSub(c5));\n      nz = this.curve._mulC(f6).redMul(g4);\n    }\n    return this.curve.point(nx, ny, nz);\n  };\n  Point.prototype.add = function add(p5) {\n    if (this.isInfinity()) return p5;\n    if (p5.isInfinity()) return this;\n    if (this.curve.extended) return this._extAdd(p5);\n    else return this._projAdd(p5);\n  };\n  Point.prototype.mul = function mul(k4) {\n    if (this._hasDoubles(k4)) return this.curve._fixedNafMul(this, k4);\n    else return this.curve._wnafMul(this, k4);\n  };\n  Point.prototype.mulAdd = function mulAdd(k1, p5, k22) {\n    return this.curve._wnafMulAdd(1, [this, p5], [k1, k22], 2, false);\n  };\n  Point.prototype.jmulAdd = function jmulAdd(k1, p5, k22) {\n    return this.curve._wnafMulAdd(1, [this, p5], [k1, k22], 2, true);\n  };\n  Point.prototype.normalize = function normalize() {\n    if (this.zOne) return this;\n    var zi = this.z.redInvm();\n    this.x = this.x.redMul(zi);\n    this.y = this.y.redMul(zi);\n    if (this.t) this.t = this.t.redMul(zi);\n    this.z = this.curve.one;\n    this.zOne = true;\n    return this;\n  };\n  Point.prototype.neg = function neg() {\n    return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n  };\n  Point.prototype.getX = function getX() {\n    this.normalize();\n    return this.x.fromRed();\n  };\n  Point.prototype.getY = function getY() {\n    this.normalize();\n    return this.y.fromRed();\n  };\n  Point.prototype.eq = function eq(other) {\n    return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n  };\n  Point.prototype.eqXToP = function eqXToP(x4) {\n    var rx = x4.toRed(this.curve.red).redMul(this.z);\n    if (this.x.cmp(rx) === 0) return true;\n    var xc = x4.clone();\n    var t5 = this.curve.redN.redMul(this.z);\n    for (; ; ) {\n      xc.iadd(this.curve.n);\n      if (xc.cmp(this.curve.p) >= 0) return false;\n      rx.redIAdd(t5);\n      if (this.x.cmp(rx) === 0) return true;\n    }\n  };\n  Point.prototype.toP = Point.prototype.normalize;\n  Point.prototype.mixedAdd = Point.prototype.add;\n  return exports$P$1;\n}\nvar exports$O$1 = {};\nvar _dewExec$O$1 = false;\nfunction dew$O$1() {\n  if (_dewExec$O$1) return exports$O$1;\n  _dewExec$O$1 = true;\n  var curve = exports$O$1;\n  curve.base = dew$S$1();\n  curve.short = dew$R$1();\n  curve.mont = dew$Q$1();\n  curve.edwards = dew$P$1();\n  return exports$O$1;\n}\nvar exports$N$1 = {};\nvar _dewExec$N$1 = false;\nfunction dew$N$1() {\n  if (_dewExec$N$1) return exports$N$1;\n  _dewExec$N$1 = true;\n  var assert2 = dew$1t();\n  var inherits = dew$f$2();\n  exports$N$1.inherits = inherits;\n  function isSurrogatePair(msg, i5) {\n    if ((msg.charCodeAt(i5) & 64512) !== 55296) {\n      return false;\n    }\n    if (i5 < 0 || i5 + 1 >= msg.length) {\n      return false;\n    }\n    return (msg.charCodeAt(i5 + 1) & 64512) === 56320;\n  }\n  function toArray(msg, enc) {\n    if (Array.isArray(msg)) return msg.slice();\n    if (!msg) return [];\n    var res = [];\n    if (typeof msg === \"string\") {\n      if (!enc) {\n        var p5 = 0;\n        for (var i5 = 0; i5 < msg.length; i5++) {\n          var c5 = msg.charCodeAt(i5);\n          if (c5 < 128) {\n            res[p5++] = c5;\n          } else if (c5 < 2048) {\n            res[p5++] = c5 >> 6 | 192;\n            res[p5++] = c5 & 63 | 128;\n          } else if (isSurrogatePair(msg, i5)) {\n            c5 = 65536 + ((c5 & 1023) << 10) + (msg.charCodeAt(++i5) & 1023);\n            res[p5++] = c5 >> 18 | 240;\n            res[p5++] = c5 >> 12 & 63 | 128;\n            res[p5++] = c5 >> 6 & 63 | 128;\n            res[p5++] = c5 & 63 | 128;\n          } else {\n            res[p5++] = c5 >> 12 | 224;\n            res[p5++] = c5 >> 6 & 63 | 128;\n            res[p5++] = c5 & 63 | 128;\n          }\n        }\n      } else if (enc === \"hex\") {\n        msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n        if (msg.length % 2 !== 0) msg = \"0\" + msg;\n        for (i5 = 0; i5 < msg.length; i5 += 2) res.push(parseInt(msg[i5] + msg[i5 + 1], 16));\n      }\n    } else {\n      for (i5 = 0; i5 < msg.length; i5++) res[i5] = msg[i5] | 0;\n    }\n    return res;\n  }\n  exports$N$1.toArray = toArray;\n  function toHex(msg) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) res += zero2(msg[i5].toString(16));\n    return res;\n  }\n  exports$N$1.toHex = toHex;\n  function htonl(w4) {\n    var res = w4 >>> 24 | w4 >>> 8 & 65280 | w4 << 8 & 16711680 | (w4 & 255) << 24;\n    return res >>> 0;\n  }\n  exports$N$1.htonl = htonl;\n  function toHex32(msg, endian) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) {\n      var w4 = msg[i5];\n      if (endian === \"little\") w4 = htonl(w4);\n      res += zero8(w4.toString(16));\n    }\n    return res;\n  }\n  exports$N$1.toHex32 = toHex32;\n  function zero2(word) {\n    if (word.length === 1) return \"0\" + word;\n    else return word;\n  }\n  exports$N$1.zero2 = zero2;\n  function zero8(word) {\n    if (word.length === 7) return \"0\" + word;\n    else if (word.length === 6) return \"00\" + word;\n    else if (word.length === 5) return \"000\" + word;\n    else if (word.length === 4) return \"0000\" + word;\n    else if (word.length === 3) return \"00000\" + word;\n    else if (word.length === 2) return \"000000\" + word;\n    else if (word.length === 1) return \"0000000\" + word;\n    else return word;\n  }\n  exports$N$1.zero8 = zero8;\n  function join32(msg, start, end, endian) {\n    var len = end - start;\n    assert2(len % 4 === 0);\n    var res = new Array(len / 4);\n    for (var i5 = 0, k4 = start; i5 < res.length; i5++, k4 += 4) {\n      var w4;\n      if (endian === \"big\") w4 = msg[k4] << 24 | msg[k4 + 1] << 16 | msg[k4 + 2] << 8 | msg[k4 + 3];\n      else w4 = msg[k4 + 3] << 24 | msg[k4 + 2] << 16 | msg[k4 + 1] << 8 | msg[k4];\n      res[i5] = w4 >>> 0;\n    }\n    return res;\n  }\n  exports$N$1.join32 = join32;\n  function split32(msg, endian) {\n    var res = new Array(msg.length * 4);\n    for (var i5 = 0, k4 = 0; i5 < msg.length; i5++, k4 += 4) {\n      var m4 = msg[i5];\n      if (endian === \"big\") {\n        res[k4] = m4 >>> 24;\n        res[k4 + 1] = m4 >>> 16 & 255;\n        res[k4 + 2] = m4 >>> 8 & 255;\n        res[k4 + 3] = m4 & 255;\n      } else {\n        res[k4 + 3] = m4 >>> 24;\n        res[k4 + 2] = m4 >>> 16 & 255;\n        res[k4 + 1] = m4 >>> 8 & 255;\n        res[k4] = m4 & 255;\n      }\n    }\n    return res;\n  }\n  exports$N$1.split32 = split32;\n  function rotr32(w4, b4) {\n    return w4 >>> b4 | w4 << 32 - b4;\n  }\n  exports$N$1.rotr32 = rotr32;\n  function rotl32(w4, b4) {\n    return w4 << b4 | w4 >>> 32 - b4;\n  }\n  exports$N$1.rotl32 = rotl32;\n  function sum32(a5, b4) {\n    return a5 + b4 >>> 0;\n  }\n  exports$N$1.sum32 = sum32;\n  function sum32_3(a5, b4, c5) {\n    return a5 + b4 + c5 >>> 0;\n  }\n  exports$N$1.sum32_3 = sum32_3;\n  function sum32_4(a5, b4, c5, d4) {\n    return a5 + b4 + c5 + d4 >>> 0;\n  }\n  exports$N$1.sum32_4 = sum32_4;\n  function sum32_5(a5, b4, c5, d4, e7) {\n    return a5 + b4 + c5 + d4 + e7 >>> 0;\n  }\n  exports$N$1.sum32_5 = sum32_5;\n  function sum64(buf, pos, ah, al) {\n    var bh = buf[pos];\n    var bl = buf[pos + 1];\n    var lo = al + bl >>> 0;\n    var hi = (lo < al ? 1 : 0) + ah + bh;\n    buf[pos] = hi >>> 0;\n    buf[pos + 1] = lo;\n  }\n  exports$N$1.sum64 = sum64;\n  function sum64_hi(ah, al, bh, bl) {\n    var lo = al + bl >>> 0;\n    var hi = (lo < al ? 1 : 0) + ah + bh;\n    return hi >>> 0;\n  }\n  exports$N$1.sum64_hi = sum64_hi;\n  function sum64_lo(ah, al, bh, bl) {\n    var lo = al + bl;\n    return lo >>> 0;\n  }\n  exports$N$1.sum64_lo = sum64_lo;\n  function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n    var carry = 0;\n    var lo = al;\n    lo = lo + bl >>> 0;\n    carry += lo < al ? 1 : 0;\n    lo = lo + cl >>> 0;\n    carry += lo < cl ? 1 : 0;\n    lo = lo + dl >>> 0;\n    carry += lo < dl ? 1 : 0;\n    var hi = ah + bh + ch + dh + carry;\n    return hi >>> 0;\n  }\n  exports$N$1.sum64_4_hi = sum64_4_hi;\n  function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n    var lo = al + bl + cl + dl;\n    return lo >>> 0;\n  }\n  exports$N$1.sum64_4_lo = sum64_4_lo;\n  function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n    var carry = 0;\n    var lo = al;\n    lo = lo + bl >>> 0;\n    carry += lo < al ? 1 : 0;\n    lo = lo + cl >>> 0;\n    carry += lo < cl ? 1 : 0;\n    lo = lo + dl >>> 0;\n    carry += lo < dl ? 1 : 0;\n    lo = lo + el >>> 0;\n    carry += lo < el ? 1 : 0;\n    var hi = ah + bh + ch + dh + eh + carry;\n    return hi >>> 0;\n  }\n  exports$N$1.sum64_5_hi = sum64_5_hi;\n  function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n    var lo = al + bl + cl + dl + el;\n    return lo >>> 0;\n  }\n  exports$N$1.sum64_5_lo = sum64_5_lo;\n  function rotr64_hi(ah, al, num) {\n    var r5 = al << 32 - num | ah >>> num;\n    return r5 >>> 0;\n  }\n  exports$N$1.rotr64_hi = rotr64_hi;\n  function rotr64_lo(ah, al, num) {\n    var r5 = ah << 32 - num | al >>> num;\n    return r5 >>> 0;\n  }\n  exports$N$1.rotr64_lo = rotr64_lo;\n  function shr64_hi(ah, al, num) {\n    return ah >>> num;\n  }\n  exports$N$1.shr64_hi = shr64_hi;\n  function shr64_lo(ah, al, num) {\n    var r5 = ah << 32 - num | al >>> num;\n    return r5 >>> 0;\n  }\n  exports$N$1.shr64_lo = shr64_lo;\n  return exports$N$1;\n}\nvar exports$M$1 = {};\nvar _dewExec$M$1 = false;\nfunction dew$M$1() {\n  if (_dewExec$M$1) return exports$M$1;\n  _dewExec$M$1 = true;\n  var utils = dew$N$1();\n  var assert2 = dew$1t();\n  function BlockHash() {\n    this.pending = null;\n    this.pendingTotal = 0;\n    this.blockSize = this.constructor.blockSize;\n    this.outSize = this.constructor.outSize;\n    this.hmacStrength = this.constructor.hmacStrength;\n    this.padLength = this.constructor.padLength / 8;\n    this.endian = \"big\";\n    this._delta8 = this.blockSize / 8;\n    this._delta32 = this.blockSize / 32;\n  }\n  exports$M$1.BlockHash = BlockHash;\n  BlockHash.prototype.update = function update(msg, enc) {\n    msg = utils.toArray(msg, enc);\n    if (!this.pending) this.pending = msg;\n    else this.pending = this.pending.concat(msg);\n    this.pendingTotal += msg.length;\n    if (this.pending.length >= this._delta8) {\n      msg = this.pending;\n      var r5 = msg.length % this._delta8;\n      this.pending = msg.slice(msg.length - r5, msg.length);\n      if (this.pending.length === 0) this.pending = null;\n      msg = utils.join32(msg, 0, msg.length - r5, this.endian);\n      for (var i5 = 0; i5 < msg.length; i5 += this._delta32) this._update(msg, i5, i5 + this._delta32);\n    }\n    return this;\n  };\n  BlockHash.prototype.digest = function digest(enc) {\n    this.update(this._pad());\n    assert2(this.pending === null);\n    return this._digest(enc);\n  };\n  BlockHash.prototype._pad = function pad() {\n    var len = this.pendingTotal;\n    var bytes = this._delta8;\n    var k4 = bytes - (len + this.padLength) % bytes;\n    var res = new Array(k4 + this.padLength);\n    res[0] = 128;\n    for (var i5 = 1; i5 < k4; i5++) res[i5] = 0;\n    len <<= 3;\n    if (this.endian === \"big\") {\n      for (var t5 = 8; t5 < this.padLength; t5++) res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = len >>> 24 & 255;\n      res[i5++] = len >>> 16 & 255;\n      res[i5++] = len >>> 8 & 255;\n      res[i5++] = len & 255;\n    } else {\n      res[i5++] = len & 255;\n      res[i5++] = len >>> 8 & 255;\n      res[i5++] = len >>> 16 & 255;\n      res[i5++] = len >>> 24 & 255;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      for (t5 = 8; t5 < this.padLength; t5++) res[i5++] = 0;\n    }\n    return res;\n  };\n  return exports$M$1;\n}\nvar exports$L$1 = {};\nvar _dewExec$L$1 = false;\nfunction dew$L$1() {\n  if (_dewExec$L$1) return exports$L$1;\n  _dewExec$L$1 = true;\n  return exports$L$1;\n}\nvar exports$K$1 = {};\nvar _dewExec$K$1 = false;\nfunction dew$K$1() {\n  if (_dewExec$K$1) return exports$K$1;\n  _dewExec$K$1 = true;\n  var utils = dew$N$1();\n  var common = dew$M$1();\n  var rotl32 = utils.rotl32;\n  var sum32 = utils.sum32;\n  var sum32_3 = utils.sum32_3;\n  var sum32_4 = utils.sum32_4;\n  var BlockHash = common.BlockHash;\n  function RIPEMD160() {\n    if (!(this instanceof RIPEMD160)) return new RIPEMD160();\n    BlockHash.call(this);\n    this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];\n    this.endian = \"little\";\n  }\n  utils.inherits(RIPEMD160, BlockHash);\n  exports$K$1.ripemd160 = RIPEMD160;\n  RIPEMD160.blockSize = 512;\n  RIPEMD160.outSize = 160;\n  RIPEMD160.hmacStrength = 192;\n  RIPEMD160.padLength = 64;\n  RIPEMD160.prototype._update = function update(msg, start) {\n    var A4 = this.h[0];\n    var B4 = this.h[1];\n    var C4 = this.h[2];\n    var D4 = this.h[3];\n    var E4 = this.h[4];\n    var Ah = A4;\n    var Bh = B4;\n    var Ch = C4;\n    var Dh = D4;\n    var Eh = E4;\n    for (var j4 = 0; j4 < 80; j4++) {\n      var T4 = sum32(rotl32(sum32_4(A4, f6(j4, B4, C4, D4), msg[r5[j4] + start], K3(j4)), s5[j4]), E4);\n      A4 = E4;\n      E4 = D4;\n      D4 = rotl32(C4, 10);\n      C4 = B4;\n      B4 = T4;\n      T4 = sum32(rotl32(sum32_4(Ah, f6(79 - j4, Bh, Ch, Dh), msg[rh[j4] + start], Kh(j4)), sh[j4]), Eh);\n      Ah = Eh;\n      Eh = Dh;\n      Dh = rotl32(Ch, 10);\n      Ch = Bh;\n      Bh = T4;\n    }\n    T4 = sum32_3(this.h[1], C4, Dh);\n    this.h[1] = sum32_3(this.h[2], D4, Eh);\n    this.h[2] = sum32_3(this.h[3], E4, Ah);\n    this.h[3] = sum32_3(this.h[4], A4, Bh);\n    this.h[4] = sum32_3(this.h[0], B4, Ch);\n    this.h[0] = T4;\n  };\n  RIPEMD160.prototype._digest = function digest(enc) {\n    if (enc === \"hex\") return utils.toHex32(this.h, \"little\");\n    else return utils.split32(this.h, \"little\");\n  };\n  function f6(j4, x4, y5, z4) {\n    if (j4 <= 15) return x4 ^ y5 ^ z4;\n    else if (j4 <= 31) return x4 & y5 | ~x4 & z4;\n    else if (j4 <= 47) return (x4 | ~y5) ^ z4;\n    else if (j4 <= 63) return x4 & z4 | y5 & ~z4;\n    else return x4 ^ (y5 | ~z4);\n  }\n  function K3(j4) {\n    if (j4 <= 15) return 0;\n    else if (j4 <= 31) return 1518500249;\n    else if (j4 <= 47) return 1859775393;\n    else if (j4 <= 63) return 2400959708;\n    else return 2840853838;\n  }\n  function Kh(j4) {\n    if (j4 <= 15) return 1352829926;\n    else if (j4 <= 31) return 1548603684;\n    else if (j4 <= 47) return 1836072691;\n    else if (j4 <= 63) return 2053994217;\n    else return 0;\n  }\n  var r5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\n  var rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\n  var s5 = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\n  var sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n  return exports$K$1;\n}\nvar exports$J$1 = {};\nvar _dewExec$J$1 = false;\nfunction dew$J$1() {\n  if (_dewExec$J$1) return exports$J$1;\n  _dewExec$J$1 = true;\n  var utils = dew$N$1();\n  var assert2 = dew$1t();\n  function Hmac2(hash, key, enc) {\n    if (!(this instanceof Hmac2)) return new Hmac2(hash, key, enc);\n    this.Hash = hash;\n    this.blockSize = hash.blockSize / 8;\n    this.outSize = hash.outSize / 8;\n    this.inner = null;\n    this.outer = null;\n    this._init(utils.toArray(key, enc));\n  }\n  exports$J$1 = Hmac2;\n  Hmac2.prototype._init = function init(key) {\n    if (key.length > this.blockSize) key = new this.Hash().update(key).digest();\n    assert2(key.length <= this.blockSize);\n    for (var i5 = key.length; i5 < this.blockSize; i5++) key.push(0);\n    for (i5 = 0; i5 < key.length; i5++) key[i5] ^= 54;\n    this.inner = new this.Hash().update(key);\n    for (i5 = 0; i5 < key.length; i5++) key[i5] ^= 106;\n    this.outer = new this.Hash().update(key);\n  };\n  Hmac2.prototype.update = function update(msg, enc) {\n    this.inner.update(msg, enc);\n    return this;\n  };\n  Hmac2.prototype.digest = function digest(enc) {\n    this.outer.update(this.inner.digest());\n    return this.outer.digest(enc);\n  };\n  return exports$J$1;\n}\nvar exports$I$1 = {};\nvar _dewExec$I$1 = false;\nfunction dew$I$1() {\n  if (_dewExec$I$1) return exports$I$1;\n  _dewExec$I$1 = true;\n  var hash = exports$I$1;\n  hash.utils = dew$N$1();\n  hash.common = dew$M$1();\n  hash.sha = dew$L$1();\n  hash.ripemd = dew$K$1();\n  hash.hmac = dew$J$1();\n  hash.sha1 = hash.sha.sha1;\n  hash.sha256 = hash.sha.sha256;\n  hash.sha224 = hash.sha.sha224;\n  hash.sha384 = hash.sha.sha384;\n  hash.sha512 = hash.sha.sha512;\n  hash.ripemd160 = hash.ripemd.ripemd160;\n  return exports$I$1;\n}\nvar exports$H$1 = {};\nvar _dewExec$H$1 = false;\nfunction dew$H$1() {\n  if (_dewExec$H$1) return exports$H$1;\n  _dewExec$H$1 = true;\n  exports$H$1 = {\n    doubles: {\n      step: 4,\n      points: [[\"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\", \"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"], [\"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\", \"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"], [\"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\", \"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"], [\"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\", \"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"], [\"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\", \"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"], [\"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\", \"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"], [\"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\", \"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"], [\"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\", \"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"], [\"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\", \"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"], [\"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\", \"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"], [\"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\", \"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"], [\"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\", \"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"], [\"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\", \"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"], [\"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\", \"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"], [\"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\", \"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"], [\"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\", \"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"], [\"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\", \"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"], [\"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\", \"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"], [\"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\", \"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"], [\"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\", \"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"], [\"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\", \"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"], [\"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\", \"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"], [\"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\", \"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"], [\"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\", \"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"], [\"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\", \"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"], [\"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\", \"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"], [\"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\", \"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"], [\"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\", \"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"], [\"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\", \"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"], [\"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\", \"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"], [\"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\", \"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"], [\"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\", \"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"], [\"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\", \"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"], [\"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\", \"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"], [\"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\", \"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"], [\"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\", \"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"], [\"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\", \"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"], [\"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\", \"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"], [\"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\", \"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"], [\"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\", \"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"], [\"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\", \"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"], [\"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\", \"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"], [\"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\", \"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"], [\"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\", \"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"], [\"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\", \"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"], [\"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\", \"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"], [\"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\", \"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"], [\"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\", \"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"], [\"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\", \"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"], [\"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\", \"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"], [\"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\", \"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"], [\"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\", \"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"], [\"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\", \"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"], [\"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\", \"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"], [\"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\", \"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"], [\"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\", \"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"], [\"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\", \"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"], [\"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\", \"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"], [\"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\", \"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"], [\"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\", \"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"], [\"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\", \"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"], [\"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\", \"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"], [\"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\", \"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"], [\"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\", \"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"], [\"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\", \"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"]]\n    },\n    naf: {\n      wnd: 7,\n      points: [[\"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\", \"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"], [\"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\", \"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"], [\"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\", \"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"], [\"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\", \"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"], [\"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\", \"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"], [\"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\", \"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"], [\"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\", \"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"], [\"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\", \"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"], [\"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\", \"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"], [\"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\", \"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"], [\"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\", \"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"], [\"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\", \"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"], [\"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\", \"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"], [\"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\", \"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"], [\"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\", \"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"], [\"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\", \"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"], [\"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\", \"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"], [\"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\", \"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"], [\"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\", \"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"], [\"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\", \"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"], [\"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\", \"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"], [\"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\", \"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"], [\"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\", \"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"], [\"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\", \"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"], [\"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\", \"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"], [\"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\", \"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"], [\"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\", \"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"], [\"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\", \"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"], [\"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\", \"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"], [\"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\", \"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"], [\"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\", \"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"], [\"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\", \"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"], [\"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\", \"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"], [\"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\", \"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"], [\"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\", \"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"], [\"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\", \"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"], [\"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\", \"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"], [\"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\", \"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"], [\"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\", \"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"], [\"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\", \"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"], [\"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\", \"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"], [\"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\", \"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"], [\"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\", \"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"], [\"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\", \"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"], [\"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\", \"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"], [\"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\", \"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"], [\"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\", \"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"], [\"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\", \"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"], [\"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\", \"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"], [\"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\", \"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"], [\"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\", \"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"], [\"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\", \"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"], [\"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\", \"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"], [\"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\", \"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"], [\"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\", \"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"], [\"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\", \"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"], [\"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\", \"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"], [\"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\", \"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"], [\"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\", \"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"], [\"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\", \"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"], [\"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\", \"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"], [\"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\", \"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"], [\"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\", \"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"], [\"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\", \"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"], [\"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\", \"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"], [\"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\", \"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"], [\"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\", \"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"], [\"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\", \"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"], [\"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\", \"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"], [\"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\", \"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"], [\"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\", \"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"], [\"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\", \"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"], [\"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\", \"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"], [\"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\", \"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"], [\"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\", \"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"], [\"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\", \"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"], [\"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\", \"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"], [\"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\", \"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"], [\"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\", \"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"], [\"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\", \"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"], [\"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\", \"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"], [\"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\", \"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"], [\"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\", \"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"], [\"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\", \"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"], [\"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\", \"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"], [\"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\", \"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"], [\"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\", \"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"], [\"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\", \"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"], [\"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\", \"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"], [\"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\", \"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"], [\"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\", \"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"], [\"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\", \"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"], [\"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\", \"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"], [\"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\", \"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"], [\"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\", \"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"], [\"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\", \"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"], [\"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\", \"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"], [\"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\", \"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"], [\"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\", \"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"], [\"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\", \"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"], [\"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\", \"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"], [\"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\", \"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"], [\"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\", \"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"], [\"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\", \"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"], [\"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\", \"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"], [\"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\", \"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"], [\"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\", \"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"], [\"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\", \"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"], [\"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\", \"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"], [\"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\", \"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"], [\"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\", \"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"], [\"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\", \"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"], [\"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\", \"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"], [\"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\", \"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"], [\"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\", \"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"], [\"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\", \"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"], [\"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\", \"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"], [\"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\", \"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"], [\"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\", \"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"], [\"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\", \"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"], [\"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\", \"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"], [\"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\", \"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"], [\"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\", \"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"], [\"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\", \"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"], [\"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\", \"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"], [\"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\", \"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"], [\"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\", \"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"]]\n    }\n  };\n  return exports$H$1;\n}\nvar exports$G$1 = {};\nvar _dewExec$G$1 = false;\nfunction dew$G$1() {\n  if (_dewExec$G$1) return exports$G$1;\n  _dewExec$G$1 = true;\n  var curves = exports$G$1;\n  var hash = dew$I$1();\n  var curve = dew$O$1();\n  var utils = dew$T$1();\n  var assert2 = utils.assert;\n  function PresetCurve(options) {\n    if (options.type === \"short\") this.curve = new curve.short(options);\n    else if (options.type === \"edwards\") this.curve = new curve.edwards(options);\n    else this.curve = new curve.mont(options);\n    this.g = this.curve.g;\n    this.n = this.curve.n;\n    this.hash = options.hash;\n    assert2(this.g.validate(), \"Invalid curve\");\n    assert2(this.g.mul(this.n).isInfinity(), \"Invalid curve, G*N != O\");\n  }\n  curves.PresetCurve = PresetCurve;\n  function defineCurve(name2, options) {\n    Object.defineProperty(curves, name2, {\n      configurable: true,\n      enumerable: true,\n      get: function() {\n        var curve2 = new PresetCurve(options);\n        Object.defineProperty(curves, name2, {\n          configurable: true,\n          enumerable: true,\n          value: curve2\n        });\n        return curve2;\n      }\n    });\n  }\n  defineCurve(\"p192\", {\n    type: \"short\",\n    prime: \"p192\",\n    p: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",\n    a: \"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",\n    b: \"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",\n    n: \"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\", \"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]\n  });\n  defineCurve(\"p224\", {\n    type: \"short\",\n    prime: \"p224\",\n    p: \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",\n    a: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",\n    b: \"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",\n    n: \"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\", \"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]\n  });\n  defineCurve(\"p256\", {\n    type: \"short\",\n    prime: null,\n    p: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",\n    a: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",\n    b: \"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",\n    n: \"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\", \"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]\n  });\n  defineCurve(\"p384\", {\n    type: \"short\",\n    prime: null,\n    p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",\n    a: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",\n    b: \"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",\n    n: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",\n    hash: hash.sha384,\n    gRed: false,\n    g: [\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\", \"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]\n  });\n  defineCurve(\"p521\", {\n    type: \"short\",\n    prime: null,\n    p: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",\n    a: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",\n    b: \"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",\n    n: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",\n    hash: hash.sha512,\n    gRed: false,\n    g: [\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\", \"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]\n  });\n  defineCurve(\"curve25519\", {\n    type: \"mont\",\n    prime: \"p25519\",\n    p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n    a: \"76d06\",\n    b: \"1\",\n    n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"9\"]\n  });\n  defineCurve(\"ed25519\", {\n    type: \"edwards\",\n    prime: \"p25519\",\n    p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n    a: \"-1\",\n    c: \"1\",\n    // -121665 * (121666^(-1)) (mod P)\n    d: \"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",\n    n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\n      \"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\n      // 4/5\n      \"6666666666666666666666666666666666666666666666666666666666666658\"\n    ]\n  });\n  var pre;\n  try {\n    pre = dew$H$1();\n  } catch (e7) {\n    pre = void 0;\n  }\n  defineCurve(\"secp256k1\", {\n    type: \"short\",\n    prime: \"k256\",\n    p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",\n    a: \"0\",\n    b: \"7\",\n    n: \"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",\n    h: \"1\",\n    hash: hash.sha256,\n    // Precomputed endomorphism\n    beta: \"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",\n    lambda: \"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",\n    basis: [{\n      a: \"3086d221a7d46bcde86c90e49284eb15\",\n      b: \"-e4437ed6010e88286f547fa90abfe4c3\"\n    }, {\n      a: \"114ca50f7a8e2f3f657c1108d9d44cfd8\",\n      b: \"3086d221a7d46bcde86c90e49284eb15\"\n    }],\n    gRed: false,\n    g: [\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\", \"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\", pre]\n  });\n  return exports$G$1;\n}\nvar exports$F$1 = {};\nvar _dewExec$F$1 = false;\nfunction dew$F$1() {\n  if (_dewExec$F$1) return exports$F$1;\n  _dewExec$F$1 = true;\n  var hash = dew$I$1();\n  var utils = dew$U$1();\n  var assert2 = dew$1t();\n  function HmacDRBG(options) {\n    if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n    this.hash = options.hash;\n    this.predResist = !!options.predResist;\n    this.outLen = this.hash.outSize;\n    this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n    this._reseed = null;\n    this.reseedInterval = null;\n    this.K = null;\n    this.V = null;\n    var entropy = utils.toArray(options.entropy, options.entropyEnc || \"hex\");\n    var nonce = utils.toArray(options.nonce, options.nonceEnc || \"hex\");\n    var pers = utils.toArray(options.pers, options.persEnc || \"hex\");\n    assert2(entropy.length >= this.minEntropy / 8, \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\");\n    this._init(entropy, nonce, pers);\n  }\n  exports$F$1 = HmacDRBG;\n  HmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n    var seed = entropy.concat(nonce).concat(pers);\n    this.K = new Array(this.outLen / 8);\n    this.V = new Array(this.outLen / 8);\n    for (var i5 = 0; i5 < this.V.length; i5++) {\n      this.K[i5] = 0;\n      this.V[i5] = 1;\n    }\n    this._update(seed);\n    this._reseed = 1;\n    this.reseedInterval = 281474976710656;\n  };\n  HmacDRBG.prototype._hmac = function hmac() {\n    return new hash.hmac(this.hash, this.K);\n  };\n  HmacDRBG.prototype._update = function update(seed) {\n    var kmac = this._hmac().update(this.V).update([0]);\n    if (seed) kmac = kmac.update(seed);\n    this.K = kmac.digest();\n    this.V = this._hmac().update(this.V).digest();\n    if (!seed) return;\n    this.K = this._hmac().update(this.V).update([1]).update(seed).digest();\n    this.V = this._hmac().update(this.V).digest();\n  };\n  HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n    if (typeof entropyEnc !== \"string\") {\n      addEnc = add;\n      add = entropyEnc;\n      entropyEnc = null;\n    }\n    entropy = utils.toArray(entropy, entropyEnc);\n    add = utils.toArray(add, addEnc);\n    assert2(entropy.length >= this.minEntropy / 8, \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\");\n    this._update(entropy.concat(add || []));\n    this._reseed = 1;\n  };\n  HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n    if (this._reseed > this.reseedInterval) throw new Error(\"Reseed is required\");\n    if (typeof enc !== \"string\") {\n      addEnc = add;\n      add = enc;\n      enc = null;\n    }\n    if (add) {\n      add = utils.toArray(add, addEnc || \"hex\");\n      this._update(add);\n    }\n    var temp = [];\n    while (temp.length < len) {\n      this.V = this._hmac().update(this.V).digest();\n      temp = temp.concat(this.V);\n    }\n    var res = temp.slice(0, len);\n    this._update(add);\n    this._reseed++;\n    return utils.encode(res, enc);\n  };\n  return exports$F$1;\n}\nvar exports$E$1 = {};\nvar _dewExec$E$1 = false;\nfunction dew$E$1() {\n  if (_dewExec$E$1) return exports$E$1;\n  _dewExec$E$1 = true;\n  var BN = dew$V$1();\n  var utils = dew$T$1();\n  var assert2 = utils.assert;\n  function KeyPair(ec, options) {\n    this.ec = ec;\n    this.priv = null;\n    this.pub = null;\n    if (options.priv) this._importPrivate(options.priv, options.privEnc);\n    if (options.pub) this._importPublic(options.pub, options.pubEnc);\n  }\n  exports$E$1 = KeyPair;\n  KeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n    if (pub instanceof KeyPair) return pub;\n    return new KeyPair(ec, {\n      pub,\n      pubEnc: enc\n    });\n  };\n  KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n    if (priv instanceof KeyPair) return priv;\n    return new KeyPair(ec, {\n      priv,\n      privEnc: enc\n    });\n  };\n  KeyPair.prototype.validate = function validate() {\n    var pub = this.getPublic();\n    if (pub.isInfinity()) return {\n      result: false,\n      reason: \"Invalid public key\"\n    };\n    if (!pub.validate()) return {\n      result: false,\n      reason: \"Public key is not a point\"\n    };\n    if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n      result: false,\n      reason: \"Public key * N != O\"\n    };\n    return {\n      result: true,\n      reason: null\n    };\n  };\n  KeyPair.prototype.getPublic = function getPublic(compact, enc) {\n    if (typeof compact === \"string\") {\n      enc = compact;\n      compact = null;\n    }\n    if (!this.pub) this.pub = this.ec.g.mul(this.priv);\n    if (!enc) return this.pub;\n    return this.pub.encode(enc, compact);\n  };\n  KeyPair.prototype.getPrivate = function getPrivate(enc) {\n    if (enc === \"hex\") return this.priv.toString(16, 2);\n    else return this.priv;\n  };\n  KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n    this.priv = new BN(key, enc || 16);\n    this.priv = this.priv.umod(this.ec.curve.n);\n  };\n  KeyPair.prototype._importPublic = function _importPublic(key, enc) {\n    if (key.x || key.y) {\n      if (this.ec.curve.type === \"mont\") {\n        assert2(key.x, \"Need x coordinate\");\n      } else if (this.ec.curve.type === \"short\" || this.ec.curve.type === \"edwards\") {\n        assert2(key.x && key.y, \"Need both x and y coordinate\");\n      }\n      this.pub = this.ec.curve.point(key.x, key.y);\n      return;\n    }\n    this.pub = this.ec.curve.decodePoint(key, enc);\n  };\n  KeyPair.prototype.derive = function derive(pub) {\n    if (!pub.validate()) {\n      assert2(pub.validate(), \"public point not validated\");\n    }\n    return pub.mul(this.priv).getX();\n  };\n  KeyPair.prototype.sign = function sign(msg, enc, options) {\n    return this.ec.sign(msg, this, enc, options);\n  };\n  KeyPair.prototype.verify = function verify(msg, signature) {\n    return this.ec.verify(msg, signature, this);\n  };\n  KeyPair.prototype.inspect = function inspect() {\n    return \"<Key priv: \" + (this.priv && this.priv.toString(16, 2)) + \" pub: \" + (this.pub && this.pub.inspect()) + \" >\";\n  };\n  return exports$E$1;\n}\nvar exports$D$1 = {};\nvar _dewExec$D$1 = false;\nfunction dew$D$1() {\n  if (_dewExec$D$1) return exports$D$1;\n  _dewExec$D$1 = true;\n  var BN = dew$V$1();\n  var utils = dew$T$1();\n  var assert2 = utils.assert;\n  function Signature(options, enc) {\n    if (options instanceof Signature) return options;\n    if (this._importDER(options, enc)) return;\n    assert2(options.r && options.s, \"Signature without r or s\");\n    this.r = new BN(options.r, 16);\n    this.s = new BN(options.s, 16);\n    if (options.recoveryParam === void 0) this.recoveryParam = null;\n    else this.recoveryParam = options.recoveryParam;\n  }\n  exports$D$1 = Signature;\n  function Position() {\n    this.place = 0;\n  }\n  function getLength(buf, p5) {\n    var initial = buf[p5.place++];\n    if (!(initial & 128)) {\n      return initial;\n    }\n    var octetLen = initial & 15;\n    if (octetLen === 0 || octetLen > 4) {\n      return false;\n    }\n    var val = 0;\n    for (var i5 = 0, off2 = p5.place; i5 < octetLen; i5++, off2++) {\n      val <<= 8;\n      val |= buf[off2];\n      val >>>= 0;\n    }\n    if (val <= 127) {\n      return false;\n    }\n    p5.place = off2;\n    return val;\n  }\n  function rmPadding(buf) {\n    var i5 = 0;\n    var len = buf.length - 1;\n    while (!buf[i5] && !(buf[i5 + 1] & 128) && i5 < len) {\n      i5++;\n    }\n    if (i5 === 0) {\n      return buf;\n    }\n    return buf.slice(i5);\n  }\n  Signature.prototype._importDER = function _importDER(data, enc) {\n    data = utils.toArray(data, enc);\n    var p5 = new Position();\n    if (data[p5.place++] !== 48) {\n      return false;\n    }\n    var len = getLength(data, p5);\n    if (len === false) {\n      return false;\n    }\n    if (len + p5.place !== data.length) {\n      return false;\n    }\n    if (data[p5.place++] !== 2) {\n      return false;\n    }\n    var rlen = getLength(data, p5);\n    if (rlen === false) {\n      return false;\n    }\n    var r5 = data.slice(p5.place, rlen + p5.place);\n    p5.place += rlen;\n    if (data[p5.place++] !== 2) {\n      return false;\n    }\n    var slen = getLength(data, p5);\n    if (slen === false) {\n      return false;\n    }\n    if (data.length !== slen + p5.place) {\n      return false;\n    }\n    var s5 = data.slice(p5.place, slen + p5.place);\n    if (r5[0] === 0) {\n      if (r5[1] & 128) {\n        r5 = r5.slice(1);\n      } else {\n        return false;\n      }\n    }\n    if (s5[0] === 0) {\n      if (s5[1] & 128) {\n        s5 = s5.slice(1);\n      } else {\n        return false;\n      }\n    }\n    this.r = new BN(r5);\n    this.s = new BN(s5);\n    this.recoveryParam = null;\n    return true;\n  };\n  function constructLength(arr, len) {\n    if (len < 128) {\n      arr.push(len);\n      return;\n    }\n    var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n    arr.push(octets | 128);\n    while (--octets) {\n      arr.push(len >>> (octets << 3) & 255);\n    }\n    arr.push(len);\n  }\n  Signature.prototype.toDER = function toDER(enc) {\n    var r5 = this.r.toArray();\n    var s5 = this.s.toArray();\n    if (r5[0] & 128) r5 = [0].concat(r5);\n    if (s5[0] & 128) s5 = [0].concat(s5);\n    r5 = rmPadding(r5);\n    s5 = rmPadding(s5);\n    while (!s5[0] && !(s5[1] & 128)) {\n      s5 = s5.slice(1);\n    }\n    var arr = [2];\n    constructLength(arr, r5.length);\n    arr = arr.concat(r5);\n    arr.push(2);\n    constructLength(arr, s5.length);\n    var backHalf = arr.concat(s5);\n    var res = [48];\n    constructLength(res, backHalf.length);\n    res = res.concat(backHalf);\n    return utils.encode(res, enc);\n  };\n  return exports$D$1;\n}\nvar exports$C$1 = {};\nvar _dewExec$C$1 = false;\nfunction dew$C$1() {\n  if (_dewExec$C$1) return exports$C$1;\n  _dewExec$C$1 = true;\n  var BN = dew$V$1();\n  var HmacDRBG = dew$F$1();\n  var utils = dew$T$1();\n  var curves = dew$G$1();\n  var rand = dew$10$1();\n  var assert2 = utils.assert;\n  var KeyPair = dew$E$1();\n  var Signature = dew$D$1();\n  function EC(options) {\n    if (!(this instanceof EC)) return new EC(options);\n    if (typeof options === \"string\") {\n      assert2(Object.prototype.hasOwnProperty.call(curves, options), \"Unknown curve \" + options);\n      options = curves[options];\n    }\n    if (options instanceof curves.PresetCurve) options = {\n      curve: options\n    };\n    this.curve = options.curve.curve;\n    this.n = this.curve.n;\n    this.nh = this.n.ushrn(1);\n    this.g = this.curve.g;\n    this.g = options.curve.g;\n    this.g.precompute(options.curve.n.bitLength() + 1);\n    this.hash = options.hash || options.curve.hash;\n  }\n  exports$C$1 = EC;\n  EC.prototype.keyPair = function keyPair(options) {\n    return new KeyPair(this, options);\n  };\n  EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n    return KeyPair.fromPrivate(this, priv, enc);\n  };\n  EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n    return KeyPair.fromPublic(this, pub, enc);\n  };\n  EC.prototype.genKeyPair = function genKeyPair(options) {\n    if (!options) options = {};\n    var drbg = new HmacDRBG({\n      hash: this.hash,\n      pers: options.pers,\n      persEnc: options.persEnc || \"utf8\",\n      entropy: options.entropy || rand(this.hash.hmacStrength),\n      entropyEnc: options.entropy && options.entropyEnc || \"utf8\",\n      nonce: this.n.toArray()\n    });\n    var bytes = this.n.byteLength();\n    var ns2 = this.n.sub(new BN(2));\n    for (; ; ) {\n      var priv = new BN(drbg.generate(bytes));\n      if (priv.cmp(ns2) > 0) continue;\n      priv.iaddn(1);\n      return this.keyFromPrivate(priv);\n    }\n  };\n  EC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n    var delta = msg.byteLength() * 8 - this.n.bitLength();\n    if (delta > 0) msg = msg.ushrn(delta);\n    if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);\n    else return msg;\n  };\n  EC.prototype.sign = function sign(msg, key, enc, options) {\n    if (typeof enc === \"object\") {\n      options = enc;\n      enc = null;\n    }\n    if (!options) options = {};\n    key = this.keyFromPrivate(key, enc);\n    msg = this._truncateToN(new BN(msg, 16));\n    var bytes = this.n.byteLength();\n    var bkey = key.getPrivate().toArray(\"be\", bytes);\n    var nonce = msg.toArray(\"be\", bytes);\n    var drbg = new HmacDRBG({\n      hash: this.hash,\n      entropy: bkey,\n      nonce,\n      pers: options.pers,\n      persEnc: options.persEnc || \"utf8\"\n    });\n    var ns1 = this.n.sub(new BN(1));\n    for (var iter = 0; ; iter++) {\n      var k4 = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n      k4 = this._truncateToN(k4, true);\n      if (k4.cmpn(1) <= 0 || k4.cmp(ns1) >= 0) continue;\n      var kp = this.g.mul(k4);\n      if (kp.isInfinity()) continue;\n      var kpX = kp.getX();\n      var r5 = kpX.umod(this.n);\n      if (r5.cmpn(0) === 0) continue;\n      var s5 = k4.invm(this.n).mul(r5.mul(key.getPrivate()).iadd(msg));\n      s5 = s5.umod(this.n);\n      if (s5.cmpn(0) === 0) continue;\n      var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r5) !== 0 ? 2 : 0);\n      if (options.canonical && s5.cmp(this.nh) > 0) {\n        s5 = this.n.sub(s5);\n        recoveryParam ^= 1;\n      }\n      return new Signature({\n        r: r5,\n        s: s5,\n        recoveryParam\n      });\n    }\n  };\n  EC.prototype.verify = function verify(msg, signature, key, enc) {\n    msg = this._truncateToN(new BN(msg, 16));\n    key = this.keyFromPublic(key, enc);\n    signature = new Signature(signature, \"hex\");\n    var r5 = signature.r;\n    var s5 = signature.s;\n    if (r5.cmpn(1) < 0 || r5.cmp(this.n) >= 0) return false;\n    if (s5.cmpn(1) < 0 || s5.cmp(this.n) >= 0) return false;\n    var sinv = s5.invm(this.n);\n    var u1 = sinv.mul(msg).umod(this.n);\n    var u22 = sinv.mul(r5).umod(this.n);\n    var p5;\n    if (!this.curve._maxwellTrick) {\n      p5 = this.g.mulAdd(u1, key.getPublic(), u22);\n      if (p5.isInfinity()) return false;\n      return p5.getX().umod(this.n).cmp(r5) === 0;\n    }\n    p5 = this.g.jmulAdd(u1, key.getPublic(), u22);\n    if (p5.isInfinity()) return false;\n    return p5.eqXToP(r5);\n  };\n  EC.prototype.recoverPubKey = function(msg, signature, j4, enc) {\n    assert2((3 & j4) === j4, \"The recovery param is more than two bits\");\n    signature = new Signature(signature, enc);\n    var n5 = this.n;\n    var e7 = new BN(msg);\n    var r5 = signature.r;\n    var s5 = signature.s;\n    var isYOdd = j4 & 1;\n    var isSecondKey = j4 >> 1;\n    if (r5.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error(\"Unable to find sencond key candinate\");\n    if (isSecondKey) r5 = this.curve.pointFromX(r5.add(this.curve.n), isYOdd);\n    else r5 = this.curve.pointFromX(r5, isYOdd);\n    var rInv = signature.r.invm(n5);\n    var s1 = n5.sub(e7).mul(rInv).umod(n5);\n    var s22 = s5.mul(rInv).umod(n5);\n    return this.g.mulAdd(s1, r5, s22);\n  };\n  EC.prototype.getKeyRecoveryParam = function(e7, signature, Q3, enc) {\n    signature = new Signature(signature, enc);\n    if (signature.recoveryParam !== null) return signature.recoveryParam;\n    for (var i5 = 0; i5 < 4; i5++) {\n      var Qprime;\n      try {\n        Qprime = this.recoverPubKey(e7, signature, i5);\n      } catch (e8) {\n        continue;\n      }\n      if (Qprime.eq(Q3)) return i5;\n    }\n    throw new Error(\"Unable to find valid recovery factor\");\n  };\n  return exports$C$1;\n}\nvar exports$B$1 = {};\nvar _dewExec$B$1 = false;\nfunction dew$B$1() {\n  if (_dewExec$B$1) return exports$B$1;\n  _dewExec$B$1 = true;\n  var utils = dew$T$1();\n  var assert2 = utils.assert;\n  var parseBytes = utils.parseBytes;\n  var cachedProperty = utils.cachedProperty;\n  function KeyPair(eddsa, params) {\n    this.eddsa = eddsa;\n    this._secret = parseBytes(params.secret);\n    if (eddsa.isPoint(params.pub)) this._pub = params.pub;\n    else this._pubBytes = parseBytes(params.pub);\n  }\n  KeyPair.fromPublic = function fromPublic(eddsa, pub) {\n    if (pub instanceof KeyPair) return pub;\n    return new KeyPair(eddsa, {\n      pub\n    });\n  };\n  KeyPair.fromSecret = function fromSecret(eddsa, secret) {\n    if (secret instanceof KeyPair) return secret;\n    return new KeyPair(eddsa, {\n      secret\n    });\n  };\n  KeyPair.prototype.secret = function secret() {\n    return this._secret;\n  };\n  cachedProperty(KeyPair, \"pubBytes\", function pubBytes() {\n    return this.eddsa.encodePoint(this.pub());\n  });\n  cachedProperty(KeyPair, \"pub\", function pub() {\n    if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n    return this.eddsa.g.mul(this.priv());\n  });\n  cachedProperty(KeyPair, \"privBytes\", function privBytes() {\n    var eddsa = this.eddsa;\n    var hash = this.hash();\n    var lastIx = eddsa.encodingLength - 1;\n    var a5 = hash.slice(0, eddsa.encodingLength);\n    a5[0] &= 248;\n    a5[lastIx] &= 127;\n    a5[lastIx] |= 64;\n    return a5;\n  });\n  cachedProperty(KeyPair, \"priv\", function priv() {\n    return this.eddsa.decodeInt(this.privBytes());\n  });\n  cachedProperty(KeyPair, \"hash\", function hash() {\n    return this.eddsa.hash().update(this.secret()).digest();\n  });\n  cachedProperty(KeyPair, \"messagePrefix\", function messagePrefix() {\n    return this.hash().slice(this.eddsa.encodingLength);\n  });\n  KeyPair.prototype.sign = function sign(message) {\n    assert2(this._secret, \"KeyPair can only verify\");\n    return this.eddsa.sign(message, this);\n  };\n  KeyPair.prototype.verify = function verify(message, sig) {\n    return this.eddsa.verify(message, sig, this);\n  };\n  KeyPair.prototype.getSecret = function getSecret(enc) {\n    assert2(this._secret, \"KeyPair is public only\");\n    return utils.encode(this.secret(), enc);\n  };\n  KeyPair.prototype.getPublic = function getPublic(enc) {\n    return utils.encode(this.pubBytes(), enc);\n  };\n  exports$B$1 = KeyPair;\n  return exports$B$1;\n}\nvar exports$A$1 = {};\nvar _dewExec$A$1 = false;\nfunction dew$A$1() {\n  if (_dewExec$A$1) return exports$A$1;\n  _dewExec$A$1 = true;\n  var BN = dew$V$1();\n  var utils = dew$T$1();\n  var assert2 = utils.assert;\n  var cachedProperty = utils.cachedProperty;\n  var parseBytes = utils.parseBytes;\n  function Signature(eddsa, sig) {\n    this.eddsa = eddsa;\n    if (typeof sig !== \"object\") sig = parseBytes(sig);\n    if (Array.isArray(sig)) {\n      sig = {\n        R: sig.slice(0, eddsa.encodingLength),\n        S: sig.slice(eddsa.encodingLength)\n      };\n    }\n    assert2(sig.R && sig.S, \"Signature without R or S\");\n    if (eddsa.isPoint(sig.R)) this._R = sig.R;\n    if (sig.S instanceof BN) this._S = sig.S;\n    this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n    this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n  }\n  cachedProperty(Signature, \"S\", function S4() {\n    return this.eddsa.decodeInt(this.Sencoded());\n  });\n  cachedProperty(Signature, \"R\", function R4() {\n    return this.eddsa.decodePoint(this.Rencoded());\n  });\n  cachedProperty(Signature, \"Rencoded\", function Rencoded() {\n    return this.eddsa.encodePoint(this.R());\n  });\n  cachedProperty(Signature, \"Sencoded\", function Sencoded() {\n    return this.eddsa.encodeInt(this.S());\n  });\n  Signature.prototype.toBytes = function toBytes() {\n    return this.Rencoded().concat(this.Sencoded());\n  };\n  Signature.prototype.toHex = function toHex() {\n    return utils.encode(this.toBytes(), \"hex\").toUpperCase();\n  };\n  exports$A$1 = Signature;\n  return exports$A$1;\n}\nvar exports$z$1 = {};\nvar _dewExec$z$1 = false;\nfunction dew$z$1() {\n  if (_dewExec$z$1) return exports$z$1;\n  _dewExec$z$1 = true;\n  var hash = dew$I$1();\n  var curves = dew$G$1();\n  var utils = dew$T$1();\n  var assert2 = utils.assert;\n  var parseBytes = utils.parseBytes;\n  var KeyPair = dew$B$1();\n  var Signature = dew$A$1();\n  function EDDSA(curve) {\n    assert2(curve === \"ed25519\", \"only tested with ed25519 so far\");\n    if (!(this instanceof EDDSA)) return new EDDSA(curve);\n    curve = curves[curve].curve;\n    this.curve = curve;\n    this.g = curve.g;\n    this.g.precompute(curve.n.bitLength() + 1);\n    this.pointClass = curve.point().constructor;\n    this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n    this.hash = hash.sha512;\n  }\n  exports$z$1 = EDDSA;\n  EDDSA.prototype.sign = function sign(message, secret) {\n    message = parseBytes(message);\n    var key = this.keyFromSecret(secret);\n    var r5 = this.hashInt(key.messagePrefix(), message);\n    var R4 = this.g.mul(r5);\n    var Rencoded = this.encodePoint(R4);\n    var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());\n    var S4 = r5.add(s_).umod(this.curve.n);\n    return this.makeSignature({\n      R: R4,\n      S: S4,\n      Rencoded\n    });\n  };\n  EDDSA.prototype.verify = function verify(message, sig, pub) {\n    message = parseBytes(message);\n    sig = this.makeSignature(sig);\n    var key = this.keyFromPublic(pub);\n    var h5 = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n    var SG = this.g.mul(sig.S());\n    var RplusAh = sig.R().add(key.pub().mul(h5));\n    return RplusAh.eq(SG);\n  };\n  EDDSA.prototype.hashInt = function hashInt() {\n    var hash2 = this.hash();\n    for (var i5 = 0; i5 < arguments.length; i5++) hash2.update(arguments[i5]);\n    return utils.intFromLE(hash2.digest()).umod(this.curve.n);\n  };\n  EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n    return KeyPair.fromPublic(this, pub);\n  };\n  EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n    return KeyPair.fromSecret(this, secret);\n  };\n  EDDSA.prototype.makeSignature = function makeSignature(sig) {\n    if (sig instanceof Signature) return sig;\n    return new Signature(this, sig);\n  };\n  EDDSA.prototype.encodePoint = function encodePoint(point) {\n    var enc = point.getY().toArray(\"le\", this.encodingLength);\n    enc[this.encodingLength - 1] |= point.getX().isOdd() ? 128 : 0;\n    return enc;\n  };\n  EDDSA.prototype.decodePoint = function decodePoint(bytes) {\n    bytes = utils.parseBytes(bytes);\n    var lastIx = bytes.length - 1;\n    var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~128);\n    var xIsOdd = (bytes[lastIx] & 128) !== 0;\n    var y5 = utils.intFromLE(normed);\n    return this.curve.pointFromY(y5, xIsOdd);\n  };\n  EDDSA.prototype.encodeInt = function encodeInt(num) {\n    return num.toArray(\"le\", this.encodingLength);\n  };\n  EDDSA.prototype.decodeInt = function decodeInt(bytes) {\n    return utils.intFromLE(bytes);\n  };\n  EDDSA.prototype.isPoint = function isPoint(val) {\n    return val instanceof this.pointClass;\n  };\n  return exports$z$1;\n}\nvar exports$y$1 = {};\nvar _dewExec$y$1 = false;\nfunction dew$y$1() {\n  if (_dewExec$y$1) return exports$y$1;\n  _dewExec$y$1 = true;\n  var elliptic = exports$y$1;\n  elliptic.version = _package$1.version;\n  elliptic.utils = dew$T$1();\n  elliptic.rand = dew$10$1();\n  elliptic.curve = dew$O$1();\n  elliptic.curves = dew$G$1();\n  elliptic.ec = dew$C$1();\n  elliptic.eddsa = dew$z$1();\n  return exports$y$1;\n}\nvar exports$x$1 = {};\nvar _dewExec$x$1 = false;\nvar module$2$1 = {\n  exports: exports$x$1\n};\nvar _global$5$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$x$1() {\n  if (_dewExec$x$1) return module$2$1.exports;\n  _dewExec$x$1 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$5$1).negative = 0;\n      (this || _global$5$1).words = null;\n      (this || _global$5$1).length = 0;\n      (this || _global$5$1).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = e$1$1.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$5$1).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$5$1).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$5$1).words = [number & 67108863];\n        (this || _global$5$1).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$5$1).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$5$1).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$5$1).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$5$1).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$5$1).words = [0];\n        (this || _global$5$1).length = 1;\n        return this || _global$5$1;\n      }\n      (this || _global$5$1).length = Math.ceil(number.length / 3);\n      (this || _global$5$1).words = new Array((this || _global$5$1).length);\n      for (var i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n        (this || _global$5$1).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$5$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$5$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$5$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$5$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$5$1).length = Math.ceil((number.length - start) / 6);\n      (this || _global$5$1).words = new Array((this || _global$5$1).length);\n      for (var i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n        (this || _global$5$1).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$5$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$5$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$5$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$5$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$5$1).words = [0];\n      (this || _global$5$1).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$5$1).words[0] + word < 67108864) {\n          (this || _global$5$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$5$1).words[0] + word < 67108864) {\n          (this || _global$5$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$5$1).length);\n      for (var i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n        dest.words[i5] = (this || _global$5$1).words[i5];\n      }\n      dest.length = (this || _global$5$1).length;\n      dest.negative = (this || _global$5$1).negative;\n      dest.red = (this || _global$5$1).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$5$1).length < size) {\n        (this || _global$5$1).words[(this || _global$5$1).length++] = 0;\n      }\n      return this || _global$5$1;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$5$1).length > 1 && (this || _global$5$1).words[(this || _global$5$1).length - 1] === 0) {\n        (this || _global$5$1).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$5$1).length === 1 && (this || _global$5$1).words[0] === 0) {\n        (this || _global$5$1).negative = 0;\n      }\n      return this || _global$5$1;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$5$1).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n          var w4 = (this || _global$5$1).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$5$1).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$5$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$5$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$5$1).words[0];\n      if ((this || _global$5$1).length === 2) {\n        ret += (this || _global$5$1).words[1] * 67108864;\n      } else if ((this || _global$5$1).length === 3 && (this || _global$5$1).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$5$1).words[1] * 67108864;\n      } else if ((this || _global$5$1).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$5$1).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$5$1).words[(this || _global$5$1).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$5$1).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n        var b4 = this._zeroBits((this || _global$5$1).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$5$1).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$5$1).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$5$1).negative ^= 1;\n      }\n      return this || _global$5$1;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$5$1).length < num.length) {\n        (this || _global$5$1).words[(this || _global$5$1).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$5$1).words[i5] = (this || _global$5$1).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$5$1).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$5$1).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$5$1);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$5$1).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$5$1);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$5$1).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$5$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$5$1).words[i5] = (this || _global$5$1).words[i5] & num.words[i5];\n      }\n      (this || _global$5$1).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$5$1).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$5$1).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$5$1);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$5$1).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$5$1);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$5$1).length > num.length) {\n        a5 = this || _global$5$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$5$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$5$1).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$5$1) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$5$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$5$1).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$5$1).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$5$1).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$5$1);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$5$1).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$5$1);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$5$1).words[i5] = ~(this || _global$5$1).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$5$1).words[i5] = ~(this || _global$5$1).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$5$1).words[off2] = (this || _global$5$1).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$5$1).words[off2] = (this || _global$5$1).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$5$1).negative !== 0 && num.negative === 0) {\n        (this || _global$5$1).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$5$1).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$5$1).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$5$1).length > num.length) {\n        a5 = this || _global$5$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$5$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$5$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$5$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$5$1).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$5$1).words[(this || _global$5$1).length] = carry;\n        (this || _global$5$1).length++;\n      } else if (a5 !== (this || _global$5$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$5$1).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$5$1;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$5$1).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$5$1).negative !== 0) {\n        (this || _global$5$1).negative = 0;\n        res = num.sub(this || _global$5$1);\n        (this || _global$5$1).negative = 1;\n        return res;\n      }\n      if ((this || _global$5$1).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$5$1);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$5$1).negative !== 0) {\n        (this || _global$5$1).negative = 0;\n        this.iadd(num);\n        (this || _global$5$1).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$5$1).negative = 0;\n        (this || _global$5$1).length = 1;\n        (this || _global$5$1).words[0] = 0;\n        return this || _global$5$1;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$5$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$5$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$5$1).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$5$1).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$5$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$5$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$5$1).length = Math.max((this || _global$5$1).length, i5);\n      if (a5 !== (this || _global$5$1)) {\n        (this || _global$5$1).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$5$1).length + num.length;\n      if ((this || _global$5$1).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$5$1, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$5$1, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$5$1, num, out);\n      } else {\n        res = jumboMulTo(this || _global$5$1, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$5$1).x = x4;\n      (this || _global$5$1).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$5$1).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$5$1).length + num.length);\n      return jumboMulTo(this || _global$5$1, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$5$1);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n        var w4 = ((this || _global$5$1).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$5$1).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$5$1).words[i5] = carry;\n        (this || _global$5$1).length++;\n      }\n      return this || _global$5$1;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$5$1);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$5$1;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n          var newCarry = (this || _global$5$1).words[i5] & carryMask;\n          var c5 = ((this || _global$5$1).words[i5] | 0) - newCarry << r5;\n          (this || _global$5$1).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$5$1).words[i5] = carry;\n          (this || _global$5$1).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$5$1).length - 1; i5 >= 0; i5--) {\n          (this || _global$5$1).words[i5 + s5] = (this || _global$5$1).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$5$1).words[i5] = 0;\n        }\n        (this || _global$5$1).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$5$1).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$5$1).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$5$1).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$5$1).length > s5) {\n        (this || _global$5$1).length -= s5;\n        for (i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n          (this || _global$5$1).words[i5] = (this || _global$5$1).words[i5 + s5];\n        }\n      } else {\n        (this || _global$5$1).words[0] = 0;\n        (this || _global$5$1).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$5$1).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$5$1).words[i5] | 0;\n        (this || _global$5$1).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$5$1).length === 0) {\n        (this || _global$5$1).words[0] = 0;\n        (this || _global$5$1).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$5$1).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$5$1).length <= s5) return false;\n      var w4 = (this || _global$5$1).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$5$1).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$5$1).length <= s5) {\n        return this || _global$5$1;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$5$1).length = Math.min(s5, (this || _global$5$1).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$5$1).words[(this || _global$5$1).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$5$1).negative !== 0) {\n        if ((this || _global$5$1).length === 1 && ((this || _global$5$1).words[0] | 0) < num) {\n          (this || _global$5$1).words[0] = num - ((this || _global$5$1).words[0] | 0);\n          (this || _global$5$1).negative = 0;\n          return this || _global$5$1;\n        }\n        (this || _global$5$1).negative = 0;\n        this.isubn(num);\n        (this || _global$5$1).negative = 1;\n        return this || _global$5$1;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$5$1).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$5$1).length && (this || _global$5$1).words[i5] >= 67108864; i5++) {\n        (this || _global$5$1).words[i5] -= 67108864;\n        if (i5 === (this || _global$5$1).length - 1) {\n          (this || _global$5$1).words[i5 + 1] = 1;\n        } else {\n          (this || _global$5$1).words[i5 + 1]++;\n        }\n      }\n      (this || _global$5$1).length = Math.max((this || _global$5$1).length, i5 + 1);\n      return this || _global$5$1;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$5$1).negative !== 0) {\n        (this || _global$5$1).negative = 0;\n        this.iaddn(num);\n        (this || _global$5$1).negative = 1;\n        return this || _global$5$1;\n      }\n      (this || _global$5$1).words[0] -= num;\n      if ((this || _global$5$1).length === 1 && (this || _global$5$1).words[0] < 0) {\n        (this || _global$5$1).words[0] = -(this || _global$5$1).words[0];\n        (this || _global$5$1).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$5$1).length && (this || _global$5$1).words[i5] < 0; i5++) {\n          (this || _global$5$1).words[i5] += 67108864;\n          (this || _global$5$1).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$5$1).negative = 0;\n      return this || _global$5$1;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$5$1).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$5$1).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$5$1).length - shift; i5++) {\n        w4 = ((this || _global$5$1).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$5$1).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$5$1).length; i5++) {\n        w4 = -((this || _global$5$1).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$5$1).words[i5] = w4 & 67108863;\n      }\n      (this || _global$5$1).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$5$1).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$5$1).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$5$1).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$5$1).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$5$1).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$5$1\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$5$1).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$5$1).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$5$1).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$5$1).words[i5] | 0) + carry * 67108864;\n        (this || _global$5$1).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$5$1;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$5$1;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$5$1).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$5$1).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$5$1).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$5$1).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$5$1).words[s5] |= q3;\n        return this || _global$5$1;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$5$1).length; i5++) {\n        var w4 = (this || _global$5$1).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$5$1).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$5$1).words[i5] = carry;\n        (this || _global$5$1).length++;\n      }\n      return this || _global$5$1;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$5$1).length === 1 && (this || _global$5$1).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$5$1).negative !== 0 && !negative) return -1;\n      if ((this || _global$5$1).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$5$1).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$5$1).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$5$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$5$1).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$5$1).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$5$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$5$1).length > num.length) return 1;\n      if ((this || _global$5$1).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$5$1).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$5$1).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$5$1).red, \"Already a number in reduction context\");\n      assert2((this || _global$5$1).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$5$1)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$5$1).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$5$1).red.convertFrom(this || _global$5$1);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$5$1).red = ctx;\n      return this || _global$5$1;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$5$1).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$5$1).red, \"redAdd works only with red numbers\");\n      return (this || _global$5$1).red.add(this || _global$5$1, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$5$1).red, \"redIAdd works only with red numbers\");\n      return (this || _global$5$1).red.iadd(this || _global$5$1, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$5$1).red, \"redSub works only with red numbers\");\n      return (this || _global$5$1).red.sub(this || _global$5$1, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$5$1).red, \"redISub works only with red numbers\");\n      return (this || _global$5$1).red.isub(this || _global$5$1, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$5$1).red, \"redShl works only with red numbers\");\n      return (this || _global$5$1).red.shl(this || _global$5$1, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$5$1).red, \"redMul works only with red numbers\");\n      (this || _global$5$1).red._verify2(this || _global$5$1, num);\n      return (this || _global$5$1).red.mul(this || _global$5$1, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$5$1).red, \"redMul works only with red numbers\");\n      (this || _global$5$1).red._verify2(this || _global$5$1, num);\n      return (this || _global$5$1).red.imul(this || _global$5$1, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$5$1).red, \"redSqr works only with red numbers\");\n      (this || _global$5$1).red._verify1(this || _global$5$1);\n      return (this || _global$5$1).red.sqr(this || _global$5$1);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$5$1).red, \"redISqr works only with red numbers\");\n      (this || _global$5$1).red._verify1(this || _global$5$1);\n      return (this || _global$5$1).red.isqr(this || _global$5$1);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$5$1).red, \"redSqrt works only with red numbers\");\n      (this || _global$5$1).red._verify1(this || _global$5$1);\n      return (this || _global$5$1).red.sqrt(this || _global$5$1);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$5$1).red, \"redInvm works only with red numbers\");\n      (this || _global$5$1).red._verify1(this || _global$5$1);\n      return (this || _global$5$1).red.invm(this || _global$5$1);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$5$1).red, \"redNeg works only with red numbers\");\n      (this || _global$5$1).red._verify1(this || _global$5$1);\n      return (this || _global$5$1).red.neg(this || _global$5$1);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$5$1).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$5$1).red._verify1(this || _global$5$1);\n      return (this || _global$5$1).red.pow(this || _global$5$1, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$5$1).name = name2;\n      (this || _global$5$1).p = new BN(p5, 16);\n      (this || _global$5$1).n = (this || _global$5$1).p.bitLength();\n      (this || _global$5$1).k = new BN(1).iushln((this || _global$5$1).n).isub((this || _global$5$1).p);\n      (this || _global$5$1).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$5$1).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$5$1).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$5$1).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$5$1).n);\n      var cmp = rlen < (this || _global$5$1).n ? -1 : r5.ucmp((this || _global$5$1).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$5$1).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$5$1).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$5$1).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$5$1, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$5$1, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$5$1, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$5$1, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$5$1).m = prime.p;\n        (this || _global$5$1).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$5$1).m = m4;\n        (this || _global$5$1).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$5$1).prime) return (this || _global$5$1).prime.ireduce(a5)._forceRed(this || _global$5$1);\n      return a5.umod((this || _global$5$1).m)._forceRed(this || _global$5$1);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$5$1).m.sub(a5)._forceRed(this || _global$5$1);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$5$1).m) >= 0) {\n        res.isub((this || _global$5$1).m);\n      }\n      return res._forceRed(this || _global$5$1);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$5$1).m) >= 0) {\n        res.isub((this || _global$5$1).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$5$1).m);\n      }\n      return res._forceRed(this || _global$5$1);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$5$1).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$5$1).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$5$1).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$5$1).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$5$1);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$5$1).m.subn(1).iushrn(1);\n      var z4 = (this || _global$5$1).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$5$1);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$5$1).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$5$1);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$5$1);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$5$1).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$5$1, m4);\n      (this || _global$5$1).shift = (this || _global$5$1).m.bitLength();\n      if ((this || _global$5$1).shift % 26 !== 0) {\n        (this || _global$5$1).shift += 26 - (this || _global$5$1).shift % 26;\n      }\n      (this || _global$5$1).r = new BN(1).iushln((this || _global$5$1).shift);\n      (this || _global$5$1).r2 = this.imod((this || _global$5$1).r.sqr());\n      (this || _global$5$1).rinv = (this || _global$5$1).r._invmp((this || _global$5$1).m);\n      (this || _global$5$1).minv = (this || _global$5$1).rinv.mul((this || _global$5$1).r).isubn(1).div((this || _global$5$1).m);\n      (this || _global$5$1).minv = (this || _global$5$1).minv.umod((this || _global$5$1).r);\n      (this || _global$5$1).minv = (this || _global$5$1).r.sub((this || _global$5$1).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$5$1).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$5$1).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$5$1).shift).mul((this || _global$5$1).minv).imaskn((this || _global$5$1).shift).mul((this || _global$5$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$5$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$5$1).m) >= 0) {\n        res = u5.isub((this || _global$5$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$5$1).m);\n      }\n      return res._forceRed(this || _global$5$1);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$5$1);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$5$1).shift).mul((this || _global$5$1).minv).imaskn((this || _global$5$1).shift).mul((this || _global$5$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$5$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$5$1).m) >= 0) {\n        res = u5.isub((this || _global$5$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$5$1).m);\n      }\n      return res._forceRed(this || _global$5$1);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$5$1).m).mul((this || _global$5$1).r2));\n      return res._forceRed(this || _global$5$1);\n    };\n  })(module$2$1, exports$x$1);\n  return module$2$1.exports;\n}\nvar exports$w$1 = {};\nvar _dewExec$w$1 = false;\nfunction dew$w$1() {\n  if (_dewExec$w$1) return exports$w$1;\n  _dewExec$w$1 = true;\n  var process3 = T$1;\n  var buffer2 = e$1$1;\n  var Buffer = buffer2.Buffer;\n  var safer = {};\n  var key;\n  for (key in buffer2) {\n    if (!buffer2.hasOwnProperty(key)) continue;\n    if (key === \"SlowBuffer\" || key === \"Buffer\") continue;\n    safer[key] = buffer2[key];\n  }\n  var Safer = safer.Buffer = {};\n  for (key in Buffer) {\n    if (!Buffer.hasOwnProperty(key)) continue;\n    if (key === \"allocUnsafe\" || key === \"allocUnsafeSlow\") continue;\n    Safer[key] = Buffer[key];\n  }\n  safer.Buffer.prototype = Buffer.prototype;\n  if (!Safer.from || Safer.from === Uint8Array.from) {\n    Safer.from = function(value, encodingOrOffset, length) {\n      if (typeof value === \"number\") {\n        throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value);\n      }\n      if (value && typeof value.length === \"undefined\") {\n        throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof value);\n      }\n      return Buffer(value, encodingOrOffset, length);\n    };\n  }\n  if (!Safer.alloc) {\n    Safer.alloc = function(size, fill, encoding) {\n      if (typeof size !== \"number\") {\n        throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size);\n      }\n      if (size < 0 || size >= 2 * (1 << 30)) {\n        throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n      }\n      var buf = Buffer(size);\n      if (!fill || fill.length === 0) {\n        buf.fill(0);\n      } else if (typeof encoding === \"string\") {\n        buf.fill(fill, encoding);\n      } else {\n        buf.fill(fill);\n      }\n      return buf;\n    };\n  }\n  if (!safer.kStringMaxLength) {\n    try {\n      safer.kStringMaxLength = process3.binding(\"buffer\").kStringMaxLength;\n    } catch (e7) {\n    }\n  }\n  if (!safer.constants) {\n    safer.constants = {\n      MAX_LENGTH: safer.kMaxLength\n    };\n    if (safer.kStringMaxLength) {\n      safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;\n    }\n  }\n  exports$w$1 = safer;\n  return exports$w$1;\n}\nvar exports$v$1 = {};\nvar _dewExec$v$1 = false;\nfunction dew$v$1() {\n  if (_dewExec$v$1) return exports$v$1;\n  _dewExec$v$1 = true;\n  const inherits = dew$f$2();\n  function Reporter(options) {\n    this._reporterState = {\n      obj: null,\n      path: [],\n      options: options || {},\n      errors: []\n    };\n  }\n  exports$v$1.Reporter = Reporter;\n  Reporter.prototype.isError = function isError(obj) {\n    return obj instanceof ReporterError;\n  };\n  Reporter.prototype.save = function save() {\n    const state = this._reporterState;\n    return {\n      obj: state.obj,\n      pathLen: state.path.length\n    };\n  };\n  Reporter.prototype.restore = function restore(data) {\n    const state = this._reporterState;\n    state.obj = data.obj;\n    state.path = state.path.slice(0, data.pathLen);\n  };\n  Reporter.prototype.enterKey = function enterKey(key) {\n    return this._reporterState.path.push(key);\n  };\n  Reporter.prototype.exitKey = function exitKey(index) {\n    const state = this._reporterState;\n    state.path = state.path.slice(0, index - 1);\n  };\n  Reporter.prototype.leaveKey = function leaveKey(index, key, value) {\n    const state = this._reporterState;\n    this.exitKey(index);\n    if (state.obj !== null) state.obj[key] = value;\n  };\n  Reporter.prototype.path = function path() {\n    return this._reporterState.path.join(\"/\");\n  };\n  Reporter.prototype.enterObject = function enterObject() {\n    const state = this._reporterState;\n    const prev = state.obj;\n    state.obj = {};\n    return prev;\n  };\n  Reporter.prototype.leaveObject = function leaveObject(prev) {\n    const state = this._reporterState;\n    const now = state.obj;\n    state.obj = prev;\n    return now;\n  };\n  Reporter.prototype.error = function error(msg) {\n    let err;\n    const state = this._reporterState;\n    const inherited = msg instanceof ReporterError;\n    if (inherited) {\n      err = msg;\n    } else {\n      err = new ReporterError(state.path.map(function(elem) {\n        return \"[\" + JSON.stringify(elem) + \"]\";\n      }).join(\"\"), msg.message || msg, msg.stack);\n    }\n    if (!state.options.partial) throw err;\n    if (!inherited) state.errors.push(err);\n    return err;\n  };\n  Reporter.prototype.wrapResult = function wrapResult(result) {\n    const state = this._reporterState;\n    if (!state.options.partial) return result;\n    return {\n      result: this.isError(result) ? null : result,\n      errors: state.errors\n    };\n  };\n  function ReporterError(path, msg) {\n    this.path = path;\n    this.rethrow(msg);\n  }\n  inherits(ReporterError, Error);\n  ReporterError.prototype.rethrow = function rethrow(msg) {\n    this.message = msg + \" at: \" + (this.path || \"(shallow)\");\n    if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError);\n    if (!this.stack) {\n      try {\n        throw new Error(this.message);\n      } catch (e7) {\n        this.stack = e7.stack;\n      }\n    }\n    return this;\n  };\n  return exports$v$1;\n}\nvar exports$u$1 = {};\nvar _dewExec$u$1 = false;\nfunction dew$u$1() {\n  if (_dewExec$u$1) return exports$u$1;\n  _dewExec$u$1 = true;\n  const inherits = dew$f$2();\n  const Reporter = dew$v$1().Reporter;\n  const Buffer = dew$w$1().Buffer;\n  function DecoderBuffer(base, options) {\n    Reporter.call(this, options);\n    if (!Buffer.isBuffer(base)) {\n      this.error(\"Input not Buffer\");\n      return;\n    }\n    this.base = base;\n    this.offset = 0;\n    this.length = base.length;\n  }\n  inherits(DecoderBuffer, Reporter);\n  exports$u$1.DecoderBuffer = DecoderBuffer;\n  DecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n    if (data instanceof DecoderBuffer) {\n      return true;\n    }\n    const isCompatible = typeof data === \"object\" && Buffer.isBuffer(data.base) && data.constructor.name === \"DecoderBuffer\" && typeof data.offset === \"number\" && typeof data.length === \"number\" && typeof data.save === \"function\" && typeof data.restore === \"function\" && typeof data.isEmpty === \"function\" && typeof data.readUInt8 === \"function\" && typeof data.skip === \"function\" && typeof data.raw === \"function\";\n    return isCompatible;\n  };\n  DecoderBuffer.prototype.save = function save() {\n    return {\n      offset: this.offset,\n      reporter: Reporter.prototype.save.call(this)\n    };\n  };\n  DecoderBuffer.prototype.restore = function restore(save) {\n    const res = new DecoderBuffer(this.base);\n    res.offset = save.offset;\n    res.length = this.offset;\n    this.offset = save.offset;\n    Reporter.prototype.restore.call(this, save.reporter);\n    return res;\n  };\n  DecoderBuffer.prototype.isEmpty = function isEmpty() {\n    return this.offset === this.length;\n  };\n  DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n    if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true);\n    else return this.error(fail || \"DecoderBuffer overrun\");\n  };\n  DecoderBuffer.prototype.skip = function skip(bytes, fail) {\n    if (!(this.offset + bytes <= this.length)) return this.error(fail || \"DecoderBuffer overrun\");\n    const res = new DecoderBuffer(this.base);\n    res._reporterState = this._reporterState;\n    res.offset = this.offset;\n    res.length = this.offset + bytes;\n    this.offset += bytes;\n    return res;\n  };\n  DecoderBuffer.prototype.raw = function raw(save) {\n    return this.base.slice(save ? save.offset : this.offset, this.length);\n  };\n  function EncoderBuffer(value, reporter) {\n    if (Array.isArray(value)) {\n      this.length = 0;\n      this.value = value.map(function(item) {\n        if (!EncoderBuffer.isEncoderBuffer(item)) item = new EncoderBuffer(item, reporter);\n        this.length += item.length;\n        return item;\n      }, this);\n    } else if (typeof value === \"number\") {\n      if (!(0 <= value && value <= 255)) return reporter.error(\"non-byte EncoderBuffer value\");\n      this.value = value;\n      this.length = 1;\n    } else if (typeof value === \"string\") {\n      this.value = value;\n      this.length = Buffer.byteLength(value);\n    } else if (Buffer.isBuffer(value)) {\n      this.value = value;\n      this.length = value.length;\n    } else {\n      return reporter.error(\"Unsupported type: \" + typeof value);\n    }\n  }\n  exports$u$1.EncoderBuffer = EncoderBuffer;\n  EncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n    if (data instanceof EncoderBuffer) {\n      return true;\n    }\n    const isCompatible = typeof data === \"object\" && data.constructor.name === \"EncoderBuffer\" && typeof data.length === \"number\" && typeof data.join === \"function\";\n    return isCompatible;\n  };\n  EncoderBuffer.prototype.join = function join(out, offset) {\n    if (!out) out = Buffer.alloc(this.length);\n    if (!offset) offset = 0;\n    if (this.length === 0) return out;\n    if (Array.isArray(this.value)) {\n      this.value.forEach(function(item) {\n        item.join(out, offset);\n        offset += item.length;\n      });\n    } else {\n      if (typeof this.value === \"number\") out[offset] = this.value;\n      else if (typeof this.value === \"string\") out.write(this.value, offset);\n      else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset);\n      offset += this.length;\n    }\n    return out;\n  };\n  return exports$u$1;\n}\nvar exports$t$1 = {};\nvar _dewExec$t$1 = false;\nfunction dew$t$1() {\n  if (_dewExec$t$1) return exports$t$1;\n  _dewExec$t$1 = true;\n  const Reporter = dew$v$1().Reporter;\n  const EncoderBuffer = dew$u$1().EncoderBuffer;\n  const DecoderBuffer = dew$u$1().DecoderBuffer;\n  const assert2 = dew$1t();\n  const tags = [\"seq\", \"seqof\", \"set\", \"setof\", \"objid\", \"bool\", \"gentime\", \"utctime\", \"null_\", \"enum\", \"int\", \"objDesc\", \"bitstr\", \"bmpstr\", \"charstr\", \"genstr\", \"graphstr\", \"ia5str\", \"iso646str\", \"numstr\", \"octstr\", \"printstr\", \"t61str\", \"unistr\", \"utf8str\", \"videostr\"];\n  const methods = [\"key\", \"obj\", \"use\", \"optional\", \"explicit\", \"implicit\", \"def\", \"choice\", \"any\", \"contains\"].concat(tags);\n  const overrided = [\"_peekTag\", \"_decodeTag\", \"_use\", \"_decodeStr\", \"_decodeObjid\", \"_decodeTime\", \"_decodeNull\", \"_decodeInt\", \"_decodeBool\", \"_decodeList\", \"_encodeComposite\", \"_encodeStr\", \"_encodeObjid\", \"_encodeTime\", \"_encodeNull\", \"_encodeInt\", \"_encodeBool\"];\n  function Node(enc, parent, name2) {\n    const state = {};\n    this._baseState = state;\n    state.name = name2;\n    state.enc = enc;\n    state.parent = parent || null;\n    state.children = null;\n    state.tag = null;\n    state.args = null;\n    state.reverseArgs = null;\n    state.choice = null;\n    state.optional = false;\n    state.any = false;\n    state.obj = false;\n    state.use = null;\n    state.useDecoder = null;\n    state.key = null;\n    state[\"default\"] = null;\n    state.explicit = null;\n    state.implicit = null;\n    state.contains = null;\n    if (!state.parent) {\n      state.children = [];\n      this._wrap();\n    }\n  }\n  exports$t$1 = Node;\n  const stateProps = [\"enc\", \"parent\", \"children\", \"tag\", \"args\", \"reverseArgs\", \"choice\", \"optional\", \"any\", \"obj\", \"use\", \"alteredUse\", \"key\", \"default\", \"explicit\", \"implicit\", \"contains\"];\n  Node.prototype.clone = function clone() {\n    const state = this._baseState;\n    const cstate = {};\n    stateProps.forEach(function(prop) {\n      cstate[prop] = state[prop];\n    });\n    const res = new this.constructor(cstate.parent);\n    res._baseState = cstate;\n    return res;\n  };\n  Node.prototype._wrap = function wrap() {\n    const state = this._baseState;\n    methods.forEach(function(method) {\n      this[method] = function _wrappedMethod() {\n        const clone = new this.constructor(this);\n        state.children.push(clone);\n        return clone[method].apply(clone, arguments);\n      };\n    }, this);\n  };\n  Node.prototype._init = function init(body) {\n    const state = this._baseState;\n    assert2(state.parent === null);\n    body.call(this);\n    state.children = state.children.filter(function(child) {\n      return child._baseState.parent === this;\n    }, this);\n    assert2.equal(state.children.length, 1, \"Root node can have only one child\");\n  };\n  Node.prototype._useArgs = function useArgs(args) {\n    const state = this._baseState;\n    const children = args.filter(function(arg) {\n      return arg instanceof this.constructor;\n    }, this);\n    args = args.filter(function(arg) {\n      return !(arg instanceof this.constructor);\n    }, this);\n    if (children.length !== 0) {\n      assert2(state.children === null);\n      state.children = children;\n      children.forEach(function(child) {\n        child._baseState.parent = this;\n      }, this);\n    }\n    if (args.length !== 0) {\n      assert2(state.args === null);\n      state.args = args;\n      state.reverseArgs = args.map(function(arg) {\n        if (typeof arg !== \"object\" || arg.constructor !== Object) return arg;\n        const res = {};\n        Object.keys(arg).forEach(function(key) {\n          if (key == (key | 0)) key |= 0;\n          const value = arg[key];\n          res[value] = key;\n        });\n        return res;\n      });\n    }\n  };\n  overrided.forEach(function(method) {\n    Node.prototype[method] = function _overrided() {\n      const state = this._baseState;\n      throw new Error(method + \" not implemented for encoding: \" + state.enc);\n    };\n  });\n  tags.forEach(function(tag) {\n    Node.prototype[tag] = function _tagMethod() {\n      const state = this._baseState;\n      const args = Array.prototype.slice.call(arguments);\n      assert2(state.tag === null);\n      state.tag = tag;\n      this._useArgs(args);\n      return this;\n    };\n  });\n  Node.prototype.use = function use(item) {\n    assert2(item);\n    const state = this._baseState;\n    assert2(state.use === null);\n    state.use = item;\n    return this;\n  };\n  Node.prototype.optional = function optional() {\n    const state = this._baseState;\n    state.optional = true;\n    return this;\n  };\n  Node.prototype.def = function def(val) {\n    const state = this._baseState;\n    assert2(state[\"default\"] === null);\n    state[\"default\"] = val;\n    state.optional = true;\n    return this;\n  };\n  Node.prototype.explicit = function explicit(num) {\n    const state = this._baseState;\n    assert2(state.explicit === null && state.implicit === null);\n    state.explicit = num;\n    return this;\n  };\n  Node.prototype.implicit = function implicit(num) {\n    const state = this._baseState;\n    assert2(state.explicit === null && state.implicit === null);\n    state.implicit = num;\n    return this;\n  };\n  Node.prototype.obj = function obj() {\n    const state = this._baseState;\n    const args = Array.prototype.slice.call(arguments);\n    state.obj = true;\n    if (args.length !== 0) this._useArgs(args);\n    return this;\n  };\n  Node.prototype.key = function key(newKey) {\n    const state = this._baseState;\n    assert2(state.key === null);\n    state.key = newKey;\n    return this;\n  };\n  Node.prototype.any = function any() {\n    const state = this._baseState;\n    state.any = true;\n    return this;\n  };\n  Node.prototype.choice = function choice(obj) {\n    const state = this._baseState;\n    assert2(state.choice === null);\n    state.choice = obj;\n    this._useArgs(Object.keys(obj).map(function(key) {\n      return obj[key];\n    }));\n    return this;\n  };\n  Node.prototype.contains = function contains(item) {\n    const state = this._baseState;\n    assert2(state.use === null);\n    state.contains = item;\n    return this;\n  };\n  Node.prototype._decode = function decode(input, options) {\n    const state = this._baseState;\n    if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));\n    let result = state[\"default\"];\n    let present = true;\n    let prevKey = null;\n    if (state.key !== null) prevKey = input.enterKey(state.key);\n    if (state.optional) {\n      let tag = null;\n      if (state.explicit !== null) tag = state.explicit;\n      else if (state.implicit !== null) tag = state.implicit;\n      else if (state.tag !== null) tag = state.tag;\n      if (tag === null && !state.any) {\n        const save = input.save();\n        try {\n          if (state.choice === null) this._decodeGeneric(state.tag, input, options);\n          else this._decodeChoice(input, options);\n          present = true;\n        } catch (e7) {\n          present = false;\n        }\n        input.restore(save);\n      } else {\n        present = this._peekTag(input, tag, state.any);\n        if (input.isError(present)) return present;\n      }\n    }\n    let prevObj;\n    if (state.obj && present) prevObj = input.enterObject();\n    if (present) {\n      if (state.explicit !== null) {\n        const explicit = this._decodeTag(input, state.explicit);\n        if (input.isError(explicit)) return explicit;\n        input = explicit;\n      }\n      const start = input.offset;\n      if (state.use === null && state.choice === null) {\n        let save;\n        if (state.any) save = input.save();\n        const body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);\n        if (input.isError(body)) return body;\n        if (state.any) result = input.raw(save);\n        else input = body;\n      }\n      if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, \"tagged\");\n      if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, \"content\");\n      if (state.any) ;\n      else if (state.choice === null) {\n        result = this._decodeGeneric(state.tag, input, options);\n      } else {\n        result = this._decodeChoice(input, options);\n      }\n      if (input.isError(result)) return result;\n      if (!state.any && state.choice === null && state.children !== null) {\n        state.children.forEach(function decodeChildren(child) {\n          child._decode(input, options);\n        });\n      }\n      if (state.contains && (state.tag === \"octstr\" || state.tag === \"bitstr\")) {\n        const data = new DecoderBuffer(result);\n        result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);\n      }\n    }\n    if (state.obj && present) result = input.leaveObject(prevObj);\n    if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);\n    else if (prevKey !== null) input.exitKey(prevKey);\n    return result;\n  };\n  Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n    const state = this._baseState;\n    if (tag === \"seq\" || tag === \"set\") return null;\n    if (tag === \"seqof\" || tag === \"setof\") return this._decodeList(input, tag, state.args[0], options);\n    else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);\n    else if (tag === \"objid\" && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);\n    else if (tag === \"objid\") return this._decodeObjid(input, null, null, options);\n    else if (tag === \"gentime\" || tag === \"utctime\") return this._decodeTime(input, tag, options);\n    else if (tag === \"null_\") return this._decodeNull(input, options);\n    else if (tag === \"bool\") return this._decodeBool(input, options);\n    else if (tag === \"objDesc\") return this._decodeStr(input, tag, options);\n    else if (tag === \"int\" || tag === \"enum\") return this._decodeInt(input, state.args && state.args[0], options);\n    if (state.use !== null) {\n      return this._getUse(state.use, input._reporterState.obj)._decode(input, options);\n    } else {\n      return input.error(\"unknown tag: \" + tag);\n    }\n  };\n  Node.prototype._getUse = function _getUse(entity, obj) {\n    const state = this._baseState;\n    state.useDecoder = this._use(entity, obj);\n    assert2(state.useDecoder._baseState.parent === null);\n    state.useDecoder = state.useDecoder._baseState.children[0];\n    if (state.implicit !== state.useDecoder._baseState.implicit) {\n      state.useDecoder = state.useDecoder.clone();\n      state.useDecoder._baseState.implicit = state.implicit;\n    }\n    return state.useDecoder;\n  };\n  Node.prototype._decodeChoice = function decodeChoice(input, options) {\n    const state = this._baseState;\n    let result = null;\n    let match = false;\n    Object.keys(state.choice).some(function(key) {\n      const save = input.save();\n      const node = state.choice[key];\n      try {\n        const value = node._decode(input, options);\n        if (input.isError(value)) return false;\n        result = {\n          type: key,\n          value\n        };\n        match = true;\n      } catch (e7) {\n        input.restore(save);\n        return false;\n      }\n      return true;\n    }, this);\n    if (!match) return input.error(\"Choice not matched\");\n    return result;\n  };\n  Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n    return new EncoderBuffer(data, this.reporter);\n  };\n  Node.prototype._encode = function encode(data, reporter, parent) {\n    const state = this._baseState;\n    if (state[\"default\"] !== null && state[\"default\"] === data) return;\n    const result = this._encodeValue(data, reporter, parent);\n    if (result === void 0) return;\n    if (this._skipDefault(result, reporter, parent)) return;\n    return result;\n  };\n  Node.prototype._encodeValue = function encode(data, reporter, parent) {\n    const state = this._baseState;\n    if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter());\n    let result = null;\n    this.reporter = reporter;\n    if (state.optional && data === void 0) {\n      if (state[\"default\"] !== null) data = state[\"default\"];\n      else return;\n    }\n    let content = null;\n    let primitive = false;\n    if (state.any) {\n      result = this._createEncoderBuffer(data);\n    } else if (state.choice) {\n      result = this._encodeChoice(data, reporter);\n    } else if (state.contains) {\n      content = this._getUse(state.contains, parent)._encode(data, reporter);\n      primitive = true;\n    } else if (state.children) {\n      content = state.children.map(function(child) {\n        if (child._baseState.tag === \"null_\") return child._encode(null, reporter, data);\n        if (child._baseState.key === null) return reporter.error(\"Child should have a key\");\n        const prevKey = reporter.enterKey(child._baseState.key);\n        if (typeof data !== \"object\") return reporter.error(\"Child expected, but input is not object\");\n        const res = child._encode(data[child._baseState.key], reporter, data);\n        reporter.leaveKey(prevKey);\n        return res;\n      }, this).filter(function(child) {\n        return child;\n      });\n      content = this._createEncoderBuffer(content);\n    } else {\n      if (state.tag === \"seqof\" || state.tag === \"setof\") {\n        if (!(state.args && state.args.length === 1)) return reporter.error(\"Too many args for : \" + state.tag);\n        if (!Array.isArray(data)) return reporter.error(\"seqof/setof, but data is not Array\");\n        const child = this.clone();\n        child._baseState.implicit = null;\n        content = this._createEncoderBuffer(data.map(function(item) {\n          const state2 = this._baseState;\n          return this._getUse(state2.args[0], data)._encode(item, reporter);\n        }, child));\n      } else if (state.use !== null) {\n        result = this._getUse(state.use, parent)._encode(data, reporter);\n      } else {\n        content = this._encodePrimitive(state.tag, data);\n        primitive = true;\n      }\n    }\n    if (!state.any && state.choice === null) {\n      const tag = state.implicit !== null ? state.implicit : state.tag;\n      const cls = state.implicit === null ? \"universal\" : \"context\";\n      if (tag === null) {\n        if (state.use === null) reporter.error(\"Tag could be omitted only for .use()\");\n      } else {\n        if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);\n      }\n    }\n    if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, \"context\", result);\n    return result;\n  };\n  Node.prototype._encodeChoice = function encodeChoice(data, reporter) {\n    const state = this._baseState;\n    const node = state.choice[data.type];\n    if (!node) {\n      assert2(false, data.type + \" not found in \" + JSON.stringify(Object.keys(state.choice)));\n    }\n    return node._encode(data.value, reporter);\n  };\n  Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n    const state = this._baseState;\n    if (/str$/.test(tag)) return this._encodeStr(data, tag);\n    else if (tag === \"objid\" && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n    else if (tag === \"objid\") return this._encodeObjid(data, null, null);\n    else if (tag === \"gentime\" || tag === \"utctime\") return this._encodeTime(data, tag);\n    else if (tag === \"null_\") return this._encodeNull();\n    else if (tag === \"int\" || tag === \"enum\") return this._encodeInt(data, state.args && state.reverseArgs[0]);\n    else if (tag === \"bool\") return this._encodeBool(data);\n    else if (tag === \"objDesc\") return this._encodeStr(data, tag);\n    else throw new Error(\"Unsupported tag: \" + tag);\n  };\n  Node.prototype._isNumstr = function isNumstr(str) {\n    return /^[0-9 ]*$/.test(str);\n  };\n  Node.prototype._isPrintstr = function isPrintstr(str) {\n    return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n  };\n  return exports$t$1;\n}\nvar exports$s$1 = {};\nvar _dewExec$s$1 = false;\nfunction dew$s$1() {\n  if (_dewExec$s$1) return exports$s$1;\n  _dewExec$s$1 = true;\n  function reverse(map) {\n    const res = {};\n    Object.keys(map).forEach(function(key) {\n      if ((key | 0) == key) key = key | 0;\n      const value = map[key];\n      res[value] = key;\n    });\n    return res;\n  }\n  exports$s$1.tagClass = {\n    0: \"universal\",\n    1: \"application\",\n    2: \"context\",\n    3: \"private\"\n  };\n  exports$s$1.tagClassByName = reverse(exports$s$1.tagClass);\n  exports$s$1.tag = {\n    0: \"end\",\n    1: \"bool\",\n    2: \"int\",\n    3: \"bitstr\",\n    4: \"octstr\",\n    5: \"null_\",\n    6: \"objid\",\n    7: \"objDesc\",\n    8: \"external\",\n    9: \"real\",\n    10: \"enum\",\n    11: \"embed\",\n    12: \"utf8str\",\n    13: \"relativeOid\",\n    16: \"seq\",\n    17: \"set\",\n    18: \"numstr\",\n    19: \"printstr\",\n    20: \"t61str\",\n    21: \"videostr\",\n    22: \"ia5str\",\n    23: \"utctime\",\n    24: \"gentime\",\n    25: \"graphstr\",\n    26: \"iso646str\",\n    27: \"genstr\",\n    28: \"unistr\",\n    29: \"charstr\",\n    30: \"bmpstr\"\n  };\n  exports$s$1.tagByName = reverse(exports$s$1.tag);\n  return exports$s$1;\n}\nvar exports$r$1 = {};\nvar _dewExec$r$1 = false;\nfunction dew$r$1() {\n  if (_dewExec$r$1) return exports$r$1;\n  _dewExec$r$1 = true;\n  const inherits = dew$f$2();\n  const Buffer = dew$w$1().Buffer;\n  const Node = dew$t$1();\n  const der = dew$s$1();\n  function DEREncoder(entity) {\n    this.enc = \"der\";\n    this.name = entity.name;\n    this.entity = entity;\n    this.tree = new DERNode();\n    this.tree._init(entity.body);\n  }\n  exports$r$1 = DEREncoder;\n  DEREncoder.prototype.encode = function encode(data, reporter) {\n    return this.tree._encode(data, reporter).join();\n  };\n  function DERNode(parent) {\n    Node.call(this, \"der\", parent);\n  }\n  inherits(DERNode, Node);\n  DERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n    const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n    if (content.length < 128) {\n      const header2 = Buffer.alloc(2);\n      header2[0] = encodedTag;\n      header2[1] = content.length;\n      return this._createEncoderBuffer([header2, content]);\n    }\n    let lenOctets = 1;\n    for (let i5 = content.length; i5 >= 256; i5 >>= 8) lenOctets++;\n    const header = Buffer.alloc(1 + 1 + lenOctets);\n    header[0] = encodedTag;\n    header[1] = 128 | lenOctets;\n    for (let i5 = 1 + lenOctets, j4 = content.length; j4 > 0; i5--, j4 >>= 8) header[i5] = j4 & 255;\n    return this._createEncoderBuffer([header, content]);\n  };\n  DERNode.prototype._encodeStr = function encodeStr(str, tag) {\n    if (tag === \"bitstr\") {\n      return this._createEncoderBuffer([str.unused | 0, str.data]);\n    } else if (tag === \"bmpstr\") {\n      const buf = Buffer.alloc(str.length * 2);\n      for (let i5 = 0; i5 < str.length; i5++) {\n        buf.writeUInt16BE(str.charCodeAt(i5), i5 * 2);\n      }\n      return this._createEncoderBuffer(buf);\n    } else if (tag === \"numstr\") {\n      if (!this._isNumstr(str)) {\n        return this.reporter.error(\"Encoding of string type: numstr supports only digits and space\");\n      }\n      return this._createEncoderBuffer(str);\n    } else if (tag === \"printstr\") {\n      if (!this._isPrintstr(str)) {\n        return this.reporter.error(\"Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark\");\n      }\n      return this._createEncoderBuffer(str);\n    } else if (/str$/.test(tag)) {\n      return this._createEncoderBuffer(str);\n    } else if (tag === \"objDesc\") {\n      return this._createEncoderBuffer(str);\n    } else {\n      return this.reporter.error(\"Encoding of string type: \" + tag + \" unsupported\");\n    }\n  };\n  DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n    if (typeof id === \"string\") {\n      if (!values) return this.reporter.error(\"string objid given, but no values map found\");\n      if (!values.hasOwnProperty(id)) return this.reporter.error(\"objid not found in values map\");\n      id = values[id].split(/[\\s.]+/g);\n      for (let i5 = 0; i5 < id.length; i5++) id[i5] |= 0;\n    } else if (Array.isArray(id)) {\n      id = id.slice();\n      for (let i5 = 0; i5 < id.length; i5++) id[i5] |= 0;\n    }\n    if (!Array.isArray(id)) {\n      return this.reporter.error(\"objid() should be either array or string, got: \" + JSON.stringify(id));\n    }\n    if (!relative) {\n      if (id[1] >= 40) return this.reporter.error(\"Second objid identifier OOB\");\n      id.splice(0, 2, id[0] * 40 + id[1]);\n    }\n    let size = 0;\n    for (let i5 = 0; i5 < id.length; i5++) {\n      let ident = id[i5];\n      for (size++; ident >= 128; ident >>= 7) size++;\n    }\n    const objid = Buffer.alloc(size);\n    let offset = objid.length - 1;\n    for (let i5 = id.length - 1; i5 >= 0; i5--) {\n      let ident = id[i5];\n      objid[offset--] = ident & 127;\n      while ((ident >>= 7) > 0) objid[offset--] = 128 | ident & 127;\n    }\n    return this._createEncoderBuffer(objid);\n  };\n  function two(num) {\n    if (num < 10) return \"0\" + num;\n    else return num;\n  }\n  DERNode.prototype._encodeTime = function encodeTime(time, tag) {\n    let str;\n    const date = new Date(time);\n    if (tag === \"gentime\") {\n      str = [two(date.getUTCFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), \"Z\"].join(\"\");\n    } else if (tag === \"utctime\") {\n      str = [two(date.getUTCFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), \"Z\"].join(\"\");\n    } else {\n      this.reporter.error(\"Encoding \" + tag + \" time is not supported yet\");\n    }\n    return this._encodeStr(str, \"octstr\");\n  };\n  DERNode.prototype._encodeNull = function encodeNull() {\n    return this._createEncoderBuffer(\"\");\n  };\n  DERNode.prototype._encodeInt = function encodeInt(num, values) {\n    if (typeof num === \"string\") {\n      if (!values) return this.reporter.error(\"String int or enum given, but no values map\");\n      if (!values.hasOwnProperty(num)) {\n        return this.reporter.error(\"Values map doesn't contain: \" + JSON.stringify(num));\n      }\n      num = values[num];\n    }\n    if (typeof num !== \"number\" && !Buffer.isBuffer(num)) {\n      const numArray = num.toArray();\n      if (!num.sign && numArray[0] & 128) {\n        numArray.unshift(0);\n      }\n      num = Buffer.from(numArray);\n    }\n    if (Buffer.isBuffer(num)) {\n      let size2 = num.length;\n      if (num.length === 0) size2++;\n      const out2 = Buffer.alloc(size2);\n      num.copy(out2);\n      if (num.length === 0) out2[0] = 0;\n      return this._createEncoderBuffer(out2);\n    }\n    if (num < 128) return this._createEncoderBuffer(num);\n    if (num < 256) return this._createEncoderBuffer([0, num]);\n    let size = 1;\n    for (let i5 = num; i5 >= 256; i5 >>= 8) size++;\n    const out = new Array(size);\n    for (let i5 = out.length - 1; i5 >= 0; i5--) {\n      out[i5] = num & 255;\n      num >>= 8;\n    }\n    if (out[0] & 128) {\n      out.unshift(0);\n    }\n    return this._createEncoderBuffer(Buffer.from(out));\n  };\n  DERNode.prototype._encodeBool = function encodeBool(value) {\n    return this._createEncoderBuffer(value ? 255 : 0);\n  };\n  DERNode.prototype._use = function use(entity, obj) {\n    if (typeof entity === \"function\") entity = entity(obj);\n    return entity._getEncoder(\"der\").tree;\n  };\n  DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n    const state = this._baseState;\n    let i5;\n    if (state[\"default\"] === null) return false;\n    const data = dataBuffer.join();\n    if (state.defaultBuffer === void 0) state.defaultBuffer = this._encodeValue(state[\"default\"], reporter, parent).join();\n    if (data.length !== state.defaultBuffer.length) return false;\n    for (i5 = 0; i5 < data.length; i5++) if (data[i5] !== state.defaultBuffer[i5]) return false;\n    return true;\n  };\n  function encodeTag(tag, primitive, cls, reporter) {\n    let res;\n    if (tag === \"seqof\") tag = \"seq\";\n    else if (tag === \"setof\") tag = \"set\";\n    if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];\n    else if (typeof tag === \"number\" && (tag | 0) === tag) res = tag;\n    else return reporter.error(\"Unknown tag: \" + tag);\n    if (res >= 31) return reporter.error(\"Multi-octet tag encoding unsupported\");\n    if (!primitive) res |= 32;\n    res |= der.tagClassByName[cls || \"universal\"] << 6;\n    return res;\n  }\n  return exports$r$1;\n}\nvar exports$q$1 = {};\nvar _dewExec$q$1 = false;\nfunction dew$q$1() {\n  if (_dewExec$q$1) return exports$q$1;\n  _dewExec$q$1 = true;\n  const inherits = dew$f$2();\n  const DEREncoder = dew$r$1();\n  function PEMEncoder(entity) {\n    DEREncoder.call(this, entity);\n    this.enc = \"pem\";\n  }\n  inherits(PEMEncoder, DEREncoder);\n  exports$q$1 = PEMEncoder;\n  PEMEncoder.prototype.encode = function encode(data, options) {\n    const buf = DEREncoder.prototype.encode.call(this, data);\n    const p5 = buf.toString(\"base64\");\n    const out = [\"-----BEGIN \" + options.label + \"-----\"];\n    for (let i5 = 0; i5 < p5.length; i5 += 64) out.push(p5.slice(i5, i5 + 64));\n    out.push(\"-----END \" + options.label + \"-----\");\n    return out.join(\"\\n\");\n  };\n  return exports$q$1;\n}\nvar exports$p$1 = {};\nvar _dewExec$p$1 = false;\nfunction dew$p$1() {\n  if (_dewExec$p$1) return exports$p$1;\n  _dewExec$p$1 = true;\n  const encoders = exports$p$1;\n  encoders.der = dew$r$1();\n  encoders.pem = dew$q$1();\n  return exports$p$1;\n}\nvar exports$o$1 = {};\nvar _dewExec$o$1 = false;\nfunction dew$o$1() {\n  if (_dewExec$o$1) return exports$o$1;\n  _dewExec$o$1 = true;\n  const inherits = dew$f$2();\n  const bignum = dew$x$1();\n  const DecoderBuffer = dew$u$1().DecoderBuffer;\n  const Node = dew$t$1();\n  const der = dew$s$1();\n  function DERDecoder(entity) {\n    this.enc = \"der\";\n    this.name = entity.name;\n    this.entity = entity;\n    this.tree = new DERNode();\n    this.tree._init(entity.body);\n  }\n  exports$o$1 = DERDecoder;\n  DERDecoder.prototype.decode = function decode(data, options) {\n    if (!DecoderBuffer.isDecoderBuffer(data)) {\n      data = new DecoderBuffer(data, options);\n    }\n    return this.tree._decode(data, options);\n  };\n  function DERNode(parent) {\n    Node.call(this, \"der\", parent);\n  }\n  inherits(DERNode, Node);\n  DERNode.prototype._peekTag = function peekTag(buffer2, tag, any) {\n    if (buffer2.isEmpty()) return false;\n    const state = buffer2.save();\n    const decodedTag = derDecodeTag(buffer2, 'Failed to peek tag: \"' + tag + '\"');\n    if (buffer2.isError(decodedTag)) return decodedTag;\n    buffer2.restore(state);\n    return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + \"of\" === tag || any;\n  };\n  DERNode.prototype._decodeTag = function decodeTag(buffer2, tag, any) {\n    const decodedTag = derDecodeTag(buffer2, 'Failed to decode tag of \"' + tag + '\"');\n    if (buffer2.isError(decodedTag)) return decodedTag;\n    let len = derDecodeLen(buffer2, decodedTag.primitive, 'Failed to get length of \"' + tag + '\"');\n    if (buffer2.isError(len)) return len;\n    if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + \"of\" !== tag) {\n      return buffer2.error('Failed to match tag: \"' + tag + '\"');\n    }\n    if (decodedTag.primitive || len !== null) return buffer2.skip(len, 'Failed to match body of: \"' + tag + '\"');\n    const state = buffer2.save();\n    const res = this._skipUntilEnd(buffer2, 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n    if (buffer2.isError(res)) return res;\n    len = buffer2.offset - state.offset;\n    buffer2.restore(state);\n    return buffer2.skip(len, 'Failed to match body of: \"' + tag + '\"');\n  };\n  DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer2, fail) {\n    for (; ; ) {\n      const tag = derDecodeTag(buffer2, fail);\n      if (buffer2.isError(tag)) return tag;\n      const len = derDecodeLen(buffer2, tag.primitive, fail);\n      if (buffer2.isError(len)) return len;\n      let res;\n      if (tag.primitive || len !== null) res = buffer2.skip(len);\n      else res = this._skipUntilEnd(buffer2, fail);\n      if (buffer2.isError(res)) return res;\n      if (tag.tagStr === \"end\") break;\n    }\n  };\n  DERNode.prototype._decodeList = function decodeList(buffer2, tag, decoder, options) {\n    const result = [];\n    while (!buffer2.isEmpty()) {\n      const possibleEnd = this._peekTag(buffer2, \"end\");\n      if (buffer2.isError(possibleEnd)) return possibleEnd;\n      const res = decoder.decode(buffer2, \"der\", options);\n      if (buffer2.isError(res) && possibleEnd) break;\n      result.push(res);\n    }\n    return result;\n  };\n  DERNode.prototype._decodeStr = function decodeStr(buffer2, tag) {\n    if (tag === \"bitstr\") {\n      const unused = buffer2.readUInt8();\n      if (buffer2.isError(unused)) return unused;\n      return {\n        unused,\n        data: buffer2.raw()\n      };\n    } else if (tag === \"bmpstr\") {\n      const raw = buffer2.raw();\n      if (raw.length % 2 === 1) return buffer2.error(\"Decoding of string type: bmpstr length mismatch\");\n      let str = \"\";\n      for (let i5 = 0; i5 < raw.length / 2; i5++) {\n        str += String.fromCharCode(raw.readUInt16BE(i5 * 2));\n      }\n      return str;\n    } else if (tag === \"numstr\") {\n      const numstr = buffer2.raw().toString(\"ascii\");\n      if (!this._isNumstr(numstr)) {\n        return buffer2.error(\"Decoding of string type: numstr unsupported characters\");\n      }\n      return numstr;\n    } else if (tag === \"octstr\") {\n      return buffer2.raw();\n    } else if (tag === \"objDesc\") {\n      return buffer2.raw();\n    } else if (tag === \"printstr\") {\n      const printstr = buffer2.raw().toString(\"ascii\");\n      if (!this._isPrintstr(printstr)) {\n        return buffer2.error(\"Decoding of string type: printstr unsupported characters\");\n      }\n      return printstr;\n    } else if (/str$/.test(tag)) {\n      return buffer2.raw().toString();\n    } else {\n      return buffer2.error(\"Decoding of string type: \" + tag + \" unsupported\");\n    }\n  };\n  DERNode.prototype._decodeObjid = function decodeObjid(buffer2, values, relative) {\n    let result;\n    const identifiers = [];\n    let ident = 0;\n    let subident = 0;\n    while (!buffer2.isEmpty()) {\n      subident = buffer2.readUInt8();\n      ident <<= 7;\n      ident |= subident & 127;\n      if ((subident & 128) === 0) {\n        identifiers.push(ident);\n        ident = 0;\n      }\n    }\n    if (subident & 128) identifiers.push(ident);\n    const first = identifiers[0] / 40 | 0;\n    const second = identifiers[0] % 40;\n    if (relative) result = identifiers;\n    else result = [first, second].concat(identifiers.slice(1));\n    if (values) {\n      let tmp = values[result.join(\" \")];\n      if (tmp === void 0) tmp = values[result.join(\".\")];\n      if (tmp !== void 0) result = tmp;\n    }\n    return result;\n  };\n  DERNode.prototype._decodeTime = function decodeTime(buffer2, tag) {\n    const str = buffer2.raw().toString();\n    let year;\n    let mon;\n    let day;\n    let hour;\n    let min;\n    let sec;\n    if (tag === \"gentime\") {\n      year = str.slice(0, 4) | 0;\n      mon = str.slice(4, 6) | 0;\n      day = str.slice(6, 8) | 0;\n      hour = str.slice(8, 10) | 0;\n      min = str.slice(10, 12) | 0;\n      sec = str.slice(12, 14) | 0;\n    } else if (tag === \"utctime\") {\n      year = str.slice(0, 2) | 0;\n      mon = str.slice(2, 4) | 0;\n      day = str.slice(4, 6) | 0;\n      hour = str.slice(6, 8) | 0;\n      min = str.slice(8, 10) | 0;\n      sec = str.slice(10, 12) | 0;\n      if (year < 70) year = 2e3 + year;\n      else year = 1900 + year;\n    } else {\n      return buffer2.error(\"Decoding \" + tag + \" time is not supported yet\");\n    }\n    return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n  };\n  DERNode.prototype._decodeNull = function decodeNull() {\n    return null;\n  };\n  DERNode.prototype._decodeBool = function decodeBool(buffer2) {\n    const res = buffer2.readUInt8();\n    if (buffer2.isError(res)) return res;\n    else return res !== 0;\n  };\n  DERNode.prototype._decodeInt = function decodeInt(buffer2, values) {\n    const raw = buffer2.raw();\n    let res = new bignum(raw);\n    if (values) res = values[res.toString(10)] || res;\n    return res;\n  };\n  DERNode.prototype._use = function use(entity, obj) {\n    if (typeof entity === \"function\") entity = entity(obj);\n    return entity._getDecoder(\"der\").tree;\n  };\n  function derDecodeTag(buf, fail) {\n    let tag = buf.readUInt8(fail);\n    if (buf.isError(tag)) return tag;\n    const cls = der.tagClass[tag >> 6];\n    const primitive = (tag & 32) === 0;\n    if ((tag & 31) === 31) {\n      let oct = tag;\n      tag = 0;\n      while ((oct & 128) === 128) {\n        oct = buf.readUInt8(fail);\n        if (buf.isError(oct)) return oct;\n        tag <<= 7;\n        tag |= oct & 127;\n      }\n    } else {\n      tag &= 31;\n    }\n    const tagStr = der.tag[tag];\n    return {\n      cls,\n      primitive,\n      tag,\n      tagStr\n    };\n  }\n  function derDecodeLen(buf, primitive, fail) {\n    let len = buf.readUInt8(fail);\n    if (buf.isError(len)) return len;\n    if (!primitive && len === 128) return null;\n    if ((len & 128) === 0) {\n      return len;\n    }\n    const num = len & 127;\n    if (num > 4) return buf.error(\"length octect is too long\");\n    len = 0;\n    for (let i5 = 0; i5 < num; i5++) {\n      len <<= 8;\n      const j4 = buf.readUInt8(fail);\n      if (buf.isError(j4)) return j4;\n      len |= j4;\n    }\n    return len;\n  }\n  return exports$o$1;\n}\nvar exports$n$1 = {};\nvar _dewExec$n$1 = false;\nfunction dew$n$1() {\n  if (_dewExec$n$1) return exports$n$1;\n  _dewExec$n$1 = true;\n  const inherits = dew$f$2();\n  const Buffer = dew$w$1().Buffer;\n  const DERDecoder = dew$o$1();\n  function PEMDecoder(entity) {\n    DERDecoder.call(this, entity);\n    this.enc = \"pem\";\n  }\n  inherits(PEMDecoder, DERDecoder);\n  exports$n$1 = PEMDecoder;\n  PEMDecoder.prototype.decode = function decode(data, options) {\n    const lines = data.toString().split(/[\\r\\n]+/g);\n    const label = options.label.toUpperCase();\n    const re3 = /^-----(BEGIN|END) ([^-]+)-----$/;\n    let start = -1;\n    let end = -1;\n    for (let i5 = 0; i5 < lines.length; i5++) {\n      const match = lines[i5].match(re3);\n      if (match === null) continue;\n      if (match[2] !== label) continue;\n      if (start === -1) {\n        if (match[1] !== \"BEGIN\") break;\n        start = i5;\n      } else {\n        if (match[1] !== \"END\") break;\n        end = i5;\n        break;\n      }\n    }\n    if (start === -1 || end === -1) throw new Error(\"PEM section not found for: \" + label);\n    const base64 = lines.slice(start + 1, end).join(\"\");\n    base64.replace(/[^a-z0-9+/=]+/gi, \"\");\n    const input = Buffer.from(base64, \"base64\");\n    return DERDecoder.prototype.decode.call(this, input, options);\n  };\n  return exports$n$1;\n}\nvar exports$m$1 = {};\nvar _dewExec$m$1 = false;\nfunction dew$m$1() {\n  if (_dewExec$m$1) return exports$m$1;\n  _dewExec$m$1 = true;\n  const decoders = exports$m$1;\n  decoders.der = dew$o$1();\n  decoders.pem = dew$n$1();\n  return exports$m$1;\n}\nvar exports$l$1 = {};\nvar _dewExec$l$1 = false;\nfunction dew$l$1() {\n  if (_dewExec$l$1) return exports$l$1;\n  _dewExec$l$1 = true;\n  const encoders = dew$p$1();\n  const decoders = dew$m$1();\n  const inherits = dew$f$2();\n  const api = exports$l$1;\n  api.define = function define(name2, body) {\n    return new Entity(name2, body);\n  };\n  function Entity(name2, body) {\n    this.name = name2;\n    this.body = body;\n    this.decoders = {};\n    this.encoders = {};\n  }\n  Entity.prototype._createNamed = function createNamed(Base) {\n    const name2 = this.name;\n    function Generated(entity) {\n      this._initNamed(entity, name2);\n    }\n    inherits(Generated, Base);\n    Generated.prototype._initNamed = function _initNamed(entity, name3) {\n      Base.call(this, entity, name3);\n    };\n    return new Generated(this);\n  };\n  Entity.prototype._getDecoder = function _getDecoder(enc) {\n    enc = enc || \"der\";\n    if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(decoders[enc]);\n    return this.decoders[enc];\n  };\n  Entity.prototype.decode = function decode(data, enc, options) {\n    return this._getDecoder(enc).decode(data, options);\n  };\n  Entity.prototype._getEncoder = function _getEncoder(enc) {\n    enc = enc || \"der\";\n    if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(encoders[enc]);\n    return this.encoders[enc];\n  };\n  Entity.prototype.encode = function encode(data, enc, reporter) {\n    return this._getEncoder(enc).encode(data, reporter);\n  };\n  return exports$l$1;\n}\nvar exports$k$1 = {};\nvar _dewExec$k$1 = false;\nfunction dew$k$1() {\n  if (_dewExec$k$1) return exports$k$1;\n  _dewExec$k$1 = true;\n  const base = exports$k$1;\n  base.Reporter = dew$v$1().Reporter;\n  base.DecoderBuffer = dew$u$1().DecoderBuffer;\n  base.EncoderBuffer = dew$u$1().EncoderBuffer;\n  base.Node = dew$t$1();\n  return exports$k$1;\n}\nvar exports$j$1 = {};\nvar _dewExec$j$1 = false;\nfunction dew$j$1() {\n  if (_dewExec$j$1) return exports$j$1;\n  _dewExec$j$1 = true;\n  const constants2 = exports$j$1;\n  constants2._reverse = function reverse(map) {\n    const res = {};\n    Object.keys(map).forEach(function(key) {\n      if ((key | 0) == key) key = key | 0;\n      const value = map[key];\n      res[value] = key;\n    });\n    return res;\n  };\n  constants2.der = dew$s$1();\n  return exports$j$1;\n}\nvar exports$i$1 = {};\nvar _dewExec$i$1 = false;\nfunction dew$i$1() {\n  if (_dewExec$i$1) return exports$i$1;\n  _dewExec$i$1 = true;\n  const asn1 = exports$i$1;\n  asn1.bignum = dew$x$1();\n  asn1.define = dew$l$1().define;\n  asn1.base = dew$k$1();\n  asn1.constants = dew$j$1();\n  asn1.decoders = dew$m$1();\n  asn1.encoders = dew$p$1();\n  return exports$i$1;\n}\nvar exports$h$1 = {};\nvar _dewExec$h$1 = false;\nfunction dew$h$1() {\n  if (_dewExec$h$1) return exports$h$1;\n  _dewExec$h$1 = true;\n  var asn = dew$i$1();\n  var Time = asn.define(\"Time\", function() {\n    this.choice({\n      utcTime: this.utctime(),\n      generalTime: this.gentime()\n    });\n  });\n  var AttributeTypeValue = asn.define(\"AttributeTypeValue\", function() {\n    this.seq().obj(this.key(\"type\").objid(), this.key(\"value\").any());\n  });\n  var AlgorithmIdentifier = asn.define(\"AlgorithmIdentifier\", function() {\n    this.seq().obj(this.key(\"algorithm\").objid(), this.key(\"parameters\").optional(), this.key(\"curve\").objid().optional());\n  });\n  var SubjectPublicKeyInfo = asn.define(\"SubjectPublicKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPublicKey\").bitstr());\n  });\n  var RelativeDistinguishedName = asn.define(\"RelativeDistinguishedName\", function() {\n    this.setof(AttributeTypeValue);\n  });\n  var RDNSequence = asn.define(\"RDNSequence\", function() {\n    this.seqof(RelativeDistinguishedName);\n  });\n  var Name = asn.define(\"Name\", function() {\n    this.choice({\n      rdnSequence: this.use(RDNSequence)\n    });\n  });\n  var Validity = asn.define(\"Validity\", function() {\n    this.seq().obj(this.key(\"notBefore\").use(Time), this.key(\"notAfter\").use(Time));\n  });\n  var Extension = asn.define(\"Extension\", function() {\n    this.seq().obj(this.key(\"extnID\").objid(), this.key(\"critical\").bool().def(false), this.key(\"extnValue\").octstr());\n  });\n  var TBSCertificate = asn.define(\"TBSCertificate\", function() {\n    this.seq().obj(this.key(\"version\").explicit(0).int().optional(), this.key(\"serialNumber\").int(), this.key(\"signature\").use(AlgorithmIdentifier), this.key(\"issuer\").use(Name), this.key(\"validity\").use(Validity), this.key(\"subject\").use(Name), this.key(\"subjectPublicKeyInfo\").use(SubjectPublicKeyInfo), this.key(\"issuerUniqueID\").implicit(1).bitstr().optional(), this.key(\"subjectUniqueID\").implicit(2).bitstr().optional(), this.key(\"extensions\").explicit(3).seqof(Extension).optional());\n  });\n  var X509Certificate = asn.define(\"X509Certificate\", function() {\n    this.seq().obj(this.key(\"tbsCertificate\").use(TBSCertificate), this.key(\"signatureAlgorithm\").use(AlgorithmIdentifier), this.key(\"signatureValue\").bitstr());\n  });\n  exports$h$1 = X509Certificate;\n  return exports$h$1;\n}\nvar exports$g$1 = {};\nvar _dewExec$g$1 = false;\nfunction dew$g$1() {\n  if (_dewExec$g$1) return exports$g$1;\n  _dewExec$g$1 = true;\n  var asn1 = dew$i$1();\n  exports$g$1.certificate = dew$h$1();\n  var RSAPrivateKey = asn1.define(\"RSAPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\").int(), this.key(\"modulus\").int(), this.key(\"publicExponent\").int(), this.key(\"privateExponent\").int(), this.key(\"prime1\").int(), this.key(\"prime2\").int(), this.key(\"exponent1\").int(), this.key(\"exponent2\").int(), this.key(\"coefficient\").int());\n  });\n  exports$g$1.RSAPrivateKey = RSAPrivateKey;\n  var RSAPublicKey = asn1.define(\"RSAPublicKey\", function() {\n    this.seq().obj(this.key(\"modulus\").int(), this.key(\"publicExponent\").int());\n  });\n  exports$g$1.RSAPublicKey = RSAPublicKey;\n  var PublicKey = asn1.define(\"SubjectPublicKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPublicKey\").bitstr());\n  });\n  exports$g$1.PublicKey = PublicKey;\n  var AlgorithmIdentifier = asn1.define(\"AlgorithmIdentifier\", function() {\n    this.seq().obj(this.key(\"algorithm\").objid(), this.key(\"none\").null_().optional(), this.key(\"curve\").objid().optional(), this.key(\"params\").seq().obj(this.key(\"p\").int(), this.key(\"q\").int(), this.key(\"g\").int()).optional());\n  });\n  var PrivateKeyInfo = asn1.define(\"PrivateKeyInfo\", function() {\n    this.seq().obj(this.key(\"version\").int(), this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPrivateKey\").octstr());\n  });\n  exports$g$1.PrivateKey = PrivateKeyInfo;\n  var EncryptedPrivateKeyInfo = asn1.define(\"EncryptedPrivateKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(), this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(), this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(), this.key(\"iters\").int())), this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(), this.key(\"iv\").octstr()))), this.key(\"subjectPrivateKey\").octstr());\n  });\n  exports$g$1.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\n  var DSAPrivateKey = asn1.define(\"DSAPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\").int(), this.key(\"p\").int(), this.key(\"q\").int(), this.key(\"g\").int(), this.key(\"pub_key\").int(), this.key(\"priv_key\").int());\n  });\n  exports$g$1.DSAPrivateKey = DSAPrivateKey;\n  exports$g$1.DSAparam = asn1.define(\"DSAparam\", function() {\n    this.int();\n  });\n  var ECPrivateKey = asn1.define(\"ECPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\").int(), this.key(\"privateKey\").octstr(), this.key(\"parameters\").optional().explicit(0).use(ECParameters), this.key(\"publicKey\").optional().explicit(1).bitstr());\n  });\n  exports$g$1.ECPrivateKey = ECPrivateKey;\n  var ECParameters = asn1.define(\"ECParameters\", function() {\n    this.choice({\n      namedCurve: this.objid()\n    });\n  });\n  exports$g$1.signature = asn1.define(\"signature\", function() {\n    this.seq().obj(this.key(\"r\").int(), this.key(\"s\").int());\n  });\n  return exports$g$1;\n}\nvar _aesid$1 = {\n  \"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\",\n  \"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\",\n  \"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\",\n  \"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\",\n  \"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\",\n  \"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\",\n  \"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\",\n  \"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\",\n  \"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\",\n  \"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\",\n  \"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\",\n  \"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\"\n};\nvar exports$f$1 = {};\nvar _dewExec$f$1 = false;\nfunction dew$f$1() {\n  if (_dewExec$f$1) return exports$f$1;\n  _dewExec$f$1 = true;\n  var findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\n  var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\n  var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\n  var evp = dew$18$1();\n  var ciphers = dew$15$1();\n  var Buffer = dew$1T().Buffer;\n  exports$f$1 = function(okey, password) {\n    var key = okey.toString();\n    var match = key.match(findProc);\n    var decrypted;\n    if (!match) {\n      var match2 = key.match(fullRegex);\n      decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, \"\"), \"base64\");\n    } else {\n      var suite = \"aes\" + match[1];\n      var iv = Buffer.from(match[2], \"hex\");\n      var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, \"\"), \"base64\");\n      var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n      var out = [];\n      var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n      out.push(cipher.update(cipherText));\n      out.push(cipher.final());\n      decrypted = Buffer.concat(out);\n    }\n    var tag = key.match(startRegex)[1];\n    return {\n      tag,\n      data: decrypted\n    };\n  };\n  return exports$f$1;\n}\nvar exports$e$1 = {};\nvar _dewExec$e$1 = false;\nfunction dew$e$1() {\n  if (_dewExec$e$1) return exports$e$1;\n  _dewExec$e$1 = true;\n  var asn1 = dew$g$1();\n  var aesid = _aesid$1;\n  var fixProc = dew$f$1();\n  var ciphers = dew$15$1();\n  var compat = dew$1v();\n  var Buffer = dew$1T().Buffer;\n  exports$e$1 = parseKeys;\n  function parseKeys(buffer2) {\n    var password;\n    if (typeof buffer2 === \"object\" && !Buffer.isBuffer(buffer2)) {\n      password = buffer2.passphrase;\n      buffer2 = buffer2.key;\n    }\n    if (typeof buffer2 === \"string\") {\n      buffer2 = Buffer.from(buffer2);\n    }\n    var stripped = fixProc(buffer2, password);\n    var type = stripped.tag;\n    var data = stripped.data;\n    var subtype, ndata;\n    switch (type) {\n      case \"CERTIFICATE\":\n        ndata = asn1.certificate.decode(data, \"der\").tbsCertificate.subjectPublicKeyInfo;\n      // falls through\n      case \"PUBLIC KEY\":\n        if (!ndata) {\n          ndata = asn1.PublicKey.decode(data, \"der\");\n        }\n        subtype = ndata.algorithm.algorithm.join(\".\");\n        switch (subtype) {\n          case \"1.2.840.113549.1.1.1\":\n            return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, \"der\");\n          case \"1.2.840.10045.2.1\":\n            ndata.subjectPrivateKey = ndata.subjectPublicKey;\n            return {\n              type: \"ec\",\n              data: ndata\n            };\n          case \"1.2.840.10040.4.1\":\n            ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, \"der\");\n            return {\n              type: \"dsa\",\n              data: ndata.algorithm.params\n            };\n          default:\n            throw new Error(\"unknown key id \" + subtype);\n        }\n      // throw new Error('unknown key type ' + type)\n      case \"ENCRYPTED PRIVATE KEY\":\n        data = asn1.EncryptedPrivateKey.decode(data, \"der\");\n        data = decrypt(data, password);\n      // falls through\n      case \"PRIVATE KEY\":\n        ndata = asn1.PrivateKey.decode(data, \"der\");\n        subtype = ndata.algorithm.algorithm.join(\".\");\n        switch (subtype) {\n          case \"1.2.840.113549.1.1.1\":\n            return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, \"der\");\n          case \"1.2.840.10045.2.1\":\n            return {\n              curve: ndata.algorithm.curve,\n              privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, \"der\").privateKey\n            };\n          case \"1.2.840.10040.4.1\":\n            ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, \"der\");\n            return {\n              type: \"dsa\",\n              params: ndata.algorithm.params\n            };\n          default:\n            throw new Error(\"unknown key id \" + subtype);\n        }\n      // throw new Error('unknown key type ' + type)\n      case \"RSA PUBLIC KEY\":\n        return asn1.RSAPublicKey.decode(data, \"der\");\n      case \"RSA PRIVATE KEY\":\n        return asn1.RSAPrivateKey.decode(data, \"der\");\n      case \"DSA PRIVATE KEY\":\n        return {\n          type: \"dsa\",\n          params: asn1.DSAPrivateKey.decode(data, \"der\")\n        };\n      case \"EC PRIVATE KEY\":\n        data = asn1.ECPrivateKey.decode(data, \"der\");\n        return {\n          curve: data.parameters.value,\n          privateKey: data.privateKey\n        };\n      default:\n        throw new Error(\"unknown key type \" + type);\n    }\n  }\n  parseKeys.signature = asn1.signature;\n  function decrypt(data, password) {\n    var salt = data.algorithm.decrypt.kde.kdeparams.salt;\n    var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n    var algo = aesid[data.algorithm.decrypt.cipher.algo.join(\".\")];\n    var iv = data.algorithm.decrypt.cipher.iv;\n    var cipherText = data.subjectPrivateKey;\n    var keylen = parseInt(algo.split(\"-\")[1], 10) / 8;\n    var key = compat.pbkdf2Sync(password, salt, iters, keylen, \"sha1\");\n    var cipher = ciphers.createDecipheriv(algo, key, iv);\n    var out = [];\n    out.push(cipher.update(cipherText));\n    out.push(cipher.final());\n    return Buffer.concat(out);\n  }\n  return exports$e$1;\n}\nvar _curves$1 = {\n  \"1.3.132.0.10\": \"secp256k1\",\n  \"1.3.132.0.33\": \"p224\",\n  \"1.2.840.10045.3.1.1\": \"p192\",\n  \"1.2.840.10045.3.1.7\": \"p256\",\n  \"1.3.132.0.34\": \"p384\",\n  \"1.3.132.0.35\": \"p521\"\n};\nvar exports$d$1 = {};\nvar _dewExec$d$1 = false;\nfunction dew$d$1() {\n  if (_dewExec$d$1) return exports$d$1;\n  _dewExec$d$1 = true;\n  var Buffer = dew$1T().Buffer;\n  var createHmac2 = dew$1C();\n  var crt = dew$W$1();\n  var EC = dew$y$1().ec;\n  var BN = dew$X$1();\n  var parseKeys = dew$e$1();\n  var curves = _curves$1;\n  function sign(hash, key, hashType, signType, tag) {\n    var priv = parseKeys(key);\n    if (priv.curve) {\n      if (signType !== \"ecdsa\" && signType !== \"ecdsa/rsa\") throw new Error(\"wrong private key type\");\n      return ecSign(hash, priv);\n    } else if (priv.type === \"dsa\") {\n      if (signType !== \"dsa\") throw new Error(\"wrong private key type\");\n      return dsaSign(hash, priv, hashType);\n    } else {\n      if (signType !== \"rsa\" && signType !== \"ecdsa/rsa\") throw new Error(\"wrong private key type\");\n    }\n    hash = Buffer.concat([tag, hash]);\n    var len = priv.modulus.byteLength();\n    var pad = [0, 1];\n    while (hash.length + pad.length + 1 < len) pad.push(255);\n    pad.push(0);\n    var i5 = -1;\n    while (++i5 < hash.length) pad.push(hash[i5]);\n    var out = crt(pad, priv);\n    return out;\n  }\n  function ecSign(hash, priv) {\n    var curveId = curves[priv.curve.join(\".\")];\n    if (!curveId) throw new Error(\"unknown curve \" + priv.curve.join(\".\"));\n    var curve = new EC(curveId);\n    var key = curve.keyFromPrivate(priv.privateKey);\n    var out = key.sign(hash);\n    return Buffer.from(out.toDER());\n  }\n  function dsaSign(hash, priv, algo) {\n    var x4 = priv.params.priv_key;\n    var p5 = priv.params.p;\n    var q3 = priv.params.q;\n    var g4 = priv.params.g;\n    var r5 = new BN(0);\n    var k4;\n    var H3 = bits2int(hash, q3).mod(q3);\n    var s5 = false;\n    var kv = getKey(x4, q3, hash, algo);\n    while (s5 === false) {\n      k4 = makeKey(q3, kv, algo);\n      r5 = makeR(g4, k4, p5, q3);\n      s5 = k4.invm(q3).imul(H3.add(x4.mul(r5))).mod(q3);\n      if (s5.cmpn(0) === 0) {\n        s5 = false;\n        r5 = new BN(0);\n      }\n    }\n    return toDER(r5, s5);\n  }\n  function toDER(r5, s5) {\n    r5 = r5.toArray();\n    s5 = s5.toArray();\n    if (r5[0] & 128) r5 = [0].concat(r5);\n    if (s5[0] & 128) s5 = [0].concat(s5);\n    var total = r5.length + s5.length + 4;\n    var res = [48, total, 2, r5.length];\n    res = res.concat(r5, [2, s5.length], s5);\n    return Buffer.from(res);\n  }\n  function getKey(x4, q3, hash, algo) {\n    x4 = Buffer.from(x4.toArray());\n    if (x4.length < q3.byteLength()) {\n      var zeros = Buffer.alloc(q3.byteLength() - x4.length);\n      x4 = Buffer.concat([zeros, x4]);\n    }\n    var hlen = hash.length;\n    var hbits = bits2octets(hash, q3);\n    var v5 = Buffer.alloc(hlen);\n    v5.fill(1);\n    var k4 = Buffer.alloc(hlen);\n    k4 = createHmac2(algo, k4).update(v5).update(Buffer.from([0])).update(x4).update(hbits).digest();\n    v5 = createHmac2(algo, k4).update(v5).digest();\n    k4 = createHmac2(algo, k4).update(v5).update(Buffer.from([1])).update(x4).update(hbits).digest();\n    v5 = createHmac2(algo, k4).update(v5).digest();\n    return {\n      k: k4,\n      v: v5\n    };\n  }\n  function bits2int(obits, q3) {\n    var bits = new BN(obits);\n    var shift = (obits.length << 3) - q3.bitLength();\n    if (shift > 0) bits.ishrn(shift);\n    return bits;\n  }\n  function bits2octets(bits, q3) {\n    bits = bits2int(bits, q3);\n    bits = bits.mod(q3);\n    var out = Buffer.from(bits.toArray());\n    if (out.length < q3.byteLength()) {\n      var zeros = Buffer.alloc(q3.byteLength() - out.length);\n      out = Buffer.concat([zeros, out]);\n    }\n    return out;\n  }\n  function makeKey(q3, kv, algo) {\n    var t5;\n    var k4;\n    do {\n      t5 = Buffer.alloc(0);\n      while (t5.length * 8 < q3.bitLength()) {\n        kv.v = createHmac2(algo, kv.k).update(kv.v).digest();\n        t5 = Buffer.concat([t5, kv.v]);\n      }\n      k4 = bits2int(t5, q3);\n      kv.k = createHmac2(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n      kv.v = createHmac2(algo, kv.k).update(kv.v).digest();\n    } while (k4.cmp(q3) !== -1);\n    return k4;\n  }\n  function makeR(g4, k4, p5, q3) {\n    return g4.toRed(BN.mont(p5)).redPow(k4).fromRed().mod(q3);\n  }\n  exports$d$1 = sign;\n  exports$d$1.getKey = getKey;\n  exports$d$1.makeKey = makeKey;\n  return exports$d$1;\n}\nvar exports$c$1 = {};\nvar _dewExec$c$1 = false;\nfunction dew$c$1() {\n  if (_dewExec$c$1) return exports$c$1;\n  _dewExec$c$1 = true;\n  var Buffer = dew$1T().Buffer;\n  var BN = dew$X$1();\n  var EC = dew$y$1().ec;\n  var parseKeys = dew$e$1();\n  var curves = _curves$1;\n  function verify(sig, hash, key, signType, tag) {\n    var pub = parseKeys(key);\n    if (pub.type === \"ec\") {\n      if (signType !== \"ecdsa\" && signType !== \"ecdsa/rsa\") throw new Error(\"wrong public key type\");\n      return ecVerify(sig, hash, pub);\n    } else if (pub.type === \"dsa\") {\n      if (signType !== \"dsa\") throw new Error(\"wrong public key type\");\n      return dsaVerify(sig, hash, pub);\n    } else {\n      if (signType !== \"rsa\" && signType !== \"ecdsa/rsa\") throw new Error(\"wrong public key type\");\n    }\n    hash = Buffer.concat([tag, hash]);\n    var len = pub.modulus.byteLength();\n    var pad = [1];\n    var padNum = 0;\n    while (hash.length + pad.length + 2 < len) {\n      pad.push(255);\n      padNum++;\n    }\n    pad.push(0);\n    var i5 = -1;\n    while (++i5 < hash.length) {\n      pad.push(hash[i5]);\n    }\n    pad = Buffer.from(pad);\n    var red = BN.mont(pub.modulus);\n    sig = new BN(sig).toRed(red);\n    sig = sig.redPow(new BN(pub.publicExponent));\n    sig = Buffer.from(sig.fromRed().toArray());\n    var out = padNum < 8 ? 1 : 0;\n    len = Math.min(sig.length, pad.length);\n    if (sig.length !== pad.length) out = 1;\n    i5 = -1;\n    while (++i5 < len) out |= sig[i5] ^ pad[i5];\n    return out === 0;\n  }\n  function ecVerify(sig, hash, pub) {\n    var curveId = curves[pub.data.algorithm.curve.join(\".\")];\n    if (!curveId) throw new Error(\"unknown curve \" + pub.data.algorithm.curve.join(\".\"));\n    var curve = new EC(curveId);\n    var pubkey = pub.data.subjectPrivateKey.data;\n    return curve.verify(hash, sig, pubkey);\n  }\n  function dsaVerify(sig, hash, pub) {\n    var p5 = pub.data.p;\n    var q3 = pub.data.q;\n    var g4 = pub.data.g;\n    var y5 = pub.data.pub_key;\n    var unpacked = parseKeys.signature.decode(sig, \"der\");\n    var s5 = unpacked.s;\n    var r5 = unpacked.r;\n    checkValue(s5, q3);\n    checkValue(r5, q3);\n    var montp = BN.mont(p5);\n    var w4 = s5.invm(q3);\n    var v5 = g4.toRed(montp).redPow(new BN(hash).mul(w4).mod(q3)).fromRed().mul(y5.toRed(montp).redPow(r5.mul(w4).mod(q3)).fromRed()).mod(p5).mod(q3);\n    return v5.cmp(r5) === 0;\n  }\n  function checkValue(b4, q3) {\n    if (b4.cmpn(0) <= 0) throw new Error(\"invalid sig\");\n    if (b4.cmp(q3) >= q3) throw new Error(\"invalid sig\");\n  }\n  exports$c$1 = verify;\n  return exports$c$1;\n}\nvar exports$b$1 = {};\nvar _dewExec$b$1 = false;\nvar _global$4$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$b$1() {\n  if (_dewExec$b$1) return exports$b$1;\n  _dewExec$b$1 = true;\n  var Buffer = dew$1T().Buffer;\n  var createHash2 = dew$1F();\n  var stream2 = dew$1V();\n  var inherits = dew$f$2();\n  var sign = dew$d$1();\n  var verify = dew$c$1();\n  var algorithms = _algorithms;\n  Object.keys(algorithms).forEach(function(key) {\n    algorithms[key].id = Buffer.from(algorithms[key].id, \"hex\");\n    algorithms[key.toLowerCase()] = algorithms[key];\n  });\n  function Sign2(algorithm) {\n    stream2.Writable.call(this || _global$4$1);\n    var data = algorithms[algorithm];\n    if (!data) throw new Error(\"Unknown message digest\");\n    (this || _global$4$1)._hashType = data.hash;\n    (this || _global$4$1)._hash = createHash2(data.hash);\n    (this || _global$4$1)._tag = data.id;\n    (this || _global$4$1)._signType = data.sign;\n  }\n  inherits(Sign2, stream2.Writable);\n  Sign2.prototype._write = function _write(data, _4, done) {\n    (this || _global$4$1)._hash.update(data);\n    done();\n  };\n  Sign2.prototype.update = function update(data, enc) {\n    if (typeof data === \"string\") data = Buffer.from(data, enc);\n    (this || _global$4$1)._hash.update(data);\n    return this || _global$4$1;\n  };\n  Sign2.prototype.sign = function signMethod(key, enc) {\n    this.end();\n    var hash = (this || _global$4$1)._hash.digest();\n    var sig = sign(hash, key, (this || _global$4$1)._hashType, (this || _global$4$1)._signType, (this || _global$4$1)._tag);\n    return enc ? sig.toString(enc) : sig;\n  };\n  function Verify2(algorithm) {\n    stream2.Writable.call(this || _global$4$1);\n    var data = algorithms[algorithm];\n    if (!data) throw new Error(\"Unknown message digest\");\n    (this || _global$4$1)._hash = createHash2(data.hash);\n    (this || _global$4$1)._tag = data.id;\n    (this || _global$4$1)._signType = data.sign;\n  }\n  inherits(Verify2, stream2.Writable);\n  Verify2.prototype._write = function _write(data, _4, done) {\n    (this || _global$4$1)._hash.update(data);\n    done();\n  };\n  Verify2.prototype.update = function update(data, enc) {\n    if (typeof data === \"string\") data = Buffer.from(data, enc);\n    (this || _global$4$1)._hash.update(data);\n    return this || _global$4$1;\n  };\n  Verify2.prototype.verify = function verifyMethod(key, sig, enc) {\n    if (typeof sig === \"string\") sig = Buffer.from(sig, enc);\n    this.end();\n    var hash = (this || _global$4$1)._hash.digest();\n    return verify(sig, hash, key, (this || _global$4$1)._signType, (this || _global$4$1)._tag);\n  };\n  function createSign2(algorithm) {\n    return new Sign2(algorithm);\n  }\n  function createVerify2(algorithm) {\n    return new Verify2(algorithm);\n  }\n  exports$b$1 = {\n    Sign: createSign2,\n    Verify: createVerify2,\n    createSign: createSign2,\n    createVerify: createVerify2\n  };\n  return exports$b$1;\n}\nvar exports$a$1 = {};\nvar _dewExec$a$1 = false;\nvar module$1$1 = {\n  exports: exports$a$1\n};\nvar _global$3$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$a$1() {\n  if (_dewExec$a$1) return module$1$1.exports;\n  _dewExec$a$1 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$3$1).negative = 0;\n      (this || _global$3$1).words = null;\n      (this || _global$3$1).length = 0;\n      (this || _global$3$1).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = e$1$1.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$3$1).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$3$1).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$3$1).words = [number & 67108863];\n        (this || _global$3$1).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$3$1).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$3$1).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$3$1).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$3$1).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$3$1).words = [0];\n        (this || _global$3$1).length = 1;\n        return this || _global$3$1;\n      }\n      (this || _global$3$1).length = Math.ceil(number.length / 3);\n      (this || _global$3$1).words = new Array((this || _global$3$1).length);\n      for (var i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n        (this || _global$3$1).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$3$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$3$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$3$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$3$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$3$1).length = Math.ceil((number.length - start) / 6);\n      (this || _global$3$1).words = new Array((this || _global$3$1).length);\n      for (var i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n        (this || _global$3$1).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$3$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$3$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$3$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$3$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$3$1).words = [0];\n      (this || _global$3$1).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$3$1).words[0] + word < 67108864) {\n          (this || _global$3$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$3$1).words[0] + word < 67108864) {\n          (this || _global$3$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$3$1).length);\n      for (var i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n        dest.words[i5] = (this || _global$3$1).words[i5];\n      }\n      dest.length = (this || _global$3$1).length;\n      dest.negative = (this || _global$3$1).negative;\n      dest.red = (this || _global$3$1).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$3$1).length < size) {\n        (this || _global$3$1).words[(this || _global$3$1).length++] = 0;\n      }\n      return this || _global$3$1;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$3$1).length > 1 && (this || _global$3$1).words[(this || _global$3$1).length - 1] === 0) {\n        (this || _global$3$1).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$3$1).length === 1 && (this || _global$3$1).words[0] === 0) {\n        (this || _global$3$1).negative = 0;\n      }\n      return this || _global$3$1;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$3$1).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n          var w4 = (this || _global$3$1).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$3$1).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$3$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$3$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$3$1).words[0];\n      if ((this || _global$3$1).length === 2) {\n        ret += (this || _global$3$1).words[1] * 67108864;\n      } else if ((this || _global$3$1).length === 3 && (this || _global$3$1).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$3$1).words[1] * 67108864;\n      } else if ((this || _global$3$1).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$3$1).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$3$1).words[(this || _global$3$1).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$3$1).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n        var b4 = this._zeroBits((this || _global$3$1).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$3$1).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$3$1).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$3$1).negative ^= 1;\n      }\n      return this || _global$3$1;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$3$1).length < num.length) {\n        (this || _global$3$1).words[(this || _global$3$1).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$3$1).words[i5] = (this || _global$3$1).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$3$1).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$3$1).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$3$1);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$3$1).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$3$1);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$3$1).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$3$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$3$1).words[i5] = (this || _global$3$1).words[i5] & num.words[i5];\n      }\n      (this || _global$3$1).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$3$1).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$3$1).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$3$1);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$3$1).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$3$1);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$3$1).length > num.length) {\n        a5 = this || _global$3$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$3$1).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$3$1) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$3$1).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$3$1).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$3$1).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$3$1);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$3$1).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$3$1);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$3$1).words[i5] = ~(this || _global$3$1).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$3$1).words[i5] = ~(this || _global$3$1).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$3$1).words[off2] = (this || _global$3$1).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$3$1).words[off2] = (this || _global$3$1).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$3$1).negative !== 0 && num.negative === 0) {\n        (this || _global$3$1).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$3$1).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$3$1).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$3$1).length > num.length) {\n        a5 = this || _global$3$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$3$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$3$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$3$1).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$3$1).words[(this || _global$3$1).length] = carry;\n        (this || _global$3$1).length++;\n      } else if (a5 !== (this || _global$3$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3$1).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$3$1;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$3$1).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$3$1).negative !== 0) {\n        (this || _global$3$1).negative = 0;\n        res = num.sub(this || _global$3$1);\n        (this || _global$3$1).negative = 1;\n        return res;\n      }\n      if ((this || _global$3$1).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$3$1);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$3$1).negative !== 0) {\n        (this || _global$3$1).negative = 0;\n        this.iadd(num);\n        (this || _global$3$1).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$3$1).negative = 0;\n        (this || _global$3$1).length = 1;\n        (this || _global$3$1).words[0] = 0;\n        return this || _global$3$1;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$3$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$3$1).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$3$1).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$3$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$3$1).length = Math.max((this || _global$3$1).length, i5);\n      if (a5 !== (this || _global$3$1)) {\n        (this || _global$3$1).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$3$1).length + num.length;\n      if ((this || _global$3$1).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$3$1, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$3$1, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$3$1, num, out);\n      } else {\n        res = jumboMulTo(this || _global$3$1, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$3$1).x = x4;\n      (this || _global$3$1).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$3$1).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$3$1).length + num.length);\n      return jumboMulTo(this || _global$3$1, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$3$1);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n        var w4 = ((this || _global$3$1).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$3$1).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$3$1).words[i5] = carry;\n        (this || _global$3$1).length++;\n      }\n      return this || _global$3$1;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$3$1);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$3$1;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n          var newCarry = (this || _global$3$1).words[i5] & carryMask;\n          var c5 = ((this || _global$3$1).words[i5] | 0) - newCarry << r5;\n          (this || _global$3$1).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$3$1).words[i5] = carry;\n          (this || _global$3$1).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$3$1).length - 1; i5 >= 0; i5--) {\n          (this || _global$3$1).words[i5 + s5] = (this || _global$3$1).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$3$1).words[i5] = 0;\n        }\n        (this || _global$3$1).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$3$1).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$3$1).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$3$1).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$3$1).length > s5) {\n        (this || _global$3$1).length -= s5;\n        for (i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n          (this || _global$3$1).words[i5] = (this || _global$3$1).words[i5 + s5];\n        }\n      } else {\n        (this || _global$3$1).words[0] = 0;\n        (this || _global$3$1).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$3$1).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$3$1).words[i5] | 0;\n        (this || _global$3$1).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$3$1).length === 0) {\n        (this || _global$3$1).words[0] = 0;\n        (this || _global$3$1).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$3$1).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$3$1).length <= s5) return false;\n      var w4 = (this || _global$3$1).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$3$1).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$3$1).length <= s5) {\n        return this || _global$3$1;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$3$1).length = Math.min(s5, (this || _global$3$1).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$3$1).words[(this || _global$3$1).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$3$1).negative !== 0) {\n        if ((this || _global$3$1).length === 1 && ((this || _global$3$1).words[0] | 0) < num) {\n          (this || _global$3$1).words[0] = num - ((this || _global$3$1).words[0] | 0);\n          (this || _global$3$1).negative = 0;\n          return this || _global$3$1;\n        }\n        (this || _global$3$1).negative = 0;\n        this.isubn(num);\n        (this || _global$3$1).negative = 1;\n        return this || _global$3$1;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$3$1).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$3$1).length && (this || _global$3$1).words[i5] >= 67108864; i5++) {\n        (this || _global$3$1).words[i5] -= 67108864;\n        if (i5 === (this || _global$3$1).length - 1) {\n          (this || _global$3$1).words[i5 + 1] = 1;\n        } else {\n          (this || _global$3$1).words[i5 + 1]++;\n        }\n      }\n      (this || _global$3$1).length = Math.max((this || _global$3$1).length, i5 + 1);\n      return this || _global$3$1;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$3$1).negative !== 0) {\n        (this || _global$3$1).negative = 0;\n        this.iaddn(num);\n        (this || _global$3$1).negative = 1;\n        return this || _global$3$1;\n      }\n      (this || _global$3$1).words[0] -= num;\n      if ((this || _global$3$1).length === 1 && (this || _global$3$1).words[0] < 0) {\n        (this || _global$3$1).words[0] = -(this || _global$3$1).words[0];\n        (this || _global$3$1).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$3$1).length && (this || _global$3$1).words[i5] < 0; i5++) {\n          (this || _global$3$1).words[i5] += 67108864;\n          (this || _global$3$1).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$3$1).negative = 0;\n      return this || _global$3$1;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$3$1).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$3$1).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$3$1).length - shift; i5++) {\n        w4 = ((this || _global$3$1).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$3$1).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$3$1).length; i5++) {\n        w4 = -((this || _global$3$1).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$3$1).words[i5] = w4 & 67108863;\n      }\n      (this || _global$3$1).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$3$1).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$3$1).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$3$1).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$3$1).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$3$1).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$3$1\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$3$1).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$3$1).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$3$1).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$3$1).words[i5] | 0) + carry * 67108864;\n        (this || _global$3$1).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$3$1;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$3$1;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$3$1).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$3$1).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$3$1).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$3$1).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$3$1).words[s5] |= q3;\n        return this || _global$3$1;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$3$1).length; i5++) {\n        var w4 = (this || _global$3$1).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$3$1).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$3$1).words[i5] = carry;\n        (this || _global$3$1).length++;\n      }\n      return this || _global$3$1;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$3$1).length === 1 && (this || _global$3$1).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$3$1).negative !== 0 && !negative) return -1;\n      if ((this || _global$3$1).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$3$1).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$3$1).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$3$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$3$1).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$3$1).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$3$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$3$1).length > num.length) return 1;\n      if ((this || _global$3$1).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$3$1).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$3$1).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$3$1).red, \"Already a number in reduction context\");\n      assert2((this || _global$3$1).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$3$1)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$3$1).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$3$1).red.convertFrom(this || _global$3$1);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$3$1).red = ctx;\n      return this || _global$3$1;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$3$1).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$3$1).red, \"redAdd works only with red numbers\");\n      return (this || _global$3$1).red.add(this || _global$3$1, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$3$1).red, \"redIAdd works only with red numbers\");\n      return (this || _global$3$1).red.iadd(this || _global$3$1, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$3$1).red, \"redSub works only with red numbers\");\n      return (this || _global$3$1).red.sub(this || _global$3$1, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$3$1).red, \"redISub works only with red numbers\");\n      return (this || _global$3$1).red.isub(this || _global$3$1, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$3$1).red, \"redShl works only with red numbers\");\n      return (this || _global$3$1).red.shl(this || _global$3$1, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$3$1).red, \"redMul works only with red numbers\");\n      (this || _global$3$1).red._verify2(this || _global$3$1, num);\n      return (this || _global$3$1).red.mul(this || _global$3$1, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$3$1).red, \"redMul works only with red numbers\");\n      (this || _global$3$1).red._verify2(this || _global$3$1, num);\n      return (this || _global$3$1).red.imul(this || _global$3$1, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$3$1).red, \"redSqr works only with red numbers\");\n      (this || _global$3$1).red._verify1(this || _global$3$1);\n      return (this || _global$3$1).red.sqr(this || _global$3$1);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$3$1).red, \"redISqr works only with red numbers\");\n      (this || _global$3$1).red._verify1(this || _global$3$1);\n      return (this || _global$3$1).red.isqr(this || _global$3$1);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$3$1).red, \"redSqrt works only with red numbers\");\n      (this || _global$3$1).red._verify1(this || _global$3$1);\n      return (this || _global$3$1).red.sqrt(this || _global$3$1);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$3$1).red, \"redInvm works only with red numbers\");\n      (this || _global$3$1).red._verify1(this || _global$3$1);\n      return (this || _global$3$1).red.invm(this || _global$3$1);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$3$1).red, \"redNeg works only with red numbers\");\n      (this || _global$3$1).red._verify1(this || _global$3$1);\n      return (this || _global$3$1).red.neg(this || _global$3$1);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$3$1).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$3$1).red._verify1(this || _global$3$1);\n      return (this || _global$3$1).red.pow(this || _global$3$1, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$3$1).name = name2;\n      (this || _global$3$1).p = new BN(p5, 16);\n      (this || _global$3$1).n = (this || _global$3$1).p.bitLength();\n      (this || _global$3$1).k = new BN(1).iushln((this || _global$3$1).n).isub((this || _global$3$1).p);\n      (this || _global$3$1).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$3$1).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$3$1).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$3$1).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$3$1).n);\n      var cmp = rlen < (this || _global$3$1).n ? -1 : r5.ucmp((this || _global$3$1).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$3$1).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$3$1).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$3$1).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$3$1, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$3$1, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$3$1, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$3$1, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$3$1).m = prime.p;\n        (this || _global$3$1).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$3$1).m = m4;\n        (this || _global$3$1).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$3$1).prime) return (this || _global$3$1).prime.ireduce(a5)._forceRed(this || _global$3$1);\n      return a5.umod((this || _global$3$1).m)._forceRed(this || _global$3$1);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$3$1).m.sub(a5)._forceRed(this || _global$3$1);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$3$1).m) >= 0) {\n        res.isub((this || _global$3$1).m);\n      }\n      return res._forceRed(this || _global$3$1);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$3$1).m) >= 0) {\n        res.isub((this || _global$3$1).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$3$1).m);\n      }\n      return res._forceRed(this || _global$3$1);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$3$1).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$3$1).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$3$1).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$3$1).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$3$1);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$3$1).m.subn(1).iushrn(1);\n      var z4 = (this || _global$3$1).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$3$1);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$3$1).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$3$1);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$3$1);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$3$1).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$3$1, m4);\n      (this || _global$3$1).shift = (this || _global$3$1).m.bitLength();\n      if ((this || _global$3$1).shift % 26 !== 0) {\n        (this || _global$3$1).shift += 26 - (this || _global$3$1).shift % 26;\n      }\n      (this || _global$3$1).r = new BN(1).iushln((this || _global$3$1).shift);\n      (this || _global$3$1).r2 = this.imod((this || _global$3$1).r.sqr());\n      (this || _global$3$1).rinv = (this || _global$3$1).r._invmp((this || _global$3$1).m);\n      (this || _global$3$1).minv = (this || _global$3$1).rinv.mul((this || _global$3$1).r).isubn(1).div((this || _global$3$1).m);\n      (this || _global$3$1).minv = (this || _global$3$1).minv.umod((this || _global$3$1).r);\n      (this || _global$3$1).minv = (this || _global$3$1).r.sub((this || _global$3$1).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$3$1).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$3$1).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$3$1).shift).mul((this || _global$3$1).minv).imaskn((this || _global$3$1).shift).mul((this || _global$3$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$3$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$3$1).m) >= 0) {\n        res = u5.isub((this || _global$3$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$3$1).m);\n      }\n      return res._forceRed(this || _global$3$1);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$3$1);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$3$1).shift).mul((this || _global$3$1).minv).imaskn((this || _global$3$1).shift).mul((this || _global$3$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$3$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$3$1).m) >= 0) {\n        res = u5.isub((this || _global$3$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$3$1).m);\n      }\n      return res._forceRed(this || _global$3$1);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$3$1).m).mul((this || _global$3$1).r2));\n      return res._forceRed(this || _global$3$1);\n    };\n  })(module$1$1, exports$a$1);\n  return module$1$1.exports;\n}\nvar exports$9$1 = {};\nvar _dewExec$9$1 = false;\nvar _global$2$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$9$1() {\n  if (_dewExec$9$1) return exports$9$1;\n  _dewExec$9$1 = true;\n  var Buffer = e$1$1.Buffer;\n  var elliptic = dew$y$1();\n  var BN = dew$a$1();\n  exports$9$1 = function createECDH2(curve) {\n    return new ECDH(curve);\n  };\n  var aliases = {\n    secp256k1: {\n      name: \"secp256k1\",\n      byteLength: 32\n    },\n    secp224r1: {\n      name: \"p224\",\n      byteLength: 28\n    },\n    prime256v1: {\n      name: \"p256\",\n      byteLength: 32\n    },\n    prime192v1: {\n      name: \"p192\",\n      byteLength: 24\n    },\n    ed25519: {\n      name: \"ed25519\",\n      byteLength: 32\n    },\n    secp384r1: {\n      name: \"p384\",\n      byteLength: 48\n    },\n    secp521r1: {\n      name: \"p521\",\n      byteLength: 66\n    }\n  };\n  aliases.p224 = aliases.secp224r1;\n  aliases.p256 = aliases.secp256r1 = aliases.prime256v1;\n  aliases.p192 = aliases.secp192r1 = aliases.prime192v1;\n  aliases.p384 = aliases.secp384r1;\n  aliases.p521 = aliases.secp521r1;\n  function ECDH(curve) {\n    (this || _global$2$1).curveType = aliases[curve];\n    if (!(this || _global$2$1).curveType) {\n      (this || _global$2$1).curveType = {\n        name: curve\n      };\n    }\n    (this || _global$2$1).curve = new elliptic.ec((this || _global$2$1).curveType.name);\n    (this || _global$2$1).keys = void 0;\n  }\n  ECDH.prototype.generateKeys = function(enc, format) {\n    (this || _global$2$1).keys = (this || _global$2$1).curve.genKeyPair();\n    return this.getPublicKey(enc, format);\n  };\n  ECDH.prototype.computeSecret = function(other, inenc, enc) {\n    inenc = inenc || \"utf8\";\n    if (!Buffer.isBuffer(other)) {\n      other = new Buffer(other, inenc);\n    }\n    var otherPub = (this || _global$2$1).curve.keyFromPublic(other).getPublic();\n    var out = otherPub.mul((this || _global$2$1).keys.getPrivate()).getX();\n    return formatReturnValue(out, enc, (this || _global$2$1).curveType.byteLength);\n  };\n  ECDH.prototype.getPublicKey = function(enc, format) {\n    var key = (this || _global$2$1).keys.getPublic(format === \"compressed\", true);\n    if (format === \"hybrid\") {\n      if (key[key.length - 1] % 2) {\n        key[0] = 7;\n      } else {\n        key[0] = 6;\n      }\n    }\n    return formatReturnValue(key, enc);\n  };\n  ECDH.prototype.getPrivateKey = function(enc) {\n    return formatReturnValue((this || _global$2$1).keys.getPrivate(), enc);\n  };\n  ECDH.prototype.setPublicKey = function(pub, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(pub)) {\n      pub = new Buffer(pub, enc);\n    }\n    (this || _global$2$1).keys._importPublic(pub);\n    return this || _global$2$1;\n  };\n  ECDH.prototype.setPrivateKey = function(priv, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(priv)) {\n      priv = new Buffer(priv, enc);\n    }\n    var _priv = new BN(priv);\n    _priv = _priv.toString(16);\n    (this || _global$2$1).keys = (this || _global$2$1).curve.genKeyPair();\n    (this || _global$2$1).keys._importPrivate(_priv);\n    return this || _global$2$1;\n  };\n  function formatReturnValue(bn, enc, len) {\n    if (!Array.isArray(bn)) {\n      bn = bn.toArray();\n    }\n    var buf = new Buffer(bn);\n    if (len && buf.length < len) {\n      var zeros = new Buffer(len - buf.length);\n      zeros.fill(0);\n      buf = Buffer.concat([zeros, buf]);\n    }\n    if (!enc) {\n      return buf;\n    } else {\n      return buf.toString(enc);\n    }\n  }\n  return exports$9$1;\n}\nvar exports$8$1 = {};\nvar _dewExec$8$1 = false;\nfunction dew$8$1() {\n  if (_dewExec$8$1) return exports$8$1;\n  _dewExec$8$1 = true;\n  var createHash2 = dew$1F();\n  var Buffer = dew$1T().Buffer;\n  exports$8$1 = function(seed, len) {\n    var t5 = Buffer.alloc(0);\n    var i5 = 0;\n    var c5;\n    while (t5.length < len) {\n      c5 = i2ops(i5++);\n      t5 = Buffer.concat([t5, createHash2(\"sha1\").update(seed).update(c5).digest()]);\n    }\n    return t5.slice(0, len);\n  };\n  function i2ops(c5) {\n    var out = Buffer.allocUnsafe(4);\n    out.writeUInt32BE(c5, 0);\n    return out;\n  }\n  return exports$8$1;\n}\nvar exports$7$1 = {};\nvar _dewExec$7$1 = false;\nfunction dew$7$1() {\n  if (_dewExec$7$1) return exports$7$1;\n  _dewExec$7$1 = true;\n  exports$7$1 = function xor(a5, b4) {\n    var len = a5.length;\n    var i5 = -1;\n    while (++i5 < len) {\n      a5[i5] ^= b4[i5];\n    }\n    return a5;\n  };\n  return exports$7$1;\n}\nvar exports$6$1 = {};\nvar _dewExec$6$1 = false;\nvar module$8 = {\n  exports: exports$6$1\n};\nvar _global$1$1 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$6$1() {\n  if (_dewExec$6$1) return module$8.exports;\n  _dewExec$6$1 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$1$1).negative = 0;\n      (this || _global$1$1).words = null;\n      (this || _global$1$1).length = 0;\n      (this || _global$1$1).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = e$1$1.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$1$1).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$1$1).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$1$1).words = [number & 67108863];\n        (this || _global$1$1).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$1$1).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$1$1).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$1$1).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$1$1).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$1$1).words = [0];\n        (this || _global$1$1).length = 1;\n        return this || _global$1$1;\n      }\n      (this || _global$1$1).length = Math.ceil(number.length / 3);\n      (this || _global$1$1).words = new Array((this || _global$1$1).length);\n      for (var i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n        (this || _global$1$1).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$1$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$1$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$1$1).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$1$1).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$1$1).length = Math.ceil((number.length - start) / 6);\n      (this || _global$1$1).words = new Array((this || _global$1$1).length);\n      for (var i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n        (this || _global$1$1).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$1$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$1$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$1$1).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$1$1).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$1$1).words = [0];\n      (this || _global$1$1).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$1$1).words[0] + word < 67108864) {\n          (this || _global$1$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$1$1).words[0] + word < 67108864) {\n          (this || _global$1$1).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$1$1).length);\n      for (var i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n        dest.words[i5] = (this || _global$1$1).words[i5];\n      }\n      dest.length = (this || _global$1$1).length;\n      dest.negative = (this || _global$1$1).negative;\n      dest.red = (this || _global$1$1).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$1$1).length < size) {\n        (this || _global$1$1).words[(this || _global$1$1).length++] = 0;\n      }\n      return this || _global$1$1;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$1$1).length > 1 && (this || _global$1$1).words[(this || _global$1$1).length - 1] === 0) {\n        (this || _global$1$1).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$1$1).length === 1 && (this || _global$1$1).words[0] === 0) {\n        (this || _global$1$1).negative = 0;\n      }\n      return this || _global$1$1;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$1$1).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n          var w4 = (this || _global$1$1).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$1$1).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$1$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$1$1).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$1$1).words[0];\n      if ((this || _global$1$1).length === 2) {\n        ret += (this || _global$1$1).words[1] * 67108864;\n      } else if ((this || _global$1$1).length === 3 && (this || _global$1$1).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$1$1).words[1] * 67108864;\n      } else if ((this || _global$1$1).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$1$1).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$1$1).words[(this || _global$1$1).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$1$1).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n        var b4 = this._zeroBits((this || _global$1$1).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$1$1).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$1$1).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$1$1).negative ^= 1;\n      }\n      return this || _global$1$1;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$1$1).length < num.length) {\n        (this || _global$1$1).words[(this || _global$1$1).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$1$1).words[i5] = (this || _global$1$1).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$1$1).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$1$1).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$1$1);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$1$1).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$1$1);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$1$1).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$1$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$1$1).words[i5] = (this || _global$1$1).words[i5] & num.words[i5];\n      }\n      (this || _global$1$1).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$1$1).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$1$1).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$1$1);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$1$1).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$1$1);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$1$1).length > num.length) {\n        a5 = this || _global$1$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$1$1;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$1$1).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$1$1) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$1$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$1$1).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$1$1).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$1$1).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$1$1);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$1$1).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$1$1);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$1$1).words[i5] = ~(this || _global$1$1).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$1$1).words[i5] = ~(this || _global$1$1).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$1$1).words[off2] = (this || _global$1$1).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$1$1).words[off2] = (this || _global$1$1).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$1$1).negative !== 0 && num.negative === 0) {\n        (this || _global$1$1).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$1$1).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$1$1).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$1$1).length > num.length) {\n        a5 = this || _global$1$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$1$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$1$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$1$1).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$1$1).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$1$1).words[(this || _global$1$1).length] = carry;\n        (this || _global$1$1).length++;\n      } else if (a5 !== (this || _global$1$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$1$1).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$1$1;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$1$1).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$1$1).negative !== 0) {\n        (this || _global$1$1).negative = 0;\n        res = num.sub(this || _global$1$1);\n        (this || _global$1$1).negative = 1;\n        return res;\n      }\n      if ((this || _global$1$1).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$1$1);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$1$1).negative !== 0) {\n        (this || _global$1$1).negative = 0;\n        this.iadd(num);\n        (this || _global$1$1).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$1$1).negative = 0;\n        (this || _global$1$1).length = 1;\n        (this || _global$1$1).words[0] = 0;\n        return this || _global$1$1;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$1$1;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$1$1;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$1$1).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$1$1).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$1$1)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$1$1).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$1$1).length = Math.max((this || _global$1$1).length, i5);\n      if (a5 !== (this || _global$1$1)) {\n        (this || _global$1$1).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$1$1).length + num.length;\n      if ((this || _global$1$1).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$1$1, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$1$1, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$1$1, num, out);\n      } else {\n        res = jumboMulTo(this || _global$1$1, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$1$1).x = x4;\n      (this || _global$1$1).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$1$1).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$1$1).length + num.length);\n      return jumboMulTo(this || _global$1$1, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$1$1);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n        var w4 = ((this || _global$1$1).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$1$1).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$1$1).words[i5] = carry;\n        (this || _global$1$1).length++;\n      }\n      return this || _global$1$1;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$1$1);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$1$1;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n          var newCarry = (this || _global$1$1).words[i5] & carryMask;\n          var c5 = ((this || _global$1$1).words[i5] | 0) - newCarry << r5;\n          (this || _global$1$1).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$1$1).words[i5] = carry;\n          (this || _global$1$1).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$1$1).length - 1; i5 >= 0; i5--) {\n          (this || _global$1$1).words[i5 + s5] = (this || _global$1$1).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$1$1).words[i5] = 0;\n        }\n        (this || _global$1$1).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$1$1).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$1$1).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$1$1).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$1$1).length > s5) {\n        (this || _global$1$1).length -= s5;\n        for (i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n          (this || _global$1$1).words[i5] = (this || _global$1$1).words[i5 + s5];\n        }\n      } else {\n        (this || _global$1$1).words[0] = 0;\n        (this || _global$1$1).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$1$1).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$1$1).words[i5] | 0;\n        (this || _global$1$1).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$1$1).length === 0) {\n        (this || _global$1$1).words[0] = 0;\n        (this || _global$1$1).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$1$1).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$1$1).length <= s5) return false;\n      var w4 = (this || _global$1$1).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$1$1).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$1$1).length <= s5) {\n        return this || _global$1$1;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$1$1).length = Math.min(s5, (this || _global$1$1).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$1$1).words[(this || _global$1$1).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$1$1).negative !== 0) {\n        if ((this || _global$1$1).length === 1 && ((this || _global$1$1).words[0] | 0) < num) {\n          (this || _global$1$1).words[0] = num - ((this || _global$1$1).words[0] | 0);\n          (this || _global$1$1).negative = 0;\n          return this || _global$1$1;\n        }\n        (this || _global$1$1).negative = 0;\n        this.isubn(num);\n        (this || _global$1$1).negative = 1;\n        return this || _global$1$1;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$1$1).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$1$1).length && (this || _global$1$1).words[i5] >= 67108864; i5++) {\n        (this || _global$1$1).words[i5] -= 67108864;\n        if (i5 === (this || _global$1$1).length - 1) {\n          (this || _global$1$1).words[i5 + 1] = 1;\n        } else {\n          (this || _global$1$1).words[i5 + 1]++;\n        }\n      }\n      (this || _global$1$1).length = Math.max((this || _global$1$1).length, i5 + 1);\n      return this || _global$1$1;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$1$1).negative !== 0) {\n        (this || _global$1$1).negative = 0;\n        this.iaddn(num);\n        (this || _global$1$1).negative = 1;\n        return this || _global$1$1;\n      }\n      (this || _global$1$1).words[0] -= num;\n      if ((this || _global$1$1).length === 1 && (this || _global$1$1).words[0] < 0) {\n        (this || _global$1$1).words[0] = -(this || _global$1$1).words[0];\n        (this || _global$1$1).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$1$1).length && (this || _global$1$1).words[i5] < 0; i5++) {\n          (this || _global$1$1).words[i5] += 67108864;\n          (this || _global$1$1).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$1$1).negative = 0;\n      return this || _global$1$1;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$1$1).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$1$1).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$1$1).length - shift; i5++) {\n        w4 = ((this || _global$1$1).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$1$1).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$1$1).length; i5++) {\n        w4 = -((this || _global$1$1).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$1$1).words[i5] = w4 & 67108863;\n      }\n      (this || _global$1$1).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$1$1).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$1$1).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$1$1).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$1$1).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$1$1).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$1$1\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$1$1).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$1$1).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$1$1).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$1$1).words[i5] | 0) + carry * 67108864;\n        (this || _global$1$1).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$1$1;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$1$1;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$1$1).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$1$1).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$1$1).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$1$1).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$1$1).words[s5] |= q3;\n        return this || _global$1$1;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$1$1).length; i5++) {\n        var w4 = (this || _global$1$1).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$1$1).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$1$1).words[i5] = carry;\n        (this || _global$1$1).length++;\n      }\n      return this || _global$1$1;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$1$1).length === 1 && (this || _global$1$1).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$1$1).negative !== 0 && !negative) return -1;\n      if ((this || _global$1$1).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$1$1).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$1$1).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$1$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$1$1).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$1$1).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$1$1).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$1$1).length > num.length) return 1;\n      if ((this || _global$1$1).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$1$1).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$1$1).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$1$1).red, \"Already a number in reduction context\");\n      assert2((this || _global$1$1).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$1$1)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$1$1).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$1$1).red.convertFrom(this || _global$1$1);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$1$1).red = ctx;\n      return this || _global$1$1;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$1$1).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$1$1).red, \"redAdd works only with red numbers\");\n      return (this || _global$1$1).red.add(this || _global$1$1, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$1$1).red, \"redIAdd works only with red numbers\");\n      return (this || _global$1$1).red.iadd(this || _global$1$1, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$1$1).red, \"redSub works only with red numbers\");\n      return (this || _global$1$1).red.sub(this || _global$1$1, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$1$1).red, \"redISub works only with red numbers\");\n      return (this || _global$1$1).red.isub(this || _global$1$1, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$1$1).red, \"redShl works only with red numbers\");\n      return (this || _global$1$1).red.shl(this || _global$1$1, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$1$1).red, \"redMul works only with red numbers\");\n      (this || _global$1$1).red._verify2(this || _global$1$1, num);\n      return (this || _global$1$1).red.mul(this || _global$1$1, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$1$1).red, \"redMul works only with red numbers\");\n      (this || _global$1$1).red._verify2(this || _global$1$1, num);\n      return (this || _global$1$1).red.imul(this || _global$1$1, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$1$1).red, \"redSqr works only with red numbers\");\n      (this || _global$1$1).red._verify1(this || _global$1$1);\n      return (this || _global$1$1).red.sqr(this || _global$1$1);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$1$1).red, \"redISqr works only with red numbers\");\n      (this || _global$1$1).red._verify1(this || _global$1$1);\n      return (this || _global$1$1).red.isqr(this || _global$1$1);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$1$1).red, \"redSqrt works only with red numbers\");\n      (this || _global$1$1).red._verify1(this || _global$1$1);\n      return (this || _global$1$1).red.sqrt(this || _global$1$1);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$1$1).red, \"redInvm works only with red numbers\");\n      (this || _global$1$1).red._verify1(this || _global$1$1);\n      return (this || _global$1$1).red.invm(this || _global$1$1);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$1$1).red, \"redNeg works only with red numbers\");\n      (this || _global$1$1).red._verify1(this || _global$1$1);\n      return (this || _global$1$1).red.neg(this || _global$1$1);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$1$1).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$1$1).red._verify1(this || _global$1$1);\n      return (this || _global$1$1).red.pow(this || _global$1$1, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$1$1).name = name2;\n      (this || _global$1$1).p = new BN(p5, 16);\n      (this || _global$1$1).n = (this || _global$1$1).p.bitLength();\n      (this || _global$1$1).k = new BN(1).iushln((this || _global$1$1).n).isub((this || _global$1$1).p);\n      (this || _global$1$1).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$1$1).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$1$1).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$1$1).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$1$1).n);\n      var cmp = rlen < (this || _global$1$1).n ? -1 : r5.ucmp((this || _global$1$1).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$1$1).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$1$1).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$1$1).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$1$1, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$1$1, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$1$1, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$1$1, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$1$1).m = prime.p;\n        (this || _global$1$1).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$1$1).m = m4;\n        (this || _global$1$1).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$1$1).prime) return (this || _global$1$1).prime.ireduce(a5)._forceRed(this || _global$1$1);\n      return a5.umod((this || _global$1$1).m)._forceRed(this || _global$1$1);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$1$1).m.sub(a5)._forceRed(this || _global$1$1);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$1$1).m) >= 0) {\n        res.isub((this || _global$1$1).m);\n      }\n      return res._forceRed(this || _global$1$1);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$1$1).m) >= 0) {\n        res.isub((this || _global$1$1).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$1$1).m);\n      }\n      return res._forceRed(this || _global$1$1);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$1$1).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$1$1).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$1$1).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$1$1).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$1$1);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$1$1).m.subn(1).iushrn(1);\n      var z4 = (this || _global$1$1).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$1$1);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$1$1).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$1$1);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$1$1);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$1$1).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$1$1, m4);\n      (this || _global$1$1).shift = (this || _global$1$1).m.bitLength();\n      if ((this || _global$1$1).shift % 26 !== 0) {\n        (this || _global$1$1).shift += 26 - (this || _global$1$1).shift % 26;\n      }\n      (this || _global$1$1).r = new BN(1).iushln((this || _global$1$1).shift);\n      (this || _global$1$1).r2 = this.imod((this || _global$1$1).r.sqr());\n      (this || _global$1$1).rinv = (this || _global$1$1).r._invmp((this || _global$1$1).m);\n      (this || _global$1$1).minv = (this || _global$1$1).rinv.mul((this || _global$1$1).r).isubn(1).div((this || _global$1$1).m);\n      (this || _global$1$1).minv = (this || _global$1$1).minv.umod((this || _global$1$1).r);\n      (this || _global$1$1).minv = (this || _global$1$1).r.sub((this || _global$1$1).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$1$1).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$1$1).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$1$1).shift).mul((this || _global$1$1).minv).imaskn((this || _global$1$1).shift).mul((this || _global$1$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$1$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$1$1).m) >= 0) {\n        res = u5.isub((this || _global$1$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$1$1).m);\n      }\n      return res._forceRed(this || _global$1$1);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$1$1);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$1$1).shift).mul((this || _global$1$1).minv).imaskn((this || _global$1$1).shift).mul((this || _global$1$1).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$1$1).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$1$1).m) >= 0) {\n        res = u5.isub((this || _global$1$1).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$1$1).m);\n      }\n      return res._forceRed(this || _global$1$1);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$1$1).m).mul((this || _global$1$1).r2));\n      return res._forceRed(this || _global$1$1);\n    };\n  })(module$8, exports$6$1);\n  return module$8.exports;\n}\nvar exports$5$1 = {};\nvar _dewExec$5$1 = false;\nfunction dew$5$1() {\n  if (_dewExec$5$1) return exports$5$1;\n  _dewExec$5$1 = true;\n  var BN = dew$6$1();\n  var Buffer = dew$1T().Buffer;\n  function withPublic(paddedMsg, key) {\n    return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n  }\n  exports$5$1 = withPublic;\n  return exports$5$1;\n}\nvar exports$4$1 = {};\nvar _dewExec$4$1 = false;\nfunction dew$4$1() {\n  if (_dewExec$4$1) return exports$4$1;\n  _dewExec$4$1 = true;\n  var parseKeys = dew$e$1();\n  var randomBytes2 = dew$1S();\n  var createHash2 = dew$1F();\n  var mgf = dew$8$1();\n  var xor = dew$7$1();\n  var BN = dew$6$1();\n  var withPublic = dew$5$1();\n  var crt = dew$W$1();\n  var Buffer = dew$1T().Buffer;\n  exports$4$1 = function publicEncrypt2(publicKey, msg, reverse) {\n    var padding;\n    if (publicKey.padding) {\n      padding = publicKey.padding;\n    } else if (reverse) {\n      padding = 1;\n    } else {\n      padding = 4;\n    }\n    var key = parseKeys(publicKey);\n    var paddedMsg;\n    if (padding === 4) {\n      paddedMsg = oaep(key, msg);\n    } else if (padding === 1) {\n      paddedMsg = pkcs1(key, msg, reverse);\n    } else if (padding === 3) {\n      paddedMsg = new BN(msg);\n      if (paddedMsg.cmp(key.modulus) >= 0) {\n        throw new Error(\"data too long for modulus\");\n      }\n    } else {\n      throw new Error(\"unknown padding\");\n    }\n    if (reverse) {\n      return crt(paddedMsg, key);\n    } else {\n      return withPublic(paddedMsg, key);\n    }\n  };\n  function oaep(key, msg) {\n    var k4 = key.modulus.byteLength();\n    var mLen = msg.length;\n    var iHash = createHash2(\"sha1\").update(Buffer.alloc(0)).digest();\n    var hLen = iHash.length;\n    var hLen2 = 2 * hLen;\n    if (mLen > k4 - hLen2 - 2) {\n      throw new Error(\"message too long\");\n    }\n    var ps = Buffer.alloc(k4 - mLen - hLen2 - 2);\n    var dblen = k4 - hLen - 1;\n    var seed = randomBytes2(hLen);\n    var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen));\n    var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n    return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k4));\n  }\n  function pkcs1(key, msg, reverse) {\n    var mLen = msg.length;\n    var k4 = key.modulus.byteLength();\n    if (mLen > k4 - 11) {\n      throw new Error(\"message too long\");\n    }\n    var ps;\n    if (reverse) {\n      ps = Buffer.alloc(k4 - mLen - 3, 255);\n    } else {\n      ps = nonZero(k4 - mLen - 3);\n    }\n    return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k4));\n  }\n  function nonZero(len) {\n    var out = Buffer.allocUnsafe(len);\n    var i5 = 0;\n    var cache = randomBytes2(len * 2);\n    var cur = 0;\n    var num;\n    while (i5 < len) {\n      if (cur === cache.length) {\n        cache = randomBytes2(len * 2);\n        cur = 0;\n      }\n      num = cache[cur++];\n      if (num) {\n        out[i5++] = num;\n      }\n    }\n    return out;\n  }\n  return exports$4$1;\n}\nvar exports$3$1 = {};\nvar _dewExec$3$1 = false;\nfunction dew$3$1() {\n  if (_dewExec$3$1) return exports$3$1;\n  _dewExec$3$1 = true;\n  var parseKeys = dew$e$1();\n  var mgf = dew$8$1();\n  var xor = dew$7$1();\n  var BN = dew$6$1();\n  var crt = dew$W$1();\n  var createHash2 = dew$1F();\n  var withPublic = dew$5$1();\n  var Buffer = dew$1T().Buffer;\n  exports$3$1 = function privateDecrypt2(privateKey, enc, reverse) {\n    var padding;\n    if (privateKey.padding) {\n      padding = privateKey.padding;\n    } else if (reverse) {\n      padding = 1;\n    } else {\n      padding = 4;\n    }\n    var key = parseKeys(privateKey);\n    var k4 = key.modulus.byteLength();\n    if (enc.length > k4 || new BN(enc).cmp(key.modulus) >= 0) {\n      throw new Error(\"decryption error\");\n    }\n    var msg;\n    if (reverse) {\n      msg = withPublic(new BN(enc), key);\n    } else {\n      msg = crt(enc, key);\n    }\n    var zBuffer = Buffer.alloc(k4 - msg.length);\n    msg = Buffer.concat([zBuffer, msg], k4);\n    if (padding === 4) {\n      return oaep(key, msg);\n    } else if (padding === 1) {\n      return pkcs1(key, msg, reverse);\n    } else if (padding === 3) {\n      return msg;\n    } else {\n      throw new Error(\"unknown padding\");\n    }\n  };\n  function oaep(key, msg) {\n    var k4 = key.modulus.byteLength();\n    var iHash = createHash2(\"sha1\").update(Buffer.alloc(0)).digest();\n    var hLen = iHash.length;\n    if (msg[0] !== 0) {\n      throw new Error(\"decryption error\");\n    }\n    var maskedSeed = msg.slice(1, hLen + 1);\n    var maskedDb = msg.slice(hLen + 1);\n    var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n    var db = xor(maskedDb, mgf(seed, k4 - hLen - 1));\n    if (compare(iHash, db.slice(0, hLen))) {\n      throw new Error(\"decryption error\");\n    }\n    var i5 = hLen;\n    while (db[i5] === 0) {\n      i5++;\n    }\n    if (db[i5++] !== 1) {\n      throw new Error(\"decryption error\");\n    }\n    return db.slice(i5);\n  }\n  function pkcs1(key, msg, reverse) {\n    var p1 = msg.slice(0, 2);\n    var i5 = 2;\n    var status = 0;\n    while (msg[i5++] !== 0) {\n      if (i5 >= msg.length) {\n        status++;\n        break;\n      }\n    }\n    var ps = msg.slice(2, i5 - 1);\n    if (p1.toString(\"hex\") !== \"0002\" && !reverse || p1.toString(\"hex\") !== \"0001\" && reverse) {\n      status++;\n    }\n    if (ps.length < 8) {\n      status++;\n    }\n    if (status) {\n      throw new Error(\"decryption error\");\n    }\n    return msg.slice(i5);\n  }\n  function compare(a5, b4) {\n    a5 = Buffer.from(a5);\n    b4 = Buffer.from(b4);\n    var dif = 0;\n    var len = a5.length;\n    if (a5.length !== b4.length) {\n      dif++;\n      len = Math.min(a5.length, b4.length);\n    }\n    var i5 = -1;\n    while (++i5 < len) {\n      dif += a5[i5] ^ b4[i5];\n    }\n    return dif;\n  }\n  return exports$3$1;\n}\nvar exports$2$12 = {};\nvar _dewExec$2$12 = false;\nfunction dew$2$12() {\n  if (_dewExec$2$12) return exports$2$12;\n  _dewExec$2$12 = true;\n  exports$2$12.publicEncrypt = dew$4$1();\n  exports$2$12.privateDecrypt = dew$3$1();\n  exports$2$12.privateEncrypt = function privateEncrypt2(key, buf) {\n    return exports$2$12.publicEncrypt(key, buf, true);\n  };\n  exports$2$12.publicDecrypt = function publicDecrypt2(key, buf) {\n    return exports$2$12.privateDecrypt(key, buf, true);\n  };\n  return exports$2$12;\n}\nvar exports$1$12 = {};\nvar _dewExec$1$12 = false;\nvar _global$x = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1$12() {\n  if (_dewExec$1$12) return exports$1$12;\n  _dewExec$1$12 = true;\n  var process3 = T$1;\n  function oldBrowser() {\n    throw new Error(\"secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11\");\n  }\n  var safeBuffer = dew$1T();\n  var randombytes = dew$1S();\n  var Buffer = safeBuffer.Buffer;\n  var kBufferMaxLength = safeBuffer.kMaxLength;\n  var crypto2 = _global$x.crypto || _global$x.msCrypto;\n  var kMaxUint32 = Math.pow(2, 32) - 1;\n  function assertOffset(offset, length) {\n    if (typeof offset !== \"number\" || offset !== offset) {\n      throw new TypeError(\"offset must be a number\");\n    }\n    if (offset > kMaxUint32 || offset < 0) {\n      throw new TypeError(\"offset must be a uint32\");\n    }\n    if (offset > kBufferMaxLength || offset > length) {\n      throw new RangeError(\"offset out of range\");\n    }\n  }\n  function assertSize(size, offset, length) {\n    if (typeof size !== \"number\" || size !== size) {\n      throw new TypeError(\"size must be a number\");\n    }\n    if (size > kMaxUint32 || size < 0) {\n      throw new TypeError(\"size must be a uint32\");\n    }\n    if (size + offset > length || size > kBufferMaxLength) {\n      throw new RangeError(\"buffer too small\");\n    }\n  }\n  if (crypto2 && crypto2.getRandomValues || !process3.browser) {\n    exports$1$12.randomFill = randomFill2;\n    exports$1$12.randomFillSync = randomFillSync2;\n  } else {\n    exports$1$12.randomFill = oldBrowser;\n    exports$1$12.randomFillSync = oldBrowser;\n  }\n  function randomFill2(buf, offset, size, cb) {\n    if (!Buffer.isBuffer(buf) && !(buf instanceof _global$x.Uint8Array)) {\n      throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n    }\n    if (typeof offset === \"function\") {\n      cb = offset;\n      offset = 0;\n      size = buf.length;\n    } else if (typeof size === \"function\") {\n      cb = size;\n      size = buf.length - offset;\n    } else if (typeof cb !== \"function\") {\n      throw new TypeError('\"cb\" argument must be a function');\n    }\n    assertOffset(offset, buf.length);\n    assertSize(size, offset, buf.length);\n    return actualFill(buf, offset, size, cb);\n  }\n  function actualFill(buf, offset, size, cb) {\n    if (process3.browser) {\n      var ourBuf = buf.buffer;\n      var uint = new Uint8Array(ourBuf, offset, size);\n      crypto2.getRandomValues(uint);\n      if (cb) {\n        process3.nextTick(function() {\n          cb(null, buf);\n        });\n        return;\n      }\n      return buf;\n    }\n    if (cb) {\n      randombytes(size, function(err, bytes2) {\n        if (err) {\n          return cb(err);\n        }\n        bytes2.copy(buf, offset);\n        cb(null, buf);\n      });\n      return;\n    }\n    var bytes = randombytes(size);\n    bytes.copy(buf, offset);\n    return buf;\n  }\n  function randomFillSync2(buf, offset, size) {\n    if (typeof offset === \"undefined\") {\n      offset = 0;\n    }\n    if (!Buffer.isBuffer(buf) && !(buf instanceof _global$x.Uint8Array)) {\n      throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n    }\n    assertOffset(offset, buf.length);\n    if (size === void 0) size = buf.length - offset;\n    assertSize(size, offset, buf.length);\n    return actualFill(buf, offset, size);\n  }\n  return exports$1$12;\n}\nvar exports$1V = {};\nvar _dewExec$1U = false;\nfunction dew$1U() {\n  if (_dewExec$1U) return exports$1V;\n  _dewExec$1U = true;\n  exports$1V.randomBytes = exports$1V.rng = exports$1V.pseudoRandomBytes = exports$1V.prng = dew$1S();\n  exports$1V.createHash = exports$1V.Hash = dew$1F();\n  exports$1V.createHmac = exports$1V.Hmac = dew$1C();\n  var algos = dew$1B();\n  var algoKeys = Object.keys(algos);\n  var hashes = [\"sha1\", \"sha224\", \"sha256\", \"sha384\", \"sha512\", \"md5\", \"rmd160\"].concat(algoKeys);\n  exports$1V.getHashes = function() {\n    return hashes;\n  };\n  var p5 = dew$1v();\n  exports$1V.pbkdf2 = p5.pbkdf2;\n  exports$1V.pbkdf2Sync = p5.pbkdf2Sync;\n  var aes = dew$13$1();\n  exports$1V.Cipher = aes.Cipher;\n  exports$1V.createCipher = aes.createCipher;\n  exports$1V.Cipheriv = aes.Cipheriv;\n  exports$1V.createCipheriv = aes.createCipheriv;\n  exports$1V.Decipher = aes.Decipher;\n  exports$1V.createDecipher = aes.createDecipher;\n  exports$1V.Decipheriv = aes.Decipheriv;\n  exports$1V.createDecipheriv = aes.createDecipheriv;\n  exports$1V.getCiphers = aes.getCiphers;\n  exports$1V.listCiphers = aes.listCiphers;\n  var dh = dew$Y$1();\n  exports$1V.DiffieHellmanGroup = dh.DiffieHellmanGroup;\n  exports$1V.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\n  exports$1V.getDiffieHellman = dh.getDiffieHellman;\n  exports$1V.createDiffieHellman = dh.createDiffieHellman;\n  exports$1V.DiffieHellman = dh.DiffieHellman;\n  var sign = dew$b$1();\n  exports$1V.createSign = sign.createSign;\n  exports$1V.Sign = sign.Sign;\n  exports$1V.createVerify = sign.createVerify;\n  exports$1V.Verify = sign.Verify;\n  exports$1V.createECDH = dew$9$1();\n  var publicEncrypt2 = dew$2$12();\n  exports$1V.publicEncrypt = publicEncrypt2.publicEncrypt;\n  exports$1V.privateEncrypt = publicEncrypt2.privateEncrypt;\n  exports$1V.publicDecrypt = publicEncrypt2.publicDecrypt;\n  exports$1V.privateDecrypt = publicEncrypt2.privateDecrypt;\n  var rf = dew$1$12();\n  exports$1V.randomFill = rf.randomFill;\n  exports$1V.randomFillSync = rf.randomFillSync;\n  exports$1V.createCredentials = function() {\n    throw new Error([\"sorry, createCredentials is not implemented yet\", \"we accept pull requests\", \"https://github.com/crypto-browserify/crypto-browserify\"].join(\"\\n\"));\n  };\n  exports$1V.constants = {\n    \"DH_CHECK_P_NOT_SAFE_PRIME\": 2,\n    \"DH_CHECK_P_NOT_PRIME\": 1,\n    \"DH_UNABLE_TO_CHECK_GENERATOR\": 4,\n    \"DH_NOT_SUITABLE_GENERATOR\": 8,\n    \"NPN_ENABLED\": 1,\n    \"ALPN_ENABLED\": 1,\n    \"RSA_PKCS1_PADDING\": 1,\n    \"RSA_SSLV23_PADDING\": 2,\n    \"RSA_NO_PADDING\": 3,\n    \"RSA_PKCS1_OAEP_PADDING\": 4,\n    \"RSA_X931_PADDING\": 5,\n    \"RSA_PKCS1_PSS_PADDING\": 6,\n    \"POINT_CONVERSION_COMPRESSED\": 2,\n    \"POINT_CONVERSION_UNCOMPRESSED\": 4,\n    \"POINT_CONVERSION_HYBRID\": 6\n  };\n  return exports$1V;\n}\nvar crypto = dew$1U();\ncrypto.Cipher;\ncrypto.Cipheriv;\ncrypto.Decipher;\ncrypto.Decipheriv;\ncrypto.DiffieHellman;\ncrypto.DiffieHellmanGroup;\ncrypto.Hash;\ncrypto.Hmac;\ncrypto.Sign;\ncrypto.Verify;\ncrypto.constants;\ncrypto.createCipher;\ncrypto.createCipheriv;\ncrypto.createCredentials;\ncrypto.createDecipher;\ncrypto.createDecipheriv;\ncrypto.createDiffieHellman;\ncrypto.createDiffieHellmanGroup;\ncrypto.createECDH;\ncrypto.createHash;\ncrypto.createHmac;\ncrypto.createSign;\ncrypto.createVerify;\ncrypto.getCiphers;\ncrypto.getDiffieHellman;\ncrypto.getHashes;\ncrypto.listCiphers;\ncrypto.pbkdf2;\ncrypto.pbkdf2Sync;\ncrypto.privateDecrypt;\ncrypto.privateEncrypt;\ncrypto.prng;\ncrypto.pseudoRandomBytes;\ncrypto.publicDecrypt;\ncrypto.publicEncrypt;\ncrypto.randomBytes;\ncrypto.randomFill;\ncrypto.randomFillSync;\ncrypto.rng;\nvar exports$12$2 = {};\nvar _dewExec$11$2 = false;\nvar _global$a$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$11$2() {\n  if (_dewExec$11$2) return exports$12$2;\n  _dewExec$11$2 = true;\n  var r5;\n  exports$12$2 = function rand(len) {\n    if (!r5) r5 = new Rand(null);\n    return r5.generate(len);\n  };\n  function Rand(rand) {\n    (this || _global$a$2).rand = rand;\n  }\n  exports$12$2.Rand = Rand;\n  Rand.prototype.generate = function generate(len) {\n    return this._rand(len);\n  };\n  Rand.prototype._rand = function _rand(n5) {\n    if ((this || _global$a$2).rand.getBytes) return (this || _global$a$2).rand.getBytes(n5);\n    var res = new Uint8Array(n5);\n    for (var i5 = 0; i5 < res.length; i5++) res[i5] = (this || _global$a$2).rand.getByte();\n    return res;\n  };\n  if (typeof self === \"object\") {\n    if (self.crypto && self.crypto.getRandomValues) {\n      Rand.prototype._rand = function _rand(n5) {\n        var arr = new Uint8Array(n5);\n        self.crypto.getRandomValues(arr);\n        return arr;\n      };\n    } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n      Rand.prototype._rand = function _rand(n5) {\n        var arr = new Uint8Array(n5);\n        self.msCrypto.getRandomValues(arr);\n        return arr;\n      };\n    } else if (typeof window === \"object\") {\n      Rand.prototype._rand = function() {\n        throw new Error(\"Not implemented yet\");\n      };\n    }\n  } else {\n    try {\n      var crypto$1 = crypto;\n      if (typeof crypto$1.randomBytes !== \"function\") throw new Error(\"Not supported\");\n      Rand.prototype._rand = function _rand(n5) {\n        return crypto$1.randomBytes(n5);\n      };\n    } catch (e7) {\n    }\n  }\n  return exports$12$2;\n}\nvar exports$11$2 = {};\nvar _dewExec$10$2 = false;\nvar _global$9$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$10$2() {\n  if (_dewExec$10$2) return exports$11$2;\n  _dewExec$10$2 = true;\n  var bn = dew$1W();\n  var brorand = dew$11$2();\n  function MillerRabin(rand) {\n    (this || _global$9$2).rand = rand || new brorand.Rand();\n  }\n  exports$11$2 = MillerRabin;\n  MillerRabin.create = function create(rand) {\n    return new MillerRabin(rand);\n  };\n  MillerRabin.prototype._randbelow = function _randbelow(n5) {\n    var len = n5.bitLength();\n    var min_bytes = Math.ceil(len / 8);\n    do\n      var a5 = new bn((this || _global$9$2).rand.generate(min_bytes));\n    while (a5.cmp(n5) >= 0);\n    return a5;\n  };\n  MillerRabin.prototype._randrange = function _randrange(start, stop) {\n    var size = stop.sub(start);\n    return start.add(this._randbelow(size));\n  };\n  MillerRabin.prototype.test = function test(n5, k4, cb) {\n    var len = n5.bitLength();\n    var red = bn.mont(n5);\n    var rone = new bn(1).toRed(red);\n    if (!k4) k4 = Math.max(1, len / 48 | 0);\n    var n1 = n5.subn(1);\n    for (var s5 = 0; !n1.testn(s5); s5++) {\n    }\n    var d4 = n5.shrn(s5);\n    var rn1 = n1.toRed(red);\n    var prime = true;\n    for (; k4 > 0; k4--) {\n      var a5 = this._randrange(new bn(2), n1);\n      if (cb) cb(a5);\n      var x4 = a5.toRed(red).redPow(d4);\n      if (x4.cmp(rone) === 0 || x4.cmp(rn1) === 0) continue;\n      for (var i5 = 1; i5 < s5; i5++) {\n        x4 = x4.redSqr();\n        if (x4.cmp(rone) === 0) return false;\n        if (x4.cmp(rn1) === 0) break;\n      }\n      if (i5 === s5) return false;\n    }\n    return prime;\n  };\n  MillerRabin.prototype.getDivisor = function getDivisor(n5, k4) {\n    var len = n5.bitLength();\n    var red = bn.mont(n5);\n    var rone = new bn(1).toRed(red);\n    if (!k4) k4 = Math.max(1, len / 48 | 0);\n    var n1 = n5.subn(1);\n    for (var s5 = 0; !n1.testn(s5); s5++) {\n    }\n    var d4 = n5.shrn(s5);\n    var rn1 = n1.toRed(red);\n    for (; k4 > 0; k4--) {\n      var a5 = this._randrange(new bn(2), n1);\n      var g4 = n5.gcd(a5);\n      if (g4.cmpn(1) !== 0) return g4;\n      var x4 = a5.toRed(red).redPow(d4);\n      if (x4.cmp(rone) === 0 || x4.cmp(rn1) === 0) continue;\n      for (var i5 = 1; i5 < s5; i5++) {\n        x4 = x4.redSqr();\n        if (x4.cmp(rone) === 0) return x4.fromRed().subn(1).gcd(n5);\n        if (x4.cmp(rn1) === 0) break;\n      }\n      if (i5 === s5) {\n        x4 = x4.redSqr();\n        return x4.fromRed().subn(1).gcd(n5);\n      }\n    }\n    return false;\n  };\n  return exports$11$2;\n}\nvar exports$10$2 = {};\nvar _dewExec$$$2 = false;\nfunction dew$$$2() {\n  if (_dewExec$$$2) return exports$10$2;\n  _dewExec$$$2 = true;\n  var randomBytes2 = dew$2O();\n  exports$10$2 = findPrime;\n  findPrime.simpleSieve = simpleSieve;\n  findPrime.fermatTest = fermatTest;\n  var BN = dew$1X();\n  var TWENTYFOUR = new BN(24);\n  var MillerRabin = dew$10$2();\n  var millerRabin = new MillerRabin();\n  var ONE = new BN(1);\n  var TWO = new BN(2);\n  var FIVE = new BN(5);\n  new BN(16);\n  new BN(8);\n  var TEN = new BN(10);\n  var THREE = new BN(3);\n  new BN(7);\n  var ELEVEN = new BN(11);\n  var FOUR = new BN(4);\n  new BN(12);\n  var primes = null;\n  function _getPrimes() {\n    if (primes !== null) return primes;\n    var limit = 1048576;\n    var res = [];\n    res[0] = 2;\n    for (var i5 = 1, k4 = 3; k4 < limit; k4 += 2) {\n      var sqrt = Math.ceil(Math.sqrt(k4));\n      for (var j4 = 0; j4 < i5 && res[j4] <= sqrt; j4++) if (k4 % res[j4] === 0) break;\n      if (i5 !== j4 && res[j4] <= sqrt) continue;\n      res[i5++] = k4;\n    }\n    primes = res;\n    return res;\n  }\n  function simpleSieve(p5) {\n    var primes2 = _getPrimes();\n    for (var i5 = 0; i5 < primes2.length; i5++) if (p5.modn(primes2[i5]) === 0) {\n      if (p5.cmpn(primes2[i5]) === 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n    return true;\n  }\n  function fermatTest(p5) {\n    var red = BN.mont(p5);\n    return TWO.toRed(red).redPow(p5.subn(1)).fromRed().cmpn(1) === 0;\n  }\n  function findPrime(bits, gen) {\n    if (bits < 16) {\n      if (gen === 2 || gen === 5) {\n        return new BN([140, 123]);\n      } else {\n        return new BN([140, 39]);\n      }\n    }\n    gen = new BN(gen);\n    var num, n22;\n    while (true) {\n      num = new BN(randomBytes2(Math.ceil(bits / 8)));\n      while (num.bitLength() > bits) {\n        num.ishrn(1);\n      }\n      if (num.isEven()) {\n        num.iadd(ONE);\n      }\n      if (!num.testn(1)) {\n        num.iadd(TWO);\n      }\n      if (!gen.cmp(TWO)) {\n        while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n          num.iadd(FOUR);\n        }\n      } else if (!gen.cmp(FIVE)) {\n        while (num.mod(TEN).cmp(THREE)) {\n          num.iadd(FOUR);\n        }\n      }\n      n22 = num.shrn(1);\n      if (simpleSieve(n22) && simpleSieve(num) && fermatTest(n22) && fermatTest(num) && millerRabin.test(n22) && millerRabin.test(num)) {\n        return num;\n      }\n    }\n  }\n  return exports$10$2;\n}\nvar _primes$2 = {\n  \"modp1\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"\n  },\n  \"modp2\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"\n  },\n  \"modp5\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"\n  },\n  \"modp14\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"\n  },\n  \"modp15\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"\n  },\n  \"modp16\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n  },\n  \"modp17\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"\n  },\n  \"modp18\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"\n  }\n};\nvar exports$$$2 = {};\nvar _dewExec$_$2 = false;\nvar _global$8$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$_$2() {\n  if (_dewExec$_$2) return exports$$$2;\n  _dewExec$_$2 = true;\n  var Buffer = buffer.Buffer;\n  var BN = dew$1X();\n  var MillerRabin = dew$10$2();\n  var millerRabin = new MillerRabin();\n  var TWENTYFOUR = new BN(24);\n  var ELEVEN = new BN(11);\n  var TEN = new BN(10);\n  var THREE = new BN(3);\n  var SEVEN = new BN(7);\n  var primes = dew$$$2();\n  var randomBytes2 = dew$2O();\n  exports$$$2 = DH;\n  function setPublicKey(pub, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(pub)) {\n      pub = new Buffer(pub, enc);\n    }\n    (this || _global$8$2)._pub = new BN(pub);\n    return this || _global$8$2;\n  }\n  function setPrivateKey(priv, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(priv)) {\n      priv = new Buffer(priv, enc);\n    }\n    (this || _global$8$2)._priv = new BN(priv);\n    return this || _global$8$2;\n  }\n  var primeCache = {};\n  function checkPrime(prime, generator) {\n    var gen = generator.toString(\"hex\");\n    var hex = [gen, prime.toString(16)].join(\"_\");\n    if (hex in primeCache) {\n      return primeCache[hex];\n    }\n    var error = 0;\n    if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n      error += 1;\n      if (gen === \"02\" || gen === \"05\") {\n        error += 8;\n      } else {\n        error += 4;\n      }\n      primeCache[hex] = error;\n      return error;\n    }\n    if (!millerRabin.test(prime.shrn(1))) {\n      error += 2;\n    }\n    var rem;\n    switch (gen) {\n      case \"02\":\n        if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n          error += 8;\n        }\n        break;\n      case \"05\":\n        rem = prime.mod(TEN);\n        if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n          error += 8;\n        }\n        break;\n      default:\n        error += 4;\n    }\n    primeCache[hex] = error;\n    return error;\n  }\n  function DH(prime, generator, malleable) {\n    this.setGenerator(generator);\n    (this || _global$8$2).__prime = new BN(prime);\n    (this || _global$8$2)._prime = BN.mont((this || _global$8$2).__prime);\n    (this || _global$8$2)._primeLen = prime.length;\n    (this || _global$8$2)._pub = void 0;\n    (this || _global$8$2)._priv = void 0;\n    (this || _global$8$2)._primeCode = void 0;\n    if (malleable) {\n      (this || _global$8$2).setPublicKey = setPublicKey;\n      (this || _global$8$2).setPrivateKey = setPrivateKey;\n    } else {\n      (this || _global$8$2)._primeCode = 8;\n    }\n  }\n  Object.defineProperty(DH.prototype, \"verifyError\", {\n    enumerable: true,\n    get: function() {\n      if (typeof (this || _global$8$2)._primeCode !== \"number\") {\n        (this || _global$8$2)._primeCode = checkPrime((this || _global$8$2).__prime, (this || _global$8$2).__gen);\n      }\n      return (this || _global$8$2)._primeCode;\n    }\n  });\n  DH.prototype.generateKeys = function() {\n    if (!(this || _global$8$2)._priv) {\n      (this || _global$8$2)._priv = new BN(randomBytes2((this || _global$8$2)._primeLen));\n    }\n    (this || _global$8$2)._pub = (this || _global$8$2)._gen.toRed((this || _global$8$2)._prime).redPow((this || _global$8$2)._priv).fromRed();\n    return this.getPublicKey();\n  };\n  DH.prototype.computeSecret = function(other) {\n    other = new BN(other);\n    other = other.toRed((this || _global$8$2)._prime);\n    var secret = other.redPow((this || _global$8$2)._priv).fromRed();\n    var out = new Buffer(secret.toArray());\n    var prime = this.getPrime();\n    if (out.length < prime.length) {\n      var front = new Buffer(prime.length - out.length);\n      front.fill(0);\n      out = Buffer.concat([front, out]);\n    }\n    return out;\n  };\n  DH.prototype.getPublicKey = function getPublicKey(enc) {\n    return formatReturnValue((this || _global$8$2)._pub, enc);\n  };\n  DH.prototype.getPrivateKey = function getPrivateKey(enc) {\n    return formatReturnValue((this || _global$8$2)._priv, enc);\n  };\n  DH.prototype.getPrime = function(enc) {\n    return formatReturnValue((this || _global$8$2).__prime, enc);\n  };\n  DH.prototype.getGenerator = function(enc) {\n    return formatReturnValue((this || _global$8$2)._gen, enc);\n  };\n  DH.prototype.setGenerator = function(gen, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(gen)) {\n      gen = new Buffer(gen, enc);\n    }\n    (this || _global$8$2).__gen = gen;\n    (this || _global$8$2)._gen = new BN(gen);\n    return this || _global$8$2;\n  };\n  function formatReturnValue(bn, enc) {\n    var buf = new Buffer(bn.toArray());\n    if (!enc) {\n      return buf;\n    } else {\n      return buf.toString(enc);\n    }\n  }\n  return exports$$$2;\n}\nvar exports$_$2 = {};\nvar _dewExec$Z$2 = false;\nfunction dew$Z$2() {\n  if (_dewExec$Z$2) return exports$_$2;\n  _dewExec$Z$2 = true;\n  var Buffer = buffer.Buffer;\n  var generatePrime = dew$$$2();\n  var primes = _primes$2;\n  var DH = dew$_$2();\n  function getDiffieHellman2(mod) {\n    var prime = new Buffer(primes[mod].prime, \"hex\");\n    var gen = new Buffer(primes[mod].gen, \"hex\");\n    return new DH(prime, gen);\n  }\n  var ENCODINGS = {\n    \"binary\": true,\n    \"hex\": true,\n    \"base64\": true\n  };\n  function createDiffieHellman2(prime, enc, generator, genc) {\n    if (Buffer.isBuffer(enc) || ENCODINGS[enc] === void 0) {\n      return createDiffieHellman2(prime, \"binary\", enc, generator);\n    }\n    enc = enc || \"binary\";\n    genc = genc || \"binary\";\n    generator = generator || new Buffer([2]);\n    if (!Buffer.isBuffer(generator)) {\n      generator = new Buffer(generator, genc);\n    }\n    if (typeof prime === \"number\") {\n      return new DH(generatePrime(prime, generator), generator, true);\n    }\n    if (!Buffer.isBuffer(prime)) {\n      prime = new Buffer(prime, enc);\n    }\n    return new DH(prime, generator, true);\n  }\n  exports$_$2.DiffieHellmanGroup = exports$_$2.createDiffieHellmanGroup = exports$_$2.getDiffieHellman = getDiffieHellman2;\n  exports$_$2.createDiffieHellman = exports$_$2.DiffieHellman = createDiffieHellman2;\n  return exports$_$2;\n}\nvar exports$Z$2 = {};\nvar _dewExec$Y$2 = false;\nfunction dew$Y$2() {\n  if (_dewExec$Y$2) return exports$Z$2;\n  _dewExec$Y$2 = true;\n  var buffer$1 = buffer;\n  var Buffer = buffer$1.Buffer;\n  function copyProps(src, dst) {\n    for (var key in src) {\n      dst[key] = src[key];\n    }\n  }\n  if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n    exports$Z$2 = buffer$1;\n  } else {\n    copyProps(buffer$1, exports$Z$2);\n    exports$Z$2.Buffer = SafeBuffer;\n  }\n  function SafeBuffer(arg, encodingOrOffset, length) {\n    return Buffer(arg, encodingOrOffset, length);\n  }\n  SafeBuffer.prototype = Object.create(Buffer.prototype);\n  copyProps(Buffer, SafeBuffer);\n  SafeBuffer.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  SafeBuffer.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 !== void 0) {\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  SafeBuffer.allocUnsafe = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return Buffer(size);\n  };\n  SafeBuffer.allocUnsafeSlow = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return buffer$1.SlowBuffer(size);\n  };\n  return exports$Z$2;\n}\nvar exports$Y$2 = {};\nvar _dewExec$X$2 = false;\nvar module$4$2 = {\n  exports: exports$Y$2\n};\nvar _global$7$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$X$2() {\n  if (_dewExec$X$2) return module$4$2.exports;\n  _dewExec$X$2 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$7$2).negative = 0;\n      (this || _global$7$2).words = null;\n      (this || _global$7$2).length = 0;\n      (this || _global$7$2).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = buffer.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$7$2).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$7$2).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$7$2).words = [number & 67108863];\n        (this || _global$7$2).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$7$2).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$7$2).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$7$2).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$7$2).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$7$2).words = [0];\n        (this || _global$7$2).length = 1;\n        return this || _global$7$2;\n      }\n      (this || _global$7$2).length = Math.ceil(number.length / 3);\n      (this || _global$7$2).words = new Array((this || _global$7$2).length);\n      for (var i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n        (this || _global$7$2).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$7$2).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$7$2).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$7$2).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$7$2).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this._strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 48 && c5 <= 57) {\n        return c5 - 48;\n      } else if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        assert2(false, \"Invalid character in \" + string);\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$7$2).length = Math.ceil((number.length - start) / 6);\n      (this || _global$7$2).words = new Array((this || _global$7$2).length);\n      for (var i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n        (this || _global$7$2).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$7$2).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$7$2).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$7$2).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$7$2).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this._strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var b4 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          b4 = c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          b4 = c5 - 17 + 10;\n        } else {\n          b4 = c5;\n        }\n        assert2(c5 >= 0 && b4 < mul, \"Invalid character\");\n        r5 += b4;\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$7$2).words = [0];\n      (this || _global$7$2).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$7$2).words[0] + word < 67108864) {\n          (this || _global$7$2).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$7$2).words[0] + word < 67108864) {\n          (this || _global$7$2).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this._strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$7$2).length);\n      for (var i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n        dest.words[i5] = (this || _global$7$2).words[i5];\n      }\n      dest.length = (this || _global$7$2).length;\n      dest.negative = (this || _global$7$2).negative;\n      dest.red = (this || _global$7$2).red;\n    };\n    function move(dest, src) {\n      dest.words = src.words;\n      dest.length = src.length;\n      dest.negative = src.negative;\n      dest.red = src.red;\n    }\n    BN.prototype._move = function _move(dest) {\n      move(dest, this || _global$7$2);\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$7$2).length < size) {\n        (this || _global$7$2).words[(this || _global$7$2).length++] = 0;\n      }\n      return this || _global$7$2;\n    };\n    BN.prototype._strip = function strip() {\n      while ((this || _global$7$2).length > 1 && (this || _global$7$2).words[(this || _global$7$2).length - 1] === 0) {\n        (this || _global$7$2).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$7$2).length === 1 && (this || _global$7$2).words[0] === 0) {\n        (this || _global$7$2).negative = 0;\n      }\n      return this || _global$7$2;\n    };\n    if (typeof Symbol !== \"undefined\" && typeof Symbol.for === \"function\") {\n      try {\n        BN.prototype[/* @__PURE__ */ Symbol.for(\"nodejs.util.inspect.custom\")] = inspect;\n      } catch (e7) {\n        BN.prototype.inspect = inspect;\n      }\n    } else {\n      BN.prototype.inspect = inspect;\n    }\n    function inspect() {\n      return ((this || _global$7$2).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    }\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n          var w4 = (this || _global$7$2).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$7$2).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$7$2).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modrn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$7$2).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$7$2).words[0];\n      if ((this || _global$7$2).length === 2) {\n        ret += (this || _global$7$2).words[1] * 67108864;\n      } else if ((this || _global$7$2).length === 3 && (this || _global$7$2).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$7$2).words[1] * 67108864;\n      } else if ((this || _global$7$2).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$7$2).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16, 2);\n    };\n    if (Buffer) {\n      BN.prototype.toBuffer = function toBuffer(endian, length) {\n        return this.toArrayLike(Buffer, endian, length);\n      };\n    }\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    var allocate = function allocate2(ArrayType, size) {\n      if (ArrayType.allocUnsafe) {\n        return ArrayType.allocUnsafe(size);\n      }\n      return new ArrayType(size);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      this._strip();\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      var res = allocate(ArrayType, reqLength);\n      var postfix = endian === \"le\" ? \"LE\" : \"BE\";\n      this[\"_toArrayLike\" + postfix](res, byteLength);\n      return res;\n    };\n    BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n      var position = 0;\n      var carry = 0;\n      for (var i5 = 0, shift = 0; i5 < (this || _global$7$2).length; i5++) {\n        var word = (this || _global$7$2).words[i5] << shift | carry;\n        res[position++] = word & 255;\n        if (position < res.length) {\n          res[position++] = word >> 8 & 255;\n        }\n        if (position < res.length) {\n          res[position++] = word >> 16 & 255;\n        }\n        if (shift === 6) {\n          if (position < res.length) {\n            res[position++] = word >> 24 & 255;\n          }\n          carry = 0;\n          shift = 0;\n        } else {\n          carry = word >>> 24;\n          shift += 2;\n        }\n      }\n      if (position < res.length) {\n        res[position++] = carry;\n        while (position < res.length) {\n          res[position++] = 0;\n        }\n      }\n    };\n    BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n      var position = res.length - 1;\n      var carry = 0;\n      for (var i5 = 0, shift = 0; i5 < (this || _global$7$2).length; i5++) {\n        var word = (this || _global$7$2).words[i5] << shift | carry;\n        res[position--] = word & 255;\n        if (position >= 0) {\n          res[position--] = word >> 8 & 255;\n        }\n        if (position >= 0) {\n          res[position--] = word >> 16 & 255;\n        }\n        if (shift === 6) {\n          if (position >= 0) {\n            res[position--] = word >> 24 & 255;\n          }\n          carry = 0;\n          shift = 0;\n        } else {\n          carry = word >>> 24;\n          shift += 2;\n        }\n      }\n      if (position >= 0) {\n        res[position--] = carry;\n        while (position >= 0) {\n          res[position--] = 0;\n        }\n      }\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$7$2).words[(this || _global$7$2).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$7$2).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = num.words[off2] >>> wbit & 1;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n        var b4 = this._zeroBits((this || _global$7$2).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$7$2).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$7$2).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$7$2).negative ^= 1;\n      }\n      return this || _global$7$2;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$7$2).length < num.length) {\n        (this || _global$7$2).words[(this || _global$7$2).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$7$2).words[i5] = (this || _global$7$2).words[i5] | num.words[i5];\n      }\n      return this._strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$7$2).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$7$2).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$7$2);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$7$2).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$7$2);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$7$2).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$7$2;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$7$2).words[i5] = (this || _global$7$2).words[i5] & num.words[i5];\n      }\n      (this || _global$7$2).length = b4.length;\n      return this._strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$7$2).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$7$2).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$7$2);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$7$2).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$7$2);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$7$2).length > num.length) {\n        a5 = this || _global$7$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$7$2;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$7$2).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$7$2) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$7$2).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$7$2).length = a5.length;\n      return this._strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$7$2).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$7$2).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$7$2);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$7$2).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$7$2);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$7$2).words[i5] = ~(this || _global$7$2).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$7$2).words[i5] = ~(this || _global$7$2).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this._strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$7$2).words[off2] = (this || _global$7$2).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$7$2).words[off2] = (this || _global$7$2).words[off2] & ~(1 << wbit);\n      }\n      return this._strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$7$2).negative !== 0 && num.negative === 0) {\n        (this || _global$7$2).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$7$2).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$7$2).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$7$2).length > num.length) {\n        a5 = this || _global$7$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$7$2;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$7$2).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$7$2).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$7$2).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$7$2).words[(this || _global$7$2).length] = carry;\n        (this || _global$7$2).length++;\n      } else if (a5 !== (this || _global$7$2)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$7$2).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$7$2;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$7$2).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$7$2).negative !== 0) {\n        (this || _global$7$2).negative = 0;\n        res = num.sub(this || _global$7$2);\n        (this || _global$7$2).negative = 1;\n        return res;\n      }\n      if ((this || _global$7$2).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$7$2);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$7$2).negative !== 0) {\n        (this || _global$7$2).negative = 0;\n        this.iadd(num);\n        (this || _global$7$2).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$7$2).negative = 0;\n        (this || _global$7$2).length = 1;\n        (this || _global$7$2).words[0] = 0;\n        return this || _global$7$2;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$7$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$7$2;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$7$2).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$7$2).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$7$2)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$7$2).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$7$2).length = Math.max((this || _global$7$2).length, i5);\n      if (a5 !== (this || _global$7$2)) {\n        (this || _global$7$2).negative = 1;\n      }\n      return this._strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out._strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out._strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      return bigMulTo(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$7$2).length + num.length;\n      if ((this || _global$7$2).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$7$2, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$7$2, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$7$2, num, out);\n      } else {\n        res = jumboMulTo(this || _global$7$2, num, out);\n      }\n      return res;\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$7$2).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$7$2).length + num.length);\n      return jumboMulTo(this || _global$7$2, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$7$2);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n        var w4 = ((this || _global$7$2).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$7$2).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$7$2).words[i5] = carry;\n        (this || _global$7$2).length++;\n      }\n      return isNegNum ? this.ineg() : this || _global$7$2;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$7$2);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$7$2;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n          var newCarry = (this || _global$7$2).words[i5] & carryMask;\n          var c5 = ((this || _global$7$2).words[i5] | 0) - newCarry << r5;\n          (this || _global$7$2).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$7$2).words[i5] = carry;\n          (this || _global$7$2).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$7$2).length - 1; i5 >= 0; i5--) {\n          (this || _global$7$2).words[i5 + s5] = (this || _global$7$2).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$7$2).words[i5] = 0;\n        }\n        (this || _global$7$2).length += s5;\n      }\n      return this._strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$7$2).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$7$2).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$7$2).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$7$2).length > s5) {\n        (this || _global$7$2).length -= s5;\n        for (i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n          (this || _global$7$2).words[i5] = (this || _global$7$2).words[i5 + s5];\n        }\n      } else {\n        (this || _global$7$2).words[0] = 0;\n        (this || _global$7$2).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$7$2).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$7$2).words[i5] | 0;\n        (this || _global$7$2).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$7$2).length === 0) {\n        (this || _global$7$2).words[0] = 0;\n        (this || _global$7$2).length = 1;\n      }\n      return this._strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$7$2).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$7$2).length <= s5) return false;\n      var w4 = (this || _global$7$2).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$7$2).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$7$2).length <= s5) {\n        return this || _global$7$2;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$7$2).length = Math.min(s5, (this || _global$7$2).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$7$2).words[(this || _global$7$2).length - 1] &= mask;\n      }\n      return this._strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$7$2).negative !== 0) {\n        if ((this || _global$7$2).length === 1 && ((this || _global$7$2).words[0] | 0) <= num) {\n          (this || _global$7$2).words[0] = num - ((this || _global$7$2).words[0] | 0);\n          (this || _global$7$2).negative = 0;\n          return this || _global$7$2;\n        }\n        (this || _global$7$2).negative = 0;\n        this.isubn(num);\n        (this || _global$7$2).negative = 1;\n        return this || _global$7$2;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$7$2).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$7$2).length && (this || _global$7$2).words[i5] >= 67108864; i5++) {\n        (this || _global$7$2).words[i5] -= 67108864;\n        if (i5 === (this || _global$7$2).length - 1) {\n          (this || _global$7$2).words[i5 + 1] = 1;\n        } else {\n          (this || _global$7$2).words[i5 + 1]++;\n        }\n      }\n      (this || _global$7$2).length = Math.max((this || _global$7$2).length, i5 + 1);\n      return this || _global$7$2;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$7$2).negative !== 0) {\n        (this || _global$7$2).negative = 0;\n        this.iaddn(num);\n        (this || _global$7$2).negative = 1;\n        return this || _global$7$2;\n      }\n      (this || _global$7$2).words[0] -= num;\n      if ((this || _global$7$2).length === 1 && (this || _global$7$2).words[0] < 0) {\n        (this || _global$7$2).words[0] = -(this || _global$7$2).words[0];\n        (this || _global$7$2).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$7$2).length && (this || _global$7$2).words[i5] < 0; i5++) {\n          (this || _global$7$2).words[i5] += 67108864;\n          (this || _global$7$2).words[i5 + 1] -= 1;\n        }\n      }\n      return this._strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$7$2).negative = 0;\n      return this || _global$7$2;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$7$2).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$7$2).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$7$2).length - shift; i5++) {\n        w4 = ((this || _global$7$2).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$7$2).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this._strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$7$2).length; i5++) {\n        w4 = -((this || _global$7$2).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$7$2).words[i5] = w4 & 67108863;\n      }\n      (this || _global$7$2).negative = 1;\n      return this._strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$7$2).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3._strip();\n      }\n      a5._strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$7$2).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$7$2).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$7$2).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$7$2).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$7$2\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modrn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modrn = function modrn(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$7$2).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$7$2).words[i5] | 0)) % num;\n      }\n      return isNegNum ? -acc : acc;\n    };\n    BN.prototype.modn = function modn(num) {\n      return this.modrn(num);\n    };\n    BN.prototype.idivn = function idivn(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$7$2).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$7$2).words[i5] | 0) + carry * 67108864;\n        (this || _global$7$2).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      this._strip();\n      return isNegNum ? this.ineg() : this || _global$7$2;\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$7$2;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$7$2;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$7$2).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$7$2).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$7$2).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$7$2).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$7$2).words[s5] |= q3;\n        return this || _global$7$2;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$7$2).length; i5++) {\n        var w4 = (this || _global$7$2).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$7$2).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$7$2).words[i5] = carry;\n        (this || _global$7$2).length++;\n      }\n      return this || _global$7$2;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$7$2).length === 1 && (this || _global$7$2).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$7$2).negative !== 0 && !negative) return -1;\n      if ((this || _global$7$2).negative === 0 && negative) return 1;\n      this._strip();\n      var res;\n      if ((this || _global$7$2).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$7$2).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$7$2).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$7$2).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$7$2).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$7$2).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$7$2).length > num.length) return 1;\n      if ((this || _global$7$2).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$7$2).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$7$2).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$7$2).red, \"Already a number in reduction context\");\n      assert2((this || _global$7$2).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$7$2)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$7$2).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$7$2).red.convertFrom(this || _global$7$2);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$7$2).red = ctx;\n      return this || _global$7$2;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$7$2).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$7$2).red, \"redAdd works only with red numbers\");\n      return (this || _global$7$2).red.add(this || _global$7$2, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$7$2).red, \"redIAdd works only with red numbers\");\n      return (this || _global$7$2).red.iadd(this || _global$7$2, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$7$2).red, \"redSub works only with red numbers\");\n      return (this || _global$7$2).red.sub(this || _global$7$2, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$7$2).red, \"redISub works only with red numbers\");\n      return (this || _global$7$2).red.isub(this || _global$7$2, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$7$2).red, \"redShl works only with red numbers\");\n      return (this || _global$7$2).red.shl(this || _global$7$2, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$7$2).red, \"redMul works only with red numbers\");\n      (this || _global$7$2).red._verify2(this || _global$7$2, num);\n      return (this || _global$7$2).red.mul(this || _global$7$2, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$7$2).red, \"redMul works only with red numbers\");\n      (this || _global$7$2).red._verify2(this || _global$7$2, num);\n      return (this || _global$7$2).red.imul(this || _global$7$2, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$7$2).red, \"redSqr works only with red numbers\");\n      (this || _global$7$2).red._verify1(this || _global$7$2);\n      return (this || _global$7$2).red.sqr(this || _global$7$2);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$7$2).red, \"redISqr works only with red numbers\");\n      (this || _global$7$2).red._verify1(this || _global$7$2);\n      return (this || _global$7$2).red.isqr(this || _global$7$2);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$7$2).red, \"redSqrt works only with red numbers\");\n      (this || _global$7$2).red._verify1(this || _global$7$2);\n      return (this || _global$7$2).red.sqrt(this || _global$7$2);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$7$2).red, \"redInvm works only with red numbers\");\n      (this || _global$7$2).red._verify1(this || _global$7$2);\n      return (this || _global$7$2).red.invm(this || _global$7$2);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$7$2).red, \"redNeg works only with red numbers\");\n      (this || _global$7$2).red._verify1(this || _global$7$2);\n      return (this || _global$7$2).red.neg(this || _global$7$2);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$7$2).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$7$2).red._verify1(this || _global$7$2);\n      return (this || _global$7$2).red.pow(this || _global$7$2, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$7$2).name = name2;\n      (this || _global$7$2).p = new BN(p5, 16);\n      (this || _global$7$2).n = (this || _global$7$2).p.bitLength();\n      (this || _global$7$2).k = new BN(1).iushln((this || _global$7$2).n).isub((this || _global$7$2).p);\n      (this || _global$7$2).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$7$2).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$7$2).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$7$2).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$7$2).n);\n      var cmp = rlen < (this || _global$7$2).n ? -1 : r5.ucmp((this || _global$7$2).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$7$2).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$7$2).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$7$2).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$7$2, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$7$2, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$7$2, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$7$2, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$7$2).m = prime.p;\n        (this || _global$7$2).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$7$2).m = m4;\n        (this || _global$7$2).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$7$2).prime) return (this || _global$7$2).prime.ireduce(a5)._forceRed(this || _global$7$2);\n      move(a5, a5.umod((this || _global$7$2).m)._forceRed(this || _global$7$2));\n      return a5;\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$7$2).m.sub(a5)._forceRed(this || _global$7$2);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$7$2).m) >= 0) {\n        res.isub((this || _global$7$2).m);\n      }\n      return res._forceRed(this || _global$7$2);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$7$2).m) >= 0) {\n        res.isub((this || _global$7$2).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$7$2).m);\n      }\n      return res._forceRed(this || _global$7$2);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$7$2).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$7$2).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$7$2).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$7$2).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$7$2);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$7$2).m.subn(1).iushrn(1);\n      var z4 = (this || _global$7$2).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$7$2);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$7$2).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$7$2);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$7$2);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$7$2).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$7$2, m4);\n      (this || _global$7$2).shift = (this || _global$7$2).m.bitLength();\n      if ((this || _global$7$2).shift % 26 !== 0) {\n        (this || _global$7$2).shift += 26 - (this || _global$7$2).shift % 26;\n      }\n      (this || _global$7$2).r = new BN(1).iushln((this || _global$7$2).shift);\n      (this || _global$7$2).r2 = this.imod((this || _global$7$2).r.sqr());\n      (this || _global$7$2).rinv = (this || _global$7$2).r._invmp((this || _global$7$2).m);\n      (this || _global$7$2).minv = (this || _global$7$2).rinv.mul((this || _global$7$2).r).isubn(1).div((this || _global$7$2).m);\n      (this || _global$7$2).minv = (this || _global$7$2).minv.umod((this || _global$7$2).r);\n      (this || _global$7$2).minv = (this || _global$7$2).r.sub((this || _global$7$2).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$7$2).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$7$2).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$7$2).shift).mul((this || _global$7$2).minv).imaskn((this || _global$7$2).shift).mul((this || _global$7$2).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$7$2).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$7$2).m) >= 0) {\n        res = u5.isub((this || _global$7$2).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$7$2).m);\n      }\n      return res._forceRed(this || _global$7$2);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$7$2);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$7$2).shift).mul((this || _global$7$2).minv).imaskn((this || _global$7$2).shift).mul((this || _global$7$2).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$7$2).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$7$2).m) >= 0) {\n        res = u5.isub((this || _global$7$2).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$7$2).m);\n      }\n      return res._forceRed(this || _global$7$2);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$7$2).m).mul((this || _global$7$2).r2));\n      return res._forceRed(this || _global$7$2);\n    };\n  })(module$4$2, exports$Y$2);\n  return module$4$2.exports;\n}\nvar exports$X$2 = {};\nvar _dewExec$W$2 = false;\nfunction dew$W$2() {\n  if (_dewExec$W$2) return exports$X$2;\n  _dewExec$W$2 = true;\n  var Buffer = buffer.Buffer;\n  var BN = dew$X$2();\n  var randomBytes2 = dew$2O();\n  function blind(priv) {\n    var r5 = getr(priv);\n    var blinder = r5.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n    return {\n      blinder,\n      unblinder: r5.invm(priv.modulus)\n    };\n  }\n  function getr(priv) {\n    var len = priv.modulus.byteLength();\n    var r5;\n    do {\n      r5 = new BN(randomBytes2(len));\n    } while (r5.cmp(priv.modulus) >= 0 || !r5.umod(priv.prime1) || !r5.umod(priv.prime2));\n    return r5;\n  }\n  function crt(msg, priv) {\n    var blinds = blind(priv);\n    var len = priv.modulus.byteLength();\n    var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n    var c1 = blinded.toRed(BN.mont(priv.prime1));\n    var c22 = blinded.toRed(BN.mont(priv.prime2));\n    var qinv = priv.coefficient;\n    var p5 = priv.prime1;\n    var q3 = priv.prime2;\n    var m1 = c1.redPow(priv.exponent1).fromRed();\n    var m22 = c22.redPow(priv.exponent2).fromRed();\n    var h5 = m1.isub(m22).imul(qinv).umod(p5).imul(q3);\n    return m22.iadd(h5).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, \"be\", len);\n  }\n  crt.getr = getr;\n  exports$X$2 = crt;\n  return exports$X$2;\n}\nvar _package$2 = {\n  \"name\": \"elliptic\",\n  \"version\": \"6.5.4\",\n  \"description\": \"EC cryptography\",\n  \"main\": \"lib/elliptic.js\",\n  \"files\": [\n    \"lib\"\n  ],\n  \"scripts\": {\n    \"lint\": \"eslint lib test\",\n    \"lint:fix\": \"npm run lint -- --fix\",\n    \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n    \"test\": \"npm run lint && npm run unit\",\n    \"version\": \"grunt dist && git add dist/\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git@github.com:indutny/elliptic\"\n  },\n  \"keywords\": [\n    \"EC\",\n    \"Elliptic\",\n    \"curve\",\n    \"Cryptography\"\n  ],\n  \"author\": \"Fedor Indutny <fedor@indutny.com>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/indutny/elliptic/issues\"\n  },\n  \"homepage\": \"https://github.com/indutny/elliptic\",\n  \"devDependencies\": {\n    \"brfs\": \"^2.0.2\",\n    \"coveralls\": \"^3.1.0\",\n    \"eslint\": \"^7.6.0\",\n    \"grunt\": \"^1.2.1\",\n    \"grunt-browserify\": \"^5.3.0\",\n    \"grunt-cli\": \"^1.3.2\",\n    \"grunt-contrib-connect\": \"^3.0.0\",\n    \"grunt-contrib-copy\": \"^1.0.0\",\n    \"grunt-contrib-uglify\": \"^5.0.0\",\n    \"grunt-mocha-istanbul\": \"^5.0.2\",\n    \"grunt-saucelabs\": \"^9.0.1\",\n    \"istanbul\": \"^0.4.5\",\n    \"mocha\": \"^8.0.1\"\n  },\n  \"dependencies\": {\n    \"bn.js\": \"^4.11.9\",\n    \"brorand\": \"^1.1.0\",\n    \"hash.js\": \"^1.0.0\",\n    \"hmac-drbg\": \"^1.0.1\",\n    \"inherits\": \"^2.0.4\",\n    \"minimalistic-assert\": \"^1.0.1\",\n    \"minimalistic-crypto-utils\": \"^1.0.1\"\n  }\n};\nvar exports$W$2 = {};\nvar _dewExec$V$2 = false;\nvar module$3$2 = {\n  exports: exports$W$2\n};\nvar _global$6$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$V$2() {\n  if (_dewExec$V$2) return module$3$2.exports;\n  _dewExec$V$2 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$6$2).negative = 0;\n      (this || _global$6$2).words = null;\n      (this || _global$6$2).length = 0;\n      (this || _global$6$2).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = buffer.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$6$2).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$6$2).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$6$2).words = [number & 67108863];\n        (this || _global$6$2).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$6$2).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$6$2).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$6$2).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$6$2).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$6$2).words = [0];\n        (this || _global$6$2).length = 1;\n        return this || _global$6$2;\n      }\n      (this || _global$6$2).length = Math.ceil(number.length / 3);\n      (this || _global$6$2).words = new Array((this || _global$6$2).length);\n      for (var i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n        (this || _global$6$2).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$6$2).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$6$2).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$6$2).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$6$2).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$6$2).length = Math.ceil((number.length - start) / 6);\n      (this || _global$6$2).words = new Array((this || _global$6$2).length);\n      for (var i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n        (this || _global$6$2).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$6$2).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$6$2).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$6$2).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$6$2).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$6$2).words = [0];\n      (this || _global$6$2).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$6$2).words[0] + word < 67108864) {\n          (this || _global$6$2).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$6$2).words[0] + word < 67108864) {\n          (this || _global$6$2).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$6$2).length);\n      for (var i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n        dest.words[i5] = (this || _global$6$2).words[i5];\n      }\n      dest.length = (this || _global$6$2).length;\n      dest.negative = (this || _global$6$2).negative;\n      dest.red = (this || _global$6$2).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$6$2).length < size) {\n        (this || _global$6$2).words[(this || _global$6$2).length++] = 0;\n      }\n      return this || _global$6$2;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$6$2).length > 1 && (this || _global$6$2).words[(this || _global$6$2).length - 1] === 0) {\n        (this || _global$6$2).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$6$2).length === 1 && (this || _global$6$2).words[0] === 0) {\n        (this || _global$6$2).negative = 0;\n      }\n      return this || _global$6$2;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$6$2).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n          var w4 = (this || _global$6$2).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$6$2).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$6$2).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$6$2).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$6$2).words[0];\n      if ((this || _global$6$2).length === 2) {\n        ret += (this || _global$6$2).words[1] * 67108864;\n      } else if ((this || _global$6$2).length === 3 && (this || _global$6$2).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$6$2).words[1] * 67108864;\n      } else if ((this || _global$6$2).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$6$2).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$6$2).words[(this || _global$6$2).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$6$2).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n        var b4 = this._zeroBits((this || _global$6$2).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$6$2).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$6$2).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$6$2).negative ^= 1;\n      }\n      return this || _global$6$2;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$6$2).length < num.length) {\n        (this || _global$6$2).words[(this || _global$6$2).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$6$2).words[i5] = (this || _global$6$2).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$6$2).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$6$2).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$6$2);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$6$2).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$6$2);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$6$2).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$6$2;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$6$2).words[i5] = (this || _global$6$2).words[i5] & num.words[i5];\n      }\n      (this || _global$6$2).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$6$2).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$6$2).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$6$2);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$6$2).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$6$2);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$6$2).length > num.length) {\n        a5 = this || _global$6$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$6$2;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$6$2).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$6$2) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$6$2).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$6$2).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$6$2).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$6$2).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$6$2);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$6$2).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$6$2);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$6$2).words[i5] = ~(this || _global$6$2).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$6$2).words[i5] = ~(this || _global$6$2).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$6$2).words[off2] = (this || _global$6$2).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$6$2).words[off2] = (this || _global$6$2).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$6$2).negative !== 0 && num.negative === 0) {\n        (this || _global$6$2).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$6$2).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$6$2).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$6$2).length > num.length) {\n        a5 = this || _global$6$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$6$2;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$6$2).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$6$2).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$6$2).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$6$2).words[(this || _global$6$2).length] = carry;\n        (this || _global$6$2).length++;\n      } else if (a5 !== (this || _global$6$2)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$6$2).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$6$2;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$6$2).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$6$2).negative !== 0) {\n        (this || _global$6$2).negative = 0;\n        res = num.sub(this || _global$6$2);\n        (this || _global$6$2).negative = 1;\n        return res;\n      }\n      if ((this || _global$6$2).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$6$2);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$6$2).negative !== 0) {\n        (this || _global$6$2).negative = 0;\n        this.iadd(num);\n        (this || _global$6$2).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$6$2).negative = 0;\n        (this || _global$6$2).length = 1;\n        (this || _global$6$2).words[0] = 0;\n        return this || _global$6$2;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$6$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$6$2;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$6$2).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$6$2).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$6$2)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$6$2).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$6$2).length = Math.max((this || _global$6$2).length, i5);\n      if (a5 !== (this || _global$6$2)) {\n        (this || _global$6$2).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$6$2).length + num.length;\n      if ((this || _global$6$2).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$6$2, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$6$2, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$6$2, num, out);\n      } else {\n        res = jumboMulTo(this || _global$6$2, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$6$2).x = x4;\n      (this || _global$6$2).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$6$2).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$6$2).length + num.length);\n      return jumboMulTo(this || _global$6$2, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$6$2);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n        var w4 = ((this || _global$6$2).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$6$2).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$6$2).words[i5] = carry;\n        (this || _global$6$2).length++;\n      }\n      return this || _global$6$2;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$6$2);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$6$2;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n          var newCarry = (this || _global$6$2).words[i5] & carryMask;\n          var c5 = ((this || _global$6$2).words[i5] | 0) - newCarry << r5;\n          (this || _global$6$2).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$6$2).words[i5] = carry;\n          (this || _global$6$2).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$6$2).length - 1; i5 >= 0; i5--) {\n          (this || _global$6$2).words[i5 + s5] = (this || _global$6$2).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$6$2).words[i5] = 0;\n        }\n        (this || _global$6$2).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$6$2).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$6$2).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$6$2).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$6$2).length > s5) {\n        (this || _global$6$2).length -= s5;\n        for (i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n          (this || _global$6$2).words[i5] = (this || _global$6$2).words[i5 + s5];\n        }\n      } else {\n        (this || _global$6$2).words[0] = 0;\n        (this || _global$6$2).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$6$2).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$6$2).words[i5] | 0;\n        (this || _global$6$2).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$6$2).length === 0) {\n        (this || _global$6$2).words[0] = 0;\n        (this || _global$6$2).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$6$2).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$6$2).length <= s5) return false;\n      var w4 = (this || _global$6$2).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$6$2).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$6$2).length <= s5) {\n        return this || _global$6$2;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$6$2).length = Math.min(s5, (this || _global$6$2).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$6$2).words[(this || _global$6$2).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$6$2).negative !== 0) {\n        if ((this || _global$6$2).length === 1 && ((this || _global$6$2).words[0] | 0) < num) {\n          (this || _global$6$2).words[0] = num - ((this || _global$6$2).words[0] | 0);\n          (this || _global$6$2).negative = 0;\n          return this || _global$6$2;\n        }\n        (this || _global$6$2).negative = 0;\n        this.isubn(num);\n        (this || _global$6$2).negative = 1;\n        return this || _global$6$2;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$6$2).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$6$2).length && (this || _global$6$2).words[i5] >= 67108864; i5++) {\n        (this || _global$6$2).words[i5] -= 67108864;\n        if (i5 === (this || _global$6$2).length - 1) {\n          (this || _global$6$2).words[i5 + 1] = 1;\n        } else {\n          (this || _global$6$2).words[i5 + 1]++;\n        }\n      }\n      (this || _global$6$2).length = Math.max((this || _global$6$2).length, i5 + 1);\n      return this || _global$6$2;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$6$2).negative !== 0) {\n        (this || _global$6$2).negative = 0;\n        this.iaddn(num);\n        (this || _global$6$2).negative = 1;\n        return this || _global$6$2;\n      }\n      (this || _global$6$2).words[0] -= num;\n      if ((this || _global$6$2).length === 1 && (this || _global$6$2).words[0] < 0) {\n        (this || _global$6$2).words[0] = -(this || _global$6$2).words[0];\n        (this || _global$6$2).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$6$2).length && (this || _global$6$2).words[i5] < 0; i5++) {\n          (this || _global$6$2).words[i5] += 67108864;\n          (this || _global$6$2).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$6$2).negative = 0;\n      return this || _global$6$2;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$6$2).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$6$2).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$6$2).length - shift; i5++) {\n        w4 = ((this || _global$6$2).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$6$2).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$6$2).length; i5++) {\n        w4 = -((this || _global$6$2).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$6$2).words[i5] = w4 & 67108863;\n      }\n      (this || _global$6$2).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$6$2).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$6$2).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$6$2).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$6$2).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$6$2).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$6$2\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$6$2).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$6$2).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$6$2).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$6$2).words[i5] | 0) + carry * 67108864;\n        (this || _global$6$2).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$6$2;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$6$2;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$6$2).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$6$2).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$6$2).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$6$2).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$6$2).words[s5] |= q3;\n        return this || _global$6$2;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$6$2).length; i5++) {\n        var w4 = (this || _global$6$2).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$6$2).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$6$2).words[i5] = carry;\n        (this || _global$6$2).length++;\n      }\n      return this || _global$6$2;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$6$2).length === 1 && (this || _global$6$2).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$6$2).negative !== 0 && !negative) return -1;\n      if ((this || _global$6$2).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$6$2).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$6$2).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$6$2).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$6$2).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$6$2).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$6$2).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$6$2).length > num.length) return 1;\n      if ((this || _global$6$2).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$6$2).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$6$2).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$6$2).red, \"Already a number in reduction context\");\n      assert2((this || _global$6$2).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$6$2)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$6$2).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$6$2).red.convertFrom(this || _global$6$2);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$6$2).red = ctx;\n      return this || _global$6$2;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$6$2).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$6$2).red, \"redAdd works only with red numbers\");\n      return (this || _global$6$2).red.add(this || _global$6$2, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$6$2).red, \"redIAdd works only with red numbers\");\n      return (this || _global$6$2).red.iadd(this || _global$6$2, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$6$2).red, \"redSub works only with red numbers\");\n      return (this || _global$6$2).red.sub(this || _global$6$2, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$6$2).red, \"redISub works only with red numbers\");\n      return (this || _global$6$2).red.isub(this || _global$6$2, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$6$2).red, \"redShl works only with red numbers\");\n      return (this || _global$6$2).red.shl(this || _global$6$2, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$6$2).red, \"redMul works only with red numbers\");\n      (this || _global$6$2).red._verify2(this || _global$6$2, num);\n      return (this || _global$6$2).red.mul(this || _global$6$2, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$6$2).red, \"redMul works only with red numbers\");\n      (this || _global$6$2).red._verify2(this || _global$6$2, num);\n      return (this || _global$6$2).red.imul(this || _global$6$2, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$6$2).red, \"redSqr works only with red numbers\");\n      (this || _global$6$2).red._verify1(this || _global$6$2);\n      return (this || _global$6$2).red.sqr(this || _global$6$2);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$6$2).red, \"redISqr works only with red numbers\");\n      (this || _global$6$2).red._verify1(this || _global$6$2);\n      return (this || _global$6$2).red.isqr(this || _global$6$2);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$6$2).red, \"redSqrt works only with red numbers\");\n      (this || _global$6$2).red._verify1(this || _global$6$2);\n      return (this || _global$6$2).red.sqrt(this || _global$6$2);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$6$2).red, \"redInvm works only with red numbers\");\n      (this || _global$6$2).red._verify1(this || _global$6$2);\n      return (this || _global$6$2).red.invm(this || _global$6$2);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$6$2).red, \"redNeg works only with red numbers\");\n      (this || _global$6$2).red._verify1(this || _global$6$2);\n      return (this || _global$6$2).red.neg(this || _global$6$2);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$6$2).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$6$2).red._verify1(this || _global$6$2);\n      return (this || _global$6$2).red.pow(this || _global$6$2, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$6$2).name = name2;\n      (this || _global$6$2).p = new BN(p5, 16);\n      (this || _global$6$2).n = (this || _global$6$2).p.bitLength();\n      (this || _global$6$2).k = new BN(1).iushln((this || _global$6$2).n).isub((this || _global$6$2).p);\n      (this || _global$6$2).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$6$2).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$6$2).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$6$2).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$6$2).n);\n      var cmp = rlen < (this || _global$6$2).n ? -1 : r5.ucmp((this || _global$6$2).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$6$2).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$6$2).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$6$2).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$6$2, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$6$2, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$6$2, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$6$2, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$6$2).m = prime.p;\n        (this || _global$6$2).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$6$2).m = m4;\n        (this || _global$6$2).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$6$2).prime) return (this || _global$6$2).prime.ireduce(a5)._forceRed(this || _global$6$2);\n      return a5.umod((this || _global$6$2).m)._forceRed(this || _global$6$2);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$6$2).m.sub(a5)._forceRed(this || _global$6$2);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$6$2).m) >= 0) {\n        res.isub((this || _global$6$2).m);\n      }\n      return res._forceRed(this || _global$6$2);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$6$2).m) >= 0) {\n        res.isub((this || _global$6$2).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$6$2).m);\n      }\n      return res._forceRed(this || _global$6$2);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$6$2).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$6$2).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$6$2).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$6$2).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$6$2);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$6$2).m.subn(1).iushrn(1);\n      var z4 = (this || _global$6$2).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$6$2);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$6$2).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$6$2);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$6$2);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$6$2).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$6$2, m4);\n      (this || _global$6$2).shift = (this || _global$6$2).m.bitLength();\n      if ((this || _global$6$2).shift % 26 !== 0) {\n        (this || _global$6$2).shift += 26 - (this || _global$6$2).shift % 26;\n      }\n      (this || _global$6$2).r = new BN(1).iushln((this || _global$6$2).shift);\n      (this || _global$6$2).r2 = this.imod((this || _global$6$2).r.sqr());\n      (this || _global$6$2).rinv = (this || _global$6$2).r._invmp((this || _global$6$2).m);\n      (this || _global$6$2).minv = (this || _global$6$2).rinv.mul((this || _global$6$2).r).isubn(1).div((this || _global$6$2).m);\n      (this || _global$6$2).minv = (this || _global$6$2).minv.umod((this || _global$6$2).r);\n      (this || _global$6$2).minv = (this || _global$6$2).r.sub((this || _global$6$2).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$6$2).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$6$2).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$6$2).shift).mul((this || _global$6$2).minv).imaskn((this || _global$6$2).shift).mul((this || _global$6$2).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$6$2).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$6$2).m) >= 0) {\n        res = u5.isub((this || _global$6$2).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$6$2).m);\n      }\n      return res._forceRed(this || _global$6$2);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$6$2);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$6$2).shift).mul((this || _global$6$2).minv).imaskn((this || _global$6$2).shift).mul((this || _global$6$2).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$6$2).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$6$2).m) >= 0) {\n        res = u5.isub((this || _global$6$2).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$6$2).m);\n      }\n      return res._forceRed(this || _global$6$2);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$6$2).m).mul((this || _global$6$2).r2));\n      return res._forceRed(this || _global$6$2);\n    };\n  })(module$3$2, exports$W$2);\n  return module$3$2.exports;\n}\nvar exports$V$2 = {};\nvar _dewExec$U$2 = false;\nfunction dew$U$2() {\n  if (_dewExec$U$2) return exports$V$2;\n  _dewExec$U$2 = true;\n  var utils = exports$V$2;\n  function toArray(msg, enc) {\n    if (Array.isArray(msg)) return msg.slice();\n    if (!msg) return [];\n    var res = [];\n    if (typeof msg !== \"string\") {\n      for (var i5 = 0; i5 < msg.length; i5++) res[i5] = msg[i5] | 0;\n      return res;\n    }\n    if (enc === \"hex\") {\n      msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n      if (msg.length % 2 !== 0) msg = \"0\" + msg;\n      for (var i5 = 0; i5 < msg.length; i5 += 2) res.push(parseInt(msg[i5] + msg[i5 + 1], 16));\n    } else {\n      for (var i5 = 0; i5 < msg.length; i5++) {\n        var c5 = msg.charCodeAt(i5);\n        var hi = c5 >> 8;\n        var lo = c5 & 255;\n        if (hi) res.push(hi, lo);\n        else res.push(lo);\n      }\n    }\n    return res;\n  }\n  utils.toArray = toArray;\n  function zero2(word) {\n    if (word.length === 1) return \"0\" + word;\n    else return word;\n  }\n  utils.zero2 = zero2;\n  function toHex(msg) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) res += zero2(msg[i5].toString(16));\n    return res;\n  }\n  utils.toHex = toHex;\n  utils.encode = function encode(arr, enc) {\n    if (enc === \"hex\") return toHex(arr);\n    else return arr;\n  };\n  return exports$V$2;\n}\nvar exports$U$2 = {};\nvar _dewExec$T$2 = false;\nfunction dew$T$2() {\n  if (_dewExec$T$2) return exports$U$2;\n  _dewExec$T$2 = true;\n  var utils = exports$U$2;\n  var BN = dew$V$2();\n  var minAssert = dew$2m();\n  var minUtils = dew$U$2();\n  utils.assert = minAssert;\n  utils.toArray = minUtils.toArray;\n  utils.zero2 = minUtils.zero2;\n  utils.toHex = minUtils.toHex;\n  utils.encode = minUtils.encode;\n  function getNAF(num, w4, bits) {\n    var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n    naf.fill(0);\n    var ws = 1 << w4 + 1;\n    var k4 = num.clone();\n    for (var i5 = 0; i5 < naf.length; i5++) {\n      var z4;\n      var mod = k4.andln(ws - 1);\n      if (k4.isOdd()) {\n        if (mod > (ws >> 1) - 1) z4 = (ws >> 1) - mod;\n        else z4 = mod;\n        k4.isubn(z4);\n      } else {\n        z4 = 0;\n      }\n      naf[i5] = z4;\n      k4.iushrn(1);\n    }\n    return naf;\n  }\n  utils.getNAF = getNAF;\n  function getJSF(k1, k22) {\n    var jsf = [[], []];\n    k1 = k1.clone();\n    k22 = k22.clone();\n    var d1 = 0;\n    var d22 = 0;\n    var m8;\n    while (k1.cmpn(-d1) > 0 || k22.cmpn(-d22) > 0) {\n      var m14 = k1.andln(3) + d1 & 3;\n      var m24 = k22.andln(3) + d22 & 3;\n      if (m14 === 3) m14 = -1;\n      if (m24 === 3) m24 = -1;\n      var u1;\n      if ((m14 & 1) === 0) {\n        u1 = 0;\n      } else {\n        m8 = k1.andln(7) + d1 & 7;\n        if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;\n        else u1 = m14;\n      }\n      jsf[0].push(u1);\n      var u22;\n      if ((m24 & 1) === 0) {\n        u22 = 0;\n      } else {\n        m8 = k22.andln(7) + d22 & 7;\n        if ((m8 === 3 || m8 === 5) && m14 === 2) u22 = -m24;\n        else u22 = m24;\n      }\n      jsf[1].push(u22);\n      if (2 * d1 === u1 + 1) d1 = 1 - d1;\n      if (2 * d22 === u22 + 1) d22 = 1 - d22;\n      k1.iushrn(1);\n      k22.iushrn(1);\n    }\n    return jsf;\n  }\n  utils.getJSF = getJSF;\n  function cachedProperty(obj, name2, computer) {\n    var key = \"_\" + name2;\n    obj.prototype[name2] = function cachedProperty2() {\n      return this[key] !== void 0 ? this[key] : this[key] = computer.call(this);\n    };\n  }\n  utils.cachedProperty = cachedProperty;\n  function parseBytes(bytes) {\n    return typeof bytes === \"string\" ? utils.toArray(bytes, \"hex\") : bytes;\n  }\n  utils.parseBytes = parseBytes;\n  function intFromLE(bytes) {\n    return new BN(bytes, \"hex\", \"le\");\n  }\n  utils.intFromLE = intFromLE;\n  return exports$U$2;\n}\nvar exports$T$2 = {};\nvar _dewExec$S$2 = false;\nfunction dew$S$2() {\n  if (_dewExec$S$2) return exports$T$2;\n  _dewExec$S$2 = true;\n  var BN = dew$V$2();\n  var utils = dew$T$2();\n  var getNAF = utils.getNAF;\n  var getJSF = utils.getJSF;\n  var assert2 = utils.assert;\n  function BaseCurve(type, conf) {\n    this.type = type;\n    this.p = new BN(conf.p, 16);\n    this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n    this.zero = new BN(0).toRed(this.red);\n    this.one = new BN(1).toRed(this.red);\n    this.two = new BN(2).toRed(this.red);\n    this.n = conf.n && new BN(conf.n, 16);\n    this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n    this._wnafT1 = new Array(4);\n    this._wnafT2 = new Array(4);\n    this._wnafT3 = new Array(4);\n    this._wnafT4 = new Array(4);\n    this._bitLength = this.n ? this.n.bitLength() : 0;\n    var adjustCount = this.n && this.p.div(this.n);\n    if (!adjustCount || adjustCount.cmpn(100) > 0) {\n      this.redN = null;\n    } else {\n      this._maxwellTrick = true;\n      this.redN = this.n.toRed(this.red);\n    }\n  }\n  exports$T$2 = BaseCurve;\n  BaseCurve.prototype.point = function point() {\n    throw new Error(\"Not implemented\");\n  };\n  BaseCurve.prototype.validate = function validate() {\n    throw new Error(\"Not implemented\");\n  };\n  BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p5, k4) {\n    assert2(p5.precomputed);\n    var doubles = p5._getDoubles();\n    var naf = getNAF(k4, 1, this._bitLength);\n    var I4 = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n    I4 /= 3;\n    var repr = [];\n    var j4;\n    var nafW;\n    for (j4 = 0; j4 < naf.length; j4 += doubles.step) {\n      nafW = 0;\n      for (var l5 = j4 + doubles.step - 1; l5 >= j4; l5--) nafW = (nafW << 1) + naf[l5];\n      repr.push(nafW);\n    }\n    var a5 = this.jpoint(null, null, null);\n    var b4 = this.jpoint(null, null, null);\n    for (var i5 = I4; i5 > 0; i5--) {\n      for (j4 = 0; j4 < repr.length; j4++) {\n        nafW = repr[j4];\n        if (nafW === i5) b4 = b4.mixedAdd(doubles.points[j4]);\n        else if (nafW === -i5) b4 = b4.mixedAdd(doubles.points[j4].neg());\n      }\n      a5 = a5.add(b4);\n    }\n    return a5.toP();\n  };\n  BaseCurve.prototype._wnafMul = function _wnafMul(p5, k4) {\n    var w4 = 4;\n    var nafPoints = p5._getNAFPoints(w4);\n    w4 = nafPoints.wnd;\n    var wnd = nafPoints.points;\n    var naf = getNAF(k4, w4, this._bitLength);\n    var acc = this.jpoint(null, null, null);\n    for (var i5 = naf.length - 1; i5 >= 0; i5--) {\n      for (var l5 = 0; i5 >= 0 && naf[i5] === 0; i5--) l5++;\n      if (i5 >= 0) l5++;\n      acc = acc.dblp(l5);\n      if (i5 < 0) break;\n      var z4 = naf[i5];\n      assert2(z4 !== 0);\n      if (p5.type === \"affine\") {\n        if (z4 > 0) acc = acc.mixedAdd(wnd[z4 - 1 >> 1]);\n        else acc = acc.mixedAdd(wnd[-z4 - 1 >> 1].neg());\n      } else {\n        if (z4 > 0) acc = acc.add(wnd[z4 - 1 >> 1]);\n        else acc = acc.add(wnd[-z4 - 1 >> 1].neg());\n      }\n    }\n    return p5.type === \"affine\" ? acc.toP() : acc;\n  };\n  BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n    var wndWidth = this._wnafT1;\n    var wnd = this._wnafT2;\n    var naf = this._wnafT3;\n    var max = 0;\n    var i5;\n    var j4;\n    var p5;\n    for (i5 = 0; i5 < len; i5++) {\n      p5 = points[i5];\n      var nafPoints = p5._getNAFPoints(defW);\n      wndWidth[i5] = nafPoints.wnd;\n      wnd[i5] = nafPoints.points;\n    }\n    for (i5 = len - 1; i5 >= 1; i5 -= 2) {\n      var a5 = i5 - 1;\n      var b4 = i5;\n      if (wndWidth[a5] !== 1 || wndWidth[b4] !== 1) {\n        naf[a5] = getNAF(coeffs[a5], wndWidth[a5], this._bitLength);\n        naf[b4] = getNAF(coeffs[b4], wndWidth[b4], this._bitLength);\n        max = Math.max(naf[a5].length, max);\n        max = Math.max(naf[b4].length, max);\n        continue;\n      }\n      var comb = [\n        points[a5],\n        /* 1 */\n        null,\n        /* 3 */\n        null,\n        /* 5 */\n        points[b4]\n        /* 7 */\n      ];\n      if (points[a5].y.cmp(points[b4].y) === 0) {\n        comb[1] = points[a5].add(points[b4]);\n        comb[2] = points[a5].toJ().mixedAdd(points[b4].neg());\n      } else if (points[a5].y.cmp(points[b4].y.redNeg()) === 0) {\n        comb[1] = points[a5].toJ().mixedAdd(points[b4]);\n        comb[2] = points[a5].add(points[b4].neg());\n      } else {\n        comb[1] = points[a5].toJ().mixedAdd(points[b4]);\n        comb[2] = points[a5].toJ().mixedAdd(points[b4].neg());\n      }\n      var index = [\n        -3,\n        /* -1 -1 */\n        -1,\n        /* -1 0 */\n        -5,\n        /* -1 1 */\n        -7,\n        /* 0 -1 */\n        0,\n        /* 0 0 */\n        7,\n        /* 0 1 */\n        5,\n        /* 1 -1 */\n        1,\n        /* 1 0 */\n        3\n        /* 1 1 */\n      ];\n      var jsf = getJSF(coeffs[a5], coeffs[b4]);\n      max = Math.max(jsf[0].length, max);\n      naf[a5] = new Array(max);\n      naf[b4] = new Array(max);\n      for (j4 = 0; j4 < max; j4++) {\n        var ja = jsf[0][j4] | 0;\n        var jb = jsf[1][j4] | 0;\n        naf[a5][j4] = index[(ja + 1) * 3 + (jb + 1)];\n        naf[b4][j4] = 0;\n        wnd[a5] = comb;\n      }\n    }\n    var acc = this.jpoint(null, null, null);\n    var tmp = this._wnafT4;\n    for (i5 = max; i5 >= 0; i5--) {\n      var k4 = 0;\n      while (i5 >= 0) {\n        var zero = true;\n        for (j4 = 0; j4 < len; j4++) {\n          tmp[j4] = naf[j4][i5] | 0;\n          if (tmp[j4] !== 0) zero = false;\n        }\n        if (!zero) break;\n        k4++;\n        i5--;\n      }\n      if (i5 >= 0) k4++;\n      acc = acc.dblp(k4);\n      if (i5 < 0) break;\n      for (j4 = 0; j4 < len; j4++) {\n        var z4 = tmp[j4];\n        if (z4 === 0) continue;\n        else if (z4 > 0) p5 = wnd[j4][z4 - 1 >> 1];\n        else if (z4 < 0) p5 = wnd[j4][-z4 - 1 >> 1].neg();\n        if (p5.type === \"affine\") acc = acc.mixedAdd(p5);\n        else acc = acc.add(p5);\n      }\n    }\n    for (i5 = 0; i5 < len; i5++) wnd[i5] = null;\n    if (jacobianResult) return acc;\n    else return acc.toP();\n  };\n  function BasePoint(curve, type) {\n    this.curve = curve;\n    this.type = type;\n    this.precomputed = null;\n  }\n  BaseCurve.BasePoint = BasePoint;\n  BasePoint.prototype.eq = function eq() {\n    throw new Error(\"Not implemented\");\n  };\n  BasePoint.prototype.validate = function validate() {\n    return this.curve.validate(this);\n  };\n  BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n    bytes = utils.toArray(bytes, enc);\n    var len = this.p.byteLength();\n    if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) {\n      if (bytes[0] === 6) assert2(bytes[bytes.length - 1] % 2 === 0);\n      else if (bytes[0] === 7) assert2(bytes[bytes.length - 1] % 2 === 1);\n      var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n      return res;\n    } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) {\n      return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3);\n    }\n    throw new Error(\"Unknown point format\");\n  };\n  BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n    return this.encode(enc, true);\n  };\n  BasePoint.prototype._encode = function _encode(compact) {\n    var len = this.curve.p.byteLength();\n    var x4 = this.getX().toArray(\"be\", len);\n    if (compact) return [this.getY().isEven() ? 2 : 3].concat(x4);\n    return [4].concat(x4, this.getY().toArray(\"be\", len));\n  };\n  BasePoint.prototype.encode = function encode(enc, compact) {\n    return utils.encode(this._encode(compact), enc);\n  };\n  BasePoint.prototype.precompute = function precompute(power) {\n    if (this.precomputed) return this;\n    var precomputed = {\n      doubles: null,\n      naf: null,\n      beta: null\n    };\n    precomputed.naf = this._getNAFPoints(8);\n    precomputed.doubles = this._getDoubles(4, power);\n    precomputed.beta = this._getBeta();\n    this.precomputed = precomputed;\n    return this;\n  };\n  BasePoint.prototype._hasDoubles = function _hasDoubles(k4) {\n    if (!this.precomputed) return false;\n    var doubles = this.precomputed.doubles;\n    if (!doubles) return false;\n    return doubles.points.length >= Math.ceil((k4.bitLength() + 1) / doubles.step);\n  };\n  BasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n    if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n    var doubles = [this];\n    var acc = this;\n    for (var i5 = 0; i5 < power; i5 += step) {\n      for (var j4 = 0; j4 < step; j4++) acc = acc.dbl();\n      doubles.push(acc);\n    }\n    return {\n      step,\n      points: doubles\n    };\n  };\n  BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n    if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n    var res = [this];\n    var max = (1 << wnd) - 1;\n    var dbl = max === 1 ? null : this.dbl();\n    for (var i5 = 1; i5 < max; i5++) res[i5] = res[i5 - 1].add(dbl);\n    return {\n      wnd,\n      points: res\n    };\n  };\n  BasePoint.prototype._getBeta = function _getBeta() {\n    return null;\n  };\n  BasePoint.prototype.dblp = function dblp(k4) {\n    var r5 = this;\n    for (var i5 = 0; i5 < k4; i5++) r5 = r5.dbl();\n    return r5;\n  };\n  return exports$T$2;\n}\nvar exports$S$2 = {};\nvar _dewExec$R$2 = false;\nfunction dew$R$2() {\n  if (_dewExec$R$2) return exports$S$2;\n  _dewExec$R$2 = true;\n  var utils = dew$T$2();\n  var BN = dew$V$2();\n  var inherits = dew$f();\n  var Base = dew$S$2();\n  var assert2 = utils.assert;\n  function ShortCurve(conf) {\n    Base.call(this, \"short\", conf);\n    this.a = new BN(conf.a, 16).toRed(this.red);\n    this.b = new BN(conf.b, 16).toRed(this.red);\n    this.tinv = this.two.redInvm();\n    this.zeroA = this.a.fromRed().cmpn(0) === 0;\n    this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n    this.endo = this._getEndomorphism(conf);\n    this._endoWnafT1 = new Array(4);\n    this._endoWnafT2 = new Array(4);\n  }\n  inherits(ShortCurve, Base);\n  exports$S$2 = ShortCurve;\n  ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n    if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return;\n    var beta;\n    var lambda;\n    if (conf.beta) {\n      beta = new BN(conf.beta, 16).toRed(this.red);\n    } else {\n      var betas = this._getEndoRoots(this.p);\n      beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n      beta = beta.toRed(this.red);\n    }\n    if (conf.lambda) {\n      lambda = new BN(conf.lambda, 16);\n    } else {\n      var lambdas = this._getEndoRoots(this.n);\n      if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n        lambda = lambdas[0];\n      } else {\n        lambda = lambdas[1];\n        assert2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n      }\n    }\n    var basis;\n    if (conf.basis) {\n      basis = conf.basis.map(function(vec) {\n        return {\n          a: new BN(vec.a, 16),\n          b: new BN(vec.b, 16)\n        };\n      });\n    } else {\n      basis = this._getEndoBasis(lambda);\n    }\n    return {\n      beta,\n      lambda,\n      basis\n    };\n  };\n  ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n    var red = num === this.p ? this.red : BN.mont(num);\n    var tinv = new BN(2).toRed(red).redInvm();\n    var ntinv = tinv.redNeg();\n    var s5 = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n    var l1 = ntinv.redAdd(s5).fromRed();\n    var l22 = ntinv.redSub(s5).fromRed();\n    return [l1, l22];\n  };\n  ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n    var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n    var u5 = lambda;\n    var v5 = this.n.clone();\n    var x1 = new BN(1);\n    var y1 = new BN(0);\n    var x22 = new BN(0);\n    var y22 = new BN(1);\n    var a0;\n    var b0;\n    var a1;\n    var b1;\n    var a22;\n    var b22;\n    var prevR;\n    var i5 = 0;\n    var r5;\n    var x4;\n    while (u5.cmpn(0) !== 0) {\n      var q3 = v5.div(u5);\n      r5 = v5.sub(q3.mul(u5));\n      x4 = x22.sub(q3.mul(x1));\n      var y5 = y22.sub(q3.mul(y1));\n      if (!a1 && r5.cmp(aprxSqrt) < 0) {\n        a0 = prevR.neg();\n        b0 = x1;\n        a1 = r5.neg();\n        b1 = x4;\n      } else if (a1 && ++i5 === 2) {\n        break;\n      }\n      prevR = r5;\n      v5 = u5;\n      u5 = r5;\n      x22 = x1;\n      x1 = x4;\n      y22 = y1;\n      y1 = y5;\n    }\n    a22 = r5.neg();\n    b22 = x4;\n    var len1 = a1.sqr().add(b1.sqr());\n    var len2 = a22.sqr().add(b22.sqr());\n    if (len2.cmp(len1) >= 0) {\n      a22 = a0;\n      b22 = b0;\n    }\n    if (a1.negative) {\n      a1 = a1.neg();\n      b1 = b1.neg();\n    }\n    if (a22.negative) {\n      a22 = a22.neg();\n      b22 = b22.neg();\n    }\n    return [{\n      a: a1,\n      b: b1\n    }, {\n      a: a22,\n      b: b22\n    }];\n  };\n  ShortCurve.prototype._endoSplit = function _endoSplit(k4) {\n    var basis = this.endo.basis;\n    var v1 = basis[0];\n    var v22 = basis[1];\n    var c1 = v22.b.mul(k4).divRound(this.n);\n    var c22 = v1.b.neg().mul(k4).divRound(this.n);\n    var p1 = c1.mul(v1.a);\n    var p22 = c22.mul(v22.a);\n    var q1 = c1.mul(v1.b);\n    var q22 = c22.mul(v22.b);\n    var k1 = k4.sub(p1).sub(p22);\n    var k22 = q1.add(q22).neg();\n    return {\n      k1,\n      k2: k22\n    };\n  };\n  ShortCurve.prototype.pointFromX = function pointFromX(x4, odd) {\n    x4 = new BN(x4, 16);\n    if (!x4.red) x4 = x4.toRed(this.red);\n    var y22 = x4.redSqr().redMul(x4).redIAdd(x4.redMul(this.a)).redIAdd(this.b);\n    var y5 = y22.redSqrt();\n    if (y5.redSqr().redSub(y22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    var isOdd = y5.fromRed().isOdd();\n    if (odd && !isOdd || !odd && isOdd) y5 = y5.redNeg();\n    return this.point(x4, y5);\n  };\n  ShortCurve.prototype.validate = function validate(point) {\n    if (point.inf) return true;\n    var x4 = point.x;\n    var y5 = point.y;\n    var ax = this.a.redMul(x4);\n    var rhs = x4.redSqr().redMul(x4).redIAdd(ax).redIAdd(this.b);\n    return y5.redSqr().redISub(rhs).cmpn(0) === 0;\n  };\n  ShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n    var npoints = this._endoWnafT1;\n    var ncoeffs = this._endoWnafT2;\n    for (var i5 = 0; i5 < points.length; i5++) {\n      var split = this._endoSplit(coeffs[i5]);\n      var p5 = points[i5];\n      var beta = p5._getBeta();\n      if (split.k1.negative) {\n        split.k1.ineg();\n        p5 = p5.neg(true);\n      }\n      if (split.k2.negative) {\n        split.k2.ineg();\n        beta = beta.neg(true);\n      }\n      npoints[i5 * 2] = p5;\n      npoints[i5 * 2 + 1] = beta;\n      ncoeffs[i5 * 2] = split.k1;\n      ncoeffs[i5 * 2 + 1] = split.k2;\n    }\n    var res = this._wnafMulAdd(1, npoints, ncoeffs, i5 * 2, jacobianResult);\n    for (var j4 = 0; j4 < i5 * 2; j4++) {\n      npoints[j4] = null;\n      ncoeffs[j4] = null;\n    }\n    return res;\n  };\n  function Point(curve, x4, y5, isRed) {\n    Base.BasePoint.call(this, curve, \"affine\");\n    if (x4 === null && y5 === null) {\n      this.x = null;\n      this.y = null;\n      this.inf = true;\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      if (isRed) {\n        this.x.forceRed(this.curve.red);\n        this.y.forceRed(this.curve.red);\n      }\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n      this.inf = false;\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  ShortCurve.prototype.point = function point(x4, y5, isRed) {\n    return new Point(this, x4, y5, isRed);\n  };\n  ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n    return Point.fromJSON(this, obj, red);\n  };\n  Point.prototype._getBeta = function _getBeta() {\n    if (!this.curve.endo) return;\n    var pre = this.precomputed;\n    if (pre && pre.beta) return pre.beta;\n    var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n    if (pre) {\n      var curve = this.curve;\n      var endoMul = function(p5) {\n        return curve.point(p5.x.redMul(curve.endo.beta), p5.y);\n      };\n      pre.beta = beta;\n      beta.precomputed = {\n        beta: null,\n        naf: pre.naf && {\n          wnd: pre.naf.wnd,\n          points: pre.naf.points.map(endoMul)\n        },\n        doubles: pre.doubles && {\n          step: pre.doubles.step,\n          points: pre.doubles.points.map(endoMul)\n        }\n      };\n    }\n    return beta;\n  };\n  Point.prototype.toJSON = function toJSON() {\n    if (!this.precomputed) return [this.x, this.y];\n    return [this.x, this.y, this.precomputed && {\n      doubles: this.precomputed.doubles && {\n        step: this.precomputed.doubles.step,\n        points: this.precomputed.doubles.points.slice(1)\n      },\n      naf: this.precomputed.naf && {\n        wnd: this.precomputed.naf.wnd,\n        points: this.precomputed.naf.points.slice(1)\n      }\n    }];\n  };\n  Point.fromJSON = function fromJSON(curve, obj, red) {\n    if (typeof obj === \"string\") obj = JSON.parse(obj);\n    var res = curve.point(obj[0], obj[1], red);\n    if (!obj[2]) return res;\n    function obj2point(obj2) {\n      return curve.point(obj2[0], obj2[1], red);\n    }\n    var pre = obj[2];\n    res.precomputed = {\n      beta: null,\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: [res].concat(pre.doubles.points.map(obj2point))\n      },\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: [res].concat(pre.naf.points.map(obj2point))\n      }\n    };\n    return res;\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.inf;\n  };\n  Point.prototype.add = function add(p5) {\n    if (this.inf) return p5;\n    if (p5.inf) return this;\n    if (this.eq(p5)) return this.dbl();\n    if (this.neg().eq(p5)) return this.curve.point(null, null);\n    if (this.x.cmp(p5.x) === 0) return this.curve.point(null, null);\n    var c5 = this.y.redSub(p5.y);\n    if (c5.cmpn(0) !== 0) c5 = c5.redMul(this.x.redSub(p5.x).redInvm());\n    var nx = c5.redSqr().redISub(this.x).redISub(p5.x);\n    var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n    return this.curve.point(nx, ny);\n  };\n  Point.prototype.dbl = function dbl() {\n    if (this.inf) return this;\n    var ys1 = this.y.redAdd(this.y);\n    if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n    var a5 = this.curve.a;\n    var x22 = this.x.redSqr();\n    var dyinv = ys1.redInvm();\n    var c5 = x22.redAdd(x22).redIAdd(x22).redIAdd(a5).redMul(dyinv);\n    var nx = c5.redSqr().redISub(this.x.redAdd(this.x));\n    var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n    return this.curve.point(nx, ny);\n  };\n  Point.prototype.getX = function getX() {\n    return this.x.fromRed();\n  };\n  Point.prototype.getY = function getY() {\n    return this.y.fromRed();\n  };\n  Point.prototype.mul = function mul(k4) {\n    k4 = new BN(k4, 16);\n    if (this.isInfinity()) return this;\n    else if (this._hasDoubles(k4)) return this.curve._fixedNafMul(this, k4);\n    else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k4]);\n    else return this.curve._wnafMul(this, k4);\n  };\n  Point.prototype.mulAdd = function mulAdd(k1, p22, k22) {\n    var points = [this, p22];\n    var coeffs = [k1, k22];\n    if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);\n    else return this.curve._wnafMulAdd(1, points, coeffs, 2);\n  };\n  Point.prototype.jmulAdd = function jmulAdd(k1, p22, k22) {\n    var points = [this, p22];\n    var coeffs = [k1, k22];\n    if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);\n    else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n  };\n  Point.prototype.eq = function eq(p5) {\n    return this === p5 || this.inf === p5.inf && (this.inf || this.x.cmp(p5.x) === 0 && this.y.cmp(p5.y) === 0);\n  };\n  Point.prototype.neg = function neg(_precompute) {\n    if (this.inf) return this;\n    var res = this.curve.point(this.x, this.y.redNeg());\n    if (_precompute && this.precomputed) {\n      var pre = this.precomputed;\n      var negate = function(p5) {\n        return p5.neg();\n      };\n      res.precomputed = {\n        naf: pre.naf && {\n          wnd: pre.naf.wnd,\n          points: pre.naf.points.map(negate)\n        },\n        doubles: pre.doubles && {\n          step: pre.doubles.step,\n          points: pre.doubles.points.map(negate)\n        }\n      };\n    }\n    return res;\n  };\n  Point.prototype.toJ = function toJ() {\n    if (this.inf) return this.curve.jpoint(null, null, null);\n    var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n    return res;\n  };\n  function JPoint(curve, x4, y5, z4) {\n    Base.BasePoint.call(this, curve, \"jacobian\");\n    if (x4 === null && y5 === null && z4 === null) {\n      this.x = this.curve.one;\n      this.y = this.curve.one;\n      this.z = new BN(0);\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      this.z = new BN(z4, 16);\n    }\n    if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n    if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n    this.zOne = this.z === this.curve.one;\n  }\n  inherits(JPoint, Base.BasePoint);\n  ShortCurve.prototype.jpoint = function jpoint(x4, y5, z4) {\n    return new JPoint(this, x4, y5, z4);\n  };\n  JPoint.prototype.toP = function toP() {\n    if (this.isInfinity()) return this.curve.point(null, null);\n    var zinv = this.z.redInvm();\n    var zinv2 = zinv.redSqr();\n    var ax = this.x.redMul(zinv2);\n    var ay = this.y.redMul(zinv2).redMul(zinv);\n    return this.curve.point(ax, ay);\n  };\n  JPoint.prototype.neg = function neg() {\n    return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n  };\n  JPoint.prototype.add = function add(p5) {\n    if (this.isInfinity()) return p5;\n    if (p5.isInfinity()) return this;\n    var pz2 = p5.z.redSqr();\n    var z22 = this.z.redSqr();\n    var u1 = this.x.redMul(pz2);\n    var u22 = p5.x.redMul(z22);\n    var s1 = this.y.redMul(pz2.redMul(p5.z));\n    var s22 = p5.y.redMul(z22.redMul(this.z));\n    var h5 = u1.redSub(u22);\n    var r5 = s1.redSub(s22);\n    if (h5.cmpn(0) === 0) {\n      if (r5.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);\n      else return this.dbl();\n    }\n    var h22 = h5.redSqr();\n    var h32 = h22.redMul(h5);\n    var v5 = u1.redMul(h22);\n    var nx = r5.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n    var ny = r5.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n    var nz = this.z.redMul(p5.z).redMul(h5);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.mixedAdd = function mixedAdd(p5) {\n    if (this.isInfinity()) return p5.toJ();\n    if (p5.isInfinity()) return this;\n    var z22 = this.z.redSqr();\n    var u1 = this.x;\n    var u22 = p5.x.redMul(z22);\n    var s1 = this.y;\n    var s22 = p5.y.redMul(z22).redMul(this.z);\n    var h5 = u1.redSub(u22);\n    var r5 = s1.redSub(s22);\n    if (h5.cmpn(0) === 0) {\n      if (r5.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);\n      else return this.dbl();\n    }\n    var h22 = h5.redSqr();\n    var h32 = h22.redMul(h5);\n    var v5 = u1.redMul(h22);\n    var nx = r5.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n    var ny = r5.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n    var nz = this.z.redMul(h5);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.dblp = function dblp(pow) {\n    if (pow === 0) return this;\n    if (this.isInfinity()) return this;\n    if (!pow) return this.dbl();\n    var i5;\n    if (this.curve.zeroA || this.curve.threeA) {\n      var r5 = this;\n      for (i5 = 0; i5 < pow; i5++) r5 = r5.dbl();\n      return r5;\n    }\n    var a5 = this.curve.a;\n    var tinv = this.curve.tinv;\n    var jx = this.x;\n    var jy = this.y;\n    var jz = this.z;\n    var jz4 = jz.redSqr().redSqr();\n    var jyd = jy.redAdd(jy);\n    for (i5 = 0; i5 < pow; i5++) {\n      var jx2 = jx.redSqr();\n      var jyd2 = jyd.redSqr();\n      var jyd4 = jyd2.redSqr();\n      var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a5.redMul(jz4));\n      var t1 = jx.redMul(jyd2);\n      var nx = c5.redSqr().redISub(t1.redAdd(t1));\n      var t22 = t1.redISub(nx);\n      var dny = c5.redMul(t22);\n      dny = dny.redIAdd(dny).redISub(jyd4);\n      var nz = jyd.redMul(jz);\n      if (i5 + 1 < pow) jz4 = jz4.redMul(jyd4);\n      jx = nx;\n      jz = nz;\n      jyd = dny;\n    }\n    return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n  };\n  JPoint.prototype.dbl = function dbl() {\n    if (this.isInfinity()) return this;\n    if (this.curve.zeroA) return this._zeroDbl();\n    else if (this.curve.threeA) return this._threeDbl();\n    else return this._dbl();\n  };\n  JPoint.prototype._zeroDbl = function _zeroDbl() {\n    var nx;\n    var ny;\n    var nz;\n    if (this.zOne) {\n      var xx = this.x.redSqr();\n      var yy = this.y.redSqr();\n      var yyyy = yy.redSqr();\n      var s5 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n      s5 = s5.redIAdd(s5);\n      var m4 = xx.redAdd(xx).redIAdd(xx);\n      var t5 = m4.redSqr().redISub(s5).redISub(s5);\n      var yyyy8 = yyyy.redIAdd(yyyy);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      nx = t5;\n      ny = m4.redMul(s5.redISub(t5)).redISub(yyyy8);\n      nz = this.y.redAdd(this.y);\n    } else {\n      var a5 = this.x.redSqr();\n      var b4 = this.y.redSqr();\n      var c5 = b4.redSqr();\n      var d4 = this.x.redAdd(b4).redSqr().redISub(a5).redISub(c5);\n      d4 = d4.redIAdd(d4);\n      var e7 = a5.redAdd(a5).redIAdd(a5);\n      var f6 = e7.redSqr();\n      var c8 = c5.redIAdd(c5);\n      c8 = c8.redIAdd(c8);\n      c8 = c8.redIAdd(c8);\n      nx = f6.redISub(d4).redISub(d4);\n      ny = e7.redMul(d4.redISub(nx)).redISub(c8);\n      nz = this.y.redMul(this.z);\n      nz = nz.redIAdd(nz);\n    }\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype._threeDbl = function _threeDbl() {\n    var nx;\n    var ny;\n    var nz;\n    if (this.zOne) {\n      var xx = this.x.redSqr();\n      var yy = this.y.redSqr();\n      var yyyy = yy.redSqr();\n      var s5 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n      s5 = s5.redIAdd(s5);\n      var m4 = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n      var t5 = m4.redSqr().redISub(s5).redISub(s5);\n      nx = t5;\n      var yyyy8 = yyyy.redIAdd(yyyy);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      ny = m4.redMul(s5.redISub(t5)).redISub(yyyy8);\n      nz = this.y.redAdd(this.y);\n    } else {\n      var delta = this.z.redSqr();\n      var gamma = this.y.redSqr();\n      var beta = this.x.redMul(gamma);\n      var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n      alpha = alpha.redAdd(alpha).redIAdd(alpha);\n      var beta4 = beta.redIAdd(beta);\n      beta4 = beta4.redIAdd(beta4);\n      var beta8 = beta4.redAdd(beta4);\n      nx = alpha.redSqr().redISub(beta8);\n      nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n      var ggamma8 = gamma.redSqr();\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n    }\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype._dbl = function _dbl() {\n    var a5 = this.curve.a;\n    var jx = this.x;\n    var jy = this.y;\n    var jz = this.z;\n    var jz4 = jz.redSqr().redSqr();\n    var jx2 = jx.redSqr();\n    var jy2 = jy.redSqr();\n    var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a5.redMul(jz4));\n    var jxd4 = jx.redAdd(jx);\n    jxd4 = jxd4.redIAdd(jxd4);\n    var t1 = jxd4.redMul(jy2);\n    var nx = c5.redSqr().redISub(t1.redAdd(t1));\n    var t22 = t1.redISub(nx);\n    var jyd8 = jy2.redSqr();\n    jyd8 = jyd8.redIAdd(jyd8);\n    jyd8 = jyd8.redIAdd(jyd8);\n    jyd8 = jyd8.redIAdd(jyd8);\n    var ny = c5.redMul(t22).redISub(jyd8);\n    var nz = jy.redAdd(jy).redMul(jz);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.trpl = function trpl() {\n    if (!this.curve.zeroA) return this.dbl().add(this);\n    var xx = this.x.redSqr();\n    var yy = this.y.redSqr();\n    var zz = this.z.redSqr();\n    var yyyy = yy.redSqr();\n    var m4 = xx.redAdd(xx).redIAdd(xx);\n    var mm = m4.redSqr();\n    var e7 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    e7 = e7.redIAdd(e7);\n    e7 = e7.redAdd(e7).redIAdd(e7);\n    e7 = e7.redISub(mm);\n    var ee3 = e7.redSqr();\n    var t5 = yyyy.redIAdd(yyyy);\n    t5 = t5.redIAdd(t5);\n    t5 = t5.redIAdd(t5);\n    t5 = t5.redIAdd(t5);\n    var u5 = m4.redIAdd(e7).redSqr().redISub(mm).redISub(ee3).redISub(t5);\n    var yyu4 = yy.redMul(u5);\n    yyu4 = yyu4.redIAdd(yyu4);\n    yyu4 = yyu4.redIAdd(yyu4);\n    var nx = this.x.redMul(ee3).redISub(yyu4);\n    nx = nx.redIAdd(nx);\n    nx = nx.redIAdd(nx);\n    var ny = this.y.redMul(u5.redMul(t5.redISub(u5)).redISub(e7.redMul(ee3)));\n    ny = ny.redIAdd(ny);\n    ny = ny.redIAdd(ny);\n    ny = ny.redIAdd(ny);\n    var nz = this.z.redAdd(e7).redSqr().redISub(zz).redISub(ee3);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.mul = function mul(k4, kbase) {\n    k4 = new BN(k4, kbase);\n    return this.curve._wnafMul(this, k4);\n  };\n  JPoint.prototype.eq = function eq(p5) {\n    if (p5.type === \"affine\") return this.eq(p5.toJ());\n    if (this === p5) return true;\n    var z22 = this.z.redSqr();\n    var pz2 = p5.z.redSqr();\n    if (this.x.redMul(pz2).redISub(p5.x.redMul(z22)).cmpn(0) !== 0) return false;\n    var z32 = z22.redMul(this.z);\n    var pz3 = pz2.redMul(p5.z);\n    return this.y.redMul(pz3).redISub(p5.y.redMul(z32)).cmpn(0) === 0;\n  };\n  JPoint.prototype.eqXToP = function eqXToP(x4) {\n    var zs = this.z.redSqr();\n    var rx = x4.toRed(this.curve.red).redMul(zs);\n    if (this.x.cmp(rx) === 0) return true;\n    var xc = x4.clone();\n    var t5 = this.curve.redN.redMul(zs);\n    for (; ; ) {\n      xc.iadd(this.curve.n);\n      if (xc.cmp(this.curve.p) >= 0) return false;\n      rx.redIAdd(t5);\n      if (this.x.cmp(rx) === 0) return true;\n    }\n  };\n  JPoint.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC JPoint Infinity>\";\n    return \"<EC JPoint x: \" + this.x.toString(16, 2) + \" y: \" + this.y.toString(16, 2) + \" z: \" + this.z.toString(16, 2) + \">\";\n  };\n  JPoint.prototype.isInfinity = function isInfinity() {\n    return this.z.cmpn(0) === 0;\n  };\n  return exports$S$2;\n}\nvar exports$R$2 = {};\nvar _dewExec$Q$2 = false;\nfunction dew$Q$2() {\n  if (_dewExec$Q$2) return exports$R$2;\n  _dewExec$Q$2 = true;\n  var BN = dew$V$2();\n  var inherits = dew$f();\n  var Base = dew$S$2();\n  var utils = dew$T$2();\n  function MontCurve(conf) {\n    Base.call(this, \"mont\", conf);\n    this.a = new BN(conf.a, 16).toRed(this.red);\n    this.b = new BN(conf.b, 16).toRed(this.red);\n    this.i4 = new BN(4).toRed(this.red).redInvm();\n    this.two = new BN(2).toRed(this.red);\n    this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n  }\n  inherits(MontCurve, Base);\n  exports$R$2 = MontCurve;\n  MontCurve.prototype.validate = function validate(point) {\n    var x4 = point.normalize().x;\n    var x22 = x4.redSqr();\n    var rhs = x22.redMul(x4).redAdd(x22.redMul(this.a)).redAdd(x4);\n    var y5 = rhs.redSqrt();\n    return y5.redSqr().cmp(rhs) === 0;\n  };\n  function Point(curve, x4, z4) {\n    Base.BasePoint.call(this, curve, \"projective\");\n    if (x4 === null && z4 === null) {\n      this.x = this.curve.one;\n      this.z = this.curve.zero;\n    } else {\n      this.x = new BN(x4, 16);\n      this.z = new BN(z4, 16);\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n    return this.point(utils.toArray(bytes, enc), 1);\n  };\n  MontCurve.prototype.point = function point(x4, z4) {\n    return new Point(this, x4, z4);\n  };\n  MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n    return Point.fromJSON(this, obj);\n  };\n  Point.prototype.precompute = function precompute() {\n  };\n  Point.prototype._encode = function _encode() {\n    return this.getX().toArray(\"be\", this.curve.p.byteLength());\n  };\n  Point.fromJSON = function fromJSON(curve, obj) {\n    return new Point(curve, obj[0], obj[1] || curve.one);\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.z.cmpn(0) === 0;\n  };\n  Point.prototype.dbl = function dbl() {\n    var a5 = this.x.redAdd(this.z);\n    var aa = a5.redSqr();\n    var b4 = this.x.redSub(this.z);\n    var bb = b4.redSqr();\n    var c5 = aa.redSub(bb);\n    var nx = aa.redMul(bb);\n    var nz = c5.redMul(bb.redAdd(this.curve.a24.redMul(c5)));\n    return this.curve.point(nx, nz);\n  };\n  Point.prototype.add = function add() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.diffAdd = function diffAdd(p5, diff) {\n    var a5 = this.x.redAdd(this.z);\n    var b4 = this.x.redSub(this.z);\n    var c5 = p5.x.redAdd(p5.z);\n    var d4 = p5.x.redSub(p5.z);\n    var da = d4.redMul(a5);\n    var cb = c5.redMul(b4);\n    var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n    var nz = diff.x.redMul(da.redISub(cb).redSqr());\n    return this.curve.point(nx, nz);\n  };\n  Point.prototype.mul = function mul(k4) {\n    var t5 = k4.clone();\n    var a5 = this;\n    var b4 = this.curve.point(null, null);\n    var c5 = this;\n    for (var bits = []; t5.cmpn(0) !== 0; t5.iushrn(1)) bits.push(t5.andln(1));\n    for (var i5 = bits.length - 1; i5 >= 0; i5--) {\n      if (bits[i5] === 0) {\n        a5 = a5.diffAdd(b4, c5);\n        b4 = b4.dbl();\n      } else {\n        b4 = a5.diffAdd(b4, c5);\n        a5 = a5.dbl();\n      }\n    }\n    return b4;\n  };\n  Point.prototype.mulAdd = function mulAdd() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.jumlAdd = function jumlAdd() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.eq = function eq(other) {\n    return this.getX().cmp(other.getX()) === 0;\n  };\n  Point.prototype.normalize = function normalize() {\n    this.x = this.x.redMul(this.z.redInvm());\n    this.z = this.curve.one;\n    return this;\n  };\n  Point.prototype.getX = function getX() {\n    this.normalize();\n    return this.x.fromRed();\n  };\n  return exports$R$2;\n}\nvar exports$Q$2 = {};\nvar _dewExec$P$2 = false;\nfunction dew$P$2() {\n  if (_dewExec$P$2) return exports$Q$2;\n  _dewExec$P$2 = true;\n  var utils = dew$T$2();\n  var BN = dew$V$2();\n  var inherits = dew$f();\n  var Base = dew$S$2();\n  var assert2 = utils.assert;\n  function EdwardsCurve(conf) {\n    this.twisted = (conf.a | 0) !== 1;\n    this.mOneA = this.twisted && (conf.a | 0) === -1;\n    this.extended = this.mOneA;\n    Base.call(this, \"edwards\", conf);\n    this.a = new BN(conf.a, 16).umod(this.red.m);\n    this.a = this.a.toRed(this.red);\n    this.c = new BN(conf.c, 16).toRed(this.red);\n    this.c2 = this.c.redSqr();\n    this.d = new BN(conf.d, 16).toRed(this.red);\n    this.dd = this.d.redAdd(this.d);\n    assert2(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n    this.oneC = (conf.c | 0) === 1;\n  }\n  inherits(EdwardsCurve, Base);\n  exports$Q$2 = EdwardsCurve;\n  EdwardsCurve.prototype._mulA = function _mulA(num) {\n    if (this.mOneA) return num.redNeg();\n    else return this.a.redMul(num);\n  };\n  EdwardsCurve.prototype._mulC = function _mulC(num) {\n    if (this.oneC) return num;\n    else return this.c.redMul(num);\n  };\n  EdwardsCurve.prototype.jpoint = function jpoint(x4, y5, z4, t5) {\n    return this.point(x4, y5, z4, t5);\n  };\n  EdwardsCurve.prototype.pointFromX = function pointFromX(x4, odd) {\n    x4 = new BN(x4, 16);\n    if (!x4.red) x4 = x4.toRed(this.red);\n    var x22 = x4.redSqr();\n    var rhs = this.c2.redSub(this.a.redMul(x22));\n    var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x22));\n    var y22 = rhs.redMul(lhs.redInvm());\n    var y5 = y22.redSqrt();\n    if (y5.redSqr().redSub(y22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    var isOdd = y5.fromRed().isOdd();\n    if (odd && !isOdd || !odd && isOdd) y5 = y5.redNeg();\n    return this.point(x4, y5);\n  };\n  EdwardsCurve.prototype.pointFromY = function pointFromY(y5, odd) {\n    y5 = new BN(y5, 16);\n    if (!y5.red) y5 = y5.toRed(this.red);\n    var y22 = y5.redSqr();\n    var lhs = y22.redSub(this.c2);\n    var rhs = y22.redMul(this.d).redMul(this.c2).redSub(this.a);\n    var x22 = lhs.redMul(rhs.redInvm());\n    if (x22.cmp(this.zero) === 0) {\n      if (odd) throw new Error(\"invalid point\");\n      else return this.point(this.zero, y5);\n    }\n    var x4 = x22.redSqrt();\n    if (x4.redSqr().redSub(x22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    if (x4.fromRed().isOdd() !== odd) x4 = x4.redNeg();\n    return this.point(x4, y5);\n  };\n  EdwardsCurve.prototype.validate = function validate(point) {\n    if (point.isInfinity()) return true;\n    point.normalize();\n    var x22 = point.x.redSqr();\n    var y22 = point.y.redSqr();\n    var lhs = x22.redMul(this.a).redAdd(y22);\n    var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x22).redMul(y22)));\n    return lhs.cmp(rhs) === 0;\n  };\n  function Point(curve, x4, y5, z4, t5) {\n    Base.BasePoint.call(this, curve, \"projective\");\n    if (x4 === null && y5 === null && z4 === null) {\n      this.x = this.curve.zero;\n      this.y = this.curve.one;\n      this.z = this.curve.one;\n      this.t = this.curve.zero;\n      this.zOne = true;\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      this.z = z4 ? new BN(z4, 16) : this.curve.one;\n      this.t = t5 && new BN(t5, 16);\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n      if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n      if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n      this.zOne = this.z === this.curve.one;\n      if (this.curve.extended && !this.t) {\n        this.t = this.x.redMul(this.y);\n        if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n      }\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n    return Point.fromJSON(this, obj);\n  };\n  EdwardsCurve.prototype.point = function point(x4, y5, z4, t5) {\n    return new Point(this, x4, y5, z4, t5);\n  };\n  Point.fromJSON = function fromJSON(curve, obj) {\n    return new Point(curve, obj[0], obj[1], obj[2]);\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n  };\n  Point.prototype._extDbl = function _extDbl() {\n    var a5 = this.x.redSqr();\n    var b4 = this.y.redSqr();\n    var c5 = this.z.redSqr();\n    c5 = c5.redIAdd(c5);\n    var d4 = this.curve._mulA(a5);\n    var e7 = this.x.redAdd(this.y).redSqr().redISub(a5).redISub(b4);\n    var g4 = d4.redAdd(b4);\n    var f6 = g4.redSub(c5);\n    var h5 = d4.redSub(b4);\n    var nx = e7.redMul(f6);\n    var ny = g4.redMul(h5);\n    var nt2 = e7.redMul(h5);\n    var nz = f6.redMul(g4);\n    return this.curve.point(nx, ny, nz, nt2);\n  };\n  Point.prototype._projDbl = function _projDbl() {\n    var b4 = this.x.redAdd(this.y).redSqr();\n    var c5 = this.x.redSqr();\n    var d4 = this.y.redSqr();\n    var nx;\n    var ny;\n    var nz;\n    var e7;\n    var h5;\n    var j4;\n    if (this.curve.twisted) {\n      e7 = this.curve._mulA(c5);\n      var f6 = e7.redAdd(d4);\n      if (this.zOne) {\n        nx = b4.redSub(c5).redSub(d4).redMul(f6.redSub(this.curve.two));\n        ny = f6.redMul(e7.redSub(d4));\n        nz = f6.redSqr().redSub(f6).redSub(f6);\n      } else {\n        h5 = this.z.redSqr();\n        j4 = f6.redSub(h5).redISub(h5);\n        nx = b4.redSub(c5).redISub(d4).redMul(j4);\n        ny = f6.redMul(e7.redSub(d4));\n        nz = f6.redMul(j4);\n      }\n    } else {\n      e7 = c5.redAdd(d4);\n      h5 = this.curve._mulC(this.z).redSqr();\n      j4 = e7.redSub(h5).redSub(h5);\n      nx = this.curve._mulC(b4.redISub(e7)).redMul(j4);\n      ny = this.curve._mulC(e7).redMul(c5.redISub(d4));\n      nz = e7.redMul(j4);\n    }\n    return this.curve.point(nx, ny, nz);\n  };\n  Point.prototype.dbl = function dbl() {\n    if (this.isInfinity()) return this;\n    if (this.curve.extended) return this._extDbl();\n    else return this._projDbl();\n  };\n  Point.prototype._extAdd = function _extAdd(p5) {\n    var a5 = this.y.redSub(this.x).redMul(p5.y.redSub(p5.x));\n    var b4 = this.y.redAdd(this.x).redMul(p5.y.redAdd(p5.x));\n    var c5 = this.t.redMul(this.curve.dd).redMul(p5.t);\n    var d4 = this.z.redMul(p5.z.redAdd(p5.z));\n    var e7 = b4.redSub(a5);\n    var f6 = d4.redSub(c5);\n    var g4 = d4.redAdd(c5);\n    var h5 = b4.redAdd(a5);\n    var nx = e7.redMul(f6);\n    var ny = g4.redMul(h5);\n    var nt2 = e7.redMul(h5);\n    var nz = f6.redMul(g4);\n    return this.curve.point(nx, ny, nz, nt2);\n  };\n  Point.prototype._projAdd = function _projAdd(p5) {\n    var a5 = this.z.redMul(p5.z);\n    var b4 = a5.redSqr();\n    var c5 = this.x.redMul(p5.x);\n    var d4 = this.y.redMul(p5.y);\n    var e7 = this.curve.d.redMul(c5).redMul(d4);\n    var f6 = b4.redSub(e7);\n    var g4 = b4.redAdd(e7);\n    var tmp = this.x.redAdd(this.y).redMul(p5.x.redAdd(p5.y)).redISub(c5).redISub(d4);\n    var nx = a5.redMul(f6).redMul(tmp);\n    var ny;\n    var nz;\n    if (this.curve.twisted) {\n      ny = a5.redMul(g4).redMul(d4.redSub(this.curve._mulA(c5)));\n      nz = f6.redMul(g4);\n    } else {\n      ny = a5.redMul(g4).redMul(d4.redSub(c5));\n      nz = this.curve._mulC(f6).redMul(g4);\n    }\n    return this.curve.point(nx, ny, nz);\n  };\n  Point.prototype.add = function add(p5) {\n    if (this.isInfinity()) return p5;\n    if (p5.isInfinity()) return this;\n    if (this.curve.extended) return this._extAdd(p5);\n    else return this._projAdd(p5);\n  };\n  Point.prototype.mul = function mul(k4) {\n    if (this._hasDoubles(k4)) return this.curve._fixedNafMul(this, k4);\n    else return this.curve._wnafMul(this, k4);\n  };\n  Point.prototype.mulAdd = function mulAdd(k1, p5, k22) {\n    return this.curve._wnafMulAdd(1, [this, p5], [k1, k22], 2, false);\n  };\n  Point.prototype.jmulAdd = function jmulAdd(k1, p5, k22) {\n    return this.curve._wnafMulAdd(1, [this, p5], [k1, k22], 2, true);\n  };\n  Point.prototype.normalize = function normalize() {\n    if (this.zOne) return this;\n    var zi = this.z.redInvm();\n    this.x = this.x.redMul(zi);\n    this.y = this.y.redMul(zi);\n    if (this.t) this.t = this.t.redMul(zi);\n    this.z = this.curve.one;\n    this.zOne = true;\n    return this;\n  };\n  Point.prototype.neg = function neg() {\n    return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n  };\n  Point.prototype.getX = function getX() {\n    this.normalize();\n    return this.x.fromRed();\n  };\n  Point.prototype.getY = function getY() {\n    this.normalize();\n    return this.y.fromRed();\n  };\n  Point.prototype.eq = function eq(other) {\n    return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n  };\n  Point.prototype.eqXToP = function eqXToP(x4) {\n    var rx = x4.toRed(this.curve.red).redMul(this.z);\n    if (this.x.cmp(rx) === 0) return true;\n    var xc = x4.clone();\n    var t5 = this.curve.redN.redMul(this.z);\n    for (; ; ) {\n      xc.iadd(this.curve.n);\n      if (xc.cmp(this.curve.p) >= 0) return false;\n      rx.redIAdd(t5);\n      if (this.x.cmp(rx) === 0) return true;\n    }\n  };\n  Point.prototype.toP = Point.prototype.normalize;\n  Point.prototype.mixedAdd = Point.prototype.add;\n  return exports$Q$2;\n}\nvar exports$P$2 = {};\nvar _dewExec$O$2 = false;\nfunction dew$O$2() {\n  if (_dewExec$O$2) return exports$P$2;\n  _dewExec$O$2 = true;\n  var curve = exports$P$2;\n  curve.base = dew$S$2();\n  curve.short = dew$R$2();\n  curve.mont = dew$Q$2();\n  curve.edwards = dew$P$2();\n  return exports$P$2;\n}\nvar exports$O$2 = {};\nvar _dewExec$N$2 = false;\nfunction dew$N$2() {\n  if (_dewExec$N$2) return exports$O$2;\n  _dewExec$N$2 = true;\n  var assert2 = dew$2m();\n  var inherits = dew$f();\n  exports$O$2.inherits = inherits;\n  function isSurrogatePair(msg, i5) {\n    if ((msg.charCodeAt(i5) & 64512) !== 55296) {\n      return false;\n    }\n    if (i5 < 0 || i5 + 1 >= msg.length) {\n      return false;\n    }\n    return (msg.charCodeAt(i5 + 1) & 64512) === 56320;\n  }\n  function toArray(msg, enc) {\n    if (Array.isArray(msg)) return msg.slice();\n    if (!msg) return [];\n    var res = [];\n    if (typeof msg === \"string\") {\n      if (!enc) {\n        var p5 = 0;\n        for (var i5 = 0; i5 < msg.length; i5++) {\n          var c5 = msg.charCodeAt(i5);\n          if (c5 < 128) {\n            res[p5++] = c5;\n          } else if (c5 < 2048) {\n            res[p5++] = c5 >> 6 | 192;\n            res[p5++] = c5 & 63 | 128;\n          } else if (isSurrogatePair(msg, i5)) {\n            c5 = 65536 + ((c5 & 1023) << 10) + (msg.charCodeAt(++i5) & 1023);\n            res[p5++] = c5 >> 18 | 240;\n            res[p5++] = c5 >> 12 & 63 | 128;\n            res[p5++] = c5 >> 6 & 63 | 128;\n            res[p5++] = c5 & 63 | 128;\n          } else {\n            res[p5++] = c5 >> 12 | 224;\n            res[p5++] = c5 >> 6 & 63 | 128;\n            res[p5++] = c5 & 63 | 128;\n          }\n        }\n      } else if (enc === \"hex\") {\n        msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n        if (msg.length % 2 !== 0) msg = \"0\" + msg;\n        for (i5 = 0; i5 < msg.length; i5 += 2) res.push(parseInt(msg[i5] + msg[i5 + 1], 16));\n      }\n    } else {\n      for (i5 = 0; i5 < msg.length; i5++) res[i5] = msg[i5] | 0;\n    }\n    return res;\n  }\n  exports$O$2.toArray = toArray;\n  function toHex(msg) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) res += zero2(msg[i5].toString(16));\n    return res;\n  }\n  exports$O$2.toHex = toHex;\n  function htonl(w4) {\n    var res = w4 >>> 24 | w4 >>> 8 & 65280 | w4 << 8 & 16711680 | (w4 & 255) << 24;\n    return res >>> 0;\n  }\n  exports$O$2.htonl = htonl;\n  function toHex32(msg, endian) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) {\n      var w4 = msg[i5];\n      if (endian === \"little\") w4 = htonl(w4);\n      res += zero8(w4.toString(16));\n    }\n    return res;\n  }\n  exports$O$2.toHex32 = toHex32;\n  function zero2(word) {\n    if (word.length === 1) return \"0\" + word;\n    else return word;\n  }\n  exports$O$2.zero2 = zero2;\n  function zero8(word) {\n    if (word.length === 7) return \"0\" + word;\n    else if (word.length === 6) return \"00\" + word;\n    else if (word.length === 5) return \"000\" + word;\n    else if (word.length === 4) return \"0000\" + word;\n    else if (word.length === 3) return \"00000\" + word;\n    else if (word.length === 2) return \"000000\" + word;\n    else if (word.length === 1) return \"0000000\" + word;\n    else return word;\n  }\n  exports$O$2.zero8 = zero8;\n  function join32(msg, start, end, endian) {\n    var len = end - start;\n    assert2(len % 4 === 0);\n    var res = new Array(len / 4);\n    for (var i5 = 0, k4 = start; i5 < res.length; i5++, k4 += 4) {\n      var w4;\n      if (endian === \"big\") w4 = msg[k4] << 24 | msg[k4 + 1] << 16 | msg[k4 + 2] << 8 | msg[k4 + 3];\n      else w4 = msg[k4 + 3] << 24 | msg[k4 + 2] << 16 | msg[k4 + 1] << 8 | msg[k4];\n      res[i5] = w4 >>> 0;\n    }\n    return res;\n  }\n  exports$O$2.join32 = join32;\n  function split32(msg, endian) {\n    var res = new Array(msg.length * 4);\n    for (var i5 = 0, k4 = 0; i5 < msg.length; i5++, k4 += 4) {\n      var m4 = msg[i5];\n      if (endian === \"big\") {\n        res[k4] = m4 >>> 24;\n        res[k4 + 1] = m4 >>> 16 & 255;\n        res[k4 + 2] = m4 >>> 8 & 255;\n        res[k4 + 3] = m4 & 255;\n      } else {\n        res[k4 + 3] = m4 >>> 24;\n        res[k4 + 2] = m4 >>> 16 & 255;\n        res[k4 + 1] = m4 >>> 8 & 255;\n        res[k4] = m4 & 255;\n      }\n    }\n    return res;\n  }\n  exports$O$2.split32 = split32;\n  function rotr32(w4, b4) {\n    return w4 >>> b4 | w4 << 32 - b4;\n  }\n  exports$O$2.rotr32 = rotr32;\n  function rotl32(w4, b4) {\n    return w4 << b4 | w4 >>> 32 - b4;\n  }\n  exports$O$2.rotl32 = rotl32;\n  function sum32(a5, b4) {\n    return a5 + b4 >>> 0;\n  }\n  exports$O$2.sum32 = sum32;\n  function sum32_3(a5, b4, c5) {\n    return a5 + b4 + c5 >>> 0;\n  }\n  exports$O$2.sum32_3 = sum32_3;\n  function sum32_4(a5, b4, c5, d4) {\n    return a5 + b4 + c5 + d4 >>> 0;\n  }\n  exports$O$2.sum32_4 = sum32_4;\n  function sum32_5(a5, b4, c5, d4, e7) {\n    return a5 + b4 + c5 + d4 + e7 >>> 0;\n  }\n  exports$O$2.sum32_5 = sum32_5;\n  function sum64(buf, pos, ah, al) {\n    var bh = buf[pos];\n    var bl = buf[pos + 1];\n    var lo = al + bl >>> 0;\n    var hi = (lo < al ? 1 : 0) + ah + bh;\n    buf[pos] = hi >>> 0;\n    buf[pos + 1] = lo;\n  }\n  exports$O$2.sum64 = sum64;\n  function sum64_hi(ah, al, bh, bl) {\n    var lo = al + bl >>> 0;\n    var hi = (lo < al ? 1 : 0) + ah + bh;\n    return hi >>> 0;\n  }\n  exports$O$2.sum64_hi = sum64_hi;\n  function sum64_lo(ah, al, bh, bl) {\n    var lo = al + bl;\n    return lo >>> 0;\n  }\n  exports$O$2.sum64_lo = sum64_lo;\n  function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n    var carry = 0;\n    var lo = al;\n    lo = lo + bl >>> 0;\n    carry += lo < al ? 1 : 0;\n    lo = lo + cl >>> 0;\n    carry += lo < cl ? 1 : 0;\n    lo = lo + dl >>> 0;\n    carry += lo < dl ? 1 : 0;\n    var hi = ah + bh + ch + dh + carry;\n    return hi >>> 0;\n  }\n  exports$O$2.sum64_4_hi = sum64_4_hi;\n  function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n    var lo = al + bl + cl + dl;\n    return lo >>> 0;\n  }\n  exports$O$2.sum64_4_lo = sum64_4_lo;\n  function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n    var carry = 0;\n    var lo = al;\n    lo = lo + bl >>> 0;\n    carry += lo < al ? 1 : 0;\n    lo = lo + cl >>> 0;\n    carry += lo < cl ? 1 : 0;\n    lo = lo + dl >>> 0;\n    carry += lo < dl ? 1 : 0;\n    lo = lo + el >>> 0;\n    carry += lo < el ? 1 : 0;\n    var hi = ah + bh + ch + dh + eh + carry;\n    return hi >>> 0;\n  }\n  exports$O$2.sum64_5_hi = sum64_5_hi;\n  function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n    var lo = al + bl + cl + dl + el;\n    return lo >>> 0;\n  }\n  exports$O$2.sum64_5_lo = sum64_5_lo;\n  function rotr64_hi(ah, al, num) {\n    var r5 = al << 32 - num | ah >>> num;\n    return r5 >>> 0;\n  }\n  exports$O$2.rotr64_hi = rotr64_hi;\n  function rotr64_lo(ah, al, num) {\n    var r5 = ah << 32 - num | al >>> num;\n    return r5 >>> 0;\n  }\n  exports$O$2.rotr64_lo = rotr64_lo;\n  function shr64_hi(ah, al, num) {\n    return ah >>> num;\n  }\n  exports$O$2.shr64_hi = shr64_hi;\n  function shr64_lo(ah, al, num) {\n    var r5 = ah << 32 - num | al >>> num;\n    return r5 >>> 0;\n  }\n  exports$O$2.shr64_lo = shr64_lo;\n  return exports$O$2;\n}\nvar exports$N$2 = {};\nvar _dewExec$M$2 = false;\nfunction dew$M$2() {\n  if (_dewExec$M$2) return exports$N$2;\n  _dewExec$M$2 = true;\n  var utils = dew$N$2();\n  var assert2 = dew$2m();\n  function BlockHash() {\n    this.pending = null;\n    this.pendingTotal = 0;\n    this.blockSize = this.constructor.blockSize;\n    this.outSize = this.constructor.outSize;\n    this.hmacStrength = this.constructor.hmacStrength;\n    this.padLength = this.constructor.padLength / 8;\n    this.endian = \"big\";\n    this._delta8 = this.blockSize / 8;\n    this._delta32 = this.blockSize / 32;\n  }\n  exports$N$2.BlockHash = BlockHash;\n  BlockHash.prototype.update = function update(msg, enc) {\n    msg = utils.toArray(msg, enc);\n    if (!this.pending) this.pending = msg;\n    else this.pending = this.pending.concat(msg);\n    this.pendingTotal += msg.length;\n    if (this.pending.length >= this._delta8) {\n      msg = this.pending;\n      var r5 = msg.length % this._delta8;\n      this.pending = msg.slice(msg.length - r5, msg.length);\n      if (this.pending.length === 0) this.pending = null;\n      msg = utils.join32(msg, 0, msg.length - r5, this.endian);\n      for (var i5 = 0; i5 < msg.length; i5 += this._delta32) this._update(msg, i5, i5 + this._delta32);\n    }\n    return this;\n  };\n  BlockHash.prototype.digest = function digest(enc) {\n    this.update(this._pad());\n    assert2(this.pending === null);\n    return this._digest(enc);\n  };\n  BlockHash.prototype._pad = function pad() {\n    var len = this.pendingTotal;\n    var bytes = this._delta8;\n    var k4 = bytes - (len + this.padLength) % bytes;\n    var res = new Array(k4 + this.padLength);\n    res[0] = 128;\n    for (var i5 = 1; i5 < k4; i5++) res[i5] = 0;\n    len <<= 3;\n    if (this.endian === \"big\") {\n      for (var t5 = 8; t5 < this.padLength; t5++) res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = len >>> 24 & 255;\n      res[i5++] = len >>> 16 & 255;\n      res[i5++] = len >>> 8 & 255;\n      res[i5++] = len & 255;\n    } else {\n      res[i5++] = len & 255;\n      res[i5++] = len >>> 8 & 255;\n      res[i5++] = len >>> 16 & 255;\n      res[i5++] = len >>> 24 & 255;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      for (t5 = 8; t5 < this.padLength; t5++) res[i5++] = 0;\n    }\n    return res;\n  };\n  return exports$N$2;\n}\nvar exports$M$2 = {};\nvar _dewExec$L$2 = false;\nfunction dew$L$2() {\n  if (_dewExec$L$2) return exports$M$2;\n  _dewExec$L$2 = true;\n  return exports$M$2;\n}\nvar exports$L$2 = {};\nvar _dewExec$K$2 = false;\nfunction dew$K$2() {\n  if (_dewExec$K$2) return exports$L$2;\n  _dewExec$K$2 = true;\n  var utils = dew$N$2();\n  var common = dew$M$2();\n  var rotl32 = utils.rotl32;\n  var sum32 = utils.sum32;\n  var sum32_3 = utils.sum32_3;\n  var sum32_4 = utils.sum32_4;\n  var BlockHash = common.BlockHash;\n  function RIPEMD160() {\n    if (!(this instanceof RIPEMD160)) return new RIPEMD160();\n    BlockHash.call(this);\n    this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];\n    this.endian = \"little\";\n  }\n  utils.inherits(RIPEMD160, BlockHash);\n  exports$L$2.ripemd160 = RIPEMD160;\n  RIPEMD160.blockSize = 512;\n  RIPEMD160.outSize = 160;\n  RIPEMD160.hmacStrength = 192;\n  RIPEMD160.padLength = 64;\n  RIPEMD160.prototype._update = function update(msg, start) {\n    var A4 = this.h[0];\n    var B4 = this.h[1];\n    var C4 = this.h[2];\n    var D4 = this.h[3];\n    var E4 = this.h[4];\n    var Ah = A4;\n    var Bh = B4;\n    var Ch = C4;\n    var Dh = D4;\n    var Eh = E4;\n    for (var j4 = 0; j4 < 80; j4++) {\n      var T4 = sum32(rotl32(sum32_4(A4, f6(j4, B4, C4, D4), msg[r5[j4] + start], K3(j4)), s5[j4]), E4);\n      A4 = E4;\n      E4 = D4;\n      D4 = rotl32(C4, 10);\n      C4 = B4;\n      B4 = T4;\n      T4 = sum32(rotl32(sum32_4(Ah, f6(79 - j4, Bh, Ch, Dh), msg[rh[j4] + start], Kh(j4)), sh[j4]), Eh);\n      Ah = Eh;\n      Eh = Dh;\n      Dh = rotl32(Ch, 10);\n      Ch = Bh;\n      Bh = T4;\n    }\n    T4 = sum32_3(this.h[1], C4, Dh);\n    this.h[1] = sum32_3(this.h[2], D4, Eh);\n    this.h[2] = sum32_3(this.h[3], E4, Ah);\n    this.h[3] = sum32_3(this.h[4], A4, Bh);\n    this.h[4] = sum32_3(this.h[0], B4, Ch);\n    this.h[0] = T4;\n  };\n  RIPEMD160.prototype._digest = function digest(enc) {\n    if (enc === \"hex\") return utils.toHex32(this.h, \"little\");\n    else return utils.split32(this.h, \"little\");\n  };\n  function f6(j4, x4, y5, z4) {\n    if (j4 <= 15) return x4 ^ y5 ^ z4;\n    else if (j4 <= 31) return x4 & y5 | ~x4 & z4;\n    else if (j4 <= 47) return (x4 | ~y5) ^ z4;\n    else if (j4 <= 63) return x4 & z4 | y5 & ~z4;\n    else return x4 ^ (y5 | ~z4);\n  }\n  function K3(j4) {\n    if (j4 <= 15) return 0;\n    else if (j4 <= 31) return 1518500249;\n    else if (j4 <= 47) return 1859775393;\n    else if (j4 <= 63) return 2400959708;\n    else return 2840853838;\n  }\n  function Kh(j4) {\n    if (j4 <= 15) return 1352829926;\n    else if (j4 <= 31) return 1548603684;\n    else if (j4 <= 47) return 1836072691;\n    else if (j4 <= 63) return 2053994217;\n    else return 0;\n  }\n  var r5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\n  var rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\n  var s5 = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\n  var sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n  return exports$L$2;\n}\nvar exports$K$2 = {};\nvar _dewExec$J$2 = false;\nfunction dew$J$2() {\n  if (_dewExec$J$2) return exports$K$2;\n  _dewExec$J$2 = true;\n  var utils = dew$N$2();\n  var assert2 = dew$2m();\n  function Hmac2(hash, key, enc) {\n    if (!(this instanceof Hmac2)) return new Hmac2(hash, key, enc);\n    this.Hash = hash;\n    this.blockSize = hash.blockSize / 8;\n    this.outSize = hash.outSize / 8;\n    this.inner = null;\n    this.outer = null;\n    this._init(utils.toArray(key, enc));\n  }\n  exports$K$2 = Hmac2;\n  Hmac2.prototype._init = function init(key) {\n    if (key.length > this.blockSize) key = new this.Hash().update(key).digest();\n    assert2(key.length <= this.blockSize);\n    for (var i5 = key.length; i5 < this.blockSize; i5++) key.push(0);\n    for (i5 = 0; i5 < key.length; i5++) key[i5] ^= 54;\n    this.inner = new this.Hash().update(key);\n    for (i5 = 0; i5 < key.length; i5++) key[i5] ^= 106;\n    this.outer = new this.Hash().update(key);\n  };\n  Hmac2.prototype.update = function update(msg, enc) {\n    this.inner.update(msg, enc);\n    return this;\n  };\n  Hmac2.prototype.digest = function digest(enc) {\n    this.outer.update(this.inner.digest());\n    return this.outer.digest(enc);\n  };\n  return exports$K$2;\n}\nvar exports$J$2 = {};\nvar _dewExec$I$2 = false;\nfunction dew$I$2() {\n  if (_dewExec$I$2) return exports$J$2;\n  _dewExec$I$2 = true;\n  var hash = exports$J$2;\n  hash.utils = dew$N$2();\n  hash.common = dew$M$2();\n  hash.sha = dew$L$2();\n  hash.ripemd = dew$K$2();\n  hash.hmac = dew$J$2();\n  hash.sha1 = hash.sha.sha1;\n  hash.sha256 = hash.sha.sha256;\n  hash.sha224 = hash.sha.sha224;\n  hash.sha384 = hash.sha.sha384;\n  hash.sha512 = hash.sha.sha512;\n  hash.ripemd160 = hash.ripemd.ripemd160;\n  return exports$J$2;\n}\nvar exports$I$2 = {};\nvar _dewExec$H$2 = false;\nfunction dew$H$2() {\n  if (_dewExec$H$2) return exports$I$2;\n  _dewExec$H$2 = true;\n  exports$I$2 = {\n    doubles: {\n      step: 4,\n      points: [[\"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\", \"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"], [\"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\", \"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"], [\"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\", \"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"], [\"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\", \"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"], [\"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\", \"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"], [\"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\", \"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"], [\"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\", \"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"], [\"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\", \"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"], [\"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\", \"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"], [\"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\", \"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"], [\"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\", \"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"], [\"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\", \"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"], [\"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\", \"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"], [\"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\", \"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"], [\"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\", \"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"], [\"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\", \"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"], [\"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\", \"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"], [\"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\", \"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"], [\"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\", \"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"], [\"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\", \"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"], [\"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\", \"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"], [\"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\", \"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"], [\"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\", \"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"], [\"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\", \"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"], [\"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\", \"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"], [\"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\", \"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"], [\"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\", \"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"], [\"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\", \"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"], [\"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\", \"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"], [\"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\", \"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"], [\"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\", \"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"], [\"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\", \"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"], [\"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\", \"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"], [\"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\", \"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"], [\"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\", \"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"], [\"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\", \"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"], [\"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\", \"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"], [\"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\", \"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"], [\"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\", \"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"], [\"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\", \"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"], [\"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\", \"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"], [\"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\", \"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"], [\"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\", \"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"], [\"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\", \"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"], [\"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\", \"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"], [\"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\", \"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"], [\"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\", \"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"], [\"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\", \"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"], [\"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\", \"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"], [\"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\", \"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"], [\"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\", \"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"], [\"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\", \"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"], [\"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\", \"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"], [\"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\", \"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"], [\"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\", \"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"], [\"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\", \"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"], [\"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\", \"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"], [\"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\", \"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"], [\"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\", \"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"], [\"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\", \"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"], [\"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\", \"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"], [\"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\", \"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"], [\"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\", \"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"], [\"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\", \"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"], [\"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\", \"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"]]\n    },\n    naf: {\n      wnd: 7,\n      points: [[\"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\", \"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"], [\"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\", \"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"], [\"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\", \"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"], [\"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\", \"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"], [\"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\", \"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"], [\"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\", \"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"], [\"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\", \"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"], [\"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\", \"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"], [\"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\", \"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"], [\"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\", \"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"], [\"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\", \"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"], [\"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\", \"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"], [\"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\", \"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"], [\"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\", \"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"], [\"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\", \"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"], [\"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\", \"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"], [\"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\", \"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"], [\"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\", \"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"], [\"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\", \"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"], [\"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\", \"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"], [\"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\", \"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"], [\"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\", \"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"], [\"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\", \"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"], [\"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\", \"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"], [\"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\", \"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"], [\"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\", \"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"], [\"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\", \"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"], [\"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\", \"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"], [\"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\", \"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"], [\"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\", \"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"], [\"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\", \"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"], [\"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\", \"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"], [\"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\", \"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"], [\"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\", \"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"], [\"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\", \"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"], [\"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\", \"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"], [\"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\", \"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"], [\"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\", \"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"], [\"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\", \"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"], [\"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\", \"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"], [\"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\", \"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"], [\"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\", \"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"], [\"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\", \"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"], [\"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\", \"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"], [\"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\", \"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"], [\"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\", \"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"], [\"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\", \"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"], [\"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\", \"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"], [\"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\", \"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"], [\"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\", \"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"], [\"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\", \"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"], [\"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\", \"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"], [\"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\", \"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"], [\"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\", \"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"], [\"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\", \"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"], [\"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\", \"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"], [\"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\", \"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"], [\"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\", \"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"], [\"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\", \"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"], [\"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\", \"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"], [\"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\", \"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"], [\"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\", \"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"], [\"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\", \"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"], [\"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\", \"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"], [\"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\", \"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"], [\"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\", \"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"], [\"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\", \"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"], [\"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\", \"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"], [\"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\", \"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"], [\"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\", \"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"], [\"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\", \"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"], [\"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\", \"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"], [\"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\", \"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"], [\"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\", \"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"], [\"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\", \"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"], [\"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\", \"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"], [\"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\", \"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"], [\"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\", \"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"], [\"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\", \"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"], [\"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\", \"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"], [\"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\", \"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"], [\"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\", \"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"], [\"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\", \"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"], [\"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\", \"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"], [\"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\", \"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"], [\"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\", \"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"], [\"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\", \"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"], [\"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\", \"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"], [\"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\", \"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"], [\"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\", \"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"], [\"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\", \"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"], [\"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\", \"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"], [\"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\", \"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"], [\"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\", \"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"], [\"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\", \"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"], [\"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\", \"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"], [\"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\", \"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"], [\"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\", \"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"], [\"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\", \"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"], [\"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\", \"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"], [\"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\", \"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"], [\"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\", \"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"], [\"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\", \"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"], [\"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\", \"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"], [\"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\", \"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"], [\"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\", \"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"], [\"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\", \"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"], [\"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\", \"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"], [\"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\", \"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"], [\"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\", \"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"], [\"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\", \"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"], [\"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\", \"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"], [\"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\", \"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"], [\"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\", \"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"], [\"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\", \"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"], [\"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\", \"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"], [\"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\", \"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"], [\"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\", \"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"], [\"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\", \"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"], [\"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\", \"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"], [\"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\", \"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"], [\"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\", \"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"], [\"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\", \"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"], [\"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\", \"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"], [\"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\", \"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"], [\"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\", \"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"], [\"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\", \"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"]]\n    }\n  };\n  return exports$I$2;\n}\nvar exports$H$2 = {};\nvar _dewExec$G$2 = false;\nfunction dew$G$2() {\n  if (_dewExec$G$2) return exports$H$2;\n  _dewExec$G$2 = true;\n  var curves = exports$H$2;\n  var hash = dew$I$2();\n  var curve = dew$O$2();\n  var utils = dew$T$2();\n  var assert2 = utils.assert;\n  function PresetCurve(options) {\n    if (options.type === \"short\") this.curve = new curve.short(options);\n    else if (options.type === \"edwards\") this.curve = new curve.edwards(options);\n    else this.curve = new curve.mont(options);\n    this.g = this.curve.g;\n    this.n = this.curve.n;\n    this.hash = options.hash;\n    assert2(this.g.validate(), \"Invalid curve\");\n    assert2(this.g.mul(this.n).isInfinity(), \"Invalid curve, G*N != O\");\n  }\n  curves.PresetCurve = PresetCurve;\n  function defineCurve(name2, options) {\n    Object.defineProperty(curves, name2, {\n      configurable: true,\n      enumerable: true,\n      get: function() {\n        var curve2 = new PresetCurve(options);\n        Object.defineProperty(curves, name2, {\n          configurable: true,\n          enumerable: true,\n          value: curve2\n        });\n        return curve2;\n      }\n    });\n  }\n  defineCurve(\"p192\", {\n    type: \"short\",\n    prime: \"p192\",\n    p: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",\n    a: \"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",\n    b: \"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",\n    n: \"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\", \"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]\n  });\n  defineCurve(\"p224\", {\n    type: \"short\",\n    prime: \"p224\",\n    p: \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",\n    a: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",\n    b: \"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",\n    n: \"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\", \"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]\n  });\n  defineCurve(\"p256\", {\n    type: \"short\",\n    prime: null,\n    p: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",\n    a: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",\n    b: \"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",\n    n: \"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\", \"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]\n  });\n  defineCurve(\"p384\", {\n    type: \"short\",\n    prime: null,\n    p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",\n    a: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",\n    b: \"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",\n    n: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",\n    hash: hash.sha384,\n    gRed: false,\n    g: [\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\", \"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]\n  });\n  defineCurve(\"p521\", {\n    type: \"short\",\n    prime: null,\n    p: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",\n    a: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",\n    b: \"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",\n    n: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",\n    hash: hash.sha512,\n    gRed: false,\n    g: [\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\", \"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]\n  });\n  defineCurve(\"curve25519\", {\n    type: \"mont\",\n    prime: \"p25519\",\n    p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n    a: \"76d06\",\n    b: \"1\",\n    n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"9\"]\n  });\n  defineCurve(\"ed25519\", {\n    type: \"edwards\",\n    prime: \"p25519\",\n    p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n    a: \"-1\",\n    c: \"1\",\n    // -121665 * (121666^(-1)) (mod P)\n    d: \"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",\n    n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\n      \"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\n      // 4/5\n      \"6666666666666666666666666666666666666666666666666666666666666658\"\n    ]\n  });\n  var pre;\n  try {\n    pre = dew$H$2();\n  } catch (e7) {\n    pre = void 0;\n  }\n  defineCurve(\"secp256k1\", {\n    type: \"short\",\n    prime: \"k256\",\n    p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",\n    a: \"0\",\n    b: \"7\",\n    n: \"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",\n    h: \"1\",\n    hash: hash.sha256,\n    // Precomputed endomorphism\n    beta: \"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",\n    lambda: \"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",\n    basis: [{\n      a: \"3086d221a7d46bcde86c90e49284eb15\",\n      b: \"-e4437ed6010e88286f547fa90abfe4c3\"\n    }, {\n      a: \"114ca50f7a8e2f3f657c1108d9d44cfd8\",\n      b: \"3086d221a7d46bcde86c90e49284eb15\"\n    }],\n    gRed: false,\n    g: [\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\", \"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\", pre]\n  });\n  return exports$H$2;\n}\nvar exports$G$2 = {};\nvar _dewExec$F$2 = false;\nfunction dew$F$2() {\n  if (_dewExec$F$2) return exports$G$2;\n  _dewExec$F$2 = true;\n  var hash = dew$I$2();\n  var utils = dew$U$2();\n  var assert2 = dew$2m();\n  function HmacDRBG(options) {\n    if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n    this.hash = options.hash;\n    this.predResist = !!options.predResist;\n    this.outLen = this.hash.outSize;\n    this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n    this._reseed = null;\n    this.reseedInterval = null;\n    this.K = null;\n    this.V = null;\n    var entropy = utils.toArray(options.entropy, options.entropyEnc || \"hex\");\n    var nonce = utils.toArray(options.nonce, options.nonceEnc || \"hex\");\n    var pers = utils.toArray(options.pers, options.persEnc || \"hex\");\n    assert2(entropy.length >= this.minEntropy / 8, \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\");\n    this._init(entropy, nonce, pers);\n  }\n  exports$G$2 = HmacDRBG;\n  HmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n    var seed = entropy.concat(nonce).concat(pers);\n    this.K = new Array(this.outLen / 8);\n    this.V = new Array(this.outLen / 8);\n    for (var i5 = 0; i5 < this.V.length; i5++) {\n      this.K[i5] = 0;\n      this.V[i5] = 1;\n    }\n    this._update(seed);\n    this._reseed = 1;\n    this.reseedInterval = 281474976710656;\n  };\n  HmacDRBG.prototype._hmac = function hmac() {\n    return new hash.hmac(this.hash, this.K);\n  };\n  HmacDRBG.prototype._update = function update(seed) {\n    var kmac = this._hmac().update(this.V).update([0]);\n    if (seed) kmac = kmac.update(seed);\n    this.K = kmac.digest();\n    this.V = this._hmac().update(this.V).digest();\n    if (!seed) return;\n    this.K = this._hmac().update(this.V).update([1]).update(seed).digest();\n    this.V = this._hmac().update(this.V).digest();\n  };\n  HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n    if (typeof entropyEnc !== \"string\") {\n      addEnc = add;\n      add = entropyEnc;\n      entropyEnc = null;\n    }\n    entropy = utils.toArray(entropy, entropyEnc);\n    add = utils.toArray(add, addEnc);\n    assert2(entropy.length >= this.minEntropy / 8, \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\");\n    this._update(entropy.concat(add || []));\n    this._reseed = 1;\n  };\n  HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n    if (this._reseed > this.reseedInterval) throw new Error(\"Reseed is required\");\n    if (typeof enc !== \"string\") {\n      addEnc = add;\n      add = enc;\n      enc = null;\n    }\n    if (add) {\n      add = utils.toArray(add, addEnc || \"hex\");\n      this._update(add);\n    }\n    var temp = [];\n    while (temp.length < len) {\n      this.V = this._hmac().update(this.V).digest();\n      temp = temp.concat(this.V);\n    }\n    var res = temp.slice(0, len);\n    this._update(add);\n    this._reseed++;\n    return utils.encode(res, enc);\n  };\n  return exports$G$2;\n}\nvar exports$F$2 = {};\nvar _dewExec$E$2 = false;\nfunction dew$E$2() {\n  if (_dewExec$E$2) return exports$F$2;\n  _dewExec$E$2 = true;\n  var BN = dew$V$2();\n  var utils = dew$T$2();\n  var assert2 = utils.assert;\n  function KeyPair(ec, options) {\n    this.ec = ec;\n    this.priv = null;\n    this.pub = null;\n    if (options.priv) this._importPrivate(options.priv, options.privEnc);\n    if (options.pub) this._importPublic(options.pub, options.pubEnc);\n  }\n  exports$F$2 = KeyPair;\n  KeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n    if (pub instanceof KeyPair) return pub;\n    return new KeyPair(ec, {\n      pub,\n      pubEnc: enc\n    });\n  };\n  KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n    if (priv instanceof KeyPair) return priv;\n    return new KeyPair(ec, {\n      priv,\n      privEnc: enc\n    });\n  };\n  KeyPair.prototype.validate = function validate() {\n    var pub = this.getPublic();\n    if (pub.isInfinity()) return {\n      result: false,\n      reason: \"Invalid public key\"\n    };\n    if (!pub.validate()) return {\n      result: false,\n      reason: \"Public key is not a point\"\n    };\n    if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n      result: false,\n      reason: \"Public key * N != O\"\n    };\n    return {\n      result: true,\n      reason: null\n    };\n  };\n  KeyPair.prototype.getPublic = function getPublic(compact, enc) {\n    if (typeof compact === \"string\") {\n      enc = compact;\n      compact = null;\n    }\n    if (!this.pub) this.pub = this.ec.g.mul(this.priv);\n    if (!enc) return this.pub;\n    return this.pub.encode(enc, compact);\n  };\n  KeyPair.prototype.getPrivate = function getPrivate(enc) {\n    if (enc === \"hex\") return this.priv.toString(16, 2);\n    else return this.priv;\n  };\n  KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n    this.priv = new BN(key, enc || 16);\n    this.priv = this.priv.umod(this.ec.curve.n);\n  };\n  KeyPair.prototype._importPublic = function _importPublic(key, enc) {\n    if (key.x || key.y) {\n      if (this.ec.curve.type === \"mont\") {\n        assert2(key.x, \"Need x coordinate\");\n      } else if (this.ec.curve.type === \"short\" || this.ec.curve.type === \"edwards\") {\n        assert2(key.x && key.y, \"Need both x and y coordinate\");\n      }\n      this.pub = this.ec.curve.point(key.x, key.y);\n      return;\n    }\n    this.pub = this.ec.curve.decodePoint(key, enc);\n  };\n  KeyPair.prototype.derive = function derive(pub) {\n    if (!pub.validate()) {\n      assert2(pub.validate(), \"public point not validated\");\n    }\n    return pub.mul(this.priv).getX();\n  };\n  KeyPair.prototype.sign = function sign(msg, enc, options) {\n    return this.ec.sign(msg, this, enc, options);\n  };\n  KeyPair.prototype.verify = function verify(msg, signature) {\n    return this.ec.verify(msg, signature, this);\n  };\n  KeyPair.prototype.inspect = function inspect() {\n    return \"<Key priv: \" + (this.priv && this.priv.toString(16, 2)) + \" pub: \" + (this.pub && this.pub.inspect()) + \" >\";\n  };\n  return exports$F$2;\n}\nvar exports$E$2 = {};\nvar _dewExec$D$2 = false;\nfunction dew$D$2() {\n  if (_dewExec$D$2) return exports$E$2;\n  _dewExec$D$2 = true;\n  var BN = dew$V$2();\n  var utils = dew$T$2();\n  var assert2 = utils.assert;\n  function Signature(options, enc) {\n    if (options instanceof Signature) return options;\n    if (this._importDER(options, enc)) return;\n    assert2(options.r && options.s, \"Signature without r or s\");\n    this.r = new BN(options.r, 16);\n    this.s = new BN(options.s, 16);\n    if (options.recoveryParam === void 0) this.recoveryParam = null;\n    else this.recoveryParam = options.recoveryParam;\n  }\n  exports$E$2 = Signature;\n  function Position() {\n    this.place = 0;\n  }\n  function getLength(buf, p5) {\n    var initial = buf[p5.place++];\n    if (!(initial & 128)) {\n      return initial;\n    }\n    var octetLen = initial & 15;\n    if (octetLen === 0 || octetLen > 4) {\n      return false;\n    }\n    var val = 0;\n    for (var i5 = 0, off2 = p5.place; i5 < octetLen; i5++, off2++) {\n      val <<= 8;\n      val |= buf[off2];\n      val >>>= 0;\n    }\n    if (val <= 127) {\n      return false;\n    }\n    p5.place = off2;\n    return val;\n  }\n  function rmPadding(buf) {\n    var i5 = 0;\n    var len = buf.length - 1;\n    while (!buf[i5] && !(buf[i5 + 1] & 128) && i5 < len) {\n      i5++;\n    }\n    if (i5 === 0) {\n      return buf;\n    }\n    return buf.slice(i5);\n  }\n  Signature.prototype._importDER = function _importDER(data, enc) {\n    data = utils.toArray(data, enc);\n    var p5 = new Position();\n    if (data[p5.place++] !== 48) {\n      return false;\n    }\n    var len = getLength(data, p5);\n    if (len === false) {\n      return false;\n    }\n    if (len + p5.place !== data.length) {\n      return false;\n    }\n    if (data[p5.place++] !== 2) {\n      return false;\n    }\n    var rlen = getLength(data, p5);\n    if (rlen === false) {\n      return false;\n    }\n    var r5 = data.slice(p5.place, rlen + p5.place);\n    p5.place += rlen;\n    if (data[p5.place++] !== 2) {\n      return false;\n    }\n    var slen = getLength(data, p5);\n    if (slen === false) {\n      return false;\n    }\n    if (data.length !== slen + p5.place) {\n      return false;\n    }\n    var s5 = data.slice(p5.place, slen + p5.place);\n    if (r5[0] === 0) {\n      if (r5[1] & 128) {\n        r5 = r5.slice(1);\n      } else {\n        return false;\n      }\n    }\n    if (s5[0] === 0) {\n      if (s5[1] & 128) {\n        s5 = s5.slice(1);\n      } else {\n        return false;\n      }\n    }\n    this.r = new BN(r5);\n    this.s = new BN(s5);\n    this.recoveryParam = null;\n    return true;\n  };\n  function constructLength(arr, len) {\n    if (len < 128) {\n      arr.push(len);\n      return;\n    }\n    var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n    arr.push(octets | 128);\n    while (--octets) {\n      arr.push(len >>> (octets << 3) & 255);\n    }\n    arr.push(len);\n  }\n  Signature.prototype.toDER = function toDER(enc) {\n    var r5 = this.r.toArray();\n    var s5 = this.s.toArray();\n    if (r5[0] & 128) r5 = [0].concat(r5);\n    if (s5[0] & 128) s5 = [0].concat(s5);\n    r5 = rmPadding(r5);\n    s5 = rmPadding(s5);\n    while (!s5[0] && !(s5[1] & 128)) {\n      s5 = s5.slice(1);\n    }\n    var arr = [2];\n    constructLength(arr, r5.length);\n    arr = arr.concat(r5);\n    arr.push(2);\n    constructLength(arr, s5.length);\n    var backHalf = arr.concat(s5);\n    var res = [48];\n    constructLength(res, backHalf.length);\n    res = res.concat(backHalf);\n    return utils.encode(res, enc);\n  };\n  return exports$E$2;\n}\nvar exports$D$2 = {};\nvar _dewExec$C$2 = false;\nfunction dew$C$2() {\n  if (_dewExec$C$2) return exports$D$2;\n  _dewExec$C$2 = true;\n  var BN = dew$V$2();\n  var HmacDRBG = dew$F$2();\n  var utils = dew$T$2();\n  var curves = dew$G$2();\n  var rand = dew$11$2();\n  var assert2 = utils.assert;\n  var KeyPair = dew$E$2();\n  var Signature = dew$D$2();\n  function EC(options) {\n    if (!(this instanceof EC)) return new EC(options);\n    if (typeof options === \"string\") {\n      assert2(Object.prototype.hasOwnProperty.call(curves, options), \"Unknown curve \" + options);\n      options = curves[options];\n    }\n    if (options instanceof curves.PresetCurve) options = {\n      curve: options\n    };\n    this.curve = options.curve.curve;\n    this.n = this.curve.n;\n    this.nh = this.n.ushrn(1);\n    this.g = this.curve.g;\n    this.g = options.curve.g;\n    this.g.precompute(options.curve.n.bitLength() + 1);\n    this.hash = options.hash || options.curve.hash;\n  }\n  exports$D$2 = EC;\n  EC.prototype.keyPair = function keyPair(options) {\n    return new KeyPair(this, options);\n  };\n  EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n    return KeyPair.fromPrivate(this, priv, enc);\n  };\n  EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n    return KeyPair.fromPublic(this, pub, enc);\n  };\n  EC.prototype.genKeyPair = function genKeyPair(options) {\n    if (!options) options = {};\n    var drbg = new HmacDRBG({\n      hash: this.hash,\n      pers: options.pers,\n      persEnc: options.persEnc || \"utf8\",\n      entropy: options.entropy || rand(this.hash.hmacStrength),\n      entropyEnc: options.entropy && options.entropyEnc || \"utf8\",\n      nonce: this.n.toArray()\n    });\n    var bytes = this.n.byteLength();\n    var ns2 = this.n.sub(new BN(2));\n    for (; ; ) {\n      var priv = new BN(drbg.generate(bytes));\n      if (priv.cmp(ns2) > 0) continue;\n      priv.iaddn(1);\n      return this.keyFromPrivate(priv);\n    }\n  };\n  EC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n    var delta = msg.byteLength() * 8 - this.n.bitLength();\n    if (delta > 0) msg = msg.ushrn(delta);\n    if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);\n    else return msg;\n  };\n  EC.prototype.sign = function sign(msg, key, enc, options) {\n    if (typeof enc === \"object\") {\n      options = enc;\n      enc = null;\n    }\n    if (!options) options = {};\n    key = this.keyFromPrivate(key, enc);\n    msg = this._truncateToN(new BN(msg, 16));\n    var bytes = this.n.byteLength();\n    var bkey = key.getPrivate().toArray(\"be\", bytes);\n    var nonce = msg.toArray(\"be\", bytes);\n    var drbg = new HmacDRBG({\n      hash: this.hash,\n      entropy: bkey,\n      nonce,\n      pers: options.pers,\n      persEnc: options.persEnc || \"utf8\"\n    });\n    var ns1 = this.n.sub(new BN(1));\n    for (var iter = 0; ; iter++) {\n      var k4 = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n      k4 = this._truncateToN(k4, true);\n      if (k4.cmpn(1) <= 0 || k4.cmp(ns1) >= 0) continue;\n      var kp = this.g.mul(k4);\n      if (kp.isInfinity()) continue;\n      var kpX = kp.getX();\n      var r5 = kpX.umod(this.n);\n      if (r5.cmpn(0) === 0) continue;\n      var s5 = k4.invm(this.n).mul(r5.mul(key.getPrivate()).iadd(msg));\n      s5 = s5.umod(this.n);\n      if (s5.cmpn(0) === 0) continue;\n      var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r5) !== 0 ? 2 : 0);\n      if (options.canonical && s5.cmp(this.nh) > 0) {\n        s5 = this.n.sub(s5);\n        recoveryParam ^= 1;\n      }\n      return new Signature({\n        r: r5,\n        s: s5,\n        recoveryParam\n      });\n    }\n  };\n  EC.prototype.verify = function verify(msg, signature, key, enc) {\n    msg = this._truncateToN(new BN(msg, 16));\n    key = this.keyFromPublic(key, enc);\n    signature = new Signature(signature, \"hex\");\n    var r5 = signature.r;\n    var s5 = signature.s;\n    if (r5.cmpn(1) < 0 || r5.cmp(this.n) >= 0) return false;\n    if (s5.cmpn(1) < 0 || s5.cmp(this.n) >= 0) return false;\n    var sinv = s5.invm(this.n);\n    var u1 = sinv.mul(msg).umod(this.n);\n    var u22 = sinv.mul(r5).umod(this.n);\n    var p5;\n    if (!this.curve._maxwellTrick) {\n      p5 = this.g.mulAdd(u1, key.getPublic(), u22);\n      if (p5.isInfinity()) return false;\n      return p5.getX().umod(this.n).cmp(r5) === 0;\n    }\n    p5 = this.g.jmulAdd(u1, key.getPublic(), u22);\n    if (p5.isInfinity()) return false;\n    return p5.eqXToP(r5);\n  };\n  EC.prototype.recoverPubKey = function(msg, signature, j4, enc) {\n    assert2((3 & j4) === j4, \"The recovery param is more than two bits\");\n    signature = new Signature(signature, enc);\n    var n5 = this.n;\n    var e7 = new BN(msg);\n    var r5 = signature.r;\n    var s5 = signature.s;\n    var isYOdd = j4 & 1;\n    var isSecondKey = j4 >> 1;\n    if (r5.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error(\"Unable to find sencond key candinate\");\n    if (isSecondKey) r5 = this.curve.pointFromX(r5.add(this.curve.n), isYOdd);\n    else r5 = this.curve.pointFromX(r5, isYOdd);\n    var rInv = signature.r.invm(n5);\n    var s1 = n5.sub(e7).mul(rInv).umod(n5);\n    var s22 = s5.mul(rInv).umod(n5);\n    return this.g.mulAdd(s1, r5, s22);\n  };\n  EC.prototype.getKeyRecoveryParam = function(e7, signature, Q3, enc) {\n    signature = new Signature(signature, enc);\n    if (signature.recoveryParam !== null) return signature.recoveryParam;\n    for (var i5 = 0; i5 < 4; i5++) {\n      var Qprime;\n      try {\n        Qprime = this.recoverPubKey(e7, signature, i5);\n      } catch (e8) {\n        continue;\n      }\n      if (Qprime.eq(Q3)) return i5;\n    }\n    throw new Error(\"Unable to find valid recovery factor\");\n  };\n  return exports$D$2;\n}\nvar exports$C$2 = {};\nvar _dewExec$B$2 = false;\nfunction dew$B$2() {\n  if (_dewExec$B$2) return exports$C$2;\n  _dewExec$B$2 = true;\n  var utils = dew$T$2();\n  var assert2 = utils.assert;\n  var parseBytes = utils.parseBytes;\n  var cachedProperty = utils.cachedProperty;\n  function KeyPair(eddsa, params) {\n    this.eddsa = eddsa;\n    this._secret = parseBytes(params.secret);\n    if (eddsa.isPoint(params.pub)) this._pub = params.pub;\n    else this._pubBytes = parseBytes(params.pub);\n  }\n  KeyPair.fromPublic = function fromPublic(eddsa, pub) {\n    if (pub instanceof KeyPair) return pub;\n    return new KeyPair(eddsa, {\n      pub\n    });\n  };\n  KeyPair.fromSecret = function fromSecret(eddsa, secret) {\n    if (secret instanceof KeyPair) return secret;\n    return new KeyPair(eddsa, {\n      secret\n    });\n  };\n  KeyPair.prototype.secret = function secret() {\n    return this._secret;\n  };\n  cachedProperty(KeyPair, \"pubBytes\", function pubBytes() {\n    return this.eddsa.encodePoint(this.pub());\n  });\n  cachedProperty(KeyPair, \"pub\", function pub() {\n    if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n    return this.eddsa.g.mul(this.priv());\n  });\n  cachedProperty(KeyPair, \"privBytes\", function privBytes() {\n    var eddsa = this.eddsa;\n    var hash = this.hash();\n    var lastIx = eddsa.encodingLength - 1;\n    var a5 = hash.slice(0, eddsa.encodingLength);\n    a5[0] &= 248;\n    a5[lastIx] &= 127;\n    a5[lastIx] |= 64;\n    return a5;\n  });\n  cachedProperty(KeyPair, \"priv\", function priv() {\n    return this.eddsa.decodeInt(this.privBytes());\n  });\n  cachedProperty(KeyPair, \"hash\", function hash() {\n    return this.eddsa.hash().update(this.secret()).digest();\n  });\n  cachedProperty(KeyPair, \"messagePrefix\", function messagePrefix() {\n    return this.hash().slice(this.eddsa.encodingLength);\n  });\n  KeyPair.prototype.sign = function sign(message) {\n    assert2(this._secret, \"KeyPair can only verify\");\n    return this.eddsa.sign(message, this);\n  };\n  KeyPair.prototype.verify = function verify(message, sig) {\n    return this.eddsa.verify(message, sig, this);\n  };\n  KeyPair.prototype.getSecret = function getSecret(enc) {\n    assert2(this._secret, \"KeyPair is public only\");\n    return utils.encode(this.secret(), enc);\n  };\n  KeyPair.prototype.getPublic = function getPublic(enc) {\n    return utils.encode(this.pubBytes(), enc);\n  };\n  exports$C$2 = KeyPair;\n  return exports$C$2;\n}\nvar exports$B$2 = {};\nvar _dewExec$A$2 = false;\nfunction dew$A$2() {\n  if (_dewExec$A$2) return exports$B$2;\n  _dewExec$A$2 = true;\n  var BN = dew$V$2();\n  var utils = dew$T$2();\n  var assert2 = utils.assert;\n  var cachedProperty = utils.cachedProperty;\n  var parseBytes = utils.parseBytes;\n  function Signature(eddsa, sig) {\n    this.eddsa = eddsa;\n    if (typeof sig !== \"object\") sig = parseBytes(sig);\n    if (Array.isArray(sig)) {\n      sig = {\n        R: sig.slice(0, eddsa.encodingLength),\n        S: sig.slice(eddsa.encodingLength)\n      };\n    }\n    assert2(sig.R && sig.S, \"Signature without R or S\");\n    if (eddsa.isPoint(sig.R)) this._R = sig.R;\n    if (sig.S instanceof BN) this._S = sig.S;\n    this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n    this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n  }\n  cachedProperty(Signature, \"S\", function S4() {\n    return this.eddsa.decodeInt(this.Sencoded());\n  });\n  cachedProperty(Signature, \"R\", function R4() {\n    return this.eddsa.decodePoint(this.Rencoded());\n  });\n  cachedProperty(Signature, \"Rencoded\", function Rencoded() {\n    return this.eddsa.encodePoint(this.R());\n  });\n  cachedProperty(Signature, \"Sencoded\", function Sencoded() {\n    return this.eddsa.encodeInt(this.S());\n  });\n  Signature.prototype.toBytes = function toBytes() {\n    return this.Rencoded().concat(this.Sencoded());\n  };\n  Signature.prototype.toHex = function toHex() {\n    return utils.encode(this.toBytes(), \"hex\").toUpperCase();\n  };\n  exports$B$2 = Signature;\n  return exports$B$2;\n}\nvar exports$A$2 = {};\nvar _dewExec$z$2 = false;\nfunction dew$z$2() {\n  if (_dewExec$z$2) return exports$A$2;\n  _dewExec$z$2 = true;\n  var hash = dew$I$2();\n  var curves = dew$G$2();\n  var utils = dew$T$2();\n  var assert2 = utils.assert;\n  var parseBytes = utils.parseBytes;\n  var KeyPair = dew$B$2();\n  var Signature = dew$A$2();\n  function EDDSA(curve) {\n    assert2(curve === \"ed25519\", \"only tested with ed25519 so far\");\n    if (!(this instanceof EDDSA)) return new EDDSA(curve);\n    curve = curves[curve].curve;\n    this.curve = curve;\n    this.g = curve.g;\n    this.g.precompute(curve.n.bitLength() + 1);\n    this.pointClass = curve.point().constructor;\n    this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n    this.hash = hash.sha512;\n  }\n  exports$A$2 = EDDSA;\n  EDDSA.prototype.sign = function sign(message, secret) {\n    message = parseBytes(message);\n    var key = this.keyFromSecret(secret);\n    var r5 = this.hashInt(key.messagePrefix(), message);\n    var R4 = this.g.mul(r5);\n    var Rencoded = this.encodePoint(R4);\n    var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());\n    var S4 = r5.add(s_).umod(this.curve.n);\n    return this.makeSignature({\n      R: R4,\n      S: S4,\n      Rencoded\n    });\n  };\n  EDDSA.prototype.verify = function verify(message, sig, pub) {\n    message = parseBytes(message);\n    sig = this.makeSignature(sig);\n    var key = this.keyFromPublic(pub);\n    var h5 = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n    var SG = this.g.mul(sig.S());\n    var RplusAh = sig.R().add(key.pub().mul(h5));\n    return RplusAh.eq(SG);\n  };\n  EDDSA.prototype.hashInt = function hashInt() {\n    var hash2 = this.hash();\n    for (var i5 = 0; i5 < arguments.length; i5++) hash2.update(arguments[i5]);\n    return utils.intFromLE(hash2.digest()).umod(this.curve.n);\n  };\n  EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n    return KeyPair.fromPublic(this, pub);\n  };\n  EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n    return KeyPair.fromSecret(this, secret);\n  };\n  EDDSA.prototype.makeSignature = function makeSignature(sig) {\n    if (sig instanceof Signature) return sig;\n    return new Signature(this, sig);\n  };\n  EDDSA.prototype.encodePoint = function encodePoint(point) {\n    var enc = point.getY().toArray(\"le\", this.encodingLength);\n    enc[this.encodingLength - 1] |= point.getX().isOdd() ? 128 : 0;\n    return enc;\n  };\n  EDDSA.prototype.decodePoint = function decodePoint(bytes) {\n    bytes = utils.parseBytes(bytes);\n    var lastIx = bytes.length - 1;\n    var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~128);\n    var xIsOdd = (bytes[lastIx] & 128) !== 0;\n    var y5 = utils.intFromLE(normed);\n    return this.curve.pointFromY(y5, xIsOdd);\n  };\n  EDDSA.prototype.encodeInt = function encodeInt(num) {\n    return num.toArray(\"le\", this.encodingLength);\n  };\n  EDDSA.prototype.decodeInt = function decodeInt(bytes) {\n    return utils.intFromLE(bytes);\n  };\n  EDDSA.prototype.isPoint = function isPoint(val) {\n    return val instanceof this.pointClass;\n  };\n  return exports$A$2;\n}\nvar exports$z$2 = {};\nvar _dewExec$y$2 = false;\nfunction dew$y$2() {\n  if (_dewExec$y$2) return exports$z$2;\n  _dewExec$y$2 = true;\n  var elliptic = exports$z$2;\n  elliptic.version = _package$2.version;\n  elliptic.utils = dew$T$2();\n  elliptic.rand = dew$11$2();\n  elliptic.curve = dew$O$2();\n  elliptic.curves = dew$G$2();\n  elliptic.ec = dew$C$2();\n  elliptic.eddsa = dew$z$2();\n  return exports$z$2;\n}\nvar exports$y$2 = {};\nvar _dewExec$x$2 = false;\nvar module$2$2 = {\n  exports: exports$y$2\n};\nvar _global$5$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$x$2() {\n  if (_dewExec$x$2) return module$2$2.exports;\n  _dewExec$x$2 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$5$2).negative = 0;\n      (this || _global$5$2).words = null;\n      (this || _global$5$2).length = 0;\n      (this || _global$5$2).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = buffer.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$5$2).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$5$2).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$5$2).words = [number & 67108863];\n        (this || _global$5$2).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$5$2).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$5$2).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$5$2).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$5$2).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$5$2).words = [0];\n        (this || _global$5$2).length = 1;\n        return this || _global$5$2;\n      }\n      (this || _global$5$2).length = Math.ceil(number.length / 3);\n      (this || _global$5$2).words = new Array((this || _global$5$2).length);\n      for (var i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n        (this || _global$5$2).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$5$2).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$5$2).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$5$2).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$5$2).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$5$2).length = Math.ceil((number.length - start) / 6);\n      (this || _global$5$2).words = new Array((this || _global$5$2).length);\n      for (var i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n        (this || _global$5$2).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$5$2).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$5$2).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$5$2).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$5$2).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$5$2).words = [0];\n      (this || _global$5$2).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$5$2).words[0] + word < 67108864) {\n          (this || _global$5$2).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$5$2).words[0] + word < 67108864) {\n          (this || _global$5$2).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$5$2).length);\n      for (var i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n        dest.words[i5] = (this || _global$5$2).words[i5];\n      }\n      dest.length = (this || _global$5$2).length;\n      dest.negative = (this || _global$5$2).negative;\n      dest.red = (this || _global$5$2).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$5$2).length < size) {\n        (this || _global$5$2).words[(this || _global$5$2).length++] = 0;\n      }\n      return this || _global$5$2;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$5$2).length > 1 && (this || _global$5$2).words[(this || _global$5$2).length - 1] === 0) {\n        (this || _global$5$2).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$5$2).length === 1 && (this || _global$5$2).words[0] === 0) {\n        (this || _global$5$2).negative = 0;\n      }\n      return this || _global$5$2;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$5$2).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n          var w4 = (this || _global$5$2).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$5$2).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$5$2).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$5$2).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$5$2).words[0];\n      if ((this || _global$5$2).length === 2) {\n        ret += (this || _global$5$2).words[1] * 67108864;\n      } else if ((this || _global$5$2).length === 3 && (this || _global$5$2).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$5$2).words[1] * 67108864;\n      } else if ((this || _global$5$2).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$5$2).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$5$2).words[(this || _global$5$2).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$5$2).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n        var b4 = this._zeroBits((this || _global$5$2).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$5$2).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$5$2).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$5$2).negative ^= 1;\n      }\n      return this || _global$5$2;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$5$2).length < num.length) {\n        (this || _global$5$2).words[(this || _global$5$2).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$5$2).words[i5] = (this || _global$5$2).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$5$2).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$5$2).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$5$2);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$5$2).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$5$2);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$5$2).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$5$2;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$5$2).words[i5] = (this || _global$5$2).words[i5] & num.words[i5];\n      }\n      (this || _global$5$2).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$5$2).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$5$2).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$5$2);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$5$2).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$5$2);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$5$2).length > num.length) {\n        a5 = this || _global$5$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$5$2;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$5$2).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$5$2) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$5$2).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$5$2).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$5$2).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$5$2).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$5$2);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$5$2).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$5$2);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$5$2).words[i5] = ~(this || _global$5$2).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$5$2).words[i5] = ~(this || _global$5$2).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$5$2).words[off2] = (this || _global$5$2).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$5$2).words[off2] = (this || _global$5$2).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$5$2).negative !== 0 && num.negative === 0) {\n        (this || _global$5$2).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$5$2).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$5$2).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$5$2).length > num.length) {\n        a5 = this || _global$5$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$5$2;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$5$2).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$5$2).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$5$2).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$5$2).words[(this || _global$5$2).length] = carry;\n        (this || _global$5$2).length++;\n      } else if (a5 !== (this || _global$5$2)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$5$2).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$5$2;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$5$2).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$5$2).negative !== 0) {\n        (this || _global$5$2).negative = 0;\n        res = num.sub(this || _global$5$2);\n        (this || _global$5$2).negative = 1;\n        return res;\n      }\n      if ((this || _global$5$2).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$5$2);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$5$2).negative !== 0) {\n        (this || _global$5$2).negative = 0;\n        this.iadd(num);\n        (this || _global$5$2).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$5$2).negative = 0;\n        (this || _global$5$2).length = 1;\n        (this || _global$5$2).words[0] = 0;\n        return this || _global$5$2;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$5$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$5$2;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$5$2).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$5$2).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$5$2)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$5$2).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$5$2).length = Math.max((this || _global$5$2).length, i5);\n      if (a5 !== (this || _global$5$2)) {\n        (this || _global$5$2).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$5$2).length + num.length;\n      if ((this || _global$5$2).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$5$2, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$5$2, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$5$2, num, out);\n      } else {\n        res = jumboMulTo(this || _global$5$2, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$5$2).x = x4;\n      (this || _global$5$2).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$5$2).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$5$2).length + num.length);\n      return jumboMulTo(this || _global$5$2, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$5$2);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n        var w4 = ((this || _global$5$2).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$5$2).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$5$2).words[i5] = carry;\n        (this || _global$5$2).length++;\n      }\n      return this || _global$5$2;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$5$2);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$5$2;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n          var newCarry = (this || _global$5$2).words[i5] & carryMask;\n          var c5 = ((this || _global$5$2).words[i5] | 0) - newCarry << r5;\n          (this || _global$5$2).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$5$2).words[i5] = carry;\n          (this || _global$5$2).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$5$2).length - 1; i5 >= 0; i5--) {\n          (this || _global$5$2).words[i5 + s5] = (this || _global$5$2).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$5$2).words[i5] = 0;\n        }\n        (this || _global$5$2).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$5$2).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$5$2).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$5$2).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$5$2).length > s5) {\n        (this || _global$5$2).length -= s5;\n        for (i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n          (this || _global$5$2).words[i5] = (this || _global$5$2).words[i5 + s5];\n        }\n      } else {\n        (this || _global$5$2).words[0] = 0;\n        (this || _global$5$2).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$5$2).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$5$2).words[i5] | 0;\n        (this || _global$5$2).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$5$2).length === 0) {\n        (this || _global$5$2).words[0] = 0;\n        (this || _global$5$2).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$5$2).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$5$2).length <= s5) return false;\n      var w4 = (this || _global$5$2).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$5$2).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$5$2).length <= s5) {\n        return this || _global$5$2;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$5$2).length = Math.min(s5, (this || _global$5$2).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$5$2).words[(this || _global$5$2).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$5$2).negative !== 0) {\n        if ((this || _global$5$2).length === 1 && ((this || _global$5$2).words[0] | 0) < num) {\n          (this || _global$5$2).words[0] = num - ((this || _global$5$2).words[0] | 0);\n          (this || _global$5$2).negative = 0;\n          return this || _global$5$2;\n        }\n        (this || _global$5$2).negative = 0;\n        this.isubn(num);\n        (this || _global$5$2).negative = 1;\n        return this || _global$5$2;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$5$2).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$5$2).length && (this || _global$5$2).words[i5] >= 67108864; i5++) {\n        (this || _global$5$2).words[i5] -= 67108864;\n        if (i5 === (this || _global$5$2).length - 1) {\n          (this || _global$5$2).words[i5 + 1] = 1;\n        } else {\n          (this || _global$5$2).words[i5 + 1]++;\n        }\n      }\n      (this || _global$5$2).length = Math.max((this || _global$5$2).length, i5 + 1);\n      return this || _global$5$2;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$5$2).negative !== 0) {\n        (this || _global$5$2).negative = 0;\n        this.iaddn(num);\n        (this || _global$5$2).negative = 1;\n        return this || _global$5$2;\n      }\n      (this || _global$5$2).words[0] -= num;\n      if ((this || _global$5$2).length === 1 && (this || _global$5$2).words[0] < 0) {\n        (this || _global$5$2).words[0] = -(this || _global$5$2).words[0];\n        (this || _global$5$2).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$5$2).length && (this || _global$5$2).words[i5] < 0; i5++) {\n          (this || _global$5$2).words[i5] += 67108864;\n          (this || _global$5$2).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$5$2).negative = 0;\n      return this || _global$5$2;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$5$2).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$5$2).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$5$2).length - shift; i5++) {\n        w4 = ((this || _global$5$2).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$5$2).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$5$2).length; i5++) {\n        w4 = -((this || _global$5$2).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$5$2).words[i5] = w4 & 67108863;\n      }\n      (this || _global$5$2).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$5$2).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$5$2).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$5$2).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$5$2).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$5$2).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$5$2\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$5$2).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$5$2).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$5$2).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$5$2).words[i5] | 0) + carry * 67108864;\n        (this || _global$5$2).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$5$2;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$5$2;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$5$2).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$5$2).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$5$2).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$5$2).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$5$2).words[s5] |= q3;\n        return this || _global$5$2;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$5$2).length; i5++) {\n        var w4 = (this || _global$5$2).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$5$2).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$5$2).words[i5] = carry;\n        (this || _global$5$2).length++;\n      }\n      return this || _global$5$2;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$5$2).length === 1 && (this || _global$5$2).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$5$2).negative !== 0 && !negative) return -1;\n      if ((this || _global$5$2).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$5$2).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$5$2).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$5$2).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$5$2).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$5$2).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$5$2).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$5$2).length > num.length) return 1;\n      if ((this || _global$5$2).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$5$2).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$5$2).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$5$2).red, \"Already a number in reduction context\");\n      assert2((this || _global$5$2).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$5$2)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$5$2).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$5$2).red.convertFrom(this || _global$5$2);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$5$2).red = ctx;\n      return this || _global$5$2;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$5$2).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$5$2).red, \"redAdd works only with red numbers\");\n      return (this || _global$5$2).red.add(this || _global$5$2, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$5$2).red, \"redIAdd works only with red numbers\");\n      return (this || _global$5$2).red.iadd(this || _global$5$2, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$5$2).red, \"redSub works only with red numbers\");\n      return (this || _global$5$2).red.sub(this || _global$5$2, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$5$2).red, \"redISub works only with red numbers\");\n      return (this || _global$5$2).red.isub(this || _global$5$2, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$5$2).red, \"redShl works only with red numbers\");\n      return (this || _global$5$2).red.shl(this || _global$5$2, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$5$2).red, \"redMul works only with red numbers\");\n      (this || _global$5$2).red._verify2(this || _global$5$2, num);\n      return (this || _global$5$2).red.mul(this || _global$5$2, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$5$2).red, \"redMul works only with red numbers\");\n      (this || _global$5$2).red._verify2(this || _global$5$2, num);\n      return (this || _global$5$2).red.imul(this || _global$5$2, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$5$2).red, \"redSqr works only with red numbers\");\n      (this || _global$5$2).red._verify1(this || _global$5$2);\n      return (this || _global$5$2).red.sqr(this || _global$5$2);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$5$2).red, \"redISqr works only with red numbers\");\n      (this || _global$5$2).red._verify1(this || _global$5$2);\n      return (this || _global$5$2).red.isqr(this || _global$5$2);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$5$2).red, \"redSqrt works only with red numbers\");\n      (this || _global$5$2).red._verify1(this || _global$5$2);\n      return (this || _global$5$2).red.sqrt(this || _global$5$2);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$5$2).red, \"redInvm works only with red numbers\");\n      (this || _global$5$2).red._verify1(this || _global$5$2);\n      return (this || _global$5$2).red.invm(this || _global$5$2);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$5$2).red, \"redNeg works only with red numbers\");\n      (this || _global$5$2).red._verify1(this || _global$5$2);\n      return (this || _global$5$2).red.neg(this || _global$5$2);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$5$2).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$5$2).red._verify1(this || _global$5$2);\n      return (this || _global$5$2).red.pow(this || _global$5$2, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$5$2).name = name2;\n      (this || _global$5$2).p = new BN(p5, 16);\n      (this || _global$5$2).n = (this || _global$5$2).p.bitLength();\n      (this || _global$5$2).k = new BN(1).iushln((this || _global$5$2).n).isub((this || _global$5$2).p);\n      (this || _global$5$2).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$5$2).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$5$2).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$5$2).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$5$2).n);\n      var cmp = rlen < (this || _global$5$2).n ? -1 : r5.ucmp((this || _global$5$2).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$5$2).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$5$2).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$5$2).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$5$2, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$5$2, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$5$2, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$5$2, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$5$2).m = prime.p;\n        (this || _global$5$2).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$5$2).m = m4;\n        (this || _global$5$2).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$5$2).prime) return (this || _global$5$2).prime.ireduce(a5)._forceRed(this || _global$5$2);\n      return a5.umod((this || _global$5$2).m)._forceRed(this || _global$5$2);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$5$2).m.sub(a5)._forceRed(this || _global$5$2);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$5$2).m) >= 0) {\n        res.isub((this || _global$5$2).m);\n      }\n      return res._forceRed(this || _global$5$2);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$5$2).m) >= 0) {\n        res.isub((this || _global$5$2).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$5$2).m);\n      }\n      return res._forceRed(this || _global$5$2);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$5$2).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$5$2).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$5$2).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$5$2).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$5$2);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$5$2).m.subn(1).iushrn(1);\n      var z4 = (this || _global$5$2).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$5$2);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$5$2).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$5$2);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$5$2);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$5$2).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$5$2, m4);\n      (this || _global$5$2).shift = (this || _global$5$2).m.bitLength();\n      if ((this || _global$5$2).shift % 26 !== 0) {\n        (this || _global$5$2).shift += 26 - (this || _global$5$2).shift % 26;\n      }\n      (this || _global$5$2).r = new BN(1).iushln((this || _global$5$2).shift);\n      (this || _global$5$2).r2 = this.imod((this || _global$5$2).r.sqr());\n      (this || _global$5$2).rinv = (this || _global$5$2).r._invmp((this || _global$5$2).m);\n      (this || _global$5$2).minv = (this || _global$5$2).rinv.mul((this || _global$5$2).r).isubn(1).div((this || _global$5$2).m);\n      (this || _global$5$2).minv = (this || _global$5$2).minv.umod((this || _global$5$2).r);\n      (this || _global$5$2).minv = (this || _global$5$2).r.sub((this || _global$5$2).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$5$2).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$5$2).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$5$2).shift).mul((this || _global$5$2).minv).imaskn((this || _global$5$2).shift).mul((this || _global$5$2).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$5$2).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$5$2).m) >= 0) {\n        res = u5.isub((this || _global$5$2).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$5$2).m);\n      }\n      return res._forceRed(this || _global$5$2);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$5$2);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$5$2).shift).mul((this || _global$5$2).minv).imaskn((this || _global$5$2).shift).mul((this || _global$5$2).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$5$2).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$5$2).m) >= 0) {\n        res = u5.isub((this || _global$5$2).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$5$2).m);\n      }\n      return res._forceRed(this || _global$5$2);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$5$2).m).mul((this || _global$5$2).r2));\n      return res._forceRed(this || _global$5$2);\n    };\n  })(module$2$2, exports$y$2);\n  return module$2$2.exports;\n}\nvar exports$x$2 = {};\nvar _dewExec$w$2 = false;\nfunction dew$w$2() {\n  if (_dewExec$w$2) return exports$x$2;\n  _dewExec$w$2 = true;\n  var process$1$1 = process2;\n  var buffer$1 = buffer;\n  var Buffer = buffer$1.Buffer;\n  var safer = {};\n  var key;\n  for (key in buffer$1) {\n    if (!buffer$1.hasOwnProperty(key)) continue;\n    if (key === \"SlowBuffer\" || key === \"Buffer\") continue;\n    safer[key] = buffer$1[key];\n  }\n  var Safer = safer.Buffer = {};\n  for (key in Buffer) {\n    if (!Buffer.hasOwnProperty(key)) continue;\n    if (key === \"allocUnsafe\" || key === \"allocUnsafeSlow\") continue;\n    Safer[key] = Buffer[key];\n  }\n  safer.Buffer.prototype = Buffer.prototype;\n  if (!Safer.from || Safer.from === Uint8Array.from) {\n    Safer.from = function(value, encodingOrOffset, length) {\n      if (typeof value === \"number\") {\n        throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value);\n      }\n      if (value && typeof value.length === \"undefined\") {\n        throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \" + typeof value);\n      }\n      return Buffer(value, encodingOrOffset, length);\n    };\n  }\n  if (!Safer.alloc) {\n    Safer.alloc = function(size, fill, encoding) {\n      if (typeof size !== \"number\") {\n        throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size);\n      }\n      if (size < 0 || size >= 2 * (1 << 30)) {\n        throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n      }\n      var buf = Buffer(size);\n      if (!fill || fill.length === 0) {\n        buf.fill(0);\n      } else if (typeof encoding === \"string\") {\n        buf.fill(fill, encoding);\n      } else {\n        buf.fill(fill);\n      }\n      return buf;\n    };\n  }\n  if (!safer.kStringMaxLength) {\n    try {\n      safer.kStringMaxLength = process$1$1.binding(\"buffer\").kStringMaxLength;\n    } catch (e7) {\n    }\n  }\n  if (!safer.constants) {\n    safer.constants = {\n      MAX_LENGTH: safer.kMaxLength\n    };\n    if (safer.kStringMaxLength) {\n      safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength;\n    }\n  }\n  exports$x$2 = safer;\n  return exports$x$2;\n}\nvar exports$w$2 = {};\nvar _dewExec$v$2 = false;\nfunction dew$v$2() {\n  if (_dewExec$v$2) return exports$w$2;\n  _dewExec$v$2 = true;\n  const inherits = dew$f();\n  function Reporter(options) {\n    this._reporterState = {\n      obj: null,\n      path: [],\n      options: options || {},\n      errors: []\n    };\n  }\n  exports$w$2.Reporter = Reporter;\n  Reporter.prototype.isError = function isError(obj) {\n    return obj instanceof ReporterError;\n  };\n  Reporter.prototype.save = function save() {\n    const state = this._reporterState;\n    return {\n      obj: state.obj,\n      pathLen: state.path.length\n    };\n  };\n  Reporter.prototype.restore = function restore(data) {\n    const state = this._reporterState;\n    state.obj = data.obj;\n    state.path = state.path.slice(0, data.pathLen);\n  };\n  Reporter.prototype.enterKey = function enterKey(key) {\n    return this._reporterState.path.push(key);\n  };\n  Reporter.prototype.exitKey = function exitKey(index) {\n    const state = this._reporterState;\n    state.path = state.path.slice(0, index - 1);\n  };\n  Reporter.prototype.leaveKey = function leaveKey(index, key, value) {\n    const state = this._reporterState;\n    this.exitKey(index);\n    if (state.obj !== null) state.obj[key] = value;\n  };\n  Reporter.prototype.path = function path() {\n    return this._reporterState.path.join(\"/\");\n  };\n  Reporter.prototype.enterObject = function enterObject() {\n    const state = this._reporterState;\n    const prev = state.obj;\n    state.obj = {};\n    return prev;\n  };\n  Reporter.prototype.leaveObject = function leaveObject(prev) {\n    const state = this._reporterState;\n    const now = state.obj;\n    state.obj = prev;\n    return now;\n  };\n  Reporter.prototype.error = function error(msg) {\n    let err;\n    const state = this._reporterState;\n    const inherited = msg instanceof ReporterError;\n    if (inherited) {\n      err = msg;\n    } else {\n      err = new ReporterError(state.path.map(function(elem) {\n        return \"[\" + JSON.stringify(elem) + \"]\";\n      }).join(\"\"), msg.message || msg, msg.stack);\n    }\n    if (!state.options.partial) throw err;\n    if (!inherited) state.errors.push(err);\n    return err;\n  };\n  Reporter.prototype.wrapResult = function wrapResult(result) {\n    const state = this._reporterState;\n    if (!state.options.partial) return result;\n    return {\n      result: this.isError(result) ? null : result,\n      errors: state.errors\n    };\n  };\n  function ReporterError(path, msg) {\n    this.path = path;\n    this.rethrow(msg);\n  }\n  inherits(ReporterError, Error);\n  ReporterError.prototype.rethrow = function rethrow(msg) {\n    this.message = msg + \" at: \" + (this.path || \"(shallow)\");\n    if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError);\n    if (!this.stack) {\n      try {\n        throw new Error(this.message);\n      } catch (e7) {\n        this.stack = e7.stack;\n      }\n    }\n    return this;\n  };\n  return exports$w$2;\n}\nvar exports$v$2 = {};\nvar _dewExec$u$2 = false;\nfunction dew$u$2() {\n  if (_dewExec$u$2) return exports$v$2;\n  _dewExec$u$2 = true;\n  const inherits = dew$f();\n  const Reporter = dew$v$2().Reporter;\n  const Buffer = dew$w$2().Buffer;\n  function DecoderBuffer(base, options) {\n    Reporter.call(this, options);\n    if (!Buffer.isBuffer(base)) {\n      this.error(\"Input not Buffer\");\n      return;\n    }\n    this.base = base;\n    this.offset = 0;\n    this.length = base.length;\n  }\n  inherits(DecoderBuffer, Reporter);\n  exports$v$2.DecoderBuffer = DecoderBuffer;\n  DecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n    if (data instanceof DecoderBuffer) {\n      return true;\n    }\n    const isCompatible = typeof data === \"object\" && Buffer.isBuffer(data.base) && data.constructor.name === \"DecoderBuffer\" && typeof data.offset === \"number\" && typeof data.length === \"number\" && typeof data.save === \"function\" && typeof data.restore === \"function\" && typeof data.isEmpty === \"function\" && typeof data.readUInt8 === \"function\" && typeof data.skip === \"function\" && typeof data.raw === \"function\";\n    return isCompatible;\n  };\n  DecoderBuffer.prototype.save = function save() {\n    return {\n      offset: this.offset,\n      reporter: Reporter.prototype.save.call(this)\n    };\n  };\n  DecoderBuffer.prototype.restore = function restore(save) {\n    const res = new DecoderBuffer(this.base);\n    res.offset = save.offset;\n    res.length = this.offset;\n    this.offset = save.offset;\n    Reporter.prototype.restore.call(this, save.reporter);\n    return res;\n  };\n  DecoderBuffer.prototype.isEmpty = function isEmpty() {\n    return this.offset === this.length;\n  };\n  DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n    if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true);\n    else return this.error(fail || \"DecoderBuffer overrun\");\n  };\n  DecoderBuffer.prototype.skip = function skip(bytes, fail) {\n    if (!(this.offset + bytes <= this.length)) return this.error(fail || \"DecoderBuffer overrun\");\n    const res = new DecoderBuffer(this.base);\n    res._reporterState = this._reporterState;\n    res.offset = this.offset;\n    res.length = this.offset + bytes;\n    this.offset += bytes;\n    return res;\n  };\n  DecoderBuffer.prototype.raw = function raw(save) {\n    return this.base.slice(save ? save.offset : this.offset, this.length);\n  };\n  function EncoderBuffer(value, reporter) {\n    if (Array.isArray(value)) {\n      this.length = 0;\n      this.value = value.map(function(item) {\n        if (!EncoderBuffer.isEncoderBuffer(item)) item = new EncoderBuffer(item, reporter);\n        this.length += item.length;\n        return item;\n      }, this);\n    } else if (typeof value === \"number\") {\n      if (!(0 <= value && value <= 255)) return reporter.error(\"non-byte EncoderBuffer value\");\n      this.value = value;\n      this.length = 1;\n    } else if (typeof value === \"string\") {\n      this.value = value;\n      this.length = Buffer.byteLength(value);\n    } else if (Buffer.isBuffer(value)) {\n      this.value = value;\n      this.length = value.length;\n    } else {\n      return reporter.error(\"Unsupported type: \" + typeof value);\n    }\n  }\n  exports$v$2.EncoderBuffer = EncoderBuffer;\n  EncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n    if (data instanceof EncoderBuffer) {\n      return true;\n    }\n    const isCompatible = typeof data === \"object\" && data.constructor.name === \"EncoderBuffer\" && typeof data.length === \"number\" && typeof data.join === \"function\";\n    return isCompatible;\n  };\n  EncoderBuffer.prototype.join = function join(out, offset) {\n    if (!out) out = Buffer.alloc(this.length);\n    if (!offset) offset = 0;\n    if (this.length === 0) return out;\n    if (Array.isArray(this.value)) {\n      this.value.forEach(function(item) {\n        item.join(out, offset);\n        offset += item.length;\n      });\n    } else {\n      if (typeof this.value === \"number\") out[offset] = this.value;\n      else if (typeof this.value === \"string\") out.write(this.value, offset);\n      else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset);\n      offset += this.length;\n    }\n    return out;\n  };\n  return exports$v$2;\n}\nvar exports$u$2 = {};\nvar _dewExec$t$2 = false;\nfunction dew$t$2() {\n  if (_dewExec$t$2) return exports$u$2;\n  _dewExec$t$2 = true;\n  const Reporter = dew$v$2().Reporter;\n  const EncoderBuffer = dew$u$2().EncoderBuffer;\n  const DecoderBuffer = dew$u$2().DecoderBuffer;\n  const assert2 = dew$2m();\n  const tags = [\"seq\", \"seqof\", \"set\", \"setof\", \"objid\", \"bool\", \"gentime\", \"utctime\", \"null_\", \"enum\", \"int\", \"objDesc\", \"bitstr\", \"bmpstr\", \"charstr\", \"genstr\", \"graphstr\", \"ia5str\", \"iso646str\", \"numstr\", \"octstr\", \"printstr\", \"t61str\", \"unistr\", \"utf8str\", \"videostr\"];\n  const methods = [\"key\", \"obj\", \"use\", \"optional\", \"explicit\", \"implicit\", \"def\", \"choice\", \"any\", \"contains\"].concat(tags);\n  const overrided = [\"_peekTag\", \"_decodeTag\", \"_use\", \"_decodeStr\", \"_decodeObjid\", \"_decodeTime\", \"_decodeNull\", \"_decodeInt\", \"_decodeBool\", \"_decodeList\", \"_encodeComposite\", \"_encodeStr\", \"_encodeObjid\", \"_encodeTime\", \"_encodeNull\", \"_encodeInt\", \"_encodeBool\"];\n  function Node(enc, parent, name2) {\n    const state = {};\n    this._baseState = state;\n    state.name = name2;\n    state.enc = enc;\n    state.parent = parent || null;\n    state.children = null;\n    state.tag = null;\n    state.args = null;\n    state.reverseArgs = null;\n    state.choice = null;\n    state.optional = false;\n    state.any = false;\n    state.obj = false;\n    state.use = null;\n    state.useDecoder = null;\n    state.key = null;\n    state[\"default\"] = null;\n    state.explicit = null;\n    state.implicit = null;\n    state.contains = null;\n    if (!state.parent) {\n      state.children = [];\n      this._wrap();\n    }\n  }\n  exports$u$2 = Node;\n  const stateProps = [\"enc\", \"parent\", \"children\", \"tag\", \"args\", \"reverseArgs\", \"choice\", \"optional\", \"any\", \"obj\", \"use\", \"alteredUse\", \"key\", \"default\", \"explicit\", \"implicit\", \"contains\"];\n  Node.prototype.clone = function clone() {\n    const state = this._baseState;\n    const cstate = {};\n    stateProps.forEach(function(prop) {\n      cstate[prop] = state[prop];\n    });\n    const res = new this.constructor(cstate.parent);\n    res._baseState = cstate;\n    return res;\n  };\n  Node.prototype._wrap = function wrap() {\n    const state = this._baseState;\n    methods.forEach(function(method) {\n      this[method] = function _wrappedMethod() {\n        const clone = new this.constructor(this);\n        state.children.push(clone);\n        return clone[method].apply(clone, arguments);\n      };\n    }, this);\n  };\n  Node.prototype._init = function init(body) {\n    const state = this._baseState;\n    assert2(state.parent === null);\n    body.call(this);\n    state.children = state.children.filter(function(child) {\n      return child._baseState.parent === this;\n    }, this);\n    assert2.equal(state.children.length, 1, \"Root node can have only one child\");\n  };\n  Node.prototype._useArgs = function useArgs(args) {\n    const state = this._baseState;\n    const children = args.filter(function(arg) {\n      return arg instanceof this.constructor;\n    }, this);\n    args = args.filter(function(arg) {\n      return !(arg instanceof this.constructor);\n    }, this);\n    if (children.length !== 0) {\n      assert2(state.children === null);\n      state.children = children;\n      children.forEach(function(child) {\n        child._baseState.parent = this;\n      }, this);\n    }\n    if (args.length !== 0) {\n      assert2(state.args === null);\n      state.args = args;\n      state.reverseArgs = args.map(function(arg) {\n        if (typeof arg !== \"object\" || arg.constructor !== Object) return arg;\n        const res = {};\n        Object.keys(arg).forEach(function(key) {\n          if (key == (key | 0)) key |= 0;\n          const value = arg[key];\n          res[value] = key;\n        });\n        return res;\n      });\n    }\n  };\n  overrided.forEach(function(method) {\n    Node.prototype[method] = function _overrided() {\n      const state = this._baseState;\n      throw new Error(method + \" not implemented for encoding: \" + state.enc);\n    };\n  });\n  tags.forEach(function(tag) {\n    Node.prototype[tag] = function _tagMethod() {\n      const state = this._baseState;\n      const args = Array.prototype.slice.call(arguments);\n      assert2(state.tag === null);\n      state.tag = tag;\n      this._useArgs(args);\n      return this;\n    };\n  });\n  Node.prototype.use = function use(item) {\n    assert2(item);\n    const state = this._baseState;\n    assert2(state.use === null);\n    state.use = item;\n    return this;\n  };\n  Node.prototype.optional = function optional() {\n    const state = this._baseState;\n    state.optional = true;\n    return this;\n  };\n  Node.prototype.def = function def(val) {\n    const state = this._baseState;\n    assert2(state[\"default\"] === null);\n    state[\"default\"] = val;\n    state.optional = true;\n    return this;\n  };\n  Node.prototype.explicit = function explicit(num) {\n    const state = this._baseState;\n    assert2(state.explicit === null && state.implicit === null);\n    state.explicit = num;\n    return this;\n  };\n  Node.prototype.implicit = function implicit(num) {\n    const state = this._baseState;\n    assert2(state.explicit === null && state.implicit === null);\n    state.implicit = num;\n    return this;\n  };\n  Node.prototype.obj = function obj() {\n    const state = this._baseState;\n    const args = Array.prototype.slice.call(arguments);\n    state.obj = true;\n    if (args.length !== 0) this._useArgs(args);\n    return this;\n  };\n  Node.prototype.key = function key(newKey) {\n    const state = this._baseState;\n    assert2(state.key === null);\n    state.key = newKey;\n    return this;\n  };\n  Node.prototype.any = function any() {\n    const state = this._baseState;\n    state.any = true;\n    return this;\n  };\n  Node.prototype.choice = function choice(obj) {\n    const state = this._baseState;\n    assert2(state.choice === null);\n    state.choice = obj;\n    this._useArgs(Object.keys(obj).map(function(key) {\n      return obj[key];\n    }));\n    return this;\n  };\n  Node.prototype.contains = function contains(item) {\n    const state = this._baseState;\n    assert2(state.use === null);\n    state.contains = item;\n    return this;\n  };\n  Node.prototype._decode = function decode(input, options) {\n    const state = this._baseState;\n    if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));\n    let result = state[\"default\"];\n    let present = true;\n    let prevKey = null;\n    if (state.key !== null) prevKey = input.enterKey(state.key);\n    if (state.optional) {\n      let tag = null;\n      if (state.explicit !== null) tag = state.explicit;\n      else if (state.implicit !== null) tag = state.implicit;\n      else if (state.tag !== null) tag = state.tag;\n      if (tag === null && !state.any) {\n        const save = input.save();\n        try {\n          if (state.choice === null) this._decodeGeneric(state.tag, input, options);\n          else this._decodeChoice(input, options);\n          present = true;\n        } catch (e7) {\n          present = false;\n        }\n        input.restore(save);\n      } else {\n        present = this._peekTag(input, tag, state.any);\n        if (input.isError(present)) return present;\n      }\n    }\n    let prevObj;\n    if (state.obj && present) prevObj = input.enterObject();\n    if (present) {\n      if (state.explicit !== null) {\n        const explicit = this._decodeTag(input, state.explicit);\n        if (input.isError(explicit)) return explicit;\n        input = explicit;\n      }\n      const start = input.offset;\n      if (state.use === null && state.choice === null) {\n        let save;\n        if (state.any) save = input.save();\n        const body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);\n        if (input.isError(body)) return body;\n        if (state.any) result = input.raw(save);\n        else input = body;\n      }\n      if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, \"tagged\");\n      if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, \"content\");\n      if (state.any) ;\n      else if (state.choice === null) {\n        result = this._decodeGeneric(state.tag, input, options);\n      } else {\n        result = this._decodeChoice(input, options);\n      }\n      if (input.isError(result)) return result;\n      if (!state.any && state.choice === null && state.children !== null) {\n        state.children.forEach(function decodeChildren(child) {\n          child._decode(input, options);\n        });\n      }\n      if (state.contains && (state.tag === \"octstr\" || state.tag === \"bitstr\")) {\n        const data = new DecoderBuffer(result);\n        result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);\n      }\n    }\n    if (state.obj && present) result = input.leaveObject(prevObj);\n    if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);\n    else if (prevKey !== null) input.exitKey(prevKey);\n    return result;\n  };\n  Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n    const state = this._baseState;\n    if (tag === \"seq\" || tag === \"set\") return null;\n    if (tag === \"seqof\" || tag === \"setof\") return this._decodeList(input, tag, state.args[0], options);\n    else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);\n    else if (tag === \"objid\" && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);\n    else if (tag === \"objid\") return this._decodeObjid(input, null, null, options);\n    else if (tag === \"gentime\" || tag === \"utctime\") return this._decodeTime(input, tag, options);\n    else if (tag === \"null_\") return this._decodeNull(input, options);\n    else if (tag === \"bool\") return this._decodeBool(input, options);\n    else if (tag === \"objDesc\") return this._decodeStr(input, tag, options);\n    else if (tag === \"int\" || tag === \"enum\") return this._decodeInt(input, state.args && state.args[0], options);\n    if (state.use !== null) {\n      return this._getUse(state.use, input._reporterState.obj)._decode(input, options);\n    } else {\n      return input.error(\"unknown tag: \" + tag);\n    }\n  };\n  Node.prototype._getUse = function _getUse(entity, obj) {\n    const state = this._baseState;\n    state.useDecoder = this._use(entity, obj);\n    assert2(state.useDecoder._baseState.parent === null);\n    state.useDecoder = state.useDecoder._baseState.children[0];\n    if (state.implicit !== state.useDecoder._baseState.implicit) {\n      state.useDecoder = state.useDecoder.clone();\n      state.useDecoder._baseState.implicit = state.implicit;\n    }\n    return state.useDecoder;\n  };\n  Node.prototype._decodeChoice = function decodeChoice(input, options) {\n    const state = this._baseState;\n    let result = null;\n    let match = false;\n    Object.keys(state.choice).some(function(key) {\n      const save = input.save();\n      const node = state.choice[key];\n      try {\n        const value = node._decode(input, options);\n        if (input.isError(value)) return false;\n        result = {\n          type: key,\n          value\n        };\n        match = true;\n      } catch (e7) {\n        input.restore(save);\n        return false;\n      }\n      return true;\n    }, this);\n    if (!match) return input.error(\"Choice not matched\");\n    return result;\n  };\n  Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n    return new EncoderBuffer(data, this.reporter);\n  };\n  Node.prototype._encode = function encode(data, reporter, parent) {\n    const state = this._baseState;\n    if (state[\"default\"] !== null && state[\"default\"] === data) return;\n    const result = this._encodeValue(data, reporter, parent);\n    if (result === void 0) return;\n    if (this._skipDefault(result, reporter, parent)) return;\n    return result;\n  };\n  Node.prototype._encodeValue = function encode(data, reporter, parent) {\n    const state = this._baseState;\n    if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter());\n    let result = null;\n    this.reporter = reporter;\n    if (state.optional && data === void 0) {\n      if (state[\"default\"] !== null) data = state[\"default\"];\n      else return;\n    }\n    let content = null;\n    let primitive = false;\n    if (state.any) {\n      result = this._createEncoderBuffer(data);\n    } else if (state.choice) {\n      result = this._encodeChoice(data, reporter);\n    } else if (state.contains) {\n      content = this._getUse(state.contains, parent)._encode(data, reporter);\n      primitive = true;\n    } else if (state.children) {\n      content = state.children.map(function(child) {\n        if (child._baseState.tag === \"null_\") return child._encode(null, reporter, data);\n        if (child._baseState.key === null) return reporter.error(\"Child should have a key\");\n        const prevKey = reporter.enterKey(child._baseState.key);\n        if (typeof data !== \"object\") return reporter.error(\"Child expected, but input is not object\");\n        const res = child._encode(data[child._baseState.key], reporter, data);\n        reporter.leaveKey(prevKey);\n        return res;\n      }, this).filter(function(child) {\n        return child;\n      });\n      content = this._createEncoderBuffer(content);\n    } else {\n      if (state.tag === \"seqof\" || state.tag === \"setof\") {\n        if (!(state.args && state.args.length === 1)) return reporter.error(\"Too many args for : \" + state.tag);\n        if (!Array.isArray(data)) return reporter.error(\"seqof/setof, but data is not Array\");\n        const child = this.clone();\n        child._baseState.implicit = null;\n        content = this._createEncoderBuffer(data.map(function(item) {\n          const state2 = this._baseState;\n          return this._getUse(state2.args[0], data)._encode(item, reporter);\n        }, child));\n      } else if (state.use !== null) {\n        result = this._getUse(state.use, parent)._encode(data, reporter);\n      } else {\n        content = this._encodePrimitive(state.tag, data);\n        primitive = true;\n      }\n    }\n    if (!state.any && state.choice === null) {\n      const tag = state.implicit !== null ? state.implicit : state.tag;\n      const cls = state.implicit === null ? \"universal\" : \"context\";\n      if (tag === null) {\n        if (state.use === null) reporter.error(\"Tag could be omitted only for .use()\");\n      } else {\n        if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);\n      }\n    }\n    if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, \"context\", result);\n    return result;\n  };\n  Node.prototype._encodeChoice = function encodeChoice(data, reporter) {\n    const state = this._baseState;\n    const node = state.choice[data.type];\n    if (!node) {\n      assert2(false, data.type + \" not found in \" + JSON.stringify(Object.keys(state.choice)));\n    }\n    return node._encode(data.value, reporter);\n  };\n  Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n    const state = this._baseState;\n    if (/str$/.test(tag)) return this._encodeStr(data, tag);\n    else if (tag === \"objid\" && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n    else if (tag === \"objid\") return this._encodeObjid(data, null, null);\n    else if (tag === \"gentime\" || tag === \"utctime\") return this._encodeTime(data, tag);\n    else if (tag === \"null_\") return this._encodeNull();\n    else if (tag === \"int\" || tag === \"enum\") return this._encodeInt(data, state.args && state.reverseArgs[0]);\n    else if (tag === \"bool\") return this._encodeBool(data);\n    else if (tag === \"objDesc\") return this._encodeStr(data, tag);\n    else throw new Error(\"Unsupported tag: \" + tag);\n  };\n  Node.prototype._isNumstr = function isNumstr(str) {\n    return /^[0-9 ]*$/.test(str);\n  };\n  Node.prototype._isPrintstr = function isPrintstr(str) {\n    return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n  };\n  return exports$u$2;\n}\nvar exports$t$2 = {};\nvar _dewExec$s$2 = false;\nfunction dew$s$2() {\n  if (_dewExec$s$2) return exports$t$2;\n  _dewExec$s$2 = true;\n  function reverse(map) {\n    const res = {};\n    Object.keys(map).forEach(function(key) {\n      if ((key | 0) == key) key = key | 0;\n      const value = map[key];\n      res[value] = key;\n    });\n    return res;\n  }\n  exports$t$2.tagClass = {\n    0: \"universal\",\n    1: \"application\",\n    2: \"context\",\n    3: \"private\"\n  };\n  exports$t$2.tagClassByName = reverse(exports$t$2.tagClass);\n  exports$t$2.tag = {\n    0: \"end\",\n    1: \"bool\",\n    2: \"int\",\n    3: \"bitstr\",\n    4: \"octstr\",\n    5: \"null_\",\n    6: \"objid\",\n    7: \"objDesc\",\n    8: \"external\",\n    9: \"real\",\n    10: \"enum\",\n    11: \"embed\",\n    12: \"utf8str\",\n    13: \"relativeOid\",\n    16: \"seq\",\n    17: \"set\",\n    18: \"numstr\",\n    19: \"printstr\",\n    20: \"t61str\",\n    21: \"videostr\",\n    22: \"ia5str\",\n    23: \"utctime\",\n    24: \"gentime\",\n    25: \"graphstr\",\n    26: \"iso646str\",\n    27: \"genstr\",\n    28: \"unistr\",\n    29: \"charstr\",\n    30: \"bmpstr\"\n  };\n  exports$t$2.tagByName = reverse(exports$t$2.tag);\n  return exports$t$2;\n}\nvar exports$s$2 = {};\nvar _dewExec$r$2 = false;\nfunction dew$r$2() {\n  if (_dewExec$r$2) return exports$s$2;\n  _dewExec$r$2 = true;\n  const inherits = dew$f();\n  const Buffer = dew$w$2().Buffer;\n  const Node = dew$t$2();\n  const der = dew$s$2();\n  function DEREncoder(entity) {\n    this.enc = \"der\";\n    this.name = entity.name;\n    this.entity = entity;\n    this.tree = new DERNode();\n    this.tree._init(entity.body);\n  }\n  exports$s$2 = DEREncoder;\n  DEREncoder.prototype.encode = function encode(data, reporter) {\n    return this.tree._encode(data, reporter).join();\n  };\n  function DERNode(parent) {\n    Node.call(this, \"der\", parent);\n  }\n  inherits(DERNode, Node);\n  DERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n    const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n    if (content.length < 128) {\n      const header2 = Buffer.alloc(2);\n      header2[0] = encodedTag;\n      header2[1] = content.length;\n      return this._createEncoderBuffer([header2, content]);\n    }\n    let lenOctets = 1;\n    for (let i5 = content.length; i5 >= 256; i5 >>= 8) lenOctets++;\n    const header = Buffer.alloc(1 + 1 + lenOctets);\n    header[0] = encodedTag;\n    header[1] = 128 | lenOctets;\n    for (let i5 = 1 + lenOctets, j4 = content.length; j4 > 0; i5--, j4 >>= 8) header[i5] = j4 & 255;\n    return this._createEncoderBuffer([header, content]);\n  };\n  DERNode.prototype._encodeStr = function encodeStr(str, tag) {\n    if (tag === \"bitstr\") {\n      return this._createEncoderBuffer([str.unused | 0, str.data]);\n    } else if (tag === \"bmpstr\") {\n      const buf = Buffer.alloc(str.length * 2);\n      for (let i5 = 0; i5 < str.length; i5++) {\n        buf.writeUInt16BE(str.charCodeAt(i5), i5 * 2);\n      }\n      return this._createEncoderBuffer(buf);\n    } else if (tag === \"numstr\") {\n      if (!this._isNumstr(str)) {\n        return this.reporter.error(\"Encoding of string type: numstr supports only digits and space\");\n      }\n      return this._createEncoderBuffer(str);\n    } else if (tag === \"printstr\") {\n      if (!this._isPrintstr(str)) {\n        return this.reporter.error(\"Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark\");\n      }\n      return this._createEncoderBuffer(str);\n    } else if (/str$/.test(tag)) {\n      return this._createEncoderBuffer(str);\n    } else if (tag === \"objDesc\") {\n      return this._createEncoderBuffer(str);\n    } else {\n      return this.reporter.error(\"Encoding of string type: \" + tag + \" unsupported\");\n    }\n  };\n  DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n    if (typeof id === \"string\") {\n      if (!values) return this.reporter.error(\"string objid given, but no values map found\");\n      if (!values.hasOwnProperty(id)) return this.reporter.error(\"objid not found in values map\");\n      id = values[id].split(/[\\s.]+/g);\n      for (let i5 = 0; i5 < id.length; i5++) id[i5] |= 0;\n    } else if (Array.isArray(id)) {\n      id = id.slice();\n      for (let i5 = 0; i5 < id.length; i5++) id[i5] |= 0;\n    }\n    if (!Array.isArray(id)) {\n      return this.reporter.error(\"objid() should be either array or string, got: \" + JSON.stringify(id));\n    }\n    if (!relative) {\n      if (id[1] >= 40) return this.reporter.error(\"Second objid identifier OOB\");\n      id.splice(0, 2, id[0] * 40 + id[1]);\n    }\n    let size = 0;\n    for (let i5 = 0; i5 < id.length; i5++) {\n      let ident = id[i5];\n      for (size++; ident >= 128; ident >>= 7) size++;\n    }\n    const objid = Buffer.alloc(size);\n    let offset = objid.length - 1;\n    for (let i5 = id.length - 1; i5 >= 0; i5--) {\n      let ident = id[i5];\n      objid[offset--] = ident & 127;\n      while ((ident >>= 7) > 0) objid[offset--] = 128 | ident & 127;\n    }\n    return this._createEncoderBuffer(objid);\n  };\n  function two(num) {\n    if (num < 10) return \"0\" + num;\n    else return num;\n  }\n  DERNode.prototype._encodeTime = function encodeTime(time, tag) {\n    let str;\n    const date = new Date(time);\n    if (tag === \"gentime\") {\n      str = [two(date.getUTCFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), \"Z\"].join(\"\");\n    } else if (tag === \"utctime\") {\n      str = [two(date.getUTCFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), \"Z\"].join(\"\");\n    } else {\n      this.reporter.error(\"Encoding \" + tag + \" time is not supported yet\");\n    }\n    return this._encodeStr(str, \"octstr\");\n  };\n  DERNode.prototype._encodeNull = function encodeNull() {\n    return this._createEncoderBuffer(\"\");\n  };\n  DERNode.prototype._encodeInt = function encodeInt(num, values) {\n    if (typeof num === \"string\") {\n      if (!values) return this.reporter.error(\"String int or enum given, but no values map\");\n      if (!values.hasOwnProperty(num)) {\n        return this.reporter.error(\"Values map doesn't contain: \" + JSON.stringify(num));\n      }\n      num = values[num];\n    }\n    if (typeof num !== \"number\" && !Buffer.isBuffer(num)) {\n      const numArray = num.toArray();\n      if (!num.sign && numArray[0] & 128) {\n        numArray.unshift(0);\n      }\n      num = Buffer.from(numArray);\n    }\n    if (Buffer.isBuffer(num)) {\n      let size2 = num.length;\n      if (num.length === 0) size2++;\n      const out2 = Buffer.alloc(size2);\n      num.copy(out2);\n      if (num.length === 0) out2[0] = 0;\n      return this._createEncoderBuffer(out2);\n    }\n    if (num < 128) return this._createEncoderBuffer(num);\n    if (num < 256) return this._createEncoderBuffer([0, num]);\n    let size = 1;\n    for (let i5 = num; i5 >= 256; i5 >>= 8) size++;\n    const out = new Array(size);\n    for (let i5 = out.length - 1; i5 >= 0; i5--) {\n      out[i5] = num & 255;\n      num >>= 8;\n    }\n    if (out[0] & 128) {\n      out.unshift(0);\n    }\n    return this._createEncoderBuffer(Buffer.from(out));\n  };\n  DERNode.prototype._encodeBool = function encodeBool(value) {\n    return this._createEncoderBuffer(value ? 255 : 0);\n  };\n  DERNode.prototype._use = function use(entity, obj) {\n    if (typeof entity === \"function\") entity = entity(obj);\n    return entity._getEncoder(\"der\").tree;\n  };\n  DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n    const state = this._baseState;\n    let i5;\n    if (state[\"default\"] === null) return false;\n    const data = dataBuffer.join();\n    if (state.defaultBuffer === void 0) state.defaultBuffer = this._encodeValue(state[\"default\"], reporter, parent).join();\n    if (data.length !== state.defaultBuffer.length) return false;\n    for (i5 = 0; i5 < data.length; i5++) if (data[i5] !== state.defaultBuffer[i5]) return false;\n    return true;\n  };\n  function encodeTag(tag, primitive, cls, reporter) {\n    let res;\n    if (tag === \"seqof\") tag = \"seq\";\n    else if (tag === \"setof\") tag = \"set\";\n    if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];\n    else if (typeof tag === \"number\" && (tag | 0) === tag) res = tag;\n    else return reporter.error(\"Unknown tag: \" + tag);\n    if (res >= 31) return reporter.error(\"Multi-octet tag encoding unsupported\");\n    if (!primitive) res |= 32;\n    res |= der.tagClassByName[cls || \"universal\"] << 6;\n    return res;\n  }\n  return exports$s$2;\n}\nvar exports$r$2 = {};\nvar _dewExec$q$2 = false;\nfunction dew$q$2() {\n  if (_dewExec$q$2) return exports$r$2;\n  _dewExec$q$2 = true;\n  const inherits = dew$f();\n  const DEREncoder = dew$r$2();\n  function PEMEncoder(entity) {\n    DEREncoder.call(this, entity);\n    this.enc = \"pem\";\n  }\n  inherits(PEMEncoder, DEREncoder);\n  exports$r$2 = PEMEncoder;\n  PEMEncoder.prototype.encode = function encode(data, options) {\n    const buf = DEREncoder.prototype.encode.call(this, data);\n    const p5 = buf.toString(\"base64\");\n    const out = [\"-----BEGIN \" + options.label + \"-----\"];\n    for (let i5 = 0; i5 < p5.length; i5 += 64) out.push(p5.slice(i5, i5 + 64));\n    out.push(\"-----END \" + options.label + \"-----\");\n    return out.join(\"\\n\");\n  };\n  return exports$r$2;\n}\nvar exports$q$2 = {};\nvar _dewExec$p$2 = false;\nfunction dew$p$2() {\n  if (_dewExec$p$2) return exports$q$2;\n  _dewExec$p$2 = true;\n  const encoders = exports$q$2;\n  encoders.der = dew$r$2();\n  encoders.pem = dew$q$2();\n  return exports$q$2;\n}\nvar exports$p$2 = {};\nvar _dewExec$o$2 = false;\nfunction dew$o$2() {\n  if (_dewExec$o$2) return exports$p$2;\n  _dewExec$o$2 = true;\n  const inherits = dew$f();\n  const bignum = dew$x$2();\n  const DecoderBuffer = dew$u$2().DecoderBuffer;\n  const Node = dew$t$2();\n  const der = dew$s$2();\n  function DERDecoder(entity) {\n    this.enc = \"der\";\n    this.name = entity.name;\n    this.entity = entity;\n    this.tree = new DERNode();\n    this.tree._init(entity.body);\n  }\n  exports$p$2 = DERDecoder;\n  DERDecoder.prototype.decode = function decode(data, options) {\n    if (!DecoderBuffer.isDecoderBuffer(data)) {\n      data = new DecoderBuffer(data, options);\n    }\n    return this.tree._decode(data, options);\n  };\n  function DERNode(parent) {\n    Node.call(this, \"der\", parent);\n  }\n  inherits(DERNode, Node);\n  DERNode.prototype._peekTag = function peekTag(buffer2, tag, any) {\n    if (buffer2.isEmpty()) return false;\n    const state = buffer2.save();\n    const decodedTag = derDecodeTag(buffer2, 'Failed to peek tag: \"' + tag + '\"');\n    if (buffer2.isError(decodedTag)) return decodedTag;\n    buffer2.restore(state);\n    return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + \"of\" === tag || any;\n  };\n  DERNode.prototype._decodeTag = function decodeTag(buffer2, tag, any) {\n    const decodedTag = derDecodeTag(buffer2, 'Failed to decode tag of \"' + tag + '\"');\n    if (buffer2.isError(decodedTag)) return decodedTag;\n    let len = derDecodeLen(buffer2, decodedTag.primitive, 'Failed to get length of \"' + tag + '\"');\n    if (buffer2.isError(len)) return len;\n    if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + \"of\" !== tag) {\n      return buffer2.error('Failed to match tag: \"' + tag + '\"');\n    }\n    if (decodedTag.primitive || len !== null) return buffer2.skip(len, 'Failed to match body of: \"' + tag + '\"');\n    const state = buffer2.save();\n    const res = this._skipUntilEnd(buffer2, 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n    if (buffer2.isError(res)) return res;\n    len = buffer2.offset - state.offset;\n    buffer2.restore(state);\n    return buffer2.skip(len, 'Failed to match body of: \"' + tag + '\"');\n  };\n  DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer2, fail) {\n    for (; ; ) {\n      const tag = derDecodeTag(buffer2, fail);\n      if (buffer2.isError(tag)) return tag;\n      const len = derDecodeLen(buffer2, tag.primitive, fail);\n      if (buffer2.isError(len)) return len;\n      let res;\n      if (tag.primitive || len !== null) res = buffer2.skip(len);\n      else res = this._skipUntilEnd(buffer2, fail);\n      if (buffer2.isError(res)) return res;\n      if (tag.tagStr === \"end\") break;\n    }\n  };\n  DERNode.prototype._decodeList = function decodeList(buffer2, tag, decoder, options) {\n    const result = [];\n    while (!buffer2.isEmpty()) {\n      const possibleEnd = this._peekTag(buffer2, \"end\");\n      if (buffer2.isError(possibleEnd)) return possibleEnd;\n      const res = decoder.decode(buffer2, \"der\", options);\n      if (buffer2.isError(res) && possibleEnd) break;\n      result.push(res);\n    }\n    return result;\n  };\n  DERNode.prototype._decodeStr = function decodeStr(buffer2, tag) {\n    if (tag === \"bitstr\") {\n      const unused = buffer2.readUInt8();\n      if (buffer2.isError(unused)) return unused;\n      return {\n        unused,\n        data: buffer2.raw()\n      };\n    } else if (tag === \"bmpstr\") {\n      const raw = buffer2.raw();\n      if (raw.length % 2 === 1) return buffer2.error(\"Decoding of string type: bmpstr length mismatch\");\n      let str = \"\";\n      for (let i5 = 0; i5 < raw.length / 2; i5++) {\n        str += String.fromCharCode(raw.readUInt16BE(i5 * 2));\n      }\n      return str;\n    } else if (tag === \"numstr\") {\n      const numstr = buffer2.raw().toString(\"ascii\");\n      if (!this._isNumstr(numstr)) {\n        return buffer2.error(\"Decoding of string type: numstr unsupported characters\");\n      }\n      return numstr;\n    } else if (tag === \"octstr\") {\n      return buffer2.raw();\n    } else if (tag === \"objDesc\") {\n      return buffer2.raw();\n    } else if (tag === \"printstr\") {\n      const printstr = buffer2.raw().toString(\"ascii\");\n      if (!this._isPrintstr(printstr)) {\n        return buffer2.error(\"Decoding of string type: printstr unsupported characters\");\n      }\n      return printstr;\n    } else if (/str$/.test(tag)) {\n      return buffer2.raw().toString();\n    } else {\n      return buffer2.error(\"Decoding of string type: \" + tag + \" unsupported\");\n    }\n  };\n  DERNode.prototype._decodeObjid = function decodeObjid(buffer2, values, relative) {\n    let result;\n    const identifiers = [];\n    let ident = 0;\n    let subident = 0;\n    while (!buffer2.isEmpty()) {\n      subident = buffer2.readUInt8();\n      ident <<= 7;\n      ident |= subident & 127;\n      if ((subident & 128) === 0) {\n        identifiers.push(ident);\n        ident = 0;\n      }\n    }\n    if (subident & 128) identifiers.push(ident);\n    const first = identifiers[0] / 40 | 0;\n    const second = identifiers[0] % 40;\n    if (relative) result = identifiers;\n    else result = [first, second].concat(identifiers.slice(1));\n    if (values) {\n      let tmp = values[result.join(\" \")];\n      if (tmp === void 0) tmp = values[result.join(\".\")];\n      if (tmp !== void 0) result = tmp;\n    }\n    return result;\n  };\n  DERNode.prototype._decodeTime = function decodeTime(buffer2, tag) {\n    const str = buffer2.raw().toString();\n    let year;\n    let mon;\n    let day;\n    let hour;\n    let min;\n    let sec;\n    if (tag === \"gentime\") {\n      year = str.slice(0, 4) | 0;\n      mon = str.slice(4, 6) | 0;\n      day = str.slice(6, 8) | 0;\n      hour = str.slice(8, 10) | 0;\n      min = str.slice(10, 12) | 0;\n      sec = str.slice(12, 14) | 0;\n    } else if (tag === \"utctime\") {\n      year = str.slice(0, 2) | 0;\n      mon = str.slice(2, 4) | 0;\n      day = str.slice(4, 6) | 0;\n      hour = str.slice(6, 8) | 0;\n      min = str.slice(8, 10) | 0;\n      sec = str.slice(10, 12) | 0;\n      if (year < 70) year = 2e3 + year;\n      else year = 1900 + year;\n    } else {\n      return buffer2.error(\"Decoding \" + tag + \" time is not supported yet\");\n    }\n    return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n  };\n  DERNode.prototype._decodeNull = function decodeNull() {\n    return null;\n  };\n  DERNode.prototype._decodeBool = function decodeBool(buffer2) {\n    const res = buffer2.readUInt8();\n    if (buffer2.isError(res)) return res;\n    else return res !== 0;\n  };\n  DERNode.prototype._decodeInt = function decodeInt(buffer2, values) {\n    const raw = buffer2.raw();\n    let res = new bignum(raw);\n    if (values) res = values[res.toString(10)] || res;\n    return res;\n  };\n  DERNode.prototype._use = function use(entity, obj) {\n    if (typeof entity === \"function\") entity = entity(obj);\n    return entity._getDecoder(\"der\").tree;\n  };\n  function derDecodeTag(buf, fail) {\n    let tag = buf.readUInt8(fail);\n    if (buf.isError(tag)) return tag;\n    const cls = der.tagClass[tag >> 6];\n    const primitive = (tag & 32) === 0;\n    if ((tag & 31) === 31) {\n      let oct = tag;\n      tag = 0;\n      while ((oct & 128) === 128) {\n        oct = buf.readUInt8(fail);\n        if (buf.isError(oct)) return oct;\n        tag <<= 7;\n        tag |= oct & 127;\n      }\n    } else {\n      tag &= 31;\n    }\n    const tagStr = der.tag[tag];\n    return {\n      cls,\n      primitive,\n      tag,\n      tagStr\n    };\n  }\n  function derDecodeLen(buf, primitive, fail) {\n    let len = buf.readUInt8(fail);\n    if (buf.isError(len)) return len;\n    if (!primitive && len === 128) return null;\n    if ((len & 128) === 0) {\n      return len;\n    }\n    const num = len & 127;\n    if (num > 4) return buf.error(\"length octect is too long\");\n    len = 0;\n    for (let i5 = 0; i5 < num; i5++) {\n      len <<= 8;\n      const j4 = buf.readUInt8(fail);\n      if (buf.isError(j4)) return j4;\n      len |= j4;\n    }\n    return len;\n  }\n  return exports$p$2;\n}\nvar exports$o$2 = {};\nvar _dewExec$n$2 = false;\nfunction dew$n$2() {\n  if (_dewExec$n$2) return exports$o$2;\n  _dewExec$n$2 = true;\n  const inherits = dew$f();\n  const Buffer = dew$w$2().Buffer;\n  const DERDecoder = dew$o$2();\n  function PEMDecoder(entity) {\n    DERDecoder.call(this, entity);\n    this.enc = \"pem\";\n  }\n  inherits(PEMDecoder, DERDecoder);\n  exports$o$2 = PEMDecoder;\n  PEMDecoder.prototype.decode = function decode(data, options) {\n    const lines = data.toString().split(/[\\r\\n]+/g);\n    const label = options.label.toUpperCase();\n    const re3 = /^-----(BEGIN|END) ([^-]+)-----$/;\n    let start = -1;\n    let end = -1;\n    for (let i5 = 0; i5 < lines.length; i5++) {\n      const match = lines[i5].match(re3);\n      if (match === null) continue;\n      if (match[2] !== label) continue;\n      if (start === -1) {\n        if (match[1] !== \"BEGIN\") break;\n        start = i5;\n      } else {\n        if (match[1] !== \"END\") break;\n        end = i5;\n        break;\n      }\n    }\n    if (start === -1 || end === -1) throw new Error(\"PEM section not found for: \" + label);\n    const base64 = lines.slice(start + 1, end).join(\"\");\n    base64.replace(/[^a-z0-9+/=]+/gi, \"\");\n    const input = Buffer.from(base64, \"base64\");\n    return DERDecoder.prototype.decode.call(this, input, options);\n  };\n  return exports$o$2;\n}\nvar exports$n$2 = {};\nvar _dewExec$m$2 = false;\nfunction dew$m$2() {\n  if (_dewExec$m$2) return exports$n$2;\n  _dewExec$m$2 = true;\n  const decoders = exports$n$2;\n  decoders.der = dew$o$2();\n  decoders.pem = dew$n$2();\n  return exports$n$2;\n}\nvar exports$m$2 = {};\nvar _dewExec$l$2 = false;\nfunction dew$l$2() {\n  if (_dewExec$l$2) return exports$m$2;\n  _dewExec$l$2 = true;\n  const encoders = dew$p$2();\n  const decoders = dew$m$2();\n  const inherits = dew$f();\n  const api = exports$m$2;\n  api.define = function define(name2, body) {\n    return new Entity(name2, body);\n  };\n  function Entity(name2, body) {\n    this.name = name2;\n    this.body = body;\n    this.decoders = {};\n    this.encoders = {};\n  }\n  Entity.prototype._createNamed = function createNamed(Base) {\n    const name2 = this.name;\n    function Generated(entity) {\n      this._initNamed(entity, name2);\n    }\n    inherits(Generated, Base);\n    Generated.prototype._initNamed = function _initNamed(entity, name3) {\n      Base.call(this, entity, name3);\n    };\n    return new Generated(this);\n  };\n  Entity.prototype._getDecoder = function _getDecoder(enc) {\n    enc = enc || \"der\";\n    if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(decoders[enc]);\n    return this.decoders[enc];\n  };\n  Entity.prototype.decode = function decode(data, enc, options) {\n    return this._getDecoder(enc).decode(data, options);\n  };\n  Entity.prototype._getEncoder = function _getEncoder(enc) {\n    enc = enc || \"der\";\n    if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(encoders[enc]);\n    return this.encoders[enc];\n  };\n  Entity.prototype.encode = function encode(data, enc, reporter) {\n    return this._getEncoder(enc).encode(data, reporter);\n  };\n  return exports$m$2;\n}\nvar exports$l$2 = {};\nvar _dewExec$k$2 = false;\nfunction dew$k$2() {\n  if (_dewExec$k$2) return exports$l$2;\n  _dewExec$k$2 = true;\n  const base = exports$l$2;\n  base.Reporter = dew$v$2().Reporter;\n  base.DecoderBuffer = dew$u$2().DecoderBuffer;\n  base.EncoderBuffer = dew$u$2().EncoderBuffer;\n  base.Node = dew$t$2();\n  return exports$l$2;\n}\nvar exports$k$2 = {};\nvar _dewExec$j$2 = false;\nfunction dew$j$2() {\n  if (_dewExec$j$2) return exports$k$2;\n  _dewExec$j$2 = true;\n  const constants2 = exports$k$2;\n  constants2._reverse = function reverse(map) {\n    const res = {};\n    Object.keys(map).forEach(function(key) {\n      if ((key | 0) == key) key = key | 0;\n      const value = map[key];\n      res[value] = key;\n    });\n    return res;\n  };\n  constants2.der = dew$s$2();\n  return exports$k$2;\n}\nvar exports$j$2 = {};\nvar _dewExec$i$2 = false;\nfunction dew$i$2() {\n  if (_dewExec$i$2) return exports$j$2;\n  _dewExec$i$2 = true;\n  const asn1 = exports$j$2;\n  asn1.bignum = dew$x$2();\n  asn1.define = dew$l$2().define;\n  asn1.base = dew$k$2();\n  asn1.constants = dew$j$2();\n  asn1.decoders = dew$m$2();\n  asn1.encoders = dew$p$2();\n  return exports$j$2;\n}\nvar exports$i$2 = {};\nvar _dewExec$h$2 = false;\nfunction dew$h$2() {\n  if (_dewExec$h$2) return exports$i$2;\n  _dewExec$h$2 = true;\n  var asn = dew$i$2();\n  var Time = asn.define(\"Time\", function() {\n    this.choice({\n      utcTime: this.utctime(),\n      generalTime: this.gentime()\n    });\n  });\n  var AttributeTypeValue = asn.define(\"AttributeTypeValue\", function() {\n    this.seq().obj(this.key(\"type\").objid(), this.key(\"value\").any());\n  });\n  var AlgorithmIdentifier = asn.define(\"AlgorithmIdentifier\", function() {\n    this.seq().obj(this.key(\"algorithm\").objid(), this.key(\"parameters\").optional(), this.key(\"curve\").objid().optional());\n  });\n  var SubjectPublicKeyInfo = asn.define(\"SubjectPublicKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPublicKey\").bitstr());\n  });\n  var RelativeDistinguishedName = asn.define(\"RelativeDistinguishedName\", function() {\n    this.setof(AttributeTypeValue);\n  });\n  var RDNSequence = asn.define(\"RDNSequence\", function() {\n    this.seqof(RelativeDistinguishedName);\n  });\n  var Name = asn.define(\"Name\", function() {\n    this.choice({\n      rdnSequence: this.use(RDNSequence)\n    });\n  });\n  var Validity = asn.define(\"Validity\", function() {\n    this.seq().obj(this.key(\"notBefore\").use(Time), this.key(\"notAfter\").use(Time));\n  });\n  var Extension = asn.define(\"Extension\", function() {\n    this.seq().obj(this.key(\"extnID\").objid(), this.key(\"critical\").bool().def(false), this.key(\"extnValue\").octstr());\n  });\n  var TBSCertificate = asn.define(\"TBSCertificate\", function() {\n    this.seq().obj(this.key(\"version\").explicit(0).int().optional(), this.key(\"serialNumber\").int(), this.key(\"signature\").use(AlgorithmIdentifier), this.key(\"issuer\").use(Name), this.key(\"validity\").use(Validity), this.key(\"subject\").use(Name), this.key(\"subjectPublicKeyInfo\").use(SubjectPublicKeyInfo), this.key(\"issuerUniqueID\").implicit(1).bitstr().optional(), this.key(\"subjectUniqueID\").implicit(2).bitstr().optional(), this.key(\"extensions\").explicit(3).seqof(Extension).optional());\n  });\n  var X509Certificate = asn.define(\"X509Certificate\", function() {\n    this.seq().obj(this.key(\"tbsCertificate\").use(TBSCertificate), this.key(\"signatureAlgorithm\").use(AlgorithmIdentifier), this.key(\"signatureValue\").bitstr());\n  });\n  exports$i$2 = X509Certificate;\n  return exports$i$2;\n}\nvar exports$h$2 = {};\nvar _dewExec$g$2 = false;\nfunction dew$g$2() {\n  if (_dewExec$g$2) return exports$h$2;\n  _dewExec$g$2 = true;\n  var asn1 = dew$i$2();\n  exports$h$2.certificate = dew$h$2();\n  var RSAPrivateKey = asn1.define(\"RSAPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\").int(), this.key(\"modulus\").int(), this.key(\"publicExponent\").int(), this.key(\"privateExponent\").int(), this.key(\"prime1\").int(), this.key(\"prime2\").int(), this.key(\"exponent1\").int(), this.key(\"exponent2\").int(), this.key(\"coefficient\").int());\n  });\n  exports$h$2.RSAPrivateKey = RSAPrivateKey;\n  var RSAPublicKey = asn1.define(\"RSAPublicKey\", function() {\n    this.seq().obj(this.key(\"modulus\").int(), this.key(\"publicExponent\").int());\n  });\n  exports$h$2.RSAPublicKey = RSAPublicKey;\n  var PublicKey = asn1.define(\"SubjectPublicKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPublicKey\").bitstr());\n  });\n  exports$h$2.PublicKey = PublicKey;\n  var AlgorithmIdentifier = asn1.define(\"AlgorithmIdentifier\", function() {\n    this.seq().obj(this.key(\"algorithm\").objid(), this.key(\"none\").null_().optional(), this.key(\"curve\").objid().optional(), this.key(\"params\").seq().obj(this.key(\"p\").int(), this.key(\"q\").int(), this.key(\"g\").int()).optional());\n  });\n  var PrivateKeyInfo = asn1.define(\"PrivateKeyInfo\", function() {\n    this.seq().obj(this.key(\"version\").int(), this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPrivateKey\").octstr());\n  });\n  exports$h$2.PrivateKey = PrivateKeyInfo;\n  var EncryptedPrivateKeyInfo = asn1.define(\"EncryptedPrivateKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(), this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(), this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(), this.key(\"iters\").int())), this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(), this.key(\"iv\").octstr()))), this.key(\"subjectPrivateKey\").octstr());\n  });\n  exports$h$2.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\n  var DSAPrivateKey = asn1.define(\"DSAPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\").int(), this.key(\"p\").int(), this.key(\"q\").int(), this.key(\"g\").int(), this.key(\"pub_key\").int(), this.key(\"priv_key\").int());\n  });\n  exports$h$2.DSAPrivateKey = DSAPrivateKey;\n  exports$h$2.DSAparam = asn1.define(\"DSAparam\", function() {\n    this.int();\n  });\n  var ECPrivateKey = asn1.define(\"ECPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\").int(), this.key(\"privateKey\").octstr(), this.key(\"parameters\").optional().explicit(0).use(ECParameters), this.key(\"publicKey\").optional().explicit(1).bitstr());\n  });\n  exports$h$2.ECPrivateKey = ECPrivateKey;\n  var ECParameters = asn1.define(\"ECParameters\", function() {\n    this.choice({\n      namedCurve: this.objid()\n    });\n  });\n  exports$h$2.signature = asn1.define(\"signature\", function() {\n    this.seq().obj(this.key(\"r\").int(), this.key(\"s\").int());\n  });\n  return exports$h$2;\n}\nvar _aesid$2 = {\n  \"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\",\n  \"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\",\n  \"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\",\n  \"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\",\n  \"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\",\n  \"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\",\n  \"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\",\n  \"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\",\n  \"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\",\n  \"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\",\n  \"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\",\n  \"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\"\n};\nvar exports$g$2 = {};\nvar _dewExec$f$3 = false;\nfunction dew$f$3() {\n  if (_dewExec$f$3) return exports$g$2;\n  _dewExec$f$3 = true;\n  var findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\n  var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\n  var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\n  var evp = dew$21();\n  var ciphers = dew$1_();\n  var Buffer = dew$2P().Buffer;\n  exports$g$2 = function(okey, password) {\n    var key = okey.toString();\n    var match = key.match(findProc);\n    var decrypted;\n    if (!match) {\n      var match2 = key.match(fullRegex);\n      decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, \"\"), \"base64\");\n    } else {\n      var suite = \"aes\" + match[1];\n      var iv = Buffer.from(match[2], \"hex\");\n      var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, \"\"), \"base64\");\n      var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n      var out = [];\n      var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n      out.push(cipher.update(cipherText));\n      out.push(cipher.final());\n      decrypted = Buffer.concat(out);\n    }\n    var tag = key.match(startRegex)[1];\n    return {\n      tag,\n      data: decrypted\n    };\n  };\n  return exports$g$2;\n}\nvar exports$f$3 = {};\nvar _dewExec$e$3 = false;\nfunction dew$e$3() {\n  if (_dewExec$e$3) return exports$f$3;\n  _dewExec$e$3 = true;\n  var asn1 = dew$g$2();\n  var aesid = _aesid$2;\n  var fixProc = dew$f$3();\n  var ciphers = dew$1_();\n  var compat = dew$2o();\n  var Buffer = dew$2P().Buffer;\n  exports$f$3 = parseKeys;\n  function parseKeys(buffer2) {\n    var password;\n    if (typeof buffer2 === \"object\" && !Buffer.isBuffer(buffer2)) {\n      password = buffer2.passphrase;\n      buffer2 = buffer2.key;\n    }\n    if (typeof buffer2 === \"string\") {\n      buffer2 = Buffer.from(buffer2);\n    }\n    var stripped = fixProc(buffer2, password);\n    var type = stripped.tag;\n    var data = stripped.data;\n    var subtype, ndata;\n    switch (type) {\n      case \"CERTIFICATE\":\n        ndata = asn1.certificate.decode(data, \"der\").tbsCertificate.subjectPublicKeyInfo;\n      // falls through\n      case \"PUBLIC KEY\":\n        if (!ndata) {\n          ndata = asn1.PublicKey.decode(data, \"der\");\n        }\n        subtype = ndata.algorithm.algorithm.join(\".\");\n        switch (subtype) {\n          case \"1.2.840.113549.1.1.1\":\n            return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, \"der\");\n          case \"1.2.840.10045.2.1\":\n            ndata.subjectPrivateKey = ndata.subjectPublicKey;\n            return {\n              type: \"ec\",\n              data: ndata\n            };\n          case \"1.2.840.10040.4.1\":\n            ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, \"der\");\n            return {\n              type: \"dsa\",\n              data: ndata.algorithm.params\n            };\n          default:\n            throw new Error(\"unknown key id \" + subtype);\n        }\n      // throw new Error('unknown key type ' + type)\n      case \"ENCRYPTED PRIVATE KEY\":\n        data = asn1.EncryptedPrivateKey.decode(data, \"der\");\n        data = decrypt(data, password);\n      // falls through\n      case \"PRIVATE KEY\":\n        ndata = asn1.PrivateKey.decode(data, \"der\");\n        subtype = ndata.algorithm.algorithm.join(\".\");\n        switch (subtype) {\n          case \"1.2.840.113549.1.1.1\":\n            return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, \"der\");\n          case \"1.2.840.10045.2.1\":\n            return {\n              curve: ndata.algorithm.curve,\n              privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, \"der\").privateKey\n            };\n          case \"1.2.840.10040.4.1\":\n            ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, \"der\");\n            return {\n              type: \"dsa\",\n              params: ndata.algorithm.params\n            };\n          default:\n            throw new Error(\"unknown key id \" + subtype);\n        }\n      // throw new Error('unknown key type ' + type)\n      case \"RSA PUBLIC KEY\":\n        return asn1.RSAPublicKey.decode(data, \"der\");\n      case \"RSA PRIVATE KEY\":\n        return asn1.RSAPrivateKey.decode(data, \"der\");\n      case \"DSA PRIVATE KEY\":\n        return {\n          type: \"dsa\",\n          params: asn1.DSAPrivateKey.decode(data, \"der\")\n        };\n      case \"EC PRIVATE KEY\":\n        data = asn1.ECPrivateKey.decode(data, \"der\");\n        return {\n          curve: data.parameters.value,\n          privateKey: data.privateKey\n        };\n      default:\n        throw new Error(\"unknown key type \" + type);\n    }\n  }\n  parseKeys.signature = asn1.signature;\n  function decrypt(data, password) {\n    var salt = data.algorithm.decrypt.kde.kdeparams.salt;\n    var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n    var algo = aesid[data.algorithm.decrypt.cipher.algo.join(\".\")];\n    var iv = data.algorithm.decrypt.cipher.iv;\n    var cipherText = data.subjectPrivateKey;\n    var keylen = parseInt(algo.split(\"-\")[1], 10) / 8;\n    var key = compat.pbkdf2Sync(password, salt, iters, keylen, \"sha1\");\n    var cipher = ciphers.createDecipheriv(algo, key, iv);\n    var out = [];\n    out.push(cipher.update(cipherText));\n    out.push(cipher.final());\n    return Buffer.concat(out);\n  }\n  return exports$f$3;\n}\nvar _curves$2 = {\n  \"1.3.132.0.10\": \"secp256k1\",\n  \"1.3.132.0.33\": \"p224\",\n  \"1.2.840.10045.3.1.1\": \"p192\",\n  \"1.2.840.10045.3.1.7\": \"p256\",\n  \"1.3.132.0.34\": \"p384\",\n  \"1.3.132.0.35\": \"p521\"\n};\nvar exports$e$3 = {};\nvar _dewExec$d$3 = false;\nfunction dew$d$3() {\n  if (_dewExec$d$3) return exports$e$3;\n  _dewExec$d$3 = true;\n  var Buffer = dew$Y$2().Buffer;\n  var createHmac2 = dew$2v();\n  var crt = dew$W$2();\n  var EC = dew$y$2().ec;\n  var BN = dew$X$2();\n  var parseKeys = dew$e$3();\n  var curves = _curves$2;\n  function sign(hash, key, hashType, signType, tag) {\n    var priv = parseKeys(key);\n    if (priv.curve) {\n      if (signType !== \"ecdsa\" && signType !== \"ecdsa/rsa\") throw new Error(\"wrong private key type\");\n      return ecSign(hash, priv);\n    } else if (priv.type === \"dsa\") {\n      if (signType !== \"dsa\") throw new Error(\"wrong private key type\");\n      return dsaSign(hash, priv, hashType);\n    } else {\n      if (signType !== \"rsa\" && signType !== \"ecdsa/rsa\") throw new Error(\"wrong private key type\");\n    }\n    hash = Buffer.concat([tag, hash]);\n    var len = priv.modulus.byteLength();\n    var pad = [0, 1];\n    while (hash.length + pad.length + 1 < len) pad.push(255);\n    pad.push(0);\n    var i5 = -1;\n    while (++i5 < hash.length) pad.push(hash[i5]);\n    var out = crt(pad, priv);\n    return out;\n  }\n  function ecSign(hash, priv) {\n    var curveId = curves[priv.curve.join(\".\")];\n    if (!curveId) throw new Error(\"unknown curve \" + priv.curve.join(\".\"));\n    var curve = new EC(curveId);\n    var key = curve.keyFromPrivate(priv.privateKey);\n    var out = key.sign(hash);\n    return Buffer.from(out.toDER());\n  }\n  function dsaSign(hash, priv, algo) {\n    var x4 = priv.params.priv_key;\n    var p5 = priv.params.p;\n    var q3 = priv.params.q;\n    var g4 = priv.params.g;\n    var r5 = new BN(0);\n    var k4;\n    var H3 = bits2int(hash, q3).mod(q3);\n    var s5 = false;\n    var kv = getKey(x4, q3, hash, algo);\n    while (s5 === false) {\n      k4 = makeKey(q3, kv, algo);\n      r5 = makeR(g4, k4, p5, q3);\n      s5 = k4.invm(q3).imul(H3.add(x4.mul(r5))).mod(q3);\n      if (s5.cmpn(0) === 0) {\n        s5 = false;\n        r5 = new BN(0);\n      }\n    }\n    return toDER(r5, s5);\n  }\n  function toDER(r5, s5) {\n    r5 = r5.toArray();\n    s5 = s5.toArray();\n    if (r5[0] & 128) r5 = [0].concat(r5);\n    if (s5[0] & 128) s5 = [0].concat(s5);\n    var total = r5.length + s5.length + 4;\n    var res = [48, total, 2, r5.length];\n    res = res.concat(r5, [2, s5.length], s5);\n    return Buffer.from(res);\n  }\n  function getKey(x4, q3, hash, algo) {\n    x4 = Buffer.from(x4.toArray());\n    if (x4.length < q3.byteLength()) {\n      var zeros = Buffer.alloc(q3.byteLength() - x4.length);\n      x4 = Buffer.concat([zeros, x4]);\n    }\n    var hlen = hash.length;\n    var hbits = bits2octets(hash, q3);\n    var v5 = Buffer.alloc(hlen);\n    v5.fill(1);\n    var k4 = Buffer.alloc(hlen);\n    k4 = createHmac2(algo, k4).update(v5).update(Buffer.from([0])).update(x4).update(hbits).digest();\n    v5 = createHmac2(algo, k4).update(v5).digest();\n    k4 = createHmac2(algo, k4).update(v5).update(Buffer.from([1])).update(x4).update(hbits).digest();\n    v5 = createHmac2(algo, k4).update(v5).digest();\n    return {\n      k: k4,\n      v: v5\n    };\n  }\n  function bits2int(obits, q3) {\n    var bits = new BN(obits);\n    var shift = (obits.length << 3) - q3.bitLength();\n    if (shift > 0) bits.ishrn(shift);\n    return bits;\n  }\n  function bits2octets(bits, q3) {\n    bits = bits2int(bits, q3);\n    bits = bits.mod(q3);\n    var out = Buffer.from(bits.toArray());\n    if (out.length < q3.byteLength()) {\n      var zeros = Buffer.alloc(q3.byteLength() - out.length);\n      out = Buffer.concat([zeros, out]);\n    }\n    return out;\n  }\n  function makeKey(q3, kv, algo) {\n    var t5;\n    var k4;\n    do {\n      t5 = Buffer.alloc(0);\n      while (t5.length * 8 < q3.bitLength()) {\n        kv.v = createHmac2(algo, kv.k).update(kv.v).digest();\n        t5 = Buffer.concat([t5, kv.v]);\n      }\n      k4 = bits2int(t5, q3);\n      kv.k = createHmac2(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n      kv.v = createHmac2(algo, kv.k).update(kv.v).digest();\n    } while (k4.cmp(q3) !== -1);\n    return k4;\n  }\n  function makeR(g4, k4, p5, q3) {\n    return g4.toRed(BN.mont(p5)).redPow(k4).fromRed().mod(q3);\n  }\n  exports$e$3 = sign;\n  exports$e$3.getKey = getKey;\n  exports$e$3.makeKey = makeKey;\n  return exports$e$3;\n}\nvar exports$d$3 = {};\nvar _dewExec$c$3 = false;\nfunction dew$c$3() {\n  if (_dewExec$c$3) return exports$d$3;\n  _dewExec$c$3 = true;\n  var Buffer = dew$Y$2().Buffer;\n  var BN = dew$X$2();\n  var EC = dew$y$2().ec;\n  var parseKeys = dew$e$3();\n  var curves = _curves$2;\n  function verify(sig, hash, key, signType, tag) {\n    var pub = parseKeys(key);\n    if (pub.type === \"ec\") {\n      if (signType !== \"ecdsa\" && signType !== \"ecdsa/rsa\") throw new Error(\"wrong public key type\");\n      return ecVerify(sig, hash, pub);\n    } else if (pub.type === \"dsa\") {\n      if (signType !== \"dsa\") throw new Error(\"wrong public key type\");\n      return dsaVerify(sig, hash, pub);\n    } else {\n      if (signType !== \"rsa\" && signType !== \"ecdsa/rsa\") throw new Error(\"wrong public key type\");\n    }\n    hash = Buffer.concat([tag, hash]);\n    var len = pub.modulus.byteLength();\n    var pad = [1];\n    var padNum = 0;\n    while (hash.length + pad.length + 2 < len) {\n      pad.push(255);\n      padNum++;\n    }\n    pad.push(0);\n    var i5 = -1;\n    while (++i5 < hash.length) {\n      pad.push(hash[i5]);\n    }\n    pad = Buffer.from(pad);\n    var red = BN.mont(pub.modulus);\n    sig = new BN(sig).toRed(red);\n    sig = sig.redPow(new BN(pub.publicExponent));\n    sig = Buffer.from(sig.fromRed().toArray());\n    var out = padNum < 8 ? 1 : 0;\n    len = Math.min(sig.length, pad.length);\n    if (sig.length !== pad.length) out = 1;\n    i5 = -1;\n    while (++i5 < len) out |= sig[i5] ^ pad[i5];\n    return out === 0;\n  }\n  function ecVerify(sig, hash, pub) {\n    var curveId = curves[pub.data.algorithm.curve.join(\".\")];\n    if (!curveId) throw new Error(\"unknown curve \" + pub.data.algorithm.curve.join(\".\"));\n    var curve = new EC(curveId);\n    var pubkey = pub.data.subjectPrivateKey.data;\n    return curve.verify(hash, sig, pubkey);\n  }\n  function dsaVerify(sig, hash, pub) {\n    var p5 = pub.data.p;\n    var q3 = pub.data.q;\n    var g4 = pub.data.g;\n    var y5 = pub.data.pub_key;\n    var unpacked = parseKeys.signature.decode(sig, \"der\");\n    var s5 = unpacked.s;\n    var r5 = unpacked.r;\n    checkValue(s5, q3);\n    checkValue(r5, q3);\n    var montp = BN.mont(p5);\n    var w4 = s5.invm(q3);\n    var v5 = g4.toRed(montp).redPow(new BN(hash).mul(w4).mod(q3)).fromRed().mul(y5.toRed(montp).redPow(r5.mul(w4).mod(q3)).fromRed()).mod(p5).mod(q3);\n    return v5.cmp(r5) === 0;\n  }\n  function checkValue(b4, q3) {\n    if (b4.cmpn(0) <= 0) throw new Error(\"invalid sig\");\n    if (b4.cmp(q3) >= q3) throw new Error(\"invalid sig\");\n  }\n  exports$d$3 = verify;\n  return exports$d$3;\n}\nvar exports$c$3 = {};\nvar _dewExec$b$3 = false;\nvar _global$4$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$b$3() {\n  if (_dewExec$b$3) return exports$c$3;\n  _dewExec$b$3 = true;\n  var Buffer = dew$Y$2().Buffer;\n  var createHash2 = dew$2y();\n  var stream2 = dew7();\n  var inherits = dew$f();\n  var sign = dew$d$3();\n  var verify = dew$c$3();\n  var algorithms = _algorithms$1;\n  Object.keys(algorithms).forEach(function(key) {\n    algorithms[key].id = Buffer.from(algorithms[key].id, \"hex\");\n    algorithms[key.toLowerCase()] = algorithms[key];\n  });\n  function Sign2(algorithm) {\n    stream2.Writable.call(this || _global$4$2);\n    var data = algorithms[algorithm];\n    if (!data) throw new Error(\"Unknown message digest\");\n    (this || _global$4$2)._hashType = data.hash;\n    (this || _global$4$2)._hash = createHash2(data.hash);\n    (this || _global$4$2)._tag = data.id;\n    (this || _global$4$2)._signType = data.sign;\n  }\n  inherits(Sign2, stream2.Writable);\n  Sign2.prototype._write = function _write(data, _4, done) {\n    (this || _global$4$2)._hash.update(data);\n    done();\n  };\n  Sign2.prototype.update = function update(data, enc) {\n    if (typeof data === \"string\") data = Buffer.from(data, enc);\n    (this || _global$4$2)._hash.update(data);\n    return this || _global$4$2;\n  };\n  Sign2.prototype.sign = function signMethod(key, enc) {\n    this.end();\n    var hash = (this || _global$4$2)._hash.digest();\n    var sig = sign(hash, key, (this || _global$4$2)._hashType, (this || _global$4$2)._signType, (this || _global$4$2)._tag);\n    return enc ? sig.toString(enc) : sig;\n  };\n  function Verify2(algorithm) {\n    stream2.Writable.call(this || _global$4$2);\n    var data = algorithms[algorithm];\n    if (!data) throw new Error(\"Unknown message digest\");\n    (this || _global$4$2)._hash = createHash2(data.hash);\n    (this || _global$4$2)._tag = data.id;\n    (this || _global$4$2)._signType = data.sign;\n  }\n  inherits(Verify2, stream2.Writable);\n  Verify2.prototype._write = function _write(data, _4, done) {\n    (this || _global$4$2)._hash.update(data);\n    done();\n  };\n  Verify2.prototype.update = function update(data, enc) {\n    if (typeof data === \"string\") data = Buffer.from(data, enc);\n    (this || _global$4$2)._hash.update(data);\n    return this || _global$4$2;\n  };\n  Verify2.prototype.verify = function verifyMethod(key, sig, enc) {\n    if (typeof sig === \"string\") sig = Buffer.from(sig, enc);\n    this.end();\n    var hash = (this || _global$4$2)._hash.digest();\n    return verify(sig, hash, key, (this || _global$4$2)._signType, (this || _global$4$2)._tag);\n  };\n  function createSign2(algorithm) {\n    return new Sign2(algorithm);\n  }\n  function createVerify2(algorithm) {\n    return new Verify2(algorithm);\n  }\n  exports$c$3 = {\n    Sign: createSign2,\n    Verify: createVerify2,\n    createSign: createSign2,\n    createVerify: createVerify2\n  };\n  return exports$c$3;\n}\nvar exports$b$3 = {};\nvar _dewExec$a$3 = false;\nvar module$1$2 = {\n  exports: exports$b$3\n};\nvar _global$3$2 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$a$3() {\n  if (_dewExec$a$3) return module$1$2.exports;\n  _dewExec$a$3 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$3$2).negative = 0;\n      (this || _global$3$2).words = null;\n      (this || _global$3$2).length = 0;\n      (this || _global$3$2).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = buffer.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$3$2).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$3$2).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$3$2).words = [number & 67108863];\n        (this || _global$3$2).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$3$2).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$3$2).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$3$2).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$3$2).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$3$2).words = [0];\n        (this || _global$3$2).length = 1;\n        return this || _global$3$2;\n      }\n      (this || _global$3$2).length = Math.ceil(number.length / 3);\n      (this || _global$3$2).words = new Array((this || _global$3$2).length);\n      for (var i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n        (this || _global$3$2).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$3$2).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$3$2).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$3$2).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$3$2).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$3$2).length = Math.ceil((number.length - start) / 6);\n      (this || _global$3$2).words = new Array((this || _global$3$2).length);\n      for (var i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n        (this || _global$3$2).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$3$2).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$3$2).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$3$2).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$3$2).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$3$2).words = [0];\n      (this || _global$3$2).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$3$2).words[0] + word < 67108864) {\n          (this || _global$3$2).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$3$2).words[0] + word < 67108864) {\n          (this || _global$3$2).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$3$2).length);\n      for (var i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n        dest.words[i5] = (this || _global$3$2).words[i5];\n      }\n      dest.length = (this || _global$3$2).length;\n      dest.negative = (this || _global$3$2).negative;\n      dest.red = (this || _global$3$2).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$3$2).length < size) {\n        (this || _global$3$2).words[(this || _global$3$2).length++] = 0;\n      }\n      return this || _global$3$2;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$3$2).length > 1 && (this || _global$3$2).words[(this || _global$3$2).length - 1] === 0) {\n        (this || _global$3$2).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$3$2).length === 1 && (this || _global$3$2).words[0] === 0) {\n        (this || _global$3$2).negative = 0;\n      }\n      return this || _global$3$2;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$3$2).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n          var w4 = (this || _global$3$2).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$3$2).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$3$2).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$3$2).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$3$2).words[0];\n      if ((this || _global$3$2).length === 2) {\n        ret += (this || _global$3$2).words[1] * 67108864;\n      } else if ((this || _global$3$2).length === 3 && (this || _global$3$2).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$3$2).words[1] * 67108864;\n      } else if ((this || _global$3$2).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$3$2).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$3$2).words[(this || _global$3$2).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$3$2).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n        var b4 = this._zeroBits((this || _global$3$2).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$3$2).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$3$2).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$3$2).negative ^= 1;\n      }\n      return this || _global$3$2;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$3$2).length < num.length) {\n        (this || _global$3$2).words[(this || _global$3$2).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$3$2).words[i5] = (this || _global$3$2).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$3$2).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$3$2).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$3$2);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$3$2).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$3$2);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$3$2).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$3$2;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$3$2).words[i5] = (this || _global$3$2).words[i5] & num.words[i5];\n      }\n      (this || _global$3$2).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$3$2).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$3$2).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$3$2);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$3$2).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$3$2);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$3$2).length > num.length) {\n        a5 = this || _global$3$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3$2;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$3$2).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$3$2) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3$2).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$3$2).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$3$2).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$3$2).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$3$2);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$3$2).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$3$2);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$3$2).words[i5] = ~(this || _global$3$2).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$3$2).words[i5] = ~(this || _global$3$2).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$3$2).words[off2] = (this || _global$3$2).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$3$2).words[off2] = (this || _global$3$2).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$3$2).negative !== 0 && num.negative === 0) {\n        (this || _global$3$2).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$3$2).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$3$2).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$3$2).length > num.length) {\n        a5 = this || _global$3$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3$2;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$3$2).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$3$2).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$3$2).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$3$2).words[(this || _global$3$2).length] = carry;\n        (this || _global$3$2).length++;\n      } else if (a5 !== (this || _global$3$2)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3$2).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$3$2;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$3$2).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$3$2).negative !== 0) {\n        (this || _global$3$2).negative = 0;\n        res = num.sub(this || _global$3$2);\n        (this || _global$3$2).negative = 1;\n        return res;\n      }\n      if ((this || _global$3$2).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$3$2);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$3$2).negative !== 0) {\n        (this || _global$3$2).negative = 0;\n        this.iadd(num);\n        (this || _global$3$2).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$3$2).negative = 0;\n        (this || _global$3$2).length = 1;\n        (this || _global$3$2).words[0] = 0;\n        return this || _global$3$2;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$3$2;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3$2;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$3$2).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$3$2).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$3$2)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3$2).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$3$2).length = Math.max((this || _global$3$2).length, i5);\n      if (a5 !== (this || _global$3$2)) {\n        (this || _global$3$2).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$3$2).length + num.length;\n      if ((this || _global$3$2).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$3$2, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$3$2, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$3$2, num, out);\n      } else {\n        res = jumboMulTo(this || _global$3$2, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$3$2).x = x4;\n      (this || _global$3$2).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$3$2).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$3$2).length + num.length);\n      return jumboMulTo(this || _global$3$2, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$3$2);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n        var w4 = ((this || _global$3$2).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$3$2).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$3$2).words[i5] = carry;\n        (this || _global$3$2).length++;\n      }\n      return this || _global$3$2;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$3$2);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$3$2;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n          var newCarry = (this || _global$3$2).words[i5] & carryMask;\n          var c5 = ((this || _global$3$2).words[i5] | 0) - newCarry << r5;\n          (this || _global$3$2).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$3$2).words[i5] = carry;\n          (this || _global$3$2).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$3$2).length - 1; i5 >= 0; i5--) {\n          (this || _global$3$2).words[i5 + s5] = (this || _global$3$2).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$3$2).words[i5] = 0;\n        }\n        (this || _global$3$2).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$3$2).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$3$2).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$3$2).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$3$2).length > s5) {\n        (this || _global$3$2).length -= s5;\n        for (i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n          (this || _global$3$2).words[i5] = (this || _global$3$2).words[i5 + s5];\n        }\n      } else {\n        (this || _global$3$2).words[0] = 0;\n        (this || _global$3$2).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$3$2).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$3$2).words[i5] | 0;\n        (this || _global$3$2).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$3$2).length === 0) {\n        (this || _global$3$2).words[0] = 0;\n        (this || _global$3$2).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$3$2).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$3$2).length <= s5) return false;\n      var w4 = (this || _global$3$2).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$3$2).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$3$2).length <= s5) {\n        return this || _global$3$2;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$3$2).length = Math.min(s5, (this || _global$3$2).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$3$2).words[(this || _global$3$2).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$3$2).negative !== 0) {\n        if ((this || _global$3$2).length === 1 && ((this || _global$3$2).words[0] | 0) < num) {\n          (this || _global$3$2).words[0] = num - ((this || _global$3$2).words[0] | 0);\n          (this || _global$3$2).negative = 0;\n          return this || _global$3$2;\n        }\n        (this || _global$3$2).negative = 0;\n        this.isubn(num);\n        (this || _global$3$2).negative = 1;\n        return this || _global$3$2;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$3$2).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$3$2).length && (this || _global$3$2).words[i5] >= 67108864; i5++) {\n        (this || _global$3$2).words[i5] -= 67108864;\n        if (i5 === (this || _global$3$2).length - 1) {\n          (this || _global$3$2).words[i5 + 1] = 1;\n        } else {\n          (this || _global$3$2).words[i5 + 1]++;\n        }\n      }\n      (this || _global$3$2).length = Math.max((this || _global$3$2).length, i5 + 1);\n      return this || _global$3$2;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$3$2).negative !== 0) {\n        (this || _global$3$2).negative = 0;\n        this.iaddn(num);\n        (this || _global$3$2).negative = 1;\n        return this || _global$3$2;\n      }\n      (this || _global$3$2).words[0] -= num;\n      if ((this || _global$3$2).length === 1 && (this || _global$3$2).words[0] < 0) {\n        (this || _global$3$2).words[0] = -(this || _global$3$2).words[0];\n        (this || _global$3$2).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$3$2).length && (this || _global$3$2).words[i5] < 0; i5++) {\n          (this || _global$3$2).words[i5] += 67108864;\n          (this || _global$3$2).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$3$2).negative = 0;\n      return this || _global$3$2;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$3$2).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$3$2).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$3$2).length - shift; i5++) {\n        w4 = ((this || _global$3$2).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$3$2).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$3$2).length; i5++) {\n        w4 = -((this || _global$3$2).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$3$2).words[i5] = w4 & 67108863;\n      }\n      (this || _global$3$2).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$3$2).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$3$2).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$3$2).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$3$2).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$3$2).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$3$2\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$3$2).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$3$2).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$3$2).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$3$2).words[i5] | 0) + carry * 67108864;\n        (this || _global$3$2).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$3$2;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$3$2;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$3$2).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$3$2).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$3$2).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$3$2).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$3$2).words[s5] |= q3;\n        return this || _global$3$2;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$3$2).length; i5++) {\n        var w4 = (this || _global$3$2).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$3$2).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$3$2).words[i5] = carry;\n        (this || _global$3$2).length++;\n      }\n      return this || _global$3$2;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$3$2).length === 1 && (this || _global$3$2).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$3$2).negative !== 0 && !negative) return -1;\n      if ((this || _global$3$2).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$3$2).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$3$2).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$3$2).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$3$2).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$3$2).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$3$2).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$3$2).length > num.length) return 1;\n      if ((this || _global$3$2).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$3$2).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$3$2).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$3$2).red, \"Already a number in reduction context\");\n      assert2((this || _global$3$2).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$3$2)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$3$2).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$3$2).red.convertFrom(this || _global$3$2);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$3$2).red = ctx;\n      return this || _global$3$2;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$3$2).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$3$2).red, \"redAdd works only with red numbers\");\n      return (this || _global$3$2).red.add(this || _global$3$2, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$3$2).red, \"redIAdd works only with red numbers\");\n      return (this || _global$3$2).red.iadd(this || _global$3$2, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$3$2).red, \"redSub works only with red numbers\");\n      return (this || _global$3$2).red.sub(this || _global$3$2, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$3$2).red, \"redISub works only with red numbers\");\n      return (this || _global$3$2).red.isub(this || _global$3$2, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$3$2).red, \"redShl works only with red numbers\");\n      return (this || _global$3$2).red.shl(this || _global$3$2, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$3$2).red, \"redMul works only with red numbers\");\n      (this || _global$3$2).red._verify2(this || _global$3$2, num);\n      return (this || _global$3$2).red.mul(this || _global$3$2, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$3$2).red, \"redMul works only with red numbers\");\n      (this || _global$3$2).red._verify2(this || _global$3$2, num);\n      return (this || _global$3$2).red.imul(this || _global$3$2, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$3$2).red, \"redSqr works only with red numbers\");\n      (this || _global$3$2).red._verify1(this || _global$3$2);\n      return (this || _global$3$2).red.sqr(this || _global$3$2);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$3$2).red, \"redISqr works only with red numbers\");\n      (this || _global$3$2).red._verify1(this || _global$3$2);\n      return (this || _global$3$2).red.isqr(this || _global$3$2);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$3$2).red, \"redSqrt works only with red numbers\");\n      (this || _global$3$2).red._verify1(this || _global$3$2);\n      return (this || _global$3$2).red.sqrt(this || _global$3$2);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$3$2).red, \"redInvm works only with red numbers\");\n      (this || _global$3$2).red._verify1(this || _global$3$2);\n      return (this || _global$3$2).red.invm(this || _global$3$2);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$3$2).red, \"redNeg works only with red numbers\");\n      (this || _global$3$2).red._verify1(this || _global$3$2);\n      return (this || _global$3$2).red.neg(this || _global$3$2);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$3$2).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$3$2).red._verify1(this || _global$3$2);\n      return (this || _global$3$2).red.pow(this || _global$3$2, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$3$2).name = name2;\n      (this || _global$3$2).p = new BN(p5, 16);\n      (this || _global$3$2).n = (this || _global$3$2).p.bitLength();\n      (this || _global$3$2).k = new BN(1).iushln((this || _global$3$2).n).isub((this || _global$3$2).p);\n      (this || _global$3$2).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$3$2).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$3$2).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$3$2).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$3$2).n);\n      var cmp = rlen < (this || _global$3$2).n ? -1 : r5.ucmp((this || _global$3$2).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$3$2).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$3$2).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$3$2).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$3$2, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$3$2, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$3$2, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$3$2, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$3$2).m = prime.p;\n        (this || _global$3$2).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$3$2).m = m4;\n        (this || _global$3$2).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$3$2).prime) return (this || _global$3$2).prime.ireduce(a5)._forceRed(this || _global$3$2);\n      return a5.umod((this || _global$3$2).m)._forceRed(this || _global$3$2);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$3$2).m.sub(a5)._forceRed(this || _global$3$2);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$3$2).m) >= 0) {\n        res.isub((this || _global$3$2).m);\n      }\n      return res._forceRed(this || _global$3$2);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$3$2).m) >= 0) {\n        res.isub((this || _global$3$2).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$3$2).m);\n      }\n      return res._forceRed(this || _global$3$2);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$3$2).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$3$2).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$3$2).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$3$2).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$3$2);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$3$2).m.subn(1).iushrn(1);\n      var z4 = (this || _global$3$2).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$3$2);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$3$2).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$3$2);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$3$2);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$3$2).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$3$2, m4);\n      (this || _global$3$2).shift = (this || _global$3$2).m.bitLength();\n      if ((this || _global$3$2).shift % 26 !== 0) {\n        (this || _global$3$2).shift += 26 - (this || _global$3$2).shift % 26;\n      }\n      (this || _global$3$2).r = new BN(1).iushln((this || _global$3$2).shift);\n      (this || _global$3$2).r2 = this.imod((this || _global$3$2).r.sqr());\n      (this || _global$3$2).rinv = (this || _global$3$2).r._invmp((this || _global$3$2).m);\n      (this || _global$3$2).minv = (this || _global$3$2).rinv.mul((this || _global$3$2).r).isubn(1).div((this || _global$3$2).m);\n      (this || _global$3$2).minv = (this || _global$3$2).minv.umod((this || _global$3$2).r);\n      (this || _global$3$2).minv = (this || _global$3$2).r.sub((this || _global$3$2).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$3$2).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$3$2).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$3$2).shift).mul((this || _global$3$2).minv).imaskn((this || _global$3$2).shift).mul((this || _global$3$2).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$3$2).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$3$2).m) >= 0) {\n        res = u5.isub((this || _global$3$2).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$3$2).m);\n      }\n      return res._forceRed(this || _global$3$2);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$3$2);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$3$2).shift).mul((this || _global$3$2).minv).imaskn((this || _global$3$2).shift).mul((this || _global$3$2).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$3$2).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$3$2).m) >= 0) {\n        res = u5.isub((this || _global$3$2).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$3$2).m);\n      }\n      return res._forceRed(this || _global$3$2);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$3$2).m).mul((this || _global$3$2).r2));\n      return res._forceRed(this || _global$3$2);\n    };\n  })(module$1$2, exports$b$3);\n  return module$1$2.exports;\n}\nvar exports$a$3 = {};\nvar _dewExec$9$3 = false;\nvar _global$2$3 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$9$3() {\n  if (_dewExec$9$3) return exports$a$3;\n  _dewExec$9$3 = true;\n  var Buffer = buffer.Buffer;\n  var elliptic = dew$y$2();\n  var BN = dew$a$3();\n  exports$a$3 = function createECDH2(curve) {\n    return new ECDH(curve);\n  };\n  var aliases = {\n    secp256k1: {\n      name: \"secp256k1\",\n      byteLength: 32\n    },\n    secp224r1: {\n      name: \"p224\",\n      byteLength: 28\n    },\n    prime256v1: {\n      name: \"p256\",\n      byteLength: 32\n    },\n    prime192v1: {\n      name: \"p192\",\n      byteLength: 24\n    },\n    ed25519: {\n      name: \"ed25519\",\n      byteLength: 32\n    },\n    secp384r1: {\n      name: \"p384\",\n      byteLength: 48\n    },\n    secp521r1: {\n      name: \"p521\",\n      byteLength: 66\n    }\n  };\n  aliases.p224 = aliases.secp224r1;\n  aliases.p256 = aliases.secp256r1 = aliases.prime256v1;\n  aliases.p192 = aliases.secp192r1 = aliases.prime192v1;\n  aliases.p384 = aliases.secp384r1;\n  aliases.p521 = aliases.secp521r1;\n  function ECDH(curve) {\n    (this || _global$2$3).curveType = aliases[curve];\n    if (!(this || _global$2$3).curveType) {\n      (this || _global$2$3).curveType = {\n        name: curve\n      };\n    }\n    (this || _global$2$3).curve = new elliptic.ec((this || _global$2$3).curveType.name);\n    (this || _global$2$3).keys = void 0;\n  }\n  ECDH.prototype.generateKeys = function(enc, format) {\n    (this || _global$2$3).keys = (this || _global$2$3).curve.genKeyPair();\n    return this.getPublicKey(enc, format);\n  };\n  ECDH.prototype.computeSecret = function(other, inenc, enc) {\n    inenc = inenc || \"utf8\";\n    if (!Buffer.isBuffer(other)) {\n      other = new Buffer(other, inenc);\n    }\n    var otherPub = (this || _global$2$3).curve.keyFromPublic(other).getPublic();\n    var out = otherPub.mul((this || _global$2$3).keys.getPrivate()).getX();\n    return formatReturnValue(out, enc, (this || _global$2$3).curveType.byteLength);\n  };\n  ECDH.prototype.getPublicKey = function(enc, format) {\n    var key = (this || _global$2$3).keys.getPublic(format === \"compressed\", true);\n    if (format === \"hybrid\") {\n      if (key[key.length - 1] % 2) {\n        key[0] = 7;\n      } else {\n        key[0] = 6;\n      }\n    }\n    return formatReturnValue(key, enc);\n  };\n  ECDH.prototype.getPrivateKey = function(enc) {\n    return formatReturnValue((this || _global$2$3).keys.getPrivate(), enc);\n  };\n  ECDH.prototype.setPublicKey = function(pub, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(pub)) {\n      pub = new Buffer(pub, enc);\n    }\n    (this || _global$2$3).keys._importPublic(pub);\n    return this || _global$2$3;\n  };\n  ECDH.prototype.setPrivateKey = function(priv, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(priv)) {\n      priv = new Buffer(priv, enc);\n    }\n    var _priv = new BN(priv);\n    _priv = _priv.toString(16);\n    (this || _global$2$3).keys = (this || _global$2$3).curve.genKeyPair();\n    (this || _global$2$3).keys._importPrivate(_priv);\n    return this || _global$2$3;\n  };\n  function formatReturnValue(bn, enc, len) {\n    if (!Array.isArray(bn)) {\n      bn = bn.toArray();\n    }\n    var buf = new Buffer(bn);\n    if (len && buf.length < len) {\n      var zeros = new Buffer(len - buf.length);\n      zeros.fill(0);\n      buf = Buffer.concat([zeros, buf]);\n    }\n    if (!enc) {\n      return buf;\n    } else {\n      return buf.toString(enc);\n    }\n  }\n  return exports$a$3;\n}\nvar exports$9$3 = {};\nvar _dewExec$8$3 = false;\nfunction dew$8$3() {\n  if (_dewExec$8$3) return exports$9$3;\n  _dewExec$8$3 = true;\n  var createHash2 = dew$2y();\n  var Buffer = dew$2P().Buffer;\n  exports$9$3 = function(seed, len) {\n    var t5 = Buffer.alloc(0);\n    var i5 = 0;\n    var c5;\n    while (t5.length < len) {\n      c5 = i2ops(i5++);\n      t5 = Buffer.concat([t5, createHash2(\"sha1\").update(seed).update(c5).digest()]);\n    }\n    return t5.slice(0, len);\n  };\n  function i2ops(c5) {\n    var out = Buffer.allocUnsafe(4);\n    out.writeUInt32BE(c5, 0);\n    return out;\n  }\n  return exports$9$3;\n}\nvar exports$8$3 = {};\nvar _dewExec$7$3 = false;\nfunction dew$7$3() {\n  if (_dewExec$7$3) return exports$8$3;\n  _dewExec$7$3 = true;\n  exports$8$3 = function xor(a5, b4) {\n    var len = a5.length;\n    var i5 = -1;\n    while (++i5 < len) {\n      a5[i5] ^= b4[i5];\n    }\n    return a5;\n  };\n  return exports$8$3;\n}\nvar exports$7$3 = {};\nvar _dewExec$6$3 = false;\nvar module$c = {\n  exports: exports$7$3\n};\nvar _global$1$3 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$6$3() {\n  if (_dewExec$6$3) return module$c.exports;\n  _dewExec$6$3 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$1$3).negative = 0;\n      (this || _global$1$3).words = null;\n      (this || _global$1$3).length = 0;\n      (this || _global$1$3).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = buffer.Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$1$3).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$1$3).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$1$3).words = [number & 67108863];\n        (this || _global$1$3).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$1$3).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$1$3).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$1$3).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$1$3).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$1$3).words = [0];\n        (this || _global$1$3).length = 1;\n        return this || _global$1$3;\n      }\n      (this || _global$1$3).length = Math.ceil(number.length / 3);\n      (this || _global$1$3).words = new Array((this || _global$1$3).length);\n      for (var i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n        (this || _global$1$3).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$1$3).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$1$3).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$1$3).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$1$3).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$1$3).length = Math.ceil((number.length - start) / 6);\n      (this || _global$1$3).words = new Array((this || _global$1$3).length);\n      for (var i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n        (this || _global$1$3).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$1$3).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$1$3).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$1$3).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$1$3).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$1$3).words = [0];\n      (this || _global$1$3).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$1$3).words[0] + word < 67108864) {\n          (this || _global$1$3).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$1$3).words[0] + word < 67108864) {\n          (this || _global$1$3).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$1$3).length);\n      for (var i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n        dest.words[i5] = (this || _global$1$3).words[i5];\n      }\n      dest.length = (this || _global$1$3).length;\n      dest.negative = (this || _global$1$3).negative;\n      dest.red = (this || _global$1$3).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$1$3).length < size) {\n        (this || _global$1$3).words[(this || _global$1$3).length++] = 0;\n      }\n      return this || _global$1$3;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$1$3).length > 1 && (this || _global$1$3).words[(this || _global$1$3).length - 1] === 0) {\n        (this || _global$1$3).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$1$3).length === 1 && (this || _global$1$3).words[0] === 0) {\n        (this || _global$1$3).negative = 0;\n      }\n      return this || _global$1$3;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$1$3).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n          var w4 = (this || _global$1$3).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$1$3).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$1$3).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$1$3).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$1$3).words[0];\n      if ((this || _global$1$3).length === 2) {\n        ret += (this || _global$1$3).words[1] * 67108864;\n      } else if ((this || _global$1$3).length === 3 && (this || _global$1$3).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$1$3).words[1] * 67108864;\n      } else if ((this || _global$1$3).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$1$3).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$1$3).words[(this || _global$1$3).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$1$3).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n        var b4 = this._zeroBits((this || _global$1$3).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$1$3).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$1$3).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$1$3).negative ^= 1;\n      }\n      return this || _global$1$3;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$1$3).length < num.length) {\n        (this || _global$1$3).words[(this || _global$1$3).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$1$3).words[i5] = (this || _global$1$3).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$1$3).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$1$3).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$1$3);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$1$3).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$1$3);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$1$3).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$1$3;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$1$3).words[i5] = (this || _global$1$3).words[i5] & num.words[i5];\n      }\n      (this || _global$1$3).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$1$3).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$1$3).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$1$3);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$1$3).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$1$3);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$1$3).length > num.length) {\n        a5 = this || _global$1$3;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$1$3;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$1$3).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$1$3) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$1$3).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$1$3).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$1$3).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$1$3).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$1$3);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$1$3).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$1$3);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$1$3).words[i5] = ~(this || _global$1$3).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$1$3).words[i5] = ~(this || _global$1$3).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$1$3).words[off2] = (this || _global$1$3).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$1$3).words[off2] = (this || _global$1$3).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$1$3).negative !== 0 && num.negative === 0) {\n        (this || _global$1$3).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$1$3).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$1$3).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$1$3).length > num.length) {\n        a5 = this || _global$1$3;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$1$3;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$1$3).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$1$3).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$1$3).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$1$3).words[(this || _global$1$3).length] = carry;\n        (this || _global$1$3).length++;\n      } else if (a5 !== (this || _global$1$3)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$1$3).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$1$3;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$1$3).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$1$3).negative !== 0) {\n        (this || _global$1$3).negative = 0;\n        res = num.sub(this || _global$1$3);\n        (this || _global$1$3).negative = 1;\n        return res;\n      }\n      if ((this || _global$1$3).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$1$3);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$1$3).negative !== 0) {\n        (this || _global$1$3).negative = 0;\n        this.iadd(num);\n        (this || _global$1$3).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$1$3).negative = 0;\n        (this || _global$1$3).length = 1;\n        (this || _global$1$3).words[0] = 0;\n        return this || _global$1$3;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$1$3;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$1$3;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$1$3).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$1$3).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$1$3)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$1$3).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$1$3).length = Math.max((this || _global$1$3).length, i5);\n      if (a5 !== (this || _global$1$3)) {\n        (this || _global$1$3).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$1$3).length + num.length;\n      if ((this || _global$1$3).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$1$3, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$1$3, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$1$3, num, out);\n      } else {\n        res = jumboMulTo(this || _global$1$3, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$1$3).x = x4;\n      (this || _global$1$3).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$1$3).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$1$3).length + num.length);\n      return jumboMulTo(this || _global$1$3, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$1$3);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n        var w4 = ((this || _global$1$3).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$1$3).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$1$3).words[i5] = carry;\n        (this || _global$1$3).length++;\n      }\n      return this || _global$1$3;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$1$3);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$1$3;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n          var newCarry = (this || _global$1$3).words[i5] & carryMask;\n          var c5 = ((this || _global$1$3).words[i5] | 0) - newCarry << r5;\n          (this || _global$1$3).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$1$3).words[i5] = carry;\n          (this || _global$1$3).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$1$3).length - 1; i5 >= 0; i5--) {\n          (this || _global$1$3).words[i5 + s5] = (this || _global$1$3).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$1$3).words[i5] = 0;\n        }\n        (this || _global$1$3).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$1$3).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$1$3).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$1$3).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$1$3).length > s5) {\n        (this || _global$1$3).length -= s5;\n        for (i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n          (this || _global$1$3).words[i5] = (this || _global$1$3).words[i5 + s5];\n        }\n      } else {\n        (this || _global$1$3).words[0] = 0;\n        (this || _global$1$3).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$1$3).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$1$3).words[i5] | 0;\n        (this || _global$1$3).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$1$3).length === 0) {\n        (this || _global$1$3).words[0] = 0;\n        (this || _global$1$3).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$1$3).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$1$3).length <= s5) return false;\n      var w4 = (this || _global$1$3).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$1$3).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$1$3).length <= s5) {\n        return this || _global$1$3;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$1$3).length = Math.min(s5, (this || _global$1$3).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$1$3).words[(this || _global$1$3).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$1$3).negative !== 0) {\n        if ((this || _global$1$3).length === 1 && ((this || _global$1$3).words[0] | 0) < num) {\n          (this || _global$1$3).words[0] = num - ((this || _global$1$3).words[0] | 0);\n          (this || _global$1$3).negative = 0;\n          return this || _global$1$3;\n        }\n        (this || _global$1$3).negative = 0;\n        this.isubn(num);\n        (this || _global$1$3).negative = 1;\n        return this || _global$1$3;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$1$3).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$1$3).length && (this || _global$1$3).words[i5] >= 67108864; i5++) {\n        (this || _global$1$3).words[i5] -= 67108864;\n        if (i5 === (this || _global$1$3).length - 1) {\n          (this || _global$1$3).words[i5 + 1] = 1;\n        } else {\n          (this || _global$1$3).words[i5 + 1]++;\n        }\n      }\n      (this || _global$1$3).length = Math.max((this || _global$1$3).length, i5 + 1);\n      return this || _global$1$3;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$1$3).negative !== 0) {\n        (this || _global$1$3).negative = 0;\n        this.iaddn(num);\n        (this || _global$1$3).negative = 1;\n        return this || _global$1$3;\n      }\n      (this || _global$1$3).words[0] -= num;\n      if ((this || _global$1$3).length === 1 && (this || _global$1$3).words[0] < 0) {\n        (this || _global$1$3).words[0] = -(this || _global$1$3).words[0];\n        (this || _global$1$3).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$1$3).length && (this || _global$1$3).words[i5] < 0; i5++) {\n          (this || _global$1$3).words[i5] += 67108864;\n          (this || _global$1$3).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$1$3).negative = 0;\n      return this || _global$1$3;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$1$3).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$1$3).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$1$3).length - shift; i5++) {\n        w4 = ((this || _global$1$3).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$1$3).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$1$3).length; i5++) {\n        w4 = -((this || _global$1$3).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$1$3).words[i5] = w4 & 67108863;\n      }\n      (this || _global$1$3).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$1$3).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$1$3).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$1$3).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$1$3).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$1$3).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$1$3\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$1$3).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$1$3).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$1$3).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$1$3).words[i5] | 0) + carry * 67108864;\n        (this || _global$1$3).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$1$3;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$1$3;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$1$3).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$1$3).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$1$3).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$1$3).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$1$3).words[s5] |= q3;\n        return this || _global$1$3;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$1$3).length; i5++) {\n        var w4 = (this || _global$1$3).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$1$3).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$1$3).words[i5] = carry;\n        (this || _global$1$3).length++;\n      }\n      return this || _global$1$3;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$1$3).length === 1 && (this || _global$1$3).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$1$3).negative !== 0 && !negative) return -1;\n      if ((this || _global$1$3).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$1$3).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$1$3).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$1$3).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$1$3).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$1$3).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$1$3).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$1$3).length > num.length) return 1;\n      if ((this || _global$1$3).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$1$3).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$1$3).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$1$3).red, \"Already a number in reduction context\");\n      assert2((this || _global$1$3).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$1$3)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$1$3).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$1$3).red.convertFrom(this || _global$1$3);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$1$3).red = ctx;\n      return this || _global$1$3;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$1$3).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$1$3).red, \"redAdd works only with red numbers\");\n      return (this || _global$1$3).red.add(this || _global$1$3, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$1$3).red, \"redIAdd works only with red numbers\");\n      return (this || _global$1$3).red.iadd(this || _global$1$3, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$1$3).red, \"redSub works only with red numbers\");\n      return (this || _global$1$3).red.sub(this || _global$1$3, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$1$3).red, \"redISub works only with red numbers\");\n      return (this || _global$1$3).red.isub(this || _global$1$3, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$1$3).red, \"redShl works only with red numbers\");\n      return (this || _global$1$3).red.shl(this || _global$1$3, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$1$3).red, \"redMul works only with red numbers\");\n      (this || _global$1$3).red._verify2(this || _global$1$3, num);\n      return (this || _global$1$3).red.mul(this || _global$1$3, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$1$3).red, \"redMul works only with red numbers\");\n      (this || _global$1$3).red._verify2(this || _global$1$3, num);\n      return (this || _global$1$3).red.imul(this || _global$1$3, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$1$3).red, \"redSqr works only with red numbers\");\n      (this || _global$1$3).red._verify1(this || _global$1$3);\n      return (this || _global$1$3).red.sqr(this || _global$1$3);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$1$3).red, \"redISqr works only with red numbers\");\n      (this || _global$1$3).red._verify1(this || _global$1$3);\n      return (this || _global$1$3).red.isqr(this || _global$1$3);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$1$3).red, \"redSqrt works only with red numbers\");\n      (this || _global$1$3).red._verify1(this || _global$1$3);\n      return (this || _global$1$3).red.sqrt(this || _global$1$3);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$1$3).red, \"redInvm works only with red numbers\");\n      (this || _global$1$3).red._verify1(this || _global$1$3);\n      return (this || _global$1$3).red.invm(this || _global$1$3);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$1$3).red, \"redNeg works only with red numbers\");\n      (this || _global$1$3).red._verify1(this || _global$1$3);\n      return (this || _global$1$3).red.neg(this || _global$1$3);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$1$3).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$1$3).red._verify1(this || _global$1$3);\n      return (this || _global$1$3).red.pow(this || _global$1$3, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$1$3).name = name2;\n      (this || _global$1$3).p = new BN(p5, 16);\n      (this || _global$1$3).n = (this || _global$1$3).p.bitLength();\n      (this || _global$1$3).k = new BN(1).iushln((this || _global$1$3).n).isub((this || _global$1$3).p);\n      (this || _global$1$3).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$1$3).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$1$3).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$1$3).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$1$3).n);\n      var cmp = rlen < (this || _global$1$3).n ? -1 : r5.ucmp((this || _global$1$3).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$1$3).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$1$3).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$1$3).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$1$3, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$1$3, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$1$3, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$1$3, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$1$3).m = prime.p;\n        (this || _global$1$3).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$1$3).m = m4;\n        (this || _global$1$3).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$1$3).prime) return (this || _global$1$3).prime.ireduce(a5)._forceRed(this || _global$1$3);\n      return a5.umod((this || _global$1$3).m)._forceRed(this || _global$1$3);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$1$3).m.sub(a5)._forceRed(this || _global$1$3);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$1$3).m) >= 0) {\n        res.isub((this || _global$1$3).m);\n      }\n      return res._forceRed(this || _global$1$3);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$1$3).m) >= 0) {\n        res.isub((this || _global$1$3).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$1$3).m);\n      }\n      return res._forceRed(this || _global$1$3);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$1$3).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$1$3).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$1$3).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$1$3).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$1$3);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$1$3).m.subn(1).iushrn(1);\n      var z4 = (this || _global$1$3).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$1$3);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$1$3).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$1$3);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$1$3);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$1$3).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$1$3, m4);\n      (this || _global$1$3).shift = (this || _global$1$3).m.bitLength();\n      if ((this || _global$1$3).shift % 26 !== 0) {\n        (this || _global$1$3).shift += 26 - (this || _global$1$3).shift % 26;\n      }\n      (this || _global$1$3).r = new BN(1).iushln((this || _global$1$3).shift);\n      (this || _global$1$3).r2 = this.imod((this || _global$1$3).r.sqr());\n      (this || _global$1$3).rinv = (this || _global$1$3).r._invmp((this || _global$1$3).m);\n      (this || _global$1$3).minv = (this || _global$1$3).rinv.mul((this || _global$1$3).r).isubn(1).div((this || _global$1$3).m);\n      (this || _global$1$3).minv = (this || _global$1$3).minv.umod((this || _global$1$3).r);\n      (this || _global$1$3).minv = (this || _global$1$3).r.sub((this || _global$1$3).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$1$3).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$1$3).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$1$3).shift).mul((this || _global$1$3).minv).imaskn((this || _global$1$3).shift).mul((this || _global$1$3).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$1$3).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$1$3).m) >= 0) {\n        res = u5.isub((this || _global$1$3).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$1$3).m);\n      }\n      return res._forceRed(this || _global$1$3);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$1$3);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$1$3).shift).mul((this || _global$1$3).minv).imaskn((this || _global$1$3).shift).mul((this || _global$1$3).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$1$3).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$1$3).m) >= 0) {\n        res = u5.isub((this || _global$1$3).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$1$3).m);\n      }\n      return res._forceRed(this || _global$1$3);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$1$3).m).mul((this || _global$1$3).r2));\n      return res._forceRed(this || _global$1$3);\n    };\n  })(module$c, exports$7$3);\n  return module$c.exports;\n}\nvar exports$6$3 = {};\nvar _dewExec$5$3 = false;\nfunction dew$5$3() {\n  if (_dewExec$5$3) return exports$6$3;\n  _dewExec$5$3 = true;\n  var BN = dew$6$3();\n  var Buffer = dew$2P().Buffer;\n  function withPublic(paddedMsg, key) {\n    return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n  }\n  exports$6$3 = withPublic;\n  return exports$6$3;\n}\nvar exports$5$3 = {};\nvar _dewExec$4$3 = false;\nfunction dew$4$3() {\n  if (_dewExec$4$3) return exports$5$3;\n  _dewExec$4$3 = true;\n  var parseKeys = dew$e$3();\n  var randomBytes2 = dew$2O();\n  var createHash2 = dew$2y();\n  var mgf = dew$8$3();\n  var xor = dew$7$3();\n  var BN = dew$6$3();\n  var withPublic = dew$5$3();\n  var crt = dew$W$2();\n  var Buffer = dew$2P().Buffer;\n  exports$5$3 = function publicEncrypt2(publicKey, msg, reverse) {\n    var padding;\n    if (publicKey.padding) {\n      padding = publicKey.padding;\n    } else if (reverse) {\n      padding = 1;\n    } else {\n      padding = 4;\n    }\n    var key = parseKeys(publicKey);\n    var paddedMsg;\n    if (padding === 4) {\n      paddedMsg = oaep(key, msg);\n    } else if (padding === 1) {\n      paddedMsg = pkcs1(key, msg, reverse);\n    } else if (padding === 3) {\n      paddedMsg = new BN(msg);\n      if (paddedMsg.cmp(key.modulus) >= 0) {\n        throw new Error(\"data too long for modulus\");\n      }\n    } else {\n      throw new Error(\"unknown padding\");\n    }\n    if (reverse) {\n      return crt(paddedMsg, key);\n    } else {\n      return withPublic(paddedMsg, key);\n    }\n  };\n  function oaep(key, msg) {\n    var k4 = key.modulus.byteLength();\n    var mLen = msg.length;\n    var iHash = createHash2(\"sha1\").update(Buffer.alloc(0)).digest();\n    var hLen = iHash.length;\n    var hLen2 = 2 * hLen;\n    if (mLen > k4 - hLen2 - 2) {\n      throw new Error(\"message too long\");\n    }\n    var ps = Buffer.alloc(k4 - mLen - hLen2 - 2);\n    var dblen = k4 - hLen - 1;\n    var seed = randomBytes2(hLen);\n    var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen));\n    var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n    return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k4));\n  }\n  function pkcs1(key, msg, reverse) {\n    var mLen = msg.length;\n    var k4 = key.modulus.byteLength();\n    if (mLen > k4 - 11) {\n      throw new Error(\"message too long\");\n    }\n    var ps;\n    if (reverse) {\n      ps = Buffer.alloc(k4 - mLen - 3, 255);\n    } else {\n      ps = nonZero(k4 - mLen - 3);\n    }\n    return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k4));\n  }\n  function nonZero(len) {\n    var out = Buffer.allocUnsafe(len);\n    var i5 = 0;\n    var cache = randomBytes2(len * 2);\n    var cur = 0;\n    var num;\n    while (i5 < len) {\n      if (cur === cache.length) {\n        cache = randomBytes2(len * 2);\n        cur = 0;\n      }\n      num = cache[cur++];\n      if (num) {\n        out[i5++] = num;\n      }\n    }\n    return out;\n  }\n  return exports$5$3;\n}\nvar exports$4$3 = {};\nvar _dewExec$3$3 = false;\nfunction dew$3$3() {\n  if (_dewExec$3$3) return exports$4$3;\n  _dewExec$3$3 = true;\n  var parseKeys = dew$e$3();\n  var mgf = dew$8$3();\n  var xor = dew$7$3();\n  var BN = dew$6$3();\n  var crt = dew$W$2();\n  var createHash2 = dew$2y();\n  var withPublic = dew$5$3();\n  var Buffer = dew$2P().Buffer;\n  exports$4$3 = function privateDecrypt2(privateKey, enc, reverse) {\n    var padding;\n    if (privateKey.padding) {\n      padding = privateKey.padding;\n    } else if (reverse) {\n      padding = 1;\n    } else {\n      padding = 4;\n    }\n    var key = parseKeys(privateKey);\n    var k4 = key.modulus.byteLength();\n    if (enc.length > k4 || new BN(enc).cmp(key.modulus) >= 0) {\n      throw new Error(\"decryption error\");\n    }\n    var msg;\n    if (reverse) {\n      msg = withPublic(new BN(enc), key);\n    } else {\n      msg = crt(enc, key);\n    }\n    var zBuffer = Buffer.alloc(k4 - msg.length);\n    msg = Buffer.concat([zBuffer, msg], k4);\n    if (padding === 4) {\n      return oaep(key, msg);\n    } else if (padding === 1) {\n      return pkcs1(key, msg, reverse);\n    } else if (padding === 3) {\n      return msg;\n    } else {\n      throw new Error(\"unknown padding\");\n    }\n  };\n  function oaep(key, msg) {\n    var k4 = key.modulus.byteLength();\n    var iHash = createHash2(\"sha1\").update(Buffer.alloc(0)).digest();\n    var hLen = iHash.length;\n    if (msg[0] !== 0) {\n      throw new Error(\"decryption error\");\n    }\n    var maskedSeed = msg.slice(1, hLen + 1);\n    var maskedDb = msg.slice(hLen + 1);\n    var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n    var db = xor(maskedDb, mgf(seed, k4 - hLen - 1));\n    if (compare(iHash, db.slice(0, hLen))) {\n      throw new Error(\"decryption error\");\n    }\n    var i5 = hLen;\n    while (db[i5] === 0) {\n      i5++;\n    }\n    if (db[i5++] !== 1) {\n      throw new Error(\"decryption error\");\n    }\n    return db.slice(i5);\n  }\n  function pkcs1(key, msg, reverse) {\n    var p1 = msg.slice(0, 2);\n    var i5 = 2;\n    var status = 0;\n    while (msg[i5++] !== 0) {\n      if (i5 >= msg.length) {\n        status++;\n        break;\n      }\n    }\n    var ps = msg.slice(2, i5 - 1);\n    if (p1.toString(\"hex\") !== \"0002\" && !reverse || p1.toString(\"hex\") !== \"0001\" && reverse) {\n      status++;\n    }\n    if (ps.length < 8) {\n      status++;\n    }\n    if (status) {\n      throw new Error(\"decryption error\");\n    }\n    return msg.slice(i5);\n  }\n  function compare(a5, b4) {\n    a5 = Buffer.from(a5);\n    b4 = Buffer.from(b4);\n    var dif = 0;\n    var len = a5.length;\n    if (a5.length !== b4.length) {\n      dif++;\n      len = Math.min(a5.length, b4.length);\n    }\n    var i5 = -1;\n    while (++i5 < len) {\n      dif += a5[i5] ^ b4[i5];\n    }\n    return dif;\n  }\n  return exports$4$3;\n}\nvar exports$3$3 = {};\nvar _dewExec$2$3 = false;\nfunction dew$2$3() {\n  if (_dewExec$2$3) return exports$3$3;\n  _dewExec$2$3 = true;\n  exports$3$3.publicEncrypt = dew$4$3();\n  exports$3$3.privateDecrypt = dew$3$3();\n  exports$3$3.privateEncrypt = function privateEncrypt2(key, buf) {\n    return exports$3$3.publicEncrypt(key, buf, true);\n  };\n  exports$3$3.publicDecrypt = function publicDecrypt2(key, buf) {\n    return exports$3$3.privateDecrypt(key, buf, true);\n  };\n  return exports$3$3;\n}\nvar exports$2$3 = {};\nvar _dewExec$1$3 = false;\nvar _global$V = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1$3() {\n  if (_dewExec$1$3) return exports$2$3;\n  _dewExec$1$3 = true;\n  var process$1$1 = process2;\n  function oldBrowser() {\n    throw new Error(\"secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11\");\n  }\n  var safeBuffer = dew$2P();\n  var randombytes = dew$2O();\n  var Buffer = safeBuffer.Buffer;\n  var kBufferMaxLength = safeBuffer.kMaxLength;\n  var crypto2 = _global$V.crypto || _global$V.msCrypto;\n  var kMaxUint32 = Math.pow(2, 32) - 1;\n  function assertOffset(offset, length) {\n    if (typeof offset !== \"number\" || offset !== offset) {\n      throw new TypeError(\"offset must be a number\");\n    }\n    if (offset > kMaxUint32 || offset < 0) {\n      throw new TypeError(\"offset must be a uint32\");\n    }\n    if (offset > kBufferMaxLength || offset > length) {\n      throw new RangeError(\"offset out of range\");\n    }\n  }\n  function assertSize(size, offset, length) {\n    if (typeof size !== \"number\" || size !== size) {\n      throw new TypeError(\"size must be a number\");\n    }\n    if (size > kMaxUint32 || size < 0) {\n      throw new TypeError(\"size must be a uint32\");\n    }\n    if (size + offset > length || size > kBufferMaxLength) {\n      throw new RangeError(\"buffer too small\");\n    }\n  }\n  if (crypto2 && crypto2.getRandomValues || !process$1$1.browser) {\n    exports$2$3.randomFill = randomFill2;\n    exports$2$3.randomFillSync = randomFillSync2;\n  } else {\n    exports$2$3.randomFill = oldBrowser;\n    exports$2$3.randomFillSync = oldBrowser;\n  }\n  function randomFill2(buf, offset, size, cb) {\n    if (!Buffer.isBuffer(buf) && !(buf instanceof _global$V.Uint8Array)) {\n      throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n    }\n    if (typeof offset === \"function\") {\n      cb = offset;\n      offset = 0;\n      size = buf.length;\n    } else if (typeof size === \"function\") {\n      cb = size;\n      size = buf.length - offset;\n    } else if (typeof cb !== \"function\") {\n      throw new TypeError('\"cb\" argument must be a function');\n    }\n    assertOffset(offset, buf.length);\n    assertSize(size, offset, buf.length);\n    return actualFill(buf, offset, size, cb);\n  }\n  function actualFill(buf, offset, size, cb) {\n    if (process$1$1.browser) {\n      var ourBuf = buf.buffer;\n      var uint = new Uint8Array(ourBuf, offset, size);\n      crypto2.getRandomValues(uint);\n      if (cb) {\n        process$1$1.nextTick(function() {\n          cb(null, buf);\n        });\n        return;\n      }\n      return buf;\n    }\n    if (cb) {\n      randombytes(size, function(err, bytes2) {\n        if (err) {\n          return cb(err);\n        }\n        bytes2.copy(buf, offset);\n        cb(null, buf);\n      });\n      return;\n    }\n    var bytes = randombytes(size);\n    bytes.copy(buf, offset);\n    return buf;\n  }\n  function randomFillSync2(buf, offset, size) {\n    if (typeof offset === \"undefined\") {\n      offset = 0;\n    }\n    if (!Buffer.isBuffer(buf) && !(buf instanceof _global$V.Uint8Array)) {\n      throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n    }\n    assertOffset(offset, buf.length);\n    if (size === void 0) size = buf.length - offset;\n    assertSize(size, offset, buf.length);\n    return actualFill(buf, offset, size);\n  }\n  return exports$2$3;\n}\nvar exports$1$3 = {};\nvar _dewExec$2Q = false;\nfunction dew$2Q() {\n  if (_dewExec$2Q) return exports$1$3;\n  _dewExec$2Q = true;\n  exports$1$3.randomBytes = exports$1$3.rng = exports$1$3.pseudoRandomBytes = exports$1$3.prng = dew$2O();\n  exports$1$3.createHash = exports$1$3.Hash = dew$2y();\n  exports$1$3.createHmac = exports$1$3.Hmac = dew$2v();\n  var algos = dew$2u();\n  var algoKeys = Object.keys(algos);\n  var hashes = [\"sha1\", \"sha224\", \"sha256\", \"sha384\", \"sha512\", \"md5\", \"rmd160\"].concat(algoKeys);\n  exports$1$3.getHashes = function() {\n    return hashes;\n  };\n  var p5 = dew$2o();\n  exports$1$3.pbkdf2 = p5.pbkdf2;\n  exports$1$3.pbkdf2Sync = p5.pbkdf2Sync;\n  var aes = dew$1Y();\n  exports$1$3.Cipher = aes.Cipher;\n  exports$1$3.createCipher = aes.createCipher;\n  exports$1$3.Cipheriv = aes.Cipheriv;\n  exports$1$3.createCipheriv = aes.createCipheriv;\n  exports$1$3.Decipher = aes.Decipher;\n  exports$1$3.createDecipher = aes.createDecipher;\n  exports$1$3.Decipheriv = aes.Decipheriv;\n  exports$1$3.createDecipheriv = aes.createDecipheriv;\n  exports$1$3.getCiphers = aes.getCiphers;\n  exports$1$3.listCiphers = aes.listCiphers;\n  var dh = dew$Z$2();\n  exports$1$3.DiffieHellmanGroup = dh.DiffieHellmanGroup;\n  exports$1$3.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\n  exports$1$3.getDiffieHellman = dh.getDiffieHellman;\n  exports$1$3.createDiffieHellman = dh.createDiffieHellman;\n  exports$1$3.DiffieHellman = dh.DiffieHellman;\n  var sign = dew$b$3();\n  exports$1$3.createSign = sign.createSign;\n  exports$1$3.Sign = sign.Sign;\n  exports$1$3.createVerify = sign.createVerify;\n  exports$1$3.Verify = sign.Verify;\n  exports$1$3.createECDH = dew$9$3();\n  var publicEncrypt2 = dew$2$3();\n  exports$1$3.publicEncrypt = publicEncrypt2.publicEncrypt;\n  exports$1$3.privateEncrypt = publicEncrypt2.privateEncrypt;\n  exports$1$3.publicDecrypt = publicEncrypt2.publicDecrypt;\n  exports$1$3.privateDecrypt = publicEncrypt2.privateDecrypt;\n  var rf = dew$1$3();\n  exports$1$3.randomFill = rf.randomFill;\n  exports$1$3.randomFillSync = rf.randomFillSync;\n  exports$1$3.createCredentials = function() {\n    throw new Error([\"sorry, createCredentials is not implemented yet\", \"we accept pull requests\", \"https://github.com/crypto-browserify/crypto-browserify\"].join(\"\\n\"));\n  };\n  exports$1$3.constants = {\n    \"DH_CHECK_P_NOT_SAFE_PRIME\": 2,\n    \"DH_CHECK_P_NOT_PRIME\": 1,\n    \"DH_UNABLE_TO_CHECK_GENERATOR\": 4,\n    \"DH_NOT_SUITABLE_GENERATOR\": 8,\n    \"NPN_ENABLED\": 1,\n    \"ALPN_ENABLED\": 1,\n    \"RSA_PKCS1_PADDING\": 1,\n    \"RSA_SSLV23_PADDING\": 2,\n    \"RSA_NO_PADDING\": 3,\n    \"RSA_PKCS1_OAEP_PADDING\": 4,\n    \"RSA_X931_PADDING\": 5,\n    \"RSA_PKCS1_PSS_PADDING\": 6,\n    \"POINT_CONVERSION_COMPRESSED\": 2,\n    \"POINT_CONVERSION_UNCOMPRESSED\": 4,\n    \"POINT_CONVERSION_HYBRID\": 6\n  };\n  return exports$1$3;\n}\nvar exports$2R = dew$2Q();\nexports$2R[\"randomBytes\"];\nexports$2R[\"rng\"];\nexports$2R[\"pseudoRandomBytes\"];\nexports$2R[\"prng\"];\nexports$2R[\"createHash\"];\nexports$2R[\"Hash\"];\nexports$2R[\"createHmac\"];\nexports$2R[\"Hmac\"];\nexports$2R[\"getHashes\"];\nexports$2R[\"pbkdf2\"];\nexports$2R[\"pbkdf2Sync\"];\nexports$2R[\"Cipher\"];\nexports$2R[\"createCipher\"];\nexports$2R[\"Cipheriv\"];\nexports$2R[\"createCipheriv\"];\nexports$2R[\"Decipher\"];\nexports$2R[\"createDecipher\"];\nexports$2R[\"Decipheriv\"];\nexports$2R[\"createDecipheriv\"];\nexports$2R[\"getCiphers\"];\nexports$2R[\"listCiphers\"];\nexports$2R[\"DiffieHellmanGroup\"];\nexports$2R[\"createDiffieHellmanGroup\"];\nexports$2R[\"getDiffieHellman\"];\nexports$2R[\"createDiffieHellman\"];\nexports$2R[\"DiffieHellman\"];\nexports$2R[\"createSign\"];\nexports$2R[\"Sign\"];\nexports$2R[\"createVerify\"];\nexports$2R[\"Verify\"];\nexports$2R[\"createECDH\"];\nexports$2R[\"publicEncrypt\"];\nexports$2R[\"privateEncrypt\"];\nexports$2R[\"publicDecrypt\"];\nexports$2R[\"privateDecrypt\"];\nexports$2R[\"randomFill\"];\nexports$2R[\"randomFillSync\"];\nexports$2R[\"createCredentials\"];\nexports$2R[\"constants\"];\nexports$2R.webcrypto = globalThis.crypto;\nexports$2R.Cipher;\nexports$2R.Cipheriv;\nexports$2R.Decipher;\nexports$2R.Decipheriv;\nexports$2R.DiffieHellman;\nexports$2R.DiffieHellmanGroup;\nexports$2R.Hash;\nexports$2R.Hmac;\nexports$2R.Sign;\nexports$2R.Verify;\nexports$2R.constants;\nexports$2R.createCipher;\nexports$2R.createCipheriv;\nexports$2R.createCredentials;\nexports$2R.createDecipher;\nexports$2R.createDecipheriv;\nexports$2R.createDiffieHellman;\nexports$2R.createDiffieHellmanGroup;\nexports$2R.createECDH;\nexports$2R.createHash;\nexports$2R.createHmac;\nexports$2R.createSign;\nexports$2R.createVerify;\nexports$2R.getCiphers;\nexports$2R.getDiffieHellman;\nexports$2R.getHashes;\nexports$2R.listCiphers;\nexports$2R.pbkdf2;\nexports$2R.pbkdf2Sync;\nexports$2R.privateDecrypt;\nexports$2R.privateEncrypt;\nexports$2R.prng;\nexports$2R.pseudoRandomBytes;\nexports$2R.publicDecrypt;\nexports$2R.publicEncrypt;\nexports$2R.randomBytes;\nexports$2R.randomFill;\nexports$2R.randomFillSync;\nexports$2R.rng;\nexports$2R.webcrypto;\nvar exports$1j = {};\nvar _dewExec$1i = false;\nvar _global$j = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1i() {\n  if (_dewExec$1i) return exports$1j;\n  _dewExec$1i = true;\n  var r5;\n  exports$1j = function rand(len) {\n    if (!r5) r5 = new Rand(null);\n    return r5.generate(len);\n  };\n  function Rand(rand) {\n    (this || _global$j).rand = rand;\n  }\n  exports$1j.Rand = Rand;\n  Rand.prototype.generate = function generate(len) {\n    return this._rand(len);\n  };\n  Rand.prototype._rand = function _rand(n5) {\n    if ((this || _global$j).rand.getBytes) return (this || _global$j).rand.getBytes(n5);\n    var res = new Uint8Array(n5);\n    for (var i5 = 0; i5 < res.length; i5++) res[i5] = (this || _global$j).rand.getByte();\n    return res;\n  };\n  if (typeof self === \"object\") {\n    if (self.crypto && self.crypto.getRandomValues) {\n      Rand.prototype._rand = function _rand(n5) {\n        var arr = new Uint8Array(n5);\n        self.crypto.getRandomValues(arr);\n        return arr;\n      };\n    } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n      Rand.prototype._rand = function _rand(n5) {\n        var arr = new Uint8Array(n5);\n        self.msCrypto.getRandomValues(arr);\n        return arr;\n      };\n    } else if (typeof window === \"object\") {\n      Rand.prototype._rand = function() {\n        throw new Error(\"Not implemented yet\");\n      };\n    }\n  } else {\n    try {\n      var crypto2 = exports$2R;\n      if (typeof crypto2.randomBytes !== \"function\") throw new Error(\"Not supported\");\n      Rand.prototype._rand = function _rand(n5) {\n        return crypto2.randomBytes(n5);\n      };\n    } catch (e7) {\n    }\n  }\n  return exports$1j;\n}\nvar exports$1i = {};\nvar _dewExec$1h = false;\nvar _global$i = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1h() {\n  if (_dewExec$1h) return exports$1i;\n  _dewExec$1h = true;\n  var bn = dew$2R();\n  var brorand = dew$1i();\n  function MillerRabin(rand) {\n    (this || _global$i).rand = rand || new brorand.Rand();\n  }\n  exports$1i = MillerRabin;\n  MillerRabin.create = function create(rand) {\n    return new MillerRabin(rand);\n  };\n  MillerRabin.prototype._randbelow = function _randbelow(n5) {\n    var len = n5.bitLength();\n    var min_bytes = Math.ceil(len / 8);\n    do\n      var a5 = new bn((this || _global$i).rand.generate(min_bytes));\n    while (a5.cmp(n5) >= 0);\n    return a5;\n  };\n  MillerRabin.prototype._randrange = function _randrange(start, stop) {\n    var size = stop.sub(start);\n    return start.add(this._randbelow(size));\n  };\n  MillerRabin.prototype.test = function test(n5, k4, cb) {\n    var len = n5.bitLength();\n    var red = bn.mont(n5);\n    var rone = new bn(1).toRed(red);\n    if (!k4) k4 = Math.max(1, len / 48 | 0);\n    var n1 = n5.subn(1);\n    for (var s5 = 0; !n1.testn(s5); s5++) {\n    }\n    var d4 = n5.shrn(s5);\n    var rn1 = n1.toRed(red);\n    var prime = true;\n    for (; k4 > 0; k4--) {\n      var a5 = this._randrange(new bn(2), n1);\n      if (cb) cb(a5);\n      var x4 = a5.toRed(red).redPow(d4);\n      if (x4.cmp(rone) === 0 || x4.cmp(rn1) === 0) continue;\n      for (var i5 = 1; i5 < s5; i5++) {\n        x4 = x4.redSqr();\n        if (x4.cmp(rone) === 0) return false;\n        if (x4.cmp(rn1) === 0) break;\n      }\n      if (i5 === s5) return false;\n    }\n    return prime;\n  };\n  MillerRabin.prototype.getDivisor = function getDivisor(n5, k4) {\n    var len = n5.bitLength();\n    var red = bn.mont(n5);\n    var rone = new bn(1).toRed(red);\n    if (!k4) k4 = Math.max(1, len / 48 | 0);\n    var n1 = n5.subn(1);\n    for (var s5 = 0; !n1.testn(s5); s5++) {\n    }\n    var d4 = n5.shrn(s5);\n    var rn1 = n1.toRed(red);\n    for (; k4 > 0; k4--) {\n      var a5 = this._randrange(new bn(2), n1);\n      var g4 = n5.gcd(a5);\n      if (g4.cmpn(1) !== 0) return g4;\n      var x4 = a5.toRed(red).redPow(d4);\n      if (x4.cmp(rone) === 0 || x4.cmp(rn1) === 0) continue;\n      for (var i5 = 1; i5 < s5; i5++) {\n        x4 = x4.redSqr();\n        if (x4.cmp(rone) === 0) return x4.fromRed().subn(1).gcd(n5);\n        if (x4.cmp(rn1) === 0) break;\n      }\n      if (i5 === s5) {\n        x4 = x4.redSqr();\n        return x4.fromRed().subn(1).gcd(n5);\n      }\n    }\n    return false;\n  };\n  return exports$1i;\n}\nvar exports$1h = {};\nvar _dewExec$1g = false;\nfunction dew$1g() {\n  if (_dewExec$1g) return exports$1h;\n  _dewExec$1g = true;\n  var randomBytes2 = dew$3G();\n  exports$1h = findPrime;\n  findPrime.simpleSieve = simpleSieve;\n  findPrime.fermatTest = fermatTest;\n  var BN = dew$2S();\n  var TWENTYFOUR = new BN(24);\n  var MillerRabin = dew$1h();\n  var millerRabin = new MillerRabin();\n  var ONE = new BN(1);\n  var TWO = new BN(2);\n  var FIVE = new BN(5);\n  new BN(16);\n  new BN(8);\n  var TEN = new BN(10);\n  var THREE = new BN(3);\n  new BN(7);\n  var ELEVEN = new BN(11);\n  var FOUR = new BN(4);\n  new BN(12);\n  var primes = null;\n  function _getPrimes() {\n    if (primes !== null) return primes;\n    var limit = 1048576;\n    var res = [];\n    res[0] = 2;\n    for (var i5 = 1, k4 = 3; k4 < limit; k4 += 2) {\n      var sqrt = Math.ceil(Math.sqrt(k4));\n      for (var j4 = 0; j4 < i5 && res[j4] <= sqrt; j4++) if (k4 % res[j4] === 0) break;\n      if (i5 !== j4 && res[j4] <= sqrt) continue;\n      res[i5++] = k4;\n    }\n    primes = res;\n    return res;\n  }\n  function simpleSieve(p5) {\n    var primes2 = _getPrimes();\n    for (var i5 = 0; i5 < primes2.length; i5++) if (p5.modn(primes2[i5]) === 0) {\n      if (p5.cmpn(primes2[i5]) === 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n    return true;\n  }\n  function fermatTest(p5) {\n    var red = BN.mont(p5);\n    return TWO.toRed(red).redPow(p5.subn(1)).fromRed().cmpn(1) === 0;\n  }\n  function findPrime(bits, gen) {\n    if (bits < 16) {\n      if (gen === 2 || gen === 5) {\n        return new BN([140, 123]);\n      } else {\n        return new BN([140, 39]);\n      }\n    }\n    gen = new BN(gen);\n    var num, n22;\n    while (true) {\n      num = new BN(randomBytes2(Math.ceil(bits / 8)));\n      while (num.bitLength() > bits) {\n        num.ishrn(1);\n      }\n      if (num.isEven()) {\n        num.iadd(ONE);\n      }\n      if (!num.testn(1)) {\n        num.iadd(TWO);\n      }\n      if (!gen.cmp(TWO)) {\n        while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n          num.iadd(FOUR);\n        }\n      } else if (!gen.cmp(FIVE)) {\n        while (num.mod(TEN).cmp(THREE)) {\n          num.iadd(FOUR);\n        }\n      }\n      n22 = num.shrn(1);\n      if (simpleSieve(n22) && simpleSieve(num) && fermatTest(n22) && fermatTest(num) && millerRabin.test(n22) && millerRabin.test(num)) {\n        return num;\n      }\n    }\n  }\n  return exports$1h;\n}\nvar _primes = {\n  \"modp1\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"\n  },\n  \"modp2\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"\n  },\n  \"modp5\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"\n  },\n  \"modp14\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"\n  },\n  \"modp15\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"\n  },\n  \"modp16\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n  },\n  \"modp17\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"\n  },\n  \"modp18\": {\n    \"gen\": \"02\",\n    \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"\n  }\n};\nvar exports$1g = {};\nvar _dewExec$1f = false;\nvar _global$h = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$1f() {\n  if (_dewExec$1f) return exports$1g;\n  _dewExec$1f = true;\n  var Buffer = dew().Buffer;\n  var BN = dew$2S();\n  var MillerRabin = dew$1h();\n  var millerRabin = new MillerRabin();\n  var TWENTYFOUR = new BN(24);\n  var ELEVEN = new BN(11);\n  var TEN = new BN(10);\n  var THREE = new BN(3);\n  var SEVEN = new BN(7);\n  var primes = dew$1g();\n  var randomBytes2 = dew$3G();\n  exports$1g = DH;\n  function setPublicKey(pub, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(pub)) {\n      pub = new Buffer(pub, enc);\n    }\n    (this || _global$h)._pub = new BN(pub);\n    return this || _global$h;\n  }\n  function setPrivateKey(priv, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(priv)) {\n      priv = new Buffer(priv, enc);\n    }\n    (this || _global$h)._priv = new BN(priv);\n    return this || _global$h;\n  }\n  var primeCache = {};\n  function checkPrime(prime, generator) {\n    var gen = generator.toString(\"hex\");\n    var hex = [gen, prime.toString(16)].join(\"_\");\n    if (hex in primeCache) {\n      return primeCache[hex];\n    }\n    var error = 0;\n    if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n      error += 1;\n      if (gen === \"02\" || gen === \"05\") {\n        error += 8;\n      } else {\n        error += 4;\n      }\n      primeCache[hex] = error;\n      return error;\n    }\n    if (!millerRabin.test(prime.shrn(1))) {\n      error += 2;\n    }\n    var rem;\n    switch (gen) {\n      case \"02\":\n        if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n          error += 8;\n        }\n        break;\n      case \"05\":\n        rem = prime.mod(TEN);\n        if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n          error += 8;\n        }\n        break;\n      default:\n        error += 4;\n    }\n    primeCache[hex] = error;\n    return error;\n  }\n  function DH(prime, generator, malleable) {\n    this.setGenerator(generator);\n    (this || _global$h).__prime = new BN(prime);\n    (this || _global$h)._prime = BN.mont((this || _global$h).__prime);\n    (this || _global$h)._primeLen = prime.length;\n    (this || _global$h)._pub = void 0;\n    (this || _global$h)._priv = void 0;\n    (this || _global$h)._primeCode = void 0;\n    if (malleable) {\n      (this || _global$h).setPublicKey = setPublicKey;\n      (this || _global$h).setPrivateKey = setPrivateKey;\n    } else {\n      (this || _global$h)._primeCode = 8;\n    }\n  }\n  Object.defineProperty(DH.prototype, \"verifyError\", {\n    enumerable: true,\n    get: function() {\n      if (typeof (this || _global$h)._primeCode !== \"number\") {\n        (this || _global$h)._primeCode = checkPrime((this || _global$h).__prime, (this || _global$h).__gen);\n      }\n      return (this || _global$h)._primeCode;\n    }\n  });\n  DH.prototype.generateKeys = function() {\n    if (!(this || _global$h)._priv) {\n      (this || _global$h)._priv = new BN(randomBytes2((this || _global$h)._primeLen));\n    }\n    (this || _global$h)._pub = (this || _global$h)._gen.toRed((this || _global$h)._prime).redPow((this || _global$h)._priv).fromRed();\n    return this.getPublicKey();\n  };\n  DH.prototype.computeSecret = function(other) {\n    other = new BN(other);\n    other = other.toRed((this || _global$h)._prime);\n    var secret = other.redPow((this || _global$h)._priv).fromRed();\n    var out = new Buffer(secret.toArray());\n    var prime = this.getPrime();\n    if (out.length < prime.length) {\n      var front = new Buffer(prime.length - out.length);\n      front.fill(0);\n      out = Buffer.concat([front, out]);\n    }\n    return out;\n  };\n  DH.prototype.getPublicKey = function getPublicKey(enc) {\n    return formatReturnValue((this || _global$h)._pub, enc);\n  };\n  DH.prototype.getPrivateKey = function getPrivateKey(enc) {\n    return formatReturnValue((this || _global$h)._priv, enc);\n  };\n  DH.prototype.getPrime = function(enc) {\n    return formatReturnValue((this || _global$h).__prime, enc);\n  };\n  DH.prototype.getGenerator = function(enc) {\n    return formatReturnValue((this || _global$h)._gen, enc);\n  };\n  DH.prototype.setGenerator = function(gen, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(gen)) {\n      gen = new Buffer(gen, enc);\n    }\n    (this || _global$h).__gen = gen;\n    (this || _global$h)._gen = new BN(gen);\n    return this || _global$h;\n  };\n  function formatReturnValue(bn, enc) {\n    var buf = new Buffer(bn.toArray());\n    if (!enc) {\n      return buf;\n    } else {\n      return buf.toString(enc);\n    }\n  }\n  return exports$1g;\n}\nvar exports$1f = {};\nvar _dewExec$1e = false;\nfunction dew$1e() {\n  if (_dewExec$1e) return exports$1f;\n  _dewExec$1e = true;\n  var Buffer = dew().Buffer;\n  var generatePrime = dew$1g();\n  var primes = _primes;\n  var DH = dew$1f();\n  function getDiffieHellman2(mod) {\n    var prime = new Buffer(primes[mod].prime, \"hex\");\n    var gen = new Buffer(primes[mod].gen, \"hex\");\n    return new DH(prime, gen);\n  }\n  var ENCODINGS = {\n    \"binary\": true,\n    \"hex\": true,\n    \"base64\": true\n  };\n  function createDiffieHellman2(prime, enc, generator, genc) {\n    if (Buffer.isBuffer(enc) || ENCODINGS[enc] === void 0) {\n      return createDiffieHellman2(prime, \"binary\", enc, generator);\n    }\n    enc = enc || \"binary\";\n    genc = genc || \"binary\";\n    generator = generator || new Buffer([2]);\n    if (!Buffer.isBuffer(generator)) {\n      generator = new Buffer(generator, genc);\n    }\n    if (typeof prime === \"number\") {\n      return new DH(generatePrime(prime, generator), generator, true);\n    }\n    if (!Buffer.isBuffer(prime)) {\n      prime = new Buffer(prime, enc);\n    }\n    return new DH(prime, generator, true);\n  }\n  exports$1f.DiffieHellmanGroup = exports$1f.createDiffieHellmanGroup = exports$1f.getDiffieHellman = getDiffieHellman2;\n  exports$1f.createDiffieHellman = exports$1f.DiffieHellman = createDiffieHellman2;\n  return exports$1f;\n}\nvar exports$1e = {};\nvar _dewExec$1d = false;\nfunction dew$1d() {\n  if (_dewExec$1d) return exports$1e;\n  _dewExec$1d = true;\n  var process$1 = process;\n  if (typeof process$1 === \"undefined\" || !process$1.version || process$1.version.indexOf(\"v0.\") === 0 || process$1.version.indexOf(\"v1.\") === 0 && process$1.version.indexOf(\"v1.8.\") !== 0) {\n    exports$1e = {\n      nextTick: nextTick2\n    };\n  } else {\n    exports$1e = process$1;\n  }\n  function nextTick2(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, i5;\n    switch (len) {\n      case 0:\n      case 1:\n        return process$1.nextTick(fn);\n      case 2:\n        return process$1.nextTick(function afterTickOne() {\n          fn.call(null, arg1);\n        });\n      case 3:\n        return process$1.nextTick(function afterTickTwo() {\n          fn.call(null, arg1, arg2);\n        });\n      case 4:\n        return process$1.nextTick(function afterTickThree() {\n          fn.call(null, arg1, arg2, arg3);\n        });\n      default:\n        args = new Array(len - 1);\n        i5 = 0;\n        while (i5 < args.length) {\n          args[i5++] = arguments[i5];\n        }\n        return process$1.nextTick(function afterTick() {\n          fn.apply(null, args);\n        });\n    }\n  }\n  return exports$1e;\n}\nvar exports$1d = {};\nvar _dewExec$1c = false;\nfunction dew$1c() {\n  if (_dewExec$1c) return exports$1d;\n  _dewExec$1c = true;\n  var toString = {}.toString;\n  exports$1d = Array.isArray || function(arr) {\n    return toString.call(arr) == \"[object Array]\";\n  };\n  return exports$1d;\n}\nvar exports$1c = {};\nvar _dewExec$1b = false;\nfunction dew$1b() {\n  if (_dewExec$1b) return exports$1c;\n  _dewExec$1b = true;\n  exports$1c = y.EventEmitter;\n  return exports$1c;\n}\nvar exports$1b = {};\nvar _dewExec$1a = false;\nfunction dew$1a() {\n  if (_dewExec$1a) return exports$1b;\n  _dewExec$1a = true;\n  var buffer2 = dew();\n  var Buffer = buffer2.Buffer;\n  function copyProps(src, dst) {\n    for (var key in src) {\n      dst[key] = src[key];\n    }\n  }\n  if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n    exports$1b = buffer2;\n  } else {\n    copyProps(buffer2, exports$1b);\n    exports$1b.Buffer = SafeBuffer;\n  }\n  function SafeBuffer(arg, encodingOrOffset, length) {\n    return Buffer(arg, encodingOrOffset, length);\n  }\n  copyProps(Buffer, SafeBuffer);\n  SafeBuffer.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  SafeBuffer.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 !== void 0) {\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  SafeBuffer.allocUnsafe = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return Buffer(size);\n  };\n  SafeBuffer.allocUnsafeSlow = function(size) {\n    if (typeof size !== \"number\") {\n      throw new TypeError(\"Argument must be a number\");\n    }\n    return buffer2.SlowBuffer(size);\n  };\n  return exports$1b;\n}\nvar exports$1a = {};\nvar _dewExec$19 = false;\nfunction dew$19() {\n  if (_dewExec$19) return exports$1a;\n  _dewExec$19 = true;\n  function isArray(arg) {\n    if (Array.isArray) {\n      return Array.isArray(arg);\n    }\n    return objectToString(arg) === \"[object Array]\";\n  }\n  exports$1a.isArray = isArray;\n  function isBoolean(arg) {\n    return typeof arg === \"boolean\";\n  }\n  exports$1a.isBoolean = isBoolean;\n  function isNull(arg) {\n    return arg === null;\n  }\n  exports$1a.isNull = isNull;\n  function isNullOrUndefined(arg) {\n    return arg == null;\n  }\n  exports$1a.isNullOrUndefined = isNullOrUndefined;\n  function isNumber(arg) {\n    return typeof arg === \"number\";\n  }\n  exports$1a.isNumber = isNumber;\n  function isString(arg) {\n    return typeof arg === \"string\";\n  }\n  exports$1a.isString = isString;\n  function isSymbol(arg) {\n    return typeof arg === \"symbol\";\n  }\n  exports$1a.isSymbol = isSymbol;\n  function isUndefined(arg) {\n    return arg === void 0;\n  }\n  exports$1a.isUndefined = isUndefined;\n  function isRegExp(re3) {\n    return objectToString(re3) === \"[object RegExp]\";\n  }\n  exports$1a.isRegExp = isRegExp;\n  function isObject(arg) {\n    return typeof arg === \"object\" && arg !== null;\n  }\n  exports$1a.isObject = isObject;\n  function isDate(d4) {\n    return objectToString(d4) === \"[object Date]\";\n  }\n  exports$1a.isDate = isDate;\n  function isError(e7) {\n    return objectToString(e7) === \"[object Error]\" || e7 instanceof Error;\n  }\n  exports$1a.isError = isError;\n  function isFunction(arg) {\n    return typeof arg === \"function\";\n  }\n  exports$1a.isFunction = isFunction;\n  function isPrimitive(arg) {\n    return arg === null || typeof arg === \"boolean\" || typeof arg === \"number\" || typeof arg === \"string\" || typeof arg === \"symbol\" || // ES6 symbol\n    typeof arg === \"undefined\";\n  }\n  exports$1a.isPrimitive = isPrimitive;\n  exports$1a.isBuffer = dew().Buffer.isBuffer;\n  function objectToString(o5) {\n    return Object.prototype.toString.call(o5);\n  }\n  return exports$1a;\n}\nvar exports$19 = {};\nvar _dewExec$18 = false;\nfunction dew$18() {\n  if (_dewExec$18) return exports$19;\n  _dewExec$18 = true;\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n  var Buffer = dew$1a().Buffer;\n  var util = X;\n  function copyBuffer(src, target, offset) {\n    src.copy(target, offset);\n  }\n  exports$19 = (function() {\n    function BufferList() {\n      _classCallCheck(this, BufferList);\n      this.head = null;\n      this.tail = null;\n      this.length = 0;\n    }\n    BufferList.prototype.push = function push(v5) {\n      var entry = {\n        data: v5,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;\n      else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    };\n    BufferList.prototype.unshift = function unshift(v5) {\n      var entry = {\n        data: v5,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\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;\n      else this.head = this.head.next;\n      --this.length;\n      return ret;\n    };\n    BufferList.prototype.clear = function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    };\n    BufferList.prototype.join = function join(s5) {\n      if (this.length === 0) return \"\";\n      var p5 = this.head;\n      var ret = \"\" + p5.data;\n      while (p5 = p5.next) {\n        ret += s5 + p5.data;\n      }\n      return ret;\n    };\n    BufferList.prototype.concat = function concat(n5) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n5 >>> 0);\n      var p5 = this.head;\n      var i5 = 0;\n      while (p5) {\n        copyBuffer(p5.data, ret, i5);\n        i5 += p5.data.length;\n        p5 = p5.next;\n      }\n      return ret;\n    };\n    return BufferList;\n  })();\n  if (util && util.inspect && util.inspect.custom) {\n    exports$19.prototype[util.inspect.custom] = function() {\n      var obj = util.inspect({\n        length: this.length\n      });\n      return this.constructor.name + \" \" + obj;\n    };\n  }\n  return exports$19;\n}\nvar exports$18 = {};\nvar _dewExec$17 = false;\nfunction dew$17() {\n  if (_dewExec$17) return exports$18;\n  _dewExec$17 = true;\n  var pna = dew$1d();\n  function destroy(err, cb) {\n    var _this = this;\n    var readableDestroyed = this._readableState && this._readableState.destroyed;\n    var writableDestroyed = this._writableState && this._writableState.destroyed;\n    if (readableDestroyed || writableDestroyed) {\n      if (cb) {\n        cb(err);\n      } else if (err) {\n        if (!this._writableState) {\n          pna.nextTick(emitErrorNT, this, err);\n        } else if (!this._writableState.errorEmitted) {\n          this._writableState.errorEmitted = true;\n          pna.nextTick(emitErrorNT, this, err);\n        }\n      }\n      return this;\n    }\n    if (this._readableState) {\n      this._readableState.destroyed = true;\n    }\n    if (this._writableState) {\n      this._writableState.destroyed = true;\n    }\n    this._destroy(err || null, function(err2) {\n      if (!cb && err2) {\n        if (!_this._writableState) {\n          pna.nextTick(emitErrorNT, _this, err2);\n        } else if (!_this._writableState.errorEmitted) {\n          _this._writableState.errorEmitted = true;\n          pna.nextTick(emitErrorNT, _this, err2);\n        }\n      } else if (cb) {\n        cb(err2);\n      }\n    });\n    return this;\n  }\n  function 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    if (this._writableState) {\n      this._writableState.destroyed = false;\n      this._writableState.ended = false;\n      this._writableState.ending = false;\n      this._writableState.finalCalled = false;\n      this._writableState.prefinished = false;\n      this._writableState.finished = false;\n      this._writableState.errorEmitted = false;\n    }\n  }\n  function emitErrorNT(self2, err) {\n    self2.emit(\"error\", err);\n  }\n  exports$18 = {\n    destroy,\n    undestroy\n  };\n  return exports$18;\n}\nvar exports$17 = {};\nvar _dewExec$16 = false;\nvar _global$g = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$16() {\n  if (_dewExec$16) return exports$17;\n  _dewExec$16 = true;\n  var process$1 = process;\n  var pna = dew$1d();\n  exports$17 = Writable;\n  function CorkedRequest(state) {\n    var _this = this;\n    this.next = null;\n    this.entry = null;\n    this.finish = function() {\n      onCorkedFinish(_this, state);\n    };\n  }\n  var asyncWrite = !process$1.browser && [\"v0.10\", \"v0.9.\"].indexOf(process$1.version.slice(0, 5)) > -1 ? process$1.nextTick : pna.nextTick;\n  var Duplex;\n  Writable.WritableState = WritableState;\n  var util = Object.create(dew$19());\n  util.inherits = dew3();\n  var internalUtil = {\n    deprecate: dew8()\n  };\n  var Stream = dew$1b();\n  var Buffer = dew$1a().Buffer;\n  var OurUint8Array = (typeof _global$g !== \"undefined\" ? _global$g : typeof window !== \"undefined\" ? window : typeof self !== \"undefined\" ? self : {}).Uint8Array || function() {\n  };\n  function _uint8ArrayToBuffer(chunk) {\n    return Buffer.from(chunk);\n  }\n  function _isUint8Array(obj) {\n    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n  }\n  var destroyImpl = dew$17();\n  util.inherits(Writable, Stream);\n  function nop() {\n  }\n  function WritableState(options, stream2) {\n    Duplex = Duplex || dew$15();\n    options = options || {};\n    var isDuplex = stream2 instanceof Duplex;\n    this.objectMode = !!options.objectMode;\n    if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n    var hwm = options.highWaterMark;\n    var writableHwm = options.writableHighWaterMark;\n    var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n    if (hwm || hwm === 0) this.highWaterMark = hwm;\n    else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;\n    else this.highWaterMark = defaultHwm;\n    this.highWaterMark = Math.floor(this.highWaterMark);\n    this.finalCalled = false;\n    this.needDrain = false;\n    this.ending = false;\n    this.ended = false;\n    this.finished = false;\n    this.destroyed = false;\n    var noDecode = options.decodeStrings === false;\n    this.decodeStrings = !noDecode;\n    this.defaultEncoding = options.defaultEncoding || \"utf8\";\n    this.length = 0;\n    this.writing = false;\n    this.corked = 0;\n    this.sync = true;\n    this.bufferProcessing = false;\n    this.onwrite = function(er) {\n      onwrite(stream2, er);\n    };\n    this.writecb = null;\n    this.writelen = 0;\n    this.bufferedRequest = null;\n    this.lastBufferedRequest = null;\n    this.pendingcb = 0;\n    this.prefinished = false;\n    this.errorEmitted = false;\n    this.bufferedRequestCount = 0;\n    this.corkedRequestsFree = new CorkedRequest(this);\n  }\n  WritableState.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  (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 (_4) {\n    }\n  })();\n  var realHasInstance;\n  if (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        return object && object._writableState instanceof WritableState;\n      }\n    });\n  } else {\n    realHasInstance = function(object) {\n      return object instanceof this;\n    };\n  }\n  function Writable(options) {\n    Duplex = Duplex || dew$15();\n    if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n      return new Writable(options);\n    }\n    this._writableState = new WritableState(options, this);\n    this.writable = true;\n    if (options) {\n      if (typeof options.write === \"function\") this._write = options.write;\n      if (typeof options.writev === \"function\") this._writev = options.writev;\n      if (typeof options.destroy === \"function\") this._destroy = options.destroy;\n      if (typeof options.final === \"function\") this._final = options.final;\n    }\n    Stream.call(this);\n  }\n  Writable.prototype.pipe = function() {\n    this.emit(\"error\", new Error(\"Cannot pipe, not readable\"));\n  };\n  function writeAfterEnd(stream2, cb) {\n    var er = new Error(\"write after end\");\n    stream2.emit(\"error\", er);\n    pna.nextTick(cb, er);\n  }\n  function validChunk(stream2, state, chunk, cb) {\n    var valid = true;\n    var er = false;\n    if (chunk === null) {\n      er = new TypeError(\"May not write null values to stream\");\n    } else if (typeof chunk !== \"string\" && chunk !== void 0 && !state.objectMode) {\n      er = new TypeError(\"Invalid non-string/buffer chunk\");\n    }\n    if (er) {\n      stream2.emit(\"error\", er);\n      pna.nextTick(cb, er);\n      valid = false;\n    }\n    return valid;\n  }\n  Writable.prototype.write = function(chunk, encoding, cb) {\n    var state = this._writableState;\n    var ret = false;\n    var isBuf = !state.objectMode && _isUint8Array(chunk);\n    if (isBuf && !Buffer.isBuffer(chunk)) {\n      chunk = _uint8ArrayToBuffer(chunk);\n    }\n    if (typeof encoding === \"function\") {\n      cb = encoding;\n      encoding = null;\n    }\n    if (isBuf) encoding = \"buffer\";\n    else if (!encoding) encoding = state.defaultEncoding;\n    if (typeof cb !== \"function\") cb = nop;\n    if (state.ended) writeAfterEnd(this, cb);\n    else if (isBuf || validChunk(this, state, chunk, cb)) {\n      state.pendingcb++;\n      ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n    }\n    return ret;\n  };\n  Writable.prototype.cork = function() {\n    var state = this._writableState;\n    state.corked++;\n  };\n  Writable.prototype.uncork = function() {\n    var state = this._writableState;\n    if (state.corked) {\n      state.corked--;\n      if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n    }\n  };\n  Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\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  function 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  Object.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  function writeOrBuffer(stream2, 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    state.length += len;\n    var ret = state.length < state.highWaterMark;\n    if (!ret) state.needDrain = true;\n    if (state.writing || state.corked) {\n      var last = state.lastBufferedRequest;\n      state.lastBufferedRequest = {\n        chunk,\n        encoding,\n        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(stream2, state, false, len, chunk, encoding, cb);\n    }\n    return ret;\n  }\n  function doWrite(stream2, 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) stream2._writev(chunk, state.onwrite);\n    else stream2._write(chunk, encoding, state.onwrite);\n    state.sync = false;\n  }\n  function onwriteError(stream2, state, sync, er, cb) {\n    --state.pendingcb;\n    if (sync) {\n      pna.nextTick(cb, er);\n      pna.nextTick(finishMaybe, stream2, state);\n      stream2._writableState.errorEmitted = true;\n      stream2.emit(\"error\", er);\n    } else {\n      cb(er);\n      stream2._writableState.errorEmitted = true;\n      stream2.emit(\"error\", er);\n      finishMaybe(stream2, state);\n    }\n  }\n  function onwriteStateUpdate(state) {\n    state.writing = false;\n    state.writecb = null;\n    state.length -= state.writelen;\n    state.writelen = 0;\n  }\n  function onwrite(stream2, er) {\n    var state = stream2._writableState;\n    var sync = state.sync;\n    var cb = state.writecb;\n    onwriteStateUpdate(state);\n    if (er) onwriteError(stream2, state, sync, er, cb);\n    else {\n      var finished = needFinish(state);\n      if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n        clearBuffer(stream2, state);\n      }\n      if (sync) {\n        asyncWrite(afterWrite, stream2, state, finished, cb);\n      } else {\n        afterWrite(stream2, state, finished, cb);\n      }\n    }\n  }\n  function afterWrite(stream2, state, finished, cb) {\n    if (!finished) onwriteDrain(stream2, state);\n    state.pendingcb--;\n    cb();\n    finishMaybe(stream2, state);\n  }\n  function onwriteDrain(stream2, state) {\n    if (state.length === 0 && state.needDrain) {\n      state.needDrain = false;\n      stream2.emit(\"drain\");\n    }\n  }\n  function clearBuffer(stream2, state) {\n    state.bufferProcessing = true;\n    var entry = state.bufferedRequest;\n    if (stream2._writev && entry && entry.next) {\n      var l5 = state.bufferedRequestCount;\n      var buffer2 = new Array(l5);\n      var holder = state.corkedRequestsFree;\n      holder.entry = entry;\n      var count = 0;\n      var allBuffers = true;\n      while (entry) {\n        buffer2[count] = entry;\n        if (!entry.isBuf) allBuffers = false;\n        entry = entry.next;\n        count += 1;\n      }\n      buffer2.allBuffers = allBuffers;\n      doWrite(stream2, state, true, state.length, buffer2, \"\", holder.finish);\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      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        doWrite(stream2, state, false, len, chunk, encoding, cb);\n        entry = entry.next;\n        state.bufferedRequestCount--;\n        if (state.writing) {\n          break;\n        }\n      }\n      if (entry === null) state.lastBufferedRequest = null;\n    }\n    state.bufferedRequest = entry;\n    state.bufferProcessing = false;\n  }\n  Writable.prototype._write = function(chunk, encoding, cb) {\n    cb(new Error(\"_write() is not implemented\"));\n  };\n  Writable.prototype._writev = null;\n  Writable.prototype.end = function(chunk, encoding, cb) {\n    var state = this._writableState;\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    if (chunk !== null && chunk !== void 0) this.write(chunk, encoding);\n    if (state.corked) {\n      state.corked = 1;\n      this.uncork();\n    }\n    if (!state.ending) endWritable(this, state, cb);\n  };\n  function needFinish(state) {\n    return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n  }\n  function callFinal(stream2, state) {\n    stream2._final(function(err) {\n      state.pendingcb--;\n      if (err) {\n        stream2.emit(\"error\", err);\n      }\n      state.prefinished = true;\n      stream2.emit(\"prefinish\");\n      finishMaybe(stream2, state);\n    });\n  }\n  function prefinish(stream2, state) {\n    if (!state.prefinished && !state.finalCalled) {\n      if (typeof stream2._final === \"function\") {\n        state.pendingcb++;\n        state.finalCalled = true;\n        pna.nextTick(callFinal, stream2, state);\n      } else {\n        state.prefinished = true;\n        stream2.emit(\"prefinish\");\n      }\n    }\n  }\n  function finishMaybe(stream2, state) {\n    var need = needFinish(state);\n    if (need) {\n      prefinish(stream2, state);\n      if (state.pendingcb === 0) {\n        state.finished = true;\n        stream2.emit(\"finish\");\n      }\n    }\n    return need;\n  }\n  function endWritable(stream2, state, cb) {\n    state.ending = true;\n    finishMaybe(stream2, state);\n    if (cb) {\n      if (state.finished) pna.nextTick(cb);\n      else stream2.once(\"finish\", cb);\n    }\n    state.ended = true;\n    stream2.writable = false;\n  }\n  function 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    state.corkedRequestsFree.next = corkReq;\n  }\n  Object.defineProperty(Writable.prototype, \"destroyed\", {\n    get: function() {\n      if (this._writableState === void 0) {\n        return false;\n      }\n      return this._writableState.destroyed;\n    },\n    set: function(value) {\n      if (!this._writableState) {\n        return;\n      }\n      this._writableState.destroyed = value;\n    }\n  });\n  Writable.prototype.destroy = destroyImpl.destroy;\n  Writable.prototype._undestroy = destroyImpl.undestroy;\n  Writable.prototype._destroy = function(err, cb) {\n    this.end();\n    cb(err);\n  };\n  return exports$17;\n}\nvar exports$16 = {};\nvar _dewExec$15 = false;\nfunction dew$15() {\n  if (_dewExec$15) return exports$16;\n  _dewExec$15 = true;\n  var pna = dew$1d();\n  var objectKeys = Object.keys || function(obj) {\n    var keys2 = [];\n    for (var key in obj) {\n      keys2.push(key);\n    }\n    return keys2;\n  };\n  exports$16 = Duplex;\n  var util = Object.create(dew$19());\n  util.inherits = dew3();\n  var Readable2 = dew$14();\n  var Writable = dew$16();\n  util.inherits(Duplex, Readable2);\n  {\n    var keys = objectKeys(Writable.prototype);\n    for (var v5 = 0; v5 < keys.length; v5++) {\n      var method = keys[v5];\n      if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n    }\n  }\n  function Duplex(options) {\n    if (!(this instanceof Duplex)) return new Duplex(options);\n    Readable2.call(this, options);\n    Writable.call(this, options);\n    if (options && options.readable === false) this.readable = false;\n    if (options && options.writable === false) this.writable = false;\n    this.allowHalfOpen = true;\n    if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n    this.once(\"end\", onend);\n  }\n  Object.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  function onend() {\n    if (this.allowHalfOpen || this._writableState.ended) return;\n    pna.nextTick(onEndNT, this);\n  }\n  function onEndNT(self2) {\n    self2.end();\n  }\n  Object.defineProperty(Duplex.prototype, \"destroyed\", {\n    get: function() {\n      if (this._readableState === void 0 || this._writableState === void 0) {\n        return false;\n      }\n      return this._readableState.destroyed && this._writableState.destroyed;\n    },\n    set: function(value) {\n      if (this._readableState === void 0 || this._writableState === void 0) {\n        return;\n      }\n      this._readableState.destroyed = value;\n      this._writableState.destroyed = value;\n    }\n  });\n  Duplex.prototype._destroy = function(err, cb) {\n    this.push(null);\n    this.end();\n    pna.nextTick(cb, err);\n  };\n  return exports$16;\n}\nvar exports$152 = {};\nvar _dewExec$14 = false;\nvar _global$f = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$14() {\n  if (_dewExec$14) return exports$152;\n  _dewExec$14 = true;\n  var process$1 = process;\n  var pna = dew$1d();\n  exports$152 = Readable2;\n  var isArray = dew$1c();\n  var Duplex;\n  Readable2.ReadableState = ReadableState;\n  y.EventEmitter;\n  var EElistenerCount = function(emitter, type) {\n    return emitter.listeners(type).length;\n  };\n  var Stream = dew$1b();\n  var Buffer = dew$1a().Buffer;\n  var OurUint8Array = (typeof _global$f !== \"undefined\" ? _global$f : typeof window !== \"undefined\" ? window : typeof self !== \"undefined\" ? self : {}).Uint8Array || function() {\n  };\n  function _uint8ArrayToBuffer(chunk) {\n    return Buffer.from(chunk);\n  }\n  function _isUint8Array(obj) {\n    return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n  }\n  var util = Object.create(dew$19());\n  util.inherits = dew3();\n  var debugUtil = X;\n  var debug = void 0;\n  if (debugUtil && debugUtil.debuglog) {\n    debug = debugUtil.debuglog(\"stream\");\n  } else {\n    debug = function() {\n    };\n  }\n  var BufferList = dew$18();\n  var destroyImpl = dew$17();\n  var StringDecoder2;\n  util.inherits(Readable2, Stream);\n  var kProxyEvents = [\"error\", \"close\", \"destroy\", \"pause\", \"resume\"];\n  function prependListener2(emitter, event, fn) {\n    if (typeof emitter.prependListener === \"function\") return emitter.prependListener(event, fn);\n    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);\n    else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);\n    else emitter._events[event] = [fn, emitter._events[event]];\n  }\n  function ReadableState(options, stream2) {\n    Duplex = Duplex || dew$15();\n    options = options || {};\n    var isDuplex = stream2 instanceof Duplex;\n    this.objectMode = !!options.objectMode;\n    if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n    var hwm = options.highWaterMark;\n    var readableHwm = options.readableHighWaterMark;\n    var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n    if (hwm || hwm === 0) this.highWaterMark = hwm;\n    else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;\n    else this.highWaterMark = defaultHwm;\n    this.highWaterMark = Math.floor(this.highWaterMark);\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    this.sync = true;\n    this.needReadable = false;\n    this.emittedReadable = false;\n    this.readableListening = false;\n    this.resumeScheduled = false;\n    this.destroyed = false;\n    this.defaultEncoding = options.defaultEncoding || \"utf8\";\n    this.awaitDrain = 0;\n    this.readingMore = false;\n    this.decoder = null;\n    this.encoding = null;\n    if (options.encoding) {\n      if (!StringDecoder2) StringDecoder2 = exports2.StringDecoder;\n      this.decoder = new StringDecoder2(options.encoding);\n      this.encoding = options.encoding;\n    }\n  }\n  function Readable2(options) {\n    Duplex = Duplex || dew$15();\n    if (!(this instanceof Readable2)) return new Readable2(options);\n    this._readableState = new ReadableState(options, this);\n    this.readable = true;\n    if (options) {\n      if (typeof options.read === \"function\") this._read = options.read;\n      if (typeof options.destroy === \"function\") this._destroy = options.destroy;\n    }\n    Stream.call(this);\n  }\n  Object.defineProperty(Readable2.prototype, \"destroyed\", {\n    get: function() {\n      if (this._readableState === void 0) {\n        return false;\n      }\n      return this._readableState.destroyed;\n    },\n    set: function(value) {\n      if (!this._readableState) {\n        return;\n      }\n      this._readableState.destroyed = value;\n    }\n  });\n  Readable2.prototype.destroy = destroyImpl.destroy;\n  Readable2.prototype._undestroy = destroyImpl.undestroy;\n  Readable2.prototype._destroy = function(err, cb) {\n    this.push(null);\n    cb(err);\n  };\n  Readable2.prototype.push = function(chunk, encoding) {\n    var state = this._readableState;\n    var skipChunkCheck;\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    return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n  };\n  Readable2.prototype.unshift = function(chunk) {\n    return readableAddChunk(this, chunk, null, true, false);\n  };\n  function readableAddChunk(stream2, chunk, encoding, addToFront, skipChunkCheck) {\n    var state = stream2._readableState;\n    if (chunk === null) {\n      state.reading = false;\n      onEofChunk(stream2, state);\n    } else {\n      var er;\n      if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n      if (er) {\n        stream2.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        if (addToFront) {\n          if (state.endEmitted) stream2.emit(\"error\", new Error(\"stream.unshift() after end event\"));\n          else addChunk(stream2, state, chunk, true);\n        } else if (state.ended) {\n          stream2.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(stream2, state, chunk, false);\n            else maybeReadMore(stream2, state);\n          } else {\n            addChunk(stream2, state, chunk, false);\n          }\n        }\n      } else if (!addToFront) {\n        state.reading = false;\n      }\n    }\n    return needMoreData(state);\n  }\n  function addChunk(stream2, state, chunk, addToFront) {\n    if (state.flowing && state.length === 0 && !state.sync) {\n      stream2.emit(\"data\", chunk);\n      stream2.read(0);\n    } else {\n      state.length += state.objectMode ? 1 : chunk.length;\n      if (addToFront) state.buffer.unshift(chunk);\n      else state.buffer.push(chunk);\n      if (state.needReadable) emitReadable(stream2);\n    }\n    maybeReadMore(stream2, state);\n  }\n  function chunkInvalid(state, chunk) {\n    var er;\n    if (!_isUint8Array(chunk) && typeof chunk !== \"string\" && chunk !== void 0 && !state.objectMode) {\n      er = new TypeError(\"Invalid non-string/buffer chunk\");\n    }\n    return er;\n  }\n  function needMoreData(state) {\n    return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n  }\n  Readable2.prototype.isPaused = function() {\n    return this._readableState.flowing === false;\n  };\n  Readable2.prototype.setEncoding = function(enc) {\n    if (!StringDecoder2) StringDecoder2 = exports2.StringDecoder;\n    this._readableState.decoder = new StringDecoder2(enc);\n    this._readableState.encoding = enc;\n    return this;\n  };\n  var MAX_HWM = 8388608;\n  function computeNewHighWaterMark(n5) {\n    if (n5 >= MAX_HWM) {\n      n5 = MAX_HWM;\n    } else {\n      n5--;\n      n5 |= n5 >>> 1;\n      n5 |= n5 >>> 2;\n      n5 |= n5 >>> 4;\n      n5 |= n5 >>> 8;\n      n5 |= n5 >>> 16;\n      n5++;\n    }\n    return n5;\n  }\n  function howMuchToRead(n5, state) {\n    if (n5 <= 0 || state.length === 0 && state.ended) return 0;\n    if (state.objectMode) return 1;\n    if (n5 !== n5) {\n      if (state.flowing && state.length) return state.buffer.head.data.length;\n      else return state.length;\n    }\n    if (n5 > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n5);\n    if (n5 <= state.length) return n5;\n    if (!state.ended) {\n      state.needReadable = true;\n      return 0;\n    }\n    return state.length;\n  }\n  Readable2.prototype.read = function(n5) {\n    debug(\"read\", n5);\n    n5 = parseInt(n5, 10);\n    var state = this._readableState;\n    var nOrig = n5;\n    if (n5 !== 0) state.emittedReadable = false;\n    if (n5 === 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);\n      else emitReadable(this);\n      return null;\n    }\n    n5 = howMuchToRead(n5, state);\n    if (n5 === 0 && state.ended) {\n      if (state.length === 0) endReadable(this);\n      return null;\n    }\n    var doRead = state.needReadable;\n    debug(\"need readable\", doRead);\n    if (state.length === 0 || state.length - n5 < state.highWaterMark) {\n      doRead = true;\n      debug(\"length less than watermark\", doRead);\n    }\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 (state.length === 0) state.needReadable = true;\n      this._read(state.highWaterMark);\n      state.sync = false;\n      if (!state.reading) n5 = howMuchToRead(nOrig, state);\n    }\n    var ret;\n    if (n5 > 0) ret = fromList(n5, state);\n    else ret = null;\n    if (ret === null) {\n      state.needReadable = true;\n      n5 = 0;\n    } else {\n      state.length -= n5;\n    }\n    if (state.length === 0) {\n      if (!state.ended) state.needReadable = true;\n      if (nOrig !== n5 && state.ended) endReadable(this);\n    }\n    if (ret !== null) this.emit(\"data\", ret);\n    return ret;\n  };\n  function onEofChunk(stream2, 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    emitReadable(stream2);\n  }\n  function emitReadable(stream2) {\n    var state = stream2._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_, stream2);\n      else emitReadable_(stream2);\n    }\n  }\n  function emitReadable_(stream2) {\n    debug(\"emit readable\");\n    stream2.emit(\"readable\");\n    flow(stream2);\n  }\n  function maybeReadMore(stream2, state) {\n    if (!state.readingMore) {\n      state.readingMore = true;\n      pna.nextTick(maybeReadMore_, stream2, state);\n    }\n  }\n  function maybeReadMore_(stream2, state) {\n    var len = state.length;\n    while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n      debug(\"maybeReadMore read 0\");\n      stream2.read(0);\n      if (len === state.length)\n        break;\n      else len = state.length;\n    }\n    state.readingMore = false;\n  }\n  Readable2.prototype._read = function(n5) {\n    this.emit(\"error\", new Error(\"_read() is not implemented\"));\n  };\n  Readable2.prototype.pipe = function(dest, pipeOpts) {\n    var src = this;\n    var state = this._readableState;\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    var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process$1.stdout && dest !== process$1.stderr;\n    var endFn = doEnd ? onend : unpipe;\n    if (state.endEmitted) pna.nextTick(endFn);\n    else src.once(\"end\", endFn);\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    function onend() {\n      debug(\"onend\");\n      dest.end();\n    }\n    var ondrain = pipeOnDrain(src);\n    dest.on(\"drain\", ondrain);\n    var cleanedUp = false;\n    function cleanup() {\n      debug(\"cleanup\");\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      cleanedUp = true;\n      if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n    }\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 ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf3(state.pipes, dest) !== -1) && !cleanedUp) {\n          debug(\"false write response, pause\", state.awaitDrain);\n          state.awaitDrain++;\n          increasedAwaitDrain = true;\n        }\n        src.pause();\n      }\n    }\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    prependListener2(dest, \"error\", onerror);\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    function unpipe() {\n      debug(\"unpipe\");\n      src.unpipe(dest);\n    }\n    dest.emit(\"pipe\", src);\n    if (!state.flowing) {\n      debug(\"pipe resume\");\n      src.resume();\n    }\n    return dest;\n  };\n  function 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  Readable2.prototype.unpipe = function(dest) {\n    var state = this._readableState;\n    var unpipeInfo = {\n      hasUnpiped: false\n    };\n    if (state.pipesCount === 0) return this;\n    if (state.pipesCount === 1) {\n      if (dest && dest !== state.pipes) return this;\n      if (!dest) dest = state.pipes;\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    if (!dest) {\n      var dests = state.pipes;\n      var len = state.pipesCount;\n      state.pipes = null;\n      state.pipesCount = 0;\n      state.flowing = false;\n      for (var i5 = 0; i5 < len; i5++) {\n        dests[i5].emit(\"unpipe\", this, {\n          hasUnpiped: false\n        });\n      }\n      return this;\n    }\n    var index = indexOf3(state.pipes, dest);\n    if (index === -1) return this;\n    state.pipes.splice(index, 1);\n    state.pipesCount -= 1;\n    if (state.pipesCount === 1) state.pipes = state.pipes[0];\n    dest.emit(\"unpipe\", this, unpipeInfo);\n    return this;\n  };\n  Readable2.prototype.on = function(ev, fn) {\n    var res = Stream.prototype.on.call(this, ev, fn);\n    if (ev === \"data\") {\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    return res;\n  };\n  Readable2.prototype.addListener = Readable2.prototype.on;\n  function nReadingNextTick(self2) {\n    debug(\"readable nexttick read 0\");\n    self2.read(0);\n  }\n  Readable2.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  function resume(stream2, state) {\n    if (!state.resumeScheduled) {\n      state.resumeScheduled = true;\n      pna.nextTick(resume_, stream2, state);\n    }\n  }\n  function resume_(stream2, state) {\n    if (!state.reading) {\n      debug(\"resume read 0\");\n      stream2.read(0);\n    }\n    state.resumeScheduled = false;\n    state.awaitDrain = 0;\n    stream2.emit(\"resume\");\n    flow(stream2);\n    if (state.flowing && !state.reading) stream2.read(0);\n  }\n  Readable2.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  function flow(stream2) {\n    var state = stream2._readableState;\n    debug(\"flow\", state.flowing);\n    while (state.flowing && stream2.read() !== null) {\n    }\n  }\n  Readable2.prototype.wrap = function(stream2) {\n    var _this = this;\n    var state = this._readableState;\n    var paused = false;\n    stream2.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      _this.push(null);\n    });\n    stream2.on(\"data\", function(chunk) {\n      debug(\"wrapped data\");\n      if (state.decoder) chunk = state.decoder.write(chunk);\n      if (state.objectMode && (chunk === null || chunk === void 0)) return;\n      else if (!state.objectMode && (!chunk || !chunk.length)) return;\n      var ret = _this.push(chunk);\n      if (!ret) {\n        paused = true;\n        stream2.pause();\n      }\n    });\n    for (var i5 in stream2) {\n      if (this[i5] === void 0 && typeof stream2[i5] === \"function\") {\n        this[i5] = /* @__PURE__ */ (function(method) {\n          return function() {\n            return stream2[method].apply(stream2, arguments);\n          };\n        })(i5);\n      }\n    }\n    for (var n5 = 0; n5 < kProxyEvents.length; n5++) {\n      stream2.on(kProxyEvents[n5], this.emit.bind(this, kProxyEvents[n5]));\n    }\n    this._read = function(n6) {\n      debug(\"wrapped _read\", n6);\n      if (paused) {\n        paused = false;\n        stream2.resume();\n      }\n    };\n    return this;\n  };\n  Object.defineProperty(Readable2.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  Readable2._fromList = fromList;\n  function fromList(n5, state) {\n    if (state.length === 0) return null;\n    var ret;\n    if (state.objectMode) ret = state.buffer.shift();\n    else if (!n5 || n5 >= state.length) {\n      if (state.decoder) ret = state.buffer.join(\"\");\n      else if (state.buffer.length === 1) ret = state.buffer.head.data;\n      else ret = state.buffer.concat(state.length);\n      state.buffer.clear();\n    } else {\n      ret = fromListPartial(n5, state.buffer, state.decoder);\n    }\n    return ret;\n  }\n  function fromListPartial(n5, list, hasStrings) {\n    var ret;\n    if (n5 < list.head.data.length) {\n      ret = list.head.data.slice(0, n5);\n      list.head.data = list.head.data.slice(n5);\n    } else if (n5 === list.head.data.length) {\n      ret = list.shift();\n    } else {\n      ret = hasStrings ? copyFromBufferString(n5, list) : copyFromBuffer(n5, list);\n    }\n    return ret;\n  }\n  function copyFromBufferString(n5, list) {\n    var p5 = list.head;\n    var c5 = 1;\n    var ret = p5.data;\n    n5 -= ret.length;\n    while (p5 = p5.next) {\n      var str = p5.data;\n      var nb = n5 > str.length ? str.length : n5;\n      if (nb === str.length) ret += str;\n      else ret += str.slice(0, n5);\n      n5 -= nb;\n      if (n5 === 0) {\n        if (nb === str.length) {\n          ++c5;\n          if (p5.next) list.head = p5.next;\n          else list.head = list.tail = null;\n        } else {\n          list.head = p5;\n          p5.data = str.slice(nb);\n        }\n        break;\n      }\n      ++c5;\n    }\n    list.length -= c5;\n    return ret;\n  }\n  function copyFromBuffer(n5, list) {\n    var ret = Buffer.allocUnsafe(n5);\n    var p5 = list.head;\n    var c5 = 1;\n    p5.data.copy(ret);\n    n5 -= p5.data.length;\n    while (p5 = p5.next) {\n      var buf = p5.data;\n      var nb = n5 > buf.length ? buf.length : n5;\n      buf.copy(ret, ret.length - n5, 0, nb);\n      n5 -= nb;\n      if (n5 === 0) {\n        if (nb === buf.length) {\n          ++c5;\n          if (p5.next) list.head = p5.next;\n          else list.head = list.tail = null;\n        } else {\n          list.head = p5;\n          p5.data = buf.slice(nb);\n        }\n        break;\n      }\n      ++c5;\n    }\n    list.length -= c5;\n    return ret;\n  }\n  function endReadable(stream2) {\n    var state = stream2._readableState;\n    if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n    if (!state.endEmitted) {\n      state.ended = true;\n      pna.nextTick(endReadableNT, state, stream2);\n    }\n  }\n  function endReadableNT(state, stream2) {\n    if (!state.endEmitted && state.length === 0) {\n      state.endEmitted = true;\n      stream2.readable = false;\n      stream2.emit(\"end\");\n    }\n  }\n  function indexOf3(xs, x4) {\n    for (var i5 = 0, l5 = xs.length; i5 < l5; i5++) {\n      if (xs[i5] === x4) return i5;\n    }\n    return -1;\n  }\n  return exports$152;\n}\nvar exports$142 = {};\nvar _dewExec$132 = false;\nfunction dew$132() {\n  if (_dewExec$132) return exports$142;\n  _dewExec$132 = true;\n  exports$142 = Transform;\n  var Duplex = dew$15();\n  var util = Object.create(dew$19());\n  util.inherits = dew3();\n  util.inherits(Transform, Duplex);\n  function afterTransform(er, data) {\n    var ts = this._transformState;\n    ts.transforming = false;\n    var cb = ts.writecb;\n    if (!cb) {\n      return this.emit(\"error\", new Error(\"write callback called multiple times\"));\n    }\n    ts.writechunk = null;\n    ts.writecb = null;\n    if (data != null)\n      this.push(data);\n    cb(er);\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  function Transform(options) {\n    if (!(this instanceof Transform)) return new Transform(options);\n    Duplex.call(this, options);\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    this._readableState.needReadable = true;\n    this._readableState.sync = false;\n    if (options) {\n      if (typeof options.transform === \"function\") this._transform = options.transform;\n      if (typeof options.flush === \"function\") this._flush = options.flush;\n    }\n    this.on(\"prefinish\", prefinish);\n  }\n  function prefinish() {\n    var _this = this;\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  Transform.prototype.push = function(chunk, encoding) {\n    this._transformState.needTransform = false;\n    return Duplex.prototype.push.call(this, chunk, encoding);\n  };\n  Transform.prototype._transform = function(chunk, encoding, cb) {\n    throw new Error(\"_transform() is not implemented\");\n  };\n  Transform.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  Transform.prototype._read = function(n5) {\n    var ts = this._transformState;\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      ts.needTransform = true;\n    }\n  };\n  Transform.prototype._destroy = function(err, cb) {\n    var _this2 = this;\n    Duplex.prototype._destroy.call(this, err, function(err2) {\n      cb(err2);\n      _this2.emit(\"close\");\n    });\n  };\n  function done(stream2, er, data) {\n    if (er) return stream2.emit(\"error\", er);\n    if (data != null)\n      stream2.push(data);\n    if (stream2._writableState.length) throw new Error(\"Calling transform done when ws.length != 0\");\n    if (stream2._transformState.transforming) throw new Error(\"Calling transform done when still transforming\");\n    return stream2.push(null);\n  }\n  return exports$142;\n}\nvar exports$132 = {};\nvar _dewExec$122 = false;\nfunction dew$122() {\n  if (_dewExec$122) return exports$132;\n  _dewExec$122 = true;\n  exports$132 = PassThrough;\n  var Transform = dew$132();\n  var util = Object.create(dew$19());\n  util.inherits = dew3();\n  util.inherits(PassThrough, Transform);\n  function PassThrough(options) {\n    if (!(this instanceof PassThrough)) return new PassThrough(options);\n    Transform.call(this, options);\n  }\n  PassThrough.prototype._transform = function(chunk, encoding, cb) {\n    cb(null, chunk);\n  };\n  return exports$132;\n}\nvar exports$122 = {};\nvar _dewExec$11 = false;\nfunction dew$11() {\n  if (_dewExec$11) return exports$122;\n  _dewExec$11 = true;\n  exports$122 = exports$122 = dew$14();\n  exports$122.Stream = exports$122;\n  exports$122.Readable = exports$122;\n  exports$122.Writable = dew$16();\n  exports$122.Duplex = dew$15();\n  exports$122.Transform = dew$132();\n  exports$122.PassThrough = dew$122();\n  return exports$122;\n}\nvar exports$11 = {};\nvar _dewExec$10 = false;\nvar module$4 = {\n  exports: exports$11\n};\nvar _global$e = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$10() {\n  if (_dewExec$10) return module$4.exports;\n  _dewExec$10 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$e).negative = 0;\n      (this || _global$e).words = null;\n      (this || _global$e).length = 0;\n      (this || _global$e).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = dew().Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$e).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$e).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$e).words = [number & 67108863];\n        (this || _global$e).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$e).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$e).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$e).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$e).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$e).words = [0];\n        (this || _global$e).length = 1;\n        return this || _global$e;\n      }\n      (this || _global$e).length = Math.ceil(number.length / 3);\n      (this || _global$e).words = new Array((this || _global$e).length);\n      for (var i5 = 0; i5 < (this || _global$e).length; i5++) {\n        (this || _global$e).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$e).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$e).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$e).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$e).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this._strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 48 && c5 <= 57) {\n        return c5 - 48;\n      } else if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        assert2(false, \"Invalid character in \" + string);\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$e).length = Math.ceil((number.length - start) / 6);\n      (this || _global$e).words = new Array((this || _global$e).length);\n      for (var i5 = 0; i5 < (this || _global$e).length; i5++) {\n        (this || _global$e).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$e).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$e).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$e).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$e).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this._strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var b4 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          b4 = c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          b4 = c5 - 17 + 10;\n        } else {\n          b4 = c5;\n        }\n        assert2(c5 >= 0 && b4 < mul, \"Invalid character\");\n        r5 += b4;\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$e).words = [0];\n      (this || _global$e).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$e).words[0] + word < 67108864) {\n          (this || _global$e).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$e).words[0] + word < 67108864) {\n          (this || _global$e).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this._strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$e).length);\n      for (var i5 = 0; i5 < (this || _global$e).length; i5++) {\n        dest.words[i5] = (this || _global$e).words[i5];\n      }\n      dest.length = (this || _global$e).length;\n      dest.negative = (this || _global$e).negative;\n      dest.red = (this || _global$e).red;\n    };\n    function move(dest, src) {\n      dest.words = src.words;\n      dest.length = src.length;\n      dest.negative = src.negative;\n      dest.red = src.red;\n    }\n    BN.prototype._move = function _move(dest) {\n      move(dest, this || _global$e);\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$e).length < size) {\n        (this || _global$e).words[(this || _global$e).length++] = 0;\n      }\n      return this || _global$e;\n    };\n    BN.prototype._strip = function strip() {\n      while ((this || _global$e).length > 1 && (this || _global$e).words[(this || _global$e).length - 1] === 0) {\n        (this || _global$e).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$e).length === 1 && (this || _global$e).words[0] === 0) {\n        (this || _global$e).negative = 0;\n      }\n      return this || _global$e;\n    };\n    if (typeof Symbol !== \"undefined\" && typeof Symbol.for === \"function\") {\n      try {\n        BN.prototype[/* @__PURE__ */ Symbol.for(\"nodejs.util.inspect.custom\")] = inspect;\n      } catch (e7) {\n        BN.prototype.inspect = inspect;\n      }\n    } else {\n      BN.prototype.inspect = inspect;\n    }\n    function inspect() {\n      return ((this || _global$e).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    }\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$e).length; i5++) {\n          var w4 = (this || _global$e).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n          if (carry !== 0 || i5 !== (this || _global$e).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$e).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modrn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$e).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$e).words[0];\n      if ((this || _global$e).length === 2) {\n        ret += (this || _global$e).words[1] * 67108864;\n      } else if ((this || _global$e).length === 3 && (this || _global$e).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$e).words[1] * 67108864;\n      } else if ((this || _global$e).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$e).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16, 2);\n    };\n    if (Buffer) {\n      BN.prototype.toBuffer = function toBuffer(endian, length) {\n        return this.toArrayLike(Buffer, endian, length);\n      };\n    }\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    var allocate = function allocate2(ArrayType, size) {\n      if (ArrayType.allocUnsafe) {\n        return ArrayType.allocUnsafe(size);\n      }\n      return new ArrayType(size);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      this._strip();\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      var res = allocate(ArrayType, reqLength);\n      var postfix = endian === \"le\" ? \"LE\" : \"BE\";\n      this[\"_toArrayLike\" + postfix](res, byteLength);\n      return res;\n    };\n    BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n      var position = 0;\n      var carry = 0;\n      for (var i5 = 0, shift = 0; i5 < (this || _global$e).length; i5++) {\n        var word = (this || _global$e).words[i5] << shift | carry;\n        res[position++] = word & 255;\n        if (position < res.length) {\n          res[position++] = word >> 8 & 255;\n        }\n        if (position < res.length) {\n          res[position++] = word >> 16 & 255;\n        }\n        if (shift === 6) {\n          if (position < res.length) {\n            res[position++] = word >> 24 & 255;\n          }\n          carry = 0;\n          shift = 0;\n        } else {\n          carry = word >>> 24;\n          shift += 2;\n        }\n      }\n      if (position < res.length) {\n        res[position++] = carry;\n        while (position < res.length) {\n          res[position++] = 0;\n        }\n      }\n    };\n    BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n      var position = res.length - 1;\n      var carry = 0;\n      for (var i5 = 0, shift = 0; i5 < (this || _global$e).length; i5++) {\n        var word = (this || _global$e).words[i5] << shift | carry;\n        res[position--] = word & 255;\n        if (position >= 0) {\n          res[position--] = word >> 8 & 255;\n        }\n        if (position >= 0) {\n          res[position--] = word >> 16 & 255;\n        }\n        if (shift === 6) {\n          if (position >= 0) {\n            res[position--] = word >> 24 & 255;\n          }\n          carry = 0;\n          shift = 0;\n        } else {\n          carry = word >>> 24;\n          shift += 2;\n        }\n      }\n      if (position >= 0) {\n        res[position--] = carry;\n        while (position >= 0) {\n          res[position--] = 0;\n        }\n      }\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$e).words[(this || _global$e).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$e).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = num.words[off2] >>> wbit & 1;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$e).length; i5++) {\n        var b4 = this._zeroBits((this || _global$e).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$e).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$e).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$e).negative ^= 1;\n      }\n      return this || _global$e;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$e).length < num.length) {\n        (this || _global$e).words[(this || _global$e).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$e).words[i5] = (this || _global$e).words[i5] | num.words[i5];\n      }\n      return this._strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$e).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$e).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$e);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$e).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$e);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$e).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$e;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$e).words[i5] = (this || _global$e).words[i5] & num.words[i5];\n      }\n      (this || _global$e).length = b4.length;\n      return this._strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$e).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$e).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$e);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$e).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$e);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$e).length > num.length) {\n        a5 = this || _global$e;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$e;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$e).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$e) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$e).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$e).length = a5.length;\n      return this._strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$e).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$e).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$e);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$e).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$e);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$e).words[i5] = ~(this || _global$e).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$e).words[i5] = ~(this || _global$e).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this._strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$e).words[off2] = (this || _global$e).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$e).words[off2] = (this || _global$e).words[off2] & ~(1 << wbit);\n      }\n      return this._strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$e).negative !== 0 && num.negative === 0) {\n        (this || _global$e).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$e).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$e).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$e).length > num.length) {\n        a5 = this || _global$e;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$e;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$e).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$e).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$e).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$e).words[(this || _global$e).length] = carry;\n        (this || _global$e).length++;\n      } else if (a5 !== (this || _global$e)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$e).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$e;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$e).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$e).negative !== 0) {\n        (this || _global$e).negative = 0;\n        res = num.sub(this || _global$e);\n        (this || _global$e).negative = 1;\n        return res;\n      }\n      if ((this || _global$e).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$e);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$e).negative !== 0) {\n        (this || _global$e).negative = 0;\n        this.iadd(num);\n        (this || _global$e).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$e).negative = 0;\n        (this || _global$e).length = 1;\n        (this || _global$e).words[0] = 0;\n        return this || _global$e;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$e;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$e;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$e).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$e).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$e)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$e).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$e).length = Math.max((this || _global$e).length, i5);\n      if (a5 !== (this || _global$e)) {\n        (this || _global$e).negative = 1;\n      }\n      return this._strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out._strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out._strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      return bigMulTo(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$e).length + num.length;\n      if ((this || _global$e).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$e, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$e, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$e, num, out);\n      } else {\n        res = jumboMulTo(this || _global$e, num, out);\n      }\n      return res;\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$e).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$e).length + num.length);\n      return jumboMulTo(this || _global$e, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$e);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$e).length; i5++) {\n        var w4 = ((this || _global$e).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$e).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$e).words[i5] = carry;\n        (this || _global$e).length++;\n      }\n      return isNegNum ? this.ineg() : this || _global$e;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$e);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$e;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$e).length; i5++) {\n          var newCarry = (this || _global$e).words[i5] & carryMask;\n          var c5 = ((this || _global$e).words[i5] | 0) - newCarry << r5;\n          (this || _global$e).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$e).words[i5] = carry;\n          (this || _global$e).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$e).length - 1; i5 >= 0; i5--) {\n          (this || _global$e).words[i5 + s5] = (this || _global$e).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$e).words[i5] = 0;\n        }\n        (this || _global$e).length += s5;\n      }\n      return this._strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$e).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$e).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$e).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$e).length > s5) {\n        (this || _global$e).length -= s5;\n        for (i5 = 0; i5 < (this || _global$e).length; i5++) {\n          (this || _global$e).words[i5] = (this || _global$e).words[i5 + s5];\n        }\n      } else {\n        (this || _global$e).words[0] = 0;\n        (this || _global$e).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$e).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$e).words[i5] | 0;\n        (this || _global$e).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$e).length === 0) {\n        (this || _global$e).words[0] = 0;\n        (this || _global$e).length = 1;\n      }\n      return this._strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$e).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$e).length <= s5) return false;\n      var w4 = (this || _global$e).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$e).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$e).length <= s5) {\n        return this || _global$e;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$e).length = Math.min(s5, (this || _global$e).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$e).words[(this || _global$e).length - 1] &= mask;\n      }\n      return this._strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$e).negative !== 0) {\n        if ((this || _global$e).length === 1 && ((this || _global$e).words[0] | 0) <= num) {\n          (this || _global$e).words[0] = num - ((this || _global$e).words[0] | 0);\n          (this || _global$e).negative = 0;\n          return this || _global$e;\n        }\n        (this || _global$e).negative = 0;\n        this.isubn(num);\n        (this || _global$e).negative = 1;\n        return this || _global$e;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$e).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$e).length && (this || _global$e).words[i5] >= 67108864; i5++) {\n        (this || _global$e).words[i5] -= 67108864;\n        if (i5 === (this || _global$e).length - 1) {\n          (this || _global$e).words[i5 + 1] = 1;\n        } else {\n          (this || _global$e).words[i5 + 1]++;\n        }\n      }\n      (this || _global$e).length = Math.max((this || _global$e).length, i5 + 1);\n      return this || _global$e;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$e).negative !== 0) {\n        (this || _global$e).negative = 0;\n        this.iaddn(num);\n        (this || _global$e).negative = 1;\n        return this || _global$e;\n      }\n      (this || _global$e).words[0] -= num;\n      if ((this || _global$e).length === 1 && (this || _global$e).words[0] < 0) {\n        (this || _global$e).words[0] = -(this || _global$e).words[0];\n        (this || _global$e).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$e).length && (this || _global$e).words[i5] < 0; i5++) {\n          (this || _global$e).words[i5] += 67108864;\n          (this || _global$e).words[i5 + 1] -= 1;\n        }\n      }\n      return this._strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$e).negative = 0;\n      return this || _global$e;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$e).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$e).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$e).length - shift; i5++) {\n        w4 = ((this || _global$e).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$e).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this._strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$e).length; i5++) {\n        w4 = -((this || _global$e).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$e).words[i5] = w4 & 67108863;\n      }\n      (this || _global$e).negative = 1;\n      return this._strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$e).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3._strip();\n      }\n      a5._strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$e).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$e).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$e).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$e).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$e\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modrn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modrn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modrn = function modrn(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$e).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$e).words[i5] | 0)) % num;\n      }\n      return isNegNum ? -acc : acc;\n    };\n    BN.prototype.modn = function modn(num) {\n      return this.modrn(num);\n    };\n    BN.prototype.idivn = function idivn(num) {\n      var isNegNum = num < 0;\n      if (isNegNum) num = -num;\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$e).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$e).words[i5] | 0) + carry * 67108864;\n        (this || _global$e).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      this._strip();\n      return isNegNum ? this.ineg() : this || _global$e;\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$e;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$e;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$e).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$e).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$e).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$e).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$e).words[s5] |= q3;\n        return this || _global$e;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$e).length; i5++) {\n        var w4 = (this || _global$e).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$e).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$e).words[i5] = carry;\n        (this || _global$e).length++;\n      }\n      return this || _global$e;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$e).length === 1 && (this || _global$e).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$e).negative !== 0 && !negative) return -1;\n      if ((this || _global$e).negative === 0 && negative) return 1;\n      this._strip();\n      var res;\n      if ((this || _global$e).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$e).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$e).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$e).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$e).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$e).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$e).length > num.length) return 1;\n      if ((this || _global$e).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$e).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$e).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$e).red, \"Already a number in reduction context\");\n      assert2((this || _global$e).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$e)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$e).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$e).red.convertFrom(this || _global$e);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$e).red = ctx;\n      return this || _global$e;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$e).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$e).red, \"redAdd works only with red numbers\");\n      return (this || _global$e).red.add(this || _global$e, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$e).red, \"redIAdd works only with red numbers\");\n      return (this || _global$e).red.iadd(this || _global$e, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$e).red, \"redSub works only with red numbers\");\n      return (this || _global$e).red.sub(this || _global$e, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$e).red, \"redISub works only with red numbers\");\n      return (this || _global$e).red.isub(this || _global$e, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$e).red, \"redShl works only with red numbers\");\n      return (this || _global$e).red.shl(this || _global$e, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$e).red, \"redMul works only with red numbers\");\n      (this || _global$e).red._verify2(this || _global$e, num);\n      return (this || _global$e).red.mul(this || _global$e, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$e).red, \"redMul works only with red numbers\");\n      (this || _global$e).red._verify2(this || _global$e, num);\n      return (this || _global$e).red.imul(this || _global$e, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$e).red, \"redSqr works only with red numbers\");\n      (this || _global$e).red._verify1(this || _global$e);\n      return (this || _global$e).red.sqr(this || _global$e);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$e).red, \"redISqr works only with red numbers\");\n      (this || _global$e).red._verify1(this || _global$e);\n      return (this || _global$e).red.isqr(this || _global$e);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$e).red, \"redSqrt works only with red numbers\");\n      (this || _global$e).red._verify1(this || _global$e);\n      return (this || _global$e).red.sqrt(this || _global$e);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$e).red, \"redInvm works only with red numbers\");\n      (this || _global$e).red._verify1(this || _global$e);\n      return (this || _global$e).red.invm(this || _global$e);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$e).red, \"redNeg works only with red numbers\");\n      (this || _global$e).red._verify1(this || _global$e);\n      return (this || _global$e).red.neg(this || _global$e);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$e).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$e).red._verify1(this || _global$e);\n      return (this || _global$e).red.pow(this || _global$e, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$e).name = name2;\n      (this || _global$e).p = new BN(p5, 16);\n      (this || _global$e).n = (this || _global$e).p.bitLength();\n      (this || _global$e).k = new BN(1).iushln((this || _global$e).n).isub((this || _global$e).p);\n      (this || _global$e).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$e).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$e).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$e).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$e).n);\n      var cmp = rlen < (this || _global$e).n ? -1 : r5.ucmp((this || _global$e).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$e).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$e).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$e).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$e, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$e, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$e, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$e, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$e).m = prime.p;\n        (this || _global$e).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$e).m = m4;\n        (this || _global$e).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$e).prime) return (this || _global$e).prime.ireduce(a5)._forceRed(this || _global$e);\n      move(a5, a5.umod((this || _global$e).m)._forceRed(this || _global$e));\n      return a5;\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$e).m.sub(a5)._forceRed(this || _global$e);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$e).m) >= 0) {\n        res.isub((this || _global$e).m);\n      }\n      return res._forceRed(this || _global$e);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$e).m) >= 0) {\n        res.isub((this || _global$e).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$e).m);\n      }\n      return res._forceRed(this || _global$e);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$e).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$e).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$e).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$e).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$e);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$e).m.subn(1).iushrn(1);\n      var z4 = (this || _global$e).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$e);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$e).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$e);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$e);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$e).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$e, m4);\n      (this || _global$e).shift = (this || _global$e).m.bitLength();\n      if ((this || _global$e).shift % 26 !== 0) {\n        (this || _global$e).shift += 26 - (this || _global$e).shift % 26;\n      }\n      (this || _global$e).r = new BN(1).iushln((this || _global$e).shift);\n      (this || _global$e).r2 = this.imod((this || _global$e).r.sqr());\n      (this || _global$e).rinv = (this || _global$e).r._invmp((this || _global$e).m);\n      (this || _global$e).minv = (this || _global$e).rinv.mul((this || _global$e).r).isubn(1).div((this || _global$e).m);\n      (this || _global$e).minv = (this || _global$e).minv.umod((this || _global$e).r);\n      (this || _global$e).minv = (this || _global$e).r.sub((this || _global$e).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$e).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$e).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$e).shift).mul((this || _global$e).minv).imaskn((this || _global$e).shift).mul((this || _global$e).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$e).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$e).m) >= 0) {\n        res = u5.isub((this || _global$e).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$e).m);\n      }\n      return res._forceRed(this || _global$e);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$e);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$e).shift).mul((this || _global$e).minv).imaskn((this || _global$e).shift).mul((this || _global$e).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$e).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$e).m) >= 0) {\n        res = u5.isub((this || _global$e).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$e).m);\n      }\n      return res._forceRed(this || _global$e);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$e).m).mul((this || _global$e).r2));\n      return res._forceRed(this || _global$e);\n    };\n  })(module$4, exports$11);\n  return module$4.exports;\n}\nvar exports$10 = {};\nvar _dewExec$$ = false;\nfunction dew$$() {\n  if (_dewExec$$) return exports$10;\n  _dewExec$$ = true;\n  var BN = dew$10();\n  var randomBytes2 = dew$3G();\n  var Buffer = dew$12().Buffer;\n  function getr(priv) {\n    var len = priv.modulus.byteLength();\n    var r5;\n    do {\n      r5 = new BN(randomBytes2(len));\n    } while (r5.cmp(priv.modulus) >= 0 || !r5.umod(priv.prime1) || !r5.umod(priv.prime2));\n    return r5;\n  }\n  function blind(priv) {\n    var r5 = getr(priv);\n    var blinder = r5.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n    return {\n      blinder,\n      unblinder: r5.invm(priv.modulus)\n    };\n  }\n  function crt(msg, priv) {\n    var blinds = blind(priv);\n    var len = priv.modulus.byteLength();\n    var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n    var c1 = blinded.toRed(BN.mont(priv.prime1));\n    var c22 = blinded.toRed(BN.mont(priv.prime2));\n    var qinv = priv.coefficient;\n    var p5 = priv.prime1;\n    var q3 = priv.prime2;\n    var m1 = c1.redPow(priv.exponent1).fromRed();\n    var m22 = c22.redPow(priv.exponent2).fromRed();\n    var h5 = m1.isub(m22).imul(qinv).umod(p5).imul(q3);\n    return m22.iadd(h5).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, \"be\", len);\n  }\n  crt.getr = getr;\n  exports$10 = crt;\n  return exports$10;\n}\nvar _package = {\n  \"name\": \"elliptic\",\n  \"version\": \"6.5.7\",\n  \"description\": \"EC cryptography\",\n  \"main\": \"lib/elliptic.js\",\n  \"files\": [\n    \"lib\"\n  ],\n  \"scripts\": {\n    \"lint\": \"eslint lib test\",\n    \"lint:fix\": \"npm run lint -- --fix\",\n    \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n    \"test\": \"npm run lint && npm run unit\",\n    \"version\": \"grunt dist && git add dist/\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git@github.com:indutny/elliptic\"\n  },\n  \"keywords\": [\n    \"EC\",\n    \"Elliptic\",\n    \"curve\",\n    \"Cryptography\"\n  ],\n  \"author\": \"Fedor Indutny <fedor@indutny.com>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/indutny/elliptic/issues\"\n  },\n  \"homepage\": \"https://github.com/indutny/elliptic\",\n  \"devDependencies\": {\n    \"brfs\": \"^2.0.2\",\n    \"coveralls\": \"^3.1.0\",\n    \"eslint\": \"^7.6.0\",\n    \"grunt\": \"^1.2.1\",\n    \"grunt-browserify\": \"^5.3.0\",\n    \"grunt-cli\": \"^1.3.2\",\n    \"grunt-contrib-connect\": \"^3.0.0\",\n    \"grunt-contrib-copy\": \"^1.0.0\",\n    \"grunt-contrib-uglify\": \"^5.0.0\",\n    \"grunt-mocha-istanbul\": \"^5.0.2\",\n    \"grunt-saucelabs\": \"^9.0.1\",\n    \"istanbul\": \"^0.4.5\",\n    \"mocha\": \"^8.0.1\"\n  },\n  \"dependencies\": {\n    \"bn.js\": \"^4.11.9\",\n    \"brorand\": \"^1.1.0\",\n    \"hash.js\": \"^1.0.0\",\n    \"hmac-drbg\": \"^1.0.1\",\n    \"inherits\": \"^2.0.4\",\n    \"minimalistic-assert\": \"^1.0.1\",\n    \"minimalistic-crypto-utils\": \"^1.0.1\"\n  }\n};\nvar exports$$ = {};\nvar _dewExec$_ = false;\nvar module$3 = {\n  exports: exports$$\n};\nvar _global$d = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$_() {\n  if (_dewExec$_) return module$3.exports;\n  _dewExec$_ = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$d).negative = 0;\n      (this || _global$d).words = null;\n      (this || _global$d).length = 0;\n      (this || _global$d).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = dew().Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$d).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$d).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$d).words = [number & 67108863];\n        (this || _global$d).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$d).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$d).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$d).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$d).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$d).words = [0];\n        (this || _global$d).length = 1;\n        return this || _global$d;\n      }\n      (this || _global$d).length = Math.ceil(number.length / 3);\n      (this || _global$d).words = new Array((this || _global$d).length);\n      for (var i5 = 0; i5 < (this || _global$d).length; i5++) {\n        (this || _global$d).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$d).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$d).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$d).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$d).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$d).length = Math.ceil((number.length - start) / 6);\n      (this || _global$d).words = new Array((this || _global$d).length);\n      for (var i5 = 0; i5 < (this || _global$d).length; i5++) {\n        (this || _global$d).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$d).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$d).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$d).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$d).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$d).words = [0];\n      (this || _global$d).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$d).words[0] + word < 67108864) {\n          (this || _global$d).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$d).words[0] + word < 67108864) {\n          (this || _global$d).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$d).length);\n      for (var i5 = 0; i5 < (this || _global$d).length; i5++) {\n        dest.words[i5] = (this || _global$d).words[i5];\n      }\n      dest.length = (this || _global$d).length;\n      dest.negative = (this || _global$d).negative;\n      dest.red = (this || _global$d).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$d).length < size) {\n        (this || _global$d).words[(this || _global$d).length++] = 0;\n      }\n      return this || _global$d;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$d).length > 1 && (this || _global$d).words[(this || _global$d).length - 1] === 0) {\n        (this || _global$d).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$d).length === 1 && (this || _global$d).words[0] === 0) {\n        (this || _global$d).negative = 0;\n      }\n      return this || _global$d;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$d).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$d).length; i5++) {\n          var w4 = (this || _global$d).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$d).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$d).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$d).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$d).words[0];\n      if ((this || _global$d).length === 2) {\n        ret += (this || _global$d).words[1] * 67108864;\n      } else if ((this || _global$d).length === 3 && (this || _global$d).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$d).words[1] * 67108864;\n      } else if ((this || _global$d).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$d).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$d).words[(this || _global$d).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$d).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$d).length; i5++) {\n        var b4 = this._zeroBits((this || _global$d).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$d).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$d).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$d).negative ^= 1;\n      }\n      return this || _global$d;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$d).length < num.length) {\n        (this || _global$d).words[(this || _global$d).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$d).words[i5] = (this || _global$d).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$d).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$d).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$d);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$d).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$d);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$d).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$d;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$d).words[i5] = (this || _global$d).words[i5] & num.words[i5];\n      }\n      (this || _global$d).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$d).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$d).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$d);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$d).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$d);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$d).length > num.length) {\n        a5 = this || _global$d;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$d;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$d).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$d) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$d).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$d).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$d).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$d).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$d);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$d).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$d);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$d).words[i5] = ~(this || _global$d).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$d).words[i5] = ~(this || _global$d).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$d).words[off2] = (this || _global$d).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$d).words[off2] = (this || _global$d).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$d).negative !== 0 && num.negative === 0) {\n        (this || _global$d).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$d).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$d).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$d).length > num.length) {\n        a5 = this || _global$d;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$d;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$d).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$d).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$d).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$d).words[(this || _global$d).length] = carry;\n        (this || _global$d).length++;\n      } else if (a5 !== (this || _global$d)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$d).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$d;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$d).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$d).negative !== 0) {\n        (this || _global$d).negative = 0;\n        res = num.sub(this || _global$d);\n        (this || _global$d).negative = 1;\n        return res;\n      }\n      if ((this || _global$d).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$d);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$d).negative !== 0) {\n        (this || _global$d).negative = 0;\n        this.iadd(num);\n        (this || _global$d).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$d).negative = 0;\n        (this || _global$d).length = 1;\n        (this || _global$d).words[0] = 0;\n        return this || _global$d;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$d;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$d;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$d).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$d).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$d)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$d).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$d).length = Math.max((this || _global$d).length, i5);\n      if (a5 !== (this || _global$d)) {\n        (this || _global$d).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$d).length + num.length;\n      if ((this || _global$d).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$d, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$d, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$d, num, out);\n      } else {\n        res = jumboMulTo(this || _global$d, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$d).x = x4;\n      (this || _global$d).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$d).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$d).length + num.length);\n      return jumboMulTo(this || _global$d, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$d);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$d).length; i5++) {\n        var w4 = ((this || _global$d).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$d).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$d).words[i5] = carry;\n        (this || _global$d).length++;\n      }\n      return this || _global$d;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$d);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$d;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$d).length; i5++) {\n          var newCarry = (this || _global$d).words[i5] & carryMask;\n          var c5 = ((this || _global$d).words[i5] | 0) - newCarry << r5;\n          (this || _global$d).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$d).words[i5] = carry;\n          (this || _global$d).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$d).length - 1; i5 >= 0; i5--) {\n          (this || _global$d).words[i5 + s5] = (this || _global$d).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$d).words[i5] = 0;\n        }\n        (this || _global$d).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$d).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$d).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$d).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$d).length > s5) {\n        (this || _global$d).length -= s5;\n        for (i5 = 0; i5 < (this || _global$d).length; i5++) {\n          (this || _global$d).words[i5] = (this || _global$d).words[i5 + s5];\n        }\n      } else {\n        (this || _global$d).words[0] = 0;\n        (this || _global$d).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$d).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$d).words[i5] | 0;\n        (this || _global$d).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$d).length === 0) {\n        (this || _global$d).words[0] = 0;\n        (this || _global$d).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$d).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$d).length <= s5) return false;\n      var w4 = (this || _global$d).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$d).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$d).length <= s5) {\n        return this || _global$d;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$d).length = Math.min(s5, (this || _global$d).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$d).words[(this || _global$d).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$d).negative !== 0) {\n        if ((this || _global$d).length === 1 && ((this || _global$d).words[0] | 0) < num) {\n          (this || _global$d).words[0] = num - ((this || _global$d).words[0] | 0);\n          (this || _global$d).negative = 0;\n          return this || _global$d;\n        }\n        (this || _global$d).negative = 0;\n        this.isubn(num);\n        (this || _global$d).negative = 1;\n        return this || _global$d;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$d).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$d).length && (this || _global$d).words[i5] >= 67108864; i5++) {\n        (this || _global$d).words[i5] -= 67108864;\n        if (i5 === (this || _global$d).length - 1) {\n          (this || _global$d).words[i5 + 1] = 1;\n        } else {\n          (this || _global$d).words[i5 + 1]++;\n        }\n      }\n      (this || _global$d).length = Math.max((this || _global$d).length, i5 + 1);\n      return this || _global$d;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$d).negative !== 0) {\n        (this || _global$d).negative = 0;\n        this.iaddn(num);\n        (this || _global$d).negative = 1;\n        return this || _global$d;\n      }\n      (this || _global$d).words[0] -= num;\n      if ((this || _global$d).length === 1 && (this || _global$d).words[0] < 0) {\n        (this || _global$d).words[0] = -(this || _global$d).words[0];\n        (this || _global$d).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$d).length && (this || _global$d).words[i5] < 0; i5++) {\n          (this || _global$d).words[i5] += 67108864;\n          (this || _global$d).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$d).negative = 0;\n      return this || _global$d;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$d).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$d).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$d).length - shift; i5++) {\n        w4 = ((this || _global$d).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$d).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$d).length; i5++) {\n        w4 = -((this || _global$d).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$d).words[i5] = w4 & 67108863;\n      }\n      (this || _global$d).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$d).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$d).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$d).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$d).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$d).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$d\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$d).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$d).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$d).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$d).words[i5] | 0) + carry * 67108864;\n        (this || _global$d).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$d;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$d;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$d).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$d).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$d).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$d).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$d).words[s5] |= q3;\n        return this || _global$d;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$d).length; i5++) {\n        var w4 = (this || _global$d).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$d).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$d).words[i5] = carry;\n        (this || _global$d).length++;\n      }\n      return this || _global$d;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$d).length === 1 && (this || _global$d).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$d).negative !== 0 && !negative) return -1;\n      if ((this || _global$d).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$d).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$d).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$d).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$d).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$d).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$d).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$d).length > num.length) return 1;\n      if ((this || _global$d).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$d).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$d).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$d).red, \"Already a number in reduction context\");\n      assert2((this || _global$d).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$d)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$d).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$d).red.convertFrom(this || _global$d);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$d).red = ctx;\n      return this || _global$d;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$d).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$d).red, \"redAdd works only with red numbers\");\n      return (this || _global$d).red.add(this || _global$d, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$d).red, \"redIAdd works only with red numbers\");\n      return (this || _global$d).red.iadd(this || _global$d, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$d).red, \"redSub works only with red numbers\");\n      return (this || _global$d).red.sub(this || _global$d, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$d).red, \"redISub works only with red numbers\");\n      return (this || _global$d).red.isub(this || _global$d, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$d).red, \"redShl works only with red numbers\");\n      return (this || _global$d).red.shl(this || _global$d, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$d).red, \"redMul works only with red numbers\");\n      (this || _global$d).red._verify2(this || _global$d, num);\n      return (this || _global$d).red.mul(this || _global$d, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$d).red, \"redMul works only with red numbers\");\n      (this || _global$d).red._verify2(this || _global$d, num);\n      return (this || _global$d).red.imul(this || _global$d, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$d).red, \"redSqr works only with red numbers\");\n      (this || _global$d).red._verify1(this || _global$d);\n      return (this || _global$d).red.sqr(this || _global$d);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$d).red, \"redISqr works only with red numbers\");\n      (this || _global$d).red._verify1(this || _global$d);\n      return (this || _global$d).red.isqr(this || _global$d);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$d).red, \"redSqrt works only with red numbers\");\n      (this || _global$d).red._verify1(this || _global$d);\n      return (this || _global$d).red.sqrt(this || _global$d);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$d).red, \"redInvm works only with red numbers\");\n      (this || _global$d).red._verify1(this || _global$d);\n      return (this || _global$d).red.invm(this || _global$d);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$d).red, \"redNeg works only with red numbers\");\n      (this || _global$d).red._verify1(this || _global$d);\n      return (this || _global$d).red.neg(this || _global$d);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$d).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$d).red._verify1(this || _global$d);\n      return (this || _global$d).red.pow(this || _global$d, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$d).name = name2;\n      (this || _global$d).p = new BN(p5, 16);\n      (this || _global$d).n = (this || _global$d).p.bitLength();\n      (this || _global$d).k = new BN(1).iushln((this || _global$d).n).isub((this || _global$d).p);\n      (this || _global$d).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$d).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$d).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$d).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$d).n);\n      var cmp = rlen < (this || _global$d).n ? -1 : r5.ucmp((this || _global$d).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$d).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$d).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$d).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$d, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$d, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$d, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$d, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$d).m = prime.p;\n        (this || _global$d).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$d).m = m4;\n        (this || _global$d).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$d).prime) return (this || _global$d).prime.ireduce(a5)._forceRed(this || _global$d);\n      return a5.umod((this || _global$d).m)._forceRed(this || _global$d);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$d).m.sub(a5)._forceRed(this || _global$d);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$d).m) >= 0) {\n        res.isub((this || _global$d).m);\n      }\n      return res._forceRed(this || _global$d);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$d).m) >= 0) {\n        res.isub((this || _global$d).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$d).m);\n      }\n      return res._forceRed(this || _global$d);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$d).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$d).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$d).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$d).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$d);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$d).m.subn(1).iushrn(1);\n      var z4 = (this || _global$d).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$d);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$d).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$d);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$d);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$d).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$d, m4);\n      (this || _global$d).shift = (this || _global$d).m.bitLength();\n      if ((this || _global$d).shift % 26 !== 0) {\n        (this || _global$d).shift += 26 - (this || _global$d).shift % 26;\n      }\n      (this || _global$d).r = new BN(1).iushln((this || _global$d).shift);\n      (this || _global$d).r2 = this.imod((this || _global$d).r.sqr());\n      (this || _global$d).rinv = (this || _global$d).r._invmp((this || _global$d).m);\n      (this || _global$d).minv = (this || _global$d).rinv.mul((this || _global$d).r).isubn(1).div((this || _global$d).m);\n      (this || _global$d).minv = (this || _global$d).minv.umod((this || _global$d).r);\n      (this || _global$d).minv = (this || _global$d).r.sub((this || _global$d).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$d).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$d).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$d).shift).mul((this || _global$d).minv).imaskn((this || _global$d).shift).mul((this || _global$d).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$d).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$d).m) >= 0) {\n        res = u5.isub((this || _global$d).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$d).m);\n      }\n      return res._forceRed(this || _global$d);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$d);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$d).shift).mul((this || _global$d).minv).imaskn((this || _global$d).shift).mul((this || _global$d).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$d).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$d).m) >= 0) {\n        res = u5.isub((this || _global$d).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$d).m);\n      }\n      return res._forceRed(this || _global$d);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$d).m).mul((this || _global$d).r2));\n      return res._forceRed(this || _global$d);\n    };\n  })(module$3, exports$$);\n  return module$3.exports;\n}\nvar exports$_ = {};\nvar _dewExec$Z = false;\nfunction dew$Z() {\n  if (_dewExec$Z) return exports$_;\n  _dewExec$Z = true;\n  var utils = exports$_;\n  function toArray(msg, enc) {\n    if (Array.isArray(msg)) return msg.slice();\n    if (!msg) return [];\n    var res = [];\n    if (typeof msg !== \"string\") {\n      for (var i5 = 0; i5 < msg.length; i5++) res[i5] = msg[i5] | 0;\n      return res;\n    }\n    if (enc === \"hex\") {\n      msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n      if (msg.length % 2 !== 0) msg = \"0\" + msg;\n      for (var i5 = 0; i5 < msg.length; i5 += 2) res.push(parseInt(msg[i5] + msg[i5 + 1], 16));\n    } else {\n      for (var i5 = 0; i5 < msg.length; i5++) {\n        var c5 = msg.charCodeAt(i5);\n        var hi = c5 >> 8;\n        var lo = c5 & 255;\n        if (hi) res.push(hi, lo);\n        else res.push(lo);\n      }\n    }\n    return res;\n  }\n  utils.toArray = toArray;\n  function zero2(word) {\n    if (word.length === 1) return \"0\" + word;\n    else return word;\n  }\n  utils.zero2 = zero2;\n  function toHex(msg) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) res += zero2(msg[i5].toString(16));\n    return res;\n  }\n  utils.toHex = toHex;\n  utils.encode = function encode(arr, enc) {\n    if (enc === \"hex\") return toHex(arr);\n    else return arr;\n  };\n  return exports$_;\n}\nvar exports$Z = {};\nvar _dewExec$Y = false;\nfunction dew$Y() {\n  if (_dewExec$Y) return exports$Z;\n  _dewExec$Y = true;\n  var utils = exports$Z;\n  var BN = dew$_();\n  var minAssert = dew$3h();\n  var minUtils = dew$Z();\n  utils.assert = minAssert;\n  utils.toArray = minUtils.toArray;\n  utils.zero2 = minUtils.zero2;\n  utils.toHex = minUtils.toHex;\n  utils.encode = minUtils.encode;\n  function getNAF(num, w4, bits) {\n    var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n    var i5;\n    for (i5 = 0; i5 < naf.length; i5 += 1) {\n      naf[i5] = 0;\n    }\n    var ws = 1 << w4 + 1;\n    var k4 = num.clone();\n    for (i5 = 0; i5 < naf.length; i5++) {\n      var z4;\n      var mod = k4.andln(ws - 1);\n      if (k4.isOdd()) {\n        if (mod > (ws >> 1) - 1) z4 = (ws >> 1) - mod;\n        else z4 = mod;\n        k4.isubn(z4);\n      } else {\n        z4 = 0;\n      }\n      naf[i5] = z4;\n      k4.iushrn(1);\n    }\n    return naf;\n  }\n  utils.getNAF = getNAF;\n  function getJSF(k1, k22) {\n    var jsf = [[], []];\n    k1 = k1.clone();\n    k22 = k22.clone();\n    var d1 = 0;\n    var d22 = 0;\n    var m8;\n    while (k1.cmpn(-d1) > 0 || k22.cmpn(-d22) > 0) {\n      var m14 = k1.andln(3) + d1 & 3;\n      var m24 = k22.andln(3) + d22 & 3;\n      if (m14 === 3) m14 = -1;\n      if (m24 === 3) m24 = -1;\n      var u1;\n      if ((m14 & 1) === 0) {\n        u1 = 0;\n      } else {\n        m8 = k1.andln(7) + d1 & 7;\n        if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;\n        else u1 = m14;\n      }\n      jsf[0].push(u1);\n      var u22;\n      if ((m24 & 1) === 0) {\n        u22 = 0;\n      } else {\n        m8 = k22.andln(7) + d22 & 7;\n        if ((m8 === 3 || m8 === 5) && m14 === 2) u22 = -m24;\n        else u22 = m24;\n      }\n      jsf[1].push(u22);\n      if (2 * d1 === u1 + 1) d1 = 1 - d1;\n      if (2 * d22 === u22 + 1) d22 = 1 - d22;\n      k1.iushrn(1);\n      k22.iushrn(1);\n    }\n    return jsf;\n  }\n  utils.getJSF = getJSF;\n  function cachedProperty(obj, name2, computer) {\n    var key = \"_\" + name2;\n    obj.prototype[name2] = function cachedProperty2() {\n      return this[key] !== void 0 ? this[key] : this[key] = computer.call(this);\n    };\n  }\n  utils.cachedProperty = cachedProperty;\n  function parseBytes(bytes) {\n    return typeof bytes === \"string\" ? utils.toArray(bytes, \"hex\") : bytes;\n  }\n  utils.parseBytes = parseBytes;\n  function intFromLE(bytes) {\n    return new BN(bytes, \"hex\", \"le\");\n  }\n  utils.intFromLE = intFromLE;\n  return exports$Z;\n}\nvar exports$Y = {};\nvar _dewExec$X = false;\nfunction dew$X() {\n  if (_dewExec$X) return exports$Y;\n  _dewExec$X = true;\n  var BN = dew$_();\n  var utils = dew$Y();\n  var getNAF = utils.getNAF;\n  var getJSF = utils.getJSF;\n  var assert2 = utils.assert;\n  function BaseCurve(type, conf) {\n    this.type = type;\n    this.p = new BN(conf.p, 16);\n    this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n    this.zero = new BN(0).toRed(this.red);\n    this.one = new BN(1).toRed(this.red);\n    this.two = new BN(2).toRed(this.red);\n    this.n = conf.n && new BN(conf.n, 16);\n    this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n    this._wnafT1 = new Array(4);\n    this._wnafT2 = new Array(4);\n    this._wnafT3 = new Array(4);\n    this._wnafT4 = new Array(4);\n    this._bitLength = this.n ? this.n.bitLength() : 0;\n    var adjustCount = this.n && this.p.div(this.n);\n    if (!adjustCount || adjustCount.cmpn(100) > 0) {\n      this.redN = null;\n    } else {\n      this._maxwellTrick = true;\n      this.redN = this.n.toRed(this.red);\n    }\n  }\n  exports$Y = BaseCurve;\n  BaseCurve.prototype.point = function point() {\n    throw new Error(\"Not implemented\");\n  };\n  BaseCurve.prototype.validate = function validate() {\n    throw new Error(\"Not implemented\");\n  };\n  BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p5, k4) {\n    assert2(p5.precomputed);\n    var doubles = p5._getDoubles();\n    var naf = getNAF(k4, 1, this._bitLength);\n    var I4 = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n    I4 /= 3;\n    var repr = [];\n    var j4;\n    var nafW;\n    for (j4 = 0; j4 < naf.length; j4 += doubles.step) {\n      nafW = 0;\n      for (var l5 = j4 + doubles.step - 1; l5 >= j4; l5--) nafW = (nafW << 1) + naf[l5];\n      repr.push(nafW);\n    }\n    var a5 = this.jpoint(null, null, null);\n    var b4 = this.jpoint(null, null, null);\n    for (var i5 = I4; i5 > 0; i5--) {\n      for (j4 = 0; j4 < repr.length; j4++) {\n        nafW = repr[j4];\n        if (nafW === i5) b4 = b4.mixedAdd(doubles.points[j4]);\n        else if (nafW === -i5) b4 = b4.mixedAdd(doubles.points[j4].neg());\n      }\n      a5 = a5.add(b4);\n    }\n    return a5.toP();\n  };\n  BaseCurve.prototype._wnafMul = function _wnafMul(p5, k4) {\n    var w4 = 4;\n    var nafPoints = p5._getNAFPoints(w4);\n    w4 = nafPoints.wnd;\n    var wnd = nafPoints.points;\n    var naf = getNAF(k4, w4, this._bitLength);\n    var acc = this.jpoint(null, null, null);\n    for (var i5 = naf.length - 1; i5 >= 0; i5--) {\n      for (var l5 = 0; i5 >= 0 && naf[i5] === 0; i5--) l5++;\n      if (i5 >= 0) l5++;\n      acc = acc.dblp(l5);\n      if (i5 < 0) break;\n      var z4 = naf[i5];\n      assert2(z4 !== 0);\n      if (p5.type === \"affine\") {\n        if (z4 > 0) acc = acc.mixedAdd(wnd[z4 - 1 >> 1]);\n        else acc = acc.mixedAdd(wnd[-z4 - 1 >> 1].neg());\n      } else {\n        if (z4 > 0) acc = acc.add(wnd[z4 - 1 >> 1]);\n        else acc = acc.add(wnd[-z4 - 1 >> 1].neg());\n      }\n    }\n    return p5.type === \"affine\" ? acc.toP() : acc;\n  };\n  BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n    var wndWidth = this._wnafT1;\n    var wnd = this._wnafT2;\n    var naf = this._wnafT3;\n    var max = 0;\n    var i5;\n    var j4;\n    var p5;\n    for (i5 = 0; i5 < len; i5++) {\n      p5 = points[i5];\n      var nafPoints = p5._getNAFPoints(defW);\n      wndWidth[i5] = nafPoints.wnd;\n      wnd[i5] = nafPoints.points;\n    }\n    for (i5 = len - 1; i5 >= 1; i5 -= 2) {\n      var a5 = i5 - 1;\n      var b4 = i5;\n      if (wndWidth[a5] !== 1 || wndWidth[b4] !== 1) {\n        naf[a5] = getNAF(coeffs[a5], wndWidth[a5], this._bitLength);\n        naf[b4] = getNAF(coeffs[b4], wndWidth[b4], this._bitLength);\n        max = Math.max(naf[a5].length, max);\n        max = Math.max(naf[b4].length, max);\n        continue;\n      }\n      var comb = [\n        points[a5],\n        /* 1 */\n        null,\n        /* 3 */\n        null,\n        /* 5 */\n        points[b4]\n        /* 7 */\n      ];\n      if (points[a5].y.cmp(points[b4].y) === 0) {\n        comb[1] = points[a5].add(points[b4]);\n        comb[2] = points[a5].toJ().mixedAdd(points[b4].neg());\n      } else if (points[a5].y.cmp(points[b4].y.redNeg()) === 0) {\n        comb[1] = points[a5].toJ().mixedAdd(points[b4]);\n        comb[2] = points[a5].add(points[b4].neg());\n      } else {\n        comb[1] = points[a5].toJ().mixedAdd(points[b4]);\n        comb[2] = points[a5].toJ().mixedAdd(points[b4].neg());\n      }\n      var index = [\n        -3,\n        /* -1 -1 */\n        -1,\n        /* -1 0 */\n        -5,\n        /* -1 1 */\n        -7,\n        /* 0 -1 */\n        0,\n        /* 0 0 */\n        7,\n        /* 0 1 */\n        5,\n        /* 1 -1 */\n        1,\n        /* 1 0 */\n        3\n        /* 1 1 */\n      ];\n      var jsf = getJSF(coeffs[a5], coeffs[b4]);\n      max = Math.max(jsf[0].length, max);\n      naf[a5] = new Array(max);\n      naf[b4] = new Array(max);\n      for (j4 = 0; j4 < max; j4++) {\n        var ja = jsf[0][j4] | 0;\n        var jb = jsf[1][j4] | 0;\n        naf[a5][j4] = index[(ja + 1) * 3 + (jb + 1)];\n        naf[b4][j4] = 0;\n        wnd[a5] = comb;\n      }\n    }\n    var acc = this.jpoint(null, null, null);\n    var tmp = this._wnafT4;\n    for (i5 = max; i5 >= 0; i5--) {\n      var k4 = 0;\n      while (i5 >= 0) {\n        var zero = true;\n        for (j4 = 0; j4 < len; j4++) {\n          tmp[j4] = naf[j4][i5] | 0;\n          if (tmp[j4] !== 0) zero = false;\n        }\n        if (!zero) break;\n        k4++;\n        i5--;\n      }\n      if (i5 >= 0) k4++;\n      acc = acc.dblp(k4);\n      if (i5 < 0) break;\n      for (j4 = 0; j4 < len; j4++) {\n        var z4 = tmp[j4];\n        if (z4 === 0) continue;\n        else if (z4 > 0) p5 = wnd[j4][z4 - 1 >> 1];\n        else if (z4 < 0) p5 = wnd[j4][-z4 - 1 >> 1].neg();\n        if (p5.type === \"affine\") acc = acc.mixedAdd(p5);\n        else acc = acc.add(p5);\n      }\n    }\n    for (i5 = 0; i5 < len; i5++) wnd[i5] = null;\n    if (jacobianResult) return acc;\n    else return acc.toP();\n  };\n  function BasePoint(curve, type) {\n    this.curve = curve;\n    this.type = type;\n    this.precomputed = null;\n  }\n  BaseCurve.BasePoint = BasePoint;\n  BasePoint.prototype.eq = function eq() {\n    throw new Error(\"Not implemented\");\n  };\n  BasePoint.prototype.validate = function validate() {\n    return this.curve.validate(this);\n  };\n  BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n    bytes = utils.toArray(bytes, enc);\n    var len = this.p.byteLength();\n    if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) {\n      if (bytes[0] === 6) assert2(bytes[bytes.length - 1] % 2 === 0);\n      else if (bytes[0] === 7) assert2(bytes[bytes.length - 1] % 2 === 1);\n      var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n      return res;\n    } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) {\n      return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3);\n    }\n    throw new Error(\"Unknown point format\");\n  };\n  BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n    return this.encode(enc, true);\n  };\n  BasePoint.prototype._encode = function _encode(compact) {\n    var len = this.curve.p.byteLength();\n    var x4 = this.getX().toArray(\"be\", len);\n    if (compact) return [this.getY().isEven() ? 2 : 3].concat(x4);\n    return [4].concat(x4, this.getY().toArray(\"be\", len));\n  };\n  BasePoint.prototype.encode = function encode(enc, compact) {\n    return utils.encode(this._encode(compact), enc);\n  };\n  BasePoint.prototype.precompute = function precompute(power) {\n    if (this.precomputed) return this;\n    var precomputed = {\n      doubles: null,\n      naf: null,\n      beta: null\n    };\n    precomputed.naf = this._getNAFPoints(8);\n    precomputed.doubles = this._getDoubles(4, power);\n    precomputed.beta = this._getBeta();\n    this.precomputed = precomputed;\n    return this;\n  };\n  BasePoint.prototype._hasDoubles = function _hasDoubles(k4) {\n    if (!this.precomputed) return false;\n    var doubles = this.precomputed.doubles;\n    if (!doubles) return false;\n    return doubles.points.length >= Math.ceil((k4.bitLength() + 1) / doubles.step);\n  };\n  BasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n    if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n    var doubles = [this];\n    var acc = this;\n    for (var i5 = 0; i5 < power; i5 += step) {\n      for (var j4 = 0; j4 < step; j4++) acc = acc.dbl();\n      doubles.push(acc);\n    }\n    return {\n      step,\n      points: doubles\n    };\n  };\n  BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n    if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n    var res = [this];\n    var max = (1 << wnd) - 1;\n    var dbl = max === 1 ? null : this.dbl();\n    for (var i5 = 1; i5 < max; i5++) res[i5] = res[i5 - 1].add(dbl);\n    return {\n      wnd,\n      points: res\n    };\n  };\n  BasePoint.prototype._getBeta = function _getBeta() {\n    return null;\n  };\n  BasePoint.prototype.dblp = function dblp(k4) {\n    var r5 = this;\n    for (var i5 = 0; i5 < k4; i5++) r5 = r5.dbl();\n    return r5;\n  };\n  return exports$Y;\n}\nvar exports$X = {};\nvar _dewExec$W = false;\nfunction dew$W() {\n  if (_dewExec$W) return exports$X;\n  _dewExec$W = true;\n  var utils = dew$Y();\n  var BN = dew$_();\n  var inherits = dew3();\n  var Base = dew$X();\n  var assert2 = utils.assert;\n  function ShortCurve(conf) {\n    Base.call(this, \"short\", conf);\n    this.a = new BN(conf.a, 16).toRed(this.red);\n    this.b = new BN(conf.b, 16).toRed(this.red);\n    this.tinv = this.two.redInvm();\n    this.zeroA = this.a.fromRed().cmpn(0) === 0;\n    this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n    this.endo = this._getEndomorphism(conf);\n    this._endoWnafT1 = new Array(4);\n    this._endoWnafT2 = new Array(4);\n  }\n  inherits(ShortCurve, Base);\n  exports$X = ShortCurve;\n  ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n    if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return;\n    var beta;\n    var lambda;\n    if (conf.beta) {\n      beta = new BN(conf.beta, 16).toRed(this.red);\n    } else {\n      var betas = this._getEndoRoots(this.p);\n      beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n      beta = beta.toRed(this.red);\n    }\n    if (conf.lambda) {\n      lambda = new BN(conf.lambda, 16);\n    } else {\n      var lambdas = this._getEndoRoots(this.n);\n      if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n        lambda = lambdas[0];\n      } else {\n        lambda = lambdas[1];\n        assert2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n      }\n    }\n    var basis;\n    if (conf.basis) {\n      basis = conf.basis.map(function(vec) {\n        return {\n          a: new BN(vec.a, 16),\n          b: new BN(vec.b, 16)\n        };\n      });\n    } else {\n      basis = this._getEndoBasis(lambda);\n    }\n    return {\n      beta,\n      lambda,\n      basis\n    };\n  };\n  ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n    var red = num === this.p ? this.red : BN.mont(num);\n    var tinv = new BN(2).toRed(red).redInvm();\n    var ntinv = tinv.redNeg();\n    var s5 = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n    var l1 = ntinv.redAdd(s5).fromRed();\n    var l22 = ntinv.redSub(s5).fromRed();\n    return [l1, l22];\n  };\n  ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n    var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n    var u5 = lambda;\n    var v5 = this.n.clone();\n    var x1 = new BN(1);\n    var y1 = new BN(0);\n    var x22 = new BN(0);\n    var y22 = new BN(1);\n    var a0;\n    var b0;\n    var a1;\n    var b1;\n    var a22;\n    var b22;\n    var prevR;\n    var i5 = 0;\n    var r5;\n    var x4;\n    while (u5.cmpn(0) !== 0) {\n      var q3 = v5.div(u5);\n      r5 = v5.sub(q3.mul(u5));\n      x4 = x22.sub(q3.mul(x1));\n      var y5 = y22.sub(q3.mul(y1));\n      if (!a1 && r5.cmp(aprxSqrt) < 0) {\n        a0 = prevR.neg();\n        b0 = x1;\n        a1 = r5.neg();\n        b1 = x4;\n      } else if (a1 && ++i5 === 2) {\n        break;\n      }\n      prevR = r5;\n      v5 = u5;\n      u5 = r5;\n      x22 = x1;\n      x1 = x4;\n      y22 = y1;\n      y1 = y5;\n    }\n    a22 = r5.neg();\n    b22 = x4;\n    var len1 = a1.sqr().add(b1.sqr());\n    var len2 = a22.sqr().add(b22.sqr());\n    if (len2.cmp(len1) >= 0) {\n      a22 = a0;\n      b22 = b0;\n    }\n    if (a1.negative) {\n      a1 = a1.neg();\n      b1 = b1.neg();\n    }\n    if (a22.negative) {\n      a22 = a22.neg();\n      b22 = b22.neg();\n    }\n    return [{\n      a: a1,\n      b: b1\n    }, {\n      a: a22,\n      b: b22\n    }];\n  };\n  ShortCurve.prototype._endoSplit = function _endoSplit(k4) {\n    var basis = this.endo.basis;\n    var v1 = basis[0];\n    var v22 = basis[1];\n    var c1 = v22.b.mul(k4).divRound(this.n);\n    var c22 = v1.b.neg().mul(k4).divRound(this.n);\n    var p1 = c1.mul(v1.a);\n    var p22 = c22.mul(v22.a);\n    var q1 = c1.mul(v1.b);\n    var q22 = c22.mul(v22.b);\n    var k1 = k4.sub(p1).sub(p22);\n    var k22 = q1.add(q22).neg();\n    return {\n      k1,\n      k2: k22\n    };\n  };\n  ShortCurve.prototype.pointFromX = function pointFromX(x4, odd) {\n    x4 = new BN(x4, 16);\n    if (!x4.red) x4 = x4.toRed(this.red);\n    var y22 = x4.redSqr().redMul(x4).redIAdd(x4.redMul(this.a)).redIAdd(this.b);\n    var y5 = y22.redSqrt();\n    if (y5.redSqr().redSub(y22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    var isOdd = y5.fromRed().isOdd();\n    if (odd && !isOdd || !odd && isOdd) y5 = y5.redNeg();\n    return this.point(x4, y5);\n  };\n  ShortCurve.prototype.validate = function validate(point) {\n    if (point.inf) return true;\n    var x4 = point.x;\n    var y5 = point.y;\n    var ax = this.a.redMul(x4);\n    var rhs = x4.redSqr().redMul(x4).redIAdd(ax).redIAdd(this.b);\n    return y5.redSqr().redISub(rhs).cmpn(0) === 0;\n  };\n  ShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n    var npoints = this._endoWnafT1;\n    var ncoeffs = this._endoWnafT2;\n    for (var i5 = 0; i5 < points.length; i5++) {\n      var split = this._endoSplit(coeffs[i5]);\n      var p5 = points[i5];\n      var beta = p5._getBeta();\n      if (split.k1.negative) {\n        split.k1.ineg();\n        p5 = p5.neg(true);\n      }\n      if (split.k2.negative) {\n        split.k2.ineg();\n        beta = beta.neg(true);\n      }\n      npoints[i5 * 2] = p5;\n      npoints[i5 * 2 + 1] = beta;\n      ncoeffs[i5 * 2] = split.k1;\n      ncoeffs[i5 * 2 + 1] = split.k2;\n    }\n    var res = this._wnafMulAdd(1, npoints, ncoeffs, i5 * 2, jacobianResult);\n    for (var j4 = 0; j4 < i5 * 2; j4++) {\n      npoints[j4] = null;\n      ncoeffs[j4] = null;\n    }\n    return res;\n  };\n  function Point(curve, x4, y5, isRed) {\n    Base.BasePoint.call(this, curve, \"affine\");\n    if (x4 === null && y5 === null) {\n      this.x = null;\n      this.y = null;\n      this.inf = true;\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      if (isRed) {\n        this.x.forceRed(this.curve.red);\n        this.y.forceRed(this.curve.red);\n      }\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n      this.inf = false;\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  ShortCurve.prototype.point = function point(x4, y5, isRed) {\n    return new Point(this, x4, y5, isRed);\n  };\n  ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n    return Point.fromJSON(this, obj, red);\n  };\n  Point.prototype._getBeta = function _getBeta() {\n    if (!this.curve.endo) return;\n    var pre = this.precomputed;\n    if (pre && pre.beta) return pre.beta;\n    var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n    if (pre) {\n      var curve = this.curve;\n      var endoMul = function(p5) {\n        return curve.point(p5.x.redMul(curve.endo.beta), p5.y);\n      };\n      pre.beta = beta;\n      beta.precomputed = {\n        beta: null,\n        naf: pre.naf && {\n          wnd: pre.naf.wnd,\n          points: pre.naf.points.map(endoMul)\n        },\n        doubles: pre.doubles && {\n          step: pre.doubles.step,\n          points: pre.doubles.points.map(endoMul)\n        }\n      };\n    }\n    return beta;\n  };\n  Point.prototype.toJSON = function toJSON() {\n    if (!this.precomputed) return [this.x, this.y];\n    return [this.x, this.y, this.precomputed && {\n      doubles: this.precomputed.doubles && {\n        step: this.precomputed.doubles.step,\n        points: this.precomputed.doubles.points.slice(1)\n      },\n      naf: this.precomputed.naf && {\n        wnd: this.precomputed.naf.wnd,\n        points: this.precomputed.naf.points.slice(1)\n      }\n    }];\n  };\n  Point.fromJSON = function fromJSON(curve, obj, red) {\n    if (typeof obj === \"string\") obj = JSON.parse(obj);\n    var res = curve.point(obj[0], obj[1], red);\n    if (!obj[2]) return res;\n    function obj2point(obj2) {\n      return curve.point(obj2[0], obj2[1], red);\n    }\n    var pre = obj[2];\n    res.precomputed = {\n      beta: null,\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: [res].concat(pre.doubles.points.map(obj2point))\n      },\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: [res].concat(pre.naf.points.map(obj2point))\n      }\n    };\n    return res;\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.inf;\n  };\n  Point.prototype.add = function add(p5) {\n    if (this.inf) return p5;\n    if (p5.inf) return this;\n    if (this.eq(p5)) return this.dbl();\n    if (this.neg().eq(p5)) return this.curve.point(null, null);\n    if (this.x.cmp(p5.x) === 0) return this.curve.point(null, null);\n    var c5 = this.y.redSub(p5.y);\n    if (c5.cmpn(0) !== 0) c5 = c5.redMul(this.x.redSub(p5.x).redInvm());\n    var nx = c5.redSqr().redISub(this.x).redISub(p5.x);\n    var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n    return this.curve.point(nx, ny);\n  };\n  Point.prototype.dbl = function dbl() {\n    if (this.inf) return this;\n    var ys1 = this.y.redAdd(this.y);\n    if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n    var a5 = this.curve.a;\n    var x22 = this.x.redSqr();\n    var dyinv = ys1.redInvm();\n    var c5 = x22.redAdd(x22).redIAdd(x22).redIAdd(a5).redMul(dyinv);\n    var nx = c5.redSqr().redISub(this.x.redAdd(this.x));\n    var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n    return this.curve.point(nx, ny);\n  };\n  Point.prototype.getX = function getX() {\n    return this.x.fromRed();\n  };\n  Point.prototype.getY = function getY() {\n    return this.y.fromRed();\n  };\n  Point.prototype.mul = function mul(k4) {\n    k4 = new BN(k4, 16);\n    if (this.isInfinity()) return this;\n    else if (this._hasDoubles(k4)) return this.curve._fixedNafMul(this, k4);\n    else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k4]);\n    else return this.curve._wnafMul(this, k4);\n  };\n  Point.prototype.mulAdd = function mulAdd(k1, p22, k22) {\n    var points = [this, p22];\n    var coeffs = [k1, k22];\n    if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);\n    else return this.curve._wnafMulAdd(1, points, coeffs, 2);\n  };\n  Point.prototype.jmulAdd = function jmulAdd(k1, p22, k22) {\n    var points = [this, p22];\n    var coeffs = [k1, k22];\n    if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);\n    else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n  };\n  Point.prototype.eq = function eq(p5) {\n    return this === p5 || this.inf === p5.inf && (this.inf || this.x.cmp(p5.x) === 0 && this.y.cmp(p5.y) === 0);\n  };\n  Point.prototype.neg = function neg(_precompute) {\n    if (this.inf) return this;\n    var res = this.curve.point(this.x, this.y.redNeg());\n    if (_precompute && this.precomputed) {\n      var pre = this.precomputed;\n      var negate = function(p5) {\n        return p5.neg();\n      };\n      res.precomputed = {\n        naf: pre.naf && {\n          wnd: pre.naf.wnd,\n          points: pre.naf.points.map(negate)\n        },\n        doubles: pre.doubles && {\n          step: pre.doubles.step,\n          points: pre.doubles.points.map(negate)\n        }\n      };\n    }\n    return res;\n  };\n  Point.prototype.toJ = function toJ() {\n    if (this.inf) return this.curve.jpoint(null, null, null);\n    var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n    return res;\n  };\n  function JPoint(curve, x4, y5, z4) {\n    Base.BasePoint.call(this, curve, \"jacobian\");\n    if (x4 === null && y5 === null && z4 === null) {\n      this.x = this.curve.one;\n      this.y = this.curve.one;\n      this.z = new BN(0);\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      this.z = new BN(z4, 16);\n    }\n    if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n    if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n    this.zOne = this.z === this.curve.one;\n  }\n  inherits(JPoint, Base.BasePoint);\n  ShortCurve.prototype.jpoint = function jpoint(x4, y5, z4) {\n    return new JPoint(this, x4, y5, z4);\n  };\n  JPoint.prototype.toP = function toP() {\n    if (this.isInfinity()) return this.curve.point(null, null);\n    var zinv = this.z.redInvm();\n    var zinv2 = zinv.redSqr();\n    var ax = this.x.redMul(zinv2);\n    var ay = this.y.redMul(zinv2).redMul(zinv);\n    return this.curve.point(ax, ay);\n  };\n  JPoint.prototype.neg = function neg() {\n    return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n  };\n  JPoint.prototype.add = function add(p5) {\n    if (this.isInfinity()) return p5;\n    if (p5.isInfinity()) return this;\n    var pz2 = p5.z.redSqr();\n    var z22 = this.z.redSqr();\n    var u1 = this.x.redMul(pz2);\n    var u22 = p5.x.redMul(z22);\n    var s1 = this.y.redMul(pz2.redMul(p5.z));\n    var s22 = p5.y.redMul(z22.redMul(this.z));\n    var h5 = u1.redSub(u22);\n    var r5 = s1.redSub(s22);\n    if (h5.cmpn(0) === 0) {\n      if (r5.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);\n      else return this.dbl();\n    }\n    var h22 = h5.redSqr();\n    var h32 = h22.redMul(h5);\n    var v5 = u1.redMul(h22);\n    var nx = r5.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n    var ny = r5.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n    var nz = this.z.redMul(p5.z).redMul(h5);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.mixedAdd = function mixedAdd(p5) {\n    if (this.isInfinity()) return p5.toJ();\n    if (p5.isInfinity()) return this;\n    var z22 = this.z.redSqr();\n    var u1 = this.x;\n    var u22 = p5.x.redMul(z22);\n    var s1 = this.y;\n    var s22 = p5.y.redMul(z22).redMul(this.z);\n    var h5 = u1.redSub(u22);\n    var r5 = s1.redSub(s22);\n    if (h5.cmpn(0) === 0) {\n      if (r5.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);\n      else return this.dbl();\n    }\n    var h22 = h5.redSqr();\n    var h32 = h22.redMul(h5);\n    var v5 = u1.redMul(h22);\n    var nx = r5.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n    var ny = r5.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n    var nz = this.z.redMul(h5);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.dblp = function dblp(pow) {\n    if (pow === 0) return this;\n    if (this.isInfinity()) return this;\n    if (!pow) return this.dbl();\n    var i5;\n    if (this.curve.zeroA || this.curve.threeA) {\n      var r5 = this;\n      for (i5 = 0; i5 < pow; i5++) r5 = r5.dbl();\n      return r5;\n    }\n    var a5 = this.curve.a;\n    var tinv = this.curve.tinv;\n    var jx = this.x;\n    var jy = this.y;\n    var jz = this.z;\n    var jz4 = jz.redSqr().redSqr();\n    var jyd = jy.redAdd(jy);\n    for (i5 = 0; i5 < pow; i5++) {\n      var jx2 = jx.redSqr();\n      var jyd2 = jyd.redSqr();\n      var jyd4 = jyd2.redSqr();\n      var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a5.redMul(jz4));\n      var t1 = jx.redMul(jyd2);\n      var nx = c5.redSqr().redISub(t1.redAdd(t1));\n      var t22 = t1.redISub(nx);\n      var dny = c5.redMul(t22);\n      dny = dny.redIAdd(dny).redISub(jyd4);\n      var nz = jyd.redMul(jz);\n      if (i5 + 1 < pow) jz4 = jz4.redMul(jyd4);\n      jx = nx;\n      jz = nz;\n      jyd = dny;\n    }\n    return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n  };\n  JPoint.prototype.dbl = function dbl() {\n    if (this.isInfinity()) return this;\n    if (this.curve.zeroA) return this._zeroDbl();\n    else if (this.curve.threeA) return this._threeDbl();\n    else return this._dbl();\n  };\n  JPoint.prototype._zeroDbl = function _zeroDbl() {\n    var nx;\n    var ny;\n    var nz;\n    if (this.zOne) {\n      var xx = this.x.redSqr();\n      var yy = this.y.redSqr();\n      var yyyy = yy.redSqr();\n      var s5 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n      s5 = s5.redIAdd(s5);\n      var m4 = xx.redAdd(xx).redIAdd(xx);\n      var t5 = m4.redSqr().redISub(s5).redISub(s5);\n      var yyyy8 = yyyy.redIAdd(yyyy);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      nx = t5;\n      ny = m4.redMul(s5.redISub(t5)).redISub(yyyy8);\n      nz = this.y.redAdd(this.y);\n    } else {\n      var a5 = this.x.redSqr();\n      var b4 = this.y.redSqr();\n      var c5 = b4.redSqr();\n      var d4 = this.x.redAdd(b4).redSqr().redISub(a5).redISub(c5);\n      d4 = d4.redIAdd(d4);\n      var e7 = a5.redAdd(a5).redIAdd(a5);\n      var f6 = e7.redSqr();\n      var c8 = c5.redIAdd(c5);\n      c8 = c8.redIAdd(c8);\n      c8 = c8.redIAdd(c8);\n      nx = f6.redISub(d4).redISub(d4);\n      ny = e7.redMul(d4.redISub(nx)).redISub(c8);\n      nz = this.y.redMul(this.z);\n      nz = nz.redIAdd(nz);\n    }\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype._threeDbl = function _threeDbl() {\n    var nx;\n    var ny;\n    var nz;\n    if (this.zOne) {\n      var xx = this.x.redSqr();\n      var yy = this.y.redSqr();\n      var yyyy = yy.redSqr();\n      var s5 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n      s5 = s5.redIAdd(s5);\n      var m4 = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n      var t5 = m4.redSqr().redISub(s5).redISub(s5);\n      nx = t5;\n      var yyyy8 = yyyy.redIAdd(yyyy);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      yyyy8 = yyyy8.redIAdd(yyyy8);\n      ny = m4.redMul(s5.redISub(t5)).redISub(yyyy8);\n      nz = this.y.redAdd(this.y);\n    } else {\n      var delta = this.z.redSqr();\n      var gamma = this.y.redSqr();\n      var beta = this.x.redMul(gamma);\n      var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n      alpha = alpha.redAdd(alpha).redIAdd(alpha);\n      var beta4 = beta.redIAdd(beta);\n      beta4 = beta4.redIAdd(beta4);\n      var beta8 = beta4.redAdd(beta4);\n      nx = alpha.redSqr().redISub(beta8);\n      nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n      var ggamma8 = gamma.redSqr();\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ggamma8 = ggamma8.redIAdd(ggamma8);\n      ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n    }\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype._dbl = function _dbl() {\n    var a5 = this.curve.a;\n    var jx = this.x;\n    var jy = this.y;\n    var jz = this.z;\n    var jz4 = jz.redSqr().redSqr();\n    var jx2 = jx.redSqr();\n    var jy2 = jy.redSqr();\n    var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a5.redMul(jz4));\n    var jxd4 = jx.redAdd(jx);\n    jxd4 = jxd4.redIAdd(jxd4);\n    var t1 = jxd4.redMul(jy2);\n    var nx = c5.redSqr().redISub(t1.redAdd(t1));\n    var t22 = t1.redISub(nx);\n    var jyd8 = jy2.redSqr();\n    jyd8 = jyd8.redIAdd(jyd8);\n    jyd8 = jyd8.redIAdd(jyd8);\n    jyd8 = jyd8.redIAdd(jyd8);\n    var ny = c5.redMul(t22).redISub(jyd8);\n    var nz = jy.redAdd(jy).redMul(jz);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.trpl = function trpl() {\n    if (!this.curve.zeroA) return this.dbl().add(this);\n    var xx = this.x.redSqr();\n    var yy = this.y.redSqr();\n    var zz = this.z.redSqr();\n    var yyyy = yy.redSqr();\n    var m4 = xx.redAdd(xx).redIAdd(xx);\n    var mm = m4.redSqr();\n    var e7 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    e7 = e7.redIAdd(e7);\n    e7 = e7.redAdd(e7).redIAdd(e7);\n    e7 = e7.redISub(mm);\n    var ee3 = e7.redSqr();\n    var t5 = yyyy.redIAdd(yyyy);\n    t5 = t5.redIAdd(t5);\n    t5 = t5.redIAdd(t5);\n    t5 = t5.redIAdd(t5);\n    var u5 = m4.redIAdd(e7).redSqr().redISub(mm).redISub(ee3).redISub(t5);\n    var yyu4 = yy.redMul(u5);\n    yyu4 = yyu4.redIAdd(yyu4);\n    yyu4 = yyu4.redIAdd(yyu4);\n    var nx = this.x.redMul(ee3).redISub(yyu4);\n    nx = nx.redIAdd(nx);\n    nx = nx.redIAdd(nx);\n    var ny = this.y.redMul(u5.redMul(t5.redISub(u5)).redISub(e7.redMul(ee3)));\n    ny = ny.redIAdd(ny);\n    ny = ny.redIAdd(ny);\n    ny = ny.redIAdd(ny);\n    var nz = this.z.redAdd(e7).redSqr().redISub(zz).redISub(ee3);\n    return this.curve.jpoint(nx, ny, nz);\n  };\n  JPoint.prototype.mul = function mul(k4, kbase) {\n    k4 = new BN(k4, kbase);\n    return this.curve._wnafMul(this, k4);\n  };\n  JPoint.prototype.eq = function eq(p5) {\n    if (p5.type === \"affine\") return this.eq(p5.toJ());\n    if (this === p5) return true;\n    var z22 = this.z.redSqr();\n    var pz2 = p5.z.redSqr();\n    if (this.x.redMul(pz2).redISub(p5.x.redMul(z22)).cmpn(0) !== 0) return false;\n    var z32 = z22.redMul(this.z);\n    var pz3 = pz2.redMul(p5.z);\n    return this.y.redMul(pz3).redISub(p5.y.redMul(z32)).cmpn(0) === 0;\n  };\n  JPoint.prototype.eqXToP = function eqXToP(x4) {\n    var zs = this.z.redSqr();\n    var rx = x4.toRed(this.curve.red).redMul(zs);\n    if (this.x.cmp(rx) === 0) return true;\n    var xc = x4.clone();\n    var t5 = this.curve.redN.redMul(zs);\n    for (; ; ) {\n      xc.iadd(this.curve.n);\n      if (xc.cmp(this.curve.p) >= 0) return false;\n      rx.redIAdd(t5);\n      if (this.x.cmp(rx) === 0) return true;\n    }\n  };\n  JPoint.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC JPoint Infinity>\";\n    return \"<EC JPoint x: \" + this.x.toString(16, 2) + \" y: \" + this.y.toString(16, 2) + \" z: \" + this.z.toString(16, 2) + \">\";\n  };\n  JPoint.prototype.isInfinity = function isInfinity() {\n    return this.z.cmpn(0) === 0;\n  };\n  return exports$X;\n}\nvar exports$W = {};\nvar _dewExec$V = false;\nfunction dew$V() {\n  if (_dewExec$V) return exports$W;\n  _dewExec$V = true;\n  var BN = dew$_();\n  var inherits = dew3();\n  var Base = dew$X();\n  var utils = dew$Y();\n  function MontCurve(conf) {\n    Base.call(this, \"mont\", conf);\n    this.a = new BN(conf.a, 16).toRed(this.red);\n    this.b = new BN(conf.b, 16).toRed(this.red);\n    this.i4 = new BN(4).toRed(this.red).redInvm();\n    this.two = new BN(2).toRed(this.red);\n    this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n  }\n  inherits(MontCurve, Base);\n  exports$W = MontCurve;\n  MontCurve.prototype.validate = function validate(point) {\n    var x4 = point.normalize().x;\n    var x22 = x4.redSqr();\n    var rhs = x22.redMul(x4).redAdd(x22.redMul(this.a)).redAdd(x4);\n    var y5 = rhs.redSqrt();\n    return y5.redSqr().cmp(rhs) === 0;\n  };\n  function Point(curve, x4, z4) {\n    Base.BasePoint.call(this, curve, \"projective\");\n    if (x4 === null && z4 === null) {\n      this.x = this.curve.one;\n      this.z = this.curve.zero;\n    } else {\n      this.x = new BN(x4, 16);\n      this.z = new BN(z4, 16);\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n    return this.point(utils.toArray(bytes, enc), 1);\n  };\n  MontCurve.prototype.point = function point(x4, z4) {\n    return new Point(this, x4, z4);\n  };\n  MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n    return Point.fromJSON(this, obj);\n  };\n  Point.prototype.precompute = function precompute() {\n  };\n  Point.prototype._encode = function _encode() {\n    return this.getX().toArray(\"be\", this.curve.p.byteLength());\n  };\n  Point.fromJSON = function fromJSON(curve, obj) {\n    return new Point(curve, obj[0], obj[1] || curve.one);\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.z.cmpn(0) === 0;\n  };\n  Point.prototype.dbl = function dbl() {\n    var a5 = this.x.redAdd(this.z);\n    var aa = a5.redSqr();\n    var b4 = this.x.redSub(this.z);\n    var bb = b4.redSqr();\n    var c5 = aa.redSub(bb);\n    var nx = aa.redMul(bb);\n    var nz = c5.redMul(bb.redAdd(this.curve.a24.redMul(c5)));\n    return this.curve.point(nx, nz);\n  };\n  Point.prototype.add = function add() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.diffAdd = function diffAdd(p5, diff) {\n    var a5 = this.x.redAdd(this.z);\n    var b4 = this.x.redSub(this.z);\n    var c5 = p5.x.redAdd(p5.z);\n    var d4 = p5.x.redSub(p5.z);\n    var da = d4.redMul(a5);\n    var cb = c5.redMul(b4);\n    var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n    var nz = diff.x.redMul(da.redISub(cb).redSqr());\n    return this.curve.point(nx, nz);\n  };\n  Point.prototype.mul = function mul(k4) {\n    var t5 = k4.clone();\n    var a5 = this;\n    var b4 = this.curve.point(null, null);\n    var c5 = this;\n    for (var bits = []; t5.cmpn(0) !== 0; t5.iushrn(1)) bits.push(t5.andln(1));\n    for (var i5 = bits.length - 1; i5 >= 0; i5--) {\n      if (bits[i5] === 0) {\n        a5 = a5.diffAdd(b4, c5);\n        b4 = b4.dbl();\n      } else {\n        b4 = a5.diffAdd(b4, c5);\n        a5 = a5.dbl();\n      }\n    }\n    return b4;\n  };\n  Point.prototype.mulAdd = function mulAdd() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.jumlAdd = function jumlAdd() {\n    throw new Error(\"Not supported on Montgomery curve\");\n  };\n  Point.prototype.eq = function eq(other) {\n    return this.getX().cmp(other.getX()) === 0;\n  };\n  Point.prototype.normalize = function normalize() {\n    this.x = this.x.redMul(this.z.redInvm());\n    this.z = this.curve.one;\n    return this;\n  };\n  Point.prototype.getX = function getX() {\n    this.normalize();\n    return this.x.fromRed();\n  };\n  return exports$W;\n}\nvar exports$V = {};\nvar _dewExec$U = false;\nfunction dew$U() {\n  if (_dewExec$U) return exports$V;\n  _dewExec$U = true;\n  var utils = dew$Y();\n  var BN = dew$_();\n  var inherits = dew3();\n  var Base = dew$X();\n  var assert2 = utils.assert;\n  function EdwardsCurve(conf) {\n    this.twisted = (conf.a | 0) !== 1;\n    this.mOneA = this.twisted && (conf.a | 0) === -1;\n    this.extended = this.mOneA;\n    Base.call(this, \"edwards\", conf);\n    this.a = new BN(conf.a, 16).umod(this.red.m);\n    this.a = this.a.toRed(this.red);\n    this.c = new BN(conf.c, 16).toRed(this.red);\n    this.c2 = this.c.redSqr();\n    this.d = new BN(conf.d, 16).toRed(this.red);\n    this.dd = this.d.redAdd(this.d);\n    assert2(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n    this.oneC = (conf.c | 0) === 1;\n  }\n  inherits(EdwardsCurve, Base);\n  exports$V = EdwardsCurve;\n  EdwardsCurve.prototype._mulA = function _mulA(num) {\n    if (this.mOneA) return num.redNeg();\n    else return this.a.redMul(num);\n  };\n  EdwardsCurve.prototype._mulC = function _mulC(num) {\n    if (this.oneC) return num;\n    else return this.c.redMul(num);\n  };\n  EdwardsCurve.prototype.jpoint = function jpoint(x4, y5, z4, t5) {\n    return this.point(x4, y5, z4, t5);\n  };\n  EdwardsCurve.prototype.pointFromX = function pointFromX(x4, odd) {\n    x4 = new BN(x4, 16);\n    if (!x4.red) x4 = x4.toRed(this.red);\n    var x22 = x4.redSqr();\n    var rhs = this.c2.redSub(this.a.redMul(x22));\n    var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x22));\n    var y22 = rhs.redMul(lhs.redInvm());\n    var y5 = y22.redSqrt();\n    if (y5.redSqr().redSub(y22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    var isOdd = y5.fromRed().isOdd();\n    if (odd && !isOdd || !odd && isOdd) y5 = y5.redNeg();\n    return this.point(x4, y5);\n  };\n  EdwardsCurve.prototype.pointFromY = function pointFromY(y5, odd) {\n    y5 = new BN(y5, 16);\n    if (!y5.red) y5 = y5.toRed(this.red);\n    var y22 = y5.redSqr();\n    var lhs = y22.redSub(this.c2);\n    var rhs = y22.redMul(this.d).redMul(this.c2).redSub(this.a);\n    var x22 = lhs.redMul(rhs.redInvm());\n    if (x22.cmp(this.zero) === 0) {\n      if (odd) throw new Error(\"invalid point\");\n      else return this.point(this.zero, y5);\n    }\n    var x4 = x22.redSqrt();\n    if (x4.redSqr().redSub(x22).cmp(this.zero) !== 0) throw new Error(\"invalid point\");\n    if (x4.fromRed().isOdd() !== odd) x4 = x4.redNeg();\n    return this.point(x4, y5);\n  };\n  EdwardsCurve.prototype.validate = function validate(point) {\n    if (point.isInfinity()) return true;\n    point.normalize();\n    var x22 = point.x.redSqr();\n    var y22 = point.y.redSqr();\n    var lhs = x22.redMul(this.a).redAdd(y22);\n    var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x22).redMul(y22)));\n    return lhs.cmp(rhs) === 0;\n  };\n  function Point(curve, x4, y5, z4, t5) {\n    Base.BasePoint.call(this, curve, \"projective\");\n    if (x4 === null && y5 === null && z4 === null) {\n      this.x = this.curve.zero;\n      this.y = this.curve.one;\n      this.z = this.curve.one;\n      this.t = this.curve.zero;\n      this.zOne = true;\n    } else {\n      this.x = new BN(x4, 16);\n      this.y = new BN(y5, 16);\n      this.z = z4 ? new BN(z4, 16) : this.curve.one;\n      this.t = t5 && new BN(t5, 16);\n      if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n      if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n      if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n      if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n      this.zOne = this.z === this.curve.one;\n      if (this.curve.extended && !this.t) {\n        this.t = this.x.redMul(this.y);\n        if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n      }\n    }\n  }\n  inherits(Point, Base.BasePoint);\n  EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n    return Point.fromJSON(this, obj);\n  };\n  EdwardsCurve.prototype.point = function point(x4, y5, z4, t5) {\n    return new Point(this, x4, y5, z4, t5);\n  };\n  Point.fromJSON = function fromJSON(curve, obj) {\n    return new Point(curve, obj[0], obj[1], obj[2]);\n  };\n  Point.prototype.inspect = function inspect() {\n    if (this.isInfinity()) return \"<EC Point Infinity>\";\n    return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n  };\n  Point.prototype.isInfinity = function isInfinity() {\n    return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n  };\n  Point.prototype._extDbl = function _extDbl() {\n    var a5 = this.x.redSqr();\n    var b4 = this.y.redSqr();\n    var c5 = this.z.redSqr();\n    c5 = c5.redIAdd(c5);\n    var d4 = this.curve._mulA(a5);\n    var e7 = this.x.redAdd(this.y).redSqr().redISub(a5).redISub(b4);\n    var g4 = d4.redAdd(b4);\n    var f6 = g4.redSub(c5);\n    var h5 = d4.redSub(b4);\n    var nx = e7.redMul(f6);\n    var ny = g4.redMul(h5);\n    var nt2 = e7.redMul(h5);\n    var nz = f6.redMul(g4);\n    return this.curve.point(nx, ny, nz, nt2);\n  };\n  Point.prototype._projDbl = function _projDbl() {\n    var b4 = this.x.redAdd(this.y).redSqr();\n    var c5 = this.x.redSqr();\n    var d4 = this.y.redSqr();\n    var nx;\n    var ny;\n    var nz;\n    var e7;\n    var h5;\n    var j4;\n    if (this.curve.twisted) {\n      e7 = this.curve._mulA(c5);\n      var f6 = e7.redAdd(d4);\n      if (this.zOne) {\n        nx = b4.redSub(c5).redSub(d4).redMul(f6.redSub(this.curve.two));\n        ny = f6.redMul(e7.redSub(d4));\n        nz = f6.redSqr().redSub(f6).redSub(f6);\n      } else {\n        h5 = this.z.redSqr();\n        j4 = f6.redSub(h5).redISub(h5);\n        nx = b4.redSub(c5).redISub(d4).redMul(j4);\n        ny = f6.redMul(e7.redSub(d4));\n        nz = f6.redMul(j4);\n      }\n    } else {\n      e7 = c5.redAdd(d4);\n      h5 = this.curve._mulC(this.z).redSqr();\n      j4 = e7.redSub(h5).redSub(h5);\n      nx = this.curve._mulC(b4.redISub(e7)).redMul(j4);\n      ny = this.curve._mulC(e7).redMul(c5.redISub(d4));\n      nz = e7.redMul(j4);\n    }\n    return this.curve.point(nx, ny, nz);\n  };\n  Point.prototype.dbl = function dbl() {\n    if (this.isInfinity()) return this;\n    if (this.curve.extended) return this._extDbl();\n    else return this._projDbl();\n  };\n  Point.prototype._extAdd = function _extAdd(p5) {\n    var a5 = this.y.redSub(this.x).redMul(p5.y.redSub(p5.x));\n    var b4 = this.y.redAdd(this.x).redMul(p5.y.redAdd(p5.x));\n    var c5 = this.t.redMul(this.curve.dd).redMul(p5.t);\n    var d4 = this.z.redMul(p5.z.redAdd(p5.z));\n    var e7 = b4.redSub(a5);\n    var f6 = d4.redSub(c5);\n    var g4 = d4.redAdd(c5);\n    var h5 = b4.redAdd(a5);\n    var nx = e7.redMul(f6);\n    var ny = g4.redMul(h5);\n    var nt2 = e7.redMul(h5);\n    var nz = f6.redMul(g4);\n    return this.curve.point(nx, ny, nz, nt2);\n  };\n  Point.prototype._projAdd = function _projAdd(p5) {\n    var a5 = this.z.redMul(p5.z);\n    var b4 = a5.redSqr();\n    var c5 = this.x.redMul(p5.x);\n    var d4 = this.y.redMul(p5.y);\n    var e7 = this.curve.d.redMul(c5).redMul(d4);\n    var f6 = b4.redSub(e7);\n    var g4 = b4.redAdd(e7);\n    var tmp = this.x.redAdd(this.y).redMul(p5.x.redAdd(p5.y)).redISub(c5).redISub(d4);\n    var nx = a5.redMul(f6).redMul(tmp);\n    var ny;\n    var nz;\n    if (this.curve.twisted) {\n      ny = a5.redMul(g4).redMul(d4.redSub(this.curve._mulA(c5)));\n      nz = f6.redMul(g4);\n    } else {\n      ny = a5.redMul(g4).redMul(d4.redSub(c5));\n      nz = this.curve._mulC(f6).redMul(g4);\n    }\n    return this.curve.point(nx, ny, nz);\n  };\n  Point.prototype.add = function add(p5) {\n    if (this.isInfinity()) return p5;\n    if (p5.isInfinity()) return this;\n    if (this.curve.extended) return this._extAdd(p5);\n    else return this._projAdd(p5);\n  };\n  Point.prototype.mul = function mul(k4) {\n    if (this._hasDoubles(k4)) return this.curve._fixedNafMul(this, k4);\n    else return this.curve._wnafMul(this, k4);\n  };\n  Point.prototype.mulAdd = function mulAdd(k1, p5, k22) {\n    return this.curve._wnafMulAdd(1, [this, p5], [k1, k22], 2, false);\n  };\n  Point.prototype.jmulAdd = function jmulAdd(k1, p5, k22) {\n    return this.curve._wnafMulAdd(1, [this, p5], [k1, k22], 2, true);\n  };\n  Point.prototype.normalize = function normalize() {\n    if (this.zOne) return this;\n    var zi = this.z.redInvm();\n    this.x = this.x.redMul(zi);\n    this.y = this.y.redMul(zi);\n    if (this.t) this.t = this.t.redMul(zi);\n    this.z = this.curve.one;\n    this.zOne = true;\n    return this;\n  };\n  Point.prototype.neg = function neg() {\n    return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n  };\n  Point.prototype.getX = function getX() {\n    this.normalize();\n    return this.x.fromRed();\n  };\n  Point.prototype.getY = function getY() {\n    this.normalize();\n    return this.y.fromRed();\n  };\n  Point.prototype.eq = function eq(other) {\n    return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n  };\n  Point.prototype.eqXToP = function eqXToP(x4) {\n    var rx = x4.toRed(this.curve.red).redMul(this.z);\n    if (this.x.cmp(rx) === 0) return true;\n    var xc = x4.clone();\n    var t5 = this.curve.redN.redMul(this.z);\n    for (; ; ) {\n      xc.iadd(this.curve.n);\n      if (xc.cmp(this.curve.p) >= 0) return false;\n      rx.redIAdd(t5);\n      if (this.x.cmp(rx) === 0) return true;\n    }\n  };\n  Point.prototype.toP = Point.prototype.normalize;\n  Point.prototype.mixedAdd = Point.prototype.add;\n  return exports$V;\n}\nvar exports$U = {};\nvar _dewExec$T = false;\nfunction dew$T() {\n  if (_dewExec$T) return exports$U;\n  _dewExec$T = true;\n  var curve = exports$U;\n  curve.base = dew$X();\n  curve.short = dew$W();\n  curve.mont = dew$V();\n  curve.edwards = dew$U();\n  return exports$U;\n}\nvar exports$T = {};\nvar _dewExec$S = false;\nfunction dew$S() {\n  if (_dewExec$S) return exports$T;\n  _dewExec$S = true;\n  var assert2 = dew$3h();\n  var inherits = dew3();\n  exports$T.inherits = inherits;\n  function isSurrogatePair(msg, i5) {\n    if ((msg.charCodeAt(i5) & 64512) !== 55296) {\n      return false;\n    }\n    if (i5 < 0 || i5 + 1 >= msg.length) {\n      return false;\n    }\n    return (msg.charCodeAt(i5 + 1) & 64512) === 56320;\n  }\n  function toArray(msg, enc) {\n    if (Array.isArray(msg)) return msg.slice();\n    if (!msg) return [];\n    var res = [];\n    if (typeof msg === \"string\") {\n      if (!enc) {\n        var p5 = 0;\n        for (var i5 = 0; i5 < msg.length; i5++) {\n          var c5 = msg.charCodeAt(i5);\n          if (c5 < 128) {\n            res[p5++] = c5;\n          } else if (c5 < 2048) {\n            res[p5++] = c5 >> 6 | 192;\n            res[p5++] = c5 & 63 | 128;\n          } else if (isSurrogatePair(msg, i5)) {\n            c5 = 65536 + ((c5 & 1023) << 10) + (msg.charCodeAt(++i5) & 1023);\n            res[p5++] = c5 >> 18 | 240;\n            res[p5++] = c5 >> 12 & 63 | 128;\n            res[p5++] = c5 >> 6 & 63 | 128;\n            res[p5++] = c5 & 63 | 128;\n          } else {\n            res[p5++] = c5 >> 12 | 224;\n            res[p5++] = c5 >> 6 & 63 | 128;\n            res[p5++] = c5 & 63 | 128;\n          }\n        }\n      } else if (enc === \"hex\") {\n        msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n        if (msg.length % 2 !== 0) msg = \"0\" + msg;\n        for (i5 = 0; i5 < msg.length; i5 += 2) res.push(parseInt(msg[i5] + msg[i5 + 1], 16));\n      }\n    } else {\n      for (i5 = 0; i5 < msg.length; i5++) res[i5] = msg[i5] | 0;\n    }\n    return res;\n  }\n  exports$T.toArray = toArray;\n  function toHex(msg) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) res += zero2(msg[i5].toString(16));\n    return res;\n  }\n  exports$T.toHex = toHex;\n  function htonl(w4) {\n    var res = w4 >>> 24 | w4 >>> 8 & 65280 | w4 << 8 & 16711680 | (w4 & 255) << 24;\n    return res >>> 0;\n  }\n  exports$T.htonl = htonl;\n  function toHex32(msg, endian) {\n    var res = \"\";\n    for (var i5 = 0; i5 < msg.length; i5++) {\n      var w4 = msg[i5];\n      if (endian === \"little\") w4 = htonl(w4);\n      res += zero8(w4.toString(16));\n    }\n    return res;\n  }\n  exports$T.toHex32 = toHex32;\n  function zero2(word) {\n    if (word.length === 1) return \"0\" + word;\n    else return word;\n  }\n  exports$T.zero2 = zero2;\n  function zero8(word) {\n    if (word.length === 7) return \"0\" + word;\n    else if (word.length === 6) return \"00\" + word;\n    else if (word.length === 5) return \"000\" + word;\n    else if (word.length === 4) return \"0000\" + word;\n    else if (word.length === 3) return \"00000\" + word;\n    else if (word.length === 2) return \"000000\" + word;\n    else if (word.length === 1) return \"0000000\" + word;\n    else return word;\n  }\n  exports$T.zero8 = zero8;\n  function join32(msg, start, end, endian) {\n    var len = end - start;\n    assert2(len % 4 === 0);\n    var res = new Array(len / 4);\n    for (var i5 = 0, k4 = start; i5 < res.length; i5++, k4 += 4) {\n      var w4;\n      if (endian === \"big\") w4 = msg[k4] << 24 | msg[k4 + 1] << 16 | msg[k4 + 2] << 8 | msg[k4 + 3];\n      else w4 = msg[k4 + 3] << 24 | msg[k4 + 2] << 16 | msg[k4 + 1] << 8 | msg[k4];\n      res[i5] = w4 >>> 0;\n    }\n    return res;\n  }\n  exports$T.join32 = join32;\n  function split32(msg, endian) {\n    var res = new Array(msg.length * 4);\n    for (var i5 = 0, k4 = 0; i5 < msg.length; i5++, k4 += 4) {\n      var m4 = msg[i5];\n      if (endian === \"big\") {\n        res[k4] = m4 >>> 24;\n        res[k4 + 1] = m4 >>> 16 & 255;\n        res[k4 + 2] = m4 >>> 8 & 255;\n        res[k4 + 3] = m4 & 255;\n      } else {\n        res[k4 + 3] = m4 >>> 24;\n        res[k4 + 2] = m4 >>> 16 & 255;\n        res[k4 + 1] = m4 >>> 8 & 255;\n        res[k4] = m4 & 255;\n      }\n    }\n    return res;\n  }\n  exports$T.split32 = split32;\n  function rotr32(w4, b4) {\n    return w4 >>> b4 | w4 << 32 - b4;\n  }\n  exports$T.rotr32 = rotr32;\n  function rotl32(w4, b4) {\n    return w4 << b4 | w4 >>> 32 - b4;\n  }\n  exports$T.rotl32 = rotl32;\n  function sum32(a5, b4) {\n    return a5 + b4 >>> 0;\n  }\n  exports$T.sum32 = sum32;\n  function sum32_3(a5, b4, c5) {\n    return a5 + b4 + c5 >>> 0;\n  }\n  exports$T.sum32_3 = sum32_3;\n  function sum32_4(a5, b4, c5, d4) {\n    return a5 + b4 + c5 + d4 >>> 0;\n  }\n  exports$T.sum32_4 = sum32_4;\n  function sum32_5(a5, b4, c5, d4, e7) {\n    return a5 + b4 + c5 + d4 + e7 >>> 0;\n  }\n  exports$T.sum32_5 = sum32_5;\n  function sum64(buf, pos, ah, al) {\n    var bh = buf[pos];\n    var bl = buf[pos + 1];\n    var lo = al + bl >>> 0;\n    var hi = (lo < al ? 1 : 0) + ah + bh;\n    buf[pos] = hi >>> 0;\n    buf[pos + 1] = lo;\n  }\n  exports$T.sum64 = sum64;\n  function sum64_hi(ah, al, bh, bl) {\n    var lo = al + bl >>> 0;\n    var hi = (lo < al ? 1 : 0) + ah + bh;\n    return hi >>> 0;\n  }\n  exports$T.sum64_hi = sum64_hi;\n  function sum64_lo(ah, al, bh, bl) {\n    var lo = al + bl;\n    return lo >>> 0;\n  }\n  exports$T.sum64_lo = sum64_lo;\n  function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n    var carry = 0;\n    var lo = al;\n    lo = lo + bl >>> 0;\n    carry += lo < al ? 1 : 0;\n    lo = lo + cl >>> 0;\n    carry += lo < cl ? 1 : 0;\n    lo = lo + dl >>> 0;\n    carry += lo < dl ? 1 : 0;\n    var hi = ah + bh + ch + dh + carry;\n    return hi >>> 0;\n  }\n  exports$T.sum64_4_hi = sum64_4_hi;\n  function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n    var lo = al + bl + cl + dl;\n    return lo >>> 0;\n  }\n  exports$T.sum64_4_lo = sum64_4_lo;\n  function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n    var carry = 0;\n    var lo = al;\n    lo = lo + bl >>> 0;\n    carry += lo < al ? 1 : 0;\n    lo = lo + cl >>> 0;\n    carry += lo < cl ? 1 : 0;\n    lo = lo + dl >>> 0;\n    carry += lo < dl ? 1 : 0;\n    lo = lo + el >>> 0;\n    carry += lo < el ? 1 : 0;\n    var hi = ah + bh + ch + dh + eh + carry;\n    return hi >>> 0;\n  }\n  exports$T.sum64_5_hi = sum64_5_hi;\n  function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n    var lo = al + bl + cl + dl + el;\n    return lo >>> 0;\n  }\n  exports$T.sum64_5_lo = sum64_5_lo;\n  function rotr64_hi(ah, al, num) {\n    var r5 = al << 32 - num | ah >>> num;\n    return r5 >>> 0;\n  }\n  exports$T.rotr64_hi = rotr64_hi;\n  function rotr64_lo(ah, al, num) {\n    var r5 = ah << 32 - num | al >>> num;\n    return r5 >>> 0;\n  }\n  exports$T.rotr64_lo = rotr64_lo;\n  function shr64_hi(ah, al, num) {\n    return ah >>> num;\n  }\n  exports$T.shr64_hi = shr64_hi;\n  function shr64_lo(ah, al, num) {\n    var r5 = ah << 32 - num | al >>> num;\n    return r5 >>> 0;\n  }\n  exports$T.shr64_lo = shr64_lo;\n  return exports$T;\n}\nvar exports$S = {};\nvar _dewExec$R = false;\nfunction dew$R() {\n  if (_dewExec$R) return exports$S;\n  _dewExec$R = true;\n  var utils = dew$S();\n  var assert2 = dew$3h();\n  function BlockHash() {\n    this.pending = null;\n    this.pendingTotal = 0;\n    this.blockSize = this.constructor.blockSize;\n    this.outSize = this.constructor.outSize;\n    this.hmacStrength = this.constructor.hmacStrength;\n    this.padLength = this.constructor.padLength / 8;\n    this.endian = \"big\";\n    this._delta8 = this.blockSize / 8;\n    this._delta32 = this.blockSize / 32;\n  }\n  exports$S.BlockHash = BlockHash;\n  BlockHash.prototype.update = function update(msg, enc) {\n    msg = utils.toArray(msg, enc);\n    if (!this.pending) this.pending = msg;\n    else this.pending = this.pending.concat(msg);\n    this.pendingTotal += msg.length;\n    if (this.pending.length >= this._delta8) {\n      msg = this.pending;\n      var r5 = msg.length % this._delta8;\n      this.pending = msg.slice(msg.length - r5, msg.length);\n      if (this.pending.length === 0) this.pending = null;\n      msg = utils.join32(msg, 0, msg.length - r5, this.endian);\n      for (var i5 = 0; i5 < msg.length; i5 += this._delta32) this._update(msg, i5, i5 + this._delta32);\n    }\n    return this;\n  };\n  BlockHash.prototype.digest = function digest(enc) {\n    this.update(this._pad());\n    assert2(this.pending === null);\n    return this._digest(enc);\n  };\n  BlockHash.prototype._pad = function pad() {\n    var len = this.pendingTotal;\n    var bytes = this._delta8;\n    var k4 = bytes - (len + this.padLength) % bytes;\n    var res = new Array(k4 + this.padLength);\n    res[0] = 128;\n    for (var i5 = 1; i5 < k4; i5++) res[i5] = 0;\n    len <<= 3;\n    if (this.endian === \"big\") {\n      for (var t5 = 8; t5 < this.padLength; t5++) res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = len >>> 24 & 255;\n      res[i5++] = len >>> 16 & 255;\n      res[i5++] = len >>> 8 & 255;\n      res[i5++] = len & 255;\n    } else {\n      res[i5++] = len & 255;\n      res[i5++] = len >>> 8 & 255;\n      res[i5++] = len >>> 16 & 255;\n      res[i5++] = len >>> 24 & 255;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      res[i5++] = 0;\n      for (t5 = 8; t5 < this.padLength; t5++) res[i5++] = 0;\n    }\n    return res;\n  };\n  return exports$S;\n}\nvar exports$R = {};\nvar _dewExec$Q = false;\nfunction dew$Q() {\n  if (_dewExec$Q) return exports$R;\n  _dewExec$Q = true;\n  var utils = dew$S();\n  var rotr32 = utils.rotr32;\n  function ft_1(s5, x4, y5, z4) {\n    if (s5 === 0) return ch32(x4, y5, z4);\n    if (s5 === 1 || s5 === 3) return p32(x4, y5, z4);\n    if (s5 === 2) return maj32(x4, y5, z4);\n  }\n  exports$R.ft_1 = ft_1;\n  function ch32(x4, y5, z4) {\n    return x4 & y5 ^ ~x4 & z4;\n  }\n  exports$R.ch32 = ch32;\n  function maj32(x4, y5, z4) {\n    return x4 & y5 ^ x4 & z4 ^ y5 & z4;\n  }\n  exports$R.maj32 = maj32;\n  function p32(x4, y5, z4) {\n    return x4 ^ y5 ^ z4;\n  }\n  exports$R.p32 = p32;\n  function s0_256(x4) {\n    return rotr32(x4, 2) ^ rotr32(x4, 13) ^ rotr32(x4, 22);\n  }\n  exports$R.s0_256 = s0_256;\n  function s1_256(x4) {\n    return rotr32(x4, 6) ^ rotr32(x4, 11) ^ rotr32(x4, 25);\n  }\n  exports$R.s1_256 = s1_256;\n  function g0_256(x4) {\n    return rotr32(x4, 7) ^ rotr32(x4, 18) ^ x4 >>> 3;\n  }\n  exports$R.g0_256 = g0_256;\n  function g1_256(x4) {\n    return rotr32(x4, 17) ^ rotr32(x4, 19) ^ x4 >>> 10;\n  }\n  exports$R.g1_256 = g1_256;\n  return exports$R;\n}\nvar exports$Q = {};\nvar _dewExec$P = false;\nfunction dew$P() {\n  if (_dewExec$P) return exports$Q;\n  _dewExec$P = true;\n  var utils = dew$S();\n  var common = dew$R();\n  var shaCommon = dew$Q();\n  var rotl32 = utils.rotl32;\n  var sum32 = utils.sum32;\n  var sum32_5 = utils.sum32_5;\n  var ft_1 = shaCommon.ft_1;\n  var BlockHash = common.BlockHash;\n  var sha1_K = [1518500249, 1859775393, 2400959708, 3395469782];\n  function SHA1() {\n    if (!(this instanceof SHA1)) return new SHA1();\n    BlockHash.call(this);\n    this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];\n    this.W = new Array(80);\n  }\n  utils.inherits(SHA1, BlockHash);\n  exports$Q = SHA1;\n  SHA1.blockSize = 512;\n  SHA1.outSize = 160;\n  SHA1.hmacStrength = 80;\n  SHA1.padLength = 64;\n  SHA1.prototype._update = function _update(msg, start) {\n    var W3 = this.W;\n    for (var i5 = 0; i5 < 16; i5++) W3[i5] = msg[start + i5];\n    for (; i5 < W3.length; i5++) W3[i5] = rotl32(W3[i5 - 3] ^ W3[i5 - 8] ^ W3[i5 - 14] ^ W3[i5 - 16], 1);\n    var a5 = this.h[0];\n    var b4 = this.h[1];\n    var c5 = this.h[2];\n    var d4 = this.h[3];\n    var e7 = this.h[4];\n    for (i5 = 0; i5 < W3.length; i5++) {\n      var s5 = ~~(i5 / 20);\n      var t5 = sum32_5(rotl32(a5, 5), ft_1(s5, b4, c5, d4), e7, W3[i5], sha1_K[s5]);\n      e7 = d4;\n      d4 = c5;\n      c5 = rotl32(b4, 30);\n      b4 = a5;\n      a5 = t5;\n    }\n    this.h[0] = sum32(this.h[0], a5);\n    this.h[1] = sum32(this.h[1], b4);\n    this.h[2] = sum32(this.h[2], c5);\n    this.h[3] = sum32(this.h[3], d4);\n    this.h[4] = sum32(this.h[4], e7);\n  };\n  SHA1.prototype._digest = function digest(enc) {\n    if (enc === \"hex\") return utils.toHex32(this.h, \"big\");\n    else return utils.split32(this.h, \"big\");\n  };\n  return exports$Q;\n}\nvar exports$P = {};\nvar _dewExec$O = false;\nfunction dew$O() {\n  if (_dewExec$O) return exports$P;\n  _dewExec$O = true;\n  var utils = dew$S();\n  var common = dew$R();\n  var shaCommon = dew$Q();\n  var assert2 = dew$3h();\n  var sum32 = utils.sum32;\n  var sum32_4 = utils.sum32_4;\n  var sum32_5 = utils.sum32_5;\n  var ch32 = shaCommon.ch32;\n  var maj32 = shaCommon.maj32;\n  var s0_256 = shaCommon.s0_256;\n  var s1_256 = shaCommon.s1_256;\n  var g0_256 = shaCommon.g0_256;\n  var g1_256 = shaCommon.g1_256;\n  var BlockHash = common.BlockHash;\n  var sha256_K = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298];\n  function SHA256() {\n    if (!(this instanceof SHA256)) return new SHA256();\n    BlockHash.call(this);\n    this.h = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225];\n    this.k = sha256_K;\n    this.W = new Array(64);\n  }\n  utils.inherits(SHA256, BlockHash);\n  exports$P = SHA256;\n  SHA256.blockSize = 512;\n  SHA256.outSize = 256;\n  SHA256.hmacStrength = 192;\n  SHA256.padLength = 64;\n  SHA256.prototype._update = function _update(msg, start) {\n    var W3 = this.W;\n    for (var i5 = 0; i5 < 16; i5++) W3[i5] = msg[start + i5];\n    for (; i5 < W3.length; i5++) W3[i5] = sum32_4(g1_256(W3[i5 - 2]), W3[i5 - 7], g0_256(W3[i5 - 15]), W3[i5 - 16]);\n    var a5 = this.h[0];\n    var b4 = this.h[1];\n    var c5 = this.h[2];\n    var d4 = this.h[3];\n    var e7 = this.h[4];\n    var f6 = this.h[5];\n    var g4 = this.h[6];\n    var h5 = this.h[7];\n    assert2(this.k.length === W3.length);\n    for (i5 = 0; i5 < W3.length; i5++) {\n      var T1 = sum32_5(h5, s1_256(e7), ch32(e7, f6, g4), this.k[i5], W3[i5]);\n      var T22 = sum32(s0_256(a5), maj32(a5, b4, c5));\n      h5 = g4;\n      g4 = f6;\n      f6 = e7;\n      e7 = sum32(d4, T1);\n      d4 = c5;\n      c5 = b4;\n      b4 = a5;\n      a5 = sum32(T1, T22);\n    }\n    this.h[0] = sum32(this.h[0], a5);\n    this.h[1] = sum32(this.h[1], b4);\n    this.h[2] = sum32(this.h[2], c5);\n    this.h[3] = sum32(this.h[3], d4);\n    this.h[4] = sum32(this.h[4], e7);\n    this.h[5] = sum32(this.h[5], f6);\n    this.h[6] = sum32(this.h[6], g4);\n    this.h[7] = sum32(this.h[7], h5);\n  };\n  SHA256.prototype._digest = function digest(enc) {\n    if (enc === \"hex\") return utils.toHex32(this.h, \"big\");\n    else return utils.split32(this.h, \"big\");\n  };\n  return exports$P;\n}\nvar exports$O = {};\nvar _dewExec$N = false;\nfunction dew$N() {\n  if (_dewExec$N) return exports$O;\n  _dewExec$N = true;\n  var utils = dew$S();\n  var SHA256 = dew$O();\n  function SHA224() {\n    if (!(this instanceof SHA224)) return new SHA224();\n    SHA256.call(this);\n    this.h = [3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428];\n  }\n  utils.inherits(SHA224, SHA256);\n  exports$O = SHA224;\n  SHA224.blockSize = 512;\n  SHA224.outSize = 224;\n  SHA224.hmacStrength = 192;\n  SHA224.padLength = 64;\n  SHA224.prototype._digest = function digest(enc) {\n    if (enc === \"hex\") return utils.toHex32(this.h.slice(0, 7), \"big\");\n    else return utils.split32(this.h.slice(0, 7), \"big\");\n  };\n  return exports$O;\n}\nvar exports$N = {};\nvar _dewExec$M = false;\nfunction dew$M() {\n  if (_dewExec$M) return exports$N;\n  _dewExec$M = true;\n  var utils = dew$S();\n  var common = dew$R();\n  var assert2 = dew$3h();\n  var rotr64_hi = utils.rotr64_hi;\n  var rotr64_lo = utils.rotr64_lo;\n  var shr64_hi = utils.shr64_hi;\n  var shr64_lo = utils.shr64_lo;\n  var sum64 = utils.sum64;\n  var sum64_hi = utils.sum64_hi;\n  var sum64_lo = utils.sum64_lo;\n  var sum64_4_hi = utils.sum64_4_hi;\n  var sum64_4_lo = utils.sum64_4_lo;\n  var sum64_5_hi = utils.sum64_5_hi;\n  var sum64_5_lo = utils.sum64_5_lo;\n  var BlockHash = common.BlockHash;\n  var sha512_K = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591];\n  function SHA512() {\n    if (!(this instanceof SHA512)) return new SHA512();\n    BlockHash.call(this);\n    this.h = [1779033703, 4089235720, 3144134277, 2227873595, 1013904242, 4271175723, 2773480762, 1595750129, 1359893119, 2917565137, 2600822924, 725511199, 528734635, 4215389547, 1541459225, 327033209];\n    this.k = sha512_K;\n    this.W = new Array(160);\n  }\n  utils.inherits(SHA512, BlockHash);\n  exports$N = SHA512;\n  SHA512.blockSize = 1024;\n  SHA512.outSize = 512;\n  SHA512.hmacStrength = 192;\n  SHA512.padLength = 128;\n  SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n    var W3 = this.W;\n    for (var i5 = 0; i5 < 32; i5++) W3[i5] = msg[start + i5];\n    for (; i5 < W3.length; i5 += 2) {\n      var c0_hi = g1_512_hi(W3[i5 - 4], W3[i5 - 3]);\n      var c0_lo = g1_512_lo(W3[i5 - 4], W3[i5 - 3]);\n      var c1_hi = W3[i5 - 14];\n      var c1_lo = W3[i5 - 13];\n      var c2_hi = g0_512_hi(W3[i5 - 30], W3[i5 - 29]);\n      var c2_lo = g0_512_lo(W3[i5 - 30], W3[i5 - 29]);\n      var c3_hi = W3[i5 - 32];\n      var c3_lo = W3[i5 - 31];\n      W3[i5] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n      W3[i5 + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n    }\n  };\n  SHA512.prototype._update = function _update(msg, start) {\n    this._prepareBlock(msg, start);\n    var W3 = this.W;\n    var ah = this.h[0];\n    var al = this.h[1];\n    var bh = this.h[2];\n    var bl = this.h[3];\n    var ch = this.h[4];\n    var cl = this.h[5];\n    var dh = this.h[6];\n    var dl = this.h[7];\n    var eh = this.h[8];\n    var el = this.h[9];\n    var fh = this.h[10];\n    var fl = this.h[11];\n    var gh = this.h[12];\n    var gl = this.h[13];\n    var hh = this.h[14];\n    var hl = this.h[15];\n    assert2(this.k.length === W3.length);\n    for (var i5 = 0; i5 < W3.length; i5 += 2) {\n      var c0_hi = hh;\n      var c0_lo = hl;\n      var c1_hi = s1_512_hi(eh, el);\n      var c1_lo = s1_512_lo(eh, el);\n      var c2_hi = ch64_hi(eh, el, fh, fl, gh);\n      var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n      var c3_hi = this.k[i5];\n      var c3_lo = this.k[i5 + 1];\n      var c4_hi = W3[i5];\n      var c4_lo = W3[i5 + 1];\n      var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n      var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n      c0_hi = s0_512_hi(ah, al);\n      c0_lo = s0_512_lo(ah, al);\n      c1_hi = maj64_hi(ah, al, bh, bl, ch);\n      c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n      var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n      var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n      hh = gh;\n      hl = gl;\n      gh = fh;\n      gl = fl;\n      fh = eh;\n      fl = el;\n      eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n      el = sum64_lo(dl, dl, T1_hi, T1_lo);\n      dh = ch;\n      dl = cl;\n      ch = bh;\n      cl = bl;\n      bh = ah;\n      bl = al;\n      ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n      al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n    }\n    sum64(this.h, 0, ah, al);\n    sum64(this.h, 2, bh, bl);\n    sum64(this.h, 4, ch, cl);\n    sum64(this.h, 6, dh, dl);\n    sum64(this.h, 8, eh, el);\n    sum64(this.h, 10, fh, fl);\n    sum64(this.h, 12, gh, gl);\n    sum64(this.h, 14, hh, hl);\n  };\n  SHA512.prototype._digest = function digest(enc) {\n    if (enc === \"hex\") return utils.toHex32(this.h, \"big\");\n    else return utils.split32(this.h, \"big\");\n  };\n  function ch64_hi(xh, xl, yh, yl, zh) {\n    var r5 = xh & yh ^ ~xh & zh;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function ch64_lo(xh, xl, yh, yl, zh, zl) {\n    var r5 = xl & yl ^ ~xl & zl;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function maj64_hi(xh, xl, yh, yl, zh) {\n    var r5 = xh & yh ^ xh & zh ^ yh & zh;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function maj64_lo(xh, xl, yh, yl, zh, zl) {\n    var r5 = xl & yl ^ xl & zl ^ yl & zl;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function s0_512_hi(xh, xl) {\n    var c0_hi = rotr64_hi(xh, xl, 28);\n    var c1_hi = rotr64_hi(xl, xh, 2);\n    var c2_hi = rotr64_hi(xl, xh, 7);\n    var r5 = c0_hi ^ c1_hi ^ c2_hi;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function s0_512_lo(xh, xl) {\n    var c0_lo = rotr64_lo(xh, xl, 28);\n    var c1_lo = rotr64_lo(xl, xh, 2);\n    var c2_lo = rotr64_lo(xl, xh, 7);\n    var r5 = c0_lo ^ c1_lo ^ c2_lo;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function s1_512_hi(xh, xl) {\n    var c0_hi = rotr64_hi(xh, xl, 14);\n    var c1_hi = rotr64_hi(xh, xl, 18);\n    var c2_hi = rotr64_hi(xl, xh, 9);\n    var r5 = c0_hi ^ c1_hi ^ c2_hi;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function s1_512_lo(xh, xl) {\n    var c0_lo = rotr64_lo(xh, xl, 14);\n    var c1_lo = rotr64_lo(xh, xl, 18);\n    var c2_lo = rotr64_lo(xl, xh, 9);\n    var r5 = c0_lo ^ c1_lo ^ c2_lo;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function g0_512_hi(xh, xl) {\n    var c0_hi = rotr64_hi(xh, xl, 1);\n    var c1_hi = rotr64_hi(xh, xl, 8);\n    var c2_hi = shr64_hi(xh, xl, 7);\n    var r5 = c0_hi ^ c1_hi ^ c2_hi;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function g0_512_lo(xh, xl) {\n    var c0_lo = rotr64_lo(xh, xl, 1);\n    var c1_lo = rotr64_lo(xh, xl, 8);\n    var c2_lo = shr64_lo(xh, xl, 7);\n    var r5 = c0_lo ^ c1_lo ^ c2_lo;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function g1_512_hi(xh, xl) {\n    var c0_hi = rotr64_hi(xh, xl, 19);\n    var c1_hi = rotr64_hi(xl, xh, 29);\n    var c2_hi = shr64_hi(xh, xl, 6);\n    var r5 = c0_hi ^ c1_hi ^ c2_hi;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  function g1_512_lo(xh, xl) {\n    var c0_lo = rotr64_lo(xh, xl, 19);\n    var c1_lo = rotr64_lo(xl, xh, 29);\n    var c2_lo = shr64_lo(xh, xl, 6);\n    var r5 = c0_lo ^ c1_lo ^ c2_lo;\n    if (r5 < 0) r5 += 4294967296;\n    return r5;\n  }\n  return exports$N;\n}\nvar exports$M = {};\nvar _dewExec$L = false;\nfunction dew$L() {\n  if (_dewExec$L) return exports$M;\n  _dewExec$L = true;\n  var utils = dew$S();\n  var SHA512 = dew$M();\n  function SHA384() {\n    if (!(this instanceof SHA384)) return new SHA384();\n    SHA512.call(this);\n    this.h = [3418070365, 3238371032, 1654270250, 914150663, 2438529370, 812702999, 355462360, 4144912697, 1731405415, 4290775857, 2394180231, 1750603025, 3675008525, 1694076839, 1203062813, 3204075428];\n  }\n  utils.inherits(SHA384, SHA512);\n  exports$M = SHA384;\n  SHA384.blockSize = 1024;\n  SHA384.outSize = 384;\n  SHA384.hmacStrength = 192;\n  SHA384.padLength = 128;\n  SHA384.prototype._digest = function digest(enc) {\n    if (enc === \"hex\") return utils.toHex32(this.h.slice(0, 12), \"big\");\n    else return utils.split32(this.h.slice(0, 12), \"big\");\n  };\n  return exports$M;\n}\nvar exports$L = {};\nvar _dewExec$K = false;\nfunction dew$K() {\n  if (_dewExec$K) return exports$L;\n  _dewExec$K = true;\n  exports$L.sha1 = dew$P();\n  exports$L.sha224 = dew$N();\n  exports$L.sha256 = dew$O();\n  exports$L.sha384 = dew$L();\n  exports$L.sha512 = dew$M();\n  return exports$L;\n}\nvar exports$K = {};\nvar _dewExec$J = false;\nfunction dew$J() {\n  if (_dewExec$J) return exports$K;\n  _dewExec$J = true;\n  var utils = dew$S();\n  var common = dew$R();\n  var rotl32 = utils.rotl32;\n  var sum32 = utils.sum32;\n  var sum32_3 = utils.sum32_3;\n  var sum32_4 = utils.sum32_4;\n  var BlockHash = common.BlockHash;\n  function RIPEMD160() {\n    if (!(this instanceof RIPEMD160)) return new RIPEMD160();\n    BlockHash.call(this);\n    this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];\n    this.endian = \"little\";\n  }\n  utils.inherits(RIPEMD160, BlockHash);\n  exports$K.ripemd160 = RIPEMD160;\n  RIPEMD160.blockSize = 512;\n  RIPEMD160.outSize = 160;\n  RIPEMD160.hmacStrength = 192;\n  RIPEMD160.padLength = 64;\n  RIPEMD160.prototype._update = function update(msg, start) {\n    var A4 = this.h[0];\n    var B4 = this.h[1];\n    var C4 = this.h[2];\n    var D4 = this.h[3];\n    var E4 = this.h[4];\n    var Ah = A4;\n    var Bh = B4;\n    var Ch = C4;\n    var Dh = D4;\n    var Eh = E4;\n    for (var j4 = 0; j4 < 80; j4++) {\n      var T4 = sum32(rotl32(sum32_4(A4, f6(j4, B4, C4, D4), msg[r5[j4] + start], K3(j4)), s5[j4]), E4);\n      A4 = E4;\n      E4 = D4;\n      D4 = rotl32(C4, 10);\n      C4 = B4;\n      B4 = T4;\n      T4 = sum32(rotl32(sum32_4(Ah, f6(79 - j4, Bh, Ch, Dh), msg[rh[j4] + start], Kh(j4)), sh[j4]), Eh);\n      Ah = Eh;\n      Eh = Dh;\n      Dh = rotl32(Ch, 10);\n      Ch = Bh;\n      Bh = T4;\n    }\n    T4 = sum32_3(this.h[1], C4, Dh);\n    this.h[1] = sum32_3(this.h[2], D4, Eh);\n    this.h[2] = sum32_3(this.h[3], E4, Ah);\n    this.h[3] = sum32_3(this.h[4], A4, Bh);\n    this.h[4] = sum32_3(this.h[0], B4, Ch);\n    this.h[0] = T4;\n  };\n  RIPEMD160.prototype._digest = function digest(enc) {\n    if (enc === \"hex\") return utils.toHex32(this.h, \"little\");\n    else return utils.split32(this.h, \"little\");\n  };\n  function f6(j4, x4, y5, z4) {\n    if (j4 <= 15) return x4 ^ y5 ^ z4;\n    else if (j4 <= 31) return x4 & y5 | ~x4 & z4;\n    else if (j4 <= 47) return (x4 | ~y5) ^ z4;\n    else if (j4 <= 63) return x4 & z4 | y5 & ~z4;\n    else return x4 ^ (y5 | ~z4);\n  }\n  function K3(j4) {\n    if (j4 <= 15) return 0;\n    else if (j4 <= 31) return 1518500249;\n    else if (j4 <= 47) return 1859775393;\n    else if (j4 <= 63) return 2400959708;\n    else return 2840853838;\n  }\n  function Kh(j4) {\n    if (j4 <= 15) return 1352829926;\n    else if (j4 <= 31) return 1548603684;\n    else if (j4 <= 47) return 1836072691;\n    else if (j4 <= 63) return 2053994217;\n    else return 0;\n  }\n  var r5 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\n  var rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\n  var s5 = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\n  var sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n  return exports$K;\n}\nvar exports$J = {};\nvar _dewExec$I = false;\nfunction dew$I() {\n  if (_dewExec$I) return exports$J;\n  _dewExec$I = true;\n  var utils = dew$S();\n  var assert2 = dew$3h();\n  function Hmac2(hash, key, enc) {\n    if (!(this instanceof Hmac2)) return new Hmac2(hash, key, enc);\n    this.Hash = hash;\n    this.blockSize = hash.blockSize / 8;\n    this.outSize = hash.outSize / 8;\n    this.inner = null;\n    this.outer = null;\n    this._init(utils.toArray(key, enc));\n  }\n  exports$J = Hmac2;\n  Hmac2.prototype._init = function init(key) {\n    if (key.length > this.blockSize) key = new this.Hash().update(key).digest();\n    assert2(key.length <= this.blockSize);\n    for (var i5 = key.length; i5 < this.blockSize; i5++) key.push(0);\n    for (i5 = 0; i5 < key.length; i5++) key[i5] ^= 54;\n    this.inner = new this.Hash().update(key);\n    for (i5 = 0; i5 < key.length; i5++) key[i5] ^= 106;\n    this.outer = new this.Hash().update(key);\n  };\n  Hmac2.prototype.update = function update(msg, enc) {\n    this.inner.update(msg, enc);\n    return this;\n  };\n  Hmac2.prototype.digest = function digest(enc) {\n    this.outer.update(this.inner.digest());\n    return this.outer.digest(enc);\n  };\n  return exports$J;\n}\nvar exports$I = {};\nvar _dewExec$H = false;\nfunction dew$H() {\n  if (_dewExec$H) return exports$I;\n  _dewExec$H = true;\n  var hash = exports$I;\n  hash.utils = dew$S();\n  hash.common = dew$R();\n  hash.sha = dew$K();\n  hash.ripemd = dew$J();\n  hash.hmac = dew$I();\n  hash.sha1 = hash.sha.sha1;\n  hash.sha256 = hash.sha.sha256;\n  hash.sha224 = hash.sha.sha224;\n  hash.sha384 = hash.sha.sha384;\n  hash.sha512 = hash.sha.sha512;\n  hash.ripemd160 = hash.ripemd.ripemd160;\n  return exports$I;\n}\nvar exports$H = {};\nvar _dewExec$G = false;\nfunction dew$G() {\n  if (_dewExec$G) return exports$H;\n  _dewExec$G = true;\n  exports$H = {\n    doubles: {\n      step: 4,\n      points: [[\"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\", \"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"], [\"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\", \"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"], [\"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\", \"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"], [\"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\", \"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"], [\"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\", \"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"], [\"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\", \"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"], [\"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\", \"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"], [\"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\", \"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"], [\"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\", \"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"], [\"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\", \"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"], [\"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\", \"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"], [\"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\", \"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"], [\"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\", \"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"], [\"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\", \"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"], [\"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\", \"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"], [\"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\", \"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"], [\"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\", \"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"], [\"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\", \"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"], [\"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\", \"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"], [\"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\", \"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"], [\"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\", \"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"], [\"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\", \"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"], [\"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\", \"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"], [\"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\", \"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"], [\"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\", \"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"], [\"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\", \"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"], [\"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\", \"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"], [\"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\", \"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"], [\"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\", \"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"], [\"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\", \"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"], [\"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\", \"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"], [\"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\", \"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"], [\"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\", \"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"], [\"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\", \"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"], [\"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\", \"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"], [\"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\", \"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"], [\"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\", \"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"], [\"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\", \"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"], [\"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\", \"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"], [\"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\", \"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"], [\"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\", \"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"], [\"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\", \"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"], [\"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\", \"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"], [\"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\", \"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"], [\"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\", \"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"], [\"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\", \"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"], [\"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\", \"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"], [\"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\", \"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"], [\"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\", \"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"], [\"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\", \"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"], [\"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\", \"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"], [\"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\", \"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"], [\"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\", \"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"], [\"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\", \"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"], [\"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\", \"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"], [\"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\", \"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"], [\"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\", \"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"], [\"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\", \"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"], [\"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\", \"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"], [\"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\", \"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"], [\"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\", \"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"], [\"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\", \"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"], [\"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\", \"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"], [\"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\", \"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"], [\"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\", \"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"]]\n    },\n    naf: {\n      wnd: 7,\n      points: [[\"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\", \"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"], [\"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\", \"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"], [\"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\", \"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"], [\"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\", \"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"], [\"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\", \"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"], [\"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\", \"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"], [\"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\", \"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"], [\"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\", \"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"], [\"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\", \"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"], [\"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\", \"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"], [\"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\", \"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"], [\"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\", \"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"], [\"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\", \"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"], [\"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\", \"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"], [\"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\", \"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"], [\"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\", \"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"], [\"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\", \"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"], [\"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\", \"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"], [\"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\", \"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"], [\"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\", \"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"], [\"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\", \"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"], [\"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\", \"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"], [\"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\", \"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"], [\"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\", \"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"], [\"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\", \"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"], [\"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\", \"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"], [\"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\", \"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"], [\"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\", \"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"], [\"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\", \"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"], [\"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\", \"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"], [\"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\", \"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"], [\"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\", \"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"], [\"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\", \"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"], [\"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\", \"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"], [\"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\", \"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"], [\"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\", \"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"], [\"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\", \"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"], [\"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\", \"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"], [\"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\", \"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"], [\"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\", \"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"], [\"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\", \"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"], [\"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\", \"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"], [\"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\", \"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"], [\"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\", \"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"], [\"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\", \"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"], [\"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\", \"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"], [\"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\", \"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"], [\"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\", \"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"], [\"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\", \"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"], [\"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\", \"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"], [\"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\", \"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"], [\"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\", \"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"], [\"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\", \"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"], [\"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\", \"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"], [\"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\", \"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"], [\"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\", \"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"], [\"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\", \"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"], [\"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\", \"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"], [\"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\", \"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"], [\"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\", \"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"], [\"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\", \"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"], [\"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\", \"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"], [\"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\", \"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"], [\"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\", \"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"], [\"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\", \"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"], [\"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\", \"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"], [\"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\", \"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"], [\"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\", \"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"], [\"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\", \"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"], [\"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\", \"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"], [\"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\", \"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"], [\"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\", \"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"], [\"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\", \"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"], [\"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\", \"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"], [\"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\", \"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"], [\"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\", \"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"], [\"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\", \"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"], [\"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\", \"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"], [\"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\", \"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"], [\"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\", \"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"], [\"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\", \"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"], [\"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\", \"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"], [\"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\", \"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"], [\"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\", \"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"], [\"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\", \"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"], [\"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\", \"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"], [\"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\", \"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"], [\"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\", \"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"], [\"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\", \"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"], [\"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\", \"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"], [\"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\", \"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"], [\"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\", \"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"], [\"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\", \"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"], [\"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\", \"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"], [\"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\", \"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"], [\"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\", \"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"], [\"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\", \"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"], [\"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\", \"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"], [\"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\", \"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"], [\"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\", \"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"], [\"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\", \"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"], [\"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\", \"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"], [\"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\", \"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"], [\"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\", \"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"], [\"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\", \"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"], [\"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\", \"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"], [\"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\", \"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"], [\"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\", \"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"], [\"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\", \"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"], [\"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\", \"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"], [\"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\", \"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"], [\"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\", \"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"], [\"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\", \"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"], [\"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\", \"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"], [\"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\", \"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"], [\"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\", \"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"], [\"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\", \"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"], [\"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\", \"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"], [\"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\", \"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"], [\"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\", \"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"], [\"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\", \"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"], [\"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\", \"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"], [\"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\", \"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"], [\"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\", \"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"], [\"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\", \"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"], [\"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\", \"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"], [\"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\", \"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"]]\n    }\n  };\n  return exports$H;\n}\nvar exports$G = {};\nvar _dewExec$F = false;\nfunction dew$F() {\n  if (_dewExec$F) return exports$G;\n  _dewExec$F = true;\n  var curves = exports$G;\n  var hash = dew$H();\n  var curve = dew$T();\n  var utils = dew$Y();\n  var assert2 = utils.assert;\n  function PresetCurve(options) {\n    if (options.type === \"short\") this.curve = new curve.short(options);\n    else if (options.type === \"edwards\") this.curve = new curve.edwards(options);\n    else this.curve = new curve.mont(options);\n    this.g = this.curve.g;\n    this.n = this.curve.n;\n    this.hash = options.hash;\n    assert2(this.g.validate(), \"Invalid curve\");\n    assert2(this.g.mul(this.n).isInfinity(), \"Invalid curve, G*N != O\");\n  }\n  curves.PresetCurve = PresetCurve;\n  function defineCurve(name2, options) {\n    Object.defineProperty(curves, name2, {\n      configurable: true,\n      enumerable: true,\n      get: function() {\n        var curve2 = new PresetCurve(options);\n        Object.defineProperty(curves, name2, {\n          configurable: true,\n          enumerable: true,\n          value: curve2\n        });\n        return curve2;\n      }\n    });\n  }\n  defineCurve(\"p192\", {\n    type: \"short\",\n    prime: \"p192\",\n    p: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",\n    a: \"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",\n    b: \"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",\n    n: \"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\", \"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]\n  });\n  defineCurve(\"p224\", {\n    type: \"short\",\n    prime: \"p224\",\n    p: \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",\n    a: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",\n    b: \"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",\n    n: \"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\", \"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]\n  });\n  defineCurve(\"p256\", {\n    type: \"short\",\n    prime: null,\n    p: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",\n    a: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",\n    b: \"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",\n    n: \"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\", \"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]\n  });\n  defineCurve(\"p384\", {\n    type: \"short\",\n    prime: null,\n    p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",\n    a: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",\n    b: \"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",\n    n: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",\n    hash: hash.sha384,\n    gRed: false,\n    g: [\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\", \"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]\n  });\n  defineCurve(\"p521\", {\n    type: \"short\",\n    prime: null,\n    p: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",\n    a: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",\n    b: \"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",\n    n: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",\n    hash: hash.sha512,\n    gRed: false,\n    g: [\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\", \"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]\n  });\n  defineCurve(\"curve25519\", {\n    type: \"mont\",\n    prime: \"p25519\",\n    p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n    a: \"76d06\",\n    b: \"1\",\n    n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\"9\"]\n  });\n  defineCurve(\"ed25519\", {\n    type: \"edwards\",\n    prime: \"p25519\",\n    p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n    a: \"-1\",\n    c: \"1\",\n    // -121665 * (121666^(-1)) (mod P)\n    d: \"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",\n    n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n    hash: hash.sha256,\n    gRed: false,\n    g: [\n      \"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\n      // 4/5\n      \"6666666666666666666666666666666666666666666666666666666666666658\"\n    ]\n  });\n  var pre;\n  try {\n    pre = dew$G();\n  } catch (e7) {\n    pre = void 0;\n  }\n  defineCurve(\"secp256k1\", {\n    type: \"short\",\n    prime: \"k256\",\n    p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",\n    a: \"0\",\n    b: \"7\",\n    n: \"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",\n    h: \"1\",\n    hash: hash.sha256,\n    // Precomputed endomorphism\n    beta: \"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",\n    lambda: \"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",\n    basis: [{\n      a: \"3086d221a7d46bcde86c90e49284eb15\",\n      b: \"-e4437ed6010e88286f547fa90abfe4c3\"\n    }, {\n      a: \"114ca50f7a8e2f3f657c1108d9d44cfd8\",\n      b: \"3086d221a7d46bcde86c90e49284eb15\"\n    }],\n    gRed: false,\n    g: [\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\", \"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\", pre]\n  });\n  return exports$G;\n}\nvar exports$F = {};\nvar _dewExec$E = false;\nfunction dew$E() {\n  if (_dewExec$E) return exports$F;\n  _dewExec$E = true;\n  var hash = dew$H();\n  var utils = dew$Z();\n  var assert2 = dew$3h();\n  function HmacDRBG(options) {\n    if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n    this.hash = options.hash;\n    this.predResist = !!options.predResist;\n    this.outLen = this.hash.outSize;\n    this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n    this._reseed = null;\n    this.reseedInterval = null;\n    this.K = null;\n    this.V = null;\n    var entropy = utils.toArray(options.entropy, options.entropyEnc || \"hex\");\n    var nonce = utils.toArray(options.nonce, options.nonceEnc || \"hex\");\n    var pers = utils.toArray(options.pers, options.persEnc || \"hex\");\n    assert2(entropy.length >= this.minEntropy / 8, \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\");\n    this._init(entropy, nonce, pers);\n  }\n  exports$F = HmacDRBG;\n  HmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n    var seed = entropy.concat(nonce).concat(pers);\n    this.K = new Array(this.outLen / 8);\n    this.V = new Array(this.outLen / 8);\n    for (var i5 = 0; i5 < this.V.length; i5++) {\n      this.K[i5] = 0;\n      this.V[i5] = 1;\n    }\n    this._update(seed);\n    this._reseed = 1;\n    this.reseedInterval = 281474976710656;\n  };\n  HmacDRBG.prototype._hmac = function hmac() {\n    return new hash.hmac(this.hash, this.K);\n  };\n  HmacDRBG.prototype._update = function update(seed) {\n    var kmac = this._hmac().update(this.V).update([0]);\n    if (seed) kmac = kmac.update(seed);\n    this.K = kmac.digest();\n    this.V = this._hmac().update(this.V).digest();\n    if (!seed) return;\n    this.K = this._hmac().update(this.V).update([1]).update(seed).digest();\n    this.V = this._hmac().update(this.V).digest();\n  };\n  HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n    if (typeof entropyEnc !== \"string\") {\n      addEnc = add;\n      add = entropyEnc;\n      entropyEnc = null;\n    }\n    entropy = utils.toArray(entropy, entropyEnc);\n    add = utils.toArray(add, addEnc);\n    assert2(entropy.length >= this.minEntropy / 8, \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\");\n    this._update(entropy.concat(add || []));\n    this._reseed = 1;\n  };\n  HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n    if (this._reseed > this.reseedInterval) throw new Error(\"Reseed is required\");\n    if (typeof enc !== \"string\") {\n      addEnc = add;\n      add = enc;\n      enc = null;\n    }\n    if (add) {\n      add = utils.toArray(add, addEnc || \"hex\");\n      this._update(add);\n    }\n    var temp = [];\n    while (temp.length < len) {\n      this.V = this._hmac().update(this.V).digest();\n      temp = temp.concat(this.V);\n    }\n    var res = temp.slice(0, len);\n    this._update(add);\n    this._reseed++;\n    return utils.encode(res, enc);\n  };\n  return exports$F;\n}\nvar exports$E = {};\nvar _dewExec$D = false;\nfunction dew$D() {\n  if (_dewExec$D) return exports$E;\n  _dewExec$D = true;\n  var BN = dew$_();\n  var utils = dew$Y();\n  var assert2 = utils.assert;\n  function KeyPair(ec, options) {\n    this.ec = ec;\n    this.priv = null;\n    this.pub = null;\n    if (options.priv) this._importPrivate(options.priv, options.privEnc);\n    if (options.pub) this._importPublic(options.pub, options.pubEnc);\n  }\n  exports$E = KeyPair;\n  KeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n    if (pub instanceof KeyPair) return pub;\n    return new KeyPair(ec, {\n      pub,\n      pubEnc: enc\n    });\n  };\n  KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n    if (priv instanceof KeyPair) return priv;\n    return new KeyPair(ec, {\n      priv,\n      privEnc: enc\n    });\n  };\n  KeyPair.prototype.validate = function validate() {\n    var pub = this.getPublic();\n    if (pub.isInfinity()) return {\n      result: false,\n      reason: \"Invalid public key\"\n    };\n    if (!pub.validate()) return {\n      result: false,\n      reason: \"Public key is not a point\"\n    };\n    if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n      result: false,\n      reason: \"Public key * N != O\"\n    };\n    return {\n      result: true,\n      reason: null\n    };\n  };\n  KeyPair.prototype.getPublic = function getPublic(compact, enc) {\n    if (typeof compact === \"string\") {\n      enc = compact;\n      compact = null;\n    }\n    if (!this.pub) this.pub = this.ec.g.mul(this.priv);\n    if (!enc) return this.pub;\n    return this.pub.encode(enc, compact);\n  };\n  KeyPair.prototype.getPrivate = function getPrivate(enc) {\n    if (enc === \"hex\") return this.priv.toString(16, 2);\n    else return this.priv;\n  };\n  KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n    this.priv = new BN(key, enc || 16);\n    this.priv = this.priv.umod(this.ec.curve.n);\n  };\n  KeyPair.prototype._importPublic = function _importPublic(key, enc) {\n    if (key.x || key.y) {\n      if (this.ec.curve.type === \"mont\") {\n        assert2(key.x, \"Need x coordinate\");\n      } else if (this.ec.curve.type === \"short\" || this.ec.curve.type === \"edwards\") {\n        assert2(key.x && key.y, \"Need both x and y coordinate\");\n      }\n      this.pub = this.ec.curve.point(key.x, key.y);\n      return;\n    }\n    this.pub = this.ec.curve.decodePoint(key, enc);\n  };\n  KeyPair.prototype.derive = function derive(pub) {\n    if (!pub.validate()) {\n      assert2(pub.validate(), \"public point not validated\");\n    }\n    return pub.mul(this.priv).getX();\n  };\n  KeyPair.prototype.sign = function sign(msg, enc, options) {\n    return this.ec.sign(msg, this, enc, options);\n  };\n  KeyPair.prototype.verify = function verify(msg, signature) {\n    return this.ec.verify(msg, signature, this);\n  };\n  KeyPair.prototype.inspect = function inspect() {\n    return \"<Key priv: \" + (this.priv && this.priv.toString(16, 2)) + \" pub: \" + (this.pub && this.pub.inspect()) + \" >\";\n  };\n  return exports$E;\n}\nvar exports$D = {};\nvar _dewExec$C = false;\nfunction dew$C() {\n  if (_dewExec$C) return exports$D;\n  _dewExec$C = true;\n  var BN = dew$_();\n  var utils = dew$Y();\n  var assert2 = utils.assert;\n  function Signature(options, enc) {\n    if (options instanceof Signature) return options;\n    if (this._importDER(options, enc)) return;\n    assert2(options.r && options.s, \"Signature without r or s\");\n    this.r = new BN(options.r, 16);\n    this.s = new BN(options.s, 16);\n    if (options.recoveryParam === void 0) this.recoveryParam = null;\n    else this.recoveryParam = options.recoveryParam;\n  }\n  exports$D = Signature;\n  function Position() {\n    this.place = 0;\n  }\n  function getLength(buf, p5) {\n    var initial = buf[p5.place++];\n    if (!(initial & 128)) {\n      return initial;\n    }\n    var octetLen = initial & 15;\n    if (octetLen === 0 || octetLen > 4) {\n      return false;\n    }\n    if (buf[p5.place] === 0) {\n      return false;\n    }\n    var val = 0;\n    for (var i5 = 0, off2 = p5.place; i5 < octetLen; i5++, off2++) {\n      val <<= 8;\n      val |= buf[off2];\n      val >>>= 0;\n    }\n    if (val <= 127) {\n      return false;\n    }\n    p5.place = off2;\n    return val;\n  }\n  function rmPadding(buf) {\n    var i5 = 0;\n    var len = buf.length - 1;\n    while (!buf[i5] && !(buf[i5 + 1] & 128) && i5 < len) {\n      i5++;\n    }\n    if (i5 === 0) {\n      return buf;\n    }\n    return buf.slice(i5);\n  }\n  Signature.prototype._importDER = function _importDER(data, enc) {\n    data = utils.toArray(data, enc);\n    var p5 = new Position();\n    if (data[p5.place++] !== 48) {\n      return false;\n    }\n    var len = getLength(data, p5);\n    if (len === false) {\n      return false;\n    }\n    if (len + p5.place !== data.length) {\n      return false;\n    }\n    if (data[p5.place++] !== 2) {\n      return false;\n    }\n    var rlen = getLength(data, p5);\n    if (rlen === false) {\n      return false;\n    }\n    if ((data[p5.place] & 128) !== 0) {\n      return false;\n    }\n    var r5 = data.slice(p5.place, rlen + p5.place);\n    p5.place += rlen;\n    if (data[p5.place++] !== 2) {\n      return false;\n    }\n    var slen = getLength(data, p5);\n    if (slen === false) {\n      return false;\n    }\n    if (data.length !== slen + p5.place) {\n      return false;\n    }\n    if ((data[p5.place] & 128) !== 0) {\n      return false;\n    }\n    var s5 = data.slice(p5.place, slen + p5.place);\n    if (r5[0] === 0) {\n      if (r5[1] & 128) {\n        r5 = r5.slice(1);\n      } else {\n        return false;\n      }\n    }\n    if (s5[0] === 0) {\n      if (s5[1] & 128) {\n        s5 = s5.slice(1);\n      } else {\n        return false;\n      }\n    }\n    this.r = new BN(r5);\n    this.s = new BN(s5);\n    this.recoveryParam = null;\n    return true;\n  };\n  function constructLength(arr, len) {\n    if (len < 128) {\n      arr.push(len);\n      return;\n    }\n    var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n    arr.push(octets | 128);\n    while (--octets) {\n      arr.push(len >>> (octets << 3) & 255);\n    }\n    arr.push(len);\n  }\n  Signature.prototype.toDER = function toDER(enc) {\n    var r5 = this.r.toArray();\n    var s5 = this.s.toArray();\n    if (r5[0] & 128) r5 = [0].concat(r5);\n    if (s5[0] & 128) s5 = [0].concat(s5);\n    r5 = rmPadding(r5);\n    s5 = rmPadding(s5);\n    while (!s5[0] && !(s5[1] & 128)) {\n      s5 = s5.slice(1);\n    }\n    var arr = [2];\n    constructLength(arr, r5.length);\n    arr = arr.concat(r5);\n    arr.push(2);\n    constructLength(arr, s5.length);\n    var backHalf = arr.concat(s5);\n    var res = [48];\n    constructLength(res, backHalf.length);\n    res = res.concat(backHalf);\n    return utils.encode(res, enc);\n  };\n  return exports$D;\n}\nvar exports$C = {};\nvar _dewExec$B = false;\nfunction dew$B() {\n  if (_dewExec$B) return exports$C;\n  _dewExec$B = true;\n  var BN = dew$_();\n  var HmacDRBG = dew$E();\n  var utils = dew$Y();\n  var curves = dew$F();\n  var rand = dew$1i();\n  var assert2 = utils.assert;\n  var KeyPair = dew$D();\n  var Signature = dew$C();\n  function EC(options) {\n    if (!(this instanceof EC)) return new EC(options);\n    if (typeof options === \"string\") {\n      assert2(Object.prototype.hasOwnProperty.call(curves, options), \"Unknown curve \" + options);\n      options = curves[options];\n    }\n    if (options instanceof curves.PresetCurve) options = {\n      curve: options\n    };\n    this.curve = options.curve.curve;\n    this.n = this.curve.n;\n    this.nh = this.n.ushrn(1);\n    this.g = this.curve.g;\n    this.g = options.curve.g;\n    this.g.precompute(options.curve.n.bitLength() + 1);\n    this.hash = options.hash || options.curve.hash;\n  }\n  exports$C = EC;\n  EC.prototype.keyPair = function keyPair(options) {\n    return new KeyPair(this, options);\n  };\n  EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n    return KeyPair.fromPrivate(this, priv, enc);\n  };\n  EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n    return KeyPair.fromPublic(this, pub, enc);\n  };\n  EC.prototype.genKeyPair = function genKeyPair(options) {\n    if (!options) options = {};\n    var drbg = new HmacDRBG({\n      hash: this.hash,\n      pers: options.pers,\n      persEnc: options.persEnc || \"utf8\",\n      entropy: options.entropy || rand(this.hash.hmacStrength),\n      entropyEnc: options.entropy && options.entropyEnc || \"utf8\",\n      nonce: this.n.toArray()\n    });\n    var bytes = this.n.byteLength();\n    var ns2 = this.n.sub(new BN(2));\n    for (; ; ) {\n      var priv = new BN(drbg.generate(bytes));\n      if (priv.cmp(ns2) > 0) continue;\n      priv.iaddn(1);\n      return this.keyFromPrivate(priv);\n    }\n  };\n  EC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n    var delta = msg.byteLength() * 8 - this.n.bitLength();\n    if (delta > 0) msg = msg.ushrn(delta);\n    if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);\n    else return msg;\n  };\n  EC.prototype.sign = function sign(msg, key, enc, options) {\n    if (typeof enc === \"object\") {\n      options = enc;\n      enc = null;\n    }\n    if (!options) options = {};\n    key = this.keyFromPrivate(key, enc);\n    msg = this._truncateToN(new BN(msg, 16));\n    var bytes = this.n.byteLength();\n    var bkey = key.getPrivate().toArray(\"be\", bytes);\n    var nonce = msg.toArray(\"be\", bytes);\n    var drbg = new HmacDRBG({\n      hash: this.hash,\n      entropy: bkey,\n      nonce,\n      pers: options.pers,\n      persEnc: options.persEnc || \"utf8\"\n    });\n    var ns1 = this.n.sub(new BN(1));\n    for (var iter = 0; ; iter++) {\n      var k4 = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n      k4 = this._truncateToN(k4, true);\n      if (k4.cmpn(1) <= 0 || k4.cmp(ns1) >= 0) continue;\n      var kp = this.g.mul(k4);\n      if (kp.isInfinity()) continue;\n      var kpX = kp.getX();\n      var r5 = kpX.umod(this.n);\n      if (r5.cmpn(0) === 0) continue;\n      var s5 = k4.invm(this.n).mul(r5.mul(key.getPrivate()).iadd(msg));\n      s5 = s5.umod(this.n);\n      if (s5.cmpn(0) === 0) continue;\n      var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r5) !== 0 ? 2 : 0);\n      if (options.canonical && s5.cmp(this.nh) > 0) {\n        s5 = this.n.sub(s5);\n        recoveryParam ^= 1;\n      }\n      return new Signature({\n        r: r5,\n        s: s5,\n        recoveryParam\n      });\n    }\n  };\n  EC.prototype.verify = function verify(msg, signature, key, enc) {\n    msg = this._truncateToN(new BN(msg, 16));\n    key = this.keyFromPublic(key, enc);\n    signature = new Signature(signature, \"hex\");\n    var r5 = signature.r;\n    var s5 = signature.s;\n    if (r5.cmpn(1) < 0 || r5.cmp(this.n) >= 0) return false;\n    if (s5.cmpn(1) < 0 || s5.cmp(this.n) >= 0) return false;\n    var sinv = s5.invm(this.n);\n    var u1 = sinv.mul(msg).umod(this.n);\n    var u22 = sinv.mul(r5).umod(this.n);\n    var p5;\n    if (!this.curve._maxwellTrick) {\n      p5 = this.g.mulAdd(u1, key.getPublic(), u22);\n      if (p5.isInfinity()) return false;\n      return p5.getX().umod(this.n).cmp(r5) === 0;\n    }\n    p5 = this.g.jmulAdd(u1, key.getPublic(), u22);\n    if (p5.isInfinity()) return false;\n    return p5.eqXToP(r5);\n  };\n  EC.prototype.recoverPubKey = function(msg, signature, j4, enc) {\n    assert2((3 & j4) === j4, \"The recovery param is more than two bits\");\n    signature = new Signature(signature, enc);\n    var n5 = this.n;\n    var e7 = new BN(msg);\n    var r5 = signature.r;\n    var s5 = signature.s;\n    var isYOdd = j4 & 1;\n    var isSecondKey = j4 >> 1;\n    if (r5.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error(\"Unable to find sencond key candinate\");\n    if (isSecondKey) r5 = this.curve.pointFromX(r5.add(this.curve.n), isYOdd);\n    else r5 = this.curve.pointFromX(r5, isYOdd);\n    var rInv = signature.r.invm(n5);\n    var s1 = n5.sub(e7).mul(rInv).umod(n5);\n    var s22 = s5.mul(rInv).umod(n5);\n    return this.g.mulAdd(s1, r5, s22);\n  };\n  EC.prototype.getKeyRecoveryParam = function(e7, signature, Q3, enc) {\n    signature = new Signature(signature, enc);\n    if (signature.recoveryParam !== null) return signature.recoveryParam;\n    for (var i5 = 0; i5 < 4; i5++) {\n      var Qprime;\n      try {\n        Qprime = this.recoverPubKey(e7, signature, i5);\n      } catch (e8) {\n        continue;\n      }\n      if (Qprime.eq(Q3)) return i5;\n    }\n    throw new Error(\"Unable to find valid recovery factor\");\n  };\n  return exports$C;\n}\nvar exports$B = {};\nvar _dewExec$A = false;\nfunction dew$A() {\n  if (_dewExec$A) return exports$B;\n  _dewExec$A = true;\n  var utils = dew$Y();\n  var assert2 = utils.assert;\n  var parseBytes = utils.parseBytes;\n  var cachedProperty = utils.cachedProperty;\n  function KeyPair(eddsa, params) {\n    this.eddsa = eddsa;\n    this._secret = parseBytes(params.secret);\n    if (eddsa.isPoint(params.pub)) this._pub = params.pub;\n    else this._pubBytes = parseBytes(params.pub);\n  }\n  KeyPair.fromPublic = function fromPublic(eddsa, pub) {\n    if (pub instanceof KeyPair) return pub;\n    return new KeyPair(eddsa, {\n      pub\n    });\n  };\n  KeyPair.fromSecret = function fromSecret(eddsa, secret) {\n    if (secret instanceof KeyPair) return secret;\n    return new KeyPair(eddsa, {\n      secret\n    });\n  };\n  KeyPair.prototype.secret = function secret() {\n    return this._secret;\n  };\n  cachedProperty(KeyPair, \"pubBytes\", function pubBytes() {\n    return this.eddsa.encodePoint(this.pub());\n  });\n  cachedProperty(KeyPair, \"pub\", function pub() {\n    if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n    return this.eddsa.g.mul(this.priv());\n  });\n  cachedProperty(KeyPair, \"privBytes\", function privBytes() {\n    var eddsa = this.eddsa;\n    var hash = this.hash();\n    var lastIx = eddsa.encodingLength - 1;\n    var a5 = hash.slice(0, eddsa.encodingLength);\n    a5[0] &= 248;\n    a5[lastIx] &= 127;\n    a5[lastIx] |= 64;\n    return a5;\n  });\n  cachedProperty(KeyPair, \"priv\", function priv() {\n    return this.eddsa.decodeInt(this.privBytes());\n  });\n  cachedProperty(KeyPair, \"hash\", function hash() {\n    return this.eddsa.hash().update(this.secret()).digest();\n  });\n  cachedProperty(KeyPair, \"messagePrefix\", function messagePrefix() {\n    return this.hash().slice(this.eddsa.encodingLength);\n  });\n  KeyPair.prototype.sign = function sign(message) {\n    assert2(this._secret, \"KeyPair can only verify\");\n    return this.eddsa.sign(message, this);\n  };\n  KeyPair.prototype.verify = function verify(message, sig) {\n    return this.eddsa.verify(message, sig, this);\n  };\n  KeyPair.prototype.getSecret = function getSecret(enc) {\n    assert2(this._secret, \"KeyPair is public only\");\n    return utils.encode(this.secret(), enc);\n  };\n  KeyPair.prototype.getPublic = function getPublic(enc) {\n    return utils.encode(this.pubBytes(), enc);\n  };\n  exports$B = KeyPair;\n  return exports$B;\n}\nvar exports$A = {};\nvar _dewExec$z = false;\nfunction dew$z() {\n  if (_dewExec$z) return exports$A;\n  _dewExec$z = true;\n  var BN = dew$_();\n  var utils = dew$Y();\n  var assert2 = utils.assert;\n  var cachedProperty = utils.cachedProperty;\n  var parseBytes = utils.parseBytes;\n  function Signature(eddsa, sig) {\n    this.eddsa = eddsa;\n    if (typeof sig !== \"object\") sig = parseBytes(sig);\n    if (Array.isArray(sig)) {\n      assert2(sig.length === eddsa.encodingLength * 2, \"Signature has invalid size\");\n      sig = {\n        R: sig.slice(0, eddsa.encodingLength),\n        S: sig.slice(eddsa.encodingLength)\n      };\n    }\n    assert2(sig.R && sig.S, \"Signature without R or S\");\n    if (eddsa.isPoint(sig.R)) this._R = sig.R;\n    if (sig.S instanceof BN) this._S = sig.S;\n    this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n    this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n  }\n  cachedProperty(Signature, \"S\", function S4() {\n    return this.eddsa.decodeInt(this.Sencoded());\n  });\n  cachedProperty(Signature, \"R\", function R4() {\n    return this.eddsa.decodePoint(this.Rencoded());\n  });\n  cachedProperty(Signature, \"Rencoded\", function Rencoded() {\n    return this.eddsa.encodePoint(this.R());\n  });\n  cachedProperty(Signature, \"Sencoded\", function Sencoded() {\n    return this.eddsa.encodeInt(this.S());\n  });\n  Signature.prototype.toBytes = function toBytes() {\n    return this.Rencoded().concat(this.Sencoded());\n  };\n  Signature.prototype.toHex = function toHex() {\n    return utils.encode(this.toBytes(), \"hex\").toUpperCase();\n  };\n  exports$A = Signature;\n  return exports$A;\n}\nvar exports$z = {};\nvar _dewExec$y = false;\nfunction dew$y() {\n  if (_dewExec$y) return exports$z;\n  _dewExec$y = true;\n  var hash = dew$H();\n  var curves = dew$F();\n  var utils = dew$Y();\n  var assert2 = utils.assert;\n  var parseBytes = utils.parseBytes;\n  var KeyPair = dew$A();\n  var Signature = dew$z();\n  function EDDSA(curve) {\n    assert2(curve === \"ed25519\", \"only tested with ed25519 so far\");\n    if (!(this instanceof EDDSA)) return new EDDSA(curve);\n    curve = curves[curve].curve;\n    this.curve = curve;\n    this.g = curve.g;\n    this.g.precompute(curve.n.bitLength() + 1);\n    this.pointClass = curve.point().constructor;\n    this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n    this.hash = hash.sha512;\n  }\n  exports$z = EDDSA;\n  EDDSA.prototype.sign = function sign(message, secret) {\n    message = parseBytes(message);\n    var key = this.keyFromSecret(secret);\n    var r5 = this.hashInt(key.messagePrefix(), message);\n    var R4 = this.g.mul(r5);\n    var Rencoded = this.encodePoint(R4);\n    var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());\n    var S4 = r5.add(s_).umod(this.curve.n);\n    return this.makeSignature({\n      R: R4,\n      S: S4,\n      Rencoded\n    });\n  };\n  EDDSA.prototype.verify = function verify(message, sig, pub) {\n    message = parseBytes(message);\n    sig = this.makeSignature(sig);\n    if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n      return false;\n    }\n    var key = this.keyFromPublic(pub);\n    var h5 = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n    var SG = this.g.mul(sig.S());\n    var RplusAh = sig.R().add(key.pub().mul(h5));\n    return RplusAh.eq(SG);\n  };\n  EDDSA.prototype.hashInt = function hashInt() {\n    var hash2 = this.hash();\n    for (var i5 = 0; i5 < arguments.length; i5++) hash2.update(arguments[i5]);\n    return utils.intFromLE(hash2.digest()).umod(this.curve.n);\n  };\n  EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n    return KeyPair.fromPublic(this, pub);\n  };\n  EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n    return KeyPair.fromSecret(this, secret);\n  };\n  EDDSA.prototype.makeSignature = function makeSignature(sig) {\n    if (sig instanceof Signature) return sig;\n    return new Signature(this, sig);\n  };\n  EDDSA.prototype.encodePoint = function encodePoint(point) {\n    var enc = point.getY().toArray(\"le\", this.encodingLength);\n    enc[this.encodingLength - 1] |= point.getX().isOdd() ? 128 : 0;\n    return enc;\n  };\n  EDDSA.prototype.decodePoint = function decodePoint(bytes) {\n    bytes = utils.parseBytes(bytes);\n    var lastIx = bytes.length - 1;\n    var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~128);\n    var xIsOdd = (bytes[lastIx] & 128) !== 0;\n    var y5 = utils.intFromLE(normed);\n    return this.curve.pointFromY(y5, xIsOdd);\n  };\n  EDDSA.prototype.encodeInt = function encodeInt(num) {\n    return num.toArray(\"le\", this.encodingLength);\n  };\n  EDDSA.prototype.decodeInt = function decodeInt(bytes) {\n    return utils.intFromLE(bytes);\n  };\n  EDDSA.prototype.isPoint = function isPoint(val) {\n    return val instanceof this.pointClass;\n  };\n  return exports$z;\n}\nvar exports$y = {};\nvar _dewExec$x = false;\nfunction dew$x() {\n  if (_dewExec$x) return exports$y;\n  _dewExec$x = true;\n  var elliptic = exports$y;\n  elliptic.version = _package.version;\n  elliptic.utils = dew$Y();\n  elliptic.rand = dew$1i();\n  elliptic.curve = dew$T();\n  elliptic.curves = dew$F();\n  elliptic.ec = dew$B();\n  elliptic.eddsa = dew$y();\n  return exports$y;\n}\nvar exports$x = {};\nvar _dewExec$w = false;\nvar module$2 = {\n  exports: exports$x\n};\nvar _global$c = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$w() {\n  if (_dewExec$w) return module$2.exports;\n  _dewExec$w = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$c).negative = 0;\n      (this || _global$c).words = null;\n      (this || _global$c).length = 0;\n      (this || _global$c).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = dew().Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$c).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$c).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$c).words = [number & 67108863];\n        (this || _global$c).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$c).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$c).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$c).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$c).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$c).words = [0];\n        (this || _global$c).length = 1;\n        return this || _global$c;\n      }\n      (this || _global$c).length = Math.ceil(number.length / 3);\n      (this || _global$c).words = new Array((this || _global$c).length);\n      for (var i5 = 0; i5 < (this || _global$c).length; i5++) {\n        (this || _global$c).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$c).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$c).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$c).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$c).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$c).length = Math.ceil((number.length - start) / 6);\n      (this || _global$c).words = new Array((this || _global$c).length);\n      for (var i5 = 0; i5 < (this || _global$c).length; i5++) {\n        (this || _global$c).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$c).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$c).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$c).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$c).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$c).words = [0];\n      (this || _global$c).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$c).words[0] + word < 67108864) {\n          (this || _global$c).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$c).words[0] + word < 67108864) {\n          (this || _global$c).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$c).length);\n      for (var i5 = 0; i5 < (this || _global$c).length; i5++) {\n        dest.words[i5] = (this || _global$c).words[i5];\n      }\n      dest.length = (this || _global$c).length;\n      dest.negative = (this || _global$c).negative;\n      dest.red = (this || _global$c).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$c).length < size) {\n        (this || _global$c).words[(this || _global$c).length++] = 0;\n      }\n      return this || _global$c;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$c).length > 1 && (this || _global$c).words[(this || _global$c).length - 1] === 0) {\n        (this || _global$c).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$c).length === 1 && (this || _global$c).words[0] === 0) {\n        (this || _global$c).negative = 0;\n      }\n      return this || _global$c;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$c).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$c).length; i5++) {\n          var w4 = (this || _global$c).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$c).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$c).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$c).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$c).words[0];\n      if ((this || _global$c).length === 2) {\n        ret += (this || _global$c).words[1] * 67108864;\n      } else if ((this || _global$c).length === 3 && (this || _global$c).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$c).words[1] * 67108864;\n      } else if ((this || _global$c).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$c).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$c).words[(this || _global$c).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$c).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$c).length; i5++) {\n        var b4 = this._zeroBits((this || _global$c).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$c).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$c).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$c).negative ^= 1;\n      }\n      return this || _global$c;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$c).length < num.length) {\n        (this || _global$c).words[(this || _global$c).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$c).words[i5] = (this || _global$c).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$c).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$c).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$c);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$c).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$c);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$c).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$c;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$c).words[i5] = (this || _global$c).words[i5] & num.words[i5];\n      }\n      (this || _global$c).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$c).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$c).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$c);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$c).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$c);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$c).length > num.length) {\n        a5 = this || _global$c;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$c;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$c).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$c) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$c).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$c).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$c).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$c).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$c);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$c).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$c);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$c).words[i5] = ~(this || _global$c).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$c).words[i5] = ~(this || _global$c).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$c).words[off2] = (this || _global$c).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$c).words[off2] = (this || _global$c).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$c).negative !== 0 && num.negative === 0) {\n        (this || _global$c).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$c).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$c).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$c).length > num.length) {\n        a5 = this || _global$c;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$c;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$c).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$c).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$c).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$c).words[(this || _global$c).length] = carry;\n        (this || _global$c).length++;\n      } else if (a5 !== (this || _global$c)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$c).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$c;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$c).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$c).negative !== 0) {\n        (this || _global$c).negative = 0;\n        res = num.sub(this || _global$c);\n        (this || _global$c).negative = 1;\n        return res;\n      }\n      if ((this || _global$c).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$c);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$c).negative !== 0) {\n        (this || _global$c).negative = 0;\n        this.iadd(num);\n        (this || _global$c).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$c).negative = 0;\n        (this || _global$c).length = 1;\n        (this || _global$c).words[0] = 0;\n        return this || _global$c;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$c;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$c;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$c).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$c).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$c)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$c).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$c).length = Math.max((this || _global$c).length, i5);\n      if (a5 !== (this || _global$c)) {\n        (this || _global$c).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$c).length + num.length;\n      if ((this || _global$c).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$c, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$c, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$c, num, out);\n      } else {\n        res = jumboMulTo(this || _global$c, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$c).x = x4;\n      (this || _global$c).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$c).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$c).length + num.length);\n      return jumboMulTo(this || _global$c, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$c);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$c).length; i5++) {\n        var w4 = ((this || _global$c).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$c).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$c).words[i5] = carry;\n        (this || _global$c).length++;\n      }\n      return this || _global$c;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$c);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$c;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$c).length; i5++) {\n          var newCarry = (this || _global$c).words[i5] & carryMask;\n          var c5 = ((this || _global$c).words[i5] | 0) - newCarry << r5;\n          (this || _global$c).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$c).words[i5] = carry;\n          (this || _global$c).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$c).length - 1; i5 >= 0; i5--) {\n          (this || _global$c).words[i5 + s5] = (this || _global$c).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$c).words[i5] = 0;\n        }\n        (this || _global$c).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$c).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$c).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$c).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$c).length > s5) {\n        (this || _global$c).length -= s5;\n        for (i5 = 0; i5 < (this || _global$c).length; i5++) {\n          (this || _global$c).words[i5] = (this || _global$c).words[i5 + s5];\n        }\n      } else {\n        (this || _global$c).words[0] = 0;\n        (this || _global$c).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$c).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$c).words[i5] | 0;\n        (this || _global$c).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$c).length === 0) {\n        (this || _global$c).words[0] = 0;\n        (this || _global$c).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$c).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$c).length <= s5) return false;\n      var w4 = (this || _global$c).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$c).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$c).length <= s5) {\n        return this || _global$c;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$c).length = Math.min(s5, (this || _global$c).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$c).words[(this || _global$c).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$c).negative !== 0) {\n        if ((this || _global$c).length === 1 && ((this || _global$c).words[0] | 0) < num) {\n          (this || _global$c).words[0] = num - ((this || _global$c).words[0] | 0);\n          (this || _global$c).negative = 0;\n          return this || _global$c;\n        }\n        (this || _global$c).negative = 0;\n        this.isubn(num);\n        (this || _global$c).negative = 1;\n        return this || _global$c;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$c).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$c).length && (this || _global$c).words[i5] >= 67108864; i5++) {\n        (this || _global$c).words[i5] -= 67108864;\n        if (i5 === (this || _global$c).length - 1) {\n          (this || _global$c).words[i5 + 1] = 1;\n        } else {\n          (this || _global$c).words[i5 + 1]++;\n        }\n      }\n      (this || _global$c).length = Math.max((this || _global$c).length, i5 + 1);\n      return this || _global$c;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$c).negative !== 0) {\n        (this || _global$c).negative = 0;\n        this.iaddn(num);\n        (this || _global$c).negative = 1;\n        return this || _global$c;\n      }\n      (this || _global$c).words[0] -= num;\n      if ((this || _global$c).length === 1 && (this || _global$c).words[0] < 0) {\n        (this || _global$c).words[0] = -(this || _global$c).words[0];\n        (this || _global$c).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$c).length && (this || _global$c).words[i5] < 0; i5++) {\n          (this || _global$c).words[i5] += 67108864;\n          (this || _global$c).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$c).negative = 0;\n      return this || _global$c;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$c).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$c).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$c).length - shift; i5++) {\n        w4 = ((this || _global$c).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$c).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$c).length; i5++) {\n        w4 = -((this || _global$c).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$c).words[i5] = w4 & 67108863;\n      }\n      (this || _global$c).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$c).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$c).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$c).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$c).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$c).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$c\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$c).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$c).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$c).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$c).words[i5] | 0) + carry * 67108864;\n        (this || _global$c).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$c;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$c;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$c).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$c).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$c).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$c).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$c).words[s5] |= q3;\n        return this || _global$c;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$c).length; i5++) {\n        var w4 = (this || _global$c).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$c).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$c).words[i5] = carry;\n        (this || _global$c).length++;\n      }\n      return this || _global$c;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$c).length === 1 && (this || _global$c).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$c).negative !== 0 && !negative) return -1;\n      if ((this || _global$c).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$c).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$c).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$c).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$c).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$c).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$c).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$c).length > num.length) return 1;\n      if ((this || _global$c).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$c).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$c).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$c).red, \"Already a number in reduction context\");\n      assert2((this || _global$c).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$c)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$c).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$c).red.convertFrom(this || _global$c);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$c).red = ctx;\n      return this || _global$c;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$c).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$c).red, \"redAdd works only with red numbers\");\n      return (this || _global$c).red.add(this || _global$c, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$c).red, \"redIAdd works only with red numbers\");\n      return (this || _global$c).red.iadd(this || _global$c, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$c).red, \"redSub works only with red numbers\");\n      return (this || _global$c).red.sub(this || _global$c, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$c).red, \"redISub works only with red numbers\");\n      return (this || _global$c).red.isub(this || _global$c, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$c).red, \"redShl works only with red numbers\");\n      return (this || _global$c).red.shl(this || _global$c, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$c).red, \"redMul works only with red numbers\");\n      (this || _global$c).red._verify2(this || _global$c, num);\n      return (this || _global$c).red.mul(this || _global$c, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$c).red, \"redMul works only with red numbers\");\n      (this || _global$c).red._verify2(this || _global$c, num);\n      return (this || _global$c).red.imul(this || _global$c, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$c).red, \"redSqr works only with red numbers\");\n      (this || _global$c).red._verify1(this || _global$c);\n      return (this || _global$c).red.sqr(this || _global$c);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$c).red, \"redISqr works only with red numbers\");\n      (this || _global$c).red._verify1(this || _global$c);\n      return (this || _global$c).red.isqr(this || _global$c);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$c).red, \"redSqrt works only with red numbers\");\n      (this || _global$c).red._verify1(this || _global$c);\n      return (this || _global$c).red.sqrt(this || _global$c);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$c).red, \"redInvm works only with red numbers\");\n      (this || _global$c).red._verify1(this || _global$c);\n      return (this || _global$c).red.invm(this || _global$c);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$c).red, \"redNeg works only with red numbers\");\n      (this || _global$c).red._verify1(this || _global$c);\n      return (this || _global$c).red.neg(this || _global$c);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$c).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$c).red._verify1(this || _global$c);\n      return (this || _global$c).red.pow(this || _global$c, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$c).name = name2;\n      (this || _global$c).p = new BN(p5, 16);\n      (this || _global$c).n = (this || _global$c).p.bitLength();\n      (this || _global$c).k = new BN(1).iushln((this || _global$c).n).isub((this || _global$c).p);\n      (this || _global$c).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$c).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$c).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$c).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$c).n);\n      var cmp = rlen < (this || _global$c).n ? -1 : r5.ucmp((this || _global$c).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$c).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$c).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$c).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$c, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$c, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$c, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$c, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$c).m = prime.p;\n        (this || _global$c).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$c).m = m4;\n        (this || _global$c).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$c).prime) return (this || _global$c).prime.ireduce(a5)._forceRed(this || _global$c);\n      return a5.umod((this || _global$c).m)._forceRed(this || _global$c);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$c).m.sub(a5)._forceRed(this || _global$c);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$c).m) >= 0) {\n        res.isub((this || _global$c).m);\n      }\n      return res._forceRed(this || _global$c);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$c).m) >= 0) {\n        res.isub((this || _global$c).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$c).m);\n      }\n      return res._forceRed(this || _global$c);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$c).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$c).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$c).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$c).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$c);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$c).m.subn(1).iushrn(1);\n      var z4 = (this || _global$c).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$c);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$c).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$c);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$c);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$c).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$c, m4);\n      (this || _global$c).shift = (this || _global$c).m.bitLength();\n      if ((this || _global$c).shift % 26 !== 0) {\n        (this || _global$c).shift += 26 - (this || _global$c).shift % 26;\n      }\n      (this || _global$c).r = new BN(1).iushln((this || _global$c).shift);\n      (this || _global$c).r2 = this.imod((this || _global$c).r.sqr());\n      (this || _global$c).rinv = (this || _global$c).r._invmp((this || _global$c).m);\n      (this || _global$c).minv = (this || _global$c).rinv.mul((this || _global$c).r).isubn(1).div((this || _global$c).m);\n      (this || _global$c).minv = (this || _global$c).minv.umod((this || _global$c).r);\n      (this || _global$c).minv = (this || _global$c).r.sub((this || _global$c).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$c).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$c).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$c).shift).mul((this || _global$c).minv).imaskn((this || _global$c).shift).mul((this || _global$c).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$c).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$c).m) >= 0) {\n        res = u5.isub((this || _global$c).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$c).m);\n      }\n      return res._forceRed(this || _global$c);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$c);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$c).shift).mul((this || _global$c).minv).imaskn((this || _global$c).shift).mul((this || _global$c).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$c).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$c).m) >= 0) {\n        res = u5.isub((this || _global$c).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$c).m);\n      }\n      return res._forceRed(this || _global$c);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$c).m).mul((this || _global$c).r2));\n      return res._forceRed(this || _global$c);\n    };\n  })(module$2, exports$x);\n  return module$2.exports;\n}\nvar exports$w = {};\nvar _dewExec$v = false;\nvar _global$b = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$v() {\n  if (_dewExec$v) return exports$w;\n  _dewExec$v = true;\n  var asn1 = dew$i();\n  var inherits = dew3();\n  var api = exports$w;\n  api.define = function define(name2, body) {\n    return new Entity(name2, body);\n  };\n  function Entity(name2, body) {\n    (this || _global$b).name = name2;\n    (this || _global$b).body = body;\n    (this || _global$b).decoders = {};\n    (this || _global$b).encoders = {};\n  }\n  Entity.prototype._createNamed = function createNamed(base) {\n    var named;\n    try {\n      named = exports9.runInThisContext(\"(function \" + (this || _global$b).name + \"(entity) {\\n  this._initNamed(entity);\\n})\");\n    } catch (e7) {\n      named = function(entity) {\n        this._initNamed(entity);\n      };\n    }\n    inherits(named, base);\n    named.prototype._initNamed = function initnamed(entity) {\n      base.call(this || _global$b, entity);\n    };\n    return new named(this || _global$b);\n  };\n  Entity.prototype._getDecoder = function _getDecoder(enc) {\n    enc = enc || \"der\";\n    if (!(this || _global$b).decoders.hasOwnProperty(enc)) (this || _global$b).decoders[enc] = this._createNamed(asn1.decoders[enc]);\n    return (this || _global$b).decoders[enc];\n  };\n  Entity.prototype.decode = function decode(data, enc, options) {\n    return this._getDecoder(enc).decode(data, options);\n  };\n  Entity.prototype._getEncoder = function _getEncoder(enc) {\n    enc = enc || \"der\";\n    if (!(this || _global$b).encoders.hasOwnProperty(enc)) (this || _global$b).encoders[enc] = this._createNamed(asn1.encoders[enc]);\n    return (this || _global$b).encoders[enc];\n  };\n  Entity.prototype.encode = function encode(data, enc, reporter) {\n    return this._getEncoder(enc).encode(data, reporter);\n  };\n  return exports$w;\n}\nvar exports$v = {};\nvar _dewExec$u = false;\nvar _global$a = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$u() {\n  if (_dewExec$u) return exports$v;\n  _dewExec$u = true;\n  var inherits = dew3();\n  function Reporter(options) {\n    (this || _global$a)._reporterState = {\n      obj: null,\n      path: [],\n      options: options || {},\n      errors: []\n    };\n  }\n  exports$v.Reporter = Reporter;\n  Reporter.prototype.isError = function isError(obj) {\n    return obj instanceof ReporterError;\n  };\n  Reporter.prototype.save = function save() {\n    var state = (this || _global$a)._reporterState;\n    return {\n      obj: state.obj,\n      pathLen: state.path.length\n    };\n  };\n  Reporter.prototype.restore = function restore(data) {\n    var state = (this || _global$a)._reporterState;\n    state.obj = data.obj;\n    state.path = state.path.slice(0, data.pathLen);\n  };\n  Reporter.prototype.enterKey = function enterKey(key) {\n    return (this || _global$a)._reporterState.path.push(key);\n  };\n  Reporter.prototype.exitKey = function exitKey(index) {\n    var state = (this || _global$a)._reporterState;\n    state.path = state.path.slice(0, index - 1);\n  };\n  Reporter.prototype.leaveKey = function leaveKey(index, key, value) {\n    var state = (this || _global$a)._reporterState;\n    this.exitKey(index);\n    if (state.obj !== null) state.obj[key] = value;\n  };\n  Reporter.prototype.path = function path() {\n    return (this || _global$a)._reporterState.path.join(\"/\");\n  };\n  Reporter.prototype.enterObject = function enterObject() {\n    var state = (this || _global$a)._reporterState;\n    var prev = state.obj;\n    state.obj = {};\n    return prev;\n  };\n  Reporter.prototype.leaveObject = function leaveObject(prev) {\n    var state = (this || _global$a)._reporterState;\n    var now = state.obj;\n    state.obj = prev;\n    return now;\n  };\n  Reporter.prototype.error = function error(msg) {\n    var err;\n    var state = (this || _global$a)._reporterState;\n    var inherited = msg instanceof ReporterError;\n    if (inherited) {\n      err = msg;\n    } else {\n      err = new ReporterError(state.path.map(function(elem) {\n        return \"[\" + JSON.stringify(elem) + \"]\";\n      }).join(\"\"), msg.message || msg, msg.stack);\n    }\n    if (!state.options.partial) throw err;\n    if (!inherited) state.errors.push(err);\n    return err;\n  };\n  Reporter.prototype.wrapResult = function wrapResult(result) {\n    var state = (this || _global$a)._reporterState;\n    if (!state.options.partial) return result;\n    return {\n      result: this.isError(result) ? null : result,\n      errors: state.errors\n    };\n  };\n  function ReporterError(path, msg) {\n    (this || _global$a).path = path;\n    this.rethrow(msg);\n  }\n  inherits(ReporterError, Error);\n  ReporterError.prototype.rethrow = function rethrow(msg) {\n    (this || _global$a).message = msg + \" at: \" + ((this || _global$a).path || \"(shallow)\");\n    if (Error.captureStackTrace) Error.captureStackTrace(this || _global$a, ReporterError);\n    if (!(this || _global$a).stack) {\n      try {\n        throw new Error((this || _global$a).message);\n      } catch (e7) {\n        (this || _global$a).stack = e7.stack;\n      }\n    }\n    return this || _global$a;\n  };\n  return exports$v;\n}\nvar exports$u = {};\nvar _dewExec$t = false;\nvar _global$9 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$t() {\n  if (_dewExec$t) return exports$u;\n  _dewExec$t = true;\n  var inherits = dew3();\n  var Reporter = dew$r().Reporter;\n  var Buffer = dew().Buffer;\n  function DecoderBuffer(base, options) {\n    Reporter.call(this || _global$9, options);\n    if (!Buffer.isBuffer(base)) {\n      this.error(\"Input not Buffer\");\n      return;\n    }\n    (this || _global$9).base = base;\n    (this || _global$9).offset = 0;\n    (this || _global$9).length = base.length;\n  }\n  inherits(DecoderBuffer, Reporter);\n  exports$u.DecoderBuffer = DecoderBuffer;\n  DecoderBuffer.prototype.save = function save() {\n    return {\n      offset: (this || _global$9).offset,\n      reporter: Reporter.prototype.save.call(this || _global$9)\n    };\n  };\n  DecoderBuffer.prototype.restore = function restore(save) {\n    var res = new DecoderBuffer((this || _global$9).base);\n    res.offset = save.offset;\n    res.length = (this || _global$9).offset;\n    (this || _global$9).offset = save.offset;\n    Reporter.prototype.restore.call(this || _global$9, save.reporter);\n    return res;\n  };\n  DecoderBuffer.prototype.isEmpty = function isEmpty() {\n    return (this || _global$9).offset === (this || _global$9).length;\n  };\n  DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n    if ((this || _global$9).offset + 1 <= (this || _global$9).length) return (this || _global$9).base.readUInt8((this || _global$9).offset++, true);\n    else return this.error(fail || \"DecoderBuffer overrun\");\n  };\n  DecoderBuffer.prototype.skip = function skip(bytes, fail) {\n    if (!((this || _global$9).offset + bytes <= (this || _global$9).length)) return this.error(fail || \"DecoderBuffer overrun\");\n    var res = new DecoderBuffer((this || _global$9).base);\n    res._reporterState = (this || _global$9)._reporterState;\n    res.offset = (this || _global$9).offset;\n    res.length = (this || _global$9).offset + bytes;\n    (this || _global$9).offset += bytes;\n    return res;\n  };\n  DecoderBuffer.prototype.raw = function raw(save) {\n    return (this || _global$9).base.slice(save ? save.offset : (this || _global$9).offset, (this || _global$9).length);\n  };\n  function EncoderBuffer(value, reporter) {\n    if (Array.isArray(value)) {\n      (this || _global$9).length = 0;\n      (this || _global$9).value = value.map(function(item) {\n        if (!(item instanceof EncoderBuffer)) item = new EncoderBuffer(item, reporter);\n        (this || _global$9).length += item.length;\n        return item;\n      }, this || _global$9);\n    } else if (typeof value === \"number\") {\n      if (!(0 <= value && value <= 255)) return reporter.error(\"non-byte EncoderBuffer value\");\n      (this || _global$9).value = value;\n      (this || _global$9).length = 1;\n    } else if (typeof value === \"string\") {\n      (this || _global$9).value = value;\n      (this || _global$9).length = Buffer.byteLength(value);\n    } else if (Buffer.isBuffer(value)) {\n      (this || _global$9).value = value;\n      (this || _global$9).length = value.length;\n    } else {\n      return reporter.error(\"Unsupported type: \" + typeof value);\n    }\n  }\n  exports$u.EncoderBuffer = EncoderBuffer;\n  EncoderBuffer.prototype.join = function join(out, offset) {\n    if (!out) out = new Buffer((this || _global$9).length);\n    if (!offset) offset = 0;\n    if ((this || _global$9).length === 0) return out;\n    if (Array.isArray((this || _global$9).value)) {\n      (this || _global$9).value.forEach(function(item) {\n        item.join(out, offset);\n        offset += item.length;\n      });\n    } else {\n      if (typeof (this || _global$9).value === \"number\") out[offset] = (this || _global$9).value;\n      else if (typeof (this || _global$9).value === \"string\") out.write((this || _global$9).value, offset);\n      else if (Buffer.isBuffer((this || _global$9).value)) (this || _global$9).value.copy(out, offset);\n      offset += (this || _global$9).length;\n    }\n    return out;\n  };\n  return exports$u;\n}\nvar exports$t = {};\nvar _dewExec$s = false;\nvar _global$8 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$s() {\n  if (_dewExec$s) return exports$t;\n  _dewExec$s = true;\n  var Reporter = dew$r().Reporter;\n  var EncoderBuffer = dew$r().EncoderBuffer;\n  var DecoderBuffer = dew$r().DecoderBuffer;\n  var assert2 = dew$3h();\n  var tags = [\"seq\", \"seqof\", \"set\", \"setof\", \"objid\", \"bool\", \"gentime\", \"utctime\", \"null_\", \"enum\", \"int\", \"objDesc\", \"bitstr\", \"bmpstr\", \"charstr\", \"genstr\", \"graphstr\", \"ia5str\", \"iso646str\", \"numstr\", \"octstr\", \"printstr\", \"t61str\", \"unistr\", \"utf8str\", \"videostr\"];\n  var methods = [\"key\", \"obj\", \"use\", \"optional\", \"explicit\", \"implicit\", \"def\", \"choice\", \"any\", \"contains\"].concat(tags);\n  var overrided = [\"_peekTag\", \"_decodeTag\", \"_use\", \"_decodeStr\", \"_decodeObjid\", \"_decodeTime\", \"_decodeNull\", \"_decodeInt\", \"_decodeBool\", \"_decodeList\", \"_encodeComposite\", \"_encodeStr\", \"_encodeObjid\", \"_encodeTime\", \"_encodeNull\", \"_encodeInt\", \"_encodeBool\"];\n  function Node(enc, parent) {\n    var state = {};\n    (this || _global$8)._baseState = state;\n    state.enc = enc;\n    state.parent = parent || null;\n    state.children = null;\n    state.tag = null;\n    state.args = null;\n    state.reverseArgs = null;\n    state.choice = null;\n    state.optional = false;\n    state.any = false;\n    state.obj = false;\n    state.use = null;\n    state.useDecoder = null;\n    state.key = null;\n    state[\"default\"] = null;\n    state.explicit = null;\n    state.implicit = null;\n    state.contains = null;\n    if (!state.parent) {\n      state.children = [];\n      this._wrap();\n    }\n  }\n  exports$t = Node;\n  var stateProps = [\"enc\", \"parent\", \"children\", \"tag\", \"args\", \"reverseArgs\", \"choice\", \"optional\", \"any\", \"obj\", \"use\", \"alteredUse\", \"key\", \"default\", \"explicit\", \"implicit\", \"contains\"];\n  Node.prototype.clone = function clone() {\n    var state = (this || _global$8)._baseState;\n    var cstate = {};\n    stateProps.forEach(function(prop) {\n      cstate[prop] = state[prop];\n    });\n    var res = new (this || _global$8).constructor(cstate.parent);\n    res._baseState = cstate;\n    return res;\n  };\n  Node.prototype._wrap = function wrap() {\n    var state = (this || _global$8)._baseState;\n    methods.forEach(function(method) {\n      (this || _global$8)[method] = function _wrappedMethod() {\n        var clone = new (this || _global$8).constructor(this || _global$8);\n        state.children.push(clone);\n        return clone[method].apply(clone, arguments);\n      };\n    }, this || _global$8);\n  };\n  Node.prototype._init = function init(body) {\n    var state = (this || _global$8)._baseState;\n    assert2(state.parent === null);\n    body.call(this || _global$8);\n    state.children = state.children.filter(function(child) {\n      return child._baseState.parent === (this || _global$8);\n    }, this || _global$8);\n    assert2.equal(state.children.length, 1, \"Root node can have only one child\");\n  };\n  Node.prototype._useArgs = function useArgs(args) {\n    var state = (this || _global$8)._baseState;\n    var children = args.filter(function(arg) {\n      return arg instanceof (this || _global$8).constructor;\n    }, this || _global$8);\n    args = args.filter(function(arg) {\n      return !(arg instanceof (this || _global$8).constructor);\n    }, this || _global$8);\n    if (children.length !== 0) {\n      assert2(state.children === null);\n      state.children = children;\n      children.forEach(function(child) {\n        child._baseState.parent = this || _global$8;\n      }, this || _global$8);\n    }\n    if (args.length !== 0) {\n      assert2(state.args === null);\n      state.args = args;\n      state.reverseArgs = args.map(function(arg) {\n        if (typeof arg !== \"object\" || arg.constructor !== Object) return arg;\n        var res = {};\n        Object.keys(arg).forEach(function(key) {\n          if (key == (key | 0)) key |= 0;\n          var value = arg[key];\n          res[value] = key;\n        });\n        return res;\n      });\n    }\n  };\n  overrided.forEach(function(method) {\n    Node.prototype[method] = function _overrided() {\n      var state = (this || _global$8)._baseState;\n      throw new Error(method + \" not implemented for encoding: \" + state.enc);\n    };\n  });\n  tags.forEach(function(tag) {\n    Node.prototype[tag] = function _tagMethod() {\n      var state = (this || _global$8)._baseState;\n      var args = Array.prototype.slice.call(arguments);\n      assert2(state.tag === null);\n      state.tag = tag;\n      this._useArgs(args);\n      return this || _global$8;\n    };\n  });\n  Node.prototype.use = function use(item) {\n    assert2(item);\n    var state = (this || _global$8)._baseState;\n    assert2(state.use === null);\n    state.use = item;\n    return this || _global$8;\n  };\n  Node.prototype.optional = function optional() {\n    var state = (this || _global$8)._baseState;\n    state.optional = true;\n    return this || _global$8;\n  };\n  Node.prototype.def = function def(val) {\n    var state = (this || _global$8)._baseState;\n    assert2(state[\"default\"] === null);\n    state[\"default\"] = val;\n    state.optional = true;\n    return this || _global$8;\n  };\n  Node.prototype.explicit = function explicit(num) {\n    var state = (this || _global$8)._baseState;\n    assert2(state.explicit === null && state.implicit === null);\n    state.explicit = num;\n    return this || _global$8;\n  };\n  Node.prototype.implicit = function implicit(num) {\n    var state = (this || _global$8)._baseState;\n    assert2(state.explicit === null && state.implicit === null);\n    state.implicit = num;\n    return this || _global$8;\n  };\n  Node.prototype.obj = function obj() {\n    var state = (this || _global$8)._baseState;\n    var args = Array.prototype.slice.call(arguments);\n    state.obj = true;\n    if (args.length !== 0) this._useArgs(args);\n    return this || _global$8;\n  };\n  Node.prototype.key = function key(newKey) {\n    var state = (this || _global$8)._baseState;\n    assert2(state.key === null);\n    state.key = newKey;\n    return this || _global$8;\n  };\n  Node.prototype.any = function any() {\n    var state = (this || _global$8)._baseState;\n    state.any = true;\n    return this || _global$8;\n  };\n  Node.prototype.choice = function choice(obj) {\n    var state = (this || _global$8)._baseState;\n    assert2(state.choice === null);\n    state.choice = obj;\n    this._useArgs(Object.keys(obj).map(function(key) {\n      return obj[key];\n    }));\n    return this || _global$8;\n  };\n  Node.prototype.contains = function contains(item) {\n    var state = (this || _global$8)._baseState;\n    assert2(state.use === null);\n    state.contains = item;\n    return this || _global$8;\n  };\n  Node.prototype._decode = function decode(input, options) {\n    var state = (this || _global$8)._baseState;\n    if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));\n    var result = state[\"default\"];\n    var present = true;\n    var prevKey = null;\n    if (state.key !== null) prevKey = input.enterKey(state.key);\n    if (state.optional) {\n      var tag = null;\n      if (state.explicit !== null) tag = state.explicit;\n      else if (state.implicit !== null) tag = state.implicit;\n      else if (state.tag !== null) tag = state.tag;\n      if (tag === null && !state.any) {\n        var save = input.save();\n        try {\n          if (state.choice === null) this._decodeGeneric(state.tag, input, options);\n          else this._decodeChoice(input, options);\n          present = true;\n        } catch (e7) {\n          present = false;\n        }\n        input.restore(save);\n      } else {\n        present = this._peekTag(input, tag, state.any);\n        if (input.isError(present)) return present;\n      }\n    }\n    var prevObj;\n    if (state.obj && present) prevObj = input.enterObject();\n    if (present) {\n      if (state.explicit !== null) {\n        var explicit = this._decodeTag(input, state.explicit);\n        if (input.isError(explicit)) return explicit;\n        input = explicit;\n      }\n      var start = input.offset;\n      if (state.use === null && state.choice === null) {\n        if (state.any) var save = input.save();\n        var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);\n        if (input.isError(body)) return body;\n        if (state.any) result = input.raw(save);\n        else input = body;\n      }\n      if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, \"tagged\");\n      if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, \"content\");\n      if (state.any) result = result;\n      else if (state.choice === null) result = this._decodeGeneric(state.tag, input, options);\n      else result = this._decodeChoice(input, options);\n      if (input.isError(result)) return result;\n      if (!state.any && state.choice === null && state.children !== null) {\n        state.children.forEach(function decodeChildren(child) {\n          child._decode(input, options);\n        });\n      }\n      if (state.contains && (state.tag === \"octstr\" || state.tag === \"bitstr\")) {\n        var data = new DecoderBuffer(result);\n        result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);\n      }\n    }\n    if (state.obj && present) result = input.leaveObject(prevObj);\n    if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);\n    else if (prevKey !== null) input.exitKey(prevKey);\n    return result;\n  };\n  Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n    var state = (this || _global$8)._baseState;\n    if (tag === \"seq\" || tag === \"set\") return null;\n    if (tag === \"seqof\" || tag === \"setof\") return this._decodeList(input, tag, state.args[0], options);\n    else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);\n    else if (tag === \"objid\" && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);\n    else if (tag === \"objid\") return this._decodeObjid(input, null, null, options);\n    else if (tag === \"gentime\" || tag === \"utctime\") return this._decodeTime(input, tag, options);\n    else if (tag === \"null_\") return this._decodeNull(input, options);\n    else if (tag === \"bool\") return this._decodeBool(input, options);\n    else if (tag === \"objDesc\") return this._decodeStr(input, tag, options);\n    else if (tag === \"int\" || tag === \"enum\") return this._decodeInt(input, state.args && state.args[0], options);\n    if (state.use !== null) {\n      return this._getUse(state.use, input._reporterState.obj)._decode(input, options);\n    } else {\n      return input.error(\"unknown tag: \" + tag);\n    }\n  };\n  Node.prototype._getUse = function _getUse(entity, obj) {\n    var state = (this || _global$8)._baseState;\n    state.useDecoder = this._use(entity, obj);\n    assert2(state.useDecoder._baseState.parent === null);\n    state.useDecoder = state.useDecoder._baseState.children[0];\n    if (state.implicit !== state.useDecoder._baseState.implicit) {\n      state.useDecoder = state.useDecoder.clone();\n      state.useDecoder._baseState.implicit = state.implicit;\n    }\n    return state.useDecoder;\n  };\n  Node.prototype._decodeChoice = function decodeChoice(input, options) {\n    var state = (this || _global$8)._baseState;\n    var result = null;\n    var match = false;\n    Object.keys(state.choice).some(function(key) {\n      var save = input.save();\n      var node = state.choice[key];\n      try {\n        var value = node._decode(input, options);\n        if (input.isError(value)) return false;\n        result = {\n          type: key,\n          value\n        };\n        match = true;\n      } catch (e7) {\n        input.restore(save);\n        return false;\n      }\n      return true;\n    }, this || _global$8);\n    if (!match) return input.error(\"Choice not matched\");\n    return result;\n  };\n  Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n    return new EncoderBuffer(data, (this || _global$8).reporter);\n  };\n  Node.prototype._encode = function encode(data, reporter, parent) {\n    var state = (this || _global$8)._baseState;\n    if (state[\"default\"] !== null && state[\"default\"] === data) return;\n    var result = this._encodeValue(data, reporter, parent);\n    if (result === void 0) return;\n    if (this._skipDefault(result, reporter, parent)) return;\n    return result;\n  };\n  Node.prototype._encodeValue = function encode(data, reporter, parent) {\n    var state = (this || _global$8)._baseState;\n    if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter());\n    var result = null;\n    (this || _global$8).reporter = reporter;\n    if (state.optional && data === void 0) {\n      if (state[\"default\"] !== null) data = state[\"default\"];\n      else return;\n    }\n    var content = null;\n    var primitive = false;\n    if (state.any) {\n      result = this._createEncoderBuffer(data);\n    } else if (state.choice) {\n      result = this._encodeChoice(data, reporter);\n    } else if (state.contains) {\n      content = this._getUse(state.contains, parent)._encode(data, reporter);\n      primitive = true;\n    } else if (state.children) {\n      content = state.children.map(function(child2) {\n        if (child2._baseState.tag === \"null_\") return child2._encode(null, reporter, data);\n        if (child2._baseState.key === null) return reporter.error(\"Child should have a key\");\n        var prevKey = reporter.enterKey(child2._baseState.key);\n        if (typeof data !== \"object\") return reporter.error(\"Child expected, but input is not object\");\n        var res = child2._encode(data[child2._baseState.key], reporter, data);\n        reporter.leaveKey(prevKey);\n        return res;\n      }, this || _global$8).filter(function(child2) {\n        return child2;\n      });\n      content = this._createEncoderBuffer(content);\n    } else {\n      if (state.tag === \"seqof\" || state.tag === \"setof\") {\n        if (!(state.args && state.args.length === 1)) return reporter.error(\"Too many args for : \" + state.tag);\n        if (!Array.isArray(data)) return reporter.error(\"seqof/setof, but data is not Array\");\n        var child = this.clone();\n        child._baseState.implicit = null;\n        content = this._createEncoderBuffer(data.map(function(item) {\n          var state2 = (this || _global$8)._baseState;\n          return this._getUse(state2.args[0], data)._encode(item, reporter);\n        }, child));\n      } else if (state.use !== null) {\n        result = this._getUse(state.use, parent)._encode(data, reporter);\n      } else {\n        content = this._encodePrimitive(state.tag, data);\n        primitive = true;\n      }\n    }\n    var result;\n    if (!state.any && state.choice === null) {\n      var tag = state.implicit !== null ? state.implicit : state.tag;\n      var cls = state.implicit === null ? \"universal\" : \"context\";\n      if (tag === null) {\n        if (state.use === null) reporter.error(\"Tag could be omitted only for .use()\");\n      } else {\n        if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);\n      }\n    }\n    if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, \"context\", result);\n    return result;\n  };\n  Node.prototype._encodeChoice = function encodeChoice(data, reporter) {\n    var state = (this || _global$8)._baseState;\n    var node = state.choice[data.type];\n    if (!node) {\n      assert2(false, data.type + \" not found in \" + JSON.stringify(Object.keys(state.choice)));\n    }\n    return node._encode(data.value, reporter);\n  };\n  Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n    var state = (this || _global$8)._baseState;\n    if (/str$/.test(tag)) return this._encodeStr(data, tag);\n    else if (tag === \"objid\" && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n    else if (tag === \"objid\") return this._encodeObjid(data, null, null);\n    else if (tag === \"gentime\" || tag === \"utctime\") return this._encodeTime(data, tag);\n    else if (tag === \"null_\") return this._encodeNull();\n    else if (tag === \"int\" || tag === \"enum\") return this._encodeInt(data, state.args && state.reverseArgs[0]);\n    else if (tag === \"bool\") return this._encodeBool(data);\n    else if (tag === \"objDesc\") return this._encodeStr(data, tag);\n    else throw new Error(\"Unsupported tag: \" + tag);\n  };\n  Node.prototype._isNumstr = function isNumstr(str) {\n    return /^[0-9 ]*$/.test(str);\n  };\n  Node.prototype._isPrintstr = function isPrintstr(str) {\n    return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n  };\n  return exports$t;\n}\nvar exports$s = {};\nvar _dewExec$r = false;\nfunction dew$r() {\n  if (_dewExec$r) return exports$s;\n  _dewExec$r = true;\n  var base = exports$s;\n  base.Reporter = dew$u().Reporter;\n  base.DecoderBuffer = dew$t().DecoderBuffer;\n  base.EncoderBuffer = dew$t().EncoderBuffer;\n  base.Node = dew$s();\n  return exports$s;\n}\nvar exports$r = {};\nvar _dewExec$q = false;\nfunction dew$q() {\n  if (_dewExec$q) return exports$r;\n  _dewExec$q = true;\n  var constants2 = dew$p();\n  exports$r.tagClass = {\n    0: \"universal\",\n    1: \"application\",\n    2: \"context\",\n    3: \"private\"\n  };\n  exports$r.tagClassByName = constants2._reverse(exports$r.tagClass);\n  exports$r.tag = {\n    0: \"end\",\n    1: \"bool\",\n    2: \"int\",\n    3: \"bitstr\",\n    4: \"octstr\",\n    5: \"null_\",\n    6: \"objid\",\n    7: \"objDesc\",\n    8: \"external\",\n    9: \"real\",\n    10: \"enum\",\n    11: \"embed\",\n    12: \"utf8str\",\n    13: \"relativeOid\",\n    16: \"seq\",\n    17: \"set\",\n    18: \"numstr\",\n    19: \"printstr\",\n    20: \"t61str\",\n    21: \"videostr\",\n    22: \"ia5str\",\n    23: \"utctime\",\n    24: \"gentime\",\n    25: \"graphstr\",\n    26: \"iso646str\",\n    27: \"genstr\",\n    28: \"unistr\",\n    29: \"charstr\",\n    30: \"bmpstr\"\n  };\n  exports$r.tagByName = constants2._reverse(exports$r.tag);\n  return exports$r;\n}\nvar exports$q = {};\nvar _dewExec$p = false;\nfunction dew$p() {\n  if (_dewExec$p) return exports$q;\n  _dewExec$p = true;\n  var constants2 = exports$q;\n  constants2._reverse = function reverse(map) {\n    var res = {};\n    Object.keys(map).forEach(function(key) {\n      if ((key | 0) == key) key = key | 0;\n      var value = map[key];\n      res[value] = key;\n    });\n    return res;\n  };\n  constants2.der = dew$q();\n  return exports$q;\n}\nvar exports$p = {};\nvar _dewExec$o = false;\nvar _global$7 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$o() {\n  if (_dewExec$o) return exports$p;\n  _dewExec$o = true;\n  var inherits = dew3();\n  var asn1 = dew$i();\n  var base = asn1.base;\n  var bignum = asn1.bignum;\n  var der = asn1.constants.der;\n  function DERDecoder(entity) {\n    (this || _global$7).enc = \"der\";\n    (this || _global$7).name = entity.name;\n    (this || _global$7).entity = entity;\n    (this || _global$7).tree = new DERNode();\n    (this || _global$7).tree._init(entity.body);\n  }\n  exports$p = DERDecoder;\n  DERDecoder.prototype.decode = function decode(data, options) {\n    if (!(data instanceof base.DecoderBuffer)) data = new base.DecoderBuffer(data, options);\n    return (this || _global$7).tree._decode(data, options);\n  };\n  function DERNode(parent) {\n    base.Node.call(this || _global$7, \"der\", parent);\n  }\n  inherits(DERNode, base.Node);\n  DERNode.prototype._peekTag = function peekTag(buffer2, tag, any) {\n    if (buffer2.isEmpty()) return false;\n    var state = buffer2.save();\n    var decodedTag = derDecodeTag(buffer2, 'Failed to peek tag: \"' + tag + '\"');\n    if (buffer2.isError(decodedTag)) return decodedTag;\n    buffer2.restore(state);\n    return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + \"of\" === tag || any;\n  };\n  DERNode.prototype._decodeTag = function decodeTag(buffer2, tag, any) {\n    var decodedTag = derDecodeTag(buffer2, 'Failed to decode tag of \"' + tag + '\"');\n    if (buffer2.isError(decodedTag)) return decodedTag;\n    var len = derDecodeLen(buffer2, decodedTag.primitive, 'Failed to get length of \"' + tag + '\"');\n    if (buffer2.isError(len)) return len;\n    if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + \"of\" !== tag) {\n      return buffer2.error('Failed to match tag: \"' + tag + '\"');\n    }\n    if (decodedTag.primitive || len !== null) return buffer2.skip(len, 'Failed to match body of: \"' + tag + '\"');\n    var state = buffer2.save();\n    var res = this._skipUntilEnd(buffer2, 'Failed to skip indefinite length body: \"' + (this || _global$7).tag + '\"');\n    if (buffer2.isError(res)) return res;\n    len = buffer2.offset - state.offset;\n    buffer2.restore(state);\n    return buffer2.skip(len, 'Failed to match body of: \"' + tag + '\"');\n  };\n  DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer2, fail) {\n    while (true) {\n      var tag = derDecodeTag(buffer2, fail);\n      if (buffer2.isError(tag)) return tag;\n      var len = derDecodeLen(buffer2, tag.primitive, fail);\n      if (buffer2.isError(len)) return len;\n      var res;\n      if (tag.primitive || len !== null) res = buffer2.skip(len);\n      else res = this._skipUntilEnd(buffer2, fail);\n      if (buffer2.isError(res)) return res;\n      if (tag.tagStr === \"end\") break;\n    }\n  };\n  DERNode.prototype._decodeList = function decodeList(buffer2, tag, decoder, options) {\n    var result = [];\n    while (!buffer2.isEmpty()) {\n      var possibleEnd = this._peekTag(buffer2, \"end\");\n      if (buffer2.isError(possibleEnd)) return possibleEnd;\n      var res = decoder.decode(buffer2, \"der\", options);\n      if (buffer2.isError(res) && possibleEnd) break;\n      result.push(res);\n    }\n    return result;\n  };\n  DERNode.prototype._decodeStr = function decodeStr(buffer2, tag) {\n    if (tag === \"bitstr\") {\n      var unused = buffer2.readUInt8();\n      if (buffer2.isError(unused)) return unused;\n      return {\n        unused,\n        data: buffer2.raw()\n      };\n    } else if (tag === \"bmpstr\") {\n      var raw = buffer2.raw();\n      if (raw.length % 2 === 1) return buffer2.error(\"Decoding of string type: bmpstr length mismatch\");\n      var str = \"\";\n      for (var i5 = 0; i5 < raw.length / 2; i5++) {\n        str += String.fromCharCode(raw.readUInt16BE(i5 * 2));\n      }\n      return str;\n    } else if (tag === \"numstr\") {\n      var numstr = buffer2.raw().toString(\"ascii\");\n      if (!this._isNumstr(numstr)) {\n        return buffer2.error(\"Decoding of string type: numstr unsupported characters\");\n      }\n      return numstr;\n    } else if (tag === \"octstr\") {\n      return buffer2.raw();\n    } else if (tag === \"objDesc\") {\n      return buffer2.raw();\n    } else if (tag === \"printstr\") {\n      var printstr = buffer2.raw().toString(\"ascii\");\n      if (!this._isPrintstr(printstr)) {\n        return buffer2.error(\"Decoding of string type: printstr unsupported characters\");\n      }\n      return printstr;\n    } else if (/str$/.test(tag)) {\n      return buffer2.raw().toString();\n    } else {\n      return buffer2.error(\"Decoding of string type: \" + tag + \" unsupported\");\n    }\n  };\n  DERNode.prototype._decodeObjid = function decodeObjid(buffer2, values, relative) {\n    var result;\n    var identifiers = [];\n    var ident = 0;\n    while (!buffer2.isEmpty()) {\n      var subident = buffer2.readUInt8();\n      ident <<= 7;\n      ident |= subident & 127;\n      if ((subident & 128) === 0) {\n        identifiers.push(ident);\n        ident = 0;\n      }\n    }\n    if (subident & 128) identifiers.push(ident);\n    var first = identifiers[0] / 40 | 0;\n    var second = identifiers[0] % 40;\n    if (relative) result = identifiers;\n    else result = [first, second].concat(identifiers.slice(1));\n    if (values) {\n      var tmp = values[result.join(\" \")];\n      if (tmp === void 0) tmp = values[result.join(\".\")];\n      if (tmp !== void 0) result = tmp;\n    }\n    return result;\n  };\n  DERNode.prototype._decodeTime = function decodeTime(buffer2, tag) {\n    var str = buffer2.raw().toString();\n    if (tag === \"gentime\") {\n      var year = str.slice(0, 4) | 0;\n      var mon = str.slice(4, 6) | 0;\n      var day = str.slice(6, 8) | 0;\n      var hour = str.slice(8, 10) | 0;\n      var min = str.slice(10, 12) | 0;\n      var sec = str.slice(12, 14) | 0;\n    } else if (tag === \"utctime\") {\n      var year = str.slice(0, 2) | 0;\n      var mon = str.slice(2, 4) | 0;\n      var day = str.slice(4, 6) | 0;\n      var hour = str.slice(6, 8) | 0;\n      var min = str.slice(8, 10) | 0;\n      var sec = str.slice(10, 12) | 0;\n      if (year < 70) year = 2e3 + year;\n      else year = 1900 + year;\n    } else {\n      return buffer2.error(\"Decoding \" + tag + \" time is not supported yet\");\n    }\n    return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n  };\n  DERNode.prototype._decodeNull = function decodeNull(buffer2) {\n    return null;\n  };\n  DERNode.prototype._decodeBool = function decodeBool(buffer2) {\n    var res = buffer2.readUInt8();\n    if (buffer2.isError(res)) return res;\n    else return res !== 0;\n  };\n  DERNode.prototype._decodeInt = function decodeInt(buffer2, values) {\n    var raw = buffer2.raw();\n    var res = new bignum(raw);\n    if (values) res = values[res.toString(10)] || res;\n    return res;\n  };\n  DERNode.prototype._use = function use(entity, obj) {\n    if (typeof entity === \"function\") entity = entity(obj);\n    return entity._getDecoder(\"der\").tree;\n  };\n  function derDecodeTag(buf, fail) {\n    var tag = buf.readUInt8(fail);\n    if (buf.isError(tag)) return tag;\n    var cls = der.tagClass[tag >> 6];\n    var primitive = (tag & 32) === 0;\n    if ((tag & 31) === 31) {\n      var oct = tag;\n      tag = 0;\n      while ((oct & 128) === 128) {\n        oct = buf.readUInt8(fail);\n        if (buf.isError(oct)) return oct;\n        tag <<= 7;\n        tag |= oct & 127;\n      }\n    } else {\n      tag &= 31;\n    }\n    var tagStr = der.tag[tag];\n    return {\n      cls,\n      primitive,\n      tag,\n      tagStr\n    };\n  }\n  function derDecodeLen(buf, primitive, fail) {\n    var len = buf.readUInt8(fail);\n    if (buf.isError(len)) return len;\n    if (!primitive && len === 128) return null;\n    if ((len & 128) === 0) {\n      return len;\n    }\n    var num = len & 127;\n    if (num > 4) return buf.error(\"length octect is too long\");\n    len = 0;\n    for (var i5 = 0; i5 < num; i5++) {\n      len <<= 8;\n      var j4 = buf.readUInt8(fail);\n      if (buf.isError(j4)) return j4;\n      len |= j4;\n    }\n    return len;\n  }\n  return exports$p;\n}\nvar exports$o = {};\nvar _dewExec$n = false;\nvar _global$6 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$n() {\n  if (_dewExec$n) return exports$o;\n  _dewExec$n = true;\n  var inherits = dew3();\n  var Buffer = dew().Buffer;\n  var DERDecoder = dew$o();\n  function PEMDecoder(entity) {\n    DERDecoder.call(this || _global$6, entity);\n    (this || _global$6).enc = \"pem\";\n  }\n  inherits(PEMDecoder, DERDecoder);\n  exports$o = PEMDecoder;\n  PEMDecoder.prototype.decode = function decode(data, options) {\n    var lines = data.toString().split(/[\\r\\n]+/g);\n    var label = options.label.toUpperCase();\n    var re3 = /^-----(BEGIN|END) ([^-]+)-----$/;\n    var start = -1;\n    var end = -1;\n    for (var i5 = 0; i5 < lines.length; i5++) {\n      var match = lines[i5].match(re3);\n      if (match === null) continue;\n      if (match[2] !== label) continue;\n      if (start === -1) {\n        if (match[1] !== \"BEGIN\") break;\n        start = i5;\n      } else {\n        if (match[1] !== \"END\") break;\n        end = i5;\n        break;\n      }\n    }\n    if (start === -1 || end === -1) throw new Error(\"PEM section not found for: \" + label);\n    var base64 = lines.slice(start + 1, end).join(\"\");\n    base64.replace(/[^a-z0-9\\+\\/=]+/gi, \"\");\n    var input = new Buffer(base64, \"base64\");\n    return DERDecoder.prototype.decode.call(this || _global$6, input, options);\n  };\n  return exports$o;\n}\nvar exports$n = {};\nvar _dewExec$m = false;\nfunction dew$m() {\n  if (_dewExec$m) return exports$n;\n  _dewExec$m = true;\n  var decoders = exports$n;\n  decoders.der = dew$o();\n  decoders.pem = dew$n();\n  return exports$n;\n}\nvar exports$m = {};\nvar _dewExec$l = false;\nvar _global$5 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$l() {\n  if (_dewExec$l) return exports$m;\n  _dewExec$l = true;\n  var inherits = dew3();\n  var Buffer = dew().Buffer;\n  var asn1 = dew$i();\n  var base = asn1.base;\n  var der = asn1.constants.der;\n  function DEREncoder(entity) {\n    (this || _global$5).enc = \"der\";\n    (this || _global$5).name = entity.name;\n    (this || _global$5).entity = entity;\n    (this || _global$5).tree = new DERNode();\n    (this || _global$5).tree._init(entity.body);\n  }\n  exports$m = DEREncoder;\n  DEREncoder.prototype.encode = function encode(data, reporter) {\n    return (this || _global$5).tree._encode(data, reporter).join();\n  };\n  function DERNode(parent) {\n    base.Node.call(this || _global$5, \"der\", parent);\n  }\n  inherits(DERNode, base.Node);\n  DERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n    var encodedTag = encodeTag(tag, primitive, cls, (this || _global$5).reporter);\n    if (content.length < 128) {\n      var header = new Buffer(2);\n      header[0] = encodedTag;\n      header[1] = content.length;\n      return this._createEncoderBuffer([header, content]);\n    }\n    var lenOctets = 1;\n    for (var i5 = content.length; i5 >= 256; i5 >>= 8) lenOctets++;\n    var header = new Buffer(1 + 1 + lenOctets);\n    header[0] = encodedTag;\n    header[1] = 128 | lenOctets;\n    for (var i5 = 1 + lenOctets, j4 = content.length; j4 > 0; i5--, j4 >>= 8) header[i5] = j4 & 255;\n    return this._createEncoderBuffer([header, content]);\n  };\n  DERNode.prototype._encodeStr = function encodeStr(str, tag) {\n    if (tag === \"bitstr\") {\n      return this._createEncoderBuffer([str.unused | 0, str.data]);\n    } else if (tag === \"bmpstr\") {\n      var buf = new Buffer(str.length * 2);\n      for (var i5 = 0; i5 < str.length; i5++) {\n        buf.writeUInt16BE(str.charCodeAt(i5), i5 * 2);\n      }\n      return this._createEncoderBuffer(buf);\n    } else if (tag === \"numstr\") {\n      if (!this._isNumstr(str)) {\n        return (this || _global$5).reporter.error(\"Encoding of string type: numstr supports only digits and space\");\n      }\n      return this._createEncoderBuffer(str);\n    } else if (tag === \"printstr\") {\n      if (!this._isPrintstr(str)) {\n        return (this || _global$5).reporter.error(\"Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark\");\n      }\n      return this._createEncoderBuffer(str);\n    } else if (/str$/.test(tag)) {\n      return this._createEncoderBuffer(str);\n    } else if (tag === \"objDesc\") {\n      return this._createEncoderBuffer(str);\n    } else {\n      return (this || _global$5).reporter.error(\"Encoding of string type: \" + tag + \" unsupported\");\n    }\n  };\n  DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n    if (typeof id === \"string\") {\n      if (!values) return (this || _global$5).reporter.error(\"string objid given, but no values map found\");\n      if (!values.hasOwnProperty(id)) return (this || _global$5).reporter.error(\"objid not found in values map\");\n      id = values[id].split(/[\\s\\.]+/g);\n      for (var i5 = 0; i5 < id.length; i5++) id[i5] |= 0;\n    } else if (Array.isArray(id)) {\n      id = id.slice();\n      for (var i5 = 0; i5 < id.length; i5++) id[i5] |= 0;\n    }\n    if (!Array.isArray(id)) {\n      return (this || _global$5).reporter.error(\"objid() should be either array or string, got: \" + JSON.stringify(id));\n    }\n    if (!relative) {\n      if (id[1] >= 40) return (this || _global$5).reporter.error(\"Second objid identifier OOB\");\n      id.splice(0, 2, id[0] * 40 + id[1]);\n    }\n    var size = 0;\n    for (var i5 = 0; i5 < id.length; i5++) {\n      var ident = id[i5];\n      for (size++; ident >= 128; ident >>= 7) size++;\n    }\n    var objid = new Buffer(size);\n    var offset = objid.length - 1;\n    for (var i5 = id.length - 1; i5 >= 0; i5--) {\n      var ident = id[i5];\n      objid[offset--] = ident & 127;\n      while ((ident >>= 7) > 0) objid[offset--] = 128 | ident & 127;\n    }\n    return this._createEncoderBuffer(objid);\n  };\n  function two(num) {\n    if (num < 10) return \"0\" + num;\n    else return num;\n  }\n  DERNode.prototype._encodeTime = function encodeTime(time, tag) {\n    var str;\n    var date = new Date(time);\n    if (tag === \"gentime\") {\n      str = [two(date.getFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), \"Z\"].join(\"\");\n    } else if (tag === \"utctime\") {\n      str = [two(date.getFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), \"Z\"].join(\"\");\n    } else {\n      (this || _global$5).reporter.error(\"Encoding \" + tag + \" time is not supported yet\");\n    }\n    return this._encodeStr(str, \"octstr\");\n  };\n  DERNode.prototype._encodeNull = function encodeNull() {\n    return this._createEncoderBuffer(\"\");\n  };\n  DERNode.prototype._encodeInt = function encodeInt(num, values) {\n    if (typeof num === \"string\") {\n      if (!values) return (this || _global$5).reporter.error(\"String int or enum given, but no values map\");\n      if (!values.hasOwnProperty(num)) {\n        return (this || _global$5).reporter.error(\"Values map doesn't contain: \" + JSON.stringify(num));\n      }\n      num = values[num];\n    }\n    if (typeof num !== \"number\" && !Buffer.isBuffer(num)) {\n      var numArray = num.toArray();\n      if (!num.sign && numArray[0] & 128) {\n        numArray.unshift(0);\n      }\n      num = new Buffer(numArray);\n    }\n    if (Buffer.isBuffer(num)) {\n      var size = num.length;\n      if (num.length === 0) size++;\n      var out = new Buffer(size);\n      num.copy(out);\n      if (num.length === 0) out[0] = 0;\n      return this._createEncoderBuffer(out);\n    }\n    if (num < 128) return this._createEncoderBuffer(num);\n    if (num < 256) return this._createEncoderBuffer([0, num]);\n    var size = 1;\n    for (var i5 = num; i5 >= 256; i5 >>= 8) size++;\n    var out = new Array(size);\n    for (var i5 = out.length - 1; i5 >= 0; i5--) {\n      out[i5] = num & 255;\n      num >>= 8;\n    }\n    if (out[0] & 128) {\n      out.unshift(0);\n    }\n    return this._createEncoderBuffer(new Buffer(out));\n  };\n  DERNode.prototype._encodeBool = function encodeBool(value) {\n    return this._createEncoderBuffer(value ? 255 : 0);\n  };\n  DERNode.prototype._use = function use(entity, obj) {\n    if (typeof entity === \"function\") entity = entity(obj);\n    return entity._getEncoder(\"der\").tree;\n  };\n  DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n    var state = (this || _global$5)._baseState;\n    var i5;\n    if (state[\"default\"] === null) return false;\n    var data = dataBuffer.join();\n    if (state.defaultBuffer === void 0) state.defaultBuffer = this._encodeValue(state[\"default\"], reporter, parent).join();\n    if (data.length !== state.defaultBuffer.length) return false;\n    for (i5 = 0; i5 < data.length; i5++) if (data[i5] !== state.defaultBuffer[i5]) return false;\n    return true;\n  };\n  function encodeTag(tag, primitive, cls, reporter) {\n    var res;\n    if (tag === \"seqof\") tag = \"seq\";\n    else if (tag === \"setof\") tag = \"set\";\n    if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];\n    else if (typeof tag === \"number\" && (tag | 0) === tag) res = tag;\n    else return reporter.error(\"Unknown tag: \" + tag);\n    if (res >= 31) return reporter.error(\"Multi-octet tag encoding unsupported\");\n    if (!primitive) res |= 32;\n    res |= der.tagClassByName[cls || \"universal\"] << 6;\n    return res;\n  }\n  return exports$m;\n}\nvar exports$l = {};\nvar _dewExec$k = false;\nvar _global$4 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$k() {\n  if (_dewExec$k) return exports$l;\n  _dewExec$k = true;\n  var inherits = dew3();\n  var DEREncoder = dew$l();\n  function PEMEncoder(entity) {\n    DEREncoder.call(this || _global$4, entity);\n    (this || _global$4).enc = \"pem\";\n  }\n  inherits(PEMEncoder, DEREncoder);\n  exports$l = PEMEncoder;\n  PEMEncoder.prototype.encode = function encode(data, options) {\n    var buf = DEREncoder.prototype.encode.call(this || _global$4, data);\n    var p5 = buf.toString(\"base64\");\n    var out = [\"-----BEGIN \" + options.label + \"-----\"];\n    for (var i5 = 0; i5 < p5.length; i5 += 64) out.push(p5.slice(i5, i5 + 64));\n    out.push(\"-----END \" + options.label + \"-----\");\n    return out.join(\"\\n\");\n  };\n  return exports$l;\n}\nvar exports$k = {};\nvar _dewExec$j = false;\nfunction dew$j() {\n  if (_dewExec$j) return exports$k;\n  _dewExec$j = true;\n  var encoders = exports$k;\n  encoders.der = dew$l();\n  encoders.pem = dew$k();\n  return exports$k;\n}\nvar exports$j = {};\nvar _dewExec$i = false;\nfunction dew$i() {\n  if (_dewExec$i) return exports$j;\n  _dewExec$i = true;\n  var asn1 = exports$j;\n  asn1.bignum = dew$w();\n  asn1.define = dew$v().define;\n  asn1.base = dew$r();\n  asn1.constants = dew$p();\n  asn1.decoders = dew$m();\n  asn1.encoders = dew$j();\n  return exports$j;\n}\nvar exports$i = {};\nvar _dewExec$h = false;\nfunction dew$h() {\n  if (_dewExec$h) return exports$i;\n  _dewExec$h = true;\n  var asn = dew$i();\n  var Time = asn.define(\"Time\", function() {\n    this.choice({\n      utcTime: this.utctime(),\n      generalTime: this.gentime()\n    });\n  });\n  var AttributeTypeValue = asn.define(\"AttributeTypeValue\", function() {\n    this.seq().obj(this.key(\"type\").objid(), this.key(\"value\").any());\n  });\n  var AlgorithmIdentifier = asn.define(\"AlgorithmIdentifier\", function() {\n    this.seq().obj(this.key(\"algorithm\").objid(), this.key(\"parameters\").optional(), this.key(\"curve\").objid().optional());\n  });\n  var SubjectPublicKeyInfo = asn.define(\"SubjectPublicKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPublicKey\").bitstr());\n  });\n  var RelativeDistinguishedName = asn.define(\"RelativeDistinguishedName\", function() {\n    this.setof(AttributeTypeValue);\n  });\n  var RDNSequence = asn.define(\"RDNSequence\", function() {\n    this.seqof(RelativeDistinguishedName);\n  });\n  var Name = asn.define(\"Name\", function() {\n    this.choice({\n      rdnSequence: this.use(RDNSequence)\n    });\n  });\n  var Validity = asn.define(\"Validity\", function() {\n    this.seq().obj(this.key(\"notBefore\").use(Time), this.key(\"notAfter\").use(Time));\n  });\n  var Extension = asn.define(\"Extension\", function() {\n    this.seq().obj(this.key(\"extnID\").objid(), this.key(\"critical\").bool().def(false), this.key(\"extnValue\").octstr());\n  });\n  var TBSCertificate = asn.define(\"TBSCertificate\", function() {\n    this.seq().obj(this.key(\"version\").explicit(0)[\"int\"]().optional(), this.key(\"serialNumber\")[\"int\"](), this.key(\"signature\").use(AlgorithmIdentifier), this.key(\"issuer\").use(Name), this.key(\"validity\").use(Validity), this.key(\"subject\").use(Name), this.key(\"subjectPublicKeyInfo\").use(SubjectPublicKeyInfo), this.key(\"issuerUniqueID\").implicit(1).bitstr().optional(), this.key(\"subjectUniqueID\").implicit(2).bitstr().optional(), this.key(\"extensions\").explicit(3).seqof(Extension).optional());\n  });\n  var X509Certificate = asn.define(\"X509Certificate\", function() {\n    this.seq().obj(this.key(\"tbsCertificate\").use(TBSCertificate), this.key(\"signatureAlgorithm\").use(AlgorithmIdentifier), this.key(\"signatureValue\").bitstr());\n  });\n  exports$i = X509Certificate;\n  return exports$i;\n}\nvar exports$h = {};\nvar _dewExec$g2 = false;\nfunction dew$g2() {\n  if (_dewExec$g2) return exports$h;\n  _dewExec$g2 = true;\n  var asn1 = dew$i();\n  exports$h.certificate = dew$h();\n  var RSAPrivateKey = asn1.define(\"RSAPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\")[\"int\"](), this.key(\"modulus\")[\"int\"](), this.key(\"publicExponent\")[\"int\"](), this.key(\"privateExponent\")[\"int\"](), this.key(\"prime1\")[\"int\"](), this.key(\"prime2\")[\"int\"](), this.key(\"exponent1\")[\"int\"](), this.key(\"exponent2\")[\"int\"](), this.key(\"coefficient\")[\"int\"]());\n  });\n  exports$h.RSAPrivateKey = RSAPrivateKey;\n  var RSAPublicKey = asn1.define(\"RSAPublicKey\", function() {\n    this.seq().obj(this.key(\"modulus\")[\"int\"](), this.key(\"publicExponent\")[\"int\"]());\n  });\n  exports$h.RSAPublicKey = RSAPublicKey;\n  var AlgorithmIdentifier = asn1.define(\"AlgorithmIdentifier\", function() {\n    this.seq().obj(this.key(\"algorithm\").objid(), this.key(\"none\").null_().optional(), this.key(\"curve\").objid().optional(), this.key(\"params\").seq().obj(this.key(\"p\")[\"int\"](), this.key(\"q\")[\"int\"](), this.key(\"g\")[\"int\"]()).optional());\n  });\n  var PublicKey = asn1.define(\"SubjectPublicKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPublicKey\").bitstr());\n  });\n  exports$h.PublicKey = PublicKey;\n  var PrivateKeyInfo = asn1.define(\"PrivateKeyInfo\", function() {\n    this.seq().obj(this.key(\"version\")[\"int\"](), this.key(\"algorithm\").use(AlgorithmIdentifier), this.key(\"subjectPrivateKey\").octstr());\n  });\n  exports$h.PrivateKey = PrivateKeyInfo;\n  var EncryptedPrivateKeyInfo = asn1.define(\"EncryptedPrivateKeyInfo\", function() {\n    this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(), this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(), this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(), this.key(\"iters\")[\"int\"]())), this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(), this.key(\"iv\").octstr()))), this.key(\"subjectPrivateKey\").octstr());\n  });\n  exports$h.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\n  var DSAPrivateKey = asn1.define(\"DSAPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\")[\"int\"](), this.key(\"p\")[\"int\"](), this.key(\"q\")[\"int\"](), this.key(\"g\")[\"int\"](), this.key(\"pub_key\")[\"int\"](), this.key(\"priv_key\")[\"int\"]());\n  });\n  exports$h.DSAPrivateKey = DSAPrivateKey;\n  exports$h.DSAparam = asn1.define(\"DSAparam\", function() {\n    this[\"int\"]();\n  });\n  var ECParameters = asn1.define(\"ECParameters\", function() {\n    this.choice({\n      namedCurve: this.objid()\n    });\n  });\n  var ECPrivateKey = asn1.define(\"ECPrivateKey\", function() {\n    this.seq().obj(this.key(\"version\")[\"int\"](), this.key(\"privateKey\").octstr(), this.key(\"parameters\").optional().explicit(0).use(ECParameters), this.key(\"publicKey\").optional().explicit(1).bitstr());\n  });\n  exports$h.ECPrivateKey = ECPrivateKey;\n  exports$h.signature = asn1.define(\"signature\", function() {\n    this.seq().obj(this.key(\"r\")[\"int\"](), this.key(\"s\")[\"int\"]());\n  });\n  return exports$h;\n}\nvar _aesid = {\n  \"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\",\n  \"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\",\n  \"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\",\n  \"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\",\n  \"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\",\n  \"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\",\n  \"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\",\n  \"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\",\n  \"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\",\n  \"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\",\n  \"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\",\n  \"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\"\n};\nvar exports$g2 = {};\nvar _dewExec$f2 = false;\nfunction dew$f2() {\n  if (_dewExec$f2) return exports$g2;\n  _dewExec$f2 = true;\n  var findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\n  var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\n  var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\n  var evp = dew$2Y();\n  var ciphers = dew$2V();\n  var Buffer = dew$12().Buffer;\n  exports$g2 = function(okey, password) {\n    var key = okey.toString();\n    var match = key.match(findProc);\n    var decrypted;\n    if (!match) {\n      var match2 = key.match(fullRegex);\n      decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, \"\"), \"base64\");\n    } else {\n      var suite = \"aes\" + match[1];\n      var iv = Buffer.from(match[2], \"hex\");\n      var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, \"\"), \"base64\");\n      var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n      var out = [];\n      var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n      out.push(cipher.update(cipherText));\n      out.push(cipher[\"final\"]());\n      decrypted = Buffer.concat(out);\n    }\n    var tag = key.match(startRegex)[1];\n    return {\n      tag,\n      data: decrypted\n    };\n  };\n  return exports$g2;\n}\nvar exports$f2 = {};\nvar _dewExec$e2 = false;\nfunction dew$e2() {\n  if (_dewExec$e2) return exports$f2;\n  _dewExec$e2 = true;\n  var asn1 = dew$g2();\n  var aesid = _aesid;\n  var fixProc = dew$f2();\n  var ciphers = dew$2V();\n  var compat = dew$3j();\n  var Buffer = dew$12().Buffer;\n  function decrypt(data, password) {\n    var salt = data.algorithm.decrypt.kde.kdeparams.salt;\n    var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n    var algo = aesid[data.algorithm.decrypt.cipher.algo.join(\".\")];\n    var iv = data.algorithm.decrypt.cipher.iv;\n    var cipherText = data.subjectPrivateKey;\n    var keylen = parseInt(algo.split(\"-\")[1], 10) / 8;\n    var key = compat.pbkdf2Sync(password, salt, iters, keylen, \"sha1\");\n    var cipher = ciphers.createDecipheriv(algo, key, iv);\n    var out = [];\n    out.push(cipher.update(cipherText));\n    out.push(cipher[\"final\"]());\n    return Buffer.concat(out);\n  }\n  function parseKeys(buffer2) {\n    var password;\n    if (typeof buffer2 === \"object\" && !Buffer.isBuffer(buffer2)) {\n      password = buffer2.passphrase;\n      buffer2 = buffer2.key;\n    }\n    if (typeof buffer2 === \"string\") {\n      buffer2 = Buffer.from(buffer2);\n    }\n    var stripped = fixProc(buffer2, password);\n    var type = stripped.tag;\n    var data = stripped.data;\n    var subtype, ndata;\n    switch (type) {\n      case \"CERTIFICATE\":\n        ndata = asn1.certificate.decode(data, \"der\").tbsCertificate.subjectPublicKeyInfo;\n      // falls through\n      case \"PUBLIC KEY\":\n        if (!ndata) {\n          ndata = asn1.PublicKey.decode(data, \"der\");\n        }\n        subtype = ndata.algorithm.algorithm.join(\".\");\n        switch (subtype) {\n          case \"1.2.840.113549.1.1.1\":\n            return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, \"der\");\n          case \"1.2.840.10045.2.1\":\n            ndata.subjectPrivateKey = ndata.subjectPublicKey;\n            return {\n              type: \"ec\",\n              data: ndata\n            };\n          case \"1.2.840.10040.4.1\":\n            ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, \"der\");\n            return {\n              type: \"dsa\",\n              data: ndata.algorithm.params\n            };\n          default:\n            throw new Error(\"unknown key id \" + subtype);\n        }\n      // throw new Error('unknown key type ' + type)\n      case \"ENCRYPTED PRIVATE KEY\":\n        data = asn1.EncryptedPrivateKey.decode(data, \"der\");\n        data = decrypt(data, password);\n      // falls through\n      case \"PRIVATE KEY\":\n        ndata = asn1.PrivateKey.decode(data, \"der\");\n        subtype = ndata.algorithm.algorithm.join(\".\");\n        switch (subtype) {\n          case \"1.2.840.113549.1.1.1\":\n            return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, \"der\");\n          case \"1.2.840.10045.2.1\":\n            return {\n              curve: ndata.algorithm.curve,\n              privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, \"der\").privateKey\n            };\n          case \"1.2.840.10040.4.1\":\n            ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, \"der\");\n            return {\n              type: \"dsa\",\n              params: ndata.algorithm.params\n            };\n          default:\n            throw new Error(\"unknown key id \" + subtype);\n        }\n      // throw new Error('unknown key type ' + type)\n      case \"RSA PUBLIC KEY\":\n        return asn1.RSAPublicKey.decode(data, \"der\");\n      case \"RSA PRIVATE KEY\":\n        return asn1.RSAPrivateKey.decode(data, \"der\");\n      case \"DSA PRIVATE KEY\":\n        return {\n          type: \"dsa\",\n          params: asn1.DSAPrivateKey.decode(data, \"der\")\n        };\n      case \"EC PRIVATE KEY\":\n        data = asn1.ECPrivateKey.decode(data, \"der\");\n        return {\n          curve: data.parameters.value,\n          privateKey: data.privateKey\n        };\n      default:\n        throw new Error(\"unknown key type \" + type);\n    }\n  }\n  parseKeys.signature = asn1.signature;\n  exports$f2 = parseKeys;\n  return exports$f2;\n}\nvar _curves = {\n  \"1.3.132.0.10\": \"secp256k1\",\n  \"1.3.132.0.33\": \"p224\",\n  \"1.2.840.10045.3.1.1\": \"p192\",\n  \"1.2.840.10045.3.1.7\": \"p256\",\n  \"1.3.132.0.34\": \"p384\",\n  \"1.3.132.0.35\": \"p521\"\n};\nvar exports$e2 = {};\nvar _dewExec$d2 = false;\nfunction dew$d2() {\n  if (_dewExec$d2) return exports$e2;\n  _dewExec$d2 = true;\n  var Buffer = dew$12().Buffer;\n  var createHmac2 = dew$3q();\n  var crt = dew$$();\n  var EC = dew$x().ec;\n  var BN = dew$10();\n  var parseKeys = dew$e2();\n  var curves = _curves;\n  var RSA_PKCS1_PADDING = 1;\n  function sign(hash, key, hashType, signType, tag) {\n    var priv = parseKeys(key);\n    if (priv.curve) {\n      if (signType !== \"ecdsa\" && signType !== \"ecdsa/rsa\") {\n        throw new Error(\"wrong private key type\");\n      }\n      return ecSign(hash, priv);\n    } else if (priv.type === \"dsa\") {\n      if (signType !== \"dsa\") {\n        throw new Error(\"wrong private key type\");\n      }\n      return dsaSign(hash, priv, hashType);\n    }\n    if (signType !== \"rsa\" && signType !== \"ecdsa/rsa\") {\n      throw new Error(\"wrong private key type\");\n    }\n    if (key.padding !== void 0 && key.padding !== RSA_PKCS1_PADDING) {\n      throw new Error(\"illegal or unsupported padding mode\");\n    }\n    hash = Buffer.concat([tag, hash]);\n    var len = priv.modulus.byteLength();\n    var pad = [0, 1];\n    while (hash.length + pad.length + 1 < len) {\n      pad.push(255);\n    }\n    pad.push(0);\n    var i5 = -1;\n    while (++i5 < hash.length) {\n      pad.push(hash[i5]);\n    }\n    var out = crt(pad, priv);\n    return out;\n  }\n  function ecSign(hash, priv) {\n    var curveId = curves[priv.curve.join(\".\")];\n    if (!curveId) {\n      throw new Error(\"unknown curve \" + priv.curve.join(\".\"));\n    }\n    var curve = new EC(curveId);\n    var key = curve.keyFromPrivate(priv.privateKey);\n    var out = key.sign(hash);\n    return Buffer.from(out.toDER());\n  }\n  function dsaSign(hash, priv, algo) {\n    var x4 = priv.params.priv_key;\n    var p5 = priv.params.p;\n    var q3 = priv.params.q;\n    var g4 = priv.params.g;\n    var r5 = new BN(0);\n    var k4;\n    var H3 = bits2int(hash, q3).mod(q3);\n    var s5 = false;\n    var kv = getKey(x4, q3, hash, algo);\n    while (s5 === false) {\n      k4 = makeKey(q3, kv, algo);\n      r5 = makeR(g4, k4, p5, q3);\n      s5 = k4.invm(q3).imul(H3.add(x4.mul(r5))).mod(q3);\n      if (s5.cmpn(0) === 0) {\n        s5 = false;\n        r5 = new BN(0);\n      }\n    }\n    return toDER(r5, s5);\n  }\n  function toDER(r5, s5) {\n    r5 = r5.toArray();\n    s5 = s5.toArray();\n    if (r5[0] & 128) {\n      r5 = [0].concat(r5);\n    }\n    if (s5[0] & 128) {\n      s5 = [0].concat(s5);\n    }\n    var total = r5.length + s5.length + 4;\n    var res = [48, total, 2, r5.length];\n    res = res.concat(r5, [2, s5.length], s5);\n    return Buffer.from(res);\n  }\n  function getKey(x4, q3, hash, algo) {\n    x4 = Buffer.from(x4.toArray());\n    if (x4.length < q3.byteLength()) {\n      var zeros = Buffer.alloc(q3.byteLength() - x4.length);\n      x4 = Buffer.concat([zeros, x4]);\n    }\n    var hlen = hash.length;\n    var hbits = bits2octets(hash, q3);\n    var v5 = Buffer.alloc(hlen);\n    v5.fill(1);\n    var k4 = Buffer.alloc(hlen);\n    k4 = createHmac2(algo, k4).update(v5).update(Buffer.from([0])).update(x4).update(hbits).digest();\n    v5 = createHmac2(algo, k4).update(v5).digest();\n    k4 = createHmac2(algo, k4).update(v5).update(Buffer.from([1])).update(x4).update(hbits).digest();\n    v5 = createHmac2(algo, k4).update(v5).digest();\n    return {\n      k: k4,\n      v: v5\n    };\n  }\n  function bits2int(obits, q3) {\n    var bits = new BN(obits);\n    var shift = (obits.length << 3) - q3.bitLength();\n    if (shift > 0) {\n      bits.ishrn(shift);\n    }\n    return bits;\n  }\n  function bits2octets(bits, q3) {\n    bits = bits2int(bits, q3);\n    bits = bits.mod(q3);\n    var out = Buffer.from(bits.toArray());\n    if (out.length < q3.byteLength()) {\n      var zeros = Buffer.alloc(q3.byteLength() - out.length);\n      out = Buffer.concat([zeros, out]);\n    }\n    return out;\n  }\n  function makeKey(q3, kv, algo) {\n    var t5;\n    var k4;\n    do {\n      t5 = Buffer.alloc(0);\n      while (t5.length * 8 < q3.bitLength()) {\n        kv.v = createHmac2(algo, kv.k).update(kv.v).digest();\n        t5 = Buffer.concat([t5, kv.v]);\n      }\n      k4 = bits2int(t5, q3);\n      kv.k = createHmac2(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n      kv.v = createHmac2(algo, kv.k).update(kv.v).digest();\n    } while (k4.cmp(q3) !== -1);\n    return k4;\n  }\n  function makeR(g4, k4, p5, q3) {\n    return g4.toRed(BN.mont(p5)).redPow(k4).fromRed().mod(q3);\n  }\n  exports$e2 = sign;\n  exports$e2.getKey = getKey;\n  exports$e2.makeKey = makeKey;\n  return exports$e2;\n}\nvar exports$d2 = {};\nvar _dewExec$c2 = false;\nfunction dew$c2() {\n  if (_dewExec$c2) return exports$d2;\n  _dewExec$c2 = true;\n  var Buffer = dew$12().Buffer;\n  var BN = dew$10();\n  var EC = dew$x().ec;\n  var parseKeys = dew$e2();\n  var curves = _curves;\n  function verify(sig, hash, key, signType, tag) {\n    var pub = parseKeys(key);\n    if (pub.type === \"ec\") {\n      if (signType !== \"ecdsa\" && signType !== \"ecdsa/rsa\") {\n        throw new Error(\"wrong public key type\");\n      }\n      return ecVerify(sig, hash, pub);\n    } else if (pub.type === \"dsa\") {\n      if (signType !== \"dsa\") {\n        throw new Error(\"wrong public key type\");\n      }\n      return dsaVerify(sig, hash, pub);\n    }\n    if (signType !== \"rsa\" && signType !== \"ecdsa/rsa\") {\n      throw new Error(\"wrong public key type\");\n    }\n    hash = Buffer.concat([tag, hash]);\n    var len = pub.modulus.byteLength();\n    var pad = [1];\n    var padNum = 0;\n    while (hash.length + pad.length + 2 < len) {\n      pad.push(255);\n      padNum += 1;\n    }\n    pad.push(0);\n    var i5 = -1;\n    while (++i5 < hash.length) {\n      pad.push(hash[i5]);\n    }\n    pad = Buffer.from(pad);\n    var red = BN.mont(pub.modulus);\n    sig = new BN(sig).toRed(red);\n    sig = sig.redPow(new BN(pub.publicExponent));\n    sig = Buffer.from(sig.fromRed().toArray());\n    var out = padNum < 8 ? 1 : 0;\n    len = Math.min(sig.length, pad.length);\n    if (sig.length !== pad.length) {\n      out = 1;\n    }\n    i5 = -1;\n    while (++i5 < len) {\n      out |= sig[i5] ^ pad[i5];\n    }\n    return out === 0;\n  }\n  function ecVerify(sig, hash, pub) {\n    var curveId = curves[pub.data.algorithm.curve.join(\".\")];\n    if (!curveId) {\n      throw new Error(\"unknown curve \" + pub.data.algorithm.curve.join(\".\"));\n    }\n    var curve = new EC(curveId);\n    var pubkey = pub.data.subjectPrivateKey.data;\n    return curve.verify(hash, sig, pubkey);\n  }\n  function dsaVerify(sig, hash, pub) {\n    var p5 = pub.data.p;\n    var q3 = pub.data.q;\n    var g4 = pub.data.g;\n    var y5 = pub.data.pub_key;\n    var unpacked = parseKeys.signature.decode(sig, \"der\");\n    var s5 = unpacked.s;\n    var r5 = unpacked.r;\n    checkValue(s5, q3);\n    checkValue(r5, q3);\n    var montp = BN.mont(p5);\n    var w4 = s5.invm(q3);\n    var v5 = g4.toRed(montp).redPow(new BN(hash).mul(w4).mod(q3)).fromRed().mul(y5.toRed(montp).redPow(r5.mul(w4).mod(q3)).fromRed()).mod(p5).mod(q3);\n    return v5.cmp(r5) === 0;\n  }\n  function checkValue(b4, q3) {\n    if (b4.cmpn(0) <= 0) {\n      throw new Error(\"invalid sig\");\n    }\n    if (b4.cmp(q3) >= 0) {\n      throw new Error(\"invalid sig\");\n    }\n  }\n  exports$d2 = verify;\n  return exports$d2;\n}\nvar exports$c2 = {};\nvar _dewExec$b2 = false;\nfunction dew$b2() {\n  if (_dewExec$b2) return exports$c2;\n  _dewExec$b2 = true;\n  var Buffer = dew$12().Buffer;\n  var createHash2 = dew$3t();\n  var stream2 = dew$11();\n  var inherits = dew3();\n  var sign = dew$d2();\n  var verify = dew$c2();\n  var algorithms = _algorithms$2;\n  Object.keys(algorithms).forEach(function(key) {\n    algorithms[key].id = Buffer.from(algorithms[key].id, \"hex\");\n    algorithms[key.toLowerCase()] = algorithms[key];\n  });\n  function Sign2(algorithm) {\n    stream2.Writable.call(this);\n    var data = algorithms[algorithm];\n    if (!data) {\n      throw new Error(\"Unknown message digest\");\n    }\n    this._hashType = data.hash;\n    this._hash = createHash2(data.hash);\n    this._tag = data.id;\n    this._signType = data.sign;\n  }\n  inherits(Sign2, stream2.Writable);\n  Sign2.prototype._write = function _write(data, _4, done) {\n    this._hash.update(data);\n    done();\n  };\n  Sign2.prototype.update = function update(data, enc) {\n    this._hash.update(typeof data === \"string\" ? Buffer.from(data, enc) : data);\n    return this;\n  };\n  Sign2.prototype.sign = function signMethod(key, enc) {\n    this.end();\n    var hash = this._hash.digest();\n    var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n    return enc ? sig.toString(enc) : sig;\n  };\n  function Verify2(algorithm) {\n    stream2.Writable.call(this);\n    var data = algorithms[algorithm];\n    if (!data) {\n      throw new Error(\"Unknown message digest\");\n    }\n    this._hash = createHash2(data.hash);\n    this._tag = data.id;\n    this._signType = data.sign;\n  }\n  inherits(Verify2, stream2.Writable);\n  Verify2.prototype._write = function _write(data, _4, done) {\n    this._hash.update(data);\n    done();\n  };\n  Verify2.prototype.update = function update(data, enc) {\n    this._hash.update(typeof data === \"string\" ? Buffer.from(data, enc) : data);\n    return this;\n  };\n  Verify2.prototype.verify = function verifyMethod(key, sig, enc) {\n    var sigBuffer = typeof sig === \"string\" ? Buffer.from(sig, enc) : sig;\n    this.end();\n    var hash = this._hash.digest();\n    return verify(sigBuffer, hash, key, this._signType, this._tag);\n  };\n  function createSign2(algorithm) {\n    return new Sign2(algorithm);\n  }\n  function createVerify2(algorithm) {\n    return new Verify2(algorithm);\n  }\n  exports$c2 = {\n    Sign: createSign2,\n    Verify: createVerify2,\n    createSign: createSign2,\n    createVerify: createVerify2\n  };\n  return exports$c2;\n}\nvar exports$b2 = {};\nvar _dewExec$a2 = false;\nvar module$1 = {\n  exports: exports$b2\n};\nvar _global$3 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$a2() {\n  if (_dewExec$a2) return module$1.exports;\n  _dewExec$a2 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$3).negative = 0;\n      (this || _global$3).words = null;\n      (this || _global$3).length = 0;\n      (this || _global$3).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = dew().Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$3).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$3).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$3).words = [number & 67108863];\n        (this || _global$3).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$3).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$3).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$3).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$3).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$3).words = [0];\n        (this || _global$3).length = 1;\n        return this || _global$3;\n      }\n      (this || _global$3).length = Math.ceil(number.length / 3);\n      (this || _global$3).words = new Array((this || _global$3).length);\n      for (var i5 = 0; i5 < (this || _global$3).length; i5++) {\n        (this || _global$3).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$3).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$3).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$3).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$3).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$3).length = Math.ceil((number.length - start) / 6);\n      (this || _global$3).words = new Array((this || _global$3).length);\n      for (var i5 = 0; i5 < (this || _global$3).length; i5++) {\n        (this || _global$3).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$3).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$3).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$3).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$3).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$3).words = [0];\n      (this || _global$3).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$3).words[0] + word < 67108864) {\n          (this || _global$3).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$3).words[0] + word < 67108864) {\n          (this || _global$3).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$3).length);\n      for (var i5 = 0; i5 < (this || _global$3).length; i5++) {\n        dest.words[i5] = (this || _global$3).words[i5];\n      }\n      dest.length = (this || _global$3).length;\n      dest.negative = (this || _global$3).negative;\n      dest.red = (this || _global$3).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$3).length < size) {\n        (this || _global$3).words[(this || _global$3).length++] = 0;\n      }\n      return this || _global$3;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$3).length > 1 && (this || _global$3).words[(this || _global$3).length - 1] === 0) {\n        (this || _global$3).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$3).length === 1 && (this || _global$3).words[0] === 0) {\n        (this || _global$3).negative = 0;\n      }\n      return this || _global$3;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$3).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$3).length; i5++) {\n          var w4 = (this || _global$3).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$3).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$3).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$3).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$3).words[0];\n      if ((this || _global$3).length === 2) {\n        ret += (this || _global$3).words[1] * 67108864;\n      } else if ((this || _global$3).length === 3 && (this || _global$3).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$3).words[1] * 67108864;\n      } else if ((this || _global$3).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$3).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$3).words[(this || _global$3).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$3).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$3).length; i5++) {\n        var b4 = this._zeroBits((this || _global$3).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$3).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$3).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$3).negative ^= 1;\n      }\n      return this || _global$3;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$3).length < num.length) {\n        (this || _global$3).words[(this || _global$3).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$3).words[i5] = (this || _global$3).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$3).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$3).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$3);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$3).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$3);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$3).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$3;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$3).words[i5] = (this || _global$3).words[i5] & num.words[i5];\n      }\n      (this || _global$3).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$3).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$3).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$3);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$3).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$3);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$3).length > num.length) {\n        a5 = this || _global$3;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$3).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$3) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$3).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$3).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$3).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$3);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$3).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$3);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$3).words[i5] = ~(this || _global$3).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$3).words[i5] = ~(this || _global$3).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$3).words[off2] = (this || _global$3).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$3).words[off2] = (this || _global$3).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$3).negative !== 0 && num.negative === 0) {\n        (this || _global$3).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$3).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$3).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$3).length > num.length) {\n        a5 = this || _global$3;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$3).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$3).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$3).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$3).words[(this || _global$3).length] = carry;\n        (this || _global$3).length++;\n      } else if (a5 !== (this || _global$3)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$3;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$3).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$3).negative !== 0) {\n        (this || _global$3).negative = 0;\n        res = num.sub(this || _global$3);\n        (this || _global$3).negative = 1;\n        return res;\n      }\n      if ((this || _global$3).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$3);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$3).negative !== 0) {\n        (this || _global$3).negative = 0;\n        this.iadd(num);\n        (this || _global$3).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$3).negative = 0;\n        (this || _global$3).length = 1;\n        (this || _global$3).words[0] = 0;\n        return this || _global$3;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$3;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$3;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$3).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$3).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$3)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$3).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$3).length = Math.max((this || _global$3).length, i5);\n      if (a5 !== (this || _global$3)) {\n        (this || _global$3).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$3).length + num.length;\n      if ((this || _global$3).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$3, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$3, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$3, num, out);\n      } else {\n        res = jumboMulTo(this || _global$3, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$3).x = x4;\n      (this || _global$3).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$3).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$3).length + num.length);\n      return jumboMulTo(this || _global$3, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$3);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$3).length; i5++) {\n        var w4 = ((this || _global$3).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$3).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$3).words[i5] = carry;\n        (this || _global$3).length++;\n      }\n      return this || _global$3;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$3);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$3;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$3).length; i5++) {\n          var newCarry = (this || _global$3).words[i5] & carryMask;\n          var c5 = ((this || _global$3).words[i5] | 0) - newCarry << r5;\n          (this || _global$3).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$3).words[i5] = carry;\n          (this || _global$3).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$3).length - 1; i5 >= 0; i5--) {\n          (this || _global$3).words[i5 + s5] = (this || _global$3).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$3).words[i5] = 0;\n        }\n        (this || _global$3).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$3).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$3).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$3).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$3).length > s5) {\n        (this || _global$3).length -= s5;\n        for (i5 = 0; i5 < (this || _global$3).length; i5++) {\n          (this || _global$3).words[i5] = (this || _global$3).words[i5 + s5];\n        }\n      } else {\n        (this || _global$3).words[0] = 0;\n        (this || _global$3).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$3).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$3).words[i5] | 0;\n        (this || _global$3).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$3).length === 0) {\n        (this || _global$3).words[0] = 0;\n        (this || _global$3).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$3).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$3).length <= s5) return false;\n      var w4 = (this || _global$3).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$3).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$3).length <= s5) {\n        return this || _global$3;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$3).length = Math.min(s5, (this || _global$3).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$3).words[(this || _global$3).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$3).negative !== 0) {\n        if ((this || _global$3).length === 1 && ((this || _global$3).words[0] | 0) < num) {\n          (this || _global$3).words[0] = num - ((this || _global$3).words[0] | 0);\n          (this || _global$3).negative = 0;\n          return this || _global$3;\n        }\n        (this || _global$3).negative = 0;\n        this.isubn(num);\n        (this || _global$3).negative = 1;\n        return this || _global$3;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$3).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$3).length && (this || _global$3).words[i5] >= 67108864; i5++) {\n        (this || _global$3).words[i5] -= 67108864;\n        if (i5 === (this || _global$3).length - 1) {\n          (this || _global$3).words[i5 + 1] = 1;\n        } else {\n          (this || _global$3).words[i5 + 1]++;\n        }\n      }\n      (this || _global$3).length = Math.max((this || _global$3).length, i5 + 1);\n      return this || _global$3;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$3).negative !== 0) {\n        (this || _global$3).negative = 0;\n        this.iaddn(num);\n        (this || _global$3).negative = 1;\n        return this || _global$3;\n      }\n      (this || _global$3).words[0] -= num;\n      if ((this || _global$3).length === 1 && (this || _global$3).words[0] < 0) {\n        (this || _global$3).words[0] = -(this || _global$3).words[0];\n        (this || _global$3).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$3).length && (this || _global$3).words[i5] < 0; i5++) {\n          (this || _global$3).words[i5] += 67108864;\n          (this || _global$3).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$3).negative = 0;\n      return this || _global$3;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$3).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$3).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$3).length - shift; i5++) {\n        w4 = ((this || _global$3).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$3).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$3).length; i5++) {\n        w4 = -((this || _global$3).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$3).words[i5] = w4 & 67108863;\n      }\n      (this || _global$3).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$3).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$3).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$3).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$3).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$3).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$3\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$3).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$3).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$3).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$3).words[i5] | 0) + carry * 67108864;\n        (this || _global$3).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$3;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$3;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$3).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$3).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$3).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$3).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$3).words[s5] |= q3;\n        return this || _global$3;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$3).length; i5++) {\n        var w4 = (this || _global$3).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$3).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$3).words[i5] = carry;\n        (this || _global$3).length++;\n      }\n      return this || _global$3;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$3).length === 1 && (this || _global$3).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$3).negative !== 0 && !negative) return -1;\n      if ((this || _global$3).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$3).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$3).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$3).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$3).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$3).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$3).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$3).length > num.length) return 1;\n      if ((this || _global$3).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$3).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$3).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$3).red, \"Already a number in reduction context\");\n      assert2((this || _global$3).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$3)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$3).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$3).red.convertFrom(this || _global$3);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$3).red = ctx;\n      return this || _global$3;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$3).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$3).red, \"redAdd works only with red numbers\");\n      return (this || _global$3).red.add(this || _global$3, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$3).red, \"redIAdd works only with red numbers\");\n      return (this || _global$3).red.iadd(this || _global$3, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$3).red, \"redSub works only with red numbers\");\n      return (this || _global$3).red.sub(this || _global$3, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$3).red, \"redISub works only with red numbers\");\n      return (this || _global$3).red.isub(this || _global$3, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$3).red, \"redShl works only with red numbers\");\n      return (this || _global$3).red.shl(this || _global$3, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$3).red, \"redMul works only with red numbers\");\n      (this || _global$3).red._verify2(this || _global$3, num);\n      return (this || _global$3).red.mul(this || _global$3, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$3).red, \"redMul works only with red numbers\");\n      (this || _global$3).red._verify2(this || _global$3, num);\n      return (this || _global$3).red.imul(this || _global$3, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$3).red, \"redSqr works only with red numbers\");\n      (this || _global$3).red._verify1(this || _global$3);\n      return (this || _global$3).red.sqr(this || _global$3);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$3).red, \"redISqr works only with red numbers\");\n      (this || _global$3).red._verify1(this || _global$3);\n      return (this || _global$3).red.isqr(this || _global$3);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$3).red, \"redSqrt works only with red numbers\");\n      (this || _global$3).red._verify1(this || _global$3);\n      return (this || _global$3).red.sqrt(this || _global$3);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$3).red, \"redInvm works only with red numbers\");\n      (this || _global$3).red._verify1(this || _global$3);\n      return (this || _global$3).red.invm(this || _global$3);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$3).red, \"redNeg works only with red numbers\");\n      (this || _global$3).red._verify1(this || _global$3);\n      return (this || _global$3).red.neg(this || _global$3);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$3).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$3).red._verify1(this || _global$3);\n      return (this || _global$3).red.pow(this || _global$3, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$3).name = name2;\n      (this || _global$3).p = new BN(p5, 16);\n      (this || _global$3).n = (this || _global$3).p.bitLength();\n      (this || _global$3).k = new BN(1).iushln((this || _global$3).n).isub((this || _global$3).p);\n      (this || _global$3).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$3).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$3).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$3).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$3).n);\n      var cmp = rlen < (this || _global$3).n ? -1 : r5.ucmp((this || _global$3).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$3).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$3).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$3).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$3, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$3, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$3, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$3, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$3).m = prime.p;\n        (this || _global$3).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$3).m = m4;\n        (this || _global$3).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$3).prime) return (this || _global$3).prime.ireduce(a5)._forceRed(this || _global$3);\n      return a5.umod((this || _global$3).m)._forceRed(this || _global$3);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$3).m.sub(a5)._forceRed(this || _global$3);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$3).m) >= 0) {\n        res.isub((this || _global$3).m);\n      }\n      return res._forceRed(this || _global$3);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$3).m) >= 0) {\n        res.isub((this || _global$3).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$3).m);\n      }\n      return res._forceRed(this || _global$3);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$3).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$3).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$3).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$3).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$3);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$3).m.subn(1).iushrn(1);\n      var z4 = (this || _global$3).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$3);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$3).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$3);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$3);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$3).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$3, m4);\n      (this || _global$3).shift = (this || _global$3).m.bitLength();\n      if ((this || _global$3).shift % 26 !== 0) {\n        (this || _global$3).shift += 26 - (this || _global$3).shift % 26;\n      }\n      (this || _global$3).r = new BN(1).iushln((this || _global$3).shift);\n      (this || _global$3).r2 = this.imod((this || _global$3).r.sqr());\n      (this || _global$3).rinv = (this || _global$3).r._invmp((this || _global$3).m);\n      (this || _global$3).minv = (this || _global$3).rinv.mul((this || _global$3).r).isubn(1).div((this || _global$3).m);\n      (this || _global$3).minv = (this || _global$3).minv.umod((this || _global$3).r);\n      (this || _global$3).minv = (this || _global$3).r.sub((this || _global$3).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$3).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$3).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$3).shift).mul((this || _global$3).minv).imaskn((this || _global$3).shift).mul((this || _global$3).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$3).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$3).m) >= 0) {\n        res = u5.isub((this || _global$3).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$3).m);\n      }\n      return res._forceRed(this || _global$3);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$3);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$3).shift).mul((this || _global$3).minv).imaskn((this || _global$3).shift).mul((this || _global$3).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$3).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$3).m) >= 0) {\n        res = u5.isub((this || _global$3).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$3).m);\n      }\n      return res._forceRed(this || _global$3);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$3).m).mul((this || _global$3).r2));\n      return res._forceRed(this || _global$3);\n    };\n  })(module$1, exports$b2);\n  return module$1.exports;\n}\nvar exports$a2 = {};\nvar _dewExec$92 = false;\nvar _global$22 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$92() {\n  if (_dewExec$92) return exports$a2;\n  _dewExec$92 = true;\n  var Buffer = dew().Buffer;\n  var elliptic = dew$x();\n  var BN = dew$a2();\n  exports$a2 = function createECDH2(curve) {\n    return new ECDH(curve);\n  };\n  var aliases = {\n    secp256k1: {\n      name: \"secp256k1\",\n      byteLength: 32\n    },\n    secp224r1: {\n      name: \"p224\",\n      byteLength: 28\n    },\n    prime256v1: {\n      name: \"p256\",\n      byteLength: 32\n    },\n    prime192v1: {\n      name: \"p192\",\n      byteLength: 24\n    },\n    ed25519: {\n      name: \"ed25519\",\n      byteLength: 32\n    },\n    secp384r1: {\n      name: \"p384\",\n      byteLength: 48\n    },\n    secp521r1: {\n      name: \"p521\",\n      byteLength: 66\n    }\n  };\n  aliases.p224 = aliases.secp224r1;\n  aliases.p256 = aliases.secp256r1 = aliases.prime256v1;\n  aliases.p192 = aliases.secp192r1 = aliases.prime192v1;\n  aliases.p384 = aliases.secp384r1;\n  aliases.p521 = aliases.secp521r1;\n  function ECDH(curve) {\n    (this || _global$22).curveType = aliases[curve];\n    if (!(this || _global$22).curveType) {\n      (this || _global$22).curveType = {\n        name: curve\n      };\n    }\n    (this || _global$22).curve = new elliptic.ec((this || _global$22).curveType.name);\n    (this || _global$22).keys = void 0;\n  }\n  ECDH.prototype.generateKeys = function(enc, format) {\n    (this || _global$22).keys = (this || _global$22).curve.genKeyPair();\n    return this.getPublicKey(enc, format);\n  };\n  ECDH.prototype.computeSecret = function(other, inenc, enc) {\n    inenc = inenc || \"utf8\";\n    if (!Buffer.isBuffer(other)) {\n      other = new Buffer(other, inenc);\n    }\n    var otherPub = (this || _global$22).curve.keyFromPublic(other).getPublic();\n    var out = otherPub.mul((this || _global$22).keys.getPrivate()).getX();\n    return formatReturnValue(out, enc, (this || _global$22).curveType.byteLength);\n  };\n  ECDH.prototype.getPublicKey = function(enc, format) {\n    var key = (this || _global$22).keys.getPublic(format === \"compressed\", true);\n    if (format === \"hybrid\") {\n      if (key[key.length - 1] % 2) {\n        key[0] = 7;\n      } else {\n        key[0] = 6;\n      }\n    }\n    return formatReturnValue(key, enc);\n  };\n  ECDH.prototype.getPrivateKey = function(enc) {\n    return formatReturnValue((this || _global$22).keys.getPrivate(), enc);\n  };\n  ECDH.prototype.setPublicKey = function(pub, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(pub)) {\n      pub = new Buffer(pub, enc);\n    }\n    (this || _global$22).keys._importPublic(pub);\n    return this || _global$22;\n  };\n  ECDH.prototype.setPrivateKey = function(priv, enc) {\n    enc = enc || \"utf8\";\n    if (!Buffer.isBuffer(priv)) {\n      priv = new Buffer(priv, enc);\n    }\n    var _priv = new BN(priv);\n    _priv = _priv.toString(16);\n    (this || _global$22).keys = (this || _global$22).curve.genKeyPair();\n    (this || _global$22).keys._importPrivate(_priv);\n    return this || _global$22;\n  };\n  function formatReturnValue(bn, enc, len) {\n    if (!Array.isArray(bn)) {\n      bn = bn.toArray();\n    }\n    var buf = new Buffer(bn);\n    if (len && buf.length < len) {\n      var zeros = new Buffer(len - buf.length);\n      zeros.fill(0);\n      buf = Buffer.concat([zeros, buf]);\n    }\n    if (!enc) {\n      return buf;\n    } else {\n      return buf.toString(enc);\n    }\n  }\n  return exports$a2;\n}\nvar exports$92 = {};\nvar _dewExec$82 = false;\nfunction dew$82() {\n  if (_dewExec$82) return exports$92;\n  _dewExec$82 = true;\n  var createHash2 = dew$3t();\n  var Buffer = dew$12().Buffer;\n  exports$92 = function(seed, len) {\n    var t5 = Buffer.alloc(0);\n    var i5 = 0;\n    var c5;\n    while (t5.length < len) {\n      c5 = i2ops(i5++);\n      t5 = Buffer.concat([t5, createHash2(\"sha1\").update(seed).update(c5).digest()]);\n    }\n    return t5.slice(0, len);\n  };\n  function i2ops(c5) {\n    var out = Buffer.allocUnsafe(4);\n    out.writeUInt32BE(c5, 0);\n    return out;\n  }\n  return exports$92;\n}\nvar exports$82 = {};\nvar _dewExec$72 = false;\nfunction dew$72() {\n  if (_dewExec$72) return exports$82;\n  _dewExec$72 = true;\n  exports$82 = function xor(a5, b4) {\n    var len = a5.length;\n    var i5 = -1;\n    while (++i5 < len) {\n      a5[i5] ^= b4[i5];\n    }\n    return a5;\n  };\n  return exports$82;\n}\nvar exports$72 = {};\nvar _dewExec$62 = false;\nvar module = {\n  exports: exports$72\n};\nvar _global$110 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$62() {\n  if (_dewExec$62) return module.exports;\n  _dewExec$62 = true;\n  (function(module2, exports11) {\n    function assert2(val, msg) {\n      if (!val) throw new Error(msg || \"Assertion failed\");\n    }\n    function inherits(ctor, superCtor) {\n      ctor.super_ = superCtor;\n      var TempCtor = function() {\n      };\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n    function BN(number, base, endian) {\n      if (BN.isBN(number)) {\n        return number;\n      }\n      (this || _global$110).negative = 0;\n      (this || _global$110).words = null;\n      (this || _global$110).length = 0;\n      (this || _global$110).red = null;\n      if (number !== null) {\n        if (base === \"le\" || base === \"be\") {\n          endian = base;\n          base = 10;\n        }\n        this._init(number || 0, base || 10, endian || \"be\");\n      }\n    }\n    if (typeof module2 === \"object\") {\n      module2.exports = BN;\n    } else {\n      exports11.BN = BN;\n    }\n    BN.BN = BN;\n    BN.wordSize = 26;\n    var Buffer;\n    try {\n      if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n        Buffer = window.Buffer;\n      } else {\n        Buffer = dew().Buffer;\n      }\n    } catch (e7) {\n    }\n    BN.isBN = function isBN(num) {\n      if (num instanceof BN) {\n        return true;\n      }\n      return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n    };\n    BN.max = function max(left, right) {\n      if (left.cmp(right) > 0) return left;\n      return right;\n    };\n    BN.min = function min(left, right) {\n      if (left.cmp(right) < 0) return left;\n      return right;\n    };\n    BN.prototype._init = function init(number, base, endian) {\n      if (typeof number === \"number\") {\n        return this._initNumber(number, base, endian);\n      }\n      if (typeof number === \"object\") {\n        return this._initArray(number, base, endian);\n      }\n      if (base === \"hex\") {\n        base = 16;\n      }\n      assert2(base === (base | 0) && base >= 2 && base <= 36);\n      number = number.toString().replace(/\\s+/g, \"\");\n      var start = 0;\n      if (number[0] === \"-\") {\n        start++;\n        (this || _global$110).negative = 1;\n      }\n      if (start < number.length) {\n        if (base === 16) {\n          this._parseHex(number, start, endian);\n        } else {\n          this._parseBase(number, base, start);\n          if (endian === \"le\") {\n            this._initArray(this.toArray(), base, endian);\n          }\n        }\n      }\n    };\n    BN.prototype._initNumber = function _initNumber(number, base, endian) {\n      if (number < 0) {\n        (this || _global$110).negative = 1;\n        number = -number;\n      }\n      if (number < 67108864) {\n        (this || _global$110).words = [number & 67108863];\n        (this || _global$110).length = 1;\n      } else if (number < 4503599627370496) {\n        (this || _global$110).words = [number & 67108863, number / 67108864 & 67108863];\n        (this || _global$110).length = 2;\n      } else {\n        assert2(number < 9007199254740992);\n        (this || _global$110).words = [number & 67108863, number / 67108864 & 67108863, 1];\n        (this || _global$110).length = 3;\n      }\n      if (endian !== \"le\") return;\n      this._initArray(this.toArray(), base, endian);\n    };\n    BN.prototype._initArray = function _initArray(number, base, endian) {\n      assert2(typeof number.length === \"number\");\n      if (number.length <= 0) {\n        (this || _global$110).words = [0];\n        (this || _global$110).length = 1;\n        return this || _global$110;\n      }\n      (this || _global$110).length = Math.ceil(number.length / 3);\n      (this || _global$110).words = new Array((this || _global$110).length);\n      for (var i5 = 0; i5 < (this || _global$110).length; i5++) {\n        (this || _global$110).words[i5] = 0;\n      }\n      var j4, w4;\n      var off2 = 0;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1, j4 = 0; i5 >= 0; i5 -= 3) {\n          w4 = number[i5] | number[i5 - 1] << 8 | number[i5 - 2] << 16;\n          (this || _global$110).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$110).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      } else if (endian === \"le\") {\n        for (i5 = 0, j4 = 0; i5 < number.length; i5 += 3) {\n          w4 = number[i5] | number[i5 + 1] << 8 | number[i5 + 2] << 16;\n          (this || _global$110).words[j4] |= w4 << off2 & 67108863;\n          (this || _global$110).words[j4 + 1] = w4 >>> 26 - off2 & 67108863;\n          off2 += 24;\n          if (off2 >= 26) {\n            off2 -= 26;\n            j4++;\n          }\n        }\n      }\n      return this.strip();\n    };\n    function parseHex4Bits(string, index) {\n      var c5 = string.charCodeAt(index);\n      if (c5 >= 65 && c5 <= 70) {\n        return c5 - 55;\n      } else if (c5 >= 97 && c5 <= 102) {\n        return c5 - 87;\n      } else {\n        return c5 - 48 & 15;\n      }\n    }\n    function parseHexByte(string, lowerBound, index) {\n      var r5 = parseHex4Bits(string, index);\n      if (index - 1 >= lowerBound) {\n        r5 |= parseHex4Bits(string, index - 1) << 4;\n      }\n      return r5;\n    }\n    BN.prototype._parseHex = function _parseHex(number, start, endian) {\n      (this || _global$110).length = Math.ceil((number.length - start) / 6);\n      (this || _global$110).words = new Array((this || _global$110).length);\n      for (var i5 = 0; i5 < (this || _global$110).length; i5++) {\n        (this || _global$110).words[i5] = 0;\n      }\n      var off2 = 0;\n      var j4 = 0;\n      var w4;\n      if (endian === \"be\") {\n        for (i5 = number.length - 1; i5 >= start; i5 -= 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$110).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$110).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      } else {\n        var parseLength = number.length - start;\n        for (i5 = parseLength % 2 === 0 ? start + 1 : start; i5 < number.length; i5 += 2) {\n          w4 = parseHexByte(number, start, i5) << off2;\n          (this || _global$110).words[j4] |= w4 & 67108863;\n          if (off2 >= 18) {\n            off2 -= 18;\n            j4 += 1;\n            (this || _global$110).words[j4] |= w4 >>> 26;\n          } else {\n            off2 += 8;\n          }\n        }\n      }\n      this.strip();\n    };\n    function parseBase(str, start, end, mul) {\n      var r5 = 0;\n      var len = Math.min(str.length, end);\n      for (var i5 = start; i5 < len; i5++) {\n        var c5 = str.charCodeAt(i5) - 48;\n        r5 *= mul;\n        if (c5 >= 49) {\n          r5 += c5 - 49 + 10;\n        } else if (c5 >= 17) {\n          r5 += c5 - 17 + 10;\n        } else {\n          r5 += c5;\n        }\n      }\n      return r5;\n    }\n    BN.prototype._parseBase = function _parseBase(number, base, start) {\n      (this || _global$110).words = [0];\n      (this || _global$110).length = 1;\n      for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) {\n        limbLen++;\n      }\n      limbLen--;\n      limbPow = limbPow / base | 0;\n      var total = number.length - start;\n      var mod = total % limbLen;\n      var end = Math.min(total, total - mod) + start;\n      var word = 0;\n      for (var i5 = start; i5 < end; i5 += limbLen) {\n        word = parseBase(number, i5, i5 + limbLen, base);\n        this.imuln(limbPow);\n        if ((this || _global$110).words[0] + word < 67108864) {\n          (this || _global$110).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      if (mod !== 0) {\n        var pow = 1;\n        word = parseBase(number, i5, number.length, base);\n        for (i5 = 0; i5 < mod; i5++) {\n          pow *= base;\n        }\n        this.imuln(pow);\n        if ((this || _global$110).words[0] + word < 67108864) {\n          (this || _global$110).words[0] += word;\n        } else {\n          this._iaddn(word);\n        }\n      }\n      this.strip();\n    };\n    BN.prototype.copy = function copy(dest) {\n      dest.words = new Array((this || _global$110).length);\n      for (var i5 = 0; i5 < (this || _global$110).length; i5++) {\n        dest.words[i5] = (this || _global$110).words[i5];\n      }\n      dest.length = (this || _global$110).length;\n      dest.negative = (this || _global$110).negative;\n      dest.red = (this || _global$110).red;\n    };\n    BN.prototype.clone = function clone() {\n      var r5 = new BN(null);\n      this.copy(r5);\n      return r5;\n    };\n    BN.prototype._expand = function _expand(size) {\n      while ((this || _global$110).length < size) {\n        (this || _global$110).words[(this || _global$110).length++] = 0;\n      }\n      return this || _global$110;\n    };\n    BN.prototype.strip = function strip() {\n      while ((this || _global$110).length > 1 && (this || _global$110).words[(this || _global$110).length - 1] === 0) {\n        (this || _global$110).length--;\n      }\n      return this._normSign();\n    };\n    BN.prototype._normSign = function _normSign() {\n      if ((this || _global$110).length === 1 && (this || _global$110).words[0] === 0) {\n        (this || _global$110).negative = 0;\n      }\n      return this || _global$110;\n    };\n    BN.prototype.inspect = function inspect() {\n      return ((this || _global$110).red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n    };\n    var zeros = [\"\", \"0\", \"00\", \"000\", \"0000\", \"00000\", \"000000\", \"0000000\", \"00000000\", \"000000000\", \"0000000000\", \"00000000000\", \"000000000000\", \"0000000000000\", \"00000000000000\", \"000000000000000\", \"0000000000000000\", \"00000000000000000\", \"000000000000000000\", \"0000000000000000000\", \"00000000000000000000\", \"000000000000000000000\", \"0000000000000000000000\", \"00000000000000000000000\", \"000000000000000000000000\", \"0000000000000000000000000\"];\n    var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n    var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n    BN.prototype.toString = function toString(base, padding) {\n      base = base || 10;\n      padding = padding | 0 || 1;\n      var out;\n      if (base === 16 || base === \"hex\") {\n        out = \"\";\n        var off2 = 0;\n        var carry = 0;\n        for (var i5 = 0; i5 < (this || _global$110).length; i5++) {\n          var w4 = (this || _global$110).words[i5];\n          var word = ((w4 << off2 | carry) & 16777215).toString(16);\n          carry = w4 >>> 24 - off2 & 16777215;\n          if (carry !== 0 || i5 !== (this || _global$110).length - 1) {\n            out = zeros[6 - word.length] + word + out;\n          } else {\n            out = word + out;\n          }\n          off2 += 2;\n          if (off2 >= 26) {\n            off2 -= 26;\n            i5--;\n          }\n        }\n        if (carry !== 0) {\n          out = carry.toString(16) + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$110).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      if (base === (base | 0) && base >= 2 && base <= 36) {\n        var groupSize = groupSizes[base];\n        var groupBase = groupBases[base];\n        out = \"\";\n        var c5 = this.clone();\n        c5.negative = 0;\n        while (!c5.isZero()) {\n          var r5 = c5.modn(groupBase).toString(base);\n          c5 = c5.idivn(groupBase);\n          if (!c5.isZero()) {\n            out = zeros[groupSize - r5.length] + r5 + out;\n          } else {\n            out = r5 + out;\n          }\n        }\n        if (this.isZero()) {\n          out = \"0\" + out;\n        }\n        while (out.length % padding !== 0) {\n          out = \"0\" + out;\n        }\n        if ((this || _global$110).negative !== 0) {\n          out = \"-\" + out;\n        }\n        return out;\n      }\n      assert2(false, \"Base should be between 2 and 36\");\n    };\n    BN.prototype.toNumber = function toNumber() {\n      var ret = (this || _global$110).words[0];\n      if ((this || _global$110).length === 2) {\n        ret += (this || _global$110).words[1] * 67108864;\n      } else if ((this || _global$110).length === 3 && (this || _global$110).words[2] === 1) {\n        ret += 4503599627370496 + (this || _global$110).words[1] * 67108864;\n      } else if ((this || _global$110).length > 2) {\n        assert2(false, \"Number can only safely store up to 53 bits\");\n      }\n      return (this || _global$110).negative !== 0 ? -ret : ret;\n    };\n    BN.prototype.toJSON = function toJSON() {\n      return this.toString(16);\n    };\n    BN.prototype.toBuffer = function toBuffer(endian, length) {\n      assert2(typeof Buffer !== \"undefined\");\n      return this.toArrayLike(Buffer, endian, length);\n    };\n    BN.prototype.toArray = function toArray(endian, length) {\n      return this.toArrayLike(Array, endian, length);\n    };\n    BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n      var byteLength = this.byteLength();\n      var reqLength = length || Math.max(1, byteLength);\n      assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n      assert2(reqLength > 0, \"Requested array length <= 0\");\n      this.strip();\n      var littleEndian = endian === \"le\";\n      var res = new ArrayType(reqLength);\n      var b4, i5;\n      var q3 = this.clone();\n      if (!littleEndian) {\n        for (i5 = 0; i5 < reqLength - byteLength; i5++) {\n          res[i5] = 0;\n        }\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[reqLength - i5 - 1] = b4;\n        }\n      } else {\n        for (i5 = 0; !q3.isZero(); i5++) {\n          b4 = q3.andln(255);\n          q3.iushrn(8);\n          res[i5] = b4;\n        }\n        for (; i5 < reqLength; i5++) {\n          res[i5] = 0;\n        }\n      }\n      return res;\n    };\n    if (Math.clz32) {\n      BN.prototype._countBits = function _countBits(w4) {\n        return 32 - Math.clz32(w4);\n      };\n    } else {\n      BN.prototype._countBits = function _countBits(w4) {\n        var t5 = w4;\n        var r5 = 0;\n        if (t5 >= 4096) {\n          r5 += 13;\n          t5 >>>= 13;\n        }\n        if (t5 >= 64) {\n          r5 += 7;\n          t5 >>>= 7;\n        }\n        if (t5 >= 8) {\n          r5 += 4;\n          t5 >>>= 4;\n        }\n        if (t5 >= 2) {\n          r5 += 2;\n          t5 >>>= 2;\n        }\n        return r5 + t5;\n      };\n    }\n    BN.prototype._zeroBits = function _zeroBits(w4) {\n      if (w4 === 0) return 26;\n      var t5 = w4;\n      var r5 = 0;\n      if ((t5 & 8191) === 0) {\n        r5 += 13;\n        t5 >>>= 13;\n      }\n      if ((t5 & 127) === 0) {\n        r5 += 7;\n        t5 >>>= 7;\n      }\n      if ((t5 & 15) === 0) {\n        r5 += 4;\n        t5 >>>= 4;\n      }\n      if ((t5 & 3) === 0) {\n        r5 += 2;\n        t5 >>>= 2;\n      }\n      if ((t5 & 1) === 0) {\n        r5++;\n      }\n      return r5;\n    };\n    BN.prototype.bitLength = function bitLength() {\n      var w4 = (this || _global$110).words[(this || _global$110).length - 1];\n      var hi = this._countBits(w4);\n      return ((this || _global$110).length - 1) * 26 + hi;\n    };\n    function toBitArray(num) {\n      var w4 = new Array(num.bitLength());\n      for (var bit = 0; bit < w4.length; bit++) {\n        var off2 = bit / 26 | 0;\n        var wbit = bit % 26;\n        w4[bit] = (num.words[off2] & 1 << wbit) >>> wbit;\n      }\n      return w4;\n    }\n    BN.prototype.zeroBits = function zeroBits() {\n      if (this.isZero()) return 0;\n      var r5 = 0;\n      for (var i5 = 0; i5 < (this || _global$110).length; i5++) {\n        var b4 = this._zeroBits((this || _global$110).words[i5]);\n        r5 += b4;\n        if (b4 !== 26) break;\n      }\n      return r5;\n    };\n    BN.prototype.byteLength = function byteLength() {\n      return Math.ceil(this.bitLength() / 8);\n    };\n    BN.prototype.toTwos = function toTwos(width) {\n      if ((this || _global$110).negative !== 0) {\n        return this.abs().inotn(width).iaddn(1);\n      }\n      return this.clone();\n    };\n    BN.prototype.fromTwos = function fromTwos(width) {\n      if (this.testn(width - 1)) {\n        return this.notn(width).iaddn(1).ineg();\n      }\n      return this.clone();\n    };\n    BN.prototype.isNeg = function isNeg() {\n      return (this || _global$110).negative !== 0;\n    };\n    BN.prototype.neg = function neg() {\n      return this.clone().ineg();\n    };\n    BN.prototype.ineg = function ineg() {\n      if (!this.isZero()) {\n        (this || _global$110).negative ^= 1;\n      }\n      return this || _global$110;\n    };\n    BN.prototype.iuor = function iuor(num) {\n      while ((this || _global$110).length < num.length) {\n        (this || _global$110).words[(this || _global$110).length++] = 0;\n      }\n      for (var i5 = 0; i5 < num.length; i5++) {\n        (this || _global$110).words[i5] = (this || _global$110).words[i5] | num.words[i5];\n      }\n      return this.strip();\n    };\n    BN.prototype.ior = function ior(num) {\n      assert2(((this || _global$110).negative | num.negative) === 0);\n      return this.iuor(num);\n    };\n    BN.prototype.or = function or(num) {\n      if ((this || _global$110).length > num.length) return this.clone().ior(num);\n      return num.clone().ior(this || _global$110);\n    };\n    BN.prototype.uor = function uor(num) {\n      if ((this || _global$110).length > num.length) return this.clone().iuor(num);\n      return num.clone().iuor(this || _global$110);\n    };\n    BN.prototype.iuand = function iuand(num) {\n      var b4;\n      if ((this || _global$110).length > num.length) {\n        b4 = num;\n      } else {\n        b4 = this || _global$110;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$110).words[i5] = (this || _global$110).words[i5] & num.words[i5];\n      }\n      (this || _global$110).length = b4.length;\n      return this.strip();\n    };\n    BN.prototype.iand = function iand(num) {\n      assert2(((this || _global$110).negative | num.negative) === 0);\n      return this.iuand(num);\n    };\n    BN.prototype.and = function and(num) {\n      if ((this || _global$110).length > num.length) return this.clone().iand(num);\n      return num.clone().iand(this || _global$110);\n    };\n    BN.prototype.uand = function uand(num) {\n      if ((this || _global$110).length > num.length) return this.clone().iuand(num);\n      return num.clone().iuand(this || _global$110);\n    };\n    BN.prototype.iuxor = function iuxor(num) {\n      var a5;\n      var b4;\n      if ((this || _global$110).length > num.length) {\n        a5 = this || _global$110;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$110;\n      }\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        (this || _global$110).words[i5] = a5.words[i5] ^ b4.words[i5];\n      }\n      if ((this || _global$110) !== a5) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$110).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$110).length = a5.length;\n      return this.strip();\n    };\n    BN.prototype.ixor = function ixor(num) {\n      assert2(((this || _global$110).negative | num.negative) === 0);\n      return this.iuxor(num);\n    };\n    BN.prototype.xor = function xor(num) {\n      if ((this || _global$110).length > num.length) return this.clone().ixor(num);\n      return num.clone().ixor(this || _global$110);\n    };\n    BN.prototype.uxor = function uxor(num) {\n      if ((this || _global$110).length > num.length) return this.clone().iuxor(num);\n      return num.clone().iuxor(this || _global$110);\n    };\n    BN.prototype.inotn = function inotn(width) {\n      assert2(typeof width === \"number\" && width >= 0);\n      var bytesNeeded = Math.ceil(width / 26) | 0;\n      var bitsLeft = width % 26;\n      this._expand(bytesNeeded);\n      if (bitsLeft > 0) {\n        bytesNeeded--;\n      }\n      for (var i5 = 0; i5 < bytesNeeded; i5++) {\n        (this || _global$110).words[i5] = ~(this || _global$110).words[i5] & 67108863;\n      }\n      if (bitsLeft > 0) {\n        (this || _global$110).words[i5] = ~(this || _global$110).words[i5] & 67108863 >> 26 - bitsLeft;\n      }\n      return this.strip();\n    };\n    BN.prototype.notn = function notn(width) {\n      return this.clone().inotn(width);\n    };\n    BN.prototype.setn = function setn(bit, val) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var off2 = bit / 26 | 0;\n      var wbit = bit % 26;\n      this._expand(off2 + 1);\n      if (val) {\n        (this || _global$110).words[off2] = (this || _global$110).words[off2] | 1 << wbit;\n      } else {\n        (this || _global$110).words[off2] = (this || _global$110).words[off2] & ~(1 << wbit);\n      }\n      return this.strip();\n    };\n    BN.prototype.iadd = function iadd(num) {\n      var r5;\n      if ((this || _global$110).negative !== 0 && num.negative === 0) {\n        (this || _global$110).negative = 0;\n        r5 = this.isub(num);\n        (this || _global$110).negative ^= 1;\n        return this._normSign();\n      } else if ((this || _global$110).negative === 0 && num.negative !== 0) {\n        num.negative = 0;\n        r5 = this.isub(num);\n        num.negative = 1;\n        return r5._normSign();\n      }\n      var a5, b4;\n      if ((this || _global$110).length > num.length) {\n        a5 = this || _global$110;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$110;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) + (b4.words[i5] | 0) + carry;\n        (this || _global$110).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        (this || _global$110).words[i5] = r5 & 67108863;\n        carry = r5 >>> 26;\n      }\n      (this || _global$110).length = a5.length;\n      if (carry !== 0) {\n        (this || _global$110).words[(this || _global$110).length] = carry;\n        (this || _global$110).length++;\n      } else if (a5 !== (this || _global$110)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$110).words[i5] = a5.words[i5];\n        }\n      }\n      return this || _global$110;\n    };\n    BN.prototype.add = function add(num) {\n      var res;\n      if (num.negative !== 0 && (this || _global$110).negative === 0) {\n        num.negative = 0;\n        res = this.sub(num);\n        num.negative ^= 1;\n        return res;\n      } else if (num.negative === 0 && (this || _global$110).negative !== 0) {\n        (this || _global$110).negative = 0;\n        res = num.sub(this || _global$110);\n        (this || _global$110).negative = 1;\n        return res;\n      }\n      if ((this || _global$110).length > num.length) return this.clone().iadd(num);\n      return num.clone().iadd(this || _global$110);\n    };\n    BN.prototype.isub = function isub(num) {\n      if (num.negative !== 0) {\n        num.negative = 0;\n        var r5 = this.iadd(num);\n        num.negative = 1;\n        return r5._normSign();\n      } else if ((this || _global$110).negative !== 0) {\n        (this || _global$110).negative = 0;\n        this.iadd(num);\n        (this || _global$110).negative = 1;\n        return this._normSign();\n      }\n      var cmp = this.cmp(num);\n      if (cmp === 0) {\n        (this || _global$110).negative = 0;\n        (this || _global$110).length = 1;\n        (this || _global$110).words[0] = 0;\n        return this || _global$110;\n      }\n      var a5, b4;\n      if (cmp > 0) {\n        a5 = this || _global$110;\n        b4 = num;\n      } else {\n        a5 = num;\n        b4 = this || _global$110;\n      }\n      var carry = 0;\n      for (var i5 = 0; i5 < b4.length; i5++) {\n        r5 = (a5.words[i5] | 0) - (b4.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$110).words[i5] = r5 & 67108863;\n      }\n      for (; carry !== 0 && i5 < a5.length; i5++) {\n        r5 = (a5.words[i5] | 0) + carry;\n        carry = r5 >> 26;\n        (this || _global$110).words[i5] = r5 & 67108863;\n      }\n      if (carry === 0 && i5 < a5.length && a5 !== (this || _global$110)) {\n        for (; i5 < a5.length; i5++) {\n          (this || _global$110).words[i5] = a5.words[i5];\n        }\n      }\n      (this || _global$110).length = Math.max((this || _global$110).length, i5);\n      if (a5 !== (this || _global$110)) {\n        (this || _global$110).negative = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.sub = function sub(num) {\n      return this.clone().isub(num);\n    };\n    function smallMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      var len = self2.length + num.length | 0;\n      out.length = len;\n      len = len - 1 | 0;\n      var a5 = self2.words[0] | 0;\n      var b4 = num.words[0] | 0;\n      var r5 = a5 * b4;\n      var lo = r5 & 67108863;\n      var carry = r5 / 67108864 | 0;\n      out.words[0] = lo;\n      for (var k4 = 1; k4 < len; k4++) {\n        var ncarry = carry >>> 26;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4 | 0;\n          a5 = self2.words[i5] | 0;\n          b4 = num.words[j4] | 0;\n          r5 = a5 * b4 + rword;\n          ncarry += r5 / 67108864 | 0;\n          rword = r5 & 67108863;\n        }\n        out.words[k4] = rword | 0;\n        carry = ncarry | 0;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry | 0;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    var comb10MulTo = function comb10MulTo2(self2, num, out) {\n      var a5 = self2.words;\n      var b4 = num.words;\n      var o5 = out.words;\n      var c5 = 0;\n      var lo;\n      var mid;\n      var hi;\n      var a0 = a5[0] | 0;\n      var al0 = a0 & 8191;\n      var ah0 = a0 >>> 13;\n      var a1 = a5[1] | 0;\n      var al1 = a1 & 8191;\n      var ah1 = a1 >>> 13;\n      var a22 = a5[2] | 0;\n      var al2 = a22 & 8191;\n      var ah2 = a22 >>> 13;\n      var a32 = a5[3] | 0;\n      var al3 = a32 & 8191;\n      var ah3 = a32 >>> 13;\n      var a42 = a5[4] | 0;\n      var al4 = a42 & 8191;\n      var ah4 = a42 >>> 13;\n      var a52 = a5[5] | 0;\n      var al5 = a52 & 8191;\n      var ah5 = a52 >>> 13;\n      var a6 = a5[6] | 0;\n      var al6 = a6 & 8191;\n      var ah6 = a6 >>> 13;\n      var a7 = a5[7] | 0;\n      var al7 = a7 & 8191;\n      var ah7 = a7 >>> 13;\n      var a8 = a5[8] | 0;\n      var al8 = a8 & 8191;\n      var ah8 = a8 >>> 13;\n      var a9 = a5[9] | 0;\n      var al9 = a9 & 8191;\n      var ah9 = a9 >>> 13;\n      var b0 = b4[0] | 0;\n      var bl0 = b0 & 8191;\n      var bh0 = b0 >>> 13;\n      var b1 = b4[1] | 0;\n      var bl1 = b1 & 8191;\n      var bh1 = b1 >>> 13;\n      var b22 = b4[2] | 0;\n      var bl2 = b22 & 8191;\n      var bh2 = b22 >>> 13;\n      var b32 = b4[3] | 0;\n      var bl3 = b32 & 8191;\n      var bh3 = b32 >>> 13;\n      var b42 = b4[4] | 0;\n      var bl4 = b42 & 8191;\n      var bh4 = b42 >>> 13;\n      var b5 = b4[5] | 0;\n      var bl5 = b5 & 8191;\n      var bh5 = b5 >>> 13;\n      var b6 = b4[6] | 0;\n      var bl6 = b6 & 8191;\n      var bh6 = b6 >>> 13;\n      var b7 = b4[7] | 0;\n      var bl7 = b7 & 8191;\n      var bh7 = b7 >>> 13;\n      var b8 = b4[8] | 0;\n      var bl8 = b8 & 8191;\n      var bh8 = b8 >>> 13;\n      var b9 = b4[9] | 0;\n      var bl9 = b9 & 8191;\n      var bh9 = b9 >>> 13;\n      out.negative = self2.negative ^ num.negative;\n      out.length = 19;\n      lo = Math.imul(al0, bl0);\n      mid = Math.imul(al0, bh0);\n      mid = mid + Math.imul(ah0, bl0) | 0;\n      hi = Math.imul(ah0, bh0);\n      var w0 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n      w0 &= 67108863;\n      lo = Math.imul(al1, bl0);\n      mid = Math.imul(al1, bh0);\n      mid = mid + Math.imul(ah1, bl0) | 0;\n      hi = Math.imul(ah1, bh0);\n      lo = lo + Math.imul(al0, bl1) | 0;\n      mid = mid + Math.imul(al0, bh1) | 0;\n      mid = mid + Math.imul(ah0, bl1) | 0;\n      hi = hi + Math.imul(ah0, bh1) | 0;\n      var w1 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n      w1 &= 67108863;\n      lo = Math.imul(al2, bl0);\n      mid = Math.imul(al2, bh0);\n      mid = mid + Math.imul(ah2, bl0) | 0;\n      hi = Math.imul(ah2, bh0);\n      lo = lo + Math.imul(al1, bl1) | 0;\n      mid = mid + Math.imul(al1, bh1) | 0;\n      mid = mid + Math.imul(ah1, bl1) | 0;\n      hi = hi + Math.imul(ah1, bh1) | 0;\n      lo = lo + Math.imul(al0, bl2) | 0;\n      mid = mid + Math.imul(al0, bh2) | 0;\n      mid = mid + Math.imul(ah0, bl2) | 0;\n      hi = hi + Math.imul(ah0, bh2) | 0;\n      var w22 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n      w22 &= 67108863;\n      lo = Math.imul(al3, bl0);\n      mid = Math.imul(al3, bh0);\n      mid = mid + Math.imul(ah3, bl0) | 0;\n      hi = Math.imul(ah3, bh0);\n      lo = lo + Math.imul(al2, bl1) | 0;\n      mid = mid + Math.imul(al2, bh1) | 0;\n      mid = mid + Math.imul(ah2, bl1) | 0;\n      hi = hi + Math.imul(ah2, bh1) | 0;\n      lo = lo + Math.imul(al1, bl2) | 0;\n      mid = mid + Math.imul(al1, bh2) | 0;\n      mid = mid + Math.imul(ah1, bl2) | 0;\n      hi = hi + Math.imul(ah1, bh2) | 0;\n      lo = lo + Math.imul(al0, bl3) | 0;\n      mid = mid + Math.imul(al0, bh3) | 0;\n      mid = mid + Math.imul(ah0, bl3) | 0;\n      hi = hi + Math.imul(ah0, bh3) | 0;\n      var w32 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n      w32 &= 67108863;\n      lo = Math.imul(al4, bl0);\n      mid = Math.imul(al4, bh0);\n      mid = mid + Math.imul(ah4, bl0) | 0;\n      hi = Math.imul(ah4, bh0);\n      lo = lo + Math.imul(al3, bl1) | 0;\n      mid = mid + Math.imul(al3, bh1) | 0;\n      mid = mid + Math.imul(ah3, bl1) | 0;\n      hi = hi + Math.imul(ah3, bh1) | 0;\n      lo = lo + Math.imul(al2, bl2) | 0;\n      mid = mid + Math.imul(al2, bh2) | 0;\n      mid = mid + Math.imul(ah2, bl2) | 0;\n      hi = hi + Math.imul(ah2, bh2) | 0;\n      lo = lo + Math.imul(al1, bl3) | 0;\n      mid = mid + Math.imul(al1, bh3) | 0;\n      mid = mid + Math.imul(ah1, bl3) | 0;\n      hi = hi + Math.imul(ah1, bh3) | 0;\n      lo = lo + Math.imul(al0, bl4) | 0;\n      mid = mid + Math.imul(al0, bh4) | 0;\n      mid = mid + Math.imul(ah0, bl4) | 0;\n      hi = hi + Math.imul(ah0, bh4) | 0;\n      var w4 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n      w4 &= 67108863;\n      lo = Math.imul(al5, bl0);\n      mid = Math.imul(al5, bh0);\n      mid = mid + Math.imul(ah5, bl0) | 0;\n      hi = Math.imul(ah5, bh0);\n      lo = lo + Math.imul(al4, bl1) | 0;\n      mid = mid + Math.imul(al4, bh1) | 0;\n      mid = mid + Math.imul(ah4, bl1) | 0;\n      hi = hi + Math.imul(ah4, bh1) | 0;\n      lo = lo + Math.imul(al3, bl2) | 0;\n      mid = mid + Math.imul(al3, bh2) | 0;\n      mid = mid + Math.imul(ah3, bl2) | 0;\n      hi = hi + Math.imul(ah3, bh2) | 0;\n      lo = lo + Math.imul(al2, bl3) | 0;\n      mid = mid + Math.imul(al2, bh3) | 0;\n      mid = mid + Math.imul(ah2, bl3) | 0;\n      hi = hi + Math.imul(ah2, bh3) | 0;\n      lo = lo + Math.imul(al1, bl4) | 0;\n      mid = mid + Math.imul(al1, bh4) | 0;\n      mid = mid + Math.imul(ah1, bl4) | 0;\n      hi = hi + Math.imul(ah1, bh4) | 0;\n      lo = lo + Math.imul(al0, bl5) | 0;\n      mid = mid + Math.imul(al0, bh5) | 0;\n      mid = mid + Math.imul(ah0, bl5) | 0;\n      hi = hi + Math.imul(ah0, bh5) | 0;\n      var w5 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n      w5 &= 67108863;\n      lo = Math.imul(al6, bl0);\n      mid = Math.imul(al6, bh0);\n      mid = mid + Math.imul(ah6, bl0) | 0;\n      hi = Math.imul(ah6, bh0);\n      lo = lo + Math.imul(al5, bl1) | 0;\n      mid = mid + Math.imul(al5, bh1) | 0;\n      mid = mid + Math.imul(ah5, bl1) | 0;\n      hi = hi + Math.imul(ah5, bh1) | 0;\n      lo = lo + Math.imul(al4, bl2) | 0;\n      mid = mid + Math.imul(al4, bh2) | 0;\n      mid = mid + Math.imul(ah4, bl2) | 0;\n      hi = hi + Math.imul(ah4, bh2) | 0;\n      lo = lo + Math.imul(al3, bl3) | 0;\n      mid = mid + Math.imul(al3, bh3) | 0;\n      mid = mid + Math.imul(ah3, bl3) | 0;\n      hi = hi + Math.imul(ah3, bh3) | 0;\n      lo = lo + Math.imul(al2, bl4) | 0;\n      mid = mid + Math.imul(al2, bh4) | 0;\n      mid = mid + Math.imul(ah2, bl4) | 0;\n      hi = hi + Math.imul(ah2, bh4) | 0;\n      lo = lo + Math.imul(al1, bl5) | 0;\n      mid = mid + Math.imul(al1, bh5) | 0;\n      mid = mid + Math.imul(ah1, bl5) | 0;\n      hi = hi + Math.imul(ah1, bh5) | 0;\n      lo = lo + Math.imul(al0, bl6) | 0;\n      mid = mid + Math.imul(al0, bh6) | 0;\n      mid = mid + Math.imul(ah0, bl6) | 0;\n      hi = hi + Math.imul(ah0, bh6) | 0;\n      var w6 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n      w6 &= 67108863;\n      lo = Math.imul(al7, bl0);\n      mid = Math.imul(al7, bh0);\n      mid = mid + Math.imul(ah7, bl0) | 0;\n      hi = Math.imul(ah7, bh0);\n      lo = lo + Math.imul(al6, bl1) | 0;\n      mid = mid + Math.imul(al6, bh1) | 0;\n      mid = mid + Math.imul(ah6, bl1) | 0;\n      hi = hi + Math.imul(ah6, bh1) | 0;\n      lo = lo + Math.imul(al5, bl2) | 0;\n      mid = mid + Math.imul(al5, bh2) | 0;\n      mid = mid + Math.imul(ah5, bl2) | 0;\n      hi = hi + Math.imul(ah5, bh2) | 0;\n      lo = lo + Math.imul(al4, bl3) | 0;\n      mid = mid + Math.imul(al4, bh3) | 0;\n      mid = mid + Math.imul(ah4, bl3) | 0;\n      hi = hi + Math.imul(ah4, bh3) | 0;\n      lo = lo + Math.imul(al3, bl4) | 0;\n      mid = mid + Math.imul(al3, bh4) | 0;\n      mid = mid + Math.imul(ah3, bl4) | 0;\n      hi = hi + Math.imul(ah3, bh4) | 0;\n      lo = lo + Math.imul(al2, bl5) | 0;\n      mid = mid + Math.imul(al2, bh5) | 0;\n      mid = mid + Math.imul(ah2, bl5) | 0;\n      hi = hi + Math.imul(ah2, bh5) | 0;\n      lo = lo + Math.imul(al1, bl6) | 0;\n      mid = mid + Math.imul(al1, bh6) | 0;\n      mid = mid + Math.imul(ah1, bl6) | 0;\n      hi = hi + Math.imul(ah1, bh6) | 0;\n      lo = lo + Math.imul(al0, bl7) | 0;\n      mid = mid + Math.imul(al0, bh7) | 0;\n      mid = mid + Math.imul(ah0, bl7) | 0;\n      hi = hi + Math.imul(ah0, bh7) | 0;\n      var w7 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n      w7 &= 67108863;\n      lo = Math.imul(al8, bl0);\n      mid = Math.imul(al8, bh0);\n      mid = mid + Math.imul(ah8, bl0) | 0;\n      hi = Math.imul(ah8, bh0);\n      lo = lo + Math.imul(al7, bl1) | 0;\n      mid = mid + Math.imul(al7, bh1) | 0;\n      mid = mid + Math.imul(ah7, bl1) | 0;\n      hi = hi + Math.imul(ah7, bh1) | 0;\n      lo = lo + Math.imul(al6, bl2) | 0;\n      mid = mid + Math.imul(al6, bh2) | 0;\n      mid = mid + Math.imul(ah6, bl2) | 0;\n      hi = hi + Math.imul(ah6, bh2) | 0;\n      lo = lo + Math.imul(al5, bl3) | 0;\n      mid = mid + Math.imul(al5, bh3) | 0;\n      mid = mid + Math.imul(ah5, bl3) | 0;\n      hi = hi + Math.imul(ah5, bh3) | 0;\n      lo = lo + Math.imul(al4, bl4) | 0;\n      mid = mid + Math.imul(al4, bh4) | 0;\n      mid = mid + Math.imul(ah4, bl4) | 0;\n      hi = hi + Math.imul(ah4, bh4) | 0;\n      lo = lo + Math.imul(al3, bl5) | 0;\n      mid = mid + Math.imul(al3, bh5) | 0;\n      mid = mid + Math.imul(ah3, bl5) | 0;\n      hi = hi + Math.imul(ah3, bh5) | 0;\n      lo = lo + Math.imul(al2, bl6) | 0;\n      mid = mid + Math.imul(al2, bh6) | 0;\n      mid = mid + Math.imul(ah2, bl6) | 0;\n      hi = hi + Math.imul(ah2, bh6) | 0;\n      lo = lo + Math.imul(al1, bl7) | 0;\n      mid = mid + Math.imul(al1, bh7) | 0;\n      mid = mid + Math.imul(ah1, bl7) | 0;\n      hi = hi + Math.imul(ah1, bh7) | 0;\n      lo = lo + Math.imul(al0, bl8) | 0;\n      mid = mid + Math.imul(al0, bh8) | 0;\n      mid = mid + Math.imul(ah0, bl8) | 0;\n      hi = hi + Math.imul(ah0, bh8) | 0;\n      var w8 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n      w8 &= 67108863;\n      lo = Math.imul(al9, bl0);\n      mid = Math.imul(al9, bh0);\n      mid = mid + Math.imul(ah9, bl0) | 0;\n      hi = Math.imul(ah9, bh0);\n      lo = lo + Math.imul(al8, bl1) | 0;\n      mid = mid + Math.imul(al8, bh1) | 0;\n      mid = mid + Math.imul(ah8, bl1) | 0;\n      hi = hi + Math.imul(ah8, bh1) | 0;\n      lo = lo + Math.imul(al7, bl2) | 0;\n      mid = mid + Math.imul(al7, bh2) | 0;\n      mid = mid + Math.imul(ah7, bl2) | 0;\n      hi = hi + Math.imul(ah7, bh2) | 0;\n      lo = lo + Math.imul(al6, bl3) | 0;\n      mid = mid + Math.imul(al6, bh3) | 0;\n      mid = mid + Math.imul(ah6, bl3) | 0;\n      hi = hi + Math.imul(ah6, bh3) | 0;\n      lo = lo + Math.imul(al5, bl4) | 0;\n      mid = mid + Math.imul(al5, bh4) | 0;\n      mid = mid + Math.imul(ah5, bl4) | 0;\n      hi = hi + Math.imul(ah5, bh4) | 0;\n      lo = lo + Math.imul(al4, bl5) | 0;\n      mid = mid + Math.imul(al4, bh5) | 0;\n      mid = mid + Math.imul(ah4, bl5) | 0;\n      hi = hi + Math.imul(ah4, bh5) | 0;\n      lo = lo + Math.imul(al3, bl6) | 0;\n      mid = mid + Math.imul(al3, bh6) | 0;\n      mid = mid + Math.imul(ah3, bl6) | 0;\n      hi = hi + Math.imul(ah3, bh6) | 0;\n      lo = lo + Math.imul(al2, bl7) | 0;\n      mid = mid + Math.imul(al2, bh7) | 0;\n      mid = mid + Math.imul(ah2, bl7) | 0;\n      hi = hi + Math.imul(ah2, bh7) | 0;\n      lo = lo + Math.imul(al1, bl8) | 0;\n      mid = mid + Math.imul(al1, bh8) | 0;\n      mid = mid + Math.imul(ah1, bl8) | 0;\n      hi = hi + Math.imul(ah1, bh8) | 0;\n      lo = lo + Math.imul(al0, bl9) | 0;\n      mid = mid + Math.imul(al0, bh9) | 0;\n      mid = mid + Math.imul(ah0, bl9) | 0;\n      hi = hi + Math.imul(ah0, bh9) | 0;\n      var w9 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n      w9 &= 67108863;\n      lo = Math.imul(al9, bl1);\n      mid = Math.imul(al9, bh1);\n      mid = mid + Math.imul(ah9, bl1) | 0;\n      hi = Math.imul(ah9, bh1);\n      lo = lo + Math.imul(al8, bl2) | 0;\n      mid = mid + Math.imul(al8, bh2) | 0;\n      mid = mid + Math.imul(ah8, bl2) | 0;\n      hi = hi + Math.imul(ah8, bh2) | 0;\n      lo = lo + Math.imul(al7, bl3) | 0;\n      mid = mid + Math.imul(al7, bh3) | 0;\n      mid = mid + Math.imul(ah7, bl3) | 0;\n      hi = hi + Math.imul(ah7, bh3) | 0;\n      lo = lo + Math.imul(al6, bl4) | 0;\n      mid = mid + Math.imul(al6, bh4) | 0;\n      mid = mid + Math.imul(ah6, bl4) | 0;\n      hi = hi + Math.imul(ah6, bh4) | 0;\n      lo = lo + Math.imul(al5, bl5) | 0;\n      mid = mid + Math.imul(al5, bh5) | 0;\n      mid = mid + Math.imul(ah5, bl5) | 0;\n      hi = hi + Math.imul(ah5, bh5) | 0;\n      lo = lo + Math.imul(al4, bl6) | 0;\n      mid = mid + Math.imul(al4, bh6) | 0;\n      mid = mid + Math.imul(ah4, bl6) | 0;\n      hi = hi + Math.imul(ah4, bh6) | 0;\n      lo = lo + Math.imul(al3, bl7) | 0;\n      mid = mid + Math.imul(al3, bh7) | 0;\n      mid = mid + Math.imul(ah3, bl7) | 0;\n      hi = hi + Math.imul(ah3, bh7) | 0;\n      lo = lo + Math.imul(al2, bl8) | 0;\n      mid = mid + Math.imul(al2, bh8) | 0;\n      mid = mid + Math.imul(ah2, bl8) | 0;\n      hi = hi + Math.imul(ah2, bh8) | 0;\n      lo = lo + Math.imul(al1, bl9) | 0;\n      mid = mid + Math.imul(al1, bh9) | 0;\n      mid = mid + Math.imul(ah1, bl9) | 0;\n      hi = hi + Math.imul(ah1, bh9) | 0;\n      var w10 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n      w10 &= 67108863;\n      lo = Math.imul(al9, bl2);\n      mid = Math.imul(al9, bh2);\n      mid = mid + Math.imul(ah9, bl2) | 0;\n      hi = Math.imul(ah9, bh2);\n      lo = lo + Math.imul(al8, bl3) | 0;\n      mid = mid + Math.imul(al8, bh3) | 0;\n      mid = mid + Math.imul(ah8, bl3) | 0;\n      hi = hi + Math.imul(ah8, bh3) | 0;\n      lo = lo + Math.imul(al7, bl4) | 0;\n      mid = mid + Math.imul(al7, bh4) | 0;\n      mid = mid + Math.imul(ah7, bl4) | 0;\n      hi = hi + Math.imul(ah7, bh4) | 0;\n      lo = lo + Math.imul(al6, bl5) | 0;\n      mid = mid + Math.imul(al6, bh5) | 0;\n      mid = mid + Math.imul(ah6, bl5) | 0;\n      hi = hi + Math.imul(ah6, bh5) | 0;\n      lo = lo + Math.imul(al5, bl6) | 0;\n      mid = mid + Math.imul(al5, bh6) | 0;\n      mid = mid + Math.imul(ah5, bl6) | 0;\n      hi = hi + Math.imul(ah5, bh6) | 0;\n      lo = lo + Math.imul(al4, bl7) | 0;\n      mid = mid + Math.imul(al4, bh7) | 0;\n      mid = mid + Math.imul(ah4, bl7) | 0;\n      hi = hi + Math.imul(ah4, bh7) | 0;\n      lo = lo + Math.imul(al3, bl8) | 0;\n      mid = mid + Math.imul(al3, bh8) | 0;\n      mid = mid + Math.imul(ah3, bl8) | 0;\n      hi = hi + Math.imul(ah3, bh8) | 0;\n      lo = lo + Math.imul(al2, bl9) | 0;\n      mid = mid + Math.imul(al2, bh9) | 0;\n      mid = mid + Math.imul(ah2, bl9) | 0;\n      hi = hi + Math.imul(ah2, bh9) | 0;\n      var w11 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n      w11 &= 67108863;\n      lo = Math.imul(al9, bl3);\n      mid = Math.imul(al9, bh3);\n      mid = mid + Math.imul(ah9, bl3) | 0;\n      hi = Math.imul(ah9, bh3);\n      lo = lo + Math.imul(al8, bl4) | 0;\n      mid = mid + Math.imul(al8, bh4) | 0;\n      mid = mid + Math.imul(ah8, bl4) | 0;\n      hi = hi + Math.imul(ah8, bh4) | 0;\n      lo = lo + Math.imul(al7, bl5) | 0;\n      mid = mid + Math.imul(al7, bh5) | 0;\n      mid = mid + Math.imul(ah7, bl5) | 0;\n      hi = hi + Math.imul(ah7, bh5) | 0;\n      lo = lo + Math.imul(al6, bl6) | 0;\n      mid = mid + Math.imul(al6, bh6) | 0;\n      mid = mid + Math.imul(ah6, bl6) | 0;\n      hi = hi + Math.imul(ah6, bh6) | 0;\n      lo = lo + Math.imul(al5, bl7) | 0;\n      mid = mid + Math.imul(al5, bh7) | 0;\n      mid = mid + Math.imul(ah5, bl7) | 0;\n      hi = hi + Math.imul(ah5, bh7) | 0;\n      lo = lo + Math.imul(al4, bl8) | 0;\n      mid = mid + Math.imul(al4, bh8) | 0;\n      mid = mid + Math.imul(ah4, bl8) | 0;\n      hi = hi + Math.imul(ah4, bh8) | 0;\n      lo = lo + Math.imul(al3, bl9) | 0;\n      mid = mid + Math.imul(al3, bh9) | 0;\n      mid = mid + Math.imul(ah3, bl9) | 0;\n      hi = hi + Math.imul(ah3, bh9) | 0;\n      var w12 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n      w12 &= 67108863;\n      lo = Math.imul(al9, bl4);\n      mid = Math.imul(al9, bh4);\n      mid = mid + Math.imul(ah9, bl4) | 0;\n      hi = Math.imul(ah9, bh4);\n      lo = lo + Math.imul(al8, bl5) | 0;\n      mid = mid + Math.imul(al8, bh5) | 0;\n      mid = mid + Math.imul(ah8, bl5) | 0;\n      hi = hi + Math.imul(ah8, bh5) | 0;\n      lo = lo + Math.imul(al7, bl6) | 0;\n      mid = mid + Math.imul(al7, bh6) | 0;\n      mid = mid + Math.imul(ah7, bl6) | 0;\n      hi = hi + Math.imul(ah7, bh6) | 0;\n      lo = lo + Math.imul(al6, bl7) | 0;\n      mid = mid + Math.imul(al6, bh7) | 0;\n      mid = mid + Math.imul(ah6, bl7) | 0;\n      hi = hi + Math.imul(ah6, bh7) | 0;\n      lo = lo + Math.imul(al5, bl8) | 0;\n      mid = mid + Math.imul(al5, bh8) | 0;\n      mid = mid + Math.imul(ah5, bl8) | 0;\n      hi = hi + Math.imul(ah5, bh8) | 0;\n      lo = lo + Math.imul(al4, bl9) | 0;\n      mid = mid + Math.imul(al4, bh9) | 0;\n      mid = mid + Math.imul(ah4, bl9) | 0;\n      hi = hi + Math.imul(ah4, bh9) | 0;\n      var w13 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n      w13 &= 67108863;\n      lo = Math.imul(al9, bl5);\n      mid = Math.imul(al9, bh5);\n      mid = mid + Math.imul(ah9, bl5) | 0;\n      hi = Math.imul(ah9, bh5);\n      lo = lo + Math.imul(al8, bl6) | 0;\n      mid = mid + Math.imul(al8, bh6) | 0;\n      mid = mid + Math.imul(ah8, bl6) | 0;\n      hi = hi + Math.imul(ah8, bh6) | 0;\n      lo = lo + Math.imul(al7, bl7) | 0;\n      mid = mid + Math.imul(al7, bh7) | 0;\n      mid = mid + Math.imul(ah7, bl7) | 0;\n      hi = hi + Math.imul(ah7, bh7) | 0;\n      lo = lo + Math.imul(al6, bl8) | 0;\n      mid = mid + Math.imul(al6, bh8) | 0;\n      mid = mid + Math.imul(ah6, bl8) | 0;\n      hi = hi + Math.imul(ah6, bh8) | 0;\n      lo = lo + Math.imul(al5, bl9) | 0;\n      mid = mid + Math.imul(al5, bh9) | 0;\n      mid = mid + Math.imul(ah5, bl9) | 0;\n      hi = hi + Math.imul(ah5, bh9) | 0;\n      var w14 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n      w14 &= 67108863;\n      lo = Math.imul(al9, bl6);\n      mid = Math.imul(al9, bh6);\n      mid = mid + Math.imul(ah9, bl6) | 0;\n      hi = Math.imul(ah9, bh6);\n      lo = lo + Math.imul(al8, bl7) | 0;\n      mid = mid + Math.imul(al8, bh7) | 0;\n      mid = mid + Math.imul(ah8, bl7) | 0;\n      hi = hi + Math.imul(ah8, bh7) | 0;\n      lo = lo + Math.imul(al7, bl8) | 0;\n      mid = mid + Math.imul(al7, bh8) | 0;\n      mid = mid + Math.imul(ah7, bl8) | 0;\n      hi = hi + Math.imul(ah7, bh8) | 0;\n      lo = lo + Math.imul(al6, bl9) | 0;\n      mid = mid + Math.imul(al6, bh9) | 0;\n      mid = mid + Math.imul(ah6, bl9) | 0;\n      hi = hi + Math.imul(ah6, bh9) | 0;\n      var w15 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n      w15 &= 67108863;\n      lo = Math.imul(al9, bl7);\n      mid = Math.imul(al9, bh7);\n      mid = mid + Math.imul(ah9, bl7) | 0;\n      hi = Math.imul(ah9, bh7);\n      lo = lo + Math.imul(al8, bl8) | 0;\n      mid = mid + Math.imul(al8, bh8) | 0;\n      mid = mid + Math.imul(ah8, bl8) | 0;\n      hi = hi + Math.imul(ah8, bh8) | 0;\n      lo = lo + Math.imul(al7, bl9) | 0;\n      mid = mid + Math.imul(al7, bh9) | 0;\n      mid = mid + Math.imul(ah7, bl9) | 0;\n      hi = hi + Math.imul(ah7, bh9) | 0;\n      var w16 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n      w16 &= 67108863;\n      lo = Math.imul(al9, bl8);\n      mid = Math.imul(al9, bh8);\n      mid = mid + Math.imul(ah9, bl8) | 0;\n      hi = Math.imul(ah9, bh8);\n      lo = lo + Math.imul(al8, bl9) | 0;\n      mid = mid + Math.imul(al8, bh9) | 0;\n      mid = mid + Math.imul(ah8, bl9) | 0;\n      hi = hi + Math.imul(ah8, bh9) | 0;\n      var w17 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n      w17 &= 67108863;\n      lo = Math.imul(al9, bl9);\n      mid = Math.imul(al9, bh9);\n      mid = mid + Math.imul(ah9, bl9) | 0;\n      hi = Math.imul(ah9, bh9);\n      var w18 = (c5 + lo | 0) + ((mid & 8191) << 13) | 0;\n      c5 = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n      w18 &= 67108863;\n      o5[0] = w0;\n      o5[1] = w1;\n      o5[2] = w22;\n      o5[3] = w32;\n      o5[4] = w4;\n      o5[5] = w5;\n      o5[6] = w6;\n      o5[7] = w7;\n      o5[8] = w8;\n      o5[9] = w9;\n      o5[10] = w10;\n      o5[11] = w11;\n      o5[12] = w12;\n      o5[13] = w13;\n      o5[14] = w14;\n      o5[15] = w15;\n      o5[16] = w16;\n      o5[17] = w17;\n      o5[18] = w18;\n      if (c5 !== 0) {\n        o5[19] = c5;\n        out.length++;\n      }\n      return out;\n    };\n    if (!Math.imul) {\n      comb10MulTo = smallMulTo;\n    }\n    function bigMulTo(self2, num, out) {\n      out.negative = num.negative ^ self2.negative;\n      out.length = self2.length + num.length;\n      var carry = 0;\n      var hncarry = 0;\n      for (var k4 = 0; k4 < out.length - 1; k4++) {\n        var ncarry = hncarry;\n        hncarry = 0;\n        var rword = carry & 67108863;\n        var maxJ = Math.min(k4, num.length - 1);\n        for (var j4 = Math.max(0, k4 - self2.length + 1); j4 <= maxJ; j4++) {\n          var i5 = k4 - j4;\n          var a5 = self2.words[i5] | 0;\n          var b4 = num.words[j4] | 0;\n          var r5 = a5 * b4;\n          var lo = r5 & 67108863;\n          ncarry = ncarry + (r5 / 67108864 | 0) | 0;\n          lo = lo + rword | 0;\n          rword = lo & 67108863;\n          ncarry = ncarry + (lo >>> 26) | 0;\n          hncarry += ncarry >>> 26;\n          ncarry &= 67108863;\n        }\n        out.words[k4] = rword;\n        carry = ncarry;\n        ncarry = hncarry;\n      }\n      if (carry !== 0) {\n        out.words[k4] = carry;\n      } else {\n        out.length--;\n      }\n      return out.strip();\n    }\n    function jumboMulTo(self2, num, out) {\n      var fftm = new FFTM();\n      return fftm.mulp(self2, num, out);\n    }\n    BN.prototype.mulTo = function mulTo(num, out) {\n      var res;\n      var len = (this || _global$110).length + num.length;\n      if ((this || _global$110).length === 10 && num.length === 10) {\n        res = comb10MulTo(this || _global$110, num, out);\n      } else if (len < 63) {\n        res = smallMulTo(this || _global$110, num, out);\n      } else if (len < 1024) {\n        res = bigMulTo(this || _global$110, num, out);\n      } else {\n        res = jumboMulTo(this || _global$110, num, out);\n      }\n      return res;\n    };\n    function FFTM(x4, y5) {\n      (this || _global$110).x = x4;\n      (this || _global$110).y = y5;\n    }\n    FFTM.prototype.makeRBT = function makeRBT(N4) {\n      var t5 = new Array(N4);\n      var l5 = BN.prototype._countBits(N4) - 1;\n      for (var i5 = 0; i5 < N4; i5++) {\n        t5[i5] = this.revBin(i5, l5, N4);\n      }\n      return t5;\n    };\n    FFTM.prototype.revBin = function revBin(x4, l5, N4) {\n      if (x4 === 0 || x4 === N4 - 1) return x4;\n      var rb = 0;\n      for (var i5 = 0; i5 < l5; i5++) {\n        rb |= (x4 & 1) << l5 - i5 - 1;\n        x4 >>= 1;\n      }\n      return rb;\n    };\n    FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N4) {\n      for (var i5 = 0; i5 < N4; i5++) {\n        rtws[i5] = rws[rbt[i5]];\n        itws[i5] = iws[rbt[i5]];\n      }\n    };\n    FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N4, rbt) {\n      this.permute(rbt, rws, iws, rtws, itws, N4);\n      for (var s5 = 1; s5 < N4; s5 <<= 1) {\n        var l5 = s5 << 1;\n        var rtwdf = Math.cos(2 * Math.PI / l5);\n        var itwdf = Math.sin(2 * Math.PI / l5);\n        for (var p5 = 0; p5 < N4; p5 += l5) {\n          var rtwdf_ = rtwdf;\n          var itwdf_ = itwdf;\n          for (var j4 = 0; j4 < s5; j4++) {\n            var re3 = rtws[p5 + j4];\n            var ie2 = itws[p5 + j4];\n            var ro = rtws[p5 + j4 + s5];\n            var io = itws[p5 + j4 + s5];\n            var rx = rtwdf_ * ro - itwdf_ * io;\n            io = rtwdf_ * io + itwdf_ * ro;\n            ro = rx;\n            rtws[p5 + j4] = re3 + ro;\n            itws[p5 + j4] = ie2 + io;\n            rtws[p5 + j4 + s5] = re3 - ro;\n            itws[p5 + j4 + s5] = ie2 - io;\n            if (j4 !== l5) {\n              rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n              itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n              rtwdf_ = rx;\n            }\n          }\n        }\n      }\n    };\n    FFTM.prototype.guessLen13b = function guessLen13b(n5, m4) {\n      var N4 = Math.max(m4, n5) | 1;\n      var odd = N4 & 1;\n      var i5 = 0;\n      for (N4 = N4 / 2 | 0; N4; N4 = N4 >>> 1) {\n        i5++;\n      }\n      return 1 << i5 + 1 + odd;\n    };\n    FFTM.prototype.conjugate = function conjugate(rws, iws, N4) {\n      if (N4 <= 1) return;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var t5 = rws[i5];\n        rws[i5] = rws[N4 - i5 - 1];\n        rws[N4 - i5 - 1] = t5;\n        t5 = iws[i5];\n        iws[i5] = -iws[N4 - i5 - 1];\n        iws[N4 - i5 - 1] = -t5;\n      }\n    };\n    FFTM.prototype.normalize13b = function normalize13b(ws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < N4 / 2; i5++) {\n        var w4 = Math.round(ws[2 * i5 + 1] / N4) * 8192 + Math.round(ws[2 * i5] / N4) + carry;\n        ws[i5] = w4 & 67108863;\n        if (w4 < 67108864) {\n          carry = 0;\n        } else {\n          carry = w4 / 67108864 | 0;\n        }\n      }\n      return ws;\n    };\n    FFTM.prototype.convert13b = function convert13b(ws, len, rws, N4) {\n      var carry = 0;\n      for (var i5 = 0; i5 < len; i5++) {\n        carry = carry + (ws[i5] | 0);\n        rws[2 * i5] = carry & 8191;\n        carry = carry >>> 13;\n        rws[2 * i5 + 1] = carry & 8191;\n        carry = carry >>> 13;\n      }\n      for (i5 = 2 * len; i5 < N4; ++i5) {\n        rws[i5] = 0;\n      }\n      assert2(carry === 0);\n      assert2((carry & ~8191) === 0);\n    };\n    FFTM.prototype.stub = function stub(N4) {\n      var ph = new Array(N4);\n      for (var i5 = 0; i5 < N4; i5++) {\n        ph[i5] = 0;\n      }\n      return ph;\n    };\n    FFTM.prototype.mulp = function mulp(x4, y5, out) {\n      var N4 = 2 * this.guessLen13b(x4.length, y5.length);\n      var rbt = this.makeRBT(N4);\n      var _4 = this.stub(N4);\n      var rws = new Array(N4);\n      var rwst = new Array(N4);\n      var iwst = new Array(N4);\n      var nrws = new Array(N4);\n      var nrwst = new Array(N4);\n      var niwst = new Array(N4);\n      var rmws = out.words;\n      rmws.length = N4;\n      this.convert13b(x4.words, x4.length, rws, N4);\n      this.convert13b(y5.words, y5.length, nrws, N4);\n      this.transform(rws, _4, rwst, iwst, N4, rbt);\n      this.transform(nrws, _4, nrwst, niwst, N4, rbt);\n      for (var i5 = 0; i5 < N4; i5++) {\n        var rx = rwst[i5] * nrwst[i5] - iwst[i5] * niwst[i5];\n        iwst[i5] = rwst[i5] * niwst[i5] + iwst[i5] * nrwst[i5];\n        rwst[i5] = rx;\n      }\n      this.conjugate(rwst, iwst, N4);\n      this.transform(rwst, iwst, rmws, _4, N4, rbt);\n      this.conjugate(rmws, _4, N4);\n      this.normalize13b(rmws, N4);\n      out.negative = x4.negative ^ y5.negative;\n      out.length = x4.length + y5.length;\n      return out.strip();\n    };\n    BN.prototype.mul = function mul(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$110).length + num.length);\n      return this.mulTo(num, out);\n    };\n    BN.prototype.mulf = function mulf(num) {\n      var out = new BN(null);\n      out.words = new Array((this || _global$110).length + num.length);\n      return jumboMulTo(this || _global$110, num, out);\n    };\n    BN.prototype.imul = function imul(num) {\n      return this.clone().mulTo(num, this || _global$110);\n    };\n    BN.prototype.imuln = function imuln(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      var carry = 0;\n      for (var i5 = 0; i5 < (this || _global$110).length; i5++) {\n        var w4 = ((this || _global$110).words[i5] | 0) * num;\n        var lo = (w4 & 67108863) + (carry & 67108863);\n        carry >>= 26;\n        carry += w4 / 67108864 | 0;\n        carry += lo >>> 26;\n        (this || _global$110).words[i5] = lo & 67108863;\n      }\n      if (carry !== 0) {\n        (this || _global$110).words[i5] = carry;\n        (this || _global$110).length++;\n      }\n      return this || _global$110;\n    };\n    BN.prototype.muln = function muln(num) {\n      return this.clone().imuln(num);\n    };\n    BN.prototype.sqr = function sqr() {\n      return this.mul(this || _global$110);\n    };\n    BN.prototype.isqr = function isqr() {\n      return this.imul(this.clone());\n    };\n    BN.prototype.pow = function pow(num) {\n      var w4 = toBitArray(num);\n      if (w4.length === 0) return new BN(1);\n      var res = this || _global$110;\n      for (var i5 = 0; i5 < w4.length; i5++, res = res.sqr()) {\n        if (w4[i5] !== 0) break;\n      }\n      if (++i5 < w4.length) {\n        for (var q3 = res.sqr(); i5 < w4.length; i5++, q3 = q3.sqr()) {\n          if (w4[i5] === 0) continue;\n          res = res.mul(q3);\n        }\n      }\n      return res;\n    };\n    BN.prototype.iushln = function iushln(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      var carryMask = 67108863 >>> 26 - r5 << 26 - r5;\n      var i5;\n      if (r5 !== 0) {\n        var carry = 0;\n        for (i5 = 0; i5 < (this || _global$110).length; i5++) {\n          var newCarry = (this || _global$110).words[i5] & carryMask;\n          var c5 = ((this || _global$110).words[i5] | 0) - newCarry << r5;\n          (this || _global$110).words[i5] = c5 | carry;\n          carry = newCarry >>> 26 - r5;\n        }\n        if (carry) {\n          (this || _global$110).words[i5] = carry;\n          (this || _global$110).length++;\n        }\n      }\n      if (s5 !== 0) {\n        for (i5 = (this || _global$110).length - 1; i5 >= 0; i5--) {\n          (this || _global$110).words[i5 + s5] = (this || _global$110).words[i5];\n        }\n        for (i5 = 0; i5 < s5; i5++) {\n          (this || _global$110).words[i5] = 0;\n        }\n        (this || _global$110).length += s5;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishln = function ishln(bits) {\n      assert2((this || _global$110).negative === 0);\n      return this.iushln(bits);\n    };\n    BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var h5;\n      if (hint) {\n        h5 = (hint - hint % 26) / 26;\n      } else {\n        h5 = 0;\n      }\n      var r5 = bits % 26;\n      var s5 = Math.min((bits - r5) / 26, (this || _global$110).length);\n      var mask = 67108863 ^ 67108863 >>> r5 << r5;\n      var maskedWords = extended;\n      h5 -= s5;\n      h5 = Math.max(0, h5);\n      if (maskedWords) {\n        for (var i5 = 0; i5 < s5; i5++) {\n          maskedWords.words[i5] = (this || _global$110).words[i5];\n        }\n        maskedWords.length = s5;\n      }\n      if (s5 === 0) ;\n      else if ((this || _global$110).length > s5) {\n        (this || _global$110).length -= s5;\n        for (i5 = 0; i5 < (this || _global$110).length; i5++) {\n          (this || _global$110).words[i5] = (this || _global$110).words[i5 + s5];\n        }\n      } else {\n        (this || _global$110).words[0] = 0;\n        (this || _global$110).length = 1;\n      }\n      var carry = 0;\n      for (i5 = (this || _global$110).length - 1; i5 >= 0 && (carry !== 0 || i5 >= h5); i5--) {\n        var word = (this || _global$110).words[i5] | 0;\n        (this || _global$110).words[i5] = carry << 26 - r5 | word >>> r5;\n        carry = word & mask;\n      }\n      if (maskedWords && carry !== 0) {\n        maskedWords.words[maskedWords.length++] = carry;\n      }\n      if ((this || _global$110).length === 0) {\n        (this || _global$110).words[0] = 0;\n        (this || _global$110).length = 1;\n      }\n      return this.strip();\n    };\n    BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n      assert2((this || _global$110).negative === 0);\n      return this.iushrn(bits, hint, extended);\n    };\n    BN.prototype.shln = function shln(bits) {\n      return this.clone().ishln(bits);\n    };\n    BN.prototype.ushln = function ushln(bits) {\n      return this.clone().iushln(bits);\n    };\n    BN.prototype.shrn = function shrn(bits) {\n      return this.clone().ishrn(bits);\n    };\n    BN.prototype.ushrn = function ushrn(bits) {\n      return this.clone().iushrn(bits);\n    };\n    BN.prototype.testn = function testn(bit) {\n      assert2(typeof bit === \"number\" && bit >= 0);\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$110).length <= s5) return false;\n      var w4 = (this || _global$110).words[s5];\n      return !!(w4 & q3);\n    };\n    BN.prototype.imaskn = function imaskn(bits) {\n      assert2(typeof bits === \"number\" && bits >= 0);\n      var r5 = bits % 26;\n      var s5 = (bits - r5) / 26;\n      assert2((this || _global$110).negative === 0, \"imaskn works only with positive numbers\");\n      if ((this || _global$110).length <= s5) {\n        return this || _global$110;\n      }\n      if (r5 !== 0) {\n        s5++;\n      }\n      (this || _global$110).length = Math.min(s5, (this || _global$110).length);\n      if (r5 !== 0) {\n        var mask = 67108863 ^ 67108863 >>> r5 << r5;\n        (this || _global$110).words[(this || _global$110).length - 1] &= mask;\n      }\n      return this.strip();\n    };\n    BN.prototype.maskn = function maskn(bits) {\n      return this.clone().imaskn(bits);\n    };\n    BN.prototype.iaddn = function iaddn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.isubn(-num);\n      if ((this || _global$110).negative !== 0) {\n        if ((this || _global$110).length === 1 && ((this || _global$110).words[0] | 0) < num) {\n          (this || _global$110).words[0] = num - ((this || _global$110).words[0] | 0);\n          (this || _global$110).negative = 0;\n          return this || _global$110;\n        }\n        (this || _global$110).negative = 0;\n        this.isubn(num);\n        (this || _global$110).negative = 1;\n        return this || _global$110;\n      }\n      return this._iaddn(num);\n    };\n    BN.prototype._iaddn = function _iaddn(num) {\n      (this || _global$110).words[0] += num;\n      for (var i5 = 0; i5 < (this || _global$110).length && (this || _global$110).words[i5] >= 67108864; i5++) {\n        (this || _global$110).words[i5] -= 67108864;\n        if (i5 === (this || _global$110).length - 1) {\n          (this || _global$110).words[i5 + 1] = 1;\n        } else {\n          (this || _global$110).words[i5 + 1]++;\n        }\n      }\n      (this || _global$110).length = Math.max((this || _global$110).length, i5 + 1);\n      return this || _global$110;\n    };\n    BN.prototype.isubn = function isubn(num) {\n      assert2(typeof num === \"number\");\n      assert2(num < 67108864);\n      if (num < 0) return this.iaddn(-num);\n      if ((this || _global$110).negative !== 0) {\n        (this || _global$110).negative = 0;\n        this.iaddn(num);\n        (this || _global$110).negative = 1;\n        return this || _global$110;\n      }\n      (this || _global$110).words[0] -= num;\n      if ((this || _global$110).length === 1 && (this || _global$110).words[0] < 0) {\n        (this || _global$110).words[0] = -(this || _global$110).words[0];\n        (this || _global$110).negative = 1;\n      } else {\n        for (var i5 = 0; i5 < (this || _global$110).length && (this || _global$110).words[i5] < 0; i5++) {\n          (this || _global$110).words[i5] += 67108864;\n          (this || _global$110).words[i5 + 1] -= 1;\n        }\n      }\n      return this.strip();\n    };\n    BN.prototype.addn = function addn(num) {\n      return this.clone().iaddn(num);\n    };\n    BN.prototype.subn = function subn(num) {\n      return this.clone().isubn(num);\n    };\n    BN.prototype.iabs = function iabs() {\n      (this || _global$110).negative = 0;\n      return this || _global$110;\n    };\n    BN.prototype.abs = function abs() {\n      return this.clone().iabs();\n    };\n    BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n      var len = num.length + shift;\n      var i5;\n      this._expand(len);\n      var w4;\n      var carry = 0;\n      for (i5 = 0; i5 < num.length; i5++) {\n        w4 = ((this || _global$110).words[i5 + shift] | 0) + carry;\n        var right = (num.words[i5] | 0) * mul;\n        w4 -= right & 67108863;\n        carry = (w4 >> 26) - (right / 67108864 | 0);\n        (this || _global$110).words[i5 + shift] = w4 & 67108863;\n      }\n      for (; i5 < (this || _global$110).length - shift; i5++) {\n        w4 = ((this || _global$110).words[i5 + shift] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$110).words[i5 + shift] = w4 & 67108863;\n      }\n      if (carry === 0) return this.strip();\n      assert2(carry === -1);\n      carry = 0;\n      for (i5 = 0; i5 < (this || _global$110).length; i5++) {\n        w4 = -((this || _global$110).words[i5] | 0) + carry;\n        carry = w4 >> 26;\n        (this || _global$110).words[i5] = w4 & 67108863;\n      }\n      (this || _global$110).negative = 1;\n      return this.strip();\n    };\n    BN.prototype._wordDiv = function _wordDiv(num, mode) {\n      var shift = (this || _global$110).length - num.length;\n      var a5 = this.clone();\n      var b4 = num;\n      var bhi = b4.words[b4.length - 1] | 0;\n      var bhiBits = this._countBits(bhi);\n      shift = 26 - bhiBits;\n      if (shift !== 0) {\n        b4 = b4.ushln(shift);\n        a5.iushln(shift);\n        bhi = b4.words[b4.length - 1] | 0;\n      }\n      var m4 = a5.length - b4.length;\n      var q3;\n      if (mode !== \"mod\") {\n        q3 = new BN(null);\n        q3.length = m4 + 1;\n        q3.words = new Array(q3.length);\n        for (var i5 = 0; i5 < q3.length; i5++) {\n          q3.words[i5] = 0;\n        }\n      }\n      var diff = a5.clone()._ishlnsubmul(b4, 1, m4);\n      if (diff.negative === 0) {\n        a5 = diff;\n        if (q3) {\n          q3.words[m4] = 1;\n        }\n      }\n      for (var j4 = m4 - 1; j4 >= 0; j4--) {\n        var qj = (a5.words[b4.length + j4] | 0) * 67108864 + (a5.words[b4.length + j4 - 1] | 0);\n        qj = Math.min(qj / bhi | 0, 67108863);\n        a5._ishlnsubmul(b4, qj, j4);\n        while (a5.negative !== 0) {\n          qj--;\n          a5.negative = 0;\n          a5._ishlnsubmul(b4, 1, j4);\n          if (!a5.isZero()) {\n            a5.negative ^= 1;\n          }\n        }\n        if (q3) {\n          q3.words[j4] = qj;\n        }\n      }\n      if (q3) {\n        q3.strip();\n      }\n      a5.strip();\n      if (mode !== \"div\" && shift !== 0) {\n        a5.iushrn(shift);\n      }\n      return {\n        div: q3 || null,\n        mod: a5\n      };\n    };\n    BN.prototype.divmod = function divmod(num, mode, positive) {\n      assert2(!num.isZero());\n      if (this.isZero()) {\n        return {\n          div: new BN(0),\n          mod: new BN(0)\n        };\n      }\n      var div, mod, res;\n      if ((this || _global$110).negative !== 0 && num.negative === 0) {\n        res = this.neg().divmod(num, mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.iadd(num);\n          }\n        }\n        return {\n          div,\n          mod\n        };\n      }\n      if ((this || _global$110).negative === 0 && num.negative !== 0) {\n        res = this.divmod(num.neg(), mode);\n        if (mode !== \"mod\") {\n          div = res.div.neg();\n        }\n        return {\n          div,\n          mod: res.mod\n        };\n      }\n      if (((this || _global$110).negative & num.negative) !== 0) {\n        res = this.neg().divmod(num.neg(), mode);\n        if (mode !== \"div\") {\n          mod = res.mod.neg();\n          if (positive && mod.negative !== 0) {\n            mod.isub(num);\n          }\n        }\n        return {\n          div: res.div,\n          mod\n        };\n      }\n      if (num.length > (this || _global$110).length || this.cmp(num) < 0) {\n        return {\n          div: new BN(0),\n          mod: this || _global$110\n        };\n      }\n      if (num.length === 1) {\n        if (mode === \"div\") {\n          return {\n            div: this.divn(num.words[0]),\n            mod: null\n          };\n        }\n        if (mode === \"mod\") {\n          return {\n            div: null,\n            mod: new BN(this.modn(num.words[0]))\n          };\n        }\n        return {\n          div: this.divn(num.words[0]),\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n      return this._wordDiv(num, mode);\n    };\n    BN.prototype.div = function div(num) {\n      return this.divmod(num, \"div\", false).div;\n    };\n    BN.prototype.mod = function mod(num) {\n      return this.divmod(num, \"mod\", false).mod;\n    };\n    BN.prototype.umod = function umod(num) {\n      return this.divmod(num, \"mod\", true).mod;\n    };\n    BN.prototype.divRound = function divRound(num) {\n      var dm = this.divmod(num);\n      if (dm.mod.isZero()) return dm.div;\n      var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n      var half = num.ushrn(1);\n      var r22 = num.andln(1);\n      var cmp = mod.cmp(half);\n      if (cmp < 0 || r22 === 1 && cmp === 0) return dm.div;\n      return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n    };\n    BN.prototype.modn = function modn(num) {\n      assert2(num <= 67108863);\n      var p5 = (1 << 26) % num;\n      var acc = 0;\n      for (var i5 = (this || _global$110).length - 1; i5 >= 0; i5--) {\n        acc = (p5 * acc + ((this || _global$110).words[i5] | 0)) % num;\n      }\n      return acc;\n    };\n    BN.prototype.idivn = function idivn(num) {\n      assert2(num <= 67108863);\n      var carry = 0;\n      for (var i5 = (this || _global$110).length - 1; i5 >= 0; i5--) {\n        var w4 = ((this || _global$110).words[i5] | 0) + carry * 67108864;\n        (this || _global$110).words[i5] = w4 / num | 0;\n        carry = w4 % num;\n      }\n      return this.strip();\n    };\n    BN.prototype.divn = function divn(num) {\n      return this.clone().idivn(num);\n    };\n    BN.prototype.egcd = function egcd(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var x4 = this || _global$110;\n      var y5 = p5.clone();\n      if (x4.negative !== 0) {\n        x4 = x4.umod(p5);\n      } else {\n        x4 = x4.clone();\n      }\n      var A4 = new BN(1);\n      var B4 = new BN(0);\n      var C4 = new BN(0);\n      var D4 = new BN(1);\n      var g4 = 0;\n      while (x4.isEven() && y5.isEven()) {\n        x4.iushrn(1);\n        y5.iushrn(1);\n        ++g4;\n      }\n      var yp = y5.clone();\n      var xp = x4.clone();\n      while (!x4.isZero()) {\n        for (var i5 = 0, im = 1; (x4.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          x4.iushrn(i5);\n          while (i5-- > 0) {\n            if (A4.isOdd() || B4.isOdd()) {\n              A4.iadd(yp);\n              B4.isub(xp);\n            }\n            A4.iushrn(1);\n            B4.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (y5.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          y5.iushrn(j4);\n          while (j4-- > 0) {\n            if (C4.isOdd() || D4.isOdd()) {\n              C4.iadd(yp);\n              D4.isub(xp);\n            }\n            C4.iushrn(1);\n            D4.iushrn(1);\n          }\n        }\n        if (x4.cmp(y5) >= 0) {\n          x4.isub(y5);\n          A4.isub(C4);\n          B4.isub(D4);\n        } else {\n          y5.isub(x4);\n          C4.isub(A4);\n          D4.isub(B4);\n        }\n      }\n      return {\n        a: C4,\n        b: D4,\n        gcd: y5.iushln(g4)\n      };\n    };\n    BN.prototype._invmp = function _invmp(p5) {\n      assert2(p5.negative === 0);\n      assert2(!p5.isZero());\n      var a5 = this || _global$110;\n      var b4 = p5.clone();\n      if (a5.negative !== 0) {\n        a5 = a5.umod(p5);\n      } else {\n        a5 = a5.clone();\n      }\n      var x1 = new BN(1);\n      var x22 = new BN(0);\n      var delta = b4.clone();\n      while (a5.cmpn(1) > 0 && b4.cmpn(1) > 0) {\n        for (var i5 = 0, im = 1; (a5.words[0] & im) === 0 && i5 < 26; ++i5, im <<= 1) ;\n        if (i5 > 0) {\n          a5.iushrn(i5);\n          while (i5-- > 0) {\n            if (x1.isOdd()) {\n              x1.iadd(delta);\n            }\n            x1.iushrn(1);\n          }\n        }\n        for (var j4 = 0, jm = 1; (b4.words[0] & jm) === 0 && j4 < 26; ++j4, jm <<= 1) ;\n        if (j4 > 0) {\n          b4.iushrn(j4);\n          while (j4-- > 0) {\n            if (x22.isOdd()) {\n              x22.iadd(delta);\n            }\n            x22.iushrn(1);\n          }\n        }\n        if (a5.cmp(b4) >= 0) {\n          a5.isub(b4);\n          x1.isub(x22);\n        } else {\n          b4.isub(a5);\n          x22.isub(x1);\n        }\n      }\n      var res;\n      if (a5.cmpn(1) === 0) {\n        res = x1;\n      } else {\n        res = x22;\n      }\n      if (res.cmpn(0) < 0) {\n        res.iadd(p5);\n      }\n      return res;\n    };\n    BN.prototype.gcd = function gcd(num) {\n      if (this.isZero()) return num.abs();\n      if (num.isZero()) return this.abs();\n      var a5 = this.clone();\n      var b4 = num.clone();\n      a5.negative = 0;\n      b4.negative = 0;\n      for (var shift = 0; a5.isEven() && b4.isEven(); shift++) {\n        a5.iushrn(1);\n        b4.iushrn(1);\n      }\n      do {\n        while (a5.isEven()) {\n          a5.iushrn(1);\n        }\n        while (b4.isEven()) {\n          b4.iushrn(1);\n        }\n        var r5 = a5.cmp(b4);\n        if (r5 < 0) {\n          var t5 = a5;\n          a5 = b4;\n          b4 = t5;\n        } else if (r5 === 0 || b4.cmpn(1) === 0) {\n          break;\n        }\n        a5.isub(b4);\n      } while (true);\n      return b4.iushln(shift);\n    };\n    BN.prototype.invm = function invm(num) {\n      return this.egcd(num).a.umod(num);\n    };\n    BN.prototype.isEven = function isEven() {\n      return ((this || _global$110).words[0] & 1) === 0;\n    };\n    BN.prototype.isOdd = function isOdd() {\n      return ((this || _global$110).words[0] & 1) === 1;\n    };\n    BN.prototype.andln = function andln(num) {\n      return (this || _global$110).words[0] & num;\n    };\n    BN.prototype.bincn = function bincn(bit) {\n      assert2(typeof bit === \"number\");\n      var r5 = bit % 26;\n      var s5 = (bit - r5) / 26;\n      var q3 = 1 << r5;\n      if ((this || _global$110).length <= s5) {\n        this._expand(s5 + 1);\n        (this || _global$110).words[s5] |= q3;\n        return this || _global$110;\n      }\n      var carry = q3;\n      for (var i5 = s5; carry !== 0 && i5 < (this || _global$110).length; i5++) {\n        var w4 = (this || _global$110).words[i5] | 0;\n        w4 += carry;\n        carry = w4 >>> 26;\n        w4 &= 67108863;\n        (this || _global$110).words[i5] = w4;\n      }\n      if (carry !== 0) {\n        (this || _global$110).words[i5] = carry;\n        (this || _global$110).length++;\n      }\n      return this || _global$110;\n    };\n    BN.prototype.isZero = function isZero() {\n      return (this || _global$110).length === 1 && (this || _global$110).words[0] === 0;\n    };\n    BN.prototype.cmpn = function cmpn(num) {\n      var negative = num < 0;\n      if ((this || _global$110).negative !== 0 && !negative) return -1;\n      if ((this || _global$110).negative === 0 && negative) return 1;\n      this.strip();\n      var res;\n      if ((this || _global$110).length > 1) {\n        res = 1;\n      } else {\n        if (negative) {\n          num = -num;\n        }\n        assert2(num <= 67108863, \"Number is too big\");\n        var w4 = (this || _global$110).words[0] | 0;\n        res = w4 === num ? 0 : w4 < num ? -1 : 1;\n      }\n      if ((this || _global$110).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.cmp = function cmp(num) {\n      if ((this || _global$110).negative !== 0 && num.negative === 0) return -1;\n      if ((this || _global$110).negative === 0 && num.negative !== 0) return 1;\n      var res = this.ucmp(num);\n      if ((this || _global$110).negative !== 0) return -res | 0;\n      return res;\n    };\n    BN.prototype.ucmp = function ucmp(num) {\n      if ((this || _global$110).length > num.length) return 1;\n      if ((this || _global$110).length < num.length) return -1;\n      var res = 0;\n      for (var i5 = (this || _global$110).length - 1; i5 >= 0; i5--) {\n        var a5 = (this || _global$110).words[i5] | 0;\n        var b4 = num.words[i5] | 0;\n        if (a5 === b4) continue;\n        if (a5 < b4) {\n          res = -1;\n        } else if (a5 > b4) {\n          res = 1;\n        }\n        break;\n      }\n      return res;\n    };\n    BN.prototype.gtn = function gtn(num) {\n      return this.cmpn(num) === 1;\n    };\n    BN.prototype.gt = function gt(num) {\n      return this.cmp(num) === 1;\n    };\n    BN.prototype.gten = function gten(num) {\n      return this.cmpn(num) >= 0;\n    };\n    BN.prototype.gte = function gte(num) {\n      return this.cmp(num) >= 0;\n    };\n    BN.prototype.ltn = function ltn(num) {\n      return this.cmpn(num) === -1;\n    };\n    BN.prototype.lt = function lt(num) {\n      return this.cmp(num) === -1;\n    };\n    BN.prototype.lten = function lten(num) {\n      return this.cmpn(num) <= 0;\n    };\n    BN.prototype.lte = function lte(num) {\n      return this.cmp(num) <= 0;\n    };\n    BN.prototype.eqn = function eqn(num) {\n      return this.cmpn(num) === 0;\n    };\n    BN.prototype.eq = function eq(num) {\n      return this.cmp(num) === 0;\n    };\n    BN.red = function red(num) {\n      return new Red(num);\n    };\n    BN.prototype.toRed = function toRed(ctx) {\n      assert2(!(this || _global$110).red, \"Already a number in reduction context\");\n      assert2((this || _global$110).negative === 0, \"red works only with positives\");\n      return ctx.convertTo(this || _global$110)._forceRed(ctx);\n    };\n    BN.prototype.fromRed = function fromRed() {\n      assert2((this || _global$110).red, \"fromRed works only with numbers in reduction context\");\n      return (this || _global$110).red.convertFrom(this || _global$110);\n    };\n    BN.prototype._forceRed = function _forceRed(ctx) {\n      (this || _global$110).red = ctx;\n      return this || _global$110;\n    };\n    BN.prototype.forceRed = function forceRed(ctx) {\n      assert2(!(this || _global$110).red, \"Already a number in reduction context\");\n      return this._forceRed(ctx);\n    };\n    BN.prototype.redAdd = function redAdd(num) {\n      assert2((this || _global$110).red, \"redAdd works only with red numbers\");\n      return (this || _global$110).red.add(this || _global$110, num);\n    };\n    BN.prototype.redIAdd = function redIAdd(num) {\n      assert2((this || _global$110).red, \"redIAdd works only with red numbers\");\n      return (this || _global$110).red.iadd(this || _global$110, num);\n    };\n    BN.prototype.redSub = function redSub(num) {\n      assert2((this || _global$110).red, \"redSub works only with red numbers\");\n      return (this || _global$110).red.sub(this || _global$110, num);\n    };\n    BN.prototype.redISub = function redISub(num) {\n      assert2((this || _global$110).red, \"redISub works only with red numbers\");\n      return (this || _global$110).red.isub(this || _global$110, num);\n    };\n    BN.prototype.redShl = function redShl(num) {\n      assert2((this || _global$110).red, \"redShl works only with red numbers\");\n      return (this || _global$110).red.shl(this || _global$110, num);\n    };\n    BN.prototype.redMul = function redMul(num) {\n      assert2((this || _global$110).red, \"redMul works only with red numbers\");\n      (this || _global$110).red._verify2(this || _global$110, num);\n      return (this || _global$110).red.mul(this || _global$110, num);\n    };\n    BN.prototype.redIMul = function redIMul(num) {\n      assert2((this || _global$110).red, \"redMul works only with red numbers\");\n      (this || _global$110).red._verify2(this || _global$110, num);\n      return (this || _global$110).red.imul(this || _global$110, num);\n    };\n    BN.prototype.redSqr = function redSqr() {\n      assert2((this || _global$110).red, \"redSqr works only with red numbers\");\n      (this || _global$110).red._verify1(this || _global$110);\n      return (this || _global$110).red.sqr(this || _global$110);\n    };\n    BN.prototype.redISqr = function redISqr() {\n      assert2((this || _global$110).red, \"redISqr works only with red numbers\");\n      (this || _global$110).red._verify1(this || _global$110);\n      return (this || _global$110).red.isqr(this || _global$110);\n    };\n    BN.prototype.redSqrt = function redSqrt() {\n      assert2((this || _global$110).red, \"redSqrt works only with red numbers\");\n      (this || _global$110).red._verify1(this || _global$110);\n      return (this || _global$110).red.sqrt(this || _global$110);\n    };\n    BN.prototype.redInvm = function redInvm() {\n      assert2((this || _global$110).red, \"redInvm works only with red numbers\");\n      (this || _global$110).red._verify1(this || _global$110);\n      return (this || _global$110).red.invm(this || _global$110);\n    };\n    BN.prototype.redNeg = function redNeg() {\n      assert2((this || _global$110).red, \"redNeg works only with red numbers\");\n      (this || _global$110).red._verify1(this || _global$110);\n      return (this || _global$110).red.neg(this || _global$110);\n    };\n    BN.prototype.redPow = function redPow(num) {\n      assert2((this || _global$110).red && !num.red, \"redPow(normalNum)\");\n      (this || _global$110).red._verify1(this || _global$110);\n      return (this || _global$110).red.pow(this || _global$110, num);\n    };\n    var primes = {\n      k256: null,\n      p224: null,\n      p192: null,\n      p25519: null\n    };\n    function MPrime(name2, p5) {\n      (this || _global$110).name = name2;\n      (this || _global$110).p = new BN(p5, 16);\n      (this || _global$110).n = (this || _global$110).p.bitLength();\n      (this || _global$110).k = new BN(1).iushln((this || _global$110).n).isub((this || _global$110).p);\n      (this || _global$110).tmp = this._tmp();\n    }\n    MPrime.prototype._tmp = function _tmp() {\n      var tmp = new BN(null);\n      tmp.words = new Array(Math.ceil((this || _global$110).n / 13));\n      return tmp;\n    };\n    MPrime.prototype.ireduce = function ireduce(num) {\n      var r5 = num;\n      var rlen;\n      do {\n        this.split(r5, (this || _global$110).tmp);\n        r5 = this.imulK(r5);\n        r5 = r5.iadd((this || _global$110).tmp);\n        rlen = r5.bitLength();\n      } while (rlen > (this || _global$110).n);\n      var cmp = rlen < (this || _global$110).n ? -1 : r5.ucmp((this || _global$110).p);\n      if (cmp === 0) {\n        r5.words[0] = 0;\n        r5.length = 1;\n      } else if (cmp > 0) {\n        r5.isub((this || _global$110).p);\n      } else {\n        if (r5.strip !== void 0) {\n          r5.strip();\n        } else {\n          r5._strip();\n        }\n      }\n      return r5;\n    };\n    MPrime.prototype.split = function split(input, out) {\n      input.iushrn((this || _global$110).n, 0, out);\n    };\n    MPrime.prototype.imulK = function imulK(num) {\n      return num.imul((this || _global$110).k);\n    };\n    function K256() {\n      MPrime.call(this || _global$110, \"k256\", \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\");\n    }\n    inherits(K256, MPrime);\n    K256.prototype.split = function split(input, output) {\n      var mask = 4194303;\n      var outLen = Math.min(input.length, 9);\n      for (var i5 = 0; i5 < outLen; i5++) {\n        output.words[i5] = input.words[i5];\n      }\n      output.length = outLen;\n      if (input.length <= 9) {\n        input.words[0] = 0;\n        input.length = 1;\n        return;\n      }\n      var prev = input.words[9];\n      output.words[output.length++] = prev & mask;\n      for (i5 = 10; i5 < input.length; i5++) {\n        var next = input.words[i5] | 0;\n        input.words[i5 - 10] = (next & mask) << 4 | prev >>> 22;\n        prev = next;\n      }\n      prev >>>= 22;\n      input.words[i5 - 10] = prev;\n      if (prev === 0 && input.length > 10) {\n        input.length -= 10;\n      } else {\n        input.length -= 9;\n      }\n    };\n    K256.prototype.imulK = function imulK(num) {\n      num.words[num.length] = 0;\n      num.words[num.length + 1] = 0;\n      num.length += 2;\n      var lo = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var w4 = num.words[i5] | 0;\n        lo += w4 * 977;\n        num.words[i5] = lo & 67108863;\n        lo = w4 * 64 + (lo / 67108864 | 0);\n      }\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n        }\n      }\n      return num;\n    };\n    function P224() {\n      MPrime.call(this || _global$110, \"p224\", \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\");\n    }\n    inherits(P224, MPrime);\n    function P192() {\n      MPrime.call(this || _global$110, \"p192\", \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\");\n    }\n    inherits(P192, MPrime);\n    function P25519() {\n      MPrime.call(this || _global$110, \"25519\", \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\");\n    }\n    inherits(P25519, MPrime);\n    P25519.prototype.imulK = function imulK(num) {\n      var carry = 0;\n      for (var i5 = 0; i5 < num.length; i5++) {\n        var hi = (num.words[i5] | 0) * 19 + carry;\n        var lo = hi & 67108863;\n        hi >>>= 26;\n        num.words[i5] = lo;\n        carry = hi;\n      }\n      if (carry !== 0) {\n        num.words[num.length++] = carry;\n      }\n      return num;\n    };\n    BN._prime = function prime(name2) {\n      if (primes[name2]) return primes[name2];\n      var prime2;\n      if (name2 === \"k256\") {\n        prime2 = new K256();\n      } else if (name2 === \"p224\") {\n        prime2 = new P224();\n      } else if (name2 === \"p192\") {\n        prime2 = new P192();\n      } else if (name2 === \"p25519\") {\n        prime2 = new P25519();\n      } else {\n        throw new Error(\"Unknown prime \" + name2);\n      }\n      primes[name2] = prime2;\n      return prime2;\n    };\n    function Red(m4) {\n      if (typeof m4 === \"string\") {\n        var prime = BN._prime(m4);\n        (this || _global$110).m = prime.p;\n        (this || _global$110).prime = prime;\n      } else {\n        assert2(m4.gtn(1), \"modulus must be greater than 1\");\n        (this || _global$110).m = m4;\n        (this || _global$110).prime = null;\n      }\n    }\n    Red.prototype._verify1 = function _verify1(a5) {\n      assert2(a5.negative === 0, \"red works only with positives\");\n      assert2(a5.red, \"red works only with red numbers\");\n    };\n    Red.prototype._verify2 = function _verify2(a5, b4) {\n      assert2((a5.negative | b4.negative) === 0, \"red works only with positives\");\n      assert2(a5.red && a5.red === b4.red, \"red works only with red numbers\");\n    };\n    Red.prototype.imod = function imod(a5) {\n      if ((this || _global$110).prime) return (this || _global$110).prime.ireduce(a5)._forceRed(this || _global$110);\n      return a5.umod((this || _global$110).m)._forceRed(this || _global$110);\n    };\n    Red.prototype.neg = function neg(a5) {\n      if (a5.isZero()) {\n        return a5.clone();\n      }\n      return (this || _global$110).m.sub(a5)._forceRed(this || _global$110);\n    };\n    Red.prototype.add = function add(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.add(b4);\n      if (res.cmp((this || _global$110).m) >= 0) {\n        res.isub((this || _global$110).m);\n      }\n      return res._forceRed(this || _global$110);\n    };\n    Red.prototype.iadd = function iadd(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.iadd(b4);\n      if (res.cmp((this || _global$110).m) >= 0) {\n        res.isub((this || _global$110).m);\n      }\n      return res;\n    };\n    Red.prototype.sub = function sub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.sub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$110).m);\n      }\n      return res._forceRed(this || _global$110);\n    };\n    Red.prototype.isub = function isub(a5, b4) {\n      this._verify2(a5, b4);\n      var res = a5.isub(b4);\n      if (res.cmpn(0) < 0) {\n        res.iadd((this || _global$110).m);\n      }\n      return res;\n    };\n    Red.prototype.shl = function shl(a5, num) {\n      this._verify1(a5);\n      return this.imod(a5.ushln(num));\n    };\n    Red.prototype.imul = function imul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.imul(b4));\n    };\n    Red.prototype.mul = function mul(a5, b4) {\n      this._verify2(a5, b4);\n      return this.imod(a5.mul(b4));\n    };\n    Red.prototype.isqr = function isqr(a5) {\n      return this.imul(a5, a5.clone());\n    };\n    Red.prototype.sqr = function sqr(a5) {\n      return this.mul(a5, a5);\n    };\n    Red.prototype.sqrt = function sqrt(a5) {\n      if (a5.isZero()) return a5.clone();\n      var mod3 = (this || _global$110).m.andln(3);\n      assert2(mod3 % 2 === 1);\n      if (mod3 === 3) {\n        var pow = (this || _global$110).m.add(new BN(1)).iushrn(2);\n        return this.pow(a5, pow);\n      }\n      var q3 = (this || _global$110).m.subn(1);\n      var s5 = 0;\n      while (!q3.isZero() && q3.andln(1) === 0) {\n        s5++;\n        q3.iushrn(1);\n      }\n      assert2(!q3.isZero());\n      var one = new BN(1).toRed(this || _global$110);\n      var nOne = one.redNeg();\n      var lpow = (this || _global$110).m.subn(1).iushrn(1);\n      var z4 = (this || _global$110).m.bitLength();\n      z4 = new BN(2 * z4 * z4).toRed(this || _global$110);\n      while (this.pow(z4, lpow).cmp(nOne) !== 0) {\n        z4.redIAdd(nOne);\n      }\n      var c5 = this.pow(z4, q3);\n      var r5 = this.pow(a5, q3.addn(1).iushrn(1));\n      var t5 = this.pow(a5, q3);\n      var m4 = s5;\n      while (t5.cmp(one) !== 0) {\n        var tmp = t5;\n        for (var i5 = 0; tmp.cmp(one) !== 0; i5++) {\n          tmp = tmp.redSqr();\n        }\n        assert2(i5 < m4);\n        var b4 = this.pow(c5, new BN(1).iushln(m4 - i5 - 1));\n        r5 = r5.redMul(b4);\n        c5 = b4.redSqr();\n        t5 = t5.redMul(c5);\n        m4 = i5;\n      }\n      return r5;\n    };\n    Red.prototype.invm = function invm(a5) {\n      var inv = a5._invmp((this || _global$110).m);\n      if (inv.negative !== 0) {\n        inv.negative = 0;\n        return this.imod(inv).redNeg();\n      } else {\n        return this.imod(inv);\n      }\n    };\n    Red.prototype.pow = function pow(a5, num) {\n      if (num.isZero()) return new BN(1).toRed(this || _global$110);\n      if (num.cmpn(1) === 0) return a5.clone();\n      var windowSize = 4;\n      var wnd = new Array(1 << windowSize);\n      wnd[0] = new BN(1).toRed(this || _global$110);\n      wnd[1] = a5;\n      for (var i5 = 2; i5 < wnd.length; i5++) {\n        wnd[i5] = this.mul(wnd[i5 - 1], a5);\n      }\n      var res = wnd[0];\n      var current = 0;\n      var currentLen = 0;\n      var start = num.bitLength() % 26;\n      if (start === 0) {\n        start = 26;\n      }\n      for (i5 = num.length - 1; i5 >= 0; i5--) {\n        var word = num.words[i5];\n        for (var j4 = start - 1; j4 >= 0; j4--) {\n          var bit = word >> j4 & 1;\n          if (res !== wnd[0]) {\n            res = this.sqr(res);\n          }\n          if (bit === 0 && current === 0) {\n            currentLen = 0;\n            continue;\n          }\n          current <<= 1;\n          current |= bit;\n          currentLen++;\n          if (currentLen !== windowSize && (i5 !== 0 || j4 !== 0)) continue;\n          res = this.mul(res, wnd[current]);\n          currentLen = 0;\n          current = 0;\n        }\n        start = 26;\n      }\n      return res;\n    };\n    Red.prototype.convertTo = function convertTo(num) {\n      var r5 = num.umod((this || _global$110).m);\n      return r5 === num ? r5.clone() : r5;\n    };\n    Red.prototype.convertFrom = function convertFrom(num) {\n      var res = num.clone();\n      res.red = null;\n      return res;\n    };\n    BN.mont = function mont(num) {\n      return new Mont(num);\n    };\n    function Mont(m4) {\n      Red.call(this || _global$110, m4);\n      (this || _global$110).shift = (this || _global$110).m.bitLength();\n      if ((this || _global$110).shift % 26 !== 0) {\n        (this || _global$110).shift += 26 - (this || _global$110).shift % 26;\n      }\n      (this || _global$110).r = new BN(1).iushln((this || _global$110).shift);\n      (this || _global$110).r2 = this.imod((this || _global$110).r.sqr());\n      (this || _global$110).rinv = (this || _global$110).r._invmp((this || _global$110).m);\n      (this || _global$110).minv = (this || _global$110).rinv.mul((this || _global$110).r).isubn(1).div((this || _global$110).m);\n      (this || _global$110).minv = (this || _global$110).minv.umod((this || _global$110).r);\n      (this || _global$110).minv = (this || _global$110).r.sub((this || _global$110).minv);\n    }\n    inherits(Mont, Red);\n    Mont.prototype.convertTo = function convertTo(num) {\n      return this.imod(num.ushln((this || _global$110).shift));\n    };\n    Mont.prototype.convertFrom = function convertFrom(num) {\n      var r5 = this.imod(num.mul((this || _global$110).rinv));\n      r5.red = null;\n      return r5;\n    };\n    Mont.prototype.imul = function imul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) {\n        a5.words[0] = 0;\n        a5.length = 1;\n        return a5;\n      }\n      var t5 = a5.imul(b4);\n      var c5 = t5.maskn((this || _global$110).shift).mul((this || _global$110).minv).imaskn((this || _global$110).shift).mul((this || _global$110).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$110).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$110).m) >= 0) {\n        res = u5.isub((this || _global$110).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$110).m);\n      }\n      return res._forceRed(this || _global$110);\n    };\n    Mont.prototype.mul = function mul(a5, b4) {\n      if (a5.isZero() || b4.isZero()) return new BN(0)._forceRed(this || _global$110);\n      var t5 = a5.mul(b4);\n      var c5 = t5.maskn((this || _global$110).shift).mul((this || _global$110).minv).imaskn((this || _global$110).shift).mul((this || _global$110).m);\n      var u5 = t5.isub(c5).iushrn((this || _global$110).shift);\n      var res = u5;\n      if (u5.cmp((this || _global$110).m) >= 0) {\n        res = u5.isub((this || _global$110).m);\n      } else if (u5.cmpn(0) < 0) {\n        res = u5.iadd((this || _global$110).m);\n      }\n      return res._forceRed(this || _global$110);\n    };\n    Mont.prototype.invm = function invm(a5) {\n      var res = this.imod(a5._invmp((this || _global$110).m).mul((this || _global$110).r2));\n      return res._forceRed(this || _global$110);\n    };\n  })(module, exports$72);\n  return module.exports;\n}\nvar exports$62 = {};\nvar _dewExec$52 = false;\nfunction dew$52() {\n  if (_dewExec$52) return exports$62;\n  _dewExec$52 = true;\n  var BN = dew$62();\n  var Buffer = dew$12().Buffer;\n  function withPublic(paddedMsg, key) {\n    return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n  }\n  exports$62 = withPublic;\n  return exports$62;\n}\nvar exports$52 = {};\nvar _dewExec$42 = false;\nfunction dew$42() {\n  if (_dewExec$42) return exports$52;\n  _dewExec$42 = true;\n  var parseKeys = dew$e2();\n  var randomBytes2 = dew$3G();\n  var createHash2 = dew$3t();\n  var mgf = dew$82();\n  var xor = dew$72();\n  var BN = dew$62();\n  var withPublic = dew$52();\n  var crt = dew$$();\n  var Buffer = dew$12().Buffer;\n  exports$52 = function publicEncrypt2(publicKey, msg, reverse) {\n    var padding;\n    if (publicKey.padding) {\n      padding = publicKey.padding;\n    } else if (reverse) {\n      padding = 1;\n    } else {\n      padding = 4;\n    }\n    var key = parseKeys(publicKey);\n    var paddedMsg;\n    if (padding === 4) {\n      paddedMsg = oaep(key, msg);\n    } else if (padding === 1) {\n      paddedMsg = pkcs1(key, msg, reverse);\n    } else if (padding === 3) {\n      paddedMsg = new BN(msg);\n      if (paddedMsg.cmp(key.modulus) >= 0) {\n        throw new Error(\"data too long for modulus\");\n      }\n    } else {\n      throw new Error(\"unknown padding\");\n    }\n    if (reverse) {\n      return crt(paddedMsg, key);\n    } else {\n      return withPublic(paddedMsg, key);\n    }\n  };\n  function oaep(key, msg) {\n    var k4 = key.modulus.byteLength();\n    var mLen = msg.length;\n    var iHash = createHash2(\"sha1\").update(Buffer.alloc(0)).digest();\n    var hLen = iHash.length;\n    var hLen2 = 2 * hLen;\n    if (mLen > k4 - hLen2 - 2) {\n      throw new Error(\"message too long\");\n    }\n    var ps = Buffer.alloc(k4 - mLen - hLen2 - 2);\n    var dblen = k4 - hLen - 1;\n    var seed = randomBytes2(hLen);\n    var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen));\n    var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n    return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k4));\n  }\n  function pkcs1(key, msg, reverse) {\n    var mLen = msg.length;\n    var k4 = key.modulus.byteLength();\n    if (mLen > k4 - 11) {\n      throw new Error(\"message too long\");\n    }\n    var ps;\n    if (reverse) {\n      ps = Buffer.alloc(k4 - mLen - 3, 255);\n    } else {\n      ps = nonZero(k4 - mLen - 3);\n    }\n    return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k4));\n  }\n  function nonZero(len) {\n    var out = Buffer.allocUnsafe(len);\n    var i5 = 0;\n    var cache = randomBytes2(len * 2);\n    var cur = 0;\n    var num;\n    while (i5 < len) {\n      if (cur === cache.length) {\n        cache = randomBytes2(len * 2);\n        cur = 0;\n      }\n      num = cache[cur++];\n      if (num) {\n        out[i5++] = num;\n      }\n    }\n    return out;\n  }\n  return exports$52;\n}\nvar exports$42 = {};\nvar _dewExec$310 = false;\nfunction dew$310() {\n  if (_dewExec$310) return exports$42;\n  _dewExec$310 = true;\n  var parseKeys = dew$e2();\n  var mgf = dew$82();\n  var xor = dew$72();\n  var BN = dew$62();\n  var crt = dew$$();\n  var createHash2 = dew$3t();\n  var withPublic = dew$52();\n  var Buffer = dew$12().Buffer;\n  exports$42 = function privateDecrypt2(privateKey, enc, reverse) {\n    var padding;\n    if (privateKey.padding) {\n      padding = privateKey.padding;\n    } else if (reverse) {\n      padding = 1;\n    } else {\n      padding = 4;\n    }\n    var key = parseKeys(privateKey);\n    var k4 = key.modulus.byteLength();\n    if (enc.length > k4 || new BN(enc).cmp(key.modulus) >= 0) {\n      throw new Error(\"decryption error\");\n    }\n    var msg;\n    if (reverse) {\n      msg = withPublic(new BN(enc), key);\n    } else {\n      msg = crt(enc, key);\n    }\n    var zBuffer = Buffer.alloc(k4 - msg.length);\n    msg = Buffer.concat([zBuffer, msg], k4);\n    if (padding === 4) {\n      return oaep(key, msg);\n    } else if (padding === 1) {\n      return pkcs1(key, msg, reverse);\n    } else if (padding === 3) {\n      return msg;\n    } else {\n      throw new Error(\"unknown padding\");\n    }\n  };\n  function oaep(key, msg) {\n    var k4 = key.modulus.byteLength();\n    var iHash = createHash2(\"sha1\").update(Buffer.alloc(0)).digest();\n    var hLen = iHash.length;\n    if (msg[0] !== 0) {\n      throw new Error(\"decryption error\");\n    }\n    var maskedSeed = msg.slice(1, hLen + 1);\n    var maskedDb = msg.slice(hLen + 1);\n    var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n    var db = xor(maskedDb, mgf(seed, k4 - hLen - 1));\n    if (compare(iHash, db.slice(0, hLen))) {\n      throw new Error(\"decryption error\");\n    }\n    var i5 = hLen;\n    while (db[i5] === 0) {\n      i5++;\n    }\n    if (db[i5++] !== 1) {\n      throw new Error(\"decryption error\");\n    }\n    return db.slice(i5);\n  }\n  function pkcs1(key, msg, reverse) {\n    var p1 = msg.slice(0, 2);\n    var i5 = 2;\n    var status = 0;\n    while (msg[i5++] !== 0) {\n      if (i5 >= msg.length) {\n        status++;\n        break;\n      }\n    }\n    var ps = msg.slice(2, i5 - 1);\n    if (p1.toString(\"hex\") !== \"0002\" && !reverse || p1.toString(\"hex\") !== \"0001\" && reverse) {\n      status++;\n    }\n    if (ps.length < 8) {\n      status++;\n    }\n    if (status) {\n      throw new Error(\"decryption error\");\n    }\n    return msg.slice(i5);\n  }\n  function compare(a5, b4) {\n    a5 = Buffer.from(a5);\n    b4 = Buffer.from(b4);\n    var dif = 0;\n    var len = a5.length;\n    if (a5.length !== b4.length) {\n      dif++;\n      len = Math.min(a5.length, b4.length);\n    }\n    var i5 = -1;\n    while (++i5 < len) {\n      dif += a5[i5] ^ b4[i5];\n    }\n    return dif;\n  }\n  return exports$42;\n}\nvar exports$310 = {};\nvar _dewExec$210 = false;\nfunction dew$210() {\n  if (_dewExec$210) return exports$310;\n  _dewExec$210 = true;\n  exports$310.publicEncrypt = dew$42();\n  exports$310.privateDecrypt = dew$310();\n  exports$310.privateEncrypt = function privateEncrypt2(key, buf) {\n    return exports$310.publicEncrypt(key, buf, true);\n  };\n  exports$310.publicDecrypt = function publicDecrypt2(key, buf) {\n    return exports$310.privateDecrypt(key, buf, true);\n  };\n  return exports$310;\n}\nvar exports$210 = {};\nvar _dewExec$110 = false;\nvar _global6 = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : global;\nfunction dew$110() {\n  if (_dewExec$110) return exports$210;\n  _dewExec$110 = true;\n  var process$1 = process;\n  function oldBrowser() {\n    throw new Error(\"secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11\");\n  }\n  var safeBuffer = dew$12();\n  var randombytes = dew$3G();\n  var Buffer = safeBuffer.Buffer;\n  var kBufferMaxLength = safeBuffer.kMaxLength;\n  var crypto2 = _global6.crypto || _global6.msCrypto;\n  var kMaxUint32 = Math.pow(2, 32) - 1;\n  function assertOffset(offset, length) {\n    if (typeof offset !== \"number\" || offset !== offset) {\n      throw new TypeError(\"offset must be a number\");\n    }\n    if (offset > kMaxUint32 || offset < 0) {\n      throw new TypeError(\"offset must be a uint32\");\n    }\n    if (offset > kBufferMaxLength || offset > length) {\n      throw new RangeError(\"offset out of range\");\n    }\n  }\n  function assertSize(size, offset, length) {\n    if (typeof size !== \"number\" || size !== size) {\n      throw new TypeError(\"size must be a number\");\n    }\n    if (size > kMaxUint32 || size < 0) {\n      throw new TypeError(\"size must be a uint32\");\n    }\n    if (size + offset > length || size > kBufferMaxLength) {\n      throw new RangeError(\"buffer too small\");\n    }\n  }\n  if (crypto2 && crypto2.getRandomValues || !process$1.browser) {\n    exports$210.randomFill = randomFill2;\n    exports$210.randomFillSync = randomFillSync2;\n  } else {\n    exports$210.randomFill = oldBrowser;\n    exports$210.randomFillSync = oldBrowser;\n  }\n  function randomFill2(buf, offset, size, cb) {\n    if (!Buffer.isBuffer(buf) && !(buf instanceof _global6.Uint8Array)) {\n      throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n    }\n    if (typeof offset === \"function\") {\n      cb = offset;\n      offset = 0;\n      size = buf.length;\n    } else if (typeof size === \"function\") {\n      cb = size;\n      size = buf.length - offset;\n    } else if (typeof cb !== \"function\") {\n      throw new TypeError('\"cb\" argument must be a function');\n    }\n    assertOffset(offset, buf.length);\n    assertSize(size, offset, buf.length);\n    return actualFill(buf, offset, size, cb);\n  }\n  function actualFill(buf, offset, size, cb) {\n    if (process$1.browser) {\n      var ourBuf = buf.buffer;\n      var uint = new Uint8Array(ourBuf, offset, size);\n      crypto2.getRandomValues(uint);\n      if (cb) {\n        process$1.nextTick(function() {\n          cb(null, buf);\n        });\n        return;\n      }\n      return buf;\n    }\n    if (cb) {\n      randombytes(size, function(err, bytes2) {\n        if (err) {\n          return cb(err);\n        }\n        bytes2.copy(buf, offset);\n        cb(null, buf);\n      });\n      return;\n    }\n    var bytes = randombytes(size);\n    bytes.copy(buf, offset);\n    return buf;\n  }\n  function randomFillSync2(buf, offset, size) {\n    if (typeof offset === \"undefined\") {\n      offset = 0;\n    }\n    if (!Buffer.isBuffer(buf) && !(buf instanceof _global6.Uint8Array)) {\n      throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n    }\n    assertOffset(offset, buf.length);\n    if (size === void 0) size = buf.length - offset;\n    assertSize(size, offset, buf.length);\n    return actualFill(buf, offset, size);\n  }\n  return exports$210;\n}\nvar exports$110 = {};\nvar _dewExec10 = false;\nfunction dew10() {\n  if (_dewExec10) return exports$110;\n  _dewExec10 = true;\n  exports$110.randomBytes = exports$110.rng = exports$110.pseudoRandomBytes = exports$110.prng = dew$3G();\n  exports$110.createHash = exports$110.Hash = dew$3t();\n  exports$110.createHmac = exports$110.Hmac = dew$3q();\n  var algos = dew$3p();\n  var algoKeys = Object.keys(algos);\n  var hashes = [\"sha1\", \"sha224\", \"sha256\", \"sha384\", \"sha512\", \"md5\", \"rmd160\"].concat(algoKeys);\n  exports$110.getHashes = function() {\n    return hashes;\n  };\n  var p5 = dew$3j();\n  exports$110.pbkdf2 = p5.pbkdf2;\n  exports$110.pbkdf2Sync = p5.pbkdf2Sync;\n  var aes = dew$2T();\n  exports$110.Cipher = aes.Cipher;\n  exports$110.createCipher = aes.createCipher;\n  exports$110.Cipheriv = aes.Cipheriv;\n  exports$110.createCipheriv = aes.createCipheriv;\n  exports$110.Decipher = aes.Decipher;\n  exports$110.createDecipher = aes.createDecipher;\n  exports$110.Decipheriv = aes.Decipheriv;\n  exports$110.createDecipheriv = aes.createDecipheriv;\n  exports$110.getCiphers = aes.getCiphers;\n  exports$110.listCiphers = aes.listCiphers;\n  var dh = dew$1e();\n  exports$110.DiffieHellmanGroup = dh.DiffieHellmanGroup;\n  exports$110.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\n  exports$110.getDiffieHellman = dh.getDiffieHellman;\n  exports$110.createDiffieHellman = dh.createDiffieHellman;\n  exports$110.DiffieHellman = dh.DiffieHellman;\n  var sign = dew$b2();\n  exports$110.createSign = sign.createSign;\n  exports$110.Sign = sign.Sign;\n  exports$110.createVerify = sign.createVerify;\n  exports$110.Verify = sign.Verify;\n  exports$110.createECDH = dew$92();\n  var publicEncrypt2 = dew$210();\n  exports$110.publicEncrypt = publicEncrypt2.publicEncrypt;\n  exports$110.privateEncrypt = publicEncrypt2.privateEncrypt;\n  exports$110.publicDecrypt = publicEncrypt2.publicDecrypt;\n  exports$110.privateDecrypt = publicEncrypt2.privateDecrypt;\n  var rf = dew$110();\n  exports$110.randomFill = rf.randomFill;\n  exports$110.randomFillSync = rf.randomFillSync;\n  exports$110.createCredentials = function() {\n    throw new Error([\"sorry, createCredentials is not implemented yet\", \"we accept pull requests\", \"https://github.com/crypto-browserify/crypto-browserify\"].join(\"\\n\"));\n  };\n  exports$110.constants = {\n    \"DH_CHECK_P_NOT_SAFE_PRIME\": 2,\n    \"DH_CHECK_P_NOT_PRIME\": 1,\n    \"DH_UNABLE_TO_CHECK_GENERATOR\": 4,\n    \"DH_NOT_SUITABLE_GENERATOR\": 8,\n    \"NPN_ENABLED\": 1,\n    \"ALPN_ENABLED\": 1,\n    \"RSA_PKCS1_PADDING\": 1,\n    \"RSA_SSLV23_PADDING\": 2,\n    \"RSA_NO_PADDING\": 3,\n    \"RSA_PKCS1_OAEP_PADDING\": 4,\n    \"RSA_X931_PADDING\": 5,\n    \"RSA_PKCS1_PSS_PADDING\": 6,\n    \"POINT_CONVERSION_COMPRESSED\": 2,\n    \"POINT_CONVERSION_UNCOMPRESSED\": 4,\n    \"POINT_CONVERSION_HYBRID\": 6\n  };\n  return exports$110;\n}\nvar exports10 = dew10();\nexports10[\"randomBytes\"];\nexports10[\"rng\"];\nexports10[\"pseudoRandomBytes\"];\nexports10[\"prng\"];\nexports10[\"createHash\"];\nexports10[\"Hash\"];\nexports10[\"createHmac\"];\nexports10[\"Hmac\"];\nexports10[\"getHashes\"];\nexports10[\"pbkdf2\"];\nexports10[\"pbkdf2Sync\"];\nexports10[\"Cipher\"];\nexports10[\"createCipher\"];\nexports10[\"Cipheriv\"];\nexports10[\"createCipheriv\"];\nexports10[\"Decipher\"];\nexports10[\"createDecipher\"];\nexports10[\"Decipheriv\"];\nexports10[\"createDecipheriv\"];\nexports10[\"getCiphers\"];\nexports10[\"listCiphers\"];\nexports10[\"DiffieHellmanGroup\"];\nexports10[\"createDiffieHellmanGroup\"];\nexports10[\"getDiffieHellman\"];\nexports10[\"createDiffieHellman\"];\nexports10[\"DiffieHellman\"];\nexports10[\"createSign\"];\nexports10[\"Sign\"];\nexports10[\"createVerify\"];\nexports10[\"Verify\"];\nexports10[\"createECDH\"];\nexports10[\"publicEncrypt\"];\nexports10[\"privateEncrypt\"];\nexports10[\"publicDecrypt\"];\nexports10[\"privateDecrypt\"];\nexports10[\"randomFill\"];\nexports10[\"randomFillSync\"];\nexports10[\"createCredentials\"];\nexports10[\"constants\"];\nexports10.webcrypto = globalThis.crypto;\nexports10.getRandomValues = function(abv) {\n  var l5 = abv.length;\n  while (l5--) {\n    var bytes = exports10.randomBytes(7);\n    var randomFloat = bytes[0] % 32 / 32;\n    for (var i5 = 0; i5 < bytes.length; i5++) {\n      var byte = bytes[i5];\n      randomFloat = (randomFloat + byte) / 256;\n    }\n    abv[l5] = Math.floor(randomFloat * 256);\n  }\n  return abv;\n};\nexports10.randomUUID = function() {\n  return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, function(c5) {\n    return (c5 ^ exports10.getRandomValues(new Uint8Array(1))[0] & 15 >> c5 / 4).toString(16);\n  });\n};\nvar Cipher = exports10.Cipher;\nvar Cipheriv = exports10.Cipheriv;\nvar Decipher = exports10.Decipher;\nvar Decipheriv = exports10.Decipheriv;\nvar DiffieHellman = exports10.DiffieHellman;\nvar DiffieHellmanGroup = exports10.DiffieHellmanGroup;\nvar Hash = exports10.Hash;\nvar Hmac = exports10.Hmac;\nvar Sign = exports10.Sign;\nvar Verify = exports10.Verify;\nvar constants = exports10.constants;\nvar createCipher = exports10.createCipher;\nvar createCipheriv = exports10.createCipheriv;\nvar createCredentials = exports10.createCredentials;\nvar createDecipher = exports10.createDecipher;\nvar createDecipheriv = exports10.createDecipheriv;\nvar createDiffieHellman = exports10.createDiffieHellman;\nvar createDiffieHellmanGroup = exports10.createDiffieHellmanGroup;\nvar createECDH = exports10.createECDH;\nvar createHash = exports10.createHash;\nvar createHmac = exports10.createHmac;\nvar createSign = exports10.createSign;\nvar createVerify = exports10.createVerify;\nvar getCiphers = exports10.getCiphers;\nvar getDiffieHellman = exports10.getDiffieHellman;\nvar getHashes = exports10.getHashes;\nvar listCiphers = exports10.listCiphers;\nvar pbkdf2 = exports10.pbkdf2;\nvar pbkdf2Sync = exports10.pbkdf2Sync;\nvar privateDecrypt = exports10.privateDecrypt;\nvar privateEncrypt = exports10.privateEncrypt;\nvar prng = exports10.prng;\nvar pseudoRandomBytes = exports10.pseudoRandomBytes;\nvar publicDecrypt = exports10.publicDecrypt;\nvar publicEncrypt = exports10.publicEncrypt;\nvar randomBytes = exports10.randomBytes;\nvar randomFill = exports10.randomFill;\nvar randomFillSync = exports10.randomFillSync;\nvar rng = exports10.rng;\nvar webcrypto = exports10.webcrypto;\nvar getRandomValues = exports10.getRandomValues;\nvar randomUUID = exports10.randomUUID;\nexport {\n  Cipher,\n  Cipheriv,\n  Decipher,\n  Decipheriv,\n  DiffieHellman,\n  DiffieHellmanGroup,\n  Hash,\n  Hmac,\n  Sign,\n  Verify,\n  constants,\n  createCipher,\n  createCipheriv,\n  createCredentials,\n  createDecipher,\n  createDecipheriv,\n  createDiffieHellman,\n  createDiffieHellmanGroup,\n  createECDH,\n  createHash,\n  createHmac,\n  createSign,\n  createVerify,\n  exports10 as default,\n  getCiphers,\n  getDiffieHellman,\n  getHashes,\n  getRandomValues,\n  listCiphers,\n  pbkdf2,\n  pbkdf2Sync,\n  privateDecrypt,\n  privateEncrypt,\n  prng,\n  pseudoRandomBytes,\n  publicDecrypt,\n  publicEncrypt,\n  randomBytes,\n  randomFill,\n  randomFillSync,\n  randomUUID,\n  rng,\n  webcrypto\n};\n/*! Bundled license information:\n\n@jspm/core/nodelibs/browser/chunk-DtuTasat.js:\n@jspm/core/nodelibs/browser/chunk-B738Er4n.js:\n  (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\n@jspm/core/nodelibs/browser/chunk-CcCWfKp1.js:\n@jspm/core/nodelibs/browser/crypto.js:\n  (*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n*/\n", "export * from 'crypto'", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t    var crypto;\n\n\t    // Native crypto from window (Browser)\n\t    if (typeof window !== 'undefined' && window.crypto) {\n\t        crypto = window.crypto;\n\t    }\n\n\t    // Native crypto in web worker (Browser)\n\t    if (typeof self !== 'undefined' && self.crypto) {\n\t        crypto = self.crypto;\n\t    }\n\n\t    // Native crypto from worker\n\t    if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t        crypto = globalThis.crypto;\n\t    }\n\n\t    // Native (experimental IE 11) crypto from window (Browser)\n\t    if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t        crypto = window.msCrypto;\n\t    }\n\n\t    // Native crypto from global (NodeJS)\n\t    if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t        crypto = global.crypto;\n\t    }\n\n\t    // Native crypto import via require (NodeJS)\n\t    if (!crypto && typeof require === 'function') {\n\t        try {\n\t            crypto = require('crypto');\n\t        } catch (err) {}\n\t    }\n\n\t    /*\n\t     * Cryptographically secure pseudorandom number generator\n\t     *\n\t     * As Math.random() is cryptographically not safe to use\n\t     */\n\t    var cryptoSecureRandomInt = function () {\n\t        if (crypto) {\n\t            // Use getRandomValues method (Browser)\n\t            if (typeof crypto.getRandomValues === 'function') {\n\t                try {\n\t                    return crypto.getRandomValues(new Uint32Array(1))[0];\n\t                } catch (err) {}\n\t            }\n\n\t            // Use randomBytes method (NodeJS)\n\t            if (typeof crypto.randomBytes === 'function') {\n\t                try {\n\t                    return crypto.randomBytes(4).readInt32LE();\n\t                } catch (err) {}\n\t            }\n\t        }\n\n\t        throw new Error('Native crypto module could not be used to get secure random number.');\n\t    };\n\n\t    /*\n\t     * Local polyfill of Object.create\n\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {}\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }());\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var j = 0; j < thatSigBytes; j += 4) {\n\t                    thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            for (var i = 0; i < nBytes; i += 4) {\n\t                words.push(cryptoSecureRandomInt());\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            var processedWords;\n\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));", ";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var Hasher = C_lib.Hasher;\n\t    var C_algo = C.algo;\n\n\t    // Constants table\n\t    var T = [];\n\n\t    // Compute constants\n\t    (function () {\n\t        for (var i = 0; i < 64; i++) {\n\t            T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t        }\n\t    }());\n\n\t    /**\n\t     * MD5 hash algorithm.\n\t     */\n\t    var MD5 = C_algo.MD5 = Hasher.extend({\n\t        _doReset: function () {\n\t            this._hash = new WordArray.init([\n\t                0x67452301, 0xefcdab89,\n\t                0x98badcfe, 0x10325476\n\t            ]);\n\t        },\n\n\t        _doProcessBlock: function (M, offset) {\n\t            // Swap endian\n\t            for (var i = 0; i < 16; i++) {\n\t                // Shortcuts\n\t                var offset_i = offset + i;\n\t                var M_offset_i = M[offset_i];\n\n\t                M[offset_i] = (\n\t                    (((M_offset_i << 8)  | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t                    (((M_offset_i << 24) | (M_offset_i >>> 8))  & 0xff00ff00)\n\t                );\n\t            }\n\n\t            // Shortcuts\n\t            var H = this._hash.words;\n\n\t            var M_offset_0  = M[offset + 0];\n\t            var M_offset_1  = M[offset + 1];\n\t            var M_offset_2  = M[offset + 2];\n\t            var M_offset_3  = M[offset + 3];\n\t            var M_offset_4  = M[offset + 4];\n\t            var M_offset_5  = M[offset + 5];\n\t            var M_offset_6  = M[offset + 6];\n\t            var M_offset_7  = M[offset + 7];\n\t            var M_offset_8  = M[offset + 8];\n\t            var M_offset_9  = M[offset + 9];\n\t            var M_offset_10 = M[offset + 10];\n\t            var M_offset_11 = M[offset + 11];\n\t            var M_offset_12 = M[offset + 12];\n\t            var M_offset_13 = M[offset + 13];\n\t            var M_offset_14 = M[offset + 14];\n\t            var M_offset_15 = M[offset + 15];\n\n\t            // Working variables\n\t            var a = H[0];\n\t            var b = H[1];\n\t            var c = H[2];\n\t            var d = H[3];\n\n\t            // Computation\n\t            a = FF(a, b, c, d, M_offset_0,  7,  T[0]);\n\t            d = FF(d, a, b, c, M_offset_1,  12, T[1]);\n\t            c = FF(c, d, a, b, M_offset_2,  17, T[2]);\n\t            b = FF(b, c, d, a, M_offset_3,  22, T[3]);\n\t            a = FF(a, b, c, d, M_offset_4,  7,  T[4]);\n\t            d = FF(d, a, b, c, M_offset_5,  12, T[5]);\n\t            c = FF(c, d, a, b, M_offset_6,  17, T[6]);\n\t            b = FF(b, c, d, a, M_offset_7,  22, T[7]);\n\t            a = FF(a, b, c, d, M_offset_8,  7,  T[8]);\n\t            d = FF(d, a, b, c, M_offset_9,  12, T[9]);\n\t            c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t            b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t            a = FF(a, b, c, d, M_offset_12, 7,  T[12]);\n\t            d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t            c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t            b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t            a = GG(a, b, c, d, M_offset_1,  5,  T[16]);\n\t            d = GG(d, a, b, c, M_offset_6,  9,  T[17]);\n\t            c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t            b = GG(b, c, d, a, M_offset_0,  20, T[19]);\n\t            a = GG(a, b, c, d, M_offset_5,  5,  T[20]);\n\t            d = GG(d, a, b, c, M_offset_10, 9,  T[21]);\n\t            c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t            b = GG(b, c, d, a, M_offset_4,  20, T[23]);\n\t            a = GG(a, b, c, d, M_offset_9,  5,  T[24]);\n\t            d = GG(d, a, b, c, M_offset_14, 9,  T[25]);\n\t            c = GG(c, d, a, b, M_offset_3,  14, T[26]);\n\t            b = GG(b, c, d, a, M_offset_8,  20, T[27]);\n\t            a = GG(a, b, c, d, M_offset_13, 5,  T[28]);\n\t            d = GG(d, a, b, c, M_offset_2,  9,  T[29]);\n\t            c = GG(c, d, a, b, M_offset_7,  14, T[30]);\n\t            b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t            a = HH(a, b, c, d, M_offset_5,  4,  T[32]);\n\t            d = HH(d, a, b, c, M_offset_8,  11, T[33]);\n\t            c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t            b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t            a = HH(a, b, c, d, M_offset_1,  4,  T[36]);\n\t            d = HH(d, a, b, c, M_offset_4,  11, T[37]);\n\t            c = HH(c, d, a, b, M_offset_7,  16, T[38]);\n\t            b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t            a = HH(a, b, c, d, M_offset_13, 4,  T[40]);\n\t            d = HH(d, a, b, c, M_offset_0,  11, T[41]);\n\t            c = HH(c, d, a, b, M_offset_3,  16, T[42]);\n\t            b = HH(b, c, d, a, M_offset_6,  23, T[43]);\n\t            a = HH(a, b, c, d, M_offset_9,  4,  T[44]);\n\t            d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t            c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t            b = HH(b, c, d, a, M_offset_2,  23, T[47]);\n\n\t            a = II(a, b, c, d, M_offset_0,  6,  T[48]);\n\t            d = II(d, a, b, c, M_offset_7,  10, T[49]);\n\t            c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t            b = II(b, c, d, a, M_offset_5,  21, T[51]);\n\t            a = II(a, b, c, d, M_offset_12, 6,  T[52]);\n\t            d = II(d, a, b, c, M_offset_3,  10, T[53]);\n\t            c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t            b = II(b, c, d, a, M_offset_1,  21, T[55]);\n\t            a = II(a, b, c, d, M_offset_8,  6,  T[56]);\n\t            d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t            c = II(c, d, a, b, M_offset_6,  15, T[58]);\n\t            b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t            a = II(a, b, c, d, M_offset_4,  6,  T[60]);\n\t            d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t            c = II(c, d, a, b, M_offset_2,  15, T[62]);\n\t            b = II(b, c, d, a, M_offset_9,  21, T[63]);\n\n\t            // Intermediate hash value\n\t            H[0] = (H[0] + a) | 0;\n\t            H[1] = (H[1] + b) | 0;\n\t            H[2] = (H[2] + c) | 0;\n\t            H[3] = (H[3] + d) | 0;\n\t        },\n\n\t        _doFinalize: function () {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\n\t            var nBitsTotal = this._nDataBytes * 8;\n\t            var nBitsLeft = data.sigBytes * 8;\n\n\t            // Add padding\n\t            dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t            var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t            var nBitsTotalL = nBitsTotal;\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t                (((nBitsTotalH << 8)  | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalH << 24) | (nBitsTotalH >>> 8))  & 0xff00ff00)\n\t            );\n\t            dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t                (((nBitsTotalL << 8)  | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t                (((nBitsTotalL << 24) | (nBitsTotalL >>> 8))  & 0xff00ff00)\n\t            );\n\n\t            data.sigBytes = (dataWords.length + 1) * 4;\n\n\t            // Hash final blocks\n\t            this._process();\n\n\t            // Shortcuts\n\t            var hash = this._hash;\n\t            var H = hash.words;\n\n\t            // Swap endian\n\t            for (var i = 0; i < 4; i++) {\n\t                // Shortcut\n\t                var H_i = H[i];\n\n\t                H[i] = (((H_i << 8)  | (H_i >>> 24)) & 0x00ff00ff) |\n\t                       (((H_i << 24) | (H_i >>> 8))  & 0xff00ff00);\n\t            }\n\n\t            // Return final computed hash\n\t            return hash;\n\t        },\n\n\t        clone: function () {\n\t            var clone = Hasher.clone.call(this);\n\t            clone._hash = this._hash.clone();\n\n\t            return clone;\n\t        }\n\t    });\n\n\t    function FF(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & c) | (~b & d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function GG(a, b, c, d, x, s, t) {\n\t        var n = a + ((b & d) | (c & ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function HH(a, b, c, d, x, s, t) {\n\t        var n = a + (b ^ c ^ d) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    function II(a, b, c, d, x, s, t) {\n\t        var n = a + (c ^ (b | ~d)) + x + t;\n\t        return ((n << s) | (n >>> (32 - s))) + b;\n\t    }\n\n\t    /**\n\t     * Shortcut function to the hasher's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     *\n\t     * @return {WordArray} The hash.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hash = CryptoJS.MD5('message');\n\t     *     var hash = CryptoJS.MD5(wordArray);\n\t     */\n\t    C.MD5 = Hasher._createHelper(MD5);\n\n\t    /**\n\t     * Shortcut function to the HMAC's object interface.\n\t     *\n\t     * @param {WordArray|string} message The message to hash.\n\t     * @param {WordArray|string} key The secret key.\n\t     *\n\t     * @return {WordArray} The HMAC.\n\t     *\n\t     * @static\n\t     *\n\t     * @example\n\t     *\n\t     *     var hmac = CryptoJS.HmacMD5(message, key);\n\t     */\n\t    C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));", "import MD5 from 'crypto-js/md5'\n\nconst calculateTableKey = (table) => {\n  const hideableHeaders = []\n  const userId = document.body.getAttribute('data-user-id')\n\n  eachTableHeader(table, function (el, index) {\n    hideableHeaders.push(el.dataset.name)\n  })\n\n  hideableHeaders.sort()\n\n  return MD5(`${userId}:${table.id}:${hideableHeaders.join(':')}`).toString()\n}\n\nconst eachTableHeader = (table, callback) => {\n  table.querySelectorAll('th').forEach((el, index) => {\n    callback(el, index)\n  })\n}\n\nexport { calculateTableKey, eachTableHeader }\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 * dist/inputmask\n * https://github.com/RobinHerbots/Inputmask\n * Copyright (c) 2010 - 2024 Robin Herbots\n * Licensed under the MIT license\n * Version: 5.0.9\n */\n!function(e, t) {\n    if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = t(); else if (\"function\" == typeof define && define.amd) define([], t); else {\n        var n = t();\n        for (var i in n) (\"object\" == typeof exports ? exports : e)[i] = n[i];\n    }\n}(\"undefined\" != typeof self ? self : this, (function() {\n    return function() {\n        \"use strict\";\n        var e = {\n            3976: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                t.default = {\n                    _maxTestPos: 500,\n                    placeholder: \"_\",\n                    optionalmarker: [ \"[\", \"]\" ],\n                    quantifiermarker: [ \"{\", \"}\" ],\n                    groupmarker: [ \"(\", \")\" ],\n                    alternatormarker: \"|\",\n                    escapeChar: \"\\\\\",\n                    mask: null,\n                    regex: null,\n                    oncomplete: function() {},\n                    onincomplete: function() {},\n                    oncleared: function() {},\n                    repeat: 0,\n                    greedy: !1,\n                    autoUnmask: !1,\n                    removeMaskOnSubmit: !1,\n                    clearMaskOnLostFocus: !0,\n                    insertMode: !0,\n                    insertModeVisual: !0,\n                    clearIncomplete: !1,\n                    alias: null,\n                    onKeyDown: function() {},\n                    onBeforeMask: null,\n                    onBeforePaste: function(e, t) {\n                        return \"function\" == typeof t.onBeforeMask ? t.onBeforeMask.call(this, e, t) : e;\n                    },\n                    onBeforeWrite: null,\n                    onUnMask: null,\n                    showMaskOnFocus: !0,\n                    showMaskOnHover: !0,\n                    onKeyValidation: function() {},\n                    skipOptionalPartCharacter: \" \",\n                    numericInput: !1,\n                    rightAlign: !1,\n                    undoOnEscape: !0,\n                    radixPoint: \"\",\n                    _radixDance: !1,\n                    groupSeparator: \"\",\n                    keepStatic: null,\n                    positionCaretOnTab: !0,\n                    tabThrough: !1,\n                    supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n                    isComplete: null,\n                    preValidation: null,\n                    postValidation: null,\n                    staticDefinitionSymbol: void 0,\n                    jitMasking: !1,\n                    nullable: !0,\n                    inputEventOnly: !1,\n                    noValuePatching: !1,\n                    positionCaretOnClick: \"lvp\",\n                    casing: null,\n                    inputmode: \"text\",\n                    importDataAttributes: !0,\n                    shiftPositions: !0,\n                    usePrototypeDefinitions: !0,\n                    validationEventTimeOut: 3e3,\n                    substitutes: {}\n                };\n            },\n            7392: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                t.default = {\n                    9: {\n                        validator: \"[0-9\\uff10-\\uff19]\",\n                        definitionSymbol: \"*\"\n                    },\n                    a: {\n                        validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n                        definitionSymbol: \"*\"\n                    },\n                    \"*\": {\n                        validator: \"[0-9\\uff10-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n                    }\n                };\n            },\n            253: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = function(e, t, n) {\n                    if (void 0 === n) return e.__data ? e.__data[t] : null;\n                    e.__data = e.__data || {}, e.__data[t] = n;\n                };\n            },\n            3776: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.Event = void 0, t.off = function(e, t) {\n                    var n, i;\n                    u(this[0]) && e && (n = this[0].eventRegistry, i = this[0], e.split(\" \").forEach((function(e) {\n                        var a = o(e.split(\".\"), 2);\n                        (function(e, i) {\n                            var a, r, o = [];\n                            if (e.length > 0) if (void 0 === t) for (a = 0, r = n[e][i].length; a < r; a++) o.push({\n                                ev: e,\n                                namespace: i && i.length > 0 ? i : \"global\",\n                                handler: n[e][i][a]\n                            }); else o.push({\n                                ev: e,\n                                namespace: i && i.length > 0 ? i : \"global\",\n                                handler: t\n                            }); else if (i.length > 0) for (var l in n) for (var s in n[l]) if (s === i) if (void 0 === t) for (a = 0, \n                            r = n[l][s].length; a < r; a++) o.push({\n                                ev: l,\n                                namespace: s,\n                                handler: n[l][s][a]\n                            }); else o.push({\n                                ev: l,\n                                namespace: s,\n                                handler: t\n                            });\n                            return o;\n                        })(a[0], a[1]).forEach((function(e) {\n                            var t = e.ev, a = e.handler;\n                            !function(e, t, a) {\n                                if (e in n == 1) if (i.removeEventListener ? i.removeEventListener(e, a, !1) : i.detachEvent && i.detachEvent(\"on\".concat(e), a), \n                                \"global\" === t) for (var r in n[e]) n[e][r].splice(n[e][r].indexOf(a), 1); else n[e][t].splice(n[e][t].indexOf(a), 1);\n                            }(t, e.namespace, a);\n                        }));\n                    })));\n                    return this;\n                }, t.on = function(e, t) {\n                    if (u(this[0])) {\n                        var n = this[0].eventRegistry, i = this[0];\n                        e.split(\" \").forEach((function(e) {\n                            var a = o(e.split(\".\"), 2), r = a[0], l = a[1];\n                            !function(e, a) {\n                                i.addEventListener ? i.addEventListener(e, t, !1) : i.attachEvent && i.attachEvent(\"on\".concat(e), t), \n                                n[e] = n[e] || {}, n[e][a] = n[e][a] || [], n[e][a].push(t);\n                            }(r, void 0 === l ? \"global\" : l);\n                        }));\n                    }\n                    return this;\n                }, t.trigger = function(e) {\n                    var t = arguments;\n                    if (u(this[0])) for (var n = this[0].eventRegistry, i = this[0], o = \"string\" == typeof e ? e.split(\" \") : [ e.type ], l = 0; l < o.length; l++) {\n                        var s = o[l].split(\".\"), f = s[0], p = s[1] || \"global\";\n                        if (void 0 !== c && \"global\" === p) {\n                            var d, h = {\n                                bubbles: !0,\n                                cancelable: !0,\n                                composed: !0,\n                                detail: arguments[1]\n                            };\n                            if (c.createEvent) {\n                                try {\n                                    if (\"input\" === f) h.inputType = \"insertText\", d = new InputEvent(f, h); else d = new CustomEvent(f, h);\n                                } catch (e) {\n                                    (d = c.createEvent(\"CustomEvent\")).initCustomEvent(f, h.bubbles, h.cancelable, h.detail);\n                                }\n                                e.type && (0, a.default)(d, e), i.dispatchEvent(d);\n                            } else (d = c.createEventObject()).eventType = f, d.detail = arguments[1], e.type && (0, \n                            a.default)(d, e), i.fireEvent(\"on\" + d.eventType, d);\n                        } else if (void 0 !== n[f]) {\n                            arguments[0] = arguments[0].type ? arguments[0] : r.default.Event(arguments[0]), \n                            arguments[0].detail = arguments.slice(1);\n                            var v = n[f];\n                            (\"global\" === p ? Object.values(v).flat() : v[p]).forEach((function(e) {\n                                return e.apply(i, t);\n                            }));\n                        }\n                    }\n                    return this;\n                };\n                var i = s(n(9380)), a = s(n(600)), r = s(n(4963));\n                function o(e, t) {\n                    return function(e) {\n                        if (Array.isArray(e)) return e;\n                    }(e) || function(e, t) {\n                        var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                        if (null != n) {\n                            var i, a, r, o, l = [], s = !0, c = !1;\n                            try {\n                                if (r = (n = n.call(e)).next, 0 === t) {\n                                    if (Object(n) !== n) return;\n                                    s = !1;\n                                } else for (;!(s = (i = r.call(n)).done) && (l.push(i.value), l.length !== t); s = !0) ;\n                            } catch (e) {\n                                c = !0, a = e;\n                            } finally {\n                                try {\n                                    if (!s && null != n.return && (o = n.return(), Object(o) !== o)) return;\n                                } finally {\n                                    if (c) throw a;\n                                }\n                            }\n                            return l;\n                        }\n                    }(e, t) || function(e, t) {\n                        if (!e) return;\n                        if (\"string\" == typeof e) return l(e, t);\n                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return l(e, t);\n                    }(e, t) || function() {\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                }\n                function l(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function s(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var c = i.default.document;\n                function u(e) {\n                    return e instanceof Element;\n                }\n                var f = t.Event = void 0;\n                \"function\" == typeof i.default.CustomEvent ? t.Event = f = i.default.CustomEvent : i.default.Event && c && c.createEvent ? (t.Event = f = function(e, t) {\n                    t = t || {\n                        bubbles: !1,\n                        cancelable: !1,\n                        composed: !0,\n                        detail: void 0\n                    };\n                    var n = c.createEvent(\"CustomEvent\");\n                    return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n;\n                }, f.prototype = i.default.Event.prototype) : \"undefined\" != typeof Event && (t.Event = f = Event);\n            },\n            600: function(e, t) {\n                function n(e) {\n                    return n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, n(e);\n                }\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = function e() {\n                    var t, i, a, r, o, l, s = arguments[0] || {}, c = 1, u = arguments.length, f = !1;\n                    \"boolean\" == typeof s && (f = s, s = arguments[c] || {}, c++);\n                    \"object\" !== n(s) && \"function\" != typeof s && (s = {});\n                    for (;c < u; c++) if (null != (t = arguments[c])) for (i in t) a = s[i], s !== (r = t[i]) && (f && r && (\"[object Object]\" === Object.prototype.toString.call(r) || (o = Array.isArray(r))) ? (o ? (o = !1, \n                    l = a && Array.isArray(a) ? a : []) : l = a && \"[object Object]\" === Object.prototype.toString.call(a) ? a : {}, \n                    s[i] = e(f, l, r)) : void 0 !== r && (s[i] = r));\n                    return s;\n                };\n            },\n            4963: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                var i = l(n(9380)), a = l(n(253)), r = n(3776), o = l(n(600));\n                function l(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var s = i.default.document;\n                function c(e) {\n                    return e instanceof c ? e : this instanceof c ? void (null != e && e !== i.default && (this[0] = e.nodeName ? e : void 0 !== e[0] && e[0].nodeName ? e[0] : s.querySelector(e), \n                    void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new c(e);\n                }\n                c.prototype = {\n                    on: r.on,\n                    off: r.off,\n                    trigger: r.trigger\n                }, c.extend = o.default, c.data = a.default, c.Event = r.Event;\n                t.default = c;\n            },\n            9845: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.mobile = t.iphone = t.ie = void 0;\n                var i, a = (i = n(9380)) && i.__esModule ? i : {\n                    default: i\n                };\n                var r = a.default.navigator && a.default.navigator.userAgent || \"\";\n                t.ie = r.indexOf(\"MSIE \") > 0 || r.indexOf(\"Trident/\") > 0, t.mobile = a.default.navigator && a.default.navigator.userAgentData && a.default.navigator.userAgentData.mobile || a.default.navigator && a.default.navigator.maxTouchPoints || \"ontouchstart\" in a.default, \n                t.iphone = /iphone/i.test(r);\n            },\n            7184: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = function(e) {\n                    return e.replace(n, \"\\\\$1\");\n                };\n                var n = new RegExp(\"(\\\\\" + [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ].join(\"|\\\\\") + \")\", \"gim\");\n            },\n            6030: function(e, t, n) {\n                function i(e) {\n                    return i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, i(e);\n                }\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.EventHandlers = void 0;\n                var a, r = n(9845), o = (a = n(9380)) && a.__esModule ? a : {\n                    default: a\n                }, l = n(7760), s = n(2839), c = n(8711), u = n(7215), f = n(4713);\n                function p() {\n                    /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ p = function() {\n                        return t;\n                    };\n                    var e, t = {}, n = Object.prototype, a = n.hasOwnProperty, r = Object.defineProperty || function(e, t, n) {\n                        e[t] = n.value;\n                    }, o = \"function\" == typeof Symbol ? Symbol : {}, l = o.iterator || \"@@iterator\", s = o.asyncIterator || \"@@asyncIterator\", c = o.toStringTag || \"@@toStringTag\";\n                    function u(e, t, n) {\n                        return Object.defineProperty(e, t, {\n                            value: n,\n                            enumerable: !0,\n                            configurable: !0,\n                            writable: !0\n                        }), e[t];\n                    }\n                    try {\n                        u({}, \"\");\n                    } catch (e) {\n                        u = function(e, t, n) {\n                            return e[t] = n;\n                        };\n                    }\n                    function f(e, t, n, i) {\n                        var a = t && t.prototype instanceof k ? t : k, o = Object.create(a.prototype), l = new D(i || []);\n                        return r(o, \"_invoke\", {\n                            value: E(e, n, l)\n                        }), o;\n                    }\n                    function d(e, t, n) {\n                        try {\n                            return {\n                                type: \"normal\",\n                                arg: e.call(t, n)\n                            };\n                        } catch (e) {\n                            return {\n                                type: \"throw\",\n                                arg: e\n                            };\n                        }\n                    }\n                    t.wrap = f;\n                    var h = \"suspendedStart\", v = \"suspendedYield\", m = \"executing\", g = \"completed\", y = {};\n                    function k() {}\n                    function b() {}\n                    function x() {}\n                    var w = {};\n                    u(w, l, (function() {\n                        return this;\n                    }));\n                    var P = Object.getPrototypeOf, S = P && P(P(L([])));\n                    S && S !== n && a.call(S, l) && (w = S);\n                    var O = x.prototype = k.prototype = Object.create(w);\n                    function _(e) {\n                        [ \"next\", \"throw\", \"return\" ].forEach((function(t) {\n                            u(e, t, (function(e) {\n                                return this._invoke(t, e);\n                            }));\n                        }));\n                    }\n                    function M(e, t) {\n                        function n(r, o, l, s) {\n                            var c = d(e[r], e, o);\n                            if (\"throw\" !== c.type) {\n                                var u = c.arg, f = u.value;\n                                return f && \"object\" == i(f) && a.call(f, \"__await\") ? t.resolve(f.__await).then((function(e) {\n                                    n(\"next\", e, l, s);\n                                }), (function(e) {\n                                    n(\"throw\", e, l, s);\n                                })) : t.resolve(f).then((function(e) {\n                                    u.value = e, l(u);\n                                }), (function(e) {\n                                    return n(\"throw\", e, l, s);\n                                }));\n                            }\n                            s(c.arg);\n                        }\n                        var o;\n                        r(this, \"_invoke\", {\n                            value: function(e, i) {\n                                function a() {\n                                    return new t((function(t, a) {\n                                        n(e, i, t, a);\n                                    }));\n                                }\n                                return o = o ? o.then(a, a) : a();\n                            }\n                        });\n                    }\n                    function E(t, n, i) {\n                        var a = h;\n                        return function(r, o) {\n                            if (a === m) throw new Error(\"Generator is already running\");\n                            if (a === g) {\n                                if (\"throw\" === r) throw o;\n                                return {\n                                    value: e,\n                                    done: !0\n                                };\n                            }\n                            for (i.method = r, i.arg = o; ;) {\n                                var l = i.delegate;\n                                if (l) {\n                                    var s = j(l, i);\n                                    if (s) {\n                                        if (s === y) continue;\n                                        return s;\n                                    }\n                                }\n                                if (\"next\" === i.method) i.sent = i._sent = i.arg; else if (\"throw\" === i.method) {\n                                    if (a === h) throw a = g, i.arg;\n                                    i.dispatchException(i.arg);\n                                } else \"return\" === i.method && i.abrupt(\"return\", i.arg);\n                                a = m;\n                                var c = d(t, n, i);\n                                if (\"normal\" === c.type) {\n                                    if (a = i.done ? g : v, c.arg === y) continue;\n                                    return {\n                                        value: c.arg,\n                                        done: i.done\n                                    };\n                                }\n                                \"throw\" === c.type && (a = g, i.method = \"throw\", i.arg = c.arg);\n                            }\n                        };\n                    }\n                    function j(t, n) {\n                        var i = n.method, a = t.iterator[i];\n                        if (a === e) return n.delegate = null, \"throw\" === i && t.iterator.return && (n.method = \"return\", \n                        n.arg = e, j(t, n), \"throw\" === n.method) || \"return\" !== i && (n.method = \"throw\", \n                        n.arg = new TypeError(\"The iterator does not provide a '\" + i + \"' method\")), y;\n                        var r = d(a, t.iterator, n.arg);\n                        if (\"throw\" === r.type) return n.method = \"throw\", n.arg = r.arg, n.delegate = null, \n                        y;\n                        var o = r.arg;\n                        return o ? o.done ? (n[t.resultName] = o.value, n.next = t.nextLoc, \"return\" !== n.method && (n.method = \"next\", \n                        n.arg = e), n.delegate = null, y) : o : (n.method = \"throw\", n.arg = new TypeError(\"iterator result is not an object\"), \n                        n.delegate = null, y);\n                    }\n                    function T(e) {\n                        var t = {\n                            tryLoc: e[0]\n                        };\n                        1 in e && (t.catchLoc = e[1]), 2 in e && (t.finallyLoc = e[2], t.afterLoc = e[3]), \n                        this.tryEntries.push(t);\n                    }\n                    function A(e) {\n                        var t = e.completion || {};\n                        t.type = \"normal\", delete t.arg, e.completion = t;\n                    }\n                    function D(e) {\n                        this.tryEntries = [ {\n                            tryLoc: \"root\"\n                        } ], e.forEach(T, this), this.reset(!0);\n                    }\n                    function L(t) {\n                        if (t || \"\" === t) {\n                            var n = t[l];\n                            if (n) return n.call(t);\n                            if (\"function\" == typeof t.next) return t;\n                            if (!isNaN(t.length)) {\n                                var r = -1, o = function n() {\n                                    for (;++r < t.length; ) if (a.call(t, r)) return n.value = t[r], n.done = !1, n;\n                                    return n.value = e, n.done = !0, n;\n                                };\n                                return o.next = o;\n                            }\n                        }\n                        throw new TypeError(i(t) + \" is not iterable\");\n                    }\n                    return b.prototype = x, r(O, \"constructor\", {\n                        value: x,\n                        configurable: !0\n                    }), r(x, \"constructor\", {\n                        value: b,\n                        configurable: !0\n                    }), b.displayName = u(x, c, \"GeneratorFunction\"), t.isGeneratorFunction = function(e) {\n                        var t = \"function\" == typeof e && e.constructor;\n                        return !!t && (t === b || \"GeneratorFunction\" === (t.displayName || t.name));\n                    }, t.mark = function(e) {\n                        return Object.setPrototypeOf ? Object.setPrototypeOf(e, x) : (e.__proto__ = x, u(e, c, \"GeneratorFunction\")), \n                        e.prototype = Object.create(O), e;\n                    }, t.awrap = function(e) {\n                        return {\n                            __await: e\n                        };\n                    }, _(M.prototype), u(M.prototype, s, (function() {\n                        return this;\n                    })), t.AsyncIterator = M, t.async = function(e, n, i, a, r) {\n                        void 0 === r && (r = Promise);\n                        var o = new M(f(e, n, i, a), r);\n                        return t.isGeneratorFunction(n) ? o : o.next().then((function(e) {\n                            return e.done ? e.value : o.next();\n                        }));\n                    }, _(O), u(O, c, \"Generator\"), u(O, l, (function() {\n                        return this;\n                    })), u(O, \"toString\", (function() {\n                        return \"[object Generator]\";\n                    })), t.keys = function(e) {\n                        var t = Object(e), n = [];\n                        for (var i in t) n.push(i);\n                        return n.reverse(), function e() {\n                            for (;n.length; ) {\n                                var i = n.pop();\n                                if (i in t) return e.value = i, e.done = !1, e;\n                            }\n                            return e.done = !0, e;\n                        };\n                    }, t.values = L, D.prototype = {\n                        constructor: D,\n                        reset: function(t) {\n                            if (this.prev = 0, this.next = 0, this.sent = this._sent = e, this.done = !1, this.delegate = null, \n                            this.method = \"next\", this.arg = e, this.tryEntries.forEach(A), !t) for (var n in this) \"t\" === n.charAt(0) && a.call(this, n) && !isNaN(+n.slice(1)) && (this[n] = e);\n                        },\n                        stop: function() {\n                            this.done = !0;\n                            var e = this.tryEntries[0].completion;\n                            if (\"throw\" === e.type) throw e.arg;\n                            return this.rval;\n                        },\n                        dispatchException: function(t) {\n                            if (this.done) throw t;\n                            var n = this;\n                            function i(i, a) {\n                                return l.type = \"throw\", l.arg = t, n.next = i, a && (n.method = \"next\", n.arg = e), \n                                !!a;\n                            }\n                            for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n                                var o = this.tryEntries[r], l = o.completion;\n                                if (\"root\" === o.tryLoc) return i(\"end\");\n                                if (o.tryLoc <= this.prev) {\n                                    var s = a.call(o, \"catchLoc\"), c = a.call(o, \"finallyLoc\");\n                                    if (s && c) {\n                                        if (this.prev < o.catchLoc) return i(o.catchLoc, !0);\n                                        if (this.prev < o.finallyLoc) return i(o.finallyLoc);\n                                    } else if (s) {\n                                        if (this.prev < o.catchLoc) return i(o.catchLoc, !0);\n                                    } else {\n                                        if (!c) throw new Error(\"try statement without catch or finally\");\n                                        if (this.prev < o.finallyLoc) return i(o.finallyLoc);\n                                    }\n                                }\n                            }\n                        },\n                        abrupt: function(e, t) {\n                            for (var n = this.tryEntries.length - 1; n >= 0; --n) {\n                                var i = this.tryEntries[n];\n                                if (i.tryLoc <= this.prev && a.call(i, \"finallyLoc\") && this.prev < i.finallyLoc) {\n                                    var r = i;\n                                    break;\n                                }\n                            }\n                            r && (\"break\" === e || \"continue\" === e) && r.tryLoc <= t && t <= r.finallyLoc && (r = null);\n                            var o = r ? r.completion : {};\n                            return o.type = e, o.arg = t, r ? (this.method = \"next\", this.next = r.finallyLoc, \n                            y) : this.complete(o);\n                        },\n                        complete: function(e, t) {\n                            if (\"throw\" === e.type) throw e.arg;\n                            return \"break\" === e.type || \"continue\" === e.type ? this.next = e.arg : \"return\" === e.type ? (this.rval = this.arg = e.arg, \n                            this.method = \"return\", this.next = \"end\") : \"normal\" === e.type && t && (this.next = t), \n                            y;\n                        },\n                        finish: function(e) {\n                            for (var t = this.tryEntries.length - 1; t >= 0; --t) {\n                                var n = this.tryEntries[t];\n                                if (n.finallyLoc === e) return this.complete(n.completion, n.afterLoc), A(n), y;\n                            }\n                        },\n                        catch: function(e) {\n                            for (var t = this.tryEntries.length - 1; t >= 0; --t) {\n                                var n = this.tryEntries[t];\n                                if (n.tryLoc === e) {\n                                    var i = n.completion;\n                                    if (\"throw\" === i.type) {\n                                        var a = i.arg;\n                                        A(n);\n                                    }\n                                    return a;\n                                }\n                            }\n                            throw new Error(\"illegal catch attempt\");\n                        },\n                        delegateYield: function(t, n, i) {\n                            return this.delegate = {\n                                iterator: L(t),\n                                resultName: n,\n                                nextLoc: i\n                            }, \"next\" === this.method && (this.arg = e), y;\n                        }\n                    }, t;\n                }\n                function d(e, t) {\n                    var n = \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                    if (!n) {\n                        if (Array.isArray(e) || (n = function(e, t) {\n                            if (!e) return;\n                            if (\"string\" == typeof e) return h(e, t);\n                            var n = Object.prototype.toString.call(e).slice(8, -1);\n                            \"Object\" === n && e.constructor && (n = e.constructor.name);\n                            if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                            if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return h(e, t);\n                        }(e)) || t && e && \"number\" == typeof e.length) {\n                            n && (e = n);\n                            var i = 0, a = function() {};\n                            return {\n                                s: a,\n                                n: function() {\n                                    return i >= e.length ? {\n                                        done: !0\n                                    } : {\n                                        done: !1,\n                                        value: e[i++]\n                                    };\n                                },\n                                e: function(e) {\n                                    throw e;\n                                },\n                                f: a\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                    var r, o = !0, l = !1;\n                    return {\n                        s: function() {\n                            n = n.call(e);\n                        },\n                        n: function() {\n                            var e = n.next();\n                            return o = e.done, e;\n                        },\n                        e: function(e) {\n                            l = !0, r = e;\n                        },\n                        f: function() {\n                            try {\n                                o || null == n.return || n.return();\n                            } finally {\n                                if (l) throw r;\n                            }\n                        }\n                    };\n                }\n                function h(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function v(e, t, n, i, a, r, o) {\n                    try {\n                        var l = e[r](o), s = l.value;\n                    } catch (e) {\n                        return void n(e);\n                    }\n                    l.done ? t(s) : Promise.resolve(s).then(i, a);\n                }\n                var m, g, y = t.EventHandlers = {\n                    keyEvent: function(e, t, n, i, a) {\n                        var o = this.inputmask, p = o.opts, d = o.dependencyLib, h = o.maskset, v = this, m = d(v), g = e.key, k = c.caret.call(o, v), b = p.onKeyDown.call(this, e, c.getBuffer.call(o), k, p);\n                        if (void 0 !== b) return b;\n                        if (g === s.keys.Backspace || g === s.keys.Delete || r.iphone && g === s.keys.BACKSPACE_SAFARI || e.ctrlKey && g === s.keys.x && !(\"oncut\" in v)) e.preventDefault(), \n                        u.handleRemove.call(o, v, g, k), (0, l.writeBuffer)(v, c.getBuffer.call(o, !0), h.p, e, v.inputmask._valueGet() !== c.getBuffer.call(o).join(\"\")); else if (g === s.keys.End || g === s.keys.PageDown) {\n                            e.preventDefault();\n                            var x = c.seekNext.call(o, c.getLastValidPosition.call(o));\n                            c.caret.call(o, v, e.shiftKey ? k.begin : x, x, !0);\n                        } else g === s.keys.Home && !e.shiftKey || g === s.keys.PageUp ? (e.preventDefault(), \n                        c.caret.call(o, v, 0, e.shiftKey ? k.begin : 0, !0)) : p.undoOnEscape && g === s.keys.Escape && !0 !== e.altKey ? ((0, \n                        l.checkVal)(v, !0, !1, o.undoValue.split(\"\")), m.trigger(\"click\")) : g !== s.keys.Insert || e.shiftKey || e.ctrlKey || void 0 !== o.userOptions.insertMode ? !0 === p.tabThrough && g === s.keys.Tab ? !0 === e.shiftKey ? (k.end = c.seekPrevious.call(o, k.end, !0), \n                        !0 === f.getTest.call(o, k.end - 1).match.static && k.end--, k.begin = c.seekPrevious.call(o, k.end, !0), \n                        k.begin >= 0 && k.end > 0 && (e.preventDefault(), c.caret.call(o, v, k.begin, k.end))) : (k.begin = c.seekNext.call(o, k.begin, !0), \n                        k.end = c.seekNext.call(o, k.begin, !0), k.end < h.maskLength && k.end--, k.begin <= h.maskLength && (e.preventDefault(), \n                        c.caret.call(o, v, k.begin, k.end))) : e.shiftKey || (p.insertModeVisual && !1 === p.insertMode ? g === s.keys.ArrowRight ? setTimeout((function() {\n                            var e = c.caret.call(o, v);\n                            c.caret.call(o, v, e.begin);\n                        }), 0) : g === s.keys.ArrowLeft && setTimeout((function() {\n                            var e = c.translatePosition.call(o, v.inputmask.caretPos.begin);\n                            c.translatePosition.call(o, v.inputmask.caretPos.end);\n                            o.isRTL ? c.caret.call(o, v, e + (e === h.maskLength ? 0 : 1)) : c.caret.call(o, v, e - (0 === e ? 0 : 1));\n                        }), 0) : void 0 === o.keyEventHook || o.keyEventHook(e)) : u.isSelection.call(o, k) ? p.insertMode = !p.insertMode : (p.insertMode = !p.insertMode, \n                        c.caret.call(o, v, k.begin, k.begin));\n                        return o.isComposing = g == s.keys.Process || g == s.keys.Unidentified, o.ignorable = g.length > 1 && !(\"textarea\" === v.tagName.toLowerCase() && g == s.keys.Enter), \n                        y.keypressEvent.call(this, e, t, n, i, a);\n                    },\n                    keypressEvent: function(e, t, n, i, a) {\n                        var r = this.inputmask || this, o = r.opts, f = r.dependencyLib, p = r.maskset, d = r.el, h = f(d), v = e.key;\n                        if (!0 === t || e.ctrlKey && e.altKey && !r.ignorable || !(e.ctrlKey || e.metaKey || r.ignorable)) {\n                            if (v) {\n                                var m, g = t ? {\n                                    begin: a,\n                                    end: a\n                                } : c.caret.call(r, d);\n                                t || (v = o.substitutes[v] || v), p.writeOutBuffer = !0;\n                                var y = u.isValid.call(r, g, v, i, void 0, void 0, void 0, t);\n                                if (!1 !== y && (c.resetMaskSet.call(r, !0), m = void 0 !== y.caret ? y.caret : c.seekNext.call(r, y.pos.begin ? y.pos.begin : y.pos), \n                                p.p = m), m = o.numericInput && void 0 === y.caret ? c.seekPrevious.call(r, m) : m, \n                                !1 !== n && (setTimeout((function() {\n                                    o.onKeyValidation.call(d, v, y);\n                                }), 0), p.writeOutBuffer && !1 !== y)) {\n                                    var k = c.getBuffer.call(r);\n                                    (0, l.writeBuffer)(d, k, m, e, !0 !== t);\n                                }\n                                if (e.preventDefault(), t) return !1 !== y && (y.forwardPosition = m), y;\n                            }\n                        } else v === s.keys.Enter && r.undoValue !== r._valueGet(!0) && (r.undoValue = r._valueGet(!0), \n                        setTimeout((function() {\n                            h.trigger(\"change\");\n                        }), 0));\n                    },\n                    pasteEvent: (m = p().mark((function e(t) {\n                        var n, i, a, r, s, u;\n                        return p().wrap((function(e) {\n                            for (;;) switch (e.prev = e.next) {\n                              case 0:\n                                n = function(e, n, i, a, o) {\n                                    var s = c.caret.call(e, n, void 0, void 0, !0), u = i.substr(0, s.begin), f = i.substr(s.end, i.length);\n                                    if (u == (e.isRTL ? c.getBufferTemplate.call(e).slice().reverse() : c.getBufferTemplate.call(e)).slice(0, s.begin).join(\"\") && (u = \"\"), \n                                    f == (e.isRTL ? c.getBufferTemplate.call(e).slice().reverse() : c.getBufferTemplate.call(e)).slice(s.end).join(\"\") && (f = \"\"), \n                                    a = u + a + f, e.isRTL && !0 !== r.numericInput) {\n                                        a = a.split(\"\");\n                                        var p, h = d(c.getBufferTemplate.call(e));\n                                        try {\n                                            for (h.s(); !(p = h.n()).done; ) {\n                                                var v = p.value;\n                                                a[0] === v && a.shift();\n                                            }\n                                        } catch (e) {\n                                            h.e(e);\n                                        } finally {\n                                            h.f();\n                                        }\n                                        a = a.reverse().join(\"\");\n                                    }\n                                    var m = a;\n                                    if (\"function\" == typeof o) {\n                                        if (!1 === (m = o.call(e, m, r))) return !1;\n                                        m || (m = i);\n                                    }\n                                    (0, l.checkVal)(n, !0, !1, m.toString().split(\"\"), t);\n                                }, i = this, a = this.inputmask, r = a.opts, s = a._valueGet(!0), a.skipInputEvent = !0, \n                                t.clipboardData && t.clipboardData.getData ? u = t.clipboardData.getData(\"text/plain\") : o.default.clipboardData && o.default.clipboardData.getData && (u = o.default.clipboardData.getData(\"Text\")), \n                                n(a, i, s, u, r.onBeforePaste), t.preventDefault();\n\n                              case 7:\n                              case \"end\":\n                                return e.stop();\n                            }\n                        }), e, this);\n                    })), g = function() {\n                        var e = this, t = arguments;\n                        return new Promise((function(n, i) {\n                            var a = m.apply(e, t);\n                            function r(e) {\n                                v(a, n, i, r, o, \"next\", e);\n                            }\n                            function o(e) {\n                                v(a, n, i, r, o, \"throw\", e);\n                            }\n                            r(void 0);\n                        }));\n                    }, function(e) {\n                        return g.apply(this, arguments);\n                    }),\n                    inputFallBackEvent: function(e) {\n                        var t = this.inputmask, n = t.opts, i = t.dependencyLib;\n                        var a, o = this, u = o.inputmask._valueGet(!0), p = (t.isRTL ? c.getBuffer.call(t).slice().reverse() : c.getBuffer.call(t)).join(\"\"), d = c.caret.call(t, o, void 0, void 0, !0);\n                        if (p !== u) {\n                            if (a = function(e, i, a) {\n                                for (var r, o, l, s = e.substr(0, a.begin).split(\"\"), u = e.substr(a.begin).split(\"\"), p = i.substr(0, a.begin).split(\"\"), d = i.substr(a.begin).split(\"\"), h = s.length >= p.length ? s.length : p.length, v = u.length >= d.length ? u.length : d.length, m = \"\", g = [], y = \"~\"; s.length < h; ) s.push(y);\n                                for (;p.length < h; ) p.push(y);\n                                for (;u.length < v; ) u.unshift(y);\n                                for (;d.length < v; ) d.unshift(y);\n                                var k = s.concat(u), b = p.concat(d);\n                                for (o = 0, r = k.length; o < r; o++) switch (l = f.getPlaceholder.call(t, c.translatePosition.call(t, o)), \n                                m) {\n                                  case \"insertText\":\n                                    b[o - 1] === k[o] && a.begin == k.length - 1 && g.push(k[o]), o = r;\n                                    break;\n\n                                  case \"insertReplacementText\":\n                                  case \"deleteContentBackward\":\n                                    k[o] === y ? a.end++ : o = r;\n                                    break;\n\n                                  default:\n                                    k[o] !== b[o] && (k[o + 1] !== y && k[o + 1] !== l && void 0 !== k[o + 1] || (b[o] !== l || b[o + 1] !== y) && b[o] !== y ? b[o + 1] === y && b[o] === k[o + 1] ? (m = \"insertText\", \n                                    g.push(k[o]), a.begin--, a.end--) : k[o] !== l && k[o] !== y && (k[o + 1] === y || b[o] !== k[o] && b[o + 1] === k[o + 1]) ? (m = \"insertReplacementText\", \n                                    g.push(k[o]), a.begin--) : k[o] === y ? (m = \"deleteContentBackward\", (c.isMask.call(t, c.translatePosition.call(t, o), !0) || b[o] === n.radixPoint) && a.end++) : o = r : (m = \"insertText\", \n                                    g.push(k[o]), a.begin--, a.end--));\n                                }\n                                return {\n                                    action: m,\n                                    data: g,\n                                    caret: a\n                                };\n                            }(u, p, d), (o.inputmask.shadowRoot || o.ownerDocument).activeElement !== o && o.focus(), \n                            (0, l.writeBuffer)(o, c.getBuffer.call(t)), c.caret.call(t, o, d.begin, d.end, !0), \n                            !r.mobile && t.skipNextInsert && \"insertText\" === e.inputType && \"insertText\" === a.action && t.isComposing) return !1;\n                            switch (\"insertCompositionText\" === e.inputType && \"insertText\" === a.action && t.isComposing ? t.skipNextInsert = !0 : t.skipNextInsert = !1, \n                            a.action) {\n                              case \"insertText\":\n                              case \"insertReplacementText\":\n                                a.data.forEach((function(e, n) {\n                                    var a = new i.Event(\"keypress\");\n                                    a.key = e, t.ignorable = !1, y.keypressEvent.call(o, a);\n                                })), setTimeout((function() {\n                                    t.$el.trigger(\"keyup\");\n                                }), 0);\n                                break;\n\n                              case \"deleteContentBackward\":\n                                var h = new i.Event(\"keydown\");\n                                h.key = s.keys.Backspace, y.keyEvent.call(o, h);\n                                break;\n\n                              default:\n                                (0, l.applyInputValue)(o, u), c.caret.call(t, o, d.begin, d.end, !0);\n                            }\n                            e.preventDefault();\n                        }\n                    },\n                    setValueEvent: function(e) {\n                        var t = this.inputmask, n = t.dependencyLib, i = this, a = e && e.detail ? e.detail[0] : arguments[1];\n                        void 0 === a && (a = i.inputmask._valueGet(!0)), (0, l.applyInputValue)(i, a, new n.Event(\"input\")), \n                        (e.detail && void 0 !== e.detail[1] || void 0 !== arguments[2]) && c.caret.call(t, i, e.detail ? e.detail[1] : arguments[2]);\n                    },\n                    focusEvent: function(e) {\n                        var t = this.inputmask, n = t.opts, i = t && t._valueGet();\n                        n.showMaskOnFocus && i !== c.getBuffer.call(t).join(\"\") && (0, l.writeBuffer)(this, c.getBuffer.call(t), c.seekNext.call(t, c.getLastValidPosition.call(t))), \n                        !0 !== n.positionCaretOnTab || !1 !== t.mouseEnter || u.isComplete.call(t, c.getBuffer.call(t)) && -1 !== c.getLastValidPosition.call(t) || y.clickEvent.apply(this, [ e, !0 ]), \n                        t.undoValue = t && t._valueGet(!0);\n                    },\n                    invalidEvent: function(e) {\n                        this.inputmask.validationEvent = !0;\n                    },\n                    mouseleaveEvent: function() {\n                        var e = this.inputmask, t = e.opts, n = this;\n                        e.mouseEnter = !1, t.clearMaskOnLostFocus && (n.inputmask.shadowRoot || n.ownerDocument).activeElement !== n && (0, \n                        l.HandleNativePlaceholder)(n, e.originalPlaceholder);\n                    },\n                    clickEvent: function(e, t) {\n                        var n = this.inputmask;\n                        n.clicked++;\n                        var i = this;\n                        if ((i.inputmask.shadowRoot || i.ownerDocument).activeElement === i) {\n                            var a = c.determineNewCaretPosition.call(n, c.caret.call(n, i), t);\n                            void 0 !== a && c.caret.call(n, i, a);\n                        }\n                    },\n                    cutEvent: function(e) {\n                        var t = this.inputmask, n = t.maskset, i = this, a = c.caret.call(t, i), r = t.isRTL ? c.getBuffer.call(t).slice(a.end, a.begin) : c.getBuffer.call(t).slice(a.begin, a.end), f = t.isRTL ? r.reverse().join(\"\") : r.join(\"\");\n                        o.default.navigator && o.default.navigator.clipboard ? o.default.navigator.clipboard.writeText(f) : o.default.clipboardData && o.default.clipboardData.getData && o.default.clipboardData.setData(\"Text\", f), \n                        u.handleRemove.call(t, i, s.keys.Delete, a), (0, l.writeBuffer)(i, c.getBuffer.call(t), n.p, e, t.undoValue !== t._valueGet(!0));\n                    },\n                    blurEvent: function(e) {\n                        var t = this.inputmask, n = t.opts, i = t.dependencyLib;\n                        t.clicked = 0;\n                        var a = i(this), r = this;\n                        if (r.inputmask) {\n                            (0, l.HandleNativePlaceholder)(r, t.originalPlaceholder);\n                            var o = r.inputmask._valueGet(), s = c.getBuffer.call(t).slice();\n                            \"\" !== o && (n.clearMaskOnLostFocus && (-1 === c.getLastValidPosition.call(t) && o === c.getBufferTemplate.call(t).join(\"\") ? s = [] : l.clearOptionalTail.call(t, s)), \n                            !1 === u.isComplete.call(t, s) && (setTimeout((function() {\n                                a.trigger(\"incomplete\");\n                            }), 0), n.clearIncomplete && (c.resetMaskSet.call(t, !1), s = n.clearMaskOnLostFocus ? [] : c.getBufferTemplate.call(t).slice())), \n                            (0, l.writeBuffer)(r, s, void 0, e)), o = t._valueGet(!0), t.undoValue !== o && (\"\" != o || t.undoValue != c.getBufferTemplate.call(t).join(\"\") || t.undoValue == c.getBufferTemplate.call(t).join(\"\") && t.maskset.validPositions.length > 0) && (t.undoValue = o, \n                            a.trigger(\"change\"));\n                        }\n                    },\n                    mouseenterEvent: function() {\n                        var e = this.inputmask, t = e.opts.showMaskOnHover, n = this;\n                        if (e.mouseEnter = !0, (n.inputmask.shadowRoot || n.ownerDocument).activeElement !== n) {\n                            var i = (e.isRTL ? c.getBufferTemplate.call(e).slice().reverse() : c.getBufferTemplate.call(e)).join(\"\");\n                            t && (0, l.HandleNativePlaceholder)(n, i);\n                        }\n                    },\n                    submitEvent: function() {\n                        var e = this.inputmask, t = e.opts;\n                        e.undoValue !== e._valueGet(!0) && e.$el.trigger(\"change\"), -1 === c.getLastValidPosition.call(e) && e._valueGet && e._valueGet() === c.getBufferTemplate.call(e).join(\"\") && e._valueSet(\"\"), \n                        t.clearIncomplete && !1 === u.isComplete.call(e, c.getBuffer.call(e)) && e._valueSet(\"\"), \n                        t.removeMaskOnSubmit && (e._valueSet(e.unmaskedvalue(), !0), setTimeout((function() {\n                            (0, l.writeBuffer)(e.el, c.getBuffer.call(e));\n                        }), 0));\n                    },\n                    resetEvent: function() {\n                        var e = this.inputmask;\n                        e.refreshValue = !0, setTimeout((function() {\n                            (0, l.applyInputValue)(e.el, e._valueGet(!0));\n                        }), 0);\n                    }\n                };\n            },\n            9716: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.EventRuler = void 0;\n                var i, a = n(7760), r = (i = n(2394)) && i.__esModule ? i : {\n                    default: i\n                }, o = n(2839), l = n(8711);\n                t.EventRuler = {\n                    on: function(e, t, n) {\n                        var i = e.inputmask.dependencyLib, s = function(t) {\n                            t.originalEvent && (t = t.originalEvent || t, arguments[0] = t);\n                            var s, c = this, u = c.inputmask, f = u ? u.opts : void 0;\n                            if (void 0 === u && \"FORM\" !== this.nodeName) {\n                                var p = i.data(c, \"_inputmask_opts\");\n                                i(c).off(), p && new r.default(p).mask(c);\n                            } else {\n                                if ([ \"submit\", \"reset\", \"setvalue\" ].includes(t.type) || \"FORM\" === this.nodeName || !(c.disabled || c.readOnly && !(\"keydown\" === t.type && t.ctrlKey && t.key === o.keys.c || !1 === f.tabThrough && t.key === o.keys.Tab))) {\n                                    switch (t.type) {\n                                      case \"input\":\n                                        if (!0 === u.skipInputEvent) return u.skipInputEvent = !1, t.preventDefault();\n                                        break;\n\n                                      case \"click\":\n                                      case \"focus\":\n                                        return u.validationEvent ? (u.validationEvent = !1, e.blur(), (0, a.HandleNativePlaceholder)(e, (u.isRTL ? l.getBufferTemplate.call(u).slice().reverse() : l.getBufferTemplate.call(u)).join(\"\")), \n                                        setTimeout((function() {\n                                            e.focus();\n                                        }), f.validationEventTimeOut), !1) : (s = arguments, void setTimeout((function() {\n                                            e.inputmask && n.apply(c, s);\n                                        }), 0));\n                                    }\n                                    var d = n.apply(c, arguments);\n                                    return !1 === d && (t.preventDefault(), t.stopPropagation()), d;\n                                }\n                                t.preventDefault();\n                            }\n                        };\n                        [ \"submit\", \"reset\" ].includes(t) ? (s = s.bind(e), null !== e.form && i(e.form).on(t, s)) : i(e).on(t, s), \n                        e.inputmask.events[t] = e.inputmask.events[t] || [], e.inputmask.events[t].push(s);\n                    },\n                    off: function(e, t) {\n                        if (e.inputmask && e.inputmask.events) {\n                            var n = e.inputmask.dependencyLib, i = e.inputmask.events;\n                            for (var a in t && ((i = [])[t] = e.inputmask.events[t]), i) {\n                                for (var r = i[a]; r.length > 0; ) {\n                                    var o = r.pop();\n                                    [ \"submit\", \"reset\" ].includes(a) ? null !== e.form && n(e.form).off(a, o) : n(e).off(a, o);\n                                }\n                                delete e.inputmask.events[a];\n                            }\n                        }\n                    }\n                };\n            },\n            219: function(e, t, n) {\n                var i = p(n(7184)), a = p(n(2394)), r = n(2839), o = n(8711), l = n(4713);\n                function s(e, t) {\n                    return function(e) {\n                        if (Array.isArray(e)) return e;\n                    }(e) || function(e, t) {\n                        var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                        if (null != n) {\n                            var i, a, r, o, l = [], s = !0, c = !1;\n                            try {\n                                if (r = (n = n.call(e)).next, 0 === t) {\n                                    if (Object(n) !== n) return;\n                                    s = !1;\n                                } else for (;!(s = (i = r.call(n)).done) && (l.push(i.value), l.length !== t); s = !0) ;\n                            } catch (e) {\n                                c = !0, a = e;\n                            } finally {\n                                try {\n                                    if (!s && null != n.return && (o = n.return(), Object(o) !== o)) return;\n                                } finally {\n                                    if (c) throw a;\n                                }\n                            }\n                            return l;\n                        }\n                    }(e, t) || function(e, t) {\n                        if (!e) return;\n                        if (\"string\" == typeof e) return c(e, t);\n                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return c(e, t);\n                    }(e, t) || function() {\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                }\n                function c(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function u(e) {\n                    return u = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, u(e);\n                }\n                function f(e, t) {\n                    for (var n = 0; n < t.length; n++) {\n                        var i = t[n];\n                        i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), \n                        Object.defineProperty(e, (a = i.key, r = void 0, r = function(e, t) {\n                            if (\"object\" !== u(e) || null === e) return e;\n                            var n = e[Symbol.toPrimitive];\n                            if (void 0 !== n) {\n                                var i = n.call(e, t || \"default\");\n                                if (\"object\" !== u(i)) return i;\n                                throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n                            }\n                            return (\"string\" === t ? String : Number)(e);\n                        }(a, \"string\"), \"symbol\" === u(r) ? r : String(r)), i);\n                    }\n                    var a, r;\n                }\n                function p(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                n(1313);\n                var d = a.default.dependencyLib, h = function() {\n                    function e(t, n, i, a) {\n                        !function(e, t) {\n                            if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n                        }(this, e), this.mask = t, this.format = n, this.opts = i, this.inputmask = a, this._date = new Date(1, 0, 1), \n                        this.initDateObject(t, this.opts, this.inputmask);\n                    }\n                    var t, n, i;\n                    return t = e, (n = [ {\n                        key: \"date\",\n                        get: function() {\n                            return void 0 === this._date && (this._date = new Date(1, 0, 1), this.initDateObject(void 0, this.opts, this.inputmask)), \n                            this._date;\n                        }\n                    }, {\n                        key: \"initDateObject\",\n                        value: function(e, t, n) {\n                            var i;\n                            for (P(t).lastIndex = 0; i = P(t).exec(this.format); ) {\n                                var a = /\\d+$/.exec(i[0]), r = a ? i[0][0] + \"x\" : i[0], o = void 0;\n                                if (void 0 !== e) {\n                                    if (a) {\n                                        var s = P(t).lastIndex, c = j.call(n, i.index, t, n && n.maskset);\n                                        P(t).lastIndex = s, o = e.slice(0, e.indexOf(c.nextMatch[0]));\n                                    } else {\n                                        for (var u = i[0][0], f = i.index; n && (t.placeholder[l.getTest.call(n, f).match.placeholder] || l.getTest.call(n, f).match.placeholder) === u; ) f++;\n                                        var p = f - i.index;\n                                        o = e.slice(0, p || y[r] && y[r][4] || r.length);\n                                    }\n                                    e = e.slice(o.length);\n                                }\n                                Object.prototype.hasOwnProperty.call(y, r) && this.setValue(this, o, r, y[r][2], y[r][1]);\n                            }\n                        }\n                    }, {\n                        key: \"setValue\",\n                        value: function(e, t, n, i, a) {\n                            if (void 0 !== t) switch (i) {\n                              case \"ampm\":\n                                e[i] = t, e[\"raw\" + i] = t.replace(/\\s/g, \"_\");\n                                break;\n\n                              case \"month\":\n                                if (\"mmm\" === n || \"mmmm\" === n) {\n                                    e[i] = _(\"mmm\" === n ? m.monthNames.slice(0, 12).findIndex((function(e) {\n                                        return t.toLowerCase() === e.toLowerCase();\n                                    })) + 1 : m.monthNames.slice(12, 24).findIndex((function(e) {\n                                        return t.toLowerCase() === e.toLowerCase();\n                                    })) + 1, 2), e[i] = \"00\" === e[i] ? \"\" : e[i].toString(), e[\"raw\" + i] = e[i];\n                                    break;\n                                }\n\n                              default:\n                                e[i] = t.replace(/[^0-9]/g, \"0\"), e[\"raw\" + i] = t.replace(/\\s/g, \"_\");\n                            }\n                            if (void 0 !== a) {\n                                var r = e[i];\n                                (\"day\" === i && 29 === parseInt(r) || \"month\" === i && 2 === parseInt(r)) && (29 !== parseInt(e.day) || 2 !== parseInt(e.month) || \"\" !== e.year && void 0 !== e.year || e._date.setFullYear(2012, 1, 29)), \n                                \"day\" === i && (g = !0, 0 === parseInt(r) && (r = 1)), \"month\" === i && (g = !0), \n                                \"year\" === i && (g = !0, r.length < y[n][4] && (r = _(r, y[n][4], !0))), (\"\" !== r && !isNaN(r) || \"ampm\" === i) && a.call(e._date, r);\n                            }\n                        }\n                    }, {\n                        key: \"reset\",\n                        value: function() {\n                            this._date = new Date(1, 0, 1);\n                        }\n                    }, {\n                        key: \"reInit\",\n                        value: function() {\n                            this._date = void 0, this.date;\n                        }\n                    } ]) && f(t.prototype, n), i && f(t, i), Object.defineProperty(t, \"prototype\", {\n                        writable: !1\n                    }), e;\n                }(), v = (new Date).getFullYear(), m = a.default.prototype.i18n, g = !1, y = {\n                    d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n                    dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n                        return _(Date.prototype.getDate.call(this), 2);\n                    } ],\n                    ddd: [ \"\" ],\n                    dddd: [ \"\" ],\n                    m: [ \"[1-9]|1[012]\", function(e) {\n                        var t = e ? parseInt(e) : 0;\n                        return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n                    }, \"month\", function() {\n                        return Date.prototype.getMonth.call(this) + 1;\n                    } ],\n                    mm: [ \"0[1-9]|1[012]\", function(e) {\n                        var t = e ? parseInt(e) : 0;\n                        return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n                    }, \"month\", function() {\n                        return _(Date.prototype.getMonth.call(this) + 1, 2);\n                    } ],\n                    mmm: [ m.monthNames.slice(0, 12).join(\"|\"), function(e) {\n                        var t = m.monthNames.slice(0, 12).findIndex((function(t) {\n                            return e.toLowerCase() === t.toLowerCase();\n                        }));\n                        return -1 !== t && Date.prototype.setMonth.call(this, t);\n                    }, \"month\", function() {\n                        return m.monthNames.slice(0, 12)[Date.prototype.getMonth.call(this)];\n                    } ],\n                    mmmm: [ m.monthNames.slice(12, 24).join(\"|\"), function(e) {\n                        var t = m.monthNames.slice(12, 24).findIndex((function(t) {\n                            return e.toLowerCase() === t.toLowerCase();\n                        }));\n                        return -1 !== t && Date.prototype.setMonth.call(this, t);\n                    }, \"month\", function() {\n                        return m.monthNames.slice(12, 24)[Date.prototype.getMonth.call(this)];\n                    } ],\n                    yy: [ \"[0-9]{2}\", function(e) {\n                        var t = (new Date).getFullYear().toString().slice(0, 2);\n                        Date.prototype.setFullYear.call(this, \"\".concat(t).concat(e));\n                    }, \"year\", function() {\n                        return _(Date.prototype.getFullYear.call(this), 2);\n                    }, 2 ],\n                    yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n                        return _(Date.prototype.getFullYear.call(this), 4);\n                    }, 4 ],\n                    h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n                    hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n                        return _(Date.prototype.getHours.call(this), 2);\n                    } ],\n                    hx: [ function(e) {\n                        return \"[0-9]{\".concat(e, \"}\");\n                    }, Date.prototype.setHours, \"hours\", function(e) {\n                        return Date.prototype.getHours;\n                    } ],\n                    H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n                    HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n                        return _(Date.prototype.getHours.call(this), 2);\n                    } ],\n                    Hx: [ function(e) {\n                        return \"[0-9]{\".concat(e, \"}\");\n                    }, Date.prototype.setHours, \"hours\", function(e) {\n                        return function() {\n                            return _(Date.prototype.getHours.call(this), e);\n                        };\n                    } ],\n                    M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n                    MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n                        return _(Date.prototype.getMinutes.call(this), 2);\n                    } ],\n                    s: [ \"[1-5]?[0-9]\", Date.prototype.setSeconds, \"seconds\", Date.prototype.getSeconds ],\n                    ss: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n                        return _(Date.prototype.getSeconds.call(this), 2);\n                    } ],\n                    l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n                        return _(Date.prototype.getMilliseconds.call(this), 3);\n                    }, 3 ],\n                    L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n                        return _(Date.prototype.getMilliseconds.call(this), 2);\n                    }, 2 ],\n                    t: [ \"[ap]\", b, \"ampm\", x, 1 ],\n                    tt: [ \"[ap]m\", b, \"ampm\", x, 2 ],\n                    T: [ \"[AP]\", b, \"ampm\", x, 1 ],\n                    TT: [ \"[AP]M\", b, \"ampm\", x, 2 ],\n                    Z: [ \".*\", void 0, \"Z\", function() {\n                        var e = this.toString().match(/\\((.+)\\)/)[1];\n                        e.includes(\" \") && (e = (e = e.replace(\"-\", \" \").toUpperCase()).split(\" \").map((function(e) {\n                            return s(e, 1)[0];\n                        })).join(\"\"));\n                        return e;\n                    } ],\n                    o: [ \"\" ],\n                    S: [ \"\" ]\n                }, k = {\n                    isoDate: \"yyyy-mm-dd\",\n                    isoTime: \"HH:MM:ss\",\n                    isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n                    isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n                };\n                function b(e) {\n                    var t = this.getHours();\n                    e.toLowerCase().includes(\"p\") ? this.setHours(t + 12) : e.toLowerCase().includes(\"a\") && t >= 12 && this.setHours(t - 12);\n                }\n                function x() {\n                    var e = this.getHours();\n                    return (e = e || 12) >= 12 ? \"PM\" : \"AM\";\n                }\n                function w(e) {\n                    var t = /\\d+$/.exec(e[0]);\n                    if (t && void 0 !== t[0]) {\n                        var n = y[e[0][0] + \"x\"].slice(\"\");\n                        return n[0] = n[0](t[0]), n[3] = n[3](t[0]), n;\n                    }\n                    if (y[e[0]]) return y[e[0]];\n                }\n                function P(e) {\n                    if (!e.tokenizer) {\n                        var t = [], n = [];\n                        for (var i in y) if (/\\.*x$/.test(i)) {\n                            var a = i[0] + \"\\\\d+\";\n                            -1 === n.indexOf(a) && n.push(a);\n                        } else -1 === t.indexOf(i[0]) && t.push(i[0]);\n                        e.tokenizer = \"(\" + (n.length > 0 ? n.join(\"|\") + \"|\" : \"\") + t.join(\"+|\") + \")+?|.\", \n                        e.tokenizer = new RegExp(e.tokenizer, \"g\");\n                    }\n                    return e.tokenizer;\n                }\n                function S(e, t, n) {\n                    if (!g) return !0;\n                    if (void 0 === e.rawday || !isFinite(e.rawday) && new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day || \"29\" == e.day && (!isFinite(e.rawyear) || void 0 === e.rawyear || \"\" === e.rawyear) || new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day) return t;\n                    if (\"29\" == e.day) {\n                        var i = j.call(this, t.pos, n, this.maskset);\n                        if (i.targetMatch && \"yyyy\" === i.targetMatch[0] && t.pos - i.targetMatchIndex == 2) return t.remove = t.pos + 1, \n                        t;\n                    } else if (2 == e.date.getMonth() && \"30\" == e.day && void 0 !== t.c) return e.day = \"03\", \n                    e.date.setDate(3), e.date.setMonth(1), t.insert = [ {\n                        pos: t.pos,\n                        c: \"0\"\n                    }, {\n                        pos: t.pos + 1,\n                        c: t.c\n                    } ], t.caret = o.seekNext.call(this, t.pos + 1), t;\n                    return !1;\n                }\n                function O(e, t, n, a) {\n                    var r, o, l = \"\", s = 0, c = {};\n                    for (P(n).lastIndex = 0; r = P(n).exec(e); ) {\n                        if (void 0 === t) if (o = w(r)) l += \"(\" + o[0] + \")\", n.placeholder && \"\" !== n.placeholder ? (c[s] = n.placeholder[r.index % n.placeholder.length], \n                        c[n.placeholder[r.index % n.placeholder.length]] = r[0].charAt(0)) : c[s] = r[0].charAt(0); else switch (r[0]) {\n                          case \"[\":\n                            l += \"(\";\n                            break;\n\n                          case \"]\":\n                            l += \")?\";\n                            break;\n\n                          default:\n                            l += (0, i.default)(r[0]), c[s] = r[0].charAt(0);\n                        } else if (o = w(r)) if (!0 !== a && o[3]) l += o[3].call(t.date); else o[2] ? l += t[\"raw\" + o[2]] : l += r[0]; else l += r[0];\n                        s++;\n                    }\n                    return void 0 === t && (n.placeholder = c), l;\n                }\n                function _(e, t, n) {\n                    for (e = String(e), t = t || 2; e.length < t; ) e = n ? e + \"0\" : \"0\" + e;\n                    return e;\n                }\n                function M(e, t, n) {\n                    return \"string\" == typeof e ? new h(e, t, n, this) : e && \"object\" === u(e) && Object.prototype.hasOwnProperty.call(e, \"date\") ? e : void 0;\n                }\n                function E(e, t) {\n                    return O(t.inputFormat, {\n                        date: e\n                    }, t);\n                }\n                function j(e, t, n) {\n                    var i, a, r = this, o = n && n.tests[e] ? t.placeholder[n.tests[e][0].match.placeholder] || n.tests[e][0].match.placeholder : \"\", s = 0, c = 0;\n                    for (P(t).lastIndex = 0; a = P(t).exec(t.inputFormat); ) {\n                        var u = /\\d+$/.exec(a[0]);\n                        if (u) c = parseInt(u[0]); else {\n                            for (var f = a[0][0], p = s; r && (t.placeholder[l.getTest.call(r, p).match.placeholder] || l.getTest.call(r, p).match.placeholder) === f; ) p++;\n                            0 === (c = p - s) && (c = a[0].length);\n                        }\n                        if (s += c, -1 != a[0].indexOf(o) || s >= e + 1) {\n                            i = a, a = P(t).exec(t.inputFormat);\n                            break;\n                        }\n                    }\n                    return {\n                        targetMatchIndex: s - c,\n                        nextMatch: a,\n                        targetMatch: i\n                    };\n                }\n                a.default.extendAliases({\n                    datetime: {\n                        mask: function(e) {\n                            return e.numericInput = !1, y.S = m.ordinalSuffix.join(\"|\"), e.inputFormat = k[e.inputFormat] || e.inputFormat, \n                            e.displayFormat = k[e.displayFormat] || e.displayFormat || e.inputFormat, e.outputFormat = k[e.outputFormat] || e.outputFormat || e.inputFormat, \n                            e.regex = O(e.inputFormat, void 0, e), e.min = M(e.min, e.inputFormat, e), e.max = M(e.max, e.inputFormat, e), \n                            null;\n                        },\n                        placeholder: \"\",\n                        inputFormat: \"isoDateTime\",\n                        displayFormat: null,\n                        outputFormat: null,\n                        min: null,\n                        max: null,\n                        skipOptionalPartCharacter: \"\",\n                        preValidation: function(e, t, n, i, a, r, o, l) {\n                            if (l) return !0;\n                            if (isNaN(n) && e[t] !== n) {\n                                var s = j.call(this, t, a, r);\n                                if (s.nextMatch && s.nextMatch[0] === n && s.targetMatch[0].length > 1) {\n                                    var c = w(s.targetMatch)[0];\n                                    if (new RegExp(c).test(\"0\" + e[t - 1])) return e[t] = e[t - 1], e[t - 1] = \"0\", \n                                    {\n                                        fuzzy: !0,\n                                        buffer: e,\n                                        refreshFromBuffer: {\n                                            start: t - 1,\n                                            end: t + 1\n                                        },\n                                        pos: t + 1\n                                    };\n                                }\n                            }\n                            return !0;\n                        },\n                        postValidation: function(e, t, n, i, a, r, o, s) {\n                            var c, u, f = this;\n                            if (o) return !0;\n                            if (!1 === i && (((c = j.call(f, t + 1, a, r)).targetMatch && c.targetMatchIndex === t && c.targetMatch[0].length > 1 && void 0 !== y[c.targetMatch[0]] || (c = j.call(f, t + 2, a, r)).targetMatch && c.targetMatchIndex === t + 1 && c.targetMatch[0].length > 1 && void 0 !== y[c.targetMatch[0]]) && (u = w(c.targetMatch)[0]), \n                            void 0 !== u && (void 0 !== r.validPositions[t + 1] && new RegExp(u).test(n + \"0\") ? (e[t] = n, \n                            e[t + 1] = \"0\", i = {\n                                pos: t + 2,\n                                caret: t\n                            }) : new RegExp(u).test(\"0\" + n) && (e[t] = \"0\", e[t + 1] = n, i = {\n                                pos: t + 2\n                            })), !1 === i)) return i;\n                            if (i.fuzzy && (e = i.buffer, t = i.pos), (c = j.call(f, t, a, r)).targetMatch && c.targetMatch[0] && void 0 !== y[c.targetMatch[0]]) {\n                                var p = w(c.targetMatch);\n                                u = p[0];\n                                var d = e.slice(c.targetMatchIndex, c.targetMatchIndex + c.targetMatch[0].length);\n                                if (!1 === new RegExp(u).test(d.join(\"\")) && 2 === c.targetMatch[0].length && r.validPositions[c.targetMatchIndex] && r.validPositions[c.targetMatchIndex + 1] && (r.validPositions[c.targetMatchIndex + 1].input = \"0\"), \n                                \"year\" == p[2]) for (var h = l.getMaskTemplate.call(f, !1, 1, void 0, !0), m = t + 1; m < e.length; m++) e[m] = h[m], \n                                r.validPositions.splice(t + 1, 1);\n                            }\n                            var g = i, k = M.call(f, e.join(\"\"), a.inputFormat, a);\n                            return g && !isNaN(k.date.getTime()) && (a.prefillYear && (g = function(e, t, n) {\n                                if (e.year !== e.rawyear) {\n                                    var i = v.toString(), a = e.rawyear.replace(/[^0-9]/g, \"\"), r = i.slice(0, a.length), o = i.slice(a.length);\n                                    if (2 === a.length && a === r) {\n                                        var l = new Date(v, e.month - 1, e.day);\n                                        e.day == l.getDate() && (!n.max || n.max.date.getTime() >= l.getTime()) && (e.date.setFullYear(v), \n                                        e.year = i, t.insert = [ {\n                                            pos: t.pos + 1,\n                                            c: o[0]\n                                        }, {\n                                            pos: t.pos + 2,\n                                            c: o[1]\n                                        } ]);\n                                    }\n                                }\n                                return t;\n                            }(k, g, a)), g = function(e, t, n, i, a) {\n                                if (!t) return t;\n                                if (t && n.min && !isNaN(n.min.date.getTime())) {\n                                    var r;\n                                    for (e.reset(), P(n).lastIndex = 0; r = P(n).exec(n.inputFormat); ) {\n                                        var o;\n                                        if ((o = w(r)) && o[3]) {\n                                            for (var l = o[1], s = e[o[2]], c = n.min[o[2]], u = n.max ? n.max[o[2]] : c + 1, f = [], p = !1, d = 0; d < c.length; d++) void 0 !== i.validPositions[d + r.index] || p ? (f[d] = s[d], \n                                            p = p || s[d] > c[d]) : (d + r.index == 0 && s[d] < c[d] ? (f[d] = s[d], p = !0) : f[d] = c[d], \n                                            \"year\" === o[2] && s.length - 1 == d && c != u && (f = (parseInt(f.join(\"\")) + 1).toString().split(\"\")), \n                                            \"ampm\" === o[2] && c != u && n.min.date.getTime() > e.date.getTime() && (f[d] = u[d]));\n                                            l.call(e._date, f.join(\"\"));\n                                        }\n                                    }\n                                    t = n.min.date.getTime() <= e.date.getTime(), e.reInit();\n                                }\n                                return t && n.max && (isNaN(n.max.date.getTime()) || (t = n.max.date.getTime() >= e.date.getTime())), \n                                t;\n                            }(k, g = S.call(f, k, g, a), a, r)), void 0 !== t && g && i.pos !== t ? {\n                                buffer: O(a.inputFormat, k, a).split(\"\"),\n                                refreshFromBuffer: {\n                                    start: t,\n                                    end: i.pos\n                                },\n                                pos: i.caret || i.pos\n                            } : g;\n                        },\n                        onKeyDown: function(e, t, n, i) {\n                            e.ctrlKey && e.key === r.keys.ArrowRight && (this.inputmask._valueSet(E(new Date, i)), \n                            d(this).trigger(\"setvalue\"));\n                        },\n                        onUnMask: function(e, t, n) {\n                            return t ? O(n.outputFormat, M.call(this, e, n.inputFormat, n), n, !0) : t;\n                        },\n                        casing: function(e, t, n, i) {\n                            if (0 == t.nativeDef.indexOf(\"[ap]\")) return e.toLowerCase();\n                            if (0 == t.nativeDef.indexOf(\"[AP]\")) return e.toUpperCase();\n                            var a = l.getTest.call(this, [ n - 1 ]);\n                            return 0 == a.match.def.indexOf(\"[AP]\") || 0 === n || a && a.input === String.fromCharCode(r.keyCode.Space) || a && a.match.def === String.fromCharCode(r.keyCode.Space) ? e.toUpperCase() : e.toLowerCase();\n                        },\n                        onBeforeMask: function(e, t) {\n                            return \"[object Date]\" === Object.prototype.toString.call(e) && (e = E(e, t)), e;\n                        },\n                        insertMode: !1,\n                        insertModeVisual: !1,\n                        shiftPositions: !1,\n                        keepStatic: !1,\n                        inputmode: \"numeric\",\n                        prefillYear: !0\n                    }\n                });\n            },\n            1313: function(e, t, n) {\n                var i, a = (i = n(2394)) && i.__esModule ? i : {\n                    default: i\n                };\n                a.default.dependencyLib.extend(!0, a.default.prototype.i18n, {\n                    dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n                    monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n                    ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n                });\n            },\n            3851: function(e, t, n) {\n                var i, a = (i = n(2394)) && i.__esModule ? i : {\n                    default: i\n                }, r = n(8711), o = n(4713);\n                function l(e) {\n                    return function(e) {\n                        if (Array.isArray(e)) return s(e);\n                    }(e) || function(e) {\n                        if (\"undefined\" != typeof Symbol && null != e[Symbol.iterator] || null != e[\"@@iterator\"]) return Array.from(e);\n                    }(e) || function(e, t) {\n                        if (!e) return;\n                        if (\"string\" == typeof e) return s(e, t);\n                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return s(e, t);\n                    }(e) || function() {\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                }\n                function s(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                a.default.extendDefinitions({\n                    A: {\n                        validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n                        casing: \"upper\"\n                    },\n                    \"&\": {\n                        validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n                        casing: \"upper\"\n                    },\n                    \"#\": {\n                        validator: \"[0-9A-Fa-f]\",\n                        casing: \"upper\"\n                    }\n                });\n                var c = /25[0-5]|2[0-4][0-9]|[01][0-9][0-9]/;\n                function u(e, t, n, i, a) {\n                    if (n - 1 > -1 && \".\" !== t.buffer[n - 1] ? (e = t.buffer[n - 1] + e, e = n - 2 > -1 && \".\" !== t.buffer[n - 2] ? t.buffer[n - 2] + e : \"0\" + e) : e = \"00\" + e, \n                    a.greedy && parseInt(e) > 255 && c.test(\"00\" + e.charAt(2))) {\n                        var r = [].concat(l(t.buffer.slice(0, n)), [ \".\", e.charAt(2) ]);\n                        if (r.join(\"\").match(/\\./g).length < 4) return {\n                            refreshFromBuffer: !0,\n                            buffer: r,\n                            caret: n + 2\n                        };\n                    }\n                    return c.test(e);\n                }\n                a.default.extendAliases({\n                    cssunit: {\n                        regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n                    },\n                    url: {\n                        regex: \"(https?|ftp)://.*\",\n                        autoUnmask: !1,\n                        keepStatic: !1,\n                        tabThrough: !0\n                    },\n                    ip: {\n                        mask: \"i{1,3}.j{1,3}.k{1,3}.l{1,3}\",\n                        definitions: {\n                            i: {\n                                validator: u\n                            },\n                            j: {\n                                validator: u\n                            },\n                            k: {\n                                validator: u\n                            },\n                            l: {\n                                validator: u\n                            }\n                        },\n                        onUnMask: function(e, t, n) {\n                            return e;\n                        },\n                        inputmode: \"decimal\",\n                        substitutes: {\n                            \",\": \".\"\n                        }\n                    },\n                    email: {\n                        mask: function(e) {\n                            var t = e.separator, n = e.quantifier, i = \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\", a = i;\n                            if (t) for (var r = 0; r < n; r++) a += \"[\".concat(t).concat(i, \"]\");\n                            return a;\n                        },\n                        greedy: !1,\n                        casing: \"lower\",\n                        separator: null,\n                        quantifier: 5,\n                        skipOptionalPartCharacter: \"\",\n                        onBeforePaste: function(e, t) {\n                            return (e = e.toLowerCase()).replace(\"mailto:\", \"\");\n                        },\n                        definitions: {\n                            \"*\": {\n                                validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n                            },\n                            \"-\": {\n                                validator: \"[0-9A-Za-z-]\"\n                            }\n                        },\n                        onUnMask: function(e, t, n) {\n                            return e;\n                        },\n                        inputmode: \"email\"\n                    },\n                    mac: {\n                        mask: \"##:##:##:##:##:##\"\n                    },\n                    vin: {\n                        mask: \"V{13}9{4}\",\n                        definitions: {\n                            V: {\n                                validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n                                casing: \"upper\"\n                            }\n                        },\n                        clearIncomplete: !0,\n                        autoUnmask: !0\n                    },\n                    ssn: {\n                        mask: \"999-99-9999\",\n                        postValidation: function(e, t, n, i, a, l, s) {\n                            var c = o.getMaskTemplate.call(this, !0, r.getLastValidPosition.call(this), !0, !0);\n                            return /^(?!219-09-9999|078-05-1120)(?!666|000|9.{2}).{3}-(?!00).{2}-(?!0{4}).{4}$/.test(c.join(\"\"));\n                        }\n                    }\n                });\n            },\n            207: function(e, t, n) {\n                var i = l(n(7184)), a = l(n(2394)), r = n(2839), o = n(8711);\n                function l(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var s = a.default.dependencyLib;\n                function c(e, t) {\n                    for (var n = \"\", i = 0; i < e.length; i++) a.default.prototype.definitions[e.charAt(i)] || t.definitions[e.charAt(i)] || t.optionalmarker[0] === e.charAt(i) || t.optionalmarker[1] === e.charAt(i) || t.quantifiermarker[0] === e.charAt(i) || t.quantifiermarker[1] === e.charAt(i) || t.groupmarker[0] === e.charAt(i) || t.groupmarker[1] === e.charAt(i) || t.alternatormarker === e.charAt(i) ? n += \"\\\\\" + e.charAt(i) : n += e.charAt(i);\n                    return n;\n                }\n                function u(e, t, n, i) {\n                    if (e.length > 0 && t > 0 && (!n.digitsOptional || i)) {\n                        var a = e.indexOf(n.radixPoint), r = !1;\n                        n.negationSymbol.back === e[e.length - 1] && (r = !0, e.length--), -1 === a && (e.push(n.radixPoint), \n                        a = e.length - 1);\n                        for (var o = 1; o <= t; o++) isFinite(e[a + o]) || (e[a + o] = \"0\");\n                    }\n                    return r && e.push(n.negationSymbol.back), e;\n                }\n                function f(e, t) {\n                    var n = 0;\n                    for (var i in \"+\" === e && (n = o.seekNext.call(this, t.validPositions.length - 1)), \n                    t.tests) if ((i = parseInt(i)) >= n) for (var a = 0, r = t.tests[i].length; a < r; a++) if ((void 0 === t.validPositions[i] || \"-\" === e) && t.tests[i][a].match.def === e) return i + (void 0 !== t.validPositions[i] && \"-\" !== e ? 1 : 0);\n                    return n;\n                }\n                function p(e, t) {\n                    for (var n = -1, i = 0, a = t.validPositions.length; i < a; i++) {\n                        var r = t.validPositions[i];\n                        if (r && r.match.def === e) {\n                            n = i;\n                            break;\n                        }\n                    }\n                    return n;\n                }\n                function d(e, t, n, i, a) {\n                    var r = t.buffer ? t.buffer.indexOf(a.radixPoint) : -1, o = (-1 !== r || i && a.jitMasking) && new RegExp(a.definitions[9].validator).test(e);\n                    return !i && a._radixDance && -1 !== r && o && null == t.validPositions[r] ? {\n                        insert: {\n                            pos: r === n ? r + 1 : r,\n                            c: a.radixPoint\n                        },\n                        pos: n\n                    } : o;\n                }\n                a.default.extendAliases({\n                    numeric: {\n                        mask: function(e) {\n                            e.repeat = 0, e.groupSeparator === e.radixPoint && e.digits && \"0\" !== e.digits && (\".\" === e.radixPoint ? e.groupSeparator = \",\" : \",\" === e.radixPoint ? e.groupSeparator = \".\" : e.groupSeparator = \"\"), \n                            \" \" === e.groupSeparator && (e.skipOptionalPartCharacter = void 0), e.placeholder.length > 1 && (e.placeholder = e.placeholder.charAt(0)), \n                            \"radixFocus\" === e.positionCaretOnClick && \"\" === e.placeholder && (e.positionCaretOnClick = \"lvp\");\n                            var t = \"0\", n = e.radixPoint;\n                            !0 === e.numericInput && void 0 === e.__financeInput ? (t = \"1\", e.positionCaretOnClick = \"radixFocus\" === e.positionCaretOnClick ? \"lvp\" : e.positionCaretOnClick, \n                            e.digitsOptional = !1, isNaN(e.digits) && (e.digits = 2), e._radixDance = !1, n = \",\" === e.radixPoint ? \"?\" : \"!\", \n                            \"\" !== e.radixPoint && void 0 === e.definitions[n] && (e.definitions[n] = {}, e.definitions[n].validator = \"[\" + e.radixPoint + \"]\", \n                            e.definitions[n].placeholder = e.radixPoint, e.definitions[n].static = !0, e.definitions[n].generated = !0)) : (e.__financeInput = !1, \n                            e.numericInput = !0);\n                            var a, r = \"[+]\";\n                            if (r += c(e.prefix, e), \"\" !== e.groupSeparator ? (void 0 === e.definitions[e.groupSeparator] && (e.definitions[e.groupSeparator] = {}, \n                            e.definitions[e.groupSeparator].validator = \"[\" + e.groupSeparator + \"]\", e.definitions[e.groupSeparator].placeholder = e.groupSeparator, \n                            e.definitions[e.groupSeparator].static = !0, e.definitions[e.groupSeparator].generated = !0), \n                            r += e._mask(e)) : r += \"9{+}\", void 0 !== e.digits && 0 !== e.digits) {\n                                var o = e.digits.toString().split(\",\");\n                                isFinite(o[0]) && o[1] && isFinite(o[1]) ? r += n + t + \"{\" + e.digits + \"}\" : (isNaN(e.digits) || parseInt(e.digits) > 0) && (e.digitsOptional || e.jitMasking ? (a = r + n + t + \"{0,\" + e.digits + \"}\", \n                                e.keepStatic = !0) : r += n + t + \"{\" + e.digits + \"}\");\n                            } else e.inputmode = \"numeric\";\n                            return r += c(e.suffix, e), r += \"[-]\", a && (r = [ a + c(e.suffix, e) + \"[-]\", r ]), \n                            e.greedy = !1, function(e) {\n                                void 0 === e.parseMinMaxOptions && (null !== e.min && (e.min = e.min.toString().replace(new RegExp((0, \n                                i.default)(e.groupSeparator), \"g\"), \"\"), \",\" === e.radixPoint && (e.min = e.min.replace(e.radixPoint, \".\")), \n                                e.min = isFinite(e.min) ? parseFloat(e.min) : NaN, isNaN(e.min) && (e.min = Number.MIN_VALUE)), \n                                null !== e.max && (e.max = e.max.toString().replace(new RegExp((0, i.default)(e.groupSeparator), \"g\"), \"\"), \n                                \",\" === e.radixPoint && (e.max = e.max.replace(e.radixPoint, \".\")), e.max = isFinite(e.max) ? parseFloat(e.max) : NaN, \n                                isNaN(e.max) && (e.max = Number.MAX_VALUE)), e.parseMinMaxOptions = \"done\");\n                            }(e), \"\" !== e.radixPoint && e.substituteRadixPoint && (e.substitutes[\".\" == e.radixPoint ? \",\" : \".\"] = e.radixPoint), \n                            r;\n                        },\n                        _mask: function(e) {\n                            return \"(\" + e.groupSeparator + \"999){+|1}\";\n                        },\n                        digits: \"*\",\n                        digitsOptional: !0,\n                        enforceDigitsOnBlur: !1,\n                        radixPoint: \".\",\n                        positionCaretOnClick: \"radixFocus\",\n                        _radixDance: !0,\n                        groupSeparator: \"\",\n                        allowMinus: !0,\n                        negationSymbol: {\n                            front: \"-\",\n                            back: \"\"\n                        },\n                        prefix: \"\",\n                        suffix: \"\",\n                        min: null,\n                        max: null,\n                        SetMaxOnOverflow: !1,\n                        step: 1,\n                        inputType: \"text\",\n                        unmaskAsNumber: !1,\n                        roundingFN: Math.round,\n                        inputmode: \"decimal\",\n                        shortcuts: {\n                            k: \"1000\",\n                            m: \"1000000\"\n                        },\n                        placeholder: \"0\",\n                        greedy: !1,\n                        rightAlign: !0,\n                        insertMode: !0,\n                        autoUnmask: !1,\n                        skipOptionalPartCharacter: \"\",\n                        usePrototypeDefinitions: !1,\n                        stripLeadingZeroes: !0,\n                        substituteRadixPoint: !0,\n                        definitions: {\n                            0: {\n                                validator: d\n                            },\n                            1: {\n                                validator: d,\n                                definitionSymbol: \"9\"\n                            },\n                            9: {\n                                validator: \"[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]\",\n                                definitionSymbol: \"*\"\n                            },\n                            \"+\": {\n                                validator: function(e, t, n, i, a) {\n                                    return a.allowMinus && (\"-\" === e || e === a.negationSymbol.front);\n                                }\n                            },\n                            \"-\": {\n                                validator: function(e, t, n, i, a) {\n                                    return a.allowMinus && e === a.negationSymbol.back;\n                                }\n                            }\n                        },\n                        preValidation: function(e, t, n, i, a, r, o, l) {\n                            var s = this;\n                            if (!1 !== a.__financeInput && n === a.radixPoint) return !1;\n                            var c = e.indexOf(a.radixPoint), u = t;\n                            if (t = function(e, t, n, i, a) {\n                                return a._radixDance && a.numericInput && t !== a.negationSymbol.back && e <= n && (n > 0 || t == a.radixPoint) && (void 0 === i.validPositions[e - 1] || i.validPositions[e - 1].input !== a.negationSymbol.back) && (e -= 1), \n                                e;\n                            }(t, n, c, r, a), \"-\" === n || n === a.negationSymbol.front) {\n                                if (!0 !== a.allowMinus) return !1;\n                                var d = !1, h = p(\"+\", r), v = p(\"-\", r);\n                                return -1 !== h && (d = [ h ], -1 !== v && d.push(v)), !1 !== d ? {\n                                    remove: d,\n                                    caret: u - a.negationSymbol.back.length\n                                } : {\n                                    insert: [ {\n                                        pos: f.call(s, \"+\", r),\n                                        c: a.negationSymbol.front,\n                                        fromIsValid: !0\n                                    }, {\n                                        pos: f.call(s, \"-\", r),\n                                        c: a.negationSymbol.back,\n                                        fromIsValid: void 0\n                                    } ],\n                                    caret: u + a.negationSymbol.back.length\n                                };\n                            }\n                            if (n === a.groupSeparator) return {\n                                caret: u\n                            };\n                            if (l) return !0;\n                            if (-1 !== c && !0 === a._radixDance && !1 === i && n === a.radixPoint && void 0 !== a.digits && (isNaN(a.digits) || parseInt(a.digits) > 0) && c !== t) {\n                                var m = f.call(s, a.radixPoint, r);\n                                return r.validPositions[m] && (r.validPositions[m].generatedInput = r.validPositions[m].generated || !1), \n                                {\n                                    caret: a._radixDance && t === c - 1 ? c + 1 : c\n                                };\n                            }\n                            if (!1 === a.__financeInput) if (i) {\n                                if (a.digitsOptional) return {\n                                    rewritePosition: o.end\n                                };\n                                if (!a.digitsOptional) {\n                                    if (o.begin > c && o.end <= c) return n === a.radixPoint ? {\n                                        insert: {\n                                            pos: c + 1,\n                                            c: \"0\",\n                                            fromIsValid: !0\n                                        },\n                                        rewritePosition: c\n                                    } : {\n                                        rewritePosition: c + 1\n                                    };\n                                    if (o.begin < c) return {\n                                        rewritePosition: o.begin - 1\n                                    };\n                                }\n                            } else if (!a.showMaskOnHover && !a.showMaskOnFocus && !a.digitsOptional && a.digits > 0 && \"\" === this.__valueGet.call(this.el)) return {\n                                rewritePosition: c\n                            };\n                            return {\n                                rewritePosition: t\n                            };\n                        },\n                        postValidation: function(e, t, n, i, a, r, o) {\n                            if (!1 === i) return i;\n                            if (o) return !0;\n                            if (null !== a.min || null !== a.max) {\n                                var l = a.onUnMask(e.slice().reverse().join(\"\"), void 0, s.extend({}, a, {\n                                    unmaskAsNumber: !0\n                                }));\n                                if (null !== a.min && l < a.min && (l.toString().length > a.min.toString().length || l < 0)) return !1;\n                                if (null !== a.max && l > a.max) return !!a.SetMaxOnOverflow && {\n                                    refreshFromBuffer: !0,\n                                    buffer: u(a.max.toString().replace(\".\", a.radixPoint).split(\"\"), a.digits, a).reverse()\n                                };\n                            }\n                            return i;\n                        },\n                        onUnMask: function(e, t, n) {\n                            if (\"\" === t && !0 === n.nullable) return t;\n                            var a = e.replace(n.prefix, \"\");\n                            return a = (a = a.replace(n.suffix, \"\")).replace(new RegExp((0, i.default)(n.groupSeparator), \"g\"), \"\"), \n                            \"\" !== n.placeholder.charAt(0) && (a = a.replace(new RegExp(n.placeholder.charAt(0), \"g\"), \"0\")), \n                            n.unmaskAsNumber ? (\"\" !== n.radixPoint && -1 !== a.indexOf(n.radixPoint) && (a = a.replace(i.default.call(this, n.radixPoint), \".\")), \n                            a = (a = a.replace(new RegExp(\"^\" + (0, i.default)(n.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n                            i.default)(n.negationSymbol.back) + \"$\"), \"\"), Number(a)) : a;\n                        },\n                        isComplete: function(e, t) {\n                            var n = (t.numericInput ? e.slice().reverse() : e).join(\"\");\n                            return n = (n = (n = (n = (n = n.replace(new RegExp(\"^\" + (0, i.default)(t.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n                            i.default)(t.negationSymbol.back) + \"$\"), \"\")).replace(t.prefix, \"\")).replace(t.suffix, \"\")).replace(new RegExp((0, \n                            i.default)(t.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\"), \",\" === t.radixPoint && (n = n.replace((0, \n                            i.default)(t.radixPoint), \".\")), isFinite(n);\n                        },\n                        onBeforeMask: function(e, t) {\n                            var n;\n                            e = null !== (n = e) && void 0 !== n ? n : \"\";\n                            var a = t.radixPoint || \",\";\n                            isFinite(t.digits) && (t.digits = parseInt(t.digits)), \"number\" != typeof e && \"number\" !== t.inputType || \"\" === a || (e = e.toString().replace(\".\", a));\n                            var r = \"-\" === e.charAt(0) || e.charAt(0) === t.negationSymbol.front, o = e.split(a), l = o[0].replace(/[^\\-0-9]/g, \"\"), s = o.length > 1 ? o[1].replace(/[^0-9]/g, \"\") : \"\", c = o.length > 1;\n                            e = l + (\"\" !== s ? a + s : s);\n                            var f = 0;\n                            if (\"\" !== a && (f = t.digitsOptional ? t.digits < s.length ? t.digits : s.length : t.digits, \n                            \"\" !== s || !t.digitsOptional)) {\n                                var p = Math.pow(10, f || 1);\n                                e = e.replace((0, i.default)(a), \".\"), isNaN(parseFloat(e)) || (e = (t.roundingFN(parseFloat(e) * p) / p).toFixed(f)), \n                                e = e.toString().replace(\".\", a);\n                            }\n                            if (0 === t.digits && -1 !== e.indexOf(a) && (e = e.substring(0, e.indexOf(a))), \n                            null !== t.min || null !== t.max) {\n                                var d = e.toString().replace(a, \".\");\n                                null !== t.min && d < t.min ? e = t.min.toString().replace(\".\", a) : null !== t.max && d > t.max && (e = t.max.toString().replace(\".\", a));\n                            }\n                            return r && \"-\" !== e.charAt(0) && (e = \"-\" + e), u(e.toString().split(\"\"), f, t, c).join(\"\");\n                        },\n                        onBeforeWrite: function(e, t, n, a) {\n                            function r(e, t) {\n                                if (!1 !== a.__financeInput || t) {\n                                    var n = e.indexOf(a.radixPoint);\n                                    -1 !== n && e.splice(n, 1);\n                                }\n                                if (\"\" !== a.groupSeparator) for (;-1 !== (n = e.indexOf(a.groupSeparator)); ) e.splice(n, 1);\n                                return e;\n                            }\n                            var o, l;\n                            if (a.stripLeadingZeroes && (l = function(e, t) {\n                                var n = new RegExp(\"(^\" + (\"\" !== t.negationSymbol.front ? (0, i.default)(t.negationSymbol.front) + \"?\" : \"\") + (0, \n                                i.default)(t.prefix) + \")(.*)(\" + (0, i.default)(t.suffix) + (\"\" != t.negationSymbol.back ? (0, \n                                i.default)(t.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(e.slice().reverse().join(\"\")), a = n ? n[2] : \"\", r = !1;\n                                return a && (a = a.split(t.radixPoint.charAt(0))[0], r = new RegExp(\"^[0\" + t.groupSeparator + \"]*\").exec(a)), \n                                !(!r || !(r[0].length > 1 || r[0].length > 0 && r[0].length < a.length)) && r;\n                            }(t, a))) for (var c = t.join(\"\").lastIndexOf(l[0].split(\"\").reverse().join(\"\")) - (l[0] == l.input ? 0 : 1), f = l[0] == l.input ? 1 : 0, p = l[0].length - f; p > 0; p--) this.maskset.validPositions.splice(c + p, 1), \n                            delete t[c + p];\n                            if (e) switch (e.type) {\n                              case \"blur\":\n                              case \"checkval\":\n                                if (null !== a.min) {\n                                    var d = a.onUnMask(t.slice().reverse().join(\"\"), void 0, s.extend({}, a, {\n                                        unmaskAsNumber: !0\n                                    }));\n                                    if (null !== a.min && d < a.min) return {\n                                        refreshFromBuffer: !0,\n                                        buffer: u(a.min.toString().replace(\".\", a.radixPoint).split(\"\"), a.digits, a).reverse()\n                                    };\n                                }\n                                if (t[t.length - 1] === a.negationSymbol.front) {\n                                    var h = new RegExp(\"(^\" + (\"\" != a.negationSymbol.front ? (0, i.default)(a.negationSymbol.front) + \"?\" : \"\") + (0, \n                                    i.default)(a.prefix) + \")(.*)(\" + (0, i.default)(a.suffix) + (\"\" != a.negationSymbol.back ? (0, \n                                    i.default)(a.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(r(t.slice(), !0).reverse().join(\"\"));\n                                    0 == (h ? h[2] : \"\") && (o = {\n                                        refreshFromBuffer: !0,\n                                        buffer: [ 0 ]\n                                    });\n                                } else if (\"\" !== a.radixPoint) {\n                                    t.indexOf(a.radixPoint) === a.suffix.length && (o && o.buffer ? o.buffer.splice(0, 1 + a.suffix.length) : (t.splice(0, 1 + a.suffix.length), \n                                    o = {\n                                        refreshFromBuffer: !0,\n                                        buffer: r(t)\n                                    }));\n                                }\n                                if (a.enforceDigitsOnBlur) {\n                                    var v = (o = o || {}) && o.buffer || t.slice().reverse();\n                                    o.refreshFromBuffer = !0, o.buffer = u(v, a.digits, a, !0).reverse();\n                                }\n                            }\n                            return o;\n                        },\n                        onKeyDown: function(e, t, n, i) {\n                            var a, o = s(this);\n                            if (3 != e.location) {\n                                var l, c = e.key;\n                                if ((l = i.shortcuts && i.shortcuts[c]) && l.length > 1) return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) * parseInt(l)), \n                                o.trigger(\"setvalue\"), !1;\n                            }\n                            if (e.ctrlKey) switch (e.key) {\n                              case r.keys.ArrowUp:\n                                return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) + parseInt(i.step)), \n                                o.trigger(\"setvalue\"), !1;\n\n                              case r.keys.ArrowDown:\n                                return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(i.step)), \n                                o.trigger(\"setvalue\"), !1;\n                            }\n                            if (!e.shiftKey && (e.key === r.keys.Delete || e.key === r.keys.Backspace || e.key === r.keys.BACKSPACE_SAFARI) && n.begin !== t.length) {\n                                if (t[e.key === r.keys.Delete ? n.begin - 1 : n.end] === i.negationSymbol.front) return a = t.slice().reverse(), \n                                \"\" !== i.negationSymbol.front && a.shift(), \"\" !== i.negationSymbol.back && a.pop(), \n                                o.trigger(\"setvalue\", [ a.join(\"\"), n.begin ]), !1;\n                                if (!0 === i._radixDance) {\n                                    var f, p = t.indexOf(i.radixPoint);\n                                    if (i.digitsOptional) {\n                                        if (0 === p) return (a = t.slice().reverse()).pop(), o.trigger(\"setvalue\", [ a.join(\"\"), n.begin >= a.length ? a.length : n.begin ]), \n                                        !1;\n                                    } else if (-1 !== p && (n.begin < p || n.end < p || e.key === r.keys.Delete && (n.begin === p || n.begin - 1 === p))) return n.begin === n.end && (e.key === r.keys.Backspace || e.key === r.keys.BACKSPACE_SAFARI ? n.begin++ : e.key === r.keys.Delete && n.begin - 1 === p && (f = s.extend({}, n), \n                                    n.begin--, n.end--)), (a = t.slice().reverse()).splice(a.length - n.begin, n.begin - n.end + 1), \n                                    a = u(a, i.digits, i).join(\"\"), f && (n = f), o.trigger(\"setvalue\", [ a, n.begin >= a.length ? p + 1 : n.begin ]), \n                                    !1;\n                                }\n                            }\n                        }\n                    },\n                    currency: {\n                        prefix: \"\",\n                        groupSeparator: \",\",\n                        alias: \"numeric\",\n                        digits: 2,\n                        digitsOptional: !1\n                    },\n                    decimal: {\n                        alias: \"numeric\"\n                    },\n                    integer: {\n                        alias: \"numeric\",\n                        inputmode: \"numeric\",\n                        digits: 0\n                    },\n                    percentage: {\n                        alias: \"numeric\",\n                        min: 0,\n                        max: 100,\n                        suffix: \" %\",\n                        digits: 0,\n                        allowMinus: !1\n                    },\n                    indianns: {\n                        alias: \"numeric\",\n                        _mask: function(e) {\n                            return \"(\" + e.groupSeparator + \"99){*|1}(\" + e.groupSeparator + \"999){1|1}\";\n                        },\n                        groupSeparator: \",\",\n                        radixPoint: \".\",\n                        placeholder: \"0\",\n                        digits: 2,\n                        digitsOptional: !1\n                    }\n                });\n            },\n            9380: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                var n = !(\"undefined\" == typeof window || !window.document || !window.document.createElement);\n                t.default = n ? window : {};\n            },\n            7760: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.HandleNativePlaceholder = function(e, t) {\n                    var n = e ? e.inputmask : this;\n                    if (i.ie) {\n                        if (e.inputmask._valueGet() !== t && (e.placeholder !== t || \"\" === e.placeholder)) {\n                            var a = o.getBuffer.call(n).slice(), r = e.inputmask._valueGet();\n                            if (r !== t) {\n                                var l = o.getLastValidPosition.call(n);\n                                -1 === l && r === o.getBufferTemplate.call(n).join(\"\") ? a = [] : -1 !== l && u.call(n, a), \n                                p(e, a);\n                            }\n                        }\n                    } else e.placeholder !== t && (e.placeholder = t, \"\" === e.placeholder && e.removeAttribute(\"placeholder\"));\n                }, t.applyInputValue = c, t.checkVal = f, t.clearOptionalTail = u, t.unmaskedvalue = function(e) {\n                    var t = e ? e.inputmask : this, n = t.opts, i = t.maskset;\n                    if (e) {\n                        if (void 0 === e.inputmask) return e.value;\n                        e.inputmask && e.inputmask.refreshValue && c(e, e.inputmask._valueGet(!0));\n                    }\n                    for (var a = [], r = i.validPositions, l = 0, s = r.length; l < s; l++) r[l] && r[l].match && (1 != r[l].match.static || Array.isArray(i.metadata) && !0 !== r[l].generatedInput) && a.push(r[l].input);\n                    var u = 0 === a.length ? \"\" : (t.isRTL ? a.reverse() : a).join(\"\");\n                    if (\"function\" == typeof n.onUnMask) {\n                        var f = (t.isRTL ? o.getBuffer.call(t).slice().reverse() : o.getBuffer.call(t)).join(\"\");\n                        u = n.onUnMask.call(t, f, u, n);\n                    }\n                    return u;\n                }, t.writeBuffer = p;\n                var i = n(9845), a = n(6030), r = n(2839), o = n(8711), l = n(7215), s = n(4713);\n                function c(e, t, n) {\n                    var i = e ? e.inputmask : this, a = i.opts;\n                    e.inputmask.refreshValue = !1, \"function\" == typeof a.onBeforeMask && (t = a.onBeforeMask.call(i, t, a) || t), \n                    f(e, !0, !1, t = (t || \"\").toString().split(\"\"), n), i.undoValue = i._valueGet(!0), \n                    (a.clearMaskOnLostFocus || a.clearIncomplete) && e.inputmask._valueGet() === o.getBufferTemplate.call(i).join(\"\") && -1 === o.getLastValidPosition.call(i) && e.inputmask._valueSet(\"\");\n                }\n                function u(e) {\n                    e.length = 0;\n                    for (var t, n = s.getMaskTemplate.call(this, !0, 0, !0, void 0, !0); void 0 !== (t = n.shift()); ) e.push(t);\n                    return e;\n                }\n                function f(e, t, n, i, r) {\n                    var c, u = e ? e.inputmask : this, f = u.maskset, d = u.opts, h = u.dependencyLib, v = i.slice(), m = \"\", g = -1, y = d.skipOptionalPartCharacter;\n                    d.skipOptionalPartCharacter = \"\", o.resetMaskSet.call(u, !1), u.clicked = 0, g = d.radixPoint ? o.determineNewCaretPosition.call(u, {\n                        begin: 0,\n                        end: 0\n                    }, !1, !1 === d.__financeInput ? \"radixFocus\" : void 0).begin : 0, f.p = g, u.caretPos = {\n                        begin: g\n                    };\n                    var k = [], b = u.caretPos;\n                    if (v.forEach((function(e, t) {\n                        if (void 0 !== e) {\n                            var i = new h.Event(\"_checkval\");\n                            i.key = e, m += e;\n                            var r = o.getLastValidPosition.call(u, void 0, !0);\n                            !function(e, t) {\n                                for (var n = s.getMaskTemplate.call(u, !0, 0).slice(e, o.seekNext.call(u, e, !1, !1)).join(\"\").replace(/'/g, \"\"), i = n.indexOf(t); i > 0 && \" \" === n[i - 1]; ) i--;\n                                var a = 0 === i && !o.isMask.call(u, e) && (s.getTest.call(u, e).match.nativeDef === t.charAt(0) || !0 === s.getTest.call(u, e).match.static && s.getTest.call(u, e).match.nativeDef === \"'\" + t.charAt(0) || \" \" === s.getTest.call(u, e).match.nativeDef && (s.getTest.call(u, e + 1).match.nativeDef === t.charAt(0) || !0 === s.getTest.call(u, e + 1).match.static && s.getTest.call(u, e + 1).match.nativeDef === \"'\" + t.charAt(0)));\n                                if (!a && i > 0 && !o.isMask.call(u, e, !1, !0)) {\n                                    var r = o.seekNext.call(u, e);\n                                    u.caretPos.begin < r && (u.caretPos = {\n                                        begin: r\n                                    });\n                                }\n                                return a;\n                            }(g, m) ? (c = a.EventHandlers.keypressEvent.call(u, i, !0, !1, n, u.caretPos.begin)) && (g = u.caretPos.begin + 1, \n                            m = \"\") : c = a.EventHandlers.keypressEvent.call(u, i, !0, !1, n, r + 1), c ? (void 0 !== c.pos && f.validPositions[c.pos] && !0 === f.validPositions[c.pos].match.static && void 0 === f.validPositions[c.pos].alternation && (k.push(c.pos), \n                            u.isRTL || (c.forwardPosition = c.pos + 1)), p.call(u, void 0, o.getBuffer.call(u), c.forwardPosition, i, !1), \n                            u.caretPos = {\n                                begin: c.forwardPosition,\n                                end: c.forwardPosition\n                            }, b = u.caretPos) : void 0 === f.validPositions[t] && v[t] === s.getPlaceholder.call(u, t) && o.isMask.call(u, t, !0) ? u.caretPos.begin++ : u.caretPos = b;\n                        }\n                    })), k.length > 0) {\n                        var x, w, P = o.seekNext.call(u, -1, void 0, !1);\n                        if (!l.isComplete.call(u, o.getBuffer.call(u)) && k.length <= P || l.isComplete.call(u, o.getBuffer.call(u)) && k.length > 0 && k.length !== P && 0 === k[0]) for (var S = P; void 0 !== (x = k.shift()); ) if (x < S) {\n                            var O = new h.Event(\"_checkval\");\n                            if ((w = f.validPositions[x]).generatedInput = !0, O.key = w.input, (c = a.EventHandlers.keypressEvent.call(u, O, !0, !1, n, S)) && void 0 !== c.pos && c.pos !== x && f.validPositions[c.pos] && !0 === f.validPositions[c.pos].match.static) k.push(c.pos); else if (!c) break;\n                            S++;\n                        }\n                    }\n                    t && p.call(u, e, o.getBuffer.call(u), c ? c.forwardPosition : u.caretPos.begin, r || new h.Event(\"checkval\"), r && (\"input\" === r.type && u.undoValue !== o.getBuffer.call(u).join(\"\") || \"paste\" === r.type)), \n                    d.skipOptionalPartCharacter = y;\n                }\n                function p(e, t, n, i, a) {\n                    var s = e ? e.inputmask : this, c = s.opts, u = s.dependencyLib;\n                    if (i && \"function\" == typeof c.onBeforeWrite) {\n                        var f = c.onBeforeWrite.call(s, i, t, n, c);\n                        if (f) {\n                            if (f.refreshFromBuffer) {\n                                var p = f.refreshFromBuffer;\n                                l.refreshFromBuffer.call(s, !0 === p ? p : p.start, p.end, f.buffer || t), t = o.getBuffer.call(s, !0);\n                            }\n                            void 0 !== n && (n = void 0 !== f.caret ? f.caret : n);\n                        }\n                    }\n                    if (void 0 !== e && (e.inputmask._valueSet(t.join(\"\")), void 0 === n || void 0 !== i && \"blur\" === i.type || o.caret.call(s, e, n, void 0, void 0, void 0 !== i && \"keydown\" === i.type && (i.key === r.keys.Delete || i.key === r.keys.Backspace)), \n                    void 0 === e.inputmask.writeBufferHook || e.inputmask.writeBufferHook(n), !0 === a)) {\n                        var d = u(e), h = e.inputmask._valueGet();\n                        e.inputmask.skipInputEvent = !0, d.trigger(\"input\"), setTimeout((function() {\n                            h === o.getBufferTemplate.call(s).join(\"\") ? d.trigger(\"cleared\") : !0 === l.isComplete.call(s, t) && d.trigger(\"complete\");\n                        }), 0);\n                    }\n                }\n            },\n            2394: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = void 0;\n                var i = v(n(3976)), a = v(n(7392)), r = v(n(4963)), o = n(9716), l = v(n(9380)), s = n(7760), c = n(157), u = n(2391), f = n(8711), p = n(7215), d = n(4713);\n                function h(e) {\n                    return h = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, h(e);\n                }\n                function v(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var m = l.default.document, g = \"_inputmask_opts\";\n                function y(e, t, n) {\n                    if (!(this instanceof y)) return new y(e, t, n);\n                    this.dependencyLib = r.default, this.el = void 0, this.events = {}, this.maskset = void 0, \n                    !0 !== n && (\"[object Object]\" === Object.prototype.toString.call(e) ? t = e : (t = t || {}, \n                    e && (t.alias = e)), this.opts = r.default.extend(!0, {}, this.defaults, t), this.noMasksCache = t && void 0 !== t.definitions, \n                    this.userOptions = t || {}, k(this.opts.alias, t, this.opts)), this.refreshValue = !1, \n                    this.undoValue = void 0, this.$el = void 0, this.skipInputEvent = !1, this.validationEvent = !1, \n                    this.ignorable = !1, this.maxLength, this.mouseEnter = !1, this.clicked = 0, this.originalPlaceholder = void 0, \n                    this.isComposing = !1, this.hasAlternator = !1;\n                }\n                function k(e, t, n) {\n                    var i = y.prototype.aliases[e];\n                    return i ? (i.alias && k(i.alias, void 0, n), r.default.extend(!0, n, i), r.default.extend(!0, n, t), \n                    !0) : (null === n.mask && (n.mask = e), !1);\n                }\n                y.prototype = {\n                    dataAttribute: \"data-inputmask\",\n                    defaults: i.default,\n                    definitions: a.default,\n                    aliases: {},\n                    masksCache: {},\n                    i18n: {},\n                    get isRTL() {\n                        return this.opts.isRTL || this.opts.numericInput;\n                    },\n                    mask: function(e) {\n                        var t = this;\n                        return \"string\" == typeof e && (e = m.getElementById(e) || m.querySelectorAll(e)), \n                        (e = e.nodeName ? [ e ] : Array.isArray(e) ? e : [].slice.call(e)).forEach((function(e, n) {\n                            var i = r.default.extend(!0, {}, t.opts);\n                            if (function(e, t, n, i) {\n                                function a(t, a) {\n                                    var r = \"\" === i ? t : i + \"-\" + t;\n                                    null !== (a = void 0 !== a ? a : e.getAttribute(r)) && (\"string\" == typeof a && (0 === t.indexOf(\"on\") ? a = l.default[a] : \"false\" === a ? a = !1 : \"true\" === a && (a = !0)), \n                                    n[t] = a);\n                                }\n                                if (!0 === t.importDataAttributes) {\n                                    var o, s, c, u, f = e.getAttribute(i);\n                                    if (f && \"\" !== f && (f = f.replace(/'/g, '\"'), s = JSON.parse(\"{\" + f + \"}\")), \n                                    s) for (u in c = void 0, s) if (\"alias\" === u.toLowerCase()) {\n                                        c = s[u];\n                                        break;\n                                    }\n                                    for (o in a(\"alias\", c), n.alias && k(n.alias, n, t), t) {\n                                        if (s) for (u in c = void 0, s) if (u.toLowerCase() === o.toLowerCase()) {\n                                            c = s[u];\n                                            break;\n                                        }\n                                        a(o, c);\n                                    }\n                                }\n                                r.default.extend(!0, t, n), (\"rtl\" === e.dir || t.rightAlign) && (e.style.textAlign = \"right\");\n                                (\"rtl\" === e.dir || t.numericInput) && (e.dir = \"ltr\", e.removeAttribute(\"dir\"), \n                                t.isRTL = !0);\n                                return Object.keys(n).length;\n                            }(e, i, r.default.extend(!0, {}, t.userOptions), t.dataAttribute)) {\n                                var a = (0, u.generateMaskSet)(i, t.noMasksCache);\n                                void 0 !== a && (void 0 !== e.inputmask && (e.inputmask.opts.autoUnmask = !0, e.inputmask.remove()), \n                                e.inputmask = new y(void 0, void 0, !0), e.inputmask.opts = i, e.inputmask.noMasksCache = t.noMasksCache, \n                                e.inputmask.userOptions = r.default.extend(!0, {}, t.userOptions), e.inputmask.el = e, \n                                e.inputmask.$el = (0, r.default)(e), e.inputmask.maskset = a, r.default.data(e, g, t.userOptions), \n                                c.mask.call(e.inputmask));\n                            }\n                        })), e && e[0] && e[0].inputmask || this;\n                    },\n                    option: function(e, t) {\n                        return \"string\" == typeof e ? this.opts[e] : \"object\" === h(e) ? (r.default.extend(this.userOptions, e), \n                        this.el && !0 !== t && this.mask(this.el), this) : void 0;\n                    },\n                    unmaskedvalue: function(e) {\n                        if (this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        void 0 === this.el || void 0 !== e) {\n                            var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n                            s.checkVal.call(this, void 0, !1, !1, t), \"function\" == typeof this.opts.onBeforeWrite && this.opts.onBeforeWrite.call(this, void 0, f.getBuffer.call(this), 0, this.opts);\n                        }\n                        return s.unmaskedvalue.call(this, this.el);\n                    },\n                    remove: function() {\n                        if (this.el) {\n                            r.default.data(this.el, g, null);\n                            var e = this.opts.autoUnmask ? (0, s.unmaskedvalue)(this.el) : this._valueGet(this.opts.autoUnmask);\n                            e !== f.getBufferTemplate.call(this).join(\"\") ? this._valueSet(e, this.opts.autoUnmask) : this._valueSet(\"\"), \n                            o.EventRuler.off(this.el), Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this.el), \"value\") && this.__valueGet && Object.defineProperty(this.el, \"value\", {\n                                get: this.__valueGet,\n                                set: this.__valueSet,\n                                configurable: !0\n                            }) : m.__lookupGetter__ && this.el.__lookupGetter__(\"value\") && this.__valueGet && (this.el.__defineGetter__(\"value\", this.__valueGet), \n                            this.el.__defineSetter__(\"value\", this.__valueSet)), this.el.inputmask = void 0;\n                        }\n                        return this.el;\n                    },\n                    getemptymask: function() {\n                        return this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        (this.isRTL ? f.getBufferTemplate.call(this).reverse() : f.getBufferTemplate.call(this)).join(\"\");\n                    },\n                    hasMaskedValue: function() {\n                        return !this.opts.autoUnmask;\n                    },\n                    isComplete: function() {\n                        return this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        p.isComplete.call(this, f.getBuffer.call(this));\n                    },\n                    getmetadata: function() {\n                        if (this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        Array.isArray(this.maskset.metadata)) {\n                            var e = d.getMaskTemplate.call(this, !0, 0, !1).join(\"\");\n                            return this.maskset.metadata.forEach((function(t) {\n                                return t.mask !== e || (e = t, !1);\n                            })), e;\n                        }\n                        return this.maskset.metadata;\n                    },\n                    isValid: function(e) {\n                        if (this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache), \n                        e) {\n                            var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n                            s.checkVal.call(this, void 0, !0, !1, t);\n                        } else e = this.isRTL ? f.getBuffer.call(this).slice().reverse().join(\"\") : f.getBuffer.call(this).join(\"\");\n                        for (var n = f.getBuffer.call(this), i = f.determineLastRequiredPosition.call(this), a = n.length - 1; a > i && !f.isMask.call(this, a); a--) ;\n                        return n.splice(i, a + 1 - i), p.isComplete.call(this, n) && e === (this.isRTL ? f.getBuffer.call(this).slice().reverse().join(\"\") : f.getBuffer.call(this).join(\"\"));\n                    },\n                    format: function(e, t) {\n                        this.maskset = this.maskset || (0, u.generateMaskSet)(this.opts, this.noMasksCache);\n                        var n = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n                        s.checkVal.call(this, void 0, !0, !1, n);\n                        var i = this.isRTL ? f.getBuffer.call(this).slice().reverse().join(\"\") : f.getBuffer.call(this).join(\"\");\n                        return t ? {\n                            value: i,\n                            metadata: this.getmetadata()\n                        } : i;\n                    },\n                    setValue: function(e) {\n                        this.el && (0, r.default)(this.el).trigger(\"setvalue\", [ e ]);\n                    },\n                    analyseMask: u.analyseMask\n                }, y.extendDefaults = function(e) {\n                    r.default.extend(!0, y.prototype.defaults, e);\n                }, y.extendDefinitions = function(e) {\n                    r.default.extend(!0, y.prototype.definitions, e);\n                }, y.extendAliases = function(e) {\n                    r.default.extend(!0, y.prototype.aliases, e);\n                }, y.format = function(e, t, n) {\n                    return y(t).format(e, n);\n                }, y.unmask = function(e, t) {\n                    return y(t).unmaskedvalue(e);\n                }, y.isValid = function(e, t) {\n                    return y(t).isValid(e);\n                }, y.remove = function(e) {\n                    \"string\" == typeof e && (e = m.getElementById(e) || m.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n                        e.inputmask && e.inputmask.remove();\n                    }));\n                }, y.setValue = function(e, t) {\n                    \"string\" == typeof e && (e = m.getElementById(e) || m.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n                        e.inputmask ? e.inputmask.setValue(t) : (0, r.default)(e).trigger(\"setvalue\", [ t ]);\n                    }));\n                }, y.dependencyLib = r.default, l.default.Inputmask = y;\n                t.default = y;\n            },\n            5296: function(e, t, n) {\n                function i(e) {\n                    return i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, i(e);\n                }\n                var a = d(n(9380)), r = d(n(2394));\n                function o(e, t) {\n                    for (var n = 0; n < t.length; n++) {\n                        var a = t[n];\n                        a.enumerable = a.enumerable || !1, a.configurable = !0, \"value\" in a && (a.writable = !0), \n                        Object.defineProperty(e, (r = a.key, o = void 0, o = function(e, t) {\n                            if (\"object\" !== i(e) || null === e) return e;\n                            var n = e[Symbol.toPrimitive];\n                            if (void 0 !== n) {\n                                var a = n.call(e, t || \"default\");\n                                if (\"object\" !== i(a)) return a;\n                                throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n                            }\n                            return (\"string\" === t ? String : Number)(e);\n                        }(r, \"string\"), \"symbol\" === i(o) ? o : String(o)), a);\n                    }\n                    var r, o;\n                }\n                function l(e) {\n                    var t = u();\n                    return function() {\n                        var n, a = p(e);\n                        if (t) {\n                            var r = p(this).constructor;\n                            n = Reflect.construct(a, arguments, r);\n                        } else n = a.apply(this, arguments);\n                        return function(e, t) {\n                            if (t && (\"object\" === i(t) || \"function\" == typeof t)) return t;\n                            if (void 0 !== t) throw new TypeError(\"Derived constructors may only return object or undefined\");\n                            return function(e) {\n                                if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n                                return e;\n                            }(e);\n                        }(this, n);\n                    };\n                }\n                function s(e) {\n                    var t = \"function\" == typeof Map ? new Map : void 0;\n                    return s = function(e) {\n                        if (null === e || !function(e) {\n                            try {\n                                return -1 !== Function.toString.call(e).indexOf(\"[native code]\");\n                            } catch (t) {\n                                return \"function\" == typeof e;\n                            }\n                        }(e)) return e;\n                        if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n                        if (void 0 !== t) {\n                            if (t.has(e)) return t.get(e);\n                            t.set(e, n);\n                        }\n                        function n() {\n                            return c(e, arguments, p(this).constructor);\n                        }\n                        return n.prototype = Object.create(e.prototype, {\n                            constructor: {\n                                value: n,\n                                enumerable: !1,\n                                writable: !0,\n                                configurable: !0\n                            }\n                        }), f(n, e);\n                    }, s(e);\n                }\n                function c(e, t, n) {\n                    return c = u() ? Reflect.construct.bind() : function(e, t, n) {\n                        var i = [ null ];\n                        i.push.apply(i, t);\n                        var a = new (Function.bind.apply(e, i));\n                        return n && f(a, n.prototype), a;\n                    }, c.apply(null, arguments);\n                }\n                function u() {\n                    if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n                    if (Reflect.construct.sham) return !1;\n                    if (\"function\" == typeof Proxy) return !0;\n                    try {\n                        return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), \n                        !0;\n                    } catch (e) {\n                        return !1;\n                    }\n                }\n                function f(e, t) {\n                    return f = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {\n                        return e.__proto__ = t, e;\n                    }, f(e, t);\n                }\n                function p(e) {\n                    return p = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {\n                        return e.__proto__ || Object.getPrototypeOf(e);\n                    }, p(e);\n                }\n                function d(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n                var h = a.default.document;\n                if (h && h.head && h.head.attachShadow && a.default.customElements && void 0 === a.default.customElements.get(\"input-mask\")) {\n                    var v = function(e) {\n                        !function(e, t) {\n                            if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n                            e.prototype = Object.create(t && t.prototype, {\n                                constructor: {\n                                    value: e,\n                                    writable: !0,\n                                    configurable: !0\n                                }\n                            }), Object.defineProperty(e, \"prototype\", {\n                                writable: !1\n                            }), t && f(e, t);\n                        }(s, e);\n                        var t, n, i, a = l(s);\n                        function s() {\n                            var e;\n                            !function(e, t) {\n                                if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n                            }(this, s);\n                            var t = (e = a.call(this)).getAttributeNames(), n = e.attachShadow({\n                                mode: \"closed\"\n                            });\n                            for (var i in e.input = h.createElement(\"input\"), e.input.type = \"text\", n.appendChild(e.input), \n                            t) Object.prototype.hasOwnProperty.call(t, i) && e.input.setAttribute(t[i], e.getAttribute(t[i]));\n                            var o = new r.default;\n                            return o.dataAttribute = \"\", o.mask(e.input), e.input.inputmask.shadowRoot = n, \n                            e;\n                        }\n                        return t = s, (n = [ {\n                            key: \"attributeChangedCallback\",\n                            value: function(e, t, n) {\n                                this.input.setAttribute(e, n);\n                            }\n                        }, {\n                            key: \"value\",\n                            get: function() {\n                                return this.input.value;\n                            },\n                            set: function(e) {\n                                this.input.value = e;\n                            }\n                        } ]) && o(t.prototype, n), i && o(t, i), Object.defineProperty(t, \"prototype\", {\n                            writable: !1\n                        }), s;\n                    }(s(HTMLElement));\n                    a.default.customElements.define(\"input-mask\", v);\n                }\n            },\n            2839: function(e, t) {\n                function n(e) {\n                    return n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, n(e);\n                }\n                function i(e, t) {\n                    return function(e) {\n                        if (Array.isArray(e)) return e;\n                    }(e) || function(e, t) {\n                        var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                        if (null != n) {\n                            var i, a, r, o, l = [], s = !0, c = !1;\n                            try {\n                                if (r = (n = n.call(e)).next, 0 === t) {\n                                    if (Object(n) !== n) return;\n                                    s = !1;\n                                } else for (;!(s = (i = r.call(n)).done) && (l.push(i.value), l.length !== t); s = !0) ;\n                            } catch (e) {\n                                c = !0, a = e;\n                            } finally {\n                                try {\n                                    if (!s && null != n.return && (o = n.return(), Object(o) !== o)) return;\n                                } finally {\n                                    if (c) throw a;\n                                }\n                            }\n                            return l;\n                        }\n                    }(e, t) || function(e, t) {\n                        if (!e) return;\n                        if (\"string\" == typeof e) return a(e, t);\n                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return a(e, t);\n                    }(e, t) || function() {\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                }\n                function a(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function r(e, t) {\n                    var n = Object.keys(e);\n                    if (Object.getOwnPropertySymbols) {\n                        var i = Object.getOwnPropertySymbols(e);\n                        t && (i = i.filter((function(t) {\n                            return Object.getOwnPropertyDescriptor(e, t).enumerable;\n                        }))), n.push.apply(n, i);\n                    }\n                    return n;\n                }\n                function o(e, t, i) {\n                    return (t = function(e) {\n                        var t = function(e, t) {\n                            if (\"object\" !== n(e) || null === e) return e;\n                            var i = e[Symbol.toPrimitive];\n                            if (void 0 !== i) {\n                                var a = i.call(e, t || \"default\");\n                                if (\"object\" !== n(a)) return a;\n                                throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n                            }\n                            return (\"string\" === t ? String : Number)(e);\n                        }(e, \"string\");\n                        return \"symbol\" === n(t) ? t : String(t);\n                    }(t)) in e ? Object.defineProperty(e, t, {\n                        value: i,\n                        enumerable: !0,\n                        configurable: !0,\n                        writable: !0\n                    }) : e[t] = i, e;\n                }\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.keys = t.keyCode = void 0, t.toKey = function(e, t) {\n                    return s[e] || (t ? String.fromCharCode(e) : String.fromCharCode(e).toLowerCase());\n                }, t.toKeyCode = function(e) {\n                    return l[e];\n                };\n                var l = t.keyCode = function(e) {\n                    for (var t = 1; t < arguments.length; t++) {\n                        var n = null != arguments[t] ? arguments[t] : {};\n                        t % 2 ? r(Object(n), !0).forEach((function(t) {\n                            o(e, t, n[t]);\n                        })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : r(Object(n)).forEach((function(t) {\n                            Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));\n                        }));\n                    }\n                    return e;\n                }({\n                    c: 67,\n                    x: 88,\n                    z: 90,\n                    BACKSPACE_SAFARI: 127,\n                    Enter: 13,\n                    Meta_LEFT: 91,\n                    Meta_RIGHT: 92,\n                    Space: 32\n                }, {\n                    Alt: 18,\n                    AltGraph: 18,\n                    ArrowDown: 40,\n                    ArrowLeft: 37,\n                    ArrowRight: 39,\n                    ArrowUp: 38,\n                    Backspace: 8,\n                    CapsLock: 20,\n                    Control: 17,\n                    ContextMenu: 93,\n                    Dead: 221,\n                    Delete: 46,\n                    End: 35,\n                    Escape: 27,\n                    F1: 112,\n                    F2: 113,\n                    F3: 114,\n                    F4: 115,\n                    F5: 116,\n                    F6: 117,\n                    F7: 118,\n                    F8: 119,\n                    F9: 120,\n                    F10: 121,\n                    F11: 122,\n                    F12: 123,\n                    Home: 36,\n                    Insert: 45,\n                    NumLock: 144,\n                    PageDown: 34,\n                    PageUp: 33,\n                    Pause: 19,\n                    PrintScreen: 44,\n                    Process: 229,\n                    Shift: 16,\n                    ScrollLock: 145,\n                    Tab: 9,\n                    Unidentified: 229\n                }), s = Object.entries(l).reduce((function(e, t) {\n                    var n = i(t, 2), a = n[0], r = n[1];\n                    return e[r] = void 0 === e[r] ? a : e[r], e;\n                }), {});\n                t.keys = Object.entries(l).reduce((function(e, t) {\n                    var n = i(t, 2), a = n[0];\n                    n[1];\n                    return e[a] = \"Space\" === a ? \" \" : a, e;\n                }), {});\n            },\n            2391: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.analyseMask = function(e, t, n) {\n                    var i, a, s, c, u, f, p = /(?:[?*+]|\\{[0-9+*]+(?:,[0-9+*]*)?(?:\\|[0-9+*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, d = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, h = !1, v = new o.default, m = [], g = [], y = !1;\n                    function k(e, i, a) {\n                        a = void 0 !== a ? a : e.matches.length;\n                        var o = e.matches[a - 1];\n                        if (t) {\n                            if (0 === i.indexOf(\"[\") || h && /\\\\d|\\\\s|\\\\w|\\\\p/i.test(i) || \".\" === i) {\n                                var s = n.casing ? \"i\" : \"\";\n                                /\\\\p\\{.*}/i.test(i) && (s += \"u\"), e.matches.splice(a++, 0, {\n                                    fn: new RegExp(i, s),\n                                    static: !1,\n                                    optionality: !1,\n                                    newBlockMarker: void 0 === o ? \"master\" : o.def !== i,\n                                    casing: null,\n                                    def: i,\n                                    placeholder: \"object\" === l(n.placeholder) ? n.placeholder[v.matches.length] : void 0,\n                                    nativeDef: i\n                                });\n                            } else h && (i = i[i.length - 1]), i.split(\"\").forEach((function(t, i) {\n                                o = e.matches[a - 1], e.matches.splice(a++, 0, {\n                                    fn: /[a-z]/i.test(n.staticDefinitionSymbol || t) ? new RegExp(\"[\" + (n.staticDefinitionSymbol || t) + \"]\", n.casing ? \"i\" : \"\") : null,\n                                    static: !0,\n                                    optionality: !1,\n                                    newBlockMarker: void 0 === o ? \"master\" : o.def !== t && !0 !== o.static,\n                                    casing: null,\n                                    def: n.staticDefinitionSymbol || t,\n                                    placeholder: void 0 !== n.staticDefinitionSymbol ? t : \"object\" === l(n.placeholder) ? n.placeholder[v.matches.length] : void 0,\n                                    nativeDef: (h ? \"'\" : \"\") + t\n                                });\n                            }));\n                            h = !1;\n                        } else {\n                            var c = n.definitions && n.definitions[i] || n.usePrototypeDefinitions && r.default.prototype.definitions[i];\n                            c && !h ? e.matches.splice(a++, 0, {\n                                fn: c.validator ? \"string\" == typeof c.validator ? new RegExp(c.validator, n.casing ? \"i\" : \"\") : new function() {\n                                    this.test = c.validator;\n                                } : /./,\n                                static: c.static || !1,\n                                optionality: c.optional || !1,\n                                defOptionality: c.optional || !1,\n                                newBlockMarker: void 0 === o || c.optional ? \"master\" : o.def !== (c.definitionSymbol || i),\n                                casing: c.casing,\n                                def: c.definitionSymbol || i,\n                                placeholder: c.placeholder,\n                                nativeDef: i,\n                                generated: c.generated\n                            }) : (e.matches.splice(a++, 0, {\n                                fn: /[a-z]/i.test(n.staticDefinitionSymbol || i) ? new RegExp(\"[\" + (n.staticDefinitionSymbol || i) + \"]\", n.casing ? \"i\" : \"\") : null,\n                                static: !0,\n                                optionality: !1,\n                                newBlockMarker: void 0 === o ? \"master\" : o.def !== i && !0 !== o.static,\n                                casing: null,\n                                def: n.staticDefinitionSymbol || i,\n                                placeholder: void 0 !== n.staticDefinitionSymbol ? i : void 0,\n                                nativeDef: (h ? \"'\" : \"\") + i\n                            }), h = !1);\n                        }\n                    }\n                    function b() {\n                        if (m.length > 0) {\n                            if (k(c = m[m.length - 1], a), c.isAlternator) {\n                                u = m.pop();\n                                for (var e = 0; e < u.matches.length; e++) u.matches[e].isGroup && (u.matches[e].isGroup = !1);\n                                m.length > 0 ? (c = m[m.length - 1]).matches.push(u) : v.matches.push(u);\n                            }\n                        } else k(v, a);\n                    }\n                    function x(e) {\n                        var t = new o.default(!0);\n                        return t.openGroup = !1, t.matches = e, t;\n                    }\n                    function w() {\n                        if ((s = m.pop()).openGroup = !1, void 0 !== s) if (m.length > 0) {\n                            if ((c = m[m.length - 1]).matches.push(s), c.isAlternator) {\n                                u = m.pop();\n                                for (var e = 0; e < u.matches.length; e++) u.matches[e].isGroup = !1, u.matches[e].alternatorGroup = !1;\n                                m.length > 0 ? (c = m[m.length - 1]).matches.push(u) : v.matches.push(u);\n                            }\n                        } else v.matches.push(s); else b();\n                    }\n                    function P(e) {\n                        var t = e.pop();\n                        return t.isQuantifier && (t = x([ e.pop(), t ])), t;\n                    }\n                    t && (n.optionalmarker[0] = void 0, n.optionalmarker[1] = void 0);\n                    for (;i = t ? d.exec(e) : p.exec(e); ) {\n                        if (a = i[0], t) {\n                            switch (a.charAt(0)) {\n                              case \"?\":\n                                a = \"{0,1}\";\n                                break;\n\n                              case \"+\":\n                              case \"*\":\n                                a = \"{\" + a + \"}\";\n                                break;\n\n                              case \"|\":\n                                if (0 === m.length) {\n                                    var S = x(v.matches);\n                                    S.openGroup = !0, m.push(S), v.matches = [], y = !0;\n                                }\n                            }\n                            switch (a) {\n                              case \"\\\\d\":\n                                a = \"[0-9]\";\n                                break;\n\n                              case \"\\\\p\":\n                                a += d.exec(e)[0], a += d.exec(e)[0];\n                            }\n                        }\n                        if (h) b(); else switch (a.charAt(0)) {\n                          case \"$\":\n                          case \"^\":\n                            t || b();\n                            break;\n\n                          case n.escapeChar:\n                            h = !0, t && b();\n                            break;\n\n                          case n.optionalmarker[1]:\n                          case n.groupmarker[1]:\n                            w();\n                            break;\n\n                          case n.optionalmarker[0]:\n                            m.push(new o.default(!1, !0));\n                            break;\n\n                          case n.groupmarker[0]:\n                            m.push(new o.default(!0));\n                            break;\n\n                          case n.quantifiermarker[0]:\n                            var O = new o.default(!1, !1, !0), _ = (a = a.replace(/[{}?]/g, \"\")).split(\"|\"), M = _[0].split(\",\"), E = isNaN(M[0]) ? M[0] : parseInt(M[0]), j = 1 === M.length ? E : isNaN(M[1]) ? M[1] : parseInt(M[1]), T = isNaN(_[1]) ? _[1] : parseInt(_[1]);\n                            \"*\" !== E && \"+\" !== E || (E = \"*\" === j ? 0 : 1), O.quantifier = {\n                                min: E,\n                                max: j,\n                                jit: T\n                            };\n                            var A = m.length > 0 ? m[m.length - 1].matches : v.matches;\n                            (i = A.pop()).isGroup || (i = x([ i ])), A.push(i), A.push(O);\n                            break;\n\n                          case n.alternatormarker:\n                            if (m.length > 0) {\n                                var D = (c = m[m.length - 1]).matches[c.matches.length - 1];\n                                f = c.openGroup && (void 0 === D.matches || !1 === D.isGroup && !1 === D.isAlternator) ? m.pop() : P(c.matches);\n                            } else f = P(v.matches);\n                            if (f.isAlternator) m.push(f); else if (f.alternatorGroup ? (u = m.pop(), f.alternatorGroup = !1) : u = new o.default(!1, !1, !1, !0), \n                            u.matches.push(f), m.push(u), f.openGroup) {\n                                f.openGroup = !1;\n                                var L = new o.default(!0);\n                                L.alternatorGroup = !0, m.push(L);\n                            }\n                            break;\n\n                          default:\n                            b();\n                        }\n                    }\n                    y && w();\n                    for (;m.length > 0; ) s = m.pop(), v.matches.push(s);\n                    v.matches.length > 0 && (!function e(i) {\n                        i && i.matches && i.matches.forEach((function(a, r) {\n                            var o = i.matches[r + 1];\n                            (void 0 === o || void 0 === o.matches || !1 === o.isQuantifier) && a && a.isGroup && (a.isGroup = !1, \n                            t || (k(a, n.groupmarker[0], 0), !0 !== a.openGroup && k(a, n.groupmarker[1]))), \n                            e(a);\n                        }));\n                    }(v), g.push(v));\n                    (n.numericInput || n.isRTL) && function e(t) {\n                        for (var i in t.matches = t.matches.reverse(), t.matches) if (Object.prototype.hasOwnProperty.call(t.matches, i)) {\n                            var a = parseInt(i);\n                            if (t.matches[i].isQuantifier && t.matches[a + 1] && t.matches[a + 1].isGroup) {\n                                var r = t.matches[i];\n                                t.matches.splice(i, 1), t.matches.splice(a + 1, 0, r);\n                            }\n                            void 0 !== t.matches[i].matches ? t.matches[i] = e(t.matches[i]) : t.matches[i] = ((o = t.matches[i]) === n.optionalmarker[0] ? o = n.optionalmarker[1] : o === n.optionalmarker[1] ? o = n.optionalmarker[0] : o === n.groupmarker[0] ? o = n.groupmarker[1] : o === n.groupmarker[1] && (o = n.groupmarker[0]), \n                            o);\n                        }\n                        var o;\n                        return t;\n                    }(g[0]);\n                    return g;\n                }, t.generateMaskSet = function(e, t) {\n                    var n;\n                    function o(e, t) {\n                        var n = t.repeat, i = t.groupmarker, r = t.quantifiermarker, o = t.keepStatic;\n                        if (n > 0 || \"*\" === n || \"+\" === n) {\n                            var l = \"*\" === n ? 0 : \"+\" === n ? 1 : n;\n                            if (l != n) e = i[0] + e + i[1] + r[0] + l + \",\" + n + r[1]; else for (var c = e, u = 1; u < l; u++) e += c;\n                        }\n                        if (!0 === o) {\n                            var f = e.match(new RegExp(\"(.)\\\\[([^\\\\]]*)\\\\]\", \"g\"));\n                            f && f.forEach((function(t, n) {\n                                var i = function(e, t) {\n                                    return function(e) {\n                                        if (Array.isArray(e)) return e;\n                                    }(e) || function(e, t) {\n                                        var n = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n                                        if (null != n) {\n                                            var i, a, r, o, l = [], s = !0, c = !1;\n                                            try {\n                                                if (r = (n = n.call(e)).next, 0 === t) {\n                                                    if (Object(n) !== n) return;\n                                                    s = !1;\n                                                } else for (;!(s = (i = r.call(n)).done) && (l.push(i.value), l.length !== t); s = !0) ;\n                                            } catch (e) {\n                                                c = !0, a = e;\n                                            } finally {\n                                                try {\n                                                    if (!s && null != n.return && (o = n.return(), Object(o) !== o)) return;\n                                                } finally {\n                                                    if (c) throw a;\n                                                }\n                                            }\n                                            return l;\n                                        }\n                                    }(e, t) || function(e, t) {\n                                        if (!e) return;\n                                        if (\"string\" == typeof e) return s(e, t);\n                                        var n = Object.prototype.toString.call(e).slice(8, -1);\n                                        \"Object\" === n && e.constructor && (n = e.constructor.name);\n                                        if (\"Map\" === n || \"Set\" === n) return Array.from(e);\n                                        if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return s(e, t);\n                                    }(e, t) || function() {\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                                }(t.split(\"[\"), 2), r = i[0], o = i[1];\n                                o = o.replace(\"]\", \"\"), e = e.replace(new RegExp(\"\".concat((0, a.default)(r), \"\\\\[\").concat((0, \n                                a.default)(o), \"\\\\]\")), r.charAt(0) === o.charAt(0) ? \"(\".concat(r, \"|\").concat(r).concat(o, \")\") : \"\".concat(r, \"[\").concat(o, \"]\"));\n                            }));\n                        }\n                        return e;\n                    }\n                    function c(e, n, a) {\n                        var s, c, u = !1;\n                        return null !== e && \"\" !== e || ((u = null !== a.regex) ? e = (e = a.regex).replace(/^(\\^)(.*)(\\$)$/, \"$2\") : (u = !0, \n                        e = \".*\")), 1 === e.length && !1 === a.greedy && 0 !== a.repeat && (a.placeholder = \"\"), \n                        e = o(e, a), c = u ? \"regex_\" + a.regex : a.numericInput ? e.split(\"\").reverse().join(\"\") : e, \n                        null !== a.keepStatic && (c = \"ks_\" + a.keepStatic + c), \"object\" === l(a.placeholder) && (c = \"ph_\" + JSON.stringify(a.placeholder) + c), \n                        void 0 === r.default.prototype.masksCache[c] || !0 === t ? (s = {\n                            mask: e,\n                            maskToken: r.default.prototype.analyseMask(e, u, a),\n                            validPositions: [],\n                            _buffer: void 0,\n                            buffer: void 0,\n                            tests: {},\n                            excludes: {},\n                            metadata: n,\n                            maskLength: void 0,\n                            jitOffset: {}\n                        }, !0 !== t && (r.default.prototype.masksCache[c] = s, s = i.default.extend(!0, {}, r.default.prototype.masksCache[c]))) : s = i.default.extend(!0, {}, r.default.prototype.masksCache[c]), \n                        s;\n                    }\n                    \"function\" == typeof e.mask && (e.mask = e.mask(e));\n                    if (Array.isArray(e.mask)) {\n                        if (e.mask.length > 1) {\n                            null === e.keepStatic && (e.keepStatic = !0);\n                            var u = e.groupmarker[0];\n                            return (e.isRTL ? e.mask.reverse() : e.mask).forEach((function(t) {\n                                u.length > 1 && (u += e.alternatormarker), void 0 !== t.mask && \"function\" != typeof t.mask ? u += t.mask : u += t;\n                            })), c(u += e.groupmarker[1], e.mask, e);\n                        }\n                        e.mask = e.mask.pop();\n                    }\n                    n = e.mask && void 0 !== e.mask.mask && \"function\" != typeof e.mask.mask ? c(e.mask.mask, e.mask, e) : c(e.mask, e.mask, e);\n                    null === e.keepStatic && (e.keepStatic = !1);\n                    return n;\n                };\n                var i = c(n(4963)), a = c(n(7184)), r = c(n(2394)), o = c(n(9695));\n                function l(e) {\n                    return l = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, l(e);\n                }\n                function s(e, t) {\n                    (null == t || t > e.length) && (t = e.length);\n                    for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];\n                    return i;\n                }\n                function c(e) {\n                    return e && e.__esModule ? e : {\n                        default: e\n                    };\n                }\n            },\n            157: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.mask = function() {\n                    var e = this, t = this.opts, n = this.el, c = this.dependencyLib;\n                    r.EventRuler.off(n);\n                    var u = function(t, n) {\n                        var i = t.getAttribute(\"type\"), a = \"input\" === t.tagName.toLowerCase() && n.supportsInputType.includes(i) || t.isContentEditable || \"textarea\" === t.tagName.toLowerCase();\n                        if (!a) if (\"input\" === t.tagName.toLowerCase()) {\n                            var s = document.createElement(\"input\");\n                            s.setAttribute(\"type\", i), a = \"text\" === s.type, s = null;\n                        } else a = \"partial\";\n                        return !1 !== a ? function(t) {\n                            var i, a;\n                            function s() {\n                                return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== l.getLastValidPosition.call(e) || !0 !== n.nullable ? (this.inputmask.shadowRoot || this.ownerDocument).activeElement === this && n.clearMaskOnLostFocus ? (e.isRTL ? o.clearOptionalTail.call(e, l.getBuffer.call(e).slice()).reverse() : o.clearOptionalTail.call(e, l.getBuffer.call(e).slice())).join(\"\") : i.call(this) : \"\" : i.call(this);\n                            }\n                            function u(e) {\n                                a.call(this, e), this.inputmask && (0, o.applyInputValue)(this, e);\n                            }\n                            if (!t.inputmask.__valueGet) {\n                                if (!0 !== n.noValuePatching) {\n                                    if (Object.getOwnPropertyDescriptor) {\n                                        var f = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t), \"value\") : void 0;\n                                        f && f.get && f.set ? (i = f.get, a = f.set, Object.defineProperty(t, \"value\", {\n                                            get: s,\n                                            set: u,\n                                            configurable: !0\n                                        })) : \"input\" !== t.tagName.toLowerCase() && (i = function() {\n                                            return this.textContent;\n                                        }, a = function(e) {\n                                            this.textContent = e;\n                                        }, Object.defineProperty(t, \"value\", {\n                                            get: s,\n                                            set: u,\n                                            configurable: !0\n                                        }));\n                                    } else document.__lookupGetter__ && t.__lookupGetter__(\"value\") && (i = t.__lookupGetter__(\"value\"), \n                                    a = t.__lookupSetter__(\"value\"), t.__defineGetter__(\"value\", s), t.__defineSetter__(\"value\", u));\n                                    t.inputmask.__valueGet = i, t.inputmask.__valueSet = a;\n                                }\n                                t.inputmask._valueGet = function(t) {\n                                    return e.isRTL && !0 !== t ? i.call(this.el).split(\"\").reverse().join(\"\") : i.call(this.el);\n                                }, t.inputmask._valueSet = function(t, n) {\n                                    a.call(this.el, null == t ? \"\" : !0 !== n && e.isRTL ? t.split(\"\").reverse().join(\"\") : t);\n                                }, void 0 === i && (i = function() {\n                                    return this.value;\n                                }, a = function(e) {\n                                    this.value = e;\n                                }, function(t) {\n                                    if (c.valHooks && (void 0 === c.valHooks[t] || !0 !== c.valHooks[t].inputmaskpatch)) {\n                                        var i = c.valHooks[t] && c.valHooks[t].get ? c.valHooks[t].get : function(e) {\n                                            return e.value;\n                                        }, a = c.valHooks[t] && c.valHooks[t].set ? c.valHooks[t].set : function(e, t) {\n                                            return e.value = t, e;\n                                        };\n                                        c.valHooks[t] = {\n                                            get: function(t) {\n                                                if (t.inputmask) {\n                                                    if (t.inputmask.opts.autoUnmask) return t.inputmask.unmaskedvalue();\n                                                    var a = i(t);\n                                                    return -1 !== l.getLastValidPosition.call(e, void 0, void 0, t.inputmask.maskset.validPositions) || !0 !== n.nullable ? a : \"\";\n                                                }\n                                                return i(t);\n                                            },\n                                            set: function(e, t) {\n                                                var n = a(e, t);\n                                                return e.inputmask && (0, o.applyInputValue)(e, t), n;\n                                            },\n                                            inputmaskpatch: !0\n                                        };\n                                    }\n                                }(t.type), function(e) {\n                                    r.EventRuler.on(e, \"mouseenter\", (function() {\n                                        var e = this, t = e.inputmask._valueGet(!0);\n                                        t != (e.inputmask.isRTL ? l.getBuffer.call(e.inputmask).slice().reverse() : l.getBuffer.call(e.inputmask)).join(\"\") && (0, \n                                        o.applyInputValue)(e, t);\n                                    }));\n                                }(t));\n                            }\n                        }(t) : t.inputmask = void 0, a;\n                    }(n, t);\n                    if (!1 !== u) {\n                        e.originalPlaceholder = n.placeholder, e.maxLength = void 0 !== n ? n.maxLength : void 0, \n                        -1 === e.maxLength && (e.maxLength = void 0), \"inputMode\" in n && null === n.getAttribute(\"inputmode\") && (n.inputMode = t.inputmode, \n                        n.setAttribute(\"inputmode\", t.inputmode)), !0 === u && (t.showMaskOnFocus = t.showMaskOnFocus && -1 === [ \"cc-number\", \"cc-exp\" ].indexOf(n.autocomplete), \n                        i.iphone && (t.insertModeVisual = !1, n.setAttribute(\"autocorrect\", \"off\")), r.EventRuler.on(n, \"submit\", a.EventHandlers.submitEvent), \n                        r.EventRuler.on(n, \"reset\", a.EventHandlers.resetEvent), r.EventRuler.on(n, \"blur\", a.EventHandlers.blurEvent), \n                        r.EventRuler.on(n, \"focus\", a.EventHandlers.focusEvent), r.EventRuler.on(n, \"invalid\", a.EventHandlers.invalidEvent), \n                        r.EventRuler.on(n, \"click\", a.EventHandlers.clickEvent), r.EventRuler.on(n, \"mouseleave\", a.EventHandlers.mouseleaveEvent), \n                        r.EventRuler.on(n, \"mouseenter\", a.EventHandlers.mouseenterEvent), r.EventRuler.on(n, \"paste\", a.EventHandlers.pasteEvent), \n                        r.EventRuler.on(n, \"cut\", a.EventHandlers.cutEvent), r.EventRuler.on(n, \"complete\", t.oncomplete), \n                        r.EventRuler.on(n, \"incomplete\", t.onincomplete), r.EventRuler.on(n, \"cleared\", t.oncleared), \n                        !0 !== t.inputEventOnly && r.EventRuler.on(n, \"keydown\", a.EventHandlers.keyEvent), \n                        (i.mobile || t.inputEventOnly) && n.removeAttribute(\"maxLength\"), r.EventRuler.on(n, \"input\", a.EventHandlers.inputFallBackEvent)), \n                        r.EventRuler.on(n, \"setvalue\", a.EventHandlers.setValueEvent), void 0 === e.applyMaskHook || e.applyMaskHook(), \n                        l.getBufferTemplate.call(e).join(\"\"), e.undoValue = e._valueGet(!0);\n                        var f = (n.inputmask.shadowRoot || n.ownerDocument).activeElement;\n                        if (\"\" !== n.inputmask._valueGet(!0) || !1 === t.clearMaskOnLostFocus || f === n) {\n                            (0, o.applyInputValue)(n, n.inputmask._valueGet(!0), t);\n                            var p = l.getBuffer.call(e).slice();\n                            !1 === s.isComplete.call(e, p) && t.clearIncomplete && l.resetMaskSet.call(e, !1), \n                            t.clearMaskOnLostFocus && f !== n && (-1 === l.getLastValidPosition.call(e) ? p = [] : o.clearOptionalTail.call(e, p)), \n                            (!1 === t.clearMaskOnLostFocus || t.showMaskOnFocus && f === n || \"\" !== n.inputmask._valueGet(!0)) && (0, \n                            o.writeBuffer)(n, p), f === n && l.caret.call(e, n, l.seekNext.call(e, l.getLastValidPosition.call(e)));\n                        }\n                    }\n                };\n                var i = n(9845), a = n(6030), r = n(9716), o = n(7760), l = n(8711), s = n(7215);\n            },\n            9695: function(e, t) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.default = function(e, t, n, i) {\n                    this.matches = [], this.openGroup = e || !1, this.alternatorGroup = !1, this.isGroup = e || !1, \n                    this.isOptional = t || !1, this.isQuantifier = n || !1, this.isAlternator = i || !1, \n                    this.quantifier = {\n                        min: 1,\n                        max: 1\n                    };\n                };\n            },\n            3194: function() {\n                Array.prototype.includes || Object.defineProperty(Array.prototype, \"includes\", {\n                    value: function(e, t) {\n                        if (null == this) throw new TypeError('\"this\" is null or not defined');\n                        var n = Object(this), i = n.length >>> 0;\n                        if (0 === i) return !1;\n                        for (var a = 0 | t, r = Math.max(a >= 0 ? a : i - Math.abs(a), 0); r < i; ) {\n                            if (n[r] === e) return !0;\n                            r++;\n                        }\n                        return !1;\n                    }\n                });\n            },\n            9302: function() {\n                var e = Function.bind.call(Function.call, Array.prototype.reduce), t = Function.bind.call(Function.call, Object.prototype.propertyIsEnumerable), n = Function.bind.call(Function.call, Array.prototype.concat), i = Object.keys;\n                Object.entries || (Object.entries = function(a) {\n                    return e(i(a), (function(e, i) {\n                        return n(e, \"string\" == typeof i && t(a, i) ? [ [ i, a[i] ] ] : []);\n                    }), []);\n                });\n            },\n            7149: function() {\n                function e(t) {\n                    return e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, e(t);\n                }\n                \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === e(\"test\".__proto__) ? function(e) {\n                    return e.__proto__;\n                } : function(e) {\n                    return e.constructor.prototype;\n                });\n            },\n            4013: function() {\n                String.prototype.includes || (String.prototype.includes = function(e, t) {\n                    return \"number\" != typeof t && (t = 0), !(t + e.length > this.length) && -1 !== this.indexOf(e, t);\n                });\n            },\n            8711: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.caret = function(e, t, n, i, r) {\n                    var o, l = this, s = this.opts;\n                    if (void 0 === t) return \"selectionStart\" in e && \"selectionEnd\" in e ? (t = e.selectionStart, \n                    n = e.selectionEnd) : a.default.getSelection ? (o = a.default.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== e && o.commonAncestorContainer !== e || (t = o.startOffset, \n                    n = o.endOffset) : document.selection && document.selection.createRange && (n = (t = 0 - (o = document.selection.createRange()).duplicate().moveStart(\"character\", -e.inputmask._valueGet().length)) + o.text.length), \n                    {\n                        begin: i ? t : f.call(l, t),\n                        end: i ? n : f.call(l, n)\n                    };\n                    if (Array.isArray(t) && (n = l.isRTL ? t[0] : t[1], t = l.isRTL ? t[1] : t[0]), \n                    void 0 !== t.begin && (n = l.isRTL ? t.begin : t.end, t = l.isRTL ? t.end : t.begin), \n                    \"number\" == typeof t) {\n                        t = i ? t : f.call(l, t), n = \"number\" == typeof (n = i ? n : f.call(l, n)) ? n : t;\n                        var c = parseInt(((e.ownerDocument.defaultView || a.default).getComputedStyle ? (e.ownerDocument.defaultView || a.default).getComputedStyle(e, null) : e.currentStyle).fontSize) * n;\n                        if (e.scrollLeft = c > e.scrollWidth ? c : 0, e.inputmask.caretPos = {\n                            begin: t,\n                            end: n\n                        }, s.insertModeVisual && !1 === s.insertMode && t === n && (r || n++), e === (e.inputmask.shadowRoot || e.ownerDocument).activeElement) {\n                            if (\"setSelectionRange\" in e) e.setSelectionRange(t, n); else if (a.default.getSelection) {\n                                if (o = document.createRange(), void 0 === e.firstChild || null === e.firstChild) {\n                                    var u = document.createTextNode(\"\");\n                                    e.appendChild(u);\n                                }\n                                o.setStart(e.firstChild, t < e.inputmask._valueGet().length ? t : e.inputmask._valueGet().length), \n                                o.setEnd(e.firstChild, n < e.inputmask._valueGet().length ? n : e.inputmask._valueGet().length), \n                                o.collapse(!0);\n                                var p = a.default.getSelection();\n                                p.removeAllRanges(), p.addRange(o);\n                            } else e.createTextRange && ((o = e.createTextRange()).collapse(!0), o.moveEnd(\"character\", n), \n                            o.moveStart(\"character\", t), o.select());\n                            void 0 === e.inputmask.caretHook || e.inputmask.caretHook.call(l, {\n                                begin: t,\n                                end: n\n                            });\n                        }\n                    }\n                }, t.determineLastRequiredPosition = function(e) {\n                    var t, n, i = this, a = i.maskset, l = i.dependencyLib, c = s.call(i), u = {}, f = a.validPositions[c], p = o.getMaskTemplate.call(i, !0, s.call(i), !0, !0), d = p.length, h = void 0 !== f ? f.locator.slice() : void 0;\n                    for (t = c + 1; t < p.length; t++) h = (n = o.getTestTemplate.call(i, t, h, t - 1)).locator.slice(), \n                    u[t] = l.extend(!0, {}, n);\n                    var v = f && void 0 !== f.alternation ? f.locator[f.alternation] : void 0;\n                    for (t = d - 1; t > c && (((n = u[t]).match.optionality || n.match.optionalQuantifier && n.match.newBlockMarker || v && (v !== u[t].locator[f.alternation] && !0 !== n.match.static || !0 === n.match.static && n.locator[f.alternation] && r.checkAlternationMatch.call(i, n.locator[f.alternation].toString().split(\",\"), v.toString().split(\",\")) && \"\" !== o.getTests.call(i, t)[0].def)) && p[t] === o.getPlaceholder.call(i, t, n.match)); t--) d--;\n                    return e ? {\n                        l: d,\n                        def: u[d] ? u[d].match : void 0\n                    } : d;\n                }, t.determineNewCaretPosition = function(e, t, n) {\n                    var i, a, r, f = this, p = f.maskset, d = f.opts;\n                    t && (f.isRTL ? e.end = e.begin : e.begin = e.end);\n                    if (e.begin === e.end) {\n                        switch (n = n || d.positionCaretOnClick) {\n                          case \"none\":\n                            break;\n\n                          case \"select\":\n                            e = {\n                                begin: 0,\n                                end: l.call(f).length\n                            };\n                            break;\n\n                          case \"ignore\":\n                            e.end = e.begin = u.call(f, s.call(f));\n                            break;\n\n                          case \"radixFocus\":\n                            if (f.clicked > 1 && 0 === p.validPositions.length) break;\n                            if (function(e) {\n                                if (\"\" !== d.radixPoint && 0 !== d.digits) {\n                                    var t = p.validPositions;\n                                    if (void 0 === t[e] || void 0 === t[e].input) {\n                                        if (e < u.call(f, -1)) return !0;\n                                        var n = l.call(f).indexOf(d.radixPoint);\n                                        if (-1 !== n) {\n                                            for (var i = 0, a = t.length; i < a; i++) if (t[i] && n < i && t[i].input !== o.getPlaceholder.call(f, i)) return !1;\n                                            return !0;\n                                        }\n                                    }\n                                }\n                                return !1;\n                            }(e.begin)) {\n                                var h = l.call(f).join(\"\").indexOf(d.radixPoint);\n                                e.end = e.begin = d.numericInput ? u.call(f, h) : h;\n                                break;\n                            }\n\n                          default:\n                            if (i = e.begin, a = s.call(f, i, !0), i <= (r = u.call(f, -1 !== a || c.call(f, 0) ? a : -1))) e.end = e.begin = c.call(f, i, !1, !0) ? i : u.call(f, i); else {\n                                var v = p.validPositions[a], m = o.getTestTemplate.call(f, r, v ? v.match.locator : void 0, v), g = o.getPlaceholder.call(f, r, m.match);\n                                if (\"\" !== g && l.call(f)[r] !== g && !0 !== m.match.optionalQuantifier && !0 !== m.match.newBlockMarker || !c.call(f, r, d.keepStatic, !0) && m.match.def === g) {\n                                    var y = u.call(f, r);\n                                    (i >= y || i === r) && (r = y);\n                                }\n                                e.end = e.begin = r;\n                            }\n                        }\n                        return e;\n                    }\n                }, t.getBuffer = l, t.getBufferTemplate = function() {\n                    var e = this.maskset;\n                    void 0 === e._buffer && (e._buffer = o.getMaskTemplate.call(this, !1, 1), void 0 === e.buffer && (e.buffer = e._buffer.slice()));\n                    return e._buffer;\n                }, t.getLastValidPosition = s, t.isMask = c, t.resetMaskSet = function(e) {\n                    var t = this.maskset;\n                    t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);\n                    !1 === e && (t.tests = {}, t.jitOffset = {});\n                }, t.seekNext = u, t.seekPrevious = function(e, t) {\n                    var n = this, i = e - 1;\n                    if (e <= 0) return 0;\n                    for (;i > 0 && (!0 === t && (!0 !== o.getTest.call(n, i).match.newBlockMarker || !c.call(n, i, void 0, !0)) || !0 !== t && !c.call(n, i, void 0, !0)); ) i--;\n                    return i;\n                }, t.translatePosition = f;\n                var i, a = (i = n(9380)) && i.__esModule ? i : {\n                    default: i\n                }, r = n(7215), o = n(4713);\n                function l(e) {\n                    var t = this, n = t.maskset;\n                    return void 0 !== n.buffer && !0 !== e || (n.buffer = o.getMaskTemplate.call(t, !0, s.call(t), !0), \n                    void 0 === n._buffer && (n._buffer = n.buffer.slice())), n.buffer;\n                }\n                function s(e, t, n) {\n                    var i = this.maskset, a = -1, r = -1, o = n || i.validPositions;\n                    void 0 === e && (e = -1);\n                    for (var l = 0, s = o.length; l < s; l++) o[l] && (t || !0 !== o[l].generatedInput) && (l <= e && (a = l), \n                    l >= e && (r = l));\n                    return -1 === a || a === e ? r : -1 === r || e - a < r - e ? a : r;\n                }\n                function c(e, t, n) {\n                    var i = this, a = this.maskset, r = o.getTestTemplate.call(i, e).match;\n                    if (\"\" === r.def && (r = o.getTest.call(i, e).match), !0 !== r.static) return r.fn;\n                    if (!0 === n && void 0 !== a.validPositions[e] && !0 !== a.validPositions[e].generatedInput) return !0;\n                    if (!0 !== t && e > -1) {\n                        if (n) {\n                            var l = o.getTests.call(i, e);\n                            return l.length > 1 + (\"\" === l[l.length - 1].match.def ? 1 : 0);\n                        }\n                        var s = o.determineTestTemplate.call(i, e, o.getTests.call(i, e)), c = o.getPlaceholder.call(i, e, s.match);\n                        return s.match.def !== c;\n                    }\n                    return !1;\n                }\n                function u(e, t, n) {\n                    var i = this;\n                    void 0 === n && (n = !0);\n                    for (var a = e + 1; \"\" !== o.getTest.call(i, a).match.def && (!0 === t && (!0 !== o.getTest.call(i, a).match.newBlockMarker || !c.call(i, a, void 0, !0)) || !0 !== t && !c.call(i, a, void 0, n)); ) a++;\n                    return a;\n                }\n                function f(e) {\n                    var t = this.opts, n = this.el;\n                    return !this.isRTL || \"number\" != typeof e || t.greedy && \"\" === t.placeholder || !n || (e = this._valueGet().length - e) < 0 && (e = 0), \n                    e;\n                }\n            },\n            4713: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.determineTestTemplate = f, t.getDecisionTaker = s, t.getMaskTemplate = function(e, t, n, i, a) {\n                    var r = this, o = this.opts, l = this.maskset, s = o.greedy;\n                    a && o.greedy && (o.greedy = !1, r.maskset.tests = {});\n                    t = t || 0;\n                    var p, d, v, m, g = [], y = 0;\n                    do {\n                        if (!0 === e && l.validPositions[y]) d = (v = a && l.validPositions[y].match.optionality && void 0 === l.validPositions[y + 1] && (!0 === l.validPositions[y].generatedInput || l.validPositions[y].input == o.skipOptionalPartCharacter && y > 0) ? f.call(r, y, h.call(r, y, p, y - 1)) : l.validPositions[y]).match, \n                        p = v.locator.slice(), g.push(!0 === n ? v.input : !1 === n ? d.nativeDef : c.call(r, y, d)); else {\n                            d = (v = u.call(r, y, p, y - 1)).match, p = v.locator.slice();\n                            var k = !0 !== i && (!1 !== o.jitMasking ? o.jitMasking : d.jit);\n                            (m = (m || l.validPositions[y - 1]) && d.static && d.def !== o.groupSeparator && null === d.fn) || !1 === k || void 0 === k || \"number\" == typeof k && isFinite(k) && k > y ? g.push(!1 === n ? d.nativeDef : c.call(r, g.length, d)) : m = !1;\n                        }\n                        y++;\n                    } while (!0 !== d.static || \"\" !== d.def || t > y);\n                    \"\" === g[g.length - 1] && g.pop();\n                    !1 === n && void 0 !== l.maskLength || (l.maskLength = y - 1);\n                    return o.greedy = s, g;\n                }, t.getPlaceholder = c, t.getTest = p, t.getTestTemplate = u, t.getTests = h, t.isSubsetOf = d;\n                var i, a = (i = n(2394)) && i.__esModule ? i : {\n                    default: i\n                }, r = n(8711);\n                function o(e) {\n                    return o = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n                        return typeof e;\n                    } : function(e) {\n                        return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n                    }, o(e);\n                }\n                function l(e, t) {\n                    var n = (null != e.alternation ? e.mloc[s(e)] : e.locator).join(\"\");\n                    if (\"\" !== n) for (n = n.split(\":\")[0]; n.length < t; ) n += \"0\";\n                    return n;\n                }\n                function s(e) {\n                    var t = e.locator[e.alternation];\n                    return \"string\" == typeof t && t.length > 0 && (t = t.split(\",\")[0]), void 0 !== t ? t.toString() : \"\";\n                }\n                function c(e, t, n) {\n                    var i = this, a = this.opts, l = this.maskset;\n                    if (void 0 !== (t = t || p.call(i, e).match).placeholder || !0 === n) {\n                        if (\"\" !== t.placeholder && !0 === t.static && !0 !== t.generated) {\n                            var s = r.getLastValidPosition.call(i, e), c = r.seekNext.call(i, s);\n                            return (n ? e <= c : e < c) ? a.staticDefinitionSymbol && t.static ? t.nativeDef : t.def : \"function\" == typeof t.placeholder ? t.placeholder(a) : t.placeholder;\n                        }\n                        return \"function\" == typeof t.placeholder ? t.placeholder(a) : t.placeholder;\n                    }\n                    if (!0 === t.static) {\n                        if (e > -1 && void 0 === l.validPositions[e]) {\n                            var u, f = h.call(i, e), d = [];\n                            if (\"string\" == typeof a.placeholder && f.length > 1 + (\"\" === f[f.length - 1].match.def ? 1 : 0)) for (var v = 0; v < f.length; v++) if (\"\" !== f[v].match.def && !0 !== f[v].match.optionality && !0 !== f[v].match.optionalQuantifier && (!0 === f[v].match.static || void 0 === u || !1 !== f[v].match.fn.test(u.match.def, l, e, !0, a)) && (d.push(f[v]), \n                            !0 === f[v].match.static && (u = f[v]), d.length > 1 && /[0-9a-bA-Z]/.test(d[0].match.def))) return a.placeholder.charAt(e % a.placeholder.length);\n                        }\n                        return t.def;\n                    }\n                    return \"object\" === o(a.placeholder) ? t.def : a.placeholder.charAt(e % a.placeholder.length);\n                }\n                function u(e, t, n) {\n                    return this.maskset.validPositions[e] || f.call(this, e, h.call(this, e, t ? t.slice() : t, n));\n                }\n                function f(e, t) {\n                    var n = this.opts, i = 0, a = function(e, t) {\n                        var n = 0, i = !1;\n                        t.forEach((function(e) {\n                            e.match.optionality && (0 !== n && n !== e.match.optionality && (i = !0), (0 === n || n > e.match.optionality) && (n = e.match.optionality));\n                        })), n && (0 == e || 1 == t.length ? n = 0 : i || (n = 0));\n                        return n;\n                    }(e, t);\n                    e = e > 0 ? e - 1 : 0;\n                    var r, o, s, c = l(p.call(this, e));\n                    n.greedy && t.length > 1 && \"\" === t[t.length - 1].match.def && (i = 1);\n                    for (var u = 0; u < t.length - i; u++) {\n                        var f = t[u];\n                        r = l(f, c.length);\n                        var d = Math.abs(r - c);\n                        (!0 !== f.unMatchedAlternationStopped || t.filter((function(e) {\n                            return !0 !== e.unMatchedAlternationStopped;\n                        })).length <= 1) && (void 0 === o || \"\" !== r && d < o || s && !n.greedy && s.match.optionality && s.match.optionality - a > 0 && \"master\" === s.match.newBlockMarker && (!f.match.optionality || f.match.optionality - a < 1 || !f.match.newBlockMarker) || s && !n.greedy && s.match.optionalQuantifier && !f.match.optionalQuantifier) && (o = d, \n                        s = f);\n                    }\n                    return s;\n                }\n                function p(e, t) {\n                    var n = this.maskset;\n                    return n.validPositions[e] ? n.validPositions[e] : (t || h.call(this, e))[0];\n                }\n                function d(e, t, n) {\n                    function i(e) {\n                        for (var t, n = [], i = -1, a = 0, r = e.length; a < r; a++) if (\"-\" === e.charAt(a)) for (t = e.charCodeAt(a + 1); ++i < t; ) n.push(String.fromCharCode(i)); else i = e.charCodeAt(a), \n                        n.push(e.charAt(a));\n                        return n.join(\"\");\n                    }\n                    return e.match.def === t.match.nativeDef || !(!(n.regex || e.match.fn instanceof RegExp && t.match.fn instanceof RegExp) || !0 === e.match.static || !0 === t.match.static) && (\".\" === t.match.fn.source || -1 !== i(t.match.fn.source.replace(/[[\\]/]/g, \"\")).indexOf(i(e.match.fn.source.replace(/[[\\]/]/g, \"\"))));\n                }\n                function h(e, t, n) {\n                    var i, r, o = this, l = this.dependencyLib, s = this.maskset, c = this.opts, u = this.el, p = s.maskToken, h = t ? n : 0, v = t ? t.slice() : [ 0 ], m = [], g = !1, y = t ? t.join(\"\") : \"\", k = !1;\n                    function b(t, n, r, l) {\n                        function f(r, l, p) {\n                            function v(e, t) {\n                                var n = 0 === t.matches.indexOf(e);\n                                return n || t.matches.every((function(i, a) {\n                                    return !0 === i.isQuantifier ? n = v(e, t.matches[a - 1]) : Object.prototype.hasOwnProperty.call(i, \"matches\") && (n = v(e, i)), \n                                    !n;\n                                })), n;\n                            }\n                            function w(e, t, n) {\n                                var i, a;\n                                if ((s.tests[e] || s.validPositions[e]) && (s.validPositions[e] ? [ s.validPositions[e] ] : s.tests[e]).every((function(e, r) {\n                                    if (e.mloc[t]) return i = e, !1;\n                                    var o = void 0 !== n ? n : e.alternation, l = void 0 !== e.locator[o] ? e.locator[o].toString().indexOf(t) : -1;\n                                    return (void 0 === a || l < a) && -1 !== l && (i = e, a = l), !0;\n                                })), i) {\n                                    var r = i.locator[i.alternation], o = i.mloc[t] || i.mloc[r] || i.locator;\n                                    if (-1 !== o[o.length - 1].toString().indexOf(\":\")) o.pop();\n                                    return o.slice((void 0 !== n ? n : i.alternation) + 1);\n                                }\n                                return void 0 !== n ? w(e, t) : void 0;\n                            }\n                            function P(t, n) {\n                                return !0 === t.match.static && !0 !== n.match.static && n.match.fn.test(t.match.def, s, e, !1, c, !1);\n                            }\n                            function S(e, t) {\n                                var n = e.alternation, i = void 0 === t || n <= t.alternation && -1 === e.locator[n].toString().indexOf(t.locator[n]);\n                                if (!i && n > t.alternation) for (var a = 0; a < n; a++) if (e.locator[a] !== t.locator[a]) {\n                                    n = a, i = !0;\n                                    break;\n                                }\n                                return !!i && function(n) {\n                                    e.mloc = e.mloc || {};\n                                    var i = e.locator[n];\n                                    if (void 0 !== i) {\n                                        if (\"string\" == typeof i && (i = i.split(\",\")[0]), void 0 === e.mloc[i] && (e.mloc[i] = e.locator.slice(), \n                                        e.mloc[i].push(\":\".concat(e.alternation))), void 0 !== t) {\n                                            for (var a in t.mloc) \"string\" == typeof a && (a = parseInt(a.split(\",\")[0])), e.mloc[a + 0] = t.mloc[a];\n                                            e.locator[n] = Object.keys(e.mloc).join(\",\");\n                                        }\n                                        return e.alternation > n && (e.alternation = n), !0;\n                                    }\n                                    return e.alternation = void 0, !1;\n                                }(n);\n                            }\n                            function O(e, t) {\n                                if (e.locator.length !== t.locator.length) return !1;\n                                for (var n = e.alternation + 1; n < e.locator.length; n++) if (e.locator[n] !== t.locator[n]) return !1;\n                                return !0;\n                            }\n                            if (h > e + c._maxTestPos) throw new Error(\"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \".concat(s.mask));\n                            if (h === e && void 0 === r.matches) {\n                                if (m.push({\n                                    match: r,\n                                    locator: l.reverse(),\n                                    cd: y,\n                                    mloc: {}\n                                }), !r.optionality || void 0 !== p || !(c.definitions && c.definitions[r.nativeDef] && c.definitions[r.nativeDef].optional || a.default.prototype.definitions[r.nativeDef] && a.default.prototype.definitions[r.nativeDef].optional)) return !0;\n                                g = !0, h = e;\n                            } else if (void 0 !== r.matches) {\n                                if (r.isGroup && p !== r) return function() {\n                                    if (r = f(t.matches[t.matches.indexOf(r) + 1], l, p)) return !0;\n                                }();\n                                if (r.isOptional) return function() {\n                                    var t = r, a = m.length;\n                                    if (r = b(r, n, l, p), m.length > 0) {\n                                        if (m.forEach((function(e, t) {\n                                            t >= a && (e.match.optionality = e.match.optionality ? e.match.optionality + 1 : 1);\n                                        })), i = m[m.length - 1].match, void 0 !== p || !v(i, t)) return r;\n                                        g = !0, h = e;\n                                    }\n                                }();\n                                if (r.isAlternator) return function() {\n                                    function i(e) {\n                                        for (var t, n = e.matches[0].matches ? e.matches[0].matches.length : 1, i = 0; i < e.matches.length && n === (t = e.matches[i].matches ? e.matches[i].matches.length : 1); i++) ;\n                                        return n !== t;\n                                    }\n                                    o.hasAlternator = !0;\n                                    var a, v = r, y = [], b = m.slice(), x = l.length, _ = n.length > 0 ? n.shift() : -1;\n                                    if (-1 === _ || \"string\" == typeof _) {\n                                        var M, E = h, j = n.slice(), T = [];\n                                        if (\"string\" == typeof _) T = _.split(\",\"); else for (M = 0; M < v.matches.length; M++) T.push(M.toString());\n                                        if (void 0 !== s.excludes[e]) {\n                                            for (var A = T.slice(), D = 0, L = s.excludes[e].length; D < L; D++) {\n                                                var C = s.excludes[e][D].toString().split(\":\");\n                                                l.length == C[1] && T.splice(T.indexOf(C[0]), 1);\n                                            }\n                                            0 === T.length && (delete s.excludes[e], T = A);\n                                        }\n                                        (!0 === c.keepStatic || isFinite(parseInt(c.keepStatic)) && E >= c.keepStatic) && (T = T.slice(0, 1));\n                                        for (var B = 0; B < T.length; B++) {\n                                            M = parseInt(T[B]), m = [], n = \"string\" == typeof _ && w(h, M, x) || j.slice();\n                                            var I = v.matches[M];\n                                            if (I && f(I, [ M ].concat(l), p)) r = !0; else if (0 === B && (k = i(v)), I && I.matches && I.matches.length > v.matches[0].matches.length) break;\n                                            a = m.slice(), h = E, m = [];\n                                            for (var R = 0; R < a.length; R++) {\n                                                var F = a[R], N = !1;\n                                                F.alternation = F.alternation || x, S(F);\n                                                for (var V = 0; V < y.length; V++) {\n                                                    var G = y[V];\n                                                    if (\"string\" != typeof _ || void 0 !== F.alternation && T.includes(F.locator[F.alternation].toString())) {\n                                                        if (F.match.nativeDef === G.match.nativeDef) {\n                                                            N = !0, S(G, F);\n                                                            break;\n                                                        }\n                                                        if (d(F, G, c)) {\n                                                            S(F, G) && (N = !0, y.splice(y.indexOf(G), 0, F));\n                                                            break;\n                                                        }\n                                                        if (d(G, F, c)) {\n                                                            S(G, F);\n                                                            break;\n                                                        }\n                                                        if (P(F, G)) {\n                                                            O(F, G) || void 0 !== u.inputmask.userOptions.keepStatic ? S(F, G) && (N = !0, y.splice(y.indexOf(G), 0, F)) : c.keepStatic = !0;\n                                                            break;\n                                                        }\n                                                        if (P(G, F)) {\n                                                            S(G, F);\n                                                            break;\n                                                        }\n                                                    }\n                                                }\n                                                N || y.push(F);\n                                            }\n                                        }\n                                        m = b.concat(y), h = e, g = m.length > 0 && k, r = y.length > 0 && !k, k && g && !r && m.forEach((function(e, t) {\n                                            e.unMatchedAlternationStopped = !0;\n                                        })), n = j.slice();\n                                    } else r = f(v.matches[_] || t.matches[_], [ _ ].concat(l), p);\n                                    if (r) return !0;\n                                }();\n                                if (r.isQuantifier && p !== t.matches[t.matches.indexOf(r) - 1]) return function() {\n                                    for (var a = r, o = !1, u = n.length > 0 ? n.shift() : 0; u < (isNaN(a.quantifier.max) ? u + 1 : a.quantifier.max) && h <= e; u++) {\n                                        var p = t.matches[t.matches.indexOf(a) - 1];\n                                        if (r = f(p, [ u ].concat(l), p)) {\n                                            if (m.forEach((function(t, n) {\n                                                (i = x(p, t.match) ? t.match : m[m.length - 1].match).optionalQuantifier = u >= a.quantifier.min, \n                                                i.jit = (u + 1) * (p.matches.indexOf(i) + 1) > a.quantifier.jit, i.optionalQuantifier && v(i, p) && (g = !0, \n                                                h = e, c.greedy && null == s.validPositions[e - 1] && u > a.quantifier.min && -1 != [ \"*\", \"+\" ].indexOf(a.quantifier.max) && (m.pop(), \n                                                y = void 0), o = !0, r = !1), !o && i.jit && (s.jitOffset[e] = p.matches.length - p.matches.indexOf(i));\n                                            })), o) break;\n                                            return !0;\n                                        }\n                                    }\n                                }();\n                                if (r = b(r, n, l, p)) return !0;\n                            } else h++;\n                        }\n                        for (var p = n.length > 0 ? n.shift() : 0; p < t.matches.length; p++) if (!0 !== t.matches[p].isQuantifier) {\n                            var v = f(t.matches[p], [ p ].concat(r), l);\n                            if (v && h === e) return v;\n                            if (h > e) break;\n                        }\n                    }\n                    function x(e, t) {\n                        var n = -1 != e.matches.indexOf(t);\n                        return n || e.matches.forEach((function(e, i) {\n                            void 0 === e.matches || n || (n = x(e, t));\n                        })), n;\n                    }\n                    if (e > -1) {\n                        if (void 0 === t) {\n                            for (var w, P = e - 1; void 0 === (w = s.validPositions[P] || s.tests[P]) && P > -1; ) P--;\n                            void 0 !== w && P > -1 && (v = function(e, t) {\n                                var n, i = [];\n                                return Array.isArray(t) || (t = [ t ]), t.length > 0 && (void 0 === t[0].alternation || !0 === c.keepStatic ? 0 === (i = f.call(o, e, t.slice()).locator.slice()).length && (i = t[0].locator.slice()) : t.forEach((function(e) {\n                                    \"\" !== e.def && (0 === i.length ? (n = e.alternation, i = e.locator.slice()) : e.locator[n] && -1 === i[n].toString().indexOf(e.locator[n]) && (i[n] += \",\" + e.locator[n]));\n                                }))), i;\n                            }(P, w), y = v.join(\"\"), h = P);\n                        }\n                        if (s.tests[e] && s.tests[e][0].cd === y) return s.tests[e];\n                        for (var S = v.shift(); S < p.length; S++) {\n                            if (b(p[S], v, [ S ]) && h === e || h > e) break;\n                        }\n                    }\n                    return (0 === m.length || g) && m.push({\n                        match: {\n                            fn: null,\n                            static: !0,\n                            optionality: !1,\n                            casing: null,\n                            def: \"\",\n                            placeholder: \"\"\n                        },\n                        locator: k && 0 === m.filter((function(e) {\n                            return !0 !== e.unMatchedAlternationStopped;\n                        })).length ? [ 0 ] : [],\n                        mloc: {},\n                        cd: y\n                    }), void 0 !== t && s.tests[e] ? r = l.extend(!0, [], m) : (s.tests[e] = l.extend(!0, [], m), \n                    r = s.tests[e]), m.forEach((function(e) {\n                        e.match.optionality = e.match.defOptionality || !1;\n                    })), r;\n                }\n            },\n            7215: function(e, t, n) {\n                Object.defineProperty(t, \"__esModule\", {\n                    value: !0\n                }), t.alternate = l, t.checkAlternationMatch = function(e, t, n) {\n                    for (var i, a = this.opts.greedy ? t : t.slice(0, 1), r = !1, o = void 0 !== n ? n.split(\",\") : [], l = 0; l < o.length; l++) -1 !== (i = e.indexOf(o[l])) && e.splice(i, 1);\n                    for (var s = 0; s < e.length; s++) if (a.includes(e[s])) {\n                        r = !0;\n                        break;\n                    }\n                    return r;\n                }, t.handleRemove = function(e, t, n, i, s) {\n                    var c = this, u = this.maskset, f = this.opts;\n                    if ((f.numericInput || c.isRTL) && (t === a.keys.Backspace ? t = a.keys.Delete : t === a.keys.Delete && (t = a.keys.Backspace), \n                    c.isRTL)) {\n                        var p = n.end;\n                        n.end = n.begin, n.begin = p;\n                    }\n                    var d, h = r.getLastValidPosition.call(c, void 0, !0);\n                    n.end >= r.getBuffer.call(c).length && h >= n.end && (n.end = h + 1);\n                    t === a.keys.Backspace ? n.end - n.begin < 1 && (n.begin = r.seekPrevious.call(c, n.begin)) : t === a.keys.Delete && n.begin === n.end && (n.end = r.isMask.call(c, n.end, !0, !0) ? n.end + 1 : r.seekNext.call(c, n.end) + 1);\n                    !1 !== (d = v.call(c, n)) && ((!0 !== i && !1 !== f.keepStatic || null !== f.regex && -1 !== o.getTest.call(c, n.begin).match.def.indexOf(\"|\")) && l.call(c, !0), \n                    !0 !== i && (u.p = t === a.keys.Delete ? n.begin + d : n.begin, u.p = r.determineNewCaretPosition.call(c, {\n                        begin: u.p,\n                        end: u.p\n                    }, !1, !1 === f.insertMode && t === a.keys.Backspace ? \"none\" : void 0).begin));\n                }, t.isComplete = c, t.isSelection = u, t.isValid = f, t.refreshFromBuffer = d, \n                t.revalidateMask = v;\n                var i = n(6030), a = n(2839), r = n(8711), o = n(4713);\n                function l(e, t, n, i, a, s) {\n                    var c = this, u = this.dependencyLib, p = this.opts, d = c.maskset;\n                    if (!c.hasAlternator) return !1;\n                    var h, v, m, g, y, k, b, x, w, P, S, O = u.extend(!0, [], d.validPositions), _ = u.extend(!0, {}, d.tests), M = !1, E = !1, j = void 0 !== a ? a : r.getLastValidPosition.call(c);\n                    if (s && (P = s.begin, S = s.end, s.begin > s.end && (P = s.end, S = s.begin)), \n                    -1 === j && void 0 === a) h = 0, v = (g = o.getTest.call(c, h)).alternation; else for (;j >= 0; j--) if ((m = d.validPositions[j]) && void 0 !== m.alternation) {\n                        if (j <= (e || 0) && g && g.locator[m.alternation] !== m.locator[m.alternation]) break;\n                        h = j, v = d.validPositions[h].alternation, g = m;\n                    }\n                    if (void 0 !== v) {\n                        b = parseInt(h), d.excludes[b] = d.excludes[b] || [], !0 !== e && d.excludes[b].push((0, \n                        o.getDecisionTaker)(g) + \":\" + g.alternation);\n                        var T = [], A = -1;\n                        for (y = b; b < r.getLastValidPosition.call(c, void 0, !0) + 1; y++) -1 === A && e <= y && void 0 !== t && (T.push(t), \n                        A = T.length - 1), (k = d.validPositions[b]) && !0 !== k.generatedInput && (void 0 === s || y < P || y >= S) && T.push(k.input), \n                        d.validPositions.splice(b, 1);\n                        for (-1 === A && void 0 !== t && (T.push(t), A = T.length - 1); void 0 !== d.excludes[b] && d.excludes[b].length < 10; ) {\n                            for (d.tests = {}, r.resetMaskSet.call(c, !0), M = !0, y = 0; y < T.length && (x = M.caret || 0 == p.insertMode && null != x ? r.seekNext.call(c, x) : r.getLastValidPosition.call(c, void 0, !0) + 1, \n                            w = T[y], M = f.call(c, x, w, !1, i, !0)); y++) y === A && (E = M), 1 == e && M && (E = {\n                                caretPos: y\n                            });\n                            if (M) break;\n                            if (r.resetMaskSet.call(c), g = o.getTest.call(c, b), d.validPositions = u.extend(!0, [], O), \n                            d.tests = u.extend(!0, {}, _), !d.excludes[b]) {\n                                E = l.call(c, e, t, n, i, b - 1, s);\n                                break;\n                            }\n                            if (null != g.alternation) {\n                                var D = (0, o.getDecisionTaker)(g);\n                                if (-1 !== d.excludes[b].indexOf(D + \":\" + g.alternation)) {\n                                    E = l.call(c, e, t, n, i, b - 1, s);\n                                    break;\n                                }\n                                for (d.excludes[b].push(D + \":\" + g.alternation), y = b; y < r.getLastValidPosition.call(c, void 0, !0) + 1; y++) d.validPositions.splice(b);\n                            } else delete d.excludes[b];\n                        }\n                    }\n                    return E && !1 === p.keepStatic || delete d.excludes[b], E;\n                }\n                function s(e, t, n) {\n                    var i = this.opts, r = this.maskset;\n                    switch (i.casing || t.casing) {\n                      case \"upper\":\n                        e = e.toUpperCase();\n                        break;\n\n                      case \"lower\":\n                        e = e.toLowerCase();\n                        break;\n\n                      case \"title\":\n                        var o = r.validPositions[n - 1];\n                        e = 0 === n || o && o.input === String.fromCharCode(a.keyCode.Space) ? e.toUpperCase() : e.toLowerCase();\n                        break;\n\n                      default:\n                        if (\"function\" == typeof i.casing) {\n                            var l = Array.prototype.slice.call(arguments);\n                            l.push(r.validPositions), e = i.casing.apply(this, l);\n                        }\n                    }\n                    return e;\n                }\n                function c(e) {\n                    var t = this, n = this.opts, i = this.maskset;\n                    if (\"function\" == typeof n.isComplete) return n.isComplete(e, n);\n                    if (\"*\" !== n.repeat) {\n                        var a = !1, l = r.determineLastRequiredPosition.call(t, !0), s = l.l;\n                        if (void 0 === l.def || l.def.newBlockMarker || l.def.optionality || l.def.optionalQuantifier) {\n                            a = !0;\n                            for (var c = 0; c <= s; c++) {\n                                var u = o.getTestTemplate.call(t, c).match;\n                                if (!0 !== u.static && void 0 === i.validPositions[c] && (!1 === u.optionality || void 0 === u.optionality || u.optionality && 0 == u.newBlockMarker) && (!1 === u.optionalQuantifier || void 0 === u.optionalQuantifier) || !0 === u.static && \"\" != u.def && e[c] !== o.getPlaceholder.call(t, c, u)) {\n                                    a = !1;\n                                    break;\n                                }\n                            }\n                        }\n                        return a;\n                    }\n                }\n                function u(e) {\n                    var t = this.opts.insertMode ? 0 : 1;\n                    return this.isRTL ? e.begin - e.end > t : e.end - e.begin > t;\n                }\n                function f(e, t, n, i, a, p, m) {\n                    var g = this, y = this.dependencyLib, k = this.opts, b = g.maskset;\n                    n = !0 === n;\n                    var x = e;\n                    function w(e) {\n                        if (void 0 !== e) {\n                            if (void 0 !== e.remove && (Array.isArray(e.remove) || (e.remove = [ e.remove ]), \n                            e.remove.sort((function(e, t) {\n                                return g.isRTL ? e.pos - t.pos : t.pos - e.pos;\n                            })).forEach((function(e) {\n                                v.call(g, {\n                                    begin: e,\n                                    end: e + 1\n                                });\n                            })), e.remove = void 0), void 0 !== e.insert && (Array.isArray(e.insert) || (e.insert = [ e.insert ]), \n                            e.insert.sort((function(e, t) {\n                                return g.isRTL ? t.pos - e.pos : e.pos - t.pos;\n                            })).forEach((function(e) {\n                                \"\" !== e.c && f.call(g, e.pos, e.c, void 0 === e.strict || e.strict, void 0 !== e.fromIsValid ? e.fromIsValid : i);\n                            })), e.insert = void 0), e.refreshFromBuffer && e.buffer) {\n                                var t = e.refreshFromBuffer;\n                                d.call(g, !0 === t ? t : t.start, t.end, e.buffer), e.refreshFromBuffer = void 0;\n                            }\n                            void 0 !== e.rewritePosition && (x = e.rewritePosition, e = !0);\n                        }\n                        return e;\n                    }\n                    function P(t, n, a) {\n                        var l = !1;\n                        return o.getTests.call(g, t).every((function(c, f) {\n                            var p = c.match;\n                            if (r.getBuffer.call(g, !0), !1 !== (l = (!p.jit || void 0 !== b.validPositions[r.seekPrevious.call(g, t)]) && (null != p.fn ? p.fn.test(n, b, t, a, k, u.call(g, e)) : (n === p.def || n === k.skipOptionalPartCharacter) && \"\" !== p.def && {\n                                c: o.getPlaceholder.call(g, t, p, !0) || p.def,\n                                pos: t\n                            }))) {\n                                var d = void 0 !== l.c ? l.c : n, h = t;\n                                return d = d === k.skipOptionalPartCharacter && !0 === p.static ? o.getPlaceholder.call(g, t, p, !0) || p.def : d, \n                                !0 !== (l = w(l)) && void 0 !== l.pos && l.pos !== t && (h = l.pos), !0 !== l && void 0 === l.pos && void 0 === l.c ? !1 : (!1 === v.call(g, e, y.extend({}, c, {\n                                    input: s.call(g, d, p, h)\n                                }), i, h) && (l = !1), !1);\n                            }\n                            return !0;\n                        })), l;\n                    }\n                    void 0 !== e.begin && (x = g.isRTL ? e.end : e.begin);\n                    var S = !0, O = y.extend(!0, [], b.validPositions);\n                    if (!1 === k.keepStatic && void 0 !== b.excludes[x] && !0 !== a && !0 !== i) for (var _ = x; _ < (g.isRTL ? e.begin : e.end); _++) void 0 !== b.excludes[_] && (b.excludes[_] = void 0, \n                    delete b.tests[_]);\n                    if (\"function\" == typeof k.preValidation && !0 !== i && !0 !== p && (S = w(S = k.preValidation.call(g, r.getBuffer.call(g), x, t, u.call(g, e), k, b, e, n || a))), \n                    !0 === S) {\n                        if (S = P(x, t, n), (!n || !0 === i) && !1 === S && !0 !== p) {\n                            var M = b.validPositions[x];\n                            if (!M || !0 !== M.match.static || M.match.def !== t && t !== k.skipOptionalPartCharacter) {\n                                if (k.insertMode || void 0 === b.validPositions[r.seekNext.call(g, x)] || e.end > x) {\n                                    var E = !1;\n                                    if (b.jitOffset[x] && void 0 === b.validPositions[r.seekNext.call(g, x)] && !1 !== (S = f.call(g, x + b.jitOffset[x], t, !0, !0)) && (!0 !== a && (S.caret = x), \n                                    E = !0), e.end > x && (b.validPositions[x] = void 0), !E && !r.isMask.call(g, x, k.keepStatic && 0 === x)) for (var j = x + 1, T = r.seekNext.call(g, x, !1, 0 !== x); j <= T; j++) if (!1 !== (S = P(j, t, n))) {\n                                        S = h.call(g, x, void 0 !== S.pos ? S.pos : j) || S, x = j;\n                                        break;\n                                    }\n                                }\n                            } else S = {\n                                caret: r.seekNext.call(g, x)\n                            };\n                        }\n                        g.hasAlternator && !0 !== a && !n && (a = !0, !1 === S && k.keepStatic && (c.call(g, r.getBuffer.call(g)) || 0 === x) ? S = l.call(g, x, t, n, i, void 0, e) : (u.call(g, e) && b.tests[x] && b.tests[x].length > 1 && k.keepStatic || 1 == S && !0 !== k.numericInput && b.tests[x] && b.tests[x].length > 1 && r.getLastValidPosition.call(g, void 0, !0) > x) && (S = l.call(g, !0))), \n                        !0 === S && (S = {\n                            pos: x\n                        });\n                    }\n                    if (\"function\" == typeof k.postValidation && !0 !== i && !0 !== p) {\n                        var A = k.postValidation.call(g, r.getBuffer.call(g, !0), void 0 !== e.begin ? g.isRTL ? e.end : e.begin : e, t, S, k, b, n, m);\n                        void 0 !== A && (S = !0 === A ? S : A);\n                    }\n                    S && void 0 === S.pos && (S.pos = x), !1 === S || !0 === p ? (r.resetMaskSet.call(g, !0), \n                    b.validPositions = y.extend(!0, [], O)) : h.call(g, void 0, x, !0);\n                    var D = w(S);\n                    void 0 !== g.maxLength && (r.getBuffer.call(g).length > g.maxLength && !i && (r.resetMaskSet.call(g, !0), \n                    b.validPositions = y.extend(!0, [], O), D = !1));\n                    return D;\n                }\n                function p(e, t, n) {\n                    for (var i = this.maskset, a = !1, r = o.getTests.call(this, e), l = 0; l < r.length; l++) {\n                        if (r[l].match && (r[l].match.nativeDef === t.match[n.shiftPositions ? \"def\" : \"nativeDef\"] && (!n.shiftPositions || !t.match.static) || r[l].match.nativeDef === t.match.nativeDef || n.regex && !r[l].match.static && r[l].match.fn.test(t.input, i, e, !1, n))) {\n                            a = !0;\n                            break;\n                        }\n                        if (r[l].match && r[l].match.def === t.match.nativeDef) {\n                            a = void 0;\n                            break;\n                        }\n                    }\n                    return !1 === a && void 0 !== i.jitOffset[e] && (a = p.call(this, e + i.jitOffset[e], t, n)), \n                    a;\n                }\n                function d(e, t, n) {\n                    var a, o, l = this, s = this.maskset, c = this.opts, u = this.dependencyLib, f = c.skipOptionalPartCharacter, p = l.isRTL ? n.slice().reverse() : n;\n                    if (c.skipOptionalPartCharacter = \"\", !0 === e) r.resetMaskSet.call(l, !1), e = 0, \n                    t = n.length, o = r.determineNewCaretPosition.call(l, {\n                        begin: 0,\n                        end: 0\n                    }, !1).begin; else {\n                        for (a = e; a < t; a++) s.validPositions.splice(e, 0);\n                        o = e;\n                    }\n                    var d = new u.Event(\"keypress\");\n                    for (a = e; a < t; a++) {\n                        d.key = p[a].toString(), l.ignorable = !1;\n                        var h = i.EventHandlers.keypressEvent.call(l, d, !0, !1, !1, o);\n                        !1 !== h && void 0 !== h && (o = h.forwardPosition);\n                    }\n                    c.skipOptionalPartCharacter = f;\n                }\n                function h(e, t, n) {\n                    var i = this, a = this.maskset, l = this.dependencyLib;\n                    if (void 0 === e) for (e = t - 1; e > 0 && !a.validPositions[e]; e--) ;\n                    for (var s = e; s < t; s++) {\n                        if (void 0 === a.validPositions[s] && !r.isMask.call(i, s, !1)) if (0 == s ? o.getTest.call(i, s) : a.validPositions[s - 1]) {\n                            var c = o.getTests.call(i, s).slice();\n                            \"\" === c[c.length - 1].match.def && c.pop();\n                            var u, p = o.determineTestTemplate.call(i, s, c);\n                            if (p && (!0 !== p.match.jit || \"master\" === p.match.newBlockMarker && (u = a.validPositions[s + 1]) && !0 === u.match.optionalQuantifier) && ((p = l.extend({}, p, {\n                                input: o.getPlaceholder.call(i, s, p.match, !0) || p.match.def\n                            })).generatedInput = !0, v.call(i, s, p, !0), !0 !== n)) {\n                                var d = a.validPositions[t].input;\n                                return a.validPositions[t] = void 0, f.call(i, t, d, !0, !0);\n                            }\n                        }\n                    }\n                }\n                function v(e, t, n, i) {\n                    var a = this, l = this.maskset, s = this.opts, c = this.dependencyLib;\n                    function d(e, t, n) {\n                        var i = t[e];\n                        if (void 0 !== i && !0 === i.match.static && !0 !== i.match.optionality && (void 0 === t[0] || void 0 === t[0].alternation)) {\n                            var a = n.begin <= e - 1 ? t[e - 1] && !0 === t[e - 1].match.static && t[e - 1] : t[e - 1], r = n.end > e + 1 ? t[e + 1] && !0 === t[e + 1].match.static && t[e + 1] : t[e + 1];\n                            return a && r;\n                        }\n                        return !1;\n                    }\n                    var h = 0, v = void 0 !== e.begin ? e.begin : e, m = void 0 !== e.end ? e.end : e, g = !0;\n                    if (e.begin > e.end && (v = e.end, m = e.begin), i = void 0 !== i ? i : v, void 0 === n && (v !== m || s.insertMode && void 0 !== l.validPositions[i] || void 0 === t || t.match.optionalQuantifier || t.match.optionality)) {\n                        var y, k = c.extend(!0, [], l.validPositions), b = r.getLastValidPosition.call(a, void 0, !0);\n                        l.p = v;\n                        var x = u.call(a, e) ? v : i;\n                        for (y = b; y >= x; y--) l.validPositions.splice(y, 1), void 0 === t && delete l.tests[y + 1];\n                        var w, P, S = i, O = S;\n                        for (t && (l.validPositions[i] = c.extend(!0, {}, t), O++, S++), null == k[m] && l.jitOffset[m] && (m += l.jitOffset[m] + 1), \n                        y = t ? m : m - 1; y <= b; y++) {\n                            if (void 0 !== (w = k[y]) && !0 !== w.generatedInput && (y >= m || y >= v && d(y, k, {\n                                begin: v,\n                                end: m\n                            }))) {\n                                for (;\"\" !== o.getTest.call(a, O).match.def; ) {\n                                    if (!1 !== (P = p.call(a, O, w, s)) || \"+\" === w.match.def) {\n                                        \"+\" === w.match.def && r.getBuffer.call(a, !0);\n                                        var _ = f.call(a, O, w.input, \"+\" !== w.match.def, !0);\n                                        if (g = !1 !== _, S = (_.pos || O) + 1, !g && P) break;\n                                    } else g = !1;\n                                    if (g) {\n                                        void 0 === t && w.match.static && y === e.begin && h++;\n                                        break;\n                                    }\n                                    if (!g && r.getBuffer.call(a), O > l.maskLength) break;\n                                    O++;\n                                }\n                                \"\" == o.getTest.call(a, O).match.def && (g = !1), O = S;\n                            }\n                            if (!g) break;\n                        }\n                        if (!g) return l.validPositions = c.extend(!0, [], k), r.resetMaskSet.call(a, !0), \n                        !1;\n                    } else t && o.getTest.call(a, i).match.cd === t.match.cd && (l.validPositions[i] = c.extend(!0, {}, t));\n                    return r.resetMaskSet.call(a, !0), h;\n                }\n            }\n        }, t = {};\n        function n(i) {\n            var a = t[i];\n            if (void 0 !== a) return a.exports;\n            var r = t[i] = {\n                exports: {}\n            };\n            return e[i](r, r.exports, n), r.exports;\n        }\n        var i = {};\n        return function() {\n            var e = i;\n            Object.defineProperty(e, \"__esModule\", {\n                value: !0\n            }), e.default = void 0, n(7149), n(3194), n(9302), n(4013), n(3851), n(219), n(207), \n            n(5296);\n            var t, a = (t = n(2394)) && t.__esModule ? t : {\n                default: t\n            };\n            e.default = a.default;\n        }(), i;\n    }();\n}));", "(function(factory) {\n  typeof define === \"function\" && define.amd ? define(factory) : factory();\n})((function() {\n  \"use strict\";\n  var sparkMd5 = {\n    exports: {}\n  };\n  (function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })((function(undefined$1) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined$1) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash.slice()\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    }));\n  })(sparkMd5);\n  var SparkMD5 = sparkMd5.exports;\n  const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  class FileChecksum {\n    static create(file, callback) {\n      const instance = new FileChecksum(file);\n      instance.create(callback);\n    }\n    constructor(file) {\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    create(callback) {\n      this.callback = callback;\n      this.md5Buffer = new SparkMD5.ArrayBuffer;\n      this.fileReader = new FileReader;\n      this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n      this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n      this.readNextChunk();\n    }\n    fileReaderDidLoad(event) {\n      this.md5Buffer.append(event.target.result);\n      if (!this.readNextChunk()) {\n        const binaryDigest = this.md5Buffer.end(true);\n        const base64digest = btoa(binaryDigest);\n        this.callback(null, base64digest);\n      }\n    }\n    fileReaderDidError(event) {\n      this.callback(`Error reading ${this.file.name}`);\n    }\n    readNextChunk() {\n      if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n        const start = this.chunkIndex * this.chunkSize;\n        const end = Math.min(start + this.chunkSize, this.file.size);\n        const bytes = fileSlice.call(this.file, start, end);\n        this.fileReader.readAsArrayBuffer(bytes);\n        this.chunkIndex++;\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }\n  function getMetaValue(name) {\n    const 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    const elements = root.querySelectorAll(selector);\n    return toArray(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, eventInit = {}) {\n    const {disabled: disabled} = element;\n    const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n    const event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  class BlobRecord {\n    constructor(file, checksum, url, customHeaders = {}) {\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      Object.keys(customHeaders).forEach((headerKey => {\n        this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n      }));\n      const csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    get status() {\n      return this.xhr.status;\n    }\n    get response() {\n      const {responseType: responseType, response: response} = this.xhr;\n      if (responseType == \"json\") {\n        return response;\n      } else {\n        return JSON.parse(response);\n      }\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(JSON.stringify({\n        blob: this.attributes\n      }));\n    }\n    requestDidLoad(event) {\n      if (this.status >= 200 && this.status < 300) {\n        const {response: response} = this;\n        const {direct_upload: direct_upload} = response;\n        delete response.direct_upload;\n        this.attributes = response;\n        this.directUploadData = direct_upload;\n        this.callback(null, this.toJSON());\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n    }\n    toJSON() {\n      const result = {};\n      for (const key in this.attributes) {\n        result[key] = this.attributes[key];\n      }\n      return result;\n    }\n  }\n  class BlobUpload {\n    constructor(blob) {\n      this.blob = blob;\n      this.file = blob.file;\n      const {url: url, headers: headers} = blob.directUploadData;\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (const key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(this.file.slice());\n    }\n    requestDidLoad(event) {\n      const {status: status, response: response} = this.xhr;\n      if (status >= 200 && status < 300) {\n        this.callback(null, response);\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n    }\n  }\n  let id = 0;\n  class DirectUpload {\n    constructor(file, url, delegate, customHeaders = {}) {\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n      this.customHeaders = customHeaders;\n    }\n    create(callback) {\n      FileChecksum.create(this.file, ((error, checksum) => {\n        if (error) {\n          callback(error);\n          return;\n        }\n        const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n        notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n        blob.create((error => {\n          if (error) {\n            callback(error);\n          } else {\n            const upload = new BlobUpload(blob);\n            notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n            upload.create((error => {\n              if (error) {\n                callback(error);\n              } else {\n                callback(null, blob.toJSON());\n              }\n            }));\n          }\n        }));\n      }));\n    }\n  }\n  function notify(object, methodName, ...messages) {\n    if (object && typeof object[methodName] == \"function\") {\n      return object[methodName](...messages);\n    }\n  }\n  class DirectUploadController {\n    constructor(input, file) {\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    start(callback) {\n      const hiddenInput = document.createElement(\"input\");\n      hiddenInput.type = \"hidden\";\n      hiddenInput.name = this.input.name;\n      this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n      this.dispatch(\"start\");\n      this.directUpload.create(((error, attributes) => {\n        if (error) {\n          hiddenInput.parentNode.removeChild(hiddenInput);\n          this.dispatchError(error);\n        } else {\n          hiddenInput.value = attributes.signed_id;\n        }\n        this.dispatch(\"end\");\n        callback(error);\n      }));\n    }\n    uploadRequestDidProgress(event) {\n      const progress = event.loaded / event.total * 100;\n      if (progress) {\n        this.dispatch(\"progress\", {\n          progress: progress\n        });\n      }\n    }\n    get url() {\n      return this.input.getAttribute(\"data-direct-upload-url\");\n    }\n    dispatch(name, detail = {}) {\n      detail.file = this.file;\n      detail.id = this.directUpload.id;\n      return dispatchEvent(this.input, `direct-upload:${name}`, {\n        detail: detail\n      });\n    }\n    dispatchError(error) {\n      const event = this.dispatch(\"error\", {\n        error: error\n      });\n      if (!event.defaultPrevented) {\n        alert(error);\n      }\n    }\n    directUploadWillCreateBlobWithXHR(xhr) {\n      this.dispatch(\"before-blob-request\", {\n        xhr: xhr\n      });\n    }\n    directUploadWillStoreFileWithXHR(xhr) {\n      this.dispatch(\"before-storage-request\", {\n        xhr: xhr\n      });\n      xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n    }\n  }\n  const inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  class DirectUploadsController {\n    constructor(form) {\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n    }\n    start(callback) {\n      const controllers = this.createDirectUploadControllers();\n      const startNextController = () => {\n        const controller = controllers.shift();\n        if (controller) {\n          controller.start((error => {\n            if (error) {\n              callback(error);\n              this.dispatch(\"end\");\n            } else {\n              startNextController();\n            }\n          }));\n        } else {\n          callback();\n          this.dispatch(\"end\");\n        }\n      };\n      this.dispatch(\"start\");\n      startNextController();\n    }\n    createDirectUploadControllers() {\n      const controllers = [];\n      this.inputs.forEach((input => {\n        toArray(input.files).forEach((file => {\n          const controller = new DirectUploadController(input, file);\n          controllers.push(controller);\n        }));\n      }));\n      return controllers;\n    }\n    dispatch(name, detail = {}) {\n      return dispatchEvent(this.form, `direct-uploads:${name}`, {\n        detail: detail\n      });\n    }\n  }\n  const processingAttribute = \"data-direct-uploads-processing\";\n  const submitButtonsByForm = new WeakMap;\n  let started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm, true);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    const button = event.target.closest(\"button, input\");\n    if (button && button.type === \"submit\" && button.form) {\n      submitButtonsByForm.set(button.form, button);\n    }\n  }\n  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    const form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    const controller = new DirectUploadsController(form);\n    const {inputs: inputs} = controller;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start((error => {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      }));\n    }\n  }\n  function submitForm(form) {\n    let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      const {disabled: disabled} = button;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  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  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    start() {\n      this.directUpload.create(this.directUploadDidComplete.bind(this));\n      this.dispatch(\"start\");\n    }\n    directUploadWillStoreFileWithXHR(xhr) {\n      xhr.upload.addEventListener(\"progress\", (event => {\n        const progress = event.loaded / event.total * 100;\n        this.attachment.setUploadProgress(progress);\n        if (progress) {\n          this.dispatch(\"progress\", {\n            progress: progress\n          });\n        }\n      }));\n    }\n    directUploadDidComplete(error, attributes) {\n      if (error) {\n        this.dispatchError(error);\n      } else {\n        this.attachment.setAttributes({\n          sgid: attributes.attachable_sgid,\n          url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n        });\n        this.dispatch(\"end\");\n      }\n    }\n    createBlobUrl(signedId, filename) {\n      return this.blobUrlTemplate.replace(\":signed_id\", signedId).replace(\":filename\", encodeURIComponent(filename));\n    }\n    dispatch(name, detail = {}) {\n      detail.attachment = this.attachment;\n      return dispatchEvent(this.element, `direct-upload:${name}`, {\n        detail: detail\n      });\n    }\n    dispatchError(error) {\n      const event = this.dispatch(\"error\", {\n        error: error\n      });\n      if (!event.defaultPrevented) {\n        alert(error);\n      }\n    }\n    get directUploadUrl() {\n      return this.element.dataset.directUploadUrl;\n    }\n    get blobUrlTemplate() {\n      return this.element.dataset.blobUrlTemplate;\n    }\n  }\n  addEventListener(\"trix-attachment-add\", (event => {\n    const {attachment: attachment, target: target} = event;\n    if (attachment.file) {\n      const upload = new AttachmentUpload(attachment, target);\n      upload.start();\n    }\n  }));\n}));\n", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, \n  factory(global.ActiveStorage = {}));\n})(this, (function(exports) {\n  \"use strict\";\n  var sparkMd5 = {\n    exports: {}\n  };\n  (function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })((function(undefined$1) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined$1) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash.slice()\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    }));\n  })(sparkMd5);\n  var SparkMD5 = sparkMd5.exports;\n  const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  class FileChecksum {\n    static create(file, callback) {\n      const instance = new FileChecksum(file);\n      instance.create(callback);\n    }\n    constructor(file) {\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    create(callback) {\n      this.callback = callback;\n      this.md5Buffer = new SparkMD5.ArrayBuffer;\n      this.fileReader = new FileReader;\n      this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n      this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n      this.readNextChunk();\n    }\n    fileReaderDidLoad(event) {\n      this.md5Buffer.append(event.target.result);\n      if (!this.readNextChunk()) {\n        const binaryDigest = this.md5Buffer.end(true);\n        const base64digest = btoa(binaryDigest);\n        this.callback(null, base64digest);\n      }\n    }\n    fileReaderDidError(event) {\n      this.callback(`Error reading ${this.file.name}`);\n    }\n    readNextChunk() {\n      if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n        const start = this.chunkIndex * this.chunkSize;\n        const end = Math.min(start + this.chunkSize, this.file.size);\n        const bytes = fileSlice.call(this.file, start, end);\n        this.fileReader.readAsArrayBuffer(bytes);\n        this.chunkIndex++;\n        return true;\n      } else {\n        return false;\n      }\n    }\n  }\n  function getMetaValue(name) {\n    const 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    const elements = root.querySelectorAll(selector);\n    return toArray(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, eventInit = {}) {\n    const {disabled: disabled} = element;\n    const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n    const event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  class BlobRecord {\n    constructor(file, checksum, url, customHeaders = {}) {\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      Object.keys(customHeaders).forEach((headerKey => {\n        this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n      }));\n      const csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    get status() {\n      return this.xhr.status;\n    }\n    get response() {\n      const {responseType: responseType, response: response} = this.xhr;\n      if (responseType == \"json\") {\n        return response;\n      } else {\n        return JSON.parse(response);\n      }\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(JSON.stringify({\n        blob: this.attributes\n      }));\n    }\n    requestDidLoad(event) {\n      if (this.status >= 200 && this.status < 300) {\n        const {response: response} = this;\n        const {direct_upload: direct_upload} = response;\n        delete response.direct_upload;\n        this.attributes = response;\n        this.directUploadData = direct_upload;\n        this.callback(null, this.toJSON());\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n    }\n    toJSON() {\n      const result = {};\n      for (const key in this.attributes) {\n        result[key] = this.attributes[key];\n      }\n      return result;\n    }\n  }\n  class BlobUpload {\n    constructor(blob) {\n      this.blob = blob;\n      this.file = blob.file;\n      const {url: url, headers: headers} = blob.directUploadData;\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (const key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n      this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n    }\n    create(callback) {\n      this.callback = callback;\n      this.xhr.send(this.file.slice());\n    }\n    requestDidLoad(event) {\n      const {status: status, response: response} = this.xhr;\n      if (status >= 200 && status < 300) {\n        this.callback(null, response);\n      } else {\n        this.requestDidError(event);\n      }\n    }\n    requestDidError(event) {\n      this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n    }\n  }\n  let id = 0;\n  class DirectUpload {\n    constructor(file, url, delegate, customHeaders = {}) {\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n      this.customHeaders = customHeaders;\n    }\n    create(callback) {\n      FileChecksum.create(this.file, ((error, checksum) => {\n        if (error) {\n          callback(error);\n          return;\n        }\n        const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n        notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n        blob.create((error => {\n          if (error) {\n            callback(error);\n          } else {\n            const upload = new BlobUpload(blob);\n            notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n            upload.create((error => {\n              if (error) {\n                callback(error);\n              } else {\n                callback(null, blob.toJSON());\n              }\n            }));\n          }\n        }));\n      }));\n    }\n  }\n  function notify(object, methodName, ...messages) {\n    if (object && typeof object[methodName] == \"function\") {\n      return object[methodName](...messages);\n    }\n  }\n  class DirectUploadController {\n    constructor(input, file) {\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    start(callback) {\n      const hiddenInput = document.createElement(\"input\");\n      hiddenInput.type = \"hidden\";\n      hiddenInput.name = this.input.name;\n      this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n      this.dispatch(\"start\");\n      this.directUpload.create(((error, attributes) => {\n        if (error) {\n          hiddenInput.parentNode.removeChild(hiddenInput);\n          this.dispatchError(error);\n        } else {\n          hiddenInput.value = attributes.signed_id;\n        }\n        this.dispatch(\"end\");\n        callback(error);\n      }));\n    }\n    uploadRequestDidProgress(event) {\n      const progress = event.loaded / event.total * 100;\n      if (progress) {\n        this.dispatch(\"progress\", {\n          progress: progress\n        });\n      }\n    }\n    get url() {\n      return this.input.getAttribute(\"data-direct-upload-url\");\n    }\n    dispatch(name, detail = {}) {\n      detail.file = this.file;\n      detail.id = this.directUpload.id;\n      return dispatchEvent(this.input, `direct-upload:${name}`, {\n        detail: detail\n      });\n    }\n    dispatchError(error) {\n      const event = this.dispatch(\"error\", {\n        error: error\n      });\n      if (!event.defaultPrevented) {\n        alert(error);\n      }\n    }\n    directUploadWillCreateBlobWithXHR(xhr) {\n      this.dispatch(\"before-blob-request\", {\n        xhr: xhr\n      });\n    }\n    directUploadWillStoreFileWithXHR(xhr) {\n      this.dispatch(\"before-storage-request\", {\n        xhr: xhr\n      });\n      xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n    }\n  }\n  const inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  class DirectUploadsController {\n    constructor(form) {\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n    }\n    start(callback) {\n      const controllers = this.createDirectUploadControllers();\n      const startNextController = () => {\n        const controller = controllers.shift();\n        if (controller) {\n          controller.start((error => {\n            if (error) {\n              callback(error);\n              this.dispatch(\"end\");\n            } else {\n              startNextController();\n            }\n          }));\n        } else {\n          callback();\n          this.dispatch(\"end\");\n        }\n      };\n      this.dispatch(\"start\");\n      startNextController();\n    }\n    createDirectUploadControllers() {\n      const controllers = [];\n      this.inputs.forEach((input => {\n        toArray(input.files).forEach((file => {\n          const controller = new DirectUploadController(input, file);\n          controllers.push(controller);\n        }));\n      }));\n      return controllers;\n    }\n    dispatch(name, detail = {}) {\n      return dispatchEvent(this.form, `direct-uploads:${name}`, {\n        detail: detail\n      });\n    }\n  }\n  const processingAttribute = \"data-direct-uploads-processing\";\n  const submitButtonsByForm = new WeakMap;\n  let started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm, true);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    const button = event.target.closest(\"button, input\");\n    if (button && button.type === \"submit\" && button.form) {\n      submitButtonsByForm.set(button.form, button);\n    }\n  }\n  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    const form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    const controller = new DirectUploadsController(form);\n    const {inputs: inputs} = controller;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start((error => {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      }));\n    }\n  }\n  function submitForm(form) {\n    let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      const {disabled: disabled} = button;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  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.DirectUpload = DirectUpload;\n  exports.DirectUploadController = DirectUploadController;\n  exports.DirectUploadsController = DirectUploadsController;\n  exports.dispatchEvent = dispatchEvent;\n  exports.start = start;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\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.AlpineMagicHelpers = global.AlpineMagicHelpers || {}, global.AlpineMagicHelpers.index = factory()));\n}(this, (function () { 'use strict';\n\n    var checkForAlpine = function checkForAlpine() {\n      if (!window.Alpine) {\n        throw new Error('[Magic Helpers] Alpine is required for the magic helpers to function correctly.');\n      }\n\n      if (!window.Alpine.version || !isValidVersion('2.5.0', window.Alpine.version)) {\n        throw new Error('Invalid Alpine version. Please use Alpine version 2.5.0 or above');\n      }\n    };\n    var syncWithObservedComponent = function syncWithObservedComponent(data, observedComponent, callback) {\n      if (!observedComponent.getAttribute('x-bind:data-last-refresh')) {\n        observedComponent.setAttribute('x-bind:data-last-refresh', 'Date.now()');\n      }\n\n      var handler = function handler(scope) {\n        if (scope === void 0) {\n          scope = null;\n        }\n\n        return {\n          get: function get(target, key) {\n            var _observedComponent$__;\n\n            if (target[key] !== null && typeof target[key] === 'object') {\n              var path = scope ? scope + \".\" + key : key;\n              return new Proxy(target[key], handler(path));\n            } // If scope is null, we are at root level so when target[key] is\n            // a function, we need to make sure the context is the Alpine\n            // reactive layer.\n            // We bind the scope only if the observed component is ready.\n            // Most of the time, the unwrapped data is enough\n\n\n            if (scope === null && typeof target[key] === 'function' && observedComponent.__x) {\n              return target[key].bind(observedComponent.__x.$data);\n            } // If scope is null, we are at root level so when target[key] is not defined\n            // we try to look for observedComponent.__x.$data[key] to check if a magic\n            // helper/property exists\n\n\n            if (scope === null && !target[key] && observedComponent != null && (_observedComponent$__ = observedComponent.__x) != null && _observedComponent$__.$data[key]) {\n              return observedComponent.__x.$data[key];\n            }\n\n            return target[key];\n          },\n          set: function set(_target, key, value) {\n            if (!observedComponent.__x) {\n              throw new Error('Error communicating with observed component');\n            }\n\n            var path = scope ? scope + \".\" + key : key;\n            callback.call(observedComponent, observedComponent.__x.$data, path, value);\n            return true;\n          }\n        };\n      };\n\n      return new Proxy(data, handler());\n    };\n    var updateOnMutation = function updateOnMutation(componentBeingObserved, callback) {\n      if (!componentBeingObserved.getAttribute('x-bind:data-last-refresh')) {\n        componentBeingObserved.setAttribute('x-bind:data-last-refresh', 'Date.now()');\n      }\n\n      var observer = new MutationObserver(function (mutations) {\n        for (var i = 0; i < mutations.length; i++) {\n          var mutatedComponent = mutations[i].target.closest('[x-data]');\n          if (mutatedComponent && !mutatedComponent.isSameNode(componentBeingObserved)) continue;\n          callback();\n          return;\n        }\n      });\n      observer.observe(componentBeingObserved, {\n        attributes: true,\n        childList: true,\n        subtree: true\n      });\n    }; // Borrowed from https://stackoverflow.com/a/54733755/1437789\n\n    var objectSetDeep = function objectSetDeep(object, path, value) {\n      path = path.toString().match(/[^.[\\]]+/g) || []; // Iterate all of them except the last one\n\n      path.slice(0, -1).reduce(function (a, currentKey, index) {\n        // If the key does not exist or its value is not an object, create/override the key\n        if (Object(a[currentKey]) !== a[currentKey]) {\n          // Is the next key a potential array-index?\n          a[currentKey] = Math.abs(path[index + 1]) >> 0 === +path[index + 1] ? [] // Yes: assign a new array object\n          : {}; // No: assign a new plain object\n        }\n\n        return a[currentKey];\n      }, object)[path[path.length - 1]] = value; // Finally assign the value to the last key\n\n      return object;\n    }; // Returns component data if Alpine has made it available, otherwise computes it with saferEval()\n\n    var componentData = function componentData(component, properties) {\n      var data = component.__x ? component.__x.getUnobservedData() : saferEval(component.getAttribute('x-data'), component);\n\n      if (properties) {\n        properties = Array.isArray(properties) ? properties : [properties];\n        return properties.reduce(function (object, key) {\n          object[key] = data[key];\n          return object;\n        }, {});\n      }\n\n      return data;\n    };\n\n    function isValidVersion(required, current) {\n      var requiredArray = required.split('.');\n      var currentArray = current.split('.');\n\n      for (var i = 0; i < requiredArray.length; i++) {\n        if (!currentArray[i] || parseInt(currentArray[i]) < parseInt(requiredArray[i])) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    function saferEval(expression, dataContext, additionalHelperVariables) {\n      if (additionalHelperVariables === void 0) {\n        additionalHelperVariables = {};\n      }\n\n      if (typeof expression === 'function') {\n        return expression.call(dataContext);\n      } // eslint-disable-next-line no-new-func\n\n\n      return new Function(['$data'].concat(Object.keys(additionalHelperVariables)), \"var __alpine_result; with($data) { __alpine_result = \" + expression + \" }; return __alpine_result\").apply(void 0, [dataContext].concat(Object.values(additionalHelperVariables)));\n    } // Returns a dummy proxy that supports multiple levels of nesting and always prints/returns an empty string.\n\n\n    function getNoopProxy() {\n      var handler = {\n        get: function get(target, key) {\n          return new Proxy(function () {\n            return '';\n          }, handler);\n        }\n      };\n      return new Proxy(function () {\n        return '';\n      }, handler);\n    } // Continuously check the observed component until it's ready.\n    // It returns an object that always spits out an empty string while waiting (See getNoopProxy).\n\n    function waitUntilReady(componentBeingObserved, component, callback) {\n      if (!componentBeingObserved.__x) {\n        window.requestAnimationFrame(function () {\n          return component.__x.updateElements(component);\n        });\n        return getNoopProxy();\n      }\n\n      return callback();\n    }\n    var X_ATTR_RE = /^x-([a-z-]*)\\b/i;\n\n    function parseHtmlAttribute(_ref) {\n      var name = _ref.name,\n          value = _ref.value;\n      var typeMatch = name.match(X_ATTR_RE);\n      var valueMatch = name.match(/:([a-z0-9\\-:]+)/i);\n      var modifiers = name.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n      return {\n        type: typeMatch ? typeMatch[1] : null,\n        value: valueMatch ? valueMatch[1] : null,\n        modifiers: modifiers.map(function (i) {\n          return i.replace('.', '');\n        }),\n        expression: value\n      };\n    }\n\n    function getXDirectives(el) {\n      return Array.from(el.attributes).filter(function (attr) {\n        return X_ATTR_RE.test(attr.name);\n      }).map(parseHtmlAttribute);\n    }\n    function importOrderCheck() {\n      // We only want to show the error once\n      if (window.Alpine && !window.AlpineMagicHelpers.__fatal) {\n        window.AlpineMagicHelpers.__fatal = setTimeout(function () {\n          console.error('%c*** ALPINE MAGIC HELPER: Fatal Error! ***\\n\\n\\n' + 'Alpine magic helpers need to be loaded before Alpine ' + 'to avoid errors when Alpine initialises its component. \\n\\n' + 'Make sure the helper script is included before Alpine in ' + 'your page when using the defer attribute', 'font-size: 14px');\n        }, 200); // We set a small timeout to make sure we flush all the Alpine noise first\n      }\n    }\n\n    importOrderCheck();\n    var AlpineComponentMagicMethod = {\n      start: function start() {\n        checkForAlpine();\n        Alpine.addMagicProperty('parent', function ($el) {\n          if (typeof $el.$parent !== 'undefined') return $el.$parent;\n          var parentComponent = $el.parentNode.closest('[x-data]');\n          if (!parentComponent) throw new Error('Parent component not found'); // If the parent component is not ready, we return a dummy proxy\n          // that always prints out an empty string and we check again on the next frame\n          // We are de facto deferring the value for a few ms but final users\n          // shouldn't notice the delay\n\n          return waitUntilReady(parentComponent, $el, function () {\n            $el.$parent = syncWithObservedComponent(componentData(parentComponent), parentComponent, objectSetDeep);\n            updateOnMutation(parentComponent, function () {\n              $el.$parent = syncWithObservedComponent(parentComponent.__x.getUnobservedData(), parentComponent, objectSetDeep);\n\n              $el.__x.updateElements($el);\n            });\n            return $el.$parent;\n          });\n        });\n        Alpine.addMagicProperty('component', function ($el) {\n          return function (componentName) {\n            var _this = this;\n\n            if (typeof this[componentName] !== 'undefined') return this[componentName];\n            var componentBeingObserved = document.querySelector(\"[x-data][x-id=\\\"\" + componentName + \"\\\"], [x-data]#\" + componentName);\n            if (!componentBeingObserved) throw new Error('Component not found'); // If the observed component is not ready, we return a dummy proxy\n            // that always prints out an empty string and we check again on the next frame\n            // We are de facto deferring the value for a few ms but final users\n            // shouldn't notice the delay\n\n            return waitUntilReady(componentBeingObserved, $el, function () {\n              _this[componentName] = syncWithObservedComponent(componentData(componentBeingObserved), componentBeingObserved, objectSetDeep);\n              updateOnMutation(componentBeingObserved, function () {\n                _this[componentName] = syncWithObservedComponent(componentBeingObserved.__x.getUnobservedData(), componentBeingObserved, objectSetDeep);\n\n                $el.__x.updateElements($el);\n              });\n              return _this[componentName];\n            });\n          };\n        });\n      }\n    };\n\n    var alpine$9 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineComponentMagicMethod.start();\n      alpine$9(callback);\n    };\n\n    var bind = function bind(fn, thisArg) {\n      return function wrap() {\n        var args = new Array(arguments.length);\n        for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i];\n        }\n        return fn.apply(thisArg, args);\n      };\n    };\n\n    /*global toString:true*/\n\n    // utils is a library of generic helper functions non-specific to axios\n\n    var toString = Object.prototype.toString;\n\n    /**\n     * Determine if a value is an Array\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is an Array, otherwise false\n     */\n    function isArray(val) {\n      return toString.call(val) === '[object Array]';\n    }\n\n    /**\n     * Determine if a value is undefined\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if the value is undefined, otherwise false\n     */\n    function isUndefined(val) {\n      return typeof val === 'undefined';\n    }\n\n    /**\n     * Determine if a value is a Buffer\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a Buffer, otherwise false\n     */\n    function isBuffer(val) {\n      return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n        && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n    }\n\n    /**\n     * Determine if a value is an ArrayBuffer\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n     */\n    function isArrayBuffer(val) {\n      return toString.call(val) === '[object ArrayBuffer]';\n    }\n\n    /**\n     * Determine if a value is a FormData\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is an FormData, otherwise false\n     */\n    function isFormData(val) {\n      return (typeof FormData !== 'undefined') && (val instanceof FormData);\n    }\n\n    /**\n     * Determine if a value is a view on an ArrayBuffer\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n     */\n    function isArrayBufferView(val) {\n      var result;\n      if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n        result = ArrayBuffer.isView(val);\n      } else {\n        result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n      }\n      return result;\n    }\n\n    /**\n     * Determine if a value is a String\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a String, otherwise false\n     */\n    function isString(val) {\n      return typeof val === 'string';\n    }\n\n    /**\n     * Determine if a value is a Number\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a Number, otherwise false\n     */\n    function isNumber(val) {\n      return typeof val === 'number';\n    }\n\n    /**\n     * Determine if a value is an Object\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is an Object, otherwise false\n     */\n    function isObject(val) {\n      return val !== null && typeof val === 'object';\n    }\n\n    /**\n     * Determine if a value is a plain Object\n     *\n     * @param {Object} val The value to test\n     * @return {boolean} True if value is a plain Object, otherwise false\n     */\n    function isPlainObject(val) {\n      if (toString.call(val) !== '[object Object]') {\n        return false;\n      }\n\n      var prototype = Object.getPrototypeOf(val);\n      return prototype === null || prototype === Object.prototype;\n    }\n\n    /**\n     * Determine if a value is a Date\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a Date, otherwise false\n     */\n    function isDate(val) {\n      return toString.call(val) === '[object Date]';\n    }\n\n    /**\n     * Determine if a value is a File\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a File, otherwise false\n     */\n    function isFile(val) {\n      return toString.call(val) === '[object File]';\n    }\n\n    /**\n     * Determine if a value is a Blob\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a Blob, otherwise false\n     */\n    function isBlob(val) {\n      return toString.call(val) === '[object Blob]';\n    }\n\n    /**\n     * Determine if a value is a Function\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a Function, otherwise false\n     */\n    function isFunction(val) {\n      return toString.call(val) === '[object Function]';\n    }\n\n    /**\n     * Determine if a value is a Stream\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a Stream, otherwise false\n     */\n    function isStream(val) {\n      return isObject(val) && isFunction(val.pipe);\n    }\n\n    /**\n     * Determine if a value is a URLSearchParams object\n     *\n     * @param {Object} val The value to test\n     * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n     */\n    function isURLSearchParams(val) {\n      return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n    }\n\n    /**\n     * Trim excess whitespace off the beginning and end of a string\n     *\n     * @param {String} str The String to trim\n     * @returns {String} The String freed of excess whitespace\n     */\n    function trim(str) {\n      return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n    }\n\n    /**\n     * Determine if we're running in a standard browser environment\n     *\n     * This allows axios to run in a web worker, and react-native.\n     * Both environments support XMLHttpRequest, but not fully standard globals.\n     *\n     * web workers:\n     *  typeof window -> undefined\n     *  typeof document -> undefined\n     *\n     * react-native:\n     *  navigator.product -> 'ReactNative'\n     * nativescript\n     *  navigator.product -> 'NativeScript' or 'NS'\n     */\n    function isStandardBrowserEnv() {\n      if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n                                               navigator.product === 'NativeScript' ||\n                                               navigator.product === 'NS')) {\n        return false;\n      }\n      return (\n        typeof window !== 'undefined' &&\n        typeof document !== 'undefined'\n      );\n    }\n\n    /**\n     * Iterate over an Array or an Object invoking a function for each item.\n     *\n     * If `obj` is an Array callback will be called passing\n     * the value, index, and complete array for each item.\n     *\n     * If 'obj' is an Object callback will be called passing\n     * the value, key, and complete object for each property.\n     *\n     * @param {Object|Array} obj The object to iterate\n     * @param {Function} fn The callback to invoke for each item\n     */\n    function forEach(obj, fn) {\n      // Don't bother if no value provided\n      if (obj === null || typeof obj === 'undefined') {\n        return;\n      }\n\n      // Force an array if not already something iterable\n      if (typeof obj !== 'object') {\n        /*eslint no-param-reassign:0*/\n        obj = [obj];\n      }\n\n      if (isArray(obj)) {\n        // Iterate over array values\n        for (var i = 0, l = obj.length; i < l; i++) {\n          fn.call(null, obj[i], i, obj);\n        }\n      } else {\n        // Iterate over object keys\n        for (var key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            fn.call(null, obj[key], key, obj);\n          }\n        }\n      }\n    }\n\n    /**\n     * Accepts varargs expecting each argument to be an object, then\n     * immutably merges the properties of each object and returns result.\n     *\n     * When multiple objects contain the same key the later object in\n     * the arguments list will take precedence.\n     *\n     * Example:\n     *\n     * ```js\n     * var result = merge({foo: 123}, {foo: 456});\n     * console.log(result.foo); // outputs 456\n     * ```\n     *\n     * @param {Object} obj1 Object to merge\n     * @returns {Object} Result of all merge properties\n     */\n    function merge(/* obj1, obj2, obj3, ... */) {\n      var result = {};\n      function assignValue(val, key) {\n        if (isPlainObject(result[key]) && isPlainObject(val)) {\n          result[key] = merge(result[key], val);\n        } else if (isPlainObject(val)) {\n          result[key] = merge({}, val);\n        } else if (isArray(val)) {\n          result[key] = val.slice();\n        } else {\n          result[key] = val;\n        }\n      }\n\n      for (var i = 0, l = arguments.length; i < l; i++) {\n        forEach(arguments[i], assignValue);\n      }\n      return result;\n    }\n\n    /**\n     * Extends object a by mutably adding to it the properties of object b.\n     *\n     * @param {Object} a The object to be extended\n     * @param {Object} b The object to copy properties from\n     * @param {Object} thisArg The object to bind function to\n     * @return {Object} The resulting value of object a\n     */\n    function extend(a, b, thisArg) {\n      forEach(b, function assignValue(val, key) {\n        if (thisArg && typeof val === 'function') {\n          a[key] = bind(val, thisArg);\n        } else {\n          a[key] = val;\n        }\n      });\n      return a;\n    }\n\n    /**\n     * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n     *\n     * @param {string} content with BOM\n     * @return {string} content value without BOM\n     */\n    function stripBOM(content) {\n      if (content.charCodeAt(0) === 0xFEFF) {\n        content = content.slice(1);\n      }\n      return content;\n    }\n\n    var utils = {\n      isArray: isArray,\n      isArrayBuffer: isArrayBuffer,\n      isBuffer: isBuffer,\n      isFormData: isFormData,\n      isArrayBufferView: isArrayBufferView,\n      isString: isString,\n      isNumber: isNumber,\n      isObject: isObject,\n      isPlainObject: isPlainObject,\n      isUndefined: isUndefined,\n      isDate: isDate,\n      isFile: isFile,\n      isBlob: isBlob,\n      isFunction: isFunction,\n      isStream: isStream,\n      isURLSearchParams: isURLSearchParams,\n      isStandardBrowserEnv: isStandardBrowserEnv,\n      forEach: forEach,\n      merge: merge,\n      extend: extend,\n      trim: trim,\n      stripBOM: stripBOM\n    };\n\n    function encode(val) {\n      return encodeURIComponent(val).\n        replace(/%3A/gi, ':').\n        replace(/%24/g, '$').\n        replace(/%2C/gi, ',').\n        replace(/%20/g, '+').\n        replace(/%5B/gi, '[').\n        replace(/%5D/gi, ']');\n    }\n\n    /**\n     * Build a URL by appending params to the end\n     *\n     * @param {string} url The base of the url (e.g., http://www.google.com)\n     * @param {object} [params] The params to be appended\n     * @returns {string} The formatted url\n     */\n    var buildURL = function buildURL(url, params, paramsSerializer) {\n      /*eslint no-param-reassign:0*/\n      if (!params) {\n        return url;\n      }\n\n      var serializedParams;\n      if (paramsSerializer) {\n        serializedParams = paramsSerializer(params);\n      } else if (utils.isURLSearchParams(params)) {\n        serializedParams = params.toString();\n      } else {\n        var parts = [];\n\n        utils.forEach(params, function serialize(val, key) {\n          if (val === null || typeof val === 'undefined') {\n            return;\n          }\n\n          if (utils.isArray(val)) {\n            key = key + '[]';\n          } else {\n            val = [val];\n          }\n\n          utils.forEach(val, function parseValue(v) {\n            if (utils.isDate(v)) {\n              v = v.toISOString();\n            } else if (utils.isObject(v)) {\n              v = JSON.stringify(v);\n            }\n            parts.push(encode(key) + '=' + encode(v));\n          });\n        });\n\n        serializedParams = parts.join('&');\n      }\n\n      if (serializedParams) {\n        var hashmarkIndex = url.indexOf('#');\n        if (hashmarkIndex !== -1) {\n          url = url.slice(0, hashmarkIndex);\n        }\n\n        url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n      }\n\n      return url;\n    };\n\n    function InterceptorManager() {\n      this.handlers = [];\n    }\n\n    /**\n     * Add a new interceptor to the stack\n     *\n     * @param {Function} fulfilled The function to handle `then` for a `Promise`\n     * @param {Function} rejected The function to handle `reject` for a `Promise`\n     *\n     * @return {Number} An ID used to remove interceptor later\n     */\n    InterceptorManager.prototype.use = function use(fulfilled, rejected) {\n      this.handlers.push({\n        fulfilled: fulfilled,\n        rejected: rejected\n      });\n      return this.handlers.length - 1;\n    };\n\n    /**\n     * Remove an interceptor from the stack\n     *\n     * @param {Number} id The ID that was returned by `use`\n     */\n    InterceptorManager.prototype.eject = function eject(id) {\n      if (this.handlers[id]) {\n        this.handlers[id] = null;\n      }\n    };\n\n    /**\n     * Iterate over all the registered interceptors\n     *\n     * This method is particularly useful for skipping over any\n     * interceptors that may have become `null` calling `eject`.\n     *\n     * @param {Function} fn The function to call for each interceptor\n     */\n    InterceptorManager.prototype.forEach = function forEach(fn) {\n      utils.forEach(this.handlers, function forEachHandler(h) {\n        if (h !== null) {\n          fn(h);\n        }\n      });\n    };\n\n    var InterceptorManager_1 = InterceptorManager;\n\n    /**\n     * Transform the data for a request or a response\n     *\n     * @param {Object|String} data The data to be transformed\n     * @param {Array} headers The headers for the request or response\n     * @param {Array|Function} fns A single function or Array of functions\n     * @returns {*} The resulting transformed data\n     */\n    var transformData = function transformData(data, headers, fns) {\n      /*eslint no-param-reassign:0*/\n      utils.forEach(fns, function transform(fn) {\n        data = fn(data, headers);\n      });\n\n      return data;\n    };\n\n    var isCancel = function isCancel(value) {\n      return !!(value && value.__CANCEL__);\n    };\n\n    var normalizeHeaderName = function normalizeHeaderName(headers, normalizedName) {\n      utils.forEach(headers, function processHeader(value, name) {\n        if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n          headers[normalizedName] = value;\n          delete headers[name];\n        }\n      });\n    };\n\n    /**\n     * Update an Error with the specified config, error code, and response.\n     *\n     * @param {Error} error The error to update.\n     * @param {Object} config The config.\n     * @param {string} [code] The error code (for example, 'ECONNABORTED').\n     * @param {Object} [request] The request.\n     * @param {Object} [response] The response.\n     * @returns {Error} The error.\n     */\n    var enhanceError = function enhanceError(error, config, code, request, response) {\n      error.config = config;\n      if (code) {\n        error.code = code;\n      }\n\n      error.request = request;\n      error.response = response;\n      error.isAxiosError = true;\n\n      error.toJSON = function toJSON() {\n        return {\n          // Standard\n          message: this.message,\n          name: this.name,\n          // Microsoft\n          description: this.description,\n          number: this.number,\n          // Mozilla\n          fileName: this.fileName,\n          lineNumber: this.lineNumber,\n          columnNumber: this.columnNumber,\n          stack: this.stack,\n          // Axios\n          config: this.config,\n          code: this.code\n        };\n      };\n      return error;\n    };\n\n    /**\n     * Create an Error with the specified message, config, error code, request and response.\n     *\n     * @param {string} message The error message.\n     * @param {Object} config The config.\n     * @param {string} [code] The error code (for example, 'ECONNABORTED').\n     * @param {Object} [request] The request.\n     * @param {Object} [response] The response.\n     * @returns {Error} The created error.\n     */\n    var createError = function createError(message, config, code, request, response) {\n      var error = new Error(message);\n      return enhanceError(error, config, code, request, response);\n    };\n\n    /**\n     * Resolve or reject a Promise based on response status.\n     *\n     * @param {Function} resolve A function that resolves the promise.\n     * @param {Function} reject A function that rejects the promise.\n     * @param {object} response The response.\n     */\n    var settle = function settle(resolve, reject, response) {\n      var validateStatus = response.config.validateStatus;\n      if (!response.status || !validateStatus || validateStatus(response.status)) {\n        resolve(response);\n      } else {\n        reject(createError(\n          'Request failed with status code ' + response.status,\n          response.config,\n          null,\n          response.request,\n          response\n        ));\n      }\n    };\n\n    var cookies = (\n      utils.isStandardBrowserEnv() ?\n\n      // Standard browser envs support document.cookie\n        (function standardBrowserEnv() {\n          return {\n            write: function write(name, value, expires, path, domain, secure) {\n              var cookie = [];\n              cookie.push(name + '=' + encodeURIComponent(value));\n\n              if (utils.isNumber(expires)) {\n                cookie.push('expires=' + new Date(expires).toGMTString());\n              }\n\n              if (utils.isString(path)) {\n                cookie.push('path=' + path);\n              }\n\n              if (utils.isString(domain)) {\n                cookie.push('domain=' + domain);\n              }\n\n              if (secure === true) {\n                cookie.push('secure');\n              }\n\n              document.cookie = cookie.join('; ');\n            },\n\n            read: function read(name) {\n              var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n              return (match ? decodeURIComponent(match[3]) : null);\n            },\n\n            remove: function remove(name) {\n              this.write(name, '', Date.now() - 86400000);\n            }\n          };\n        })() :\n\n      // Non standard browser env (web workers, react-native) lack needed support.\n        (function nonStandardBrowserEnv() {\n          return {\n            write: function write() {},\n            read: function read() { return null; },\n            remove: function remove() {}\n          };\n        })()\n    );\n\n    /**\n     * Determines whether the specified URL is absolute\n     *\n     * @param {string} url The URL to test\n     * @returns {boolean} True if the specified URL is absolute, otherwise false\n     */\n    var isAbsoluteURL = function isAbsoluteURL(url) {\n      // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n      // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n      // by any combination of letters, digits, plus, period, or hyphen.\n      return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n    };\n\n    /**\n     * Creates a new URL by combining the specified URLs\n     *\n     * @param {string} baseURL The base URL\n     * @param {string} relativeURL The relative URL\n     * @returns {string} The combined URL\n     */\n    var combineURLs = function combineURLs(baseURL, relativeURL) {\n      return relativeURL\n        ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n        : baseURL;\n    };\n\n    /**\n     * Creates a new URL by combining the baseURL with the requestedURL,\n     * only when the requestedURL is not already an absolute URL.\n     * If the requestURL is absolute, this function returns the requestedURL untouched.\n     *\n     * @param {string} baseURL The base URL\n     * @param {string} requestedURL Absolute or relative URL to combine\n     * @returns {string} The combined full path\n     */\n    var buildFullPath = function buildFullPath(baseURL, requestedURL) {\n      if (baseURL && !isAbsoluteURL(requestedURL)) {\n        return combineURLs(baseURL, requestedURL);\n      }\n      return requestedURL;\n    };\n\n    // Headers whose duplicates are ignored by node\n    // c.f. https://nodejs.org/api/http.html#http_message_headers\n    var ignoreDuplicateOf = [\n      'age', 'authorization', 'content-length', 'content-type', 'etag',\n      'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n      'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n      'referer', 'retry-after', 'user-agent'\n    ];\n\n    /**\n     * Parse headers into an object\n     *\n     * ```\n     * Date: Wed, 27 Aug 2014 08:58:49 GMT\n     * Content-Type: application/json\n     * Connection: keep-alive\n     * Transfer-Encoding: chunked\n     * ```\n     *\n     * @param {String} headers Headers needing to be parsed\n     * @returns {Object} Headers parsed into an object\n     */\n    var parseHeaders = function parseHeaders(headers) {\n      var parsed = {};\n      var key;\n      var val;\n      var i;\n\n      if (!headers) { return parsed; }\n\n      utils.forEach(headers.split('\\n'), function parser(line) {\n        i = line.indexOf(':');\n        key = utils.trim(line.substr(0, i)).toLowerCase();\n        val = utils.trim(line.substr(i + 1));\n\n        if (key) {\n          if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n            return;\n          }\n          if (key === 'set-cookie') {\n            parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n          } else {\n            parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n          }\n        }\n      });\n\n      return parsed;\n    };\n\n    var isURLSameOrigin = (\n      utils.isStandardBrowserEnv() ?\n\n      // Standard browser envs have full support of the APIs needed to test\n      // whether the request URL is of the same origin as current location.\n        (function standardBrowserEnv() {\n          var msie = /(msie|trident)/i.test(navigator.userAgent);\n          var urlParsingNode = document.createElement('a');\n          var originURL;\n\n          /**\n        * Parse a URL to discover it's components\n        *\n        * @param {String} url The URL to be parsed\n        * @returns {Object}\n        */\n          function resolveURL(url) {\n            var href = url;\n\n            if (msie) {\n            // IE needs attribute set twice to normalize properties\n              urlParsingNode.setAttribute('href', href);\n              href = urlParsingNode.href;\n            }\n\n            urlParsingNode.setAttribute('href', href);\n\n            // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n            return {\n              href: urlParsingNode.href,\n              protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n              host: urlParsingNode.host,\n              search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n              hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n              hostname: urlParsingNode.hostname,\n              port: urlParsingNode.port,\n              pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n                urlParsingNode.pathname :\n                '/' + urlParsingNode.pathname\n            };\n          }\n\n          originURL = resolveURL(window.location.href);\n\n          /**\n        * Determine if a URL shares the same origin as the current location\n        *\n        * @param {String} requestURL The URL to test\n        * @returns {boolean} True if URL shares the same origin, otherwise false\n        */\n          return function isURLSameOrigin(requestURL) {\n            var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n            return (parsed.protocol === originURL.protocol &&\n                parsed.host === originURL.host);\n          };\n        })() :\n\n      // Non standard browser envs (web workers, react-native) lack needed support.\n        (function nonStandardBrowserEnv() {\n          return function isURLSameOrigin() {\n            return true;\n          };\n        })()\n    );\n\n    var xhr = function xhrAdapter(config) {\n      return new Promise(function dispatchXhrRequest(resolve, reject) {\n        var requestData = config.data;\n        var requestHeaders = config.headers;\n\n        if (utils.isFormData(requestData)) {\n          delete requestHeaders['Content-Type']; // Let the browser set it\n        }\n\n        var request = new XMLHttpRequest();\n\n        // HTTP basic authentication\n        if (config.auth) {\n          var username = config.auth.username || '';\n          var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n          requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n        }\n\n        var fullPath = buildFullPath(config.baseURL, config.url);\n        request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n        // Set the request timeout in MS\n        request.timeout = config.timeout;\n\n        // Listen for ready state\n        request.onreadystatechange = function handleLoad() {\n          if (!request || request.readyState !== 4) {\n            return;\n          }\n\n          // The request errored out and we didn't get a response, this will be\n          // handled by onerror instead\n          // With one exception: request that using file: protocol, most browsers\n          // will return status as 0 even though it's a successful request\n          if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n            return;\n          }\n\n          // Prepare the response\n          var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n          var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n          var response = {\n            data: responseData,\n            status: request.status,\n            statusText: request.statusText,\n            headers: responseHeaders,\n            config: config,\n            request: request\n          };\n\n          settle(resolve, reject, response);\n\n          // Clean up request\n          request = null;\n        };\n\n        // Handle browser request cancellation (as opposed to a manual cancellation)\n        request.onabort = function handleAbort() {\n          if (!request) {\n            return;\n          }\n\n          reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n          // Clean up request\n          request = null;\n        };\n\n        // Handle low level network errors\n        request.onerror = function handleError() {\n          // Real errors are hidden from us by the browser\n          // onerror should only fire if it's a network error\n          reject(createError('Network Error', config, null, request));\n\n          // Clean up request\n          request = null;\n        };\n\n        // Handle timeout\n        request.ontimeout = function handleTimeout() {\n          var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n          if (config.timeoutErrorMessage) {\n            timeoutErrorMessage = config.timeoutErrorMessage;\n          }\n          reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n            request));\n\n          // Clean up request\n          request = null;\n        };\n\n        // Add xsrf header\n        // This is only done if running in a standard browser environment.\n        // Specifically not if we're in a web worker, or react-native.\n        if (utils.isStandardBrowserEnv()) {\n          // Add xsrf header\n          var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n            cookies.read(config.xsrfCookieName) :\n            undefined;\n\n          if (xsrfValue) {\n            requestHeaders[config.xsrfHeaderName] = xsrfValue;\n          }\n        }\n\n        // Add headers to the request\n        if ('setRequestHeader' in request) {\n          utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n            if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n              // Remove Content-Type if data is undefined\n              delete requestHeaders[key];\n            } else {\n              // Otherwise add header to the request\n              request.setRequestHeader(key, val);\n            }\n          });\n        }\n\n        // Add withCredentials to request if needed\n        if (!utils.isUndefined(config.withCredentials)) {\n          request.withCredentials = !!config.withCredentials;\n        }\n\n        // Add responseType to request if needed\n        if (config.responseType) {\n          try {\n            request.responseType = config.responseType;\n          } catch (e) {\n            // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n            // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n            if (config.responseType !== 'json') {\n              throw e;\n            }\n          }\n        }\n\n        // Handle progress if needed\n        if (typeof config.onDownloadProgress === 'function') {\n          request.addEventListener('progress', config.onDownloadProgress);\n        }\n\n        // Not all browsers support upload events\n        if (typeof config.onUploadProgress === 'function' && request.upload) {\n          request.upload.addEventListener('progress', config.onUploadProgress);\n        }\n\n        if (config.cancelToken) {\n          // Handle cancellation\n          config.cancelToken.promise.then(function onCanceled(cancel) {\n            if (!request) {\n              return;\n            }\n\n            request.abort();\n            reject(cancel);\n            // Clean up request\n            request = null;\n          });\n        }\n\n        if (!requestData) {\n          requestData = null;\n        }\n\n        // Send the request\n        request.send(requestData);\n      });\n    };\n\n    var DEFAULT_CONTENT_TYPE = {\n      'Content-Type': 'application/x-www-form-urlencoded'\n    };\n\n    function setContentTypeIfUnset(headers, value) {\n      if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n        headers['Content-Type'] = value;\n      }\n    }\n\n    function getDefaultAdapter() {\n      var adapter;\n      if (typeof XMLHttpRequest !== 'undefined') {\n        // For browsers use XHR adapter\n        adapter = xhr;\n      } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n        // For node use HTTP adapter\n        adapter = xhr;\n      }\n      return adapter;\n    }\n\n    var defaults = {\n      adapter: getDefaultAdapter(),\n\n      transformRequest: [function transformRequest(data, headers) {\n        normalizeHeaderName(headers, 'Accept');\n        normalizeHeaderName(headers, 'Content-Type');\n        if (utils.isFormData(data) ||\n          utils.isArrayBuffer(data) ||\n          utils.isBuffer(data) ||\n          utils.isStream(data) ||\n          utils.isFile(data) ||\n          utils.isBlob(data)\n        ) {\n          return data;\n        }\n        if (utils.isArrayBufferView(data)) {\n          return data.buffer;\n        }\n        if (utils.isURLSearchParams(data)) {\n          setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n          return data.toString();\n        }\n        if (utils.isObject(data)) {\n          setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n          return JSON.stringify(data);\n        }\n        return data;\n      }],\n\n      transformResponse: [function transformResponse(data) {\n        /*eslint no-param-reassign:0*/\n        if (typeof data === 'string') {\n          try {\n            data = JSON.parse(data);\n          } catch (e) { /* Ignore */ }\n        }\n        return data;\n      }],\n\n      /**\n       * A timeout in milliseconds to abort a request. If set to 0 (default) a\n       * timeout is not created.\n       */\n      timeout: 0,\n\n      xsrfCookieName: 'XSRF-TOKEN',\n      xsrfHeaderName: 'X-XSRF-TOKEN',\n\n      maxContentLength: -1,\n      maxBodyLength: -1,\n\n      validateStatus: function validateStatus(status) {\n        return status >= 200 && status < 300;\n      }\n    };\n\n    defaults.headers = {\n      common: {\n        'Accept': 'application/json, text/plain, */*'\n      }\n    };\n\n    utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n      defaults.headers[method] = {};\n    });\n\n    utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n      defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n    });\n\n    var defaults_1 = defaults;\n\n    /**\n     * Throws a `Cancel` if cancellation has been requested.\n     */\n    function throwIfCancellationRequested(config) {\n      if (config.cancelToken) {\n        config.cancelToken.throwIfRequested();\n      }\n    }\n\n    /**\n     * Dispatch a request to the server using the configured adapter.\n     *\n     * @param {object} config The config that is to be used for the request\n     * @returns {Promise} The Promise to be fulfilled\n     */\n    var dispatchRequest = function dispatchRequest(config) {\n      throwIfCancellationRequested(config);\n\n      // Ensure headers exist\n      config.headers = config.headers || {};\n\n      // Transform request data\n      config.data = transformData(\n        config.data,\n        config.headers,\n        config.transformRequest\n      );\n\n      // Flatten headers\n      config.headers = utils.merge(\n        config.headers.common || {},\n        config.headers[config.method] || {},\n        config.headers\n      );\n\n      utils.forEach(\n        ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n        function cleanHeaderConfig(method) {\n          delete config.headers[method];\n        }\n      );\n\n      var adapter = config.adapter || defaults_1.adapter;\n\n      return adapter(config).then(function onAdapterResolution(response) {\n        throwIfCancellationRequested(config);\n\n        // Transform response data\n        response.data = transformData(\n          response.data,\n          response.headers,\n          config.transformResponse\n        );\n\n        return response;\n      }, function onAdapterRejection(reason) {\n        if (!isCancel(reason)) {\n          throwIfCancellationRequested(config);\n\n          // Transform response data\n          if (reason && reason.response) {\n            reason.response.data = transformData(\n              reason.response.data,\n              reason.response.headers,\n              config.transformResponse\n            );\n          }\n        }\n\n        return Promise.reject(reason);\n      });\n    };\n\n    /**\n     * Config-specific merge-function which creates a new config-object\n     * by merging two configuration objects together.\n     *\n     * @param {Object} config1\n     * @param {Object} config2\n     * @returns {Object} New object resulting from merging config2 to config1\n     */\n    var mergeConfig = function mergeConfig(config1, config2) {\n      // eslint-disable-next-line no-param-reassign\n      config2 = config2 || {};\n      var config = {};\n\n      var valueFromConfig2Keys = ['url', 'method', 'data'];\n      var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n      var defaultToConfig2Keys = [\n        'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n        'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n        'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n        'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n        'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n      ];\n      var directMergeKeys = ['validateStatus'];\n\n      function getMergedValue(target, source) {\n        if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n          return utils.merge(target, source);\n        } else if (utils.isPlainObject(source)) {\n          return utils.merge({}, source);\n        } else if (utils.isArray(source)) {\n          return source.slice();\n        }\n        return source;\n      }\n\n      function mergeDeepProperties(prop) {\n        if (!utils.isUndefined(config2[prop])) {\n          config[prop] = getMergedValue(config1[prop], config2[prop]);\n        } else if (!utils.isUndefined(config1[prop])) {\n          config[prop] = getMergedValue(undefined, config1[prop]);\n        }\n      }\n\n      utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n        if (!utils.isUndefined(config2[prop])) {\n          config[prop] = getMergedValue(undefined, config2[prop]);\n        }\n      });\n\n      utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n      utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n        if (!utils.isUndefined(config2[prop])) {\n          config[prop] = getMergedValue(undefined, config2[prop]);\n        } else if (!utils.isUndefined(config1[prop])) {\n          config[prop] = getMergedValue(undefined, config1[prop]);\n        }\n      });\n\n      utils.forEach(directMergeKeys, function merge(prop) {\n        if (prop in config2) {\n          config[prop] = getMergedValue(config1[prop], config2[prop]);\n        } else if (prop in config1) {\n          config[prop] = getMergedValue(undefined, config1[prop]);\n        }\n      });\n\n      var axiosKeys = valueFromConfig2Keys\n        .concat(mergeDeepPropertiesKeys)\n        .concat(defaultToConfig2Keys)\n        .concat(directMergeKeys);\n\n      var otherKeys = Object\n        .keys(config1)\n        .concat(Object.keys(config2))\n        .filter(function filterAxiosKeys(key) {\n          return axiosKeys.indexOf(key) === -1;\n        });\n\n      utils.forEach(otherKeys, mergeDeepProperties);\n\n      return config;\n    };\n\n    /**\n     * Create a new instance of Axios\n     *\n     * @param {Object} instanceConfig The default config for the instance\n     */\n    function Axios(instanceConfig) {\n      this.defaults = instanceConfig;\n      this.interceptors = {\n        request: new InterceptorManager_1(),\n        response: new InterceptorManager_1()\n      };\n    }\n\n    /**\n     * Dispatch a request\n     *\n     * @param {Object} config The config specific for this request (merged with this.defaults)\n     */\n    Axios.prototype.request = function request(config) {\n      /*eslint no-param-reassign:0*/\n      // Allow for axios('example/url'[, config]) a la fetch API\n      if (typeof config === 'string') {\n        config = arguments[1] || {};\n        config.url = arguments[0];\n      } else {\n        config = config || {};\n      }\n\n      config = mergeConfig(this.defaults, config);\n\n      // Set config.method\n      if (config.method) {\n        config.method = config.method.toLowerCase();\n      } else if (this.defaults.method) {\n        config.method = this.defaults.method.toLowerCase();\n      } else {\n        config.method = 'get';\n      }\n\n      // Hook up interceptors middleware\n      var chain = [dispatchRequest, undefined];\n      var promise = Promise.resolve(config);\n\n      this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n        chain.unshift(interceptor.fulfilled, interceptor.rejected);\n      });\n\n      this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n        chain.push(interceptor.fulfilled, interceptor.rejected);\n      });\n\n      while (chain.length) {\n        promise = promise.then(chain.shift(), chain.shift());\n      }\n\n      return promise;\n    };\n\n    Axios.prototype.getUri = function getUri(config) {\n      config = mergeConfig(this.defaults, config);\n      return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n    };\n\n    // Provide aliases for supported request methods\n    utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n      /*eslint func-names:0*/\n      Axios.prototype[method] = function(url, config) {\n        return this.request(mergeConfig(config || {}, {\n          method: method,\n          url: url,\n          data: (config || {}).data\n        }));\n      };\n    });\n\n    utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n      /*eslint func-names:0*/\n      Axios.prototype[method] = function(url, data, config) {\n        return this.request(mergeConfig(config || {}, {\n          method: method,\n          url: url,\n          data: data\n        }));\n      };\n    });\n\n    var Axios_1 = Axios;\n\n    /**\n     * A `Cancel` is an object that is thrown when an operation is canceled.\n     *\n     * @class\n     * @param {string=} message The message.\n     */\n    function Cancel(message) {\n      this.message = message;\n    }\n\n    Cancel.prototype.toString = function toString() {\n      return 'Cancel' + (this.message ? ': ' + this.message : '');\n    };\n\n    Cancel.prototype.__CANCEL__ = true;\n\n    var Cancel_1 = Cancel;\n\n    /**\n     * A `CancelToken` is an object that can be used to request cancellation of an operation.\n     *\n     * @class\n     * @param {Function} executor The executor function.\n     */\n    function CancelToken(executor) {\n      if (typeof executor !== 'function') {\n        throw new TypeError('executor must be a function.');\n      }\n\n      var resolvePromise;\n      this.promise = new Promise(function promiseExecutor(resolve) {\n        resolvePromise = resolve;\n      });\n\n      var token = this;\n      executor(function cancel(message) {\n        if (token.reason) {\n          // Cancellation has already been requested\n          return;\n        }\n\n        token.reason = new Cancel_1(message);\n        resolvePromise(token.reason);\n      });\n    }\n\n    /**\n     * Throws a `Cancel` if cancellation has been requested.\n     */\n    CancelToken.prototype.throwIfRequested = function throwIfRequested() {\n      if (this.reason) {\n        throw this.reason;\n      }\n    };\n\n    /**\n     * Returns an object that contains a new `CancelToken` and a function that, when called,\n     * cancels the `CancelToken`.\n     */\n    CancelToken.source = function source() {\n      var cancel;\n      var token = new CancelToken(function executor(c) {\n        cancel = c;\n      });\n      return {\n        token: token,\n        cancel: cancel\n      };\n    };\n\n    var CancelToken_1 = CancelToken;\n\n    /**\n     * Syntactic sugar for invoking a function and expanding an array for arguments.\n     *\n     * Common use case would be to use `Function.prototype.apply`.\n     *\n     *  ```js\n     *  function f(x, y, z) {}\n     *  var args = [1, 2, 3];\n     *  f.apply(null, args);\n     *  ```\n     *\n     * With `spread` this example can be re-written.\n     *\n     *  ```js\n     *  spread(function(x, y, z) {})([1, 2, 3]);\n     *  ```\n     *\n     * @param {Function} callback\n     * @returns {Function}\n     */\n    var spread = function spread(callback) {\n      return function wrap(arr) {\n        return callback.apply(null, arr);\n      };\n    };\n\n    /**\n     * Determines whether the payload is an error thrown by Axios\n     *\n     * @param {*} payload The value to test\n     * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n     */\n    var isAxiosError = function isAxiosError(payload) {\n      return (typeof payload === 'object') && (payload.isAxiosError === true);\n    };\n\n    /**\n     * Create an instance of Axios\n     *\n     * @param {Object} defaultConfig The default config for the instance\n     * @return {Axios} A new instance of Axios\n     */\n    function createInstance(defaultConfig) {\n      var context = new Axios_1(defaultConfig);\n      var instance = bind(Axios_1.prototype.request, context);\n\n      // Copy axios.prototype to instance\n      utils.extend(instance, Axios_1.prototype, context);\n\n      // Copy context to instance\n      utils.extend(instance, context);\n\n      return instance;\n    }\n\n    // Create the default instance to be exported\n    var axios$1 = createInstance(defaults_1);\n\n    // Expose Axios class to allow class inheritance\n    axios$1.Axios = Axios_1;\n\n    // Factory for creating new instances\n    axios$1.create = function create(instanceConfig) {\n      return createInstance(mergeConfig(axios$1.defaults, instanceConfig));\n    };\n\n    // Expose Cancel & CancelToken\n    axios$1.Cancel = Cancel_1;\n    axios$1.CancelToken = CancelToken_1;\n    axios$1.isCancel = isCancel;\n\n    // Expose all/spread\n    axios$1.all = function all(promises) {\n      return Promise.all(promises);\n    };\n    axios$1.spread = spread;\n\n    // Expose isAxiosError\n    axios$1.isAxiosError = isAxiosError;\n\n    var axios_1 = axios$1;\n\n    // Allow use of default import syntax in TypeScript\n    var _default = axios$1;\n    axios_1.default = _default;\n\n    var axios = axios_1;\n\n    importOrderCheck();\n    var AlpineFetchMagicMethod = {\n      start: function start() {\n        checkForAlpine();\n        Alpine.addMagicProperty('fetch', this.fetch.bind(null, null));\n        Alpine.addMagicProperty('get', this.fetch.bind(null, 'get'));\n        Alpine.addMagicProperty('post', this.fetch.bind(null, 'post'));\n      },\n      fetch: function fetch(method) {\n        return async function (parameters, data) {\n          if (data === void 0) {\n            data = {};\n          }\n\n          function findResponse(response) {\n            return Object.prototype.hasOwnProperty.call(response, 'data') ? response.data : response;\n          } // Using $post or $get\n\n\n          if (method) {\n            var _axios;\n\n            return await axios((_axios = {\n              url: parameters,\n              method: method\n            }, _axios[method === 'post' ? 'data' : 'params'] = data, _axios)).then(function (response) {\n              return findResponse(response);\n            });\n          }\n\n          if (typeof parameters === 'string') {\n            // Using $fetch('url')\n            return await axios.get(parameters).then(function (response) {\n              return findResponse(response);\n            });\n          } // Using $fetch({ // axios config })\n\n\n          return await axios(parameters);\n        };\n      }\n    };\n\n    var alpine$8 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineFetchMagicMethod.start();\n      alpine$8(callback);\n    };\n\n    importOrderCheck();\n    var AlpineIntervalMagicMethod = {\n      start: function start() {\n        checkForAlpine();\n        Alpine.addMagicProperty('interval', function ($el) {\n          return function () {\n            var _this = this;\n\n            for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) {\n              parameters[_key] = arguments[_key];\n            }\n\n            if (typeof parameters[0] !== 'function') return parameters[0];\n            var timer = parameters[1];\n            var delay = 0;\n            var forceInterval = false; // Users can pass in an object as a second parameter instead\n\n            if (typeof parameters[1] === 'object') {\n              if (Object.prototype.hasOwnProperty.call(parameters[1], 'timer')) {\n                timer = parameters[1].timer;\n              }\n\n              if (Object.prototype.hasOwnProperty.call(parameters[1], 'delay')) {\n                delay = parameters[1].delay;\n              }\n\n              if (Object.prototype.hasOwnProperty.call(parameters[1], 'forceInterval')) {\n                forceInterval = parameters[1].forceInterval;\n              }\n            }\n\n            var autoIntervalLoop = null;\n\n            var loop = function loop() {\n              autoIntervalLoop = setTimeout(function () {\n                parameters[0].call(_this);\n                forceInterval ? loop() : requestAnimationFrame(loop);\n              }, timer);\n            };\n\n            autoIntervalLoop = setTimeout(function () {\n              forceInterval ? loop() : requestAnimationFrame(loop);\n            }, delay);\n            this.$watch('autoIntervalTest', function (test) {\n              if (test) {\n                forceInterval ? loop() : requestAnimationFrame(loop);\n              } else {\n                clearTimeout(autoIntervalLoop);\n              }\n            });\n          };\n        });\n      }\n    };\n\n    var alpine$7 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineIntervalMagicMethod.start();\n      alpine$7(callback);\n    };\n\n    importOrderCheck();\n    var AlpineRangeMagicMethod = {\n      start: function start() {\n        checkForAlpine();\n        Alpine.addMagicProperty('range', function () {\n          return function (start, stop, step) {\n            if (step === void 0) {\n              step = 1;\n            }\n\n            // Accept $range(10) and expect 1...10\n            if (typeof stop === 'undefined') {\n              stop = start;\n              start = start ? 1 : 0;\n            } // Accept $range(20, 10) and expect 20...10\n\n\n            var reverse = start > stop;\n\n            if (reverse) {\n              var _ref = [stop, start];\n              start = _ref[0];\n              stop = _ref[1];\n            } // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Sequence_generator_range\n\n\n            var range = Array.from({\n              length: (stop - start) / step + 1\n            }, function (_, i) {\n              return start + i * step;\n            });\n            return reverse ? range.reverse() : range;\n          };\n        });\n      }\n    };\n\n    var alpine$6 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineRangeMagicMethod.start();\n      alpine$6(callback);\n    };\n\n    importOrderCheck();\n    var AlpineRefreshMagicMethod = {\n      start: function start() {\n        checkForAlpine();\n        Alpine.addMagicProperty('refresh', function ($el) {\n          if (!$el.__x) {\n            return function () {};\n          }\n\n          return function (component) {\n            if (component === void 0) {\n              component = $el;\n            }\n\n            return component.__x.updateElements(component);\n          };\n        });\n      }\n    };\n\n    var alpine$5 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineRefreshMagicMethod.start();\n      alpine$5(callback);\n    };\n\n    var Config = /*#__PURE__*/function () {\n      function Config() {\n        var _this = this;\n\n        this.values = {\n          breakpoints: {\n            xs: 0,\n            sm: 640,\n            md: 768,\n            lg: 1024,\n            xl: 1280,\n            '2xl': 1536\n          }\n        }; // After all assets are loaded but before the page is actually ready when ALpine will kick in\n\n        document.addEventListener('readystatechange', function () {\n          if (document.readyState === 'interactive' && window.AlpineMagicHelpersConfig) {\n            for (var index in window.AlpineMagicHelpersConfig) {\n              _this.values[index] = window.AlpineMagicHelpersConfig[index];\n            }\n          }\n        });\n      }\n\n      var _proto = Config.prototype;\n\n      _proto.get = function get(property) {\n        return this.values[property] ? this.values[property] : null;\n      };\n\n      return Config;\n    }();\n\n    var config = new Config();\n\n    importOrderCheck(); // Collection of components that contains `$screen` helper usecase\n\n    var screenComponents = []; // Debounce `updateElements` method to prevent memory leak\n\n    var debouncedScreensUpdate = function debouncedScreensUpdate() {\n      var update; // Update component if $el is in `screenComponents`\n\n      var updateScreens = function updateScreens() {\n        clearTimeout(update);\n        update = setTimeout(function () {\n          screenComponents.forEach(function ($el) {\n            return $el && $el.__x && $el.__x.updateElements($el);\n          });\n        }, 150);\n      };\n\n      return updateScreens;\n    };\n\n    var AlpineScreenMagicMethod = {\n      start: function start() {\n        checkForAlpine(); // Bind `debouncedScreensUpdate` to resize event on window\n        // Note that `resize` event will be triggered on `orientationchange` event as well\n\n        window.addEventListener('resize', debouncedScreensUpdate());\n        Alpine.addMagicProperty('screen', function ($el) {\n          // Push $el if it's not in the `screenComponents`\n          if (!screenComponents.includes($el)) {\n            screenComponents.push($el);\n          }\n\n          return function (breakpoint) {\n            // Get current window width\n            var width = window.innerWidth; // Early return if breakpoint is provided as number\n\n            if (Number.isInteger(breakpoint)) return breakpoint <= width; // Get breakpoints from Config\n\n            var configBreakpoints = config.get('breakpoints'); // Check if breakpoint exists\n\n            if (configBreakpoints[breakpoint] === undefined) {\n              throw Error('Undefined $screen property: ' + breakpoint);\n            } // Finally compare breakpoint with window width and return as boolean\n\n\n            return configBreakpoints[breakpoint] <= width;\n          };\n        });\n      }\n    };\n\n    var alpine$4 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineScreenMagicMethod.start();\n      alpine$4(callback);\n    };\n\n    var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n    function createCommonjsModule(fn) {\n      var module = { exports: {} };\n    \treturn fn(module, module.exports), module.exports;\n    }\n\n    /* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n\n    var smoothscroll = createCommonjsModule(function (module, exports) {\n    (function () {\n\n      // polyfill\n      function polyfill() {\n        // aliases\n        var w = window;\n        var d = document;\n\n        // return if scroll behavior is supported and polyfill is not forced\n        if (\n          'scrollBehavior' in d.documentElement.style &&\n          w.__forceSmoothScrollPolyfill__ !== true\n        ) {\n          return;\n        }\n\n        // globals\n        var Element = w.HTMLElement || w.Element;\n        var SCROLL_TIME = 468;\n\n        // object gathering original scroll methods\n        var original = {\n          scroll: w.scroll || w.scrollTo,\n          scrollBy: w.scrollBy,\n          elementScroll: Element.prototype.scroll || scrollElement,\n          scrollIntoView: Element.prototype.scrollIntoView\n        };\n\n        // define timing method\n        var now =\n          w.performance && w.performance.now\n            ? w.performance.now.bind(w.performance)\n            : Date.now;\n\n        /**\n         * indicates if a the current browser is made by Microsoft\n         * @method isMicrosoftBrowser\n         * @param {String} userAgent\n         * @returns {Boolean}\n         */\n        function isMicrosoftBrowser(userAgent) {\n          var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n          return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n        }\n\n        /*\n         * IE has rounding bug rounding down clientHeight and clientWidth and\n         * rounding up scrollHeight and scrollWidth causing false positives\n         * on hasScrollableSpace\n         */\n        var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n        /**\n         * changes scroll position inside an element\n         * @method scrollElement\n         * @param {Number} x\n         * @param {Number} y\n         * @returns {undefined}\n         */\n        function scrollElement(x, y) {\n          this.scrollLeft = x;\n          this.scrollTop = y;\n        }\n\n        /**\n         * returns result of applying ease math function to a number\n         * @method ease\n         * @param {Number} k\n         * @returns {Number}\n         */\n        function ease(k) {\n          return 0.5 * (1 - Math.cos(Math.PI * k));\n        }\n\n        /**\n         * indicates if a smooth behavior should be applied\n         * @method shouldBailOut\n         * @param {Number|Object} firstArg\n         * @returns {Boolean}\n         */\n        function shouldBailOut(firstArg) {\n          if (\n            firstArg === null ||\n            typeof firstArg !== 'object' ||\n            firstArg.behavior === undefined ||\n            firstArg.behavior === 'auto' ||\n            firstArg.behavior === 'instant'\n          ) {\n            // first argument is not an object/null\n            // or behavior is auto, instant or undefined\n            return true;\n          }\n\n          if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n            // first argument is an object and behavior is smooth\n            return false;\n          }\n\n          // throw error when behavior is not supported\n          throw new TypeError(\n            'behavior member of ScrollOptions ' +\n              firstArg.behavior +\n              ' is not a valid value for enumeration ScrollBehavior.'\n          );\n        }\n\n        /**\n         * indicates if an element has scrollable space in the provided axis\n         * @method hasScrollableSpace\n         * @param {Node} el\n         * @param {String} axis\n         * @returns {Boolean}\n         */\n        function hasScrollableSpace(el, axis) {\n          if (axis === 'Y') {\n            return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n          }\n\n          if (axis === 'X') {\n            return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n          }\n        }\n\n        /**\n         * indicates if an element has a scrollable overflow property in the axis\n         * @method canOverflow\n         * @param {Node} el\n         * @param {String} axis\n         * @returns {Boolean}\n         */\n        function canOverflow(el, axis) {\n          var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n          return overflowValue === 'auto' || overflowValue === 'scroll';\n        }\n\n        /**\n         * indicates if an element can be scrolled in either axis\n         * @method isScrollable\n         * @param {Node} el\n         * @param {String} axis\n         * @returns {Boolean}\n         */\n        function isScrollable(el) {\n          var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n          var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n          return isScrollableY || isScrollableX;\n        }\n\n        /**\n         * finds scrollable parent of an element\n         * @method findScrollableParent\n         * @param {Node} el\n         * @returns {Node} el\n         */\n        function findScrollableParent(el) {\n          while (el !== d.body && isScrollable(el) === false) {\n            el = el.parentNode || el.host;\n          }\n\n          return el;\n        }\n\n        /**\n         * self invoked function that, given a context, steps through scrolling\n         * @method step\n         * @param {Object} context\n         * @returns {undefined}\n         */\n        function step(context) {\n          var time = now();\n          var value;\n          var currentX;\n          var currentY;\n          var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n          // avoid elapsed times higher than one\n          elapsed = elapsed > 1 ? 1 : elapsed;\n\n          // apply easing to elapsed time\n          value = ease(elapsed);\n\n          currentX = context.startX + (context.x - context.startX) * value;\n          currentY = context.startY + (context.y - context.startY) * value;\n\n          context.method.call(context.scrollable, currentX, currentY);\n\n          // scroll more if we have not reached our destination\n          if (currentX !== context.x || currentY !== context.y) {\n            w.requestAnimationFrame(step.bind(w, context));\n          }\n        }\n\n        /**\n         * scrolls window or element with a smooth behavior\n         * @method smoothScroll\n         * @param {Object|Node} el\n         * @param {Number} x\n         * @param {Number} y\n         * @returns {undefined}\n         */\n        function smoothScroll(el, x, y) {\n          var scrollable;\n          var startX;\n          var startY;\n          var method;\n          var startTime = now();\n\n          // define scroll context\n          if (el === d.body) {\n            scrollable = w;\n            startX = w.scrollX || w.pageXOffset;\n            startY = w.scrollY || w.pageYOffset;\n            method = original.scroll;\n          } else {\n            scrollable = el;\n            startX = el.scrollLeft;\n            startY = el.scrollTop;\n            method = scrollElement;\n          }\n\n          // scroll looping over a frame\n          step({\n            scrollable: scrollable,\n            method: method,\n            startTime: startTime,\n            startX: startX,\n            startY: startY,\n            x: x,\n            y: y\n          });\n        }\n\n        // ORIGINAL METHODS OVERRIDES\n        // w.scroll and w.scrollTo\n        w.scroll = w.scrollTo = function() {\n          // avoid action when no arguments are passed\n          if (arguments[0] === undefined) {\n            return;\n          }\n\n          // avoid smooth behavior if not required\n          if (shouldBailOut(arguments[0]) === true) {\n            original.scroll.call(\n              w,\n              arguments[0].left !== undefined\n                ? arguments[0].left\n                : typeof arguments[0] !== 'object'\n                  ? arguments[0]\n                  : w.scrollX || w.pageXOffset,\n              // use top prop, second argument if present or fallback to scrollY\n              arguments[0].top !== undefined\n                ? arguments[0].top\n                : arguments[1] !== undefined\n                  ? arguments[1]\n                  : w.scrollY || w.pageYOffset\n            );\n\n            return;\n          }\n\n          // LET THE SMOOTHNESS BEGIN!\n          smoothScroll.call(\n            w,\n            d.body,\n            arguments[0].left !== undefined\n              ? ~~arguments[0].left\n              : w.scrollX || w.pageXOffset,\n            arguments[0].top !== undefined\n              ? ~~arguments[0].top\n              : w.scrollY || w.pageYOffset\n          );\n        };\n\n        // w.scrollBy\n        w.scrollBy = function() {\n          // avoid action when no arguments are passed\n          if (arguments[0] === undefined) {\n            return;\n          }\n\n          // avoid smooth behavior if not required\n          if (shouldBailOut(arguments[0])) {\n            original.scrollBy.call(\n              w,\n              arguments[0].left !== undefined\n                ? arguments[0].left\n                : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n              arguments[0].top !== undefined\n                ? arguments[0].top\n                : arguments[1] !== undefined ? arguments[1] : 0\n            );\n\n            return;\n          }\n\n          // LET THE SMOOTHNESS BEGIN!\n          smoothScroll.call(\n            w,\n            d.body,\n            ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n            ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n          );\n        };\n\n        // Element.prototype.scroll and Element.prototype.scrollTo\n        Element.prototype.scroll = Element.prototype.scrollTo = function() {\n          // avoid action when no arguments are passed\n          if (arguments[0] === undefined) {\n            return;\n          }\n\n          // avoid smooth behavior if not required\n          if (shouldBailOut(arguments[0]) === true) {\n            // if one number is passed, throw error to match Firefox implementation\n            if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n              throw new SyntaxError('Value could not be converted');\n            }\n\n            original.elementScroll.call(\n              this,\n              // use left prop, first number argument or fallback to scrollLeft\n              arguments[0].left !== undefined\n                ? ~~arguments[0].left\n                : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n              // use top prop, second argument or fallback to scrollTop\n              arguments[0].top !== undefined\n                ? ~~arguments[0].top\n                : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n            );\n\n            return;\n          }\n\n          var left = arguments[0].left;\n          var top = arguments[0].top;\n\n          // LET THE SMOOTHNESS BEGIN!\n          smoothScroll.call(\n            this,\n            this,\n            typeof left === 'undefined' ? this.scrollLeft : ~~left,\n            typeof top === 'undefined' ? this.scrollTop : ~~top\n          );\n        };\n\n        // Element.prototype.scrollBy\n        Element.prototype.scrollBy = function() {\n          // avoid action when no arguments are passed\n          if (arguments[0] === undefined) {\n            return;\n          }\n\n          // avoid smooth behavior if not required\n          if (shouldBailOut(arguments[0]) === true) {\n            original.elementScroll.call(\n              this,\n              arguments[0].left !== undefined\n                ? ~~arguments[0].left + this.scrollLeft\n                : ~~arguments[0] + this.scrollLeft,\n              arguments[0].top !== undefined\n                ? ~~arguments[0].top + this.scrollTop\n                : ~~arguments[1] + this.scrollTop\n            );\n\n            return;\n          }\n\n          this.scroll({\n            left: ~~arguments[0].left + this.scrollLeft,\n            top: ~~arguments[0].top + this.scrollTop,\n            behavior: arguments[0].behavior\n          });\n        };\n\n        // Element.prototype.scrollIntoView\n        Element.prototype.scrollIntoView = function() {\n          // avoid smooth behavior if not required\n          if (shouldBailOut(arguments[0]) === true) {\n            original.scrollIntoView.call(\n              this,\n              arguments[0] === undefined ? true : arguments[0]\n            );\n\n            return;\n          }\n\n          // LET THE SMOOTHNESS BEGIN!\n          var scrollableParent = findScrollableParent(this);\n          var parentRects = scrollableParent.getBoundingClientRect();\n          var clientRects = this.getBoundingClientRect();\n\n          if (scrollableParent !== d.body) {\n            // reveal element inside parent\n            smoothScroll.call(\n              this,\n              scrollableParent,\n              scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n              scrollableParent.scrollTop + clientRects.top - parentRects.top\n            );\n\n            // reveal parent in viewport unless is fixed\n            if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n              w.scrollBy({\n                left: parentRects.left,\n                top: parentRects.top,\n                behavior: 'smooth'\n              });\n            }\n          } else {\n            // reveal element in viewport\n            w.scrollBy({\n              left: clientRects.left,\n              top: clientRects.top,\n              behavior: 'smooth'\n            });\n          }\n        };\n      }\n\n      {\n        // commonjs\n        module.exports = { polyfill: polyfill };\n      }\n\n    }());\n    });\n\n    importOrderCheck();\n    smoothscroll.polyfill();\n    var AlpineScrollMagicMethod = {\n      start: function start() {\n        checkForAlpine();\n        Alpine.addMagicProperty('scroll', function () {\n          return function (target, options) {\n            if (options === void 0) {\n              options = {};\n            }\n\n            var originalTarget = target; // Check if we specified an offset\n\n            var offset = options.offset ? parseInt(options.offset, 10) : 0;\n            delete options.offset; // Support integers specified as strings\n            // We do a strict check first because we don't whant to support things like \"100foo\"\n\n            if (typeof target === 'string' && /^[0-9]+?/g.test(target)) {\n              target = parseInt(target, 10);\n            } // Support for CSS query selector\n\n\n            if (typeof target === 'string') {\n              target = document.querySelector(target);\n            } // If we got an element, get the y coordinate relative to the document\n            // This could happens if we trasform a selector or if we pass an Element in,\n            // for example using $ref['something']\n\n\n            if (target instanceof Element) {\n              target = Math.floor(target.getBoundingClientRect().top + window.pageYOffset);\n            } // If target has been converted to the y coordinate or was an object to begin with\n            // we transform it to a ScrollToOptions dictionary\n\n\n            if (Number.isInteger(target)) {\n              target = {\n                top: target - offset,\n                behavior: 'smooth' // default to smooth\n\n              };\n            } // At this point target should be either be converted to a ScrollToOptions dictionary\n            // or should have been an object to begin with. If it isn't, it's time to give up.\n\n\n            if (typeof target !== 'object') {\n              throw Error('Unsupported $scroll target: ', originalTarget);\n            } // Override the dictionary with the options passed as second params\n\n\n            Object.assign(target, options); // Let's scroll eventually\n\n            window.scroll(target);\n          };\n        });\n      }\n    };\n\n    var alpine$3 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineScrollMagicMethod.start();\n      alpine$3(callback);\n    };\n\n    importOrderCheck();\n    var AlpineTruncateMagicMethod = {\n      start: function start() {\n        var _this = this;\n\n        checkForAlpine();\n        Alpine.addMagicProperty('truncate', function () {\n          return function () {\n            for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) {\n              parameters[_key] = arguments[_key];\n            }\n\n            if (typeof parameters[0] !== 'string') return parameters[0]; // If the second parameter isn't truthy, return the full string\n\n            if (!parameters[1]) return parameters[0]; // if only a number or string is passed in, keep it simple\n\n            if (typeof parameters[1] !== 'object') {\n              return _this.appendEllipsis(parameters[0].slice(0, parameters[1]), parameters);\n            } // If words or characters is set, also check that they are truthy. Setting to 0, for example, shoudld show all\n\n\n            if (Object.prototype.hasOwnProperty.call(parameters[1], 'words') && parameters[1].words) {\n              return _this.appendEllipsis(parameters[0].split(' ').splice(0, parameters[1].words).join(' '), parameters);\n            }\n\n            if (Object.prototype.hasOwnProperty.call(parameters[1], 'characters') && parameters[1].characters) {\n              return _this.appendEllipsis(parameters[0].slice(0, parameters[1].characters), parameters);\n            }\n\n            return parameters[0];\n          };\n        });\n      },\n      appendEllipsis: function appendEllipsis(string, parameters) {\n        if (parameters[0].length <= string.length) return string;\n        var ellipsis = '\u2026'; // 3rd parameter is an optional '\u2026' override (soon to be deprecated)\n\n        if (typeof parameters[2] !== 'undefined') {\n          ellipsis = parameters[2];\n        } // If the second parameter is an object\n\n\n        if (Object.prototype.hasOwnProperty.call(parameters[1], 'ellipsis')) {\n          ellipsis = parameters[1].ellipsis;\n        }\n\n        return string + ellipsis;\n      }\n    };\n\n    var alpine$2 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineTruncateMagicMethod.start();\n      alpine$2(callback);\n    };\n\n    var deepDiff = createCommonjsModule(function (module, exports) {\n    (function(root, factory) { // eslint-disable-line no-extra-semi\n      var deepDiff = factory(root);\n      // eslint-disable-next-line no-undef\n      {\n          // Node.js or ReactNative\n          module.exports = deepDiff;\n      }\n    }(commonjsGlobal, function(root) {\n      var validKinds = ['N', 'E', 'A', 'D'];\n\n      // nodejs compatible on server side and in the browser.\n      function inherits(ctor, 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      function Diff(kind, path) {\n        Object.defineProperty(this, 'kind', {\n          value: kind,\n          enumerable: true\n        });\n        if (path && path.length) {\n          Object.defineProperty(this, 'path', {\n            value: path,\n            enumerable: true\n          });\n        }\n      }\n\n      function DiffEdit(path, origin, value) {\n        DiffEdit.super_.call(this, 'E', path);\n        Object.defineProperty(this, 'lhs', {\n          value: origin,\n          enumerable: true\n        });\n        Object.defineProperty(this, 'rhs', {\n          value: value,\n          enumerable: true\n        });\n      }\n      inherits(DiffEdit, Diff);\n\n      function DiffNew(path, value) {\n        DiffNew.super_.call(this, 'N', path);\n        Object.defineProperty(this, 'rhs', {\n          value: value,\n          enumerable: true\n        });\n      }\n      inherits(DiffNew, Diff);\n\n      function DiffDeleted(path, value) {\n        DiffDeleted.super_.call(this, 'D', path);\n        Object.defineProperty(this, 'lhs', {\n          value: value,\n          enumerable: true\n        });\n      }\n      inherits(DiffDeleted, Diff);\n\n      function DiffArray(path, index, item) {\n        DiffArray.super_.call(this, 'A', path);\n        Object.defineProperty(this, 'index', {\n          value: index,\n          enumerable: true\n        });\n        Object.defineProperty(this, 'item', {\n          value: item,\n          enumerable: true\n        });\n      }\n      inherits(DiffArray, Diff);\n\n      function arrayRemove(arr, from, to) {\n        var rest = arr.slice((to || from) + 1 || arr.length);\n        arr.length = from < 0 ? arr.length + from : from;\n        arr.push.apply(arr, rest);\n        return arr;\n      }\n\n      function realTypeOf(subject) {\n        var type = typeof subject;\n        if (type !== 'object') {\n          return type;\n        }\n\n        if (subject === Math) {\n          return 'math';\n        } else if (subject === null) {\n          return 'null';\n        } else if (Array.isArray(subject)) {\n          return 'array';\n        } else if (Object.prototype.toString.call(subject) === '[object Date]') {\n          return 'date';\n        } else if (typeof subject.toString === 'function' && /^\\/.*\\//.test(subject.toString())) {\n          return 'regexp';\n        }\n        return 'object';\n      }\n\n      // http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n      function hashThisString(string) {\n        var hash = 0;\n        if (string.length === 0) { return hash; }\n        for (var i = 0; i < string.length; i++) {\n          var char = string.charCodeAt(i);\n          hash = ((hash << 5) - hash) + char;\n          hash = hash & hash; // Convert to 32bit integer\n        }\n        return hash;\n      }\n\n      // Gets a hash of the given object in an array order-independent fashion\n      // also object key order independent (easier since they can be alphabetized)\n      function getOrderIndependentHash(object) {\n        var accum = 0;\n        var type = realTypeOf(object);\n\n        if (type === 'array') {\n          object.forEach(function (item) {\n            // Addition is commutative so this is order indep\n            accum += getOrderIndependentHash(item);\n          });\n\n          var arrayString = '[type: array, hash: ' + accum + ']';\n          return accum + hashThisString(arrayString);\n        }\n\n        if (type === 'object') {\n          for (var key in object) {\n            if (object.hasOwnProperty(key)) {\n              var keyValueString = '[ type: object, key: ' + key + ', value hash: ' + getOrderIndependentHash(object[key]) + ']';\n              accum += hashThisString(keyValueString);\n            }\n          }\n\n          return accum;\n        }\n\n        // Non object, non array...should be good?\n        var stringToHash = '[ type: ' + type + ' ; value: ' + object + ']';\n        return accum + hashThisString(stringToHash);\n      }\n\n      function deepDiff(lhs, rhs, changes, prefilter, path, key, stack, orderIndependent) {\n        changes = changes || [];\n        path = path || [];\n        stack = stack || [];\n        var currentPath = path.slice(0);\n        if (typeof key !== 'undefined' && key !== null) {\n          if (prefilter) {\n            if (typeof (prefilter) === 'function' && prefilter(currentPath, key)) {\n              return;\n            } else if (typeof (prefilter) === 'object') {\n              if (prefilter.prefilter && prefilter.prefilter(currentPath, key)) {\n                return;\n              }\n              if (prefilter.normalize) {\n                var alt = prefilter.normalize(currentPath, key, lhs, rhs);\n                if (alt) {\n                  lhs = alt[0];\n                  rhs = alt[1];\n                }\n              }\n            }\n          }\n          currentPath.push(key);\n        }\n\n        // Use string comparison for regexes\n        if (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp') {\n          lhs = lhs.toString();\n          rhs = rhs.toString();\n        }\n\n        var ltype = typeof lhs;\n        var rtype = typeof rhs;\n        var i, j, k, other;\n\n        var ldefined = ltype !== 'undefined' ||\n          (stack && (stack.length > 0) && stack[stack.length - 1].lhs &&\n            Object.getOwnPropertyDescriptor(stack[stack.length - 1].lhs, key));\n        var rdefined = rtype !== 'undefined' ||\n          (stack && (stack.length > 0) && stack[stack.length - 1].rhs &&\n            Object.getOwnPropertyDescriptor(stack[stack.length - 1].rhs, key));\n\n        if (!ldefined && rdefined) {\n          changes.push(new DiffNew(currentPath, rhs));\n        } else if (!rdefined && ldefined) {\n          changes.push(new DiffDeleted(currentPath, lhs));\n        } else if (realTypeOf(lhs) !== realTypeOf(rhs)) {\n          changes.push(new DiffEdit(currentPath, lhs, rhs));\n        } else if (realTypeOf(lhs) === 'date' && (lhs - rhs) !== 0) {\n          changes.push(new DiffEdit(currentPath, lhs, rhs));\n        } else if (ltype === 'object' && lhs !== null && rhs !== null) {\n          for (i = stack.length - 1; i > -1; --i) {\n            if (stack[i].lhs === lhs) {\n              other = true;\n              break;\n            }\n          }\n          if (!other) {\n            stack.push({ lhs: lhs, rhs: rhs });\n            if (Array.isArray(lhs)) {\n              // If order doesn't matter, we need to sort our arrays\n              if (orderIndependent) {\n                lhs.sort(function (a, b) {\n                  return getOrderIndependentHash(a) - getOrderIndependentHash(b);\n                });\n\n                rhs.sort(function (a, b) {\n                  return getOrderIndependentHash(a) - getOrderIndependentHash(b);\n                });\n              }\n              i = rhs.length - 1;\n              j = lhs.length - 1;\n              while (i > j) {\n                changes.push(new DiffArray(currentPath, i, new DiffNew(undefined, rhs[i--])));\n              }\n              while (j > i) {\n                changes.push(new DiffArray(currentPath, j, new DiffDeleted(undefined, lhs[j--])));\n              }\n              for (; i >= 0; --i) {\n                deepDiff(lhs[i], rhs[i], changes, prefilter, currentPath, i, stack, orderIndependent);\n              }\n            } else {\n              var akeys = Object.keys(lhs);\n              var pkeys = Object.keys(rhs);\n              for (i = 0; i < akeys.length; ++i) {\n                k = akeys[i];\n                other = pkeys.indexOf(k);\n                if (other >= 0) {\n                  deepDiff(lhs[k], rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);\n                  pkeys[other] = null;\n                } else {\n                  deepDiff(lhs[k], undefined, changes, prefilter, currentPath, k, stack, orderIndependent);\n                }\n              }\n              for (i = 0; i < pkeys.length; ++i) {\n                k = pkeys[i];\n                if (k) {\n                  deepDiff(undefined, rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);\n                }\n              }\n            }\n            stack.length = stack.length - 1;\n          } else if (lhs !== rhs) {\n            // lhs is contains a cycle at this element and it differs from rhs\n            changes.push(new DiffEdit(currentPath, lhs, rhs));\n          }\n        } else if (lhs !== rhs) {\n          if (!(ltype === 'number' && isNaN(lhs) && isNaN(rhs))) {\n            changes.push(new DiffEdit(currentPath, lhs, rhs));\n          }\n        }\n      }\n\n      function observableDiff(lhs, rhs, observer, prefilter, orderIndependent) {\n        var changes = [];\n        deepDiff(lhs, rhs, changes, prefilter, null, null, null, orderIndependent);\n        if (observer) {\n          for (var i = 0; i < changes.length; ++i) {\n            observer(changes[i]);\n          }\n        }\n        return changes;\n      }\n\n      function orderIndependentDeepDiff(lhs, rhs, changes, prefilter, path, key, stack) {\n        return deepDiff(lhs, rhs, changes, prefilter, path, key, stack, true);\n      }\n\n      function accumulateDiff(lhs, rhs, prefilter, accum) {\n        var observer = (accum) ?\n          function (difference) {\n            if (difference) {\n              accum.push(difference);\n            }\n          } : undefined;\n        var changes = observableDiff(lhs, rhs, observer, prefilter);\n        return (accum) ? accum : (changes.length) ? changes : undefined;\n      }\n\n      function accumulateOrderIndependentDiff(lhs, rhs, prefilter, accum) {\n        var observer = (accum) ?\n          function (difference) {\n            if (difference) {\n              accum.push(difference);\n            }\n          } : undefined;\n        var changes = observableDiff(lhs, rhs, observer, prefilter, true);\n        return (accum) ? accum : (changes.length) ? changes : undefined;\n      }\n\n      function applyArrayChange(arr, index, change) {\n        if (change.path && change.path.length) {\n          var it = arr[index],\n            i, u = change.path.length - 1;\n          for (i = 0; i < u; i++) {\n            it = it[change.path[i]];\n          }\n          switch (change.kind) {\n            case 'A':\n              applyArrayChange(it[change.path[i]], change.index, change.item);\n              break;\n            case 'D':\n              delete it[change.path[i]];\n              break;\n            case 'E':\n            case 'N':\n              it[change.path[i]] = change.rhs;\n              break;\n          }\n        } else {\n          switch (change.kind) {\n            case 'A':\n              applyArrayChange(arr[index], change.index, change.item);\n              break;\n            case 'D':\n              arr = arrayRemove(arr, index);\n              break;\n            case 'E':\n            case 'N':\n              arr[index] = change.rhs;\n              break;\n          }\n        }\n        return arr;\n      }\n\n      function applyChange(target, source, change) {\n        if (typeof change === 'undefined' && source && ~validKinds.indexOf(source.kind)) {\n          change = source;\n        }\n        if (target && change && change.kind) {\n          var it = target,\n            i = -1,\n            last = change.path ? change.path.length - 1 : 0;\n          while (++i < last) {\n            if (typeof it[change.path[i]] === 'undefined') {\n              it[change.path[i]] = (typeof change.path[i + 1] !== 'undefined' && typeof change.path[i + 1] === 'number') ? [] : {};\n            }\n            it = it[change.path[i]];\n          }\n          switch (change.kind) {\n            case 'A':\n              if (change.path && typeof it[change.path[i]] === 'undefined') {\n                it[change.path[i]] = [];\n              }\n              applyArrayChange(change.path ? it[change.path[i]] : it, change.index, change.item);\n              break;\n            case 'D':\n              delete it[change.path[i]];\n              break;\n            case 'E':\n            case 'N':\n              it[change.path[i]] = change.rhs;\n              break;\n          }\n        }\n      }\n\n      function revertArrayChange(arr, index, change) {\n        if (change.path && change.path.length) {\n          // the structure of the object at the index has changed...\n          var it = arr[index],\n            i, u = change.path.length - 1;\n          for (i = 0; i < u; i++) {\n            it = it[change.path[i]];\n          }\n          switch (change.kind) {\n            case 'A':\n              revertArrayChange(it[change.path[i]], change.index, change.item);\n              break;\n            case 'D':\n              it[change.path[i]] = change.lhs;\n              break;\n            case 'E':\n              it[change.path[i]] = change.lhs;\n              break;\n            case 'N':\n              delete it[change.path[i]];\n              break;\n          }\n        } else {\n          // the array item is different...\n          switch (change.kind) {\n            case 'A':\n              revertArrayChange(arr[index], change.index, change.item);\n              break;\n            case 'D':\n              arr[index] = change.lhs;\n              break;\n            case 'E':\n              arr[index] = change.lhs;\n              break;\n            case 'N':\n              arr = arrayRemove(arr, index);\n              break;\n          }\n        }\n        return arr;\n      }\n\n      function revertChange(target, source, change) {\n        if (target && source && change && change.kind) {\n          var it = target,\n            i, u;\n          u = change.path.length - 1;\n          for (i = 0; i < u; i++) {\n            if (typeof it[change.path[i]] === 'undefined') {\n              it[change.path[i]] = {};\n            }\n            it = it[change.path[i]];\n          }\n          switch (change.kind) {\n            case 'A':\n              // Array was modified...\n              // it will be an array...\n              revertArrayChange(it[change.path[i]], change.index, change.item);\n              break;\n            case 'D':\n              // Item was deleted...\n              it[change.path[i]] = change.lhs;\n              break;\n            case 'E':\n              // Item was edited...\n              it[change.path[i]] = change.lhs;\n              break;\n            case 'N':\n              // Item is new...\n              delete it[change.path[i]];\n              break;\n          }\n        }\n      }\n\n      function applyDiff(target, source, filter) {\n        if (target && source) {\n          var onChange = function (change) {\n            if (!filter || filter(target, source, change)) {\n              applyChange(target, source, change);\n            }\n          };\n          observableDiff(target, source, onChange);\n        }\n      }\n\n      Object.defineProperties(accumulateDiff, {\n\n        diff: {\n          value: accumulateDiff,\n          enumerable: true\n        },\n        orderIndependentDiff: {\n          value: accumulateOrderIndependentDiff,\n          enumerable: true\n        },\n        observableDiff: {\n          value: observableDiff,\n          enumerable: true\n        },\n        orderIndependentObservableDiff: {\n          value: orderIndependentDeepDiff,\n          enumerable: true\n        },\n        orderIndepHash: {\n          value: getOrderIndependentHash,\n          enumerable: true\n        },\n        applyDiff: {\n          value: applyDiff,\n          enumerable: true\n        },\n        applyChange: {\n          value: applyChange,\n          enumerable: true\n        },\n        revertChange: {\n          value: revertChange,\n          enumerable: true\n        },\n        isConflict: {\n          value: function () {\n            return typeof $conflict !== 'undefined';\n          },\n          enumerable: true\n        }\n      });\n\n      // hackish...\n      accumulateDiff.DeepDiff = accumulateDiff;\n      // ...but works with:\n      // import DeepDiff from 'deep-diff'\n      // import { DeepDiff } from 'deep-diff'\n      // const DeepDiff = require('deep-diff');\n      // const { DeepDiff } = require('deep-diff');\n\n      if (root) {\n        root.DeepDiff = accumulateDiff;\n      }\n\n      return accumulateDiff;\n    }));\n    });\n\n    importOrderCheck();\n    var history = new WeakMap();\n    var AlpineUndoMagicMethod = {\n      start: function start() {\n        var _this = this;\n\n        checkForAlpine();\n        Alpine.addMagicProperty('track', function ($el) {\n          return function (propertiesToWatch) {\n            var _propertiesToWatch;\n\n            propertiesToWatch = (_propertiesToWatch = propertiesToWatch) != null ? _propertiesToWatch : Object.keys(componentData($el));\n            propertiesToWatch = Array.isArray(propertiesToWatch) ? propertiesToWatch : [propertiesToWatch];\n            var initialState = JSON.stringify(componentData($el, propertiesToWatch));\n            updateOnMutation($el, function () {\n              history.has($el.__x) || _this.store($el.__x, {\n                props: propertiesToWatch,\n                previous: initialState\n              });\n              var fresh = componentData($el, history.get($el.__x).props);\n              var previous = JSON.parse(history.get($el.__x).previous);\n              var changes = deepDiff.DeepDiff.diff(previous, fresh, true);\n\n              if (changes && changes.length) {\n                changes = changes.filter(function (change) {\n                  return history.get($el.__x).props.some(function (prop) {\n                    return change.path.join('.').startsWith(prop);\n                  });\n                });\n                history.get($el.__x).previous = JSON.stringify(fresh);\n                history.get($el.__x).changes.push(changes);\n\n                $el.__x.updateElements($el);\n              }\n            });\n          };\n        });\n        Alpine.addMagicProperty('undo', function ($el, $clone) {\n          return function () {\n            if ($el !== $clone) {\n              $el = _this.syncClone($el, $clone);\n            }\n\n            var changes = history.get($el.__x).changes.pop();\n            var previous = JSON.parse(history.get($el.__x).previous);\n            changes && changes.forEach(function (change) {\n              deepDiff.DeepDiff.revertChange(previous, componentData($el, history.get($el.__x).props), change);\n            }); // This could probably be extracted to a utility method like updateComponentProperties()\n\n            if (Object.keys(previous).length) {\n              var newData = {};\n              Object.entries(previous).forEach(function (item) {\n                newData[item[0]] = item[1];\n              });\n              $el.__x.$data = Object.assign($el.__x.$data, newData);\n            }\n\n            history.get($el.__x).previous = JSON.stringify(componentData($el, history.get($el.__x).props));\n          };\n        });\n        Alpine.addMagicProperty('history', function ($el, $clone) {\n          if (!$clone.__x) return [];\n\n          if ($el !== $clone) {\n            $el = _this.syncClone($el, $clone);\n          }\n\n          return history.has($el.__x) ? history.get($el.__x) : [];\n        });\n      },\n      store: function store(key, state) {\n        history.set(key, Object.assign({\n          changes: [],\n\n          get length() {\n            return this.changes.length;\n          }\n\n        }, state));\n        return history.get(key);\n      },\n      syncClone: function syncClone($el, $clone) {\n        this.store($clone.__x, {\n          props: history.get($el.__x).props,\n          previous: history.get($el.__x).previous,\n          changes: history.get($el.__x).changes\n        });\n        return $clone;\n      }\n    };\n\n    var alpine$1 = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      alpine$1(callback);\n      AlpineUndoMagicMethod.start();\n    };\n\n    importOrderCheck();\n    var DIRECTIVE = 'unsafe-html';\n\n    var nodeScriptClone = function nodeScriptClone(node) {\n      var script = document.createElement('script');\n      script.text = node.innerHTML;\n\n      for (var i = 0; i < node.attributes.length; i++) {\n        var attr = node.attributes[i];\n        script.setAttribute(attr.name, attr.value);\n      }\n\n      return script;\n    };\n\n    var nodeScriptReplace = function nodeScriptReplace(node) {\n      if (node.tagName && node.tagName.toLowerCase() === 'script') {\n        node.parentNode.replaceChild(nodeScriptClone(node), node);\n      } else {\n        for (var i = 0; i < node.childNodes.length; i++) {\n          nodeScriptReplace(node.childNodes[i]);\n        }\n      }\n\n      return node;\n    };\n\n    var AlpineUnsafeHTMLCustomDirective = {\n      start: function start() {\n        checkForAlpine();\n        Alpine.onBeforeComponentInitialized(function (component) {\n          var legacyResolveBoundAttributes = component.resolveBoundAttributes;\n\n          component.resolveBoundAttributes = function (el, initialUpdate, extraVars) {\n            if (initialUpdate === void 0) {\n              initialUpdate = false;\n            }\n\n            var attrs = getXDirectives(el);\n            attrs.forEach(function (_ref) {\n              var type = _ref.type,\n                  expression = _ref.expression;\n\n              if (type === DIRECTIVE) {\n                el.innerHTML = component.evaluateReturnExpression(el, expression, extraVars);\n                nodeScriptReplace(el);\n              }\n            });\n            return legacyResolveBoundAttributes.bind(component)(el, initialUpdate, extraVars);\n          };\n        });\n      }\n    };\n\n    var alpine = window.deferLoadingAlpine || function (alpine) {\n      return alpine();\n    };\n\n    window.deferLoadingAlpine = function (callback) {\n      AlpineUnsafeHTMLCustomDirective.start();\n      alpine(callback);\n    };\n\n    var index = {\n      AlpineComponentMagicMethod: AlpineComponentMagicMethod,\n      AlpineFetchMagicMethod: AlpineFetchMagicMethod,\n      AlpineIntervalMagicMethod: AlpineIntervalMagicMethod,\n      AlpineRangeMagicMethod: AlpineRangeMagicMethod,\n      AlpineRefreshMagicMethod: AlpineRefreshMagicMethod,\n      AlpineScreenMagicMethod: AlpineScreenMagicMethod,\n      AlpineScrollMagicMethod: AlpineScrollMagicMethod,\n      AlpineTruncateMagicMethod: AlpineTruncateMagicMethod,\n      AlpineUndoMagicMethod: AlpineUndoMagicMethod,\n      AlpineUnsafeHTMLCustomDirective: AlpineUnsafeHTMLCustomDirective\n    };\n\n    return index;\n\n})));\n", "(function (factory) {\n  typeof define === 'function' && define.amd ? define(factory) :\n  factory();\n}((function () { 'use strict';\n\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n\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\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function isValidVersion(required, current) {\n    var requiredArray = required.split('.');\n    var currentArray = current.split('.');\n\n    for (var i = 0; i < requiredArray.length; i++) {\n      if (!currentArray[i] || currentArray[i] < requiredArray[i]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n  function beforeDomReady(callback) {\n    if (document.readyState === 'loading') {\n      document.addEventListener('readystatechange', function () {\n        if (document.readyState === 'interactive') {\n          callback();\n        }\n      });\n    } else {\n      callback();\n    }\n  }\n\n  var Bridge = /*#__PURE__*/function () {\n    function Bridge() {\n      _classCallCheck(this, Bridge);\n    }\n\n    _createClass(Bridge, [{\n      key: \"init\",\n      value: function init() {\n        // Tag all cloaked elements on first page load.\n        document.body.querySelectorAll('[x-cloak]').forEach(function (el) {\n          var _el$getAttribute;\n\n          el.setAttribute('data-alpine-was-cloaked', (_el$getAttribute = el.getAttribute('x-cloak')) !== null && _el$getAttribute !== void 0 ? _el$getAttribute : '');\n        });\n        this.configureEventHandlers();\n      }\n    }, {\n      key: \"setMutationObserverState\",\n      value: function setMutationObserverState(state) {\n        if (!window.Alpine.version || !isValidVersion('2.4.0', window.Alpine.version)) {\n          throw new Error('Invalid Alpine version. Please use Alpine 2.4.0 or above');\n        }\n\n        window.Alpine.pauseMutationObserver = !state;\n      }\n    }, {\n      key: \"configureEventHandlers\",\n      value: function configureEventHandlers() {\n        var _this = this;\n\n        // Once Turbolinks finished is magic, we initialise Alpine on the new page\n        // and resume the observer\n        var renderCallback = function renderCallback() {\n          // turbo:render fires twice in cached views but we don't want to\n          // try to restore Alpine on the preview.\n          if (document.documentElement.hasAttribute('data-turbo-preview')) {\n            return;\n          }\n\n          window.Alpine.discoverUninitializedComponents(function (el) {\n            window.Alpine.initializeComponent(el);\n          });\n          requestAnimationFrame(function () {\n            _this.setMutationObserverState(true);\n          });\n        }; // Before swapping the body, clean up any element with x-turbolinks-cached\n        // which do not have any Alpine properties.\n        // Note, at this point all html fragments marked as data-turbolinks-permanent\n        // are already copied over from the previous page so they retain their listener\n        // and custom properties and we don't want to reset them.\n\n\n        var beforeRenderCallback = function beforeRenderCallback(event) {\n          var newBody = event.data ? event.data.newBody : event.detail.newBody;\n          newBody.querySelectorAll('[data-alpine-generated-me],[x-cloak]').forEach(function (el) {\n            if (el.hasAttribute('x-cloak')) {\n              var _el$getAttribute2;\n\n              // When we get a new document body tag any cloaked elements so we can cloak\n              // them again before caching.\n              el.setAttribute('data-alpine-was-cloaked', (_el$getAttribute2 = el.getAttribute('x-cloak')) !== null && _el$getAttribute2 !== void 0 ? _el$getAttribute2 : '');\n            }\n\n            if (el.hasAttribute('data-alpine-generated-me')) {\n              el.removeAttribute('data-alpine-generated-me');\n\n              if (typeof el.__x_for_key === 'undefined' && typeof el.__x_inserted_me === 'undefined') {\n                el.remove();\n              }\n            }\n          });\n        }; // Pause the the mutation observer to avoid data races, it will be resumed by the turbolinks:load event.\n        // We mark as `data-alpine-generated-m` all elements that are crated by an Alpine templating directives.\n        // The reason is that turbolinks caches pages using cloneNode which removes listeners and custom properties\n        // So we need to propagate this infomation using a HTML attribute. I know, not ideal but I could not think\n        // of a better option.\n        // Note, we can't remove any Alpine generated element as yet because if they live inside an element\n        // marked as data-turbolinks-permanent they need to be copied into the next page.\n        // The coping process happens somewhere between before-cache and before-render.\n\n\n        var beforeCacheCallback = function beforeCacheCallback() {\n          _this.setMutationObserverState(false);\n\n          document.body.querySelectorAll('[x-for],[x-if],[data-alpine-was-cloaked]').forEach(function (el) {\n            // Cloak any elements again that were tagged when the page was loaded\n            if (el.hasAttribute('data-alpine-was-cloaked')) {\n              var _el$getAttribute3;\n\n              el.setAttribute('x-cloak', (_el$getAttribute3 = el.getAttribute('data-alpine-was-cloaked')) !== null && _el$getAttribute3 !== void 0 ? _el$getAttribute3 : '');\n              el.removeAttribute('data-alpine-was-cloaked');\n            }\n\n            if (el.hasAttribute('x-for')) {\n              var nextEl = el.nextElementSibling;\n\n              while (nextEl && typeof nextEl.__x_for_key !== 'undefined') {\n                var currEl = nextEl;\n                nextEl = nextEl.nextElementSibling;\n                currEl.setAttribute('data-alpine-generated-me', true);\n              }\n            } else if (el.hasAttribute('x-if')) {\n              var ifEl = el.nextElementSibling;\n\n              if (ifEl && typeof ifEl.__x_inserted_me !== 'undefined') {\n                ifEl.setAttribute('data-alpine-generated-me', true);\n              }\n            }\n          });\n        }; // Streams do not trigger a render event and there is no\n        // turbo:after-stream-render so we use turbo:before-stream-render\n        // and we delay 2 ticks to simulate the after-stream-render event\n\n\n        var beforeStreamFormRenderCallback = function beforeStreamFormRenderCallback() {\n          requestAnimationFrame(function () {\n            requestAnimationFrame(function () {\n              renderCallback();\n            });\n          });\n        };\n\n        document.addEventListener('turbo:render', renderCallback);\n        document.addEventListener('turbolinks:load', renderCallback);\n        document.addEventListener('turbo:before-render', beforeRenderCallback);\n        document.addEventListener('turbolinks:before-render', beforeRenderCallback);\n        document.addEventListener('turbo:before-cache', beforeCacheCallback);\n        document.addEventListener('turbolinks:before-cache', beforeCacheCallback);\n        document.addEventListener('turbo:before-stream-render', beforeStreamFormRenderCallback);\n      }\n    }]);\n\n    return Bridge;\n  }();\n\n  if (window.Alpine) {\n    console.error('Alpine-turbo-drive-adapter must be included before AlpineJs');\n  } // Polyfill for legacy browsers\n\n\n  if (!Object.getOwnPropertyDescriptor(NodeList.prototype, 'forEach')) {\n    Object.defineProperty(NodeList.prototype, 'forEach', Object.getOwnPropertyDescriptor(Array.prototype, 'forEach'));\n  } // To better suport x-cloak, we need to init the library when the DOM\n  // has been downloaded but before Alpine kicks in\n\n\n  beforeDomReady(function () {\n    var bridge = new Bridge();\n    bridge.init();\n  });\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 = global || self, global.Alpine = factory());\n}(this, (function () { 'use strict';\n\n  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\n  function 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\n  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  }\n\n  // Thanks @stimulus:\n  // https://github.com/stimulusjs/stimulus/blob/master/packages/%40stimulus/core/src/application.ts\n  function domReady() {\n    return new Promise(resolve => {\n      if (document.readyState == \"loading\") {\n        document.addEventListener(\"DOMContentLoaded\", resolve);\n      } else {\n        resolve();\n      }\n    });\n  }\n  function arrayUnique(array) {\n    return Array.from(new Set(array));\n  }\n  function isTesting() {\n    return navigator.userAgent.includes(\"Node.js\") || navigator.userAgent.includes(\"jsdom\");\n  }\n  function checkedAttrLooseCompare(valueA, valueB) {\n    return valueA == valueB;\n  }\n  function warnIfMalformedTemplate(el, directive) {\n    if (el.tagName.toLowerCase() !== 'template') {\n      console.warn(`Alpine: [${directive}] directive should only be added to <template> tags. See https://github.com/alpinejs/alpine#${directive}`);\n    } else if (el.content.childElementCount !== 1) {\n      console.warn(`Alpine: <template> tag with [${directive}] encountered with an unexpected number of root elements. Make sure <template> has a single root element. `);\n    }\n  }\n  function kebabCase(subject) {\n    return subject.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/[_\\s]/, '-').toLowerCase();\n  }\n  function camelCase(subject) {\n    return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n  }\n  function walk(el, callback) {\n    if (callback(el) === false) return;\n    let node = el.firstElementChild;\n\n    while (node) {\n      walk(node, callback);\n      node = node.nextElementSibling;\n    }\n  }\n  function debounce(func, wait) {\n    var timeout;\n    return function () {\n      var context = this,\n          args = arguments;\n\n      var later = function later() {\n        timeout = null;\n        func.apply(context, args);\n      };\n\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n    };\n  }\n\n  const handleError = (el, expression, error) => {\n    console.warn(`Alpine Error: \"${error}\"\\n\\nExpression: \"${expression}\"\\nElement:`, el);\n\n    if (!isTesting()) {\n      Object.assign(error, {\n        el,\n        expression\n      });\n      throw error;\n    }\n  };\n\n  function tryCatch(cb, {\n    el,\n    expression\n  }) {\n    try {\n      const value = cb();\n      return value instanceof Promise ? value.catch(e => handleError(el, expression, e)) : value;\n    } catch (e) {\n      handleError(el, expression, e);\n    }\n  }\n\n  function saferEval(el, expression, dataContext, additionalHelperVariables = {}) {\n    return tryCatch(() => {\n      if (typeof expression === 'function') {\n        return expression.call(dataContext);\n      }\n\n      return new Function(['$data', ...Object.keys(additionalHelperVariables)], `var __alpine_result; with($data) { __alpine_result = ${expression} }; return __alpine_result`)(dataContext, ...Object.values(additionalHelperVariables));\n    }, {\n      el,\n      expression\n    });\n  }\n  function saferEvalNoReturn(el, expression, dataContext, additionalHelperVariables = {}) {\n    return tryCatch(() => {\n      if (typeof expression === 'function') {\n        return Promise.resolve(expression.call(dataContext, additionalHelperVariables['$event']));\n      }\n\n      let AsyncFunction = Function;\n      /* MODERN-ONLY:START */\n\n      AsyncFunction = Object.getPrototypeOf(async function () {}).constructor;\n      /* MODERN-ONLY:END */\n      // For the cases when users pass only a function reference to the caller: `x-on:click=\"foo\"`\n      // Where \"foo\" is a function. Also, we'll pass the function the event instance when we call it.\n\n      if (Object.keys(dataContext).includes(expression)) {\n        let methodReference = new Function(['dataContext', ...Object.keys(additionalHelperVariables)], `with(dataContext) { return ${expression} }`)(dataContext, ...Object.values(additionalHelperVariables));\n\n        if (typeof methodReference === 'function') {\n          return Promise.resolve(methodReference.call(dataContext, additionalHelperVariables['$event']));\n        } else {\n          return Promise.resolve();\n        }\n      }\n\n      return Promise.resolve(new AsyncFunction(['dataContext', ...Object.keys(additionalHelperVariables)], `with(dataContext) { ${expression} }`)(dataContext, ...Object.values(additionalHelperVariables)));\n    }, {\n      el,\n      expression\n    });\n  }\n  const xAttrRE = /^x-(on|bind|data|text|html|model|if|for|show|cloak|transition|ref|spread)\\b/;\n  function isXAttr(attr) {\n    const name = replaceAtAndColonWithStandardSyntax(attr.name);\n    return xAttrRE.test(name);\n  }\n  function getXAttrs(el, component, type) {\n    let directives = Array.from(el.attributes).filter(isXAttr).map(parseHtmlAttribute); // Get an object of directives from x-spread.\n\n    let spreadDirective = directives.filter(directive => directive.type === 'spread')[0];\n\n    if (spreadDirective) {\n      let spreadObject = saferEval(el, spreadDirective.expression, component.$data); // Add x-spread directives to the pile of existing directives.\n\n      directives = directives.concat(Object.entries(spreadObject).map(([name, value]) => parseHtmlAttribute({\n        name,\n        value\n      })));\n    }\n\n    if (type) return directives.filter(i => i.type === type);\n    return sortDirectives(directives);\n  }\n\n  function sortDirectives(directives) {\n    let directiveOrder = ['bind', 'model', 'show', 'catch-all'];\n    return directives.sort((a, b) => {\n      let typeA = directiveOrder.indexOf(a.type) === -1 ? 'catch-all' : a.type;\n      let typeB = directiveOrder.indexOf(b.type) === -1 ? 'catch-all' : b.type;\n      return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);\n    });\n  }\n\n  function parseHtmlAttribute({\n    name,\n    value\n  }) {\n    const normalizedName = replaceAtAndColonWithStandardSyntax(name);\n    const typeMatch = normalizedName.match(xAttrRE);\n    const valueMatch = normalizedName.match(/:([a-zA-Z0-9\\-:]+)/);\n    const modifiers = normalizedName.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n    return {\n      type: typeMatch ? typeMatch[1] : null,\n      value: valueMatch ? valueMatch[1] : null,\n      modifiers: modifiers.map(i => i.replace('.', '')),\n      expression: value\n    };\n  }\n  function isBooleanAttr(attrName) {\n    // As per HTML spec table https://html.spec.whatwg.org/multipage/indices.html#attributes-3:boolean-attribute\n    // Array roughly ordered by estimated usage\n    const booleanAttributes = ['disabled', 'checked', 'required', 'readonly', 'hidden', 'open', 'selected', 'autofocus', 'itemscope', 'multiple', 'novalidate', 'allowfullscreen', 'allowpaymentrequest', 'formnovalidate', 'autoplay', 'controls', 'loop', 'muted', 'playsinline', 'default', 'ismap', 'reversed', 'async', 'defer', 'nomodule'];\n    return booleanAttributes.includes(attrName);\n  }\n  function replaceAtAndColonWithStandardSyntax(name) {\n    if (name.startsWith('@')) {\n      return name.replace('@', 'x-on:');\n    } else if (name.startsWith(':')) {\n      return name.replace(':', 'x-bind:');\n    }\n\n    return name;\n  }\n  function convertClassStringToArray(classList, filterFn = Boolean) {\n    return classList.split(' ').filter(filterFn);\n  }\n  const TRANSITION_TYPE_IN = 'in';\n  const TRANSITION_TYPE_OUT = 'out';\n  const TRANSITION_CANCELLED = 'cancelled';\n  function transitionIn(el, show, reject, component, forceSkip = false) {\n    // We don't want to transition on the initial page load.\n    if (forceSkip) return show();\n\n    if (el.__x_transition && el.__x_transition.type === TRANSITION_TYPE_IN) {\n      // there is already a similar transition going on, this was probably triggered by\n      // a change in a different property, let's just leave the previous one doing its job\n      return;\n    }\n\n    const attrs = getXAttrs(el, component, 'transition');\n    const showAttr = getXAttrs(el, component, 'show')[0]; // If this is triggered by a x-show.transition.\n\n    if (showAttr && showAttr.modifiers.includes('transition')) {\n      let modifiers = showAttr.modifiers; // If x-show.transition.out, we'll skip the \"in\" transition.\n\n      if (modifiers.includes('out') && !modifiers.includes('in')) return show();\n      const settingBothSidesOfTransition = modifiers.includes('in') && modifiers.includes('out'); // If x-show.transition.in...out... only use \"in\" related modifiers for this transition.\n\n      modifiers = settingBothSidesOfTransition ? modifiers.filter((i, index) => index < modifiers.indexOf('out')) : modifiers;\n      transitionHelperIn(el, modifiers, show, reject); // Otherwise, we can assume x-transition:enter.\n    } else if (attrs.some(attr => ['enter', 'enter-start', 'enter-end'].includes(attr.value))) {\n      transitionClassesIn(el, component, attrs, show, reject);\n    } else {\n      // If neither, just show that damn thing.\n      show();\n    }\n  }\n  function transitionOut(el, hide, reject, component, forceSkip = false) {\n    // We don't want to transition on the initial page load.\n    if (forceSkip) return hide();\n\n    if (el.__x_transition && el.__x_transition.type === TRANSITION_TYPE_OUT) {\n      // there is already a similar transition going on, this was probably triggered by\n      // a change in a different property, let's just leave the previous one doing its job\n      return;\n    }\n\n    const attrs = getXAttrs(el, component, 'transition');\n    const showAttr = getXAttrs(el, component, 'show')[0];\n\n    if (showAttr && showAttr.modifiers.includes('transition')) {\n      let modifiers = showAttr.modifiers;\n      if (modifiers.includes('in') && !modifiers.includes('out')) return hide();\n      const settingBothSidesOfTransition = modifiers.includes('in') && modifiers.includes('out');\n      modifiers = settingBothSidesOfTransition ? modifiers.filter((i, index) => index > modifiers.indexOf('out')) : modifiers;\n      transitionHelperOut(el, modifiers, settingBothSidesOfTransition, hide, reject);\n    } else if (attrs.some(attr => ['leave', 'leave-start', 'leave-end'].includes(attr.value))) {\n      transitionClassesOut(el, component, attrs, hide, reject);\n    } else {\n      hide();\n    }\n  }\n  function transitionHelperIn(el, modifiers, showCallback, reject) {\n    // Default values inspired by: https://material.io/design/motion/speed.html#duration\n    const styleValues = {\n      duration: modifierValue(modifiers, 'duration', 150),\n      origin: modifierValue(modifiers, 'origin', 'center'),\n      first: {\n        opacity: 0,\n        scale: modifierValue(modifiers, 'scale', 95)\n      },\n      second: {\n        opacity: 1,\n        scale: 100\n      }\n    };\n    transitionHelper(el, modifiers, showCallback, () => {}, reject, styleValues, TRANSITION_TYPE_IN);\n  }\n  function transitionHelperOut(el, modifiers, settingBothSidesOfTransition, hideCallback, reject) {\n    // Make the \"out\" transition .5x slower than the \"in\". (Visually better)\n    // HOWEVER, if they explicitly set a duration for the \"out\" transition,\n    // use that.\n    const duration = settingBothSidesOfTransition ? modifierValue(modifiers, 'duration', 150) : modifierValue(modifiers, 'duration', 150) / 2;\n    const styleValues = {\n      duration: duration,\n      origin: modifierValue(modifiers, 'origin', 'center'),\n      first: {\n        opacity: 1,\n        scale: 100\n      },\n      second: {\n        opacity: 0,\n        scale: modifierValue(modifiers, 'scale', 95)\n      }\n    };\n    transitionHelper(el, modifiers, () => {}, hideCallback, reject, styleValues, TRANSITION_TYPE_OUT);\n  }\n\n  function modifierValue(modifiers, key, fallback) {\n    // If the modifier isn't present, use the default.\n    if (modifiers.indexOf(key) === -1) return fallback; // If it IS present, grab the value after it: x-show.transition.duration.500ms\n\n    const rawValue = modifiers[modifiers.indexOf(key) + 1];\n    if (!rawValue) return fallback;\n\n    if (key === 'scale') {\n      // Check if the very next value is NOT a number and return the fallback.\n      // If x-show.transition.scale, we'll use the default scale value.\n      // That is how a user opts out of the opacity transition.\n      if (!isNumeric(rawValue)) return fallback;\n    }\n\n    if (key === 'duration') {\n      // Support x-show.transition.duration.500ms && duration.500\n      let match = rawValue.match(/([0-9]+)ms/);\n      if (match) return match[1];\n    }\n\n    if (key === 'origin') {\n      // Support chaining origin directions: x-show.transition.top.right\n      if (['top', 'right', 'left', 'center', 'bottom'].includes(modifiers[modifiers.indexOf(key) + 2])) {\n        return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(' ');\n      }\n    }\n\n    return rawValue;\n  }\n\n  function transitionHelper(el, modifiers, hook1, hook2, reject, styleValues, type) {\n    // clear the previous transition if exists to avoid caching the wrong styles\n    if (el.__x_transition) {\n      el.__x_transition.cancel && el.__x_transition.cancel();\n    } // If the user set these style values, we'll put them back when we're done with them.\n\n\n    const opacityCache = el.style.opacity;\n    const transformCache = el.style.transform;\n    const transformOriginCache = el.style.transformOrigin; // If no modifiers are present: x-show.transition, we'll default to both opacity and scale.\n\n    const noModifiers = !modifiers.includes('opacity') && !modifiers.includes('scale');\n    const transitionOpacity = noModifiers || modifiers.includes('opacity');\n    const transitionScale = noModifiers || modifiers.includes('scale'); // These are the explicit stages of a transition (same stages for in and for out).\n    // This way you can get a birds eye view of the hooks, and the differences\n    // between them.\n\n    const stages = {\n      start() {\n        if (transitionOpacity) el.style.opacity = styleValues.first.opacity;\n        if (transitionScale) el.style.transform = `scale(${styleValues.first.scale / 100})`;\n      },\n\n      during() {\n        if (transitionScale) el.style.transformOrigin = styleValues.origin;\n        el.style.transitionProperty = [transitionOpacity ? `opacity` : ``, transitionScale ? `transform` : ``].join(' ').trim();\n        el.style.transitionDuration = `${styleValues.duration / 1000}s`;\n        el.style.transitionTimingFunction = `cubic-bezier(0.4, 0.0, 0.2, 1)`;\n      },\n\n      show() {\n        hook1();\n      },\n\n      end() {\n        if (transitionOpacity) el.style.opacity = styleValues.second.opacity;\n        if (transitionScale) el.style.transform = `scale(${styleValues.second.scale / 100})`;\n      },\n\n      hide() {\n        hook2();\n      },\n\n      cleanup() {\n        if (transitionOpacity) el.style.opacity = opacityCache;\n        if (transitionScale) el.style.transform = transformCache;\n        if (transitionScale) el.style.transformOrigin = transformOriginCache;\n        el.style.transitionProperty = null;\n        el.style.transitionDuration = null;\n        el.style.transitionTimingFunction = null;\n      }\n\n    };\n    transition(el, stages, type, reject);\n  }\n\n  const ensureStringExpression = (expression, el, component) => {\n    return typeof expression === 'function' ? component.evaluateReturnExpression(el, expression) : expression;\n  };\n\n  function transitionClassesIn(el, component, directives, showCallback, reject) {\n    const enter = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'enter') || {\n      expression: ''\n    }).expression, el, component));\n    const enterStart = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'enter-start') || {\n      expression: ''\n    }).expression, el, component));\n    const enterEnd = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'enter-end') || {\n      expression: ''\n    }).expression, el, component));\n    transitionClasses(el, enter, enterStart, enterEnd, showCallback, () => {}, TRANSITION_TYPE_IN, reject);\n  }\n  function transitionClassesOut(el, component, directives, hideCallback, reject) {\n    const leave = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'leave') || {\n      expression: ''\n    }).expression, el, component));\n    const leaveStart = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'leave-start') || {\n      expression: ''\n    }).expression, el, component));\n    const leaveEnd = convertClassStringToArray(ensureStringExpression((directives.find(i => i.value === 'leave-end') || {\n      expression: ''\n    }).expression, el, component));\n    transitionClasses(el, leave, leaveStart, leaveEnd, () => {}, hideCallback, TRANSITION_TYPE_OUT, reject);\n  }\n  function transitionClasses(el, classesDuring, classesStart, classesEnd, hook1, hook2, type, reject) {\n    // clear the previous transition if exists to avoid caching the wrong classes\n    if (el.__x_transition) {\n      el.__x_transition.cancel && el.__x_transition.cancel();\n    }\n\n    const originalClasses = el.__x_original_classes || [];\n    const stages = {\n      start() {\n        el.classList.add(...classesStart);\n      },\n\n      during() {\n        el.classList.add(...classesDuring);\n      },\n\n      show() {\n        hook1();\n      },\n\n      end() {\n        // Don't remove classes that were in the original class attribute.\n        el.classList.remove(...classesStart.filter(i => !originalClasses.includes(i)));\n        el.classList.add(...classesEnd);\n      },\n\n      hide() {\n        hook2();\n      },\n\n      cleanup() {\n        el.classList.remove(...classesDuring.filter(i => !originalClasses.includes(i)));\n        el.classList.remove(...classesEnd.filter(i => !originalClasses.includes(i)));\n      }\n\n    };\n    transition(el, stages, type, reject);\n  }\n  function transition(el, stages, type, reject) {\n    const finish = once(() => {\n      stages.hide(); // Adding an \"isConnected\" check, in case the callback\n      // removed the element from the DOM.\n\n      if (el.isConnected) {\n        stages.cleanup();\n      }\n\n      delete el.__x_transition;\n    });\n    el.__x_transition = {\n      // Set transition type so we can avoid clearing transition if the direction is the same\n      type: type,\n      // create a callback for the last stages of the transition so we can call it\n      // from different point and early terminate it. Once will ensure that function\n      // is only called one time.\n      cancel: once(() => {\n        reject(TRANSITION_CANCELLED);\n        finish();\n      }),\n      finish,\n      // This store the next animation frame so we can cancel it\n      nextFrame: null\n    };\n    stages.start();\n    stages.during();\n    el.__x_transition.nextFrame = requestAnimationFrame(() => {\n      // Note: Safari's transitionDuration property will list out comma separated transition durations\n      // for every single transition property. Let's grab the first one and call it a day.\n      let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, '').replace('s', '')) * 1000;\n\n      if (duration === 0) {\n        duration = Number(getComputedStyle(el).animationDuration.replace('s', '')) * 1000;\n      }\n\n      stages.show();\n      el.__x_transition.nextFrame = requestAnimationFrame(() => {\n        stages.end();\n        setTimeout(el.__x_transition.finish, duration);\n      });\n    });\n  }\n  function isNumeric(subject) {\n    return !Array.isArray(subject) && !isNaN(subject);\n  } // Thanks @vuejs\n  // https://github.com/vuejs/vue/blob/4de4649d9637262a9b007720b59f80ac72a5620c/src/shared/util.js\n\n  function once(callback) {\n    let called = false;\n    return function () {\n      if (!called) {\n        called = true;\n        callback.apply(this, arguments);\n      }\n    };\n  }\n\n  function handleForDirective(component, templateEl, expression, initialUpdate, extraVars) {\n    warnIfMalformedTemplate(templateEl, 'x-for');\n    let iteratorNames = typeof expression === 'function' ? parseForExpression(component.evaluateReturnExpression(templateEl, expression)) : parseForExpression(expression);\n    let items = evaluateItemsAndReturnEmptyIfXIfIsPresentAndFalseOnElement(component, templateEl, iteratorNames, extraVars); // As we walk the array, we'll also walk the DOM (updating/creating as we go).\n\n    let currentEl = templateEl;\n    items.forEach((item, index) => {\n      let iterationScopeVariables = getIterationScopeVariables(iteratorNames, item, index, items, extraVars());\n      let currentKey = generateKeyForIteration(component, templateEl, index, iterationScopeVariables);\n      let nextEl = lookAheadForMatchingKeyedElementAndMoveItIfFound(currentEl.nextElementSibling, currentKey); // If we haven't found a matching key, insert the element at the current position.\n\n      if (!nextEl) {\n        nextEl = addElementInLoopAfterCurrentEl(templateEl, currentEl); // And transition it in if it's not the first page load.\n\n        transitionIn(nextEl, () => {}, () => {}, component, initialUpdate);\n        nextEl.__x_for = iterationScopeVariables;\n        component.initializeElements(nextEl, () => nextEl.__x_for); // Otherwise update the element we found.\n      } else {\n        // Temporarily remove the key indicator to allow the normal \"updateElements\" to work.\n        delete nextEl.__x_for_key;\n        nextEl.__x_for = iterationScopeVariables;\n        component.updateElements(nextEl, () => nextEl.__x_for);\n      }\n\n      currentEl = nextEl;\n      currentEl.__x_for_key = currentKey;\n    });\n    removeAnyLeftOverElementsFromPreviousUpdate(currentEl, component);\n  } // This was taken from VueJS 2.* core. Thanks Vue!\n\n  function parseForExpression(expression) {\n    let forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\n    let stripParensRE = /^\\(|\\)$/g;\n    let forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n    let inMatch = String(expression).match(forAliasRE);\n    if (!inMatch) return;\n    let res = {};\n    res.items = inMatch[2].trim();\n    let item = inMatch[1].trim().replace(stripParensRE, '');\n    let iteratorMatch = item.match(forIteratorRE);\n\n    if (iteratorMatch) {\n      res.item = item.replace(forIteratorRE, '').trim();\n      res.index = iteratorMatch[1].trim();\n\n      if (iteratorMatch[2]) {\n        res.collection = iteratorMatch[2].trim();\n      }\n    } else {\n      res.item = item;\n    }\n\n    return res;\n  }\n\n  function getIterationScopeVariables(iteratorNames, item, index, items, extraVars) {\n    // We must create a new object, so each iteration has a new scope\n    let scopeVariables = extraVars ? _objectSpread2({}, extraVars) : {};\n    scopeVariables[iteratorNames.item] = item;\n    if (iteratorNames.index) scopeVariables[iteratorNames.index] = index;\n    if (iteratorNames.collection) scopeVariables[iteratorNames.collection] = items;\n    return scopeVariables;\n  }\n\n  function generateKeyForIteration(component, el, index, iterationScopeVariables) {\n    let bindKeyAttribute = getXAttrs(el, component, 'bind').filter(attr => attr.value === 'key')[0]; // If the dev hasn't specified a key, just return the index of the iteration.\n\n    if (!bindKeyAttribute) return index;\n    return component.evaluateReturnExpression(el, bindKeyAttribute.expression, () => iterationScopeVariables);\n  }\n\n  function evaluateItemsAndReturnEmptyIfXIfIsPresentAndFalseOnElement(component, el, iteratorNames, extraVars) {\n    let ifAttribute = getXAttrs(el, component, 'if')[0];\n\n    if (ifAttribute && !component.evaluateReturnExpression(el, ifAttribute.expression)) {\n      return [];\n    }\n\n    let items = component.evaluateReturnExpression(el, iteratorNames.items, extraVars); // This adds support for the `i in n` syntax.\n\n    if (isNumeric(items) && items >= 0) {\n      items = Array.from(Array(items).keys(), i => i + 1);\n    }\n\n    return items;\n  }\n\n  function addElementInLoopAfterCurrentEl(templateEl, currentEl) {\n    let clone = document.importNode(templateEl.content, true);\n    currentEl.parentElement.insertBefore(clone, currentEl.nextElementSibling);\n    return currentEl.nextElementSibling;\n  }\n\n  function lookAheadForMatchingKeyedElementAndMoveItIfFound(nextEl, currentKey) {\n    if (!nextEl) return; // If we are already past the x-for generated elements, we don't need to look ahead.\n\n    if (nextEl.__x_for_key === undefined) return; // If the the key's DO match, no need to look ahead.\n\n    if (nextEl.__x_for_key === currentKey) return nextEl; // If they don't, we'll look ahead for a match.\n    // If we find it, we'll move it to the current position in the loop.\n\n    let tmpNextEl = nextEl;\n\n    while (tmpNextEl) {\n      if (tmpNextEl.__x_for_key === currentKey) {\n        return tmpNextEl.parentElement.insertBefore(tmpNextEl, nextEl);\n      }\n\n      tmpNextEl = tmpNextEl.nextElementSibling && tmpNextEl.nextElementSibling.__x_for_key !== undefined ? tmpNextEl.nextElementSibling : false;\n    }\n  }\n\n  function removeAnyLeftOverElementsFromPreviousUpdate(currentEl, component) {\n    var nextElementFromOldLoop = currentEl.nextElementSibling && currentEl.nextElementSibling.__x_for_key !== undefined ? currentEl.nextElementSibling : false;\n\n    while (nextElementFromOldLoop) {\n      let nextElementFromOldLoopImmutable = nextElementFromOldLoop;\n      let nextSibling = nextElementFromOldLoop.nextElementSibling;\n      transitionOut(nextElementFromOldLoop, () => {\n        nextElementFromOldLoopImmutable.remove();\n      }, () => {}, component);\n      nextElementFromOldLoop = nextSibling && nextSibling.__x_for_key !== undefined ? nextSibling : false;\n    }\n  }\n\n  function handleAttributeBindingDirective(component, el, attrName, expression, extraVars, attrType, modifiers) {\n    var value = component.evaluateReturnExpression(el, expression, extraVars);\n\n    if (attrName === 'value') {\n      if (Alpine.ignoreFocusedForValueBinding && document.activeElement.isSameNode(el)) return; // If nested model key is undefined, set the default value to empty string.\n\n      if (value === undefined && String(expression).match(/\\./)) {\n        value = '';\n      }\n\n      if (el.type === 'radio') {\n        // Set radio value from x-bind:value, if no \"value\" attribute exists.\n        // If there are any initial state values, radio will have a correct\n        // \"checked\" value since x-bind:value is processed before x-model.\n        if (el.attributes.value === undefined && attrType === 'bind') {\n          el.value = value;\n        } else if (attrType !== 'bind') {\n          el.checked = checkedAttrLooseCompare(el.value, value);\n        }\n      } else if (el.type === 'checkbox') {\n        // If we are explicitly binding a string to the :value, set the string,\n        // If the value is a boolean, leave it alone, it will be set to \"on\"\n        // automatically.\n        if (typeof value !== 'boolean' && ![null, undefined].includes(value) && attrType === 'bind') {\n          el.value = String(value);\n        } else if (attrType !== 'bind') {\n          if (Array.isArray(value)) {\n            // I'm purposely not using Array.includes here because it's\n            // strict, and because of Numeric/String mis-casting, I\n            // want the \"includes\" to be \"fuzzy\".\n            el.checked = value.some(val => checkedAttrLooseCompare(val, el.value));\n          } else {\n            el.checked = !!value;\n          }\n        }\n      } else if (el.tagName === 'SELECT') {\n        updateSelect(el, value);\n      } else {\n        if (el.value === value) return;\n        el.value = value;\n      }\n    } else if (attrName === 'class') {\n      if (Array.isArray(value)) {\n        const originalClasses = el.__x_original_classes || [];\n        el.setAttribute('class', arrayUnique(originalClasses.concat(value)).join(' '));\n      } else if (typeof value === 'object') {\n        // Sorting the keys / class names by their boolean value will ensure that\n        // anything that evaluates to `false` and needs to remove classes is run first.\n        const keysSortedByBooleanValue = Object.keys(value).sort((a, b) => value[a] - value[b]);\n        keysSortedByBooleanValue.forEach(classNames => {\n          if (value[classNames]) {\n            convertClassStringToArray(classNames).forEach(className => el.classList.add(className));\n          } else {\n            convertClassStringToArray(classNames).forEach(className => el.classList.remove(className));\n          }\n        });\n      } else {\n        const originalClasses = el.__x_original_classes || [];\n        const newClasses = value ? convertClassStringToArray(value) : [];\n        el.setAttribute('class', arrayUnique(originalClasses.concat(newClasses)).join(' '));\n      }\n    } else {\n      attrName = modifiers.includes('camel') ? camelCase(attrName) : attrName; // If an attribute's bound value is null, undefined or false, remove the attribute\n\n      if ([null, undefined, false].includes(value)) {\n        el.removeAttribute(attrName);\n      } else {\n        isBooleanAttr(attrName) ? setIfChanged(el, attrName, attrName) : setIfChanged(el, attrName, value);\n      }\n    }\n  }\n\n  function setIfChanged(el, attrName, value) {\n    if (el.getAttribute(attrName) != value) {\n      el.setAttribute(attrName, value);\n    }\n  }\n\n  function updateSelect(el, value) {\n    const arrayWrappedValue = [].concat(value).map(value => {\n      return value + '';\n    });\n    Array.from(el.options).forEach(option => {\n      option.selected = arrayWrappedValue.includes(option.value || option.text);\n    });\n  }\n\n  function handleTextDirective(el, output, expression) {\n    // If nested model key is undefined, set the default value to empty string.\n    if (output === undefined && String(expression).match(/\\./)) {\n      output = '';\n    }\n\n    el.textContent = output;\n  }\n\n  function handleHtmlDirective(component, el, expression, extraVars) {\n    el.innerHTML = component.evaluateReturnExpression(el, expression, extraVars);\n  }\n\n  function handleShowDirective(component, el, value, modifiers, initialUpdate = false) {\n    const hide = () => {\n      el.style.display = 'none';\n      el.__x_is_shown = false;\n    };\n\n    const show = () => {\n      if (el.style.length === 1 && el.style.display === 'none') {\n        el.removeAttribute('style');\n      } else {\n        el.style.removeProperty('display');\n      }\n\n      el.__x_is_shown = true;\n    };\n\n    if (initialUpdate === true) {\n      if (value) {\n        show();\n      } else {\n        hide();\n      }\n\n      return;\n    }\n\n    const handle = (resolve, reject) => {\n      if (value) {\n        if (el.style.display === 'none' || el.__x_transition) {\n          transitionIn(el, () => {\n            show();\n          }, reject, component);\n        }\n\n        resolve(() => {});\n      } else {\n        if (el.style.display !== 'none') {\n          transitionOut(el, () => {\n            resolve(() => {\n              hide();\n            });\n          }, reject, component);\n        } else {\n          resolve(() => {});\n        }\n      }\n    }; // The working of x-show is a bit complex because we need to\n    // wait for any child transitions to finish before hiding\n    // some element. Also, this has to be done recursively.\n    // If x-show.immediate, foregoe the waiting.\n\n\n    if (modifiers.includes('immediate')) {\n      handle(finish => finish(), () => {});\n      return;\n    } // x-show is encountered during a DOM tree walk. If an element\n    // we encounter is NOT a child of another x-show element we\n    // can execute the previous x-show stack (if one exists).\n\n\n    if (component.showDirectiveLastElement && !component.showDirectiveLastElement.contains(el)) {\n      component.executeAndClearRemainingShowDirectiveStack();\n    }\n\n    component.showDirectiveStack.push(handle);\n    component.showDirectiveLastElement = el;\n  }\n\n  function handleIfDirective(component, el, expressionResult, initialUpdate, extraVars) {\n    warnIfMalformedTemplate(el, 'x-if');\n    const elementHasAlreadyBeenAdded = el.nextElementSibling && el.nextElementSibling.__x_inserted_me === true;\n\n    if (expressionResult && (!elementHasAlreadyBeenAdded || el.__x_transition)) {\n      const clone = document.importNode(el.content, true);\n      el.parentElement.insertBefore(clone, el.nextElementSibling);\n      transitionIn(el.nextElementSibling, () => {}, () => {}, component, initialUpdate);\n      component.initializeElements(el.nextElementSibling, extraVars);\n      el.nextElementSibling.__x_inserted_me = true;\n    } else if (!expressionResult && elementHasAlreadyBeenAdded) {\n      transitionOut(el.nextElementSibling, () => {\n        el.nextElementSibling.remove();\n      }, () => {}, component, initialUpdate);\n    }\n  }\n\n  function registerListener(component, el, event, modifiers, expression, extraVars = {}) {\n    const options = {\n      passive: modifiers.includes('passive')\n    };\n\n    if (modifiers.includes('camel')) {\n      event = camelCase(event);\n    }\n\n    let handler, listenerTarget;\n\n    if (modifiers.includes('away')) {\n      listenerTarget = document;\n\n      handler = e => {\n        // Don't do anything if the click came from the element or within it.\n        if (el.contains(e.target)) return; // Don't do anything if this element isn't currently visible.\n\n        if (el.offsetWidth < 1 && el.offsetHeight < 1) return; // Now that we are sure the element is visible, AND the click\n        // is from outside it, let's run the expression.\n\n        runListenerHandler(component, expression, e, extraVars);\n\n        if (modifiers.includes('once')) {\n          document.removeEventListener(event, handler, options);\n        }\n      };\n    } else {\n      listenerTarget = modifiers.includes('window') ? window : modifiers.includes('document') ? document : el;\n\n      handler = e => {\n        // Remove this global event handler if the element that declared it\n        // has been removed. It's now stale.\n        if (listenerTarget === window || listenerTarget === document) {\n          if (!document.body.contains(el)) {\n            listenerTarget.removeEventListener(event, handler, options);\n            return;\n          }\n        }\n\n        if (isKeyEvent(event)) {\n          if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {\n            return;\n          }\n        }\n\n        if (modifiers.includes('prevent')) e.preventDefault();\n        if (modifiers.includes('stop')) e.stopPropagation(); // If the .self modifier isn't present, or if it is present and\n        // the target element matches the element we are registering the\n        // event on, run the handler\n\n        if (!modifiers.includes('self') || e.target === el) {\n          const returnValue = runListenerHandler(component, expression, e, extraVars);\n          returnValue.then(value => {\n            if (value === false) {\n              e.preventDefault();\n            } else {\n              if (modifiers.includes('once')) {\n                listenerTarget.removeEventListener(event, handler, options);\n              }\n            }\n          });\n        }\n      };\n    }\n\n    if (modifiers.includes('debounce')) {\n      let nextModifier = modifiers[modifiers.indexOf('debounce') + 1] || 'invalid-wait';\n      let wait = isNumeric(nextModifier.split('ms')[0]) ? Number(nextModifier.split('ms')[0]) : 250;\n      handler = debounce(handler, wait);\n    }\n\n    listenerTarget.addEventListener(event, handler, options);\n  }\n\n  function runListenerHandler(component, expression, e, extraVars) {\n    return component.evaluateCommandExpression(e.target, expression, () => {\n      return _objectSpread2(_objectSpread2({}, extraVars()), {}, {\n        '$event': e\n      });\n    });\n  }\n\n  function isKeyEvent(event) {\n    return ['keydown', 'keyup'].includes(event);\n  }\n\n  function isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {\n    let keyModifiers = modifiers.filter(i => {\n      return !['window', 'document', 'prevent', 'stop'].includes(i);\n    });\n\n    if (keyModifiers.includes('debounce')) {\n      let debounceIndex = keyModifiers.indexOf('debounce');\n      keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || 'invalid-wait').split('ms')[0]) ? 2 : 1);\n    } // If no modifier is specified, we'll call it a press.\n\n\n    if (keyModifiers.length === 0) return false; // If one is passed, AND it matches the key pressed, we'll call it a press.\n\n    if (keyModifiers.length === 1 && keyModifiers[0] === keyToModifier(e.key)) return false; // The user is listening for key combinations.\n\n    const systemKeyModifiers = ['ctrl', 'shift', 'alt', 'meta', 'cmd', 'super'];\n    const selectedSystemKeyModifiers = systemKeyModifiers.filter(modifier => keyModifiers.includes(modifier));\n    keyModifiers = keyModifiers.filter(i => !selectedSystemKeyModifiers.includes(i));\n\n    if (selectedSystemKeyModifiers.length > 0) {\n      const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter(modifier => {\n        // Alias \"cmd\" and \"super\" to \"meta\"\n        if (modifier === 'cmd' || modifier === 'super') modifier = 'meta';\n        return e[`${modifier}Key`];\n      }); // If all the modifiers selected are pressed, ...\n\n      if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {\n        // AND the remaining key is pressed as well. It's a press.\n        if (keyModifiers[0] === keyToModifier(e.key)) return false;\n      }\n    } // We'll call it NOT a valid keypress.\n\n\n    return true;\n  }\n\n  function keyToModifier(key) {\n    switch (key) {\n      case '/':\n        return 'slash';\n\n      case ' ':\n      case 'Spacebar':\n        return 'space';\n\n      default:\n        return key && kebabCase(key);\n    }\n  }\n\n  function registerModelListener(component, el, modifiers, expression, extraVars) {\n    // If the element we are binding to is a select, a radio, or checkbox\n    // we'll listen for the change event instead of the \"input\" event.\n    var event = el.tagName.toLowerCase() === 'select' || ['checkbox', 'radio'].includes(el.type) || modifiers.includes('lazy') ? 'change' : 'input';\n    const listenerExpression = `${expression} = rightSideOfExpression($event, ${expression})`;\n    registerListener(component, el, event, modifiers, listenerExpression, () => {\n      return _objectSpread2(_objectSpread2({}, extraVars()), {}, {\n        rightSideOfExpression: generateModelAssignmentFunction(el, modifiers, expression)\n      });\n    });\n  }\n\n  function generateModelAssignmentFunction(el, modifiers, expression) {\n    if (el.type === 'radio') {\n      // Radio buttons only work properly when they share a name attribute.\n      // People might assume we take care of that for them, because\n      // they already set a shared \"x-model\" attribute.\n      if (!el.hasAttribute('name')) el.setAttribute('name', expression);\n    }\n\n    return (event, currentValue) => {\n      // Check for event.detail due to an issue where IE11 handles other events as a CustomEvent.\n      if (event instanceof CustomEvent && event.detail) {\n        return event.detail;\n      } else if (el.type === 'checkbox') {\n        // If the data we are binding to is an array, toggle its value inside the array.\n        if (Array.isArray(currentValue)) {\n          const newValue = modifiers.includes('number') ? safeParseNumber(event.target.value) : event.target.value;\n          return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter(el => !checkedAttrLooseCompare(el, newValue));\n        } else {\n          return event.target.checked;\n        }\n      } else if (el.tagName.toLowerCase() === 'select' && el.multiple) {\n        return modifiers.includes('number') ? Array.from(event.target.selectedOptions).map(option => {\n          const rawValue = option.value || option.text;\n          return safeParseNumber(rawValue);\n        }) : Array.from(event.target.selectedOptions).map(option => {\n          return option.value || option.text;\n        });\n      } else {\n        const rawValue = event.target.value;\n        return modifiers.includes('number') ? safeParseNumber(rawValue) : modifiers.includes('trim') ? rawValue.trim() : rawValue;\n      }\n    };\n  }\n\n  function safeParseNumber(rawValue) {\n    const number = rawValue ? parseFloat(rawValue) : null;\n    return isNumeric(number) ? number : rawValue;\n  }\n\n  /**\n   * Copyright (C) 2017 salesforce.com, inc.\n   */\n  const { isArray } = Array;\n  const { getPrototypeOf, create: ObjectCreate, defineProperty: ObjectDefineProperty, defineProperties: ObjectDefineProperties, isExtensible, getOwnPropertyDescriptor, getOwnPropertyNames, getOwnPropertySymbols, preventExtensions, hasOwnProperty, } = Object;\n  const { push: ArrayPush, concat: ArrayConcat, map: ArrayMap, } = Array.prototype;\n  function isUndefined(obj) {\n      return obj === undefined;\n  }\n  function isFunction(obj) {\n      return typeof obj === 'function';\n  }\n  function isObject(obj) {\n      return typeof obj === 'object';\n  }\n  const proxyToValueMap = new WeakMap();\n  function registerProxy(proxy, value) {\n      proxyToValueMap.set(proxy, value);\n  }\n  const unwrap = (replicaOrAny) => proxyToValueMap.get(replicaOrAny) || replicaOrAny;\n\n  function wrapValue(membrane, value) {\n      return membrane.valueIsObservable(value) ? membrane.getProxy(value) : value;\n  }\n  /**\n   * Unwrap property descriptors will set value on original descriptor\n   * We only need to unwrap if value is specified\n   * @param descriptor external descrpitor provided to define new property on original value\n   */\n  function unwrapDescriptor(descriptor) {\n      if (hasOwnProperty.call(descriptor, 'value')) {\n          descriptor.value = unwrap(descriptor.value);\n      }\n      return descriptor;\n  }\n  function lockShadowTarget(membrane, shadowTarget, originalTarget) {\n      const targetKeys = ArrayConcat.call(getOwnPropertyNames(originalTarget), getOwnPropertySymbols(originalTarget));\n      targetKeys.forEach((key) => {\n          let descriptor = getOwnPropertyDescriptor(originalTarget, key);\n          // We do not need to wrap the descriptor if configurable\n          // Because we can deal with wrapping it when user goes through\n          // Get own property descriptor. There is also a chance that this descriptor\n          // could change sometime in the future, so we can defer wrapping\n          // until we need to\n          if (!descriptor.configurable) {\n              descriptor = wrapDescriptor(membrane, descriptor, wrapValue);\n          }\n          ObjectDefineProperty(shadowTarget, key, descriptor);\n      });\n      preventExtensions(shadowTarget);\n  }\n  class ReactiveProxyHandler {\n      constructor(membrane, value) {\n          this.originalTarget = value;\n          this.membrane = membrane;\n      }\n      get(shadowTarget, key) {\n          const { originalTarget, membrane } = this;\n          const value = originalTarget[key];\n          const { valueObserved } = membrane;\n          valueObserved(originalTarget, key);\n          return membrane.getProxy(value);\n      }\n      set(shadowTarget, key, value) {\n          const { originalTarget, membrane: { valueMutated } } = this;\n          const oldValue = originalTarget[key];\n          if (oldValue !== value) {\n              originalTarget[key] = value;\n              valueMutated(originalTarget, key);\n          }\n          else if (key === 'length' && isArray(originalTarget)) {\n              // fix for issue #236: push will add the new index, and by the time length\n              // is updated, the internal length is already equal to the new length value\n              // therefore, the oldValue is equal to the value. This is the forking logic\n              // to support this use case.\n              valueMutated(originalTarget, key);\n          }\n          return true;\n      }\n      deleteProperty(shadowTarget, key) {\n          const { originalTarget, membrane: { valueMutated } } = this;\n          delete originalTarget[key];\n          valueMutated(originalTarget, key);\n          return true;\n      }\n      apply(shadowTarget, thisArg, argArray) {\n          /* No op */\n      }\n      construct(target, argArray, newTarget) {\n          /* No op */\n      }\n      has(shadowTarget, key) {\n          const { originalTarget, membrane: { valueObserved } } = this;\n          valueObserved(originalTarget, key);\n          return key in originalTarget;\n      }\n      ownKeys(shadowTarget) {\n          const { originalTarget } = this;\n          return ArrayConcat.call(getOwnPropertyNames(originalTarget), getOwnPropertySymbols(originalTarget));\n      }\n      isExtensible(shadowTarget) {\n          const shadowIsExtensible = isExtensible(shadowTarget);\n          if (!shadowIsExtensible) {\n              return shadowIsExtensible;\n          }\n          const { originalTarget, membrane } = this;\n          const targetIsExtensible = isExtensible(originalTarget);\n          if (!targetIsExtensible) {\n              lockShadowTarget(membrane, shadowTarget, originalTarget);\n          }\n          return targetIsExtensible;\n      }\n      setPrototypeOf(shadowTarget, prototype) {\n      }\n      getPrototypeOf(shadowTarget) {\n          const { originalTarget } = this;\n          return getPrototypeOf(originalTarget);\n      }\n      getOwnPropertyDescriptor(shadowTarget, key) {\n          const { originalTarget, membrane } = this;\n          const { valueObserved } = this.membrane;\n          // keys looked up via hasOwnProperty need to be reactive\n          valueObserved(originalTarget, key);\n          let desc = getOwnPropertyDescriptor(originalTarget, key);\n          if (isUndefined(desc)) {\n              return desc;\n          }\n          const shadowDescriptor = getOwnPropertyDescriptor(shadowTarget, key);\n          if (!isUndefined(shadowDescriptor)) {\n              return shadowDescriptor;\n          }\n          // Note: by accessing the descriptor, the key is marked as observed\n          // but access to the value, setter or getter (if available) cannot observe\n          // mutations, just like regular methods, in which case we just do nothing.\n          desc = wrapDescriptor(membrane, desc, wrapValue);\n          if (!desc.configurable) {\n              // If descriptor from original target is not configurable,\n              // We must copy the wrapped descriptor over to the shadow target.\n              // Otherwise, proxy will throw an invariant error.\n              // This is our last chance to lock the value.\n              // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor#Invariants\n              ObjectDefineProperty(shadowTarget, key, desc);\n          }\n          return desc;\n      }\n      preventExtensions(shadowTarget) {\n          const { originalTarget, membrane } = this;\n          lockShadowTarget(membrane, shadowTarget, originalTarget);\n          preventExtensions(originalTarget);\n          return true;\n      }\n      defineProperty(shadowTarget, key, descriptor) {\n          const { originalTarget, membrane } = this;\n          const { valueMutated } = membrane;\n          const { configurable } = descriptor;\n          // We have to check for value in descriptor\n          // because Object.freeze(proxy) calls this method\n          // with only { configurable: false, writeable: false }\n          // Additionally, method will only be called with writeable:false\n          // if the descriptor has a value, as opposed to getter/setter\n          // So we can just check if writable is present and then see if\n          // value is present. This eliminates getter and setter descriptors\n          if (hasOwnProperty.call(descriptor, 'writable') && !hasOwnProperty.call(descriptor, 'value')) {\n              const originalDescriptor = getOwnPropertyDescriptor(originalTarget, key);\n              descriptor.value = originalDescriptor.value;\n          }\n          ObjectDefineProperty(originalTarget, key, unwrapDescriptor(descriptor));\n          if (configurable === false) {\n              ObjectDefineProperty(shadowTarget, key, wrapDescriptor(membrane, descriptor, wrapValue));\n          }\n          valueMutated(originalTarget, key);\n          return true;\n      }\n  }\n\n  function wrapReadOnlyValue(membrane, value) {\n      return membrane.valueIsObservable(value) ? membrane.getReadOnlyProxy(value) : value;\n  }\n  class ReadOnlyHandler {\n      constructor(membrane, value) {\n          this.originalTarget = value;\n          this.membrane = membrane;\n      }\n      get(shadowTarget, key) {\n          const { membrane, originalTarget } = this;\n          const value = originalTarget[key];\n          const { valueObserved } = membrane;\n          valueObserved(originalTarget, key);\n          return membrane.getReadOnlyProxy(value);\n      }\n      set(shadowTarget, key, value) {\n          return false;\n      }\n      deleteProperty(shadowTarget, key) {\n          return false;\n      }\n      apply(shadowTarget, thisArg, argArray) {\n          /* No op */\n      }\n      construct(target, argArray, newTarget) {\n          /* No op */\n      }\n      has(shadowTarget, key) {\n          const { originalTarget, membrane: { valueObserved } } = this;\n          valueObserved(originalTarget, key);\n          return key in originalTarget;\n      }\n      ownKeys(shadowTarget) {\n          const { originalTarget } = this;\n          return ArrayConcat.call(getOwnPropertyNames(originalTarget), getOwnPropertySymbols(originalTarget));\n      }\n      setPrototypeOf(shadowTarget, prototype) {\n      }\n      getOwnPropertyDescriptor(shadowTarget, key) {\n          const { originalTarget, membrane } = this;\n          const { valueObserved } = membrane;\n          // keys looked up via hasOwnProperty need to be reactive\n          valueObserved(originalTarget, key);\n          let desc = getOwnPropertyDescriptor(originalTarget, key);\n          if (isUndefined(desc)) {\n              return desc;\n          }\n          const shadowDescriptor = getOwnPropertyDescriptor(shadowTarget, key);\n          if (!isUndefined(shadowDescriptor)) {\n              return shadowDescriptor;\n          }\n          // Note: by accessing the descriptor, the key is marked as observed\n          // but access to the value or getter (if available) cannot be observed,\n          // just like regular methods, in which case we just do nothing.\n          desc = wrapDescriptor(membrane, desc, wrapReadOnlyValue);\n          if (hasOwnProperty.call(desc, 'set')) {\n              desc.set = undefined; // readOnly membrane does not allow setters\n          }\n          if (!desc.configurable) {\n              // If descriptor from original target is not configurable,\n              // We must copy the wrapped descriptor over to the shadow target.\n              // Otherwise, proxy will throw an invariant error.\n              // This is our last chance to lock the value.\n              // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/getOwnPropertyDescriptor#Invariants\n              ObjectDefineProperty(shadowTarget, key, desc);\n          }\n          return desc;\n      }\n      preventExtensions(shadowTarget) {\n          return false;\n      }\n      defineProperty(shadowTarget, key, descriptor) {\n          return false;\n      }\n  }\n  function createShadowTarget(value) {\n      let shadowTarget = undefined;\n      if (isArray(value)) {\n          shadowTarget = [];\n      }\n      else if (isObject(value)) {\n          shadowTarget = {};\n      }\n      return shadowTarget;\n  }\n  const ObjectDotPrototype = Object.prototype;\n  function defaultValueIsObservable(value) {\n      // intentionally checking for null\n      if (value === null) {\n          return false;\n      }\n      // treat all non-object types, including undefined, as non-observable values\n      if (typeof value !== 'object') {\n          return false;\n      }\n      if (isArray(value)) {\n          return true;\n      }\n      const proto = getPrototypeOf(value);\n      return (proto === ObjectDotPrototype || proto === null || getPrototypeOf(proto) === null);\n  }\n  const defaultValueObserved = (obj, key) => {\n      /* do nothing */\n  };\n  const defaultValueMutated = (obj, key) => {\n      /* do nothing */\n  };\n  const defaultValueDistortion = (value) => value;\n  function wrapDescriptor(membrane, descriptor, getValue) {\n      const { set, get } = descriptor;\n      if (hasOwnProperty.call(descriptor, 'value')) {\n          descriptor.value = getValue(membrane, descriptor.value);\n      }\n      else {\n          if (!isUndefined(get)) {\n              descriptor.get = function () {\n                  // invoking the original getter with the original target\n                  return getValue(membrane, get.call(unwrap(this)));\n              };\n          }\n          if (!isUndefined(set)) {\n              descriptor.set = function (value) {\n                  // At this point we don't have a clear indication of whether\n                  // or not a valid mutation will occur, we don't have the key,\n                  // and we are not sure why and how they are invoking this setter.\n                  // Nevertheless we preserve the original semantics by invoking the\n                  // original setter with the original target and the unwrapped value\n                  set.call(unwrap(this), membrane.unwrapProxy(value));\n              };\n          }\n      }\n      return descriptor;\n  }\n  class ReactiveMembrane {\n      constructor(options) {\n          this.valueDistortion = defaultValueDistortion;\n          this.valueMutated = defaultValueMutated;\n          this.valueObserved = defaultValueObserved;\n          this.valueIsObservable = defaultValueIsObservable;\n          this.objectGraph = new WeakMap();\n          if (!isUndefined(options)) {\n              const { valueDistortion, valueMutated, valueObserved, valueIsObservable } = options;\n              this.valueDistortion = isFunction(valueDistortion) ? valueDistortion : defaultValueDistortion;\n              this.valueMutated = isFunction(valueMutated) ? valueMutated : defaultValueMutated;\n              this.valueObserved = isFunction(valueObserved) ? valueObserved : defaultValueObserved;\n              this.valueIsObservable = isFunction(valueIsObservable) ? valueIsObservable : defaultValueIsObservable;\n          }\n      }\n      getProxy(value) {\n          const unwrappedValue = unwrap(value);\n          const distorted = this.valueDistortion(unwrappedValue);\n          if (this.valueIsObservable(distorted)) {\n              const o = this.getReactiveState(unwrappedValue, distorted);\n              // when trying to extract the writable version of a readonly\n              // we return the readonly.\n              return o.readOnly === value ? value : o.reactive;\n          }\n          return distorted;\n      }\n      getReadOnlyProxy(value) {\n          value = unwrap(value);\n          const distorted = this.valueDistortion(value);\n          if (this.valueIsObservable(distorted)) {\n              return this.getReactiveState(value, distorted).readOnly;\n          }\n          return distorted;\n      }\n      unwrapProxy(p) {\n          return unwrap(p);\n      }\n      getReactiveState(value, distortedValue) {\n          const { objectGraph, } = this;\n          let reactiveState = objectGraph.get(distortedValue);\n          if (reactiveState) {\n              return reactiveState;\n          }\n          const membrane = this;\n          reactiveState = {\n              get reactive() {\n                  const reactiveHandler = new ReactiveProxyHandler(membrane, distortedValue);\n                  // caching the reactive proxy after the first time it is accessed\n                  const proxy = new Proxy(createShadowTarget(distortedValue), reactiveHandler);\n                  registerProxy(proxy, value);\n                  ObjectDefineProperty(this, 'reactive', { value: proxy });\n                  return proxy;\n              },\n              get readOnly() {\n                  const readOnlyHandler = new ReadOnlyHandler(membrane, distortedValue);\n                  // caching the readOnly proxy after the first time it is accessed\n                  const proxy = new Proxy(createShadowTarget(distortedValue), readOnlyHandler);\n                  registerProxy(proxy, value);\n                  ObjectDefineProperty(this, 'readOnly', { value: proxy });\n                  return proxy;\n              }\n          };\n          objectGraph.set(distortedValue, reactiveState);\n          return reactiveState;\n      }\n  }\n  /** version: 0.26.0 */\n\n  function wrap(data, mutationCallback) {\n\n    let membrane = new ReactiveMembrane({\n      valueMutated(target, key) {\n        mutationCallback(target, key);\n      }\n\n    });\n    return {\n      data: membrane.getProxy(data),\n      membrane: membrane\n    };\n  }\n  function unwrap$1(membrane, observable) {\n    let unwrappedData = membrane.unwrapProxy(observable);\n    let copy = {};\n    Object.keys(unwrappedData).forEach(key => {\n      if (['$el', '$refs', '$nextTick', '$watch'].includes(key)) return;\n      copy[key] = unwrappedData[key];\n    });\n    return copy;\n  }\n\n  class Component {\n    constructor(el, componentForClone = null) {\n      this.$el = el;\n      const dataAttr = this.$el.getAttribute('x-data');\n      const dataExpression = dataAttr === '' ? '{}' : dataAttr;\n      const initExpression = this.$el.getAttribute('x-init');\n      let dataExtras = {\n        $el: this.$el\n      };\n      let canonicalComponentElementReference = componentForClone ? componentForClone.$el : this.$el;\n      Object.entries(Alpine.magicProperties).forEach(([name, callback]) => {\n        Object.defineProperty(dataExtras, `$${name}`, {\n          get: function get() {\n            return callback(canonicalComponentElementReference);\n          }\n        });\n      });\n      this.unobservedData = componentForClone ? componentForClone.getUnobservedData() : saferEval(el, dataExpression, dataExtras);\n      // Construct a Proxy-based observable. This will be used to handle reactivity.\n\n      let {\n        membrane,\n        data\n      } = this.wrapDataInObservable(this.unobservedData);\n      this.$data = data;\n      this.membrane = membrane; // After making user-supplied data methods reactive, we can now add\n      // our magic properties to the original data for access.\n\n      this.unobservedData.$el = this.$el;\n      this.unobservedData.$refs = this.getRefsProxy();\n      this.nextTickStack = [];\n\n      this.unobservedData.$nextTick = callback => {\n        this.nextTickStack.push(callback);\n      };\n\n      this.watchers = {};\n\n      this.unobservedData.$watch = (property, callback) => {\n        if (!this.watchers[property]) this.watchers[property] = [];\n        this.watchers[property].push(callback);\n      };\n      /* MODERN-ONLY:START */\n      // We remove this piece of code from the legacy build.\n      // In IE11, we have already defined our helpers at this point.\n      // Register custom magic properties.\n\n\n      Object.entries(Alpine.magicProperties).forEach(([name, callback]) => {\n        Object.defineProperty(this.unobservedData, `$${name}`, {\n          get: function get() {\n            return callback(canonicalComponentElementReference, this.$el);\n          }\n        });\n      });\n      /* MODERN-ONLY:END */\n\n      this.showDirectiveStack = [];\n      this.showDirectiveLastElement;\n      componentForClone || Alpine.onBeforeComponentInitializeds.forEach(callback => callback(this));\n      var initReturnedCallback; // If x-init is present AND we aren't cloning (skip x-init on clone)\n\n      if (initExpression && !componentForClone) {\n        // We want to allow data manipulation, but not trigger DOM updates just yet.\n        // We haven't even initialized the elements with their Alpine bindings. I mean c'mon.\n        this.pauseReactivity = true;\n        initReturnedCallback = this.evaluateReturnExpression(this.$el, initExpression);\n        this.pauseReactivity = false;\n      } // Register all our listeners and set all our attribute bindings.\n      // If we're cloning a component, the third parameter ensures no duplicate\n      // event listeners are registered (the mutation observer will take care of them)\n\n\n      this.initializeElements(this.$el, () => {}, componentForClone); // Use mutation observer to detect new elements being added within this component at run-time.\n      // Alpine's just so darn flexible amirite?\n\n      this.listenForNewElementsToInitialize();\n\n      if (typeof initReturnedCallback === 'function') {\n        // Run the callback returned from the \"x-init\" hook to allow the user to do stuff after\n        // Alpine's got it's grubby little paws all over everything.\n        initReturnedCallback.call(this.$data);\n      }\n\n      componentForClone || setTimeout(() => {\n        Alpine.onComponentInitializeds.forEach(callback => callback(this));\n      }, 0);\n    }\n\n    getUnobservedData() {\n      return unwrap$1(this.membrane, this.$data);\n    }\n\n    wrapDataInObservable(data) {\n      var self = this;\n      let updateDom = debounce(function () {\n        self.updateElements(self.$el);\n      }, 0);\n      return wrap(data, (target, key) => {\n        if (self.watchers[key]) {\n          // If there's a watcher for this specific key, run it.\n          self.watchers[key].forEach(callback => callback(target[key]));\n        } else if (Array.isArray(target)) {\n          // Arrays are special cases, if any of the items change, we consider the array as mutated.\n          Object.keys(self.watchers).forEach(fullDotNotationKey => {\n            let dotNotationParts = fullDotNotationKey.split('.'); // Ignore length mutations since they would result in duplicate calls.\n            // For example, when calling push, we would get a mutation for the item's key\n            // and a second mutation for the length property.\n\n            if (key === 'length') return;\n            dotNotationParts.reduce((comparisonData, part) => {\n              if (Object.is(target, comparisonData[part])) {\n                self.watchers[fullDotNotationKey].forEach(callback => callback(target));\n              }\n\n              return comparisonData[part];\n            }, self.unobservedData);\n          });\n        } else {\n          // Let's walk through the watchers with \"dot-notation\" (foo.bar) and see\n          // if this mutation fits any of them.\n          Object.keys(self.watchers).filter(i => i.includes('.')).forEach(fullDotNotationKey => {\n            let dotNotationParts = fullDotNotationKey.split('.'); // If this dot-notation watcher's last \"part\" doesn't match the current\n            // key, then skip it early for performance reasons.\n\n            if (key !== dotNotationParts[dotNotationParts.length - 1]) return; // Now, walk through the dot-notation \"parts\" recursively to find\n            // a match, and call the watcher if one's found.\n\n            dotNotationParts.reduce((comparisonData, part) => {\n              if (Object.is(target, comparisonData)) {\n                // Run the watchers.\n                self.watchers[fullDotNotationKey].forEach(callback => callback(target[key]));\n              }\n\n              return comparisonData[part];\n            }, self.unobservedData);\n          });\n        } // Don't react to data changes for cases like the `x-created` hook.\n\n\n        if (self.pauseReactivity) return;\n        updateDom();\n      });\n    }\n\n    walkAndSkipNestedComponents(el, callback, initializeComponentCallback = () => {}) {\n      walk(el, el => {\n        // We've hit a component.\n        if (el.hasAttribute('x-data')) {\n          // If it's not the current one.\n          if (!el.isSameNode(this.$el)) {\n            // Initialize it if it's not.\n            if (!el.__x) initializeComponentCallback(el); // Now we'll let that sub-component deal with itself.\n\n            return false;\n          }\n        }\n\n        return callback(el);\n      });\n    }\n\n    initializeElements(rootEl, extraVars = () => {}, componentForClone = false) {\n      this.walkAndSkipNestedComponents(rootEl, el => {\n        // Don't touch spawns from for loop\n        if (el.__x_for_key !== undefined) return false; // Don't touch spawns from if directives\n\n        if (el.__x_inserted_me !== undefined) return false;\n        this.initializeElement(el, extraVars, componentForClone ? false : true);\n      }, el => {\n        if (!componentForClone) el.__x = new Component(el);\n      });\n      this.executeAndClearRemainingShowDirectiveStack();\n      this.executeAndClearNextTickStack(rootEl);\n    }\n\n    initializeElement(el, extraVars, shouldRegisterListeners = true) {\n      // To support class attribute merging, we have to know what the element's\n      // original class attribute looked like for reference.\n      if (el.hasAttribute('class') && getXAttrs(el, this).length > 0) {\n        el.__x_original_classes = convertClassStringToArray(el.getAttribute('class'));\n      }\n\n      shouldRegisterListeners && this.registerListeners(el, extraVars);\n      this.resolveBoundAttributes(el, true, extraVars);\n    }\n\n    updateElements(rootEl, extraVars = () => {}) {\n      this.walkAndSkipNestedComponents(rootEl, el => {\n        // Don't touch spawns from for loop (and check if the root is actually a for loop in a parent, don't skip it.)\n        if (el.__x_for_key !== undefined && !el.isSameNode(this.$el)) return false;\n        this.updateElement(el, extraVars);\n      }, el => {\n        el.__x = new Component(el);\n      });\n      this.executeAndClearRemainingShowDirectiveStack();\n      this.executeAndClearNextTickStack(rootEl);\n    }\n\n    executeAndClearNextTickStack(el) {\n      // Skip spawns from alpine directives\n      if (el === this.$el && this.nextTickStack.length > 0) {\n        // We run the tick stack after the next frame to allow any\n        // running transitions to pass the initial show stage.\n        requestAnimationFrame(() => {\n          while (this.nextTickStack.length > 0) {\n            this.nextTickStack.shift()();\n          }\n        });\n      }\n    }\n\n    executeAndClearRemainingShowDirectiveStack() {\n      // The goal here is to start all the x-show transitions\n      // and build a nested promise chain so that elements\n      // only hide when the children are finished hiding.\n      this.showDirectiveStack.reverse().map(handler => {\n        return new Promise((resolve, reject) => {\n          handler(resolve, reject);\n        });\n      }).reduce((promiseChain, promise) => {\n        return promiseChain.then(() => {\n          return promise.then(finishElement => {\n            finishElement();\n          });\n        });\n      }, Promise.resolve(() => {})).catch(e => {\n        if (e !== TRANSITION_CANCELLED) throw e;\n      }); // We've processed the handler stack. let's clear it.\n\n      this.showDirectiveStack = [];\n      this.showDirectiveLastElement = undefined;\n    }\n\n    updateElement(el, extraVars) {\n      this.resolveBoundAttributes(el, false, extraVars);\n    }\n\n    registerListeners(el, extraVars) {\n      getXAttrs(el, this).forEach(({\n        type,\n        value,\n        modifiers,\n        expression\n      }) => {\n        switch (type) {\n          case 'on':\n            registerListener(this, el, value, modifiers, expression, extraVars);\n            break;\n\n          case 'model':\n            registerModelListener(this, el, modifiers, expression, extraVars);\n            break;\n        }\n      });\n    }\n\n    resolveBoundAttributes(el, initialUpdate = false, extraVars) {\n      let attrs = getXAttrs(el, this);\n      attrs.forEach(({\n        type,\n        value,\n        modifiers,\n        expression\n      }) => {\n        switch (type) {\n          case 'model':\n            handleAttributeBindingDirective(this, el, 'value', expression, extraVars, type, modifiers);\n            break;\n\n          case 'bind':\n            // The :key binding on an x-for is special, ignore it.\n            if (el.tagName.toLowerCase() === 'template' && value === 'key') return;\n            handleAttributeBindingDirective(this, el, value, expression, extraVars, type, modifiers);\n            break;\n\n          case 'text':\n            var output = this.evaluateReturnExpression(el, expression, extraVars);\n            handleTextDirective(el, output, expression);\n            break;\n\n          case 'html':\n            handleHtmlDirective(this, el, expression, extraVars);\n            break;\n\n          case 'show':\n            var output = this.evaluateReturnExpression(el, expression, extraVars);\n            handleShowDirective(this, el, output, modifiers, initialUpdate);\n            break;\n\n          case 'if':\n            // If this element also has x-for on it, don't process x-if.\n            // We will let the \"x-for\" directive handle the \"if\"ing.\n            if (attrs.some(i => i.type === 'for')) return;\n            var output = this.evaluateReturnExpression(el, expression, extraVars);\n            handleIfDirective(this, el, output, initialUpdate, extraVars);\n            break;\n\n          case 'for':\n            handleForDirective(this, el, expression, initialUpdate, extraVars);\n            break;\n\n          case 'cloak':\n            el.removeAttribute('x-cloak');\n            break;\n        }\n      });\n    }\n\n    evaluateReturnExpression(el, expression, extraVars = () => {}) {\n      return saferEval(el, expression, this.$data, _objectSpread2(_objectSpread2({}, extraVars()), {}, {\n        $dispatch: this.getDispatchFunction(el)\n      }));\n    }\n\n    evaluateCommandExpression(el, expression, extraVars = () => {}) {\n      return saferEvalNoReturn(el, expression, this.$data, _objectSpread2(_objectSpread2({}, extraVars()), {}, {\n        $dispatch: this.getDispatchFunction(el)\n      }));\n    }\n\n    getDispatchFunction(el) {\n      return (event, detail = {}) => {\n        el.dispatchEvent(new CustomEvent(event, {\n          detail,\n          bubbles: true\n        }));\n      };\n    }\n\n    listenForNewElementsToInitialize() {\n      const targetNode = this.$el;\n      const observerOptions = {\n        childList: true,\n        attributes: true,\n        subtree: true\n      };\n      const observer = new MutationObserver(mutations => {\n        for (let i = 0; i < mutations.length; i++) {\n          // Filter out mutations triggered from child components.\n          const closestParentComponent = mutations[i].target.closest('[x-data]');\n          if (!(closestParentComponent && closestParentComponent.isSameNode(this.$el))) continue;\n\n          if (mutations[i].type === 'attributes' && mutations[i].attributeName === 'x-data') {\n            const xAttr = mutations[i].target.getAttribute('x-data') || '{}';\n            const rawData = saferEval(this.$el, xAttr, {\n              $el: this.$el\n            });\n            Object.keys(rawData).forEach(key => {\n              if (this.$data[key] !== rawData[key]) {\n                this.$data[key] = rawData[key];\n              }\n            });\n          }\n\n          if (mutations[i].addedNodes.length > 0) {\n            mutations[i].addedNodes.forEach(node => {\n              if (node.nodeType !== 1 || node.__x_inserted_me) return;\n\n              if (node.matches('[x-data]') && !node.__x) {\n                node.__x = new Component(node);\n                return;\n              }\n\n              this.initializeElements(node);\n            });\n          }\n        }\n      });\n      observer.observe(targetNode, observerOptions);\n    }\n\n    getRefsProxy() {\n      var self = this;\n      var refObj = {};\n      // One of the goals of this is to not hold elements in memory, but rather re-evaluate\n      // the DOM when the system needs something from it. This way, the framework is flexible and\n      // friendly to outside DOM changes from libraries like Vue/Livewire.\n      // For this reason, I'm using an \"on-demand\" proxy to fake a \"$refs\" object.\n\n      return new Proxy(refObj, {\n        get(object, property) {\n          if (property === '$isAlpineProxy') return true;\n          var ref; // We can't just query the DOM because it's hard to filter out refs in\n          // nested components.\n\n          self.walkAndSkipNestedComponents(self.$el, el => {\n            if (el.hasAttribute('x-ref') && el.getAttribute('x-ref') === property) {\n              ref = el;\n            }\n          });\n          return ref;\n        }\n\n      });\n    }\n\n  }\n\n  const Alpine = {\n    version: \"2.8.2\",\n    pauseMutationObserver: false,\n    magicProperties: {},\n    onComponentInitializeds: [],\n    onBeforeComponentInitializeds: [],\n    ignoreFocusedForValueBinding: false,\n    start: async function start() {\n      if (!isTesting()) {\n        await domReady();\n      }\n\n      this.discoverComponents(el => {\n        this.initializeComponent(el);\n      }); // It's easier and more performant to just support Turbolinks than listen\n      // to MutationObserver mutations at the document level.\n\n      document.addEventListener(\"turbolinks:load\", () => {\n        this.discoverUninitializedComponents(el => {\n          this.initializeComponent(el);\n        });\n      });\n      this.listenForNewUninitializedComponentsAtRunTime();\n    },\n    discoverComponents: function discoverComponents(callback) {\n      const rootEls = document.querySelectorAll('[x-data]');\n      rootEls.forEach(rootEl => {\n        callback(rootEl);\n      });\n    },\n    discoverUninitializedComponents: function discoverUninitializedComponents(callback, el = null) {\n      const rootEls = (el || document).querySelectorAll('[x-data]');\n      Array.from(rootEls).filter(el => el.__x === undefined).forEach(rootEl => {\n        callback(rootEl);\n      });\n    },\n    listenForNewUninitializedComponentsAtRunTime: function listenForNewUninitializedComponentsAtRunTime() {\n      const targetNode = document.querySelector('body');\n      const observerOptions = {\n        childList: true,\n        attributes: true,\n        subtree: true\n      };\n      const observer = new MutationObserver(mutations => {\n        if (this.pauseMutationObserver) return;\n\n        for (let i = 0; i < mutations.length; i++) {\n          if (mutations[i].addedNodes.length > 0) {\n            mutations[i].addedNodes.forEach(node => {\n              // Discard non-element nodes (like line-breaks)\n              if (node.nodeType !== 1) return; // Discard any changes happening within an existing component.\n              // They will take care of themselves.\n\n              if (node.parentElement && node.parentElement.closest('[x-data]')) return;\n              this.discoverUninitializedComponents(el => {\n                this.initializeComponent(el);\n              }, node.parentElement);\n            });\n          }\n        }\n      });\n      observer.observe(targetNode, observerOptions);\n    },\n    initializeComponent: function initializeComponent(el) {\n      if (!el.__x) {\n        // Wrap in a try/catch so that we don't prevent other components\n        // from initializing when one component contains an error.\n        try {\n          el.__x = new Component(el);\n        } catch (error) {\n          setTimeout(() => {\n            throw error;\n          }, 0);\n        }\n      }\n    },\n    clone: function clone(component, newEl) {\n      if (!newEl.__x) {\n        newEl.__x = new Component(newEl, component);\n      }\n    },\n    addMagicProperty: function addMagicProperty(name, callback) {\n      this.magicProperties[name] = callback;\n    },\n    onComponentInitialized: function onComponentInitialized(callback) {\n      this.onComponentInitializeds.push(callback);\n    },\n    onBeforeComponentInitialized: function onBeforeComponentInitialized(callback) {\n      this.onBeforeComponentInitializeds.push(callback);\n    }\n  };\n\n  if (!isTesting()) {\n    window.Alpine = Alpine;\n\n    if (window.deferLoadingAlpine) {\n      window.deferLoadingAlpine(function () {\n        window.Alpine.start();\n      });\n    } else {\n      window.Alpine.start();\n    }\n  }\n\n  return Alpine;\n\n})));\n", "/* flatpickr v4.6.13, @license MIT */\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.flatpickr = factory());\n}(this, (function () { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\r\n\r\n    function __spreadArrays() {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    }\n\n    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    ];\n    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            // Thursday in current week decides the year.\n            date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n            // January 4 is always in week 1.\n            var week1 = new Date(date.getFullYear(), 0, 4);\n            // Adjust to Thursday in week 1 and count number of weeks from date to week1.\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\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    var pad = function (number, length) {\n        if (length === void 0) { length = 2; }\n        return (\"000\" + number).slice(length * -1);\n    };\n    var int = function (bool) { return (bool === true ? 1 : 0); };\n    /* istanbul ignore next */\n    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    }\n    var arrayify = function (obj) {\n        return obj instanceof Array ? obj : [obj];\n    };\n\n    function toggleClass(elem, className, bool) {\n        if (bool === true)\n            return elem.classList.add(className);\n        elem.classList.remove(className);\n    }\n    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    }\n    function clearNode(node) {\n        while (node.firstChild)\n            node.removeChild(node.firstChild);\n    }\n    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; // nothing found\n    }\n    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    }\n    function getEventTarget(event) {\n        try {\n            if (typeof event.composedPath === \"function\") {\n                var path = event.composedPath();\n                return path[0];\n            }\n            return event.target;\n        }\n        catch (error) {\n            return event.target;\n        }\n    }\n\n    var doNothing = function () { return undefined; };\n    var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n    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    };\n    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    };\n    var formats = {\n        // get the date in UTC\n        Z: function (date) { return date.toISOString(); },\n        // weekday name, short, e.g. Thu\n        D: function (date, locale, options) {\n            return locale.weekdays.shorthand[formats.w(date, locale, options)];\n        },\n        // full month name e.g. January\n        F: function (date, locale, options) {\n            return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n        },\n        // padded hour 1-12\n        G: function (date, locale, options) {\n            return pad(formats.h(date, locale, options));\n        },\n        // hours with leading zero e.g. 03\n        H: function (date) { return pad(date.getHours()); },\n        // day (1-30) with ordinal suffix e.g. 1st, 2nd\n        J: function (date, locale) {\n            return locale.ordinal !== undefined\n                ? date.getDate() + locale.ordinal(date.getDate())\n                : date.getDate();\n        },\n        // AM/PM\n        K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n        // shorthand month e.g. Jan, Sep, Oct, etc\n        M: function (date, locale) {\n            return monthToStr(date.getMonth(), true, locale);\n        },\n        // seconds 00-59\n        S: function (date) { return pad(date.getSeconds()); },\n        // unix timestamp\n        U: function (date) { return date.getTime() / 1000; },\n        W: function (date, _, options) {\n            return options.getWeek(date);\n        },\n        // full year e.g. 2016, padded (0001-9999)\n        Y: function (date) { return pad(date.getFullYear(), 4); },\n        // day in month, padded (01-30)\n        d: function (date) { return pad(date.getDate()); },\n        // hour from 1-12 (am/pm)\n        h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n        // minutes, padded with leading zero e.g. 09\n        i: function (date) { return pad(date.getMinutes()); },\n        // day in month (1-30)\n        j: function (date) { return date.getDate(); },\n        // weekday name, full, e.g. Thursday\n        l: function (date, locale) {\n            return locale.weekdays.longhand[date.getDay()];\n        },\n        // padded month number (01-12)\n        m: function (date) { return pad(date.getMonth() + 1); },\n        // the month number (1-12)\n        n: function (date) { return date.getMonth() + 1; },\n        // seconds 0-59\n        s: function (date) { return date.getSeconds(); },\n        // Unix Milliseconds\n        u: function (date) { return date.getTime(); },\n        // number of the day of the week\n        w: function (date) { return date.getDay(); },\n        // last two digits of year e.g. 16 for 2016\n        y: function (date) { return String(date.getFullYear()).substring(2); },\n    };\n\n    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    };\n    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 // timestamp\n            )\n                // create a copy\n                parsedDate = new Date(date);\n            else if (typeof date === \"string\") {\n                // 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) // datestrings w/ timezone\n                ) {\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_1 = format[i];\n                        var isBackSlash = token_1 === \"\\\\\";\n                        var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                        if (tokenRegex[token_1] && !escaped) {\n                            regexStr += tokenRegex[token_1];\n                            var match = new RegExp(regexStr).exec(date);\n                            if (match && (matched = true)) {\n                                ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n                                    fn: revFormat[token_1],\n                                    val: match[++matchIndex],\n                                });\n                            }\n                        }\n                        else if (!isBackSlash)\n                            regexStr += \".\"; // don't really care\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            /* istanbul ignore next */\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    };\n    /**\n     * Compute the difference in dates, measured in ms\n     */\n    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    }\n    var isBetween = function (ts, ts1, ts2) {\n        return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n    };\n    var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n        return hours * 3600 + minutes * 60 + seconds;\n    };\n    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    };\n    var duration = {\n        DAY: 86400000,\n    };\n    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\n    if (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\n    var DEBOUNCED_CHANGE_MS = 300;\n    function FlatpickrInstance(element, instanceConfig) {\n        var self = {\n            config: __assign(__assign({}, defaults), 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            /* TODO: investigate this further\n        \n              Currently, there is weird positioning behavior in safari causing pages\n              to scroll up. https://github.com/chmln/flatpickr/issues/563\n        \n              However, most browsers are not Safari and positioning is expensive when used\n              in scale. https://github.com/chmln/flatpickr/issues/1096\n            */\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        /**\n         * The handler for all events targeting the time inputs\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        /**\n         * Syncs the selected date object time with user's time input\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        /**\n         * Syncs time input values with a date\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        /**\n         * Sets the hours, minutes, and optionally seconds\n         * of the latest selected date object and the\n         * corresponding time inputs\n         * @param {Number} hours the hour. whether its military\n         *                 or am-pm gets inferred from config\n         * @param {Number} minutes the minutes\n         * @param {Number} seconds the seconds (optional)\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        /**\n         * Handles the year input and incrementing events\n         * @param {Event} event the keyup or increment event\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        /**\n         * Essentially addEventListener + tracking\n         * @param {Element} element the element to addEventListener to\n         * @param {String} event the event name\n         * @param {Function} handler the event handler\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        /**\n         * Adds all the necessary event listeners\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        /**\n         * Set the calendar view to a particular date.\n         * @param {Date} jumpDate the date to set the view to\n         * @param {boolean} triggerChange if change events should be triggered\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                /* istanbul ignore next */\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        /**\n         * The up/down arrow handler for time inputs\n         * @param {Event} e the click event\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        /**\n         * Increments/decrements the value of input associ-\n         * ated with the up/down arrow by dispatching an\n         * \"increment\" event on the input.\n         *\n         * @param {Event} e the click event\n         * @param {Number} delta the diff (usually 1 or -1)\n         * @param {Element} inputElem the input element\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            // prepend days from the ending of previous month\n            for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n                days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n            }\n            // Start at 1 since there is no 0th day\n            for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n                days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n            }\n            // append days from the next month\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            //updateNavigationCurrentMonth();\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            // TODO: week numbers for each month\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                // add self.amPM if appropriate\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        /* istanbul ignore next */\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                // triggerChangeEvent is true (default) or an Event\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                    // web components\n                    // e.path is not present in all browsers. circumventing typechecks\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); // 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) // disabled by function\n                )\n                    return bool;\n                else if (d instanceof Date &&\n                    dateToCheck !== undefined &&\n                    d.getTime() === dateToCheck.getTime())\n                    // disabled by date\n                    return bool;\n                else if (typeof d === \"string\") {\n                    // disabled by date string\n                    var parsed = self.parseDate(d, undefined, true);\n                    return parsed && parsed.getTime() === dateToCheck.getTime()\n                        ? bool\n                        : !bool;\n                }\n                else if (\n                // disabled by range\n                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            // e.key                      e.keyCode\n            // \"Backspace\"                        8\n            // \"Tab\"                              9\n            // \"Enter\"                           13\n            // \"Escape\"     (IE \"Esc\")           27\n            // \"ArrowLeft\"  (IE \"Left\")          37\n            // \"ArrowUp\"    (IE \"Up\")            38\n            // \"ArrowRight\" (IE \"Right\")         39\n            // \"ArrowDown\"  (IE \"Down\")          40\n            // \"Delete\"     (IE \"Del\")           46\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: // escape\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                }\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 || defaults.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 || defaults.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                // https://github.com/microsoft/TypeScript/issues/31663\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                // some testing environments don't have css support\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                // hack - bugs in the way IE handles focus keeps the calendar open\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                // unless selecting same date twice, sort ascendingly\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            // maintain focus\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                }\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; }); // remove falsy values\n        }\n        function setupDates() {\n            self.selectedDates = [];\n            self.now = self.parseDate(self.config.now) || new Date();\n            // Workaround IE11 setting placeholder as the input's value\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            /* istanbul ignore next */\n            if (!self.input) {\n                self.config.errorHandler(new Error(\"Invalid input element specified\"));\n                return;\n            }\n            // hack: store previous type to restore it after destroy()\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                // replicate self.element\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 the instance has been destroyed already, all hooks have been removed\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                // many front-end frameworks bind to the input event\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        /**\n         * Updates the values of inputs associated with the calendar\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    }\n    /* istanbul ignore next */\n    function _flatpickr(nodeList, config) {\n        // static list\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    }\n    /* istanbul ignore next */\n    if (typeof HTMLElement !== \"undefined\" &&\n        typeof HTMLCollection !== \"undefined\" &&\n        typeof NodeList !== \"undefined\") {\n        // browser env\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    }\n    /* istanbul ignore next */\n    var 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    };\n    /* istanbul ignore next */\n    flatpickr.defaultConfig = {};\n    flatpickr.l10ns = {\n        en: __assign({}, english),\n        default: __assign({}, english),\n    };\n    flatpickr.localize = function (l10n) {\n        flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n    };\n    flatpickr.setDefaults = function (config) {\n        flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n    };\n    flatpickr.parseDate = createDateParser({});\n    flatpickr.formatDate = createDateFormatter({});\n    flatpickr.compareDates = compareDates;\n    /* istanbul ignore next */\n    if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n        jQuery.fn.flatpickr = function (config) {\n            return _flatpickr(this, config);\n        };\n    }\n    Date.prototype.fp_incr = function (days) {\n        return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n    };\n    if (typeof window !== \"undefined\") {\n        window.flatpickr = flatpickr;\n    }\n\n    return flatpickr;\n\n})));\n", "export const attachmentSelector = \"[data-trix-attachment]\"\n\nconst attachments = {\n  preview: {\n    presentation: \"gallery\",\n    caption: {\n      name: true,\n      size: true,\n    },\n  },\n  file: {\n    caption: {\n      size: true,\n    },\n  },\n}\nexport default attachments\n", "const attributes = {\n  default: {\n    tagName: \"div\",\n    parse: false,\n  },\n  quote: {\n    tagName: \"blockquote\",\n    nestable: true,\n  },\n  heading1: {\n    tagName: \"h1\",\n    terminal: true,\n    breakOnReturn: true,\n    group: false,\n  },\n  code: {\n    tagName: \"pre\",\n    terminal: true,\n    htmlAttributes: [ \"language\" ],\n    text: {\n      plaintext: true,\n    },\n  },\n  bulletList: {\n    tagName: \"ul\",\n    parse: false,\n  },\n  bullet: {\n    tagName: \"li\",\n    listAttribute: \"bulletList\",\n    group: false,\n    nestable: true,\n    test(element) {\n      return tagName(element.parentNode) === attributes[this.listAttribute].tagName\n    },\n  },\n  numberList: {\n    tagName: \"ol\",\n    parse: false,\n  },\n  number: {\n    tagName: \"li\",\n    listAttribute: \"numberList\",\n    group: false,\n    nestable: true,\n    test(element) {\n      return tagName(element.parentNode) === attributes[this.listAttribute].tagName\n    },\n  },\n  attachmentGallery: {\n    tagName: \"div\",\n    exclusive: true,\n    terminal: true,\n    parse: false,\n    group: false,\n  },\n}\n\nconst tagName = (element) => element?.tagName?.toLowerCase()\n\nexport default attributes\n", "const androidVersionMatch = navigator.userAgent.match(/android\\s([0-9]+.*Chrome)/i)\nconst androidVersion = androidVersionMatch && parseInt(androidVersionMatch[1])\n\nexport default {\n  // Android emits composition events when moving the cursor through existing text\n  // Introduced in Chrome 65: https://bugs.chromium.org/p/chromium/issues/detail?id=764439#c9\n  composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n\n  // Android 13, especially on Samsung keyboards, emits extra compositionend and beforeinput events\n  // that can make the input handler lose the current selection or enter an infinite input -> render -> input\n  // loop.\n  recentAndroid: androidVersion && androidVersion > 12,\n  samsungAndroid: androidVersion && navigator.userAgent.match(/Android.*SM-/),\n\n  // IE 11 activates resizing handles on editable elements that have \"layout\"\n  forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n  // https://www.w3.org/TR/input-events-1/ + https://www.w3.org/TR/input-events-2/\n  supportsInputEvents: typeof InputEvent !== \"undefined\" &&\n    [ \"data\", \"getTargetRanges\", \"inputType\" ].every(prop => prop in InputEvent.prototype),\n}\n", "export default {\n  ADD_ATTR: [ \"language\" ],\n  SAFE_FOR_XML: false,\n  RETURN_DOM: true\n}\n", "export default {\n  attachFiles: \"Attach Files\",\n  bold: \"Bold\",\n  bullets: \"Bullets\",\n  byte: \"Byte\",\n  bytes: \"Bytes\",\n  captionPlaceholder: \"Add a caption…\",\n  code: \"Code\",\n  heading1: \"Heading\",\n  indent: \"Increase Level\",\n  italic: \"Italic\",\n  link: \"Link\",\n  numbers: \"Numbers\",\n  outdent: \"Decrease Level\",\n  quote: \"Quote\",\n  redo: \"Redo\",\n  remove: \"Remove\",\n  strike: \"Strikethrough\",\n  undo: \"Undo\",\n  unlink: \"Unlink\",\n  url: \"URL\",\n  urlPlaceholder: \"Enter a URL…\",\n  GB: \"GB\",\n  KB: \"KB\",\n  MB: \"MB\",\n  PB: \"PB\",\n  TB: \"TB\",\n}\n", "/* eslint-disable\n    no-case-declarations,\n*/\nimport lang from \"trix/config/lang\"\n\nconst sizes = [ lang.bytes, lang.KB, lang.MB, lang.GB, lang.TB, lang.PB ]\n\nexport default {\n  prefix: \"IEC\",\n  precision: 2,\n\n  formatter(number) {\n    switch (number) {\n      case 0:\n        return `0 ${lang.bytes}`\n      case 1:\n        return `1 ${lang.byte}`\n      default:\n        let base\n\n        if (this.prefix === \"SI\") {\n          base = 1000\n        } else if (this.prefix === \"IEC\") {\n          base = 1024\n        }\n\n        const exp = Math.floor(Math.log(number) / Math.log(base))\n        const humanSize = number / Math.pow(base, exp)\n        const string = humanSize.toFixed(this.precision)\n        const withoutInsignificantZeros = string.replace(/0*$/, \"\").replace(/\\.$/, \"\")\n        return `${withoutInsignificantZeros} ${sizes[exp]}`\n    }\n  },\n}\n", "export const ZERO_WIDTH_SPACE = \"\\uFEFF\"\nexport const NON_BREAKING_SPACE = \"\\u00A0\"\nexport const OBJECT_REPLACEMENT_CHARACTER = \"\\uFFFC\"\n", "export const extend = function(properties) {\n  for (const key in properties) {\n    const value = properties[key]\n    this[key] = value\n  }\n  return this\n}\n", "import blockAttributes from \"trix/config/block_attributes\"\nimport { ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport { extend } from \"./extend\"\nimport { attachmentSelector } from \"trix/config/attachments\"\n\nconst html = document.documentElement\nconst match = html.matches\n\nexport const handleEvent = function(eventName, { onElement, matchingSelector, withCallback, inPhase, preventDefault, times } = {}) {\n  const element = onElement ? onElement : html\n  const selector = matchingSelector\n  const useCapture = inPhase === \"capturing\"\n\n  const handler = function(event) {\n    if (times != null && --times === 0) {\n      handler.destroy()\n    }\n    const target = findClosestElementFromNode(event.target, { matchingSelector: selector })\n    if (target != null) {\n      withCallback?.call(target, event, target)\n      if (preventDefault) {\n        event.preventDefault()\n      }\n    }\n  }\n\n  handler.destroy = () => element.removeEventListener(eventName, handler, useCapture)\n\n  element.addEventListener(eventName, handler, useCapture)\n  return handler\n}\n\nexport const handleEventOnce = function(eventName, options = {}) {\n  options.times = 1\n  return handleEvent(eventName, options)\n}\n\nexport const createEvent = function(eventName, { bubbles, cancelable, attributes } = {}) {\n  bubbles = bubbles !== false\n  cancelable = cancelable !== false\n\n  const event = document.createEvent(\"Events\")\n  event.initEvent(eventName, bubbles, cancelable)\n  if (attributes != null) {\n    extend.call(event, attributes)\n  }\n  return event\n}\n\nexport const triggerEvent = function(eventName, { onElement, bubbles, cancelable, attributes } = {}) {\n  const element = onElement != null ? onElement : html\n  const event = createEvent(eventName, { bubbles, cancelable, attributes })\n  return element.dispatchEvent(event)\n}\n\nexport const elementMatchesSelector = function(element, selector) {\n  if (element?.nodeType === 1) {\n    return match.call(element, selector)\n  }\n}\n\nexport const findClosestElementFromNode = function(node, { matchingSelector, untilNode } = {}) {\n  while (node && node.nodeType !== Node.ELEMENT_NODE) {\n    node = node.parentNode\n  }\n  if (node == null) {\n    return\n  }\n\n  if (matchingSelector != null) {\n    if (node.closest && untilNode == null) {\n      return node.closest(matchingSelector)\n    } else {\n      while (node && node !== untilNode) {\n        if (elementMatchesSelector(node, matchingSelector)) {\n          return node\n        }\n        node = node.parentNode\n      }\n    }\n  } else {\n    return node\n  }\n}\n\nexport const findInnerElement = function(element) {\n  while (element?.firstElementChild) {\n    element = element.firstElementChild\n  }\n  return element\n}\n\nexport const innerElementIsActive = (element) =>\n  document.activeElement !== element && elementContainsNode(element, document.activeElement)\n\nexport const elementContainsNode = function(element, node) {\n  if (!element || !node) {\n    return\n  }\n  while (node) {\n    if (node === element) {\n      return true\n    }\n    node = node.parentNode\n  }\n}\n\nexport const findNodeFromContainerAndOffset = function(container, offset) {\n  if (!container) {\n    return\n  }\n  if (container.nodeType === Node.TEXT_NODE) {\n    return container\n  } else if (offset === 0) {\n    return container.firstChild != null ? container.firstChild : container\n  } else {\n    return container.childNodes.item(offset - 1)\n  }\n}\n\nexport const findElementFromContainerAndOffset = function(container, offset) {\n  const node = findNodeFromContainerAndOffset(container, offset)\n  return findClosestElementFromNode(node)\n}\n\nexport const findChildIndexOfNode = function(node) {\n  if (!node?.parentNode) {\n    return\n  }\n  let childIndex = 0\n  node = node.previousSibling\n  while (node) {\n    childIndex++\n    node = node.previousSibling\n  }\n  return childIndex\n}\n\nexport const removeNode = (node) => node?.parentNode?.removeChild(node)\n\nexport const walkTree = function(tree, { onlyNodesOfType, usingFilter, expandEntityReferences } = {}) {\n  const whatToShow = (() => {\n    switch (onlyNodesOfType) {\n      case \"element\":\n        return NodeFilter.SHOW_ELEMENT\n      case \"text\":\n        return NodeFilter.SHOW_TEXT\n      case \"comment\":\n        return NodeFilter.SHOW_COMMENT\n      default:\n        return NodeFilter.SHOW_ALL\n    }\n  })()\n\n  return document.createTreeWalker(\n    tree,\n    whatToShow,\n    usingFilter != null ? usingFilter : null,\n    expandEntityReferences === true\n  )\n}\n\nexport const tagName = (element) => element?.tagName?.toLowerCase()\n\nexport const makeElement = function(tag, options = {}) {\n  let key, value\n  if (typeof tag === \"object\") {\n    options = tag\n    tag = options.tagName\n  } else {\n    options = { attributes: options }\n  }\n\n  const element = document.createElement(tag)\n\n  if (options.editable != null) {\n    if (options.attributes == null) {\n      options.attributes = {}\n    }\n    options.attributes.contenteditable = options.editable\n  }\n\n  if (options.attributes) {\n    for (key in options.attributes) {\n      value = options.attributes[key]\n      element.setAttribute(key, value)\n    }\n  }\n\n  if (options.style) {\n    for (key in options.style) {\n      value = options.style[key]\n      element.style[key] = value\n    }\n  }\n\n  if (options.data) {\n    for (key in options.data) {\n      value = options.data[key]\n      element.dataset[key] = value\n    }\n  }\n\n  if (options.className) {\n    options.className.split(\" \").forEach((className) => {\n      element.classList.add(className)\n    })\n  }\n\n  if (options.textContent) {\n    element.textContent = options.textContent\n  }\n\n  if (options.childNodes) {\n    [].concat(options.childNodes).forEach((childNode) => {\n      element.appendChild(childNode)\n    })\n  }\n\n  return element\n}\n\nlet blockTagNames = undefined\n\nexport const getBlockTagNames = function() {\n  if (blockTagNames != null) {\n    return blockTagNames\n  }\n\n  blockTagNames = []\n  for (const key in blockAttributes) {\n    const attributes = blockAttributes[key]\n    if (attributes.tagName) {\n      blockTagNames.push(attributes.tagName)\n    }\n  }\n\n  return blockTagNames\n}\n\nexport const nodeIsBlockContainer = (node) => nodeIsBlockStartComment(node?.firstChild)\n\nexport const nodeProbablyIsBlockContainer = function(node) {\n  return getBlockTagNames().includes(tagName(node)) && !getBlockTagNames().includes(tagName(node.firstChild))\n}\n\nexport const nodeIsBlockStart = function(node, { strict } = { strict: true }) {\n  if (strict) {\n    return nodeIsBlockStartComment(node)\n  } else {\n    return (\n      nodeIsBlockStartComment(node) || !nodeIsBlockStartComment(node.firstChild) && nodeProbablyIsBlockContainer(node)\n    )\n  }\n}\n\nexport const nodeIsBlockStartComment = (node) => nodeIsCommentNode(node) && node?.data === \"block\"\n\nexport const nodeIsCommentNode = (node) => node?.nodeType === Node.COMMENT_NODE\n\nexport const nodeIsCursorTarget = function(node, { name } = {}) {\n  if (!node) {\n    return\n  }\n  if (nodeIsTextNode(node)) {\n    if (node.data === ZERO_WIDTH_SPACE) {\n      if (name) {\n        return node.parentNode.dataset.trixCursorTarget === name\n      } else {\n        return true\n      }\n    }\n  } else {\n    return nodeIsCursorTarget(node.firstChild)\n  }\n}\n\nexport const nodeIsAttachmentElement = (node) => elementMatchesSelector(node, attachmentSelector)\n\nexport const nodeIsEmptyTextNode = (node) => nodeIsTextNode(node) && node?.data === \"\"\n\nexport const nodeIsTextNode = (node) => node?.nodeType === Node.TEXT_NODE\n", "import browser from \"trix/config/browser\"\nimport { makeElement, removeNode } from \"trix/core/helpers/dom\"\n\nconst input = {\n  level2Enabled: true,\n\n  getLevel() {\n    if (this.level2Enabled && browser.supportsInputEvents) {\n      return 2\n    } else {\n      return 0\n    }\n  },\n  pickFiles(callback) {\n    const input = makeElement(\"input\", { type: \"file\", multiple: true, hidden: true, id: this.fileInputId })\n\n    input.addEventListener(\"change\", () => {\n      callback(input.files)\n      removeNode(input)\n    })\n\n    removeNode(document.getElementById(this.fileInputId))\n    document.body.appendChild(input)\n    input.click()\n  }\n}\n\nexport default input\n", "export default {\n  8: \"backspace\",\n  9: \"tab\",\n  13: \"return\",\n  27: \"escape\",\n  37: \"left\",\n  39: \"right\",\n  46: \"delete\",\n  68: \"d\",\n  72: \"h\",\n  79: \"o\",\n}\n", "export default {\n  removeBlankTableCells: false,\n  tableCellSeparator: \" | \",\n  tableRowSeparator: \"\\n\",\n}\n", "import { attachmentSelector } from \"trix/config/attachments\"\n\nexport default {\n  bold: {\n    tagName: \"strong\",\n    inheritable: true,\n    parser(element) {\n      const style = window.getComputedStyle(element)\n      return style.fontWeight === \"bold\" || style.fontWeight >= 600\n    },\n  },\n  italic: {\n    tagName: \"em\",\n    inheritable: true,\n    parser(element) {\n      const style = window.getComputedStyle(element)\n      return style.fontStyle === \"italic\"\n    },\n  },\n  href: {\n    groupTagName: \"a\",\n    parser(element) {\n      const matchingSelector = `a:not(${attachmentSelector})`\n      const link = element.closest(matchingSelector)\n      if (link) {\n        return link.getAttribute(\"href\")\n      }\n    },\n  },\n  strike: {\n    tagName: \"del\",\n    inheritable: true,\n  },\n  frozen: {\n    style: { backgroundColor: \"highlight\" },\n  },\n}\n", "import lang from \"trix/config/lang\"\n\nexport default {\n  getDefaultHTML() {\n    return `<div class=\"trix-button-row\">\n      <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"${lang.bold}\" tabindex=\"-1\">${lang.bold}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"${lang.italic}\" tabindex=\"-1\">${lang.italic}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"${lang.strike}\" tabindex=\"-1\">${lang.strike}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"${lang.link}\" tabindex=\"-1\">${lang.link}</button>\n      </span>\n\n      <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"${lang.heading1}\" tabindex=\"-1\">${lang.heading1}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"${lang.quote}\" tabindex=\"-1\">${lang.quote}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"${lang.code}\" tabindex=\"-1\">${lang.code}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"${lang.bullets}\" tabindex=\"-1\">${lang.bullets}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"${lang.numbers}\" tabindex=\"-1\">${lang.numbers}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"${lang.outdent}\" tabindex=\"-1\">${lang.outdent}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"${lang.indent}\" tabindex=\"-1\">${lang.indent}</button>\n      </span>\n\n      <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"${lang.attachFiles}\" tabindex=\"-1\">${lang.attachFiles}</button>\n      </span>\n\n      <span class=\"trix-button-group-spacer\"></span>\n\n      <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"${lang.undo}\" tabindex=\"-1\">${lang.undo}</button>\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"${lang.redo}\" tabindex=\"-1\">${lang.redo}</button>\n      </span>\n    </div>\n\n    <div class=\"trix-dialogs\" data-trix-dialogs>\n      <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\n        <div class=\"trix-dialog__link-fields\">\n          <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"${lang.urlPlaceholder}\" aria-label=\"${lang.url}\" data-trix-validate-href required data-trix-input>\n          <div class=\"trix-button-group\">\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"${lang.link}\" data-trix-method=\"setAttribute\">\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"${lang.unlink}\" data-trix-method=\"removeAttribute\">\n          </div>\n        </div>\n      </div>\n    </div>`\n  },\n}\n", "const undo = { interval: 5000 }\nexport default undo\n", "export default {\n  attachment: \"attachment\",\n  attachmentCaption: \"attachment__caption\",\n  attachmentCaptionEditor: \"attachment__caption-editor\",\n  attachmentMetadata: \"attachment__metadata\",\n  attachmentMetadataContainer: \"attachment__metadata-container\",\n  attachmentName: \"attachment__name\",\n  attachmentProgress: \"attachment__progress\",\n  attachmentSize: \"attachment__size\",\n  attachmentToolbar: \"attachment__toolbar\",\n  attachmentGallery: \"attachment-gallery\",\n}\n", "export default class BasicObject {\n  static proxyMethod(expression) {\n    const { name, toMethod, toProperty, optional } = parseProxyMethodExpression(expression)\n\n    this.prototype[name] = function() {\n      let subject\n      let object\n\n      if (toMethod) {\n        if (optional) {\n          object = this[toMethod]?.()\n        } else {\n          object = this[toMethod]()\n        }\n      } else if (toProperty) {\n        object = this[toProperty]\n      }\n\n      if (optional) {\n        subject = object?.[name]\n        if (subject) {\n          return apply.call(subject, object, arguments)\n        }\n      } else {\n        subject = object[name]\n        return apply.call(subject, object, arguments)\n      }\n    }\n  }\n}\n\nconst parseProxyMethodExpression = function(expression) {\n  const match = expression.match(proxyMethodExpressionPattern)\n  if (!match) {\n    throw new Error(`can't parse @proxyMethod expression: ${expression}`)\n  }\n\n  const args = { name: match[4] }\n\n  if (match[2] != null) {\n    args.toMethod = match[1]\n  } else {\n    args.toProperty = match[1]\n  }\n\n  if (match[3] != null) {\n    args.optional = true\n  }\n\n  return args\n}\n\nconst { apply } = Function.prototype\n\nconst proxyMethodExpressionPattern = new RegExp(\"\\\n^\\\n(.+?)\\\n(\\\\(\\\\))?\\\n(\\\\?)?\\\n\\\\.\\\n(.+?)\\\n$\\\n\")\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class UTF16String extends BasicObject {\n  static box(value = \"\") {\n    if (value instanceof this) {\n      return value\n    } else {\n      return this.fromUCS2String(value?.toString())\n    }\n  }\n\n  static fromUCS2String(ucs2String) {\n    return new this(ucs2String, ucs2decode(ucs2String))\n  }\n\n  static fromCodepoints(codepoints) {\n    return new this(ucs2encode(codepoints), codepoints)\n  }\n\n  constructor(ucs2String, codepoints) {\n    super(...arguments)\n    this.ucs2String = ucs2String\n    this.codepoints = codepoints\n    this.length = this.codepoints.length\n    this.ucs2Length = this.ucs2String.length\n  }\n\n  offsetToUCS2Offset(offset) {\n    return ucs2encode(this.codepoints.slice(0, Math.max(0, offset))).length\n  }\n\n  offsetFromUCS2Offset(ucs2Offset) {\n    return ucs2decode(this.ucs2String.slice(0, Math.max(0, ucs2Offset))).length\n  }\n\n  slice() {\n    return this.constructor.fromCodepoints(this.codepoints.slice(...arguments))\n  }\n\n  charAt(offset) {\n    return this.slice(offset, offset + 1)\n  }\n\n  isEqualTo(value) {\n    return this.constructor.box(value).ucs2String === this.ucs2String\n  }\n\n  toJSON() {\n    return this.ucs2String\n  }\n\n  getCacheKey() {\n    return this.ucs2String\n  }\n\n  toString() {\n    return this.ucs2String\n  }\n}\n\nconst hasArrayFrom = Array.from?.(\"\\ud83d\\udc7c\").length === 1\nconst hasStringCodePointAt = \" \".codePointAt?.(0) != null\nconst hasStringFromCodePoint = String.fromCodePoint?.(32, 128124) === \" \\ud83d\\udc7c\"\n\n// UCS-2 conversion helpers ported from Mathias Bynens' Punycode.js:\n// https://github.com/bestiejs/punycode.js#punycodeucs2\n\nlet ucs2decode, ucs2encode\n\n// Creates an array containing the numeric code points of each Unicode\n// character in the string. While JavaScript uses UCS-2 internally,\n// this function will convert a pair of surrogate halves (each of which\n// UCS-2 exposes as separate characters) into a single code point,\n// matching UTF-16.\nif (hasArrayFrom && hasStringCodePointAt) {\n  ucs2decode = (string) => Array.from(string).map((char) => char.codePointAt(0))\n} else {\n  ucs2decode = function(string) {\n    const output = []\n    let counter = 0\n    const { length } = string\n\n    while (counter < length) {\n      let value = string.charCodeAt(counter++)\n      if (0xd800 <= value && value <= 0xdbff && counter < length) {\n        // high surrogate, and there is a next character\n        const extra = string.charCodeAt(counter++)\n        if ((extra & 0xfc00) === 0xdc00) {\n          // low surrogate\n          value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000\n        } else {\n          // unmatched surrogate; only append this code unit, in case the\n          // next code unit is the high surrogate of a surrogate pair\n          counter--\n        }\n      }\n      output.push(value)\n    }\n\n    return output\n  }\n}\n\n// Creates a string based on an array of numeric code points.\nif (hasStringFromCodePoint) {\n  ucs2encode = (array) => String.fromCodePoint(...Array.from(array || []))\n} else {\n  ucs2encode = function(array) {\n    const characters = (() => {\n      const result = []\n\n      Array.from(array).forEach((value) => {\n        let output = \"\"\n        if (value > 0xffff) {\n          value -= 0x10000\n          output += String.fromCharCode(value >>> 10 & 0x3ff | 0xd800)\n          value = 0xdc00 | value & 0x3ff\n        }\n        result.push(output + String.fromCharCode(value))\n      })\n\n      return result\n    })()\n\n    return characters.join(\"\")\n  }\n}\n", "import BasicObject from \"trix/core/basic_object\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\n\nlet id = 0\n\nexport default class TrixObject extends BasicObject {\n  static fromJSONString(jsonString) {\n    return this.fromJSON(JSON.parse(jsonString))\n  }\n\n  constructor() {\n    super(...arguments)\n    this.id = ++id\n  }\n\n  hasSameConstructorAs(object) {\n    return this.constructor === object?.constructor\n  }\n\n  isEqualTo(object) {\n    return this === object\n  }\n\n  inspect() {\n    const parts = []\n    const contents = this.contentsForInspection() || {}\n\n    for (const key in contents) {\n      const value = contents[key]\n      parts.push(`${key}=${value}`)\n    }\n\n    return `#<${this.constructor.name}:${this.id}${parts.length ? ` ${parts.join(\", \")}` : \"\"}>`\n  }\n\n  contentsForInspection() {}\n\n  toJSONString() {\n    return JSON.stringify(this)\n  }\n\n  toUTF16String() {\n    return UTF16String.box(this)\n  }\n\n  getCacheKey() {\n    return this.id.toString()\n  }\n}\n", "/* eslint-disable\n    id-length,\n*/\nexport const arraysAreEqual = function(a = [], b = []) {\n  if (a.length !== b.length) {\n    return false\n  }\n  for (let index = 0; index < a.length; index++) {\n    const value = a[index]\n    if (value !== b[index]) {\n      return false\n    }\n  }\n  return true\n}\n\nexport const arrayStartsWith = (a = [], b = []) => arraysAreEqual(a.slice(0, b.length), b)\n\nexport const spliceArray = function(array, ...args) {\n  const result = array.slice(0)\n  result.splice(...args)\n  return result\n}\n\nexport const summarizeArrayChange = function(oldArray = [], newArray = []) {\n  const added = []\n  const removed = []\n\n  const existingValues = new Set()\n\n  oldArray.forEach((value) => {\n    existingValues.add(value)\n  })\n\n  const currentValues = new Set()\n\n  newArray.forEach((value) => {\n    currentValues.add(value)\n    if (!existingValues.has(value)) {\n      added.push(value)\n    }\n  })\n\n  oldArray.forEach((value) => {\n    if (!currentValues.has(value)) {\n      removed.push(value)\n    }\n  })\n\n  return { added, removed }\n}\n", "import { makeElement } from \"trix/core/helpers/dom\"\n\n// https://github.com/mathiasbynens/unicode-2.1.8/blob/master/Bidi_Class/Right_To_Left/regex.js\nconst RTL_PATTERN =\n  /[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/\n\nexport const getDirection = (function() {\n  const input = makeElement(\"input\", { dir: \"auto\", name: \"x\", dirName: \"x.dir\" })\n  const textArea = makeElement(\"textarea\", { dir: \"auto\", name: \"y\", dirName: \"y.dir\" })\n  const form = makeElement(\"form\")\n  form.appendChild(input)\n  form.appendChild(textArea)\n\n  const supportsDirName = (function() {\n    try {\n      return new FormData(form).has(textArea.dirName)\n    } catch (error) {\n      return false\n    }\n  })()\n\n  const supportsDirSelector = (function() {\n    try {\n      return input.matches(\":dir(ltr),:dir(rtl)\")\n    } catch (error) {\n      return false\n    }\n  })()\n\n  if (supportsDirName) {\n    return function(string) {\n      textArea.value = string\n      return new FormData(form).get(textArea.dirName)\n    }\n  } else if (supportsDirSelector) {\n    return function(string) {\n      input.value = string\n      if (input.matches(\":dir(rtl)\")) {\n        return \"rtl\"\n      } else {\n        return \"ltr\"\n      }\n    }\n  } else {\n    return function(string) {\n      const char = string.trim().charAt(0)\n      if (RTL_PATTERN.test(char)) {\n        return \"rtl\"\n      } else {\n        return \"ltr\"\n      }\n    }\n  }\n})()\n", "import * as config from \"trix/config\"\n\nlet allAttributeNames = null\nlet blockAttributeNames = null\nlet textAttributeNames = null\nlet listAttributeNames = null\n\nexport const getAllAttributeNames = () => {\n  if (!allAttributeNames) {\n    allAttributeNames = getTextAttributeNames().concat(getBlockAttributeNames())\n  }\n  return allAttributeNames\n}\n\nexport const getBlockConfig = (attributeName) => config.blockAttributes[attributeName]\n\nexport const getBlockAttributeNames = () => {\n  if (!blockAttributeNames) {\n    blockAttributeNames = Object.keys(config.blockAttributes)\n  }\n  return blockAttributeNames\n}\n\nexport const getTextConfig = (attributeName) => config.textAttributes[attributeName]\n\nexport const getTextAttributeNames = () => {\n  if (!textAttributeNames) {\n    textAttributeNames = Object.keys(config.textAttributes)\n  }\n  return textAttributeNames\n}\n\nexport const getListAttributeNames = () => {\n  if (!listAttributeNames) {\n    listAttributeNames = []\n    for (const key in config.blockAttributes) {\n      const { listAttribute } = config.blockAttributes[key]\n      if (listAttribute != null) {\n        listAttributeNames.push(listAttribute)\n      }\n    }\n  }\n  return listAttributeNames\n}\n", "/* eslint-disable\n*/\nexport const installDefaultCSSForTagName = function(tagName, defaultCSS) {\n  const styleElement = insertStyleElementForTagName(tagName)\n  styleElement.textContent = defaultCSS.replace(/%t/g, tagName)\n}\n\nconst insertStyleElementForTagName = function(tagName) {\n  const element = document.createElement(\"style\")\n  element.setAttribute(\"type\", \"text/css\")\n  element.setAttribute(\"data-tag-name\", tagName.toLowerCase())\n  const nonce = getCSPNonce()\n  if (nonce) {\n    element.setAttribute(\"nonce\", nonce)\n  }\n  document.head.insertBefore(element, document.head.firstChild)\n  return element\n}\n\nconst getCSPNonce = function() {\n  const element = getMetaElement(\"trix-csp-nonce\") || getMetaElement(\"csp-nonce\")\n  if (element) {\n    const { nonce, content } = element\n    return nonce == \"\" ? content : nonce\n  }\n}\n\nconst getMetaElement = (name) => document.head.querySelector(`meta[name=${name}]`)\n", "const testTransferData = { \"application/x-trix-feature-detection\": \"test\" }\n\nexport const dataTransferIsPlainText = function(dataTransfer) {\n  const text = dataTransfer.getData(\"text/plain\")\n  const html = dataTransfer.getData(\"text/html\")\n\n  if (text && html) {\n    const { body } = new DOMParser().parseFromString(html, \"text/html\")\n    if (body.textContent === text) {\n      return !body.querySelector(\"*\")\n    }\n  } else {\n    return text?.length\n  }\n}\n\nexport const dataTransferIsMsOfficePaste = ({ dataTransfer }) => {\n  return dataTransfer.types.includes(\"Files\") &&\n    dataTransfer.types.includes(\"text/html\") &&\n    dataTransfer.getData(\"text/html\").includes(\"urn:schemas-microsoft-com:office:office\")\n}\n\nexport const dataTransferIsWritable = function(dataTransfer) {\n  if (!dataTransfer?.setData) return false\n\n  for (const key in testTransferData) {\n    const value = testTransferData[key]\n\n    try {\n      dataTransfer.setData(key, value)\n      if (!dataTransfer.getData(key) === value) return false\n    } catch (error) {\n      return false\n    }\n  }\n  return true\n}\n\nexport const keyEventIsKeyboardCommand = (function() {\n  if (/Mac|^iP/.test(navigator.platform)) {\n    return (event) => event.metaKey\n  } else {\n    return (event) => event.ctrlKey\n  }\n})()\n\nexport function shouldRenderInmmediatelyToDealWithIOSDictation(inputEvent) {\n  if (/iPhone|iPad/.test(navigator.userAgent)) {\n    // Handle garbled content and duplicated newlines when using dictation on iOS 18+. Upon dictation completion, iOS sends\n    // the list of insertText / insertParagraph events in a quick sequence. If we don't render\n    // the editor synchronously, the internal range fails to update and results in garbled content or duplicated newlines.\n    //\n    // This workaround is necessary because iOS doesn't send composing events as expected while dictating:\n    // https://bugs.webkit.org/show_bug.cgi?id=261764\n    return !inputEvent.inputType || inputEvent.inputType === \"insertParagraph\"\n  } else {\n    return false\n  }\n}\n", "export const defer = (fn) => setTimeout(fn, 1)\n", "/* eslint-disable\n    id-length,\n*/\nexport const copyObject = function(object = {}) {\n  const result = {}\n  for (const key in object) {\n    const value = object[key]\n    result[key] = value\n  }\n  return result\n}\n\nexport const objectsAreEqual = function(a = {}, b = {}) {\n  if (Object.keys(a).length !== Object.keys(b).length) {\n    return false\n  }\n  for (const key in a) {\n    const value = a[key]\n    if (value !== b[key]) {\n      return false\n    }\n  }\n  return true\n}\n", "import { copyObject, objectsAreEqual } from \"trix/core/helpers/objects\"\n\nexport const normalizeRange = function(range) {\n  if (range == null) return\n\n  if (!Array.isArray(range)) {\n    range = [ range, range ]\n  }\n  return [ copyValue(range[0]), copyValue(range[1] != null ? range[1] : range[0]) ]\n}\n\nexport const rangeIsCollapsed = function(range) {\n  if (range == null) return\n\n  const [ start, end ] = normalizeRange(range)\n  return rangeValuesAreEqual(start, end)\n}\n\nexport const rangesAreEqual = function(leftRange, rightRange) {\n  if (leftRange == null || rightRange == null) return\n\n  const [ leftStart, leftEnd ] = normalizeRange(leftRange)\n  const [ rightStart, rightEnd ] = normalizeRange(rightRange)\n  return rangeValuesAreEqual(leftStart, rightStart) && rangeValuesAreEqual(leftEnd, rightEnd)\n}\n\nconst copyValue = function(value) {\n  if (typeof value === \"number\") {\n    return value\n  } else {\n    return copyObject(value)\n  }\n}\n\nconst rangeValuesAreEqual = function(left, right) {\n  if (typeof left === \"number\") {\n    return left === right\n  } else {\n    return objectsAreEqual(left, right)\n  }\n}\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class SelectionChangeObserver extends BasicObject {\n  constructor() {\n    super(...arguments)\n    this.update = this.update.bind(this)\n    this.selectionManagers = []\n  }\n\n  start() {\n    if (!this.started) {\n      this.started = true\n      document.addEventListener(\"selectionchange\", this.update, true)\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false\n      return document.removeEventListener(\"selectionchange\", this.update, true)\n    }\n  }\n\n  registerSelectionManager(selectionManager) {\n    if (!this.selectionManagers.includes(selectionManager)) {\n      this.selectionManagers.push(selectionManager)\n      return this.start()\n    }\n  }\n\n  unregisterSelectionManager(selectionManager) {\n    this.selectionManagers = this.selectionManagers.filter((sm) => sm !== selectionManager)\n    if (this.selectionManagers.length === 0) {\n      return this.stop()\n    }\n  }\n\n  notifySelectionManagersOfSelectionChange() {\n    return this.selectionManagers.map((selectionManager) => selectionManager.selectionDidChange())\n  }\n\n  update() {\n    this.notifySelectionManagersOfSelectionChange()\n  }\n\n  reset() {\n    this.update()\n  }\n}\n\nexport const selectionChangeObserver = new SelectionChangeObserver()\n\nexport const getDOMSelection = function() {\n  const selection = window.getSelection()\n  if (selection.rangeCount > 0) {\n    return selection\n  }\n}\n\nexport const getDOMRange = function() {\n  const domRange = getDOMSelection()?.getRangeAt(0)\n  if (domRange) {\n    if (!domRangeIsPrivate(domRange)) {\n      return domRange\n    }\n  }\n}\n\nexport const setDOMRange = function(domRange) {\n  const selection = window.getSelection()\n  selection.removeAllRanges()\n  selection.addRange(domRange)\n  return selectionChangeObserver.update()\n}\n\n// In Firefox, clicking certain <input> elements changes the selection to a\n// private element used to draw its UI. Attempting to access properties of those\n// elements throws an error.\n// https://bugzilla.mozilla.org/show_bug.cgi?id=208427\nconst domRangeIsPrivate = (domRange) => nodeIsPrivate(domRange.startContainer) || nodeIsPrivate(domRange.endContainer)\n\nconst nodeIsPrivate = (node) => !Object.getPrototypeOf(node)\n", "/* eslint-disable\n    id-length,\n    no-useless-escape,\n*/\nimport { NON_BREAKING_SPACE, ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\n\nexport const normalizeSpaces = (string) =>\n  string.replace(new RegExp(`${ZERO_WIDTH_SPACE}`, \"g\"), \"\").replace(new RegExp(`${NON_BREAKING_SPACE}`, \"g\"), \" \")\n\nexport const normalizeNewlines = (string) => string.replace(/\\r\\n?/g, \"\\n\")\n\nexport const breakableWhitespacePattern = new RegExp(`[^\\\\S${NON_BREAKING_SPACE}]`)\n\nexport const squishBreakableWhitespace = (string) =>\n  string\n    // Replace all breakable whitespace characters with a space\n    .replace(new RegExp(`${breakableWhitespacePattern.source}`, \"g\"), \" \")\n    // Replace two or more spaces with a single space\n    .replace(/\\ {2,}/g, \" \")\n\nexport const summarizeStringChange = function(oldString, newString) {\n  let added, removed\n  oldString = UTF16String.box(oldString)\n  newString = UTF16String.box(newString)\n\n  if (newString.length < oldString.length) {\n    [ removed, added ] = utf16StringDifferences(oldString, newString)\n  } else {\n    [ added, removed ] = utf16StringDifferences(newString, oldString)\n  }\n\n  return { added, removed }\n}\n\nconst utf16StringDifferences = function(a, b) {\n  if (a.isEqualTo(b)) {\n    return [ \"\", \"\" ]\n  }\n\n  const diffA = utf16StringDifference(a, b)\n  const { length } = diffA.utf16String\n\n  let diffB\n\n  if (length) {\n    const { offset } = diffA\n    const codepoints = a.codepoints.slice(0, offset).concat(a.codepoints.slice(offset + length))\n    diffB = utf16StringDifference(b, UTF16String.fromCodepoints(codepoints))\n  } else {\n    diffB = utf16StringDifference(b, a)\n  }\n\n  return [ diffA.utf16String.toString(), diffB.utf16String.toString() ]\n}\n\nconst utf16StringDifference = function(a, b) {\n  let leftIndex = 0\n  let rightIndexA = a.length\n  let rightIndexB = b.length\n\n  while (leftIndex < rightIndexA && a.charAt(leftIndex).isEqualTo(b.charAt(leftIndex))) {\n    leftIndex++\n  }\n\n  while (rightIndexA > leftIndex + 1 && a.charAt(rightIndexA - 1).isEqualTo(b.charAt(rightIndexB - 1))) {\n    rightIndexA--\n    rightIndexB--\n  }\n\n  return {\n    utf16String: a.slice(leftIndex, rightIndexA),\n    offset: leftIndex,\n  }\n}\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport { arraysAreEqual } from \"trix/core/helpers\"\n\nexport default class Hash extends TrixObject {\n  static fromCommonAttributesOfObjects(objects = []) {\n    if (!objects.length) {\n      return new this()\n    }\n    let hash = box(objects[0])\n    let keys = hash.getKeys()\n\n    objects.slice(1).forEach((object) => {\n      keys = hash.getKeysCommonToHash(box(object))\n      hash = hash.slice(keys)\n    })\n\n    return hash\n  }\n\n  static box(values) {\n    return box(values)\n  }\n\n  constructor(values = {}) {\n    super(...arguments)\n    this.values = copy(values)\n  }\n\n  add(key, value) {\n    return this.merge(object(key, value))\n  }\n\n  remove(key) {\n    return new Hash(copy(this.values, key))\n  }\n\n  get(key) {\n    return this.values[key]\n  }\n\n  has(key) {\n    return key in this.values\n  }\n\n  merge(values) {\n    return new Hash(merge(this.values, unbox(values)))\n  }\n\n  slice(keys) {\n    const values = {}\n\n    Array.from(keys).forEach((key) => {\n      if (this.has(key)) {\n        values[key] = this.values[key]\n      }\n    })\n\n    return new Hash(values)\n  }\n\n  getKeys() {\n    return Object.keys(this.values)\n  }\n\n  getKeysCommonToHash(hash) {\n    hash = box(hash)\n    return this.getKeys().filter((key) => this.values[key] === hash.values[key])\n  }\n\n  isEqualTo(values) {\n    return arraysAreEqual(this.toArray(), box(values).toArray())\n  }\n\n  isEmpty() {\n    return this.getKeys().length === 0\n  }\n\n  toArray() {\n    if (!this.array) {\n      const result = []\n      for (const key in this.values) {\n        const value = this.values[key]\n        result.push(result.push(key, value))\n      }\n      this.array = result.slice(0)\n    }\n\n    return this.array\n  }\n\n  toObject() {\n    return copy(this.values)\n  }\n\n  toJSON() {\n    return this.toObject()\n  }\n\n  contentsForInspection() {\n    return { values: JSON.stringify(this.values) }\n  }\n}\n\nconst object = function(key, value) {\n  const result = {}\n  result[key] = value\n  return result\n}\n\nconst merge = function(object, values) {\n  const result = copy(object)\n  for (const key in values) {\n    const value = values[key]\n    result[key] = value\n  }\n  return result\n}\n\nconst copy = function(object, keyToRemove) {\n  const result = {}\n  const sortedKeys = Object.keys(object).sort()\n\n  sortedKeys.forEach((key) => {\n    if (key !== keyToRemove) {\n      result[key] = object[key]\n    }\n  })\n\n  return result\n}\n\nconst box = function(object) {\n  if (object instanceof Hash) {\n    return object\n  } else {\n    return new Hash(object)\n  }\n}\n\nconst unbox = function(object) {\n  if (object instanceof Hash) {\n    return object.values\n  } else {\n    return object\n  }\n}\n", "export default class ObjectGroup {\n  static groupObjects(ungroupedObjects = [], { depth, asTree } = {}) {\n    let group\n    if (asTree) {\n      if (depth == null) {\n        depth = 0\n      }\n    }\n    const objects = []\n\n    Array.from(ungroupedObjects).forEach((object) => {\n      if (group) {\n        if (object.canBeGrouped?.(depth) && group[group.length - 1].canBeGroupedWith?.(object, depth)) {\n          group.push(object)\n          return\n        } else {\n          objects.push(new this(group, { depth, asTree }))\n          group = null\n        }\n      }\n\n      if (object.canBeGrouped?.(depth)) {\n        group = [ object ]\n      } else {\n        objects.push(object)\n      }\n    })\n\n    if (group) {\n      objects.push(new this(group, { depth, asTree }))\n    }\n    return objects\n  }\n\n  constructor(objects = [], { depth, asTree }) {\n    this.objects = objects\n    if (asTree) {\n      this.depth = depth\n      this.objects = this.constructor.groupObjects(this.objects, { asTree, depth: this.depth + 1 })\n    }\n  }\n\n  getObjects() {\n    return this.objects\n  }\n\n  getDepth() {\n    return this.depth\n  }\n\n  getCacheKey() {\n    const keys = [ \"objectGroup\" ]\n    Array.from(this.getObjects()).forEach((object) => {\n      keys.push(object.getCacheKey())\n    })\n    return keys.join(\"/\")\n  }\n}\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class ObjectMap extends BasicObject {\n  constructor(objects = []) {\n    super(...arguments)\n    this.objects = {}\n\n    Array.from(objects).forEach((object) => {\n      const hash = JSON.stringify(object)\n      if (this.objects[hash] == null) {\n        this.objects[hash] = object\n      }\n    })\n  }\n\n  find(object) {\n    const hash = JSON.stringify(object)\n    return this.objects[hash]\n  }\n}\n", "export default class ElementStore {\n  constructor(elements) {\n    this.reset(elements)\n  }\n\n  add(element) {\n    const key = getKey(element)\n    this.elements[key] = element\n  }\n\n  remove(element) {\n    const key = getKey(element)\n    const value = this.elements[key]\n    if (value) {\n      delete this.elements[key]\n      return value\n    }\n  }\n\n  reset(elements = []) {\n    this.elements = {}\n    Array.from(elements).forEach((element) => {\n      this.add(element)\n    })\n    return elements\n  }\n}\n\nconst getKey = (element) => element.dataset.trixStoreKey\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class Operation extends BasicObject {\n  isPerforming() {\n    return this.performing === true\n  }\n\n  hasPerformed() {\n    return this.performed === true\n  }\n\n  hasSucceeded() {\n    return this.performed && this.succeeded\n  }\n\n  hasFailed() {\n    return this.performed && !this.succeeded\n  }\n\n  getPromise() {\n    if (!this.promise) {\n      this.promise = new Promise((resolve, reject) => {\n        this.performing = true\n        return this.perform((succeeded, result) => {\n          this.succeeded = succeeded\n          this.performing = false\n          this.performed = true\n\n          if (this.succeeded) {\n            resolve(result)\n          } else {\n            reject(result)\n          }\n        })\n      })\n    }\n\n    return this.promise\n  }\n\n  perform(callback) {\n    return callback(false)\n  }\n\n  release() {\n    this.promise?.cancel?.()\n    this.promise = null\n    this.performing = null\n    this.performed = null\n    this.succeeded = null\n  }\n}\n\nOperation.proxyMethod(\"getPromise().then\")\nOperation.proxyMethod(\"getPromise().catch\")\n", "import BasicObject from \"trix/core/basic_object\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\n\nexport default class ObjectView extends BasicObject {\n  constructor(object, options = {}) {\n    super(...arguments)\n    this.object = object\n    this.options = options\n    this.childViews = []\n    this.rootView = this\n  }\n\n  getNodes() {\n    if (!this.nodes) { this.nodes = this.createNodes() }\n    return this.nodes.map((node) => node.cloneNode(true))\n  }\n\n  invalidate() {\n    this.nodes = null\n    this.childViews = []\n    return this.parentView?.invalidate()\n  }\n\n  invalidateViewForObject(object) {\n    return this.findViewForObject(object)?.invalidate()\n  }\n\n  findOrCreateCachedChildView(viewClass, object, options) {\n    let view = this.getCachedViewForObject(object)\n    if (view) {\n      this.recordChildView(view)\n    } else {\n      view = this.createChildView(...arguments)\n      this.cacheViewForObject(view, object)\n    }\n    return view\n  }\n\n  createChildView(viewClass, object, options = {}) {\n    if (object instanceof ObjectGroup) {\n      options.viewClass = viewClass\n      viewClass = ObjectGroupView\n    }\n\n    const view = new viewClass(object, options)\n    return this.recordChildView(view)\n  }\n\n  recordChildView(view) {\n    view.parentView = this\n    view.rootView = this.rootView\n    this.childViews.push(view)\n    return view\n  }\n\n  getAllChildViews() {\n    let views = []\n\n    this.childViews.forEach((childView) => {\n      views.push(childView)\n      views = views.concat(childView.getAllChildViews())\n    })\n\n    return views\n  }\n\n  findElement() {\n    return this.findElementForObject(this.object)\n  }\n\n  findElementForObject(object) {\n    const id = object?.id\n    if (id) {\n      return this.rootView.element.querySelector(`[data-trix-id='${id}']`)\n    }\n  }\n\n  findViewForObject(object) {\n    for (const view of this.getAllChildViews()) {\n      if (view.object === object) {\n        return view\n      }\n    }\n  }\n\n  getViewCache() {\n    if (this.rootView === this) {\n      if (this.isViewCachingEnabled()) {\n        if (!this.viewCache) { this.viewCache = {} }\n        return this.viewCache\n      }\n    } else {\n      return this.rootView.getViewCache()\n    }\n  }\n\n  isViewCachingEnabled() {\n    return this.shouldCacheViews !== false\n  }\n\n  enableViewCaching() {\n    this.shouldCacheViews = true\n  }\n\n  disableViewCaching() {\n    this.shouldCacheViews = false\n  }\n\n  getCachedViewForObject(object) {\n    return this.getViewCache()?.[object.getCacheKey()]\n  }\n\n  cacheViewForObject(view, object) {\n    const cache = this.getViewCache()\n    if (cache) {\n      cache[object.getCacheKey()] = view\n    }\n  }\n\n  garbageCollectCachedViews() {\n    const cache = this.getViewCache()\n    if (cache) {\n      const views = this.getAllChildViews().concat(this)\n      const objectKeys = views.map((view) => view.object.getCacheKey())\n      for (const key in cache) {\n        if (!objectKeys.includes(key)) {\n          delete cache[key]\n        }\n      }\n    }\n  }\n}\n\nexport class ObjectGroupView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.objectGroup = this.object\n    this.viewClass = this.options.viewClass\n    delete this.options.viewClass\n  }\n\n  getChildViews() {\n    if (!this.childViews.length) {\n      Array.from(this.objectGroup.getObjects()).forEach((object) => {\n        this.findOrCreateCachedChildView(this.viewClass, object, this.options)\n      })\n    }\n    return this.childViews\n  }\n\n  createNodes() {\n    const element = this.createContainerElement()\n\n    this.getChildViews().forEach((view) => {\n      Array.from(view.getNodes()).forEach((node) => {\n        element.appendChild(node)\n      })\n    })\n\n    return [ element ]\n  }\n\n  createContainerElement(depth = this.objectGroup.getDepth()) {\n    return this.getChildViews()[0].createContainerElement(depth)\n  }\n}\n", "/*! @license DOMPurify 3.2.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.7/LICENSE */\n\nconst {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor\n} = Object;\nlet {\n  freeze,\n  seal,\n  create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n  apply,\n  construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!apply) {\n  apply = function apply(func, thisArg) {\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n    return func.apply(thisArg, args);\n  };\n}\nif (!construct) {\n  construct = function construct(Func) {\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    return new Func(...args);\n  };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n  return function (thisArg) {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n    return apply(func, thisArg, args);\n  };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n  return function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return construct(Func, args);\n  };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n  return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (value && typeof value === 'object' && value.constructor === Object) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n  return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue() {\n    return null;\n  }\n  return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'slot', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: ARIA_ATTR,\n  ATTR_WHITESPACE: ATTR_WHITESPACE,\n  CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n  DATA_ATTR: DATA_ATTR,\n  DOCTYPE_NAME: DOCTYPE_NAME,\n  ERB_EXPR: ERB_EXPR,\n  IS_ALLOWED_URI: IS_ALLOWED_URI,\n  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n  MUSTACHE_EXPR: MUSTACHE_EXPR,\n  TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5,\n  // Deprecated\n  entityNode: 6,\n  // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\nconst _createHooksMap = function _createHooksMap() {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n};\nfunction createDOMPurify() {\n  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  const DOMPurify = root => createDOMPurify(root);\n  DOMPurify.version = '3.2.7';\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n  let {\n    document\n  } = window;\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes\n  } = window;\n  const ElementPrototype = Element.prototype;\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName\n  } = document;\n  const {\n    importNode\n  } = originalDocument;\n  let hooks = _createHooksMap();\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT\n  } = EXPRESSIONS;\n  let {\n    IS_ALLOWED_URI: IS_ALLOWED_URI$1\n  } = EXPRESSIONS;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n  const formElement = document.createElement('form');\n  const isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function _parseConfig() {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n      }\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n      }\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n      }\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function _checkValidNamespace(element) {\n    let parent = getParentNode(element);\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function _removeAttribute(name, element) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element\n      });\n    }\n    element.removeAttribute(name);\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n    const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    const body = doc.body || doc.documentElement;\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function _createNodeIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function _isClobbered(element) {\n    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n  };\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function _isNode(value) {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n  function _executeHooks(hooks, currentNode, data) {\n    arrayForEach(hooks, hook => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function _sanitizeElements(currentNode) {\n    let content = null;\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n          return false;\n        }\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n          return false;\n        }\n      }\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        content = stringReplace(content, expr, ' ');\n      });\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n      // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n      // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n      return false;\n    } else ;\n    return true;\n  };\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n    const {\n      attributes\n    } = currentNode;\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined\n    };\n    let l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const {\n        name,\n        namespaceURI,\n        value: attrValue\n      } = attr;\n      const lcName = transformCaseFunc(name);\n      const initValue = attrValue;\n      let value = name === 'value' ? initValue : stringTrim(initValue);\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n      if (lcName === 'attributename' && stringMatch(value, 'href')) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Handle attributes that require Trusted Types */\n      if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              {\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n              }\n            case 'TrustedScriptURL':\n              {\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n              }\n          }\n        }\n      }\n      /* Handle invalid data-* attribute set by try-catching it */\n      if (value !== initValue) {\n        try {\n          if (namespaceURI) {\n            currentNode.setAttributeNS(namespaceURI, name, value);\n          } else {\n            /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n            currentNode.setAttribute(name, value);\n          }\n          if (_isClobbered(currentNode)) {\n            _forceRemove(currentNode);\n          } else {\n            arrayPop(DOMPurify.removed);\n          }\n        } catch (_) {\n          _removeAttribute(name, currentNode);\n        }\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n      // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n      return returnNode;\n    }\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  DOMPurify.setConfig = function () {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n      return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n    return arrayPop(hooks[entryPoint]);\n  };\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport { nodeIsAttachmentElement, removeNode, tagName, walkTree } from \"trix/core/helpers\"\nimport DOMPurify from \"dompurify\"\nimport * as config from \"trix/config\"\n\nDOMPurify.addHook(\"uponSanitizeAttribute\", function (node, data) {\n  if (data.attrName === \"data-trix-serialized-attributes\") {\n    data.keepAttr = false\n    return\n  }\n\n  const allowedAttributePattern = /^data-trix-/\n  if (allowedAttributePattern.test(data.attrName)) {\n    data.forceKeepAttr = true\n  }\n})\n\nconst DEFAULT_ALLOWED_ATTRIBUTES = \"style href src width height language class\".split(\" \")\nconst DEFAULT_FORBIDDEN_PROTOCOLS = \"javascript:\".split(\" \")\nconst DEFAULT_FORBIDDEN_ELEMENTS = \"script iframe form noscript\".split(\" \")\n\nexport default class HTMLSanitizer extends BasicObject {\n  static setHTML(element, html, options) {\n    const sanitizedElement = new this(html, options).sanitize()\n    const sanitizedHtml = sanitizedElement.getHTML ? sanitizedElement.getHTML() : sanitizedElement.outerHTML\n    element.innerHTML = sanitizedHtml\n  }\n\n  static sanitize(html, options) {\n    const sanitizer = new this(html, options)\n    sanitizer.sanitize()\n    return sanitizer\n  }\n\n  constructor(html, { allowedAttributes, forbiddenProtocols, forbiddenElements, purifyOptions } = {}) {\n    super(...arguments)\n    this.allowedAttributes = allowedAttributes || DEFAULT_ALLOWED_ATTRIBUTES\n    this.forbiddenProtocols = forbiddenProtocols || DEFAULT_FORBIDDEN_PROTOCOLS\n    this.forbiddenElements = forbiddenElements || DEFAULT_FORBIDDEN_ELEMENTS\n    this.purifyOptions = purifyOptions || {}\n    this.body = createBodyElementForHTML(html)\n  }\n\n  sanitize() {\n    this.sanitizeElements()\n    this.normalizeListElementNesting()\n    const purifyConfig = Object.assign({}, config.dompurify, this.purifyOptions)\n    DOMPurify.setConfig(purifyConfig)\n    this.body = DOMPurify.sanitize(this.body)\n\n    return this.body\n  }\n\n  getHTML() {\n    return this.body.innerHTML\n  }\n\n  getBody() {\n    return this.body\n  }\n\n  // Private\n\n  sanitizeElements() {\n    const walker = walkTree(this.body)\n    const nodesToRemove = []\n\n    while (walker.nextNode()) {\n      const node = walker.currentNode\n      switch (node.nodeType) {\n        case Node.ELEMENT_NODE:\n          if (this.elementIsRemovable(node)) {\n            nodesToRemove.push(node)\n          } else {\n            this.sanitizeElement(node)\n          }\n          break\n        case Node.COMMENT_NODE:\n          nodesToRemove.push(node)\n          break\n      }\n    }\n\n    nodesToRemove.forEach((node) => removeNode(node))\n\n    return this.body\n  }\n\n  sanitizeElement(element) {\n    if (element.hasAttribute(\"href\")) {\n      if (this.forbiddenProtocols.includes(element.protocol)) {\n        element.removeAttribute(\"href\")\n      }\n    }\n\n    Array.from(element.attributes).forEach(({ name }) => {\n      if (!this.allowedAttributes.includes(name) && name.indexOf(\"data-trix\") !== 0) {\n        element.removeAttribute(name)\n      }\n    })\n\n    return element\n  }\n\n  normalizeListElementNesting() {\n    Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach((listElement) => {\n      const previousElement = listElement.previousElementSibling\n      if (previousElement) {\n        if (tagName(previousElement) === \"li\") {\n          previousElement.appendChild(listElement)\n        }\n      }\n    })\n\n    return this.body\n  }\n\n  elementIsRemovable(element) {\n    if (element?.nodeType !== Node.ELEMENT_NODE) return\n    return this.elementIsForbidden(element) || this.elementIsntSerializable(element)\n  }\n\n  elementIsForbidden(element) {\n    return this.forbiddenElements.includes(tagName(element))\n  }\n\n  elementIsntSerializable(element) {\n    return element.getAttribute(\"data-trix-serialize\") === \"false\" && !nodeIsAttachmentElement(element)\n  }\n}\n\nconst createBodyElementForHTML = function(html = \"\") {\n  // Remove everything after </html>\n  html = html.replace(/<\\/html[^>]*>[^]*$/i, \"</html>\")\n  const doc = document.implementation.createHTMLDocument(\"\")\n  doc.documentElement.innerHTML = html\n\n  Array.from(doc.head.querySelectorAll(\"style\")).forEach((element) => {\n    doc.body.appendChild(element)\n  })\n\n  return doc.body\n}\n", "import * as config from \"trix/config\"\nimport { ZERO_WIDTH_SPACE } from \"trix/constants\"\nimport { copyObject, makeElement } from \"trix/core/helpers\"\nimport ObjectView from \"trix/views/object_view\"\nimport HTMLSanitizer from \"trix/models/html_sanitizer\"\nimport DOMPurify from \"dompurify\"\n\nconst { css } = config\n\nexport default class AttachmentView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.attachment = this.object\n    this.attachment.uploadProgressDelegate = this\n    this.attachmentPiece = this.options.piece\n  }\n\n  createContentNodes() {\n    return []\n  }\n\n  createNodes() {\n    let innerElement\n    const figure = innerElement = makeElement({\n      tagName: \"figure\",\n      className: this.getClassName(),\n      data: this.getData(),\n      editable: false,\n    })\n\n    const href = this.getHref()\n    if (href) {\n      innerElement = makeElement({ tagName: \"a\", editable: false, attributes: { href, tabindex: -1 } })\n      figure.appendChild(innerElement)\n    }\n\n    if (this.attachment.hasContent()) {\n      HTMLSanitizer.setHTML(innerElement, this.attachment.getContent())\n    } else {\n      this.createContentNodes().forEach((node) => {\n        innerElement.appendChild(node)\n      })\n    }\n\n    innerElement.appendChild(this.createCaptionElement())\n\n    if (this.attachment.isPending()) {\n      this.progressElement = makeElement({\n        tagName: \"progress\",\n        attributes: {\n          class: css.attachmentProgress,\n          value: this.attachment.getUploadProgress(),\n          max: 100,\n        },\n        data: {\n          trixMutable: true,\n          trixStoreKey: [ \"progressElement\", this.attachment.id ].join(\"/\"),\n        },\n      })\n\n      figure.appendChild(this.progressElement)\n    }\n\n    return [ createCursorTarget(\"left\"), figure, createCursorTarget(\"right\") ]\n  }\n\n  createCaptionElement() {\n    const figcaption = makeElement({ tagName: \"figcaption\", className: css.attachmentCaption })\n    const caption = this.attachmentPiece.getCaption()\n    if (caption) {\n      figcaption.classList.add(`${css.attachmentCaption}--edited`)\n      figcaption.textContent = caption\n    } else {\n      let name, size\n      const captionConfig = this.getCaptionConfig()\n      if (captionConfig.name) {\n        name = this.attachment.getFilename()\n      }\n      if (captionConfig.size) {\n        size = this.attachment.getFormattedFilesize()\n      }\n\n      if (name) {\n        const nameElement = makeElement({ tagName: \"span\", className: css.attachmentName, textContent: name })\n        figcaption.appendChild(nameElement)\n      }\n\n      if (size) {\n        if (name) {\n          figcaption.appendChild(document.createTextNode(\" \"))\n        }\n        const sizeElement = makeElement({ tagName: \"span\", className: css.attachmentSize, textContent: size })\n        figcaption.appendChild(sizeElement)\n      }\n    }\n\n    return figcaption\n  }\n\n  getClassName() {\n    const names = [ css.attachment, `${css.attachment}--${this.attachment.getType()}` ]\n    const extension = this.attachment.getExtension()\n    if (extension) {\n      names.push(`${css.attachment}--${extension}`)\n    }\n    return names.join(\" \")\n  }\n\n  getData() {\n    const data = {\n      trixAttachment: JSON.stringify(this.attachment),\n      trixContentType: this.attachment.getContentType(),\n      trixId: this.attachment.id,\n    }\n\n    const { attributes } = this.attachmentPiece\n    if (!attributes.isEmpty()) {\n      data.trixAttributes = JSON.stringify(attributes)\n    }\n\n    if (this.attachment.isPending()) {\n      data.trixSerialize = false\n    }\n\n    return data\n  }\n\n  getHref() {\n    if (!htmlContainsTagName(this.attachment.getContent(), \"a\")) {\n      const href = this.attachment.getHref()\n      if (href && DOMPurify.isValidAttribute(\"a\", \"href\", href)) {\n        return href\n      }\n    }\n  }\n\n  getCaptionConfig() {\n    const type = this.attachment.getType()\n    const captionConfig = copyObject(config.attachments[type]?.caption)\n    if (type === \"file\") {\n      captionConfig.name = true\n    }\n    return captionConfig\n  }\n\n  findProgressElement() {\n    return this.findElement()?.querySelector(\"progress\")\n  }\n\n  // Attachment delegate\n\n  attachmentDidChangeUploadProgress() {\n    const value = this.attachment.getUploadProgress()\n    const progressElement = this.findProgressElement()\n    if (progressElement) {\n      progressElement.value = value\n    }\n  }\n}\n\nconst createCursorTarget = (name) =>\n  makeElement({\n    tagName: \"span\",\n    textContent: ZERO_WIDTH_SPACE,\n    data: {\n      trixCursorTarget: name,\n      trixSerialize: false,\n    },\n  })\n\nconst htmlContainsTagName = function(html, tagName) {\n  const div = makeElement(\"div\")\n  HTMLSanitizer.setHTML(div, html || \"\")\n  return div.querySelector(tagName)\n}\n", "import * as config from \"trix/config\"\nimport { makeElement } from \"trix/core/helpers\"\n\nimport AttachmentView from \"trix/views/attachment_view\"\n\nexport default class PreviewableAttachmentView extends AttachmentView {\n  constructor() {\n    super(...arguments)\n    this.attachment.previewDelegate = this\n  }\n\n  createContentNodes() {\n    this.image = makeElement({\n      tagName: \"img\",\n      attributes: {\n        src: \"\",\n      },\n      data: {\n        trixMutable: true,\n      },\n    })\n\n    this.refresh(this.image)\n    return [ this.image ]\n  }\n\n  createCaptionElement() {\n    const figcaption = super.createCaptionElement(...arguments)\n    if (!figcaption.textContent) {\n      figcaption.setAttribute(\"data-trix-placeholder\", config.lang.captionPlaceholder)\n    }\n    return figcaption\n  }\n\n  refresh(image) {\n    if (!image) { image = this.findElement()?.querySelector(\"img\") }\n    if (image) {\n      return this.updateAttributesForImage(image)\n    }\n  }\n\n  updateAttributesForImage(image) {\n    const url = this.attachment.getURL()\n    const previewURL = this.attachment.getPreviewURL()\n    image.src = previewURL || url\n\n    if (previewURL === url) {\n      image.removeAttribute(\"data-trix-serialized-attributes\")\n    } else {\n      const serializedAttributes = JSON.stringify({ src: url })\n      image.setAttribute(\"data-trix-serialized-attributes\", serializedAttributes)\n    }\n\n    const width = this.attachment.getWidth()\n    const height = this.attachment.getHeight()\n    const alt = this.attachment.getAttribute(\"alt\")\n\n    if (width != null) {\n      image.width = width\n    }\n    if (height != null) {\n      image.height = height\n    }\n    if (alt != null) {\n      image.alt = alt\n    }\n\n    const storeKey = [ \"imageElement\", this.attachment.id, image.src, image.width, image.height ].join(\"/\")\n    image.dataset.trixStoreKey = storeKey\n  }\n\n  // Attachment delegate\n\n  attachmentDidChangeAttributes() {\n    this.refresh(this.image)\n    return this.refresh()\n  }\n}\n", "/* eslint-disable\n    no-useless-escape,\n    no-var,\n*/\nimport { NON_BREAKING_SPACE } from \"trix/constants\"\n\nimport ObjectView from \"trix/views/object_view\"\nimport AttachmentView from \"trix/views/attachment_view\"\nimport PreviewableAttachmentView from \"trix/views/previewable_attachment_view\"\n\nimport { findInnerElement, getTextConfig, makeElement } from \"trix/core/helpers\"\n\nexport default class PieceView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.piece = this.object\n    this.attributes = this.piece.getAttributes()\n    this.textConfig = this.options.textConfig\n    this.context = this.options.context\n\n    if (this.piece.attachment) {\n      this.attachment = this.piece.attachment\n    } else {\n      this.string = this.piece.toString()\n    }\n  }\n\n  createNodes() {\n    let nodes = this.attachment ? this.createAttachmentNodes() : this.createStringNodes()\n    const element = this.createElement()\n    if (element) {\n      const innerElement = findInnerElement(element)\n      Array.from(nodes).forEach((node) => {\n        innerElement.appendChild(node)\n      })\n      nodes = [ element ]\n    }\n    return nodes\n  }\n\n  createAttachmentNodes() {\n    const constructor = this.attachment.isPreviewable() ? PreviewableAttachmentView : AttachmentView\n\n    const view = this.createChildView(constructor, this.piece.attachment, { piece: this.piece })\n    return view.getNodes()\n  }\n\n  createStringNodes() {\n    if (this.textConfig?.plaintext) {\n      return [ document.createTextNode(this.string) ]\n    } else {\n      const nodes = []\n      const iterable = this.string.split(\"\\n\")\n      for (let index = 0; index < iterable.length; index++) {\n        const substring = iterable[index]\n        if (index > 0) {\n          const element = makeElement(\"br\")\n          nodes.push(element)\n        }\n\n        if (substring.length) {\n          const node = document.createTextNode(this.preserveSpaces(substring))\n          nodes.push(node)\n        }\n      }\n      return nodes\n    }\n  }\n\n  createElement() {\n    let element, key, value\n    const styles = {}\n\n    for (key in this.attributes) {\n      value = this.attributes[key]\n      const config = getTextConfig(key)\n      if (config) {\n        if (config.tagName) {\n          var innerElement\n          const pendingElement = makeElement(config.tagName)\n\n          if (innerElement) {\n            innerElement.appendChild(pendingElement)\n            innerElement = pendingElement\n          } else {\n            element = innerElement = pendingElement\n          }\n        }\n\n        if (config.styleProperty) {\n          styles[config.styleProperty] = value\n        }\n\n        if (config.style) {\n          for (key in config.style) {\n            value = config.style[key]\n            styles[key] = value\n          }\n        }\n      }\n    }\n\n    if (Object.keys(styles).length) {\n      if (!element) { element = makeElement(\"span\") }\n      for (key in styles) {\n        value = styles[key]\n        element.style[key] = value\n      }\n    }\n    return element\n  }\n\n  createContainerElement() {\n    for (const key in this.attributes) {\n      const value = this.attributes[key]\n      const config = getTextConfig(key)\n      if (config) {\n        if (config.groupTagName) {\n          const attributes = {}\n          attributes[key] = value\n          return makeElement(config.groupTagName, attributes)\n        }\n      }\n    }\n  }\n\n  preserveSpaces(string) {\n    if (this.context.isLast) {\n      string = string.replace(/\\ $/, NON_BREAKING_SPACE)\n    }\n\n    string = string\n      .replace(/(\\S)\\ {3}(\\S)/g, `$1 ${NON_BREAKING_SPACE} $2`)\n      .replace(/\\ {2}/g, `${NON_BREAKING_SPACE} `)\n      .replace(/\\ {2}/g, ` ${NON_BREAKING_SPACE}`)\n\n    if (this.context.isFirst || this.context.followsWhitespace) {\n      string = string.replace(/^\\ /, NON_BREAKING_SPACE)\n    }\n\n    return string\n  }\n}\n", "/* eslint-disable\n    no-var,\n*/\nimport ObjectView from \"trix/views/object_view\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\nimport PieceView from \"trix/views/piece_view\"\n\nexport default class TextView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.text = this.object\n    this.textConfig = this.options.textConfig\n  }\n\n  createNodes() {\n    const nodes = []\n    const pieces = ObjectGroup.groupObjects(this.getPieces())\n    const lastIndex = pieces.length - 1\n\n    for (let index = 0; index < pieces.length; index++) {\n      const piece = pieces[index]\n      const context = {}\n      if (index === 0) {\n        context.isFirst = true\n      }\n      if (index === lastIndex) {\n        context.isLast = true\n      }\n      if (endsWithWhitespace(previousPiece)) {\n        context.followsWhitespace = true\n      }\n\n      const view = this.findOrCreateCachedChildView(PieceView, piece, { textConfig: this.textConfig, context })\n      nodes.push(...Array.from(view.getNodes() || []))\n\n      var previousPiece = piece\n    }\n    return nodes\n  }\n\n  getPieces() {\n    return Array.from(this.text.getPieces()).filter((piece) => !piece.hasAttribute(\"blockBreak\"))\n  }\n}\n\nconst endsWithWhitespace = (piece) => /\\s$/.test(piece?.toString())\n", "import * as config from \"trix/config\"\nimport ObjectView from \"trix/views/object_view\"\nimport TextView from \"trix/views/text_view\"\n\nimport { getBlockConfig, makeElement } from \"trix/core/helpers\"\nconst { css } = config\n\nexport default class BlockView extends ObjectView {\n  constructor() {\n    super(...arguments)\n    this.block = this.object\n    this.attributes = this.block.getAttributes()\n  }\n\n  createNodes() {\n    const comment = document.createComment(\"block\")\n    const nodes = [ comment ]\n    if (this.block.isEmpty()) {\n      nodes.push(makeElement(\"br\"))\n    } else {\n      const textConfig = getBlockConfig(this.block.getLastAttribute())?.text\n      const textView = this.findOrCreateCachedChildView(TextView, this.block.text, { textConfig })\n      nodes.push(...Array.from(textView.getNodes() || []))\n      if (this.shouldAddExtraNewlineElement()) {\n        nodes.push(makeElement(\"br\"))\n      }\n    }\n\n    if (this.attributes.length) {\n      return nodes\n    } else {\n      let attributes\n      const { tagName } = config.blockAttributes.default\n      if (this.block.isRTL()) {\n        attributes = { dir: \"rtl\" }\n      }\n\n      const element = makeElement({ tagName, attributes })\n      nodes.forEach((node) => element.appendChild(node))\n      return [ element ]\n    }\n  }\n\n  createContainerElement(depth) {\n    const attributes = {}\n    let className\n    const attributeName = this.attributes[depth]\n\n    const { tagName, htmlAttributes = [] } = getBlockConfig(attributeName)\n\n    if (depth === 0 && this.block.isRTL()) {\n      Object.assign(attributes, { dir: \"rtl\" })\n    }\n\n    if (attributeName === \"attachmentGallery\") {\n      const size = this.block.getBlockBreakPosition()\n      className = `${css.attachmentGallery} ${css.attachmentGallery}--${size}`\n    }\n\n    Object.entries(this.block.htmlAttributes).forEach(([ name, value ]) => {\n      if (htmlAttributes.includes(name)) {\n        attributes[name] = value\n      }\n    })\n\n    return makeElement({ tagName, className, attributes })\n  }\n\n  // A single <br> at the end of a block element has no visual representation\n  // so add an extra one.\n  shouldAddExtraNewlineElement() {\n    return /\\n\\n$/.test(this.block.toString())\n  }\n}\n", "import { createEvent, makeElement } from \"trix/core/helpers\"\n\nimport ElementStore from \"trix/core/collections/element_store\"\nimport ObjectGroup from \"trix/core/collections/object_group\"\nimport ObjectView from \"trix/views/object_view\"\nimport BlockView from \"trix/views/block_view\"\n\nimport { defer } from \"trix/core/helpers\"\n\nexport default class DocumentView extends ObjectView {\n  static render(document) {\n    const element = makeElement(\"div\")\n    const view = new this(document, { element })\n    view.render()\n    view.sync()\n    return element\n  }\n\n  constructor() {\n    super(...arguments)\n    this.element = this.options.element\n    this.elementStore = new ElementStore()\n    this.setDocument(this.object)\n  }\n\n  setDocument(document) {\n    if (!document.isEqualTo(this.document)) {\n      this.document = this.object = document\n    }\n  }\n\n  render() {\n    this.childViews = []\n\n    this.shadowElement = makeElement(\"div\")\n\n    if (!this.document.isEmpty()) {\n      const objects = ObjectGroup.groupObjects(this.document.getBlocks(), { asTree: true })\n\n      Array.from(objects).forEach((object) => {\n        const view = this.findOrCreateCachedChildView(BlockView, object)\n        Array.from(view.getNodes()).map((node) => this.shadowElement.appendChild(node))\n      })\n    }\n  }\n\n  isSynced() {\n    return elementsHaveEqualHTML(this.shadowElement, this.element)\n  }\n\n  sync() {\n    const render = (element, documentFragment) => {\n      while (element.lastChild) {\n        element.removeChild(element.lastChild)\n      }\n      element.appendChild(documentFragment)\n    }\n\n    const event = createEvent(\"trix-before-render\", { cancelable: false, attributes: { render } })\n    this.element.dispatchEvent(event)\n\n    const fragment = this.createDocumentFragmentForSync()\n    event.render(this.element, fragment)\n    return this.didSync()\n  }\n\n  // Private\n\n  didSync() {\n    this.elementStore.reset(findStoredElements(this.element))\n    return defer(() => this.garbageCollectCachedViews())\n  }\n\n  createDocumentFragmentForSync() {\n    const fragment = document.createDocumentFragment()\n\n    Array.from(this.shadowElement.childNodes).forEach((node) => {\n      fragment.appendChild(node.cloneNode(true))\n    })\n\n    Array.from(findStoredElements(fragment)).forEach((element) => {\n      const storedElement = this.elementStore.remove(element)\n      if (storedElement) {\n        element.parentNode.replaceChild(storedElement, element)\n      }\n    })\n\n    return fragment\n  }\n}\n\nconst findStoredElements = (element) => element.querySelectorAll(\"[data-trix-store-key]\")\n\nconst elementsHaveEqualHTML = (element, otherElement) =>\n  ignoreSpaces(element.innerHTML) === ignoreSpaces(otherElement.innerHTML)\n\nconst ignoreSpaces = (html) => html.replace(/&nbsp;/g, \" \")\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Hash from \"trix/core/collections/hash\"\n\nexport default class Piece extends TrixObject {\n  static types = {}\n\n  static registerType(type, constructor) {\n    constructor.type = type\n    this.types[type] = constructor\n  }\n\n  static fromJSON(pieceJSON) {\n    const constructor = this.types[pieceJSON.type]\n    if (constructor) {\n      return constructor.fromJSON(pieceJSON)\n    }\n  }\n\n  constructor(value, attributes = {}) {\n    super(...arguments)\n    this.attributes = Hash.box(attributes)\n  }\n\n  copyWithAttributes(attributes) {\n    return new this.constructor(this.getValue(), attributes)\n  }\n\n  copyWithAdditionalAttributes(attributes) {\n    return this.copyWithAttributes(this.attributes.merge(attributes))\n  }\n\n  copyWithoutAttribute(attribute) {\n    return this.copyWithAttributes(this.attributes.remove(attribute))\n  }\n\n  copy() {\n    return this.copyWithAttributes(this.attributes)\n  }\n\n  getAttribute(attribute) {\n    return this.attributes.get(attribute)\n  }\n\n  getAttributesHash() {\n    return this.attributes\n  }\n\n  getAttributes() {\n    return this.attributes.toObject()\n  }\n\n  hasAttribute(attribute) {\n    return this.attributes.has(attribute)\n  }\n\n  hasSameStringValueAsPiece(piece) {\n    return piece && this.toString() === piece.toString()\n  }\n\n  hasSameAttributesAsPiece(piece) {\n    return piece && (this.attributes === piece.attributes || this.attributes.isEqualTo(piece.attributes))\n  }\n\n  isBlockBreak() {\n    return false\n  }\n\n  isEqualTo(piece) {\n    return (\n      super.isEqualTo(...arguments) ||\n      this.hasSameConstructorAs(piece) &&\n        this.hasSameStringValueAsPiece(piece) &&\n        this.hasSameAttributesAsPiece(piece)\n    )\n  }\n\n  isEmpty() {\n    return this.length === 0\n  }\n\n  isSerializable() {\n    return true\n  }\n\n  toJSON() {\n    return {\n      type: this.constructor.type,\n      attributes: this.getAttributes(),\n    }\n  }\n\n  contentsForInspection() {\n    return {\n      type: this.constructor.type,\n      attributes: this.attributes.inspect(),\n    }\n  }\n\n  // Grouping\n\n  canBeGrouped() {\n    return this.hasAttribute(\"href\")\n  }\n\n  canBeGroupedWith(piece) {\n    return this.getAttribute(\"href\") === piece.getAttribute(\"href\")\n  }\n\n  // Splittable\n\n  getLength() {\n    return this.length\n  }\n\n  canBeConsolidatedWith(piece) {\n    return false\n  }\n}\n", "import Operation from \"trix/core/utilities/operation\"\n\nexport default class ImagePreloadOperation extends Operation {\n  constructor(url) {\n    super(...arguments)\n    this.url = url\n  }\n\n  perform(callback) {\n    const image = new Image()\n\n    image.onload = () => {\n      image.width = this.width = image.naturalWidth\n      image.height = this.height = image.naturalHeight\n      return callback(true, image)\n    }\n\n    image.onerror = () => callback(false)\n\n    image.src = this.url\n  }\n}\n", "import * as config from \"trix/config\"\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Hash from \"trix/core/collections/hash\"\nimport ImagePreloadOperation from \"trix/operations/image_preload_operation\"\n\nexport default class Attachment extends TrixObject {\n  static previewablePattern = /^image(\\/(gif|png|webp|jpe?g)|$)/\n\n  static attachmentForFile(file) {\n    const attributes = this.attributesForFile(file)\n    const attachment = new this(attributes)\n    attachment.setFile(file)\n    return attachment\n  }\n\n  static attributesForFile(file) {\n    return new Hash({\n      filename: file.name,\n      filesize: file.size,\n      contentType: file.type,\n    })\n  }\n\n  static fromJSON(attachmentJSON) {\n    return new this(attachmentJSON)\n  }\n\n  constructor(attributes = {}) {\n    super(attributes)\n    this.releaseFile = this.releaseFile.bind(this)\n    this.attributes = Hash.box(attributes)\n    this.didChangeAttributes()\n  }\n\n  setAttribute(attribute, value) {\n    this.setAttributes({ [attribute]: value })\n  }\n\n  getAttribute(attribute) {\n    return this.attributes.get(attribute)\n  }\n\n  hasAttribute(attribute) {\n    return this.attributes.has(attribute)\n  }\n\n  getAttributes() {\n    return this.attributes.toObject()\n  }\n\n  setAttributes(attributes = {}) {\n    const newAttributes = this.attributes.merge(attributes)\n    if (!this.attributes.isEqualTo(newAttributes)) {\n      this.attributes = newAttributes\n      this.didChangeAttributes()\n      this.previewDelegate?.attachmentDidChangeAttributes?.(this)\n      return this.delegate?.attachmentDidChangeAttributes?.(this)\n    }\n  }\n\n  didChangeAttributes() {\n    if (this.isPreviewable()) {\n      return this.preloadURL()\n    }\n  }\n\n  isPending() {\n    return this.file != null && !(this.getURL() || this.getHref())\n  }\n\n  isPreviewable() {\n    if (this.attributes.has(\"previewable\")) {\n      return this.attributes.get(\"previewable\")\n    } else {\n      return Attachment.previewablePattern.test(this.getContentType())\n    }\n  }\n\n  getType() {\n    if (this.hasContent()) {\n      return \"content\"\n    } else if (this.isPreviewable()) {\n      return \"preview\"\n    } else {\n      return \"file\"\n    }\n  }\n\n  getURL() {\n    return this.attributes.get(\"url\")\n  }\n\n  getHref() {\n    return this.attributes.get(\"href\")\n  }\n\n  getFilename() {\n    return this.attributes.get(\"filename\") || \"\"\n  }\n\n  getFilesize() {\n    return this.attributes.get(\"filesize\")\n  }\n\n  getFormattedFilesize() {\n    const filesize = this.attributes.get(\"filesize\")\n    if (typeof filesize === \"number\") {\n      return config.fileSize.formatter(filesize)\n    } else {\n      return \"\"\n    }\n  }\n\n  getExtension() {\n    return this.getFilename()\n      .match(/\\.(\\w+)$/)?.[1]\n      .toLowerCase()\n  }\n\n  getContentType() {\n    return this.attributes.get(\"contentType\")\n  }\n\n  hasContent() {\n    return this.attributes.has(\"content\")\n  }\n\n  getContent() {\n    return this.attributes.get(\"content\")\n  }\n\n  getWidth() {\n    return this.attributes.get(\"width\")\n  }\n\n  getHeight() {\n    return this.attributes.get(\"height\")\n  }\n\n  getFile() {\n    return this.file\n  }\n\n  setFile(file) {\n    this.file = file\n    if (this.isPreviewable()) {\n      return this.preloadFile()\n    }\n  }\n\n  releaseFile() {\n    this.releasePreloadedFile()\n    this.file = null\n  }\n\n  getUploadProgress() {\n    return this.uploadProgress != null ? this.uploadProgress : 0\n  }\n\n  setUploadProgress(value) {\n    if (this.uploadProgress !== value) {\n      this.uploadProgress = value\n      return this.uploadProgressDelegate?.attachmentDidChangeUploadProgress?.(this)\n    }\n  }\n\n  toJSON() {\n    return this.getAttributes()\n  }\n\n  getCacheKey() {\n    return [ super.getCacheKey(...arguments), this.attributes.getCacheKey(), this.getPreviewURL() ].join(\"/\")\n  }\n\n  // Previewable\n\n  getPreviewURL() {\n    return this.previewURL || this.preloadingURL\n  }\n\n  setPreviewURL(url) {\n    if (url !== this.getPreviewURL()) {\n      this.previewURL = url\n      this.previewDelegate?.attachmentDidChangeAttributes?.(this)\n      return this.delegate?.attachmentDidChangePreviewURL?.(this)\n    }\n  }\n\n  preloadURL() {\n    return this.preload(this.getURL(), this.releaseFile)\n  }\n\n  preloadFile() {\n    if (this.file) {\n      this.fileObjectURL = URL.createObjectURL(this.file)\n      return this.preload(this.fileObjectURL)\n    }\n  }\n\n  releasePreloadedFile() {\n    if (this.fileObjectURL) {\n      URL.revokeObjectURL(this.fileObjectURL)\n      this.fileObjectURL = null\n    }\n  }\n\n  preload(url, callback) {\n    if (url && url !== this.getPreviewURL()) {\n      this.preloadingURL = url\n      const operation = new ImagePreloadOperation(url)\n      return operation\n        .then(({ width, height }) => {\n          if (!this.getWidth() || !this.getHeight()) {\n            this.setAttributes({ width, height })\n          }\n          this.preloadingURL = null\n          this.setPreviewURL(url)\n          return callback?.()\n        })\n        .catch(() => {\n          this.preloadingURL = null\n          return callback?.()\n        })\n    }\n  }\n}\n", "import { OBJECT_REPLACEMENT_CHARACTER } from \"trix/constants\"\n\nimport Attachment from \"trix/models/attachment\"\nimport Piece from \"trix/models/piece\"\n\nexport default class AttachmentPiece extends Piece {\n  static permittedAttributes = [ \"caption\", \"presentation\" ]\n\n  static fromJSON(pieceJSON) {\n    return new this(Attachment.fromJSON(pieceJSON.attachment), pieceJSON.attributes)\n  }\n\n  constructor(attachment) {\n    super(...arguments)\n    this.attachment = attachment\n    this.length = 1\n    this.ensureAttachmentExclusivelyHasAttribute(\"href\")\n    if (!this.attachment.hasContent()) {\n      this.removeProhibitedAttributes()\n    }\n  }\n\n  ensureAttachmentExclusivelyHasAttribute(attribute) {\n    if (this.hasAttribute(attribute)) {\n      if (!this.attachment.hasAttribute(attribute)) {\n        this.attachment.setAttributes(this.attributes.slice([ attribute ]))\n      }\n      this.attributes = this.attributes.remove(attribute)\n    }\n  }\n\n  removeProhibitedAttributes() {\n    const attributes = this.attributes.slice(AttachmentPiece.permittedAttributes)\n    if (!attributes.isEqualTo(this.attributes)) {\n      this.attributes = attributes\n    }\n  }\n\n  getValue() {\n    return this.attachment\n  }\n\n  isSerializable() {\n    return !this.attachment.isPending()\n  }\n\n  getCaption() {\n    return this.attributes.get(\"caption\") || \"\"\n  }\n\n  isEqualTo(piece) {\n    return super.isEqualTo(piece) && this.attachment.id === piece?.attachment?.id\n  }\n\n  toString() {\n    return OBJECT_REPLACEMENT_CHARACTER\n  }\n\n  toJSON() {\n    const json = super.toJSON(...arguments)\n    json.attachment = this.attachment\n    return json\n  }\n\n  getCacheKey() {\n    return [ super.getCacheKey(...arguments), this.attachment.getCacheKey() ].join(\"/\")\n  }\n\n  toConsole() {\n    return JSON.stringify(this.toString())\n  }\n}\n\nPiece.registerType(\"attachment\", AttachmentPiece)\n", "import DOMPurify from \"dompurify\"\n\nimport Piece from \"trix/models/piece\"\n\nimport { normalizeNewlines } from \"trix/core/helpers\"\n\nexport default class StringPiece extends Piece {\n  static fromJSON(pieceJSON) {\n    const attributes = { ...pieceJSON.attributes }\n    if (attributes.href && !DOMPurify.isValidAttribute(\"a\", \"href\", attributes.href)) {\n      delete attributes.href\n    }\n    return new this(pieceJSON.string, attributes)\n  }\n\n  constructor(string) {\n    super(...arguments)\n    this.string = normalizeNewlines(string)\n    this.length = this.string.length\n  }\n\n  getValue() {\n    return this.string\n  }\n\n  toString() {\n    return this.string.toString()\n  }\n\n  isBlockBreak() {\n    return this.toString() === \"\\n\" && this.getAttribute(\"blockBreak\") === true\n  }\n\n  toJSON() {\n    const result = super.toJSON(...arguments)\n    result.string = this.string\n    return result\n  }\n\n  // Splittable\n\n  canBeConsolidatedWith(piece) {\n    return piece && this.hasSameConstructorAs(piece) && this.hasSameAttributesAsPiece(piece)\n  }\n\n  consolidateWith(piece) {\n    return new this.constructor(this.toString() + piece.toString(), this.attributes)\n  }\n\n  splitAtOffset(offset) {\n    let left, right\n    if (offset === 0) {\n      left = null\n      right = this\n    } else if (offset === this.length) {\n      left = this\n      right = null\n    } else {\n      left = new this.constructor(this.string.slice(0, offset), this.attributes)\n      right = new this.constructor(this.string.slice(offset), this.attributes)\n    }\n    return [ left, right ]\n  }\n\n  toConsole() {\n    let { string } = this\n    if (string.length > 15) {\n      string = string.slice(0, 14) + \"…\"\n    }\n    return JSON.stringify(string.toString())\n  }\n}\n\nPiece.registerType(\"string\", StringPiece)\n", "/* eslint-disable\n    prefer-const,\n*/\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport { spliceArray } from \"trix/core/helpers\"\n\nexport default class SplittableList extends TrixObject {\n  static box(objects) {\n    if (objects instanceof this) {\n      return objects\n    } else {\n      return new this(objects)\n    }\n  }\n\n  constructor(objects = []) {\n    super(...arguments)\n    this.objects = objects.slice(0)\n    this.length = this.objects.length\n  }\n\n  indexOf(object) {\n    return this.objects.indexOf(object)\n  }\n\n  splice(...args) {\n    return new this.constructor(spliceArray(this.objects, ...args))\n  }\n\n  eachObject(callback) {\n    return this.objects.map((object, index) => callback(object, index))\n  }\n\n  insertObjectAtIndex(object, index) {\n    return this.splice(index, 0, object)\n  }\n\n  insertSplittableListAtIndex(splittableList, index) {\n    return this.splice(index, 0, ...splittableList.objects)\n  }\n\n  insertSplittableListAtPosition(splittableList, position) {\n    const [ objects, index ] = this.splitObjectAtPosition(position)\n    return new this.constructor(objects).insertSplittableListAtIndex(splittableList, index)\n  }\n\n  editObjectAtIndex(index, callback) {\n    return this.replaceObjectAtIndex(callback(this.objects[index]), index)\n  }\n\n  replaceObjectAtIndex(object, index) {\n    return this.splice(index, 1, object)\n  }\n\n  removeObjectAtIndex(index) {\n    return this.splice(index, 1)\n  }\n\n  getObjectAtIndex(index) {\n    return this.objects[index]\n  }\n\n  getSplittableListInRange(range) {\n    const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n    return new this.constructor(objects.slice(leftIndex, rightIndex + 1))\n  }\n\n  selectSplittableList(test) {\n    const objects = this.objects.filter((object) => test(object))\n    return new this.constructor(objects)\n  }\n\n  removeObjectsInRange(range) {\n    const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n    return new this.constructor(objects).splice(leftIndex, rightIndex - leftIndex + 1)\n  }\n\n  transformObjectsInRange(range, transform) {\n    const [ objects, leftIndex, rightIndex ] = this.splitObjectsAtRange(range)\n    const transformedObjects = objects.map((object, index) =>\n      leftIndex <= index && index <= rightIndex ? transform(object) : object\n    )\n    return new this.constructor(transformedObjects)\n  }\n\n  splitObjectsAtRange(range) {\n    let rightOuterIndex\n    let [ objects, leftInnerIndex, offset ] = this.splitObjectAtPosition(startOfRange(range))\n    ;[ objects, rightOuterIndex ] = new this.constructor(objects).splitObjectAtPosition(endOfRange(range) + offset)\n\n    return [ objects, leftInnerIndex, rightOuterIndex - 1 ]\n  }\n\n  getObjectAtPosition(position) {\n    const { index } = this.findIndexAndOffsetAtPosition(position)\n    return this.objects[index]\n  }\n\n  splitObjectAtPosition(position) {\n    let splitIndex, splitOffset\n    const { index, offset } = this.findIndexAndOffsetAtPosition(position)\n    const objects = this.objects.slice(0)\n    if (index != null) {\n      if (offset === 0) {\n        splitIndex = index\n        splitOffset = 0\n      } else {\n        const object = this.getObjectAtIndex(index)\n        const [ leftObject, rightObject ] = object.splitAtOffset(offset)\n        objects.splice(index, 1, leftObject, rightObject)\n        splitIndex = index + 1\n        splitOffset = leftObject.getLength() - offset\n      }\n    } else {\n      splitIndex = objects.length\n      splitOffset = 0\n    }\n\n    return [ objects, splitIndex, splitOffset ]\n  }\n\n  consolidate() {\n    const objects = []\n    let pendingObject = this.objects[0]\n\n    this.objects.slice(1).forEach((object) => {\n      if (pendingObject.canBeConsolidatedWith?.(object)) {\n        pendingObject = pendingObject.consolidateWith(object)\n      } else {\n        objects.push(pendingObject)\n        pendingObject = object\n      }\n    })\n\n    if (pendingObject) {\n      objects.push(pendingObject)\n    }\n\n    return new this.constructor(objects)\n  }\n\n  consolidateFromIndexToIndex(startIndex, endIndex) {\n    const objects = this.objects.slice(0)\n    const objectsInRange = objects.slice(startIndex, endIndex + 1)\n    const consolidatedInRange = new this.constructor(objectsInRange).consolidate().toArray()\n    return this.splice(startIndex, objectsInRange.length, ...consolidatedInRange)\n  }\n\n  findIndexAndOffsetAtPosition(position) {\n    let index\n    let currentPosition = 0\n    for (index = 0; index < this.objects.length; index++) {\n      const object = this.objects[index]\n      const nextPosition = currentPosition + object.getLength()\n      if (currentPosition <= position && position < nextPosition) {\n        return { index, offset: position - currentPosition }\n      }\n      currentPosition = nextPosition\n    }\n    return { index: null, offset: null }\n  }\n\n  findPositionAtIndexAndOffset(index, offset) {\n    let position = 0\n    for (let currentIndex = 0; currentIndex < this.objects.length; currentIndex++) {\n      const object = this.objects[currentIndex]\n      if (currentIndex < index) {\n        position += object.getLength()\n      } else if (currentIndex === index) {\n        position += offset\n        break\n      }\n    }\n    return position\n  }\n\n  getEndPosition() {\n    if (this.endPosition == null) {\n      this.endPosition = 0\n      this.objects.forEach((object) => this.endPosition += object.getLength())\n    }\n\n    return this.endPosition\n  }\n\n  toString() {\n    return this.objects.join(\"\")\n  }\n\n  toArray() {\n    return this.objects.slice(0)\n  }\n\n  toJSON() {\n    return this.toArray()\n  }\n\n  isEqualTo(splittableList) {\n    return super.isEqualTo(...arguments) || objectArraysAreEqual(this.objects, splittableList?.objects)\n  }\n\n  contentsForInspection() {\n    return {\n      objects: `[${this.objects.map((object) => object.inspect()).join(\", \")}]`,\n    }\n  }\n}\n\nconst objectArraysAreEqual = function(left, right = []) {\n  if (left.length !== right.length) {\n    return false\n  }\n  let result = true\n  for (let index = 0; index < left.length; index++) {\n    const object = left[index]\n    if (result && !object.isEqualTo(right[index])) {\n      result = false\n    }\n  }\n  return result\n}\n\nconst startOfRange = (range) => range[0]\n\nconst endOfRange = (range) => range[1]\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport { getDirection } from \"trix/core/helpers\"\n\nimport Piece from \"trix/models/piece\"\nimport AttachmentPiece from \"trix/models/attachment_piece\"\nimport StringPiece from \"trix/models/string_piece\"\nimport SplittableList from \"trix/models/splittable_list\"\n\nimport Hash from \"trix/core/collections/hash\"\n\nexport default class Text extends TrixObject {\n  static textForAttachmentWithAttributes(attachment, attributes) {\n    const piece = new AttachmentPiece(attachment, attributes)\n    return new this([ piece ])\n  }\n\n  static textForStringWithAttributes(string, attributes) {\n    const piece = new StringPiece(string, attributes)\n    return new this([ piece ])\n  }\n\n  static fromJSON(textJSON) {\n    const pieces = Array.from(textJSON).map((pieceJSON) => Piece.fromJSON(pieceJSON))\n    return new this(pieces)\n  }\n\n  constructor(pieces = []) {\n    super(...arguments)\n    const notEmpty = pieces.filter((piece) => !piece.isEmpty())\n    this.pieceList = new SplittableList(notEmpty)\n  }\n\n  copy() {\n    return this.copyWithPieceList(this.pieceList)\n  }\n\n  copyWithPieceList(pieceList) {\n    return new this.constructor(pieceList.consolidate().toArray())\n  }\n\n  copyUsingObjectMap(objectMap) {\n    const pieces = this.getPieces().map((piece) => objectMap.find(piece) || piece)\n    return new this.constructor(pieces)\n  }\n\n  appendText(text) {\n    return this.insertTextAtPosition(text, this.getLength())\n  }\n\n  insertTextAtPosition(text, position) {\n    return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(text.pieceList, position))\n  }\n\n  removeTextAtRange(range) {\n    return this.copyWithPieceList(this.pieceList.removeObjectsInRange(range))\n  }\n\n  replaceTextAtRange(text, range) {\n    return this.removeTextAtRange(range).insertTextAtPosition(text, range[0])\n  }\n\n  moveTextFromRangeToPosition(range, position) {\n    if (range[0] <= position && position <= range[1]) return\n    const text = this.getTextAtRange(range)\n    const length = text.getLength()\n    if (range[0] < position) {\n      position -= length\n    }\n    return this.removeTextAtRange(range).insertTextAtPosition(text, position)\n  }\n\n  addAttributeAtRange(attribute, value, range) {\n    const attributes = {}\n    attributes[attribute] = value\n    return this.addAttributesAtRange(attributes, range)\n  }\n\n  addAttributesAtRange(attributes, range) {\n    return this.copyWithPieceList(\n      this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithAdditionalAttributes(attributes))\n    )\n  }\n\n  removeAttributeAtRange(attribute, range) {\n    return this.copyWithPieceList(\n      this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithoutAttribute(attribute))\n    )\n  }\n\n  setAttributesAtRange(attributes, range) {\n    return this.copyWithPieceList(\n      this.pieceList.transformObjectsInRange(range, (piece) => piece.copyWithAttributes(attributes))\n    )\n  }\n\n  getAttributesAtPosition(position) {\n    return this.pieceList.getObjectAtPosition(position)?.getAttributes() || {}\n  }\n\n  getCommonAttributes() {\n    const objects = Array.from(this.pieceList.toArray()).map((piece) => piece.getAttributes())\n    return Hash.fromCommonAttributesOfObjects(objects).toObject()\n  }\n\n  getCommonAttributesAtRange(range) {\n    return this.getTextAtRange(range).getCommonAttributes() || {}\n  }\n\n  getExpandedRangeForAttributeAtOffset(attributeName, offset) {\n    let right\n    let left = right = offset\n    const length = this.getLength()\n\n    while (left > 0 && this.getCommonAttributesAtRange([ left - 1, right ])[attributeName]) {\n      left--\n    }\n    while (right < length && this.getCommonAttributesAtRange([ offset, right + 1 ])[attributeName]) {\n      right++\n    }\n\n    return [ left, right ]\n  }\n\n  getTextAtRange(range) {\n    return this.copyWithPieceList(this.pieceList.getSplittableListInRange(range))\n  }\n\n  getStringAtRange(range) {\n    return this.pieceList.getSplittableListInRange(range).toString()\n  }\n\n  getStringAtPosition(position) {\n    return this.getStringAtRange([ position, position + 1 ])\n  }\n\n  startsWithString(string) {\n    return this.getStringAtRange([ 0, string.length ]) === string\n  }\n\n  endsWithString(string) {\n    const length = this.getLength()\n    return this.getStringAtRange([ length - string.length, length ]) === string\n  }\n\n  getAttachmentPieces() {\n    return this.pieceList.toArray().filter((piece) => !!piece.attachment)\n  }\n\n  getAttachments() {\n    return this.getAttachmentPieces().map((piece) => piece.attachment)\n  }\n\n  getAttachmentAndPositionById(attachmentId) {\n    let position = 0\n    for (const piece of this.pieceList.toArray()) {\n      if (piece.attachment?.id === attachmentId) {\n        return { attachment: piece.attachment, position }\n      }\n      position += piece.length\n    }\n    return { attachment: null, position: null }\n  }\n\n  getAttachmentById(attachmentId) {\n    const { attachment } = this.getAttachmentAndPositionById(attachmentId)\n    return attachment\n  }\n\n  getRangeOfAttachment(attachment) {\n    const attachmentAndPosition = this.getAttachmentAndPositionById(attachment.id)\n    const position = attachmentAndPosition.position\n    attachment = attachmentAndPosition.attachment\n    if (attachment) {\n      return [ position, position + 1 ]\n    }\n  }\n\n  updateAttributesForAttachment(attributes, attachment) {\n    const range = this.getRangeOfAttachment(attachment)\n    if (range) {\n      return this.addAttributesAtRange(attributes, range)\n    } else {\n      return this\n    }\n  }\n\n  getLength() {\n    return this.pieceList.getEndPosition()\n  }\n\n  isEmpty() {\n    return this.getLength() === 0\n  }\n\n  isEqualTo(text) {\n    return super.isEqualTo(text) || text?.pieceList?.isEqualTo(this.pieceList)\n  }\n\n  isBlockBreak() {\n    return this.getLength() === 1 && this.pieceList.getObjectAtIndex(0).isBlockBreak()\n  }\n\n  eachPiece(callback) {\n    return this.pieceList.eachObject(callback)\n  }\n\n  getPieces() {\n    return this.pieceList.toArray()\n  }\n\n  getPieceAtPosition(position) {\n    return this.pieceList.getObjectAtPosition(position)\n  }\n\n  contentsForInspection() {\n    return { pieceList: this.pieceList.inspect() }\n  }\n\n  toSerializableText() {\n    const pieceList = this.pieceList.selectSplittableList((piece) => piece.isSerializable())\n    return this.copyWithPieceList(pieceList)\n  }\n\n  toString() {\n    return this.pieceList.toString()\n  }\n\n  toJSON() {\n    return this.pieceList.toJSON()\n  }\n\n  toConsole() {\n    return JSON.stringify(this.pieceList.toArray().map((piece) => JSON.parse(piece.toConsole())))\n  }\n\n  // BIDI\n\n  getDirection() {\n    return getDirection(this.toString())\n  }\n\n  isRTL() {\n    return this.getDirection() === \"rtl\"\n  }\n}\n", "import TrixObject from \"trix/core/object\" // Don't override window.Object\nimport Text from \"trix/models/text\"\n\nimport {\n  arraysAreEqual,\n  getBlockConfig,\n  getListAttributeNames,\n  objectsAreEqual,\n  spliceArray,\n} from \"trix/core/helpers\"\n\nexport default class Block extends TrixObject {\n  static fromJSON(blockJSON) {\n    const text = Text.fromJSON(blockJSON.text)\n    return new this(text, blockJSON.attributes, blockJSON.htmlAttributes)\n  }\n\n  constructor(text, attributes, htmlAttributes) {\n    super(...arguments)\n    this.text = applyBlockBreakToText(text || new Text())\n    this.attributes = attributes || []\n    this.htmlAttributes = htmlAttributes || {}\n  }\n\n  isEmpty() {\n    return this.text.isBlockBreak()\n  }\n\n  isEqualTo(block) {\n    if (super.isEqualTo(block)) return true\n\n    return this.text.isEqualTo(block?.text) && arraysAreEqual(this.attributes, block?.attributes) && objectsAreEqual(this.htmlAttributes, block?.htmlAttributes)\n  }\n\n  copyWithText(text) {\n    return new Block(text, this.attributes, this.htmlAttributes)\n  }\n\n  copyWithoutText() {\n    return this.copyWithText(null)\n  }\n\n  copyWithAttributes(attributes) {\n    return new Block(this.text, attributes, this.htmlAttributes)\n  }\n\n  copyWithoutAttributes() {\n    return this.copyWithAttributes(null)\n  }\n\n  copyUsingObjectMap(objectMap) {\n    const mappedText = objectMap.find(this.text)\n    if (mappedText) {\n      return this.copyWithText(mappedText)\n    } else {\n      return this.copyWithText(this.text.copyUsingObjectMap(objectMap))\n    }\n  }\n\n  addAttribute(attribute) {\n    const attributes = this.attributes.concat(expandAttribute(attribute))\n    return this.copyWithAttributes(attributes)\n  }\n\n  addHTMLAttribute(attribute, value) {\n    const htmlAttributes = Object.assign({}, this.htmlAttributes, { [attribute]: value })\n    return new Block(this.text, this.attributes, htmlAttributes)\n  }\n\n  removeAttribute(attribute) {\n    const { listAttribute } = getBlockConfig(attribute)\n    const attributes = removeLastValue(removeLastValue(this.attributes, attribute), listAttribute)\n    return this.copyWithAttributes(attributes)\n  }\n\n  removeLastAttribute() {\n    return this.removeAttribute(this.getLastAttribute())\n  }\n\n  getLastAttribute() {\n    return getLastElement(this.attributes)\n  }\n\n  getAttributes() {\n    return this.attributes.slice(0)\n  }\n\n  getAttributeLevel() {\n    return this.attributes.length\n  }\n\n  getAttributeAtLevel(level) {\n    return this.attributes[level - 1]\n  }\n\n  hasAttribute(attributeName) {\n    return this.attributes.includes(attributeName)\n  }\n\n  hasAttributes() {\n    return this.getAttributeLevel() > 0\n  }\n\n  getLastNestableAttribute() {\n    return getLastElement(this.getNestableAttributes())\n  }\n\n  getNestableAttributes() {\n    return this.attributes.filter((attribute) => getBlockConfig(attribute).nestable)\n  }\n\n  getNestingLevel() {\n    return this.getNestableAttributes().length\n  }\n\n  decreaseNestingLevel() {\n    const attribute = this.getLastNestableAttribute()\n    if (attribute) {\n      return this.removeAttribute(attribute)\n    } else {\n      return this\n    }\n  }\n\n  increaseNestingLevel() {\n    const attribute = this.getLastNestableAttribute()\n    if (attribute) {\n      const index = this.attributes.lastIndexOf(attribute)\n      const attributes = spliceArray(this.attributes, index + 1, 0, ...expandAttribute(attribute))\n      return this.copyWithAttributes(attributes)\n    } else {\n      return this\n    }\n  }\n\n  getListItemAttributes() {\n    return this.attributes.filter((attribute) => getBlockConfig(attribute).listAttribute)\n  }\n\n  isListItem() {\n    return getBlockConfig(this.getLastAttribute())?.listAttribute\n  }\n\n  isTerminalBlock() {\n    return getBlockConfig(this.getLastAttribute())?.terminal\n  }\n\n  breaksOnReturn() {\n    return getBlockConfig(this.getLastAttribute())?.breakOnReturn\n  }\n\n  findLineBreakInDirectionFromPosition(direction, position) {\n    const string = this.toString()\n    let result\n    switch (direction) {\n      case \"forward\":\n        result = string.indexOf(\"\\n\", position)\n        break\n      case \"backward\":\n        result = string.slice(0, position).lastIndexOf(\"\\n\")\n    }\n\n    if (result !== -1) {\n      return result\n    }\n  }\n\n  contentsForInspection() {\n    return {\n      text: this.text.inspect(),\n      attributes: this.attributes,\n    }\n  }\n\n  toString() {\n    return this.text.toString()\n  }\n\n  toJSON() {\n    return {\n      text: this.text,\n      attributes: this.attributes,\n      htmlAttributes: this.htmlAttributes,\n    }\n  }\n\n  // BIDI\n\n  getDirection() {\n    return this.text.getDirection()\n  }\n\n  isRTL() {\n    return this.text.isRTL()\n  }\n\n  // Splittable\n\n  getLength() {\n    return this.text.getLength()\n  }\n\n  canBeConsolidatedWith(block) {\n    return !this.hasAttributes() && !block.hasAttributes() && this.getDirection() === block.getDirection()\n  }\n\n  consolidateWith(block) {\n    const newlineText = Text.textForStringWithAttributes(\"\\n\")\n    const text = this.getTextWithoutBlockBreak().appendText(newlineText)\n    return this.copyWithText(text.appendText(block.text))\n  }\n\n  splitAtOffset(offset) {\n    let left, right\n    if (offset === 0) {\n      left = null\n      right = this\n    } else if (offset === this.getLength()) {\n      left = this\n      right = null\n    } else {\n      left = this.copyWithText(this.text.getTextAtRange([ 0, offset ]))\n      right = this.copyWithText(this.text.getTextAtRange([ offset, this.getLength() ]))\n    }\n    return [ left, right ]\n  }\n\n  getBlockBreakPosition() {\n    return this.text.getLength() - 1\n  }\n\n  getTextWithoutBlockBreak() {\n    if (textEndsInBlockBreak(this.text)) {\n      return this.text.getTextAtRange([ 0, this.getBlockBreakPosition() ])\n    } else {\n      return this.text.copy()\n    }\n  }\n\n  // Grouping\n\n  canBeGrouped(depth) {\n    return this.attributes[depth]\n  }\n\n  canBeGroupedWith(otherBlock, depth) {\n    const otherAttributes = otherBlock.getAttributes()\n    const otherAttribute = otherAttributes[depth]\n    const attribute = this.attributes[depth]\n\n    return (\n      attribute === otherAttribute &&\n      !(getBlockConfig(attribute).group === false && !getListAttributeNames().includes(otherAttributes[depth + 1])) &&\n      (this.getDirection() === otherBlock.getDirection() || otherBlock.isEmpty())\n    )\n  }\n}\n\n// Block breaks\n\nconst applyBlockBreakToText = function(text) {\n  text = unmarkExistingInnerBlockBreaksInText(text)\n  text = addBlockBreakToText(text)\n  return text\n}\n\nconst unmarkExistingInnerBlockBreaksInText = function(text) {\n  let modified = false\n  const pieces = text.getPieces()\n\n  let innerPieces = pieces.slice(0, pieces.length - 1)\n  const lastPiece = pieces[pieces.length - 1]\n\n  if (!lastPiece) return text\n\n  innerPieces = innerPieces.map((piece) => {\n    if (piece.isBlockBreak()) {\n      modified = true\n      return unmarkBlockBreakPiece(piece)\n    } else {\n      return piece\n    }\n  })\n\n  if (modified) {\n    return new Text([ ...innerPieces, lastPiece ])\n  } else {\n    return text\n  }\n}\n\nconst blockBreakText = Text.textForStringWithAttributes(\"\\n\", { blockBreak: true })\n\nconst addBlockBreakToText = function(text) {\n  if (textEndsInBlockBreak(text)) {\n    return text\n  } else {\n    return text.appendText(blockBreakText)\n  }\n}\n\nconst textEndsInBlockBreak = function(text) {\n  const length = text.getLength()\n  if (length === 0) {\n    return false\n  }\n  const endText = text.getTextAtRange([ length - 1, length ])\n  return endText.isBlockBreak()\n}\n\nconst unmarkBlockBreakPiece = (piece) => piece.copyWithoutAttribute(\"blockBreak\")\n\n// Attributes\n\nconst expandAttribute = function(attribute) {\n  const { listAttribute } = getBlockConfig(attribute)\n  if (listAttribute) {\n    return [ listAttribute, attribute ]\n  } else {\n    return [ attribute ]\n  }\n}\n\n// Array helpers\n\nconst getLastElement = (array) => array.slice(-1)[0]\n\nconst removeLastValue = function(array, value) {\n  const index = array.lastIndexOf(value)\n  if (index === -1) {\n    return array\n  } else {\n    return spliceArray(array, index, 1)\n  }\n}\n", "import * as config from \"trix/config\"\nimport TrixObject from \"trix/core/object\" // Don't override window.Object\n\nimport Text from \"trix/models/text\"\nimport Block from \"trix/models/block\"\nimport SplittableList from \"trix/models/splittable_list\"\nimport Hash from \"trix/core/collections/hash\"\nimport ObjectMap from \"trix/core/collections/object_map\"\n\nimport { arraysAreEqual, getBlockConfig, normalizeRange, rangeIsCollapsed } from \"trix/core/helpers\"\n\nexport default class Document extends TrixObject {\n  static fromJSON(documentJSON) {\n    const blocks = Array.from(documentJSON).map((blockJSON) => Block.fromJSON(blockJSON))\n    return new this(blocks)\n  }\n\n  static fromString(string, textAttributes) {\n    const text = Text.textForStringWithAttributes(string, textAttributes)\n    return new this([ new Block(text) ])\n  }\n\n  constructor(blocks = []) {\n    super(...arguments)\n    if (blocks.length === 0) {\n      blocks = [ new Block() ]\n    }\n    this.blockList = SplittableList.box(blocks)\n  }\n\n  isEmpty() {\n    const block = this.getBlockAtIndex(0)\n    return this.blockList.length === 1 && block.isEmpty() && !block.hasAttributes()\n  }\n\n  copy(options = {}) {\n    const blocks = options.consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray()\n\n    return new this.constructor(blocks)\n  }\n\n  copyUsingObjectsFromDocument(sourceDocument) {\n    const objectMap = new ObjectMap(sourceDocument.getObjects())\n    return this.copyUsingObjectMap(objectMap)\n  }\n\n  copyUsingObjectMap(objectMap) {\n    const blocks = this.getBlocks().map((block) => {\n      const mappedBlock = objectMap.find(block)\n      return mappedBlock || block.copyUsingObjectMap(objectMap)\n    })\n    return new this.constructor(blocks)\n  }\n\n  copyWithBaseBlockAttributes(blockAttributes = []) {\n    const blocks = this.getBlocks().map((block) => {\n      const attributes = blockAttributes.concat(block.getAttributes())\n      return block.copyWithAttributes(attributes)\n    })\n\n    return new this.constructor(blocks)\n  }\n\n  replaceBlock(oldBlock, newBlock) {\n    const index = this.blockList.indexOf(oldBlock)\n    if (index === -1) {\n      return this\n    }\n    return new this.constructor(this.blockList.replaceObjectAtIndex(newBlock, index))\n  }\n\n  insertDocumentAtRange(document, range) {\n    const { blockList } = document\n    range = normalizeRange(range)\n    let [ position ] = range\n    const { index, offset } = this.locationFromPosition(position)\n\n    let result = this\n    const block = this.getBlockAtPosition(position)\n\n    if (rangeIsCollapsed(range) && block.isEmpty() && !block.hasAttributes()) {\n      result = new this.constructor(result.blockList.removeObjectAtIndex(index))\n    } else if (block.getBlockBreakPosition() === offset) {\n      position++\n    }\n\n    result = result.removeTextAtRange(range)\n    return new this.constructor(result.blockList.insertSplittableListAtPosition(blockList, position))\n  }\n\n  mergeDocumentAtRange(document, range) {\n    let formattedDocument, result\n    range = normalizeRange(range)\n    const [ startPosition ] = range\n    const startLocation = this.locationFromPosition(startPosition)\n    const blockAttributes = this.getBlockAtIndex(startLocation.index).getAttributes()\n    const baseBlockAttributes = document.getBaseBlockAttributes()\n    const trailingBlockAttributes = blockAttributes.slice(-baseBlockAttributes.length)\n\n    if (arraysAreEqual(baseBlockAttributes, trailingBlockAttributes)) {\n      const leadingBlockAttributes = blockAttributes.slice(0, -baseBlockAttributes.length)\n      formattedDocument = document.copyWithBaseBlockAttributes(leadingBlockAttributes)\n    } else {\n      formattedDocument = document.copy({ consolidateBlocks: true }).copyWithBaseBlockAttributes(blockAttributes)\n    }\n\n    const blockCount = formattedDocument.getBlockCount()\n    const firstBlock = formattedDocument.getBlockAtIndex(0)\n\n    if (arraysAreEqual(blockAttributes, firstBlock.getAttributes())) {\n      const firstText = firstBlock.getTextWithoutBlockBreak()\n      result = this.insertTextAtRange(firstText, range)\n\n      if (blockCount > 1) {\n        formattedDocument = new this.constructor(formattedDocument.getBlocks().slice(1))\n        const position = startPosition + firstText.getLength()\n        result = result.insertDocumentAtRange(formattedDocument, position)\n      }\n    } else {\n      result = this.insertDocumentAtRange(formattedDocument, range)\n    }\n\n    return result\n  }\n\n  insertTextAtRange(text, range) {\n    range = normalizeRange(range)\n    const [ startPosition ] = range\n    const { index, offset } = this.locationFromPosition(startPosition)\n\n    const document = this.removeTextAtRange(range)\n    return new this.constructor(\n      document.blockList.editObjectAtIndex(index, (block) =>\n        block.copyWithText(block.text.insertTextAtPosition(text, offset))\n      )\n    )\n  }\n\n  removeTextAtRange(range) {\n    let blocks\n    range = normalizeRange(range)\n    const [ leftPosition, rightPosition ] = range\n    if (rangeIsCollapsed(range)) {\n      return this\n    }\n    const [ leftLocation, rightLocation ] = Array.from(this.locationRangeFromRange(range))\n\n    const leftIndex = leftLocation.index\n    const leftOffset = leftLocation.offset\n    const leftBlock = this.getBlockAtIndex(leftIndex)\n\n    const rightIndex = rightLocation.index\n    const rightOffset = rightLocation.offset\n    const rightBlock = this.getBlockAtIndex(rightIndex)\n\n    const removeRightNewline =\n      rightPosition - leftPosition === 1 &&\n      leftBlock.getBlockBreakPosition() === leftOffset &&\n      rightBlock.getBlockBreakPosition() !== rightOffset &&\n      rightBlock.text.getStringAtPosition(rightOffset) === \"\\n\"\n\n    if (removeRightNewline) {\n      blocks = this.blockList.editObjectAtIndex(rightIndex, (block) =>\n        block.copyWithText(block.text.removeTextAtRange([ rightOffset, rightOffset + 1 ]))\n      )\n    } else {\n      let block\n      const leftText = leftBlock.text.getTextAtRange([ 0, leftOffset ])\n      const rightText = rightBlock.text.getTextAtRange([ rightOffset, rightBlock.getLength() ])\n      const text = leftText.appendText(rightText)\n\n      const removingLeftBlock = leftIndex !== rightIndex && leftOffset === 0\n      const useRightBlock = removingLeftBlock && leftBlock.getAttributeLevel() >= rightBlock.getAttributeLevel()\n\n      if (useRightBlock) {\n        block = rightBlock.copyWithText(text)\n      } else {\n        block = leftBlock.copyWithText(text)\n      }\n\n      const affectedBlockCount = rightIndex + 1 - leftIndex\n      blocks = this.blockList.splice(leftIndex, affectedBlockCount, block)\n    }\n\n    return new this.constructor(blocks)\n  }\n\n  moveTextFromRangeToPosition(range, position) {\n    let text\n    range = normalizeRange(range)\n    const [ startPosition, endPosition ] = range\n    if (startPosition <= position && position <= endPosition) {\n      return this\n    }\n\n    let document = this.getDocumentAtRange(range)\n    let result = this.removeTextAtRange(range)\n\n    const movingRightward = startPosition < position\n    if (movingRightward) {\n      position -= document.getLength()\n    }\n\n    const [ firstBlock, ...blocks ] = document.getBlocks()\n    if (blocks.length === 0) {\n      text = firstBlock.getTextWithoutBlockBreak()\n      if (movingRightward) {\n        position += 1\n      }\n    } else {\n      text = firstBlock.text\n    }\n\n    result = result.insertTextAtRange(text, position)\n    if (blocks.length === 0) {\n      return result\n    }\n\n    document = new this.constructor(blocks)\n    position += text.getLength()\n\n    return result.insertDocumentAtRange(document, position)\n  }\n\n  addAttributeAtRange(attribute, value, range) {\n    let { blockList } = this\n    this.eachBlockAtRange(\n      range,\n      (block, textRange, index) =>\n        blockList = blockList.editObjectAtIndex(index, function() {\n          if (getBlockConfig(attribute)) {\n            return block.addAttribute(attribute, value)\n          } else {\n            if (textRange[0] === textRange[1]) {\n              return block\n            } else {\n              return block.copyWithText(block.text.addAttributeAtRange(attribute, value, textRange))\n            }\n          }\n        })\n    )\n    return new this.constructor(blockList)\n  }\n\n  addAttribute(attribute, value) {\n    let { blockList } = this\n    this.eachBlock(\n      (block, index) => blockList = blockList.editObjectAtIndex(index, () => block.addAttribute(attribute, value))\n    )\n    return new this.constructor(blockList)\n  }\n\n  removeAttributeAtRange(attribute, range) {\n    let { blockList } = this\n    this.eachBlockAtRange(range, function(block, textRange, index) {\n      if (getBlockConfig(attribute)) {\n        blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(attribute))\n      } else if (textRange[0] !== textRange[1]) {\n        blockList = blockList.editObjectAtIndex(index, () =>\n          block.copyWithText(block.text.removeAttributeAtRange(attribute, textRange))\n        )\n      }\n    })\n    return new this.constructor(blockList)\n  }\n\n  updateAttributesForAttachment(attributes, attachment) {\n    const range = this.getRangeOfAttachment(attachment)\n    const [ startPosition ] = Array.from(range)\n    const { index } = this.locationFromPosition(startPosition)\n    const text = this.getTextAtIndex(index)\n\n    return new this.constructor(\n      this.blockList.editObjectAtIndex(index, (block) =>\n        block.copyWithText(text.updateAttributesForAttachment(attributes, attachment))\n      )\n    )\n  }\n\n  removeAttributeForAttachment(attribute, attachment) {\n    const range = this.getRangeOfAttachment(attachment)\n    return this.removeAttributeAtRange(attribute, range)\n  }\n\n  setHTMLAttributeAtPosition(position, name, value) {\n    const block = this.getBlockAtPosition(position)\n    const updatedBlock = block.addHTMLAttribute(name, value)\n    return this.replaceBlock(block, updatedBlock)\n  }\n\n  insertBlockBreakAtRange(range) {\n    let blocks\n    range = normalizeRange(range)\n    const [ startPosition ] = range\n    const { offset } = this.locationFromPosition(startPosition)\n\n    const document = this.removeTextAtRange(range)\n    if (offset === 0) {\n      blocks = [ new Block() ]\n    }\n    return new this.constructor(\n      document.blockList.insertSplittableListAtPosition(new SplittableList(blocks), startPosition)\n    )\n  }\n\n  applyBlockAttributeAtRange(attributeName, value, range) {\n    const expanded = this.expandRangeToLineBreaksAndSplitBlocks(range)\n    let document = expanded.document\n    range = expanded.range\n    const blockConfig = getBlockConfig(attributeName)\n\n    if (blockConfig.listAttribute) {\n      document = document.removeLastListAttributeAtRange(range, { exceptAttributeName: attributeName })\n      const converted = document.convertLineBreaksToBlockBreaksInRange(range)\n      document = converted.document\n      range = converted.range\n    } else if (blockConfig.exclusive) {\n      document = document.removeBlockAttributesAtRange(range)\n    } else if (blockConfig.terminal) {\n      document = document.removeLastTerminalAttributeAtRange(range)\n    } else {\n      document = document.consolidateBlocksAtRange(range)\n    }\n\n    return document.addAttributeAtRange(attributeName, value, range)\n  }\n\n  removeLastListAttributeAtRange(range, options = {}) {\n    let { blockList } = this\n    this.eachBlockAtRange(range, function(block, textRange, index) {\n      const lastAttributeName = block.getLastAttribute()\n      if (!lastAttributeName) {\n        return\n      }\n      if (!getBlockConfig(lastAttributeName).listAttribute) {\n        return\n      }\n      if (lastAttributeName === options.exceptAttributeName) {\n        return\n      }\n      blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName))\n    })\n    return new this.constructor(blockList)\n  }\n\n  removeLastTerminalAttributeAtRange(range) {\n    let { blockList } = this\n    this.eachBlockAtRange(range, function(block, textRange, index) {\n      const lastAttributeName = block.getLastAttribute()\n      if (!lastAttributeName) {\n        return\n      }\n      if (!getBlockConfig(lastAttributeName).terminal) {\n        return\n      }\n      blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName))\n    })\n    return new this.constructor(blockList)\n  }\n\n  removeBlockAttributesAtRange(range) {\n    let { blockList } = this\n    this.eachBlockAtRange(range, function(block, textRange, index) {\n      if (block.hasAttributes()) {\n        blockList = blockList.editObjectAtIndex(index, () => block.copyWithoutAttributes())\n      }\n    })\n    return new this.constructor(blockList)\n  }\n\n  expandRangeToLineBreaksAndSplitBlocks(range) {\n    let position\n    range = normalizeRange(range)\n    let [ startPosition, endPosition ] = range\n    const startLocation = this.locationFromPosition(startPosition)\n    const endLocation = this.locationFromPosition(endPosition)\n    let document = this\n\n    const startBlock = document.getBlockAtIndex(startLocation.index)\n    startLocation.offset = startBlock.findLineBreakInDirectionFromPosition(\"backward\", startLocation.offset)\n    if (startLocation.offset != null) {\n      position = document.positionFromLocation(startLocation)\n      document = document.insertBlockBreakAtRange([ position, position + 1 ])\n      endLocation.index += 1\n      endLocation.offset -= document.getBlockAtIndex(startLocation.index).getLength()\n      startLocation.index += 1\n    }\n    startLocation.offset = 0\n\n    if (endLocation.offset === 0 && endLocation.index > startLocation.index) {\n      endLocation.index -= 1\n      endLocation.offset = document.getBlockAtIndex(endLocation.index).getBlockBreakPosition()\n    } else {\n      const endBlock = document.getBlockAtIndex(endLocation.index)\n      if (endBlock.text.getStringAtRange([ endLocation.offset - 1, endLocation.offset ]) === \"\\n\") {\n        endLocation.offset -= 1\n      } else {\n        endLocation.offset = endBlock.findLineBreakInDirectionFromPosition(\"forward\", endLocation.offset)\n      }\n      if (endLocation.offset !== endBlock.getBlockBreakPosition()) {\n        position = document.positionFromLocation(endLocation)\n        document = document.insertBlockBreakAtRange([ position, position + 1 ])\n      }\n    }\n\n    startPosition = document.positionFromLocation(startLocation)\n    endPosition = document.positionFromLocation(endLocation)\n    range = normalizeRange([ startPosition, endPosition ])\n\n    return { document, range }\n  }\n\n  convertLineBreaksToBlockBreaksInRange(range) {\n    range = normalizeRange(range)\n    let [ position ] = range\n    const string = this.getStringAtRange(range).slice(0, -1)\n    let document = this\n\n    string.replace(/.*?\\n/g, function(match) {\n      position += match.length\n      document = document.insertBlockBreakAtRange([ position - 1, position ])\n    })\n\n    return { document, range }\n  }\n\n  consolidateBlocksAtRange(range) {\n    range = normalizeRange(range)\n    const [ startPosition, endPosition ] = range\n    const startIndex = this.locationFromPosition(startPosition).index\n    const endIndex = this.locationFromPosition(endPosition).index\n    return new this.constructor(this.blockList.consolidateFromIndexToIndex(startIndex, endIndex))\n  }\n\n  getDocumentAtRange(range) {\n    range = normalizeRange(range)\n    const blocks = this.blockList.getSplittableListInRange(range).toArray()\n    return new this.constructor(blocks)\n  }\n\n  getStringAtRange(range) {\n    let endIndex\n    const array = range = normalizeRange(range),\n      endPosition = array[array.length - 1]\n    if (endPosition !== this.getLength()) {\n      endIndex = -1\n    }\n    return this.getDocumentAtRange(range).toString().slice(0, endIndex)\n  }\n\n  getBlockAtIndex(index) {\n    return this.blockList.getObjectAtIndex(index)\n  }\n\n  getBlockAtPosition(position) {\n    const { index } = this.locationFromPosition(position)\n    return this.getBlockAtIndex(index)\n  }\n\n  getTextAtIndex(index) {\n    return this.getBlockAtIndex(index)?.text\n  }\n\n  getTextAtPosition(position) {\n    const { index } = this.locationFromPosition(position)\n    return this.getTextAtIndex(index)\n  }\n\n  getPieceAtPosition(position) {\n    const { index, offset } = this.locationFromPosition(position)\n    return this.getTextAtIndex(index).getPieceAtPosition(offset)\n  }\n\n  getCharacterAtPosition(position) {\n    const { index, offset } = this.locationFromPosition(position)\n    return this.getTextAtIndex(index).getStringAtRange([ offset, offset + 1 ])\n  }\n\n  getLength() {\n    return this.blockList.getEndPosition()\n  }\n\n  getBlocks() {\n    return this.blockList.toArray()\n  }\n\n  getBlockCount() {\n    return this.blockList.length\n  }\n\n  getEditCount() {\n    return this.editCount\n  }\n\n  eachBlock(callback) {\n    return this.blockList.eachObject(callback)\n  }\n\n  eachBlockAtRange(range, callback) {\n    let block, textRange\n    range = normalizeRange(range)\n    const [ startPosition, endPosition ] = range\n    const startLocation = this.locationFromPosition(startPosition)\n    const endLocation = this.locationFromPosition(endPosition)\n\n    if (startLocation.index === endLocation.index) {\n      block = this.getBlockAtIndex(startLocation.index)\n      textRange = [ startLocation.offset, endLocation.offset ]\n      return callback(block, textRange, startLocation.index)\n    } else {\n      for (let index = startLocation.index; index <= endLocation.index; index++) {\n        block = this.getBlockAtIndex(index)\n        if (block) {\n          switch (index) {\n            case startLocation.index:\n              textRange = [ startLocation.offset, block.text.getLength() ]\n              break\n            case endLocation.index:\n              textRange = [ 0, endLocation.offset ]\n              break\n            default:\n              textRange = [ 0, block.text.getLength() ]\n          }\n          callback(block, textRange, index)\n        }\n      }\n    }\n  }\n\n  getCommonAttributesAtRange(range) {\n    range = normalizeRange(range)\n    const [ startPosition ] = range\n    if (rangeIsCollapsed(range)) {\n      return this.getCommonAttributesAtPosition(startPosition)\n    } else {\n      const textAttributes = []\n      const blockAttributes = []\n\n      this.eachBlockAtRange(range, function(block, textRange) {\n        if (textRange[0] !== textRange[1]) {\n          textAttributes.push(block.text.getCommonAttributesAtRange(textRange))\n          return blockAttributes.push(attributesForBlock(block))\n        }\n      })\n\n      return Hash.fromCommonAttributesOfObjects(textAttributes)\n        .merge(Hash.fromCommonAttributesOfObjects(blockAttributes))\n        .toObject()\n    }\n  }\n\n  getCommonAttributesAtPosition(position) {\n    let key, value\n    const { index, offset } = this.locationFromPosition(position)\n    const block = this.getBlockAtIndex(index)\n    if (!block) {\n      return {}\n    }\n\n    const commonAttributes = attributesForBlock(block)\n    const attributes = block.text.getAttributesAtPosition(offset)\n    const attributesLeft = block.text.getAttributesAtPosition(offset - 1)\n    const inheritableAttributes = Object.keys(config.textAttributes).filter((key) => {\n      return config.textAttributes[key].inheritable\n    })\n\n    for (key in attributesLeft) {\n      value = attributesLeft[key]\n      if (value === attributes[key] || inheritableAttributes.includes(key)) {\n        commonAttributes[key] = value\n      }\n    }\n\n    return commonAttributes\n  }\n\n  getRangeOfCommonAttributeAtPosition(attributeName, position) {\n    const { index, offset } = this.locationFromPosition(position)\n    const text = this.getTextAtIndex(index)\n    const [ startOffset, endOffset ] = Array.from(text.getExpandedRangeForAttributeAtOffset(attributeName, offset))\n\n    const start = this.positionFromLocation({ index, offset: startOffset })\n    const end = this.positionFromLocation({ index, offset: endOffset })\n    return normalizeRange([ start, end ])\n  }\n\n  getBaseBlockAttributes() {\n    let baseBlockAttributes = this.getBlockAtIndex(0).getAttributes()\n\n    for (let blockIndex = 1; blockIndex < this.getBlockCount(); blockIndex++) {\n      const blockAttributes = this.getBlockAtIndex(blockIndex).getAttributes()\n      const lastAttributeIndex = Math.min(baseBlockAttributes.length, blockAttributes.length)\n\n      baseBlockAttributes = (() => {\n        const result = []\n        for (let index = 0; index < lastAttributeIndex; index++) {\n          if (blockAttributes[index] !== baseBlockAttributes[index]) {\n            break\n          }\n          result.push(blockAttributes[index])\n        }\n        return result\n      })()\n    }\n\n    return baseBlockAttributes\n  }\n\n  getAttachmentById(attachmentId) {\n    for (const attachment of this.getAttachments()) {\n      if (attachment.id === attachmentId) {\n        return attachment\n      }\n    }\n  }\n\n  getAttachmentPieces() {\n    let attachmentPieces = []\n    this.blockList.eachObject(({ text }) => attachmentPieces = attachmentPieces.concat(text.getAttachmentPieces()))\n    return attachmentPieces\n  }\n\n  getAttachments() {\n    return this.getAttachmentPieces().map((piece) => piece.attachment)\n  }\n\n  getRangeOfAttachment(attachment) {\n    let position = 0\n    const iterable = this.blockList.toArray()\n    for (let index = 0; index < iterable.length; index++) {\n      const { text } = iterable[index]\n      const textRange = text.getRangeOfAttachment(attachment)\n      if (textRange) {\n        return normalizeRange([ position + textRange[0], position + textRange[1] ])\n      }\n      position += text.getLength()\n    }\n  }\n\n  getLocationRangeOfAttachment(attachment) {\n    const range = this.getRangeOfAttachment(attachment)\n    return this.locationRangeFromRange(range)\n  }\n\n  getAttachmentPieceForAttachment(attachment) {\n    for (const piece of this.getAttachmentPieces()) {\n      if (piece.attachment === attachment) {\n        return piece\n      }\n    }\n  }\n\n  findRangesForBlockAttribute(attributeName) {\n    let position = 0\n    const ranges = []\n\n    this.getBlocks().forEach((block) => {\n      const length = block.getLength()\n      if (block.hasAttribute(attributeName)) {\n        ranges.push([ position, position + length ])\n      }\n      position += length\n    })\n\n    return ranges\n  }\n\n  findRangesForTextAttribute(attributeName, { withValue } = {}) {\n    let position = 0\n    let range = []\n    const ranges = []\n\n    const match = function(piece) {\n      if (withValue) {\n        return piece.getAttribute(attributeName) === withValue\n      } else {\n        return piece.hasAttribute(attributeName)\n      }\n    }\n\n    this.getPieces().forEach((piece) => {\n      const length = piece.getLength()\n      if (match(piece)) {\n        if (range[1] === position) {\n          range[1] = position + length\n        } else {\n          ranges.push(range = [ position, position + length ])\n        }\n      }\n      position += length\n    })\n\n    return ranges\n  }\n\n  locationFromPosition(position) {\n    const location = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, position))\n    if (location.index != null) {\n      return location\n    } else {\n      const blocks = this.getBlocks()\n      return { index: blocks.length - 1, offset: blocks[blocks.length - 1].getLength() }\n    }\n  }\n\n  positionFromLocation(location) {\n    return this.blockList.findPositionAtIndexAndOffset(location.index, location.offset)\n  }\n\n  locationRangeFromPosition(position) {\n    return normalizeRange(this.locationFromPosition(position))\n  }\n\n  locationRangeFromRange(range) {\n    range = normalizeRange(range)\n    if (!range) return\n\n    const [ startPosition, endPosition ] = Array.from(range)\n    const startLocation = this.locationFromPosition(startPosition)\n    const endLocation = this.locationFromPosition(endPosition)\n    return normalizeRange([ startLocation, endLocation ])\n  }\n\n  rangeFromLocationRange(locationRange) {\n    let rightPosition\n    locationRange = normalizeRange(locationRange)\n    const leftPosition = this.positionFromLocation(locationRange[0])\n    if (!rangeIsCollapsed(locationRange)) {\n      rightPosition = this.positionFromLocation(locationRange[1])\n    }\n    return normalizeRange([ leftPosition, rightPosition ])\n  }\n\n  isEqualTo(document) {\n    return this.blockList.isEqualTo(document?.blockList)\n  }\n\n  getTexts() {\n    return this.getBlocks().map((block) => block.text)\n  }\n\n  getPieces() {\n    const pieces = []\n\n    Array.from(this.getTexts()).forEach((text) => {\n      pieces.push(...Array.from(text.getPieces() || []))\n    })\n\n    return pieces\n  }\n\n  getObjects() {\n    return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())\n  }\n\n  toSerializableDocument() {\n    const blocks = []\n    this.blockList.eachObject((block) => blocks.push(block.copyWithText(block.text.toSerializableText())))\n    return new this.constructor(blocks)\n  }\n\n  toString() {\n    return this.blockList.toString()\n  }\n\n  toJSON() {\n    return this.blockList.toJSON()\n  }\n\n  toConsole() {\n    return JSON.stringify(this.blockList.toArray().map((block) => JSON.parse(block.text.toConsole())))\n  }\n}\n\nconst attributesForBlock = function(block) {\n  const attributes = {}\n  const attributeName = block.getLastAttribute()\n  if (attributeName) {\n    attributes[attributeName] = true\n  }\n  return attributes\n}\n", "/* eslint-disable\n    no-case-declarations,\n    no-irregular-whitespace,\n*/\nimport * as config from \"trix/config\"\nimport BasicObject from \"trix/core/basic_object\"\nimport Document from \"trix/models/document\"\nimport HTMLSanitizer from \"trix/models/html_sanitizer\"\n\nimport {\n  arraysAreEqual,\n  breakableWhitespacePattern,\n  elementContainsNode,\n  findClosestElementFromNode,\n  getBlockTagNames,\n  makeElement,\n  nodeIsAttachmentElement,\n  normalizeSpaces,\n  removeNode,\n  squishBreakableWhitespace,\n  tagName,\n  walkTree,\n} from \"trix/core/helpers\"\n\nconst pieceForString = (string, attributes = {}) => {\n  const type = \"string\"\n  string = normalizeSpaces(string)\n  return { string, attributes, type }\n}\n\nconst pieceForAttachment = (attachment, attributes = {}) => {\n  const type = \"attachment\"\n  return { attachment, attributes, type }\n}\n\nconst blockForAttributes = (attributes = {}, htmlAttributes = {}) => {\n  const text = []\n  return { text, attributes, htmlAttributes }\n}\n\nconst parseTrixDataAttribute = (element, name) => {\n  try {\n    return JSON.parse(element.getAttribute(`data-trix-${name}`))\n  } catch (error) {\n    return {}\n  }\n}\n\nconst getImageDimensions = (element) => {\n  const width = element.getAttribute(\"width\")\n  const height = element.getAttribute(\"height\")\n  const dimensions = {}\n  if (width) {\n    dimensions.width = parseInt(width, 10)\n  }\n  if (height) {\n    dimensions.height = parseInt(height, 10)\n  }\n  return dimensions\n}\n\nexport default class HTMLParser extends BasicObject {\n  static parse(html, options) {\n    const parser = new this(html, options)\n    parser.parse()\n    return parser\n  }\n\n  constructor(html, { referenceElement, purifyOptions } = {}) {\n    super(...arguments)\n    this.html = html\n    this.referenceElement = referenceElement\n    this.purifyOptions = purifyOptions\n    this.blocks = []\n    this.blockElements = []\n    this.processedElements = []\n  }\n\n  getDocument() {\n    return Document.fromJSON(this.blocks)\n  }\n\n  // HTML parsing\n\n  parse() {\n    try {\n      this.createHiddenContainer()\n      HTMLSanitizer.setHTML(this.containerElement, this.html, { purifyOptions: this.purifyOptions })\n      const walker = walkTree(this.containerElement, { usingFilter: nodeFilter })\n      while (walker.nextNode()) {\n        this.processNode(walker.currentNode)\n      }\n      return this.translateBlockElementMarginsToNewlines()\n    } finally {\n      this.removeHiddenContainer()\n    }\n  }\n\n  createHiddenContainer() {\n    if (this.referenceElement) {\n      this.containerElement = this.referenceElement.cloneNode(false)\n      this.containerElement.removeAttribute(\"id\")\n      this.containerElement.setAttribute(\"data-trix-internal\", \"\")\n      this.containerElement.style.display = \"none\"\n      return this.referenceElement.parentNode.insertBefore(this.containerElement, this.referenceElement.nextSibling)\n    } else {\n      this.containerElement = makeElement({ tagName: \"div\", style: { display: \"none\" } })\n      return document.body.appendChild(this.containerElement)\n    }\n  }\n\n  removeHiddenContainer() {\n    return removeNode(this.containerElement)\n  }\n\n  processNode(node) {\n    switch (node.nodeType) {\n      case Node.TEXT_NODE:\n        if (!this.isInsignificantTextNode(node)) {\n          this.appendBlockForTextNode(node)\n          return this.processTextNode(node)\n        }\n        break\n      case Node.ELEMENT_NODE:\n        this.appendBlockForElement(node)\n        return this.processElement(node)\n    }\n  }\n\n  appendBlockForTextNode(node) {\n    const element = node.parentNode\n    if (element === this.currentBlockElement && this.isBlockElement(node.previousSibling)) {\n      return this.appendStringWithAttributes(\"\\n\")\n    } else if (element === this.containerElement || this.isBlockElement(element)) {\n      const attributes = this.getBlockAttributes(element)\n      const htmlAttributes = this.getBlockHTMLAttributes(element)\n      if (!arraysAreEqual(attributes, this.currentBlock?.attributes)) {\n        this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element, htmlAttributes)\n        this.currentBlockElement = element\n      }\n    }\n  }\n\n  appendBlockForElement(element) {\n    const elementIsBlockElement = this.isBlockElement(element)\n    const currentBlockContainsElement = elementContainsNode(this.currentBlockElement, element)\n\n    if (elementIsBlockElement && !this.isBlockElement(element.firstChild)) {\n      if (!this.isInsignificantTextNode(element.firstChild) || !this.isBlockElement(element.firstElementChild)) {\n        const attributes = this.getBlockAttributes(element)\n        const htmlAttributes = this.getBlockHTMLAttributes(element)\n        if (element.firstChild) {\n          if (!(currentBlockContainsElement && arraysAreEqual(attributes, this.currentBlock.attributes))) {\n            this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element, htmlAttributes)\n            this.currentBlockElement = element\n          } else {\n            return this.appendStringWithAttributes(\"\\n\")\n          }\n        }\n      }\n    } else if (this.currentBlockElement && !currentBlockContainsElement && !elementIsBlockElement) {\n      const parentBlockElement = this.findParentBlockElement(element)\n      if (parentBlockElement) {\n        return this.appendBlockForElement(parentBlockElement)\n      } else {\n        this.currentBlock = this.appendEmptyBlock()\n        this.currentBlockElement = null\n      }\n    }\n  }\n\n  findParentBlockElement(element) {\n    let { parentElement } = element\n    while (parentElement && parentElement !== this.containerElement) {\n      if (this.isBlockElement(parentElement) && this.blockElements.includes(parentElement)) {\n        return parentElement\n      } else {\n        parentElement = parentElement.parentElement\n      }\n    }\n    return null\n  }\n\n  processTextNode(node) {\n    let string = node.data\n    if (!elementCanDisplayPreformattedText(node.parentNode)) {\n      string = squishBreakableWhitespace(string)\n      if (stringEndsWithWhitespace(node.previousSibling?.textContent)) {\n        string = leftTrimBreakableWhitespace(string)\n      }\n    }\n    return this.appendStringWithAttributes(string, this.getTextAttributes(node.parentNode))\n  }\n\n  processElement(element) {\n    let attributes\n    if (nodeIsAttachmentElement(element)) {\n      attributes = parseTrixDataAttribute(element, \"attachment\")\n      if (Object.keys(attributes).length) {\n        const textAttributes = this.getTextAttributes(element)\n        this.appendAttachmentWithAttributes(attributes, textAttributes)\n        // We have everything we need so avoid processing inner nodes\n        element.innerHTML = \"\"\n      }\n      return this.processedElements.push(element)\n    } else {\n      switch (tagName(element)) {\n        case \"br\":\n          if (!this.isExtraBR(element) && !this.isBlockElement(element.nextSibling)) {\n            this.appendStringWithAttributes(\"\\n\", this.getTextAttributes(element))\n          }\n          return this.processedElements.push(element)\n        case \"img\":\n          attributes = { url: element.getAttribute(\"src\"), contentType: \"image\" }\n          const object = getImageDimensions(element)\n          for (const key in object) {\n            const value = object[key]\n            attributes[key] = value\n          }\n          this.appendAttachmentWithAttributes(attributes, this.getTextAttributes(element))\n          return this.processedElements.push(element)\n        case \"tr\":\n          if (this.needsTableSeparator(element)) {\n            return this.appendStringWithAttributes(config.parser.tableRowSeparator)\n          }\n          break\n        case \"td\":\n          if (this.needsTableSeparator(element)) {\n            return this.appendStringWithAttributes(config.parser.tableCellSeparator)\n          }\n          break\n      }\n    }\n  }\n\n  // Document construction\n\n  appendBlockForAttributesWithElement(attributes, element, htmlAttributes = {}) {\n    this.blockElements.push(element)\n    const block = blockForAttributes(attributes, htmlAttributes)\n    this.blocks.push(block)\n    return block\n  }\n\n  appendEmptyBlock() {\n    return this.appendBlockForAttributesWithElement([], null)\n  }\n\n  appendStringWithAttributes(string, attributes) {\n    return this.appendPiece(pieceForString(string, attributes))\n  }\n\n  appendAttachmentWithAttributes(attachment, attributes) {\n    return this.appendPiece(pieceForAttachment(attachment, attributes))\n  }\n\n  appendPiece(piece) {\n    if (this.blocks.length === 0) {\n      this.appendEmptyBlock()\n    }\n    return this.blocks[this.blocks.length - 1].text.push(piece)\n  }\n\n  appendStringToTextAtIndex(string, index) {\n    const { text } = this.blocks[index]\n    const piece = text[text.length - 1]\n\n    if (piece?.type === \"string\") {\n      piece.string += string\n    } else {\n      return text.push(pieceForString(string))\n    }\n  }\n\n  prependStringToTextAtIndex(string, index) {\n    const { text } = this.blocks[index]\n    const piece = text[0]\n\n    if (piece?.type === \"string\") {\n      piece.string = string + piece.string\n    } else {\n      return text.unshift(pieceForString(string))\n    }\n  }\n\n  // Attribute parsing\n\n  getTextAttributes(element) {\n    let value\n    const attributes = {}\n    for (const attribute in config.textAttributes) {\n      const configAttr = config.textAttributes[attribute]\n      if (\n        configAttr.tagName &&\n        findClosestElementFromNode(element, {\n          matchingSelector: configAttr.tagName,\n          untilNode: this.containerElement,\n        })\n      ) {\n        attributes[attribute] = true\n      } else if (configAttr.parser) {\n        value = configAttr.parser(element)\n        if (value) {\n          let attributeInheritedFromBlock = false\n          for (const blockElement of this.findBlockElementAncestors(element)) {\n            if (configAttr.parser(blockElement) === value) {\n              attributeInheritedFromBlock = true\n              break\n            }\n          }\n          if (!attributeInheritedFromBlock) {\n            attributes[attribute] = value\n          }\n        }\n      } else if (configAttr.styleProperty) {\n        value = element.style[configAttr.styleProperty]\n        if (value) {\n          attributes[attribute] = value\n        }\n      }\n    }\n\n    if (nodeIsAttachmentElement(element)) {\n      const object = parseTrixDataAttribute(element, \"attributes\")\n      for (const key in object) {\n        value = object[key]\n        attributes[key] = value\n      }\n    }\n\n    return attributes\n  }\n\n  getBlockAttributes(element) {\n    const attributes = []\n    while (element && element !== this.containerElement) {\n      for (const attribute in config.blockAttributes) {\n        const attrConfig = config.blockAttributes[attribute]\n        if (attrConfig.parse !== false) {\n          if (tagName(element) === attrConfig.tagName) {\n            if (attrConfig.test?.(element) || !attrConfig.test) {\n              attributes.push(attribute)\n              if (attrConfig.listAttribute) {\n                attributes.push(attrConfig.listAttribute)\n              }\n            }\n          }\n        }\n      }\n      element = element.parentNode\n    }\n    return attributes.reverse()\n  }\n\n  getBlockHTMLAttributes(element) {\n    const attributes = {}\n    const blockConfig = Object.values(config.blockAttributes).find(settings => settings.tagName === tagName(element))\n    const allowedAttributes = blockConfig?.htmlAttributes || []\n\n    allowedAttributes.forEach((attribute) => {\n      if (element.hasAttribute(attribute)) {\n        attributes[attribute] = element.getAttribute(attribute)\n      }\n    })\n\n    return attributes\n  }\n\n  findBlockElementAncestors(element) {\n    const ancestors = []\n    while (element && element !== this.containerElement) {\n      const tag = tagName(element)\n      if (getBlockTagNames().includes(tag)) {\n        ancestors.push(element)\n      }\n      element = element.parentNode\n    }\n    return ancestors\n  }\n\n  // Element inspection\n\n  isBlockElement(element) {\n    if (element?.nodeType !== Node.ELEMENT_NODE) return\n    if (nodeIsAttachmentElement(element)) return\n    if (findClosestElementFromNode(element, { matchingSelector: \"td\", untilNode: this.containerElement })) return\n\n    return getBlockTagNames().includes(tagName(element)) ||\n      window.getComputedStyle(element).display === \"block\"\n  }\n\n  isInsignificantTextNode(node) {\n    if (node?.nodeType !== Node.TEXT_NODE) return\n    if (!stringIsAllBreakableWhitespace(node.data)) return\n    const { parentNode, previousSibling, nextSibling } = node\n    if (nodeEndsWithNonWhitespace(parentNode.previousSibling) && !this.isBlockElement(parentNode.previousSibling)) return\n    if (elementCanDisplayPreformattedText(parentNode)) return\n    return !previousSibling || this.isBlockElement(previousSibling) || !nextSibling || this.isBlockElement(nextSibling)\n  }\n\n  isExtraBR(element) {\n    return tagName(element) === \"br\" && this.isBlockElement(element.parentNode) && element.parentNode.lastChild === element\n  }\n\n  needsTableSeparator(element) {\n    if (config.parser.removeBlankTableCells) {\n      const content = element.previousSibling?.textContent\n      return content && /\\S/.test(content)\n    } else {\n      return element.previousSibling\n    }\n  }\n\n  // Margin translation\n\n  translateBlockElementMarginsToNewlines() {\n    const defaultMargin = this.getMarginOfDefaultBlockElement()\n\n    for (let index = 0; index < this.blocks.length; index++) {\n      const margin = this.getMarginOfBlockElementAtIndex(index)\n      if (margin) {\n        if (margin.top > defaultMargin.top * 2) {\n          this.prependStringToTextAtIndex(\"\\n\", index)\n        }\n\n        if (margin.bottom > defaultMargin.bottom * 2) {\n          this.appendStringToTextAtIndex(\"\\n\", index)\n        }\n      }\n    }\n  }\n\n  getMarginOfBlockElementAtIndex(index) {\n    const element = this.blockElements[index]\n    if (element) {\n      if (element.textContent) {\n        if (!getBlockTagNames().includes(tagName(element)) && !this.processedElements.includes(element)) {\n          return getBlockElementMargin(element)\n        }\n      }\n    }\n  }\n\n  getMarginOfDefaultBlockElement() {\n    const element = makeElement(config.blockAttributes.default.tagName)\n    this.containerElement.appendChild(element)\n    return getBlockElementMargin(element)\n  }\n}\n\n// Helpers\n\nconst elementCanDisplayPreformattedText = function(element) {\n  const { whiteSpace } = window.getComputedStyle(element)\n  return [ \"pre\", \"pre-wrap\", \"pre-line\" ].includes(whiteSpace)\n}\n\nconst nodeEndsWithNonWhitespace = (node) => node && !stringEndsWithWhitespace(node.textContent)\n\nconst getBlockElementMargin = function(element) {\n  const style = window.getComputedStyle(element)\n  if (style.display === \"block\") {\n    return { top: parseInt(style.marginTop), bottom: parseInt(style.marginBottom) }\n  }\n}\n\nconst nodeFilter = function(node) {\n  if (tagName(node) === \"style\") {\n    return NodeFilter.FILTER_REJECT\n  } else {\n    return NodeFilter.FILTER_ACCEPT\n  }\n}\n\n// Whitespace\n\nconst leftTrimBreakableWhitespace = (string) => string.replace(new RegExp(`^${breakableWhitespacePattern.source}+`), \"\")\n\nconst stringIsAllBreakableWhitespace = (string) => new RegExp(`^${breakableWhitespacePattern.source}*$`).test(string)\n\nconst stringEndsWithWhitespace = (string) => /\\s$/.test(string)\n", "/* eslint-disable\n    no-empty,\n*/\nimport { removeNode } from \"trix/core/helpers\"\n\nimport DocumentView from \"trix/views/document_view\"\nimport Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\n\nconst unserializableElementSelector = \"[data-trix-serialize=false]\"\nconst unserializableAttributeNames = [\n  \"contenteditable\",\n  \"data-trix-id\",\n  \"data-trix-store-key\",\n  \"data-trix-mutable\",\n  \"data-trix-placeholder\",\n  \"tabindex\",\n]\nconst serializedAttributesAttribute = \"data-trix-serialized-attributes\"\nconst serializedAttributesSelector = `[${serializedAttributesAttribute}]`\n\nconst blockCommentPattern = new RegExp(\"<!--block-->\", \"g\")\n\nconst serializers = {\n  \"application/json\": function(serializable) {\n    let document\n    if (serializable instanceof Document) {\n      document = serializable\n    } else if (serializable instanceof HTMLElement) {\n      document = HTMLParser.parse(serializable.innerHTML).getDocument()\n    } else {\n      throw new Error(\"unserializable object\")\n    }\n\n    return document.toSerializableDocument().toJSONString()\n  },\n\n  \"text/html\": function(serializable) {\n    let element\n    if (serializable instanceof Document) {\n      element = DocumentView.render(serializable)\n    } else if (serializable instanceof HTMLElement) {\n      element = serializable.cloneNode(true)\n    } else {\n      throw new Error(\"unserializable object\")\n    }\n\n    // Remove unserializable elements\n    Array.from(element.querySelectorAll(unserializableElementSelector)).forEach((el) => {\n      removeNode(el)\n    })\n\n    // Remove unserializable attributes\n    unserializableAttributeNames.forEach((attribute) => {\n      Array.from(element.querySelectorAll(`[${attribute}]`)).forEach((el) => {\n        el.removeAttribute(attribute)\n      })\n    })\n\n    // Rewrite elements with serialized attribute overrides\n    Array.from(element.querySelectorAll(serializedAttributesSelector)).forEach((el) => {\n      try {\n        const attributes = JSON.parse(el.getAttribute(serializedAttributesAttribute))\n        el.removeAttribute(serializedAttributesAttribute)\n        for (const name in attributes) {\n          const value = attributes[name]\n          el.setAttribute(name, value)\n        }\n      } catch (error) {}\n    })\n\n    return element.innerHTML.replace(blockCommentPattern, \"\")\n  },\n}\n\nconst deserializers = {\n  \"application/json\": function(string) {\n    return Document.fromJSONString(string)\n  },\n\n  \"text/html\": function(string) {\n    return HTMLParser.parse(string).getDocument()\n  },\n}\n\nexport const serializeToContentType = function(serializable, contentType) {\n  const serializer = serializers[contentType]\n  if (serializer) {\n    return serializer(serializable)\n  } else {\n    throw new Error(`unknown content type: ${contentType}`)\n  }\n}\n\nexport const deserializeFromContentType = function(string, contentType) {\n  const deserializer = deserializers[contentType]\n  if (deserializer) {\n    return deserializer(string)\n  } else {\n    throw new Error(`unknown content type: ${contentType}`)\n  }\n}\n", "import \"trix/models/attachment\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class ManagedAttachment extends BasicObject {\n  constructor(attachmentManager, attachment) {\n    super(...arguments)\n    this.attachmentManager = attachmentManager\n    this.attachment = attachment\n    this.id = this.attachment.id\n    this.file = this.attachment.file\n  }\n\n  remove() {\n    return this.attachmentManager.requestRemovalOfAttachment(this.attachment)\n  }\n}\n\nManagedAttachment.proxyMethod(\"attachment.getAttribute\")\nManagedAttachment.proxyMethod(\"attachment.hasAttribute\")\nManagedAttachment.proxyMethod(\"attachment.setAttribute\")\nManagedAttachment.proxyMethod(\"attachment.getAttributes\")\nManagedAttachment.proxyMethod(\"attachment.setAttributes\")\nManagedAttachment.proxyMethod(\"attachment.isPending\")\nManagedAttachment.proxyMethod(\"attachment.isPreviewable\")\nManagedAttachment.proxyMethod(\"attachment.getURL\")\nManagedAttachment.proxyMethod(\"attachment.getPreviewURL\")\nManagedAttachment.proxyMethod(\"attachment.setPreviewURL\")\nManagedAttachment.proxyMethod(\"attachment.getHref\")\nManagedAttachment.proxyMethod(\"attachment.getFilename\")\nManagedAttachment.proxyMethod(\"attachment.getFilesize\")\nManagedAttachment.proxyMethod(\"attachment.getFormattedFilesize\")\nManagedAttachment.proxyMethod(\"attachment.getExtension\")\nManagedAttachment.proxyMethod(\"attachment.getContentType\")\nManagedAttachment.proxyMethod(\"attachment.getFile\")\nManagedAttachment.proxyMethod(\"attachment.setFile\")\nManagedAttachment.proxyMethod(\"attachment.releaseFile\")\nManagedAttachment.proxyMethod(\"attachment.getUploadProgress\")\nManagedAttachment.proxyMethod(\"attachment.setUploadProgress\")\n\n", "import ManagedAttachment from \"trix/models/managed_attachment\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class AttachmentManager extends BasicObject {\n  constructor(attachments = []) {\n    super(...arguments)\n    this.managedAttachments = {}\n    Array.from(attachments).forEach((attachment) => {\n      this.manageAttachment(attachment)\n    })\n  }\n\n  getAttachments() {\n    const result = []\n    for (const id in this.managedAttachments) {\n      const attachment = this.managedAttachments[id]\n      result.push(attachment)\n    }\n    return result\n  }\n\n  manageAttachment(attachment) {\n    if (!this.managedAttachments[attachment.id]) {\n      this.managedAttachments[attachment.id] = new ManagedAttachment(this, attachment)\n    }\n    return this.managedAttachments[attachment.id]\n  }\n\n  attachmentIsManaged(attachment) {\n    return attachment.id in this.managedAttachments\n  }\n\n  requestRemovalOfAttachment(attachment) {\n    if (this.attachmentIsManaged(attachment)) {\n      return this.delegate?.attachmentManagerDidRequestRemovalOfAttachment?.(attachment)\n    }\n  }\n\n  unmanageAttachment(attachment) {\n    const managedAttachment = this.managedAttachments[attachment.id]\n    delete this.managedAttachments[attachment.id]\n    return managedAttachment\n  }\n}\n", "export default class LineBreakInsertion {\n  constructor(composition) {\n    this.composition = composition\n    this.document = this.composition.document\n    const selectedRange = this.composition.getSelectedRange()\n    this.startPosition = selectedRange[0]\n    this.endPosition = selectedRange[1]\n\n    this.startLocation = this.document.locationFromPosition(this.startPosition)\n    this.endLocation = this.document.locationFromPosition(this.endPosition)\n\n    this.block = this.document.getBlockAtIndex(this.endLocation.index)\n    this.breaksOnReturn = this.block.breaksOnReturn()\n    this.previousCharacter = this.block.text.getStringAtPosition(this.endLocation.offset - 1)\n    this.nextCharacter = this.block.text.getStringAtPosition(this.endLocation.offset)\n  }\n\n  shouldInsertBlockBreak() {\n    if (this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty()) {\n      return this.startLocation.offset !== 0\n    } else {\n      return this.breaksOnReturn && this.nextCharacter !== \"\\n\"\n    }\n  }\n\n  shouldBreakFormattedBlock() {\n    return (\n      this.block.hasAttributes() &&\n      !this.block.isListItem() &&\n      (this.breaksOnReturn && this.nextCharacter === \"\\n\" || this.previousCharacter === \"\\n\")\n    )\n  }\n\n  shouldDecreaseListLevel() {\n    return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty()\n  }\n\n  shouldPrependListItem() {\n    return this.block.isListItem() && this.startLocation.offset === 0 && !this.block.isEmpty()\n  }\n\n  shouldRemoveLastBlockAttribute() {\n    return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty()\n  }\n}\n", "import * as config from \"trix/config\"\nimport { OBJECT_REPLACEMENT_CHARACTER } from \"trix/constants\"\n\nimport BasicObject from \"trix/core/basic_object\"\nimport Text from \"trix/models/text\"\nimport Block from \"trix/models/block\"\nimport Attachment from \"trix/models/attachment\"\nimport Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\nimport LineBreakInsertion from \"trix/models/line_break_insertion\"\n\nimport {\n  arrayStartsWith,\n  extend,\n  getAllAttributeNames,\n  getBlockConfig,\n  getTextConfig,\n  normalizeRange,\n  objectsAreEqual,\n  rangeIsCollapsed,\n  rangesAreEqual,\n  summarizeArrayChange,\n} from \"trix/core/helpers\"\n\nconst PLACEHOLDER = \" \"\n\nexport default class Composition extends BasicObject {\n  constructor() {\n    super(...arguments)\n    this.document = new Document()\n    this.attachments = []\n    this.currentAttributes = {}\n    this.revision = 0\n  }\n\n  setDocument(document) {\n    if (!document.isEqualTo(this.document)) {\n      this.document = document\n      this.refreshAttachments()\n      this.revision++\n      return this.delegate?.compositionDidChangeDocument?.(document)\n    }\n  }\n\n  // Snapshots\n\n  getSnapshot() {\n    return {\n      document: this.document,\n      selectedRange: this.getSelectedRange(),\n    }\n  }\n\n  loadSnapshot({ document, selectedRange }) {\n    this.delegate?.compositionWillLoadSnapshot?.()\n    this.setDocument(document != null ? document : new Document())\n    this.setSelection(selectedRange != null ? selectedRange : [ 0, 0 ])\n    return this.delegate?.compositionDidLoadSnapshot?.()\n  }\n\n  // Responder protocol\n\n  insertText(text, { updatePosition } = { updatePosition: true }) {\n    const selectedRange = this.getSelectedRange()\n    this.setDocument(this.document.insertTextAtRange(text, selectedRange))\n\n    const startPosition = selectedRange[0]\n    const endPosition = startPosition + text.getLength()\n\n    if (updatePosition) {\n      this.setSelection(endPosition)\n    }\n    return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n  }\n\n  insertBlock(block = new Block()) {\n    const document = new Document([ block ])\n    return this.insertDocument(document)\n  }\n\n  insertDocument(document = new Document()) {\n    const selectedRange = this.getSelectedRange()\n    this.setDocument(this.document.insertDocumentAtRange(document, selectedRange))\n\n    const startPosition = selectedRange[0]\n    const endPosition = startPosition + document.getLength()\n\n    this.setSelection(endPosition)\n    return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n  }\n\n  insertString(string, options) {\n    const attributes = this.getCurrentTextAttributes()\n    const text = Text.textForStringWithAttributes(string, attributes)\n    return this.insertText(text, options)\n  }\n\n  insertBlockBreak() {\n    const selectedRange = this.getSelectedRange()\n    this.setDocument(this.document.insertBlockBreakAtRange(selectedRange))\n\n    const startPosition = selectedRange[0]\n    const endPosition = startPosition + 1\n\n    this.setSelection(endPosition)\n    return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n  }\n\n  insertLineBreak() {\n    const insertion = new LineBreakInsertion(this)\n\n    if (insertion.shouldDecreaseListLevel()) {\n      this.decreaseListLevel()\n      return this.setSelection(insertion.startPosition)\n    } else if (insertion.shouldPrependListItem()) {\n      const document = new Document([ insertion.block.copyWithoutText() ])\n      return this.insertDocument(document)\n    } else if (insertion.shouldInsertBlockBreak()) {\n      return this.insertBlockBreak()\n    } else if (insertion.shouldRemoveLastBlockAttribute()) {\n      return this.removeLastBlockAttribute()\n    } else if (insertion.shouldBreakFormattedBlock()) {\n      return this.breakFormattedBlock(insertion)\n    } else {\n      return this.insertString(\"\\n\")\n    }\n  }\n\n  insertHTML(html) {\n    const document = HTMLParser.parse(html, { purifyOptions: { SAFE_FOR_XML: true } }).getDocument()\n    const selectedRange = this.getSelectedRange()\n\n    this.setDocument(this.document.mergeDocumentAtRange(document, selectedRange))\n\n    const startPosition = selectedRange[0]\n    const endPosition = startPosition + document.getLength() - 1\n\n    this.setSelection(endPosition)\n    return this.notifyDelegateOfInsertionAtRange([ startPosition, endPosition ])\n  }\n\n  replaceHTML(html) {\n    const document = HTMLParser.parse(html).getDocument().copyUsingObjectsFromDocument(this.document)\n    const locationRange = this.getLocationRange({ strict: false })\n    const selectedRange = this.document.rangeFromLocationRange(locationRange)\n    this.setDocument(document)\n    return this.setSelection(selectedRange)\n  }\n\n  insertFile(file) {\n    return this.insertFiles([ file ])\n  }\n\n  insertFiles(files) {\n    const attachments = []\n\n    Array.from(files).forEach((file) => {\n      if (this.delegate?.compositionShouldAcceptFile(file)) {\n        const attachment = Attachment.attachmentForFile(file)\n        attachments.push(attachment)\n      }\n    })\n\n    return this.insertAttachments(attachments)\n  }\n\n  insertAttachment(attachment) {\n    return this.insertAttachments([ attachment ])\n  }\n\n  insertAttachments(attachments) {\n    let text = new Text()\n\n    Array.from(attachments).forEach((attachment) => {\n      const type = attachment.getType()\n      const presentation = config.attachments[type]?.presentation\n\n      const attributes = this.getCurrentTextAttributes()\n      if (presentation) {\n        attributes.presentation = presentation\n      }\n\n      const attachmentText = Text.textForAttachmentWithAttributes(attachment, attributes)\n      text = text.appendText(attachmentText)\n    })\n\n    return this.insertText(text)\n  }\n\n  shouldManageDeletingInDirection(direction) {\n    const locationRange = this.getLocationRange()\n    if (rangeIsCollapsed(locationRange)) {\n      if (direction === \"backward\" && locationRange[0].offset === 0) {\n        return true\n      }\n      if (this.shouldManageMovingCursorInDirection(direction)) {\n        return true\n      }\n    } else {\n      if (locationRange[0].index !== locationRange[1].index) {\n        return true\n      }\n    }\n    return false\n  }\n\n  deleteInDirection(direction, { length } = {}) {\n    let attachment, deletingIntoPreviousBlock, selectionSpansBlocks\n    const locationRange = this.getLocationRange()\n    let range = this.getSelectedRange()\n    const selectionIsCollapsed = rangeIsCollapsed(range)\n\n    if (selectionIsCollapsed) {\n      deletingIntoPreviousBlock = direction === \"backward\" && locationRange[0].offset === 0\n    } else {\n      selectionSpansBlocks = locationRange[0].index !== locationRange[1].index\n    }\n\n    if (deletingIntoPreviousBlock) {\n      if (this.canDecreaseBlockAttributeLevel()) {\n        const block = this.getBlock()\n\n        if (block.isListItem()) {\n          this.decreaseListLevel()\n        } else {\n          this.decreaseBlockAttributeLevel()\n        }\n\n        this.setSelection(range[0])\n        if (block.isEmpty()) {\n          return false\n        }\n      }\n    }\n\n    if (selectionIsCollapsed) {\n      range = this.getExpandedRangeInDirection(direction, { length })\n      if (direction === \"backward\") {\n        attachment = this.getAttachmentAtRange(range)\n      }\n    }\n\n    if (attachment) {\n      this.editAttachment(attachment)\n      return false\n    } else {\n      this.setDocument(this.document.removeTextAtRange(range))\n      this.setSelection(range[0])\n      if (deletingIntoPreviousBlock || selectionSpansBlocks) {\n        return false\n      }\n    }\n  }\n\n  moveTextFromRange(range) {\n    const [ position ] = Array.from(this.getSelectedRange())\n    this.setDocument(this.document.moveTextFromRangeToPosition(range, position))\n    return this.setSelection(position)\n  }\n\n  removeAttachment(attachment) {\n    const range = this.document.getRangeOfAttachment(attachment)\n    if (range) {\n      this.stopEditingAttachment()\n      this.setDocument(this.document.removeTextAtRange(range))\n      return this.setSelection(range[0])\n    }\n  }\n\n  removeLastBlockAttribute() {\n    const [ startPosition, endPosition ] = Array.from(this.getSelectedRange())\n    const block = this.document.getBlockAtPosition(endPosition)\n    this.removeCurrentAttribute(block.getLastAttribute())\n    return this.setSelection(startPosition)\n  }\n\n  insertPlaceholder() {\n    this.placeholderPosition = this.getPosition()\n    return this.insertString(PLACEHOLDER)\n  }\n\n  selectPlaceholder() {\n    if (this.placeholderPosition != null) {\n      this.setSelectedRange([ this.placeholderPosition, this.placeholderPosition + PLACEHOLDER.length ])\n      return this.getSelectedRange()\n    }\n  }\n\n  forgetPlaceholder() {\n    this.placeholderPosition = null\n  }\n\n  // Current attributes\n\n  hasCurrentAttribute(attributeName) {\n    const value = this.currentAttributes[attributeName]\n    return value != null && value !== false\n  }\n\n  toggleCurrentAttribute(attributeName) {\n    const value = !this.currentAttributes[attributeName]\n    if (value) {\n      return this.setCurrentAttribute(attributeName, value)\n    } else {\n      return this.removeCurrentAttribute(attributeName)\n    }\n  }\n\n  canSetCurrentAttribute(attributeName) {\n    if (getBlockConfig(attributeName)) {\n      return this.canSetCurrentBlockAttribute(attributeName)\n    } else {\n      return this.canSetCurrentTextAttribute(attributeName)\n    }\n  }\n\n  canSetCurrentTextAttribute(attributeName) {\n    const document = this.getSelectedDocument()\n    if (!document) return\n    for (const attachment of Array.from(document.getAttachments())) {\n      if (!attachment.hasContent()) {\n        return false\n      }\n    }\n    return true\n  }\n\n  canSetCurrentBlockAttribute(attributeName) {\n    const block = this.getBlock()\n    if (!block) return\n    return !block.isTerminalBlock()\n  }\n\n  setCurrentAttribute(attributeName, value) {\n    if (getBlockConfig(attributeName)) {\n      return this.setBlockAttribute(attributeName, value)\n    } else {\n      this.setTextAttribute(attributeName, value)\n      this.currentAttributes[attributeName] = value\n      return this.notifyDelegateOfCurrentAttributesChange()\n    }\n  }\n\n  setHTMLAtributeAtPosition(position, attributeName, value) {\n    const block = this.document.getBlockAtPosition(position)\n    const allowedHTMLAttributes = getBlockConfig(block.getLastAttribute())?.htmlAttributes\n\n    if (block && allowedHTMLAttributes?.includes(attributeName)) {\n      const newDocument = this.document.setHTMLAttributeAtPosition(position, attributeName, value)\n      this.setDocument(newDocument)\n    }\n  }\n\n  setTextAttribute(attributeName, value) {\n    const selectedRange = this.getSelectedRange()\n    if (!selectedRange) return\n\n    const [ startPosition, endPosition ] = Array.from(selectedRange)\n    if (startPosition === endPosition) {\n      if (attributeName === \"href\") {\n        const text = Text.textForStringWithAttributes(value, { href: value })\n        return this.insertText(text)\n      }\n    } else {\n      return this.setDocument(this.document.addAttributeAtRange(attributeName, value, selectedRange))\n    }\n  }\n\n  setBlockAttribute(attributeName, value) {\n    const selectedRange = this.getSelectedRange()\n    if (this.canSetCurrentAttribute(attributeName)) {\n      this.setDocument(this.document.applyBlockAttributeAtRange(attributeName, value, selectedRange))\n      return this.setSelection(selectedRange)\n    }\n  }\n\n  removeCurrentAttribute(attributeName) {\n    if (getBlockConfig(attributeName)) {\n      this.removeBlockAttribute(attributeName)\n      return this.updateCurrentAttributes()\n    } else {\n      this.removeTextAttribute(attributeName)\n      delete this.currentAttributes[attributeName]\n      return this.notifyDelegateOfCurrentAttributesChange()\n    }\n  }\n\n  removeTextAttribute(attributeName) {\n    const selectedRange = this.getSelectedRange()\n    if (!selectedRange) return\n    return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange))\n  }\n\n  removeBlockAttribute(attributeName) {\n    const selectedRange = this.getSelectedRange()\n    if (!selectedRange) return\n    return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange))\n  }\n\n  canDecreaseNestingLevel() {\n    return this.getBlock()?.getNestingLevel() > 0\n  }\n\n  canIncreaseNestingLevel() {\n    const block = this.getBlock()\n    if (!block) return\n    if (getBlockConfig(block.getLastNestableAttribute())?.listAttribute) {\n      const previousBlock = this.getPreviousBlock()\n      if (previousBlock) {\n        return arrayStartsWith(previousBlock.getListItemAttributes(), block.getListItemAttributes())\n      }\n    } else {\n      return block.getNestingLevel() > 0\n    }\n  }\n\n  decreaseNestingLevel() {\n    const block = this.getBlock()\n    if (!block) return\n    return this.setDocument(this.document.replaceBlock(block, block.decreaseNestingLevel()))\n  }\n\n  increaseNestingLevel() {\n    const block = this.getBlock()\n    if (!block) return\n    return this.setDocument(this.document.replaceBlock(block, block.increaseNestingLevel()))\n  }\n\n  canDecreaseBlockAttributeLevel() {\n    return this.getBlock()?.getAttributeLevel() > 0\n  }\n\n  decreaseBlockAttributeLevel() {\n    const attribute = this.getBlock()?.getLastAttribute()\n    if (attribute) {\n      return this.removeCurrentAttribute(attribute)\n    }\n  }\n\n  decreaseListLevel() {\n    let [ startPosition ] = Array.from(this.getSelectedRange())\n    const { index } = this.document.locationFromPosition(startPosition)\n    let endIndex = index\n    const attributeLevel = this.getBlock().getAttributeLevel()\n\n    let block = this.document.getBlockAtIndex(endIndex + 1)\n    while (block) {\n      if (!block.isListItem() || block.getAttributeLevel() <= attributeLevel) {\n        break\n      }\n      endIndex++\n      block = this.document.getBlockAtIndex(endIndex + 1)\n    }\n\n    startPosition = this.document.positionFromLocation({ index, offset: 0 })\n    const endPosition = this.document.positionFromLocation({ index: endIndex, offset: 0 })\n    return this.setDocument(this.document.removeLastListAttributeAtRange([ startPosition, endPosition ]))\n  }\n\n  updateCurrentAttributes() {\n    const selectedRange = this.getSelectedRange({ ignoreLock: true })\n    if (selectedRange) {\n      const currentAttributes = this.document.getCommonAttributesAtRange(selectedRange)\n\n      Array.from(getAllAttributeNames()).forEach((attributeName) => {\n        if (!currentAttributes[attributeName]) {\n          if (!this.canSetCurrentAttribute(attributeName)) {\n            currentAttributes[attributeName] = false\n          }\n        }\n      })\n\n      if (!objectsAreEqual(currentAttributes, this.currentAttributes)) {\n        this.currentAttributes = currentAttributes\n        return this.notifyDelegateOfCurrentAttributesChange()\n      }\n    }\n  }\n\n  getCurrentAttributes() {\n    return extend.call({}, this.currentAttributes)\n  }\n\n  getCurrentTextAttributes() {\n    const attributes = {}\n    for (const key in this.currentAttributes) {\n      const value = this.currentAttributes[key]\n      if (value !== false) {\n        if (getTextConfig(key)) {\n          attributes[key] = value\n        }\n      }\n    }\n    return attributes\n  }\n\n  // Selection freezing\n\n  freezeSelection() {\n    return this.setCurrentAttribute(\"frozen\", true)\n  }\n\n  thawSelection() {\n    return this.removeCurrentAttribute(\"frozen\")\n  }\n\n  hasFrozenSelection() {\n    return this.hasCurrentAttribute(\"frozen\")\n  }\n\n  setSelection(selectedRange) {\n    const locationRange = this.document.locationRangeFromRange(selectedRange)\n    return this.delegate?.compositionDidRequestChangingSelectionToLocationRange(locationRange)\n  }\n\n  getSelectedRange() {\n    const locationRange = this.getLocationRange()\n    if (locationRange) {\n      return this.document.rangeFromLocationRange(locationRange)\n    }\n  }\n\n  setSelectedRange(selectedRange) {\n    const locationRange = this.document.locationRangeFromRange(selectedRange)\n    return this.getSelectionManager().setLocationRange(locationRange)\n  }\n\n  getPosition() {\n    const locationRange = this.getLocationRange()\n    if (locationRange) {\n      return this.document.positionFromLocation(locationRange[0])\n    }\n  }\n\n  getLocationRange(options) {\n    if (this.targetLocationRange) {\n      return this.targetLocationRange\n    } else {\n      return this.getSelectionManager().getLocationRange(options) || normalizeRange({ index: 0, offset: 0 })\n    }\n  }\n\n  withTargetLocationRange(locationRange, fn) {\n    let result\n    this.targetLocationRange = locationRange\n    try {\n      result = fn()\n    } finally {\n      this.targetLocationRange = null\n    }\n    return result\n  }\n\n  withTargetRange(range, fn) {\n    const locationRange = this.document.locationRangeFromRange(range)\n    return this.withTargetLocationRange(locationRange, fn)\n  }\n\n  withTargetDOMRange(domRange, fn) {\n    const locationRange = this.createLocationRangeFromDOMRange(domRange, { strict: false })\n    return this.withTargetLocationRange(locationRange, fn)\n  }\n\n  getExpandedRangeInDirection(direction, { length } = {}) {\n    let [ startPosition, endPosition ] = Array.from(this.getSelectedRange())\n    if (direction === \"backward\") {\n      if (length) {\n        startPosition -= length\n      } else {\n        startPosition = this.translateUTF16PositionFromOffset(startPosition, -1)\n      }\n    } else {\n      if (length) {\n        endPosition += length\n      } else {\n        endPosition = this.translateUTF16PositionFromOffset(endPosition, 1)\n      }\n    }\n    return normalizeRange([ startPosition, endPosition ])\n  }\n\n  shouldManageMovingCursorInDirection(direction) {\n    if (this.editingAttachment) {\n      return true\n    }\n    const range = this.getExpandedRangeInDirection(direction)\n    return this.getAttachmentAtRange(range) != null\n  }\n\n  moveCursorInDirection(direction) {\n    let canEditAttachment, range\n    if (this.editingAttachment) {\n      range = this.document.getRangeOfAttachment(this.editingAttachment)\n    } else {\n      const selectedRange = this.getSelectedRange()\n      range = this.getExpandedRangeInDirection(direction)\n      canEditAttachment = !rangesAreEqual(selectedRange, range)\n    }\n\n    if (direction === \"backward\") {\n      this.setSelectedRange(range[0])\n    } else {\n      this.setSelectedRange(range[1])\n    }\n\n    if (canEditAttachment) {\n      const attachment = this.getAttachmentAtRange(range)\n      if (attachment) {\n        return this.editAttachment(attachment)\n      }\n    }\n  }\n\n  expandSelectionInDirection(direction, { length } = {}) {\n    const range = this.getExpandedRangeInDirection(direction, { length })\n    return this.setSelectedRange(range)\n  }\n\n  expandSelectionForEditing() {\n    if (this.hasCurrentAttribute(\"href\")) {\n      return this.expandSelectionAroundCommonAttribute(\"href\")\n    }\n  }\n\n  expandSelectionAroundCommonAttribute(attributeName) {\n    const position = this.getPosition()\n    const range = this.document.getRangeOfCommonAttributeAtPosition(attributeName, position)\n    return this.setSelectedRange(range)\n  }\n\n  selectionContainsAttachments() {\n    return this.getSelectedAttachments()?.length > 0\n  }\n\n  selectionIsInCursorTarget() {\n    return this.editingAttachment || this.positionIsCursorTarget(this.getPosition())\n  }\n\n  positionIsCursorTarget(position) {\n    const location = this.document.locationFromPosition(position)\n    if (location) {\n      return this.locationIsCursorTarget(location)\n    }\n  }\n\n  positionIsBlockBreak(position) {\n    return this.document.getPieceAtPosition(position)?.isBlockBreak()\n  }\n\n  getSelectedDocument() {\n    const selectedRange = this.getSelectedRange()\n    if (selectedRange) {\n      return this.document.getDocumentAtRange(selectedRange)\n    }\n  }\n\n  getSelectedAttachments() {\n    return this.getSelectedDocument()?.getAttachments()\n  }\n\n  // Attachments\n\n  getAttachments() {\n    return this.attachments.slice(0)\n  }\n\n  refreshAttachments() {\n    const attachments = this.document.getAttachments()\n    const { added, removed } = summarizeArrayChange(this.attachments, attachments)\n    this.attachments = attachments\n\n    Array.from(removed).forEach((attachment) => {\n      attachment.delegate = null\n      this.delegate?.compositionDidRemoveAttachment?.(attachment)\n    })\n\n    return (() => {\n      const result = []\n\n      Array.from(added).forEach((attachment) => {\n        attachment.delegate = this\n        result.push(this.delegate?.compositionDidAddAttachment?.(attachment))\n      })\n\n      return result\n    })()\n  }\n\n  // Attachment delegate\n\n  attachmentDidChangeAttributes(attachment) {\n    this.revision++\n    return this.delegate?.compositionDidEditAttachment?.(attachment)\n  }\n\n  attachmentDidChangePreviewURL(attachment) {\n    this.revision++\n    return this.delegate?.compositionDidChangeAttachmentPreviewURL?.(attachment)\n  }\n\n  // Attachment editing\n\n  editAttachment(attachment, options) {\n    if (attachment === this.editingAttachment) return\n    this.stopEditingAttachment()\n    this.editingAttachment = attachment\n    return this.delegate?.compositionDidStartEditingAttachment?.(this.editingAttachment, options)\n  }\n\n  stopEditingAttachment() {\n    if (!this.editingAttachment) return\n    this.delegate?.compositionDidStopEditingAttachment?.(this.editingAttachment)\n    this.editingAttachment = null\n  }\n\n  updateAttributesForAttachment(attributes, attachment) {\n    return this.setDocument(this.document.updateAttributesForAttachment(attributes, attachment))\n  }\n\n  removeAttributeForAttachment(attribute, attachment) {\n    return this.setDocument(this.document.removeAttributeForAttachment(attribute, attachment))\n  }\n\n  // Private\n\n  breakFormattedBlock(insertion) {\n    let { document } = insertion\n    const { block } = insertion\n    let position = insertion.startPosition\n    let range = [ position - 1, position ]\n\n    if (block.getBlockBreakPosition() === insertion.startLocation.offset) {\n      if (block.breaksOnReturn() && insertion.nextCharacter === \"\\n\") {\n        position += 1\n      } else {\n        document = document.removeTextAtRange(range)\n      }\n      range = [ position, position ]\n    } else if (insertion.nextCharacter === \"\\n\") {\n      if (insertion.previousCharacter === \"\\n\") {\n        range = [ position - 1, position + 1 ]\n      } else {\n        range = [ position, position + 1 ]\n        position += 1\n      }\n    } else if (insertion.startLocation.offset - 1 !== 0) {\n      position += 1\n    }\n\n    const newDocument = new Document([ block.removeLastAttribute().copyWithoutText() ])\n    this.setDocument(document.insertDocumentAtRange(newDocument, range))\n    return this.setSelection(position)\n  }\n\n  getPreviousBlock() {\n    const locationRange = this.getLocationRange()\n    if (locationRange) {\n      const { index } = locationRange[0]\n      if (index > 0) {\n        return this.document.getBlockAtIndex(index - 1)\n      }\n    }\n  }\n\n  getBlock() {\n    const locationRange = this.getLocationRange()\n    if (locationRange) {\n      return this.document.getBlockAtIndex(locationRange[0].index)\n    }\n  }\n\n  getAttachmentAtRange(range) {\n    const document = this.document.getDocumentAtRange(range)\n    if (document.toString() === `${OBJECT_REPLACEMENT_CHARACTER}\\n`) {\n      return document.getAttachments()[0]\n    }\n  }\n\n  notifyDelegateOfCurrentAttributesChange() {\n    return this.delegate?.compositionDidChangeCurrentAttributes?.(this.currentAttributes)\n  }\n\n  notifyDelegateOfInsertionAtRange(range) {\n    return this.delegate?.compositionDidPerformInsertionAtRange?.(range)\n  }\n\n  translateUTF16PositionFromOffset(position, offset) {\n    const utf16string = this.document.toUTF16String()\n    const utf16position = utf16string.offsetFromUCS2Offset(position)\n    return utf16string.offsetToUCS2Offset(utf16position + offset)\n  }\n}\n\nComposition.proxyMethod(\"getSelectionManager().getPointRange\")\nComposition.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\")\nComposition.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\")\nComposition.proxyMethod(\"getSelectionManager().locationIsCursorTarget\")\nComposition.proxyMethod(\"getSelectionManager().selectionIsExpanded\")\nComposition.proxyMethod(\"delegate?.getSelectionManager\")\n", "import BasicObject from \"trix/core/basic_object\"\n\nexport default class UndoManager extends BasicObject {\n  constructor(composition) {\n    super(...arguments)\n    this.composition = composition\n    this.undoEntries = []\n    this.redoEntries = []\n  }\n\n  recordUndoEntry(description, { context, consolidatable } = {}) {\n    const previousEntry = this.undoEntries.slice(-1)[0]\n\n    if (!consolidatable || !entryHasDescriptionAndContext(previousEntry, description, context)) {\n      const undoEntry = this.createEntry({ description, context })\n      this.undoEntries.push(undoEntry)\n      this.redoEntries = []\n    }\n  }\n\n  undo() {\n    const undoEntry = this.undoEntries.pop()\n    if (undoEntry) {\n      const redoEntry = this.createEntry(undoEntry)\n      this.redoEntries.push(redoEntry)\n      return this.composition.loadSnapshot(undoEntry.snapshot)\n    }\n  }\n\n  redo() {\n    const redoEntry = this.redoEntries.pop()\n    if (redoEntry) {\n      const undoEntry = this.createEntry(redoEntry)\n      this.undoEntries.push(undoEntry)\n      return this.composition.loadSnapshot(redoEntry.snapshot)\n    }\n  }\n\n  canUndo() {\n    return this.undoEntries.length > 0\n  }\n\n  canRedo() {\n    return this.redoEntries.length > 0\n  }\n\n  // Private\n\n  createEntry({ description, context } = {}) {\n    return {\n      description: description?.toString(),\n      context: JSON.stringify(context),\n      snapshot: this.composition.getSnapshot(),\n    }\n  }\n}\n\nconst entryHasDescriptionAndContext = (entry, description, context) =>\n  entry?.description === description?.toString() && entry?.context === JSON.stringify(context)\n", "const BLOCK_ATTRIBUTE_NAME = \"attachmentGallery\"\nconst TEXT_ATTRIBUTE_NAME = \"presentation\"\nconst TEXT_ATTRIBUTE_VALUE = \"gallery\"\n\nexport default class Filter {\n  constructor(snapshot) {\n    this.document = snapshot.document\n    this.selectedRange = snapshot.selectedRange\n  }\n\n  perform() {\n    this.removeBlockAttribute()\n    return this.applyBlockAttribute()\n  }\n\n  getSnapshot() {\n    return { document: this.document, selectedRange: this.selectedRange }\n  }\n\n  // Private\n\n  removeBlockAttribute() {\n    return this.findRangesOfBlocks().map((range) => this.document = this.document.removeAttributeAtRange(BLOCK_ATTRIBUTE_NAME, range))\n  }\n\n  applyBlockAttribute() {\n    let offset = 0\n\n    this.findRangesOfPieces().forEach((range) => {\n      if (range[1] - range[0] > 1) {\n        range[0] += offset\n        range[1] += offset\n\n        if (this.document.getCharacterAtPosition(range[1]) !== \"\\n\") {\n          this.document = this.document.insertBlockBreakAtRange(range[1])\n          if (range[1] < this.selectedRange[1]) {\n            this.moveSelectedRangeForward()\n          }\n          range[1]++\n          offset++\n        }\n\n        if (range[0] !== 0) {\n          if (this.document.getCharacterAtPosition(range[0] - 1) !== \"\\n\") {\n            this.document = this.document.insertBlockBreakAtRange(range[0])\n            if (range[0] < this.selectedRange[0]) {\n              this.moveSelectedRangeForward()\n            }\n            range[0]++\n            offset++\n          }\n        }\n\n        this.document = this.document.applyBlockAttributeAtRange(BLOCK_ATTRIBUTE_NAME, true, range)\n      }\n    })\n  }\n\n  findRangesOfBlocks() {\n    return this.document.findRangesForBlockAttribute(BLOCK_ATTRIBUTE_NAME)\n  }\n\n  findRangesOfPieces() {\n    return this.document.findRangesForTextAttribute(TEXT_ATTRIBUTE_NAME, { withValue: TEXT_ATTRIBUTE_VALUE })\n  }\n\n  moveSelectedRangeForward() {\n    this.selectedRange[0] += 1\n    this.selectedRange[1] += 1\n  }\n}\n", "import Filter from \"./filter\"\n\nexport const attachmentGalleryFilter = function(snapshot) {\n  const filter = new Filter(snapshot)\n  filter.perform()\n  return filter.getSnapshot()\n}\n\n", "import Document from \"trix/models/document\"\nimport HTMLParser from \"trix/models/html_parser\"\n\nimport UndoManager from \"trix/models/undo_manager\"\nimport { attachmentGalleryFilter } from \"trix/filters/attachment_gallery_filter\"\nconst DEFAULT_FILTERS = [ attachmentGalleryFilter ]\n\nexport default class Editor {\n  constructor(composition, selectionManager, element) {\n    this.insertFiles = this.insertFiles.bind(this)\n    this.composition = composition\n    this.selectionManager = selectionManager\n    this.element = element\n    this.undoManager = new UndoManager(this.composition)\n    this.filters = DEFAULT_FILTERS.slice(0)\n  }\n\n  loadDocument(document) {\n    return this.loadSnapshot({ document, selectedRange: [ 0, 0 ] })\n  }\n\n  loadHTML(html = \"\") {\n    const document = HTMLParser.parse(html, { referenceElement: this.element }).getDocument()\n    return this.loadDocument(document)\n  }\n\n  loadJSON({ document, selectedRange }) {\n    document = Document.fromJSON(document)\n    return this.loadSnapshot({ document, selectedRange })\n  }\n\n  loadSnapshot(snapshot) {\n    this.undoManager = new UndoManager(this.composition)\n    return this.composition.loadSnapshot(snapshot)\n  }\n\n  getDocument() {\n    return this.composition.document\n  }\n\n  getSelectedDocument() {\n    return this.composition.getSelectedDocument()\n  }\n\n  getSnapshot() {\n    return this.composition.getSnapshot()\n  }\n\n  toJSON() {\n    return this.getSnapshot()\n  }\n\n  // Document manipulation\n\n  deleteInDirection(direction) {\n    return this.composition.deleteInDirection(direction)\n  }\n\n  insertAttachment(attachment) {\n    return this.composition.insertAttachment(attachment)\n  }\n\n  insertAttachments(attachments) {\n    return this.composition.insertAttachments(attachments)\n  }\n\n  insertDocument(document) {\n    return this.composition.insertDocument(document)\n  }\n\n  insertFile(file) {\n    return this.composition.insertFile(file)\n  }\n\n  insertFiles(files) {\n    return this.composition.insertFiles(files)\n  }\n\n  insertHTML(html) {\n    return this.composition.insertHTML(html)\n  }\n\n  insertString(string) {\n    return this.composition.insertString(string)\n  }\n\n  insertText(text) {\n    return this.composition.insertText(text)\n  }\n\n  insertLineBreak() {\n    return this.composition.insertLineBreak()\n  }\n\n  // Selection\n\n  getSelectedRange() {\n    return this.composition.getSelectedRange()\n  }\n\n  getPosition() {\n    return this.composition.getPosition()\n  }\n\n  getClientRectAtPosition(position) {\n    const locationRange = this.getDocument().locationRangeFromRange([ position, position + 1 ])\n    return this.selectionManager.getClientRectAtLocationRange(locationRange)\n  }\n\n  expandSelectionInDirection(direction) {\n    return this.composition.expandSelectionInDirection(direction)\n  }\n\n  moveCursorInDirection(direction) {\n    return this.composition.moveCursorInDirection(direction)\n  }\n\n  setSelectedRange(selectedRange) {\n    return this.composition.setSelectedRange(selectedRange)\n  }\n\n  // Attributes\n\n  activateAttribute(name, value = true) {\n    return this.composition.setCurrentAttribute(name, value)\n  }\n\n  attributeIsActive(name) {\n    return this.composition.hasCurrentAttribute(name)\n  }\n\n  canActivateAttribute(name) {\n    return this.composition.canSetCurrentAttribute(name)\n  }\n\n  deactivateAttribute(name) {\n    return this.composition.removeCurrentAttribute(name)\n  }\n\n  // HTML attributes\n  setHTMLAtributeAtPosition(position, name, value) {\n    this.composition.setHTMLAtributeAtPosition(position, name, value)\n  }\n\n  // Nesting level\n\n  canDecreaseNestingLevel() {\n    return this.composition.canDecreaseNestingLevel()\n  }\n\n  canIncreaseNestingLevel() {\n    return this.composition.canIncreaseNestingLevel()\n  }\n\n  decreaseNestingLevel() {\n    if (this.canDecreaseNestingLevel()) {\n      return this.composition.decreaseNestingLevel()\n    }\n  }\n\n  increaseNestingLevel() {\n    if (this.canIncreaseNestingLevel()) {\n      return this.composition.increaseNestingLevel()\n    }\n  }\n\n  // Undo/redo\n\n  canRedo() {\n    return this.undoManager.canRedo()\n  }\n\n  canUndo() {\n    return this.undoManager.canUndo()\n  }\n\n  recordUndoEntry(description, { context, consolidatable } = {}) {\n    return this.undoManager.recordUndoEntry(description, { context, consolidatable })\n  }\n\n  redo() {\n    if (this.canRedo()) {\n      return this.undoManager.redo()\n    }\n  }\n\n  undo() {\n    if (this.canUndo()) {\n      return this.undoManager.undo()\n    }\n  }\n}\n", "/* eslint-disable\n    no-var,\n    prefer-const,\n*/\nimport {\n  elementContainsNode,\n  findChildIndexOfNode,\n  nodeIsAttachmentElement,\n  nodeIsBlockContainer,\n  nodeIsBlockStart,\n  nodeIsBlockStartComment,\n  nodeIsCursorTarget,\n  nodeIsEmptyTextNode,\n  nodeIsTextNode,\n  tagName,\n  walkTree,\n} from \"trix/core/helpers\"\n\nexport default class LocationMapper {\n  constructor(element) {\n    this.element = element\n  }\n\n  findLocationFromContainerAndOffset(container, offset, { strict } = { strict: true }) {\n    let childIndex = 0\n    let foundBlock = false\n    const location = { index: 0, offset: 0 }\n    const attachmentElement = this.findAttachmentElementParentForNode(container)\n\n    if (attachmentElement) {\n      container = attachmentElement.parentNode\n      offset = findChildIndexOfNode(attachmentElement)\n    }\n\n    const walker = walkTree(this.element, { usingFilter: rejectAttachmentContents })\n\n    while (walker.nextNode()) {\n      const node = walker.currentNode\n\n      if (node === container && nodeIsTextNode(container)) {\n        if (!nodeIsCursorTarget(node)) {\n          location.offset += offset\n        }\n        break\n      } else {\n        if (node.parentNode === container) {\n          if (childIndex++ === offset) {\n            if (!strict && nodeIsBlockStart(node, { strict })) {\n              if (foundBlock) {\n                location.index++\n              }\n              location.offset = 0\n              foundBlock = true\n            }\n            break\n          }\n        } else if (!elementContainsNode(container, node)) {\n          if (childIndex > 0) {\n            break\n          }\n        }\n\n        if (nodeIsBlockStart(node, { strict })) {\n          if (foundBlock) {\n            location.index++\n          }\n          location.offset = 0\n          foundBlock = true\n        } else {\n          location.offset += nodeLength(node)\n        }\n      }\n    }\n\n    return location\n  }\n\n  findContainerAndOffsetFromLocation(location) {\n    let container, offset\n    if (location.index === 0 && location.offset === 0) {\n      container = this.element\n      offset = 0\n\n      while (container.firstChild) {\n        container = container.firstChild\n        if (nodeIsBlockContainer(container)) {\n          offset = 1\n          break\n        }\n      }\n\n      return [ container, offset ]\n    }\n\n    let [ node, nodeOffset ] = this.findNodeAndOffsetFromLocation(location)\n    if (!node) return\n\n    if (nodeIsTextNode(node)) {\n      if (nodeLength(node) === 0) {\n        container = node.parentNode.parentNode\n        offset = findChildIndexOfNode(node.parentNode)\n        if (nodeIsCursorTarget(node, { name: \"right\" })) {\n          offset++\n        }\n      } else {\n        container = node\n        offset = location.offset - nodeOffset\n      }\n    } else {\n      container = node.parentNode\n\n      if (!nodeIsBlockStart(node.previousSibling)) {\n        if (!nodeIsBlockContainer(container)) {\n          while (node === container.lastChild) {\n            node = container\n            container = container.parentNode\n            if (nodeIsBlockContainer(container)) {\n              break\n            }\n          }\n        }\n      }\n\n      offset = findChildIndexOfNode(node)\n      if (location.offset !== 0) {\n        offset++\n      }\n    }\n\n    return [ container, offset ]\n  }\n\n  findNodeAndOffsetFromLocation(location) {\n    let node, nodeOffset\n    let offset = 0\n\n    for (const currentNode of this.getSignificantNodesForIndex(location.index)) {\n      const length = nodeLength(currentNode)\n\n      if (location.offset <= offset + length) {\n        if (nodeIsTextNode(currentNode)) {\n          node = currentNode\n          nodeOffset = offset\n          if (location.offset === nodeOffset && nodeIsCursorTarget(node)) {\n            break\n          }\n        } else if (!node) {\n          node = currentNode\n          nodeOffset = offset\n        }\n      }\n\n      offset += length\n      if (offset > location.offset) {\n        break\n      }\n    }\n\n    return [ node, nodeOffset ]\n  }\n\n  // Private\n\n  findAttachmentElementParentForNode(node) {\n    while (node && node !== this.element) {\n      if (nodeIsAttachmentElement(node)) {\n        return node\n      }\n      node = node.parentNode\n    }\n  }\n\n  getSignificantNodesForIndex(index) {\n    const nodes = []\n    const walker = walkTree(this.element, { usingFilter: acceptSignificantNodes })\n    let recordingNodes = false\n\n    while (walker.nextNode()) {\n      const node = walker.currentNode\n      if (nodeIsBlockStartComment(node)) {\n        var blockIndex\n        if (blockIndex != null) {\n          blockIndex++\n        } else {\n          blockIndex = 0\n        }\n\n        if (blockIndex === index) {\n          recordingNodes = true\n        } else if (recordingNodes) {\n          break\n        }\n      } else if (recordingNodes) {\n        nodes.push(node)\n      }\n    }\n\n    return nodes\n  }\n}\n\nconst nodeLength = function(node) {\n  if (node.nodeType === Node.TEXT_NODE) {\n    if (nodeIsCursorTarget(node)) {\n      return 0\n    } else {\n      const string = node.textContent\n      return string.length\n    }\n  } else if (tagName(node) === \"br\" || nodeIsAttachmentElement(node)) {\n    return 1\n  } else {\n    return 0\n  }\n}\n\nconst acceptSignificantNodes = function(node) {\n  if (rejectEmptyTextNodes(node) === NodeFilter.FILTER_ACCEPT) {\n    return rejectAttachmentContents(node)\n  } else {\n    return NodeFilter.FILTER_REJECT\n  }\n}\n\nconst rejectEmptyTextNodes = function(node) {\n  if (nodeIsEmptyTextNode(node)) {\n    return NodeFilter.FILTER_REJECT\n  } else {\n    return NodeFilter.FILTER_ACCEPT\n  }\n}\n\nconst rejectAttachmentContents = function(node) {\n  if (nodeIsAttachmentElement(node.parentNode)) {\n    return NodeFilter.FILTER_REJECT\n  } else {\n    return NodeFilter.FILTER_ACCEPT\n  }\n}\n", "/* eslint-disable\n    id-length,\n    no-empty,\n*/\nimport { getDOMRange, setDOMRange } from \"trix/core/helpers\"\n\nexport default class PointMapper {\n  createDOMRangeFromPoint({ x, y }) {\n    let domRange\n    if (document.caretPositionFromPoint) {\n      const { offsetNode, offset } = document.caretPositionFromPoint(x, y)\n      domRange = document.createRange()\n      domRange.setStart(offsetNode, offset)\n      return domRange\n    } else if (document.caretRangeFromPoint) {\n      return document.caretRangeFromPoint(x, y)\n    } else if (document.body.createTextRange) {\n      const originalDOMRange = getDOMRange()\n      try {\n        // IE 11 throws \"Unspecified error\" when using moveToPoint\n        // during a drag-and-drop operation.\n        const textRange = document.body.createTextRange()\n        textRange.moveToPoint(x, y)\n        textRange.select()\n      } catch (error) {}\n      domRange = getDOMRange()\n      setDOMRange(originalDOMRange)\n      return domRange\n    }\n  }\n\n  getClientRectsForDOMRange(domRange) {\n    const array = Array.from(domRange.getClientRects())\n    const start = array[0]\n    const end = array[array.length - 1]\n\n    return [ start, end ]\n  }\n}\n", "/* eslint-disable\n*/\nimport BasicObject from \"trix/core/basic_object\"\n\nimport LocationMapper from \"trix/models/location_mapper\"\nimport PointMapper from \"trix/models/point_mapper\"\n\nimport {\n  elementContainsNode,\n  getDOMRange,\n  getDOMSelection,\n  handleEvent,\n  innerElementIsActive,\n  nodeIsCursorTarget,\n  normalizeRange,\n  rangeIsCollapsed,\n  rangesAreEqual,\n  setDOMRange,\n} from \"trix/core/helpers\"\n\nexport default class SelectionManager extends BasicObject {\n  constructor(element) {\n    super(...arguments)\n    this.didMouseDown = this.didMouseDown.bind(this)\n    this.selectionDidChange = this.selectionDidChange.bind(this)\n    this.element = element\n    this.locationMapper = new LocationMapper(this.element)\n    this.pointMapper = new PointMapper()\n    this.lockCount = 0\n    handleEvent(\"mousedown\", { onElement: this.element, withCallback: this.didMouseDown })\n  }\n\n  getLocationRange(options = {}) {\n    if (options.strict === false) {\n      return this.createLocationRangeFromDOMRange(getDOMRange())\n    } else if (options.ignoreLock) {\n      return this.currentLocationRange\n    } else if (this.lockedLocationRange) {\n      return this.lockedLocationRange\n    } else {\n      return this.currentLocationRange\n    }\n  }\n\n  setLocationRange(locationRange) {\n    if (this.lockedLocationRange) return\n    locationRange = normalizeRange(locationRange)\n\n    const domRange = this.createDOMRangeFromLocationRange(locationRange)\n    if (domRange) {\n      setDOMRange(domRange)\n      this.updateCurrentLocationRange(locationRange)\n    }\n  }\n\n  setLocationRangeFromPointRange(pointRange) {\n    pointRange = normalizeRange(pointRange)\n    const startLocation = this.getLocationAtPoint(pointRange[0])\n    const endLocation = this.getLocationAtPoint(pointRange[1])\n    this.setLocationRange([ startLocation, endLocation ])\n  }\n\n  getClientRectAtLocationRange(locationRange) {\n    const domRange = this.createDOMRangeFromLocationRange(locationRange)\n    if (domRange) {\n      return this.getClientRectsForDOMRange(domRange)[1]\n    }\n  }\n\n  locationIsCursorTarget(location) {\n    const node = Array.from(this.findNodeAndOffsetFromLocation(location))[0]\n    return nodeIsCursorTarget(node)\n  }\n\n  lock() {\n    if (this.lockCount++ === 0) {\n      this.updateCurrentLocationRange()\n      this.lockedLocationRange = this.getLocationRange()\n    }\n  }\n\n  unlock() {\n    if (--this.lockCount === 0) {\n      const { lockedLocationRange } = this\n      this.lockedLocationRange = null\n      if (lockedLocationRange != null) {\n        return this.setLocationRange(lockedLocationRange)\n      }\n    }\n  }\n\n  clearSelection() {\n    return getDOMSelection()?.removeAllRanges()\n  }\n\n  selectionIsCollapsed() {\n    return getDOMRange()?.collapsed === true\n  }\n\n  selectionIsExpanded() {\n    return !this.selectionIsCollapsed()\n  }\n\n  createLocationRangeFromDOMRange(domRange, options) {\n    if (domRange == null || !this.domRangeWithinElement(domRange)) return\n\n    const start = this.findLocationFromContainerAndOffset(domRange.startContainer, domRange.startOffset, options)\n    if (!start) return\n\n    const end = domRange.collapsed\n      ? undefined\n      : this.findLocationFromContainerAndOffset(domRange.endContainer, domRange.endOffset, options)\n\n    return normalizeRange([ start, end ])\n  }\n\n  didMouseDown() {\n    return this.pauseTemporarily()\n  }\n\n  pauseTemporarily() {\n    let resumeHandlers\n    this.paused = true\n\n    const resume = () => {\n      this.paused = false\n      clearTimeout(resumeTimeout)\n\n      Array.from(resumeHandlers).forEach((handler) => {\n        handler.destroy()\n      })\n\n      if (elementContainsNode(document, this.element)) {\n        return this.selectionDidChange()\n      }\n    }\n\n    const resumeTimeout = setTimeout(resume, 200)\n\n    resumeHandlers = [ \"mousemove\", \"keydown\" ].map((eventName) =>\n      handleEvent(eventName, { onElement: document, withCallback: resume })\n    )\n  }\n\n  selectionDidChange() {\n    if (!this.paused && !innerElementIsActive(this.element)) {\n      return this.updateCurrentLocationRange()\n    }\n  }\n\n  updateCurrentLocationRange(locationRange) {\n    if (locationRange != null ? locationRange : locationRange = this.createLocationRangeFromDOMRange(getDOMRange())) {\n      if (!rangesAreEqual(locationRange, this.currentLocationRange)) {\n        this.currentLocationRange = locationRange\n        return this.delegate?.locationRangeDidChange?.(this.currentLocationRange.slice(0))\n      }\n    }\n  }\n\n  createDOMRangeFromLocationRange(locationRange) {\n    const rangeStart = this.findContainerAndOffsetFromLocation(locationRange[0])\n    const rangeEnd = rangeIsCollapsed(locationRange)\n      ? rangeStart\n      : this.findContainerAndOffsetFromLocation(locationRange[1]) || rangeStart\n\n    if (rangeStart != null && rangeEnd != null) {\n      const domRange = document.createRange()\n      domRange.setStart(...Array.from(rangeStart || []))\n      domRange.setEnd(...Array.from(rangeEnd || []))\n      return domRange\n    }\n  }\n\n  getLocationAtPoint(point) {\n    const domRange = this.createDOMRangeFromPoint(point)\n    if (domRange) {\n      return this.createLocationRangeFromDOMRange(domRange)?.[0]\n    }\n  }\n\n  domRangeWithinElement(domRange) {\n    if (domRange.collapsed) {\n      return elementContainsNode(this.element, domRange.startContainer)\n    } else {\n      return (\n        elementContainsNode(this.element, domRange.startContainer) &&\n        elementContainsNode(this.element, domRange.endContainer)\n      )\n    }\n  }\n}\n\nSelectionManager.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\")\nSelectionManager.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\")\nSelectionManager.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\")\nSelectionManager.proxyMethod(\"pointMapper.createDOMRangeFromPoint\")\nSelectionManager.proxyMethod(\"pointMapper.getClientRectsForDOMRange\")\n\n", "import { removeNode } from \"trix/core/helpers\"\n\nimport * as config from \"trix/config\"\nimport BasicObject from \"trix/core/basic_object\"\n\nimport { defer, handleEvent, makeElement, tagName, triggerEvent } from \"trix/core/helpers\"\nconst { lang, css, keyNames } = config\n\nconst undoable = function(fn) {\n  return function() {\n    const commands = fn.apply(this, arguments)\n    commands.do()\n    if (!this.undos) {\n      this.undos = []\n    }\n    this.undos.push(commands.undo)\n  }\n}\n\nexport default class AttachmentEditorController extends BasicObject {\n  constructor(attachmentPiece, element, container, options = {}) {\n    super(...arguments)\n    this.didClickToolbar = this.didClickToolbar.bind(this)\n    this.didClickActionButton = this.didClickActionButton.bind(this)\n    this.didKeyDownCaption = this.didKeyDownCaption.bind(this)\n    this.didInputCaption = this.didInputCaption.bind(this)\n    this.didChangeCaption = this.didChangeCaption.bind(this)\n    this.didBlurCaption = this.didBlurCaption.bind(this)\n    this.attachmentPiece = attachmentPiece\n    this.element = element\n    this.container = container\n    this.options = options\n    this.attachment = this.attachmentPiece.attachment\n    if (tagName(this.element) === \"a\") {\n      this.element = this.element.firstChild\n    }\n    this.install()\n  }\n\n  install() {\n    this.makeElementMutable()\n    this.addToolbar()\n    if (this.attachment.isPreviewable()) {\n      this.installCaptionEditor()\n    }\n  }\n\n  uninstall() {\n    let undo = this.undos.pop()\n    this.savePendingCaption()\n    while (undo) {\n      undo()\n      undo = this.undos.pop()\n    }\n    this.delegate?.didUninstallAttachmentEditor(this)\n  }\n\n  // Private\n\n  savePendingCaption() {\n    if (this.pendingCaption != null) {\n      const caption = this.pendingCaption\n      this.pendingCaption = null\n      if (caption) {\n        this.delegate?.attachmentEditorDidRequestUpdatingAttributesForAttachment?.({ caption }, this.attachment)\n      } else {\n        this.delegate?.attachmentEditorDidRequestRemovingAttributeForAttachment?.(\"caption\", this.attachment)\n      }\n    }\n  }\n\n  // Installing and uninstalling\n\n  makeElementMutable = undoable(() => {\n    return {\n      do: () => {\n        this.element.dataset.trixMutable = true\n      },\n      undo: () => delete this.element.dataset.trixMutable,\n    }\n  })\n\n  addToolbar = undoable(() => {\n    // <div class=\"#{css.attachmentMetadataContainer}\" data-trix-mutable=\"true\">\n    //   <div class=\"trix-button-row\">\n    //     <span class=\"trix-button-group trix-button-group--actions\">\n    //       <button type=\"button\" class=\"trix-button trix-button--remove\" title=\"#{lang.remove}\" data-trix-action=\"remove\">#{lang.remove}</button>\n    //     </span>\n    //   </div>\n    // </div>\n    const element = makeElement({\n      tagName: \"div\",\n      className: css.attachmentToolbar,\n      data: { trixMutable: true },\n      childNodes: makeElement({\n        tagName: \"div\",\n        className: \"trix-button-row\",\n        childNodes: makeElement({\n          tagName: \"span\",\n          className: \"trix-button-group trix-button-group--actions\",\n          childNodes: makeElement({\n            tagName: \"button\",\n            className: \"trix-button trix-button--remove\",\n            textContent: lang.remove,\n            attributes: { title: lang.remove },\n            data: { trixAction: \"remove\" },\n          }),\n        }),\n      }),\n    })\n\n    if (this.attachment.isPreviewable()) {\n      // <div class=\"#{css.attachmentMetadataContainer}\">\n      //   <span class=\"#{css.attachmentMetadata}\">\n      //     <span class=\"#{css.attachmentName}\" title=\"#{name}\">#{name}</span>\n      //     <span class=\"#{css.attachmentSize}\">#{size}</span>\n      //   </span>\n      // </div>\n      element.appendChild(\n        makeElement({\n          tagName: \"div\",\n          className: css.attachmentMetadataContainer,\n          childNodes: makeElement({\n            tagName: \"span\",\n            className: css.attachmentMetadata,\n            childNodes: [\n              makeElement({\n                tagName: \"span\",\n                className: css.attachmentName,\n                textContent: this.attachment.getFilename(),\n                attributes: { title: this.attachment.getFilename() },\n              }),\n              makeElement({\n                tagName: \"span\",\n                className: css.attachmentSize,\n                textContent: this.attachment.getFormattedFilesize(),\n              }),\n            ],\n          }),\n        })\n      )\n    }\n\n    handleEvent(\"click\", { onElement: element, withCallback: this.didClickToolbar })\n    handleEvent(\"click\", {\n      onElement: element,\n      matchingSelector: \"[data-trix-action]\",\n      withCallback: this.didClickActionButton,\n    })\n\n    triggerEvent(\"trix-attachment-before-toolbar\", { onElement: this.element, attributes: { toolbar: element, attachment: this.attachment } })\n\n    return {\n      do: () => this.element.appendChild(element),\n      undo: () => removeNode(element),\n    }\n  })\n\n  installCaptionEditor = undoable(() => {\n    const textarea = makeElement({\n      tagName: \"textarea\",\n      className: css.attachmentCaptionEditor,\n      attributes: { placeholder: lang.captionPlaceholder },\n      data: { trixMutable: true },\n    })\n    textarea.value = this.attachmentPiece.getCaption()\n\n    const textareaClone = textarea.cloneNode()\n    textareaClone.classList.add(\"trix-autoresize-clone\")\n    textareaClone.tabIndex = -1\n\n    const autoresize = function() {\n      textareaClone.value = textarea.value\n      textarea.style.height = textareaClone.scrollHeight + \"px\"\n    }\n\n    handleEvent(\"input\", { onElement: textarea, withCallback: autoresize })\n    handleEvent(\"input\", { onElement: textarea, withCallback: this.didInputCaption })\n    handleEvent(\"keydown\", { onElement: textarea, withCallback: this.didKeyDownCaption })\n    handleEvent(\"change\", { onElement: textarea, withCallback: this.didChangeCaption })\n    handleEvent(\"blur\", { onElement: textarea, withCallback: this.didBlurCaption })\n\n    const figcaption = this.element.querySelector(\"figcaption\")\n    const editingFigcaption = figcaption.cloneNode()\n\n    return {\n      do: () => {\n        figcaption.style.display = \"none\"\n        editingFigcaption.appendChild(textarea)\n        editingFigcaption.appendChild(textareaClone)\n        editingFigcaption.classList.add(`${css.attachmentCaption}--editing`)\n        figcaption.parentElement.insertBefore(editingFigcaption, figcaption)\n        autoresize()\n        if (this.options.editCaption) {\n          return defer(() => textarea.focus())\n        }\n      },\n      undo() {\n        removeNode(editingFigcaption)\n        figcaption.style.display = null\n      },\n    }\n  })\n\n  // Event handlers\n\n  didClickToolbar(event) {\n    event.preventDefault()\n    return event.stopPropagation()\n  }\n\n  didClickActionButton(event) {\n    const action = event.target.getAttribute(\"data-trix-action\")\n    switch (action) {\n      case \"remove\":\n        return this.delegate?.attachmentEditorDidRequestRemovalOfAttachment(this.attachment)\n    }\n  }\n\n  didKeyDownCaption(event) {\n    if (keyNames[event.keyCode] === \"return\") {\n      event.preventDefault()\n      this.savePendingCaption()\n      return this.delegate?.attachmentEditorDidRequestDeselectingAttachment?.(this.attachment)\n    }\n  }\n\n  didInputCaption(event) {\n    this.pendingCaption = event.target.value.replace(/\\s/g, \" \").trim()\n  }\n\n  didChangeCaption(event) {\n    return this.savePendingCaption()\n  }\n\n  didBlurCaption(event) {\n    return this.savePendingCaption()\n  }\n}\n", "import BasicObject from \"trix/core/basic_object\"\nimport DocumentView from \"trix/views/document_view\"\nimport AttachmentEditorController from \"trix/controllers/attachment_editor_controller\"\n\nimport { defer, findClosestElementFromNode, handleEvent, innerElementIsActive } from \"trix/core/helpers\"\nimport { attachmentSelector } from \"trix/config/attachments\"\n\nexport default class CompositionController extends BasicObject {\n  constructor(element, composition) {\n    super(...arguments)\n    this.didFocus = this.didFocus.bind(this)\n    this.didBlur = this.didBlur.bind(this)\n    this.didClickAttachment = this.didClickAttachment.bind(this)\n\n    this.element = element\n    this.composition = composition\n    this.documentView = new DocumentView(this.composition.document, { element: this.element })\n\n    handleEvent(\"focus\", { onElement: this.element, withCallback: this.didFocus })\n    handleEvent(\"blur\", { onElement: this.element, withCallback: this.didBlur })\n    handleEvent(\"click\", {\n      onElement: this.element,\n      matchingSelector: \"a[contenteditable=false]\",\n      preventDefault: true,\n    })\n    handleEvent(\"mousedown\", {\n      onElement: this.element,\n      matchingSelector: attachmentSelector,\n      withCallback: this.didClickAttachment,\n    })\n    handleEvent(\"click\", { onElement: this.element, matchingSelector: `a${attachmentSelector}`, preventDefault: true })\n  }\n\n  didFocus(event) {\n    const perform = () => {\n      if (!this.focused) {\n        this.focused = true\n        return this.delegate?.compositionControllerDidFocus?.()\n      }\n    }\n\n    return this.blurPromise?.then(perform) || perform()\n  }\n\n  didBlur(event) {\n    this.blurPromise = new Promise((resolve) => {\n      return defer(() => {\n        if (!innerElementIsActive(this.element)) {\n          this.focused = null\n          this.delegate?.compositionControllerDidBlur?.()\n        }\n        this.blurPromise = null\n        return resolve()\n      })\n    })\n  }\n\n  didClickAttachment(event, target) {\n    const attachment = this.findAttachmentForElement(target)\n    const editCaption = !!findClosestElementFromNode(event.target, { matchingSelector: \"figcaption\" })\n    return this.delegate?.compositionControllerDidSelectAttachment?.(attachment, { editCaption })\n  }\n\n  getSerializableElement() {\n    if (this.isEditingAttachment()) {\n      return this.documentView.shadowElement\n    } else {\n      return this.element\n    }\n  }\n\n  render() {\n    if (this.revision !== this.composition.revision) {\n      this.documentView.setDocument(this.composition.document)\n      this.documentView.render()\n      this.revision = this.composition.revision\n    }\n\n    if (this.canSyncDocumentView() && !this.documentView.isSynced()) {\n      this.delegate?.compositionControllerWillSyncDocumentView?.()\n      this.documentView.sync()\n      this.delegate?.compositionControllerDidSyncDocumentView?.()\n    }\n\n    return this.delegate?.compositionControllerDidRender?.()\n  }\n\n  rerenderViewForObject(object) {\n    this.invalidateViewForObject(object)\n    return this.render()\n  }\n\n  invalidateViewForObject(object) {\n    return this.documentView.invalidateViewForObject(object)\n  }\n\n  isViewCachingEnabled() {\n    return this.documentView.isViewCachingEnabled()\n  }\n\n  enableViewCaching() {\n    return this.documentView.enableViewCaching()\n  }\n\n  disableViewCaching() {\n    return this.documentView.disableViewCaching()\n  }\n\n  refreshViewCache() {\n    return this.documentView.garbageCollectCachedViews()\n  }\n\n  // Attachment editor management\n\n  isEditingAttachment() {\n    return !!this.attachmentEditor\n  }\n\n  installAttachmentEditorForAttachment(attachment, options) {\n    if (this.attachmentEditor?.attachment === attachment) return\n    const element = this.documentView.findElementForObject(attachment)\n    if (!element) return\n\n    this.uninstallAttachmentEditor()\n    const attachmentPiece = this.composition.document.getAttachmentPieceForAttachment(attachment)\n    this.attachmentEditor = new AttachmentEditorController(attachmentPiece, element, this.element, options)\n    this.attachmentEditor.delegate = this\n  }\n\n  uninstallAttachmentEditor() {\n    return this.attachmentEditor?.uninstall()\n  }\n\n  // Attachment controller delegate\n\n  didUninstallAttachmentEditor() {\n    this.attachmentEditor = null\n    return this.render()\n  }\n\n  attachmentEditorDidRequestUpdatingAttributesForAttachment(attributes, attachment) {\n    this.delegate?.compositionControllerWillUpdateAttachment?.(attachment)\n    return this.composition.updateAttributesForAttachment(attributes, attachment)\n  }\n\n  attachmentEditorDidRequestRemovingAttributeForAttachment(attribute, attachment) {\n    this.delegate?.compositionControllerWillUpdateAttachment?.(attachment)\n    return this.composition.removeAttributeForAttachment(attribute, attachment)\n  }\n\n  attachmentEditorDidRequestRemovalOfAttachment(attachment) {\n    return this.delegate?.compositionControllerDidRequestRemovalOfAttachment?.(attachment)\n  }\n\n  attachmentEditorDidRequestDeselectingAttachment(attachment) {\n    return this.delegate?.compositionControllerDidRequestDeselectingAttachment?.(attachment)\n  }\n\n  // Private\n\n  canSyncDocumentView() {\n    return !this.isEditingAttachment()\n  }\n\n  findAttachmentForElement(element) {\n    return this.composition.document.getAttachmentById(parseInt(element.dataset.trixId, 10))\n  }\n}\n", "import \"trix/views/object_view\"\nimport BasicObject from \"trix/core/basic_object\"\n\nexport default class Controller extends BasicObject {}\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport {\n  findClosestElementFromNode,\n  nodeIsBlockStartComment,\n  nodeIsEmptyTextNode,\n  normalizeSpaces,\n  summarizeStringChange,\n  tagName,\n} from \"trix/core/helpers\"\n\nconst mutableAttributeName = \"data-trix-mutable\"\nconst mutableSelector = `[${mutableAttributeName}]`\n\nconst options = {\n  attributes: true,\n  childList: true,\n  characterData: true,\n  characterDataOldValue: true,\n  subtree: true,\n}\n\nexport default class MutationObserver extends BasicObject {\n  constructor(element) {\n    super(element)\n    this.didMutate = this.didMutate.bind(this)\n    this.element = element\n    this.observer = new window.MutationObserver(this.didMutate)\n    this.start()\n  }\n\n  start() {\n    this.reset()\n    return this.observer.observe(this.element, options)\n  }\n\n  stop() {\n    return this.observer.disconnect()\n  }\n\n  didMutate(mutations) {\n    this.mutations.push(...Array.from(this.findSignificantMutations(mutations) || []))\n\n    if (this.mutations.length) {\n      this.delegate?.elementDidMutate?.(this.getMutationSummary())\n      return this.reset()\n    }\n  }\n\n  // Private\n\n  reset() {\n    this.mutations = []\n  }\n\n  findSignificantMutations(mutations) {\n    return mutations.filter((mutation) => {\n      return this.mutationIsSignificant(mutation)\n    })\n  }\n\n  mutationIsSignificant(mutation) {\n    if (this.nodeIsMutable(mutation.target)) {\n      return false\n    }\n    for (const node of Array.from(this.nodesModifiedByMutation(mutation))) {\n      if (this.nodeIsSignificant(node)) return true\n    }\n    return false\n  }\n\n  nodeIsSignificant(node) {\n    return node !== this.element && !this.nodeIsMutable(node) && !nodeIsEmptyTextNode(node)\n  }\n\n  nodeIsMutable(node) {\n    return findClosestElementFromNode(node, { matchingSelector: mutableSelector })\n  }\n\n  nodesModifiedByMutation(mutation) {\n    const nodes = []\n    switch (mutation.type) {\n      case \"attributes\":\n        if (mutation.attributeName !== mutableAttributeName) {\n          nodes.push(mutation.target)\n        }\n        break\n      case \"characterData\":\n        // Changes to text nodes should consider the parent element\n        nodes.push(mutation.target.parentNode)\n        nodes.push(mutation.target)\n        break\n      case \"childList\":\n        // Consider each added or removed node\n        nodes.push(...Array.from(mutation.addedNodes || []))\n        nodes.push(...Array.from(mutation.removedNodes || []))\n        break\n    }\n    return nodes\n  }\n\n  getMutationSummary() {\n    return this.getTextMutationSummary()\n  }\n\n  getTextMutationSummary() {\n    const { additions, deletions } = this.getTextChangesFromCharacterData()\n    const textChanges = this.getTextChangesFromChildList()\n\n    Array.from(textChanges.additions).forEach((addition) => {\n      if (!Array.from(additions).includes(addition)) {\n        additions.push(addition)\n      }\n    })\n\n    deletions.push(...Array.from(textChanges.deletions || []))\n\n    const summary = {}\n\n    const added = additions.join(\"\")\n    if (added) {\n      summary.textAdded = added\n    }\n\n    const deleted = deletions.join(\"\")\n    if (deleted) {\n      summary.textDeleted = deleted\n    }\n\n    return summary\n  }\n\n  getMutationsByType(type) {\n    return Array.from(this.mutations).filter((mutation) => mutation.type === type)\n  }\n\n  getTextChangesFromChildList() {\n    let textAdded, textRemoved\n    const addedNodes = []\n    const removedNodes = []\n\n    Array.from(this.getMutationsByType(\"childList\")).forEach((mutation) => {\n      addedNodes.push(...Array.from(mutation.addedNodes || []))\n      removedNodes.push(...Array.from(mutation.removedNodes || []))\n    })\n\n    const singleBlockCommentRemoved =\n      addedNodes.length === 0 && removedNodes.length === 1 && nodeIsBlockStartComment(removedNodes[0])\n\n    if (singleBlockCommentRemoved) {\n      textAdded = []\n      textRemoved = [ \"\\n\" ]\n    } else {\n      textAdded = getTextForNodes(addedNodes)\n      textRemoved = getTextForNodes(removedNodes)\n    }\n\n    const additions = textAdded.filter((text, index) => text !== textRemoved[index]).map(normalizeSpaces)\n    const deletions = textRemoved.filter((text, index) => text !== textAdded[index]).map(normalizeSpaces)\n\n    return { additions, deletions }\n  }\n\n  getTextChangesFromCharacterData() {\n    let added, removed\n    const characterMutations = this.getMutationsByType(\"characterData\")\n\n    if (characterMutations.length) {\n      const startMutation = characterMutations[0],\n        endMutation = characterMutations[characterMutations.length - 1]\n\n      const oldString = normalizeSpaces(startMutation.oldValue)\n      const newString = normalizeSpaces(endMutation.target.data)\n      const summarized = summarizeStringChange(oldString, newString)\n      added = summarized.added\n      removed = summarized.removed\n    }\n\n    return {\n      additions: added ? [ added ] : [],\n      deletions: removed ? [ removed ] : [],\n    }\n  }\n}\n\nconst getTextForNodes = function(nodes = []) {\n  const text = []\n  for (const node of Array.from(nodes)) {\n    switch (node.nodeType) {\n      case Node.TEXT_NODE:\n        text.push(node.data)\n        break\n      case Node.ELEMENT_NODE:\n        if (tagName(node) === \"br\") {\n          text.push(\"\\n\")\n        } else {\n          text.push(...Array.from(getTextForNodes(node.childNodes) || []))\n        }\n        break\n    }\n  }\n  return text\n}\n", "/* eslint-disable\n    no-empty,\n*/\nimport Operation from \"trix/core/utilities/operation\"\n\nexport default class FileVerificationOperation extends Operation {\n  constructor(file) {\n    super(...arguments)\n    this.file = file\n  }\n\n  perform(callback) {\n    const reader = new FileReader()\n\n    reader.onerror = () => callback(false)\n\n    reader.onload = () => {\n      reader.onerror = null\n      try {\n        reader.abort()\n      } catch (error) {}\n      return callback(true, this.file)\n    }\n\n    return reader.readAsArrayBuffer(this.file)\n  }\n}\n", "import * as config from \"trix/config\"\nimport { NON_BREAKING_SPACE, OBJECT_REPLACEMENT_CHARACTER, ZERO_WIDTH_SPACE } from \"trix/constants\"\n\n// Each software keyboard on Android emits its own set of events and some of them can be buggy.\n// This class detects when some buggy events are being emitted and lets know the input controller\n// that they should be ignored.\nexport default class FlakyAndroidKeyboardDetector {\n  constructor(element) {\n    this.element = element\n  }\n\n  shouldIgnore(event) {\n    if (!config.browser.samsungAndroid) return false\n\n    this.previousEvent = this.event\n    this.event = event\n\n    this.checkSamsungKeyboardBuggyModeStart()\n    this.checkSamsungKeyboardBuggyModeEnd()\n\n    return this.buggyMode\n  }\n\n  // private\n\n  // The Samsung keyboard on Android can enter a buggy state in which it emits a flurry of confused events that,\n  // if processed, corrupts the editor. The buggy mode always starts with an insertText event, right after a\n  // keydown event with for an \"Unidentified\" key, with the same text as the editor element, except for a few\n  // extra whitespace, or exotic utf8, characters.\n  checkSamsungKeyboardBuggyModeStart() {\n    if (this.insertingLongTextAfterUnidentifiedChar() && differsInWhitespace(this.element.innerText, this.event.data)) {\n      this.buggyMode = true\n      this.event.preventDefault()\n    }\n  }\n\n  // The flurry of buggy events are always insertText. If we see any other type, it means it's over.\n  checkSamsungKeyboardBuggyModeEnd() {\n    if (this.buggyMode && this.event.inputType !== \"insertText\") {\n      this.buggyMode = false\n    }\n  }\n\n  insertingLongTextAfterUnidentifiedChar() {\n    return this.isBeforeInputInsertText() && this.previousEventWasUnidentifiedKeydown() && this.event.data?.length > 50\n  }\n\n  isBeforeInputInsertText() {\n    return this.event.type === \"beforeinput\" && this.event.inputType === \"insertText\"\n  }\n\n  previousEventWasUnidentifiedKeydown() {\n    return this.previousEvent?.type === \"keydown\" && this.previousEvent?.key === \"Unidentified\"\n  }\n}\n\nconst differsInWhitespace = (text1, text2) => {\n  return normalize(text1) === normalize(text2)\n}\n\nconst whiteSpaceNormalizerRegexp = new RegExp(`(${OBJECT_REPLACEMENT_CHARACTER}|${ZERO_WIDTH_SPACE}|${NON_BREAKING_SPACE}|\\\\s)+`, \"g\")\nconst normalize = (text) => text.replace(whiteSpaceNormalizerRegexp, \" \").trim()\n", "import BasicObject from \"trix/core/basic_object\"\nimport MutationObserver from \"trix/observers/mutation_observer\"\nimport FileVerificationOperation from \"trix/operations/file_verification_operation\"\nimport FlakyAndroidKeyboardDetector from \"../models/flaky_android_keyboard_detector\"\n\nimport { handleEvent, innerElementIsActive } from \"trix/core/helpers\"\n\nexport default class InputController extends BasicObject {\n\n  static events = {}\n\n  constructor(element) {\n    super(...arguments)\n    this.element = element\n    this.mutationObserver = new MutationObserver(this.element)\n    this.mutationObserver.delegate = this\n    this.flakyKeyboardDetector = new FlakyAndroidKeyboardDetector(this.element)\n    for (const eventName in this.constructor.events) {\n      handleEvent(eventName, { onElement: this.element, withCallback: this.handlerFor(eventName) })\n    }\n  }\n\n  elementDidMutate(mutationSummary) {}\n\n  editorWillSyncDocumentView() {\n    return this.mutationObserver.stop()\n  }\n\n  editorDidSyncDocumentView() {\n    return this.mutationObserver.start()\n  }\n\n  requestRender() {\n    return this.delegate?.inputControllerDidRequestRender?.()\n  }\n\n  requestReparse() {\n    this.delegate?.inputControllerDidRequestReparse?.()\n    return this.requestRender()\n  }\n\n  attachFiles(files) {\n    const operations = Array.from(files).map((file) => new FileVerificationOperation(file))\n    return Promise.all(operations).then((files) => {\n      this.handleInput(function() {\n        this.delegate?.inputControllerWillAttachFiles()\n        this.responder?.insertFiles(files)\n        return this.requestRender()\n      })\n    })\n  }\n\n  // Private\n\n  handlerFor(eventName) {\n    return (event) => {\n      if (!event.defaultPrevented) {\n        this.handleInput(() => {\n          if (!innerElementIsActive(this.element)) {\n            if (this.flakyKeyboardDetector.shouldIgnore(event)) return\n\n            this.eventName = eventName\n            this.constructor.events[eventName].call(this, event)\n          }\n        })\n      }\n    }\n  }\n\n  handleInput(callback) {\n    try {\n      this.delegate?.inputControllerWillHandleInput()\n      callback.call(this)\n    } finally {\n      this.delegate?.inputControllerDidHandleInput()\n    }\n  }\n\n  createLinkHTML(href, text) {\n    const link = document.createElement(\"a\")\n    link.href = href\n    link.textContent = text ? text : href\n    return link.outerHTML\n  }\n}\n\n", "import * as config from \"trix/config\"\nimport UTF16String from \"trix/core/utilities/utf16_string\"\nimport BasicObject from \"trix/core/basic_object\"\nimport InputController from \"trix/controllers/input_controller\"\nimport DocumentView from \"trix/views/document_view\"\nimport Document from \"trix/models/document\"\n\nimport {\n  dataTransferIsPlainText,\n  dataTransferIsWritable,\n  keyEventIsKeyboardCommand,\n  makeElement,\n  objectsAreEqual,\n  removeNode,\n  squishBreakableWhitespace,\n} from \"trix/core/helpers\"\n\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nconst { browser, keyNames } = config\nlet pastedFileCount = 0\n\nexport default class Level0InputController extends InputController {\n\n  static events = {\n    keydown(event) {\n      if (!this.isComposing()) {\n        this.resetInputSummary()\n      }\n      this.inputSummary.didInput = true\n\n      const keyName = keyNames[event.keyCode]\n      if (keyName) {\n        let context = this.keys\n\n        ;[ \"ctrl\", \"alt\", \"shift\", \"meta\" ].forEach((modifier) => {\n          if (event[`${modifier}Key`]) {\n            if (modifier === \"ctrl\") {\n              modifier = \"control\"\n            }\n            context = context?.[modifier]\n          }\n        })\n\n        if (context?.[keyName] != null) {\n          this.setInputSummary({ keyName })\n          selectionChangeObserver.reset()\n          context[keyName].call(this, event)\n        }\n      }\n\n      if (keyEventIsKeyboardCommand(event)) {\n        const character = String.fromCharCode(event.keyCode).toLowerCase()\n        if (character) {\n          const keys = [ \"alt\", \"shift\" ].map((modifier) => {\n            if (event[`${modifier}Key`]) {\n              return modifier\n            }\n          }).filter(key => key)\n          keys.push(character)\n          if (this.delegate?.inputControllerDidReceiveKeyboardCommand(keys)) {\n            event.preventDefault()\n          }\n        }\n      }\n    },\n\n    keypress(event) {\n      if (this.inputSummary.eventName != null) return\n      if (event.metaKey) return\n      if (event.ctrlKey && !event.altKey) return\n\n      const string = stringFromKeyEvent(event)\n      if (string) {\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.insertString(string)\n        return this.setInputSummary({ textAdded: string, didDelete: this.selectionIsExpanded() })\n      }\n    },\n\n    textInput(event) {\n      // Handle autocapitalization\n      const { data } = event\n      const { textAdded } = this.inputSummary\n      if (textAdded && textAdded !== data && textAdded.toUpperCase() === data) {\n        const range = this.getSelectedRange()\n        this.setSelectedRange([ range[0], range[1] + textAdded.length ])\n        this.responder?.insertString(data)\n        this.setInputSummary({ textAdded: data })\n        return this.setSelectedRange(range)\n      }\n    },\n\n    dragenter(event) {\n      event.preventDefault()\n    },\n\n    dragstart(event) {\n      this.serializeSelectionToDataTransfer(event.dataTransfer)\n      this.draggedRange = this.getSelectedRange()\n      return this.delegate?.inputControllerDidStartDrag?.()\n    },\n\n    dragover(event) {\n      if (this.draggedRange || this.canAcceptDataTransfer(event.dataTransfer)) {\n        event.preventDefault()\n        const draggingPoint = { x: event.clientX, y: event.clientY }\n        if (!objectsAreEqual(draggingPoint, this.draggingPoint)) {\n          this.draggingPoint = draggingPoint\n          return this.delegate?.inputControllerDidReceiveDragOverPoint?.(this.draggingPoint)\n        }\n      }\n    },\n\n    dragend(event) {\n      this.delegate?.inputControllerDidCancelDrag?.()\n      this.draggedRange = null\n      this.draggingPoint = null\n    },\n\n    drop(event) {\n      event.preventDefault()\n      const files = event.dataTransfer?.files\n      const documentJSON = event.dataTransfer.getData(\"application/x-trix-document\")\n\n      const point = { x: event.clientX, y: event.clientY }\n      this.responder?.setLocationRangeFromPointRange(point)\n\n      if (files?.length) {\n        this.attachFiles(files)\n      } else if (this.draggedRange) {\n        this.delegate?.inputControllerWillMoveText()\n        this.responder?.moveTextFromRange(this.draggedRange)\n        this.draggedRange = null\n        this.requestRender()\n      } else if (documentJSON) {\n        const document = Document.fromJSONString(documentJSON)\n        this.responder?.insertDocument(document)\n        this.requestRender()\n      }\n\n      this.draggedRange = null\n      this.draggingPoint = null\n    },\n\n    cut(event) {\n      if (this.responder?.selectionIsExpanded()) {\n        if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n          event.preventDefault()\n        }\n\n        this.delegate?.inputControllerWillCutText()\n        this.deleteInDirection(\"backward\")\n        if (event.defaultPrevented) {\n          return this.requestRender()\n        }\n      }\n    },\n\n    copy(event) {\n      if (this.responder?.selectionIsExpanded()) {\n        if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n          event.preventDefault()\n        }\n      }\n    },\n\n    paste(event) {\n      const clipboard = event.clipboardData || event.testClipboardData\n      const paste = { clipboard }\n\n      if (!clipboard || pasteEventIsCrippledSafariHTMLPaste(event)) {\n        this.getPastedHTMLUsingHiddenElement((html) => {\n          paste.type = \"text/html\"\n          paste.html = html\n          this.delegate?.inputControllerWillPaste(paste)\n          this.responder?.insertHTML(paste.html)\n          this.requestRender()\n          return this.delegate?.inputControllerDidPaste(paste)\n        })\n        return\n      }\n\n      const href = clipboard.getData(\"URL\")\n      const html = clipboard.getData(\"text/html\")\n      const name = clipboard.getData(\"public.url-name\")\n\n      if (href) {\n        let string\n        paste.type = \"text/html\"\n        if (name) {\n          string = squishBreakableWhitespace(name).trim()\n        } else {\n          string = href\n        }\n        paste.html = this.createLinkHTML(href, string)\n        this.delegate?.inputControllerWillPaste(paste)\n        this.setInputSummary({ textAdded: string, didDelete: this.selectionIsExpanded() })\n        this.responder?.insertHTML(paste.html)\n        this.requestRender()\n        this.delegate?.inputControllerDidPaste(paste)\n      } else if (dataTransferIsPlainText(clipboard)) {\n        paste.type = \"text/plain\"\n        paste.string = clipboard.getData(\"text/plain\")\n        this.delegate?.inputControllerWillPaste(paste)\n        this.setInputSummary({ textAdded: paste.string, didDelete: this.selectionIsExpanded() })\n        this.responder?.insertString(paste.string)\n        this.requestRender()\n        this.delegate?.inputControllerDidPaste(paste)\n      } else if (html) {\n        paste.type = \"text/html\"\n        paste.html = html\n        this.delegate?.inputControllerWillPaste(paste)\n        this.responder?.insertHTML(paste.html)\n        this.requestRender()\n        this.delegate?.inputControllerDidPaste(paste)\n      } else if (Array.from(clipboard.types).includes(\"Files\")) {\n        const file = clipboard.items?.[0]?.getAsFile?.()\n        if (file) {\n          const extension = extensionForFile(file)\n          if (!file.name && extension) {\n            file.name = `pasted-file-${++pastedFileCount}.${extension}`\n          }\n          paste.type = \"File\"\n          paste.file = file\n          this.delegate?.inputControllerWillAttachFiles()\n          this.responder?.insertFile(paste.file)\n          this.requestRender()\n          this.delegate?.inputControllerDidPaste(paste)\n        }\n      }\n\n      event.preventDefault()\n    },\n\n    compositionstart(event) {\n      return this.getCompositionInput().start(event.data)\n    },\n\n    compositionupdate(event) {\n      return this.getCompositionInput().update(event.data)\n    },\n\n    compositionend(event) {\n      return this.getCompositionInput().end(event.data)\n    },\n\n    beforeinput(event) {\n      this.inputSummary.didInput = true\n    },\n\n    input(event) {\n      this.inputSummary.didInput = true\n      return event.stopPropagation()\n    },\n  }\n\n  static keys = {\n    backspace(event) {\n      this.delegate?.inputControllerWillPerformTyping()\n      return this.deleteInDirection(\"backward\", event)\n    },\n\n    delete(event) {\n      this.delegate?.inputControllerWillPerformTyping()\n      return this.deleteInDirection(\"forward\", event)\n    },\n\n    return(event) {\n      this.setInputSummary({ preferDocument: true })\n      this.delegate?.inputControllerWillPerformTyping()\n      return this.responder?.insertLineBreak()\n    },\n\n    tab(event) {\n      if (this.responder?.canIncreaseNestingLevel()) {\n        this.responder?.increaseNestingLevel()\n        this.requestRender()\n        event.preventDefault()\n      }\n    },\n\n    left(event) {\n      if (this.selectionIsInCursorTarget()) {\n        event.preventDefault()\n        return this.responder?.moveCursorInDirection(\"backward\")\n      }\n    },\n\n    right(event) {\n      if (this.selectionIsInCursorTarget()) {\n        event.preventDefault()\n        return this.responder?.moveCursorInDirection(\"forward\")\n      }\n    },\n\n    control: {\n      d(event) {\n        this.delegate?.inputControllerWillPerformTyping()\n        return this.deleteInDirection(\"forward\", event)\n      },\n\n      h(event) {\n        this.delegate?.inputControllerWillPerformTyping()\n        return this.deleteInDirection(\"backward\", event)\n      },\n\n      o(event) {\n        event.preventDefault()\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.insertString(\"\\n\", { updatePosition: false })\n        return this.requestRender()\n      },\n    },\n\n    shift: {\n      return(event) {\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.insertString(\"\\n\")\n        this.requestRender()\n        event.preventDefault()\n      },\n\n      tab(event) {\n        if (this.responder?.canDecreaseNestingLevel()) {\n          this.responder?.decreaseNestingLevel()\n          this.requestRender()\n          event.preventDefault()\n        }\n      },\n\n      left(event) {\n        if (this.selectionIsInCursorTarget()) {\n          event.preventDefault()\n          return this.expandSelectionInDirection(\"backward\")\n        }\n      },\n\n      right(event) {\n        if (this.selectionIsInCursorTarget()) {\n          event.preventDefault()\n          return this.expandSelectionInDirection(\"forward\")\n        }\n      },\n    },\n\n    alt: {\n      backspace(event) {\n        this.setInputSummary({ preferDocument: false })\n        return this.delegate?.inputControllerWillPerformTyping()\n      },\n    },\n\n    meta: {\n      backspace(event) {\n        this.setInputSummary({ preferDocument: false })\n        return this.delegate?.inputControllerWillPerformTyping()\n      },\n    },\n  }\n\n  constructor() {\n    super(...arguments)\n    this.resetInputSummary()\n  }\n\n  setInputSummary(summary = {}) {\n    this.inputSummary.eventName = this.eventName\n    for (const key in summary) {\n      const value = summary[key]\n      this.inputSummary[key] = value\n    }\n    return this.inputSummary\n  }\n\n  resetInputSummary() {\n    this.inputSummary = {}\n  }\n\n  reset() {\n    this.resetInputSummary()\n    return selectionChangeObserver.reset()\n  }\n\n  // Mutation observer delegate\n\n  elementDidMutate(mutationSummary) {\n    if (this.isComposing()) {\n      return this.delegate?.inputControllerDidAllowUnhandledInput?.()\n    } else {\n      return this.handleInput(function() {\n        if (this.mutationIsSignificant(mutationSummary)) {\n          if (this.mutationIsExpected(mutationSummary)) {\n            this.requestRender()\n          } else {\n            this.requestReparse()\n          }\n        }\n        return this.reset()\n      })\n    }\n  }\n\n  mutationIsExpected({ textAdded, textDeleted }) {\n    if (this.inputSummary.preferDocument) {\n      return true\n    }\n\n    const mutationAdditionMatchesSummary =\n      textAdded != null ? textAdded === this.inputSummary.textAdded : !this.inputSummary.textAdded\n    const mutationDeletionMatchesSummary =\n      textDeleted != null ? this.inputSummary.didDelete : !this.inputSummary.didDelete\n\n    const unexpectedNewlineAddition = [ \"\\n\", \" \\n\" ].includes(textAdded) && !mutationAdditionMatchesSummary\n    const unexpectedNewlineDeletion = textDeleted === \"\\n\" && !mutationDeletionMatchesSummary\n    const singleUnexpectedNewline =\n      unexpectedNewlineAddition && !unexpectedNewlineDeletion ||\n      unexpectedNewlineDeletion && !unexpectedNewlineAddition\n\n    if (singleUnexpectedNewline) {\n      const range = this.getSelectedRange()\n      if (range) {\n        const offset = unexpectedNewlineAddition ? textAdded.replace(/\\n$/, \"\").length || -1 : textAdded?.length || 1\n        if (this.responder?.positionIsBlockBreak(range[1] + offset)) {\n          return true\n        }\n      }\n    }\n\n    return mutationAdditionMatchesSummary && mutationDeletionMatchesSummary\n  }\n\n  mutationIsSignificant(mutationSummary) {\n    const textChanged = Object.keys(mutationSummary).length > 0\n    const composedEmptyString = this.compositionInput?.getEndData() === \"\"\n    return textChanged || !composedEmptyString\n  }\n\n  // Private\n\n  getCompositionInput() {\n    if (this.isComposing()) {\n      return this.compositionInput\n    } else {\n      this.compositionInput = new CompositionInput(this)\n    }\n  }\n\n  isComposing() {\n    return this.compositionInput && !this.compositionInput.isEnded()\n  }\n\n  deleteInDirection(direction, event) {\n    if (this.responder?.deleteInDirection(direction) === false) {\n      if (event) {\n        event.preventDefault()\n        return this.requestRender()\n      }\n    } else {\n      return this.setInputSummary({ didDelete: true })\n    }\n  }\n\n  serializeSelectionToDataTransfer(dataTransfer) {\n    if (!dataTransferIsWritable(dataTransfer)) return\n    const document = this.responder?.getSelectedDocument().toSerializableDocument()\n\n    dataTransfer.setData(\"application/x-trix-document\", JSON.stringify(document))\n    dataTransfer.setData(\"text/html\", DocumentView.render(document).innerHTML)\n    dataTransfer.setData(\"text/plain\", document.toString().replace(/\\n$/, \"\"))\n    return true\n  }\n\n  canAcceptDataTransfer(dataTransfer) {\n    const types = {}\n    Array.from(dataTransfer?.types || []).forEach((type) => {\n      types[type] = true\n    })\n    return types.Files || types[\"application/x-trix-document\"] || types[\"text/html\"] || types[\"text/plain\"]\n  }\n\n  getPastedHTMLUsingHiddenElement(callback) {\n    const selectedRange = this.getSelectedRange()\n\n    const style = {\n      position: \"absolute\",\n      left: `${window.pageXOffset}px`,\n      top: `${window.pageYOffset}px`,\n      opacity: 0,\n    }\n\n    const element = makeElement({ style, tagName: \"div\", editable: true })\n    document.body.appendChild(element)\n    element.focus()\n\n    return requestAnimationFrame(() => {\n      const html = element.innerHTML\n      removeNode(element)\n      this.setSelectedRange(selectedRange)\n      return callback(html)\n    })\n  }\n}\n\nLevel0InputController.proxyMethod(\"responder?.getSelectedRange\")\nLevel0InputController.proxyMethod(\"responder?.setSelectedRange\")\nLevel0InputController.proxyMethod(\"responder?.expandSelectionInDirection\")\nLevel0InputController.proxyMethod(\"responder?.selectionIsInCursorTarget\")\nLevel0InputController.proxyMethod(\"responder?.selectionIsExpanded\")\n\nconst extensionForFile = (file) => file.type?.match(/\\/(\\w+)$/)?.[1]\n\nconst hasStringCodePointAt = !!\" \".codePointAt?.(0)\n\nconst stringFromKeyEvent = function(event) {\n  if (event.key && hasStringCodePointAt && event.key.codePointAt(0) === event.keyCode) {\n    return event.key\n  } else {\n    let code\n    if (event.which === null) {\n      code = event.keyCode\n    } else if (event.which !== 0 && event.charCode !== 0) {\n      code = event.charCode\n    }\n\n    if (code != null && keyNames[code] !== \"escape\") {\n      return UTF16String.fromCodepoints([ code ]).toString()\n    }\n  }\n}\n\nconst pasteEventIsCrippledSafariHTMLPaste = function(event) {\n  const paste = event.clipboardData\n  if (paste) {\n    if (paste.types.includes(\"text/html\")) {\n      // Answer is yes if there's any possibility of Paste and Match Style in Safari,\n      // which is nearly impossible to detect confidently: https://bugs.webkit.org/show_bug.cgi?id=174165\n      for (const type of paste.types) {\n        const hasPasteboardFlavor = /^CorePasteboardFlavorType/.test(type)\n        const hasReadableDynamicData = /^dyn\\./.test(type) && paste.getData(type)\n        const mightBePasteAndMatchStyle = hasPasteboardFlavor || hasReadableDynamicData\n        if (mightBePasteAndMatchStyle) {\n          return true\n        }\n      }\n      return false\n    } else {\n      const isExternalHTMLPaste = paste.types.includes(\"com.apple.webarchive\")\n      const isExternalRichTextPaste = paste.types.includes(\"com.apple.flat-rtfd\")\n      return isExternalHTMLPaste || isExternalRichTextPaste\n    }\n  }\n}\n\nclass CompositionInput extends BasicObject {\n  constructor(inputController) {\n    super(...arguments)\n    this.inputController = inputController\n    this.responder = this.inputController.responder\n    this.delegate = this.inputController.delegate\n    this.inputSummary = this.inputController.inputSummary\n    this.data = {}\n  }\n\n  start(data) {\n    this.data.start = data\n\n    if (this.isSignificant()) {\n      if (this.inputSummary.eventName === \"keypress\" && this.inputSummary.textAdded) {\n        this.responder?.deleteInDirection(\"left\")\n      }\n\n      if (!this.selectionIsExpanded()) {\n        this.insertPlaceholder()\n        this.requestRender()\n      }\n\n      this.range = this.responder?.getSelectedRange()\n    }\n  }\n\n  update(data) {\n    this.data.update = data\n\n    if (this.isSignificant()) {\n      const range = this.selectPlaceholder()\n      if (range) {\n        this.forgetPlaceholder()\n        this.range = range\n      }\n    }\n  }\n\n  end(data) {\n    this.data.end = data\n\n    if (this.isSignificant()) {\n      this.forgetPlaceholder()\n\n      if (this.canApplyToDocument()) {\n        this.setInputSummary({ preferDocument: true, didInput: false })\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.setSelectedRange(this.range)\n        this.responder?.insertString(this.data.end)\n        return this.responder?.setSelectedRange(this.range[0] + this.data.end.length)\n      } else if (this.data.start != null || this.data.update != null) {\n        this.requestReparse()\n        return this.inputController.reset()\n      }\n    } else {\n      return this.inputController.reset()\n    }\n  }\n\n  getEndData() {\n    return this.data.end\n  }\n\n  isEnded() {\n    return this.getEndData() != null\n  }\n\n  isSignificant() {\n    if (browser.composesExistingText) {\n      return this.inputSummary.didInput\n    } else {\n      return true\n    }\n  }\n\n  // Private\n\n  canApplyToDocument() {\n    return this.data.start?.length === 0 && this.data.end?.length > 0 && this.range\n  }\n}\n\nCompositionInput.proxyMethod(\"inputController.setInputSummary\")\nCompositionInput.proxyMethod(\"inputController.requestRender\")\nCompositionInput.proxyMethod(\"inputController.requestReparse\")\nCompositionInput.proxyMethod(\"responder?.selectionIsExpanded\")\nCompositionInput.proxyMethod(\"responder?.insertPlaceholder\")\nCompositionInput.proxyMethod(\"responder?.selectPlaceholder\")\nCompositionInput.proxyMethod(\"responder?.forgetPlaceholder\")\n", "import { getAllAttributeNames, shouldRenderInmmediatelyToDealWithIOSDictation, squishBreakableWhitespace } from \"trix/core/helpers\"\nimport InputController from \"trix/controllers/input_controller\"\nimport * as config from \"trix/config\"\n\nimport { dataTransferIsMsOfficePaste, dataTransferIsPlainText, keyEventIsKeyboardCommand, objectsAreEqual } from \"trix/core/helpers\"\n\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nexport default class Level2InputController extends InputController {\n  constructor(...args) {\n    super(...args)\n    this.render = this.render.bind(this)\n  }\n\n  static events = {\n    keydown(event) {\n      if (keyEventIsKeyboardCommand(event)) {\n        const command = keyboardCommandFromKeyEvent(event)\n        if (this.delegate?.inputControllerDidReceiveKeyboardCommand(command)) {\n          event.preventDefault()\n        }\n      } else {\n        let name = event.key\n        if (event.altKey) {\n          name += \"+Alt\"\n        }\n        if (event.shiftKey) {\n          name += \"+Shift\"\n        }\n        const handler = this.constructor.keys[name]\n        if (handler) {\n          return this.withEvent(event, handler)\n        }\n      }\n    },\n\n    // Handle paste event to work around beforeinput.insertFromPaste browser bugs.\n    // Safe to remove each condition once fixed upstream.\n    paste(event) {\n      // https://bugs.webkit.org/show_bug.cgi?id=194921\n      let paste\n      const href = event.clipboardData?.getData(\"URL\")\n      if (pasteEventHasFilesOnly(event)) {\n        event.preventDefault()\n        return this.attachFiles(event.clipboardData.files)\n\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=934448\n      } else if (pasteEventHasPlainTextOnly(event)) {\n        event.preventDefault()\n        paste = {\n          type: \"text/plain\",\n          string: event.clipboardData.getData(\"text/plain\"),\n        }\n        this.delegate?.inputControllerWillPaste(paste)\n        this.responder?.insertString(paste.string)\n        this.render()\n        return this.delegate?.inputControllerDidPaste(paste)\n\n        // https://bugs.webkit.org/show_bug.cgi?id=196702\n      } else if (href) {\n        event.preventDefault()\n        paste = {\n          type: \"text/html\",\n          html: this.createLinkHTML(href),\n        }\n        this.delegate?.inputControllerWillPaste(paste)\n        this.responder?.insertHTML(paste.html)\n        this.render()\n        return this.delegate?.inputControllerDidPaste(paste)\n      }\n    },\n\n    beforeinput(event) {\n      const handler = this.constructor.inputTypes[event.inputType]\n\n      const immmediateRender = shouldRenderInmmediatelyToDealWithIOSDictation(event)\n\n      if (handler) {\n        this.withEvent(event, handler)\n\n        if (!immmediateRender) {\n          this.scheduleRender()\n        }\n      }\n\n      if (immmediateRender) {\n        this.render()\n      }\n    },\n\n    input(event) {\n      selectionChangeObserver.reset()\n    },\n\n    dragstart(event) {\n      if (this.responder?.selectionContainsAttachments()) {\n        event.dataTransfer.setData(\"application/x-trix-dragging\", true)\n\n        this.dragging = {\n          range: this.responder?.getSelectedRange(),\n          point: pointFromEvent(event),\n        }\n      }\n    },\n\n    dragenter(event) {\n      if (dragEventHasFiles(event)) {\n        event.preventDefault()\n      }\n    },\n\n    dragover(event) {\n      if (this.dragging) {\n        event.preventDefault()\n        const point = pointFromEvent(event)\n        if (!objectsAreEqual(point, this.dragging.point)) {\n          this.dragging.point = point\n          return this.responder?.setLocationRangeFromPointRange(point)\n        }\n      } else if (dragEventHasFiles(event)) {\n        event.preventDefault()\n      }\n    },\n\n    drop(event) {\n      if (this.dragging) {\n        event.preventDefault()\n        this.delegate?.inputControllerWillMoveText()\n        this.responder?.moveTextFromRange(this.dragging.range)\n        this.dragging = null\n        return this.scheduleRender()\n      } else if (dragEventHasFiles(event)) {\n        event.preventDefault()\n        const point = pointFromEvent(event)\n        this.responder?.setLocationRangeFromPointRange(point)\n        return this.attachFiles(event.dataTransfer.files)\n      }\n    },\n\n    dragend() {\n      if (this.dragging) {\n        this.responder?.setSelectedRange(this.dragging.range)\n        this.dragging = null\n      }\n    },\n\n    compositionend(event) {\n      if (this.composing) {\n        this.composing = false\n        if (!config.browser.recentAndroid) this.scheduleRender()\n      }\n    },\n  }\n\n  static keys = {\n    ArrowLeft() {\n      if (this.responder?.shouldManageMovingCursorInDirection(\"backward\")) {\n        this.event.preventDefault()\n        return this.responder?.moveCursorInDirection(\"backward\")\n      }\n    },\n\n    ArrowRight() {\n      if (this.responder?.shouldManageMovingCursorInDirection(\"forward\")) {\n        this.event.preventDefault()\n        return this.responder?.moveCursorInDirection(\"forward\")\n      }\n    },\n\n    Backspace() {\n      if (this.responder?.shouldManageDeletingInDirection(\"backward\")) {\n        this.event.preventDefault()\n        this.delegate?.inputControllerWillPerformTyping()\n        this.responder?.deleteInDirection(\"backward\")\n        return this.render()\n      }\n    },\n\n    Tab() {\n      if (this.responder?.canIncreaseNestingLevel()) {\n        this.event.preventDefault()\n        this.responder?.increaseNestingLevel()\n        return this.render()\n      }\n    },\n\n    \"Tab+Shift\"() {\n      if (this.responder?.canDecreaseNestingLevel()) {\n        this.event.preventDefault()\n        this.responder?.decreaseNestingLevel()\n        return this.render()\n      }\n    },\n  }\n\n  static inputTypes = {\n    deleteByComposition() {\n      return this.deleteInDirection(\"backward\", { recordUndoEntry: false })\n    },\n\n    deleteByCut() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteByDrag() {\n      this.event.preventDefault()\n      return this.withTargetDOMRange(function() {\n        this.deleteByDragRange = this.responder?.getSelectedRange()\n      })\n    },\n\n    deleteCompositionText() {\n      return this.deleteInDirection(\"backward\", { recordUndoEntry: false })\n    },\n\n    deleteContent() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteContentBackward() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteContentForward() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    deleteEntireSoftLine() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    deleteHardLineBackward() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteHardLineForward() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    deleteSoftLineBackward() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteSoftLineForward() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    deleteWordBackward() {\n      return this.deleteInDirection(\"backward\")\n    },\n\n    deleteWordForward() {\n      return this.deleteInDirection(\"forward\")\n    },\n\n    formatBackColor() {\n      return this.activateAttributeIfSupported(\"backgroundColor\", this.event.data)\n    },\n\n    formatBold() {\n      return this.toggleAttributeIfSupported(\"bold\")\n    },\n\n    formatFontColor() {\n      return this.activateAttributeIfSupported(\"color\", this.event.data)\n    },\n\n    formatFontName() {\n      return this.activateAttributeIfSupported(\"font\", this.event.data)\n    },\n\n    formatIndent() {\n      if (this.responder?.canIncreaseNestingLevel()) {\n        return this.withTargetDOMRange(function() {\n          return this.responder?.increaseNestingLevel()\n        })\n      }\n    },\n\n    formatItalic() {\n      return this.toggleAttributeIfSupported(\"italic\")\n    },\n\n    formatJustifyCenter() {\n      return this.toggleAttributeIfSupported(\"justifyCenter\")\n    },\n\n    formatJustifyFull() {\n      return this.toggleAttributeIfSupported(\"justifyFull\")\n    },\n\n    formatJustifyLeft() {\n      return this.toggleAttributeIfSupported(\"justifyLeft\")\n    },\n\n    formatJustifyRight() {\n      return this.toggleAttributeIfSupported(\"justifyRight\")\n    },\n\n    formatOutdent() {\n      if (this.responder?.canDecreaseNestingLevel()) {\n        return this.withTargetDOMRange(function() {\n          return this.responder?.decreaseNestingLevel()\n        })\n      }\n    },\n\n    formatRemove() {\n      this.withTargetDOMRange(function() {\n        for (const attributeName in this.responder?.getCurrentAttributes()) {\n          this.responder?.removeCurrentAttribute(attributeName)\n        }\n      })\n    },\n\n    formatSetBlockTextDirection() {\n      return this.activateAttributeIfSupported(\"blockDir\", this.event.data)\n    },\n\n    formatSetInlineTextDirection() {\n      return this.activateAttributeIfSupported(\"textDir\", this.event.data)\n    },\n\n    formatStrikeThrough() {\n      return this.toggleAttributeIfSupported(\"strike\")\n    },\n\n    formatSubscript() {\n      return this.toggleAttributeIfSupported(\"sub\")\n    },\n\n    formatSuperscript() {\n      return this.toggleAttributeIfSupported(\"sup\")\n    },\n\n    formatUnderline() {\n      return this.toggleAttributeIfSupported(\"underline\")\n    },\n\n    historyRedo() {\n      return this.delegate?.inputControllerWillPerformRedo()\n    },\n\n    historyUndo() {\n      return this.delegate?.inputControllerWillPerformUndo()\n    },\n\n    insertCompositionText() {\n      this.composing = true\n      return this.insertString(this.event.data)\n    },\n\n    insertFromComposition() {\n      this.composing = false\n      return this.insertString(this.event.data)\n    },\n\n    insertFromDrop() {\n      const range = this.deleteByDragRange\n      if (range) {\n        this.deleteByDragRange = null\n        this.delegate?.inputControllerWillMoveText()\n        return this.withTargetDOMRange(function() {\n          return this.responder?.moveTextFromRange(range)\n        })\n      }\n    },\n\n    insertFromPaste() {\n      const { dataTransfer } = this.event\n      const paste = { dataTransfer }\n\n      const href = dataTransfer.getData(\"URL\")\n      const html = dataTransfer.getData(\"text/html\")\n\n      if (href) {\n        let string\n        this.event.preventDefault()\n        paste.type = \"text/html\"\n        const name = dataTransfer.getData(\"public.url-name\")\n        if (name) {\n          string = squishBreakableWhitespace(name).trim()\n        } else {\n          string = href\n        }\n        paste.html = this.createLinkHTML(href, string)\n        this.delegate?.inputControllerWillPaste(paste)\n        this.withTargetDOMRange(function() {\n          return this.responder?.insertHTML(paste.html)\n        })\n        this.afterRender = () => {\n          return this.delegate?.inputControllerDidPaste(paste)\n        }\n      } else if (dataTransferIsPlainText(dataTransfer)) {\n        paste.type = \"text/plain\"\n        paste.string = dataTransfer.getData(\"text/plain\")\n        this.delegate?.inputControllerWillPaste(paste)\n        this.withTargetDOMRange(function() {\n          return this.responder?.insertString(paste.string)\n        })\n\n        this.afterRender = () => {\n          return this.delegate?.inputControllerDidPaste(paste)\n        }\n      } else if (processableFilePaste(this.event)) {\n        paste.type = \"File\"\n        paste.file = dataTransfer.files[0]\n        this.delegate?.inputControllerWillPaste(paste)\n        this.withTargetDOMRange(function() {\n          return this.responder?.insertFile(paste.file)\n        })\n\n        this.afterRender = () => {\n          return this.delegate?.inputControllerDidPaste(paste)\n        }\n      } else if (html) {\n        this.event.preventDefault()\n        paste.type = \"text/html\"\n        paste.html = html\n        this.delegate?.inputControllerWillPaste(paste)\n        this.withTargetDOMRange(function() {\n          return this.responder?.insertHTML(paste.html)\n        })\n        this.afterRender = () => {\n          return this.delegate?.inputControllerDidPaste(paste)\n        }\n      }\n    },\n\n    insertFromYank() {\n      return this.insertString(this.event.data)\n    },\n\n    insertLineBreak() {\n      return this.insertString(\"\\n\")\n    },\n\n    insertLink() {\n      return this.activateAttributeIfSupported(\"href\", this.event.data)\n    },\n\n    insertOrderedList() {\n      return this.toggleAttributeIfSupported(\"number\")\n    },\n\n    insertParagraph() {\n      this.delegate?.inputControllerWillPerformTyping()\n      return this.withTargetDOMRange(function() {\n        return this.responder?.insertLineBreak()\n      })\n    },\n\n    insertReplacementText() {\n      const replacement = this.event.dataTransfer.getData(\"text/plain\")\n      const domRange = this.event.getTargetRanges()[0]\n\n      this.withTargetDOMRange(domRange, () => {\n        this.insertString(replacement, { updatePosition: false })\n      })\n    },\n\n    insertText() {\n      return this.insertString(this.event.data || this.event.dataTransfer?.getData(\"text/plain\"))\n    },\n\n    insertTranspose() {\n      return this.insertString(this.event.data)\n    },\n\n    insertUnorderedList() {\n      return this.toggleAttributeIfSupported(\"bullet\")\n    },\n  }\n\n  elementDidMutate() {\n    if (this.scheduledRender) {\n      if (this.composing) {\n        return this.delegate?.inputControllerDidAllowUnhandledInput?.()\n      }\n    } else {\n      return this.reparse()\n    }\n  }\n\n  scheduleRender() {\n    return this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render)\n  }\n\n  render() {\n    cancelAnimationFrame(this.scheduledRender)\n    this.scheduledRender = null\n    if (!this.composing) {\n      this.delegate?.render()\n    }\n    this.afterRender?.()\n    this.afterRender = null\n  }\n\n  reparse() {\n    return this.delegate?.reparse()\n  }\n\n  // Responder helpers\n\n  insertString(string = \"\", options) {\n    this.delegate?.inputControllerWillPerformTyping()\n    return this.withTargetDOMRange(function() {\n      return this.responder?.insertString(string, options)\n    })\n  }\n\n  toggleAttributeIfSupported(attributeName) {\n    if (getAllAttributeNames().includes(attributeName)) {\n      this.delegate?.inputControllerWillPerformFormatting(attributeName)\n      return this.withTargetDOMRange(function() {\n        return this.responder?.toggleCurrentAttribute(attributeName)\n      })\n    }\n  }\n\n  activateAttributeIfSupported(attributeName, value) {\n    if (getAllAttributeNames().includes(attributeName)) {\n      this.delegate?.inputControllerWillPerformFormatting(attributeName)\n      return this.withTargetDOMRange(function() {\n        return this.responder?.setCurrentAttribute(attributeName, value)\n      })\n    }\n  }\n\n  deleteInDirection(direction, { recordUndoEntry } = { recordUndoEntry: true }) {\n    if (recordUndoEntry) {\n      this.delegate?.inputControllerWillPerformTyping()\n    }\n    const perform = () => this.responder?.deleteInDirection(direction)\n    const domRange = this.getTargetDOMRange({ minLength: this.composing ? 1 : 2 })\n    if (domRange) {\n      return this.withTargetDOMRange(domRange, perform)\n    } else {\n      return perform()\n    }\n  }\n\n  // Selection helpers\n\n  withTargetDOMRange(domRange, fn) {\n    if (typeof domRange === \"function\") {\n      fn = domRange\n      domRange = this.getTargetDOMRange()\n    }\n    if (domRange) {\n      return this.responder?.withTargetDOMRange(domRange, fn.bind(this))\n    } else {\n      selectionChangeObserver.reset()\n      return fn.call(this)\n    }\n  }\n\n  getTargetDOMRange({ minLength } = { minLength: 0 }) {\n    const targetRanges = this.event.getTargetRanges?.()\n    if (targetRanges) {\n      if (targetRanges.length) {\n        const domRange = staticRangeToRange(targetRanges[0])\n        if (minLength === 0 || domRange.toString().length >= minLength) {\n          return domRange\n        }\n      }\n    }\n  }\n\n  withEvent(event, fn) {\n    let result\n    this.event = event\n    try {\n      result = fn.call(this)\n    } finally {\n      this.event = null\n    }\n    return result\n  }\n}\n\nconst staticRangeToRange = function(staticRange) {\n  const range = document.createRange()\n  range.setStart(staticRange.startContainer, staticRange.startOffset)\n  range.setEnd(staticRange.endContainer, staticRange.endOffset)\n  return range\n}\n\n// Event helpers\n\nconst dragEventHasFiles = (event) => Array.from(event.dataTransfer?.types || []).includes(\"Files\")\n\nconst processableFilePaste = (event) => {\n  // Paste events that only have files are handled by the paste event handler,\n  // to work around Safari not supporting beforeinput.insertFromPaste for files.\n\n  // MS Office text pastes include a file with a screenshot of the text, but we should\n  // handle them as text pastes.\n  return event.dataTransfer.files?.[0] && !pasteEventHasFilesOnly(event) && !dataTransferIsMsOfficePaste(event)\n}\n\nconst pasteEventHasFilesOnly = function(event) {\n  const clipboard = event.clipboardData\n  if (clipboard) {\n    const fileTypes = Array.from(clipboard.types).filter((type) => type.match(/file/i)) // \"Files\", \"application/x-moz-file\"\n    return fileTypes.length === clipboard.types.length && clipboard.files.length >= 1\n  }\n}\n\nconst pasteEventHasPlainTextOnly = function(event) {\n  const clipboard = event.clipboardData\n  if (clipboard) {\n    return clipboard.types.includes(\"text/plain\") && clipboard.types.length === 1\n  }\n}\n\nconst keyboardCommandFromKeyEvent = function(event) {\n  const command = []\n  if (event.altKey) {\n    command.push(\"alt\")\n  }\n  if (event.shiftKey) {\n    command.push(\"shift\")\n  }\n  command.push(event.key)\n  return command\n}\n\nconst pointFromEvent = (event) => ({\n  x: event.clientX,\n  y: event.clientY,\n})\n", "import BasicObject from \"trix/core/basic_object\"\n\nimport { findClosestElementFromNode, handleEvent, triggerEvent } from \"trix/core/helpers\"\n\nimport DOMPurify from \"dompurify\"\n\nconst attributeButtonSelector = \"[data-trix-attribute]\"\nconst actionButtonSelector = \"[data-trix-action]\"\nconst toolbarButtonSelector = `${attributeButtonSelector}, ${actionButtonSelector}`\nconst dialogSelector = \"[data-trix-dialog]\"\nconst activeDialogSelector = `${dialogSelector}[data-trix-active]`\nconst dialogButtonSelector = `${dialogSelector} [data-trix-method]`\nconst dialogInputSelector = `${dialogSelector} [data-trix-input]`\nconst getInputForDialog = (element, attributeName) => {\n  if (!attributeName) { attributeName = getAttributeName(element) }\n  return element.querySelector(`[data-trix-input][name='${attributeName}']`)\n}\nconst getActionName = (element) => element.getAttribute(\"data-trix-action\")\nconst getAttributeName = (element) => {\n  return element.getAttribute(\"data-trix-attribute\") || element.getAttribute(\"data-trix-dialog-attribute\")\n}\nconst getDialogName = (element) => element.getAttribute(\"data-trix-dialog\")\n\nexport default class ToolbarController extends BasicObject {\n  constructor(element) {\n    super(element)\n    this.didClickActionButton = this.didClickActionButton.bind(this)\n    this.didClickAttributeButton = this.didClickAttributeButton.bind(this)\n    this.didClickDialogButton = this.didClickDialogButton.bind(this)\n    this.didKeyDownDialogInput = this.didKeyDownDialogInput.bind(this)\n    this.element = element\n    this.attributes = {}\n    this.actions = {}\n    this.resetDialogInputs()\n\n    handleEvent(\"mousedown\", {\n      onElement: this.element,\n      matchingSelector: actionButtonSelector,\n      withCallback: this.didClickActionButton,\n    })\n    handleEvent(\"mousedown\", {\n      onElement: this.element,\n      matchingSelector: attributeButtonSelector,\n      withCallback: this.didClickAttributeButton,\n    })\n    handleEvent(\"click\", { onElement: this.element, matchingSelector: toolbarButtonSelector, preventDefault: true })\n    handleEvent(\"click\", {\n      onElement: this.element,\n      matchingSelector: dialogButtonSelector,\n      withCallback: this.didClickDialogButton,\n    })\n    handleEvent(\"keydown\", {\n      onElement: this.element,\n      matchingSelector: dialogInputSelector,\n      withCallback: this.didKeyDownDialogInput,\n    })\n  }\n\n  // Event handlers\n\n  didClickActionButton(event, element) {\n    this.delegate?.toolbarDidClickButton()\n    event.preventDefault()\n    const actionName = getActionName(element)\n\n    if (this.getDialog(actionName)) {\n      return this.toggleDialog(actionName)\n    } else {\n      return this.delegate?.toolbarDidInvokeAction(actionName, element)\n    }\n  }\n\n  didClickAttributeButton(event, element) {\n    this.delegate?.toolbarDidClickButton()\n    event.preventDefault()\n    const attributeName = getAttributeName(element)\n\n    if (this.getDialog(attributeName)) {\n      this.toggleDialog(attributeName)\n    } else {\n      this.delegate?.toolbarDidToggleAttribute(attributeName)\n    }\n\n    return this.refreshAttributeButtons()\n  }\n\n  didClickDialogButton(event, element) {\n    const dialogElement = findClosestElementFromNode(element, { matchingSelector: dialogSelector })\n    const method = element.getAttribute(\"data-trix-method\")\n    return this[method].call(this, dialogElement)\n  }\n\n  didKeyDownDialogInput(event, element) {\n    if (event.keyCode === 13) {\n      // Enter key\n      event.preventDefault()\n      const attribute = element.getAttribute(\"name\")\n      const dialog = this.getDialog(attribute)\n      this.setAttribute(dialog)\n    }\n    if (event.keyCode === 27) {\n      // Escape key\n      event.preventDefault()\n      return this.hideDialog()\n    }\n  }\n\n  // Action buttons\n\n  updateActions(actions) {\n    this.actions = actions\n    return this.refreshActionButtons()\n  }\n\n  refreshActionButtons() {\n    return this.eachActionButton((element, actionName) => {\n      element.disabled = this.actions[actionName] === false\n    })\n  }\n\n  eachActionButton(callback) {\n    return Array.from(this.element.querySelectorAll(actionButtonSelector)).map((element) =>\n      callback(element, getActionName(element))\n    )\n  }\n\n  // Attribute buttons\n\n  updateAttributes(attributes) {\n    this.attributes = attributes\n    return this.refreshAttributeButtons()\n  }\n\n  refreshAttributeButtons() {\n    return this.eachAttributeButton((element, attributeName) => {\n      element.disabled = this.attributes[attributeName] === false\n      if (this.attributes[attributeName] || this.dialogIsVisible(attributeName)) {\n        element.setAttribute(\"data-trix-active\", \"\")\n        return element.classList.add(\"trix-active\")\n      } else {\n        element.removeAttribute(\"data-trix-active\")\n        return element.classList.remove(\"trix-active\")\n      }\n    })\n  }\n\n  eachAttributeButton(callback) {\n    return Array.from(this.element.querySelectorAll(attributeButtonSelector)).map((element) =>\n      callback(element, getAttributeName(element))\n    )\n  }\n\n  applyKeyboardCommand(keys) {\n    const keyString = JSON.stringify(keys.sort())\n    for (const button of Array.from(this.element.querySelectorAll(\"[data-trix-key]\"))) {\n      const buttonKeys = button.getAttribute(\"data-trix-key\").split(\"+\")\n      const buttonKeyString = JSON.stringify(buttonKeys.sort())\n      if (buttonKeyString === keyString) {\n        triggerEvent(\"mousedown\", { onElement: button })\n        return true\n      }\n    }\n    return false\n  }\n\n  // Dialogs\n\n  dialogIsVisible(dialogName) {\n    const element = this.getDialog(dialogName)\n    if (element) {\n      return element.hasAttribute(\"data-trix-active\")\n    }\n  }\n\n  toggleDialog(dialogName) {\n    if (this.dialogIsVisible(dialogName)) {\n      return this.hideDialog()\n    } else {\n      return this.showDialog(dialogName)\n    }\n  }\n\n  showDialog(dialogName) {\n    this.hideDialog()\n    this.delegate?.toolbarWillShowDialog()\n\n    const element = this.getDialog(dialogName)\n    element.setAttribute(\"data-trix-active\", \"\")\n    element.classList.add(\"trix-active\")\n\n    Array.from(element.querySelectorAll(\"input[disabled]\")).forEach((disabledInput) => {\n      disabledInput.removeAttribute(\"disabled\")\n    })\n\n    const attributeName = getAttributeName(element)\n    if (attributeName) {\n      const input = getInputForDialog(element, dialogName)\n      if (input) {\n        input.value = this.attributes[attributeName] || \"\"\n        input.select()\n      }\n    }\n\n    return this.delegate?.toolbarDidShowDialog(dialogName)\n  }\n\n  setAttribute(dialogElement) {\n    const attributeName = getAttributeName(dialogElement)\n    const input = getInputForDialog(dialogElement, attributeName)\n\n    if (input.willValidate) {\n      input.setCustomValidity(\"\")\n      if (!input.checkValidity() || !this.isSafeAttribute(input)) {\n        input.setCustomValidity(\"Invalid value\")\n        input.setAttribute(\"data-trix-validate\", \"\")\n        input.classList.add(\"trix-validate\")\n        return input.focus()\n      }\n    }\n    this.delegate?.toolbarDidUpdateAttribute(attributeName, input.value)\n    return this.hideDialog()\n  }\n\n  isSafeAttribute(input) {\n    if (input.hasAttribute(\"data-trix-validate-href\")) {\n      return DOMPurify.isValidAttribute(\"a\", \"href\", input.value)\n    } else {\n      return true\n    }\n  }\n\n  removeAttribute(dialogElement) {\n    const attributeName = getAttributeName(dialogElement)\n    this.delegate?.toolbarDidRemoveAttribute(attributeName)\n    return this.hideDialog()\n  }\n\n  hideDialog() {\n    const element = this.element.querySelector(activeDialogSelector)\n    if (element) {\n      element.removeAttribute(\"data-trix-active\")\n      element.classList.remove(\"trix-active\")\n      this.resetDialogInputs()\n      return this.delegate?.toolbarDidHideDialog(getDialogName(element))\n    }\n  }\n\n  resetDialogInputs() {\n    Array.from(this.element.querySelectorAll(dialogInputSelector)).forEach((input) => {\n      input.setAttribute(\"disabled\", \"disabled\")\n      input.removeAttribute(\"data-trix-validate\")\n      input.classList.remove(\"trix-validate\")\n    })\n  }\n\n  getDialog(dialogName) {\n    return this.element.querySelector(`[data-trix-dialog=${dialogName}]`)\n  }\n}\n", "/* eslint-disable\n    id-length,\n*/\nimport * as config from \"trix/config\"\n\nimport { serializeToContentType } from \"trix/core/serialization\"\n\nimport Controller from \"trix/controllers/controller\"\nimport Level0InputController from \"trix/controllers/level_0_input_controller\"\nimport Level2InputController from \"trix/controllers/level_2_input_controller\"\nimport CompositionController from \"trix/controllers/composition_controller\"\nimport ToolbarController from \"trix/controllers/toolbar_controller\"\nimport Composition from \"trix/models/composition\"\nimport Editor from \"trix/models/editor\"\nimport AttachmentManager from \"trix/models/attachment_manager\"\nimport SelectionManager from \"trix/models/selection_manager\"\n\nimport { getBlockConfig, objectsAreEqual, rangeIsCollapsed, rangesAreEqual } from \"trix/core/helpers\"\nimport { selectionChangeObserver } from \"trix/observers/selection_change_observer\"\n\nconst snapshotsAreEqual = (a, b) => rangesAreEqual(a.selectedRange, b.selectedRange) && a.document.isEqualTo(b.document)\n\nexport default class EditorController extends Controller {\n  static actions = {\n    undo: {\n      test() {\n        return this.editor.canUndo()\n      },\n      perform() {\n        return this.editor.undo()\n      },\n    },\n    redo: {\n      test() {\n        return this.editor.canRedo()\n      },\n      perform() {\n        return this.editor.redo()\n      },\n    },\n    link: {\n      test() {\n        return this.editor.canActivateAttribute(\"href\")\n      },\n    },\n    increaseNestingLevel: {\n      test() {\n        return this.editor.canIncreaseNestingLevel()\n      },\n      perform() {\n        return this.editor.increaseNestingLevel() && this.render()\n      },\n    },\n    decreaseNestingLevel: {\n      test() {\n        return this.editor.canDecreaseNestingLevel()\n      },\n      perform() {\n        return this.editor.decreaseNestingLevel() && this.render()\n      },\n    },\n    attachFiles: {\n      test() {\n        return true\n      },\n      perform() {\n        return config.input.pickFiles(this.editor.insertFiles)\n      },\n    },\n  }\n\n  constructor({ editorElement, document, html }) {\n    super(...arguments)\n    this.editorElement = editorElement\n    this.selectionManager = new SelectionManager(this.editorElement)\n    this.selectionManager.delegate = this\n\n    this.composition = new Composition()\n    this.composition.delegate = this\n\n    this.attachmentManager = new AttachmentManager(this.composition.getAttachments())\n    this.attachmentManager.delegate = this\n\n    this.inputController =\n      config.input.getLevel() === 2\n        ? new Level2InputController(this.editorElement)\n        : new Level0InputController(this.editorElement)\n\n    this.inputController.delegate = this\n    this.inputController.responder = this.composition\n\n    this.compositionController = new CompositionController(this.editorElement, this.composition)\n    this.compositionController.delegate = this\n\n    this.toolbarController = new ToolbarController(this.editorElement.toolbarElement)\n    this.toolbarController.delegate = this\n\n    this.editor = new Editor(this.composition, this.selectionManager, this.editorElement)\n    if (document) {\n      this.editor.loadDocument(document)\n    } else {\n      this.editor.loadHTML(html)\n    }\n  }\n\n  registerSelectionManager() {\n    return selectionChangeObserver.registerSelectionManager(this.selectionManager)\n  }\n\n  unregisterSelectionManager() {\n    return selectionChangeObserver.unregisterSelectionManager(this.selectionManager)\n  }\n\n  render() {\n    return this.compositionController.render()\n  }\n\n  reparse() {\n    return this.composition.replaceHTML(this.editorElement.innerHTML)\n  }\n\n  // Composition delegate\n\n  compositionDidChangeDocument(document) {\n    this.notifyEditorElement(\"document-change\")\n    if (!this.handlingInput) {\n      return this.render()\n    }\n  }\n\n  compositionDidChangeCurrentAttributes(currentAttributes) {\n    this.currentAttributes = currentAttributes\n    this.toolbarController.updateAttributes(this.currentAttributes)\n    this.updateCurrentActions()\n    return this.notifyEditorElement(\"attributes-change\", { attributes: this.currentAttributes })\n  }\n\n  compositionDidPerformInsertionAtRange(range) {\n    if (this.pasting) {\n      this.pastedRange = range\n    }\n  }\n\n  compositionShouldAcceptFile(file) {\n    return this.notifyEditorElement(\"file-accept\", { file })\n  }\n\n  compositionDidAddAttachment(attachment) {\n    const managedAttachment = this.attachmentManager.manageAttachment(attachment)\n    return this.notifyEditorElement(\"attachment-add\", { attachment: managedAttachment })\n  }\n\n  compositionDidEditAttachment(attachment) {\n    this.compositionController.rerenderViewForObject(attachment)\n    const managedAttachment = this.attachmentManager.manageAttachment(attachment)\n    this.notifyEditorElement(\"attachment-edit\", { attachment: managedAttachment })\n    return this.notifyEditorElement(\"change\")\n  }\n\n  compositionDidChangeAttachmentPreviewURL(attachment) {\n    this.compositionController.invalidateViewForObject(attachment)\n    return this.notifyEditorElement(\"change\")\n  }\n\n  compositionDidRemoveAttachment(attachment) {\n    const managedAttachment = this.attachmentManager.unmanageAttachment(attachment)\n    return this.notifyEditorElement(\"attachment-remove\", { attachment: managedAttachment })\n  }\n\n  compositionDidStartEditingAttachment(attachment, options) {\n    this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(attachment)\n    this.compositionController.installAttachmentEditorForAttachment(attachment, options)\n    return this.selectionManager.setLocationRange(this.attachmentLocationRange)\n  }\n\n  compositionDidStopEditingAttachment(attachment) {\n    this.compositionController.uninstallAttachmentEditor()\n    this.attachmentLocationRange = null\n  }\n\n  compositionDidRequestChangingSelectionToLocationRange(locationRange) {\n    if (this.loadingSnapshot && !this.isFocused()) return\n    this.requestedLocationRange = locationRange\n    this.compositionRevisionWhenLocationRangeRequested = this.composition.revision\n    if (!this.handlingInput) {\n      return this.render()\n    }\n  }\n\n  compositionWillLoadSnapshot() {\n    this.loadingSnapshot = true\n  }\n\n  compositionDidLoadSnapshot() {\n    this.compositionController.refreshViewCache()\n    this.render()\n    this.loadingSnapshot = false\n  }\n\n  getSelectionManager() {\n    return this.selectionManager\n  }\n\n  // Attachment manager delegate\n\n  attachmentManagerDidRequestRemovalOfAttachment(attachment) {\n    return this.removeAttachment(attachment)\n  }\n\n  // Document controller delegate\n\n  compositionControllerWillSyncDocumentView() {\n    this.inputController.editorWillSyncDocumentView()\n    this.selectionManager.lock()\n    return this.selectionManager.clearSelection()\n  }\n\n  compositionControllerDidSyncDocumentView() {\n    this.inputController.editorDidSyncDocumentView()\n    this.selectionManager.unlock()\n    this.updateCurrentActions()\n    return this.notifyEditorElement(\"sync\")\n  }\n\n  compositionControllerDidRender() {\n    if (this.requestedLocationRange) {\n      if (this.compositionRevisionWhenLocationRangeRequested === this.composition.revision) {\n        this.selectionManager.setLocationRange(this.requestedLocationRange)\n      }\n      this.requestedLocationRange = null\n      this.compositionRevisionWhenLocationRangeRequested = null\n    }\n\n    if (this.renderedCompositionRevision !== this.composition.revision) {\n      this.runEditorFilters()\n      this.composition.updateCurrentAttributes()\n      this.notifyEditorElement(\"render\")\n    }\n\n    this.renderedCompositionRevision = this.composition.revision\n  }\n\n  compositionControllerDidFocus() {\n    if (this.isFocusedInvisibly()) {\n      this.setLocationRange({ index: 0, offset: 0 })\n    }\n    this.toolbarController.hideDialog()\n    return this.notifyEditorElement(\"focus\")\n  }\n\n  compositionControllerDidBlur() {\n    return this.notifyEditorElement(\"blur\")\n  }\n\n  compositionControllerDidSelectAttachment(attachment, options) {\n    this.toolbarController.hideDialog()\n    return this.composition.editAttachment(attachment, options)\n  }\n\n  compositionControllerDidRequestDeselectingAttachment(attachment) {\n    const locationRange = this.attachmentLocationRange || this.composition.document.getLocationRangeOfAttachment(attachment)\n    return this.selectionManager.setLocationRange(locationRange[1])\n  }\n\n  compositionControllerWillUpdateAttachment(attachment) {\n    return this.editor.recordUndoEntry(\"Edit Attachment\", { context: attachment.id, consolidatable: true })\n  }\n\n  compositionControllerDidRequestRemovalOfAttachment(attachment) {\n    return this.removeAttachment(attachment)\n  }\n\n  // Input controller delegate\n\n  inputControllerWillHandleInput() {\n    this.handlingInput = true\n    this.requestedRender = false\n  }\n\n  inputControllerDidRequestRender() {\n    this.requestedRender = true\n  }\n\n  inputControllerDidHandleInput() {\n    this.handlingInput = false\n    if (this.requestedRender) {\n      this.requestedRender = false\n      return this.render()\n    }\n  }\n\n  inputControllerDidAllowUnhandledInput() {\n    return this.notifyEditorElement(\"change\")\n  }\n\n  inputControllerDidRequestReparse() {\n    return this.reparse()\n  }\n\n  inputControllerWillPerformTyping() {\n    return this.recordTypingUndoEntry()\n  }\n\n  inputControllerWillPerformFormatting(attributeName) {\n    return this.recordFormattingUndoEntry(attributeName)\n  }\n\n  inputControllerWillCutText() {\n    return this.editor.recordUndoEntry(\"Cut\")\n  }\n\n  inputControllerWillPaste(paste) {\n    this.editor.recordUndoEntry(\"Paste\")\n    this.pasting = true\n    return this.notifyEditorElement(\"before-paste\", { paste })\n  }\n\n  inputControllerDidPaste(paste) {\n    paste.range = this.pastedRange\n    this.pastedRange = null\n    this.pasting = null\n    return this.notifyEditorElement(\"paste\", { paste })\n  }\n\n  inputControllerWillMoveText() {\n    return this.editor.recordUndoEntry(\"Move\")\n  }\n\n  inputControllerWillAttachFiles() {\n    return this.editor.recordUndoEntry(\"Drop Files\")\n  }\n\n  inputControllerWillPerformUndo() {\n    return this.editor.undo()\n  }\n\n  inputControllerWillPerformRedo() {\n    return this.editor.redo()\n  }\n\n  inputControllerDidReceiveKeyboardCommand(keys) {\n    return this.toolbarController.applyKeyboardCommand(keys)\n  }\n\n  inputControllerDidStartDrag() {\n    this.locationRangeBeforeDrag = this.selectionManager.getLocationRange()\n  }\n\n  inputControllerDidReceiveDragOverPoint(point) {\n    return this.selectionManager.setLocationRangeFromPointRange(point)\n  }\n\n  inputControllerDidCancelDrag() {\n    this.selectionManager.setLocationRange(this.locationRangeBeforeDrag)\n    this.locationRangeBeforeDrag = null\n  }\n\n  // Selection manager delegate\n\n  locationRangeDidChange(locationRange) {\n    this.composition.updateCurrentAttributes()\n    this.updateCurrentActions()\n    if (this.attachmentLocationRange && !rangesAreEqual(this.attachmentLocationRange, locationRange)) {\n      this.composition.stopEditingAttachment()\n    }\n    return this.notifyEditorElement(\"selection-change\")\n  }\n\n  // Toolbar controller delegate\n\n  toolbarDidClickButton() {\n    if (!this.getLocationRange()) {\n      return this.setLocationRange({ index: 0, offset: 0 })\n    }\n  }\n\n  toolbarDidInvokeAction(actionName, invokingElement) {\n    return this.invokeAction(actionName, invokingElement)\n  }\n\n  toolbarDidToggleAttribute(attributeName) {\n    this.recordFormattingUndoEntry(attributeName)\n    this.composition.toggleCurrentAttribute(attributeName)\n    this.render()\n    if (!this.selectionFrozen) {\n      return this.editorElement.focus()\n    }\n  }\n\n  toolbarDidUpdateAttribute(attributeName, value) {\n    this.recordFormattingUndoEntry(attributeName)\n    this.composition.setCurrentAttribute(attributeName, value)\n    this.render()\n    if (!this.selectionFrozen) {\n      return this.editorElement.focus()\n    }\n  }\n\n  toolbarDidRemoveAttribute(attributeName) {\n    this.recordFormattingUndoEntry(attributeName)\n    this.composition.removeCurrentAttribute(attributeName)\n    this.render()\n    if (!this.selectionFrozen) {\n      return this.editorElement.focus()\n    }\n  }\n\n  toolbarWillShowDialog(dialogElement) {\n    this.composition.expandSelectionForEditing()\n    return this.freezeSelection()\n  }\n\n  toolbarDidShowDialog(dialogName) {\n    return this.notifyEditorElement(\"toolbar-dialog-show\", { dialogName })\n  }\n\n  toolbarDidHideDialog(dialogName) {\n    this.thawSelection()\n    this.editorElement.focus()\n    return this.notifyEditorElement(\"toolbar-dialog-hide\", { dialogName })\n  }\n\n  // Selection\n\n  freezeSelection() {\n    if (!this.selectionFrozen) {\n      this.selectionManager.lock()\n      this.composition.freezeSelection()\n      this.selectionFrozen = true\n      return this.render()\n    }\n  }\n\n  thawSelection() {\n    if (this.selectionFrozen) {\n      this.composition.thawSelection()\n      this.selectionManager.unlock()\n      this.selectionFrozen = false\n      return this.render()\n    }\n  }\n\n  canInvokeAction(actionName) {\n    if (this.actionIsExternal(actionName)) {\n      return true\n    } else {\n      return !!this.actions[actionName]?.test?.call(this)\n    }\n  }\n\n  invokeAction(actionName, invokingElement) {\n    if (this.actionIsExternal(actionName)) {\n      return this.notifyEditorElement(\"action-invoke\", { actionName, invokingElement })\n    } else {\n      return this.actions[actionName]?.perform?.call(this)\n    }\n  }\n\n  actionIsExternal(actionName) {\n    return /^x-./.test(actionName)\n  }\n\n  getCurrentActions() {\n    const result = {}\n    for (const actionName in this.actions) {\n      result[actionName] = this.canInvokeAction(actionName)\n    }\n    return result\n  }\n\n  updateCurrentActions() {\n    const currentActions = this.getCurrentActions()\n    if (!objectsAreEqual(currentActions, this.currentActions)) {\n      this.currentActions = currentActions\n      this.toolbarController.updateActions(this.currentActions)\n      return this.notifyEditorElement(\"actions-change\", { actions: this.currentActions })\n    }\n  }\n\n  // Editor filters\n\n  runEditorFilters() {\n    let snapshot = this.composition.getSnapshot()\n\n    Array.from(this.editor.filters).forEach((filter) => {\n      const { document, selectedRange } = snapshot\n      snapshot = filter.call(this.editor, snapshot) || {}\n      if (!snapshot.document) {\n        snapshot.document = document\n      }\n      if (!snapshot.selectedRange) {\n        snapshot.selectedRange = selectedRange\n      }\n    })\n\n    if (!snapshotsAreEqual(snapshot, this.composition.getSnapshot())) {\n      return this.composition.loadSnapshot(snapshot)\n    }\n  }\n\n  // Private\n\n  updateInputElement() {\n    const element = this.compositionController.getSerializableElement()\n    const value = serializeToContentType(element, \"text/html\")\n    return this.editorElement.setFormValue(value)\n  }\n\n  notifyEditorElement(message, data) {\n    switch (message) {\n      case \"document-change\":\n        this.documentChangedSinceLastRender = true\n        break\n      case \"render\":\n        if (this.documentChangedSinceLastRender) {\n          this.documentChangedSinceLastRender = false\n          this.notifyEditorElement(\"change\")\n        }\n        break\n      case \"change\":\n      case \"attachment-add\":\n      case \"attachment-edit\":\n      case \"attachment-remove\":\n        this.updateInputElement()\n        break\n    }\n\n    return this.editorElement.notify(message, data)\n  }\n\n  removeAttachment(attachment) {\n    this.editor.recordUndoEntry(\"Delete Attachment\")\n    this.composition.removeAttachment(attachment)\n    return this.render()\n  }\n\n  recordFormattingUndoEntry(attributeName) {\n    const blockConfig = getBlockConfig(attributeName)\n    const locationRange = this.selectionManager.getLocationRange()\n    if (blockConfig || !rangeIsCollapsed(locationRange)) {\n      return this.editor.recordUndoEntry(\"Formatting\", { context: this.getUndoContext(), consolidatable: true })\n    }\n  }\n\n  recordTypingUndoEntry() {\n    return this.editor.recordUndoEntry(\"Typing\", {\n      context: this.getUndoContext(this.currentAttributes),\n      consolidatable: true,\n    })\n  }\n\n  getUndoContext(...context) {\n    return [ this.getLocationContext(), this.getTimeContext(), ...Array.from(context) ]\n  }\n\n  getLocationContext() {\n    const locationRange = this.selectionManager.getLocationRange()\n    if (rangeIsCollapsed(locationRange)) {\n      return locationRange[0].index\n    } else {\n      return locationRange\n    }\n  }\n\n  getTimeContext() {\n    if (config.undo.interval > 0) {\n      return Math.floor(new Date().getTime() / config.undo.interval)\n    } else {\n      return 0\n    }\n  }\n\n  isFocused() {\n    return this.editorElement === this.editorElement.ownerDocument?.activeElement\n  }\n\n  // Detect \"Cursor disappears sporadically\" Firefox bug.\n  // - https://bugzilla.mozilla.org/show_bug.cgi?id=226301\n  isFocusedInvisibly() {\n    return this.isFocused() && !this.getLocationRange()\n  }\n\n  get actions() {\n    return this.constructor.actions\n  }\n}\n\nEditorController.proxyMethod(\"getSelectionManager().setLocationRange\")\nEditorController.proxyMethod(\"getSelectionManager().getLocationRange\")\n", "import * as config from \"trix/config\"\n\nimport { installDefaultCSSForTagName } from \"trix/core/helpers\"\n\ninstallDefaultCSSForTagName(\"trix-toolbar\", `\\\n%t {\n  display: block;\n}\n\n%t {\n  white-space: nowrap;\n}\n\n%t [data-trix-dialog] {\n  display: none;\n}\n\n%t [data-trix-dialog][data-trix-active] {\n  display: block;\n}\n\n%t [data-trix-dialog] [data-trix-validate]:invalid {\n  background-color: #ffdddd;\n}`)\n\nexport default class TrixToolbarElement extends HTMLElement {\n\n  // Element lifecycle\n\n  connectedCallback() {\n    if (this.innerHTML === \"\") {\n      this.innerHTML = config.toolbar.getDefaultHTML()\n    }\n  }\n\n  // Properties\n\n  get editorElements() {\n    if (this.id) {\n      const nodeList = this.ownerDocument?.querySelectorAll(`trix-editor[toolbar=\"${this.id}\"]`)\n\n      return Array.from(nodeList)\n    } else {\n      return []\n    }\n  }\n\n  get editorElement() {\n    const [ editorElement ] = this.editorElements\n\n    return editorElement\n  }\n}\n", "import * as config from \"trix/config\"\n\nimport {\n  findClosestElementFromNode,\n  handleEvent,\n  handleEventOnce,\n  installDefaultCSSForTagName,\n  makeElement,\n  triggerEvent,\n} from \"trix/core/helpers\"\n\nimport { attachmentSelector } from \"trix/config/attachments\"\nimport EditorController from \"trix/controllers/editor_controller\"\nimport \"trix/elements/trix_toolbar_element\"\n\nlet id = 0\n\n// Contenteditable support helpers\n\nconst autofocus = function(element) {\n  if (!document.querySelector(\":focus\")) {\n    if (element.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === element) {\n      return element.focus()\n    }\n  }\n}\n\nconst makeEditable = function(element) {\n  if (element.hasAttribute(\"contenteditable\")) {\n    return\n  }\n  element.toggleAttribute(\"contenteditable\", !element.disabled)\n  return handleEventOnce(\"focus\", {\n    onElement: element,\n    withCallback() {\n      return configureContentEditable(element)\n    },\n  })\n}\n\nconst configureContentEditable = function(element) {\n  disableObjectResizing(element)\n  return setDefaultParagraphSeparator(element)\n}\n\nconst disableObjectResizing = function(element) {\n  if (document.queryCommandSupported?.(\"enableObjectResizing\")) {\n    document.execCommand(\"enableObjectResizing\", false, false)\n    return handleEvent(\"mscontrolselect\", { onElement: element, preventDefault: true })\n  }\n}\n\nconst setDefaultParagraphSeparator = function(element) {\n  if (document.queryCommandSupported?.(\"DefaultParagraphSeparator\")) {\n    const { tagName } = config.blockAttributes.default\n    if ([ \"div\", \"p\" ].includes(tagName)) {\n      return document.execCommand(\"DefaultParagraphSeparator\", false, tagName)\n    }\n  }\n}\n\n// Accessibility helpers\n\nconst addAccessibilityRole = function(element) {\n  if (element.hasAttribute(\"role\")) {\n    return\n  }\n  return element.setAttribute(\"role\", \"textbox\")\n}\n\nconst ensureAriaLabel = function(element) {\n  if (element.hasAttribute(\"aria-label\") || element.hasAttribute(\"aria-labelledby\")) {\n    return\n  }\n\n  const update = function() {\n    const texts = Array.from(element.labels).map((label) => {\n      if (!label.contains(element)) return label.textContent\n    }).filter(text => text)\n\n    const text = texts.join(\" \")\n    if (text) {\n      return element.setAttribute(\"aria-label\", text)\n    } else {\n      return element.removeAttribute(\"aria-label\")\n    }\n  }\n  update()\n  return handleEvent(\"focus\", { onElement: element, withCallback: update })\n}\n\n// Style\n\nconst cursorTargetStyles = (function() {\n  if (config.browser.forcesObjectResizing) {\n    return {\n      display: \"inline\",\n      width: \"auto\",\n    }\n  } else {\n    return {\n      display: \"inline-block\",\n      width: \"1px\",\n    }\n  }\n})()\n\ninstallDefaultCSSForTagName(\"trix-editor\", `\\\n%t {\n    display: block;\n}\n\n%t:empty::before {\n    content: attr(placeholder);\n    color: graytext;\n    cursor: text;\n    pointer-events: none;\n    white-space: pre-line;\n}\n\n%t a[contenteditable=false] {\n    cursor: text;\n}\n\n%t img {\n    max-width: 100%;\n    height: auto;\n}\n\n%t ${attachmentSelector} figcaption textarea {\n    resize: none;\n}\n\n%t ${attachmentSelector} figcaption textarea.trix-autoresize-clone {\n    position: absolute;\n    left: -9999px;\n    max-height: 0px;\n}\n\n%t ${attachmentSelector} figcaption[data-trix-placeholder]:empty::before {\n    content: attr(data-trix-placeholder);\n    color: graytext;\n}\n\n%t [data-trix-cursor-target] {\n    display: ${cursorTargetStyles.display} !important;\n    width: ${cursorTargetStyles.width} !important;\n    padding: 0 !important;\n    margin: 0 !important;\n    border: none !important;\n}\n\n%t [data-trix-cursor-target=left] {\n    vertical-align: top !important;\n    margin-left: -1px !important;\n}\n\n%t [data-trix-cursor-target=right] {\n    vertical-align: bottom !important;\n    margin-right: -1px !important;\n}`)\n\nclass ElementInternalsDelegate {\n  value = \"\"\n  #internals\n  #formDisabled\n\n  constructor(element) {\n    this.element = element\n    this.#internals = element.attachInternals()\n    this.#formDisabled = false\n  }\n\n  connectedCallback() {\n    this.#validate()\n  }\n\n  disconnectedCallback() {\n  }\n\n  get form() {\n    return this.#internals.form\n  }\n\n  get name() {\n    return this.element.getAttribute(\"name\")\n  }\n\n  set name(value) {\n    this.element.setAttribute(\"name\", value)\n  }\n\n  get labels() {\n    return this.#internals.labels\n  }\n\n  get disabled() {\n    return this.#formDisabled || this.element.hasAttribute(\"disabled\")\n  }\n\n  set disabled(value) {\n    this.element.toggleAttribute(\"disabled\", value)\n  }\n\n  get required() {\n    return this.element.hasAttribute(\"required\")\n  }\n\n  set required(value) {\n    this.element.toggleAttribute(\"required\", value)\n    this.#validate()\n  }\n\n  get validity() {\n    return this.#internals.validity\n  }\n\n  get validationMessage() {\n    return this.#internals.validationMessage\n  }\n\n  get willValidate() {\n    return this.#internals.willValidate\n  }\n\n  formDisabledCallback(disabled) {\n    this.#formDisabled = disabled\n  }\n\n  setFormValue(value) {\n    this.value = value\n    this.#validate()\n    this.#internals.setFormValue(this.element.disabled ? undefined : this.value)\n  }\n\n  checkValidity() {\n    return this.#internals.checkValidity()\n  }\n\n  reportValidity() {\n    return this.#internals.reportValidity()\n  }\n\n  setCustomValidity(validationMessage) {\n    this.#validate(validationMessage)\n  }\n\n  #validate(customValidationMessage = \"\") {\n    const { required, value } = this.element\n    const valueMissing = required && !value\n    const customError = !!customValidationMessage\n    const input = makeElement(\"input\", { required })\n    const validationMessage = customValidationMessage || input.validationMessage\n\n    this.#internals.setValidity({ valueMissing, customError }, validationMessage)\n  }\n}\n\nclass LegacyDelegate {\n  #focusHandler\n\n  constructor(element) {\n    this.element = element\n  }\n\n  connectedCallback() {\n    this.#focusHandler = ensureAriaLabel(this.element)\n    window.addEventListener(\"reset\", this.#resetBubbled, false)\n    window.addEventListener(\"click\", this.#clickBubbled, false)\n  }\n\n  disconnectedCallback() {\n    this.#focusHandler?.destroy()\n    window.removeEventListener(\"reset\", this.#resetBubbled, false)\n    window.removeEventListener(\"click\", this.#clickBubbled, false)\n  }\n\n  get labels() {\n    const labels = []\n    if (this.element.id && this.element.ownerDocument) {\n      labels.push(...Array.from(this.element.ownerDocument.querySelectorAll(`label[for='${this.element.id}']`) || []))\n    }\n\n    const label = findClosestElementFromNode(this.element, { matchingSelector: \"label\" })\n    if (label) {\n      if ([ this.element, null ].includes(label.control)) {\n        labels.push(label)\n      }\n    }\n\n    return labels\n  }\n\n  get form() {\n    console.warn(\"This browser does not support the .form property for trix-editor elements.\")\n\n    return null\n  }\n\n  get name() {\n    console.warn(\"This browser does not support the .name property for trix-editor elements.\")\n\n    return null\n  }\n\n  set name(value) {\n    console.warn(\"This browser does not support the .name property for trix-editor elements.\")\n  }\n\n  get disabled() {\n    console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\")\n\n    return false\n  }\n\n  set disabled(value) {\n    console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\")\n  }\n\n  get required() {\n    console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\")\n\n    return false\n  }\n\n  set required(value) {\n    console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\")\n  }\n\n  get validity() {\n    console.warn(\"This browser does not support the validity property for trix-editor elements.\")\n    return null\n  }\n\n  get validationMessage() {\n    console.warn(\"This browser does not support the validationMessage property for trix-editor elements.\")\n\n    return \"\"\n  }\n\n  get willValidate() {\n    console.warn(\"This browser does not support the willValidate property for trix-editor elements.\")\n\n    return false\n  }\n\n  formDisabledCallback(value) {\n  }\n\n  setFormValue(value) {\n  }\n\n  checkValidity() {\n    console.warn(\"This browser does not support checkValidity() for trix-editor elements.\")\n\n    return true\n  }\n\n  reportValidity() {\n    console.warn(\"This browser does not support reportValidity() for trix-editor elements.\")\n\n    return true\n  }\n\n  setCustomValidity(validationMessage) {\n    console.warn(\"This browser does not support setCustomValidity(validationMessage) for trix-editor elements.\")\n  }\n\n  #resetBubbled = (event) => {\n    if (event.defaultPrevented) return\n    if (event.target !== this.element.form) return\n    this.element.reset()\n  }\n\n  #clickBubbled = (event) => {\n    if (event.defaultPrevented) return\n    if (this.element.contains(event.target)) return\n\n    const label = findClosestElementFromNode(event.target, { matchingSelector: \"label\" })\n    if (!label) return\n\n    if (!Array.from(this.labels).includes(label)) return\n\n    this.element.focus()\n  }\n}\n\nexport default class TrixEditorElement extends HTMLElement {\n  static formAssociated = \"ElementInternals\" in window\n\n  static observedAttributes = [ \"connected\" ]\n\n  #delegate\n\n  constructor() {\n    super()\n    this.willCreateInput = true\n    this.#delegate = this.constructor.formAssociated ?\n      new ElementInternalsDelegate(this) :\n      new LegacyDelegate(this)\n  }\n\n  // Properties\n\n  get trixId() {\n    if (this.hasAttribute(\"trix-id\")) {\n      return this.getAttribute(\"trix-id\")\n    } else {\n      this.setAttribute(\"trix-id\", ++id)\n      return this.trixId\n    }\n  }\n\n  get labels() {\n    return this.#delegate.labels\n  }\n\n  get disabled() {\n    const { inputElement } = this\n\n    if (inputElement) {\n      return inputElement.disabled\n    } else {\n      return this.#delegate.disabled\n    }\n  }\n\n  set disabled(value) {\n    const { inputElement } = this\n\n    if (inputElement) {\n      inputElement.disabled = value\n    }\n    this.#delegate.disabled = value\n  }\n\n  get required() {\n    return this.#delegate.required\n  }\n\n  set required(value) {\n    this.#delegate.required = value\n  }\n\n  get validity() {\n    return this.#delegate.validity\n  }\n\n  get validationMessage() {\n    return this.#delegate.validationMessage\n  }\n\n  get willValidate() {\n    return this.#delegate.willValidate\n  }\n\n  get type() {\n    return this.localName\n  }\n\n  get toolbarElement() {\n    if (this.hasAttribute(\"toolbar\")) {\n      return this.ownerDocument?.getElementById(this.getAttribute(\"toolbar\"))\n    } else if (this.parentNode) {\n      const toolbarId = `trix-toolbar-${this.trixId}`\n      this.setAttribute(\"toolbar\", toolbarId)\n      this.internalToolbar = makeElement(\"trix-toolbar\", { id: toolbarId })\n      this.parentNode.insertBefore(this.internalToolbar, this)\n      return this.internalToolbar\n    } else {\n      return undefined\n    }\n  }\n\n  get form() {\n    const { inputElement } = this\n\n    if (inputElement) {\n      return inputElement.form\n    } else {\n      return this.#delegate.form\n    }\n  }\n\n  get inputElement() {\n    if (this.hasAttribute(\"input\")) {\n      return this.ownerDocument?.getElementById(this.getAttribute(\"input\"))\n    } else {\n      return undefined\n    }\n  }\n\n  get editor() {\n    return this.editorController?.editor\n  }\n\n  get name() {\n    const { inputElement } = this\n\n    if (inputElement) {\n      return inputElement.name\n    } else {\n      return this.#delegate.name\n    }\n  }\n\n  set name(value) {\n    const { inputElement } = this\n\n    if (inputElement) {\n      inputElement.name = value\n    } else {\n      this.#delegate.name = value\n    }\n  }\n\n  get value() {\n    const { inputElement } = this\n\n    if (inputElement) {\n      return inputElement.value\n    } else {\n      return this.#delegate.value\n    }\n  }\n\n  set value(defaultValue) {\n    this.defaultValue = defaultValue\n    this.editor?.loadHTML(this.defaultValue)\n  }\n\n  // Element callbacks\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (name === \"connected\" && this.isConnected && oldValue != null && oldValue !== newValue) {\n      requestAnimationFrame(() => this.reconnect())\n    }\n  }\n\n  // Controller delegate methods\n\n  notify(message, data) {\n    if (this.editorController) {\n      return triggerEvent(`trix-${message}`, { onElement: this, attributes: data })\n    }\n  }\n\n  setFormValue(value) {\n    const { inputElement } = this\n\n    if (inputElement) {\n      inputElement.value = value\n    }\n    this.#delegate.setFormValue(value)\n  }\n\n  // Element lifecycle\n\n  connectedCallback() {\n    if (!this.hasAttribute(\"data-trix-internal\")) {\n      makeEditable(this)\n      addAccessibilityRole(this)\n\n      if (!this.editorController) {\n        triggerEvent(\"trix-before-initialize\", { onElement: this })\n        this.defaultValue = this.inputElement ? this.inputElement.value : this.innerHTML\n        if (!this.hasAttribute(\"input\") && this.parentNode && this.willCreateInput) {\n          const inputId = `trix-input-${this.trixId}`\n          this.setAttribute(\"input\", inputId)\n          const element = makeElement(\"input\", { type: \"hidden\", id: inputId })\n          this.parentNode.insertBefore(element, this.nextElementSibling)\n        }\n        this.editorController = new EditorController({\n          editorElement: this,\n          html: this.defaultValue\n        })\n        requestAnimationFrame(() => triggerEvent(\"trix-initialize\", { onElement: this }))\n      }\n      this.editorController.registerSelectionManager()\n      this.#delegate.connectedCallback()\n\n      this.toggleAttribute(\"connected\", true)\n      autofocus(this)\n    }\n  }\n\n  disconnectedCallback() {\n    this.editorController?.unregisterSelectionManager()\n    this.#delegate.disconnectedCallback()\n    this.toggleAttribute(\"connected\", false)\n  }\n\n  reconnect() {\n    this.removeInternalToolbar()\n    this.disconnectedCallback()\n    this.connectedCallback()\n  }\n\n  removeInternalToolbar() {\n    this.internalToolbar?.remove()\n    this.internalToolbar = null\n  }\n\n  // Form support\n\n  checkValidity() {\n    return this.#delegate.checkValidity()\n  }\n\n  reportValidity() {\n    return this.#delegate.reportValidity()\n  }\n\n  setCustomValidity(validationMessage) {\n    this.#delegate.setCustomValidity(validationMessage)\n  }\n\n  formDisabledCallback(disabled) {\n    const { inputElement } = this\n\n    if (inputElement) {\n      inputElement.disabled = disabled\n    }\n    this.toggleAttribute(\"contenteditable\", !disabled)\n    this.#delegate.formDisabledCallback(disabled)\n  }\n\n  formResetCallback() {\n    this.reset()\n  }\n\n  reset() {\n    this.value = this.defaultValue\n  }\n}\n", "import { version } from \"../../package.json\"\n\nimport * as config from \"trix/config\"\nimport * as core from \"trix/core\"\nimport * as models from \"trix/models\"\nimport * as views from \"trix/views\"\nimport * as controllers from \"trix/controllers\"\nimport * as observers from \"trix/observers\"\nimport * as operations from \"trix/operations\"\nimport * as elements from \"trix/elements\"\nimport * as filters from \"trix/filters\"\n\nconst Trix = {\n  VERSION: version,\n  config,\n  core,\n  models,\n  views,\n  controllers,\n  observers,\n  operations,\n  elements,\n  filters\n}\n\n// Expose models under the Trix constant for compatibility with v1\nObject.assign(Trix, models)\n\nfunction start() {\n  if (!customElements.get(\"trix-toolbar\")) {\n    customElements.define(\"trix-toolbar\", elements.TrixToolbarElement)\n  }\n\n  if (!customElements.get(\"trix-editor\")) {\n    customElements.define(\"trix-editor\", elements.TrixEditorElement)\n  }\n}\n\nwindow.Trix = Trix\nsetTimeout(start, 0)\n\nexport default Trix\n", "\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null)      === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123)       === 'Number'\n\t\t\t * type('foo')     === 'String'\n\t\t\t * type(true)      === 'Boolean'\n\t\t\t * type([1, 2])    === 'Array'\n\t\t\t * type({})        === 'Object'\n\t\t\t * type(String)    === 'Function'\n\t\t\t * type(/abc+/)    === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (document.currentScript && document.currentScript.tagName === 'SCRIPT' && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t//    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t//    at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\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 null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t *     // at its original position\n\t\t\t *     'comment': { ... },\n\t\t\t *     // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t *     'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t *     // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t *     'style': {\n\t\t\t *         // token\n\t\t\t *     }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t *     'comment': Prism.languages.markup.comment,\n\t\t\t *     // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\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// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\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\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism\u2019s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you\u2019re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t *     if (token instanceof Prism.Token && token.type === 'number') {\n\t\t *         console.log(`Found numeric literal: ${token.content}`);\n\t\t *     }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t//   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t *    The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\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\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\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'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\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});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading\u2026';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '\u2716 Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '\u2716 Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n", ";(function () {\n  const acceptAssignmentApp = function (dueDate, thresholdHours) {\n    return {\n      dueDate,\n      thresholdHours,\n      skipAvailabilities: false,\n\n      parseDateOnly(dateString) {\n        if (!dateString) return null\n\n        try {\n          const datePart = dateString.substring(0, 10)\n          const [year, month, day] = datePart.split('-')\n\n          if (!year || !month || !day) return null\n\n          return new Date(parseInt(year), parseInt(month) - 1, parseInt(day), 23, 59, 0, 0)\n        } catch (e) {\n          return null\n        }\n      },\n\n      isCloseToDate(dateString) {\n        if (!dateString) return false\n\n        try {\n          const inspectionDate = new Date(dateString)\n          const dueDate = this.parseDateOnly(this.dueDate)\n\n          if (!dueDate) return false\n          if (inspectionDate > dueDate) return true\n\n          const diffTimeMs = dueDate - inspectionDate\n          // Converts milliseconds to days by dividing by the number of milliseconds in a day\n          // (1000ms * 60s * 60min * 24h), then rounds UP to ensure we count partial days\n          // Example: 4/1 12:00 to 4/3 00:00 = 1.5 days \u2192 rounds to 2 days\n          const diffHours = diffTimeMs / (1000 * 60 * 60)\n\n          return diffHours < this.thresholdHours\n        } catch (e) {\n          return false\n        }\n      },\n\n      hasConflictingTimes(dateString1, dateString2) {\n        if (!dateString1 || !dateString2) return false\n\n        try {\n          const date1 = new Date(dateString1)\n          const date2 = new Date(dateString2)\n\n          const diffTime = Math.abs(date1 - date2)\n          const diffHours = diffTime / (1000 * 60 * 60)\n\n          return diffHours < 4\n        } catch (e) {\n          return false\n        }\n      },\n\n      getConflictingOptionsIndices(option1, option2, option3) {\n        const conflicts = new Set()\n\n        if (this.hasConflictingTimes(option1, option2)) {\n          conflicts.add(1)\n          conflicts.add(2)\n        }\n        if (this.hasConflictingTimes(option1, option3)) {\n          conflicts.add(1)\n          conflicts.add(3)\n        }\n        if (this.hasConflictingTimes(option2, option3)) {\n          conflicts.add(2)\n          conflicts.add(3)\n        }\n\n        return Array.from(conflicts)\n      },\n\n      applyDangerClass(inputId, isClose) {\n        const input = document.getElementById(inputId)\n\n        if (!input) {\n          return\n        }\n\n        if (input._flatpickr) {\n          const altInput = input._flatpickr.altInput\n\n          if (altInput) {\n            if (isClose) {\n              altInput.classList.add('form-input--danger')\n            } else {\n              altInput.classList.remove('form-input--danger')\n            }\n          }\n        }\n      },\n\n      validateAllOptions(option1, option2, option3) {\n        let conflictingIndices = []\n\n        if (typeof this.getConflictingOptionsIndices === 'function') {\n          conflictingIndices = this.getConflictingOptionsIndices(option1, option2, option3)\n        }\n\n        if (option1) {\n          const isClose = this.isCloseToDate(option1) || conflictingIndices.includes(1)\n          this.applyDangerClass('option_1', isClose)\n        }\n        if (option2) {\n          const isClose = this.isCloseToDate(option2) || conflictingIndices.includes(2)\n          this.applyDangerClass('option_2', isClose)\n        }\n        if (option3) {\n          const isClose = this.isCloseToDate(option3) || conflictingIndices.includes(3)\n          this.applyDangerClass('option_3', isClose)\n        }\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.acceptAssignmentApp = acceptAssignmentApp\n  }\n\n  return acceptAssignmentApp\n})()\n", "/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.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;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.21';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var 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 match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\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 ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var 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. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\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. */\n  var 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      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\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  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var 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  /** 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/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var 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  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\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 map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var 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\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\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   */\n  function 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\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\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   */\n  function 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\n  /**\n   * A specialized version of `_.forEachRight` 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   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` 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 {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(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 false;\n      }\n    }\n    return true;\n  }\n\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   */\n  function 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\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   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\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   */\n  function 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\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   */\n  function 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\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   */\n  function 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\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   */\n  function 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\n  /**\n   * A specialized version of `_.reduceRight` 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 last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\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   */\n  function 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\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\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   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\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   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\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   */\n  function 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\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   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\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   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\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   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` 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 {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\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   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\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   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\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   */\n  function 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\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   */\n  function 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\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` 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 {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\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   */\n  function 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\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\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   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\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   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\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   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\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   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\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   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\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   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\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   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\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   */\n  function 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\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   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\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   */\n  function 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\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\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   */\n  function 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\n  /**\n   * A specialized version of `_.lastIndexOf` 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   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\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   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\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   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\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   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\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   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\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     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\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     */\n    var 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\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function 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    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\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     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\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     */\n    function 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\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     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\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     */\n    function 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\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function 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    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\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     */\n    function 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\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     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\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     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\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     */\n    function 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\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\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     */\n    function 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    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\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     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\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     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\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     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\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     */\n    function 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\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\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     */\n    function 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    /**\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     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\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     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\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     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\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     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\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     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\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     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\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     */\n    function 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\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\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     */\n    function 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\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\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     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\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     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\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     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` 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     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` 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 all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` 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 {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\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     */\n    function 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\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     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\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     */\n    var baseForRight = createBaseFor(true);\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     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` 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     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\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     */\n    function 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\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     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\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     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\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     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays 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 array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\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     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\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     */\n    function 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\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     */\n    function 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\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\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     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\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     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\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     */\n    function 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(getIteratee()));\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\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\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     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\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     */\n    var 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\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\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     */\n    function 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\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     */\n    function 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\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * 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     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      return object == null || delete object[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays 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 array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\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     */\n    function 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\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\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     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\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     */\n    function 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\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\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     */\n    function 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\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     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\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     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\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     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\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     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\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     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\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     */\n    function 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\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     */\n    function 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\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     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\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     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\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     */\n    function 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\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     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\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     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(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\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\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     */\n    function 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\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\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     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\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     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\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     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\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     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\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     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\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     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\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     */\n    function 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\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     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\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     */\n    function 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\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     */\n    var 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\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     */\n    var 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\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((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\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\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     */\n    function 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\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\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     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\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     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\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     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\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     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\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     */\n    function 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\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     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\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     */\n    function 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\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     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\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     */\n    function 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\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\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     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\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     */\n    function 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\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\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     */\n    var 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\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\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 (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\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     */\n    function 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, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.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=array.length-1] 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': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\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     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, 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 baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but 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 {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\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     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\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     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.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     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\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     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\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     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.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     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\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 all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\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     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\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     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.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=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.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     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.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     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.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 {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is 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} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\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     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.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     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\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     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\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 _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\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     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\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     */\n    function 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, getIteratee(predicate, 3));\n    }\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     */\n    var 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\n    /*------------------------------------------------------------------------*/\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     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\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     */\n    function 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\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\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     */\n    function 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`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\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     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\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     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.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 `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.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 `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\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     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\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     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` 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 an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\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     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\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     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\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     */\n    function 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\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\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     */\n    function 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\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\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     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\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     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (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     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\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     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\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 `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\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 native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\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 `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\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     */\n    function 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\n    /**\n     * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\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     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\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     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\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     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\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     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\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 `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` 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 weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` 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 weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.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 `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.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 `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\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     */\n    function 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\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     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is 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 convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\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     */\n    function 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\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     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\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     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\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     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key 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 Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\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     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\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     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\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     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` 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 of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\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     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\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     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\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     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\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     */\n    var 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\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\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 pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\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 of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\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     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.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     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.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 {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.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 {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\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 values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values 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 values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\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     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\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     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\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     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\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 kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower 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 lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower 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     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\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     */\n    function 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\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\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 snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\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     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\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 upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, 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 upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\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     */\n    var upperFirst = createCaseFirst('toUpperCase');\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     */\n    function 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\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\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     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\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     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|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     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\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     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\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     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\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     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\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, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\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     */\n    function stubArray() {\n      return [];\n    }\n\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     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n", "import _ from 'lodash';\n\n(function () {\n  const advancedSearcheableApp = function () {\n    return {\n      advancedPanel: null,\n      advanced: false,\n      usingAdvancedFiltersCount: 0,\n      initialize: function(advancedPanel) {\n        this.advancedPanel = advancedPanel;\n        this.countUsingAdvancedFilters();\n      },\n      toggle: function() {\n        this.advanced = !this.advanced;\n      },\n      countUsingAdvancedFilters: function() {\n        this.usingAdvancedFiltersCount =\n          _(this.advancedPanel.querySelectorAll('input, select'))\n          .filter(el => (el.dataset.filled === 'true'))\n          .map(el => ((el.name || el.id)))\n          .uniq()\n          .value()\n          .length;\n      }\n    }\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.advancedSearcheableApp = advancedSearcheableApp;\n  }\n\n  return advancedSearcheableApp;\n})();\n", "(function () {\n  const anchorMenuApp = function (id, topLimit = 200) {\n    return {\n      setListener: function () {\n        var menu = document.getElementById(id)\n\n        document.getElementsByTagName('main')[0].onscroll = onScroll;\n        menu.querySelectorAll('.menu__item-title')[0].classList.add(\"active\");\n\n        function onScroll() {\n          var removeActiveClass = function (elements) {\n            for (var i = 0; i < elements.length; ++i) {\n              elements[i].classList.remove('active');\n            }\n          }\n          var anchors = menu.querySelectorAll('.menu__item-title');\n          var previousRefElement = null;\n\n          for (var i = 0; i < anchors.length; ++i) {\n            var currentRefElement = document.getElementById(anchors[i].getAttribute('data-element-id'));\n            var currentRefElementTop = currentRefElement.getBoundingClientRect().top;\n\n            if (currentRefElementTop <= topLimit) {\n              previousRefElement = anchors[i];\n\n              if (i == anchors.length - 1) {\n                removeActiveClass(anchors);\n                anchors[i].classList.add(\"active\");\n              }\n            } else {\n              removeActiveClass(anchors);\n\n              previousRefElement.classList.add(\"active\");\n\n              break;\n            }\n          }\n        }\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.anchorMenuApp = anchorMenuApp;\n  }\n\n  return anchorMenuApp;\n})();\n", "(function () {\n  const anchorUrlApp = function () {\n    return {\n      anchor: window.location.hash?.slice(1),\n      handleUrlAnchor: function () {\n        const anchor = this.anchor;\n\n        if (!anchor) return;\n\n        const component = anchor.split('!')[0];\n\n        if (component === 'tab') this.handleTab(anchor);\n      },\n      handleTab: function (anchor) {\n        const [group, tab] = this.resolveTab(anchor);\n\n        document\n          .querySelector(`[data-tabs-name=\"${group}\"]`)\n          ?.querySelector(`[data-tab-name=\"${tab}\"]`)\n          ?.click();\n      },\n      resolveTab: function (anchor, { fallback } = {}) {\n        if (!anchor) return [null, fallback];\n\n        const groupAndTab = anchor.split('!')[1];\n\n        if (groupAndTab) {\n          return groupAndTab.split('-');\n        } else {\n          return [null, fallback];\n        }\n      },\n    };\n  };\n\n  if (typeof window !== 'undefined') {\n    window.anchorUrlApp = anchorUrlApp;\n  }\n\n  return anchorUrlApp;\n})();\n", "import _ from 'lodash'\n\nconst humanizeString = (str) => {\n  return str\n    .replace(/^[\\s_]+|[\\s_]+$/g, '')\n    .replace(/[_\\s]+/g, ' ')\n    .replace(/^[a-z]/, function (m) {\n      return m.toUpperCase()\n    })\n}\n\nconst capitalizeString = (str) => {\n  if (!str) return str\n\n  let newStr = str.charAt(0).toUpperCase()\n\n  for (let ii = 1; ii < str.length; ii += 1) {\n    newStr += str.charAt(ii).toLowerCase()\n  }\n\n  return newStr\n}\n\nconst hashFilter = (obj, predicate) => {\n  return Object.fromEntries(Object.entries(obj).filter(([_key, value]) => predicate(value)))\n}\n\nconst camelizeKeys = (obj) => {\n  return _.transform(obj, (acc, value, key, target) => {\n    const camelKey = _.isArray(target) ? key : _.camelCase(key)\n\n    acc[camelKey] = _.isObject(value) ? camelizeKeys(value) : value\n  })\n}\n\nif (typeof window !== 'undefined') {\n  window.humanizeString = humanizeString\n}\n\nexport { humanizeString, capitalizeString, hashFilter, camelizeKeys }\n", "import { camelizeKeys } from './utils'\nimport _ from 'lodash'\n\n(function () {\n  function buildFormData(formData, data, parentKey) {\n    if (data && typeof data === 'object' &&\n          !(data instanceof Date) &&\n          !(data instanceof File) &&\n          !(data instanceof Blob)) {\n      Object.keys(data).forEach(key => {\n        buildFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key)\n      })\n    } else {\n      const value = data == null ? '' : data\n\n      formData.append(parentKey, value)\n    }\n  }\n\n  const appraisalCheckingApp = function (\n    targetData,\n    mode,\n    orderFileId = null,\n    checks = [],\n    submissionChecks = [],\n    commonResponses = [],\n    currentProduct = null,\n    executionId = null\n  ) {\n    let $dispatch\n\n    return {\n      init: function (dispatch) {\n        $dispatch = dispatch\n      },\n      reviewStrategy: '',\n      loading: false,\n      succeed: false,\n      orderFileId: orderFileId,\n      currentProduct: currentProduct,\n      executionId: executionId,\n      checks: checks,\n      submissionChecks: submissionChecks,\n      commonResponses: commonResponses,\n      selectedCommonResponse: '',\n      checksComments: '',\n      revisionEmailContent: '',\n      standard3Open: false,\n      oppenedList: false,\n      errors: [],\n      appMode: ['review', 'submit', 'report'].filter((m) => m === mode)[0] || 'review',\n      selectedFile: null,\n      toggleList: function () { return this.oppenedList = !this.oppenedList },\n      selectedFileName: function () { return this.selectedFile?.name || '' },\n      failedChecks: function () { return this.checks.filter(check => !check.passes) },\n      isEmpty: function () { return !this.selectedFile },\n      reject: function (check) {\n        check.passes = false\n        check.rejected = !check.rejected\n        this.publishChange()\n      },\n      accept: function (check) {\n        check.passes = !check.passes\n        check.rejected = false\n        this.publishChange()\n      },\n      toggleCheck: function (check) {\n        check.passes = !check.passes\n        check.skipped = check.passes\n        this.publishChange()\n      },\n      publishChange: function () {\n        this.publishReadyCount({ succeed: !this.failedChecks().length })\n      },\n      selectFile: function (file, tags) {\n        const __this = this\n\n        this.selectedFile = file\n        this.checks = []\n\n        if (file.type !== 'text/xml') {\n          __this.publishReadyCount({ succeed: true })\n\n          return\n        }\n\n        this.submitAndCheck(file, tags)\n          .then(() => {\n            __this.publishReadyCount({ succeed: !__this.failedChecks().length })\n          })\n      },\n      publishReadyCount: function ({ succeed }) {\n        let readyCountAlpha = 0\n\n        if (this.succeed && !succeed) {\n          readyCountAlpha--\n        } else if (!this.succeed && succeed) {\n          readyCountAlpha++\n        }\n\n        this.succeed = succeed\n\n        $dispatch('file-changed', { readyCount: readyCountAlpha })\n      },\n      submitAndCheck: function(appraisal, tags) {\n        const __this = this\n        const __$dispatch = $dispatch\n\n        const data = {\n          target_data: currentProduct ? { ...targetData, current_product: currentProduct } : targetData,\n          appraisal: appraisal,\n          tags: tags\n        }\n        const formData = new FormData()\n        buildFormData(formData, data)\n\n        this.loading = true\n\n        return fetch('/appraisal_checking/checks', { method: 'POST', body: formData })\n          .then(response => response.json())\n          .then(checks => {\n            checks = camelizeKeys(checks)\n\n            __this.loading = false\n\n            if (!checks.error) {\n              __this.checks = checks\n            } else {\n              __this.errors = [checks.error, ...__this.errors]\n            }\n\n            __$dispatch('request-finished', {})\n          })\n      },\n      showErrors: function () {\n        return this.errors.length > 0\n      },\n      submitReview: function (tags = [], report = false) {\n        const payload = {\n          report,\n          reviews: { tags, checks: this.checks },\n          review_strategy: this.reviewStrategy,\n          checks_comments: this.checksComments,\n          revision_email_content: this.revisionEmailContent,\n          finding_ids: this.selectedFindingIds()\n        }\n        if (!_.isNil(this.executionId) && `${this.executionId}`.trim() !== '') {\n          payload.execution_id = this.executionId\n        }\n        const body = JSON.stringify(payload)\n\n        return new FetchRequest('POST',\n          `/order_files/${orderFileId}/reviews`,\n          { body, responseKind: 'turbo-stream', contentType: 'application/json' }).perform()\n      },\n      selectedFindingIds: function () {\n        return Array.from(document.querySelectorAll('.js-chief-appraiser-finding-checkbox:checked'))\n          .map((el) => el.value)\n      },\n      pendingRequiredResponses: function () {\n        return Array.from(document.querySelectorAll('.js-chief-appraiser-finding-checkbox[data-required=\"true\"]'))\n          .map((el) => el.closest('[data-disposition]'))\n          .filter((el) => el && el.dataset.disposition === 'pending')\n      },\n      hasPendingRequiredResponses: function () {\n        return this.pendingRequiredResponses().length > 0\n      },\n      loadQaEmailPreview: function (previewPath) {\n        const selected = this.selectedFindingIds()\n        const query = new URLSearchParams()\n\n        selected.forEach((id) => {\n          query.append('finding_ids[]', id)\n        })\n\n        return fetch(`${previewPath}?${query.toString()}`, {\n          headers: { Accept: 'application/json' }\n        })\n          .then((response) => response.json())\n          .then((payload) => {\n            this.revisionEmailContent = payload.revision_email_content || ''\n          })\n      },\n      getChecksComments: function () {\n        this.checksComments = this.checks.map(check => {\n          return check.comment\n        }).filter((a) => a).join('\\n')\n      },\n      useCommonResponse: function (responseId) {\n        if (!responseId) {\n          this.checksComments = ''\n        } else {\n          const response = this.commonResponses.find((r) => r.id === responseId)\n\n          this.checksComments = `${this.checksComments || ''}\\n${response.response || ''}`.trim()\n        }\n      }\n    }\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.appraisalCheckingApp = appraisalCheckingApp\n  }\n\n  return appraisalCheckingApp\n})()\n", "import { humanizeString, capitalizeString } from './utils';\nimport _ from 'lodash';\n\n(function () {\n  const assignVendors = () => {\n    return {\n      step: 1,\n      allSelected: false,\n      selectedVendors: [],\n      allVendorsCount: 0,\n      yourPanelCount: 0,\n      preferredVendorCredential: false,\n      vendorsPagination: {\n        total: 0,\n        current_page: 1,\n        next_page: null,\n        prev_page: null,\n        total_pages: 0\n      },\n      vendorScope: 'your_panel',\n      vendors: [],\n      products: [],\n      searchLoading: false,\n      filterFieldsOpen: false,\n      filterFieldsActive: false,\n      filterText: 'Filter',\n      loading: true,\n      currencyFormatter: new Intl.NumberFormat('en-US', {\n        style: 'currency',\n        currency: 'USD',\n      }),\n      assignmentMode: 'round-robin',\n      biddingEndDate: '',\n      capitalizeString: capitalizeString,\n      toggleAllSelected: function () {\n        const vendorIds = this.vendors.map(vendor => vendor.id)\n\n        if (this.allSelected) {\n          this.selectedVendors = [\n            ...this.selectedVendors.filter(vendor => !vendorIds.includes(vendor.id))\n          ]\n\n          this.allSelected = false\n        } else {\n          this.selectedVendors = [...this.selectedVendors, ...this.vendors]\n          this.allSelected = true\n        }\n      },\n      isSelectedVendor: function(vendor) {\n        return this.selectedVendors.some(obj => obj.id === vendor.id);\n      },\n      selectResult: function (vendor) {\n        let index = this.selectedVendors.findIndex(obj => obj.id === vendor.id);\n\n        if (index === -1) {\n          this.selectedVendors.push(vendor);\n        } else {\n          this.selectedVendors.splice(index, 1);\n        }\n      },\n      getUri: function (fields = [], order_id = '', vendorScope = 'all_vendors', page = 1) {\n        const [searchField, ...filterFields] = fields;\n        let filterParams = {};\n\n        if (searchField) {\n          filterParams = {\n            name_or_email_cont: searchField\n          };\n        }\n\n        const q = this.toParam(filterParams);\n\n        let uri =\n          `/ordering/vendors.json?order_id=${order_id}&vendor_scope=${vendorScope}&page=${page}`;\n\n        if (q) uri += `&${q}`;\n\n        if (filterFields.filter((n) => Boolean(n)).length) {\n          const strategies = filterFields.filter((n) => Boolean(n)).join(',');\n\n          uri += `&strategy=${strategies}`;\n        }\n\n        return uri;\n      },\n      fetchResults: function (fields, order_id, vendorScope, page = 1) {\n        let __this = this;\n\n        this.showResults = true;\n        this.loading = true;\n\n        return fetch(this.getUri(fields, order_id, vendorScope, page))\n          .then((response) => response.json())\n          .then((result) => {\n            __this.vendors = result.vendors;\n            __this.allVendorsCount = result.all_vendors_count;\n            __this.yourPanelCount = result.your_panel_count;\n            __this.preferredVendorCredential = result.preferred_vendor_credential;\n            __this.vendorsPagination = result.pagination;\n            __this.loading = false;\n            __this.searchLoading = false;\n            __this.filterFieldsOpen = false;\n            __this.updateFilterText(__this.filterFields);\n\n            const vendorIds = __this.vendors.map(vendor => vendor.id)\n            const selectedVendorIds = __this.selectedVendors.map(vendor => vendor.id)\n\n            __this.allSelected = vendorIds.length > 0 &&\n              vendorIds.every(vendor => selectedVendorIds.includes(vendor))\n          });\n      },\n      fetchVendorNotes: function (vendorId, serviceType) {\n        let __this = this;\n        let uri = `/ordering/vendors/${vendorId}/notes.turbo_stream`;\n\n        if (serviceType) { uri = uri + `?service_type=${serviceType}` };\n\n        return fetch(uri)\n      },\n      upNdown: function(index, direction) {\n        let rows = document.getElementById(\"sortSelectedVendors\").rows\n\n        if (direction === \"up\") {\n          if (index >= 1) {\n            [this.selectedVendors[index], this.selectedVendors[index - 1]] =\n              [this.selectedVendors[index - 1], this.selectedVendors[index]]\n          }\n        }\n\n        if (direction === \"down\") {\n          if (index < rows.length -1) {\n            [this.selectedVendors[index + 1], this.selectedVendors[index]] =\n              [this.selectedVendors[index], this.selectedVendors[index + 1]]\n          }\n        }\n      },\n      clear: function (fields) {\n        fields.forEach((field) => {\n          field.checked = false;\n        });\n\n        this.toggleFilterFieldsActive(fields);\n      },\n      getValues: function (fields) {\n        return [...fields].map((field) => {\n          switch (field.type) {\n            case 'checkbox':\n              return field.checked ? field.value : '';\n\n            default:\n              return field.value ? field.value : '';\n          }\n        });\n      },\n      updateFilterText: function (fields) {\n        const checked = fields.filter((field) => field.checked);\n\n        if (!checked.length) return (this.filterText = 'Filter');\n\n        const text = checked\n          .map((filter) => humanizeString(filter.name))\n          .join(', ');\n\n        if (text.length > 25) {\n          this.filterText = text.substring(0, 25) + '...';\n        } else {\n          this.filterText = text;\n        }\n      },\n      toggleFilterFieldsActive: function (fields) {\n        const checked = [...fields]\n          .map((field) => field.checked)\n          .some((c) => c === true);\n\n        if (checked) {\n          this.filterFieldsActive = true;\n        } else {\n          this.filterFieldsActive = false;\n        }\n      },\n      toParam: function (hash) {\n        return Object.keys(hash)\n          .map((key) => `q[${key}]=${hash[key]}`)\n          .join('&');\n      },\n      preferredCredentialCheck: function (vendor) {\n        return !vendor.ineligible && !vendor.accredited_vendor && this.preferredVendorCredential;\n      },\n      insuranceCoverageCheck: function (vendor) {\n        return parseFloat(vendor.insurance_coverage) < parseFloat(vendor.minimal_insurance_coverage)\n      },\n      stepTwoNext: function (products) {\n        if (!this.assignmentMode) return true;\n\n        if (this.assignmentMode === 'round-robin') {\n          return products.reduce((fees, product) => {\n            fees.push(parseFloat(product.fee)); return fees\n          }, []).includes(0.00);\n        }\n\n        if (this.assignmentMode === 'bidding') {\n          if (!this.biddingEndDate) return true;\n\n          const selectedDate = new Date(this.biddingEndDate);\n          const now = new Date();\n\n          return selectedDate < now;\n        }\n\n        return false;\n      },\n      assignSuggestionFeeForProducts: function () {\n        this.products.forEach((product) => {\n          product.fee = this.suggestionFeeFor(product.id)\n        })\n      },\n      suggestionFeeFor: function (productId) {\n        const selectedVendorProductFees = this.selectedVendors.map((v) => v.product_fee_table)\n        const fees = _.compact([...selectedVendorProductFees].flat());\n\n        return fees.find((fee) => fee.product_id === productId)?.fee || 0;\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.assignVendorsApp = assignVendors;\n  }\n\n  return assignVendorsApp;\n})();\n", ";(function () {\n  const autoAssignmentSettings = function (\n    clientSetting,\n    preferredVendorsSize\n  ) {\n    const autoAssignConfig = clientSetting.auto_assign_config\n\n    return {\n      autoAssignEnabled: clientSetting.auto_assign_enabled,\n      preferredVendorsEnabled: autoAssignConfig.preferred_vendors,\n      assignPoolsEnabled: autoAssignConfig.assign_pools_enabled,\n      payingValidation: {},\n      opened: false,\n      showWarnings: false,\n      fetchPayingValidations: function () {\n        fetch(\n          `/paying/companies/${clientSetting.company_id}/clients/${clientSetting.client_id}/fee_table`\n        )\n          .then((response) => response.json())\n          .then((response) => (this.payingValidation = response))\n          .then((_) => (this.showWarnings = true))\n      },\n      orderingErrors: function () {\n        let errors = []\n\n        if (!this.autoAssignEnabled) return errors\n\n        if (this.preferredVendorsEnabled && !preferredVendorsSize) {\n          errors.push('preferred_vendors')\n        }\n\n        return errors\n      },\n      payingErrors: function () {\n        let errors = []\n\n        if (!this.autoAssignEnabled) return errors\n\n        if (!this.payingValidation.product_fee_table_id) {\n          errors.push('missing_product_fee')\n        }\n        if (\n          !this.payingValidation.vendor_fees?.filter((number) =>\n            Boolean(parseFloat(number))\n          ).length\n        ) {\n          errors.push('missing_vendor_fees')\n        }\n\n        return errors\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.autoAssignmentSettings = autoAssignmentSettings\n  }\n\n  return autoAssignmentSettings\n})()\n", "import _ from 'lodash';\n\n(function () {\n  const batchActionsApp = function (batchActionsName, availableIds, options = {}) {\n    return {\n      availableIds: availableIds,\n      selectedIds: [],\n      preffix: options.preffix || 'batch-',\n      selectAllCheckbox: null,\n      initialize: function(input, $dispatch) {\n        this.selectAllCheckbox = input;\n        this.$dispatch = $dispatch;\n      },\n      addPreffix: function(id) {\n        return `${this.preffix}${id}`;\n      },\n      removePreffix: function(id) {\n        return id.replace(this.preffix, '');\n      },\n      toggleSelectAll: function(checked) {\n        this.selectAllCheckbox.checked = checked;\n      },\n      onToggleSingleRow: function(event) {\n        const elementId = this.removePreffix(event.target.id);\n        const index = this.selectedIds.indexOf(elementId);\n\n        if (index >= 0) {\n          this.selectedIds = this.selectedIds.filter(selectedId => selectedId != elementId)\n        } else {\n          this.selectedIds = [...this.selectedIds, elementId];\n        }\n\n        this.toggleSelectAll(_.isEqual(this.selectedIds.sort(), this.availableIds.sort()));\n\n        this.publishChanged();\n      },\n      onToggleAllRows: function() {\n        const checked = this.selectAllCheckbox.checked;\n\n        this.selectedIds = (checked) ? this.availableIds.slice(0) : [];\n        this.availableIds.forEach((id) => {\n          document.getElementById(this.addPreffix(id)).checked = checked;\n        });\n\n        this.publishChanged();\n      },\n      publishChanged: function () {\n        this.$dispatch('batch-actions--changed', { name: batchActionsName, selectedIds: this.selectedIds });\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.batchActionsApp = batchActionsApp;\n  }\n\n  const batchActionsButtonApp = function (batchActionsName) {\n    return {\n      selectedIds: [],\n      urlWithIds: function(url, param) {\n        const params = this.selectedIds\n                          .map(id => `${param}[]=${id}`)\n                          .join('&');\n\n        return `${url}?${params}`;\n      },\n      consume: function (eventDetail) {\n        if (eventDetail.name !== batchActionsName) return;\n\n        this.selectedIds = eventDetail.selectedIds;\n      }\n    };\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.batchActionsButtonApp = batchActionsButtonApp;\n  }\n\n  return batchActionsApp;\n})();\n", "(function () {\n  const bidsApp = function () {\n    return {\n      bids: [{fee: 0, business_due_date: '', comments: ''}],\n      addBid: function () {\n        this.bids.push({fee: 0, business_due_date: '', comments: ''});\n        setTimeout(() => { this.addPriceMask(); }, 10);\n      },\n      removeBid: function (index) {\n        this.bids.splice(index, 1);\n      },\n      checkBids: function() {\n        return (this.bids.length === 0 ||\n                this.bids.some((bid) => bid.fee == 0 || bid.business_due_date == \"\"))\n      },\n      addPriceMask: function () {\n        let priceInputs = document.getElementsByClassName('price-input');\n        Inputmask({ removeMaskOnSubmit: true, alias: 'currency', groupSeparator: ',' }).mask(priceInputs);\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.bidsApp = bidsApp;\n  }\n\n  return bidsApp;\n})();\n", "(function () {\n  const changeTermsTagifyPlugin = function (name) {\n    return function (tagify, $dispatch) {\n      tagify.on('change', function (e) {\n        $dispatch('order-terms-changed', {\n          productIds: e.detail.tagify.value.map((tag) => tag.id),\n          name,\n        });\n      });\n\n      tagify.on('remove', function (e) {\n        const removedTag = e.detail.data;\n\n        $dispatch('tag-removed', {\n          removedTag: removedTag, name\n        });\n      });\n    };\n  };\n\n  const changeTermsApp = function () {\n    return {\n      loading: {\n        paying: false,\n        payouting: false,\n      },\n      visibility: {\n        paying: true,\n      },\n      main: [],\n      addon: [],\n      update: function (e, turboFrame) {\n        const __this = this;\n\n        this.loading[turboFrame.dataset.name] = true;\n        this[e.detail.name] = e.detail.productIds;\n\n        const src = turboFrame.dataset.src;\n        const query = this.main\n          .map((id) => `product_ids[]=${id}`)\n          .join('&');\n        const fullSrc = `${src}?${query}`;\n\n        turboFrame.setAttribute('src', fullSrc);\n      },\n      checkVisibility: function() {\n        const payingFrame = this.$refs.payingOrderTurboFrame;\n\n        if (payingFrame) {\n          const payingContent = payingFrame.querySelector('div[x-data] > div');\n\n          this.visibility.paying = payingContent && payingContent.children.length > 0;\n        }\n      },\n    };\n  };\n\n  const rushOrderHandler = function (rushProductId, rushProductName, existingProducts) {\n    return {\n      rushProductId: rushProductId,\n      rushProductName: rushProductName,\n      existingProducts: existingProducts || [],\n\n      init: function() {\n        this.setupTagRemovalListener();\n        this.setupProductsCheckboxListener();\n      },\n\n      setupTagRemovalListener: function() {\n        window.addEventListener('tag-removed', (event) => {\n          if (event.detail.removedTag.id === this.rushProductId) this.uncheckRushOrder();\n        });\n      },\n\n      setupProductsCheckboxListener: function() {\n        const productCheckbox = document.querySelector('#order_terms_change_products');\n\n        productCheckbox.addEventListener('change', (event) => {\n          if (!event.target.checked) this.handleProductsCheckboxUnchecked();\n        });\n      },\n\n      handleProductsCheckboxUnchecked: function() {\n        const hasExistingRushProduct = this.existingProducts.some(product =>\n          product.rush === true || product.id === this.rushProductId\n        );\n\n        if (!hasExistingRushProduct) this.uncheckRushOrder();\n      },\n\n      uncheckRushOrder: function() {\n        const falseRadio = document.querySelector('input[name=\"order_terms[rush_order]\"][value=\"false\"]');\n\n        falseRadio.checked = true;\n\n        const changeEvent = new Event('change', { bubbles: true });\n        falseRadio.dispatchEvent(changeEvent);\n      },\n\n      handleRushOrderChange: function (event) {\n        const rushOrderChecked = event.target.value === 'true' && event.target.checked;\n\n        if (rushOrderChecked) this.ensureProductsCheckboxIsChecked();\n\n        setTimeout(() => {\n          const productTagsInput = document.querySelector('#order_terms_product_ids');\n\n          if (!productTagsInput || !this.rushProductId) return;\n\n          rushOrderChecked ?\n            this.addRushProductToTagify(productTagsInput) :\n            this.removeRushProductFromTagify(productTagsInput);\n        }, 100);\n      },\n\n      ensureProductsCheckboxIsChecked: function() {\n        const productCheckbox = document.querySelector('#order_terms_change_products');\n\n        if (productCheckbox && !productCheckbox.checked) {\n          productCheckbox.checked = true;\n\n          const changeEvent = new Event('change', { bubbles: true });\n          productCheckbox.dispatchEvent(changeEvent);\n\n          const inputEvent = new Event('input', { bubbles: true });\n          productCheckbox.dispatchEvent(inputEvent);\n        }\n      },\n\n      addRushProductToTagify: function (productTagsInput) {\n        const rushProductTag = {\n          value: this.rushProductName,\n          id: this.rushProductId\n        };\n\n        productTagsInput.__tagify.addTags([rushProductTag]);\n      },\n\n      removeRushProductFromTagify: function (productTagsInput) {\n        const existingTags = JSON.parse(productTagsInput.tagifyValue || '[]');\n        const rushProductTag = existingTags.find(tag => tag.id === this.rushProductId);\n\n        productTagsInput.__tagify.removeTags(rushProductTag.value);\n      }\n    };\n  };\n\n  if (typeof window !== 'undefined') {\n    window.changeTermsTagifyPlugin = changeTermsTagifyPlugin;\n    window.changeTermsApp = changeTermsApp;\n    window.rushOrderHandler = rushOrderHandler;\n  }\n\n  return changeTermsTagifyPlugin;\n})();\n", "(function () {\n  const checkedFindingIds = new Set()\n\n  function requiredCheckedStateFromDisposition(checkbox) {\n    if (checkbox.dataset.required !== 'true') return null\n\n    const row = checkbox.closest('[data-disposition]')\n    if (!row) return null\n\n    return row.dataset.disposition !== 'accepted'\n  }\n\n  function restoreCheckedState() {\n    document.querySelectorAll('.js-chief-appraiser-finding-checkbox').forEach((checkbox) => {\n      const requiredCheckedState = requiredCheckedStateFromDisposition(checkbox)\n\n      if (requiredCheckedState === null) {\n        checkbox.checked = checkedFindingIds.has(checkbox.value) || checkbox.hasAttribute('checked')\n      } else {\n        checkbox.checked = requiredCheckedState\n      }\n\n      if (checkbox.checked) {\n        checkbox.setAttribute('checked', 'checked')\n      } else {\n        checkbox.removeAttribute('checked')\n      }\n\n      if (checkbox.checked && !checkbox.disabled) {\n        checkedFindingIds.add(checkbox.value)\n      } else {\n        checkedFindingIds.delete(checkbox.value)\n      }\n    })\n  }\n\n  function emptyAppraisalCheckingState() {\n    return {\n      standard3Open: false,\n      selectedCommonResponse: '',\n      checksComments: '',\n      commonResponses: [],\n      getChecksComments() {},\n      useCommonResponse() {}\n    }\n  }\n\n  function sanitizeRichHtml(content) {\n    const rawContent = String(content || '')\n    if (!rawContent.trim()) return ''\n\n    const parser = new DOMParser()\n    const parsedDocument = parser.parseFromString(rawContent, 'text/html')\n    const body = parsedDocument.body\n\n    if (!body) return rawContent\n\n    body.querySelectorAll('script,style,template,noscript').forEach((node) => {\n      node.remove()\n    })\n\n    return body.innerHTML\n  }\n\n  window.chiefAppraiserStandard3App = function ({\n    initiallyLogged = false,\n    initialContent = '',\n    fileNumber = '',\n    propertyAddress = '',\n    saveUrl = '',\n    exportUrl = ''\n  } = {}) {\n    const normalizedInitialContent = String(initialContent || '')\n\n    return {\n      editing: false,\n      logged: Boolean(initiallyLogged),\n      saving: false,\n      deleting: false,\n      errorMessage: '',\n      commonResponseListener: null,\n      persistedContent: normalizedInitialContent,\n      draftContent: normalizedInitialContent,\n      fileNumber: String(fileNumber || ''),\n      propertyAddress: String(propertyAddress || ''),\n      saveUrl: String(saveUrl || ''),\n      exportUrl: String(exportUrl || ''),\n      trixEditorElement() {\n        const explicitEditor = document.getElementById('standard3_qa_comments_editor')\n        if (explicitEditor) return explicitEditor\n\n        const container = document.getElementById('chief_appraiser_standard3_form')\n        return container?.querySelector('trix-editor') || null\n      },\n      standard3HiddenInputElement() {\n        const explicitInput = document.getElementById('standard3_qa_comments_input')\n        if (explicitInput) return explicitInput\n\n        const associated = this.associatedHiddenInput()\n        if (associated) return associated\n\n        const container = document.getElementById('chief_appraiser_standard3_form')\n        return container?.querySelector(\"input[type='hidden'][name='qa_comments']\") || null\n      },\n      associatedHiddenInput() {\n        const editor = this.trixEditorElement()\n        const inputId = editor?.getAttribute('input')\n\n        if (!inputId) return null\n\n        return document.getElementById(inputId)\n      },\n      syncTrixEditorContent(content) {\n        const normalizedContent = String(content || '')\n        const editorElement = this.trixEditorElement()\n        if (!editorElement || !editorElement.editor) return\n\n        if (String(editorElement.value || '') === normalizedContent) return\n\n        editorElement.editor.loadHTML(normalizedContent)\n\n        const hiddenInput = this.standard3HiddenInputElement()\n        if (hiddenInput) {\n          hiddenInput.value = normalizedContent\n          hiddenInput.dispatchEvent(new Event('input', { bubbles: true }))\n        }\n      },\n      currentEditorContent() {\n        const hiddenInput = this.standard3HiddenInputElement()\n        const hiddenContent = String(hiddenInput?.value || '')\n        const editorElement = this.trixEditorElement()\n        const editorContent =\n          editorElement && typeof editorElement.value === 'string' ? String(editorElement.value || '') : ''\n\n        if (hiddenContent.trim().length > 0) return hiddenContent\n        if (editorContent.trim().length > 0) return editorContent\n\n        return ''\n      },\n      plainTextFromHtml(content) {\n        const sanitizedContent = sanitizeRichHtml(content)\n        if (!sanitizedContent.trim()) return ''\n\n        const parser = new DOMParser()\n        const parsedDocument = parser.parseFromString(sanitizedContent, 'text/html')\n        return String(parsedDocument.body?.textContent || '').replace(/\\u00a0/g, ' ').trim()\n      },\n      cancelEdit() {\n        this.errorMessage = ''\n        this.draftContent = this.persistedContent\n        this.editing = false\n        this.$nextTick(() => {\n          this.syncTrixEditorContent(this.persistedContent)\n        })\n      },\n      openEditor() {\n        this.errorMessage = ''\n        this.draftContent = this.persistedContent\n        this.editing = true\n        this.$nextTick(() => {\n          this.syncTrixEditorContent(this.persistedContent)\n        })\n      },\n      registerCommonResponseListener() {\n        if (this.commonResponseListener) return\n\n        this.commonResponseListener = (event) => {\n          if (event?.detail?.name !== 'chief-appraiser-standard3') return\n\n          const incomingContent = String(event.detail.content || '').trim()\n          if (!incomingContent) return\n\n          const hiddenInput = this.standard3HiddenInputElement()\n          const hiddenContent = String(hiddenInput?.value || '')\n          const editorElement = this.trixEditorElement()\n          const editorContent = String(editorElement?.value || '')\n          const currentContent = hiddenContent.trim().length\n            ? hiddenContent\n            : editorContent.trim().length\n              ? editorContent\n                : ''\n          const nextContent = [currentContent, incomingContent].filter(Boolean).join('\\n\\n')\n\n          if (editorElement && editorElement.editor) {\n            editorElement.editor.loadHTML(nextContent)\n          }\n\n          if (hiddenInput) {\n            hiddenInput.value = nextContent\n            hiddenInput.dispatchEvent(new Event('input', { bubbles: true }))\n          }\n\n          this.draftContent = nextContent\n        }\n\n        window.addEventListener('common-response-selected', this.commonResponseListener)\n      },\n      exportPdf() {\n        if (this.exportUrl && this.exportUrl.trim().length > 0) {\n          window.open(this.exportUrl, '_blank', 'noopener')\n          return\n        }\n\n        const exportWindow = window.open('', '_blank')\n        if (!exportWindow || !exportWindow.document) return\n\n        const headingText = ['Order ' + this.fileNumber, this.propertyAddress]\n          .filter((value) => value && value.trim().length > 0)\n          .join('\\n')\n        const sanitizedContent = sanitizeRichHtml(this.persistedContent)\n        const doc = exportWindow.document\n\n        doc.open()\n        doc.write('<!doctype html><html><head><meta charset=\"utf-8\"><title>Standard 3 Review</title><style>body{font-family:Arial,sans-serif;padding:24px;color:#111827;}h1{margin:0 0 8px;font-size:20px;}p.heading{margin:0 0 16px;line-height:1.5;white-space:pre-line;}section.content{line-height:1.5;}section.content p{margin:0 0 12px;}</style></head><body><h1>Standard 3 Review</h1><p id=\"standard3-heading\" class=\"heading\"></p><section id=\"standard3-content\" class=\"content\"></section></body></html>')\n        doc.close()\n\n        const headingElement = doc.getElementById('standard3-heading')\n        if (headingElement) {\n          headingElement.textContent = headingText\n          headingElement.style.display = headingText.trim().length > 0 ? 'block' : 'none'\n        }\n\n        const contentElement = doc.getElementById('standard3-content')\n        if (contentElement) contentElement.innerHTML = sanitizedContent\n\n        setTimeout(() => {\n          exportWindow.focus()\n          exportWindow.print()\n        }, 0)\n      },\n      async logReview() {\n        if (this.saving || this.deleting) return\n        const submittedContent = this.currentEditorContent()\n        const editorElement = this.trixEditorElement()\n        const editorPlainText = editorElement?.editor?.getDocument?.().toString?.().replace(/\\u00a0/g, ' ').trim()\n        const fallbackPlainText = this.plainTextFromHtml(submittedContent)\n        const plainText = String(editorPlainText || fallbackPlainText || '').trim()\n\n        if (!plainText) {\n          this.errorMessage = \"Description can't be blank.\"\n          return\n        }\n\n        this.saving = true\n        this.errorMessage = ''\n\n        try {\n          const csrfToken = document.querySelector('meta[name=csrf-token]')?.content\n          const headers = {\n            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n            Accept: 'text/vnd.turbo-stream.html'\n          }\n          if (csrfToken) headers['X-CSRF-Token'] = csrfToken\n\n          const response = await fetch(this.saveUrl, {\n            method: 'POST',\n            headers,\n            body: new URLSearchParams({\n              'standard_3_review[internal_comment]': submittedContent\n            }).toString()\n          })\n\n          if (!response.ok) {\n            if (response.status === 422) {\n              this.errorMessage = \"Description can't be blank.\"\n              return\n            }\n\n            throw new Error('save-failed')\n          }\n\n          this.persistedContent = submittedContent\n          this.draftContent = submittedContent\n          this.logged = true\n          this.editing = false\n          this.$nextTick(() => {\n            this.syncTrixEditorContent(submittedContent)\n          })\n        } catch (_error) {\n          this.errorMessage = 'Could not log Standard 3 review. Please try again.'\n        } finally {\n          this.saving = false\n        }\n      },\n      async deleteReview() {\n        if (this.saving || this.deleting) return\n\n        if (!window.confirm('Delete Standard 3 review? This cannot be undone.')) return\n\n        this.deleting = true\n        this.errorMessage = ''\n\n        try {\n          const csrfToken = document.querySelector('meta[name=csrf-token]')?.content\n          const headers = { Accept: 'text/vnd.turbo-stream.html' }\n          if (csrfToken) headers['X-CSRF-Token'] = csrfToken\n\n          const response = await fetch(this.saveUrl, {\n            method: 'DELETE',\n            headers\n          })\n\n          if (!response.ok) {\n            if (response.status === 422) {\n              this.errorMessage = 'Could not delete Standard 3 review from database. Please refresh and try again.'\n              return\n            }\n\n            throw new Error('delete-failed')\n          }\n\n          this.persistedContent = ''\n          this.draftContent = ''\n          this.logged = false\n          this.editing = false\n          this.$nextTick(() => {\n            this.syncTrixEditorContent('')\n          })\n        } catch (_error) {\n          this.errorMessage = 'Could not delete Standard 3 review. Please try again.'\n        } finally {\n          this.deleting = false\n        }\n      }\n    }\n  }\n\n  window.chiefAppraiserReviewApp = function (appraisalCheckingState) {\n    return {\n      appraisalChecking: appraisalCheckingState || emptyAppraisalCheckingState(),\n      selectedCount: 0,\n      sendWarning: false,\n      actionMenuOpen: false,\n      auditDrawerOpen: false,\n      init() {\n        document.querySelectorAll('.js-chief-appraiser-finding-checkbox:checked').forEach((checkbox) => {\n          checkedFindingIds.add(checkbox.value)\n        })\n        this.refresh()\n        document.addEventListener('change', (event) => {\n          if (!event.target.classList.contains('js-chief-appraiser-finding-checkbox')) return\n\n          if (event.target.checked) {\n            event.target.setAttribute('checked', 'checked')\n            checkedFindingIds.add(event.target.value)\n          } else {\n            event.target.removeAttribute('checked')\n            checkedFindingIds.delete(event.target.value)\n          }\n          this.refresh()\n        })\n        window.addEventListener('finding-disposition-changed', () => {\n          restoreCheckedState()\n          if (!this.pendingRequiredIds().length) this.sendWarning = false\n          this.refresh()\n        })\n        document.addEventListener('turbo:render', () => {\n          restoreCheckedState()\n          if (!this.pendingRequiredIds().length) this.sendWarning = false\n          this.refresh()\n        })\n      },\n      refresh() {\n        this.selectedCount = document.querySelectorAll('.js-chief-appraiser-finding-checkbox:checked').length\n      },\n      pendingRequiredIds() {\n        return Array.from(document.querySelectorAll('.js-chief-appraiser-finding-checkbox[data-required=\"true\"]'))\n          .map((el) => el.closest('[data-disposition]'))\n          .filter((el) => el && el.dataset.disposition === 'pending')\n          .map((el) => el.id)\n      },\n      openAuditDrawer() {\n        this.auditDrawerOpen = true\n      },\n      closeAuditDrawer() {\n        this.auditDrawerOpen = false\n      },\n      dispositionFinding(url, disposition, note) {\n        new FetchRequest('post', url, {\n          body: new URLSearchParams({ disposition, note }),\n          responseKind: 'turbo-stream'\n        }).perform()\n      }\n    }\n  }\n})()\n", "(function () {\n  const commonResponsesApp = function(name, organizationId, responseType) {\n    return {\n      name: name,\n      organizationId: organizationId,\n      responseType: responseType,\n      dispatch: null,\n      commonResponses: [],\n      selectedCommonResponse: null,\n\n      init: function($dispatch) {\n        this.dispatch = $dispatch\n        const __this = this\n\n        fetch(`/onboarding/organization/${this.organizationId}/common_responses.json?response_type=${this.responseType}`)\n          .then((response) => response.json())\n          .then((data) => {\n            __this.commonResponses = data\n          })\n      },\n\n      useCommonResponse: function(responseId) {\n        let content = ''\n\n        if (responseId) {\n          const normalizedResponseId = String(responseId)\n          const response = this.commonResponses.find((r) => String(r.id) === normalizedResponseId)\n          content = response?.response_text || response?.response || ''\n        }\n        this.dispatch('common-response-selected', { name: this.name, content })\n        this.selectedCommonResponse = ''\n      },\n    }\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.commonResponsesApp = commonResponsesApp\n  }\n\n  return commonResponsesApp\n})()\n", ";(function () {\n  const coverageAreaRadiusApp = function (initialAddress = {}) {\n    const buildFullAddress = (address) => {\n\n      const values = Object.values(address).filter((v) => Boolean(v))\n\n      if (!values.length) return ''\n\n      const fullAddress = address.full_address\n        ? address.full_address\n        : `${address.street}, ${address.city}, ${address.state}, ${address.zip}`\n\n      return fullAddress\n    }\n\n    return {\n      fullAddress: buildFullAddress(initialAddress),\n      stateAcronym: initialAddress.state_acronym,\n      radius: initialAddress.radius,\n      latitude: initialAddress.latitude,\n      longitude: initialAddress.longitude,\n      assignAddressAttrs: function (address) {\n        const fullAddress = buildFullAddress(address)\n\n        this.fullAddress = fullAddress\n        this.stateAcronym = address.state\n        this.latitude = address.latitude\n        this.longitude = address.longitude\n      },\n      setReverseAddressToCoverageAreaName: function () {\n        const geocoder = new google.maps.Geocoder()\n        const latlng = { lat: this.latitude, lng: this.longitude }\n        const coverageAreaNameField = document.getElementById(\n          'coverage_area_coverage_name'\n        )\n\n        geocoder\n          .geocode({ location: latlng })\n          .then((response) => {\n            const result = response.results[0].formatted_address\n\n            if (result) coverageAreaNameField.value = result\n          })\n          .catch((e) => console.log(`Geocoder failed due to: ${e}`))\n      },\n      setCoords: function (eventDetail) {\n        this.latitude = eventDetail.lat\n        this.longitude = eventDetail.lng\n      },\n      setRadius: function (eventDetail) {\n        this.radius = eventDetail\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.coverageAreaRadiusApp = coverageAreaRadiusApp\n  }\n\n  return coverageAreaRadiusApp\n})()\n", "(function () {\n  const coverageAreaStateApp = function (\n    countiesConfig,\n    countySelectId,\n    countiesToTagify = null\n  ) {\n    return {\n      countiesConfig,\n      countiesToTagify,\n      countyTags: null,\n      stateChanged: function (stateId) {\n        fetch(`/counties?state_id=${stateId}&name_suffix=false`, {\n          headers: {\n            Accept: 'application/json',\n            'Content-Type': 'application/json',\n          },\n        })\n          .then((response) => response.json())\n          .then(this.assignCountyTags.bind(this));\n      },\n      assignCountyTags: function (\n        counties,\n        whitelist = null,\n        { selectedTags } = { selectedTags: false }\n      ) {\n        this.destroyCountyTags();\n\n        const countySelect = document.getElementById(countySelectId);\n        const placeholder = 'Start typing to filter the counties';\n\n        const tagInstance = new window.Tagify(countySelect, {\n          whitelist: whitelist || counties,\n          enforceWhitelist: true,\n          placeholder: placeholder,\n          dropdown: {\n            classname: 'tags-look',\n            enabled: 0,\n            maxItems: 999,\n            position: 'all',\n            closeOnSelect: false,\n          },\n        });\n\n        tagInstance.DOM.scope.addEventListener('mousedown', (e) => {\n          if (!e.target.closest('.tagify__tag')) tagInstance.DOM.input.focus();\n        });\n\n        this.countyTags = tagInstance;\n\n        if (selectedTags) this.countyTags.addTags(counties);\n      },\n      toggleCountiesConfig: function (value) {\n        this.countiesConfig = value;\n        this.removeCountyTags();\n      },\n      destroyCountyTags: function () {\n        this.removeCountyTags();\n        this.countyTags?.destroy();\n      },\n      removeCountyTags: function () {\n        this.countyTags?.removeAllTags();\n      },\n    };\n  };\n\n  if (typeof window !== 'undefined') {\n    window.coverageAreaStateApp = coverageAreaStateApp;\n  }\n\n  return coverageAreaStateApp;\n})();\n", ";(function () {\n  const clientAutoAssignmentApp = function (company, clientAutoAssign, thresholdConfig, weightedScoreConfig) {\n    return {\n      autoAssignEnabled: clientAutoAssign.enabled,\n      preferredVendorsEnabled: clientAutoAssign.preferred_vendors,\n      adjustVendorDueDate: clientAutoAssign.adjust_vendor_due_date,\n      thresholdVendorConfig: thresholdConfig.enabled,\n      weightedScoreVendorConfig: weightedScoreConfig.enabled,\n      payingValidation: {},\n      opened: false,\n      showWarnings: false,\n      fetchPayingValidations: function () {\n        fetch(\n          `/paying/companies/${company.id}/clients/${clientAutoAssign.client_id}/fee_table`\n        )\n          .then((response) => response.json())\n          .then((response) => (this.payingValidation = response))\n          .then((_) => (this.showWarnings = true))\n      },\n      orderingErrors: function () {\n        let errors = []\n\n        if (!this.autoAssignEnabled) return errors\n\n        if (!this.preferredVendorsEnabled) {\n          errors.push('preferred_vendors')\n        }\n\n        if (!this.adjustVendorDueDate) {\n          errors.push('adjust_vendor_due_date')\n        }\n\n        return errors\n      },\n      payingErrors: function () {\n        let errors = []\n\n        if (!this.autoAssignEnabled) return errors\n\n        if (!this.payingValidation.product_fee_table_id) {\n          errors.push('missing_product_fee')\n        }\n        if (\n          !this.payingValidation.vendor_fees?.filter((number) =>\n            Boolean(parseFloat(number))\n          ).length\n        ) {\n          errors.push('missing_vendor_fees')\n        }\n\n        return errors\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.clientAutoAssignmentApp = clientAutoAssignmentApp\n  }\n\n  return clientAutoAssignmentApp\n})()\n", "(function () {\n  const customSelectApp = function (selected, { options }) {\n    return {\n      opened: false,\n      open: function () {\n        this.opened = true;\n      },\n      close: function () {\n        this.opened = false;\n      },\n      options,\n      selected: selected,\n      select: function (index) {\n        this.selected = index;\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.customSelectApp = customSelectApp;\n  }\n\n  return customSelectApp;\n})();\n", ";(function () {\n  Trix.config.textAttributes.underline = { tagName: 'u', inheritable: true }\n\n  document.addEventListener('trix-initialize', function (e) {\n    const element = e.target\n    const editor = element.editor\n    const toolbarElement = element.toolbarElement\n    const groupElement = toolbarElement.querySelector(\n      '.trix-button-group.trix-button-group--text-tools'\n    )\n\n    groupElement.insertAdjacentHTML(\n      'beforeend',\n      `<button type=\"button\"\n               class=\"trix-button trix-button--icon trix-button--icon-underline\"\n               data-trix-attribute=\"underline\">\n        <sub>Underline</sub>\n      </button>`\n    )\n\n    let selectedAttributes = new Set()\n\n    function updateSelectedAttributes() {\n      selectedAttributes = new Set()\n\n      const addAttribute = (attribute) => selectedAttributes.add(attribute)\n\n      let selectedRange = editor.getSelectedRange()\n\n      if (selectedRange[0] === selectedRange[1]) selectedRange[1]++\n\n      editor\n        .getDocument()\n        .getDocumentAtRange(selectedRange)\n        .getPieces()\n        .forEach(function (piece) {\n          Object.keys(piece.getAttributes()).forEach(addAttribute)\n        })\n    }\n\n    updateSelectedAttributes()\n\n    element.addEventListener('trix-selection-change', updateSelectedAttributes)\n\n    if (element.dataset.content) editor.insertHTML(element.dataset.content)\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 Sortable from 'sortablejs'\n\n;(function () {\n  const draggableApp = function (\n    { filter, handle } = { filter: null, handle: null }\n  ) {\n    return {\n      init: function (element, callback) {\n        this.sortable = Sortable.create(element, {\n          onEnd: callback,\n          animation: 200,\n          filter,\n          handle,\n        })\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.draggableApp = draggableApp\n  }\n\n  return draggableApp\n})()\n", "(function () {\n  const durationSelectApp = function(currentValueInDuration) {\n    return {\n      valueInDuration: currentValueInDuration,\n      duration: 'hours',\n      selectedFormat: null,\n      inputValue: 0,\n      durationOptions: {\n        hours: 1,\n        days: 24\n      },\n      init: function() {\n        this._loadSelectedFormat();\n        this._loadInputValue();\n      },\n      validateInputValue: function() {\n        this.inputValue =\n          !!this.inputValue && Math.abs(this.inputValue) >= 0 ? Math.abs(this.inputValue) : null\n      },\n      calculateValueInDuration: function() {\n        this.valueInDuration = this.inputValue * this.durationOptions[this.selectedFormat]\n      },\n      _loadSelectedFormat: function() {\n        if (this.valueInDuration >= 24 && this.valueInDuration % 24 === 0) {\n          this.selectedFormat = 'days'\n        } else {\n          this.selectedFormat = 'hours'\n        }\n      },\n      _loadInputValue: function() {\n        if (this.valueInDuration === 0) {\n          this.inputValue = null\n        } else {\n          this.inputValue = this.valueInDuration / this.durationOptions[this.selectedFormat]\n        }\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.durationSelectApp = durationSelectApp;\n  }\n\n  return durationSelectApp;\n})();\n", "(function () {\n  const eventConditionsApp = function () {\n    return {\n      eventConditionField: function (element, event) {\n        let startPos = element.selectionStart;\n        let endPos = element.selectionEnd;\n\n        insertValue(element, event, startPos, endPos);\n      }\n    };\n  };\n\n  function insertValue(element, event, startPos, endPos) {\n    const content = element.value;\n    const eventConditionValue = event.target.value;\n\n    event.target.value = '';\n\n    element.value = content.substring(0, startPos) +\n                    eventConditionValue +\n                    content.substring(endPos, content.length);\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.eventConditionsApp = eventConditionsApp;\n  }\n\n  return eventConditionsApp;\n})();\n", ";(function () {\n  const fileFieldApp = function (hintElementId, maxHintLength) {\n    return {\n      hintElement: document.getElementById(hintElementId),\n      onFileFieldChange: function (e, $dispatch) {\n        const files = e.target.files\n\n        let filename = ''\n\n        if (files.length == 1) {\n          filename = files[0].name\n          filename =\n            filename.length <= maxHintLength\n              ? filename\n              : filename.slice(0, maxHintLength - 13) +\n                '...' +\n                filename.slice(filename.length - 10, filename.length)\n        } else {\n          filename = `${files.length} selected files...`\n        }\n\n        this.hintElement.innerHTML = filename\n\n        $dispatch('file-selected', filename)\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.fileFieldApp = fileFieldApp\n  }\n\n  return fileFieldApp\n})()\n", "(function () {\n  function notifyNow(type, message) {\n    const event = new CustomEvent(\n      'notification-added',\n      { bubbles: true, detail: { type, message } }\n    );\n\n    document.body.dispatchEvent(event);\n  }\n\n  const flashMessageApp = function (notifications = []) {\n    const SHOW_TIME = 5000;\n\n    const buildNotification = notification => ({\n      type: notification[0],\n      message: notification[1],\n      show: true,\n    });\n\n    return {\n      notifications: [],\n      addNotification: function (type, message) {\n        this.notifications.push(buildNotification([type, message]));\n        const __this = this;\n        const toHide = this.notifications.length - 1;\n        setTimeout(() => __this.hideNotification(toHide), SHOW_TIME);\n      },\n      hideNotification: function (index) {\n        this.notifications[index].show = false;\n      },\n      initNotifications: function () {\n        const __this = this;\n\n        notifications.forEach(notification => {\n          __this.addNotification(notification[0], notification[1]);\n        });\n\n        document.body.addEventListener('ajax:success', event => {\n          const { detail: [data] } = event;\n\n          if (data.status) __this.addNotification(data.status, data.message);\n        });\n      },\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.flashMessageApp = flashMessageApp;\n    window.notifyNow = notifyNow;\n  }\n\n  return flashMessageApp;\n})();\n", ";(function () {\n  const googlePayApp = function (config) {\n    return {\n      environment: config.environment,\n      gatewayMerchantId: config.gatewayMerchantId,\n      merchantId: config.merchantId,\n      merchantName: config.merchantName,\n      amount: config.amount,\n      orderId: config.orderId,\n      googlePayClient: null,\n      isReady: false,\n      isProcessing: false,\n      error: null,\n\n      init() {\n        if (!this.merchantId) {\n          console.warn('Google Pay is missing required configuration: merchantId')\n          return\n        }\n        this.loadGooglePayScript()\n          .then(() => this.initializeGooglePayClient())\n          .then(() => this.checkIsReadyToPay())\n          .catch((error) => {\n            this.error =\n              'Failed to initialize Google Pay. Please try again or use a different payment method.' +\n              `Provider error: ${error.message}`\n          })\n      },\n\n      loadGooglePayScript() {\n        return new Promise((resolve, reject) => {\n          if (window.google && window.google.payments) {\n            resolve()\n            return\n          }\n\n          const script = document.createElement('script')\n          script.src = 'https://pay.google.com/gp/p/js/pay.js'\n          script.async = true\n          script.onload = resolve\n          script.onerror = () => {\n            reject(new Error('Failed to load Google Pay script'))\n          }\n          document.head.appendChild(script)\n        })\n      },\n\n      initializeGooglePayClient() {\n        this.googlePayClient = new google.payments.api.PaymentsClient({\n          environment: this.environment,\n        })\n      },\n\n      getBaseCardPaymentMethod() {\n        return {\n          type: 'CARD',\n          parameters: {\n            allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],\n            allowedCardNetworks: ['AMEX', 'DISCOVER', 'MASTERCARD', 'VISA'],\n          },\n        }\n      },\n\n      getTokenizationSpecification() {\n        return {\n          type: 'PAYMENT_GATEWAY',\n          parameters: {\n            gateway: 'authorizenet',\n            gatewayMerchantId: this.gatewayMerchantId,\n          },\n        }\n      },\n\n      getCardPaymentMethod() {\n        return Object.assign({}, this.getBaseCardPaymentMethod(), {\n          tokenizationSpecification: this.getTokenizationSpecification(),\n        })\n      },\n\n      checkIsReadyToPay() {\n        const isReadyToPayRequest = {\n          apiVersion: 2,\n          apiVersionMinor: 0,\n          allowedPaymentMethods: [this.getBaseCardPaymentMethod()],\n        }\n\n        return this.googlePayClient\n          .isReadyToPay(isReadyToPayRequest)\n          .then((response) => {\n            if (response.result) {\n              this.isReady = true\n              this.$nextTick(() => {\n                this.addGooglePayButton()\n              })\n            }\n          })\n          .catch(() => {\n            console.log('Failed to check if ready to pay')\n          })\n      },\n\n      addGooglePayButton() {\n        const buttonContainer = this.$refs.googlePayButton\n\n        if (!buttonContainer) return\n\n        const button = this.googlePayClient.createButton({\n          onClick: () => this.onGooglePaymentButtonClicked(),\n          buttonColor: 'white',\n          buttonType: 'pay',\n          buttonSizeMode: 'static',\n        })\n\n        buttonContainer.appendChild(button)\n      },\n\n      getPaymentDataRequest() {\n        const paymentDataRequest = {\n          apiVersion: 2,\n          apiVersionMinor: 0,\n          allowedPaymentMethods: [this.getCardPaymentMethod()],\n          transactionInfo: {\n            totalPriceStatus: 'FINAL',\n            totalPrice: this.amount,\n            currencyCode: 'USD',\n            countryCode: 'US',\n          },\n          merchantInfo: {\n            merchantName: this.merchantName,\n          },\n        }\n\n        if (this.environment === 'PRODUCTION' && this.merchantId) {\n          paymentDataRequest.merchantInfo.merchantId = this.merchantId\n        }\n\n        return paymentDataRequest\n      },\n\n      onGooglePaymentButtonClicked() {\n        const paymentDataRequest = this.getPaymentDataRequest()\n\n        this.googlePayClient\n          .loadPaymentData(paymentDataRequest)\n          .then((paymentData) => this.processPayment(paymentData))\n          .catch((error) => {\n            if (error.statusCode !== 'CANCELED') {\n              this.error = 'Payment failed. Please try again.'\n            }\n          })\n      },\n\n      processPayment(paymentData) {\n        this.isProcessing = true\n        this.error = null\n\n        try {\n          // Get the complete token from Google Pay\n          // This is the full JSON string with signature, protocolVersion, and signedMessage\n          const googlePayToken = paymentData.paymentMethodData.tokenizationData.token\n\n          // Validate it's a valid JSON string\n          JSON.parse(googlePayToken)\n\n          const formData = new FormData()\n          formData.append('google_pay_token', googlePayToken)\n\n          const googlePayUrl = `/submission_fees/orders/${this.orderId}/google_pay`\n\n          const request = new FetchRequest('post', googlePayUrl, {\n            body: formData,\n            responseKind: 'turbo-stream',\n          })\n\n          request\n            .perform()\n            .then((response) => {\n              if (!response.ok) {\n                this.error = 'Payment failed. Please try again.'\n                this.isProcessing = false\n              }\n            })\n            .catch(() => {\n              this.error = 'An error occurred while processing your payment. Please try again.'\n              this.isProcessing = false\n            })\n        } catch (error) {\n          this.error =\n            'An error occurred while processing your payment. Please try again. ' +\n            `Provider error: ${error.message}`\n          this.isProcessing = false\n        }\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.googlePayApp = googlePayApp\n  }\n\n  return googlePayApp\n})()\n", ";(function () {\n  const PaymentProvidersFactory = {\n    providers: {},\n\n    register(name, ProviderClass) {\n      this.providers[name] = ProviderClass\n      console.log(`\u2713 Registered payment provider: ${name}`)\n    },\n\n    create(name, config) {\n      const ProviderClass = this.providers[name]\n      if (!ProviderClass) {\n        throw new Error(`Payment provider \"${name}\" not found`)\n      }\n      return new ProviderClass(config)\n    },\n\n    isAvailable(name) {\n      return !!this.providers[name]\n    },\n  }\n\n  if (typeof window !== 'undefined') {\n    window.PaymentProvidersFactory = PaymentProvidersFactory\n  }\n\n  return PaymentProvidersFactory\n})()\n", ";(function () {\n  let globalListenersSetup = false\n  let globalAppInstance = null\n\n  const tokenizedPayApp = function (config) {\n    return {\n      providers: {},\n      activeProvider: null,\n      error: config.error || '',\n      isReady: false,\n      isProcessing: false,\n\n      /**\n       * Merges common config with provider-specific config\n       * Provider-specific values override common values\n       */\n      mergeProviderConfig(providerName, commonConfig, providersConfig) {\n        const providerSpecificConfig = providersConfig?.[providerName] || {}\n        return {\n          ...commonConfig,\n          ...providerSpecificConfig,\n          name: providerName,\n        }\n      },\n\n      async init() {\n        globalAppInstance = this\n\n        if (config.onTokenReceived) {\n          this.onTokenReceived = config.onTokenReceived\n        }\n\n        if (!globalListenersSetup) {\n          window.addEventListener('payment:processing', () => {\n            if (globalAppInstance) {\n              globalAppInstance.isProcessing = true\n              globalAppInstance.$nextTick?.(() => {})\n            }\n          })\n\n          window.addEventListener('payment:completed', () => {\n            if (globalAppInstance) {\n              globalAppInstance.isProcessing = false\n              globalAppInstance.$nextTick?.(() => {})\n            }\n          })\n\n          window.addEventListener('payment:error', (e) => {\n            if (globalAppInstance) {\n              globalAppInstance.isProcessing = false\n              globalAppInstance.error = e.detail?.error || 'Payment failed'\n              globalAppInstance.$nextTick?.(() => {})\n            }\n          })\n\n          globalListenersSetup = true\n        }\n\n        try {\n          if (Array.isArray(config.providers)) {\n            await this.initializeMultipleProviders(\n              config.providers,\n              config.commonConfig || {},\n              config.providersConfig || {}\n            )\n          } else {\n            await this.initializeSingleProvider(config.provider, config.config)\n          }\n        } catch (error) {\n          this.error = error.message\n        }\n      },\n\n      /**\n       * Validates if a provider has the required configuration\n       */\n      isProviderConfigValid(providerName, mergedConfig) {\n        // Google Pay requires merchantId to be provided\n        if (providerName === 'google_pay' && !mergedConfig.merchantId) {\n          console.warn(`Provider \"${providerName}\" is missing required configuration: merchantId`)\n          return false\n        }\n        // Apple Pay requires merchantIdentifier to be provided\n        if (providerName === 'apple_pay' && !mergedConfig.merchantIdentifier) {\n          console.warn(\n            `Provider \"${providerName}\" is missing required configuration: merchantIdentifier`\n          )\n          return false\n        }\n        return true\n      },\n\n      async initializeMultipleProviders(providerNames, commonConfig, providersConfig) {\n        const promises = providerNames.map(async (providerName) => {\n          try {\n            const updateParentState = (stateName, value) => {\n              this.providers[providerName][stateName] = value\n              this[stateName] = value\n            }\n\n            // Merge common config with provider-specific config\n            const mergedConfig = this.mergeProviderConfig(\n              providerName,\n              commonConfig,\n              providersConfig\n            )\n\n            // Validate provider configuration\n            if (!this.isProviderConfigValid(providerName, mergedConfig)) {\n              this.providers[providerName] = {\n                instance: null,\n                isReady: false,\n                error: `Provider \"${providerName}\" not properly configured`,\n              }\n              return\n            }\n\n            const provider = PaymentProvidersFactory.create(providerName, {\n              ...mergedConfig,\n              updateParentState,\n              flowMode: config.flowMode,\n              onTokenReceived: config.onTokenReceived,\n            })\n            await provider.init()\n            this.providers[providerName] = {\n              instance: provider,\n              isReady: provider.isReady,\n              isProcessing: false,\n              error: null,\n            }\n          } catch (error) {\n            console.error(`Failed to initialize ${providerName}:`, error)\n            this.providers[providerName] = {\n              instance: null,\n              isReady: false,\n              error: error.message,\n            }\n          }\n        })\n\n        await Promise.all(promises)\n        this.isReady = Object.values(this.providers).some((p) => p.isReady)\n\n        if (this.$nextTick) {\n          this.$nextTick(() => {\n            this.setupButtons()\n          })\n        } else {\n          setTimeout(() => this.setupButtons(), 0)\n        }\n      },\n\n      async initializeSingleProvider(providerName, config) {\n        const updateParentState = (stateName, value) => {\n          this.providers[providerName][stateName] = value\n          this[stateName] = value\n        }\n\n        const provider = PaymentProvidersFactory.create(providerName, {\n          ...config,\n          name: providerName,\n          updateParentState,\n          flowMode: config.flowMode || 'direct',\n          onTokenReceived: config.onTokenReceived,\n        })\n        await provider.init()\n        this.providers[providerName] = {\n          instance: provider,\n          isReady: provider.isReady,\n          isProcessing: false,\n          error: null,\n        }\n        this.activeProvider = providerName\n        this.isReady = provider.isReady\n\n        if (this.$nextTick) {\n          this.$nextTick(() => {\n            this.setupButtons()\n          })\n        } else {\n          setTimeout(() => this.setupButtons(), 0)\n        }\n      },\n\n      setActiveProvider(providerName) {\n        if (this.providers[providerName]) {\n          this.activeProvider = providerName\n        }\n      },\n\n      getActiveProvider() {\n        return this.providers[this.activeProvider]?.instance\n      },\n\n      setProcessing(value) {\n        this.isProcessing = value\n      },\n\n      setupButtons() {\n        if (this.providers.google_pay?.isReady && this.providers.google_pay?.instance) {\n          const container = document.querySelector('[x-ref=\"googlePayButton\"]')\n          if (container && !container.querySelector('button')) {\n            const self = this\n            this.providers.google_pay.instance.createButton(container, async function () {\n              await this.onPaymentButtonClicked()\n            })\n          }\n        }\n\n        // Setup Apple Pay button if ready\n        if (this.providers.apple_pay?.isReady && this.providers.apple_pay?.instance) {\n          const container = document.querySelector('[x-ref=\"applePayButton\"]')\n          if (container && !container.querySelector('button')) {\n            const self = this\n            this.providers.apple_pay.instance.createButton(container, async function () {\n              await this.onPaymentButtonClicked()\n            })\n          }\n        }\n\n        // Setup PayPal button if ready (future)\n        // if (this.providers.paypal?.isReady && this.providers.paypal?.instance) {\n        //   const container = document.querySelector('[x-ref=\"paypalButton\"]')\n        //   if (container) {\n        //     this.providers.paypal.instance.createButton(container)\n        //   }\n        // }\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.tokenizedPayApp = tokenizedPayApp\n  }\n\n  return tokenizedPayApp\n})()\n", ";(function () {\n  class BaseProvider {\n    constructor(config) {\n      if (config.flowMode === 'direct' && !config.backendUrl) {\n        throw new Error('backendUrl is required for direct flow mode')\n      }\n\n      this.name = config.name\n      this.environment = config.environment\n      this.merchantName = config.merchantName\n      this.amount = config.amount\n      this.orderId = config.orderId\n      this.backendUrl = config.backendUrl\n      this.isReady = false\n      this.isProcessing = false\n      this.error = null\n      this.flowMode = config.flowMode || 'direct'\n      this.onTokenReceived = config.onTokenReceived || null\n\n      // Injection of dependency - function to update the state of the Alpine parent\n      this.updateParentState = config.updateParentState || (() => {})\n    }\n\n    async init() {\n      throw new Error('init() must be implemented by subclass')\n    }\n\n    async processPayment(paymentData) {\n      throw new Error('processPayment() must be implemented by subclass')\n    }\n\n    async sendToBackend(token) {\n      try {\n        this.isProcessing = true\n        this.error = null\n\n        // Calls the injected function from Alpine to also update the state there\n        this.updateParentState('isProcessing', true)\n\n        // Dispatch custom event so UI can react\n        window.dispatchEvent(\n          new CustomEvent('payment:processing', { detail: { provider: this.name } })\n        )\n\n        const formData = new FormData()\n        formData.append('token', token)\n\n        const url = `${this.backendUrl}?provider=${this.name}`\n\n        const request = new FetchRequest('post', url, {\n          body: formData,\n          responseKind: 'json',\n        })\n\n        const response = await request.perform()\n\n        if (!response.ok) {\n          this.error = 'Payment failed. Please try again.'\n          this.isProcessing = false\n          this.updateParentState('isProcessing', false)\n          window.dispatchEvent(\n            new CustomEvent('payment:error', { detail: { provider: this.name, error: this.error } })\n          )\n          return false\n        }\n\n        return true\n      } catch (error) {\n        this.error =\n          'An error occurred while processing your payment. Please try again. ' +\n          `Provider error: ${error.message}`\n        this.isProcessing = false\n        this.updateParentState('isProcessing', false)\n        window.dispatchEvent(\n          new CustomEvent('payment:error', { detail: { provider: this.name, error: this.error } })\n        )\n        return false\n      }\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.BaseProvider = BaseProvider\n  }\n\n  return BaseProvider\n})()\n", ";(function () {\n  class GooglePayProvider extends BaseProvider {\n    constructor(config) {\n      super(config)\n      this.gatewayMerchantId = config.gatewayMerchantId\n      this.merchantId = config.merchantId\n      this.googlePayClient = null\n    }\n\n    async init() {\n      try {\n        await this.loadGooglePayScript()\n        this.initializeGooglePayClient()\n        await this.checkIsReadyToPay()\n      } catch (error) {\n        this.error =\n          'Failed to initialize Google Pay. Please try again or use a different payment method. ' +\n          `Provider error: ${error.message}`\n        throw error\n      }\n    }\n\n    loadGooglePayScript() {\n      return new Promise((resolve, reject) => {\n        if (window.google && window.google.payments) {\n          resolve()\n          return\n        }\n\n        const script = document.createElement('script')\n        script.src = 'https://pay.google.com/gp/p/js/pay.js'\n        script.async = true\n        script.onload = resolve\n        script.onerror = () => {\n          reject(new Error('Failed to load Google Pay script'))\n        }\n        document.head.appendChild(script)\n      })\n    }\n\n    initializeGooglePayClient() {\n      this.googlePayClient = new google.payments.api.PaymentsClient({\n        environment: this.environment,\n      })\n    }\n\n    getBaseCardPaymentMethod() {\n      return {\n        type: 'CARD',\n        parameters: {\n          allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],\n          allowedCardNetworks: ['AMEX', 'DISCOVER', 'MASTERCARD', 'VISA'],\n        },\n      }\n    }\n\n    getTokenizationSpecification() {\n      return {\n        type: 'PAYMENT_GATEWAY',\n        parameters: {\n          gateway: 'authorizenet',\n          gatewayMerchantId: this.gatewayMerchantId,\n        },\n      }\n    }\n\n    getCardPaymentMethod() {\n      return Object.assign({}, this.getBaseCardPaymentMethod(), {\n        tokenizationSpecification: this.getTokenizationSpecification(),\n      })\n    }\n\n    async checkIsReadyToPay() {\n      const isReadyToPayRequest = {\n        apiVersion: 2,\n        apiVersionMinor: 0,\n        allowedPaymentMethods: [this.getBaseCardPaymentMethod()],\n      }\n\n      try {\n        const response = await this.googlePayClient.isReadyToPay(isReadyToPayRequest)\n        if (response.result) {\n          this.isReady = true\n        }\n      } catch (error) {\n        // Failed to check if ready to pay\n      }\n    }\n\n    getPaymentDataRequest() {\n      const paymentDataRequest = {\n        apiVersion: 2,\n        apiVersionMinor: 0,\n        allowedPaymentMethods: [this.getCardPaymentMethod()],\n        transactionInfo: {\n          totalPriceStatus: 'FINAL',\n          totalPrice: this.amount,\n          currencyCode: 'USD',\n          countryCode: 'US',\n        },\n        merchantInfo: {\n          merchantName: this.merchantName,\n        },\n      }\n\n      if (this.environment === 'PRODUCTION' && this.merchantId) {\n        paymentDataRequest.merchantInfo.merchantId = this.merchantId\n      }\n\n      return paymentDataRequest\n    }\n\n    async onPaymentButtonClicked() {\n      const paymentDataRequest = this.getPaymentDataRequest()\n\n      try {\n        const paymentData = await this.googlePayClient.loadPaymentData(paymentDataRequest)\n        await this.processPayment(paymentData)\n      } catch (error) {\n        if (error.statusCode !== 'CANCELED') {\n          this.error = 'Payment failed. Please try again.'\n        }\n      }\n    }\n\n    async processPayment(paymentData) {\n      try {\n        const googlePayToken = paymentData.paymentMethodData.tokenizationData.token\n\n        // Validate it's a valid JSON string\n        JSON.parse(googlePayToken)\n\n        if (this.flowMode === 'form' && this.onTokenReceived) {\n          this.onTokenReceived(googlePayToken, this.name)\n        } else {\n          await this.sendToBackend(googlePayToken)\n        }\n      } catch (error) {\n        this.error =\n          'An error occurred while processing your payment. Please try again. ' +\n          `Provider error: ${error.message}`\n        this.isProcessing = false\n      }\n    }\n\n    createButton(container, onClick) {\n      if (!container || !this.googlePayClient) return\n\n      const self = this\n      const button = this.googlePayClient.createButton({\n        onClick: async () => {\n          await onClick?.call(self)\n        },\n        buttonColor: 'white',\n        buttonType: 'plain',\n        buttonSizeMode: 'fill',\n      })\n\n      // Ensure consistent height\n      button.style.width = '100%'\n      button.style.height = '48px'\n      button.style.minHeight = '48px'\n\n      container.appendChild(button)\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.GooglePayProvider = GooglePayProvider\n  }\n\n  return GooglePayProvider\n})()\n", ";(function () {\n  class ApplePayProvider extends BaseProvider {\n    constructor(config) {\n      super(config)\n      this.merchantIdentifier = config.merchantIdentifier // Apple Merchant ID\n      this.merchantValidationUrl = config.merchantValidationUrl // URL for merchant validation\n      this.countryCode = config.countryCode || 'US'\n      this.currencyCode = config.currencyCode || 'USD'\n      this.supportedNetworks = config.supportedNetworks || [\n        'visa',\n        'masterCard',\n        'amex',\n        'discover',\n      ]\n      this.merchantCapabilities = config.merchantCapabilities || ['supports3DS']\n    }\n\n    async init() {\n      await this.checkApplePayAvailability()\n    }\n\n    async checkApplePayAvailability() {\n      if (!window.ApplePaySession) {\n        this.isReady = false\n        this.error = 'Apple Pay is not supported on this browser'\n        return\n      }\n\n      try {\n        if (!ApplePaySession.canMakePayments()) {\n          this.isReady = false\n          this.error = 'Apple Pay is not available on this device'\n          return\n        }\n\n        this.isReady = true\n      } catch (error) {\n        this.isReady = false\n        // Check if it's the HTTPS requirement error\n        if (error.name === 'InvalidAccessError') {\n          this.error = 'Apple Pay requires HTTPS. Please use a secure connection.'\n        } else {\n          this.error = `Apple Pay is not available: ${error.message}`\n        }\n      }\n    }\n\n    getPaymentRequest() {\n      return {\n        countryCode: this.countryCode,\n        currencyCode: this.currencyCode,\n        supportedNetworks: this.supportedNetworks,\n        merchantCapabilities: this.merchantCapabilities,\n        total: {\n          label: this.merchantName,\n          amount: this.amount,\n          type: 'final',\n        },\n      }\n    }\n\n    async onPaymentButtonClicked() {\n      try {\n        const paymentRequest = this.getPaymentRequest()\n        const session = new ApplePaySession(3, paymentRequest)\n\n        session.onvalidatemerchant = async (event) => {\n          try {\n            // Validate merchant with Apple through backend\n            const merchantSession = await this.validateMerchant(event.validationURL)\n            session.completeMerchantValidation(merchantSession)\n          } catch (error) {\n            console.error('Merchant validation failed:', error)\n            session.abort()\n            this.error = 'Merchant validation failed. Please try again.'\n          }\n        }\n\n        session.onpaymentauthorized = async (event) => {\n          try {\n            const success = await this.processPayment(event.payment)\n\n            if (success) {\n              session.completePayment(ApplePaySession.STATUS_SUCCESS)\n            } else {\n              session.completePayment(ApplePaySession.STATUS_FAILURE)\n            }\n          } catch (error) {\n            console.error('Payment processing failed:', error)\n            session.completePayment(ApplePaySession.STATUS_FAILURE)\n            this.error = 'Payment processing failed. Please try again.'\n          }\n        }\n\n        session.oncancel = () => {\n          // User cancelled the payment\n          this.isProcessing = false\n          this.updateParentState('isProcessing', false)\n        }\n\n        session.begin()\n      } catch (error) {\n        this.error = 'Payment failed. Please try again.'\n        console.error('Apple Pay error:', error)\n      }\n    }\n\n    async validateMerchant(validationURL) {\n      // This must be called on your backend server\n      // The backend validates with Apple and returns the merchant session\n      if (!this.merchantValidationUrl) {\n        throw new Error('Merchant validation URL is required for Apple Pay')\n      }\n\n      try {\n        const formData = new FormData()\n        formData.append('validation_url', validationURL)\n        formData.append('merchant_identifier', this.merchantIdentifier)\n\n        const url = this.merchantValidationUrl\n\n        const request = new FetchRequest('post', url, {\n          body: formData,\n          responseKind: 'json',\n        })\n\n        const response = await request.perform()\n\n        if (!response.ok) {\n          throw new Error('Merchant validation failed')\n        }\n\n        return response.json\n      } catch (error) {\n        console.error('Merchant validation error:', error)\n        throw error\n      }\n    }\n\n    async processPayment(payment) {\n      try {\n        // Extract the payment token from Apple Pay\n        const paymentData = payment.token.paymentData\n\n        // Convert payment data to Base64-encoded string as required by Authorize.Net\n        const paymentDataString = JSON.stringify(paymentData)\n        const base64EncodedData = btoa(paymentDataString)\n\n        // Create the opaque data object for Authorize.Net\n        // According to Authorize.Net docs, Apple Pay uses COMMON.APPLE.INAPP.PAYMENT\n        const opaqueData = {\n          dataDescriptor: 'COMMON.APPLE.INAPP.PAYMENT',\n          dataValue: base64EncodedData,\n        }\n\n        const token = JSON.stringify(opaqueData)\n\n        if (this.flowMode === 'form' && this.onTokenReceived) {\n          this.onTokenReceived(token, this.name)\n          return true\n        } else {\n          return await this.sendToBackend(token)\n        }\n      } catch (error) {\n        this.error =\n          'An error occurred while processing your payment. Please try again. ' +\n          `Provider error: ${error.message}`\n        this.isProcessing = false\n        return false\n      }\n    }\n\n    createButton(container, onClick) {\n      if (!container || !this.isReady) return\n\n      const button = document.createElement('button')\n      button.className = 'apple-pay-button'\n      button.type = 'button'\n      button.lang = 'en'\n\n      // Match Google Pay button size\n      button.style.width = '100%'\n      button.style.height = '48px'\n      button.style.minHeight = '48px'\n\n      // Use white-outline style which has border by default\n      button.style.setProperty('-apple-pay-button-style', 'white-outline')\n      button.style.setProperty('background-color', '#fff', 'important')\n      button.style.setProperty('border', '1px solid #000', 'important')\n\n      const self = this\n      button.addEventListener('click', async () => {\n        await onClick?.call(self)\n      })\n\n      container.appendChild(button)\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.ApplePayProvider = ApplePayProvider\n  }\n\n  return ApplePayProvider\n})()\n", ";(function () {\n  // Register all available payment providers\n  if (typeof window !== 'undefined' && window.PaymentProvidersFactory) {\n    // Register Google Pay provider\n    if (window.GooglePayProvider) {\n      PaymentProvidersFactory.register('google_pay', GooglePayProvider)\n    }\n\n    // Register Apple Pay provider\n    if (window.ApplePayProvider) {\n      PaymentProvidersFactory.register('apple_pay', ApplePayProvider)\n    }\n\n    // PayPal provider will be registered here when implemented\n    // PaymentProvidersFactory.register('paypal', PayPalProvider)\n  }\n})()\n", "(function () {\n  const integrationsStatusApp = function () {\n    return {\n      show: false,\n      integrationOrder: false,\n      proxypicsOrder: false,\n      async init(orderId) {\n        this.integrationOrder = await checkIntegrationOrder(orderId);\n        this.proxypicsOrder = await checkProxypicsOrder(orderId);\n\n        this.show = this.integrationOrder || this.proxypicsOrder;\n      }\n    };\n  };\n\n  function checkIntegrationOrder(orderId) {\n    return fetch(`/integrations/orders/${orderId}/order_status`, {\n      method: 'GET'\n    }).then(response => response.json())\n      .then(data => { return data.integration_order })\n  }\n\n  function checkProxypicsOrder(orderId) {\n    return fetch(`/proxypics/orders/${orderId}/order_status`, {\n      method: 'GET'\n    }).then(response => response.json())\n      .then(data => { return data.integration_order })\n  }\n\n  if (typeof window !== 'undefined') {\n    window.integrationsStatusApp = integrationsStatusApp;\n  }\n\n  return integrationsStatusApp;\n})();\n", "window.invoiceSettingsSimulation = function() {\n  return {\n    automaticInvoice: false,\n    frequency: 'daily',\n    dayOfWeek: 'monday',\n    biweeklyStartDay: 1,\n    dayOfMonth: 1,\n\n    get nextExecutionDates() {\n      if (!this.biweeklyStartDay && !this.dayOfMonth) return [];\n\n      const today = new Date();\n      const formatDate = (date) => date.toLocaleDateString('en-US', { day: 'numeric', month: 'short' });\n\n      if (this.frequency === 'biweekly' && this.biweeklyStartDay) {\n        return this._getBiweeklyDates(today, formatDate);\n      } else if (this.frequency === 'monthly' && this.dayOfMonth) {\n        return this._getMonthlyDates(today, formatDate);\n      }\n\n      return [];\n    },\n\n    _getBiweeklyDates(today, formatDate) {\n      const currentMonth = today.getMonth();\n      const currentYear = today.getFullYear();\n      const nextMonth = currentMonth + 1;\n      const nextYear = nextMonth > 11 ? currentYear + 1 : currentYear;\n      const adjustedNextMonth = nextMonth > 11 ? 0 : nextMonth;\n\n      const lastDayOfCurrentMonth = new Date(currentYear, currentMonth + 1, 0).getDate();\n      const lastDayOfNextMonth = new Date(nextYear, adjustedNextMonth + 1, 0).getDate();\n\n      const startDay = parseInt(this.biweeklyStartDay, 10);\n      const secondDay = startDay + 15;\n\n      let firstDate, secondDate;\n      const todayDay = today.getDate();\n\n      if (todayDay < startDay) {\n        firstDate = new Date(currentYear, currentMonth, startDay);\n\n        if (secondDay > lastDayOfCurrentMonth) {\n          const adjustedSecondDay = secondDay - lastDayOfCurrentMonth;\n          secondDate = new Date(nextYear, adjustedNextMonth, adjustedSecondDay);\n        } else {\n          secondDate = new Date(currentYear, currentMonth, secondDay);\n        }\n      }\n      else if (todayDay < secondDay || secondDay > lastDayOfCurrentMonth) {\n        if (secondDay > lastDayOfCurrentMonth) {\n          const adjustedSecondDay = secondDay - lastDayOfCurrentMonth;\n          firstDate = new Date(nextYear, adjustedNextMonth, adjustedSecondDay);\n          secondDate = new Date(nextYear, adjustedNextMonth, startDay);\n        } else {\n          firstDate = new Date(currentYear, currentMonth, secondDay);\n          secondDate = new Date(nextYear, adjustedNextMonth, startDay);\n        }\n      }\n      else {\n        firstDate = new Date(nextYear, adjustedNextMonth, startDay);\n        const nextSecondDay = startDay + 15;\n\n        if (nextSecondDay > lastDayOfNextMonth) {\n          const adjustedNextSecondDay = nextSecondDay - lastDayOfNextMonth;\n          secondDate = new Date(nextYear, adjustedNextMonth + 1 > 11 ? 0 : adjustedNextMonth + 1, adjustedNextSecondDay);\n        } else {\n          secondDate = new Date(nextYear, adjustedNextMonth, nextSecondDay);\n        }\n      }\n\n      this._adjustToLastDayOfMonth(firstDate);\n      this._adjustToLastDayOfMonth(secondDate);\n\n      return [formatDate(firstDate), formatDate(secondDate)];\n    },\n\n    _getMonthlyDates(today, formatDate) {\n      const currentMonth = today.getMonth();\n      const currentYear = today.getFullYear();\n      const nextMonth = currentMonth + 1;\n      const nextYear = nextMonth > 11 ? currentYear + 1 : currentYear;\n      const adjustedNextMonth = nextMonth > 11 ? 0 : nextMonth;\n\n      const dayOfMonth = parseInt(this.dayOfMonth, 10);\n\n      let firstDate = new Date(currentYear, currentMonth, dayOfMonth);\n      let secondDate;\n\n      if (firstDate < today) {\n        firstDate = new Date(nextYear, adjustedNextMonth, dayOfMonth);\n        const secondMonth = adjustedNextMonth + 1 > 11 ? 0 : adjustedNextMonth + 1;\n        const secondYear = secondMonth === 0 && adjustedNextMonth === 11 ? nextYear + 1 : nextYear;\n        secondDate = new Date(secondYear, secondMonth, dayOfMonth);\n      } else {\n        secondDate = new Date(nextYear, adjustedNextMonth, dayOfMonth);\n      }\n\n      this._adjustToLastDayOfMonth(firstDate);\n      this._adjustToLastDayOfMonth(secondDate);\n\n      return [formatDate(firstDate), formatDate(secondDate)];\n    },\n\n    _adjustToLastDayOfMonth(date) {\n      const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n      if (date.getDate() > lastDay) {\n        date.setDate(lastDay);\n      }\n    }\n  };\n};\n", ";(function () {\n  const mapViewApp = function (config = {}) {\n    return {\n      ...config,\n      placeMapContainer: null,\n      placeMap: null,\n      loading: true,\n      hasPropertyImage: false,\n      displayPropertyImage: false,\n      displayStreetView: false,\n      displayMap: false,\n\n      init: function ($refs) {\n        const __this = this\n        if (__this.alpineVersion >= 3) { Alpine.store('mapViewApp', __this) }\n\n        fetch(__this.metadataUrl)\n          .then((response) => response.json())\n          .then((json) => {\n            if (json.status === 'OK' && __this.enabledViews.includes('property_image')) {\n              __this.hasPropertyImage = true\n              __this.displayPropertyImage = true\n            } else {\n              __this.hasPropertyImage = false\n              __this.displayMap = true\n            }\n\n            __this.loading = false\n          })\n\n        __this.initPlaceMap($refs)\n      },\n\n      initPlaceMap: async function ($refs) {\n        const { Map } = await google.maps.importLibrary('maps')\n        const { AdvancedMarkerElement } = await google.maps.importLibrary('marker')\n\n        this.placeMapContainer = $refs.placeMapContainer\n\n        this.placeMap = new Map(this.placeMapContainer.querySelector('.map-frame'), {\n          center: this.mapCenter(),\n          zoom: this.zoom,\n          mapId: 'place-map',\n          mapTypeId: this.maptype,\n          streetViewControl: false,\n          fullscreenControl: true,\n          fullscreenControlOptions: {\n            position: google.maps.ControlPosition.INLINE_END_BLOCK_END\n          },\n          zoomControl: true,\n          zoomControlOptions: {\n            position: google.maps.ControlPosition.INLINE_END_BLOCK_END\n          },\n          cameraControl: false\n        })\n\n        new AdvancedMarkerElement({\n          map: this.placeMap,\n          position: this.mapCenter(),\n          title: this.fullAddress || this.latLng\n        })\n\n        this.placeMapContainer.querySelectorAll('.markers li .marker').forEach((marker) => {\n          const title = marker.dataset.title\n          const position = {\n            lat: parseFloat(marker.dataset.lat),\n            lng: parseFloat(marker.dataset.lng)\n          }\n\n          new google.maps.marker.AdvancedMarkerElement({\n            map: this.placeMap,\n            position,\n            title,\n            content: marker\n          })\n        })\n      },\n\n      mapCenter: function () {\n        if (this.latitude && this.longitude) {\n          return { lat: parseFloat(this.latitude), lng: parseFloat(this.longitude) }\n        } else {\n          return { q: this.fullAddress }\n        }\n      },\n\n      toggleTo: function (target) {\n        this.loading = true\n        this.disableAll()\n\n        switch (target) {\n          case 'map':\n            this.displayMap = true\n            break\n          case 'streetView':\n            this.displayStreetView = true\n            break\n          default:\n            this.displayPropertyImage = true\n        }\n\n        this.loading = false\n      },\n\n      disableAll: function () {\n        this.displayMap = false\n        this.displayStreetView = false\n        this.displayPropertyImage = false\n      }\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.mapViewApp = mapViewApp\n  }\n\n  return mapViewApp\n})()\n", "(function () {\n  const mergeFieldsApp = function () {\n    return {\n      mergeTrixField: function (element, event) {\n        element.editor.insertString(event.target.value);\n        event.target.value = '';\n      },\n      mergeField: function (element, event) {\n        let startPos = element.selectionStart;\n        let endPos = element.selectionEnd;\n\n        insertValue(element, event, startPos, endPos);\n      }\n    };\n  };\n\n  function insertValue(element, event, startPos, endPos) {\n    const content = element.value;\n    const mergeFieldValue = event.target.value;\n\n    event.target.value = '';\n\n    element.value = content.substring(0, startPos) +\n                    mergeFieldValue +\n                    content.substring(endPos, content.length);\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.mergeFieldsApp = mergeFieldsApp;\n  }\n\n  return mergeFieldsApp;\n})();\n", "(function () {\n  const modalApp = function (modalDialogId, confirmModalId) {\n    return {\n      opened: false,\n      confirmationUri: null,\n      showClose: true,\n      confirmationMethod: null,\n      openConfirmationModal: function (event) {\n        const modalDialog = document.getElementById(modalDialogId);\n\n        this.confirmationUri = event.detail.uri;\n        this.confirmationMethod = event.detail.method || 'delete';\n        modalDialog.innerHTML = document.getElementById(confirmModalId).innerHTML;\n        this.opened = true;\n      },\n      openModal: function (event) {\n        const modalDialog = document.getElementById(modalDialogId);\n\n        if (event.detail.template) {\n          modalDialog.innerHTML = document.getElementById(event.detail.template).innerHTML;\n        }\n\n        if (typeof event.detail.callback === 'function') {\n          event.detail.callback();\n        } else if (typeof event.detail.callback === 'string') {\n          eval(event.detail.callback);\n        }\n\n        this.opened = true;\n        this.showClose = !event.detail.hideClose;\n      },\n      dismiss: function () {\n        this.opened = false;\n        document.getElementById('modal_app')?.removeAttribute('src');\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.modalApp = modalApp;\n  }\n\n  return modalApp;\n})();\n", "(function () {\n  const nestedDynamicForm = function (attributes) {\n    return {\n      fields: [],\n      addNewField() {\n        this.fields.push(attrsToAdd(attributes));\n      },\n      removeField(index) {\n        this.fields[index].destroy = true\n      },\n      labels(index) {\n        return this.fields.length && index === 0;\n      },\n      concatAttrsToPlaceholder(first_attr, second_attr, empty) {\n        if (first_attr || second_attr) {\n          return `${first_attr.toUpperCase()} ${second_attr.replace(/_/g, ' ')}`;\n        } else {\n          return empty;\n        }\n      },\n    };\n  };\n\n  function attrsToAdd(attributes) {\n    return attributes.reduce((hash, attribute) => ({ ...hash, [attribute]: '' }), {});\n  }\n\n  if (typeof window !== 'undefined') window.nestedDynamicForm = nestedDynamicForm;\n\n  return nestedDynamicForm;\n})();\n", "import qs from 'qs';\n\n(function () {\n  const newInvoiceApp = function (invoices, searchPath, clientId, closedInvoiceId, selectedInvoices = []) {\n    function matchFilterInput(el) {\n      return el.name.match(/^closed_invoice\\[q\\]\\[(\\w+)\\]$/)\n    }\n\n    return {\n      invoices,\n      invoiceIds: invoices.map(i => i.id),\n      selectedInvoiceIds: (selectedInvoices.length ? selectedInvoices : invoices).map(i => i.id),\n      clientId,\n      closedInvoiceId,\n      closedInvoiceAlerts: {},\n      filtersOpen: false,\n      durties: {},\n      durty: function () {\n        return Object.values(this.durties).includes(true)\n      },\n      total: function () {\n        return this.invoices.reduce((acc, invoice) => {\n          if (this.selectedInvoiceIds.includes(invoice.id)) {\n            return acc + parseFloat(invoice.balance)\n          } else {\n            return acc\n          }\n        }, 0).toLocaleString('en-US', { style: 'currency', currency: 'USD' })\n      },\n      search: function ($dispatch) {\n        const params = { q: {} }\n\n        document.querySelectorAll('input, select').forEach(el => {\n          const matched = matchFilterInput(el)\n          if (matched && matched[1] && el.value && el.value !== '') {\n            params.q[matched[1]] = el.value\n          }\n        })\n\n        const query = qs.stringify(params)\n\n        window.location.href = `${searchPath}?${query}`\n\n        // document\n        //   .getElementById('closed_invoice_invoices_table')\n        //   .setAttribute('src', `${searchPath}?${query}`)\n\n        $dispatch('dismiss-drawer-filter')\n      },\n      clearFilters: function ($dispatch) {\n        document.querySelectorAll('input, select').forEach(el => {\n          if (!matchFilterInput(el)) return\n\n          el.value = ''\n          this.durties[el.name] = false\n        })\n\n        window.location.href = searchPath\n\n        // this.search($dispatch)\n      },\n      checkIfAlreadyClosed: function (invoiceId) {\n        fetch(`/paying/clients/${clientId}/invoices/check_closed_invoice?closed_invoice_id=${closedInvoiceId}&invoice_id=${invoiceId}`)\n          .then(r => r.json())\n          .then(data => {\n            if (data.closed) {\n              this.closedInvoiceAlerts = {\n                ...this.closedInvoiceAlerts,\n                [invoiceId]: `${data.file_number} is already included in another closed invoice.`\n              }\n            }\n          })\n      },\n      toggleSelection: function (e) {\n        const invoiceId = e.target.dataset.id\n\n        if (e.target.checked) {\n          this.selectedInvoiceIds = [...this.selectedInvoiceIds, invoiceId]\n          this.checkIfAlreadyClosed(invoiceId)\n        } else {\n          this.selectedInvoiceIds = this.selectedInvoiceIds.filter(id => id !== invoiceId)\n          const { [invoiceId]: _, ...rest } = this.closedInvoiceAlerts\n          this.closedInvoiceAlerts = rest\n        }\n\n        if (this.selectedInvoiceIds.length === this.invoiceIds.length) {\n          document.querySelector('#toggle-all').checked = true\n        } else {\n          document.querySelector('#toggle-all').checked = false\n        }\n      },\n      toggleAllSelection: function (e) {\n        if (e.target.checked) {\n          this.selectedInvoiceIds = [...this.invoiceIds]\n          document.querySelectorAll('.invoice-checkbox').forEach(el => el.checked = true)\n          this.invoiceIds.forEach(id => this.checkIfAlreadyClosed(id))\n        } else {\n          this.selectedInvoiceIds = []\n          this.closedInvoiceAlerts = {}\n          document.querySelectorAll('.invoice-checkbox').forEach(el => el.checked = false)\n        }\n      },\n      init: function (form, $dispatch) {\n        form.querySelectorAll('*[data-filled]').forEach(el => {\n          this.durties[el.name] = el.dataset.filled === 'true'\n        })\n\n        form.querySelectorAll('input[type=text], select').forEach(el => {\n          el.addEventListener('keydown', (e) => {\n            if (e.key === 'Enter') {\n              e.preventDefault()\n              this.search($dispatch)\n            }\n          })\n\n          if (!matchFilterInput(el) || el.dataset.skipDirty) return\n\n          el.addEventListener('change', () => {\n            if (el.value === '') {\n              this.durties[el.name] = false\n            } else {\n              this.durties[el.name] = true\n            }\n          })\n        })\n\n        setTimeout(() => {\n          document.querySelectorAll('.invoice-checkbox').forEach((el) => {\n            if (this.selectedInvoiceIds.includes(el.dataset.id)) {\n              el.checked = true\n              this.checkIfAlreadyClosed(el.dataset.id)\n            }\n          })\n        }, 100)\n      }\n    }\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.newInvoiceApp = newInvoiceApp;\n  }\n\n  return newInvoiceApp;\n})();\n", ";(function () {\n  const newNoteApp = function (customStatuses = {}) {\n    function loadCustomNote(customStatusId, isClient) {\n      const key = isClient ? 'client_note' : 'default_note'\n      const fallback = customStatuses[customStatusId]?.default_note\n      const customNote = customStatuses[customStatusId]?.[key] || fallback || ''\n\n      if (!customNote.length > 0) return\n\n      document.getElementById('note_content').value = customNote\n    }\n\n    return {\n      backToStatus: false,\n      showSubject: false,\n      isClient: false,\n      customStatusId: null,\n      noteType: null,\n      orderCustomStatusChange: function (event) {\n        this.customStatusId = event.target.value\n\n        loadCustomNote(this.customStatusId, this.isClient)\n      },\n      noteTypeChange: function (event) {\n        const value = event.target.value\n\n        this.noteType = value\n        this.showSubject = ['client', 'all_roles'].includes(value)\n        this.isClient = value == 'client'\n\n        loadCustomNote(this.customStatusId, this.isClient)\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.newNoteApp = newNoteApp\n  }\n\n  return newNoteApp\n})()\n", "(function () {\n  const newPaymentApp = function (closedInvoiceInvoices, searchPath, closedInvoiceId) {\n    function matchFilterInput(el) {\n      return el.name.match(/^\\w+\\[q\\]\\[(\\w+)\\]$/)\n    }\n\n    return {\n      closedInvoiceInvoices,\n      closedInvoiceId,\n      integrationPaidAlerts: {},\n      closedInvoiceInvoicesMap: closedInvoiceInvoices.reduce((acc, invoice) => {\n        acc[invoice.id] = invoice\n        return acc\n      }, {}),\n      closedInvoiceInvoiceIds: closedInvoiceInvoices.map(i => i.id),\n      selectedClosedInvoiceInvoiceIds: closedInvoiceInvoices.map(i => i.id),\n      filtersOpen: false,\n      getInvoiceId: function (id) {\n        return this.closedInvoiceInvoicesMap[id].invoice_id\n      },\n      getTotal: function (id) {\n        let parsedTotal = parseFloat(this.closedInvoiceInvoicesMap[id].total) || 0\n        let parsedTotalPaid = parseFloat(this.closedInvoiceInvoicesMap[id].total_paid) || 0\n        if (this.closedInvoiceInvoicesMap[id].balance === undefined) {\n          this.closedInvoiceInvoicesMap[id].balance = parsedTotal - parsedTotalPaid\n        }\n        return this.closedInvoiceInvoicesMap[id].balance\n      },\n      setTotal: function (id, total) {\n        let invoice = this.closedInvoiceInvoices.find(i => i.id === id)\n        invoice.balance = parseFloat(total) || 0\n      },\n      total: function () {\n        return this.closedInvoiceInvoices.reduce((acc, invoice) => {\n          if (this.selectedClosedInvoiceInvoiceIds.includes(invoice.id)) {\n            return acc + parseFloat(invoice.total || 0)\n          } else {\n            return acc\n          }\n        }, 0).toLocaleString('en-US', { style: 'currency', currency: 'USD' })\n      },\n      durties: {},\n      durty: function () {\n        return Object.values(this.durties).includes(true)\n      },\n      search: function ($dispatch) {\n        const params = { q: {} }\n\n        document.querySelectorAll('input, select').forEach(el => {\n          const matched = matchFilterInput(el)\n          if (matched && matched[1] && el.value && el.value !== '') {\n            params.q[matched[1]] = el.value\n          }\n        })\n\n        const query = qs.stringify(params)\n\n        document\n          .getElementById('closed_invoice_invoices_table')\n          .setAttribute('src', `${searchPath}?${query}`)\n\n        $dispatch('dismiss-drawer-filter')\n      },\n      checkIfIntegrationPaid: function (id) {\n        const invoiceId = this.getInvoiceId(id)\n        fetch(`/paying/closed_invoices/${closedInvoiceId}/payments/check_integration_paid?invoice_id=${invoiceId}`)\n          .then(r => r.json())\n          .then(data => {\n            if (data.integration_paid) {\n              this.integrationPaidAlerts = {\n                ...this.integrationPaidAlerts,\n                [id]: `${data.file_number} order has already been paid on the integration provider. Borrower should not be charged again.`\n              }\n            }\n          })\n      },\n      clearFilters: function ($dispatch) {\n        document.querySelectorAll('input, select').forEach(el => {\n          if (!matchFilterInput(el)) return\n\n          el.value = ''\n          this.durties[el.name] = false\n        })\n\n        this.search($dispatch)\n      },\n      toggleSelection: function (e) {\n        const invoiceId = e.target.dataset.id\n\n        if (e.target.checked) {\n          this.selectedClosedInvoiceInvoiceIds = [...this.selectedClosedInvoiceInvoiceIds, invoiceId]\n          this.checkIfIntegrationPaid(invoiceId)\n        } else {\n          this.selectedClosedInvoiceInvoiceIds =\n            this.selectedClosedInvoiceInvoiceIds.filter(id => id !== invoiceId)\n          const { [invoiceId]: _, ...rest } = this.integrationPaidAlerts\n          this.integrationPaidAlerts = rest\n        }\n\n        if (this.selectedClosedInvoiceInvoiceIds.length === this.closedInvoiceInvoiceIds.length) {\n          document.querySelector('#toggle-all').checked = true\n        } else {\n          document.querySelector('#toggle-all').checked = false\n        }\n      },\n      toggleAllSelection: function (e) {\n        if (e.target.checked) {\n          this.selectedClosedInvoiceInvoiceIds = [...this.closedInvoiceInvoiceIds]\n          document.querySelectorAll('.invoice-checkbox').forEach(el => el.checked = true)\n          this.closedInvoiceInvoiceIds.forEach(id => this.checkIfIntegrationPaid(id))\n        } else {\n          this.selectedClosedInvoiceInvoiceIds = []\n          this.integrationPaidAlerts = {}\n          document.querySelectorAll('.invoice-checkbox').forEach(el => el.checked = false)\n        }\n      },\n      init: function (form, $dispatch) {\n        form.querySelectorAll('input[type=text], select').forEach(el => {\n          el.addEventListener('keydown', (e) => {\n            if (e.key === 'Enter') {\n              e.preventDefault()\n              this.search($dispatch)\n            }\n          })\n\n          if (!matchFilterInput(el) || el.dataset.skipDirty) return\n\n          el.addEventListener('change', () => {\n            if (el.value === '') {\n              this.durties[el.name] = false\n            } else {\n              this.durties[el.name] = true\n            }\n          })\n        })\n\n        setTimeout(() => {\n          document.querySelectorAll('.invoice-checkbox[data-id]').forEach(el => {\n            el.checked = true\n            this.checkIfIntegrationPaid(el.dataset.id)\n          })\n        }, 100)\n      }\n    }\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.newPaymentApp = newPaymentApp;\n  }\n\n  return newPaymentApp;\n})();\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", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n", "// Fallback locale.\r\n// (when not a single one of the supplied \"preferred\" locales is available)\r\nlet defaultLocale = 'en'\r\n\r\n// For all locales added\r\n// their relative time formatter messages will be stored here.\r\nconst localesData = {}\r\n\r\n// According to the spec BCP 47 language tags are case-insensitive.\r\n// https://tools.ietf.org/html/rfc5646\r\nconst lowercaseLocaleLookup = {}\r\n\r\nexport function getDefaultLocale() {\r\n  return defaultLocale\r\n}\r\n\r\nexport function setDefaultLocale(locale) {\r\n  defaultLocale = locale\r\n}\r\n\r\n/**\r\n * Gets locale data previously added by `addLocaleData()`.\r\n * @return  {object} [localeData]\r\n */\r\nexport function getLocaleData(locale) {\r\n\treturn localesData[locale]\r\n}\r\n\r\n/**\r\n * Adds locale data.\r\n * Is called by `RelativeTimeFormat.addLocale(...)`.\r\n * @param  {object} localeData\r\n */\r\nexport function addLocaleData(localeData) {\r\n  if (!localeData) {\r\n    throw new Error('No locale data passed')\r\n  }\r\n  // This locale data is stored in a global variable\r\n  // and later used when calling `.format(time)`.\r\n  localesData[localeData.locale] = localeData\r\n  lowercaseLocaleLookup[localeData.locale.toLowerCase()] = localeData.locale\r\n}\r\n\r\n/**\r\n * Returns a locale for which locale data has been added\r\n * via `RelativeTimeFormat.addLocale(...)`.\r\n * @param  {string} locale\r\n * @return {string} [locale]\r\n */\r\nexport function resolveLocale(locale) {\r\n\tif (localesData[locale]) {\r\n\t\treturn locale\r\n\t}\r\n\tif (lowercaseLocaleLookup[locale.toLowerCase()]) {\r\n\t\treturn lowercaseLocaleLookup[locale.toLowerCase()]\r\n\t}\r\n}", "import {\r\n  resolveLocale as resolveLocaleForData\r\n} from './LocaleDataStore.js'\r\n\r\n/**\r\n * Resolves a locale to a supported one (if any).\r\n * @param  {string} locale\r\n * @param {Object} [options] - An object that may have the following property:\r\n * @param {string} [options.localeMatcher=\"lookup\"] - The locale matching algorithm to use. Possible values are \"lookup\" and \"best fit\". Currently only \"lookup\" is supported.\r\n * @return {string} [locale]\r\n * @example\r\n * // Returns \"sr\"\r\n * resolveLocale(\"sr-Cyrl-BA\")\r\n * // Returns `undefined`\r\n * resolveLocale(\"xx-Latn\")\r\n */\r\nexport default function resolveLocale(locale, options = {}) {\r\n  const localeMatcher = options.localeMatcher || 'lookup'\r\n  switch (localeMatcher) {\r\n    case 'lookup':\r\n      return resolveLocaleLookup(locale)\r\n    // \"best fit\" locale matching is not supported.\r\n    // https://github.com/catamphetamine/relative-time-format/issues/2\r\n    case 'best fit':\r\n      // return resolveLocaleBestFit(locale)\r\n      return resolveLocaleLookup(locale)\r\n    default:\r\n      throw new RangeError(`Invalid \"localeMatcher\" option: ${localeMatcher}`)\r\n  }\r\n}\r\n\r\n/**\r\n * Resolves a locale to a supported one (if any).\r\n * Starts from the most specific locale and gradually\r\n * falls back to less specific ones.\r\n * This is a basic implementation of the \"lookup\" algorithm.\r\n * https://tools.ietf.org/html/rfc4647#section-3.4\r\n * @param  {string} locale\r\n * @return {string} [locale]\r\n * @example\r\n * // Returns \"sr\"\r\n * resolveLocaleLookup(\"sr-Cyrl-BA\")\r\n * // Returns `undefined`\r\n * resolveLocaleLookup(\"xx-Latn\")\r\n */\r\nexport function resolveLocaleLookup(locale) {\r\n  const resolvedLocale = resolveLocaleForData(locale)\r\n  if (resolvedLocale) {\r\n    return resolvedLocale\r\n  }\r\n  // `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.\r\n  const parts = locale.split('-')\r\n  while (locale.length > 1) {\r\n    parts.pop()\r\n    locale = parts.join('-')\r\n    const resolvedLocale = resolveLocaleForData(locale)\r\n    if (resolvedLocale) {\r\n      return resolvedLocale\r\n    }\r\n  }\r\n}\r\n", "// (this file was autogenerated by `generate-locales`)\n// \"plural rules\" functions are not stored in locale JSON files because they're not strings.\n// This file isn't big — it's about 5 kilobytes in size (minified).\n// Alternatively, the pluralization rules for each locale could be stored\n// in their JSON files in a non-parsed form and later parsed via `make-plural` library.\n// But `make-plural` library itself is relatively big in size:\n// `make-plural.min.js` is about 6 kilobytes (https://unpkg.com/make-plural/).\n// So, it's more practical to bypass runtime `make-plural` pluralization rules compilation\n// and just include the already compiled pluarlization rules for all locales in the library code.\n\nvar $ = {\n\taf: (n) => n == 1 ? 'one' : 'other',\n\tak: (n) => (n == 0 || n == 1) ? 'one' : 'other',\n\tam: (n) => n >= 0 && n <= 1 ? 'one' : 'other',\n\tar: (n) => {\n\t\tconst s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n\t\treturn n == 0 ? 'zero'\n\t\t\t: n == 1 ? 'one'\n\t\t\t: n == 2 ? 'two'\n\t\t\t: (n100 >= 3 && n100 <= 10) ? 'few'\n\t\t\t: (n100 >= 11 && n100 <= 99) ? 'many'\n\t\t\t: 'other';\n\t},\n\tast: (n) => {\n\t\tconst s = String(n).split('.'), v0 = !s[1];\n\t\treturn n == 1 && v0 ? 'one' : 'other';\n\t},\n\tbe: (n) => {\n\t\tconst s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n\t\treturn n10 == 1 && n100 != 11 ? 'one'\n\t\t\t: (n10 >= 2 && n10 <= 4) && (n100 < 12 || n100 > 14) ? 'few'\n\t\t\t: t0 && n10 == 0 || (n10 >= 5 && n10 <= 9) || (n100 >= 11 && n100 <= 14) ? 'many'\n\t\t\t: 'other';\n\t},\n\tblo: (n) => n == 0 ? 'zero'\n\t\t\t: n == 1 ? 'one'\n\t\t\t: 'other',\n\tbr: (n) => {\n\t\tconst 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\t\treturn n10 == 1 && n100 != 11 && n100 != 71 && n100 != 91 ? 'one'\n\t\t\t: n10 == 2 && n100 != 12 && n100 != 72 && n100 != 92 ? 'two'\n\t\t\t: ((n10 == 3 || n10 == 4) || n10 == 9) && (n100 < 10 || n100 > 19) && (n100 < 70 || n100 > 79) && (n100 < 90 || n100 > 99) ? 'few'\n\t\t\t: n != 0 && t0 && n1000000 == 0 ? 'many'\n\t\t\t: 'other';\n\t},\n\tbs: (n) => {\n\t\tconst 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\t\treturn v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n\t\t\t: v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n\t\t\t: 'other';\n\t},\n\tca: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n\t\treturn n == 1 && v0 ? 'one'\n\t\t\t: i != 0 && i1000000 == 0 && v0 ? 'many'\n\t\t\t: 'other';\n\t},\n\tceb: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n\t\treturn v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n\t},\n\tcs: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1];\n\t\treturn n == 1 && v0 ? 'one'\n\t\t\t: (i >= 2 && i <= 4) && v0 ? 'few'\n\t\t\t: !v0 ? 'many'\n\t\t\t: 'other';\n\t},\n\tcy: (n) => n == 0 ? 'zero'\n\t\t\t: n == 1 ? 'one'\n\t\t\t: n == 2 ? 'two'\n\t\t\t: n == 3 ? 'few'\n\t\t\t: n == 6 ? 'many'\n\t\t\t: 'other',\n\tda: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], t0 = Number(s[0]) == n;\n\t\treturn n == 1 || !t0 && (i == 0 || i == 1) ? 'one' : 'other';\n\t},\n\tdsb: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);\n\t\treturn v0 && i100 == 1 || f100 == 1 ? 'one'\n\t\t\t: v0 && i100 == 2 || f100 == 2 ? 'two'\n\t\t\t: v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'\n\t\t\t: 'other';\n\t},\n\tdz: (n) => 'other',\n\tes: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n\t\treturn n == 1 ? 'one'\n\t\t\t: i != 0 && i1000000 == 0 && v0 ? 'many'\n\t\t\t: 'other';\n\t},\n\tff: (n) => n >= 0 && n < 2 ? 'one' : 'other',\n\tfr: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n\t\treturn n >= 0 && n < 2 ? 'one'\n\t\t\t: i != 0 && i1000000 == 0 && v0 ? 'many'\n\t\t\t: 'other';\n\t},\n\tga: (n) => {\n\t\tconst s = String(n).split('.'), t0 = Number(s[0]) == n;\n\t\treturn n == 1 ? 'one'\n\t\t\t: n == 2 ? 'two'\n\t\t\t: (t0 && n >= 3 && n <= 6) ? 'few'\n\t\t\t: (t0 && n >= 7 && n <= 10) ? 'many'\n\t\t\t: 'other';\n\t},\n\tgd: (n) => {\n\t\tconst s = String(n).split('.'), t0 = Number(s[0]) == n;\n\t\treturn (n == 1 || n == 11) ? 'one'\n\t\t\t: (n == 2 || n == 12) ? 'two'\n\t\t\t: ((t0 && n >= 3 && n <= 10) || (t0 && n >= 13 && n <= 19)) ? 'few'\n\t\t\t: 'other';\n\t},\n\the: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1];\n\t\treturn i == 1 && v0 || i == 0 && !v0 ? 'one'\n\t\t\t: i == 2 && v0 ? 'two'\n\t\t\t: 'other';\n\t},\n\tis: (n) => {\n\t\tconst 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\t\treturn t0 && i10 == 1 && i100 != 11 || t % 10 == 1 && t % 100 != 11 ? 'one' : 'other';\n\t},\n\tlt: (n) => {\n\t\tconst 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\t\treturn n10 == 1 && (n100 < 11 || n100 > 19) ? 'one'\n\t\t\t: (n10 >= 2 && n10 <= 9) && (n100 < 11 || n100 > 19) ? 'few'\n\t\t\t: f != 0 ? 'many'\n\t\t\t: 'other';\n\t},\n\tlv: (n) => {\n\t\tconst 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\t\treturn t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'\n\t\t\t: n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'\n\t\t\t: 'other';\n\t},\n\tmk: (n) => {\n\t\tconst 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\t\treturn v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : 'other';\n\t},\n\tmt: (n) => {\n\t\tconst s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n\t\treturn n == 1 ? 'one'\n\t\t\t: n == 2 ? 'two'\n\t\t\t: n == 0 || (n100 >= 3 && n100 <= 10) ? 'few'\n\t\t\t: (n100 >= 11 && n100 <= 19) ? 'many'\n\t\t\t: 'other';\n\t},\n\tpl: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n\t\treturn n == 1 && v0 ? 'one'\n\t\t\t: v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n\t\t\t: v0 && i != 1 && (i10 == 0 || i10 == 1) || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 12 && i100 <= 14) ? 'many'\n\t\t\t: 'other';\n\t},\n\tpt: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n\t\treturn (i == 0 || i == 1) ? 'one'\n\t\t\t: i != 0 && i1000000 == 0 && v0 ? 'many'\n\t\t\t: 'other';\n\t},\n\tro: (n) => {\n\t\tconst s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n\t\treturn n == 1 && v0 ? 'one'\n\t\t\t: !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'\n\t\t\t: 'other';\n\t},\n\tru: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n\t\treturn v0 && i10 == 1 && i100 != 11 ? 'one'\n\t\t\t: v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n\t\t\t: v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'\n\t\t\t: 'other';\n\t},\n\tse: (n) => n == 1 ? 'one'\n\t\t\t: n == 2 ? 'two'\n\t\t\t: 'other',\n\tsi: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], f = s[1] || '';\n\t\treturn (n == 0 || n == 1) || i == 0 && f == 1 ? 'one' : 'other';\n\t},\n\tsl: (n) => {\n\t\tconst s = String(n).split('.'), i = s[0], v0 = !s[1], i100 = i.slice(-2);\n\t\treturn v0 && i100 == 1 ? 'one'\n\t\t\t: v0 && i100 == 2 ? 'two'\n\t\t\t: v0 && (i100 == 3 || i100 == 4) || !v0 ? 'few'\n\t\t\t: 'other';\n\t}\n}\n\n$.as = $.am\n$.az = $.af\n$.bal = $.af\n$.bg = $.af\n$.bn = $.am\n$.brx = $.af\n$.ce = $.af\n$.chr = $.af\n$.de = $.ast\n$.doi = $.am\n$.ee = $.af\n$.el = $.af\n$.en = $.ast\n$.et = $.ast\n$.eu = $.af\n$.fa = $.am\n$.fi = $.ast\n$.fil = $.ceb\n$.fo = $.af\n$.fur = $.af\n$.fy = $.ast\n$.gl = $.ast\n$.gu = $.am\n$.ha = $.af\n$.hi = $.am\n$.hr = $.bs\n$.hsb = $.dsb\n$.hu = $.af\n$.hy = $.ff\n$.ia = $.ast\n$.id = $.dz\n$.ig = $.dz\n$.ii = $.dz\n$.it = $.ca\n$.ja = $.dz\n$.jgo = $.af\n$.jv = $.dz\n$.ka = $.af\n$.kea = $.dz\n$.kk = $.af\n$.kl = $.af\n$.km = $.dz\n$.kn = $.am\n$.ko = $.dz\n$.ks = $.af\n$.ksh = $.blo\n$.ku = $.af\n$.ky = $.af\n$.lb = $.af\n$.lkt = $.dz\n$.lo = $.dz\n$.ml = $.af\n$.mn = $.af\n$.mr = $.af\n$.ms = $.dz\n$.my = $.dz\n$.nb = $.af\n$.ne = $.af\n$.nl = $.ast\n$.nn = $.af\n$.no = $.af\n$.nqo = $.dz\n$.om = $.af\n$.or = $.af\n$.pa = $.ak\n$.pcm = $.am\n$.ps = $.af\n$.rm = $.af\n$.sah = $.dz\n$.sc = $.ast\n$.sd = $.af\n$.sk = $.cs\n$.so = $.af\n$.sq = $.af\n$.sr = $.bs\n$.su = $.dz\n$.sv = $.ast\n$.sw = $.ast\n$.syr = $.af\n$.ta = $.af\n$.te = $.af\n$.th = $.dz\n$.ti = $.ak\n$.tk = $.af\n$.tn = $.af\n$.to = $.dz\n$.tr = $.af\n$.ug = $.af\n$.uk = $.ru\n$.ur = $.ast\n$.uz = $.af\n$.vec = $.ca\n$.vi = $.dz\n$.wae = $.af\n$.wo = $.dz\n$.xh = $.af\n$.yi = $.ast\n$.yo = $.dz\n$.yue = $.dz\n$.zh = $.dz\n$.zu = $.am\n\nexport default $", "/**\r\n * Returns a `locale` for which a function exists in `./PluralRuleFunctions.js`.\r\n * @param  {string} locale\r\n * @return {string}\r\n * @example\r\n * getPluralRulesLocale(\"ru-RU-Cyrl\") // Returns \"ru\".\r\n */\r\nexport default function getPluralRulesLocale(locale) {\r\n\t// \"pt\" language is the only one having different pluralization rules\r\n\t// for the one (\"pt\") (Portuguese) locale and the other (\"pt-PT\") (European Portuguese).\r\n\t// http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html\r\n\t// (see the entries for \"pt\" and \"pt_PT\" there)\r\n\tif (locale === 'pt-PT') {\r\n\t\treturn locale\r\n\t}\r\n\treturn getLanguageFromLanguageTag(locale)\r\n}\r\n\r\n/**\r\n * Extracts language from an IETF BCP 47 language tag.\r\n * @param {string} languageTag - IETF BCP 47 language tag.\r\n * @return {string}\r\n * @example\r\n * // Returns \"he\"\r\n * getLanguageFromLanguageTag(\"he-IL-u-ca-hebrew-tz-jeruslm\")\r\n * // Returns \"ar\"\r\n * getLanguageFromLanguageTag(\"ar-u-nu-latn\")\r\n */\r\nconst LANGUAGE_REG_EXP = /^([a-z0-9]+)/i\r\nfunction getLanguageFromLanguageTag(languageTag) {\r\n\tconst match = languageTag.match(LANGUAGE_REG_EXP)\r\n\tif (!match) {\r\n\t\tthrow new TypeError(`Invalid locale: ${languageTag}`)\r\n\t}\r\n\treturn match[1]\r\n}\r\n", "// Importing `PluralRule` polyfill from a separate package\r\n// results in a bundle that is larger by 1kB for some reason.\r\n// export { default as default } from 'intl-plural-rules-polyfill/cardinal'\r\n\r\nimport PluralRuleFunctions from \"./PluralRuleFunctions.js\"\r\nimport getPluralRulesLocale from \"./getPluralRulesLocale.js\"\r\n\r\n/**\r\n * `Intl.PluralRules` polyfill.\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules\r\n */\r\nexport default class PluralRules {\r\n\tconstructor(locale, options) {\r\n\t\tconst locales = PluralRules.supportedLocalesOf(locale)\r\n\t\tif (locales.length === 0) {\r\n\t\t\tthrow new RangeError(\"Unsupported locale: \" + locale)\r\n\t\t}\r\n\t\tif (options && options.type !== \"cardinal\") {\r\n\t\t\tthrow new RangeError(\"Only \\\"cardinal\\\" \\\"type\\\" is supported\")\r\n\t\t}\r\n\t\tthis.$ = PluralRuleFunctions[getPluralRulesLocale(locales[0])]\r\n\t}\r\n\tselect(number) {\r\n\t\treturn this.$(number)\r\n\t}\r\n\tstatic supportedLocalesOf(locales) {\r\n\t\tif (typeof locales === \"string\") {\r\n\t\t\tlocales = [locales]\r\n\t\t}\r\n\t\treturn locales.filter(locale => PluralRuleFunctions[getPluralRulesLocale(locale)])\r\n\t}\r\n}", "import {\r\n  getDefaultLocale,\r\n  setDefaultLocale,\r\n  getLocaleData,\r\n  addLocaleData\r\n} from './LocaleDataStore.js'\r\n\r\nimport resolveLocale from './resolveLocale.js'\r\nimport PluralRules from './PluralRules.js'\r\n// Importing `PluralRule` polyfill from a separate package\r\n// results in a bundle that is larger by 1kB for some reason.\r\n// import PluralRules from 'intl-plural-rules-polyfill/cardinal'\r\n\r\n// Valid time units.\r\nexport const UNITS = [\r\n  \"second\",\r\n  \"minute\",\r\n  \"hour\",\r\n  \"day\",\r\n  \"week\",\r\n  \"month\",\r\n  \"quarter\",\r\n  \"year\"\r\n]\r\n\r\n// Valid values for the `numeric` option.\r\nconst NUMERIC_VALUES = [\r\n  \"auto\",\r\n  \"always\"\r\n]\r\n\r\n// Valid values for the `style` option.\r\nconst STYLE_VALUES = [\r\n  \"long\",\r\n  \"short\",\r\n  \"narrow\"\r\n]\r\n\r\n// Valid values for the `localeMatcher` option.\r\nconst LOCALE_MATCHER_VALUES = [\r\n  \"lookup\",\r\n  \"best fit\"\r\n]\r\n\r\n/**\r\n * Polyfill for `Intl.RelativeTimeFormat` proposal.\r\n * https://github.com/tc39/proposal-intl-relative-time\r\n * https://github.com/tc39/proposal-intl-relative-time/issues/55\r\n */\r\nexport default class RelativeTimeFormat {\r\n  /**\r\n   * @param {(string|string[])} [locales] - Preferred locales (or locale).\r\n   * @param {Object} [options] - Formatting options.\r\n   * @param {string} [options.style=\"long\"] - One of: \"long\", \"short\", \"narrow\".\r\n   * @param {string} [options.numeric=\"always\"] - (Version >= 2) One of: \"always\", \"auto\".\r\n   * @param {string} [options.localeMatcher=\"lookup\"] - One of: \"lookup\", \"best fit\". Currently only \"lookup\" is supported.\r\n   */\r\n  constructor(locales = [], options = {}) {\r\n    const {\r\n      numeric,\r\n      style,\r\n      localeMatcher\r\n    } = options\r\n\r\n    this.numeric = \"always\"\r\n    this.style = \"long\"\r\n    this.localeMatcher = \"lookup\"\r\n\r\n    // Set `numeric` option.\r\n    if (numeric !== undefined) {\r\n      if (NUMERIC_VALUES.indexOf(numeric) < 0) {\r\n        throw new RangeError(`Invalid \"numeric\" option: ${numeric}`)\r\n      }\r\n      this.numeric = numeric\r\n    }\r\n\r\n    // Set `style` option.\r\n    if (style !== undefined) {\r\n      if (STYLE_VALUES.indexOf(style) < 0) {\r\n        throw new RangeError(`Invalid \"style\" option: ${style}`)\r\n      }\r\n      this.style = style\r\n    }\r\n\r\n    // Set `localeMatcher` option.\r\n    if (localeMatcher !== undefined) {\r\n      if (LOCALE_MATCHER_VALUES.indexOf(localeMatcher) < 0) {\r\n        throw new RangeError(`Invalid \"localeMatcher\" option: ${localeMatcher}`)\r\n      }\r\n      this.localeMatcher = localeMatcher\r\n    }\r\n\r\n    // Set `locale`.\r\n    // Convert `locales` to an array.\r\n    if (typeof locales === 'string') {\r\n      locales = [locales]\r\n    }\r\n    // Add default locale.\r\n    locales.push(getDefaultLocale())\r\n    // Choose the most appropriate locale.\r\n    this.locale = RelativeTimeFormat.supportedLocalesOf(locales, {\r\n      localeMatcher: this.localeMatcher\r\n    })[0]\r\n    if (!this.locale) {\r\n      throw new Error(\"No supported locale was found\")\r\n    }\r\n\r\n    // Construct an `Intl.PluralRules` instance (polyfill).\r\n    if (PluralRules.supportedLocalesOf(this.locale).length > 0) {\r\n      this.pluralRules = new PluralRules(this.locale)\r\n    } else {\r\n      console.warn(`\"${this.locale}\" locale is not supported`)\r\n    }\r\n\r\n    // Use `Intl.NumberFormat` for formatting numbers (when available).\r\n    if (typeof Intl !== 'undefined' && Intl.NumberFormat) {\r\n      this.numberFormat = new Intl.NumberFormat(this.locale)\r\n      this.numberingSystem = this.numberFormat.resolvedOptions().numberingSystem\r\n    } else {\r\n      this.numberingSystem = 'latn'\r\n    }\r\n\r\n    this.locale = resolveLocale(this.locale, {\r\n      localeMatcher: this.localeMatcher\r\n    })\r\n  }\r\n\r\n  /**\r\n   * Formats time `number` in `units` (either in past or in future).\r\n   * @param {number} number - Time interval value.\r\n   * @param {string} unit - Time interval measurement unit.\r\n   * @return {string}\r\n   * @throws {RangeError} If unit is not one of \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\".\r\n   * @example\r\n   * // Returns \"2 days ago\"\r\n   * rtf.format(-2, \"day\")\r\n   * // Returns \"in 5 minutes\"\r\n   * rtf.format(5, \"minute\")\r\n   */\r\n  format() {\r\n    const [number, unit] = parseFormatArgs(arguments)\r\n    return this.getRule(number, unit).replace('{0}', this.formatNumber(Math.abs(number)))\r\n  }\r\n\r\n  /**\r\n   * Formats time `number` in `units` (either in past or in future).\r\n   * @param {number} number - Time interval value.\r\n   * @param {string} unit - Time interval measurement unit.\r\n   * @return {Object[]} The parts (`{ type, value, unit? }`).\r\n   * @throws {RangeError} If unit is not one of \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\".\r\n   * @example\r\n   * // Version 1 (deprecated).\r\n   * // Returns [\r\n   * //   { type: \"literal\", value: \"in \" },\r\n   * //   { type: \"day\", value: \"100\" },\r\n   * //   { type: \"literal\", value: \" days\" }\r\n   * // ]\r\n   * rtf.formatToParts(100, \"day\")\r\n   * //\r\n   * // Version 2.\r\n   * // Returns [\r\n   * //   { type: \"literal\", value: \"in \" },\r\n   * //   { type: \"integer\", value: \"100\", unit: \"day\" },\r\n   * //   { type: \"literal\", value: \" days\" }\r\n   * // ]\r\n   * rtf.formatToParts(100, \"day\")\r\n   */\r\n  formatToParts() {\r\n    const [number, unit] = parseFormatArgs(arguments)\r\n    const rule = this.getRule(number, unit)\r\n    const valueIndex = rule.indexOf(\"{0}\")\r\n    // \"yesterday\"/\"today\"/\"tomorrow\".\r\n    if (valueIndex < 0) {\r\n      return [{\r\n        type: \"literal\",\r\n        value: rule\r\n      }]\r\n    }\r\n    let parts = []\r\n    if (valueIndex > 0) {\r\n      parts.push({\r\n        type: \"literal\",\r\n        value: rule.slice(0, valueIndex)\r\n      })\r\n    }\r\n    parts = parts.concat(\r\n      this.formatNumberToParts(Math.abs(number))\r\n        .map(part => ({ ...part, unit }))\r\n    )\r\n    if (valueIndex + \"{0}\".length < rule.length - 1) {\r\n      parts.push({\r\n        type: \"literal\",\r\n        value: rule.slice(valueIndex + \"{0}\".length)\r\n      })\r\n    }\r\n    return parts\r\n  }\r\n\r\n  /**\r\n   * Returns formatting rule for `value` in `units` (either in past or in future).\r\n   * @param {number} value - Time interval value.\r\n   * @param {string} unit - Time interval measurement unit.\r\n   * @return {string}\r\n   * @throws {RangeError} If unit is not one of \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\".\r\n   * @example\r\n   * // Returns \"{0} days ago\"\r\n   * getRule(-2, \"day\")\r\n   */\r\n  getRule(value, unit) {\r\n    // Get locale-specific time interval formatting rules\r\n    // of a given `style` for the given value of measurement `unit`.\r\n    //\r\n    // E.g.:\r\n    //\r\n    // ```json\r\n    // {\r\n    //  \"past\": {\r\n    //    \"one\": \"a second ago\",\r\n    //    \"other\": \"{0} seconds ago\"\r\n    //  },\r\n    //  \"future\": {\r\n    //    \"one\": \"in a second\",\r\n    //    \"other\": \"in {0} seconds\"\r\n    //  }\r\n    // }\r\n    // ```\r\n    //\r\n    const unitMessages = getLocaleData(this.locale)[this.style][unit]\r\n    // Bundle size optimization technique for styles like\r\n    // \"tiny\" in `javascript-time-ago`: \"1m\", \"2h\", \"3d\"...\r\n    if (typeof unitMessages === 'string') {\r\n      return unitMessages\r\n    }\r\n    // Special case for \"yesterday\"/\"today\"/\"tomorrow\".\r\n    if (this.numeric === \"auto\") {\r\n      // \"yesterday\", \"the day before yesterday\", etc.\r\n      if (value === -2 || value === -1) {\r\n        const message = unitMessages[`previous${value === -1 ? '' : '-' + Math.abs(value)}`]\r\n        if (message) {\r\n          return message\r\n        }\r\n      }\r\n      // \"tomorrow\", \"the day after tomorrow\", etc.\r\n      else if (value === 1 || value === 2) {\r\n        const message = unitMessages[`next${value === 1 ? '' : '-' + Math.abs(value)}`]\r\n        if (message) {\r\n          return message\r\n        }\r\n      }\r\n      // \"today\"\r\n      else if (value === 0) {\r\n        if (unitMessages.current) {\r\n          return unitMessages.current\r\n        }\r\n      }\r\n    }\r\n    // Choose either \"past\" or \"future\" based on time `value` sign.\r\n    // If there's only \"other\" then it's being collapsed.\r\n    // (the resulting bundle size optimization technique)\r\n    const pluralizedMessages = unitMessages[isNegative(value) ? \"past\" : \"future\"]\r\n    // Bundle size optimization technique for styles like \"narrow\"\r\n    // having messages like \"in {0} d.\" or \"{0} d. ago\".\r\n    if (typeof pluralizedMessages === \"string\") {\r\n      return pluralizedMessages\r\n    }\r\n    // Quantify `value`.\r\n    // There seems to be no such locale in CLDR\r\n    // for which \"plural rules\" function is missing.\r\n    const quantifier = this.pluralRules && this.pluralRules.select(Math.abs(value)) || 'other'\r\n    // \"other\" rule is supposed to be always present.\r\n    // If only \"other\" rule is present then \"rules\" is not an object and is a string.\r\n    return pluralizedMessages[quantifier] || pluralizedMessages.other\r\n  }\r\n\r\n  /**\r\n   * Formats a number into a string.\r\n   * Uses `Intl.NumberFormat` when available.\r\n   * @param  {number} number\r\n   * @return {string}\r\n   */\r\n  formatNumber(number) {\r\n    return this.numberFormat ? this.numberFormat.format(number) : String(number)\r\n  }\r\n\r\n  /**\r\n   * Formats a number into a list of parts.\r\n   * Uses `Intl.NumberFormat` when available.\r\n   * @param  {number} number\r\n   * @return {object[]}\r\n   */\r\n  formatNumberToParts(number) {\r\n    // `Intl.NumberFormat.formatToParts()` is not present, for example,\r\n    // in Node.js 8.x while `Intl.NumberFormat` itself is present.\r\n    return this.numberFormat && this.numberFormat.formatToParts ?\r\n      this.numberFormat.formatToParts(number) :\r\n      [{\r\n        type: \"integer\",\r\n        value: this.formatNumber(number)\r\n      }]\r\n  }\r\n\r\n  /**\r\n   * Returns a new object with properties reflecting the locale and date and time formatting options computed during initialization of this DateTimeFormat object.\r\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions\r\n   * @return {Object}\r\n   */\r\n  resolvedOptions() {\r\n    return {\r\n      locale: this.locale,\r\n      style: this.style,\r\n      numeric: this.numeric,\r\n      numberingSystem: this.numberingSystem\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * Returns an array containing those of the provided locales\r\n * that are supported in collation without having to fall back\r\n * to the runtime's default locale.\r\n * @param {(string|string[])} locale - A string with a BCP 47 language tag, or an array of such strings. For the general form of the locales argument, see the Intl page.\r\n * @param {Object} [options] - An object that may have the following property:\r\n * @param {string} [options.localeMatcher=\"lookup\"] - The locale matching algorithm to use. Possible values are \"lookup\" and \"best fit\". Currently only \"lookup\" is supported.\r\n * @return {string[]} An array of strings representing a subset of the given locale tags that are supported in collation without having to fall back to the runtime's default locale.\r\n * @example\r\n * var locales = ['ban', 'id-u-co-pinyin', 'es-PY']\r\n * var options = { localeMatcher: 'lookup' }\r\n * // Returns [\"id\", \"es-PY\"]\r\n * Intl.RelativeTimeFormat.supportedLocalesOf(locales, options)\r\n */\r\nRelativeTimeFormat.supportedLocalesOf = function(locales, options = {}) {\r\n  // Convert `locales` to an array.\r\n  if (typeof locales === 'string') {\r\n    locales = [locales]\r\n  } else if (!Array.isArray(locales)) {\r\n    throw new TypeError('Invalid \"locales\" argument')\r\n  }\r\n  return locales.filter(locale => resolveLocale(locale, options))\r\n}\r\n\r\n/**\r\n * Adds locale data for a specific locale.\r\n * @param {Object} localeData\r\n */\r\nRelativeTimeFormat.addLocale = addLocaleData\r\n\r\n/**\r\n * Sets default locale.\r\n * @param  {string} locale\r\n */\r\nRelativeTimeFormat.setDefaultLocale = setDefaultLocale\r\n\r\n/**\r\n * Gets default locale.\r\n * @return  {string} locale\r\n */\r\nRelativeTimeFormat.getDefaultLocale = getDefaultLocale\r\n\r\n/**\r\n * Export `Intl.PluralRules` just in case it's used somewhere else.\r\n */\r\nRelativeTimeFormat.PluralRules = PluralRules\r\n\r\n// The specification allows units to be in plural form.\r\n// Convert plural to singular.\r\n// Example: \"seconds\" -> \"second\".\r\nconst UNIT_ERROR = 'Invalid \"unit\" argument'\r\nfunction parseUnit(unit) {\r\n  if (typeof unit === 'symbol') {\r\n    throw new TypeError(UNIT_ERROR)\r\n  }\r\n  if (typeof unit !== 'string') {\r\n    throw new RangeError(`${UNIT_ERROR}: ${unit}`)\r\n  }\r\n  if (unit[unit.length - 1] === 's') {\r\n    unit = unit.slice(0, unit.length - 1)\r\n  }\r\n  if (UNITS.indexOf(unit) < 0) {\r\n    throw new RangeError(`${UNIT_ERROR}: ${unit}`)\r\n  }\r\n  return unit\r\n}\r\n\r\n// Converts `value` to a `Number`.\r\n// The specification allows value to be a non-number.\r\n// For example, \"-0\" is supposed to be treated as `-0`.\r\n// Also checks if `value` is a finite number.\r\nconst NUMBER_ERROR = 'Invalid \"number\" argument'\r\nfunction parseNumber(value) {\r\n  value = Number(value)\r\n  if (Number.isFinite) {\r\n    if (!Number.isFinite(value)) {\r\n      throw new RangeError(`${NUMBER_ERROR}: ${value}`)\r\n    }\r\n  }\r\n  return value\r\n}\r\n\r\n/**\r\n * Tells `0` from `-0`.\r\n * https://stackoverflow.com/questions/7223359/are-0-and-0-the-same\r\n * @param  {number} number\r\n * @return {Boolean}\r\n * @example\r\n * isNegativeZero(0); // false\r\n * isNegativeZero(-0); // true\r\n */\r\nfunction isNegativeZero(number) {\r\n  return 1 / number === -Infinity\r\n}\r\n\r\nfunction isNegative(number) {\r\n  return number < 0 || number === 0 && isNegativeZero(number)\r\n}\r\n\r\nfunction parseFormatArgs(args) {\r\n  if (args.length < 2) {\r\n    throw new TypeError(`\"unit\" argument is required`)\r\n  }\r\n  return [\r\n    parseNumber(args[0]),\r\n    parseUnit(args[1])\r\n  ]\r\n}", "export { default } from './modules/RelativeTimeFormat.js'", "/**\r\n * A basic in-memory cache.\r\n *\r\n * import Cache from 'javascript-time-ago/Cache'\r\n * const cache = new Cache()\r\n * const object = cache.get('key1', 'key2', ...) || cache.put('key1', 'key2', ..., createObject())\r\n */\r\nexport default class Cache {\r\n\tconstructor() {\r\n\t\tthis.cache = {}\r\n\t}\r\n\r\n\tget(...keys) {\r\n\t\tlet cache = this.cache\r\n\t\tfor (const key of keys) {\r\n\t\t\tif (typeof cache !== 'object') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tcache = cache[key]\r\n\t\t}\r\n\t\treturn cache\r\n\t}\r\n\r\n\tput(...keys) {\r\n\t\tconst value = keys.pop()\r\n\t\tconst lastKey = keys.pop()\r\n\t\tlet cache = this.cache\r\n\t\tfor (const key of keys) {\r\n\t\t\tif (typeof cache[key] !== 'object') {\r\n\t\t\t\tcache[key] = {}\r\n\t\t\t}\r\n\t\t\tcache = cache[key]\r\n\t\t}\r\n\t\treturn cache[lastKey] = value\r\n\t}\r\n}", "/**\r\n * Chooses the most appropriate locale\r\n * (one of the registered ones)\r\n * based on the list of preferred `locales` supplied by the user.\r\n *\r\n * @param {string[]} locales - the list of preferable locales (in [IETF format](https://en.wikipedia.org/wiki/IETF_language_tag)).\r\n * @param {Function} isLocaleDataAvailable - tests if a locale is available.\r\n *\r\n * @returns {string} The most suitable locale.\r\n *\r\n * @example\r\n * // Returns 'en'\r\n * chooseLocale(['en-US'], undefined, (locale) => locale === 'ru' || locale === 'en')\r\n */\r\nexport default function chooseLocale(locales, isLocaleDataAvailable) {\r\n\t// This is not an intelligent algorithm,\r\n\t// but it will do for this library's case.\r\n\t// `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.\r\n\tfor (let locale of locales) {\r\n\t\tif (isLocaleDataAvailable(locale)) {\r\n\t\t\treturn locale\r\n\t\t}\r\n\t\tconst parts = locale.split('-')\r\n\t\twhile (parts.length > 1) {\r\n\t\t\tparts.pop()\r\n\t\t\tlocale = parts.join('-')\r\n\t\t\tif (isLocaleDataAvailable(locale)) {\r\n\t\t\t\treturn locale\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthrow new Error(`No locale data has been registered for any of the locales: ${locales.join(', ')}`)\r\n}\r\n\r\n/**\r\n * Whether can use `Intl.DateTimeFormat` for these `locales`.\r\n * Returns the first suitable one.\r\n * @param  {(string|string[])} locales\r\n * @return {?string} The first locale that can be used.\r\n */\r\nexport function intlDateTimeFormatSupportedLocale(locales) {\r\n\t/* istanbul ignore else */\r\n\tif (intlDateTimeFormatSupported()) {\r\n\t\treturn Intl.DateTimeFormat.supportedLocalesOf(locales)[0]\r\n\t}\r\n}\r\n\r\n/**\r\n * Whether can use `Intl.DateTimeFormat`.\r\n * @return {boolean}\r\n */\r\nexport function intlDateTimeFormatSupported() {\r\n\t// Babel transforms `typeof` into some \"branches\"\r\n\t// so istanbul will show this as \"branch not covered\".\r\n\t/* istanbul ignore next */\r\n\tconst isIntlAvailable = typeof Intl === 'object'\r\n\treturn isIntlAvailable && typeof Intl.DateTimeFormat === 'function'\r\n}\r\n", "export default function isStyleObject(object) {\r\n\treturn isObject(object) && (\r\n\t\tArray.isArray(object.steps) ||\r\n\t\t// `gradation` property is deprecated: it has been renamed to `steps`.\r\n\t\tArray.isArray(object.gradation) ||\r\n\t\t// `flavour` property is deprecated: it has been renamed to `labels`.\r\n\t\tArray.isArray(object.flavour) ||\r\n\t\ttypeof object.flavour === 'string' ||\r\n\t\tArray.isArray(object.labels) ||\r\n\t\ttypeof object.labels === 'string' ||\r\n\t\t// `units` property is deprecated.\r\n\t\tArray.isArray(object.units) ||\r\n\t\t// `custom` property is deprecated.\r\n\t\ttypeof object.custom === 'function'\r\n\t)\r\n}\r\n\r\nconst OBJECT_CONSTRUCTOR = {}.constructor\r\nfunction isObject(object) {\r\n\treturn typeof object !== undefined && object !== null && object.constructor === OBJECT_CONSTRUCTOR\r\n}", "export const minute = 60 // in seconds\r\n\r\nexport const hour = 60 * minute // in seconds\r\n\r\nexport const day = 24 * hour // in seconds\r\n\r\nexport const week = 7 * day // in seconds\r\n\r\n// https://www.quora.com/What-is-the-average-number-of-days-in-a-month\r\nexport const month = 30.44 * day // in seconds\r\n\r\n// \"400 years have 146097 days (taking into account leap year rules)\"\r\nexport const year = (146097 / 400) * day // in seconds\r\n\r\nexport function getSecondsInUnit(unit) {\r\n\tswitch (unit) {\r\n\t\tcase 'second':\r\n\t\t\treturn 1\r\n\t\tcase 'minute':\r\n\t\t\treturn minute\r\n\t\tcase 'hour':\r\n\t\t\treturn hour\r\n\t\tcase 'day':\r\n\t\t\treturn day\r\n\t\tcase 'week':\r\n\t\t\treturn week\r\n\t\tcase 'month':\r\n\t\t\treturn month\r\n\t\tcase 'year':\r\n\t\t\treturn year\r\n\t}\r\n}\r\n\r\n// export function getPreviousUnitFor(unit) {\r\n// \tswitch (unit) {\r\n// \t\tcase 'second':\r\n// \t\t\treturn 'now'\r\n// \t\tcase 'minute':\r\n// \t\t\treturn 'second'\r\n// \t\tcase 'hour':\r\n// \t\t\treturn 'minute'\r\n// \t\tcase 'day':\r\n// \t\t\treturn 'hour'\r\n// \t\tcase 'week':\r\n// \t\t\treturn 'day'\r\n// \t\tcase 'month':\r\n// \t\t\treturn 'week'\r\n// \t\tcase 'year':\r\n// \t\t\treturn 'month'\r\n// \t}\r\n// }", "import { getSecondsInUnit } from './units.js'\r\n\r\nexport default function getStepDenominator(step) {\r\n\t// `factor` is a legacy property.\r\n\tif (step.factor !== undefined) {\r\n\t\treturn step.factor\r\n\t}\r\n\t// \"unit\" is now called \"formatAs\".\r\n\treturn getSecondsInUnit(step.unit || step.formatAs) || 1\r\n}", "export function getRoundFunction(round) {\r\n\tswitch (round) {\r\n\t\tcase 'floor':\r\n\t\t\treturn Math.floor\r\n\t\tdefault:\r\n\t\t\treturn Math.round\r\n\t}\r\n}\r\n\r\n// For non-negative numbers.\r\nexport function getDiffRatioToNextRoundedNumber(round) {\r\n\tswitch (round) {\r\n\t\tcase 'floor':\r\n\t\t\t// Math.floor(x) = x\r\n\t\t\t// Math.floor(x + 1) = x + 1\r\n\t\t\treturn 1\r\n\t\tdefault:\r\n\t\t\t// Math.round(x) = x\r\n\t\t\t// Math.round(x + 0.5) = x + 1\r\n\t\t\treturn 0.5\r\n\t}\r\n}", "import { getSecondsInUnit } from './units.js'\r\nimport { getDiffRatioToNextRoundedNumber } from '../round.js'\r\n\r\nexport default function getStepMinTime(step, {\r\n\tprevStep,\r\n\ttimestamp,\r\n\t// `now` argument is used in a deprecated `step.test()` function.\r\n\tnow,\r\n\tfuture,\r\n\tround\r\n}) {\r\n\tlet minTime\r\n\t// \"threshold_for_xxx\" is a legacy property.\r\n\tif (prevStep) {\r\n\t\tif (prevStep.id || prevStep.unit) {\r\n\t\t\tminTime = step[`threshold_for_${prevStep.id || prevStep.unit}`]\r\n\t\t}\r\n\t}\r\n\tif (minTime === undefined) {\r\n\t\t// \"threshold\" is a legacy property.\r\n\t\tif (step.threshold !== undefined) {\r\n\t\t\t// \"threshold\" is a legacy name for \"minTime\".\r\n\t\t\tminTime = step.threshold\r\n\t\t\t// \"threshold\" function is deprecated.\r\n\t\t\tif (typeof minTime === 'function') {\r\n\t\t\t\tminTime = minTime(now, future)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (minTime === undefined) {\r\n\t\tminTime = step.minTime\r\n\t}\r\n\t// A deprecated way of specifying a different threshold\r\n\t// depending on the previous step's unit.\r\n\tif (typeof minTime === 'object') {\r\n\t\tif (prevStep && prevStep.id && minTime[prevStep.id] !== undefined) {\r\n\t\t\tminTime = minTime[prevStep.id]\r\n\t\t} else {\r\n\t\t\tminTime = minTime.default\r\n\t\t}\r\n\t}\r\n\tif (typeof minTime === 'function') {\r\n\t\tminTime = minTime(timestamp, {\r\n\t\t\tfuture,\r\n\t\t\tgetMinTimeForUnit(toUnit, fromUnit) {\r\n\t\t\t\treturn getMinTimeForUnit(\r\n\t\t\t\t\ttoUnit,\r\n\t\t\t\t\tfromUnit || prevStep && prevStep.formatAs,\r\n\t\t\t\t\t{ round }\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\t// Evaluate the `test()` function.\r\n\t// `test()` function is deprecated.\r\n\tif (minTime === undefined) {\r\n\t\tif (step.test) {\r\n\t\t\tif (step.test(timestamp, {\r\n\t\t\t\tnow,\r\n\t\t\t\tfuture\r\n\t\t\t})) {\r\n\t\t\t\t// `0` threshold always passes.\r\n\t\t\t\tminTime = 0\r\n\t\t\t} else {\r\n\t\t\t\t// `MAX_SAFE_INTEGER` threshold won't ever pass in real life.\r\n\t\t\t\tminTime = 9007199254740991 // Number.MAX_SAFE_INTEGER\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (minTime === undefined) {\r\n\t\tif (prevStep) {\r\n\t\t\tif (step.formatAs && prevStep.formatAs) {\r\n\t\t\t\tminTime = getMinTimeForUnit(step.formatAs, prevStep.formatAs, { round })\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// The first step's `minTime` is `0` by default.\r\n\t\t\tminTime = 0\r\n\t\t}\r\n\t}\r\n\t// Warn if no `minTime` was defined or could be deduced.\r\n\tif (minTime === undefined) {\r\n\t\tconsole.warn('[javascript-time-ago] A step should specify `minTime`:\\n' + JSON.stringify(step, null, 2))\r\n\t}\r\n\treturn minTime\r\n}\r\n\r\nfunction getMinTimeForUnit(toUnit, fromUnit, { round }) {\r\n\tconst toUnitAmount = getSecondsInUnit(toUnit)\r\n\t// if (!fromUnit) {\r\n\t// \treturn toUnitAmount;\r\n\t// }\r\n\t// if (!fromUnit) {\r\n\t// \tfromUnit = getPreviousUnitFor(toUnit)\r\n\t// }\r\n\tlet fromUnitAmount\r\n\tif (fromUnit === 'now') {\r\n\t\tfromUnitAmount = getSecondsInUnit(toUnit)\r\n\t} else {\r\n\t\tfromUnitAmount = getSecondsInUnit(fromUnit)\r\n\t}\r\n\tif (toUnitAmount !== undefined && fromUnitAmount !== undefined) {\r\n\t\treturn toUnitAmount - fromUnitAmount * (1 - getDiffRatioToNextRoundedNumber(round))\r\n\t}\r\n}", "import getStepDenominator from './getStepDenominator.js'\r\nimport getStepMinTime from './getStepMinTime.js'\r\nimport { getRoundFunction } from '../round.js'\r\n\r\n/**\r\n * Finds an appropriate `step` of `steps` for the time interval (in seconds).\r\n *\r\n * @param {Object[]} steps - Time formatting steps.\r\n *\r\n * @param {number} secondsPassed - Time interval (in seconds).\r\n *                                 `< 0` for past dates and `> 0` for future dates.\r\n *\r\n * @param {number} options.now - Current timestamp.\r\n *\r\n * @param {boolean} [options.future] - Whether the date should be formatted as a future one\r\n *                                     instead of a past one.\r\n *\r\n * @param {string} [options.round] - (undocumented) Rounding mechanism.\r\n *\r\n * @param {string[]} [options.units] - A list of allowed time units.\r\n *                                     (Example: ['second', 'minute', 'hour', …])\r\n *\r\n * @param {boolean} [options.getNextStep] - Pass true to return `[step, nextStep]` instead of just `step`.\r\n *\r\n * @return {Object|Object[]} [step] — Either a `step` or `[prevStep, step, nextStep]`.\r\n */\r\nexport default function getStep(steps, secondsPassed, { now, future, round, units, getNextStep }) {\r\n\t// Ignore steps having not-supported time units in `formatAs`.\r\n\tsteps = filterStepsByUnits(steps, units)\r\n\tconst step = _getStep(steps, secondsPassed, { now, future, round })\r\n\tif (getNextStep) {\r\n\t\tif (step) {\r\n\t\t\tconst prevStep = steps[steps.indexOf(step) - 1]\r\n\t\t\tconst nextStep = steps[steps.indexOf(step) + 1]\r\n\t\t\treturn [prevStep, step, nextStep]\r\n\t\t}\r\n\t\treturn [undefined, undefined, steps[0]]\r\n\t}\r\n\treturn step\r\n}\r\n\r\nfunction _getStep(steps, secondsPassed, { now, future, round }) {\r\n\t// If no steps fit the conditions then return nothing.\r\n\tif (steps.length === 0) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Find the most appropriate step.\r\n\tconst i = getStepIndex(steps, secondsPassed, {\r\n\t\tnow,\r\n\t\tfuture: future || secondsPassed < 0,\r\n\t\tround\r\n\t})\r\n\r\n\t// If no step is applicable the return nothing.\r\n\tif (i === -1) {\r\n\t\treturn\r\n\t}\r\n\r\n\tconst step = steps[i]\r\n\r\n\t// Apply granularity to the time amount\r\n\t// (and fall back to the previous step\r\n\t//  if the first level of granularity\r\n\t//  isn't met by this amount)\r\n\tif (step.granularity) {\r\n\t\t// Recalculate the amount of seconds passed based on `granularity`.\r\n\t\tconst secondsPassedGranular = getRoundFunction(round)((Math.abs(secondsPassed) / getStepDenominator(step)) / step.granularity) * step.granularity\r\n\t\t// If the granularity for this step is too high,\r\n\t\t// then fall back to the previous step.\r\n\t\t// (if there is any previous step)\r\n\t\tif (secondsPassedGranular === 0 && i > 0) {\r\n\t\t\treturn steps[i - 1]\r\n\t\t}\r\n\t}\r\n\r\n\treturn step\r\n}\r\n\r\n/**\r\n * Iterates through steps until it finds the maximum one satisfying the `minTime` threshold.\r\n * @param  {Object} steps - Steps.\r\n * @param  {number} secondsPassed - How much seconds have passed since the date till `now`.\r\n * @param  {number} options.now - Current timestamp.\r\n * @param  {boolean} options.future - Whether the time interval should be formatted as a future one.\r\n * @param  {number} [i] - Gradation step currently being tested.\r\n * @return {number} Gradation step index.\r\n */\r\nfunction getStepIndex(steps, secondsPassed, options, i = 0) {\r\n\tconst minTime = getStepMinTime(steps[i], {\r\n\t\tprevStep: steps[i - 1],\r\n\t\ttimestamp: options.now - secondsPassed * 1000,\r\n\t\t...options\r\n\t})\r\n\t// If `minTime` isn't defined or deduceable for this step, then stop.\r\n\tif (minTime === undefined) {\r\n\t\treturn i - 1\r\n\t}\r\n\t// If the `minTime` threshold for moving from previous step\r\n\t// to this step is too high then return the previous step.\r\n\tif (Math.abs(secondsPassed) < minTime) {\r\n\t\treturn i - 1\r\n\t}\r\n\t// If it's the last step then return it.\r\n\tif (i === steps.length - 1) {\r\n\t\treturn i\r\n\t}\r\n\t// Move to the next step.\r\n\treturn getStepIndex(steps, secondsPassed, options, i + 1)\r\n}\r\n\r\n/**\r\n * Leaves only allowed steps.\r\n * @param  {Object[]} steps\r\n * @param  {string[]} units - Allowed time units.\r\n * @return {Object[]}\r\n */\r\nfunction filterStepsByUnits(steps, units) {\r\n\treturn steps.filter(({ unit, formatAs }) => {\r\n\t\t// \"unit\" is now called \"formatAs\".\r\n\t\tunit = unit || formatAs\r\n\t\t// If this step has a `unit` defined\r\n\t\t// then this `unit` must be in the list of allowed `units`.\r\n\t\tif (unit) {\r\n\t\t\treturn units.indexOf(unit) >= 0\r\n\t\t}\r\n\t\t// A step is not required to specify a `unit`:\r\n\t\t// alternatively, it could specify `format()`.\r\n\t\t// (see \"twitter\" style for an example)\r\n\t\treturn true\r\n\t})\r\n}", "import { getSecondsInUnit } from './units.js'\r\nimport { getRoundFunction, getDiffRatioToNextRoundedNumber } from '../round.js'\r\n\r\n/**\r\n * Gets the time to next update for a step with a time unit defined.\r\n * @param  {string} unit\r\n * @param  {number} date — The date passed to `.format()`, converted to a timestamp.\r\n * @param  {number} options.now\r\n * @param  {string} [options.round] — (undocumented) Rounding mechanism.\r\n * @return {number} [timeToNextUpdate]\r\n */\r\nexport default function getTimeToNextUpdateForUnit(unit, timestamp, { now, round }) {\r\n\t// For some units, like \"now\", there's no defined amount of seconds in them.\r\n\tif (!getSecondsInUnit(unit)) {\r\n\t\t// If there's no amount of seconds defined for this unit\r\n\t\t// then the update interval can't be determined reliably.\r\n\t\treturn\r\n\t}\r\n\tconst unitDenominator = getSecondsInUnit(unit) * 1000\r\n\tconst future = timestamp > now\r\n\tconst preciseAmount = Math.abs(timestamp - now)\r\n\tconst roundedAmount = getRoundFunction(round)(preciseAmount / unitDenominator) * unitDenominator\r\n\tif (future) {\r\n\t\tif (roundedAmount > 0) {\r\n\t\t\t// Amount decreases with time.\r\n\t\t\treturn (preciseAmount - roundedAmount) +\r\n\t\t\t\tgetDiffToPreviousRoundedNumber(round, unitDenominator)\r\n\t\t} else {\r\n\t\t\t// Refresh right after the zero point,\r\n\t\t\t// when \"future\" changes to \"past\".\r\n\t\t\treturn (preciseAmount - roundedAmount) + 1\r\n\t\t}\r\n\t}\r\n \t// Amount increases with time.\r\n\treturn -(preciseAmount - roundedAmount) + getDiffToNextRoundedNumber(round, unitDenominator)\r\n}\r\n\r\nfunction getDiffToNextRoundedNumber(round, unitDenominator) {\r\n\treturn getDiffRatioToNextRoundedNumber(round) * unitDenominator\r\n}\r\n\r\nfunction getDiffToPreviousRoundedNumber(round, unitDenominator) {\r\n\treturn (1 - getDiffRatioToNextRoundedNumber(round)) * unitDenominator + 1\r\n}", "import _getTimeToNextUpdateForUnit from './getTimeToNextUpdateForUnit.js'\r\nimport getStepMinTime from './getStepMinTime.js'\r\nimport { getRoundFunction } from '../round.js'\r\n\r\n// A thousand years is practically a metaphor for \"infinity\".\r\nconst YEAR = 365 * 24 * 60 * 60 * 1000\r\nexport const INFINITY = 1000 * YEAR\r\n\r\n/**\r\n * Gets the time to next update for a date and a step.\r\n * @param  {number} date — The date passed to `.format()`, converted to a timestamp.\r\n * @param  {object} step\r\n * @param  {object} [options.previousStep]\r\n * @param  {object} [options.nextStep]\r\n * @param  {number} options.now\r\n * @param  {boolean} options.future\r\n * @param  {string} [options.round] - (undocumented) Rounding mechanism.\r\n * @return {number} [timeToNextUpdate]\r\n */\r\nexport default function getTimeToNextUpdate(date, step, { prevStep, nextStep, now, future, round }) {\r\n\tconst timestamp = date.getTime ? date.getTime() : date\r\n\r\n\tconst getTimeToNextUpdateForUnit = (unit) => _getTimeToNextUpdateForUnit(unit, timestamp, { now, round })\r\n\r\n\t// For future dates, steps move from the last one to the first one,\r\n\t// while for past dates, steps move from the first one to the last one,\r\n\t// due to the fact that time flows in one direction,\r\n\t// and future dates' interval naturally becomes smaller\r\n\t// while past dates' interval naturally grows larger.\r\n\t//\r\n\t// For future dates, it's the transition\r\n\t// from the current step to the previous step,\r\n\t// therefore check the `minTime` of the current step.\r\n\t//\r\n\t// For past dates, it's the transition\r\n\t// from the current step to the next step,\r\n\t// therefore check the `minTime` of the next step.\r\n\t//\r\n\tconst timeToStepChange = getTimeToStepChange(future ? step : nextStep, timestamp, {\r\n\t\tfuture,\r\n\t\tnow,\r\n\t\tround,\r\n\t\tprevStep: future ? prevStep : step,\r\n\t\t// isFirstStep: future && isFirstStep\r\n\t})\r\n\r\n\tif (timeToStepChange === undefined) {\r\n\t\t// Can't reliably determine \"time to next update\"\r\n\t\t// if not all of the steps provide `minTime`.\r\n\t\treturn\r\n\t}\r\n\r\n\tlet timeToNextUpdate\r\n\r\n\tif (step) {\r\n\t\tif (step.getTimeToNextUpdate) {\r\n\t\t\ttimeToNextUpdate = step.getTimeToNextUpdate(timestamp, {\r\n\t\t\t\tgetTimeToNextUpdateForUnit,\r\n\t\t\t\tgetRoundFunction,\r\n\t\t\t\tnow,\r\n\t\t\t\tfuture,\r\n\t\t\t\tround\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tif (timeToNextUpdate === undefined) {\r\n\t\t\t// \"unit\" is now called \"formatAs\".\r\n\t\t\tconst unit = step.unit || step.formatAs\r\n\t\t\tif (unit) {\r\n\t\t\t\t// For some units, like \"now\", there's no defined amount of seconds in them.\r\n\t\t\t\t// In such cases, `getTimeToNextUpdateForUnit()` returns `undefined`,\r\n\t\t\t\t// and the next step's `minTime` could be used to calculate the update interval:\r\n\t\t\t\t// it will just assume that the label never changes for this step.\r\n\t\t\t\ttimeToNextUpdate = getTimeToNextUpdateForUnit(unit)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (timeToNextUpdate === undefined) {\r\n\t\treturn timeToStepChange\r\n\t}\r\n\r\n\treturn Math.min(timeToNextUpdate, timeToStepChange)\r\n}\r\n\r\nexport function getStepChangesAt(currentOrNextStep, timestamp, { now, future, round, prevStep }) {\r\n\t// The first step's `minTime` is `0` by default.\r\n\t// It doesn't \"change\" steps at zero point\r\n\t// but it does change the wording when switching\r\n\t// from \"future\" to \"past\": \"in ...\" -> \"... ago\".\r\n\t// Therefore, the label should be updated at zero-point too.\r\n\tconst minTime = getStepMinTime(currentOrNextStep, { timestamp, now, future, round, prevStep })\r\n\tif (minTime === undefined) {\r\n\t\treturn\r\n\t}\r\n\tif (future) {\r\n\t\t// The step changes to the previous step\r\n\t\t// as soon as `timestamp - now` becomes\r\n\t\t// less than the `minTime` of the current step:\r\n\t\t// `timestamp - now === minTime - 1`\r\n\t\t// => `now === timestamp - minTime + 1`.\r\n\t\treturn timestamp - minTime * 1000 + 1\r\n\t} else {\r\n\t\t// The step changes to the next step\r\n\t\t// as soon as `now - timestamp` becomes\r\n\t\t// equal to `minTime` of the next step:\r\n\t\t// `now - timestamp === minTime`\r\n\t\t// => `now === timestamp + minTime`.\r\n\r\n\t\t// This is a special case when double-update could be skipped.\r\n\t\tif (minTime === 0 && timestamp === now) {\r\n\t\t\treturn INFINITY\r\n\t\t}\r\n\r\n\t\treturn timestamp + minTime * 1000\r\n\t}\r\n}\r\n\r\nexport function getTimeToStepChange(step, timestamp, {\r\n\tnow,\r\n\tfuture,\r\n\tround,\r\n\tprevStep\r\n}) {\r\n\tif (step) {\r\n\t\tconst stepChangesAt = getStepChangesAt(step, timestamp, {\r\n\t\t\tnow,\r\n\t\t\tfuture,\r\n\t\t\tround,\r\n\t\t\tprevStep\r\n\t\t})\r\n\t\tif (stepChangesAt === undefined) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn stepChangesAt - now\r\n\t} else {\r\n\t\tif (future) {\r\n\t\t\t// No step.\r\n\t\t\t// Update right after zero point, when it changes from \"future\" to \"past\".\r\n\t\t\treturn timestamp - now + 1\r\n\t\t} else {\r\n\t\t\t// The last step doesn't ever change when `date` is in the past.\r\n\t\t\treturn INFINITY\r\n\t\t}\r\n\t}\r\n}", "// For all locales added\r\n// their relative time formatter messages will be stored here.\r\nconst localesData = {}\r\n\r\nexport function getLocaleData(locale) {\r\n\treturn localesData[locale]\r\n}\r\n\r\nexport function addLocaleData(localeData) {\r\n\tif (!localeData) {\r\n\t\tthrow new Error('[javascript-time-ago] No locale data passed.')\r\n\t}\r\n\t// This locale data is stored in a global variable\r\n\t// and later used when calling `.format(time)`.\r\n\tlocalesData[localeData.locale] = localeData\r\n}", "// just now\r\n// 1 second ago\r\n// 2 seconds ago\r\n// …\r\n// 59 seconds ago\r\n// 1 minute ago\r\n// 2 minutes ago\r\n// …\r\n// 59 minutes ago\r\n// 1 hour ago\r\n// 2 hours ago\r\n// …\r\n// 24 hours ago\r\n// 1 day ago\r\n// 2 days ago\r\n// …\r\n// 6 days ago\r\n// 1 week ago\r\n// 2 weeks ago\r\n// …\r\n// 3 weeks ago\r\n// 1 month ago\r\n// 2 months ago\r\n// …\r\n// 11 months ago\r\n// 1 year ago\r\n// 2 years ago\r\n// …\r\nexport default [\r\n\t{\r\n\t\tformatAs: 'now'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'second'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'minute'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'hour'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'day'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'week'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'month'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'year'\r\n\t}\r\n]", "import round from '../steps/round.js'\r\n\r\n// just now\r\n// 1 second ago\r\n// 2 seconds ago\r\n// …\r\n// 59 seconds ago\r\n// 1 minute ago\r\n// 2 minutes ago\r\n// …\r\n// 59 minutes ago\r\n// 1 minute ago\r\n// 2 minutes ago\r\n// …\r\n// 59 minutes ago\r\n// 1 hour ago\r\n// 2 hours ago\r\n// …\r\n// 24 hours ago\r\n// 1 day ago\r\n// 2 days ago\r\n// …\r\n// 6 days ago\r\n// 1 week ago\r\n// 2 weeks ago\r\n// 3 weeks ago\r\n// 4 weeks ago\r\n// 1 month ago\r\n// 2 months ago\r\n// …\r\n// 11 months ago\r\n// 1 year ago\r\n// 2 years ago\r\n// …\r\n//\r\nexport default {\r\n\tsteps: round,\r\n\tlabels: 'long'\r\n}", "import round from './round.js'\r\n\r\n// just now\r\n// 1 minute ago\r\n// 2 minutes ago\r\n// …\r\n// 59 minutes ago\r\n// 1 minute ago\r\n// 2 minutes ago\r\n// …\r\n// 59 minutes ago\r\n// 1 hour ago\r\n// 2 hours ago\r\n// …\r\n// 24 hours ago\r\n// 1 day ago\r\n// 2 days ago\r\n// …\r\n// 6 days ago\r\n// 1 week ago\r\n// 2 weeks ago\r\n// 3 weeks ago\r\n// 4 weeks ago\r\n// 1 month ago\r\n// 2 months ago\r\n// …\r\n// 11 months ago\r\n// 1 year ago\r\n// 2 years ago\r\n// …\r\n//\r\nexport default {\r\n\t...round,\r\n\t// Skip \"seconds\".\r\n\tsteps: round.steps.filter(step => step.formatAs !== 'second')\r\n}", "import { minute, hour, day, week, month, year } from './units.js'\r\n\r\n// \"factor\" is a legacy property.\r\n// Developers shouldn't need to use it in their custom steps.\r\n\r\n// \"threshold\" is a legacy name of \"min\".\r\n// Developers should use \"min\" property name instead of \"threshold\".\r\n\r\n// \"threshold_for_idOrUnit: value\" is a legacy way of specifying \"min: { id: value }\".\r\n// Developers should use \"min\" property instead of \"threshold\".\r\n\r\n// just now\r\n// 1 minute ago\r\n// 2 minutes ago\r\n// 5 minutes ago\r\n// 10 minutes ago\r\n// 15 minutes ago\r\n// 20 minutes ago\r\n// …\r\n// 50 minutes ago\r\n// an hour ago\r\n// 2 hours ago\r\n// …\r\n// 20 hours ago\r\n// a day ago\r\n// 2 days ago\r\n// 5 days ago\r\n// a week ago\r\n// 2 weeks ago\r\n// 3 weeks ago\r\n// a month ago\r\n// 2 months ago\r\n// 4 months ago\r\n// a year ago\r\n// 2 years ago\r\n// …\r\nexport default [\r\n\t{\r\n\t\t// This step returns the amount of seconds\r\n\t\t// by dividing the amount of seconds by `1`.\r\n\t\tfactor: 1,\r\n    \t// \"now\" labels are used for formatting the output.\r\n\t\tunit: 'now'\r\n\t},\r\n\t{\r\n\t\t// When the language doesn't support `now` unit,\r\n\t\t// the first step is ignored, and it uses this `second` unit.\r\n\t\tthreshold: 1,\r\n\t\t// `threshold_for_now` should be the same as `threshold` on minutes.\r\n\t\tthreshold_for_now: 45.5,\r\n\t\t// This step returns the amount of seconds\r\n\t\t// by dividing the amount of seconds by `1`.\r\n\t\tfactor: 1,\r\n    \t// \"second\" labels are used for formatting the output.\r\n\t\tunit: 'second'\r\n\t},\r\n\t{\r\n\t\t// `threshold` should be the same as `threshold_for_now` on seconds.\r\n\t\tthreshold: 45.5,\r\n\t\t// Return the amount of minutes by dividing the amount\r\n\t\t// of seconds by the amount of seconds in a minute.\r\n\t\tfactor: minute,\r\n    \t// \"minute\" labels are used for formatting the output.\r\n\t\tunit: 'minute'\r\n\t},\r\n\t{\r\n\t\t// This step is effective starting from 2.5 minutes.\r\n\t\tthreshold: 2.5 * minute,\r\n\t\t// Allow only 5-minute increments of minutes starting from 2.5 minutes.\r\n\t\t// `granularity` — (advanced) Time interval value \"granularity\".\r\n\t\t// For example, it could be set to `5` for minutes to allow only 5-minute increments\r\n\t\t// when formatting time intervals: `0 minutes`, `5 minutes`, `10 minutes`, etc.\r\n\t\t// Perhaps this feature will be removed because there seem to be no use cases\r\n\t\t// of it in the real world.\r\n\t\tgranularity: 5,\r\n\t\t// Return the amount of minutes by dividing the amount\r\n\t\t// of seconds by the amount of seconds in a minute.\r\n\t\tfactor: minute,\r\n\t\t// \"minute\" labels are used for formatting the output.\r\n\t\tunit: 'minute'\r\n\t},\r\n\t{\r\n\t\t// This step is effective starting from 22.5 minutes.\r\n\t\tthreshold: 22.5 * minute,\r\n\t\t// Return the amount of minutes by dividing the amount\r\n\t\t// of seconds by the amount of seconds in  half-an-hour.\r\n\t\tfactor: 0.5 * hour,\r\n\t\t// \"half-hour\" labels are used for formatting the output.\r\n\t\t// (if available, which is no longer the case)\r\n\t\tunit: 'half-hour'\r\n\t},\r\n\t{\r\n\t\t// This step is effective starting from 42.5 minutes.\r\n\t\tthreshold: 42.5 * minute,\r\n\t\tthreshold_for_minute: 52.5 * minute,\r\n\t\t// Return the amount of minutes by dividing the amount\r\n\t\t// of seconds by the amount of seconds in an hour.\r\n\t\tfactor: hour,\r\n\t\t// \"hour\" labels are used for formatting the output.\r\n\t\tunit: 'hour'\r\n\t},\r\n\t{\r\n\t\t// This step is effective starting from 20.5 hours.\r\n\t\tthreshold: (20.5 / 24) * day,\r\n\t\t// Return the amount of minutes by dividing the amount\r\n\t\t// of seconds by the amount of seconds in a day.\r\n\t\tfactor: day,\r\n\t\t// \"day\" labels are used for formatting the output.\r\n\t\tunit: 'day'\r\n\t},\r\n\t{\r\n\t\t// This step is effective starting from 5.5 days.\r\n\t\tthreshold: 5.5 * day,\r\n\t\t// Return the amount of minutes by dividing the amount\r\n\t\t// of seconds by the amount of seconds in a week.\r\n\t\tfactor: week,\r\n\t\t// \"week\" labels are used for formatting the output.\r\n\t\tunit: 'week'\r\n\t},\r\n\t{\r\n\t\t// This step is effective starting from 3.5 weeks.\r\n\t\tthreshold: 3.5 * week,\r\n\t\t// Return the amount of minutes by dividing the amount\r\n\t\t// of seconds by the amount of seconds in a month.\r\n\t\tfactor: month,\r\n\t\t// \"month\" labels are used for formatting the output.\r\n\t\tunit: 'month'\r\n\t},\r\n\t{\r\n\t\t// This step is effective starting from 10.5 months.\r\n\t\tthreshold: 10.5 * month,\r\n\t\t// Return the amount of minutes by dividing the amount\r\n\t\t// of seconds by the amount of seconds in a year.\r\n\t\tfactor: year,\r\n\t\t// \"year\" labels are used for formatting the output.\r\n\t\tunit: 'year'\r\n\t}\r\n]", "import approximate from '../steps/approximate.js'\r\n\r\n// \"gradation\" is a legacy name for \"steps\".\r\n// It's here just for legacy compatibility.\r\n// Use \"steps\" name instead.\r\n\r\n// \"flavour\" is a legacy name for \"labels\".\r\n// It's here just for legacy compatibility.\r\n// Use \"labels\" name instead.\r\n\r\n// \"units\" is a legacy property.\r\n// It's here just for legacy compatibility.\r\n// Developers shouldn't need to use it in their custom styles.\r\n\r\nexport default {\r\n\tgradation: approximate,\r\n\tflavour: 'long',\r\n\tunits: [\r\n\t\t'now',\r\n\t\t'minute',\r\n\t\t'hour',\r\n\t\t'day',\r\n\t\t'week',\r\n\t\t'month',\r\n\t\t'year'\r\n\t]\r\n}", "import approximate from '../steps/approximate.js'\r\n\r\n// \"gradation\" is a legacy name for \"steps\".\r\n// It's here just for legacy compatibility.\r\n// Use \"steps\" name instead.\r\n\r\n// \"flavour\" is a legacy name for \"labels\".\r\n// It's here just for legacy compatibility.\r\n// Use \"labels\" name instead.\r\n\r\n// \"units\" is a legacy property.\r\n// It's here just for legacy compatibility.\r\n// Developers shouldn't need to use it in their custom styles.\r\n\r\n// Similar to the default style but with \"ago\" omitted.\r\n//\r\n// just now\r\n// 5 minutes\r\n// 10 minutes\r\n// 15 minutes\r\n// 20 minutes\r\n// an hour\r\n// 2 hours\r\n// …\r\n// 20 hours\r\n// 1 day\r\n// 2 days\r\n// a week\r\n// 2 weeks\r\n// 3 weeks\r\n// a month\r\n// 2 months\r\n// 3 months\r\n// 4 months\r\n// a year\r\n// 2 years\r\n//\r\nexport default {\r\n\tgradation: approximate,\r\n\tflavour: 'long-time',\r\n\tunits: [\r\n\t\t'now',\r\n\t\t'minute',\r\n\t\t'hour',\r\n\t\t'day',\r\n\t\t'week',\r\n\t\t'month',\r\n\t\t'year'\r\n\t]\r\n}", "// Looks like this one's deprecated.\r\n// /**\r\n//  * Returns a step corresponding to the unit.\r\n//  * @param  {Object[]} steps\r\n//  * @param  {string} unit\r\n//  * @return {?Object}\r\n//  */\r\n// export function getStepForUnit(steps, unit) {\r\n// \tfor (const step of steps) {\r\n// \t\tif (step.unit === unit) {\r\n// \t\t\treturn step\r\n// \t\t}\r\n// \t}\r\n// }\r\n\r\n// Looks like this one won't be used in the next major version.\r\n/**\r\n * Converts value to a `Date`\r\n * @param {(number|Date)} value\r\n * @return {Date}\r\n */\r\nexport function getDate(value) {\r\n\treturn value instanceof Date ? value : new Date(value)\r\n}", "// \"convenient\" is a legacy name of \"approximate\" steps.\r\nexport { default as approximate, default as convenient } from './approximate.js'\r\n\r\n// \"canonical\" is a legacy name of \"round\" steps.\r\nexport { default as round, default as canonical } from './round.js'\r\n\r\nexport {\r\n\tminute,\r\n\thour,\r\n\tday,\r\n\tweek,\r\n\tmonth,\r\n\tyear\r\n} from './units.js'\r\n\r\nexport {\r\n\tgetDate\r\n} from './helpers.js'", "import { day, getDate } from '../steps/index.js'\r\nimport { intlDateTimeFormatSupported } from '../locale.js'\r\n\r\n// For compatibility with the old versions of this library.\r\nimport renameLegacyProperties from './renameLegacyProperties.js'\r\n\r\n// Twitter-style relative date/time formatting.\r\n// (\"1m\", \"2h\", \"Mar 3\", \"Apr 4, 2012\").\r\n//\r\n// Seconds, minutes or hours are shown for shorter intervals,\r\n// and longer intervals are formatted using full date format.\r\n\r\nconst steps = [\r\n\t{\r\n\t\tformatAs: 'second'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'minute'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'hour'\r\n\t}\r\n]\r\n\r\n// A cache for `Intl.DateTimeFormat` formatters\r\n// for various locales (is a global variable).\r\nconst formatters = {}\r\n\r\n// Starting from day intervals, output month and day.\r\nconst monthAndDay = {\r\n\tminTime(timestamp, { future, getMinTimeForUnit }) {\r\n\t\t// Returns `23.5 * 60 * 60` when `round` is \"round\",\r\n\t\t// and `24 * 60 * 60` when `round` is \"floor\".\r\n\t\treturn getMinTimeForUnit('day')\r\n\t},\r\n\tformat(value, locale) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale]) {\r\n\t\t\tformatters[locale] = {}\r\n\t\t}\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale].dayMonth) {\r\n\t\t\t// \"Apr 11\" (MMMd)\r\n\t\t\tformatters[locale].dayMonth = new Intl.DateTimeFormat(locale, {\r\n\t\t\t\tmonth: 'short',\r\n\t\t\t\tday: 'numeric'\r\n\t\t\t})\r\n\t\t}\r\n\t\t// Output month and day.\r\n\t\treturn formatters[locale].dayMonth.format(getDate(value))\r\n\t}\r\n}\r\n\r\n// If the `date` happened/happens outside of current year,\r\n// then output day, month and year.\r\n// The interval should be such that the `date` lies outside of the current year.\r\nconst yearMonthAndDay = {\r\n\tminTime(timestamp, { future }) {\r\n\t\tif (future) {\r\n\t\t\t// January 1, 00:00, of the `date`'s year is right after\r\n\t\t\t// the maximum `now` for formatting a future date:\r\n\t\t\t// When `now` is before that date, the `date` is formatted as \"day/month/year\" (this step),\r\n\t\t\t// When `now` is equal to or after that date, the `date` is formatted as \"day/month\" (another step).\r\n\t\t\t// After that, it's hours, minutes, seconds, and after that it's no longer `future`.\r\n\t\t\t// The date is right after the maximum `now` for formatting a future date,\r\n\t\t\t// so subtract 1 millisecond from it.\r\n\t\t\tconst maxFittingNow = new Date(new Date(timestamp).getFullYear(), 0).getTime() - 1\r\n\t\t\t// Return `minTime` (in seconds).\r\n\t\t\treturn (timestamp - maxFittingNow) / 1000\r\n\t\t} else {\r\n\t\t\t// January 1, 00:00, of the year following the `date`'s year\r\n\t\t\t// is the minimum `now` for formatting a past date:\r\n\t\t\t// When `now` is before that date, the `date` is formatted as \"day/month\" (another step),\r\n\t\t\t// When `now` is equal to or after that date, the `date` is formatted as \"day/month/year\" (this step).\r\n\t\t\t// After that, it's hours, minutes, seconds, and after that it's no longer `future`.\r\n\t\t\tconst minFittingNow = new Date(new Date(timestamp).getFullYear() + 1, 0).getTime()\r\n\t\t\t// Return `minTime` (in seconds).\r\n\t\t\treturn (minFittingNow - timestamp) / 1000\r\n\t\t}\r\n\t},\r\n\tformat(value, locale) {\r\n\t\t/* istanbul ignore if */\r\n\t\tif (!formatters[locale]) {\r\n\t\t\tformatters[locale] = {}\r\n\t\t}\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale].dayMonthYear) {\r\n\t\t\t// \"Apr 11, 2017\" (yMMMd)\r\n\t\t\tformatters[locale].dayMonthYear = new Intl.DateTimeFormat(locale, {\r\n\t\t\t\tyear: 'numeric',\r\n\t\t\t\tmonth: 'short',\r\n\t\t\t\tday: 'numeric'\r\n\t\t\t})\r\n\t\t}\r\n\t\t// Output day, month and year.\r\n\t\treturn formatters[locale].dayMonthYear.format(getDate(value))\r\n\t}\r\n}\r\n\r\n// If `Intl.DateTimeFormat` is supported,\r\n// then longer time intervals will be formatted as dates.\r\n/* istanbul ignore else */\r\nif (intlDateTimeFormatSupported()) {\r\n\tsteps.push(monthAndDay, yearMonthAndDay)\r\n}\r\n// Otherwise, if `Intl.DateTimeFormat` is not supported,\r\n// which could be the case when using Internet Explorer,\r\n// then simply mimick \"round\" steps.\r\nelse {\r\n\tsteps.push(\r\n\t\t{\r\n\t\t\tformatAs: 'day'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'week'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'month'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'year'\r\n\t\t}\r\n\t)\r\n}\r\n\r\nexport default {\r\n\tsteps,\r\n\tlabels: [\r\n\t\t// \"mini\" labels are only defined for a few languages.\r\n\t\t'mini',\r\n\t\t// \"short-time\" labels are only defined for a few languages.\r\n\t\t'short-time',\r\n\t\t// \"narrow\" and \"short\" labels are defined for all languages.\r\n\t\t// \"narrow\" labels can sometimes be weird (like \"+5d.\"),\r\n\t\t// but \"short\" labels have the \" ago\" part, so \"narrow\" seem\r\n\t\t// more appropriate.\r\n\t\t// \"short\" labels would have been more appropriate if they\r\n\t\t// didn't have the \" ago\" part, hence the \"short-time\" above.\r\n\t\t'narrow',\r\n\t\t// Since \"narrow\" labels are always present, \"short\" element\r\n\t\t// of this array can be removed.\r\n\t\t'short'\r\n\t]\r\n}", "import twitter from './twitter.js'\r\n\r\nexport default {\r\n\t...twitter,\r\n\t// Add \"now\".\r\n\tsteps: [{ formatAs: 'now' }].concat(twitter.steps)\r\n}", "import twitter from './twitter.js'\r\n\r\nexport default {\r\n\t...twitter,\r\n\t// Skip \"seconds\".\r\n\tsteps: twitter.steps.filter(step => step.formatAs !== 'second')\r\n}", "import twitterMinute from './twitterMinute.js'\r\n\r\nexport default {\r\n\t...twitterMinute,\r\n\t// Add \"now\".\r\n\tsteps: [{ formatAs: 'now' }].concat(twitterMinute.steps)\r\n}", "import { minute } from '../steps/units.js'\r\nimport twitter from './twitter.js'\r\n\r\nexport default {\r\n\t...twitter,\r\n\t// Skip \"seconds\".\r\n\tsteps: twitter.steps.filter(step => step.formatAs !== 'second')\r\n\t\t// Start showing `1m` from the first minute.\r\n\t\t.map(step => step.formatAs === 'minute' ? { ...step, minTime: minute } : step)\r\n}", "export default {\r\n\tsteps: [\r\n\t\t{\r\n\t\t\tformatAs: 'second'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'minute'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'hour'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'day'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'month'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'year'\r\n\t\t}\r\n\t],\r\n\tlabels: [\r\n\t\t// \"mini\" labels are only defined for a few languages.\r\n\t\t'mini',\r\n\t\t// \"short-time\" labels are only defined for a few languages.\r\n\t\t'short-time',\r\n\t\t// \"narrow\" and \"short\" labels are defined for all languages.\r\n\t\t// \"narrow\" labels can sometimes be weird (like \"+5d.\"),\r\n\t\t// but \"short\" labels have the \" ago\" part, so \"narrow\" seem\r\n\t\t// more appropriate.\r\n\t\t// \"short\" labels would have been more appropriate if they\r\n\t\t// didn't have the \" ago\" part, hence the \"short-time\" above.\r\n\t\t'narrow',\r\n\t\t// Since \"narrow\" labels are always present, \"short\" element\r\n\t\t// of this array can be removed.\r\n\t\t'short'\r\n\t]\r\n}", "import mini from './mini.js'\r\n\r\nexport default {\r\n\t...mini,\r\n\t// Add \"now\".\r\n\tsteps: [{ formatAs: 'now' }].concat(mini.steps)\r\n}", "import mini from './mini.js'\r\n\r\nexport default {\r\n\t...mini,\r\n\t// Skip \"seconds\".\r\n\tsteps: mini.steps.filter(step => step.formatAs !== 'second')\r\n}", "import miniMinute from './miniMinute.js'\r\n\r\nexport default {\r\n\t...miniMinute,\r\n\t// Add \"now\".\r\n\tsteps: [{ formatAs: 'now' }].concat(miniMinute.steps)\r\n}", "import round from './round.js'\r\nimport roundMinute from './roundMinute.js'\r\n// `approximate` style is deprecated.\r\nimport approximate from './approximate.js'\r\n// `approximateTime` style is deprecated.\r\nimport approximateTime from './approximateTime.js'\r\nimport twitter from './twitter.js'\r\nimport twitterNow from './twitterNow.js'\r\nimport twitterMinute from './twitterMinute.js'\r\nimport twitterMinuteNow from './twitterMinuteNow.js'\r\nimport twitterFirstMinute from './twitterFirstMinute.js'\r\nimport mini from './mini.js'\r\nimport miniNow from './miniNow.js'\r\nimport miniMinute from './miniMinute.js'\r\nimport miniMinuteNow from './miniMinuteNow.js'\r\n\r\nexport default function getStyleByName(style) {\r\n\tswitch (style) {\r\n\t\t// \"default\" style name is deprecated.\r\n\t\tcase 'default':\r\n\t\tcase 'round':\r\n\t\t\treturn round\r\n\t\tcase 'round-minute':\r\n\t\t\treturn roundMinute\r\n\t\tcase 'approximate':\r\n\t\t\treturn approximate\r\n\t\t// \"time\" style name is deprecated.\r\n\t\tcase 'time':\r\n\t\tcase 'approximate-time':\r\n\t\t\treturn approximateTime\r\n\t\tcase 'mini':\r\n\t\t\treturn mini\r\n\t\tcase 'mini-now':\r\n\t\t\treturn miniNow\r\n\t\tcase 'mini-minute':\r\n\t\t\treturn miniMinute\r\n\t\tcase 'mini-minute-now':\r\n\t\t\treturn miniMinuteNow\r\n\t\tcase 'twitter':\r\n\t\t\treturn twitter\r\n\t\tcase 'twitter-now':\r\n\t\t\treturn twitterNow\r\n\t\tcase 'twitter-minute':\r\n\t\t\treturn twitterMinute\r\n\t\tcase 'twitter-minute-now':\r\n\t\t\treturn twitterMinuteNow\r\n\t\tcase 'twitter-first-minute':\r\n\t\t\treturn twitterFirstMinute\r\n\t\tdefault:\r\n\t\t\t// For historical reasons, the default style is \"approximate\".\r\n\t\t\treturn approximate\r\n\t}\r\n}", "import RelativeTimeFormatPolyfill from 'relative-time-format'\r\n\r\nimport Cache from './cache.js'\r\nimport chooseLocale from './locale.js'\r\nimport isStyleObject from './isStyleObject.js'\r\n\r\nimport getStep from './steps/getStep.js'\r\nimport getStepDenominator from './steps/getStepDenominator.js'\r\nimport getTimeToNextUpdate from './steps/getTimeToNextUpdate.js'\r\n\r\nimport {\r\n\taddLocaleData,\r\n\tgetLocaleData\r\n} from './LocaleDataStore.js'\r\n\r\nimport defaultStyle from './style/roundMinute.js'\r\nimport getStyleByName from './style/getStyleByName.js'\r\n\r\nimport { getRoundFunction } from './round.js'\r\n\r\n// Valid time units.\r\nconst UNITS = [\r\n\t'now',\r\n\t// The rest are the same as in `Intl.RelativeTimeFormat`.\r\n\t'second',\r\n\t'minute',\r\n\t'hour',\r\n\t'day',\r\n\t'week',\r\n\t'month',\r\n\t'quarter',\r\n\t'year'\r\n]\r\n\r\nexport default class TimeAgo {\r\n\t/**\r\n\t * @param {(string|string[])} locales=[] - Preferred locales (or locale).\r\n\t * @param {boolean} [polyfill] — Pass `false` to use native `Intl.RelativeTimeFormat` and `Intl.PluralRules` instead of the polyfills.\r\n\t */\r\n\tconstructor(locales = [], { polyfill } = {}) {\r\n\t\t// Convert `locales` to an array.\r\n\t\tif (typeof locales === 'string') {\r\n\t\t\tlocales = [locales]\r\n\t\t}\r\n\r\n\t\t// Choose the most appropriate locale\r\n\t\t// from the list of `locales` added by the user.\r\n\t\t// For example, new TimeAgo(\"en-US\") -> \"en\".\r\n\t\tthis.locale = chooseLocale(\r\n\t\t\tlocales.concat(TimeAgo.getDefaultLocale()),\r\n\t\t\tgetLocaleData\r\n\t\t)\r\n\r\n\t\tif (typeof Intl !== 'undefined') {\r\n\t\t\t// Use `Intl.NumberFormat` for formatting numbers (when available).\r\n\t\t\tif (Intl.NumberFormat) {\r\n\t\t\t\tthis.numberFormat = new Intl.NumberFormat(this.locale)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Some people have requested the ability to use native\r\n\t\t// `Intl.RelativeTimeFormat` and `Intl.PluralRules`\r\n\t\t// instead of the polyfills.\r\n\t\t// https://github.com/catamphetamine/javascript-time-ago/issues/21\r\n\t\tif (polyfill === false) {\r\n\t\t\tthis.IntlRelativeTimeFormat = Intl.RelativeTimeFormat\r\n\t\t\tthis.IntlPluralRules = Intl.PluralRules\r\n\t\t} else {\r\n\t\t\tthis.IntlRelativeTimeFormat = RelativeTimeFormatPolyfill\r\n\t\t\tthis.IntlPluralRules = RelativeTimeFormatPolyfill.PluralRules\r\n\t\t}\r\n\r\n\t\t// Cache `Intl.RelativeTimeFormat` instance.\r\n\t\tthis.relativeTimeFormatCache = new Cache()\r\n\r\n\t\t// Cache `Intl.PluralRules` instance.\r\n\t\tthis.pluralRulesCache = new Cache()\r\n\t}\r\n\r\n\t/**\r\n\t * Formats relative date/time.\r\n\t *\r\n\t * @param {(number|Date)} input — A `Date` or a javascript timestamp.\r\n\t *\r\n\t * @param {(string|object)} style — Date/time formatting style. Either one of the built-in style names or a \"custom\" style definition object having `steps: object[]` and `labels: string[]`.\r\n\t *\r\n\t * @param {number} [options.now] - Sets the current date timestamp.\r\n\t *\r\n\t * @param  {boolean} [options.future] — Tells how to format value `0`:\r\n\t *         as \"future\" (`true`) or \"past\" (`false`).\r\n\t *         Is `false` by default, but should have been `true` actually,\r\n\t *         in order to correspond to `Intl.RelativeTimeFormat`\r\n\t *         that uses `future` formatting for `0` unless `-0` is passed.\r\n\t *\r\n\t * @param {string} [options.round] — Rounding method. Overrides the style's one.\r\n\t *\r\n\t * @param {boolean} [options.getTimeToNextUpdate] — Pass `true` to return `[formattedDate, timeToNextUpdate]` instead of just `formattedDate`.\r\n\t *\r\n\t * @return {string} The formatted relative date/time. If no eligible `step` is found, then an empty string is returned.\r\n\t */\r\n\tformat(input, style, options) {\r\n\t\tif (!options) {\r\n\t\t\tif (style && !isStyle(style)) {\r\n\t\t\t\toptions = style\r\n\t\t\t\tstyle = undefined\r\n\t\t\t} else {\r\n\t\t\t\toptions = {}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!style) {\r\n\t\t\tstyle = defaultStyle\r\n\t\t}\r\n\r\n\t\tif (typeof style === 'string') {\r\n\t\t\tstyle = getStyleByName(style)\r\n\t\t}\r\n\r\n\t\tconst timestamp = getTimestamp(input)\r\n\r\n\t\t// Get locale messages for this type of labels.\r\n\t\t// \"flavour\" is a legacy name for \"labels\".\r\n\t\tconst { labels, labelsType } = this.getLabels(style.flavour || style.labels)\r\n\r\n\t\tlet now\r\n\t\t// Can pass a custom `now`, e.g. for testing purposes.\r\n\t\t//\r\n\t\t// Legacy way was passing `now` in `style`.\r\n\t\t// That way is deprecated.\r\n\t\tif (style.now !== undefined) {\r\n\t\t\tnow = style.now\r\n\t\t}\r\n\t\t// The new way is passing `now` option to `.format()`.\r\n\t\tif (now === undefined && options.now !== undefined) {\r\n\t\t\tnow = options.now\r\n\t\t}\r\n\t\tif (now === undefined) {\r\n\t\t\tnow = Date.now()\r\n\t\t}\r\n\r\n\t\t// how much time has passed (in seconds)\r\n\t\tconst secondsPassed = (now - timestamp) / 1000 // in seconds\r\n\r\n\t\tconst future = options.future || secondsPassed < 0\r\n\r\n\t\tconst nowLabel = getNowLabel(\r\n\t\t\tlabels,\r\n\t\t\tgetLocaleData(this.locale).now,\r\n\t\t\tgetLocaleData(this.locale).long,\r\n\t\t\tfuture\r\n\t\t)\r\n\r\n\t\t// `custom` – A function of `{ elapsed, time, date, now, locale }`.\r\n\t\t//\r\n\t\t// Looks like `custom` function is deprecated and will be removed\r\n\t\t// in the next major version.\r\n\t\t//\r\n\t\t// If this function returns a value, then the `.format()` call will return that value.\r\n\t\t// Otherwise the relative date/time is formatted as usual.\r\n\t\t// This feature is currently not used anywhere and is here\r\n\t\t// just for providing the ultimate customization point\r\n\t\t// in case anyone would ever need that. Prefer using\r\n\t\t// `steps[step].format(value, locale)` instead.\r\n\t\t//\r\n\t\tif (style.custom) {\r\n\t\t\tconst custom = style.custom({\r\n\t\t\t\tnow,\r\n\t\t\t\tdate: new Date(timestamp),\r\n\t\t\t\ttime: timestamp,\r\n\t\t\t\telapsed: secondsPassed,\r\n\t\t\t\tlocale: this.locale\r\n\t\t\t})\r\n\t\t\tif (custom !== undefined) {\r\n\t\t\t\t// Won't return `timeToNextUpdate` here\r\n\t\t\t\t// because `custom()` seems deprecated.\r\n\t\t\t\treturn custom\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Get the list of available time interval units.\r\n\t\tconst units = getTimeIntervalMeasurementUnits(\r\n\t\t\t// Controlling `style.steps` through `style.units` seems to be deprecated:\r\n\t\t\t// create a new custom `style` instead.\r\n\t\t\tstyle.units,\r\n\t\t\tlabels,\r\n\t\t\tnowLabel\r\n\t\t)\r\n\r\n\t\t// // If no available time unit is suitable, just output an empty string.\r\n\t\t// if (units.length === 0) {\r\n\t\t// \tconsole.error(`None of the \"${units.join(', ')}\" time units have been found in \"${labelsType}\" labels for \"${this.locale}\" locale.`)\r\n\t\t// \treturn ''\r\n\t\t// }\r\n\r\n\t\tconst round = options.round || style.round\r\n\r\n\t\t// Choose the appropriate time measurement unit\r\n\t\t// and get the corresponding rounded time amount.\r\n\t\tconst [prevStep, step, nextStep] = getStep(\r\n\t\t\t// \"gradation\" is a legacy name for \"steps\".\r\n\t\t\t// For historical reasons, \"approximate\" steps are used by default.\r\n\t\t\t// In the next major version, there'll be no default for `steps`.\r\n\t\t\tstyle.gradation || style.steps || defaultStyle.steps,\r\n\t\t\tsecondsPassed,\r\n\t\t\t{ now, units, round, future, getNextStep: true }\r\n\t\t)\r\n\r\n\t\tconst formattedDate = this.formatDateForStep(timestamp, step, secondsPassed, {\r\n\t\t\tlabels,\r\n\t\t\tlabelsType,\r\n\t\t\tnowLabel,\r\n\t\t\tnow,\r\n\t\t\tfuture,\r\n\t\t\tround\r\n\t\t}) || ''\r\n\r\n\t\tif (options.getTimeToNextUpdate) {\r\n\t\t\tconst timeToNextUpdate = getTimeToNextUpdate(timestamp, step, {\r\n\t\t\t\tnextStep,\r\n\t\t\t\tprevStep,\r\n\t\t\t\tnow,\r\n\t\t\t\tfuture,\r\n\t\t\t\tround\r\n\t\t\t})\r\n\t\t\treturn [formattedDate, timeToNextUpdate]\r\n\t\t}\r\n\r\n\t\treturn formattedDate\r\n\t}\r\n\r\n\tformatDateForStep(timestamp, step, secondsPassed, {\r\n\t\tlabels,\r\n\t\tlabelsType,\r\n\t\tnowLabel,\r\n\t\tnow,\r\n\t\tfuture,\r\n\t\tround\r\n\t}) {\r\n\t\t// If no step matches, then output an empty string.\r\n\t\tif (!step) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (step.format) {\r\n\t\t\treturn step.format(timestamp, this.locale, {\r\n\t\t\t\tformatAs: (unit, value) => {\r\n\t\t\t\t\t// Mimicks `Intl.RelativeTimeFormat.format()`.\r\n\t\t\t\t\treturn this.formatValue(value, unit, {\r\n\t\t\t\t\t\tlabels,\r\n\t\t\t\t\t\tfuture\r\n\t\t\t\t\t})\r\n\t\t\t\t},\r\n\t\t\t\tnow,\r\n\t\t\t\tfuture\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\t// \"unit\" is now called \"formatAs\".\r\n\t\tconst unit = step.unit || step.formatAs\r\n\r\n\t\tif (!unit) {\r\n\t\t\tthrow new Error(`[javascript-time-ago] Each step must define either \\`formatAs\\` or \\`format()\\`. Step: ${JSON.stringify(step)}`)\r\n\t\t}\r\n\r\n\t\t// `Intl.RelativeTimeFormat` doesn't operate in \"now\" units.\r\n\t\t// Therefore, threat \"now\" as a special case.\r\n\t\tif (unit === 'now') {\r\n\t\t\treturn nowLabel\r\n\t\t}\r\n\r\n\t\t// Amount in units.\r\n\t\tlet amount = Math.abs(secondsPassed) / getStepDenominator(step)\r\n\r\n\t\t// Apply granularity to the time amount\r\n\t\t// (and fallback to the previous step\r\n\t\t//  if the first level of granularity\r\n\t\t//  isn't met by this amount)\r\n\t\t//\r\n\t\t// `granularity` — (advanced) Time interval value \"granularity\".\r\n\t\t// For example, it could be set to `5` for minutes to allow only 5-minute increments\r\n\t\t// when formatting time intervals: `0 minutes`, `5 minutes`, `10 minutes`, etc.\r\n\t\t// Perhaps this feature will be removed because there seem to be no use cases\r\n\t\t// of it in the real world.\r\n\t\t//\r\n\t\tif (step.granularity) {\r\n\t\t\t// Recalculate the amount of seconds passed based on granularity\r\n\t\t\tamount = getRoundFunction(round)(amount / step.granularity) * step.granularity\r\n\t\t}\r\n\r\n\t\tlet valueForFormatting = -1 * Math.sign(secondsPassed) * getRoundFunction(round)(amount)\r\n\r\n\t\t// By default, this library formats a `0` in \"past\" mode,\r\n\t\t// unless `future: true` option is passed.\r\n\t\t// This is different to `relative-time-format`'s behavior\r\n\t\t// which formats a `0` in \"future\" mode by default, unless it's a `-0`.\r\n\t\t// So, convert `0` to `-0` if `future: true` option wasn't passed.\r\n\t\t// `=== 0` matches both `0` and `-0`.\r\n\t\tif (valueForFormatting === 0) {\r\n\t\t\tif (future) {\r\n\t\t\t\tvalueForFormatting = 0\r\n\t\t\t} else {\r\n\t\t\t\tvalueForFormatting = -0\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tswitch (labelsType) {\r\n\t\t\tcase 'long':\r\n\t\t\tcase 'short':\r\n\t\t\tcase 'narrow':\r\n\t\t\t\t// Format the amount using `Intl.RelativeTimeFormat`.\r\n\t\t\t\treturn this.getFormatter(labelsType).format(valueForFormatting, unit)\r\n\t\t\tdefault:\r\n\t\t\t\t// Format the amount.\r\n\t\t\t\t// (mimicks `Intl.RelativeTimeFormat` behavior for other time label styles)\r\n\t\t\t\treturn this.formatValue(valueForFormatting, unit, {\r\n\t\t\t\t\tlabels,\r\n\t\t\t\t\tfuture\r\n\t\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Mimicks what `Intl.RelativeTimeFormat` does for additional locale styles.\r\n\t * @param  {number} value\r\n\t * @param  {string} unit\r\n\t * @param  {object} options.labels — Relative time labels.\r\n\t * @param  {boolean} [options.future] — Tells how to format value `0`: as \"future\" (`true`) or \"past\" (`false`). Is `false` by default, but should have been `true` actually.\r\n\t * @return {string}\r\n\t */\r\n\tformatValue(value, unit, { labels, future }) {\r\n\t\treturn this.getFormattingRule(labels, unit, value, { future })\r\n\t\t\t.replace('{0}', this.formatNumber(Math.abs(value)))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns formatting rule for `value` in `units` (either in past or in future).\r\n\t * @param {object} formattingRules — Relative time labels for different units.\r\n\t * @param {string} unit - Time interval measurement unit.\r\n\t * @param {number} value - Time interval value.\r\n\t * @param  {boolean} [options.future] — Tells how to format value `0`: as \"future\" (`true`) or \"past\" (`false`). Is `false` by default.\r\n\t * @return {string}\r\n\t * @example\r\n\t * // Returns \"{0} days ago\"\r\n\t * getFormattingRule(en.long, \"day\", -2, 'en')\r\n\t */\r\n\tgetFormattingRule(formattingRules, unit, value, { future }) {\r\n\t\t// Passing the language is required in order to\r\n\t\t// be able to correctly classify the `value` as a number.\r\n\t\tconst locale = this.locale\r\n\t\tformattingRules = formattingRules[unit]\r\n\t\t// Check for a special \"compacted\" rules case:\r\n\t\t// if formatting rules are the same for \"past\" and \"future\",\r\n\t\t// and also for all possible `value`s, then those rules are\r\n\t\t// stored as a single string.\r\n\t\tif (typeof formattingRules === 'string') {\r\n\t\t\treturn formattingRules\r\n\t\t}\r\n\t\t// Choose either \"past\" or \"future\" based on time `value` sign.\r\n\t\t// If \"past\" is same as \"future\" then they're stored as \"other\".\r\n\t\t// If there's only \"other\" then it's being collapsed.\r\n\t\tconst pastOrFuture = value === 0 ? (future ? 'future' : 'past') : (value < 0 ? 'past' : 'future')\r\n\t\tconst quantifierRules = formattingRules[pastOrFuture] || formattingRules\r\n\t\t// Bundle size optimization technique.\r\n\t\tif (typeof quantifierRules === 'string') {\r\n\t\t\treturn quantifierRules\r\n\t\t}\r\n\t\t// Quantify `value`.\r\n\t\tconst quantifier = this.getPluralRules().select(Math.abs(value))\r\n\t\t// \"other\" rule is supposed to always be present.\r\n\t\t// If only \"other\" rule is present then \"rules\" is not an object and is a string.\r\n\t\treturn quantifierRules[quantifier] || quantifierRules.other\r\n\t}\r\n\r\n\t/**\r\n\t * Formats a number into a string.\r\n\t * Uses `Intl.NumberFormat` when available.\r\n\t * @param  {number} number\r\n\t * @return {string}\r\n\t */\r\n\tformatNumber(number) {\r\n\t\treturn this.numberFormat ? this.numberFormat.format(number) : String(number)\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an `Intl.RelativeTimeFormat` for a given `labelsType`.\r\n\t * @param {string} labelsType\r\n\t * @return {object} `Intl.RelativeTimeFormat` instance\r\n\t */\r\n\tgetFormatter(labelsType) {\r\n\t\t// `Intl.RelativeTimeFormat` instance creation is (hypothetically) assumed\r\n\t\t// a lengthy operation so the instances are cached and reused.\r\n\t\treturn this.relativeTimeFormatCache.get(this.locale, labelsType) ||\r\n\t\t\tthis.relativeTimeFormatCache.put(this.locale, labelsType, new this.IntlRelativeTimeFormat(this.locale, { style: labelsType }))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an `Intl.PluralRules` instance.\r\n\t * @return {object} `Intl.PluralRules` instance\r\n\t */\r\n\tgetPluralRules() {\r\n\t\t// `Intl.PluralRules` instance creation is (hypothetically) assumed\r\n\t\t// a lengthy operation so the instances are cached and reused.\r\n\t\treturn this.pluralRulesCache.get(this.locale) ||\r\n\t\t\tthis.pluralRulesCache.put(this.locale, new this.IntlPluralRules(this.locale))\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Gets localized labels for this type of labels.\r\n\t *\r\n\t * @param {(string|string[])} labelsType - Relative date/time labels type.\r\n\t *                                     If it's an array then all label types are tried\r\n\t *                                     until a suitable one is found.\r\n\t *\r\n\t * @returns {Object} Returns an object of shape { labelsType, labels }\r\n\t */\r\n\tgetLabels(labelsType = []) {\r\n\t\t// Convert `labels` to an array.\r\n\t\tif (typeof labelsType === 'string') {\r\n\t\t\tlabelsType = [labelsType]\r\n\t\t}\r\n\r\n\t\t// Supports legacy \"tiny\" and \"mini-time\" label styles.\r\n\t\tlabelsType = labelsType.map((labelsType) => {\r\n\t\t\tswitch (labelsType) {\r\n\t\t\t\tcase 'tiny':\r\n\t\t\t\tcase 'mini-time':\r\n\t\t\t\t\treturn 'mini'\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn labelsType\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\t// \"long\" labels type is the default one.\r\n\t\t// (it's always present for all languages)\r\n\t\tlabelsType = labelsType.concat('long')\r\n\r\n\t\t// Find a suitable labels type.\r\n\t\tconst localeData = getLocaleData(this.locale)\r\n\t\tfor (const _labelsType of labelsType) {\r\n\t\t\tif (localeData[_labelsType]) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tlabelsType: _labelsType,\r\n\t\t\t\t\tlabels: localeData[_labelsType]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Default locale global variable.\r\n */\r\nlet defaultLocale = 'en'\r\n\r\n/**\r\n * Gets default locale.\r\n * @return  {string} locale\r\n */\r\nTimeAgo.getDefaultLocale = () => defaultLocale\r\n\r\n/**\r\n * Sets default locale.\r\n * @param  {string} locale\r\n */\r\nTimeAgo.setDefaultLocale = (locale) => defaultLocale = locale\r\n\r\n/**\r\n * Adds locale data for a specific locale and marks the locale as default.\r\n * @param {Object} localeData\r\n */\r\nTimeAgo.addDefaultLocale = function(localeData) {\r\n\tif (defaultLocaleHasBeenSpecified) {\r\n\t\treturn console.error('[javascript-time-ago] `TimeAgo.addDefaultLocale()` can only be called once. To add other locales, use `TimeAgo.addLocale()`.')\r\n\t}\r\n\tdefaultLocaleHasBeenSpecified = true\r\n\tTimeAgo.setDefaultLocale(localeData.locale)\r\n\tTimeAgo.addLocale(localeData)\r\n}\r\n\r\nlet defaultLocaleHasBeenSpecified\r\n\r\n/**\r\n * Adds locale data for a specific locale.\r\n * @param {Object} localeData\r\n */\r\nTimeAgo.addLocale = function(localeData) {\r\n\taddLocaleData(localeData)\r\n\tRelativeTimeFormatPolyfill.addLocale(localeData)\r\n}\r\n\r\n/**\r\n * (legacy alias)\r\n * Adds locale data for a specific locale.\r\n * @param {Object} localeData\r\n * @deprecated\r\n */\r\nTimeAgo.locale = TimeAgo.addLocale\r\n\r\n/**\r\n * Adds custom labels to locale data.\r\n * @param {string} locale\r\n * @param {string} name\r\n * @param {object} labels\r\n */\r\nTimeAgo.addLabels = (locale, name, labels) => {\r\n\tlet localeData = getLocaleData(locale)\r\n\tif (!localeData) {\r\n\t\taddLocaleData({\r\n\t\t\tlocale\r\n\t\t})\r\n\t\tlocaleData = getLocaleData(locale)\r\n\t\t// throw new Error(`[javascript-time-ago] No data for locale \"${locale}\"`)\r\n\t}\r\n\tlocaleData[name] = labels\r\n}\r\n\r\n// Normalizes `.format()` `time` argument.\r\nfunction getTimestamp(input) {\r\n\tif (input.constructor === Date || isMockedDate(input)) {\r\n\t\treturn input.getTime()\r\n\t}\r\n\r\n\tif (typeof input === 'number') {\r\n\t\treturn input\r\n\t}\r\n\r\n\t// For some weird reason istanbul doesn't see this `throw` covered.\r\n\t/* istanbul ignore next */\r\n\tthrow new Error(`Unsupported relative time formatter input: ${typeof input}, ${input}`)\r\n}\r\n\r\n// During testing via some testing libraries `Date`s aren't actually `Date`s.\r\n// https://github.com/catamphetamine/javascript-time-ago/issues/22\r\nfunction isMockedDate(object) {\r\n\treturn typeof object === 'object' && typeof object.getTime === 'function'\r\n}\r\n\r\n// Get available time interval measurement units.\r\nfunction getTimeIntervalMeasurementUnits(allowedUnits, labels, nowLabel) {\r\n\t// Get all time interval measurement units that're available\r\n\t// in locale data for a given time labels style.\r\n\tlet units = Object.keys(labels)\r\n\r\n\t// `now` unit is handled separately and is shipped in its own `now.json` file.\r\n\t// `now.json` isn't present for all locales, so it could be substituted with\r\n\t// \".second.current\".\r\n\t// Add `now` unit if it's available in locale data.\r\n\tif (nowLabel) {\r\n\t\tunits.push('now')\r\n\t}\r\n\r\n\t// If only a specific set of available time measurement units can be used\r\n\t// then only those units are allowed (if they're present in locale data).\r\n\tif (allowedUnits) {\r\n\t\tunits = allowedUnits.filter(unit => unit === 'now' || units.indexOf(unit) >= 0)\r\n\t}\r\n\r\n\treturn units\r\n}\r\n\r\nfunction getNowLabel(labels, nowLabels, longLabels, future) {\r\n\tconst nowLabel = labels.now || (nowLabels && nowLabels.now)\r\n\t// Specific \"now\" message form extended locale data (if present).\r\n\tif (nowLabel) {\r\n\t\t// Bundle size optimization technique.\r\n\t\tif (typeof nowLabel === 'string') {\r\n\t\t\treturn nowLabel\r\n\t\t}\r\n\t\t// Not handling `value === 0` as `localeData.now.current` here\r\n\t\t// because it wouldn't make sense: \"now\" is a moment,\r\n\t\t// so one can't possibly differentiate between a\r\n\t\t// \"previous\" moment, a \"current\" moment and a \"next moment\".\r\n\t\t// It can only be differentiated between \"past\" and \"future\".\r\n\t\tif (future) {\r\n\t\t\treturn nowLabel.future\r\n\t\t} else {\r\n\t\t\treturn nowLabel.past\r\n\t\t}\r\n\t}\r\n\t// Use \".second.current\" as \"now\" message.\r\n\tif (longLabels && longLabels.second && longLabels.second.current) {\r\n\t\treturn longLabels.second.current\r\n\t}\r\n}\r\n\r\nfunction isStyle(variable) {\r\n\treturn typeof variable === 'string' || isStyleObject(variable)\r\n}", "export { default } from './modules/TimeAgo.js'\r\n\r\n// I guess these two are deprecated.\r\nexport {\r\n\tintlDateTimeFormatSupported as intlDateTimeFormatSupported,\r\n\tintlDateTimeFormatSupportedLocale as intlDateTimeFormatSupportedLocale\r\n} from './modules/locale.js'", "export default {\n\t\"locale\": \"en\",\n\t\"long\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"last year\",\n\t\t\t\"current\": \"this year\",\n\t\t\t\"next\": \"next year\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} year ago\",\n\t\t\t\t\"other\": \"{0} years ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} year\",\n\t\t\t\t\"other\": \"in {0} years\"\n\t\t\t}\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"last quarter\",\n\t\t\t\"current\": \"this quarter\",\n\t\t\t\"next\": \"next quarter\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} quarter ago\",\n\t\t\t\t\"other\": \"{0} quarters ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} quarter\",\n\t\t\t\t\"other\": \"in {0} quarters\"\n\t\t\t}\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"last month\",\n\t\t\t\"current\": \"this month\",\n\t\t\t\"next\": \"next month\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} month ago\",\n\t\t\t\t\"other\": \"{0} months ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} month\",\n\t\t\t\t\"other\": \"in {0} months\"\n\t\t\t}\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"last week\",\n\t\t\t\"current\": \"this week\",\n\t\t\t\"next\": \"next week\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} week ago\",\n\t\t\t\t\"other\": \"{0} weeks ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} week\",\n\t\t\t\t\"other\": \"in {0} weeks\"\n\t\t\t}\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"yesterday\",\n\t\t\t\"current\": \"today\",\n\t\t\t\"next\": \"tomorrow\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} day ago\",\n\t\t\t\t\"other\": \"{0} days ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} day\",\n\t\t\t\t\"other\": \"in {0} days\"\n\t\t\t}\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"this hour\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} hour ago\",\n\t\t\t\t\"other\": \"{0} hours ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} hour\",\n\t\t\t\t\"other\": \"in {0} hours\"\n\t\t\t}\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"this minute\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} minute ago\",\n\t\t\t\t\"other\": \"{0} minutes ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} minute\",\n\t\t\t\t\"other\": \"in {0} minutes\"\n\t\t\t}\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"now\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} second ago\",\n\t\t\t\t\"other\": \"{0} seconds ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} second\",\n\t\t\t\t\"other\": \"in {0} seconds\"\n\t\t\t}\n\t\t}\n\t},\n\t\"short\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"last yr.\",\n\t\t\t\"current\": \"this yr.\",\n\t\t\t\"next\": \"next yr.\",\n\t\t\t\"past\": \"{0} yr. ago\",\n\t\t\t\"future\": \"in {0} yr.\"\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"last qtr.\",\n\t\t\t\"current\": \"this qtr.\",\n\t\t\t\"next\": \"next qtr.\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} qtr. ago\",\n\t\t\t\t\"other\": \"{0} qtrs. ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} qtr.\",\n\t\t\t\t\"other\": \"in {0} qtrs.\"\n\t\t\t}\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"last mo.\",\n\t\t\t\"current\": \"this mo.\",\n\t\t\t\"next\": \"next mo.\",\n\t\t\t\"past\": \"{0} mo. ago\",\n\t\t\t\"future\": \"in {0} mo.\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"last wk.\",\n\t\t\t\"current\": \"this wk.\",\n\t\t\t\"next\": \"next wk.\",\n\t\t\t\"past\": \"{0} wk. ago\",\n\t\t\t\"future\": \"in {0} wk.\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"yesterday\",\n\t\t\t\"current\": \"today\",\n\t\t\t\"next\": \"tomorrow\",\n\t\t\t\"past\": {\n\t\t\t\t\"one\": \"{0} day ago\",\n\t\t\t\t\"other\": \"{0} days ago\"\n\t\t\t},\n\t\t\t\"future\": {\n\t\t\t\t\"one\": \"in {0} day\",\n\t\t\t\t\"other\": \"in {0} days\"\n\t\t\t}\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"this hour\",\n\t\t\t\"past\": \"{0} hr. ago\",\n\t\t\t\"future\": \"in {0} hr.\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"this minute\",\n\t\t\t\"past\": \"{0} min. ago\",\n\t\t\t\"future\": \"in {0} min.\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"now\",\n\t\t\t\"past\": \"{0} sec. ago\",\n\t\t\t\"future\": \"in {0} sec.\"\n\t\t}\n\t},\n\t\"narrow\": {\n\t\t\"year\": {\n\t\t\t\"previous\": \"last yr.\",\n\t\t\t\"current\": \"this yr.\",\n\t\t\t\"next\": \"next yr.\",\n\t\t\t\"past\": \"{0}y ago\",\n\t\t\t\"future\": \"in {0}y\"\n\t\t},\n\t\t\"quarter\": {\n\t\t\t\"previous\": \"last qtr.\",\n\t\t\t\"current\": \"this qtr.\",\n\t\t\t\"next\": \"next qtr.\",\n\t\t\t\"past\": \"{0}q ago\",\n\t\t\t\"future\": \"in {0}q\"\n\t\t},\n\t\t\"month\": {\n\t\t\t\"previous\": \"last mo.\",\n\t\t\t\"current\": \"this mo.\",\n\t\t\t\"next\": \"next mo.\",\n\t\t\t\"past\": \"{0}mo ago\",\n\t\t\t\"future\": \"in {0}mo\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"previous\": \"last wk.\",\n\t\t\t\"current\": \"this wk.\",\n\t\t\t\"next\": \"next wk.\",\n\t\t\t\"past\": \"{0}w ago\",\n\t\t\t\"future\": \"in {0}w\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"previous\": \"yesterday\",\n\t\t\t\"current\": \"today\",\n\t\t\t\"next\": \"tomorrow\",\n\t\t\t\"past\": \"{0}d ago\",\n\t\t\t\"future\": \"in {0}d\"\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"current\": \"this hour\",\n\t\t\t\"past\": \"{0}h ago\",\n\t\t\t\"future\": \"in {0}h\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"current\": \"this minute\",\n\t\t\t\"past\": \"{0}m ago\",\n\t\t\t\"future\": \"in {0}m\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"current\": \"now\",\n\t\t\t\"past\": \"{0}s ago\",\n\t\t\t\"future\": \"in {0}s\"\n\t\t}\n\t},\n\t\"now\": {\n\t\t\"now\": {\n\t\t\t\"current\": \"now\",\n\t\t\t\"future\": \"in a moment\",\n\t\t\t\"past\": \"just now\"\n\t\t}\n\t},\n\t\"mini\": {\n\t\t\"year\": \"{0}yr\",\n\t\t\"month\": \"{0}mo\",\n\t\t\"week\": \"{0}wk\",\n\t\t\"day\": \"{0}d\",\n\t\t\"hour\": \"{0}h\",\n\t\t\"minute\": \"{0}m\",\n\t\t\"second\": \"{0}s\",\n\t\t\"now\": \"now\"\n\t},\n\t\"short-time\": {\n\t\t\"year\": \"{0} yr.\",\n\t\t\"month\": \"{0} mo.\",\n\t\t\"week\": \"{0} wk.\",\n\t\t\"day\": {\n\t\t\t\"one\": \"{0} day\",\n\t\t\t\"other\": \"{0} days\"\n\t\t},\n\t\t\"hour\": \"{0} hr.\",\n\t\t\"minute\": \"{0} min.\",\n\t\t\"second\": \"{0} sec.\"\n\t},\n\t\"long-time\": {\n\t\t\"year\": {\n\t\t\t\"one\": \"{0} year\",\n\t\t\t\"other\": \"{0} years\"\n\t\t},\n\t\t\"month\": {\n\t\t\t\"one\": \"{0} month\",\n\t\t\t\"other\": \"{0} months\"\n\t\t},\n\t\t\"week\": {\n\t\t\t\"one\": \"{0} week\",\n\t\t\t\"other\": \"{0} weeks\"\n\t\t},\n\t\t\"day\": {\n\t\t\t\"one\": \"{0} day\",\n\t\t\t\"other\": \"{0} days\"\n\t\t},\n\t\t\"hour\": {\n\t\t\t\"one\": \"{0} hour\",\n\t\t\t\"other\": \"{0} hours\"\n\t\t},\n\t\t\"minute\": {\n\t\t\t\"one\": \"{0} minute\",\n\t\t\t\"other\": \"{0} minutes\"\n\t\t},\n\t\t\"second\": {\n\t\t\t\"one\": \"{0} second\",\n\t\t\t\"other\": \"{0} seconds\"\n\t\t}\n\t}\n}", "import consumer from '../channels/consumer'\nimport TimeAgo from 'javascript-time-ago'\nimport en from 'javascript-time-ago/locale/en'\n\n(function () {\n  const notificationsApp = function (subscriberIds, notifications, unreadCount) {\n    let subscriptions = {};\n\n    const audio = new Audio('/audios/notification_sound.mp3')\n\n    function subscribe(component) {\n      subscriberIds.forEach((subscriberId) => {\n        subscriptions[subscriberId] = subscribeToChannel(component, subscriberId)\n      })\n    }\n\n    function subscribeToChannel(component, subscriberId) {\n      const subscription =\n        consumer\n          .subscriptions\n          .create({ channel: \"Notifications::NotificationsChannel\", subscriber_id: subscriberId }, {\n            received(data) {\n              component.notifications.unshift(data.message)\n              component.unreadCount = data.unread_count\n              audio.play()\n            }\n          })\n\n      return subscription\n    }\n\n    TimeAgo.addLocale(en)\n    const timeAgo = new TimeAgo('en-US')\n\n    return {\n      init: function($refs) {\n        if ($refs) { $refs.notificationsContainer.style.height = `${window.innerHeight - 200}px` }\n        subscribe(this)\n      },\n      open: false,\n      tab: 'viewAll',\n      notifications,\n      unreadCount,\n      notificationClicked: function (notification) {\n        const subscription = subscriptions[notification.subscriber.id]\n        subscription.perform('mark_as_read', { message_id: notification.id })\n        notification.read_at = new Date()\n        this.unreadCount -= 1\n\n        if (!notification.compiled_message?.link) return\n\n        setTimeout(() => {\n          Turbo.visit(notification.compiled_message?.link)\n        }, 100)\n      },\n      markAllAsRead: function () {\n        Object.values(subscriptions).forEach((subscription) => {\n          subscription.perform('mark_all_as_read')\n        })\n\n        this.notifications.forEach((notification) => {\n          notification.read_at = new Date()\n        })\n\n        this.unreadCount = 0\n      },\n      timeAgo: function (time) {\n        return timeAgo.format(new Date(time))\n      }\n    }\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.notificationsApp = notificationsApp;\n  }\n\n  return notificationsApp;\n})();\n", "(function () {\n  const SEARCH_DEBOUNCE_MS = 400;\n  const GRID_READY_ATTEMPTS = 40;\n  const GRID_READY_DELAY_MS = 50;\n  const OVERLOADED_ONGOING_ORDERS = 10;\n  const LATE_ORDERS_WARNING = 4;\n  const QA_REVISION_RATE_WARNING = 20;\n  const DEFAULT_MARGIN_THRESHOLD = 140;\n\n  const escapeHtml = (value) =>\n    String(value ?? '')\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#39;');\n\n  const badge = (label, classes) =>\n    `<span class=\"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-medium ${classes}\">${escapeHtml(label)}</span>`;\n\n  const safeColorClass = (color) => String(color ?? '').replace(/[^a-zA-Z0-9_\\-\\s]/g, '');\n\n  const vendorTagBadge = (tag) => {\n    const name = escapeHtml(tag?.name);\n    const color = safeColorClass(tag?.color);\n\n    if (!name) return '';\n\n    return `<span class=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${color}\">${name}</span>`;\n  };\n\n  // level is one of: ok, mid, risk\n  const pill = (level, label) =>\n    `<span class=\"order-assignment-pill order-assignment-pill--${level}\">${escapeHtml(label)}</span>`;\n\n  const dnuNamesBadge = (label, names) => {\n    if (!Array.isArray(names) || !names.length) return '';\n\n    return `<div class=\"px-2.5 py-0.5 rounded-md text-xs bg-red-200 text-black whitespace-normal leading-snug\">\n              <div class=\"font-semibold\">${escapeHtml(label)}:</div>\n              <div>${escapeHtml(names.join(', '))}</div>\n            </div>`;\n  };\n\n  const riskIconSvg = (tone, title) => {\n    const colorClass = tone === 'red' ? 'text-red-500' : 'text-amber-500';\n\n    return `<span class=\"inline-flex shrink-0 ${colorClass}\" title=\"${escapeHtml(title)}\">\n              <svg class=\"h-4 w-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n                <path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\" />\n              </svg>\n            </span>`;\n  };\n\n  const formatMoney = (value) => {\n    if (value == null || Number.isNaN(Number(value))) return null;\n\n    return `$${Number(value).toLocaleString('en-US', { maximumFractionDigits: 0 })}`;\n  };\n\n  const formatPercent = (value) => {\n    if (value == null || Number.isNaN(Number(value))) return null;\n\n    return `${Number(value).toLocaleString('en-US', { maximumFractionDigits: 1 })}%`;\n  };\n\n  const formatDays = (value) => {\n    if (value == null || Number.isNaN(Number(value))) return null;\n\n    return `${Number(value).toLocaleString('en-US', {\n      minimumFractionDigits: 1,\n      maximumFractionDigits: 1,\n    })} d`;\n  };\n\n  // Blank values sort last in both directions (ag-grid flips the result on desc).\n  const nullsLastComparator = (valueA, valueB, _nodeA, _nodeB, isDescending) => {\n    if (valueA == null && valueB == null) return 0;\n    if (valueA == null) return isDescending ? -1 : 1;\n    if (valueB == null) return isDescending ? 1 : -1;\n\n    return valueA - valueB;\n  };\n\n  const AVG_TURN_COLUMN = {\n    valueFormatter: (params) => formatDays(params.value) || '\u2014',\n    comparator: nullsLastComparator,\n  };\n\n  const SCORE_COLUMN = {\n    sort: 'desc',\n    comparator: nullsLastComparator,\n    cellRenderer: (params) => {\n      const div = document.createElement('div');\n\n      div.innerHTML = params.data ? scoreCellHtml(params.data) : '\u2014';\n      return div;\n    },\n  };\n\n  const scoreCellHtml = (row) => {\n    const score = Number(row.score);\n\n    if (!Number.isFinite(score)) return '\u2014';\n\n    const level = score >= 85 ? 'high' : score >= 68 ? 'mid' : 'low';\n    const width = Math.max(0, Math.min(score, 100));\n    const quality = row.quality_score ?? '\u2014';\n    const dueDate = row.due_date_score ?? '\u2014';\n    const timeliness = row.timeliness_score ?? '\u2014';\n    const completed = row.score_completed_orders ?? '\u2014';\n    const title = `Quality ${quality} \u00B7 Due-date ${dueDate} \u00B7 Timeliness ${timeliness} \u00B7 ${completed} orders`;\n\n    return `<div class=\"order-assignment-score order-assignment-score--${level}\" title=\"${escapeHtml(title)}\">\n              <span class=\"order-assignment-score__num\">${Number(score).toFixed(1)}</span>\n              <span class=\"order-assignment-score__track\" aria-hidden=\"true\">\n                <span class=\"order-assignment-score__bar\" style=\"width: ${width}%\"></span>\n              </span>\n            </div>`;\n  };\n\n  const orderAssignmentConsoleApp = (orderId, clientFee = null, options = {}) => ({\n    orderId: String(orderId),\n    gridId: `order-assignment-vendors-${orderId}`,\n    clientFee: clientFee == null ? null : Number(clientFee),\n    productNames: options.productNames || '\u2014',\n    clientFeeLabel: options.clientFeeLabel || '\u2014',\n    autoRejectHours: Number(options.autoRejectHours) || 24,\n    marginThreshold: Number(options.marginThreshold) || DEFAULT_MARGIN_THRESHOLD,\n    assignUrl: options.assignUrl || '',\n    currentView: 'select',\n    assignmentMode: 'round-robin',\n    products: Array.isArray(options.products)\n      ? options.products.map((product) => ({ ...product, fee: Number(product.fee) || 0 }))\n      : [],\n    biddingEndDate: '',\n    customMessage: '',\n    submitting: false,\n    vendorScope: 'your_panel',\n    quickView: 'all',\n    search: '',\n    coveringArea: true,\n    appraisalType: true,\n    listFilters: [],\n    eoFilter: '',\n    certificationFilters: [],\n    maxDistance: '',\n    commercialFilter: '',\n    vendors: [],\n    selectedVendors: [],\n    selectionInsightPills: [],\n    riskWarnings: [],\n    yourPanelCount: 0,\n    allVendorsCount: 0,\n    pagination: { total: 0, current_page: 1, next_page: null, prev_page: null, per_page: 15 },\n    searchTimer: null,\n\n    init() {\n      this.waitForGridApi().then(() => {\n        this.showLoadingOverlay();\n        this.fetchVendors();\n      });\n    },\n\n    selectedCount() {\n      return this.selectedVendors.length;\n    },\n\n    selectedVendorIds() {\n      return this.selectedVendors.map((vendor) => String(vendor.id));\n    },\n\n    findSelected(vendorId) {\n      return this.selectedVendors.find((vendor) => String(vendor.id) === String(vendorId));\n    },\n\n    findVendor(vendorId) {\n      return (\n        this.vendors.find((vendor) => String(vendor.id) === String(vendorId)) ||\n        this.findSelected(vendorId)\n      );\n    },\n\n    vendorFeeTotal(vendor) {\n      const table = vendor?.product_fee_table;\n\n      if (!Array.isArray(table) || !table.length) return null;\n\n      const total = table.reduce((sum, row) => sum + (Number(row.fee) || 0), 0);\n\n      return Number.isFinite(total) ? total : null;\n    },\n\n    vendorFeeLabel(vendor) {\n      return formatMoney(this.vendorFeeTotal(vendor));\n    },\n\n    vendorMargin(vendor) {\n      const fee = this.vendorFeeTotal(vendor);\n\n      if (fee == null || this.clientFee == null || Number.isNaN(this.clientFee)) return null;\n\n      return this.clientFee - fee;\n    },\n\n    vendorMarginLabel(vendor) {\n      return formatMoney(this.vendorMargin(vendor)) || '\u2014';\n    },\n\n    grossMarginCellHtml(margin) {\n      if (margin == null) return '\u2014';\n\n      let level = 'risk';\n      if (margin >= this.marginThreshold) level = 'ok';\n      else if (margin >= this.marginThreshold / 2) level = 'mid';\n\n      return pill(level, formatMoney(margin));\n    },\n\n    rebuildSelectionMeta() {\n      const pills = [];\n      const preferred = this.selectedVendors.filter(\n        (vendor) => vendor.client_preferred || vendor.company_preferred\n      ).length;\n      const vacationCount = this.selectedVendors.filter((vendor) => vendor.vacationing).length;\n      const dnuCount = this.selectedVendors.filter((vendor) => vendor.ineligible).length;\n      const overloaded = this.selectedVendors.filter(\n        (vendor) => Number(vendor.ongoing_orders) >= OVERLOADED_ONGOING_ORDERS\n      ).length;\n      const firms = this.selectedVendors.map((vendor) => vendor.appraisal_firm).filter(Boolean);\n      const duplicateFirms = [...new Set(firms.filter((firm, index) => firms.indexOf(firm) !== index))];\n      const margins = this.selectedVendors\n        .map((vendor) => this.vendorMargin(vendor))\n        .filter((margin) => margin != null);\n\n      if (margins.length) {\n        const min = Math.min(...margins);\n        const max = Math.max(...margins);\n        const label =\n          min === max\n            ? `Margin ${formatMoney(min)}`\n            : `Margin ${formatMoney(min)}\u2013${formatMoney(max)}`;\n\n        pills.push({ label, tone: 'neutral' });\n      }\n\n      if (preferred > 0) pills.push({ label: `${preferred} preferred`, tone: 'neutral' });\n      if (overloaded > 0) pills.push({ label: `${overloaded} overloaded`, tone: 'warn' });\n      if (vacationCount > 0) pills.push({ label: `${vacationCount} on vacation`, tone: 'warn' });\n      if (dnuCount > 0) pills.push({ label: `${dnuCount} DNU`, tone: 'warn' });\n\n      duplicateFirms.forEach((firm) => {\n        const firmCount = firms.filter((item) => item === firm).length;\n        pills.push({ label: `${firmCount} from ${firm}`, tone: 'warn' });\n      });\n\n      this.selectionInsightPills = pills;\n      this.rebuildRiskWarnings();\n    },\n\n    rebuildRiskWarnings() {\n      const warnings = [];\n      const firms = {};\n\n      this.selectedVendors.forEach((vendor) => {\n        if (vendor.ineligible) warnings.push(`${vendor.name}: On the DNU (Do-Not-Use) list`);\n        if (vendor.vacationing) warnings.push(`${vendor.name}: Currently on vacation`);\n\n        const active = Number(vendor.ongoing_orders);\n        if (Number.isFinite(active) && active >= OVERLOADED_ONGOING_ORDERS) {\n          warnings.push(`${vendor.name}: Heavy active pipeline (${active} active)`);\n        }\n\n        const late = Number(vendor.late ?? vendor.late_orders);\n        if (Number.isFinite(late) && late >= LATE_ORDERS_WARNING) {\n          warnings.push(`${vendor.name}: Multiple late jobs (${late})`);\n        }\n\n        const qaRate = Number(vendor.qa_revision_rate);\n        if (Number.isFinite(qaRate) && qaRate >= QA_REVISION_RATE_WARNING) {\n          warnings.push(`${vendor.name}: High QA revision rate (${formatPercent(qaRate)})`);\n        }\n\n        const firm = vendor.appraisal_firm;\n        if (firm) firms[firm] = (firms[firm] || 0) + 1;\n      });\n\n      Object.entries(firms)\n        .filter(([, count]) => count > 1)\n        .forEach(([firm, count]) => {\n          warnings.push(\n            `${count} vendors from ${firm} \u2014 if the company declines you lose ${count} positions`\n          );\n        });\n\n      this.riskWarnings = warnings;\n    },\n\n    hasClientIneligible(vendor) {\n      return Array.isArray(vendor.client_ineligible_names) && vendor.client_ineligible_names.length > 0;\n    },\n\n    hasCompanyIneligible(vendor) {\n      return Array.isArray(vendor.company_ineligible_names) && vendor.company_ineligible_names.length > 0;\n    },\n\n    insuranceCoverageLow(vendor) {\n      const coverage = Number.parseFloat(vendor.insurance_coverage);\n      const minimal = Number.parseFloat(vendor.minimal_insurance_coverage);\n\n      return Number.isFinite(coverage) && Number.isFinite(minimal) && coverage < minimal;\n    },\n\n    vendorIsDanger(vendor) {\n      return Boolean(\n        vendor.ineligible ||\n          this.hasClientIneligible(vendor) ||\n          this.hasCompanyIneligible(vendor) ||\n          vendor.valid_asc_license === false\n      );\n    },\n\n    vendorIsWarning(vendor) {\n      return this.insuranceCoverageLow(vendor);\n    },\n\n    vendorRiskReasons(vendor) {\n      const reasons = [];\n\n      if (vendor.ineligible) reasons.push('On the DNU (Do-Not-Use) list');\n      if (this.hasClientIneligible(vendor)) {\n        reasons.push(`DNU Client: ${vendor.client_ineligible_names.join(', ')}`);\n      }\n      if (this.hasCompanyIneligible(vendor)) {\n        reasons.push(`DNU Company: ${vendor.company_ineligible_names.join(', ')}`);\n      }\n      if (vendor.vacationing) reasons.push('Currently on vacation');\n      if (vendor.valid_asc_license === false) {\n        reasons.push('Vendor with discipline action for this state');\n      }\n      if (this.insuranceCoverageLow(vendor)) {\n        reasons.push('Vendor E&O coverage below requirements');\n      }\n\n      const active = Number(vendor.ongoing_orders);\n      if (Number.isFinite(active) && active >= OVERLOADED_ONGOING_ORDERS) {\n        reasons.push(`Heavy active pipeline (${active} active)`);\n      }\n\n      const late = Number(vendor.late ?? vendor.late_orders);\n      if (Number.isFinite(late) && late >= LATE_ORDERS_WARNING) {\n        reasons.push(`Multiple late jobs (${late})`);\n      }\n\n      const qaRate = Number(vendor.qa_revision_rate);\n      if (Number.isFinite(qaRate) && qaRate >= QA_REVISION_RATE_WARNING) {\n        reasons.push(`High QA revision rate (${formatPercent(qaRate)})`);\n      }\n\n      return reasons;\n    },\n\n    vendorHasRisk(vendor) {\n      return this.vendorRiskReasons(vendor).length > 0;\n    },\n\n    vendorRiskTitle(vendor) {\n      return this.vendorRiskReasons(vendor).join(' \u2022 ');\n    },\n\n    vendorRiskTone(vendor) {\n      if (this.vendorIsDanger(vendor)) return 'red';\n\n      return 'amber';\n    },\n\n    suggestionFeeFor(productId) {\n      const fees = this.selectedVendors.flatMap((vendor) => vendor.product_fee_table || []).filter(Boolean);\n\n      return Number(fees.find((row) => String(row.product_id) === String(productId))?.fee) || 0;\n    },\n\n    assignSuggestionFees() {\n      this.products = this.products.map((product) => ({\n        ...product,\n        fee: this.suggestionFeeFor(product.id),\n      }));\n    },\n\n    stepTwoBlocked() {\n      if (this.assignmentMode === 'round-robin') {\n        return this.products.some((product) => !Number(product.fee));\n      }\n\n      if (this.assignmentMode === 'bidding') {\n        if (!this.biddingEndDate) return true;\n\n        const parsed = new Date(String(this.biddingEndDate).replace(' ', 'T'));\n\n        return Number.isNaN(parsed.getTime()) || parsed < new Date();\n      }\n\n      return true;\n    },\n\n    assignmentModeLabel() {\n      if (this.selectedCount() <= 1) return 'Direct assignment';\n\n      return this.assignmentMode === 'bidding' ? 'Bidding' : 'Round-robin';\n    },\n\n    vendorContactLine(vendor) {\n      const parts = [];\n\n      if (vendor?.email) parts.push(vendor.email);\n      if (vendor?.phone) parts.push(vendor.phone);\n      if (vendor?.miles != null) parts.push(`${vendor.miles} mi`);\n\n      return parts.join(' \u00B7 ') || '\u2014';\n    },\n\n    summaryVendorFeeLabel(vendor) {\n      return this.vendorFeeLabel(vendor);\n    },\n\n    summaryVendorMarginLabel(vendor) {\n      return this.vendorMargin(vendor) != null ? this.vendorMarginLabel(vendor) : null;\n    },\n\n    appendHiddenInput(form, name, value) {\n      const input = document.createElement('input');\n\n      input.type = 'hidden';\n      input.name = name;\n      input.value = value == null ? '' : String(value);\n      form.appendChild(input);\n    },\n\n    submitAssignment() {\n      if (this.submitting || this.stepTwoBlocked() || !this.assignUrl) return;\n\n      this.submitting = true;\n\n      const form = document.createElement('form');\n      const csrfToken = document.querySelector('meta[name=\"csrf-token\"]')?.content;\n\n      form.method = 'POST';\n      form.action = this.assignUrl;\n      form.style.display = 'none';\n\n      this.appendHiddenInput(form, '_method', 'put');\n      if (csrfToken) this.appendHiddenInput(form, 'authenticity_token', csrfToken);\n      this.appendHiddenInput(form, 'assignment_mode', this.assignmentMode);\n\n      this.selectedVendors.forEach((vendor) => {\n        this.appendHiddenInput(form, 'order[vendor_ids][]', vendor.id);\n      });\n\n      if (this.assignmentMode === 'bidding') {\n        this.appendHiddenInput(form, 'order[end_date]', this.biddingEndDate);\n        this.appendHiddenInput(form, 'order[custom_message]', this.customMessage || '');\n      } else {\n        this.appendHiddenInput(form, 'order[auto_reject_hours]', this.autoRejectHours || 0);\n        this.products.forEach((product) => {\n          this.appendHiddenInput(form, 'order[fees][][product_id]', product.id);\n          this.appendHiddenInput(form, 'order[fees][][fee]', product.fee);\n        });\n      }\n\n      document.body.appendChild(form);\n      form.submit();\n    },\n\n    maxTimeToFillLabel() {\n      const count = this.selectedCount();\n      const hours = Number(this.autoRejectHours) || 0;\n\n      if (!count) return '\u2014';\n\n      return `~${count * hours}h`;\n    },\n\n    formatProductFee(fee) {\n      const value = Number(fee);\n\n      if (!Number.isFinite(value)) return '$0.00';\n\n      return `$${value.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;\n    },\n\n    productsFeeTotalLabel() {\n      const total = this.products.reduce((sum, product) => sum + (Number(product.fee) || 0), 0);\n\n      return this.formatProductFee(total);\n    },\n\n    initBiddingPicker() {\n      window.setTimeout(() => {\n        const input = this.$el && this.$el.querySelector('[data-order-assignment-bidding-end]');\n\n        if (!input || typeof window.flatpickr !== 'function') return;\n        if (input._flatpickr) return;\n\n        window.flatpickr(input, {\n          enableTime: true,\n          dateFormat: 'Y-m-d H:i',\n          altFormat: 'm/d/Y G:i K',\n          altInput: true,\n          altInputClass: 'form-input date-picker',\n          defaultDate: this.biddingEndDate || null,\n          appendTo: document.body,\n          onChange: (_dates, dateStr) => {\n            this.biddingEndDate = dateStr;\n          },\n        });\n      }, 50);\n    },\n\n    goToConfigure() {\n      if (!this.selectedCount()) return;\n\n      if (this.selectedCount() === 1) this.assignmentMode = 'round-robin';\n\n      this.assignSuggestionFees();\n      this.currentView = 'configure';\n\n      if (this.assignmentMode === 'bidding') this.initBiddingPicker();\n    },\n\n    goToSelect() {\n      this.currentView = 'select';\n    },\n\n    goToSummary() {\n      if (this.stepTwoBlocked()) return;\n\n      this.currentView = 'summary';\n    },\n\n    moveVendor(index, direction) {\n      const nextIndex = index + direction;\n\n      if (nextIndex < 0 || nextIndex >= this.selectedVendors.length) return;\n\n      const next = [...this.selectedVendors];\n      const [vendor] = next.splice(index, 1);\n\n      next.splice(nextIndex, 0, vendor);\n      this.selectedVendors = next;\n      this.rebuildSelectionMeta();\n    },\n\n    openRiskConfirm(vendor) {\n      window.dispatchEvent(new CustomEvent('order-assignment-risk-confirm', {\n        detail: {\n          message: this.riskConfirmMessage(vendor),\n          onConfirm: () => this.addSelected(vendor),\n        },\n      }));\n    },\n\n    riskConfirmMessage(vendor) {\n      const flags = [];\n\n      if (this.hasCompanyIneligible(vendor)) {\n        flags.push(`on DNU Company list (${vendor.company_ineligible_names.join(', ')})`);\n      }\n      if (this.hasClientIneligible(vendor)) {\n        flags.push(`on DNU Client list (${vendor.client_ineligible_names.join(', ')})`);\n      }\n      if (!flags.length && vendor.ineligible) {\n        flags.push('on the DNU list');\n      }\n\n      if (vendor.vacationing) flags.push('on vacation');\n\n      return `${vendor.name} is ${flags.join(' and ')}.`;\n    },\n\n    resultCountLabel() {\n      const total = this.pagination.total;\n\n      return `${total} appraiser${total === 1 ? '' : 's'}`;\n    },\n\n    pageEntriesInfo() {\n      const { total, per_page: perPage, current_page: currentPage } = this.pagination;\n\n      if (total === 0) return 'No vendors found';\n\n      const from = (currentPage - 1) * perPage + 1;\n      const to = Math.min(currentPage * perPage, total);\n\n      return `Showing <b>${from}</b> to <b>${to}</b> of <b>${total}</b>`;\n    },\n\n    filtersActive() {\n      return Boolean(\n        this.search ||\n          this.coveringArea ||\n          this.appraisalType ||\n          this.listFilters.length ||\n          this.eoFilter ||\n          this.certificationFilters.length ||\n          this.maxDistance ||\n          this.commercialFilter ||\n          this.quickView !== 'all'\n      );\n    },\n\n    gridElement() {\n      return document.getElementById(this.gridId);\n    },\n\n    gridApi() {\n      return this.gridElement()?._agGridApi || null;\n    },\n\n    ensureRowHighlight(api) {\n      if (!api?.setGridOption || api.__orderAssignmentRowHighlight) return;\n\n      api.setGridOption('getRowClass', (params) => {\n        const tier = params.data?.row_risk;\n        if (tier === 'danger') return 'ag-row-red-flag';\n        if (tier === 'warning') return 'ag-row-assignment-warning';\n        return undefined;\n      });\n\n      api.setGridOption('getRowHeight', (params) => {\n        if (params.data?.tall_row) return 88;\n        return 64;\n      });\n\n      api.__orderAssignmentRowHighlight = true;\n    },\n\n    ensureColumnFormats(api) {\n      if (!api?.setGridOption || api.__orderAssignmentColumns) return;\n\n      const defs = api.getColumnDefs?.();\n\n      if (!Array.isArray(defs)) return;\n\n      const columnState = api.getColumnState?.() || [];\n\n      const grossMarginColumn = {\n        cellRenderer: (params) => {\n          const div = document.createElement('div');\n\n          div.innerHTML = this.grossMarginCellHtml(params.value);\n          return div;\n        },\n        comparator: nullsLastComparator,\n      };\n\n      api.setGridOption(\n        'columnDefs',\n        defs.map((col) => {\n          if (col.field === 'avg_turn') return { ...col, ...AVG_TURN_COLUMN };\n          if (col.field === 'score') return { ...col, ...SCORE_COLUMN };\n          if (col.field === 'gross_margin') return { ...col, ...grossMarginColumn };\n\n          return col;\n        })\n      );\n\n      if (columnState.length && api.applyColumnState) {\n        api.applyColumnState({ state: columnState, applyOrder: true });\n      }\n\n      api.applyColumnState?.({\n        state: [{ colId: 'score', sort: 'desc' }],\n        defaultState: { sort: null },\n      });\n\n      api.__orderAssignmentColumns = true;\n    },\n\n    waitForGridApi(attempt = 0) {\n      const api = this.gridApi();\n\n      if (api) {\n        this.ensureRowHighlight(api);\n        this.ensureColumnFormats(api);\n        return Promise.resolve(api);\n      }\n      if (attempt >= GRID_READY_ATTEMPTS) return Promise.resolve(null);\n\n      return new Promise((resolve) => {\n        setTimeout(() => resolve(this.waitForGridApi(attempt + 1)), GRID_READY_DELAY_MS);\n      });\n    },\n\n    ensureLoadingOverlay() {\n      const scope = this.gridElement();\n\n      if (!scope) return null;\n\n      scope.classList.add('ag-grid-loading-scope');\n\n      let overlay = scope.querySelector(':scope > .ag-grid-request-overlay');\n\n      if (overlay) return overlay;\n\n      overlay = document.createElement('div');\n      overlay.className = 'ag-grid-request-overlay';\n      overlay.style.zIndex = '1000';\n      overlay.setAttribute('aria-hidden', 'true');\n      overlay.hidden = true;\n\n      const spinner = document.createElement('div');\n      spinner.className = 'ag-grid-request-overlay__spinner';\n      spinner.setAttribute('role', 'status');\n      spinner.setAttribute('aria-label', 'Loading');\n      overlay.appendChild(spinner);\n      scope.appendChild(overlay);\n\n      return overlay;\n    },\n\n    showLoadingOverlay() {\n      const overlay = this.ensureLoadingOverlay();\n      const api = this.gridApi();\n\n      if (api?.setGridOption) {\n        api.setGridOption('suppressNoRowsOverlay', true);\n      }\n\n      if (typeof api?.hideOverlay === 'function') {\n        api.hideOverlay();\n      }\n\n      if (!overlay) return;\n\n      overlay.hidden = false;\n      overlay.setAttribute('aria-hidden', 'false');\n    },\n\n    hideLoadingOverlay() {\n      const overlay = this.gridElement()?.querySelector(':scope > .ag-grid-request-overlay');\n\n      if (!overlay) return;\n\n      overlay.hidden = true;\n      overlay.setAttribute('aria-hidden', 'true');\n    },\n\n    isSelected(vendorId) {\n      return Boolean(this.findSelected(vendorId));\n    },\n\n    selectCellHtml(vendor) {\n      const selected = this.isSelected(vendor.id);\n      const classes = selected\n        ? 'bg-brand-600 border-brand-600 text-white'\n        : 'bg-white border-gray-300 text-brand-600';\n      const icon = selected ? '&times;' : '+';\n\n      return `<button type=\"button\"\n                class=\"h-6 w-6 rounded-full border inline-flex items-center justify-center ${classes}\"\n                onclick=\"window.__orderAssignmentToggleSelect('${this.orderId}', '${vendor.id}')\">${icon}</button>`;\n    },\n\n    appraiserCellHtml(vendor) {\n      const name = escapeHtml(vendor.name);\n      const firm = escapeHtml(vendor.appraisal_firm || '');\n      const href = escapeHtml(vendor.profile_url || '#');\n      const riskIcon = this.vendorHasRisk(vendor)\n        ? riskIconSvg(this.vendorRiskTone(vendor), this.vendorRiskTitle(vendor))\n        : '';\n      const vendorTags = this.appraiserVendorTagsHtml(vendor);\n\n      return `<div>\n                <div class=\"flex items-center gap-1.5\">\n                  <a href=\"${href}\" target=\"_blank\" class=\"link\">${name}</a>\n                  ${riskIcon}\n                </div>\n                <p class=\"text-xs text-gray-500\">${firm}</p>\n                ${vendorTags}\n              </div>`;\n    },\n\n    contactCellHtml(vendor) {\n      const email = escapeHtml(vendor.email || '');\n      const phone = escapeHtml(vendor.phone || '');\n\n      if (!email && !phone) return '\u2014';\n\n      return `<div>\n                ${email ? `<p class=\"text-xs text-gray-500\">${email}</p>` : ''}\n                ${phone ? `<p class=\"text-xs text-gray-500\">${phone}</p>` : ''}\n              </div>`;\n    },\n\n    appraiserVendorTagsHtml(vendor) {\n      if (!Array.isArray(vendor.tags) || !vendor.tags.length) return '';\n\n      const tags = vendor.tags.map(vendorTagBadge).filter(Boolean).join('');\n\n      if (!tags) return '';\n\n      return `<div class=\"mt-0.5 flex flex-wrap gap-1\">${tags}</div>`;\n    },\n\n    listsCellHtml(vendor) {\n      const badges = [];\n\n      if (vendor.client_preferred) badges.push(badge('Client Preferred', 'bg-green-100 text-green-800'));\n      if (vendor.company_preferred) badges.push(badge('Company Preferred', 'bg-green-100 text-green-800'));\n      if (vendor.vacationing) badges.push(badge('On Vacation', 'bg-yellow-100 text-yellow-800'));\n\n      const clientDnu = dnuNamesBadge('DNU Client', vendor.client_ineligible_names);\n      const companyDnu = dnuNamesBadge('DNU Company', vendor.company_ineligible_names);\n      if (clientDnu) badges.push(clientDnu);\n      if (companyDnu) badges.push(companyDnu);\n\n      if (!badges.length) return '\u2014';\n\n      return `<div class=\"flex flex-wrap gap-1 items-start\">${badges.join('')}</div>`;\n    },\n\n    workloadCellHtml(vendor) {\n      if (vendor.ongoing_orders == null) return '\u2014';\n\n      const ongoingOrders = Number(vendor.ongoing_orders);\n\n      if (!Number.isFinite(ongoingOrders)) return '\u2014';\n\n      const lateRaw = Number(vendor.late ?? vendor.late_orders);\n      const lateOrders = Number.isFinite(lateRaw) ? Math.max(lateRaw, 0) : 0;\n      const activeOrders = Math.max(ongoingOrders - lateOrders, 0);\n      const score = activeOrders + lateOrders;\n\n      let level = 'light';\n      let label = 'Light';\n      if (score >= OVERLOADED_ONGOING_ORDERS) {\n        level = 'heavy';\n        label = 'Heavy';\n      } else if (score >= 5) {\n        level = 'moderate';\n        label = 'Moderate';\n      }\n\n      const percentage = Math.min((score / OVERLOADED_ONGOING_ORDERS) * 100, 100);\n      const title = `Active: ${activeOrders} \u00B7 Late: ${lateOrders}`;\n\n      return `<div class=\"order-assignment-workload order-assignment-workload--${level}\"\n                   title=\"${escapeHtml(title)}\">\n                <div class=\"order-assignment-workload__track\" aria-hidden=\"true\">\n                  <span class=\"order-assignment-workload__bar\" style=\"width: ${percentage}%\"></span>\n                </div>\n                <p class=\"order-assignment-workload__caption\">\n                  ${label} \u00B7 <strong>${activeOrders}</strong> active, <strong>${lateOrders}</strong> late\n                </p>\n              </div>`;\n    },\n\n    vendorsToRows() {\n      return this.vendors.map((vendor) => this.vendorToRow(vendor));\n    },\n\n    vendorToRow(vendor) {\n      const hasVendorTags = Array.isArray(vendor.tags) && vendor.tags.length > 0;\n      const tallRow =\n        this.hasClientIneligible(vendor) || this.hasCompanyIneligible(vendor) || hasVendorTags;\n      let rowRisk = null;\n      if (this.vendorIsDanger(vendor)) rowRisk = 'danger';\n      else if (this.vendorIsWarning(vendor)) rowRisk = 'warning';\n\n      return {\n        id: vendor.id,\n        select: this.selectCellHtml(vendor),\n        appraiser: this.appraiserCellHtml(vendor),\n        contact: this.contactCellHtml(vendor),\n        lists: this.listsCellHtml(vendor),\n        score: vendor.final_score == null ? null : Number(vendor.final_score),\n        quality_score: vendor.quality_score,\n        due_date_score: vendor.due_date_score,\n        timeliness_score: vendor.timeliness_score,\n        score_completed_orders: vendor.score_completed_orders,\n        avg_turn: vendor.avg_turn_days == null ? null : Number(vendor.avg_turn_days),\n        workload: this.workloadCellHtml(vendor),\n        fee: this.vendorFeeLabel(vendor) || '\u2014',\n        gross_margin: this.vendorMargin(vendor),\n        distance: vendor.miles != null ? `${vendor.miles} mi` : '\u2014',\n        row_risk: rowRisk,\n        tall_row: tallRow,\n      };\n    },\n\n    syncGrid() {\n      return this.waitForGridApi().then((api) => {\n        if (!api) return;\n\n        const rows = this.vendorsToRows();\n\n        if (typeof api.setGridOption === 'function') {\n          api.setGridOption('suppressNoRowsOverlay', false);\n          api.setGridOption('rowData', rows);\n        } else if (typeof api.setRowData === 'function') {\n          api.setRowData(rows);\n        }\n\n        if (typeof api.resetRowHeights === 'function') api.resetRowHeights();\n      });\n    },\n\n    refreshVendorRows(vendorIds) {\n      const api = this.gridApi();\n\n      if (!api) {\n        this.syncGrid();\n        return;\n      }\n\n      this.ensureRowHighlight(api);\n\n      const rows = vendorIds\n        .map((id) => this.vendors.find((vendor) => String(vendor.id) === String(id)))\n        .filter(Boolean)\n        .map((vendor) => this.vendorToRow(vendor));\n\n      if (!rows.length) return;\n\n      if (typeof api.applyTransaction === 'function') {\n        api.applyTransaction({ update: rows });\n        return;\n      }\n\n      this.syncGrid();\n    },\n\n    strategyParam() {\n      const strategies = [];\n      const listStrategies = {\n        preferred_vendors: 'preferred_vendors',\n        company_preferred_vendors: 'company_preferred_vendors',\n        on_vacation: 'on_vacation',\n        dnu_list: 'dnu_list',\n      };\n\n      if (this.coveringArea) strategies.push('coverage_area');\n      if (this.appraisalType) strategies.push('appraisal_types');\n      this.listFilters.forEach((filter) => {\n        if (listStrategies[filter]) strategies.push(listStrategies[filter]);\n      });\n      if (this.eoFilter) strategies.push('e_o_insurance');\n\n      return strategies.join(',');\n    },\n\n    buildUri(page) {\n      const params = new URLSearchParams({\n        order_id: this.orderId,\n        vendor_scope: this.vendorScope,\n        page: String(page),\n        limit: String(this.pagination.per_page),\n      });\n\n      if (this.search.trim()) params.set('q[name_or_email_cont]', this.search.trim());\n      this.certificationFilters.forEach((type) => {\n        params.append('q[filter_license_type][]', type);\n      });\n      if (this.maxDistance) params.set('max_distance', this.maxDistance);\n      if (this.commercialFilter === 'yes') {\n        params.set('q[provided_services_contains]', 'commercial_appraisals');\n      } else if (this.commercialFilter === 'no') {\n        params.set('q[provided_services_not_contains]', 'commercial_appraisals');\n      }\n      if (this.quickView !== 'all') params.set('quick_view', this.quickView);\n\n      const strategy = this.strategyParam();\n\n      if (strategy) params.set('strategy', strategy);\n\n      return `/ordering/vendors.json?${params.toString()}`;\n    },\n\n    fetchVendors(page = 1) {\n      this.showLoadingOverlay();\n\n      return fetch(this.buildUri(page))\n        .then((response) => response.json())\n        .then((result) => {\n          this.vendors = result.vendors || [];\n          this.yourPanelCount = result.your_panel_count || 0;\n          this.allVendorsCount = result.all_vendors_count || 0;\n          this.pagination = result.pagination || this.pagination;\n\n          return this.syncGrid();\n        })\n        .catch(() => {\n          this.vendors = [];\n          this.yourPanelCount = 0;\n          this.allVendorsCount = 0;\n          this.pagination = { ...this.pagination, total: 0, next_page: null, prev_page: null };\n\n          return this.syncGrid();\n        })\n        .finally(() => {\n          this.hideLoadingOverlay();\n        });\n    },\n\n    setPanel(scope) {\n      if (this.vendorScope === scope) return;\n\n      this.vendorScope = scope;\n      this.fetchVendors();\n    },\n\n    setQuickView(view) {\n      if (this.quickView === view) return;\n\n      this.quickView = view;\n      this.fetchVendors();\n    },\n\n    onSearchInput() {\n      clearTimeout(this.searchTimer);\n\n      this.searchTimer = setTimeout(() => this.fetchVendors(), SEARCH_DEBOUNCE_MS);\n    },\n\n    onCoveringAreaChange(event) {\n      this.coveringArea = Boolean(event.target.checked);\n      this.fetchVendors();\n    },\n\n    onAppraisalTypeChange(event) {\n      this.appraisalType = Boolean(event.target.checked);\n      this.fetchVendors();\n    },\n\n    setListFilter(value) {\n      this.listFilters = value ? [value] : [];\n      this.fetchVendors();\n    },\n\n    toggleListFilter(value) {\n      const index = this.listFilters.indexOf(value);\n\n      if (index >= 0) this.listFilters.splice(index, 1);\n      else this.listFilters.push(value);\n\n      this.fetchVendors();\n    },\n\n    setEoFilter(value) {\n      this.eoFilter = value;\n      this.fetchVendors();\n    },\n\n    setCertificationFilter(value) {\n      this.certificationFilters = value ? [value] : [];\n      this.fetchVendors();\n    },\n\n    toggleCertificationFilter(value) {\n      const index = this.certificationFilters.indexOf(value);\n\n      if (index >= 0) this.certificationFilters.splice(index, 1);\n      else this.certificationFilters.push(value);\n\n      this.fetchVendors();\n    },\n\n    setMaxDistance(value) {\n      this.maxDistance = value;\n      this.fetchVendors();\n    },\n\n    setCommercialFilter(value) {\n      this.commercialFilter = value;\n      this.fetchVendors();\n    },\n\n    clearFilters() {\n      this.search = '';\n      this.coveringArea = false;\n      this.appraisalType = false;\n      this.listFilters = [];\n      this.eoFilter = '';\n      this.certificationFilters = [];\n      this.maxDistance = '';\n      this.commercialFilter = '';\n      this.quickView = 'all';\n\n      const coveringCheckbox = document.getElementById('covering_area');\n\n      if (coveringCheckbox) coveringCheckbox.checked = false;\n\n      this.fetchVendors();\n    },\n\n    goToPage(page) {\n      if (!page) return;\n\n      this.fetchVendors(page);\n    },\n\n    toggleSelect(vendorId) {\n      if (this.isSelected(vendorId)) {\n        this.removeSelected(vendorId);\n        return;\n      }\n\n      const vendor = this.findVendor(vendorId);\n\n      if (!vendor) return;\n\n      if (\n        vendor.ineligible ||\n        vendor.vacationing ||\n        this.hasClientIneligible(vendor) ||\n        this.hasCompanyIneligible(vendor)\n      ) {\n        this.openRiskConfirm(vendor);\n        return;\n      }\n\n      this.addSelected(vendor);\n    },\n\n    addSelected(vendor) {\n      if (!vendor || this.isSelected(vendor.id)) return;\n\n      this.selectedVendors = [\n        ...this.selectedVendors,\n        { ...vendor, feeLabel: this.vendorFeeLabel(vendor) },\n      ];\n      this.rebuildSelectionMeta();\n      this.refreshVendorRows([vendor.id]);\n    },\n\n    removeSelected(vendorId) {\n      if (!this.isSelected(vendorId)) return;\n\n      this.selectedVendors = this.selectedVendors.filter(\n        (vendor) => String(vendor.id) !== String(vendorId)\n      );\n      this.rebuildSelectionMeta();\n      this.refreshVendorRows([vendorId]);\n\n      if (!this.selectedCount() && this.currentView !== 'select') {\n        this.goToSelect();\n      }\n    },\n\n    clearSelection() {\n      const previouslySelected = this.selectedVendorIds();\n      this.selectedVendors = [];\n      this.rebuildSelectionMeta();\n      this.refreshVendorRows(previouslySelected);\n    },\n  });\n\n  if (typeof window !== 'undefined') {\n    window.orderAssignmentConsoleApp = orderAssignmentConsoleApp;\n\n    // AG Grid html cell buttons cannot use Alpine @click; bridge via window helper.\n    window.__orderAssignmentToggleSelect = (orderId, vendorId) => {\n      const root = document.querySelector(`[data-order-assignment-console=\"${orderId}\"]`);\n      const data = root && root.__x && root.__x.$data;\n\n      if (data && typeof data.toggleSelect === 'function') {\n        data.toggleSelect(vendorId);\n      }\n    };\n  }\n\n  return orderAssignmentConsoleApp;\n})();\n", "(function () {\n  const storageKey = (orderId) => `orderDetailsRail:${orderId}`;\n\n  const readOpen = (orderId) => sessionStorage.getItem(storageKey(orderId)) !== 'false';\n\n  const persistOpen = (orderId, open) => {\n    sessionStorage.setItem(storageKey(orderId), String(open));\n  };\n\n  const orderDetailsRailApp = (orderId) => ({\n    orderId: String(orderId),\n    open: readOpen(orderId),\n\n    setOpen(open) {\n      this.open = open;\n      persistOpen(this.orderId, open);\n      window.dispatchEvent(\n        new CustomEvent('order-details-rail--state', {\n          detail: { orderId: this.orderId, open },\n        })\n      );\n    },\n\n    handleToggleRequest(event) {\n      if (String(event.detail.orderId) !== this.orderId) return;\n\n      this.setOpen(event.detail.open);\n    },\n  });\n\n  const orderDetailsRailToggleApp = (orderId) => ({\n    orderId: String(orderId),\n    open: readOpen(orderId),\n\n    sync(event) {\n      if (String(event.detail.orderId) !== this.orderId) return;\n\n      this.open = event.detail.open;\n    },\n\n    requestToggle() {\n      const open = !this.open;\n      this.open = open;\n      window.dispatchEvent(\n        new CustomEvent('order-details-rail--request-toggle', {\n          detail: { orderId: this.orderId, open },\n        })\n      );\n    },\n  });\n\n  if (typeof window !== 'undefined') {\n    window.orderDetailsRailApp = orderDetailsRailApp;\n    window.orderDetailsRailToggleApp = orderDetailsRailToggleApp;\n  }\n\n  return orderDetailsRailApp;\n})();\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n", "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\n", "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? rng();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n    if (native.randomUUID && !buf && !options) {\n        return native.randomUUID();\n    }\n    return _v4(options, buf, offset);\n}\nexport default v4;\n", "export { default as MAX } from './max.js';\nexport { default as NIL } from './nil.js';\nexport { default as parse } from './parse.js';\nexport { default as stringify } from './stringify.js';\nexport { default as v1 } from './v1.js';\nexport { default as v1ToV6 } from './v1ToV6.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as v6 } from './v6.js';\nexport { default as v6ToV1 } from './v6ToV1.js';\nexport { default as v7 } from './v7.js';\nexport { default as validate } from './validate.js';\nexport { default as version } from './version.js';\n", "import consumer from '../channels/consumer'\nimport { v4 as uuidV4 } from 'uuid'\n\n(function () {\n  const orderInteractionsApp = function (orderId, subscriberId) {\n    return {\n      orderId: orderId,\n      subscriberId: subscriberId,\n      subscription: null,\n      connId: uuidV4(),\n      subscribe: function (e) {\n        this.subscription = consumer.subscriptions.create({\n          channel: 'OrderInteractions::TracksChannel',\n          order_id: this.orderId,\n          subscriber_id: this.subscriberId,\n          conn_id: this.connId\n        })\n      },\n      unsubscribe: function (e) {\n        if (this.subscription) { this.subscription.unsubscribe() }\n      }\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.orderInteractionsApp = orderInteractionsApp;\n  }\n\n  return orderInteractionsApp;\n})();\n", "import { calculateTableKey } from '../../../gems/collateral_design/app/javascripts/table/helpers'\nimport { hashFilter, humanizeString } from './utils'\n;(function () {\n  function orderTableColumnsApp(tableId, summarizableColumns) {\n    const table = document.getElementById(tableId)\n\n    if (!table) {\n      return {\n        columns: '[]',\n        summarizableColumns: '[]',\n        humanizeString: humanizeString,\n      }\n    }\n\n    const tableKey = calculateTableKey(table)\n    const tableColumns = window.localStorageObjectStore.get(tableKey) || []\n    const columns = Object.values(\n      hashFilter(tableColumns, (c) => c.display)\n    ).map((c) => c.column)\n\n    return {\n      columns: JSON.stringify(columns),\n      summarizableColumns: columns.filter((c) =>\n        summarizableColumns.includes(c)\n      ),\n      humanizeString: humanizeString,\n    }\n  }\n\n  if (typeof window !== 'undefined')\n    window.orderTableColumnsApp = orderTableColumnsApp\n\n  return orderTableColumnsApp\n})()\n", "(function () {\n  const orderWizardPropertyApp = function (\n    serviceType,\n    loanType,\n    transactionType,\n    { orderId }\n  ) {\n    return {\n      serviceType,\n      loanType,\n      transactionType,\n      orderId,\n      loadSelectOptions: function (path, ref, selectedValue = null) {\n        return fetch(path)\n          .then((response) => response.text())\n          .then((html) => {\n            ref.innerHTML = html\n            if (selectedValue) {\n              Array.from(ref.options).forEach(option => {\n                option.selected = option.value === selectedValue;\n              });\n            }\n          });\n      },\n      addCurrencyMask: function (input) {\n        Inputmask({\n          alias: 'currency',\n          groupSeparator: ',',\n          removeMaskOnSubmit: true,\n        }).mask(input);\n      },\n      loanOptionsPath: function (serviceType = null) {\n        return this.optionsPath('loan_types', serviceType);\n      },\n      propertyOptionsPath: function (serviceType = null) {\n        return this.optionsPath('property_types', serviceType);\n      },\n      transactionOptionsPath: function (serviceType = null) {\n        return this.optionsPath('transaction_types', serviceType);\n      },\n      optionsPath: function (resource, serviceType = null) {\n        const path = `/ordering/orders/${this.orderId}/${resource}`;\n\n        return serviceType ? `${path}?service_type=${serviceType}` : path;\n      },\n    };\n  };\n\n  if (typeof window !== 'undefined') {\n    window.orderWizardPropertyApp = orderWizardPropertyApp;\n  }\n})();\n", ";(function () {\n  const groups = {}\n  const entriesByElement = new WeakMap()\n\n  const getScrollProgress = function (element) {\n    const maxScrollTop = element.scrollHeight - element.clientHeight\n\n    if (maxScrollTop <= 0) return 0\n\n    return element.scrollTop / maxScrollTop\n  }\n\n  const applyScrollProgress = function (element, progress) {\n    const maxScrollTop = element.scrollHeight - element.clientHeight\n\n    element.scrollTop = maxScrollTop <= 0 ? 0 : maxScrollTop * progress\n  }\n\n  const registerVerticalScrollMirror = function ({ group, element } = {}) {\n    if (!group || !element) return function () {}\n\n    const members = groups[group] || (groups[group] = [])\n    const entry = { group, element, isApplyingMirroredScroll: false }\n\n    members.push(entry)\n    entriesByElement.set(element, entry)\n\n    const onScroll = function () {\n      if (entry.isApplyingMirroredScroll) {\n        entry.isApplyingMirroredScroll = false\n        return\n      }\n\n      const progress = getScrollProgress(element)\n\n      members.forEach((peer) => {\n        if (peer === entry) return\n\n        peer.isApplyingMirroredScroll = true\n        applyScrollProgress(peer.element, progress)\n      })\n    }\n\n    element.addEventListener('scroll', onScroll, { passive: true })\n\n    return function unregister() {\n      element.removeEventListener('scroll', onScroll)\n\n      const index = members.indexOf(entry)\n      if (index > -1) members.splice(index, 1)\n\n      entriesByElement.delete(element)\n\n      if (members.length === 0) delete groups[group]\n    }\n  }\n\n  const syncVerticalScrollMirror = function (element) {\n    const entry = entriesByElement.get(element)\n    if (!entry) return\n\n    const members = groups[entry.group]\n    if (!members) return\n\n    const progress = getScrollProgress(element)\n\n    members.forEach((peer) => {\n      if (peer === entry) return\n\n      peer.isApplyingMirroredScroll = true\n      applyScrollProgress(peer.element, progress)\n    })\n  }\n\n  if (typeof window !== 'undefined') {\n    window.registerVerticalScrollMirror = registerVerticalScrollMirror\n    window.syncVerticalScrollMirror = syncVerticalScrollMirror\n  }\n})()\n", ";(function () {\n  const noop = function () {}\n\n  const pdfViewerApp = function (pdfViewerId, pdfUrl, options = {}) {\n    return {\n      pdfUrl,\n      pdfViewerId,\n      pdfViewer: null,\n      scrollContainer: null,\n      pdfDoc: null,\n      loading: true,\n      scale: options.scale || 1.5,\n      page: options.page || 1,\n      numPages: 0,\n      syncGroup: options.syncGroup || null,\n      syncActions: options.syncActions || false,\n      isApplyingMirroredAction: false,\n      unregisterScrollMirror: noop,\n      unregisterActionSync: noop,\n      fixedScale: options.scale || null,\n      dragging: false,\n      dragStartX: 0,\n      dragStartY: 0,\n      dragScrollLeft: 0,\n      dragScrollTop: 0,\n\n      init: function () {\n        this.pdfViewer = document.querySelector(`#${this.pdfViewerId}`)\n        this.scrollContainer = this.$refs.scrollContainer || this.$el\n        this.pdfDoc = pdfjsLib.getDocument(this.pdfUrl)\n\n        if (this.syncGroup && typeof window.registerVerticalScrollMirror === 'function') {\n          this.unregisterScrollMirror = window.registerVerticalScrollMirror({\n            group: this.syncGroup,\n            element: this.scrollContainer,\n          })\n        }\n\n        this.calculateNumPages()\n\n        if (this.fixedScale) {\n          this.render()\n        } else {\n          this.fitToWidth()\n        }\n      },\n\n      destroy: function () {\n        this.unregisterScrollMirror()\n        this.unregisterActionSync()\n      },\n\n      syncActionToGroup: function (actionName, payload) {\n        if (\n          !this.syncGroup ||\n          !this.syncActions ||\n          this.isApplyingMirroredAction\n        ) {\n          this.isApplyingMirroredAction = false\n          return\n        }\n\n        const instances = getGroupViewers(this.syncGroup)\n        instances.forEach((instance) => {\n          if (instance === this || typeof instance[actionName] !== 'function') return\n\n          instance.isApplyingMirroredAction = true\n          instance[actionName](payload)\n        })\n      },\n\n      registerForActionSync: function () {\n        if (!this.syncGroup || !this.syncActions) return\n\n        const instances = getGroupViewers(this.syncGroup)\n        if (!instances.includes(this)) instances.push(this)\n\n        this.unregisterActionSync = function () {\n          const index = instances.indexOf(this)\n          if (index > -1) instances.splice(index, 1)\n        }.bind(this)\n      },\n\n      calculateNumPages: function () {\n        const __this = this\n\n        __this.pdfDoc.promise.then((pdf) => {\n          __this.numPages = pdf.numPages\n        })\n      },\n\n      fitToWidth: function () {\n        const __this = this\n        const containerWidth = __this.pdfViewer.clientWidth\n\n        __this.pdfDoc.promise.then((pdf) => {\n          pdf.getPage(__this.page).then((page) => {\n            const viewport = page.getViewport({ scale: 1 })\n            __this.scale =\n              Math.round((containerWidth / viewport.width) * 2) / 2 - 0.25\n            __this.render()\n          })\n        })\n      },\n\n      toPage: function (page) {\n        this.page = parseInt(page) || 1\n        this.page = this.page < 1 ? 1 : this.page\n        this.page = this.page > this.numPages ? this.numPages : this.page\n\n        this.render()\n        this.syncActionToGroup('toPage', this.page)\n      },\n\n      zoomIn: function () {\n        this.scale = this.scale + 0.25\n        this.render()\n        this.syncActionToGroup('setScale', this.scale)\n      },\n\n      zoomOut: function () {\n        this.scale = this.scale - 0.25\n        this.render()\n        this.syncActionToGroup('setScale', this.scale)\n      },\n\n      setScale: function (scale) {\n        this.scale = scale\n        this.render()\n      },\n\n      isDraggable: function () {\n        if (!this.scrollContainer) return false\n\n        return this.scrollContainer.scrollWidth > this.scrollContainer.clientWidth ||\n          this.scrollContainer.scrollHeight > this.scrollContainer.clientHeight\n      },\n\n      startDrag: function (event) {\n        if (!this.isDraggable()) return\n\n        event.preventDefault()\n        this.dragging = true\n        this.dragStartX = event.clientX\n        this.dragStartY = event.clientY\n        this.dragScrollLeft = this.scrollContainer.scrollLeft\n        this.dragScrollTop = this.scrollContainer.scrollTop\n      },\n\n      drag: function (event) {\n        if (!this.dragging) return\n\n        event.preventDefault()\n        this.scrollContainer.scrollLeft = this.dragScrollLeft - (event.clientX - this.dragStartX)\n        this.scrollContainer.scrollTop = this.dragScrollTop - (event.clientY - this.dragStartY)\n      },\n\n      endDrag: function () {\n        this.dragging = false\n      },\n\n      render: function () {\n        const __this = this\n\n        __this.pdfViewer.innerHTML = ''\n        __this.pdfDoc.promise.then(function (pdf) {\n          pdf.getPage(__this.page).then(function (page) {\n            let viewport = page.getViewport({ scale: __this.scale })\n\n            let canvas = document.createElement('canvas')\n            canvas.classList.add('mx-auto', 'shadow-md')\n            let context = canvas.getContext('2d')\n            canvas.height = viewport.height\n            canvas.width = viewport.width\n\n            let renderContext = {\n              canvasContext: context,\n              viewport: viewport,\n            }\n\n            page.render(renderContext).promise.then(function () {\n              __this.pdfViewer.appendChild(canvas)\n              __this.registerForActionSync()\n\n              if (\n                __this.syncGroup &&\n                typeof window.syncVerticalScrollMirror === 'function'\n              ) {\n                window.syncVerticalScrollMirror(__this.scrollContainer)\n              }\n\n              __this.loading = false\n            })\n          })\n        })\n      },\n    }\n  }\n\n  const getGroupViewers = function (group) {\n    if (typeof window === 'undefined') return []\n\n    if (!window.__pdfViewerGroupViewers) {\n      window.__pdfViewerGroupViewers = {}\n    }\n\n    if (!window.__pdfViewerGroupViewers[group]) {\n      window.__pdfViewerGroupViewers[group] = []\n    }\n\n    return window.__pdfViewerGroupViewers[group]\n  }\n\n  if (typeof window !== 'undefined') {\n    window.pdfViewerApp = pdfViewerApp\n  }\n})()\n", "(function () {\n  const filterPlace = place => type => {\n    const component = place.address_components.filter(comp => comp.types[0] === type);\n\n    return (component && component[0] && component[0].short_name) || undefined;\n  };\n\n  const placeInputApp = function (placeInputId, address = {}) {\n    let $dispatch;\n    const placeInput = document.getElementById(placeInputId);\n\n    const autocomplete = new google.maps.places.Autocomplete(placeInput, {\n      type: ['geocode'],\n    });\n\n    autocomplete.addListener('place_changed', () => {\n      const place = autocomplete.getPlace();\n\n      const latitude = place.geometry.location.lat();\n      const longitude = place.geometry.location.lng();\n\n      const filterComponent = filterPlace(place);\n\n      const streetNumber = filterComponent('street_number');\n      const route = filterComponent('route');\n      const street = streetNumber && route ? `${streetNumber} ${route}` : route;\n      const city = filterComponent('locality') || filterComponent('administrative_area_level_2');\n      const county =\n        filterComponent('sublocality_level_1') || filterComponent('administrative_area_level_2');\n      const state = filterComponent('administrative_area_level_1');\n      const zip = filterComponent('postal_code');\n      const country = filterComponent('country') || 'US';\n      const subpremise = filterComponent('subpremise');\n\n      $dispatch('address-changed',\n                { street, city, county, state, zip, country, latitude, longitude, subpremise});\n    });\n\n    return {\n      address,\n      fullAddress: function() {\n        let address = this.address\n\n        Object.keys(address).forEach(function(key) {\n          if (!address[key]) { address[key] = '' }\n\n          address[key] = new String(address[key]).replace(',', ' ').replace(/\\s+/g,' ').trim()\n        })\n\n        const { street, city, county, state, zip, country } = address\n\n        if (!street && !city && !county && !state && !zip) return ''\n\n        return `${street}, ${city}, ${county}, ${state} ${zip}, ${country || 'US'}`\n      },\n      setDispatch: function (dispatch, refs = null) {\n        if(refs) this.refs = refs;\n        $dispatch = dispatch;\n      },\n      updateAddress: function (address) {\n        if (this.refs) {\n          let stateId = ''\n          for (const key in this.refs.state_select.options) {\n            if(this.refs.state_select.options[key]?.text === address.state) {\n              stateId = this.refs.state_select.options[key].value\n            }\n          }\n          this.refs.state_select.value = stateId\n        }\n        this.address = address;\n      },\n      clearAddress: function () {\n        this.address = {};\n      },\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.placeInputApp = placeInputApp;\n  }\n\n  return placeInputApp;\n})();\n", "const { set, last } = require(\"lodash\");\n\n;(function () {\n  const phonesInputApp = function (phones) {\n    this.phones = phones\n\n    return {\n      phones,\n\n      init: function ($watch) {\n        const __this = this\n\n        $watch('phones', () => { __this.autofocusLastPhone() }, { deep: true })\n        __this.autofocusLastPhone()\n      },\n\n      autofocusLastPhone: function () {\n        setTimeout(() => {\n          const lastInput = document.querySelector('ul.phones-inputs > li:last-child .phone-input')\n\n          if (lastInput && lastInput.value === '') {\n            lastInput.focus()\n          }\n        }, 100)\n      },\n\n      addPhone: function () {\n        this.phones.push({ id: null, phone_number: null, phone_type: null, position: null })\n      },\n\n      removePhone: function (index) {\n        if (this.phones[index].id) {\n          this.phones[index]._destroy = 1\n        } else {\n          this.phones.splice(index, 1)\n        }\n      },\n\n      addPhoneMask: function (input) {\n        Inputmask({ mask: '(999) 999-9999' }).mask(input)\n        input.select()\n      },\n\n      checkPhonesPresence: function () {\n        return this.phones.filter((phone) => phone._destroy !== 1).length > 0\n      }\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.phonesInputApp = phonesInputApp\n  }\n\nreturn phonesInputApp\n\n})();\n", "(function () {\n  const popoutApp = function (records) {\n    return {\n      opened: true,\n      minimized: false,\n      dismiss: function() {\n        this.opened = false;\n      }\n    };\n  };\n\n  if (typeof window !== 'undefined') window.popoutApp = popoutApp;\n\n  return popoutApp;\n})();\n", "(function () {\n  let submitting = false\n\n  function isFormAnswered(form) {\n    const data = new FormData(form)\n    const responseType = data.get('artificial_intelligence_finding_comment[response_type]')\n    const pageNumber = (data.get('artificial_intelligence_finding_comment[page_number]') || '').trim()\n    const note = (data.get('artificial_intelligence_finding_comment[note]') || '').trim()\n\n    if (responseType === 'addressed') return pageNumber !== '' && note !== ''\n    if (responseType === 'explanation') return note !== ''\n\n    return false\n  }\n\n  window.preSubmissionFindingsCompletionApp = function (answeredCountAtLoad, totalCount) {\n    return {\n      submitting,\n      answeredCount: answeredCountAtLoad,\n      totalCount,\n      init() {\n        this.refresh()\n        window.addEventListener('finding-response-changed', () => this.refresh())\n      },\n      refresh() {\n        const requiredForms = Array.from(document.querySelectorAll('.js-required-finding-form'))\n\n        this.answeredCount = requiredForms.filter(isFormAnswered).length\n      },\n      async submit() {\n        submitting = true\n        this.submitting = true\n\n        if (this.totalCount === 0) {\n          document.getElementById('js-completion-form')?.submit()\n          return\n        }\n\n        const forms = Array.from(document.querySelectorAll('.js-finding-response-form'))\n\n        await Promise.all(forms.map((form) => (\n          new FetchRequest('post', form.action, {\n            body: new FormData(form),\n            responseKind: 'turbo-stream'\n          }).perform()\n        )))\n\n        document.getElementById('js-completion-form')?.submit()\n      }\n    }\n  }\n})()\n", ";(function () {\n  const radiusMapViewApp = function (\n    wrapperId,\n    $dispatch,\n    { radius, latitude, longitude }\n  ) {\n    return {\n      init: function () {\n        this.dispatch = $dispatch\n        this.center = { lat: parseFloat(latitude), lng: parseFloat(longitude) }\n        this.wrapper = document.getElementById(wrapperId)\n        this.map = new google.maps.Map(this.wrapper, {\n          center: this.center,\n          zoom: this.defineZoom(),\n        })\n        this.marker = this.newMarker(this.center)\n        this.circle = new google.maps.Circle({\n          strokeColor: '#93C5FD',\n          strokeOpacity: 0.8,\n          strokeWeight: 2,\n          fillColor: '#93C5FD',\n          fillOpacity: 0.35,\n          map: this.map,\n          center: this.center,\n          radius: this.toMeters(radius),\n          editable: true,\n        })\n\n        google.maps.event.addListener(\n          this.circle,\n          'center_changed',\n          this.onCenterChanged.bind(this)\n        )\n\n        google.maps.event.addListener(\n          this.circle,\n          'radius_changed',\n          this.onRadiusChanged.bind(this)\n        )\n      },\n      onCenterChanged: function () {\n        const newCenter = this.circle.getCenter()\n        const newCoords = { lat: newCenter.lat(), lng: newCenter.lng() }\n\n        this.marker.setMap(null)\n        this.marker = this.newMarker(newCoords)\n        this.dispatch('center-changed', newCoords)\n      },\n      onRadiusChanged: function () {\n        const newRadius = this.circle.getRadius()\n\n        this.dispatch('radius-changed', this.toMiles(newRadius))\n      },\n      newMarker: function (position, title = 'You are here') {\n        return new google.maps.Marker({ map: this.map, position, title })\n      },\n      defineZoom: () => {\n        const zoomOpts = { close: 14, medium: 11, far: 8, veryFar: 6 }\n\n        if (radius < 1) return zoomOpts.close\n        if (radius < 10) return zoomOpts.medium\n        if (radius < 70) return zoomOpts.far\n\n        return zoomOpts.veryFar\n      },\n      toMeters: (miles) => parseFloat(miles) * 1609.34,\n      toMiles: (meters) => (parseFloat(meters) / 1609.34).toFixed(2),\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.radiusMapViewApp = radiusMapViewApp\n  }\n\n  return radiusMapViewApp\n})()\n", ";(function () {\n  const rangeDatepickerApp = function (options = {}) {\n    let fp\n\n    return {\n      datepickerInput: null,\n      gteqInput: null,\n      lteqInput: null,\n      options: { altFormat: 'm/d/Y', altInput: true, ...options },\n      clear: function () {\n        fp.clear()\n      },\n      initialize: function (datepickerInput, gteqInput, lteqInput) {\n        const __this = this\n\n        __this.datepickerInput = datepickerInput\n        __this.gteqInput = gteqInput\n        __this.lteqInput = lteqInput\n\n        fp = flatpickr(datepickerInput, {\n          ...__this.options,\n          mode: 'range',\n          defaultDate: [__this.gteqInput.value, __this.lteqInput.value],\n          onChange: function (selectedDates) {\n            const dateArr = selectedDates.map((date) => this.formatDate(date, 'Y-m-d'))\n\n            if (!dateArr.length) {\n              __this.gteqInput.value = ''\n              __this.lteqInput.value = ''\n              return\n            }\n\n            __this.gteqInput.value = dateArr[0]\n            __this.lteqInput.value = dateArr[1]\n          },\n        })\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.rangeDatepickerApp = rangeDatepickerApp\n  }\n\n  return rangeDatepickerApp\n})()\n", "import MD5 from 'crypto-js/md5'\n\n(function () {\n  function eachTableHeader (table, callback) {\n    table\n      .querySelectorAll('th')\n      .forEach((el, index) => {\n        if (!el.dataset.rtcResizable) return\n\n        callback(el, index)\n      })\n  }\n\n  function calculateTableKey (table) {\n    let name = table.dataset.rtcResizableTable\n\n    eachTableHeader(table, function (el, index) {\n      name += ':' + index + '-' + el.dataset.rtcResizable\n    })\n\n    return MD5(name).toString()\n  }\n\n  function calculateTableColumns (table) {\n    const columns = {}\n\n    eachTableHeader(table, function (el, index) {\n      columns[el.dataset.rtcResizable] = { index, column: el.dataset.rtcResizable, display: true }\n    })\n\n    return columns\n  }\n\n  function initTable(table, columns) {\n    columns = Object.values(columns)\n\n    columns.forEach(function ({ index, display }) {\n      if (display) return\n\n      table\n        .querySelectorAll('td:nth-child(' + (index + 1) + '), th:nth-child(' + (index + 1) + ')')\n        .forEach((el) => {\n          el.style.display = 'none'\n        })\n    })\n  }\n\n  const resizableTableSettings = function (table) {\n    const tableKey = calculateTableKey(table)\n    const columns = window.localStorageObjectStore.get(tableKey) || calculateTableColumns(table)\n    initTable(table, columns)\n\n    return {\n      columns: Object.values(columns),\n      humanize: function (str) {\n        return str\n          .replace(/^[\\s_]+|[\\s_]+$/g, '')\n          .replace(/[_-\\s]+/g, ' ')\n          .replace(/^[a-z]/, (m) => m.toUpperCase())\n      },\n      open: false,\n      isDisplayed: function (column) {\n        return columns[column].display\n      },\n      toggle: function (column) {\n        columns[column].display = !columns[column].display\n\n        window.localStorageObjectStore.set(tableKey, columns)\n\n        table\n          .querySelectorAll('td:nth-child(' + (columns[column].index + 1) + '), th:nth-child(' + (columns[column].index + 1) + ')')\n          .forEach((el) => {\n            el.style.display = columns[column].display ? '' : 'none'\n          })\n      }\n    }\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.resizableTableSettings = resizableTableSettings;\n  }\n\n  return resizableTableSettings;\n})();\n", "import _ from 'lodash';\n\n(function () {\n  const selectAutocompleteApp = function (options = {}) {\n    const primaryKey = options?.primaryKey || 'primary',\n          secondaryKey = options?.secondaryKey || '',\n          url = options?.url,\n          selectedTags = normalize(options?.selectedTags || []),\n          resultKey = options?.resultKey,\n          maxItems = options?.maxItems || 50,\n          multipleClauses = options?.multipleClauses,\n          selectedClause = options?.selectedClause,\n          mode = options?.mode || null,\n          closeOnSelect = options?.closeOnSelect || false,\n          fetchOnFocus = options?.fetchOnFocus || false,\n          pasteLookup = options?.pasteLookup || false;\n\n    function normalize (collection) {\n      return collection.map(entry => ({ ...entry, value: entry.id }))\n    }\n\n    function dropdownItemTemplate(tagData) {\n      delete tagData.id;\n\n      return `\n        <div ${this.getAttributes(tagData)}\n             tabindex=\"0\"\n             role=\"option\"\n             class=\"select-autocomplete__dropdown-item tagify__dropdown__item\"\n        >\n          <span class=\"dropdown-item__primary\">${tagData[primaryKey]}</span>\n          ${\n            secondaryKey &&\n            `<span class=\"dropdown-item__secondary mx-1\">${tagData[secondaryKey] || 'N/A'}</span>`\n          }\n        </div>\n      `\n    }\n\n    return {\n      initialize: function(autocompleteInput) {\n        const _this = this;\n\n        if (autocompleteInput.tagify) {\n          autocompleteInput.tagify.destroy();\n          autocompleteInput.tagify = null;\n        }\n\n        this.tagify = new Tagify(autocompleteInput, {\n          tagTextProp: primaryKey,\n          enforceWhitelist: true,\n          skipInvalid: true,\n          dropdown: {\n            closeOnSelect: closeOnSelect,\n            enabled: 1,\n            maxItems: maxItems,\n            searchKeys: [primaryKey, secondaryKey]\n          },\n          templates: {\n            dropdownItem: dropdownItemTemplate\n          },\n          whitelist: selectedTags,\n          mode: mode\n        });\n\n        this.tagify.addTags(selectedTags);\n        this.tagify.on('input', _.debounce(this.onInput.bind(this), 300));\n\n        if (fetchOnFocus) {\n          this.tagify.on('focus', () => {\n            if (this.tagify.settings.whitelist.length <= selectedTags.length) {\n              this.onInput({ detail: { value: '' } });\n            } else {\n              this.tagify.dropdown.show.call(this.tagify);\n            }\n          });\n        }\n\n        let isInitializing = true;\n\n        const submitForm = () => {\n          const form = autocompleteInput.closest('form');\n          if (form && form.id === 'searchForm') {\n            form.requestSubmit();\n          }\n        };\n\n        this.tagify.on('add', function(e) {\n          if (!isInitializing) {\n            const addedTag = e.detail.data;\n            if (addedTag && !addedTag.id && addedTag.value) {\n              addedTag.id = addedTag.value;\n            }\n            setTimeout(() => submitForm(), 200);\n          }\n        });\n\n        this.tagify.on('remove', submitForm);\n\n        if (pasteLookup) {\n          this.tagify.DOM.input.addEventListener('paste', this.onPaste.bind(this));\n        }\n\n        setTimeout(() => { isInitializing = false; }, 200);\n      },\n      tagify: null,\n      selectedTags,\n      selectedClause,\n      multipleClauses,\n      mode,\n      closeOnSelect,\n      pasteLookup,\n      clauseQuery: function(objectName, name) {\n        if (this.mode === 'select') {\n          return `${objectName}[${name}]`;\n        } else if (this.multipleClauses) {\n          return `${objectName}[${name}_${this.selectedClause}][]`;\n        } else {\n          return `${objectName}[${name}][]`;\n        }\n      },\n      onInput: function(e) {\n        let tagify = this.tagify;\n\n        tagify.loading(true);\n\n        let formattedUrl = url.replace('{value}', e.detail.value);\n\n        fetch(formattedUrl, { method: 'GET' })\n          .then(response => response.json())\n          .then(whitelist => {\n            if (resultKey) { whitelist = whitelist[resultKey] }\n\n            tagify.settings.whitelist = [...normalize(whitelist), ...tagify.value];\n            tagify.loading(false).dropdown.show.call(tagify, e.detail.value);\n          });\n      },\n      onPaste: async function(e) {\n        const clipboardText = (e.clipboardData || window.clipboardData)?.getData('text') || '';\n        const values = this.parsePastedValues(clipboardText);\n\n        if (!values.length) return;\n\n        e.preventDefault();\n        await this.addPastedValues(values);\n      },\n      parsePastedValues: function(text) {\n        return [...new Set(\n          text\n            .split(/[\\n\\r,;\\t]+/)\n            .map(value => value.trim())\n            .filter(Boolean)\n        )];\n      },\n      addPastedValues: async function(values) {\n        const matches = await Promise.all(values.map(value => this.fetchExactMatch(value)));\n        const tagsToAdd = matches.filter(Boolean);\n\n        if (!tagsToAdd.length) return;\n\n        const existingIds = new Set(this.tagify.value.map(tag => String(tag.id ?? tag.value)));\n        const uniqueTagsToAdd = tagsToAdd.filter(tag => !existingIds.has(String(tag.id ?? tag.value)));\n\n        if (!uniqueTagsToAdd.length) return;\n\n        this.tagify.settings.whitelist = [...this.tagify.settings.whitelist, ...uniqueTagsToAdd];\n        this.tagify.addTags(uniqueTagsToAdd);\n      },\n      fetchExactMatch: async function(value) {\n        const formattedUrl = url.replace('{value}', encodeURIComponent(value));\n\n        try {\n          const response = await fetch(formattedUrl, { method: 'GET' });\n          if (!response.ok) return null;\n\n          let whitelist = await response.json();\n          if (resultKey) whitelist = whitelist[resultKey];\n\n          const normalized = normalize(Array.isArray(whitelist) ? whitelist : []);\n          const downcasedValue = value.toLowerCase();\n\n          return normalized.find(entry => {\n            const primary = String(entry?.[primaryKey] || '').trim().toLowerCase();\n            const id = String(entry?.id || '').trim().toLowerCase();\n\n            return primary === downcasedValue || id === downcasedValue;\n          }) || null;\n        } catch (_error) {\n          return null;\n        }\n      }\n    }\n  }\n\n  if (typeof window !== \"undefined\") {\n    window.selectAutocompleteApp = selectAutocompleteApp;\n  }\n\n  return selectAutocompleteApp;\n})();\n", "(function () {\n  const submissionApp = function ({ agreement, productsCount, orderId, preSubmissionChecksPath }) {\n    return {\n      agreement,\n      productsCount,\n      filesReadyCount: 0,\n      aiPreSubmissionToken: null,\n      aiReviewAvailable: null,\n      reviewStarted: false,\n\n      updateReadyCount({ readyCount }) {\n        if (readyCount === -1 && this.filesReadyCount <= 0) {\n          this.filesReadyCount = 0\n        } else {\n          this.filesReadyCount += readyCount\n        }\n      },\n\n      async runAiPreCheck(file, product) {\n        this.aiPreSubmissionToken = null\n        this.aiReviewAvailable = product.run_ai_review_to_vendor\n        if (!file || file.type !== 'text/xml' || !this.aiReviewAvailable) return\n\n        const formData = new FormData()\n        formData.append('file', file)\n        formData.append('order_id', orderId)\n        formData.append('product_id', product.id)\n        formData.append('authenticity_token', document.querySelector('meta[name=csrf-token]').content)\n\n        const response = await fetch(preSubmissionChecksPath, { method: 'POST', body: formData })\n        const data = await response.json()\n\n        this.aiPreSubmissionToken = data.token\n      }\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.submissionApp = submissionApp\n  }\n\n  return submissionApp\n})()\n", "(function () {\n  const switchButton = function (initialValue, options = {}) {\n    return {\n      currentValue: initialValue,\n      dynamicLabel: '',\n      config: {\n        url: options.url,\n        on: {\n          value: options.on_value || 'true',\n          class: options.on_class || 'bg-brand-500'\n        },\n        off: {\n          value: options.off_value || 'false',\n          class: options.off_class || 'bg-gray-500'\n        }\n      },\n      disabled: options.disabled || false,\n      toggle: function (dispatch) {\n        if (this.disabled) return;\n\n        this.currentValue = this.isEnabled() ? this.config.off.value : this.config.on.value;\n        this.setDynamicLabel();\n\n        if (this.config.url) {\n          const body = JSON.stringify({ value: this.currentValue });\n\n          new FetchRequest('patch', this.config.url, {\n            body,\n            responseKind: 'turbo-stream'\n          }).perform();\n        }\n\n        dispatch('switch-button--toggled', { enabled: this.isEnabled(), name: options.name })\n      },\n      isEnabled: function () {\n        return this.currentValue === this.config.on.value\n      },\n      isDisabled: function () {\n        return !this.isEnabled();\n      },\n      bgClass: function() {\n        return {\n          [this.config.off.class]: this.isDisabled(),\n          [this.config.on.class]: this.isEnabled()\n        };\n      },\n      positionClass: function() {\n        return {\n          'switch-button__switcher--disabled': this.isDisabled(),\n          'switch-button__switcher--enabled': this.isEnabled()\n        }\n      },\n      setDynamicLabel: function () {\n        if (this.currentValue === this.config.on.value) {\n          this.dynamicLabel = options.on_label;\n        } else {\n          this.dynamicLabel = options.off_label;\n        }\n      },\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.switchButton = switchButton;\n  }\n\n  return switchButton;\n})();\n", "(function () {\n  const tabApp = function () {\n    return {\n      loading: false,\n      selected: null,\n      subSelected: null,\n      select: function (value, subValue = null, event = null) {\n        if (this.selected === value && event !== null) event.preventDefault()\n\n        if (this.selected !== value) this.loading = true\n\n        this.subSelected = subValue\n        this.selected = value;\n\n        if (subValue !== null) {\n          setTimeout(() => document.getElementById(`${subValue}-anchor`).scrollIntoView({ behavior: 'smooth' }), 400)\n\n          return\n        }\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.tabApp = tabApp;\n  }\n\n  return tabApp;\n})();\n", "(function () {\n  const tableFormApp = function (records) {\n    return {\n      records: records,\n      addNewRow(index) {\n        if (index !== this.records.length - 1) { return }\n\n        this.records.push({});\n      }\n    };\n  };\n\n  if (typeof window !== 'undefined') window.tableFormApp = tableFormApp;\n\n  return tableFormApp;\n})();\n", "(function () {\n  const tabsApp = function (defaultSelected) {\n    return {\n      selected: defaultSelected,\n      select: function (tab) { this.selected = tab },\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.tabsApp = tabsApp;\n  }\n\n  return tabsApp;\n})();\n", ";(function () {\n  const tagsInputApp = function (\n    currentTags,\n    availableTags,\n    sort = true,\n    options = {}\n  ) {\n    return {\n      tagify: null,\n      initialize: function (\n        inputElement,\n        enforce = true,\n        plugins = [],\n        $dispatch = null,\n        draggable = false\n      ) {\n        const __this = this\n\n        if (this.tagify) {\n          this.tagify.destroy()\n          this.tagify = null\n        }\n\n        const normalizeTag = (tag) => {\n          if (typeof tag === 'object' && tag !== null) {\n            return {\n              ...tag,\n              value: String(tag.id ?? tag.value ?? ''),\n              name: tag.name ?? tag.value ?? String(tag.id ?? ''),\n            }\n          }\n\n          return {\n            value: String(tag),\n            name: String(tag),\n          }\n        }\n\n        const normalizedAvailable = availableTags.map(normalizeTag)\n        const normalizedCurrent = currentTags.map(normalizeTag)\n\n        this.tagify = new Tagify(inputElement, {\n          whitelist: sort ? this.sortedTags(normalizedAvailable) : normalizedAvailable,\n          tagTextProp: options.tagTextProp || 'name',\n          enforceWhitelist: enforce,\n          pattern: options.pattern,\n          validate: (tagData) => {\n            if (options.pattern) {\n              const regexPattern = new RegExp(options.pattern)\n              return regexPattern.test(tagData.value)\n            }\n            return true\n          },\n          dropdown: {\n            maxItems: 999,\n            classname: options.dropdownClassname || 'tags-look',\n            enabled: 0,\n            closeOnSelect: false,\n            searchKeys: ['name'],\n          },\n          templates: {\n            dropdownItem: function (tagData) {\n              return `<div ${this.getAttributes(tagData)} class=\"${this.settings.classNames.dropdownItem}\" tabindex=\"0\" role=\"option\">\n                ${tagData.name ?? tagData.value}\n              </div>`\n            },\n            dropdownHeader: function () {\n              return `<header data-selector=\"tagify-suggestions-header\" class=\"${\n                this.settings.classNames.dropdownItem\n              } header__item\">\n                ${options?.templating?.dropdownHeader || ''}\n              </header>`\n            },\n          },\n          ...options,\n        })\n\n        this.tagify.addTags(sort ? this.sortedTags(normalizedCurrent) : normalizedCurrent)\n        this.tagify.on('dropdown:select', (e) => {\n          if (e.detail.elm.dataset.selector === 'tagify-suggestions-header') {\n            setTimeout(() => this.tagify.dropdown.hide(), 100)\n          }\n        })\n\n        this.tagify.DOM.scope.addEventListener('mousedown', (e) => {\n          if (e.target.closest('.tagify__tag')) return;\n\n          e.preventDefault();\n          this.tagify.DOM.input.focus();\n        });\n\n        if (draggable) {\n          function onDragEnd(_element) {\n            const t = new Tagify(inputElement);\n            t.updateValueByDOMTags();\n          }\n\n          new DragSort(this.tagify.DOM.scope, {\n            selector: '.' + this.tagify.settings.classNames.tag,\n            callbacks: { dragEnd: onDragEnd },\n          })\n        }\n\n        plugins.forEach((plugin) => plugin(this.tagify, $dispatch))\n      },\n      sortedTags: function (tags) {\n        if (typeof tags[0] === 'object') {\n          return tags.sort((a, b) => {\n            const aLabel = (a.name ?? a.value ?? '').toString()\n            const bLabel = (b.name ?? b.value ?? '').toString()\n            return aLabel.localeCompare(bLabel)\n          })\n        } else {\n          return tags.sort()\n        }\n      },\n      selectedTags: currentTags,\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.tagsInputApp = tagsInputApp\n  }\n\n  return tagsInputApp\n})()\n", ";(function () {\n  const paymentLinkEmailsApp = function () {\n    return {\n      addSuggestedEmail: function (email) {\n        let toInput = document.querySelector('input#payment_link_template_to')\n\n        if (!toInput) {\n          toInput = document.querySelector('input[name=\"payment_link_template[to]\"]')\n        }\n\n        if (!toInput) {\n          toInput = document.querySelector('.form-input[placeholder*=\"Start typing\"]')\n        }\n\n        if (!toInput) {\n          const inputs = document.querySelectorAll('input[type=\"text\"]')\n          toInput = inputs[inputs.length - 1] // Get the last text input\n        }\n\n        if (toInput && toInput.__tagifyInstance) {\n          const currentTags = toInput.__tagifyInstance.value || []\n\n          if (!currentTags.find((tag) => tag.id === email)) {\n            toInput.__tagifyInstance.addTags([{ id: email, value: email }])\n          }\n        }\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.paymentLinkEmailsApp = paymentLinkEmailsApp\n  }\n\n  return paymentLinkEmailsApp\n})()\n", "(function () {\n  const userMenuApp = function () {\n    return {\n      searchBarOpened: false,\n      searchLoading: false,\n      openSearchBar: function (refs) {\n        this.searchBarOpened = true;\n\n        setTimeout(function () {\n          refs.searchField.focus();\n        }, 100)\n      },\n      dismissSearchBar: function() {\n        this.searchBarOpened = false;\n      },\n      searchStarted: function() {\n        this.searchLoading = true;\n      },\n      searchEnded: function() {\n        this.searchLoading = false;\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.userMenuApp = userMenuApp;\n  }\n\n  return userMenuApp;\n})();\n", "(function () {\n  const vendorLicenseApp = function (license) {\n    return {\n      filled: license.number?.length,\n      selectedLicense: {\n        firstName: license.first_name ?? license.FirstName,\n        lastName: license.last_name ?? license.LastName,\n        licenseType: license.license_type ?? license.AppraiserLicenseType,\n        expiresAt: license.expires_at ?? license.ExpiresAt,\n        yearCertified: license.year_certified ?? license.YearCertified\n      },\n      loading: false,\n      error: '',\n      fetchLicense: function(stateInput, licenseNumberInput) {\n        let __this = this;\n        let state = stateInput.options[stateInput.selectedIndex].dataset.abbreviation;\n        let licenseNumber = licenseNumberInput.value;\n        let uri = `/asc_licenses/${state}/${licenseNumber}`;\n\n        this.loading = true;\n        this.error = '';\n        this.selectedLicense = { state, licenseNumber };\n\n        return fetch(uri)\n          .then(response => response.json())\n          .then(result => {\n            __this.filled = true;\n\n            __this.selectedLicense = {\n              ...__this.selectedLicense,\n              licenseType: result.license_type,\n              firstName: result.first_name,\n              lastName: result.last_name,\n              expiresAt: result.expiration_date,\n              yearCertified: new Date(result.issue_date).getFullYear()\n            };\n\n            setTimeout(() => {\n              const dateInput = document.querySelector('[x-model=\"vendorLicenseApp.selectedLicense.expiresAt\"]');\n\n              if (dateInput && dateInput._flatpickr && result.expiration_date) {\n                dateInput._flatpickr.setDate(result.expiration_date, true);\n              }\n            }, 100);\n          })\n          .catch(error => {\n            __this.filled = false;\n            __this.error = \"Couldn't find a license for this state and number\";\n          })\n          .finally(() => { __this.loading = false });\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.vendorLicenseApp = vendorLicenseApp;\n  }\n\n  return vendorLicenseApp;\n})();\n", ";(function () {\n  const vendorProductFeeTableApp = function (vendorId, productFeeTableId) {\n    return {\n      updatedProducts: {},\n      handleSubmit: function () {\n        const params = this.formatUpdatedProductsToParams()\n        const body = { product_fee_table: { product_fees_attributes: params } }\n        const path = `/paying/vendors/${vendorId}/product_fee_tables/${productFeeTableId}`\n\n        new FetchRequest('patch', path, {\n          body,\n          responseKind: 'turbo-stream',\n        }).perform()\n      },\n      formatUpdatedProductsToParams: function () {\n        return Object.values(this.updatedProducts).map((product) => {\n          const vendorFee = parseFloat(product.vendorFee)\n\n          return {\n            id: product.productFeeId,\n            product_id: product.productId,\n            vendor_fee: vendorFee,\n            _destroy: vendorFee === 0,\n          }\n        })\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.vendorProductFeeTableApp = vendorProductFeeTableApp\n  }\n\n  return vendorProductFeeTableApp\n})()\n", ";(function () {\n  const vendorAutoAssignConfigApp = function (vendorId, currentProductIds) {\n    const productIds = [...currentProductIds]\n\n    return {\n      productIds,\n      handleCheck: function (el) {\n        const productId = el.value\n        let __this = this\n\n        if (el.checked) {\n          __this.productIds = [...__this.productIds, productId]\n        } else {\n          __this.productIds = __this.productIds.filter((id) => id !== productId)\n        }\n      },\n      handleSubmit: function () {\n        const body = {\n          auto_assign_config: { auto_accept_product_ids: this.productIds },\n        }\n        const path = `/ordering/vendors/${vendorId}/auto_assign_config`\n\n        new FetchRequest('patch', path, {\n          body,\n          responseKind: 'turbo-stream',\n        }).perform()\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.vendorAutoAssignConfigApp = vendorAutoAssignConfigApp\n  }\n\n  return vendorAutoAssignConfigApp\n})()\n", "(function () {\n  const autocomplete = () => {\n    return {\n      showResults: false,\n      selected: null,\n      vendorScope: 'all',\n      params: null,\n      total: 0,\n      vendors: [],\n      vendorNotes: [],\n      showVendorNotes: false,\n      loading: false,\n      searchLoading: false,\n      selectResult: function (resultId, input) {\n        input.value = resultId;\n        this.selected = resultId;\n      },\n      getUri: function (value = '', order_id = '') {\n        let uri = '/ordering/vendors.json?q[name_cont]=' + value +\n                  '&order_id=' + order_id;\n\n        if (this.vendorScope) {\n          uri += '&strategy=' + this.vendorScope;\n        }\n\n        if (this.params) {\n          uri += '&params=' + this.params;\n        }\n\n        return uri;\n      },\n      fetchResults: function (query, order_id) {\n        let __this = this;\n\n        this.showResults = true;\n\n        return fetch(this.getUri(query, order_id))\n          .then(response => response.json())\n          .then(result => {\n            __this.vendors = result.vendors;\n            __this.total = result.pagination.total;\n          });\n      },\n      fetchVendorNotes: function (vendorId, serviceType = null) {\n        let __this = this;\n        let uri = '/ordering/vendors/' + vendorId + '/notes.json';\n\n        if (serviceType) { uri = uri + '?service_type=' + serviceType };\n\n        return fetch(uri)\n          .then(response => response.json())\n          .then(result => {\n            __this.vendorNotes = result.vendor_notes;\n\n            __this.showVendorNotes = (__this.vendorNotes.length > 0);\n          })\n      }\n    };\n  };\n\n  if (typeof window !== \"undefined\") {\n    window.vendorsAutocompleteApp = autocomplete;\n  }\n\n  return vendorsAutocompleteApp;\n})();\n", "(function () {\n  const vendorPanelFilter = (text, active) => {\n    return {\n      text: text,\n      open: false,\n      active: active,\n      openOrActive: function () {\n        return this.open || this.active;\n      },\n      toggleOpen: function () {\n        this.open = !this.open;\n      },\n      clear: function (fields) {\n        this.open = false;\n        this.active = false;\n        this.text = 'Filter';\n\n        fields.forEach((field) => {\n          return (field.value = '');\n        });\n      },\n      fillSelect: function (field, { value, url, blank }) {\n        return fetch(url + value)\n          .then((response) => response.text())\n          .then((html) => {\n            field.innerHTML =\n              `<option value=\"\">${blank}</option>` +\n              html.replace('<option value=\"\"></option>', '');\n          });\n      },\n    };\n  };\n\n  if (typeof window !== 'undefined') {\n    window.vendorPanelFilter = vendorPanelFilter;\n  }\n\n  return vendorPanelFilter;\n})();\n", "import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n", "import Chart from 'chart.js/auto'\n;(function () {\n  const vendorStatisticsApp = (vendor_id) => {\n    function drawChart(data) {\n      return new Chart(document.getElementById('profileStatistics'), {\n        type: 'bar',\n        data: {\n          labels: [''],\n          datasets: data.statistics.map((item) => {\n            return {\n              label: item.label,\n              data: [item.value],\n              backgroundColor: item.color,\n              borderRadius: 8,\n              datalabels: {\n                formatter: function (value) {\n                  return `${value}%`\n                },\n                anchor: 'end',\n                align: 'top',\n                color: 'rgb(107, 114, 128)',\n              },\n            }\n          }),\n        },\n        plugins: [ChartDataLabels],\n        options: {\n          plugins: {\n            legend: {\n              position: 'bottom',\n              labels: {\n                usePointStyle: true,\n                boxHeight: 7,\n                pointStyle: 'circle',\n              },\n            },\n          },\n          scales: {\n            y: {\n              ticks: {\n                min: 0,\n                max: 125,\n                stepSize: 25,\n                callback: (value) => {\n                  return value + '%'\n                },\n              },\n              grid: {\n                drawBorder: false,\n                drawTicks: false,\n              },\n            },\n            x: {\n              grid: {\n                drawOnChartArea: false,\n                drawBorder: false,\n                drawTicks: false,\n              },\n            },\n          },\n        },\n      })\n    }\n    return {\n      chart: null,\n      totalAssignments: 0,\n      totalAccepted: 0,\n      loading: true,\n      getStatistics: function (startDate = null, endDate = null) {\n        let customRange = ''\n\n        this.loading = true\n\n        if (startDate && startDate !== '' && endDate && endDate !== '') {\n          customRange = `?start_date=${startDate}&end_date=${endDate}`\n        }\n\n        fetch(`/ordering/vendors/${vendor_id}/profile_statistics${customRange}`)\n          .then((response) => response.json())\n          .then((result) => {\n            if (this.chart != null) this.chart.destroy()\n            this.totalAssignments = result.total_assignments\n            this.totalAccepted = result.total_accepted\n            this.chart = drawChart(result)\n            this.loading = false\n          })\n          .catch(() => {\n            this.loading = false\n          })\n      },\n    }\n  }\n\n  if (typeof window !== 'undefined') {\n    window.vendorStatisticsApp = vendorStatisticsApp\n  }\n\n  return vendorStatisticsApp\n})()\n", "/*!\n * FilePond 4.32.10\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined'\n        ? factory(exports)\n        : typeof define === 'function' && define.amd\n        ? define(['exports'], factory)\n        : ((global = global || self), factory((global.FilePond = {})));\n})(this, function(exports) {\n    'use strict';\n\n    var isNode = function isNode(value) {\n        return value instanceof HTMLElement;\n    };\n\n    var createStore = function createStore(initialState) {\n        var queries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n        var actions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n        // internal state\n        var state = Object.assign({}, initialState);\n\n        // contains all actions for next frame, is clear when actions are requested\n        var actionQueue = [];\n        var dispatchQueue = [];\n\n        // returns a duplicate of the current state\n        var getState = function getState() {\n            return Object.assign({}, state);\n        };\n\n        // returns a duplicate of the actions array and clears the actions array\n        var processActionQueue = function processActionQueue() {\n            // create copy of actions queue\n            var queue = [].concat(actionQueue);\n\n            // clear actions queue (we don't want no double actions)\n            actionQueue.length = 0;\n\n            return queue;\n        };\n\n        // processes actions that might block the main UI thread\n        var processDispatchQueue = function processDispatchQueue() {\n            // create copy of actions queue\n            var queue = [].concat(dispatchQueue);\n\n            // clear actions queue (we don't want no double actions)\n            dispatchQueue.length = 0;\n\n            // now dispatch these actions\n            queue.forEach(function(_ref) {\n                var type = _ref.type,\n                    data = _ref.data;\n                dispatch(type, data);\n            });\n        };\n\n        // adds a new action, calls its handler and\n        var dispatch = function dispatch(type, data, isBlocking) {\n            // is blocking action (should never block if document is hidden)\n            if (isBlocking && !document.hidden) {\n                dispatchQueue.push({ type: type, data: data });\n                return;\n            }\n\n            // if this action has a handler, handle the action\n            if (actionHandlers[type]) {\n                actionHandlers[type](data);\n            }\n\n            // now add action\n            actionQueue.push({\n                type: type,\n                data: data,\n            });\n        };\n\n        var query = function query(str) {\n            var _queryHandles;\n            for (\n                var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n                _key < _len;\n                _key++\n            ) {\n                args[_key - 1] = arguments[_key];\n            }\n            return queryHandles[str]\n                ? (_queryHandles = queryHandles)[str].apply(_queryHandles, args)\n                : null;\n        };\n\n        var api = {\n            getState: getState,\n            processActionQueue: processActionQueue,\n            processDispatchQueue: processDispatchQueue,\n            dispatch: dispatch,\n            query: query,\n        };\n\n        var queryHandles = {};\n        queries.forEach(function(query) {\n            queryHandles = Object.assign({}, query(state), {}, queryHandles);\n        });\n\n        var actionHandlers = {};\n        actions.forEach(function(action) {\n            actionHandlers = Object.assign({}, action(dispatch, query, state), {}, actionHandlers);\n        });\n\n        return api;\n    };\n\n    var defineProperty = function defineProperty(obj, property, definition) {\n        if (typeof definition === 'function') {\n            obj[property] = definition;\n            return;\n        }\n        Object.defineProperty(obj, property, Object.assign({}, definition));\n    };\n\n    var forin = function forin(obj, cb) {\n        for (var key in obj) {\n            if (!obj.hasOwnProperty(key)) {\n                continue;\n            }\n\n            cb(key, obj[key]);\n        }\n    };\n\n    var createObject = function createObject(definition) {\n        var obj = {};\n        forin(definition, function(property) {\n            defineProperty(obj, property, definition[property]);\n        });\n        return obj;\n    };\n\n    var attr = function attr(node, name) {\n        var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        if (value === null) {\n            return node.getAttribute(name) || node.hasAttribute(name);\n        }\n        node.setAttribute(name, value);\n    };\n\n    var ns = 'http://www.w3.org/2000/svg';\n    var svgElements = ['svg', 'path']; // only svg elements used\n\n    var isSVGElement = function isSVGElement(tag) {\n        return svgElements.includes(tag);\n    };\n\n    var createElement = function createElement(tag, className) {\n        var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        if (typeof className === 'object') {\n            attributes = className;\n            className = null;\n        }\n        var element = isSVGElement(tag)\n            ? document.createElementNS(ns, tag)\n            : document.createElement(tag);\n        if (className) {\n            if (isSVGElement(tag)) {\n                attr(element, 'class', className);\n            } else {\n                element.className = className;\n            }\n        }\n        forin(attributes, function(name, value) {\n            attr(element, name, value);\n        });\n        return element;\n    };\n\n    var appendChild = function appendChild(parent) {\n        return function(child, index) {\n            if (typeof index !== 'undefined' && parent.children[index]) {\n                parent.insertBefore(child, parent.children[index]);\n            } else {\n                parent.appendChild(child);\n            }\n        };\n    };\n\n    var appendChildView = function appendChildView(parent, childViews) {\n        return function(view, index) {\n            if (typeof index !== 'undefined') {\n                childViews.splice(index, 0, view);\n            } else {\n                childViews.push(view);\n            }\n\n            return view;\n        };\n    };\n\n    var removeChildView = function removeChildView(parent, childViews) {\n        return function(view) {\n            // remove from child views\n            childViews.splice(childViews.indexOf(view), 1);\n\n            // remove the element\n            if (view.element.parentNode) {\n                parent.removeChild(view.element);\n            }\n\n            return view;\n        };\n    };\n\n    var IS_BROWSER = (function() {\n        return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n    })();\n    var isBrowser = function isBrowser() {\n        return IS_BROWSER;\n    };\n\n    var testElement = isBrowser() ? createElement('svg') : {};\n    var getChildCount =\n        'children' in testElement\n            ? function(el) {\n                  return el.children.length;\n              }\n            : function(el) {\n                  return el.childNodes.length;\n              };\n\n    var getViewRect = function getViewRect(elementRect, childViews, offset, scale) {\n        var left = offset[0] || elementRect.left;\n        var top = offset[1] || elementRect.top;\n        var right = left + elementRect.width;\n        var bottom = top + elementRect.height * (scale[1] || 1);\n\n        var rect = {\n            // the rectangle of the element itself\n            element: Object.assign({}, elementRect),\n\n            // the rectangle of the element expanded to contain its children, does not include any margins\n            inner: {\n                left: elementRect.left,\n                top: elementRect.top,\n                right: elementRect.right,\n                bottom: elementRect.bottom,\n            },\n\n            // the rectangle of the element expanded to contain its children including own margin and child margins\n            // margins will be added after we've recalculated the size\n            outer: {\n                left: left,\n                top: top,\n                right: right,\n                bottom: bottom,\n            },\n        };\n\n        // expand rect to fit all child rectangles\n        childViews\n            .filter(function(childView) {\n                return !childView.isRectIgnored();\n            })\n            .map(function(childView) {\n                return childView.rect;\n            })\n            .forEach(function(childViewRect) {\n                expandRect(rect.inner, Object.assign({}, childViewRect.inner));\n                expandRect(rect.outer, Object.assign({}, childViewRect.outer));\n            });\n\n        // calculate inner width and height\n        calculateRectSize(rect.inner);\n\n        // append additional margin (top and left margins are included in top and left automatically)\n        rect.outer.bottom += rect.element.marginBottom;\n        rect.outer.right += rect.element.marginRight;\n\n        // calculate outer width and height\n        calculateRectSize(rect.outer);\n\n        return rect;\n    };\n\n    var expandRect = function expandRect(parent, child) {\n        // adjust for parent offset\n        child.top += parent.top;\n        child.right += parent.left;\n        child.bottom += parent.top;\n        child.left += parent.left;\n\n        if (child.bottom > parent.bottom) {\n            parent.bottom = child.bottom;\n        }\n\n        if (child.right > parent.right) {\n            parent.right = child.right;\n        }\n    };\n\n    var calculateRectSize = function calculateRectSize(rect) {\n        rect.width = rect.right - rect.left;\n        rect.height = rect.bottom - rect.top;\n    };\n\n    var isNumber = function isNumber(value) {\n        return typeof value === 'number';\n    };\n\n    /**\n     * Determines if position is at destination\n     * @param position\n     * @param destination\n     * @param velocity\n     * @param errorMargin\n     * @returns {boolean}\n     */\n    var thereYet = function thereYet(position, destination, velocity) {\n        var errorMargin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.001;\n        return Math.abs(position - destination) < errorMargin && Math.abs(velocity) < errorMargin;\n    };\n\n    /**\n     * Spring animation\n     */\n    var spring =\n        // default options\n        function spring() // method definition\n        {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n                _ref$stiffness = _ref.stiffness,\n                stiffness = _ref$stiffness === void 0 ? 0.5 : _ref$stiffness,\n                _ref$damping = _ref.damping,\n                damping = _ref$damping === void 0 ? 0.75 : _ref$damping,\n                _ref$mass = _ref.mass,\n                mass = _ref$mass === void 0 ? 10 : _ref$mass;\n            var target = null;\n            var position = null;\n            var velocity = 0;\n            var resting = false;\n\n            // updates spring state\n            var interpolate = function interpolate(ts, skipToEndState) {\n                // in rest, don't animate\n                if (resting) return;\n\n                // need at least a target or position to do springy things\n                if (!(isNumber(target) && isNumber(position))) {\n                    resting = true;\n                    velocity = 0;\n                    return;\n                }\n\n                // calculate spring force\n                var f = -(position - target) * stiffness;\n\n                // update velocity by adding force based on mass\n                velocity += f / mass;\n\n                // update position by adding velocity\n                position += velocity;\n\n                // slow down based on amount of damping\n                velocity *= damping;\n\n                // we've arrived if we're near target and our velocity is near zero\n                if (thereYet(position, target, velocity) || skipToEndState) {\n                    position = target;\n                    velocity = 0;\n                    resting = true;\n\n                    // we done\n                    api.onupdate(position);\n                    api.oncomplete(position);\n                } else {\n                    // progress update\n                    api.onupdate(position);\n                }\n            };\n\n            /**\n             * Set new target value\n             * @param value\n             */\n            var setTarget = function setTarget(value) {\n                // if currently has no position, set target and position to this value\n                if (isNumber(value) && !isNumber(position)) {\n                    position = value;\n                }\n\n                // next target value will not be animated to\n                if (target === null) {\n                    target = value;\n                    position = value;\n                }\n\n                // let start moving to target\n                target = value;\n\n                // already at target\n                if (position === target || typeof target === 'undefined') {\n                    // now resting as target is current position, stop moving\n                    resting = true;\n                    velocity = 0;\n\n                    // done!\n                    api.onupdate(position);\n                    api.oncomplete(position);\n\n                    return;\n                }\n\n                resting = false;\n            };\n\n            // need 'api' to call onupdate callback\n            var api = createObject({\n                interpolate: interpolate,\n                target: {\n                    set: setTarget,\n                    get: function get() {\n                        return target;\n                    },\n                },\n\n                resting: {\n                    get: function get() {\n                        return resting;\n                    },\n                },\n\n                onupdate: function onupdate(value) {},\n                oncomplete: function oncomplete(value) {},\n            });\n\n            return api;\n        };\n\n    var easeLinear = function easeLinear(t) {\n        return t;\n    };\n    var easeInOutQuad = function easeInOutQuad(t) {\n        return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n    };\n\n    var tween =\n        // default values\n        function tween() // method definition\n        {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n                _ref$duration = _ref.duration,\n                duration = _ref$duration === void 0 ? 500 : _ref$duration,\n                _ref$easing = _ref.easing,\n                easing = _ref$easing === void 0 ? easeInOutQuad : _ref$easing,\n                _ref$delay = _ref.delay,\n                delay = _ref$delay === void 0 ? 0 : _ref$delay;\n            var start = null;\n            var t;\n            var p;\n            var resting = true;\n            var reverse = false;\n            var target = null;\n\n            var interpolate = function interpolate(ts, skipToEndState) {\n                if (resting || target === null) return;\n\n                if (start === null) {\n                    start = ts;\n                }\n\n                if (ts - start < delay) return;\n\n                t = ts - start - delay;\n\n                if (t >= duration || skipToEndState) {\n                    t = 1;\n                    p = reverse ? 0 : 1;\n                    api.onupdate(p * target);\n                    api.oncomplete(p * target);\n                    resting = true;\n                } else {\n                    p = t / duration;\n                    api.onupdate((t >= 0 ? easing(reverse ? 1 - p : p) : 0) * target);\n                }\n            };\n\n            // need 'api' to call onupdate callback\n            var api = createObject({\n                interpolate: interpolate,\n                target: {\n                    get: function get() {\n                        return reverse ? 0 : target;\n                    },\n                    set: function set(value) {\n                        // is initial value\n                        if (target === null) {\n                            target = value;\n                            api.onupdate(value);\n                            api.oncomplete(value);\n                            return;\n                        }\n\n                        // want to tween to a smaller value and have a current value\n                        if (value < target) {\n                            target = 1;\n                            reverse = true;\n                        } else {\n                            // not tweening to a smaller value\n                            reverse = false;\n                            target = value;\n                        }\n\n                        // let's go!\n                        resting = false;\n                        start = null;\n                    },\n                },\n\n                resting: {\n                    get: function get() {\n                        return resting;\n                    },\n                },\n\n                onupdate: function onupdate(value) {},\n                oncomplete: function oncomplete(value) {},\n            });\n\n            return api;\n        };\n\n    var animator = {\n        spring: spring,\n        tween: tween,\n    };\n\n    /*\n                       { type: 'spring', stiffness: .5, damping: .75, mass: 10 };\n                       { translation: { type: 'spring', ... }, ... }\n                       { translation: { x: { type: 'spring', ... } } }\n                      */\n    var createAnimator = function createAnimator(definition, category, property) {\n        // default is single definition\n        // we check if transform is set, if so, we check if property is set\n        var def =\n            definition[category] && typeof definition[category][property] === 'object'\n                ? definition[category][property]\n                : definition[category] || definition;\n\n        var type = typeof def === 'string' ? def : def.type;\n        var props = typeof def === 'object' ? Object.assign({}, def) : {};\n\n        return animator[type] ? animator[type](props) : null;\n    };\n\n    var addGetSet = function addGetSet(keys, obj, props) {\n        var overwrite = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n        obj = Array.isArray(obj) ? obj : [obj];\n        obj.forEach(function(o) {\n            keys.forEach(function(key) {\n                var name = key;\n                var getter = function getter() {\n                    return props[key];\n                };\n                var setter = function setter(value) {\n                    return (props[key] = value);\n                };\n\n                if (typeof key === 'object') {\n                    name = key.key;\n                    getter = key.getter || getter;\n                    setter = key.setter || setter;\n                }\n\n                if (o[name] && !overwrite) {\n                    return;\n                }\n\n                o[name] = {\n                    get: getter,\n                    set: setter,\n                };\n            });\n        });\n    };\n\n    // add to state,\n    // add getters and setters to internal and external api (if not set)\n    // setup animators\n\n    var animations = function animations(_ref) {\n        var mixinConfig = _ref.mixinConfig,\n            viewProps = _ref.viewProps,\n            viewInternalAPI = _ref.viewInternalAPI,\n            viewExternalAPI = _ref.viewExternalAPI;\n        // initial properties\n        var initialProps = Object.assign({}, viewProps);\n\n        // list of all active animations\n        var animations = [];\n\n        // setup animators\n        forin(mixinConfig, function(property, animation) {\n            var animator = createAnimator(animation);\n            if (!animator) {\n                return;\n            }\n\n            // when the animator updates, update the view state value\n            animator.onupdate = function(value) {\n                viewProps[property] = value;\n            };\n\n            // set animator target\n            animator.target = initialProps[property];\n\n            // when value is set, set the animator target value\n            var prop = {\n                key: property,\n                setter: function setter(value) {\n                    // if already at target, we done!\n                    if (animator.target === value) {\n                        return;\n                    }\n\n                    animator.target = value;\n                },\n                getter: function getter() {\n                    return viewProps[property];\n                },\n            };\n\n            // add getters and setters\n            addGetSet([prop], [viewInternalAPI, viewExternalAPI], viewProps, true);\n\n            // add it to the list for easy updating from the _write method\n            animations.push(animator);\n        });\n\n        // expose internal write api\n        return {\n            write: function write(ts) {\n                var skipToEndState = document.hidden;\n                var resting = true;\n                animations.forEach(function(animation) {\n                    if (!animation.resting) resting = false;\n                    animation.interpolate(ts, skipToEndState);\n                });\n                return resting;\n            },\n            destroy: function destroy() {},\n        };\n    };\n\n    var addEvent = function addEvent(element) {\n        return function(type, fn) {\n            element.addEventListener(type, fn);\n        };\n    };\n\n    var removeEvent = function removeEvent(element) {\n        return function(type, fn) {\n            element.removeEventListener(type, fn);\n        };\n    };\n\n    // mixin\n    var listeners = function listeners(_ref) {\n        var mixinConfig = _ref.mixinConfig,\n            viewProps = _ref.viewProps,\n            viewInternalAPI = _ref.viewInternalAPI,\n            viewExternalAPI = _ref.viewExternalAPI,\n            viewState = _ref.viewState,\n            view = _ref.view;\n        var events = [];\n\n        var add = addEvent(view.element);\n        var remove = removeEvent(view.element);\n\n        viewExternalAPI.on = function(type, fn) {\n            events.push({\n                type: type,\n                fn: fn,\n            });\n\n            add(type, fn);\n        };\n\n        viewExternalAPI.off = function(type, fn) {\n            events.splice(\n                events.findIndex(function(event) {\n                    return event.type === type && event.fn === fn;\n                }),\n                1\n            );\n\n            remove(type, fn);\n        };\n\n        return {\n            write: function write() {\n                // not busy\n                return true;\n            },\n            destroy: function destroy() {\n                events.forEach(function(event) {\n                    remove(event.type, event.fn);\n                });\n            },\n        };\n    };\n\n    // add to external api and link to props\n\n    var apis = function apis(_ref) {\n        var mixinConfig = _ref.mixinConfig,\n            viewProps = _ref.viewProps,\n            viewExternalAPI = _ref.viewExternalAPI;\n        addGetSet(mixinConfig, viewExternalAPI, viewProps);\n    };\n\n    var isDefined = function isDefined(value) {\n        return value != null;\n    };\n\n    // add to state,\n    // add getters and setters to internal and external api (if not set)\n    // set initial state based on props in viewProps\n    // apply as transforms each frame\n\n    var defaults = {\n        opacity: 1,\n        scaleX: 1,\n        scaleY: 1,\n        translateX: 0,\n        translateY: 0,\n        rotateX: 0,\n        rotateY: 0,\n        rotateZ: 0,\n        originX: 0,\n        originY: 0,\n    };\n\n    var styles = function styles(_ref) {\n        var mixinConfig = _ref.mixinConfig,\n            viewProps = _ref.viewProps,\n            viewInternalAPI = _ref.viewInternalAPI,\n            viewExternalAPI = _ref.viewExternalAPI,\n            view = _ref.view;\n        // initial props\n        var initialProps = Object.assign({}, viewProps);\n\n        // current props\n        var currentProps = {};\n\n        // we will add those properties to the external API and link them to the viewState\n        addGetSet(mixinConfig, [viewInternalAPI, viewExternalAPI], viewProps);\n\n        // override rect on internal and external rect getter so it takes in account transforms\n        var getOffset = function getOffset() {\n            return [viewProps['translateX'] || 0, viewProps['translateY'] || 0];\n        };\n\n        var getScale = function getScale() {\n            return [viewProps['scaleX'] || 0, viewProps['scaleY'] || 0];\n        };\n        var getRect = function getRect() {\n            return view.rect\n                ? getViewRect(view.rect, view.childViews, getOffset(), getScale())\n                : null;\n        };\n        viewInternalAPI.rect = { get: getRect };\n        viewExternalAPI.rect = { get: getRect };\n\n        // apply view props\n        mixinConfig.forEach(function(key) {\n            viewProps[key] =\n                typeof initialProps[key] === 'undefined' ? defaults[key] : initialProps[key];\n        });\n\n        // expose api\n        return {\n            write: function write() {\n                // see if props have changed\n                if (!propsHaveChanged(currentProps, viewProps)) {\n                    return;\n                }\n\n                // moves element to correct position on screen\n                applyStyles(view.element, viewProps);\n\n                // store new transforms\n                Object.assign(currentProps, Object.assign({}, viewProps));\n\n                // no longer busy\n                return true;\n            },\n            destroy: function destroy() {},\n        };\n    };\n\n    var propsHaveChanged = function propsHaveChanged(currentProps, newProps) {\n        // different amount of keys\n        if (Object.keys(currentProps).length !== Object.keys(newProps).length) {\n            return true;\n        }\n\n        // lets analyze the individual props\n        for (var prop in newProps) {\n            if (newProps[prop] !== currentProps[prop]) {\n                return true;\n            }\n        }\n\n        return false;\n    };\n\n    var applyStyles = function applyStyles(element, _ref2) {\n        var opacity = _ref2.opacity,\n            perspective = _ref2.perspective,\n            translateX = _ref2.translateX,\n            translateY = _ref2.translateY,\n            scaleX = _ref2.scaleX,\n            scaleY = _ref2.scaleY,\n            rotateX = _ref2.rotateX,\n            rotateY = _ref2.rotateY,\n            rotateZ = _ref2.rotateZ,\n            originX = _ref2.originX,\n            originY = _ref2.originY,\n            width = _ref2.width,\n            height = _ref2.height;\n\n        var transforms = '';\n        var styles = '';\n\n        // handle transform origin\n        if (isDefined(originX) || isDefined(originY)) {\n            styles += 'transform-origin: ' + (originX || 0) + 'px ' + (originY || 0) + 'px;';\n        }\n\n        // transform order is relevant\n        // 0. perspective\n        if (isDefined(perspective)) {\n            transforms += 'perspective(' + perspective + 'px) ';\n        }\n\n        // 1. translate\n        if (isDefined(translateX) || isDefined(translateY)) {\n            transforms +=\n                'translate3d(' + (translateX || 0) + 'px, ' + (translateY || 0) + 'px, 0) ';\n        }\n\n        // 2. scale\n        if (isDefined(scaleX) || isDefined(scaleY)) {\n            transforms +=\n                'scale3d(' +\n                (isDefined(scaleX) ? scaleX : 1) +\n                ', ' +\n                (isDefined(scaleY) ? scaleY : 1) +\n                ', 1) ';\n        }\n\n        // 3. rotate\n        if (isDefined(rotateZ)) {\n            transforms += 'rotateZ(' + rotateZ + 'rad) ';\n        }\n\n        if (isDefined(rotateX)) {\n            transforms += 'rotateX(' + rotateX + 'rad) ';\n        }\n\n        if (isDefined(rotateY)) {\n            transforms += 'rotateY(' + rotateY + 'rad) ';\n        }\n\n        // add transforms\n        if (transforms.length) {\n            styles += 'transform:' + transforms + ';';\n        }\n\n        // add opacity\n        if (isDefined(opacity)) {\n            styles += 'opacity:' + opacity + ';';\n\n            // if we reach zero, we make the element inaccessible\n            if (opacity === 0) {\n                styles += 'visibility:hidden;';\n            }\n\n            // if we're below 100% opacity this element can't be clicked\n            if (opacity < 1) {\n                styles += 'pointer-events:none;';\n            }\n        }\n\n        // add height\n        if (isDefined(height)) {\n            styles += 'height:' + height + 'px;';\n        }\n\n        // add width\n        if (isDefined(width)) {\n            styles += 'width:' + width + 'px;';\n        }\n\n        // apply styles\n        var elementCurrentStyle = element.elementCurrentStyle || '';\n\n        // if new styles does not match current styles, lets update!\n        if (styles.length !== elementCurrentStyle.length || styles !== elementCurrentStyle) {\n            element.style.cssText = styles;\n            // store current styles so we can compare them to new styles later on\n            // _not_ getting the style value is faster\n            element.elementCurrentStyle = styles;\n        }\n    };\n\n    var Mixins = {\n        styles: styles,\n        listeners: listeners,\n        animations: animations,\n        apis: apis,\n    };\n\n    var updateRect = function updateRect() {\n        var rect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n        if (!element.layoutCalculated) {\n            rect.paddingTop = parseInt(style.paddingTop, 10) || 0;\n            rect.marginTop = parseInt(style.marginTop, 10) || 0;\n            rect.marginRight = parseInt(style.marginRight, 10) || 0;\n            rect.marginBottom = parseInt(style.marginBottom, 10) || 0;\n            rect.marginLeft = parseInt(style.marginLeft, 10) || 0;\n            element.layoutCalculated = true;\n        }\n\n        rect.left = element.offsetLeft || 0;\n        rect.top = element.offsetTop || 0;\n        rect.width = element.offsetWidth || 0;\n        rect.height = element.offsetHeight || 0;\n\n        rect.right = rect.left + rect.width;\n        rect.bottom = rect.top + rect.height;\n\n        rect.scrollTop = element.scrollTop;\n\n        rect.hidden = element.offsetParent === null;\n\n        return rect;\n    };\n\n    var createView =\n        // default view definition\n        function createView() {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n                _ref$tag = _ref.tag,\n                tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n                _ref$name = _ref.name,\n                name = _ref$name === void 0 ? null : _ref$name,\n                _ref$attributes = _ref.attributes,\n                attributes = _ref$attributes === void 0 ? {} : _ref$attributes,\n                _ref$read = _ref.read,\n                read = _ref$read === void 0 ? function() {} : _ref$read,\n                _ref$write = _ref.write,\n                write = _ref$write === void 0 ? function() {} : _ref$write,\n                _ref$create = _ref.create,\n                create = _ref$create === void 0 ? function() {} : _ref$create,\n                _ref$destroy = _ref.destroy,\n                destroy = _ref$destroy === void 0 ? function() {} : _ref$destroy,\n                _ref$filterFrameActio = _ref.filterFrameActionsForChild,\n                filterFrameActionsForChild =\n                    _ref$filterFrameActio === void 0\n                        ? function(child, actions) {\n                              return actions;\n                          }\n                        : _ref$filterFrameActio,\n                _ref$didCreateView = _ref.didCreateView,\n                didCreateView = _ref$didCreateView === void 0 ? function() {} : _ref$didCreateView,\n                _ref$didWriteView = _ref.didWriteView,\n                didWriteView = _ref$didWriteView === void 0 ? function() {} : _ref$didWriteView,\n                _ref$ignoreRect = _ref.ignoreRect,\n                ignoreRect = _ref$ignoreRect === void 0 ? false : _ref$ignoreRect,\n                _ref$ignoreRectUpdate = _ref.ignoreRectUpdate,\n                ignoreRectUpdate = _ref$ignoreRectUpdate === void 0 ? false : _ref$ignoreRectUpdate,\n                _ref$mixins = _ref.mixins,\n                mixins = _ref$mixins === void 0 ? [] : _ref$mixins;\n            return function(\n                // each view requires reference to store\n                store\n            ) {\n                var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n                // root element should not be changed\n                var element = createElement(tag, 'filepond--' + name, attributes);\n\n                // style reference should also not be changed\n                var style = window.getComputedStyle(element, null);\n\n                // element rectangle\n                var rect = updateRect();\n                var frameRect = null;\n\n                // rest state\n                var isResting = false;\n\n                // pretty self explanatory\n                var childViews = [];\n\n                // loaded mixins\n                var activeMixins = [];\n\n                // references to created children\n                var ref = {};\n\n                // state used for each instance\n                var state = {};\n\n                // list of writers that will be called to update this view\n                var writers = [\n                    write, // default writer\n                ];\n\n                var readers = [\n                    read, // default reader\n                ];\n\n                var destroyers = [\n                    destroy, // default destroy\n                ];\n\n                // core view methods\n                var getElement = function getElement() {\n                    return element;\n                };\n                var getChildViews = function getChildViews() {\n                    return childViews.concat();\n                };\n                var getReference = function getReference() {\n                    return ref;\n                };\n                var createChildView = function createChildView(store) {\n                    return function(view, props) {\n                        return view(store, props);\n                    };\n                };\n                var getRect = function getRect() {\n                    if (frameRect) {\n                        return frameRect;\n                    }\n                    frameRect = getViewRect(rect, childViews, [0, 0], [1, 1]);\n                    return frameRect;\n                };\n                var getStyle = function getStyle() {\n                    return style;\n                };\n\n                /**\n                 * Read data from DOM\n                 * @private\n                 */\n                var _read = function _read() {\n                    frameRect = null;\n\n                    // read child views\n                    childViews.forEach(function(child) {\n                        return child._read();\n                    });\n\n                    var shouldUpdate = !(ignoreRectUpdate && rect.width && rect.height);\n                    if (shouldUpdate) {\n                        updateRect(rect, element, style);\n                    }\n\n                    // readers\n                    var api = { root: internalAPI, props: props, rect: rect };\n                    readers.forEach(function(reader) {\n                        return reader(api);\n                    });\n                };\n\n                /**\n                 * Write data to DOM\n                 * @private\n                 */\n                var _write = function _write(ts, frameActions, shouldOptimize) {\n                    // if no actions, we assume that the view is resting\n                    var resting = frameActions.length === 0;\n\n                    // writers\n                    writers.forEach(function(writer) {\n                        var writerResting = writer({\n                            props: props,\n                            root: internalAPI,\n                            actions: frameActions,\n                            timestamp: ts,\n                            shouldOptimize: shouldOptimize,\n                        });\n\n                        if (writerResting === false) {\n                            resting = false;\n                        }\n                    });\n\n                    // run mixins\n                    activeMixins.forEach(function(mixin) {\n                        // if one of the mixins is still busy after write operation, we are not resting\n                        var mixinResting = mixin.write(ts);\n                        if (mixinResting === false) {\n                            resting = false;\n                        }\n                    });\n\n                    // updates child views that are currently attached to the DOM\n                    childViews\n                        .filter(function(child) {\n                            return !!child.element.parentNode;\n                        })\n                        .forEach(function(child) {\n                            // if a child view is not resting, we are not resting\n                            var childResting = child._write(\n                                ts,\n                                filterFrameActionsForChild(child, frameActions),\n                                shouldOptimize\n                            );\n\n                            if (!childResting) {\n                                resting = false;\n                            }\n                        });\n\n                    // append new elements to DOM and update those\n                    childViews\n                        //.filter(child => !child.element.parentNode)\n                        .forEach(function(child, index) {\n                            // skip\n                            if (child.element.parentNode) {\n                                return;\n                            }\n\n                            // append to DOM\n                            internalAPI.appendChild(child.element, index);\n\n                            // call read (need to know the size of these elements)\n                            child._read();\n\n                            // re-call write\n                            child._write(\n                                ts,\n                                filterFrameActionsForChild(child, frameActions),\n                                shouldOptimize\n                            );\n\n                            // we just added somthing to the dom, no rest\n                            resting = false;\n                        });\n\n                    // update resting state\n                    isResting = resting;\n\n                    didWriteView({\n                        props: props,\n                        root: internalAPI,\n                        actions: frameActions,\n                        timestamp: ts,\n                    });\n\n                    // let parent know if we are resting\n                    return resting;\n                };\n\n                var _destroy = function _destroy() {\n                    activeMixins.forEach(function(mixin) {\n                        return mixin.destroy();\n                    });\n                    destroyers.forEach(function(destroyer) {\n                        destroyer({ root: internalAPI, props: props });\n                    });\n                    childViews.forEach(function(child) {\n                        return child._destroy();\n                    });\n                };\n\n                // sharedAPI\n                var sharedAPIDefinition = {\n                    element: {\n                        get: getElement,\n                    },\n\n                    style: {\n                        get: getStyle,\n                    },\n\n                    childViews: {\n                        get: getChildViews,\n                    },\n                };\n\n                // private API definition\n                var internalAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n                    rect: {\n                        get: getRect,\n                    },\n\n                    // access to custom children references\n                    ref: {\n                        get: getReference,\n                    },\n\n                    // dom modifiers\n                    is: function is(needle) {\n                        return name === needle;\n                    },\n                    appendChild: appendChild(element),\n                    createChildView: createChildView(store),\n                    linkView: function linkView(view) {\n                        childViews.push(view);\n                        return view;\n                    },\n                    unlinkView: function unlinkView(view) {\n                        childViews.splice(childViews.indexOf(view), 1);\n                    },\n                    appendChildView: appendChildView(element, childViews),\n                    removeChildView: removeChildView(element, childViews),\n                    registerWriter: function registerWriter(writer) {\n                        return writers.push(writer);\n                    },\n                    registerReader: function registerReader(reader) {\n                        return readers.push(reader);\n                    },\n                    registerDestroyer: function registerDestroyer(destroyer) {\n                        return destroyers.push(destroyer);\n                    },\n                    invalidateLayout: function invalidateLayout() {\n                        return (element.layoutCalculated = false);\n                    },\n\n                    // access to data store\n                    dispatch: store.dispatch,\n                    query: store.query,\n                });\n\n                // public view API methods\n                var externalAPIDefinition = {\n                    element: {\n                        get: getElement,\n                    },\n\n                    childViews: {\n                        get: getChildViews,\n                    },\n\n                    rect: {\n                        get: getRect,\n                    },\n\n                    resting: {\n                        get: function get() {\n                            return isResting;\n                        },\n                    },\n\n                    isRectIgnored: function isRectIgnored() {\n                        return ignoreRect;\n                    },\n                    _read: _read,\n                    _write: _write,\n                    _destroy: _destroy,\n                };\n\n                // mixin API methods\n                var mixinAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n                    rect: {\n                        get: function get() {\n                            return rect;\n                        },\n                    },\n                });\n\n                // add mixin functionality\n                Object.keys(mixins)\n                    .sort(function(a, b) {\n                        // move styles to the back of the mixin list (so adjustments of other mixins are applied to the props correctly)\n                        if (a === 'styles') {\n                            return 1;\n                        } else if (b === 'styles') {\n                            return -1;\n                        }\n                        return 0;\n                    })\n                    .forEach(function(key) {\n                        var mixinAPI = Mixins[key]({\n                            mixinConfig: mixins[key],\n                            viewProps: props,\n                            viewState: state,\n                            viewInternalAPI: internalAPIDefinition,\n                            viewExternalAPI: externalAPIDefinition,\n                            view: createObject(mixinAPIDefinition),\n                        });\n\n                        if (mixinAPI) {\n                            activeMixins.push(mixinAPI);\n                        }\n                    });\n\n                // construct private api\n                var internalAPI = createObject(internalAPIDefinition);\n\n                // create the view\n                create({\n                    root: internalAPI,\n                    props: props,\n                });\n\n                // append created child views to root node\n                var childCount = getChildCount(element); // need to know the current child count so appending happens in correct order\n                childViews.forEach(function(child, index) {\n                    internalAPI.appendChild(child.element, childCount + index);\n                });\n\n                // call did create\n                didCreateView(internalAPI);\n\n                // expose public api\n                return createObject(externalAPIDefinition);\n            };\n        };\n\n    var createPainter = function createPainter(read, write) {\n        var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 60;\n\n        var name = '__framePainter';\n\n        // set global painter\n        if (window[name]) {\n            window[name].readers.push(read);\n            window[name].writers.push(write);\n            return;\n        }\n\n        window[name] = {\n            readers: [read],\n            writers: [write],\n        };\n\n        var painter = window[name];\n\n        var interval = 1000 / fps;\n        var last = null;\n        var id = null;\n        var requestTick = null;\n        var cancelTick = null;\n\n        var setTimerType = function setTimerType() {\n            if (document.hidden) {\n                requestTick = function requestTick() {\n                    return window.setTimeout(function() {\n                        return tick(performance.now());\n                    }, interval);\n                };\n                cancelTick = function cancelTick() {\n                    return window.clearTimeout(id);\n                };\n            } else {\n                requestTick = function requestTick() {\n                    return window.requestAnimationFrame(tick);\n                };\n                cancelTick = function cancelTick() {\n                    return window.cancelAnimationFrame(id);\n                };\n            }\n        };\n\n        document.addEventListener('visibilitychange', function() {\n            if (cancelTick) cancelTick();\n            setTimerType();\n            tick(performance.now());\n        });\n\n        var tick = function tick(ts) {\n            // queue next tick\n            id = requestTick(tick);\n\n            // limit fps\n            if (!last) {\n                last = ts;\n            }\n\n            var delta = ts - last;\n\n            if (delta <= interval) {\n                // skip frame\n                return;\n            }\n\n            // align next frame\n            last = ts - (delta % interval);\n\n            // update view\n            painter.readers.forEach(function(read) {\n                return read();\n            });\n            painter.writers.forEach(function(write) {\n                return write(ts);\n            });\n        };\n\n        setTimerType();\n        tick(performance.now());\n\n        return {\n            pause: function pause() {\n                cancelTick(id);\n            },\n        };\n    };\n\n    var createRoute = function createRoute(routes, fn) {\n        return function(_ref) {\n            var root = _ref.root,\n                props = _ref.props,\n                _ref$actions = _ref.actions,\n                actions = _ref$actions === void 0 ? [] : _ref$actions,\n                timestamp = _ref.timestamp,\n                shouldOptimize = _ref.shouldOptimize;\n            actions\n                .filter(function(action) {\n                    return routes[action.type];\n                })\n                .forEach(function(action) {\n                    return routes[action.type]({\n                        root: root,\n                        props: props,\n                        action: action.data,\n                        timestamp: timestamp,\n                        shouldOptimize: shouldOptimize,\n                    });\n                });\n\n            if (fn) {\n                fn({\n                    root: root,\n                    props: props,\n                    actions: actions,\n                    timestamp: timestamp,\n                    shouldOptimize: shouldOptimize,\n                });\n            }\n        };\n    };\n\n    var insertBefore = function insertBefore(newNode, referenceNode) {\n        return referenceNode.parentNode.insertBefore(newNode, referenceNode);\n    };\n\n    var insertAfter = function insertAfter(newNode, referenceNode) {\n        return referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n    };\n\n    var isArray = function isArray(value) {\n        return Array.isArray(value);\n    };\n\n    var isEmpty = function isEmpty(value) {\n        return value == null;\n    };\n\n    var trim = function trim(str) {\n        return str.trim();\n    };\n\n    var toString = function toString(value) {\n        return '' + value;\n    };\n\n    var toArray = function toArray(value) {\n        var splitter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n        if (isEmpty(value)) {\n            return [];\n        }\n        if (isArray(value)) {\n            return value;\n        }\n        return toString(value)\n            .split(splitter)\n            .map(trim)\n            .filter(function(str) {\n                return str.length;\n            });\n    };\n\n    var isBoolean = function isBoolean(value) {\n        return typeof value === 'boolean';\n    };\n\n    var toBoolean = function toBoolean(value) {\n        return isBoolean(value) ? value : value === 'true';\n    };\n\n    var isString = function isString(value) {\n        return typeof value === 'string';\n    };\n\n    var toNumber = function toNumber(value) {\n        return isNumber(value)\n            ? value\n            : isString(value)\n            ? toString(value).replace(/[a-z]+/gi, '')\n            : 0;\n    };\n\n    var toInt = function toInt(value) {\n        return parseInt(toNumber(value), 10);\n    };\n\n    var toFloat = function toFloat(value) {\n        return parseFloat(toNumber(value));\n    };\n\n    var isInt = function isInt(value) {\n        return isNumber(value) && isFinite(value) && Math.floor(value) === value;\n    };\n\n    var toBytes = function toBytes(value) {\n        var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n        // is in bytes\n        if (isInt(value)) {\n            return value;\n        }\n\n        // is natural file size\n        var naturalFileSize = toString(value).trim();\n\n        // if is value in megabytes\n        if (/MB$/i.test(naturalFileSize)) {\n            naturalFileSize = naturalFileSize.replace(/MB$i/, '').trim();\n            return toInt(naturalFileSize) * base * base;\n        }\n\n        // if is value in kilobytes\n        if (/KB/i.test(naturalFileSize)) {\n            naturalFileSize = naturalFileSize.replace(/KB$i/, '').trim();\n            return toInt(naturalFileSize) * base;\n        }\n\n        return toInt(naturalFileSize);\n    };\n\n    var isFunction = function isFunction(value) {\n        return typeof value === 'function';\n    };\n\n    var toFunctionReference = function toFunctionReference(string) {\n        var ref = self;\n        var levels = string.split('.');\n        var level = null;\n        while ((level = levels.shift())) {\n            ref = ref[level];\n            if (!ref) {\n                return null;\n            }\n        }\n        return ref;\n    };\n\n    var methods = {\n        process: 'POST',\n        patch: 'PATCH',\n        revert: 'DELETE',\n        fetch: 'GET',\n        restore: 'GET',\n        load: 'GET',\n    };\n\n    var createServerAPI = function createServerAPI(outline) {\n        var api = {};\n\n        api.url = isString(outline) ? outline : outline.url || '';\n        api.timeout = outline.timeout ? parseInt(outline.timeout, 10) : 0;\n        api.headers = outline.headers ? outline.headers : {};\n\n        forin(methods, function(key) {\n            api[key] = createAction(key, outline[key], methods[key], api.timeout, api.headers);\n        });\n\n        // remove process if no url or process on outline\n        api.process = outline.process || isString(outline) || outline.url ? api.process : null;\n\n        // special treatment for remove\n        api.remove = outline.remove || null;\n\n        // remove generic headers from api object\n        delete api.headers;\n\n        return api;\n    };\n\n    var createAction = function createAction(name, outline, method, timeout, headers) {\n        // is explicitely set to null so disable\n        if (outline === null) {\n            return null;\n        }\n\n        // if is custom function, done! Dev handles everything.\n        if (typeof outline === 'function') {\n            return outline;\n        }\n\n        // build action object\n        var action = {\n            url: method === 'GET' || method === 'PATCH' ? '?' + name + '=' : '',\n            method: method,\n            headers: headers,\n            withCredentials: false,\n            timeout: timeout,\n            onload: null,\n            ondata: null,\n            onerror: null,\n        };\n\n        // is a single url\n        if (isString(outline)) {\n            action.url = outline;\n            return action;\n        }\n\n        // overwrite\n        Object.assign(action, outline);\n\n        // see if should reformat headers;\n        if (isString(action.headers)) {\n            var parts = action.headers.split(/:(.+)/);\n            action.headers = {\n                header: parts[0],\n                value: parts[1],\n            };\n        }\n\n        // if is bool withCredentials\n        action.withCredentials = toBoolean(action.withCredentials);\n\n        return action;\n    };\n\n    var toServerAPI = function toServerAPI(value) {\n        return createServerAPI(value);\n    };\n\n    var isNull = function isNull(value) {\n        return value === null;\n    };\n\n    var isObject = function isObject(value) {\n        return typeof value === 'object' && value !== null;\n    };\n\n    var isAPI = function isAPI(value) {\n        return (\n            isObject(value) &&\n            isString(value.url) &&\n            isObject(value.process) &&\n            isObject(value.revert) &&\n            isObject(value.restore) &&\n            isObject(value.fetch)\n        );\n    };\n\n    var getType = function getType(value) {\n        if (isArray(value)) {\n            return 'array';\n        }\n\n        if (isNull(value)) {\n            return 'null';\n        }\n\n        if (isInt(value)) {\n            return 'int';\n        }\n\n        if (/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(value)) {\n            return 'bytes';\n        }\n\n        if (isAPI(value)) {\n            return 'api';\n        }\n\n        return typeof value;\n    };\n\n    var replaceSingleQuotes = function replaceSingleQuotes(str) {\n        return str\n            .replace(/{\\s*'/g, '{\"')\n            .replace(/'\\s*}/g, '\"}')\n            .replace(/'\\s*:/g, '\":')\n            .replace(/:\\s*'/g, ':\"')\n            .replace(/,\\s*'/g, ',\"')\n            .replace(/'\\s*,/g, '\",');\n    };\n\n    var conversionTable = {\n        array: toArray,\n        boolean: toBoolean,\n        int: function int(value) {\n            return getType(value) === 'bytes' ? toBytes(value) : toInt(value);\n        },\n        number: toFloat,\n        float: toFloat,\n        bytes: toBytes,\n        string: function string(value) {\n            return isFunction(value) ? value : toString(value);\n        },\n        function: function _function(value) {\n            return toFunctionReference(value);\n        },\n        serverapi: toServerAPI,\n        object: function object(value) {\n            try {\n                return JSON.parse(replaceSingleQuotes(value));\n            } catch (e) {\n                return null;\n            }\n        },\n    };\n\n    var convertTo = function convertTo(value, type) {\n        return conversionTable[type](value);\n    };\n\n    var getValueByType = function getValueByType(newValue, defaultValue, valueType) {\n        // can always assign default value\n        if (newValue === defaultValue) {\n            return newValue;\n        }\n\n        // get the type of the new value\n        var newValueType = getType(newValue);\n\n        // is valid type?\n        if (newValueType !== valueType) {\n            // is string input, let's attempt to convert\n            var convertedValue = convertTo(newValue, valueType);\n\n            // what is the type now\n            newValueType = getType(convertedValue);\n\n            // no valid conversions found\n            if (convertedValue === null) {\n                throw 'Trying to assign value with incorrect type to \"' +\n                    option +\n                    '\", allowed type: \"' +\n                    valueType +\n                    '\"';\n            } else {\n                newValue = convertedValue;\n            }\n        }\n\n        // assign new value\n        return newValue;\n    };\n\n    var createOption = function createOption(defaultValue, valueType) {\n        var currentValue = defaultValue;\n        return {\n            enumerable: true,\n            get: function get() {\n                return currentValue;\n            },\n            set: function set(newValue) {\n                currentValue = getValueByType(newValue, defaultValue, valueType);\n            },\n        };\n    };\n\n    var createOptions = function createOptions(options) {\n        var obj = {};\n        forin(options, function(prop) {\n            var optionDefinition = options[prop];\n            obj[prop] = createOption(optionDefinition[0], optionDefinition[1]);\n        });\n        return createObject(obj);\n    };\n\n    var createInitialState = function createInitialState(options) {\n        return {\n            // model\n            items: [],\n\n            // timeout used for calling update items\n            listUpdateTimeout: null,\n\n            // timeout used for stacking metadata updates\n            itemUpdateTimeout: null,\n\n            // queue of items waiting to be processed\n            processingQueue: [],\n\n            // options\n            options: createOptions(options),\n        };\n    };\n\n    var fromCamels = function fromCamels(string) {\n        var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n        return string\n            .split(/(?=[A-Z])/)\n            .map(function(part) {\n                return part.toLowerCase();\n            })\n            .join(separator);\n    };\n\n    var createOptionAPI = function createOptionAPI(store, options) {\n        var obj = {};\n        forin(options, function(key) {\n            obj[key] = {\n                get: function get() {\n                    return store.getState().options[key];\n                },\n                set: function set(value) {\n                    store.dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n                        value: value,\n                    });\n                },\n            };\n        });\n        return obj;\n    };\n\n    var createOptionActions = function createOptionActions(options) {\n        return function(dispatch, query, state) {\n            var obj = {};\n            forin(options, function(key) {\n                var name = fromCamels(key, '_').toUpperCase();\n\n                obj['SET_' + name] = function(action) {\n                    try {\n                        state.options[key] = action.value;\n                    } catch (e) {} // nope, failed\n\n                    // we successfully set the value of this option\n                    dispatch('DID_SET_' + name, { value: state.options[key] });\n                };\n            });\n            return obj;\n        };\n    };\n\n    var createOptionQueries = function createOptionQueries(options) {\n        return function(state) {\n            var obj = {};\n            forin(options, function(key) {\n                obj['GET_' + fromCamels(key, '_').toUpperCase()] = function(action) {\n                    return state.options[key];\n                };\n            });\n            return obj;\n        };\n    };\n\n    var InteractionMethod = {\n        API: 1,\n        DROP: 2,\n        BROWSE: 3,\n        PASTE: 4,\n        NONE: 5,\n    };\n\n    var getUniqueId = function getUniqueId() {\n        return Math.random()\n            .toString(36)\n            .substring(2, 11);\n    };\n\n    function _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 &&\n                    typeof Symbol === 'function' &&\n                    obj.constructor === Symbol &&\n                    obj !== Symbol.prototype\n                    ? 'symbol'\n                    : typeof obj;\n            };\n        }\n\n        return _typeof(obj);\n    }\n\n    var REACT_ELEMENT_TYPE;\n\n    function _jsx(type, props, key, children) {\n        if (!REACT_ELEMENT_TYPE) {\n            REACT_ELEMENT_TYPE =\n                (typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element')) ||\n                0xeac7;\n        }\n\n        var defaultProps = type && type.defaultProps;\n        var childrenLength = arguments.length - 3;\n\n        if (!props && childrenLength !== 0) {\n            props = {\n                children: void 0,\n            };\n        }\n\n        if (props && defaultProps) {\n            for (var propName in defaultProps) {\n                if (props[propName] === void 0) {\n                    props[propName] = defaultProps[propName];\n                }\n            }\n        } else if (!props) {\n            props = defaultProps || {};\n        }\n\n        if (childrenLength === 1) {\n            props.children = children;\n        } else if (childrenLength > 1) {\n            var childArray = new Array(childrenLength);\n\n            for (var i = 0; i < childrenLength; i++) {\n                childArray[i] = arguments[i + 3];\n            }\n\n            props.children = childArray;\n        }\n\n        return {\n            $$typeof: REACT_ELEMENT_TYPE,\n            type: type,\n            key: key === undefined ? null : '' + key,\n            ref: null,\n            props: props,\n            _owner: null,\n        };\n    }\n\n    function _asyncIterator(iterable) {\n        var method;\n\n        if (typeof Symbol !== 'undefined') {\n            if (Symbol.asyncIterator) {\n                method = iterable[Symbol.asyncIterator];\n                if (method != null) return method.call(iterable);\n            }\n\n            if (Symbol.iterator) {\n                method = iterable[Symbol.iterator];\n                if (method != null) return method.call(iterable);\n            }\n        }\n\n        throw new TypeError('Object is not async iterable');\n    }\n\n    function _AwaitValue(value) {\n        this.wrapped = value;\n    }\n\n    function _AsyncGenerator(gen) {\n        var front, back;\n\n        function send(key, arg) {\n            return new Promise(function(resolve, reject) {\n                var request = {\n                    key: key,\n                    arg: arg,\n                    resolve: resolve,\n                    reject: reject,\n                    next: null,\n                };\n\n                if (back) {\n                    back = back.next = request;\n                } else {\n                    front = back = request;\n                    resume(key, arg);\n                }\n            });\n        }\n\n        function resume(key, arg) {\n            try {\n                var result = gen[key](arg);\n                var value = result.value;\n                var wrappedAwait = value instanceof _AwaitValue;\n                Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n                    function(arg) {\n                        if (wrappedAwait) {\n                            resume('next', arg);\n                            return;\n                        }\n\n                        settle(result.done ? 'return' : 'normal', arg);\n                    },\n                    function(err) {\n                        resume('throw', err);\n                    }\n                );\n            } catch (err) {\n                settle('throw', err);\n            }\n        }\n\n        function settle(type, value) {\n            switch (type) {\n                case 'return':\n                    front.resolve({\n                        value: value,\n                        done: true,\n                    });\n                    break;\n\n                case 'throw':\n                    front.reject(value);\n                    break;\n\n                default:\n                    front.resolve({\n                        value: value,\n                        done: false,\n                    });\n                    break;\n            }\n\n            front = front.next;\n\n            if (front) {\n                resume(front.key, front.arg);\n            } else {\n                back = null;\n            }\n        }\n\n        this._invoke = send;\n\n        if (typeof gen.return !== 'function') {\n            this.return = undefined;\n        }\n    }\n\n    if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n        _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n            return this;\n        };\n    }\n\n    _AsyncGenerator.prototype.next = function(arg) {\n        return this._invoke('next', arg);\n    };\n\n    _AsyncGenerator.prototype.throw = function(arg) {\n        return this._invoke('throw', arg);\n    };\n\n    _AsyncGenerator.prototype.return = function(arg) {\n        return this._invoke('return', arg);\n    };\n\n    function _wrapAsyncGenerator(fn) {\n        return function() {\n            return new _AsyncGenerator(fn.apply(this, arguments));\n        };\n    }\n\n    function _awaitAsyncGenerator(value) {\n        return new _AwaitValue(value);\n    }\n\n    function _asyncGeneratorDelegate(inner, awaitWrap) {\n        var iter = {},\n            waiting = false;\n\n        function pump(key, value) {\n            waiting = true;\n            value = new Promise(function(resolve) {\n                resolve(inner[key](value));\n            });\n            return {\n                done: false,\n                value: awaitWrap(value),\n            };\n        }\n\n        if (typeof Symbol === 'function' && Symbol.iterator) {\n            iter[Symbol.iterator] = function() {\n                return this;\n            };\n        }\n\n        iter.next = function(value) {\n            if (waiting) {\n                waiting = false;\n                return value;\n            }\n\n            return pump('next', value);\n        };\n\n        if (typeof inner.throw === 'function') {\n            iter.throw = function(value) {\n                if (waiting) {\n                    waiting = false;\n                    throw value;\n                }\n\n                return pump('throw', value);\n            };\n        }\n\n        if (typeof inner.return === 'function') {\n            iter.return = function(value) {\n                return pump('return', value);\n            };\n        }\n\n        return iter;\n    }\n\n    function 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\n    function _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\n    function _classCallCheck(instance, Constructor) {\n        if (!(instance instanceof Constructor)) {\n            throw new TypeError('Cannot call a class as a function');\n        }\n    }\n\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\n    function _createClass(Constructor, protoProps, staticProps) {\n        if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n        if (staticProps) _defineProperties(Constructor, staticProps);\n        return Constructor;\n    }\n\n    function _defineEnumerableProperties(obj, descs) {\n        for (var key in descs) {\n            var desc = descs[key];\n            desc.configurable = desc.enumerable = true;\n            if ('value' in desc) desc.writable = true;\n            Object.defineProperty(obj, key, desc);\n        }\n\n        if (Object.getOwnPropertySymbols) {\n            var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n            for (var i = 0; i < objectSymbols.length; i++) {\n                var sym = objectSymbols[i];\n                var desc = descs[sym];\n                desc.configurable = desc.enumerable = true;\n                if ('value' in desc) desc.writable = true;\n                Object.defineProperty(obj, sym, desc);\n            }\n        }\n\n        return obj;\n    }\n\n    function _defaults(obj, defaults) {\n        var keys = Object.getOwnPropertyNames(defaults);\n\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n            if (value && value.configurable && obj[key] === undefined) {\n                Object.defineProperty(obj, key, value);\n            }\n        }\n\n        return obj;\n    }\n\n    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\n    function _extends() {\n        _extends =\n            Object.assign ||\n            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    }\n\n    function _objectSpread(target) {\n        for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i] != null ? arguments[i] : {};\n            var ownKeys = Object.keys(source);\n\n            if (typeof Object.getOwnPropertySymbols === 'function') {\n                ownKeys = ownKeys.concat(\n                    Object.getOwnPropertySymbols(source).filter(function(sym) {\n                        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n                    })\n                );\n            }\n\n            ownKeys.forEach(function(key) {\n                _defineProperty(target, key, source[key]);\n            });\n        }\n\n        return target;\n    }\n\n    function ownKeys(object, enumerableOnly) {\n        var keys = Object.keys(object);\n\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            keys.push.apply(keys, symbols);\n        }\n\n        return keys;\n    }\n\n    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(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(\n                        target,\n                        key,\n                        Object.getOwnPropertyDescriptor(source, key)\n                    );\n                });\n            }\n        }\n\n        return target;\n    }\n\n    function _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\n    function _inheritsLoose(subClass, superClass) {\n        subClass.prototype = Object.create(superClass.prototype);\n        subClass.prototype.constructor = subClass;\n        subClass.__proto__ = superClass;\n    }\n\n    function _getPrototypeOf(o) {\n        _getPrototypeOf = Object.setPrototypeOf\n            ? Object.getPrototypeOf\n            : function _getPrototypeOf(o) {\n                  return o.__proto__ || Object.getPrototypeOf(o);\n              };\n        return _getPrototypeOf(o);\n    }\n\n    function _setPrototypeOf(o, p) {\n        _setPrototypeOf =\n            Object.setPrototypeOf ||\n            function _setPrototypeOf(o, p) {\n                o.__proto__ = p;\n                return o;\n            };\n\n        return _setPrototypeOf(o, p);\n    }\n\n    function 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            Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n            return true;\n        } catch (e) {\n            return false;\n        }\n    }\n\n    function _construct(Parent, args, Class) {\n        if (isNativeReflectConstruct()) {\n            _construct = Reflect.construct;\n        } else {\n            _construct = function _construct(Parent, args, Class) {\n                var a = [null];\n                a.push.apply(a, args);\n                var Constructor = Function.bind.apply(Parent, a);\n                var instance = new Constructor();\n                if (Class) _setPrototypeOf(instance, Class.prototype);\n                return instance;\n            };\n        }\n\n        return _construct.apply(null, arguments);\n    }\n\n    function _isNativeFunction(fn) {\n        return Function.toString.call(fn).indexOf('[native code]') !== -1;\n    }\n\n    function _wrapNativeSuper(Class) {\n        var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n        _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        };\n\n        return _wrapNativeSuper(Class);\n    }\n\n    function _instanceof(left, right) {\n        if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) {\n            return !!right[Symbol.hasInstance](left);\n        } else {\n            return left instanceof right;\n        }\n    }\n\n    function _interopRequireDefault(obj) {\n        return obj && obj.__esModule\n            ? obj\n            : {\n                  default: obj,\n              };\n    }\n\n    function _interopRequireWildcard(obj) {\n        if (obj && obj.__esModule) {\n            return obj;\n        } else {\n            var newObj = {};\n\n            if (obj != null) {\n                for (var key in obj) {\n                    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                        var desc =\n                            Object.defineProperty && Object.getOwnPropertyDescriptor\n                                ? Object.getOwnPropertyDescriptor(obj, key)\n                                : {};\n\n                        if (desc.get || desc.set) {\n                            Object.defineProperty(newObj, key, desc);\n                        } else {\n                            newObj[key] = obj[key];\n                        }\n                    }\n                }\n            }\n\n            newObj.default = obj;\n            return newObj;\n        }\n    }\n\n    function _newArrowCheck(innerThis, boundThis) {\n        if (innerThis !== boundThis) {\n            throw new TypeError('Cannot instantiate an arrow function');\n        }\n    }\n\n    function _objectDestructuringEmpty(obj) {\n        if (obj == null) throw new TypeError('Cannot destructure undefined');\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\n    function _objectWithoutProperties(source, excluded) {\n        if (source == null) return {};\n\n        var target = _objectWithoutPropertiesLoose(source, excluded);\n\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\n    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\n    function _possibleConstructorReturn(self, call) {\n        if (call && (typeof call === 'object' || typeof call === 'function')) {\n            return call;\n        }\n\n        return _assertThisInitialized(self);\n    }\n\n    function _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\n    function _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\n    function set(target, property, value, receiver) {\n        if (typeof Reflect !== 'undefined' && Reflect.set) {\n            set = Reflect.set;\n        } else {\n            set = function set(target, property, value, receiver) {\n                var base = _superPropBase(target, property);\n\n                var desc;\n\n                if (base) {\n                    desc = Object.getOwnPropertyDescriptor(base, property);\n\n                    if (desc.set) {\n                        desc.set.call(receiver, value);\n                        return true;\n                    } else if (!desc.writable) {\n                        return false;\n                    }\n                }\n\n                desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n                if (desc) {\n                    if (!desc.writable) {\n                        return false;\n                    }\n\n                    desc.value = value;\n                    Object.defineProperty(receiver, property, desc);\n                } else {\n                    _defineProperty(receiver, property, value);\n                }\n\n                return true;\n            };\n        }\n\n        return set(target, property, value, receiver);\n    }\n\n    function _set(target, property, value, receiver, isStrict) {\n        var s = set(target, property, value, receiver || target);\n\n        if (!s && isStrict) {\n            throw new Error('failed to set property');\n        }\n\n        return value;\n    }\n\n    function _taggedTemplateLiteral(strings, raw) {\n        if (!raw) {\n            raw = strings.slice(0);\n        }\n\n        return Object.freeze(\n            Object.defineProperties(strings, {\n                raw: {\n                    value: Object.freeze(raw),\n                },\n            })\n        );\n    }\n\n    function _taggedTemplateLiteralLoose(strings, raw) {\n        if (!raw) {\n            raw = strings.slice(0);\n        }\n\n        strings.raw = raw;\n        return strings;\n    }\n\n    function _temporalRef(val, name) {\n        if (val === _temporalUndefined) {\n            throw new ReferenceError(name + ' is not defined - temporal dead zone');\n        } else {\n            return val;\n        }\n    }\n\n    function _readOnlyError(name) {\n        throw new Error('\"' + name + '\" is read-only');\n    }\n\n    function _classNameTDZError(name) {\n        throw new Error('Class \"' + name + '\" cannot be referenced in computed property keys.');\n    }\n\n    var _temporalUndefined = {};\n\n    function _slicedToArray(arr, i) {\n        return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n    }\n\n    function _slicedToArrayLoose(arr, i) {\n        return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _nonIterableRest();\n    }\n\n    function _toArray(arr) {\n        return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n    }\n\n    function _toConsumableArray(arr) {\n        return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n    }\n\n    function _arrayWithoutHoles(arr) {\n        if (Array.isArray(arr)) {\n            for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n            return arr2;\n        }\n    }\n\n    function _arrayWithHoles(arr) {\n        if (Array.isArray(arr)) return arr;\n    }\n\n    function _iterableToArray(iter) {\n        if (\n            Symbol.iterator in Object(iter) ||\n            Object.prototype.toString.call(iter) === '[object Arguments]'\n        )\n            return Array.from(iter);\n    }\n\n    function _iterableToArrayLimit(arr, i) {\n        var _arr = [];\n        var _n = true;\n        var _d = false;\n        var _e = undefined;\n\n        try {\n            for (var _i = arr[Symbol.iterator](), _s; !(_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\n    function _iterableToArrayLimitLoose(arr, i) {\n        var _arr = [];\n\n        for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done; ) {\n            _arr.push(_step.value);\n\n            if (i && _arr.length === i) break;\n        }\n\n        return _arr;\n    }\n\n    function _nonIterableSpread() {\n        throw new TypeError('Invalid attempt to spread non-iterable instance');\n    }\n\n    function _nonIterableRest() {\n        throw new TypeError('Invalid attempt to destructure non-iterable instance');\n    }\n\n    function _skipFirstGeneratorNext(fn) {\n        return function() {\n            var it = fn.apply(this, arguments);\n            it.next();\n            return it;\n        };\n    }\n\n    function _toPrimitive(input, hint) {\n        if (typeof input !== 'object' || input === null) return input;\n        var prim = input[Symbol.toPrimitive];\n\n        if (prim !== undefined) {\n            var res = prim.call(input, hint || 'default');\n            if (typeof res !== 'object') return res;\n            throw new TypeError('@@toPrimitive must return a primitive value.');\n        }\n\n        return (hint === 'string' ? String : Number)(input);\n    }\n\n    function _toPropertyKey(arg) {\n        var key = _toPrimitive(arg, 'string');\n\n        return typeof key === 'symbol' ? key : String(key);\n    }\n\n    function _initializerWarningHelper(descriptor, context) {\n        throw new Error(\n            'Decorating class property failed. Please ensure that ' +\n                'proposal-class-properties is enabled and set to use loose mode. ' +\n                'To use proposal-class-properties in spec mode with decorators, wait for ' +\n                'the next major version of decorators in stage 2.'\n        );\n    }\n\n    function _initializerDefineProperty(target, property, descriptor, context) {\n        if (!descriptor) return;\n        Object.defineProperty(target, property, {\n            enumerable: descriptor.enumerable,\n            configurable: descriptor.configurable,\n            writable: descriptor.writable,\n            value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,\n        });\n    }\n\n    function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n        var desc = {};\n        Object.keys(descriptor).forEach(function(key) {\n            desc[key] = descriptor[key];\n        });\n        desc.enumerable = !!desc.enumerable;\n        desc.configurable = !!desc.configurable;\n\n        if ('value' in desc || desc.initializer) {\n            desc.writable = true;\n        }\n\n        desc = decorators\n            .slice()\n            .reverse()\n            .reduce(function(desc, decorator) {\n                return decorator(target, property, desc) || desc;\n            }, desc);\n\n        if (context && desc.initializer !== void 0) {\n            desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n            desc.initializer = undefined;\n        }\n\n        if (desc.initializer === void 0) {\n            Object.defineProperty(target, property, desc);\n            desc = null;\n        }\n\n        return desc;\n    }\n\n    var id = 0;\n\n    function _classPrivateFieldLooseKey(name) {\n        return '__private_' + id++ + '_' + name;\n    }\n\n    function _classPrivateFieldLooseBase(receiver, privateKey) {\n        if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n            throw new TypeError('attempted to use private field on non-instance');\n        }\n\n        return receiver;\n    }\n\n    function _classPrivateFieldGet(receiver, privateMap) {\n        var descriptor = privateMap.get(receiver);\n\n        if (!descriptor) {\n            throw new TypeError('attempted to get private field on non-instance');\n        }\n\n        if (descriptor.get) {\n            return descriptor.get.call(receiver);\n        }\n\n        return descriptor.value;\n    }\n\n    function _classPrivateFieldSet(receiver, privateMap, value) {\n        var descriptor = privateMap.get(receiver);\n\n        if (!descriptor) {\n            throw new TypeError('attempted to set private field on non-instance');\n        }\n\n        if (descriptor.set) {\n            descriptor.set.call(receiver, value);\n        } else {\n            if (!descriptor.writable) {\n                throw new TypeError('attempted to set read only private field');\n            }\n\n            descriptor.value = value;\n        }\n\n        return value;\n    }\n\n    function _classPrivateFieldDestructureSet(receiver, privateMap) {\n        if (!privateMap.has(receiver)) {\n            throw new TypeError('attempted to set private field on non-instance');\n        }\n\n        var descriptor = privateMap.get(receiver);\n\n        if (descriptor.set) {\n            if (!('__destrObj' in descriptor)) {\n                descriptor.__destrObj = {\n                    set value(v) {\n                        descriptor.set.call(receiver, v);\n                    },\n                };\n            }\n\n            return descriptor.__destrObj;\n        } else {\n            if (!descriptor.writable) {\n                throw new TypeError('attempted to set read only private field');\n            }\n\n            return descriptor;\n        }\n    }\n\n    function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        return descriptor.value;\n    }\n\n    function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        if (!descriptor.writable) {\n            throw new TypeError('attempted to set read only private field');\n        }\n\n        descriptor.value = value;\n        return value;\n    }\n\n    function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n        if (receiver !== classConstructor) {\n            throw new TypeError('Private static access of wrong provenance');\n        }\n\n        return method;\n    }\n\n    function _classStaticPrivateMethodSet() {\n        throw new TypeError('attempted to set read only static private field');\n    }\n\n    function _decorate(decorators, factory, superClass, mixins) {\n        var api = _getDecoratorsApi();\n\n        if (mixins) {\n            for (var i = 0; i < mixins.length; i++) {\n                api = mixins[i](api);\n            }\n        }\n\n        var r = factory(function initialize(O) {\n            api.initializeInstanceElements(O, decorated.elements);\n        }, superClass);\n        var decorated = api.decorateClass(\n            _coalesceClassElements(r.d.map(_createElementDescriptor)),\n            decorators\n        );\n        api.initializeClassElements(r.F, decorated.elements);\n        return api.runClassFinishers(r.F, decorated.finishers);\n    }\n\n    function _getDecoratorsApi() {\n        _getDecoratorsApi = function() {\n            return api;\n        };\n\n        var api = {\n            elementsDefinitionOrder: [['method'], ['field']],\n            initializeInstanceElements: function(O, elements) {\n                ['method', 'field'].forEach(function(kind) {\n                    elements.forEach(function(element) {\n                        if (element.kind === kind && element.placement === 'own') {\n                            this.defineClassElement(O, element);\n                        }\n                    }, this);\n                }, this);\n            },\n            initializeClassElements: function(F, elements) {\n                var proto = F.prototype;\n                ['method', 'field'].forEach(function(kind) {\n                    elements.forEach(function(element) {\n                        var placement = element.placement;\n\n                        if (\n                            element.kind === kind &&\n                            (placement === 'static' || placement === 'prototype')\n                        ) {\n                            var receiver = placement === 'static' ? F : proto;\n                            this.defineClassElement(receiver, element);\n                        }\n                    }, this);\n                }, this);\n            },\n            defineClassElement: function(receiver, element) {\n                var descriptor = element.descriptor;\n\n                if (element.kind === 'field') {\n                    var initializer = element.initializer;\n                    descriptor = {\n                        enumerable: descriptor.enumerable,\n                        writable: descriptor.writable,\n                        configurable: descriptor.configurable,\n                        value: initializer === void 0 ? void 0 : initializer.call(receiver),\n                    };\n                }\n\n                Object.defineProperty(receiver, element.key, descriptor);\n            },\n            decorateClass: function(elements, decorators) {\n                var newElements = [];\n                var finishers = [];\n                var placements = {\n                    static: [],\n                    prototype: [],\n                    own: [],\n                };\n                elements.forEach(function(element) {\n                    this.addElementPlacement(element, placements);\n                }, this);\n                elements.forEach(function(element) {\n                    if (!_hasDecorators(element)) return newElements.push(element);\n                    var elementFinishersExtras = this.decorateElement(element, placements);\n                    newElements.push(elementFinishersExtras.element);\n                    newElements.push.apply(newElements, elementFinishersExtras.extras);\n                    finishers.push.apply(finishers, elementFinishersExtras.finishers);\n                }, this);\n\n                if (!decorators) {\n                    return {\n                        elements: newElements,\n                        finishers: finishers,\n                    };\n                }\n\n                var result = this.decorateConstructor(newElements, decorators);\n                finishers.push.apply(finishers, result.finishers);\n                result.finishers = finishers;\n                return result;\n            },\n            addElementPlacement: function(element, placements, silent) {\n                var keys = placements[element.placement];\n\n                if (!silent && keys.indexOf(element.key) !== -1) {\n                    throw new TypeError('Duplicated element (' + element.key + ')');\n                }\n\n                keys.push(element.key);\n            },\n            decorateElement: function(element, placements) {\n                var extras = [];\n                var finishers = [];\n\n                for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n                    var keys = placements[element.placement];\n                    keys.splice(keys.indexOf(element.key), 1);\n                    var elementObject = this.fromElementDescriptor(element);\n                    var elementFinisherExtras = this.toElementFinisherExtras(\n                        (0, decorators[i])(elementObject) || elementObject\n                    );\n                    element = elementFinisherExtras.element;\n                    this.addElementPlacement(element, placements);\n\n                    if (elementFinisherExtras.finisher) {\n                        finishers.push(elementFinisherExtras.finisher);\n                    }\n\n                    var newExtras = elementFinisherExtras.extras;\n\n                    if (newExtras) {\n                        for (var j = 0; j < newExtras.length; j++) {\n                            this.addElementPlacement(newExtras[j], placements);\n                        }\n\n                        extras.push.apply(extras, newExtras);\n                    }\n                }\n\n                return {\n                    element: element,\n                    finishers: finishers,\n                    extras: extras,\n                };\n            },\n            decorateConstructor: function(elements, decorators) {\n                var finishers = [];\n\n                for (var i = decorators.length - 1; i >= 0; i--) {\n                    var obj = this.fromClassDescriptor(elements);\n                    var elementsAndFinisher = this.toClassDescriptor(\n                        (0, decorators[i])(obj) || obj\n                    );\n\n                    if (elementsAndFinisher.finisher !== undefined) {\n                        finishers.push(elementsAndFinisher.finisher);\n                    }\n\n                    if (elementsAndFinisher.elements !== undefined) {\n                        elements = elementsAndFinisher.elements;\n\n                        for (var j = 0; j < elements.length - 1; j++) {\n                            for (var k = j + 1; k < elements.length; k++) {\n                                if (\n                                    elements[j].key === elements[k].key &&\n                                    elements[j].placement === elements[k].placement\n                                ) {\n                                    throw new TypeError(\n                                        'Duplicated element (' + elements[j].key + ')'\n                                    );\n                                }\n                            }\n                        }\n                    }\n                }\n\n                return {\n                    elements: elements,\n                    finishers: finishers,\n                };\n            },\n            fromElementDescriptor: function(element) {\n                var obj = {\n                    kind: element.kind,\n                    key: element.key,\n                    placement: element.placement,\n                    descriptor: element.descriptor,\n                };\n                var desc = {\n                    value: 'Descriptor',\n                    configurable: true,\n                };\n                Object.defineProperty(obj, Symbol.toStringTag, desc);\n                if (element.kind === 'field') obj.initializer = element.initializer;\n                return obj;\n            },\n            toElementDescriptors: function(elementObjects) {\n                if (elementObjects === undefined) return;\n                return _toArray(elementObjects).map(function(elementObject) {\n                    var element = this.toElementDescriptor(elementObject);\n                    this.disallowProperty(elementObject, 'finisher', 'An element descriptor');\n                    this.disallowProperty(elementObject, 'extras', 'An element descriptor');\n                    return element;\n                }, this);\n            },\n            toElementDescriptor: function(elementObject) {\n                var kind = String(elementObject.kind);\n\n                if (kind !== 'method' && kind !== 'field') {\n                    throw new TypeError(\n                        'An element descriptor\\'s .kind property must be either \"method\" or' +\n                            ' \"field\", but a decorator created an element descriptor with' +\n                            ' .kind \"' +\n                            kind +\n                            '\"'\n                    );\n                }\n\n                var key = _toPropertyKey(elementObject.key);\n\n                var placement = String(elementObject.placement);\n\n                if (placement !== 'static' && placement !== 'prototype' && placement !== 'own') {\n                    throw new TypeError(\n                        'An element descriptor\\'s .placement property must be one of \"static\",' +\n                            ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n                            ' with .placement \"' +\n                            placement +\n                            '\"'\n                    );\n                }\n\n                var descriptor = elementObject.descriptor;\n                this.disallowProperty(elementObject, 'elements', 'An element descriptor');\n                var element = {\n                    kind: kind,\n                    key: key,\n                    placement: placement,\n                    descriptor: Object.assign({}, descriptor),\n                };\n\n                if (kind !== 'field') {\n                    this.disallowProperty(elementObject, 'initializer', 'A method descriptor');\n                } else {\n                    this.disallowProperty(\n                        descriptor,\n                        'get',\n                        'The property descriptor of a field descriptor'\n                    );\n                    this.disallowProperty(\n                        descriptor,\n                        'set',\n                        'The property descriptor of a field descriptor'\n                    );\n                    this.disallowProperty(\n                        descriptor,\n                        'value',\n                        'The property descriptor of a field descriptor'\n                    );\n                    element.initializer = elementObject.initializer;\n                }\n\n                return element;\n            },\n            toElementFinisherExtras: function(elementObject) {\n                var element = this.toElementDescriptor(elementObject);\n\n                var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n                var extras = this.toElementDescriptors(elementObject.extras);\n                return {\n                    element: element,\n                    finisher: finisher,\n                    extras: extras,\n                };\n            },\n            fromClassDescriptor: function(elements) {\n                var obj = {\n                    kind: 'class',\n                    elements: elements.map(this.fromElementDescriptor, this),\n                };\n                var desc = {\n                    value: 'Descriptor',\n                    configurable: true,\n                };\n                Object.defineProperty(obj, Symbol.toStringTag, desc);\n                return obj;\n            },\n            toClassDescriptor: function(obj) {\n                var kind = String(obj.kind);\n\n                if (kind !== 'class') {\n                    throw new TypeError(\n                        'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n                            ' created a class descriptor with .kind \"' +\n                            kind +\n                            '\"'\n                    );\n                }\n\n                this.disallowProperty(obj, 'key', 'A class descriptor');\n                this.disallowProperty(obj, 'placement', 'A class descriptor');\n                this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n                this.disallowProperty(obj, 'initializer', 'A class descriptor');\n                this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n                var finisher = _optionalCallableProperty(obj, 'finisher');\n\n                var elements = this.toElementDescriptors(obj.elements);\n                return {\n                    elements: elements,\n                    finisher: finisher,\n                };\n            },\n            runClassFinishers: function(constructor, finishers) {\n                for (var i = 0; i < finishers.length; i++) {\n                    var newConstructor = (0, finishers[i])(constructor);\n\n                    if (newConstructor !== undefined) {\n                        if (typeof newConstructor !== 'function') {\n                            throw new TypeError('Finishers must return a constructor.');\n                        }\n\n                        constructor = newConstructor;\n                    }\n                }\n\n                return constructor;\n            },\n            disallowProperty: function(obj, name, objectType) {\n                if (obj[name] !== undefined) {\n                    throw new TypeError(objectType + \" can't have a .\" + name + ' property.');\n                }\n            },\n        };\n        return api;\n    }\n\n    function _createElementDescriptor(def) {\n        var key = _toPropertyKey(def.key);\n\n        var descriptor;\n\n        if (def.kind === 'method') {\n            descriptor = {\n                value: def.value,\n                writable: true,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'get') {\n            descriptor = {\n                get: def.value,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'set') {\n            descriptor = {\n                set: def.value,\n                configurable: true,\n                enumerable: false,\n            };\n        } else if (def.kind === 'field') {\n            descriptor = {\n                configurable: true,\n                writable: true,\n                enumerable: true,\n            };\n        }\n\n        var element = {\n            kind: def.kind === 'field' ? 'field' : 'method',\n            key: key,\n            placement: def.static ? 'static' : def.kind === 'field' ? 'own' : 'prototype',\n            descriptor: descriptor,\n        };\n        if (def.decorators) element.decorators = def.decorators;\n        if (def.kind === 'field') element.initializer = def.value;\n        return element;\n    }\n\n    function _coalesceGetterSetter(element, other) {\n        if (element.descriptor.get !== undefined) {\n            other.descriptor.get = element.descriptor.get;\n        } else {\n            other.descriptor.set = element.descriptor.set;\n        }\n    }\n\n    function _coalesceClassElements(elements) {\n        var newElements = [];\n\n        var isSameElement = function(other) {\n            return (\n                other.kind === 'method' &&\n                other.key === element.key &&\n                other.placement === element.placement\n            );\n        };\n\n        for (var i = 0; i < elements.length; i++) {\n            var element = elements[i];\n            var other;\n\n            if (element.kind === 'method' && (other = newElements.find(isSameElement))) {\n                if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n                    if (_hasDecorators(element) || _hasDecorators(other)) {\n                        throw new ReferenceError(\n                            'Duplicated methods (' + element.key + \") can't be decorated.\"\n                        );\n                    }\n\n                    other.descriptor = element.descriptor;\n                } else {\n                    if (_hasDecorators(element)) {\n                        if (_hasDecorators(other)) {\n                            throw new ReferenceError(\n                                \"Decorators can't be placed on different accessors with for \" +\n                                    'the same property (' +\n                                    element.key +\n                                    ').'\n                            );\n                        }\n\n                        other.decorators = element.decorators;\n                    }\n\n                    _coalesceGetterSetter(element, other);\n                }\n            } else {\n                newElements.push(element);\n            }\n        }\n\n        return newElements;\n    }\n\n    function _hasDecorators(element) {\n        return element.decorators && element.decorators.length;\n    }\n\n    function _isDataDescriptor(desc) {\n        return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n    }\n\n    function _optionalCallableProperty(obj, name) {\n        var value = obj[name];\n\n        if (value !== undefined && typeof value !== 'function') {\n            throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n        }\n\n        return value;\n    }\n\n    function _classPrivateMethodGet(receiver, privateSet, fn) {\n        if (!privateSet.has(receiver)) {\n            throw new TypeError('attempted to get private field on non-instance');\n        }\n\n        return fn;\n    }\n\n    function _classPrivateMethodSet() {\n        throw new TypeError('attempted to reassign private method');\n    }\n\n    function _wrapRegExp(re, groups) {\n        _wrapRegExp = function(re, groups) {\n            return new BabelRegExp(re, groups);\n        };\n\n        var _RegExp = _wrapNativeSuper(RegExp);\n\n        var _super = RegExp.prototype;\n\n        var _groups = new WeakMap();\n\n        function BabelRegExp(re, groups) {\n            var _this = _RegExp.call(this, re);\n\n            _groups.set(_this, groups);\n\n            return _this;\n        }\n\n        _inherits(BabelRegExp, _RegExp);\n\n        BabelRegExp.prototype.exec = function(str) {\n            var result = _super.exec.call(this, str);\n\n            if (result) result.groups = buildGroups(result, this);\n            return result;\n        };\n\n        BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n            if (typeof substitution === 'string') {\n                var groups = _groups.get(this);\n\n                return _super[Symbol.replace].call(\n                    this,\n                    str,\n                    substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n                        return '$' + groups[name];\n                    })\n                );\n            } else if (typeof substitution === 'function') {\n                var _this = this;\n\n                return _super[Symbol.replace].call(this, str, function() {\n                    var args = [];\n                    args.push.apply(args, arguments);\n\n                    if (typeof args[args.length - 1] !== 'object') {\n                        args.push(buildGroups(args, _this));\n                    }\n\n                    return substitution.apply(this, args);\n                });\n            } else {\n                return _super[Symbol.replace].call(this, str, substitution);\n            }\n        };\n\n        function buildGroups(result, re) {\n            var g = _groups.get(re);\n\n            return Object.keys(g).reduce(function(groups, name) {\n                groups[name] = result[g[name]];\n                return groups;\n            }, Object.create(null));\n        }\n\n        return _wrapRegExp.apply(this, arguments);\n    }\n\n    var arrayRemove = function arrayRemove(arr, index) {\n        return arr.splice(index, 1);\n    };\n\n    var run = function run(cb, sync) {\n        if (sync) {\n            cb();\n        } else if (document.hidden) {\n            Promise.resolve(1).then(cb);\n        } else {\n            setTimeout(cb, 0);\n        }\n    };\n\n    var on = function on() {\n        var listeners = [];\n        var off = function off(event, cb) {\n            arrayRemove(\n                listeners,\n                listeners.findIndex(function(listener) {\n                    return listener.event === event && (listener.cb === cb || !cb);\n                })\n            );\n        };\n        var _fire = function fire(event, args, sync) {\n            listeners\n                .filter(function(listener) {\n                    return listener.event === event;\n                })\n                .map(function(listener) {\n                    return listener.cb;\n                })\n                .forEach(function(cb) {\n                    return run(function() {\n                        return cb.apply(void 0, _toConsumableArray(args));\n                    }, sync);\n                });\n        };\n        return {\n            fireSync: function fireSync(event) {\n                for (\n                    var _len = arguments.length,\n                        args = new Array(_len > 1 ? _len - 1 : 0),\n                        _key = 1;\n                    _key < _len;\n                    _key++\n                ) {\n                    args[_key - 1] = arguments[_key];\n                }\n                _fire(event, args, true);\n            },\n            fire: function fire(event) {\n                for (\n                    var _len2 = arguments.length,\n                        args = new Array(_len2 > 1 ? _len2 - 1 : 0),\n                        _key2 = 1;\n                    _key2 < _len2;\n                    _key2++\n                ) {\n                    args[_key2 - 1] = arguments[_key2];\n                }\n                _fire(event, args, false);\n            },\n            on: function on(event, cb) {\n                listeners.push({ event: event, cb: cb });\n            },\n            onOnce: function onOnce(event, _cb) {\n                listeners.push({\n                    event: event,\n                    cb: function cb() {\n                        off(event, _cb);\n                        _cb.apply(void 0, arguments);\n                    },\n                });\n            },\n            off: off,\n        };\n    };\n\n    var copyObjectPropertiesToObject = function copyObjectPropertiesToObject(\n        src,\n        target,\n        excluded\n    ) {\n        Object.getOwnPropertyNames(src)\n            .filter(function(property) {\n                return !excluded.includes(property);\n            })\n            .forEach(function(key) {\n                return Object.defineProperty(\n                    target,\n                    key,\n                    Object.getOwnPropertyDescriptor(src, key)\n                );\n            });\n    };\n\n    var PRIVATE = [\n        'fire',\n        'process',\n        'revert',\n        'load',\n        'on',\n        'off',\n        'onOnce',\n        'retryLoad',\n        'extend',\n        'archive',\n        'archived',\n        'release',\n        'released',\n        'requestProcessing',\n        'freeze',\n    ];\n\n    var createItemAPI = function createItemAPI(item) {\n        var api = {};\n        copyObjectPropertiesToObject(item, api, PRIVATE);\n        return api;\n    };\n\n    var removeReleasedItems = function removeReleasedItems(items) {\n        items.forEach(function(item, index) {\n            if (item.released) {\n                arrayRemove(items, index);\n            }\n        });\n    };\n\n    var ItemStatus = {\n        INIT: 1,\n        IDLE: 2,\n        PROCESSING_QUEUED: 9,\n        PROCESSING: 3,\n        PROCESSING_COMPLETE: 5,\n        PROCESSING_ERROR: 6,\n        PROCESSING_REVERT_ERROR: 10,\n        LOADING: 7,\n        LOAD_ERROR: 8,\n    };\n\n    var FileOrigin = {\n        INPUT: 1,\n        LIMBO: 2,\n        LOCAL: 3,\n    };\n\n    var getNonNumeric = function getNonNumeric(str) {\n        return /[^0-9]+/.exec(str);\n    };\n\n    var getDecimalSeparator = function getDecimalSeparator() {\n        return getNonNumeric((1.1).toLocaleString())[0];\n    };\n\n    var getThousandsSeparator = function getThousandsSeparator() {\n        // Added for browsers that do not return the thousands separator (happend on native browser Android 4.4.4)\n        // We check against the normal toString output and if they're the same return a comma when decimal separator is a dot\n        var decimalSeparator = getDecimalSeparator();\n        var thousandsStringWithSeparator = (1000.0).toLocaleString();\n        var thousandsStringWithoutSeparator = (1000.0).toString();\n        if (thousandsStringWithSeparator !== thousandsStringWithoutSeparator) {\n            return getNonNumeric(thousandsStringWithSeparator)[0];\n        }\n        return decimalSeparator === '.' ? ',' : '.';\n    };\n\n    var Type = {\n        BOOLEAN: 'boolean',\n        INT: 'int',\n        NUMBER: 'number',\n        STRING: 'string',\n        ARRAY: 'array',\n        OBJECT: 'object',\n        FUNCTION: 'function',\n        ACTION: 'action',\n        SERVER_API: 'serverapi',\n        REGEX: 'regex',\n    };\n\n    // all registered filters\n    var filters = [];\n\n    // loops over matching filters and passes options to each filter, returning the mapped results\n    var applyFilterChain = function applyFilterChain(key, value, utils) {\n        return new Promise(function(resolve, reject) {\n            // find matching filters for this key\n            var matchingFilters = filters\n                .filter(function(f) {\n                    return f.key === key;\n                })\n                .map(function(f) {\n                    return f.cb;\n                });\n\n            // resolve now\n            if (matchingFilters.length === 0) {\n                resolve(value);\n                return;\n            }\n\n            // first filter to kick things of\n            var initialFilter = matchingFilters.shift();\n\n            // chain filters\n            matchingFilters\n                .reduce(\n                    // loop over promises passing value to next promise\n                    function(current, next) {\n                        return current.then(function(value) {\n                            return next(value, utils);\n                        });\n                    },\n\n                    // call initial filter, will return a promise\n                    initialFilter(value, utils)\n\n                    // all executed\n                )\n                .then(function(value) {\n                    return resolve(value);\n                })\n                .catch(function(error) {\n                    return reject(error);\n                });\n        });\n    };\n\n    var applyFilters = function applyFilters(key, value, utils) {\n        return filters\n            .filter(function(f) {\n                return f.key === key;\n            })\n            .map(function(f) {\n                return f.cb(value, utils);\n            });\n    };\n\n    // adds a new filter to the list\n    var addFilter = function addFilter(key, cb) {\n        return filters.push({ key: key, cb: cb });\n    };\n\n    var extendDefaultOptions = function extendDefaultOptions(additionalOptions) {\n        return Object.assign(defaultOptions, additionalOptions);\n    };\n\n    var getOptions = function getOptions() {\n        return Object.assign({}, defaultOptions);\n    };\n\n    var setOptions = function setOptions(opts) {\n        forin(opts, function(key, value) {\n            // key does not exist, so this option cannot be set\n            if (!defaultOptions[key]) {\n                return;\n            }\n            defaultOptions[key][0] = getValueByType(\n                value,\n                defaultOptions[key][0],\n                defaultOptions[key][1]\n            );\n        });\n    };\n\n    // default options on app\n    var defaultOptions = {\n        // the id to add to the root element\n        id: [null, Type.STRING],\n\n        // input field name to use\n        name: ['filepond', Type.STRING],\n\n        // disable the field\n        disabled: [false, Type.BOOLEAN],\n\n        // classname to put on wrapper\n        className: [null, Type.STRING],\n\n        // is the field required\n        required: [false, Type.BOOLEAN],\n\n        // Allow media capture when value is set\n        captureMethod: [null, Type.STRING],\n        // - \"camera\", \"microphone\" or \"camcorder\",\n        // - Does not work with multiple on apple devices\n        // - If set, acceptedFileTypes must be made to match with media wildcard \"image/*\", \"audio/*\" or \"video/*\"\n\n        // sync `acceptedFileTypes` property with `accept` attribute\n        allowSyncAcceptAttribute: [true, Type.BOOLEAN],\n\n        // Feature toggles\n        allowDrop: [true, Type.BOOLEAN], // Allow dropping of files\n        allowBrowse: [true, Type.BOOLEAN], // Allow browsing the file system\n        allowPaste: [true, Type.BOOLEAN], // Allow pasting files\n        allowMultiple: [false, Type.BOOLEAN], // Allow multiple files (disabled by default, as multiple attribute is also required on input to allow multiple)\n        allowReplace: [true, Type.BOOLEAN], // Allow dropping a file on other file to replace it (only works when multiple is set to false)\n        allowRevert: [true, Type.BOOLEAN], // Allows user to revert file upload\n        allowRemove: [true, Type.BOOLEAN], // Allow user to remove a file\n        allowProcess: [true, Type.BOOLEAN], // Allows user to process a file, when set to false, this removes the file upload button\n        allowReorder: [false, Type.BOOLEAN], // Allow reordering of files\n        allowDirectoriesOnly: [false, Type.BOOLEAN], // Allow only selecting directories with browse (no support for filtering dnd at this point)\n\n        // Try store file if `server` not set\n        storeAsFile: [false, Type.BOOLEAN],\n\n        // Revert mode\n        forceRevert: [false, Type.BOOLEAN], // Set to 'force' to require the file to be reverted before removal\n\n        // Input requirements\n        maxFiles: [null, Type.INT], // Max number of files\n        checkValidity: [false, Type.BOOLEAN], // Enables custom validity messages\n\n        // Where to put file\n        itemInsertLocationFreedom: [true, Type.BOOLEAN], // Set to false to always add items to begin or end of list\n        itemInsertLocation: ['before', Type.STRING], // Default index in list to add items that have been dropped at the top of the list\n        itemInsertInterval: [75, Type.INT],\n\n        // Drag 'n Drop related\n        dropOnPage: [false, Type.BOOLEAN], // Allow dropping of files anywhere on page (prevents browser from opening file if dropped outside of Up)\n        dropOnElement: [true, Type.BOOLEAN], // Drop needs to happen on element (set to false to also load drops outside of Up)\n        dropValidation: [false, Type.BOOLEAN], // Enable or disable validating files on drop\n        ignoredFiles: [['.ds_store', 'thumbs.db', 'desktop.ini'], Type.ARRAY],\n\n        // Upload related\n        instantUpload: [true, Type.BOOLEAN], // Should upload files immediately on drop\n        maxParallelUploads: [2, Type.INT], // Maximum files to upload in parallel\n        allowMinimumUploadDuration: [true, Type.BOOLEAN], // if true uploads take at least 750 ms, this ensures the user sees the upload progress giving trust the upload actually happened\n\n        // Chunks\n        chunkUploads: [false, Type.BOOLEAN], // Enable chunked uploads\n        chunkForce: [false, Type.BOOLEAN], // Force use of chunk uploads even for files smaller than chunk size\n        chunkSize: [5000000, Type.INT], // Size of chunks (5MB default)\n        chunkRetryDelays: [[500, 1000, 3000], Type.ARRAY], // Amount of times to retry upload of a chunk when it fails\n\n        // The server api end points to use for uploading (see docs)\n        server: [null, Type.SERVER_API],\n\n        // File size calculations, can set to 1024, this is only used for display, properties use file size base 1000\n        fileSizeBase: [1000, Type.INT],\n\n        // Labels and status messages\n        labelFileSizeBytes: ['bytes', Type.STRING],\n        labelFileSizeKilobytes: ['KB', Type.STRING],\n        labelFileSizeMegabytes: ['MB', Type.STRING],\n        labelFileSizeGigabytes: ['GB', Type.STRING],\n\n        labelDecimalSeparator: [getDecimalSeparator(), Type.STRING], // Default is locale separator\n        labelThousandsSeparator: [getThousandsSeparator(), Type.STRING], // Default is locale separator\n\n        labelIdle: [\n            'Drag & Drop your files or <span class=\"filepond--label-action\">Browse</span>',\n            Type.STRING,\n        ],\n\n        labelInvalidField: ['Field contains invalid files', Type.STRING],\n        labelFileWaitingForSize: ['Waiting for size', Type.STRING],\n        labelFileSizeNotAvailable: ['Size not available', Type.STRING],\n        labelFileCountSingular: ['file in list', Type.STRING],\n        labelFileCountPlural: ['files in list', Type.STRING],\n        labelFileLoading: ['Loading', Type.STRING],\n        labelFileAdded: ['Added', Type.STRING], // assistive only\n        labelFileLoadError: ['Error during load', Type.STRING],\n        labelFileRemoved: ['Removed', Type.STRING], // assistive only\n        labelFileRemoveError: ['Error during remove', Type.STRING],\n        labelFileProcessing: ['Uploading', Type.STRING],\n        labelFileProcessingComplete: ['Upload complete', Type.STRING],\n        labelFileProcessingAborted: ['Upload cancelled', Type.STRING],\n        labelFileProcessingError: ['Error during upload', Type.STRING],\n        labelFileProcessingRevertError: ['Error during revert', Type.STRING],\n\n        labelTapToCancel: ['tap to cancel', Type.STRING],\n        labelTapToRetry: ['tap to retry', Type.STRING],\n        labelTapToUndo: ['tap to undo', Type.STRING],\n\n        labelButtonRemoveItem: ['Remove', Type.STRING],\n        labelButtonAbortItemLoad: ['Abort', Type.STRING],\n        labelButtonRetryItemLoad: ['Retry', Type.STRING],\n        labelButtonAbortItemProcessing: ['Cancel', Type.STRING],\n        labelButtonUndoItemProcessing: ['Undo', Type.STRING],\n        labelButtonRetryItemProcessing: ['Retry', Type.STRING],\n        labelButtonProcessItem: ['Upload', Type.STRING],\n\n        // make sure width and height plus viewpox are even numbers so icons are nicely centered\n        iconRemove: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.586 13l-2.293 2.293a1 1 0 0 0 1.414 1.414L13 14.414l2.293 2.293a1 1 0 0 0 1.414-1.414L14.414 13l2.293-2.293a1 1 0 0 0-1.414-1.414L13 11.586l-2.293-2.293a1 1 0 0 0-1.414 1.414L11.586 13z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n            Type.STRING,\n        ],\n\n        iconProcess: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14 10.414v3.585a1 1 0 0 1-2 0v-3.585l-1.293 1.293a1 1 0 0 1-1.414-1.415l3-3a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1-1.414 1.415L14 10.414zM9 18a1 1 0 0 1 0-2h8a1 1 0 0 1 0 2H9z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>',\n            Type.STRING,\n        ],\n\n        iconRetry: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.81 9.185l-.038.02A4.997 4.997 0 0 0 8 13.683a5 5 0 0 0 5 5 5 5 0 0 0 5-5 1 1 0 0 1 2 0A7 7 0 1 1 9.722 7.496l-.842-.21a.999.999 0 1 1 .484-1.94l3.23.806c.535.133.86.675.73 1.21l-.804 3.233a.997.997 0 0 1-1.21.73.997.997 0 0 1-.73-1.21l.23-.928v-.002z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n            Type.STRING,\n        ],\n\n        iconUndo: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.185 10.81l.02-.038A4.997 4.997 0 0 1 13.683 8a5 5 0 0 1 5 5 5 5 0 0 1-5 5 1 1 0 0 0 0 2A7 7 0 1 0 7.496 9.722l-.21-.842a.999.999 0 1 0-1.94.484l.806 3.23c.133.535.675.86 1.21.73l3.233-.803a.997.997 0 0 0 .73-1.21.997.997 0 0 0-1.21-.73l-.928.23-.002-.001z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n            Type.STRING,\n        ],\n\n        iconDone: [\n            '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18.293 9.293a1 1 0 0 1 1.414 1.414l-7.002 7a1 1 0 0 1-1.414 0l-3.998-4a1 1 0 1 1 1.414-1.414L12 15.586l6.294-6.293z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n            Type.STRING,\n        ],\n\n        // event handlers\n        oninit: [null, Type.FUNCTION],\n        onwarning: [null, Type.FUNCTION],\n        onerror: [null, Type.FUNCTION],\n        onactivatefile: [null, Type.FUNCTION],\n        oninitfile: [null, Type.FUNCTION],\n        onaddfilestart: [null, Type.FUNCTION],\n        onaddfileprogress: [null, Type.FUNCTION],\n        onaddfile: [null, Type.FUNCTION],\n        onprocessfilestart: [null, Type.FUNCTION],\n        onprocessfileprogress: [null, Type.FUNCTION],\n        onprocessfileabort: [null, Type.FUNCTION],\n        onprocessfilerevert: [null, Type.FUNCTION],\n        onprocessfile: [null, Type.FUNCTION],\n        onprocessfiles: [null, Type.FUNCTION],\n        onremovefile: [null, Type.FUNCTION],\n        onpreparefile: [null, Type.FUNCTION],\n        onupdatefiles: [null, Type.FUNCTION],\n        onreorderfiles: [null, Type.FUNCTION],\n\n        // hooks\n        beforeDropFile: [null, Type.FUNCTION],\n        beforeAddFile: [null, Type.FUNCTION],\n        beforeRemoveFile: [null, Type.FUNCTION],\n        beforePrepareFile: [null, Type.FUNCTION],\n\n        // styles\n        stylePanelLayout: [null, Type.STRING], // null 'integrated', 'compact', 'circle'\n        stylePanelAspectRatio: [null, Type.STRING], // null or '3:2' or 1\n        styleItemPanelAspectRatio: [null, Type.STRING],\n        styleButtonRemoveItemPosition: ['left', Type.STRING],\n        styleButtonProcessItemPosition: ['right', Type.STRING],\n        styleLoadIndicatorPosition: ['right', Type.STRING],\n        styleProgressIndicatorPosition: ['right', Type.STRING],\n        styleButtonRemoveItemAlign: [false, Type.BOOLEAN],\n\n        // custom initial files array\n        files: [[], Type.ARRAY],\n\n        // show support by displaying credits\n        credits: [['https://pqina.nl/', 'Powered by PQINA'], Type.ARRAY],\n    };\n\n    var getItemByQuery = function getItemByQuery(items, query) {\n        // just return first index\n        if (isEmpty(query)) {\n            return items[0] || null;\n        }\n\n        // query is index\n        if (isInt(query)) {\n            return items[query] || null;\n        }\n\n        // if query is item, get the id\n        if (typeof query === 'object') {\n            query = query.id;\n        }\n\n        // assume query is a string and return item by id\n        return (\n            items.find(function(item) {\n                return item.id === query;\n            }) || null\n        );\n    };\n\n    var getNumericAspectRatioFromString = function getNumericAspectRatioFromString(aspectRatio) {\n        if (isEmpty(aspectRatio)) {\n            return aspectRatio;\n        }\n        if (/:/.test(aspectRatio)) {\n            var parts = aspectRatio.split(':');\n            return parts[1] / parts[0];\n        }\n        return parseFloat(aspectRatio);\n    };\n\n    var getActiveItems = function getActiveItems(items) {\n        return items.filter(function(item) {\n            return !item.archived;\n        });\n    };\n\n    var Status = {\n        EMPTY: 0,\n        IDLE: 1, // waiting\n        ERROR: 2, // a file is in error state\n        BUSY: 3, // busy processing or loading\n        READY: 4, // all files uploaded\n    };\n\n    var res = null;\n    var canUpdateFileInput = function canUpdateFileInput() {\n        if (res === null) {\n            try {\n                var dataTransfer = new DataTransfer();\n                dataTransfer.items.add(new File(['hello world'], 'This_Works.txt'));\n                var el = document.createElement('input');\n                el.setAttribute('type', 'file');\n                el.files = dataTransfer.files;\n                res = el.files.length === 1;\n            } catch (err) {\n                res = false;\n            }\n        }\n        return res;\n    };\n\n    var ITEM_ERROR = [\n        ItemStatus.LOAD_ERROR,\n        ItemStatus.PROCESSING_ERROR,\n        ItemStatus.PROCESSING_REVERT_ERROR,\n    ];\n\n    var ITEM_BUSY = [\n        ItemStatus.LOADING,\n        ItemStatus.PROCESSING,\n        ItemStatus.PROCESSING_QUEUED,\n        ItemStatus.INIT,\n    ];\n\n    var ITEM_READY = [ItemStatus.PROCESSING_COMPLETE];\n\n    var isItemInErrorState = function isItemInErrorState(item) {\n        return ITEM_ERROR.includes(item.status);\n    };\n    var isItemInBusyState = function isItemInBusyState(item) {\n        return ITEM_BUSY.includes(item.status);\n    };\n    var isItemInReadyState = function isItemInReadyState(item) {\n        return ITEM_READY.includes(item.status);\n    };\n\n    var isAsync = function isAsync(state) {\n        return (\n            isObject(state.options.server) &&\n            (isObject(state.options.server.process) || isFunction(state.options.server.process))\n        );\n    };\n\n    var queries = function queries(state) {\n        return {\n            GET_STATUS: function GET_STATUS() {\n                var items = getActiveItems(state.items);\n                var EMPTY = Status.EMPTY,\n                    ERROR = Status.ERROR,\n                    BUSY = Status.BUSY,\n                    IDLE = Status.IDLE,\n                    READY = Status.READY;\n\n                if (items.length === 0) return EMPTY;\n\n                if (items.some(isItemInErrorState)) return ERROR;\n\n                if (items.some(isItemInBusyState)) return BUSY;\n\n                if (items.some(isItemInReadyState)) return READY;\n\n                return IDLE;\n            },\n\n            GET_ITEM: function GET_ITEM(query) {\n                return getItemByQuery(state.items, query);\n            },\n\n            GET_ACTIVE_ITEM: function GET_ACTIVE_ITEM(query) {\n                return getItemByQuery(getActiveItems(state.items), query);\n            },\n\n            GET_ACTIVE_ITEMS: function GET_ACTIVE_ITEMS() {\n                return getActiveItems(state.items);\n            },\n\n            GET_ITEMS: function GET_ITEMS() {\n                return state.items;\n            },\n\n            GET_ITEM_NAME: function GET_ITEM_NAME(query) {\n                var item = getItemByQuery(state.items, query);\n                return item ? item.filename : null;\n            },\n\n            GET_ITEM_SIZE: function GET_ITEM_SIZE(query) {\n                var item = getItemByQuery(state.items, query);\n                return item ? item.fileSize : null;\n            },\n\n            GET_STYLES: function GET_STYLES() {\n                return Object.keys(state.options)\n                    .filter(function(key) {\n                        return /^style/.test(key);\n                    })\n                    .map(function(option) {\n                        return {\n                            name: option,\n                            value: state.options[option],\n                        };\n                    });\n            },\n\n            GET_PANEL_ASPECT_RATIO: function GET_PANEL_ASPECT_RATIO() {\n                var isShapeCircle = /circle/.test(state.options.stylePanelLayout);\n                var aspectRatio = isShapeCircle\n                    ? 1\n                    : getNumericAspectRatioFromString(state.options.stylePanelAspectRatio);\n                return aspectRatio;\n            },\n\n            GET_ITEM_PANEL_ASPECT_RATIO: function GET_ITEM_PANEL_ASPECT_RATIO() {\n                return state.options.styleItemPanelAspectRatio;\n            },\n\n            GET_ITEMS_BY_STATUS: function GET_ITEMS_BY_STATUS(status) {\n                return getActiveItems(state.items).filter(function(item) {\n                    return item.status === status;\n                });\n            },\n\n            GET_TOTAL_ITEMS: function GET_TOTAL_ITEMS() {\n                return getActiveItems(state.items).length;\n            },\n\n            SHOULD_UPDATE_FILE_INPUT: function SHOULD_UPDATE_FILE_INPUT() {\n                return state.options.storeAsFile && canUpdateFileInput() && !isAsync(state);\n            },\n\n            IS_ASYNC: function IS_ASYNC() {\n                return isAsync(state);\n            },\n\n            GET_FILE_SIZE_LABELS: function GET_FILE_SIZE_LABELS(query) {\n                return {\n                    labelBytes: query('GET_LABEL_FILE_SIZE_BYTES') || undefined,\n                    labelKilobytes: query('GET_LABEL_FILE_SIZE_KILOBYTES') || undefined,\n                    labelMegabytes: query('GET_LABEL_FILE_SIZE_MEGABYTES') || undefined,\n                    labelGigabytes: query('GET_LABEL_FILE_SIZE_GIGABYTES') || undefined,\n                };\n            },\n        };\n    };\n\n    var hasRoomForItem = function hasRoomForItem(state) {\n        var count = getActiveItems(state.items).length;\n\n        // if cannot have multiple items, to add one item it should currently not contain items\n        if (!state.options.allowMultiple) {\n            return count === 0;\n        }\n\n        // if allows multiple items, we check if a max item count has been set, if not, there's no limit\n        var maxFileCount = state.options.maxFiles;\n        if (maxFileCount === null) {\n            return true;\n        }\n\n        // we check if the current count is smaller than the max count, if so, another file can still be added\n        if (count < maxFileCount) {\n            return true;\n        }\n\n        // no more room for another file\n        return false;\n    };\n\n    var limit = function limit(value, min, max) {\n        return Math.max(Math.min(max, value), min);\n    };\n\n    var arrayInsert = function arrayInsert(arr, index, item) {\n        return arr.splice(index, 0, item);\n    };\n\n    var insertItem = function insertItem(items, item, index) {\n        if (isEmpty(item)) {\n            return null;\n        }\n\n        // if index is undefined, append\n        if (typeof index === 'undefined') {\n            items.push(item);\n            return item;\n        }\n\n        // limit the index to the size of the items array\n        index = limit(index, 0, items.length);\n\n        // add item to array\n        arrayInsert(items, index, item);\n\n        // expose\n        return item;\n    };\n\n    var isBase64DataURI = function isBase64DataURI(str) {\n        return /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i.test(\n            str\n        );\n    };\n\n    var getFilenameFromURL = function getFilenameFromURL(url) {\n        return ('' + url)\n            .split('/')\n            .pop()\n            .split('?')\n            .shift();\n    };\n\n    var getExtensionFromFilename = function getExtensionFromFilename(name) {\n        return name.split('.').pop();\n    };\n\n    var guesstimateExtension = function guesstimateExtension(type) {\n        // if no extension supplied, exit here\n        if (typeof type !== 'string') {\n            return '';\n        }\n\n        // get subtype\n        var subtype = type.split('/').pop();\n\n        // is svg subtype\n        if (/svg/.test(subtype)) {\n            return 'svg';\n        }\n\n        if (/zip|compressed/.test(subtype)) {\n            return 'zip';\n        }\n\n        if (/plain/.test(subtype)) {\n            return 'txt';\n        }\n\n        if (/msword/.test(subtype)) {\n            return 'doc';\n        }\n\n        // if is valid subtype\n        if (/[a-z]+/.test(subtype)) {\n            // always use jpg extension\n            if (subtype === 'jpeg') {\n                return 'jpg';\n            }\n\n            // return subtype\n            return subtype;\n        }\n\n        return '';\n    };\n\n    var leftPad = function leftPad(value) {\n        var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n        return (padding + value).slice(-padding.length);\n    };\n\n    var getDateString = function getDateString() {\n        var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n        return (\n            date.getFullYear() +\n            '-' +\n            leftPad(date.getMonth() + 1, '00') +\n            '-' +\n            leftPad(date.getDate(), '00') +\n            '_' +\n            leftPad(date.getHours(), '00') +\n            '-' +\n            leftPad(date.getMinutes(), '00') +\n            '-' +\n            leftPad(date.getSeconds(), '00')\n        );\n    };\n\n    var getFileFromBlob = function getFileFromBlob(blob, filename) {\n        var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        var extension = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n        var file =\n            typeof type === 'string'\n                ? blob.slice(0, blob.size, type)\n                : blob.slice(0, blob.size, blob.type);\n        file.lastModifiedDate = new Date();\n\n        // copy relative path\n        if (blob._relativePath) file._relativePath = blob._relativePath;\n\n        // if blob has name property, use as filename if no filename supplied\n        if (!isString(filename)) {\n            filename = getDateString();\n        }\n\n        // if filename supplied but no extension and filename has extension\n        if (filename && extension === null && getExtensionFromFilename(filename)) {\n            file.name = filename;\n        } else {\n            extension = extension || guesstimateExtension(file.type);\n            file.name = filename + (extension ? '.' + extension : '');\n        }\n\n        return file;\n    };\n\n    var getBlobBuilder = function getBlobBuilder() {\n        return (window.BlobBuilder =\n            window.BlobBuilder ||\n            window.WebKitBlobBuilder ||\n            window.MozBlobBuilder ||\n            window.MSBlobBuilder);\n    };\n\n    var createBlob = function createBlob(arrayBuffer, mimeType) {\n        var BB = getBlobBuilder();\n\n        if (BB) {\n            var bb = new BB();\n            bb.append(arrayBuffer);\n            return bb.getBlob(mimeType);\n        }\n\n        return new Blob([arrayBuffer], {\n            type: mimeType,\n        });\n    };\n\n    var getBlobFromByteStringWithMimeType = function getBlobFromByteStringWithMimeType(\n        byteString,\n        mimeType\n    ) {\n        var ab = new ArrayBuffer(byteString.length);\n        var ia = new Uint8Array(ab);\n\n        for (var i = 0; i < byteString.length; i++) {\n            ia[i] = byteString.charCodeAt(i);\n        }\n\n        return createBlob(ab, mimeType);\n    };\n\n    var getMimeTypeFromBase64DataURI = function getMimeTypeFromBase64DataURI(dataURI) {\n        return (/^data:(.+);/.exec(dataURI) || [])[1] || null;\n    };\n\n    var getBase64DataFromBase64DataURI = function getBase64DataFromBase64DataURI(dataURI) {\n        // get data part of string (remove data:image/jpeg...,)\n        var data = dataURI.split(',')[1];\n\n        // remove any whitespace as that causes InvalidCharacterError in IE\n        return data.replace(/\\s/g, '');\n    };\n\n    var getByteStringFromBase64DataURI = function getByteStringFromBase64DataURI(dataURI) {\n        return atob(getBase64DataFromBase64DataURI(dataURI));\n    };\n\n    var getBlobFromBase64DataURI = function getBlobFromBase64DataURI(dataURI) {\n        var mimeType = getMimeTypeFromBase64DataURI(dataURI);\n        var byteString = getByteStringFromBase64DataURI(dataURI);\n\n        return getBlobFromByteStringWithMimeType(byteString, mimeType);\n    };\n\n    var getFileFromBase64DataURI = function getFileFromBase64DataURI(dataURI, filename, extension) {\n        return getFileFromBlob(getBlobFromBase64DataURI(dataURI), filename, null, extension);\n    };\n\n    var getFileNameFromHeader = function getFileNameFromHeader(header) {\n        // test if is content disposition header, if not exit\n        if (!/^content-disposition:/i.test(header)) return null;\n\n        // get filename parts\n        var matches = header\n            .split(/filename=|filename\\*=.+''/)\n            .splice(1)\n            .map(function(name) {\n                return name.trim().replace(/^[\"']|[;\"']{0,2}$/g, '');\n            })\n            .filter(function(name) {\n                return name.length;\n            });\n\n        return matches.length ? decodeURI(matches[matches.length - 1]) : null;\n    };\n\n    var getFileSizeFromHeader = function getFileSizeFromHeader(header) {\n        if (/content-length:/i.test(header)) {\n            var size = header.match(/[0-9]+/)[0];\n            return size ? parseInt(size, 10) : null;\n        }\n        return null;\n    };\n\n    var getTranfserIdFromHeader = function getTranfserIdFromHeader(header) {\n        if (/x-content-transfer-id:/i.test(header)) {\n            var id = (header.split(':')[1] || '').trim();\n            return id || null;\n        }\n        return null;\n    };\n\n    var getFileInfoFromHeaders = function getFileInfoFromHeaders(headers) {\n        var info = {\n            source: null,\n            name: null,\n            size: null,\n        };\n\n        var rows = headers.split('\\n');\n        var _iteratorNormalCompletion = true;\n        var _didIteratorError = false;\n        var _iteratorError = undefined;\n        try {\n            for (\n                var _iterator = rows[Symbol.iterator](), _step;\n                !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n                _iteratorNormalCompletion = true\n            ) {\n                var header = _step.value;\n\n                var name = getFileNameFromHeader(header);\n                if (name) {\n                    info.name = name;\n                    continue;\n                }\n\n                var size = getFileSizeFromHeader(header);\n                if (size) {\n                    info.size = size;\n                    continue;\n                }\n\n                var source = getTranfserIdFromHeader(header);\n                if (source) {\n                    info.source = source;\n                    continue;\n                }\n            }\n        } catch (err) {\n            _didIteratorError = true;\n            _iteratorError = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion && _iterator.return != null) {\n                    _iterator.return();\n                }\n            } finally {\n                if (_didIteratorError) {\n                    throw _iteratorError;\n                }\n            }\n        }\n\n        return info;\n    };\n\n    var createFileLoader = function createFileLoader(fetchFn) {\n        var state = {\n            source: null,\n            complete: false,\n            progress: 0,\n            size: null,\n            timestamp: null,\n            duration: 0,\n            request: null,\n        };\n\n        var getProgress = function getProgress() {\n            return state.progress;\n        };\n        var abort = function abort() {\n            if (state.request && state.request.abort) {\n                state.request.abort();\n            }\n        };\n\n        // load source\n        var load = function load() {\n            // get quick reference\n            var source = state.source;\n\n            api.fire('init', source);\n\n            // Load Files\n            if (source instanceof File) {\n                api.fire('load', source);\n            } else if (source instanceof Blob) {\n                // Load blobs, set default name to current date\n                api.fire('load', getFileFromBlob(source, source.name));\n            } else if (isBase64DataURI(source)) {\n                // Load base 64, set default name to current date\n                api.fire('load', getFileFromBase64DataURI(source));\n            } else {\n                // Deal as if is external URL, let's load it!\n                loadURL(source);\n            }\n        };\n\n        // loads a url\n        var loadURL = function loadURL(url) {\n            // is remote url and no fetch method supplied\n            if (!fetchFn) {\n                api.fire('error', {\n                    type: 'error',\n                    body: \"Can't load URL\",\n                    code: 400,\n                });\n\n                return;\n            }\n\n            // set request start\n            state.timestamp = Date.now();\n\n            // load file\n            state.request = fetchFn(\n                url,\n                function(response) {\n                    // update duration\n                    state.duration = Date.now() - state.timestamp;\n\n                    // done!\n                    state.complete = true;\n\n                    // turn blob response into a file\n                    if (response instanceof Blob) {\n                        response = getFileFromBlob(\n                            response,\n                            response.name || getFilenameFromURL(url)\n                        );\n                    }\n\n                    api.fire(\n                        'load',\n                        // if has received blob, we go with blob, if no response, we return null\n                        response instanceof Blob ? response : response ? response.body : null\n                    );\n                },\n                function(error) {\n                    api.fire(\n                        'error',\n                        typeof error === 'string'\n                            ? {\n                                  type: 'error',\n                                  code: 0,\n                                  body: error,\n                              }\n                            : error\n                    );\n                },\n                function(computable, current, total) {\n                    // collected some meta data already\n                    if (total) {\n                        state.size = total;\n                    }\n\n                    // update duration\n                    state.duration = Date.now() - state.timestamp;\n\n                    // if we can't compute progress, we're not going to fire progress events\n                    if (!computable) {\n                        state.progress = null;\n                        return;\n                    }\n\n                    // update progress percentage\n                    state.progress = current / total;\n\n                    // expose\n                    api.fire('progress', state.progress);\n                },\n                function() {\n                    api.fire('abort');\n                },\n                function(response) {\n                    var fileinfo = getFileInfoFromHeaders(\n                        typeof response === 'string' ? response : response.headers\n                    );\n                    api.fire('meta', {\n                        size: state.size || fileinfo.size,\n                        filename: fileinfo.name,\n                        source: fileinfo.source,\n                    });\n                }\n            );\n        };\n\n        var api = Object.assign({}, on(), {\n            setSource: function setSource(source) {\n                return (state.source = source);\n            },\n            getProgress: getProgress, // file load progress\n            abort: abort, // abort file load\n            load: load, // start load\n        });\n\n        return api;\n    };\n\n    var isGet = function isGet(method) {\n        return /GET|HEAD/.test(method);\n    };\n\n    var sendRequest = function sendRequest(data, url, options) {\n        var api = {\n            onheaders: function onheaders() {},\n            onprogress: function onprogress() {},\n            onload: function onload() {},\n            ontimeout: function ontimeout() {},\n            onerror: function onerror() {},\n            onabort: function onabort() {},\n            abort: function abort() {\n                aborted = true;\n                xhr.abort();\n            },\n        };\n\n        // timeout identifier, only used when timeout is defined\n        var aborted = false;\n        var headersReceived = false;\n\n        // set default options\n        options = Object.assign(\n            {\n                method: 'POST',\n                headers: {},\n                withCredentials: false,\n            },\n            options\n        );\n\n        // encode url\n        url = encodeURI(url);\n\n        // if method is GET, add any received data to url\n\n        if (isGet(options.method) && data) {\n            url =\n                '' +\n                url +\n                encodeURIComponent(typeof data === 'string' ? data : JSON.stringify(data));\n        }\n\n        // create request\n        var xhr = new XMLHttpRequest();\n\n        // progress of load\n        var process = isGet(options.method) ? xhr : xhr.upload;\n        process.onprogress = function(e) {\n            // no progress event when aborted ( onprogress is called once after abort() )\n            if (aborted) {\n                return;\n            }\n\n            api.onprogress(e.lengthComputable, e.loaded, e.total);\n        };\n\n        // tries to get header info to the app as fast as possible\n        xhr.onreadystatechange = function() {\n            // not interesting in these states ('unsent' and 'openend' as they don't give us any additional info)\n            if (xhr.readyState < 2) {\n                return;\n            }\n\n            // no server response\n            if (xhr.readyState === 4 && xhr.status === 0) {\n                return;\n            }\n\n            if (headersReceived) {\n                return;\n            }\n\n            headersReceived = true;\n\n            // we've probably received some useful data in response headers\n            api.onheaders(xhr);\n        };\n\n        // load successful\n        xhr.onload = function() {\n            // is classified as valid response\n            if (xhr.status >= 200 && xhr.status < 300) {\n                api.onload(xhr);\n            } else {\n                api.onerror(xhr);\n            }\n        };\n\n        // error during load\n        xhr.onerror = function() {\n            return api.onerror(xhr);\n        };\n\n        // request aborted\n        xhr.onabort = function() {\n            aborted = true;\n            api.onabort();\n        };\n\n        // request timeout\n        xhr.ontimeout = function() {\n            return api.ontimeout(xhr);\n        };\n\n        // open up open up!\n        xhr.open(options.method, url, true);\n\n        // set timeout if defined (do it after open so IE11 plays ball)\n        if (isInt(options.timeout)) {\n            xhr.timeout = options.timeout;\n        }\n\n        // add headers\n        Object.keys(options.headers).forEach(function(key) {\n            var value = unescape(encodeURIComponent(options.headers[key]));\n            xhr.setRequestHeader(key, value);\n        });\n\n        // set type of response\n        if (options.responseType) {\n            xhr.responseType = options.responseType;\n        }\n\n        // set credentials\n        if (options.withCredentials) {\n            xhr.withCredentials = true;\n        }\n\n        // let's send our data\n        xhr.send(data);\n\n        return api;\n    };\n\n    var createResponse = function createResponse(type, code, body, headers) {\n        return {\n            type: type,\n            code: code,\n            body: body,\n            headers: headers,\n        };\n    };\n\n    var createTimeoutResponse = function createTimeoutResponse(cb) {\n        return function(xhr) {\n            cb(createResponse('error', 0, 'Timeout', xhr.getAllResponseHeaders()));\n        };\n    };\n\n    var hasQS = function hasQS(str) {\n        return /\\?/.test(str);\n    };\n    var buildURL = function buildURL() {\n        var url = '';\n        for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n            parts[_key] = arguments[_key];\n        }\n        parts.forEach(function(part) {\n            url += hasQS(url) && hasQS(part) ? part.replace(/\\?/, '&') : part;\n        });\n        return url;\n    };\n\n    var createFetchFunction = function createFetchFunction() {\n        var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n        var action = arguments.length > 1 ? arguments[1] : undefined;\n        // custom handler (should also handle file, load, error, progress and abort)\n        if (typeof action === 'function') {\n            return action;\n        }\n\n        // no action supplied\n        if (!action || !isString(action.url)) {\n            return null;\n        }\n\n        // set onload hanlder\n        var onload =\n            action.onload ||\n            function(res) {\n                return res;\n            };\n        var onerror =\n            action.onerror ||\n            function(res) {\n                return null;\n            };\n\n        // internal handler\n        return function(url, load, error, progress, abort, headers) {\n            // do local or remote request based on if the url is external\n            var request = sendRequest(\n                url,\n                buildURL(apiUrl, action.url),\n                Object.assign({}, action, {\n                    responseType: 'blob',\n                })\n            );\n\n            request.onload = function(xhr) {\n                // get headers\n                var headers = xhr.getAllResponseHeaders();\n\n                // get filename\n                var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n                // create response\n                load(\n                    createResponse(\n                        'load',\n                        xhr.status,\n                        action.method === 'HEAD'\n                            ? null\n                            : getFileFromBlob(onload(xhr.response), filename),\n                        headers\n                    )\n                );\n            };\n\n            request.onerror = function(xhr) {\n                error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.onheaders = function(xhr) {\n                headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n            request.onprogress = progress;\n            request.onabort = abort;\n\n            // should return request\n            return request;\n        };\n    };\n\n    var ChunkStatus = {\n        QUEUED: 0,\n        COMPLETE: 1,\n        PROCESSING: 2,\n        ERROR: 3,\n        WAITING: 4,\n    };\n\n    /*\n                                                       function signature:\n                                                         (file, metadata, load, error, progress, abort, transfer, options) => {\n                                                           return {\n                                                           abort:() => {}\n                                                         }\n                                                       }\n                                                       */\n\n    // apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options\n    var processFileChunked = function processFileChunked(\n        apiUrl,\n        action,\n        name,\n        file,\n        metadata,\n        load,\n        error,\n        progress,\n        abort,\n        transfer,\n        options\n    ) {\n        // all chunks\n        var chunks = [];\n        var chunkTransferId = options.chunkTransferId,\n            chunkServer = options.chunkServer,\n            chunkSize = options.chunkSize,\n            chunkRetryDelays = options.chunkRetryDelays;\n\n        // default state\n        var state = {\n            serverId: chunkTransferId,\n            aborted: false,\n        };\n\n        // set onload handlers\n        var ondata =\n            action.ondata ||\n            function(fd) {\n                return fd;\n            };\n        var onload =\n            action.onload ||\n            function(xhr, method) {\n                return method === 'HEAD' ? xhr.getResponseHeader('Upload-Offset') : xhr.response;\n            };\n        var onerror =\n            action.onerror ||\n            function(res) {\n                return null;\n            };\n\n        // create server hook\n        var requestTransferId = function requestTransferId(cb) {\n            var formData = new FormData();\n\n            // add metadata under same name\n            if (isObject(metadata)) formData.append(name, JSON.stringify(metadata));\n\n            var headers =\n                typeof action.headers === 'function'\n                    ? action.headers(file, metadata)\n                    : Object.assign(\n                          {},\n\n                          action.headers,\n                          {\n                              'Upload-Length': file.size,\n                          }\n                      );\n\n            var requestParams = Object.assign({}, action, {\n                headers: headers,\n            });\n\n            // send request object\n            var request = sendRequest(\n                ondata(formData),\n                buildURL(apiUrl, action.url),\n                requestParams\n            );\n\n            request.onload = function(xhr) {\n                return cb(onload(xhr, requestParams.method));\n            };\n\n            request.onerror = function(xhr) {\n                return error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n        };\n\n        var requestTransferOffset = function requestTransferOffset(cb) {\n            var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n            var headers =\n                typeof action.headers === 'function'\n                    ? action.headers(state.serverId)\n                    : Object.assign(\n                          {},\n\n                          action.headers\n                      );\n\n            var requestParams = {\n                headers: headers,\n                method: 'HEAD',\n            };\n\n            var request = sendRequest(null, requestUrl, requestParams);\n\n            request.onload = function(xhr) {\n                return cb(onload(xhr, requestParams.method));\n            };\n\n            request.onerror = function(xhr) {\n                return error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n        };\n\n        // create chunks\n        var lastChunkIndex = Math.floor(file.size / chunkSize);\n        for (var i = 0; i <= lastChunkIndex; i++) {\n            var offset = i * chunkSize;\n            var data = file.slice(offset, offset + chunkSize, 'application/offset+octet-stream');\n            chunks[i] = {\n                index: i,\n                size: data.size,\n                offset: offset,\n                data: data,\n                file: file,\n                progress: 0,\n                retries: _toConsumableArray(chunkRetryDelays),\n                status: ChunkStatus.QUEUED,\n                error: null,\n                request: null,\n                timeout: null,\n            };\n        }\n\n        var completeProcessingChunks = function completeProcessingChunks() {\n            return load(state.serverId);\n        };\n\n        var canProcessChunk = function canProcessChunk(chunk) {\n            return chunk.status === ChunkStatus.QUEUED || chunk.status === ChunkStatus.ERROR;\n        };\n\n        var processChunk = function processChunk(chunk) {\n            // processing is paused, wait here\n            if (state.aborted) return;\n\n            // get next chunk to process\n            chunk = chunk || chunks.find(canProcessChunk);\n\n            // no more chunks to process\n            if (!chunk) {\n                // all done?\n                if (\n                    chunks.every(function(chunk) {\n                        return chunk.status === ChunkStatus.COMPLETE;\n                    })\n                ) {\n                    completeProcessingChunks();\n                }\n\n                // no chunk to handle\n                return;\n            }\n\n            // now processing this chunk\n            chunk.status = ChunkStatus.PROCESSING;\n            chunk.progress = null;\n\n            // allow parsing of formdata\n            var ondata =\n                chunkServer.ondata ||\n                function(fd) {\n                    return fd;\n                };\n            var onerror =\n                chunkServer.onerror ||\n                function(res) {\n                    return null;\n                };\n            var onload = chunkServer.onload || function() {};\n\n            // send request object\n            var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n            var headers =\n                typeof chunkServer.headers === 'function'\n                    ? chunkServer.headers(chunk)\n                    : Object.assign(\n                          {},\n\n                          chunkServer.headers,\n                          {\n                              'Content-Type': 'application/offset+octet-stream',\n                              'Upload-Offset': chunk.offset,\n                              'Upload-Length': file.size,\n                              'Upload-Name': file.name,\n                          }\n                      );\n\n            var request = (chunk.request = sendRequest(\n                ondata(chunk.data),\n                requestUrl,\n                Object.assign({}, chunkServer, {\n                    headers: headers,\n                })\n            ));\n\n            request.onload = function(xhr) {\n                // allow hooking into request result\n                onload(xhr, chunk.index, chunks.length);\n\n                // done!\n                chunk.status = ChunkStatus.COMPLETE;\n\n                // remove request reference\n                chunk.request = null;\n\n                // start processing more chunks\n                processChunks();\n            };\n\n            request.onprogress = function(lengthComputable, loaded, total) {\n                chunk.progress = lengthComputable ? loaded : null;\n                updateTotalProgress();\n            };\n\n            request.onerror = function(xhr) {\n                chunk.status = ChunkStatus.ERROR;\n                chunk.request = null;\n                chunk.error = onerror(xhr.response) || xhr.statusText;\n                if (!retryProcessChunk(chunk)) {\n                    error(\n                        createResponse(\n                            'error',\n                            xhr.status,\n                            onerror(xhr.response) || xhr.statusText,\n                            xhr.getAllResponseHeaders()\n                        )\n                    );\n                }\n            };\n\n            request.ontimeout = function(xhr) {\n                chunk.status = ChunkStatus.ERROR;\n                chunk.request = null;\n                if (!retryProcessChunk(chunk)) {\n                    createTimeoutResponse(error)(xhr);\n                }\n            };\n\n            request.onabort = function() {\n                chunk.status = ChunkStatus.QUEUED;\n                chunk.request = null;\n                abort();\n            };\n        };\n\n        var retryProcessChunk = function retryProcessChunk(chunk) {\n            // no more retries left\n            if (chunk.retries.length === 0) return false;\n\n            // new retry\n            chunk.status = ChunkStatus.WAITING;\n            clearTimeout(chunk.timeout);\n            chunk.timeout = setTimeout(function() {\n                processChunk(chunk);\n            }, chunk.retries.shift());\n\n            // we're going to retry\n            return true;\n        };\n\n        var updateTotalProgress = function updateTotalProgress() {\n            // calculate total progress fraction\n            var totalBytesTransfered = chunks.reduce(function(p, chunk) {\n                if (p === null || chunk.progress === null) return null;\n                return p + chunk.progress;\n            }, 0);\n\n            // can't compute progress\n            if (totalBytesTransfered === null) return progress(false, 0, 0);\n\n            // calculate progress values\n            var totalSize = chunks.reduce(function(total, chunk) {\n                return total + chunk.size;\n            }, 0);\n\n            // can update progress indicator\n            progress(true, totalBytesTransfered, totalSize);\n        };\n\n        // process new chunks\n        var processChunks = function processChunks() {\n            var totalProcessing = chunks.filter(function(chunk) {\n                return chunk.status === ChunkStatus.PROCESSING;\n            }).length;\n            if (totalProcessing >= 1) return;\n            processChunk();\n        };\n\n        var abortChunks = function abortChunks() {\n            chunks.forEach(function(chunk) {\n                clearTimeout(chunk.timeout);\n                if (chunk.request) {\n                    chunk.request.abort();\n                }\n            });\n        };\n\n        // let's go!\n        if (!state.serverId) {\n            requestTransferId(function(serverId) {\n                // stop here if aborted, might have happened in between request and callback\n                if (state.aborted) return;\n\n                // pass back to item so we can use it if something goes wrong\n                transfer(serverId);\n\n                // store internally\n                state.serverId = serverId;\n                processChunks();\n            });\n        } else {\n            requestTransferOffset(function(offset) {\n                // stop here if aborted, might have happened in between request and callback\n                if (state.aborted) return;\n\n                // mark chunks with lower offset as complete\n                chunks\n                    .filter(function(chunk) {\n                        return chunk.offset < offset;\n                    })\n                    .forEach(function(chunk) {\n                        chunk.status = ChunkStatus.COMPLETE;\n                        chunk.progress = chunk.size;\n                    });\n\n                // continue processing\n                processChunks();\n            });\n        }\n\n        return {\n            abort: function abort() {\n                state.aborted = true;\n                abortChunks();\n            },\n        };\n    };\n\n    /*\n                                                               function signature:\n                                                                 (file, metadata, load, error, progress, abort) => {\n                                                                   return {\n                                                                   abort:() => {}\n                                                                 }\n                                                               }\n                                                               */\n    var createFileProcessorFunction = function createFileProcessorFunction(\n        apiUrl,\n        action,\n        name,\n        options\n    ) {\n        return function(file, metadata, load, error, progress, abort, transfer) {\n            // no file received\n            if (!file) return;\n\n            // if was passed a file, and we can chunk it, exit here\n            var canChunkUpload = options.chunkUploads;\n            var shouldChunkUpload = canChunkUpload && file.size > options.chunkSize;\n            var willChunkUpload = canChunkUpload && (shouldChunkUpload || options.chunkForce);\n            if (file instanceof Blob && willChunkUpload)\n                return processFileChunked(\n                    apiUrl,\n                    action,\n                    name,\n                    file,\n                    metadata,\n                    load,\n                    error,\n                    progress,\n                    abort,\n                    transfer,\n                    options\n                );\n\n            // set handlers\n            var ondata =\n                action.ondata ||\n                function(fd) {\n                    return fd;\n                };\n            var onload =\n                action.onload ||\n                function(res) {\n                    return res;\n                };\n            var onerror =\n                action.onerror ||\n                function(res) {\n                    return null;\n                };\n\n            var headers =\n                typeof action.headers === 'function'\n                    ? action.headers(file, metadata) || {}\n                    : Object.assign(\n                          {},\n\n                          action.headers\n                      );\n\n            var requestParams = Object.assign({}, action, {\n                headers: headers,\n            });\n\n            // create formdata object\n            var formData = new FormData();\n\n            // add metadata under same name\n            if (isObject(metadata)) {\n                formData.append(name, JSON.stringify(metadata));\n            }\n\n            // Turn into an array of objects so no matter what the input, we can handle it the same way\n            (file instanceof Blob ? [{ name: null, file: file }] : file).forEach(function(item) {\n                formData.append(\n                    name,\n                    item.file,\n                    item.name === null ? item.file.name : '' + item.name + item.file.name\n                );\n            });\n\n            // send request object\n            var request = sendRequest(\n                ondata(formData),\n                buildURL(apiUrl, action.url),\n                requestParams\n            );\n            request.onload = function(xhr) {\n                load(\n                    createResponse(\n                        'load',\n                        xhr.status,\n                        onload(xhr.response),\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.onerror = function(xhr) {\n                error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n            request.onprogress = progress;\n            request.onabort = abort;\n\n            // should return request\n            return request;\n        };\n    };\n\n    var createProcessorFunction = function createProcessorFunction() {\n        var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n        var action = arguments.length > 1 ? arguments[1] : undefined;\n        var name = arguments.length > 2 ? arguments[2] : undefined;\n        var options = arguments.length > 3 ? arguments[3] : undefined;\n\n        // custom handler (should also handle file, load, error, progress and abort)\n        if (typeof action === 'function')\n            return function() {\n                for (\n                    var _len = arguments.length, params = new Array(_len), _key = 0;\n                    _key < _len;\n                    _key++\n                ) {\n                    params[_key] = arguments[_key];\n                }\n                return action.apply(void 0, [name].concat(params, [options]));\n            };\n\n        // no action supplied\n        if (!action || !isString(action.url)) return null;\n\n        // internal handler\n        return createFileProcessorFunction(apiUrl, action, name, options);\n    };\n\n    /*\n                                                      function signature:\n                                                      (uniqueFileId, load, error) => { }\n                                                      */\n    var createRevertFunction = function createRevertFunction() {\n        var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n        var action = arguments.length > 1 ? arguments[1] : undefined;\n        // is custom implementation\n        if (typeof action === 'function') {\n            return action;\n        }\n\n        // no action supplied, return stub function, interface will work, but file won't be removed\n        if (!action || !isString(action.url)) {\n            return function(uniqueFileId, load) {\n                return load();\n            };\n        }\n\n        // set onload hanlder\n        var onload =\n            action.onload ||\n            function(res) {\n                return res;\n            };\n        var onerror =\n            action.onerror ||\n            function(res) {\n                return null;\n            };\n\n        // internal implementation\n        return function(uniqueFileId, load, error) {\n            var request = sendRequest(\n                uniqueFileId,\n                apiUrl + action.url,\n                action // contains method, headers and withCredentials properties\n            );\n            request.onload = function(xhr) {\n                load(\n                    createResponse(\n                        'load',\n                        xhr.status,\n                        onload(xhr.response),\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.onerror = function(xhr) {\n                error(\n                    createResponse(\n                        'error',\n                        xhr.status,\n                        onerror(xhr.response) || xhr.statusText,\n                        xhr.getAllResponseHeaders()\n                    )\n                );\n            };\n\n            request.ontimeout = createTimeoutResponse(error);\n\n            return request;\n        };\n    };\n\n    var getRandomNumber = function getRandomNumber() {\n        var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n        var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n        return min + Math.random() * (max - min);\n    };\n\n    var createPerceivedPerformanceUpdater = function createPerceivedPerformanceUpdater(cb) {\n        var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n        var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n        var tickMin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;\n        var tickMax = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 250;\n        var timeout = null;\n        var start = Date.now();\n\n        var tick = function tick() {\n            var runtime = Date.now() - start;\n            var delay = getRandomNumber(tickMin, tickMax);\n\n            if (runtime + delay > duration) {\n                delay = runtime + delay - duration;\n            }\n\n            var progress = runtime / duration;\n            if (progress >= 1 || document.hidden) {\n                cb(1);\n                return;\n            }\n\n            cb(progress);\n\n            timeout = setTimeout(tick, delay);\n        };\n\n        if (duration > 0) tick();\n\n        return {\n            clear: function clear() {\n                clearTimeout(timeout);\n            },\n        };\n    };\n\n    var createFileProcessor = function createFileProcessor(processFn, options) {\n        var state = {\n            complete: false,\n            perceivedProgress: 0,\n            perceivedPerformanceUpdater: null,\n            progress: null,\n            timestamp: null,\n            perceivedDuration: 0,\n            duration: 0,\n            request: null,\n            response: null,\n        };\n        var allowMinimumUploadDuration = options.allowMinimumUploadDuration;\n\n        var process = function process(file, metadata) {\n            var progressFn = function progressFn() {\n                // we've not yet started the real download, stop here\n                // the request might not go through, for instance, there might be some server trouble\n                // if state.progress is null, the server does not allow computing progress and we show the spinner instead\n                if (state.duration === 0 || state.progress === null) return;\n\n                // as we're now processing, fire the progress event\n                api.fire('progress', api.getProgress());\n            };\n\n            var completeFn = function completeFn() {\n                state.complete = true;\n                api.fire('load-perceived', state.response.body);\n            };\n\n            // let's start processing\n            api.fire('start');\n\n            // set request start\n            state.timestamp = Date.now();\n\n            // create perceived performance progress indicator\n            state.perceivedPerformanceUpdater = createPerceivedPerformanceUpdater(\n                function(progress) {\n                    state.perceivedProgress = progress;\n                    state.perceivedDuration = Date.now() - state.timestamp;\n\n                    progressFn();\n\n                    // if fake progress is done, and a response has been received,\n                    // and we've not yet called the complete method\n                    if (state.response && state.perceivedProgress === 1 && !state.complete) {\n                        // we done!\n                        completeFn();\n                    }\n                },\n                // random delay as in a list of files you start noticing\n                // files uploading at the exact same speed\n                allowMinimumUploadDuration ? getRandomNumber(750, 1500) : 0\n            );\n\n            // remember request so we can abort it later\n            state.request = processFn(\n                // the file to process\n                file,\n\n                // the metadata to send along\n                metadata,\n\n                // callbacks (load, error, progress, abort, transfer)\n                // load expects the body to be a server id if\n                // you want to make use of revert\n                function(response) {\n                    // we put the response in state so we can access\n                    // it outside of this method\n                    state.response = isObject(response)\n                        ? response\n                        : {\n                              type: 'load',\n                              code: 200,\n                              body: '' + response,\n                              headers: {},\n                          };\n\n                    // update duration\n                    state.duration = Date.now() - state.timestamp;\n\n                    // force progress to 1 as we're now done\n                    state.progress = 1;\n\n                    // actual load is done let's share results\n                    api.fire('load', state.response.body);\n\n                    // we are really done\n                    // if perceived progress is 1 ( wait for perceived progress to complete )\n                    // or if server does not support progress ( null )\n                    if (\n                        !allowMinimumUploadDuration ||\n                        (allowMinimumUploadDuration && state.perceivedProgress === 1)\n                    ) {\n                        completeFn();\n                    }\n                },\n\n                // error is expected to be an object with type, code, body\n                function(error) {\n                    // cancel updater\n                    state.perceivedPerformanceUpdater.clear();\n\n                    // update others about this error\n                    api.fire(\n                        'error',\n                        isObject(error)\n                            ? error\n                            : {\n                                  type: 'error',\n                                  code: 0,\n                                  body: '' + error,\n                              }\n                    );\n                },\n\n                // actual processing progress\n                function(computable, current, total) {\n                    // update actual duration\n                    state.duration = Date.now() - state.timestamp;\n\n                    // update actual progress\n                    state.progress = computable ? current / total : null;\n\n                    progressFn();\n                },\n\n                // abort does not expect a value\n                function() {\n                    // stop updater\n                    state.perceivedPerformanceUpdater.clear();\n\n                    // fire the abort event so we can switch visuals\n                    api.fire('abort', state.response ? state.response.body : null);\n                },\n\n                // register the id for this transfer\n                function(transferId) {\n                    api.fire('transfer', transferId);\n                }\n            );\n        };\n\n        var abort = function abort() {\n            // no request running, can't abort\n            if (!state.request) return;\n\n            // stop updater\n            state.perceivedPerformanceUpdater.clear();\n\n            // abort actual request\n            if (state.request.abort) state.request.abort();\n\n            // if has response object, we've completed the request\n            state.complete = true;\n        };\n\n        var reset = function reset() {\n            abort();\n            state.complete = false;\n            state.perceivedProgress = 0;\n            state.progress = 0;\n            state.timestamp = null;\n            state.perceivedDuration = 0;\n            state.duration = 0;\n            state.request = null;\n            state.response = null;\n        };\n\n        var getProgress = allowMinimumUploadDuration\n            ? function() {\n                  return state.progress ? Math.min(state.progress, state.perceivedProgress) : null;\n              }\n            : function() {\n                  return state.progress || null;\n              };\n\n        var getDuration = allowMinimumUploadDuration\n            ? function() {\n                  return Math.min(state.duration, state.perceivedDuration);\n              }\n            : function() {\n                  return state.duration;\n              };\n\n        var api = Object.assign({}, on(), {\n            process: process, // start processing file\n            abort: abort, // abort active process request\n            getProgress: getProgress,\n            getDuration: getDuration,\n            reset: reset,\n        });\n\n        return api;\n    };\n\n    var getFilenameWithoutExtension = function getFilenameWithoutExtension(name) {\n        return name.substring(0, name.lastIndexOf('.')) || name;\n    };\n\n    var createFileStub = function createFileStub(source) {\n        var data = [source.name, source.size, source.type];\n\n        // is blob or base64, then we need to set the name\n        if (source instanceof Blob || isBase64DataURI(source)) {\n            data[0] = source.name || getDateString();\n        } else if (isBase64DataURI(source)) {\n            // if is base64 data uri we need to determine the average size and type\n            data[1] = source.length;\n            data[2] = getMimeTypeFromBase64DataURI(source);\n        } else if (isString(source)) {\n            // url\n            data[0] = getFilenameFromURL(source);\n            data[1] = 0;\n            data[2] = 'application/octet-stream';\n        }\n\n        return {\n            name: data[0],\n            size: data[1],\n            type: data[2],\n        };\n    };\n\n    var isFile = function isFile(value) {\n        return !!(value instanceof File || (value instanceof Blob && value.name));\n    };\n\n    var deepCloneObject = function deepCloneObject(src) {\n        if (!isObject(src)) return src;\n        var target = isArray(src) ? [] : {};\n        for (var key in src) {\n            if (!src.hasOwnProperty(key)) continue;\n            var v = src[key];\n            target[key] = v && isObject(v) ? deepCloneObject(v) : v;\n        }\n        return target;\n    };\n\n    var createItem = function createItem() {\n        var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n        var serverFileReference =\n            arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n        var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n        // unique id for this item, is used to identify the item across views\n        var id = getUniqueId();\n\n        /**\n         * Internal item state\n         */\n        var state = {\n            // is archived\n            archived: false,\n\n            // if is frozen, no longer fires events\n            frozen: false,\n\n            // removed from view\n            released: false,\n\n            // original source\n            source: null,\n\n            // file model reference\n            file: file,\n\n            // id of file on server\n            serverFileReference: serverFileReference,\n\n            // id of file transfer on server\n            transferId: null,\n\n            // is aborted\n            processingAborted: false,\n\n            // current item status\n            status: serverFileReference ? ItemStatus.PROCESSING_COMPLETE : ItemStatus.INIT,\n\n            // active processes\n            activeLoader: null,\n            activeProcessor: null,\n        };\n\n        // callback used when abort processing is called to link back to the resolve method\n        var abortProcessingRequestComplete = null;\n\n        /**\n         * Externally added item metadata\n         */\n        var metadata = {};\n\n        // item data\n        var setStatus = function setStatus(status) {\n            return (state.status = status);\n        };\n\n        // fire event unless the item has been archived\n        var fire = function fire(event) {\n            if (state.released || state.frozen) return;\n            for (\n                var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n                _key < _len;\n                _key++\n            ) {\n                params[_key - 1] = arguments[_key];\n            }\n            api.fire.apply(api, [event].concat(params));\n        };\n\n        // file data\n        var getFileExtension = function getFileExtension() {\n            return getExtensionFromFilename(state.file.name);\n        };\n        var getFileType = function getFileType() {\n            return state.file.type;\n        };\n        var getFileSize = function getFileSize() {\n            return state.file.size;\n        };\n        var getFile = function getFile() {\n            return state.file;\n        };\n\n        //\n        // logic to load a file\n        //\n        var load = function load(source, loader, onload) {\n            // remember the original item source\n            state.source = source;\n\n            // source is known\n            api.fireSync('init');\n\n            // file stub is already there\n            if (state.file) {\n                api.fireSync('load-skip');\n                return;\n            }\n\n            // set a stub file object while loading the actual data\n            state.file = createFileStub(source);\n\n            // starts loading\n            loader.on('init', function() {\n                fire('load-init');\n            });\n\n            // we'eve received a size indication, let's update the stub\n            loader.on('meta', function(meta) {\n                // set size of file stub\n                state.file.size = meta.size;\n\n                // set name of file stub\n                state.file.filename = meta.filename;\n\n                // if has received source, we done\n                if (meta.source) {\n                    origin = FileOrigin.LIMBO;\n                    state.serverFileReference = meta.source;\n                    state.status = ItemStatus.PROCESSING_COMPLETE;\n                }\n\n                // size has been updated\n                fire('load-meta');\n            });\n\n            // the file is now loading we need to update the progress indicators\n            loader.on('progress', function(progress) {\n                setStatus(ItemStatus.LOADING);\n\n                fire('load-progress', progress);\n            });\n\n            // an error was thrown while loading the file, we need to switch to error state\n            loader.on('error', function(error) {\n                setStatus(ItemStatus.LOAD_ERROR);\n\n                fire('load-request-error', error);\n            });\n\n            // user or another process aborted the file load (cannot retry)\n            loader.on('abort', function() {\n                setStatus(ItemStatus.INIT);\n                fire('load-abort');\n            });\n\n            // done loading\n            loader.on('load', function(file) {\n                // as we've now loaded the file the loader is no longer required\n                state.activeLoader = null;\n\n                // called when file has loaded succesfully\n                var success = function success(result) {\n                    // set (possibly) transformed file\n                    state.file = isFile(result) ? result : state.file;\n\n                    // file received\n                    if (origin === FileOrigin.LIMBO && state.serverFileReference) {\n                        setStatus(ItemStatus.PROCESSING_COMPLETE);\n                    } else {\n                        setStatus(ItemStatus.IDLE);\n                    }\n\n                    fire('load');\n                };\n\n                var error = function error(result) {\n                    // set original file\n                    state.file = file;\n                    fire('load-meta');\n\n                    setStatus(ItemStatus.LOAD_ERROR);\n                    fire('load-file-error', result);\n                };\n\n                // if we already have a server file reference, we don't need to call the onload method\n                if (state.serverFileReference) {\n                    success(file);\n                    return;\n                }\n\n                // no server id, let's give this file the full treatment\n                onload(file, success, error);\n            });\n\n            // set loader source data\n            loader.setSource(source);\n\n            // set as active loader\n            state.activeLoader = loader;\n\n            // load the source data\n            loader.load();\n        };\n\n        var retryLoad = function retryLoad() {\n            if (!state.activeLoader) {\n                return;\n            }\n            state.activeLoader.load();\n        };\n\n        var abortLoad = function abortLoad() {\n            if (state.activeLoader) {\n                state.activeLoader.abort();\n                return;\n            }\n            setStatus(ItemStatus.INIT);\n            fire('load-abort');\n        };\n\n        //\n        // logic to process a file\n        //\n        var process = function process(processor, onprocess) {\n            // processing was aborted\n            if (state.processingAborted) {\n                state.processingAborted = false;\n                return;\n            }\n\n            // now processing\n            setStatus(ItemStatus.PROCESSING);\n\n            // reset abort callback\n            abortProcessingRequestComplete = null;\n\n            // if no file loaded we'll wait for the load event\n            if (!(state.file instanceof Blob)) {\n                api.on('load', function() {\n                    process(processor, onprocess);\n                });\n                return;\n            }\n\n            // setup processor\n            processor.on('load', function(serverFileReference) {\n                // need this id to be able to revert the upload\n                state.transferId = null;\n                state.serverFileReference = serverFileReference;\n            });\n\n            // register transfer id\n            processor.on('transfer', function(transferId) {\n                // need this id to be able to revert the upload\n                state.transferId = transferId;\n            });\n\n            processor.on('load-perceived', function(serverFileReference) {\n                // no longer required\n                state.activeProcessor = null;\n\n                // need this id to be able to rever the upload\n                state.transferId = null;\n                state.serverFileReference = serverFileReference;\n\n                setStatus(ItemStatus.PROCESSING_COMPLETE);\n                fire('process-complete', serverFileReference);\n            });\n\n            processor.on('start', function() {\n                fire('process-start');\n            });\n\n            processor.on('error', function(error) {\n                state.activeProcessor = null;\n                setStatus(ItemStatus.PROCESSING_ERROR);\n                fire('process-error', error);\n            });\n\n            processor.on('abort', function(serverFileReference) {\n                state.activeProcessor = null;\n\n                // if file was uploaded but processing was cancelled during perceived processor time store file reference\n                state.serverFileReference = serverFileReference;\n\n                setStatus(ItemStatus.IDLE);\n                fire('process-abort');\n\n                // has timeout so doesn't interfere with remove action\n                if (abortProcessingRequestComplete) {\n                    abortProcessingRequestComplete();\n                }\n            });\n\n            processor.on('progress', function(progress) {\n                fire('process-progress', progress);\n            });\n\n            // when successfully transformed\n            var success = function success(file) {\n                // if was archived in the mean time, don't process\n                if (state.archived) return;\n\n                // process file!\n                processor.process(file, Object.assign({}, metadata));\n            };\n\n            // something went wrong during transform phase\n            var error = console.error;\n\n            // start processing the file\n            onprocess(state.file, success, error);\n\n            // set as active processor\n            state.activeProcessor = processor;\n        };\n\n        var requestProcessing = function requestProcessing() {\n            state.processingAborted = false;\n            setStatus(ItemStatus.PROCESSING_QUEUED);\n        };\n\n        var abortProcessing = function abortProcessing() {\n            return new Promise(function(resolve) {\n                if (!state.activeProcessor) {\n                    state.processingAborted = true;\n\n                    setStatus(ItemStatus.IDLE);\n                    fire('process-abort');\n\n                    resolve();\n                    return;\n                }\n\n                abortProcessingRequestComplete = function abortProcessingRequestComplete() {\n                    resolve();\n                };\n\n                state.activeProcessor.abort();\n            });\n        };\n\n        //\n        // logic to revert a processed file\n        //\n        var revert = function revert(revertFileUpload, forceRevert) {\n            return new Promise(function(resolve, reject) {\n                // a completed upload will have a serverFileReference, a failed chunked upload where\n                // getting a serverId succeeded but >=0 chunks have been uploaded will have transferId set\n                var serverTransferId =\n                    state.serverFileReference !== null\n                        ? state.serverFileReference\n                        : state.transferId;\n\n                // cannot revert without a server id for this process\n                if (serverTransferId === null) {\n                    resolve();\n                    return;\n                }\n\n                // revert the upload (fire and forget)\n                revertFileUpload(\n                    serverTransferId,\n                    function() {\n                        // reset file server id and transfer id as now it's not available on the server\n                        state.serverFileReference = null;\n                        state.transferId = null;\n                        resolve();\n                    },\n                    function(error) {\n                        // don't set error state when reverting is optional, it will always resolve\n                        if (!forceRevert) {\n                            resolve();\n                            return;\n                        }\n\n                        // oh no errors\n                        setStatus(ItemStatus.PROCESSING_REVERT_ERROR);\n                        fire('process-revert-error');\n                        reject(error);\n                    }\n                );\n\n                // fire event\n                setStatus(ItemStatus.IDLE);\n                fire('process-revert');\n            });\n        };\n\n        // exposed methods\n        var _setMetadata = function setMetadata(key, value, silent) {\n            var keys = key.split('.');\n            var root = keys[0];\n            var last = keys.pop();\n            var data = metadata;\n            keys.forEach(function(key) {\n                return (data = data[key]);\n            });\n\n            // compare old value against new value, if they're the same, we're not updating\n            if (JSON.stringify(data[last]) === JSON.stringify(value)) return;\n\n            // update value\n            data[last] = value;\n\n            // fire update\n            fire('metadata-update', {\n                key: root,\n                value: metadata[root],\n                silent: silent,\n            });\n        };\n\n        var getMetadata = function getMetadata(key) {\n            return deepCloneObject(key ? metadata[key] : metadata);\n        };\n\n        var api = Object.assign(\n            {\n                id: {\n                    get: function get() {\n                        return id;\n                    },\n                },\n                origin: {\n                    get: function get() {\n                        return origin;\n                    },\n                    set: function set(value) {\n                        return (origin = value);\n                    },\n                },\n                serverId: {\n                    get: function get() {\n                        return state.serverFileReference;\n                    },\n                },\n                transferId: {\n                    get: function get() {\n                        return state.transferId;\n                    },\n                },\n                status: {\n                    get: function get() {\n                        return state.status;\n                    },\n                },\n                filename: {\n                    get: function get() {\n                        return state.file.name;\n                    },\n                },\n                filenameWithoutExtension: {\n                    get: function get() {\n                        return getFilenameWithoutExtension(state.file.name);\n                    },\n                },\n                fileExtension: { get: getFileExtension },\n                fileType: { get: getFileType },\n                fileSize: { get: getFileSize },\n                file: { get: getFile },\n                relativePath: {\n                    get: function get() {\n                        return state.file._relativePath;\n                    },\n                },\n\n                source: {\n                    get: function get() {\n                        return state.source;\n                    },\n                },\n\n                getMetadata: getMetadata,\n                setMetadata: function setMetadata(key, value, silent) {\n                    if (isObject(key)) {\n                        var data = key;\n                        Object.keys(data).forEach(function(key) {\n                            _setMetadata(key, data[key], value);\n                        });\n                        return key;\n                    }\n                    _setMetadata(key, value, silent);\n                    return value;\n                },\n\n                extend: function extend(name, handler) {\n                    return (itemAPI[name] = handler);\n                },\n\n                abortLoad: abortLoad,\n                retryLoad: retryLoad,\n                requestProcessing: requestProcessing,\n                abortProcessing: abortProcessing,\n\n                load: load,\n                process: process,\n                revert: revert,\n            },\n\n            on(),\n            {\n                freeze: function freeze() {\n                    return (state.frozen = true);\n                },\n\n                release: function release() {\n                    return (state.released = true);\n                },\n                released: {\n                    get: function get() {\n                        return state.released;\n                    },\n                },\n\n                archive: function archive() {\n                    return (state.archived = true);\n                },\n                archived: {\n                    get: function get() {\n                        return state.archived;\n                    },\n                },\n\n                // replace source and file object\n                setFile: function setFile(file) {\n                    return (state.file = file);\n                },\n            }\n        );\n\n        // create it here instead of returning it instantly so we can extend it later\n        var itemAPI = createObject(api);\n\n        return itemAPI;\n    };\n\n    var getItemIndexByQuery = function getItemIndexByQuery(items, query) {\n        // just return first index\n        if (isEmpty(query)) {\n            return 0;\n        }\n\n        // invalid queries\n        if (!isString(query)) {\n            return -1;\n        }\n\n        // return item by id (or -1 if not found)\n        return items.findIndex(function(item) {\n            return item.id === query;\n        });\n    };\n\n    var getItemById = function getItemById(items, itemId) {\n        var index = getItemIndexByQuery(items, itemId);\n        if (index < 0) {\n            return;\n        }\n        return items[index] || null;\n    };\n\n    var fetchBlob = function fetchBlob(url, load, error, progress, abort, headers) {\n        var request = sendRequest(null, url, {\n            method: 'GET',\n            responseType: 'blob',\n        });\n\n        request.onload = function(xhr) {\n            // get headers\n            var headers = xhr.getAllResponseHeaders();\n\n            // get filename\n            var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n            // create response\n            load(\n                createResponse('load', xhr.status, getFileFromBlob(xhr.response, filename), headers)\n            );\n        };\n\n        request.onerror = function(xhr) {\n            error(createResponse('error', xhr.status, xhr.statusText, xhr.getAllResponseHeaders()));\n        };\n\n        request.onheaders = function(xhr) {\n            headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n        };\n\n        request.ontimeout = createTimeoutResponse(error);\n        request.onprogress = progress;\n        request.onabort = abort;\n\n        // should return request\n        return request;\n    };\n\n    var getDomainFromURL = function getDomainFromURL(url) {\n        if (url.indexOf('//') === 0) {\n            url = location.protocol + url;\n        }\n        return url\n            .toLowerCase()\n            .replace('blob:', '')\n            .replace(/([a-z])?:\\/\\//, '$1')\n            .split('/')[0];\n    };\n\n    var isExternalURL = function isExternalURL(url) {\n        return (\n            (url.indexOf(':') > -1 || url.indexOf('//') > -1) &&\n            getDomainFromURL(location.href) !== getDomainFromURL(url)\n        );\n    };\n\n    var dynamicLabel = function dynamicLabel(label) {\n        return function() {\n            return isFunction(label) ? label.apply(void 0, arguments) : label;\n        };\n    };\n\n    var isMockItem = function isMockItem(item) {\n        return !isFile(item.file);\n    };\n\n    var listUpdated = function listUpdated(dispatch, state) {\n        clearTimeout(state.listUpdateTimeout);\n        state.listUpdateTimeout = setTimeout(function() {\n            dispatch('DID_UPDATE_ITEMS', { items: getActiveItems(state.items) });\n        }, 0);\n    };\n\n    var optionalPromise = function optionalPromise(fn) {\n        for (\n            var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n            _key < _len;\n            _key++\n        ) {\n            params[_key - 1] = arguments[_key];\n        }\n        return new Promise(function(resolve) {\n            if (!fn) {\n                return resolve(true);\n            }\n\n            var result = fn.apply(void 0, params);\n\n            if (result == null) {\n                return resolve(true);\n            }\n\n            if (typeof result === 'boolean') {\n                return resolve(result);\n            }\n\n            if (typeof result.then === 'function') {\n                result.then(resolve);\n            }\n        });\n    };\n\n    var sortItems = function sortItems(state, compare) {\n        state.items.sort(function(a, b) {\n            return compare(createItemAPI(a), createItemAPI(b));\n        });\n    };\n\n    // returns item based on state\n    var getItemByQueryFromState = function getItemByQueryFromState(state, itemHandler) {\n        return function() {\n            var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n            var query = _ref.query,\n                _ref$success = _ref.success,\n                success = _ref$success === void 0 ? function() {} : _ref$success,\n                _ref$failure = _ref.failure,\n                failure = _ref$failure === void 0 ? function() {} : _ref$failure,\n                options = _objectWithoutProperties(_ref, ['query', 'success', 'failure']);\n            var item = getItemByQuery(state.items, query);\n            if (!item) {\n                failure({\n                    error: createResponse('error', 0, 'Item not found'),\n                    file: null,\n                });\n\n                return;\n            }\n            itemHandler(item, success, failure, options || {});\n        };\n    };\n\n    var actions = function actions(dispatch, query, state) {\n        return {\n            /**\n             * Aborts all ongoing processes\n             */\n            ABORT_ALL: function ABORT_ALL() {\n                getActiveItems(state.items).forEach(function(item) {\n                    item.freeze();\n                    item.abortLoad();\n                    item.abortProcessing();\n                });\n            },\n\n            /**\n             * Sets initial files\n             */\n            DID_SET_FILES: function DID_SET_FILES(_ref2) {\n                var _ref2$value = _ref2.value,\n                    value = _ref2$value === void 0 ? [] : _ref2$value;\n                // map values to file objects\n                var files = value.map(function(file) {\n                    return {\n                        source: file.source ? file.source : file,\n                        options: file.options,\n                    };\n                });\n\n                // loop over files, if file is in list, leave it be, if not, remove\n                // test if items should be moved\n                var activeItems = getActiveItems(state.items);\n\n                activeItems.forEach(function(item) {\n                    // if item not is in new value, remove\n                    if (\n                        !files.find(function(file) {\n                            return file.source === item.source || file.source === item.file;\n                        })\n                    ) {\n                        dispatch('REMOVE_ITEM', { query: item, remove: false });\n                    }\n                });\n\n                // add new files\n                activeItems = getActiveItems(state.items);\n                files.forEach(function(file, index) {\n                    // if file is already in list\n                    if (\n                        activeItems.find(function(item) {\n                            return item.source === file.source || item.file === file.source;\n                        })\n                    )\n                        return;\n\n                    // not in list, add\n                    dispatch(\n                        'ADD_ITEM',\n                        Object.assign({}, file, {\n                            interactionMethod: InteractionMethod.NONE,\n                            index: index,\n                        })\n                    );\n                });\n            },\n\n            DID_UPDATE_ITEM_METADATA: function DID_UPDATE_ITEM_METADATA(_ref3) {\n                var id = _ref3.id,\n                    action = _ref3.action,\n                    change = _ref3.change;\n                // don't do anything\n                if (change.silent) return;\n\n                // if is called multiple times in close succession we combined all calls together to save resources\n                clearTimeout(state.itemUpdateTimeout);\n                state.itemUpdateTimeout = setTimeout(function() {\n                    var item = getItemById(state.items, id);\n\n                    // only revert and attempt to upload when we're uploading to a server\n                    if (!query('IS_ASYNC')) {\n                        // should we update the output data\n                        applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n                            item: item,\n                            query: query,\n                            action: action,\n                            change: change,\n                        }).then(function(shouldPrepareOutput) {\n                            // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n                            var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n                            if (beforePrepareFile)\n                                shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n                            if (!shouldPrepareOutput) return;\n\n                            dispatch(\n                                'REQUEST_PREPARE_OUTPUT',\n                                {\n                                    query: id,\n                                    item: item,\n                                    success: function success(file) {\n                                        dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n                                    },\n                                },\n\n                                true\n                            );\n                        });\n\n                        return;\n                    }\n\n                    // if is local item we need to enable upload button so change can be propagated to server\n                    if (item.origin === FileOrigin.LOCAL) {\n                        dispatch('DID_LOAD_ITEM', {\n                            id: item.id,\n                            error: null,\n                            serverFileReference: item.source,\n                        });\n                    }\n\n                    // for async scenarios\n                    var upload = function upload() {\n                        // we push this forward a bit so the interface is updated correctly\n                        setTimeout(function() {\n                            dispatch('REQUEST_ITEM_PROCESSING', { query: id });\n                        }, 32);\n                    };\n\n                    var revert = function revert(doUpload) {\n                        item.revert(\n                            createRevertFunction(\n                                state.options.server.url,\n                                state.options.server.revert\n                            ),\n                            query('GET_FORCE_REVERT')\n                        )\n                            .then(doUpload ? upload : function() {})\n                            .catch(function() {});\n                    };\n\n                    var abort = function abort(doUpload) {\n                        item.abortProcessing().then(doUpload ? upload : function() {});\n                    };\n\n                    // if we should re-upload the file immediately\n                    if (item.status === ItemStatus.PROCESSING_COMPLETE) {\n                        return revert(state.options.instantUpload);\n                    }\n\n                    // if currently uploading, cancel upload\n                    if (item.status === ItemStatus.PROCESSING) {\n                        return abort(state.options.instantUpload);\n                    }\n\n                    if (state.options.instantUpload) {\n                        upload();\n                    }\n                }, 0);\n            },\n\n            MOVE_ITEM: function MOVE_ITEM(_ref4) {\n                var query = _ref4.query,\n                    index = _ref4.index;\n                var item = getItemByQuery(state.items, query);\n                if (!item) return;\n                var currentIndex = state.items.indexOf(item);\n                index = limit(index, 0, state.items.length - 1);\n                if (currentIndex === index) return;\n                state.items.splice(index, 0, state.items.splice(currentIndex, 1)[0]);\n            },\n\n            SORT: function SORT(_ref5) {\n                var compare = _ref5.compare;\n                sortItems(state, compare);\n                dispatch('DID_SORT_ITEMS', {\n                    items: query('GET_ACTIVE_ITEMS'),\n                });\n            },\n\n            ADD_ITEMS: function ADD_ITEMS(_ref6) {\n                var items = _ref6.items,\n                    index = _ref6.index,\n                    interactionMethod = _ref6.interactionMethod,\n                    _ref6$success = _ref6.success,\n                    success = _ref6$success === void 0 ? function() {} : _ref6$success,\n                    _ref6$failure = _ref6.failure,\n                    failure = _ref6$failure === void 0 ? function() {} : _ref6$failure;\n                var currentIndex = index;\n\n                if (index === -1 || typeof index === 'undefined') {\n                    var insertLocation = query('GET_ITEM_INSERT_LOCATION');\n                    var totalItems = query('GET_TOTAL_ITEMS');\n                    currentIndex = insertLocation === 'before' ? 0 : totalItems;\n                }\n\n                var ignoredFiles = query('GET_IGNORED_FILES');\n                var isValidFile = function isValidFile(source) {\n                    return isFile(source)\n                        ? !ignoredFiles.includes(source.name.toLowerCase())\n                        : !isEmpty(source);\n                };\n                var validItems = items.filter(isValidFile);\n\n                var promises = validItems.map(function(source) {\n                    return new Promise(function(resolve, reject) {\n                        dispatch('ADD_ITEM', {\n                            interactionMethod: interactionMethod,\n                            source: source.source || source,\n                            success: resolve,\n                            failure: reject,\n                            index: currentIndex++,\n                            options: source.options || {},\n                        });\n                    });\n                });\n\n                Promise.all(promises)\n                    .then(success)\n                    .catch(failure);\n            },\n\n            /**\n             * @param source\n             * @param index\n             * @param interactionMethod\n             */\n            ADD_ITEM: function ADD_ITEM(_ref7) {\n                var source = _ref7.source,\n                    _ref7$index = _ref7.index,\n                    index = _ref7$index === void 0 ? -1 : _ref7$index,\n                    interactionMethod = _ref7.interactionMethod,\n                    _ref7$success = _ref7.success,\n                    success = _ref7$success === void 0 ? function() {} : _ref7$success,\n                    _ref7$failure = _ref7.failure,\n                    failure = _ref7$failure === void 0 ? function() {} : _ref7$failure,\n                    _ref7$options = _ref7.options,\n                    options = _ref7$options === void 0 ? {} : _ref7$options;\n                // if no source supplied\n                if (isEmpty(source)) {\n                    failure({\n                        error: createResponse('error', 0, 'No source'),\n                        file: null,\n                    });\n\n                    return;\n                }\n\n                // filter out invalid file items, used to filter dropped directory contents\n                if (\n                    isFile(source) &&\n                    state.options.ignoredFiles.includes(source.name.toLowerCase())\n                ) {\n                    // fail silently\n                    return;\n                }\n\n                // test if there's still room in the list of files\n                if (!hasRoomForItem(state)) {\n                    // if multiple allowed, we can't replace\n                    // or if only a single item is allowed but we're not allowed to replace it we exit\n                    if (\n                        state.options.allowMultiple ||\n                        (!state.options.allowMultiple && !state.options.allowReplace)\n                    ) {\n                        var error = createResponse('warning', 0, 'Max files');\n\n                        dispatch('DID_THROW_MAX_FILES', {\n                            source: source,\n                            error: error,\n                        });\n\n                        failure({ error: error, file: null });\n\n                        return;\n                    }\n\n                    // let's replace the item\n                    // id of first item we're about to remove\n                    var _item = getActiveItems(state.items)[0];\n\n                    // if has been processed remove it from the server as well\n                    if (\n                        _item.status === ItemStatus.PROCESSING_COMPLETE ||\n                        _item.status === ItemStatus.PROCESSING_REVERT_ERROR\n                    ) {\n                        var forceRevert = query('GET_FORCE_REVERT');\n                        _item\n                            .revert(\n                                createRevertFunction(\n                                    state.options.server.url,\n                                    state.options.server.revert\n                                ),\n                                forceRevert\n                            )\n                            .then(function() {\n                                if (!forceRevert) return;\n\n                                // try to add now\n                                dispatch('ADD_ITEM', {\n                                    source: source,\n                                    index: index,\n                                    interactionMethod: interactionMethod,\n                                    success: success,\n                                    failure: failure,\n                                    options: options,\n                                });\n                            })\n                            .catch(function() {}); // no need to handle this catch state for now\n\n                        if (forceRevert) return;\n                    }\n\n                    // remove first item as it will be replaced by this item\n                    dispatch('REMOVE_ITEM', { query: _item.id });\n                }\n\n                // where did the file originate\n                var origin =\n                    options.type === 'local'\n                        ? FileOrigin.LOCAL\n                        : options.type === 'limbo'\n                        ? FileOrigin.LIMBO\n                        : FileOrigin.INPUT;\n\n                // create a new blank item\n                var item = createItem(\n                    // where did this file come from\n                    origin,\n\n                    // an input file never has a server file reference\n                    origin === FileOrigin.INPUT ? null : source,\n\n                    // file mock data, if defined\n                    options.file\n                );\n\n                // set initial meta data\n                Object.keys(options.metadata || {}).forEach(function(key) {\n                    item.setMetadata(key, options.metadata[key]);\n                });\n\n                // created the item, let plugins add methods\n                applyFilters('DID_CREATE_ITEM', item, { query: query, dispatch: dispatch });\n\n                // where to insert new items\n                var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n\n                // adjust index if is not allowed to pick location\n                if (!state.options.itemInsertLocationFreedom) {\n                    index = itemInsertLocation === 'before' ? -1 : state.items.length;\n                }\n\n                // add item to list\n                insertItem(state.items, item, index);\n\n                // sort items in list\n                if (isFunction(itemInsertLocation) && source) {\n                    sortItems(state, itemInsertLocation);\n                }\n\n                // get a quick reference to the item id\n                var id = item.id;\n\n                // observe item events\n                item.on('init', function() {\n                    dispatch('DID_INIT_ITEM', { id: id });\n                });\n\n                item.on('load-init', function() {\n                    dispatch('DID_START_ITEM_LOAD', { id: id });\n                });\n\n                item.on('load-meta', function() {\n                    dispatch('DID_UPDATE_ITEM_META', { id: id });\n                });\n\n                item.on('load-progress', function(progress) {\n                    dispatch('DID_UPDATE_ITEM_LOAD_PROGRESS', { id: id, progress: progress });\n                });\n\n                item.on('load-request-error', function(error) {\n                    var mainStatus = dynamicLabel(state.options.labelFileLoadError)(error);\n\n                    // is client error, no way to recover\n                    if (error.code >= 400 && error.code < 500) {\n                        dispatch('DID_THROW_ITEM_INVALID', {\n                            id: id,\n                            error: error,\n                            status: {\n                                main: mainStatus,\n                                sub: error.code + ' (' + error.body + ')',\n                            },\n                        });\n\n                        // reject the file so can be dealt with through API\n                        failure({ error: error, file: createItemAPI(item) });\n                        return;\n                    }\n\n                    // is possible server error, so might be possible to retry\n                    dispatch('DID_THROW_ITEM_LOAD_ERROR', {\n                        id: id,\n                        error: error,\n                        status: {\n                            main: mainStatus,\n                            sub: state.options.labelTapToRetry,\n                        },\n                    });\n                });\n\n                item.on('load-file-error', function(error) {\n                    dispatch('DID_THROW_ITEM_INVALID', {\n                        id: id,\n                        error: error.status,\n                        status: error.status,\n                    });\n\n                    failure({ error: error.status, file: createItemAPI(item) });\n                });\n\n                item.on('load-abort', function() {\n                    dispatch('REMOVE_ITEM', { query: id });\n                });\n\n                item.on('load-skip', function() {\n                    item.on('metadata-update', function(change) {\n                        if (!isFile(item.file)) return;\n                        dispatch('DID_UPDATE_ITEM_METADATA', { id: id, change: change });\n                    });\n\n                    dispatch('COMPLETE_LOAD_ITEM', {\n                        query: id,\n                        item: item,\n                        data: {\n                            source: source,\n                            success: success,\n                        },\n                    });\n                });\n\n                item.on('load', function() {\n                    var handleAdd = function handleAdd(shouldAdd) {\n                        // no should not add this file\n                        if (!shouldAdd) {\n                            dispatch('REMOVE_ITEM', {\n                                query: id,\n                            });\n\n                            return;\n                        }\n\n                        // now interested in metadata updates\n                        item.on('metadata-update', function(change) {\n                            dispatch('DID_UPDATE_ITEM_METADATA', { id: id, change: change });\n                        });\n\n                        // let plugins decide if the output data should be prepared at this point\n                        // means we'll do this and wait for idle state\n                        applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n                            item: item,\n                            query: query,\n                        }).then(function(shouldPrepareOutput) {\n                            // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n                            var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n                            if (beforePrepareFile)\n                                shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n                            var loadComplete = function loadComplete() {\n                                dispatch('COMPLETE_LOAD_ITEM', {\n                                    query: id,\n                                    item: item,\n                                    data: {\n                                        source: source,\n                                        success: success,\n                                    },\n                                });\n\n                                listUpdated(dispatch, state);\n                            };\n\n                            // exit\n                            if (shouldPrepareOutput) {\n                                // wait for idle state and then run PREPARE_OUTPUT\n                                dispatch(\n                                    'REQUEST_PREPARE_OUTPUT',\n                                    {\n                                        query: id,\n                                        item: item,\n                                        success: function success(file) {\n                                            dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n                                            loadComplete();\n                                        },\n                                    },\n\n                                    true\n                                );\n\n                                return;\n                            }\n\n                            loadComplete();\n                        });\n                    };\n\n                    // item loaded, allow plugins to\n                    // - read data (quickly)\n                    // - add metadata\n                    applyFilterChain('DID_LOAD_ITEM', item, { query: query, dispatch: dispatch })\n                        .then(function() {\n                            optionalPromise(query('GET_BEFORE_ADD_FILE'), createItemAPI(item)).then(\n                                handleAdd\n                            );\n                        })\n                        .catch(function(e) {\n                            if (!e || !e.error || !e.status) return handleAdd(false);\n                            dispatch('DID_THROW_ITEM_INVALID', {\n                                id: id,\n                                error: e.error,\n                                status: e.status,\n                            });\n                        });\n                });\n\n                item.on('process-start', function() {\n                    dispatch('DID_START_ITEM_PROCESSING', { id: id });\n                });\n\n                item.on('process-progress', function(progress) {\n                    dispatch('DID_UPDATE_ITEM_PROCESS_PROGRESS', { id: id, progress: progress });\n                });\n\n                item.on('process-error', function(error) {\n                    dispatch('DID_THROW_ITEM_PROCESSING_ERROR', {\n                        id: id,\n                        error: error,\n                        status: {\n                            main: dynamicLabel(state.options.labelFileProcessingError)(error),\n                            sub: state.options.labelTapToRetry,\n                        },\n                    });\n                });\n\n                item.on('process-revert-error', function(error) {\n                    dispatch('DID_THROW_ITEM_PROCESSING_REVERT_ERROR', {\n                        id: id,\n                        error: error,\n                        status: {\n                            main: dynamicLabel(state.options.labelFileProcessingRevertError)(error),\n                            sub: state.options.labelTapToRetry,\n                        },\n                    });\n                });\n\n                item.on('process-complete', function(serverFileReference) {\n                    dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n                        id: id,\n                        error: null,\n                        serverFileReference: serverFileReference,\n                    });\n\n                    dispatch('DID_DEFINE_VALUE', { id: id, value: serverFileReference });\n                });\n\n                item.on('process-abort', function() {\n                    dispatch('DID_ABORT_ITEM_PROCESSING', { id: id });\n                });\n\n                item.on('process-revert', function() {\n                    dispatch('DID_REVERT_ITEM_PROCESSING', { id: id });\n                    dispatch('DID_DEFINE_VALUE', { id: id, value: null });\n                });\n\n                // let view know the item has been inserted\n                dispatch('DID_ADD_ITEM', {\n                    id: id,\n                    index: index,\n                    interactionMethod: interactionMethod,\n                });\n\n                listUpdated(dispatch, state);\n\n                // start loading the source\n                var _ref8 = state.options.server || {},\n                    url = _ref8.url,\n                    load = _ref8.load,\n                    restore = _ref8.restore,\n                    fetch = _ref8.fetch;\n\n                item.load(\n                    source,\n\n                    // this creates a function that loads the file based on the type of file (string, base64, blob, file) and location of file (local, remote, limbo)\n                    createFileLoader(\n                        origin === FileOrigin.INPUT\n                            ? // input, if is remote, see if should use custom fetch, else use default fetchBlob\n                              isString(source) && isExternalURL(source)\n                                ? fetch\n                                    ? createFetchFunction(url, fetch)\n                                    : fetchBlob // remote url\n                                : fetchBlob // try to fetch url\n                            : // limbo or local\n                            origin === FileOrigin.LIMBO\n                            ? createFetchFunction(url, restore) // limbo\n                            : createFetchFunction(url, load) // local\n                    ),\n\n                    // called when the file is loaded so it can be piped through the filters\n                    function(file, success, error) {\n                        // let's process the file\n                        applyFilterChain('LOAD_FILE', file, { query: query })\n                            .then(success)\n                            .catch(error);\n                    }\n                );\n            },\n\n            REQUEST_PREPARE_OUTPUT: function REQUEST_PREPARE_OUTPUT(_ref9) {\n                var item = _ref9.item,\n                    success = _ref9.success,\n                    _ref9$failure = _ref9.failure,\n                    failure = _ref9$failure === void 0 ? function() {} : _ref9$failure;\n                // error response if item archived\n                var err = {\n                    error: createResponse('error', 0, 'Item not found'),\n                    file: null,\n                };\n\n                // don't handle archived items, an item could have been archived (load aborted) while waiting to be prepared\n                if (item.archived) return failure(err);\n\n                // allow plugins to alter the file data\n                applyFilterChain('PREPARE_OUTPUT', item.file, { query: query, item: item }).then(\n                    function(result) {\n                        applyFilterChain('COMPLETE_PREPARE_OUTPUT', result, {\n                            query: query,\n                            item: item,\n                        }).then(function(result) {\n                            // don't handle archived items, an item could have been archived (load aborted) while being prepared\n                            if (item.archived) return failure(err);\n\n                            // we done!\n                            success(result);\n                        });\n                    }\n                );\n            },\n\n            COMPLETE_LOAD_ITEM: function COMPLETE_LOAD_ITEM(_ref10) {\n                var item = _ref10.item,\n                    data = _ref10.data;\n                var success = data.success,\n                    source = data.source;\n\n                // sort items in list\n                var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n                if (isFunction(itemInsertLocation) && source) {\n                    sortItems(state, itemInsertLocation);\n                }\n\n                // let interface know the item has loaded\n                dispatch('DID_LOAD_ITEM', {\n                    id: item.id,\n                    error: null,\n                    serverFileReference: item.origin === FileOrigin.INPUT ? null : source,\n                });\n\n                // item has been successfully loaded and added to the\n                // list of items so can now be safely returned for use\n                success(createItemAPI(item));\n\n                // if this is a local server file we need to show a different state\n                if (item.origin === FileOrigin.LOCAL) {\n                    dispatch('DID_LOAD_LOCAL_ITEM', { id: item.id });\n                    return;\n                }\n\n                // if is a temp server file we prevent async upload call here (as the file is already on the server)\n                if (item.origin === FileOrigin.LIMBO) {\n                    dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n                        id: item.id,\n                        error: null,\n                        serverFileReference: source,\n                    });\n\n                    dispatch('DID_DEFINE_VALUE', {\n                        id: item.id,\n                        value: item.serverId || source,\n                    });\n\n                    return;\n                }\n\n                // id we are allowed to upload the file immediately, lets do it\n                if (query('IS_ASYNC') && state.options.instantUpload) {\n                    dispatch('REQUEST_ITEM_PROCESSING', { query: item.id });\n                }\n            },\n\n            RETRY_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n                // try loading the source one more time\n                item.retryLoad();\n            }),\n\n            REQUEST_ITEM_PREPARE: getItemByQueryFromState(state, function(item, _success, failure) {\n                dispatch(\n                    'REQUEST_PREPARE_OUTPUT',\n                    {\n                        query: item.id,\n                        item: item,\n                        success: function success(file) {\n                            dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n                            _success({\n                                file: item,\n                                output: file,\n                            });\n                        },\n                        failure: failure,\n                    },\n\n                    true\n                );\n            }),\n\n            REQUEST_ITEM_PROCESSING: getItemByQueryFromState(state, function(\n                item,\n                success,\n                failure\n            ) {\n                // cannot be queued (or is already queued)\n                var itemCanBeQueuedForProcessing =\n                    // waiting for something\n                    item.status === ItemStatus.IDLE ||\n                    // processing went wrong earlier\n                    item.status === ItemStatus.PROCESSING_ERROR;\n\n                // not ready to be processed\n                if (!itemCanBeQueuedForProcessing) {\n                    var processNow = function processNow() {\n                        return dispatch('REQUEST_ITEM_PROCESSING', {\n                            query: item,\n                            success: success,\n                            failure: failure,\n                        });\n                    };\n\n                    var process = function process() {\n                        return document.hidden ? processNow() : setTimeout(processNow, 32);\n                    };\n\n                    // if already done processing or tried to revert but didn't work, try again\n                    if (\n                        item.status === ItemStatus.PROCESSING_COMPLETE ||\n                        item.status === ItemStatus.PROCESSING_REVERT_ERROR\n                    ) {\n                        item.revert(\n                            createRevertFunction(\n                                state.options.server.url,\n                                state.options.server.revert\n                            ),\n                            query('GET_FORCE_REVERT')\n                        )\n                            .then(process)\n                            .catch(function() {}); // don't continue with processing if something went wrong\n                    } else if (item.status === ItemStatus.PROCESSING) {\n                        item.abortProcessing().then(process);\n                    }\n\n                    return;\n                }\n\n                // already queued for processing\n                if (item.status === ItemStatus.PROCESSING_QUEUED) return;\n\n                item.requestProcessing();\n\n                dispatch('DID_REQUEST_ITEM_PROCESSING', { id: item.id });\n\n                dispatch('PROCESS_ITEM', { query: item, success: success, failure: failure }, true);\n            }),\n\n            PROCESS_ITEM: getItemByQueryFromState(state, function(item, success, failure) {\n                var maxParallelUploads = query('GET_MAX_PARALLEL_UPLOADS');\n                var totalCurrentUploads = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING)\n                    .length;\n\n                // queue and wait till queue is freed up\n                if (totalCurrentUploads === maxParallelUploads) {\n                    // queue for later processing\n                    state.processingQueue.push({\n                        id: item.id,\n                        success: success,\n                        failure: failure,\n                    });\n\n                    // stop it!\n                    return;\n                }\n\n                // if was not queued or is already processing exit here\n                if (item.status === ItemStatus.PROCESSING) return;\n\n                var processNext = function processNext() {\n                    // process queueud items\n                    var queueEntry = state.processingQueue.shift();\n\n                    // no items left\n                    if (!queueEntry) return;\n\n                    // get item reference\n                    var id = queueEntry.id,\n                        success = queueEntry.success,\n                        failure = queueEntry.failure;\n                    var itemReference = getItemByQuery(state.items, id);\n\n                    // if item was archived while in queue, jump to next\n                    if (!itemReference || itemReference.archived) {\n                        processNext();\n                        return;\n                    }\n\n                    // process queued item\n                    dispatch(\n                        'PROCESS_ITEM',\n                        { query: id, success: success, failure: failure },\n                        true\n                    );\n                };\n\n                // we done function\n                item.onOnce('process-complete', function() {\n                    success(createItemAPI(item));\n                    processNext();\n\n                    // if origin is local, and we're instant uploading, trigger remove of original\n                    // as revert will remove file from list\n                    var server = state.options.server;\n                    var instantUpload = state.options.instantUpload;\n                    if (\n                        instantUpload &&\n                        item.origin === FileOrigin.LOCAL &&\n                        isFunction(server.remove)\n                    ) {\n                        var noop = function noop() {};\n                        item.origin = FileOrigin.LIMBO;\n                        state.options.server.remove(item.source, noop, noop);\n                    }\n\n                    // All items processed? No errors?\n                    var allItemsProcessed =\n                        query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING_COMPLETE).length ===\n                        state.items.length;\n                    if (allItemsProcessed) {\n                        dispatch('DID_COMPLETE_ITEM_PROCESSING_ALL');\n                    }\n                });\n\n                // we error function\n                item.onOnce('process-error', function(error) {\n                    failure({ error: error, file: createItemAPI(item) });\n                    processNext();\n                });\n\n                // start file processing\n                var options = state.options;\n                item.process(\n                    createFileProcessor(\n                        createProcessorFunction(\n                            options.server.url,\n                            options.server.process,\n                            options.name,\n                            {\n                                chunkTransferId: item.transferId,\n                                chunkServer: options.server.patch,\n                                chunkUploads: options.chunkUploads,\n                                chunkForce: options.chunkForce,\n                                chunkSize: options.chunkSize,\n                                chunkRetryDelays: options.chunkRetryDelays,\n                            }\n                        ),\n\n                        {\n                            allowMinimumUploadDuration: query('GET_ALLOW_MINIMUM_UPLOAD_DURATION'),\n                        }\n                    ),\n\n                    // called when the file is about to be processed so it can be piped through the transform filters\n                    function(file, success, error) {\n                        // allow plugins to alter the file data\n                        applyFilterChain('PREPARE_OUTPUT', file, { query: query, item: item })\n                            .then(function(file) {\n                                dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n\n                                success(file);\n                            })\n                            .catch(error);\n                    }\n                );\n            }),\n\n            RETRY_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n                dispatch('REQUEST_ITEM_PROCESSING', { query: item });\n            }),\n\n            REQUEST_REMOVE_ITEM: getItemByQueryFromState(state, function(item) {\n                optionalPromise(query('GET_BEFORE_REMOVE_FILE'), createItemAPI(item)).then(function(\n                    shouldRemove\n                ) {\n                    if (!shouldRemove) {\n                        return;\n                    }\n                    dispatch('REMOVE_ITEM', { query: item });\n                });\n            }),\n\n            RELEASE_ITEM: getItemByQueryFromState(state, function(item) {\n                item.release();\n            }),\n\n            REMOVE_ITEM: getItemByQueryFromState(state, function(item, success, failure, options) {\n                var removeFromView = function removeFromView() {\n                    // get id reference\n                    var id = item.id;\n\n                    // archive the item, this does not remove it from the list\n                    getItemById(state.items, id).archive();\n\n                    // tell the view the item has been removed\n                    dispatch('DID_REMOVE_ITEM', { error: null, id: id, item: item });\n\n                    // now the list has been modified\n                    listUpdated(dispatch, state);\n\n                    // correctly removed\n                    success(createItemAPI(item));\n                };\n\n                // if this is a local file and the `server.remove` function has been configured,\n                // send source there so dev can remove file from server\n                var server = state.options.server;\n                if (\n                    item.origin === FileOrigin.LOCAL &&\n                    server &&\n                    isFunction(server.remove) &&\n                    options.remove !== false\n                ) {\n                    dispatch('DID_START_ITEM_REMOVE', { id: item.id });\n\n                    server.remove(\n                        item.source,\n                        function() {\n                            return removeFromView();\n                        },\n                        function(status) {\n                            dispatch('DID_THROW_ITEM_REMOVE_ERROR', {\n                                id: item.id,\n                                error: createResponse('error', 0, status, null),\n                                status: {\n                                    main: dynamicLabel(state.options.labelFileRemoveError)(status),\n                                    sub: state.options.labelTapToRetry,\n                                },\n                            });\n                        }\n                    );\n                } else {\n                    // if is requesting revert and can revert need to call revert handler (not calling request_ because that would also trigger beforeRemoveHook)\n                    if (\n                        (options.revert &&\n                            item.origin !== FileOrigin.LOCAL &&\n                            item.serverId !== null) ||\n                        // if chunked uploads are enabled and we're uploading in chunks for this specific file\n                        // or if the file isn't big enough for chunked uploads but chunkForce is set then call\n                        // revert before removing from the view...\n                        (state.options.chunkUploads && item.file.size > state.options.chunkSize) ||\n                        (state.options.chunkUploads && state.options.chunkForce)\n                    ) {\n                        item.revert(\n                            createRevertFunction(\n                                state.options.server.url,\n                                state.options.server.revert\n                            ),\n                            query('GET_FORCE_REVERT')\n                        );\n                    }\n\n                    // can now safely remove from view\n                    removeFromView();\n                }\n            }),\n\n            ABORT_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n                item.abortLoad();\n            }),\n\n            ABORT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n                // test if is already processed\n                if (item.serverId) {\n                    dispatch('REVERT_ITEM_PROCESSING', { id: item.id });\n                    return;\n                }\n\n                // abort\n                item.abortProcessing().then(function() {\n                    var shouldRemove = state.options.instantUpload;\n                    if (shouldRemove) {\n                        dispatch('REMOVE_ITEM', { query: item.id });\n                    }\n                });\n            }),\n\n            REQUEST_REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n                // not instant uploading, revert immediately\n                if (!state.options.instantUpload) {\n                    dispatch('REVERT_ITEM_PROCESSING', { query: item });\n                    return;\n                }\n\n                // if we're instant uploading the file will also be removed if we revert,\n                // so if a before remove file hook is defined we need to run it now\n                var handleRevert = function handleRevert(shouldRevert) {\n                    if (!shouldRevert) return;\n                    dispatch('REVERT_ITEM_PROCESSING', { query: item });\n                };\n\n                var fn = query('GET_BEFORE_REMOVE_FILE');\n                if (!fn) {\n                    return handleRevert(true);\n                }\n\n                var requestRemoveResult = fn(createItemAPI(item));\n                if (requestRemoveResult == null) {\n                    // undefined or null\n                    return handleRevert(true);\n                }\n\n                if (typeof requestRemoveResult === 'boolean') {\n                    return handleRevert(requestRemoveResult);\n                }\n\n                if (typeof requestRemoveResult.then === 'function') {\n                    requestRemoveResult.then(handleRevert);\n                }\n            }),\n\n            REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n                item.revert(\n                    createRevertFunction(state.options.server.url, state.options.server.revert),\n                    query('GET_FORCE_REVERT')\n                )\n                    .then(function() {\n                        var shouldRemove = state.options.instantUpload || isMockItem(item);\n                        if (shouldRemove) {\n                            dispatch('REMOVE_ITEM', { query: item.id });\n                        }\n                    })\n                    .catch(function() {});\n            }),\n\n            SET_OPTIONS: function SET_OPTIONS(_ref11) {\n                var options = _ref11.options;\n                // get all keys passed\n                var optionKeys = Object.keys(options);\n\n                // get prioritized keyed to include (remove once not in options object)\n                var prioritizedOptionKeys = PrioritizedOptions.filter(function(key) {\n                    return optionKeys.includes(key);\n                });\n\n                // order the keys, prioritized first, then rest\n                var orderedOptionKeys = [].concat(\n                    _toConsumableArray(prioritizedOptionKeys),\n                    _toConsumableArray(\n                        Object.keys(options).filter(function(key) {\n                            return !prioritizedOptionKeys.includes(key);\n                        })\n                    )\n                );\n\n                // dispatch set event for each option\n                orderedOptionKeys.forEach(function(key) {\n                    dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n                        value: options[key],\n                    });\n                });\n            },\n        };\n    };\n\n    var PrioritizedOptions = ['server'];\n\n    var formatFilename = function formatFilename(name) {\n        return name;\n    };\n\n    var createElement$1 = function createElement(tagName) {\n        return document.createElement(tagName);\n    };\n\n    var text = function text(node, value) {\n        var textNode = node.childNodes[0];\n        if (!textNode) {\n            textNode = document.createTextNode(value);\n            node.appendChild(textNode);\n        } else if (value !== textNode.nodeValue) {\n            textNode.nodeValue = value;\n        }\n    };\n\n    var polarToCartesian = function polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n        var angleInRadians = (((angleInDegrees % 360) - 90) * Math.PI) / 180.0;\n        return {\n            x: centerX + radius * Math.cos(angleInRadians),\n            y: centerY + radius * Math.sin(angleInRadians),\n        };\n    };\n\n    var describeArc = function describeArc(x, y, radius, startAngle, endAngle, arcSweep) {\n        var start = polarToCartesian(x, y, radius, endAngle);\n        var end = polarToCartesian(x, y, radius, startAngle);\n        return ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\n    };\n\n    var percentageArc = function percentageArc(x, y, radius, from, to) {\n        var arcSweep = 1;\n        if (to > from && to - from <= 0.5) {\n            arcSweep = 0;\n        }\n        if (from > to && from - to >= 0.5) {\n            arcSweep = 0;\n        }\n        return describeArc(\n            x,\n            y,\n            radius,\n            Math.min(0.9999, from) * 360,\n            Math.min(0.9999, to) * 360,\n            arcSweep\n        );\n    };\n\n    var create = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // start at 0\n        props.spin = false;\n        props.progress = 0;\n        props.opacity = 0;\n\n        // svg\n        var svg = createElement('svg');\n        root.ref.path = createElement('path', {\n            'stroke-width': 2,\n            'stroke-linecap': 'round',\n        });\n\n        svg.appendChild(root.ref.path);\n\n        root.ref.svg = svg;\n\n        root.appendChild(svg);\n    };\n\n    var write = function write(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        if (props.opacity === 0) {\n            return;\n        }\n\n        if (props.align) {\n            root.element.dataset.align = props.align;\n        }\n\n        // get width of stroke\n        var ringStrokeWidth = parseInt(attr(root.ref.path, 'stroke-width'), 10);\n\n        // calculate size of ring\n        var size = root.rect.element.width * 0.5;\n\n        // ring state\n        var ringFrom = 0;\n        var ringTo = 0;\n\n        // now in busy mode\n        if (props.spin) {\n            ringFrom = 0;\n            ringTo = 0.5;\n        } else {\n            ringFrom = 0;\n            ringTo = props.progress;\n        }\n\n        // get arc path\n        var coordinates = percentageArc(size, size, size - ringStrokeWidth, ringFrom, ringTo);\n\n        // update progress bar\n        attr(root.ref.path, 'd', coordinates);\n\n        // hide while contains 0 value\n        attr(root.ref.path, 'stroke-opacity', props.spin || props.progress > 0 ? 1 : 0);\n    };\n\n    var progressIndicator = createView({\n        tag: 'div',\n        name: 'progress-indicator',\n        ignoreRectUpdate: true,\n        ignoreRect: true,\n        create: create,\n        write: write,\n        mixins: {\n            apis: ['progress', 'spin', 'align'],\n            styles: ['opacity'],\n            animations: {\n                opacity: { type: 'tween', duration: 500 },\n                progress: {\n                    type: 'spring',\n                    stiffness: 0.95,\n                    damping: 0.65,\n                    mass: 10,\n                },\n            },\n        },\n    });\n\n    var create$1 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        root.element.innerHTML = (props.icon || '') + ('<span>' + props.label + '</span>');\n\n        props.isDisabled = false;\n    };\n\n    var write$1 = function write(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        var isDisabled = props.isDisabled;\n        var shouldDisable = root.query('GET_DISABLED') || props.opacity === 0;\n\n        if (shouldDisable && !isDisabled) {\n            props.isDisabled = true;\n            attr(root.element, 'disabled', 'disabled');\n        } else if (!shouldDisable && isDisabled) {\n            props.isDisabled = false;\n            root.element.removeAttribute('disabled');\n        }\n    };\n\n    var fileActionButton = createView({\n        tag: 'button',\n        attributes: {\n            type: 'button',\n        },\n\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        name: 'file-action-button',\n        mixins: {\n            apis: ['label'],\n            styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n            animations: {\n                scaleX: 'spring',\n                scaleY: 'spring',\n                translateX: 'spring',\n                translateY: 'spring',\n                opacity: { type: 'tween', duration: 250 },\n            },\n\n            listeners: true,\n        },\n\n        create: create$1,\n        write: write$1,\n    });\n\n    var toNaturalFileSize = function toNaturalFileSize(bytes) {\n        var decimalSeparator =\n            arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';\n        var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n        var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n        var _options$labelBytes = options.labelBytes,\n            labelBytes = _options$labelBytes === void 0 ? 'bytes' : _options$labelBytes,\n            _options$labelKilobyt = options.labelKilobytes,\n            labelKilobytes = _options$labelKilobyt === void 0 ? 'KB' : _options$labelKilobyt,\n            _options$labelMegabyt = options.labelMegabytes,\n            labelMegabytes = _options$labelMegabyt === void 0 ? 'MB' : _options$labelMegabyt,\n            _options$labelGigabyt = options.labelGigabytes,\n            labelGigabytes = _options$labelGigabyt === void 0 ? 'GB' : _options$labelGigabyt;\n\n        // no negative byte sizes\n        bytes = Math.round(Math.abs(bytes));\n\n        var KB = base;\n        var MB = base * base;\n        var GB = base * base * base;\n\n        // just bytes\n        if (bytes < KB) {\n            return bytes + ' ' + labelBytes;\n        }\n\n        // kilobytes\n        if (bytes < MB) {\n            return Math.floor(bytes / KB) + ' ' + labelKilobytes;\n        }\n\n        // megabytes\n        if (bytes < GB) {\n            return removeDecimalsWhenZero(bytes / MB, 1, decimalSeparator) + ' ' + labelMegabytes;\n        }\n\n        // gigabytes\n        return removeDecimalsWhenZero(bytes / GB, 2, decimalSeparator) + ' ' + labelGigabytes;\n    };\n\n    var removeDecimalsWhenZero = function removeDecimalsWhenZero(value, decimalCount, separator) {\n        return value\n            .toFixed(decimalCount)\n            .split('.')\n            .filter(function(part) {\n                return part !== '0';\n            })\n            .join(separator);\n    };\n\n    var create$2 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // filename\n        var fileName = createElement$1('span');\n        fileName.className = 'filepond--file-info-main';\n        // hide for screenreaders\n        // the file is contained in a fieldset with legend that contains the filename\n        // no need to read it twice\n        attr(fileName, 'aria-hidden', 'true');\n        root.appendChild(fileName);\n        root.ref.fileName = fileName;\n\n        // filesize\n        var fileSize = createElement$1('span');\n        fileSize.className = 'filepond--file-info-sub';\n        root.appendChild(fileSize);\n        root.ref.fileSize = fileSize;\n\n        // set initial values\n        text(fileSize, root.query('GET_LABEL_FILE_WAITING_FOR_SIZE'));\n        text(fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n    };\n\n    var updateFile = function updateFile(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        text(\n            root.ref.fileSize,\n            toNaturalFileSize(\n                root.query('GET_ITEM_SIZE', props.id),\n                '.',\n                root.query('GET_FILE_SIZE_BASE'),\n                root.query('GET_FILE_SIZE_LABELS', root.query)\n            )\n        );\n\n        text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n    };\n\n    var updateFileSizeOnError = function updateFileSizeOnError(_ref3) {\n        var root = _ref3.root,\n            props = _ref3.props;\n        // if size is available don't fallback to unknown size message\n        if (isInt(root.query('GET_ITEM_SIZE', props.id))) {\n            updateFile({ root: root, props: props });\n            return;\n        }\n\n        text(root.ref.fileSize, root.query('GET_LABEL_FILE_SIZE_NOT_AVAILABLE'));\n    };\n\n    var fileInfo = createView({\n        name: 'file-info',\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        write: createRoute({\n            DID_LOAD_ITEM: updateFile,\n            DID_UPDATE_ITEM_META: updateFile,\n            DID_THROW_ITEM_LOAD_ERROR: updateFileSizeOnError,\n            DID_THROW_ITEM_INVALID: updateFileSizeOnError,\n        }),\n\n        didCreateView: function didCreateView(root) {\n            applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n        },\n        create: create$2,\n        mixins: {\n            styles: ['translateX', 'translateY'],\n            animations: {\n                translateX: 'spring',\n                translateY: 'spring',\n            },\n        },\n    });\n\n    var toPercentage = function toPercentage(value) {\n        return Math.round(value * 100);\n    };\n\n    var create$3 = function create(_ref) {\n        var root = _ref.root;\n\n        // main status\n        var main = createElement$1('span');\n        main.className = 'filepond--file-status-main';\n        root.appendChild(main);\n        root.ref.main = main;\n\n        // sub status\n        var sub = createElement$1('span');\n        sub.className = 'filepond--file-status-sub';\n        root.appendChild(sub);\n        root.ref.sub = sub;\n\n        didSetItemLoadProgress({ root: root, action: { progress: null } });\n    };\n\n    var didSetItemLoadProgress = function didSetItemLoadProgress(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        var title =\n            action.progress === null\n                ? root.query('GET_LABEL_FILE_LOADING')\n                : root.query('GET_LABEL_FILE_LOADING') + ' ' + toPercentage(action.progress) + '%';\n\n        text(root.ref.main, title);\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n    };\n\n    var didSetItemProcessProgress = function didSetItemProcessProgress(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        var title =\n            action.progress === null\n                ? root.query('GET_LABEL_FILE_PROCESSING')\n                : root.query('GET_LABEL_FILE_PROCESSING') +\n                  ' ' +\n                  toPercentage(action.progress) +\n                  '%';\n\n        text(root.ref.main, title);\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n    };\n\n    var didRequestItemProcessing = function didRequestItemProcessing(_ref4) {\n        var root = _ref4.root;\n        text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING'));\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n    };\n\n    var didAbortItemProcessing = function didAbortItemProcessing(_ref5) {\n        var root = _ref5.root;\n        text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_ABORTED'));\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_RETRY'));\n    };\n\n    var didCompleteItemProcessing = function didCompleteItemProcessing(_ref6) {\n        var root = _ref6.root;\n        text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_COMPLETE'));\n        text(root.ref.sub, root.query('GET_LABEL_TAP_TO_UNDO'));\n    };\n\n    var clear = function clear(_ref7) {\n        var root = _ref7.root;\n        text(root.ref.main, '');\n        text(root.ref.sub, '');\n    };\n\n    var error = function error(_ref8) {\n        var root = _ref8.root,\n            action = _ref8.action;\n        text(root.ref.main, action.status.main);\n        text(root.ref.sub, action.status.sub);\n    };\n\n    var fileStatus = createView({\n        name: 'file-status',\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        write: createRoute({\n            DID_LOAD_ITEM: clear,\n            DID_REVERT_ITEM_PROCESSING: clear,\n            DID_REQUEST_ITEM_PROCESSING: didRequestItemProcessing,\n            DID_ABORT_ITEM_PROCESSING: didAbortItemProcessing,\n            DID_COMPLETE_ITEM_PROCESSING: didCompleteItemProcessing,\n            DID_UPDATE_ITEM_PROCESS_PROGRESS: didSetItemProcessProgress,\n            DID_UPDATE_ITEM_LOAD_PROGRESS: didSetItemLoadProgress,\n            DID_THROW_ITEM_LOAD_ERROR: error,\n            DID_THROW_ITEM_INVALID: error,\n            DID_THROW_ITEM_PROCESSING_ERROR: error,\n            DID_THROW_ITEM_PROCESSING_REVERT_ERROR: error,\n            DID_THROW_ITEM_REMOVE_ERROR: error,\n        }),\n\n        didCreateView: function didCreateView(root) {\n            applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n        },\n        create: create$3,\n        mixins: {\n            styles: ['translateX', 'translateY', 'opacity'],\n            animations: {\n                opacity: { type: 'tween', duration: 250 },\n                translateX: 'spring',\n                translateY: 'spring',\n            },\n        },\n    });\n\n    /**\n     * Button definitions for the file view\n     */\n\n    var Buttons = {\n        AbortItemLoad: {\n            label: 'GET_LABEL_BUTTON_ABORT_ITEM_LOAD',\n            action: 'ABORT_ITEM_LOAD',\n            className: 'filepond--action-abort-item-load',\n            align: 'LOAD_INDICATOR_POSITION', // right\n        },\n        RetryItemLoad: {\n            label: 'GET_LABEL_BUTTON_RETRY_ITEM_LOAD',\n            action: 'RETRY_ITEM_LOAD',\n            icon: 'GET_ICON_RETRY',\n            className: 'filepond--action-retry-item-load',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n        RemoveItem: {\n            label: 'GET_LABEL_BUTTON_REMOVE_ITEM',\n            action: 'REQUEST_REMOVE_ITEM',\n            icon: 'GET_ICON_REMOVE',\n            className: 'filepond--action-remove-item',\n            align: 'BUTTON_REMOVE_ITEM_POSITION', // left\n        },\n        ProcessItem: {\n            label: 'GET_LABEL_BUTTON_PROCESS_ITEM',\n            action: 'REQUEST_ITEM_PROCESSING',\n            icon: 'GET_ICON_PROCESS',\n            className: 'filepond--action-process-item',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n        AbortItemProcessing: {\n            label: 'GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING',\n            action: 'ABORT_ITEM_PROCESSING',\n            className: 'filepond--action-abort-item-processing',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n        RetryItemProcessing: {\n            label: 'GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING',\n            action: 'RETRY_ITEM_PROCESSING',\n            icon: 'GET_ICON_RETRY',\n            className: 'filepond--action-retry-item-processing',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n        RevertItemProcessing: {\n            label: 'GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING',\n            action: 'REQUEST_REVERT_ITEM_PROCESSING',\n            icon: 'GET_ICON_UNDO',\n            className: 'filepond--action-revert-item-processing',\n            align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n        },\n    };\n\n    // make a list of buttons, we can then remove buttons from this list if they're disabled\n    var ButtonKeys = [];\n    forin(Buttons, function(key) {\n        ButtonKeys.push(key);\n    });\n\n    var calculateFileInfoOffset = function calculateFileInfoOffset(root) {\n        if (getRemoveIndicatorAligment(root) === 'right') return 0;\n        var buttonRect = root.ref.buttonRemoveItem.rect.element;\n        return buttonRect.hidden ? null : buttonRect.width + buttonRect.left;\n    };\n\n    var calculateButtonWidth = function calculateButtonWidth(root) {\n        var buttonRect = root.ref.buttonAbortItemLoad.rect.element;\n        return buttonRect.width;\n    };\n\n    // Force on full pixels so text stays crips\n    var calculateFileVerticalCenterOffset = function calculateFileVerticalCenterOffset(root) {\n        return Math.floor(root.ref.buttonRemoveItem.rect.element.height / 4);\n    };\n    var calculateFileHorizontalCenterOffset = function calculateFileHorizontalCenterOffset(root) {\n        return Math.floor(root.ref.buttonRemoveItem.rect.element.left / 2);\n    };\n\n    var getLoadIndicatorAlignment = function getLoadIndicatorAlignment(root) {\n        return root.query('GET_STYLE_LOAD_INDICATOR_POSITION');\n    };\n    var getProcessIndicatorAlignment = function getProcessIndicatorAlignment(root) {\n        return root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION');\n    };\n    var getRemoveIndicatorAligment = function getRemoveIndicatorAligment(root) {\n        return root.query('GET_STYLE_BUTTON_REMOVE_ITEM_POSITION');\n    };\n\n    var DefaultStyle = {\n        buttonAbortItemLoad: { opacity: 0 },\n        buttonRetryItemLoad: { opacity: 0 },\n        buttonRemoveItem: { opacity: 0 },\n        buttonProcessItem: { opacity: 0 },\n        buttonAbortItemProcessing: { opacity: 0 },\n        buttonRetryItemProcessing: { opacity: 0 },\n        buttonRevertItemProcessing: { opacity: 0 },\n        loadProgressIndicator: { opacity: 0, align: getLoadIndicatorAlignment },\n        processProgressIndicator: { opacity: 0, align: getProcessIndicatorAlignment },\n        processingCompleteIndicator: { opacity: 0, scaleX: 0.75, scaleY: 0.75 },\n        info: { translateX: 0, translateY: 0, opacity: 0 },\n        status: { translateX: 0, translateY: 0, opacity: 0 },\n    };\n\n    var IdleStyle = {\n        buttonRemoveItem: { opacity: 1 },\n        buttonProcessItem: { opacity: 1 },\n        info: { translateX: calculateFileInfoOffset },\n        status: { translateX: calculateFileInfoOffset },\n    };\n\n    var ProcessingStyle = {\n        buttonAbortItemProcessing: { opacity: 1 },\n        processProgressIndicator: { opacity: 1 },\n        status: { opacity: 1 },\n    };\n\n    var StyleMap = {\n        DID_THROW_ITEM_INVALID: {\n            buttonRemoveItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { translateX: calculateFileInfoOffset, opacity: 1 },\n        },\n\n        DID_START_ITEM_LOAD: {\n            buttonAbortItemLoad: { opacity: 1 },\n            loadProgressIndicator: { opacity: 1 },\n            status: { opacity: 1 },\n        },\n\n        DID_THROW_ITEM_LOAD_ERROR: {\n            buttonRetryItemLoad: { opacity: 1 },\n            buttonRemoveItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { opacity: 1 },\n        },\n\n        DID_START_ITEM_REMOVE: {\n            processProgressIndicator: { opacity: 1, align: getRemoveIndicatorAligment },\n            info: { translateX: calculateFileInfoOffset },\n            status: { opacity: 0 },\n        },\n\n        DID_THROW_ITEM_REMOVE_ERROR: {\n            processProgressIndicator: { opacity: 0, align: getRemoveIndicatorAligment },\n            buttonRemoveItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { opacity: 1, translateX: calculateFileInfoOffset },\n        },\n\n        DID_LOAD_ITEM: IdleStyle,\n        DID_LOAD_LOCAL_ITEM: {\n            buttonRemoveItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { translateX: calculateFileInfoOffset },\n        },\n\n        DID_START_ITEM_PROCESSING: ProcessingStyle,\n        DID_REQUEST_ITEM_PROCESSING: ProcessingStyle,\n        DID_UPDATE_ITEM_PROCESS_PROGRESS: ProcessingStyle,\n        DID_COMPLETE_ITEM_PROCESSING: {\n            buttonRevertItemProcessing: { opacity: 1 },\n            info: { opacity: 1 },\n            status: { opacity: 1 },\n        },\n\n        DID_THROW_ITEM_PROCESSING_ERROR: {\n            buttonRemoveItem: { opacity: 1 },\n            buttonRetryItemProcessing: { opacity: 1 },\n            status: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n        },\n\n        DID_THROW_ITEM_PROCESSING_REVERT_ERROR: {\n            buttonRevertItemProcessing: { opacity: 1 },\n            status: { opacity: 1 },\n            info: { opacity: 1 },\n        },\n\n        DID_ABORT_ITEM_PROCESSING: {\n            buttonRemoveItem: { opacity: 1 },\n            buttonProcessItem: { opacity: 1 },\n            info: { translateX: calculateFileInfoOffset },\n            status: { opacity: 1 },\n        },\n\n        DID_REVERT_ITEM_PROCESSING: IdleStyle,\n    };\n\n    // complete indicator view\n    var processingCompleteIndicatorView = createView({\n        create: function create(_ref) {\n            var root = _ref.root;\n            root.element.innerHTML = root.query('GET_ICON_DONE');\n        },\n        name: 'processing-complete-indicator',\n        ignoreRect: true,\n        mixins: {\n            styles: ['scaleX', 'scaleY', 'opacity'],\n            animations: {\n                scaleX: 'spring',\n                scaleY: 'spring',\n                opacity: { type: 'tween', duration: 250 },\n            },\n        },\n    });\n\n    /**\n     * Creates the file view\n     */\n    var create$4 = function create(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        // copy Buttons object\n        var LocalButtons = Object.keys(Buttons).reduce(function(prev, curr) {\n            prev[curr] = Object.assign({}, Buttons[curr]);\n            return prev;\n        }, {});\n        var id = props.id;\n\n        // allow reverting upload\n        var allowRevert = root.query('GET_ALLOW_REVERT');\n\n        // allow remove file\n        var allowRemove = root.query('GET_ALLOW_REMOVE');\n\n        // allow processing upload\n        var allowProcess = root.query('GET_ALLOW_PROCESS');\n\n        // is instant uploading, need this to determine the icon of the undo button\n        var instantUpload = root.query('GET_INSTANT_UPLOAD');\n\n        // is async set up\n        var isAsync = root.query('IS_ASYNC');\n\n        // should align remove item buttons\n        var alignRemoveItemButton = root.query('GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN');\n\n        // enabled buttons array\n        var buttonFilter;\n        if (isAsync) {\n            if (allowProcess && !allowRevert) {\n                // only remove revert button\n                buttonFilter = function buttonFilter(key) {\n                    return !/RevertItemProcessing/.test(key);\n                };\n            } else if (!allowProcess && allowRevert) {\n                // only remove process button\n                buttonFilter = function buttonFilter(key) {\n                    return !/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(key);\n                };\n            } else if (!allowProcess && !allowRevert) {\n                // remove all process buttons\n                buttonFilter = function buttonFilter(key) {\n                    return !/Process/.test(key);\n                };\n            }\n        } else {\n            // no process controls available\n            buttonFilter = function buttonFilter(key) {\n                return !/Process/.test(key);\n            };\n        }\n\n        var enabledButtons = buttonFilter ? ButtonKeys.filter(buttonFilter) : ButtonKeys.concat();\n\n        // update icon and label for revert button when instant uploading\n        if (instantUpload && allowRevert) {\n            LocalButtons['RevertItemProcessing'].label = 'GET_LABEL_BUTTON_REMOVE_ITEM';\n            LocalButtons['RevertItemProcessing'].icon = 'GET_ICON_REMOVE';\n        }\n\n        // remove last button (revert) if not allowed\n        if (isAsync && !allowRevert) {\n            var map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n            map.info.translateX = calculateFileHorizontalCenterOffset;\n            map.info.translateY = calculateFileVerticalCenterOffset;\n            map.status.translateY = calculateFileVerticalCenterOffset;\n            map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n        }\n\n        // should align center\n        if (isAsync && !allowProcess) {\n            [\n                'DID_START_ITEM_PROCESSING',\n                'DID_REQUEST_ITEM_PROCESSING',\n                'DID_UPDATE_ITEM_PROCESS_PROGRESS',\n                'DID_THROW_ITEM_PROCESSING_ERROR',\n            ].forEach(function(key) {\n                StyleMap[key].status.translateY = calculateFileVerticalCenterOffset;\n            });\n            StyleMap['DID_THROW_ITEM_PROCESSING_ERROR'].status.translateX = calculateButtonWidth;\n        }\n\n        // move remove button to right\n        if (alignRemoveItemButton && allowRevert) {\n            LocalButtons['RevertItemProcessing'].align = 'BUTTON_REMOVE_ITEM_POSITION';\n            var _map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n            _map.info.translateX = calculateFileInfoOffset;\n            _map.status.translateY = calculateFileVerticalCenterOffset;\n            _map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n        }\n\n        // show/hide RemoveItem button\n        if (!allowRemove) {\n            LocalButtons['RemoveItem'].disabled = true;\n        }\n\n        // create the button views\n        forin(LocalButtons, function(key, definition) {\n            // create button\n            var buttonView = root.createChildView(fileActionButton, {\n                label: root.query(definition.label),\n                icon: root.query(definition.icon),\n                opacity: 0,\n            });\n\n            // should be appended?\n            if (enabledButtons.includes(key)) {\n                root.appendChildView(buttonView);\n            }\n\n            // toggle\n            if (definition.disabled) {\n                buttonView.element.setAttribute('disabled', 'disabled');\n                buttonView.element.setAttribute('hidden', 'hidden');\n            }\n\n            // add position attribute\n            buttonView.element.dataset.align = root.query('GET_STYLE_' + definition.align);\n\n            // add class\n            buttonView.element.classList.add(definition.className);\n\n            // handle interactions\n            buttonView.on('click', function(e) {\n                e.stopPropagation();\n                if (definition.disabled) return;\n                root.dispatch(definition.action, { query: id });\n            });\n\n            // set reference\n            root.ref['button' + key] = buttonView;\n        });\n\n        // checkmark\n        root.ref.processingCompleteIndicator = root.appendChildView(\n            root.createChildView(processingCompleteIndicatorView)\n        );\n\n        root.ref.processingCompleteIndicator.element.dataset.align = root.query(\n            'GET_STYLE_BUTTON_PROCESS_ITEM_POSITION'\n        );\n\n        // create file info view\n        root.ref.info = root.appendChildView(root.createChildView(fileInfo, { id: id }));\n\n        // create file status view\n        root.ref.status = root.appendChildView(root.createChildView(fileStatus, { id: id }));\n\n        // add progress indicators\n        var loadIndicatorView = root.appendChildView(\n            root.createChildView(progressIndicator, {\n                opacity: 0,\n                align: root.query('GET_STYLE_LOAD_INDICATOR_POSITION'),\n            })\n        );\n\n        loadIndicatorView.element.classList.add('filepond--load-indicator');\n        root.ref.loadProgressIndicator = loadIndicatorView;\n\n        var progressIndicatorView = root.appendChildView(\n            root.createChildView(progressIndicator, {\n                opacity: 0,\n                align: root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION'),\n            })\n        );\n\n        progressIndicatorView.element.classList.add('filepond--process-indicator');\n        root.ref.processProgressIndicator = progressIndicatorView;\n\n        // current active styles\n        root.ref.activeStyles = [];\n    };\n\n    var write$2 = function write(_ref3) {\n        var root = _ref3.root,\n            actions = _ref3.actions,\n            props = _ref3.props;\n        // route actions\n        route({ root: root, actions: actions, props: props });\n\n        // select last state change action\n        var action = actions\n            .concat()\n            .filter(function(action) {\n                return /^DID_/.test(action.type);\n            })\n            .reverse()\n            .find(function(action) {\n                return StyleMap[action.type];\n            });\n\n        // a new action happened, let's get the matching styles\n        if (action) {\n            // define new active styles\n            root.ref.activeStyles = [];\n\n            var stylesToApply = StyleMap[action.type];\n            forin(DefaultStyle, function(name, defaultStyles) {\n                // get reference to control\n                var control = root.ref[name];\n\n                // loop over all styles for this control\n                forin(defaultStyles, function(key, defaultValue) {\n                    var value =\n                        stylesToApply[name] && typeof stylesToApply[name][key] !== 'undefined'\n                            ? stylesToApply[name][key]\n                            : defaultValue;\n                    root.ref.activeStyles.push({ control: control, key: key, value: value });\n                });\n            });\n        }\n\n        // apply active styles to element\n        root.ref.activeStyles.forEach(function(_ref4) {\n            var control = _ref4.control,\n                key = _ref4.key,\n                value = _ref4.value;\n            control[key] = typeof value === 'function' ? value(root) : value;\n        });\n    };\n\n    var route = createRoute({\n        DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING: function DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING(\n            _ref5\n        ) {\n            var root = _ref5.root,\n                action = _ref5.action;\n            root.ref.buttonAbortItemProcessing.label = action.value;\n        },\n        DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD: function DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD(_ref6) {\n            var root = _ref6.root,\n                action = _ref6.action;\n            root.ref.buttonAbortItemLoad.label = action.value;\n        },\n        DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL: function DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL(\n            _ref7\n        ) {\n            var root = _ref7.root,\n                action = _ref7.action;\n            root.ref.buttonAbortItemRemoval.label = action.value;\n        },\n        DID_REQUEST_ITEM_PROCESSING: function DID_REQUEST_ITEM_PROCESSING(_ref8) {\n            var root = _ref8.root;\n            root.ref.processProgressIndicator.spin = true;\n            root.ref.processProgressIndicator.progress = 0;\n        },\n        DID_START_ITEM_LOAD: function DID_START_ITEM_LOAD(_ref9) {\n            var root = _ref9.root;\n            root.ref.loadProgressIndicator.spin = true;\n            root.ref.loadProgressIndicator.progress = 0;\n        },\n        DID_START_ITEM_REMOVE: function DID_START_ITEM_REMOVE(_ref10) {\n            var root = _ref10.root;\n            root.ref.processProgressIndicator.spin = true;\n            root.ref.processProgressIndicator.progress = 0;\n        },\n        DID_UPDATE_ITEM_LOAD_PROGRESS: function DID_UPDATE_ITEM_LOAD_PROGRESS(_ref11) {\n            var root = _ref11.root,\n                action = _ref11.action;\n            root.ref.loadProgressIndicator.spin = false;\n            root.ref.loadProgressIndicator.progress = action.progress;\n        },\n        DID_UPDATE_ITEM_PROCESS_PROGRESS: function DID_UPDATE_ITEM_PROCESS_PROGRESS(_ref12) {\n            var root = _ref12.root,\n                action = _ref12.action;\n            root.ref.processProgressIndicator.spin = false;\n            root.ref.processProgressIndicator.progress = action.progress;\n        },\n    });\n\n    var file = createView({\n        create: create$4,\n        write: write$2,\n        didCreateView: function didCreateView(root) {\n            applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n        },\n        name: 'file',\n    });\n\n    /**\n     * Creates the file view\n     */\n    var create$5 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n\n        // filename\n        root.ref.fileName = createElement$1('legend');\n        root.appendChild(root.ref.fileName);\n\n        // file appended\n        root.ref.file = root.appendChildView(root.createChildView(file, { id: props.id }));\n\n        // data has moved to data.js\n        root.ref.data = false;\n    };\n\n    /**\n     * Data storage\n     */\n    var didLoadItem = function didLoadItem(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n        // updates the legend of the fieldset so screenreaders can better group buttons\n        text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n    };\n\n    var fileWrapper = createView({\n        create: create$5,\n        ignoreRect: true,\n        write: createRoute({\n            DID_LOAD_ITEM: didLoadItem,\n        }),\n\n        didCreateView: function didCreateView(root) {\n            applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n        },\n        tag: 'fieldset',\n        name: 'file-wrapper',\n    });\n\n    var PANEL_SPRING_PROPS = { type: 'spring', damping: 0.6, mass: 7 };\n\n    var create$6 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        [\n            {\n                name: 'top',\n            },\n\n            {\n                name: 'center',\n                props: {\n                    translateY: null,\n                    scaleY: null,\n                },\n\n                mixins: {\n                    animations: {\n                        scaleY: PANEL_SPRING_PROPS,\n                    },\n\n                    styles: ['translateY', 'scaleY'],\n                },\n            },\n\n            {\n                name: 'bottom',\n                props: {\n                    translateY: null,\n                },\n\n                mixins: {\n                    animations: {\n                        translateY: PANEL_SPRING_PROPS,\n                    },\n\n                    styles: ['translateY'],\n                },\n            },\n        ].forEach(function(section) {\n            createSection(root, section, props.name);\n        });\n\n        root.element.classList.add('filepond--' + props.name);\n\n        root.ref.scalable = null;\n    };\n\n    var createSection = function createSection(root, section, className) {\n        var viewConstructor = createView({\n            name: 'panel-' + section.name + ' filepond--' + className,\n            mixins: section.mixins,\n            ignoreRectUpdate: true,\n        });\n\n        var view = root.createChildView(viewConstructor, section.props);\n\n        root.ref[section.name] = root.appendChildView(view);\n    };\n\n    var write$3 = function write(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props;\n\n        // update scalable state\n        if (root.ref.scalable === null || props.scalable !== root.ref.scalable) {\n            root.ref.scalable = isBoolean(props.scalable) ? props.scalable : true;\n            root.element.dataset.scalable = root.ref.scalable;\n        }\n\n        // no height, can't set\n        if (!props.height) return;\n\n        // get child rects\n        var topRect = root.ref.top.rect.element;\n        var bottomRect = root.ref.bottom.rect.element;\n\n        // make sure height never is smaller than bottom and top seciton heights combined (will probably never happen, but who knows)\n        var height = Math.max(topRect.height + bottomRect.height, props.height);\n\n        // offset center part\n        root.ref.center.translateY = topRect.height;\n\n        // scale center part\n        // use math ceil to prevent transparent lines because of rounding errors\n        root.ref.center.scaleY = (height - topRect.height - bottomRect.height) / 100;\n\n        // offset bottom part\n        root.ref.bottom.translateY = height - bottomRect.height;\n    };\n\n    var panel = createView({\n        name: 'panel',\n        read: function read(_ref3) {\n            var root = _ref3.root,\n                props = _ref3.props;\n            return (props.heightCurrent = root.ref.bottom.translateY);\n        },\n        write: write$3,\n        create: create$6,\n        ignoreRect: true,\n        mixins: {\n            apis: ['height', 'heightCurrent', 'scalable'],\n        },\n    });\n\n    var createDragHelper = function createDragHelper(items) {\n        var itemIds = items.map(function(item) {\n            return item.id;\n        });\n        var prevIndex = undefined;\n        return {\n            setIndex: function setIndex(index) {\n                prevIndex = index;\n            },\n            getIndex: function getIndex() {\n                return prevIndex;\n            },\n            getItemIndex: function getItemIndex(item) {\n                return itemIds.indexOf(item.id);\n            },\n        };\n    };\n\n    var ITEM_TRANSLATE_SPRING = {\n        type: 'spring',\n        stiffness: 0.75,\n        damping: 0.45,\n        mass: 10,\n    };\n\n    var ITEM_SCALE_SPRING = 'spring';\n\n    var StateMap = {\n        DID_START_ITEM_LOAD: 'busy',\n        DID_UPDATE_ITEM_LOAD_PROGRESS: 'loading',\n        DID_THROW_ITEM_INVALID: 'load-invalid',\n        DID_THROW_ITEM_LOAD_ERROR: 'load-error',\n        DID_LOAD_ITEM: 'idle',\n        DID_THROW_ITEM_REMOVE_ERROR: 'remove-error',\n        DID_START_ITEM_REMOVE: 'busy',\n        DID_START_ITEM_PROCESSING: 'busy processing',\n        DID_REQUEST_ITEM_PROCESSING: 'busy processing',\n        DID_UPDATE_ITEM_PROCESS_PROGRESS: 'processing',\n        DID_COMPLETE_ITEM_PROCESSING: 'processing-complete',\n        DID_THROW_ITEM_PROCESSING_ERROR: 'processing-error',\n        DID_THROW_ITEM_PROCESSING_REVERT_ERROR: 'processing-revert-error',\n        DID_ABORT_ITEM_PROCESSING: 'cancelled',\n        DID_REVERT_ITEM_PROCESSING: 'idle',\n    };\n\n    /**\n     * Creates the file view\n     */\n    var create$7 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // select\n        root.ref.handleClick = function(e) {\n            return root.dispatch('DID_ACTIVATE_ITEM', { id: props.id });\n        };\n\n        // set id\n        root.element.id = 'filepond--item-' + props.id;\n        root.element.addEventListener('click', root.ref.handleClick);\n\n        // file view\n        root.ref.container = root.appendChildView(\n            root.createChildView(fileWrapper, { id: props.id })\n        );\n\n        // file panel\n        root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'item-panel' }));\n\n        // default start height\n        root.ref.panel.height = null;\n\n        // by default not marked for removal\n        props.markedForRemoval = false;\n\n        // if not allowed to reorder file items, exit here\n        if (!root.query('GET_ALLOW_REORDER')) return;\n\n        // set to idle so shows grab cursor\n        root.element.dataset.dragState = 'idle';\n\n        var grab = function grab(e) {\n            if (!e.isPrimary) return;\n\n            var removedActivateListener = false;\n\n            var origin = {\n                x: e.pageX,\n                y: e.pageY,\n            };\n\n            props.dragOrigin = {\n                x: root.translateX,\n                y: root.translateY,\n            };\n\n            props.dragCenter = {\n                x: e.offsetX,\n                y: e.offsetY,\n            };\n\n            var dragState = createDragHelper(root.query('GET_ACTIVE_ITEMS'));\n\n            root.dispatch('DID_GRAB_ITEM', { id: props.id, dragState: dragState });\n\n            var drag = function drag(e) {\n                if (!e.isPrimary) return;\n\n                e.stopPropagation();\n                e.preventDefault();\n\n                props.dragOffset = {\n                    x: e.pageX - origin.x,\n                    y: e.pageY - origin.y,\n                };\n\n                // if dragged stop listening to clicks, will re-add when done dragging\n                var dist =\n                    props.dragOffset.x * props.dragOffset.x +\n                    props.dragOffset.y * props.dragOffset.y;\n                if (dist > 16 && !removedActivateListener) {\n                    removedActivateListener = true;\n                    root.element.removeEventListener('click', root.ref.handleClick);\n                }\n\n                root.dispatch('DID_DRAG_ITEM', { id: props.id, dragState: dragState });\n            };\n\n            var drop = function drop(e) {\n                if (!e.isPrimary) return;\n\n                props.dragOffset = {\n                    x: e.pageX - origin.x,\n                    y: e.pageY - origin.y,\n                };\n\n                reset();\n            };\n\n            var cancel = function cancel() {\n                reset();\n            };\n\n            var reset = function reset() {\n                document.removeEventListener('pointercancel', cancel);\n                document.removeEventListener('pointermove', drag);\n                document.removeEventListener('pointerup', drop);\n\n                root.dispatch('DID_DROP_ITEM', { id: props.id, dragState: dragState });\n\n                // start listening to clicks again\n                if (removedActivateListener) {\n                    setTimeout(function() {\n                        return root.element.addEventListener('click', root.ref.handleClick);\n                    }, 0);\n                }\n            };\n\n            document.addEventListener('pointercancel', cancel);\n            document.addEventListener('pointermove', drag);\n            document.addEventListener('pointerup', drop);\n        };\n\n        root.element.addEventListener('pointerdown', grab);\n    };\n\n    var route$1 = createRoute({\n        DID_UPDATE_PANEL_HEIGHT: function DID_UPDATE_PANEL_HEIGHT(_ref2) {\n            var root = _ref2.root,\n                action = _ref2.action;\n            root.height = action.height;\n        },\n    });\n\n    var write$4 = createRoute(\n        {\n            DID_GRAB_ITEM: function DID_GRAB_ITEM(_ref3) {\n                var root = _ref3.root,\n                    props = _ref3.props;\n                props.dragOrigin = {\n                    x: root.translateX,\n                    y: root.translateY,\n                };\n            },\n            DID_DRAG_ITEM: function DID_DRAG_ITEM(_ref4) {\n                var root = _ref4.root;\n                root.element.dataset.dragState = 'drag';\n            },\n            DID_DROP_ITEM: function DID_DROP_ITEM(_ref5) {\n                var root = _ref5.root,\n                    props = _ref5.props;\n                props.dragOffset = null;\n                props.dragOrigin = null;\n                root.element.dataset.dragState = 'drop';\n            },\n        },\n\n        function(_ref6) {\n            var root = _ref6.root,\n                actions = _ref6.actions,\n                props = _ref6.props,\n                shouldOptimize = _ref6.shouldOptimize;\n            if (root.element.dataset.dragState === 'drop') {\n                if (root.scaleX <= 1) {\n                    root.element.dataset.dragState = 'idle';\n                }\n            }\n\n            // select last state change action\n            var action = actions\n                .concat()\n                .filter(function(action) {\n                    return /^DID_/.test(action.type);\n                })\n                .reverse()\n                .find(function(action) {\n                    return StateMap[action.type];\n                });\n\n            // no need to set same state twice\n            if (action && action.type !== props.currentState) {\n                // set current state\n                props.currentState = action.type;\n\n                // set state\n                root.element.dataset.filepondItemState = StateMap[props.currentState] || '';\n            }\n\n            // route actions\n            var aspectRatio =\n                root.query('GET_ITEM_PANEL_ASPECT_RATIO') || root.query('GET_PANEL_ASPECT_RATIO');\n            if (!aspectRatio) {\n                route$1({ root: root, actions: actions, props: props });\n                if (!root.height && root.ref.container.rect.element.height > 0) {\n                    root.height = root.ref.container.rect.element.height;\n                }\n            } else if (!shouldOptimize) {\n                root.height = root.rect.element.width * aspectRatio;\n            }\n\n            // sync panel height with item height\n            if (shouldOptimize) {\n                root.ref.panel.height = null;\n            }\n\n            root.ref.panel.height = root.height;\n        }\n    );\n\n    var item = createView({\n        create: create$7,\n        write: write$4,\n        destroy: function destroy(_ref7) {\n            var root = _ref7.root,\n                props = _ref7.props;\n            root.element.removeEventListener('click', root.ref.handleClick);\n            root.dispatch('RELEASE_ITEM', { query: props.id });\n        },\n        tag: 'li',\n        name: 'item',\n        mixins: {\n            apis: [\n                'id',\n                'interactionMethod',\n                'markedForRemoval',\n                'spawnDate',\n                'dragCenter',\n                'dragOrigin',\n                'dragOffset',\n            ],\n\n            styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity', 'height'],\n            animations: {\n                scaleX: ITEM_SCALE_SPRING,\n                scaleY: ITEM_SCALE_SPRING,\n                translateX: ITEM_TRANSLATE_SPRING,\n                translateY: ITEM_TRANSLATE_SPRING,\n                opacity: { type: 'tween', duration: 150 },\n            },\n        },\n    });\n\n    var getItemsPerRow = function(horizontalSpace, itemWidth) {\n        // add one pixel leeway, when using percentages for item width total items can be 1.99 per row\n\n        return Math.max(1, Math.floor((horizontalSpace + 1) / itemWidth));\n    };\n\n    var getItemIndexByPosition = function getItemIndexByPosition(view, children, positionInView) {\n        if (!positionInView) return;\n\n        var horizontalSpace = view.rect.element.width;\n        // const children = view.childViews;\n        var l = children.length;\n        var last = null;\n\n        // -1, don't move items to accomodate (either add to top or bottom)\n        if (l === 0 || positionInView.top < children[0].rect.element.top) return -1;\n\n        // let's get the item width\n        var item = children[0];\n        var itemRect = item.rect.element;\n        var itemHorizontalMargin = itemRect.marginLeft + itemRect.marginRight;\n        var itemWidth = itemRect.width + itemHorizontalMargin;\n        var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n        // stack\n        if (itemsPerRow === 1) {\n            for (var index = 0; index < l; index++) {\n                var child = children[index];\n                var childMid = child.rect.outer.top + child.rect.element.height * 0.5;\n                if (positionInView.top < childMid) {\n                    return index;\n                }\n            }\n            return l;\n        }\n\n        // grid\n        var itemVerticalMargin = itemRect.marginTop + itemRect.marginBottom;\n        var itemHeight = itemRect.height + itemVerticalMargin;\n        for (var _index = 0; _index < l; _index++) {\n            var indexX = _index % itemsPerRow;\n            var indexY = Math.floor(_index / itemsPerRow);\n\n            var offsetX = indexX * itemWidth;\n            var offsetY = indexY * itemHeight;\n\n            var itemTop = offsetY - itemRect.marginTop;\n            var itemRight = offsetX + itemWidth;\n            var itemBottom = offsetY + itemHeight + itemRect.marginBottom;\n\n            if (positionInView.top < itemBottom && positionInView.top > itemTop) {\n                if (positionInView.left < itemRight) {\n                    return _index;\n                } else if (_index !== l - 1) {\n                    last = _index;\n                } else {\n                    last = null;\n                }\n            }\n        }\n\n        if (last !== null) {\n            return last;\n        }\n\n        return l;\n    };\n\n    var dropAreaDimensions = {\n        height: 0,\n        width: 0,\n        get getHeight() {\n            return this.height;\n        },\n        set setHeight(val) {\n            if (this.height === 0 || val === 0) this.height = val;\n        },\n        get getWidth() {\n            return this.width;\n        },\n        set setWidth(val) {\n            if (this.width === 0 || val === 0) this.width = val;\n        },\n        setDimensions: function setDimensions(height, width) {\n            if (this.height === 0 || height === 0) this.height = height;\n            if (this.width === 0 || width === 0) this.width = width;\n        },\n    };\n\n    var create$8 = function create(_ref) {\n        var root = _ref.root;\n        // need to set role to list as otherwise it won't be read as a list by VoiceOver\n        attr(root.element, 'role', 'list');\n\n        root.ref.lastItemSpanwDate = Date.now();\n    };\n\n    /**\n     * Inserts a new item\n     * @param root\n     * @param action\n     */\n    var addItemView = function addItemView(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        var id = action.id,\n            index = action.index,\n            interactionMethod = action.interactionMethod;\n\n        root.ref.addIndex = index;\n\n        var now = Date.now();\n        var spawnDate = now;\n        var opacity = 1;\n\n        if (interactionMethod !== InteractionMethod.NONE) {\n            opacity = 0;\n            var cooldown = root.query('GET_ITEM_INSERT_INTERVAL');\n            var dist = now - root.ref.lastItemSpanwDate;\n            spawnDate = dist < cooldown ? now + (cooldown - dist) : now;\n        }\n\n        root.ref.lastItemSpanwDate = spawnDate;\n\n        root.appendChildView(\n            root.createChildView(\n                // view type\n                item,\n\n                // props\n                {\n                    spawnDate: spawnDate,\n                    id: id,\n                    opacity: opacity,\n                    interactionMethod: interactionMethod,\n                }\n            ),\n\n            index\n        );\n    };\n\n    var moveItem = function moveItem(item, x, y) {\n        var vx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n        var vy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n        // set to null to remove animation while dragging\n        if (item.dragOffset) {\n            item.translateX = null;\n            item.translateY = null;\n            item.translateX = item.dragOrigin.x + item.dragOffset.x;\n            item.translateY = item.dragOrigin.y + item.dragOffset.y;\n            item.scaleX = 1.025;\n            item.scaleY = 1.025;\n        } else {\n            item.translateX = x;\n            item.translateY = y;\n\n            if (Date.now() > item.spawnDate) {\n                // reveal element\n                if (item.opacity === 0) {\n                    introItemView(item, x, y, vx, vy);\n                }\n\n                // make sure is default scale every frame\n                item.scaleX = 1;\n                item.scaleY = 1;\n                item.opacity = 1;\n            }\n        }\n    };\n\n    var introItemView = function introItemView(item, x, y, vx, vy) {\n        if (item.interactionMethod === InteractionMethod.NONE) {\n            item.translateX = null;\n            item.translateX = x;\n            item.translateY = null;\n            item.translateY = y;\n        } else if (item.interactionMethod === InteractionMethod.DROP) {\n            item.translateX = null;\n            item.translateX = x - vx * 20;\n\n            item.translateY = null;\n            item.translateY = y - vy * 10;\n\n            item.scaleX = 0.8;\n            item.scaleY = 0.8;\n        } else if (item.interactionMethod === InteractionMethod.BROWSE) {\n            item.translateY = null;\n            item.translateY = y - 30;\n        } else if (item.interactionMethod === InteractionMethod.API) {\n            item.translateX = null;\n            item.translateX = x - 30;\n            item.translateY = null;\n        }\n    };\n\n    /**\n     * Removes an existing item\n     * @param root\n     * @param action\n     */\n    var removeItemView = function removeItemView(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        var id = action.id;\n\n        // get the view matching the given id\n        var view = root.childViews.find(function(child) {\n            return child.id === id;\n        });\n\n        // if no view found, exit\n        if (!view) {\n            return;\n        }\n\n        // animate view out of view\n        view.scaleX = 0.9;\n        view.scaleY = 0.9;\n        view.opacity = 0;\n\n        // mark for removal\n        view.markedForRemoval = true;\n    };\n\n    var getItemHeight = function getItemHeight(child) {\n        return (\n            child.rect.element.height +\n            child.rect.element.marginBottom +\n            child.rect.element.marginTop\n        );\n    };\n    var getItemWidth = function getItemWidth(child) {\n        return (\n            child.rect.element.width +\n            child.rect.element.marginLeft * 0.5 +\n            child.rect.element.marginRight * 0.5\n        );\n    };\n\n    var dragItem = function dragItem(_ref4) {\n        var root = _ref4.root,\n            action = _ref4.action;\n        var id = action.id,\n            dragState = action.dragState;\n\n        // reference to item\n        var item = root.query('GET_ITEM', { id: id });\n\n        // get the view matching the given id\n        var view = root.childViews.find(function(child) {\n            return child.id === id;\n        });\n\n        var numItems = root.childViews.length;\n        var oldIndex = dragState.getItemIndex(item);\n\n        // if no view found, exit\n        if (!view) return;\n\n        var dragPosition = {\n            x: view.dragOrigin.x + view.dragOffset.x + view.dragCenter.x,\n            y: view.dragOrigin.y + view.dragOffset.y + view.dragCenter.y,\n        };\n\n        // get drag area dimensions\n        var dragHeight = getItemHeight(view);\n        var dragWidth = getItemWidth(view);\n\n        // get rows and columns (There will always be at least one row and one column if a file is present)\n        var cols = Math.floor(root.rect.outer.width / dragWidth);\n        if (cols > numItems) cols = numItems;\n\n        // rows are used to find when we have left the preview area bounding box\n        var rows = Math.floor(numItems / cols + 1);\n\n        dropAreaDimensions.setHeight = dragHeight * rows;\n        dropAreaDimensions.setWidth = dragWidth * cols;\n\n        // get new index of dragged item\n        var location = {\n            y: Math.floor(dragPosition.y / dragHeight),\n            x: Math.floor(dragPosition.x / dragWidth),\n            getGridIndex: function getGridIndex() {\n                if (\n                    dragPosition.y > dropAreaDimensions.getHeight ||\n                    dragPosition.y < 0 ||\n                    dragPosition.x > dropAreaDimensions.getWidth ||\n                    dragPosition.x < 0\n                )\n                    return oldIndex;\n                return this.y * cols + this.x;\n            },\n            getColIndex: function getColIndex() {\n                var items = root.query('GET_ACTIVE_ITEMS');\n                var visibleChildren = root.childViews.filter(function(child) {\n                    return child.rect.element.height;\n                });\n                var children = items.map(function(item) {\n                    return visibleChildren.find(function(childView) {\n                        return childView.id === item.id;\n                    });\n                });\n\n                var currentIndex = children.findIndex(function(child) {\n                    return child === view;\n                });\n                var dragHeight = getItemHeight(view);\n                var l = children.length;\n                var idx = l;\n                var childHeight = 0;\n                var childBottom = 0;\n                var childTop = 0;\n                for (var i = 0; i < l; i++) {\n                    childHeight = getItemHeight(children[i]);\n                    childTop = childBottom;\n                    childBottom = childTop + childHeight;\n                    if (dragPosition.y < childBottom) {\n                        if (currentIndex > i) {\n                            if (dragPosition.y < childTop + dragHeight) {\n                                idx = i;\n                                break;\n                            }\n                            continue;\n                        }\n                        idx = i;\n                        break;\n                    }\n                }\n                return idx;\n            },\n        };\n\n        // get new index\n        var index = cols > 1 ? location.getGridIndex() : location.getColIndex();\n        root.dispatch('MOVE_ITEM', { query: view, index: index });\n\n        // if the index of the item changed, dispatch reorder action\n        var currentIndex = dragState.getIndex();\n\n        if (currentIndex === undefined || currentIndex !== index) {\n            dragState.setIndex(index);\n\n            if (currentIndex === undefined) return;\n\n            root.dispatch('DID_REORDER_ITEMS', {\n                items: root.query('GET_ACTIVE_ITEMS'),\n                origin: oldIndex,\n                target: index,\n            });\n        }\n    };\n\n    /**\n     * Setup action routes\n     */\n    var route$2 = createRoute({\n        DID_ADD_ITEM: addItemView,\n        DID_REMOVE_ITEM: removeItemView,\n        DID_DRAG_ITEM: dragItem,\n    });\n\n    /**\n     * Write to view\n     * @param root\n     * @param actions\n     * @param props\n     */\n    var write$5 = function write(_ref5) {\n        var root = _ref5.root,\n            props = _ref5.props,\n            actions = _ref5.actions,\n            shouldOptimize = _ref5.shouldOptimize;\n        // route actions\n        route$2({ root: root, props: props, actions: actions });\n        var dragCoordinates = props.dragCoordinates;\n\n        // available space on horizontal axis\n        var horizontalSpace = root.rect.element.width;\n\n        // only draw children that have dimensions\n        var visibleChildren = root.childViews.filter(function(child) {\n            return child.rect.element.height;\n        });\n\n        // sort based on current active items\n        var children = root\n            .query('GET_ACTIVE_ITEMS')\n            .map(function(item) {\n                return visibleChildren.find(function(child) {\n                    return child.id === item.id;\n                });\n            })\n            .filter(function(item) {\n                return item;\n            });\n\n        // get index\n        var dragIndex = dragCoordinates\n            ? getItemIndexByPosition(root, children, dragCoordinates)\n            : null;\n\n        // add index is used to reserve the dropped/added item index till the actual item is rendered\n        var addIndex = root.ref.addIndex || null;\n\n        // add index no longer needed till possibly next draw\n        root.ref.addIndex = null;\n\n        var dragIndexOffset = 0;\n        var removeIndexOffset = 0;\n        var addIndexOffset = 0;\n\n        if (children.length === 0) return;\n\n        var childRect = children[0].rect.element;\n        var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n        var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n        var itemWidth = childRect.width + itemHorizontalMargin;\n        var itemHeight = childRect.height + itemVerticalMargin;\n        var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n        // stack\n        if (itemsPerRow === 1) {\n            var offsetY = 0;\n            var dragOffset = 0;\n\n            children.forEach(function(child, index) {\n                if (dragIndex) {\n                    var dist = index - dragIndex;\n                    if (dist === -2) {\n                        dragOffset = -itemVerticalMargin * 0.25;\n                    } else if (dist === -1) {\n                        dragOffset = -itemVerticalMargin * 0.75;\n                    } else if (dist === 0) {\n                        dragOffset = itemVerticalMargin * 0.75;\n                    } else if (dist === 1) {\n                        dragOffset = itemVerticalMargin * 0.25;\n                    } else {\n                        dragOffset = 0;\n                    }\n                }\n\n                if (shouldOptimize) {\n                    child.translateX = null;\n                    child.translateY = null;\n                }\n\n                if (!child.markedForRemoval) {\n                    moveItem(child, 0, offsetY + dragOffset);\n                }\n\n                var itemHeight = child.rect.element.height + itemVerticalMargin;\n\n                var visualHeight = itemHeight * (child.markedForRemoval ? child.opacity : 1);\n\n                offsetY += visualHeight;\n            });\n        }\n        // grid\n        else {\n            var prevX = 0;\n            var prevY = 0;\n\n            children.forEach(function(child, index) {\n                if (index === dragIndex) {\n                    dragIndexOffset = 1;\n                }\n\n                if (index === addIndex) {\n                    addIndexOffset += 1;\n                }\n\n                if (child.markedForRemoval && child.opacity < 0.5) {\n                    removeIndexOffset -= 1;\n                }\n\n                var visualIndex = index + addIndexOffset + dragIndexOffset + removeIndexOffset;\n\n                var indexX = visualIndex % itemsPerRow;\n                var indexY = Math.floor(visualIndex / itemsPerRow);\n\n                var offsetX = indexX * itemWidth;\n                var offsetY = indexY * itemHeight;\n\n                var vectorX = Math.sign(offsetX - prevX);\n                var vectorY = Math.sign(offsetY - prevY);\n\n                prevX = offsetX;\n                prevY = offsetY;\n\n                if (child.markedForRemoval) return;\n\n                if (shouldOptimize) {\n                    child.translateX = null;\n                    child.translateY = null;\n                }\n\n                moveItem(child, offsetX, offsetY, vectorX, vectorY);\n            });\n        }\n    };\n\n    /**\n     * Filters actions that are meant specifically for a certain child of the list\n     * @param child\n     * @param actions\n     */\n    var filterSetItemActions = function filterSetItemActions(child, actions) {\n        return actions.filter(function(action) {\n            // if action has an id, filter out actions that don't have this child id\n            if (action.data && action.data.id) {\n                return child.id === action.data.id;\n            }\n\n            // allow all other actions\n            return true;\n        });\n    };\n\n    var list = createView({\n        create: create$8,\n        write: write$5,\n        tag: 'ul',\n        name: 'list',\n        didWriteView: function didWriteView(_ref6) {\n            var root = _ref6.root;\n            root.childViews\n                .filter(function(view) {\n                    return view.markedForRemoval && view.opacity === 0 && view.resting;\n                })\n                .forEach(function(view) {\n                    view._destroy();\n                    root.removeChildView(view);\n                });\n        },\n        filterFrameActionsForChild: filterSetItemActions,\n        mixins: {\n            apis: ['dragCoordinates'],\n        },\n    });\n\n    var create$9 = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        root.ref.list = root.appendChildView(root.createChildView(list));\n        props.dragCoordinates = null;\n        props.overflowing = false;\n    };\n\n    var storeDragCoordinates = function storeDragCoordinates(_ref2) {\n        var root = _ref2.root,\n            props = _ref2.props,\n            action = _ref2.action;\n        if (!root.query('GET_ITEM_INSERT_LOCATION_FREEDOM')) return;\n        props.dragCoordinates = {\n            left: action.position.scopeLeft - root.ref.list.rect.element.left,\n            top:\n                action.position.scopeTop -\n                (root.rect.outer.top + root.rect.element.marginTop + root.rect.element.scrollTop),\n        };\n    };\n\n    var clearDragCoordinates = function clearDragCoordinates(_ref3) {\n        var props = _ref3.props;\n        props.dragCoordinates = null;\n    };\n\n    var route$3 = createRoute({\n        DID_DRAG: storeDragCoordinates,\n        DID_END_DRAG: clearDragCoordinates,\n    });\n\n    var write$6 = function write(_ref4) {\n        var root = _ref4.root,\n            props = _ref4.props,\n            actions = _ref4.actions;\n\n        // route actions\n        route$3({ root: root, props: props, actions: actions });\n\n        // current drag position\n        root.ref.list.dragCoordinates = props.dragCoordinates;\n\n        // if currently overflowing but no longer received overflow\n        if (props.overflowing && !props.overflow) {\n            props.overflowing = false;\n\n            // reset overflow state\n            root.element.dataset.state = '';\n            root.height = null;\n        }\n\n        // if is not overflowing currently but does receive overflow value\n        if (props.overflow) {\n            var newHeight = Math.round(props.overflow);\n            if (newHeight !== root.height) {\n                props.overflowing = true;\n                root.element.dataset.state = 'overflow';\n                root.height = newHeight;\n            }\n        }\n    };\n\n    var listScroller = createView({\n        create: create$9,\n        write: write$6,\n        name: 'list-scroller',\n        mixins: {\n            apis: ['overflow', 'dragCoordinates'],\n            styles: ['height', 'translateY'],\n            animations: {\n                translateY: 'spring',\n            },\n        },\n    });\n\n    var attrToggle = function attrToggle(element, name, state) {\n        var enabledValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n        if (state) {\n            attr(element, name, enabledValue);\n        } else {\n            element.removeAttribute(name);\n        }\n    };\n\n    var resetFileInput = function resetFileInput(input) {\n        // no value, no need to reset\n        if (!input || input.value === '') {\n            return;\n        }\n\n        try {\n            // for modern browsers\n            input.value = '';\n        } catch (err) {}\n\n        // for IE10\n        if (input.value) {\n            // quickly append input to temp form and reset form\n            var form = createElement$1('form');\n            var parentNode = input.parentNode;\n            var ref = input.nextSibling;\n            form.appendChild(input);\n            form.reset();\n\n            // re-inject input where it originally was\n            if (ref) {\n                parentNode.insertBefore(input, ref);\n            } else {\n                parentNode.appendChild(input);\n            }\n        }\n    };\n\n    var create$a = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // set id so can be referenced from outside labels\n        root.element.id = 'filepond--browser-' + props.id;\n\n        // set name of element (is removed when a value is set)\n        attr(root.element, 'name', root.query('GET_NAME'));\n\n        // we have to link this element to the status element\n        attr(root.element, 'aria-controls', 'filepond--assistant-' + props.id);\n\n        // set label, we use labelled by as otherwise the screenreader does not read the \"browse\" text in the label (as it has tabindex: 0)\n        attr(root.element, 'aria-labelledby', 'filepond--drop-label-' + props.id);\n\n        // set configurable props\n        setAcceptedFileTypes({\n            root: root,\n            action: { value: root.query('GET_ACCEPTED_FILE_TYPES') },\n        });\n        toggleAllowMultiple({ root: root, action: { value: root.query('GET_ALLOW_MULTIPLE') } });\n        toggleDirectoryFilter({\n            root: root,\n            action: { value: root.query('GET_ALLOW_DIRECTORIES_ONLY') },\n        });\n        toggleDisabled({ root: root });\n        toggleRequired({ root: root, action: { value: root.query('GET_REQUIRED') } });\n        setCaptureMethod({ root: root, action: { value: root.query('GET_CAPTURE_METHOD') } });\n\n        // handle changes to the input field\n        root.ref.handleChange = function(e) {\n            if (!root.element.value) {\n                return;\n            }\n\n            // extract files and move value of webkitRelativePath path to _relativePath\n            var files = Array.from(root.element.files).map(function(file) {\n                file._relativePath = file.webkitRelativePath;\n                return file;\n            });\n\n            // we add a little delay so the OS file select window can move out of the way before we add our file\n            setTimeout(function() {\n                // load files\n                props.onload(files);\n\n                // reset input, it's just for exposing a method to drop files, should not retain any state\n                resetFileInput(root.element);\n            }, 250);\n        };\n\n        root.element.addEventListener('change', root.ref.handleChange);\n    };\n\n    var setAcceptedFileTypes = function setAcceptedFileTypes(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        if (!root.query('GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE')) return;\n        attrToggle(\n            root.element,\n            'accept',\n            !!action.value,\n            action.value ? action.value.join(',') : ''\n        );\n    };\n\n    var toggleAllowMultiple = function toggleAllowMultiple(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        attrToggle(root.element, 'multiple', action.value);\n    };\n\n    var toggleDirectoryFilter = function toggleDirectoryFilter(_ref4) {\n        var root = _ref4.root,\n            action = _ref4.action;\n        attrToggle(root.element, 'webkitdirectory', action.value);\n    };\n\n    var toggleDisabled = function toggleDisabled(_ref5) {\n        var root = _ref5.root;\n        var isDisabled = root.query('GET_DISABLED');\n        var doesAllowBrowse = root.query('GET_ALLOW_BROWSE');\n        var disableField = isDisabled || !doesAllowBrowse;\n        attrToggle(root.element, 'disabled', disableField);\n    };\n\n    var toggleRequired = function toggleRequired(_ref6) {\n        var root = _ref6.root,\n            action = _ref6.action;\n        // want to remove required, always possible\n        if (!action.value) {\n            attrToggle(root.element, 'required', false);\n        }\n        // if want to make required, only possible when zero items\n        else if (root.query('GET_TOTAL_ITEMS') === 0) {\n            attrToggle(root.element, 'required', true);\n        }\n    };\n\n    var setCaptureMethod = function setCaptureMethod(_ref7) {\n        var root = _ref7.root,\n            action = _ref7.action;\n        attrToggle(\n            root.element,\n            'capture',\n            !!action.value,\n            action.value === true ? '' : action.value\n        );\n    };\n\n    var updateRequiredStatus = function updateRequiredStatus(_ref8) {\n        var root = _ref8.root;\n        var element = root.element;\n        // always remove the required attribute when more than zero items\n        if (root.query('GET_TOTAL_ITEMS') > 0) {\n            attrToggle(element, 'required', false);\n            attrToggle(element, 'name', false);\n\n            // still has items\n            var activeItems = root.query('GET_ACTIVE_ITEMS');\n            var hasInvalidField = false;\n            for (var i = 0; i < activeItems.length; i++) {\n                if (activeItems[i].status === ItemStatus.LOAD_ERROR) {\n                    hasInvalidField = true;\n                }\n            }\n            // set validity status\n            root.element.setCustomValidity(\n                hasInvalidField ? root.query('GET_LABEL_INVALID_FIELD') : ''\n            );\n        } else {\n            // add name attribute\n            attrToggle(element, 'name', true, root.query('GET_NAME'));\n\n            // remove any validation messages\n            var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n            if (shouldCheckValidity) {\n                element.setCustomValidity('');\n            }\n\n            // we only add required if the field has been deemed required\n            if (root.query('GET_REQUIRED')) {\n                attrToggle(element, 'required', true);\n            }\n        }\n    };\n\n    var updateFieldValidityStatus = function updateFieldValidityStatus(_ref9) {\n        var root = _ref9.root;\n        var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n        if (!shouldCheckValidity) return;\n        root.element.setCustomValidity(root.query('GET_LABEL_INVALID_FIELD'));\n    };\n\n    var browser = createView({\n        tag: 'input',\n        name: 'browser',\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        attributes: {\n            type: 'file',\n        },\n\n        create: create$a,\n        destroy: function destroy(_ref10) {\n            var root = _ref10.root;\n            root.element.removeEventListener('change', root.ref.handleChange);\n        },\n        write: createRoute({\n            DID_LOAD_ITEM: updateRequiredStatus,\n            DID_REMOVE_ITEM: updateRequiredStatus,\n            DID_THROW_ITEM_INVALID: updateFieldValidityStatus,\n\n            DID_SET_DISABLED: toggleDisabled,\n            DID_SET_ALLOW_BROWSE: toggleDisabled,\n            DID_SET_ALLOW_DIRECTORIES_ONLY: toggleDirectoryFilter,\n            DID_SET_ALLOW_MULTIPLE: toggleAllowMultiple,\n            DID_SET_ACCEPTED_FILE_TYPES: setAcceptedFileTypes,\n            DID_SET_CAPTURE_METHOD: setCaptureMethod,\n            DID_SET_REQUIRED: toggleRequired,\n        }),\n    });\n\n    var Key = {\n        ENTER: 13,\n        SPACE: 32,\n    };\n\n    var create$b = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // create the label and link it to the file browser\n        var label = createElement$1('label');\n        attr(label, 'for', 'filepond--browser-' + props.id);\n\n        // use for labeling file input (aria-labelledby on file input)\n        attr(label, 'id', 'filepond--drop-label-' + props.id);\n\n        // handle keys\n        root.ref.handleKeyDown = function(e) {\n            var isActivationKey = e.keyCode === Key.ENTER || e.keyCode === Key.SPACE;\n            if (!isActivationKey) return;\n            // stops from triggering the element a second time\n            e.preventDefault();\n\n            // click link (will then in turn activate file input)\n            root.ref.label.click();\n        };\n\n        root.ref.handleClick = function(e) {\n            var isLabelClick = e.target === label || label.contains(e.target);\n\n            // don't want to click twice\n            if (isLabelClick) return;\n\n            // click link (will then in turn activate file input)\n            root.ref.label.click();\n        };\n\n        // attach events\n        label.addEventListener('keydown', root.ref.handleKeyDown);\n        root.element.addEventListener('click', root.ref.handleClick);\n\n        // update\n        updateLabelValue(label, props.caption);\n\n        // add!\n        root.appendChild(label);\n        root.ref.label = label;\n    };\n\n    var updateLabelValue = function updateLabelValue(label, value) {\n        label.innerHTML = value;\n        var clickable = label.querySelector('.filepond--label-action');\n        if (clickable) {\n            attr(clickable, 'tabindex', '0');\n        }\n        return value;\n    };\n\n    var dropLabel = createView({\n        name: 'drop-label',\n        ignoreRect: true,\n        create: create$b,\n        destroy: function destroy(_ref2) {\n            var root = _ref2.root;\n            root.ref.label.addEventListener('keydown', root.ref.handleKeyDown);\n            root.element.removeEventListener('click', root.ref.handleClick);\n        },\n        write: createRoute({\n            DID_SET_LABEL_IDLE: function DID_SET_LABEL_IDLE(_ref3) {\n                var root = _ref3.root,\n                    action = _ref3.action;\n                updateLabelValue(root.ref.label, action.value);\n            },\n        }),\n\n        mixins: {\n            styles: ['opacity', 'translateX', 'translateY'],\n            animations: {\n                opacity: { type: 'tween', duration: 150 },\n                translateX: 'spring',\n                translateY: 'spring',\n            },\n        },\n    });\n\n    var blob = createView({\n        name: 'drip-blob',\n        ignoreRect: true,\n        mixins: {\n            styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n            animations: {\n                scaleX: 'spring',\n                scaleY: 'spring',\n                translateX: 'spring',\n                translateY: 'spring',\n                opacity: { type: 'tween', duration: 250 },\n            },\n        },\n    });\n\n    var addBlob = function addBlob(_ref) {\n        var root = _ref.root;\n        var centerX = root.rect.element.width * 0.5;\n        var centerY = root.rect.element.height * 0.5;\n\n        root.ref.blob = root.appendChildView(\n            root.createChildView(blob, {\n                opacity: 0,\n                scaleX: 2.5,\n                scaleY: 2.5,\n                translateX: centerX,\n                translateY: centerY,\n            })\n        );\n    };\n\n    var moveBlob = function moveBlob(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        if (!root.ref.blob) {\n            addBlob({ root: root });\n            return;\n        }\n\n        root.ref.blob.translateX = action.position.scopeLeft;\n        root.ref.blob.translateY = action.position.scopeTop;\n        root.ref.blob.scaleX = 1;\n        root.ref.blob.scaleY = 1;\n        root.ref.blob.opacity = 1;\n    };\n\n    var hideBlob = function hideBlob(_ref3) {\n        var root = _ref3.root;\n        if (!root.ref.blob) {\n            return;\n        }\n        root.ref.blob.opacity = 0;\n    };\n\n    var explodeBlob = function explodeBlob(_ref4) {\n        var root = _ref4.root;\n        if (!root.ref.blob) {\n            return;\n        }\n        root.ref.blob.scaleX = 2.5;\n        root.ref.blob.scaleY = 2.5;\n        root.ref.blob.opacity = 0;\n    };\n\n    var write$7 = function write(_ref5) {\n        var root = _ref5.root,\n            props = _ref5.props,\n            actions = _ref5.actions;\n        route$4({ root: root, props: props, actions: actions });\n        var blob = root.ref.blob;\n\n        if (actions.length === 0 && blob && blob.opacity === 0) {\n            root.removeChildView(blob);\n            root.ref.blob = null;\n        }\n    };\n\n    var route$4 = createRoute({\n        DID_DRAG: moveBlob,\n        DID_DROP: explodeBlob,\n        DID_END_DRAG: hideBlob,\n    });\n\n    var drip = createView({\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        name: 'drip',\n        write: write$7,\n    });\n\n    var setInputFiles = function setInputFiles(element, files) {\n        try {\n            // Create a DataTransfer instance and add a newly created file\n            var dataTransfer = new DataTransfer();\n            files.forEach(function(file) {\n                if (file instanceof File) {\n                    dataTransfer.items.add(file);\n                } else {\n                    dataTransfer.items.add(\n                        new File([file], file.name, {\n                            type: file.type,\n                        })\n                    );\n                }\n            });\n\n            // Assign the DataTransfer files list to the file input\n            element.files = dataTransfer.files;\n        } catch (err) {\n            return false;\n        }\n        return true;\n    };\n\n    var create$c = function create(_ref) {\n        var root = _ref.root;\n        root.ref.fields = {};\n        var legend = document.createElement('legend');\n        legend.textContent = 'Files';\n        root.element.appendChild(legend);\n    };\n\n    var getField = function getField(root, id) {\n        return root.ref.fields[id];\n    };\n\n    var syncFieldPositionsWithItems = function syncFieldPositionsWithItems(root) {\n        root.query('GET_ACTIVE_ITEMS').forEach(function(item) {\n            if (!root.ref.fields[item.id]) return;\n            root.element.appendChild(root.ref.fields[item.id]);\n        });\n    };\n\n    var didReorderItems = function didReorderItems(_ref2) {\n        var root = _ref2.root;\n        return syncFieldPositionsWithItems(root);\n    };\n\n    var didAddItem = function didAddItem(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        var fileItem = root.query('GET_ITEM', action.id);\n        var isLocalFile = fileItem.origin === FileOrigin.LOCAL;\n        var shouldUseFileInput = !isLocalFile && root.query('SHOULD_UPDATE_FILE_INPUT');\n        var dataContainer = createElement$1('input');\n        dataContainer.type = shouldUseFileInput ? 'file' : 'hidden';\n        dataContainer.name = root.query('GET_NAME');\n        root.ref.fields[action.id] = dataContainer;\n        syncFieldPositionsWithItems(root);\n    };\n\n    var didLoadItem$1 = function didLoadItem(_ref4) {\n        var root = _ref4.root,\n            action = _ref4.action;\n        var field = getField(root, action.id);\n        if (!field) return;\n\n        // store server ref in hidden input\n        if (action.serverFileReference !== null) field.value = action.serverFileReference;\n\n        // store file item in file input\n        if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n\n        var fileItem = root.query('GET_ITEM', action.id);\n        setInputFiles(field, [fileItem.file]);\n    };\n\n    var didPrepareOutput = function didPrepareOutput(_ref5) {\n        var root = _ref5.root,\n            action = _ref5.action;\n        // this timeout pushes the handler after 'load'\n        if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n        setTimeout(function() {\n            var field = getField(root, action.id);\n            if (!field) return;\n            setInputFiles(field, [action.file]);\n        }, 0);\n    };\n\n    var didSetDisabled = function didSetDisabled(_ref6) {\n        var root = _ref6.root;\n        root.element.disabled = root.query('GET_DISABLED');\n    };\n\n    var didRemoveItem = function didRemoveItem(_ref7) {\n        var root = _ref7.root,\n            action = _ref7.action;\n        var field = getField(root, action.id);\n        if (!field) return;\n        if (field.parentNode) field.parentNode.removeChild(field);\n        delete root.ref.fields[action.id];\n    };\n\n    // only runs for server files. will refuse to update the value if the field\n    // is a file field\n    var didDefineValue = function didDefineValue(_ref8) {\n        var root = _ref8.root,\n            action = _ref8.action;\n        var field = getField(root, action.id);\n        if (!field) return;\n        if (action.value === null) {\n            // clear field value\n            field.removeAttribute('value');\n        } else {\n            // set field value\n            if (field.type != 'file') {\n                field.value = action.value;\n            }\n        }\n        syncFieldPositionsWithItems(root);\n    };\n\n    var write$8 = createRoute({\n        DID_SET_DISABLED: didSetDisabled,\n        DID_ADD_ITEM: didAddItem,\n        DID_LOAD_ITEM: didLoadItem$1,\n        DID_REMOVE_ITEM: didRemoveItem,\n        DID_DEFINE_VALUE: didDefineValue,\n        DID_PREPARE_OUTPUT: didPrepareOutput,\n        DID_REORDER_ITEMS: didReorderItems,\n        DID_SORT_ITEMS: didReorderItems,\n    });\n\n    var data = createView({\n        tag: 'fieldset',\n        name: 'data',\n        create: create$c,\n        write: write$8,\n        ignoreRect: true,\n    });\n\n    var getRootNode = function getRootNode(element) {\n        return 'getRootNode' in element ? element.getRootNode() : document;\n    };\n\n    var images = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff'];\n    var text$1 = ['css', 'csv', 'html', 'txt'];\n    var map = {\n        zip: 'zip|compressed',\n        epub: 'application/epub+zip',\n    };\n\n    var guesstimateMimeType = function guesstimateMimeType() {\n        var extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n        extension = extension.toLowerCase();\n        if (images.includes(extension)) {\n            return (\n                'image/' +\n                (extension === 'jpg' ? 'jpeg' : extension === 'svg' ? 'svg+xml' : extension)\n            );\n        }\n        if (text$1.includes(extension)) {\n            return 'text/' + extension;\n        }\n\n        return map[extension] || '';\n    };\n\n    var requestDataTransferItems = function requestDataTransferItems(dataTransfer) {\n        return new Promise(function(resolve, reject) {\n            // try to get links from transfer, if found we'll exit immediately (unless a file is in the dataTransfer as well, this is because Firefox could represent the file as a URL and a file object at the same time)\n            var links = getLinks(dataTransfer);\n            if (links.length && !hasFiles(dataTransfer)) {\n                return resolve(links);\n            }\n            // try to get files from the transfer\n            getFiles(dataTransfer).then(resolve);\n        });\n    };\n\n    /**\n     * Test if datatransfer has files\n     */\n    var hasFiles = function hasFiles(dataTransfer) {\n        if (dataTransfer.files) return dataTransfer.files.length > 0;\n        return false;\n    };\n\n    /**\n     * Extracts files from a DataTransfer object\n     */\n    var getFiles = function getFiles(dataTransfer) {\n        return new Promise(function(resolve, reject) {\n            // get the transfer items as promises\n            var promisedFiles = (dataTransfer.items ? Array.from(dataTransfer.items) : [])\n                // only keep file system items (files and directories)\n                .filter(function(item) {\n                    return isFileSystemItem(item);\n                })\n\n                // map each item to promise\n                .map(function(item) {\n                    return getFilesFromItem(item);\n                });\n\n            // if is empty, see if we can extract some info from the files property as a fallback\n            if (!promisedFiles.length) {\n                // TODO: test for directories (should not be allowed)\n                // Use FileReader, problem is that the files property gets lost in the process\n                resolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n                return;\n            }\n\n            // done!\n            Promise.all(promisedFiles)\n                .then(function(returnedFileGroups) {\n                    // flatten groups\n                    var files = [];\n                    returnedFileGroups.forEach(function(group) {\n                        files.push.apply(files, group);\n                    });\n\n                    // done (filter out empty files)!\n                    resolve(\n                        files\n                            .filter(function(file) {\n                                return file;\n                            })\n                            .map(function(file) {\n                                if (!file._relativePath)\n                                    file._relativePath = file.webkitRelativePath;\n                                return file;\n                            })\n                    );\n                })\n                .catch(console.error);\n        });\n    };\n\n    var isFileSystemItem = function isFileSystemItem(item) {\n        if (isEntry(item)) {\n            var entry = getAsEntry(item);\n            if (entry) {\n                return entry.isFile || entry.isDirectory;\n            }\n        }\n        return item.kind === 'file';\n    };\n\n    var getFilesFromItem = function getFilesFromItem(item) {\n        return new Promise(function(resolve, reject) {\n            if (isDirectoryEntry(item)) {\n                getFilesInDirectory(getAsEntry(item))\n                    .then(resolve)\n                    .catch(reject);\n                return;\n            }\n\n            resolve([item.getAsFile()]);\n        });\n    };\n\n    var getFilesInDirectory = function getFilesInDirectory(entry) {\n        return new Promise(function(resolve, reject) {\n            var files = [];\n\n            // the total entries to read\n            var dirCounter = 0;\n            var fileCounter = 0;\n\n            var resolveIfDone = function resolveIfDone() {\n                if (fileCounter === 0 && dirCounter === 0) {\n                    resolve(files);\n                }\n            };\n\n            // the recursive function\n            var readEntries = function readEntries(dirEntry) {\n                dirCounter++;\n\n                var directoryReader = dirEntry.createReader();\n\n                // directories are returned in batches, we need to process all batches before we're done\n                var readBatch = function readBatch() {\n                    directoryReader.readEntries(function(entries) {\n                        if (entries.length === 0) {\n                            dirCounter--;\n                            resolveIfDone();\n                            return;\n                        }\n\n                        entries.forEach(function(entry) {\n                            // recursively read more directories\n                            if (entry.isDirectory) {\n                                readEntries(entry);\n                            } else {\n                                // read as file\n                                fileCounter++;\n\n                                entry.file(function(file) {\n                                    var correctedFile = correctMissingFileType(file);\n                                    if (entry.fullPath)\n                                        correctedFile._relativePath = entry.fullPath;\n                                    files.push(correctedFile);\n                                    fileCounter--;\n                                    resolveIfDone();\n                                });\n                            }\n                        });\n\n                        // try to get next batch of files\n                        readBatch();\n                    }, reject);\n                };\n\n                // read first batch of files\n                readBatch();\n            };\n\n            // go!\n            readEntries(entry);\n        });\n    };\n\n    var correctMissingFileType = function correctMissingFileType(file) {\n        if (file.type.length) return file;\n        var date = file.lastModifiedDate;\n        var name = file.name;\n        var type = guesstimateMimeType(getExtensionFromFilename(file.name));\n        if (!type.length) return file;\n        file = file.slice(0, file.size, type);\n        file.name = name;\n        file.lastModifiedDate = date;\n        return file;\n    };\n\n    var isDirectoryEntry = function isDirectoryEntry(item) {\n        return isEntry(item) && (getAsEntry(item) || {}).isDirectory;\n    };\n\n    var isEntry = function isEntry(item) {\n        return 'webkitGetAsEntry' in item;\n    };\n\n    var getAsEntry = function getAsEntry(item) {\n        return item.webkitGetAsEntry();\n    };\n\n    /**\n     * Extracts links from a DataTransfer object\n     */\n    var getLinks = function getLinks(dataTransfer) {\n        var links = [];\n        try {\n            // look in meta data property\n            links = getLinksFromTransferMetaData(dataTransfer);\n            if (links.length) {\n                return links;\n            }\n            links = getLinksFromTransferURLData(dataTransfer);\n        } catch (e) {\n            // nope nope nope (probably IE trouble)\n        }\n        return links;\n    };\n\n    var getLinksFromTransferURLData = function getLinksFromTransferURLData(dataTransfer) {\n        var data = dataTransfer.getData('url');\n        if (typeof data === 'string' && data.length) {\n            return [data];\n        }\n        return [];\n    };\n\n    var getLinksFromTransferMetaData = function getLinksFromTransferMetaData(dataTransfer) {\n        var data = dataTransfer.getData('text/html');\n        if (typeof data === 'string' && data.length) {\n            var matches = data.match(/src\\s*=\\s*\"(.+?)\"/);\n            if (matches) {\n                return [matches[1]];\n            }\n        }\n        return [];\n    };\n\n    var dragNDropObservers = [];\n\n    var eventPosition = function eventPosition(e) {\n        return {\n            pageLeft: e.pageX,\n            pageTop: e.pageY,\n            scopeLeft: e.offsetX || e.layerX,\n            scopeTop: e.offsetY || e.layerY,\n        };\n    };\n\n    var createDragNDropClient = function createDragNDropClient(\n        element,\n        scopeToObserve,\n        filterElement\n    ) {\n        var observer = getDragNDropObserver(scopeToObserve);\n\n        var client = {\n            element: element,\n            filterElement: filterElement,\n            state: null,\n            ondrop: function ondrop() {},\n            onenter: function onenter() {},\n            ondrag: function ondrag() {},\n            onexit: function onexit() {},\n            onload: function onload() {},\n            allowdrop: function allowdrop() {},\n        };\n\n        client.destroy = observer.addListener(client);\n\n        return client;\n    };\n\n    var getDragNDropObserver = function getDragNDropObserver(element) {\n        // see if already exists, if so, return\n        var observer = dragNDropObservers.find(function(item) {\n            return item.element === element;\n        });\n        if (observer) {\n            return observer;\n        }\n\n        // create new observer, does not yet exist for this element\n        var newObserver = createDragNDropObserver(element);\n        dragNDropObservers.push(newObserver);\n        return newObserver;\n    };\n\n    var createDragNDropObserver = function createDragNDropObserver(element) {\n        var clients = [];\n\n        var routes = {\n            dragenter: dragenter,\n            dragover: dragover,\n            dragleave: dragleave,\n            drop: drop,\n        };\n\n        var handlers = {};\n\n        forin(routes, function(event, createHandler) {\n            handlers[event] = createHandler(element, clients);\n            element.addEventListener(event, handlers[event], false);\n        });\n\n        var observer = {\n            element: element,\n            addListener: function addListener(client) {\n                // add as client\n                clients.push(client);\n\n                // return removeListener function\n                return function() {\n                    // remove client\n                    clients.splice(clients.indexOf(client), 1);\n\n                    // if no more clients, clean up observer\n                    if (clients.length === 0) {\n                        dragNDropObservers.splice(dragNDropObservers.indexOf(observer), 1);\n\n                        forin(routes, function(event) {\n                            element.removeEventListener(event, handlers[event], false);\n                        });\n                    }\n                };\n            },\n        };\n\n        return observer;\n    };\n\n    var elementFromPoint = function elementFromPoint(root, point) {\n        if (!('elementFromPoint' in root)) {\n            root = document;\n        }\n        return root.elementFromPoint(point.x, point.y);\n    };\n\n    var isEventTarget = function isEventTarget(e, target) {\n        // get root\n        var root = getRootNode(target);\n\n        // get element at position\n        // if root is not actual shadow DOM and does not have elementFromPoint method, use the one on document\n        var elementAtPosition = elementFromPoint(root, {\n            x: e.pageX - window.pageXOffset,\n            y: e.pageY - window.pageYOffset,\n        });\n\n        // test if target is the element or if one of its children is\n        return elementAtPosition === target || target.contains(elementAtPosition);\n    };\n\n    var initialTarget = null;\n\n    var setDropEffect = function setDropEffect(dataTransfer, effect) {\n        // is in try catch as IE11 will throw error if not\n        try {\n            dataTransfer.dropEffect = effect;\n        } catch (e) {}\n    };\n\n    var dragenter = function dragenter(root, clients) {\n        return function(e) {\n            e.preventDefault();\n\n            initialTarget = e.target;\n\n            clients.forEach(function(client) {\n                var element = client.element,\n                    onenter = client.onenter;\n\n                if (isEventTarget(e, element)) {\n                    client.state = 'enter';\n\n                    // fire enter event\n                    onenter(eventPosition(e));\n                }\n            });\n        };\n    };\n\n    var dragover = function dragover(root, clients) {\n        return function(e) {\n            e.preventDefault();\n\n            var dataTransfer = e.dataTransfer;\n\n            requestDataTransferItems(dataTransfer).then(function(items) {\n                var overDropTarget = false;\n\n                clients.some(function(client) {\n                    var filterElement = client.filterElement,\n                        element = client.element,\n                        onenter = client.onenter,\n                        onexit = client.onexit,\n                        ondrag = client.ondrag,\n                        allowdrop = client.allowdrop;\n\n                    // by default we can drop\n                    setDropEffect(dataTransfer, 'copy');\n\n                    // allow transfer of these items\n                    var allowsTransfer = allowdrop(items);\n\n                    // only used when can be dropped on page\n                    if (!allowsTransfer) {\n                        setDropEffect(dataTransfer, 'none');\n                        return;\n                    }\n\n                    // targetting this client\n                    if (isEventTarget(e, element)) {\n                        overDropTarget = true;\n\n                        // had no previous state, means we are entering this client\n                        if (client.state === null) {\n                            client.state = 'enter';\n                            onenter(eventPosition(e));\n                            return;\n                        }\n\n                        // now over element (no matter if it allows the drop or not)\n                        client.state = 'over';\n\n                        // needs to allow transfer\n                        if (filterElement && !allowsTransfer) {\n                            setDropEffect(dataTransfer, 'none');\n                            return;\n                        }\n\n                        // dragging\n                        ondrag(eventPosition(e));\n                    } else {\n                        // should be over an element to drop\n                        if (filterElement && !overDropTarget) {\n                            setDropEffect(dataTransfer, 'none');\n                        }\n\n                        // might have just left this client?\n                        if (client.state) {\n                            client.state = null;\n                            onexit(eventPosition(e));\n                        }\n                    }\n                });\n            });\n        };\n    };\n\n    var drop = function drop(root, clients) {\n        return function(e) {\n            e.preventDefault();\n\n            var dataTransfer = e.dataTransfer;\n\n            requestDataTransferItems(dataTransfer).then(function(items) {\n                clients.forEach(function(client) {\n                    var filterElement = client.filterElement,\n                        element = client.element,\n                        ondrop = client.ondrop,\n                        onexit = client.onexit,\n                        allowdrop = client.allowdrop;\n\n                    client.state = null;\n\n                    // if we're filtering on element we need to be over the element to drop\n                    if (filterElement && !isEventTarget(e, element)) return;\n\n                    // no transfer for this client\n                    if (!allowdrop(items)) return onexit(eventPosition(e));\n\n                    // we can drop these items on this client\n                    ondrop(eventPosition(e), items);\n                });\n            });\n        };\n    };\n\n    var dragleave = function dragleave(root, clients) {\n        return function(e) {\n            if (initialTarget !== e.target) {\n                return;\n            }\n\n            clients.forEach(function(client) {\n                var onexit = client.onexit;\n\n                client.state = null;\n\n                onexit(eventPosition(e));\n            });\n        };\n    };\n\n    var createHopper = function createHopper(scope, validateItems, options) {\n        // is now hopper scope\n        scope.classList.add('filepond--hopper');\n\n        // shortcuts\n        var catchesDropsOnPage = options.catchesDropsOnPage,\n            requiresDropOnElement = options.requiresDropOnElement,\n            _options$filterItems = options.filterItems,\n            filterItems =\n                _options$filterItems === void 0\n                    ? function(items) {\n                          return items;\n                      }\n                    : _options$filterItems;\n\n        // create a dnd client\n        var client = createDragNDropClient(\n            scope,\n            catchesDropsOnPage ? document.documentElement : scope,\n            requiresDropOnElement\n        );\n\n        // current client state\n        var lastState = '';\n        var currentState = '';\n\n        // determines if a file may be dropped\n        client.allowdrop = function(items) {\n            // TODO: if we can, throw error to indicate the items cannot by dropped\n\n            return validateItems(filterItems(items));\n        };\n\n        client.ondrop = function(position, items) {\n            var filteredItems = filterItems(items);\n\n            if (!validateItems(filteredItems)) {\n                api.ondragend(position);\n                return;\n            }\n\n            currentState = 'drag-drop';\n\n            api.onload(filteredItems, position);\n        };\n\n        client.ondrag = function(position) {\n            api.ondrag(position);\n        };\n\n        client.onenter = function(position) {\n            currentState = 'drag-over';\n\n            api.ondragstart(position);\n        };\n\n        client.onexit = function(position) {\n            currentState = 'drag-exit';\n\n            api.ondragend(position);\n        };\n\n        var api = {\n            updateHopperState: function updateHopperState() {\n                if (lastState !== currentState) {\n                    scope.dataset.hopperState = currentState;\n                    lastState = currentState;\n                }\n            },\n            onload: function onload() {},\n            ondragstart: function ondragstart() {},\n            ondrag: function ondrag() {},\n            ondragend: function ondragend() {},\n            destroy: function destroy() {\n                // destroy client\n                client.destroy();\n            },\n        };\n\n        return api;\n    };\n\n    var listening = false;\n    var listeners$1 = [];\n\n    var handlePaste = function handlePaste(e) {\n        // if is pasting in input or textarea and the target is outside of a filepond scope, ignore\n        var activeEl = document.activeElement;\n        var isActiveElementEditable =\n            activeEl &&\n            (/textarea|input/i.test(activeEl.nodeName) ||\n                activeEl.getAttribute('contenteditable') === 'true' ||\n                activeEl.getAttribute('contenteditable') === '');\n\n        if (isActiveElementEditable) {\n            // test textarea or input is contained in filepond root\n            var inScope = false;\n            var element = activeEl;\n            while (element !== document.body) {\n                if (element.classList.contains('filepond--root')) {\n                    inScope = true;\n                    break;\n                }\n                element = element.parentNode;\n            }\n\n            if (!inScope) return;\n        }\n\n        requestDataTransferItems(e.clipboardData).then(function(files) {\n            // no files received\n            if (!files.length) {\n                return;\n            }\n\n            // notify listeners of received files\n            listeners$1.forEach(function(listener) {\n                return listener(files);\n            });\n        });\n    };\n\n    var listen = function listen(cb) {\n        // can't add twice\n        if (listeners$1.includes(cb)) {\n            return;\n        }\n\n        // add initial listener\n        listeners$1.push(cb);\n\n        // setup paste listener for entire page\n        if (listening) {\n            return;\n        }\n\n        listening = true;\n        document.addEventListener('paste', handlePaste);\n    };\n\n    var unlisten = function unlisten(listener) {\n        arrayRemove(listeners$1, listeners$1.indexOf(listener));\n\n        // clean up\n        if (listeners$1.length === 0) {\n            document.removeEventListener('paste', handlePaste);\n            listening = false;\n        }\n    };\n\n    var createPaster = function createPaster() {\n        var cb = function cb(files) {\n            api.onload(files);\n        };\n\n        var api = {\n            destroy: function destroy() {\n                unlisten(cb);\n            },\n            onload: function onload() {},\n        };\n\n        listen(cb);\n\n        return api;\n    };\n\n    /**\n     * Creates the file view\n     */\n    var create$d = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        root.element.id = 'filepond--assistant-' + props.id;\n        attr(root.element, 'role', 'alert');\n        attr(root.element, 'aria-live', 'polite');\n        attr(root.element, 'aria-relevant', 'additions');\n    };\n\n    var addFilesNotificationTimeout = null;\n    var notificationClearTimeout = null;\n\n    var filenames = [];\n\n    var assist = function assist(root, message) {\n        root.element.textContent = message;\n    };\n\n    var clear$1 = function clear(root) {\n        root.element.textContent = '';\n    };\n\n    var listModified = function listModified(root, filename, label) {\n        var total = root.query('GET_TOTAL_ITEMS');\n        assist(\n            root,\n            label +\n                ' ' +\n                filename +\n                ', ' +\n                total +\n                ' ' +\n                (total === 1\n                    ? root.query('GET_LABEL_FILE_COUNT_SINGULAR')\n                    : root.query('GET_LABEL_FILE_COUNT_PLURAL'))\n        );\n\n        // clear group after set amount of time so the status is not read twice\n        clearTimeout(notificationClearTimeout);\n        notificationClearTimeout = setTimeout(function() {\n            clear$1(root);\n        }, 1500);\n    };\n\n    var isUsingFilePond = function isUsingFilePond(root) {\n        return root.element.parentNode.contains(document.activeElement);\n    };\n\n    var itemAdded = function itemAdded(_ref2) {\n        var root = _ref2.root,\n            action = _ref2.action;\n        if (!isUsingFilePond(root)) {\n            return;\n        }\n\n        root.element.textContent = '';\n        var item = root.query('GET_ITEM', action.id);\n        filenames.push(item.filename);\n\n        clearTimeout(addFilesNotificationTimeout);\n        addFilesNotificationTimeout = setTimeout(function() {\n            listModified(root, filenames.join(', '), root.query('GET_LABEL_FILE_ADDED'));\n            filenames.length = 0;\n        }, 750);\n    };\n\n    var itemRemoved = function itemRemoved(_ref3) {\n        var root = _ref3.root,\n            action = _ref3.action;\n        if (!isUsingFilePond(root)) {\n            return;\n        }\n\n        var item = action.item;\n        listModified(root, item.filename, root.query('GET_LABEL_FILE_REMOVED'));\n    };\n\n    var itemProcessed = function itemProcessed(_ref4) {\n        var root = _ref4.root,\n            action = _ref4.action;\n        // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n        var item = root.query('GET_ITEM', action.id);\n        var filename = item.filename;\n        var label = root.query('GET_LABEL_FILE_PROCESSING_COMPLETE');\n\n        assist(root, filename + ' ' + label);\n    };\n\n    var itemProcessedUndo = function itemProcessedUndo(_ref5) {\n        var root = _ref5.root,\n            action = _ref5.action;\n        var item = root.query('GET_ITEM', action.id);\n        var filename = item.filename;\n        var label = root.query('GET_LABEL_FILE_PROCESSING_ABORTED');\n\n        assist(root, filename + ' ' + label);\n    };\n\n    var itemError = function itemError(_ref6) {\n        var root = _ref6.root,\n            action = _ref6.action;\n        var item = root.query('GET_ITEM', action.id);\n        var filename = item.filename;\n\n        // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n        assist(root, action.status.main + ' ' + filename + ' ' + action.status.sub);\n    };\n\n    var assistant = createView({\n        create: create$d,\n        ignoreRect: true,\n        ignoreRectUpdate: true,\n        write: createRoute({\n            DID_LOAD_ITEM: itemAdded,\n            DID_REMOVE_ITEM: itemRemoved,\n            DID_COMPLETE_ITEM_PROCESSING: itemProcessed,\n\n            DID_ABORT_ITEM_PROCESSING: itemProcessedUndo,\n            DID_REVERT_ITEM_PROCESSING: itemProcessedUndo,\n\n            DID_THROW_ITEM_REMOVE_ERROR: itemError,\n            DID_THROW_ITEM_LOAD_ERROR: itemError,\n            DID_THROW_ITEM_INVALID: itemError,\n            DID_THROW_ITEM_PROCESSING_ERROR: itemError,\n        }),\n\n        tag: 'span',\n        name: 'assistant',\n    });\n\n    var toCamels = function toCamels(string) {\n        var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n        return string.replace(new RegExp(separator + '.', 'g'), function(sub) {\n            return sub.charAt(1).toUpperCase();\n        });\n    };\n\n    var debounce = function debounce(func) {\n        var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;\n        var immidiateOnly =\n            arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n        var last = Date.now();\n        var timeout = null;\n\n        return function() {\n            for (\n                var _len = arguments.length, args = new Array(_len), _key = 0;\n                _key < _len;\n                _key++\n            ) {\n                args[_key] = arguments[_key];\n            }\n            clearTimeout(timeout);\n\n            var dist = Date.now() - last;\n\n            var fn = function fn() {\n                last = Date.now();\n                func.apply(void 0, args);\n            };\n\n            if (dist < interval) {\n                // we need to delay by the difference between interval and dist\n                // for example: if distance is 10 ms and interval is 16 ms,\n                // we need to wait an additional 6ms before calling the function)\n                if (!immidiateOnly) {\n                    timeout = setTimeout(fn, interval - dist);\n                }\n            } else {\n                // go!\n                fn();\n            }\n        };\n    };\n\n    var MAX_FILES_LIMIT = 1000000;\n\n    var prevent = function prevent(e) {\n        return e.preventDefault();\n    };\n\n    var create$e = function create(_ref) {\n        var root = _ref.root,\n            props = _ref.props;\n        // Add id\n        var id = root.query('GET_ID');\n        if (id) {\n            root.element.id = id;\n        }\n\n        // Add className\n        var className = root.query('GET_CLASS_NAME');\n        if (className) {\n            className\n                .split(' ')\n                .filter(function(name) {\n                    return name.length;\n                })\n                .forEach(function(name) {\n                    root.element.classList.add(name);\n                });\n        }\n\n        // Field label\n        root.ref.label = root.appendChildView(\n            root.createChildView(\n                dropLabel,\n                Object.assign({}, props, {\n                    translateY: null,\n                    caption: root.query('GET_LABEL_IDLE'),\n                })\n            )\n        );\n\n        // List of items\n        root.ref.list = root.appendChildView(\n            root.createChildView(listScroller, { translateY: null })\n        );\n\n        // Background panel\n        root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'panel-root' }));\n\n        // Assistant notifies assistive tech when content changes\n        root.ref.assistant = root.appendChildView(\n            root.createChildView(assistant, Object.assign({}, props))\n        );\n\n        // Data\n        root.ref.data = root.appendChildView(root.createChildView(data, Object.assign({}, props)));\n\n        // Measure (tests if fixed height was set)\n        // DOCTYPE needs to be set for this to work\n        root.ref.measure = createElement$1('div');\n        root.ref.measure.style.height = '100%';\n        root.element.appendChild(root.ref.measure);\n\n        // information on the root height or fixed height status\n        root.ref.bounds = null;\n\n        // apply initial style properties\n        root.query('GET_STYLES')\n            .filter(function(style) {\n                return !isEmpty(style.value);\n            })\n            .map(function(_ref2) {\n                var name = _ref2.name,\n                    value = _ref2.value;\n                root.element.dataset[name] = value;\n            });\n\n        // determine if width changed\n        root.ref.widthPrevious = null;\n        root.ref.widthUpdated = debounce(function() {\n            root.ref.updateHistory = [];\n            root.dispatch('DID_RESIZE_ROOT');\n        }, 250);\n\n        // history of updates\n        root.ref.previousAspectRatio = null;\n        root.ref.updateHistory = [];\n\n        // prevent scrolling and zooming on iOS (only if supports pointer events, for then we can enable reorder)\n        var canHover = window.matchMedia('(pointer: fine) and (hover: hover)').matches;\n        var hasPointerEvents = 'PointerEvent' in window;\n        if (root.query('GET_ALLOW_REORDER') && hasPointerEvents && !canHover) {\n            root.element.addEventListener('touchmove', prevent, { passive: false });\n            root.element.addEventListener('gesturestart', prevent);\n        }\n\n        // add credits\n        var credits = root.query('GET_CREDITS');\n        var hasCredits = credits.length === 2;\n        if (hasCredits) {\n            var frag = document.createElement('a');\n            frag.className = 'filepond--credits';\n            frag.href = credits[0];\n            frag.tabIndex = -1;\n            frag.target = '_blank';\n            frag.rel = 'noopener noreferrer nofollow';\n            frag.textContent = credits[1];\n            root.element.appendChild(frag);\n            root.ref.credits = frag;\n        }\n    };\n\n    var write$9 = function write(_ref3) {\n        var root = _ref3.root,\n            props = _ref3.props,\n            actions = _ref3.actions;\n        // route actions\n        route$5({ root: root, props: props, actions: actions });\n\n        // apply style properties\n        actions\n            .filter(function(action) {\n                return /^DID_SET_STYLE_/.test(action.type);\n            })\n            .filter(function(action) {\n                return !isEmpty(action.data.value);\n            })\n            .map(function(_ref4) {\n                var type = _ref4.type,\n                    data = _ref4.data;\n                var name = toCamels(type.substring(8).toLowerCase(), '_');\n                root.element.dataset[name] = data.value;\n                root.invalidateLayout();\n            });\n\n        if (root.rect.element.hidden) return;\n\n        if (root.rect.element.width !== root.ref.widthPrevious) {\n            root.ref.widthPrevious = root.rect.element.width;\n            root.ref.widthUpdated();\n        }\n\n        // get box bounds, we do this only once\n        var bounds = root.ref.bounds;\n        if (!bounds) {\n            bounds = root.ref.bounds = calculateRootBoundingBoxHeight(root);\n\n            // destroy measure element\n            root.element.removeChild(root.ref.measure);\n            root.ref.measure = null;\n        }\n\n        // get quick references to various high level parts of the upload tool\n        var _root$ref = root.ref,\n            hopper = _root$ref.hopper,\n            label = _root$ref.label,\n            list = _root$ref.list,\n            panel = _root$ref.panel;\n\n        // sets correct state to hopper scope\n        if (hopper) {\n            hopper.updateHopperState();\n        }\n\n        // bool to indicate if we're full or not\n        var aspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n        var isMultiItem = root.query('GET_ALLOW_MULTIPLE');\n        var totalItems = root.query('GET_TOTAL_ITEMS');\n        var maxItems = isMultiItem ? root.query('GET_MAX_FILES') || MAX_FILES_LIMIT : 1;\n        var atMaxCapacity = totalItems === maxItems;\n\n        // action used to add item\n        var addAction = actions.find(function(action) {\n            return action.type === 'DID_ADD_ITEM';\n        });\n\n        // if reached max capacity and we've just reached it\n        if (atMaxCapacity && addAction) {\n            // get interaction type\n            var interactionMethod = addAction.data.interactionMethod;\n\n            // hide label\n            label.opacity = 0;\n\n            if (isMultiItem) {\n                label.translateY = -40;\n            } else {\n                if (interactionMethod === InteractionMethod.API) {\n                    label.translateX = 40;\n                } else if (interactionMethod === InteractionMethod.BROWSE) {\n                    label.translateY = 40;\n                } else {\n                    label.translateY = 30;\n                }\n            }\n        } else if (!atMaxCapacity) {\n            label.opacity = 1;\n            label.translateX = 0;\n            label.translateY = 0;\n        }\n\n        var listItemMargin = calculateListItemMargin(root);\n\n        var listHeight = calculateListHeight(root);\n\n        var labelHeight = label.rect.element.height;\n        var currentLabelHeight = !isMultiItem || atMaxCapacity ? 0 : labelHeight;\n\n        var listMarginTop = atMaxCapacity ? list.rect.element.marginTop : 0;\n        var listMarginBottom = totalItems === 0 ? 0 : list.rect.element.marginBottom;\n\n        var visualHeight =\n            currentLabelHeight + listMarginTop + listHeight.visual + listMarginBottom;\n        var boundsHeight =\n            currentLabelHeight + listMarginTop + listHeight.bounds + listMarginBottom;\n\n        // link list to label bottom position\n        list.translateY =\n            Math.max(0, currentLabelHeight - list.rect.element.marginTop) - listItemMargin.top;\n\n        if (aspectRatio) {\n            // fixed aspect ratio\n\n            // calculate height based on width\n            var width = root.rect.element.width;\n            var height = width * aspectRatio;\n\n            // clear history if aspect ratio has changed\n            if (aspectRatio !== root.ref.previousAspectRatio) {\n                root.ref.previousAspectRatio = aspectRatio;\n                root.ref.updateHistory = [];\n            }\n\n            // remember this width\n            var history = root.ref.updateHistory;\n            history.push(width);\n\n            var MAX_BOUNCES = 2;\n            if (history.length > MAX_BOUNCES * 2) {\n                var l = history.length;\n                var bottom = l - 10;\n                var bounces = 0;\n                for (var i = l; i >= bottom; i--) {\n                    if (history[i] === history[i - 2]) {\n                        bounces++;\n                    }\n\n                    if (bounces >= MAX_BOUNCES) {\n                        // dont adjust height\n                        return;\n                    }\n                }\n            }\n\n            // fix height of panel so it adheres to aspect ratio\n            panel.scalable = false;\n            panel.height = height;\n\n            // available height for list\n            var listAvailableHeight =\n                // the height of the panel minus the label height\n                height -\n                currentLabelHeight -\n                // the room we leave open between the end of the list and the panel bottom\n                (listMarginBottom - listItemMargin.bottom) -\n                // if we're full we need to leave some room between the top of the panel and the list\n                (atMaxCapacity ? listMarginTop : 0);\n\n            if (listHeight.visual > listAvailableHeight) {\n                list.overflow = listAvailableHeight;\n            } else {\n                list.overflow = null;\n            }\n\n            // set container bounds (so pushes siblings downwards)\n            root.height = height;\n        } else if (bounds.fixedHeight) {\n            // fixed height\n\n            // fix height of panel\n            panel.scalable = false;\n\n            // available height for list\n            var _listAvailableHeight =\n                // the height of the panel minus the label height\n                bounds.fixedHeight -\n                currentLabelHeight -\n                // the room we leave open between the end of the list and the panel bottom\n                (listMarginBottom - listItemMargin.bottom) -\n                // if we're full we need to leave some room between the top of the panel and the list\n                (atMaxCapacity ? listMarginTop : 0);\n\n            // set list height\n            if (listHeight.visual > _listAvailableHeight) {\n                list.overflow = _listAvailableHeight;\n            } else {\n                list.overflow = null;\n            }\n\n            // no need to set container bounds as these are handles by CSS fixed height\n        } else if (bounds.cappedHeight) {\n            // max-height\n\n            // not a fixed height panel\n            var isCappedHeight = visualHeight >= bounds.cappedHeight;\n            var panelHeight = Math.min(bounds.cappedHeight, visualHeight);\n            panel.scalable = true;\n            panel.height = isCappedHeight\n                ? panelHeight\n                : panelHeight - listItemMargin.top - listItemMargin.bottom;\n\n            // available height for list\n            var _listAvailableHeight2 =\n                // the height of the panel minus the label height\n                panelHeight -\n                currentLabelHeight -\n                // the room we leave open between the end of the list and the panel bottom\n                (listMarginBottom - listItemMargin.bottom) -\n                // if we're full we need to leave some room between the top of the panel and the list\n                (atMaxCapacity ? listMarginTop : 0);\n\n            // set list height (if is overflowing)\n            if (visualHeight > bounds.cappedHeight && listHeight.visual > _listAvailableHeight2) {\n                list.overflow = _listAvailableHeight2;\n            } else {\n                list.overflow = null;\n            }\n\n            // set container bounds (so pushes siblings downwards)\n            root.height = Math.min(\n                bounds.cappedHeight,\n                boundsHeight - listItemMargin.top - listItemMargin.bottom\n            );\n        } else {\n            // flexible height\n\n            // not a fixed height panel\n            var itemMargin = totalItems > 0 ? listItemMargin.top + listItemMargin.bottom : 0;\n            panel.scalable = true;\n            panel.height = Math.max(labelHeight, visualHeight - itemMargin);\n\n            // set container bounds (so pushes siblings downwards)\n            root.height = Math.max(labelHeight, boundsHeight - itemMargin);\n        }\n\n        // move credits to bottom\n        if (root.ref.credits && panel.heightCurrent)\n            root.ref.credits.style.transform = 'translateY(' + panel.heightCurrent + 'px)';\n    };\n\n    var calculateListItemMargin = function calculateListItemMargin(root) {\n        var item = root.ref.list.childViews[0].childViews[0];\n        return item\n            ? {\n                  top: item.rect.element.marginTop,\n                  bottom: item.rect.element.marginBottom,\n              }\n            : {\n                  top: 0,\n                  bottom: 0,\n              };\n    };\n\n    var calculateListHeight = function calculateListHeight(root) {\n        var visual = 0;\n        var bounds = 0;\n\n        // get file list reference\n        var scrollList = root.ref.list;\n        var itemList = scrollList.childViews[0];\n        var visibleChildren = itemList.childViews.filter(function(child) {\n            return child.rect.element.height;\n        });\n        var children = root\n            .query('GET_ACTIVE_ITEMS')\n            .map(function(item) {\n                return visibleChildren.find(function(child) {\n                    return child.id === item.id;\n                });\n            })\n            .filter(function(item) {\n                return item;\n            });\n\n        // no children, done!\n        if (children.length === 0) return { visual: visual, bounds: bounds };\n\n        var horizontalSpace = itemList.rect.element.width;\n        var dragIndex = getItemIndexByPosition(itemList, children, scrollList.dragCoordinates);\n\n        var childRect = children[0].rect.element;\n\n        var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n        var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n\n        var itemWidth = childRect.width + itemHorizontalMargin;\n        var itemHeight = childRect.height + itemVerticalMargin;\n\n        var newItem = typeof dragIndex !== 'undefined' && dragIndex >= 0 ? 1 : 0;\n        var removedItem = children.find(function(child) {\n            return child.markedForRemoval && child.opacity < 0.45;\n        })\n            ? -1\n            : 0;\n        var verticalItemCount = children.length + newItem + removedItem;\n        var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n        // stack\n        if (itemsPerRow === 1) {\n            children.forEach(function(item) {\n                var height = item.rect.element.height + itemVerticalMargin;\n                bounds += height;\n                visual += height * item.opacity;\n            });\n        }\n        // grid\n        else {\n            bounds = Math.ceil(verticalItemCount / itemsPerRow) * itemHeight;\n            visual = bounds;\n        }\n\n        return { visual: visual, bounds: bounds };\n    };\n\n    var calculateRootBoundingBoxHeight = function calculateRootBoundingBoxHeight(root) {\n        var height = root.ref.measureHeight || null;\n        var cappedHeight = parseInt(root.style.maxHeight, 10) || null;\n        var fixedHeight = height === 0 ? null : height;\n\n        return {\n            cappedHeight: cappedHeight,\n            fixedHeight: fixedHeight,\n        };\n    };\n\n    var exceedsMaxFiles = function exceedsMaxFiles(root, items) {\n        var allowReplace = root.query('GET_ALLOW_REPLACE');\n        var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n        var totalItems = root.query('GET_TOTAL_ITEMS');\n        var maxItems = root.query('GET_MAX_FILES');\n\n        // total amount of items being dragged\n        var totalBrowseItems = items.length;\n\n        // if does not allow multiple items and dragging more than one item\n        if (!allowMultiple && totalBrowseItems > 1) {\n            root.dispatch('DID_THROW_MAX_FILES', {\n                source: items,\n                error: createResponse('warning', 0, 'Max files'),\n            });\n\n            return true;\n        }\n\n        // limit max items to one if not allowed to drop multiple items\n        maxItems = allowMultiple ? maxItems : 1;\n\n        if (!allowMultiple && allowReplace) {\n            // There is only one item, so there is room to replace or add an item\n            return false;\n        }\n\n        // no more room?\n        var hasMaxItems = isInt(maxItems);\n        if (hasMaxItems && totalItems + totalBrowseItems > maxItems) {\n            root.dispatch('DID_THROW_MAX_FILES', {\n                source: items,\n                error: createResponse('warning', 0, 'Max files'),\n            });\n\n            return true;\n        }\n\n        return false;\n    };\n\n    var getDragIndex = function getDragIndex(list, children, position) {\n        var itemList = list.childViews[0];\n        return getItemIndexByPosition(itemList, children, {\n            left: position.scopeLeft - itemList.rect.element.left,\n            top:\n                position.scopeTop -\n                (list.rect.outer.top + list.rect.element.marginTop + list.rect.element.scrollTop),\n        });\n    };\n\n    /**\n     * Enable or disable file drop functionality\n     */\n    var toggleDrop = function toggleDrop(root) {\n        var isAllowed = root.query('GET_ALLOW_DROP');\n        var isDisabled = root.query('GET_DISABLED');\n        var enabled = isAllowed && !isDisabled;\n        if (enabled && !root.ref.hopper) {\n            var hopper = createHopper(\n                root.element,\n                function(items) {\n                    // allow quick validation of dropped items\n                    var beforeDropFile =\n                        root.query('GET_BEFORE_DROP_FILE') ||\n                        function() {\n                            return true;\n                        };\n\n                    // all items should be validated by all filters as valid\n                    var dropValidation = root.query('GET_DROP_VALIDATION');\n                    return dropValidation\n                        ? items.every(function(item) {\n                              return (\n                                  applyFilters('ALLOW_HOPPER_ITEM', item, {\n                                      query: root.query,\n                                  }).every(function(result) {\n                                      return result === true;\n                                  }) && beforeDropFile(item)\n                              );\n                          })\n                        : true;\n                },\n                {\n                    filterItems: function filterItems(items) {\n                        var ignoredFiles = root.query('GET_IGNORED_FILES');\n                        return items.filter(function(item) {\n                            if (isFile(item)) {\n                                return !ignoredFiles.includes(item.name.toLowerCase());\n                            }\n                            return true;\n                        });\n                    },\n                    catchesDropsOnPage: root.query('GET_DROP_ON_PAGE'),\n                    requiresDropOnElement: root.query('GET_DROP_ON_ELEMENT'),\n                }\n            );\n\n            hopper.onload = function(items, position) {\n                // get item children elements and sort based on list sort\n                var list = root.ref.list.childViews[0];\n                var visibleChildren = list.childViews.filter(function(child) {\n                    return child.rect.element.height;\n                });\n                var children = root\n                    .query('GET_ACTIVE_ITEMS')\n                    .map(function(item) {\n                        return visibleChildren.find(function(child) {\n                            return child.id === item.id;\n                        });\n                    })\n                    .filter(function(item) {\n                        return item;\n                    });\n\n                applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n                    queue\n                ) {\n                    // these files don't fit so stop here\n                    if (exceedsMaxFiles(root, queue)) return false;\n\n                    // go\n                    root.dispatch('ADD_ITEMS', {\n                        items: queue,\n                        index: getDragIndex(root.ref.list, children, position),\n                        interactionMethod: InteractionMethod.DROP,\n                    });\n                });\n\n                root.dispatch('DID_DROP', { position: position });\n\n                root.dispatch('DID_END_DRAG', { position: position });\n            };\n\n            hopper.ondragstart = function(position) {\n                root.dispatch('DID_START_DRAG', { position: position });\n            };\n\n            hopper.ondrag = debounce(function(position) {\n                root.dispatch('DID_DRAG', { position: position });\n            });\n\n            hopper.ondragend = function(position) {\n                root.dispatch('DID_END_DRAG', { position: position });\n            };\n\n            root.ref.hopper = hopper;\n\n            root.ref.drip = root.appendChildView(root.createChildView(drip));\n        } else if (!enabled && root.ref.hopper) {\n            root.ref.hopper.destroy();\n            root.ref.hopper = null;\n            root.removeChildView(root.ref.drip);\n        }\n    };\n\n    /**\n     * Enable or disable browse functionality\n     */\n    var toggleBrowse = function toggleBrowse(root, props) {\n        var isAllowed = root.query('GET_ALLOW_BROWSE');\n        var isDisabled = root.query('GET_DISABLED');\n        var enabled = isAllowed && !isDisabled;\n        if (enabled && !root.ref.browser) {\n            root.ref.browser = root.appendChildView(\n                root.createChildView(\n                    browser,\n                    Object.assign({}, props, {\n                        onload: function onload(items) {\n                            applyFilterChain('ADD_ITEMS', items, {\n                                dispatch: root.dispatch,\n                            }).then(function(queue) {\n                                // these files don't fit so stop here\n                                if (exceedsMaxFiles(root, queue)) return false;\n\n                                // add items!\n                                root.dispatch('ADD_ITEMS', {\n                                    items: queue,\n                                    index: -1,\n                                    interactionMethod: InteractionMethod.BROWSE,\n                                });\n                            });\n                        },\n                    })\n                ),\n\n                0\n            );\n        } else if (!enabled && root.ref.browser) {\n            root.removeChildView(root.ref.browser);\n            root.ref.browser = null;\n        }\n    };\n\n    /**\n     * Enable or disable paste functionality\n     */\n    var togglePaste = function togglePaste(root) {\n        var isAllowed = root.query('GET_ALLOW_PASTE');\n        var isDisabled = root.query('GET_DISABLED');\n        var enabled = isAllowed && !isDisabled;\n        if (enabled && !root.ref.paster) {\n            root.ref.paster = createPaster();\n            root.ref.paster.onload = function(items) {\n                applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n                    queue\n                ) {\n                    // these files don't fit so stop here\n                    if (exceedsMaxFiles(root, queue)) return false;\n\n                    // add items!\n                    root.dispatch('ADD_ITEMS', {\n                        items: queue,\n                        index: -1,\n                        interactionMethod: InteractionMethod.PASTE,\n                    });\n                });\n            };\n        } else if (!enabled && root.ref.paster) {\n            root.ref.paster.destroy();\n            root.ref.paster = null;\n        }\n    };\n\n    /**\n     * Route actions\n     */\n    var route$5 = createRoute({\n        DID_SET_ALLOW_BROWSE: function DID_SET_ALLOW_BROWSE(_ref5) {\n            var root = _ref5.root,\n                props = _ref5.props;\n            toggleBrowse(root, props);\n        },\n        DID_SET_ALLOW_DROP: function DID_SET_ALLOW_DROP(_ref6) {\n            var root = _ref6.root;\n            toggleDrop(root);\n        },\n        DID_SET_ALLOW_PASTE: function DID_SET_ALLOW_PASTE(_ref7) {\n            var root = _ref7.root;\n            togglePaste(root);\n        },\n        DID_SET_DISABLED: function DID_SET_DISABLED(_ref8) {\n            var root = _ref8.root,\n                props = _ref8.props;\n            toggleDrop(root);\n            togglePaste(root);\n            toggleBrowse(root, props);\n            var isDisabled = root.query('GET_DISABLED');\n            if (isDisabled) {\n                root.element.dataset.disabled = 'disabled';\n            } else {\n                // delete root.element.dataset.disabled; <= this does not work on iOS 10\n                root.element.removeAttribute('data-disabled');\n            }\n        },\n    });\n\n    var root = createView({\n        name: 'root',\n        read: function read(_ref9) {\n            var root = _ref9.root;\n            if (root.ref.measure) {\n                root.ref.measureHeight = root.ref.measure.offsetHeight;\n            }\n        },\n        create: create$e,\n        write: write$9,\n        destroy: function destroy(_ref10) {\n            var root = _ref10.root;\n            if (root.ref.paster) {\n                root.ref.paster.destroy();\n            }\n            if (root.ref.hopper) {\n                root.ref.hopper.destroy();\n            }\n            root.element.removeEventListener('touchmove', prevent);\n            root.element.removeEventListener('gesturestart', prevent);\n        },\n        mixins: {\n            styles: ['height'],\n        },\n    });\n\n    // creates the app\n    var createApp = function createApp() {\n        var initialOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        // let element\n        var originalElement = null;\n\n        // get default options\n        var defaultOptions = getOptions();\n\n        // create the data store, this will contain all our app info\n        var store = createStore(\n            // initial state (should be serializable)\n            createInitialState(defaultOptions),\n\n            // queries\n            [queries, createOptionQueries(defaultOptions)],\n\n            // action handlers\n            [actions, createOptionActions(defaultOptions)]\n        );\n\n        // set initial options\n        store.dispatch('SET_OPTIONS', { options: initialOptions });\n\n        // kick thread if visibility changes\n        var visibilityHandler = function visibilityHandler() {\n            if (document.hidden) return;\n            store.dispatch('KICK');\n        };\n        document.addEventListener('visibilitychange', visibilityHandler);\n\n        // re-render on window resize start and finish\n        var resizeDoneTimer = null;\n        var isResizing = false;\n        var isResizingHorizontally = false;\n        var initialWindowWidth = null;\n        var currentWindowWidth = null;\n        var resizeHandler = function resizeHandler() {\n            if (!isResizing) {\n                isResizing = true;\n            }\n            clearTimeout(resizeDoneTimer);\n            resizeDoneTimer = setTimeout(function() {\n                isResizing = false;\n                initialWindowWidth = null;\n                currentWindowWidth = null;\n                if (isResizingHorizontally) {\n                    isResizingHorizontally = false;\n                    store.dispatch('DID_STOP_RESIZE');\n                }\n            }, 500);\n        };\n        window.addEventListener('resize', resizeHandler);\n\n        // render initial view\n        var view = root(store, { id: getUniqueId() });\n\n        //\n        // PRIVATE API -------------------------------------------------------------------------------------\n        //\n        var isResting = false;\n        var isHidden = false;\n\n        var readWriteApi = {\n            // necessary for update loop\n\n            /**\n             * Reads from dom (never call manually)\n             * @private\n             */\n            _read: function _read() {\n                // test if we're resizing horizontally\n                // TODO: see if we can optimize this by measuring root rect\n                if (isResizing) {\n                    currentWindowWidth = window.innerWidth;\n                    if (!initialWindowWidth) {\n                        initialWindowWidth = currentWindowWidth;\n                    }\n\n                    if (!isResizingHorizontally && currentWindowWidth !== initialWindowWidth) {\n                        store.dispatch('DID_START_RESIZE');\n                        isResizingHorizontally = true;\n                    }\n                }\n\n                if (isHidden && isResting) {\n                    // test if is no longer hidden\n                    isResting = view.element.offsetParent === null;\n                }\n\n                // if resting, no need to read as numbers will still all be correct\n                if (isResting) return;\n\n                // read view data\n                view._read();\n\n                // if is hidden we need to know so we exit rest mode when revealed\n                isHidden = view.rect.element.hidden;\n            },\n\n            /**\n             * Writes to dom (never call manually)\n             * @private\n             */\n            _write: function _write(ts) {\n                // get all actions from store\n                var actions = store\n                    .processActionQueue()\n\n                    // filter out set actions (these will automatically trigger DID_SET)\n                    .filter(function(action) {\n                        return !/^SET_/.test(action.type);\n                    });\n\n                // if was idling and no actions stop here\n                if (isResting && !actions.length) return;\n\n                // some actions might trigger events\n                routeActionsToEvents(actions);\n\n                // update the view\n                isResting = view._write(ts, actions, isResizingHorizontally);\n\n                // will clean up all archived items\n                removeReleasedItems(store.query('GET_ITEMS'));\n\n                // now idling\n                if (isResting) {\n                    store.processDispatchQueue();\n                }\n            },\n        };\n\n        //\n        // EXPOSE EVENTS -------------------------------------------------------------------------------------\n        //\n        var createEvent = function createEvent(name) {\n            return function(data) {\n                // create default event\n                var event = {\n                    type: name,\n                };\n\n                // no data to add\n                if (!data) {\n                    return event;\n                }\n\n                // copy relevant props\n                if (data.hasOwnProperty('error')) {\n                    event.error = data.error ? Object.assign({}, data.error) : null;\n                }\n\n                if (data.status) {\n                    event.status = Object.assign({}, data.status);\n                }\n\n                if (data.file) {\n                    event.output = data.file;\n                }\n\n                // only source is available, else add item if possible\n                if (data.source) {\n                    event.file = data.source;\n                } else if (data.item || data.id) {\n                    var item = data.item ? data.item : store.query('GET_ITEM', data.id);\n                    event.file = item ? createItemAPI(item) : null;\n                }\n\n                // map all items in a possible items array\n                if (data.items) {\n                    event.items = data.items.map(createItemAPI);\n                }\n\n                // if this is a progress event add the progress amount\n                if (/progress/.test(name)) {\n                    event.progress = data.progress;\n                }\n\n                // copy relevant props\n                if (data.hasOwnProperty('origin') && data.hasOwnProperty('target')) {\n                    event.origin = data.origin;\n                    event.target = data.target;\n                }\n\n                return event;\n            };\n        };\n\n        var eventRoutes = {\n            DID_DESTROY: createEvent('destroy'),\n\n            DID_INIT: createEvent('init'),\n\n            DID_THROW_MAX_FILES: createEvent('warning'),\n\n            DID_INIT_ITEM: createEvent('initfile'),\n            DID_START_ITEM_LOAD: createEvent('addfilestart'),\n            DID_UPDATE_ITEM_LOAD_PROGRESS: createEvent('addfileprogress'),\n            DID_LOAD_ITEM: createEvent('addfile'),\n\n            DID_THROW_ITEM_INVALID: [createEvent('error'), createEvent('addfile')],\n\n            DID_THROW_ITEM_LOAD_ERROR: [createEvent('error'), createEvent('addfile')],\n\n            DID_THROW_ITEM_REMOVE_ERROR: [createEvent('error'), createEvent('removefile')],\n\n            DID_PREPARE_OUTPUT: createEvent('preparefile'),\n\n            DID_START_ITEM_PROCESSING: createEvent('processfilestart'),\n            DID_UPDATE_ITEM_PROCESS_PROGRESS: createEvent('processfileprogress'),\n            DID_ABORT_ITEM_PROCESSING: createEvent('processfileabort'),\n            DID_COMPLETE_ITEM_PROCESSING: createEvent('processfile'),\n            DID_COMPLETE_ITEM_PROCESSING_ALL: createEvent('processfiles'),\n            DID_REVERT_ITEM_PROCESSING: createEvent('processfilerevert'),\n\n            DID_THROW_ITEM_PROCESSING_ERROR: [createEvent('error'), createEvent('processfile')],\n\n            DID_REMOVE_ITEM: createEvent('removefile'),\n\n            DID_UPDATE_ITEMS: createEvent('updatefiles'),\n\n            DID_ACTIVATE_ITEM: createEvent('activatefile'),\n\n            DID_REORDER_ITEMS: createEvent('reorderfiles'),\n        };\n\n        var exposeEvent = function exposeEvent(event) {\n            // create event object to be dispatched\n            var detail = Object.assign({ pond: exports }, event);\n            delete detail.type;\n            view.element.dispatchEvent(\n                new CustomEvent('FilePond:' + event.type, {\n                    // event info\n                    detail: detail,\n\n                    // event behaviour\n                    bubbles: true,\n                    cancelable: true,\n                    composed: true, // triggers listeners outside of shadow root\n                })\n            );\n\n            // event object to params used for `on()` event handlers and callbacks `oninit()`\n            var params = [];\n\n            // if is possible error event, make it the first param\n            if (event.hasOwnProperty('error')) {\n                params.push(event.error);\n            }\n\n            // file is always section\n            if (event.hasOwnProperty('file')) {\n                params.push(event.file);\n            }\n\n            // append other props\n            var filtered = ['type', 'error', 'file'];\n            Object.keys(event)\n                .filter(function(key) {\n                    return !filtered.includes(key);\n                })\n                .forEach(function(key) {\n                    return params.push(event[key]);\n                });\n\n            // on(type, () => { })\n            exports.fire.apply(exports, [event.type].concat(params));\n\n            // oninit = () => {}\n            var handler = store.query('GET_ON' + event.type.toUpperCase());\n            if (handler) {\n                handler.apply(void 0, params);\n            }\n        };\n\n        var routeActionsToEvents = function routeActionsToEvents(actions) {\n            if (!actions.length) return;\n            actions\n                .filter(function(action) {\n                    return eventRoutes[action.type];\n                })\n                .forEach(function(action) {\n                    var routes = eventRoutes[action.type];\n                    (Array.isArray(routes) ? routes : [routes]).forEach(function(route) {\n                        // this isn't fantastic, but because of the stacking of settimeouts plugins can handle the did_load before the did_init\n                        if (action.type === 'DID_INIT_ITEM') {\n                            exposeEvent(route(action.data));\n                        } else {\n                            setTimeout(function() {\n                                exposeEvent(route(action.data));\n                            }, 0);\n                        }\n                    });\n                });\n        };\n\n        //\n        // PUBLIC API -------------------------------------------------------------------------------------\n        //\n        var setOptions = function setOptions(options) {\n            return store.dispatch('SET_OPTIONS', { options: options });\n        };\n\n        var getFile = function getFile(query) {\n            return store.query('GET_ACTIVE_ITEM', query);\n        };\n\n        var prepareFile = function prepareFile(query) {\n            return new Promise(function(resolve, reject) {\n                store.dispatch('REQUEST_ITEM_PREPARE', {\n                    query: query,\n                    success: function success(item) {\n                        resolve(item);\n                    },\n                    failure: function failure(error) {\n                        reject(error);\n                    },\n                });\n            });\n        };\n\n        var addFile = function addFile(source) {\n            var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n            return new Promise(function(resolve, reject) {\n                addFiles([{ source: source, options: options }], { index: options.index })\n                    .then(function(items) {\n                        return resolve(items && items[0]);\n                    })\n                    .catch(reject);\n            });\n        };\n\n        var isFilePondFile = function isFilePondFile(obj) {\n            return obj.file && obj.id;\n        };\n\n        var removeFile = function removeFile(query, options) {\n            // if only passed options\n            if (typeof query === 'object' && !isFilePondFile(query) && !options) {\n                options = query;\n                query = undefined;\n            }\n\n            // request item removal\n            store.dispatch('REMOVE_ITEM', Object.assign({}, options, { query: query }));\n\n            // see if item has been removed\n            return store.query('GET_ACTIVE_ITEM', query) === null;\n        };\n\n        var addFiles = function addFiles() {\n            for (\n                var _len = arguments.length, args = new Array(_len), _key = 0;\n                _key < _len;\n                _key++\n            ) {\n                args[_key] = arguments[_key];\n            }\n            return new Promise(function(resolve, reject) {\n                var sources = [];\n                var options = {};\n\n                // user passed a sources array\n                if (isArray(args[0])) {\n                    sources.push.apply(sources, args[0]);\n                    Object.assign(options, args[1] || {});\n                } else {\n                    // user passed sources as arguments, last one might be options object\n                    var lastArgument = args[args.length - 1];\n                    if (typeof lastArgument === 'object' && !(lastArgument instanceof Blob)) {\n                        Object.assign(options, args.pop());\n                    }\n\n                    // add rest to sources\n                    sources.push.apply(sources, args);\n                }\n\n                store.dispatch('ADD_ITEMS', {\n                    items: sources,\n                    index: options.index,\n                    interactionMethod: InteractionMethod.API,\n                    success: resolve,\n                    failure: reject,\n                });\n            });\n        };\n\n        var getFiles = function getFiles() {\n            return store.query('GET_ACTIVE_ITEMS');\n        };\n\n        var processFile = function processFile(query) {\n            return new Promise(function(resolve, reject) {\n                store.dispatch('REQUEST_ITEM_PROCESSING', {\n                    query: query,\n                    success: function success(item) {\n                        resolve(item);\n                    },\n                    failure: function failure(error) {\n                        reject(error);\n                    },\n                });\n            });\n        };\n\n        var prepareFiles = function prepareFiles() {\n            for (\n                var _len2 = arguments.length, args = new Array(_len2), _key2 = 0;\n                _key2 < _len2;\n                _key2++\n            ) {\n                args[_key2] = arguments[_key2];\n            }\n            var queries = Array.isArray(args[0]) ? args[0] : args;\n            var items = queries.length ? queries : getFiles();\n            return Promise.all(items.map(prepareFile));\n        };\n\n        var processFiles = function processFiles() {\n            for (\n                var _len3 = arguments.length, args = new Array(_len3), _key3 = 0;\n                _key3 < _len3;\n                _key3++\n            ) {\n                args[_key3] = arguments[_key3];\n            }\n            var queries = Array.isArray(args[0]) ? args[0] : args;\n            if (!queries.length) {\n                var files = getFiles().filter(function(item) {\n                    return (\n                        !(item.status === ItemStatus.IDLE && item.origin === FileOrigin.LOCAL) &&\n                        item.status !== ItemStatus.PROCESSING &&\n                        item.status !== ItemStatus.PROCESSING_COMPLETE &&\n                        item.status !== ItemStatus.PROCESSING_REVERT_ERROR\n                    );\n                });\n\n                return Promise.all(files.map(processFile));\n            }\n            return Promise.all(queries.map(processFile));\n        };\n\n        var removeFiles = function removeFiles() {\n            for (\n                var _len4 = arguments.length, args = new Array(_len4), _key4 = 0;\n                _key4 < _len4;\n                _key4++\n            ) {\n                args[_key4] = arguments[_key4];\n            }\n\n            var queries = Array.isArray(args[0]) ? args[0] : args;\n\n            var options;\n            if (typeof queries[queries.length - 1] === 'object') {\n                options = queries.pop();\n            } else if (Array.isArray(args[0])) {\n                options = args[1];\n            }\n\n            var files = getFiles();\n\n            if (!queries.length)\n                return Promise.all(\n                    files.map(function(file) {\n                        return removeFile(file, options);\n                    })\n                );\n\n            // when removing by index the indexes shift after each file removal so we need to convert indexes to ids\n            var mappedQueries = queries\n                .map(function(query) {\n                    return isNumber(query) ? (files[query] ? files[query].id : null) : query;\n                })\n                .filter(function(query) {\n                    return query;\n                });\n\n            return mappedQueries.map(function(q) {\n                return removeFile(q, options);\n            });\n        };\n\n        var exports = Object.assign(\n            {},\n\n            on(),\n            {},\n\n            readWriteApi,\n            {},\n\n            createOptionAPI(store, defaultOptions),\n            {\n                /**\n                 * Override options defined in options object\n                 * @param options\n                 */\n                setOptions: setOptions,\n\n                /**\n                 * Load the given file\n                 * @param source - the source of the file (either a File, base64 data uri or url)\n                 * @param options - object, { index: 0 }\n                 */\n                addFile: addFile,\n\n                /**\n                 * Load the given files\n                 * @param sources - the sources of the files to load\n                 * @param options - object, { index: 0 }\n                 */\n                addFiles: addFiles,\n\n                /**\n                 * Returns the file objects matching the given query\n                 * @param query { string, number, null }\n                 */\n                getFile: getFile,\n\n                /**\n                 * Upload file with given name\n                 * @param query { string, number, null  }\n                 */\n                processFile: processFile,\n\n                /**\n                 * Request prepare output for file with given name\n                 * @param query { string, number, null  }\n                 */\n                prepareFile: prepareFile,\n\n                /**\n                 * Removes a file by its name\n                 * @param query { string, number, null  }\n                 */\n                removeFile: removeFile,\n\n                /**\n                 * Moves a file to a new location in the files list\n                 */\n                moveFile: function moveFile(query, index) {\n                    return store.dispatch('MOVE_ITEM', { query: query, index: index });\n                },\n\n                /**\n                 * Returns all files (wrapped in public api)\n                 */\n                getFiles: getFiles,\n\n                /**\n                 * Starts uploading all files\n                 */\n                processFiles: processFiles,\n\n                /**\n                 * Clears all files from the files list\n                 */\n                removeFiles: removeFiles,\n\n                /**\n                 * Starts preparing output of all files\n                 */\n                prepareFiles: prepareFiles,\n\n                /**\n                 * Sort list of files\n                 */\n                sort: function sort(compare) {\n                    return store.dispatch('SORT', { compare: compare });\n                },\n\n                /**\n                 * Browse the file system for a file\n                 */\n                browse: function browse() {\n                    // needs to be trigger directly as user action needs to be traceable (is not traceable in requestAnimationFrame)\n                    var input = view.element.querySelector('input[type=file]');\n                    if (input) {\n                        input.click();\n                    }\n                },\n\n                /**\n                 * Destroys the app\n                 */\n                destroy: function destroy() {\n                    // request destruction\n                    exports.fire('destroy', view.element);\n\n                    // stop active processes (file uploads, fetches, stuff like that)\n                    // loop over items and depending on states call abort for ongoing processes\n                    store.dispatch('ABORT_ALL');\n\n                    // destroy view\n                    view._destroy();\n\n                    // stop listening to resize\n                    window.removeEventListener('resize', resizeHandler);\n\n                    // stop listening to the visiblitychange event\n                    document.removeEventListener('visibilitychange', visibilityHandler);\n\n                    // dispatch destroy\n                    store.dispatch('DID_DESTROY');\n                },\n\n                /**\n                 * Inserts the plugin before the target element\n                 */\n                insertBefore: function insertBefore$1(element) {\n                    return insertBefore(view.element, element);\n                },\n\n                /**\n                 * Inserts the plugin after the target element\n                 */\n                insertAfter: function insertAfter$1(element) {\n                    return insertAfter(view.element, element);\n                },\n\n                /**\n                 * Appends the plugin to the target element\n                 */\n                appendTo: function appendTo(element) {\n                    return element.appendChild(view.element);\n                },\n\n                /**\n                 * Replaces an element with the app\n                 */\n                replaceElement: function replaceElement(element) {\n                    // insert the app before the element\n                    insertBefore(view.element, element);\n\n                    // remove the original element\n                    element.parentNode.removeChild(element);\n\n                    // remember original element\n                    originalElement = element;\n                },\n\n                /**\n                 * Restores the original element\n                 */\n                restoreElement: function restoreElement() {\n                    if (!originalElement) {\n                        return; // no element to restore\n                    }\n\n                    // restore original element\n                    insertAfter(originalElement, view.element);\n\n                    // remove our element\n                    view.element.parentNode.removeChild(view.element);\n\n                    // remove reference\n                    originalElement = null;\n                },\n\n                /**\n                 * Returns true if the app root is attached to given element\n                 * @param element\n                 */\n                isAttachedTo: function isAttachedTo(element) {\n                    return view.element === element || originalElement === element;\n                },\n\n                /**\n                 * Returns the root element\n                 */\n                element: {\n                    get: function get() {\n                        return view.element;\n                    },\n                },\n\n                /**\n                 * Returns the current pond status\n                 */\n                status: {\n                    get: function get() {\n                        return store.query('GET_STATUS');\n                    },\n                },\n            }\n        );\n\n        // Done!\n        store.dispatch('DID_INIT');\n\n        // create actual api object\n        return createObject(exports);\n    };\n\n    var createAppObject = function createAppObject() {\n        var customOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        // default options\n        var defaultOptions = {};\n        forin(getOptions(), function(key, value) {\n            defaultOptions[key] = value[0];\n        });\n\n        // set app options\n        var app = createApp(\n            Object.assign(\n                {},\n\n                defaultOptions,\n                {},\n\n                customOptions\n            )\n        );\n\n        // return the plugin instance\n        return app;\n    };\n\n    var lowerCaseFirstLetter = function lowerCaseFirstLetter(string) {\n        return string.charAt(0).toLowerCase() + string.slice(1);\n    };\n\n    var attributeNameToPropertyName = function attributeNameToPropertyName(attributeName) {\n        return toCamels(attributeName.replace(/^data-/, ''));\n    };\n\n    var mapObject = function mapObject(object, propertyMap) {\n        // remove unwanted\n        forin(propertyMap, function(selector, mapping) {\n            forin(object, function(property, value) {\n                // create regexp shortcut\n                var selectorRegExp = new RegExp(selector);\n\n                // tests if\n                var matches = selectorRegExp.test(property);\n\n                // no match, skip\n                if (!matches) {\n                    return;\n                }\n\n                // if there's a mapping, the original property is always removed\n                delete object[property];\n\n                // should only remove, we done!\n                if (mapping === false) {\n                    return;\n                }\n\n                // move value to new property\n                if (isString(mapping)) {\n                    object[mapping] = value;\n                    return;\n                }\n\n                // move to group\n                var group = mapping.group;\n                if (isObject(mapping) && !object[group]) {\n                    object[group] = {};\n                }\n\n                object[group][lowerCaseFirstLetter(property.replace(selectorRegExp, ''))] = value;\n            });\n\n            // do submapping\n            if (mapping.mapping) {\n                mapObject(object[mapping.group], mapping.mapping);\n            }\n        });\n    };\n\n    var getAttributesAsObject = function getAttributesAsObject(node) {\n        var attributeMapping =\n            arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        // turn attributes into object\n        var attributes = [];\n        forin(node.attributes, function(index) {\n            attributes.push(node.attributes[index]);\n        });\n\n        var output = attributes\n            .filter(function(attribute) {\n                return attribute.name;\n            })\n            .reduce(function(obj, attribute) {\n                var value = attr(node, attribute.name);\n\n                obj[attributeNameToPropertyName(attribute.name)] =\n                    value === attribute.name ? true : value;\n                return obj;\n            }, {});\n\n        // do mapping of object properties\n        mapObject(output, attributeMapping);\n\n        return output;\n    };\n\n    var createAppAtElement = function createAppAtElement(element) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        // how attributes of the input element are mapped to the options for the plugin\n        var attributeMapping = {\n            // translate to other name\n            '^class$': 'className',\n            '^multiple$': 'allowMultiple',\n            '^capture$': 'captureMethod',\n            '^webkitdirectory$': 'allowDirectoriesOnly',\n\n            // group under single property\n            '^server': {\n                group: 'server',\n                mapping: {\n                    '^process': {\n                        group: 'process',\n                    },\n\n                    '^revert': {\n                        group: 'revert',\n                    },\n\n                    '^fetch': {\n                        group: 'fetch',\n                    },\n\n                    '^restore': {\n                        group: 'restore',\n                    },\n\n                    '^load': {\n                        group: 'load',\n                    },\n                },\n            },\n\n            // don't include in object\n            '^type$': false,\n            '^files$': false,\n        };\n\n        // add additional option translators\n        applyFilters('SET_ATTRIBUTE_TO_OPTION_MAP', attributeMapping);\n\n        // create final options object by setting options object and then overriding options supplied on element\n        var mergedOptions = Object.assign({}, options);\n\n        var attributeOptions = getAttributesAsObject(\n            element.nodeName === 'FIELDSET' ? element.querySelector('input[type=file]') : element,\n            attributeMapping\n        );\n\n        // merge with options object\n        Object.keys(attributeOptions).forEach(function(key) {\n            if (isObject(attributeOptions[key])) {\n                if (!isObject(mergedOptions[key])) {\n                    mergedOptions[key] = {};\n                }\n                Object.assign(mergedOptions[key], attributeOptions[key]);\n            } else {\n                mergedOptions[key] = attributeOptions[key];\n            }\n        });\n\n        // if parent is a fieldset, get files from parent by selecting all input fields that are not file upload fields\n        // these will then be automatically set to the initial files\n        mergedOptions.files = (options.files || []).concat(\n            Array.from(element.querySelectorAll('input:not([type=file])')).map(function(input) {\n                return {\n                    source: input.value,\n                    options: {\n                        type: input.dataset.type,\n                    },\n                };\n            })\n        );\n\n        // build plugin\n        var app = createAppObject(mergedOptions);\n\n        // add already selected files\n        if (element.files) {\n            Array.from(element.files).forEach(function(file) {\n                app.addFile(file);\n            });\n        }\n\n        // replace the target element\n        app.replaceElement(element);\n\n        // expose\n        return app;\n    };\n\n    // if an element is passed, we create the instance at that element, if not, we just create an up object\n    var createApp$1 = function createApp() {\n        return isNode(arguments.length <= 0 ? undefined : arguments[0])\n            ? createAppAtElement.apply(void 0, arguments)\n            : createAppObject.apply(void 0, arguments);\n    };\n\n    var PRIVATE_METHODS = ['fire', '_read', '_write'];\n\n    var createAppAPI = function createAppAPI(app) {\n        var api = {};\n\n        copyObjectPropertiesToObject(app, api, PRIVATE_METHODS);\n\n        return api;\n    };\n\n    /**\n     * Replaces placeholders in given string with replacements\n     * @param string - \"Foo {bar}\"\"\n     * @param replacements - { \"bar\": 10 }\n     */\n    var replaceInString = function replaceInString(string, replacements) {\n        return string.replace(/(?:{([a-zA-Z]+)})/g, function(match, group) {\n            return replacements[group];\n        });\n    };\n\n    var createWorker = function createWorker(fn) {\n        var workerBlob = new Blob(['(', fn.toString(), ')()'], {\n            type: 'application/javascript',\n        });\n\n        var workerURL = URL.createObjectURL(workerBlob);\n        var worker = new Worker(workerURL);\n\n        return {\n            transfer: function transfer(message, cb) {},\n            post: function post(message, cb, transferList) {\n                var id = getUniqueId();\n\n                worker.onmessage = function(e) {\n                    if (e.data.id === id) {\n                        cb(e.data.message);\n                    }\n                };\n\n                worker.postMessage(\n                    {\n                        id: id,\n                        message: message,\n                    },\n\n                    transferList\n                );\n            },\n            terminate: function terminate() {\n                worker.terminate();\n                URL.revokeObjectURL(workerURL);\n            },\n        };\n    };\n\n    var loadImage = function loadImage(url) {\n        return new Promise(function(resolve, reject) {\n            var img = new Image();\n            img.onload = function() {\n                resolve(img);\n            };\n            img.onerror = function(e) {\n                reject(e);\n            };\n            img.src = url;\n        });\n    };\n\n    var renameFile = function renameFile(file, name) {\n        var renamedFile = file.slice(0, file.size, file.type);\n        renamedFile.lastModifiedDate = file.lastModifiedDate;\n        renamedFile.name = name;\n        return renamedFile;\n    };\n\n    var copyFile = function copyFile(file) {\n        return renameFile(file, file.name);\n    };\n\n    // already registered plugins (can't register twice)\n    var registeredPlugins = [];\n\n    // pass utils to plugin\n    var createAppPlugin = function createAppPlugin(plugin) {\n        // already registered\n        if (registeredPlugins.includes(plugin)) {\n            return;\n        }\n\n        // remember this plugin\n        registeredPlugins.push(plugin);\n\n        // setup!\n        var pluginOutline = plugin({\n            addFilter: addFilter,\n            utils: {\n                Type: Type,\n                forin: forin,\n                isString: isString,\n                isFile: isFile,\n                toNaturalFileSize: toNaturalFileSize,\n                replaceInString: replaceInString,\n                getExtensionFromFilename: getExtensionFromFilename,\n                getFilenameWithoutExtension: getFilenameWithoutExtension,\n                guesstimateMimeType: guesstimateMimeType,\n                getFileFromBlob: getFileFromBlob,\n                getFilenameFromURL: getFilenameFromURL,\n                createRoute: createRoute,\n                createWorker: createWorker,\n                createView: createView,\n                createItemAPI: createItemAPI,\n                loadImage: loadImage,\n                copyFile: copyFile,\n                renameFile: renameFile,\n                createBlob: createBlob,\n                applyFilterChain: applyFilterChain,\n                text: text,\n                getNumericAspectRatioFromString: getNumericAspectRatioFromString,\n            },\n\n            views: {\n                fileActionButton: fileActionButton,\n            },\n        });\n\n        // add plugin options to default options\n        extendDefaultOptions(pluginOutline.options);\n    };\n\n    // feature detection used by supported() method\n    var isOperaMini = function isOperaMini() {\n        return Object.prototype.toString.call(window.operamini) === '[object OperaMini]';\n    };\n    var hasPromises = function hasPromises() {\n        return 'Promise' in window;\n    };\n    var hasBlobSlice = function hasBlobSlice() {\n        return 'slice' in Blob.prototype;\n    };\n    var hasCreateObjectURL = function hasCreateObjectURL() {\n        return 'URL' in window && 'createObjectURL' in window.URL;\n    };\n    var hasVisibility = function hasVisibility() {\n        return 'visibilityState' in document;\n    };\n    var hasTiming = function hasTiming() {\n        return 'performance' in window;\n    }; // iOS 8.x\n    var hasCSSSupports = function hasCSSSupports() {\n        return 'supports' in (window.CSS || {});\n    }; // use to detect Safari 9+\n    var isIE11 = function isIE11() {\n        return /MSIE|Trident/.test(window.navigator.userAgent);\n    };\n\n    var supported = (function() {\n        // Runs immediately and then remembers result for subsequent calls\n        var isSupported =\n            // Has to be a browser\n            isBrowser() &&\n            // Can't run on Opera Mini due to lack of everything\n            !isOperaMini() &&\n            // Require these APIs to feature detect a modern browser\n            hasVisibility() &&\n            hasPromises() &&\n            hasBlobSlice() &&\n            hasCreateObjectURL() &&\n            hasTiming() &&\n            // doesn't need CSSSupports but is a good way to detect Safari 9+ (we do want to support IE11 though)\n            (hasCSSSupports() || isIE11());\n\n        return function() {\n            return isSupported;\n        };\n    })();\n\n    /**\n     * Plugin internal state (over all instances)\n     */\n    var state = {\n        // active app instances, used to redraw the apps and to find the later\n        apps: [],\n    };\n\n    // plugin name\n    var name = 'filepond';\n\n    /**\n     * Public Plugin methods\n     */\n    var fn = function fn() {};\n    exports.Status = {};\n    exports.FileStatus = {};\n    exports.FileOrigin = {};\n    exports.OptionTypes = {};\n    exports.create = fn;\n    exports.destroy = fn;\n    exports.parse = fn;\n    exports.find = fn;\n    exports.registerPlugin = fn;\n    exports.getOptions = fn;\n    exports.setOptions = fn;\n\n    // if not supported, no API\n    if (supported()) {\n        // start painter and fire load event\n        createPainter(\n            function() {\n                state.apps.forEach(function(app) {\n                    return app._read();\n                });\n            },\n            function(ts) {\n                state.apps.forEach(function(app) {\n                    return app._write(ts);\n                });\n            }\n        );\n\n        // fire loaded event so we know when FilePond is available\n        var dispatch = function dispatch() {\n            // let others know we have area ready\n            document.dispatchEvent(\n                new CustomEvent('FilePond:loaded', {\n                    detail: {\n                        supported: supported,\n                        create: exports.create,\n                        destroy: exports.destroy,\n                        parse: exports.parse,\n                        find: exports.find,\n                        registerPlugin: exports.registerPlugin,\n                        setOptions: exports.setOptions,\n                    },\n                })\n            );\n\n            // clean up event\n            document.removeEventListener('DOMContentLoaded', dispatch);\n        };\n\n        if (document.readyState !== 'loading') {\n            // move to back of execution queue, FilePond should have been exported by then\n            setTimeout(function() {\n                return dispatch();\n            }, 0);\n        } else {\n            document.addEventListener('DOMContentLoaded', dispatch);\n        }\n\n        // updates the OptionTypes object based on the current options\n        var updateOptionTypes = function updateOptionTypes() {\n            return forin(getOptions(), function(key, value) {\n                exports.OptionTypes[key] = value[1];\n            });\n        };\n\n        exports.Status = Object.assign({}, Status);\n        exports.FileOrigin = Object.assign({}, FileOrigin);\n        exports.FileStatus = Object.assign({}, ItemStatus);\n\n        exports.OptionTypes = {};\n        updateOptionTypes();\n\n        // create method, creates apps and adds them to the app array\n        exports.create = function create() {\n            var app = createApp$1.apply(void 0, arguments);\n            app.on('destroy', exports.destroy);\n            state.apps.push(app);\n            return createAppAPI(app);\n        };\n\n        // destroys apps and removes them from the app array\n        exports.destroy = function destroy(hook) {\n            // returns true if the app was destroyed successfully\n            var indexToRemove = state.apps.findIndex(function(app) {\n                return app.isAttachedTo(hook);\n            });\n            if (indexToRemove >= 0) {\n                // remove from apps\n                var app = state.apps.splice(indexToRemove, 1)[0];\n\n                // restore original dom element\n                app.restoreElement();\n\n                return true;\n            }\n\n            return false;\n        };\n\n        // parses the given context for plugins (does not include the context element itself)\n        exports.parse = function parse(context) {\n            // get all possible hooks\n            var matchedHooks = Array.from(context.querySelectorAll('.' + name));\n\n            // filter out already active hooks\n            var newHooks = matchedHooks.filter(function(newHook) {\n                return !state.apps.find(function(app) {\n                    return app.isAttachedTo(newHook);\n                });\n            });\n\n            // create new instance for each hook\n            return newHooks.map(function(hook) {\n                return exports.create(hook);\n            });\n        };\n\n        // returns an app based on the given element hook\n        exports.find = function find(hook) {\n            var app = state.apps.find(function(app) {\n                return app.isAttachedTo(hook);\n            });\n            if (!app) {\n                return null;\n            }\n            return createAppAPI(app);\n        };\n\n        // adds a plugin extension\n        exports.registerPlugin = function registerPlugin() {\n            for (\n                var _len = arguments.length, plugins = new Array(_len), _key = 0;\n                _key < _len;\n                _key++\n            ) {\n                plugins[_key] = arguments[_key];\n            }\n\n            // register plugins\n            plugins.forEach(createAppPlugin);\n\n            // update OptionTypes, each plugin might have extended the default options\n            updateOptionTypes();\n        };\n\n        exports.getOptions = function getOptions$1() {\n            var opts = {};\n            forin(getOptions(), function(key, value) {\n                opts[key] = value[0];\n            });\n            return opts;\n        };\n\n        exports.setOptions = function setOptions$1(opts) {\n            if (isObject(opts)) {\n                // update existing plugins\n                state.apps.forEach(function(app) {\n                    app.setOptions(opts);\n                });\n\n                // override defaults\n                setOptions(opts);\n            }\n\n            // return new options\n            return exports.getOptions();\n        };\n    }\n\n    exports.supported = supported;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n});\n", "import * as FilePond from 'filepond';\nimport { DirectUpload } from '@rails/activestorage';\n\nFilePond.setOptions({\n  server: {\n    process: handleFileUploadOptimized,\n    revert: handleFileRemoval,\n  },\n  instantUpload: true,\n  allowMultiple: true,\n  maxFiles: 10,\n  chunkUploads: true,\n  chunkSize: 1024 * 1024,\n  parallelUploads: 3,\n\n  allowDrop: true,\n  allowBrowse: true,\n  allowPaste: false,\n\n  beforeAddFile: (item) => {\n    const allowedExtensions = [\n      '.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.webp', '.ico', '.tiff', '.tif',\n      '.pdf', '.doc', '.docx', '.xls', '.xlsx', '.csv', '.xml', '.zip'\n    ];\n\n    const fileName = item.file.name.toLowerCase();\n    const isAllowedExtension = allowedExtensions.some(ext => fileName.endsWith(ext));\n\n    if (isAllowedExtension) return true;\n\n    setTimeout(() => showFilePondError(item.file.name), 10);\n    return false;\n  },\n\n  fileValidateTypeDetectType: (source, type) =>\n    new Promise((resolve, reject) => {\n      resolve(type);\n    }),\n\n  onaddfile: (error, file) => {\n    if (!error) {\n      requestAnimationFrame(() => {\n        dispatchCustomEvent('filepond:fileAdded', { file });\n        setTimeout(() => {\n          const event = new CustomEvent('filepond:fileReady', { detail: { file } });\n          document.dispatchEvent(event);\n        }, 300);\n      });\n    }\n  },\n  onremovefile: (error, file) => {\n    if (!error) {\n      requestAnimationFrame(() => {\n        dispatchCustomEvent('filepond:fileRemoved', { file });\n      });\n    }\n  }\n});\n\nfunction handleFileUploadOptimized(fieldName, file, metadata, load, error, progress, abort) {\n  if (file.size > 100 * 1024 * 1024) {\n    error('File too large');\n    return;\n  }\n\n  const uploadId = `${file.name}_${file.size}_${Date.now()}`;\n  activeUploads.add(uploadId);\n  uploadStartTimes.set(uploadId, Date.now());\n\n  const upload = new DirectUpload(file, '/rails/active_storage/direct_uploads', {\n    directUploadWillStoreFileWithXHR: (xhr) => {\n      const controller = new AbortController();\n\n      xhr.upload.addEventListener('progress', event => {\n        if (event.lengthComputable) {\n          progress(event.lengthComputable, event.loaded, event.total);\n        }\n      }, { signal: controller.signal });\n\n      return { abort: () => controller.abort() };\n    },\n  });\n\n  upload.create((err, blob) => {\n    if (err) {\n      activeUploads.delete(uploadId);\n      uploadStartTimes.delete(uploadId);\n      error(err);\n      return;\n    }\n\n    requestAnimationFrame(() => {\n      const input = document.querySelector(`input[name=\"${fieldName}\"]`);\n      if (!input) {\n        activeUploads.delete(uploadId);\n        uploadStartTimes.delete(uploadId);\n        error('Input not found');\n        return;\n      }\n\n      const form = input.closest('form');\n      if (!form) {\n        activeUploads.delete(uploadId);\n        uploadStartTimes.delete(uploadId);\n        error('Form not found');\n        return;\n      }\n\n      createFileHiddenField(form, fieldName, blob.signed_id);\n      if (!form._filepondFormSubmitSetup) {\n        setupFormSubmitListener(form);\n      }\n      startContinuousMonitoring(form);\n      load(blob.signed_id);\n\n      activeUploads.delete(uploadId);\n      uploadStartTimes.delete(uploadId);\n\n      dispatchCustomEvent('filepond:uploadComplete', {\n        file,\n        blob,\n        fieldName,\n        fileId: blob.signed_id,\n        isLastUpload: activeUploads.size === 0\n      });\n\n      if ('requestIdleCallback' in window) {\n        requestIdleCallback(() => processFileAdded(file, blob, fieldName, form));\n      } else {\n        setTimeout(() => processFileAdded(file, blob, fieldName, form), 1000);\n      }\n\n      if (activeUploads.size === 0) {\n        checkOverallUploadStatus(form);\n      } else {\n        debouncedValidation(form, 100);\n      }\n    });\n  });\n\n  return { abort: () => abort() };\n}\n\nfunction handleFileRemoval(uniqueFileId, load, error) {\n  const forms = document.querySelectorAll('form');\n\n  forms.forEach((form) => {\n    const hiddenField = form.querySelector(`input[type=\"hidden\"][value=\"${uniqueFileId}\"]`);\n    if (hiddenField) {\n      removeFileHiddenFields(form, uniqueFileId);\n    }\n  });\n\n  dispatchCustomEvent('filepond:fileRemoved', { uniqueFileId });\n\n  forms.forEach(form => {\n    debouncedValidation(form, 30);\n  });\n\n  load();\n}\n\nfunction createFileHiddenField(form, fieldName, value) {\n  const existingFields = form.querySelectorAll(`input[type=\"hidden\"][name=\"${fieldName}\"][value=\"${value}\"]`);\n  if (existingFields.length > 0) {\n    return;\n  }\n\n  const hiddenField = document.createElement('input');\n  hiddenField.type = 'hidden';\n  hiddenField.name = fieldName;\n  hiddenField.value = value;\n  hiddenField.setAttribute('data-file-id', value);\n  form.appendChild(hiddenField);\n}\n\nfunction setupFormSubmitListener(form) {\n  if (form._filepondFormSubmitSetup) {\n    return;\n  }\n\n  if (form.filepondSubmitListener) {\n    return;\n  }\n\n  form.filepondSubmitListener = true;\n  form.addEventListener('submit', handleFormSubmit);\n}\n\nfunction processFileAdded(file, blob, fieldName, form) {\n  dispatchCustomEvent('filepond:fileAdded', { file, blob, fieldName });\n\n  enableSubmitButtons(form);\n\n  hideLoadingElements(form);\n}\n\nfunction enableSubmitButtons(form) {\n  const submitButtons = form.querySelectorAll(\n    'input[type=\"submit\"], button[type=\"submit\"], .submit-button, [data-submit]'\n  );\n\n  submitButtons.forEach(button => {\n    button.classList.remove('loading', 'disabled', 'opacity-50', 'cursor-not-allowed');\n    button.disabled = false;\n    button.removeAttribute('disabled');\n    button.removeAttribute('aria-disabled');\n  });\n}\n\nfunction hideLoadingElements(form) {\n  const loadingElements = form.querySelectorAll('.loading, [data-loading], .spinner, .animate-spin');\n\n  loadingElements.forEach(element => {\n    element.style.display = 'none';\n    element.classList.add('hidden');\n  });\n}\n\nfunction removeFileHiddenFields(form, uniqueFileId) {\n  const hiddenField = form.querySelector(`input[type=\"hidden\"][value=\"${uniqueFileId}\"]`);\n  if (hiddenField) {\n    hiddenField.remove();\n  }\n\n  const fileTypeHiddenField = form.querySelector(`input[type=\"hidden\"][id=\"file-type-${uniqueFileId}\"]`);\n  if (fileTypeHiddenField) {\n    fileTypeHiddenField.remove();\n  }\n\n  const fileRelatedFields = form.querySelectorAll(`input[type=\"hidden\"][data-file-id=\"${uniqueFileId}\"]`);\n  fileRelatedFields.forEach(field => {\n    field.remove();\n  });\n\n  const attachmentFields = getFileAttachmentFields(form);\n  attachmentFields.forEach(field => {\n    if (field.value === uniqueFileId) {\n      field.remove();\n    }\n  });\n\n  const fileTypeIdFields = form.querySelectorAll('input[type=\"hidden\"][name*=\"file_type_ids\"]');\n  fileTypeIdFields.forEach(field => {\n    if (field.getAttribute('data-file-id') === uniqueFileId) {\n      field.remove();\n    }\n  });\n}\n\nfunction initializeFilePond() {\n  const inputs = document.querySelectorAll('input.filepond');\n  inputs.forEach(input => {\n    if (input.filepond) return;\n\n    try {\n      const pondOptions = {};\n\n      if (input.accept && input.accept.trim() !== '') {\n        pondOptions.acceptedFileTypes = input.accept.split(',').map(t => t.trim());\n      }\n\n      const pond = FilePond.create(input, pondOptions);\n      input.filepond = pond;\n\n      setTimeout(() => {\n        const filePondBrowser = pond.element.querySelector('.filepond--browser');\n        if (filePondBrowser && input.accept) {\n          filePondBrowser.setAttribute('accept', input.accept);\n        }\n      }, 100);\n\n      setupPondEventListeners(pond);\n\n      if (window.pendingFilesForUpload && window.pendingFilesForUpload.length > 0) {\n        window.pendingFilesForUpload.forEach(file => {\n          try {\n            pond.addFile(file);\n          } catch (error) {\n          }\n        });\n\n        window.pendingFilesForUpload = [];\n      }\n\n    } catch (error) {\n    }\n  });\n}\n\nfunction setupPondEventListeners(pond) {\n  pond.on('addfile', (error, file) => {\n    if (!error) {\n      requestAnimationFrame(() => {\n        dispatchCustomEvent('filepond:fileAdded', { file, pond });\n      });\n    }\n  });\n\n  pond.on('removefile', (error, file) => {\n    if (!error) {\n      requestAnimationFrame(() => {\n        dispatchCustomEvent('filepond:fileRemoved', { file, pond });\n\n        const forms = document.querySelectorAll('form');\n        forms.forEach(form => {\n          debouncedValidation(form, 50);\n        });\n      });\n    }\n  });\n}\n\nfunction createFileTypeHiddenInputs(form) {\n  if (!form) {\n    return;\n  }\n\n  const selects = form.querySelectorAll('.file-type-select');\n\n  if (selects.length === 0) {\n    return;\n  }\n\n  clearOldFileTypeHiddenInputs(form);\n\n  const processedFileIds = new Set();\n  const fragment = document.createDocumentFragment();\n\n  selects.forEach((select) => {\n    const { fileId, filename, value } = extractSelectData(select);\n\n    if (!isValidSelectData(fileId, filename, value)) {\n      return;\n    }\n\n    if (processedFileIds.has(fileId)) {\n      return;\n    }\n\n    processedFileIds.add(fileId);\n    const hiddenInput = createHiddenInput(form, fileId, filename, value);\n    fragment.appendChild(hiddenInput);\n  });\n\n  form.appendChild(fragment);\n}\n\nfunction extractSelectData(select) {\n  return {\n    fileId: select.dataset.fileId,\n    filename: select.dataset.filename,\n    value: select.value\n  };\n}\n\nfunction isValidSelectData(fileId, filename, value) {\n  if (!fileId || !filename) {\n    return false;\n  }\n\n  if (!value || value.trim() === '') {\n    return false;\n  }\n\n  return true;\n}\n\n\nfunction createHiddenInput(form, fileId, filename, value) {\n  const hiddenInput = document.createElement('input');\n  hiddenInput.type = 'hidden';\n  hiddenInput.id = `file-type-${fileId}`;\n  hiddenInput.name = `order_file[file_type_ids][]`;\n  hiddenInput.value = value;\n  hiddenInput.setAttribute('data-filename', filename);\n  hiddenInput.setAttribute('data-file-id', fileId);\n\n  return hiddenInput;\n}\n\nfunction clearOrphanedFields(form) {\n  const activeFileIds = new Set();\n  const filePondInputs = form.querySelectorAll('input.filepond');\n\n  filePondInputs.forEach((input) => {\n    if (input.filepond) {\n      const files = input.filepond.getFiles();\n      files.forEach((file) => {\n        if (file.serverId) {\n          activeFileIds.add(file.serverId);\n        }\n      });\n    }\n  });\n\n  const attachmentFields = getFileAttachmentFields(form);\n  attachmentFields.forEach((field) => {\n    if (field.value && !activeFileIds.has(field.value)) {\n      field.remove();\n    }\n  });\n\n  const fileTypeFields = form.querySelectorAll('input[type=\"hidden\"][id^=\"file-type-\"]');\n  fileTypeFields.forEach((field) => {\n    const fileId = field.id.replace('file-type-', '');\n    if (!activeFileIds.has(fileId)) {\n      field.remove();\n    }\n  });\n}\n\nfunction clearOldFileTypeHiddenInputs(form) {\n  const fieldsToRemove = [\n    ...form.querySelectorAll('input[type=\"hidden\"][id^=\"file-type-\"]'),\n    ...form.querySelectorAll('input[type=\"hidden\"][name*=\"file_type_ids\"]')\n  ];\n\n  fieldsToRemove.forEach(input => input.remove());\n\n  const allAttachmentFields = form.querySelectorAll('input[type=\"hidden\"][name*=\"attachments\"]');\n  const orderFileAttachmentFields = form.querySelectorAll('input[type=\"hidden\"][name=\"order_file[attachments][]\"]');\n\n  if (allAttachmentFields.length > orderFileAttachmentFields.length) {\n    form.querySelectorAll('input[type=\"hidden\"][name=\"attachments[]\"]').forEach(input => input.remove());\n  }\n}\n\nfunction updateFileTypeSelection(selectElement) {\n  const { fileId, filename, value } = extractSelectData(selectElement);\n\n  if (!isValidSelectData(fileId, filename, value)) return;\n\n  let hiddenInput = document.getElementById(`file-type-${fileId}`);\n  if (!hiddenInput) {\n    const form = selectElement.closest('form');\n    if (!form) return;\n\n    hiddenInput = createHiddenInput(form, fileId, filename, value);\n    form.appendChild(hiddenInput);\n  } else {\n    hiddenInput.value = value;\n  }\n\n  const form = selectElement.closest('form');\n  if (form) {\n    startContinuousMonitoring(form);\n    debouncedValidation(form, 20);\n  }\n}\n\n\n\nfunction dispatchCustomEvent(eventName, detail) {\n  const event = new CustomEvent(eventName, { detail });\n  document.dispatchEvent(event);\n}\n\nlet validationTimeouts = new Map();\n\nlet activeUploads = new Set();\nlet uploadStartTimes = new Map();\n\nlet monitoringIntervals = new Map();\nlet formsBeingMonitored = new Set();\n\nfunction showFilePondError(filename) {\n  const container = document.querySelector('.filepond-container');\n  if (!container) return;\n\n  container.querySelectorAll('.filepond-error-message').forEach(m => m.remove());\n\n  const message = document.createElement('div');\n  message.className = 'filepond-error-message';\n  message.innerHTML = `\n    <div class=\"filepond-error-message__icon\"></div>\n    <div class=\"filepond-error-message__content\">\n      <p class=\"filepond-error-message__title\">File type not allowed</p>\n      <p class=\"filepond-error-message__filename\"><strong>\"${filename}\"</strong> cannot be uploaded.</p>\n    </div>\n    <button type=\"button\" class=\"filepond-error-message__close\">\n      <span class=\"filepond-error-message__close-icon\"></span>\n    </button>\n  `;\n\n  message.querySelector('.filepond-error-message__close').addEventListener('click', () => message.remove());\n\n  container.appendChild(message);\n\n  setTimeout(() => {\n    message.classList.add('filepond-error-message--fade-out');\n    setTimeout(() => message.remove(), 500);\n  }, 8000);\n}\n\nfunction debouncedValidation(form, delay = 50) {\n  const formId = form.id || form.outerHTML.substring(0, 100);\n\n  if (validationTimeouts.has(formId)) {\n    clearTimeout(validationTimeouts.get(formId));\n  }\n\n  const timeoutId = setTimeout(() => {\n    checkOverallUploadStatus(form);\n    validationTimeouts.delete(formId);\n  }, delay);\n\n  validationTimeouts.set(formId, timeoutId);\n}\n\nfunction startContinuousMonitoring(form) {\n  const formId = form.id || form.outerHTML.substring(0, 100);\n\n  if (formsBeingMonitored.has(formId)) {\n    return;\n  }\n\n  formsBeingMonitored.add(formId);\n\n  const intervalId = setInterval(() => {\n    if (!document.contains(form)) {\n      stopContinuousMonitoring(form);\n      return;\n    }\n\n    if ('requestIdleCallback' in window) {\n      requestIdleCallback(() => checkOverallUploadStatus(form), { timeout: 500 });\n    } else {\n      checkOverallUploadStatus(form);\n    }\n  }, 300);\n\n  monitoringIntervals.set(formId, intervalId);\n}\n\nfunction stopContinuousMonitoring(form) {\n  const formId = form.id || form.outerHTML.substring(0, 100);\n\n  if (monitoringIntervals.has(formId)) {\n    clearInterval(monitoringIntervals.get(formId));\n    monitoringIntervals.delete(formId);\n  }\n\n  formsBeingMonitored.delete(formId);\n}\n\nfunction initializeFormMonitoring() {\n  const formsWithFilePond = document.querySelectorAll('form');\n\n  formsWithFilePond.forEach(form => {\n    const hasFilePond = form.querySelector('.filepond, input.filepond, .file-type-select');\n    if (hasFilePond) {\n      checkOverallUploadStatus(form);\n      startContinuousMonitoring(form);\n    }\n  });\n}\n\nfunction getFileAttachmentFields(form) {\n  return form.querySelectorAll('input[type=\"hidden\"][name*=\"attachments\"]');\n}\n\nfunction checkOverallUploadStatus(form) {\n  const fileTypeSelects = form.querySelectorAll('.file-type-select');\n  const attachmentFields = getFileAttachmentFields(form);\n\n  const uniqueAttachmentValues = new Set();\n  const uniqueAttachmentFields = [];\n\n  for (const field of attachmentFields) {\n    if (field.value && field.value.trim() !== '' && !uniqueAttachmentValues.has(field.value)) {\n      uniqueAttachmentValues.add(field.value);\n      uniqueAttachmentFields.push(field);\n    }\n  }\n\n  const totalFiles = uniqueAttachmentFields.length;\n  let totalFileTypesSelected = 0;\n\n  for (const select of fileTypeSelects) {\n    if (select.value && select.value.trim() !== '') {\n      totalFileTypesSelected++;\n    }\n  }\n\n  const allFilesHaveTypes = totalFiles > 0 && totalFiles === totalFileTypesSelected;\n\n  const hasActiveUploads = activeUploads.size > 0;\n\n  let hasIncompleteUploads = hasActiveUploads;\n  if (!hasActiveUploads) {\n    const filePondItems = form.querySelectorAll('.filepond--item');\n    for (const item of filePondItems) {\n      if (item.classList.contains('filepond--item-processing') ||\n          item.classList.contains('filepond--item-loading')) {\n        hasIncompleteUploads = true;\n        break;\n      }\n    }\n  }\n\n  const filepondContainer = form.querySelector('.filepond-container');\n  const allowEmptyFiles = filepondContainer?.dataset?.allowEmptyFiles === 'true';\n\n  const isReadyToSubmit = allowEmptyFiles\n    ? (totalFiles === 0 || (allFilesHaveTypes && !hasIncompleteUploads))\n    : (allFilesHaveTypes && !hasIncompleteUploads && totalFiles > 0);\n\n  const statusData = {\n    totalFiles,\n    totalFileTypesSelected,\n    allFilesHaveTypes,\n    hasIncompleteUploads,\n    isReadyToSubmit,\n    activeUploadsCount: activeUploads.size,\n    allowEmptyFiles\n  };\n\n  updateSubmitButtonState(form, statusData.isReadyToSubmit);\n\n  dispatchCustomEvent('filepond:statusUpdate', statusData);\n\n  return statusData;\n}\n\nfunction updateSubmitButtonState(form, isReadyToSubmit) {\n  let submitButton = form.querySelector('input[type=\"submit\"]');\n\n  if (!submitButton) {\n    submitButton = form.querySelector('button[type=\"submit\"]');\n  }\n\n  if (!submitButton) {\n    submitButton = form.querySelector('input[value*=\"Save\"]');\n  }\n\n  if (!submitButton) {\n    submitButton = form.querySelector('button');\n  }\n\n  if (!submitButton) {\n    const formParent = form.closest('div');\n    if (formParent) {\n      submitButton = formParent.querySelector('input[type=\"submit\"], button[type=\"submit\"], input[value*=\"Save\"], button');\n    }\n  }\n\n  if (!submitButton) {\n    return;\n  }\n\n  const shouldDisable = !isReadyToSubmit;\n\n  submitButton.disabled = shouldDisable;\n\n  if (shouldDisable) {\n    submitButton.classList.add('opacity-50', 'cursor-not-allowed');\n    submitButton.classList.remove('hover:bg-blue-700');\n  } else {\n    submitButton.classList.remove('opacity-50', 'cursor-not-allowed');\n    submitButton.classList.add('hover:bg-blue-700');\n  }\n\n  submitButton.title = shouldDisable ?\n    'Please select file types for all uploaded files' :\n    'Save files';\n}\n\nfunction handleFormSubmit(event) {\n  const form = event.target;\n\n  if (form._filepondFormSubmitSetup) {\n    return;\n  }\n\n  const hasFilePond = form.querySelector('input.filepond');\n\n  if (hasFilePond) {\n    clearOrphanedFields(form);\n    clearOldFileTypeHiddenInputs(form);\n    createFileTypeHiddenInputs(form);\n  }\n}\n\nfunction setupMutationObserver() {\n  const observer = new MutationObserver((mutations) => {\n    mutations.forEach((mutation) => {\n      if (mutation.type === 'childList') {\n        const hasFilePondInputs = Array.from(mutation.addedNodes).some(node => {\n          if (node.nodeType === Node.ELEMENT_NODE) {\n            return node.querySelector && node.querySelector('input.filepond');\n          }\n          return false;\n        });\n\n        if (hasFilePondInputs) {\n          setTimeout(initializeFilePond, 100);\n        }\n      }\n    });\n  });\n\n  observer.observe(document.body, {\n    childList: true,\n    subtree: true\n  });\n}\n\nfunction initializeWhenReady() {\n  if (document.readyState !== 'loading') {\n    initializeFilePond();\n  }\n  document.addEventListener('DOMContentLoaded', initializeFilePond);\n  document.addEventListener('turbo:load', initializeFilePond);\n  document.addEventListener('turbo:render', initializeFilePond);\n  document.addEventListener('turbo:frame-load', initializeFilePond);\n  document.addEventListener('turbo:frame-render', initializeFilePond);\n  window.addEventListener('load', initializeFilePond);\n  setupMutationObserver();\n}\n\ninitializeWhenReady();\n\nwindow.createFileTypeHiddenInputs = createFileTypeHiddenInputs;\nwindow.updateFileTypeSelection = updateFileTypeSelection;\nwindow.checkOverallUploadStatus = checkOverallUploadStatus;\n\nclass FilePondWithButtons {\n  constructor(containerId) {\n    this.containerId = containerId;\n    this.container = null;\n    this.filepondInstance = null;\n    this.initialized = false;\n  }\n\n  init() {\n    this.waitForContainer();\n  }\n\n  waitForContainer() {\n    this.container = document.querySelector(`.filepond-container[data-component-id=\"${this.containerId}\"]`);\n\n    if (!this.container) {\n      setTimeout(() => this.waitForContainer(), 100);\n      return;\n    }\n    this.waitForFilePond();\n  }\n\n  waitForFilePond() {\n    const filepondRoot = this.container.querySelector('.filepond--root');\n    if (!filepondRoot) {\n      setTimeout(() => this.waitForFilePond(), 200);\n      return;\n    }\n\n    const fileItems = filepondRoot.querySelectorAll('.filepond--item');\n\n    if (fileItems.length > 0) {\n      this.setupEvents();\n    } else {\n      this.waitForFiles();\n    }\n  }\n\n  waitForFiles() {\n    const fileItems = this.container.querySelectorAll('.filepond--item');\n\n    if (fileItems.length === 0) {\n      setTimeout(() => this.waitForFiles(), 200);\n      return;\n    }\n    this.setupEvents();\n  }\n\n  setupEvents() {\n    if (this.initialized) {\n      return;\n    }\n    this.initialized = true;\n\n    this.addButtonsForExistingFiles();\n\n    document.addEventListener('filepond:fileReady', (event) => {\n      const { file } = event.detail;\n      setTimeout(() => this.addButtonsForFile(file), 500);\n    });\n\n    this.observeFileItems();\n  }\n\n  addButtonsForExistingFiles() {\n    const fileItems = this.container.querySelectorAll('.filepond--item');\n\n    fileItems.forEach((item, index) => {\n      setTimeout(() => {\n        this.addButtonsForItem(item, index);\n      }, index * 100);\n    });\n  }\n\n  addButtonsForFile(file) {\n    const fileItem = this.findFileItem(file);\n    if (fileItem && !fileItem.querySelector('.filepond-custom-buttons')) {\n      this.addButtonsForItem(fileItem, null, file);\n    }\n  }\n\n  addButtonsForItem(fileItem, index, file = null) {\n    if (fileItem.querySelector('.filepond-custom-buttons')) {\n      return;\n    }\n\n    if (!file) {\n      const fileName = fileItem.querySelector('.filepond--file-info-main')?.textContent;\n      if (fileName) {\n        file = { filename: fileName, id: index };\n      }\n    }\n\n    if (file) {\n      this.createButtons(fileItem, file);\n    }\n  }\n\n  findFileItem(file) {\n    const strategies = [\n      () => document.querySelectorAll('[data-filepond-item-state]'),\n      () => document.querySelectorAll('.filepond--item'),\n      () => Array.from(document.querySelectorAll('*')).filter(el =>\n        el.textContent?.includes(file.filename) &&\n        (el.closest('.filepond--item') || el.classList.contains('filepond--item'))\n      )\n    ];\n\n    for (const strategy of strategies) {\n      const items = strategy();\n      for (const item of items) {\n        const fileName = item.querySelector('.filepond--file-info-main');\n        if (fileName?.textContent === file.filename) {\n          return item;\n        }\n      }\n    }\n    return null;\n  }\n\n  observeFileItems() {\n    const observer = new MutationObserver((mutations) => {\n      mutations.forEach((mutation) => {\n        mutation.addedNodes.forEach((node) => {\n          if (node.nodeType === Node.ELEMENT_NODE &&\n              node.classList?.contains('filepond--item')) {\n            setTimeout(() => this.addButtonsForItem(node), 300);\n          }\n        });\n      });\n    });\n\n    const filepondRoot = this.container.querySelector('.filepond--root');\n    if (filepondRoot) {\n      observer.observe(filepondRoot, { childList: true, subtree: true });\n    }\n  }\n\n  createButtons(fileItem, file) {\n    const availableTypes = this.getAvailableFileTypes();\n    const buttonContainer = this.createButtonHTML(file, availableTypes);\n\n    const fileInfo = fileItem.querySelector('.filepond--file-info');\n    if (fileInfo?.parentNode) {\n      fileInfo.parentNode.insertBefore(buttonContainer, fileInfo.nextSibling);\n    } else {\n      fileItem.appendChild(buttonContainer);\n    }\n  }\n\n  getAvailableFileTypes() {\n    try {\n      const types = JSON.parse(this.container.dataset.availableFileTypes || '[]');\n      return types.length > 0 ? types : [];\n    } catch (e) {\n      return [];\n    }\n  }\n\n  createButtonHTML(file, availableTypes) {\n    const buttonText = this.container.dataset.buttonText1 || 'Pick document type';\n    const fileId = file.id || file.serverId || Date.now();\n    const filename = file.filename || file.name || 'unknown';\n    const extension = filename.split('.').pop()?.toLowerCase() || 'file';\n\n    const selectOptions = availableTypes\n      .map(type => `<option value=\"${type.id}\">${type.name}</option>`)\n      .join('');\n\n    const container = document.createElement('div');\n    container.className = 'filepond-custom-buttons';\n    container.innerHTML = `\n      <div class=\"flex space-x-2 mt-8\">\n        <div class=\"flex space-x-2 mt-4\">\n          <select class=\"file-type-select w-3/5 bg-white border border-gray-300 rounded px-2 py-1\"\n                  data-file-id=\"${fileId}\" data-filename=\"${filename}\"\n                  onchange=\"window.updateFileTypeSelection(this)\">\n            <option value=\"\">${buttonText}</option>\n            ${selectOptions}\n          </select>\n          <div class=\"file-extension-badge w-1/4 bg-gray-200 text-gray-700 px-2 py-1 rounded text-xs font-medium\">\n            ${extension}\n          </div>\n        </div>\n      </div>\n    `;\n\n      return container;\n  }\n}\n\nfunction initializeFilePondComponents() {\n  const containers = document.querySelectorAll('.filepond-container');\n\n  if (containers.length === 0) {\n    setTimeout(initializeFilePondComponents, 500);\n    return;\n  }\n\n  containers.forEach((container, index) => {\n    const componentId = container.dataset.componentId;\n    if (componentId && !container.dataset.initialized) {\n      container.dataset.initialized = 'true';\n      new FilePondWithButtons(componentId).init();\n    }\n  });\n\n  document.querySelectorAll('form').forEach(form => {\n    if (form.querySelector('.filepond-container') && !form.dataset.filepondSubmitListener) {\n      form.dataset.filepondSubmitListener = 'true';\n      setupFormSubmit(form);\n    }\n  });\n}\n\nfunction setupFormSubmit(form) {\n  if (form._filepondFormSubmitSetup) {\n    return;\n  }\n  form._filepondFormSubmitSetup = true;\n\n  let hasSubmitted = false;\n\n  form.addEventListener('submit', function(e) {\n    if (hasSubmitted) {\n      e.preventDefault();\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n      return false;\n    }\n\n    e.preventDefault();\n    e.stopPropagation();\n\n    hasSubmitted = true;\n\n    const submitButton = form.querySelector('input[type=\"submit\"], button[type=\"submit\"]');\n    if (submitButton) {\n      submitButton.disabled = true;\n      submitButton.classList.add('opacity-50', 'cursor-not-allowed');\n    }\n\n    window.createFileTypeHiddenInputs(form);\n\n    setTimeout(() => {\n      HTMLFormElement.prototype.submit.call(form);\n    }, 100);\n  });\n}\n\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  setTimeout(initializeFilePondComponents, 500);\n  setTimeout(initializeFormMonitoring, 600);\n});\n\nif (document.readyState !== 'loading') {\n  setTimeout(initializeFilePondComponents, 500);\n  setTimeout(initializeFormMonitoring, 600);\n}\n\nnew MutationObserver((mutations) => {\n  const hasNewFilePond = mutations.some(mutation =>\n    Array.from(mutation.addedNodes).some(node => {\n      if (node.nodeType === Node.ELEMENT_NODE) {\n        return node.classList?.contains('filepond-container') ||\n               node.querySelector?.('.filepond-container');\n      }\n      return false;\n    })\n  );\n\n  if (hasNewFilePond) {\n    setTimeout(() => {\n      document.querySelectorAll('.filepond-container').forEach(container => {\n        delete container.dataset.initialized;\n      });\n      initializeFilePondComponents();\n    }, 200);\n  }\n}).observe(document.body, { childList: true, subtree: true });\n\nfunction controlDropZoneVisibility() {\n  const containers = document.querySelectorAll('.filepond-container');\n\n  containers.forEach(container => {\n    const filepondRoot = container.querySelector('.filepond--root');\n    const dropLabel = container.querySelector('.filepond--drop-label');\n    const items = container.querySelectorAll('.filepond--item');\n\n    if (!filepondRoot || !dropLabel) return;\n\n    const hasFiles = items.length > 0;\n\n    if (hasFiles) {\n      dropLabel.style.display = 'none';\n      dropLabel.style.opacity = '0';\n      dropLabel.style.transition = 'opacity 0.1s ease-out';\n    } else {\n      dropLabel.style.display = 'flex';\n      dropLabel.style.opacity = '1';\n      dropLabel.style.transition = 'opacity 0.1s ease-in';\n    }\n  });\n}\n\nfunction initializeFilePondWithTurbo() {\n  initializeFilePond();\n\n  controlDropZoneVisibility();\n\n  setupFilePondObserver();\n\n  setTimeout(() => {\n    initializeFilePondComponents();\n  }, 300);\n}\n\nfunction setupFilePondObserver() {\n  const observer = new MutationObserver((mutations) => {\n    let shouldUpdate = false;\n\n    mutations.forEach((mutation) => {\n      if (mutation.type === 'childList') {\n        mutation.addedNodes.forEach((node) => {\n          if (node.classList?.contains('filepond--item')) {\n            shouldUpdate = true;\n          }\n        });\n\n        mutation.removedNodes.forEach((node) => {\n          if (node.classList?.contains('filepond--item')) {\n            shouldUpdate = true;\n\n            const forms = document.querySelectorAll('form');\n            forms.forEach(form => {\n              debouncedValidation(form, 40);\n            });\n          }\n        });\n      }\n    });\n\n    if (shouldUpdate) {\n      requestAnimationFrame(controlDropZoneVisibility);\n    }\n  });\n\n  const containers = document.querySelectorAll('.filepond-container');\n  containers.forEach(container => {\n    observer.observe(container, {\n      childList: true,\n      subtree: true\n    });\n  });\n}\n\nfunction handleTurboEvents() {\n  initializeFilePond();\n  controlDropZoneVisibility();\n  setupFilePondObserver();\n  setTimeout(initializeFilePondComponents, 50);\n  setTimeout(initializeFormMonitoring, 100);\n}\n\nlet turboEventTimeout;\nfunction debouncedTurboHandler() {\n  clearTimeout(turboEventTimeout);\n  turboEventTimeout = setTimeout(handleTurboEvents, 50);\n}\n\n['turbo:load', 'turbo:frame-load', 'turbo:frame-render'].forEach(event => {\n  document.addEventListener(event, debouncedTurboHandler);\n});\n\ndocument.addEventListener('click', (event) => {\n  const target = event.target;\n\n  if (target.matches('.filepond--file-action-button[data-align=\"right\"], .filepond--action-remove-item-alt')) {\n    const forms = document.querySelectorAll('form');\n    forms.forEach(form => debouncedValidation(form, 30));\n    return;\n  }\n\n  if (target.matches('[data-dismiss=\"modal\"], .close, .modal-close, [aria-label=\"Close\"], .btn-close, .modal-close-btn, [data-dismiss=\"popout\"], .popout-close, .popout-close-btn')) {\n    setTimeout(() => {\n      document.querySelectorAll('.filepond-container').forEach(container => {\n        delete container.dataset.initialized;\n      });\n    }, 100);\n  }\n}, { passive: true });\n\ndocument.addEventListener('keydown', (event) => {\n  if (event.key === 'Escape') {\n    requestAnimationFrame(() => {\n      document.querySelectorAll('.filepond-container').forEach(container => {\n        delete container.dataset.initialized;\n      });\n    });\n  }\n}, { passive: true });\n\nconst modalObserver = new MutationObserver((mutations) => {\n  mutations.forEach((mutation) => {\n    if (mutation.type === 'attributes' &&\n        (mutation.attributeName === 'class' || mutation.attributeName === 'style')) {\n      const target = mutation.target;\n      if (target.classList?.contains('modal') || target.classList?.contains('popup')) {\n        const isVisible = !target.classList.contains('hidden') &&\n                         target.style.display !== 'none' &&\n                         target.style.visibility !== 'hidden';\n\n        if (isVisible) {\n          setTimeout(() => {\n            document.querySelectorAll('.filepond-container').forEach(container => {\n              delete container.dataset.initialized;\n            });\n            initializeFilePondComponents();\n          }, 200);\n        } else {\n          setTimeout(() => {\n            document.querySelectorAll('.filepond-container').forEach(container => {\n              delete container.dataset.initialized;\n            });\n          }, 100);\n        }\n      }\n    }\n  });\n});\n\nmodalObserver.observe(document.body, {\n  attributes: true,\n  attributeFilter: ['class', 'style'],\n  subtree: true\n});\n\nwindow.addMoreFiles = function() {\n  const filePondBrowser = document.querySelector('.filepond--browser');\n\n  if (filePondBrowser) {\n    filePondBrowser.click();\n  } else {\n    const fileInputs = document.querySelectorAll('input[type=\"file\"]');\n\n    const visibleFileInput = Array.from(fileInputs).find(input => !input.classList.contains('hidden'));\n\n    if (visibleFileInput) {\n      visibleFileInput.click();\n    }\n  }\n};\n", ";(function () {\n  let storedFile = null\n  let storedFilename = null\n\n  const truncate = (name) =>\n    name.length <= 40 ? name : name.slice(0, 40) + '...' + name.slice(name.length - 10, name.length)\n\n  window.csvImportApp = function (importIgnoringInvalidData) {\n    return {\n      importIgnoringInvalidData,\n      onFileChange(e) {\n        const file = e.target.files[0]\n        if (!file) return\n        storedFile = file\n        storedFilename = file.name\n        this.$refs.filesShow.innerHTML = truncate(file.name)\n      },\n    }\n  }\n\n  // Called from x-init on the form element\n  window.csvImportInit = function ($el, $refs) {\n    if (storedFilename) {\n      $refs.filesShow.innerHTML = truncate(storedFilename)\n    }\n\n    $el.addEventListener('turbo:submit-start', (e) => {\n      const fileInput = $el.querySelector('input[type=\"file\"]')\n      if (storedFile && fileInput && !fileInput.files.length) {\n        e.detail.formSubmission.fetchRequest.body.append('import[file]', storedFile, storedFilename)\n      }\n    })\n  }\n\n  window.csvImportClearStore = function () {\n    storedFile = null\n    storedFilename = null\n  }\n})()\n", "(function () {\n  window.pendingFilesForUpload = window.pendingFilesForUpload || [];\n\n  const newFilesApp = function () {\n    return {\n      acceptedFileTypes: [\n        'image/*',\n        'application/pdf',\n        'application/msword',\n        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n        'application/vnd.ms-excel',\n        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n        'text/csv',\n        'application/csv',\n        'text/xml',\n        'application/xml',\n        'application/zip'\n      ],\n\n      openFileSelector() {\n        this.$refs.fileInput.accept = this.acceptedFileTypes.join(',');\n        this.$refs.fileInput.click();\n      },\n\n      handleFileSelection(event) {\n        const files = Array.from(event.target.files);\n\n        if (files.length === 0) return;\n\n        const validFiles = this.validateFileTypes(files);\n\n        if (validFiles.length === 0) {\n          alert('No valid files were selected.');\n          return;\n        }\n\n        window.pendingFilesForUpload = validFiles;\n        this.openFilesPopout();\n      },\n\n      validateFileTypes(files) {\n        return files.filter(file => {\n          return this.acceptedFileTypes.some(type => {\n            if (type.endsWith('/*')) {\n              return file.type.startsWith(type.slice(0, -1));\n            }\n            return file.type === type;\n          });\n        });\n      },\n\n      openFilesPopout() {\n        const popoutFrame = document.getElementById('new_files_popout');\n\n        if (popoutFrame) {\n          const orderId = this.getOrderIdFromUrl();\n\n          if (orderId) {\n            const url = `/orders/${orderId}/files/new`;\n            popoutFrame.src = url;\n          }\n        }\n      },\n\n      getOrderIdFromUrl() {\n        const path = window.location.pathname;\n        const match = path.match(/\\/orders\\/([^\\/]+)/);\n        return match ? match[1] : null;\n      }\n    };\n  };\n\n  if (typeof window !== 'undefined') {\n    window.newFilesApp = newFilesApp;\n  }\n\n  return newFilesApp;\n})();\n", "import Chart from 'chart.js/auto';\n\n(function () {\n  const receivableStatisticsApp = () => {\n    function drawChart(data) {\n      if (data.monthly_data && data.monthly_data.length > 0) {\n        return drawMonthlyChart(data.monthly_data)\n      } else {\n        return drawSimpleChart(data.statistics)\n      }\n    }\n\n    function drawMonthlyChart(monthlyData) {\n      const months = monthlyData.map(item => item.month)\n      const totalAmounts = monthlyData.map(item => item.total_amounts)\n      const balance = monthlyData.map(item => item.balance)\n\n      return new Chart(\n        document.getElementById('receivableStatistics'),\n        {\n          type: 'bar',\n          data: {\n            labels: months,\n            datasets: [\n              {\n                label: 'Total Amounts',\n                data: totalAmounts,\n                backgroundColor: 'rgb(20, 184, 166)',\n                borderRadius: 8\n              },\n              {\n                label: 'Balance',\n                data: balance,\n                backgroundColor: 'rgb(59, 130, 246)',\n                borderRadius: 8\n              }\n            ]\n          },\n          options: {\n            responsive: true,\n            maintainAspectRatio: false,\n            plugins: {\n              legend: {\n                position: 'bottom',\n                labels: {\n                  usePointStyle: true,\n                  boxHeight: 7,\n                  pointStyle: 'circle',\n                }\n              },\n            },\n            scales: {\n              y: {\n                beginAtZero: true,\n                ticks: {\n                  callback: function(value) {\n                    return '$' + (value / 1000).toFixed(0) + 'k';\n                  },\n                  maxTicksLimit: 5\n                },\n                grid: {\n                  drawBorder: false,\n                  drawTicks: false,\n                }\n              },\n              x: {\n                grid: {\n                  drawOnChartArea: false,\n                  drawBorder: false,\n                  drawTicks: false,\n                },\n                categoryPercentage: 0.6,\n                barPercentage: 0.7\n              }\n            }\n          }\n        }\n      )\n    }\n\n    function drawSimpleChart(statistics) {\n      return new Chart(\n        document.getElementById('receivableStatistics'),\n        {\n          type: 'bar',\n          data: {\n            labels: [''],\n            datasets: statistics.map((item) => {\n              return {\n                label: item.label,\n                data: [item.value],\n                backgroundColor: item.color,\n                borderRadius: 8\n              }\n            })\n          },\n          options: {\n            responsive: true,\n            maintainAspectRatio: false,\n            plugins: {\n              legend: {\n                position: 'bottom',\n                labels: {\n                  usePointStyle: true,\n                  boxHeight: 7,\n                  pointStyle: 'circle',\n                }\n              },\n            },\n            scales: {\n              y: {\n                beginAtZero: true,\n                ticks: {\n                  callback: function(value) {\n                    return '$' + (value / 1000).toFixed(0) + 'k';\n                  },\n                  maxTicksLimit: 5\n                },\n                grid: {\n                  drawBorder: false,\n                  drawTicks: false,\n                }\n              },\n              x: {\n                grid: {\n                  drawOnChartArea: false,\n                  drawBorder: false,\n                  drawTicks: false,\n                },\n                categoryPercentage: 0.6,\n                barPercentage: 0.7\n              }\n            }\n          }\n        }\n      )\n    }\n\n    return {\n      chart: null,\n      totalAmounts: 0,\n      totalBalance: 0,\n      topClients: [],\n\n      getStatistics: function (startDate = null, endDate = null) {\n        let customRange = ''\n\n        if (startDate != null && endDate != null) {\n          customRange = `?start_date=${startDate}&end_date=${endDate}`\n        }\n\n        fetch(`/paying/receivable_statistics.json${customRange}`)\n          .then((response) => response.json())\n          .then((result) => {\n            if (this.chart != null) this.chart.destroy();\n\n            if (result.statistics) {\n              const totalAmounts = result.statistics.find(s => s.label === 'Total Amounts')\n              const balance = result.statistics.find(s => s.label === 'Balance')\n\n              this.totalAmounts = totalAmounts ? this.formatCurrency(totalAmounts.value) : '$0';\n              this.totalBalance = balance ? this.formatCurrency(balance.value) : '$0';\n            }\n\n            if (result.top_clients) {\n              this.topClients = result.top_clients;\n            } else {\n              this.topClients = [];\n            }\n\n            this.chart = drawChart(result)\n          });\n      },\n\n      formatCurrency(value) {\n        if (!value || isNaN(value)) return '$0';\n\n        const num = parseFloat(value)\n\n        return '$' + num.toLocaleString('en-US', {\n          minimumFractionDigits: 2,\n          maximumFractionDigits: 2\n        })\n      }\n    };\n  }\n\n  if (typeof window !== 'undefined') {\n    window.receivableStatisticsApp = receivableStatisticsApp;\n  }\n\n  return receivableStatisticsApp;\n})();\n", "import Chart from 'chart.js/auto';\n\n(function () {\n  const payoutApp = () => {\n    function drawChart(data) {\n      if (data.monthly_data && data.monthly_data.length > 0) {\n        return drawMonthlyChart(data.monthly_data)\n      } else {\n        return drawSimpleChart(data.statistics)\n      }\n    }\n\n    function drawMonthlyChart(monthlyData) {\n      const months = monthlyData.map(item => item.month)\n      const totalAmounts = monthlyData.map(item => item.total_amounts)\n      const balance = monthlyData.map(item => item.balance)\n\n      return new Chart(\n        document.getElementById('payablesStatistics'),\n        {\n          type: 'bar',\n          data: {\n            labels: months,\n            datasets: [\n              {\n                label: 'Total Amounts',\n                data: totalAmounts,\n                backgroundColor: 'rgb(59, 130, 246)',\n                borderRadius: 8\n              },\n              {\n                label: 'Total Balance',\n                data: balance,\n                backgroundColor: 'rgb(20, 184, 166)',\n                borderRadius: 8\n              }\n            ]\n          },\n          options: {\n            responsive: true,\n            maintainAspectRatio: false,\n            plugins: {\n              legend: {\n                position: 'bottom',\n                labels: {\n                  usePointStyle: true,\n                  boxHeight: 7,\n                  pointStyle: 'circle',\n                }\n              },\n            },\n            scales: {\n              y: {\n                beginAtZero: true,\n                ticks: {\n                  callback: function(value) {\n                    return '$' + (value / 1000).toFixed(0) + 'k';\n                  },\n                  maxTicksLimit: 5\n                },\n                grid: {\n                  drawBorder: false,\n                  drawTicks: false,\n                }\n              },\n              x: {\n                grid: {\n                  drawOnChartArea: false,\n                  drawBorder: false,\n                  drawTicks: false,\n                },\n                categoryPercentage: 0.6,\n                barPercentage: 0.7\n              }\n            }\n          }\n        }\n      )\n    }\n\n    function drawSimpleChart(statistics) {\n      return new Chart(\n        document.getElementById('payablesStatistics'),\n        {\n          type: 'bar',\n          data: {\n            labels: [''],\n            datasets: statistics.map((item) => {\n              return {\n                label: item.label,\n                data: [item.value],\n                backgroundColor: item.color,\n                borderRadius: 8\n              }\n            })\n          },\n          options: {\n            responsive: true,\n            maintainAspectRatio: false,\n            plugins: {\n              legend: {\n                position: 'bottom',\n                labels: {\n                  usePointStyle: true,\n                  boxHeight: 7,\n                  pointStyle: 'circle',\n                }\n              },\n            },\n            scales: {\n              y: {\n                beginAtZero: true,\n                ticks: {\n                  callback: function(value) {\n                    return '$' + (value / 1000).toFixed(0) + 'k';\n                  },\n                  maxTicksLimit: 5\n                },\n                grid: {\n                  drawBorder: false,\n                  drawTicks: false,\n                }\n              },\n              x: {\n                grid: {\n                  drawOnChartArea: false,\n                  drawBorder: false,\n                  drawTicks: false,\n                },\n                categoryPercentage: 0.6,\n                barPercentage: 0.7\n              }\n            }\n          }\n        }\n      )\n    }\n\n    return {\n      chart: null,\n      totalVendorPayables: '$0',\n      totalUnpaidOrders: '0',\n      totalPaidOrders: '0',\n      totalUnpaidManualPayouts: '$0',\n      totalUnpaidAutomatedPayouts: '$0',\n      topVendors: [],\n\n      getStatistics: function (startDate = null, endDate = null) {\n        let customRange = ''\n\n        if (startDate != null && endDate != null) {\n          customRange = `?start_date=${startDate}&end_date=${endDate}`\n        }\n\n        fetch(`/payouting/payables_statistics.json${customRange}`)\n          .then((response) => response.json())\n          .then((result) => {\n            if (this.chart != null) this.chart.destroy();\n\n            this.totalVendorPayables = this.formatCurrency(result.total_vendors_payables || 0);\n            this.totalUnpaidOrders = result.total_unpaid_orders || 0;\n            this.totalPaidOrders = result.total_paid_orders || 0;\n            this.totalUnpaidManualPayouts = this.formatCurrency(result.total_unpaid_manual_payouts || 0);\n            this.totalUnpaidAutomatedPayouts = this.formatCurrency(result.total_unpaid_automated_payouts || 0);\n\n            if (result.top_vendors) {\n              this.topVendors = result.top_vendors;\n            } else {\n              this.topVendors = [];\n            }\n\n            this.chart = drawChart(result)\n          });\n      },\n\n      formatCurrency(value) {\n        if (!value || isNaN(value)) return '$0';\n\n        const num = parseFloat(value)\n\n        return '$' + num.toLocaleString('en-US', {\n          minimumFractionDigits: 2,\n          maximumFractionDigits: 2\n        })\n      }\n    };\n  }\n\n  if (typeof window !== 'undefined') {\n    window.payoutApp = payoutApp;\n  }\n\n  return payoutApp;\n})();\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n  try {\n    return document.execCommand(type);\n  } catch (err) {\n    return false;\n  }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n  var selectedText = select_default()(target);\n  command('cut');\n  return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n  var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n  var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n  fakeElement.style.fontSize = '12pt'; // Reset box model\n\n  fakeElement.style.border = '0';\n  fakeElement.style.padding = '0';\n  fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n  fakeElement.style.position = 'absolute';\n  fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n  var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n  fakeElement.style.top = \"\".concat(yPosition, \"px\");\n  fakeElement.setAttribute('readonly', '');\n  fakeElement.value = value;\n  return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n  var fakeElement = createFakeElement(value);\n  options.container.appendChild(fakeElement);\n  var selectedText = select_default()(fakeElement);\n  command('copy');\n  fakeElement.remove();\n  return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    container: document.body\n  };\n  var selectedText = '';\n\n  if (typeof target === 'string') {\n    selectedText = fakeCopyAction(target, options);\n  } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n    // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n    selectedText = fakeCopyAction(target.value, options);\n  } else {\n    selectedText = select_default()(target);\n    command('copy');\n  }\n\n  return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\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\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  // Defines base properties passed from constructor.\n  var _options$action = options.action,\n      action = _options$action === void 0 ? 'copy' : _options$action,\n      container = options.container,\n      target = options.target,\n      text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n  if (action !== 'copy' && action !== 'cut') {\n    throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n  } // Sets the `target` property using an element that will be have its content copied.\n\n\n  if (target !== undefined) {\n    if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n      if (action === 'copy' && target.hasAttribute('disabled')) {\n        throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n      }\n\n      if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n        throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n      }\n    } else {\n      throw new Error('Invalid \"target\" value, use a valid Element');\n    }\n  } // Define selection strategy based on `text` property.\n\n\n  if (text) {\n    return actions_copy(text, {\n      container: container\n    });\n  } // Defines which selection strategy based on `target` property.\n\n\n  if (target) {\n    return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n      container: container\n    });\n  }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\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 && (clipboard_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\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n  var attribute = \"data-clipboard-\".concat(suffix);\n\n  if (!element.hasAttribute(attribute)) {\n    return;\n  }\n\n  return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n  _inherits(Clipboard, _Emitter);\n\n  var _super = _createSuper(Clipboard);\n\n  /**\n   * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n   * @param {Object} options\n   */\n  function Clipboard(trigger, options) {\n    var _this;\n\n    _classCallCheck(this, Clipboard);\n\n    _this = _super.call(this);\n\n    _this.resolveOptions(options);\n\n    _this.listenClick(trigger);\n\n    return _this;\n  }\n  /**\n   * Defines if attributes would be resolved using internal setter functions\n   * or custom functions that were passed in the constructor.\n   * @param {Object} options\n   */\n\n\n  _createClass(Clipboard, [{\n    key: \"resolveOptions\",\n    value: function resolveOptions() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n      this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n      this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n      this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n    }\n    /**\n     * Adds a click event listener to the passed trigger.\n     * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n     */\n\n  }, {\n    key: \"listenClick\",\n    value: function listenClick(trigger) {\n      var _this2 = this;\n\n      this.listener = listen_default()(trigger, 'click', function (e) {\n        return _this2.onClick(e);\n      });\n    }\n    /**\n     * Defines a new `ClipboardAction` on each click event.\n     * @param {Event} e\n     */\n\n  }, {\n    key: \"onClick\",\n    value: function onClick(e) {\n      var trigger = e.delegateTarget || e.currentTarget;\n      var action = this.action(trigger) || 'copy';\n      var text = actions_default({\n        action: action,\n        container: this.container,\n        target: this.target(trigger),\n        text: this.text(trigger)\n      }); // Fires an event based on the copy operation result.\n\n      this.emit(text ? 'success' : 'error', {\n        action: action,\n        text: text,\n        trigger: trigger,\n        clearSelection: function clearSelection() {\n          if (trigger) {\n            trigger.focus();\n          }\n\n          window.getSelection().removeAllRanges();\n        }\n      });\n    }\n    /**\n     * Default `action` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultAction\",\n    value: function defaultAction(trigger) {\n      return getAttributeValue('action', trigger);\n    }\n    /**\n     * Default `target` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultTarget\",\n    value: function defaultTarget(trigger) {\n      var selector = getAttributeValue('target', trigger);\n\n      if (selector) {\n        return document.querySelector(selector);\n      }\n    }\n    /**\n     * Allow fire programmatically a copy action\n     * @param {String|HTMLElement} target\n     * @param {Object} options\n     * @returns Text copied.\n     */\n\n  }, {\n    key: \"defaultText\",\n\n    /**\n     * Default `text` lookup function.\n     * @param {Element} trigger\n     */\n    value: function defaultText(trigger) {\n      return getAttributeValue('text', trigger);\n    }\n    /**\n     * Destroy lifecycle.\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.listener.destroy();\n    }\n  }], [{\n    key: \"copy\",\n    value: function copy(target) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        container: document.body\n      };\n      return actions_copy(target, options);\n    }\n    /**\n     * Allow fire programmatically a cut action\n     * @param {String|HTMLElement} target\n     * @returns Text cutted.\n     */\n\n  }, {\n    key: \"cut\",\n    value: function cut(target) {\n      return actions_cut(target);\n    }\n    /**\n     * Returns the support of the given action, or all actions if no action is\n     * given.\n     * @param {String} [action]\n     */\n\n  }, {\n    key: \"isSupported\",\n    value: function isSupported() {\n      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n      var actions = typeof action === 'string' ? [action] : action;\n      var support = !!document.queryCommandSupported;\n      actions.forEach(function (action) {\n        support = support && !!document.queryCommandSupported(action);\n      });\n      return support;\n    }\n  }]);\n\n  return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n    var proto = Element.prototype;\n\n    proto.matches = proto.matchesSelector ||\n                    proto.mozMatchesSelector ||\n                    proto.msMatchesSelector ||\n                    proto.oMatchesSelector ||\n                    proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n    while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n        if (typeof element.matches === 'function' &&\n            element.matches(selector)) {\n          return element;\n        }\n        element = element.parentNode;\n    }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n    var listenerFn = listener.apply(this, arguments);\n\n    element.addEventListener(type, listenerFn, useCapture);\n\n    return {\n        destroy: function() {\n            element.removeEventListener(type, listenerFn, useCapture);\n        }\n    }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n    // Handle the regular Element usage\n    if (typeof elements.addEventListener === 'function') {\n        return _delegate.apply(null, arguments);\n    }\n\n    // Handle Element-less usage, it defaults to global delegation\n    if (typeof type === 'function') {\n        // Use `document` as the first parameter, then apply arguments\n        // This is a short way to .unshift `arguments` without running into deoptimizations\n        return _delegate.bind(null, document).apply(null, arguments);\n    }\n\n    // Handle Selector-based usage\n    if (typeof elements === 'string') {\n        elements = document.querySelectorAll(elements);\n    }\n\n    // Handle Array-like based usage\n    return Array.prototype.map.call(elements, function (element) {\n        return _delegate(element, selector, type, callback, useCapture);\n    });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n    return function(e) {\n        e.delegateTarget = closest(e.target, selector);\n\n        if (e.delegateTarget) {\n            callback.call(element, e);\n        }\n    }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n    return value !== undefined\n        && value instanceof HTMLElement\n        && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return value !== undefined\n        && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n        && ('length' in value)\n        && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n    return typeof value === 'string'\n        || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n    if (!target && !type && !callback) {\n        throw new Error('Missing required arguments');\n    }\n\n    if (!is.string(type)) {\n        throw new TypeError('Second argument must be a String');\n    }\n\n    if (!is.fn(callback)) {\n        throw new TypeError('Third argument must be a Function');\n    }\n\n    if (is.node(target)) {\n        return listenNode(target, type, callback);\n    }\n    else if (is.nodeList(target)) {\n        return listenNodeList(target, type, callback);\n    }\n    else if (is.string(target)) {\n        return listenSelector(target, type, callback);\n    }\n    else {\n        throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n    }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n    node.addEventListener(type, callback);\n\n    return {\n        destroy: function() {\n            node.removeEventListener(type, callback);\n        }\n    }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n    Array.prototype.forEach.call(nodeList, function(node) {\n        node.addEventListener(type, callback);\n    });\n\n    return {\n        destroy: function() {\n            Array.prototype.forEach.call(nodeList, function(node) {\n                node.removeEventListener(type, callback);\n            });\n        }\n    }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n    return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n    var selectedText;\n\n    if (element.nodeName === 'SELECT') {\n        element.focus();\n\n        selectedText = element.value;\n    }\n    else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n        var isReadOnly = element.hasAttribute('readonly');\n\n        if (!isReadOnly) {\n            element.setAttribute('readonly', '');\n        }\n\n        element.select();\n        element.setSelectionRange(0, element.value.length);\n\n        if (!isReadOnly) {\n            element.removeAttribute('readonly');\n        }\n\n        selectedText = element.value;\n    }\n    else {\n        if (element.hasAttribute('contenteditable')) {\n            element.focus();\n        }\n\n        var selection = window.getSelection();\n        var range = document.createRange();\n\n        range.selectNodeContents(element);\n        selection.removeAllRanges();\n        selection.addRange(range);\n\n        selectedText = selection.toString();\n    }\n\n    return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\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.confirmDatePlugin = factory());\n}(this, (function () { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\n\n    function getEventTarget(event) {\n        try {\n            if (typeof event.composedPath === \"function\") {\n                var path = event.composedPath();\n                return path[0];\n            }\n            return event.target;\n        }\n        catch (error) {\n            return event.target;\n        }\n    }\n\n    var defaultConfig = {\n        confirmIcon: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='17' height='17' viewBox='0 0 17 17'> <g> </g> <path d='M15.418 1.774l-8.833 13.485-4.918-4.386 0.666-0.746 4.051 3.614 8.198-12.515 0.836 0.548z' fill='#000000' /> </svg>\",\n        confirmText: \"OK \",\n        showAlways: false,\n        theme: \"light\",\n    };\n    function confirmDatePlugin(pluginConfig) {\n        var config = __assign(__assign({}, defaultConfig), pluginConfig);\n        var confirmContainer;\n        var confirmButtonCSSClass = \"flatpickr-confirm\";\n        return function (fp) {\n            if (fp.config.noCalendar || fp.isMobile)\n                return {};\n            return __assign({ onKeyDown: function (_, __, ___, e) {\n                    var eventTarget = getEventTarget(e);\n                    var isTargetLastFocusableElement = (!fp.config.time_24hr && eventTarget === fp.amPM) ||\n                        (fp.config.time_24hr &&\n                            ((fp.config.enableSeconds && eventTarget === fp.secondElement) ||\n                                (!fp.config.enableSeconds && eventTarget === fp.minuteElement)));\n                    if (fp.config.enableTime &&\n                        e.key === \"Tab\" &&\n                        isTargetLastFocusableElement) {\n                        e.preventDefault();\n                        confirmContainer.focus();\n                    }\n                    else if (e.key === \"Enter\" && eventTarget === confirmContainer)\n                        fp.close();\n                },\n                onReady: function () {\n                    confirmContainer = fp._createElement(\"div\", confirmButtonCSSClass + \" \" + (config.showAlways ? \"visible\" : \"\") + \" \" + config.theme + \"Theme\", config.confirmText);\n                    confirmContainer.tabIndex = -1;\n                    confirmContainer.innerHTML += config.confirmIcon;\n                    confirmContainer.addEventListener(\"click\", fp.close);\n                    fp.calendarContainer.appendChild(confirmContainer);\n                    fp.loadedPlugins.push(\"confirmDate\");\n                } }, (!config.showAlways\n                ? {\n                    onChange: function (_, dateStr) {\n                        var showCondition = fp.config.enableTime ||\n                            fp.config.mode === \"multiple\" ||\n                            fp.loadedPlugins.indexOf(\"monthSelect\") !== -1;\n                        var localConfirmContainer = fp.calendarContainer.querySelector(\".\" + confirmButtonCSSClass);\n                        if (!localConfirmContainer)\n                            return;\n                        if (dateStr &&\n                            !fp.config.inline &&\n                            showCondition &&\n                            localConfirmContainer)\n                            return localConfirmContainer.classList.add(\"visible\");\n                        localConfirmContainer.classList.remove(\"visible\");\n                    },\n                }\n                : {}));\n        };\n    }\n\n    return confirmDatePlugin;\n\n})));\n", "!function(t,e){var i=i||{};\"function\"==typeof i&&i.amd?i([],e):\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"object\"==typeof exports?exports.DragSort=e():t.DragSort=e()}(this,(function(){var t,e=0,i={},s={},r=(t=window.MutationObserver||window.WebKitMutationObserver,function(e,i){e&&1===e.nodeType&&(t?new t((function(t,e){i(t)})).observe(e,{childList:!0,subtree:!1}):window.addEventListener&&e.addEventListener(\"DOMNodeInserted\",i,!1))});function a(t,e){if(!t)return this;e=e||{},this.parentElm=t,this.uid=e.uid,this.settings={selector:\"*\",callbacks:{}},Object.assign(this.settings,e),this.setup(),r(this.parentElm,this.setup.bind(this)),this.bindEvents()}return a.prototype={namespace:\"dragsort\",setup(){[...this.parentElm.childNodes].forEach((t=>{if(1!=t.nodeType)return t.parentNode.removeChild(t);t.matches(this.settings.selector)&&(t.draggable=!0)})),this.gap=this.getItemsGap(this.parentElm.firstElementChild)},throttle(t,e){var i=!1,s=this;return function(r){i||(t.call(s,r),i=!0,setTimeout((()=>i=!1),e))}},getDraggableElm(t){if(!t.closest)return null;var e=t.closest('[draggable=\"true\"]');return this.uid==i.uid?e:null},dragstart(t,e){i=this;var s,r=this.getDraggableElm(e);r?(this.saveInitialStyles(),this.source=this.getInitialState(),this.target=this.getInitialState(),s=r.getBoundingClientRect(),this.source.elm=r,this.source.idx=this.getNodeIndex(r),this.source.size.width=s.width,this.source.size.height=s.height,t.dataTransfer.effectAllowed=\"move\",this.settings.callbacks.dragStart&&this.settings.callbacks.dragStart(this.source.elm,t),setTimeout(this.afterDragStart.bind(this))):i={}},afterDragStart(){var t=\"vertical\"==this.settings.mode?\"height\":\"width\";this.parentElm.classList.add(`${this.namespace}--dragStart`),this.source.elm.style[t]=this.source.size[t]+\"px\",this.source.elm.classList.add(`${this.namespace}--dragElem`)},dragover(t){t.preventDefault(),t.stopPropagation();var e=t.target;if((e=this.getDraggableElm(e))&&this.target){var i=this.target.elm,s=this.target.hoverDirection;t.dataTransfer.dropEffect=\"move\",this.target.hoverDirection=this.getTargetDirection(t),i==e&&s==this.target.hoverDirection||this.directionAwareDragEnter(t,e)}},dragenter(t,e){(e=this.getDraggableElm(e))&&this.target&&this.isValidElm(e)&&this.source.elm!=e&&this.source.elm&&(this.target.bounding=e.getBoundingClientRect())},directionAwareDragEnter(t,e){var i;t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect=\"none\",this.isValidElm(e)&&this.source.elm!=e&&this.source.elm&&(t.dataTransfer.dropEffect=\"move\",this.cleanupLastTarget(),this.target.elm=e,this.target.idx=this.getNodeIndex(e),e.classList.add(\"over\"),i=Math.abs(this.target.idx-this.source.idx),this.source.elm.classList.toggle(`${this.namespace}--hide`,i>0),\"vertical\"==this.settings.mode?this.target.elm.style[this.target.hoverDirection?\"marginBottom\":\"marginTop\"]=this.source.size.height+this.gap+\"px\":this.target.elm.style[this.target.hoverDirection?\"marginRight\":\"marginLeft\"]=this.source.size.width+this.gap+\"px\")},dragend(t){if(clearTimeout(this.dragoverTimeout),this.dragoverTimeout=null,this.parentElm.classList.remove(`${this.namespace}--dragStart`),!this.isValidElm(this.target.elm))return this.cleanup();var e=this.target.hoverDirection?this.target.elm.nextElementSibling:this.target.elm;return this.source.elm!=this.target.elm&&this.target.elm&&(this.target.elm.classList.add(`${this.namespace}--noAnim`),this.cleanup(),this.parentElm.insertBefore(this.source.elm,e)),this.source.elm&&this.source.elm.classList.remove(`${this.namespace}--dragElem`,`${this.namespace}--hide`),this.settings.callbacks.dragEnd&&this.settings.callbacks.dragEnd(this.source.elm),this},isTargetLastChild(){return this.parentElm.lastElementChild==this.target.elm},getTargetDirection(t){if(this.target.bounding)return\"vertical\"==this.settings.mode?t.pageY>this.target.bounding.top+this.target.bounding.height/2?1:0:t.pageX>this.target.bounding.left+this.target.bounding.width/2?1:0},getNodeIndex(t){for(var e=0;t=t.previousSibling;)3==t.nodeType&&/^\\s*$/.test(t.data)||e++;return e},isValidElm(t){return t&&t.nodeType&&t.parentNode==this.parentElm},saveInitialStyles(){[...this.parentElm.children].forEach((t=>{t.setAttribute(\"dragsort-initial-style\",t.getAttribute(\"style\"))}))},cleanup(){i={},[...this.parentElm.children].forEach((t=>{t.style=t.getAttribute(\"dragsort-initial-style\"),t.removeAttribute(\"dragsort-initial-style\"),setTimeout((()=>{t.classList.remove(`${this.namespace}--over`,`${this.namespace}--noAnim`,`${this.namespace}--dragElem`)}),50)}))},cleanupLastTarget(){const{elm:t}=this.target;t&&(t.classList.remove(`${this.namespace}--hide`,`${this.namespace}--over`),t.style=t.getAttribute(\"dragsort-initial-style\"))},getInitialState:()=>({elm:null,size:{}}),getItemsGap(t){var e=getComputedStyle(t),i=getComputedStyle(t.parentNode),s=\"vertical\"==this.settings.mode,r=parseInt(i.gap)||0;return parseInt(e[\"margin\"+(s?\"Top\":\"Left\")])+parseInt(e[\"margin\"+(s?\"Bottom\":\"Right\")])+r},bindEvents(t){for(var e in this.listeners=this.listeners||{dragstart:t=>this.dragstart(t,t.target),dragenter:t=>this.dragenter(t,t.target),dragend:t=>this.dragend(t,t.target),dragover:this.throttle(this.dragover,350)},this.listeners)this.parentElm[t?\"removeEventListener\":\"addEventListener\"](e,this.listeners[e])},destroy(){this.cleanup(),this.bindEvents(!0),delete s[this.uid]}},function(t,i){return s[++e]=t.DragSort?s[t.DragSort]:new a(t,{...i,uid:e}),t.DragSort=e,s[e]}}));", "var ResizableConstants = /** @class */ (function () {\n    function ResizableConstants() {\n    }\n    ResizableConstants.dataPropertyName = 'validide_rtc_data_object';\n    ResizableConstants.classes = {\n        table: 'rtc-table',\n        wrapper: 'rtc-wrapper',\n        handleContainer: 'rtc-handle-container',\n        handle: 'rtc-handle',\n        tableResizing: 'rtc-table-resizing',\n        columnResizing: 'rtc-column-resizing',\n    };\n    ResizableConstants.attributes = {\n        dataResizable: 'data-rtc-resizable',\n        dataResizableTable: 'data-rtc-resizable-table'\n    };\n    ResizableConstants.data = {\n        resizable: 'rtcResizable',\n        resizableTable: 'rtcResizableTable'\n    };\n    ResizableConstants.events = {\n        pointerDown: ['mousedown', 'touchstart'],\n        pointerMove: ['mousemove', 'touchmove'],\n        pointerUp: ['mouseup', 'touchend'],\n        windowResize: ['resize'],\n        eventResizeStart: 'eventResizeStart.rtc',\n        eventResize: 'eventResize.rtc',\n        eventResizeStop: 'eventResizeStop.rtc'\n    };\n    return ResizableConstants;\n}());\nexport { ResizableConstants };\n//# sourceMappingURL=resizable-constants.js.map", "var WidthsData = /** @class */ (function () {\n    function WidthsData() {\n        this.column = 0;\n        this.table = 0;\n    }\n    return WidthsData;\n}());\nexport { WidthsData };\nvar PointerData = /** @class */ (function () {\n    function PointerData() {\n        this.x = null;\n        this.isDoubleClick = false;\n    }\n    return PointerData;\n}());\nexport { PointerData };\nvar ResizableEventData = /** @class */ (function () {\n    function ResizableEventData(column, dragHandler) {\n        this.pointer = new PointerData();\n        this.originalWidths = new WidthsData();\n        this.newWidths = new WidthsData();\n        this.column = column;\n        this.dragHandler = dragHandler;\n    }\n    return ResizableEventData;\n}());\nexport { ResizableEventData };\n//# sourceMappingURL=resizable-event-data.js.map", "var Utilities = /** @class */ (function () {\n    function Utilities() {\n    }\n    Utilities.kebabCaseToCamelCase = function (str) {\n        return str.replace(Utilities.kebabCaseRegex, function (m) { return m[1].toUpperCase(); });\n    };\n    Utilities.parseStringToType = function (str) {\n        if (str.length == 0 || Utilities.onlyWhiteSpace.test(str))\n            return str;\n        if (Utilities.trueRegex.test(str))\n            return true;\n        if (Utilities.falseRegex.test(str))\n            return false;\n        if (Utilities.notEmptyOrWhiteSpace.test(str)) {\n            var temp = +str;\n            if (!isNaN(temp))\n                return temp;\n        }\n        return str;\n    };\n    Utilities.regexEscapeRegex = /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;\n    Utilities.kebabCaseRegex = /(\\-\\w)/g;\n    Utilities.trueRegex = /^true$/i;\n    Utilities.falseRegex = /^false$/i;\n    Utilities.onlyWhiteSpace = /^\\s$/;\n    Utilities.notEmptyOrWhiteSpace = /\\S/;\n    return Utilities;\n}());\nexport { Utilities };\n//# sourceMappingURL=utilities.js.map", "import { Utilities } from './utilities';\nvar UtilitiesDOM = /** @class */ (function () {\n    function UtilitiesDOM() {\n    }\n    UtilitiesDOM.getDataAttributesValues = function (el) {\n        if (!el)\n            return null;\n        var returnValue = {};\n        if (el.dataset) {\n            for (var prop in el.dataset) {\n                if (el.dataset.hasOwnProperty(prop)) {\n                    returnValue[prop] = Utilities.parseStringToType(el.dataset[prop] || '');\n                }\n            }\n        }\n        else {\n            for (var i = 0; i < el.attributes.length; i++) {\n                if (!/^data\\-/.test(el.attributes[i].name))\n                    continue;\n                var name_1 = Utilities.kebabCaseToCamelCase(el.attributes[i].name.replace('data-', ''));\n                returnValue[name_1] = Utilities.parseStringToType(el.attributes[i].value);\n            }\n        }\n        return returnValue;\n    };\n    return UtilitiesDOM;\n}());\nexport { UtilitiesDOM };\n//# sourceMappingURL=utilities-dom.js.map", "import { UtilitiesDOM } from './utilities-dom';\nvar ResizableOptions = /** @class */ (function () {\n    function ResizableOptions(options, element) {\n        if (options === void 0) { options = null; }\n        if (element === void 0) { element = null; }\n        this.resizeFromBody = true;\n        this.minWidth = 40;\n        this.maxWidth = null;\n        this.doubleClickDelay = 500;\n        this.maxInitialWidthHint = null;\n        this.store = null;\n        this.overrideValues(options);\n        this.overrideValuesFromElement(element);\n    }\n    ResizableOptions.prototype.overrideValues = function (options) {\n        if (options === void 0) { options = null; }\n        if (!options)\n            return;\n        for (var prop in options) {\n            if (this.hasOwnProperty(prop)) {\n                this[prop] = options[prop];\n            }\n        }\n    };\n    ResizableOptions.prototype.overrideValuesFromElement = function (element) {\n        if (element === void 0) { element = null; }\n        if (!element)\n            return;\n        var elementOptions = UtilitiesDOM.getDataAttributesValues(element);\n        this.overrideValues(elementOptions);\n    };\n    return ResizableOptions;\n}());\nexport { ResizableOptions };\n//# sourceMappingURL=resizable-options.js.map", "import { ResizableConstants } from './resizable-constants';\nimport { ResizableEventData } from './resizable-event-data';\nimport { ResizableOptions } from './resizable-options';\nvar ResizableTableColumns = /** @class */ (function () {\n    function ResizableTableColumns(table, options) {\n        if (typeof table !== 'object' || table === null || table.toString() !== '[object HTMLTableElement]')\n            throw 'Invalid argument: \"table\".\\nResizableTableColumns requires that the table element is a not null HTMLTableElement object!';\n        if (typeof table[ResizableConstants.dataPropertyName] !== 'undefined')\n            throw \"Existing \\\"\".concat(ResizableConstants.dataPropertyName, \"\\\" property.\\nTable element already has a '\").concat(ResizableConstants.dataPropertyName, \"' attached object!\");\n        this.id = ResizableTableColumns.getInstanceId();\n        this.table = table;\n        this.options = new ResizableOptions(options, table);\n        this.wrapper = null;\n        this.ownerDocument = table.ownerDocument;\n        this.tableHeaders = [];\n        this.dragHandlesContainer = null;\n        this.originalWidths = [];\n        this.eventData = null;\n        this.lastPointerDown = 0;\n        this.init();\n        this.table[ResizableConstants.dataPropertyName] = this;\n    }\n    ResizableTableColumns.prototype.init = function () {\n        this.validateMarkup();\n        this.createHandlerReferences();\n        this.wrapTable();\n        this.assignTableHeaders();\n        this.storeOriginalWidths();\n        this.setHeaderWidths();\n        this.createDragHandles();\n        this.restoreColumnWidths();\n        this.checkTableWidth();\n        this.syncHandleWidths();\n        this.registerWindowResizeHandler();\n    };\n    ResizableTableColumns.prototype.dispose = function () {\n        this.destroyDragHandles();\n        this.restoreOriginalWidths();\n        this.unwrapTable();\n        this.onPointerDownRef = null;\n        this.onPointerMoveRef = null;\n        this.onPointerUpRef = null;\n        this.table[ResizableConstants.dataPropertyName] = void (0);\n    };\n    ResizableTableColumns.prototype.validateMarkup = function () {\n        var theadCount = 0;\n        var tbodyCount = 0;\n        var thead = null;\n        for (var index = 0; index < this.table.childNodes.length; index++) {\n            var element = this.table.childNodes[index];\n            if (element.nodeName === 'THEAD') {\n                theadCount++;\n                thead = element;\n            }\n            else if (element.nodeName === 'TBODY') {\n                tbodyCount++;\n            }\n        }\n        if (thead === null || theadCount !== 1)\n            throw \"Markup validation: thead count.\\nResizableTableColumns requires that the table element has one(1) table head element. Current count: \".concat(theadCount);\n        if (tbodyCount !== 1)\n            throw \"Markup validation: tbody count.\\nResizableTableColumns requires that the table element has one(1) table body element. Current count: \".concat(tbodyCount);\n        var theadRowCount = 0;\n        var firstRow = null;\n        for (var index = 0; index < thead.childNodes.length; index++) {\n            var element = thead.childNodes[index];\n            if (element.nodeName === 'TR') {\n                theadRowCount++;\n                if (firstRow === null) {\n                    firstRow = element;\n                }\n            }\n        }\n        if (firstRow === null || theadRowCount < 1)\n            throw \"Markup validation: thead row count.\\nResizableTableColumns requires that the table head element has at least one(1) table row element. Current count: \".concat(theadRowCount);\n        var headerCellsCount = 0;\n        var invalidHeaderCellsCount = 0;\n        for (var index = 0; index < firstRow.childNodes.length; index++) {\n            var element = firstRow.childNodes[index];\n            if (element.nodeName === 'TH') {\n                headerCellsCount++;\n            }\n            else if (element.nodeName === 'TD') {\n                invalidHeaderCellsCount++;\n            }\n        }\n        if (headerCellsCount < 1)\n            throw \"Markup validation: thead first row cells count.\\nResizableTableColumns requires that the table head's first row element has at least one(1) table header cell element. Current count: \".concat(headerCellsCount);\n        if (invalidHeaderCellsCount !== 0)\n            throw \"Markup validation: thead first row invalid.\\nResizableTableColumns requires that the table head's first row element has no(0) table cell(TD) elements. Current count: \".concat(invalidHeaderCellsCount);\n    };\n    ResizableTableColumns.prototype.wrapTable = function () {\n        if (this.wrapper)\n            return;\n        this.wrapper = this.ownerDocument.createElement('div');\n        this.wrapper.classList.add(ResizableConstants.classes.wrapper);\n        var tableOriginalParent = this.table.parentNode;\n        tableOriginalParent.insertBefore(this.wrapper, this.table);\n        tableOriginalParent.removeChild(this.table);\n        this.wrapper.appendChild(this.table);\n        this.table.classList.add(ResizableConstants.classes.table);\n    };\n    ResizableTableColumns.prototype.unwrapTable = function () {\n        this.table.classList.remove(ResizableConstants.classes.table);\n        if (!this.wrapper)\n            return;\n        var tableOriginalParent = this.wrapper.parentNode;\n        tableOriginalParent.insertBefore(this.table, this.wrapper);\n        tableOriginalParent.removeChild(this.wrapper);\n        this.wrapper = null;\n    };\n    ResizableTableColumns.prototype.assignTableHeaders = function () {\n        var tableHeader;\n        var firstTableRow;\n        for (var index = 0; index < this.table.childNodes.length; index++) {\n            var element = this.table.childNodes[index];\n            if (element.nodeName === 'THEAD') {\n                tableHeader = element;\n                break;\n            }\n        }\n        if (!tableHeader)\n            return;\n        for (var index = 0; index < tableHeader.childNodes.length; index++) {\n            var element = tableHeader.childNodes[index];\n            if (element.nodeName === 'TR') {\n                firstTableRow = element;\n                break;\n            }\n        }\n        if (!firstTableRow)\n            return;\n        for (var index = 0; index < firstTableRow.childNodes.length; index++) {\n            var element = firstTableRow.childNodes[index];\n            if (element.nodeName === 'TH') {\n                this.tableHeaders.push(element);\n            }\n        }\n    };\n    ResizableTableColumns.prototype.storeOriginalWidths = function () {\n        var _this = this;\n        this.tableHeaders\n            .forEach(function (el) {\n            _this.originalWidths.push({\n                el: el,\n                detail: el.style.width\n            });\n        });\n        this.originalWidths.push({\n            el: this.table,\n            detail: this.table.style.width\n        });\n    };\n    ResizableTableColumns.prototype.restoreOriginalWidths = function () {\n        this.originalWidths\n            .forEach(function (itm) {\n            itm.el.style.width = itm.detail;\n        });\n    };\n    ResizableTableColumns.prototype.setHeaderWidths = function () {\n        var _this = this;\n        this.tableHeaders\n            .forEach(function (el) {\n            var width = el.offsetWidth;\n            var constrainedWidth = _this.constrainWidth(el, width);\n            if (typeof _this.options.maxInitialWidthHint === 'number') {\n                constrainedWidth = Math.min(constrainedWidth, _this.options.maxInitialWidthHint);\n            }\n            _this.updateWidth(el, constrainedWidth, true, false);\n        });\n    };\n    ResizableTableColumns.prototype.constrainWidth = function (el, width) {\n        var result = width;\n        result = Math.max(result, this.options.minWidth || -Infinity);\n        result = Math.min(result, this.options.maxWidth || +Infinity);\n        return result;\n    };\n    ResizableTableColumns.prototype.createDragHandles = function () {\n        var _this = this;\n        var _a;\n        if (this.dragHandlesContainer != null)\n            throw 'Drag handlers already created. Call <destroyDragHandles> if you wish to recreate them';\n        this.dragHandlesContainer = this.ownerDocument.createElement('div');\n        (_a = this.wrapper) === null || _a === void 0 ? void 0 : _a.insertBefore(this.dragHandlesContainer, this.table);\n        this.dragHandlesContainer.classList.add(ResizableConstants.classes.handleContainer);\n        this.getResizableHeaders()\n            .forEach(function () {\n            var _a;\n            var handler = _this.ownerDocument.createElement('div');\n            handler.classList.add(ResizableConstants.classes.handle);\n            (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.appendChild(handler);\n        });\n        ResizableConstants.events.pointerDown\n            .forEach(function (evt, evtIdx) {\n            var _a;\n            (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.addEventListener(evt, _this.onPointerDownRef, false);\n        });\n    };\n    ResizableTableColumns.prototype.destroyDragHandles = function () {\n        var _this = this;\n        var _a, _b;\n        if (this.dragHandlesContainer !== null) {\n            ResizableConstants.events.pointerDown\n                .forEach(function (evt, evtIdx) {\n                var _a;\n                (_a = _this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.removeEventListener(evt, _this.onPointerDownRef, false);\n            });\n            (_b = (_a = this.dragHandlesContainer) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.removeChild(this.dragHandlesContainer);\n        }\n    };\n    ResizableTableColumns.prototype.getDragHandlers = function () {\n        var nodes = this.dragHandlesContainer == null\n            ? null\n            : this.dragHandlesContainer.querySelectorAll(\".\".concat(ResizableConstants.classes.handle));\n        return nodes\n            ? Array.prototype.slice.call(nodes).filter(function (el) { return el.nodeName === 'DIV'; })\n            : new Array();\n    };\n    ResizableTableColumns.prototype.restoreColumnWidths = function () {\n        if (!this.options.store)\n            return;\n        var tableId = ResizableTableColumns.generateTableId(this.table);\n        if (tableId.length === 0)\n            return;\n        var data = this.options.store.get(tableId);\n        if (!data)\n            return;\n        this.getResizableHeaders()\n            .forEach(function (el) {\n            var width = data.columns[ResizableTableColumns.generateColumnId(el)];\n            if (typeof width !== 'undefined') {\n                ResizableTableColumns.setWidth(el, width);\n            }\n        });\n        if (typeof data.table !== 'undefined') {\n            ResizableTableColumns.setWidth(this.table, data.table);\n        }\n    };\n    ResizableTableColumns.prototype.checkTableWidth = function () {\n        var _a;\n        var wrapperWidth = this.wrapper.clientWidth;\n        var tableWidth = this.table.offsetWidth;\n        var difference = wrapperWidth - tableWidth;\n        if (difference <= 0)\n            return;\n        var resizableWidth = 0;\n        var addedWidth = 0;\n        var headersDetails = [];\n        this.tableHeaders\n            .forEach(function (el, idx) {\n            if (el.hasAttribute(ResizableConstants.attributes.dataResizable)) {\n                var detail = {\n                    el: el,\n                    detail: el.offsetWidth\n                };\n                headersDetails.push(detail);\n                resizableWidth += detail.detail;\n            }\n        });\n        var leftToAdd = 0;\n        var lastResizableCell = null;\n        var currentDetail;\n        while ((currentDetail = headersDetails.shift())) {\n            leftToAdd = difference - addedWidth;\n            lastResizableCell = currentDetail.el;\n            var extraWidth = Math.floor((currentDetail.detail / resizableWidth) * difference);\n            extraWidth = Math.min(extraWidth, leftToAdd);\n            var newWidth = this.updateWidth(currentDetail.el, currentDetail.detail + extraWidth, false, true);\n            addedWidth += (newWidth - currentDetail.detail);\n            if (addedWidth >= difference)\n                break;\n        }\n        leftToAdd = difference - addedWidth;\n        if (leftToAdd > 0) {\n            var lastCell = ((_a = headersDetails[0]) === null || _a === void 0 ? void 0 : _a.el) || lastResizableCell || this.tableHeaders[this.tableHeaders.length - 1];\n            var lastCellWidth = lastCell.offsetWidth;\n            this.updateWidth(lastCell, lastCellWidth, true, true);\n        }\n        ResizableTableColumns.setWidth(this.table, wrapperWidth);\n    };\n    ResizableTableColumns.prototype.syncHandleWidths = function () {\n        var _this = this;\n        var tableWidth = this.table.clientWidth;\n        ResizableTableColumns.setWidth(this.dragHandlesContainer, tableWidth);\n        this.dragHandlesContainer.style.minWidth = \"\".concat(tableWidth, \"px\");\n        var headers = this.getResizableHeaders();\n        this.getDragHandlers()\n            .forEach(function (el, idx) {\n            var height = (_this.options.resizeFromBody ? _this.table : _this.table.tHead).clientHeight;\n            if (idx < headers.length) {\n                var th = headers[idx];\n                var left = th.offsetWidth;\n                left += ResizableTableColumns.getOffset(th).left;\n                left -= ResizableTableColumns.getOffset(_this.dragHandlesContainer).left;\n                el.style.left = \"\".concat(left, \"px\");\n                el.style.height = \"\".concat(height, \"px\");\n            }\n        });\n    };\n    ResizableTableColumns.prototype.getResizableHeaders = function () {\n        return this.tableHeaders\n            .filter(function (el, idx) {\n            return el.hasAttribute(ResizableConstants.attributes.dataResizable);\n        });\n    };\n    ResizableTableColumns.prototype.handlePointerDown = function (event) {\n        this.handlePointerUp();\n        var target = event ? event.target : null;\n        if (target == null)\n            return;\n        if (target.nodeName !== 'DIV' || !target.classList.contains(ResizableConstants.classes.handle))\n            return;\n        if (typeof event.button === 'number' && event.button !== 0)\n            return; // this is not a left click\n        var dragHandler = target;\n        var gripIndex = this.getDragHandlers().indexOf(dragHandler);\n        var resizableHeaders = this.getResizableHeaders();\n        if (gripIndex >= resizableHeaders.length)\n            return;\n        var millisecondsNow = (new Date()).getTime();\n        var isDoubleClick = (millisecondsNow - this.lastPointerDown) < this.options.doubleClickDelay;\n        var column = resizableHeaders[gripIndex];\n        var columnWidth = column.offsetWidth;\n        var widths = {\n            column: columnWidth,\n            table: this.table.offsetWidth\n        };\n        var eventData = new ResizableEventData(column, dragHandler);\n        eventData.pointer = {\n            x: ResizableTableColumns.getPointerX(event),\n            isDoubleClick: isDoubleClick\n        };\n        eventData.originalWidths = widths;\n        eventData.newWidths = widths;\n        this.detachHandlers(); //make sure we do not have extra handlers\n        this.attachHandlers();\n        this.table.classList.add(ResizableConstants.classes.tableResizing);\n        this.wrapper.classList.add(ResizableConstants.classes.tableResizing);\n        dragHandler.classList.add(ResizableConstants.classes.columnResizing);\n        column.classList.add(ResizableConstants.classes.columnResizing);\n        this.lastPointerDown = millisecondsNow;\n        this.eventData = eventData;\n        var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResizeStart, {\n            detail: {\n                column: column,\n                columnWidth: columnWidth,\n                table: this.table,\n                tableWidth: this.table.clientWidth\n            }\n        });\n        this.table.dispatchEvent(eventToDispatch);\n        event.preventDefault();\n    };\n    ResizableTableColumns.prototype.handlePointerMove = function (event) {\n        if (!this.eventData || !event)\n            return;\n        var difference = (ResizableTableColumns.getPointerX(event) || 0) - (this.eventData.pointer.x || 0);\n        if (difference === 0) {\n            return;\n        }\n        var tableWidth = this.eventData.originalWidths.table + difference;\n        var columnWidth = this.constrainWidth(this.eventData.column, this.eventData.originalWidths.column + difference);\n        ResizableTableColumns.setWidth(this.table, tableWidth);\n        ResizableTableColumns.setWidth(this.eventData.column, columnWidth);\n        this.eventData.newWidths = {\n            column: columnWidth,\n            table: tableWidth\n        };\n        var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, {\n            detail: {\n                column: this.eventData.column,\n                columnWidth: columnWidth,\n                table: this.table,\n                tableWidth: tableWidth\n            }\n        });\n        this.table.dispatchEvent(eventToDispatch);\n    };\n    ResizableTableColumns.prototype.handlePointerUp = function () {\n        this.detachHandlers();\n        if (!this.eventData)\n            return;\n        if (this.eventData.pointer.isDoubleClick) {\n            this.handleDoubleClick();\n        }\n        this.table.classList.remove(ResizableConstants.classes.tableResizing);\n        this.wrapper.classList.remove(ResizableConstants.classes.tableResizing);\n        this.eventData.dragHandler.classList.remove(ResizableConstants.classes.columnResizing);\n        this.eventData.column.classList.remove(ResizableConstants.classes.columnResizing);\n        this.checkTableWidth();\n        this.syncHandleWidths();\n        this.refreshWrapperStyle();\n        this.saveColumnWidths();\n        var widths = this.eventData.newWidths || this.eventData.originalWidths;\n        var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResizeStop, {\n            detail: {\n                column: this.eventData.column,\n                columnWidth: widths.column,\n                table: this.table,\n                tableWidth: widths.table\n            }\n        });\n        this.table.dispatchEvent(eventToDispatch);\n        this.eventData = null;\n    };\n    ResizableTableColumns.prototype.handleDoubleClick = function () {\n        if (!this.eventData || !this.eventData.column)\n            return;\n        var column = this.eventData.column;\n        var colIndex = this.tableHeaders.indexOf(column);\n        var maxWidth = 0;\n        var indicesToSkip = [];\n        this.tableHeaders\n            .forEach(function (el, idx) {\n            if (!el.hasAttribute(ResizableConstants.attributes.dataResizable)) {\n                indicesToSkip.push(idx);\n            }\n        });\n        var span = this.ownerDocument.createElement('span');\n        span.style.position = 'absolute';\n        span.style.left = '-99999px';\n        span.style.top = '-99999px';\n        span.style.visibility = 'hidden';\n        this.ownerDocument.body.appendChild(span);\n        var rows = this.table.querySelectorAll('tr');\n        for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n            var element = rows[rowIndex];\n            var cells = element.querySelectorAll('td, th');\n            var currentIndex = 0;\n            for (var cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n                var cell = cells[cellIndex];\n                var colSpan = 1;\n                if (cell.hasAttribute('colspan')) {\n                    var colSpanString = cell.getAttribute('colspan') || '1';\n                    var parsed = parseInt(colSpanString);\n                    if (!isNaN(parsed)) {\n                        colSpan = parsed;\n                    }\n                    else {\n                        colSpan = 1;\n                    }\n                }\n                if (indicesToSkip.indexOf(cellIndex) === -1\n                    && colSpan === 1\n                    && currentIndex === colIndex) {\n                    maxWidth = Math.max(maxWidth, ResizableTableColumns.getTextWidth(cell, span));\n                    break;\n                }\n                currentIndex += colSpan;\n            }\n        }\n        this.ownerDocument.body.removeChild(span);\n        var difference = maxWidth - column.offsetWidth;\n        if (difference === 0) {\n            return;\n        }\n        var tableWidth = this.eventData.originalWidths.table + difference;\n        var columnWidth = this.constrainWidth(this.eventData.column, this.eventData.originalWidths.column + difference);\n        ResizableTableColumns.setWidth(this.table, tableWidth);\n        ResizableTableColumns.setWidth(this.eventData.column, columnWidth);\n        this.eventData.newWidths = {\n            column: columnWidth,\n            table: tableWidth,\n        };\n        var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, {\n            detail: {\n                column: this.eventData.column,\n                columnWidth: columnWidth,\n                table: this.table,\n                tableWidth: tableWidth\n            }\n        });\n        this.table.dispatchEvent(eventToDispatch);\n        this.checkTableWidth();\n        this.syncHandleWidths();\n        this.saveColumnWidths();\n    };\n    ResizableTableColumns.prototype.attachHandlers = function () {\n        var _this = this;\n        ResizableConstants.events.pointerMove\n            .forEach(function (evt, evtIdx) {\n            _this.ownerDocument.addEventListener(evt, _this.onPointerMoveRef, false);\n        });\n        ResizableConstants.events.pointerUp\n            .forEach(function (evt, evtIdx) {\n            _this.ownerDocument.addEventListener(evt, _this.onPointerUpRef, false);\n        });\n    };\n    ResizableTableColumns.prototype.detachHandlers = function () {\n        var _this = this;\n        ResizableConstants.events.pointerMove\n            .forEach(function (evt, evtIdx) {\n            _this.ownerDocument.removeEventListener(evt, _this.onPointerMoveRef, false);\n        });\n        ResizableConstants.events.pointerUp\n            .forEach(function (evt, evtIdx) {\n            _this.ownerDocument.removeEventListener(evt, _this.onPointerUpRef, false);\n        });\n    };\n    ResizableTableColumns.prototype.refreshWrapperStyle = function () {\n        if (this.wrapper == null)\n            return;\n        var original = this.wrapper.style.overflowX;\n        this.wrapper.style.overflowX = 'hidden';\n        this.wrapper.style.overflowX = original;\n    };\n    ResizableTableColumns.prototype.saveColumnWidths = function () {\n        if (!this.options.store)\n            return;\n        var tableId = ResizableTableColumns.generateTableId(this.table);\n        if (tableId.length === 0)\n            return;\n        var data = {\n            table: this.table.offsetWidth,\n            columns: {}\n        };\n        this.getResizableHeaders()\n            .forEach(function (el) {\n            data.columns[ResizableTableColumns.generateColumnId(el)] = el.offsetWidth;\n        });\n        this.options.store.set(tableId, data);\n    };\n    ResizableTableColumns.prototype.createHandlerReferences = function () {\n        var _this = this;\n        if (!this.onPointerDownRef) {\n            this.onPointerDownRef = ResizableTableColumns.debounce(function (evt) {\n                _this.handlePointerDown(evt);\n            }, 100, true);\n        }\n        if (!this.onPointerMoveRef) {\n            this.onPointerMoveRef = ResizableTableColumns.debounce(function (evt) {\n                _this.handlePointerMove(evt);\n            }, 5, false);\n        }\n        if (!this.onPointerUpRef) {\n            this.onPointerUpRef = ResizableTableColumns.debounce(function (evt) {\n                _this.handlePointerUp();\n            }, 100, true);\n        }\n    };\n    ResizableTableColumns.prototype.registerWindowResizeHandler = function () {\n        var win = this.ownerDocument.defaultView;\n        if (ResizableTableColumns.windowResizeHandlerRef)\n            return;\n        ResizableTableColumns.windowResizeHandlerRef = ResizableTableColumns.debounce(ResizableTableColumns.onWindowResize, 50, false);\n        ResizableConstants.events.windowResize\n            .forEach(function (evt, idx) {\n            win === null || win === void 0 ? void 0 : win.addEventListener(evt, ResizableTableColumns.windowResizeHandlerRef, false);\n        });\n    };\n    ResizableTableColumns.prototype.handleWindowResize = function () {\n        this.checkTableWidth();\n        this.syncHandleWidths();\n        this.saveColumnWidths();\n    };\n    ResizableTableColumns.prototype.updateWidth = function (cell, suggestedWidth, skipConstrainCheck, skipTableResize) {\n        var originalCellWidth = cell.offsetWidth;\n        var columnWidth = skipConstrainCheck\n            ? suggestedWidth\n            : this.constrainWidth(cell, suggestedWidth);\n        ResizableTableColumns.setWidth(cell, columnWidth);\n        if (!skipTableResize) {\n            var difference = columnWidth - originalCellWidth;\n            var tableWidth = this.table.offsetWidth + difference;\n            ResizableTableColumns.setWidth(this.table, tableWidth);\n        }\n        return columnWidth;\n    };\n    ResizableTableColumns.onWindowResize = function (event) {\n        var win = event ? event.target : null;\n        if (win == null)\n            return;\n        var tables = win.document.querySelectorAll(\".\".concat(ResizableConstants.classes.table));\n        for (var index = 0; index < tables.length; index++) {\n            var table = tables[index];\n            if (typeof table[ResizableConstants.dataPropertyName] !== 'object')\n                continue;\n            table[ResizableConstants.dataPropertyName].handleWindowResize();\n        }\n    };\n    ResizableTableColumns.generateColumnId = function (el) {\n        var columnId = (el.getAttribute(ResizableConstants.attributes.dataResizable) || '')\n            .trim()\n            .replace(/\\./g, '_');\n        return columnId;\n    };\n    ResizableTableColumns.generateTableId = function (table) {\n        var tableId = (table.getAttribute(ResizableConstants.attributes.dataResizableTable) || '')\n            .trim()\n            .replace(/\\./g, '_');\n        return tableId.length\n            ? \"rtc/\".concat(tableId)\n            : tableId;\n    };\n    ResizableTableColumns.setWidth = function (element, width) {\n        var strWidth = width.toFixed(2);\n        strWidth = width > 0 ? strWidth : '0';\n        element.style.width = \"\".concat(strWidth, \"px\");\n    };\n    ResizableTableColumns.getInstanceId = function () {\n        return ResizableTableColumns.instancesCount++;\n    };\n    ResizableTableColumns.getPointerX = function (event) {\n        if (event.type.indexOf('touch') === 0) {\n            var tEvent = event;\n            if (tEvent.touches && tEvent.touches.length) {\n                return tEvent.touches[0].pageX;\n            }\n            if (tEvent.changedTouches && tEvent.changedTouches.length) {\n                return tEvent.changedTouches[0].pageX;\n            }\n        }\n        return event.pageX;\n    };\n    ResizableTableColumns.getTextWidth = function (contentElement, measurementElement) {\n        var _a, _b;\n        if (!contentElement || !measurementElement)\n            return 0;\n        var text = ((_a = contentElement.textContent) === null || _a === void 0 ? void 0 : _a.trim().replace(/\\s/g, '&nbsp;')) + '&nbsp;'; //add extra space to ensure we are not add the `...`\n        var styles = (_b = contentElement.ownerDocument.defaultView) === null || _b === void 0 ? void 0 : _b.getComputedStyle(contentElement);\n        ['fontFamily', 'fontSize', 'fontWeight', 'padding', 'border', 'boxSizing']\n            .forEach(function (prop) {\n            measurementElement.style[prop] = styles[prop];\n        });\n        measurementElement.innerHTML = text;\n        return measurementElement.offsetWidth;\n    };\n    ResizableTableColumns.getOffset = function (el) {\n        if (!el)\n            return { top: 0, left: 0 };\n        var rect = el.getBoundingClientRect();\n        return {\n            top: rect.top + el.ownerDocument.body.scrollTop,\n            left: rect.left + el.ownerDocument.body.scrollLeft\n        };\n    };\n    ResizableTableColumns.instancesCount = 0;\n    ResizableTableColumns.windowResizeHandlerRef = null;\n    ResizableTableColumns.debounce = function (func, wait, immediate) {\n        var timeout = null;\n        var debounced = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var later = function () {\n                timeout = null;\n                if (!immediate) {\n                    func.apply(void 0, args);\n                }\n            };\n            var callNow = immediate && !timeout;\n            if (timeout) {\n                clearTimeout(timeout);\n            }\n            timeout = setTimeout(later, wait);\n            if (callNow) {\n                func.apply(void 0, args);\n            }\n        };\n        return debounced;\n    };\n    return ResizableTableColumns;\n}());\nexport { ResizableTableColumns };\n//# sourceMappingURL=resizable-table-columns.js.map", "export var ZERO_WIDTH_CHAR = '\\u200B';\nexport var ZERO_WIDTH_UNICODE_CHAR = `&#8203;`\nexport const UPDATE_DELAY = 100\n", "import {ZERO_WIDTH_CHAR} from './constants'\n\nexport const logger = {\n    isEnabled() { return window.TAGIFY_DEBUG ?? true},\n    log(...args){ this.isEnabled() && console.log('[Tagify]:', ...args) },\n    warn(...args) { this.isEnabled() && console.warn('[Tagify]:', ...args) }\n}\n\n// console.json = console.json || function(argument){\n//     for(var arg=0; arg < arguments.length; ++arg)\n//         console.log(  JSON.stringify(arguments[arg], null, 4)  )\n// }\n\n// const isEdge = /Edge/.test(navigator.userAgent)\nexport const sameStr = (s1, s2, caseSensitive, trim) => {\n    // cast to String\n    s1 = \"\"+s1;\n    s2 = \"\"+s2;\n\n    if( trim ){\n        s1 = s1.trim()\n        s2 = s2.trim()\n    }\n\n    return caseSensitive\n        ? s1 == s2\n        : s1.toLowerCase() == s2.toLowerCase()\n}\n\n\n// const getUID = () => (new Date().getTime() + Math.floor((Math.random()*10000)+1)).toString(16)\nexport const removeCollectionProp = (collection, unwantedProps) => collection && Array.isArray(collection) && collection.map(v => omit(v, unwantedProps))\n\nexport function omit(obj, props){\n    var newObj = {}, p;\n    for( p in obj )\n        if( props.indexOf(p) < 0 )\n            newObj[p] = obj[p]\n    return newObj\n}\n\nexport function decode( s ) {\n    var el = document.createElement('div');\n    return s.replace(/\\&#?[0-9a-z]+;/gi, function(enc){\n        el.innerHTML = enc;\n        return el.innerText\n    })\n}\n\n/**\n * utility method\n * https://stackoverflow.com/a/35385518/104380\n * @param  {String} s [HTML string]\n * @return {Object}   [DOM node]\n */\nexport function parseHTML( s ){\n    var parser = new DOMParser(),\n        node   = parser.parseFromString(s.trim(), \"text/html\");\n\n    return node.body.firstElementChild;\n}\n\n/**\n * Removed new lines and irrelevant spaces which might affect layout, and are better gone\n * @param {string} s [HTML string]\n */\nexport function minify( s ){\n    return s ? s\n        .replace(/\\>[\\r\\n ]+\\</g, \"><\")\n        .split(/>\\s+</).join('><').trim()\n        : \"\"\n}\n\nexport function removeTextChildNodes( elm ){\n    var iter = document.createNodeIterator(elm, NodeFilter.SHOW_TEXT, null, false),\n        textnode;\n\n    // print all text nodes\n    while (textnode = iter.nextNode()){\n        if( !textnode.textContent.trim() )\n            textnode.parentNode.removeChild(textnode)\n    }\n}\n\nexport function getfirstTextNode( elm, action ){\n    action = action || 'previous';\n    while ( elm = elm[action + 'Sibling'] )\n        if( elm.nodeType == 3 )\n            return elm\n}\n\n/**\n * utility method\n * https://stackoverflow.com/a/6234804/104380\n */\nexport function escapeHTML( s ){\n    return typeof s == 'string' ? s\n        .replace(/&/g, \"&amp;\")\n        .replace(/</g, \"&lt;\")\n        .replace(/>/g, \"&gt;\")\n        .replace(/\"/g, \"&quot;\")\n        .replace(/`|'/g, \"&#039;\")\n        : s;\n}\n\n/**\n * Checks if an argument is a javascript Object\n */\nexport function isObject(obj) {\n    var type = Object.prototype.toString.call(obj).split(' ')[1].slice(0, -1);\n    return obj === Object(obj) && type != 'Array' && type != 'Function' && type != 'RegExp' && type != 'HTMLUnknownElement';\n}\n\n/**\n * merge objects into a single new one\n * TEST: extend({}, {a:{foo:1}, b:[]}, {a:{bar:2}, b:[1], c:()=>{}})\n */\nexport function extend( o, o1, o2) {\n    if( !(o instanceof Object) ) o = {};\n\n    copy(o, o1);\n    if( o2 )\n        copy(o, o2)\n\n    function copy(a,b){\n        // copy o2 to o\n        for( var key in b )\n            if( b.hasOwnProperty(key) ){\n                if( isObject(b[key]) ){\n                    if( !isObject(a[key]) )\n                        a[key] = Object.assign({}, b[key])\n                    else\n                        copy(a[key], b[key])\n\n                    continue;\n                }\n\n                if( Array.isArray(b[key]) ){\n                    a[key] = Object.assign([], b[key])\n                    continue\n                }\n\n                a[key] = b[key]\n            }\n    }\n\n    return o\n}\n\n/**\n * concatenates N arrays without dups.\n * If an array's item is an Object, compare by `value`\n */\nexport function concatWithoutDups(){\n    const newArr = [],\n        existingObj = {};\n\n    for( let arr of arguments ) {\n        for( let item of arr ) {\n            // if current item is an object which has yet to be added to the new array\n            if( isObject(item) ){\n                if( !existingObj[item.value] ){\n                    newArr.push(item)\n                    existingObj[item.value] = 1\n                }\n            }\n\n            // if current item is not an object and is not in the new array\n            else if( !newArr.includes(item) )\n                newArr.push(item)\n        }\n    }\n\n    return newArr\n}\n\n/**\n *  Extracted from: https://stackoverflow.com/a/37511463/104380\n * @param {String} s\n */\nexport function unaccent( s ){\n    // if not supported, do not continue.\n    // developers should use a polyfill:\n    // https://github.com/walling/unorm\n    if( !String.prototype.normalize )\n        return s\n\n    if (typeof(s) === 'string')\n        return s.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\n}\n\n/**\n * Meassures an element's height, which might yet have been added DOM\n * https://stackoverflow.com/q/5944038/104380\n * @param {DOM} node\n */\nexport function getNodeHeight( node ){\n    var height, clone = node.cloneNode(true)\n    clone.style.cssText = \"position:fixed; top:-9999px; opacity:0\"\n    document.body.appendChild(clone)\n    height = clone.clientHeight\n    clone.parentNode.removeChild(clone)\n    return height\n}\n\nexport var isChromeAndroidBrowser = () => /(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)\n\nexport function getUID() {\n    return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>\n        (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n    )\n}\n\nexport function isNodeTag(node){\n    const belongs = isNodeBelongsToThisTagifyInstance.call(this, node);\n    const isTag = node?.classList?.contains(this.settings.classNames.tag)\n    return belongs && isTag\n}\n\nexport function isWithinNodeTag(node){\n    return isNodeBelongsToThisTagifyInstance.call(this, node) && node?.closest(this.settings.classNames.tagSelector)\n}\n\nfunction isNodeBelongsToThisTagifyInstance(node) {\n    let closestTagifyNode = node?.closest?.(this.settings.classNames.namespaceSelector)\n    return closestTagifyNode === this.DOM.scope\n}\n\n/**\n* Get the caret position relative to the viewport\n* https://stackoverflow.com/q/58985076/104380\n*\n* @returns {object} left, top distance in pixels\n*/\nexport function getCaretGlobalPosition(){\n   const sel = document.getSelection()\n\n   if( sel.rangeCount ){\n       const r = sel.getRangeAt(0)\n       const node = r.startContainer\n       const offset = r.startOffset\n       let rect,  r2;\n\n       if (offset > 0) {\n           r2 = document.createRange()\n           r2.setStart(node, offset - 1)\n           r2.setEnd(node, offset)\n           rect = r2.getBoundingClientRect()\n           return {left:rect.right, top:rect.top, bottom:rect.bottom}\n       }\n\n       if( node.getBoundingClientRect )\n           return node.getBoundingClientRect()\n   }\n\n   return {left:-9999, top:-9999}\n}\n\n/**\n * Injects content (either string or node) at the current the current (or specificed) caret position\n * @param {content} string/node\n * @param {range} Object (optional, a range other than the current window selection)\n */\nexport function injectAtCaret(content, range){\n    var selection = window.getSelection();\n    range = range || selection.getRangeAt(0)\n\n    if( typeof content == 'string' )\n        content = document.createTextNode(content)\n\n    if( range ) {\n        range.deleteContents()\n        range.insertNode(content)\n    }\n\n    return content\n}\n\n/** Setter/Getter\n * Each tag DOM node contains a custom property called \"__tagifyTagData\" which hosts its data\n * @param {Node}   tagElm\n * @param {Object} data\n */\nexport function getSetTagData(tagElm, data, override){\n    if( !tagElm ){\n        logger.warn(\"tag element doesn't exist\",{tagElm, data})\n        return data\n    }\n\n    if( data )\n        tagElm.__tagifyTagData = override\n            ? data\n            : extend({}, tagElm.__tagifyTagData || {}, data)\n\n    return tagElm.__tagifyTagData\n}\n\nexport function placeCaretAfterNode( node ){\n    if( !node || !node.parentNode ) return\n\n    var nextSibling = node,\n        sel = window.getSelection(),\n        range = sel.getRangeAt(0);\n\n    if (sel.rangeCount) {\n        range.setStartAfter(nextSibling);\n        range.collapse(true)\n        // range.setEndBefore(nextSibling || node);\n        sel.removeAllRanges();\n        sel.addRange(range);\n    }\n}\n\n/**\n * iterate all tags, checking if multiple ones are close-siblings and if so, add a zero-space width character between them,\n * which forces the caret to be rendered when the selection is between tags.\n * Also do that if the tag is the first node.\n * @param {Array} tags\n */\nexport function fixCaretBetweenTags(tags, TagifyHasFocuse) {\n    tags.forEach(tag => {\n        if( getSetTagData(tag.previousSibling) || !tag.previousSibling ) {\n            var textNode = document.createTextNode(ZERO_WIDTH_CHAR)\n            tag.before(textNode)\n            TagifyHasFocuse && placeCaretAfterNode(textNode)\n        }\n    })\n}\n\n", "export default {\r\n    delimiters          : \",\",            // [RegEx] split tags by any of these delimiters (\"null\" to cancel) Example: \",| |.\"\r\n    pattern             : null,           // RegEx pattern to validate input by. Ex: /[1-9]/\r\n    tagTextProp         : 'value',        // tag data Object property which will be displayed as the tag's text\r\n    maxTags             : Infinity,       // Maximum number of tags\r\n    callbacks           : {},             // Exposed callbacks object to be triggered on certain events\r\n    addTagOnBlur        : true,           // automatically adds the text which was inputed as a tag when blur event happens\r\n    addTagOn            : ['blur', 'tab', 'enter'],  // if the tagify field (in a normal mode) has any non-tag input in it, convert it to a tag on any of these events: blur away from the field, click \"tab\"/\"enter\" key\r\n    onChangeAfterBlur   : true,           // By default, the native way of inputs' onChange events is kept, and it only fires when the field is blured.\r\n    duplicates          : false,          // \"true\" - allow duplicate tags\r\n    whitelist           : [],             // Array of tags to suggest as the user types (can be used along with \"enforceWhitelist\" setting)\r\n    blacklist           : [],             // A list of non-allowed tags\r\n    enforceWhitelist    : false,          // Only allow tags from the whitelist\r\n    userInput           : true,           // disable manually typing/pasting/editing tags (tags may only be added from the whitelist)\r\n    focusable           : true,           // Allow the component as a whole to recieve focus. There are implementations of Tagify without external border and so 'focusability' causes unwanted behaviour\r\n    focusInputOnRemove  : true,           // Refocus the input when a tag is removed\r\n    keepInvalidTags     : false,          // if true, do not remove tags which did not pass validation\r\n    createInvalidTags   : true,           // if false, do not create invalid tags from invalid user input\r\n    mixTagsAllowedAfter : /,|\\.|\\:|\\s/,   // RegEx - Define conditions in which mix-tags content allows a tag to be added after\r\n    mixTagsInterpolator : ['[[', ']]'],   // Interpolation for mix mode. Everything between these will become a tag, if is a valid Object\r\n    backspace           : true,           // false / true / \"edit\"\r\n    skipInvalid         : false,          // If `true`, do not add invalid, temporary, tags before automatically removing them\r\n    pasteAsTags         : true,           // automatically converts pasted text into tags. if \"false\", allows for further text editing\r\n\r\n    editTags            : {\r\n        clicks      : 2,                  // clicks to enter \"edit-mode\": 1 for single click. any other value is considered as double-click\r\n        keepInvalid : true                // keeps invalid edits as-is until `esc` is pressed while in focus\r\n    },              // 1 or 2 clicks to edit a tag. false/null for not allowing editing\r\n    transformTag        : ()=>{},         // Takes a tag input string as argument and returns a transformed value\r\n    trim                : true,           // whether or not the value provided should be trimmed, before being added as a tag\r\n    a11y: {\r\n        focusableTags: false\r\n    },\r\n\r\n    mixMode: {\r\n        insertAfterTag  : '\\u00A0',       // String/Node to inject after a tag has been added (see #588)\r\n    },\r\n\r\n    autoComplete: {\r\n        enabled: true,        // Tries to suggest the input's value while typing (match from whitelist) by adding the rest of term as grayed-out text\r\n        rightKey: false,      // If `true`, when Right key is pressed, use the suggested value to create a tag, else just auto-completes the input. in mixed-mode this is set to \"true\"\r\n        tabKey: false,        // If 'true`, pressing `tab` key would only auto-complete but not also convert to a tag (like `rightKey` does).\r\n    },\r\n\r\n    classNames: {\r\n        namespace            : 'tagify',\r\n        mixMode              : 'tagify--mix',\r\n        selectMode           : 'tagify--select',\r\n        input                : 'tagify__input',\r\n        focus                : 'tagify--focus',\r\n        tagNoAnimation       : 'tagify--noAnim',\r\n        tagInvalid           : 'tagify--invalid',\r\n        tagNotAllowed        : 'tagify--notAllowed',\r\n        scopeLoading         : 'tagify--loading',\r\n        hasMaxTags           : 'tagify--hasMaxTags',\r\n        hasNoTags            : 'tagify--noTags',\r\n        empty                : 'tagify--empty',\r\n        inputInvalid         : 'tagify__input--invalid',\r\n        dropdown             : 'tagify__dropdown',\r\n        dropdownWrapper      : 'tagify__dropdown__wrapper',\r\n        dropdownHeader       : 'tagify__dropdown__header',\r\n        dropdownFooter       : 'tagify__dropdown__footer',\r\n        dropdownItem         : 'tagify__dropdown__item',\r\n        dropdownItemActive   : 'tagify__dropdown__item--active',\r\n        dropdownItemHidden   : 'tagify__dropdown__item--hidden',\r\n        dropdownItemSelected : 'tagify__dropdown__item--selected',\r\n        dropdownInital       : 'tagify__dropdown--initial',\r\n        tag                  : 'tagify__tag',\r\n        tagText              : 'tagify__tag-text',\r\n        tagX                 : 'tagify__tag__removeBtn',\r\n        tagLoading           : 'tagify__tag--loading',\r\n        tagEditing           : 'tagify__tag--editable',\r\n        tagFlash             : 'tagify__tag--flash',\r\n        tagHide              : 'tagify__tag--hide',\r\n\r\n    },\r\n\r\n    dropdown: {\r\n        classname          : '',\r\n        enabled            : 2,      // minimum input characters to be typed for the suggestions dropdown to show\r\n        maxItems           : 10,\r\n        searchKeys         : [\"value\", \"searchBy\"],\r\n        fuzzySearch        : true,\r\n        caseSensitive      : false,\r\n        accentedSearch     : true,\r\n        includeSelectedTags: false,  // Should the suggestions list Include already-selected tags (after filtering)\r\n        escapeHTML         : true,   // escapes HTML entities in the suggestions' rendered text\r\n        highlightFirst     : true,   // highlights first-matched item in the list\r\n        closeOnSelect      : true,   // closes the dropdown after selecting an item, if `enabled:0` (which means always show dropdown)\r\n        clearOnSelect      : true,   // after selecting a suggetion, should the typed text input remain or be cleared\r\n        position           : 'all',  // 'manual' / 'text' / 'all'\r\n        appendTarget       : null    // defaults to document.body once DOM has been loaded\r\n    },\r\n\r\n    hooks: {\r\n        beforeRemoveTag: () => Promise.resolve(),\r\n        beforePaste: () => Promise.resolve(),\r\n        suggestionClick: () => Promise.resolve(),\r\n        beforeKeyDown: () => Promise.resolve(),\r\n    }\r\n}", "import { isObject, escapeHTML, extend, unaccent, logger } from './helpers'\n\n\n/**\n * Tagify's dropdown suggestions-related logic\n */\n\nexport default {\n    events : {\n        /**\n         * Events should only be binded when the dropdown is rendered and removed when isn't\n         * because there might be multiple Tagify instances on a certain page\n         * @param  {Boolean} bindUnbind [optional. true when wanting to unbind all the events]\n         */\n        binding( bindUnbind = true ){\n            // references to the \".bind()\" methods must be saved so they could be unbinded later\n            var _CB = this.dropdown.events.callbacks,\n                // callback-refs\n                _CBR = (this.listeners.dropdown = this.listeners.dropdown || {\n                    position          : this.dropdown.position.bind(this, null),\n                    onKeyDown         : _CB.onKeyDown.bind(this),\n                    onMouseOver       : _CB.onMouseOver.bind(this),\n                    onMouseLeave      : _CB.onMouseLeave.bind(this),\n                    onClick           : _CB.onClick.bind(this),\n                    onScroll          : _CB.onScroll.bind(this),\n                }),\n                action = bindUnbind ? 'addEventListener' : 'removeEventListener';\n\n            if( this.settings.dropdown.position != 'manual' ){\n                document[action]('scroll', _CBR.position, true)\n                window[action]('resize', _CBR.position)\n                window[action]('keydown', _CBR.onKeyDown)\n            }\n\n            this.DOM.dropdown[action]('mouseover', _CBR.onMouseOver)\n            this.DOM.dropdown[action]('mouseleave', _CBR.onMouseLeave)\n            this.DOM.dropdown[action]('mousedown', _CBR.onClick)\n            this.DOM.dropdown.content[action]('scroll', _CBR.onScroll)\n        },\n\n        callbacks : {\n            onKeyDown(e){\n                // ignore keys during IME composition\n                if( !this.state.hasFocus || this.state.composing )\n                    return\n\n                // get the \"active\" element, and if there was none (yet) active, use first child\n                var _s = this.settings,\n                    includeSelectedTags = _s.dropdown.includeSelectedTags,\n                    selectedElm = this.DOM.dropdown.querySelector(_s.classNames.dropdownItemActiveSelector),\n                    selectedElmData = this.dropdown.getSuggestionDataByNode(selectedElm),\n                    isMixMode = _s.mode == 'mix',\n                    isSelectMode = _s.mode == 'select';\n\n                _s.hooks.beforeKeyDown(e, {tagify:this})\n                    .then(result => {\n                        switch( e.key ){\n                            case 'ArrowDown' :\n                            case 'ArrowUp' :\n                            case 'Down' :  // >IE11\n                            case 'Up' : {  // >IE11\n                                e.preventDefault()\n                                var dropdownItems = this.dropdown.getAllSuggestionsRefs(),\n                                    actionUp = e.key == 'ArrowUp' || e.key == 'Up';\n\n                                if( selectedElm ) {\n                                    selectedElm = this.dropdown.getNextOrPrevOption(selectedElm, !actionUp)\n                                }\n\n                                // if no element was found OR current item is not a \"real\" item, loop\n                                if( !selectedElm || !selectedElm.matches(_s.classNames.dropdownItemSelector) ){\n                                    selectedElm = dropdownItems[actionUp ? dropdownItems.length - 1 : 0];\n                                }\n\n                                this.dropdown.highlightOption(selectedElm, true)\n                                // selectedElm.scrollIntoView({inline: 'nearest', behavior: 'smooth'})\n                                break;\n                            }\n                            case 'PageUp':\n                            case 'PageDown': {\n                                e.preventDefault()\n                                const dropdownItems = this.dropdown.getAllSuggestionsRefs()\n                                const itemsPerPage = Math.floor(this.DOM.dropdown.content.clientHeight / dropdownItems[0]?.offsetHeight) || 1\n                                const isPageUp = e.key === 'PageUp'\n\n                                if (selectedElm) {\n                                    const currentIndex = dropdownItems.indexOf(selectedElm)\n                                    const targetIndex = isPageUp\n                                        ? Math.max(0, currentIndex - itemsPerPage)\n                                        : Math.min(dropdownItems.length - 1, currentIndex + itemsPerPage)\n                                    selectedElm = dropdownItems[targetIndex]\n                                } else {\n                                    selectedElm = dropdownItems[0]\n                                }\n\n                                this.dropdown.highlightOption(selectedElm, true)\n                                break;\n                            }\n                            case 'Home':\n                            case 'End': {\n                                e.preventDefault()\n                                const dropdownItems = this.dropdown.getAllSuggestionsRefs()\n                                selectedElm = dropdownItems[e.key === 'Home' ? 0 : dropdownItems.length - 1]\n                                this.dropdown.highlightOption(selectedElm, true)\n                                break;\n                            }\n                            case 'Escape' :\n                            case 'Esc': // IE11\n                                this.dropdown.hide();\n                                break;\n\n                            case 'ArrowRight' :\n                                // do not continue if the left arrow key was pressed while typing, because assuming the user wants to bypass any of the below logic and edit the content without intervention.\n                                // also do not procceed if a tag should be created when the setting `autoComplete.rightKey` is set to `true`\n                                if( this.state.actions.ArrowLeft || _s.autoComplete.rightKey )\n                                    return\n                            case 'Tab' : {\n                                let shouldAutocompleteOnKey = !_s.autoComplete.rightKey || !_s.autoComplete.tabKey\n\n                                // in mix-mode, treat arrowRight like Enter key, so a tag will be created\n                                if( !isMixMode && !isSelectMode && selectedElm && shouldAutocompleteOnKey && !this.state.editing && selectedElmData ){\n                                    e.preventDefault() // prevents blur so the autocomplete suggestion will not become a tag\n                                    var value = this.dropdown.getMappedValue(selectedElmData)\n\n                                    this.state.autoCompleteData = selectedElmData;\n                                    this.input.autocomplete.set.call(this, value)\n                                    return false\n                                }\n                                return true\n                            }\n                            case 'Enter' : {\n                                e.preventDefault()\n\n                                // temporary set the \"actions\" state to indicate to the main \"blur\" event it shouldn't execute any if its logic.\n                                // a `100ms` is a good-enough timeout after some testing\n                                this.state.actions.selectOption = true;\n                                setTimeout(()=> this.state.actions.selectOption = false, 100)\n\n                                _s.hooks.suggestionClick(e, {tagify:this, tagData:selectedElmData, suggestionElm:selectedElm})\n                                    .then(() => {\n                                        if( selectedElm ){\n                                            var nextOrPrevOption = includeSelectedTags ? selectedElm : this.dropdown.getNextOrPrevOption(selectedElm, !actionUp);\n\n                                            this.dropdown.selectOption(selectedElm, e, () => {\n                                                // highlight next option\n                                                if(nextOrPrevOption) {\n                                                    var nextOrPrevOptionValue = nextOrPrevOption.getAttribute('value')\n                                                    nextOrPrevOption = this.dropdown.getSuggestionNodeByValue(nextOrPrevOptionValue)\n                                                    this.dropdown.highlightOption(nextOrPrevOption)\n                                                }\n                                            })\n\n                                            return\n                                        }\n                                        else\n                                            this.dropdown.hide()\n\n                                        if( !isMixMode )\n                                            this.addTags(this.state.inputText.trim(), true)\n                                    })\n                                    .catch(err => logger.warn(err))\n\n                                break;\n                            }\n                            case 'Backspace' : {\n                                if( isMixMode || this.state.editing.scope ) return;\n\n                                const value = this.input.raw.call(this)\n\n                                if( value == \"\" || value.charCodeAt(0) == 8203 ){\n                                    if( _s.backspace === true )\n                                        this.removeTags()\n                                    else if( _s.backspace == 'edit' )\n                                        setTimeout(this.editTag.bind(this), 0)\n                                }\n                            }\n                        }\n                    })\n            },\n\n            onMouseOver(e){\n                var ddItem = e.target.closest(this.settings.classNames.dropdownItemSelector)\n                // event delegation check\n                this.dropdown.highlightOption(ddItem)\n            },\n\n            onMouseLeave(e){\n                // de-highlight any previously highlighted option\n                this.dropdown.highlightOption()\n            },\n\n            onClick(e){\n                if( e.button != 0 || e.target == this.DOM.dropdown || e.target == this.DOM.dropdown.content ) return; // allow only mouse left-clicks\n\n                var selectedElm = e.target.closest(this.settings.classNames.dropdownItemSelector),\n                    selectedElmData = this.dropdown.getSuggestionDataByNode(selectedElm)\n\n                // temporary set the \"actions\" state to indicate to the main \"blur\" event it shouldn't execute any if its logic.\n                // a `100ms` is a good-enough timeout after some testing\n                this.state.actions.selectOption = true;\n                setTimeout(()=> this.state.actions.selectOption = false, 100)\n\n                this.settings.hooks.suggestionClick(e, {tagify:this, tagData:selectedElmData, suggestionElm:selectedElm})\n                    .then(() => {\n                        if( selectedElm )\n                            this.dropdown.selectOption(selectedElm, e)\n                        else\n                            this.dropdown.hide()\n                    })\n                    .catch(err => logger.warn(err))\n            },\n\n            onScroll(e){\n                var elm = e.target,\n                    pos = elm.scrollTop / (elm.scrollHeight - elm.parentNode.clientHeight) * 100;\n\n                this.trigger(\"dropdown:scroll\", {percentage:Math.round(pos)})\n            },\n        }\n    },\n\n    /**\n     * fill data into the suggestions list\n     * (mainly used to update the list when removing tags while the suggestions dropdown is visible, so they will be re-added to the list. not efficient)\n     */\n    refilter( value ){\n        value = value || this.state.dropdown.query || ''\n        this.suggestedListItems = this.dropdown.filterListItems(value)\n\n        this.dropdown.fill()\n\n        if( !this.suggestedListItems.length )\n            this.dropdown.hide()\n\n        this.trigger(\"dropdown:updated\", this.DOM.dropdown)\n    },\n\n    /**\n     * Given a suggestion-item, return the data associated with it\n     * @param {HTMLElement} tagElm\n     * @returns Object\n     */\n    getSuggestionDataByNode( tagElm ){\n        var item, value = tagElm && tagElm.getAttribute('value')\n\n        for(var i = this.suggestedListItems.length; i--; ) {\n            item = this.suggestedListItems[i]\n            if( isObject(item) && item.value == value ) return item\n            // for primitive whitelist items:\n            else if( item == value ) return {value: item}\n        }\n    },\n\n    getSuggestionNodeByValue( value ){\n        var dropdownItems = this.dropdown.getAllSuggestionsRefs()\n        return dropdownItems.find(item => item.getAttribute('value') === value);\n    },\n\n    getNextOrPrevOption(selected, next = true) {\n        var dropdownItems = this.dropdown.getAllSuggestionsRefs(),\n            selectedIdx = dropdownItems.findIndex(item => item === selected);\n\n        return next ? dropdownItems[selectedIdx + 1] : dropdownItems[selectedIdx - 1]\n    },\n\n    /**\n     * mark the currently active suggestion option\n     * @param {Object}  elm            option DOM node\n     * @param {Boolean} adjustScroll   when navigation with keyboard arrows (up/down), auto-scroll to always show the highlighted element\n     */\n    highlightOption( elm, adjustScroll ){\n        var className = this.settings.classNames.dropdownItemActive,\n            itemData;\n\n        // focus casues a bug in Firefox with the placeholder been shown on the input element\n        // if( this.settings.dropdown.position != 'manual' )\n        //     elm.focus();\n\n        if( this.state.ddItemElm ){\n            this.state.ddItemElm.classList.remove(className)\n            this.state.ddItemElm.removeAttribute(\"aria-selected\")\n        }\n\n        if( !elm ){\n            this.state.ddItemData = null\n            this.state.ddItemElm = null\n            this.input.autocomplete.suggest.call(this)\n            return;\n        }\n\n        itemData = this.dropdown.getSuggestionDataByNode(elm)\n        this.state.ddItemData = itemData\n        this.state.ddItemElm = elm\n\n        // this.DOM.dropdown.querySelectorAll(\".\" + this.settings.classNames.dropdownItemActive).forEach(activeElm => activeElm.classList.remove(className));\n        elm.classList.add(className);\n        elm.setAttribute(\"aria-selected\", true)\n\n        if( adjustScroll )\n            elm.parentNode.scrollTop = elm.clientHeight + elm.offsetTop - elm.parentNode.clientHeight\n\n        // Try to autocomplete the typed value with the currently highlighted dropdown item\n        if( this.settings.autoComplete ){\n            this.input.autocomplete.suggest.call(this, itemData)\n            this.dropdown.position() // suggestions might alter the height of the tagify wrapper because of unkown suggested term length that could drop to the next line\n        }\n    },\n\n    /**\n     * Create a tag from the currently active suggestion option\n     * @param {Object} elm  DOM node to select\n     * @param {Object} event The original Click event, if available (since keyboard ENTER key also triggers this method)\n     */\n    selectOption( elm, event, onSelect ){\n        var _s = this.settings,\n            includeSelectedTags = _s.dropdown.includeSelectedTags,\n            {clearOnSelect, closeOnSelect} = _s.dropdown;\n\n        if( !elm ) {\n            this.addTags(this.state.inputText, true)\n            closeOnSelect && this.dropdown.hide()\n            return;\n        }\n\n        event = event || {}\n\n        // if in edit-mode, do not continue but instead replace the tag's text.\n        // the scenario is that \"addTags\" was called from a dropdown suggested option selected while editing\n\n        var value = elm.getAttribute('value'),\n            isNoMatch = value == 'noMatch',\n            isMixMode = _s.mode == 'mix',\n            tagData = this.suggestedListItems.find(item => (item.value ?? item) == value)\n\n        // The below event must be triggered, regardless of anything else which might go wrong\n        this.trigger('dropdown:select', {data:tagData, elm, event})\n\n        if( !tagData && !isNoMatch ){\n            closeOnSelect && setTimeout(this.dropdown.hide.bind(this))\n            return\n        }\n\n        if( this.state.editing ) {\n            let normalizedTagData = this.normalizeTags([tagData])[0]\n            tagData = _s.transformTag.call(this, normalizedTagData) || normalizedTagData\n\n            // normalizing value, because \"tagData\" might be a string, and therefore will not be able to extend the object\n            this.onEditTagDone(null, extend({__isValid: true}, tagData))\n        }\n        // Tagify instances should re-focus to the input element once an option was selected, to allow continuous typing\n        else {\n            this[isMixMode ? \"addMixTags\" : \"addTags\"]([tagData || this.input.raw.call(this)], clearOnSelect)\n        }\n\n        if( !isMixMode && !this.DOM.input.parentNode )\n            return\n\n        setTimeout(() => {\n            this.DOM.input.focus()\n            this.toggleFocusClass(true)\n        })\n\n        closeOnSelect && setTimeout(this.dropdown.hide.bind(this))\n\n        // execute these tasks once a suggestion has been selected\n        if(includeSelectedTags) {\n            onSelect && onSelect()\n        }\n\n        // if the selected suggestion is removed after being selected, more things things needs to be done:\n        else {\n            elm.addEventListener('transitionend', () => {\n                this.dropdown.fillHeaderFooter()\n\n                setTimeout(() => {\n                    elm.remove()\n                    this.dropdown.refilter()\n                    onSelect && onSelect()\n                }, 100)\n            }, {once: true})\n\n            // hide selected suggestion\n            elm.classList.add(this.settings.classNames.dropdownItemHidden)\n        }\n    },\n\n    // adds all the suggested items, including the ones which are not currently rendered,\n    // unless specified otherwise (by the \"onlyRendered\" argument)\n    selectAll( onlyRendered ){\n        // having suggestedListItems with items messes with \"normalizeTags\" when wanting\n        // to add all tags\n        this.suggestedListItems.length = 0;\n        this.dropdown.hide()\n\n        this.dropdown.filterListItems('');\n\n        var tagsToAdd = this.dropdown.filterListItems('');\n\n        if( !onlyRendered )\n            tagsToAdd = this.state.dropdown.suggestions\n\n        // some whitelist items might have already been added as tags so when addings all of them,\n        // skip adding already-added ones, so best to use \"filterListItems\" method over \"settings.whitelist\"\n        this.addTags(tagsToAdd, true)\n        return this\n    },\n\n    /**\n     * returns an HTML string of the suggestions' list items\n     * @param {String} value string t\n     * o filter the whitelist by\n     * @param {Object} options \"exact\" - for exact complete match\n     * @return {Array} list of filtered whitelist items according to the settings provided and current value\n     */\n    filterListItems( value, options ){\n        var _s = this.settings,\n            _sd = _s.dropdown,\n            options = options || {},\n            list = [],\n            exactMatchesList = [],\n            whitelist = _s.whitelist,\n            suggestionsCount = _sd.maxItems >= 0 ? _sd.maxItems : Infinity,\n            includeSelectedTags = _sd.includeSelectedTags,\n            hasCustomSort = typeof _sd.sortby == 'function',\n            searchKeys = _sd.searchKeys,\n            whitelistItem,\n            valueIsInWhitelist,\n            searchBy,\n            isDuplicate,\n            niddle,\n            i = 0;\n\n        value = (_s.mode == 'select' && this.value.length && this.value[0][_s.tagTextProp] == value\n            ? '' // do not filter if the tag, which is already selecetd in \"select\" mode, is the same as the typed text\n            : value);\n\n        if( !value || !searchKeys.length ){\n            list = includeSelectedTags\n                ? whitelist\n                : whitelist.filter(item => !this.isTagDuplicate( isObject(item) ? item.value : item )) // don't include tags which have already been added.\n\n            var filteredList = hasCustomSort\n                ? _sd.sortby(list, niddle)\n                : list.slice(0, suggestionsCount); // respect \"maxItems\" dropdown setting\n\n            this.state.dropdown.suggestions = filteredList;\n\n            return filteredList;\n        }\n\n        niddle = _sd.caseSensitive\n            ? \"\"+value\n            : (\"\"+value).toLowerCase()\n\n        // checks if ALL of the words in the search query exists in the current whitelist item, regardless of their order\n        function stringHasAll(s, query){\n            return query.toLowerCase().split(' ').every(q => s.includes(q.toLowerCase()))\n        }\n\n        for( ; i < whitelist.length; i++ ){\n            let startsWithMatch, exactMatch;\n\n            whitelistItem = whitelist[i] instanceof Object ? whitelist[i] : { value:whitelist[i] } //normalize value as an Object\n\n            let itemWithoutSearchKeys = !Object.keys(whitelistItem).some(k => searchKeys.includes(k) ),\n                _searchKeys = itemWithoutSearchKeys ? [\"value\"] : searchKeys\n\n            if( _sd.fuzzySearch && !options.exact ){\n                searchBy = _searchKeys.reduce((values, k) => values + \" \" + (whitelistItem[k]||\"\"), \"\").toLowerCase().trim()\n\n                if( _sd.accentedSearch ){\n                    searchBy = unaccent(searchBy)\n                    niddle = unaccent(niddle)\n                }\n\n                startsWithMatch = searchBy.indexOf(niddle) == 0\n                exactMatch = searchBy === niddle\n                valueIsInWhitelist = stringHasAll(searchBy, niddle)\n            }\n\n            else {\n                startsWithMatch = true;\n                valueIsInWhitelist = _searchKeys.some(k => {\n                    var v = '' + (whitelistItem[k] || '') // if key exists, cast to type String\n\n                    if( _sd.accentedSearch ){\n                        v = unaccent(v)\n                        niddle = unaccent(niddle)\n                    }\n\n                    if( !_sd.caseSensitive )\n                        v = v.toLowerCase()\n\n                    exactMatch = v === niddle\n\n                    return options.exact\n                        ? v === niddle\n                        : v.indexOf(niddle) == 0\n                })\n            }\n\n            isDuplicate = !_sd.includeSelectedTags && this.isTagDuplicate( isObject(whitelistItem) ? whitelistItem.value : whitelistItem )\n\n            // match for the value within each \"whitelist\" item\n            if( valueIsInWhitelist && !isDuplicate )\n                if( exactMatch && startsWithMatch)\n                    exactMatchesList.push(whitelistItem)\n                else if( _sd.sortby == 'startsWith' && startsWithMatch )\n                    list.unshift(whitelistItem)\n                else\n                    list.push(whitelistItem)\n        }\n\n        this.state.dropdown.suggestions = exactMatchesList.concat(list);\n\n        // custom sorting function\n        var filteredList = hasCustomSort\n            ? _sd.sortby(exactMatchesList.concat(list), niddle)\n            : exactMatchesList.concat(list).slice(0, suggestionsCount)\n\n        this.state.dropdown.suggestions = filteredList;\n        return filteredList\n    },\n\n    /**\n     * Returns the final value of a tag data (object) with regards to the \"mapValueTo\" dropdown setting\n     * @param {Object} tagData\n     * @returns\n     */\n    getMappedValue(tagData){\n        var mapValueTo = this.settings.dropdown.mapValueTo,\n            value = (mapValueTo\n                ? typeof mapValueTo == 'function' ? mapValueTo(tagData) : (tagData[mapValueTo] || tagData.value)\n                : tagData.value);\n\n        return value\n    },\n\n    /**\n     * Creates the dropdown items' HTML\n     * @param  {Array} sugegstionsList  [Array of Objects]\n     * @return {String}\n     */\n    createListHTML( sugegstionsList ){\n        return extend([], sugegstionsList).map((suggestion, idx) => {\n            if( typeof suggestion == 'string' || typeof suggestion == 'number' )\n                suggestion = {value:suggestion}\n\n            var mappedValue = this.dropdown.getMappedValue(suggestion);\n\n            mappedValue = (typeof mappedValue == 'string' && this.settings.dropdown.escapeHTML)\n                ? escapeHTML(mappedValue)\n                : mappedValue;\n\n            return this.settings.templates.dropdownItem.apply(this, [{...suggestion, mappedValue}, this])\n        }).join(\"\")\n    }\n}", "import { sameStr, isObject, minify, getNodeHeight, getCaretGlobalPosition } from './helpers'\nimport suggestionsMethods from './suggestions'\n\nexport function initDropdown(){\n    this.dropdown = {}\n\n    // auto-bind \"this\" to all the dropdown methods\n    for( let p in this._dropdown )\n        this.dropdown[p] = typeof this._dropdown[p] === 'function'\n            ? this._dropdown[p].bind(this)\n            : this._dropdown[p]\n\n    this.dropdown.refs()\n    this.DOM.dropdown.__tagify = this\n}\n\nexport default {\n    ...suggestionsMethods,\n\n    refs(){\n        this.DOM.dropdown = this.parseTemplate('dropdown', [this.settings])\n        this.DOM.dropdown.content = this.DOM.dropdown.querySelector(\"[data-selector='tagify-suggestions-wrapper']\")\n    },\n\n    getHeaderRef(){\n        return this.DOM.dropdown.querySelector(\"[data-selector='tagify-suggestions-header']\")\n    },\n\n    getFooterRef(){\n        return this.DOM.dropdown.querySelector(\"[data-selector='tagify-suggestions-footer']\")\n    },\n\n    getAllSuggestionsRefs(){\n        return [...this.DOM.dropdown.content.querySelectorAll(this.settings.classNames.dropdownItemSelector)]\n    },\n\n    /**\n     * shows the suggestions select box\n     * @param {String} value [optional, filter the whitelist by this value]\n     */\n    show( value ){\n        var _s = this.settings,\n            firstListItem,\n            firstListItemValue,\n            allowNewTags = _s.mode == 'mix' && !_s.enforceWhitelist,\n            noWhitelist =  !_s.whitelist || !_s.whitelist.length,\n            noMatchListItem,\n            isManual = _s.dropdown.position == 'manual';\n\n        // if text still exists in the input, and `show` method has no argument, then the input's text should be used\n        value = value === undefined ? this.state.inputText : value\n\n        // ⚠️ Do not render suggestions list  if:\n        // 1. there's no whitelist (can happen while async loading) AND new tags arn't allowed\n        // 2. dropdown is disabled\n        // 3. loader is showing (controlled outside of this code)\n        if( (noWhitelist && !allowNewTags && !_s.templates.dropdownItemNoMatch)\n            || _s.dropdown.enabled === false\n            || this.state.isLoading\n            || this.settings.readonly )\n            return;\n\n        clearTimeout(this.dropdownHide__bindEventsTimeout)\n\n        // if no value was supplied, show all the \"whitelist\" items in the dropdown\n        // @type [Array] listItems\n        this.suggestedListItems = this.dropdown.filterListItems(value)\n\n        // trigger at this exact point to let the developer the chance to manually set \"this.suggestedListItems\"\n        if( value && !this.suggestedListItems.length ){\n            this.trigger('dropdown:noMatch', value)\n\n            if( _s.templates.dropdownItemNoMatch )\n                noMatchListItem = _s.templates.dropdownItemNoMatch.call(this, {value})\n        }\n\n        // if \"dropdownItemNoMatch\" was not defined, procceed regular flow.\n        //\n        if( !noMatchListItem ){\n            // in mix-mode, if the value isn't included in the whilelist & \"enforceWhitelist\" setting is \"false\",\n            // then add a custom suggestion item to the dropdown\n            if( this.suggestedListItems.length ){\n                if( value   &&   allowNewTags   &&   !this.state.editing.scope  &&  !sameStr(this.suggestedListItems[0].value, value) )\n                    this.suggestedListItems.unshift({value})\n            }\n            else{\n                if( value   &&   allowNewTags  &&  !this.state.editing.scope ){\n                    this.suggestedListItems = [{value}]\n                }\n                // hide suggestions list if no suggestion matched\n                else{\n                    this.input.autocomplete.suggest.call(this);\n                    this.dropdown.hide()\n                    return;\n                }\n            }\n\n            firstListItem =  this.suggestedListItems[0]\n            firstListItemValue = \"\"+(isObject(firstListItem) ? firstListItem.value : firstListItem)\n\n            if( _s.autoComplete && firstListItemValue ){\n                // only fill the sugegstion if the value of the first list item STARTS with the input value (regardless of \"fuzzysearch\" setting)\n                if( firstListItemValue.indexOf(value) == 0 )\n                    this.input.autocomplete.suggest.call(this, firstListItem)\n            }\n        }\n\n        this.dropdown.fill(noMatchListItem)\n\n        if( _s.dropdown.highlightFirst ) {\n            this.dropdown.highlightOption(this.DOM.dropdown.content.querySelector(_s.classNames.dropdownItemSelector))\n        }\n\n        // bind events, exactly at this stage of the code. \"dropdown.show\" method is allowed to be\n        // called multiple times, regardless if the dropdown is currently visible, but the events-binding\n        // should only be called if the dropdown wasn't previously visible.\n        if( !this.state.dropdown.visible )\n            // timeout is needed for when pressing arrow down to show the dropdown,\n            // so the key event won't get registered in the dropdown events listeners\n            setTimeout(this.dropdown.events.binding.bind(this))\n\n        // set the dropdown visible state to be the same as the searched value.\n        // MUST be set *before* position() is called\n        this.state.dropdown.visible = value || true\n        this.state.dropdown.query = value\n\n        this.setStateSelection()\n\n        // try to positioning the dropdown (it might not yet be on the page, doesn't matter, next code handles this)\n        if( !isManual ){\n            // a slight delay is needed if the dropdown \"position\" setting is \"text\", and nothing was typed in the input,\n            // so sadly the \"getCaretGlobalPosition\" method doesn't recognize the caret position without this delay\n            setTimeout(() => {\n                this.dropdown.position()\n                this.dropdown.render()\n            })\n        }\n\n        // a delay is needed because of the previous delay reason.\n        // this event must be fired after the dropdown was rendered & positioned\n        setTimeout(() => {\n            this.trigger(\"dropdown:show\", this.DOM.dropdown)\n        })\n    },\n\n    /**\n     * Hides the dropdown (if it's not managed manually by the developer)\n     * @param {Boolean} overrideManual\n     */\n    hide( overrideManual ){\n        var {scope, dropdown} = this.DOM,\n            isManual = this.settings.dropdown.position == 'manual' && !overrideManual;\n\n        // if there's no dropdown, this means the dropdown events aren't binded\n        if( !dropdown || !document.body.contains(dropdown) || isManual ) return;\n\n        window.removeEventListener('resize', this.dropdown.position)\n        this.dropdown.events.binding.call(this, false) // unbind all events\n\n        // if the dropdown is open, and the input (scope) is clicked,\n        // the dropdown should be now \"close\", and the next click (on the scope)\n        // should re-open it, and without a timeout, clicking to close will re-open immediately\n        //  clearTimeout(this.dropdownHide__bindEventsTimeout)\n        //  this.dropdownHide__bindEventsTimeout = setTimeout(this.events.binding.bind(this), 250)  // re-bind main events\n\n\n        scope.setAttribute(\"aria-expanded\", false)\n        dropdown.parentNode.removeChild(dropdown)\n\n        // scenario: clicking the scope to show the dropdown, clicking again to hide -> calls dropdown.hide() and then re-focuses the input\n        // which casues another onFocus event, which checked \"this.state.dropdown.visible\" and see it as \"false\" and re-open the dropdown\n        setTimeout(() => {\n            this.state.dropdown.visible = false\n        }, 100)\n\n        this.state.dropdown.query =\n        this.state.ddItemData =\n        this.state.ddItemElm =\n        this.state.selection = null\n\n        // if the user closed the dropdown (in mix-mode) while a potential tag was detected, flag the current tag\n        // so the dropdown won't be shown on following user input for that \"tag\"\n        if( this.state.tag && this.state.tag.value.length ){\n            this.state.flaggedTags[this.state.tag.baseOffset] = this.state.tag\n        }\n\n        this.trigger(\"dropdown:hide\", dropdown)\n\n        return this\n    },\n\n    /**\n     * Toggles dropdown show/hide\n     * @param {Boolean} show forces the dropdown to show\n     */\n    toggle(show){\n        this.dropdown[this.state.dropdown.visible && !show ? 'hide' : 'show']()\n    },\n\n    getAppendTarget() {\n        var _sd = this.settings.dropdown;\n        return typeof _sd.appendTarget === 'function' ? _sd.appendTarget() : _sd.appendTarget;\n    },\n\n    render(){\n        // let the element render in the DOM first, to accurately measure it.\n        // this.DOM.dropdown.style.cssText = \"left:-9999px; top:-9999px;\";\n        var ddHeight = getNodeHeight(this.DOM.dropdown),\n            _s = this.settings,\n            appendTarget = this.dropdown.getAppendTarget();\n\n        if( _s.dropdown.enabled === false ) return this;\n\n        this.DOM.scope.setAttribute(\"aria-expanded\", true)\n\n        // if the dropdown has yet to be appended to the DOM,\n        // append the dropdown to the body element & handle events\n        if( !document.body.contains(this.DOM.dropdown) ){\n            this.DOM.dropdown.classList.add( _s.classNames.dropdownInital )\n            this.dropdown.position(ddHeight)\n            appendTarget.appendChild(this.DOM.dropdown)\n\n            setTimeout(() =>\n                this.DOM.dropdown.classList.remove( _s.classNames.dropdownInital )\n            )\n        }\n\n        return this\n    },\n\n    /**\n     * re-renders the dropdown content element (see \"dropdownContent\" in templates file)\n     * @param {String/Array} HTMLContent - optional\n     */\n    fill( HTMLContent ){\n        HTMLContent = typeof HTMLContent == 'string'\n            ? HTMLContent\n            : this.dropdown.createListHTML(HTMLContent || this.suggestedListItems)\n\n        var dropdownContent = this.settings.templates.dropdownContent.call(this, HTMLContent)\n\n        this.DOM.dropdown.content.innerHTML = minify(dropdownContent)\n    },\n\n    /**\n     * Re-renders only the header & footer.\n     * Used when selecting a suggestion and it is wanted that the suggestions dropdown stays open.\n     * Since the list of sugegstions is not being re-rendered completely every time a suggestion is selected (the item is transitioned-out)\n     * then the header & footer should be kept in sync with the suggestions data change\n     */\n    fillHeaderFooter(){\n        var suggestions = this.dropdown.filterListItems(this.state.dropdown.query),\n            newHeaderElem = this.parseTemplate('dropdownHeader', [suggestions]),\n            newFooterElem = this.parseTemplate('dropdownFooter', [suggestions]),\n            headerRef = this.dropdown.getHeaderRef(),\n            footerRef = this.dropdown.getFooterRef();\n\n        newHeaderElem && headerRef?.parentNode.replaceChild(newHeaderElem, headerRef)\n        newFooterElem && footerRef?.parentNode.replaceChild(newFooterElem, footerRef)\n    },\n\n    /**\n     * dropdown positioning logic\n     * (shown above/below or next to typed text for mix-mode)\n     */\n    position( ddHeight ){\n        var _sd = this.settings.dropdown,\n            appendTarget = this.dropdown.getAppendTarget();\n\n        if( _sd.position == 'manual' || !appendTarget) return\n\n        var rect, top, bottom, left, width, ancestorsOffsets,\n            isPlacedAbove, hasSpaceOnRight,\n            cssTop, cssLeft,\n            ddElm = this.DOM.dropdown,\n            isRTL = _sd.RTL,\n            isDefaultAppendTarget = appendTarget === document.body,\n            isSelfAppended = appendTarget === this.DOM.scope,\n            appendTargetScrollTop = isDefaultAppendTarget ? window.pageYOffset : appendTarget.scrollTop,\n            root = document.fullscreenElement || document.webkitFullscreenElement || document.documentElement,\n            viewportHeight = root.clientHeight,\n            viewportWidth = Math.max(root.clientWidth || 0, window.innerWidth || 0),\n            positionTo = viewportWidth > 480 ? _sd.position : 'all',\n            ddTarget = this.DOM[positionTo == 'input' ? 'input' : 'scope'],\n            MIN_DISTANCE_FROM_VIEWPORT_H_EDGE = 120;\n\n        ddHeight = ddHeight || ddElm.clientHeight\n\n        function getAncestorsOffsets(p){\n            var top = 0, left = 0;\n\n            p = p.parentNode;\n\n            // when in element-fullscreen mode, do not go above the fullscreened-element\n            while(p && p != root){\n                top += p.offsetTop || 0\n                left += p.offsetLeft || 0\n                p = p.parentNode\n            }\n\n            return {top, left};\n        }\n\n        function getAccumulatedAncestorsScrollTop() {\n            var scrollTop = 0,\n                p = _sd.appendTarget.parentNode;\n\n            while(p){\n                scrollTop += p.scrollTop || 0;\n                p = p.parentNode\n            }\n\n            return scrollTop;\n        }\n\n        if( !this.state.dropdown.visible ) return\n\n        if( positionTo == 'text' ){\n            rect   = getCaretGlobalPosition()\n            bottom = rect.bottom\n            top    = rect.top\n            left   = rect.left\n            width  = 'auto'\n        }\n\n        else{\n            ancestorsOffsets = getAncestorsOffsets(appendTarget)\n            rect   = ddTarget.getBoundingClientRect()\n            top    = isSelfAppended ? -1 : rect.top - ancestorsOffsets.top\n            bottom = (isSelfAppended ? rect.height : rect.bottom - ancestorsOffsets.top) - 1\n            left   = isSelfAppended ? -1 : rect.left - ancestorsOffsets.left\n            width  = rect.width + 'px'\n        }\n\n        // if the \"append target\" isn't the default, correct the `top` variable by ignoring any scrollTop of the target's Ancestors\n        if( !isDefaultAppendTarget ) {\n            let accumulatedAncestorsScrollTop = getAccumulatedAncestorsScrollTop()\n            top += accumulatedAncestorsScrollTop\n            bottom += accumulatedAncestorsScrollTop\n        }\n\n        top = Math.floor(top)\n        bottom = Math.ceil(bottom)\n\n        isPlacedAbove = _sd.placeAbove ?? viewportHeight - rect.bottom < ddHeight\n        hasSpaceOnRight = viewportWidth - left < MIN_DISTANCE_FROM_VIEWPORT_H_EDGE;\n\n        // flip vertically if there is no space for the dropdown below the input\n        cssTop = (isPlacedAbove ? top : bottom) + appendTargetScrollTop;\n\n        // \"pageXOffset\" property is an alias for \"scrollX\"\n        cssLeft = (left + (isRTL ? (rect.width || 0) : 0) + window.pageXOffset);\n\n        // check if there's enough space on the right-side of the viewport,\n        // because the element is positioned to the right of the caret, which might need to be changed.\n        if( positionTo == 'text' && hasSpaceOnRight ) {\n            cssLeft = `right: 0;`;\n        }\n        else {\n            cssLeft = `left: ${cssLeft}px;`;\n        }\n\n        // rtl = rtl ?? viewportWidth -\n        ddElm.style.cssText = `${cssLeft} top: ${cssTop}px; min-width: ${width}; max-width: ${width}`;\n\n        ddElm.setAttribute('placement', isPlacedAbove ? 'top' : 'bottom')\n        ddElm.setAttribute('position', positionTo)\n    },\n}\n", "const VERSION = 1; // current version of persisted data. if code change breaks persisted data, verison number should be bumped.\nconst STORE_KEY = '@yaireo/tagify/'\n\nexport const getPersistedData = id => key => {\n    if( !id ) return;\n\n    // if \"persist\" is \"false\", do not save to localstorage\n    let customKey = '/'+key,\n        persistedData,\n        currentStorageVersion = localStorage?.getItem(STORE_KEY + id + '/v')\n\n    if( currentStorageVersion === VERSION){\n        try{ persistedData = JSON.parse(localStorage[STORE_KEY + id + customKey]) }\n        catch(err){}\n    }\n\n    return persistedData\n}\n\nexport const setPersistedData = id => {\n    if( !id ) return () => {};\n\n    // for storage invalidation\n    localStorage?.setItem(STORE_KEY + id + '/v', VERSION)\n\n    return (data, key) => {\n        let customKey = '/'+key,\n            persistedData = JSON.stringify(data)\n\n        if( data && key ){\n            localStorage?.setItem(STORE_KEY + id + customKey, persistedData)\n            dispatchEvent( new Event('storage') )\n        }\n    }\n}\n\nexport const clearPersistedData = id => key => {\n    const base = STORE_KEY + '/' + id + '/';\n\n    // delete specific key in the storage\n    if( key )\n        localStorage.removeItem(base + key)\n\n    // delete all keys in the storage with a specific tagify id\n    else {\n        for(let k in localStorage)\n            if( k.includes(base) )\n                localStorage.removeItem(k)\n    }\n}\n", "export default {\r\n    empty      : \"empty\",\r\n    exceed     : \"number of tags exceeded\",\r\n    pattern    : \"pattern mismatch\",\r\n    duplicate  : \"already exists\",\r\n    notAllowed : \"not allowed\"\r\n}", "import {ZERO_WIDTH_UNICODE_CHAR} from './constants'\n\nexport default {\n    /**\n     *\n     * @param {DOM Object} input     Original input DOm element\n     * @param {Object}     settings  Tagify instance settings Object\n     */\n    wrapper(input, _s){\n        return `<tags class=\"${_s.classNames.namespace} ${_s.mode ? `${_s.classNames[_s.mode + \"Mode\"]}` : \"\"} ${input.className}\"\n                    ${_s.readonly ? 'readonly' : ''}\n                    ${_s.disabled ? 'disabled' : ''}\n                    ${_s.required ? 'required' : ''}\n                    ${_s.mode === 'select' ? \"spellcheck='false'\" : ''}\n                    tabIndex=\"-1\">\n                    ${this.settings.templates.input.call(this)}\n                ${ZERO_WIDTH_UNICODE_CHAR}\n        </tags>`\n    },\n\n    input() {\n        var _s = this.settings,\n            placeholder = _s.placeholder || ZERO_WIDTH_UNICODE_CHAR;\n\n        return `<span ${!_s.readonly && _s.userInput ? 'contenteditable' : ''} data-can-editable tabIndex=\"0\" data-placeholder=\"${placeholder}\" aria-placeholder=\"${_s.placeholder || ''}\"\n                    class=\"${_s.classNames.input}\"\n                    role=\"textbox\"\n                    autocapitalize=\"false\"\n                    autocorrect=\"off\"\n                    aria-autocomplete=\"both\"\n                    aria-multiline=\"${_s.mode=='mix'?true:false}\"></span>`\n    },\n\n    tag(tagData, {settings: _s}){\n        return `<tag title=\"${(tagData.title || tagData.value)}\"\n                    contenteditable='false'\n                    tabIndex=\"${_s.a11y.focusableTags ? 0 : -1}\"\n                    class=\"${_s.classNames.tag} ${tagData.class || \"\"}\"\n                    ${this.getAttributes(tagData)}>\n            <x title='' tabIndex=\"${_s.a11y.focusableTags ? 0 : -1}\" class=\"${_s.classNames.tagX}\" role='button' aria-label='remove tag'></x>\n            <div>\n                <span ${_s.mode === 'select' && _s.userInput ? \"contenteditable='true'\" : ''} autocapitalize=\"false\" autocorrect=\"off\" spellcheck='false' class=\"${_s.classNames.tagText}\">${tagData[_s.tagTextProp] || tagData.value}</span>\n            </div>\n        </tag>`\n    },\n\n    dropdown(settings){\n        var _sd = settings.dropdown,\n            isManual = _sd.position == 'manual';\n\n        return `<div class=\"${isManual ? '' : settings.classNames.dropdown } ${_sd.classname}\" role=\"listbox\" aria-labelledby=\"dropdown\" dir=\"${_sd.RTL ? 'rtl' : ''}\">\n                    <div data-selector='tagify-suggestions-wrapper' class=\"${settings.classNames.dropdownWrapper}\"></div>\n                </div>`\n    },\n\n    dropdownContent(HTMLContent) {\n        var _t = this.settings.templates,\n            suggestions = this.state.dropdown.suggestions;\n\n        return `\n            ${_t.dropdownHeader.call(this, suggestions)}\n            ${HTMLContent}\n            ${_t.dropdownFooter.call(this, suggestions)}\n        `\n    },\n\n    dropdownItem(item){\n        return `<div ${this.getAttributes(item)}\n                    class='${this.settings.classNames.dropdownItem} ${this.isTagDuplicate(item.value) ? this.settings.classNames.dropdownItemSelected: \"\"} ${item.class || \"\"}'\n                    tabindex=\"0\"\n                    role=\"option\">${item.mappedValue || item.value}</div>`\n    },\n\n    /**\n     * @param {Array} suggestions An array of all the matched suggested items, including those which were sliced away due to the \"dropdown.maxItems\" setting\n     */\n    dropdownHeader(suggestions){\n        return `<header data-selector='tagify-suggestions-header' class=\"${this.settings.classNames.dropdownHeader}\"></header>`\n    },\n\n    dropdownFooter(suggestions){\n        var hasMore = suggestions.length - this.settings.dropdown.maxItems;\n\n        return hasMore > 0\n            ? `<footer data-selector='tagify-suggestions-footer' class=\"${this.settings.classNames.dropdownFooter}\">\n                ${hasMore} more items. Refine your search.\n            </footer>`\n            : '';\n    },\n\n    dropdownItemNoMatch: null\n}\n", "import { decode, extend, getfirstTextNode, isChromeAndroidBrowser, isNodeTag, isWithinNodeTag, injectAtCaret, getSetTagData, fixCaretBetweenTags, placeCaretAfterNode } from './helpers'\nimport {ZERO_WIDTH_CHAR} from './constants'\n\nexport function triggerChangeEvent(){\n    if( this.settings.mixMode.integrated ) return;\n\n    var inputElm = this.DOM.originalInput,\n        changed = this.state.lastOriginalValueReported !== inputElm.value,\n        event = new CustomEvent(\"change\", {bubbles: true}); // must use \"CustomEvent\" and not \"Event\" to support IE\n\n    if( !changed ) return;\n\n    // must apply this BEFORE triggering the simulated event\n    this.state.lastOriginalValueReported = inputElm.value\n\n    // React hack: https://github.com/facebook/react/issues/11488\n    event.simulated = true\n    if (inputElm._valueTracker)\n        inputElm._valueTracker.setValue(Math.random())\n\n    inputElm.dispatchEvent(event)\n\n    // also trigger a Tagify event\n    this.trigger(\"change\", this.state.lastOriginalValueReported)\n\n    // React, for some reason, clears the input's value after \"dispatchEvent\" is fired\n    inputElm.value = this.state.lastOriginalValueReported\n}\n\nexport default {\n    // bind custom events which were passed in the settings\n    customBinding(){\n        this.customEventsList.forEach(name => {\n            this.on(name, this.settings.callbacks[name])\n        })\n    },\n\n    binding( bindUnbind = true ){\n        var _s = this.settings,\n            _CB = this.events.callbacks,\n            _CBR,\n            action = bindUnbind ? 'addEventListener' : 'removeEventListener';\n\n        // do not allow the main events to be bound more than once\n        if( (this.state.mainEvents && bindUnbind ) || _s.disabled || _s.readonly )\n            return;\n\n\n        // set the binding state of the main events, so they will not be bound more than once\n        this.state.mainEvents = bindUnbind;\n\n        // everything inside gets executed only once-per instance\n        if( bindUnbind && !this.listeners.main ){\n            this.events.bindGlobal.call(this);\n\n            if( this.settings.isJQueryPlugin )\n                jQuery(this.DOM.originalInput).on('tagify.removeAllTags', this.removeAllTags.bind(this))\n        }\n\n        // setup callback references so events could be removed later\n        _CBR = (this.listeners.main = this.listeners.main || {\n            keydown          : ['input', _CB.onKeydown.bind(this)],\n            click            : ['scope', _CB.onClickScope.bind(this)],\n            dblclick         : _s.mode != 'select' && ['scope', _CB.onDoubleClickScope.bind(this)],\n            paste            : ['input', _CB.onPaste.bind(this)],\n            drop             : ['input', _CB.onDrop.bind(this)],\n            compositionstart : ['input', _CB.onCompositionStart.bind(this)],\n            compositionend   : ['input', _CB.onCompositionEnd.bind(this)]\n        })\n\n        for( var eventName in _CBR ){\n            _CBR[eventName] && this.DOM[_CBR[eventName][0]][action](eventName, _CBR[eventName][1]);\n        }\n\n        // observers\n        var inputMutationObserver = this.listeners.main.inputMutationObserver || new MutationObserver(_CB.onInputDOMChange.bind(this));\n\n        // cleaup just-in-case\n        inputMutationObserver.disconnect()\n\n        // observe stuff\n        if( _s.mode == 'mix' ) {\n            inputMutationObserver.observe(this.DOM.input, {childList:true})\n        }\n\n        this.events.bindOriginaInputListener.call(this)\n\n        if( bindUnbind ) {\n            this.listeners.main = undefined\n        }\n    },\n\n    bindOriginaInputListener(delay) {\n        const DELAY = (delay||0) + 500\n\n        if(!this.listeners.main) return\n        // listen to original input changes (unfortunetly this is the best way...)\n        // https://stackoverflow.com/a/1949416/104380\n        clearInterval(this.listeners.main.originalInputValueObserverInterval)\n        this.listeners.main.originalInputValueObserverInterval = setInterval(this.events.callbacks.observeOriginalInputValue.bind(this), DELAY)\n    },\n\n    bindGlobal( unbind ) {\n        var _CB = this.events.callbacks,\n            action = unbind ? 'removeEventListener' : 'addEventListener',\n            e;\n\n        if( !this.listeners || (!unbind  && this.listeners.global) ) return; // do not re-bind\n\n        // these events are global and should never be unbinded, unless the instance is destroyed:\n        this.listeners.global = this.listeners.global || [\n            {\n                type: this.isIE ? 'keydown' : 'input',  // IE cannot register \"input\" events on contenteditable elements, so the \"keydown\" should be used instead..\n                target: this.DOM.input,\n                cb: _CB[this.isIE ? 'onInputIE' : 'onInput'].bind(this)\n            },\n            {\n                type: 'keydown',\n                target: window,\n                cb: _CB.onWindowKeyDown.bind(this)\n            },\n            {\n                type: 'focusin',\n                target: this.DOM.scope,\n                cb: _CB.onFocusBlur.bind(this)\n            },\n            {\n                type: 'focusout',\n                target: this.DOM.scope,\n                cb: _CB.onFocusBlur.bind(this)\n            },\n            {\n                type: 'click',\n                target: document,\n                cb: _CB.onClickAnywhere.bind(this),\n                useCapture: true\n            },\n        ]\n\n        for( e of this.listeners.global )\n            e.target[action](e.type, e.cb, !!e.useCapture);\n\n        if( unbind ) {\n            this.listeners.global = undefined\n        }\n    },\n\n    unbindGlobal() {\n        this.events.bindGlobal.call(this, true);\n    },\n\n    /**\n     * DOM events callbacks\n     */\n    callbacks : {\n        onFocusBlur(e){\n            // when focusing within a tag which is in edit-mode\n            var _s = this.settings,\n                nodeTag = isWithinNodeTag.call(this, e.relatedTarget),\n                targetIsTagNode = isNodeTag.call(this, e.target),\n                isTargetXBtn = e.target.classList.contains(_s.classNames.tagX),\n                isFocused = e.type == 'focusin',\n                lostFocus = e.type == 'focusout';\n\n            // when focusing within a tag which is in edit-mode, only and specifically on the text-part of the tag node\n            // and not the X button or any other custom element thatmight be there\n            // var tagTextNode = e.target?.closest(this.settings.classNames.tagTextSelector)\n\n            if(isTargetXBtn && _s.mode != 'mix' && _s.focusInputOnRemove) {\n                this.DOM.input.focus()\n            }\n\n            if( nodeTag && isFocused && (!targetIsTagNode) && !isTargetXBtn) {\n                this.toggleFocusClass(this.state.hasFocus = +new Date())\n\n                // only if focused within a tag's text node should the `onEditTagFocus` function be called.\n                // if clicked anywhere else inside a tag, which had triggered an `focusin` event,\n                // the onFocusBlur should be aborted. This part was spcifically written for `select` mode.\n                // tagTextNode && this.events.callbacks.onEditTagFocus.call(this, nodeTag)\n            }\n\n            var text = e.target ? this.trim(this.DOM.input.textContent) : '', // a string\n                currentDisplayValue = this.value?.[0]?.[_s.tagTextProp],\n                ddEnabled = _s.dropdown.enabled >= 0,\n                eventData = {relatedTarget:e.relatedTarget},\n                isTargetSelectOption = this.state.actions.selectOption && (ddEnabled || !_s.dropdown.closeOnSelect),\n                isTargetAddNewBtn = this.state.actions.addNew && ddEnabled,\n                shouldAddTags;\n\n            if( lostFocus ){\n                if( e.relatedTarget === this.DOM.scope ){\n                    this.dropdown.hide()\n                    this.DOM.input.focus()\n                    return\n                }\n\n                this.postUpdate()\n                _s.onChangeAfterBlur && this.triggerChangeEvent()\n            }\n\n            if( isTargetSelectOption || isTargetAddNewBtn || isTargetXBtn ) {\n                return;\n            }\n\n            // should only loose focus at this point if the event was not generated from within a tag\n            if( isFocused || nodeTag ) {\n                this.state.hasFocus = +new Date()\n            }\n            else {\n                this.state.hasFocus = false;\n            }\n\n            this.toggleFocusClass(this.state.hasFocus)\n\n            if( _s.mode == 'mix' ){\n                if( isFocused ){\n                    this.trigger(\"focus\", eventData)\n                }\n\n                else if( lostFocus ){\n                    this.trigger(\"blur\", eventData)\n                    this.loading(false)\n                    this.dropdown.hide()\n                    // reset state which needs reseting\n                    this.state.dropdown.visible = undefined\n                    this.setStateSelection()\n                }\n\n                return\n            }\n\n            if( isFocused ){\n                if( !_s.focusable ) return;\n\n                // if( !targetIsTagNode && _s.mode != 'select' ){\n                //     this.DOM.input.focus()\n                // }\n\n                var dropdownCanBeShown = _s.dropdown.enabled === 0 && !this.state.dropdown.visible,\n                    tagText = this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector)\n\n                this.trigger(\"focus\", eventData)\n                //  e.target.classList.remove('placeholder');\n                if( dropdownCanBeShown && !targetIsTagNode ){  // && _s.mode != \"select\"\n                    this.dropdown.show(this.value.length ? '' : undefined)\n\n                    if(_s.mode === 'select') {\n                        this.setRangeAtStartEnd(false, tagText)\n                    }\n                }\n\n                return\n            }\n\n            else if( lostFocus ){\n                this.trigger(\"blur\", eventData)\n                this.loading(false)\n\n                // when clicking the X button of a selected tag, it is unwanted for it to be added back\n                // again in a few more lines of code (shouldAddTags && addTags)\n                if( _s.mode == 'select' ) {\n                    if( this.value.length ) {\n                        let firstTagNode = this.getTagElms()[0];\n                        text = this.trim(firstTagNode.textContent)\n                    }\n\n                    // if nothing has changed (same display value), do not add a tag\n                    if( currentDisplayValue === text )\n                        text = ''\n                }\n\n                shouldAddTags = text && !this.state.actions.selectOption && _s.addTagOnBlur && _s.addTagOn.includes('blur');\n                // do not add a tag if \"selectOption\" action was just fired (this means a tag was just added from the dropdown)\n                shouldAddTags && this.addTags(text, true)\n            }\n\n            // when clicking a tag, do not consider this is a \"blur\" event\n            if ( !nodeTag )  {\n                this.DOM.input.removeAttribute('style')\n                this.dropdown.hide()\n            }\n        },\n\n        onCompositionStart(e){\n            this.state.composing = true\n        },\n\n        onCompositionEnd(e){\n            this.state.composing = false\n        },\n\n        onWindowKeyDown(e){\n            var _s = this.settings,\n                focusedElm = document.activeElement,\n                withinTag = isWithinNodeTag.call(this, focusedElm),\n                isBelong = withinTag && this.DOM.scope.contains(focusedElm),\n                isInputNode = focusedElm === this.DOM.input,\n                isReadyOnlyTag = isBelong && focusedElm.hasAttribute('readonly'),\n                tagText = this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),\n                isDropdownVisible = this.state.dropdown.visible,\n                nextTag;\n\n            if( !(e.key === 'Tab' && isDropdownVisible) && !this.state.hasFocus && (!isBelong || isReadyOnlyTag) || isInputNode ) return;\n\n            nextTag = focusedElm.nextElementSibling;\n\n            var targetIsRemoveBtn = e.target.classList.contains(_s.classNames.tagX);\n\n            switch( e.key ){\n                // remove tag if has focus\n                case 'Backspace': {\n                    if( !_s.readonly && !this.state.editing ) {\n                        this.removeTags(focusedElm);\n                        (nextTag ? nextTag : this.DOM.input).focus()\n                    }\n\n                    break;\n                }\n\n                case 'Enter': {\n                    if( targetIsRemoveBtn ) {\n                        this.removeTags( e.target.parentNode )\n                        return\n                    }\n\n                    if( _s.a11y.focusableTags && isNodeTag.call(this, focusedElm) )\n                        setTimeout(this.editTag.bind(this), 0, focusedElm)\n\n                    break;\n                }\n\n                case 'ArrowDown' : {\n                    // if( _s.mode == 'select' ) // issue #333\n                    if( !this.state.dropdown.visible && _s.mode != 'mix' )\n                        this.dropdown.show()\n                    break;\n                }\n\n                case 'Tab': {\n                    tagText?.focus();\n                    break;\n                }\n            }\n        },\n\n        onKeydown(e){\n            var _s = this.settings;\n\n            // ignore keys during IME composition or when user input is not allowed\n            if( this.state.composing || !_s.userInput )\n                return\n\n            if( _s.mode == 'select' && _s.enforceWhitelist && this.value.length && e.key != 'Tab' ){\n                e.preventDefault()\n            }\n\n            var s = this.trim(e.target.textContent);\n\n            this.trigger(\"keydown\", {event:e})\n\n            _s.hooks.beforeKeyDown(e, {tagify:this})\n                .then(result => {\n                    /**\n                     * ONLY FOR MIX-MODE:\n                     */\n                    if( _s.mode == 'mix' ){\n                        switch( e.key ){\n                            case 'Left' :\n                            case 'ArrowLeft' : {\n                                // when left arrow was pressed, set a flag so when the dropdown is shown, right-arrow will be ignored\n                                // because it seems likely the user wishes to use the arrows to move the caret\n                                this.state.actions.ArrowLeft = true\n                                break\n                            }\n\n                            case 'Delete':\n                            case 'Backspace' : {\n                                if( this.state.editing ) return\n\n                                var sel = document.getSelection(),\n                                    deleteKeyTagDetected = e.key == 'Delete' && sel.anchorOffset == (sel.anchorNode.length || 0),\n                                    prevAnchorSibling = sel.anchorNode.previousSibling,\n                                    isCaretAfterTag = sel.anchorNode.nodeType == 1 || !sel.anchorOffset && prevAnchorSibling && prevAnchorSibling.nodeType == 1 && sel.anchorNode.previousSibling,\n                                    lastInputValue = decode(this.DOM.input.innerHTML),\n                                    lastTagElems = this.getTagElms(),\n                                    isZWS = sel.anchorNode.length === 1 && sel.anchorNode.nodeValue == String.fromCharCode(8203),\n                                    //  isCaretInsideTag = sel.anchorNode.parentNode('.' + _s.classNames.tag),\n                                    tagBeforeCaret,\n                                    tagElmToBeDeleted,\n                                    firstTextNodeBeforeTag;\n\n                                if( _s.backspace == 'edit' && isCaretAfterTag ){\n                                    tagBeforeCaret = sel.anchorNode.nodeType == 1 ? null : sel.anchorNode.previousElementSibling;\n                                    setTimeout(this.editTag.bind(this), 0, tagBeforeCaret); // timeout is needed to the last cahacrter in the edited tag won't get deleted\n                                    e.preventDefault() // needed so the tag elm won't get deleted\n                                    return;\n                                }\n\n                                if( isChromeAndroidBrowser() && isCaretAfterTag instanceof Element ){\n                                    firstTextNodeBeforeTag = getfirstTextNode(isCaretAfterTag)\n\n                                    if( !isCaretAfterTag.hasAttribute('readonly') )\n                                        isCaretAfterTag.remove() // since this is Chrome, can safetly use this \"new\" DOM API\n\n                                    // Android-Chrome wrongly hides the keyboard, and loses focus,\n                                    // so this hack below is needed to regain focus at the correct place:\n                                    this.DOM.input.focus()\n                                    setTimeout(() => {\n                                        placeCaretAfterNode(firstTextNodeBeforeTag)\n                                        this.DOM.input.click()\n\n                                    })\n\n                                    return\n                                }\n\n                                if( sel.anchorNode.nodeName == 'BR')\n                                    return\n\n                                if( (deleteKeyTagDetected || isCaretAfterTag) && sel.anchorNode.nodeType == 1 )\n                                    if( sel.anchorOffset == 0 ) // caret is at the very begining, before a tag\n                                        tagElmToBeDeleted = deleteKeyTagDetected // delete key pressed\n                                            ? lastTagElems[0]\n                                            : null;\n                                    else\n                                        tagElmToBeDeleted = lastTagElems[Math.min(lastTagElems.length, sel.anchorOffset) - 1]\n\n                                // find out if a tag *might* be a candidate for deletion, and if so, which\n                                else if( deleteKeyTagDetected )\n                                    tagElmToBeDeleted = sel.anchorNode.nextElementSibling;\n\n                                else if( isCaretAfterTag instanceof Element )\n                                    tagElmToBeDeleted = isCaretAfterTag;\n\n                                // tagElm.hasAttribute('readonly')\n                                if( sel.anchorNode.nodeType == 3 &&   // node at caret location is a Text node\n                                    !sel.anchorNode.nodeValue    &&   // has some text\n                                    sel.anchorNode.previousElementSibling )  // text node has a Tag node before it\n                                    e.preventDefault()\n\n                                // if backspace not allowed, do nothing\n                                // TODO: a better way to detect if nodes were deleted is to simply check the \"this.value\" before & after\n                                if( (isCaretAfterTag || deleteKeyTagDetected) && !_s.backspace ){\n                                    e.preventDefault()\n                                    return\n                                }\n\n                                if( sel.type != 'Range' && !sel.anchorOffset && sel.anchorNode == this.DOM.input && e.key != 'Delete' ){\n                                    e.preventDefault()\n                                    return\n                                }\n\n                                if( sel.type != 'Range' && tagElmToBeDeleted && tagElmToBeDeleted.hasAttribute('readonly') ){\n                                    // allows the continuation of deletion by placing the caret on the first previous textNode.\n                                    // since a few readonly-tags might be one after the other, iteration is needed:\n\n                                    placeCaretAfterNode( getfirstTextNode(tagElmToBeDeleted) )\n                                    return\n                                }\n\n                                if ( e.key == 'Delete' && isZWS && getSetTagData(sel.anchorNode.nextSibling) ) {\n                                    this.removeTags(sel.anchorNode.nextSibling)\n                                }\n\n                                // update regarding https://github.com/yairEO/tagify/issues/762#issuecomment-786464317:\n                                // the bug described is more severe than the fix below, therefore I disable the fix until a solution\n                                // is found which work well for both cases.\n                                // -------\n                                // nodeType is \"1\" only when the caret is at the end after last tag (no text after), or before first first (no text before)\n                                /*\n                                if( this.isFirefox && sel.anchorNode.nodeType == 1 && sel.anchorOffset != 0 ){\n                                    this.removeTags() // removes last tag by default if no parameter supplied\n                                    // place caret inside last textNode, if exist. it's an annoying bug only in FF,\n                                    // if the last tag is removed, and there is a textNode before it, the caret is not placed at its end\n                                    placeCaretAfterNode( setRangeAtStartEnd(false, this.DOM.input) )\n                                }\n                                */\n\n                                break;\n                            }\n                            // currently commented to allow new lines in mixed-mode\n                            case 'Enter' : {\n                                e.preventDefault(); // solves Chrome bug - http://stackoverflow.com/a/20398191/104380\n\n                                if(this.state.tag) return; // assume a tag has just been added, so no need to create a new line\n                                // https://stackoverflow.com/a/72279112/104380\n                                let selection = window.getSelection();\n                                let range = selection.getRangeAt(0);\n                                range.insertNode(document.createElement('br'));\n                                selection.collapseToEnd();\n                            }\n                        }\n\n                        return true\n                    }\n\n                    var isManualDropdown = _s.dropdown.position == 'manual';\n\n                    switch( e.key ){\n                        case 'Backspace' :\n                            if( _s.mode == 'select' && _s.enforceWhitelist && this.value.length)\n                                this.removeTags()\n\n                            else if( !this.state.dropdown.visible || _s.dropdown.position == 'manual' ){\n                                if( e.target.textContent == \"\" || s.charCodeAt(0) == 8203 ){  // 8203: ZERO WIDTH SPACE unicode\n                                    if( _s.backspace === true )\n                                        this.removeTags()\n                                    else if( _s.backspace == 'edit' )\n                                        setTimeout(this.editTag.bind(this), 0) // timeout reason: when edited tag gets focused and the caret is placed at the end, the last character gets deletec (because of backspace)\n                                }\n                            }\n                            break;\n\n                        case 'Esc' :\n                        case 'Escape' :\n                            if( this.state.dropdown.visible ) return\n                            e.target.blur()\n                            break;\n\n                        case 'Down' :\n                        case 'ArrowDown' :\n                            // if( _s.mode == 'select' ) // issue #333\n                            if( !this.state.dropdown.visible )\n                                this.dropdown.show()\n                            break;\n\n                        case 'ArrowRight' : {\n                            let tagData = this.state.inputSuggestion || this.state.ddItemData\n                            if( tagData && _s.autoComplete.rightKey ){\n                                this.addTags([tagData], true)\n                                return;\n                            }\n                            break\n                        }\n\n                        case 'Tab' : {\n                            const shouldAddTag = _s.addTagOn.includes(e.key.toLowerCase());\n                            if(!shouldAddTag) {\n                                break;\n                            }\n                        }\n\n                        case 'Enter' : {\n                            // manual suggestion boxes are assumed to always be visible\n                            if( this.state.dropdown.visible && !isManualDropdown ) return\n\n                            var thingToAdd = this.state.autoCompleteData || s;\n\n                            // if nothing to add and tab key was pressed, return true (must be before preventDefault)\n                            if(!thingToAdd && e.key === \"Tab\") return true\n\n                            e.preventDefault(); // solves Chrome bug - http://stackoverflow.com/a/20398191/104380\n                            // because the main \"keydown\" event is bound before the dropdown events, this will fire first and will not *yet*\n                            // know if an option was just selected from the dropdown menu. If an option was selected,\n                            // the dropdown events should handle adding the tag\n\n\n\n                            setTimeout(()=>{\n                                if( (!this.state.dropdown.visible || isManualDropdown) && !this.state.actions.selectOption && _s.addTagOn.includes(e.key.toLowerCase()) ) {\n                                    this.addTags([thingToAdd], true)\n                                    this.state.autoCompleteData = null\n                                }\n                            })\n                        }\n                    }\n                })\n                .catch(err => err)\n        },\n\n        onInput(e){\n            this.postUpdate() // toggles \"tagify--empty\" class\n\n            var _s = this.settings;\n\n            if( _s.mode == 'mix' )\n                return this.events.callbacks.onMixTagsInput.call(this, e);\n\n            var value = this.input.normalize.call(this, undefined, {trim: false}),\n                showSuggestions = value.length >= _s.dropdown.enabled,\n                eventData = {value, inputElm:this.DOM.input},\n                validation = this.validateTag({value});\n\n            if( _s.mode == 'select' ) {\n                this.toggleScopeValidation(validation)\n            }\n\n            eventData.isValid = validation;\n\n            // for IE; since IE doesn't have an \"input\" event so \"keyDown\" is used instead to trigger the \"onInput\" callback,\n            // and so many keys do not change the input, and for those do not continue.\n            if( this.state.inputText == value ) return;\n\n            // save the value on the input's State object\n            this.input.set.call(this, value, false); // update the input with the normalized value and run validations\n            // this.setRangeAtStartEnd(false, this.DOM.input); // fix caret position\n\n            // if delimiters detected, add tags\n            if( value.search(_s.delimiters) != -1 ){\n                if( this.addTags( value ) ){\n                    this.input.set.call(this); // clear the input field's value\n                }\n            }\n\n            else if( _s.dropdown.enabled >= 0 ){\n                this.dropdown[showSuggestions ? \"show\" : \"hide\"](value);\n            }\n\n            this.trigger('input', eventData) // \"input\" event must be triggered at this point, before the dropdown is shown\n        },\n\n        onMixTagsInput( e ){\n            var rangeText, match, matchedPatternCount, tag, showSuggestions, selection,\n                _s = this.settings,\n                lastTagsCount = this.value.length,\n                matchFlaggedTag,\n                matchDelimiters,\n                tagsElems = this.getTagElms(),\n                fragment = document.createDocumentFragment(),\n                range = window.getSelection().getRangeAt(0),\n                remainingTagsValues = [].map.call(tagsElems, node => getSetTagData(node).value);\n\n            // Android Chrome \"keydown\" event argument does not report the correct \"key\".\n            // this workaround is needed to manually call \"onKeydown\" method with a synthesized event object\n            if( e.inputType == \"deleteContentBackward\" && isChromeAndroidBrowser() ){\n                this.events.callbacks.onKeydown.call(this, {\n                    target: e.target,\n                    key: \"Backspace\",\n                })\n            }\n\n            // if there's a tag as the first child of the input, always make sure it has a zero-width character before it\n            // or if two tags are next to each-other, add a zero-space width character (For the caret to appear)\n            fixCaretBetweenTags(this.getTagElms())\n\n            // re-add \"readonly\" tags which might have been removed\n            this.value.slice().forEach(item => {\n                if( item.readonly && !remainingTagsValues.includes(item.value) )\n                    fragment.appendChild( this.createTagElem(item) )\n            })\n\n            if( fragment.childNodes.length ){\n                range.insertNode(fragment)\n                this.setRangeAtStartEnd(false, fragment.lastChild)\n            }\n\n            // check if tags were \"magically\" added/removed (browser redo/undo or CTRL-A -> delete)\n            if( tagsElems.length != lastTagsCount ){\n                this.value = [].map.call(this.getTagElms(), node => getSetTagData(node))\n                this.update({ withoutChangeEvent:true })\n                return\n            }\n\n            if( this.hasMaxTags() )\n                return true\n\n            if( window.getSelection ){\n                selection = window.getSelection()\n\n                // only detect tags if selection is inside a textNode (not somehow on already-existing tag)\n                if( selection.rangeCount > 0 && selection.anchorNode.nodeType == 3 ){\n                    range = selection.getRangeAt(0).cloneRange()\n                    range.collapse(true)\n                    range.setStart(selection.focusNode, 0)\n\n                    rangeText = range.toString().slice(0, range.endOffset)  // slice the range so everything AFTER the caret will be trimmed\n                    // split = range.toString().split(_s.mixTagsAllowedAfter)  // [\"foo\", \"bar\", \"@baz\"]\n                    matchedPatternCount = rangeText.split(_s.pattern).length - 1;\n\n                    match = rangeText.match( _s.pattern )\n\n                    if( match )\n                        // tag string, example: \"@aaa ccc\"\n                        tag = rangeText.slice( rangeText.lastIndexOf(match[match.length-1]) )\n\n                    if( tag ){\n                        this.state.actions.ArrowLeft = false // start fresh, assuming the user did not (yet) used any arrow to move the caret\n                        this.state.tag = {\n                            prefix : tag.match(_s.pattern)[0],\n                            value  : tag.replace(_s.pattern, ''), // get rid of the prefix\n                        }\n                        this.state.tag.baseOffset = selection.baseOffset - this.state.tag.value.length\n\n                        matchDelimiters = this.state.tag.value.match(_s.delimiters)\n                        // if a delimeter exists, add the value as tag (exluding the delimiter)\n                        if( matchDelimiters ){\n                            this.state.tag.value = this.state.tag.value.replace(_s.delimiters, '')\n                            this.state.tag.delimiters = matchDelimiters[0]\n                            this.addTags(this.state.tag.value, _s.dropdown.clearOnSelect)\n                            this.dropdown.hide()\n                            return\n                        }\n\n                        showSuggestions = this.state.tag.value.length >= _s.dropdown.enabled\n\n                        // When writing something that might look like a tag (an email address) but isn't one - it is unwanted\n                        // the suggestions dropdown be shown, so the user can close it (in any way), and while continue typing,\n                        // dropdown should stay closed until another tag is typed.\n                        // if( this.state.tag.value.length && this.state.dropdown.visible === false )\n                        //     showSuggestions = false\n\n                        // test for similar flagged tags to the current tag\n\n                        try{\n                            matchFlaggedTag = this.state.flaggedTags[this.state.tag.baseOffset]\n                            matchFlaggedTag = matchFlaggedTag.prefix   == this.state.tag.prefix &&\n                                              matchFlaggedTag.value[0] == this.state.tag.value[0]\n\n                            // reset\n                            if( this.state.flaggedTags[this.state.tag.baseOffset] && !this.state.tag.value )\n                                delete this.state.flaggedTags[this.state.tag.baseOffset];\n                        }\n                        catch(err){}\n\n                        // scenario: (do not show suggestions of another matched tag, if more than one detected)\n                        // (2 tags exist)                          \" a@a.com and @\"\n                        // (second tag is removed by backspace)    \" a@a.com and \"\n                        if( matchFlaggedTag || matchedPatternCount < this.state.mixMode.matchedPatternCount )\n                            showSuggestions = false\n                    }\n                    // no (potential) tag found\n                    else{\n                        this.state.flaggedTags = {}\n                    }\n\n                    this.state.mixMode.matchedPatternCount = matchedPatternCount\n                }\n            }\n\n\n            // wait until the \"this.value\" has been updated (see \"onKeydown\" method for \"mix-mode\")\n            // the dropdown must be shown only after this event has been triggered, so an implementer could\n            // dynamically change the whitelist.\n            setTimeout(()=>{\n                this.update({withoutChangeEvent:true})\n                this.trigger('input', extend({}, this.state.tag, {textContent:this.DOM.input.textContent}))\n\n                if( this.state.tag )\n                    this.dropdown[showSuggestions ? \"show\" : \"hide\"](this.state.tag.value);\n            }, 10)\n        },\n\n        onInputIE(e){\n            var _this = this;\n            // for the \"e.target.textContent\" to be changed, the browser requires a small delay\n            setTimeout(function(){\n                _this.events.callbacks.onInput.call(_this, e)\n            })\n        },\n\n        observeOriginalInputValue(){\n            // if, for some reason, the Tagified element is no longer in the DOM,\n            // call the \"destroy\" method to kill all references to timeouts/intervals\n            if( !this.DOM.originalInput.parentNode ) this.destroy()\n\n            // if original input value changed for some reason (for exmaple a form reset)\n            if( this.DOM.originalInput.value != this.DOM.originalInput.tagifyValue )\n                this.loadOriginalValues()\n        },\n\n        onClickAnywhere(e){\n            if (e.target != this.DOM.scope && !this.DOM.scope.contains(e.target)) {\n                this.toggleFocusClass(false)\n                this.state.hasFocus = false\n\n                let closestTagifyDropdownElem = e.target.closest(this.settings.classNames.dropdownSelector);\n\n                // do not hide the dropdown if a click was initiated within it and that dropdown belongs to this Tagify instance\n                if( closestTagifyDropdownElem?.__tagify != this )\n                    this.dropdown.hide()\n            }\n        },\n\n        onClickScope(e){\n            var _s = this.settings,\n                tagElm = e.target.closest('.' + _s.classNames.tag),\n                isScope = e.target === this.DOM.scope,\n                timeDiffFocus = +new Date() - this.state.hasFocus;\n\n            if( e.target.classList.contains(_s.classNames.tagX) ){\n                this.removeTags( e.target.parentNode )\n                return\n            }\n\n            else if( tagElm && !this.state.editing ){\n                this.trigger(\"click\", { tag:tagElm, index:this.getNodeIndex(tagElm), data:getSetTagData(tagElm), event:e })\n\n                if( _s.editTags === 1 || _s.editTags.clicks === 1 || _s.mode == 'select' )\n                    this.events.callbacks.onDoubleClickScope.call(this, e)\n\n                return\n            }\n\n            // when clicking on the input itself\n            else if( e.target == this.DOM.input ){\n                if( _s.mode == 'mix' ){\n                    // firefox won't show caret if last element is a tag (and not a textNode),\n                    // so an empty textnode should be added\n                    this.fixFirefoxLastTagNoCaret()\n                }\n\n                if( timeDiffFocus > 500 || !_s.focusable ){\n                    if( this.state.dropdown.visible )\n                        this.dropdown.hide()\n                    else if( _s.dropdown.enabled === 0 && _s.mode != 'mix' )\n                        this.dropdown.show(this.value.length ? '' : undefined)\n                    return\n                }\n            }\n\n            if( _s.mode == 'select' && _s.dropdown.enabled === 0 && !this.state.dropdown.visible) {\n                this.events.callbacks.onDoubleClickScope.call(this, {...e, target: this.getTagElms()[0]})\n\n                !_s.userInput && this.dropdown.show()\n            }\n        },\n\n        // special proccess is needed for pasted content in order to \"clean\" it\n        onPaste(e){\n            e.preventDefault()\n\n            var tagsElems,\n                _s = this.settings;\n\n            if( !_s.userInput ){\n                return false;\n            }\n\n            var clipboardData, pastedText;\n\n            if( _s.readonly ) return\n\n            // Get pasted data via clipboard API\n            clipboardData = e.clipboardData || window.clipboardData\n            pastedText = clipboardData.getData('Text')\n\n            _s.hooks.beforePaste(e, {tagify:this, pastedText, clipboardData})\n                .then(result => {\n                    if( result === undefined )\n                        result = pastedText;\n\n                    if( result ){\n                        this.injectAtCaret(result, window.getSelection().getRangeAt(0))\n\n                        if( this.settings.mode == 'mix' ){\n                            this.events.callbacks.onMixTagsInput.call(this, e);\n                        }\n\n                        else if( this.settings.pasteAsTags ){\n                            tagsElems = this.addTags(this.state.inputText + result, true)\n                        }\n\n                        else {\n                            this.state.inputText = result\n                            this.dropdown.show(result)\n                        }\n                    }\n\n                    this.trigger('paste', {event: e, pastedText, clipboardData, tagsElems})\n                })\n                .catch(err => err)\n        },\n\n        onDrop(e){\n            e.preventDefault()\n        },\n\n        onEditTagInput( editableElm, e ){\n            var tagElm = editableElm.closest('.' + this.settings.classNames.tag),\n                tagElmIdx = this.getNodeIndex(tagElm),\n                tagData = getSetTagData(tagElm),\n                textValue = this.input.normalize.call(this, editableElm),\n                dataForChangedProp = {[this.settings.tagTextProp]: textValue, __tagId: tagData.__tagId}, // \"__tagId\" is needed so validation will skip current tag when checking for dups\n                isValid = this.validateTag(dataForChangedProp), // the value could have been invalid in the first-place so make sure to re-validate it (via \"addEmptyTag\" method)\n                hasChanged = this.editTagChangeDetected(extend(tagData, dataForChangedProp));\n\n            // if the value is same as before-editing and the tag was valid before as well, ignore the  current \"isValid\" result, which is false-positive\n            if( !hasChanged && editableElm.originalIsValid === true )\n                isValid = true\n\n            tagElm.classList.toggle(this.settings.classNames.tagInvalid, isValid !== true)\n            tagData.__isValid = isValid\n\n            tagElm.title = isValid === true\n                ? tagData.title || tagData.value\n                : isValid // change the tag's title to indicate why is the tag invalid (if it's so)\n\n            // show dropdown if typed text is equal or more than the \"enabled\" dropdown setting\n            if( textValue.length >= this.settings.dropdown.enabled ){\n                // this check is needed apparently because doing browser \"undo\" will fire\n                //  \"onEditTagInput\" but \"this.state.editing\" will be \"false\"\n                if( this.state.editing )\n                    this.state.editing.value = textValue\n                this.dropdown.show(textValue)\n            }\n\n            this.trigger(\"edit:input\", {\n                tag  : tagElm,\n                index: tagElmIdx,\n                data : extend({}, this.value[tagElmIdx], {newValue:textValue}),\n                event: e\n            })\n        },\n\n        onEditTagPaste( tagElm, e ){\n            // Get pasted data via clipboard API\n            var clipboardData = e.clipboardData || window.clipboardData,\n                pastedText = clipboardData.getData('Text');\n\n            e.preventDefault()\n\n            var newNode = injectAtCaret(pastedText)\n            this.setRangeAtStartEnd(false, newNode)\n        },\n\n        onEditTagClick( tagElm, e) {\n            this.events.callbacks.onClickScope.call(this, e)\n        },\n\n        onEditTagFocus( tagElm ){\n            this.state.editing = {\n                scope: tagElm,\n                input: tagElm.querySelector(\"[contenteditable]\")\n            }\n        },\n\n        onEditTagBlur( editableElm, e ){\n            // if \"relatedTarget\" is the tag then do not continue as this should not be considered a \"blur\" event\n            var isRelatedTargetNodeTag = isNodeTag.call(this, e.relatedTarget)\n\n            // in \"select-mode\" when editing the tag's template to include more nodes other than the editable \"span\",\n            // clicking those elements should not be considered a blur event\n            if( this.settings.mode == 'select' && isRelatedTargetNodeTag && e.relatedTarget.contains(e.target) ) {\n                this.dropdown.hide()\n                return\n            }\n\n            // if \"ESC\" key was pressed then the \"editing\" state should be `false` and if so, logic should not continue\n            // because \"ESC\" reverts the edited tag back to how it was (replace the node) before editing\n            if( !this.state.editing )\n                return;\n\n            if( !this.state.hasFocus )\n                this.toggleFocusClass()\n\n            if(!this.DOM.scope.contains(document.activeElement)) {\n                this.trigger(\"blur\", {})\n            }\n\n            // one scenario is when selecting a suggestion from the dropdown, when editing, and by selecting it\n            // the \"onEditTagDone\" is called directly, already replacing the tag, so the argument \"editableElm\"\n            // node isn't in the DOM anynmore because it has been replaced.\n            if( !this.DOM.scope.contains(editableElm) ) return;\n\n            var _s           = this.settings,\n                tagElm       = editableElm.closest('.' + _s.classNames.tag),\n                tagData      = getSetTagData(tagElm),\n                textValue    = this.input.normalize.call(this, editableElm),\n                dataForChangedProp = {[_s.tagTextProp]: textValue, __tagId: tagData.__tagId}, // \"__tagId\" is needed so validation will skip current tag when checking for dups\n                originalData = tagData.__originalData, // pre-edit data\n                hasChanged   = this.editTagChangeDetected(extend(tagData, dataForChangedProp)),\n                isValid      = this.validateTag(dataForChangedProp), // \"__tagId\" is needed so validation will skip current tag when checking for dups\n                hasMaxTags,\n                newTagData;\n\n            if( !textValue ){\n                this.onEditTagDone(tagElm)\n                return\n            }\n\n            // if nothing changed revert back to how it was before editing\n            if( !hasChanged ){\n                this.onEditTagDone(tagElm, originalData)\n                return\n            }\n\n            // need to know this because if \"keepInvalidTags\" setting is \"true\" and an invalid tag is edited as a valid one,\n            // but the maximum number of tags have alreay been reached, so it should not allow saving the new valid value.\n            // only if the tag was already valid before editing, ignore this check (see a few lines below)\n            hasMaxTags = this.hasMaxTags()\n\n            newTagData = extend(\n                {},\n                originalData,\n                {\n                    [_s.tagTextProp]: this.trim(textValue),\n                    __isValid: isValid\n                }\n            )\n\n            // pass through optional transformer defined in settings\n            _s.transformTag.call(this, newTagData, originalData)\n\n            // MUST re-validate after tag transformation\n            // only validate the \"tagTextProp\" because is the only thing that metters for validating an edited tag.\n            // -- Scenarios: --\n            // 1. max 3 tags allowd. there are 4 tags, one has invalid input and is edited to a valid one, and now should be marked as \"not allowed\" because limit of tags has reached\n            // 2. max 3 tags allowed. there are 3 tags, one is edited, and so max-tags vaildation should be OK\n            isValid = (!hasMaxTags || originalData.__isValid === true) && this.validateTag(newTagData)\n\n            if( isValid !== true ){\n                this.trigger(\"invalid\", { data:newTagData, tag:tagElm, message:isValid })\n\n                // do nothing if invalid, stay in edit-mode until corrected or reverted by presssing esc\n                if( _s.editTags.keepInvalid ) return\n\n                if( _s.keepInvalidTags )\n                    newTagData.__isValid = isValid\n                else\n                    // revert back if not specified to keep\n                    newTagData = originalData\n            }\n\n            else if( _s.keepInvalidTags ){\n                // cleaup any previous leftovers if the tag was invalid\n                delete newTagData.title\n                delete newTagData[\"aria-invalid\"]\n                delete newTagData.class\n            }\n\n            // tagElm.classList.toggle(_s.classNames.tagInvalid, true)\n\n            this.onEditTagDone(tagElm, newTagData)\n        },\n\n        onEditTagkeydown(e, tagElm){\n            // ignore keys during IME composition\n            if( this.state.composing )\n                return\n\n            this.trigger(\"edit:keydown\", {event:e})\n\n            switch( e.key ){\n                case 'Esc' :\n                case 'Escape' : {\n                    this.state.editing = false\n                    var hasValueToRevertTo = !!tagElm.__tagifyTagData.__originalData.value\n\n                    if( hasValueToRevertTo )\n                        // revert the tag to how it was before editing\n                        // replace current tag with original one (pre-edited one)\n                        tagElm.parentNode.replaceChild(tagElm.__tagifyTagData.__originalHTML, tagElm)\n                    else\n                        tagElm.remove()\n\n                    break\n                }\n                case 'Enter' :\n                case 'Tab' : {\n                    e.preventDefault()\n\n                    var EDITED_TAG_BLUR_DELAY = 0;\n\n                    // a setTimeout is used so when editing (in \"select\" mode) while the dropdown is shown and a suggestion is highlighted\n                    // and ENTER key is pressed down - the `dropdown.hide` method won't be invoked immediately and unbind the dropdown's\n                    // KEYDOWN \"ENTER\" before it has time to call the handler and select the suggestion.\n                    setTimeout(() => e.target.blur(), EDITED_TAG_BLUR_DELAY)\n                }\n            }\n        },\n\n        onDoubleClickScope(e){\n            var tagElm = e.target.closest('.' + this.settings.classNames.tag);\n\n            if( !tagElm ) return\n\n            var tagData = getSetTagData(tagElm),\n                _s = this.settings,\n                isEditingTag,\n                isReadyOnlyTag;\n\n            if( tagData?.editable === false ) return\n\n            isEditingTag = tagElm.classList.contains(this.settings.classNames.tagEditing)\n            isReadyOnlyTag = tagElm.hasAttribute('readonly')\n\n            if( !_s.readonly && !isEditingTag && !isReadyOnlyTag && this.settings.editTags && _s.userInput ) {\n                this.events.callbacks.onEditTagFocus.call(this, tagElm)\n                this.editTag(tagElm)\n            }\n\n            this.toggleFocusClass(true)\n\n            if( _s.mode != 'select' )\n                this.trigger('dblclick', { tag:tagElm, index:this.getNodeIndex(tagElm), data:getSetTagData(tagElm) })\n        },\n\n        /**\n         *\n         * @param {Object} m an object representing the observed DOM changes\n         */\n        onInputDOMChange(m){\n            // iterate all DOM mutation\n            m.forEach(record => {\n                // only the ADDED nodes\n                record.addedNodes.forEach(addedNode => {\n                    // fix chrome's placing '<div><br></div>' everytime ENTER key is pressed, and replace with just `<br'\n                    if( addedNode.outerHTML == '<div><br></div>' ){\n                        addedNode.replaceWith(document.createElement('br'))\n                    }\n\n                    // if the added element is a div containing a tag within it (chrome does this when pressing ENTER before a tag)\n                    else if( addedNode.nodeType == 1 && addedNode.querySelector(this.settings.classNames.tagSelector) ){\n                        let newlineText = document.createTextNode('')\n\n                        if( addedNode.childNodes[0].nodeType == 3 && addedNode.previousSibling.nodeName != 'BR' )\n                            newlineText  = document.createTextNode('\\n')\n\n                        // unwrap the useless div\n                        // chrome adds a BR at the end which should be removed\n                        addedNode.replaceWith(...[newlineText, ...[...addedNode.childNodes].slice(0,-1)])\n                        placeCaretAfterNode(newlineText)\n                    }\n\n                    // if this is a tag\n                    else if( isNodeTag.call(this, addedNode) ){\n                        if( addedNode.previousSibling?.nodeType == 3 && !addedNode.previousSibling.textContent )\n                            addedNode.previousSibling.remove()\n\n                        // and it is the first node in a new line\n                        if( addedNode.previousSibling && addedNode.previousSibling.nodeName == 'BR' ){\n                            // allows placing the caret just before the tag, when the tag is the first node in that line\n                            addedNode.previousSibling.replaceWith('\\n' + ZERO_WIDTH_CHAR)\n\n                            let nextNode = addedNode.nextSibling, anythingAfterNode = '';\n\n                            while (nextNode) {\n                                anythingAfterNode += nextNode.textContent\n                                nextNode = nextNode.nextSibling;\n                            }\n\n                            // when hitting ENTER for new line just before an existing tag, but skip below logic when a tag has been addded\n                            anythingAfterNode.trim() && placeCaretAfterNode(addedNode.previousSibling)\n                        }\n\n                        // if previous sibling does not exists (meanning the addedNode is the first node in this.DOM.input)\n                        // or, if the previous sibling is also a tag, add a zero-space character before (to allow showing the caret in Chrome)\n                        else if( !addedNode.previousSibling || getSetTagData(addedNode.previousSibling) ){\n                            addedNode.before(ZERO_WIDTH_CHAR)\n                        }\n                    }\n                })\n\n                record.removedNodes.forEach(removedNode => {\n                    // when trying to delete a tag which is in a new line and there's nothing else there (caret is after the tag)\n                    if( removedNode && removedNode.nodeName == 'BR' && isNodeTag.call(this, lastInputChild)){\n                        this.removeTags(lastInputChild)\n                        this.fixFirefoxLastTagNoCaret()\n                    }\n                })\n            })\n\n            // get the last child only after the above DOM modifications\n            // check these scenarios:\n            // 1. after a single line, press ENTER once - should add only 1 BR\n            // 2. presss ENTER right before a tag\n            // 3. press enter within a text node before a tag\n            var lastInputChild = this.DOM.input.lastChild;\n\n            if( lastInputChild && lastInputChild.nodeValue == '' )\n                lastInputChild.remove()\n\n            // make sure the last element is always a BR\n            if( !lastInputChild || lastInputChild.nodeName != 'BR' ){\n                this.DOM.input.appendChild(document.createElement('br'))\n            }\n        },\n    }\n}\n\n", "import { sameStr, removeCollectionProp, omit, isObject, parseHTML, removeTextChildNodes, escapeHTML, extend, concatWithoutDups, getUID, isNodeTag, injectAtCaret, placeCaretAfterNode, getSetTagData, fixCaretBetweenTags, logger } from './parts/helpers'\nimport DEFAULTS from './parts/defaults'\nimport _dropdown, { initDropdown } from './parts/dropdown'\nimport { getPersistedData, setPersistedData, clearPersistedData } from './parts/persist'\nimport TEXTS from './parts/texts'\nimport templates from './parts/templates'\nimport EventDispatcher from './parts/EventDispatcher'\nimport events, { triggerChangeEvent } from './parts/events'\nimport { UPDATE_DELAY } from './parts/constants'\n\n/**\n * @constructor\n * @param {Object} input    DOM element\n * @param {Object} settings settings object\n */\nfunction Tagify( input, settings ){\n    if( !input ){\n        logger.warn('input element not found', input)\n        // return an empty mock of all methods, so the code using tagify will not break\n        // because it might be calling methods even though the input element does not exist\n        const mockInstance = new Proxy(this, { get(){ return () => mockInstance } })\n        return mockInstance\n    }\n\n    if( input.__tagify ){\n        logger.warn('input element is already Tagified - Same instance is returned.', input)\n        return input.__tagify\n    }\n\n    extend(this, EventDispatcher(this))\n    this.isFirefox = (/firefox|fxios/i).test(navigator.userAgent) && !(/seamonkey/i).test(navigator.userAgent)\n    this.isIE = window.document.documentMode; // https://developer.mozilla.org/en-US/docs/Web/API/Document/compatMode#Browser_compatibility\n\n    settings = settings || {};\n    this.getPersistedData = getPersistedData(settings.id)\n    this.setPersistedData = setPersistedData(settings.id)\n    this.clearPersistedData = clearPersistedData(settings.id)\n    this.applySettings(input, settings)\n\n    this.state = {\n        inputText: '',\n        editing : false,\n        composing: false,\n        actions : {},   // UI actions for state-locking\n        mixMode : {},\n        dropdown: {},\n        flaggedTags: {} // in mix-mode, when a string is detetced as potential tag, and the user has chocen to close the suggestions dropdown, keep the record of the tasg here\n    }\n\n    this.value = [] // tags' data\n\n    // events' callbacks references will be stores here, so events could be unbinded\n    this.listeners = {}\n\n    this.DOM = {} // Store all relevant DOM elements in an Object\n\n    this.build(input)\n    initDropdown.call(this)\n\n    this.getCSSVars()\n    this.loadOriginalValues()\n\n    this.events.customBinding.call(this)\n    this.events.binding.call(this)\n    input.autofocus && this.DOM.input.focus()\n    input.__tagify = this\n}\n\nTagify.prototype = {\n    _dropdown,\n    placeCaretAfterNode,\n    getSetTagData,\n    helpers: {sameStr, removeCollectionProp, omit, isObject, parseHTML, escapeHTML, extend, concatWithoutDups, getUID, isNodeTag},\n\n    customEventsList : ['change', 'add', 'remove', 'invalid', 'input', 'paste', 'click', 'keydown', 'focus', 'blur', 'edit:input', 'edit:beforeUpdate', 'edit:updated', 'edit:start', 'edit:keydown', 'dropdown:show', 'dropdown:hide', 'dropdown:select', 'dropdown:updated', 'dropdown:noMatch', 'dropdown:scroll'],\n    dataProps: ['__isValid', '__removed', '__originalData', '__originalHTML', '__tagId'], // internal-uasge props\n\n    trim(text){\n        return this.settings.trim && text && typeof text == \"string\" ? text.trim() : text\n    },\n\n    // expose this handy utility function\n    parseHTML,\n\n    templates,\n\n    parseTemplate(template, data){\n        template = this.settings.templates[template] || template;\n        return parseHTML( template.apply(this, data) )\n    },\n\n    set whitelist( arr ){\n        const isArray = arr && Array.isArray(arr)\n        this.settings.whitelist = isArray ? arr : []\n        this.setPersistedData(isArray ? arr : [], 'whitelist')\n    },\n\n    get whitelist(){\n        return this.settings.whitelist\n    },\n\n    set userInput( state ){\n        this.settings.userInput = !!state\n        this.setContentEditable(!!state)\n    },\n\n    get userInput(){\n        return this.settings.userInput\n    },\n\n    generateClassSelectors(classNames){\n        for( let name in classNames ) {\n            let currentName = name;\n            Object.defineProperty(classNames, currentName + \"Selector\" , {\n                get(){ return \".\" + this[currentName].split(\" \")[0] }\n            })\n        }\n    },\n\n    applySettings( input, settings ){\n        DEFAULTS.templates = this.templates\n\n        var mixModeDefaults = {\n            dropdown: {\n                position: \"text\"\n            }\n        }\n\n        var mergedDefaults = extend({}, DEFAULTS, (settings.mode == 'mix' ? mixModeDefaults : {}));\n        var _s = this.settings = extend({}, mergedDefaults, settings)\n\n        _s.disabled = input.hasAttribute('disabled')\n        _s.readonly = _s.readonly || input.hasAttribute('readonly')\n        _s.placeholder = escapeHTML(input.getAttribute('placeholder') || _s.placeholder || \"\")\n        _s.required = input.hasAttribute('required')\n\n        this.generateClassSelectors(_s.classNames)\n\n        if( this.isIE )\n            _s.autoComplete = false; // IE goes crazy if this isn't false\n\n        [\"whitelist\", \"blacklist\"].forEach(name => {\n            var attrVal = input.getAttribute('data-' + name)\n            if( attrVal ){\n                attrVal = attrVal.split(_s.delimiters)\n                if( attrVal instanceof Array )\n                    _s[name] = attrVal\n            }\n        })\n\n        // backward-compatibility for old version of \"autoComplete\" setting:\n        if( \"autoComplete\" in settings && !isObject(settings.autoComplete) ){\n            _s.autoComplete = DEFAULTS.autoComplete\n            _s.autoComplete.enabled = settings.autoComplete\n        }\n\n        if( _s.mode == 'mix' ){\n            _s.pattern = _s.pattern || /@/;\n            _s.autoComplete.rightKey = true\n            _s.delimiters = settings.delimiters || null // default dlimiters in mix-mode must be NULL\n\n            // needed for \"filterListItems\". This assumes the user might have forgotten to manually\n            // define the same term in \"dropdown.searchKeys\" as defined in \"tagTextProp\" setting, so\n            // by automatically adding it, tagify is \"helping\" out, guessing the intesntions of the developer.\n            if( _s.tagTextProp && !_s.dropdown.searchKeys.includes(_s.tagTextProp) )\n                _s.dropdown.searchKeys.push(_s.tagTextProp)\n        }\n\n        if( input.pattern )\n            try { _s.pattern = new RegExp(input.pattern)  }\n            catch(e){}\n\n        // Convert the \"delimiters\" setting into a REGEX object\n        if( _s.delimiters ){\n            _s._delimiters = _s.delimiters;\n            try { _s.delimiters = new RegExp(this.settings.delimiters, \"g\") }\n            catch(e){}\n        }\n\n        if( _s.disabled || _s.readonly )\n            _s.userInput = false;\n\n        this.TEXTS = {...TEXTS, ...(_s.texts || {})}\n\n        // it makes sense to enable \"includeSelectedTags\" in \"select-mode\"\n        if( _s.mode == 'select' ){\n            _s.dropdown.includeSelectedTags = true\n        }\n\n        // make sure the dropdown will be shown on \"focus\" and not only after typing something (in \"select\" mode)\n        if( (_s.mode == 'select' && !settings.dropdown?.enabled) || !_s.userInput ){\n            _s.dropdown.enabled = 0\n        }\n\n        // additional override\n        if( _s.disabled ) {\n            _s.dropdown.enabled = false;\n        }\n\n        _s.dropdown.appendTarget = settings.dropdown?.appendTarget || document.body;\n\n        if ( _s.dropdown.includeSelectedTags === undefined )\n            _s.dropdown.includeSelectedTags = _s.duplicates;\n\n        // get & merge persisted data with current data\n        let persistedWhitelist = this.getPersistedData('whitelist');\n\n        if( Array.isArray(persistedWhitelist))\n            this.whitelist = Array.isArray(_s.whitelist)\n                ? concatWithoutDups(_s.whitelist, persistedWhitelist)\n                : persistedWhitelist;\n    },\n\n    /**\n     * Returns a string of HTML element attributes\n     * @param {Object} data [Tag data]\n     */\n    getAttributes( data ){\n        var attrs = this.getCustomAttributes(data), s = '', k;\n\n        for( k in attrs )\n            s += \" \" + k + (data[k] !== undefined ? `=\"${attrs[k]}\"` : \"\");\n\n        return s;\n    },\n\n    /**\n     * Returns an object of attributes to be used for the templates\n     */\n    getCustomAttributes( data ){\n        // only items which are objects have properties which can be used as attributes\n        if( !isObject(data) )\n            return '';\n\n        var output = {}, propName;\n\n        for( propName in data ){\n            if( propName.slice(0,2) != '__' && propName != 'class' && data.hasOwnProperty(propName) && data[propName] !== undefined )\n                output[propName] = escapeHTML(data[propName])\n        }\n        return output\n    },\n\n    setStateSelection(){\n        var selection = window.getSelection()\n\n        // save last selection place to be able to inject anything from outside to that specific place\n        var sel = {\n            anchorOffset: selection.anchorOffset,\n            anchorNode  : selection.anchorNode,\n            range       : selection.getRangeAt && selection.rangeCount && selection.getRangeAt(0)\n        }\n\n        this.state.selection = sel\n        return sel\n    },\n\n    /**\n     * Get specific CSS variables which are relevant to this script and parse them as needed.\n     * The result is saved on the instance in \"this.CSSVars\"\n     */\n    getCSSVars(){\n        var compStyle = getComputedStyle(this.DOM.scope, null)\n\n        const getProp = name => compStyle.getPropertyValue('--'+name)\n\n        function seprateUnitFromValue(a){\n            if( !a ) return {}\n            a = a.trim().split(' ')[0]\n            var unit  = a.split(/\\d+/g).filter(n=>n).pop().trim(),\n                value = +a.split(unit).filter(n=>n)[0].trim()\n            return {value, unit}\n        }\n\n        this.CSSVars = {\n            tagHideTransition: (({value, unit}) => unit=='s' ? value * 1000 : value)(seprateUnitFromValue(getProp('tag-hide-transition')))\n        }\n    },\n\n    /**\n     * builds the HTML of this component\n     * @param  {Object} input [DOM element which would be \"transformed\" into \"Tags\"]\n     */\n    build( input ){\n        var DOM  = this.DOM,\n            labelWrapper = input.closest('label');\n\n        if( this.settings.mixMode.integrated ){\n            DOM.originalInput = null;\n            DOM.scope = input;\n            DOM.input = input;\n        }\n\n        else {\n            DOM.originalInput = input\n            DOM.originalInput_tabIndex = input.tabIndex\n            DOM.scope = this.parseTemplate('wrapper', [input, this.settings])\n            DOM.input = DOM.scope.querySelector(this.settings.classNames.inputSelector)\n            input.parentNode.insertBefore(DOM.scope, input)\n            input.tabIndex = -1; // do not allow focus or typing directly, once tagified\n        }\n\n        // fixes tagify nested inside a <label> tag from getting focus when clicked on\n        if( labelWrapper )\n            labelWrapper.setAttribute('for', '')\n    },\n\n    /**\n     * revert any changes made by this component\n     */\n    destroy(){\n        this.events.unbindGlobal.call(this)\n        this.DOM.scope.parentNode?.removeChild(this.DOM.scope)\n        this.DOM.originalInput.tabIndex = this.DOM.originalInput_tabIndex\n        delete this.DOM.originalInput.__tagify\n        this.dropdown.hide(true)\n        this.removeAllCustomListeners()\n        clearTimeout(this.dropdownHide__bindEventsTimeout)\n        clearInterval(this.listeners?.main?.originalInputValueObserverInterval)\n    },\n\n    /**\n     * if the original input has any values, add them as tags\n     */\n    loadOriginalValues( value ){\n        var lastChild,\n            _s = this.settings\n\n        // temporarily block firing the \"change\" event on the original input until\n        // this method finish removing current value and adding a new one\n        this.state.blockChangeEvent = true\n\n        if( value === undefined ){\n            const persistedOriginalValue = this.getPersistedData('value')\n\n            // if the field already has a field, trust its the desired\n            // one to be rendered and do not use the persisted one\n            if( persistedOriginalValue && !this.DOM.originalInput.value )\n                value = persistedOriginalValue\n            else\n                value = _s.mixMode.integrated ? this.DOM.input.textContent : this.DOM.originalInput.value\n        }\n\n        this.removeAllTags()\n\n        if( value ){\n            if( _s.mode == 'mix' ){\n                this.parseMixTags(value)\n\n                lastChild = this.DOM.input.lastChild\n\n                // fixes a Chrome bug, when the last node in `mix-mode` is a tag, the caret appears at the far-top-top, outside the field\n                if( !lastChild || lastChild.tagName != 'BR' )\n                    this.DOM.input.insertAdjacentHTML('beforeend', '<br>')\n            }\n\n            else{\n                try{\n                    if( JSON.parse(value) instanceof Array )\n                        value = JSON.parse(value)\n                }\n                catch(err){}\n                this.addTags(value, true).forEach(tag => tag && tag.classList.add(_s.classNames.tagNoAnimation))\n            }\n        }\n\n        else\n            this.postUpdate()\n\n        this.state.lastOriginalValueReported = _s.mixMode.integrated ? '' : this.DOM.originalInput.value\n    },\n\n    cloneEvent(e){\n        var clonedEvent = {}\n        for( var v in e )\n            if( v != 'path' )\n                clonedEvent[v] = e[v]\n        return clonedEvent\n    },\n\n    /**\n     * Toogle global loading state on/off\n     * Useful when fetching async whitelist while user is typing\n     * @param {Boolean} isLoading\n     */\n    loading( isLoading ){\n        this.state.isLoading = isLoading\n        // IE11 doesn't support toggle with second parameter\n        this.DOM.scope.classList[isLoading ? \"add\" : \"remove\"](this.settings.classNames.scopeLoading)\n        return this\n    },\n\n    /**\n     * Toogle a tag loading state on/off\n     * @param {Boolean} isLoading\n     */\n    tagLoading( tagElm, isLoading ){\n        if( tagElm )\n            // IE11 doesn't support toggle with second parameter\n            tagElm.classList[isLoading ? \"add\" : \"remove\"](this.settings.classNames.tagLoading)\n        return this\n    },\n\n    /**\n     * Toggles class on the main tagify container (\"scope\")\n     * @param {String} className\n     * @param {Boolean} force\n     */\n    toggleClass( className, force ){\n        if( typeof className == 'string' )\n            this.DOM.scope.classList.toggle(className, force)\n    },\n\n    toggleScopeValidation( validation ){\n        var isValid = validation === true || validation === undefined; // initially it is undefined\n\n        if( !this.settings.required && validation && validation === this.TEXTS.empty)\n            isValid = true\n\n        this.toggleClass(this.settings.classNames.tagInvalid, !isValid)\n        this.DOM.scope.title = isValid ? '' : validation\n    },\n\n    toggleFocusClass( force ){\n        this.toggleClass(this.settings.classNames.focus, !!force)\n    },\n\n    /**\n     * Sets the templates placeholder after initialization\n     * @param {String} str\n     */\n    setPlaceholder(str) {\n        ['data', 'aria'].forEach(p => this.DOM.input.setAttribute(`${p}-placeholder`, str))\n    },\n\n    triggerChangeEvent,\n\n    events,\n\n    fixFirefoxLastTagNoCaret(){\n        return // seems to be fixed in newer version of FF, so retiring below code (for now)\n        // var inputElm = this.DOM.input\n\n        // if( this.isFirefox && inputElm.childNodes.length && inputElm.lastChild.nodeType == 1 ){\n        //     inputElm.appendChild(document.createTextNode(\"\\u200b\"))\n        //     this.setRangeAtStartEnd(true, inputElm)\n        //     return true\n        // }\n    },\n\n    /** https://stackoverflow.com/a/59156872/104380\n     * @param {Boolean} start indicating where to place it (start or end of the node)\n     * @param {Object}  node  DOM node to place the caret at\n     */\n    setRangeAtStartEnd( start, node ){\n        if( !node ) return;\n\n        start = typeof start == 'number' ? start : !!start\n        node = node.lastChild || node;\n        var sel = document.getSelection()\n\n        // do not force caret placement if the current selection (focus) is on another element (not this tagify instance)\n        if( sel.focusNode instanceof Element && !this.DOM.input.contains(sel.focusNode) ) {\n            return true\n        }\n\n        try{\n            if( sel.rangeCount >= 1 ){\n                ['Start', 'End'].forEach(pos =>\n                    sel.getRangeAt(0)[\"set\" + pos](node, start ? start : node.length)\n                )\n            }\n        } catch(err){\n            console.warn(err)\n        }\n    },\n\n    insertAfterTag( tagElm, newNode ){\n        newNode = newNode || this.settings.mixMode.insertAfterTag;\n\n        if( !tagElm || !tagElm.parentNode || !newNode ) return\n\n        newNode = typeof newNode == 'string'\n            ? document.createTextNode(newNode)\n            : newNode\n\n        tagElm.parentNode.insertBefore(newNode, tagElm.nextSibling)\n        return newNode\n    },\n\n    // compares all \"__originalData\" property values with the current \"tagData\" properties\n    // and returns \"true\" if something changed.\n    editTagChangeDetected(tagData) {\n        var originalData = tagData.__originalData;\n\n        for( var prop in originalData )\n            if( !this.dataProps.includes(prop) && tagData[prop] != originalData[prop] )\n                return true\n\n        return false; // not changed\n    },\n\n    // returns the node which has the actual tag's content\n    getTagTextNode(tagElm){\n        return tagElm.querySelector(this.settings.classNames.tagTextSelector)\n    },\n\n    // sets the text of a tag\n    setTagTextNode(tagElm, HTML){\n        this.getTagTextNode(tagElm).innerHTML = escapeHTML(HTML)\n    },\n\n    /**\n     * Enters a tag into \"edit\" mode\n     * @param {Node} tagElm the tag element to edit. if nothing specified, use last last\n     */\n    editTag( tagElm, opts ){\n        tagElm = tagElm || this.getLastTag()\n        opts = opts || {}\n\n        var _s = this.settings,\n            editableElm = this.getTagTextNode(tagElm),\n            tagIdx = this.getNodeIndex(tagElm),\n            tagData = getSetTagData(tagElm),\n            _CB = this.events.callbacks,\n            isValid = true,\n            isSelectMode = _s.mode == 'select'\n\n        // select mode is a bit different as clicking the tagify's content once will get into edit-mode if a value\n        // is already selected, and there cannot be a dropdown already open at this point.\n        !isSelectMode && this.dropdown.hide()\n\n        if( !editableElm ){\n            logger.warn('Cannot find element in Tag template: .', _s.classNames.tagTextSelector);\n            return;\n        }\n\n        if( tagData instanceof Object && \"editable\" in tagData && !tagData.editable )\n            return\n\n        // cache the original data, on the DOM node, before any modification ocurs, for possible revert\n        tagData = getSetTagData(tagElm, {\n            __originalData: extend({}, tagData),\n            __originalHTML: tagElm.cloneNode(true)\n        })\n        // re-set the tagify custom-prop on the clones element (because cloning removed it)\n        getSetTagData(tagData.__originalHTML, tagData.__originalData)\n\n        editableElm.setAttribute('contenteditable', true)\n        tagElm.classList.add( _s.classNames.tagEditing )\n\n        // because \"editTag\" method can be called manually, make sure that \"state.editing\" is set correctly\n        this.events.callbacks.onEditTagFocus.call(this, tagElm)\n\n        editableElm.addEventListener('click'            , _CB.onEditTagClick.bind(this, tagElm))\n        editableElm.addEventListener('blur'             , _CB.onEditTagBlur.bind(this, this.getTagTextNode(tagElm)))\n        editableElm.addEventListener('input'            , _CB.onEditTagInput.bind(this, editableElm))\n        editableElm.addEventListener('paste'            , _CB.onEditTagPaste.bind(this, editableElm))\n        editableElm.addEventListener('keydown'          , e => _CB.onEditTagkeydown.call(this, e, tagElm))\n        editableElm.addEventListener('compositionstart' , _CB.onCompositionStart.bind(this))\n        editableElm.addEventListener('compositionend'   , _CB.onCompositionEnd.bind(this))\n\n        if( !opts.skipValidation )\n            isValid = this.editTagToggleValidity(tagElm)\n\n        editableElm.originalIsValid = isValid\n\n        this.trigger(\"edit:start\", { tag:tagElm, index:tagIdx, data:tagData, isValid })\n\n        editableElm.focus()\n        !isSelectMode && this.setRangeAtStartEnd(false, editableElm) // place the caret at the END of the editable tag text\n\n        _s.dropdown.enabled === 0 && !isSelectMode && this.dropdown.show()\n        this.state.hasFocus = true\n\n        return this\n    },\n\n    /**\n     * If a tag is invalid, for any reason, set its class to \"not allowed\" (see defaults file)\n     * @param {Node} tagElm required\n     * @param {Object} tagData optional\n     * @returns true if valid, a string (reason) if not\n     */\n    editTagToggleValidity( tagElm, tagData ){\n        var tagData = tagData || getSetTagData(tagElm),\n            isValid;\n\n        if( !tagData ){\n            logger.warn(\"tag has no data: \", tagElm, tagData)\n            return;\n        }\n\n        isValid = !(\"__isValid\" in tagData) || tagData.__isValid === true\n\n        if( !isValid ){\n            this.removeTagsFromValue(tagElm)\n        }\n\n        this.update()\n\n        //this.validateTag(tagData);\n\n        tagElm.classList.toggle(this.settings.classNames.tagNotAllowed, !isValid)\n        tagData.__isValid = isValid;\n\n        return tagData.__isValid\n    },\n\n    onEditTagDone(tagElm, tagData){\n        tagElm = tagElm || this.state.editing.scope\n        tagData = tagData || {}\n\n        var _s = this.settings,\n            eventData = {\n                tag         : tagElm,\n                index       : this.getNodeIndex(tagElm),\n                previousData: getSetTagData(tagElm),\n                data        : tagData\n            }\n\n        this.trigger(\"edit:beforeUpdate\", eventData, {cloneData:false})\n\n        this.state.editing = false;\n\n        delete tagData.__originalData\n        delete tagData.__originalHTML\n\n        // some scenarrios like in the one in the demos page with textarea that has 2 whitelists, one of the whitelist might be\n        // an array of objects with a property defined the same as the `tagTextProp` setting (if used) but another whitelist\n        // might be simpler - just an array of primitives.\n        function veryfyTagTextProp() {\n            var tagTextProp = tagData[_s.tagTextProp];\n\n            // 'tagTextProp' might also be the number 0 so checking for `undefined` here:\n            if( tagTextProp !== undefined ) {\n                tagTextProp += ''; // cast possible number into a string\n                return !!tagTextProp.trim?.()\n            }\n\n            if( !(_s.tagTextProp in tagData) )\n                return !!tagData.value\n        }\n\n        if( tagElm && tagElm.parentNode ){\n            if( veryfyTagTextProp() ){\n                tagElm = this.replaceTag(tagElm, tagData)\n                this.editTagToggleValidity(tagElm, tagData)\n\n                if( _s.a11y.focusableTags )\n                    tagElm.focus()\n                else if( _s.mode != 'select' )\n                    // place caret after edited tag\n                    placeCaretAfterNode(tagElm)\n            }\n\n            else\n                this.removeTags(tagElm)\n        }\n\n        this.trigger(\"edit:updated\", eventData)\n        _s.dropdown.closeOnSelect && this.dropdown.hide()\n\n        // check if any of the current tags which might have been marked as \"duplicate\" should be now un-marked\n        if( this.settings.keepInvalidTags )\n            this.reCheckInvalidTags()\n    },\n\n    /**\n     * Replaces an exisitng tag with a new one. Used for updating a tag's data\n     * @param {Object} tagElm  [DOM node to replace]\n     * @param {Object} tagData [data to create new tag from]\n     */\n    replaceTag(tagElm, tagData){\n        if( !tagData || tagData.value === '' || tagData.value === undefined )\n            tagData = tagElm.__tagifyTagData\n\n        // if tag is invalid, make the according changes in the newly created element\n        if( tagData.__isValid && tagData.__isValid != true )\n            extend( tagData, this.getInvalidTagAttrs(tagData, tagData.__isValid) )\n\n        var newTagElm = this.createTagElem(tagData)\n\n        // update DOM\n        tagElm.parentNode.replaceChild(newTagElm, tagElm)\n        this.updateValueByDOMTags()\n        return newTagElm\n    },\n\n    /**\n     * update \"value\" (Array of Objects) by traversing all valid tags\n     */\n    updateValueByDOMTags(){\n        this.value.length = 0;\n\n        var clsNames = this.settings.classNames,\n            tagNotAllowedClassName = clsNames.tagNotAllowed.split(' ')[0],\n            skipNodesWithClassNames = [tagNotAllowedClassName, clsNames.tagHide];\n\n        [].forEach.call(this.getTagElms(), node => {\n            if ([...node.classList].some(cls => skipNodesWithClassNames.includes(cls))) return;\n            this.value.push( getSetTagData(node) )\n        })\n\n        this.update()\n        this.dropdown.refilter()\n    },\n\n    /**\n     * injects nodes/text at caret position, which is saved on the \"state\" when \"blur\" event gets triggered\n     * @param {Node} injectedNode [the node to inject at the caret position]\n     * @param {Object} selection [optional range Object. must have \"anchorNode\" & \"anchorOffset\"]\n     */\n    injectAtCaret( injectedNode, range ){\n        range = range || this.state.selection?.range\n\n        if( typeof injectedNode === 'string' )\n            injectedNode = document.createTextNode(injectedNode)\n\n        if( !injectedNode )\n            return this\n\n        const DOCUMENT_FRAGMENT_NODE = 11\n        const insertedNodes = injectedNode.nodeType === DOCUMENT_FRAGMENT_NODE\n            ? Array.prototype.slice.call(injectedNode.childNodes)\n            : [injectedNode]\n\n        if( !insertedNodes.length )\n            return this\n\n        if( !range ){\n            this.appendMixTags(injectedNode)\n            return this\n        }\n\n        const isValidInjectionPoint = this.DOM.scope.contains(range?.startContainer)\n\n        if( !isValidInjectionPoint )\n            return this\n\n        injectAtCaret(injectedNode, range)\n\n        const caretTarget = insertedNodes[insertedNodes.length - 1] || injectedNode\n\n        if( caretTarget?.parentNode )\n            placeCaretAfterNode(caretTarget)\n\n        this.setStateSelection()\n\n        this.updateValueByDOMTags() // updates internal \"this.value\"\n        this.update() // updates original input/textarea\n\n        return this\n    },\n\n    /**\n     * input bridge for accessing & setting\n     * @type {Object}\n     */\n    input : {\n        set( value = '', updateDOM = true ){\n            var _s = this.settings,\n                hideDropdown = _s.dropdown.closeOnSelect\n\n            this.state.inputText = value\n\n            if( updateDOM ) {\n                this.DOM.input.innerHTML = escapeHTML(\"\"+value);\n                value && this.toggleClass(_s.classNames.empty, !this.DOM.input.innerHTML) // remove the \"empty\" (is exists) class only if a value was added\n            }\n\n            if( !value && hideDropdown )\n                this.dropdown.hide.bind(this)\n\n            this.input.autocomplete.suggest.call(this);\n            this.input.validate.call(this);\n\n        },\n\n        raw(){\n            return this.DOM.input.textContent\n        },\n\n        /**\n         * Marks the tagify's input as \"invalid\" if the value did not pass \"validateTag()\"\n         */\n        validate(){\n            var isValid = !this.state.inputText || this.validateTag({value:this.state.inputText}) === true;\n\n            this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid, !isValid)\n\n            return isValid\n        },\n\n        // remove any child DOM elements that aren't of type TEXT (like <br>)\n        normalize( node, options ){\n            var clone = node || this.DOM.input, //.cloneNode(true),\n                v = [];\n\n            // when a text was pasted in FF, the \"this.DOM.input\" element will have <br> but no newline symbols (\\n), and this will\n            // result in tags not being properly created if one wishes to create a separate tag per newline.\n            clone.childNodes.forEach(n => n.nodeType==3 && v.push(n.nodeValue))\n            v = v.join(\"\\n\")\n\n            try{\n                // \"delimiters\" might be of a non-regex value, where this will fail (\"Tags With Properties\" example in demo page):\n                v = v.replace(/(?:\\r\\n|\\r|\\n)/g, this.settings.delimiters.source.charAt(0))\n            }\n            catch(err){}\n\n            v = v.replace(/\\s/g, ' ')  // replace NBSPs with spaces characters\n\n            return options?.trim ? this.trim(v) : v\n        },\n\n        /**\n         * suggest the rest of the input's value (via CSS \"::after\" using \"content:attr(...)\")\n         * @param  {String} s [description]\n         */\n        autocomplete : {\n            suggest( data ){\n                if( !this.settings.autoComplete.enabled ) return;\n\n                data = data || {value:''}\n                if (typeof data !== 'object') data = { value: data };\n\n                var suggestedText = this.dropdown.getMappedValue(data);\n\n                if( typeof suggestedText === 'number' ) return\n\n                var inputText = this.state.inputText.toLowerCase(),\n                    suggestionStart = suggestedText.substr(0, this.state.inputText.length).toLowerCase(),\n                    suggestionTrimmed = suggestedText.substring(this.state.inputText.length);\n\n                if( !suggestedText || !this.state.inputText || suggestionStart != inputText ){\n                    this.DOM.input.removeAttribute(\"data-suggest\");\n                    delete this.state.inputSuggestion\n                }\n                else{\n                    this.DOM.input.setAttribute(\"data-suggest\", suggestionTrimmed);\n                    this.state.inputSuggestion = data\n                }\n            },\n\n            /**\n             * sets the suggested text as the input's value & cleanup the suggestion autocomplete.\n             * @param {String} s [text]\n             */\n            set( s ){\n                var dataSuggest = this.DOM.input.getAttribute('data-suggest'),\n                    suggestion = s || (dataSuggest ? this.state.inputText + dataSuggest : null);\n\n                if( suggestion ){\n                    if( this.settings.mode == 'mix' ){\n                        this.replaceTextWithNode( document.createTextNode(this.state.tag.prefix + suggestion) )\n                    }\n                    else{\n                        this.input.set.call(this, suggestion);\n                        this.setRangeAtStartEnd(false, this.DOM.input)\n                    }\n\n                    this.input.autocomplete.suggest.call(this);\n                    this.dropdown.hide();\n\n                    return true;\n                }\n\n                return false;\n            }\n        }\n    },\n\n    /**\n     * returns the index of the the tagData within the \"this.value\" array collection.\n     * since values should be unique, it is suffice to only search by \"value\" property\n     * @param {Object} tagData\n     */\n    getTagIdx( tagData ){\n        return this.value.findIndex(item => item.__tagId == (tagData||{}).__tagId )\n    },\n\n    getNodeIndex( node ){\n        var index = 0;\n\n        if( node )\n            while( (node = node.previousElementSibling) )\n                index++;\n\n        return index;\n    },\n\n    getTagElms( ...classess ){\n        var classname = '.' + [...this.settings.classNames.tag.split(' '), ...classess].join('.')\n        return [].slice.call(this.DOM.scope.querySelectorAll(classname)) // convert nodeList to Array - https://stackoverflow.com/a/3199627/104380\n    },\n\n    /**\n     * gets the last non-readonly, not-in-the-proccess-of-removal tag\n     */\n    getLastTag(){\n        var _sc = this.settings.classNames,\n            tagNodes = this.DOM.scope.querySelectorAll(`${_sc.tagSelector}:not(.${_sc.tagHide}):not([readonly])`);\n        return tagNodes[tagNodes.length - 1];\n    },\n\n    /**\n     * Searches if any tag with a certain value already exis\n     * @param  {String/Object} value [text value / tag data object]\n     * @param  {Boolean} caseSensitive\n     * @return {Number}\n     */\n    isTagDuplicate( value, caseSensitive, tagId ){\n        var dupsCount = 0;\n\n        for( let item of this.value ) {\n            let isSameStr = sameStr( this.trim(\"\"+value), item.value, caseSensitive );\n            if( isSameStr && tagId != item.__tagId )\n                dupsCount++;\n        }\n\n        return dupsCount\n    },\n\n    getTagIndexByValue( value ){\n        var indices = [],\n            isCaseSensitive = this.settings.dropdown.caseSensitive;\n\n        this.getTagElms().forEach((tagElm, i) => {\n            if(  tagElm.__tagifyTagData && sameStr( this.trim(tagElm.__tagifyTagData.value), value, isCaseSensitive )  )\n                indices.push(i)\n        })\n\n        return indices;\n    },\n\n    getTagElmByValue( value ){\n        var tagIdx = this.getTagIndexByValue(value)[0]\n        return this.getTagElms()[tagIdx]\n    },\n\n    /**\n     * Temporarily marks a tag element (by value or Node argument)\n     * @param  {Object} tagElm [a specific \"tag\" element to compare to the other tag elements siblings]\n     */\n    flashTag( tagElm ){\n        if( tagElm ){\n            tagElm.classList.add(this.settings.classNames.tagFlash)\n            setTimeout(() => { tagElm.classList.remove(this.settings.classNames.tagFlash) }, 100)\n        }\n    },\n\n    /**\n     * checks if text is in the blacklist\n     */\n    isTagBlacklisted( v ){\n        v = this.trim(v.toLowerCase());\n        return this.settings.blacklist.filter(x => (\"\"+x).toLowerCase() == v).length;\n    },\n\n    /**\n     * checks if text is in the whitelist\n     */\n    isTagWhitelisted( v ){\n        return !!this.getWhitelistItem(v)\n        /*\n        return this.settings.whitelist.some(item =>\n            typeof v == 'string'\n                ? sameStr(this.trim(v), (item.value || item))\n                : sameStr(JSON.stringify(item), JSON.stringify(v))\n        )\n        */\n    },\n\n    /**\n     * Returns the first whitelist item matched, by value (if match found)\n     * @param {String} value [text to match by]\n     */\n    getWhitelistItem( value, prop, whitelist ){\n        var result,\n            prop = prop || 'value',\n            _s = this.settings,\n            whitelist = whitelist || _s.whitelist;\n\n        whitelist.some(_wi => {\n            // whitelist item value. Can be either a String, Number or an Object (with a `value` property)\n            var _wiv = typeof _wi == 'object' ? (_wi[prop] || _wi.value) : _wi,\n                isSameStr = sameStr(_wiv, value, _s.dropdown.caseSensitive, _s.trim)\n\n            if( isSameStr ){\n                result = typeof _wi == 'object' ? _wi : {value:_wi}\n                return true\n            }\n        })\n\n        // first iterate the whitelist, try find matches by \"value\" and if that fails\n        // and a \"tagTextProp\" is set to be other than \"value\", try that also\n        if( !result && prop == 'value' && _s.tagTextProp != 'value' ){\n            // if found, adds the first which matches\n            result = this.getWhitelistItem(value, _s.tagTextProp, whitelist)\n        }\n\n        return result\n    },\n\n    /**\n     * validate a tag object BEFORE the actual tag will be created & appeneded\n     * @param  {String} s\n     * @param  {String} uid      [unique ID, to not inclue own tag when cheking for duplicates]\n     * @return {Boolean/String}  [\"true\" if validation has passed, String for a fail]\n     */\n    validateTag( tagData ){\n        var _s = this.settings,\n            // when validating a tag in edit-mode, need to take \"tagTextProp\" into consideration\n            prop = \"value\" in tagData ? \"value\" : _s.tagTextProp,\n            v = this.trim(tagData[prop] + \"\");\n\n        // check for definitive empty value\n        if( !(tagData[prop]+\"\").trim() )\n            return this.TEXTS.empty;\n\n        // check if pattern should be used and if so, use it to test the value\n        if( _s.mode != 'mix' && _s.pattern && _s.pattern instanceof RegExp && !(_s.pattern.test(v)) )\n            return this.TEXTS.pattern;\n\n        // check for duplicates\n        if( !_s.duplicates && this.isTagDuplicate(v, _s.dropdown.caseSensitive, tagData.__tagId) )\n            return this.TEXTS.duplicate;\n\n        if( this.isTagBlacklisted(v) || (_s.enforceWhitelist && !this.isTagWhitelisted(v)) )\n            return this.TEXTS.notAllowed;\n\n        if( _s.validate )\n            return _s.validate(tagData)\n\n        return true\n    },\n\n    getInvalidTagAttrs(tagData, validation){\n        return {\n            \"aria-invalid\" : true,\n            \"class\": `${tagData.class || ''} ${this.settings.classNames.tagNotAllowed}`.trim(),\n            \"title\": validation\n        }\n    },\n\n    hasMaxTags(){\n        return this.value.length >= this.settings.maxTags\n            ? this.TEXTS.exceed\n            : false\n    },\n\n    setReadonly( toggle, attrribute ){\n        var _s = this.settings\n\n        this.DOM.scope.contains(document.activeElement) && document.activeElement.blur() // exit possible edit-mode\n        _s[attrribute || 'readonly'] = toggle\n        this.DOM.scope[(toggle ? 'set' : 'remove') + 'Attribute'](attrribute || 'readonly', true)\n\n        this.settings.userInput = true;\n        this.setContentEditable(!toggle)\n\n        if( !toggle ) {\n            // first unbind all events\n            this.events.binding.call(this, true)\n            // re-bind all events\n            this.events.binding.call(this)\n        }\n    },\n\n    setContentEditable(state){\n        this.DOM.scope.querySelectorAll(\"[data-can-editable]\").forEach(elm => {\n            elm.contentEditable = state\n            elm.tabIndex = !!state ? 0 : -1;\n        })\n    },\n\n    setDisabled( isDisabled ){\n        this.setReadonly(isDisabled, 'disabled')\n    },\n\n    /**\n     * pre-proccess the tagsItems, which can be a complex tagsItems like an Array of Objects or a string comprised of multiple words\n     * so each item should be iterated on and a tag created for.\n     * @return {Array} [Array of Objects]\n     */\n    normalizeTags( tagsItems ){\n        var {whitelist, delimiters, mode, tagTextProp} = this.settings,\n            whitelistMatches = [],\n            whitelistWithProps = whitelist ? whitelist[0] instanceof Object : false,\n            // checks if this is a \"collection\", meanning an Array of Objects\n            isArray = Array.isArray(tagsItems),\n            isCollection = isArray && tagsItems[0].value,\n            mapStringToCollection = s => (s+\"\").split(delimiters).reduce((acc, v) => {\n                const trimmed = this.trim(v)\n                trimmed && acc.push({ [tagTextProp]:trimmed, value:trimmed })\n                return acc\n            }, [])\n\n        if( typeof tagsItems == 'number' )\n            tagsItems = tagsItems.toString()\n\n        // if the argument is a \"simple\" String, ex: \"aaa, bbb, ccc\"\n        if( typeof tagsItems == 'string' ){\n            if( !tagsItems.trim() ) return [];\n\n            // go over each tag and add it (if there were multiple ones)\n            tagsItems = mapStringToCollection(tagsItems)\n        }\n\n        // if is an Array of Strings, convert to an Array of Objects\n        else if( isArray ){\n            // flatten the 2D array\n            tagsItems = tagsItems.reduce((acc, item) => {\n                if( isObject(item) ) {\n                    var itemCopy = extend({}, item)\n\n                    // if 'tagTextProp' property does not exist in the item, use `value` instead\n                    if(!(tagTextProp in itemCopy))\n                        tagTextProp = 'value'\n\n                    itemCopy[tagTextProp] = this.trim(itemCopy[tagTextProp])\n\n                    // discard empty tags but allow `0` as a valid value\n                    if( itemCopy[tagTextProp] || itemCopy[tagTextProp] === 0 )\n                        acc.push(itemCopy) // mapStringToCollection(item.value).map(newItem => ({...item,...newItem}))\n                }\n\n                else if(item != null && item !== '' && item !== undefined) {\n                    acc.push( ...mapStringToCollection(item) )\n                }\n\n                return acc\n            }, [])\n        }\n\n        // search if the tag exists in the whitelist as an Object (has props),\n        // to be able to use its properties.\n        // skip matching collections with whitelist items as they are considered \"whole\"\n        if( whitelistWithProps && !isCollection ){\n            tagsItems.forEach(item => {\n                var whitelistMatchesValues = whitelistMatches.map(a=>a.value)\n\n                // if suggestions are shown, they are already filtered, so it's easier to use them,\n                // because the whitelist might also include items which have already been added\n                var filteredList = this.dropdown.filterListItems.call(this, item[tagTextProp], { exact:true })\n\n                if( !this.settings.duplicates )\n                    // also filter out items which have already been matched in previous iterations\n                    filteredList = filteredList.filter(filteredItem => !whitelistMatchesValues.includes(filteredItem.value))\n\n                // get the best match out of list of possible matches.\n                // if there was a single item in the filtered list, use that one\n                var matchObj = filteredList.length > 1\n                    ? this.getWhitelistItem(item[tagTextProp], tagTextProp, filteredList)\n                    : filteredList[0]\n\n                if( matchObj && matchObj instanceof Object ){\n                    whitelistMatches.push( matchObj ) // set the Array (with the found Object) as the new value\n                }\n                else if( mode != 'mix' ){\n                    if( item.value == undefined )\n                        item.value = item[tagTextProp]\n                    whitelistMatches.push(item)\n                }\n            })\n\n            if( whitelistMatches.length )\n                tagsItems = whitelistMatches\n        }\n\n        return tagsItems;\n    },\n\n    /**\n     * Parse the initial value of a textarea (or input) element and generate mixed text w/ tags\n     * https://stackoverflow.com/a/57598892/104380\n     * @param {String} s\n     */\n    parseMixTags( s ){\n        var {mixTagsInterpolator, duplicates, transformTag, enforceWhitelist, maxTags, tagTextProp} = this.settings,\n            tagsDataSet = [];\n\n        s = s.split(mixTagsInterpolator[0]).map((s1, i) => {\n            var s2 = s1.split(mixTagsInterpolator[1]),\n                preInterpolated = s2[0],\n                maxTagsReached = tagsDataSet.length == maxTags,\n                textProp,\n                tagData,\n                tagElm;\n\n            try{\n                // skip numbers and go straight to the \"catch\" statement\n                if( preInterpolated == +preInterpolated )\n                    throw Error\n                tagData = JSON.parse(preInterpolated)\n            } catch(err){\n                tagData = this.normalizeTags(preInterpolated)[0] || {value:preInterpolated}\n            }\n\n            transformTag.call(this, tagData)\n\n            if( !maxTagsReached   &&\n                s2.length > 1   &&\n                (!enforceWhitelist || this.isTagWhitelisted(tagData.value))   &&\n                !(!duplicates && this.isTagDuplicate(tagData.value)) ){\n\n                // in case \"tagTextProp\" setting is set to other than \"value\" and this tag does not have this prop\n                textProp = tagData[tagTextProp] ? tagTextProp : 'value'\n                tagData[textProp] = this.trim(tagData[textProp])\n\n                tagElm = this.createTagElem(tagData)\n                tagsDataSet.push( tagData )\n                tagElm.classList.add(this.settings.classNames.tagNoAnimation)\n\n                s2[0] = tagElm.outerHTML //+ \"&#8288;\"  // put a zero-space at the end so the caret won't jump back to the start (when the last input's child element is a tag)\n                this.value.push(tagData)\n            }\n            else if(s1)\n                return i ? mixTagsInterpolator[0] + s1 : s1\n\n            return s2.join('')\n        }).join('')\n\n        this.DOM.input.innerHTML = s\n        this.DOM.input.appendChild(document.createTextNode(''))\n        this.DOM.input.normalize()\n\n        var tagNodes = this.getTagElms()\n\n        tagNodes.forEach((elm, idx) => getSetTagData(elm,  tagsDataSet[idx]))\n        this.update({withoutChangeEvent:true})\n\n        fixCaretBetweenTags(tagNodes, this.state.hasFocus)\n        return s\n    },\n\n    /**\n     * For mixed-mode: replaces a text starting with a prefix with a wrapper element (tag or something)\n     * First there *has* to be a \"this.state.tag\" which is a string that was just typed and is staring with a prefix\n     */\n    replaceTextWithNode( newWrapperNode, strToReplace ){\n        if( !this.state.tag && !strToReplace ) return;\n\n        strToReplace = strToReplace || this.state.tag.prefix + this.state.tag.value;\n        var idx, nodeToReplace,\n            selection = this.state.selection || window.getSelection(),\n            nodeAtCaret = selection.anchorNode,\n            firstSplitOffset = this.state.tag.delimiters ? this.state.tag.delimiters.length : 0;\n\n        // STEP 1: ex. replace #ba with the tag \"bart\" where \"|\" is where the caret is:\n        // CURRENT STATE: \"foo #ba #ba| #ba\"\n\n        // split the text node at the index of the caret\n        nodeAtCaret.splitText(selection.anchorOffset - firstSplitOffset)\n\n        // node 0: \"foo #ba #ba|\"\n        // node 1: \" #ba\"\n\n        // get index of LAST occurence of \"#ba\"\n        idx = nodeAtCaret.nodeValue.lastIndexOf(strToReplace)\n\n        if( idx == -1 ) return true;\n\n        nodeToReplace = nodeAtCaret.splitText(idx)\n\n        // node 0: \"foo #ba \"\n        // node 1: \"#ba\"    <- nodeToReplace\n\n        newWrapperNode && nodeAtCaret.parentNode.replaceChild(newWrapperNode, nodeToReplace)\n\n        // must NOT normalize contenteditable or it will cause unwanted issues:\n        // https://monosnap.com/file/ZDVmRvq5upYkidiFedvrwzSswegWk7\n        // nodeAtCaret.parentNode.normalize()\n\n        return true;\n    },\n\n    /**\n     * Validate a tag's data and create a new tag node\n     * @param {*} tagData\n     * @param {*} options\n     * @returns Object\n     */\n    prepareNewTagNode(tagData, options) {\n        options = options || {}\n\n        var tagElm,\n            _s = this.settings,\n            aggregatedInvalidInput = [],\n            tagElmParams = {},\n            originalData = Object.assign({}, tagData, {value:tagData.value+\"\"});\n\n        // shallow-clone tagData so later modifications will not apply to the source\n        tagData = Object.assign({}, originalData)\n        _s.transformTag.call(this, tagData)\n\n        tagData.__isValid = this.hasMaxTags() || this.validateTag(tagData)\n\n        if( tagData.__isValid !== true ){\n            if( options.skipInvalid )\n                return\n\n            // originalData is kept because it might be that this tag is invalid because it is a duplicate of another,\n            // and if that other tags is edited/deleted, this one should be re-validated and if is no more a duplicate - restored\n            extend(tagElmParams, this.getInvalidTagAttrs(tagData, tagData.__isValid), {__preInvalidData:originalData})\n\n            if( tagData.__isValid == this.TEXTS.duplicate )\n                // mark, for a brief moment, the tag (this this one) which THIS CURRENT tag is a duplcate of\n                this.flashTag( this.getTagElmByValue(tagData.value) )\n\n            if( !_s.createInvalidTags ){\n                aggregatedInvalidInput.push(tagData.value)\n                return\n            }\n        }\n\n        if( 'readonly' in tagData ){\n            if( tagData.readonly )\n                tagElmParams[\"aria-readonly\"] = true\n            // if \"readonly\" is \"false\", remove it from the tagData so it won't be added as an attribute in the template\n            else\n                delete tagData.readonly\n        }\n\n        // Create tag HTML element\n        tagElm = this.createTagElem(tagData, tagElmParams)\n\n        return {tagElm, tagData, aggregatedInvalidInput}\n    },\n\n    /**\n     * Logic to happen once a tag has just been injected into the DOM\n     * @param {Node} tagElm\n     * @param {Object} tagData\n     */\n    postProcessNewTagNode(tagElm, tagData) {\n        var _s = this.settings,\n            isValid = tagData.__isValid;\n\n        if( isValid && isValid === true ){\n            // update state\n            this.value.push(tagData)\n        }\n        else{\n            this.trigger('invalid', {data:tagData, index:this.value.length, tag:tagElm, message:isValid})\n            if( !_s.keepInvalidTags )\n                // remove invalid tags (if \"keepInvalidTags\" is set to \"false\")\n                setTimeout(() => this.removeTags(tagElm, true), 1000)\n        }\n\n        this.dropdown.position() // reposition the dropdown because the just-added tag might cause a new-line\n    },\n\n    /**\n     * For selecting a single option (not used for multiple tags, but for \"mode:select\" only)\n     * @param {Object} tagElm   Tag DOM node\n     * @param {Object} tagData  Tag data\n     */\n    selectTag( tagElm, tagData ){\n        var _s = this.settings\n\n        if( _s.enforceWhitelist && !this.isTagWhitelisted(tagData.value) )\n            return\n\n        // this.input.set.call(this, tagData[_s.tagTextProp] || tagData.value, true)\n\n        // place the caret at the end of the input, only if a dropdown option was selected (and not by manually typing another value and clicking \"TAB\")\n        if( this.state.actions.selectOption )\n            setTimeout(() => this.setRangeAtStartEnd(false, this.DOM.input))\n\n        var lastTagElm = this.getLastTag()\n\n        if( lastTagElm )\n            this.replaceTag(lastTagElm, tagData)\n        else\n            this.appendTag(tagElm)\n\n        // if( _s.enforceWhitelist )\n        //     this.setContentEditable(false);\n\n        this.value[0] = tagData\n        this.update()\n        this.trigger('add', { tag:tagElm, data:tagData })\n\n        return [tagElm]\n    },\n\n    /**\n     * add an empty \"tag\" element in an editable state\n     */\n    addEmptyTag( initialData ){\n        var tagData = extend({ value:\"\" }, initialData || {}),\n            tagElm = this.createTagElem(tagData)\n\n        getSetTagData(tagElm, tagData)\n\n        // add the tag to the component's DOM\n        this.appendTag(tagElm)\n        this.editTag(tagElm, {skipValidation:true})\n        this.toggleFocusClass(true)\n    },\n\n    /**\n     * add a \"tag\" element to the \"tags\" component\n     * @param {String/Array} tagsItems   [A string (single or multiple values with a delimiter), or an Array of Objects or just Array of Strings]\n     * @param {Boolean}      clearInput  [flag if the input's value should be cleared after adding tags]\n     * @param {Boolean}      skipInvalid [do not add, mark & remove invalid tags]\n     * @return {Array} Array of DOM elements (tags)\n     */\n    addTags( tagsItems, clearInput, skipInvalid ){\n        var tagElems = [],\n            _s = this.settings,\n            aggregatedInvalidInput = [],\n            frag = document.createDocumentFragment(),\n            addedTags = []; // all tags, also invalid. this is used for firing the `add` event\n\n        if( !tagsItems || tagsItems.length == 0 ){\n            return tagElems\n        }\n\n        // converts Array/String/Object to an Array of Objects\n        tagsItems = this.normalizeTags(tagsItems)\n\n        switch( _s.mode ){\n            case 'mix': return this.addMixTags(tagsItems)\n            case 'select': {\n                clearInput = false\n                this.removeAllTags()\n            }\n        }\n\n        this.DOM.input.removeAttribute('style')\n\n        tagsItems.forEach(tagData => {\n            const newTagNode = this.prepareNewTagNode(tagData, {skipInvalid: skipInvalid || _s.skipInvalid});\n\n            if( !newTagNode) return;\n\n            const tagElm = newTagNode.tagElm;\n\n            tagData = newTagNode.tagData\n            aggregatedInvalidInput = newTagNode.aggregatedInvalidInput\n\n            tagElems.push(tagElm)\n\n            // mode-select overrides\n            if( _s.mode == 'select' ){\n                return this.selectTag(tagElm, tagData)\n            }\n\n            // add the tag to the component's DOM\n            // this.appendTag(tagElm)\n            frag.appendChild(tagElm)\n            this.postProcessNewTagNode(tagElm, tagData)\n            addedTags.push({tagElm, tagData})\n        })\n\n        this.appendTag(frag)\n\n        addedTags.forEach(({tagElm, tagData}) =>\n            this.trigger('add', {tag:tagElm, index:this.getTagIdx(tagData), data:tagData})\n        )\n\n        this.update()\n\n\n        if( tagsItems.length && clearInput ){\n            this.input.set.call(this, _s.createInvalidTags ? '' : aggregatedInvalidInput.join(_s._delimiters))\n            this.setRangeAtStartEnd(false, this.DOM.input)\n        }\n\n        // hydrate the suggestions list\n        this.dropdown.refilter()\n        return tagElems\n    },\n\n    /**\n     * Adds a mix-content tag\n     * @param {String/Array} tagData    A string (single or multiple values with a delimiter), or an Array of Objects or just Array of Strings\n     */\n    addMixTags( tagsData ){\n        tagsData = this.normalizeTags(tagsData);\n\n        // flow for creating custom tags which aren't a part of the whitelist\n        if( tagsData[0].prefix || this.state.tag ){\n            return this.prefixedTextToTag(tagsData[0])\n        }\n\n        var frag = document.createDocumentFragment();\n        var addedTags = [];\n\n        tagsData.forEach(tagData => {\n            const newTagNode = this.prepareNewTagNode(tagData)\n            frag.appendChild(newTagNode.tagElm)\n            this.insertAfterTag(newTagNode.tagElm)\n            this.postProcessNewTagNode(newTagNode.tagElm, newTagNode.tagData)\n            addedTags.push({tagElm: newTagNode.tagElm, tagData: newTagNode.tagData})\n        })\n\n        this.appendMixTags(frag, addedTags)\n\n        return frag.children\n    },\n\n    appendMixTags( node, addedTags ) {\n        const DOCUMENT_FRAGMENT_NODE = 11\n        const savedRange = this.state.selection?.range\n        const hasSavedSelection = !!savedRange && this.DOM.scope.contains(savedRange.startContainer)\n        const insertedNodes = node\n            ? (node.nodeType === DOCUMENT_FRAGMENT_NODE ? Array.prototype.slice.call(node.childNodes) : [node])\n            : []\n\n        if( hasSavedSelection ){\n            this.injectAtCaret(node)\n        }\n        else{\n            this.DOM.input.focus()\n            const selection = this.setStateSelection()\n\n            if( selection?.range ){\n                selection.range.setStart(this.DOM.input, selection.range.endOffset)\n                selection.range.setEnd(this.DOM.input, selection.range.endOffset)\n            }\n\n            this.DOM.input.appendChild(node)\n\n            this.updateValueByDOMTags() // updates internal \"this.value\"\n            this.update() // updates original input/textarea\n\n            const caretTarget = insertedNodes[insertedNodes.length - 1]\n\n            if( caretTarget?.parentNode )\n                placeCaretAfterNode(caretTarget)\n\n            this.setStateSelection()\n        }\n\n        const tagsPayload = addedTags?.length\n            ? addedTags\n            : insertedNodes.filter(node => node.nodeType === 1)\n\n        if( tagsPayload?.length )\n            this.trigger('add', {tags: tagsPayload})\n    },\n\n    /**\n     * Adds a tag which was activly typed by the user\n     * @param {String/Array} tagData   [A string (single or multiple values with a delimiter), or an Array of Objects or just Array of Strings]\n     */\n    prefixedTextToTag( tagData ){\n        var _s = this.settings,\n            tagElm,\n            newTag,\n            createdFromDelimiters = this.state.tag?.delimiters;\n\n        tagData.prefix = tagData.prefix || this.state.tag ? this.state.tag.prefix : (_s.pattern.source||_s.pattern)[0];\n\n        newTag = this.prepareNewTagNode(tagData)\n        tagElm = newTag.tagElm\n\n        // tries to replace a taged textNode with a tagElm, and if not able,\n        // insert the new tag to the END if \"addTags\" was called from outside\n        if( !this.replaceTextWithNode(tagElm) ){\n            this.DOM.input.appendChild(tagElm)\n        }\n\n        setTimeout(()=> tagElm.classList.add(this.settings.classNames.tagNoAnimation), 300)\n\n        this.update()\n\n        if( !createdFromDelimiters ) {\n            var elm = this.insertAfterTag(tagElm) || tagElm;\n            // a timeout is needed when selecting a tag from the suggestions via mouse.\n            // Without it, it seems the caret is placed right after the tag and not after the\n            // node which was inserted after the tag (whitespace by default)\n            setTimeout(placeCaretAfterNode, 0, elm);\n        }\n\n        this.state.tag = null\n\n        this.postProcessNewTagNode(tagElm, newTag.tagData)\n\n        this.trigger('add', {tag: newTag, data:tagData})\n\n        return tagElm\n    },\n\n    /**\n     * appened (validated) tag to the component's DOM scope\n     */\n    appendTag(tagElm){\n        var DOM = this.DOM,\n            insertBeforeNode = DOM.input;\n\n        //if( insertBeforeNode === DOM.input )\n            DOM.scope.insertBefore(tagElm, insertBeforeNode)\n        //else\n        //    DOM.scope.appendChild(tagElm)\n    },\n\n    /**\n     * creates a DOM tag element and injects it into the component (this.DOM.scope)\n     * @param  {Object}  tagData [text value & properties for the created tag]\n     * @param  {Object}  extraData [properties which are for the HTML template only]\n     * @return {Object} [DOM element]\n     */\n    createTagElem( tagData, extraData ){\n        tagData.__tagId = getUID()\n\n        var tagElm,\n            templateData = extend({}, tagData, { value:escapeHTML(tagData.value+\"\"), ...extraData });\n\n        // if( this.settings.readonly )\n        //     tagData.readonly = true\n\n        tagElm = this.parseTemplate('tag', [templateData, this])\n\n        // crucial for proper caret placement when deleting content. if textNodes are allowed as children of a tag element,\n        // a browser bug casues the caret to be misplaced inside the tag element (especially affects \"readonly\" tags)\n        removeTextChildNodes(tagElm)\n        // while( tagElm.lastChild.nodeType == 3 )\n        //     tagElm.lastChild.parentNode.removeChild(tagElm.lastChild)\n\n        getSetTagData(tagElm, tagData)\n        return tagElm\n    },\n\n    /**\n     * re-check all invalid tags.\n     * called after a tag was edited or removed\n     */\n    reCheckInvalidTags(){\n        var _s = this.settings\n\n        this.getTagElms(_s.classNames.tagNotAllowed).forEach((tagElm, i) => {\n            var tagData = getSetTagData(tagElm),\n                hasMaxTags = this.hasMaxTags(),\n                tagValidation = this.validateTag(tagData),\n                isValid = tagValidation === true && !hasMaxTags;\n\n            if( _s.mode == 'select' )\n                this.toggleScopeValidation(tagValidation)\n\n            // if the tag has become valid\n            if( isValid ){\n                tagData = tagData.__preInvalidData\n                    ? tagData.__preInvalidData\n                    : { value:tagData.value }\n\n                return this.replaceTag(tagElm, tagData)\n            }\n\n            // if the tag is still invaild, set its title as such (reson of invalid might have changed)\n            tagElm.title = hasMaxTags || tagValidation\n        })\n    },\n\n    /**\n     * Removes a tag\n     * @param  {Array|Node|String}  tagElms         [DOM element(s) or a String value. if undefined or null, remove last added tag]\n     * @param  {Boolean}            silent          [A flag, which when turned on, does not remove any value and does not update the original input value but simply removes the tag from tagify]\n     * @param  {Number}             tranDuration    [Transition duration in MS]\n     * TODO: Allow multiple tags to be removed at-once\n     */\n    removeTags( tagElms, silent, tranDuration ){\n        var tagsToRemove,\n            _s = this.settings;\n\n        tagElms = tagElms && tagElms instanceof HTMLElement\n            ? [tagElms]\n            : tagElms instanceof Array\n                ? tagElms\n                : tagElms\n                    ? [tagElms]\n                    : [this.getLastTag()].filter(n => n)   // must filter because \"this.getLastTag()\" might be `undefined` if there are not tags\n\n        // normalize tagElms array values:\n        // 1. removing invalid items\n        // 2, if an item is String try to get the matching Tag HTML node\n        // 3. get the tag data\n        // 4. return a collection of Objects\n        tagsToRemove = tagElms.reduce((elms, tagElm) => {\n            if( tagElm && typeof tagElm == 'string')\n                tagElm = this.getTagElmByValue(tagElm)\n\n            var tagData = getSetTagData(tagElm);\n\n            if( tagElm && tagData && !tagData.readonly ) // make sure it's a tag and not some other node\n                // because the DOM node might be removed by async animation, the state will be updated while\n                // the node might still be in the DOM, so the \"update\" method should know which nodes to ignore\n                elms.push({\n                    node: tagElm,\n                    idx: this.getTagIdx(tagData), // this.getNodeIndex(tagElm); // this.getTagIndexByValue(tagElm.textContent)\n                    data: getSetTagData(tagElm, {'__removed':true})\n                })\n\n            return elms\n        }, [])\n\n        tranDuration = typeof tranDuration == \"number\" ? tranDuration : this.CSSVars.tagHideTransition\n\n        if( _s.mode == 'select' ){\n            tranDuration = 0;\n            this.input.set.call(this)\n        }\n\n        // if only a single tag is to be removed.\n        // skip \"select\" mode because invalid tags are actually set to `this.value`\n        if( tagsToRemove.length == 1 && _s.mode != 'select' ){\n            if( tagsToRemove[0].node.classList.contains(_s.classNames.tagNotAllowed) )\n                silent = true\n        }\n\n        if( !tagsToRemove.length )\n            return;\n\n        return _s.hooks.beforeRemoveTag(tagsToRemove, {tagify:this})\n            .then(() => {\n                function removeNode( tag ){\n                    if( !tag.node.parentNode ) return\n\n                    tag.node.parentNode.removeChild(tag.node)\n\n                    if( !silent ){\n                        // this.removeValueById(tagData.__uid)\n                        this.dropdown.refilter()\n                        this.dropdown.position()\n                        this.DOM.input.normalize() // best-practice when in mix-mode (safe to do always anyways)\n\n                        // check if any of the current tags which might have been marked as \"duplicate\" should be un-marked\n                        if( _s.keepInvalidTags )\n                            this.reCheckInvalidTags()\n\n                        // below code is unfinished. it should iterate all currently invalid edited tags, which their edits have not\n                        // changed the value yet, and should re-trigger the check, but since nothing has changed, it does not work...\n                        // this.getTagElms(_s.classNames.tagEditing).forEach( this.events.callbacks.onEditTagBlur.bind )\n\n                            this.trigger('remove', { tag:tag.node, index:tag.idx, data:tag.data })\n                    }\n                    else if( _s.keepInvalidTags )\n                            this.trigger('remove', { tag:tag.node, index:tag.idx })\n                }\n\n                function animation( tag ){\n                    tag.node.style.width = parseFloat(window.getComputedStyle(tag.node).width) + 'px'\n                    document.body.clientTop // force repaint for the width to take affect before the \"hide\" class below\n                    tag.node.classList.add(_s.classNames.tagHide)\n\n                    // manual timeout (hack, since transitionend cannot be used because of hover)\n                    setTimeout(removeNode.bind(this), tranDuration, tag)\n                }\n\n                // update state regardless of animation\n                if( !silent ){\n                    this.removeTagsFromValue(tagsToRemove.map(tag => tag.node))\n                    this.update() // update the original input with the current value\n\n                    if( _s.mode == 'select' && _s.userInput )\n                        this.setContentEditable(true);\n                }\n\n                // \"removeNode\" should be called AFTER \"removeTagsFromValue\" has been called,\n                // so the \"remove\" event is triggered after the tag is removed from the DOM\n                if( tranDuration && tranDuration > 10 && tagsToRemove.length == 1 )\n                    animation.call(this, tagsToRemove[0])\n                else\n                    tagsToRemove.forEach(removeNode.bind(this))\n            })\n            .catch(reason => {})\n    },\n\n    removeTagsFromDOM(){\n        this.getTagElms().forEach(node => node.remove())\n    },\n\n    /**\n     * @param {Array/Node} tags to be removed from the this.value array\n     */\n    removeTagsFromValue( tags ){\n        tags = Array.isArray(tags) ? tags : [tags];\n\n        tags.forEach(tag => {\n            var tagData = getSetTagData(tag),\n                tagIdx = this.getTagIdx(tagData)\n\n            //  delete tagData.__removed\n\n            if( tagIdx > -1 )\n                this.value.splice(tagIdx, 1)\n        })\n    },\n\n    removeAllTags( opts ){\n        opts = opts || {}\n        this.value = []\n\n        if( this.settings.mode == 'mix' )\n            this.DOM.input.innerHTML = ''\n        else\n            this.removeTagsFromDOM()\n\n        this.dropdown.refilter()\n        this.dropdown.position()\n\n        if( this.state.dropdown.visible )\n            setTimeout(() => {\n                this.DOM.input.focus()\n            })\n\n        if( this.settings.mode == 'select' ){\n            this.input.set.call(this)\n            this.settings.userInput && this.setContentEditable(true)\n        }\n\n        const updateCallback = this.state.blockChangeEvent ? undefined : () => {\n            !this.state.blockChangeEvent && this.trigger('remove', {})\n        }\n\n        // technically for now only \"withoutChangeEvent\" exists in the opts.\n        // if more properties will be added later, only pass what's needed to \"update\"\n        this.update(opts, updateCallback)\n\n    },\n\n    postUpdate(){\n        this.state.blockChangeEvent = false\n\n        var _s = this.settings,\n            classNames = _s.classNames,\n            hasValue = _s.mode == 'mix'\n                ? _s.mixMode.integrated\n                    ? this.DOM.input.textContent\n                    : this.DOM.originalInput.value.trim()\n                : this.value.length + this.input.raw.call(this).length;\n\n        this.toggleClass(classNames.hasMaxTags, this.value.length >= _s.maxTags)\n        this.toggleClass(classNames.hasNoTags, !this.value.length)\n        this.toggleClass(classNames.empty, !hasValue)\n\n        // specifically the \"select mode\" might have the \"invalid\" classname set when the field is changed, so it must be toggled on add/remove/edit\n        if( _s.mode == 'select' ){\n            this.toggleScopeValidation(this.value?.[0]?.__isValid)\n        }\n    },\n\n    setOriginalInputValue( v ){\n        var inputElm = this.DOM.originalInput;\n\n        if( !this.settings.mixMode.integrated ){\n            inputElm.value = v\n            inputElm.tagifyValue = inputElm.value // must set to \"inputElm.value\" and not again to \"inputValue\" because for some reason the browser changes the string afterwards a bit.\n        }\n    },\n\n    /**\n     * update the origianl (hidden) input field's value.\n     * uses a debounced timeout to prevent multiple rapid updates\n     * see - https://stackoverflow.com/q/50957841/104380\n     */\n    update( args, cb ){\n        clearTimeout(this.debouncedUpdateTimeout)\n        this.debouncedUpdateTimeout = setTimeout(reallyUpdate.bind(this), UPDATE_DELAY)\n        this.events.bindOriginaInputListener.call(this, UPDATE_DELAY)\n\n        var inputValue = this.getInputValue();\n        this.setOriginalInputValue(inputValue)\n\n        function reallyUpdate() {\n            this.setPersistedData(inputValue, 'value')\n\n            if( (!this.settings.onChangeAfterBlur || !(args||{}).withoutChangeEvent) && !this.state.blockChangeEvent )\n                this.triggerChangeEvent()\n\n            this.postUpdate()\n\n            cb?.()\n        }\n    },\n\n    getInputValue(){\n        var value = this.getCleanValue();\n\n        return this.settings.mode == 'mix'\n            ? this.getMixedTagsAsString(value)\n            : value.length\n                ? this.settings.originalInputValueFormat\n                    ? this.settings.originalInputValueFormat(value)\n                    : JSON.stringify(value)\n                : \"\"\n    },\n\n    /**\n     * removes properties from `this.value` which are only used internally\n     */\n    getCleanValue(v){\n        return removeCollectionProp(v || this.value, this.dataProps);\n    },\n\n    getMixedTagsAsString(){\n        var result = \"\",\n            that = this,\n            _s = this.settings,\n            originalInputValueFormat = _s.originalInputValueFormat || JSON.stringify,\n            _interpolator = _s.mixTagsInterpolator;\n\n        function iterateChildren(rootNode){\n            rootNode.childNodes.forEach((node) => {\n                if( node.nodeType == 1 ){\n                    const tagData = getSetTagData(node);\n\n                    if( node.tagName == 'BR'  ){\n                        result += \"\\r\\n\";\n                    }\n\n                    if( tagData && isNodeTag.call(that, node) ){\n                        if( tagData.__removed )\n                            return;\n                        else\n                            result += _interpolator[0] + originalInputValueFormat( omit(tagData, that.dataProps) ) + _interpolator[1]\n                    }\n                    else if( node.getAttribute('style') || ['B', 'I', 'U'].includes(node.tagName)  )\n                        result += node.textContent;\n\n                    else if( node.tagName == 'DIV' || node.tagName == 'P' ){\n                        result += \"\\r\\n\";\n                        //  if( !node.children.length && node.textContent )\n                        //  result += node.textContent;\n                        iterateChildren(node)\n                    }\n                }\n                else\n                    result += node.textContent;\n            })\n        }\n\n        iterateChildren(this.DOM.input)\n\n        return result;\n    }\n}\n\n// legacy support for changed methods names\nTagify.prototype.removeTag = Tagify.prototype.removeTags\n\nexport default Tagify\n", "import { extend, logger } from './helpers'\r\n\r\nexport default function EventDispatcher( instance ){\r\n    // Create a DOM EventTarget object\r\n    var target = document.createTextNode(''),\r\n        // keep track of all binded events & their callbacks to be able to completely remove all listeners of a speicific type\r\n        callbacksPerType = {}\r\n\r\n    function addRemove(op, events, cb){\r\n        if( cb )\r\n            events.split(/\\s+/g).forEach(ev => target[op + 'EventListener'].call(target, ev, cb))\r\n    }\r\n\r\n    // Pass EventTarget interface calls to DOM EventTarget object\r\n    return {\r\n        // unbinds all events\r\n        removeAllCustomListeners(){\r\n            Object.entries(callbacksPerType).forEach(([ev, cbArr]) => {\r\n                cbArr.forEach(cb => addRemove('remove', ev, cb))\r\n            })\r\n\r\n            callbacksPerType = {}\r\n        },\r\n\r\n        off(events, cb){\r\n            if( events ) {\r\n                if( cb )\r\n                    addRemove('remove', events, cb)\r\n                else\r\n                    // if `cb` argument was not specified then remove all listeners for the given event(s) types\r\n                    events.split(/\\s+/g).forEach(ev => {\r\n                        callbacksPerType[ev]?.forEach(cb => addRemove('remove', ev, cb))\r\n                        delete callbacksPerType[ev]\r\n                    })\r\n            }\r\n\r\n            return this\r\n        },\r\n\r\n        on(events, cb){\r\n            if(cb && typeof cb == 'function') {\r\n                //track events callbacks to be able to remove them altogehter\r\n                events.split(/\\s+/g).forEach(ev => {\r\n                    if (Array.isArray(callbacksPerType[ev]) )\r\n                        callbacksPerType[ev].push(cb)\r\n                    else\r\n                        callbacksPerType[ev] = [cb]\r\n                })\r\n\r\n                addRemove('add', events, cb)\r\n            }\r\n\r\n            return this\r\n        },\r\n\r\n        trigger(eventName, data, opts){\r\n            var e;\r\n\r\n            opts = opts || {\r\n                cloneData:true\r\n            }\r\n\r\n            if( !eventName ) return;\r\n\r\n            if( instance.settings.isJQueryPlugin ){\r\n                if( eventName == 'remove' ) eventName = 'removeTag' // issue #222\r\n                jQuery(instance.DOM.originalInput).triggerHandler(eventName, [data])\r\n            }\r\n            else{\r\n                try {\r\n                    var eventData = typeof data === 'object'\r\n                        ? data\r\n                        : {value:data};\r\n\r\n                    eventData = opts.cloneData ? extend({}, eventData) : eventData\r\n                    eventData.tagify = this\r\n\r\n                    if( data.event )\r\n                        eventData.event = this.cloneEvent(data.event)\r\n\r\n                    // TODO: move the below to the \"extend\" function\r\n                    if( data instanceof Object )\r\n                        for( var prop in data )\r\n                            if(data[prop] instanceof HTMLElement)\r\n                                eventData[prop] = data[prop]\r\n\r\n                    e = new CustomEvent(eventName, {\"detail\":eventData})\r\n                }\r\n                catch(err){ logger.warn(err) }\r\n\r\n                target.dispatchEvent(e);\r\n            }\r\n        }\r\n    }\r\n}\r\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\nconst linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\n\nconst buttonClickSelector = {\n  selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n  exclude: \"form button\"\n};\n\nconst inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\n\nconst formSubmitSelector = \"form:not([data-turbo=true])\";\n\nconst 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\nconst 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\nconst 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\nconst fileInputSelector = \"input[name][type=file]:not([disabled])\";\n\nconst linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\n\nconst buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\n\nlet nonce = null;\n\nconst loadCSPNonce = () => {\n  const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n  return nonce = metaTag && metaTag.content;\n};\n\nconst cspNonce = () => nonce || loadCSPNonce();\n\nconst m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nconst matches = function(element, selector) {\n  if (selector.exclude) {\n    return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n  } else {\n    return m.call(element, selector);\n  }\n};\n\nconst EXPANDO = \"_ujsData\";\n\nconst getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n\nconst setData = function(element, key, value) {\n  if (!element[EXPANDO]) {\n    element[EXPANDO] = {};\n  }\n  return element[EXPANDO][key] = value;\n};\n\nconst $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n\nconst isContentEditable = function(element) {\n  var isEditable = false;\n  do {\n    if (element.isContentEditable) {\n      isEditable = true;\n      break;\n    }\n    element = element.parentElement;\n  } while (element);\n  return isEditable;\n};\n\nconst csrfToken = () => {\n  const meta = document.querySelector(\"meta[name=csrf-token]\");\n  return meta && meta.content;\n};\n\nconst csrfParam = () => {\n  const meta = document.querySelector(\"meta[name=csrf-param]\");\n  return meta && meta.content;\n};\n\nconst CSRFProtection = xhr => {\n  const token = csrfToken();\n  if (token) {\n    return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n  }\n};\n\nconst refreshCSRFTokens = () => {\n  const token = csrfToken();\n  const param = csrfParam();\n  if (token && param) {\n    return $('form input[name=\"' + param + '\"]').forEach((input => input.value = token));\n  }\n};\n\nconst 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\nconst ajax = options => {\n  options = prepareOptions(options);\n  var xhr = createXHR(options, (function() {\n    const response = processResponse(xhr.response != null ? xhr.response : 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) : undefined;\n  }));\n  if (options.beforeSend && !options.beforeSend(xhr, options)) {\n    return false;\n  }\n  if (xhr.readyState === XMLHttpRequest.OPENED) {\n    return xhr.send(options.data);\n  }\n};\n\nvar 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 (!(options.dataType in AcceptHeaders)) {\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\nvar createXHR = function(options, done) {\n  const 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\nvar processResponse = function(response, type) {\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      const 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      const parser = new DOMParser;\n      type = type.replace(/;.+/, \"\");\n      try {\n        response = parser.parseFromString(response, type);\n      } catch (error1) {}\n    }\n  }\n  return response;\n};\n\nconst href = element => element.href;\n\nconst isCrossDomain = function(url) {\n  const originAnchor = document.createElement(\"a\");\n  originAnchor.href = location.href;\n  const 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 (e) {\n    return true;\n  }\n};\n\nlet preventDefault;\n\nlet {CustomEvent: CustomEvent} = window;\n\nif (typeof CustomEvent !== \"function\") {\n  CustomEvent = function(event, params) {\n    const 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: preventDefault} = CustomEvent.prototype);\n  CustomEvent.prototype.preventDefault = function() {\n    const result = preventDefault.call(this);\n    if (this.cancelable && !this.defaultPrevented) {\n      Object.defineProperty(this, \"defaultPrevented\", {\n        get() {\n          return true;\n        }\n      });\n    }\n    return result;\n  };\n}\n\nconst fire = (obj, name, data) => {\n  const event = new CustomEvent(name, {\n    bubbles: true,\n    cancelable: true,\n    detail: data\n  });\n  obj.dispatchEvent(event);\n  return !event.defaultPrevented;\n};\n\nconst stopEverything = e => {\n  fire(e.target, \"ujs:everythingStopped\");\n  e.preventDefault();\n  e.stopPropagation();\n  e.stopImmediatePropagation();\n};\n\nconst delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, (function(e) {\n  let {target: target} = e;\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    e.stopPropagation();\n  }\n}));\n\nconst toArray = e => Array.prototype.slice.call(e);\n\nconst serializeElement = (element, additionalParam) => {\n  let inputs = [ element ];\n  if (matches(element, \"form\")) {\n    inputs = toArray(element.elements);\n  }\n  const 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      toArray(input.options).forEach((function(option) {\n        if (option.selected) {\n          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      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) {\n      return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n    } else {\n      return param;\n    }\n  })).join(\"&\");\n};\n\nconst formElements = (form, selector) => {\n  if (matches(form, \"form\")) {\n    return toArray(form.elements).filter((el => matches(el, selector)));\n  } else {\n    return toArray(form.querySelectorAll(selector));\n  }\n};\n\nconst handleConfirmWithRails = rails => function(e) {\n  if (!allowAction(this, rails)) {\n    stopEverything(e);\n  }\n};\n\nconst confirm = (message, element) => window.confirm(message);\n\nvar allowAction = function(element, rails) {\n  let callback;\n  const message = element.getAttribute(\"data-confirm\");\n  if (!message) {\n    return true;\n  }\n  let 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\nconst handleDisabledElement = function(e) {\n  const element = this;\n  if (element.disabled) {\n    stopEverything(e);\n  }\n};\n\nconst enableElement = e => {\n  let 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, linkDisableSelector)) {\n    return enableLinkElement(element);\n  } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n    return enableFormElement(element);\n  } else if (matches(element, formSubmitSelector)) {\n    return enableFormElements(element);\n  }\n};\n\nconst disableElement = e => {\n  const element = e instanceof Event ? e.target : e;\n  if (isContentEditable(element)) {\n    return;\n  }\n  if (matches(element, linkDisableSelector)) {\n    return disableLinkElement(element);\n  } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n    return disableFormElement(element);\n  } else if (matches(element, formSubmitSelector)) {\n    return disableFormElements(element);\n  }\n};\n\nvar disableLinkElement = function(element) {\n  if (getData(element, \"ujs:disabled\")) {\n    return;\n  }\n  const 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\nvar enableLinkElement = function(element) {\n  const 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\nvar disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n\nvar disableFormElement = function(element) {\n  if (getData(element, \"ujs:disabled\")) {\n    return;\n  }\n  const 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\nvar enableFormElements = form => formElements(form, formEnableSelector).forEach((element => enableFormElement(element)));\n\nvar enableFormElement = function(element) {\n  const 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\nvar isXhrRedirect = function(event) {\n  const xhr = event.detail ? event.detail[0] : undefined;\n  return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n};\n\nconst handleMethodWithRails = rails => function(e) {\n  const link = this;\n  const method = link.getAttribute(\"data-method\");\n  if (!method) {\n    return;\n  }\n  if (isContentEditable(this)) {\n    return;\n  }\n  const href = rails.href(link);\n  const csrfToken$1 = csrfToken();\n  const csrfParam$1 = csrfParam();\n  const form = document.createElement(\"form\");\n  let formContent = `<input name='_method' value='${method}' type='hidden' />`;\n  if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n    formContent += `<input name='${csrfParam$1}' value='${csrfToken$1}' 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  stopEverything(e);\n};\n\nconst isRemote = function(element) {\n  const value = element.getAttribute(\"data-remote\");\n  return value != null && value !== \"false\";\n};\n\nconst handleRemoteWithRails = rails => function(e) {\n  let data, method, url;\n  const 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  const withCredentials = element.getAttribute(\"data-with-credentials\");\n  const dataType = element.getAttribute(\"data-type\") || \"script\";\n  if (matches(element, formSubmitSelector)) {\n    const button = getData(element, \"ujs:submit-button\");\n    method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\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, buttonClickSelector) || matches(element, 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(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(...args) {\n      return fire(element, \"ajax:success\", args);\n    },\n    error(...args) {\n      return fire(element, \"ajax:error\", args);\n    },\n    complete(...args) {\n      return fire(element, \"ajax:complete\", args);\n    },\n    crossDomain: isCrossDomain(url),\n    withCredentials: withCredentials != null && withCredentials !== \"false\"\n  });\n  stopEverything(e);\n};\n\nconst formSubmitButtonClick = function(e) {\n  const button = this;\n  const {form: form} = button;\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\nconst preventInsignificantClick = function(e) {\n  const link = this;\n  const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n  const data = link.getAttribute(\"data-params\");\n  const metaClick = e.metaKey || e.ctrlKey;\n  const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n  const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n  if (nonPrimaryMouseClick || insignificantMetaClick) {\n    e.stopImmediatePropagation();\n  }\n};\n\nconst Rails = {\n  $: $,\n  ajax: ajax,\n  buttonClickSelector: buttonClickSelector,\n  buttonDisableSelector: buttonDisableSelector,\n  confirm: confirm,\n  cspNonce: cspNonce,\n  csrfToken: csrfToken,\n  csrfParam: csrfParam,\n  CSRFProtection: CSRFProtection,\n  delegate: delegate,\n  disableElement: disableElement,\n  enableElement: enableElement,\n  fileInputSelector: fileInputSelector,\n  fire: fire,\n  formElements: formElements,\n  formEnableSelector: formEnableSelector,\n  formDisableSelector: formDisableSelector,\n  formInputClickSelector: formInputClickSelector,\n  formSubmitButtonClick: formSubmitButtonClick,\n  formSubmitSelector: formSubmitSelector,\n  getData: getData,\n  handleDisabledElement: handleDisabledElement,\n  href: href,\n  inputChangeSelector: inputChangeSelector,\n  isCrossDomain: isCrossDomain,\n  linkClickSelector: linkClickSelector,\n  linkDisableSelector: linkDisableSelector,\n  loadCSPNonce: loadCSPNonce,\n  matches: matches,\n  preventInsignificantClick: preventInsignificantClick,\n  refreshCSRFTokens: refreshCSRFTokens,\n  serializeElement: serializeElement,\n  setData: setData,\n  stopEverything: stopEverything\n};\n\nconst handleConfirm = handleConfirmWithRails(Rails);\n\nRails.handleConfirm = handleConfirm;\n\nconst handleMethod = handleMethodWithRails(Rails);\n\nRails.handleMethod = handleMethod;\n\nconst handleRemote = handleRemoteWithRails(Rails);\n\nRails.handleRemote = handleRemote;\n\nconst start = function() {\n  if (window._rails_loaded) {\n    throw new Error(\"rails-ujs has already been loaded!\");\n  }\n  window.addEventListener(\"pageshow\", (function() {\n    $(formEnableSelector).forEach((function(el) {\n      if (getData(el, \"ujs:disabled\")) {\n        enableElement(el);\n      }\n    }));\n    $(linkDisableSelector).forEach((function(el) {\n      if (getData(el, \"ujs:disabled\")) {\n        enableElement(el);\n      }\n    }));\n  }));\n  delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n  delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n  delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n  delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n  delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n  delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n  delegate(document, linkClickSelector, \"click\", handleConfirm);\n  delegate(document, linkClickSelector, \"click\", disableElement);\n  delegate(document, linkClickSelector, \"click\", handleRemote);\n  delegate(document, linkClickSelector, \"click\", handleMethod);\n  delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n  delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n  delegate(document, buttonClickSelector, \"click\", handleConfirm);\n  delegate(document, buttonClickSelector, \"click\", disableElement);\n  delegate(document, buttonClickSelector, \"click\", handleRemote);\n  delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n  delegate(document, inputChangeSelector, \"change\", handleConfirm);\n  delegate(document, inputChangeSelector, \"change\", handleRemote);\n  delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n  delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n  delegate(document, formSubmitSelector, \"submit\", handleRemote);\n  delegate(document, formSubmitSelector, \"submit\", (e => setTimeout((() => disableElement(e)), 13)));\n  delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n  delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n  delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n  delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n  delegate(document, formInputClickSelector, \"click\", handleConfirm);\n  delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n  document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n  document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n  return window._rails_loaded = true;\n};\n\nRails.start = start;\n\nif (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\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\nexport { Rails as default };\n", "/*!\nTurbo 8.0.21\nCopyright \u00A9 2026 37signals LLC\n */\nconst FrameLoadingStyle = {\n  eager: \"eager\",\n  lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n *   <turbo-frame id=\"messages\">\n *     <a href=\"/messages/expanded\">\n *       Show all expanded messages in this frame.\n *     </a>\n *\n *     <form action=\"/messages\">\n *       Show response from this form within this frame.\n *     </form>\n *   </turbo-frame>\n */\nclass FrameElement extends HTMLElement {\n  static delegateConstructor = undefined\n\n  loaded = Promise.resolve()\n\n  static get observedAttributes() {\n    return [\"disabled\", \"loading\", \"src\"]\n  }\n\n  constructor() {\n    super();\n    this.delegate = new FrameElement.delegateConstructor(this);\n  }\n\n  connectedCallback() {\n    this.delegate.connect();\n  }\n\n  disconnectedCallback() {\n    this.delegate.disconnect();\n  }\n\n  reload() {\n    return this.delegate.sourceURLReloaded()\n  }\n\n  attributeChangedCallback(name) {\n    if (name == \"loading\") {\n      this.delegate.loadingStyleChanged();\n    } else if (name == \"src\") {\n      this.delegate.sourceURLChanged();\n    } else if (name == \"disabled\") {\n      this.delegate.disabledChanged();\n    }\n  }\n\n  /**\n   * Gets the URL to lazily load source HTML from\n   */\n  get src() {\n    return this.getAttribute(\"src\")\n  }\n\n  /**\n   * Sets the URL to lazily load source HTML from\n   */\n  set src(value) {\n    if (value) {\n      this.setAttribute(\"src\", value);\n    } else {\n      this.removeAttribute(\"src\");\n    }\n  }\n\n  /**\n   * Gets the refresh mode for the frame.\n   */\n  get refresh() {\n    return this.getAttribute(\"refresh\")\n  }\n\n  /**\n   * Sets the refresh mode for the frame.\n   */\n  set refresh(value) {\n    if (value) {\n      this.setAttribute(\"refresh\", value);\n    } else {\n      this.removeAttribute(\"refresh\");\n    }\n  }\n\n  get shouldReloadWithMorph() {\n    return this.src && this.refresh === \"morph\"\n  }\n\n  /**\n   * Determines if the element is loading\n   */\n  get loading() {\n    return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n  }\n\n  /**\n   * Sets the value of if the element is loading\n   */\n  set loading(value) {\n    if (value) {\n      this.setAttribute(\"loading\", value);\n    } else {\n      this.removeAttribute(\"loading\");\n    }\n  }\n\n  /**\n   * Gets the disabled state of the frame.\n   *\n   * If disabled, no requests will be intercepted by the frame.\n   */\n  get disabled() {\n    return this.hasAttribute(\"disabled\")\n  }\n\n  /**\n   * Sets the disabled state of the frame.\n   *\n   * If disabled, no requests will be intercepted by the frame.\n   */\n  set disabled(value) {\n    if (value) {\n      this.setAttribute(\"disabled\", \"\");\n    } else {\n      this.removeAttribute(\"disabled\");\n    }\n  }\n\n  /**\n   * Gets the autoscroll state of the frame.\n   *\n   * If true, the frame will be scrolled into view automatically on update.\n   */\n  get autoscroll() {\n    return this.hasAttribute(\"autoscroll\")\n  }\n\n  /**\n   * Sets the autoscroll state of the frame.\n   *\n   * If true, the frame will be scrolled into view automatically on update.\n   */\n  set autoscroll(value) {\n    if (value) {\n      this.setAttribute(\"autoscroll\", \"\");\n    } else {\n      this.removeAttribute(\"autoscroll\");\n    }\n  }\n\n  /**\n   * Determines if the element has finished loading\n   */\n  get complete() {\n    return !this.delegate.isLoading\n  }\n\n  /**\n   * Gets the active state of the frame.\n   *\n   * If inactive, source changes will not be observed.\n   */\n  get isActive() {\n    return this.ownerDocument === document && !this.isPreview\n  }\n\n  /**\n   * Sets the active state of the frame.\n   *\n   * If inactive, source changes will not be observed.\n   */\n  get isPreview() {\n    return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n  }\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\nconst drive = {\n  enabled: true,\n  progressBarDelay: 500,\n  unvisitableExtensions: new Set(\n    [\n      \".7z\", \".aac\", \".apk\", \".avi\", \".bmp\", \".bz2\", \".css\", \".csv\", \".deb\", \".dmg\", \".doc\",\n      \".docx\", \".exe\", \".gif\", \".gz\", \".heic\", \".heif\", \".ico\", \".iso\", \".jpeg\", \".jpg\",\n      \".js\", \".json\", \".m4a\", \".mkv\", \".mov\", \".mp3\", \".mp4\", \".mpeg\", \".mpg\", \".msi\",\n      \".ogg\", \".ogv\", \".pdf\", \".pkg\", \".png\", \".ppt\", \".pptx\", \".rar\", \".rtf\",\n      \".svg\", \".tar\", \".tif\", \".tiff\", \".txt\", \".wav\", \".webm\", \".webp\", \".wma\", \".wmv\",\n      \".xls\", \".xlsx\", \".xml\", \".zip\"\n    ]\n  )\n};\n\nfunction activateScriptElement(element) {\n  if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n    return element\n  } else {\n    const createdScriptElement = document.createElement(\"script\");\n    const cspNonce = getCspNonce();\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}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n  for (const { name, value } of sourceElement.attributes) {\n    destinationElement.setAttribute(name, value);\n  }\n}\n\nfunction createDocumentFragment(html) {\n  const template = document.createElement(\"template\");\n  template.innerHTML = html;\n  return template.content\n}\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\n  if (target && target.isConnected) {\n    target.dispatchEvent(event);\n  } else {\n    document.documentElement.dispatchEvent(event);\n  }\n\n  return event\n}\n\nfunction cancelEvent(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\nfunction nextRepaint() {\n  if (document.visibilityState === \"hidden\") {\n    return nextEventLoopTick()\n  } else {\n    return nextAnimationFrame()\n  }\n}\n\nfunction nextAnimationFrame() {\n  return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n  return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction parseHTMLDocument(html = \"\") {\n  return new DOMParser().parseFromString(html, \"text/html\")\n}\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}\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}\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      } else if (i == 14) {\n        return \"4\"\n      } else if (i == 19) {\n        return (Math.floor(Math.random() * 4) + 8).toString(16)\n      } else {\n        return Math.floor(Math.random() * 16).toString(16)\n      }\n    })\n    .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n  for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n    if (typeof value == \"string\") return value\n  }\n\n  return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n  return elements.some((element) => element && element.hasAttribute(attributeName))\n}\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}\n\nfunction clearBusyState(...elements) {\n  for (const element of elements) {\n    if (element.localName == \"turbo-frame\") {\n      element.removeAttribute(\"busy\");\n    }\n\n    element.removeAttribute(\"aria-busy\");\n  }\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\n    element.addEventListener(\"load\", onComplete, { once: true });\n    element.addEventListener(\"error\", onComplete, { once: true });\n    setTimeout(resolve, timeoutInMilliseconds);\n  })\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}\n\nfunction isAction(action) {\n  return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n  const action = getAttribute(\"data-turbo-action\", ...elements);\n\n  return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n  return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n  const element = getMetaElement(name);\n  return element && element.content\n}\n\nfunction getCspNonce() {\n  const element = getMetaElement(\"csp-nonce\");\n\n  if (element) {\n    const { nonce, content } = element;\n    return nonce == \"\" ? content : nonce\n  }\n}\n\nfunction setMetaContent(name, content) {\n  let element = getMetaElement(name);\n\n  if (!element) {\n    element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", name);\n\n    document.head.appendChild(element);\n  }\n\n  element.setAttribute(\"content\", content);\n\n  return element\n}\n\nfunction findClosestRecursively(element, selector) {\n  if (element instanceof Element) {\n    return (\n      element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n    )\n  }\n}\n\nfunction elementIsFocusable(element) {\n  const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n  return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n  return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n  const before = reader();\n\n  callback();\n\n  await nextAnimationFrame();\n\n  const after = reader();\n\n  return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n  if (name === \"_blank\") {\n    return false\n  } else if (name) {\n    for (const element of document.getElementsByName(name)) {\n      if (element instanceof HTMLIFrameElement) return false\n    }\n\n    return true\n  } else {\n    return true\n  }\n}\n\nfunction findLinkFromClickTarget(target) {\n  const link = findClosestRecursively(target, \"a[href], a[xlink\\\\:href]\");\n\n  if (!link) return null\n  if (link.href.startsWith(\"#\")) return null\n  if (link.hasAttribute(\"download\")) return null\n\n  const linkTarget = link.getAttribute(\"target\");\n  if (linkTarget && linkTarget !== \"_self\") return null\n\n  return link\n}\n\nfunction debounce(fn, delay) {\n  let timeoutId = null;\n\n  return (...args) => {\n    const callback = () => fn.apply(this, args);\n    clearTimeout(timeoutId);\n    timeoutId = setTimeout(callback, delay);\n  }\n}\n\nconst submitter = {\n  \"aria-disabled\": {\n    beforeSubmit: submitter => {\n      submitter.setAttribute(\"aria-disabled\", \"true\");\n      submitter.addEventListener(\"click\", cancelEvent);\n    },\n\n    afterSubmit: submitter => {\n      submitter.removeAttribute(\"aria-disabled\");\n      submitter.removeEventListener(\"click\", cancelEvent);\n    }\n  },\n\n  \"disabled\": {\n    beforeSubmit: submitter => submitter.disabled = true,\n    afterSubmit: submitter => submitter.disabled = false\n  }\n};\n\nclass Config {\n  #submitter = null\n\n  constructor(config) {\n    Object.assign(this, config);\n  }\n\n  get submitter() {\n    return this.#submitter\n  }\n\n  set submitter(value) {\n    this.#submitter = submitter[value] || value;\n  }\n}\n\nconst forms = new Config({\n  mode: \"on\",\n  submitter: \"disabled\"\n});\n\nconst config = {\n  drive,\n  forms\n};\n\nfunction expandURL(locatable) {\n  return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n  let anchorMatch;\n  if (url.hash) {\n    return url.hash.slice(1)\n    // eslint-disable-next-line no-cond-assign\n  } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n    return anchorMatch[1]\n  }\n}\n\nfunction getAction$1(form, submitter) {\n  const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n  return expandURL(action)\n}\n\nfunction getExtension(url) {\n  return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isPrefixedBy(baseURL, url) {\n  const prefix = addTrailingSlash(url.origin + url.pathname);\n  return addTrailingSlash(baseURL.href) === prefix || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n  return isPrefixedBy(location, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location))\n}\n\nfunction getLocationForLink(link) {\n  return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction getRequestURL(url) {\n  const anchor = getAnchor(url);\n  return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n  return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n  return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n  return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n  return getPathComponents(url).slice(-1)[0]\n}\n\nfunction addTrailingSlash(value) {\n  return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n  constructor(response) {\n    this.response = response;\n  }\n\n  get succeeded() {\n    return this.response.ok\n  }\n\n  get failed() {\n    return !this.succeeded\n  }\n\n  get clientError() {\n    return this.statusCode >= 400 && this.statusCode <= 499\n  }\n\n  get serverError() {\n    return this.statusCode >= 500 && this.statusCode <= 599\n  }\n\n  get redirected() {\n    return this.response.redirected\n  }\n\n  get location() {\n    return expandURL(this.response.url)\n  }\n\n  get isHTML() {\n    return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n  }\n\n  get statusCode() {\n    return this.response.status\n  }\n\n  get contentType() {\n    return this.header(\"Content-Type\")\n  }\n\n  get responseText() {\n    return this.response.clone().text()\n  }\n\n  get responseHTML() {\n    if (this.isHTML) {\n      return this.response.clone().text()\n    } else {\n      return Promise.resolve(undefined)\n    }\n  }\n\n  header(name) {\n    return this.response.headers.get(name)\n  }\n}\n\nclass LimitedSet extends Set {\n  constructor(maxSize) {\n    super();\n    this.maxSize = maxSize;\n  }\n\n  add(value) {\n    if (this.size >= this.maxSize) {\n      const iterator = this.values();\n      const oldestValue = iterator.next().value;\n      this.delete(oldestValue);\n    }\n    super.add(value);\n  }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n  const modifiedHeaders = new Headers(options.headers || {});\n  const requestUID = uuid();\n  recentRequests.add(requestUID);\n  modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n  return window.fetch(url, {\n    ...options,\n    headers: modifiedHeaders\n  })\n}\n\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}\n\nconst FetchMethod = {\n  get: \"get\",\n  post: \"post\",\n  put: \"put\",\n  patch: \"patch\",\n  delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n  switch (encoding.toLowerCase()) {\n    case FetchEnctype.multipart:\n      return FetchEnctype.multipart\n    case FetchEnctype.plain:\n      return FetchEnctype.plain\n    default:\n      return FetchEnctype.urlEncoded\n  }\n}\n\nconst FetchEnctype = {\n  urlEncoded: \"application/x-www-form-urlencoded\",\n  multipart: \"multipart/form-data\",\n  plain: \"text/plain\"\n};\n\nclass FetchRequest {\n  abortController = new AbortController()\n  #resolveRequestPromise = (_value) => {}\n\n  constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n    const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n    this.delegate = delegate;\n    this.url = url;\n    this.target = target;\n    this.fetchOptions = {\n      credentials: \"same-origin\",\n      redirect: \"follow\",\n      method: method.toUpperCase(),\n      headers: { ...this.defaultHeaders },\n      body: body,\n      signal: this.abortSignal,\n      referrer: this.delegate.referrer?.href\n    };\n    this.enctype = enctype;\n  }\n\n  get method() {\n    return this.fetchOptions.method\n  }\n\n  set method(value) {\n    const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n    const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n    this.url.search = \"\";\n\n    const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n    this.url = url;\n    this.fetchOptions.body = body;\n    this.fetchOptions.method = fetchMethod.toUpperCase();\n  }\n\n  get headers() {\n    return this.fetchOptions.headers\n  }\n\n  set headers(value) {\n    this.fetchOptions.headers = value;\n  }\n\n  get body() {\n    if (this.isSafe) {\n      return this.url.searchParams\n    } else {\n      return this.fetchOptions.body\n    }\n  }\n\n  set body(value) {\n    this.fetchOptions.body = value;\n  }\n\n  get location() {\n    return this.url\n  }\n\n  get params() {\n    return this.url.searchParams\n  }\n\n  get entries() {\n    return this.body ? Array.from(this.body.entries()) : []\n  }\n\n  cancel() {\n    this.abortController.abort();\n  }\n\n  async perform() {\n    const { fetchOptions } = this;\n    this.delegate.prepareRequest(this);\n    const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n    try {\n      this.delegate.requestStarted(this);\n\n      if (event.detail.fetchRequest) {\n        this.response = event.detail.fetchRequest.response;\n      } else {\n        this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n      }\n\n      const response = await this.response;\n      return await this.receive(response)\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    } finally {\n      this.delegate.requestFinished(this);\n    }\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    } else if (fetchResponse.succeeded) {\n      this.delegate.requestSucceededWithResponse(this, fetchResponse);\n    } else {\n      this.delegate.requestFailedWithResponse(this, fetchResponse);\n    }\n    return fetchResponse\n  }\n\n  get defaultHeaders() {\n    return {\n      Accept: \"text/html, application/xhtml+xml\"\n    }\n  }\n\n  get isSafe() {\n    return isSafe(this.method)\n  }\n\n  get abortSignal() {\n    return this.abortController.signal\n  }\n\n  acceptResponseType(mimeType) {\n    this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n  }\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    this.url = event.detail.url;\n    if (event.defaultPrevented) await requestInterception;\n\n    return event\n  }\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\n    return !event.defaultPrevented\n  }\n}\n\nfunction isSafe(fetchMethod) {\n  return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n  const searchParams =\n    Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n  if (isSafe(method)) {\n    return [mergeIntoURLSearchParams(resource, searchParams), null]\n  } else if (enctype == FetchEnctype.urlEncoded) {\n    return [resource, searchParams]\n  } else {\n    return [resource, requestBody]\n  }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n  const entries = [];\n\n  for (const [name, value] of requestBody) {\n    if (value instanceof File) continue\n    else entries.push([name, value]);\n  }\n\n  return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n  const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n  url.search = searchParams.toString();\n\n  return url\n}\n\nclass AppearanceObserver {\n  started = false\n\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n    this.intersectionObserver = new IntersectionObserver(this.intersect);\n  }\n\n  start() {\n    if (!this.started) {\n      this.started = true;\n      this.intersectionObserver.observe(this.element);\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false;\n      this.intersectionObserver.unobserve(this.element);\n    }\n  }\n\n  intersect = (entries) => {\n    const lastEntry = entries.slice(-1)[0];\n    if (lastEntry?.isIntersecting) {\n      this.delegate.elementAppearedInViewport(this.element);\n    }\n  }\n}\n\nclass StreamMessage {\n  static contentType = \"text/vnd.turbo-stream.html\"\n\n  static wrap(message) {\n    if (typeof message == \"string\") {\n      return new this(createDocumentFragment(message))\n    } else {\n      return message\n    }\n  }\n\n  constructor(fragment) {\n    this.fragment = importStreamElements(fragment);\n  }\n}\n\nfunction importStreamElements(fragment) {\n  for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n    const streamElement = document.importNode(element, true);\n\n    for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n      inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n    }\n\n    element.replaceWith(streamElement);\n  }\n\n  return fragment\n}\n\nconst identity = key => key;\n\nclass LRUCache {\n  keys = []\n  entries = {}\n  #toCacheKey\n\n  constructor(size, toCacheKey = identity) {\n    this.size = size;\n    this.#toCacheKey = toCacheKey;\n  }\n\n  has(key) {\n    return this.#toCacheKey(key) in this.entries\n  }\n\n  get(key) {\n    if (this.has(key)) {\n      const entry = this.read(key);\n      this.touch(key);\n      return entry\n    }\n  }\n\n  put(key, entry) {\n    this.write(key, entry);\n    this.touch(key);\n    return entry\n  }\n\n  clear() {\n    for (const key of Object.keys(this.entries)) {\n      this.evict(key);\n    }\n  }\n\n  // Private\n\n  read(key) {\n    return this.entries[this.#toCacheKey(key)]\n  }\n\n  write(key, entry) {\n    this.entries[this.#toCacheKey(key)] = entry;\n  }\n\n  touch(key) {\n    key = this.#toCacheKey(key);\n    const index = this.keys.indexOf(key);\n    if (index > -1) this.keys.splice(index, 1);\n    this.keys.unshift(key);\n    this.trim();\n  }\n\n  trim() {\n    for (const key of this.keys.splice(this.size)) {\n      this.evict(key);\n    }\n  }\n\n  evict(key) {\n    delete this.entries[key];\n  }\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache extends LRUCache {\n  #prefetchTimeout = null\n  #maxAges = {}\n\n  constructor(size = 1, prefetchDelay = PREFETCH_DELAY) {\n    super(size, toCacheKey);\n    this.prefetchDelay = prefetchDelay;\n  }\n\n  putLater(url, request, ttl) {\n    this.#prefetchTimeout = setTimeout(() => {\n      request.perform();\n      this.put(url, request, ttl);\n      this.#prefetchTimeout = null;\n    }, this.prefetchDelay);\n  }\n\n  put(url, request, ttl = cacheTtl) {\n    super.put(url, request);\n    this.#maxAges[toCacheKey(url)] = new Date(new Date().getTime() + ttl);\n  }\n\n  clear() {\n    super.clear();\n    if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n  }\n\n  evict(key) {\n    super.evict(key);\n    delete this.#maxAges[key];\n  }\n\n  has(key) {\n    if (super.has(key)) {\n      const maxAge = this.#maxAges[toCacheKey(key)];\n\n      return maxAge && maxAge > Date.now()\n    } else {\n      return false\n    }\n  }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n  initialized: \"initialized\",\n  requesting: \"requesting\",\n  waiting: \"waiting\",\n  receiving: \"receiving\",\n  stopping: \"stopping\",\n  stopped: \"stopped\"\n};\n\nclass FormSubmission {\n  state = FormSubmissionState.initialized\n\n  static confirmMethod(message) {\n    return Promise.resolve(confirm(message))\n  }\n\n  constructor(delegate, formElement, submitter, mustRedirect = false) {\n    const method = getMethod(formElement, submitter);\n    const action = getAction(getFormAction(formElement, submitter), method);\n    const body = buildFormData(formElement, submitter);\n    const enctype = getEnctype(formElement, submitter);\n\n    this.delegate = delegate;\n    this.formElement = formElement;\n    this.submitter = submitter;\n    this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n    this.mustRedirect = mustRedirect;\n  }\n\n  get method() {\n    return this.fetchRequest.method\n  }\n\n  set method(value) {\n    this.fetchRequest.method = value;\n  }\n\n  get action() {\n    return this.fetchRequest.url.toString()\n  }\n\n  set action(value) {\n    this.fetchRequest.url = expandURL(value);\n  }\n\n  get body() {\n    return this.fetchRequest.body\n  }\n\n  get enctype() {\n    return this.fetchRequest.enctype\n  }\n\n  get isSafe() {\n    return this.fetchRequest.isSafe\n  }\n\n  get location() {\n    return this.fetchRequest.url\n  }\n\n  // The submission process\n\n  async start() {\n    const { initialized, requesting } = FormSubmissionState;\n    const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n    if (typeof confirmationMessage === \"string\") {\n      const confirmMethod = typeof config.forms.confirm === \"function\" ?\n        config.forms.confirm :\n        FormSubmission.confirmMethod;\n\n      const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);\n      if (!answer) {\n        return\n      }\n    }\n\n    if (this.state == initialized) {\n      this.state = requesting;\n      return this.fetchRequest.perform()\n    }\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\n  // Fetch request delegate\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\n    if (this.requestAcceptsTurboStreamResponse(request)) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted(_request) {\n    this.state = FormSubmissionState.waiting;\n    if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);\n    this.setSubmitsWith();\n    markAsBusy(this.formElement);\n    dispatch(\"turbo:submit-start\", {\n      target: this.formElement,\n      detail: { formSubmission: this }\n    });\n    this.delegate.formSubmissionStarted(this);\n  }\n\n  requestPreventedHandlingResponse(request, response) {\n    prefetchCache.clear();\n\n    this.result = { success: response.succeeded, fetchResponse: response };\n  }\n\n  requestSucceededWithResponse(request, response) {\n    if (response.clientError || response.serverError) {\n      this.delegate.formSubmissionFailedWithResponse(this, response);\n      return\n    }\n\n    prefetchCache.clear();\n\n    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    } else {\n      this.state = FormSubmissionState.receiving;\n      this.result = { success: true, fetchResponse: response };\n      this.delegate.formSubmissionSucceededWithResponse(this, response);\n    }\n  }\n\n  requestFailedWithResponse(request, response) {\n    this.result = { success: false, fetchResponse: response };\n    this.delegate.formSubmissionFailedWithResponse(this, response);\n  }\n\n  requestErrored(request, error) {\n    this.result = { success: false, error };\n    this.delegate.formSubmissionErrored(this, error);\n  }\n\n  requestFinished(_request) {\n    this.state = FormSubmissionState.stopped;\n    if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);\n    this.resetSubmitterText();\n    clearBusyState(this.formElement);\n    dispatch(\"turbo:submit-end\", {\n      target: this.formElement,\n      detail: { formSubmission: this, ...this.result }\n    });\n    this.delegate.formSubmissionFinished(this);\n  }\n\n  // Private\n\n  setSubmitsWith() {\n    if (!this.submitter || !this.submitsWith) return\n\n    if (this.submitter.matches(\"button\")) {\n      this.originalSubmitText = this.submitter.innerHTML;\n      this.submitter.innerHTML = this.submitsWith;\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\n  resetSubmitterText() {\n    if (!this.submitter || !this.originalSubmitText) return\n\n    if (this.submitter.matches(\"button\")) {\n      this.submitter.innerHTML = this.originalSubmitText;\n    } else if (this.submitter.matches(\"input\")) {\n      const input = this.submitter;\n      input.value = this.originalSubmitText;\n    }\n  }\n\n  requestMustRedirect(request) {\n    return !request.isSafe && this.mustRedirect\n  }\n\n  requestAcceptsTurboStreamResponse(request) {\n    return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n  }\n\n  get submitsWith() {\n    return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n  }\n}\n\nfunction buildFormData(formElement, submitter) {\n  const formData = new FormData(formElement);\n  const name = submitter?.getAttribute(\"name\");\n  const value = submitter?.getAttribute(\"value\");\n\n  if (name) {\n    formData.append(name, value || \"\");\n  }\n\n  return formData\n}\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}\n\nfunction responseSucceededWithoutRedirect(response) {\n  return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n  const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n  if (submitter?.hasAttribute(\"formaction\")) {\n    return submitter.getAttribute(\"formaction\") || \"\"\n  } else {\n    return formElement.getAttribute(\"action\") || formElementAction || \"\"\n  }\n}\n\nfunction getAction(formAction, fetchMethod) {\n  const action = expandURL(formAction);\n\n  if (isSafe(fetchMethod)) {\n    action.search = \"\";\n  }\n\n  return action\n}\n\nfunction getMethod(formElement, submitter) {\n  const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n  return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n  return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n  constructor(element) {\n    this.element = element;\n  }\n\n  get activeElement() {\n    return this.element.ownerDocument.activeElement\n  }\n\n  get children() {\n    return [...this.element.children]\n  }\n\n  hasAnchor(anchor) {\n    return this.getElementForAnchor(anchor) != null\n  }\n\n  getElementForAnchor(anchor) {\n    return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n  }\n\n  get isConnected() {\n    return this.element.isConnected\n  }\n\n  get firstAutofocusableElement() {\n    return queryAutofocusableElement(this.element)\n  }\n\n  get permanentElements() {\n    return queryPermanentElementsAll(this.element)\n  }\n\n  getPermanentElementById(id) {\n    return getPermanentElementById(this.element, id)\n  }\n\n  getPermanentElementMapForSnapshot(snapshot) {\n    const permanentElementMap = {};\n\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\n    return permanentElementMap\n  }\n}\n\nfunction getPermanentElementById(node, id) {\n  return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n  return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n  started = false\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (!this.started) {\n      this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n      this.started = false;\n    }\n  }\n\n  submitCaptured = () => {\n    this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n    this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n  }\n\n  submitBubbled = (event) => {\n    if (!event.defaultPrevented) {\n      const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n      const submitter = event.submitter || undefined;\n\n      if (\n        form &&\n        submissionDoesNotDismissDialog(form, submitter) &&\n        submissionDoesNotTargetIFrame(form, submitter) &&\n        this.delegate.willSubmitForm(form, submitter)\n      ) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        this.delegate.formSubmitted(form, submitter);\n      }\n    }\n  }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n  const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n  return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n  const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n  return doesNotTargetIFrame(target)\n}\n\nclass View {\n  #resolveRenderPromise = (_value) => {}\n  #resolveInterceptionPromise = (_value) => {}\n\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  // Scrolling\n\n  scrollToAnchor(anchor) {\n    const element = this.snapshot.getElementForAnchor(anchor);\n    if (element) {\n      this.focusElement(element);\n      this.scrollToElement(element);\n    } else {\n      this.scrollToPosition({ x: 0, y: 0 });\n    }\n  }\n\n  scrollToAnchorFromLocation(location) {\n    this.scrollToAnchor(getAnchor(location));\n  }\n\n  scrollToElement(element) {\n    element.scrollIntoView();\n  }\n\n  focusElement(element) {\n    if (element instanceof HTMLElement) {\n      if (element.hasAttribute(\"tabindex\")) {\n        element.focus();\n      } else {\n        element.setAttribute(\"tabindex\", \"-1\");\n        element.focus();\n        element.removeAttribute(\"tabindex\");\n      }\n    }\n  }\n\n  scrollToPosition({ x, y }) {\n    this.scrollRoot.scrollTo(x, y);\n  }\n\n  scrollToTop() {\n    this.scrollToPosition({ x: 0, y: 0 });\n  }\n\n  get scrollRoot() {\n    return window\n  }\n\n  // Rendering\n\n  async render(renderer) {\n    const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n    // A workaround to ignore tracked element mismatch reloads when performing\n    // a promoted Visit from a frame navigation\n    const shouldInvalidate = willRender;\n\n    if (shouldRender) {\n      try {\n        this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n        this.renderer = renderer;\n        await this.prepareToRenderSnapshot(renderer);\n\n        const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n        const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n        const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n        if (!immediateRender) await renderInterception;\n\n        await this.renderSnapshot(renderer);\n        this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n        this.delegate.preloadOnLoadLinksForView(this.element);\n        this.finishRenderingSnapshot(renderer);\n      } finally {\n        delete this.renderer;\n        this.#resolveRenderPromise(undefined);\n        delete this.renderPromise;\n      }\n    } else if (shouldInvalidate) {\n      this.invalidate(renderer.reloadReason);\n    }\n  }\n\n  invalidate(reason) {\n    this.delegate.viewInvalidated(reason);\n  }\n\n  async prepareToRenderSnapshot(renderer) {\n    this.markAsPreview(renderer.isPreview);\n    await renderer.prepareToRender();\n  }\n\n  markAsPreview(isPreview) {\n    if (isPreview) {\n      this.element.setAttribute(\"data-turbo-preview\", \"\");\n    } else {\n      this.element.removeAttribute(\"data-turbo-preview\");\n    }\n  }\n\n  markVisitDirection(direction) {\n    this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n  }\n\n  unmarkVisitDirection() {\n    this.element.removeAttribute(\"data-turbo-visit-direction\");\n  }\n\n  async renderSnapshot(renderer) {\n    await renderer.render();\n  }\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\n  get snapshot() {\n    return new Snapshot(this.element)\n  }\n}\n\nclass LinkInterceptor {\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.element = element;\n  }\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\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\n  clickBubbled = (event) => {\n    if (this.clickEventIsSignificant(event)) {\n      this.clickEvent = event;\n    } else {\n      delete this.clickEvent;\n    }\n  }\n\n  linkClicked = (event) => {\n    if (this.clickEvent && this.clickEventIsSignificant(event)) {\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\n  willVisit = (_event) => {\n    delete this.clickEvent;\n  }\n\n  clickEventIsSignificant(event) {\n    const target = event.composed ? event.target?.parentElement : event.target;\n    const element = findLinkFromClickTarget(target) || target;\n\n    return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n  }\n}\n\nclass LinkClickObserver {\n  started = false\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (!this.started) {\n      this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n      this.started = false;\n    }\n  }\n\n  clickCaptured = () => {\n    this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n    this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n  }\n\n  clickBubbled = (event) => {\n    if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n      const target = (event.composedPath && event.composedPath()[0]) || event.target;\n      const link = findLinkFromClickTarget(target);\n      if (link && doesNotTargetIFrame(link.target)) {\n        const location = getLocationForLink(link);\n        if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n          event.preventDefault();\n          this.delegate.followedLinkToLocation(link, location);\n        }\n      }\n    }\n  }\n\n  clickEventIsSignificant(event) {\n    return !(\n      (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  }\n}\n\nclass FormLinkClickObserver {\n  constructor(delegate, element) {\n    this.delegate = delegate;\n    this.linkInterceptor = new LinkClickObserver(this, element);\n  }\n\n  start() {\n    this.linkInterceptor.start();\n  }\n\n  stop() {\n    this.linkInterceptor.stop();\n  }\n\n  // Link hover observer delegate\n\n  canPrefetchRequestToLocation(link, location) {\n    return false\n  }\n\n  prefetchAndCacheRequestToLocation(link, location) {\n    return\n  }\n\n  // Link click observer delegate\n\n  willFollowLinkToLocation(link, location, originalEvent) {\n    return (\n      this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n      (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n    )\n  }\n\n  followedLinkToLocation(link, location) {\n    const form = document.createElement(\"form\");\n\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\n    const action = Object.assign(location, { search: \"\" });\n    form.setAttribute(\"data-turbo\", \"true\");\n    form.setAttribute(\"action\", action.href);\n    form.setAttribute(\"hidden\", \"\");\n\n    const method = link.getAttribute(\"data-turbo-method\");\n    if (method) form.setAttribute(\"method\", method);\n\n    const turboFrame = link.getAttribute(\"data-turbo-frame\");\n    if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n    const turboAction = getVisitAction(link);\n    if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n    const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n    if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n    const turboStream = link.hasAttribute(\"data-turbo-stream\");\n    if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n    this.delegate.submittedFormLinkToLocation(link, location, form);\n\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\n  constructor(delegate, permanentElementMap) {\n    this.delegate = delegate;\n    this.permanentElementMap = permanentElementMap;\n  }\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\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\n  replaceNewPermanentElementWithPlaceholder(permanentElement) {\n    const placeholder = createPlaceholderForPermanentElement(permanentElement);\n    permanentElement.replaceWith(placeholder);\n  }\n\n  replaceCurrentPermanentElementWithClone(permanentElement) {\n    const clone = permanentElement.cloneNode(true);\n    permanentElement.replaceWith(clone);\n  }\n\n  replacePlaceholderWithPermanentElement(permanentElement) {\n    const placeholder = this.getPlaceholderById(permanentElement.id);\n    placeholder?.replaceWith(permanentElement);\n  }\n\n  getPlaceholderById(id) {\n    return this.placeholders.find((element) => element.content == id)\n  }\n\n  get placeholders() {\n    return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n  }\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  #activeElement = null\n\n  static renderElement(currentElement, newElement) {\n    // Abstract method\n  }\n\n  constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n    this.currentSnapshot = currentSnapshot;\n    this.newSnapshot = newSnapshot;\n    this.isPreview = isPreview;\n    this.willRender = willRender;\n    this.renderElement = this.constructor.renderElement;\n    this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n  }\n\n  get shouldRender() {\n    return true\n  }\n\n  get shouldAutofocus() {\n    return true\n  }\n\n  get reloadReason() {\n    return\n  }\n\n  prepareToRender() {\n    return\n  }\n\n  render() {\n    // Abstract method\n  }\n\n  finishRendering() {\n    if (this.resolvingFunctions) {\n      this.resolvingFunctions.resolve();\n      delete this.resolvingFunctions;\n    }\n  }\n\n  async preservingPermanentElements(callback) {\n    await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n  }\n\n  focusFirstAutofocusableElement() {\n    if (this.shouldAutofocus) {\n      const element = this.connectedSnapshot.firstAutofocusableElement;\n      if (element) {\n        element.focus();\n      }\n    }\n  }\n\n  // Bardo delegate\n\n  enteringBardo(currentPermanentElement) {\n    if (this.#activeElement) return\n\n    if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n      this.#activeElement = this.currentSnapshot.activeElement;\n    }\n  }\n\n  leavingBardo(currentPermanentElement) {\n    if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n      this.#activeElement.focus();\n\n      this.#activeElement = null;\n    }\n  }\n\n  get connectedSnapshot() {\n    return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n  }\n\n  get currentElement() {\n    return this.currentSnapshot.element\n  }\n\n  get newElement() {\n    return this.newSnapshot.element\n  }\n\n  get permanentElementMap() {\n    return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n  }\n\n  get renderMethod() {\n    return \"replace\"\n  }\n}\n\nclass FrameRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    const destinationRange = document.createRange();\n    destinationRange.selectNodeContents(currentElement);\n    destinationRange.deleteContents();\n\n    const frameElement = newElement;\n    const sourceRange = frameElement.ownerDocument?.createRange();\n    if (sourceRange) {\n      sourceRange.selectNodeContents(frameElement);\n      currentElement.appendChild(sourceRange.extractContents());\n    }\n  }\n\n  constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n    super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n    this.delegate = delegate;\n  }\n\n  get shouldRender() {\n    return true\n  }\n\n  async render() {\n    await nextRepaint();\n    this.preservingPermanentElements(() => {\n      this.loadFrameElement();\n    });\n    this.scrollFrameIntoView();\n    await nextRepaint();\n    this.focusFirstAutofocusableElement();\n    await nextRepaint();\n    this.activateScriptElements();\n  }\n\n  loadFrameElement() {\n    this.delegate.willRenderFrame(this.currentElement, this.newElement);\n    this.renderElement(this.currentElement, this.newElement);\n  }\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\n      if (element) {\n        element.scrollIntoView({ block, behavior });\n        return true\n      }\n    }\n    return false\n  }\n\n  activateScriptElements() {\n    for (const inertScriptElement of this.newScriptElements) {\n      const activatedScriptElement = activateScriptElement(inertScriptElement);\n      inertScriptElement.replaceWith(activatedScriptElement);\n    }\n  }\n\n  get newScriptElements() {\n    return this.currentElement.querySelectorAll(\"script\")\n  }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n  if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n    return value\n  } else {\n    return defaultValue\n  }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n  if (value == \"auto\" || value == \"smooth\") {\n    return value\n  } else {\n    return defaultValue\n  }\n}\n\n/**\n * @typedef {object} ConfigHead\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} [style]\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {function(Element): boolean} [shouldPreserve]\n * @property {function(Element): boolean} [shouldReAppend]\n * @property {function(Element): boolean} [shouldRemove]\n * @property {function(Element, {added: Node[], kept: Element[], removed: Element[]}): void} [afterHeadMorphed]\n */\n\n/**\n * @typedef {object} ConfigCallbacks\n *\n * @property {function(Node): boolean} [beforeNodeAdded]\n * @property {function(Node): void} [afterNodeAdded]\n * @property {function(Element, Node): boolean} [beforeNodeMorphed]\n * @property {function(Element, Node): void} [afterNodeMorphed]\n * @property {function(Element): boolean} [beforeNodeRemoved]\n * @property {function(Element): void} [afterNodeRemoved]\n * @property {function(string, Element, \"update\" | \"remove\"): boolean} [beforeAttributeUpdated]\n */\n\n/**\n * @typedef {object} Config\n *\n * @property {'outerHTML' | 'innerHTML'} [morphStyle]\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacks} [callbacks]\n * @property {ConfigHead} [head]\n */\n\n/**\n * @typedef {function} NoOp\n *\n * @returns {void}\n */\n\n/**\n * @typedef {object} ConfigHeadInternal\n *\n * @property {'merge' | 'append' | 'morph' | 'none'} style\n * @property {boolean} [block]\n * @property {boolean} [ignore]\n * @property {(function(Element): boolean) | NoOp} shouldPreserve\n * @property {(function(Element): boolean) | NoOp} shouldReAppend\n * @property {(function(Element): boolean) | NoOp} shouldRemove\n * @property {(function(Element, {added: Node[], kept: Element[], removed: Element[]}): void) | NoOp} afterHeadMorphed\n */\n\n/**\n * @typedef {object} ConfigCallbacksInternal\n *\n * @property {(function(Node): boolean) | NoOp} beforeNodeAdded\n * @property {(function(Node): void) | NoOp} afterNodeAdded\n * @property {(function(Node, Node): boolean) | NoOp} beforeNodeMorphed\n * @property {(function(Node, Node): void) | NoOp} afterNodeMorphed\n * @property {(function(Node): boolean) | NoOp} beforeNodeRemoved\n * @property {(function(Node): void) | NoOp} afterNodeRemoved\n * @property {(function(string, Element, \"update\" | \"remove\"): boolean) | NoOp} beforeAttributeUpdated\n */\n\n/**\n * @typedef {object} ConfigInternal\n *\n * @property {'outerHTML' | 'innerHTML'} morphStyle\n * @property {boolean} [ignoreActive]\n * @property {boolean} [ignoreActiveValue]\n * @property {boolean} [restoreFocus]\n * @property {ConfigCallbacksInternal} callbacks\n * @property {ConfigHeadInternal} head\n */\n\n/**\n * @typedef {Object} IdSets\n * @property {Set<string>} persistentIds\n * @property {Map<Node, Set<string>>} idMap\n */\n\n/**\n * @typedef {Function} Morph\n *\n * @param {Element | Document} oldNode\n * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n * @param {Config} [config]\n * @returns {undefined | Node[]}\n */\n\n// base IIFE to define idiomorph\n/**\n *\n * @type {{defaults: ConfigInternal, morph: Morph}}\n */\nvar Idiomorph = (function () {\n\n  /**\n   * @typedef {object} MorphContext\n   *\n   * @property {Element} target\n   * @property {Element} newContent\n   * @property {ConfigInternal} config\n   * @property {ConfigInternal['morphStyle']} morphStyle\n   * @property {ConfigInternal['ignoreActive']} ignoreActive\n   * @property {ConfigInternal['ignoreActiveValue']} ignoreActiveValue\n   * @property {ConfigInternal['restoreFocus']} restoreFocus\n   * @property {Map<Node, Set<string>>} idMap\n   * @property {Set<string>} persistentIds\n   * @property {ConfigInternal['callbacks']} callbacks\n   * @property {ConfigInternal['head']} head\n   * @property {HTMLDivElement} pantry\n   * @property {Element[]} activeElementAndParents\n   */\n\n  //=============================================================================\n  // AND NOW IT BEGINS...\n  //=============================================================================\n\n  const noOp = () => {};\n  /**\n   * Default configuration values, updatable by users now\n   * @type {ConfigInternal}\n   */\n  const defaults = {\n    morphStyle: \"outerHTML\",\n    callbacks: {\n      beforeNodeAdded: noOp,\n      afterNodeAdded: noOp,\n      beforeNodeMorphed: noOp,\n      afterNodeMorphed: noOp,\n      beforeNodeRemoved: noOp,\n      afterNodeRemoved: noOp,\n      beforeAttributeUpdated: noOp,\n    },\n    head: {\n      style: \"merge\",\n      shouldPreserve: (elt) => elt.getAttribute(\"im-preserve\") === \"true\",\n      shouldReAppend: (elt) => elt.getAttribute(\"im-re-append\") === \"true\",\n      shouldRemove: noOp,\n      afterHeadMorphed: noOp,\n    },\n    restoreFocus: true,\n  };\n\n  /**\n   * Core idiomorph function for morphing one DOM tree to another\n   *\n   * @param {Element | Document} oldNode\n   * @param {Element | Node | HTMLCollection | Node[] | string | null} newContent\n   * @param {Config} [config]\n   * @returns {Promise<Node[]> | Node[]}\n   */\n  function morph(oldNode, newContent, config = {}) {\n    oldNode = normalizeElement(oldNode);\n    const newNode = normalizeParent(newContent);\n    const ctx = createMorphContext(oldNode, newNode, config);\n\n    const morphedNodes = saveAndRestoreFocus(ctx, () => {\n      return withHeadBlocking(\n        ctx,\n        oldNode,\n        newNode,\n        /** @param {MorphContext} ctx */ (ctx) => {\n          if (ctx.morphStyle === \"innerHTML\") {\n            morphChildren(ctx, oldNode, newNode);\n            return Array.from(oldNode.childNodes);\n          } else {\n            return morphOuterHTML(ctx, oldNode, newNode);\n          }\n        },\n      );\n    });\n\n    ctx.pantry.remove();\n    return morphedNodes;\n  }\n\n  /**\n   * Morph just the outerHTML of the oldNode to the newContent\n   * We have to be careful because the oldNode could have siblings which need to be untouched\n   * @param {MorphContext} ctx\n   * @param {Element} oldNode\n   * @param {Element} newNode\n   * @returns {Node[]}\n   */\n  function morphOuterHTML(ctx, oldNode, newNode) {\n    const oldParent = normalizeParent(oldNode);\n    morphChildren(\n      ctx,\n      oldParent,\n      newNode,\n      // these two optional params are the secret sauce\n      oldNode, // start point for iteration\n      oldNode.nextSibling, // end point for iteration\n    );\n    // this is safe even with siblings, because normalizeParent returns a SlicedParentNode if needed.\n    return Array.from(oldParent.childNodes);\n  }\n\n  /**\n   * @param {MorphContext} ctx\n   * @param {Function} fn\n   * @returns {Promise<Node[]> | Node[]}\n   */\n  function saveAndRestoreFocus(ctx, fn) {\n    if (!ctx.config.restoreFocus) return fn();\n    let activeElement =\n      /** @type {HTMLInputElement|HTMLTextAreaElement|null} */ (\n        document.activeElement\n      );\n\n    // don't bother if the active element is not an input or textarea\n    if (\n      !(\n        activeElement instanceof HTMLInputElement ||\n        activeElement instanceof HTMLTextAreaElement\n      )\n    ) {\n      return fn();\n    }\n\n    const { id: activeElementId, selectionStart, selectionEnd } = activeElement;\n\n    const results = fn();\n\n    if (\n      activeElementId &&\n      activeElementId !== document.activeElement?.getAttribute(\"id\")\n    ) {\n      activeElement = ctx.target.querySelector(`[id=\"${activeElementId}\"]`);\n      activeElement?.focus();\n    }\n    if (activeElement && !activeElement.selectionEnd && selectionEnd) {\n      activeElement.setSelectionRange(selectionStart, selectionEnd);\n    }\n\n    return results;\n  }\n\n  const morphChildren = (function () {\n    /**\n     * This is the core algorithm for matching up children.  The idea is to use id sets to try to match up\n     * nodes as faithfully as possible.  We greedily match, which allows us to keep the algorithm fast, but\n     * by using id sets, we are able to better match up with content deeper in the DOM.\n     *\n     * Basic algorithm:\n     * - for each node in the new content:\n     *   - search self and siblings for an id set match, falling back to a soft match\n     *   - if match found\n     *     - remove any nodes up to the match:\n     *       - pantry persistent nodes\n     *       - delete the rest\n     *     - morph the match\n     *   - elsif no match found, and node is persistent\n     *     - find its match by querying the old root (future) and pantry (past)\n     *     - move it and its children here\n     *     - morph it\n     *   - else\n     *     - create a new node from scratch as a last result\n     *\n     * @param {MorphContext} ctx the merge context\n     * @param {Element} oldParent the old content that we are merging the new content into\n     * @param {Element} newParent the parent element of the new content\n     * @param {Node|null} [insertionPoint] the point in the DOM we start morphing at (defaults to first child)\n     * @param {Node|null} [endPoint] the point in the DOM we stop morphing at (defaults to after last child)\n     */\n    function morphChildren(\n      ctx,\n      oldParent,\n      newParent,\n      insertionPoint = null,\n      endPoint = null,\n    ) {\n      // normalize\n      if (\n        oldParent instanceof HTMLTemplateElement &&\n        newParent instanceof HTMLTemplateElement\n      ) {\n        // @ts-ignore we can pretend the DocumentFragment is an Element\n        oldParent = oldParent.content;\n        // @ts-ignore ditto\n        newParent = newParent.content;\n      }\n      insertionPoint ||= oldParent.firstChild;\n\n      // run through all the new content\n      for (const newChild of newParent.childNodes) {\n        // once we reach the end of the old parent content skip to the end and insert the rest\n        if (insertionPoint && insertionPoint != endPoint) {\n          const bestMatch = findBestMatch(\n            ctx,\n            newChild,\n            insertionPoint,\n            endPoint,\n          );\n          if (bestMatch) {\n            // if the node to morph is not at the insertion point then remove/move up to it\n            if (bestMatch !== insertionPoint) {\n              removeNodesBetween(ctx, insertionPoint, bestMatch);\n            }\n            morphNode(bestMatch, newChild, ctx);\n            insertionPoint = bestMatch.nextSibling;\n            continue;\n          }\n        }\n\n        // if the matching node is elsewhere in the original content\n        if (newChild instanceof Element) {\n          // we can pretend the id is non-null because the next `.has` line will reject it if not\n          const newChildId = /** @type {String} */ (\n            newChild.getAttribute(\"id\")\n          );\n          if (ctx.persistentIds.has(newChildId)) {\n            // move it and all its children here and morph\n            const movedChild = moveBeforeById(\n              oldParent,\n              newChildId,\n              insertionPoint,\n              ctx,\n            );\n            morphNode(movedChild, newChild, ctx);\n            insertionPoint = movedChild.nextSibling;\n            continue;\n          }\n        }\n\n        // last resort: insert the new node from scratch\n        const insertedNode = createNode(\n          oldParent,\n          newChild,\n          insertionPoint,\n          ctx,\n        );\n        // could be null if beforeNodeAdded prevented insertion\n        if (insertedNode) {\n          insertionPoint = insertedNode.nextSibling;\n        }\n      }\n\n      // remove any remaining old nodes that didn't match up with new content\n      while (insertionPoint && insertionPoint != endPoint) {\n        const tempNode = insertionPoint;\n        insertionPoint = insertionPoint.nextSibling;\n        removeNode(ctx, tempNode);\n      }\n    }\n\n    /**\n     * This performs the action of inserting a new node while handling situations where the node contains\n     * elements with persistent ids and possible state info we can still preserve by moving in and then morphing\n     *\n     * @param {Element} oldParent\n     * @param {Node} newChild\n     * @param {Node|null} insertionPoint\n     * @param {MorphContext} ctx\n     * @returns {Node|null}\n     */\n    function createNode(oldParent, newChild, insertionPoint, ctx) {\n      if (ctx.callbacks.beforeNodeAdded(newChild) === false) return null;\n      if (ctx.idMap.has(newChild)) {\n        // node has children with ids with possible state so create a dummy elt of same type and apply full morph algorithm\n        const newEmptyChild = document.createElement(\n          /** @type {Element} */ (newChild).tagName,\n        );\n        oldParent.insertBefore(newEmptyChild, insertionPoint);\n        morphNode(newEmptyChild, newChild, ctx);\n        ctx.callbacks.afterNodeAdded(newEmptyChild);\n        return newEmptyChild;\n      } else {\n        // optimisation: no id state to preserve so we can just insert a clone of the newChild and its descendants\n        const newClonedChild = document.importNode(newChild, true); // importNode to not mutate newParent\n        oldParent.insertBefore(newClonedChild, insertionPoint);\n        ctx.callbacks.afterNodeAdded(newClonedChild);\n        return newClonedChild;\n      }\n    }\n\n    //=============================================================================\n    // Matching Functions\n    //=============================================================================\n    const findBestMatch = (function () {\n      /**\n       * Scans forward from the startPoint to the endPoint looking for a match\n       * for the node. It looks for an id set match first, then a soft match.\n       * We abort softmatching if we find two future soft matches, to reduce churn.\n       * @param {Node} node\n       * @param {MorphContext} ctx\n       * @param {Node | null} startPoint\n       * @param {Node | null} endPoint\n       * @returns {Node | null}\n       */\n      function findBestMatch(ctx, node, startPoint, endPoint) {\n        let softMatch = null;\n        let nextSibling = node.nextSibling;\n        let siblingSoftMatchCount = 0;\n\n        let cursor = startPoint;\n        while (cursor && cursor != endPoint) {\n          // soft matching is a prerequisite for id set matching\n          if (isSoftMatch(cursor, node)) {\n            if (isIdSetMatch(ctx, cursor, node)) {\n              return cursor; // found an id set match, we're done!\n            }\n\n            // we haven't yet saved a soft match fallback\n            if (softMatch === null) {\n              // the current soft match will hard match something else in the future, leave it\n              if (!ctx.idMap.has(cursor)) {\n                // save this as the fallback if we get through the loop without finding a hard match\n                softMatch = cursor;\n              }\n            }\n          }\n          if (\n            softMatch === null &&\n            nextSibling &&\n            isSoftMatch(cursor, nextSibling)\n          ) {\n            // The next new node has a soft match with this node, so\n            // increment the count of future soft matches\n            siblingSoftMatchCount++;\n            nextSibling = nextSibling.nextSibling;\n\n            // If there are two future soft matches, block soft matching for this node to allow\n            // future siblings to soft match. This is to reduce churn in the DOM when an element\n            // is prepended.\n            if (siblingSoftMatchCount >= 2) {\n              softMatch = undefined;\n            }\n          }\n\n          // if the current node contains active element, stop looking for better future matches,\n          // because if one is found, this node will be moved to the pantry, reparenting it and thus losing focus\n          // @ts-ignore pretend cursor is Element rather than Node, we're just testing for array inclusion\n          if (ctx.activeElementAndParents.includes(cursor)) break;\n\n          cursor = cursor.nextSibling;\n        }\n\n        return softMatch || null;\n      }\n\n      /**\n       *\n       * @param {MorphContext} ctx\n       * @param {Node} oldNode\n       * @param {Node} newNode\n       * @returns {boolean}\n       */\n      function isIdSetMatch(ctx, oldNode, newNode) {\n        let oldSet = ctx.idMap.get(oldNode);\n        let newSet = ctx.idMap.get(newNode);\n\n        if (!newSet || !oldSet) return false;\n\n        for (const id of oldSet) {\n          // a potential match is an id in the new and old nodes that\n          // has not already been merged into the DOM\n          // But the newNode content we call this on has not been\n          // merged yet and we don't allow duplicate IDs so it is simple\n          if (newSet.has(id)) {\n            return true;\n          }\n        }\n        return false;\n      }\n\n      /**\n       *\n       * @param {Node} oldNode\n       * @param {Node} newNode\n       * @returns {boolean}\n       */\n      function isSoftMatch(oldNode, newNode) {\n        // ok to cast: if one is not element, `id` and `tagName` will be undefined and we'll just compare that.\n        const oldElt = /** @type {Element} */ (oldNode);\n        const newElt = /** @type {Element} */ (newNode);\n\n        return (\n          oldElt.nodeType === newElt.nodeType &&\n          oldElt.tagName === newElt.tagName &&\n          // If oldElt has an `id` with possible state and it doesn't match newElt.id then avoid morphing.\n          // We'll still match an anonymous node with an IDed newElt, though, because if it got this far,\n          // its not persistent, and new nodes can't have any hidden state.\n          // We can't use .id because of form input shadowing, and we can't count on .getAttribute's presence because it could be a document-fragment\n          (!oldElt.getAttribute?.(\"id\") ||\n            oldElt.getAttribute?.(\"id\") === newElt.getAttribute?.(\"id\"))\n        );\n      }\n\n      return findBestMatch;\n    })();\n\n    //=============================================================================\n    // DOM Manipulation Functions\n    //=============================================================================\n\n    /**\n     * Gets rid of an unwanted DOM node; strategy depends on nature of its reuse:\n     * - Persistent nodes will be moved to the pantry for later reuse\n     * - Other nodes will have their hooks called, and then are removed\n     * @param {MorphContext} ctx\n     * @param {Node} node\n     */\n    function removeNode(ctx, node) {\n      // are we going to id set match this later?\n      if (ctx.idMap.has(node)) {\n        // skip callbacks and move to pantry\n        moveBefore(ctx.pantry, node, null);\n      } else {\n        // remove for realsies\n        if (ctx.callbacks.beforeNodeRemoved(node) === false) return;\n        node.parentNode?.removeChild(node);\n        ctx.callbacks.afterNodeRemoved(node);\n      }\n    }\n\n    /**\n     * Remove nodes between the start and end nodes\n     * @param {MorphContext} ctx\n     * @param {Node} startInclusive\n     * @param {Node} endExclusive\n     * @returns {Node|null}\n     */\n    function removeNodesBetween(ctx, startInclusive, endExclusive) {\n      /** @type {Node | null} */\n      let cursor = startInclusive;\n      // remove nodes until the endExclusive node\n      while (cursor && cursor !== endExclusive) {\n        let tempNode = /** @type {Node} */ (cursor);\n        cursor = cursor.nextSibling;\n        removeNode(ctx, tempNode);\n      }\n      return cursor;\n    }\n\n    /**\n     * Search for an element by id within the document and pantry, and move it using moveBefore.\n     *\n     * @param {Element} parentNode - The parent node to which the element will be moved.\n     * @param {string} id - The ID of the element to be moved.\n     * @param {Node | null} after - The reference node to insert the element before.\n     *                              If `null`, the element is appended as the last child.\n     * @param {MorphContext} ctx\n     * @returns {Element} The found element\n     */\n    function moveBeforeById(parentNode, id, after, ctx) {\n      const target =\n        /** @type {Element} - will always be found */\n        (\n          // ctx.target.id unsafe because of form input shadowing\n          // ctx.target could be a document fragment which doesn't have `getAttribute`\n          (ctx.target.getAttribute?.(\"id\") === id && ctx.target) ||\n            ctx.target.querySelector(`[id=\"${id}\"]`) ||\n            ctx.pantry.querySelector(`[id=\"${id}\"]`)\n        );\n      removeElementFromAncestorsIdMaps(target, ctx);\n      moveBefore(parentNode, target, after);\n      return target;\n    }\n\n    /**\n     * Removes an element from its ancestors' id maps. This is needed when an element is moved from the\n     * \"future\" via `moveBeforeId`. Otherwise, its erstwhile ancestors could be mistakenly moved to the\n     * pantry rather than being deleted, preventing their removal hooks from being called.\n     *\n     * @param {Element} element - element to remove from its ancestors' id maps\n     * @param {MorphContext} ctx\n     */\n    function removeElementFromAncestorsIdMaps(element, ctx) {\n      // we know id is non-null String, because this function is only called on elements with ids\n      const id = /** @type {String} */ (element.getAttribute(\"id\"));\n      /** @ts-ignore - safe to loop in this way **/\n      while ((element = element.parentNode)) {\n        let idSet = ctx.idMap.get(element);\n        if (idSet) {\n          idSet.delete(id);\n          if (!idSet.size) {\n            ctx.idMap.delete(element);\n          }\n        }\n      }\n    }\n\n    /**\n     * Moves an element before another element within the same parent.\n     * Uses the proposed `moveBefore` API if available (and working), otherwise falls back to `insertBefore`.\n     * This is essentialy a forward-compat wrapper.\n     *\n     * @param {Element} parentNode - The parent node containing the after element.\n     * @param {Node} element - The element to be moved.\n     * @param {Node | null} after - The reference node to insert `element` before.\n     *                              If `null`, `element` is appended as the last child.\n     */\n    function moveBefore(parentNode, element, after) {\n      // @ts-ignore - use proposed moveBefore feature\n      if (parentNode.moveBefore) {\n        try {\n          // @ts-ignore - use proposed moveBefore feature\n          parentNode.moveBefore(element, after);\n        } catch (e) {\n          // fall back to insertBefore as some browsers may fail on moveBefore when trying to move Dom disconnected nodes to pantry\n          parentNode.insertBefore(element, after);\n        }\n      } else {\n        parentNode.insertBefore(element, after);\n      }\n    }\n\n    return morphChildren;\n  })();\n\n  //=============================================================================\n  // Single Node Morphing Code\n  //=============================================================================\n  const morphNode = (function () {\n    /**\n     * @param {Node} oldNode root node to merge content into\n     * @param {Node} newContent new content to merge\n     * @param {MorphContext} ctx the merge context\n     * @returns {Node | null} the element that ended up in the DOM\n     */\n    function morphNode(oldNode, newContent, ctx) {\n      if (ctx.ignoreActive && oldNode === document.activeElement) {\n        // don't morph focused element\n        return null;\n      }\n\n      if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) {\n        return oldNode;\n      }\n\n      if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (\n        oldNode instanceof HTMLHeadElement &&\n        ctx.head.style !== \"morph\"\n      ) {\n        // ok to cast: if newContent wasn't also a <head>, it would've got caught in the `!isSoftMatch` branch above\n        handleHeadElement(\n          oldNode,\n          /** @type {HTMLHeadElement} */ (newContent),\n          ctx,\n        );\n      } else {\n        morphAttributes(oldNode, newContent, ctx);\n        if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n          // @ts-ignore newContent can be a node here because .firstChild will be null\n          morphChildren(ctx, oldNode, newContent);\n        }\n      }\n      ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n      return oldNode;\n    }\n\n    /**\n     * syncs the oldNode to the newNode, copying over all attributes and\n     * inner element state from the newNode to the oldNode\n     *\n     * @param {Node} oldNode the node to copy attributes & state to\n     * @param {Node} newNode the node to copy attributes & state from\n     * @param {MorphContext} ctx the merge context\n     */\n    function morphAttributes(oldNode, newNode, ctx) {\n      let type = newNode.nodeType;\n\n      // if is an element type, sync the attributes from the\n      // new node into the new node\n      if (type === 1 /* element type */) {\n        const oldElt = /** @type {Element} */ (oldNode);\n        const newElt = /** @type {Element} */ (newNode);\n\n        const oldAttributes = oldElt.attributes;\n        const newAttributes = newElt.attributes;\n        for (const newAttribute of newAttributes) {\n          if (ignoreAttribute(newAttribute.name, oldElt, \"update\", ctx)) {\n            continue;\n          }\n          if (oldElt.getAttribute(newAttribute.name) !== newAttribute.value) {\n            oldElt.setAttribute(newAttribute.name, newAttribute.value);\n          }\n        }\n        // iterate backwards to avoid skipping over items when a delete occurs\n        for (let i = oldAttributes.length - 1; 0 <= i; i--) {\n          const oldAttribute = oldAttributes[i];\n\n          // toAttributes is a live NamedNodeMap, so iteration+mutation is unsafe\n          // e.g. custom element attribute callbacks can remove other attributes\n          if (!oldAttribute) continue;\n\n          if (!newElt.hasAttribute(oldAttribute.name)) {\n            if (ignoreAttribute(oldAttribute.name, oldElt, \"remove\", ctx)) {\n              continue;\n            }\n            oldElt.removeAttribute(oldAttribute.name);\n          }\n        }\n\n        if (!ignoreValueOfActiveElement(oldElt, ctx)) {\n          syncInputValue(oldElt, newElt, ctx);\n        }\n      }\n\n      // sync text nodes\n      if (type === 8 /* comment */ || type === 3 /* text */) {\n        if (oldNode.nodeValue !== newNode.nodeValue) {\n          oldNode.nodeValue = newNode.nodeValue;\n        }\n      }\n    }\n\n    /**\n     * NB: many bothans died to bring us information:\n     *\n     *  https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n     *  https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n     *\n     * @param {Element} oldElement the element to sync the input value to\n     * @param {Element} newElement the element to sync the input value from\n     * @param {MorphContext} ctx the merge context\n     */\n    function syncInputValue(oldElement, newElement, ctx) {\n      if (\n        oldElement instanceof HTMLInputElement &&\n        newElement instanceof HTMLInputElement &&\n        newElement.type !== \"file\"\n      ) {\n        let newValue = newElement.value;\n        let oldValue = oldElement.value;\n\n        // sync boolean attributes\n        syncBooleanAttribute(oldElement, newElement, \"checked\", ctx);\n        syncBooleanAttribute(oldElement, newElement, \"disabled\", ctx);\n\n        if (!newElement.hasAttribute(\"value\")) {\n          if (!ignoreAttribute(\"value\", oldElement, \"remove\", ctx)) {\n            oldElement.value = \"\";\n            oldElement.removeAttribute(\"value\");\n          }\n        } else if (oldValue !== newValue) {\n          if (!ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n            oldElement.setAttribute(\"value\", newValue);\n            oldElement.value = newValue;\n          }\n        }\n        // TODO: QUESTION(1cg): this used to only check `newElement` unlike the other branches -- why?\n        // did I break something?\n      } else if (\n        oldElement instanceof HTMLOptionElement &&\n        newElement instanceof HTMLOptionElement\n      ) {\n        syncBooleanAttribute(oldElement, newElement, \"selected\", ctx);\n      } else if (\n        oldElement instanceof HTMLTextAreaElement &&\n        newElement instanceof HTMLTextAreaElement\n      ) {\n        let newValue = newElement.value;\n        let oldValue = oldElement.value;\n        if (ignoreAttribute(\"value\", oldElement, \"update\", ctx)) {\n          return;\n        }\n        if (newValue !== oldValue) {\n          oldElement.value = newValue;\n        }\n        if (\n          oldElement.firstChild &&\n          oldElement.firstChild.nodeValue !== newValue\n        ) {\n          oldElement.firstChild.nodeValue = newValue;\n        }\n      }\n    }\n\n    /**\n     * @param {Element} oldElement element to write the value to\n     * @param {Element} newElement element to read the value from\n     * @param {string} attributeName the attribute name\n     * @param {MorphContext} ctx the merge context\n     */\n    function syncBooleanAttribute(oldElement, newElement, attributeName, ctx) {\n      // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n      const newLiveValue = newElement[attributeName],\n        // @ts-ignore ditto\n        oldLiveValue = oldElement[attributeName];\n      if (newLiveValue !== oldLiveValue) {\n        const ignoreUpdate = ignoreAttribute(\n          attributeName,\n          oldElement,\n          \"update\",\n          ctx,\n        );\n        if (!ignoreUpdate) {\n          // update attribute's associated DOM property\n          // @ts-ignore this function is only used on boolean attrs that are reflected as dom properties\n          oldElement[attributeName] = newElement[attributeName];\n        }\n        if (newLiveValue) {\n          if (!ignoreUpdate) {\n            // https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML\n            // this is the correct way to set a boolean attribute to \"true\"\n            oldElement.setAttribute(attributeName, \"\");\n          }\n        } else {\n          if (!ignoreAttribute(attributeName, oldElement, \"remove\", ctx)) {\n            oldElement.removeAttribute(attributeName);\n          }\n        }\n      }\n    }\n\n    /**\n     * @param {string} attr the attribute to be mutated\n     * @param {Element} element the element that is going to be updated\n     * @param {\"update\" | \"remove\"} updateType\n     * @param {MorphContext} ctx the merge context\n     * @returns {boolean} true if the attribute should be ignored, false otherwise\n     */\n    function ignoreAttribute(attr, element, updateType, ctx) {\n      if (\n        attr === \"value\" &&\n        ctx.ignoreActiveValue &&\n        element === document.activeElement\n      ) {\n        return true;\n      }\n      return (\n        ctx.callbacks.beforeAttributeUpdated(attr, element, updateType) ===\n        false\n      );\n    }\n\n    /**\n     * @param {Node} possibleActiveElement\n     * @param {MorphContext} ctx\n     * @returns {boolean}\n     */\n    function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n      return (\n        !!ctx.ignoreActiveValue &&\n        possibleActiveElement === document.activeElement &&\n        possibleActiveElement !== document.body\n      );\n    }\n\n    return morphNode;\n  })();\n\n  //=============================================================================\n  // Head Management Functions\n  //=============================================================================\n  /**\n   * @param {MorphContext} ctx\n   * @param {Element} oldNode\n   * @param {Element} newNode\n   * @param {function} callback\n   * @returns {Node[] | Promise<Node[]>}\n   */\n  function withHeadBlocking(ctx, oldNode, newNode, callback) {\n    if (ctx.head.block) {\n      const oldHead = oldNode.querySelector(\"head\");\n      const newHead = newNode.querySelector(\"head\");\n      if (oldHead && newHead) {\n        const promises = handleHeadElement(oldHead, newHead, ctx);\n        // when head promises resolve, proceed ignoring the head tag\n        return Promise.all(promises).then(() => {\n          const newCtx = Object.assign(ctx, {\n            head: {\n              block: false,\n              ignore: true,\n            },\n          });\n          return callback(newCtx);\n        });\n      }\n    }\n    // just proceed if we not head blocking\n    return callback(ctx);\n  }\n\n  /**\n   *  The HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n   *\n   * @param {Element} oldHead\n   * @param {Element} newHead\n   * @param {MorphContext} ctx\n   * @returns {Promise<void>[]}\n   */\n  function handleHeadElement(oldHead, newHead, ctx) {\n    let added = [];\n    let removed = [];\n    let preserved = [];\n    let nodesToAppend = [];\n\n    // put all new head elements into a Map, by their outerHTML\n    let srcToNewHeadNodes = new Map();\n    for (const newHeadChild of newHead.children) {\n      srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n    }\n\n    // for each elt in the current head\n    for (const currentHeadElt of oldHead.children) {\n      // If the current head element is in the map\n      let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n      let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n      let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n      if (inNewContent || isPreserved) {\n        if (isReAppended) {\n          // remove the current version and let the new version replace it and re-execute\n          removed.push(currentHeadElt);\n        } else {\n          // this element already exists and should not be re-appended, so remove it from\n          // the new content map, preserving it in the DOM\n          srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n          preserved.push(currentHeadElt);\n        }\n      } else {\n        if (ctx.head.style === \"append\") {\n          // we are appending and this existing element is not new content\n          // so if and only if it is marked for re-append do we do anything\n          if (isReAppended) {\n            removed.push(currentHeadElt);\n            nodesToAppend.push(currentHeadElt);\n          }\n        } else {\n          // if this is a merge, we remove this content since it is not in the new head\n          if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n            removed.push(currentHeadElt);\n          }\n        }\n      }\n    }\n\n    // Push the remaining new head elements in the Map into the\n    // nodes to append to the head tag\n    nodesToAppend.push(...srcToNewHeadNodes.values());\n\n    let promises = [];\n    for (const newNode of nodesToAppend) {\n      // TODO: This could theoretically be null, based on type\n      let newElt = /** @type {ChildNode} */ (\n        document.createRange().createContextualFragment(newNode.outerHTML)\n          .firstChild\n      );\n      if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n        if (\n          (\"href\" in newElt && newElt.href) ||\n          (\"src\" in newElt && newElt.src)\n        ) {\n          /** @type {(result?: any) => void} */ let resolve;\n          let promise = new Promise(function (_resolve) {\n            resolve = _resolve;\n          });\n          newElt.addEventListener(\"load\", function () {\n            resolve();\n          });\n          promises.push(promise);\n        }\n        oldHead.appendChild(newElt);\n        ctx.callbacks.afterNodeAdded(newElt);\n        added.push(newElt);\n      }\n    }\n\n    // remove all removed elements, after we have appended the new elements to avoid\n    // additional network requests for things like style sheets\n    for (const removedElement of removed) {\n      if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n        oldHead.removeChild(removedElement);\n        ctx.callbacks.afterNodeRemoved(removedElement);\n      }\n    }\n\n    ctx.head.afterHeadMorphed(oldHead, {\n      added: added,\n      kept: preserved,\n      removed: removed,\n    });\n    return promises;\n  }\n\n  //=============================================================================\n  // Create Morph Context Functions\n  //=============================================================================\n  const createMorphContext = (function () {\n    /**\n     *\n     * @param {Element} oldNode\n     * @param {Element} newContent\n     * @param {Config} config\n     * @returns {MorphContext}\n     */\n    function createMorphContext(oldNode, newContent, config) {\n      const { persistentIds, idMap } = createIdMaps(oldNode, newContent);\n\n      const mergedConfig = mergeDefaults(config);\n      const morphStyle = mergedConfig.morphStyle || \"outerHTML\";\n      if (![\"innerHTML\", \"outerHTML\"].includes(morphStyle)) {\n        throw `Do not understand how to morph style ${morphStyle}`;\n      }\n\n      return {\n        target: oldNode,\n        newContent: newContent,\n        config: mergedConfig,\n        morphStyle: morphStyle,\n        ignoreActive: mergedConfig.ignoreActive,\n        ignoreActiveValue: mergedConfig.ignoreActiveValue,\n        restoreFocus: mergedConfig.restoreFocus,\n        idMap: idMap,\n        persistentIds: persistentIds,\n        pantry: createPantry(),\n        activeElementAndParents: createActiveElementAndParents(oldNode),\n        callbacks: mergedConfig.callbacks,\n        head: mergedConfig.head,\n      };\n    }\n\n    /**\n     * Deep merges the config object and the Idiomorph.defaults object to\n     * produce a final configuration object\n     * @param {Config} config\n     * @returns {ConfigInternal}\n     */\n    function mergeDefaults(config) {\n      let finalConfig = Object.assign({}, defaults);\n\n      // copy top level stuff into final config\n      Object.assign(finalConfig, config);\n\n      // copy callbacks into final config (do this to deep merge the callbacks)\n      finalConfig.callbacks = Object.assign(\n        {},\n        defaults.callbacks,\n        config.callbacks,\n      );\n\n      // copy head config into final config  (do this to deep merge the head)\n      finalConfig.head = Object.assign({}, defaults.head, config.head);\n\n      return finalConfig;\n    }\n\n    /**\n     * @returns {HTMLDivElement}\n     */\n    function createPantry() {\n      const pantry = document.createElement(\"div\");\n      pantry.hidden = true;\n      document.body.insertAdjacentElement(\"afterend\", pantry);\n      return pantry;\n    }\n\n    /**\n     * @param {Element} oldNode\n     * @returns {Element[]}\n     */\n    function createActiveElementAndParents(oldNode) {\n      /** @type {Element[]} */\n      let activeElementAndParents = [];\n      let elt = document.activeElement;\n      if (elt?.tagName !== \"BODY\" && oldNode.contains(elt)) {\n        while (elt) {\n          activeElementAndParents.push(elt);\n          if (elt === oldNode) break;\n          elt = elt.parentElement;\n        }\n      }\n      return activeElementAndParents;\n    }\n\n    /**\n     * Returns all elements with an ID contained within the root element and its descendants\n     *\n     * @param {Element} root\n     * @returns {Element[]}\n     */\n    function findIdElements(root) {\n      let elements = Array.from(root.querySelectorAll(\"[id]\"));\n      // root could be a document fragment which doesn't have `getAttribute`\n      if (root.getAttribute?.(\"id\")) {\n        elements.push(root);\n      }\n      return elements;\n    }\n\n    /**\n     * A bottom-up algorithm that populates a map of Element -> IdSet.\n     * The idSet for a given element is the set of all IDs contained within its subtree.\n     * As an optimzation, we filter these IDs through the given list of persistent IDs,\n     * because we don't need to bother considering IDed elements that won't be in the new content.\n     *\n     * @param {Map<Node, Set<string>>} idMap\n     * @param {Set<string>} persistentIds\n     * @param {Element} root\n     * @param {Element[]} elements\n     */\n    function populateIdMapWithTree(idMap, persistentIds, root, elements) {\n      for (const elt of elements) {\n        // we can pretend id is non-null String, because the .has line will reject it immediately if not\n        const id = /** @type {String} */ (elt.getAttribute(\"id\"));\n        if (persistentIds.has(id)) {\n          /** @type {Element|null} */\n          let current = elt;\n          // walk up the parent hierarchy of that element, adding the id\n          // of element to the parent's id set\n          while (current) {\n            let idSet = idMap.get(current);\n            // if the id set doesn't exist, create it and insert it in the map\n            if (idSet == null) {\n              idSet = new Set();\n              idMap.set(current, idSet);\n            }\n            idSet.add(id);\n\n            if (current === root) break;\n            current = current.parentElement;\n          }\n        }\n      }\n    }\n\n    /**\n     * This function computes a map of nodes to all ids contained within that node (inclusive of the\n     * node).  This map can be used to ask if two nodes have intersecting sets of ids, which allows\n     * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n     * to contribute to a parent nodes matching.\n     *\n     * @param {Element} oldContent  the old content that will be morphed\n     * @param {Element} newContent  the new content to morph to\n     * @returns {IdSets}\n     */\n    function createIdMaps(oldContent, newContent) {\n      const oldIdElements = findIdElements(oldContent);\n      const newIdElements = findIdElements(newContent);\n\n      const persistentIds = createPersistentIds(oldIdElements, newIdElements);\n\n      /** @type {Map<Node, Set<string>>} */\n      let idMap = new Map();\n      populateIdMapWithTree(idMap, persistentIds, oldContent, oldIdElements);\n\n      /** @ts-ignore - if newContent is a duck-typed parent, pass its single child node as the root to halt upwards iteration */\n      const newRoot = newContent.__idiomorphRoot || newContent;\n      populateIdMapWithTree(idMap, persistentIds, newRoot, newIdElements);\n\n      return { persistentIds, idMap };\n    }\n\n    /**\n     * This function computes the set of ids that persist between the two contents excluding duplicates\n     *\n     * @param {Element[]} oldIdElements\n     * @param {Element[]} newIdElements\n     * @returns {Set<string>}\n     */\n    function createPersistentIds(oldIdElements, newIdElements) {\n      let duplicateIds = new Set();\n\n      /** @type {Map<string, string>} */\n      let oldIdTagNameMap = new Map();\n      for (const { id, tagName } of oldIdElements) {\n        if (oldIdTagNameMap.has(id)) {\n          duplicateIds.add(id);\n        } else {\n          oldIdTagNameMap.set(id, tagName);\n        }\n      }\n\n      let persistentIds = new Set();\n      for (const { id, tagName } of newIdElements) {\n        if (persistentIds.has(id)) {\n          duplicateIds.add(id);\n        } else if (oldIdTagNameMap.get(id) === tagName) {\n          persistentIds.add(id);\n        }\n        // skip if tag types mismatch because its not possible to morph one tag into another\n      }\n\n      for (const id of duplicateIds) {\n        persistentIds.delete(id);\n      }\n      return persistentIds;\n    }\n\n    return createMorphContext;\n  })();\n\n  //=============================================================================\n  // HTML Normalization Functions\n  //=============================================================================\n  const { normalizeElement, normalizeParent } = (function () {\n    /** @type {WeakSet<Node>} */\n    const generatedByIdiomorph = new WeakSet();\n\n    /**\n     *\n     * @param {Element | Document} content\n     * @returns {Element}\n     */\n    function normalizeElement(content) {\n      if (content instanceof Document) {\n        return content.documentElement;\n      } else {\n        return content;\n      }\n    }\n\n    /**\n     *\n     * @param {null | string | Node | HTMLCollection | Node[] | Document & {generatedByIdiomorph:boolean}} newContent\n     * @returns {Element}\n     */\n    function normalizeParent(newContent) {\n      if (newContent == null) {\n        return document.createElement(\"div\"); // dummy parent element\n      } else if (typeof newContent === \"string\") {\n        return normalizeParent(parseContent(newContent));\n      } else if (\n        generatedByIdiomorph.has(/** @type {Element} */ (newContent))\n      ) {\n        // the template tag created by idiomorph parsing can serve as a dummy parent\n        return /** @type {Element} */ (newContent);\n      } else if (newContent instanceof Node) {\n        if (newContent.parentNode) {\n          // we can't use the parent directly because newContent may have siblings\n          // that we don't want in the morph, and reparenting might be expensive (TODO is it?),\n          // so instead we create a fake parent node that only sees a slice of its children.\n          /** @type {Element} */\n          return /** @type {any} */ (new SlicedParentNode(newContent));\n        } else {\n          // a single node is added as a child to a dummy parent\n          const dummyParent = document.createElement(\"div\");\n          dummyParent.append(newContent);\n          return dummyParent;\n        }\n      } else {\n        // all nodes in the array or HTMLElement collection are consolidated under\n        // a single dummy parent element\n        const dummyParent = document.createElement(\"div\");\n        for (const elt of [...newContent]) {\n          dummyParent.append(elt);\n        }\n        return dummyParent;\n      }\n    }\n\n    /**\n     * A fake duck-typed parent element to wrap a single node, without actually reparenting it.\n     * This is useful because the node may have siblings that we don't want in the morph, and it may also be moved\n     * or replaced with one or more elements during the morph. This class effectively allows us a window into\n     * a slice of a node's children.\n     * \"If it walks like a duck, and quacks like a duck, then it must be a duck!\" -- James Whitcomb Riley (1849\u20131916)\n     */\n    class SlicedParentNode {\n      /** @param {Node} node */\n      constructor(node) {\n        this.originalNode = node;\n        this.realParentNode = /** @type {Element} */ (node.parentNode);\n        this.previousSibling = node.previousSibling;\n        this.nextSibling = node.nextSibling;\n      }\n\n      /** @returns {Node[]} */\n      get childNodes() {\n        // return slice of realParent's current childNodes, based on previousSibling and nextSibling\n        const nodes = [];\n        let cursor = this.previousSibling\n          ? this.previousSibling.nextSibling\n          : this.realParentNode.firstChild;\n        while (cursor && cursor != this.nextSibling) {\n          nodes.push(cursor);\n          cursor = cursor.nextSibling;\n        }\n        return nodes;\n      }\n\n      /**\n       * @param {string} selector\n       * @returns {Element[]}\n       */\n      querySelectorAll(selector) {\n        return this.childNodes.reduce((results, node) => {\n          if (node instanceof Element) {\n            if (node.matches(selector)) results.push(node);\n            const nodeList = node.querySelectorAll(selector);\n            for (let i = 0; i < nodeList.length; i++) {\n              results.push(nodeList[i]);\n            }\n          }\n          return results;\n        }, /** @type {Element[]} */ ([]));\n      }\n\n      /**\n       * @param {Node} node\n       * @param {Node} referenceNode\n       * @returns {Node}\n       */\n      insertBefore(node, referenceNode) {\n        return this.realParentNode.insertBefore(node, referenceNode);\n      }\n\n      /**\n       * @param {Node} node\n       * @param {Node} referenceNode\n       * @returns {Node}\n       */\n      moveBefore(node, referenceNode) {\n        // @ts-ignore - use new moveBefore feature\n        return this.realParentNode.moveBefore(node, referenceNode);\n      }\n\n      /**\n       * for later use with populateIdMapWithTree to halt upwards iteration\n       * @returns {Node}\n       */\n      get __idiomorphRoot() {\n        return this.originalNode;\n      }\n    }\n\n    /**\n     *\n     * @param {string} newContent\n     * @returns {Node | null | DocumentFragment}\n     */\n    function parseContent(newContent) {\n      let parser = new DOMParser();\n\n      // remove svgs to avoid false-positive matches on head, etc.\n      let contentWithSvgsRemoved = newContent.replace(\n        /<svg(\\s[^>]*>|>)([\\s\\S]*?)<\\/svg>/gim,\n        \"\",\n      );\n\n      // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n      if (\n        contentWithSvgsRemoved.match(/<\\/html>/) ||\n        contentWithSvgsRemoved.match(/<\\/head>/) ||\n        contentWithSvgsRemoved.match(/<\\/body>/)\n      ) {\n        let content = parser.parseFromString(newContent, \"text/html\");\n        // if it is a full HTML document, return the document itself as the parent container\n        if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n          generatedByIdiomorph.add(content);\n          return content;\n        } else {\n          // otherwise return the html element as the parent container\n          let htmlElement = content.firstChild;\n          if (htmlElement) {\n            generatedByIdiomorph.add(htmlElement);\n          }\n          return htmlElement;\n        }\n      } else {\n        // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n        // deal with touchy tags like tr, tbody, etc.\n        let responseDoc = parser.parseFromString(\n          \"<body><template>\" + newContent + \"</template></body>\",\n          \"text/html\",\n        );\n        let content = /** @type {HTMLTemplateElement} */ (\n          responseDoc.body.querySelector(\"template\")\n        ).content;\n        generatedByIdiomorph.add(content);\n        return content;\n      }\n    }\n\n    return { normalizeElement, normalizeParent };\n  })();\n\n  //=============================================================================\n  // This is what ends up becoming the Idiomorph global object\n  //=============================================================================\n  return {\n    morph,\n    defaults,\n  };\n})();\n\n/**\n * Morph the state of the currentElement based on the attributes and contents of\n * the newElement. Morphing may dispatch turbo:before-morph-element,\n * turbo:before-morph-attribute, and turbo:morph-element events.\n *\n * @param currentElement Element destination of morphing changes\n * @param newElement Element source of morphing changes\n */\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n  Idiomorph.morph(currentElement, newElement, {\n    ...options,\n    callbacks: new DefaultIdiomorphCallbacks(callbacks)\n  });\n}\n\n/**\n * Morph the child elements of the currentElement based on the child elements of\n * the newElement. Morphing children may dispatch turbo:before-morph-element,\n * turbo:before-morph-attribute, and turbo:morph-element events.\n *\n * @param currentElement Element destination of morphing children changes\n * @param newElement Element source of morphing children changes\n */\nfunction morphChildren(currentElement, newElement, options = {}) {\n  morphElements(currentElement, newElement.childNodes, {\n    ...options,\n    morphStyle: \"innerHTML\"\n  });\n}\n\nfunction shouldRefreshFrameWithMorphing(currentFrame, newFrame) {\n  return currentFrame instanceof FrameElement &&\n    currentFrame.shouldReloadWithMorph && (!newFrame || areFramesCompatibleForRefreshing(currentFrame, newFrame)) &&\n    !currentFrame.closest(\"[data-turbo-permanent]\")\n}\n\nfunction areFramesCompatibleForRefreshing(currentFrame, newFrame) {\n  // newFrame cannot yet be an instance of FrameElement because custom\n  // elements don't get initialized until they're attached to the DOM, so\n  // test its Element#nodeName instead\n  return newFrame instanceof Element && newFrame.nodeName === \"TURBO-FRAME\" && currentFrame.id === newFrame.id &&\n  (!newFrame.getAttribute(\"src\") || urlsAreEqual(currentFrame.src, newFrame.getAttribute(\"src\")))\n}\n\nfunction closestFrameReloadableWithMorphing(node) {\n  return node.parentElement.closest(\"turbo-frame[src][refresh=morph]\")\n}\n\nclass DefaultIdiomorphCallbacks {\n  #beforeNodeMorphed\n\n  constructor({ beforeNodeMorphed } = {}) {\n    this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n  }\n\n  beforeNodeAdded = (node) => {\n    return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n  }\n\n  beforeNodeMorphed = (currentElement, newElement) => {\n    if (currentElement instanceof Element) {\n      if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n        const event = dispatch(\"turbo:before-morph-element\", {\n          cancelable: true,\n          target: currentElement,\n          detail: { currentElement, newElement }\n        });\n\n        return !event.defaultPrevented\n      } else {\n        return false\n      }\n    }\n  }\n\n  beforeAttributeUpdated = (attributeName, target, mutationType) => {\n    const event = dispatch(\"turbo:before-morph-attribute\", {\n      cancelable: true,\n      target,\n      detail: { attributeName, mutationType }\n    });\n\n    return !event.defaultPrevented\n  }\n\n  beforeNodeRemoved = (node) => {\n    return this.beforeNodeMorphed(node)\n  }\n\n  afterNodeMorphed = (currentElement, newElement) => {\n    if (currentElement instanceof Element) {\n      dispatch(\"turbo:morph-element\", {\n        target: currentElement,\n        detail: { currentElement, newElement }\n      });\n    }\n  }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n  static renderElement(currentElement, newElement) {\n    dispatch(\"turbo:before-frame-morph\", {\n      target: currentElement,\n      detail: { currentElement, newElement }\n    });\n\n    morphChildren(currentElement, newElement, {\n      callbacks: {\n        beforeNodeMorphed: (node, newNode) => {\n          if (\n            shouldRefreshFrameWithMorphing(node, newNode) &&\n              closestFrameReloadableWithMorphing(node) === currentElement\n          ) {\n            node.reload();\n            return false\n          }\n          return true\n        }\n      }\n    });\n  }\n\n  async preservingPermanentElements(callback) {\n    return await callback()\n  }\n}\n\nclass ProgressBar {\n  static animationDuration = 300 /*ms*/\n\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\n  hiding = false\n  value = 0\n  visible = false\n\n  constructor() {\n    this.stylesheetElement = this.createStylesheetElement();\n    this.progressElement = this.createProgressElement();\n    this.installStylesheetElement();\n    this.setValue(0);\n  }\n\n  show() {\n    if (!this.visible) {\n      this.visible = true;\n      this.installProgressElement();\n      this.startTrickling();\n    }\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\n  setValue(value) {\n    this.value = value;\n    this.refresh();\n  }\n\n  // Private\n\n  installStylesheetElement() {\n    document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n  }\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\n  fadeProgressElement(callback) {\n    this.progressElement.style.opacity = \"0\";\n    setTimeout(callback, ProgressBar.animationDuration * 1.5);\n  }\n\n  uninstallProgressElement() {\n    if (this.progressElement.parentNode) {\n      document.documentElement.removeChild(this.progressElement);\n    }\n  }\n\n  startTrickling() {\n    if (!this.trickleInterval) {\n      this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n    }\n  }\n\n  stopTrickling() {\n    window.clearInterval(this.trickleInterval);\n    delete this.trickleInterval;\n  }\n\n  trickle = () => {\n    this.setValue(this.value + Math.random() / 100);\n  }\n\n  refresh() {\n    requestAnimationFrame(() => {\n      this.progressElement.style.width = `${10 + this.value * 90}%`;\n    });\n  }\n\n  createStylesheetElement() {\n    const element = document.createElement(\"style\");\n    element.type = \"text/css\";\n    element.textContent = ProgressBar.defaultCSS;\n    const cspNonce = getCspNonce();\n    if (cspNonce) {\n      element.nonce = cspNonce;\n    }\n    return element\n  }\n\n  createProgressElement() {\n    const element = document.createElement(\"div\");\n    element.className = \"turbo-progress-bar\";\n    return element\n  }\n}\n\nclass HeadSnapshot extends Snapshot {\n  detailsByOuterHTML = this.children\n    .filter((element) => !elementIsNoscript(element))\n    .map((element) => elementWithoutNonce(element))\n    .reduce((result, element) => {\n      const { outerHTML } = element;\n      const details =\n        outerHTML in result\n          ? result[outerHTML]\n          : {\n              type: elementType(element),\n              tracked: elementIsTracked(element),\n              elements: []\n            };\n      return {\n        ...result,\n        [outerHTML]: {\n          ...details,\n          elements: [...details.elements, element]\n        }\n      }\n    }, {})\n\n  get trackedElementSignature() {\n    return Object.keys(this.detailsByOuterHTML)\n      .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n      .join(\"\")\n  }\n\n  getScriptElementsNotInSnapshot(snapshot) {\n    return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n  }\n\n  getStylesheetElementsNotInSnapshot(snapshot) {\n    return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n  }\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\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      } else if (elements.length > 1) {\n        return [...result, ...elements.slice(1)]\n      } else {\n        return result\n      }\n    }, [])\n  }\n\n  getMetaValue(name) {\n    const element = this.findMetaElementByName(name);\n    return element ? element.getAttribute(\"content\") : null\n  }\n\n  findMetaElementByName(name) {\n    return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n      const {\n        elements: [element]\n      } = this.detailsByOuterHTML[outerHTML];\n      return elementIsMetaElementWithName(element, name) ? element : result\n    }, undefined | undefined)\n  }\n}\n\nfunction elementType(element) {\n  if (elementIsScript(element)) {\n    return \"script\"\n  } else if (elementIsStylesheet(element)) {\n    return \"stylesheet\"\n  }\n}\n\nfunction elementIsTracked(element) {\n  return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n  const tagName = element.localName;\n  return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n  const tagName = element.localName;\n  return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n  const tagName = element.localName;\n  return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n  const tagName = element.localName;\n  return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n  if (element.hasAttribute(\"nonce\")) {\n    element.setAttribute(\"nonce\", \"\");\n  }\n\n  return element\n}\n\nclass PageSnapshot extends Snapshot {\n  static fromHTMLString(html = \"\") {\n    return this.fromDocument(parseHTMLDocument(html))\n  }\n\n  static fromElement(element) {\n    return this.fromDocument(element.ownerDocument)\n  }\n\n  static fromDocument({ documentElement, body, head }) {\n    return new this(documentElement, body, new HeadSnapshot(head))\n  }\n\n  constructor(documentElement, body, headSnapshot) {\n    super(body);\n    this.documentElement = documentElement;\n    this.headSnapshot = headSnapshot;\n  }\n\n  clone() {\n    const clonedElement = this.element.cloneNode(true);\n\n    const selectElements = this.element.querySelectorAll(\"select\");\n    const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n    for (const [index, source] of selectElements.entries()) {\n      const clone = clonedSelectElements[index];\n      for (const option of clone.selectedOptions) option.selected = false;\n      for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n    }\n\n    for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n      clonedPasswordInput.value = \"\";\n    }\n\n    for (const clonedNoscriptElement of clonedElement.querySelectorAll(\"noscript\")) {\n      clonedNoscriptElement.remove();\n    }\n\n    return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n  }\n\n  get lang() {\n    return this.documentElement.getAttribute(\"lang\")\n  }\n\n  get dir() {\n    return this.documentElement.getAttribute(\"dir\")\n  }\n\n  get headElement() {\n    return this.headSnapshot.element\n  }\n\n  get rootLocation() {\n    const root = this.getSetting(\"root\") ?? \"/\";\n    return expandURL(root)\n  }\n\n  get cacheControlValue() {\n    return this.getSetting(\"cache-control\")\n  }\n\n  get isPreviewable() {\n    return this.cacheControlValue != \"no-preview\"\n  }\n\n  get isCacheable() {\n    return this.cacheControlValue != \"no-cache\"\n  }\n\n  get isVisitable() {\n    return this.getSetting(\"visit-control\") != \"reload\"\n  }\n\n  get prefersViewTransitions() {\n    const viewTransitionEnabled = this.getSetting(\"view-transition\") === \"true\" || this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\";\n    return viewTransitionEnabled && !window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\n  }\n\n  get refreshMethod() {\n    return this.getSetting(\"refresh-method\")\n  }\n\n  get refreshScroll() {\n    return this.getSetting(\"refresh-scroll\")\n  }\n\n  // Private\n\n  getSetting(name) {\n    return this.headSnapshot.getMetaValue(`turbo-${name}`)\n  }\n}\n\nclass ViewTransitioner {\n  #viewTransitionStarted = false\n  #lastOperation = Promise.resolve()\n\n  renderChange(useViewTransition, render) {\n    if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n      this.#viewTransitionStarted = true;\n      this.#lastOperation = this.#lastOperation.then(async () => {\n        await document.startViewTransition(render).finished;\n      });\n    } else {\n      this.#lastOperation = this.#lastOperation.then(render);\n    }\n\n    return this.#lastOperation\n  }\n\n  get viewTransitionsAvailable() {\n    return document.startViewTransition\n  }\n}\n\nconst defaultOptions = {\n  action: \"advance\",\n  historyChanged: false,\n  visitCachedSnapshot: () => {},\n  willRender: true,\n  updateHistory: true,\n  shouldCacheSnapshot: true,\n  acceptsStreamResponse: false,\n  refresh: {}\n};\n\nconst TimingMetric = {\n  visitStart: \"visitStart\",\n  requestStart: \"requestStart\",\n  requestEnd: \"requestEnd\",\n  visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n  initialized: \"initialized\",\n  started: \"started\",\n  canceled: \"canceled\",\n  failed: \"failed\",\n  completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n  networkFailure: 0,\n  timeoutFailure: -1,\n  contentTypeMismatch: -2\n};\n\nconst Direction = {\n  advance: \"forward\",\n  restore: \"back\",\n  replace: \"none\"\n};\n\nclass Visit {\n  identifier = uuid() // Required by turbo-ios\n  timingMetrics = {}\n\n  followedRedirect = false\n  historyChanged = false\n  scrolled = false\n  shouldCacheSnapshot = true\n  acceptsStreamResponse = false\n  snapshotCached = false\n  state = VisitState.initialized\n  viewTransitioner = new ViewTransitioner()\n\n  constructor(delegate, location, restorationIdentifier, options = {}) {\n    this.delegate = delegate;\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier || uuid();\n\n    const {\n      action,\n      historyChanged,\n      referrer,\n      snapshot,\n      snapshotHTML,\n      response,\n      visitCachedSnapshot,\n      willRender,\n      updateHistory,\n      shouldCacheSnapshot,\n      acceptsStreamResponse,\n      direction,\n      refresh\n    } = {\n      ...defaultOptions,\n      ...options\n    };\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.isPageRefresh = this.view.isPageRefresh(this);\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    this.direction = direction || Direction[action];\n    this.refresh = refresh;\n  }\n\n  get adapter() {\n    return this.delegate.adapter\n  }\n\n  get view() {\n    return this.delegate.view\n  }\n\n  get history() {\n    return this.delegate.history\n  }\n\n  get restorationData() {\n    return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n  }\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\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\n  complete() {\n    if (this.state == VisitState.started) {\n      this.recordTimingMetric(TimingMetric.visitEnd);\n      this.adapter.visitCompleted(this);\n      this.state = VisitState.completed;\n      this.followRedirect();\n\n      if (!this.followedRedirect) {\n        this.delegate.visitCompleted(this);\n      }\n    }\n  }\n\n  fail() {\n    if (this.state == VisitState.started) {\n      this.state = VisitState.failed;\n      this.adapter.visitFailed(this);\n      this.delegate.visitCompleted(this);\n    }\n  }\n\n  changeHistory() {\n    if (!this.historyChanged && this.updateHistory) {\n      const actionForHistory = this.location.href === this.referrer?.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\n  issueRequest() {\n    if (this.hasPreloadedResponse()) {\n      this.simulateRequest();\n    } else if (this.shouldIssueRequest() && !this.request) {\n      this.request = new FetchRequest(this, FetchMethod.get, this.location);\n      this.request.perform();\n    }\n  }\n\n  simulateRequest() {\n    if (this.response) {\n      this.startRequest();\n      this.recordResponse();\n      this.finishRequest();\n    }\n  }\n\n  startRequest() {\n    this.recordTimingMetric(TimingMetric.requestStart);\n    this.adapter.visitRequestStarted(this);\n  }\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      } else {\n        this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n      }\n    }\n  }\n\n  finishRequest() {\n    this.recordTimingMetric(TimingMetric.requestEnd);\n    this.adapter.visitRequestFinished(this);\n  }\n\n  loadResponse() {\n    if (this.response) {\n      const { statusCode, responseHTML } = this.response;\n      this.render(async () => {\n        if (this.shouldCacheSnapshot) this.cacheSnapshot();\n        if (this.view.renderPromise) await this.view.renderPromise;\n\n        if (isSuccessful(statusCode) && responseHTML != null) {\n          const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n          await this.renderPageSnapshot(snapshot, false);\n\n          this.adapter.visitRendered(this);\n          this.complete();\n        } else {\n          await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n          this.adapter.visitRendered(this);\n          this.fail();\n        }\n      });\n    }\n  }\n\n  getCachedSnapshot() {\n    const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\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\n  getPreloadedSnapshot() {\n    if (this.snapshotHTML) {\n      return PageSnapshot.fromHTMLString(this.snapshotHTML)\n    }\n  }\n\n  hasCachedSnapshot() {\n    return this.getCachedSnapshot() != null\n  }\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.isPageRefresh) {\n          this.adapter.visitRendered(this);\n        } else {\n          if (this.view.renderPromise) await this.view.renderPromise;\n\n          await this.renderPageSnapshot(snapshot, isPreview);\n\n          this.adapter.visitRendered(this);\n          if (!isPreview) {\n            this.complete();\n          }\n        }\n      });\n    }\n  }\n\n  followRedirect() {\n    if (this.redirectedToLocation && !this.followedRedirect && this.response?.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\n  // Fetch request delegate\n\n  prepareRequest(request) {\n    if (this.acceptsStreamResponse) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted() {\n    this.startRequest();\n  }\n\n  requestPreventedHandlingResponse(_request, _response) {}\n\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    } else {\n      this.redirectedToLocation = response.redirected ? response.location : undefined;\n      this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n    }\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    } else {\n      this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n    }\n  }\n\n  requestErrored(_request, _error) {\n    this.recordResponse({\n      statusCode: SystemStatusCode.networkFailure,\n      redirected: false\n    });\n  }\n\n  requestFinished() {\n    this.finishRequest();\n  }\n\n  // Scrolling\n\n  performScroll() {\n    if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n      if (this.action == \"restore\") {\n        this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n      } else {\n        this.scrollToAnchor() || this.view.scrollToTop();\n      }\n\n      this.scrolled = true;\n    }\n  }\n\n  scrollToRestoredPosition() {\n    const { scrollPosition } = this.restorationData;\n    if (scrollPosition) {\n      this.view.scrollToPosition(scrollPosition);\n      return true\n    }\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\n  // Instrumentation\n\n  recordTimingMetric(metric) {\n    this.timingMetrics[metric] = new Date().getTime();\n  }\n\n  getTimingMetrics() {\n    return { ...this.timingMetrics }\n  }\n\n  // Private\n\n  hasPreloadedResponse() {\n    return typeof this.response == \"object\"\n  }\n\n  shouldIssueRequest() {\n    if (this.action == \"restore\") {\n      return !this.hasCachedSnapshot()\n    } else {\n      return this.willRender\n    }\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\n  async render(callback) {\n    this.cancelRender();\n    await new Promise((resolve) => {\n      this.frame =\n        document.visibilityState === \"hidden\" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve());\n    });\n    await callback();\n    delete this.frame;\n  }\n\n  async renderPageSnapshot(snapshot, isPreview) {\n    await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n      await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n      this.performScroll();\n    });\n  }\n\n  cancelRender() {\n    if (this.frame) {\n      cancelAnimationFrame(this.frame);\n      delete this.frame;\n    }\n  }\n}\n\nfunction isSuccessful(statusCode) {\n  return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n  progressBar = new ProgressBar()\n\n  constructor(session) {\n    this.session = session;\n  }\n\n  visitProposedToLocation(location, options) {\n    if (locationIsVisitable(location, this.navigator.rootLocation)) {\n      this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n    } else {\n      window.location.href = location.toString();\n    }\n  }\n\n  visitStarted(visit) {\n    this.location = visit.location;\n    this.redirectedToLocation = null;\n\n    visit.loadCachedSnapshot();\n    visit.issueRequest();\n  }\n\n  visitRequestStarted(visit) {\n    this.progressBar.setValue(0);\n    if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n      this.showVisitProgressBarAfterDelay();\n    } else {\n      this.showProgressBar();\n    }\n  }\n\n  visitRequestCompleted(visit) {\n    visit.loadResponse();\n\n    if (visit.response.redirected) {\n      this.redirectedToLocation = visit.redirectedToLocation;\n    }\n  }\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\n  visitRequestFinished(_visit) {}\n\n  visitCompleted(_visit) {\n    this.progressBar.setValue(1);\n    this.hideVisitProgressBar();\n  }\n\n  pageInvalidated(reason) {\n    this.reload(reason);\n  }\n\n  visitFailed(_visit) {\n    this.progressBar.setValue(1);\n    this.hideVisitProgressBar();\n  }\n\n  visitRendered(_visit) {}\n\n  // Link prefetching\n\n  linkPrefetchingIsEnabledForLocation(location) {\n    return true\n  }\n\n  // Form Submission Delegate\n\n  formSubmissionStarted(_formSubmission) {\n    this.progressBar.setValue(0);\n    this.showFormProgressBarAfterDelay();\n  }\n\n  formSubmissionFinished(_formSubmission) {\n    this.progressBar.setValue(1);\n    this.hideFormProgressBar();\n  }\n\n  // Private\n\n  showVisitProgressBarAfterDelay() {\n    this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n  }\n\n  hideVisitProgressBar() {\n    this.progressBar.hide();\n    if (this.visitProgressBarTimeout != null) {\n      window.clearTimeout(this.visitProgressBarTimeout);\n      delete this.visitProgressBarTimeout;\n    }\n  }\n\n  showFormProgressBarAfterDelay() {\n    if (this.formProgressBarTimeout == null) {\n      this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\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\n  showProgressBar = () => {\n    this.progressBar.show();\n  }\n\n  reload(reason) {\n    dispatch(\"turbo:reload\", { detail: reason });\n\n    window.location.href = (this.redirectedToLocation || this.location)?.toString() || window.location.href;\n  }\n\n  get navigator() {\n    return this.session.navigator\n  }\n}\n\nclass CacheObserver {\n  selector = \"[data-turbo-temporary]\"\n\n  started = false\n\n  start() {\n    if (!this.started) {\n      this.started = true;\n      addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      this.started = false;\n      removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n    }\n  }\n\n  removeTemporaryElements = (_event) => {\n    for (const element of this.temporaryElements) {\n      element.remove();\n    }\n  }\n\n  get temporaryElements() {\n    return [...document.querySelectorAll(this.selector)]\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\n  start() {\n    this.linkInterceptor.start();\n    this.formSubmitObserver.start();\n  }\n\n  stop() {\n    this.linkInterceptor.stop();\n    this.formSubmitObserver.stop();\n  }\n\n  // Link interceptor delegate\n\n  shouldInterceptLinkClick(element, _location, _event) {\n    return this.#shouldRedirect(element)\n  }\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\n  // Form submit observer delegate\n\n  willSubmitForm(element, submitter) {\n    return (\n      element.closest(\"turbo-frame\") == null &&\n      this.#shouldSubmit(element, submitter) &&\n      this.#shouldRedirect(element, submitter)\n    )\n  }\n\n  formSubmitted(element, submitter) {\n    const frame = this.#findFrameElement(element, submitter);\n    if (frame) {\n      frame.delegate.formSubmitted(element, submitter);\n    }\n  }\n\n  #shouldSubmit(form, submitter) {\n    const action = getAction$1(form, submitter);\n    const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n    const rootLocation = expandURL(meta?.content ?? \"/\");\n\n    return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n  }\n\n  #shouldRedirect(element, submitter) {\n    const isNavigatable =\n      element instanceof HTMLFormElement\n        ? this.session.submissionIsNavigatable(element, submitter)\n        : this.session.elementIsNavigatable(element);\n\n    if (isNavigatable) {\n      const frame = this.#findFrameElement(element, submitter);\n      return frame ? frame != element.closest(\"turbo-frame\") : false\n    } else {\n      return false\n    }\n  }\n\n  #findFrameElement(element, submitter) {\n    const id = 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  location\n  restorationIdentifier = uuid()\n  restorationData = {}\n  started = false\n  currentIndex = 0\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      addEventListener(\"popstate\", this.onPopState, false);\n      this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n      this.started = true;\n      this.replace(new URL(window.location.href));\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      removeEventListener(\"popstate\", this.onPopState, false);\n      this.started = false;\n    }\n  }\n\n  push(location, restorationIdentifier) {\n    this.update(history.pushState, location, restorationIdentifier);\n  }\n\n  replace(location, restorationIdentifier) {\n    this.update(history.replaceState, location, restorationIdentifier);\n  }\n\n  update(method, location, restorationIdentifier = uuid()) {\n    if (method === history.pushState) ++this.currentIndex;\n\n    const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n    method.call(history, state, \"\", location.href);\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier;\n  }\n\n  // Restoration data\n\n  getRestorationDataForIdentifier(restorationIdentifier) {\n    return this.restorationData[restorationIdentifier] || {}\n  }\n\n  updateRestorationData(additionalData) {\n    const { restorationIdentifier } = this;\n    const restorationData = this.restorationData[restorationIdentifier];\n    this.restorationData[restorationIdentifier] = {\n      ...restorationData,\n      ...additionalData\n    };\n  }\n\n  // Scroll restoration\n\n  assumeControlOfScrollRestoration() {\n    if (!this.previousScrollRestoration) {\n      this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n      history.scrollRestoration = \"manual\";\n    }\n  }\n\n  relinquishControlOfScrollRestoration() {\n    if (this.previousScrollRestoration) {\n      history.scrollRestoration = this.previousScrollRestoration;\n      delete this.previousScrollRestoration;\n    }\n  }\n\n  // Event handlers\n\n  onPopState = (event) => {\n    const { turbo } = event.state || {};\n    this.location = new URL(window.location.href);\n\n    if (turbo) {\n      const { restorationIdentifier, restorationIndex } = turbo;\n      this.restorationIdentifier = restorationIdentifier;\n      const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n      this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n      this.currentIndex = restorationIndex;\n    } else {\n      this.currentIndex++;\n      this.delegate.historyPoppedWithEmptyState(this.location);\n    }\n  }\n}\n\nclass LinkPrefetchObserver {\n  started = false\n  #prefetchedLink = null\n\n  constructor(delegate, eventTarget) {\n    this.delegate = delegate;\n    this.eventTarget = eventTarget;\n  }\n\n  start() {\n    if (this.started) return\n\n    if (this.eventTarget.readyState === \"loading\") {\n      this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n    } else {\n      this.#enable();\n    }\n  }\n\n  stop() {\n    if (!this.started) return\n\n    this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n      capture: true,\n      passive: true\n    });\n    this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n      capture: true,\n      passive: true\n    });\n\n    this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n    this.started = false;\n  }\n\n  #enable = () => {\n    this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n      capture: true,\n      passive: true\n    });\n    this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n      capture: true,\n      passive: true\n    });\n\n    this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n    this.started = true;\n  }\n\n  #tryToPrefetchRequest = (event) => {\n    if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n    const target = event.target;\n    const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n    if (isLink && this.#isPrefetchable(target)) {\n      const link = target;\n      const location = getLocationForLink(link);\n\n      if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n        this.#prefetchedLink = link;\n\n        const fetchRequest = new FetchRequest(\n          this,\n          FetchMethod.get,\n          location,\n          new URLSearchParams(),\n          target\n        );\n\n        fetchRequest.fetchOptions.priority = \"low\";\n\n        prefetchCache.putLater(location, fetchRequest, this.#cacheTtl);\n      }\n    }\n  }\n\n  #cancelRequestIfObsolete = (event) => {\n    if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n  }\n\n  #cancelPrefetchRequest = () => {\n    prefetchCache.clear();\n    this.#prefetchedLink = null;\n  }\n\n  #tryToUsePrefetchedRequest = (event) => {\n    if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n      const cached = prefetchCache.get(event.detail.url);\n\n      if (cached) {\n        // User clicked link, use cache response\n        event.detail.fetchRequest = cached;\n      }\n\n      prefetchCache.clear();\n    }\n  }\n\n  prepareRequest(request) {\n    const link = request.target;\n\n    request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n    const turboFrame = link.closest(\"turbo-frame\");\n    const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n    if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n      request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n    }\n  }\n\n  // Fetch request interface\n\n  requestSucceededWithResponse() {}\n\n  requestStarted(fetchRequest) {}\n\n  requestErrored(fetchRequest) {}\n\n  requestFinished(fetchRequest) {}\n\n  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n  requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n  get #cacheTtl() {\n    return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n  }\n\n  #isPrefetchable(link) {\n    const href = link.getAttribute(\"href\");\n\n    if (!href) return false\n\n    if (unfetchableLink(link)) return false\n    if (linkToTheSamePage(link)) return false\n    if (linkOptsOut(link)) return false\n    if (nonSafeLink(link)) return false\n    if (eventPrevented(link)) return false\n\n    return true\n  }\n}\n\nconst unfetchableLink = (link) => {\n  return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n  return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n  if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n  if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n  const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n  if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n  return false\n};\n\nconst nonSafeLink = (link) => {\n  const turboMethod = link.getAttribute(\"data-turbo-method\");\n  if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n  if (isUJS(link)) return true\n  if (link.hasAttribute(\"data-turbo-confirm\")) return true\n  if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n  return false\n};\n\nconst isUJS = (link) => {\n  return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n  const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n  return event.defaultPrevented\n};\n\nclass Navigator {\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  proposeVisit(location, options = {}) {\n    if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n      this.delegate.visitProposedToLocation(location, options);\n    }\n  }\n\n  startVisit(locatable, restorationIdentifier, options = {}) {\n    this.stop();\n    this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n      referrer: this.location,\n      ...options\n    });\n    this.currentVisit.start();\n  }\n\n  submitForm(form, submitter) {\n    this.stop();\n    this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n    this.formSubmission.start();\n  }\n\n  stop() {\n    if (this.formSubmission) {\n      this.formSubmission.stop();\n      delete this.formSubmission;\n    }\n\n    if (this.currentVisit) {\n      this.currentVisit.cancel();\n      delete this.currentVisit;\n    }\n  }\n\n  get adapter() {\n    return this.delegate.adapter\n  }\n\n  get view() {\n    return this.delegate.view\n  }\n\n  get rootLocation() {\n    return this.view.snapshot.rootLocation\n  }\n\n  get history() {\n    return this.delegate.history\n  }\n\n  // Form submission delegate\n\n  formSubmissionStarted(formSubmission) {\n    // Not all adapters implement formSubmissionStarted\n    if (typeof this.adapter.formSubmissionStarted === \"function\") {\n      this.adapter.formSubmissionStarted(formSubmission);\n    }\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\n        const { statusCode, redirected } = fetchResponse;\n        const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n        const visitOptions = {\n          action,\n          shouldCacheSnapshot,\n          response: { statusCode, responseHTML, redirected }\n        };\n        this.proposeVisit(fetchResponse.location, visitOptions);\n      }\n    }\n  }\n\n  async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n    const responseHTML = await fetchResponse.responseHTML;\n\n    if (responseHTML) {\n      const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n      if (fetchResponse.serverError) {\n        await this.view.renderError(snapshot, this.currentVisit);\n      } else {\n        await this.view.renderPage(snapshot, false, true, this.currentVisit);\n      }\n      if (snapshot.refreshScroll !== \"preserve\") {\n        this.view.scrollToTop();\n      }\n      this.view.clearSnapshotCache();\n    }\n  }\n\n  formSubmissionErrored(formSubmission, error) {\n    console.error(error);\n  }\n\n  formSubmissionFinished(formSubmission) {\n    // Not all adapters implement formSubmissionFinished\n    if (typeof this.adapter.formSubmissionFinished === \"function\") {\n      this.adapter.formSubmissionFinished(formSubmission);\n    }\n  }\n\n  // Link prefetching\n\n  linkPrefetchingIsEnabledForLocation(location) {\n    // Not all adapters implement linkPrefetchingIsEnabledForLocation\n    if (typeof this.adapter.linkPrefetchingIsEnabledForLocation === \"function\") {\n      return this.adapter.linkPrefetchingIsEnabledForLocation(location)\n    }\n\n    return true\n  }\n\n  // Visit delegate\n\n  visitStarted(visit) {\n    this.delegate.visitStarted(visit);\n  }\n\n  visitCompleted(visit) {\n    this.delegate.visitCompleted(visit);\n    delete this.currentVisit;\n  }\n\n  // Same-page links are no longer handled with a Visit.\n  // This method is still needed for Turbo Native adapters.\n  locationWithActionIsSamePage(location, action) {\n    return false\n  }\n\n  // Visits\n\n  get location() {\n    return this.history.location\n  }\n\n  get restorationIdentifier() {\n    return this.history.restorationIdentifier\n  }\n\n  #getActionForFormSubmission(formSubmission, fetchResponse) {\n    const { submitter, formElement } = formSubmission;\n    return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n  }\n\n  #getDefaultAction(fetchResponse) {\n    const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n    return sameLocationRedirect ? \"replace\" : \"advance\"\n  }\n}\n\nconst PageStage = {\n  initial: 0,\n  loading: 1,\n  interactive: 2,\n  complete: 3\n};\n\nclass PageObserver {\n  stage = PageStage.initial\n  started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\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\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\n  interpretReadyState = () => {\n    const { readyState } = this;\n    if (readyState == \"interactive\") {\n      this.pageIsInteractive();\n    } else if (readyState == \"complete\") {\n      this.pageIsComplete();\n    }\n  }\n\n  pageIsInteractive() {\n    if (this.stage == PageStage.loading) {\n      this.stage = PageStage.interactive;\n      this.delegate.pageBecameInteractive();\n    }\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\n  pageWillUnload = () => {\n    this.delegate.pageWillUnload();\n  }\n\n  get readyState() {\n    return document.readyState\n  }\n}\n\nclass ScrollObserver {\n  started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.started) {\n      addEventListener(\"scroll\", this.onScroll, false);\n      this.onScroll();\n      this.started = true;\n    }\n  }\n\n  stop() {\n    if (this.started) {\n      removeEventListener(\"scroll\", this.onScroll, false);\n      this.started = false;\n    }\n  }\n\n  onScroll = () => {\n    this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n  }\n\n  // Private\n\n  updatePosition(position) {\n    this.delegate.scrollPositionChanged(position);\n  }\n}\n\nclass StreamMessageRenderer {\n  render({ fragment }) {\n    Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n      withAutofocusFromFragment(fragment, () => {\n        withPreservedFocus(() => {\n          document.documentElement.appendChild(fragment);\n        });\n      });\n    });\n  }\n\n  // Bardo delegate\n\n  enteringBardo(currentPermanentElement, newPermanentElement) {\n    newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n  }\n\n  leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n  const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n  const permanentElementMap = {};\n  for (const permanentElementInDocument of permanentElementsInDocument) {\n    const { id } = permanentElementInDocument;\n\n    for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n      const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n      if (elementInStream) {\n        permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n      }\n    }\n  }\n\n  return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n  const generatedID = `turbo-stream-autofocus-${uuid()}`;\n  const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n  const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n  let willAutofocusId = null;\n\n  if (elementWithAutofocus) {\n    if (elementWithAutofocus.id) {\n      willAutofocusId = elementWithAutofocus.id;\n    } else {\n      willAutofocusId = generatedID;\n    }\n\n    elementWithAutofocus.id = willAutofocusId;\n  }\n\n  callback();\n  await nextRepaint();\n\n  const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n  if (hasNoActiveElement && willAutofocusId) {\n    const elementToAutofocus = document.getElementById(willAutofocusId);\n\n    if (elementIsFocusable(elementToAutofocus)) {\n      elementToAutofocus.focus();\n    }\n    if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n      elementToAutofocus.removeAttribute(\"id\");\n    }\n  }\n}\n\nasync function withPreservedFocus(callback) {\n  const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n  const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n  if (restoreFocusTo) {\n    const elementToFocus = document.getElementById(restoreFocusTo);\n\n    if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n      elementToFocus.focus();\n    }\n  }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n  for (const streamElement of nodeListOfStreamElements) {\n    const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n    if (elementWithAutofocus) return elementWithAutofocus\n  }\n\n  return null\n}\n\nclass StreamObserver {\n  sources = new Set()\n  #started = false\n\n  constructor(delegate) {\n    this.delegate = delegate;\n  }\n\n  start() {\n    if (!this.#started) {\n      this.#started = true;\n      addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n    }\n  }\n\n  stop() {\n    if (this.#started) {\n      this.#started = false;\n      removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n    }\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\n  disconnectStreamSource(source) {\n    if (this.streamSourceIsConnected(source)) {\n      this.sources.delete(source);\n      source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n    }\n  }\n\n  streamSourceIsConnected(source) {\n    return this.sources.has(source)\n  }\n\n  inspectFetchResponse = (event) => {\n    const response = fetchResponseFromEvent(event);\n    if (response && fetchResponseIsStream(response)) {\n      event.preventDefault();\n      this.receiveMessageResponse(response);\n    }\n  }\n\n  receiveMessageEvent = (event) => {\n    if (this.#started && typeof event.data == \"string\") {\n      this.receiveMessageHTML(event.data);\n    }\n  }\n\n  async receiveMessageResponse(response) {\n    const html = await response.responseHTML;\n    if (html) {\n      this.receiveMessageHTML(html);\n    }\n  }\n\n  receiveMessageHTML(html) {\n    this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n  }\n}\n\nfunction fetchResponseFromEvent(event) {\n  const fetchResponse = event.detail?.fetchResponse;\n  if (fetchResponse instanceof FetchResponse) {\n    return fetchResponse\n  }\n}\n\nfunction fetchResponseIsStream(response) {\n  const contentType = response.contentType ?? \"\";\n  return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n  static renderElement(currentElement, newElement) {\n    const { documentElement, body } = document;\n\n    documentElement.replaceChild(newElement, body);\n  }\n\n  async render() {\n    this.replaceHeadAndBody();\n    this.activateScriptElements();\n  }\n\n  replaceHeadAndBody() {\n    const { documentElement, head } = document;\n    documentElement.replaceChild(this.newHead, head);\n    this.renderElement(this.currentElement, this.newElement);\n  }\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\n  get newHead() {\n    return this.newSnapshot.headSnapshot.element\n  }\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    } else {\n      document.documentElement.appendChild(newElement);\n    }\n  }\n\n  get shouldRender() {\n    return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n  }\n\n  get reloadReason() {\n    if (!this.newSnapshot.isVisitable) {\n      return {\n        reason: \"turbo_visit_control_is_reload\"\n      }\n    }\n\n    if (!this.trackedElementsAreIdentical) {\n      return {\n        reason: \"tracked_element_mismatch\"\n      }\n    }\n  }\n\n  async prepareToRender() {\n    this.#setLanguage();\n    await this.mergeHead();\n  }\n\n  async render() {\n    if (this.willRender) {\n      await this.replaceBody();\n    }\n  }\n\n  finishRendering() {\n    super.finishRendering();\n    if (!this.isPreview) {\n      this.focusFirstAutofocusableElement();\n    }\n  }\n\n  get currentHeadSnapshot() {\n    return this.currentSnapshot.headSnapshot\n  }\n\n  get newHeadSnapshot() {\n    return this.newSnapshot.headSnapshot\n  }\n\n  get newElement() {\n    return this.newSnapshot.element\n  }\n\n  #setLanguage() {\n    const { documentElement } = this.currentSnapshot;\n    const { dir, lang } = this.newSnapshot;\n\n    if (lang) {\n      documentElement.setAttribute(\"lang\", lang);\n    } else {\n      documentElement.removeAttribute(\"lang\");\n    }\n    if (dir) {\n      documentElement.setAttribute(\"dir\", dir);\n    } else {\n      documentElement.removeAttribute(\"dir\");\n    }\n  }\n\n  async mergeHead() {\n    const mergedHeadElements = this.mergeProvisionalElements();\n    const newStylesheetElements = this.copyNewHeadStylesheetElements();\n    this.copyNewHeadScriptElements();\n\n    await mergedHeadElements;\n    await newStylesheetElements;\n\n    if (this.willRender) {\n      this.removeUnusedDynamicStylesheetElements();\n    }\n  }\n\n  async replaceBody() {\n    await this.preservingPermanentElements(async () => {\n      this.activateNewBody();\n      await this.assignNewBody();\n    });\n  }\n\n  get trackedElementsAreIdentical() {\n    return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n  }\n\n  async copyNewHeadStylesheetElements() {\n    const loadingElements = [];\n\n    for (const element of this.newHeadStylesheetElements) {\n      loadingElements.push(waitForLoad(element));\n\n      document.head.appendChild(element);\n    }\n\n    await Promise.all(loadingElements);\n  }\n\n  copyNewHeadScriptElements() {\n    for (const element of this.newHeadScriptElements) {\n      document.head.appendChild(activateScriptElement(element));\n    }\n  }\n\n  removeUnusedDynamicStylesheetElements() {\n    for (const element of this.unusedDynamicStylesheetElements) {\n      document.head.removeChild(element);\n    }\n  }\n\n  async mergeProvisionalElements() {\n    const newHeadElements = [...this.newHeadProvisionalElements];\n\n    for (const element of this.currentHeadProvisionalElements) {\n      if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n        document.head.removeChild(element);\n      }\n    }\n\n    for (const element of newHeadElements) {\n      document.head.appendChild(element);\n    }\n  }\n\n  isCurrentElementInElementList(element, elementList) {\n    for (const [index, newElement] of elementList.entries()) {\n      // if title element...\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\n      // if any other element...\n      if (newElement.isEqualNode(element)) {\n        elementList.splice(index, 1);\n        return true\n      }\n    }\n\n    return false\n  }\n\n  removeCurrentHeadProvisionalElements() {\n    for (const element of this.currentHeadProvisionalElements) {\n      document.head.removeChild(element);\n    }\n  }\n\n  copyNewHeadProvisionalElements() {\n    for (const element of this.newHeadProvisionalElements) {\n      document.head.appendChild(element);\n    }\n  }\n\n  activateNewBody() {\n    document.adoptNode(this.newElement);\n    this.removeNoscriptElements();\n    this.activateNewBodyScriptElements();\n  }\n\n  removeNoscriptElements() {\n    for (const noscriptElement of this.newElement.querySelectorAll(\"noscript\")) {\n      noscriptElement.remove();\n    }\n  }\n\n  activateNewBodyScriptElements() {\n    for (const inertScriptElement of this.newBodyScriptElements) {\n      const activatedScriptElement = activateScriptElement(inertScriptElement);\n      inertScriptElement.replaceWith(activatedScriptElement);\n    }\n  }\n\n  async assignNewBody() {\n    await this.renderElement(this.currentElement, this.newElement);\n  }\n\n  get unusedDynamicStylesheetElements() {\n    return this.oldHeadStylesheetElements.filter((element) => {\n      return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n    })\n  }\n\n  get oldHeadStylesheetElements() {\n    return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n  }\n\n  get newHeadStylesheetElements() {\n    return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n  }\n\n  get newHeadScriptElements() {\n    return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n  }\n\n  get currentHeadProvisionalElements() {\n    return this.currentHeadSnapshot.provisionalElements\n  }\n\n  get newHeadProvisionalElements() {\n    return this.newHeadSnapshot.provisionalElements\n  }\n\n  get newBodyScriptElements() {\n    return this.newElement.querySelectorAll(\"script\")\n  }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n  static renderElement(currentElement, newElement) {\n    morphElements(currentElement, newElement, {\n      callbacks: {\n        beforeNodeMorphed: (node, newNode) => {\n          if (\n            shouldRefreshFrameWithMorphing(node, newNode) &&\n              !closestFrameReloadableWithMorphing(node)\n          ) {\n            node.reload();\n            return false\n          }\n          return true\n        }\n      }\n    });\n\n    dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n  }\n\n  async preservingPermanentElements(callback) {\n    return await callback()\n  }\n\n  get renderMethod() {\n    return \"morph\"\n  }\n\n  get shouldAutofocus() {\n    return false\n  }\n}\n\nclass SnapshotCache extends LRUCache {\n  constructor(size) {\n    super(size, toCacheKey);\n  }\n\n  get snapshots() {\n    return this.entries\n  }\n}\n\nclass PageView extends View {\n  snapshotCache = new SnapshotCache(10)\n  lastRenderedLocation = new URL(location.href)\n  forceReloaded = false\n\n  shouldTransitionTo(newSnapshot) {\n    return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n  }\n\n  renderPage(snapshot, isPreview = false, willRender = true, visit) {\n    const shouldMorphPage = this.isPageRefresh(visit) && (visit?.refresh?.method || this.snapshot.refreshMethod) === \"morph\";\n    const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n    const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);\n\n    if (!renderer.shouldRender) {\n      this.forceReloaded = true;\n    } else {\n      visit?.changeHistory();\n    }\n\n    return this.render(renderer)\n  }\n\n  renderError(snapshot, visit) {\n    visit?.changeHistory();\n    const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n    return this.render(renderer)\n  }\n\n  clearSnapshotCache() {\n    this.snapshotCache.clear();\n  }\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\n  getCachedSnapshotForLocation(location) {\n    return this.snapshotCache.get(location)\n  }\n\n  isPageRefresh(visit) {\n    return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n  }\n\n  shouldPreserveScrollPosition(visit) {\n    return this.isPageRefresh(visit) && (visit?.refresh?.scroll || this.snapshot.refreshScroll) === \"preserve\"\n  }\n\n  get snapshot() {\n    return PageSnapshot.fromElement(this.element)\n  }\n}\n\nclass Preloader {\n  selector = \"a[data-turbo-preload]\"\n\n  constructor(delegate, snapshotCache) {\n    this.delegate = delegate;\n    this.snapshotCache = snapshotCache;\n  }\n\n  start() {\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n    } else {\n      this.preloadOnLoadLinksForView(document.body);\n    }\n  }\n\n  stop() {\n    document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n  }\n\n  preloadOnLoadLinksForView(element) {\n    for (const link of element.querySelectorAll(this.selector)) {\n      if (this.delegate.shouldPreloadLink(link)) {\n        this.preloadURL(link);\n      }\n    }\n  }\n\n  async preloadURL(link) {\n    const location = new URL(link.href);\n\n    if (this.snapshotCache.has(location)) {\n      return\n    }\n\n    const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n    await fetchRequest.perform();\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(fetchRequest) {\n    fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n  }\n\n  async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n    try {\n      const responseHTML = await fetchResponse.responseHTML;\n      const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n      this.snapshotCache.put(fetchRequest.url, snapshot);\n    } catch (_) {\n      // If we cannot preload that is ok!\n    }\n  }\n\n  requestStarted(fetchRequest) {}\n\n  requestErrored(fetchRequest) {}\n\n  requestFinished(fetchRequest) {}\n\n  requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n  requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n  #preloadAll = () => {\n    this.preloadOnLoadLinksForView(document.body);\n  }\n}\n\nclass Cache {\n  constructor(session) {\n    this.session = session;\n  }\n\n  clear() {\n    this.session.clearCache();\n  }\n\n  resetCacheControl() {\n    this.#setCacheControl(\"\");\n  }\n\n  exemptPageFromCache() {\n    this.#setCacheControl(\"no-cache\");\n  }\n\n  exemptPageFromPreview() {\n    this.#setCacheControl(\"no-preview\");\n  }\n\n  #setCacheControl(value) {\n    setMetaContent(\"turbo-cache-control\", value);\n  }\n}\n\nclass Session {\n  navigator = new Navigator(this)\n  history = new History(this)\n  view = new PageView(this, document.documentElement)\n  adapter = new BrowserAdapter(this)\n\n  pageObserver = new PageObserver(this)\n  cacheObserver = new CacheObserver()\n  linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n  linkClickObserver = new LinkClickObserver(this, window)\n  formSubmitObserver = new FormSubmitObserver(this, document)\n  scrollObserver = new ScrollObserver(this)\n  streamObserver = new StreamObserver(this)\n  formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n  frameRedirector = new FrameRedirector(this, document.documentElement)\n  streamMessageRenderer = new StreamMessageRenderer()\n  cache = new Cache(this)\n\n  enabled = true\n  started = false\n  #pageRefreshDebouncePeriod = 150\n\n  constructor(recentRequests) {\n    this.recentRequests = recentRequests;\n    this.preloader = new Preloader(this, this.view.snapshotCache);\n    this.debouncedRefresh = this.refresh;\n    this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n  }\n\n  start() {\n    if (!this.started) {\n      this.pageObserver.start();\n      this.cacheObserver.start();\n      this.linkPrefetchObserver.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\n  disable() {\n    this.enabled = false;\n  }\n\n  stop() {\n    if (this.started) {\n      this.pageObserver.stop();\n      this.cacheObserver.stop();\n      this.linkPrefetchObserver.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.preloader.stop();\n      this.started = false;\n    }\n  }\n\n  registerAdapter(adapter) {\n    this.adapter = adapter;\n  }\n\n  visit(location, options = {}) {\n    const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n    if (frameElement instanceof FrameElement) {\n      const action = options.action || getVisitAction(frameElement);\n\n      frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n      frameElement.src = location.toString();\n    } else {\n      this.navigator.proposeVisit(expandURL(location), options);\n    }\n  }\n\n  refresh(url, options = {}) {\n    options = typeof options === \"string\" ? { requestId: options } : options;\n\n    const { method, requestId, scroll } = options;\n    const isRecentRequest = requestId && this.recentRequests.has(requestId);\n    const isCurrentUrl = url === document.baseURI;\n    if (!isRecentRequest && !this.navigator.currentVisit && isCurrentUrl) {\n      this.visit(url, { action: \"replace\", shouldCacheSnapshot: false, refresh: { method, scroll } });\n    }\n  }\n\n  connectStreamSource(source) {\n    this.streamObserver.connectStreamSource(source);\n  }\n\n  disconnectStreamSource(source) {\n    this.streamObserver.disconnectStreamSource(source);\n  }\n\n  renderStreamMessage(message) {\n    this.streamMessageRenderer.render(StreamMessage.wrap(message));\n  }\n\n  clearCache() {\n    this.view.clearSnapshotCache();\n  }\n\n  setProgressBarDelay(delay) {\n    console.warn(\n      \"Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`\"\n    );\n\n    this.progressBarDelay = delay;\n  }\n\n  set progressBarDelay(delay) {\n    config.drive.progressBarDelay = delay;\n  }\n\n  get progressBarDelay() {\n    return config.drive.progressBarDelay\n  }\n\n  set drive(value) {\n    config.drive.enabled = value;\n  }\n\n  get drive() {\n    return config.drive.enabled\n  }\n\n  set formMode(value) {\n    config.forms.mode = value;\n  }\n\n  get formMode() {\n    return config.forms.mode\n  }\n\n  get location() {\n    return this.history.location\n  }\n\n  get restorationIdentifier() {\n    return this.history.restorationIdentifier\n  }\n\n  get pageRefreshDebouncePeriod() {\n    return this.#pageRefreshDebouncePeriod\n  }\n\n  set pageRefreshDebouncePeriod(value) {\n    this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n    this.#pageRefreshDebouncePeriod = value;\n  }\n\n  // Preloader delegate\n\n  shouldPreloadLink(element) {\n    const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n    const isStream = element.hasAttribute(\"data-turbo-stream\");\n    const frameTarget = element.getAttribute(\"data-turbo-frame\");\n    const frame = frameTarget == \"_top\" ?\n      null :\n      document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n    if (isUnsafe || isStream || frame instanceof FrameElement) {\n      return false\n    } else {\n      const location = new URL(element.href);\n\n      return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n    }\n  }\n\n  // History delegate\n\n  historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n    if (this.enabled) {\n      this.navigator.startVisit(location, restorationIdentifier, {\n        action: \"restore\",\n        historyChanged: true,\n        direction\n      });\n    } else {\n      this.adapter.pageInvalidated({\n        reason: \"turbo_disabled\"\n      });\n    }\n  }\n\n  historyPoppedWithEmptyState(location) {\n    this.history.replace(location);\n    this.view.lastRenderedLocation = location;\n    this.view.cacheSnapshot();\n  }\n\n  // Scroll observer delegate\n\n  scrollPositionChanged(position) {\n    this.history.updateRestorationData({ scrollPosition: position });\n  }\n\n  // Form click observer delegate\n\n  willSubmitFormLinkToLocation(link, location) {\n    return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n  }\n\n  submittedFormLinkToLocation() {}\n\n  // Link hover observer delegate\n\n  canPrefetchRequestToLocation(link, location) {\n    return (\n      this.elementIsNavigatable(link) &&\n      locationIsVisitable(location, this.snapshot.rootLocation) &&\n      this.navigator.linkPrefetchingIsEnabledForLocation(location)\n    )\n  }\n\n  // Link click observer delegate\n\n  willFollowLinkToLocation(link, location, event) {\n    return (\n      this.elementIsNavigatable(link) &&\n      locationIsVisitable(location, this.snapshot.rootLocation) &&\n      this.applicationAllowsFollowingLinkToLocation(link, location, event)\n    )\n  }\n\n  followedLinkToLocation(link, location) {\n    const action = this.getActionForLink(link);\n    const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n    this.visit(location.href, { action, acceptsStreamResponse });\n  }\n\n  // Navigator delegate\n\n  allowsVisitingLocationWithAction(location, action) {\n    return this.applicationAllowsVisitingLocation(location)\n  }\n\n  visitProposedToLocation(location, options) {\n    extendURLWithDeprecatedProperties(location);\n    this.adapter.visitProposedToLocation(location, options);\n  }\n\n  // Visit delegate\n\n  visitStarted(visit) {\n    if (!visit.acceptsStreamResponse) {\n      markAsBusy(document.documentElement);\n      this.view.markVisitDirection(visit.direction);\n    }\n    extendURLWithDeprecatedProperties(visit.location);\n    this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n  }\n\n  visitCompleted(visit) {\n    this.view.unmarkVisitDirection();\n    clearBusyState(document.documentElement);\n    this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(form, submitter) {\n    const action = getAction$1(form, submitter);\n\n    return (\n      this.submissionIsNavigatable(form, submitter) &&\n      locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n    )\n  }\n\n  formSubmitted(form, submitter) {\n    this.navigator.submitForm(form, submitter);\n  }\n\n  // Page observer delegate\n\n  pageBecameInteractive() {\n    this.view.lastRenderedLocation = this.location;\n    this.notifyApplicationAfterPageLoad();\n  }\n\n  pageLoaded() {\n    this.history.assumeControlOfScrollRestoration();\n  }\n\n  pageWillUnload() {\n    this.history.relinquishControlOfScrollRestoration();\n  }\n\n  // Stream observer delegate\n\n  receivedMessageFromStream(message) {\n    this.renderStreamMessage(message);\n  }\n\n  // Page view delegate\n\n  viewWillCacheSnapshot() {\n    this.notifyApplicationBeforeCachingSnapshot();\n  }\n\n  allowsImmediateRender({ element }, options) {\n    const event = this.notifyApplicationBeforeRender(element, options);\n    const {\n      defaultPrevented,\n      detail: { render }\n    } = event;\n\n    if (this.view.renderer && render) {\n      this.view.renderer.renderElement = render;\n    }\n\n    return !defaultPrevented\n  }\n\n  viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n    this.view.lastRenderedLocation = this.history.location;\n    this.notifyApplicationAfterRender(renderMethod);\n  }\n\n  preloadOnLoadLinksForView(element) {\n    this.preloader.preloadOnLoadLinksForView(element);\n  }\n\n  viewInvalidated(reason) {\n    this.adapter.pageInvalidated(reason);\n  }\n\n  // Frame element\n\n  frameLoaded(frame) {\n    this.notifyApplicationAfterFrameLoad(frame);\n  }\n\n  frameRendered(fetchResponse, frame) {\n    this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n  }\n\n  // Application events\n\n  applicationAllowsFollowingLinkToLocation(link, location, ev) {\n    const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n    return !event.defaultPrevented\n  }\n\n  applicationAllowsVisitingLocation(location) {\n    const event = this.notifyApplicationBeforeVisitingLocation(location);\n    return !event.defaultPrevented\n  }\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\n  notifyApplicationBeforeVisitingLocation(location) {\n    return dispatch(\"turbo:before-visit\", {\n      detail: { url: location.href },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationAfterVisitingLocation(location, action) {\n    return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n  }\n\n  notifyApplicationBeforeCachingSnapshot() {\n    return dispatch(\"turbo:before-cache\")\n  }\n\n  notifyApplicationBeforeRender(newBody, options) {\n    return dispatch(\"turbo:before-render\", {\n      detail: { newBody, ...options },\n      cancelable: true\n    })\n  }\n\n  notifyApplicationAfterRender(renderMethod) {\n    return dispatch(\"turbo:render\", { detail: { renderMethod } })\n  }\n\n  notifyApplicationAfterPageLoad(timing = {}) {\n    return dispatch(\"turbo:load\", {\n      detail: { url: this.location.href, timing }\n    })\n  }\n\n  notifyApplicationAfterFrameLoad(frame) {\n    return dispatch(\"turbo:frame-load\", { target: frame })\n  }\n\n  notifyApplicationAfterFrameRender(fetchResponse, frame) {\n    return dispatch(\"turbo:frame-render\", {\n      detail: { fetchResponse },\n      target: frame,\n      cancelable: true\n    })\n  }\n\n  // Helpers\n\n  submissionIsNavigatable(form, submitter) {\n    if (config.forms.mode == \"off\") {\n      return false\n    } else {\n      const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n      if (config.forms.mode == \"optin\") {\n        return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n      } else {\n        return submitterIsNavigatable && this.elementIsNavigatable(form)\n      }\n    }\n  }\n\n  elementIsNavigatable(element) {\n    const container = findClosestRecursively(element, \"[data-turbo]\");\n    const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n    // Check if Drive is enabled on the session or we're within a Frame.\n    if (config.drive.enabled || withinFrame) {\n      // Element is navigatable by default, unless `data-turbo=\"false\"`.\n      if (container) {\n        return container.getAttribute(\"data-turbo\") != \"false\"\n      } else {\n        return true\n      }\n    } else {\n      // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n      if (container) {\n        return container.getAttribute(\"data-turbo\") == \"true\"\n      } else {\n        return false\n      }\n    }\n  }\n\n  // Private\n\n  getActionForLink(link) {\n    return getVisitAction(link) || \"advance\"\n  }\n\n  get snapshot() {\n    return this.view.snapshot\n  }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n  Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n  absoluteURL: {\n    get() {\n      return this.toString()\n    }\n  }\n};\n\nconst session = new Session(recentRequests);\nconst { cache, navigator } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n  session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n  session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n  session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n  session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n  session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n  session.renderStreamMessage(message);\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n  console.warn(\n    \"Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.drive.progressBarDelay = delay;\n}\n\nfunction setConfirmMethod(confirmMethod) {\n  console.warn(\n    \"Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.forms.confirm = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n  console.warn(\n    \"Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n  );\n  config.forms.mode = mode;\n}\n\n/**\n * Morph the state of the currentBody based on the attributes and contents of\n * the newBody. Morphing body elements may dispatch turbo:morph,\n * turbo:before-morph-element, turbo:before-morph-attribute, and\n * turbo:morph-element events.\n *\n * @param currentBody HTMLBodyElement destination of morphing changes\n * @param newBody HTMLBodyElement source of morphing changes\n */\nfunction morphBodyElements(currentBody, newBody) {\n  MorphingPageRenderer.renderElement(currentBody, newBody);\n}\n\n/**\n * Morph the child elements of the currentFrame based on the child elements of\n * the newFrame. Morphing turbo-frame elements may dispatch turbo:before-frame-morph,\n * turbo:before-morph-element, turbo:before-morph-attribute, and\n * turbo:morph-element events.\n *\n * @param currentFrame FrameElement destination of morphing children changes\n * @param newFrame FrameElement source of morphing children changes\n */\nfunction morphTurboFrameElements(currentFrame, newFrame) {\n  MorphingFrameRenderer.renderElement(currentFrame, newFrame);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  navigator: navigator,\n  session: session,\n  cache: cache,\n  PageRenderer: PageRenderer,\n  PageSnapshot: PageSnapshot,\n  FrameRenderer: FrameRenderer,\n  fetch: fetchWithTurboHeaders,\n  config: config,\n  start: start,\n  registerAdapter: registerAdapter,\n  visit: visit,\n  connectStreamSource: connectStreamSource,\n  disconnectStreamSource: disconnectStreamSource,\n  renderStreamMessage: renderStreamMessage,\n  setProgressBarDelay: setProgressBarDelay,\n  setConfirmMethod: setConfirmMethod,\n  setFormMode: setFormMode,\n  morphBodyElements: morphBodyElements,\n  morphTurboFrameElements: morphTurboFrameElements,\n  morphChildren: morphChildren,\n  morphElements: morphElements\n});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n  fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n  #currentFetchRequest = null\n  #resolveVisitPromise = () => {}\n  #connected = false\n  #hasBeenLoaded = false\n  #ignoredAttributes = new Set()\n  #shouldMorphFrame = false\n  action = null\n\n  constructor(element) {\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\n  // Frame delegate\n\n  connect() {\n    if (!this.#connected) {\n      this.#connected = true;\n      if (this.loadingStyle == FrameLoadingStyle.lazy) {\n        this.appearanceObserver.start();\n      } else {\n        this.#loadSourceURL();\n      }\n      this.formLinkClickObserver.start();\n      this.linkInterceptor.start();\n      this.formSubmitObserver.start();\n    }\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      if (!this.element.hasAttribute(\"recurse\")) {\n        this.#currentFetchRequest?.cancel();\n      }\n    }\n  }\n\n  disabledChanged() {\n    if (this.disabled) {\n      this.#currentFetchRequest?.cancel();\n    } else if (this.loadingStyle == FrameLoadingStyle.eager) {\n      this.#loadSourceURL();\n    }\n  }\n\n  sourceURLChanged() {\n    if (this.#isIgnoringChangesTo(\"src\")) return\n\n    if (!this.sourceURL) {\n      this.#currentFetchRequest?.cancel();\n    }\n\n    if (this.element.isConnected) {\n      this.complete = false;\n    }\n\n    if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n      this.#loadSourceURL();\n    }\n  }\n\n  sourceURLReloaded() {\n    const { refresh, src } = this.element;\n\n    this.#shouldMorphFrame = src && refresh === \"morph\";\n\n    this.element.removeAttribute(\"complete\");\n    this.element.src = null;\n    this.element.src = src;\n    return this.element.loaded\n  }\n\n  loadingStyleChanged() {\n    if (this.loadingStyle == FrameLoadingStyle.lazy) {\n      this.appearanceObserver.start();\n    } else {\n      this.appearanceObserver.stop();\n      this.#loadSourceURL();\n    }\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\n  async loadResponse(fetchResponse) {\n    if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n      this.sourceURL = fetchResponse.response.url;\n    }\n\n    try {\n      const html = await fetchResponse.responseHTML;\n      if (html) {\n        const document = parseHTMLDocument(html);\n        const pageSnapshot = PageSnapshot.fromDocument(document);\n\n        if (pageSnapshot.isVisitable) {\n          await this.#loadFrameResponse(fetchResponse, document);\n        } else {\n          await this.#handleUnvisitableFrameResponse(fetchResponse);\n        }\n      }\n    } finally {\n      this.#shouldMorphFrame = false;\n      this.fetchResponseLoaded = () => Promise.resolve();\n    }\n  }\n\n  // Appearance observer delegate\n\n  elementAppearedInViewport(element) {\n    this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n    this.#loadSourceURL();\n  }\n\n  // Form link click observer delegate\n\n  willSubmitFormLinkToLocation(link) {\n    return this.#shouldInterceptNavigation(link)\n  }\n\n  submittedFormLinkToLocation(link, _location, form) {\n    const frame = this.#findFrameElement(link);\n    if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n  }\n\n  // Link interceptor delegate\n\n  shouldInterceptLinkClick(element, _location, _event) {\n    return this.#shouldInterceptNavigation(element)\n  }\n\n  linkClickIntercepted(element, location) {\n    this.#navigateFrame(element, location);\n  }\n\n  // Form submit observer delegate\n\n  willSubmitForm(element, submitter) {\n    return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n  }\n\n  formSubmitted(element, submitter) {\n    if (this.formSubmission) {\n      this.formSubmission.stop();\n    }\n\n    this.formSubmission = new FormSubmission(this, element, submitter);\n\n    const { fetchRequest } = this.formSubmission;\n    const frame = this.#findFrameElement(element, submitter);\n\n    this.prepareRequest(fetchRequest, frame);\n    this.formSubmission.start();\n  }\n\n  // Fetch request delegate\n\n  prepareRequest(request, frame = this) {\n    request.headers[\"Turbo-Frame\"] = frame.id;\n\n    if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n      request.acceptResponseType(StreamMessage.contentType);\n    }\n  }\n\n  requestStarted(_request) {\n    markAsBusy(this.element);\n  }\n\n  requestPreventedHandlingResponse(_request, _response) {\n    this.#resolveVisitPromise();\n  }\n\n  async requestSucceededWithResponse(request, response) {\n    await this.loadResponse(response);\n    this.#resolveVisitPromise();\n  }\n\n  async requestFailedWithResponse(request, response) {\n    await this.loadResponse(response);\n    this.#resolveVisitPromise();\n  }\n\n  requestErrored(request, error) {\n    console.error(error);\n    this.#resolveVisitPromise();\n  }\n\n  requestFinished(_request) {\n    clearBusyState(this.element);\n  }\n\n  // Form submission delegate\n\n  formSubmissionStarted({ formElement }) {\n    markAsBusy(formElement, this.#findFrameElement(formElement));\n  }\n\n  formSubmissionSucceededWithResponse(formSubmission, response) {\n    const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n    frame.delegate.loadResponse(response);\n\n    if (!formSubmission.isSafe) {\n      session.clearCache();\n    }\n  }\n\n  formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n    this.element.delegate.loadResponse(fetchResponse);\n    session.clearCache();\n  }\n\n  formSubmissionErrored(formSubmission, error) {\n    console.error(error);\n  }\n\n  formSubmissionFinished({ formElement }) {\n    clearBusyState(formElement, this.#findFrameElement(formElement));\n  }\n\n  // View delegate\n\n  allowsImmediateRender({ element: newFrame }, options) {\n    const event = dispatch(\"turbo:before-frame-render\", {\n      target: this.element,\n      detail: { newFrame, ...options },\n      cancelable: true\n    });\n\n    const {\n      defaultPrevented,\n      detail: { render }\n    } = event;\n\n    if (this.view.renderer && render) {\n      this.view.renderer.renderElement = render;\n    }\n\n    return !defaultPrevented\n  }\n\n  viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n  preloadOnLoadLinksForView(element) {\n    session.preloadOnLoadLinksForView(element);\n  }\n\n  viewInvalidated() {}\n\n  // Frame renderer delegate\n\n  willRenderFrame(currentElement, _newElement) {\n    this.previousFrameElement = currentElement.cloneNode(true);\n  }\n\n  visitCachedSnapshot = ({ element }) => {\n    const frame = element.querySelector(\"#\" + this.element.id);\n\n    if (frame && this.previousFrameElement) {\n      frame.replaceChildren(...this.previousFrameElement.children);\n    }\n\n    delete this.previousFrameElement;\n  }\n\n  // Private\n\n  async #loadFrameResponse(fetchResponse, document) {\n    const newFrameElement = await this.extractForeignFrameElement(document.body);\n    const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;\n\n    if (newFrameElement) {\n      const snapshot = new Snapshot(newFrameElement);\n      const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);\n      if (this.view.renderPromise) await this.view.renderPromise;\n      this.changeHistory();\n\n      await this.view.render(renderer);\n      this.complete = true;\n      session.frameRendered(fetchResponse, this.element);\n      session.frameLoaded(this.element);\n      await this.fetchResponseLoaded(fetchResponse);\n    } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n      this.#handleFrameMissingFromResponse(fetchResponse);\n    }\n  }\n\n  async #visit(url) {\n    const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n    this.#currentFetchRequest?.cancel();\n    this.#currentFetchRequest = request;\n\n    return new Promise((resolve) => {\n      this.#resolveVisitPromise = () => {\n        this.#resolveVisitPromise = () => {};\n        this.#currentFetchRequest = null;\n        resolve();\n      };\n      request.perform();\n    })\n  }\n\n  #navigateFrame(element, url, submitter) {\n    const frame = this.#findFrameElement(element, submitter);\n\n    frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n    this.#withCurrentNavigationElement(element, () => {\n      frame.src = url;\n    });\n  }\n\n  proposeVisitIfNavigatedWithAction(frame, action = null) {\n    this.action = action;\n\n    if (this.action) {\n      const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n      const { visitCachedSnapshot } = frame.delegate;\n\n      frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n        if (frame.src) {\n          const { statusCode, redirected } = fetchResponse;\n          const responseHTML = await fetchResponse.responseHTML;\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\n          if (this.action) options.action = this.action;\n\n          session.visit(frame.src, options);\n        }\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\n  async #handleUnvisitableFrameResponse(fetchResponse) {\n    console.warn(\n      `The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`\n    );\n\n    await this.#visitResponse(fetchResponse.response);\n  }\n\n  #willHandleFrameMissingFromResponse(fetchResponse) {\n    this.element.setAttribute(\"complete\", \"\");\n\n    const response = fetchResponse.response;\n    const visit = async (url, options) => {\n      if (url instanceof Response) {\n        this.#visitResponse(url);\n      } else {\n        session.visit(url, options);\n      }\n    };\n\n    const event = dispatch(\"turbo:frame-missing\", {\n      target: this.element,\n      detail: { response, visit },\n      cancelable: true\n    });\n\n    return !event.defaultPrevented\n  }\n\n  #handleFrameMissingFromResponse(fetchResponse) {\n    this.view.missing();\n    this.#throwFrameMissingError(fetchResponse);\n  }\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\n  async #visitResponse(response) {\n    const wrapped = new FetchResponse(response);\n    const responseHTML = await wrapped.responseHTML;\n    const { location, redirected, statusCode } = wrapped;\n\n    return session.visit(location, { response: { redirected, statusCode, responseHTML } })\n  }\n\n  #findFrameElement(element, submitter) {\n    const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n    const target = this.#getFrameElementById(id);\n\n    return target instanceof FrameElement ? target : this.element\n  }\n\n  async extractForeignFrameElement(container) {\n    let element;\n    const id = CSS.escape(this.id);\n\n    try {\n      element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n      if (element) {\n        return element\n      }\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    } catch (error) {\n      console.error(error);\n      return new FrameElement()\n    }\n\n    return null\n  }\n\n  #formActionIsVisitable(form, submitter) {\n    const action = getAction$1(form, submitter);\n\n    return locationIsVisitable(expandURL(action), this.rootLocation)\n  }\n\n  #shouldInterceptNavigation(element, submitter) {\n    const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n    if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter)) {\n      return false\n    }\n\n    if (!this.enabled || id == \"_top\") {\n      return false\n    }\n\n    if (id) {\n      const frameElement = this.#getFrameElementById(id);\n      if (frameElement) {\n        return !frameElement.disabled\n      } else if (id == \"_parent\") {\n        return false\n      }\n    }\n\n    if (!session.elementIsNavigatable(element)) {\n      return false\n    }\n\n    if (submitter && !session.elementIsNavigatable(submitter)) {\n      return false\n    }\n\n    return true\n  }\n\n  // Computed properties\n\n  get id() {\n    return this.element.id\n  }\n\n  get disabled() {\n    return this.element.disabled\n  }\n\n  get enabled() {\n    return !this.disabled\n  }\n\n  get sourceURL() {\n    if (this.element.src) {\n      return this.element.src\n    }\n  }\n\n  set sourceURL(sourceURL) {\n    this.#ignoringChangesToAttribute(\"src\", () => {\n      this.element.src = sourceURL ?? null;\n    });\n  }\n\n  get loadingStyle() {\n    return this.element.loading\n  }\n\n  get isLoading() {\n    return this.formSubmission !== undefined || this.#resolveVisitPromise() !== undefined\n  }\n\n  get complete() {\n    return this.element.hasAttribute(\"complete\")\n  }\n\n  set complete(value) {\n    if (value) {\n      this.element.setAttribute(\"complete\", \"\");\n    } else {\n      this.element.removeAttribute(\"complete\");\n    }\n  }\n\n  get isActive() {\n    return this.element.isActive && this.#connected\n  }\n\n  get rootLocation() {\n    const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n    const root = meta?.content ?? \"/\";\n    return expandURL(root)\n  }\n\n  #isIgnoringChangesTo(attributeName) {\n    return this.#ignoredAttributes.has(attributeName)\n  }\n\n  #ignoringChangesToAttribute(attributeName, callback) {\n    this.#ignoredAttributes.add(attributeName);\n    callback();\n    this.#ignoredAttributes.delete(attributeName);\n  }\n\n  #withCurrentNavigationElement(element, callback) {\n    this.currentNavigationElement = element;\n    callback();\n    delete this.currentNavigationElement;\n  }\n\n  #getFrameElementById(id) {\n    if (id != null) {\n      const element = id === \"_parent\" ?\n        this.element.parentElement.closest(\"turbo-frame\") :\n        document.getElementById(id);\n      if (element instanceof FrameElement) {\n        return element\n      }\n    }\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\n    if (element instanceof FrameElement) {\n      element.connectedCallback();\n      element.disconnectedCallback();\n      return element\n    }\n  }\n}\n\nconst StreamActions = {\n  after() {\n    this.removeDuplicateTargetSiblings();\n    this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e.nextSibling));\n  },\n\n  append() {\n    this.removeDuplicateTargetChildren();\n    this.targetElements.forEach((e) => e.append(this.templateContent));\n  },\n\n  before() {\n    this.removeDuplicateTargetSiblings();\n    this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e));\n  },\n\n  prepend() {\n    this.removeDuplicateTargetChildren();\n    this.targetElements.forEach((e) => e.prepend(this.templateContent));\n  },\n\n  remove() {\n    this.targetElements.forEach((e) => e.remove());\n  },\n\n  replace() {\n    const method = this.getAttribute(\"method\");\n\n    this.targetElements.forEach((targetElement) => {\n      if (method === \"morph\") {\n        morphElements(targetElement, this.templateContent);\n      } else {\n        targetElement.replaceWith(this.templateContent);\n      }\n    });\n  },\n\n  update() {\n    const method = this.getAttribute(\"method\");\n\n    this.targetElements.forEach((targetElement) => {\n      if (method === \"morph\") {\n        morphChildren(targetElement, this.templateContent);\n      } else {\n        targetElement.innerHTML = \"\";\n        targetElement.append(this.templateContent);\n      }\n    });\n  },\n\n  refresh() {\n    const method = this.getAttribute(\"method\");\n    const requestId = this.requestId;\n    const scroll = this.getAttribute(\"scroll\");\n\n    session.refresh(this.baseURI, { method, requestId, scroll });\n  }\n};\n\n// <turbo-stream action=replace target=id><template>...\n\n/**\n * Renders updates to the page from a stream of messages.\n *\n * Using the `action` attribute, this can be configured one of eight ways:\n *\n * - `after` - inserts the result after the target\n * - `append` - appends the result to the target\n * - `before` - inserts the result before the target\n * - `prepend` - prepends the result to the target\n * - `refresh` - initiates a page refresh\n * - `remove` - removes the target\n * - `replace` - replaces the outer HTML of the target\n * - `update` - replaces the inner HTML of the target\n *\n * @customElement turbo-stream\n * @example\n *   <turbo-stream action=\"append\" target=\"dom_id\">\n *     <template>\n *       Content to append to target designated with the dom_id.\n *     </template>\n *   </turbo-stream>\n */\nclass StreamElement extends HTMLElement {\n  static async renderElement(newElement) {\n    await newElement.performAction();\n  }\n\n  async connectedCallback() {\n    try {\n      await this.render();\n    } catch (error) {\n      console.error(error);\n    } finally {\n      this.disconnect();\n    }\n  }\n\n  async render() {\n    return (this.renderPromise ??= (async () => {\n      const event = this.beforeRenderEvent;\n\n      if (this.dispatchEvent(event)) {\n        await nextRepaint();\n        await event.detail.render(this);\n      }\n    })())\n  }\n\n  disconnect() {\n    try {\n      this.remove();\n      // eslint-disable-next-line no-empty\n    } catch {}\n  }\n\n  /**\n   * Removes duplicate children (by ID)\n   */\n  removeDuplicateTargetChildren() {\n    this.duplicateChildren.forEach((c) => c.remove());\n  }\n\n  /**\n   * Gets the list of duplicate children (i.e. those with the same ID)\n   */\n  get duplicateChildren() {\n    const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.getAttribute(\"id\"));\n    const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.getAttribute(\"id\")).map((c) => c.getAttribute(\"id\"));\n\n    return existingChildren.filter((c) => newChildrenIds.includes(c.getAttribute(\"id\")))\n  }\n\n  /**\n  * Removes duplicate siblings (by ID)\n  */\n  removeDuplicateTargetSiblings() {\n    this.duplicateSiblings.forEach((c) => c.remove());\n  }\n\n  /**\n  * Gets the list of duplicate siblings (i.e. those with the same ID)\n  */\n  get duplicateSiblings() {\n    const existingChildren = this.targetElements.flatMap((e) => [...e.parentElement.children]).filter((c) => !!c.id);\n    const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.id).map((c) => c.id);\n\n    return existingChildren.filter((c) => newChildrenIds.includes(c.id))\n  }\n\n  /**\n   * Gets the action function to be performed.\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\n  /**\n   * Gets the target elements which the template will be rendered to.\n   */\n  get targetElements() {\n    if (this.target) {\n      return this.targetElementsById\n    } else if (this.targets) {\n      return this.targetElementsByQuery\n    } else {\n      this.#raise(\"target or targets attribute is missing\");\n    }\n  }\n\n  /**\n   * Gets the contents of the main `<template>`.\n   */\n  get templateContent() {\n    return this.templateElement.content.cloneNode(true)\n  }\n\n  /**\n   * Gets the main `<template>` used for rendering\n   */\n  get templateElement() {\n    if (this.firstElementChild === null) {\n      const template = this.ownerDocument.createElement(\"template\");\n      this.appendChild(template);\n      return template\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\n  /**\n   * Gets the current action.\n   */\n  get action() {\n    return this.getAttribute(\"action\")\n  }\n\n  /**\n   * Gets the current target (an element ID) to which the result will\n   * be rendered.\n   */\n  get target() {\n    return this.getAttribute(\"target\")\n  }\n\n  /**\n   * Gets the current \"targets\" selector (a CSS selector)\n   */\n  get targets() {\n    return this.getAttribute(\"targets\")\n  }\n\n  /**\n   * Reads the request-id attribute\n   */\n  get requestId() {\n    return this.getAttribute(\"request-id\")\n  }\n\n  #raise(message) {\n    throw new Error(`${this.description}: ${message}`)\n  }\n\n  get description() {\n    return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? \"<turbo-stream>\"\n  }\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\n  get targetElementsById() {\n    const element = this.ownerDocument?.getElementById(this.target);\n\n    if (element !== null) {\n      return [element]\n    } else {\n      return []\n    }\n  }\n\n  get targetElementsByQuery() {\n    const elements = this.ownerDocument?.querySelectorAll(this.targets);\n\n    if (elements.length !== 0) {\n      return Array.prototype.slice.call(elements)\n    } else {\n      return []\n    }\n  }\n}\n\nclass StreamSourceElement extends HTMLElement {\n  streamSource = null\n\n  connectedCallback() {\n    this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n\n    connectStreamSource(this.streamSource);\n  }\n\n  disconnectedCallback() {\n    if (this.streamSource) {\n      this.streamSource.close();\n\n      disconnectStreamSource(this.streamSource);\n    }\n  }\n\n  get src() {\n    return this.getAttribute(\"src\") || \"\"\n  }\n}\n\nFrameElement.delegateConstructor = FrameController;\n\nif (customElements.get(\"turbo-frame\") === undefined) {\n  customElements.define(\"turbo-frame\", FrameElement);\n}\n\nif (customElements.get(\"turbo-stream\") === undefined) {\n  customElements.define(\"turbo-stream\", StreamElement);\n}\n\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n  customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n  const scriptElement = document.currentScript;\n  if (!scriptElement) return\n  if (scriptElement.hasAttribute(\"data-turbo-suppress-warning\")) return\n\n  let element = scriptElement.parentElement;\n  while (element) {\n    if (element == document.body) {\n      return console.warn(\n        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      `,\n        scriptElement.outerHTML\n      )\n    }\n\n    element = element.parentElement;\n  }\n})();\n\nwindow.Turbo = { ...Turbo, StreamActions };\nstart();\n\nexport { FetchEnctype, FetchMethod, FetchRequest, FetchResponse, FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, config, connectStreamSource, disconnectStreamSource, fetchWithTurboHeaders as fetch, fetchEnctypeFromString, fetchMethodFromString, isSafe, morphBodyElements, morphChildren, morphElements, morphTurboFrameElements, 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  static observedAttributes = [\"channel\", \"signed-stream-name\"]\n\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    this.subscriptionDisconnected()\n  }\n\n  attributeChangedCallback() {\n    if (this.subscription) {\n      this.disconnectedCallback()\n      this.connectedCallback()\n    }\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    // Rails 7 ActionView::Helpers::FormBuilder#button method has an override\n    // for formmethod if the button does not have name or value attributes\n    // set, which is the default. This means that if you use <%= f.button\n    // formmethod: :delete %>, it will generate a <button name=\"_method\"\n    // value=\"delete\" formmethod=\"post\">. Therefore, if the submitter's name\n    // is already _method, it's value attribute already contains the desired\n    // method.\n    if (submitter.name === '_method') {\n      return submitter.value\n    } else 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\nwindow.Turbo = Turbo\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "export class FetchResponse {\n  constructor (response) {\n    this.response = response\n  }\n\n  get statusCode () {\n    return this.response.status\n  }\n\n  get redirected () {\n    return this.response.redirected\n  }\n\n  get ok () {\n    return this.response.ok\n  }\n\n  get unauthenticated () {\n    return this.statusCode === 401\n  }\n\n  get unprocessableEntity () {\n    return this.statusCode === 422\n  }\n\n  get authenticationURL () {\n    return this.response.headers.get('WWW-Authenticate')\n  }\n\n  get contentType () {\n    const contentType = this.response.headers.get('Content-Type') || ''\n\n    return contentType.replace(/;.*$/, '')\n  }\n\n  get headers () {\n    return this.response.headers\n  }\n\n  get html () {\n    if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n      return this.text\n    }\n\n    return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n  }\n\n  get json () {\n    if (this.contentType.match(/^application\\/.*json$/)) {\n      return this.responseJson || (this.responseJson = this.response.json())\n    }\n\n    return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n  }\n\n  get text () {\n    return this.responseText || (this.responseText = this.response.text())\n  }\n\n  get isTurboStream () {\n    return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n  }\n\n  get isScript () {\n    return this.contentType.match(/\\b(?:java|ecma)script\\b/)\n  }\n\n  async renderTurboStream () {\n    if (this.isTurboStream) {\n      if (window.Turbo) {\n        await window.Turbo.renderStreamMessage(await this.text)\n      } else {\n        console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n      }\n    } else {\n      return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n    }\n  }\n\n  async activeScript () {\n    if (this.isScript) {\n      const script = document.createElement('script')\n      const metaTag = document.querySelector('meta[name=csp-nonce]')\n      if (metaTag) {\n        const nonce = metaTag.nonce === '' ? metaTag.content : metaTag.nonce\n        if (nonce) { script.setAttribute('nonce', nonce) }\n      }\n      script.innerHTML = await this.text\n      document.body.appendChild(script)\n    } else {\n      return Promise.reject(new Error(`Expected a Script response but got \"${this.contentType}\" instead`))\n    }\n  }\n}\n", "export class RequestInterceptor {\n  static register (interceptor) {\n    this.interceptor = interceptor\n  }\n\n  static get () {\n    return this.interceptor\n  }\n\n  static reset () {\n    this.interceptor = undefined\n  }\n}\n", "export function getCookie (name) {\n  const cookies = document.cookie ? document.cookie.split('; ') : []\n  const prefix = `${encodeURIComponent(name)}=`\n  const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n  if (cookie) {\n    const value = cookie.split('=').slice(1).join('=')\n\n    if (value) {\n      return decodeURIComponent(value)\n    }\n  }\n}\n\nexport function compact (object) {\n  const result = {}\n\n  for (const key in object) {\n    const value = object[key]\n    if (value !== undefined) {\n      result[key] = value\n    }\n  }\n\n  return result\n}\n\nexport function metaContent (name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n  return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n  return [...formData].reduce((entries, [name, value]) => {\n    return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n  }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n  for (const [name, value] of entries) {\n    if (value instanceof window.File) continue\n\n    if (searchParams.has(name) && !name.includes('[]')) {\n      searchParams.delete(name)\n      searchParams.set(name, value)\n    } else {\n      searchParams.append(name, value)\n    }\n  }\n}\n", "import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n  constructor (method, url, options = {}) {\n    this.method = method\n    this.options = options\n    this.originalUrl = url.toString()\n  }\n\n  async perform () {\n    try {\n      const requestInterceptor = RequestInterceptor.get()\n      if (requestInterceptor) {\n        await requestInterceptor(this)\n      }\n    } catch (error) {\n      console.error(error)\n    }\n\n    const fetch = window.Turbo ? window.Turbo.fetch : window.fetch\n    const response = new FetchResponse(await fetch(this.url, this.fetchOptions))\n\n    if (response.unauthenticated && response.authenticationURL) {\n      return Promise.reject(window.location.href = response.authenticationURL)\n    }\n\n    if (response.isScript) {\n      await response.activeScript()\n    }\n\n    const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity\n\n    if (responseStatusIsTurboStreamable && response.isTurboStream) {\n      await response.renderTurboStream()\n    }\n\n    return response\n  }\n\n  addHeader (key, value) {\n    const headers = this.additionalHeaders\n    headers[key] = value\n    this.options.headers = headers\n  }\n\n  sameHostname () {\n    if (!this.originalUrl.startsWith('http:') && !this.originalUrl.startsWith('https:')) {\n      return true\n    }\n\n    try {\n      return new URL(this.originalUrl).hostname === window.location.hostname\n    } catch (_) {\n      return true\n    }\n  }\n\n  get fetchOptions () {\n    return {\n      method: this.method.toUpperCase(),\n      headers: this.headers,\n      body: this.formattedBody,\n      signal: this.signal,\n      credentials: this.credentials,\n      redirect: this.redirect,\n      keepalive: this.keepalive\n    }\n  }\n\n  get headers () {\n    const baseHeaders = {\n      'X-Requested-With': 'XMLHttpRequest',\n      'Content-Type': this.contentType,\n      Accept: this.accept\n    }\n\n    if (this.sameHostname()) {\n      baseHeaders['X-CSRF-Token'] = this.csrfToken\n    }\n\n    return compact(\n      Object.assign(baseHeaders, this.additionalHeaders)\n    )\n  }\n\n  get csrfToken () {\n    return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n  }\n\n  get contentType () {\n    if (this.options.contentType) {\n      return this.options.contentType\n    } else if (this.body == null || this.body instanceof window.FormData) {\n      return undefined\n    } else if (this.body instanceof window.File) {\n      return this.body.type\n    }\n\n    return 'application/json'\n  }\n\n  get accept () {\n    switch (this.responseKind) {\n      case 'html':\n        return 'text/html, application/xhtml+xml'\n      case 'turbo-stream':\n        return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n      case 'json':\n        return 'application/json, application/vnd.api+json'\n      case 'script':\n        return 'text/javascript, application/javascript'\n      default:\n        return '*/*'\n    }\n  }\n\n  get body () {\n    return this.options.body\n  }\n\n  get query () {\n    const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n    const params = new URLSearchParams(originalQuery)\n\n    let requestQuery = this.options.query\n    if (requestQuery instanceof window.FormData) {\n      requestQuery = stringEntriesFromFormData(requestQuery)\n    } else if (requestQuery instanceof window.URLSearchParams) {\n      requestQuery = requestQuery.entries()\n    } else {\n      requestQuery = Object.entries(requestQuery || {})\n    }\n\n    mergeEntries(params, requestQuery)\n\n    const query = params.toString()\n    return (query.length > 0 ? `?${query}` : '')\n  }\n\n  get url () {\n    return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n  }\n\n  get responseKind () {\n    return this.options.responseKind || 'html'\n  }\n\n  get signal () {\n    return this.options.signal\n  }\n\n  get redirect () {\n    return this.options.redirect || 'follow'\n  }\n\n  get credentials () {\n    return this.options.credentials || 'same-origin'\n  }\n\n  get keepalive () {\n    return this.options.keepalive || false\n  }\n\n  get additionalHeaders () {\n    return this.options.headers || {}\n  }\n\n  get formattedBody () {\n    const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n    const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n    if (contentTypeIsJson && !bodyIsAString) {\n      return JSON.stringify(this.body)\n    }\n\n    return this.body\n  }\n}\n", "import Rails from '@rails/ujs'\n\nRails.start()\n\nimport { Turbo } from '@hotwired/turbo-rails'\nimport { FetchRequest } from '@rails/request.js'\nimport { qs } from 'qs'\nimport 'chartkick/chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport * as CollateralDesign from 'collateral_design'\nimport Moment from 'moment'\nimport Inputmask from 'inputmask'\nimport * as pdfJsLib from 'pdfjs-dist'\nimport * as agGrid from 'ag-grid-community'\nimport { ModuleRegistry, AllCommunityModule } from 'ag-grid-community'\n\nModuleRegistry.registerModules([AllCommunityModule])\n\n// Options\npdfJsLib.GlobalWorkerOptions.workerSrc = '/assets/pdf.worker.min.js'\n\n// External dependencies\nrequire('@rails/actiontext')\nrequire('@rails/activestorage').start()\nrequire('alpine-magic-helpers')\nrequire('alpine-turbo-drive-adapter')\nrequire('alpinejs')\nrequire('flatpickr')\nrequire('trix')\nrequire('prismjs')\n\n// Internal dependencies\nrequire('./src/acceptAssignmentApp')\nrequire('./src/advancedSearcheableApp')\nrequire('./src/anchorMenuApp')\nrequire('./src/anchorUrlApp')\nrequire('./src/appraisalCheckingApp')\nrequire('./src/assignVendorsApp')\nrequire('./src/autoAssignmentSettings')\nrequire('./src/batchActionsApp')\nrequire('./src/bidsApp')\nrequire('./src/changeTermsApp')\nrequire('./src/chiefAppraiserReviewApp')\nrequire('./src/commonResponsesApp')\nrequire('./src/coverageAreaRadiusApp')\nrequire('./src/coverageAreaStateApp')\nrequire('./src/clientAutoAssignmentApp')\nrequire('./src/customSelect')\nrequire('./src/customTrixTools')\nrequire('./src/draggableApp')\nrequire('./src/durationSelectApp')\nrequire('./src/eventConditionsApp')\nrequire('./src/fileFieldApp')\nrequire('./src/flashMessage')\nrequire('./src/googlePayApp')\nrequire('./src/paymentProvidersFactory')\nrequire('./src/tokenizedPayApp')\nrequire('./src/paymentProviders/baseProvider')\nrequire('./src/paymentProviders/googlePayProvider')\nrequire('./src/paymentProviders/applePayProvider')\nrequire('./src/paymentProviders/index')\nrequire('./src/integrationsStatusApp')\nrequire('./src/invoiceSettingsSimulationApp')\nrequire('./src/mapViewApp')\nrequire('./src/mergeFieldsApp')\nrequire('./src/modal')\nrequire('./src/nestedDynamicForm')\nrequire('./src/newInvoiceApp')\nrequire('./src/newNoteApp')\nrequire('./src/newPaymentApp')\nrequire('./src/notificationsApp')\nrequire('./src/orderAssignmentConsoleApp')\nrequire('./src/orderDetailsRailApp')\nrequire('./src/orderInteractionsApp')\nrequire('./src/orderTableColumnsApp')\nrequire('./src/orderWizardPropertyApp')\nrequire('./src/verticalScrollMirror')\nrequire('./src/pdfViewerApp')\nrequire('./src/placeInput')\nrequire('./src/phonesInputApp')\nrequire('./src/popoutApp')\nrequire('./src/preSubmissionFindingsCompletionApp')\nrequire('./src/radiusMapViewApp')\nrequire('./src/rangeDatepickerApp')\nrequire('./src/resizableTableSettings')\nrequire('./src/selectAutocompleteApp')\nrequire('./src/submissionApp')\nrequire('./src/switchButton')\nrequire('./src/tabApp')\nrequire('./src/tableFormApp')\nrequire('./src/tabs')\nrequire('./src/tagsInput')\nrequire('./src/paymentLinkEmailsApp')\nrequire('./src/userMenuApp')\nrequire('./src/utils')\nrequire('./src/vendorLicenseApp')\nrequire('./src/vendorProductFeeTableApp')\nrequire('./src/vendorAutoAssignConfigApp')\nrequire('./src/vendorsAutocomplete')\nrequire('./src/vendorsPanelFilter')\nrequire('./src/vendorStatisticsApp')\nrequire('./src/fileFormApp')\nrequire('./src/csvImportApp')\nrequire('./src/newFilesApp')\nrequire('./src/receivableStatisticsApp')\nrequire('./src/payablestatisticsApp')\n\nwindow.ChartDataLabels = ChartDataLabels\nwindow.ClipboardJS = require('clipboard')\nwindow.CollateralDesign = CollateralDesign\nwindow.agGrid = agGrid\nwindow.confirmDatePlugin = require('flatpickr/dist/plugins/confirmDate/confirmDate')\nwindow.DragSort = require('@yaireo/dragsort')\nwindow.FetchRequest = FetchRequest\nwindow.Inputmask = Inputmask\nwindow.Moment = Moment\nwindow.pdfJsLib = pdfJsLib\nwindow.qs = qs\nwindow.Rails = Rails\nwindow.ResizableTable = require('@validide/resizable-table-columns')\nwindow.Tagify = require('@yaireo/tagify')\nwindow.Turbo = Turbo\nwindow.agGridThemes = { quartz: agGrid.themeQuartz }\n\nwindow.localStorageObjectStore = {\n  get(id) {\n    try {\n      const data = localStorage.getItem(id)\n      if (data === null || data === undefined) return null\n\n      try {\n        return JSON.parse(data)\n      } catch (e) {\n        return data\n      }\n    } catch (error) {\n      console.error(`Error getting item from localStorage: ${id}`, error)\n      return null\n    }\n  },\n\n  set(id, data) {\n    try {\n      if (data === undefined) return false\n\n      if (data === null) {\n        localStorage.removeItem(id)\n        return true\n      }\n\n      const valueToStore = typeof data === 'object' ? JSON.stringify(data) : String(data)\n      localStorage.setItem(id, valueToStore)\n      return true\n    } catch (error) {\n      console.error(`Error setting item in localStorage: ${id}`, error)\n      return false\n    }\n  },\n\n  remove(id) {\n    try {\n      localStorage.removeItem(id)\n      return true\n    } catch (error) {\n      console.error(`Error removing item from localStorage: ${id}`, error)\n      return false\n    }\n  },\n\n  resetAllTableConfigs() {\n    try {\n      const tableKeys = []\n      for (let i = 0; i < localStorage.length; i++) {\n        const key = localStorage.key(i)\n        if (key && key.includes('/') && /[a-f0-9]{32}/.test(key)) {\n          tableKeys.push(key)\n        }\n      }\n\n      tableKeys.forEach((key) => {\n        localStorage.removeItem(key)\n      })\n      return tableKeys.length\n    } catch (error) {\n      console.error('Error resetting table configurations:', error)\n      return 0\n    }\n  },\n}\n\nwindow.resetAllTableConfigs = function () {\n  return window.localStorageObjectStore.resetAllTableConfigs()\n}\n", "/*!\n * Chartkick.js v5.0.1\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * MIT License\n */\n\nfunction isArray(variable) {\n  return Object.prototype.toString.call(variable) === \"[object Array]\";\n}\n\nfunction isFunction(variable) {\n  return variable instanceof Function;\n}\n\nfunction 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\nfunction extend(target, source) {\n  for (var 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\nfunction merge(obj1, obj2) {\n  var target = {};\n  extend(target, obj1);\n  extend(target, obj2);\n  return target;\n}\n\nvar DATE_PATTERN = /^(\\d\\d\\d\\d)(?:-)?(\\d\\d)(?:-)?(\\d\\d)$/i;\n\nfunction negativeValues(series) {\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n    for (var j = 0; j < data.length; j++) {\n      if (data[j][1] < 0) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\nfunction toStr(obj) {\n  return \"\" + obj;\n}\n\nfunction toFloat(obj) {\n  return parseFloat(obj);\n}\n\nfunction toDate(obj) {\n  if (obj instanceof Date) {\n    return obj;\n  } else if (typeof obj === \"number\") {\n    return new Date(obj * 1000); // ms\n  } else {\n    var s = toStr(obj);\n    var matches = s.match(DATE_PATTERN);\n    if (matches) {\n      var year = parseInt(matches[1], 10);\n      var month = parseInt(matches[2], 10) - 1;\n      var day = parseInt(matches[3], 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 = s.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n      // Date.parse returns milliseconds if valid and NaN if invalid\n      return new Date(Date.parse(str) || s);\n    }\n  }\n}\n\nfunction toArr(obj) {\n  if (isArray(obj)) {\n    return obj;\n  } else {\n    var arr = [];\n    for (var i in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, i)) {\n        arr.push([i, obj[i]]);\n      }\n    }\n    return arr;\n  }\n}\n\nfunction 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\nfunction sortByTime(a, b) {\n  return a[0].getTime() - b[0].getTime();\n}\n\nfunction sortByNumberSeries(a, b) {\n  return a[0] - b[0];\n}\n\n// needed since sort() without arguments does string comparison\nfunction sortByNumber(a, b) {\n  return a - b;\n}\n\nfunction every(values, fn) {\n  for (var i = 0; i < values.length; i++) {\n    if (!fn(values[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction isDay(timeUnit) {\n  return timeUnit === \"day\" || timeUnit === \"week\" || timeUnit === \"month\" || timeUnit === \"year\";\n}\n\nfunction calculateTimeUnit(values, maxDay) {\n  if ( maxDay === void 0 ) maxDay = false;\n\n  if (values.length === 0) {\n    return null;\n  }\n\n  var minute = every(values, function (d) { return d.getMilliseconds() === 0 && d.getSeconds() === 0; });\n  if (!minute) {\n    return null;\n  }\n\n  var hour = every(values, function (d) { return d.getMinutes() === 0; });\n  if (!hour) {\n    return \"minute\";\n  }\n\n  var day = every(values, function (d) { return d.getHours() === 0; });\n  if (!day) {\n    return \"hour\";\n  }\n\n  if (maxDay) {\n    return \"day\";\n  }\n\n  var month = every(values, function (d) { return d.getDate() === 1; });\n  if (!month) {\n    var dayOfWeek = values[0].getDay();\n    var week = every(values, function (d) { return d.getDay() === dayOfWeek; });\n    return (week ? \"week\" : \"day\");\n  }\n\n  var year = every(values, function (d) { return d.getMonth() === 0; });\n  if (!year) {\n    return \"month\";\n  }\n\n  return \"year\";\n}\n\nfunction isDate(obj) {\n  return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n}\n\nfunction isNumber(obj) {\n  return typeof obj === \"number\";\n}\n\nvar byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\nfunction 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 positive = value >= 0;\n    if (!positive) {\n      value *= -1;\n    }\n\n    var baseValue = axis ? options.byteScale : value;\n\n    var suffixIdx;\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    // flip value back\n    if (!positive) {\n      value *= -1;\n    }\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\nfunction 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\nvar 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\nvar 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/\nvar 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\nfunction hideLegend$2(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\nfunction setTitle$2(options, title) {\n  options.plugins.title.display = true;\n  options.plugins.title.text = title;\n}\n\nfunction setMin$2(options, min) {\n  if (min !== null) {\n    options.scales.y.min = toFloat(min);\n  }\n}\n\nfunction setMax$2(options, max) {\n  options.scales.y.max = toFloat(max);\n}\n\nfunction setBarMin$1(options, min) {\n  if (min !== null) {\n    options.scales.x.min = toFloat(min);\n  }\n}\n\nfunction setBarMax$1(options, max) {\n  options.scales.x.max = toFloat(max);\n}\n\nfunction setStacked$2(options, stacked) {\n  options.scales.x.stacked = !!stacked;\n  options.scales.y.stacked = !!stacked;\n}\n\nfunction setXtitle$2(options, title) {\n  options.scales.x.title.display = true;\n  options.scales.x.title.text = title;\n}\n\nfunction setYtitle$2(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\nfunction addOpacity(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\nfunction notnull(x) {\n  return x !== null && x !== undefined;\n}\n\nfunction setLabelSize(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\nfunction calculateScale(series) {\n  var scale = 1;\n  var max = maxAbsY(series);\n  while (max >= 1024) {\n    scale *= 1024;\n    max /= 1024;\n  }\n  return scale;\n}\n\nfunction setFormatOptions$1(chart, options, chartType) {\n  // options to apply to x and r values for scatter and bubble\n  var numericOptions = {\n    thousands: chart.options.thousands,\n    decimal: chart.options.decimal\n  };\n\n  // options to apply to y value\n  var formatOptions = merge({\n    prefix: chart.options.prefix,\n    suffix: chart.options.suffix,\n    precision: chart.options.precision,\n    round: chart.options.round,\n    zeros: chart.options.zeros\n  }, numericOptions);\n\n  if (chart.options.bytes) {\n    var series = chart.data;\n    if (chartType === \"pie\") {\n      series = [{data: series}];\n    }\n\n    // set step size\n    formatOptions.byteScale = calculateScale(series);\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    if ((chartType === \"scatter\" || chartType === \"bubble\") && !options.scales.x.ticks.callback) {\n      options.scales.x.ticks.callback = function (value) {\n        return formatValue(\"\", value, numericOptions, 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\n        var dataPoint = context.parsed;\n        return label + '(' + formatValue('', dataPoint.x, numericOptions) + ', ' + formatValue('', dataPoint.y, formatOptions) + ')';\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 + '(' + formatValue('', dataPoint.x, numericOptions) + ', ' + formatValue('', dataPoint.y, formatOptions) + ', ' + formatValue('', dataPoint.v, numericOptions) + ')';\n      };\n    } else if (chartType === \"pie\") {\n      // need to use separate label for pie charts\n      options.plugins.tooltip.callbacks.label = function (context) {\n        return formatValue('', 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  // avoid formatting x-axis labels\n  // by default, Chart.js applies locale\n  if ((chartType === \"line\" || chartType === \"area\") && chart.xtype === \"number\") {\n    if (!options.scales.x.ticks.callback) {\n      options.scales.x.ticks.callback = function (value) {\n        return toStr(value);\n      };\n    }\n\n    if (!options.plugins.tooltip.callbacks.title) {\n      options.plugins.tooltip.callbacks.title = function (context) {\n        return toStr(context[0].parsed.x);\n      };\n    }\n  }\n}\n\nfunction maxAbsY(series) {\n  var max = 0;\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n    for (var j = 0; j < data.length; j++) {\n      var v = Math.abs(data[j][1]);\n      if (v > max) {\n        max = v;\n      }\n    }\n  }\n  return max;\n}\n\nfunction maxR(series) {\n  // start at zero since radius must be positive\n  var max = 0;\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n    for (var j = 0; j < data.length; j++) {\n      var v = data[j][2];\n      if (v > max) {\n        max = v;\n      }\n    }\n  }\n  return max;\n}\n\nvar jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\nfunction prepareDefaultData(chart) {\n  var series = chart.data;\n  var rows = {};\n  var keys = [];\n  var labels = [];\n  var values = [];\n\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n\n    for (var j = 0; j < data.length; j++) {\n      var d = data[j];\n      var key = chart.xtype === \"datetime\" ? d[0].getTime() : d[0];\n      if (!rows[key]) {\n        rows[key] = new Array(series.length);\n        keys.push(key);\n      }\n      rows[key][i] = d[1];\n    }\n  }\n\n  if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n    keys.sort(sortByNumber);\n  }\n\n  for (var i$1 = 0; i$1 < series.length; i$1++) {\n    values.push([]);\n  }\n\n  for (var i$2 = 0; i$2 < keys.length; i$2++) {\n    var key$1 = keys[i$2];\n\n    var label = chart.xtype === \"datetime\" ? new Date(key$1) : key$1;\n    labels.push(label);\n\n    var row = rows[key$1];\n    for (var j$1 = 0; j$1 < series.length; j$1++) {\n      var v = row[j$1];\n      // Chart.js doesn't like undefined\n      values[j$1].push(v === undefined ? null : v);\n    }\n  }\n\n  return {\n    labels: labels,\n    values: values\n  };\n}\n\nfunction prepareBubbleData(chart) {\n  var series = chart.data;\n  var values = [];\n  var max = maxR(series);\n\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n    var points = [];\n    for (var j = 0; j < data.length; j++) {\n      var v = data[j];\n      points.push({\n        x: v[0],\n        y: v[1],\n        r: v[2] * 20 / max,\n        // custom attribute, for tooltip\n        v: v[2]\n      });\n    }\n    values.push(points);\n  }\n\n  return {\n    labels: [],\n    values: values\n  };\n}\n\n// scatter or numeric line/area\nfunction prepareNumberData(chart) {\n  var series = chart.data;\n  var values = [];\n\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n\n    data.sort(sortByNumberSeries);\n\n    var points = [];\n    for (var j = 0; j < data.length; j++) {\n      var v = data[j];\n      points.push({\n        x: v[0],\n        y: v[1]\n      });\n    }\n    values.push(points);\n  }\n\n  return {\n    labels: [],\n    values: values\n  };\n}\n\nfunction prepareData(chart, chartType) {\n  if (chartType === \"bubble\") {\n    return prepareBubbleData(chart);\n  } else if (chart.xtype === \"number\" && chartType !== \"bar\" && chartType !== \"column\") {\n    return prepareNumberData(chart);\n  } else {\n    return prepareDefaultData(chart);\n  }\n}\n\nfunction createDataTable(chart, options, chartType) {\n  var ref = prepareData(chart, chartType);\n  var labels = ref.labels;\n  var values = ref.values;\n\n  var series = chart.data;\n  var datasets = [];\n  var colors = chart.options.colors || defaultColors;\n  for (var i = 0; i < series.length; i++) {\n    var s = series[i];\n\n    // use colors for each bar for single series format\n    var color = (void 0);\n    var backgroundColor = (void 0);\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 = 0; j < colors.length; j++) {\n        backgroundColor[j] = addOpacity(color[j], 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: values[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  if (chart.xtype === \"datetime\") {\n    var timeUnit = calculateTimeUnit(labels);\n\n    // for empty datetime chart\n    if (labels.length === 0) {\n      if (notnull(xmin)) {\n        labels.push(toDate(xmin));\n      }\n      if (notnull(xmax)) {\n        labels.push(toDate(xmax));\n      }\n    }\n\n    if (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 (var i$1 = 1; i$1 < labels.length; i$1++) {\n        var value = labels[i$1].getTime();\n        if (value < minTime) {\n          minTime = value;\n        }\n        if (value > maxTime) {\n          maxTime = value;\n        }\n      }\n\n      var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n      if (!options.scales.x.time.unit) {\n        var step;\n        if (timeUnit === \"year\" || timeDiff > 365 * 10) {\n          options.scales.x.time.unit = \"year\";\n          step = 365;\n        } else if (timeUnit === \"month\" || timeDiff > 30 * 10) {\n          options.scales.x.time.unit = \"month\";\n          step = 30;\n        } else if (timeUnit === \"week\" || timeUnit === \"day\" || timeDiff > 10) {\n          options.scales.x.time.unit = \"day\";\n          step = 1;\n        } else if (timeUnit === \"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 (timeUnit === \"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 (timeUnit === \"week\" && step === 1) {\n              unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n            }\n            options.scales.x.ticks.stepSize = unitStepSize;\n          }\n        }\n      }\n\n      if (!options.scales.x.time.tooltipFormat) {\n        if (timeUnit === \"year\") {\n          options.scales.x.time.tooltipFormat = \"yyyy\";\n        } else if (timeUnit === \"month\") {\n          options.scales.x.time.tooltipFormat = \"MMM yyyy\";\n        } else if (timeUnit === \"week\" || timeUnit === \"day\") {\n          options.scales.x.time.tooltipFormat = \"PP\";\n        } else if (timeUnit === \"hour\") {\n          options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n        } else if (timeUnit === \"minute\") {\n          options.scales.x.time.tooltipFormat = \"h:mm a\";\n        }\n      }\n    }\n  }\n\n  return {\n    labels: labels,\n    datasets: datasets\n  };\n}\n\nvar defaultExport$2 = function defaultExport(library) {\n  this.name = \"chartjs\";\n  this.library = library;\n};\n\ndefaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n  if (!chartType) {\n    chartType = \"line\";\n  }\n\n  var chartOptions = {};\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);\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\ndefaultExport$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\ndefaultExport$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  if (!(\"mode\" in options.interaction)) {\n    options.interaction.mode = \"index\";\n  }\n  this.drawChart(chart, \"bar\", data, options);\n};\n\ndefaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n  this.renderLineChart(chart, \"area\");\n};\n\ndefaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n  this.renderColumnChart(chart, \"bar\");\n};\n\ndefaultExport$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\ndefaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n  this.renderScatterChart(chart, \"bubble\");\n};\n\ndefaultExport$2.prototype.destroy = function destroy (chart) {\n  if (chart.chart) {\n    chart.chart.destroy();\n  }\n};\n\ndefaultExport$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\nvar 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\nfunction hideLegend$1(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\nfunction setTitle$1(options, title) {\n  options.title.text = title;\n}\n\nfunction setMin$1(options, min) {\n  options.yAxis.min = min;\n}\n\nfunction setMax$1(options, max) {\n  options.yAxis.max = max;\n}\n\nfunction setStacked$1(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\nfunction setXtitle$1(options, title) {\n  options.xAxis.title.text = title;\n}\n\nfunction setYtitle$1(options, title) {\n  options.yAxis.title.text = title;\n}\n\nvar jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\nfunction setFormatOptions(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\nvar defaultExport$1 = function defaultExport(library) {\n  this.name = \"highcharts\";\n  this.library = library;\n};\n\ndefaultExport$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);\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 (var i = 0; i < series.length; i++) {\n    series[i].name = series[i].name || \"Value\";\n    var data = series[i].data;\n    if (chart.xtype === \"datetime\") {\n      for (var j = 0; j < data.length; j++) {\n        data[j][0] = data[j][0].getTime();\n      }\n    } else if (chart.xtype === \"number\") {\n      data.sort(sortByNumberSeries);\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\ndefaultExport$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\ndefaultExport$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\ndefaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n  chartType = chartType || \"column\";\n  var series = chart.data;\n  var options = jsOptions$1(chart, chart.options);\n  var rows = [];\n  var categories = [];\n  options.chart.type = chartType;\n  setFormatOptions(chart, options, chartType);\n\n  for (var i = 0; i < series.length; i++) {\n    var s = series[i];\n\n    for (var j = 0; j < s.data.length; j++) {\n      var 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 = [];\n  for (var i$1 = 0; i$1 < series.length; i$1++) {\n    var d$1 = [];\n    for (var j$1 = 0; j$1 < categories.length; j$1++) {\n      d$1.push(rows[categories[j$1]][i$1] || 0);\n    }\n\n    var d2 = {\n      name: series[i$1].name || \"Value\",\n      data: d$1\n    };\n    if (series[i$1].stack) {\n      d2.stack = series[i$1].stack;\n    }\n\n    newSeries.push(d2);\n  }\n\n  this.drawChart(chart, newSeries, options);\n};\n\ndefaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n  this.renderColumnChart(chart, \"bar\");\n};\n\ndefaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n  this.renderLineChart(chart, \"areaspline\");\n};\n\ndefaultExport$1.prototype.destroy = function destroy (chart) {\n  if (chart.chart) {\n    chart.chart.destroy();\n  }\n};\n\ndefaultExport$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\nvar loaded = {};\nvar callbacks = [];\n\n// Set chart options\nvar 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\nfunction hideLegend(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\nfunction setTitle(options, title) {\n  options.title = title;\n  options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n}\n\nfunction setMin(options, min) {\n  options.vAxis.viewWindow.min = min;\n}\n\nfunction setMax(options, max) {\n  options.vAxis.viewWindow.max = max;\n}\n\nfunction setBarMin(options, min) {\n  options.hAxis.viewWindow.min = min;\n}\n\nfunction setBarMax(options, max) {\n  options.hAxis.viewWindow.max = max;\n}\n\nfunction setStacked(options, stacked) {\n  options.isStacked = stacked || false;\n}\n\nfunction setXtitle(options, title) {\n  options.hAxis.title = title;\n  options.hAxis.titleTextStyle.italic = false;\n}\n\nfunction setYtitle(options, title) {\n  options.vAxis.title = title;\n  options.vAxis.titleTextStyle.italic = false;\n}\n\nvar jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\nfunction resize(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\nvar defaultExport = function defaultExport(library) {\n  this.name = \"google\";\n  this.library = library;\n};\n\ndefaultExport.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\ndefaultExport.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\ndefaultExport.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\ndefaultExport.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\ndefaultExport.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\ndefaultExport.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\ndefaultExport.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;\n    var rows2 = [];\n    for (var i = 0; i < series.length; i++) {\n      series[i].name = series[i].name || \"Value\";\n      var d = series[i].data;\n      for (var 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    var data = new this$1$1.library.visualization.DataTable();\n    data.addColumn(\"number\", \"\");\n    for (var i$1 = 0; i$1 < series.length; i$1++) {\n      data.addColumn(\"number\", series[i$1].name);\n    }\n    data.addRows(rows2);\n\n    this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n  });\n};\n\ndefaultExport.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\ndefaultExport.prototype.destroy = function destroy (chart) {\n  if (chart.chart) {\n    chart.chart.clearChart();\n  }\n};\n\ndefaultExport.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\ndefaultExport.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\ndefaultExport.prototype.runCallbacks = function runCallbacks () {\n  for (var i = 0; i < callbacks.length; i++) {\n    var cb = callbacks[i];\n    var 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\ndefaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n  var rows = [];\n  var sortedLabels = [];\n  for (var i = 0; i < series.length; i++) {\n    var s = series[i];\n    series[i].name = series[i].name || \"Value\";\n\n    for (var j = 0; j < s.data.length; j++) {\n      var d = s.data[j];\n      var 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] = d[1];\n    }\n  }\n\n  var rows2 = [];\n  var values = [];\n  for (var j$1 = 0; j$1 < sortedLabels.length; j$1++) {\n    var i$1 = sortedLabels[j$1];\n    var value = (void 0);\n    if (columnType === \"datetime\") {\n      value = new Date(i$1);\n      values.push(value);\n    } else {\n      value = i$1;\n    }\n    rows2.push([value].concat(rows[i$1]));\n  }\n\n  var day = true;\n  if (columnType === \"datetime\") {\n    rows2.sort(sortByTime);\n\n    var timeUnit = calculateTimeUnit(values, true);\n    day = isDay(timeUnit);\n  } else if (columnType === \"number\") {\n    rows2.sort(sortByNumberSeries);\n\n    for (var i$2 = 0; i$2 < rows2.length; i$2++) {\n      rows2[i$2][0] = toStr(rows2[i$2][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 (var i$3 = 0; i$3 < series.length; i$3++) {\n    data.addColumn(\"number\", series[i$3].name);\n  }\n  data.addRows(rows2);\n\n  return data;\n};\n\nvar adapters = [];\n\nfunction 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\nfunction addAdapter(library) {\n  var adapterType = getAdapterType(library);\n\n  for (var i = 0; i < adapters.length; i++) {\n    if (adapters[i].library === library) {\n      return;\n    }\n  }\n\n  adapters.push(new adapterType(library));\n}\n\nfunction 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// TODO remove chartType if cross-browser way\n// to get the name of the chart class\nfunction callAdapter(chartType, chart) {\n  var fnName = \"render\" + chartType;\n  var adapterName = chart.options.adapter;\n\n  loadAdapters();\n\n  for (var i = 0; i < adapters.length; i++) {\n    var 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\nvar Chartkick = {\n  charts: {},\n  configure: function (options) {\n    for (var key in options) {\n      if (Object.prototype.hasOwnProperty.call(options, key)) {\n        Chartkick.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 (Object.prototype.hasOwnProperty.call(Chartkick.charts, chartId)) {\n        callback(Chartkick.charts[chartId]);\n      }\n    }\n  },\n  destroyAll: function () {\n    for (var chartId in Chartkick.charts) {\n      if (Object.prototype.hasOwnProperty.call(Chartkick.charts, chartId)) {\n        Chartkick.charts[chartId].destroy();\n        delete Chartkick.charts[chartId];\n      }\n    }\n  },\n  config: {},\n  options: {},\n  adapters: adapters,\n  addAdapter: addAdapter,\n  use: function (adapter) {\n    addAdapter(adapter);\n    return Chartkick;\n  }\n};\n\nfunction formatSeriesBubble(data) {\n  var r = [];\n  for (var i = 0; i < data.length; i++) {\n    r.push([toFloat(data[i][0]), toFloat(data[i][1]), toFloat(data[i][2])]);\n  }\n  return r;\n}\n\n// casts data to proper type\n// sorting is left to adapters\nfunction formatSeriesData(data, keyType) {\n  if (keyType === \"bubble\") {\n    return formatSeriesBubble(data);\n  }\n\n  var keyFunc;\n  if (keyType === \"number\") {\n    keyFunc = toFloat;\n  } else if (keyType === \"datetime\") {\n    keyFunc = toDate;\n  } else {\n    keyFunc = toStr;\n  }\n\n  var r = [];\n  for (var i = 0; i < data.length; i++) {\n    r.push([keyFunc(data[i][0]), toFloat(data[i][1])]);\n  }\n  return r;\n}\n\nfunction 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\nfunction detectXTypeWithFunction(series, func) {\n  for (var i = 0; i < series.length; i++) {\n    var data = toArr(series[i].data);\n    for (var 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\nfunction copySeries(series) {\n  var newSeries = [];\n  for (var i = 0; i < series.length; i++) {\n    var copy = {};\n    for (var j in series[i]) {\n      if (Object.prototype.hasOwnProperty.call(series[i], j)) {\n        copy[j] = series[i][j];\n      }\n    }\n    newSeries.push(copy);\n  }\n  return newSeries;\n}\n\nfunction processSeries(chart, keyType, noDatetime) {\n  var opts = chart.options;\n  var series = chart.rawData;\n\n  // see if one series or multiple\n  chart.singleSeriesFormat = !isArray(series) || !isPlainObject(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 (var i = 0; i < series.length; i++) {\n    series[i].data = toArr(series[i].data);\n  }\n\n  chart.xtype = keyType || (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n  // right format\n  for (var i$1 = 0; i$1 < series.length; i$1++) {\n    series[i$1].data = formatSeriesData(series[i$1].data, chart.xtype);\n  }\n\n  return series;\n}\n\nfunction processSimple(chart) {\n  var perfectData = toArr(chart.rawData);\n  for (var i = 0; i < perfectData.length; i++) {\n    perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n  }\n  return perfectData;\n}\n\nfunction 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\nfunction addDownloadButton(chart) {\n  var download = chart.options.download;\n  if (download === true) {\n    download = {};\n  } else if (typeof download === \"string\") {\n    download = {filename: download};\n  }\n\n  var link = document.createElement(\"a\");\n  link.download = download.filename || \"chart.png\";\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\n  var image = document.createElement(\"img\");\n  // icon from Font Awesome, modified to set fill color\n  var svg = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path fill=\\\"#CCCCCC\\\" d=\\\"M344 240h-56L287.1 152c0-13.25-10.75-24-24-24h-16C234.7 128 223.1 138.8 223.1 152L224 240h-56c-9.531 0-18.16 5.656-22 14.38C142.2 263.1 143.9 273.3 150.4 280.3l88.75 96C243.7 381.2 250.1 384 256.8 384c7.781-.3125 13.25-2.875 17.75-7.844l87.25-96c6.406-7.031 8.031-17.19 4.188-25.88S353.5 240 344 240zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\\\"/></svg>\";\n  image.src = \"data:image/svg+xml;utf8,\" + (encodeURIComponent(svg));\n  image.alt = \"Download\";\n  image.style.width = \"20px\";\n  image.style.height = \"20px\";\n  image.style.border = \"none\";\n  link.appendChild(image);\n\n  var element = chart.element;\n  element.style.position = \"relative\";\n\n  chart.__downloadAttached = true;\n\n  // mouseenter\n  chart.__enterEvent = element.addEventListener(\"mouseover\", function (e) {\n    var related = e.relatedTarget;\n    // check download option again to ensure it wasn't changed\n    if ((!related || (related !== this && !this.contains(related))) && chart.options.download) {\n      link.href = chart.toImage(download);\n      element.appendChild(link);\n    }\n  });\n\n  // mouseleave\n  chart.__leaveEvent = element.addEventListener(\"mouseout\", function (e) {\n    var related = e.relatedTarget;\n    if (!related || (related !== this && !this.contains(related))) {\n      if (link.parentNode) {\n        link.parentNode.removeChild(link);\n      }\n    }\n  });\n}\n\nvar pendingRequests = [];\nvar runningRequests = 0;\nvar maxRequests = 4;\n\nfunction pushRequest(url, success, error) {\n  pendingRequests.push([url, success, error]);\n  runNext();\n}\n\nfunction 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\nfunction requestComplete() {\n  runningRequests--;\n  runNext();\n}\n\nfunction getJSON(url, success, error) {\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));\n    } else {\n      error(xhr.statusText);\n    }\n  };\n  xhr.send();\n}\n\n// helpers\n\nfunction setText(element, text) {\n  element.textContent = text;\n}\n\n// TODO remove prefix for all messages\nfunction 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\nfunction errorCatcher(chart) {\n  try {\n    chart.__render();\n  } catch (err) {\n    chartError(chart.element, err.message);\n    throw err;\n  }\n}\n\nfunction 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\nfunction 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    // TODO add downloadSupported method to adapter\n    if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n      addDownloadButton(chart);\n    }\n  }\n}\n\nfunction getElement(element) {\n  if (typeof element === \"string\") {\n    var elementId = element;\n    element = document.getElementById(element);\n    if (!element) {\n      throw new Error(\"No element with id \" + elementId);\n    }\n  }\n  return element;\n}\n\n// define classes\n\nvar Chart = function Chart(element, dataSource, options) {\n  this.element = getElement(element);\n  this.options = merge(Chartkick.options, options || {});\n  this.dataSource = dataSource;\n\n  // TODO handle charts without an id for eachChart and destroyAll\n  if (this.element.id) {\n    Chartkick.charts[this.element.id] = this;\n  }\n\n  fetchDataSource(this, dataSource, true);\n\n  if (this.options.refresh) {\n    this.startRefresh();\n  }\n};\n\nChart.prototype.getElement = function getElement () {\n  return this.element;\n};\n\nChart.prototype.getDataSource = function getDataSource () {\n  return this.dataSource;\n};\n\nChart.prototype.getData = function getData () {\n  return this.data;\n};\n\nChart.prototype.getOptions = function getOptions () {\n  return this.options;\n};\n\nChart.prototype.getChartObject = function getChartObject () {\n  return this.chart;\n};\n\nChart.prototype.getAdapter = function getAdapter () {\n  return this.adapter;\n};\n\nChart.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\nChart.prototype.setOptions = function setOptions (options) {\n  this.__updateOptions(options);\n  this.redraw();\n};\n\nChart.prototype.redraw = function redraw () {\n  fetchDataSource(this, this.rawData);\n};\n\nChart.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\nChart.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\nChart.prototype.stopRefresh = function stopRefresh () {\n  if (this.intervalId) {\n    clearInterval(this.intervalId);\n    this.intervalId = null;\n  }\n};\n\nChart.prototype.toImage = function toImage (download) {\n  // TODO move logic to adapter\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\nChart.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    this.element.removeEventListener(\"mouseover\", this.__enterEvent);\n  }\n\n  if (this.__leaveEvent) {\n    this.element.removeEventListener(\"mouseout\", this.__leaveEvent);\n  }\n};\n\nChart.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\nChart.prototype.__render = function __render () {\n  this.data = this.__processData();\n  renderChart(this.__chartName(), this);\n};\n\nChart.prototype.__config = function __config () {\n  return Chartkick.config;\n};\n\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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\nvar 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 data = this.rawData;\n    for (var 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\nChartkick.LineChart = LineChart;\nChartkick.PieChart = PieChart;\nChartkick.ColumnChart = ColumnChart;\nChartkick.BarChart = BarChart;\nChartkick.AreaChart = AreaChart;\nChartkick.GeoChart = GeoChart;\nChartkick.ScatterChart = ScatterChart;\nChartkick.BubbleChart = BubbleChart;\nChartkick.Timeline = Timeline;\n\n// not ideal, but allows for simpler integration\nif (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 (Chartkick.config.autoDestroy !== false) {\n      Chartkick.destroyAll();\n    }\n  });\n\n  // clean up previous charts before Turbo loads new page\n  document.addEventListener(\"turbo:before-render\", function () {\n    if (Chartkick.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\nChartkick.default = Chartkick;\n\nexport { Chartkick as default };\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 type {Chart, ChartArea, ChartMeta, Scale, TRBL} from '../types/index.js';\n\nfunction getSizeForArea(scale: Scale, chartArea: ChartArea, field: keyof ChartArea) {\n  return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta: ChartMeta, chartArea: ChartArea): TRBL {\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\nexport function getDatasetClipArea(chart: Chart, meta: ChartMeta): TRBL | false {\n  const clip = meta._clip;\n  if (clip.disabled) {\n    return false;\n  }\n  const area = getDatasetArea(meta, chart.chartArea);\n\n  return {\n    left: clip.left === false ? 0 : area.left - (clip.left === true ? 0 : clip.left),\n    right: clip.right === false ? chart.width : area.right + (clip.right === true ? 0 : clip.right),\n    top: clip.top === false ? 0 : area.top - (clip.top === true ? 0 : clip.top),\n    bottom: clip.bottom === false ? chart.height : area.bottom + (clip.bottom === true ? 0 : clip.bottom)\n  };\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  _getAxisCount() {\n    return this._getAxis().length;\n  }\n\n  getFirstScaleIdForIndexAxis() {\n    const scales = this.chart.scales;\n    const indexScaleId = this.chart.options.indexAxis;\n    return Object.keys(scales).filter(key => scales[key].axis === indexScaleId).shift();\n  }\n\n  _getAxis() {\n    const axis = {};\n    const firstScaleAxisId = this.getFirstScaleIdForIndexAxis();\n    for (const dataset of this.chart.data.datasets) {\n      axis[valueOrDefault(\n        this.chart.options.indexAxis === 'x' ? dataset.xAxisID : dataset.yAxisID, firstScaleAxisId\n      )] = true;\n    }\n    return Object.keys(axis);\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    const axisCount = this._getAxisCount();\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 * axisCount)\n        : computeFitCategoryTraits(index, ruler, options, stackCount * axisCount);\n      const axisID = this.chart.options.indexAxis === 'x' ? this.getDataset().xAxisID : this.getDataset().yAxisID;\n      const axisNumber = this._getAxis().indexOf(valueOrDefault(axisID, this.getFirstScaleIdForIndexAxis()));\n      const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined) + axisNumber;\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\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 {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea, _isDomSupported, retinaScale, getDatasetClipArea} 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\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 args = {\n      meta,\n      index: meta.index,\n      cancelable: true\n    };\n    // @ts-expect-error\n    const clip = getDatasetClipArea(this, meta);\n\n    if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n      return;\n    }\n\n    if (clip) {\n      clipArea(ctx, clip);\n    }\n\n    meta.controller.draw();\n\n    if (clip) {\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, _angleDiff, _normalizeAngle, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\nfunction clipSelf(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n  const {startAngle, x, y, outerRadius, innerRadius, options} = element;\n  const {borderWidth, borderJoinStyle} = options;\n  const outerAngleClip = Math.min(borderWidth / outerRadius, _normalizeAngle(startAngle - endAngle));\n  ctx.beginPath();\n  ctx.arc(x, y, outerRadius - borderWidth / 2, startAngle + outerAngleClip / 2, endAngle - outerAngleClip / 2);\n\n  if (innerRadius > 0) {\n    const innerAngleClip = Math.min(borderWidth / innerRadius, _normalizeAngle(startAngle - endAngle));\n    ctx.arc(x, y, innerRadius + borderWidth / 2, endAngle - innerAngleClip / 2, startAngle + innerAngleClip / 2, true);\n  } else {\n    const clipWidth = Math.min(borderWidth / 2, outerRadius * _normalizeAngle(startAngle - endAngle));\n\n    if (borderJoinStyle === 'round') {\n      ctx.arc(x, y, clipWidth, endAngle - PI / 2, startAngle + PI / 2, true);\n    } else if (borderJoinStyle === 'bevel') {\n      const r = 2 * clipWidth * clipWidth;\n      const endX = -r * Math.cos(endAngle + PI / 2) + x;\n      const endY = -r * Math.sin(endAngle + PI / 2) + y;\n      const startX = r * Math.cos(startAngle + PI / 2) + x;\n      const startY = r * Math.sin(startAngle + PI / 2) + y;\n      ctx.lineTo(endX, endY);\n      ctx.lineTo(startX, startY);\n    }\n  }\n  ctx.closePath();\n\n  ctx.moveTo(0, 0);\n  ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);\n\n  ctx.clip('evenodd');\n}\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, borderRadius} = 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 (options.selfJoin && endAngle - startAngle >= PI && borderRadius === 0 && borderJoinStyle !== 'miter') {\n    clipSelf(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    selfJoin: false,\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 a segment -> need to add another point before this,\n      postponed.unshift(point);\n    } else {\n      points.push(point);\n      if (!last) {\n        // In the middle of a 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, getDatasetClipArea} 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 {chart, index, 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  const meta = chart.getDatasetMeta(index);\n  const clip = getDatasetClipArea(chart, meta);\n  if (target && line.points.length) {\n    clipArea(ctx, area);\n    doFill(ctx, {line, target, above, below, area, scale, axis, clip});\n    unclipArea(ctx);\n  }\n}\n\nfunction doFill(ctx, cfg) {\n  const {line, target, above, below, area, scale, clip} = cfg;\n  const property = line._loop ? 'angle' : cfg.axis;\n\n  ctx.save();\n\n  let fillColor = below;\n  if (below !== above) {\n    if (property === 'x') {\n      clipVertical(ctx, target, area.top);\n      fill(ctx, {line, target, color: above, scale, property, clip});\n      ctx.restore();\n      ctx.save();\n      clipVertical(ctx, target, area.bottom);\n    } else if (property === 'y') {\n      clipHorizontal(ctx, target, area.left);\n      fill(ctx, {line, target, color: below, scale, property, clip});\n      ctx.restore();\n      ctx.save();\n      clipHorizontal(ctx, target, area.right);\n      fillColor = above;\n    }\n  }\n  fill(ctx, {line, target, color: fillColor, scale, property, clip});\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 clipHorizontal(ctx, target, clipX) {\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(clipX, firstPoint.y);\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(clipX, lastPoint.y);\n    }\n  }\n\n  ctx.lineTo(clipX, target.first().y);\n  ctx.closePath();\n  ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n  const {line, target, property, color, scale, clip} = 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, clip, 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, clip, bounds) {\n  const chartArea = scale.chart.chartArea;\n  const {property, start, end} = bounds || {};\n\n  if (property === 'x' || property === 'y') {\n    let left, top, right, bottom;\n\n    if (property === 'x') {\n      left = start;\n      top = chartArea.top;\n      right = end;\n      bottom = chartArea.bottom;\n    } else {\n      left = chartArea.left;\n      top = start;\n      right = chartArea.right;\n      bottom = end;\n    }\n\n    ctx.beginPath();\n\n    if (clip) {\n      left = Math.max(left, clip.left);\n      right = Math.min(right, clip.right);\n      top = Math.max(top, clip.top);\n      bottom = Math.min(bottom, clip.bottom);\n    }\n\n    ctx.rect(left, top, right - left, 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", "function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };", "export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n  var number = Number(dirtyNumber);\n  if (isNaN(number)) {\n    return number;\n  }\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}", "export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}", "import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\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 default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n      // eslint-disable-next-line no-console\n      console.warn(new Error().stack);\n    }\n    return new Date(NaN);\n  }\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\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 default function addDays(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\n  if (!amount) {\n    // If 0 days, no-op to avoid changing times in the hour before end of DST\n    return date;\n  }\n  date.setDate(date.getDate() + amount);\n  return date;\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\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 */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var amount = toInteger(dirtyAmount);\n  if (isNaN(amount)) {\n    return new Date(NaN);\n  }\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  var 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  var endOfDesiredMonth = new Date(date.getTime());\n  endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n  var 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(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n    return date;\n  }\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\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 default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\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 * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\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 default function addHours(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}", "var defaultOptions = {};\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}", "import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\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 * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\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 default function startOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setDate(date.getDate() - diff);\n  date.setHours(0, 0, 0, 0);\n  return date;\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 default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\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 default function startOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\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 default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var startOfDayLeft = startOfDay(dirtyDateLeft);\n  var startOfDayRight = startOfDay(dirtyDateRight);\n  var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n  var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a day is not constant\n  // (e.g. it's different in the day of the daylight saving time clock shift)\n  return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\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 * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\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 default function addMinutes(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\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 default function addQuarters(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  var months = amount * 3;\n  return addMonths(dirtyDate, months);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\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 default function addSeconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, amount * 1000);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\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 default function addWeeks(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  var days = amount * 7;\n  return addDays(dirtyDate, days);\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\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 default function addYears(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMonths(dirtyDate, amount * 12);\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\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 default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var diff = dateLeft.getTime() - dateRight.getTime();\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1;\n    // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\n}", "/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;", "import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\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 default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}", "import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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]{@link 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 * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\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, convertable 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 default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\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 default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n  var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n  return yearDiff * 12 + monthDiff;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\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 default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  return dateLeft.getFullYear() - dateRight.getFullYear();\n}", "import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // 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(dateLeft, dateRight) {\n  var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n  if (diff < 0) {\n    return -1;\n  } else if (diff > 0) {\n    return 1;\n    // Return 0 if diff is 0; return NaN if diff is NaN\n  } else {\n    return diff;\n  }\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.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\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 * // 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 * // 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 default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareLocalAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n  dateLeft.setDate(dateLeft.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  var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n  var result = sign * (difference - isLastDayNotFull);\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\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 default function differenceInMilliseconds(dateLeft, dateRight) {\n  requiredArgs(2, arguments);\n  return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}", "var roundingMap = {\n  ceil: Math.ceil,\n  round: Math.round,\n  floor: Math.floor,\n  trunc: function trunc(value) {\n    return value < 0 ? Math.ceil(value) : Math.floor(value);\n  } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n  return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}", "import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\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 default function differenceInHours(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\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 default function differenceInMinutes(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\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 default function endOfDay(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\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 default function endOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var month = date.getMonth();\n  date.setFullYear(date.getFullYear(), month + 1, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\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 default function isLastDayOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}", "import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\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 default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n  var result;\n\n  // Check for the difference of less than month\n  if (difference < 1) {\n    result = 0;\n  } else {\n    if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n      // This will check if the date is end of Feb and assign a higher end of month date\n      // to compare it with Jan\n      dateLeft.setDate(30);\n    }\n    dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n    // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n    // If so, result must be decreased by 1 in absolute value\n    var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n    // Check for cases of one full calendar month\n    if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n      isLastMonthNotFull = false;\n    }\n    result = sign * (difference - Number(isLastMonthNotFull));\n  }\n\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}", "import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\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 default function differenceInQuarters(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMonths(dateLeft, dateRight) / 3;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\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 default function differenceInSeconds(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\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.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\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 * // 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 default function differenceInWeeks(dateLeft, dateRight, options) {\n  requiredArgs(2, arguments);\n  var diff = differenceInDays(dateLeft, dateRight) / 7;\n  return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}", "import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\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 default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyDateLeft);\n  var dateRight = toDate(dirtyDateRight);\n  var sign = compareAsc(dateLeft, dateRight);\n  var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n  // Set both dates to a valid leap year for accurate comparison when dealing\n  // with leap days\n  dateLeft.setFullYear(1584);\n  dateRight.setFullYear(1584);\n\n  // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n  // If so, result must be decreased by 1 in absolute value\n  var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n  var result = sign * (difference - Number(isLastYearNotFull));\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\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 default function startOfMinute(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setSeconds(0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\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 default function startOfQuarter(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var currentMonth = date.getMonth();\n  var month = currentMonth - currentMonth % 3;\n  date.setMonth(month, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\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 default function startOfMonth(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\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, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getFullYear();\n  date.setFullYear(year + 1, 0, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\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 default function startOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var cleanDate = toDate(dirtyDate);\n  var date = new Date(0);\n  date.setFullYear(cleanDate.getFullYear(), 0, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\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 default function endOfHour(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMinutes(59, 59, 999);\n  return date;\n}", "import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\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 default function endOfWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getDay();\n  var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n  date.setDate(date.getDate() + diff);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\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 default function endOfMinute(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setSeconds(59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\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 default function endOfQuarter(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var currentMonth = date.getMonth();\n  var month = currentMonth - currentMonth % 3 + 3;\n  date.setMonth(month, 0);\n  date.setHours(23, 59, 59, 999);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\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 default function endOfSecond(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMilliseconds(999);\n  return date;\n}", "import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\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}", "import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\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}", "import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = getUTCWeekYear(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, options);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n  // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}", "export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n  return sign + output;\n}", "import addLeadingZeros from \"../../addLeadingZeros/index.js\";\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 */\nvar formatters = {\n  // Year\n  y: function 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    var signedYear = date.getUTCFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\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  // Hour [1-12]\n  h: function h(date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;", "import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar 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 * |     | 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\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\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 u(date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 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, {\n          unit: 'quarter'\n        });\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  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 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, {\n          unit: 'quarter'\n        });\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  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\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, {\n          unit: 'month'\n        });\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, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\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, {\n          unit: 'month'\n        });\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, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\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  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var 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, {\n          unit: 'day'\n        });\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  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var 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, {\n          unit: 'day'\n        });\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  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var 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, {\n          unit: 'day'\n        });\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  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\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.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\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  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var 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    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.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\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  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var 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    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  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n    if (timezoneOffset === 0) {\n      return 'Z';\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':\n        // 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  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\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':\n        // 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  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\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  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\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  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\nexport default formatters;", "var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n  var dateTimeFormat;\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;", "var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  }\n}", "var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var 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  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n  return result;\n};\nexport default formatDistance;", "export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}", "import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar 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};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;", "var 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};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\nexport default formatRelative;", "export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    // @ts-ignore: 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}", "import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar 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.\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar 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: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar 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};\nvar 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};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var 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  var 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};\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;", "export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n    if (!matchResult) {\n      return null;\n    }\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}", "export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}", "import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar 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};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar 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};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar 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};\nvar 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};\nvar 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};\nvar 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};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;", "import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\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};\nexport default locale;", "import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;", "import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // 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\nvar formattingTokensRegExp = /[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`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\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]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link 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|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} 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 {RangeError} 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 {RangeError} 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 {RangeError} 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 {RangeError} 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 */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var defaultOptions = getDefaultOptions();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n  var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n  var originalDate = toDate(dirtyDate);\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n    var firstCharacter = substring[0];\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n    var formatter = formatters[firstCharacter];\n    if (formatter) {\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n    return substring;\n  }).join('');\n  return result;\n}\nfunction cleanEscapedString(input) {\n  var matched = input.match(escapedStringRegExp);\n  if (!matched) {\n    return input;\n  }\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}", "export default function assign(target, object) {\n  if (target == null) {\n    throw new TypeError('assign requires that input parameter not be null or undefined');\n  }\n  for (var property in object) {\n    if (Object.prototype.hasOwnProperty.call(object, property)) {\n      ;\n      target[property] = object[property];\n    }\n  }\n  return target;\n}", "function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };", "import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };", "import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n  var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (!t) {\n    if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n      t && (r = t);\n      var _n = 0,\n        F = function F() {};\n      return {\n        s: F,\n        n: function n() {\n          return _n >= r.length ? {\n            done: !0\n          } : {\n            done: !1,\n            value: r[_n++]\n          };\n        },\n        e: function e(r) {\n          throw r;\n        },\n        f: F\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  var o,\n    a = !0,\n    u = !1;\n  return {\n    s: function s() {\n      t = t.call(r);\n    },\n    n: function n() {\n      var r = t.next();\n      return a = r.done, r;\n    },\n    e: function e(r) {\n      u = !0, o = r;\n    },\n    f: function f() {\n      try {\n        a || null == t[\"return\"] || t[\"return\"]();\n      } finally {\n        if (u) throw o;\n      }\n    }\n  };\n}\nexport { _createForOfIteratorHelper as default };", "function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };", "function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };", "import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };", "function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };", "function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  })();\n}\nexport { _isNativeReflectConstruct as default };", "import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };", "import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n  var r = isNativeReflectConstruct();\n  return function () {\n    var e,\n      o = getPrototypeOf(t);\n    if (r) {\n      var s = getPrototypeOf(this).constructor;\n      e = Reflect.construct(o, arguments, s);\n    } else e = o.apply(this, arguments);\n    return possibleConstructorReturn(this, e);\n  };\n}\nexport { _createSuper as default };", "function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n  function Setter() {\n    _classCallCheck(this, Setter);\n    _defineProperty(this, \"priority\", void 0);\n    _defineProperty(this, \"subPriority\", 0);\n  }\n  _createClass(Setter, [{\n    key: \"validate\",\n    value: function validate(_utcDate, _options) {\n      return true;\n    }\n  }]);\n  return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n  _inherits(ValueSetter, _Setter);\n  var _super = _createSuper(ValueSetter);\n  function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n    var _this;\n    _classCallCheck(this, ValueSetter);\n    _this = _super.call(this);\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    return _this;\n  }\n  _createClass(ValueSetter, [{\n    key: \"validate\",\n    value: function validate(utcDate, options) {\n      return this.validateValue(utcDate, this.value, options);\n    }\n  }, {\n    key: \"set\",\n    value: function set(utcDate, flags, options) {\n      return this.setValue(utcDate, flags, this.value, options);\n    }\n  }]);\n  return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n  _inherits(DateToSystemTimezoneSetter, _Setter2);\n  var _super2 = _createSuper(DateToSystemTimezoneSetter);\n  function DateToSystemTimezoneSetter() {\n    var _this2;\n    _classCallCheck(this, DateToSystemTimezoneSetter);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this2 = _super2.call.apply(_super2, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n    _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n    return _this2;\n  }\n  _createClass(DateToSystemTimezoneSetter, [{\n    key: \"set\",\n    value: function set(date, flags) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      var convertedDate = new Date(0);\n      convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n      convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n      return convertedDate;\n    }\n  }]);\n  return DateToSystemTimezoneSetter;\n}(Setter);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n  function Parser() {\n    _classCallCheck(this, Parser);\n    _defineProperty(this, \"incompatibleTokens\", void 0);\n    _defineProperty(this, \"priority\", void 0);\n    _defineProperty(this, \"subPriority\", void 0);\n  }\n  _createClass(Parser, [{\n    key: \"run\",\n    value: function run(dateString, token, match, options) {\n      var result = this.parse(dateString, token, match, options);\n      if (!result) {\n        return null;\n      }\n      return {\n        setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n        rest: result.rest\n      };\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_utcDate, _value, _options) {\n      return true;\n    }\n  }]);\n  return Parser;\n}();", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n  _inherits(EraParser, _Parser);\n  var _super = _createSuper(EraParser);\n  function EraParser() {\n    var _this;\n    _classCallCheck(this, EraParser);\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), \"priority\", 140);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n    return _this;\n  }\n  _createClass(EraParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // AD, BC\n        case 'G':\n        case 'GG':\n        case 'GGG':\n          return match.era(dateString, {\n            width: 'abbreviated'\n          }) || match.era(dateString, {\n            width: 'narrow'\n          });\n        // A, B\n        case 'GGGGG':\n          return match.era(dateString, {\n            width: 'narrow'\n          });\n        // Anno Domini, Before Christ\n        case 'GGGG':\n        default:\n          return match.era(dateString, {\n            width: 'wide'\n          }) || match.era(dateString, {\n            width: 'abbreviated'\n          }) || match.era(dateString, {\n            width: 'narrow'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      flags.era = value;\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return EraParser;\n}(Parser);", "export var numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/,\n  // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n  // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/,\n  // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/,\n  // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/,\n  // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/,\n  // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/,\n  // 0 to 12\n  minute: /^[0-5]?\\d/,\n  // 0 to 59\n  second: /^[0-5]?\\d/,\n  // 0 to 59\n\n  singleDigit: /^\\d/,\n  // 0 to 9\n  twoDigits: /^\\d{1,2}/,\n  // 0 to 99\n  threeDigits: /^\\d{1,3}/,\n  // 0 to 999\n  fourDigits: /^\\d{1,4}/,\n  // 0 to 9999\n\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/,\n  // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/,\n  // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/,\n  // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var 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};", "import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n  if (!parseFnResult) {\n    return parseFnResult;\n  }\n  return {\n    value: mapFn(parseFnResult.value),\n    rest: parseFnResult.rest\n  };\n}\nexport function parseNumericPattern(pattern, dateString) {\n  var matchResult = dateString.match(pattern);\n  if (!matchResult) {\n    return null;\n  }\n  return {\n    value: parseInt(matchResult[0], 10),\n    rest: dateString.slice(matchResult[0].length)\n  };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n  var matchResult = dateString.match(pattern);\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  var sign = matchResult[1] === '+' ? 1 : -1;\n  var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n  return {\n    value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n    rest: dateString.slice(matchResult[0].length)\n  };\n}\nexport function parseAnyDigitsSigned(dateString) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\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}\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}\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}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  var isCommonEra = currentYear > 0;\n  // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n  var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n  var result;\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    var rangeEnd = absCurrentYear + 50;\n    var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n    var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n  return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\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 var YearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(YearParser, _Parser);\n  var _super = _createSuper(YearParser);\n  function YearParser() {\n    var _this;\n    _classCallCheck(this, YearParser);\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), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(YearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(year) {\n        return {\n          year: 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(match.ordinalNumber(dateString, {\n            unit: 'year'\n          }), valueCallback);\n        default:\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value.isTwoDigitYear || value.year > 0;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      var currentYear = date.getUTCFullYear();\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n        date.setUTCHours(0, 0, 0, 0);\n        return date;\n      }\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return YearParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalWeekYearParser, _Parser);\n  var _super = _createSuper(LocalWeekYearParser);\n  function LocalWeekYearParser() {\n    var _this;\n    _classCallCheck(this, LocalWeekYearParser);\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), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalWeekYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(year) {\n        return {\n          year: 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(match.ordinalNumber(dateString, {\n            unit: 'year'\n          }), valueCallback);\n        default:\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value.isTwoDigitYear || value.year > 0;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value, options) {\n      var currentYear = getUTCWeekYear(date, options);\n      if (value.isTwoDigitYear) {\n        var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n        date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n        date.setUTCHours(0, 0, 0, 0);\n        return startOfUTCWeek(date, options);\n      }\n      var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n      date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n      date.setUTCHours(0, 0, 0, 0);\n      return startOfUTCWeek(date, options);\n    }\n  }]);\n  return LocalWeekYearParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOWeekYearParser, _Parser);\n  var _super = _createSuper(ISOWeekYearParser);\n  function ISOWeekYearParser() {\n    var _this;\n    _classCallCheck(this, ISOWeekYearParser);\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), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISOWeekYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      if (token === 'R') {\n        return parseNDigitsSigned(4, dateString);\n      }\n      return parseNDigitsSigned(token.length, dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      var firstWeekOfYear = new Date(0);\n      firstWeekOfYear.setUTCFullYear(value, 0, 4);\n      firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n      return startOfUTCISOWeek(firstWeekOfYear);\n    }\n  }]);\n  return ISOWeekYearParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ExtendedYearParser, _Parser);\n  var _super = _createSuper(ExtendedYearParser);\n  function ExtendedYearParser() {\n    var _this;\n    _classCallCheck(this, ExtendedYearParser);\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), \"priority\", 130);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ExtendedYearParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      if (token === 'u') {\n        return parseNDigitsSigned(4, dateString);\n      }\n      return parseNDigitsSigned(token.length, dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCFullYear(value, 0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return ExtendedYearParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n  _inherits(QuarterParser, _Parser);\n  var _super = _createSuper(QuarterParser);\n  function QuarterParser() {\n    var _this;\n    _classCallCheck(this, QuarterParser);\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), \"priority\", 120);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(QuarterParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'Q':\n        case 'QQ':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, dateString);\n        // 1st, 2nd, 3rd, 4th\n        case 'Qo':\n          return match.ordinalNumber(dateString, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n        case 'QQQ':\n          return match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\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 match.quarter(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 4;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return QuarterParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneQuarterParser, _Parser);\n  var _super = _createSuper(StandAloneQuarterParser);\n  function StandAloneQuarterParser() {\n    var _this;\n    _classCallCheck(this, StandAloneQuarterParser);\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), \"priority\", 120);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneQuarterParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // 1, 2, 3, 4\n        case 'q':\n        case 'qq':\n          // 01, 02, 03, 04\n          return parseNDigits(token.length, dateString);\n        // 1st, 2nd, 3rd, 4th\n        case 'qo':\n          return match.ordinalNumber(dateString, {\n            unit: 'quarter'\n          });\n        // Q1, Q2, Q3, Q4\n        case 'qqq':\n          return match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\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 match.quarter(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.quarter(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 4;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth((value - 1) * 3, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneQuarterParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n  _inherits(MonthParser, _Parser);\n  var _super = _createSuper(MonthParser);\n  function MonthParser() {\n    var _this;\n    _classCallCheck(this, MonthParser);\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), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n    return _this;\n  }\n  _createClass(MonthParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        return value - 1;\n      };\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'M':\n          return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n        // 01, 02, ..., 12\n        case 'MM':\n          return mapValue(parseNDigits(2, dateString), valueCallback);\n        // 1st, 2nd, ..., 12th\n        case 'Mo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'month'\n          }), valueCallback);\n        // Jan, Feb, ..., Dec\n        case 'MMM':\n          return match.month(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\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 match.month(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return MonthParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneMonthParser, _Parser);\n  var _super = _createSuper(StandAloneMonthParser);\n  function StandAloneMonthParser() {\n    var _this;\n    _classCallCheck(this, StandAloneMonthParser);\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), \"priority\", 110);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneMonthParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        return value - 1;\n      };\n      switch (token) {\n        // 1, 2, ..., 12\n        case 'L':\n          return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n        // 01, 02, ..., 12\n        case 'LL':\n          return mapValue(parseNDigits(2, dateString), valueCallback);\n        // 1st, 2nd, ..., 12th\n        case 'Lo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'month'\n          }), valueCallback);\n        // Jan, Feb, ..., Dec\n        case 'LLL':\n          return match.month(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\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 match.month(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.month(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(value, 1);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneMonthParser;\n}(Parser);", "import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var week = toInteger(dirtyWeek);\n  var diff = getUTCWeek(date, options) - week;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalWeekParser, _Parser);\n  var _super = _createSuper(LocalWeekParser);\n  function LocalWeekParser() {\n    var _this;\n    _classCallCheck(this, LocalWeekParser);\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), \"priority\", 100);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalWeekParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'w':\n          return parseNumericPattern(numericPatterns.week, dateString);\n        case 'wo':\n          return match.ordinalNumber(dateString, {\n            unit: 'week'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 53;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      return startOfUTCWeek(setUTCWeek(date, value, options), options);\n    }\n  }]);\n  return LocalWeekParser;\n}(Parser);", "import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var isoWeek = toInteger(dirtyISOWeek);\n  var diff = getUTCISOWeek(date) - isoWeek;\n  date.setUTCDate(date.getUTCDate() - diff * 7);\n  return date;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOWeekParser, _Parser);\n  var _super = _createSuper(ISOWeekParser);\n  function ISOWeekParser() {\n    var _this;\n    _classCallCheck(this, ISOWeekParser);\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), \"priority\", 100);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISOWeekParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'I':\n          return parseNumericPattern(numericPatterns.week, dateString);\n        case 'Io':\n          return match.ordinalNumber(dateString, {\n            unit: 'week'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 53;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      return startOfUTCISOWeek(setUTCISOWeek(date, value));\n    }\n  }]);\n  return ISOWeekParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DateParser, _Parser);\n  var _super = _createSuper(DateParser);\n  function DateParser() {\n    var _this;\n    _classCallCheck(this, DateParser);\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), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DateParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'd':\n          return parseNumericPattern(numericPatterns.date, dateString);\n        case 'do':\n          return match.ordinalNumber(dateString, {\n            unit: 'date'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(date, value) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      var month = date.getUTCMonth();\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    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCDate(value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DateParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayOfYearParser, _Parser);\n  var _super = _createSuper(DayOfYearParser);\n  function DayOfYearParser() {\n    var _this;\n    _classCallCheck(this, DayOfYearParser);\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), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayOfYearParser, [{\n    key: \"parse\",\n    value: function 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, {\n            unit: 'date'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(date, value) {\n      var year = date.getUTCFullYear();\n      var isLeapYear = isLeapYearIndex(year);\n      if (isLeapYear) {\n        return value >= 1 && value <= 366;\n      } else {\n        return value >= 1 && value <= 365;\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMonth(0, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayOfYearParser;\n}(Parser);", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n  requiredArgs(2, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  var date = toDate(dirtyDate);\n  var day = toInteger(dirtyDay);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayParser, _Parser);\n  var _super = _createSuper(DayParser);\n  function DayParser() {\n    var _this;\n    _classCallCheck(this, DayParser);\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), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        // Tue\n        case 'E':\n        case 'EE':\n        case 'EEE':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\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 match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n        case 'EEEE':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(LocalDayParser, _Parser);\n  var _super = _createSuper(LocalDayParser);\n  function LocalDayParser() {\n    var _this;\n    _classCallCheck(this, LocalDayParser);\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), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(LocalDayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match, options) {\n      var valueCallback = function valueCallback(value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n      switch (token) {\n        // 3\n        case 'e':\n        case 'ee':\n          // 03\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n        // 3rd\n        case 'eo':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'day'\n          }), valueCallback);\n        // Tue\n        case 'eee':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\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 match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        // Tuesday\n        case 'eeee':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return LocalDayParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(StandAloneLocalDayParser, _Parser);\n  var _super = _createSuper(StandAloneLocalDayParser);\n  function StandAloneLocalDayParser() {\n    var _this;\n    _classCallCheck(this, StandAloneLocalDayParser);\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), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n    return _this;\n  }\n  _createClass(StandAloneLocalDayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match, options) {\n      var valueCallback = function valueCallback(value) {\n        var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n        return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n      };\n      switch (token) {\n        // 3\n        case 'c':\n        case 'cc':\n          // 03\n          return mapValue(parseNDigits(token.length, dateString), valueCallback);\n        // 3rd\n        case 'co':\n          return mapValue(match.ordinalNumber(dateString, {\n            unit: 'day'\n          }), valueCallback);\n        // Tue\n        case 'ccc':\n          return match.day(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\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 match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n        // Tuesday\n        case 'cccc':\n        default:\n          return match.day(dateString, {\n            width: 'wide',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'standalone'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'standalone'\n          });\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 6;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value, options) {\n      date = setUTCDay(date, value, options);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return StandAloneLocalDayParser;\n}(Parser);", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n  requiredArgs(2, arguments);\n  var day = toInteger(dirtyDay);\n  if (day % 7 === 0) {\n    day = day - 7;\n  }\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var currentDay = date.getUTCDay();\n  var remainder = day % 7;\n  var dayIndex = (remainder + 7) % 7;\n  var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISODayParser, _Parser);\n  var _super = _createSuper(ISODayParser);\n  function ISODayParser() {\n    var _this;\n    _classCallCheck(this, ISODayParser);\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), \"priority\", 90);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n    return _this;\n  }\n  _createClass(ISODayParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      var valueCallback = function valueCallback(value) {\n        if (value === 0) {\n          return 7;\n        }\n        return value;\n      };\n      switch (token) {\n        // 2\n        case 'i':\n        case 'ii':\n          // 02\n          return parseNDigits(token.length, dateString);\n        // 2nd\n        case 'io':\n          return match.ordinalNumber(dateString, {\n            unit: 'day'\n          });\n        // Tue\n        case 'iii':\n          return mapValue(match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // T\n        case 'iiiii':\n          return mapValue(match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // Tu\n        case 'iiiiii':\n          return mapValue(match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n        // Tuesday\n        case 'iiii':\n        default:\n          return mapValue(match.day(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'short',\n            context: 'formatting'\n          }) || match.day(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          }), valueCallback);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 7;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date = setUTCISODay(date, value);\n      date.setUTCHours(0, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return ISODayParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n  _inherits(AMPMParser, _Parser);\n  var _super = _createSuper(AMPMParser);\n  function AMPMParser() {\n    var _this;\n    _classCallCheck(this, AMPMParser);\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), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(AMPMParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'a':\n        case 'aa':\n        case 'aaa':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'aaaaa':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'aaaa':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return AMPMParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n  _inherits(AMPMMidnightParser, _Parser);\n  var _super = _createSuper(AMPMMidnightParser);\n  function AMPMMidnightParser() {\n    var _this;\n    _classCallCheck(this, AMPMMidnightParser);\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), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(AMPMMidnightParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'b':\n        case 'bb':\n        case 'bbb':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'bbbbb':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'bbbb':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return AMPMMidnightParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n  _inherits(DayPeriodParser, _Parser);\n  var _super = _createSuper(DayPeriodParser);\n  function DayPeriodParser() {\n    var _this;\n    _classCallCheck(this, DayPeriodParser);\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), \"priority\", 80);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n    return _this;\n  }\n  _createClass(DayPeriodParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'B':\n        case 'BB':\n        case 'BBB':\n          return match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'BBBBB':\n          return match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n        case 'BBBB':\n        default:\n          return match.dayPeriod(dateString, {\n            width: 'wide',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'abbreviated',\n            context: 'formatting'\n          }) || match.dayPeriod(dateString, {\n            width: 'narrow',\n            context: 'formatting'\n          });\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n      return date;\n    }\n  }]);\n  return DayPeriodParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour1to12Parser, _Parser);\n  var _super = _createSuper(Hour1to12Parser);\n  function Hour1to12Parser() {\n    var _this;\n    _classCallCheck(this, Hour1to12Parser);\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), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour1to12Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'h':\n          return parseNumericPattern(numericPatterns.hour12h, dateString);\n        case 'ho':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 12;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else if (!isPM && value === 12) {\n        date.setUTCHours(0, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date;\n    }\n  }]);\n  return Hour1to12Parser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour0to23Parser, _Parser);\n  var _super = _createSuper(Hour0to23Parser);\n  function Hour0to23Parser() {\n    var _this;\n    _classCallCheck(this, Hour0to23Parser);\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), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour0to23Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'H':\n          return parseNumericPattern(numericPatterns.hour23h, dateString);\n        case 'Ho':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 23;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCHours(value, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return Hour0to23Parser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour0To11Parser, _Parser);\n  var _super = _createSuper(Hour0To11Parser);\n  function Hour0To11Parser() {\n    var _this;\n    _classCallCheck(this, Hour0To11Parser);\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), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour0To11Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'K':\n          return parseNumericPattern(numericPatterns.hour11h, dateString);\n        case 'Ko':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 11;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var isPM = date.getUTCHours() >= 12;\n      if (isPM && value < 12) {\n        date.setUTCHours(value + 12, 0, 0, 0);\n      } else {\n        date.setUTCHours(value, 0, 0, 0);\n      }\n      return date;\n    }\n  }]);\n  return Hour0To11Parser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n  _inherits(Hour1To24Parser, _Parser);\n  var _super = _createSuper(Hour1To24Parser);\n  function Hour1To24Parser() {\n    var _this;\n    _classCallCheck(this, Hour1To24Parser);\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), \"priority\", 70);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n    return _this;\n  }\n  _createClass(Hour1To24Parser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'k':\n          return parseNumericPattern(numericPatterns.hour24h, dateString);\n        case 'ko':\n          return match.ordinalNumber(dateString, {\n            unit: 'hour'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 1 && value <= 24;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      var hours = value <= 24 ? value % 24 : value;\n      date.setUTCHours(hours, 0, 0, 0);\n      return date;\n    }\n  }]);\n  return Hour1To24Parser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n  _inherits(MinuteParser, _Parser);\n  var _super = _createSuper(MinuteParser);\n  function MinuteParser() {\n    var _this;\n    _classCallCheck(this, MinuteParser);\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), \"priority\", 60);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(MinuteParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 'm':\n          return parseNumericPattern(numericPatterns.minute, dateString);\n        case 'mo':\n          return match.ordinalNumber(dateString, {\n            unit: 'minute'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 59;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMinutes(value, 0, 0);\n      return date;\n    }\n  }]);\n  return MinuteParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n  _inherits(SecondParser, _Parser);\n  var _super = _createSuper(SecondParser);\n  function SecondParser() {\n    var _this;\n    _classCallCheck(this, SecondParser);\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), \"priority\", 50);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(SecondParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token, match) {\n      switch (token) {\n        case 's':\n          return parseNumericPattern(numericPatterns.second, dateString);\n        case 'so':\n          return match.ordinalNumber(dateString, {\n            unit: 'second'\n          });\n        default:\n          return parseNDigits(token.length, dateString);\n      }\n    }\n  }, {\n    key: \"validate\",\n    value: function validate(_date, value) {\n      return value >= 0 && value <= 59;\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCSeconds(value, 0);\n      return date;\n    }\n  }]);\n  return SecondParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n  _inherits(FractionOfSecondParser, _Parser);\n  var _super = _createSuper(FractionOfSecondParser);\n  function FractionOfSecondParser() {\n    var _this;\n    _classCallCheck(this, FractionOfSecondParser);\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), \"priority\", 30);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n    return _this;\n  }\n  _createClass(FractionOfSecondParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      var valueCallback = function valueCallback(value) {\n        return Math.floor(value * Math.pow(10, -token.length + 3));\n      };\n      return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, _flags, value) {\n      date.setUTCMilliseconds(value);\n      return date;\n    }\n  }]);\n  return FractionOfSecondParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOTimezoneWithZParser, _Parser);\n  var _super = _createSuper(ISOTimezoneWithZParser);\n  function ISOTimezoneWithZParser() {\n    var _this;\n    _classCallCheck(this, ISOTimezoneWithZParser);\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), \"priority\", 10);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n    return _this;\n  }\n  _createClass(ISOTimezoneWithZParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      switch (token) {\n        case 'X':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n        case 'XX':\n          return parseTimezonePattern(timezonePatterns.basic, dateString);\n        case 'XXXX':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n        case 'XXXXX':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n        case 'XXX':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, dateString);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      return new Date(date.getTime() - value);\n    }\n  }]);\n  return ISOTimezoneWithZParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n  _inherits(ISOTimezoneParser, _Parser);\n  var _super = _createSuper(ISOTimezoneParser);\n  function ISOTimezoneParser() {\n    var _this;\n    _classCallCheck(this, ISOTimezoneParser);\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), \"priority\", 10);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n    return _this;\n  }\n  _createClass(ISOTimezoneParser, [{\n    key: \"parse\",\n    value: function parse(dateString, token) {\n      switch (token) {\n        case 'x':\n          return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n        case 'xx':\n          return parseTimezonePattern(timezonePatterns.basic, dateString);\n        case 'xxxx':\n          return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n        case 'xxxxx':\n          return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n        case 'xxx':\n        default:\n          return parseTimezonePattern(timezonePatterns.extended, dateString);\n      }\n    }\n  }, {\n    key: \"set\",\n    value: function set(date, flags, value) {\n      if (flags.timestampIsSet) {\n        return date;\n      }\n      return new Date(date.getTime() - value);\n    }\n  }]);\n  return ISOTimezoneParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n  _inherits(TimestampSecondsParser, _Parser);\n  var _super = _createSuper(TimestampSecondsParser);\n  function TimestampSecondsParser() {\n    var _this;\n    _classCallCheck(this, TimestampSecondsParser);\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), \"priority\", 40);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n    return _this;\n  }\n  _createClass(TimestampSecondsParser, [{\n    key: \"parse\",\n    value: function parse(dateString) {\n      return parseAnyDigitsSigned(dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      return [new Date(value * 1000), {\n        timestampIsSet: true\n      }];\n    }\n  }]);\n  return TimestampSecondsParser;\n}(Parser);", "import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n  _inherits(TimestampMillisecondsParser, _Parser);\n  var _super = _createSuper(TimestampMillisecondsParser);\n  function TimestampMillisecondsParser() {\n    var _this;\n    _classCallCheck(this, TimestampMillisecondsParser);\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), \"priority\", 20);\n    _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n    return _this;\n  }\n  _createClass(TimestampMillisecondsParser, [{\n    key: \"parse\",\n    value: function parse(dateString) {\n      return parseAnyDigitsSigned(dateString);\n    }\n  }, {\n    key: \"set\",\n    value: function set(_date, _flags, value) {\n      return [new Date(value), {\n        timestampIsSet: true\n      }];\n    }\n  }]);\n  return TimestampMillisecondsParser;\n}(Parser);", "import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\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 var 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};", "import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // 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\nvar formattingTokensRegExp = /[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`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar 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 interchangably.\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]{@link https://date-fns.org/docs/setISOWeekYear}\n *    and [setWeekYear]{@link 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 ofthen 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 * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} 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 {RangeError} 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 {RangeError} 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 {RangeError} 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 {RangeError} 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 default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n  requiredArgs(3, arguments);\n  var dateString = String(dirtyDateString);\n  var formatString = String(dirtyFormatString);\n  var defaultOptions = getDefaultOptions();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n  if (!locale.match) {\n    throw new RangeError('locale must contain match property');\n  }\n  var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n  // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n  var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n  // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n  if (formatString === '') {\n    if (dateString === '') {\n      return toDate(dirtyReferenceDate);\n    } else {\n      return new Date(NaN);\n    }\n  }\n  var subFnOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale\n  };\n\n  // If timezone isn't specified, it will be set to the system timezone\n  var setters = [new DateToSystemTimezoneSetter()];\n  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n    if (firstCharacter in longFormatters) {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n    return substring;\n  }).join('').match(formattingTokensRegExp);\n  var usedTokens = [];\n  var _iterator = _createForOfIteratorHelper(tokens),\n    _step;\n  try {\n    var _loop = function _loop() {\n      var token = _step.value;\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n        throwProtectedError(token, formatString, dirtyDateString);\n      }\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n        throwProtectedError(token, formatString, dirtyDateString);\n      }\n      var firstCharacter = token[0];\n      var parser = parsers[firstCharacter];\n      if (parser) {\n        var incompatibleTokens = parser.incompatibleTokens;\n        if (Array.isArray(incompatibleTokens)) {\n          var incompatibleToken = usedTokens.find(function (usedToken) {\n            return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n          });\n          if (incompatibleToken) {\n            throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n          }\n        } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n          throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n        }\n        usedTokens.push({\n          token: firstCharacter,\n          fullToken: token\n        });\n        var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n        if (!parseResult) {\n          return {\n            v: new Date(NaN)\n          };\n        }\n        setters.push(parseResult.setter);\n        dateString = parseResult.rest;\n      } else {\n        if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n          throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\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 (dateString.indexOf(token) === 0) {\n          dateString = dateString.slice(token.length);\n        } else {\n          return {\n            v: new Date(NaN)\n          };\n        }\n      }\n    };\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var _ret = _loop();\n      if (_typeof(_ret) === \"object\") return _ret.v;\n    }\n\n    // Check if the remaining input contains something other than whitespace\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n  if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n    return new Date(NaN);\n  }\n  var uniquePrioritySetters = setters.map(function (setter) {\n    return setter.priority;\n  }).sort(function (a, b) {\n    return b - a;\n  }).filter(function (priority, index, array) {\n    return array.indexOf(priority) === index;\n  }).map(function (priority) {\n    return setters.filter(function (setter) {\n      return setter.priority === priority;\n    }).sort(function (a, b) {\n      return b.subPriority - a.subPriority;\n    });\n  }).map(function (setterArray) {\n    return setterArray[0];\n  });\n  var date = toDate(dirtyReferenceDate);\n  if (isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n  var flags = {};\n  var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n    _step2;\n  try {\n    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n      var setter = _step2.value;\n      if (!setter.validate(utcDate, subFnOptions)) {\n        return new Date(NaN);\n      }\n      var result = setter.set(utcDate, flags, subFnOptions);\n      // Result is tuple (date, flags)\n      if (Array.isArray(result)) {\n        utcDate = result[0];\n        assign(flags, result[1]);\n        // Result is date\n      } else {\n        utcDate = result;\n      }\n    }\n  } catch (err) {\n    _iterator2.e(err);\n  } finally {\n    _iterator2.f();\n  }\n  return utcDate;\n}\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\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 default function startOfHour(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMinutes(0, 0, 0);\n  return date;\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\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 * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\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 default function startOfSecond(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  date.setMilliseconds(0);\n  return date;\n}", "import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\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 * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\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 default function parseISO(argument, options) {\n  var _options$additionalDi;\n  requiredArgs(1, arguments);\n  var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n  if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n    throw new RangeError('additionalDigits must be 0, 1 or 2');\n  }\n  if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n    return new Date(NaN);\n  }\n  var dateStrings = splitDateString(argument);\n  var date;\n  if (dateStrings.date) {\n    var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n  }\n  if (!date || isNaN(date.getTime())) {\n    return new Date(NaN);\n  }\n  var timestamp = date.getTime();\n  var time = 0;\n  var offset;\n  if (dateStrings.time) {\n    time = parseTime(dateStrings.time);\n    if (isNaN(time)) {\n      return new Date(NaN);\n    }\n  }\n  if (dateStrings.timezone) {\n    offset = parseTimezone(dateStrings.timezone);\n    if (isNaN(offset)) {\n      return new Date(NaN);\n    }\n  } else {\n    var dirtyDate = new Date(timestamp + time);\n    // js parsed string assuming it's in UTC timezone\n    // but we need it to be parsed in our timezone\n    // so we use utc values to build date in our timezone.\n    // Year values from 0 to 99 map to the years 1900 to 1999\n    // so set year explicitly with setFullYear.\n    var result = new Date(0);\n    result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n    result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n    return result;\n  }\n  return new Date(timestamp + time + offset);\n}\nvar patterns = {\n  dateTimeDelimiter: /[T ]/,\n  timeZoneDelimiter: /[Z ]/i,\n  timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n  var dateStrings = {};\n  var array = dateString.split(patterns.dateTimeDelimiter);\n  var 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  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(dateStrings.date.length, dateString.length);\n    }\n  }\n  if (timeString) {\n    var 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  return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n  var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n  var captures = dateString.match(regex);\n  // Invalid ISO-formatted year\n  if (!captures) return {\n    year: NaN,\n    restDateString: ''\n  };\n  var year = captures[1] ? parseInt(captures[1]) : null;\n  var 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}\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) return new Date(NaN);\n  var captures = dateString.match(dateRegex);\n  // Invalid ISO-formatted string\n  if (!captures) return new Date(NaN);\n  var isWeekDate = !!captures[4];\n  var dayOfYear = parseDateUnit(captures[1]);\n  var month = parseDateUnit(captures[2]) - 1;\n  var day = parseDateUnit(captures[3]);\n  var week = parseDateUnit(captures[4]);\n  var dayOfWeek = parseDateUnit(captures[5]) - 1;\n  if (isWeekDate) {\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN);\n    }\n    return dayOfISOWeekYear(year, week, dayOfWeek);\n  } else {\n    var date = new Date(0);\n    if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n      return new Date(NaN);\n    }\n    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n    return date;\n  }\n}\nfunction parseDateUnit(value) {\n  return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n  var captures = timeString.match(timeRegex);\n  if (!captures) return NaN; // Invalid ISO-formatted time\n\n  var hours = parseTimeUnit(captures[1]);\n  var minutes = parseTimeUnit(captures[2]);\n  var seconds = parseTimeUnit(captures[3]);\n  if (!validateTime(hours, minutes, seconds)) {\n    return NaN;\n  }\n  return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n  return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n  if (timezoneString === 'Z') return 0;\n  var captures = timezoneString.match(timezoneRegex);\n  if (!captures) return 0;\n  var sign = captures[1] === '+' ? -1 : 1;\n  var hours = parseInt(captures[2]);\n  var minutes = captures[3] && parseInt(captures[3]) || 0;\n  if (!validateTimezone(hours, minutes)) {\n    return NaN;\n  }\n  return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  var date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  var fourthOfJanuaryDay = date.getUTCDay() || 7;\n  var 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 ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n  return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n  if (hours === 24) {\n    return minutes === 0 && seconds === 0;\n  }\n  return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n  return minutes >= 0 && minutes <= 59;\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 from \"chartkick\"\nimport Chart from \"chart.js/auto\"\nimport \"chartjs-adapter-date-fns\"\n\nChartkick.use(Chart)\n", "/*!\n * Chart.js v4.5.1\n * https://www.chartjs.org\n * (c) 2025 Chart.js Contributors\n * Released under the MIT License\n */\nexport { H as HALF_PI, b3 as INFINITY, P as PI, b2 as PITAU, b5 as QUARTER_PI, b4 as RAD_PER_DEG, T as TAU, b6 as TWO_THIRDS_PI, R as _addGrace, X as _alignPixel, a2 as _alignStartEnd, p as _angleBetween, b7 as _angleDiff, _ as _arrayUnique, a8 as _attachContext, au as _bezierCurveTo, ar as _bezierInterpolation, az as _boundSegment, ap as _boundSegments, a5 as _capitalize, ao as _computeSegments, a9 as _createResolver, aL as _decimalPlaces, aW as _deprecated, aa as _descriptors, ai as _elementsEqual, N as _factorize, aP as _filterBetween, I as _getParentNode, q as _getStartAndCountOfVisiblePoints, W as _int16Range, ak as _isBetween, aj as _isClickEvent, M as _isDomSupported, C as _isPointInArea, S as _limitValue, aO as _longestText, aQ as _lookup, B as _lookupByKey, V as _measureText, aU as _merger, aV as _mergerIf, al as _normalizeAngle, y as _parseObjectDataRadialScale, as as _pointInLine, am as _readValueToProps, A as _rlookupByKey, w as _scaleRangesChanged, aH as _setMinAndMaxByKey, aX as _splitKey, aq as _steppedInterpolation, at as _steppedLineTo, aC as _textX, a1 as _toLeftRightCenter, an as _updateBezierControlPoints, aw as addRoundedRectPath, aK as almostEquals, aJ as almostWhole, Q as callback, af as clearCanvas, Y as clipArea, aT as clone, c as color, j as createContext, ad as debounce, h as defined, aF as distanceBetweenPoints, av as drawPoint, aE as drawPointLegend, F as each, e as easingEffects, O as finiteOrDefault, b0 as fontString, o as formatNumber, D as getAngleFromPoint, ah as getDatasetClipArea, aS as getHoverColor, G as getMaximumSize, z as getRelativePosition, aA as getRtlAdapter, a$ as getStyle, b as isArray, g as isFinite, a7 as isFunction, k as isNullOrUndef, x as isNumber, i as isObject, aR as isPatternOrGradient, l as listenArrayEvents, aN as log10, a4 as merge, ab as mergeIf, aI as niceNum, aG as noop, aB as overrideTextDirection, J as readUsedSize, Z as renderText, r as requestAnimFrame, a as resolve, f as resolveObjectKey, aD as restoreTextDirection, ae as retinaScale, ag as setsEqual, s as sign, aZ as splineCurve, a_ as splineCurveMonotone, K as supportsEventListenerOptions, L as throttled, U as toDegrees, n as toDimension, a0 as toFont, aY as toFontString, b1 as toLineHeight, E as toPadding, m as toPercentage, t as toRadians, ax as toTRBL, ay as toTRBLCorners, ac as uid, $ as unclipArea, u as unlistenArrayEvents, v as valueOrDefault } from './chunks/helpers.dataset.js';\nimport '@kurkle/color';\n//# sourceMappingURL=helpers.js.map\n", "/*!\n * chartjs-plugin-datalabels v2.2.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2022 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nimport { isNullOrUndef, merge, toFont, resolve, toPadding, valueOrDefault, callback, isObject, each } from 'chart.js/helpers';\nimport { defaults as defaults$1, ArcElement, PointElement, BarElement } from 'chart.js';\n\nvar devicePixelRatio = (function() {\n  if (typeof window !== 'undefined') {\n    if (window.devicePixelRatio) {\n      return window.devicePixelRatio;\n    }\n\n    // devicePixelRatio is undefined on IE10\n    // https://stackoverflow.com/a/20204180/8837887\n    // https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n    var screen = window.screen;\n    if (screen) {\n      return (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n    }\n  }\n\n  return 1;\n}());\n\nvar utils = {\n  // @todo move this in Chart.helpers.toTextLines\n  toTextLines: function(inputs) {\n    var lines = [];\n    var input;\n\n    inputs = [].concat(inputs);\n    while (inputs.length) {\n      input = inputs.pop();\n      if (typeof input === 'string') {\n        lines.unshift.apply(lines, input.split('\\n'));\n      } else if (Array.isArray(input)) {\n        inputs.push.apply(inputs, input);\n      } else if (!isNullOrUndef(inputs)) {\n        lines.unshift('' + input);\n      }\n    }\n\n    return lines;\n  },\n\n  // @todo move this in Chart.helpers.canvas.textSize\n  // @todo cache calls of measureText if font doesn't change?!\n  textSize: function(ctx, lines, font) {\n    var items = [].concat(lines);\n    var ilen = items.length;\n    var prev = ctx.font;\n    var width = 0;\n    var i;\n\n    ctx.font = font.string;\n\n    for (i = 0; i < ilen; ++i) {\n      width = Math.max(ctx.measureText(items[i]).width, width);\n    }\n\n    ctx.font = prev;\n\n    return {\n      height: ilen * font.lineHeight,\n      width: width\n    };\n  },\n\n  /**\n   * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n   * @todo move this method in Chart.helpers.bound\n   * https://doc.qt.io/qt-5/qtglobal.html#qBound\n   */\n  bound: function(min, value, max) {\n    return Math.max(min, Math.min(value, max));\n  },\n\n  /**\n   * Returns an array of pair [value, state] where state is:\n   * * -1: value is only in a0 (removed)\n   * *  1: value is only in a1 (added)\n   */\n  arrayDiff: function(a0, a1) {\n    var prev = a0.slice();\n    var updates = [];\n    var i, j, ilen, v;\n\n    for (i = 0, ilen = a1.length; i < ilen; ++i) {\n      v = a1[i];\n      j = prev.indexOf(v);\n\n      if (j === -1) {\n        updates.push([v, 1]);\n      } else {\n        prev.splice(j, 1);\n      }\n    }\n\n    for (i = 0, ilen = prev.length; i < ilen; ++i) {\n      updates.push([prev[i], -1]);\n    }\n\n    return updates;\n  },\n\n  /**\n   * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n   */\n  rasterize: function(v) {\n    return Math.round(v * devicePixelRatio) / devicePixelRatio;\n  }\n};\n\nfunction orient(point, origin) {\n  var x0 = origin.x;\n  var y0 = origin.y;\n\n  if (x0 === null) {\n    return {x: 0, y: -1};\n  }\n  if (y0 === null) {\n    return {x: 1, y: 0};\n  }\n\n  var dx = point.x - x0;\n  var dy = point.y - y0;\n  var ln = Math.sqrt(dx * dx + dy * dy);\n\n  return {\n    x: ln ? dx / ln : 0,\n    y: ln ? dy / ln : -1\n  };\n}\n\nfunction aligned(x, y, vx, vy, align) {\n  switch (align) {\n  case 'center':\n    vx = vy = 0;\n    break;\n  case 'bottom':\n    vx = 0;\n    vy = 1;\n    break;\n  case 'right':\n    vx = 1;\n    vy = 0;\n    break;\n  case 'left':\n    vx = -1;\n    vy = 0;\n    break;\n  case 'top':\n    vx = 0;\n    vy = -1;\n    break;\n  case 'start':\n    vx = -vx;\n    vy = -vy;\n    break;\n  case 'end':\n    // keep natural orientation\n    break;\n  default:\n    // clockwise rotation (in degree)\n    align *= (Math.PI / 180);\n    vx = Math.cos(align);\n    vy = Math.sin(align);\n    break;\n  }\n\n  return {\n    x: x,\n    y: y,\n    vx: vx,\n    vy: vy\n  };\n}\n\n// Line clipping (Cohen\u2013Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen\u2013Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n  var res = R_INSIDE;\n\n  if (x < rect.left) {\n    res |= R_LEFT;\n  } else if (x > rect.right) {\n    res |= R_RIGHT;\n  }\n  if (y < rect.top) {\n    res |= R_TOP;\n  } else if (y > rect.bottom) {\n    res |= R_BOTTOM;\n  }\n\n  return res;\n}\n\nfunction clipped(segment, area) {\n  var x0 = segment.x0;\n  var y0 = segment.y0;\n  var x1 = segment.x1;\n  var y1 = segment.y1;\n  var r0 = region(x0, y0, area);\n  var r1 = region(x1, y1, area);\n  var r, x, y;\n\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    if (!(r0 | r1) || (r0 & r1)) {\n      // both points inside or on the same side: no clipping\n      break;\n    }\n\n    // at least one point is outside\n    r = r0 || r1;\n\n    if (r & R_TOP) {\n      x = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n      y = area.top;\n    } else if (r & R_BOTTOM) {\n      x = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n      y = area.bottom;\n    } else if (r & R_RIGHT) {\n      y = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n      x = area.right;\n    } else if (r & R_LEFT) {\n      y = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n      x = area.left;\n    }\n\n    if (r === r0) {\n      x0 = x;\n      y0 = y;\n      r0 = region(x0, y0, area);\n    } else {\n      x1 = x;\n      y1 = y;\n      r1 = region(x1, y1, area);\n    }\n  }\n\n  return {\n    x0: x0,\n    x1: x1,\n    y0: y0,\n    y1: y1\n  };\n}\n\nfunction compute$1(range, config) {\n  var anchor = config.anchor;\n  var segment = range;\n  var x, y;\n\n  if (config.clamp) {\n    segment = clipped(segment, config.area);\n  }\n\n  if (anchor === 'start') {\n    x = segment.x0;\n    y = segment.y0;\n  } else if (anchor === 'end') {\n    x = segment.x1;\n    y = segment.y1;\n  } else {\n    x = (segment.x0 + segment.x1) / 2;\n    y = (segment.y0 + segment.y1) / 2;\n  }\n\n  return aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n  arc: function(el, config) {\n    var angle = (el.startAngle + el.endAngle) / 2;\n    var vx = Math.cos(angle);\n    var vy = Math.sin(angle);\n    var r0 = el.innerRadius;\n    var r1 = el.outerRadius;\n\n    return compute$1({\n      x0: el.x + vx * r0,\n      y0: el.y + vy * r0,\n      x1: el.x + vx * r1,\n      y1: el.y + vy * r1,\n      vx: vx,\n      vy: vy\n    }, config);\n  },\n\n  point: function(el, config) {\n    var v = orient(el, config.origin);\n    var rx = v.x * el.options.radius;\n    var ry = v.y * el.options.radius;\n\n    return compute$1({\n      x0: el.x - rx,\n      y0: el.y - ry,\n      x1: el.x + rx,\n      y1: el.y + ry,\n      vx: v.x,\n      vy: v.y\n    }, config);\n  },\n\n  bar: function(el, config) {\n    var v = orient(el, config.origin);\n    var x = el.x;\n    var y = el.y;\n    var sx = 0;\n    var sy = 0;\n\n    if (el.horizontal) {\n      x = Math.min(el.x, el.base);\n      sx = Math.abs(el.base - el.x);\n    } else {\n      y = Math.min(el.y, el.base);\n      sy = Math.abs(el.base - el.y);\n    }\n\n    return compute$1({\n      x0: x,\n      y0: y + sy,\n      x1: x + sx,\n      y1: y,\n      vx: v.x,\n      vy: v.y\n    }, config);\n  },\n\n  fallback: function(el, config) {\n    var v = orient(el, config.origin);\n\n    return compute$1({\n      x0: el.x,\n      y0: el.y,\n      x1: el.x + (el.width || 0),\n      y1: el.y + (el.height || 0),\n      vx: v.x,\n      vy: v.y\n    }, config);\n  }\n};\n\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n  var borderWidth = model.borderWidth || 0;\n  var padding = model.padding;\n  var th = model.size.height;\n  var tw = model.size.width;\n  var tx = -tw / 2;\n  var ty = -th / 2;\n\n  return {\n    frame: {\n      x: tx - padding.left - borderWidth,\n      y: ty - padding.top - borderWidth,\n      w: tw + padding.width + borderWidth * 2,\n      h: th + padding.height + borderWidth * 2\n    },\n    text: {\n      x: tx,\n      y: ty,\n      w: tw,\n      h: th\n    }\n  };\n}\n\nfunction getScaleOrigin(el, context) {\n  var scale = context.chart.getDatasetMeta(context.datasetIndex).vScale;\n\n  if (!scale) {\n    return null;\n  }\n\n  if (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n    return {x: scale.xCenter, y: scale.yCenter};\n  }\n\n  var pixel = scale.getBasePixel();\n  return el.horizontal ?\n    {x: pixel, y: null} :\n    {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n  if (el instanceof ArcElement) {\n    return positioners.arc;\n  }\n  if (el instanceof PointElement) {\n    return positioners.point;\n  }\n  if (el instanceof BarElement) {\n    return positioners.bar;\n  }\n  return positioners.fallback;\n}\n\nfunction drawRoundedRect(ctx, x, y, w, h, radius) {\n  var HALF_PI = Math.PI / 2;\n\n  if (radius) {\n    var r = Math.min(radius, h / 2, w / 2);\n    var left = x + r;\n    var top = y + r;\n    var right = x + w - r;\n    var bottom = y + h - r;\n\n    ctx.moveTo(x, top);\n    if (left < right && top < bottom) {\n      ctx.arc(left, top, r, -Math.PI, -HALF_PI);\n      ctx.arc(right, top, r, -HALF_PI, 0);\n      ctx.arc(right, bottom, r, 0, HALF_PI);\n      ctx.arc(left, bottom, r, HALF_PI, Math.PI);\n    } else if (left < right) {\n      ctx.moveTo(left, y);\n      ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n      ctx.arc(left, top, r, HALF_PI, Math.PI + HALF_PI);\n    } else if (top < bottom) {\n      ctx.arc(left, top, r, -Math.PI, 0);\n      ctx.arc(left, bottom, r, 0, Math.PI);\n    } else {\n      ctx.arc(left, top, r, -Math.PI, Math.PI);\n    }\n    ctx.closePath();\n    ctx.moveTo(x, y);\n  } else {\n    ctx.rect(x, y, w, h);\n  }\n}\n\nfunction drawFrame(ctx, rect, model) {\n  var bgColor = model.backgroundColor;\n  var borderColor = model.borderColor;\n  var borderWidth = model.borderWidth;\n\n  if (!bgColor && (!borderColor || !borderWidth)) {\n    return;\n  }\n\n  ctx.beginPath();\n\n  drawRoundedRect(\n    ctx,\n    rasterize(rect.x) + borderWidth / 2,\n    rasterize(rect.y) + borderWidth / 2,\n    rasterize(rect.w) - borderWidth,\n    rasterize(rect.h) - borderWidth,\n    model.borderRadius);\n\n  ctx.closePath();\n\n  if (bgColor) {\n    ctx.fillStyle = bgColor;\n    ctx.fill();\n  }\n\n  if (borderColor && borderWidth) {\n    ctx.strokeStyle = borderColor;\n    ctx.lineWidth = borderWidth;\n    ctx.lineJoin = 'miter';\n    ctx.stroke();\n  }\n}\n\nfunction textGeometry(rect, align, font) {\n  var h = font.lineHeight;\n  var w = rect.w;\n  var x = rect.x;\n  var y = rect.y + h / 2;\n\n  if (align === 'center') {\n    x += w / 2;\n  } else if (align === 'end' || align === 'right') {\n    x += w;\n  }\n\n  return {\n    h: h,\n    w: w,\n    x: x,\n    y: y\n  };\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n  var shadow = ctx.shadowBlur;\n  var stroked = cfg.stroked;\n  var x = rasterize(cfg.x);\n  var y = rasterize(cfg.y);\n  var w = rasterize(cfg.w);\n\n  if (stroked) {\n    ctx.strokeText(text, x, y, w);\n  }\n\n  if (cfg.filled) {\n    if (shadow && stroked) {\n      // Prevent drawing shadow on both the text stroke and fill, so\n      // if the text is stroked, remove the shadow for the text fill.\n      ctx.shadowBlur = 0;\n    }\n\n    ctx.fillText(text, x, y, w);\n\n    if (shadow && stroked) {\n      ctx.shadowBlur = shadow;\n    }\n  }\n}\n\nfunction drawText(ctx, lines, rect, model) {\n  var align = model.textAlign;\n  var color = model.color;\n  var filled = !!color;\n  var font = model.font;\n  var ilen = lines.length;\n  var strokeColor = model.textStrokeColor;\n  var strokeWidth = model.textStrokeWidth;\n  var stroked = strokeColor && strokeWidth;\n  var i;\n\n  if (!ilen || (!filled && !stroked)) {\n    return;\n  }\n\n  // Adjust coordinates based on text alignment and line height\n  rect = textGeometry(rect, align, font);\n\n  ctx.font = font.string;\n  ctx.textAlign = align;\n  ctx.textBaseline = 'middle';\n  ctx.shadowBlur = model.textShadowBlur;\n  ctx.shadowColor = model.textShadowColor;\n\n  if (filled) {\n    ctx.fillStyle = color;\n  }\n  if (stroked) {\n    ctx.lineJoin = 'round';\n    ctx.lineWidth = strokeWidth;\n    ctx.strokeStyle = strokeColor;\n  }\n\n  for (i = 0, ilen = lines.length; i < ilen; ++i) {\n    drawTextLine(ctx, lines[i], {\n      stroked: stroked,\n      filled: filled,\n      w: rect.w,\n      x: rect.x,\n      y: rect.y + rect.h * i\n    });\n  }\n}\n\nvar Label = function(config, ctx, el, index) {\n  var me = this;\n\n  me._config = config;\n  me._index = index;\n  me._model = null;\n  me._rects = null;\n  me._ctx = ctx;\n  me._el = el;\n};\n\nmerge(Label.prototype, {\n  /**\n   * @private\n   */\n  _modelize: function(display, lines, config, context) {\n    var me = this;\n    var index = me._index;\n    var font = toFont(resolve([config.font, {}], context, index));\n    var color = resolve([config.color, defaults$1.color], context, index);\n\n    return {\n      align: resolve([config.align, 'center'], context, index),\n      anchor: resolve([config.anchor, 'center'], context, index),\n      area: context.chart.chartArea,\n      backgroundColor: resolve([config.backgroundColor, null], context, index),\n      borderColor: resolve([config.borderColor, null], context, index),\n      borderRadius: resolve([config.borderRadius, 0], context, index),\n      borderWidth: resolve([config.borderWidth, 0], context, index),\n      clamp: resolve([config.clamp, false], context, index),\n      clip: resolve([config.clip, false], context, index),\n      color: color,\n      display: display,\n      font: font,\n      lines: lines,\n      offset: resolve([config.offset, 4], context, index),\n      opacity: resolve([config.opacity, 1], context, index),\n      origin: getScaleOrigin(me._el, context),\n      padding: toPadding(resolve([config.padding, 4], context, index)),\n      positioner: getPositioner(me._el),\n      rotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n      size: utils.textSize(me._ctx, lines, font),\n      textAlign: resolve([config.textAlign, 'start'], context, index),\n      textShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n      textShadowColor: resolve([config.textShadowColor, color], context, index),\n      textStrokeColor: resolve([config.textStrokeColor, color], context, index),\n      textStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n    };\n  },\n\n  update: function(context) {\n    var me = this;\n    var model = null;\n    var rects = null;\n    var index = me._index;\n    var config = me._config;\n    var value, label, lines;\n\n    // We first resolve the display option (separately) to avoid computing\n    // other options in case the label is hidden (i.e. display: false).\n    var display = resolve([config.display, true], context, index);\n\n    if (display) {\n      value = context.dataset.data[index];\n      label = valueOrDefault(callback(config.formatter, [value, context]), value);\n      lines = isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n      if (lines.length) {\n        model = me._modelize(display, lines, config, context);\n        rects = boundingRects(model);\n      }\n    }\n\n    me._model = model;\n    me._rects = rects;\n  },\n\n  geometry: function() {\n    return this._rects ? this._rects.frame : {};\n  },\n\n  rotation: function() {\n    return this._model ? this._model.rotation : 0;\n  },\n\n  visible: function() {\n    return this._model && this._model.opacity;\n  },\n\n  model: function() {\n    return this._model;\n  },\n\n  draw: function(chart, center) {\n    var me = this;\n    var ctx = chart.ctx;\n    var model = me._model;\n    var rects = me._rects;\n    var area;\n\n    if (!this.visible()) {\n      return;\n    }\n\n    ctx.save();\n\n    if (model.clip) {\n      area = model.area;\n      ctx.beginPath();\n      ctx.rect(\n        area.left,\n        area.top,\n        area.right - area.left,\n        area.bottom - area.top);\n      ctx.clip();\n    }\n\n    ctx.globalAlpha = utils.bound(0, model.opacity, 1);\n    ctx.translate(rasterize(center.x), rasterize(center.y));\n    ctx.rotate(model.rotation);\n\n    drawFrame(ctx, rects.frame, model);\n    drawText(ctx, model.lines, rects.text, model);\n\n    ctx.restore();\n  }\n});\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;  // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n  var cos = Math.cos(angle);\n  var sin = Math.sin(angle);\n  var cx = center.x;\n  var cy = center.y;\n\n  return {\n    x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n    y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n  };\n}\n\nfunction projected(points, axis) {\n  var min = MAX_INTEGER;\n  var max = MIN_INTEGER;\n  var origin = axis.origin;\n  var i, pt, vx, vy, dp;\n\n  for (i = 0; i < points.length; ++i) {\n    pt = points[i];\n    vx = pt.x - origin.x;\n    vy = pt.y - origin.y;\n    dp = axis.vx * vx + axis.vy * vy;\n    min = Math.min(min, dp);\n    max = Math.max(max, dp);\n  }\n\n  return {\n    min: min,\n    max: max\n  };\n}\n\nfunction toAxis(p0, p1) {\n  var vx = p1.x - p0.x;\n  var vy = p1.y - p0.y;\n  var ln = Math.sqrt(vx * vx + vy * vy);\n\n  return {\n    vx: (p1.x - p0.x) / ln,\n    vy: (p1.y - p0.y) / ln,\n    origin: p0,\n    ln: ln\n  };\n}\n\nvar HitBox = function() {\n  this._rotation = 0;\n  this._rect = {\n    x: 0,\n    y: 0,\n    w: 0,\n    h: 0\n  };\n};\n\nmerge(HitBox.prototype, {\n  center: function() {\n    var r = this._rect;\n    return {\n      x: r.x + r.w / 2,\n      y: r.y + r.h / 2\n    };\n  },\n\n  update: function(center, rect, rotation) {\n    this._rotation = rotation;\n    this._rect = {\n      x: rect.x + center.x,\n      y: rect.y + center.y,\n      w: rect.w,\n      h: rect.h\n    };\n  },\n\n  contains: function(point) {\n    var me = this;\n    var margin = 1;\n    var rect = me._rect;\n\n    point = rotated(point, me.center(), -me._rotation);\n\n    return !(point.x < rect.x - margin\n      || point.y < rect.y - margin\n      || point.x > rect.x + rect.w + margin * 2\n      || point.y > rect.y + rect.h + margin * 2);\n  },\n\n  // Separating Axis Theorem\n  // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n  intersects: function(other) {\n    var r0 = this._points();\n    var r1 = other._points();\n    var axes = [\n      toAxis(r0[0], r0[1]),\n      toAxis(r0[0], r0[3])\n    ];\n    var i, pr0, pr1;\n\n    if (this._rotation !== other._rotation) {\n      // Only separate with r1 axis if the rotation is different,\n      // else it's enough to separate r0 and r1 with r0 axis only!\n      axes.push(\n        toAxis(r1[0], r1[1]),\n        toAxis(r1[0], r1[3])\n      );\n    }\n\n    for (i = 0; i < axes.length; ++i) {\n      pr0 = projected(r0, axes[i]);\n      pr1 = projected(r1, axes[i]);\n\n      if (pr0.max < pr1.min || pr1.max < pr0.min) {\n        return false;\n      }\n    }\n\n    return true;\n  },\n\n  /**\n   * @private\n   */\n  _points: function() {\n    var me = this;\n    var rect = me._rect;\n    var angle = me._rotation;\n    var center = me.center();\n\n    return [\n      rotated({x: rect.x, y: rect.y}, center, angle),\n      rotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n      rotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n      rotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n    ];\n  }\n});\n\nfunction coordinates(el, model, geometry) {\n  var point = model.positioner(el, model);\n  var vx = point.vx;\n  var vy = point.vy;\n\n  if (!vx && !vy) {\n    // if aligned center, we don't want to offset the center point\n    return {x: point.x, y: point.y};\n  }\n\n  var w = geometry.w;\n  var h = geometry.h;\n\n  // take in account the label rotation\n  var rotation = model.rotation;\n  var dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n  var dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n  // scale the unit vector (vx, vy) to get at least dx or dy equal to\n  // w or h respectively (else we would calculate the distance to the\n  // ellipse inscribed in the bounding rect)\n  var vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n  dx *= vx * vs;\n  dy *= vy * vs;\n\n  // finally, include the explicit offset\n  dx += model.offset * vx;\n  dy += model.offset * vy;\n\n  return {\n    x: point.x + dx,\n    y: point.y + dy\n  };\n}\n\nfunction collide(labels, collider) {\n  var i, j, s0, s1;\n\n  // IMPORTANT Iterate in the reverse order since items at the end of the\n  // list have an higher weight/priority and thus should be less impacted\n  // by the overlapping strategy.\n\n  for (i = labels.length - 1; i >= 0; --i) {\n    s0 = labels[i].$layout;\n\n    for (j = i - 1; j >= 0 && s0._visible; --j) {\n      s1 = labels[j].$layout;\n\n      if (s1._visible && s0._box.intersects(s1._box)) {\n        collider(s0, s1);\n      }\n    }\n  }\n\n  return labels;\n}\n\nfunction compute(labels) {\n  var i, ilen, label, state, geometry, center, proxy;\n\n  // Initialize labels for overlap detection\n  for (i = 0, ilen = labels.length; i < ilen; ++i) {\n    label = labels[i];\n    state = label.$layout;\n\n    if (state._visible) {\n      // Chart.js 3 removed el._model in favor of getProps(), making harder to\n      // abstract reading values in positioners. Also, using string arrays to\n      // read values (i.e. var {a,b,c} = el.getProps([\"a\",\"b\",\"c\"])) would make\n      // positioners inefficient in the normal case (i.e. not the final values)\n      // and the code a bit ugly, so let's use a Proxy instead.\n      proxy = new Proxy(label._el, {get: (el, p) => el.getProps([p], true)[p]});\n\n      geometry = label.geometry();\n      center = coordinates(proxy, label.model(), geometry);\n      state._box.update(center, geometry, label.rotation());\n    }\n  }\n\n  // Auto hide overlapping labels\n  return collide(labels, function(s0, s1) {\n    var h0 = s0._hidable;\n    var h1 = s1._hidable;\n\n    if ((h0 && h1) || h1) {\n      s1._visible = false;\n    } else if (h0) {\n      s0._visible = false;\n    }\n  });\n}\n\nvar layout = {\n  prepare: function(datasets) {\n    var labels = [];\n    var i, j, ilen, jlen, label;\n\n    for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n      for (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n        label = datasets[i][j];\n        labels.push(label);\n        label.$layout = {\n          _box: new HitBox(),\n          _hidable: false,\n          _visible: true,\n          _set: i,\n          _idx: label._index\n        };\n      }\n    }\n\n    // TODO New `z` option: labels with a higher z-index are drawn\n    // of top of the ones with a lower index. Lowest z-index labels\n    // are also discarded first when hiding overlapping labels.\n    labels.sort(function(a, b) {\n      var sa = a.$layout;\n      var sb = b.$layout;\n\n      return sa._idx === sb._idx\n        ? sb._set - sa._set\n        : sb._idx - sa._idx;\n    });\n\n    this.update(labels);\n\n    return labels;\n  },\n\n  update: function(labels) {\n    var dirty = false;\n    var i, ilen, label, model, state;\n\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      label = labels[i];\n      model = label.model();\n      state = label.$layout;\n      state._hidable = model && model.display === 'auto';\n      state._visible = label.visible();\n      dirty |= state._hidable;\n    }\n\n    if (dirty) {\n      compute(labels);\n    }\n  },\n\n  lookup: function(labels, point) {\n    var i, state;\n\n    // IMPORTANT Iterate in the reverse order since items at the end of\n    // the list have an higher z-index, thus should be picked first.\n\n    for (i = labels.length - 1; i >= 0; --i) {\n      state = labels[i].$layout;\n\n      if (state && state._visible && state._box.contains(point)) {\n        return labels[i];\n      }\n    }\n\n    return null;\n  },\n\n  draw: function(chart, labels) {\n    var i, ilen, label, state, geometry, center;\n\n    for (i = 0, ilen = labels.length; i < ilen; ++i) {\n      label = labels[i];\n      state = label.$layout;\n\n      if (state._visible) {\n        geometry = label.geometry();\n        center = coordinates(label._el, label.model(), geometry);\n        state._box.update(center, geometry, label.rotation());\n        label.draw(chart, center);\n      }\n    }\n  }\n};\n\nvar formatter = function(value) {\n  if (isNullOrUndef(value)) {\n    return null;\n  }\n\n  var label = value;\n  var keys, klen, k;\n  if (isObject(value)) {\n    if (!isNullOrUndef(value.label)) {\n      label = value.label;\n    } else if (!isNullOrUndef(value.r)) {\n      label = value.r;\n    } else {\n      label = '';\n      keys = Object.keys(value);\n      for (k = 0, klen = keys.length; k < klen; ++k) {\n        label += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n      }\n    }\n  }\n\n  return '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n  align: 'center',\n  anchor: 'center',\n  backgroundColor: null,\n  borderColor: null,\n  borderRadius: 0,\n  borderWidth: 0,\n  clamp: false,\n  clip: false,\n  color: undefined,\n  display: true,\n  font: {\n    family: undefined,\n    lineHeight: 1.2,\n    size: undefined,\n    style: undefined,\n    weight: null\n  },\n  formatter: formatter,\n  labels: undefined,\n  listeners: {},\n  offset: 4,\n  opacity: 1,\n  padding: {\n    top: 4,\n    right: 4,\n    bottom: 4,\n    left: 4\n  },\n  rotation: 0,\n  textAlign: 'start',\n  textStrokeColor: undefined,\n  textStrokeWidth: 0,\n  textShadowBlur: 0,\n  textShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n  var override = dataset.datalabels;\n  var listeners = {};\n  var configs = [];\n  var labels, keys;\n\n  if (override === false) {\n    return null;\n  }\n  if (override === true) {\n    override = {};\n  }\n\n  options = merge({}, [options, override]);\n  labels = options.labels || {};\n  keys = Object.keys(labels);\n  delete options.labels;\n\n  if (keys.length) {\n    keys.forEach(function(key) {\n      if (labels[key]) {\n        configs.push(merge({}, [\n          options,\n          labels[key],\n          {_key: key}\n        ]));\n      }\n    });\n  } else {\n    // Default label if no \"named\" label defined.\n    configs.push(options);\n  }\n\n  // listeners: {<event-type>: {<label-key>: <fn>}}\n  listeners = configs.reduce(function(target, config) {\n    each(config.listeners || {}, function(fn, event) {\n      target[event] = target[event] || {};\n      target[event][config._key || DEFAULT_KEY] = fn;\n    });\n\n    delete config.listeners;\n    return target;\n  }, {});\n\n  return {\n    labels: configs,\n    listeners: listeners\n  };\n}\n\nfunction dispatchEvent(chart, listeners, label, event) {\n  if (!listeners) {\n    return;\n  }\n\n  var context = label.$context;\n  var groups = label.$groups;\n  var callback$1;\n\n  if (!listeners[groups._set]) {\n    return;\n  }\n\n  callback$1 = listeners[groups._set][groups._key];\n  if (!callback$1) {\n    return;\n  }\n\n  if (callback(callback$1, [context, event]) === true) {\n    // Users are allowed to tweak the given context by injecting values that can be\n    // used in scriptable options to display labels differently based on the current\n    // event (e.g. highlight an hovered label). That's why we update the label with\n    // the output context and schedule a new chart render by setting it dirty.\n    chart[EXPANDO_KEY]._dirty = true;\n    label.update(context);\n  }\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label, event) {\n  var enter, leave;\n\n  if (!previous && !label) {\n    return;\n  }\n\n  if (!previous) {\n    enter = true;\n  } else if (!label) {\n    leave = true;\n  } else if (previous !== label) {\n    leave = enter = true;\n  }\n\n  if (leave) {\n    dispatchEvent(chart, listeners.leave, previous, event);\n  }\n  if (enter) {\n    dispatchEvent(chart, listeners.enter, label, event);\n  }\n}\n\nfunction handleMoveEvents(chart, event) {\n  var expando = chart[EXPANDO_KEY];\n  var listeners = expando._listeners;\n  var previous, label;\n\n  if (!listeners.enter && !listeners.leave) {\n    return;\n  }\n\n  if (event.type === 'mousemove') {\n    label = layout.lookup(expando._labels, event);\n  } else if (event.type !== 'mouseout') {\n    return;\n  }\n\n  previous = expando._hovered;\n  expando._hovered = label;\n  dispatchMoveEvents(chart, listeners, previous, label, event);\n}\n\nfunction handleClickEvents(chart, event) {\n  var expando = chart[EXPANDO_KEY];\n  var handlers = expando._listeners.click;\n  var label = handlers && layout.lookup(expando._labels, event);\n  if (label) {\n    dispatchEvent(chart, handlers, label, event);\n  }\n}\n\nvar plugin = {\n  id: 'datalabels',\n\n  defaults: defaults,\n\n  beforeInit: function(chart) {\n    chart[EXPANDO_KEY] = {\n      _actives: []\n    };\n  },\n\n  beforeUpdate: function(chart) {\n    var expando = chart[EXPANDO_KEY];\n    expando._listened = false;\n    expando._listeners = {};     // {<event-type>: {<dataset-index>: {<label-key>: <fn>}}}\n    expando._datasets = [];      // per dataset labels: [Label[]]\n    expando._labels = [];        // layouted labels: Label[]\n  },\n\n  afterDatasetUpdate: function(chart, args, options) {\n    var datasetIndex = args.index;\n    var expando = chart[EXPANDO_KEY];\n    var labels = expando._datasets[datasetIndex] = [];\n    var visible = chart.isDatasetVisible(datasetIndex);\n    var dataset = chart.data.datasets[datasetIndex];\n    var config = configure(dataset, options);\n    var elements = args.meta.data || [];\n    var ctx = chart.ctx;\n    var i, j, ilen, jlen, cfg, key, el, label;\n\n    ctx.save();\n\n    for (i = 0, ilen = elements.length; i < ilen; ++i) {\n      el = elements[i];\n      el[EXPANDO_KEY] = [];\n\n      if (visible && el && chart.getDataVisibility(i) && !el.skip) {\n        for (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n          cfg = config.labels[j];\n          key = cfg._key;\n\n          label = new Label(cfg, ctx, el, i);\n          label.$groups = {\n            _set: datasetIndex,\n            _key: key || DEFAULT_KEY\n          };\n          label.$context = {\n            active: false,\n            chart: chart,\n            dataIndex: i,\n            dataset: dataset,\n            datasetIndex: datasetIndex\n          };\n\n          label.update(label.$context);\n          el[EXPANDO_KEY].push(label);\n          labels.push(label);\n        }\n      }\n    }\n\n    ctx.restore();\n\n    // Store listeners at the chart level and per event type to optimize\n    // cases where no listeners are registered for a specific event.\n    merge(expando._listeners, config.listeners, {\n      merger: function(event, target, source) {\n        target[event] = target[event] || {};\n        target[event][args.index] = source[event];\n        expando._listened = true;\n      }\n    });\n  },\n\n  afterUpdate: function(chart) {\n    chart[EXPANDO_KEY]._labels = layout.prepare(chart[EXPANDO_KEY]._datasets);\n  },\n\n  // Draw labels on top of all dataset elements\n  // https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n  // https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n  afterDatasetsDraw: function(chart) {\n    layout.draw(chart, chart[EXPANDO_KEY]._labels);\n  },\n\n  beforeEvent: function(chart, args) {\n    // If there is no listener registered for this chart, `listened` will be false,\n    // meaning we can immediately ignore the incoming event and avoid useless extra\n    // computation for users who don't implement label interactions.\n    if (chart[EXPANDO_KEY]._listened) {\n      var event = args.event;\n      switch (event.type) {\n      case 'mousemove':\n      case 'mouseout':\n        handleMoveEvents(chart, event);\n        break;\n      case 'click':\n        handleClickEvents(chart, event);\n        break;\n      }\n    }\n  },\n\n  afterEvent: function(chart) {\n    var expando = chart[EXPANDO_KEY];\n    var previous = expando._actives;\n    var actives = expando._actives = chart.getActiveElements();\n    var updates = utils.arrayDiff(previous, actives);\n    var i, ilen, j, jlen, update, label, labels;\n\n    for (i = 0, ilen = updates.length; i < ilen; ++i) {\n      update = updates[i];\n      if (update[1]) {\n        labels = update[0].element[EXPANDO_KEY] || [];\n        for (j = 0, jlen = labels.length; j < jlen; ++j) {\n          label = labels[j];\n          label.$context.active = (update[1] === 1);\n          label.update(label.$context);\n        }\n      }\n    }\n\n    if (expando._dirty || updates.length) {\n      layout.update(expando._labels);\n      chart.render();\n    }\n\n    delete expando._dirty;\n  }\n};\n\nexport { plugin as default };\n", "import * as Table from './table'\nimport * as AgGrid from './ag_grid'\n\nexport { Table }\nexport { AgGrid }\nexport { default as Tooltip } from './tooltip'\nexport { default as Drawer } from './drawer'\nexport { default as DropdownMenu } from './dropdown_menu'\nexport { default as Popover } from './popover'\nexport { default as initializeAgGrid } from './ag_grid'\n", "import * as ResizableTable from '@validide/resizable-table-columns'\nimport CollateralStore from './table/collateralStore'\nimport createSwapColumn from './table/swapColumns'\n\nexport { default as HideableColumns } from './table/hideableColumns'\nexport { default as CSVApp } from './table/csvApp'\n\nconst DEFAULT_COLUMN_WIDTH = 100\nconst DEFAULT_MAX_WIDTH = 500\nconst DEFAULT_INITIAL_WIDTH = 200\n\nwindow.resetTableConfig = function(tableId) {\n  try {\n    const userId = document.body.getAttribute('data-user-id') || 'default-user'\n\n    if (tableId) {\n      const possibleKeys = [\n        tableId,\n        `${userId}/${tableId}`,\n        `${userId}/1${tableId}`\n      ]\n\n      let keysRemoved = 0\n      possibleKeys.forEach(key => {\n        try {\n          window.localStorageObjectStore.remove(key)\n\n          localStorage.removeItem(key)\n\n          keysRemoved++\n        } catch (e) {\n        }\n      })\n\n      return keysRemoved\n    } else {\n      return 0\n    }\n  } catch (error) {\n    return 0\n  }\n}\n\nwindow.collateralTables = {\n  resetTableConfig,\n\n  listAllTableConfigs: function() {\n    try {\n      const configs = []\n\n      for (let i = 0; i < localStorage.length; i++) {\n        const key = localStorage.key(i)\n        try {\n          const value = localStorage.getItem(key)\n          if (value) {\n            try {\n              const parsed = JSON.parse(value)\n\n              const hasTableFormat = Object.values(parsed).some(\n                val => val && val.column && typeof val.index === 'number'\n              )\n\n              if (hasTableFormat) {\n                configs.push({\n                  key: key,\n                  source: 'localStorage',\n                  columnCount: Object.keys(parsed).length,\n                  data: parsed\n                })\n              }\n            } catch (e) {\n            }\n          }\n        } catch (e) {\n        }\n      }\n\n      if (window.localStorageObjectStore) {\n        try {\n          const storeKeys = window.localStorageObjectStore.keys()\n          storeKeys.forEach(key => {\n            try {\n              const value = window.localStorageObjectStore.get(key)\n              if (value) {\n                const hasTableFormat = Object.values(value).some(\n                  val => val && val.column && typeof val.index === 'number'\n                )\n\n                if (hasTableFormat) {\n                  const existing = configs.find(c => c.key === key && JSON.stringify(c.data) === JSON.stringify(value))\n\n                  if (!existing) {\n                    configs.push({\n                      key: key,\n                      source: 'localStorageObjectStore',\n                      columnCount: Object.keys(value).length,\n                      data: value\n                    })\n                  }\n                }\n              }\n            } catch (e) {\n            }\n          })\n        } catch (e) {\n        }\n      }\n\n      return configs\n    } catch (error) {\n      return []\n    }\n  },\n\n  applyTableConfig: function(tableId, configKey) {\n    try {\n      if (!tableId) {\n        return false\n      }\n\n      const table = document.getElementById(tableId)\n      if (!table) {\n        return false\n      }\n\n      const keyToUse = configKey || tableId\n\n      let config = null\n\n      if (window.localStorageObjectStore) {\n        config = window.localStorageObjectStore.get(keyToUse)\n      }\n\n      if (!config) {\n        try {\n          const storageData = localStorage.getItem(keyToUse)\n          if (storageData) {\n            config = JSON.parse(storageData)\n          }\n        } catch (e) {\n        }\n      }\n\n      if (!config) {\n        return false\n      }\n\n      const orderColumns = Object.fromEntries(\n        Object.entries(config)\n          .map(([colName, colData]) => [colName, colData])\n          .sort((a, b) => a[1].index - b[1].index)\n      )\n\n      const event = new CustomEvent('force-column-order', {\n        bubbles: true,\n        detail: { config: orderColumns, forceApply: true }\n      })\n\n      table.dispatchEvent(event)\n\n      return true\n    } catch (error) {\n      return false\n    }\n  },\n\n  debugTable: function(tableId) {\n    try {\n      if (!tableId) {\n        return false\n      }\n\n      const table = document.getElementById(tableId)\n      if (!table) {\n        return false\n      }\n\n      const events = [\n        'columns:reordered',\n        'table:initialized',\n        'hideable-columns:change',\n        'force-column-order'\n      ]\n\n      events.forEach(eventName => {\n        table.addEventListener(eventName, (event) => {\n        })\n      })\n\n      return true\n    } catch (error) {\n      return false\n    }\n  }\n}\n\nexport default function initializeTable(table, options = {}) {\n  if (!table) return\n\n  const urlParams = new URLSearchParams(window.location.search)\n  const queueElement = document.querySelector('[data-queue-id]')\n\n  options.queueId = options.queueId ||\n    urlParams.get('q[queue_id]') ||\n    table.closest('[data-queue-id]')?.getAttribute('data-queue-id') ||\n    queueElement?.getAttribute('data-queue-id') || null\n\n  if (table.validide_rtc_data_object) {\n    return table.validide_rtc_data_object ?\n      { table, resizableTable: table.validide_rtc_data_object } :\n      { table, resizableTable: null }\n  }\n\n  if (!table.id) {\n    table.id = \"table-\" + Math.random().toString(36).substring(2, 15)\n  }\n\n  if (!table.getAttribute('data-rtc-resizable-table')) {\n    table.setAttribute('data-rtc-resizable-table', table.id)\n  }\n\n  const store = new CollateralStore()\n\n  const tableId = table.getAttribute('data-rtc-resizable-table')\n  const savedData = store.get(`rtc/${tableId}`)\n\n  if (!savedData || !savedData.columns) {\n    applyInitialColumnWidths(table)\n  }\n\n  const resizableTable = new ResizableTable.ResizableTableColumns(table, {\n    maxInitialWidthHint: DEFAULT_INITIAL_WIDTH,\n    minWidth: DEFAULT_COLUMN_WIDTH,\n    maxWidth: DEFAULT_MAX_WIDTH,\n    store: store,\n  })\n\n  const swapColumnApi = createSwapColumn(table, options)\n\n  if (resizableTable) {\n    const saveColumnWidths = () => {\n      if (resizableTable && typeof resizableTable.saveColumnWidths === 'function') {\n        resizableTable.saveColumnWidths()\n      }\n    }\n\n    table.addEventListener('mouseup', saveColumnWidths)\n    table.addEventListener('touchend', saveColumnWidths)\n\n    let resizeTimeout\n    let observerEnabled = false\n    const observer = new MutationObserver((mutations) => {\n      if (!observerEnabled) return\n\n      clearTimeout(resizeTimeout)\n      resizeTimeout = setTimeout(saveColumnWidths, 500)\n    })\n\n    const headers = table.querySelectorAll('th')\n    headers.forEach(header => {\n      observer.observe(header, {\n        attributes: true,\n        attributeFilter: ['style']\n      })\n    })\n\n    setTimeout(() => {\n      observerEnabled = true\n    }, 1000)\n  }\n\n  setTimeout(() => {\n    if (swapColumnApi && typeof swapColumnApi.saveColumnOrder === 'function') {\n      swapColumnApi.saveColumnOrder()\n    }\n\n    table.dispatchEvent(new CustomEvent('table:initialized', {\n      bubbles: true,\n      detail: { tableId: table.id, tableKey: swapColumnApi?.getTableKey?.() }\n    }))\n  }, 500)\n\n  const periodicSaveInterval = 5000\n  const saveTimer = setInterval(() => {\n    if (document.body.contains(table)) {\n      if (swapColumnApi && typeof swapColumnApi.saveColumnOrder === 'function') {\n        swapColumnApi.saveColumnOrder()\n      }\n    } else {\n      clearInterval(saveTimer)\n    }\n  }, periodicSaveInterval)\n\n  table.addEventListener('columns:reordered', function(event) {\n    if (!resizableTable) return\n\n    const wrapper = table.closest('.rtc-wrapper')\n    if (wrapper) {\n      adjustTableWidth(table, wrapper, resizableTable)\n\n      setTimeout(() => {\n        try {\n          if (resizableTable && resizableTable.syncHandleWidths) {\n            resizableTable.syncHandleWidths()\n          }\n\n          if (swapColumnApi && typeof swapColumnApi.saveColumnOrder === 'function') {\n            swapColumnApi.saveColumnOrder()\n          }\n        } catch (error) {\n        }\n      }, 100)\n    }\n  })\n\n  table.addEventListener('hideable-columns:change', function (event) {\n    const table = event.target\n    const wrapper = table.closest('.rtc-wrapper')\n\n    if (wrapper) {\n      adjustTableWidth(table, wrapper, resizableTable)\n\n      setTimeout(() => {\n        if (swapColumnApi && typeof swapColumnApi.saveColumnOrder === 'function') {\n          swapColumnApi.saveColumnOrder()\n        }\n      }, 100)\n    }\n  })\n\n  window.addEventListener('beforeunload', function() {\n    if (swapColumnApi && typeof swapColumnApi.saveColumnOrder === 'function') {\n      swapColumnApi.saveColumnOrder()\n    }\n  })\n\n  return { table, resizableTable, swapColumnApi }\n}\n\nfunction applyInitialColumnWidths(table) {\n  if (!table) return\n\n  try {\n    const headers = Array.from(table.querySelectorAll('th'))\n\n    let columnWidth = DEFAULT_COLUMN_WIDTH\n    const tableWidth = table.clientWidth\n\n    if (tableWidth && headers.length > 0) {\n      const calculatedWidth = Math.floor(tableWidth / headers.length)\n      columnWidth = Math.max(calculatedWidth, DEFAULT_COLUMN_WIDTH)\n    }\n\n    headers.forEach(header => {\n      if (!header.style.width || parseInt(header.style.width) < DEFAULT_COLUMN_WIDTH) {\n        if (header.dataset.name === 'actions') {\n          header.style.width = '40px'\n        } else {\n          header.style.width = `${columnWidth}px`\n        }\n      }\n    })\n\n    if (tableWidth < headers.length * columnWidth) {\n      table.style.width = `${headers.length * columnWidth}px`\n    }\n  } catch (error) {\n  }\n}\n\nfunction adjustTableWidth(table, wrapper, resizableTable) {\n  try {\n    const columnsWidth = Array.from(table.querySelectorAll('th'))\n      .filter((el) => el.style.display !== 'none')\n      .reduce((acc, current) => {\n        let width = 0\n        try {\n          width = parseInt(current.style.width || 0)\n          if (isNaN(width) || width <= 0) width = DEFAULT_COLUMN_WIDTH\n        } catch (e) {\n          width = DEFAULT_COLUMN_WIDTH\n        }\n        return acc + width\n      }, 0)\n\n    const wrapperWidth = wrapper.clientWidth\n\n    const tableWidth = Math.max(columnsWidth, wrapperWidth)\n\n    table.style.width = `${tableWidth}px`\n\n    setTimeout(() => {\n      if (resizableTable && resizableTable.syncHandleWidths) {\n        resizableTable.syncHandleWidths()\n      }\n    }, 100)\n  } catch (error) {\n  }\n}", "export interface IClassesConstants {\n  table: string;\n  wrapper: string;\n  handleContainer: string;\n  handle: string;\n  tableResizing: string;\n  columnResizing: string;\n}\n\nexport interface IAttributesConstants {\n  dataResizable: string;\n  dataResizableTable: string;\n}\n\nexport interface IDataConstants {\n  resizable: string;\n  resizableTable: string;\n}\n\nexport interface IEvents {\n  pointerDown: Array<string>;\n  pointerMove: Array<string>;\n  pointerUp: Array<string>;\n  windowResize: Array<string>;\n  eventResizeStart: string;\n  eventResize: string;\n  eventResizeStop: string;\n}\n\nexport class ResizableConstants {\n  static dataPropertyName: string = 'validide_rtc_data_object';\n  static classes: IClassesConstants = {\n    table: 'rtc-table',\n    wrapper: 'rtc-wrapper',\n    handleContainer: 'rtc-handle-container',\n    handle: 'rtc-handle',\n    tableResizing:'rtc-table-resizing',\n    columnResizing:'rtc-column-resizing',\n  };\n  static attributes: IAttributesConstants = {\n    dataResizable: 'data-rtc-resizable',\n    dataResizableTable: 'data-rtc-resizable-table'\n  };\n  static data: IDataConstants = {\n    resizable: 'rtcResizable',\n    resizableTable: 'rtcResizableTable'\n  };\n  static events: IEvents = {\n    pointerDown: ['mousedown', 'touchstart'],\n    pointerMove: ['mousemove', 'touchmove'],\n    pointerUp: ['mouseup', 'touchend'],\n    windowResize: ['resize'],\n    eventResizeStart: 'eventResizeStart.rtc',\n    eventResize: 'eventResize.rtc',\n    eventResizeStop: 'eventResizeStop.rtc'\n  }\n}\n", "export class WidthsData {\n  column: number = 0;\n  table: number = 0;\n}\n\nexport class PointerData {\n  x: number | null = null;\n  isDoubleClick: boolean = false;\n}\n\nexport class ResizableEventData {\n  column: HTMLTableCellElement;\n  dragHandler: HTMLDivElement;\n  pointer: PointerData = new PointerData();\n  originalWidths: WidthsData = new WidthsData();\n  newWidths: WidthsData = new WidthsData();\n\n  constructor(column: HTMLTableCellElement, dragHandler: HTMLDivElement) {\n      this.column = column;\n      this.dragHandler = dragHandler;\n  }\n}\n", "export interface IIndexedCollection<T> {\n  [name: string]: T;\n}\n\nexport class Utilities {\n  static regexEscapeRegex: RegExp = /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;\n  static kebabCaseRegex: RegExp = /(\\-\\w)/g;\n  static trueRegex: RegExp = /^true$/i;\n  static falseRegex: RegExp = /^false$/i;\n  static onlyWhiteSpace: RegExp = /^\\s$/;\n  static notEmptyOrWhiteSpace: RegExp = /\\S/;\n\n  static kebabCaseToCamelCase(str: string) {\n    return str.replace(Utilities.kebabCaseRegex, function (m) { return m[1].toUpperCase(); });\n  }\n\n  static parseStringToType(str: string): any {\n    if (str.length == 0 || Utilities.onlyWhiteSpace.test(str))\n      return str;\n\n    if (Utilities.trueRegex.test(str))\n      return true;\n\n    if (Utilities.falseRegex.test(str))\n      return false;\n\n    if (Utilities.notEmptyOrWhiteSpace.test(str)) {\n      const temp = +str;\n      if (!isNaN(temp))\n        return temp;\n    }\n    return str;\n  }\n}\n", "import { IIndexedCollection, Utilities } from './utilities'\n\nexport class UtilitiesDOM {\n  static getDataAttributesValues(el: HTMLElement): object | null {\n    if (!el)\n      return null;\n\n    const returnValue: IIndexedCollection<any> = {};\n    if (el.dataset) {\n      for (let prop in el.dataset) {\n        if (el.dataset.hasOwnProperty(prop)) {\n          returnValue[prop] = Utilities.parseStringToType(el.dataset[prop] || '');\n        }\n      }\n    }\n    else {\n      for (let i = 0; i < el.attributes.length; i++) {\n        if (!/^data\\-/.test(el.attributes[i].name))\n          continue;\n\n        const name = Utilities.kebabCaseToCamelCase(el.attributes[i].name.replace('data-', ''));\n        returnValue[name] = Utilities.parseStringToType(el.attributes[i].value);\n      }\n    }\n\n    return returnValue;\n  }\n}\n", "import { UtilitiesDOM } from './utilities-dom';\n\nexport interface IStore {\n  get(id: string): any;\n  set(id: string, data: any): void\n}\n\nexport class ResizableOptions {\n  resizeFromBody: boolean;\n  minWidth: null | number;\n  maxWidth: null | number;\n  maxInitialWidthHint: null | number;\n  doubleClickDelay: number;\n  store: IStore | null;\n\n  constructor(options: null | object = null, element: null | HTMLElement = null) {\n    this.resizeFromBody = true;\n    this.minWidth = 40;\n    this.maxWidth = null;\n    this.doubleClickDelay = 500;\n    this.maxInitialWidthHint = null;\n    this.store = null;\n\n    this.overrideValues(options);\n    this.overrideValuesFromElement(element);\n  }\n\n\n  overrideValues(options: null | object = null): void {\n    if (!options)\n      return;\n\n    for (let prop in options) {\n      if (this.hasOwnProperty(prop)) {\n        (this as any)[prop] = (options as any)[prop];\n      }\n    }\n  }\n\n  overrideValuesFromElement(element: null | HTMLElement = null): void {\n    if (!element)\n      return;\n\n    const elementOptions = UtilitiesDOM.getDataAttributesValues(element);\n    this.overrideValues(elementOptions)\n  }\n}\n", "import { ResizableConstants } from './resizable-constants';\nimport { ResizableEventData } from './resizable-event-data';\nimport { ResizableOptions } from './resizable-options';\n\ninterface IHeaderDetails<T> {\n  el: HTMLElement,\n  detail: T;\n}\n\ninterface IIndexedCollection<T> {\n  [name: string]: T;\n}\n\nexport class ResizableTableColumns {\n  static instancesCount: number = 0;\n  static windowResizeHandlerRef: null | ((event: Event) => void) = null;\n\n  table: HTMLTableElement;\n  options: ResizableOptions;\n\n  id: number;\n  wrapper: HTMLDivElement | null;\n  ownerDocument: Document;\n  tableHeaders: HTMLTableHeaderCellElement[];\n  dragHandlesContainer: HTMLDivElement | null;\n  originalWidths: IHeaderDetails<string>[];\n  eventData: ResizableEventData | null;\n  lastPointerDown: number;\n  onPointerDownRef: any;\n  onPointerMoveRef: any;\n  onPointerUpRef: any;\n\n\n  constructor(table: HTMLTableElement, options: ResizableOptions | null) {\n    if (typeof table !== 'object' || table === null || (<object>table).toString() !== '[object HTMLTableElement]')\n      throw 'Invalid argument: \"table\".\\nResizableTableColumns requires that the table element is a not null HTMLTableElement object!';\n\n    if (typeof (table as any)[ResizableConstants.dataPropertyName] !== 'undefined')\n      throw `Existing \"${ResizableConstants.dataPropertyName}\" property.\\nTable element already has a '${ResizableConstants.dataPropertyName}' attached object!`;\n\n    this.id = ResizableTableColumns.getInstanceId();\n    this.table = table;\n    this.options = new ResizableOptions(options, table);\n\n    this.wrapper = null;\n    this.ownerDocument = table.ownerDocument;\n    this.tableHeaders = [];\n    this.dragHandlesContainer = null;\n    this.originalWidths = [];\n    this.eventData = null;\n    this.lastPointerDown = 0;\n\n    this.init();\n\n    (this.table as any)[ResizableConstants.dataPropertyName] = this;\n  }\n\n  init() {\n    this.validateMarkup();\n    this.createHandlerReferences();\n    this.wrapTable();\n    this.assignTableHeaders();\n    this.storeOriginalWidths();\n    this.setHeaderWidths();\n    this.createDragHandles();\n    this.restoreColumnWidths();\n    this.checkTableWidth();\n    this.syncHandleWidths();\n    this.registerWindowResizeHandler();\n  }\n\n  dispose() {\n    this.destroyDragHandles();\n    this.restoreOriginalWidths();\n    this.unwrapTable();\n    this.onPointerDownRef = null;\n    this.onPointerMoveRef = null;\n    this.onPointerUpRef = null;\n    (this.table as any)[ResizableConstants.dataPropertyName] = void (0);\n  }\n\n  validateMarkup(): void {\n    let theadCount = 0;\n    let tbodyCount = 0;\n    let thead: ChildNode | null = null;\n    for (let index = 0; index < this.table.childNodes.length; index++) {\n      const element = this.table.childNodes[index];\n      if (element.nodeName === 'THEAD') {\n        theadCount++;\n        thead = element;\n      }\n      else if (element.nodeName === 'TBODY') {\n        tbodyCount++;\n      }\n    }\n\n    if (thead === null || theadCount !== 1)\n      throw `Markup validation: thead count.\\nResizableTableColumns requires that the table element has one(1) table head element. Current count: ${theadCount}`;\n\n    if (tbodyCount !== 1)\n      throw `Markup validation: tbody count.\\nResizableTableColumns requires that the table element has one(1) table body element. Current count: ${tbodyCount}`;\n\n    let theadRowCount = 0;\n    let firstRow: ChildNode | null = null;\n    for (let index = 0; index < thead.childNodes.length; index++) {\n      const element = thead.childNodes[index];\n      if (element.nodeName === 'TR') {\n        theadRowCount++;\n        if (firstRow === null) {\n          firstRow = element;\n        }\n      }\n    }\n\n    if (firstRow === null || theadRowCount < 1)\n      throw `Markup validation: thead row count.\\nResizableTableColumns requires that the table head element has at least one(1) table row element. Current count: ${theadRowCount}`;\n\n    let headerCellsCount = 0;\n    let invalidHeaderCellsCount = 0;\n    for (let index = 0; index < firstRow.childNodes.length; index++) {\n      const element = firstRow.childNodes[index];\n      if (element.nodeName === 'TH') {\n        headerCellsCount++;\n      } else if (element.nodeName === 'TD') {\n        invalidHeaderCellsCount++;\n      }\n    }\n\n    if (headerCellsCount < 1)\n      throw `Markup validation: thead first row cells count.\\nResizableTableColumns requires that the table head's first row element has at least one(1) table header cell element. Current count: ${headerCellsCount}`;\n\n    if (invalidHeaderCellsCount !== 0)\n      throw `Markup validation: thead first row invalid.\\nResizableTableColumns requires that the table head's first row element has no(0) table cell(TD) elements. Current count: ${invalidHeaderCellsCount}`;\n  }\n\n  wrapTable() {\n    if (this.wrapper)\n      return;\n\n    this.wrapper = this.ownerDocument.createElement('div');\n    this.wrapper.classList.add(ResizableConstants.classes.wrapper);\n\n    const tableOriginalParent = this.table.parentNode as Node;\n    tableOriginalParent.insertBefore(this.wrapper, this.table);\n    tableOriginalParent.removeChild(this.table);\n    this.wrapper.appendChild(this.table);\n    this.table.classList.add(ResizableConstants.classes.table);\n  }\n\n  unwrapTable() {\n    this.table.classList.remove(ResizableConstants.classes.table);\n    if (!this.wrapper)\n      return;\n\n    const tableOriginalParent = this.wrapper.parentNode as Node;\n    tableOriginalParent.insertBefore(this.table, this.wrapper);\n    tableOriginalParent.removeChild(this.wrapper);\n    this.wrapper = null;\n  }\n\n  assignTableHeaders() {\n    let tableHeader;\n    let firstTableRow;\n    for (let index = 0; index < this.table.childNodes.length; index++) {\n      const element = this.table.childNodes[index];\n      if (element.nodeName === 'THEAD') {\n        tableHeader = element;\n        break;\n      }\n    }\n\n    if (!tableHeader)\n      return;\n\n    for (let index = 0; index < tableHeader.childNodes.length; index++) {\n      const element = tableHeader.childNodes[index];\n      if (element.nodeName === 'TR') {\n        firstTableRow = element;\n        break;\n      }\n    }\n\n    if (!firstTableRow)\n      return;\n\n\n    for (let index = 0; index < firstTableRow.childNodes.length; index++) {\n      const element = firstTableRow.childNodes[index];\n      if (element.nodeName === 'TH') {\n        this.tableHeaders.push(element as HTMLTableHeaderCellElement);\n      }\n    }\n  }\n\n  storeOriginalWidths() {\n    this.tableHeaders\n      .forEach(el => {\n        this.originalWidths.push({\n          el: el,\n          detail: el.style.width\n        });\n      });\n    this.originalWidths.push({\n      el: this.table,\n      detail: this.table.style.width\n    });\n  }\n\n  restoreOriginalWidths() {\n    this.originalWidths\n      .forEach(itm => {\n        itm.el.style.width = itm.detail;\n      });\n  }\n\n  setHeaderWidths() {\n    this.tableHeaders\n      .forEach(el => {\n        const width = el.offsetWidth;\n        let constrainedWidth = this.constrainWidth(el, width);\n        if (typeof this.options.maxInitialWidthHint === 'number') {\n          constrainedWidth = Math.min(constrainedWidth, this.options.maxInitialWidthHint);\n        }\n        this.updateWidth(el, constrainedWidth, true, false);\n      });\n  }\n\n  constrainWidth(el: HTMLElement, width: number): number {\n    let result: number = width;\n    result = Math.max(result, this.options.minWidth || -Infinity);\n    result = Math.min(result, this.options.maxWidth || +Infinity);\n    return result;\n  }\n\n  createDragHandles() {\n    if (this.dragHandlesContainer != null)\n      throw 'Drag handlers already created. Call <destroyDragHandles> if you wish to recreate them';\n\n\n    this.dragHandlesContainer = this.ownerDocument.createElement('div');\n    this.wrapper?.insertBefore(this.dragHandlesContainer, this.table);\n    this.dragHandlesContainer.classList.add(ResizableConstants.classes.handleContainer);\n\n    this.getResizableHeaders()\n      .forEach(() => {\n        const handler = this.ownerDocument.createElement('div');\n        handler.classList.add(ResizableConstants.classes.handle);\n        this.dragHandlesContainer?.appendChild(handler);\n      });\n\n    ResizableConstants.events.pointerDown\n      .forEach((evt, evtIdx) => {\n        this.dragHandlesContainer?.addEventListener(evt, this.onPointerDownRef, false);\n      });\n  }\n\n  destroyDragHandles() {\n    if (this.dragHandlesContainer !== null) {\n      ResizableConstants.events.pointerDown\n        .forEach((evt, evtIdx) => {\n          this.dragHandlesContainer?.removeEventListener(evt, this.onPointerDownRef, false);\n        });\n      this.dragHandlesContainer?.parentElement?.removeChild(this.dragHandlesContainer);\n    }\n  }\n\n  getDragHandlers(): Array<HTMLDivElement> {\n    const nodes = this.dragHandlesContainer == null\n      ? null\n      : this.dragHandlesContainer.querySelectorAll(`.${ResizableConstants.classes.handle}`);\n\n    return nodes\n      ? Array.prototype.slice.call(nodes).filter((el) => { return el.nodeName === 'DIV' })\n      : new Array<HTMLDivElement>();\n  }\n\n  restoreColumnWidths() {\n    if (!this.options.store)\n      return;\n\n    const tableId = ResizableTableColumns.generateTableId(this.table);\n    if (tableId.length === 0)\n      return;\n\n    const data = this.options.store.get(tableId);\n    if (!data)\n      return;\n\n    this.getResizableHeaders()\n      .forEach(el => {\n        const width = data.columns[ResizableTableColumns.generateColumnId(el)]\n        if (typeof width !== 'undefined') {\n          ResizableTableColumns.setWidth(el, width);\n        }\n      });\n\n    if (typeof data.table !== 'undefined') {\n      ResizableTableColumns.setWidth(this.table, data.table);\n    }\n  }\n\n  checkTableWidth() {\n    let wrapperWidth = (this.wrapper as HTMLElement).clientWidth;\n    let tableWidth = this.table.offsetWidth;\n    let difference = wrapperWidth - tableWidth;\n    if (difference <= 0)\n      return;\n\n    let resizableWidth = 0;\n    let addedWidth = 0;\n    let headersDetails: IHeaderDetails<number>[] = [];\n\n    this.tableHeaders\n      .forEach((el, idx) => {\n        if (el.hasAttribute(ResizableConstants.attributes.dataResizable)) {\n          const detail: IHeaderDetails<number> = {\n            el: el,\n            detail: el.offsetWidth\n          };\n          headersDetails.push(detail);\n          resizableWidth += detail.detail;\n        }\n      });\n\n    let leftToAdd = 0;\n    let lastResizableCell: HTMLElement | null = null;\n    let currentDetail: IHeaderDetails<number> | undefined;\n    while ((currentDetail = headersDetails.shift() as IHeaderDetails<number>)) {\n      leftToAdd = difference - addedWidth;\n\n      lastResizableCell = currentDetail.el;\n      let extraWidth = Math.floor((currentDetail.detail / resizableWidth) * difference);\n      extraWidth = Math.min(extraWidth, leftToAdd);\n      const newWidth = this.updateWidth(currentDetail.el, currentDetail.detail + extraWidth, false, true);\n      addedWidth += (newWidth - currentDetail.detail);\n\n      if (addedWidth >= difference)\n        break;\n    }\n\n    leftToAdd = difference - addedWidth;\n    if (leftToAdd > 0) {\n      const lastCell = (headersDetails[0]?.el) || lastResizableCell || this.tableHeaders[this.tableHeaders.length - 1];\n      const lastCellWidth = lastCell.offsetWidth;\n      this.updateWidth(lastCell, lastCellWidth, true, true);\n    }\n    ResizableTableColumns.setWidth(this.table, wrapperWidth);\n  }\n\n  syncHandleWidths() {\n    const tableWidth = this.table.clientWidth;\n    ResizableTableColumns.setWidth(this.dragHandlesContainer as HTMLDivElement, tableWidth);\n    (this.dragHandlesContainer as HTMLDivElement).style.minWidth = `${tableWidth}px`;\n\n    const headers = this.getResizableHeaders();\n    this.getDragHandlers()\n      .forEach((el, idx) => {\n        const height = ((this.options.resizeFromBody ? this.table : this.table.tHead) as HTMLElement).clientHeight;\n\n        if (idx < headers.length) {\n          const th = headers[idx];\n          let left = th.offsetWidth;\n          left += ResizableTableColumns.getOffset(th).left;\n          left -= ResizableTableColumns.getOffset(this.dragHandlesContainer as HTMLElement).left;\n          el.style.left = `${left}px`;\n          el.style.height = `${height}px`;\n        }\n      });\n  }\n\n  getResizableHeaders(): HTMLTableCellElement[] {\n    return this.tableHeaders\n      .filter((el, idx) => {\n        return el.hasAttribute(ResizableConstants.attributes.dataResizable);\n      });\n  }\n\n  handlePointerDown(event: Event): void {\n    this.handlePointerUp();\n\n    const target = event ? event.target as HTMLElement : null;\n    if (target == null)\n      return;\n\n    if (target.nodeName !== 'DIV' || !target.classList.contains(ResizableConstants.classes.handle))\n      return;\n\n    if (typeof (<any>event).button === 'number' && (<any>event).button !== 0)\n      return; // this is not a left click\n\n    const dragHandler = <HTMLDivElement>target;\n    const gripIndex = this.getDragHandlers().indexOf(dragHandler);\n    const resizableHeaders = this.getResizableHeaders();\n    if (gripIndex >= resizableHeaders.length)\n      return;\n\n    const millisecondsNow = (new Date()).getTime();\n    const isDoubleClick = (millisecondsNow - this.lastPointerDown) < this.options.doubleClickDelay;\n    const column = resizableHeaders[gripIndex];\n    const columnWidth = column.offsetWidth;\n\n    const widths = {\n      column: columnWidth,\n      table: this.table.offsetWidth\n    };\n    const eventData: ResizableEventData = new ResizableEventData(column, dragHandler);\n    eventData.pointer = {\n      x: ResizableTableColumns.getPointerX(event),\n      isDoubleClick: isDoubleClick\n    };\n    eventData.originalWidths = widths;\n    eventData.newWidths = widths;\n\n    this.detachHandlers(); //make sure we do not have extra handlers\n    this.attachHandlers();\n\n    this.table.classList.add(ResizableConstants.classes.tableResizing);\n    (this.wrapper as HTMLDivElement).classList.add(ResizableConstants.classes.tableResizing);\n    dragHandler.classList.add(ResizableConstants.classes.columnResizing);\n    column.classList.add(ResizableConstants.classes.columnResizing);\n\n    this.lastPointerDown = millisecondsNow;\n    this.eventData = eventData;\n\n    var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResizeStart, {\n      detail: {\n        column: column,\n        columnWidth: columnWidth,\n        table: this.table,\n        tableWidth: this.table.clientWidth\n      }\n    });\n    this.table.dispatchEvent(eventToDispatch);\n    event.preventDefault();\n  }\n\n  handlePointerMove(event: Event): void {\n    if (!this.eventData || !event)\n      return;\n\n    let difference = (ResizableTableColumns.getPointerX(event) || 0) - (this.eventData.pointer.x || 0);\n    if (difference === 0) {\n      return;\n    }\n\n    const tableWidth = this.eventData.originalWidths.table + difference;\n    const columnWidth = this.constrainWidth(\n      this.eventData.column,\n      this.eventData.originalWidths.column + difference\n    );\n    ResizableTableColumns.setWidth(this.table, tableWidth);\n    ResizableTableColumns.setWidth(this.eventData.column, columnWidth);\n\n    this.eventData.newWidths = {\n      column: columnWidth,\n      table: tableWidth\n    };\n\n    var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, {\n      detail: {\n        column: this.eventData.column,\n        columnWidth: columnWidth,\n        table: this.table,\n        tableWidth: tableWidth\n      }\n    });\n    this.table.dispatchEvent(eventToDispatch);\n  }\n\n  handlePointerUp(): void {\n    this.detachHandlers();\n\n    if (!this.eventData)\n      return;\n\n    if (this.eventData.pointer.isDoubleClick) {\n      this.handleDoubleClick()\n    }\n\n    this.table.classList.remove(ResizableConstants.classes.tableResizing);\n    (this.wrapper as HTMLDivElement).classList.remove(ResizableConstants.classes.tableResizing);\n    this.eventData.dragHandler.classList.remove(ResizableConstants.classes.columnResizing);\n    this.eventData.column.classList.remove(ResizableConstants.classes.columnResizing);\n\n    this.checkTableWidth();\n    this.syncHandleWidths();\n    this.refreshWrapperStyle();\n    this.saveColumnWidths();\n\n    const widths = this.eventData.newWidths || this.eventData.originalWidths;\n    var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResizeStop, {\n      detail: {\n        column: this.eventData.column,\n        columnWidth: widths.column,\n        table: this.table,\n        tableWidth: widths.table\n      }\n    });\n    this.table.dispatchEvent(eventToDispatch);\n\n    this.eventData = null;\n  }\n\n  handleDoubleClick(): void {\n    if (!this.eventData || !this.eventData.column)\n      return;\n\n    const column = this.eventData.column;\n    const colIndex = this.tableHeaders.indexOf(column);\n\n    let maxWidth = 0;\n    let indicesToSkip: number[] = [];\n    this.tableHeaders\n      .forEach((el, idx) => {\n        if (!el.hasAttribute(ResizableConstants.attributes.dataResizable)) {\n          indicesToSkip.push(idx);\n        }\n      });\n\n    const span = this.ownerDocument.createElement('span');\n    span.style.position = 'absolute';\n    span.style.left = '-99999px';\n    span.style.top = '-99999px';\n    span.style.visibility = 'hidden';\n    this.ownerDocument.body.appendChild(span);\n\n\n    const rows = this.table.querySelectorAll('tr');\n    for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n      const element = rows[rowIndex];\n      const cells = element.querySelectorAll('td, th');\n      let currentIndex = 0;\n\n      for (var cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n        const cell = cells[cellIndex];\n        let colSpan = 1;\n        if (cell.hasAttribute('colspan')) {\n          const colSpanString = cell.getAttribute('colspan') || '1';\n          const parsed = parseInt(colSpanString);\n          if (!isNaN(parsed)) {\n            colSpan = parsed;\n          } else {\n            colSpan = 1;\n          }\n        }\n\n        if (indicesToSkip.indexOf(cellIndex) === -1\n          && colSpan === 1\n          && currentIndex === colIndex) {\n          maxWidth = Math.max(maxWidth, ResizableTableColumns.getTextWidth(<HTMLElement>cell, span))\n          break;\n        }\n\n        currentIndex += colSpan;\n      }\n    }\n\n\n    this.ownerDocument.body.removeChild(span);\n\n    let difference = maxWidth - column.offsetWidth;\n    if (difference === 0) {\n      return;\n    }\n\n    const tableWidth = this.eventData.originalWidths.table + difference;\n    const columnWidth = this.constrainWidth(this.eventData.column, this.eventData.originalWidths.column + difference);\n    ResizableTableColumns.setWidth(this.table, tableWidth);\n    ResizableTableColumns.setWidth(this.eventData.column, columnWidth);\n\n    this.eventData.newWidths = {\n      column: columnWidth,\n      table: tableWidth,\n    };\n    var eventToDispatch = new CustomEvent(ResizableConstants.events.eventResize, {\n      detail: {\n        column: this.eventData.column,\n        columnWidth: columnWidth,\n        table: this.table,\n        tableWidth: tableWidth\n      }\n    });\n    this.table.dispatchEvent(eventToDispatch);\n\n    this.checkTableWidth();\n    this.syncHandleWidths();\n    this.saveColumnWidths();\n  }\n\n  attachHandlers(): void {\n    ResizableConstants.events.pointerMove\n      .forEach((evt, evtIdx) => {\n        this.ownerDocument.addEventListener(evt, this.onPointerMoveRef, false);\n      });\n\n    ResizableConstants.events.pointerUp\n      .forEach((evt, evtIdx) => {\n        this.ownerDocument.addEventListener(evt, this.onPointerUpRef, false);\n      });\n  }\n\n  detachHandlers(): void {\n    ResizableConstants.events.pointerMove\n      .forEach((evt, evtIdx) => {\n        this.ownerDocument.removeEventListener(evt, this.onPointerMoveRef, false);\n      });\n\n    ResizableConstants.events.pointerUp\n      .forEach((evt, evtIdx) => {\n        this.ownerDocument.removeEventListener(evt, this.onPointerUpRef, false);\n      });\n  }\n\n  refreshWrapperStyle(): void {\n    if (this.wrapper == null)\n      return;\n\n    const original = this.wrapper.style.overflowX;\n    this.wrapper.style.overflowX = 'hidden';\n    this.wrapper.style.overflowX = original;\n  }\n\n  saveColumnWidths() {\n    if (!this.options.store)\n      return;\n\n    const tableId = ResizableTableColumns.generateTableId(this.table);\n    if (tableId.length === 0)\n      return;\n\n\n    const data: { table: number, columns: IIndexedCollection<Number> } = {\n      table: this.table.offsetWidth,\n      columns: {}\n    };\n    this.getResizableHeaders()\n      .forEach(el => {\n        data.columns[ResizableTableColumns.generateColumnId(el)] = el.offsetWidth;\n      });\n    this.options.store.set(tableId, data);\n  }\n\n  createHandlerReferences() {\n    if (!this.onPointerDownRef) {\n      this.onPointerDownRef = ResizableTableColumns.debounce(\n        (evt: Event) => {\n          this.handlePointerDown(evt);\n        },\n        100,\n        true\n      );\n    }\n\n    if (!this.onPointerMoveRef) {\n      this.onPointerMoveRef = ResizableTableColumns.debounce(\n        (evt: Event) => {\n          this.handlePointerMove(evt);\n        },\n        5,\n        false\n      );\n    }\n\n    if (!this.onPointerUpRef) {\n      this.onPointerUpRef = ResizableTableColumns.debounce(\n        (evt: Event) => {\n          this.handlePointerUp();\n        },\n        100,\n        true\n      );\n    }\n  }\n\n  registerWindowResizeHandler(): void {\n    const win = this.ownerDocument.defaultView;\n    if (ResizableTableColumns.windowResizeHandlerRef)\n      return;\n\n    ResizableTableColumns.windowResizeHandlerRef = ResizableTableColumns.debounce(ResizableTableColumns.onWindowResize, 50, false);\n    ResizableConstants.events.windowResize\n      .forEach((evt, idx) => {\n        win?.addEventListener(evt, ResizableTableColumns.windowResizeHandlerRef as any, false);\n      });\n  }\n\n  handleWindowResize(): void {\n    this.checkTableWidth();\n    this.syncHandleWidths();\n    this.saveColumnWidths();\n  }\n\n  updateWidth(cell: HTMLElement, suggestedWidth: number, skipConstrainCheck: boolean, skipTableResize: boolean): number {\n    const originalCellWidth = cell.offsetWidth;\n    const columnWidth = skipConstrainCheck\n      ? suggestedWidth\n      : this.constrainWidth(cell, suggestedWidth);\n\n    ResizableTableColumns.setWidth(cell, columnWidth);\n    if (!skipTableResize) {\n      const difference = columnWidth - originalCellWidth;\n      const tableWidth = this.table.offsetWidth + difference;\n      ResizableTableColumns.setWidth(this.table, tableWidth);\n    }\n\n\n    return columnWidth;\n  }\n\n  static onWindowResize(event: Event): void {\n    const win = event ? event.target as Window : null;\n    if (win == null)\n      return;\n\n    const tables = win.document.querySelectorAll(`.${ResizableConstants.classes.table}`);\n    for (let index = 0; index < tables.length; index++) {\n      const table = tables[index];\n      if (typeof (table as any)[ResizableConstants.dataPropertyName] !== 'object')\n        continue;\n\n      (table as any)[ResizableConstants.dataPropertyName].handleWindowResize();\n    }\n  }\n\n  static generateColumnId(el: HTMLElement): string {\n    const columnId = (el.getAttribute(ResizableConstants.attributes.dataResizable) || '')\n      .trim()\n      .replace(/\\./g, '_');\n\n    return columnId;\n  }\n\n  static generateTableId(table: HTMLTableElement): string {\n    const tableId = (table.getAttribute(ResizableConstants.attributes.dataResizableTable) || '')\n      .trim()\n      .replace(/\\./g, '_');\n\n    return tableId.length\n      ? `rtc/${tableId}`\n      : tableId;\n  }\n\n  static setWidth(element: HTMLElement, width: number) {\n    let strWidth = width.toFixed(2);\n    strWidth = width > 0 ? strWidth : '0';\n    element.style.width = `${strWidth}px`;\n  }\n\n  static getInstanceId(): number {\n    return ResizableTableColumns.instancesCount++;\n  }\n\n  static debounce = <F extends (...args: any[]) => any>(func: Function, wait: number, immediate: boolean) => {\n    let timeout: ReturnType<typeof setTimeout> | null = null;\n    const debounced = (...args: Parameters<F>) => {\n      const later = () => {\n        timeout = null;\n        if (!immediate) {\n          func(...args);\n        }\n      };\n\n      const callNow = immediate && !timeout;\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n      timeout = setTimeout(later, wait);\n      if (callNow) {\n        func(...args);\n      }\n    };\n    return debounced as (...args: Parameters<F>) => ReturnType<F>;\n  }\n\n  static getPointerX(event: Event): number | null {\n    if (event.type.indexOf('touch') === 0) {\n      const tEvent = event as TouchEvent;\n      if (tEvent.touches && tEvent.touches.length) {\n        return tEvent.touches[0].pageX;\n      }\n\n      if (tEvent.changedTouches && tEvent.changedTouches.length) {\n        return tEvent.changedTouches[0].pageX\n      }\n    }\n    return (event as MouseEvent).pageX;\n  }\n\n  static getTextWidth(contentElement: HTMLElement, measurementElement: HTMLElement): number {\n    if (!contentElement || !measurementElement)\n      return 0;\n\n    var text = contentElement.textContent?.trim().replace(/\\s/g, '&nbsp;') + '&nbsp;'; //add extra space to ensure we are not add the `...`\n\n    const styles = contentElement.ownerDocument.defaultView?.getComputedStyle(contentElement);\n    ['fontFamily', 'fontSize', 'fontWeight', 'padding', 'border', 'boxSizing']\n      .forEach((prop) => {\n        (measurementElement.style as any)[prop] = (styles as any)[prop];\n      });\n\n    measurementElement.innerHTML = text;\n    return measurementElement.offsetWidth;\n  }\n\n  static getOffset(el: HTMLElement): { top: number, left: number } {\n    if (!el)\n      return { top: 0, left: 0 };\n\n    const rect = el.getBoundingClientRect();\n\n    return {\n      top: rect.top + el.ownerDocument.body.scrollTop,\n      left: rect.left + el.ownerDocument.body.scrollLeft\n    }\n  }\n}\n", "export default class CollateralStore {\n  constructor() {\n    this.dataStore = window.localStorageObjectStore\n    this.userId = document.body.getAttribute('data-user-id') || 'default-user'\n  }\n\n  get(id) {\n    try {\n      const key = `${this.userId}/${id}`\n      const data = this.dataStore.get(key)\n\n      if (typeof data === 'string') {\n        try {\n          return JSON.parse(data)\n        } catch (e) {\n          console.error(`Error parsing stored data for key ${key}:`, e)\n          return data\n        }\n      }\n\n      return data\n    } catch (error) {\n      console.error('Error getting data from store:', error)\n      return null\n    }\n  }\n\n  set(id, data) {\n    try {\n      const key = `${this.userId}/${id}`\n\n      if (data !== null && typeof data === 'object') {\n        this.dataStore.set(key, JSON.stringify(data))\n      } else {\n        this.dataStore.set(key, data)\n      }\n\n      return true\n    } catch (error) {\n      console.error('Error setting data in store:', error)\n      return false\n    }\n  }\n}\n", "import { calculateTableKey, eachTableHeader } from './helpers'\n\nexport default function createSwapColumn(table, options = {}) {\n  if (!table) {\n    return\n  }\n\n  const tableKey = calculateTableKey(table)\n  const queueId = options.queueId || null\n\n  const layoutApplied = tryApplyStoredLayout(table, tableKey, queueId)\n\n  const api = setupColumnDragDrop(table, tableKey, queueId)\n\n  table.addEventListener('force-column-order', (event) => {\n    try {\n      if (!event.detail || !event.detail.config) {\n        return\n      }\n\n      const config = event.detail.config\n\n      const orderedColumns = Object.entries(config)\n        .sort((a, b) => a[1].index - b[1].index)\n        .map(([name, data]) => name)\n\n      const headerRow = table.querySelector('thead tr')\n      if (!headerRow) {\n        return\n      }\n\n      const headers = Array.from(headerRow.children)\n      const colNameToIndex = {}\n\n      headers.forEach((header, index) => {\n        if (header.dataset && header.dataset.name) {\n          colNameToIndex[header.dataset.name] = index\n        }\n      })\n\n      const existingColumns = orderedColumns.filter(col => colNameToIndex.hasOwnProperty(col))\n\n      const currentColumns = headers.map(h => h.dataset?.name)\n      const newColumns = currentColumns.filter(col => !existingColumns.includes(col))\n\n      const finalOrder = [...existingColumns, ...newColumns]\n\n      applyColumnOrderToTable(table, finalOrder, colNameToIndex)\n\n      setTimeout(() => {\n        table.dispatchEvent(new CustomEvent('columns:reordered', {\n          bubbles: true,\n          detail: { tableKey, forcedConfig: true }\n        }))\n\n        if (!event.detail.skipSave) {\n          saveColumnOrder(table, tableKey)\n        }\n      }, 100)\n    } catch (error) {\n    }\n  })\n\n  if (!layoutApplied) {\n    setTimeout(() => saveColumnOrder(table, tableKey), 300)\n  }\n\n  return {\n    moveColumn: api.moveColumn,\n    saveColumnOrder: () => saveColumnOrder(table, tableKey, queueId),\n    getTableKey: () => tableKey\n  }\n}\n\nfunction tryApplyStoredLayout(table, tableKey, queueId = null) {\n  try {\n    if (!table || !table.querySelector('thead') || !table.querySelector('tbody')) {\n      return false\n    }\n\n    const savedConfig = getSavedColumnOrder(tableKey, queueId)\n    if (!savedConfig || Object.keys(savedConfig).length === 0) {\n      return false\n    }\n\n    const thead = table.querySelector('thead')\n    const tbody = table.querySelector('tbody')\n\n    if (!thead || !thead.rows[0] || !tbody) {\n      return false\n    }\n\n    const headerRow = thead.rows[0]\n    const headers = Array.from(headerRow.children)\n    const colNameToIndex = {}\n    const currentColumnNames = []\n\n    headers.forEach((header, index) => {\n      if (header.dataset && header.dataset.name) {\n        colNameToIndex[header.dataset.name] = index\n        currentColumnNames.push(header.dataset.name)\n      }\n    })\n\n    const orderedColumns = Object.values(savedConfig)\n      .filter(col => col && col.column && typeof col.index === 'number')\n      .sort((a, b) => a.index - b.index)\n      .map(col => col.column)\n\n    const existingColumns = orderedColumns.filter(colName =>\n      colNameToIndex.hasOwnProperty(colName)\n    )\n\n    const newColumns = currentColumnNames.filter(colName =>\n      !orderedColumns.includes(colName)\n    )\n\n    if (existingColumns.length === 0) {\n      saveColumnOrder(table, tableKey)\n      return false\n    }\n\n    if (existingColumns.length !== orderedColumns.length || newColumns.length > 0) {\n      const combinedOrder = [...existingColumns, ...newColumns]\n\n      let needsReordering = false\n      for (let i = 0; i < combinedOrder.length; i++) {\n        if (headers[i].dataset?.name !== combinedOrder[i]) {\n          needsReordering = true\n          break\n        }\n      }\n\n      if (!needsReordering) {\n        return true\n      }\n\n      applyColumnOrderToTable(table, combinedOrder, colNameToIndex)\n\n      setTimeout(() => saveColumnOrder(table, tableKey, queueId), 200)\n\n      setTimeout(() => {\n        table.dispatchEvent(new CustomEvent('columns:reordered', {\n          bubbles: true,\n          detail: { tableKey, adaptedConfig: true }\n        }))\n      }, 300)\n\n      return true\n    }\n\n    let needsReordering = false\n    for (let i = 0; i < orderedColumns.length; i++) {\n      if (headers[i].dataset?.name !== orderedColumns[i]) {\n        needsReordering = true\n        break\n      }\n    }\n\n    if (!needsReordering) {\n      return true\n    }\n\n    applyColumnOrderToTable(table, orderedColumns, colNameToIndex)\n\n    setTimeout(() => {\n      table.dispatchEvent(new CustomEvent('columns:reordered', {\n        bubbles: true,\n        detail: { tableKey, savedConfig }\n      }))\n    }, 100)\n\n    return true\n  } catch (error) {\n    return false\n  }\n}\n\nfunction applyColumnOrderToTable(table, orderedColumns, colNameToIndex) {\n  try {\n    const thead = table.querySelector('thead')\n    const tbody = table.querySelector('tbody')\n\n    if (!thead || !thead.rows[0] || !tbody) return\n\n    const headerRow = thead.rows[0]\n    const headers = Array.from(headerRow.children)\n\n    let currentOrder = headers.map(h => h.dataset ? h.dataset.name : null)\n\n    for (let targetIdx = 0; targetIdx < orderedColumns.length; targetIdx++) {\n      const columnName = orderedColumns[targetIdx]\n      const currentIdx = currentOrder.indexOf(columnName)\n\n      if (currentIdx !== -1 && currentIdx !== targetIdx) {\n        moveColumnInTable(table, currentIdx, targetIdx)\n\n        currentOrder = Array.from(headerRow.children)\n          .map(h => h.dataset ? h.dataset.name : null)\n      }\n    }\n  } catch (error) {\n  }\n}\n\nfunction moveColumnInTable(table, fromIndex, toIndex) {\n  try {\n  const thead = table.querySelector('thead')\n  const tbody = table.querySelector('tbody')\n\n    if (!thead || !thead.rows[0] || !tbody) return\n\n    const headerRow = thead.rows[0]\n    moveElementInRow(headerRow, fromIndex, toIndex)\n\n    Array.from(tbody.rows).forEach(row => {\n      moveElementInRow(row, fromIndex, toIndex)\n    })\n  } catch (error) {\n  }\n}\n\nfunction moveElementInRow(row, fromIndex, toIndex) {\n  if (!row || !row.children) return\n\n  const cells = Array.from(row.children)\n  if (fromIndex < 0 || fromIndex >= cells.length ||\n      toIndex < 0 || toIndex >= cells.length) {\n    return\n  }\n\n  const element = cells[fromIndex]\n\n  if (fromIndex < toIndex) {\n    if (toIndex + 1 < cells.length) {\n      row.insertBefore(element, cells[toIndex + 1])\n    } else {\n      row.appendChild(element)\n    }\n  } else {\n    row.insertBefore(element, cells[toIndex])\n  }\n}\n\nfunction getQueueTableConfig(queueId) {\n  try {\n    const queueKey = `queue_${queueId}_table_config`\n    const storedConfig = localStorage.getItem(queueKey)\n\n    if (storedConfig) {\n      return JSON.parse(storedConfig)\n    }\n\n    return null\n  } catch (error) {\n    return null\n  }\n}\n\nfunction saveQueueTableConfig(queueId, config) {\n  try {\n    const queueKey = `queue_${queueId}_table_config`\n    localStorage.setItem(queueKey, JSON.stringify(config))\n  } catch (error) {\n  }\n}\n\nfunction getSavedColumnOrder(tableKey, queueId = null) {\n  try {\n    if (queueId) {\n      const queueConfig = getQueueTableConfig(queueId)\n      if (queueConfig) return queueConfig\n    }\n\n    const userId = document.body.getAttribute('data-user-id') || 'default-user'\n    const possibleKeys = [\n      tableKey,\n      `${userId}/${tableKey}`,\n      `${userId}/1${tableKey}`,\n    ]\n\n    for (const key of possibleKeys) {\n      let config = window.localStorageObjectStore.get(key)\n      if (config) {\n        return config\n      }\n\n      try {\n        const directData = localStorage.getItem(key)\n        if (directData) {\n          const parsedData = JSON.parse(directData)\n\n          saveToAllKeys(parsedData, tableKey)\n\n          return parsedData\n        }\n      } catch (e) {\n      }\n    }\n\n    return null\n  } catch (error) {\n    return null\n  }\n}\n\nfunction checkIfConfigExists(tableKey) {\n  try {\n    const userId = document.body.getAttribute('data-user-id') || 'default-user'\n    const possibleKeys = [\n      tableKey,\n      `${userId}/${tableKey}`,\n      `${userId}/1${tableKey}`,\n    ]\n\n    for (const key of possibleKeys) {\n      if (window.localStorageObjectStore && window.localStorageObjectStore.get(key)) {\n        return true\n      }\n\n      if (localStorage.getItem(key)) {\n        return true\n      }\n    }\n\n    return false\n  } catch (error) {\n    return false\n  }\n}\n\nfunction saveToAllKeys(data, tableKey) {\n  try {\n    const userId = document.body.getAttribute('data-user-id') || 'default-user'\n    const keys = [\n      tableKey,\n      `${userId}/${tableKey}`\n    ]\n\n    keys.forEach(key => {\n      try {\n        if (window.localStorageObjectStore) {\n          window.localStorageObjectStore.set(key, data)\n        }\n\n        localStorage.setItem(key, JSON.stringify(data))\n      } catch (e) {\n      }\n    })\n\n    if (typeof window !== 'undefined') {\n      window.dispatchEvent(new CustomEvent('table:config-saved', {\n        detail: { tableKey, data }\n      }))\n    }\n  } catch (error) {\n  }\n}\n\nfunction saveColumnOrder(table, tableKey, queueId = null) {\n  try {\n    if (!table) return null\n\n    const headerRow = table.querySelector('thead tr')\n    if (!headerRow) return null\n\n    let existingConfig = getSavedColumnOrder(tableKey, queueId) || {}\n\n    const headers = Array.from(headerRow.children)\n\n    const updatedConfig = {}\n    headers.forEach((header, index) => {\n      const columnName = header.dataset?.name\n      if (columnName) {\n        updatedConfig[columnName] = {\n          column: columnName,\n          index: index,\n          hideable: header.dataset.hideable === 'true',\n          display: header.style.display !== 'none'\n        }\n\n        if (existingConfig[columnName]) {\n          const existing = existingConfig[columnName]\n          if (existing.hideable !== undefined) {\n            updatedConfig[columnName].hideable = existing.hideable\n          }\n          if (existing.display !== undefined) {\n            updatedConfig[columnName].display = existing.display\n          }\n        }\n      }\n    })\n\n    if (queueId) {\n      saveQueueTableConfig(queueId, updatedConfig)\n    } else {\n      saveToAllKeys(updatedConfig, tableKey)\n    }\n\n    return updatedConfig\n  } catch (error) {\n    return null\n  }\n}\n\nfunction setupColumnDragDrop(table, tableKey, queueId = null) {\n  if (!table || !table.querySelector('thead tr')) return { moveColumn: () => false, saveColumnOrder: () => null }\n\n  let dragColumn = null\n  let dragColumnIndex = -1\n  let dropTargetIndex = -1\n  let dragGhost = null\n\n  function getHeaders() {\n    return Array.from(table.querySelector('thead tr').children || [])\n  }\n\n  function setupDraggableHeaders() {\n    getHeaders().forEach(header => {\n      if (header._dragInitialized) return\n\n      header._dragInitialized = true\n      header.setAttribute('draggable', 'true')\n\n      header.addEventListener('dragstart', handleDragStart)\n      header.addEventListener('dragover', handleDragOver)\n      header.addEventListener('dragenter', handleDragEnter)\n      header.addEventListener('dragleave', handleDragLeave)\n      header.addEventListener('drop', handleDrop)\n      header.addEventListener('dragend', handleDragEnd)\n    })\n  }\n\n  setupDraggableHeaders()\n\n  function createColumnGhost(columnIndex) {\n    const headers = getHeaders()\n    if (columnIndex < 0 || columnIndex >= headers.length) return null\n\n    const ghost = document.createElement('div')\n    ghost.className = 'column-drag-ghost'\n    ghost.style.position = 'absolute'\n    ghost.style.top = '-1000px'\n    ghost.style.opacity = '0.8'\n    ghost.style.backgroundColor = '#f0f4ff'\n    ghost.style.border = '1px dashed #3b82f6'\n    ghost.style.zIndex = '9999'\n    ghost.style.boxShadow = '0 4px 6px rgba(0,0,0,0.1)'\n    ghost.style.borderRadius = '4px'\n    ghost.style.overflow = 'hidden'\n    ghost.style.pointerEvents = 'none'\n    ghost.style.width = '200px'\n\n    const headerClone = headers[columnIndex].cloneNode(true)\n    headerClone.style.display = 'block'\n    headerClone.style.width = '100%'\n    headerClone.style.backgroundColor = '#f0f4ff'\n    ghost.appendChild(headerClone)\n\n    const tbody = table.querySelector('tbody')\n    if (tbody && tbody.rows.length) {\n      const rowsToShow = Math.min(tbody.rows.length, 3)\n      for (let i = 0; i < rowsToShow; i++) {\n        if (tbody.rows[i] && tbody.rows[i].children[columnIndex]) {\n          const cellClone = tbody.rows[i].children[columnIndex].cloneNode(true)\n          cellClone.style.display = 'block'\n          cellClone.style.width = '100%'\n          cellClone.style.backgroundColor = '#ffffff'\n          ghost.appendChild(cellClone)\n        }\n      }\n    }\n\n    document.body.appendChild(ghost)\n    return ghost\n  }\n\n  function highlightColumn(columnIndex, className) {\n    if (columnIndex < 0) return\n\n    const headers = getHeaders()\n    if (columnIndex >= headers.length) return\n\n    headers[columnIndex].classList.add(className)\n\n    const tbody = table.querySelector('tbody')\n    if (tbody) {\n      Array.from(tbody.rows).forEach(row => {\n        if (row.children[columnIndex]) {\n          row.children[columnIndex].classList.add(className)\n        }\n      })\n    }\n  }\n\n  function removeColumnHighlight(className) {\n    getHeaders().forEach(header => {\n      header.classList.remove(className)\n    })\n\n    const tbody = table.querySelector('tbody')\n    if (tbody) {\n      Array.from(tbody.rows).forEach(row => {\n        Array.from(row.children).forEach(cell => {\n          cell.classList.remove(className)\n        })\n      })\n    }\n  }\n\n  function moveColumn(sourceIndex, targetIndex) {\n    try {\n      if (sourceIndex === targetIndex) return false\n\n      const thead = table.querySelector('thead')\n      const tbody = table.querySelector('tbody')\n\n      if (!thead || !thead.rows[0] || !tbody) return false\n\n      const headerRow = thead.rows[0]\n      const headers = Array.from(headerRow.children)\n\n      if (sourceIndex < 0 || sourceIndex >= headers.length ||\n          targetIndex < 0 || targetIndex >= headers.length) {\n        return false\n      }\n\n      moveElementInRow(headerRow, sourceIndex, targetIndex)\n\n      Array.from(tbody.rows).forEach(row => {\n        moveElementInRow(row, sourceIndex, targetIndex)\n      })\n\n      return true\n    } catch (e) {\n      return false\n    }\n  }\n\n  function handleDragStart(e) {\n    const headers = getHeaders()\n    dragColumn = e.target.closest('th')\n    if (!dragColumn) return\n\n    dragColumnIndex = headers.indexOf(dragColumn)\n    if (dragColumnIndex === -1) return\n\n    highlightColumn(dragColumnIndex, 'dragging-column')\n\n    dragGhost = createColumnGhost(dragColumnIndex)\n    if (dragGhost) {\n      const rect = dragColumn.getBoundingClientRect()\n      const offsetX = e.clientX - rect.left\n      const offsetY = e.clientY - rect.top\n\n      e.dataTransfer.setDragImage(dragGhost, offsetX, offsetY)\n    }\n\n    e.dataTransfer.effectAllowed = 'move'\n    dragColumn.classList.add('dragging')\n  }\n\n  function handleDragOver(e) {\n    if (!dragColumn) return\n    e.preventDefault()\n    e.dataTransfer.dropEffect = 'move'\n  }\n\n  function handleDragEnter(e) {\n    if (!dragColumn) return\n\n    const targetHeader = e.target.closest('th')\n    if (!targetHeader || targetHeader === dragColumn) return\n\n    removeColumnHighlight('drop-target-column')\n\n    const headers = getHeaders()\n    dropTargetIndex = headers.indexOf(targetHeader)\n    if (dropTargetIndex !== -1) {\n      highlightColumn(dropTargetIndex, 'drop-target-column')\n      targetHeader.classList.add('drag-over')\n    }\n  }\n\n  function handleDragLeave(e) {\n    const targetHeader = e.target.closest('th')\n    if (!targetHeader) return\n\n    const relatedTarget = e.relatedTarget\n    if (relatedTarget && targetHeader.contains(relatedTarget)) return\n\n    targetHeader.classList.remove('drag-over')\n  }\n\n  function handleDrop(e) {\n    e.preventDefault()\n    e.stopPropagation()\n\n    if (dragColumnIndex === -1 || dropTargetIndex === -1 ||\n        dragColumnIndex === dropTargetIndex) {\n      return\n    }\n\n    removeColumnHighlight('dragging-column')\n    removeColumnHighlight('drop-target-column')\n\n    const success = moveColumn(dragColumnIndex, dropTargetIndex)\n\n    if (success) {\n      if (dragColumn) dragColumn.classList.remove('dragging')\n\n      const headers = getHeaders()\n      headers.forEach(h => h.classList.remove('drag-over'))\n\n      setTimeout(() => {\n        const newConfig = saveColumnOrder(table, tableKey, queueId)\n\n        table.dispatchEvent(new CustomEvent('columns:reordered', {\n          bubbles: true,\n          detail: { tableKey, config: newConfig, queueId }\n        }))\n      }, 50)\n    }\n  }\n\n  function handleDragEnd() {\n    if (dragGhost && dragGhost.parentNode) {\n      dragGhost.parentNode.removeChild(dragGhost)\n      dragGhost = null\n    }\n\n    removeColumnHighlight('dragging-column')\n    removeColumnHighlight('drop-target-column')\n\n    if (dragColumn) dragColumn.classList.remove('dragging')\n    getHeaders().forEach(h => h.classList.remove('drag-over'))\n\n    dragColumn = null\n    dragColumnIndex = -1\n    dropTargetIndex = -1\n  }\n\n  const observer = new MutationObserver(() => {\n    setupDraggableHeaders()\n  })\n\n  observer.observe(table.querySelector('thead'), {\n    childList: true,\n    subtree: true\n  })\n\n  return {\n    moveColumn,\n    saveColumnOrder: () => saveColumnOrder(table, tableKey, queueId)\n  }\n}\n", "import { calculateTableKey, eachTableHeader } from './helpers'\n\nconst INITIAL_COLUMN_WIDTH = '100px'\nconst ACTION_COLUMN_WIDTH = '40px'\n\nfunction sortColumns(a, b) {\n  const ca = a.column\n  const cb = b.column\n\n  if (ca === cb) return 0\n\n  return ca < cb ? -1 : 1\n}\n\nfunction calculateTableColumns(table) {\n  const columns = {}\n\n  eachTableHeader(table, function (el, index) {\n    if (el.dataset.name) {\n      columns[el.dataset.name] = {\n        index,\n        column: el.dataset.name,\n        hideable: el.dataset.hideable,\n        display: el.dataset.hideable ? !el.dataset.defaultHidden : true,\n      }\n    }\n  })\n\n  return columns\n}\n\nfunction initTable(table, columns) {\n  const validColumns = Object.values(columns).filter(column =>\n    typeof column.index === 'number' && !isNaN(column.index)\n  )\n\n  setTimeout(() => {\n    table.dispatchEvent(\n      new CustomEvent('hideable-columns:change', {\n        detail: { columns: validColumns },\n        bubbles: true,\n      })\n    )\n  }, 300)\n\n  const setInitialWidthIfNotSet = (el) => {\n    if (!el.style.width || el.style.width === '0px' || parseInt(el.style.width) < parseInt(INITIAL_COLUMN_WIDTH)) {\n      el.style.width = INITIAL_COLUMN_WIDTH\n    }\n  }\n\n  validColumns.forEach(function ({ index, display, column }) {\n    if (typeof index !== 'number' || isNaN(index)) return\n\n    const selector =\n      'td:nth-child(' + (index + 1) + '), th:nth-child(' + (index + 1) + ')'\n\n    try {\n      if (display) {\n        table.querySelectorAll(selector).forEach((el) => {\n          if (!el.style.width || el.style.width === '0px') {\n            el.style.width = column === 'actions' ? ACTION_COLUMN_WIDTH : INITIAL_COLUMN_WIDTH\n          }\n          el.style.display = ''\n        })\n      } else {\n        table.querySelectorAll(selector).forEach((el) => {\n          el.style.display = 'none'\n          setInitialWidthIfNotSet(el)\n        })\n      }\n    } catch (error) {\n      console.error(`Error processing selector \"${selector}\":`, error)\n    }\n  })\n}\n\nexport default function hideableColumns(\n  table,\n  { sortedColumns, ignoreLocalStorage }\n) {\n  if (!table) return {}\n\n  const tableKey = calculateTableKey(table)\n  let columns = ignoreLocalStorage\n    ? calculateTableColumns(table)\n    : window.localStorageObjectStore.get(tableKey)\n\n  if (!columns) {\n    columns = calculateTableColumns(table)\n\n    if (Object.keys(columns).length > 0)\n      window.localStorageObjectStore.set(tableKey, columns)\n  } else {\n    const tableColumns = calculateTableColumns(table)\n\n    Object.keys(columns).forEach(key => {\n      if (tableColumns[key]) {\n        columns[key].index = tableColumns[key].index\n      }\n    })\n\n    Object.keys(tableColumns).forEach(key => {\n      if (!columns[key]) {\n        columns[key] = tableColumns[key]\n      }\n    })\n\n    window.localStorageObjectStore.set(tableKey, columns)\n  }\n\n  let hideableCols = Object.keys(columns).reduce((acc, key) => {\n    if (columns[key] && columns[key].hasOwnProperty('hideable')) {\n      acc[key] = columns[key]\n    }\n    return acc\n  }, {})\n\n  initTable(table, columns)\n\n  return {\n    hideableColumns: sortedColumns\n      ? Object.values(hideableCols).sort(sortColumns)\n      : Object.values(hideableCols),\n    isColumnVisible: function (column) {\n      return columns[column] && columns[column].display\n    },\n    toggleColumnVisibility: function (column) {\n      if (!columns[column] || typeof columns[column].index !== 'number' || isNaN(columns[column].index)) {\n        console.error(`Cannot toggle visibility for column \"${column}\": Invalid column index`)\n        return\n      }\n\n      columns[column].display = !columns[column].display\n\n      window.localStorageObjectStore.set(tableKey, columns)\n\n      try {\n        const columnIndex = columns[column].index\n        const selector = 'td:nth-child(' + (columnIndex + 1) + '), th:nth-child(' + (columnIndex + 1) + ')'\n\n        table.querySelectorAll(selector).forEach((el) => {\n          el.style.display = columns[column].display ? '' : 'none'\n        })\n\n        table.dispatchEvent(\n          new CustomEvent('hideable-columns:change', {\n            detail: { columns: Object.values(columns) },\n            bubbles: true,\n          })\n        )\n      } catch (error) {\n        console.error(`Error toggling column visibility for \"${column}\":`, error)\n      }\n    },\n    humanize: function (str) {\n      return str\n        .replace(/^[\\s_]+|[\\s_]+$/g, '')\n        .replace(/[_-\\s]+/g, ' ')\n        .replace(/^[a-z]/, (m) => m.toUpperCase())\n    },\n  }\n}\n", "export default function csvApp(path, queryParams) {\n  const filterHiddenColumns = (columns) =>\n    columns.filter((c) => !c.display).map((c) => c.column)\n\n  const queryString = (columns) => {\n    const allParams = [\n      ...queryParams,\n      ['hidden_columns', filterHiddenColumns(columns)],\n    ]\n\n    return new URLSearchParams(allParams).toString()\n  }\n\n  const buildLinkPath = (columns) => `${path}?${queryString(columns)}`\n\n  return {\n    loading: false,\n    columns: [],\n    linkPath: '#',\n    updateColumns: function (columns) {\n      this.columns = columns\n      this.linkPath = buildLinkPath(this.columns)\n    },\n  }\n}\n", "import agGridRefine from './ag_grid/refine'\nimport AgHeaderPinInner from './ag_grid/header_pin_inner'\n\nconst FLEX_HEIGHT_HEADER = 42\nconst FLEX_HEIGHT_ROW_DEFAULT = 42\nconst FLEX_HEIGHT_VIEWPORT_OFFSET = 260\nconst FLEX_HEIGHT_MIN = 200\nconst FLEX_HEIGHT_SAFETY_BUFFER = 9\nconst AUTO_HEIGHT_MAX_ROWS = 8\nconst GRID_INIT_MAX_ATTEMPTS = 50\nconst GRID_INIT_RETRY_DELAY = 100\nconst STRETCH_COLUMN_DELAY = 150\nconst RESIZE_DEBOUNCE_DELAY = 100\n\nfunction getGridElement(gridId) {\n  return document.getElementById(gridId)\n}\n\nfunction getGridApi(gridElement) {\n  return gridElement?._agGridApi\n}\n\nfunction normalizeTheme(theme) {\n  if (typeof theme !== 'string') return null\n  return window.agGridThemes?.[theme] || window.agGridThemes?.quartz\n}\n\nfunction createHtmlCellRenderer() {\n  if (window.agGridHtmlCellRenderer) return\n\n  window.agGridHtmlCellRenderer = function (params) {\n    const div = document.createElement('div')\n    if (params.value) {\n      div.innerHTML = params.value\n    }\n    return div\n  }\n}\n\nfunction setupDateFormatter(col) {\n  if (!col._needsDateFormatter) return\n  col.valueFormatter = (params) => (params.value ? new Date(params.value).toLocaleString() : '')\n  delete col._needsDateFormatter\n}\n\nfunction setupArrayFormatter(col) {\n  if (!col._needsArrayFormatter) return\n  col.valueFormatter = (params) =>\n    Array.isArray(params.value) ? params.value.join(', ') : params.value || ''\n  delete col._needsArrayFormatter\n}\n\nfunction sanitizePersistedGridState(state) {\n  if (!state || typeof state !== 'object') return state\n\n  const next = { ...state }\n\n  if (next.sort?.sortModel) {\n    next.sort = { ...next.sort, sortModel: [] }\n  }\n\n  if (Array.isArray(next.columnState)) {\n    next.columnState = next.columnState.map((col) => {\n      const { sort, sortIndex, ...rest } = col\n      return rest\n    })\n  }\n\n  // Restoring scroll via initialState only updates the center viewport and can\n  // leave header/body horizontally desynced after a Turbo re-render/search.\n  delete next.scroll\n\n  return next\n}\n\nfunction isGridInitializingEvent(params) {\n  return params?.source === 'gridInitializing'\n}\n\nfunction shouldPersistColumnEvent(params) {\n  if (!params?.api?.getState) return false\n  if (isGridInitializingEvent(params)) return false\n  // Avoid writing intermediate drag widths/order; only persist the final change.\n  if (\n    (params.type === 'columnResized' || params.type === 'columnMoved') &&\n    params.finished === false\n  ) {\n    return false\n  }\n  return true\n}\n\nfunction createStateSaver(fullStateKey) {\n  return (params) => {\n    if (!shouldPersistColumnEvent(params) || !window.localStorageObjectStore) return\n\n    const state = sanitizePersistedGridState(params.api.getState())\n    window.localStorageObjectStore.set(fullStateKey, state)\n  }\n}\n\nfunction realignHorizontalScroll(api) {\n  if (!api?.setHorizontalScrollPosition) return\n\n  const sync = () => {\n    api.setHorizontalScrollPosition(0)\n    const firstColId = getNonPinnedColumns(api)[0]?.getColId?.()\n    if (firstColId) api.ensureColumnVisible?.(firstColId, 'start')\n  }\n\n  requestAnimationFrame(sync)\n  setTimeout(sync, STRETCH_COLUMN_DELAY)\n}\n\nfunction wrapEventHandler(originalHandler, newHandler) {\n  return (params) => {\n    newHandler(params)\n    if (originalHandler) originalHandler(params)\n  }\n}\n\nfunction getColumnState(api) {\n  return api?.getColumnState?.() || []\n}\n\nfunction hasValidApi(api) {\n  return api?.getColumnState && typeof api.getColumnState === 'function'\n}\n\nfunction getNonPinnedColumns(api) {\n  const allDisplayed = api.getAllDisplayedColumns?.() || []\n  return allDisplayed.filter((col) => !col.getPinned || !col.getPinned())\n}\n\nfunction ransackSortColParamKey(ransackKey) {\n  return `${ransackKey}[sort_col]`\n}\n\nfunction getRansackConfig(gridElement) {\n  if (!gridElement || !gridElement.closest) return null\n\n  const container = gridElement.closest('[data-ransack-key]')\n  if (!container) return null\n\n  const ransackKey = container.getAttribute('data-ransack-key') || 'q'\n  const baseUrl = container.getAttribute('data-ransack-url') || window.location.pathname\n  const url = new URL(window.location.href)\n  const key = `${ransackKey}[s]`\n  const currentSort = url.searchParams.get(key)\n  const currentSortCol = url.searchParams.get(ransackSortColParamKey(ransackKey))\n\n  return { ransackKey, baseUrl, currentSort, currentSortCol }\n}\n\nfunction resolveSortTargetColumn(allColumns, field, preferredColId) {\n  const matchingColumns = allColumns.filter((col) => {\n    const colId = getColumnId(col)\n    const ransackSortField =\n      col?.getColDef?.()?.ransackSortField || col?.colDef?.ransackSortField\n\n    return colId === field || ransackSortField === field\n  })\n\n  if (!matchingColumns.length) return null\n  if (!preferredColId) return matchingColumns[0]\n\n  return matchingColumns.find((col) => getColumnId(col) === preferredColId) || matchingColumns[0]\n}\n\nlet turboFrameLoadingListenersRegistered = false\n\nfunction getTurboFrame(gridElement) {\n  return gridElement?.closest?.('turbo-frame') || null\n}\n\nfunction isFrameLoading(frame) {\n  return Boolean(frame?._agGridRequestPending)\n}\n\nfunction getGridLoadingScope(gridElement) {\n  return gridElement?.closest?.('.space-y-1') || gridElement\n}\n\nfunction normalizeRequestUrl(url) {\n  const parsed = new URL(url.toString(), window.location.origin)\n  parsed.hash = ''\n\n  const params = new URLSearchParams(parsed.search)\n  const sortedParams = new URLSearchParams([...params.entries()].sort())\n  const search = sortedParams.toString()\n\n  return `${parsed.pathname}${search ? `?${search}` : ''}`\n}\n\nfunction isSameGridRequestUrl(gridElement, url) {\n  const targetUrl = normalizeRequestUrl(url)\n  const turboFrame = gridElement?.closest?.('turbo-frame')\n\n  if (turboFrame) {\n    const frameSrc = turboFrame.getAttribute('src') || turboFrame.src || ''\n    if (frameSrc && normalizeRequestUrl(frameSrc) === targetUrl) return true\n  }\n\n  return normalizeRequestUrl(window.location.href) === targetUrl\n}\n\nfunction ensureRequestOverlay(scopeElement) {\n  let overlay = scopeElement.querySelector(':scope > .ag-grid-request-overlay')\n  if (overlay) return overlay\n\n  overlay = document.createElement('div')\n  overlay.className = 'ag-grid-request-overlay'\n  overlay.setAttribute('aria-hidden', 'true')\n\n  const spinner = document.createElement('div')\n  spinner.className = 'ag-grid-request-overlay__spinner'\n  spinner.setAttribute('role', 'status')\n  spinner.setAttribute('aria-label', 'Loading')\n  overlay.appendChild(spinner)\n\n  scopeElement.appendChild(overlay)\n  return overlay\n}\n\nfunction showFrameLoading(frame) {\n  if (!frame || isFrameLoading(frame)) return\n\n  const gridElement = getAgGridFromTurboFrame(frame)\n  if (!gridElement) return\n\n  const scopeElement = getGridLoadingScope(gridElement)\n  scopeElement.classList.add('ag-grid-loading-scope')\n\n  const overlay = ensureRequestOverlay(scopeElement)\n  overlay.hidden = false\n  overlay.setAttribute('aria-hidden', 'false')\n\n  frame._agGridRequestPending = true\n}\n\nfunction hideFrameLoading(frame) {\n  if (!frame) return\n\n  frame.querySelectorAll('.ag-grid-request-overlay').forEach((overlay) => {\n    overlay.hidden = true\n    overlay.setAttribute('aria-hidden', 'true')\n  })\n  frame.querySelectorAll('.ag-grid-loading-scope').forEach((element) => {\n    element.classList.remove('ag-grid-loading-scope')\n  })\n\n  frame._agGridRequestPending = false\n}\n\nfunction getAgGridFromTurboFrame(frame) {\n  if (!frame?.matches?.('turbo-frame')) return null\n\n  for (const gridElement of frame.querySelectorAll('.ag-grid-container')) {\n    if (gridElement.closest('turbo-frame') === frame) return gridElement\n  }\n\n  return null\n}\n\nfunction getFrameWithGridFromNavTarget(target) {\n  const link = target?.closest?.('a[data-turbo-frame]')\n  if (!link) return null\n\n  const frameId = link.getAttribute('data-turbo-frame')\n  const frame = frameId ? document.getElementById(frameId) : link.closest?.('turbo-frame')\n  return getAgGridFromTurboFrame(frame) ? frame : null\n}\n\nfunction handleAgGridFrameNavClick(event) {\n  const link = event.target?.closest?.('a[data-turbo-frame]')\n  const frame = getFrameWithGridFromNavTarget(event.target)\n  if (!frame || !link || !frame.contains(link)) return\n\n  if (isFrameLoading(frame)) {\n    event.preventDefault()\n    event.stopImmediatePropagation()\n    return\n  }\n\n  showFrameLoading(frame)\n}\n\nfunction handleAgGridFrameSubmitStart(event) {\n  const form = event.target\n  if (!form?.matches?.('form')) return\n\n  const frameId = form.getAttribute('data-turbo-frame')\n  const frame = frameId ? document.getElementById(frameId) : form.closest?.('turbo-frame')\n  if (!frame || !getAgGridFromTurboFrame(frame) || isFrameLoading(frame)) return\n\n  showFrameLoading(frame)\n}\n\nfunction handleTurboFrameLoad(event) {\n  hideFrameLoading(event.target)\n}\n\nfunction handleTurboFetchError(event) {\n  const frame =\n    event.target?.closest?.('turbo-frame') ||\n    (event.target?.matches?.('turbo-frame') ? event.target : null)\n  if (frame && isFrameLoading(frame)) hideFrameLoading(frame)\n}\n\nfunction registerTurboFrameLoadingListeners() {\n  if (turboFrameLoadingListenersRegistered) return\n  turboFrameLoadingListenersRegistered = true\n\n  document.addEventListener('click', handleAgGridFrameNavClick, true)\n  document.addEventListener('turbo:submit-start', handleAgGridFrameSubmitStart)\n  document.addEventListener('turbo:frame-load', handleTurboFrameLoad)\n  document.addEventListener('turbo:fetch-request-error', handleTurboFetchError)\n}\n\nfunction visitWithTurboOrFrame(gridElement, url) {\n  const turboFrame = gridElement?.closest?.('turbo-frame')\n\n  if (turboFrame) {\n    const href = url.toString()\n\n    if (isSameGridRequestUrl(gridElement, href)) {\n      hideFrameLoading(turboFrame)\n      return\n    }\n\n    showFrameLoading(turboFrame)\n    turboFrame.src = href\n\n    window.history?.replaceState?.(window.history.state, '', href)\n    return\n  }\n\n  if (window.Turbo?.visit) {\n    window.Turbo.visit(url.toString())\n  } else {\n    window.location.href = url.toString()\n  }\n}\n\nfunction applyRansackSortFromGrid(params, ransackConfig, gridElement) {\n  if (!params || !ransackConfig) return\n  if (gridElement?._suppressRansackSortSync) return\n\n  const frame = getTurboFrame(gridElement)\n  if (frame && isFrameLoading(frame)) return\n\n  const state = getColumnState(params.columnApi || params.api)\n  if (!state.length) return\n\n  const sortedColumns = state\n    .filter((col) => col.sort)\n    .sort((a, b) => {\n      const aIdx = Number.isFinite(a.sortIndex) ? a.sortIndex : 0\n      const bIdx = Number.isFinite(b.sortIndex) ? b.sortIndex : 0\n      return aIdx - bIdx\n    })\n\n  if (!sortedColumns.length) {\n    const url = new URL(window.location.href)\n    const searchParams = url.searchParams\n    const key = `${ransackConfig.ransackKey}[s]`\n    const sortColKey = ransackSortColParamKey(ransackConfig.ransackKey)\n    const currentSort = searchParams.get(key)\n\n    if (!currentSort) return\n\n    searchParams.delete(key)\n    searchParams.delete(sortColKey)\n    searchParams.delete('page')\n\n    url.pathname = ransackConfig.baseUrl\n    url.search = searchParams.toString()\n    visitWithTurboOrFrame(gridElement, url)\n\n    return\n  }\n\n  const firstSorted = sortedColumns[0]\n  if (!firstSorted || !firstSorted.sort) return\n\n  const sortDirection = firstSorted.sort === 'desc' ? 'desc' : 'asc'\n  const colId = firstSorted.colId || firstSorted.field\n  if (!colId) return\n\n  const api = params.api || params.columnApi\n  const column = api?.getColumns?.()?.find((col) => getColumnId(col) === colId)\n  const sortField =\n    column?.getColDef?.()?.ransackSortField || column?.colDef?.ransackSortField || colId\n\n  const newSortValue = `${sortField} ${sortDirection}`\n\n  const url = new URL(window.location.href)\n  const searchParams = url.searchParams\n  const key = `${ransackConfig.ransackKey}[s]`\n  const sortColKey = ransackSortColParamKey(ransackConfig.ransackKey)\n\n  const currentSort = searchParams.get(key)\n  if (currentSort === newSortValue) return\n\n  searchParams.set(key, newSortValue)\n  searchParams.set(sortColKey, colId)\n  searchParams.delete('page')\n\n  url.pathname = ransackConfig.baseUrl\n  url.search = searchParams.toString()\n\n  if (isSameGridRequestUrl(gridElement, url)) return\n\n  visitWithTurboOrFrame(gridElement, url)\n}\n\nfunction setupRansackSorting(gridOptions, gridElement) {\n  const ransackConfig = getRansackConfig(gridElement)\n  if (!ransackConfig) return\n\n  gridOptions.onSortChanged = wrapEventHandler(gridOptions.onSortChanged, (params) => {\n    if (params.source !== 'uiColumnSorted') return\n\n    applyRansackSortFromGrid(params, ransackConfig, gridElement)\n  })\n\n  gridOptions.onGridReady = wrapEventHandler(gridOptions.onGridReady, (params) => {\n    applyRansackSortToGrid(params.api, gridElement)\n  })\n}\n\nfunction dispatchHideableColumnsForCsv(api, gridElement) {\n  if (!hasValidApi(api) || !gridElement) return\n\n  const state = getColumnState(api)\n  const columns = state\n    .map((col) => ({\n      column: col.colId || col.field,\n      display: col.hide !== true,\n    }))\n    .filter((c) => c.column)\n\n  gridElement.dispatchEvent(\n    new CustomEvent('hideable-columns:change', { detail: { columns }, bubbles: true })\n  )\n}\n\nfunction setupHideableColumnsForCsvExport(gridOptions, gridElement) {\n  gridOptions.onFirstDataRendered = wrapEventHandler(gridOptions.onFirstDataRendered, (params) => {\n    dispatchHideableColumnsForCsv(params.api, gridElement)\n  })\n  gridOptions.onColumnVisible = wrapEventHandler(gridOptions.onColumnVisible, (params) => {\n    dispatchHideableColumnsForCsv(params.api, gridElement)\n  })\n}\n\nfunction applyRansackSortToGrid(api, gridElement) {\n  if (!hasValidApi(api)) return\n\n  const ransackConfig = getRansackConfig(gridElement)\n  if (!ransackConfig) return\n\n  if (!ransackConfig.currentSort) {\n    const currentState = getColumnState(api)\n    const hasSort = currentState.some((c) => c.sort)\n    if (!hasSort) return\n\n    gridElement._suppressRansackSortSync = true\n\n    try {\n      const clearedState = currentState.map((colState) => {\n        const { sort, sortIndex, ...rest } = colState\n        return rest\n      })\n\n      api.applyColumnState({\n        state: clearedState,\n        applyOrder: false,\n        defaultState: { sort: null, sortIndex: null },\n      })\n    } finally {\n      gridElement._suppressRansackSortSync = false\n    }\n\n    return\n  }\n\n  const firstSort = String(ransackConfig.currentSort).split(',')[0]?.trim()\n  if (!firstSort) return\n\n  const [field, direction] = firstSort.split(/\\s+/)\n  if (!field) return\n\n  const sortDirection = direction === 'desc' ? 'desc' : 'asc'\n  const allColumns = api.getColumns?.() || []\n  if (!allColumns.length) return\n\n  gridElement._suppressRansackSortSync = true\n\n  try {\n    const currentState = getColumnState(api)\n    const targetColumn = resolveSortTargetColumn(\n      allColumns,\n      field,\n      ransackConfig.currentSortCol\n    )\n\n    if (!targetColumn) return\n\n    const targetColId = getColumnId(targetColumn)\n    const updatedState = currentState.map((colState) => {\n      const colId = colState.colId\n      if (!colId) return colState\n\n      if (colId === targetColId) {\n        return { ...colState, sort: sortDirection, sortIndex: 0 }\n      }\n\n      const { sort, sortIndex, ...rest } = colState\n      return rest\n    })\n\n    api.applyColumnState({\n      state: updatedState,\n      applyOrder: false,\n      defaultState: { sort: null, sortIndex: null },\n    })\n  } finally {\n    gridElement._suppressRansackSortSync = false\n  }\n}\n\nexport default function initializeAgGrid(gridId) {\n  const init = () => {\n    if (!window.agGrid?.createGrid) return\n\n    const gridElement = getGridElement(gridId)\n    if (!gridElement) return\n\n    destroyExistingGrid(gridElement)\n\n    const gridOptions = parseGridOptions(gridElement, gridId)\n    if (!gridOptions) return\n\n    const rowIdField = gridOptions._rowIdField\n    delete gridOptions._rowIdField\n    if (rowIdField) {\n      gridOptions.getRowId = (params) => String(params.data?.[rowIdField])\n    }\n\n    const config = extractGridConfig(gridElement, gridOptions)\n    setupCellRenderers(gridOptions)\n    setupRowClassForRedFlag(gridOptions)\n    setupHeaderPinIcon(gridOptions)\n    setupStatePersistence(gridOptions, config, gridElement)\n    setupStretchLastColumn(gridOptions, config, gridElement)\n    setupAutoSizeColumnsByData(gridOptions, config)\n    setupFlexHeight(gridOptions, gridElement)\n    setupRansackSorting(gridOptions, gridElement)\n    setupHideableColumnsForCsvExport(gridOptions, gridElement)\n\n    const api = createGrid(gridElement, gridOptions, gridId, config)\n    setupResizeListener(api, config.stretchLastColumn)\n    setupFlexHeightResizeListener(gridElement)\n    registerHorizontalScrollMirror(gridElement, api)\n  }\n\n  if (document.readyState === 'complete') {\n    requestAnimationFrame(init)\n  } else {\n    window.addEventListener('load', () => requestAnimationFrame(init), { once: true })\n  }\n}\n\nfunction destroyExistingGrid(gridElement) {\n  teardownHorizontalScrollMirror(gridElement)\n\n  if (!gridElement._agGridApi) {\n    gridElement._agGridInitialized = false\n    return\n  }\n\n  gridElement._agGridApi.destroy()\n  gridElement._agGridApi = null\n  gridElement._agGridInitialized = false\n}\n\nfunction parseGridOptions(gridElement, gridId) {\n  try {\n    const gridOptions = JSON.parse(gridElement.getAttribute('data-grid-options'))\n\n    delete gridOptions._stateKey\n    delete gridOptions._sizeColumnsToFit\n\n    const normalizedTheme = normalizeTheme(gridOptions.theme)\n    if (normalizedTheme) {\n      gridOptions.theme = normalizedTheme\n    }\n\n    return gridOptions\n  } catch (error) {\n    return null\n  }\n}\n\nfunction extractGridConfig(gridElement, gridOptions) {\n  const stretchLastColumn = gridElement.getAttribute('data-stretch-last-column') === 'true'\n  const autoSizeColumnsByData = gridOptions._autoSizeColumnsByData === true\n  const stateKey = gridElement.getAttribute('data-state-key')\n  const shouldPersistState = !!stateKey\n  const userId = document.body?.getAttribute('data-user-id') || 'public'\n  const fullStateKey = shouldPersistState ? `${userId}/ag-grid-state-${stateKey}` : null\n  delete gridOptions._autoSizeColumnsByData\n\n  return {\n    stretchLastColumn,\n    autoSizeColumnsByData,\n    stateKey,\n    shouldPersistState,\n    fullStateKey,\n    userId,\n  }\n}\n\nfunction setupCellRenderers(gridOptions) {\n  createHtmlCellRenderer()\n\n  if (!gridOptions.columnDefs) return\n\n  gridOptions.columnDefs.forEach((col) => {\n    if (col.cellRenderer === 'html' || col.cellRenderer === 'actions') {\n      col.cellRenderer = window.agGridHtmlCellRenderer\n    }\n\n    setupDateFormatter(col)\n    setupArrayFormatter(col)\n  })\n}\n\nfunction setupRowClassForRedFlag(gridOptions) {\n  if (gridOptions.getRowClass) return\n  const rowData = gridOptions.rowData || []\n  const hasRedFlag = rowData.some(\n    (row) => row && Object.prototype.hasOwnProperty.call(row, 'red_flagged')\n  )\n  if (!hasRedFlag) return\n  gridOptions.getRowClass = (params) =>\n    params.data && (params.data.red_flagged === true || params.data.red_flagged === 'true')\n      ? 'ag-row-red-flag'\n      : undefined\n}\n\nfunction setupHeaderPinIcon(gridOptions) {\n  if (!gridOptions.pinColumns) return\n  delete gridOptions.pinColumns\n  gridOptions.components = { ...gridOptions.components, AgHeaderPinInner }\n  gridOptions.defaultColDef = {\n    ...gridOptions.defaultColDef,\n    headerComponentParams: {\n      ...gridOptions.defaultColDef?.headerComponentParams,\n      innerHeaderComponent: AgHeaderPinInner,\n    },\n  }\n}\n\nfunction setupStatePersistence(gridOptions, config, gridElement) {\n  if (!config.shouldPersistState || !config.fullStateKey) return\n\n  loadSavedState(gridOptions, config.fullStateKey, config.stretchLastColumn)\n  setupStateHandlers(gridOptions, config.fullStateKey, config.stretchLastColumn)\n}\n\nfunction loadSavedState(gridOptions, fullStateKey, stretchLastColumn) {\n  if (!window.localStorageObjectStore) return\n\n  const savedState = window.localStorageObjectStore.get(fullStateKey)\n  if (!savedState) return\n\n  gridOptions.initialState = sanitizePersistedGridState(savedState)\n\n  const originalOnGridReady = gridOptions.onGridReady\n  gridOptions.onGridReady = (params) => {\n    if (originalOnGridReady) originalOnGridReady(params)\n    if (!stretchLastColumn) return\n    setTimeout(() => {\n      stretchLastDisplayedColumn(params.api, 'onGridReady')\n    }, STRETCH_COLUMN_DELAY)\n  }\n\n  // After widths/pins restore, force header + body scroll containers back in sync.\n  gridOptions.onFirstDataRendered = wrapEventHandler(gridOptions.onFirstDataRendered, (params) => {\n    realignHorizontalScroll(params.api)\n  })\n}\n\nfunction setupStateHandlers(gridOptions, fullStateKey, stretchLastColumn) {\n  const saveState = createStateSaver(fullStateKey)\n\n  gridOptions.onColumnResized = wrapEventHandler(gridOptions.onColumnResized, (params) => {\n    saveState(params)\n    if (!stretchLastColumn || isGridInitializingEvent(params)) return\n    const isLastColumn = params.column && isLastNonPinnedColumn(params.api, params.column)\n    if (params.finished && !isLastColumn) {\n      stretchLastDisplayedColumn(params.api, 'onColumnResized')\n    }\n  })\n\n  gridOptions.onColumnMoved = wrapEventHandler(gridOptions.onColumnMoved, (params) => {\n    saveState(params)\n    if (!stretchLastColumn || isGridInitializingEvent(params)) return\n    stretchLastDisplayedColumn(params.api, 'onColumnMoved')\n  })\n\n  gridOptions.onColumnVisible = wrapEventHandler(gridOptions.onColumnVisible, (params) => {\n    saveState(params)\n    if (!stretchLastColumn || isGridInitializingEvent(params)) return\n    stretchLastDisplayedColumn(params.api, 'onColumnVisible')\n  })\n\n  // Pinned/unpinned doesn\u2019t always trigger resize/moved/visible events,\n  // but we still need to re-apply the \"stretch last non-pinned column\" logic.\n  gridOptions.onColumnPinned = wrapEventHandler(gridOptions.onColumnPinned, (params) => {\n    saveState(params)\n    if (!stretchLastColumn || isGridInitializingEvent(params)) return\n\n    // AG Grid updates column layout asynchronously during pin/unpin.\n    // Two attempts cover cases where the first read happens before the final state settles.\n    const api = params.api\n    const doStretch = () => stretchLastDisplayedColumn(api, 'onColumnPinned')\n\n    setTimeout(() => requestAnimationFrame(doStretch), 0)\n    setTimeout(() => doStretch(), STRETCH_COLUMN_DELAY)\n  })\n}\n\nfunction setupStretchLastColumn(gridOptions, config, gridElement) {\n  if (!config.stretchLastColumn) return\n\n  gridOptions.onFirstDataRendered = wrapEventHandler(gridOptions.onFirstDataRendered, (params) => {\n    stretchLastDisplayedColumn(params.api, 'onFirstDataRendered')\n  })\n}\n\nfunction autoSizeColumnsBasedOnData(api) {\n  if (!api?.getColumns || !api?.forEachNodeAfterFilterAndSort || !api?.applyColumnState) return\n\n  const columns = api.getColumns() || []\n  if (columns.length === 0) return\n\n  const CELL_HORIZONTAL_PADDING = 36\n  const MIN_FALLBACK_WIDTH = 100\n  const state = []\n  const textMeasurer = createTextMeasurer(getAgGridCellFont())\n\n  columns.forEach((column) => {\n    const colId = column.getColId?.()\n    if (!colId) return\n\n    const colDef = column.getColDef?.() || {}\n    const headerText = String(colDef.headerName || colDef.field || colId)\n    let maxContentWidth = textMeasurer.measure(headerText)\n\n    api.forEachNodeAfterFilterAndSort((node) => {\n      const rawValue = readCellValue(api, column, colId, node)\n      const textValue = normalizeCellText(rawValue)\n      const textWidth = textMeasurer.measure(textValue)\n      if (textWidth > maxContentWidth) maxContentWidth = textWidth\n    })\n\n    const computedWidth = Math.max(\n      colDef.minWidth || MIN_FALLBACK_WIDTH,\n      Math.ceil(maxContentWidth + CELL_HORIZONTAL_PADDING)\n    )\n\n    state.push({\n      colId,\n      width: computedWidth,\n      flex: null,\n    })\n  })\n\n  if (state.length > 0) {\n    api.applyColumnState({ state, applyOrder: false })\n\n    requestAnimationFrame(() => {\n      api.doLayout?.()\n      const nonPinnedDisplayed = getNonPinnedColumns(api)\n      const firstNonPinnedColumnId = nonPinnedDisplayed[0]?.getColId?.()\n      if (firstNonPinnedColumnId) {\n        api.ensureColumnVisible?.(firstNonPinnedColumnId, 'start')\n      }\n      api.setHorizontalScrollPosition?.(0)\n    })\n  }\n}\n\nfunction normalizeCellText(rawValue) {\n  if (rawValue === null || rawValue === undefined) return ''\n\n  const strValue = String(rawValue)\n  const htmlFreeValue = strValue.replace(/<[^>]*>/g, ' ')\n  return htmlFreeValue.replace(/\\s+/g, ' ').trim()\n}\n\nfunction getAgGridCellFont() {\n  const sampleCell = document.querySelector('.ag-grid-container .ag-cell')\n  if (!sampleCell) return '14px Inter, system-ui, sans-serif'\n\n  const style = window.getComputedStyle(sampleCell)\n  return `${style.fontStyle} ${style.fontVariant} ${style.fontWeight} ${style.fontSize}/${style.lineHeight} ${style.fontFamily}`\n}\n\nfunction createTextMeasurer(font) {\n  const canvas = document.createElement('canvas')\n  const context = canvas.getContext('2d')\n  if (context) {\n    context.font = font\n  }\n\n  return {\n    measure(text) {\n      if (!text) return 0\n      if (!context) return text.length * 9\n      return context.measureText(String(text)).width\n    },\n  }\n}\n\nfunction readCellValue(api, column, colId, node) {\n  if (!node) return ''\n\n  if (typeof api?.getValue === 'function') {\n    const valueFromApi = api.getValue(column, node)\n    if (valueFromApi !== null && valueFromApi !== undefined) return valueFromApi\n  }\n\n  const data = node.data || {}\n  if (Object.prototype.hasOwnProperty.call(data, colId)) return data[colId]\n\n  const field = column?.getColDef?.()?.field\n  if (field && Object.prototype.hasOwnProperty.call(data, field)) return data[field]\n\n  return ''\n}\n\nfunction setupAutoSizeColumnsByData(gridOptions, config) {\n  if (!config.autoSizeColumnsByData) return\n\n  const shouldAutoSize = () => {\n    if (!config.shouldPersistState || !config.fullStateKey) return true\n    if (!window.localStorageObjectStore) return true\n    return !window.localStorageObjectStore.get(config.fullStateKey)\n  }\n\n  gridOptions.onFirstDataRendered = wrapEventHandler(gridOptions.onFirstDataRendered, (params) => {\n    if (!shouldAutoSize()) return\n    requestAnimationFrame(() => autoSizeColumnsBasedOnData(params.api))\n  })\n\n  gridOptions.onColumnVisible = wrapEventHandler(gridOptions.onColumnVisible, (params) => {\n    if (!shouldAutoSize()) return\n    requestAnimationFrame(() => autoSizeColumnsBasedOnData(params.api))\n  })\n}\n\nfunction applyFlexHeight(gridElement, api) {\n  if (!gridElement || !api || gridElement._applyingFlexHeight) return\n\n  gridElement._applyingFlexHeight = true\n  try {\n    const rowCount = api.getDisplayedRowCount?.() ?? 0\n    if (rowCount === 0 && api.getGridOption?.('loading') !== false) {\n      api.setGridOption?.('loading', false)\n    }\n\n    const shouldUseAutoHeight = rowCount > 0 && rowCount <= AUTO_HEIGHT_MAX_ROWS\n\n    if (shouldUseAutoHeight) {\n      setDomLayout(api, 'autoHeight')\n      gridElement.classList.add('is-auto-height')\n      gridElement._agFlexHeight = null\n      requestAnimationFrame(() => syncVerticalScrollbarVisibility(gridElement))\n      return\n    }\n\n    setDomLayout(api, 'normal')\n    gridElement.classList.remove('is-auto-height')\n    const rowHeight = api.getGridOption?.('rowHeight') ?? FLEX_HEIGHT_ROW_DEFAULT\n    const headerEl = gridElement.querySelector('.ag-header')\n    const headerHeight = headerEl ? headerEl.offsetHeight : FLEX_HEIGHT_HEADER\n    const horizontalScrollEl = gridElement.querySelector('.ag-body-horizontal-scroll')\n    const horizontalScrollHeight = horizontalScrollEl ? horizontalScrollEl.offsetHeight : 0\n    const contentHeight =\n      headerHeight + rowCount * rowHeight + horizontalScrollHeight + FLEX_HEIGHT_SAFETY_BUFFER\n    const maxHeight = window.innerHeight - FLEX_HEIGHT_VIEWPORT_OFFSET\n    const height = Math.round(Math.max(FLEX_HEIGHT_MIN, Math.min(contentHeight, maxHeight)))\n    if (gridElement._agFlexHeight === height) return\n\n    gridElement._agFlexHeight = height\n    gridElement.style.height = `${height}px`\n    requestAnimationFrame(() => syncVerticalScrollbarVisibility(gridElement))\n  } finally {\n    gridElement._applyingFlexHeight = false\n  }\n}\n\nfunction setDomLayout(api, domLayout) {\n  const currentLayout = api.getGridOption?.('domLayout')\n  if (currentLayout === domLayout) return\n\n  if (typeof api.setGridOption === 'function') {\n    api.setGridOption('domLayout', domLayout)\n    return\n  }\n\n  if (typeof api.setDomLayout === 'function') {\n    api.setDomLayout(domLayout)\n  }\n}\n\nfunction syncVerticalScrollbarVisibility(gridElement) {\n  const verticalScrollbar = gridElement?.querySelector('.ag-body-vertical-scroll')\n  const bodyViewport = gridElement?.querySelector('.ag-body-viewport')\n\n  if (!verticalScrollbar || !bodyViewport) return\n\n  const hasVerticalOverflow = bodyViewport.scrollHeight > bodyViewport.clientHeight + 1\n  verticalScrollbar.style.display = hasVerticalOverflow ? '' : 'none'\n}\n\nfunction setupFlexHeight(gridOptions, gridElement) {\n  gridOptions.onFirstDataRendered = wrapEventHandler(gridOptions.onFirstDataRendered, (params) => {\n    applyFlexHeight(gridElement, params.api)\n  })\n  gridOptions.onModelUpdated = wrapEventHandler(gridOptions.onModelUpdated, (params) => {\n    applyFlexHeight(gridElement, params.api)\n  })\n}\n\nfunction setupFlexHeightResizeListener(gridElement) {\n  let resizeTimeout\n  window.addEventListener('resize', () => {\n    const api = gridElement?._agGridApi\n    if (!api) return\n    if (resizeTimeout) clearTimeout(resizeTimeout)\n    resizeTimeout = setTimeout(() => applyFlexHeight(gridElement, api), RESIZE_DEBOUNCE_DELAY)\n  })\n}\n\nfunction createGrid(gridElement, gridOptions, gridId, config) {\n  if (config.stretchLastColumn && gridOptions.autoSizeStrategy) {\n    delete gridOptions.autoSizeStrategy\n  }\n\n  const api = window.agGrid.createGrid(gridElement, gridOptions)\n\n  gridElement._agGridApi = api\n  gridElement._agGridInitialized = true\n\n  if ((api.getDisplayedRowCount?.() ?? 0) === 0) {\n    api.setGridOption?.('loading', false)\n    api.showNoRowsOverlay?.()\n  }\n\n  if (config.stretchLastColumn) {\n    stretchLastDisplayedColumn(api, 'created')\n  }\n\n  return api\n}\n\nfunction teardownHorizontalScrollMirror(gridElement) {\n  if (!gridElement) return\n\n  if (gridElement._horizontalScrollMirrorObserver) {\n    gridElement._horizontalScrollMirrorObserver.disconnect()\n    gridElement._horizontalScrollMirrorObserver = null\n  }\n\n  if (typeof gridElement._horizontalScrollMirrorCleanup === 'function') {\n    gridElement._horizontalScrollMirrorCleanup()\n    gridElement._horizontalScrollMirrorCleanup = null\n  }\n}\n\nfunction registerHorizontalScrollMirror(gridElement, api) {\n  if (gridElement.getAttribute('data-mirror-horizontal-scroll') !== 'true') return\n\n  const tryMount = () => mountHorizontalScrollMirror(gridElement, api)\n\n  if (tryMount()) return\n\n  const observer = new MutationObserver(() => {\n    if (tryMount()) {\n      observer.disconnect()\n      gridElement._horizontalScrollMirrorObserver = null\n    }\n  })\n  observer.observe(gridElement, { childList: true, subtree: true })\n  gridElement._horizontalScrollMirrorObserver = observer\n}\n\nfunction resolveHorizontalScrollPair(root) {\n  const fakeV = root.querySelector('.ag-body-horizontal-scroll-viewport')\n  const fakeC = root.querySelector('.ag-body-horizontal-scroll-container')\n  if (fakeV && fakeC) return { scrollEl: fakeV, widthEl: fakeC }\n\n  const centerV = root.querySelector('.ag-center-cols-viewport')\n  const centerC = root.querySelector('.ag-center-cols-container')\n  if (centerV && centerC) return { scrollEl: centerV, widthEl: centerC }\n\n  return null\n}\n\nfunction mountHorizontalScrollMirror(gridElement, api) {\n  if (gridElement.getAttribute('data-mirror-horizontal-scroll') !== 'true') return true\n  if (gridElement.querySelector('.ag-grid-horizontal-scroll-mirror-wrapper')) return true\n\n  const root = gridElement.querySelector('.ag-root-wrapper') || gridElement\n  const pair = resolveHorizontalScrollPair(root)\n  if (!pair) return false\n\n  const { scrollEl: hViewport, widthEl: hContainer } = pair\n\n  const wrapper = document.createElement('div')\n  wrapper.className = 'ag-grid-horizontal-scroll-mirror-wrapper'\n  wrapper.setAttribute('aria-hidden', 'true')\n\n  const leftSpacer = document.createElement('div')\n  leftSpacer.className = 'ag-grid-horizontal-scroll-mirror-spacer ag-grid-horizontal-scroll-mirror-spacer--left'\n\n  const mirror = document.createElement('div')\n  mirror.className = 'ag-grid-horizontal-scroll-mirror'\n\n  const inner = document.createElement('div')\n  inner.className = 'ag-grid-horizontal-scroll-mirror__inner'\n  mirror.appendChild(inner)\n\n  const rightSpacer = document.createElement('div')\n  rightSpacer.className = 'ag-grid-horizontal-scroll-mirror-spacer ag-grid-horizontal-scroll-mirror-spacer--right'\n\n  wrapper.appendChild(leftSpacer)\n  wrapper.appendChild(mirror)\n  wrapper.appendChild(rightSpacer)\n\n  const header = gridElement.querySelector('.ag-header')\n  if (header && header.parentNode) {\n    header.parentNode.insertBefore(wrapper, header.nextSibling)\n  } else {\n    gridElement.insertBefore(wrapper, gridElement.firstChild)\n  }\n\n  let syncing = false\n\n  const syncSpacers = () => {\n    const nativeLeft = root.querySelector('.ag-horizontal-left-spacer')\n    const nativeRight = root.querySelector('.ag-horizontal-right-spacer')\n    const leftW = nativeLeft?.offsetWidth\n      ?? root.querySelector('.ag-pinned-left-cols-container')?.offsetWidth\n      ?? 0\n    const rightW = nativeRight?.offsetWidth\n      ?? root.querySelector('.ag-pinned-right-cols-container')?.offsetWidth\n      ?? 0\n    leftSpacer.style.width = `${leftW}px`\n    rightSpacer.style.width = `${rightW}px`\n  }\n\n  const sync = () => {\n    syncSpacers()\n    const viewportWidth = Math.max(hViewport.clientWidth || 0, hViewport.offsetWidth || 0)\n    const contentWidth = Math.max(\n      hContainer.scrollWidth || 0,\n      hContainer.offsetWidth || 0,\n      hViewport.scrollWidth || 0,\n      1\n    )\n    const hasHorizontalOverflow = contentWidth > viewportWidth + 1\n\n    wrapper.style.display = hasHorizontalOverflow ? 'flex' : 'none'\n    inner.style.width = `${Math.ceil(contentWidth)}px`\n    mirror.scrollLeft = hViewport.scrollLeft\n  }\n\n  const onMirrorScroll = () => {\n    if (syncing) return\n    syncing = true\n    // Prefer the AG Grid API so header + body + fake scrollbar stay aligned.\n    if (typeof api?.setHorizontalScrollPosition === 'function') {\n      api.setHorizontalScrollPosition(mirror.scrollLeft)\n    } else {\n      hViewport.scrollLeft = mirror.scrollLeft\n    }\n    syncing = false\n  }\n\n  const onViewportScroll = () => {\n    if (syncing) return\n    syncing = true\n    mirror.scrollLeft = hViewport.scrollLeft\n    syncing = false\n  }\n\n  mirror.addEventListener('scroll', onMirrorScroll, { passive: true })\n  hViewport.addEventListener('scroll', onViewportScroll, { passive: true })\n\n  const ro = new ResizeObserver(() => requestAnimationFrame(sync))\n  ro.observe(hViewport)\n  ro.observe(hContainer)\n  const nativeLeft = root.querySelector('.ag-horizontal-left-spacer')\n  const nativeRight = root.querySelector('.ag-horizontal-right-spacer')\n  if (nativeLeft) ro.observe(nativeLeft)\n  if (nativeRight) ro.observe(nativeRight)\n\n  const relayout = () => requestAnimationFrame(sync)\n  const layoutEvents = [\n    'columnResized',\n    'columnVisible',\n    'columnPinned',\n    'displayedColumnsChanged',\n    'modelUpdated',\n  ]\n  if (api && typeof api.addEventListener === 'function') {\n    layoutEvents.forEach((e) => api.addEventListener(e, relayout))\n  }\n\n  gridElement._horizontalScrollMirrorCleanup = () => {\n    mirror.removeEventListener('scroll', onMirrorScroll)\n    hViewport.removeEventListener('scroll', onViewportScroll)\n    ro.disconnect()\n    if (api && typeof api.removeEventListener === 'function') {\n      layoutEvents.forEach((e) => api.removeEventListener(e, relayout))\n    }\n    wrapper.remove()\n  }\n\n  requestAnimationFrame(sync)\n  return true\n}\n\nfunction setupResizeListener(api, stretchLastColumn) {\n  if (!stretchLastColumn || !api) return\n\n  let resizeTimeout\n  window.addEventListener('resize', () => {\n    if (!api) return\n    if (resizeTimeout) clearTimeout(resizeTimeout)\n    resizeTimeout = setTimeout(() => {\n      stretchLastDisplayedColumn(api, 'resize')\n    }, RESIZE_DEBOUNCE_DELAY)\n  })\n}\n\nfunction stretchLastDisplayedColumn(api, source) {\n  if (!api || api._stretchingLastColumn) return\n\n  api._stretchingLastColumn = true\n\n  try {\n    stretchLastDisplayedColumnNow(api, source)\n  } finally {\n    queueMicrotask(() => {\n      api._stretchingLastColumn = false\n    })\n  }\n}\n\nfunction stretchLastDisplayedColumnNow(api, source) {\n  const nonPinnedDisplayed = getNonPinnedColumns(api)\n  if (nonPinnedDisplayed.length === 0) return\n\n  const firstNonPinnedColumn = nonPinnedDisplayed[0]\n  const firstNonPinnedColumnId = firstNonPinnedColumn?.getColId?.()\n\n  const lastColumn = nonPinnedDisplayed[nonPinnedDisplayed.length - 1]\n  const lastColumnId = lastColumn?.getColId?.()\n  if (!lastColumnId) return\n  const preserveWidth = source === 'onColumnResized'\n  const displayedIds = nonPinnedDisplayed.map((col) => getColumnId(col)).filter(Boolean)\n  const currentStateById = new Map((getColumnState(api) || []).map((state) => [state.colId, state]))\n  const state = []\n\n  displayedIds.forEach((colId) => {\n    if (colId === lastColumnId) return\n    const current = currentStateById.get(colId)\n    if (current?.flex != null) {\n      state.push({ colId, flex: null })\n    }\n  })\n\n  if (preserveWidth) {\n    const currentWidth = lastColumn.getActualWidth?.()\n    if (currentWidth) {\n      state.push({ colId: lastColumnId, width: currentWidth, flex: null })\n    } else {\n      state.push({ colId: lastColumnId, flex: null })\n    }\n  } else {\n    state.push({ colId: lastColumnId, width: null, flex: 1 })\n  }\n\n  if (state.length === 0) return\n\n  // Do not reset width via defaultState \u2014 that wipes persisted/manual column widths\n  // for every column not listed in `state` and desyncs header vs body on re-search.\n  api.applyColumnState({\n    state,\n    applyOrder: false,\n    defaultState: { flex: null },\n  })\n\n  api.doLayout?.()\n\n  if (firstNonPinnedColumnId) {\n    api.ensureColumnVisible?.(firstNonPinnedColumnId, 'start')\n  }\n  api.setHorizontalScrollPosition?.(0)\n}\n\nfunction buildColumnState(allDisplayed, lastColumnId, preserveLastColumnWidth = false) {\n  return allDisplayed\n    .map((col) => {\n      const colId = getColumnId(col)\n      if (!colId) return null\n\n      const isLastColumn = colId === lastColumnId\n      const state = { colId }\n\n      if (isLastColumn) {\n        if (preserveLastColumnWidth) {\n          const currentWidth = col.getActualWidth?.()\n          if (currentWidth) {\n            state.width = currentWidth\n            state.flex = null\n          }\n        } else {\n          state.width = null\n          state.flex = 1\n        }\n      } else {\n        state.flex = null\n        state.width = null\n      }\n\n      return state\n    })\n    .filter((s) => s !== null)\n}\n\nfunction getColumnId(col) {\n  return col?.getColId?.() || col?.colId || col?.colDef?.field || null\n}\n\nfunction isLastNonPinnedColumn(api, column) {\n  if (!api || !column) return false\n\n  const nonPinnedDisplayed = getNonPinnedColumns(api)\n  if (nonPinnedDisplayed.length === 0) return false\n\n  const lastColumn = nonPinnedDisplayed[nonPinnedDisplayed.length - 1]\n  return getColumnId(lastColumn) === getColumnId(column)\n}\n\nfunction createColumnFilter(gridId) {\n  return {\n    columnFilterOpen: false,\n    columnSearch: '',\n    columns: [],\n\n    init() {\n      this.$nextTick(() => {\n        this.waitForGrid(() => {\n          this.loadColumns()\n          this.setupColumnVisibilityListener()\n        })\n      })\n    },\n\n    waitForGrid(callback, maxAttempts = GRID_INIT_MAX_ATTEMPTS) {\n      let attempts = 0\n      const checkGrid = () => {\n        const gridElement = getGridElement(gridId)\n        if (getGridApi(gridElement)) {\n          callback()\n        } else if (attempts < maxAttempts) {\n          attempts++\n          setTimeout(checkGrid, GRID_INIT_RETRY_DELAY)\n        }\n      }\n      checkGrid()\n    },\n\n    loadColumns() {\n      const gridElement = getGridElement(gridId)\n      const api = getGridApi(gridElement)\n      if (!api) return\n\n      const allColumns = api.getColumns() || []\n\n      this.columns = allColumns.map((col) => {\n        const colDef = col.getColDef?.() || {}\n        return {\n          colId: col.getColId?.() || colDef.field,\n          headerName: colDef.headerName || colDef.field || '',\n          visible: col.isVisible?.() ?? !colDef.hide,\n          lockVisible: colDef.lockVisible === true,\n        }\n      })\n    },\n\n    setupColumnVisibilityListener() {\n      const gridElement = getGridElement(gridId)\n      const api = getGridApi(gridElement)\n      if (!api) return\n\n      api.addEventListener('columnVisible', () => {\n        this.loadColumns()\n      })\n    },\n\n    get filteredColumns() {\n      if (!this.columnSearch) return this.columns\n\n      const search = this.columnSearch.toLowerCase()\n      return this.columns.filter((col) => col.headerName.toLowerCase().includes(search))\n    },\n\n    toggleColumnFilter() {\n      this.columnFilterOpen = !this.columnFilterOpen\n      if (this.columnFilterOpen) {\n        this.loadColumns()\n      }\n    },\n\n    toggleColumnVisibility(colId, visible) {\n      const gridElement = getGridElement(gridId)\n      const api = getGridApi(gridElement)\n      if (!api) return\n\n      api.setColumnVisible(colId, visible)\n\n      const column = this.columns.find((c) => c.colId === colId)\n      if (column) {\n        column.visible = visible\n      }\n\n      setTimeout(() => {\n        const gridElement = getGridElement(gridId)\n        if (gridElement?.getAttribute('data-stretch-last-column') === 'true') {\n          stretchLastDisplayedColumn(api, 'columnVisibility')\n        }\n      }, RESIZE_DEBOUNCE_DELAY)\n    },\n  }\n}\n\nfunction cleanupGridsOnTurboCache() {\n  document.querySelectorAll('.ag-grid-container').forEach((element) => {\n    teardownHorizontalScrollMirror(element)\n    if (element._agGridApi) {\n      element._agGridApi.destroy()\n      element._agGridApi = null\n      element._agGridInitialized = false\n    }\n  })\n}\n\nwindow.initializeAgGrid = initializeAgGrid\n\nexport { agGridRefine as Refine }\n\nif (typeof window !== 'undefined') {\n  window.agGridColumnFilter =\n    window.agGridColumnFilter ||\n    function (gridId) {\n      return createColumnFilter(gridId)\n    }\n}\n\nregisterTurboFrameLoadingListeners()\n\nif (typeof Turbo !== 'undefined') {\n  document.addEventListener('turbo:before-cache', cleanupGridsOnTurboCache)\n}\n", "function getGridElement(elOrGridId) {\n  if (typeof elOrGridId === 'object' && elOrGridId?.dataset) {\n    const gridId = elOrGridId.dataset.gridId\n    return gridId ? document.getElementById(gridId) : null\n  }\n  const gridId = typeof elOrGridId === 'string' ? elOrGridId : null\n  return gridId ? document.getElementById(gridId) : elOrGridId\n}\n\nfunction parseRefineColumns(element) {\n  if (typeof element?.dataset?.refineColumns !== 'string') return []\n  try {\n    return JSON.parse(element.dataset.refineColumns)\n  } catch {\n    return []\n  }\n}\n\nfunction getColumnData(columns, colId) {\n  return columns.find((c) => c.col_id === colId)\n}\n\nfunction getInitialVisibility(columns, colId) {\n  const colData = getColumnData(columns, colId)\n  return colData?.initially_visible !== false\n}\n\nfunction checkColumnVisibility(api, colId) {\n  const col = api.getColumn?.(colId)\n  if (!col) return null\n  return col.isVisible?.() !== false\n}\n\nfunction humanizeString(str) {\n  if (typeof str !== 'string') return ''\n  return str\n    .replace(/^[\\s_]+|[\\s_]+$/g, '')\n    .replace(/[_-\\s]+/g, ' ')\n    .replace(/^[a-z]/, (m) => m.toUpperCase())\n}\n\nexport default function agGridRefine(elOrGridId, columns) {\n  const gridEl = getGridElement(elOrGridId)\n  const cols =\n    Array.isArray(columns) && columns.length > 0\n      ? columns\n      : parseRefineColumns(typeof elOrGridId === 'object' ? elOrGridId : null)\n\n  return {\n    hideableColumns: Array.isArray(cols) ? cols : [],\n\n    isColumnVisible(colId) {\n      if (!gridEl) return getInitialVisibility(this.hideableColumns, colId)\n\n      const api = gridEl._agGridApi\n      if (!api) return getInitialVisibility(this.hideableColumns, colId)\n\n      const visibility = checkColumnVisibility(api, colId)\n      if (visibility !== null) return visibility\n\n      return getInitialVisibility(this.hideableColumns, colId)\n    },\n\n    toggleColumnVisibility(colId) {\n      if (!gridEl?._agGridApi) return\n\n      const api = gridEl._agGridApi\n      const visible = this.isColumnVisible(colId)\n\n      api.applyColumnState({\n        state: [{ colId, hide: visible }],\n        applyOrder: false,\n      })\n    },\n\n    humanize(str) {\n      return humanizeString(str)\n    },\n  }\n}\n", "const MAX_PINNED_LEFT_COLUMNS = 12\nconst PIN_LIMIT_MESSAGE = 'Pin limit reached. Unpin a column to continue.'\n\nclass AgHeaderPinInner {\n  constructor() {\n    this.eGui = null\n    this.column = null\n    this.api = null\n    this.columnApi = null\n    this.pinButton = null\n    this.textSpan = null\n    this.columnPinnedListener = null\n  }\n\n  colKeysForState() {\n    return new Set(\n      [\n        this.column?.getColId?.(),\n        this.column?.getColDef?.()?.colId,\n        this.column?.getColDef?.()?.field,\n      ]\n        .filter(Boolean)\n        .map(String)\n    )\n  }\n\n  findStateRow(colId) {\n    const api = this.getColumnApi()\n    if (!api?.getColumnState) return null\n    const state = api.getColumnState() || []\n    const keys = colId ? new Set([String(colId), ...this.colKeysForState()]) : this.colKeysForState()\n    return state.find((c) => keys.has(String(c.colId ?? c.field ?? ''))) ?? null\n  }\n\n  getPinnedSideFromState(colId) {\n    const p = this.findStateRow(colId)?.pinned\n    return p === 'left' || p === 'right' ? p : null\n  }\n\n  isColumnPinned() {\n    const pinned = this.column?.getPinned?.() ?? this.column?.getColDef?.()?.pinned ?? null\n    return pinned === 'left' || pinned === 'right'\n  }\n\n  updatePinIcon() {\n    if (!this.pinButton) return\n    const colId = this.column?.getColId?.() ?? this.column?.getColDef?.()?.field\n    const side = colId ? this.getPinnedSideFromState(colId) : null\n    const pinned = side != null || (!colId && this.isColumnPinned())\n\n    if (pinned) {\n      this.pinButton.innerHTML = `\n        <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n          <path d=\"M15.113 3.21l.094 .083l5.5 5.5a1 1 0 0 1 -1.175 1.59l-3.172 3.171l-1.424 3.797a1 1 0 0 1 -.158 .277l-.07 .08l-1.5 1.5a1 1 0 0 1 -1.32 .082l-.095 -.083l-2.793 -2.792l-3.793 3.792a1 1 0 0 1 -1.497 -1.32l.083 -.094l3.792 -3.793l-2.792 -2.793a1 1 0 0 1 -.083 -1.32l.083 -.094l1.5 -1.5a1 1 0 0 1 .258 -.187l.098 -.042l3.796 -1.425l3.171 -3.17a1 1 0 0 1 1.497 -1.26z\"/>\n        </svg>\n      `\n    } else {\n      this.pinButton.innerHTML = `\n        <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" width=\"20\" height=\"20\">\n          <path d=\"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4\"/>\n          <path d=\"M9 15l-4.5 4.5\"/>\n          <path d=\"M14.5 4l5.5 5.5\"/>\n        </svg>\n      `\n    }\n\n    this.pinButton.setAttribute('title', pinned ? 'Unpin' : 'Pin')\n  }\n\n  getColumnApi() {\n    const ok = (x) => x && typeof x.applyColumnState === 'function' && typeof x.getColumnState === 'function'\n    if (ok(this.api)) return this.api\n    if (ok(this.columnApi)) return this.columnApi\n    const domApi = this.eGui?.closest?.('.ag-grid-container')?._agGridApi\n    return ok(domApi) ? domApi : null\n  }\n\n  getPinnedLeftCount() {\n    const api = this.getColumnApi()\n    if (!api) return 0\n\n    const displayed = api.getAllDisplayedColumns?.()\n    if (Array.isArray(displayed) && displayed.length > 0) {\n      return displayed.filter((col) => col.getPinned?.() === 'left').length\n    }\n\n    if (!api.getColumnState) return 0\n    return (api.getColumnState() || []).filter((c) => c.pinned === 'left').length\n  }\n\n  onPinClick = (e) => {\n    e.preventDefault()\n    e.stopPropagation()\n    if (!this.column) return\n    const columnApi = this.getColumnApi()\n    if (!columnApi) return\n    const colId = this.column.getColId?.() ?? this.column?.getColDef?.()?.field\n    if (!colId) return\n\n    const pinnedSide = this.getPinnedSideFromState(colId)\n\n    if (pinnedSide === 'left' || pinnedSide === 'right') {\n      const fullState = columnApi.getColumnState?.() || []\n      if (fullState.length === 0) {\n        columnApi.applyColumnState({ state: [{ colId, pinned: null }], applyOrder: true })\n        this.updatePinIcon()\n        return\n      }\n\n      const gridApi = this.getColumnApi()\n      const defaultOrder = (gridApi?.getGridOption?.('columnDefs') || [])\n        .map((c) => c.colId ?? c.field)\n        .filter(Boolean)\n      const orderIdx = (c) => {\n        const i = defaultOrder.indexOf(c.colId ?? c.field)\n        return i === -1 ? 999 : i\n      }\n\n      const updated = fullState.map((c) =>\n        (c.colId ?? c.field) === colId ? { ...c, pinned: null } : c\n      )\n      const left = updated.filter((c) => c.pinned === 'left')\n      const center = updated\n        .filter((c) => c.pinned !== 'left' && c.pinned !== 'right')\n        .sort((a, b) => orderIdx(a) - orderIdx(b))\n      const right = updated.filter((c) => c.pinned === 'right')\n\n      columnApi.applyColumnState({\n        state: [...left, ...center, ...right],\n        applyOrder: true,\n      })\n      this.updatePinIcon()\n      return\n    }\n\n    const pinnedLeftCount = this.getPinnedLeftCount()\n\n    // If user is about to reach the limit (e.g. 12 -> 13), show the message,\n    // but still allow pinning. If they try to go over the limit, block it.\n    if (pinnedLeftCount >= MAX_PINNED_LEFT_COLUMNS) {\n      this.showWarning(PIN_LIMIT_MESSAGE)\n      return\n    }\n\n    if (pinnedLeftCount === MAX_PINNED_LEFT_COLUMNS - 1) {\n      this.showWarning(PIN_LIMIT_MESSAGE)\n    }\n\n    columnApi.applyColumnState({\n      state: [{ colId, pinned: 'left' }],\n      applyOrder: true,\n    })\n    this.updatePinIcon()\n  }\n\n  showWarning(message) {\n    const detail = { type: 'alert', message }\n    try {\n      if (typeof window.notifyNow === 'function') {\n        window.notifyNow('alert', message)\n      } else if (document.body) {\n        document.body.dispatchEvent(new CustomEvent('notification-added', { bubbles: true, detail }))\n      }\n    } catch (err) {\n      document.body?.dispatchEvent(new CustomEvent('notification-added', { bubbles: true, detail }))\n    }\n  }\n\n  init(params) {\n    this.column = params.column\n    this.api = params.api\n    this.columnApi = params.columnApi\n    this.eGui = document.createElement('div')\n    this.eGui.className = 'ag-header-pin-inner flex items-center gap-1 min-w-0 flex-1'\n    this.eGui.setAttribute('role', 'presentation')\n\n    this.textSpan = document.createElement('span')\n    this.textSpan.className = 'ag-header-pin-inner__text truncate'\n    this.textSpan.textContent = params.displayName ?? ''\n\n    this.pinButton = document.createElement('button')\n    this.pinButton.type = 'button'\n    this.pinButton.style.cssText = `\n      position: relative;\n      width: 20px;\n      height: 20px;\n      padding: 0;\n      border: none;\n      background: none;\n      cursor: pointer;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      vertical-align: middle;\n      color: #9CA3AF;\n      transition: opacity 0.2s ease, color 0.2s ease;\n      line-height: 1;\n      margin-left: 4px;\n    `\n    this.pinButton.setAttribute('aria-label', 'Pin or unpin column')\n    this.pinButton.addEventListener('click', this.onPinClick)\n    this.pinButton.addEventListener('mouseenter', () => {\n      this.pinButton.style.color = '#6B7280'\n    })\n    this.pinButton.addEventListener('mouseleave', () => {\n      this.pinButton.style.color = '#9CA3AF'\n    })\n    this.updatePinIcon()\n\n    this.eGui.appendChild(this.textSpan)\n    this.eGui.appendChild(this.pinButton)\n\n    const gridApi = this.getColumnApi()\n    if (gridApi?.addEventListener) {\n      this.columnPinnedListener = () => this.updatePinIcon()\n      gridApi.addEventListener('columnPinned', this.columnPinnedListener)\n    }\n  }\n\n  getGui() {\n    return this.eGui\n  }\n\n  refresh(params) {\n    if (this.textSpan && params.displayName != null) {\n      this.textSpan.textContent = params.displayName\n    }\n    if (params.column) {\n      this.column = params.column\n    }\n    this.updatePinIcon()\n    return true\n  }\n\n  destroy() {\n    this.pinButton?.removeEventListener('click', this.onPinClick)\n    const gridApi = this.getColumnApi()\n    if (gridApi?.removeEventListener && this.columnPinnedListener) {\n      gridApi.removeEventListener('columnPinned', this.columnPinnedListener)\n    }\n  }\n}\n\nexport default AgHeaderPinInner\n", "function setDirection(direction, portalElement, target) {\n  let { top, left } = target.getBoundingClientRect()\n  top += window.scrollY\n  left += window.scrollX\n\n  if (direction === 'top') {\n    portalElement.style.top = `${top - portalElement.offsetHeight}px`\n  }\n\n  if (direction === 'bottom') {\n    portalElement.style.top = `${top + target.offsetHeight}px`\n  }\n\n  if (direction === 'left') {\n    portalElement.style.left = `${left - 6 - portalElement.offsetWidth}px`\n  }\n\n  if (direction === 'right') {\n    portalElement.style.left = `${left + 6 + target.offsetWidth}px`\n  }\n}\n\nfunction setAlignment(direction, alignment, portalElement, target) {\n  let { top, left, width, height } = target.getBoundingClientRect()\n\n  top += window.scrollY\n  left += window.scrollX\n\n  if (direction === 'right' || direction === 'left') {\n    if (alignment === 'center') {\n      portalElement.style.top = `${top + height / 2 - portalElement.offsetHeight / 2}px`\n    }\n\n    if (alignment === 'top') {\n      portalElement.style.top = `${top}px`\n    }\n\n    if (alignment === 'bottom') {\n      portalElement.style.top = `${top + height - portalElement.offsetHeight}px`\n    }\n  }\n\n  if (direction === 'bottom' || direction === 'top') {\n    if (alignment === 'center') {\n      portalElement.style.left = `${left + width / 2 - portalElement.offsetWidth / 2}px`\n    }\n\n    if (alignment === 'left') {\n      portalElement.style.left = `${left}px`\n    }\n\n    if (alignment === 'right') {\n      portalElement.style.left = `${left + width - portalElement.offsetWidth}px`\n    }\n  }\n}\n\nfunction createArrow(direction, options = {}) {\n  const arrow = document.createElement('div')\n\n  arrow.style.position = 'absolute'\n  arrow.style.height = '8px'\n  arrow.style.width = '8px'\n  arrow.style.transform = 'rotate(45deg)'\n\n  if (options.classList) {\n    arrow.classList.add(...options.classList)\n  }\n\n  if (options.style) {\n    options.style.forEach((style, value) => {\n      arrow.style[style] = value\n    })\n  }\n\n  if (direction === 'top') {\n    arrow.style.top = 'calc(100% - 4px)'\n    arrow.style.left = 'calc(50% - 4px)'\n  }\n\n  if (direction === 'bottom') {\n    arrow.style.top = '-4px'\n    arrow.style.left = 'calc(50% - 4px)'\n  }\n\n  if (direction === 'left') {\n    arrow.style.top = 'calc(50% - 4px)'\n    arrow.style.left = 'calc(100% - 4px)'\n  }\n\n  if (direction === 'right') {\n    arrow.style.top = 'calc(50% - 4px)'\n    arrow.style.left = '-4px'\n  }\n\n  return arrow\n}\n\nexport default function popoverFactory(\n  portalElement,\n  direction,\n  elementType = 'tooltip',\n  { alignment = 'center', arrow = {} }\n) {\n  function show(event) {\n    const popoverContent = event.currentTarget.querySelectorAll(\n      `*[data-${elementType}]`\n    )[0]\n\n    if (!popoverContent) return\n\n    portalElement.innerHTML = popoverContent.innerHTML\n    portalElement.style.display = 'block'\n\n    setDirection(direction, portalElement, event.currentTarget)\n    setAlignment(direction, alignment, portalElement, event.currentTarget)\n\n    if (Object.entries(arrow).length > 0) {\n      portalElement.appendChild(createArrow(direction, arrow))\n    }\n  }\n\n  function hide() {\n    portalElement.style.display = 'none'\n  }\n\n  function toggleDisplay(event) {\n    const current = portalElement.style.display\n\n    if (current === 'none') {\n      show(event)\n    } else {\n      hide()\n    }\n  }\n\n  return { show, hide, toggleDisplay }\n}\n", "import popoverFactory from './popoverFactory'\n\nexport default function Tooltip(portalElement, direction) {\n  return popoverFactory(\n    portalElement,\n    direction,\n    'tooltip',\n    { arrow: { classList: ['bg-gray-900'] } }\n  )\n}\n", "export default function (drawerContentId) {\n  return {\n    title: 'Panel title',\n    width: null,\n    opened: false,\n    dismissOnAway: true,\n    open: function (event) {\n      const drawerContent = document.getElementById(drawerContentId)\n\n      let { title, dismiss_on_away, template, callback, width } = event.detail\n\n      this.title = title || 'Panel title'\n      this.width = width || 'max-w-2xl'\n      this.dismissOnAway = dismiss_on_away !== undefined ? dismiss_on_away : true\n\n      const templateTag = template && document.getElementById(template)\n\n      if (templateTag) {\n        drawerContent.innerHTML = templateTag.innerHTML\n      }\n\n      if (callback) callback()\n\n      this.opened = true\n    },\n    dismiss: function () {\n      this.opened = false\n\n      document.getElementById('drawer_app').removeAttribute('src')\n    }\n  }\n}\n", "import popoverFactory from './popoverFactory'\n\nexport default function DropdownMenu(portalElement, direction, alignment) {\n  return popoverFactory(portalElement, direction, 'dropdown', { alignment })\n}\n", "import popoverFactory from './popoverFactory'\n\nexport default function Tooltip(portalElement, direction, alignment, classList) {\n  return popoverFactory(\n    portalElement,\n    direction,\n    'popover',\n    { alignment, arrow: { classList } }\n  )\n}\n", "// The require scope\nvar __webpack_require__ = {};\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - SAVE is used, on the worker-thread, when saving modified annotations.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - IS_EDITING is used when editing is active in the viewer.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  SAVE: 0x08,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  IS_EDITING: 0x80,\n  OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  HIGHLIGHT: 9,\n  STAMP: 13,\n  INK: 15,\n  POPUP: 16,\n  SIGNATURE: 101,\n  COMMENT: 102,\n};\n\nconst AnnotationEditorParamsType = {\n  RESIZE: 1,\n  CREATE: 2,\n  FREETEXT_SIZE: 11,\n  FREETEXT_COLOR: 12,\n  FREETEXT_OPACITY: 13,\n  INK_COLOR: 21,\n  INK_THICKNESS: 22,\n  INK_OPACITY: 23,\n  HIGHLIGHT_COLOR: 31,\n  HIGHLIGHT_THICKNESS: 32,\n  HIGHLIGHT_FREE: 33,\n  HIGHLIGHT_SHOW_ALL: 34,\n  DRAW_STEP: 41,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst MeshFigureType = {\n  TRIANGLES: 1,\n  LATTICE: 2,\n  PATCH: 3,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  // PLEASE NOTE: We purposely keep any removed operators commented out, since\n  //              re-numbering the list would risk breaking third-party users.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  // beginAnnotations: 78,\n  // endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  // paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n  setStrokeTransparent: 92,\n  setFillTransparent: 93,\n  rawFillPath: 94,\n};\n\n// In order to have a switch statement that is fast (i.e. which use a jump\n// table), we need to have the OPS in a contiguous range.\nconst DrawOPS = {\n  moveTo: 0,\n  lineTo: 1,\n  curveTo: 2,\n  quadraticCurveTo: 3,\n  closePath: 4,\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    // eslint-disable-next-line no-console\n    console.info(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    // eslint-disable-next-line no-console\n    console.warn(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  switch (url?.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  if (options && typeof url === \"string\") {\n    // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n    if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n      const dots = url.match(/\\./g);\n      // Avoid accidentally matching a *relative* URL pointing to a file named\n      // e.g. \"www.pdf\" or similar.\n      if (dots?.length >= 2) {\n        url = `http://${url}`;\n      }\n    }\n\n    // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n    // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n    if (options.tryConvertEncoding) {\n      try {\n        url = stringToUTF8String(url);\n      } catch {}\n    }\n  }\n\n  const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n  return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\n\n/**\n * Remove, or replace, the hash property of the URL.\n *\n * @param {URL|string} url - The absolute, or relative, URL.\n * @param {string} hash - The hash property (use an empty string to remove it).\n * @param {boolean} [allowRel] - Allow relative URLs.\n * @returns {string} The resulting URL string.\n */\nfunction updateUrlHash(url, hash, allowRel = false) {\n  const res = URL.parse(url);\n  if (res) {\n    res.hash = hash;\n    return res.href;\n  }\n  // Support well-formed relative URLs, necessary for `web/app.js` in GENERIC\n  // builds, by optionally falling back to string parsing.\n  if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n    return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n  }\n  return \"\";\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseException\n    ) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass ResponseException extends BaseException {\n  constructor(msg, status, missing) {\n    super(msg, \"ResponseException\");\n    this.status = status;\n    this.missing = missing;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\n\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\nfunction string32(value) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nclass FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n\n  static get isOffscreenCanvasSupported() {\n    return shadow(\n      this,\n      \"isOffscreenCanvasSupported\",\n      typeof OffscreenCanvas !== \"undefined\"\n    );\n  }\n\n  static get isImageDecoderSupported() {\n    return shadow(\n      this,\n      \"isImageDecoderSupported\",\n      typeof ImageDecoder !== \"undefined\"\n    );\n  }\n\n  static get isFloat16ArraySupported() {\n    return shadow(\n      this,\n      \"isFloat16ArraySupported\",\n      typeof Float16Array !== \"undefined\"\n    );\n  }\n\n  static get isSanitizerSupported() {\n    return shadow(\n      this,\n      \"isSanitizerSupported\",\n      // eslint-disable-next-line no-undef\n      typeof Sanitizer !== \"undefined\"\n    );\n  }\n\n  static get platform() {\n    const { platform, userAgent } = navigator;\n\n    return shadow(this, \"platform\", {\n      isAndroid: userAgent.includes(\"Android\"),\n      isLinux: platform.includes(\"Linux\"),\n      isMac: platform.includes(\"Mac\"),\n      isWindows: platform.includes(\"Win\"),\n      isFirefox:\n        (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        userAgent.includes(\"Firefox\"),\n    });\n  }\n\n  static get isCSSRoundSupported() {\n    return shadow(\n      this,\n      \"isCSSRoundSupported\",\n      globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n    );\n  }\n}\n\nconst hexNumbers = Array.from(Array(256).keys(), n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  static domMatrixToTransform(dm) {\n    return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\n  }\n\n  // Apply a scaling matrix to some min/max values.\n  // If a scaling factor is negative then min and max must be\n  // swapped.\n  static scaleMinMax(transform, minMax) {\n    let temp;\n    if (transform[0]) {\n      if (transform[0] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[2] *= transform[0];\n\n      if (transform[3] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[1];\n      minMax[1] = temp;\n      temp = minMax[2];\n      minMax[2] = minMax[3];\n      minMax[3] = temp;\n\n      if (transform[1] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[1];\n      minMax[3] *= transform[1];\n\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[2] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[5];\n    minMax[2] += transform[4];\n    minMax[3] += transform[5];\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // Multiplies m (an array-based transform) by md (a DOMMatrix transform).\n  static multiplyByDOMMatrix(m, md) {\n    return [\n      m[0] * md.a + m[2] * md.b,\n      m[1] * md.a + m[3] * md.b,\n      m[0] * md.c + m[2] * md.d,\n      m[1] * md.c + m[3] * md.d,\n      m[0] * md.e + m[2] * md.f + m[4],\n      m[1] * md.e + m[3] * md.f + m[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m, pos = 0) {\n    const p0 = p[pos];\n    const p1 = p[pos + 1];\n    p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n    p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n  }\n\n  static applyTransformToBezier(p, transform, pos = 0) {\n    const m0 = transform[0];\n    const m1 = transform[1];\n    const m2 = transform[2];\n    const m3 = transform[3];\n    const m4 = transform[4];\n    const m5 = transform[5];\n    for (let i = 0; i < 6; i += 2) {\n      const pI = p[pos + i];\n      const pI1 = p[pos + i + 1];\n      p[pos + i] = pI * m0 + pI1 * m2 + m4;\n      p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n    }\n  }\n\n  static applyInverseTransform(p, m) {\n    const p0 = p[0];\n    const p1 = p[1];\n    const d = m[0] * m[3] - m[1] * m[2];\n    p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static axialAlignedBoundingBox(rect, transform, output) {\n    const m0 = transform[0];\n    const m1 = transform[1];\n    const m2 = transform[2];\n    const m3 = transform[3];\n    const m4 = transform[4];\n    const m5 = transform[5];\n    const r0 = rect[0];\n    const r1 = rect[1];\n    const r2 = rect[2];\n    const r3 = rect[3];\n\n    let a0 = m0 * r0 + m4;\n    let a2 = a0;\n    let a1 = m0 * r2 + m4;\n    let a3 = a1;\n    let b0 = m3 * r1 + m5;\n    let b2 = b0;\n    let b1 = m3 * r3 + m5;\n    let b3 = b1;\n\n    if (m1 !== 0 || m2 !== 0) {\n      // Non-scaling matrix: shouldn't be frequent.\n      const m1r0 = m1 * r0;\n      const m1r2 = m1 * r2;\n      const m2r1 = m2 * r1;\n      const m2r3 = m2 * r3;\n      a0 += m2r1;\n      a3 += m2r1;\n      a1 += m2r3;\n      a2 += m2r3;\n      b0 += m1r0;\n      b3 += m1r0;\n      b1 += m1r2;\n      b2 += m1r2;\n    }\n\n    output[0] = Math.min(output[0], a0, a1, a2, a3);\n    output[1] = Math.min(output[1], b0, b1, b2, b3);\n    output[2] = Math.max(output[2], a0, a1, a2, a3);\n    output[3] = Math.max(output[3], b0, b1, b2, b3);\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(matrix, output) {\n    const m0 = matrix[0];\n    const m1 = matrix[1];\n    const m2 = matrix[2];\n    const m3 = matrix[3];\n    // Multiply matrix m with its transpose.\n    const a = m0 ** 2 + m1 ** 2;\n    const b = m0 * m2 + m1 * m3;\n    const c = m2 ** 2 + m3 ** 2;\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + c) / 2;\n    const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n    output[0] = Math.sqrt(first + second || 1);\n    output[1] = Math.sqrt(first - second || 1);\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'null'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(\n      Math.min(rect1[0], rect1[2]),\n      Math.min(rect2[0], rect2[2])\n    );\n    const xHigh = Math.min(\n      Math.max(rect1[0], rect1[2]),\n      Math.max(rect2[0], rect2[2])\n    );\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(\n      Math.min(rect1[1], rect1[3]),\n      Math.min(rect2[1], rect2[3])\n    );\n    const yHigh = Math.min(\n      Math.max(rect1[1], rect1[3]),\n      Math.max(rect2[1], rect2[3])\n    );\n    if (yLow > yHigh) {\n      return null;\n    }\n\n    return [xLow, yLow, xHigh, yHigh];\n  }\n\n  static pointBoundingBox(x, y, minMax) {\n    minMax[0] = Math.min(minMax[0], x);\n    minMax[1] = Math.min(minMax[1], y);\n    minMax[2] = Math.max(minMax[2], x);\n    minMax[3] = Math.max(minMax[3], y);\n  }\n\n  static rectBoundingBox(x0, y0, x1, y1, minMax) {\n    minMax[0] = Math.min(minMax[0], x0, x1);\n    minMax[1] = Math.min(minMax[1], y0, y1);\n    minMax[2] = Math.max(minMax[2], x0, x1);\n    minMax[3] = Math.max(minMax[3], y0, y1);\n  }\n\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n    if (t <= 0 || t >= 1) {\n      return;\n    }\n    const mt = 1 - t;\n    const tt = t * t;\n    const ttt = tt * t;\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n    minMax[0] = Math.min(minMax[0], x);\n    minMax[1] = Math.min(minMax[1], y);\n    minMax[2] = Math.max(minMax[2], x);\n    minMax[3] = Math.max(minMax[3], y);\n  }\n\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n    if (Math.abs(a) < 1e-12) {\n      if (Math.abs(b) >= 1e-12) {\n        this.#getExtremumOnCurve(\n          x0,\n          x1,\n          x2,\n          x3,\n          y0,\n          y1,\n          y2,\n          y3,\n          -c / b,\n          minMax\n        );\n      }\n      return;\n    }\n\n    const delta = b ** 2 - 4 * c * a;\n    if (delta < 0) {\n      return;\n    }\n    const sqrtDelta = Math.sqrt(delta);\n    const a2 = 2 * a;\n    this.#getExtremumOnCurve(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      (-b + sqrtDelta) / a2,\n      minMax\n    );\n    this.#getExtremumOnCurve(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      (-b - sqrtDelta) / a2,\n      minMax\n    );\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    minMax[0] = Math.min(minMax[0], x0, x3);\n    minMax[1] = Math.min(minMax[1], y0, y3);\n    minMax[2] = Math.max(minMax[2], x0, x3);\n    minMax[3] = Math.max(minMax[3], y0, y3);\n\n    this.#getExtremum(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      3 * (-x0 + 3 * (x1 - x2) + x3),\n      6 * (x0 - 2 * x1 + x2),\n      3 * (x1 - x0),\n      minMax\n    );\n    this.#getExtremum(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      3 * (-y0 + 3 * (y1 - y2) + y3),\n      6 * (y0 - 2 * y1 + y2),\n      3 * (y1 - y0),\n      minMax\n    );\n  }\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n  // See section 7.9.2.2 Text String Type.\n  // The string can contain some language codes bracketed with 0x1b,\n  // so we must remove them.\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(str);\n        const decoded = decoder.decode(buffer);\n        if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n          return decoded;\n        }\n        return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  // ISO Latin 1\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const charCode = str.charCodeAt(i);\n    if (!keepEscapeSequence && charCode === 0x1b) {\n      // eslint-disable-next-line no-empty\n      while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n      continue;\n    }\n    const code = PDFStringTranslateTable[charCode];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  if (!(date instanceof Date)) {\n    date = new Date(date);\n  }\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    // In order to generate the following regex:\n    //  - create a PDF containing all the chars in the range 0000-FFFF with\n    //    a NFKC which is different of the char.\n    //  - copy and paste all those chars and get the ones where NFKC is\n    //    required.\n    // It appears that most the chars here contain some ligatures.\n    NormalizeRegex =\n      /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n    NormalizationMap = new Map([[\"ﬅ\", \"ſt\"]]);\n  }\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) =>\n    p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2)\n  );\n}\n\nfunction getUuid() {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    typeof crypto.randomUUID === \"function\"\n  ) {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  crypto.getRandomValues(buf);\n  return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nfunction _isValidExplicitDest(validRef, validName, dest) {\n  if (!Array.isArray(dest) || dest.length < 2) {\n    return false;\n  }\n  const [page, zoom, ...args] = dest;\n  if (!validRef(page) && !Number.isInteger(page)) {\n    return false;\n  }\n  if (!validName(zoom)) {\n    return false;\n  }\n  const argsLen = args.length;\n  let allowNull = true;\n  switch (zoom.name) {\n    case \"XYZ\":\n      if (argsLen < 2 || argsLen > 3) {\n        return false;\n      }\n      break;\n    case \"Fit\":\n    case \"FitB\":\n      return argsLen === 0;\n    case \"FitH\":\n    case \"FitBH\":\n    case \"FitV\":\n    case \"FitBV\":\n      if (argsLen > 1) {\n        return false;\n      }\n      break;\n    case \"FitR\":\n      if (argsLen !== 4) {\n        return false;\n      }\n      allowNull = false;\n      break;\n    default:\n      return false;\n  }\n  for (const arg of args) {\n    if (typeof arg === \"number\" || (allowNull && arg === null)) {\n      continue;\n    }\n    return false;\n  }\n  return true;\n}\n\n// TODO: Replace all occurrences of this function with `Math.clamp` once\n//       https://github.com/tc39/proposal-math-clamp/ is generally available.\nfunction MathClamp(v, min, max) {\n  return Math.min(Math.max(v, min), max);\n}\n\n// TODO: Remove this once `Uint8Array.prototype.toHex` is generally available.\nfunction toHexUtil(arr) {\n  if (Uint8Array.prototype.toHex) {\n    return arr.toHex();\n  }\n  return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\n\n// TODO: Remove this once `Uint8Array.prototype.toBase64` is generally\n//       available.\nfunction toBase64Util(arr) {\n  if (Uint8Array.prototype.toBase64) {\n    return arr.toBase64();\n  }\n  return btoa(bytesToString(arr));\n}\n\n// TODO: Remove this once `Uint8Array.fromBase64` is generally available.\nfunction fromBase64Util(str) {\n  if (Uint8Array.fromBase64) {\n    return Uint8Array.fromBase64(str);\n  }\n  return stringToBytes(atob(str));\n}\n\n// TODO: Remove this once https://bugzilla.mozilla.org/show_bug.cgi?id=1928493\n//       is fixed.\nif (\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n  typeof Promise.try !== \"function\"\n) {\n  Promise.try = function (fn, ...args) {\n    return new Promise(resolve => {\n      resolve(fn(...args));\n    });\n  };\n}\n\n// TODO: Remove this once the `javascript.options.experimental.math_sumprecise`\n//       preference is removed from Firefox.\nif (typeof Math.sumPrecise !== \"function\") {\n  // Note that this isn't a \"proper\" polyfill, but since we're only using it to\n  // replace `Array.prototype.reduce()` invocations it should be fine.\n  Math.sumPrecise = function (numbers) {\n    return numbers.reduce((a, b) => a + b, 0);\n  };\n}\n\nif (\n  typeof PDFJSDev !== \"undefined\" &&\n  !PDFJSDev.test(\"SKIP_BABEL\") &&\n  typeof AbortSignal.any !== \"function\"\n) {\n  AbortSignal.any = function (iterable) {\n    const ac = new AbortController();\n    const { signal } = ac;\n\n    // Return immediately if any of the signals are already aborted.\n    for (const s of iterable) {\n      if (s.aborted) {\n        ac.abort(s.reason);\n        return signal;\n      }\n    }\n    // Register \"abort\" listeners for all signals.\n    for (const s of iterable) {\n      s.addEventListener(\n        \"abort\",\n        () => {\n          ac.abort(s.reason);\n        },\n        { signal } // Automatically remove the listener.\n      );\n    }\n\n    return signal;\n  };\n}\n\nexport {\n  _isValidExplicitDest,\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMode,\n  AnnotationPrefix,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  BaseException,\n  BASELINE_FACTOR,\n  bytesToString,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  DrawOPS,\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  fromBase64Util,\n  getModificationDate,\n  getUuid,\n  getVerbosityLevel,\n  hexNumbers,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayEqual,\n  isNodeJS,\n  LINE_DESCENT_FACTOR,\n  LINE_FACTOR,\n  MathClamp,\n  MeshFigureType,\n  normalizeUnicode,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  RenderingIntentFlag,\n  ResponseException,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  TextRenderingMode,\n  toBase64Util,\n  toHexUtil,\n  UnknownErrorException,\n  unreachable,\n  updateUrlHash,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n", "/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nclass XfaText {\n  /**\n   * Walk an XFA tree and create an array of text nodes that is compatible\n   * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n   * all other fields and styles haven't been implemented.\n   *\n   * @param {Object} xfa - An XFA fake DOM object.\n   *\n   * @returns {TextContent}\n   */\n  static textContent(xfa) {\n    const items = [];\n    const output = {\n      items,\n      styles: Object.create(null),\n    };\n    function walk(node) {\n      if (!node) {\n        return;\n      }\n      let str = null;\n      const name = node.name;\n      if (name === \"#text\") {\n        str = node.value;\n      } else if (!XfaText.shouldBuildText(name)) {\n        return;\n      } else if (node?.attributes?.textContent) {\n        str = node.attributes.textContent;\n      } else if (node.value) {\n        str = node.value;\n      }\n      if (str !== null) {\n        items.push({\n          str,\n        });\n      }\n      if (!node.children) {\n        return;\n      }\n      for (const child of node.children) {\n        walk(child);\n      }\n    }\n    walk(xfa);\n    return output;\n  }\n\n  /**\n   * @param {string} name - DOM node name. (lower case)\n   *\n   * @returns {boolean} true if the DOM node should have a corresponding text\n   * node.\n   */\n  static shouldBuildText(name) {\n    return !(\n      name === \"textarea\" ||\n      name === \"input\" ||\n      name === \"option\" ||\n      name === \"select\"\n    );\n  }\n}\n\nexport { XfaText };\n", "/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_storage\").AnnotationStorage} AnnotationStorage */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, { value: null });\n    switch (element.name) {\n      case \"textarea\":\n        if (storedData.value !== null) {\n          html.textContent = storedData.value;\n        }\n        if (intent === \"print\") {\n          break;\n        }\n        html.addEventListener(\"input\", event => {\n          storage.setValue(id, { value: event.target.value });\n        });\n        break;\n      case \"input\":\n        if (\n          element.attributes.type === \"radio\" ||\n          element.attributes.type === \"checkbox\"\n        ) {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\n            // The checked attribute may have been set when opening the file,\n            // unset through the UI and we're here because of printing.\n            html.removeAttribute(\"checked\");\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"change\", event => {\n            storage.setValue(id, {\n              value: event.target.checked\n                ? event.target.getAttribute(\"xfaOn\")\n                : event.target.getAttribute(\"xfaOff\"),\n            });\n          });\n        } else {\n          if (storedData.value !== null) {\n            html.setAttribute(\"value\", storedData.value);\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"input\", event => {\n            storage.setValue(id, { value: event.target.value });\n          });\n        }\n        break;\n      case \"select\":\n        if (storedData.value !== null) {\n          html.setAttribute(\"value\", storedData.value);\n          for (const option of element.children) {\n            if (option.attributes.value === storedData.value) {\n              option.attributes.selected = true;\n            } else if (option.attributes.hasOwnProperty(\"selected\")) {\n              delete option.attributes.selected;\n            }\n          }\n        }\n        html.addEventListener(\"input\", event => {\n          const options = event.target.options;\n          const value =\n            options.selectedIndex === -1\n              ? \"\"\n              : options[options.selectedIndex].value;\n          storage.setValue(id, { value });\n        });\n        break;\n    }\n  }\n\n  static setAttributes({ html, element, storage = null, intent, linkService }) {\n    const { attributes } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n    if (attributes.type === \"radio\") {\n      // Avoid to have a radio group when printing with the same as one\n      // already displayed.\n      attributes.name = `${attributes.name}-${intent}`;\n    }\n    for (const [key, value] of Object.entries(attributes)) {\n      if (value === null || value === undefined) {\n        continue;\n      }\n\n      switch (key) {\n        case \"class\":\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n          break;\n        case \"dataId\":\n          // We don't need to add dataId in the html object but it can\n          // be useful to know its value when writing printing tests:\n          // in this case, don't skip dataId to have its value.\n          break;\n        case \"id\":\n          html.setAttribute(\"data-element-id\", value);\n          break;\n        case \"style\":\n          Object.assign(html.style, value);\n          break;\n        case \"textContent\":\n          html.textContent = value;\n          break;\n        default:\n          if (!isHTMLAnchorElement || (key !== \"href\" && key !== \"newWindow\")) {\n            html.setAttribute(key, value);\n          }\n      }\n    }\n\n    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(\n        html,\n        attributes.href,\n        attributes.newWindow\n      );\n    }\n\n    // Set the value after the others to be sure to overwrite any other values.\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\n  }\n\n  /**\n   * Render the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\n   */\n  static render(parameters) {\n    const storage = parameters.annotationStorage;\n    const linkService = parameters.linkService;\n    const root = parameters.xfaHtml;\n    const intent = parameters.intent || \"display\";\n    const rootHtml = document.createElement(root.name);\n    if (root.attributes) {\n      this.setAttributes({\n        html: rootHtml,\n        element: root,\n        intent,\n        linkService,\n      });\n    }\n\n    const isNotForRichText = intent !== \"richText\";\n    const rootDiv = parameters.div;\n    rootDiv.append(rootHtml);\n\n    if (parameters.viewport) {\n      const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n      rootDiv.style.transform = transform;\n    }\n\n    // Set defaults.\n    if (isNotForRichText) {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n\n    // Text nodes used for the text highlighter.\n    const textDivs = [];\n\n    // In the rich text context, it's possible to just have a text node without\n    // a root element, so we handle this case here (see issue 17215).\n    if (root.children.length === 0) {\n      if (root.value) {\n        const node = document.createTextNode(root.value);\n        rootHtml.append(node);\n        if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n          textDivs.push(node);\n        }\n      }\n      return { textDivs };\n    }\n\n    const stack = [[root, -1, rootHtml]];\n\n    while (stack.length > 0) {\n      const [parent, i, html] = stack.at(-1);\n      if (i + 1 === parent.children.length) {\n        stack.pop();\n        continue;\n      }\n\n      const child = parent.children[++stack.at(-1)[1]];\n      if (child === null) {\n        continue;\n      }\n\n      const { name } = child;\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.append(node);\n        continue;\n      }\n\n      const childHtml = child?.attributes?.xmlns\n        ? document.createElementNS(child.attributes.xmlns, name)\n        : document.createElement(name);\n\n      html.append(childHtml);\n      if (child.attributes) {\n        this.setAttributes({\n          html: childHtml,\n          element: child,\n          storage,\n          intent,\n          linkService,\n        });\n      }\n\n      if (child.children?.length > 0) {\n        stack.push([child, -1, childHtml]);\n      } else if (child.value) {\n        const node = document.createTextNode(child.value);\n        if (isNotForRichText && XfaText.shouldBuildText(name)) {\n          textDivs.push(node);\n        }\n        childHtml.append(node);\n      }\n    }\n\n    /**\n     * TODO: re-enable that stuff once we've JS implementation.\n     * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n     *\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaDisabled input, .xfaDisabled textarea\"\n     * )) {\n     * el.setAttribute(\"disabled\", true);\n     * }\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaReadOnly input, .xfaReadOnly textarea\"\n     * )) {\n     * el.setAttribute(\"readOnly\", true);\n     * }\n     */\n\n    for (const el of rootDiv.querySelectorAll(\n      \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n    )) {\n      el.setAttribute(\"readOnly\", true);\n    }\n\n    return {\n      textDivs,\n    };\n  }\n\n  /**\n   * Update the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\n   */\n  static update(parameters) {\n    const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n    parameters.div.style.transform = transform;\n    parameters.div.hidden = false;\n  }\n}\n\nexport { XfaLayer };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  BaseException,\n  DrawOPS,\n  FeatureTest,\n  shadow,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n  static CSS = 96.0;\n\n  static PDF = 72.0;\n\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nasync function fetchData(url, type = \"text\") {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    isValidFetchUrl(url, document.baseURI)\n  ) {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n    switch (type) {\n      case \"arraybuffer\":\n        return response.arrayBuffer();\n      case \"blob\":\n        return response.blob();\n      case \"json\":\n        return response.json();\n    }\n    return response.text();\n  }\n\n  // The Fetch API is not supported.\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, /* async = */ true);\n    request.responseType = type;\n\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n      if (request.status === 200 || request.status === 0) {\n        switch (type) {\n          case \"arraybuffer\":\n          case \"blob\":\n          case \"json\":\n            resolve(request.response);\n            return;\n        }\n        resolve(request.responseText);\n        return;\n      }\n      reject(new Error(request.statusText));\n    };\n\n    request.send(null);\n  });\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n *   yMax coordinates.\n * @property {number} userUnit - The size of units.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n *   default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n *   default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n *   viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n *   in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n  /**\n   * @param {PageViewportParameters}\n   */\n  constructor({\n    viewBox,\n    userUnit,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  }) {\n    this.viewBox = viewBox;\n    this.userUnit = userUnit;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n\n    scale *= userUnit; // Take the userUnit into account.\n\n    // creating transform to convert pdf coordinate system to the normal\n    // canvas like coordinates taking in account scale and rotation\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    // Normalize the rotation, by clamping it to the [0, 360) range.\n    rotation %= 360;\n    if (rotation < 0) {\n      rotation += 360;\n    }\n    switch (rotation) {\n      case 180:\n        rotateA = -1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = 1;\n        break;\n      case 90:\n        rotateA = 0;\n        rotateB = 1;\n        rotateC = 1;\n        rotateD = 0;\n        break;\n      case 270:\n        rotateA = 0;\n        rotateB = -1;\n        rotateC = -1;\n        rotateD = 0;\n        break;\n      case 0:\n        rotateA = 1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = -1;\n        break;\n      default:\n        throw new Error(\n          \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n        );\n    }\n\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\n\n    let offsetCanvasX, offsetCanvasY;\n    let width, height;\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = (viewBox[3] - viewBox[1]) * scale;\n      height = (viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = (viewBox[2] - viewBox[0]) * scale;\n      height = (viewBox[3] - viewBox[1]) * scale;\n    }\n    // creating transform for the following operations:\n    // translate(-centerX, -centerY), rotate and flip vertically,\n    // scale, and translate(offsetCanvasX, offsetCanvasY)\n    this.transform = [\n      rotateA * scale,\n      rotateB * scale,\n      rotateC * scale,\n      rotateD * scale,\n      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n    ];\n\n    this.width = width;\n    this.height = height;\n  }\n\n  /**\n   * The original, un-scaled, viewport dimensions.\n   * @type {Object}\n   */\n  get rawDims() {\n    const dims = this.viewBox;\n\n    return shadow(this, \"rawDims\", {\n      pageWidth: dims[2] - dims[0],\n      pageHeight: dims[3] - dims[1],\n      pageX: dims[0],\n      pageY: dims[1],\n    });\n  }\n\n  /**\n   * Clones viewport, with optional additional properties.\n   * @param {PageViewportCloneParameters} [params]\n   * @returns {PageViewport} Cloned viewport.\n   */\n  clone({\n    scale = this.scale,\n    rotation = this.rotation,\n    offsetX = this.offsetX,\n    offsetY = this.offsetY,\n    dontFlip = false,\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.viewBox.slice(),\n      userUnit: this.userUnit,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * Converts PDF point to the viewport coordinates. For examples, useful for\n   * converting PDF location into canvas pixel coordinates.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\n   *   point in the viewport coordinate space.\n   * @see {@link convertToPdfPoint}\n   * @see {@link convertToViewportRectangle}\n   */\n  convertToViewportPoint(x, y) {\n    const p = [x, y];\n    Util.applyTransform(p, this.transform);\n    return p;\n  }\n\n  /**\n   * Converts PDF rectangle to the viewport coordinates.\n   * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n   * @returns {Array} Array containing corresponding coordinates of the\n   *   rectangle in the viewport coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToViewportRectangle(rect) {\n    const topLeft = [rect[0], rect[1]];\n    Util.applyTransform(topLeft, this.transform);\n    const bottomRight = [rect[2], rect[3]];\n    Util.applyTransform(bottomRight, this.transform);\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n  }\n\n  /**\n   * Converts viewport coordinates to the PDF location. For examples, useful\n   * for converting canvas pixel location into PDF one.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\n   *   point in the PDF coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToPdfPoint(x, y) {\n    const p = [x, y];\n    Util.applyInverseTransform(p, this.transform);\n    return p;\n  }\n}\n\nclass RenderingCancelledException extends BaseException {\n  constructor(msg, extraDelay = 0) {\n    super(msg, \"RenderingCancelledException\");\n    this.extraDelay = extraDelay;\n  }\n}\n\nfunction isDataScheme(url) {\n  const ii = url.length;\n  let i = 0;\n  while (i < ii && url[i].trim() === \"\") {\n    i++;\n  }\n  return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n  [url] = url.split(/[#?]/, 1);\n  return url.substring(url.lastIndexOf(\"/\") + 1);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n *   unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n  if (typeof url !== \"string\") {\n    return defaultFilename;\n  }\n  if (isDataScheme(url)) {\n    warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n    return defaultFilename;\n  }\n\n  const getURL = urlString => {\n    try {\n      return new URL(urlString);\n    } catch {\n      try {\n        return new URL(decodeURIComponent(urlString));\n      } catch {\n        try {\n          // Attempt to parse the URL using the document's base URI.\n          return new URL(urlString, \"https://foo.bar\");\n        } catch {\n          try {\n            return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n          } catch {\n            return null;\n          }\n        }\n      }\n    }\n  };\n\n  const newURL = getURL(url);\n  if (!newURL) {\n    // If the URL is invalid, return the default filename.\n    return defaultFilename;\n  }\n\n  const decode = name => {\n    try {\n      let decoded = decodeURIComponent(name);\n      if (decoded.includes(\"/\")) {\n        decoded = decoded.split(\"/\").at(-1);\n        if (decoded.test(/^\\.pdf$/i)) {\n          return decoded;\n        }\n        return name;\n      }\n      return decoded;\n    } catch {\n      return name;\n    }\n  };\n\n  const pdfRegex = /\\.pdf$/i;\n  const filename = newURL.pathname.split(\"/\").at(-1);\n  if (pdfRegex.test(filename)) {\n    return decode(filename);\n  }\n\n  if (newURL.searchParams.size > 0) {\n    const values = Array.from(newURL.searchParams.values()).reverse();\n    for (const value of values) {\n      if (pdfRegex.test(value)) {\n        // If any of the search parameters ends with \".pdf\", return it.\n        return decode(value);\n      }\n    }\n    const keys = Array.from(newURL.searchParams.keys()).reverse();\n    for (const key of keys) {\n      if (pdfRegex.test(key)) {\n        // If any of the search parameter keys ends with \".pdf\", return it.\n        return decode(key);\n      }\n    }\n  }\n\n  if (newURL.hash) {\n    const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n    const hashFilename = reFilename.exec(newURL.hash);\n    if (hashFilename) {\n      return decode(hashFilename[0]);\n    }\n  }\n\n  return defaultFilename;\n}\n\nclass StatTimer {\n  started = Object.create(null);\n\n  times = [];\n\n  time(name) {\n    if (name in this.started) {\n      warn(`Timer is already running for ${name}`);\n    }\n    this.started[name] = Date.now();\n  }\n\n  timeEnd(name) {\n    if (!(name in this.started)) {\n      warn(`Timer has not been started for ${name}`);\n    }\n    this.times.push({\n      name,\n      start: this.started[name],\n      end: Date.now(),\n    });\n    // Remove timer from started so it can be called again.\n    delete this.started[name];\n  }\n\n  toString() {\n    // Find the longest name for padding purposes.\n    const outBuf = [];\n    let longest = 0;\n    for (const { name } of this.times) {\n      longest = Math.max(name.length, longest);\n    }\n    for (const { name, start, end } of this.times) {\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n    }\n    return outBuf.join(\"\");\n  }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n  if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n    throw new Error(\"Not implemented: isValidFetchUrl\");\n  }\n  const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n  // The Fetch API only supports the http/https protocols, and not file/ftp.\n  return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenu(e) {\n  e.preventDefault();\n}\n\nfunction stopEvent(e) {\n  e.preventDefault();\n  e.stopPropagation();\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n  // eslint-disable-next-line no-console\n  console.log(\"Deprecated API usage: \" + details);\n}\n\nclass PDFDateString {\n  static #regex;\n\n  /**\n   * Convert a PDF date string to a JavaScript `Date` object.\n   *\n   * The PDF date string format is described in section 7.9.4 of the official\n   * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n   * edition) Adobe describes the same format including a trailing apostrophe.\n   * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n   * them. We ignore all apostrophes as they are not necessary for date parsing.\n   *\n   * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n   * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n   * parts of the date string).\n   *\n   * @param {string} input\n   * @returns {Date|null}\n   */\n  static toDateObject(input) {\n    if (input instanceof Date) {\n      return input;\n    }\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n\n    // Lazily initialize the regular expression.\n    this.#regex ||= new RegExp(\n      \"^D:\" + // Prefix (required)\n        \"(\\\\d{4})\" + // Year (required)\n        \"(\\\\d{2})?\" + // Month (optional)\n        \"(\\\\d{2})?\" + // Day (optional)\n        \"(\\\\d{2})?\" + // Hour (optional)\n        \"(\\\\d{2})?\" + // Minute (optional)\n        \"(\\\\d{2})?\" + // Second (optional)\n        \"([Z|+|-])?\" + // Universal time relation (optional)\n        \"(\\\\d{2})?\" + // Offset hour (optional)\n        \"'?\" + // Splitting apostrophe (optional)\n        \"(\\\\d{2})?\" + // Offset minute (optional)\n        \"'?\" // Trailing apostrophe (optional)\n    );\n\n    // Optional fields that don't satisfy the requirements from the regular\n    // expression (such as incorrect digit counts or numbers that are out of\n    // range) will fall back the defaults from the specification.\n    const matches = this.#regex.exec(input);\n    if (!matches) {\n      return null;\n    }\n\n    // JavaScript's `Date` object expects the month to be between 0 and 11\n    // instead of 1 and 12, so we have to correct for that.\n    const year = parseInt(matches[1], 10);\n    let month = parseInt(matches[2], 10);\n    month = month >= 1 && month <= 12 ? month - 1 : 0;\n    let day = parseInt(matches[3], 10);\n    day = day >= 1 && day <= 31 ? day : 1;\n    let hour = parseInt(matches[4], 10);\n    hour = hour >= 0 && hour <= 23 ? hour : 0;\n    let minute = parseInt(matches[5], 10);\n    minute = minute >= 0 && minute <= 59 ? minute : 0;\n    let second = parseInt(matches[6], 10);\n    second = second >= 0 && second <= 59 ? second : 0;\n    const universalTimeRelation = matches[7] || \"Z\";\n    let offsetHour = parseInt(matches[8], 10);\n    offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n    let offsetMinute = parseInt(matches[9], 10) || 0;\n    offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n    // Universal time relation 'Z' means that the local time is equal to the\n    // universal time, whereas the relations '+'/'-' indicate that the local\n    // time is later respectively earlier than the universal time. Every date\n    // is normalized to universal time.\n    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n  const { width, height } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n  return new PageViewport({\n    viewBox,\n    userUnit: 1,\n    scale,\n    rotation,\n  });\n}\n\nfunction getRGB(color) {\n  if (color.startsWith(\"#\")) {\n    const colorRGB = parseInt(color.slice(1), 16);\n    return [\n      (colorRGB & 0xff0000) >> 16,\n      (colorRGB & 0x00ff00) >> 8,\n      colorRGB & 0x0000ff,\n    ];\n  }\n\n  if (color.startsWith(\"rgb(\")) {\n    // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n    return color\n      .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x));\n  }\n\n  if (color.startsWith(\"rgba(\")) {\n    return color\n      .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x))\n      .slice(0, 3);\n  }\n\n  warn(`Not a valid color format: \"${color}\"`);\n  return [0, 0, 0];\n}\n\nfunction getColorValues(colors) {\n  const span = document.createElement(\"span\");\n  span.style.visibility = \"hidden\";\n  // NOTE: The following does *not* affect `forced-colors: active` mode.\n  span.style.colorScheme = \"only light\";\n  document.body.append(span);\n  for (const name of colors.keys()) {\n    span.style.color = name;\n    const computedColor = window.getComputedStyle(span).color;\n    colors.set(name, getRGB(computedColor));\n  }\n  span.remove();\n}\n\nfunction getCurrentTransform(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform();\n  return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n  return [a, b, c, d, e, f];\n}\n\n/**\n * @param {HTMLDivElement} div\n * @param {PageViewport} viewport\n * @param {boolean} mustFlip\n * @param {boolean} mustRotate\n */\nfunction setLayerDimensions(\n  div,\n  viewport,\n  mustFlip = false,\n  mustRotate = true\n) {\n  if (viewport instanceof PageViewport) {\n    const { pageWidth, pageHeight } = viewport.rawDims;\n    const { style } = div;\n    const useRound = FeatureTest.isCSSRoundSupported;\n\n    const w = `var(--total-scale-factor) * ${pageWidth}px`,\n      h = `var(--total-scale-factor) * ${pageHeight}px`;\n    const widthStr = useRound\n        ? `round(down, ${w}, var(--scale-round-x))`\n        : `calc(${w})`,\n      heightStr = useRound\n        ? `round(down, ${h}, var(--scale-round-y))`\n        : `calc(${h})`;\n\n    if (!mustFlip || viewport.rotation % 180 === 0) {\n      style.width = widthStr;\n      style.height = heightStr;\n    } else {\n      style.width = heightStr;\n      style.height = widthStr;\n    }\n  }\n\n  if (mustRotate) {\n    div.setAttribute(\"data-main-rotation\", viewport.rotation);\n  }\n}\n\n/**\n * Scale factors for the canvas, necessary with HiDPI displays.\n */\nclass OutputScale {\n  constructor() {\n    const { pixelRatio } = OutputScale;\n\n    /**\n     * @type {number} Horizontal scale.\n     */\n    this.sx = pixelRatio;\n\n    /**\n     * @type {number} Vertical scale.\n     */\n    this.sy = pixelRatio;\n  }\n\n  /**\n   * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\n   */\n  get scaled() {\n    return this.sx !== 1 || this.sy !== 1;\n  }\n\n  /**\n   * @type {boolean} Returns `true` when scaling is symmetric,\n   *   `false` otherwise.\n   */\n  get symmetric() {\n    return this.sx === this.sy;\n  }\n\n  /**\n   * @returns {boolean} Returns `true` if scaling was limited,\n   *   `false` otherwise.\n   */\n  limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n    let maxAreaScale = Infinity,\n      maxWidthScale = Infinity,\n      maxHeightScale = Infinity;\n\n    maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n    if (maxPixels > 0) {\n      maxAreaScale = Math.sqrt(maxPixels / (width * height));\n    }\n    if (maxDim !== -1) {\n      maxWidthScale = maxDim / width;\n      maxHeightScale = maxDim / height;\n    }\n    const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n\n    if (this.sx > maxScale || this.sy > maxScale) {\n      this.sx = maxScale;\n      this.sy = maxScale;\n      return true;\n    }\n    return false;\n  }\n\n  static get pixelRatio() {\n    return globalThis.devicePixelRatio || 1;\n  }\n\n  static capPixels(maxPixels, capAreaFactor) {\n    if (capAreaFactor >= 0) {\n      const winPixels = Math.ceil(\n        (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")\n          ? window.innerWidth * window.innerHeight\n          : window.screen.availWidth * window.screen.availHeight) *\n          this.pixelRatio ** 2 *\n          (1 + capAreaFactor / 100)\n      );\n      return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n    }\n    return maxPixels;\n  }\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types\n// to know which types are supported by the browser.\nconst SupportedImageMimeTypes = [\n  \"image/apng\",\n  \"image/avif\",\n  \"image/bmp\",\n  \"image/gif\",\n  \"image/jpeg\",\n  \"image/png\",\n  \"image/svg+xml\",\n  \"image/webp\",\n  \"image/x-icon\",\n];\n\nclass ColorScheme {\n  static get isDarkMode() {\n    return shadow(\n      this,\n      \"isDarkMode\",\n      !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n    );\n  }\n}\n\nclass CSSConstants {\n  static get commentForegroundColor() {\n    const element = document.createElement(\"span\");\n    element.classList.add(\"comment\", \"sidebar\");\n    const { style } = element;\n    style.width = style.height = \"0\";\n    style.display = \"none\";\n    style.color = \"var(--comment-fg-color)\";\n    document.body.append(element);\n    const { color } = window.getComputedStyle(element);\n    element.remove();\n    return shadow(this, \"commentForegroundColor\", getRGB(color));\n  }\n}\n\nfunction applyOpacity(r, g, b, opacity) {\n  opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n  const white = 255 * (1 - opacity);\n  r = Math.round(r * opacity + white);\n  g = Math.round(g * opacity + white);\n  b = Math.round(b * opacity + white);\n  return [r, g, b];\n}\n\nfunction RGBToHSL(rgb, output) {\n  const r = rgb[0] / 255;\n  const g = rgb[1] / 255;\n  const b = rgb[2] / 255;\n\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 (max === min) {\n    // achromatic\n    output[0] = output[1] = 0; // hue and saturation are 0\n  } else {\n    const d = max - min;\n    output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n    // hue\n    switch (max) {\n      case r:\n        output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n        break;\n      case g:\n        output[0] = ((b - r) / d + 2) * 60;\n        break;\n      case b:\n        output[0] = ((r - g) / d + 4) * 60;\n        break;\n    }\n  }\n  output[2] = l;\n}\n\nfunction HSLToRGB(hsl, output) {\n  const h = hsl[0];\n  const s = hsl[1];\n  const l = hsl[2];\n  const c = (1 - Math.abs(2 * l - 1)) * s; // chroma\n  const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n  const m = l - c / 2;\n\n  switch (Math.floor(h / 60)) {\n    case 0:\n      output[0] = c + m;\n      output[1] = x + m;\n      output[2] = m;\n      break;\n    case 1:\n      output[0] = x + m;\n      output[1] = c + m;\n      output[2] = m;\n      break;\n    case 2:\n      output[0] = m;\n      output[1] = c + m;\n      output[2] = x + m;\n      break;\n    case 3:\n      output[0] = m;\n      output[1] = x + m;\n      output[2] = c + m;\n      break;\n    case 4:\n      output[0] = x + m;\n      output[1] = m;\n      output[2] = c + m;\n      break;\n    case 5:\n    case 6:\n      output[0] = c + m;\n      output[1] = m;\n      output[2] = x + m;\n      break;\n  }\n}\n\nfunction computeLuminance(x) {\n  return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\n\nfunction contrastRatio(hsl1, hsl2, output) {\n  HSLToRGB(hsl1, output);\n  output.map(computeLuminance);\n  const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n  HSLToRGB(hsl2, output);\n  output.map(computeLuminance);\n  const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n  return lum1 > lum2\n    ? (lum1 + 0.05) / (lum2 + 0.05)\n    : (lum2 + 0.05) / (lum1 + 0.05);\n}\n\n// Cache for the findContrastColor function, to improve performance.\nconst contrastCache = new Map();\n\n/**\n * Find a color that has sufficient contrast against a fixed color.\n * The luminance (in HSL color space) of the base color is adjusted\n * until the contrast ratio between the base color and the fixed color\n * is at least the minimum contrast ratio required by WCAG 2.1.\n * @param {Array<number>} baseColor\n * @param {Array<number>} fixedColor\n * @returns {string}\n */\nfunction findContrastColor(baseColor, fixedColor) {\n  const key =\n    baseColor[0] +\n    baseColor[1] * 0x100 +\n    baseColor[2] * 0x10000 +\n    fixedColor[0] * 0x1000000 +\n    fixedColor[1] * 0x100000000 +\n    fixedColor[2] * 0x10000000000;\n  let cachedValue = contrastCache.get(key);\n  if (cachedValue) {\n    return cachedValue;\n  }\n  const array = new Float32Array(9);\n  const output = array.subarray(0, 3);\n  const baseHSL = array.subarray(3, 6);\n  RGBToHSL(baseColor, baseHSL);\n  const fixedHSL = array.subarray(6, 9);\n  RGBToHSL(fixedColor, fixedHSL);\n  const isFixedColorDark = fixedHSL[2] < 0.5;\n\n  // Use the contrast ratio requirements from WCAG 2.1.\n  // https://www.w3.org/TR/WCAG21/#contrast-minimum\n  // https://www.w3.org/TR/WCAG21/#contrast-enhanced\n  const minContrast = isFixedColorDark ? 12 : 4.5;\n\n  baseHSL[2] = isFixedColorDark\n    ? Math.sqrt(baseHSL[2])\n    : 1 - Math.sqrt(1 - baseHSL[2]);\n\n  if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n    let start, end;\n    if (isFixedColorDark) {\n      start = baseHSL[2];\n      end = 1;\n    } else {\n      start = 0;\n      end = baseHSL[2];\n    }\n    const PRECISION = 0.005;\n    while (end - start > PRECISION) {\n      const mid = (baseHSL[2] = (start + end) / 2);\n      if (\n        isFixedColorDark ===\n        contrastRatio(baseHSL, fixedHSL, output) < minContrast\n      ) {\n        start = mid;\n      } else {\n        end = mid;\n      }\n    }\n    baseHSL[2] = isFixedColorDark ? end : start;\n  }\n\n  HSLToRGB(baseHSL, output);\n  cachedValue = Util.makeHexColor(\n    Math.round(output[0] * 255),\n    Math.round(output[1] * 255),\n    Math.round(output[2] * 255)\n  );\n  contrastCache.set(key, cachedValue);\n  return cachedValue;\n}\n\nfunction renderRichText({ html, dir, className }, container) {\n  const fragment = document.createDocumentFragment();\n  if (typeof html === \"string\") {\n    const p = document.createElement(\"p\");\n    p.dir = dir || \"auto\";\n    const lines = html.split(/(?:\\r\\n?|\\n)/);\n    for (let i = 0, ii = lines.length; i < ii; ++i) {\n      const line = lines[i];\n      p.append(document.createTextNode(line));\n      if (i < ii - 1) {\n        p.append(document.createElement(\"br\"));\n      }\n    }\n    fragment.append(p);\n  } else {\n    XfaLayer.render({\n      xfaHtml: html,\n      div: fragment,\n      intent: \"richText\",\n    });\n  }\n  fragment.firstElementChild.classList.add(\"richText\", className);\n  container.append(fragment);\n}\n\nfunction makePathFromDrawOPS(data) {\n  // Using a SVG string is slightly slower than using the following loop.\n  const path = new Path2D();\n  if (!data) {\n    return path;\n  }\n  for (let i = 0, ii = data.length; i < ii; ) {\n    switch (data[i++]) {\n      case DrawOPS.moveTo:\n        path.moveTo(data[i++], data[i++]);\n        break;\n      case DrawOPS.lineTo:\n        path.lineTo(data[i++], data[i++]);\n        break;\n      case DrawOPS.curveTo:\n        path.bezierCurveTo(\n          data[i++],\n          data[i++],\n          data[i++],\n          data[i++],\n          data[i++],\n          data[i++]\n        );\n        break;\n      case DrawOPS.quadraticCurveTo:\n        path.quadraticCurveTo(data[i++], data[i++], data[i++], data[i++]);\n        break;\n      case DrawOPS.closePath:\n        path.closePath();\n        break;\n      default:\n        warn(`Unrecognized drawing path operator: ${data[i - 1]}`);\n        break;\n    }\n  }\n  return path;\n}\n\nexport {\n  applyOpacity,\n  ColorScheme,\n  CSSConstants,\n  deprecated,\n  fetchData,\n  findContrastColor,\n  getColorValues,\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  isValidFetchUrl,\n  makePathFromDrawOPS,\n  noContextMenu,\n  OutputScale,\n  PageViewport,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderRichText,\n  setLayerDimensions,\n  StatTimer,\n  stopEvent,\n  SupportedImageMimeTypes,\n  SVG_NS,\n};\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\n\nclass EditorToolbar {\n  #toolbar = null;\n\n  #colorPicker = null;\n\n  #editor;\n\n  #buttons = null;\n\n  #altText = null;\n\n  #comment = null;\n\n  #commentButtonDivider = null;\n\n  #signatureDescriptionButton = null;\n\n  static #l10nRemove = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n\n    EditorToolbar.#l10nRemove ||= Object.freeze({\n      freetext: \"pdfjs-editor-remove-freetext-button\",\n      highlight: \"pdfjs-editor-remove-highlight-button\",\n      ink: \"pdfjs-editor-remove-ink-button\",\n      stamp: \"pdfjs-editor-remove-stamp-button\",\n      signature: \"pdfjs-editor-remove-signature-button\",\n    });\n  }\n\n  render() {\n    const editToolbar = (this.#toolbar = document.createElement(\"div\"));\n    editToolbar.classList.add(\"editToolbar\", \"hidden\");\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n\n    const signal = this.#editor._uiManager._signal;\n    if (signal instanceof AbortSignal && !signal.aborted) {\n      editToolbar.addEventListener(\"contextmenu\", noContextMenu, { signal });\n      editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n        signal,\n      });\n    }\n\n    const buttons = (this.#buttons = document.createElement(\"div\"));\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n\n    const position = this.#editor.toolbarPosition;\n    if (position) {\n      const { style } = editToolbar;\n      const x =\n        this.#editor._uiManager.direction === \"ltr\"\n          ? 1 - position[0]\n          : position[0];\n      style.insetInlineEnd = `${100 * x}%`;\n      style.top = `calc(${\n        100 * position[1]\n      }% + var(--editor-toolbar-vert-offset))`;\n    }\n\n    return editToolbar;\n  }\n\n  get div() {\n    return this.#toolbar;\n  }\n\n  static #pointerDown(e) {\n    e.stopPropagation();\n  }\n\n  #focusIn(e) {\n    this.#editor._focusEventsAllowed = false;\n    stopEvent(e);\n  }\n\n  #focusOut(e) {\n    this.#editor._focusEventsAllowed = true;\n    stopEvent(e);\n  }\n\n  #addListenersToElement(element) {\n    // If we're clicking on a button with the keyboard or with\n    // the mouse, we don't want to trigger any focus events on\n    // the editor.\n    const signal = this.#editor._uiManager._signal;\n    if (!(signal instanceof AbortSignal) || signal.aborted) {\n      return false;\n    }\n    element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n      capture: true,\n      signal,\n    });\n    element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n      capture: true,\n      signal,\n    });\n    element.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    return true;\n  }\n\n  hide() {\n    this.#toolbar.classList.add(\"hidden\");\n    this.#colorPicker?.hideDropdown();\n  }\n\n  show() {\n    this.#toolbar.classList.remove(\"hidden\");\n    this.#altText?.shown();\n    this.#comment?.shown();\n  }\n\n  addDeleteButton() {\n    const { editorType, _uiManager } = this.#editor;\n\n    const button = document.createElement(\"button\");\n    button.classList.add(\"basic\", \"deleteButton\");\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n    if (this.#addListenersToElement(button)) {\n      button.addEventListener(\n        \"click\",\n        e => {\n          _uiManager.delete();\n        },\n        { signal: _uiManager._signal }\n      );\n    }\n    this.#buttons.append(button);\n  }\n\n  get #divider() {\n    const divider = document.createElement(\"div\");\n    divider.className = \"divider\";\n    return divider;\n  }\n\n  async addAltText(altText) {\n    const button = await altText.render();\n    this.#addListenersToElement(button);\n    this.#buttons.append(button, this.#divider);\n    this.#altText = altText;\n  }\n\n  addComment(comment, beforeElement = null) {\n    if (this.#comment) {\n      return;\n    }\n    const button = comment.renderForToolbar();\n    if (!button) {\n      return;\n    }\n    this.#addListenersToElement(button);\n    const divider = (this.#commentButtonDivider = this.#divider);\n    if (!beforeElement) {\n      this.#buttons.append(button, divider);\n    } else {\n      this.#buttons.insertBefore(button, beforeElement);\n      this.#buttons.insertBefore(divider, beforeElement);\n    }\n    this.#comment = comment;\n    comment.toolbar = this;\n  }\n\n  addColorPicker(colorPicker) {\n    if (this.#colorPicker) {\n      return;\n    }\n    this.#colorPicker = colorPicker;\n    const button = colorPicker.renderButton();\n    this.#addListenersToElement(button);\n    this.#buttons.append(button, this.#divider);\n  }\n\n  async addEditSignatureButton(signatureManager) {\n    const button = (this.#signatureDescriptionButton =\n      await signatureManager.renderEditButton(this.#editor));\n    this.#addListenersToElement(button);\n    this.#buttons.append(button, this.#divider);\n  }\n\n  removeButton(name) {\n    switch (name) {\n      case \"comment\":\n        this.#comment?.removeToolbarCommentButton();\n        this.#comment = null;\n        this.#commentButtonDivider?.remove();\n        this.#commentButtonDivider = null;\n        break;\n    }\n  }\n\n  async addButton(name, tool) {\n    switch (name) {\n      case \"colorPicker\":\n        if (tool) {\n          this.addColorPicker(tool);\n        }\n        break;\n      case \"altText\":\n        if (tool) {\n          await this.addAltText(tool);\n        }\n        break;\n      case \"editSignature\":\n        if (tool) {\n          await this.addEditSignatureButton(tool);\n        }\n        break;\n      case \"delete\":\n        this.addDeleteButton();\n        break;\n      case \"comment\":\n        if (tool) {\n          this.addComment(tool);\n        }\n        break;\n    }\n  }\n\n  async addButtonBefore(name, tool, beforeSelector) {\n    if (!tool && name === \"comment\") {\n      return;\n    }\n    const beforeElement = this.#buttons.querySelector(beforeSelector);\n    if (!beforeElement) {\n      return;\n    }\n    if (name === \"comment\") {\n      this.addComment(tool, beforeElement);\n    }\n  }\n\n  updateEditSignatureButton(description) {\n    if (this.#signatureDescriptionButton) {\n      this.#signatureDescriptionButton.title = description;\n    }\n  }\n\n  remove() {\n    this.#toolbar.remove();\n    this.#colorPicker?.destroy();\n    this.#colorPicker = null;\n  }\n}\n\nclass FloatingToolbar {\n  #buttons = null;\n\n  #toolbar = null;\n\n  #uiManager;\n\n  constructor(uiManager) {\n    this.#uiManager = uiManager;\n  }\n\n  #render() {\n    const editToolbar = (this.#toolbar = document.createElement(\"div\"));\n    editToolbar.className = \"editToolbar\";\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n\n    const signal = this.#uiManager._signal;\n    if (signal instanceof AbortSignal && !signal.aborted) {\n      editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n        signal,\n      });\n    }\n\n    const buttons = (this.#buttons = document.createElement(\"div\"));\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n\n    if (this.#uiManager.hasCommentManager()) {\n      this.#makeButton(\n        \"commentButton\",\n        `pdfjs-comment-floating-button`,\n        \"pdfjs-comment-floating-button-label\",\n        () => {\n          this.#uiManager.commentSelection(\"floating_button\");\n        }\n      );\n    }\n\n    this.#makeButton(\n      \"highlightButton\",\n      `pdfjs-highlight-floating-button1`,\n      \"pdfjs-highlight-floating-button-label\",\n      () => {\n        this.#uiManager.highlightSelection(\"floating_button\");\n      }\n    );\n\n    return editToolbar;\n  }\n\n  #getLastPoint(boxes, isLTR) {\n    let lastY = 0;\n    let lastX = 0;\n    for (const box of boxes) {\n      const y = box.y + box.height;\n      if (y < lastY) {\n        continue;\n      }\n      const x = box.x + (isLTR ? box.width : 0);\n      if (y > lastY) {\n        lastX = x;\n        lastY = y;\n        continue;\n      }\n      if (isLTR) {\n        if (x > lastX) {\n          lastX = x;\n        }\n      } else if (x < lastX) {\n        lastX = x;\n      }\n    }\n    return [isLTR ? 1 - lastX : lastX, lastY];\n  }\n\n  show(parent, boxes, isLTR) {\n    const [x, y] = this.#getLastPoint(boxes, isLTR);\n    const { style } = (this.#toolbar ||= this.#render());\n    parent.append(this.#toolbar);\n    style.insetInlineEnd = `${100 * x}%`;\n    style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n  }\n\n  hide() {\n    this.#toolbar.remove();\n  }\n\n  #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n    const button = document.createElement(\"button\");\n    button.classList.add(\"basic\", buttonClass);\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", l10nId);\n    const span = document.createElement(\"span\");\n    button.append(span);\n    span.className = \"visuallyHidden\";\n    span.setAttribute(\"data-l10n-id\", labelL10nId);\n    const signal = this.#uiManager._signal;\n    if (signal instanceof AbortSignal && !signal.aborted) {\n      button.addEventListener(\"contextmenu\", noContextMenu, { signal });\n      button.addEventListener(\"click\", clickHandler, { signal });\n    }\n    this.#buttons.append(button);\n  }\n}\n\nexport { EditorToolbar, FloatingToolbar };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  FeatureTest,\n  getUuid,\n  shadow,\n  Util,\n  warn,\n} from \"../../shared/util.js\";\nimport {\n  fetchData,\n  getColorValues,\n  getRGB,\n  PixelsPerInch,\n  stopEvent,\n} from \"../display_utils.js\";\nimport { FloatingToolbar } from \"./toolbar.js\";\n\nfunction bindEvents(obj, element, names) {\n  for (const name of names) {\n    element.addEventListener(name, obj[name].bind(obj));\n  }\n}\n\n/**\n * Class to store current pointers used by the editor to be able to handle\n * multiple pointers (e.g. two fingers, a pen, a mouse, ...).\n */\nclass CurrentPointers {\n  // To manage the pointer events.\n\n  // The pointerId  and pointerIds are used to keep track of\n  // the pointers with a same type (e.g. two fingers).\n  static #pointerId = NaN;\n\n  static #pointerIds = null;\n\n  // Track the timestamp to know if the touchmove event is used.\n  static #moveTimestamp = NaN;\n\n  // The pointerType is used to know if we are using a mouse, a pen or a touch.\n  static #pointerType = null;\n\n  static initializeAndAddPointerId(pointerId) {\n    // Store pointer ids. For example, the user is using a second finger.\n    (CurrentPointers.#pointerIds ||= new Set()).add(pointerId);\n  }\n\n  static setPointer(pointerType, pointerId) {\n    CurrentPointers.#pointerId ||= pointerId;\n    CurrentPointers.#pointerType ??= pointerType;\n  }\n\n  static setTimeStamp(timeStamp) {\n    CurrentPointers.#moveTimestamp = timeStamp;\n  }\n\n  static isSamePointerId(pointerId) {\n    return CurrentPointers.#pointerId === pointerId;\n  }\n\n  // Check if it's the same pointer id, otherwise remove it from the set.\n  static isSamePointerIdOrRemove(pointerId) {\n    if (CurrentPointers.#pointerId === pointerId) {\n      return true;\n    }\n\n    CurrentPointers.#pointerIds?.delete(pointerId);\n    return false;\n  }\n\n  static isSamePointerType(pointerType) {\n    return CurrentPointers.#pointerType === pointerType;\n  }\n\n  static isInitializedAndDifferentPointerType(pointerType) {\n    return (\n      CurrentPointers.#pointerType !== null &&\n      !CurrentPointers.isSamePointerType(pointerType)\n    );\n  }\n\n  static isSameTimeStamp(timeStamp) {\n    return CurrentPointers.#moveTimestamp === timeStamp;\n  }\n\n  static isUsingMultiplePointers() {\n    // Check if the user is using multiple fingers\n    return CurrentPointers.#pointerIds?.size >= 1;\n  }\n\n  static clearPointerType() {\n    CurrentPointers.#pointerType = null;\n  }\n\n  static clearPointerIds() {\n    CurrentPointers.#pointerId = NaN;\n    CurrentPointers.#pointerIds = null;\n  }\n\n  static clearTimeStamp() {\n    CurrentPointers.#moveTimestamp = NaN;\n  }\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n  #id = 0;\n\n  constructor() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      Object.defineProperty(this, \"reset\", {\n        value: () => (this.#id = 0),\n      });\n      Object.defineProperty(this, \"getNextId\", {\n        value: () => this.#id,\n      });\n    }\n  }\n\n  /**\n   * Get a unique id.\n   * @returns {string}\n   */\n  get id() {\n    return `${AnnotationEditorPrefix}${this.#id++}`;\n  }\n}\n\n/**\n * Class to manage the images used by the editors.\n * The main idea is to try to minimize the memory used by the images.\n * The images are cached and reused when possible\n * We use a refCounter to know when an image is not used anymore but we need to\n * be able to restore an image after a remove+undo, so we keep a file reference\n * or an url one.\n */\nclass ImageManager {\n  #baseId = getUuid();\n\n  #id = 0;\n\n  #cache = null;\n\n  static get _isSVGFittingCanvas() {\n    // By default, Firefox doesn't rescale without preserving the aspect ratio\n    // when drawing an SVG image on a canvas, see https://bugzilla.mozilla.org/1547776.\n    // The \"workaround\" is to append \"svgView(preserveAspectRatio(none))\" to the\n    // url, but according to comment #15, it seems that it leads to unexpected\n    // behavior in Safari.\n    const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n    const canvas = new OffscreenCanvas(1, 3);\n    const ctx = canvas.getContext(\"2d\", { willReadFrequently: true });\n    const image = new Image();\n    image.src = svg;\n    const promise = image.decode().then(() => {\n      ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n      return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n    });\n\n    return shadow(this, \"_isSVGFittingCanvas\", promise);\n  }\n\n  async #get(key, rawData) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(key);\n    if (data === null) {\n      // We already tried to load the image but it failed.\n      return null;\n    }\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    try {\n      data ||= {\n        bitmap: null,\n        id: `image_${this.#baseId}_${this.#id++}`,\n        refCounter: 0,\n        isSvg: false,\n      };\n      let image;\n      if (typeof rawData === \"string\") {\n        data.url = rawData;\n        image = await fetchData(rawData, \"blob\");\n      } else if (rawData instanceof File) {\n        image = data.file = rawData;\n      } else if (rawData instanceof Blob) {\n        image = rawData;\n      }\n\n      if (image.type === \"image/svg+xml\") {\n        // Unfortunately, createImageBitmap doesn't work with SVG images.\n        // (see https://bugzilla.mozilla.org/1841972).\n        const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n        const fileReader = new FileReader();\n        const imageElement = new Image();\n        const imagePromise = new Promise((resolve, reject) => {\n          imageElement.onload = () => {\n            data.bitmap = imageElement;\n            data.isSvg = true;\n            resolve();\n          };\n          fileReader.onload = async () => {\n            const url = (data.svgUrl = fileReader.result);\n            // We need to set the preserveAspectRatio to none in order to let\n            // the image fits the canvas when resizing.\n            imageElement.src = (await mustRemoveAspectRatioPromise)\n              ? `${url}#svgView(preserveAspectRatio(none))`\n              : url;\n          };\n          imageElement.onerror = fileReader.onerror = reject;\n        });\n        fileReader.readAsDataURL(image);\n        await imagePromise;\n      } else {\n        data.bitmap = await createImageBitmap(image);\n      }\n      data.refCounter = 1;\n    } catch (e) {\n      warn(e);\n      data = null;\n    }\n    this.#cache.set(key, data);\n    if (data) {\n      this.#cache.set(data.id, data);\n    }\n    return data;\n  }\n\n  async getFromFile(file) {\n    const { lastModified, name, size, type } = file;\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n  }\n\n  async getFromUrl(url) {\n    return this.#get(url, url);\n  }\n\n  async getFromBlob(id, blobPromise) {\n    const blob = await blobPromise;\n    return this.#get(id, blob);\n  }\n\n  async getFromId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return null;\n    }\n    if (data.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n\n    if (data.file) {\n      return this.getFromFile(data.file);\n    }\n    if (data.blobPromise) {\n      const { blobPromise } = data;\n      delete data.blobPromise;\n      return this.getFromBlob(data.id, blobPromise);\n    }\n    return this.getFromUrl(data.url);\n  }\n\n  getFromCanvas(id, canvas) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(id);\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n    const ctx = offscreen.getContext(\"2d\");\n    ctx.drawImage(canvas, 0, 0);\n    data = {\n      bitmap: offscreen.transferToImageBitmap(),\n      id: `image_${this.#baseId}_${this.#id++}`,\n      refCounter: 1,\n      isSvg: false,\n    };\n    this.#cache.set(id, data);\n    this.#cache.set(data.id, data);\n    return data;\n  }\n\n  getSvgUrl(id) {\n    const data = this.#cache.get(id);\n    if (!data?.isSvg) {\n      return null;\n    }\n    return data.svgUrl;\n  }\n\n  deleteId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return;\n    }\n    data.refCounter -= 1;\n    if (data.refCounter !== 0) {\n      return;\n    }\n    const { bitmap } = data;\n    if (!data.url && !data.file) {\n      // The image has no way to be restored (ctrl+z) so we must fix that.\n      const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n      const ctx = canvas.getContext(\"bitmaprenderer\");\n      ctx.transferFromImageBitmap(bitmap);\n      data.blobPromise = canvas.convertToBlob();\n    }\n\n    bitmap.close?.();\n    data.bitmap = null;\n  }\n\n  // We can use the id only if it belongs this manager.\n  // We must take care of having the right manager because we can copy/paste\n  // some images from other documents, hence it'd be a pity to use an id from an\n  // other manager.\n  isValidId(id) {\n    return id.startsWith(`image_${this.#baseId}_`);\n  }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n  #commands = [];\n\n  #locked = false;\n\n  #maxSize;\n\n  #position = -1;\n\n  constructor(maxSize = 128) {\n    this.#maxSize = maxSize;\n  }\n\n  /**\n   * @typedef {Object} addOptions\n   * @property {function} cmd\n   * @property {function} undo\n   * @property {function} [post]\n   * @property {boolean} mustExec\n   * @property {number} type\n   * @property {boolean} overwriteIfSameType\n   * @property {boolean} keepUndo\n   */\n\n  /**\n   * Add a new couple of commands to be used in case of redo/undo.\n   * @param {addOptions} options\n   */\n  add({\n    cmd,\n    undo,\n    post,\n    mustExec,\n    type = NaN,\n    overwriteIfSameType = false,\n    keepUndo = false,\n  }) {\n    if (mustExec) {\n      cmd();\n    }\n\n    if (this.#locked) {\n      return;\n    }\n\n    const save = { cmd, undo, post, type };\n    if (this.#position === -1) {\n      if (this.#commands.length > 0) {\n        // All the commands have been undone and then a new one is added\n        // hence we clear the queue.\n        this.#commands.length = 0;\n      }\n      this.#position = 0;\n      this.#commands.push(save);\n      return;\n    }\n\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n      // For example when we change a color we don't want to\n      // be able to undo all the steps, hence we only want to\n      // keep the last undoable action in this sequence of actions.\n      if (keepUndo) {\n        save.undo = this.#commands[this.#position].undo;\n      }\n      this.#commands[this.#position] = save;\n      return;\n    }\n\n    const next = this.#position + 1;\n    if (next === this.#maxSize) {\n      this.#commands.splice(0, 1);\n    } else {\n      this.#position = next;\n      if (next < this.#commands.length) {\n        this.#commands.splice(next);\n      }\n    }\n\n    this.#commands.push(save);\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    if (this.#position === -1) {\n      // Nothing to undo.\n      return;\n    }\n\n    // Avoid to insert something during the undo execution.\n    this.#locked = true;\n    const { undo, post } = this.#commands[this.#position];\n    undo();\n    post?.();\n    this.#locked = false;\n\n    this.#position -= 1;\n  }\n\n  /**\n   * Redo the last command.\n   */\n  redo() {\n    if (this.#position < this.#commands.length - 1) {\n      this.#position += 1;\n\n      // Avoid to insert something during the redo execution.\n      this.#locked = true;\n      const { cmd, post } = this.#commands[this.#position];\n      cmd();\n      post?.();\n      this.#locked = false;\n    }\n  }\n\n  /**\n   * Check if there is something to undo.\n   * @returns {boolean}\n   */\n  hasSomethingToUndo() {\n    return this.#position !== -1;\n  }\n\n  /**\n   * Check if there is something to redo.\n   * @returns {boolean}\n   */\n  hasSomethingToRedo() {\n    return this.#position < this.#commands.length - 1;\n  }\n\n  cleanType(type) {\n    if (this.#position === -1) {\n      return;\n    }\n    for (let i = this.#position; i >= 0; i--) {\n      if (this.#commands[i].type !== type) {\n        this.#commands.splice(i + 1, this.#position - i);\n        this.#position = i;\n        return;\n      }\n    }\n    this.#commands.length = 0;\n    this.#position = -1;\n  }\n\n  destroy() {\n    this.#commands = null;\n  }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n  /**\n   * Create a new keyboard manager class.\n   * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n   * and a callback to call.\n   * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n   */\n  constructor(callbacks) {\n    this.buffer = [];\n    this.callbacks = new Map();\n    this.allKeys = new Set();\n\n    const { isMac } = FeatureTest.platform;\n    for (const [keys, callback, options = {}] of callbacks) {\n      for (const key of keys) {\n        const isMacKey = key.startsWith(\"mac+\");\n        if (isMac && isMacKey) {\n          this.callbacks.set(key.slice(4), { callback, options });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        } else if (!isMac && !isMacKey) {\n          this.callbacks.set(key, { callback, options });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        }\n      }\n    }\n  }\n\n  /**\n   * Serialize an event into a string in order to match a\n   * potential key for a callback.\n   * @param {KeyboardEvent} event\n   * @returns {string}\n   */\n  #serialize(event) {\n    if (event.altKey) {\n      this.buffer.push(\"alt\");\n    }\n    if (event.ctrlKey) {\n      this.buffer.push(\"ctrl\");\n    }\n    if (event.metaKey) {\n      this.buffer.push(\"meta\");\n    }\n    if (event.shiftKey) {\n      this.buffer.push(\"shift\");\n    }\n    this.buffer.push(event.key);\n    const str = this.buffer.join(\"+\");\n    this.buffer.length = 0;\n\n    return str;\n  }\n\n  /**\n   * Execute a callback, if any, for a given keyboard event.\n   * The self is used as `this` in the callback.\n   * @param {Object} self\n   * @param {KeyboardEvent} event\n   * @returns\n   */\n  exec(self, event) {\n    if (!this.allKeys.has(event.key)) {\n      return;\n    }\n    const info = this.callbacks.get(this.#serialize(event));\n    if (!info) {\n      return;\n    }\n    const {\n      callback,\n      options: { bubbles = false, args = [], checker = null },\n    } = info;\n\n    if (checker && !checker(self, event)) {\n      return;\n    }\n    callback.bind(self, ...args, event)();\n\n    // For example, ctrl+s in a FreeText must be handled by the viewer, hence\n    // the event must bubble.\n    if (!bubbles) {\n      stopEvent(event);\n    }\n  }\n}\n\nclass ColorManager {\n  static _colorsMapping = new Map([\n    [\"CanvasText\", [0, 0, 0]],\n    [\"Canvas\", [255, 255, 255]],\n  ]);\n\n  get _colors() {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"LIB\") &&\n      typeof document === \"undefined\"\n    ) {\n      return shadow(this, \"_colors\", ColorManager._colorsMapping);\n    }\n\n    const colors = new Map([\n      [\"CanvasText\", null],\n      [\"Canvas\", null],\n    ]);\n    getColorValues(colors);\n    return shadow(this, \"_colors\", colors);\n  }\n\n  /**\n   * In High Contrast Mode, the color on the screen is not always the\n   * real color used in the pdf.\n   * For example in some cases white can appear to be black but when saving\n   * we want to have white.\n   * @param {string} color\n   * @returns {Array<number>}\n   */\n  convert(color) {\n    const rgb = getRGB(color);\n    if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n      return rgb;\n    }\n\n    for (const [name, RGB] of this._colors) {\n      if (RGB.every((x, i) => x === rgb[i])) {\n        return ColorManager._colorsMapping.get(name);\n      }\n    }\n    return rgb;\n  }\n\n  /**\n   * An input element must have its color value as a hex string\n   * and not as color name.\n   * So this function converts a name into an hex string.\n   * @param {string} name\n   * @returns {string}\n   */\n  getHexCode(name) {\n    const rgb = this._colors.get(name);\n    if (!rgb) {\n      return name;\n    }\n    return Util.makeHexColor(...rgb);\n  }\n}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n  #abortController = new AbortController();\n\n  #activeEditor = null;\n\n  #allEditableAnnotations = null;\n\n  #allEditors = new Map();\n\n  #allLayers = new Map();\n\n  #altTextManager = null;\n\n  #annotationStorage = null;\n\n  #changedExistingAnnotations = null;\n\n  #commandManager = new CommandManager();\n\n  #commentManager = null;\n\n  #copyPasteAC = null;\n\n  #currentDrawingSession = null;\n\n  #currentPageIndex = 0;\n\n  #deletedAnnotationsElementIds = new Set();\n\n  #draggingEditors = null;\n\n  #editorTypes = null;\n\n  #editorsToRescale = new Set();\n\n  _editorUndoBar = null;\n\n  #enableHighlightFloatingButton = false;\n\n  #enableUpdatedAddImage = false;\n\n  #enableNewAltTextWhenAddingImage = false;\n\n  #filterFactory = null;\n\n  #focusMainContainerTimeoutId = null;\n\n  #focusManagerAC = null;\n\n  #highlightColors = null;\n\n  #highlightWhenShiftUp = false;\n\n  #floatingToolbar = null;\n\n  #idManager = new IdManager();\n\n  #isEnabled = false;\n\n  #isPointerDown = false;\n\n  #isWaiting = false;\n\n  #keyboardManagerAC = null;\n\n  #lastActiveElement = null;\n\n  #mainHighlightColorPicker = null;\n\n  #missingCanvases = null;\n\n  #mlManager = null;\n\n  #mode = AnnotationEditorType.NONE;\n\n  #selectedEditors = new Set();\n\n  #selectedTextNode = null;\n\n  #signatureManager = null;\n\n  #pageColors = null;\n\n  #showAllStates = null;\n\n  #pdfDocument = null;\n\n  #previousStates = {\n    isEditing: false,\n    isEmpty: true,\n    hasSomethingToUndo: false,\n    hasSomethingToRedo: false,\n    hasSelectedEditor: false,\n    hasSelectedText: false,\n  };\n\n  #translation = [0, 0];\n\n  #translationTimeoutId = null;\n\n  #container = null;\n\n  #viewer = null;\n\n  #viewerAlert = null;\n\n  #updateModeCapability = null;\n\n  static TRANSLATE_SMALL = 1; // page units.\n\n  static TRANSLATE_BIG = 10; // page units.\n\n  static get _keyboardManager() {\n    const proto = AnnotationEditorUIManager.prototype;\n\n    /**\n     * If the focused element is an input, we don't want to handle the arrow.\n     * For example, sliders can be controlled with the arrow keys.\n     */\n    const arrowChecker = self =>\n      self.#container.contains(document.activeElement) &&\n      document.activeElement.tagName !== \"BUTTON\" &&\n      self.hasSomethingToControl();\n\n    const textInputChecker = (_self, { target: el }) => {\n      if (el instanceof HTMLInputElement) {\n        const { type } = el;\n        return type !== \"text\" && type !== \"number\";\n      }\n      return true;\n    };\n\n    const small = this.TRANSLATE_SMALL;\n    const big = this.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          [\"ctrl+a\", \"mac+meta+a\"],\n          proto.selectAll,\n          { checker: textInputChecker },\n        ],\n        [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, { checker: textInputChecker }],\n        [\n          // On mac, depending of the OS version, the event.key is either \"z\" or\n          // \"Z\" when the user presses \"meta+shift+z\".\n          [\n            \"ctrl+y\",\n            \"ctrl+shift+z\",\n            \"mac+meta+shift+z\",\n            \"ctrl+shift+Z\",\n            \"mac+meta+shift+Z\",\n          ],\n          proto.redo,\n          { checker: textInputChecker },\n        ],\n        [\n          [\n            \"Backspace\",\n            \"alt+Backspace\",\n            \"ctrl+Backspace\",\n            \"shift+Backspace\",\n            \"mac+Backspace\",\n            \"mac+alt+Backspace\",\n            \"mac+ctrl+Backspace\",\n            \"Delete\",\n            \"ctrl+Delete\",\n            \"shift+Delete\",\n            \"mac+Delete\",\n          ],\n          proto.delete,\n          { checker: textInputChecker },\n        ],\n        [\n          [\"Enter\", \"mac+Enter\"],\n          proto.addNewEditorFromKeyboard,\n          {\n            // Those shortcuts can be used in the toolbar for some other actions\n            // like zooming, hence we need to check if the container has the\n            // focus.\n            checker: (self, { target: el }) =>\n              !(el instanceof HTMLButtonElement) &&\n              self.#container.contains(el) &&\n              !self.isEnterHandled,\n          },\n        ],\n        [\n          [\" \", \"mac+ \"],\n          proto.addNewEditorFromKeyboard,\n          {\n            // Those shortcuts can be used in the toolbar for some other actions\n            // like zooming, hence we need to check if the container has the\n            // focus.\n            checker: (self, { target: el }) =>\n              !(el instanceof HTMLButtonElement) &&\n              self.#container.contains(document.activeElement),\n          },\n        ],\n        [[\"Escape\", \"mac+Escape\"], proto.unselectAll],\n        [\n          [\"ArrowLeft\", \"mac+ArrowLeft\"],\n          proto.translateSelectedEditors,\n          { args: [-small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          proto.translateSelectedEditors,\n          { args: [-big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowRight\", \"mac+ArrowRight\"],\n          proto.translateSelectedEditors,\n          { args: [small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          proto.translateSelectedEditors,\n          { args: [big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowUp\", \"mac+ArrowUp\"],\n          proto.translateSelectedEditors,\n          { args: [0, -small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n          proto.translateSelectedEditors,\n          { args: [0, -big], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowDown\", \"mac+ArrowDown\"],\n          proto.translateSelectedEditors,\n          { args: [0, small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n          proto.translateSelectedEditors,\n          { args: [0, big], checker: arrowChecker },\n        ],\n      ])\n    );\n  }\n\n  constructor(\n    container,\n    viewer,\n    viewerAlert,\n    altTextManager,\n    commentManager,\n    signatureManager,\n    eventBus,\n    pdfDocument,\n    pageColors,\n    highlightColors,\n    enableHighlightFloatingButton,\n    enableUpdatedAddImage,\n    enableNewAltTextWhenAddingImage,\n    mlManager,\n    editorUndoBar,\n    supportsPinchToZoom\n  ) {\n    const signal = (this._signal = this.#abortController.signal);\n    this.#container = container;\n    this.#viewer = viewer;\n    this.#viewerAlert = viewerAlert;\n    this.#altTextManager = altTextManager;\n    this.#commentManager = commentManager;\n    this.#signatureManager = signatureManager;\n    this.#pdfDocument = pdfDocument;\n    this._eventBus = eventBus;\n    eventBus._on(\"editingaction\", this.onEditingAction.bind(this), { signal });\n    eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), { signal });\n    eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), { signal });\n    eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n      signal,\n    });\n    eventBus._on(\"setpreference\", this.onSetPreference.bind(this), { signal });\n    eventBus._on(\n      \"switchannotationeditorparams\",\n      evt => this.updateParams(evt.type, evt.value),\n      { signal }\n    );\n    window.addEventListener(\n      \"pointerdown\",\n      () => {\n        this.#isPointerDown = true;\n      },\n      { capture: true, signal }\n    );\n    window.addEventListener(\n      \"pointerup\",\n      () => {\n        this.#isPointerDown = false;\n      },\n      { capture: true, signal }\n    );\n    this.#addSelectionListener();\n    this.#addDragAndDropListeners();\n    this.#addKeyboardManager();\n    this.#annotationStorage = pdfDocument.annotationStorage;\n    this.#filterFactory = pdfDocument.filterFactory;\n    this.#pageColors = pageColors;\n    this.#highlightColors = highlightColors || null;\n    this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n    this.#enableUpdatedAddImage = enableUpdatedAddImage;\n    this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n    this.#mlManager = mlManager || null;\n    this.viewParameters = {\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n      rotation: 0,\n    };\n    this.isShiftKeyDown = false;\n    this._editorUndoBar = editorUndoBar || null;\n    this._supportsPinchToZoom = supportsPinchToZoom !== false;\n    commentManager?.setSidebarUiManager(this);\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      Object.defineProperty(this, \"reset\", {\n        value: () => {\n          this.selectAll();\n          this.delete();\n          this.#idManager.reset();\n        },\n      });\n      Object.defineProperty(this, \"getNextEditorId\", {\n        value: () => this.#idManager.getNextId(),\n      });\n    }\n  }\n\n  destroy() {\n    this.#updateModeCapability?.resolve();\n    this.#updateModeCapability = null;\n\n    this.#abortController?.abort();\n    this.#abortController = null;\n    this._signal = null;\n\n    for (const layer of this.#allLayers.values()) {\n      layer.destroy();\n    }\n    this.#allLayers.clear();\n    this.#allEditors.clear();\n    this.#editorsToRescale.clear();\n    this.#missingCanvases?.clear();\n    this.#activeEditor = null;\n    this.#selectedEditors.clear();\n    this.#commandManager.destroy();\n    this.#altTextManager?.destroy();\n    this.#commentManager?.destroy();\n    this.#signatureManager?.destroy();\n    this.#floatingToolbar?.hide();\n    this.#floatingToolbar = null;\n    this.#mainHighlightColorPicker?.destroy();\n    this.#mainHighlightColorPicker = null;\n    this.#allEditableAnnotations = null;\n    if (this.#focusMainContainerTimeoutId) {\n      clearTimeout(this.#focusMainContainerTimeoutId);\n      this.#focusMainContainerTimeoutId = null;\n    }\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n      this.#translationTimeoutId = null;\n    }\n    this._editorUndoBar?.destroy();\n    this.#pdfDocument = null;\n  }\n\n  combinedSignal(ac) {\n    return AbortSignal.any([this._signal, ac.signal]);\n  }\n\n  get mlManager() {\n    return this.#mlManager;\n  }\n\n  get useNewAltTextFlow() {\n    return this.#enableUpdatedAddImage;\n  }\n\n  get useNewAltTextWhenAddingImage() {\n    return this.#enableNewAltTextWhenAddingImage;\n  }\n\n  get hcmFilter() {\n    return shadow(\n      this,\n      \"hcmFilter\",\n      this.#pageColors\n        ? this.#filterFactory.addHCMFilter(\n            this.#pageColors.foreground,\n            this.#pageColors.background\n          )\n        : \"none\"\n    );\n  }\n\n  get direction() {\n    return shadow(\n      this,\n      \"direction\",\n      getComputedStyle(this.#container).direction\n    );\n  }\n\n  get _highlightColors() {\n    return shadow(\n      this,\n      \"_highlightColors\",\n      this.#highlightColors\n        ? new Map(\n            this.#highlightColors.split(\",\").map(pair => {\n              pair = pair.split(\"=\").map(x => x.trim());\n              pair[1] = pair[1].toUpperCase();\n              return pair;\n            })\n          )\n        : null\n    );\n  }\n\n  get highlightColors() {\n    const { _highlightColors } = this;\n    if (!_highlightColors) {\n      return shadow(this, \"highlightColors\", null);\n    }\n    const map = new Map();\n    const hasHCM = !!this.#pageColors;\n    for (const [name, color] of _highlightColors) {\n      const isNameForHCM = name.endsWith(\"_HCM\");\n      if (hasHCM && isNameForHCM) {\n        map.set(name.replace(\"_HCM\", \"\"), color);\n        continue;\n      }\n      if (!hasHCM && !isNameForHCM) {\n        map.set(name, color);\n      }\n    }\n    return shadow(this, \"highlightColors\", map);\n  }\n\n  get highlightColorNames() {\n    return shadow(\n      this,\n      \"highlightColorNames\",\n      this.highlightColors\n        ? new Map(Array.from(this.highlightColors, e => e.reverse()))\n        : null\n    );\n  }\n\n  getNonHCMColor(color) {\n    if (!this._highlightColors) {\n      return color;\n    }\n    const colorName = this.highlightColorNames.get(color);\n    return this._highlightColors.get(colorName) || color;\n  }\n\n  getNonHCMColorName(color) {\n    return this.highlightColorNames.get(color) || color;\n  }\n\n  /**\n   * Set the current drawing session.\n   * @param {AnnotationEditorLayer} layer\n   */\n  setCurrentDrawingSession(layer) {\n    if (layer) {\n      this.unselectAll();\n      this.disableUserSelect(true);\n    } else {\n      this.disableUserSelect(false);\n    }\n    this.#currentDrawingSession = layer;\n  }\n\n  setMainHighlightColorPicker(colorPicker) {\n    this.#mainHighlightColorPicker = colorPicker;\n  }\n\n  editAltText(editor, firstTime = false) {\n    this.#altTextManager?.editAltText(this, editor, firstTime);\n  }\n\n  hasCommentManager() {\n    return !!this.#commentManager;\n  }\n\n  editComment(editor, posX, posY, options) {\n    this.#commentManager?.showDialog(this, editor, posX, posY, options);\n  }\n\n  selectComment(pageIndex, uid) {\n    const layer = this.#allLayers.get(pageIndex);\n    const editor = layer?.getEditorByUID(uid);\n    editor?.toggleComment(/* isSelected */ true, /* visibility */ true);\n  }\n\n  updateComment(editor) {\n    this.#commentManager?.updateComment(editor.getData());\n  }\n\n  updatePopupColor(editor) {\n    this.#commentManager?.updatePopupColor(editor);\n  }\n\n  removeComment(editor) {\n    this.#commentManager?.removeComments([editor.uid]);\n  }\n\n  toggleComment(editor, isSelected, visibility = undefined) {\n    this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n  }\n\n  makeCommentColor(color, opacity) {\n    return (\n      (color && this.#commentManager?.makeCommentColor(color, opacity)) || null\n    );\n  }\n\n  getCommentDialogElement() {\n    return this.#commentManager?.dialogElement || null;\n  }\n\n  async waitForEditorsRendered(pageNumber) {\n    if (this.#allLayers.has(pageNumber - 1)) {\n      return;\n    }\n    const { resolve, promise } = Promise.withResolvers();\n    const onEditorsRendered = evt => {\n      if (evt.pageNumber === pageNumber) {\n        this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n        resolve();\n      }\n    };\n    this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n    await promise;\n  }\n\n  getSignature(editor) {\n    this.#signatureManager?.getSignature({ uiManager: this, editor });\n  }\n\n  get signatureManager() {\n    return this.#signatureManager;\n  }\n\n  switchToMode(mode, callback) {\n    // Switching to a mode can be asynchronous.\n    this._eventBus.on(\"annotationeditormodechanged\", callback, {\n      once: true,\n      signal: this._signal,\n    });\n    this._eventBus.dispatch(\"showannotationeditorui\", {\n      source: this,\n      mode,\n    });\n  }\n\n  setPreference(name, value) {\n    this._eventBus.dispatch(\"setpreference\", {\n      source: this,\n      name,\n      value,\n    });\n  }\n\n  onSetPreference({ name, value }) {\n    switch (name) {\n      case \"enableNewAltTextWhenAddingImage\":\n        this.#enableNewAltTextWhenAddingImage = value;\n        break;\n    }\n  }\n\n  onPageChanging({ pageNumber }) {\n    this.#currentPageIndex = pageNumber - 1;\n  }\n\n  focusMainContainer() {\n    this.#container.focus();\n  }\n\n  findParent(x, y) {\n    for (const layer of this.#allLayers.values()) {\n      const {\n        x: layerX,\n        y: layerY,\n        width,\n        height,\n      } = layer.div.getBoundingClientRect();\n      if (\n        x >= layerX &&\n        x <= layerX + width &&\n        y >= layerY &&\n        y <= layerY + height\n      ) {\n        return layer;\n      }\n    }\n    return null;\n  }\n\n  disableUserSelect(value = false) {\n    this.#viewer.classList.toggle(\"noUserSelect\", value);\n  }\n\n  addShouldRescale(editor) {\n    this.#editorsToRescale.add(editor);\n  }\n\n  removeShouldRescale(editor) {\n    this.#editorsToRescale.delete(editor);\n  }\n\n  onScaleChanging({ scale }) {\n    this.commitOrRemove();\n    this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n    for (const editor of this.#editorsToRescale) {\n      editor.onScaleChanging();\n    }\n    this.#currentDrawingSession?.onScaleChanging();\n  }\n\n  onRotationChanging({ pagesRotation }) {\n    this.commitOrRemove();\n    this.viewParameters.rotation = pagesRotation;\n  }\n\n  #getAnchorElementForSelection({ anchorNode }) {\n    return anchorNode.nodeType === Node.TEXT_NODE\n      ? anchorNode.parentElement\n      : anchorNode;\n  }\n\n  #getLayerForTextLayer(textLayer) {\n    const { currentLayer } = this;\n    if (currentLayer.hasTextLayer(textLayer)) {\n      return currentLayer;\n    }\n    for (const layer of this.#allLayers.values()) {\n      if (layer.hasTextLayer(textLayer)) {\n        return layer;\n      }\n    }\n    return null;\n  }\n\n  highlightSelection(methodOfCreation = \"\", comment = false) {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const { anchorNode, anchorOffset, focusNode, focusOffset } = selection;\n    const text = selection.toString();\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    selection.empty();\n\n    const layer = this.#getLayerForTextLayer(textLayer);\n    const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n    const callback = () => {\n      const editor = layer?.createAndAddNewEditor({ x: 0, y: 0 }, false, {\n        methodOfCreation,\n        boxes,\n        anchorNode,\n        anchorOffset,\n        focusNode,\n        focusOffset,\n        text,\n      });\n      if (isNoneMode) {\n        this.showAllEditors(\"highlight\", true, /* updateButton = */ true);\n      }\n      if (comment) {\n        editor?.editComment();\n      }\n    };\n    if (isNoneMode) {\n      this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n      return;\n    }\n    callback();\n  }\n\n  commentSelection(methodOfCreation = \"\") {\n    this.highlightSelection(methodOfCreation, /* comment */ true);\n  }\n\n  #displayFloatingToolbar() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    this.#floatingToolbar ||= new FloatingToolbar(this);\n    this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n  }\n\n  /**\n   * Some annotations may have been modified in the annotation layer\n   * (e.g. comments added or modified).\n   * So this function retrieves the data from the storage and removes\n   * them from the storage in order to be able to save them later.\n   * @param {string} annotationId\n   * @returns {Object|null} The data associated to the annotation or null.\n   */\n  getAndRemoveDataFromAnnotationStorage(annotationId) {\n    if (!this.#annotationStorage) {\n      return null;\n    }\n    const key = `${AnnotationEditorPrefix}${annotationId}`;\n    const storedValue = this.#annotationStorage.getRawValue(key);\n    if (storedValue) {\n      this.#annotationStorage.remove(key);\n    }\n    return storedValue;\n  }\n\n  /**\n   * Add an editor in the annotation storage.\n   * @param {AnnotationEditor} editor\n   */\n  addToAnnotationStorage(editor) {\n    if (\n      !editor.isEmpty() &&\n      this.#annotationStorage &&\n      !this.#annotationStorage.has(editor.id)\n    ) {\n      this.#annotationStorage.setValue(editor.id, editor);\n    }\n  }\n\n  a11yAlert(messageId, args = null) {\n    const viewerAlert = this.#viewerAlert;\n    if (!viewerAlert) {\n      return;\n    }\n    viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n    if (args) {\n      viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n    } else {\n      viewerAlert.removeAttribute(\"data-l10n-args\");\n    }\n  }\n\n  #selectionChange() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      if (this.#selectedTextNode) {\n        this.#floatingToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false,\n        });\n      }\n      return;\n    }\n    const { anchorNode } = selection;\n    if (anchorNode === this.#selectedTextNode) {\n      return;\n    }\n\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    if (!textLayer) {\n      if (this.#selectedTextNode) {\n        this.#floatingToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false,\n        });\n      }\n      return;\n    }\n\n    this.#floatingToolbar?.hide();\n    this.#selectedTextNode = anchorNode;\n    this.#dispatchUpdateStates({\n      hasSelectedText: true,\n    });\n\n    if (\n      this.#mode !== AnnotationEditorType.HIGHLIGHT &&\n      this.#mode !== AnnotationEditorType.NONE\n    ) {\n      return;\n    }\n\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.showAllEditors(\"highlight\", true, /* updateButton = */ true);\n    }\n\n    this.#highlightWhenShiftUp = this.isShiftKeyDown;\n    if (!this.isShiftKeyDown) {\n      const activeLayer =\n        this.#mode === AnnotationEditorType.HIGHLIGHT\n          ? this.#getLayerForTextLayer(textLayer)\n          : null;\n      activeLayer?.toggleDrawing();\n\n      if (this.#isPointerDown) {\n        const ac = new AbortController();\n        const signal = this.combinedSignal(ac);\n\n        const pointerup = e => {\n          if (e.type === \"pointerup\" && e.button !== 0) {\n            // Do nothing on right click.\n            return;\n          }\n          ac.abort();\n          activeLayer?.toggleDrawing(true);\n          if (e.type === \"pointerup\") {\n            this.#onSelectEnd(\"main_toolbar\");\n          }\n        };\n        window.addEventListener(\"pointerup\", pointerup, { signal });\n        window.addEventListener(\"blur\", pointerup, { signal });\n      } else {\n        // Here neither the shift key nor the pointer is down and we've\n        // something in the selection: we can be in the case where the user is\n        // using a screen reader (see bug 1976597).\n        activeLayer?.toggleDrawing(true);\n        this.#onSelectEnd(\"main_toolbar\");\n      }\n    }\n  }\n\n  #onSelectEnd(methodOfCreation = \"\") {\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.highlightSelection(methodOfCreation);\n    } else if (this.#enableHighlightFloatingButton) {\n      this.#displayFloatingToolbar();\n    }\n  }\n\n  #addSelectionListener() {\n    document.addEventListener(\n      \"selectionchange\",\n      this.#selectionChange.bind(this),\n      { signal: this._signal }\n    );\n  }\n\n  #addFocusManager() {\n    if (this.#focusManagerAC) {\n      return;\n    }\n    this.#focusManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#focusManagerAC);\n\n    window.addEventListener(\"focus\", this.focus.bind(this), { signal });\n    window.addEventListener(\"blur\", this.blur.bind(this), { signal });\n  }\n\n  #removeFocusManager() {\n    this.#focusManagerAC?.abort();\n    this.#focusManagerAC = null;\n  }\n\n  blur() {\n    this.isShiftKeyDown = false;\n    if (this.#highlightWhenShiftUp) {\n      this.#highlightWhenShiftUp = false;\n      this.#onSelectEnd(\"main_toolbar\");\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    // When several editors are selected and the window loses focus, we want to\n    // keep the last active element in order to be able to focus it again when\n    // the window gets the focus back but we don't want to trigger any focus\n    // callbacks else only one editor will be selected.\n    const { activeElement } = document;\n    for (const editor of this.#selectedEditors) {\n      if (editor.div.contains(activeElement)) {\n        this.#lastActiveElement = [editor, activeElement];\n        editor._focusEventsAllowed = false;\n        break;\n      }\n    }\n  }\n\n  focus() {\n    if (!this.#lastActiveElement) {\n      return;\n    }\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n    this.#lastActiveElement = null;\n    lastActiveElement.addEventListener(\n      \"focusin\",\n      () => {\n        lastEditor._focusEventsAllowed = true;\n      },\n      { once: true, signal: this._signal }\n    );\n    lastActiveElement.focus();\n  }\n\n  #addKeyboardManager() {\n    if (this.#keyboardManagerAC) {\n      return;\n    }\n    this.#keyboardManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#keyboardManagerAC);\n\n    // The keyboard events are caught at the container level in order to be able\n    // to execute some callbacks even if the current page doesn't have focus.\n    window.addEventListener(\"keydown\", this.keydown.bind(this), { signal });\n    window.addEventListener(\"keyup\", this.keyup.bind(this), { signal });\n  }\n\n  #removeKeyboardManager() {\n    this.#keyboardManagerAC?.abort();\n    this.#keyboardManagerAC = null;\n  }\n\n  #addCopyPasteListeners() {\n    if (this.#copyPasteAC) {\n      return;\n    }\n    this.#copyPasteAC = new AbortController();\n    const signal = this.combinedSignal(this.#copyPasteAC);\n\n    document.addEventListener(\"copy\", this.copy.bind(this), { signal });\n    document.addEventListener(\"cut\", this.cut.bind(this), { signal });\n    document.addEventListener(\"paste\", this.paste.bind(this), { signal });\n  }\n\n  #removeCopyPasteListeners() {\n    this.#copyPasteAC?.abort();\n    this.#copyPasteAC = null;\n  }\n\n  #addDragAndDropListeners() {\n    const signal = this._signal;\n    document.addEventListener(\"dragover\", this.dragOver.bind(this), { signal });\n    document.addEventListener(\"drop\", this.drop.bind(this), { signal });\n  }\n\n  addEditListeners() {\n    this.#addKeyboardManager();\n    this.setEditingState(true);\n  }\n\n  removeEditListeners() {\n    this.#removeKeyboardManager();\n    this.setEditingState(false);\n  }\n\n  dragOver(event) {\n    for (const { type } of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(type)) {\n          event.dataTransfer.dropEffect = \"copy\";\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n\n  /**\n   * Drop callback.\n   * @param {DragEvent} event\n   */\n  drop(event) {\n    for (const item of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n\n  /**\n   * Copy callback.\n   * @param {ClipboardEvent} event\n   */\n  copy(event) {\n    event.preventDefault();\n\n    // An editor is being edited so just commit it.\n    this.#activeEditor?.commitOrRemove();\n\n    if (!this.hasSelection) {\n      return;\n    }\n\n    const editors = [];\n    for (const editor of this.#selectedEditors) {\n      const serialized = editor.serialize(/* isForCopying = */ true);\n      if (serialized) {\n        editors.push(serialized);\n      }\n    }\n    if (editors.length === 0) {\n      return;\n    }\n\n    event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n  }\n\n  /**\n   * Cut callback.\n   * @param {ClipboardEvent} event\n   */\n  cut(event) {\n    this.copy(event);\n    this.delete();\n  }\n\n  /**\n   * Paste callback.\n   * @param {ClipboardEvent} event\n   */\n  async paste(event) {\n    event.preventDefault();\n    const { clipboardData } = event;\n    for (const item of clipboardData.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          return;\n        }\n      }\n    }\n\n    let data = clipboardData.getData(\"application/pdfjs\");\n    if (!data) {\n      return;\n    }\n\n    try {\n      data = JSON.parse(data);\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n      return;\n    }\n\n    if (!Array.isArray(data)) {\n      return;\n    }\n\n    this.unselectAll();\n    const layer = this.currentLayer;\n\n    try {\n      const newEditors = [];\n      for (const editor of data) {\n        const deserializedEditor = await layer.deserialize(editor);\n        if (!deserializedEditor) {\n          return;\n        }\n        newEditors.push(deserializedEditor);\n      }\n\n      const cmd = () => {\n        for (const editor of newEditors) {\n          this.#addEditorToLayer(editor);\n        }\n        this.#selectEditors(newEditors);\n      };\n      const undo = () => {\n        for (const editor of newEditors) {\n          editor.remove();\n        }\n      };\n      this.addCommands({ cmd, undo, mustExec: true });\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n    }\n  }\n\n  /**\n   * Keydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (!this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = true;\n    }\n    if (\n      this.#mode !== AnnotationEditorType.NONE &&\n      !this.isEditorHandlingKeyboard\n    ) {\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\n    }\n  }\n\n  /**\n   * Keyup callback.\n   * @param {KeyboardEvent} event\n   */\n  keyup(event) {\n    if (this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = false;\n      if (this.#highlightWhenShiftUp) {\n        this.#highlightWhenShiftUp = false;\n        this.#onSelectEnd(\"main_toolbar\");\n      }\n    }\n  }\n\n  /**\n   * Execute an action for a given name.\n   * For example, the user can click on the \"Undo\" entry in the context menu\n   * and it'll trigger the undo action.\n   */\n  onEditingAction({ name }) {\n    switch (name) {\n      case \"undo\":\n      case \"redo\":\n      case \"delete\":\n      case \"selectAll\":\n        this[name]();\n        break;\n      case \"highlightSelection\":\n        this.highlightSelection(\"context_menu\");\n        break;\n      case \"commentSelection\":\n        this.commentSelection(\"context_menu\");\n        break;\n    }\n  }\n\n  /**\n   * Update the different possible states of this manager, e.g. is there\n   * something to undo, redo, ...\n   * @param {Object} details\n   */\n  #dispatchUpdateStates(details) {\n    const hasChanged = Object.entries(details).some(\n      ([key, value]) => this.#previousStates[key] !== value\n    );\n\n    if (hasChanged) {\n      this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n        source: this,\n        details: Object.assign(this.#previousStates, details),\n      });\n      // We could listen on our own event but it sounds like a bit weird and\n      // it's a way to simpler to handle that stuff here instead of having to\n      // add something in every place where an editor can be unselected.\n      if (\n        this.#mode === AnnotationEditorType.HIGHLIGHT &&\n        details.hasSelectedEditor === false\n      ) {\n        this.#dispatchUpdateUI([\n          [AnnotationEditorParamsType.HIGHLIGHT_FREE, true],\n        ]);\n      }\n    }\n  }\n\n  #dispatchUpdateUI(details) {\n    this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n      source: this,\n      details,\n    });\n  }\n\n  /**\n   * Set the editing state.\n   * It can be useful to temporarily disable it when the user is editing a\n   * FreeText annotation.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    if (isEditing) {\n      this.#addFocusManager();\n      this.#addCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: this.#mode !== AnnotationEditorType.NONE,\n        isEmpty: this.#isEmpty(),\n        hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n        hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n        hasSelectedEditor: false,\n      });\n    } else {\n      this.#removeFocusManager();\n      this.#removeCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: false,\n      });\n      this.disableUserSelect(false);\n    }\n  }\n\n  registerEditorTypes(types) {\n    if (this.#editorTypes) {\n      return;\n    }\n    this.#editorTypes = types;\n    for (const editorType of this.#editorTypes) {\n      this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n    }\n  }\n\n  /**\n   * Get an id.\n   * @returns {string}\n   */\n  getId() {\n    return this.#idManager.id;\n  }\n\n  get currentLayer() {\n    return this.#allLayers.get(this.#currentPageIndex);\n  }\n\n  getLayer(pageIndex) {\n    return this.#allLayers.get(pageIndex);\n  }\n\n  get currentPageIndex() {\n    return this.#currentPageIndex;\n  }\n\n  /**\n   * Add a new layer for a page which will contains the editors.\n   * @param {AnnotationEditorLayer} layer\n   */\n  addLayer(layer) {\n    this.#allLayers.set(layer.pageIndex, layer);\n    if (this.#isEnabled) {\n      layer.enable();\n    } else {\n      layer.disable();\n    }\n  }\n\n  /**\n   * Remove a layer.\n   * @param {AnnotationEditorLayer} layer\n   */\n  removeLayer(layer) {\n    this.#allLayers.delete(layer.pageIndex);\n  }\n\n  /**\n   * Change the editor mode (None, FreeText, Ink, ...)\n   * @param {number} mode\n   * @param {string|null} editId\n   * @param {boolean} [isFromUser] - true if the mode change is due to a\n   *   user action.\n   * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\n   *   keyboard action.\n   * @param {boolean} [mustEnterInEditMode] - true if the editor must enter in\n   *   edit mode.\n   * @param {boolean} [editComment] - true if the mode change is due to a\n   *   comment edit.\n   */\n  async updateMode(\n    mode,\n    editId = null,\n    isFromUser = false,\n    isFromKeyboard = false,\n    mustEnterInEditMode = false,\n    editComment = false\n  ) {\n    if (this.#mode === mode) {\n      return;\n    }\n\n    if (this.#updateModeCapability) {\n      await this.#updateModeCapability.promise;\n      if (!this.#updateModeCapability) {\n        // This ui manager has been destroyed.\n        return;\n      }\n    }\n\n    this.#updateModeCapability = Promise.withResolvers();\n    this.#currentDrawingSession?.commitOrRemove();\n\n    if (this.#mode === AnnotationEditorType.POPUP) {\n      this.#commentManager?.hideSidebar();\n    }\n    this.#commentManager?.destroyPopup();\n\n    this.#mode = mode;\n    if (mode === AnnotationEditorType.NONE) {\n      this.setEditingState(false);\n      this.#disableAll();\n      for (const editor of this.#allEditors.values()) {\n        editor.hideStandaloneCommentButton();\n      }\n\n      this._editorUndoBar?.hide();\n      this.toggleComment(/* editor = */ null);\n\n      this.#updateModeCapability.resolve();\n      return;\n    }\n\n    for (const editor of this.#allEditors.values()) {\n      editor.addStandaloneCommentButton();\n    }\n\n    if (mode === AnnotationEditorType.SIGNATURE) {\n      await this.#signatureManager?.loadSignatures();\n    }\n\n    if (isFromUser) {\n      // reinitialize the pointer type when the mode is changed by the user\n      CurrentPointers.clearPointerType();\n    }\n\n    this.setEditingState(true);\n    await this.#enableAll();\n    this.unselectAll();\n    for (const layer of this.#allLayers.values()) {\n      layer.updateMode(mode);\n    }\n\n    if (mode === AnnotationEditorType.POPUP) {\n      this.#allEditableAnnotations ||=\n        await this.#pdfDocument.getAnnotationsByType(\n          new Set(this.#editorTypes.map(editorClass => editorClass._editorType))\n        );\n      const elementIds = new Set();\n      const allComments = [];\n      for (const editor of this.#allEditors.values()) {\n        const { annotationElementId, hasComment, deleted } = editor;\n        if (annotationElementId) {\n          elementIds.add(annotationElementId);\n        }\n        if (hasComment && !deleted) {\n          allComments.push(editor.getData());\n        }\n      }\n      for (const annotation of this.#allEditableAnnotations) {\n        const { id, popupRef, contentsObj } = annotation;\n        if (\n          popupRef &&\n          contentsObj?.str &&\n          !elementIds.has(id) &&\n          !this.#deletedAnnotationsElementIds.has(id)\n        ) {\n          // The annotation exists in the PDF and has a comment but there\n          // is no editor for it (anymore).\n          allComments.push(annotation);\n        }\n      }\n      this.#commentManager?.showSidebar(allComments);\n    }\n\n    if (!editId) {\n      if (isFromKeyboard) {\n        this.addNewEditorFromKeyboard();\n      }\n\n      this.#updateModeCapability.resolve();\n      return;\n    }\n\n    for (const editor of this.#allEditors.values()) {\n      if (editor.uid === editId) {\n        this.setSelected(editor);\n        if (editComment) {\n          editor.editComment();\n        } else if (mustEnterInEditMode) {\n          editor.enterInEditMode();\n        } else {\n          editor.focus();\n        }\n      } else {\n        editor.unselect();\n      }\n    }\n\n    this.#updateModeCapability.resolve();\n  }\n\n  addNewEditorFromKeyboard() {\n    if (this.currentLayer.canCreateNewEmptyEditor()) {\n      this.currentLayer.addNewEditor();\n    }\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {Object} options\n   * @param {number} mode\n   * @returns {undefined}\n   */\n  updateToolbar(options) {\n    if (options.mode === this.#mode) {\n      return;\n    }\n    this._eventBus.dispatch(\"switchannotationeditormode\", {\n      source: this,\n      ...options,\n    });\n  }\n\n  /**\n   * Update a parameter in the current editor or globally.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {\n    if (!this.#editorTypes) {\n      return;\n    }\n\n    switch (type) {\n      case AnnotationEditorParamsType.CREATE:\n        this.currentLayer.addNewEditor(value);\n        return;\n      case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n        this._eventBus.dispatch(\"reporttelemetry\", {\n          source: this,\n          details: {\n            type: \"editing\",\n            data: {\n              type: \"highlight\",\n              action: \"toggle_visibility\",\n            },\n          },\n        });\n        (this.#showAllStates ||= new Map()).set(type, value);\n        this.showAllEditors(\"highlight\", value);\n        break;\n    }\n\n    if (this.hasSelection) {\n      for (const editor of this.#selectedEditors) {\n        editor.updateParams(type, value);\n      }\n    } else {\n      for (const editorType of this.#editorTypes) {\n        editorType.updateDefaultParams(type, value);\n      }\n    }\n  }\n\n  showAllEditors(type, visible, updateButton = false) {\n    for (const editor of this.#allEditors.values()) {\n      if (editor.editorType === type) {\n        editor.show(visible);\n      }\n    }\n    const state =\n      this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ??\n      true;\n    if (state !== visible) {\n      this.#dispatchUpdateUI([\n        [AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible],\n      ]);\n    }\n  }\n\n  enableWaiting(mustWait = false) {\n    if (this.#isWaiting === mustWait) {\n      return;\n    }\n    this.#isWaiting = mustWait;\n    for (const layer of this.#allLayers.values()) {\n      if (mustWait) {\n        layer.disableClick();\n      } else {\n        layer.enableClick();\n      }\n      layer.div.classList.toggle(\"waiting\", mustWait);\n    }\n  }\n\n  /**\n   * Enable all the layers.\n   */\n  async #enableAll() {\n    if (!this.#isEnabled) {\n      this.#isEnabled = true;\n      const promises = [];\n      for (const layer of this.#allLayers.values()) {\n        promises.push(layer.enable());\n      }\n      await Promise.all(promises);\n      for (const editor of this.#allEditors.values()) {\n        editor.enable();\n      }\n    }\n  }\n\n  /**\n   * Disable all the layers.\n   */\n  #disableAll() {\n    this.unselectAll();\n    if (this.#isEnabled) {\n      this.#isEnabled = false;\n      for (const layer of this.#allLayers.values()) {\n        layer.disable();\n      }\n      for (const editor of this.#allEditors.values()) {\n        editor.disable();\n      }\n    }\n  }\n\n  /**\n   * Get all the editors belonging to a given page.\n   * @param {number} pageIndex\n   * @yields {AnnotationEditor}\n   */\n  *getEditors(pageIndex) {\n    for (const editor of this.#allEditors.values()) {\n      if (editor.pageIndex === pageIndex) {\n        yield editor;\n      }\n    }\n  }\n\n  /**\n   * Get an editor with the given id.\n   * @param {string} id\n   * @returns {AnnotationEditor}\n   */\n  getEditor(id) {\n    return this.#allEditors.get(id);\n  }\n\n  /**\n   * Add a new editor.\n   * @param {AnnotationEditor} editor\n   */\n  addEditor(editor) {\n    this.#allEditors.set(editor.id, editor);\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  removeEditor(editor) {\n    if (editor.div.contains(document.activeElement)) {\n      if (this.#focusMainContainerTimeoutId) {\n        clearTimeout(this.#focusMainContainerTimeoutId);\n      }\n      this.#focusMainContainerTimeoutId = setTimeout(() => {\n        // When the div is removed from DOM the focus can move on the\n        // document.body, so we need to move it back to the main container.\n        this.focusMainContainer();\n        this.#focusMainContainerTimeoutId = null;\n      }, 0);\n    }\n    this.#allEditors.delete(editor.id);\n    if (editor.annotationElementId) {\n      this.#missingCanvases?.delete(editor.annotationElementId);\n    }\n    this.unselect(editor);\n    if (\n      !editor.annotationElementId ||\n      !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\n    ) {\n      this.#annotationStorage?.remove(editor.id);\n    }\n  }\n\n  /**\n   * The annotation element with the given id has been deleted.\n   * @param {AnnotationEditor} editor\n   */\n  addDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n    this.addChangedExistingAnnotation(editor);\n    editor.deleted = true;\n  }\n\n  /**\n   * Check if the annotation element with the given id has been deleted.\n   * @param {string} annotationElementId\n   * @returns {boolean}\n   */\n  isDeletedAnnotationElement(annotationElementId) {\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\n  }\n\n  /**\n   * The annotation element with the given id have been restored.\n   * @param {AnnotationEditor} editor\n   */\n  removeDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n    this.removeChangedExistingAnnotation(editor);\n    editor.deleted = false;\n  }\n\n  /**\n   * Add an editor to the layer it belongs to or add it to the global map.\n   * @param {AnnotationEditor} editor\n   */\n  #addEditorToLayer(editor) {\n    const layer = this.#allLayers.get(editor.pageIndex);\n    if (layer) {\n      layer.addOrRebuild(editor);\n    } else {\n      this.addEditor(editor);\n      this.addToAnnotationStorage(editor);\n    }\n  }\n\n  /**\n   * Set the given editor as the active one.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    if (this.#activeEditor === editor) {\n      return;\n    }\n\n    this.#activeEditor = editor;\n    if (editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n\n  get #lastSelectedEditor() {\n    let ed = null;\n    for (ed of this.#selectedEditors) {\n      // Iterate to get the last element.\n    }\n    return ed;\n  }\n\n  /**\n   * Update the UI of the active editor.\n   * @param {AnnotationEditor} editor\n   */\n  updateUI(editor) {\n    if (this.#lastSelectedEditor === editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n\n  updateUIForDefaultProperties(editorType) {\n    this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    if (this.#selectedEditors.has(editor)) {\n      this.#selectedEditors.delete(editor);\n      editor.unselect();\n      this.#dispatchUpdateStates({\n        hasSelectedEditor: this.hasSelection,\n      });\n      return;\n    }\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    this.updateToolbar({\n      mode: editor.mode,\n      editId: editor.uid,\n    });\n\n    this.#currentDrawingSession?.commitOrRemove();\n    for (const ed of this.#selectedEditors) {\n      if (ed !== editor) {\n        ed.unselect();\n      }\n    }\n    this.#selectedEditors.clear();\n\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Check if the editor is selected.\n   * @param {AnnotationEditor} editor\n   */\n  isSelected(editor) {\n    return this.#selectedEditors.has(editor);\n  }\n\n  get firstSelectedEditor() {\n    return this.#selectedEditors.values().next().value;\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    editor.unselect();\n    this.#selectedEditors.delete(editor);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: this.hasSelection,\n    });\n  }\n\n  get hasSelection() {\n    return this.#selectedEditors.size !== 0;\n  }\n\n  get isEnterHandled() {\n    return (\n      this.#selectedEditors.size === 1 &&\n      this.firstSelectedEditor.isEnterHandled\n    );\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    this.#commandManager.undo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n      hasSomethingToRedo: true,\n      isEmpty: this.#isEmpty(),\n    });\n    this._editorUndoBar?.hide();\n  }\n\n  /**\n   * Redo the last undoed command.\n   */\n  redo() {\n    this.#commandManager.redo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  /**\n   * Add a command to execute (cmd) and another one to undo it.\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this.#commandManager.add(params);\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: true,\n      hasSomethingToRedo: false,\n      isEmpty: this.#isEmpty(),\n    });\n  }\n\n  cleanUndoStack(type) {\n    this.#commandManager.cleanType(type);\n  }\n\n  #isEmpty() {\n    if (this.#allEditors.size === 0) {\n      return true;\n    }\n\n    if (this.#allEditors.size === 1) {\n      for (const editor of this.#allEditors.values()) {\n        return editor.isEmpty();\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Delete the current editor or all.\n   */\n  delete() {\n    this.commitOrRemove();\n    const drawingEditor = this.currentLayer?.endDrawingSession(\n      /* isAborted = */ true\n    );\n    if (!this.hasSelection && !drawingEditor) {\n      return;\n    }\n\n    const editors = drawingEditor\n      ? [drawingEditor]\n      : [...this.#selectedEditors];\n    const cmd = () => {\n      this._editorUndoBar?.show(\n        undo,\n        editors.length === 1 ? editors[0].editorType : editors.length\n      );\n      for (const editor of editors) {\n        editor.remove();\n      }\n    };\n    const undo = () => {\n      for (const editor of editors) {\n        this.#addEditorToLayer(editor);\n      }\n    };\n\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  commitOrRemove() {\n    // An editor is being edited so just commit it.\n    this.#activeEditor?.commitOrRemove();\n  }\n\n  hasSomethingToControl() {\n    return this.#activeEditor || this.hasSelection;\n  }\n\n  /**\n   * Select the editors.\n   * @param {Array<AnnotationEditor>} editors\n   */\n  #selectEditors(editors) {\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    for (const editor of editors) {\n      if (editor.isEmpty()) {\n        continue;\n      }\n      this.#selectedEditors.add(editor);\n      editor.select();\n    }\n    this.#dispatchUpdateStates({ hasSelectedEditor: this.hasSelection });\n  }\n\n  /**\n   * Select all the editors.\n   */\n  selectAll() {\n    for (const editor of this.#selectedEditors) {\n      editor.commit();\n    }\n    this.#selectEditors(this.#allEditors.values());\n  }\n\n  /**\n   * Unselect all the selected editors.\n   */\n  unselectAll() {\n    if (this.#activeEditor) {\n      // An editor is being edited so just commit it.\n      this.#activeEditor.commitOrRemove();\n      if (this.#mode !== AnnotationEditorType.NONE) {\n        // If the mode is NONE, we want to really unselect the editor, hence we\n        // mustn't return here.\n        return;\n      }\n    }\n\n    if (this.#currentDrawingSession?.commitOrRemove()) {\n      return;\n    }\n\n    if (!this.hasSelection) {\n      return;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: false,\n    });\n  }\n\n  translateSelectedEditors(x, y, noCommit = false) {\n    if (!noCommit) {\n      this.commitOrRemove();\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n\n    this.#translation[0] += x;\n    this.#translation[1] += y;\n    const [totalX, totalY] = this.#translation;\n    const editors = [...this.#selectedEditors];\n\n    // We don't want to have an undo/redo for each translation so we wait a bit\n    // before adding the command to the command manager.\n    const TIME_TO_WAIT = 1000;\n\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n    }\n\n    this.#translationTimeoutId = setTimeout(() => {\n      this.#translationTimeoutId = null;\n      this.#translation[0] = this.#translation[1] = 0;\n\n      this.addCommands({\n        cmd: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(totalX, totalY);\n              editor.translationDone();\n            }\n          }\n        },\n        undo: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(-totalX, -totalY);\n              editor.translationDone();\n            }\n          }\n        },\n        mustExec: false,\n      });\n    }, TIME_TO_WAIT);\n\n    for (const editor of editors) {\n      editor.translateInPage(x, y);\n      editor.translationDone();\n    }\n  }\n\n  /**\n   * Set up the drag session for moving the selected editors.\n   */\n  setUpDragSession() {\n    // Note: don't use any references to the editor's parent which can be null\n    // if the editor belongs to a destroyed page.\n    if (!this.hasSelection) {\n      return;\n    }\n    // Avoid to have spurious text selection in the text layer when dragging.\n    this.disableUserSelect(true);\n    this.#draggingEditors = new Map();\n    for (const editor of this.#selectedEditors) {\n      this.#draggingEditors.set(editor, {\n        savedX: editor.x,\n        savedY: editor.y,\n        savedPageIndex: editor.pageIndex,\n        newX: 0,\n        newY: 0,\n        newPageIndex: -1,\n      });\n    }\n  }\n\n  /**\n   * Ends the drag session.\n   * @returns {boolean} true if at least one editor has been moved.\n   */\n  endDragSession() {\n    if (!this.#draggingEditors) {\n      return false;\n    }\n    this.disableUserSelect(false);\n    const map = this.#draggingEditors;\n    this.#draggingEditors = null;\n    let mustBeAddedInUndoStack = false;\n\n    for (const [{ x, y, pageIndex }, value] of map) {\n      value.newX = x;\n      value.newY = y;\n      value.newPageIndex = pageIndex;\n      mustBeAddedInUndoStack ||=\n        x !== value.savedX ||\n        y !== value.savedY ||\n        pageIndex !== value.savedPageIndex;\n    }\n\n    if (!mustBeAddedInUndoStack) {\n      return false;\n    }\n\n    const move = (editor, x, y, pageIndex) => {\n      if (this.#allEditors.has(editor.id)) {\n        // The editor can be undone/redone on a page which is not visible (and\n        // which potentially has no annotation editor layer), hence we need to\n        // use the pageIndex instead of the parent.\n        const parent = this.#allLayers.get(pageIndex);\n        if (parent) {\n          editor._setParentAndPosition(parent, x, y);\n        } else {\n          editor.pageIndex = pageIndex;\n          editor.x = x;\n          editor.y = y;\n        }\n      }\n    };\n\n    this.addCommands({\n      cmd: () => {\n        for (const [editor, { newX, newY, newPageIndex }] of map) {\n          move(editor, newX, newY, newPageIndex);\n        }\n      },\n      undo: () => {\n        for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\n          move(editor, savedX, savedY, savedPageIndex);\n        }\n      },\n      mustExec: true,\n    });\n\n    return true;\n  }\n\n  /**\n   * Drag the set of selected editors.\n   * @param {number} tx\n   * @param {number} ty\n   */\n  dragSelectedEditors(tx, ty) {\n    if (!this.#draggingEditors) {\n      return;\n    }\n    for (const editor of this.#draggingEditors.keys()) {\n      editor.drag(tx, ty);\n    }\n  }\n\n  /**\n   * Rebuild the editor (usually on undo/redo actions) on a potentially\n   * non-rendered page.\n   * @param {AnnotationEditor} editor\n   */\n  rebuild(editor) {\n    if (editor.parent === null) {\n      const parent = this.getLayer(editor.pageIndex);\n      if (parent) {\n        parent.changeParent(editor);\n        parent.addOrRebuild(editor);\n      } else {\n        this.addEditor(editor);\n        this.addToAnnotationStorage(editor);\n        editor.rebuild();\n      }\n    } else {\n      editor.parent.addOrRebuild(editor);\n    }\n  }\n\n  get isEditorHandlingKeyboard() {\n    return (\n      this.getActive()?.shouldGetKeyboardEvents() ||\n      (this.#selectedEditors.size === 1 &&\n        this.firstSelectedEditor.shouldGetKeyboardEvents())\n    );\n  }\n\n  /**\n   * Is the current editor the one passed as argument?\n   * @param {AnnotationEditor} editor\n   * @returns\n   */\n  isActive(editor) {\n    return this.#activeEditor === editor;\n  }\n\n  /**\n   * Get the current active editor.\n   * @returns {AnnotationEditor|null}\n   */\n  getActive() {\n    return this.#activeEditor;\n  }\n\n  /**\n   * Get the current editor mode.\n   * @returns {number}\n   */\n  getMode() {\n    return this.#mode;\n  }\n\n  isEditingMode() {\n    return this.#mode !== AnnotationEditorType.NONE;\n  }\n\n  get imageManager() {\n    return shadow(this, \"imageManager\", new ImageManager());\n  }\n\n  getSelectionBoxes(textLayer) {\n    if (!textLayer) {\n      return null;\n    }\n    const selection = document.getSelection();\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      if (\n        !textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)\n      ) {\n        return null;\n      }\n    }\n\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight,\n    } = textLayer.getBoundingClientRect();\n\n    // We must rotate the boxes because we want to have them in the non-rotated\n    // page coordinates.\n    let rotator;\n    switch (textLayer.getAttribute(\"data-main-rotation\")) {\n      case \"90\":\n        rotator = (x, y, w, h) => ({\n          x: (y - layerY) / parentHeight,\n          y: 1 - (x + w - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth,\n        });\n        break;\n      case \"180\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (x + w - layerX) / parentWidth,\n          y: 1 - (y + h - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight,\n        });\n        break;\n      case \"270\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (y + h - layerY) / parentHeight,\n          y: (x - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth,\n        });\n        break;\n      default:\n        rotator = (x, y, w, h) => ({\n          x: (x - layerX) / parentWidth,\n          y: (y - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight,\n        });\n        break;\n    }\n\n    const boxes = [];\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      const range = selection.getRangeAt(i);\n      if (range.collapsed) {\n        continue;\n      }\n      for (const { x, y, width, height } of range.getClientRects()) {\n        if (width === 0 || height === 0) {\n          continue;\n        }\n        boxes.push(rotator(x, y, width, height));\n      }\n    }\n    return boxes.length === 0 ? null : boxes;\n  }\n\n  addChangedExistingAnnotation({ annotationElementId, id }) {\n    (this.#changedExistingAnnotations ||= new Map()).set(\n      annotationElementId,\n      id\n    );\n  }\n\n  removeChangedExistingAnnotation({ annotationElementId }) {\n    this.#changedExistingAnnotations?.delete(annotationElementId);\n  }\n\n  renderAnnotationElement(annotation) {\n    const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n    if (!editorId) {\n      return;\n    }\n    const editor = this.#annotationStorage.getRawValue(editorId);\n    if (!editor) {\n      return;\n    }\n    if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n      return;\n    }\n    editor.renderAnnotationElement(annotation);\n  }\n\n  setMissingCanvas(annotationId, annotationElementId, canvas) {\n    const editor = this.#missingCanvases?.get(annotationId);\n    if (!editor) {\n      return;\n    }\n    editor.setCanvas(annotationElementId, canvas);\n    this.#missingCanvases.delete(annotationId);\n  }\n\n  addMissingCanvas(annotationId, editor) {\n    (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n  }\n}\n\nexport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  CommandManager,\n  CurrentPointers,\n  KeyboardManager,\n};\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass AltText {\n  #altText = null;\n\n  #altTextDecorative = false;\n\n  #altTextButton = null;\n\n  #altTextButtonLabel = null;\n\n  #altTextTooltip = null;\n\n  #altTextTooltipTimeout = null;\n\n  #altTextWasFromKeyBoard = false;\n\n  #badge = null;\n\n  #editor = null;\n\n  #guessedText = null;\n\n  #textWithDisclaimer = null;\n\n  #useNewAltTextFlow = false;\n\n  static #l10nNewButton = null;\n\n  static _l10n = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n    this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n\n    AltText.#l10nNewButton ||= Object.freeze({\n      added: \"pdfjs-editor-new-alt-text-added-button\",\n      \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n      missing: \"pdfjs-editor-new-alt-text-missing-button\",\n      \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n      review: \"pdfjs-editor-new-alt-text-to-review-button\",\n      \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\",\n    });\n  }\n\n  static initialize(l10n) {\n    AltText._l10n ??= l10n;\n  }\n\n  async render() {\n    const altText = (this.#altTextButton = document.createElement(\"button\"));\n    altText.className = \"altText\";\n    altText.tabIndex = \"0\";\n\n    const label = (this.#altTextButtonLabel = document.createElement(\"span\"));\n    altText.append(label);\n\n    if (this.#useNewAltTextFlow) {\n      altText.classList.add(\"new\");\n      altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n      label.setAttribute(\n        \"data-l10n-id\",\n        AltText.#l10nNewButton[\"missing-label\"]\n      );\n    } else {\n      altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n      label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n    }\n\n    const signal = this.#editor._uiManager._signal;\n    altText.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n      signal,\n    });\n\n    const onClick = event => {\n      event.preventDefault();\n      this.#editor._uiManager.editAltText(this.#editor);\n      if (this.#useNewAltTextFlow) {\n        this.#editor._reportTelemetry({\n          action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n          data: { label: this.#label },\n        });\n      }\n    };\n    altText.addEventListener(\"click\", onClick, { capture: true, signal });\n    altText.addEventListener(\n      \"keydown\",\n      event => {\n        if (event.target === altText && event.key === \"Enter\") {\n          this.#altTextWasFromKeyBoard = true;\n          onClick(event);\n        }\n      },\n      { signal }\n    );\n    await this.#setState();\n\n    return altText;\n  }\n\n  get #label() {\n    return (\n      (this.#altText && \"added\") ||\n      (this.#altText === null && this.guessedText && \"review\") ||\n      \"missing\"\n    );\n  }\n\n  finish() {\n    if (!this.#altTextButton) {\n      return;\n    }\n    this.#altTextButton.focus({ focusVisible: this.#altTextWasFromKeyBoard });\n    this.#altTextWasFromKeyBoard = false;\n  }\n\n  isEmpty() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText === null;\n    }\n    return !this.#altText && !this.#altTextDecorative;\n  }\n\n  hasData() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText !== null || !!this.#guessedText;\n    }\n    return this.isEmpty();\n  }\n\n  get guessedText() {\n    return this.#guessedText;\n  }\n\n  async setGuessedText(guessedText) {\n    if (this.#altText !== null) {\n      // The user provided their own alt text, so we don't want to overwrite it.\n      return;\n    }\n    this.#guessedText = guessedText;\n    this.#textWithDisclaimer = await AltText._l10n.get(\n      \"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\",\n      { generatedAltText: guessedText }\n    );\n    this.#setState();\n  }\n\n  toggleAltTextBadge(visibility = false) {\n    if (!this.#useNewAltTextFlow || this.#altText) {\n      this.#badge?.remove();\n      this.#badge = null;\n      return;\n    }\n    if (!this.#badge) {\n      const badge = (this.#badge = document.createElement(\"div\"));\n      badge.className = \"noAltTextBadge\";\n      this.#editor.div.append(badge);\n    }\n    this.#badge.classList.toggle(\"hidden\", !visibility);\n  }\n\n  serialize(isForCopying) {\n    let altText = this.#altText;\n    if (!isForCopying && this.#guessedText === altText) {\n      altText = this.#textWithDisclaimer;\n    }\n    return {\n      altText,\n      decorative: this.#altTextDecorative,\n      guessedText: this.#guessedText,\n      textWithDisclaimer: this.#textWithDisclaimer,\n    };\n  }\n\n  get data() {\n    return {\n      altText: this.#altText,\n      decorative: this.#altTextDecorative,\n    };\n  }\n\n  /**\n   * Set the alt text data.\n   */\n  set data({\n    altText,\n    decorative,\n    guessedText,\n    textWithDisclaimer,\n    cancel = false,\n  }) {\n    if (guessedText) {\n      this.#guessedText = guessedText;\n      this.#textWithDisclaimer = textWithDisclaimer;\n    }\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\n      return;\n    }\n    if (!cancel) {\n      this.#altText = altText;\n      this.#altTextDecorative = decorative;\n    }\n    this.#setState();\n  }\n\n  toggle(enabled = false) {\n    if (!this.#altTextButton) {\n      return;\n    }\n    if (!enabled && this.#altTextTooltipTimeout) {\n      clearTimeout(this.#altTextTooltipTimeout);\n      this.#altTextTooltipTimeout = null;\n    }\n    this.#altTextButton.disabled = !enabled;\n  }\n\n  shown() {\n    this.#editor._reportTelemetry({\n      action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n      data: { label: this.#label },\n    });\n  }\n\n  destroy() {\n    this.#altTextButton?.remove();\n    this.#altTextButton = null;\n    this.#altTextButtonLabel = null;\n    this.#altTextTooltip = null;\n    this.#badge?.remove();\n    this.#badge = null;\n  }\n\n  async #setState() {\n    const button = this.#altTextButton;\n    if (!button) {\n      return;\n    }\n\n    if (this.#useNewAltTextFlow) {\n      button.classList.toggle(\"done\", !!this.#altText);\n      button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n\n      this.#altTextButtonLabel?.setAttribute(\n        \"data-l10n-id\",\n        AltText.#l10nNewButton[`${this.#label}-label`]\n      );\n      if (!this.#altText) {\n        this.#altTextTooltip?.remove();\n        return;\n      }\n    } else {\n      if (!this.#altText && !this.#altTextDecorative) {\n        button.classList.remove(\"done\");\n        this.#altTextTooltip?.remove();\n        return;\n      }\n      button.classList.add(\"done\");\n      button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n    }\n\n    let tooltip = this.#altTextTooltip;\n    if (!tooltip) {\n      this.#altTextTooltip = tooltip = document.createElement(\"span\");\n      tooltip.className = \"tooltip\";\n      tooltip.setAttribute(\"role\", \"tooltip\");\n      tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n\n      const DELAY_TO_SHOW_TOOLTIP = 100;\n      const signal = this.#editor._uiManager._signal;\n      signal.addEventListener(\n        \"abort\",\n        () => {\n          clearTimeout(this.#altTextTooltipTimeout);\n          this.#altTextTooltipTimeout = null;\n        },\n        { once: true }\n      );\n      button.addEventListener(\n        \"mouseenter\",\n        () => {\n          this.#altTextTooltipTimeout = setTimeout(() => {\n            this.#altTextTooltipTimeout = null;\n            this.#altTextTooltip.classList.add(\"show\");\n            this.#editor._reportTelemetry({\n              action: \"alt_text_tooltip\",\n            });\n          }, DELAY_TO_SHOW_TOOLTIP);\n        },\n        { signal }\n      );\n      button.addEventListener(\n        \"mouseleave\",\n        () => {\n          if (this.#altTextTooltipTimeout) {\n            clearTimeout(this.#altTextTooltipTimeout);\n            this.#altTextTooltipTimeout = null;\n          }\n          this.#altTextTooltip?.classList.remove(\"show\");\n        },\n        { signal }\n      );\n    }\n    if (this.#altTextDecorative) {\n      tooltip.setAttribute(\n        \"data-l10n-id\",\n        \"pdfjs-editor-alt-text-decorative-tooltip\"\n      );\n    } else {\n      tooltip.removeAttribute(\"data-l10n-id\");\n      tooltip.textContent = this.#altText;\n    }\n\n    if (!tooltip.parentNode) {\n      button.append(tooltip);\n    }\n\n    const element = this.#editor.getElementForAltText();\n    element?.setAttribute(\"aria-describedby\", tooltip.id);\n  }\n}\n\nexport { AltText };\n", "/* Copyright 2025 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\n\nclass Comment {\n  #commentStandaloneButton = null;\n\n  #commentToolbarButton = null;\n\n  #commentWasFromKeyBoard = false;\n\n  #editor = null;\n\n  #initialText = null;\n\n  #richText = null;\n\n  #text = null;\n\n  #date = null;\n\n  #deleted = false;\n\n  #popupPosition = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n  }\n\n  renderForToolbar() {\n    const button = (this.#commentToolbarButton =\n      document.createElement(\"button\"));\n    button.className = \"comment\";\n    return this.#render(button, false);\n  }\n\n  renderForStandalone() {\n    const button = (this.#commentStandaloneButton =\n      document.createElement(\"button\"));\n    button.className = \"annotationCommentButton\";\n\n    const position = this.#editor.commentButtonPosition;\n    if (position) {\n      const { style } = button;\n      style.insetInlineEnd = `calc(${\n        100 *\n        (this.#editor._uiManager.direction === \"ltr\"\n          ? 1 - position[0]\n          : position[0])\n      }% - var(--comment-button-dim))`;\n      style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n      const color = this.#editor.commentButtonColor;\n      if (color) {\n        style.backgroundColor = color;\n      }\n    }\n\n    return this.#render(button, true);\n  }\n\n  focusButton() {\n    setTimeout(() => {\n      (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n    }, 0);\n  }\n\n  onUpdatedColor() {\n    if (!this.#commentStandaloneButton) {\n      return;\n    }\n    const color = this.#editor.commentButtonColor;\n    if (color) {\n      this.#commentStandaloneButton.style.backgroundColor = color;\n    }\n    this.#editor._uiManager.updatePopupColor(this.#editor);\n  }\n\n  get commentButtonWidth() {\n    return (\n      (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) /\n      this.#editor.parent.boundingClientRect.width\n    );\n  }\n\n  get commentPopupPositionInLayer() {\n    if (this.#popupPosition) {\n      return this.#popupPosition;\n    }\n    if (!this.#commentStandaloneButton) {\n      return null;\n    }\n    const { x, y, height } =\n      this.#commentStandaloneButton.getBoundingClientRect();\n    const {\n      x: parentX,\n      y: parentY,\n      width: parentWidth,\n      height: parentHeight,\n    } = this.#editor.parent.boundingClientRect;\n    return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n  }\n\n  set commentPopupPositionInLayer(pos) {\n    this.#popupPosition = pos;\n  }\n\n  hasDefaultPopupPosition() {\n    return this.#popupPosition === null;\n  }\n\n  removeStandaloneCommentButton() {\n    this.#commentStandaloneButton?.remove();\n    this.#commentStandaloneButton = null;\n  }\n\n  removeToolbarCommentButton() {\n    this.#commentToolbarButton?.remove();\n    this.#commentToolbarButton = null;\n  }\n\n  setCommentButtonStates({ selected, hasPopup }) {\n    if (!this.#commentStandaloneButton) {\n      return;\n    }\n    this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n    this.#commentStandaloneButton.ariaExpanded = hasPopup;\n  }\n\n  #render(comment, isStandalone) {\n    if (!this.#editor._uiManager.hasCommentManager()) {\n      return null;\n    }\n\n    comment.tabIndex = \"0\";\n    comment.ariaHasPopup = \"dialog\";\n\n    if (isStandalone) {\n      comment.ariaControls = \"commentPopup\";\n      comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n    } else {\n      comment.ariaControlsElements = [\n        this.#editor._uiManager.getCommentDialogElement(),\n      ];\n      comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-comment-button\");\n    }\n\n    const signal = this.#editor._uiManager._signal;\n    if (!(signal instanceof AbortSignal) || signal.aborted) {\n      return comment;\n    }\n\n    comment.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    if (isStandalone) {\n      comment.addEventListener(\n        \"focusin\",\n        e => {\n          this.#editor._focusEventsAllowed = false;\n          stopEvent(e);\n        },\n        {\n          capture: true,\n          signal,\n        }\n      );\n      comment.addEventListener(\n        \"focusout\",\n        e => {\n          this.#editor._focusEventsAllowed = true;\n          stopEvent(e);\n        },\n        {\n          capture: true,\n          signal,\n        }\n      );\n    }\n    comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n      signal,\n    });\n\n    const onClick = event => {\n      event.preventDefault();\n      if (comment === this.#commentToolbarButton) {\n        this.edit();\n      } else {\n        this.#editor.toggleComment(/* isSelected = */ true);\n      }\n    };\n    comment.addEventListener(\"click\", onClick, { capture: true, signal });\n    comment.addEventListener(\n      \"keydown\",\n      event => {\n        if (event.target === comment && event.key === \"Enter\") {\n          this.#commentWasFromKeyBoard = true;\n          onClick(event);\n        }\n      },\n      { signal }\n    );\n\n    comment.addEventListener(\n      \"pointerenter\",\n      () => {\n        this.#editor.toggleComment(\n          /* isSelected = */ false,\n          /* visibility = */ true\n        );\n      },\n      { signal }\n    );\n    comment.addEventListener(\n      \"pointerleave\",\n      () => {\n        this.#editor.toggleComment(\n          /* isSelected = */ false,\n          /* visibility = */ false\n        );\n      },\n      { signal }\n    );\n\n    return comment;\n  }\n\n  edit(options) {\n    const position = this.commentPopupPositionInLayer;\n    let posX, posY;\n    if (position) {\n      [posX, posY] = position;\n    } else {\n      // The position is in the editor coordinates.\n      [posX, posY] = this.#editor.commentButtonPosition;\n      const { width, height, x, y } = this.#editor;\n      posX = x + posX * width;\n      posY = y + posY * height;\n    }\n    const parentDimensions = this.#editor.parent.boundingClientRect;\n    const {\n      x: parentX,\n      y: parentY,\n      width: parentWidth,\n      height: parentHeight,\n    } = parentDimensions;\n    this.#editor._uiManager.editComment(\n      this.#editor,\n      parentX + posX * parentWidth,\n      parentY + posY * parentHeight,\n      { ...options, parentDimensions }\n    );\n  }\n\n  finish() {\n    if (!this.#commentToolbarButton) {\n      return;\n    }\n    this.#commentToolbarButton.focus({\n      focusVisible: this.#commentWasFromKeyBoard,\n    });\n    this.#commentWasFromKeyBoard = false;\n  }\n\n  isDeleted() {\n    return this.#deleted || this.#text === \"\";\n  }\n\n  isEmpty() {\n    return this.#text === null;\n  }\n\n  hasBeenEdited() {\n    return this.isDeleted() || this.#text !== this.#initialText;\n  }\n\n  serialize() {\n    return this.data;\n  }\n\n  get data() {\n    return {\n      text: this.#text,\n      richText: this.#richText,\n      date: this.#date,\n      deleted: this.isDeleted(),\n    };\n  }\n\n  /**\n   * Set the comment data.\n   */\n  set data(text) {\n    if (text !== this.#text) {\n      this.#richText = null;\n    }\n    if (text === null) {\n      this.#text = \"\";\n      this.#deleted = true;\n      return;\n    }\n    this.#text = text;\n    this.#date = new Date();\n    this.#deleted = false;\n  }\n\n  setInitialText(text, richText = null) {\n    this.#initialText = text;\n    this.data = text;\n    this.#date = null;\n    this.#richText = richText;\n  }\n\n  shown() {}\n\n  destroy() {\n    this.#commentToolbarButton?.remove();\n    this.#commentToolbarButton = null;\n    this.#commentStandaloneButton?.remove();\n    this.#commentStandaloneButton = null;\n    this.#text = \"\";\n    this.#richText = null;\n    this.#date = null;\n    this.#editor = null;\n    this.#commentWasFromKeyBoard = false;\n    this.#deleted = false;\n  }\n}\n\nexport { Comment };\n", "/* Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OutputScale, stopEvent } from \"./display_utils.js\";\n\nclass TouchManager {\n  #container;\n\n  #isPinching = false;\n\n  #isPinchingStopped = null;\n\n  #isPinchingDisabled;\n\n  #onPinchStart;\n\n  #onPinching;\n\n  #onPinchEnd;\n\n  #pointerDownAC = null;\n\n  #signal;\n\n  #touchInfo = null;\n\n  #touchManagerAC;\n\n  #touchMoveAC = null;\n\n  constructor({\n    container,\n    isPinchingDisabled = null,\n    isPinchingStopped = null,\n    onPinchStart = null,\n    onPinching = null,\n    onPinchEnd = null,\n    signal,\n  }) {\n    this.#container = container;\n    this.#isPinchingStopped = isPinchingStopped;\n    this.#isPinchingDisabled = isPinchingDisabled;\n    this.#onPinchStart = onPinchStart;\n    this.#onPinching = onPinching;\n    this.#onPinchEnd = onPinchEnd;\n    this.#touchManagerAC = new AbortController();\n    this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n\n    container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n      passive: false,\n      signal: this.#signal,\n    });\n  }\n\n  /**\n   * NOTE: Don't shadow this value since `devicePixelRatio` may change if the\n   * window resolution changes, e.g. if the viewer is moved to another monitor.\n   */\n  get MIN_TOUCH_DISTANCE_TO_PINCH() {\n    // The 35 is coming from:\n    //  https://searchfox.org/mozilla-central/source/gfx/layers/apz/src/GestureEventListener.cpp#36\n    //\n    // The properties TouchEvent::screenX/Y are in screen CSS pixels:\n    //  https://developer.mozilla.org/en-US/docs/Web/API/Touch/screenX#examples\n    // MIN_TOUCH_DISTANCE_TO_PINCH is in CSS pixels.\n    return 35 / OutputScale.pixelRatio;\n  }\n\n  #onTouchStart(evt) {\n    if (this.#isPinchingDisabled?.()) {\n      return;\n    }\n\n    if (evt.touches.length === 1) {\n      if (this.#pointerDownAC) {\n        return;\n      }\n      const pointerDownAC = (this.#pointerDownAC = new AbortController());\n      const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n      const container = this.#container;\n\n      // We want to have the events at the capture phase to make sure we can\n      // cancel them.\n      const opts = { capture: true, signal, passive: false };\n      const cancelPointerDown = e => {\n        if (e.pointerType === \"touch\") {\n          this.#pointerDownAC?.abort();\n          this.#pointerDownAC = null;\n        }\n      };\n      container.addEventListener(\n        \"pointerdown\",\n        e => {\n          if (e.pointerType === \"touch\") {\n            // This is the second finger so we don't want it select something\n            // or whatever.\n            stopEvent(e);\n            cancelPointerDown(e);\n          }\n        },\n        opts\n      );\n      container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n      container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n      return;\n    }\n\n    if (!this.#touchMoveAC) {\n      this.#touchMoveAC = new AbortController();\n      const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n      const container = this.#container;\n\n      const opt = { signal, capture: false, passive: false };\n      container.addEventListener(\n        \"touchmove\",\n        this.#onTouchMove.bind(this),\n        opt\n      );\n      const onTouchEnd = this.#onTouchEnd.bind(this);\n      container.addEventListener(\"touchend\", onTouchEnd, opt);\n      container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n\n      opt.capture = true;\n      container.addEventListener(\"pointerdown\", stopEvent, opt);\n      container.addEventListener(\"pointermove\", stopEvent, opt);\n      container.addEventListener(\"pointercancel\", stopEvent, opt);\n      container.addEventListener(\"pointerup\", stopEvent, opt);\n      this.#onPinchStart?.();\n    }\n\n    stopEvent(evt);\n\n    if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n      this.#touchInfo = null;\n      return;\n    }\n\n    let [touch0, touch1] = evt.touches;\n    if (touch0.identifier > touch1.identifier) {\n      [touch0, touch1] = [touch1, touch0];\n    }\n    this.#touchInfo = {\n      touch0X: touch0.screenX,\n      touch0Y: touch0.screenY,\n      touch1X: touch1.screenX,\n      touch1Y: touch1.screenY,\n    };\n  }\n\n  #onTouchMove(evt) {\n    if (!this.#touchInfo || evt.touches.length !== 2) {\n      return;\n    }\n\n    stopEvent(evt);\n\n    let [touch0, touch1] = evt.touches;\n    if (touch0.identifier > touch1.identifier) {\n      [touch0, touch1] = [touch1, touch0];\n    }\n    const { screenX: screen0X, screenY: screen0Y } = touch0;\n    const { screenX: screen1X, screenY: screen1Y } = touch1;\n    const touchInfo = this.#touchInfo;\n    const {\n      touch0X: pTouch0X,\n      touch0Y: pTouch0Y,\n      touch1X: pTouch1X,\n      touch1Y: pTouch1Y,\n    } = touchInfo;\n\n    const prevGapX = pTouch1X - pTouch0X;\n    const prevGapY = pTouch1Y - pTouch0Y;\n    const currGapX = screen1X - screen0X;\n    const currGapY = screen1Y - screen0Y;\n\n    const distance = Math.hypot(currGapX, currGapY) || 1;\n    const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n    if (\n      !this.#isPinching &&\n      Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH\n    ) {\n      return;\n    }\n\n    touchInfo.touch0X = screen0X;\n    touchInfo.touch0Y = screen0Y;\n    touchInfo.touch1X = screen1X;\n    touchInfo.touch1Y = screen1Y;\n\n    if (!this.#isPinching) {\n      // Start pinching.\n      this.#isPinching = true;\n\n      // We return here else the first pinch is a bit too much\n      return;\n    }\n\n    const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n    this.#onPinching?.(origin, pDistance, distance);\n  }\n\n  #onTouchEnd(evt) {\n    if (evt.touches.length >= 2) {\n      return;\n    }\n    // #touchMoveAC shouldn't be null but it seems that irl it can (see #19793).\n    if (this.#touchMoveAC) {\n      this.#touchMoveAC.abort();\n      this.#touchMoveAC = null;\n      this.#onPinchEnd?.();\n    }\n\n    if (!this.#touchInfo) {\n      return;\n    }\n    stopEvent(evt);\n    this.#touchInfo = null;\n    this.#isPinching = false;\n  }\n\n  destroy() {\n    this.#touchManagerAC?.abort();\n    this.#touchManagerAC = null;\n    this.#pointerDownAC?.abort();\n    this.#pointerDownAC = null;\n  }\n}\n\nexport { TouchManager };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  KeyboardManager,\n} from \"./tools.js\";\nimport {\n  FeatureTest,\n  MathClamp,\n  shadow,\n  unreachable,\n} from \"../../shared/util.js\";\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\nimport { AltText } from \"./alt_text.js\";\nimport { Comment } from \"./comment.js\";\nimport { EditorToolbar } from \"./toolbar.js\";\nimport { TouchManager } from \"../touch_manager.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorUIManager} uiManager - the global manager\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n  #accessibilityData = null;\n\n  #allResizerDivs = null;\n\n  #altText = null;\n\n  #comment = null;\n\n  #commentStandaloneButton = null;\n\n  #disabled = false;\n\n  #dragPointerId = null;\n\n  #dragPointerType = \"\";\n\n  #resizersDiv = null;\n\n  #lastPointerCoords = null;\n\n  #savedDimensions = null;\n\n  #fakeAnnotation = null;\n\n  #focusAC = null;\n\n  #focusedResizerName = \"\";\n\n  #hasBeenClicked = false;\n\n  #initialRect = null;\n\n  #isEditing = false;\n\n  #isInEditMode = false;\n\n  #isResizerEnabledForKeyboard = false;\n\n  #moveInDOMTimeout = null;\n\n  #prevDragX = 0;\n\n  #prevDragY = 0;\n\n  #telemetryTimeouts = null;\n\n  #touchManager = null;\n\n  isSelected = false;\n\n  _isCopy = false;\n\n  _editToolbar = null;\n\n  _initialOptions = Object.create(null);\n\n  _initialData = null;\n\n  _isVisible = true;\n\n  _uiManager = null;\n\n  _focusEventsAllowed = true;\n\n  static _l10n = null;\n\n  static _l10nResizer = null;\n\n  #isDraggable = false;\n\n  #zIndex = AnnotationEditor._zIndex++;\n\n  static _borderLineWidth = -1;\n\n  static _colorManager = new ColorManager();\n\n  static _zIndex = 1;\n\n  // Time to wait (in ms) before sending the telemetry data.\n  // We wait a bit to avoid sending too many requests when changing something\n  // like the thickness of a line.\n  static _telemetryTimeout = 1000;\n\n  static get _resizerKeyboardManager() {\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_resizerKeyboardManager\",\n      new KeyboardManager([\n        [[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, { args: [-small, 0] }],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          resize,\n          { args: [-big, 0] },\n        ],\n        [[\"ArrowRight\", \"mac+ArrowRight\"], resize, { args: [small, 0] }],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          resize,\n          { args: [big, 0] },\n        ],\n        [[\"ArrowUp\", \"mac+ArrowUp\"], resize, { args: [0, -small] }],\n        [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, { args: [0, -big] }],\n        [[\"ArrowDown\", \"mac+ArrowDown\"], resize, { args: [0, small] }],\n        [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, { args: [0, big] }],\n        [\n          [\"Escape\", \"mac+Escape\"],\n          AnnotationEditor.prototype._stopResizingWithKeyboard,\n        ],\n      ])\n    );\n  }\n\n  /**\n   * @param {AnnotationEditorParameters} parameters\n   */\n  constructor(parameters) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === AnnotationEditor\n    ) {\n      unreachable(\"Cannot initialize AnnotationEditor.\");\n    }\n\n    this.parent = parameters.parent;\n    this.id = parameters.id;\n    this.width = this.height = null;\n    this.pageIndex = parameters.parent.pageIndex;\n    this.name = parameters.name;\n    this.div = null;\n    this._uiManager = parameters.uiManager;\n    this.annotationElementId = null;\n    this._willKeepAspectRatio = false;\n    this._initialOptions.isCentered = parameters.isCentered;\n    this._structTreeParentId = null;\n    this.annotationElementId = parameters.annotationElementId || null;\n    this.creationDate = parameters.creationDate || new Date();\n    this.modificationDate = parameters.modificationDate || null;\n    this.canAddComment = true;\n\n    const {\n      rotation,\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\n    } = this.parent.viewport;\n\n    this.rotation = rotation;\n    this.pageRotation =\n      (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n    this.pageDimensions = [pageWidth, pageHeight];\n    this.pageTranslation = [pageX, pageY];\n\n    const [width, height] = this.parentDimensions;\n    this.x = parameters.x / width;\n    this.y = parameters.y / height;\n\n    this.isAttachedToDOM = false;\n    this.deleted = false;\n  }\n\n  get editorType() {\n    return Object.getPrototypeOf(this).constructor._type;\n  }\n\n  get mode() {\n    return Object.getPrototypeOf(this).constructor._editorType;\n  }\n\n  static get isDrawer() {\n    return false;\n  }\n\n  static get _defaultLineColor() {\n    return shadow(\n      this,\n      \"_defaultLineColor\",\n      this._colorManager.getHexCode(\"CanvasText\")\n    );\n  }\n\n  static deleteAnnotationElement(editor) {\n    const fakeEditor = new FakeEditor({\n      id: editor.parent.getNextId(),\n      parent: editor.parent,\n      uiManager: editor._uiManager,\n    });\n    fakeEditor.annotationElementId = editor.annotationElementId;\n    fakeEditor.deleted = true;\n    fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n  }\n\n  /**\n   * Initialize the l10n stuff for this type of editor.\n   * @param {Object} l10n\n   */\n  static initialize(l10n, _uiManager) {\n    AnnotationEditor._l10n ??= l10n;\n\n    AnnotationEditor._l10nResizer ||= Object.freeze({\n      topLeft: \"pdfjs-editor-resizer-top-left\",\n      topMiddle: \"pdfjs-editor-resizer-top-middle\",\n      topRight: \"pdfjs-editor-resizer-top-right\",\n      middleRight: \"pdfjs-editor-resizer-middle-right\",\n      bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n      bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n      bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n      middleLeft: \"pdfjs-editor-resizer-middle-left\",\n    });\n\n    if (AnnotationEditor._borderLineWidth !== -1) {\n      return;\n    }\n    const style = getComputedStyle(document.documentElement);\n    AnnotationEditor._borderLineWidth =\n      parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n  }\n\n  /**\n   * Update the default parameters for this type of editor.\n   * @param {number} _type\n   * @param {*} _value\n   */\n  static updateDefaultParams(_type, _value) {}\n\n  /**\n   * Get the default properties to set in the UI for this type of editor.\n   * @returns {Array}\n   */\n  static get defaultPropertiesToUpdate() {\n    return [];\n  }\n\n  /**\n   * Check if this kind of editor is able to handle the given mime type for\n   * pasting.\n   * @param {string} mime\n   * @returns {boolean}\n   */\n  static isHandlingMimeForPasting(mime) {\n    return false;\n  }\n\n  /**\n   * Extract the data from the clipboard item and delegate the creation of the\n   * editor to the parent.\n   * @param {DataTransferItem} item\n   * @param {AnnotationEditorLayer} parent\n   */\n  static paste(item, parent) {\n    unreachable(\"Not implemented\");\n  }\n\n  /**\n   * Get the properties to update in the UI for this editor.\n   * @returns {Array}\n   */\n  get propertiesToUpdate() {\n    return [];\n  }\n\n  get _isDraggable() {\n    return this.#isDraggable;\n  }\n\n  set _isDraggable(value) {\n    this.#isDraggable = value;\n    this.div?.classList.toggle(\"draggable\", value);\n  }\n\n  get uid() {\n    return this.annotationElementId || this.id;\n  }\n\n  /**\n   * @returns {boolean} true if the editor handles the Enter key itself.\n   */\n  get isEnterHandled() {\n    return true;\n  }\n\n  center() {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    switch (this.parentRotation) {\n      case 90:\n        this.x -= (this.height * pageHeight) / (pageWidth * 2);\n        this.y += (this.width * pageWidth) / (pageHeight * 2);\n        break;\n      case 180:\n        this.x += this.width / 2;\n        this.y += this.height / 2;\n        break;\n      case 270:\n        this.x += (this.height * pageHeight) / (pageWidth * 2);\n        this.y -= (this.width * pageWidth) / (pageHeight * 2);\n        break;\n      default:\n        this.x -= this.width / 2;\n        this.y -= this.height / 2;\n        break;\n    }\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this._uiManager.addCommands(params);\n  }\n\n  get currentLayer() {\n    return this._uiManager.currentLayer;\n  }\n\n  /**\n   * This editor will be behind the others.\n   */\n  setInBackground() {\n    this.div.style.zIndex = 0;\n  }\n\n  /**\n   * This editor will be in the foreground.\n   */\n  setInForeground() {\n    this.div.style.zIndex = this.#zIndex;\n  }\n\n  setParent(parent) {\n    if (parent !== null) {\n      this.pageIndex = parent.pageIndex;\n      this.pageDimensions = parent.pageDimensions;\n    } else {\n      // The editor is being removed from the DOM, so we need to stop resizing.\n      this.#stopResizing();\n\n      // Remove the fake annotation in the annotation layer.\n      this.#fakeAnnotation?.remove();\n      this.#fakeAnnotation = null;\n    }\n    this.parent = parent;\n  }\n\n  /**\n   * onfocus callback.\n   */\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    if (!this.#hasBeenClicked) {\n      this.parent.setSelected(this);\n    } else {\n      this.#hasBeenClicked = false;\n    }\n  }\n\n  /**\n   * onblur callback.\n   * @param {FocusEvent} event\n   */\n  focusout(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      return;\n    }\n\n    // In case of focusout, the relatedTarget is the element which\n    // is grabbing the focus.\n    // So if the related target is an element under the div for this\n    // editor, then the editor isn't unactive.\n    const target = event.relatedTarget;\n    if (target?.closest(`#${this.id}`)) {\n      return;\n    }\n\n    event.preventDefault();\n\n    if (!this.parent?.isMultipleSelection) {\n      this.commitOrRemove();\n    }\n  }\n\n  commitOrRemove() {\n    if (this.isEmpty()) {\n      this.remove();\n    } else {\n      this.commit();\n    }\n  }\n\n  /**\n   * Commit the data contained in this editor.\n   */\n  commit() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n    this.addToAnnotationStorage();\n  }\n\n  addToAnnotationStorage() {\n    this._uiManager.addToAnnotationStorage(this);\n  }\n\n  /**\n   * Set the editor position within its parent.\n   * @param {number} x\n   * @param {number} y\n   * @param {number} tx - x-translation in screen coordinates.\n   * @param {number} ty - y-translation in screen coordinates.\n   */\n  setAt(x, y, tx, ty) {\n    const [width, height] = this.parentDimensions;\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n    this.x = (x + tx) / width;\n    this.y = (y + ty) / height;\n\n    this.fixAndSetPosition();\n  }\n\n  _moveAfterPaste(baseX, baseY) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setAt(\n      baseX * parentWidth,\n      baseY * parentHeight,\n      this.width * parentWidth,\n      this.height * parentHeight\n    );\n    this._onTranslated();\n  }\n\n  #translate([width, height], x, y) {\n    [x, y] = this.screenToPageTranslation(x, y);\n\n    this.x += x / width;\n    this.y += y / height;\n\n    this._onTranslating(this.x, this.y);\n\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Translate the editor position within its parent.\n   * @param {number} x - x-translation in screen coordinates.\n   * @param {number} y - y-translation in screen coordinates.\n   */\n  translate(x, y) {\n    // We don't change the initial position because the move here hasn't been\n    // done by the user.\n    this.#translate(this.parentDimensions, x, y);\n  }\n\n  /**\n   * Translate the editor position within its page and adjust the scroll\n   * in order to have the editor in the view.\n   * @param {number} x - x-translation in page coordinates.\n   * @param {number} y - y-translation in page coordinates.\n   */\n  translateInPage(x, y) {\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    this.#translate(this.pageDimensions, x, y);\n    this.div.scrollIntoView({ block: \"nearest\" });\n  }\n\n  translationDone() {\n    this._onTranslated(this.x, this.y);\n  }\n\n  drag(tx, ty) {\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    const {\n      div,\n      parentDimensions: [parentWidth, parentHeight],\n    } = this;\n    this.x += tx / parentWidth;\n    this.y += ty / parentHeight;\n    if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n      // It's possible to not have a parent: for example, when the user is\n      // dragging all the selected editors but this one on a page which has been\n      // destroyed.\n      // It's why we need to check for it. In such a situation, it isn't really\n      // a problem to not find a new parent: it's something which is related to\n      // what the user is seeing, hence it depends on how pages are layed out.\n\n      // The element will be outside of its parent so change the parent.\n      const { x, y } = this.div.getBoundingClientRect();\n      if (this.parent.findNewParent(this, x, y)) {\n        this.x -= Math.floor(this.x);\n        this.y -= Math.floor(this.y);\n      }\n    }\n\n    // The editor can be moved wherever the user wants, so we don't need to fix\n    // the position: it'll be done when the user will release the mouse button.\n\n    let { x, y } = this;\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n\n    const { style } = div;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n\n    this._onTranslating(x, y);\n\n    div.scrollIntoView({ block: \"nearest\" });\n  }\n\n  /**\n   * Called when the editor is being translated.\n   * @param {number} x - in page coordinates.\n   * @param {number} y - in page coordinates.\n   */\n  _onTranslating(x, y) {}\n\n  /**\n   * Called when the editor has been translated.\n   * @param {number} x - in page coordinates.\n   * @param {number} y - in page coordinates.\n   */\n  _onTranslated(x, y) {}\n\n  get _hasBeenMoved() {\n    return (\n      !!this.#initialRect &&\n      (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y)\n    );\n  }\n\n  get _hasBeenResized() {\n    return (\n      !!this.#initialRect &&\n      (this.#initialRect[2] !== this.width ||\n        this.#initialRect[3] !== this.height)\n    );\n  }\n\n  /**\n   * Get the translation to take into account the editor border.\n   * The CSS engine positions the element by taking the border into account so\n   * we must apply the opposite translation to have the editor in the right\n   * position.\n   * @returns {Array<number>}\n   */\n  getBaseTranslation() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const { _borderLineWidth } = AnnotationEditor;\n    const x = _borderLineWidth / parentWidth;\n    const y = _borderLineWidth / parentHeight;\n    switch (this.rotation) {\n      case 90:\n        return [-x, y];\n      case 180:\n        return [x, y];\n      case 270:\n        return [x, -y];\n      default:\n        return [-x, -y];\n    }\n  }\n\n  /**\n   * @returns {boolean} true if position must be fixed (i.e. make the x and y\n   * living in the page).\n   */\n  get _mustFixPosition() {\n    return true;\n  }\n\n  /**\n   * Fix the position of the editor in order to keep it inside its parent page.\n   * @param {number} [rotation] - the rotation of the page.\n   */\n  fixAndSetPosition(rotation = this.rotation) {\n    const {\n      div: { style },\n      pageDimensions: [pageWidth, pageHeight],\n    } = this;\n    let { x, y, width, height } = this;\n    width *= pageWidth;\n    height *= pageHeight;\n    x *= pageWidth;\n    y *= pageHeight;\n\n    if (this._mustFixPosition) {\n      switch (rotation) {\n        case 0:\n          x = MathClamp(x, 0, pageWidth - width);\n          y = MathClamp(y, 0, pageHeight - height);\n          break;\n        case 90:\n          x = MathClamp(x, 0, pageWidth - height);\n          y = MathClamp(y, width, pageHeight);\n          break;\n        case 180:\n          x = MathClamp(x, width, pageWidth);\n          y = MathClamp(y, height, pageHeight);\n          break;\n        case 270:\n          x = MathClamp(x, height, pageWidth);\n          y = MathClamp(y, 0, pageHeight - width);\n          break;\n      }\n    }\n\n    this.x = x /= pageWidth;\n    this.y = y /= pageHeight;\n\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n\n    this.moveInDOM();\n  }\n\n  static #rotatePoint(x, y, angle) {\n    switch (angle) {\n      case 90:\n        return [y, -x];\n      case 180:\n        return [-x, -y];\n      case 270:\n        return [-y, x];\n      default:\n        return [x, y];\n    }\n  }\n\n  /**\n   * Convert a screen translation into a page one.\n   * @param {number} x\n   * @param {number} y\n   */\n  screenToPageTranslation(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n  }\n\n  /**\n   * Convert a page translation into a screen one.\n   * @param {number} x\n   * @param {number} y\n   */\n  pageTranslationToScreen(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n  }\n\n  #getRotationMatrix(rotation) {\n    switch (rotation) {\n      case 90: {\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n      }\n      case 180:\n        return [-1, 0, 0, -1];\n      case 270: {\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n      }\n      default:\n        return [1, 0, 0, 1];\n    }\n  }\n\n  get parentScale() {\n    return this._uiManager.viewParameters.realScale;\n  }\n\n  get parentRotation() {\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n  }\n\n  get parentDimensions() {\n    const {\n      parentScale,\n      pageDimensions: [pageWidth, pageHeight],\n    } = this;\n    return [pageWidth * parentScale, pageHeight * parentScale];\n  }\n\n  /**\n   * Set the dimensions of this editor.\n   */\n  setDims() {\n    const {\n      div: { style },\n      width,\n      height,\n    } = this;\n    style.width = `${(100 * width).toFixed(2)}%`;\n    style.height = `${(100 * height).toFixed(2)}%`;\n  }\n\n  /**\n   * Get the translation used to position this editor when it's created.\n   * @returns {Array<number>}\n   */\n  getInitialTranslation() {\n    return [0, 0];\n  }\n\n  #createResizers() {\n    if (this.#resizersDiv) {\n      return;\n    }\n    this.#resizersDiv = document.createElement(\"div\");\n    this.#resizersDiv.classList.add(\"resizers\");\n    // When the resizers are used with the keyboard, they're focusable, hence\n    // we want to have them in this order (top left, top middle, top right, ...)\n    // in the DOM to have the focus order correct.\n    const classes = this._willKeepAspectRatio\n      ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"]\n      : [\n          \"topLeft\",\n          \"topMiddle\",\n          \"topRight\",\n          \"middleRight\",\n          \"bottomRight\",\n          \"bottomMiddle\",\n          \"bottomLeft\",\n          \"middleLeft\",\n        ];\n    const signal = this._uiManager._signal;\n    for (const name of classes) {\n      const div = document.createElement(\"div\");\n      this.#resizersDiv.append(div);\n      div.classList.add(\"resizer\", name);\n      div.setAttribute(\"data-resizer-name\", name);\n      div.addEventListener(\n        \"pointerdown\",\n        this.#resizerPointerdown.bind(this, name),\n        { signal }\n      );\n      div.addEventListener(\"contextmenu\", noContextMenu, { signal });\n      div.tabIndex = -1;\n    }\n    this.div.prepend(this.#resizersDiv);\n  }\n\n  #resizerPointerdown(name, event) {\n    event.preventDefault();\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      return;\n    }\n\n    this.#altText?.toggle(false);\n\n    const savedDraggable = this._isDraggable;\n    this._isDraggable = false;\n    this.#lastPointerCoords = [event.screenX, event.screenY];\n\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n\n    this.parent.togglePointerEvents(false);\n    window.addEventListener(\n      \"pointermove\",\n      this.#resizerPointermove.bind(this, name),\n      { passive: true, capture: true, signal }\n    );\n    window.addEventListener(\n      \"touchmove\",\n      stopEvent /* Prevent the page from scrolling */,\n      { passive: false, signal }\n    );\n    window.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height,\n    };\n    const savedParentCursor = this.parent.div.style.cursor;\n    const savedCursor = this.div.style.cursor;\n    this.div.style.cursor = this.parent.div.style.cursor =\n      window.getComputedStyle(event.target).cursor;\n\n    const pointerUpCallback = () => {\n      ac.abort();\n      this.parent.togglePointerEvents(true);\n      this.#altText?.toggle(true);\n      this._isDraggable = savedDraggable;\n      this.parent.div.style.cursor = savedParentCursor;\n      this.div.style.cursor = savedCursor;\n\n      this.#addResizeToUndoStack();\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n    // If the user switches to another window (with alt+tab), then we end the\n    // resize session.\n    window.addEventListener(\"blur\", pointerUpCallback, { signal });\n  }\n\n  #resize(x, y, width, height) {\n    this.width = width;\n    this.height = height;\n    this.x = x;\n    this.y = y;\n    this.setDims();\n    this.fixAndSetPosition();\n    this._onResized();\n  }\n\n  /**\n   * Called when the editor has been resized.\n   */\n  _onResized() {}\n\n  #addResizeToUndoStack() {\n    if (!this.#savedDimensions) {\n      return;\n    }\n    const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\n    this.#savedDimensions = null;\n\n    const newX = this.x;\n    const newY = this.y;\n    const newWidth = this.width;\n    const newHeight = this.height;\n    if (\n      newX === savedX &&\n      newY === savedY &&\n      newWidth === savedWidth &&\n      newHeight === savedHeight\n    ) {\n      return;\n    }\n\n    this.addCommands({\n      cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n      undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n      mustExec: true,\n    });\n  }\n\n  static _round(x) {\n    // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\n    // Without rounding, the positions of the corners other than the top left\n    // one can be slightly wrong.\n    return Math.round(x * 10000) / 10000;\n  }\n\n  #resizerPointermove(name, event) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n    const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n    const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\n    ];\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n    const invTransf = (x, y) => [\n      invRotationMatrix[0] * x + invRotationMatrix[2] * y,\n      invRotationMatrix[1] * x + invRotationMatrix[3] * y,\n    ];\n    let getPoint;\n    let getOpposite;\n    let isDiagonal = false;\n    let isHorizontal = false;\n\n    switch (name) {\n      case \"topLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, 0];\n        getOpposite = (w, h) => [w, h];\n        break;\n      case \"topMiddle\":\n        getPoint = (w, h) => [w / 2, 0];\n        getOpposite = (w, h) => [w / 2, h];\n        break;\n      case \"topRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, 0];\n        getOpposite = (w, h) => [0, h];\n        break;\n      case \"middleRight\":\n        isHorizontal = true;\n        getPoint = (w, h) => [w, h / 2];\n        getOpposite = (w, h) => [0, h / 2];\n        break;\n      case \"bottomRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, h];\n        getOpposite = (w, h) => [0, 0];\n        break;\n      case \"bottomMiddle\":\n        getPoint = (w, h) => [w / 2, h];\n        getOpposite = (w, h) => [w / 2, 0];\n        break;\n      case \"bottomLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, h];\n        getOpposite = (w, h) => [w, 0];\n        break;\n      case \"middleLeft\":\n        isHorizontal = true;\n        getPoint = (w, h) => [0, h / 2];\n        getOpposite = (w, h) => [w, h / 2];\n        break;\n    }\n\n    const point = getPoint(savedWidth, savedHeight);\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\n    let transfOppositePoint = transf(...oppositePoint);\n    const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n    const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n    let ratioX = 1;\n    let ratioY = 1;\n\n    let deltaX, deltaY;\n\n    if (!event.fromKeyboard) {\n      // We can't use event.movementX/Y because they're not reliable:\n      //  https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX\n      // (it was buggy on a laptop with a touch screen).\n      const { screenX, screenY } = event;\n      const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n      [deltaX, deltaY] = this.screenToPageTranslation(\n        screenX - lastScreenX,\n        screenY - lastScreenY\n      );\n      this.#lastPointerCoords[0] = screenX;\n      this.#lastPointerCoords[1] = screenY;\n    } else {\n      ({ deltaX, deltaY } = event);\n    }\n    [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n\n    if (isDiagonal) {\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\n      ratioX = ratioY = Math.max(\n        Math.min(\n          Math.hypot(\n            oppositePoint[0] - point[0] - deltaX,\n            oppositePoint[1] - point[1] - deltaY\n          ) / oldDiag,\n          // Avoid the editor to be larger than the page.\n          1 / savedWidth,\n          1 / savedHeight\n        ),\n        // Avoid the editor to be smaller than the minimum size.\n        minWidth / savedWidth,\n        minHeight / savedHeight\n      );\n    } else if (isHorizontal) {\n      ratioX =\n        MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) /\n        savedWidth;\n    } else {\n      ratioY =\n        MathClamp(\n          Math.abs(oppositePoint[1] - point[1] - deltaY),\n          minHeight,\n          1\n        ) / savedHeight;\n    }\n\n    const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n    const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n    const newX = oppositeX - transfOppositePoint[0];\n    const newY = oppositeY - transfOppositePoint[1];\n\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    this.width = newWidth;\n    this.height = newHeight;\n    this.x = newX;\n    this.y = newY;\n\n    this.setDims();\n    this.fixAndSetPosition();\n\n    this._onResizing();\n  }\n\n  /**\n   * Called when the editor is being resized.\n   */\n  _onResizing() {}\n\n  /**\n   * Called when the alt text dialog is closed.\n   */\n  altTextFinish() {\n    this.#altText?.finish();\n  }\n\n  /**\n   * Get the toolbar buttons for this editor.\n   * @returns {Array<Array<string|object|null>>|null}\n   */\n  get toolbarButtons() {\n    return null;\n  }\n\n  /**\n   * Add a toolbar for this editor.\n   * @returns {Promise<EditorToolbar|null>}\n   */\n  async addEditToolbar() {\n    if (this._editToolbar || this.#isInEditMode) {\n      return this._editToolbar;\n    }\n    this._editToolbar = new EditorToolbar(this);\n    this.div.append(this._editToolbar.render());\n    const { toolbarButtons } = this;\n    if (toolbarButtons) {\n      for (const [name, tool] of toolbarButtons) {\n        await this._editToolbar.addButton(name, tool);\n      }\n    }\n    if (!this.hasComment) {\n      this._editToolbar.addButton(\"comment\", this.addCommentButton());\n    }\n    this._editToolbar.addButton(\"delete\");\n\n    return this._editToolbar;\n  }\n\n  addCommentButtonInToolbar() {\n    this._editToolbar?.addButtonBefore(\n      \"comment\",\n      this.addCommentButton(),\n      \".deleteButton\"\n    );\n  }\n\n  removeCommentButtonFromToolbar() {\n    this._editToolbar?.removeButton(\"comment\");\n  }\n\n  removeEditToolbar() {\n    this._editToolbar?.remove();\n    this._editToolbar = null;\n\n    // We destroy the alt text but we don't null it because we want to be able\n    // to restore it in case the user undoes the deletion.\n    this.#altText?.destroy();\n  }\n\n  addContainer(container) {\n    const editToolbarDiv = this._editToolbar?.div;\n    if (editToolbarDiv) {\n      editToolbarDiv.before(container);\n    } else {\n      this.div.append(container);\n    }\n  }\n\n  getClientDimensions() {\n    return this.div.getBoundingClientRect();\n  }\n\n  /**\n   * Create the alt text for this editor.\n   * @returns {object}\n   */\n  createAltText() {\n    if (!this.#altText) {\n      AltText.initialize(AnnotationEditor._l10n);\n      this.#altText = new AltText(this);\n      if (this.#accessibilityData) {\n        this.#altText.data = this.#accessibilityData;\n        this.#accessibilityData = null;\n      }\n    }\n    return this.#altText;\n  }\n\n  get altTextData() {\n    return this.#altText?.data;\n  }\n\n  /**\n   * Set the alt text data.\n   */\n  set altTextData(data) {\n    if (!this.#altText) {\n      return;\n    }\n    this.#altText.data = data;\n  }\n\n  get guessedAltText() {\n    return this.#altText?.guessedText;\n  }\n\n  async setGuessedAltText(text) {\n    await this.#altText?.setGuessedText(text);\n  }\n\n  serializeAltText(isForCopying) {\n    return this.#altText?.serialize(isForCopying);\n  }\n\n  hasAltText() {\n    return !!this.#altText && !this.#altText.isEmpty();\n  }\n\n  hasAltTextData() {\n    return this.#altText?.hasData() ?? false;\n  }\n\n  focusCommentButton() {\n    this.#comment?.focusButton();\n  }\n\n  addCommentButton() {\n    return this.canAddComment ? (this.#comment ||= new Comment(this)) : null;\n  }\n\n  addStandaloneCommentButton() {\n    if (!this._uiManager.hasCommentManager()) {\n      return;\n    }\n    if (this.#commentStandaloneButton) {\n      if (this._uiManager.isEditingMode()) {\n        this.#commentStandaloneButton.classList.remove(\"hidden\");\n      }\n      return;\n    }\n    if (!this.hasComment) {\n      return;\n    }\n    this.#commentStandaloneButton = this.#comment.renderForStandalone();\n    this.div.append(this.#commentStandaloneButton);\n  }\n\n  removeStandaloneCommentButton() {\n    this.#comment.removeStandaloneCommentButton();\n    this.#commentStandaloneButton = null;\n  }\n\n  hideStandaloneCommentButton() {\n    this.#commentStandaloneButton?.classList.add(\"hidden\");\n  }\n\n  get comment() {\n    const {\n      data: { richText, text, date, deleted },\n    } = this.#comment;\n    return {\n      text,\n      richText,\n      date,\n      deleted,\n      color: this.getNonHCMColor(),\n      opacity: this.opacity ?? 1,\n    };\n  }\n\n  set comment(text) {\n    this.#comment ||= new Comment(this);\n    this.#comment.data = text;\n    if (this.hasComment) {\n      this.removeCommentButtonFromToolbar();\n      this.addStandaloneCommentButton();\n      this._uiManager.updateComment(this);\n    } else {\n      this.addCommentButtonInToolbar();\n      this.removeStandaloneCommentButton();\n      this._uiManager.removeComment(this);\n    }\n  }\n\n  setCommentData({ comment, popupRef, richText }) {\n    if (!popupRef) {\n      return;\n    }\n    this.#comment ||= new Comment(this);\n    this.#comment.setInitialText(comment, richText);\n\n    if (!this.annotationElementId) {\n      return;\n    }\n    const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(\n      this.annotationElementId\n    );\n    if (storedData) {\n      this.updateFromAnnotationLayer(storedData);\n    }\n  }\n\n  get hasEditedComment() {\n    return this.#comment?.hasBeenEdited();\n  }\n\n  get hasDeletedComment() {\n    return this.#comment?.isDeleted();\n  }\n\n  get hasComment() {\n    return (\n      !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted()\n    );\n  }\n\n  async editComment(options) {\n    this.#comment ||= new Comment(this);\n    this.#comment.edit(options);\n  }\n\n  toggleComment(isSelected, visibility = undefined) {\n    if (this.hasComment) {\n      this._uiManager.toggleComment(this, isSelected, visibility);\n    }\n  }\n\n  setSelectedCommentButton(selected) {\n    this.#comment.setSelectedButton(selected);\n  }\n\n  addComment(serialized) {\n    if (this.hasEditedComment) {\n      const DEFAULT_POPUP_WIDTH = 180;\n      const DEFAULT_POPUP_HEIGHT = 100;\n      const [, , , trY] = serialized.rect;\n      const [pageWidth] = this.pageDimensions;\n      const [pageX] = this.pageTranslation;\n      const blX = pageX + pageWidth + 1;\n      const blY = trY - DEFAULT_POPUP_HEIGHT;\n      const trX = blX + DEFAULT_POPUP_WIDTH;\n      serialized.popup = {\n        contents: this.comment.text,\n        deleted: this.comment.deleted,\n        rect: [blX, blY, trX, trY],\n      };\n    }\n  }\n\n  updateFromAnnotationLayer({ popup: { contents, deleted } }) {\n    this.#comment.data = deleted ? null : contents;\n  }\n\n  get parentBoundingClientRect() {\n    return this.parent.boundingClientRect;\n  }\n\n  /**\n   * Render this editor in a div.\n   * @returns {HTMLDivElement | null}\n   */\n  render() {\n    const div = (this.div = document.createElement(\"div\"));\n    div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n    div.className = this.name;\n    div.setAttribute(\"id\", this.id);\n    div.tabIndex = this.#disabled ? -1 : 0;\n    div.setAttribute(\"role\", \"application\");\n    if (this.defaultL10nId) {\n      div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n    }\n    if (!this._isVisible) {\n      div.classList.add(\"hidden\");\n    }\n\n    this.setInForeground();\n    this.#addFocusListeners();\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (this.parentRotation % 180 !== 0) {\n      div.style.maxWidth = `${((100 * parentHeight) / parentWidth).toFixed(\n        2\n      )}%`;\n      div.style.maxHeight = `${((100 * parentWidth) / parentHeight).toFixed(\n        2\n      )}%`;\n    }\n\n    const [tx, ty] = this.getInitialTranslation();\n    this.translate(tx, ty);\n\n    bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n\n    if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n      this.#touchManager ||= new TouchManager({\n        container: div,\n        isPinchingDisabled: () => !this.isSelected,\n        onPinchStart: this.#touchPinchStartCallback.bind(this),\n        onPinching: this.#touchPinchCallback.bind(this),\n        onPinchEnd: this.#touchPinchEndCallback.bind(this),\n        signal: this._uiManager._signal,\n      });\n    }\n\n    this.addStandaloneCommentButton();\n    this._uiManager._editorUndoBar?.hide();\n\n    return div;\n  }\n\n  #touchPinchStartCallback() {\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height,\n    };\n    this.#altText?.toggle(false);\n    this.parent.togglePointerEvents(false);\n  }\n\n  #touchPinchCallback(_origin, prevDistance, distance) {\n    // Slightly slow down the zooming because the editor could be small and the\n    // user could have difficulties to rescale it as they want.\n    const slowDownFactor = 0.7;\n    let factor =\n      slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n    if (factor === 1) {\n      return;\n    }\n\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\n    ];\n\n    // The center of the editor is the fixed point.\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n\n    const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n    const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n    factor = Math.max(\n      Math.min(factor, 1 / savedWidth, 1 / savedHeight),\n      minWidth / savedWidth,\n      minHeight / savedHeight\n    );\n    const newWidth = AnnotationEditor._round(savedWidth * factor);\n    const newHeight = AnnotationEditor._round(savedHeight * factor);\n    if (newWidth === savedWidth && newHeight === savedHeight) {\n      return;\n    }\n\n    this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n    const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n    const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n    const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n    const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n\n    this.x = centerX - newTransfCenterPoint[0];\n    this.y = centerY - newTransfCenterPoint[1];\n    this.width = newWidth;\n    this.height = newHeight;\n\n    this.setDims();\n    this.fixAndSetPosition();\n\n    this._onResizing();\n  }\n\n  #touchPinchEndCallback() {\n    this.#altText?.toggle(true);\n    this.parent.togglePointerEvents(true);\n    this.#addResizeToUndoStack();\n  }\n\n  /**\n   * Onpointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Avoid to focus this editor because of a non-left click.\n      event.preventDefault();\n      return;\n    }\n    this.#hasBeenClicked = true;\n\n    if (this._isDraggable) {\n      this.#setUpDragSession(event);\n      return;\n    }\n\n    this.#selectOnPointerEvent(event);\n  }\n\n  #selectOnPointerEvent(event) {\n    const { isMac } = FeatureTest.platform;\n    if (\n      (event.ctrlKey && !isMac) ||\n      event.shiftKey ||\n      (event.metaKey && isMac)\n    ) {\n      this.parent.toggleSelected(this);\n    } else {\n      this.parent.setSelected(this);\n    }\n  }\n\n  #setUpDragSession(event) {\n    const { isSelected } = this;\n    this._uiManager.setUpDragSession();\n    let hasDraggingStarted = false;\n\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n    const opts = { capture: true, passive: false, signal };\n    const cancelDrag = e => {\n      ac.abort();\n\n      this.#dragPointerId = null;\n      this.#hasBeenClicked = false;\n      if (!this._uiManager.endDragSession()) {\n        this.#selectOnPointerEvent(e);\n      }\n      if (hasDraggingStarted) {\n        this._onStopDragging();\n      }\n    };\n\n    if (isSelected) {\n      this.#prevDragX = event.clientX;\n      this.#prevDragY = event.clientY;\n      this.#dragPointerId = event.pointerId;\n      this.#dragPointerType = event.pointerType;\n      window.addEventListener(\n        \"pointermove\",\n        e => {\n          if (!hasDraggingStarted) {\n            hasDraggingStarted = true;\n            this._uiManager.toggleComment(\n              this,\n              /* isSelected = */ true,\n              /* visibility = */ false\n            );\n            this._onStartDragging();\n          }\n          const { clientX: x, clientY: y, pointerId } = e;\n          if (pointerId !== this.#dragPointerId) {\n            stopEvent(e);\n            return;\n          }\n          const [tx, ty] = this.screenToPageTranslation(\n            x - this.#prevDragX,\n            y - this.#prevDragY\n          );\n          this.#prevDragX = x;\n          this.#prevDragY = y;\n          this._uiManager.dragSelectedEditors(tx, ty);\n        },\n        opts\n      );\n      window.addEventListener(\n        \"touchmove\",\n        stopEvent /* Prevent the page from scrolling */,\n        opts\n      );\n      window.addEventListener(\n        \"pointerdown\",\n        // If the user drags with one finger and then clicks with another.\n        e => {\n          if (e.pointerType === this.#dragPointerType) {\n            // We've a pinch to zoom session.\n            // We cannot have two primaries at the same time.\n            // It's possible to be in this state with Firefox and Gnome when\n            // trying to drag with three fingers (see bug 1933716).\n            if (this.#touchManager || e.isPrimary) {\n              cancelDrag(e);\n            }\n          }\n          stopEvent(e);\n        },\n        opts\n      );\n    }\n\n    const pointerUpCallback = e => {\n      if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n        cancelDrag(e);\n        return;\n      }\n      stopEvent(e);\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n    // If the user is using alt+tab during the dragging session, the pointerup\n    // event could be not fired, but a blur event is fired so we can use it in\n    // order to interrupt the dragging session.\n    window.addEventListener(\"blur\", pointerUpCallback, { signal });\n  }\n\n  _onStartDragging() {}\n\n  _onStopDragging() {}\n\n  moveInDOM() {\n    // Moving the editor in the DOM can be expensive, so we wait a bit before.\n    // It's important to not block the UI (for example when changing the font\n    // size in a FreeText).\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n    }\n    this.#moveInDOMTimeout = setTimeout(() => {\n      this.#moveInDOMTimeout = null;\n      this.parent?.moveEditorInDOM(this);\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n        this._uiManager._eventBus.dispatch(\"editormovedindom\", {\n          source: this,\n        });\n      }\n    }, 0);\n  }\n\n  _setParentAndPosition(parent, x, y) {\n    parent.changeParent(this);\n    this.x = x;\n    this.y = y;\n    this.fixAndSetPosition();\n    this._onTranslated();\n  }\n\n  /**\n   * Convert the current rect into a page one.\n   * @param {number} tx - x-translation in screen coordinates.\n   * @param {number} ty - y-translation in screen coordinates.\n   * @param {number} [rotation] - the rotation of the page.\n   */\n  getRect(tx, ty, rotation = this.rotation) {\n    const scale = this.parentScale;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const shiftX = tx / scale;\n    const shiftY = ty / scale;\n    const x = this.x * pageWidth;\n    const y = this.y * pageHeight;\n    const width = this.width * pageWidth;\n    const height = this.height * pageHeight;\n\n    switch (rotation) {\n      case 0:\n        return [\n          x + shiftX + pageX,\n          pageHeight - y - shiftY - height + pageY,\n          x + shiftX + width + pageX,\n          pageHeight - y - shiftY + pageY,\n        ];\n      case 90:\n        return [\n          x + shiftY + pageX,\n          pageHeight - y + shiftX + pageY,\n          x + shiftY + height + pageX,\n          pageHeight - y + shiftX + width + pageY,\n        ];\n      case 180:\n        return [\n          x - shiftX - width + pageX,\n          pageHeight - y + shiftY + pageY,\n          x - shiftX + pageX,\n          pageHeight - y + shiftY + height + pageY,\n        ];\n      case 270:\n        return [\n          x - shiftY - height + pageX,\n          pageHeight - y - shiftX - width + pageY,\n          x - shiftY + pageX,\n          pageHeight - y - shiftX + pageY,\n        ];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  getRectInCurrentCoords(rect, pageHeight) {\n    const [x1, y1, x2, y2] = rect;\n\n    const width = x2 - x1;\n    const height = y2 - y1;\n\n    switch (this.rotation) {\n      case 0:\n        return [x1, pageHeight - y2, width, height];\n      case 90:\n        return [x1, pageHeight - y1, height, width];\n      case 180:\n        return [x2, pageHeight - y1, width, height];\n      case 270:\n        return [x2, pageHeight - y2, height, width];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  /**\n   * Get the rect in page coordinates without any translation.\n   * It's used when serializing the editor.\n   * @returns {Array<number>}\n   */\n  getPDFRect() {\n    return this.getRect(0, 0);\n  }\n\n  getNonHCMColor() {\n    return (\n      this.color &&\n      AnnotationEditor._colorManager.convert(\n        this._uiManager.getNonHCMColor(this.color)\n      )\n    );\n  }\n\n  /**\n   * The color has been changed.\n   */\n  onUpdatedColor() {\n    this.#comment?.onUpdatedColor();\n  }\n\n  getData() {\n    const {\n      comment: { text: str, color, date, opacity, deleted, richText },\n      uid: id,\n      pageIndex,\n      creationDate,\n      modificationDate,\n    } = this;\n    return {\n      id,\n      pageIndex,\n      rect: this.getPDFRect(),\n      richText,\n      contentsObj: { str },\n      creationDate,\n      modificationDate: date || modificationDate,\n      popupRef: !deleted,\n      color,\n      opacity,\n    };\n  }\n\n  /**\n   * Executed once this editor has been rendered.\n   * @param {boolean} focus - true if the editor should be focused.\n   */\n  onceAdded(focus) {}\n\n  /**\n   * Check if the editor contains something.\n   * @returns {boolean}\n   */\n  isEmpty() {\n    return false;\n  }\n\n  /**\n   * Enable edit mode.\n   * @returns {boolean} - true if the edit mode has been enabled.\n   */\n  enableEditMode() {\n    if (this.isInEditMode()) {\n      return false;\n    }\n    this.parent.setEditingState(false);\n    this.#isInEditMode = true;\n\n    return true;\n  }\n\n  /**\n   * Disable edit mode.\n   * @returns {boolean} - true if the edit mode has been disabled.\n   */\n  disableEditMode() {\n    if (!this.isInEditMode()) {\n      return false;\n    }\n    this.parent.setEditingState(true);\n    this.#isInEditMode = false;\n\n    return true;\n  }\n\n  /**\n   * Check if the editor is edited.\n   * @returns {boolean}\n   */\n  isInEditMode() {\n    return this.#isInEditMode;\n  }\n\n  /**\n   * If it returns true, then this editor handles the keyboard\n   * events itself.\n   * @returns {boolean}\n   */\n  shouldGetKeyboardEvents() {\n    return this.#isResizerEnabledForKeyboard;\n  }\n\n  /**\n   * Check if this editor needs to be rebuilt or not.\n   * @returns {boolean}\n   */\n  needsToBeRebuilt() {\n    return this.div && !this.isAttachedToDOM;\n  }\n\n  get isOnScreen() {\n    const { top, left, bottom, right } = this.getClientDimensions();\n    const { innerHeight, innerWidth } = window;\n    return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n  }\n\n  #addFocusListeners() {\n    if (this.#focusAC || !this.div) {\n      return;\n    }\n    this.#focusAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#focusAC);\n\n    this.div.addEventListener(\"focusin\", this.focusin.bind(this), { signal });\n    this.div.addEventListener(\"focusout\", this.focusout.bind(this), { signal });\n  }\n\n  /**\n   * Rebuild the editor in case it has been removed on undo.\n   *\n   * To implement in subclasses.\n   */\n  rebuild() {\n    this.#addFocusListeners();\n  }\n\n  /**\n   * Rotate the editor when the page is rotated.\n   * @param {number} angle\n   */\n  rotate(_angle) {}\n\n  /**\n   * Resize the editor when the page is resized.\n   */\n  resize() {}\n\n  /**\n   * Serialize the editor when it has been deleted.\n   * @returns {Object}\n   */\n  serializeDeleted() {\n    return {\n      id: this.annotationElementId,\n      deleted: true,\n      pageIndex: this.pageIndex,\n      popupRef: this._initialData?.popupRef || \"\",\n    };\n  }\n\n  /**\n   * Serialize the editor.\n   * The result of the serialization will be used to construct a\n   * new annotation to add to the pdf document.\n   *\n   * To implement in subclasses.\n   * @param {boolean} [isForCopying]\n   * @param {Object | null} [context]\n   * @returns {Object | null}\n   */\n  serialize(isForCopying = false, context = null) {\n    return {\n      annotationType: this.mode,\n      pageIndex: this.pageIndex,\n      rect: this.getPDFRect(),\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId,\n      popupRef: this._initialData?.popupRef || \"\",\n    };\n  }\n\n  /**\n   * Deserialize the editor.\n   * The result of the deserialization is a new editor.\n   *\n   * @param {Object} data\n   * @param {AnnotationEditorLayer} parent\n   * @param {AnnotationEditorUIManager} uiManager\n   * @returns {Promise<AnnotationEditor | null>}\n   */\n  static async deserialize(data, parent, uiManager) {\n    const editor = new this.prototype.constructor({\n      parent,\n      id: parent.getNextId(),\n      uiManager,\n      annotationElementId: data.annotationElementId,\n      creationDate: data.creationDate,\n      modificationDate: data.modificationDate,\n    });\n    editor.rotation = data.rotation;\n    editor.#accessibilityData = data.accessibilityData;\n    editor._isCopy = data.isCopy || false;\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [x, y, width, height] = editor.getRectInCurrentCoords(\n      data.rect,\n      pageHeight\n    );\n\n    editor.x = x / pageWidth;\n    editor.y = y / pageHeight;\n    editor.width = width / pageWidth;\n    editor.height = height / pageHeight;\n\n    return editor;\n  }\n\n  /**\n   * Check if an existing annotation associated with this editor has been\n   * modified.\n   * @returns {boolean}\n   */\n  get hasBeenModified() {\n    return (\n      !!this.annotationElementId && (this.deleted || this.serialize() !== null)\n    );\n  }\n\n  /**\n   * Remove this editor.\n   * It's used on ctrl+backspace action.\n   */\n  remove() {\n    this.#focusAC?.abort();\n    this.#focusAC = null;\n\n    if (!this.isEmpty()) {\n      // The editor is removed but it can be back at some point thanks to\n      // undo/redo so we must commit it before.\n      this.commit();\n    }\n    if (this.parent) {\n      this.parent.remove(this);\n    } else {\n      this._uiManager.removeEditor(this);\n    }\n    this.hideCommentPopup();\n\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n      this.#moveInDOMTimeout = null;\n    }\n    this.#stopResizing();\n    this.removeEditToolbar();\n    if (this.#telemetryTimeouts) {\n      for (const timeout of this.#telemetryTimeouts.values()) {\n        clearTimeout(timeout);\n      }\n      this.#telemetryTimeouts = null;\n    }\n    this.parent = null;\n    this.#touchManager?.destroy();\n    this.#touchManager = null;\n    this.#fakeAnnotation?.remove();\n    this.#fakeAnnotation = null;\n  }\n\n  /**\n   * @returns {boolean} true if this editor can be resized.\n   */\n  get isResizable() {\n    return false;\n  }\n\n  /**\n   * Add the resizers to this editor.\n   */\n  makeResizable() {\n    if (this.isResizable) {\n      this.#createResizers();\n      this.#resizersDiv.classList.remove(\"hidden\");\n    }\n  }\n\n  get toolbarPosition() {\n    return null;\n  }\n\n  /**\n   * Get the position of the comment button.\n   * @returns {Array<number>|null}\n   */\n  get commentButtonPosition() {\n    return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n  }\n\n  get commentButtonPositionInPage() {\n    const {\n      commentButtonPosition: [posX, posY],\n    } = this;\n    const [blX, blY, trX, trY] = this.getPDFRect();\n    return [\n      AnnotationEditor._round(blX + (trX - blX) * posX),\n      AnnotationEditor._round(blY + (trY - blY) * (1 - posY)),\n    ];\n  }\n\n  get commentButtonColor() {\n    return this._uiManager.makeCommentColor(\n      this.getNonHCMColor(),\n      this.opacity\n    );\n  }\n\n  get commentPopupPosition() {\n    return this.#comment.commentPopupPositionInLayer;\n  }\n\n  set commentPopupPosition(pos) {\n    this.#comment.commentPopupPositionInLayer = pos;\n  }\n\n  hasDefaultPopupPosition() {\n    return this.#comment.hasDefaultPopupPosition();\n  }\n\n  get commentButtonWidth() {\n    return this.#comment.commentButtonWidth;\n  }\n\n  get elementBeforePopup() {\n    return this.div;\n  }\n\n  setCommentButtonStates(options) {\n    this.#comment?.setCommentButtonStates(options);\n  }\n\n  /**\n   * onkeydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (\n      !this.isResizable ||\n      event.target !== this.div ||\n      event.key !== \"Enter\"\n    ) {\n      return;\n    }\n    this._uiManager.setSelected(this);\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height,\n    };\n    const children = this.#resizersDiv.children;\n    if (!this.#allResizerDivs) {\n      this.#allResizerDivs = Array.from(children);\n      const boundResizerKeydown = this.#resizerKeydown.bind(this);\n      const boundResizerBlur = this.#resizerBlur.bind(this);\n      const signal = this._uiManager._signal;\n      for (const div of this.#allResizerDivs) {\n        const name = div.getAttribute(\"data-resizer-name\");\n        div.setAttribute(\"role\", \"spinbutton\");\n        div.addEventListener(\"keydown\", boundResizerKeydown, { signal });\n        div.addEventListener(\"blur\", boundResizerBlur, { signal });\n        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n          signal,\n        });\n        div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n\n    // We want to have the resizers in the visual order, so we move the first\n    // (top-left) to the right place.\n    const first = this.#allResizerDivs[0];\n    let firstPosition = 0;\n    for (const div of children) {\n      if (div === first) {\n        break;\n      }\n      firstPosition++;\n    }\n    const nextFirstPosition =\n      (((360 - this.rotation + this.parentRotation) % 360) / 90) *\n      (this.#allResizerDivs.length / 4);\n\n    if (nextFirstPosition !== firstPosition) {\n      // We need to reorder the resizers in the DOM in order to have the focus\n      // on the top-left one.\n      if (nextFirstPosition < firstPosition) {\n        for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n          this.#resizersDiv.append(this.#resizersDiv.firstElementChild);\n        }\n      } else if (nextFirstPosition > firstPosition) {\n        for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n          this.#resizersDiv.firstElementChild.before(\n            this.#resizersDiv.lastElementChild\n          );\n        }\n      }\n\n      let i = 0;\n      for (const child of children) {\n        const div = this.#allResizerDivs[i++];\n        const name = div.getAttribute(\"data-resizer-name\");\n        child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n\n    this.#setResizerTabIndex(0);\n    this.#isResizerEnabledForKeyboard = true;\n    this.#resizersDiv.firstElementChild.focus({ focusVisible: true });\n    event.preventDefault();\n    event.stopImmediatePropagation();\n  }\n\n  #resizerKeydown(event) {\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\n  }\n\n  #resizerBlur(event) {\n    if (\n      this.#isResizerEnabledForKeyboard &&\n      event.relatedTarget?.parentNode !== this.#resizersDiv\n    ) {\n      this.#stopResizing();\n    }\n  }\n\n  #resizerFocus(name) {\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n  }\n\n  #setResizerTabIndex(value) {\n    if (!this.#allResizerDivs) {\n      return;\n    }\n    for (const div of this.#allResizerDivs) {\n      div.tabIndex = value;\n    }\n  }\n\n  _resizeWithKeyboard(x, y) {\n    if (!this.#isResizerEnabledForKeyboard) {\n      return;\n    }\n    this.#resizerPointermove(this.#focusedResizerName, {\n      deltaX: x,\n      deltaY: y,\n      fromKeyboard: true,\n    });\n  }\n\n  #stopResizing() {\n    this.#isResizerEnabledForKeyboard = false;\n    this.#setResizerTabIndex(-1);\n    this.#addResizeToUndoStack();\n  }\n\n  _stopResizingWithKeyboard() {\n    this.#stopResizing();\n    this.div.focus();\n  }\n\n  /**\n   * Select this editor.\n   */\n  select() {\n    if (this.isSelected && this._editToolbar) {\n      this._editToolbar.show();\n      return;\n    }\n    this.isSelected = true;\n    this.makeResizable();\n    this.div?.classList.add(\"selectedEditor\");\n    if (!this._editToolbar) {\n      this.addEditToolbar().then(() => {\n        if (this.div?.classList.contains(\"selectedEditor\")) {\n          // The editor can have been unselected while we were waiting for the\n          // edit toolbar to be created, hence we want to be sure that this\n          // editor is still selected.\n          this._editToolbar?.show();\n        }\n      });\n      return;\n    }\n    this._editToolbar?.show();\n    this.#altText?.toggleAltTextBadge(false);\n  }\n\n  focus() {\n    if (this.div && !this.div.contains(document.activeElement)) {\n      setTimeout(() => this.div?.focus({ preventScroll: true }), 0);\n    }\n  }\n\n  /**\n   * Unselect this editor.\n   */\n  unselect() {\n    if (!this.isSelected) {\n      return;\n    }\n    this.isSelected = false;\n    this.#resizersDiv?.classList.add(\"hidden\");\n    this.div?.classList.remove(\"selectedEditor\");\n    if (this.div?.contains(document.activeElement)) {\n      // Don't use this.div.blur() because we don't know where the focus will\n      // go.\n      this._uiManager.currentLayer.div.focus({\n        preventScroll: true,\n      });\n    }\n    this._editToolbar?.hide();\n    this.#altText?.toggleAltTextBadge(true);\n    this.hideCommentPopup();\n  }\n\n  hideCommentPopup() {\n    if (this.hasComment) {\n      this._uiManager.toggleComment(null);\n    }\n  }\n\n  /**\n   * Update some parameters which have been changed through the UI.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {}\n\n  /**\n   * When the user disables the editing mode some editors can change some of\n   * their properties.\n   */\n  disableEditing() {}\n\n  /**\n   * When the user enables the editing mode some editors can change some of\n   * their properties.\n   */\n  enableEditing() {}\n\n  /**\n   * Check if the content of this editor can be changed.\n   * For example, a FreeText editor can be changed (the user can change the\n   * text), but a Stamp editor cannot.\n   * @returns {boolean}\n   */\n  get canChangeContent() {\n    return false;\n  }\n\n  /**\n   * The editor is about to be edited.\n   */\n  enterInEditMode() {\n    if (!this.canChangeContent) {\n      return;\n    }\n    this.enableEditMode();\n    this.div.focus();\n  }\n\n  /**\n   * ondblclick callback.\n   * @param {MouseEvent} event\n   */\n  dblclick(event) {\n    if (event.target.nodeName === \"BUTTON\") {\n      // Avoid entering in edit mode when clicking on the comment button.\n      return;\n    }\n    this.enterInEditMode();\n    this.parent.updateToolbar({\n      mode: this.constructor._editorType,\n      editId: this.uid,\n    });\n  }\n\n  /**\n   * @returns {HTMLElement | null} the element requiring an alt text.\n   */\n  getElementForAltText() {\n    return this.div;\n  }\n\n  /**\n   * Get the div which really contains the displayed content.\n   * @returns {HTMLDivElement | undefined}\n   */\n  get contentDiv() {\n    return this.div;\n  }\n\n  /**\n   * If true then the editor is currently edited.\n   * @type {boolean}\n   */\n  get isEditing() {\n    return this.#isEditing;\n  }\n\n  /**\n   * When set to true, it means that this editor is currently edited.\n   * @param {boolean} value\n   */\n  set isEditing(value) {\n    this.#isEditing = value;\n    if (!this.parent) {\n      return;\n    }\n    if (value) {\n      this.parent.setSelected(this);\n      this.parent.setActiveEditor(this);\n    } else {\n      this.parent.setActiveEditor(null);\n    }\n  }\n\n  static get MIN_SIZE() {\n    return 16;\n  }\n\n  static canCreateNewEmptyEditor() {\n    return true;\n  }\n\n  /**\n   * Get the data to report to the telemetry when the editor is added.\n   * @returns {Object}\n   */\n  get telemetryInitialData() {\n    return { action: \"added\" };\n  }\n\n  /**\n   * The telemetry data to use when saving/printing.\n   * @returns {Object|null}\n   */\n  get telemetryFinalData() {\n    return null;\n  }\n\n  _reportTelemetry(data, mustWait = false) {\n    if (mustWait) {\n      this.#telemetryTimeouts ||= new Map();\n      const { action } = data;\n      let timeout = this.#telemetryTimeouts.get(action);\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n      timeout = setTimeout(() => {\n        this._reportTelemetry(data);\n        this.#telemetryTimeouts.delete(action);\n        if (this.#telemetryTimeouts.size === 0) {\n          this.#telemetryTimeouts = null;\n        }\n      }, AnnotationEditor._telemetryTimeout);\n      this.#telemetryTimeouts.set(action, timeout);\n      return;\n    }\n    data.type ||= this.editorType;\n    this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n      source: this,\n      details: {\n        type: \"editing\",\n        data,\n      },\n    });\n  }\n\n  /**\n   * Show or hide this editor.\n   * @param {boolean|undefined} visible\n   */\n  show(visible = this._isVisible) {\n    this.div.classList.toggle(\"hidden\", !visible);\n    this._isVisible = visible;\n  }\n\n  enable() {\n    if (this.div) {\n      this.div.tabIndex = 0;\n    }\n    this.#disabled = false;\n  }\n\n  disable() {\n    if (this.div) {\n      this.div.tabIndex = -1;\n    }\n    this.#disabled = true;\n  }\n\n  updateFakeAnnotationElement(annotationLayer) {\n    if (!this.#fakeAnnotation && !this.deleted) {\n      this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n      return;\n    }\n    if (this.deleted) {\n      this.#fakeAnnotation.remove();\n      this.#fakeAnnotation = null;\n      return;\n    }\n    if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n      this.#fakeAnnotation.updateEdited({\n        rect: this.getPDFRect(),\n        popup: this.comment,\n      });\n    }\n  }\n\n  /**\n   * Render an annotation in the annotation layer.\n   * @param {Object} annotation\n   * @returns {HTMLElement|null}\n   */\n  renderAnnotationElement(annotation) {\n    if (this.deleted) {\n      annotation.hide();\n      return null;\n    }\n    let content = annotation.container.querySelector(\".annotationContent\");\n    if (!content) {\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      annotation.container.prepend(content);\n    } else if (content.nodeName === \"CANVAS\") {\n      const canvas = content;\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      canvas.before(content);\n    }\n\n    return content;\n  }\n\n  resetAnnotationElement(annotation) {\n    const { firstElementChild } = annotation.container;\n    if (\n      firstElementChild?.nodeName === \"DIV\" &&\n      firstElementChild.classList.contains(\"annotationContent\")\n    ) {\n      firstElementChild.remove();\n    }\n  }\n}\n\n// This class is used to fake an editor which has been deleted.\nclass FakeEditor extends AnnotationEditor {\n  constructor(params) {\n    super(params);\n    this.annotationElementId = params.annotationElementId;\n    this.deleted = true;\n  }\n\n  serialize() {\n    return this.serializeDeleted();\n  }\n}\n\nexport { AnnotationEditor };\n", "/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (ArrayBuffer.isView(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n        k2 = (k2 << 15) | (k2 >>> 17);\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n        h2 ^= k2;\n        h2 = (h2 << 13) | (h2 >>> 19);\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    return (\n      (h1 >>> 0).toString(16).padStart(8, \"0\") +\n      (h2 >>> 0).toString(16).padStart(8, \"0\")\n    );\n  }\n}\n\nexport { MurmurHash3_64 };\n", "/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n  map: null,\n  hash: \"\",\n  transfer: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n  #modified = false;\n\n  #modifiedIds = null;\n\n  #editorsMap = null;\n\n  #storage = new Map();\n\n  constructor() {\n    // Callbacks to signal when the modification state is set or reset.\n    // This is used by the viewer to only bind on `beforeunload` if forms\n    // are actually edited to prevent doing so unconditionally since that\n    // can have undesirable effects.\n    this.onSetModified = null;\n    this.onResetModified = null;\n    this.onAnnotationEditor = null;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"_setValues\", {\n        value: obj => {\n          for (const [key, val] of Object.entries(obj)) {\n            this.setValue(key, val);\n          }\n        },\n      });\n    }\n  }\n\n  /**\n   * Get the value for a given key if it exists, or return the default value.\n   * @param {string} key\n   * @param {Object} defaultValue\n   * @returns {Object}\n   */\n  getValue(key, defaultValue) {\n    const value = this.#storage.get(key);\n    if (value === undefined) {\n      return defaultValue;\n    }\n\n    return Object.assign(defaultValue, value);\n  }\n\n  /**\n   * Get the value for a given key.\n   * @param {string} key\n   * @returns {Object}\n   */\n  getRawValue(key) {\n    return this.#storage.get(key);\n  }\n\n  /**\n   * Remove a value from the storage.\n   * @param {string} key\n   */\n  remove(key) {\n    const storedValue = this.#storage.get(key);\n    if (storedValue === undefined) {\n      return;\n    }\n    if (storedValue instanceof AnnotationEditor) {\n      this.#editorsMap.delete(storedValue.annotationElementId);\n    }\n    this.#storage.delete(key);\n\n    if (this.#storage.size === 0) {\n      this.resetModified();\n    }\n\n    if (typeof this.onAnnotationEditor === \"function\") {\n      for (const value of this.#storage.values()) {\n        if (value instanceof AnnotationEditor) {\n          return;\n        }\n      }\n      this.onAnnotationEditor(null);\n    }\n  }\n\n  /**\n   * Set the value for a given key\n   * @param {string} key\n   * @param {Object} value\n   */\n  setValue(key, value) {\n    const obj = this.#storage.get(key);\n    let modified = false;\n    if (obj !== undefined) {\n      for (const [entry, val] of Object.entries(value)) {\n        if (obj[entry] !== val) {\n          modified = true;\n          obj[entry] = val;\n        }\n      }\n    } else {\n      modified = true;\n      this.#storage.set(key, value);\n    }\n    if (modified) {\n      this.#setModified();\n    }\n\n    if (value instanceof AnnotationEditor) {\n      (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n      if (typeof this.onAnnotationEditor === \"function\") {\n        this.onAnnotationEditor(value.constructor._type);\n      }\n    }\n  }\n\n  /**\n   * Check if the storage contains the given key.\n   * @param {string} key\n   * @returns {boolean}\n   */\n  has(key) {\n    return this.#storage.has(key);\n  }\n\n  get size() {\n    return this.#storage.size;\n  }\n\n  #setModified() {\n    if (!this.#modified) {\n      this.#modified = true;\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\n      }\n    }\n  }\n\n  resetModified() {\n    if (this.#modified) {\n      this.#modified = false;\n      if (typeof this.onResetModified === \"function\") {\n        this.onResetModified();\n      }\n    }\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  get print() {\n    return new PrintAnnotationStorage(this);\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    if (this.#storage.size === 0) {\n      return SerializableEmpty;\n    }\n    const map = new Map(),\n      hash = new MurmurHash3_64(),\n      transfer = [];\n    const context = Object.create(null);\n    let hasBitmap = false;\n\n    for (const [key, val] of this.#storage) {\n      const serialized =\n        val instanceof AnnotationEditor\n          ? val.serialize(/* isForCopying = */ false, context)\n          : val;\n      if (serialized) {\n        map.set(key, serialized);\n\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\n        hasBitmap ||= !!serialized.bitmap;\n      }\n    }\n\n    if (hasBitmap) {\n      // We must transfer the bitmap data separately, since it can be changed\n      // during serialization with SVG images.\n      for (const value of map.values()) {\n        if (value.bitmap) {\n          transfer.push(value.bitmap);\n        }\n      }\n    }\n\n    return map.size > 0\n      ? { map, hash: hash.hexdigest(), transfer }\n      : SerializableEmpty;\n  }\n\n  get editorStats() {\n    let stats = null;\n    const typeToEditor = new Map();\n    let numberOfEditedComments = 0;\n    let numberOfDeletedComments = 0;\n    for (const value of this.#storage.values()) {\n      if (!(value instanceof AnnotationEditor)) {\n        if (value.popup) {\n          if (value.popup.deleted) {\n            numberOfDeletedComments += 1;\n          } else {\n            numberOfEditedComments += 1;\n          }\n        }\n        continue;\n      }\n      if (value.isCommentDeleted) {\n        numberOfDeletedComments += 1;\n      } else if (value.hasEditedComment) {\n        numberOfEditedComments += 1;\n      }\n      const editorStats = value.telemetryFinalData;\n      if (!editorStats) {\n        continue;\n      }\n      const { type } = editorStats;\n      if (!typeToEditor.has(type)) {\n        typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n      }\n      stats ||= Object.create(null);\n      const map = (stats[type] ||= new Map());\n      for (const [key, val] of Object.entries(editorStats)) {\n        if (key === \"type\") {\n          continue;\n        }\n        let counters = map.get(key);\n        if (!counters) {\n          counters = new Map();\n          map.set(key, counters);\n        }\n        const count = counters.get(val) ?? 0;\n        counters.set(val, count + 1);\n      }\n    }\n    if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n      stats ||= Object.create(null);\n      stats.comments = {\n        deleted: numberOfDeletedComments,\n        edited: numberOfEditedComments,\n      };\n    }\n    if (!stats) {\n      return null;\n    }\n    for (const [type, editor] of typeToEditor) {\n      stats[type] = editor.computeTelemetryFinalData(stats[type]);\n    }\n    return stats;\n  }\n\n  resetModifiedIds() {\n    this.#modifiedIds = null;\n  }\n\n  updateEditor(annotationId, data) {\n    const value = this.#editorsMap?.get(annotationId);\n    if (value) {\n      value.updateFromAnnotationLayer(data);\n      return true;\n    }\n    return false;\n  }\n\n  getEditor(annotationId) {\n    return this.#editorsMap?.get(annotationId) || null;\n  }\n\n  /**\n   * @returns {{ids: Set<string>, hash: string}}\n   */\n  get modifiedIds() {\n    if (this.#modifiedIds) {\n      return this.#modifiedIds;\n    }\n    const ids = [];\n    if (this.#editorsMap) {\n      for (const value of this.#editorsMap.values()) {\n        if (!value.serialize()) {\n          continue;\n        }\n        ids.push(value.annotationElementId);\n      }\n    }\n    return (this.#modifiedIds = {\n      ids: new Set(ids),\n      hash: ids.join(\",\"),\n    });\n  }\n\n  [Symbol.iterator]() {\n    return this.#storage.entries();\n  }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n  #serializable;\n\n  constructor(parent) {\n    super();\n    const { map, hash, transfer } = parent.serializable;\n    // Create a *copy* of the data, since Objects are passed by reference in JS.\n    const clone = structuredClone(map, transfer ? { transfer } : null);\n\n    this.#serializable = { map: clone, hash, transfer };\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  // eslint-disable-next-line getter-return\n  get print() {\n    unreachable(\"Should not call PrintAnnotationStorage.print\");\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    return this.#serializable;\n  }\n\n  get modifiedIds() {\n    return shadow(this, \"modifiedIds\", {\n      ids: new Set(),\n      hash: \"\",\n    });\n  }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FeatureTest,\n  isNodeJS,\n  shadow,\n  string32,\n  toBase64Util,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { makePathFromDrawOPS } from \"./display_utils.js\";\n\nclass FontLoader {\n  #systemFonts = new Set();\n\n  constructor({\n    ownerDocument = globalThis.document,\n    styleElement = null, // For testing only.\n  }) {\n    this._document = ownerDocument;\n\n    this.nativeFontFaces = new Set();\n    this.styleElement =\n      typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n        ? styleElement\n        : null;\n\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n      this.loadingRequests = [];\n      this.loadTestFontId = 0;\n    }\n  }\n\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.add(nativeFontFace);\n    this._document.fonts.add(nativeFontFace);\n  }\n\n  removeNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.delete(nativeFontFace);\n    this._document.fonts.delete(nativeFontFace);\n  }\n\n  insertRule(rule) {\n    if (!this.styleElement) {\n      this.styleElement = this._document.createElement(\"style\");\n      this._document.documentElement\n        .getElementsByTagName(\"head\")[0]\n        .append(this.styleElement);\n    }\n    const styleSheet = this.styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\n  }\n\n  clear() {\n    for (const nativeFontFace of this.nativeFontFaces) {\n      this._document.fonts.delete(nativeFontFace);\n    }\n    this.nativeFontFaces.clear();\n    this.#systemFonts.clear();\n\n    if (this.styleElement) {\n      // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n\n  async loadSystemFont({\n    systemFontInfo: info,\n    disableFontFace,\n    _inspectFont,\n  }) {\n    if (!info || this.#systemFonts.has(info.loadedName)) {\n      return;\n    }\n    assert(\n      !disableFontFace,\n      \"loadSystemFont shouldn't be called when `disableFontFace` is set.\"\n    );\n\n    if (this.isFontLoadingAPISupported) {\n      const { loadedName, src, style } = info;\n      const fontFace = new FontFace(loadedName, src, style);\n      this.addNativeFontFace(fontFace);\n      try {\n        await fontFace.load();\n        this.#systemFonts.add(loadedName);\n        _inspectFont?.(info);\n      } catch {\n        warn(\n          `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\n        );\n\n        this.removeNativeFontFace(fontFace);\n      }\n      return;\n    }\n\n    unreachable(\n      \"Not implemented: loadSystemFont without the Font Loading API.\"\n    );\n  }\n\n  async bind(font) {\n    // Add the font to the DOM only once; skip if the font is already loaded.\n    if (font.attached || (font.missingFile && !font.systemFontInfo)) {\n      return;\n    }\n    font.attached = true;\n\n    if (font.systemFontInfo) {\n      await this.loadSystemFont(font);\n      return;\n    }\n\n    if (this.isFontLoadingAPISupported) {\n      const nativeFontFace = font.createNativeFontFace();\n      if (nativeFontFace) {\n        this.addNativeFontFace(nativeFontFace);\n        try {\n          await nativeFontFace.loaded;\n        } catch (ex) {\n          warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n          // When font loading failed, fall back to the built-in font renderer.\n          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n      return; // The font was, asynchronously, loaded.\n    }\n\n    // !this.isFontLoadingAPISupported\n    const rule = font.createFontFaceRule();\n    if (rule) {\n      this.insertRule(rule);\n\n      if (this.isSyncFontLoadingSupported) {\n        return; // The font was, synchronously, loaded.\n      }\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n        throw new Error(\"Not implemented: async font loading\");\n      }\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n        this._prepareFontLoadEvent(font, request);\n      });\n      // The font was, asynchronously, loaded.\n    }\n  }\n\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      return shadow(\n        this,\n        \"isFontLoadingAPISupported\",\n        hasFonts && !this.styleElement\n      );\n    }\n    return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n\n  get isSyncFontLoadingSupported() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      return shadow(this, \"isSyncFontLoadingSupported\", true);\n    }\n\n    // Node.js - we can pretend that sync font loading is supported.\n    // Firefox, from version 14, supports synchronous font loading.\n    return shadow(\n      this,\n      \"isSyncFontLoadingSupported\",\n      (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) &&\n        (isNodeJS || FeatureTest.platform.isFirefox)\n    );\n  }\n\n  _queueLoadingCallback(callback) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _queueLoadingCallback\");\n    }\n\n    function completeRequest() {\n      assert(!request.done, \"completeRequest() cannot be called twice.\");\n      request.done = true;\n\n      // Sending all completed requests in order of how they were queued.\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\n        const otherRequest = loadingRequests.shift();\n        setTimeout(otherRequest.callback, 0);\n      }\n    }\n\n    const { loadingRequests } = this;\n    const request = {\n      done: false,\n      complete: completeRequest,\n      callback,\n    };\n    loadingRequests.push(request);\n    return request;\n  }\n\n  get _loadTestFont() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _loadTestFont\");\n    }\n\n    // This is a CFF font with 1 glyph for '.' that fills its entire width\n    // and height.\n    const testFont = atob(\n      \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n        \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n        \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n        \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n        \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n        \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n        \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n        \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n        \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n        \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n        \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n        \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n        \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n        \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n        \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n        \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n        \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n    );\n    return shadow(this, \"_loadTestFont\", testFont);\n  }\n\n  _prepareFontLoadEvent(font, request) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _prepareFontLoadEvent\");\n    }\n\n    /** Hack begin */\n    // There's currently no event when a font has finished downloading so the\n    // following code is a dirty hack to 'guess' when a font is ready.\n    // It's assumed fonts are loaded in order, so add a known test font after\n    // the desired fonts and then test for the loading of that test font.\n\n    function int32(data, offset) {\n      return (\n        (data.charCodeAt(offset) << 24) |\n        (data.charCodeAt(offset + 1) << 16) |\n        (data.charCodeAt(offset + 2) << 8) |\n        (data.charCodeAt(offset + 3) & 0xff)\n      );\n    }\n    function spliceString(s, offset, remove, insert) {\n      const chunk1 = s.substring(0, offset);\n      const chunk2 = s.substring(offset + remove);\n      return chunk1 + insert + chunk2;\n    }\n    let i, ii;\n\n    // The temporary canvas is used to determine if fonts are loaded.\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = 1;\n    const ctx = canvas.getContext(\"2d\");\n\n    let called = 0;\n    function isFontReady(name, callback) {\n      // With setTimeout clamping this gives the font ~100ms to load.\n      if (++called > 30) {\n        warn(\"Load test font never loaded.\");\n        callback();\n        return;\n      }\n      ctx.font = \"30px \" + name;\n      ctx.fillText(\".\", 0, 20);\n      const imageData = ctx.getImageData(0, 0, 1, 1);\n      if (imageData.data[3] > 0) {\n        callback();\n        return;\n      }\n      setTimeout(isFontReady.bind(null, name, callback));\n    }\n\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n    // Chromium seems to cache fonts based on a hash of the actual font data,\n    // so the font must be modified for each load test else it will appear to\n    // be loaded already.\n    // TODO: This could maybe be made faster by avoiding the btoa of the full\n    // font by splitting it in chunks before hand and padding the font id.\n    let data = this._loadTestFont;\n    const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n    data = spliceString(\n      data,\n      COMMENT_OFFSET,\n      loadTestFontId.length,\n      loadTestFontId\n    );\n    // CFF checksum is important for IE, adjusting it\n    const CFF_CHECKSUM_OFFSET = 16;\n    const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n    let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n    for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n    }\n    if (i < loadTestFontId.length) {\n      // align to 4 bytes boundary\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n    }\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n    const url = `url(data:font/opentype;base64,${btoa(data)});`;\n    const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n    this.insertRule(rule);\n\n    const div = this._document.createElement(\"div\");\n    div.style.visibility = \"hidden\";\n    div.style.width = div.style.height = \"10px\";\n    div.style.position = \"absolute\";\n    div.style.top = div.style.left = \"0px\";\n\n    for (const name of [font.loadedName, loadTestFontId]) {\n      const span = this._document.createElement(\"span\");\n      span.textContent = \"Hi\";\n      span.style.fontFamily = name;\n      div.append(span);\n    }\n    this._document.body.append(div);\n\n    isFontReady(loadTestFontId, () => {\n      div.remove();\n      request.complete();\n    });\n    /** Hack end */\n  }\n}\n\nclass FontFaceObject {\n  #fontData;\n\n  constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n    this.compiledGlyphs = Object.create(null);\n    this.#fontData = translatedData;\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      if (typeof this.disableFontFace !== \"boolean\") {\n        unreachable(\"disableFontFace must be available.\");\n      }\n      if (typeof this.fontExtraProperties !== \"boolean\") {\n        unreachable(\"fontExtraProperties must be available.\");\n      }\n    }\n    this._inspectFont = inspectFont;\n    if (extra) {\n      Object.assign(this, extra);\n    }\n    if (charProcOperatorList) {\n      this.charProcOperatorList = charProcOperatorList;\n    }\n  }\n\n  createNativeFontFace() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    let nativeFontFace;\n    if (!this.cssFontInfo) {\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\n    } else {\n      const css = {\n        weight: this.cssFontInfo.fontWeight,\n      };\n      if (this.cssFontInfo.italicAngle) {\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n      }\n      nativeFontFace = new FontFace(\n        this.cssFontInfo.fontFamily,\n        this.data,\n        css\n      );\n    }\n\n    this._inspectFont?.(this);\n    return nativeFontFace;\n  }\n\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    // Add the @font-face rule to the document.\n    const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n    let rule;\n    if (!this.cssFontInfo) {\n      rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n    } else {\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n      if (this.cssFontInfo.italicAngle) {\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n      }\n      rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n    }\n\n    this._inspectFont?.(this, url);\n    return rule;\n  }\n\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n\n    const objId = this.loadedName + \"_path_\" + character;\n    let cmds;\n    try {\n      cmds = objs.get(objId);\n    } catch (ex) {\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n    }\n    const path = makePathFromDrawOPS(cmds?.path);\n\n    if (!this.fontExtraProperties) {\n      // Remove the raw path-string, since we don't need it anymore.\n      objs.delete(objId);\n    }\n    return (this.compiledGlyphs[character] = path);\n  }\n\n  get black() {\n    return this.#fontData.black;\n  }\n\n  get bold() {\n    return this.#fontData.bold;\n  }\n\n  get disableFontFace() {\n    return this.#fontData.disableFontFace ?? false;\n  }\n\n  set disableFontFace(value) {\n    shadow(this, \"disableFontFace\", !!value);\n  }\n\n  get fontExtraProperties() {\n    return this.#fontData.fontExtraProperties ?? false;\n  }\n\n  get isInvalidPDFjsFont() {\n    return this.#fontData.isInvalidPDFjsFont;\n  }\n\n  get isType3Font() {\n    return this.#fontData.isType3Font;\n  }\n\n  get italic() {\n    return this.#fontData.italic;\n  }\n\n  get missingFile() {\n    return this.#fontData.missingFile;\n  }\n\n  get remeasure() {\n    return this.#fontData.remeasure;\n  }\n\n  get vertical() {\n    return this.#fontData.vertical;\n  }\n\n  get ascent() {\n    return this.#fontData.ascent;\n  }\n\n  get defaultWidth() {\n    return this.#fontData.defaultWidth;\n  }\n\n  get descent() {\n    return this.#fontData.descent;\n  }\n\n  get bbox() {\n    return this.#fontData.bbox;\n  }\n\n  set bbox(bbox) {\n    shadow(this, \"bbox\", bbox);\n  }\n\n  get fontMatrix() {\n    return this.#fontData.fontMatrix;\n  }\n\n  get fallbackName() {\n    return this.#fontData.fallbackName;\n  }\n\n  get loadedName() {\n    return this.#fontData.loadedName;\n  }\n\n  get mimetype() {\n    return this.#fontData.mimetype;\n  }\n\n  get name() {\n    return this.#fontData.name;\n  }\n\n  get data() {\n    return this.#fontData.data;\n  }\n\n  clearData() {\n    this.#fontData.clearData();\n  }\n\n  get cssFontInfo() {\n    return this.#fontData.cssFontInfo;\n  }\n\n  get systemFontInfo() {\n    return this.#fontData.systemFontInfo;\n  }\n\n  get defaultVMetrics() {\n    return this.#fontData.defaultVMetrics;\n  }\n}\n\nexport { FontFaceObject, FontLoader };\n", "/* Copyright 2025 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FeatureTest, MeshFigureType } from \"./util.js\";\n\nclass CssFontInfo {\n  #buffer;\n\n  #view;\n\n  #decoder;\n\n  static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n\n  static write(info) {\n    const encoder = new TextEncoder();\n    const encodedStrings = {};\n    let stringsLength = 0;\n    for (const prop of CssFontInfo.strings) {\n      const encoded = encoder.encode(info[prop]);\n      encodedStrings[prop] = encoded;\n      stringsLength += 4 + encoded.length;\n    }\n\n    const buffer = new ArrayBuffer(stringsLength);\n    const data = new Uint8Array(buffer);\n    const view = new DataView(buffer);\n    let offset = 0;\n\n    for (const prop of CssFontInfo.strings) {\n      const encoded = encodedStrings[prop];\n      const length = encoded.length;\n      view.setUint32(offset, length);\n      data.set(encoded, offset + 4);\n      offset += 4 + length;\n    }\n    assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n    return buffer;\n  }\n\n  constructor(buffer) {\n    this.#buffer = buffer;\n    this.#view = new DataView(this.#buffer);\n    this.#decoder = new TextDecoder();\n  }\n\n  #readString(index) {\n    assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n    let offset = 0;\n    for (let i = 0; i < index; i++) {\n      offset += this.#view.getUint32(offset) + 4;\n    }\n    const length = this.#view.getUint32(offset);\n    return this.#decoder.decode(\n      new Uint8Array(this.#buffer, offset + 4, length)\n    );\n  }\n\n  get fontFamily() {\n    return this.#readString(0);\n  }\n\n  get fontWeight() {\n    return this.#readString(1);\n  }\n\n  get italicAngle() {\n    return this.#readString(2);\n  }\n}\n\nclass SystemFontInfo {\n  #buffer;\n\n  #view;\n\n  #decoder;\n\n  static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n\n  static write(info) {\n    const encoder = new TextEncoder();\n    const encodedStrings = {};\n    let stringsLength = 0;\n    for (const prop of SystemFontInfo.strings) {\n      const encoded = encoder.encode(info[prop]);\n      encodedStrings[prop] = encoded;\n      stringsLength += 4 + encoded.length;\n    }\n    stringsLength += 4;\n    let encodedStyleStyle,\n      encodedStyleWeight,\n      lengthEstimate = 1 + stringsLength;\n    if (info.style) {\n      encodedStyleStyle = encoder.encode(info.style.style);\n      encodedStyleWeight = encoder.encode(info.style.weight);\n      lengthEstimate +=\n        4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n    }\n\n    const buffer = new ArrayBuffer(lengthEstimate);\n    const data = new Uint8Array(buffer);\n    const view = new DataView(buffer);\n    let offset = 0;\n\n    view.setUint8(offset++, info.guessFallback ? 1 : 0);\n    view.setUint32(offset, 0);\n    offset += 4;\n    stringsLength = 0;\n    for (const prop of SystemFontInfo.strings) {\n      const encoded = encodedStrings[prop];\n      const length = encoded.length;\n      stringsLength += 4 + length;\n      view.setUint32(offset, length);\n      data.set(encoded, offset + 4);\n      offset += 4 + length;\n    }\n    view.setUint32(offset - stringsLength - 4, stringsLength);\n\n    if (info.style) {\n      view.setUint32(offset, encodedStyleStyle.length);\n      data.set(encodedStyleStyle, offset + 4);\n      offset += 4 + encodedStyleStyle.length;\n      view.setUint32(offset, encodedStyleWeight.length);\n      data.set(encodedStyleWeight, offset + 4);\n      offset += 4 + encodedStyleWeight.length;\n    }\n    assert(\n      offset <= buffer.byteLength,\n      \"SubstitionInfo.write: Buffer overflow\"\n    );\n    return buffer.transferToFixedLength(offset);\n  }\n\n  constructor(buffer) {\n    this.#buffer = buffer;\n    this.#view = new DataView(this.#buffer);\n    this.#decoder = new TextDecoder();\n  }\n\n  get guessFallback() {\n    return this.#view.getUint8(0) !== 0;\n  }\n\n  #readString(index) {\n    assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n    let offset = 5;\n    for (let i = 0; i < index; i++) {\n      offset += this.#view.getUint32(offset) + 4;\n    }\n    const length = this.#view.getUint32(offset);\n    return this.#decoder.decode(\n      new Uint8Array(this.#buffer, offset + 4, length)\n    );\n  }\n\n  get css() {\n    return this.#readString(0);\n  }\n\n  get loadedName() {\n    return this.#readString(1);\n  }\n\n  get baseFontName() {\n    return this.#readString(2);\n  }\n\n  get src() {\n    return this.#readString(3);\n  }\n\n  get style() {\n    let offset = 1;\n    offset += 4 + this.#view.getUint32(offset);\n    const styleLength = this.#view.getUint32(offset);\n    const style = this.#decoder.decode(\n      new Uint8Array(this.#buffer, offset + 4, styleLength)\n    );\n    offset += 4 + styleLength;\n    const weightLength = this.#view.getUint32(offset);\n    const weight = this.#decoder.decode(\n      new Uint8Array(this.#buffer, offset + 4, weightLength)\n    );\n    return { style, weight };\n  }\n}\n\nclass FontInfo {\n  static bools = [\n    \"black\",\n    \"bold\",\n    \"disableFontFace\",\n    \"fontExtraProperties\",\n    \"isInvalidPDFjsFont\",\n    \"isType3Font\",\n    \"italic\",\n    \"missingFile\",\n    \"remeasure\",\n    \"vertical\",\n  ];\n\n  static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n\n  static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n\n  static #OFFSET_NUMBERS = Math.ceil((this.bools.length * 2) / 8);\n\n  static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n\n  static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n\n  static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n\n  static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n\n  #buffer;\n\n  #decoder;\n\n  #view;\n\n  constructor({ data, extra }) {\n    this.#buffer = data;\n    this.#decoder = new TextDecoder();\n    this.#view = new DataView(this.#buffer);\n    if (extra) {\n      Object.assign(this, extra);\n    }\n  }\n\n  #readBoolean(index) {\n    assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n    const byteOffset = Math.floor(index / 4);\n    const bitOffset = (index * 2) % 8;\n    const value = (this.#view.getUint8(byteOffset) >> bitOffset) & 0x03;\n    return value === 0x00 ? undefined : value === 0x02;\n  }\n\n  get black() {\n    return this.#readBoolean(0);\n  }\n\n  get bold() {\n    return this.#readBoolean(1);\n  }\n\n  get disableFontFace() {\n    return this.#readBoolean(2);\n  }\n\n  get fontExtraProperties() {\n    return this.#readBoolean(3);\n  }\n\n  get isInvalidPDFjsFont() {\n    return this.#readBoolean(4);\n  }\n\n  get isType3Font() {\n    return this.#readBoolean(5);\n  }\n\n  get italic() {\n    return this.#readBoolean(6);\n  }\n\n  get missingFile() {\n    return this.#readBoolean(7);\n  }\n\n  get remeasure() {\n    return this.#readBoolean(8);\n  }\n\n  get vertical() {\n    return this.#readBoolean(9);\n  }\n\n  #readNumber(index) {\n    assert(index < FontInfo.numbers.length, \"Invalid number index\");\n    return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n  }\n\n  get ascent() {\n    return this.#readNumber(0);\n  }\n\n  get defaultWidth() {\n    return this.#readNumber(1);\n  }\n\n  get descent() {\n    return this.#readNumber(2);\n  }\n\n  get bbox() {\n    let offset = FontInfo.#OFFSET_BBOX;\n    const numCoords = this.#view.getUint8(offset);\n    if (numCoords === 0) {\n      return undefined;\n    }\n    offset += 1;\n    const bbox = [];\n    for (let i = 0; i < 4; i++) {\n      bbox.push(this.#view.getInt16(offset, true));\n      offset += 2;\n    }\n    return bbox;\n  }\n\n  get fontMatrix() {\n    let offset = FontInfo.#OFFSET_FONT_MATRIX;\n    const numPoints = this.#view.getUint8(offset);\n    if (numPoints === 0) {\n      return undefined;\n    }\n    offset += 1;\n    const fontMatrix = [];\n    for (let i = 0; i < 6; i++) {\n      fontMatrix.push(this.#view.getFloat64(offset, true));\n      offset += 8;\n    }\n    return fontMatrix;\n  }\n\n  get defaultVMetrics() {\n    let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n    const numMetrics = this.#view.getUint8(offset);\n    if (numMetrics === 0) {\n      return undefined;\n    }\n    offset += 1;\n    const defaultVMetrics = [];\n    for (let i = 0; i < 3; i++) {\n      defaultVMetrics.push(this.#view.getInt16(offset, true));\n      offset += 2;\n    }\n    return defaultVMetrics;\n  }\n\n  #readString(index) {\n    assert(index < FontInfo.strings.length, \"Invalid string index\");\n    let offset = FontInfo.#OFFSET_STRINGS + 4;\n    for (let i = 0; i < index; i++) {\n      offset += this.#view.getUint32(offset) + 4;\n    }\n    const length = this.#view.getUint32(offset);\n    const stringData = new Uint8Array(length);\n    stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n    return this.#decoder.decode(stringData);\n  }\n\n  get fallbackName() {\n    return this.#readString(0);\n  }\n\n  get loadedName() {\n    return this.#readString(1);\n  }\n\n  get mimetype() {\n    return this.#readString(2);\n  }\n\n  get name() {\n    return this.#readString(3);\n  }\n\n  get data() {\n    let offset = FontInfo.#OFFSET_STRINGS;\n    const stringsLength = this.#view.getUint32(offset);\n    offset += 4 + stringsLength;\n    const systemFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + systemFontInfoLength;\n    const cssFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + cssFontInfoLength;\n    const length = this.#view.getUint32(offset);\n    if (length === 0) {\n      return undefined;\n    }\n    return new Uint8Array(this.#buffer, offset + 4, length);\n  }\n\n  clearData() {\n    let offset = FontInfo.#OFFSET_STRINGS;\n    const stringsLength = this.#view.getUint32(offset);\n    offset += 4 + stringsLength;\n    const systemFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + systemFontInfoLength;\n    const cssFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + cssFontInfoLength;\n    const length = this.#view.getUint32(offset);\n    const data = new Uint8Array(this.#buffer, offset + 4, length);\n    data.fill(0);\n    this.#view.setUint32(offset, 0);\n    // this.#buffer.resize(offset);\n  }\n\n  get cssFontInfo() {\n    let offset = FontInfo.#OFFSET_STRINGS;\n    const stringsLength = this.#view.getUint32(offset);\n    offset += 4 + stringsLength;\n    const systemFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + systemFontInfoLength;\n    const cssFontInfoLength = this.#view.getUint32(offset);\n    if (cssFontInfoLength === 0) {\n      return null;\n    }\n    const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n    cssFontInfoData.set(\n      new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength)\n    );\n    return new CssFontInfo(cssFontInfoData.buffer);\n  }\n\n  get systemFontInfo() {\n    let offset = FontInfo.#OFFSET_STRINGS;\n    const stringsLength = this.#view.getUint32(offset);\n    offset += 4 + stringsLength;\n    const systemFontInfoLength = this.#view.getUint32(offset);\n    if (systemFontInfoLength === 0) {\n      return null;\n    }\n    const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n    systemFontInfoData.set(\n      new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength)\n    );\n    return new SystemFontInfo(systemFontInfoData.buffer);\n  }\n\n  static write(font) {\n    const systemFontInfoBuffer = font.systemFontInfo\n      ? SystemFontInfo.write(font.systemFontInfo)\n      : null;\n    const cssFontInfoBuffer = font.cssFontInfo\n      ? CssFontInfo.write(font.cssFontInfo)\n      : null;\n\n    const encoder = new TextEncoder();\n    const encodedStrings = {};\n    let stringsLength = 0;\n    for (const prop of FontInfo.strings) {\n      encodedStrings[prop] = encoder.encode(font[prop]);\n      stringsLength += 4 + encodedStrings[prop].length;\n    }\n\n    const lengthEstimate =\n      FontInfo.#OFFSET_STRINGS +\n      4 +\n      stringsLength +\n      4 +\n      (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) +\n      4 +\n      (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) +\n      4 +\n      (font.data ? font.data.length : 0);\n\n    const buffer = new ArrayBuffer(lengthEstimate);\n    const data = new Uint8Array(buffer);\n    const view = new DataView(buffer);\n    let offset = 0;\n\n    const numBools = FontInfo.bools.length;\n    let boolByte = 0,\n      boolBit = 0;\n    for (let i = 0; i < numBools; i++) {\n      const value = font[FontInfo.bools[i]];\n      // eslint-disable-next-line no-nested-ternary\n      const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n      boolByte |= bits << boolBit;\n      boolBit += 2;\n      if (boolBit === 8 || i === numBools - 1) {\n        view.setUint8(offset++, boolByte);\n        boolByte = 0;\n        boolBit = 0;\n      }\n    }\n    assert(\n      offset === FontInfo.#OFFSET_NUMBERS,\n      \"FontInfo.write: Boolean properties offset mismatch\"\n    );\n\n    for (const prop of FontInfo.numbers) {\n      view.setFloat64(offset, font[prop]);\n      offset += 8;\n    }\n    assert(\n      offset === FontInfo.#OFFSET_BBOX,\n      \"FontInfo.write: Number properties offset mismatch\"\n    );\n\n    if (font.bbox) {\n      view.setUint8(offset++, 4);\n      for (const coord of font.bbox) {\n        view.setInt16(offset, coord, true);\n        offset += 2;\n      }\n    } else {\n      view.setUint8(offset++, 0);\n      offset += 2 * 4; // TODO: optimize this padding away\n    }\n\n    assert(\n      offset === FontInfo.#OFFSET_FONT_MATRIX,\n      \"FontInfo.write: BBox properties offset mismatch\"\n    );\n\n    if (font.fontMatrix) {\n      view.setUint8(offset++, 6);\n      for (const point of font.fontMatrix) {\n        view.setFloat64(offset, point, true);\n        offset += 8;\n      }\n    } else {\n      view.setUint8(offset++, 0);\n      offset += 8 * 6; // TODO: optimize this padding away\n    }\n\n    assert(\n      offset === FontInfo.#OFFSET_DEFAULT_VMETRICS,\n      \"FontInfo.write: FontMatrix properties offset mismatch\"\n    );\n\n    if (font.defaultVMetrics) {\n      view.setUint8(offset++, 1);\n      for (const metric of font.defaultVMetrics) {\n        view.setInt16(offset, metric, true);\n        offset += 2;\n      }\n    } else {\n      view.setUint8(offset++, 0);\n      offset += 3 * 2; // TODO: optimize this padding away\n    }\n\n    assert(\n      offset === FontInfo.#OFFSET_STRINGS,\n      \"FontInfo.write: DefaultVMetrics properties offset mismatch\"\n    );\n\n    view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n    offset += 4;\n    for (const prop of FontInfo.strings) {\n      const encoded = encodedStrings[prop];\n      const length = encoded.length;\n      view.setUint32(offset, length);\n      data.set(encoded, offset + 4);\n      offset += 4 + length;\n    }\n    view.setUint32(\n      FontInfo.#OFFSET_STRINGS,\n      offset - FontInfo.#OFFSET_STRINGS - 4\n    );\n\n    if (!systemFontInfoBuffer) {\n      view.setUint32(offset, 0);\n      offset += 4;\n    } else {\n      const length = systemFontInfoBuffer.byteLength;\n      view.setUint32(offset, length);\n      assert(\n        offset + 4 + length <= buffer.byteLength,\n        \"FontInfo.write: Buffer overflow at systemFontInfo\"\n      );\n      data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n      offset += 4 + length;\n    }\n\n    if (!cssFontInfoBuffer) {\n      view.setUint32(offset, 0);\n      offset += 4;\n    } else {\n      const length = cssFontInfoBuffer.byteLength;\n      view.setUint32(offset, length);\n      assert(\n        offset + 4 + length <= buffer.byteLength,\n        \"FontInfo.write: Buffer overflow at cssFontInfo\"\n      );\n      data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n      offset += 4 + length;\n    }\n\n    if (font.data === undefined) {\n      view.setUint32(offset, 0);\n      offset += 4;\n    } else {\n      view.setUint32(offset, font.data.length);\n      data.set(font.data, offset + 4);\n      offset += 4 + font.data.length;\n    }\n\n    assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n    return buffer.transferToFixedLength(offset);\n  }\n}\n\nclass PatternInfo {\n  static #KIND = 0; // 1=axial, 2=radial, 3=mesh\n\n  static #HAS_BBOX = 1; // 0/1\n\n  static #HAS_BACKGROUND = 2; // 0/1 (background for mesh patterns)\n\n  static #SHADING_TYPE = 3; // shadingType (only for mesh patterns)\n\n  static #N_COORD = 4; // number of coordinate pairs\n\n  static #N_COLOR = 8; // number of rgb triplets\n\n  static #N_STOP = 12; // number of gradient stops\n\n  static #N_FIGURES = 16; // number of figures\n\n  constructor(buffer) {\n    this.buffer = buffer;\n    this.view = new DataView(buffer);\n    this.data = new Uint8Array(buffer);\n  }\n\n  static write(ir) {\n    let kind,\n      bbox = null,\n      coords = [],\n      colors = [],\n      colorStops = [],\n      figures = [],\n      shadingType = null, // only needed for mesh patterns\n      background = null; // background for mesh patterns\n\n    switch (ir[0]) {\n      case \"RadialAxial\":\n        kind = ir[1] === \"axial\" ? 1 : 2;\n        bbox = ir[2];\n        colorStops = ir[3];\n        if (kind === 1) {\n          coords.push(...ir[4], ...ir[5]);\n        } else {\n          coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]);\n        }\n        break;\n      case \"Mesh\":\n        kind = 3;\n        shadingType = ir[1];\n        coords = ir[2];\n        colors = ir[3];\n        figures = ir[4] || [];\n        bbox = ir[6];\n        background = ir[7];\n        break;\n      default:\n        throw new Error(`Unsupported pattern type: ${ir[0]}`);\n    }\n\n    const nCoord = Math.floor(coords.length / 2);\n    const nColor = Math.floor(colors.length / 3);\n    const nStop = colorStops.length;\n    const nFigures = figures.length;\n\n    let figuresSize = 0;\n    for (const figure of figures) {\n      figuresSize += 1;\n      figuresSize = Math.ceil(figuresSize / 4) * 4; // Ensure 4-byte alignment\n      figuresSize += 4 + figure.coords.length * 4;\n      figuresSize += 4 + figure.colors.length * 4;\n      if (figure.verticesPerRow !== undefined) {\n        figuresSize += 4;\n      }\n    }\n\n    const byteLen =\n      20 +\n      nCoord * 8 +\n      nColor * 3 +\n      nStop * 8 +\n      (bbox ? 16 : 0) +\n      (background ? 3 : 0) +\n      figuresSize;\n    const buffer = new ArrayBuffer(byteLen);\n    const dataView = new DataView(buffer);\n    const u8data = new Uint8Array(buffer);\n\n    dataView.setUint8(PatternInfo.#KIND, kind);\n    dataView.setUint8(PatternInfo.#HAS_BBOX, bbox ? 1 : 0);\n    dataView.setUint8(PatternInfo.#HAS_BACKGROUND, background ? 1 : 0);\n    dataView.setUint8(PatternInfo.#SHADING_TYPE, shadingType); // Only for mesh pattern, null otherwise\n    dataView.setUint32(PatternInfo.#N_COORD, nCoord, true);\n    dataView.setUint32(PatternInfo.#N_COLOR, nColor, true);\n    dataView.setUint32(PatternInfo.#N_STOP, nStop, true);\n    dataView.setUint32(PatternInfo.#N_FIGURES, nFigures, true);\n\n    let offset = 20;\n    const coordsView = new Float32Array(buffer, offset, nCoord * 2);\n    coordsView.set(coords);\n    offset += nCoord * 8;\n\n    u8data.set(colors, offset);\n    offset += nColor * 3;\n\n    for (const [pos, hex] of colorStops) {\n      dataView.setFloat32(offset, pos, true);\n      offset += 4;\n      dataView.setUint32(offset, parseInt(hex.slice(1), 16), true);\n      offset += 4;\n    }\n    if (bbox) {\n      for (const v of bbox) {\n        dataView.setFloat32(offset, v, true);\n        offset += 4;\n      }\n    }\n\n    if (background) {\n      u8data.set(background, offset);\n      offset += 3;\n    }\n\n    for (let i = 0; i < figures.length; i++) {\n      const figure = figures[i];\n      dataView.setUint8(offset, figure.type);\n      offset += 1;\n      // Ensure 4-byte alignment\n      offset = Math.ceil(offset / 4) * 4;\n      dataView.setUint32(offset, figure.coords.length, true);\n      offset += 4;\n      const figureCoordsView = new Int32Array(\n        buffer,\n        offset,\n        figure.coords.length\n      );\n      figureCoordsView.set(figure.coords);\n      offset += figure.coords.length * 4;\n      dataView.setUint32(offset, figure.colors.length, true);\n      offset += 4;\n      const colorsView = new Int32Array(buffer, offset, figure.colors.length);\n      colorsView.set(figure.colors);\n      offset += figure.colors.length * 4;\n\n      if (figure.verticesPerRow !== undefined) {\n        dataView.setUint32(offset, figure.verticesPerRow, true);\n        offset += 4;\n      }\n    }\n    return buffer;\n  }\n\n  getIR() {\n    const dataView = this.view;\n    const kind = this.data[PatternInfo.#KIND];\n    const hasBBox = !!this.data[PatternInfo.#HAS_BBOX];\n    const hasBackground = !!this.data[PatternInfo.#HAS_BACKGROUND];\n    const nCoord = dataView.getUint32(PatternInfo.#N_COORD, true);\n    const nColor = dataView.getUint32(PatternInfo.#N_COLOR, true);\n    const nStop = dataView.getUint32(PatternInfo.#N_STOP, true);\n    const nFigures = dataView.getUint32(PatternInfo.#N_FIGURES, true);\n\n    let offset = 20;\n    const coords = new Float32Array(this.buffer, offset, nCoord * 2);\n    offset += nCoord * 8;\n    const colors = new Uint8Array(this.buffer, offset, nColor * 3);\n    offset += nColor * 3;\n    const stops = [];\n    for (let i = 0; i < nStop; ++i) {\n      const p = dataView.getFloat32(offset, true);\n      offset += 4;\n      const rgb = dataView.getUint32(offset, true);\n      offset += 4;\n      stops.push([p, `#${rgb.toString(16).padStart(6, \"0\")}`]);\n    }\n    let bbox = null;\n    if (hasBBox) {\n      bbox = [];\n      for (let i = 0; i < 4; ++i) {\n        bbox.push(dataView.getFloat32(offset, true));\n        offset += 4;\n      }\n    }\n\n    let background = null;\n    if (hasBackground) {\n      background = new Uint8Array(this.buffer, offset, 3);\n      offset += 3;\n    }\n\n    const figures = [];\n    for (let i = 0; i < nFigures; ++i) {\n      const type = dataView.getUint8(offset);\n      offset += 1;\n      // Ensure 4-byte alignment\n      offset = Math.ceil(offset / 4) * 4;\n\n      const coordsLength = dataView.getUint32(offset, true);\n      offset += 4;\n      const figureCoords = new Int32Array(this.buffer, offset, coordsLength);\n      offset += coordsLength * 4;\n\n      const colorsLength = dataView.getUint32(offset, true);\n      offset += 4;\n      const figureColors = new Int32Array(this.buffer, offset, colorsLength);\n      offset += colorsLength * 4;\n\n      const figure = {\n        type,\n        coords: figureCoords,\n        colors: figureColors,\n      };\n\n      if (type === MeshFigureType.LATTICE) {\n        figure.verticesPerRow = dataView.getUint32(offset, true);\n        offset += 4;\n      }\n\n      figures.push(figure);\n    }\n\n    if (kind === 1) {\n      // axial\n      return [\n        \"RadialAxial\",\n        \"axial\",\n        bbox,\n        stops,\n        Array.from(coords.slice(0, 2)),\n        Array.from(coords.slice(2, 4)),\n        null,\n        null,\n      ];\n    }\n    if (kind === 2) {\n      return [\n        \"RadialAxial\",\n        \"radial\",\n        bbox,\n        stops,\n        [coords[0], coords[1]],\n        [coords[3], coords[4]],\n        coords[2],\n        coords[5],\n      ];\n    }\n    if (kind === 3) {\n      const shadingType = this.data[PatternInfo.#SHADING_TYPE];\n      let bounds = null;\n      if (coords.length > 0) {\n        let minX = coords[0],\n          maxX = coords[0];\n        let minY = coords[1],\n          maxY = coords[1];\n        for (let i = 0; i < coords.length; i += 2) {\n          const x = coords[i],\n            y = coords[i + 1];\n          minX = minX > x ? x : minX;\n          minY = minY > y ? y : minY;\n          maxX = maxX < x ? x : maxX;\n          maxY = maxY < y ? y : maxY;\n        }\n        bounds = [minX, minY, maxX, maxY];\n      }\n      return [\n        \"Mesh\",\n        shadingType,\n        coords,\n        colors,\n        figures,\n        bounds,\n        bbox,\n        background,\n      ];\n    }\n    throw new Error(`Unsupported pattern kind: ${kind}`);\n  }\n}\n\nclass FontPathInfo {\n  static write(path) {\n    let data;\n    let buffer;\n    if (\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      FeatureTest.isFloat16ArraySupported\n    ) {\n      buffer = new ArrayBuffer(path.length * 2);\n      data = new Float16Array(buffer);\n    } else {\n      buffer = new ArrayBuffer(path.length * 4);\n      data = new Float32Array(buffer);\n    }\n    data.set(path);\n    return buffer;\n  }\n\n  #buffer;\n\n  constructor(buffer) {\n    this.#buffer = buffer;\n  }\n\n  get path() {\n    if (\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      FeatureTest.isFloat16ArraySupported\n    ) {\n      return new Float16Array(this.#buffer);\n    }\n    return new Float32Array(this.#buffer);\n  }\n}\n\nexport { CssFontInfo, FontInfo, FontPathInfo, PatternInfo, SystemFontInfo };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  _isValidExplicitDest,\n  isNodeJS,\n  stringToBytes,\n  warn,\n} from \"../shared/util.js\";\n\nfunction getUrlProp(val) {\n  if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n    return null; // The 'url' is unused with `PDFDataRangeTransport`.\n  }\n  if (val instanceof URL) {\n    return val.href;\n  }\n  if (typeof val === \"string\") {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"GENERIC\") &&\n      isNodeJS\n    ) {\n      return val; // Use the url as-is in Node.js environments.\n    }\n\n    // The full path is required in the 'url' field.\n    const url = URL.parse(val, window.location);\n    if (url) {\n      return url.href;\n    }\n  }\n  throw new Error(\n    \"Invalid PDF url data: \" +\n      \"either string or URL-object is expected in the url property.\"\n  );\n}\n\nfunction getDataProp(val) {\n  // Converting string or array-like data to Uint8Array.\n  if (\n    typeof PDFJSDev !== \"undefined\" &&\n    PDFJSDev.test(\"GENERIC\") &&\n    isNodeJS &&\n    typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n    val instanceof Buffer // eslint-disable-line no-undef\n  ) {\n    throw new Error(\n      \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n    );\n  }\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n    // Use the data as-is when it's already a Uint8Array that completely\n    // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n    // issues when transferring it to the worker-thread.\n    return val;\n  }\n  if (typeof val === \"string\") {\n    return stringToBytes(val);\n  }\n  if (\n    val instanceof ArrayBuffer ||\n    ArrayBuffer.isView(val) ||\n    (typeof val === \"object\" && !isNaN(val?.length))\n  ) {\n    return new Uint8Array(val);\n  }\n  throw new Error(\n    \"Invalid PDF binary data: either TypedArray, \" +\n      \"string, or array-like object is expected in the data property.\"\n  );\n}\n\nfunction getFactoryUrlProp(val) {\n  if (typeof val !== \"string\") {\n    return null;\n  }\n  if (val.endsWith(\"/\")) {\n    return val;\n  }\n  throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\n\nconst isRefProxy = v =>\n  typeof v === \"object\" &&\n  Number.isInteger(v?.num) &&\n  v.num >= 0 &&\n  Number.isInteger(v?.gen) &&\n  v.gen >= 0;\n\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\n\nconst isValidExplicitDest = _isValidExplicitDest.bind(\n  null,\n  /* validRef = */ isRefProxy,\n  /* validName = */ isNameProxy\n);\n\nclass LoopbackPort {\n  #listeners = new Map();\n\n  #deferred = Promise.resolve();\n\n  postMessage(obj, transfer) {\n    const event = {\n      data: structuredClone(obj, transfer ? { transfer } : null),\n    };\n\n    this.#deferred.then(() => {\n      for (const [listener] of this.#listeners) {\n        listener.call(this, event);\n      }\n    });\n  }\n\n  addEventListener(name, listener, options = null) {\n    let rmAbort = null;\n    if (options?.signal instanceof AbortSignal) {\n      const { signal } = options;\n      if (signal.aborted) {\n        warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n        return;\n      }\n      const onAbort = () => this.removeEventListener(name, listener);\n      rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n\n      signal.addEventListener(\"abort\", onAbort);\n    }\n    this.#listeners.set(listener, rmAbort);\n  }\n\n  removeEventListener(name, listener) {\n    const rmAbort = this.#listeners.get(listener);\n    rmAbort?.();\n\n    this.#listeners.delete(listener);\n  }\n\n  terminate() {\n    for (const [, rmAbort] of this.#listeners) {\n      rmAbort?.();\n    }\n    this.#listeners.clear();\n  }\n}\n\nexport {\n  getDataProp,\n  getFactoryUrlProp,\n  getUrlProp,\n  isNameProxy,\n  isRefProxy,\n  isValidExplicitDest,\n  LoopbackPort,\n};\n", "/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  InvalidPDFException,\n  PasswordException,\n  ResponseException,\n  UnknownErrorException,\n  unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction onFn() {}\n\nfunction wrapReason(ex) {\n  if (\n    ex instanceof AbortException ||\n    ex instanceof InvalidPDFException ||\n    ex instanceof PasswordException ||\n    ex instanceof ResponseException ||\n    ex instanceof UnknownErrorException\n  ) {\n    // Avoid re-creating the exception when its type is already correct.\n    return ex;\n  }\n\n  if (!(ex instanceof Error || (typeof ex === \"object\" && ex !== null))) {\n    unreachable(\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  }\n  switch (ex.name) {\n    case \"AbortException\":\n      return new AbortException(ex.message);\n    case \"InvalidPDFException\":\n      return new InvalidPDFException(ex.message);\n    case \"PasswordException\":\n      return new PasswordException(ex.message, ex.code);\n    case \"ResponseException\":\n      return new ResponseException(ex.message, ex.status, ex.missing);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(ex.message, ex.details);\n  }\n  return new UnknownErrorException(ex.message, ex.toString());\n}\n\nclass MessageHandler {\n  #messageAC = new AbortController();\n\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n      signal: this.#messageAC.signal,\n    });\n  }\n\n  #onMessage({ data }) {\n    if (data.targetName !== this.sourceName) {\n      return;\n    }\n    if (data.stream) {\n      this.#processStreamMessage(data);\n      return;\n    }\n    if (data.callback) {\n      const callbackId = data.callbackId;\n      const capability = this.callbackCapabilities[callbackId];\n      if (!capability) {\n        throw new Error(`Cannot resolve callback ${callbackId}`);\n      }\n      delete this.callbackCapabilities[callbackId];\n\n      if (data.callback === CallbackKind.DATA) {\n        capability.resolve(data.data);\n      } else if (data.callback === CallbackKind.ERROR) {\n        capability.reject(wrapReason(data.reason));\n      } else {\n        throw new Error(\"Unexpected callback case\");\n      }\n      return;\n    }\n    const action = this.actionHandler[data.action];\n    if (!action) {\n      throw new Error(`Unknown action from worker: ${data.action}`);\n    }\n    if (data.callbackId) {\n      const sourceName = this.sourceName,\n        targetName = data.sourceName,\n        comObj = this.comObj;\n\n      Promise.try(action, data.data).then(\n        function (result) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            callback: CallbackKind.DATA,\n            callbackId: data.callbackId,\n            data: result,\n          });\n        },\n        function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            callback: CallbackKind.ERROR,\n            callbackId: data.callbackId,\n            reason: wrapReason(reason),\n          });\n        }\n      );\n      return;\n    }\n    if (data.streamId) {\n      this.#createStreamSink(data);\n      return;\n    }\n    action(data.data);\n  }\n\n  on(actionName, handler) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this.comObj.postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = Promise.withResolvers();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = Promise.withResolvers();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          comObj.postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = Promise.withResolvers();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = Promise.withResolvers();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\n\n  #createStreamSink(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const self = this,\n      action = this.actionHandler[data.action];\n\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = Promise.withResolvers();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: Promise.withResolvers(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n\n    Promise.try(action, data.data, streamSink).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  #processStreamMessage(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n      streamSink = this.streamSinks[streamId];\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true,\n          });\n          break;\n        }\n        // Pull increases the desiredSize property of sink, so when it changes\n        // from negative to positive, set ready property as resolved promise.\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        streamSink.desiredSize = data.desiredSize;\n\n        Promise.try(streamSink.onPull || onFn).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n        const dataReason = wrapReason(data.reason);\n\n        Promise.try(streamSink.onCancel || onFn, dataReason).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        streamSink.sinkCapability.reject(dataReason);\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  async #deleteStreamController(streamController, streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled([\n      streamController.startCall?.promise,\n      streamController.pullCall?.promise,\n      streamController.cancelCall?.promise,\n    ]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.#messageAC?.abort();\n    this.#messageAC = null;\n  }\n}\n\nexport { MessageHandler, wrapReason };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n  #enableHWA = false;\n\n  constructor({ enableHWA = false }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseCanvasFactory\n    ) {\n      unreachable(\"Cannot initialize BaseCanvasFactory.\");\n    }\n    this.#enableHWA = enableHWA;\n  }\n\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    const canvas = this._createCanvas(width, height);\n    return {\n      canvas,\n      context: canvas.getContext(\"2d\", {\n        willReadFrequently: !this.#enableHWA,\n      }),\n    };\n  }\n\n  reset(canvasAndContext, width, height) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    canvasAndContext.canvas.width = width;\n    canvasAndContext.canvas.height = height;\n  }\n\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    // Zeroing the width and height cause Firefox to release graphics\n    // resources immediately, which can greatly reduce memory consumption.\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    unreachable(\"Abstract method `_createCanvas` called.\");\n  }\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n  constructor({ ownerDocument = globalThis.document, enableHWA = false }) {\n    super({ enableHWA });\n    this._document = ownerDocument;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n}\n\nexport { BaseCanvasFactory, DOMCanvasFactory };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes, unreachable } from \"../shared/util.js\";\nimport { fetchData } from \"./display_utils.js\";\n\nclass BaseCMapReaderFactory {\n  constructor({ baseUrl = null, isCompressed = true }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseCMapReaderFactory\n    ) {\n      unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n    }\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n\n  async fetch({ name }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        \"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\"\n      );\n    }\n    if (!name) {\n      throw new Error(\"CMap name must be specified.\");\n    }\n    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n\n    return this._fetch(url)\n      .then(cMapData => ({ cMapData, isCompressed: this.isCompressed }))\n      .catch(reason => {\n        throw new Error(\n          `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n        );\n      });\n  }\n\n  /**\n   * @ignore\n   * @returns {Promise<Uint8Array>}\n   */\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    const data = await fetchData(\n      url,\n      /* type = */ this.isCompressed ? \"arraybuffer\" : \"text\"\n    );\n    return data instanceof ArrayBuffer\n      ? new Uint8Array(data)\n      : stringToBytes(data);\n  }\n}\n\nexport { BaseCMapReaderFactory, DOMCMapReaderFactory };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getRGB, isDataScheme, SVG_NS } from \"./display_utils.js\";\nimport { unreachable, updateUrlHash, Util, warn } from \"../shared/util.js\";\n\nclass BaseFilterFactory {\n  constructor() {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseFilterFactory\n    ) {\n      unreachable(\"Cannot initialize BaseFilterFactory.\");\n    }\n  }\n\n  addFilter(maps) {\n    return \"none\";\n  }\n\n  addHCMFilter(fgColor, bgColor) {\n    return \"none\";\n  }\n\n  addAlphaFilter(map) {\n    return \"none\";\n  }\n\n  addLuminosityFilter(map) {\n    return \"none\";\n  }\n\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    return \"none\";\n  }\n\n  destroy(keepHCM = false) {}\n}\n\n/**\n * FilterFactory aims to create some SVG filters we can use when drawing an\n * image (or whatever) on a canvas.\n * Filters aren't applied with ctx.putImageData because it just overwrites the\n * underlying pixels.\n * With these filters, it's possible for example to apply some transfer maps on\n * an image without the need to apply them on the pixel arrays: the renderer\n * does the magic for us.\n */\nclass DOMFilterFactory extends BaseFilterFactory {\n  #baseUrl;\n\n  #_cache;\n\n  #_defs;\n\n  #docId;\n\n  #document;\n\n  #_hcmCache;\n\n  #id = 0;\n\n  constructor({ docId, ownerDocument = globalThis.document }) {\n    super();\n    this.#docId = docId;\n    this.#document = ownerDocument;\n  }\n\n  get #cache() {\n    return (this.#_cache ||= new Map());\n  }\n\n  get #hcmCache() {\n    return (this.#_hcmCache ||= new Map());\n  }\n\n  get #defs() {\n    if (!this.#_defs) {\n      const div = this.#document.createElement(\"div\");\n      const { style } = div;\n      style.visibility = \"hidden\";\n      style.contain = \"strict\";\n      style.width = style.height = 0;\n      style.position = \"absolute\";\n      style.top = style.left = 0;\n      style.zIndex = -1;\n\n      const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n      svg.setAttribute(\"width\", 0);\n      svg.setAttribute(\"height\", 0);\n      this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n      div.append(svg);\n      svg.append(this.#_defs);\n      this.#document.body.append(div);\n    }\n    return this.#_defs;\n  }\n\n  #createTables(maps) {\n    if (maps.length === 1) {\n      const mapR = maps[0];\n      const buffer = new Array(256);\n      for (let i = 0; i < 256; i++) {\n        buffer[i] = mapR[i] / 255;\n      }\n\n      const table = buffer.join(\",\");\n      return [table, table, table];\n    }\n\n    const [mapR, mapG, mapB] = maps;\n    const bufferR = new Array(256);\n    const bufferG = new Array(256);\n    const bufferB = new Array(256);\n    for (let i = 0; i < 256; i++) {\n      bufferR[i] = mapR[i] / 255;\n      bufferG[i] = mapG[i] / 255;\n      bufferB[i] = mapB[i] / 255;\n    }\n    return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n  }\n\n  #createUrl(id) {\n    if (this.#baseUrl === undefined) {\n      // Unless a `<base>`-element is present a relative URL should work.\n      this.#baseUrl = \"\";\n\n      const url = this.#document.URL;\n      if (url !== this.#document.baseURI) {\n        if (isDataScheme(url)) {\n          warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n        } else {\n          this.#baseUrl = updateUrlHash(url, \"\");\n        }\n      }\n    }\n    return `url(${this.#baseUrl}#${id})`;\n  }\n\n  addFilter(maps) {\n    if (!maps) {\n      return \"none\";\n    }\n\n    // When a page is zoomed the page is re-drawn but the maps are likely\n    // the same.\n    let value = this.#cache.get(maps);\n    if (value) {\n      return value;\n    }\n\n    const [tableR, tableG, tableB] = this.#createTables(maps);\n    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(maps, value);\n      return value;\n    }\n\n    // We create a SVG filter: feComponentTransferElement\n    //  https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\n\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(maps, url);\n    this.#cache.set(key, url);\n\n    const filter = this.#createFilter(id);\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n\n    return url;\n  }\n\n  addHCMFilter(fgColor, bgColor) {\n    const key = `${fgColor}-${bgColor}`;\n    const filterName = \"base\";\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null,\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n\n    const fgRGB = this.#getRGB(fgColor);\n    fgColor = Util.makeHexColor(...fgRGB);\n    const bgRGB = this.#getRGB(bgColor);\n    bgColor = Util.makeHexColor(...bgRGB);\n    this.#defs.style.color = \"\";\n\n    if (\n      (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n      fgColor === bgColor\n    ) {\n      return info.url;\n    }\n\n    // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n    //\n    // Relative luminance:\n    // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n    //\n    // We compute the rounded luminance of the default background color.\n    // Then for every color in the pdf, if its rounded luminance is the\n    // same as the background one then it's replaced by the new\n    // background color else by the foreground one.\n    const map = new Array(256);\n    for (let i = 0; i <= 255; i++) {\n      const x = i / 255;\n      map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n    }\n    const table = map.join(\",\");\n\n    const id = `g_${this.#docId}_hcm_filter`;\n    const filter = (info.filter = this.#createFilter(id));\n    this.#addTransferMapConversion(table, table, table, filter);\n    this.#addGrayConversion(filter);\n\n    const getSteps = (c, n) => {\n      const start = fgRGB[c] / 255;\n      const end = bgRGB[c] / 255;\n      const arr = new Array(n + 1);\n      for (let i = 0; i <= n; i++) {\n        arr[i] = start + (i / n) * (end - start);\n      }\n      return arr.join(\",\");\n    };\n    this.#addTransferMapConversion(\n      getSteps(0, 5),\n      getSteps(1, 5),\n      getSteps(2, 5),\n      filter\n    );\n\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n\n  addAlphaFilter(map) {\n    // When a page is zoomed the page is re-drawn but the maps are likely\n    // the same.\n    let value = this.#cache.get(map);\n    if (value) {\n      return value;\n    }\n\n    const [tableA] = this.#createTables([map]);\n    const key = `alpha_${tableA}`;\n\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n\n    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n\n    const filter = this.#createFilter(id);\n    this.#addTransferMapAlphaConversion(tableA, filter);\n\n    return url;\n  }\n\n  addLuminosityFilter(map) {\n    // When a page is zoomed the page is re-drawn but the maps are likely\n    // the same.\n    let value = this.#cache.get(map || \"luminosity\");\n    if (value) {\n      return value;\n    }\n\n    let tableA, key;\n    if (map) {\n      [tableA] = this.#createTables([map]);\n      key = `luminosity_${tableA}`;\n    } else {\n      key = \"luminosity\";\n    }\n\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n\n    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n\n    const filter = this.#createFilter(id);\n    this.#addLuminosityConversion(filter);\n    if (map) {\n      this.#addTransferMapAlphaConversion(tableA, filter);\n    }\n\n    return url;\n  }\n\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null,\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n    let fgGray = Math.round(\n      0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\n    );\n    let bgGray = Math.round(\n      0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\n    );\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\n      this.#getRGB.bind(this)\n    );\n    if (bgGray < fgGray) {\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [\n        bgGray,\n        fgGray,\n        newBgRGB,\n        newFgRGB,\n      ];\n    }\n    this.#defs.style.color = \"\";\n\n    // Now we can create the filters to highlight some canvas parts.\n    // The colors in the pdf will almost be Canvas and CanvasText, hence we\n    // want to filter them to finally get Highlight and HighlightText.\n    // Since we're in HCM the background color and the foreground color should\n    // be really different when converted to grayscale (if they're not then it\n    // means that we've a poor contrast). Once the canvas colors are converted\n    // to grayscale we can easily map them on their new colors.\n    // The grayscale step is important because if we've something like:\n    //   fgColor = #FF....\n    //   bgColor = #FF....\n    //   then we are enable to map the red component on the new red components\n    //   which can be different.\n\n    const getSteps = (fg, bg, n) => {\n      const arr = new Array(256);\n      const step = (bgGray - fgGray) / n;\n      const newStart = fg / 255;\n      const newStep = (bg - fg) / (255 * n);\n      let prev = 0;\n      for (let i = 0; i <= n; i++) {\n        const k = Math.round(fgGray + i * step);\n        const value = newStart + i * newStep;\n        for (let j = prev; j <= k; j++) {\n          arr[j] = value;\n        }\n        prev = k + 1;\n      }\n      for (let i = prev; i < 256; i++) {\n        arr[i] = arr[prev - 1];\n      }\n      return arr.join(\",\");\n    };\n\n    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n    const filter = (info.filter = this.#createFilter(id));\n\n    this.#addGrayConversion(filter);\n    this.#addTransferMapConversion(\n      getSteps(newFgRGB[0], newBgRGB[0], 5),\n      getSteps(newFgRGB[1], newBgRGB[1], 5),\n      getSteps(newFgRGB[2], newBgRGB[2], 5),\n      filter\n    );\n\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n\n  destroy(keepHCM = false) {\n    if (keepHCM && this.#_hcmCache?.size) {\n      return;\n    }\n    this.#_defs?.parentNode.parentNode.remove();\n    this.#_defs = null;\n\n    this.#_cache?.clear();\n    this.#_cache = null;\n\n    this.#_hcmCache?.clear();\n    this.#_hcmCache = null;\n\n    this.#id = 0;\n  }\n\n  #addLuminosityConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(\n      SVG_NS,\n      \"feColorMatrix\"\n    );\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\n      \"values\",\n      \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\"\n    );\n    filter.append(feColorMatrix);\n  }\n\n  #addGrayConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(\n      SVG_NS,\n      \"feColorMatrix\"\n    );\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\n      \"values\",\n      \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\"\n    );\n    filter.append(feColorMatrix);\n  }\n\n  #createFilter(id) {\n    const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n    filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n    filter.setAttribute(\"id\", id);\n    this.#defs.append(filter);\n\n    return filter;\n  }\n\n  #appendFeFunc(feComponentTransfer, func, table) {\n    const feFunc = this.#document.createElementNS(SVG_NS, func);\n    feFunc.setAttribute(\"type\", \"discrete\");\n    feFunc.setAttribute(\"tableValues\", table);\n    feComponentTransfer.append(feFunc);\n  }\n\n  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(\n      SVG_NS,\n      \"feComponentTransfer\"\n    );\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n  }\n\n  #addTransferMapAlphaConversion(aTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(\n      SVG_NS,\n      \"feComponentTransfer\"\n    );\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n  }\n\n  #getRGB(color) {\n    this.#defs.style.color = color;\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n  }\n}\n\nexport { BaseFilterFactory, DOMFilterFactory };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { fetchData } from \"./display_utils.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nclass BaseStandardFontDataFactory {\n  constructor({ baseUrl = null }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseStandardFontDataFactory\n    ) {\n      unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n    }\n    this.baseUrl = baseUrl;\n  }\n\n  async fetch({ filename }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        \"Ensure that the `standardFontDataUrl` API parameter is provided.\"\n      );\n    }\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n\n    return this._fetch(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n\n  /**\n   * @ignore\n   * @returns {Promise<Uint8Array>}\n   */\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    const data = await fetchData(url, /* type = */ \"arraybuffer\");\n    return new Uint8Array(data);\n  }\n}\n\nexport { BaseStandardFontDataFactory, DOMStandardFontDataFactory };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { fetchData } from \"./display_utils.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nclass BaseWasmFactory {\n  constructor({ baseUrl = null }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseWasmFactory\n    ) {\n      unreachable(\"Cannot initialize BaseWasmFactory.\");\n    }\n    this.baseUrl = baseUrl;\n  }\n\n  async fetch({ filename }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n    }\n    if (!filename) {\n      throw new Error(\"Wasm filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n\n    return this._fetch(url).catch(reason => {\n      throw new Error(`Unable to load wasm data at: ${url}`);\n    });\n  }\n\n  /**\n   * @ignore\n   * @returns {Promise<Uint8Array>}\n   */\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\n\nclass DOMWasmFactory extends BaseWasmFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    const data = await fetchData(url, /* type = */ \"arraybuffer\");\n    return new Uint8Array(data);\n  }\n}\n\nexport { BaseWasmFactory, DOMWasmFactory };\n", "/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\nimport { isNodeJS, warn } from \"../shared/util.js\";\nimport { BaseCanvasFactory } from \"./canvas_factory.js\";\nimport { BaseCMapReaderFactory } from \"./cmap_reader_factory.js\";\nimport { BaseFilterFactory } from \"./filter_factory.js\";\nimport { BaseStandardFontDataFactory } from \"./standard_fontdata_factory.js\";\nimport { BaseWasmFactory } from \"./wasm_factory.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nif (isNodeJS) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) {\n    warn(\"Please use the `legacy` build in Node.js environments.\");\n  } else {\n    let canvas;\n    try {\n      const require = process\n        .getBuiltinModule(\"module\")\n        .createRequire(import.meta.url);\n\n      try {\n        canvas = require(\"@napi-rs/canvas\");\n      } catch (ex) {\n        warn(`Cannot load \"@napi-rs/canvas\" package: \"${ex}\".`);\n      }\n    } catch (ex) {\n      warn(`Cannot access the \\`require\\` function: \"${ex}\".`);\n    }\n\n    if (!globalThis.DOMMatrix) {\n      if (canvas?.DOMMatrix) {\n        globalThis.DOMMatrix = canvas.DOMMatrix;\n      } else {\n        warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n      }\n    }\n    if (!globalThis.ImageData) {\n      if (canvas?.ImageData) {\n        globalThis.ImageData = canvas.ImageData;\n      } else {\n        warn(\"Cannot polyfill `ImageData`, rendering may be broken.\");\n      }\n    }\n    if (!globalThis.Path2D) {\n      if (canvas?.Path2D) {\n        globalThis.Path2D = canvas.Path2D;\n      } else {\n        warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n      }\n    }\n    if (!globalThis.navigator?.language) {\n      globalThis.navigator = {\n        language: \"en-US\",\n        platform: \"\",\n        userAgent: \"\",\n      };\n    }\n  }\n}\n\nasync function fetchData(url) {\n  const fs = process.getBuiltinModule(\"fs\");\n  const data = await fs.promises.readFile(url);\n  return new Uint8Array(data);\n}\n\nclass NodeFilterFactory extends BaseFilterFactory {}\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    const require = process\n      .getBuiltinModule(\"module\")\n      .createRequire(import.meta.url);\n    const canvas = require(\"@napi-rs/canvas\");\n    return canvas.createCanvas(width, height);\n  }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    return fetchData(url);\n  }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    return fetchData(url);\n  }\n}\n\nclass NodeWasmFactory extends BaseWasmFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    return fetchData(url);\n  }\n}\n\nexport {\n  fetchData,\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeFilterFactory,\n  NodeStandardFontDataFactory,\n  NodeWasmFactory,\n};\n", "import { Util } from \"../shared/util.js\";\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\n\nconst { floor, ceil } = Math;\n\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n  array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n  array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n  array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n  array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\n\n// This is computed rathter than hard-coded to keep into\n// account the platform's endianess.\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\n\nclass BBoxReader {\n  #bboxes;\n\n  #coords;\n\n  constructor(bboxes, coords) {\n    this.#bboxes = bboxes;\n    this.#coords = coords;\n  }\n\n  get length() {\n    return this.#bboxes.length;\n  }\n\n  isEmpty(i) {\n    return this.#bboxes[i] === EMPTY_BBOX;\n  }\n\n  minX(i) {\n    return this.#coords[i * 4 + 0] / 256;\n  }\n\n  minY(i) {\n    return this.#coords[i * 4 + 1] / 256;\n  }\n\n  maxX(i) {\n    return (this.#coords[i * 4 + 2] + 1) / 256;\n  }\n\n  maxY(i) {\n    return (this.#coords[i * 4 + 3] + 1) / 256;\n  }\n}\n\nconst ensureDebugMetadata = (map, key) => {\n  if (!map) {\n    return undefined;\n  }\n  let value = map.get(key);\n  if (!value) {\n    value = { dependencies: new Set(), isRenderingOperation: false };\n    map.set(key, value);\n  }\n  return value;\n};\n\n/**\n * @typedef {\"lineWidth\" | \"lineCap\" | \"lineJoin\" | \"miterLimit\" | \"dash\" |\n * \"strokeAlpha\" | \"fillColor\" | \"fillAlpha\" | \"globalCompositeOperation\" |\n * \"path\" | \"filter\" | \"font\" | \"fontObj\"} SimpleDependency\n */\n\n/**\n * @typedef {\"transform\" | \"moveText\" | \"sameLineText\"} IncrementalDependency\n */\n\n/**\n * @typedef {IncrementalDependency |\n * typeof FORCED_DEPENDENCY_LABEL} InternalIncrementalDependency\n */\nclass CanvasDependencyTracker {\n  /** @type {Record<SimpleDependency, number>} */\n  #simple = { __proto__: null };\n\n  /** @type {Record<InternalIncrementalDependency , number[]>} */\n  #incremental = {\n    __proto__: null,\n    transform: [],\n    moveText: [],\n    sameLineText: [],\n    [FORCED_DEPENDENCY_LABEL]: [],\n  };\n\n  #namedDependencies = new Map();\n\n  #savesStack = [];\n\n  #markedContentStack = [];\n\n  #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n\n  #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n\n  // Float32Array<minX, minY, maxX, maxY>\n  #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n\n  #pendingBBoxIdx = -1;\n\n  #pendingDependencies = new Set();\n\n  #operations = new Map();\n\n  #fontBBoxTrustworthy = new Map();\n\n  #canvasWidth;\n\n  #canvasHeight;\n\n  // Uint8ClampedArray<minX, minY, maxX, maxY>\n  #bboxesCoords;\n\n  #bboxes;\n\n  #debugMetadata;\n\n  constructor(canvas, operationsCount, recordDebugMetadata = false) {\n    this.#canvasWidth = canvas.width;\n    this.#canvasHeight = canvas.height;\n    this.#initializeBBoxes(operationsCount);\n    if (recordDebugMetadata) {\n      this.#debugMetadata = new Map();\n    }\n  }\n\n  growOperationsCount(operationsCount) {\n    if (operationsCount >= this.#bboxes.length) {\n      this.#initializeBBoxes(operationsCount, this.#bboxes);\n    }\n  }\n\n  #initializeBBoxes(operationsCount, oldBBoxes) {\n    const buffer = new ArrayBuffer(operationsCount * 4);\n    this.#bboxesCoords = new Uint8ClampedArray(buffer);\n    this.#bboxes = new Uint32Array(buffer);\n    if (oldBBoxes && oldBBoxes.length > 0) {\n      this.#bboxes.set(oldBBoxes);\n      this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n    } else {\n      this.#bboxes.fill(EMPTY_BBOX);\n    }\n  }\n\n  save(opIdx) {\n    this.#simple = { __proto__: this.#simple };\n    this.#incremental = {\n      __proto__: this.#incremental,\n      transform: { __proto__: this.#incremental.transform },\n      moveText: { __proto__: this.#incremental.moveText },\n      sameLineText: { __proto__: this.#incremental.sameLineText },\n      [FORCED_DEPENDENCY_LABEL]: {\n        __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL],\n      },\n    };\n    this.#clipBox = { __proto__: this.#clipBox };\n    this.#savesStack.push(opIdx);\n\n    return this;\n  }\n\n  restore(opIdx) {\n    const previous = Object.getPrototypeOf(this.#simple);\n    if (previous === null) {\n      // Sometimes we call more .restore() than .save(), for\n      // example when using CanvasGraphics' #restoreInitialState()\n      return this;\n    }\n    this.#simple = previous;\n    this.#incremental = Object.getPrototypeOf(this.#incremental);\n    this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n\n    const lastSave = this.#savesStack.pop();\n    if (lastSave !== undefined) {\n      ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(\n        lastSave\n      );\n      this.#bboxes[opIdx] = this.#bboxes[lastSave];\n    }\n\n    return this;\n  }\n\n  /**\n   * @param {number} idx\n   */\n  recordOpenMarker(idx) {\n    this.#savesStack.push(idx);\n    return this;\n  }\n\n  getOpenMarker() {\n    if (this.#savesStack.length === 0) {\n      return null;\n    }\n    return this.#savesStack.at(-1);\n  }\n\n  recordCloseMarker(opIdx) {\n    const lastSave = this.#savesStack.pop();\n    if (lastSave !== undefined) {\n      ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(\n        lastSave\n      );\n      this.#bboxes[opIdx] = this.#bboxes[lastSave];\n    }\n    return this;\n  }\n\n  // Marked content needs a separate stack from save/restore, because they\n  // form two independent trees.\n  beginMarkedContent(opIdx) {\n    this.#markedContentStack.push(opIdx);\n    return this;\n  }\n\n  endMarkedContent(opIdx) {\n    const lastSave = this.#markedContentStack.pop();\n    if (lastSave !== undefined) {\n      ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(\n        lastSave\n      );\n      this.#bboxes[opIdx] = this.#bboxes[lastSave];\n    }\n    return this;\n  }\n\n  pushBaseTransform(ctx) {\n    this.#baseTransformStack.push(\n      Util.multiplyByDOMMatrix(\n        this.#baseTransformStack.at(-1),\n        ctx.getTransform()\n      )\n    );\n    return this;\n  }\n\n  popBaseTransform() {\n    if (this.#baseTransformStack.length > 1) {\n      this.#baseTransformStack.pop();\n    }\n    return this;\n  }\n\n  /**\n   * @param {SimpleDependency} name\n   * @param {number} idx\n   */\n  recordSimpleData(name, idx) {\n    this.#simple[name] = idx;\n    return this;\n  }\n\n  /**\n   * @param {IncrementalDependency} name\n   * @param {number} idx\n   */\n  recordIncrementalData(name, idx) {\n    this.#incremental[name].push(idx);\n    return this;\n  }\n\n  /**\n   * @param {IncrementalDependency} name\n   * @param {number} idx\n   */\n  resetIncrementalData(name, idx) {\n    this.#incremental[name].length = 0;\n    return this;\n  }\n\n  recordNamedData(name, idx) {\n    this.#namedDependencies.set(name, idx);\n    return this;\n  }\n\n  /**\n   * @param {SimpleDependency} name\n   * @param {string} depName\n   * @param {number} fallbackIdx\n   */\n  recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n    this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n  }\n\n  // All next operations, until the next .restore(), will depend on this\n  recordFutureForcedDependency(name, idx) {\n    this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n    return this;\n  }\n\n  // All next operations, until the next .restore(), will depend on all\n  // the already recorded data with the given names.\n  inheritSimpleDataAsFutureForcedDependencies(names) {\n    for (const name of names) {\n      if (name in this.#simple) {\n        this.recordFutureForcedDependency(name, this.#simple[name]);\n      }\n    }\n    return this;\n  }\n\n  inheritPendingDependenciesAsFutureForcedDependencies() {\n    for (const dep of this.#pendingDependencies) {\n      this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n    }\n    return this;\n  }\n\n  resetBBox(idx) {\n    if (this.#pendingBBoxIdx !== idx) {\n      this.#pendingBBoxIdx = idx;\n      this.#pendingBBox[0] = Infinity;\n      this.#pendingBBox[1] = Infinity;\n      this.#pendingBBox[2] = -Infinity;\n      this.#pendingBBox[3] = -Infinity;\n    }\n    return this;\n  }\n\n  recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n    const transform = Util.multiplyByDOMMatrix(\n      this.#baseTransformStack.at(-1),\n      ctx.getTransform()\n    );\n    const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n    Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n    const intersection = Util.intersect(this.#clipBox, clipBox);\n    if (intersection) {\n      this.#clipBox[0] = intersection[0];\n      this.#clipBox[1] = intersection[1];\n      this.#clipBox[2] = intersection[2];\n      this.#clipBox[3] = intersection[3];\n    } else {\n      this.#clipBox[0] = this.#clipBox[1] = Infinity;\n      this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n    }\n    return this;\n  }\n\n  recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n    const clipBox = this.#clipBox;\n    if (clipBox[0] === Infinity) {\n      return this;\n    }\n\n    const transform = Util.multiplyByDOMMatrix(\n      this.#baseTransformStack.at(-1),\n      ctx.getTransform()\n    );\n    if (clipBox[0] === -Infinity) {\n      Util.axialAlignedBoundingBox(\n        [minX, minY, maxX, maxY],\n        transform,\n        this.#pendingBBox\n      );\n      return this;\n    }\n\n    const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n    Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n    this.#pendingBBox[0] = Math.min(\n      this.#pendingBBox[0],\n      Math.max(bbox[0], clipBox[0])\n    );\n    this.#pendingBBox[1] = Math.min(\n      this.#pendingBBox[1],\n      Math.max(bbox[1], clipBox[1])\n    );\n    this.#pendingBBox[2] = Math.max(\n      this.#pendingBBox[2],\n      Math.min(bbox[2], clipBox[2])\n    );\n    this.#pendingBBox[3] = Math.max(\n      this.#pendingBBox[3],\n      Math.min(bbox[3], clipBox[3])\n    );\n    return this;\n  }\n\n  recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n    const fontBBox = font.bbox;\n    let isBBoxTrustworthy;\n    let computedBBox;\n\n    if (fontBBox) {\n      isBBoxTrustworthy =\n        // Only use the bounding box defined by the font if it\n        // has a non-empty area.\n        fontBBox[2] !== fontBBox[0] &&\n        fontBBox[3] !== fontBBox[1] &&\n        this.#fontBBoxTrustworthy.get(font);\n\n      if (isBBoxTrustworthy !== false) {\n        computedBBox = [0, 0, 0, 0];\n        Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n        if (scale !== 1 || x !== 0 || y !== 0) {\n          Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n        }\n\n        if (isBBoxTrustworthy) {\n          return this.recordBBox(\n            idx,\n            ctx,\n            computedBBox[0],\n            computedBBox[2],\n            computedBBox[1],\n            computedBBox[3]\n          );\n        }\n      }\n    }\n\n    if (!getMeasure) {\n      // We have no way of telling how big this character actually is, record\n      // a full page bounding box.\n      return this.recordFullPageBBox(idx);\n    }\n\n    const measure = getMeasure();\n\n    if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n      // If it's the first time we can compare the font bbox with the actual\n      // bbox measured when drawing it, check if the one recorded in the font\n      // is large enough to cover the actual bbox. If it is, we assume that the\n      // font is well-formed and we can use the declared bbox without having to\n      // measure it again for every character.\n      isBBoxTrustworthy =\n        computedBBox[0] <= x - measure.actualBoundingBoxLeft &&\n        computedBBox[2] >= x + measure.actualBoundingBoxRight &&\n        computedBBox[1] <= y - measure.actualBoundingBoxAscent &&\n        computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n      this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n      if (isBBoxTrustworthy) {\n        return this.recordBBox(\n          idx,\n          ctx,\n          computedBBox[0],\n          computedBBox[2],\n          computedBBox[1],\n          computedBBox[3]\n        );\n      }\n    }\n\n    // The font has no bbox or it is not trustworthy, so we need to\n    // return the bounding box based on .measureText().\n    return this.recordBBox(\n      idx,\n      ctx,\n      x - measure.actualBoundingBoxLeft,\n      x + measure.actualBoundingBoxRight,\n      y - measure.actualBoundingBoxAscent,\n      y + measure.actualBoundingBoxDescent\n    );\n  }\n\n  recordFullPageBBox(idx) {\n    this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n    this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n    this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n    this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n\n    return this;\n  }\n\n  getSimpleIndex(dependencyName) {\n    return this.#simple[dependencyName];\n  }\n\n  recordDependencies(idx, dependencyNames) {\n    const pendingDependencies = this.#pendingDependencies;\n    const simple = this.#simple;\n    const incremental = this.#incremental;\n    for (const name of dependencyNames) {\n      if (name in this.#simple) {\n        pendingDependencies.add(simple[name]);\n      } else if (name in incremental) {\n        incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n      }\n    }\n\n    return this;\n  }\n\n  recordNamedDependency(idx, name) {\n    if (this.#namedDependencies.has(name)) {\n      this.#pendingDependencies.add(this.#namedDependencies.get(name));\n    }\n\n    return this;\n  }\n\n  /**\n   * @param {number} idx\n   */\n  recordOperation(idx, preserve = false) {\n    this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n\n    if (this.#debugMetadata) {\n      const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n      const { dependencies } = metadata;\n      this.#pendingDependencies.forEach(dependencies.add, dependencies);\n      this.#savesStack.forEach(dependencies.add, dependencies);\n      this.#markedContentStack.forEach(dependencies.add, dependencies);\n      dependencies.delete(idx);\n      metadata.isRenderingOperation = true;\n    }\n\n    if (this.#pendingBBoxIdx === idx) {\n      const minX = floor((this.#pendingBBox[0] * 256) / this.#canvasWidth);\n      const minY = floor((this.#pendingBBox[1] * 256) / this.#canvasHeight);\n      const maxX = ceil((this.#pendingBBox[2] * 256) / this.#canvasWidth);\n      const maxY = ceil((this.#pendingBBox[3] * 256) / this.#canvasHeight);\n\n      expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n      for (const depIdx of this.#pendingDependencies) {\n        if (depIdx !== idx) {\n          expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n        }\n      }\n      for (const saveIdx of this.#savesStack) {\n        if (saveIdx !== idx) {\n          expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n        }\n      }\n      for (const saveIdx of this.#markedContentStack) {\n        if (saveIdx !== idx) {\n          expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n        }\n      }\n\n      if (!preserve) {\n        this.#pendingDependencies.clear();\n        this.#pendingBBoxIdx = -1;\n      }\n    }\n\n    return this;\n  }\n\n  recordShowTextOperation(idx, preserve = false) {\n    const deps = Array.from(this.#pendingDependencies);\n    this.recordOperation(idx, preserve);\n    this.recordIncrementalData(\"sameLineText\", idx);\n    for (const dep of deps) {\n      this.recordIncrementalData(\"sameLineText\", dep);\n    }\n    return this;\n  }\n\n  bboxToClipBoxDropOperation(idx, preserve = false) {\n    if (this.#pendingBBoxIdx === idx) {\n      this.#pendingBBoxIdx = -1;\n\n      this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n      this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n      this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n      this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n\n      if (!preserve) {\n        this.#pendingDependencies.clear();\n      }\n    }\n    return this;\n  }\n\n  _takePendingDependencies() {\n    const pendingDependencies = this.#pendingDependencies;\n    this.#pendingDependencies = new Set();\n    return pendingDependencies;\n  }\n\n  _extractOperation(idx) {\n    const operation = this.#operations.get(idx);\n    this.#operations.delete(idx);\n    return operation;\n  }\n\n  _pushPendingDependencies(dependencies) {\n    for (const dep of dependencies) {\n      this.#pendingDependencies.add(dep);\n    }\n  }\n\n  take() {\n    this.#fontBBoxTrustworthy.clear();\n    return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n  }\n\n  takeDebugMetadata() {\n    return this.#debugMetadata;\n  }\n}\n\n/**\n * Used to track dependencies of nested operations list, that\n * should actually all map to the index of the operation that\n * contains the nested list.\n *\n * @implements {CanvasDependencyTracker}\n */\nclass CanvasNestedDependencyTracker {\n  /** @type {CanvasDependencyTracker} */\n  #dependencyTracker;\n\n  /** @type {number} */\n  #opIdx;\n\n  #ignoreBBoxes;\n\n  #nestingLevel = 0;\n\n  #savesLevel = 0;\n\n  constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n    if (\n      dependencyTracker instanceof CanvasNestedDependencyTracker &&\n      dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes\n    ) {\n      // The goal of CanvasNestedDependencyTracker is to collapse all operations\n      // into a single one. If we are already in a\n      // CanvasNestedDependencyTracker, that is already happening.\n      return dependencyTracker;\n    }\n\n    this.#dependencyTracker = dependencyTracker;\n    this.#opIdx = opIdx;\n    this.#ignoreBBoxes = !!ignoreBBoxes;\n  }\n\n  growOperationsCount() {\n    throw new Error(\"Unreachable\");\n  }\n\n  save(opIdx) {\n    this.#savesLevel++;\n    this.#dependencyTracker.save(this.#opIdx);\n    return this;\n  }\n\n  restore(opIdx) {\n    if (this.#savesLevel > 0) {\n      this.#dependencyTracker.restore(this.#opIdx);\n      this.#savesLevel--;\n    }\n    return this;\n  }\n\n  recordOpenMarker(idx) {\n    this.#nestingLevel++;\n    return this;\n  }\n\n  getOpenMarker() {\n    return this.#nestingLevel > 0\n      ? this.#opIdx\n      : this.#dependencyTracker.getOpenMarker();\n  }\n\n  recordCloseMarker(idx) {\n    this.#nestingLevel--;\n    return this;\n  }\n\n  beginMarkedContent(opIdx) {\n    return this;\n  }\n\n  endMarkedContent(opIdx) {\n    return this;\n  }\n\n  pushBaseTransform(ctx) {\n    this.#dependencyTracker.pushBaseTransform(ctx);\n    return this;\n  }\n\n  popBaseTransform() {\n    this.#dependencyTracker.popBaseTransform();\n    return this;\n  }\n\n  /**\n   * @param {SimpleDependency} name\n   * @param {number} idx\n   */\n  recordSimpleData(name, idx) {\n    this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n    return this;\n  }\n\n  /**\n   * @param {IncrementalDependency} name\n   * @param {number} idx\n   */\n  recordIncrementalData(name, idx) {\n    this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n    return this;\n  }\n\n  /**\n   * @param {IncrementalDependency} name\n   * @param {number} idx\n   */\n  resetIncrementalData(name, idx) {\n    this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n    return this;\n  }\n\n  recordNamedData(name, idx) {\n    // Nested dependencies are not visible to the outside.\n    return this;\n  }\n\n  /**\n   * @param {SimpleDependency} name\n   * @param {string} depName\n   * @param {number} fallbackIdx\n   */\n  recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n    this.#dependencyTracker.recordSimpleDataFromNamed(\n      name,\n      depName,\n      this.#opIdx\n    );\n    return this;\n  }\n\n  // All next operations, until the next .restore(), will depend on this\n  recordFutureForcedDependency(name, idx) {\n    this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n    return this;\n  }\n\n  // All next operations, until the next .restore(), will depend on all\n  // the already recorded data with the given names.\n  inheritSimpleDataAsFutureForcedDependencies(names) {\n    this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n    return this;\n  }\n\n  inheritPendingDependenciesAsFutureForcedDependencies() {\n    this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n    return this;\n  }\n\n  resetBBox(idx) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.resetBBox(this.#opIdx);\n    }\n    return this;\n  }\n\n  recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.recordClipBox(\n        this.#opIdx,\n        ctx,\n        minX,\n        maxX,\n        minY,\n        maxY\n      );\n    }\n    return this;\n  }\n\n  recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.recordBBox(\n        this.#opIdx,\n        ctx,\n        minX,\n        maxX,\n        minY,\n        maxY\n      );\n    }\n    return this;\n  }\n\n  recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.recordCharacterBBox(\n        this.#opIdx,\n        ctx,\n        font,\n        scale,\n        x,\n        y,\n        getMeasure\n      );\n    }\n    return this;\n  }\n\n  recordFullPageBBox(idx) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n    }\n    return this;\n  }\n\n  getSimpleIndex(dependencyName) {\n    return this.#dependencyTracker.getSimpleIndex(dependencyName);\n  }\n\n  recordDependencies(idx, dependencyNames) {\n    this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n    return this;\n  }\n\n  recordNamedDependency(idx, name) {\n    this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n    return this;\n  }\n\n  /**\n   * @param {number} idx\n   * @param {SimpleDependency[]} dependencyNames\n   */\n  recordOperation(idx) {\n    this.#dependencyTracker.recordOperation(this.#opIdx, true);\n    return this;\n  }\n\n  recordShowTextOperation(idx) {\n    this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n    return this;\n  }\n\n  bboxToClipBoxDropOperation(idx) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n    }\n    return this;\n  }\n\n  take() {\n    throw new Error(\"Unreachable\");\n  }\n\n  takeDebugMetadata() {\n    throw new Error(\"Unreachable\");\n  }\n}\n\n/** @satisfies {Record<string, SimpleDependency | IncrementalDependency>} */\nconst Dependencies = {\n  stroke: [\n    \"path\",\n    \"transform\",\n    \"filter\",\n    \"strokeColor\",\n    \"strokeAlpha\",\n    \"lineWidth\",\n    \"lineCap\",\n    \"lineJoin\",\n    \"miterLimit\",\n    \"dash\",\n  ],\n  fill: [\n    \"path\",\n    \"transform\",\n    \"filter\",\n    \"fillColor\",\n    \"fillAlpha\",\n    \"globalCompositeOperation\",\n    \"SMask\",\n  ],\n  imageXObject: [\n    \"transform\",\n    \"SMask\",\n    \"filter\",\n    \"fillAlpha\",\n    \"strokeAlpha\",\n    \"globalCompositeOperation\",\n  ],\n  rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n  showText: [\n    \"transform\",\n    \"leading\",\n    \"charSpacing\",\n    \"wordSpacing\",\n    \"hScale\",\n    \"textRise\",\n    \"moveText\",\n    \"textMatrix\",\n    \"font\",\n    \"fontObj\",\n    \"filter\",\n    \"fillColor\",\n    \"textRenderingMode\",\n    \"SMask\",\n    \"fillAlpha\",\n    \"strokeAlpha\",\n    \"globalCompositeOperation\",\n\n    \"sameLineText\",\n  ],\n  transform: [\"transform\"],\n  transformAndFill: [\"transform\", \"fillColor\"],\n};\n\nexport { CanvasDependencyTracker, CanvasNestedDependencyTracker, Dependencies };\n", "/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  FormatError,\n  info,\n  MeshFigureType,\n  unreachable,\n  Util,\n} from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n  if (!bbox) {\n    return;\n  }\n  const width = bbox[2] - bbox[0];\n  const height = bbox[3] - bbox[1];\n  const region = new Path2D();\n  region.rect(bbox[0], bbox[1], width, height);\n  ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n  constructor() {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseShadingPattern\n    ) {\n      unreachable(\"Cannot initialize BaseShadingPattern.\");\n    }\n  }\n\n  isModifyingCurrentTransform() {\n    return false;\n  }\n\n  getPattern() {\n    unreachable(\"Abstract method `getPattern` called.\");\n  }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._type = IR[1];\n    this._bbox = IR[2];\n    this._colorStops = IR[3];\n    this._p0 = IR[4];\n    this._p1 = IR[5];\n    this._r0 = IR[6];\n    this._r1 = IR[7];\n    this.matrix = null;\n  }\n\n  isOriginBased() {\n    return (\n      this._p0[0] === 0 &&\n      this._p0[1] === 0 &&\n      (!this.isRadial() || (this._p1[0] === 0 && this._p1[1] === 0))\n    );\n  }\n\n  isRadial() {\n    return this._type === \"radial\";\n  }\n\n  _createGradient(ctx, transform = null) {\n    let grad;\n    let firstPoint = this._p0;\n    let secondPoint = this._p1;\n    if (transform) {\n      firstPoint = firstPoint.slice();\n      secondPoint = secondPoint.slice();\n      Util.applyTransform(firstPoint, transform);\n      Util.applyTransform(secondPoint, transform);\n    }\n    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(\n        firstPoint[0],\n        firstPoint[1],\n        secondPoint[0],\n        secondPoint[1]\n      );\n    } else if (this._type === \"radial\") {\n      let r0 = this._r0;\n      let r1 = this._r1;\n      if (transform) {\n        const scale = new Float32Array(2);\n        Util.singularValueDecompose2dScale(transform, scale);\n        r0 *= scale[0];\n        r1 *= scale[0];\n      }\n      grad = ctx.createRadialGradient(\n        firstPoint[0],\n        firstPoint[1],\n        r0,\n        secondPoint[0],\n        secondPoint[1],\n        r1\n      );\n    }\n\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n    return grad;\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      if (this.isOriginBased()) {\n        let transf = Util.transform(inverse, owner.baseTransform);\n        if (this.matrix) {\n          transf = Util.transform(transf, this.matrix);\n        }\n        const precision = 1e-3;\n        const n1 = Math.hypot(transf[0], transf[1]);\n        const n2 = Math.hypot(transf[2], transf[3]);\n        const ps = (transf[0] * transf[2] + transf[1] * transf[3]) / (n1 * n2);\n        if (Math.abs(ps) < precision) {\n          // The images of the basis vectors are orthogonal.\n          if (this.isRadial()) {\n            // If the images of the basis vectors are a square then the\n            // circles are transformed to circles and we can use a gradient\n            // directly.\n            if (Math.abs(n1 - n2) < precision) {\n              return this._createGradient(ctx, transf);\n            }\n          } else {\n            // The rectangles are transformed to rectangles and we can use a\n            // gradient directly.\n            return this._createGradient(ctx, transf);\n          }\n        }\n      }\n\n      const ownerBBox = owner.current.getClippedPathBoundingBox(\n        pathType,\n        getCurrentTransform(ctx)\n      ) || [0, 0, 0, 0];\n      // Create a canvas that is only as big as the current path. This doesn't\n      // allow us to cache the pattern, but it generally creates much smaller\n      // canvases and saves memory use. See bug 1722807 for an example.\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\n        \"pattern\",\n        width,\n        height\n      );\n\n      const tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.beginPath();\n      tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      // Non shading fill patterns are positioned relative to the base transform\n      // (usually the page's initial transform), but we may have created a\n      // smaller canvas based on the path, so we must account for the shift.\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = Util.transform(inverse, [\n        1,\n        0,\n        0,\n        1,\n        ownerBBox[0],\n        ownerBBox[1],\n      ]);\n\n      tmpCtx.transform(...owner.baseTransform);\n      if (this.matrix) {\n        tmpCtx.transform(...this.matrix);\n      }\n      applyBoundingBox(tmpCtx, this._bbox);\n\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n      pattern.setTransform(domMatrix);\n    } else {\n      // Shading fills are applied relative to the current matrix which is also\n      // how canvas gradients work, so there's no need to do anything special\n      // here.\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n    return pattern;\n  }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n  // Very basic Gouraud-shaded triangle rasterization algorithm.\n  const coords = context.coords,\n    colors = context.colors;\n  const bytes = data.data,\n    rowSize = data.width * 4;\n  let tmp;\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  if (coords[p2 + 1] > coords[p3 + 1]) {\n    tmp = p2;\n    p2 = p3;\n    p3 = tmp;\n    tmp = c2;\n    c2 = c3;\n    c3 = tmp;\n  }\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n  if (y1 >= y3) {\n    return;\n  }\n  const c1r = colors[c1],\n    c1g = colors[c1 + 1],\n    c1b = colors[c1 + 2];\n  const c2r = colors[c2],\n    c2g = colors[c2 + 1],\n    c2b = colors[c2 + 2];\n  const c3r = colors[c3],\n    c3g = colors[c3 + 1],\n    c3b = colors[c3 + 2];\n\n  const minY = Math.round(y1),\n    maxY = Math.round(y3);\n  let xa, car, cag, cab;\n  let xb, cbr, cbg, cbb;\n  for (let y = minY; y <= maxY; y++) {\n    if (y < y2) {\n      const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n      xa = x1 - (x1 - x2) * k;\n      car = c1r - (c1r - c2r) * k;\n      cag = c1g - (c1g - c2g) * k;\n      cab = c1b - (c1b - c2b) * k;\n    } else {\n      let k;\n      if (y > y3) {\n        k = 1;\n      } else if (y2 === y3) {\n        k = 0;\n      } else {\n        k = (y2 - y) / (y2 - y3);\n      }\n      xa = x2 - (x2 - x3) * k;\n      car = c2r - (c2r - c3r) * k;\n      cag = c2g - (c2g - c3g) * k;\n      cab = c2b - (c2b - c3b) * k;\n    }\n\n    let k;\n    if (y < y1) {\n      k = 0;\n    } else if (y > y3) {\n      k = 1;\n    } else {\n      k = (y1 - y) / (y1 - y3);\n    }\n    xb = x1 - (x1 - x3) * k;\n    cbr = c1r - (c1r - c3r) * k;\n    cbg = c1g - (c1g - c3g) * k;\n    cbb = c1b - (c1b - c3b) * k;\n    const x1_ = Math.round(Math.min(xa, xb));\n    const x2_ = Math.round(Math.max(xa, xb));\n    let j = rowSize * y + x1_ * 4;\n    for (let x = x1_; x <= x2_; x++) {\n      k = (xa - x) / (xa - xb);\n      if (k < 0) {\n        k = 0;\n      } else if (k > 1) {\n        k = 1;\n      }\n      bytes[j++] = (car - (car - cbr) * k) | 0;\n      bytes[j++] = (cag - (cag - cbg) * k) | 0;\n      bytes[j++] = (cab - (cab - cbb) * k) | 0;\n      bytes[j++] = 255;\n    }\n  }\n}\n\nfunction drawFigure(data, figure, context) {\n  const ps = figure.coords;\n  const cs = figure.colors;\n  let i, ii;\n  switch (figure.type) {\n    case MeshFigureType.LATTICE:\n      const verticesPerRow = figure.verticesPerRow;\n      const rows = Math.floor(ps.length / verticesPerRow) - 1;\n      const cols = verticesPerRow - 1;\n      for (i = 0; i < rows; i++) {\n        let q = i * verticesPerRow;\n        for (let j = 0; j < cols; j++, q++) {\n          drawTriangle(\n            data,\n            context,\n            ps[q],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n          drawTriangle(\n            data,\n            context,\n            ps[q + verticesPerRow + 1],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q + verticesPerRow + 1],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n        }\n      }\n      break;\n    case MeshFigureType.TRIANGLES:\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(\n          data,\n          context,\n          ps[i],\n          ps[i + 1],\n          ps[i + 2],\n          cs[i],\n          cs[i + 1],\n          cs[i + 2]\n        );\n      }\n      break;\n    default:\n      throw new Error(\"illegal figure\");\n  }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._coords = IR[2];\n    this._colors = IR[3];\n    this._figures = IR[4];\n    this._bounds = IR[5];\n    this._bbox = IR[6];\n    this._background = IR[7];\n    this.matrix = null;\n  }\n\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    // we will increase scale on some weird factor to let antialiasing take\n    // care of \"rough\" edges\n    const EXPECTED_SCALE = 1.1;\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n    // We need to keep transparent border around our pattern for fill():\n    // createPattern with 'no-repeat' will bleed edges across entire area.\n    const BORDER_SIZE = 2;\n\n    const offsetX = Math.floor(this._bounds[0]);\n    const offsetY = Math.floor(this._bounds[1]);\n    const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n    const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n    const width = Math.min(\n      Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const height = Math.min(\n      Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\n\n    const context = {\n      coords: this._coords,\n      colors: this._colors,\n      offsetX: -offsetX,\n      offsetY: -offsetY,\n      scaleX: 1 / scaleX,\n      scaleY: 1 / scaleY,\n    };\n\n    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n\n    const tmpCanvas = cachedCanvases.getCanvas(\n      \"mesh\",\n      paddedWidth,\n      paddedHeight\n    );\n    const tmpCtx = tmpCanvas.context;\n\n    const data = tmpCtx.createImageData(width, height);\n    if (backgroundColor) {\n      const bytes = data.data;\n      for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n        bytes[i] = backgroundColor[0];\n        bytes[i + 1] = backgroundColor[1];\n        bytes[i + 2] = backgroundColor[2];\n        bytes[i + 3] = 255;\n      }\n    }\n    for (const figure of this._figures) {\n      drawFigure(data, figure, context);\n    }\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n    const canvas = tmpCanvas.canvas;\n\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY,\n    };\n  }\n\n  isModifyingCurrentTransform() {\n    return true;\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    applyBoundingBox(ctx, this._bbox);\n    const scale = new Float32Array(2);\n    if (pathType === PathType.SHADING) {\n      Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n    } else if (this.matrix) {\n      // Obtain scale from matrix and current transformation matrix.\n      Util.singularValueDecompose2dScale(this.matrix, scale);\n      const [matrixScaleX, matrixScaleY] = scale;\n      Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n      scale[0] *= matrixScaleX;\n      scale[1] *= matrixScaleY;\n    } else {\n      Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n    }\n\n    // Rasterizing on the main thread since sending/queue large canvases\n    // might cause OOM.\n    const temporaryPatternCanvas = this._createMeshCanvas(\n      scale,\n      pathType === PathType.SHADING ? null : this._background,\n      owner.cachedCanvases\n    );\n\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform(...owner.baseTransform);\n      if (this.matrix) {\n        ctx.transform(...this.matrix);\n      }\n    }\n\n    ctx.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\n  }\n}\n\nfunction getShadingPattern(IR) {\n  switch (IR[0]) {\n    case \"RadialAxial\":\n      return new RadialAxialShadingPattern(IR);\n    case \"Mesh\":\n      return new MeshShadingPattern(IR);\n    case \"Dummy\":\n      return new DummyShadingPattern();\n  }\n  throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2,\n};\n\nclass TilingPattern {\n  // 10in @ 300dpi shall be enough.\n  static MAX_PATTERN_SIZE = 3000;\n\n  constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n    this.color = IR[1];\n    this.operatorList = IR[2];\n    this.matrix = IR[3];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.ctx = ctx;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n  }\n\n  createPatternCanvas(owner, opIdx) {\n    const {\n      bbox,\n      operatorList,\n      paintType,\n      tilingType,\n      color,\n      canvasGraphicsFactory,\n    } = this;\n    let { xstep, ystep } = this;\n    xstep = Math.abs(xstep);\n    ystep = Math.abs(ystep);\n\n    info(\"TilingType: \" + tilingType);\n\n    // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n    // described by bbox, and may repeat regularly by shifting the cell by\n    // xstep and ystep.\n    // Because the HTML5 canvas API does not support pattern repetition with\n    // gaps in between, we use the xstep/ystep instead of the bbox's size.\n    //\n    // This has the following consequences (similarly for ystep):\n    //\n    // - If xstep is the same as bbox, then there is no observable difference.\n    //\n    // - If xstep is larger than bbox, then the pattern canvas is partially\n    //   empty: the area bounded by bbox is painted, the outside area is void.\n    //\n    // - If xstep is smaller than bbox, then the pixels between xstep and the\n    //   bbox boundary will be missing. This is INCORRECT behavior.\n    //   \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n    //   but overlapping cells without common pixels are still valid.\n\n    const x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3];\n    const width = x1 - x0;\n    const height = y1 - y0;\n\n    // Obtain scale from matrix and current transformation matrix.\n    const scale = new Float32Array(2);\n    Util.singularValueDecompose2dScale(this.matrix, scale);\n    const [matrixScaleX, matrixScaleY] = scale;\n    Util.singularValueDecompose2dScale(this.baseTransform, scale);\n    const combinedScaleX = matrixScaleX * scale[0];\n    const combinedScaleY = matrixScaleY * scale[1];\n\n    let canvasWidth = width,\n      canvasHeight = height,\n      redrawHorizontally = false,\n      redrawVertically = false;\n\n    const xScaledStep = Math.ceil(xstep * combinedScaleX);\n    const yScaledStep = Math.ceil(ystep * combinedScaleY);\n    const xScaledWidth = Math.ceil(width * combinedScaleX);\n    const yScaledHeight = Math.ceil(height * combinedScaleY);\n\n    if (xScaledStep >= xScaledWidth) {\n      canvasWidth = xstep;\n    } else {\n      redrawHorizontally = true;\n    }\n    if (yScaledStep >= yScaledHeight) {\n      canvasHeight = ystep;\n    } else {\n      redrawVertically = true;\n    }\n\n    // Use width and height values that are as close as possible to the end\n    // result when the pattern is used. Too low value makes the pattern look\n    // blurry. Too large value makes it look too crispy.\n    const dimx = this.getSizeAndScale(\n      canvasWidth,\n      this.ctx.canvas.width,\n      combinedScaleX\n    );\n    const dimy = this.getSizeAndScale(\n      canvasHeight,\n      this.ctx.canvas.height,\n      combinedScaleY\n    );\n\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\n      \"pattern\",\n      dimx.size,\n      dimy.size\n    );\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n    graphics.groupLevel = owner.groupLevel;\n\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n    tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n    graphics.transform(\n      // We pass 0 as the 'opIdx' argument, but the value is irrelevant.\n      // We know that we are in a 'CanvasNestedDependencyTracker' that captures\n      // all the sub-operations needed to create this pattern canvas and uses\n      // the top-level operation index as their index.\n      0,\n      dimx.scale,\n      0,\n      0,\n      dimy.scale,\n      0,\n      0\n    );\n\n    // To match CanvasGraphics beginDrawing we must save the context here or\n    // else we end up with unbalanced save/restores.\n    tmpCtx.save();\n    graphics.dependencyTracker?.save();\n\n    this.clipBbox(graphics, x0, y0, x1, y1);\n\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n    graphics.executeOperatorList(operatorList);\n\n    graphics.endDrawing();\n\n    graphics.dependencyTracker?.restore();\n    tmpCtx.restore();\n\n    if (redrawHorizontally || redrawVertically) {\n      // The tile is overlapping itself, so we create a new tile with\n      // dimensions xstep * ystep.\n      // Then we draw the overlapping parts of the original tile on the new\n      // tile.\n      // Just as a side note, the code here works correctly even if we don't\n      // have to redraw the tile horizontally or vertically. In that case, the\n      // original tile is drawn on the new tile only once, but it's useless.\n      const image = tmpCanvas.canvas;\n      if (redrawHorizontally) {\n        canvasWidth = xstep;\n      }\n      if (redrawVertically) {\n        canvasHeight = ystep;\n      }\n\n      const dimx2 = this.getSizeAndScale(\n        canvasWidth,\n        this.ctx.canvas.width,\n        combinedScaleX\n      );\n      const dimy2 = this.getSizeAndScale(\n        canvasHeight,\n        this.ctx.canvas.height,\n        combinedScaleY\n      );\n\n      const xSize = dimx2.size;\n      const ySize = dimy2.size;\n      const tmpCanvas2 = owner.cachedCanvases.getCanvas(\n        \"pattern-workaround\",\n        xSize,\n        ySize\n      );\n      const tmpCtx2 = tmpCanvas2.context;\n      const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n      const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n\n      // Draw the overlapping parts of the original tile on the new tile.\n      for (let i = 0; i <= ii; i++) {\n        for (let j = 0; j <= jj; j++) {\n          tmpCtx2.drawImage(\n            image,\n            xSize * i,\n            ySize * j,\n            xSize,\n            ySize,\n            0,\n            0,\n            xSize,\n            ySize\n          );\n        }\n      }\n      return {\n        canvas: tmpCanvas2.canvas,\n        scaleX: dimx2.scale,\n        scaleY: dimy2.scale,\n        offsetX: x0,\n        offsetY: y0,\n      };\n    }\n\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: x0,\n      offsetY: y0,\n    };\n  }\n\n  getSizeAndScale(step, realOutputSize, scale) {\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    // Use the destination canvas's size if it is bigger than the hard-coded\n    // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n    // whole canvas.\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n    let size = Math.ceil(step * scale);\n    if (size >= maxSize) {\n      size = maxSize;\n    } else {\n      scale = size / step;\n    }\n    return { scale, size };\n  }\n\n  clipBbox(graphics, x0, y0, x1, y1) {\n    const bboxWidth = x1 - x0;\n    const bboxHeight = y1 - y0;\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n    Util.axialAlignedBoundingBox(\n      [x0, y0, x1, y1],\n      getCurrentTransform(graphics.ctx),\n      graphics.current.minMax\n    );\n    graphics.clip();\n    graphics.endPath();\n  }\n\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\n    const context = graphics.ctx,\n      current = graphics.current;\n    switch (paintType) {\n      case PaintType.COLORED:\n        const { fillStyle, strokeStyle } = this.ctx;\n        context.fillStyle = current.fillColor = fillStyle;\n        context.strokeStyle = current.strokeColor = strokeStyle;\n        break;\n      case PaintType.UNCOLORED:\n        context.fillStyle = context.strokeStyle = color;\n        // Set color needed by image masks (fixes issues 3226 and 8741).\n        current.fillColor = current.strokeColor = color;\n        break;\n      default:\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n\n  isModifyingCurrentTransform() {\n    return false;\n  }\n\n  getPattern(ctx, owner, inverse, pathType, opIdx) {\n    // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n    let matrix = inverse;\n    if (pathType !== PathType.SHADING) {\n      matrix = Util.transform(matrix, owner.baseTransform);\n      if (this.matrix) {\n        matrix = Util.transform(matrix, this.matrix);\n      }\n    }\n\n    const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n\n    let domMatrix = new DOMMatrix(matrix);\n    // Rescale and so that the ctx.createPattern call generates a pattern with\n    // the desired size.\n    domMatrix = domMatrix.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    domMatrix = domMatrix.scale(\n      1 / temporaryPatternCanvas.scaleX,\n      1 / temporaryPatternCanvas.scaleY\n    );\n\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n    pattern.setTransform(domMatrix);\n\n    return pattern;\n  }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest, ImageKind } from \"./util.js\";\n\nfunction convertToRGBA(params) {\n  switch (params.kind) {\n    case ImageKind.GRAYSCALE_1BPP:\n      return convertBlackAndWhiteToRGBA(params);\n    case ImageKind.RGB_24BPP:\n      return convertRGBToRGBA(params);\n  }\n\n  return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false,\n}) {\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode\n    ? [nonBlackColor, black]\n    : [black, nonBlackColor];\n  const widthInSource = width >> 3;\n  const widthRemainder = width & 7;\n  const srcLength = src.length;\n  dest = new Uint32Array(dest.buffer);\n  let destPos = 0;\n\n  for (let i = 0; i < height; i++) {\n    for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n      const elem = srcPos < srcLength ? src[srcPos] : 255;\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n    }\n    if (widthRemainder === 0) {\n      continue;\n    }\n    const elem = srcPos < srcLength ? src[srcPos++] : 255;\n    for (let j = 0; j < widthRemainder; j++) {\n      dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n    }\n  }\n  return { srcPos, destPos };\n}\n\nfunction convertRGBToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  destPos = 0,\n  width,\n  height,\n}) {\n  let i = 0;\n  const len = width * height * 3;\n  const len32 = len >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n  if (FeatureTest.isLittleEndian) {\n    // It's a way faster to do the shuffle manually instead of working\n    // component by component with some Uint8 arrays.\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R2B1G1R1\n      const s2 = src32[i + 1]; // G3R3B2G2\n      const s3 = src32[i + 2]; // B4G4R4B3\n\n      dest[destPos] = s1 | 0xff000000;\n      dest[destPos + 1] = (s1 >>> 24) | (s2 << 8) | 0xff000000;\n      dest[destPos + 2] = (s2 >>> 16) | (s3 << 16) | 0xff000000;\n      dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\n    }\n\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] =\n        src[j] | (src[j + 1] << 8) | (src[j + 2] << 16) | 0xff000000;\n    }\n  } else {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R1G1B1R2\n      const s2 = src32[i + 1]; // G2B2R3G3\n      const s3 = src32[i + 2]; // B3R4G4B4\n\n      dest[destPos] = s1 | 0xff;\n      dest[destPos + 1] = (s1 << 24) | (s2 >>> 8) | 0xff;\n      dest[destPos + 2] = (s2 << 16) | (s3 >>> 16) | 0xff;\n      dest[destPos + 3] = (s3 << 8) | 0xff;\n    }\n\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] =\n        (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n    }\n  }\n\n  return { srcPos: srcPos + len, destPos };\n}\n\nfunction grayToRGBA(src, dest) {\n  if (FeatureTest.isLittleEndian) {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = (src[i] * 0x10101) | 0xff000000;\n    }\n  } else {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = (src[i] * 0x1010100) | 0x000000ff;\n    }\n  }\n}\n\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CanvasNestedDependencyTracker,\n  Dependencies,\n} from \"./canvas_dependency_tracker.js\";\nimport {\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  OPS,\n  shadow,\n  TextRenderingMode,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  makePathFromDrawOPS,\n  OutputScale,\n  PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n  getShadingPattern,\n  PathType,\n  TilingPattern,\n} from \"./pattern_helper.js\";\nimport { convertBlackAndWhiteToRGBA } from \"../shared/image_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n// Only used in rescaleAndStroke. The goal is to avoid\n// creating a new DOMMatrix object each time we need it.\nconst SCALE_MATRIX = new DOMMatrix();\n\n// Used to get some coordinates.\nconst XY = new Float32Array(2);\n\n// Initial rectangle values for the minMax array.\nconst MIN_MAX_INIT = new Float32Array([\n  Infinity,\n  Infinity,\n  -Infinity,\n  -Infinity,\n]);\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n *   the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n *   forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n  if (ctx._removeMirroring) {\n    throw new Error(\"Context is already forwarding operations.\");\n  }\n  ctx.__originalSave = ctx.save;\n  ctx.__originalRestore = ctx.restore;\n  ctx.__originalRotate = ctx.rotate;\n  ctx.__originalScale = ctx.scale;\n  ctx.__originalTranslate = ctx.translate;\n  ctx.__originalTransform = ctx.transform;\n  ctx.__originalSetTransform = ctx.setTransform;\n  ctx.__originalResetTransform = ctx.resetTransform;\n  ctx.__originalClip = ctx.clip;\n  ctx.__originalMoveTo = ctx.moveTo;\n  ctx.__originalLineTo = ctx.lineTo;\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n  ctx.__originalRect = ctx.rect;\n  ctx.__originalClosePath = ctx.closePath;\n  ctx.__originalBeginPath = ctx.beginPath;\n\n  ctx._removeMirroring = () => {\n    ctx.save = ctx.__originalSave;\n    ctx.restore = ctx.__originalRestore;\n    ctx.rotate = ctx.__originalRotate;\n    ctx.scale = ctx.__originalScale;\n    ctx.translate = ctx.__originalTranslate;\n    ctx.transform = ctx.__originalTransform;\n    ctx.setTransform = ctx.__originalSetTransform;\n    ctx.resetTransform = ctx.__originalResetTransform;\n\n    ctx.clip = ctx.__originalClip;\n    ctx.moveTo = ctx.__originalMoveTo;\n    ctx.lineTo = ctx.__originalLineTo;\n    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n    ctx.rect = ctx.__originalRect;\n    ctx.closePath = ctx.__originalClosePath;\n    ctx.beginPath = ctx.__originalBeginPath;\n    delete ctx._removeMirroring;\n  };\n\n  ctx.save = function () {\n    destCtx.save();\n    this.__originalSave();\n  };\n\n  ctx.restore = function () {\n    destCtx.restore();\n    this.__originalRestore();\n  };\n\n  ctx.translate = function (x, y) {\n    destCtx.translate(x, y);\n    this.__originalTranslate(x, y);\n  };\n\n  ctx.scale = function (x, y) {\n    destCtx.scale(x, y);\n    this.__originalScale(x, y);\n  };\n\n  ctx.transform = function (a, b, c, d, e, f) {\n    destCtx.transform(a, b, c, d, e, f);\n    this.__originalTransform(a, b, c, d, e, f);\n  };\n\n  ctx.setTransform = function (a, b, c, d, e, f) {\n    destCtx.setTransform(a, b, c, d, e, f);\n    this.__originalSetTransform(a, b, c, d, e, f);\n  };\n\n  ctx.resetTransform = function () {\n    destCtx.resetTransform();\n    this.__originalResetTransform();\n  };\n\n  ctx.rotate = function (angle) {\n    destCtx.rotate(angle);\n    this.__originalRotate(angle);\n  };\n\n  ctx.clip = function (rule) {\n    destCtx.clip(rule);\n    this.__originalClip(rule);\n  };\n\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n    this.__originalMoveTo(x, y);\n  };\n\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\n    this.__originalLineTo(x, y);\n  };\n\n  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n  };\n\n  ctx.rect = function (x, y, width, height) {\n    destCtx.rect(x, y, width, height);\n    this.__originalRect(x, y, width, height);\n  };\n\n  ctx.closePath = function () {\n    destCtx.closePath();\n    this.__originalClosePath();\n  };\n\n  ctx.beginPath = function () {\n    destCtx.beginPath();\n    this.__originalBeginPath();\n  };\n}\n\nclass CachedCanvases {\n  constructor(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\n\n  getCanvas(id, width, height) {\n    let canvasEntry;\n    if (this.cache[id] !== undefined) {\n      canvasEntry = this.cache[id];\n      this.canvasFactory.reset(canvasEntry, width, height);\n    } else {\n      canvasEntry = this.canvasFactory.create(width, height);\n      this.cache[id] = canvasEntry;\n    }\n    return canvasEntry;\n  }\n\n  delete(id) {\n    delete this.cache[id];\n  }\n\n  clear() {\n    for (const id in this.cache) {\n      const canvasEntry = this.cache[id];\n      this.canvasFactory.destroy(canvasEntry);\n      delete this.cache[id];\n    }\n  }\n}\n\nfunction drawImageAtIntegerCoords(\n  ctx,\n  srcImg,\n  srcX,\n  srcY,\n  srcW,\n  srcH,\n  destX,\n  destY,\n  destW,\n  destH\n) {\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n  if (b === 0 && c === 0) {\n    // top-left corner is at (X, Y) and\n    // bottom-right one is at (X + width, Y + height).\n\n    // If leftX is 4.321 then it's rounded to 4.\n    // If width is 10.432 then it's rounded to 11 because\n    // rightX = leftX + width = 14.753 which is rounded to 15\n    // so after rounding the total width is 11 (15 - 4).\n    // It's why we can't just floor/ceil uniformly, it just depends\n    // on the values we've.\n\n    const tlX = destX * a + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destY * d + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destX + destW) * a + tx;\n\n    // Some pdf contains images with 1x1 images so in case of 0-width after\n    // scaling we must fallback on 1 to be sure there is something.\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destY + destH) * d + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n    // We must apply a transformation in order to apply it on the image itself.\n    // For example if a == 1 && d == -1, it means that the image itself is\n    // mirrored w.r.t. the x-axis.\n    ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n    ctx.setTransform(a, b, c, d, tx, ty);\n\n    return [rWidth, rHeight];\n  }\n\n  if (a === 0 && d === 0) {\n    // This path is taken in issue9462.pdf (page 3).\n    const tlX = destY * c + tx;\n    const rTlX = Math.round(tlX);\n    const tlY = destX * b + ty;\n    const rTlY = Math.round(tlY);\n    const brX = (destY + destH) * c + tx;\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n    const brY = (destX + destW) * b + ty;\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n    ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n    ctx.setTransform(a, b, c, d, tx, ty);\n\n    return [rHeight, rWidth];\n  }\n\n  // Not a scale matrix so let the render handle the case without rounding.\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n  const scaleX = Math.hypot(a, b);\n  const scaleY = Math.hypot(c, d);\n  return [scaleX * destW, scaleY * destH];\n}\n\nclass CanvasExtraState {\n  // Are soft masks and alpha values shapes or opacities?\n  alphaIsShape = false;\n\n  fontSize = 0;\n\n  fontSizeScale = 1;\n\n  textMatrix = null;\n\n  textMatrixScale = 1;\n\n  fontMatrix = FONT_IDENTITY_MATRIX;\n\n  leading = 0;\n\n  // Current point (in user coordinates)\n  x = 0;\n\n  y = 0;\n\n  // Start of text line (in text coordinates)\n  lineX = 0;\n\n  lineY = 0;\n\n  // Character and word spacing\n  charSpacing = 0;\n\n  wordSpacing = 0;\n\n  textHScale = 1;\n\n  textRenderingMode = TextRenderingMode.FILL;\n\n  textRise = 0;\n\n  // Default fore and background colors\n  fillColor = \"#000000\";\n\n  strokeColor = \"#000000\";\n\n  patternFill = false;\n\n  patternStroke = false;\n\n  // Note: fill alpha applies to all non-stroking operations\n  fillAlpha = 1;\n\n  strokeAlpha = 1;\n\n  lineWidth = 1;\n\n  activeSMask = null;\n\n  transferMaps = \"none\";\n\n  constructor(width, height, preInit) {\n    preInit?.(this);\n\n    this.clipBox = new Float32Array([0, 0, width, height]);\n    this.minMax = MIN_MAX_INIT.slice();\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    clone.minMax = this.minMax.slice();\n    return clone;\n  }\n\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    const box = this.minMax.slice();\n    if (pathType === PathType.STROKE) {\n      if (!transform) {\n        unreachable(\"Stroke bounding box must include transform.\");\n      }\n      // Stroked paths can be outside of the path bounding box by 1/2 the line\n      // width.\n      Util.singularValueDecompose2dScale(transform, XY);\n      const xStrokePad = (XY[0] * this.lineWidth) / 2;\n      const yStrokePad = (XY[1] * this.lineWidth) / 2;\n      box[0] -= xStrokePad;\n      box[1] -= yStrokePad;\n      box[2] += xStrokePad;\n      box[3] += yStrokePad;\n    }\n    return box;\n  }\n\n  updateClipFromPath() {\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n\n  isEmptyClip() {\n    return this.minMax[0] === Infinity;\n  }\n\n  startNewPathAndClipBox(box) {\n    this.clipBox.set(box, 0);\n    this.minMax.set(MIN_MAX_INIT, 0);\n  }\n\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    return Util.intersect(\n      this.clipBox,\n      this.getPathBoundingBox(pathType, transform)\n    );\n  }\n}\n\nfunction putBinaryImageData(ctx, imgData) {\n  if (imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\n  }\n\n  // Put the image data to the canvas in chunks, rather than putting the\n  // whole image at once.  This saves JS memory, because the ImageData object\n  // is smaller. It also possibly saves C++ memory within the implementation\n  // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n  // the data passed to putImageData()). |n| shouldn't be too small, however,\n  // because too many putImageData() calls will slow things down.\n  //\n  // Note: as written, if the last chunk is partial, the putImageData() call\n  // will (conceptually) put pixels past the bounds of the canvas.  But\n  // that's ok; any such pixels are ignored.\n\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0,\n    destPos;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  let i, j, thisChunkHeight, elemsInThisChunk;\n\n  // There are multiple forms in which the pixel data can be passed, and\n  // imgData.kind tells us which one this is.\n  if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n    // Grayscale, 1 bit per pixel (i.e. black-and-white).\n    const srcLength = src.byteLength;\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n    const dest32DataLength = dest32.length;\n    const fullSrcDiff = (width + 7) >> 3;\n    const white = 0xffffffff;\n    const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n    for (i = 0; i < totalChunks; i++) {\n      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n      destPos = 0;\n      for (j = 0; j < thisChunkHeight; j++) {\n        const srcDiff = srcLength - srcPos;\n        let k = 0;\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n        const kEndUnrolled = kEnd & ~7;\n        let mask = 0;\n        let srcByte = 0;\n        for (; k < kEndUnrolled; k += 8) {\n          srcByte = src[srcPos++];\n          dest32[destPos++] = srcByte & 128 ? white : black;\n          dest32[destPos++] = srcByte & 64 ? white : black;\n          dest32[destPos++] = srcByte & 32 ? white : black;\n          dest32[destPos++] = srcByte & 16 ? white : black;\n          dest32[destPos++] = srcByte & 8 ? white : black;\n          dest32[destPos++] = srcByte & 4 ? white : black;\n          dest32[destPos++] = srcByte & 2 ? white : black;\n          dest32[destPos++] = srcByte & 1 ? white : black;\n        }\n        for (; k < kEnd; k++) {\n          if (mask === 0) {\n            srcByte = src[srcPos++];\n            mask = 128;\n          }\n\n          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n      // We ran out of input. Make all remaining pixels transparent.\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n    // RGBA, 32-bits per pixel.\n    j = 0;\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n    for (i = 0; i < fullChunks; i++) {\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      srcPos += elemsInThisChunk;\n\n      ctx.putImageData(chunkImgData, 0, j);\n      j += FULL_CHUNK_HEIGHT;\n    }\n    if (i < totalChunks) {\n      elemsInThisChunk = width * partialChunkHeight * 4;\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === ImageKind.RGB_24BPP) {\n    // RGB, 24-bits per pixel.\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\n    elemsInThisChunk = width * thisChunkHeight;\n    for (i = 0; i < totalChunks; i++) {\n      if (i >= fullChunks) {\n        thisChunkHeight = partialChunkHeight;\n        elemsInThisChunk = width * thisChunkHeight;\n      }\n\n      destPos = 0;\n      for (j = elemsInThisChunk; j--; ) {\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = 255;\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else {\n    throw new Error(`bad image kind: ${imgData.kind}`);\n  }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n  if (imgData.bitmap) {\n    // The bitmap has been created in the worker.\n    ctx.drawImage(imgData.bitmap, 0, 0);\n    return;\n  }\n\n  // Slow path: OffscreenCanvas isn't available in the worker.\n  const height = imgData.height,\n    width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n\n  for (let i = 0; i < totalChunks; i++) {\n    const thisChunkHeight =\n      i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n    // Expand the mask so it can be used by the canvas.  Any required\n    // inversion has already been handled.\n\n    ({ srcPos } = convertBlackAndWhiteToRGBA({\n      src,\n      srcPos,\n      dest,\n      width,\n      height: thisChunkHeight,\n      nonBlackColor: 0,\n    }));\n\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\n    \"strokeStyle\",\n    \"fillStyle\",\n    \"fillRule\",\n    \"globalAlpha\",\n    \"lineWidth\",\n    \"lineCap\",\n    \"lineJoin\",\n    \"miterLimit\",\n    \"globalCompositeOperation\",\n    \"font\",\n    \"filter\",\n  ];\n  for (const property of properties) {\n    if (sourceCtx[property] !== undefined) {\n      destCtx[property] = sourceCtx[property];\n    }\n  }\n  if (sourceCtx.setLineDash !== undefined) {\n    destCtx.setLineDash(sourceCtx.getLineDash());\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n  }\n}\n\nfunction resetCtxToDefault(ctx) {\n  ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n  ctx.fillRule = \"nonzero\";\n  ctx.globalAlpha = 1;\n  ctx.lineWidth = 1;\n  ctx.lineCap = \"butt\";\n  ctx.lineJoin = \"miter\";\n  ctx.miterLimit = 10;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.font = \"10px sans-serif\";\n  if (ctx.setLineDash !== undefined) {\n    ctx.setLineDash([]);\n    ctx.lineDashOffset = 0;\n  }\n  const { filter } = ctx;\n  if (filter !== \"none\" && filter !== \"\") {\n    ctx.filter = \"none\";\n  }\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  // In section 8.9.5.3 of the PDF spec, it's mentioned that the interpolate\n  // flag should be used when the image is upscaled.\n  // In Firefox, smoothing is always used when downscaling images (bug 1360415).\n\n  if (interpolate) {\n    return true;\n  }\n\n  Util.singularValueDecompose2dScale(transform, XY);\n  // Round to a 32bit float so that `<=` check below will pass for numbers that\n  // are very close, but not exactly the same 64bit floats.\n  const actualScale = Math.fround(\n    OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS\n  );\n  // `XY` is a Float32Array.\n  return XY[0] <= actualScale && XY[1] <= actualScale;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n  constructor(\n    canvasCtx,\n    commonObjs,\n    objs,\n    canvasFactory,\n    filterFactory,\n    { optionalContentConfig, markedContentStack = null },\n    annotationCanvasMap,\n    pageColors,\n    dependencyTracker\n  ) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this.groupStack = [];\n    // Patterns are painted relative to the initial page/form transform, see\n    // PDF spec 8.7.2 NOTE 1.\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.suspendedCtx = null;\n    this.contentVisible = true;\n    this.markedContentStack = markedContentStack || [];\n    this.optionalContentConfig = optionalContentConfig;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    this.cachedPatterns = new Map();\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.viewportScale = 1;\n    this.outputScaleX = 1;\n    this.outputScaleY = 1;\n    this.pageColors = pageColors;\n\n    this._cachedScaleForStroking = [-1, 0];\n    this._cachedGetSinglePixelWidth = null;\n    this._cachedBitmapsMap = new Map();\n\n    this.dependencyTracker = dependencyTracker ?? null;\n  }\n\n  getObject(opIdx, data, fallback = null) {\n    if (typeof data === \"string\") {\n      this.dependencyTracker?.recordNamedDependency(opIdx, data);\n      return data.startsWith(\"g_\")\n        ? this.commonObjs.get(data)\n        : this.objs.get(data);\n    }\n    return fallback;\n  }\n\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null,\n  }) {\n    // For pdfs that use blend modes we have to clear the canvas else certain\n    // blend modes can look wrong since we'd be blending with a white\n    // backdrop. The problem with a transparent backdrop though is we then\n    // don't get sub pixel anti aliasing on text, creating temporary\n    // transparent canvas when we have blend modes.\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\n\n    const savedFillStyle = this.ctx.fillStyle;\n    this.ctx.fillStyle = background || \"#ffffff\";\n    this.ctx.fillRect(0, 0, width, height);\n    this.ctx.fillStyle = savedFillStyle;\n\n    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\n        \"transparent\",\n        width,\n        height\n      );\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      // The transform can be applied before rendering, transferring it to\n      // the new canvas.\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n    }\n\n    this.ctx.save();\n    resetCtxToDefault(this.ctx);\n    if (transform) {\n      this.ctx.transform(...transform);\n      this.outputScaleX = transform[0];\n      this.outputScaleY = transform[0];\n    }\n    this.ctx.transform(...viewport.transform);\n    this.viewportScale = viewport.scale;\n\n    this.baseTransform = getCurrentTransform(this.ctx);\n  }\n\n  executeOperatorList(\n    operatorList,\n    executionStartIdx,\n    continueCallback,\n    stepper,\n    operationsFilter\n  ) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n\n    // Sometimes the OperatorList to execute is empty.\n    if (argsArrayLen === i) {\n      return i;\n    }\n\n    const chunkOperations =\n      argsArrayLen - i > EXECUTION_STEPS &&\n      typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId, fnArgs;\n\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n\n      if (!operationsFilter || operationsFilter(i)) {\n        fnId = fnArray[i];\n        // TODO: There is a `undefined` coming from somewhere.\n        fnArgs = argsArray[i] ?? null;\n\n        if (fnId !== OPS.dependency) {\n          if (fnArgs === null) {\n            this[fnId](i);\n          } else {\n            this[fnId](i, ...fnArgs);\n          }\n        } else {\n          for (const depObjId of fnArgs) {\n            this.dependencyTracker?.recordNamedData(depObjId, i);\n            const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n            // If the promise isn't resolved yet, add the continueCallback\n            // to the promise and bail out.\n            if (!objsPool.has(depObjId)) {\n              objsPool.get(depObjId, continueCallback);\n              return i;\n            }\n          }\n        }\n      }\n\n      i++;\n\n      // If the entire operatorList was executed, stop as were done.\n      if (i === argsArrayLen) {\n        return i;\n      }\n\n      // If the execution took longer then a certain amount of time and\n      // `continueCallback` is specified, interrupt the execution.\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n        steps = 0;\n      }\n\n      // If the operatorList isn't executed completely yet OR the execution\n      // time was short enough, do another execution round.\n    }\n  }\n\n  #restoreInitialState() {\n    // Finishing all opened operations such as SMask group painting.\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n\n    this.current.activeSMask = null;\n    this.ctx.restore();\n\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n  }\n\n  endDrawing() {\n    this.#restoreInitialState();\n\n    this.cachedCanvases.clear();\n    this.cachedPatterns.clear();\n\n    for (const cache of this._cachedBitmapsMap.values()) {\n      for (const canvas of cache.values()) {\n        if (\n          typeof HTMLCanvasElement !== \"undefined\" &&\n          canvas instanceof HTMLCanvasElement\n        ) {\n          canvas.width = canvas.height = 0;\n        }\n      }\n      cache.clear();\n    }\n    this._cachedBitmapsMap.clear();\n    this.#drawFilter();\n  }\n\n  #drawFilter() {\n    if (this.pageColors) {\n      const hcmFilterId = this.filterFactory.addHCMFilter(\n        this.pageColors.foreground,\n        this.pageColors.background\n      );\n      if (hcmFilterId !== \"none\") {\n        const savedFilter = this.ctx.filter;\n        this.ctx.filter = hcmFilterId;\n        this.ctx.drawImage(this.ctx.canvas, 0, 0);\n        this.ctx.filter = savedFilter;\n      }\n    }\n  }\n\n  _scaleImage(img, inverseTransform) {\n    // Vertical or horizontal scaling shall not be more than 2 to not lose the\n    // pixels during drawImage operation, painting on the temporary canvas(es)\n    // that are twice smaller in size.\n\n    // displayWidth and displayHeight are used for VideoFrame.\n    const width = img.width ?? img.displayWidth;\n    const height = img.height ?? img.displayHeight;\n    let widthScale = Math.max(\n      Math.hypot(inverseTransform[0], inverseTransform[1]),\n      1\n    );\n    let heightScale = Math.max(\n      Math.hypot(inverseTransform[2], inverseTransform[3]),\n      1\n    );\n\n    let paintWidth = width,\n      paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n    while (\n      (widthScale > 2 && paintWidth > 1) ||\n      (heightScale > 2 && paintHeight > 1)\n    ) {\n      let newWidth = paintWidth,\n        newHeight = paintHeight;\n      if (widthScale > 2 && paintWidth > 1) {\n        // See bug 1820511 (Windows specific bug).\n        // TODO: once the above bug is fixed we could revert to:\n        // newWidth = Math.ceil(paintWidth / 2);\n        newWidth =\n          paintWidth >= 16384\n            ? Math.floor(paintWidth / 2) - 1 || 1\n            : Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n      if (heightScale > 2 && paintHeight > 1) {\n        // TODO: see the comment above.\n        newHeight =\n          paintHeight >= 16384\n            ? Math.floor(paintHeight / 2) - 1 || 1\n            : Math.ceil(paintHeight) / 2;\n        heightScale /= paintHeight / newHeight;\n      }\n      tmpCanvas = this.cachedCanvases.getCanvas(\n        tmpCanvasId,\n        newWidth,\n        newHeight\n      );\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(\n        img,\n        0,\n        0,\n        paintWidth,\n        paintHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\n      img = tmpCanvas.canvas;\n      paintWidth = newWidth;\n      paintHeight = newHeight;\n      tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n    }\n    return {\n      img,\n      paintWidth,\n      paintHeight,\n    };\n  }\n\n  _createMaskCanvas(opIdx, img) {\n    const ctx = this.ctx;\n    const { width, height } = img;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const currentTransform = getCurrentTransform(ctx);\n\n    let cache, cacheKey, scaled, maskCanvas;\n    if ((img.bitmap || img.data) && img.count > 1) {\n      const mainKey = img.bitmap || img.data.buffer;\n      // We're reusing the same image several times, so we can cache it.\n      // In case we've a pattern fill we just keep the scaled version of\n      // the image.\n      // Only the scaling part matters, the translation part is just used\n      // to compute offsets (but not when filling patterns see #15573).\n      // TODO: handle the case of a pattern fill if it's possible.\n      cacheKey = JSON.stringify(\n        isPatternFill\n          ? currentTransform\n          : [currentTransform.slice(0, 4), fillColor]\n      );\n\n      cache = this._cachedBitmapsMap.get(mainKey);\n      if (!cache) {\n        cache = new Map();\n        this._cachedBitmapsMap.set(mainKey, cache);\n      }\n      const cachedImage = cache.get(cacheKey);\n      if (cachedImage && !isPatternFill) {\n        const offsetX = Math.round(\n          Math.min(currentTransform[0], currentTransform[2]) +\n            currentTransform[4]\n        );\n        const offsetY = Math.round(\n          Math.min(currentTransform[1], currentTransform[3]) +\n            currentTransform[5]\n        );\n\n        this.dependencyTracker?.recordDependencies(\n          opIdx,\n          Dependencies.transformAndFill\n        );\n        return {\n          canvas: cachedImage,\n          offsetX,\n          offsetY,\n        };\n      }\n      scaled = cachedImage;\n    }\n\n    if (!scaled) {\n      maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      putBinaryImageMask(maskCanvas.context, img);\n    }\n\n    // Create the mask canvas at the size it will be drawn at and also set\n    // its transform to match the current transform so if there are any\n    // patterns applied they will be applied relative to the correct\n    // transform.\n\n    let maskToCanvas = Util.transform(currentTransform, [\n      1 / width,\n      0,\n      0,\n      -1 / height,\n      0,\n      0,\n    ]);\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n    const minMax = MIN_MAX_INIT.slice();\n    Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n    const [minX, minY, maxX, maxY] = minMax;\n    const drawnWidth = Math.round(maxX - minX) || 1;\n    const drawnHeight = Math.round(maxY - minY) || 1;\n    const fillCanvas = this.cachedCanvases.getCanvas(\n      \"fillCanvas\",\n      drawnWidth,\n      drawnHeight\n    );\n    const fillCtx = fillCanvas.context;\n\n    // The offset will be the top-left coordinate mask.\n    // If objToCanvas is [a,b,c,d,e,f] then:\n    //   - offsetX = min(a, c) + e\n    //   - offsetY = min(b, d) + f\n    const offsetX = minX;\n    const offsetY = minY;\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform(...maskToCanvas);\n\n    if (!scaled) {\n      // Pre-scale if needed to improve image smoothing.\n      scaled = this._scaleImage(\n        maskCanvas.canvas,\n        getCurrentTransformInverse(fillCtx)\n      );\n      scaled = scaled.img;\n      if (cache && isPatternFill) {\n        cache.set(cacheKey, scaled);\n      }\n    }\n\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(fillCtx),\n      img.interpolate\n    );\n\n    drawImageAtIntegerCoords(\n      fillCtx,\n      scaled,\n      0,\n      0,\n      scaled.width,\n      scaled.height,\n      0,\n      0,\n      width,\n      height\n    );\n    fillCtx.globalCompositeOperation = \"source-in\";\n\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n      1,\n      0,\n      0,\n      1,\n      -offsetX,\n      -offsetY,\n    ]);\n    fillCtx.fillStyle = isPatternFill\n      ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx)\n      : fillColor;\n\n    fillCtx.fillRect(0, 0, width, height);\n\n    if (cache && !isPatternFill) {\n      // The fill canvas is put in the cache associated to the mask image\n      // so we must remove from the cached canvas: it mustn't be used again.\n      this.cachedCanvases.delete(\"fillCanvas\");\n      cache.set(cacheKey, fillCanvas.canvas);\n    }\n\n    this.dependencyTracker?.recordDependencies(\n      opIdx,\n      Dependencies.transformAndFill\n    );\n\n    // Round the offsets to avoid drawing fractional pixels.\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY),\n    };\n  }\n\n  // Graphics state\n  setLineWidth(opIdx, width) {\n    this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n    if (width !== this.current.lineWidth) {\n      this._cachedScaleForStroking[0] = -1;\n    }\n    this.current.lineWidth = width;\n    this.ctx.lineWidth = width;\n  }\n\n  setLineCap(opIdx, style) {\n    this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n\n  setLineJoin(opIdx, style) {\n    this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n\n  setMiterLimit(opIdx, limit) {\n    this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n    this.ctx.miterLimit = limit;\n  }\n\n  setDash(opIdx, dashArray, dashPhase) {\n    this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n    const ctx = this.ctx;\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash(dashArray);\n      ctx.lineDashOffset = dashPhase;\n    }\n  }\n\n  setRenderingIntent(opIdx, intent) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setFlatness(opIdx, flatness) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setGState(opIdx, states) {\n    for (const [key, value] of states) {\n      switch (key) {\n        case \"LW\":\n          this.setLineWidth(opIdx, value);\n          break;\n        case \"LC\":\n          this.setLineCap(opIdx, value);\n          break;\n        case \"LJ\":\n          this.setLineJoin(opIdx, value);\n          break;\n        case \"ML\":\n          this.setMiterLimit(opIdx, value);\n          break;\n        case \"D\":\n          this.setDash(opIdx, value[0], value[1]);\n          break;\n        case \"RI\":\n          this.setRenderingIntent(opIdx, value);\n          break;\n        case \"FL\":\n          this.setFlatness(opIdx, value);\n          break;\n        case \"Font\":\n          this.setFont(opIdx, value[0], value[1]);\n          break;\n        case \"CA\":\n          this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n          this.current.strokeAlpha = value;\n          break;\n        case \"ca\":\n          this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n          this.ctx.globalAlpha = this.current.fillAlpha = value;\n          break;\n        case \"BM\":\n          this.dependencyTracker?.recordSimpleData(\n            \"globalCompositeOperation\",\n            opIdx\n          );\n          this.ctx.globalCompositeOperation = value;\n          break;\n        case \"SMask\":\n          this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n          this.current.activeSMask = value ? this.tempSMask : null;\n          this.tempSMask = null;\n          this.checkSMaskState();\n          break;\n        case \"TR\":\n          this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n          this.ctx.filter = this.current.transferMaps =\n            this.filterFactory.addFilter(value);\n          break;\n      }\n    }\n  }\n\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\n  }\n\n  checkSMaskState() {\n    const inSMaskMode = this.inSMaskMode;\n    if (this.current.activeSMask && !inSMaskMode) {\n      this.beginSMaskMode();\n    } else if (!this.current.activeSMask && inSMaskMode) {\n      this.endSMaskMode();\n    }\n    // Else, the state is okay and nothing needs to be done.\n  }\n\n  /**\n   * Soft mask mode takes the current main drawing canvas and replaces it with\n   * a temporary canvas. Any drawing operations that happen on the temporary\n   * canvas need to be composed with the main canvas that was suspended (see\n   * `compose()`). The temporary canvas also duplicates many of its operations\n   * on the suspended canvas to keep them in sync, so that when the soft mask\n   * mode ends any clipping paths or transformations will still be active and in\n   * the right order on the canvas' graphics state stack.\n   */\n  beginSMaskMode(opIdx) {\n    if (this.inSMaskMode) {\n      throw new Error(\"beginSMaskMode called while already in smask mode\");\n    }\n    const drawnWidth = this.ctx.canvas.width;\n    const drawnHeight = this.ctx.canvas.height;\n    const cacheId = \"smaskGroupAt\" + this.groupLevel;\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    this.suspendedCtx = this.ctx;\n    const ctx = (this.ctx = scratchCanvas.context);\n    ctx.setTransform(this.suspendedCtx.getTransform());\n    copyCtxState(this.suspendedCtx, ctx);\n    mirrorContextOperations(ctx, this.suspendedCtx);\n\n    this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n  }\n\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n    // The soft mask is done, now restore the suspended canvas as the main\n    // drawing canvas.\n    this.ctx._removeMirroring();\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n\n    this.suspendedCtx = null;\n  }\n\n  compose(dirtyBox) {\n    if (!this.current.activeSMask) {\n      return;\n    }\n\n    if (!dirtyBox) {\n      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n    } else {\n      dirtyBox[0] = Math.floor(dirtyBox[0]);\n      dirtyBox[1] = Math.floor(dirtyBox[1]);\n      dirtyBox[2] = Math.ceil(dirtyBox[2]);\n      dirtyBox[3] = Math.ceil(dirtyBox[3]);\n    }\n    const smask = this.current.activeSMask;\n    const suspendedCtx = this.suspendedCtx;\n\n    this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n    // Whatever was drawn has been moved to the suspended canvas, now clear it\n    // out of the current canvas.\n    this.ctx.save();\n    this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n    this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n    this.ctx.restore();\n  }\n\n  composeSMask(ctx, smask, layerCtx, layerBox) {\n    const layerOffsetX = layerBox[0];\n    const layerOffsetY = layerBox[1];\n    const layerWidth = layerBox[2] - layerOffsetX;\n    const layerHeight = layerBox[3] - layerOffsetY;\n    if (layerWidth === 0 || layerHeight === 0) {\n      return;\n    }\n    this.genericComposeSMask(\n      smask.context,\n      layerCtx,\n      layerWidth,\n      layerHeight,\n      smask.subtype,\n      smask.backdrop,\n      smask.transferMap,\n      layerOffsetX,\n      layerOffsetY,\n      smask.offsetX,\n      smask.offsetY\n    );\n    ctx.save();\n    ctx.globalAlpha = 1;\n    ctx.globalCompositeOperation = \"source-over\";\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(layerCtx.canvas, 0, 0);\n    ctx.restore();\n  }\n\n  genericComposeSMask(\n    maskCtx,\n    layerCtx,\n    width,\n    height,\n    subtype,\n    backdrop,\n    transferMap,\n    layerOffsetX,\n    layerOffsetY,\n    maskOffsetX,\n    maskOffsetY\n  ) {\n    let maskCanvas = maskCtx.canvas;\n    let maskX = layerOffsetX - maskOffsetX;\n    let maskY = layerOffsetY - maskOffsetY;\n\n    if (backdrop) {\n      if (\n        maskX < 0 ||\n        maskY < 0 ||\n        maskX + width > maskCanvas.width ||\n        maskY + height > maskCanvas.height\n      ) {\n        const canvas = this.cachedCanvases.getCanvas(\n          \"maskExtension\",\n          width,\n          height\n        );\n        const ctx = canvas.context;\n        ctx.drawImage(maskCanvas, -maskX, -maskY);\n        ctx.globalCompositeOperation = \"destination-atop\";\n        ctx.fillStyle = backdrop;\n        ctx.fillRect(0, 0, width, height);\n        ctx.globalCompositeOperation = \"source-over\";\n\n        maskCanvas = canvas.canvas;\n        maskX = maskY = 0;\n      } else {\n        maskCtx.save();\n        maskCtx.globalAlpha = 1;\n        maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n        const clip = new Path2D();\n        clip.rect(maskX, maskY, width, height);\n        maskCtx.clip(clip);\n        maskCtx.globalCompositeOperation = \"destination-atop\";\n        maskCtx.fillStyle = backdrop;\n        maskCtx.fillRect(maskX, maskY, width, height);\n        maskCtx.restore();\n      }\n    }\n\n    layerCtx.save();\n    layerCtx.globalAlpha = 1;\n    layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n\n    if (subtype === \"Alpha\" && transferMap) {\n      layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n    } else if (subtype === \"Luminosity\") {\n      layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n    }\n\n    const clip = new Path2D();\n    clip.rect(layerOffsetX, layerOffsetY, width, height);\n    layerCtx.clip(clip);\n    layerCtx.globalCompositeOperation = \"destination-in\";\n    layerCtx.drawImage(\n      maskCanvas,\n      maskX,\n      maskY,\n      width,\n      height,\n      layerOffsetX,\n      layerOffsetY,\n      width,\n      height\n    );\n    layerCtx.restore();\n  }\n\n  save(opIdx) {\n    if (this.inSMaskMode) {\n      // SMask mode may be turned on/off causing us to lose graphics state.\n      // Copy the temporary canvas state to the main(suspended) canvas to keep\n      // it in sync.\n      copyCtxState(this.ctx, this.suspendedCtx);\n    }\n    this.ctx.save();\n    const old = this.current;\n    this.stateStack.push(old);\n    this.current = old.clone();\n    this.dependencyTracker?.save(opIdx);\n  }\n\n  restore(opIdx) {\n    this.dependencyTracker?.restore(opIdx);\n\n    if (this.stateStack.length === 0) {\n      if (this.inSMaskMode) {\n        this.endSMaskMode();\n      }\n      return;\n    }\n\n    this.current = this.stateStack.pop();\n    this.ctx.restore();\n    if (this.inSMaskMode) {\n      // Graphics state is stored on the main(suspended) canvas. Restore its\n      // state then copy it over to the temporary canvas.\n      copyCtxState(this.suspendedCtx, this.ctx);\n    }\n    this.checkSMaskState();\n\n    // Ensure that the clipping path is reset (fixes issue6413.pdf).\n    this.pendingClip = null;\n\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  transform(opIdx, a, b, c, d, e, f) {\n    this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n    this.ctx.transform(a, b, c, d, e, f);\n\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  // Path\n  constructPath(opIdx, op, data, minMax) {\n    let [path] = data;\n    if (!minMax) {\n      // The path is empty, so no need to update the current minMax.\n      path ||= data[0] = new Path2D();\n      this[op](opIdx, path);\n      return;\n    }\n\n    if (this.dependencyTracker !== null) {\n      const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n      this.dependencyTracker\n        .resetBBox(opIdx)\n        .recordBBox(\n          opIdx,\n          this.ctx,\n          minMax[0] - outerExtraSize,\n          minMax[2] + outerExtraSize,\n          minMax[1] - outerExtraSize,\n          minMax[3] + outerExtraSize\n        )\n        .recordDependencies(opIdx, [\"transform\"]);\n    }\n\n    if (!(path instanceof Path2D)) {\n      path = data[0] = makePathFromDrawOPS(path);\n    }\n    Util.axialAlignedBoundingBox(\n      minMax,\n      getCurrentTransform(this.ctx),\n      this.current.minMax\n    );\n    this[op](opIdx, path);\n\n    this._pathStartIdx = opIdx;\n  }\n\n  closePath(opIdx) {\n    this.ctx.closePath();\n  }\n\n  stroke(opIdx, path, consumePath = true) {\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\n    // For stroke we want to temporarily change the global alpha to the\n    // stroking alpha.\n    ctx.globalAlpha = this.current.strokeAlpha;\n    if (this.contentVisible) {\n      if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n        const baseTransform = strokeColor.isModifyingCurrentTransform()\n          ? ctx.getTransform()\n          : null;\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(\n          ctx,\n          this,\n          getCurrentTransformInverse(ctx),\n          PathType.STROKE,\n          opIdx\n        );\n        if (baseTransform) {\n          const newPath = new Path2D();\n          newPath.addPath(\n            path,\n            ctx.getTransform().invertSelf().multiplySelf(baseTransform)\n          );\n          path = newPath;\n        }\n        this.rescaleAndStroke(path, /* saveRestore */ false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(path, /* saveRestore */ true);\n      }\n    }\n\n    this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n\n    if (consumePath) {\n      this.consumePath(\n        opIdx,\n        path,\n        this.current.getClippedPathBoundingBox(\n          PathType.STROKE,\n          getCurrentTransform(this.ctx)\n        )\n      );\n    }\n\n    // Restore the global alpha to the fill alpha\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n\n  closeStroke(opIdx, path) {\n    this.stroke(opIdx, path);\n  }\n\n  fill(opIdx, path, consumePath = true) {\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    let needRestore = false;\n\n    if (isPatternFill) {\n      const baseTransform = fillColor.isModifyingCurrentTransform()\n        ? ctx.getTransform()\n        : null;\n      this.dependencyTracker?.save(opIdx);\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL,\n        opIdx\n      );\n      if (baseTransform) {\n        const newPath = new Path2D();\n        newPath.addPath(\n          path,\n          ctx.getTransform().invertSelf().multiplySelf(baseTransform)\n        );\n        path = newPath;\n      }\n      needRestore = true;\n    }\n\n    const intersect = this.current.getClippedPathBoundingBox();\n    if (this.contentVisible && intersect !== null) {\n      if (this.pendingEOFill) {\n        ctx.fill(path, \"evenodd\");\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill(path);\n      }\n    }\n\n    this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n\n    if (needRestore) {\n      ctx.restore();\n      this.dependencyTracker?.restore(opIdx);\n    }\n    if (consumePath) {\n      this.consumePath(opIdx, path, intersect);\n    }\n  }\n\n  eoFill(opIdx, path) {\n    this.pendingEOFill = true;\n    this.fill(opIdx, path);\n  }\n\n  fillStroke(opIdx, path) {\n    this.fill(opIdx, path, false);\n    this.stroke(opIdx, path, false);\n\n    this.consumePath(opIdx, path);\n  }\n\n  eoFillStroke(opIdx, path) {\n    this.pendingEOFill = true;\n    this.fillStroke(opIdx, path);\n  }\n\n  closeFillStroke(opIdx, path) {\n    this.fillStroke(opIdx, path);\n  }\n\n  closeEOFillStroke(opIdx, path) {\n    this.pendingEOFill = true;\n    this.fillStroke(opIdx, path);\n  }\n\n  endPath(opIdx, path) {\n    this.consumePath(opIdx, path);\n  }\n\n  rawFillPath(opIdx, path) {\n    this.ctx.fill(path);\n    this.dependencyTracker\n      ?.recordDependencies(opIdx, Dependencies.rawFillPath)\n      .recordOperation(opIdx);\n  }\n\n  // Clipping\n  clip(opIdx) {\n    this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n    this.pendingClip = NORMAL_CLIP;\n  }\n\n  eoClip(opIdx) {\n    this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n    this.pendingClip = EO_CLIP;\n  }\n\n  // Text\n  beginText(opIdx) {\n    this.current.textMatrix = null;\n    this.current.textMatrixScale = 1;\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n\n    this.dependencyTracker\n      ?.recordOpenMarker(opIdx)\n      .resetIncrementalData(\"sameLineText\")\n      .resetIncrementalData(\"moveText\", opIdx);\n  }\n\n  endText(opIdx) {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n\n    if (this.dependencyTracker) {\n      const { dependencyTracker } = this;\n      if (paths !== undefined) {\n        dependencyTracker\n          .recordFutureForcedDependency(\n            \"textClip\",\n            dependencyTracker.getOpenMarker()\n          )\n          .recordFutureForcedDependency(\"textClip\", opIdx);\n      }\n      dependencyTracker.recordCloseMarker(opIdx);\n    }\n\n    if (paths !== undefined) {\n      const newPath = new Path2D();\n      const invTransf = ctx.getTransform().invertSelf();\n      for (const { transform, x, y, fontSize, path } of paths) {\n        if (!path) {\n          continue; // Skip empty paths.\n        }\n        newPath.addPath(\n          path,\n          new DOMMatrix(transform)\n            .preMultiplySelf(invTransf)\n            .translate(x, y)\n            .scale(fontSize, -fontSize)\n        );\n      }\n\n      ctx.clip(newPath);\n    }\n    delete this.pendingTextPaths;\n  }\n\n  setCharSpacing(opIdx, spacing) {\n    this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n    this.current.charSpacing = spacing;\n  }\n\n  setWordSpacing(opIdx, spacing) {\n    this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n    this.current.wordSpacing = spacing;\n  }\n\n  setHScale(opIdx, scale) {\n    this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n    this.current.textHScale = scale / 100;\n  }\n\n  setLeading(opIdx, leading) {\n    this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n    this.current.leading = -leading;\n  }\n\n  setFont(opIdx, fontRefName, size) {\n    this.dependencyTracker\n      ?.recordSimpleData(\"font\", opIdx)\n      .recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\n    const fontObj = this.commonObjs.get(fontRefName);\n    const current = this.current;\n\n    if (!fontObj) {\n      throw new Error(`Can't find font for ${fontRefName}`);\n    }\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n    // A valid matrix needs all main diagonal elements to be non-zero\n    // This also ensures we bypass FF bugzilla bug #719844.\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      warn(\"Invalid font matrix for font \" + fontRefName);\n    }\n\n    // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n    // and in some docs this can be negative (inverted x-y axes).\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n\n    if (fontObj.isType3Font) {\n      return; // we don't need ctx.font for Type3 fonts\n    }\n\n    const name = fontObj.loadedName || \"sans-serif\";\n    const typeface =\n      fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n\n    let bold = \"normal\";\n    if (fontObj.black) {\n      bold = \"900\";\n    } else if (fontObj.bold) {\n      bold = \"bold\";\n    }\n    const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n    // Some font backends cannot handle fonts below certain size.\n    // Keeping the font at minimal size and using the fontSizeScale to change\n    // the current transformation matrix before the fillText/strokeText.\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n    let browserFontSize = size;\n    if (size < MIN_FONT_SIZE) {\n      browserFontSize = MIN_FONT_SIZE;\n    } else if (size > MAX_FONT_SIZE) {\n      browserFontSize = MAX_FONT_SIZE;\n    }\n    this.current.fontSizeScale = size / browserFontSize;\n\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n\n  setTextRenderingMode(opIdx, mode) {\n    this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n    this.current.textRenderingMode = mode;\n  }\n\n  setTextRise(opIdx, rise) {\n    this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n    this.current.textRise = rise;\n  }\n\n  moveText(opIdx, x, y) {\n    this.dependencyTracker\n      ?.resetIncrementalData(\"sameLineText\")\n      .recordIncrementalData(\"moveText\", opIdx);\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n\n  setLeadingMoveText(opIdx, x, y) {\n    this.setLeading(opIdx, -y);\n    this.moveText(opIdx, x, y);\n  }\n\n  setTextMatrix(opIdx, matrix) {\n    this.dependencyTracker\n      ?.resetIncrementalData(\"sameLineText\")\n      .recordSimpleData(\"textMatrix\", opIdx);\n    const { current } = this;\n    current.textMatrix = matrix;\n    current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n\n    current.x = current.lineX = 0;\n    current.y = current.lineY = 0;\n  }\n\n  nextLine(opIdx) {\n    this.moveText(opIdx, 0, this.current.leading);\n\n    this.dependencyTracker?.recordIncrementalData(\n      \"moveText\",\n      // 'leading' affects 'nextLine' operations. Rather than dealing\n      // with transitive dependencies, just mark everything that depends on\n      // the 'moveText' operation as depending on the 'leading' value.\n      this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx\n    );\n  }\n\n  #getScaledPath(path, currentTransform, transform) {\n    const newPath = new Path2D();\n    newPath.addPath(\n      path,\n      new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform)\n    );\n    return newPath;\n  }\n\n  paintChar(\n    opIdx,\n    character,\n    x,\n    y,\n    patternFillTransform,\n    patternStrokeTransform\n  ) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const textRenderingMode = current.textRenderingMode;\n    const fontSize = current.fontSize / current.fontSizeScale;\n    const fillStrokeMode =\n      textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(\n      textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n    );\n    const patternFill = current.patternFill && !font.missingFile;\n    const patternStroke = current.patternStroke && !font.missingFile;\n\n    let path;\n    if (\n      (font.disableFontFace ||\n        isAddToPathSet ||\n        patternFill ||\n        patternStroke) &&\n      !font.missingFile\n    ) {\n      path = font.getPathGenerator(this.commonObjs, character);\n    }\n\n    if (path && (font.disableFontFace || patternFill || patternStroke)) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.scale(fontSize, -fontSize);\n\n      this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n\n      let currentTransform;\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        if (patternFillTransform) {\n          currentTransform = ctx.getTransform();\n          ctx.setTransform(...patternFillTransform);\n          const scaledPath = this.#getScaledPath(\n            path,\n            currentTransform,\n            patternFillTransform\n          );\n          ctx.fill(scaledPath);\n        } else {\n          ctx.fill(path);\n        }\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        if (patternStrokeTransform) {\n          currentTransform ||= ctx.getTransform();\n          ctx.setTransform(...patternStrokeTransform);\n          const { a, b, c, d } = currentTransform;\n          const invPatternTransform = Util.inverseTransform(\n            patternStrokeTransform\n          );\n          const transf = Util.transform(\n            [a, b, c, d, 0, 0],\n            invPatternTransform\n          );\n          Util.singularValueDecompose2dScale(transf, XY);\n\n          // Cancel the pattern scaling of the line width.\n          // If sx and sy are different, unfortunately we can't do anything and\n          // we'll have a rendering bug.\n          ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n          ctx.stroke(\n            this.#getScaledPath(path, currentTransform, patternStrokeTransform)\n          );\n        } else {\n          ctx.lineWidth /= fontSize;\n          ctx.stroke(path);\n        }\n      }\n      ctx.restore();\n    } else {\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.fillText(character, x, y);\n        this.dependencyTracker?.recordCharacterBBox(\n          opIdx,\n          ctx,\n          font,\n          fontSize,\n          x,\n          y,\n          () => ctx.measureText(character)\n        );\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        if (this.dependencyTracker) {\n          this.dependencyTracker\n            ?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () =>\n              ctx.measureText(character)\n            )\n            .recordDependencies(opIdx, Dependencies.stroke);\n        }\n        ctx.strokeText(character, x, y);\n      }\n    }\n\n    if (isAddToPathSet) {\n      const paths = (this.pendingTextPaths ||= []);\n      paths.push({\n        transform: getCurrentTransform(ctx),\n        x,\n        y,\n        fontSize,\n        path,\n      });\n      this.dependencyTracker?.recordCharacterBBox(\n        opIdx,\n        ctx,\n        font,\n        fontSize,\n        x,\n        y\n      );\n    }\n  }\n\n  get isFontSubpixelAAEnabled() {\n    // Checks if anti-aliasing is enabled when scaled text is painted.\n    // On Windows GDI scaled fonts looks bad.\n    const { context: ctx } = this.cachedCanvases.getCanvas(\n      \"isFontSubpixelAAEnabled\",\n      10,\n      10\n    );\n    ctx.scale(1.5, 1);\n    ctx.fillText(\"I\", 0, 10);\n    const data = ctx.getImageData(0, 0, 10, 10).data;\n    let enabled = false;\n    for (let i = 3; i < data.length; i += 4) {\n      if (data[i] > 0 && data[i] < 255) {\n        enabled = true;\n        break;\n      }\n    }\n    return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n  }\n\n  showText(opIdx, glyphs) {\n    if (this.dependencyTracker) {\n      this.dependencyTracker\n        .recordDependencies(opIdx, Dependencies.showText)\n        .resetBBox(opIdx);\n      if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n        this.dependencyTracker\n          .recordFutureForcedDependency(\"textClip\", opIdx)\n          .inheritPendingDependenciesAsFutureForcedDependencies();\n      }\n    }\n\n    const current = this.current;\n    const font = current.font;\n    if (font.isType3Font) {\n      this.showType3Text(opIdx, glyphs);\n      this.dependencyTracker?.recordShowTextOperation(opIdx);\n      return undefined;\n    }\n\n    const fontSize = current.fontSize;\n    if (fontSize === 0) {\n      this.dependencyTracker?.recordOperation(opIdx);\n      return undefined;\n    }\n\n    const ctx = this.ctx;\n    const fontSizeScale = current.fontSizeScale;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const fontDirection = current.fontDirection;\n    const textHScale = current.textHScale * fontDirection;\n    const glyphsLength = glyphs.length;\n    const vertical = font.vertical;\n    const spacingDir = vertical ? 1 : -1;\n    const defaultVMetrics = font.defaultVMetrics;\n    const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n    const simpleFillText =\n      current.textRenderingMode === TextRenderingMode.FILL &&\n      !font.disableFontFace &&\n      !current.patternFill;\n\n    ctx.save();\n    if (current.textMatrix) {\n      ctx.transform(...current.textMatrix);\n    }\n    ctx.translate(current.x, current.y + current.textRise);\n\n    if (fontDirection > 0) {\n      ctx.scale(textHScale, -1);\n    } else {\n      ctx.scale(textHScale, 1);\n    }\n\n    let patternFillTransform, patternStrokeTransform;\n\n    // Only compute pattern transforms if the text rendering mode actually\n    // uses fill/stroke. This avoids expensive pattern calculations each call\n    // when a patternFill/patternStroke is set, but unused.\n    const fillStrokeMode =\n      current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const needsFill =\n      fillStrokeMode === TextRenderingMode.FILL ||\n      fillStrokeMode === TextRenderingMode.FILL_STROKE;\n    const needsStroke =\n      fillStrokeMode === TextRenderingMode.STROKE ||\n      fillStrokeMode === TextRenderingMode.FILL_STROKE;\n\n    if (needsFill && current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL,\n        opIdx\n      );\n      patternFillTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n\n    if (needsStroke && current.patternStroke) {\n      ctx.save();\n      const pattern = current.strokeColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.STROKE,\n        opIdx\n      );\n      patternStrokeTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.strokeStyle = pattern;\n    }\n\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n    if (scale === 0 || lineWidth === 0) {\n      if (needsStroke) {\n        lineWidth = this.getSinglePixelWidth();\n      }\n    } else {\n      lineWidth /= scale;\n    }\n\n    if (fontSizeScale !== 1.0) {\n      ctx.scale(fontSizeScale, fontSizeScale);\n      lineWidth /= fontSizeScale;\n    }\n\n    ctx.lineWidth = lineWidth;\n\n    if (font.isInvalidPDFjsFont) {\n      const chars = [];\n      let width = 0;\n      for (const glyph of glyphs) {\n        chars.push(glyph.unicode);\n        width += glyph.width;\n      }\n      const joinedChars = chars.join(\"\");\n      ctx.fillText(joinedChars, 0, 0);\n      if (this.dependencyTracker !== null) {\n        const measure = ctx.measureText(joinedChars);\n        this.dependencyTracker\n          .recordBBox(\n            opIdx,\n            this.ctx,\n            -measure.actualBoundingBoxLeft,\n            measure.actualBoundingBoxRight,\n            -measure.actualBoundingBoxAscent,\n            measure.actualBoundingBoxDescent\n          )\n          .recordShowTextOperation(opIdx);\n      }\n      current.x += width * widthAdvanceScale * textHScale;\n      ctx.restore();\n      this.compose();\n      return undefined;\n    }\n\n    let x = 0,\n      i;\n    for (i = 0; i < glyphsLength; ++i) {\n      const glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        x += (spacingDir * glyph * fontSize) / 1000;\n        continue;\n      }\n\n      let restoreNeeded = false;\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const character = glyph.fontChar;\n      const accent = glyph.accent;\n      let scaledX, scaledY;\n      let width = glyph.width;\n      if (vertical) {\n        const vmetric = glyph.vmetric || defaultVMetrics;\n        const vx =\n          -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\n\n        width = vmetric ? -vmetric[0] : width;\n        scaledX = vx / fontSizeScale;\n        scaledY = (x + vy) / fontSizeScale;\n      } else {\n        scaledX = x / fontSizeScale;\n        scaledY = 0;\n      }\n\n      let measure;\n\n      if (font.remeasure && width > 0) {\n        measure = ctx.measureText(character);\n\n        // Some standard fonts may not have the exact width: rescale per\n        // character if measured width is greater than expected glyph width\n        // and subpixel-aa is enabled, otherwise just center the glyph.\n        const measuredWidth =\n          ((measure.width * 1000) / fontSize) * fontSizeScale;\n        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n          const characterScaleX = width / measuredWidth;\n          restoreNeeded = true;\n          ctx.save();\n          ctx.scale(characterScaleX, 1);\n          scaledX /= characterScaleX;\n        } else if (width !== measuredWidth) {\n          scaledX +=\n            (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n        }\n      }\n\n      // Only attempt to draw the glyph if it is actually in the embedded font\n      // file or if there isn't a font file so the fallback font is shown.\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          // common case\n          ctx.fillText(character, scaledX, scaledY);\n\n          this.dependencyTracker?.recordCharacterBBox(\n            opIdx,\n            ctx,\n            // If we already measured the character, force usage of that\n            measure ? { bbox: null } : font,\n            fontSize / fontSizeScale,\n            scaledX,\n            scaledY,\n            () => measure ?? ctx.measureText(character)\n          );\n        } else {\n          this.paintChar(\n            opIdx,\n            character,\n            scaledX,\n            scaledY,\n            patternFillTransform,\n            patternStrokeTransform\n          );\n          if (accent) {\n            const scaledAccentX =\n              scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n            const scaledAccentY =\n              scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n            this.paintChar(\n              opIdx,\n              accent.fontChar,\n              scaledAccentX,\n              scaledAccentY,\n              patternFillTransform,\n              patternStrokeTransform\n            );\n          }\n        }\n      }\n\n      const charWidth = vertical\n        ? width * widthAdvanceScale - spacing * fontDirection\n        : width * widthAdvanceScale + spacing * fontDirection;\n      x += charWidth;\n\n      if (restoreNeeded) {\n        ctx.restore();\n      }\n    }\n    if (vertical) {\n      current.y -= x;\n    } else {\n      current.x += x * textHScale;\n    }\n    ctx.restore();\n    this.compose();\n\n    this.dependencyTracker?.recordShowTextOperation(opIdx);\n    return undefined;\n  }\n\n  showType3Text(opIdx, glyphs) {\n    // Type3 fonts - each glyph is a \"mini-PDF\"\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const fontSize = current.fontSize;\n    const fontDirection = current.fontDirection;\n    const spacingDir = font.vertical ? 1 : -1;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const textHScale = current.textHScale * fontDirection;\n    const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n    const glyphsLength = glyphs.length;\n    const isTextInvisible =\n      current.textRenderingMode === TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n\n    ctx.save();\n    if (current.textMatrix) {\n      ctx.transform(...current.textMatrix);\n    }\n    ctx.translate(current.x, current.y + current.textRise);\n\n    ctx.scale(textHScale, fontDirection);\n\n    // Type3 fonts have their own operator list. Avoid mixing it up with the\n    // dependency tracker of the main operator list.\n    const dependencyTracker = this.dependencyTracker;\n    this.dependencyTracker = dependencyTracker\n      ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx)\n      : null;\n\n    for (i = 0; i < glyphsLength; ++i) {\n      glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        spacingLength = (spacingDir * glyph * fontSize) / 1000;\n        this.ctx.translate(spacingLength, 0);\n        current.x += spacingLength * textHScale;\n        continue;\n      }\n\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\n      if (!operatorList) {\n        warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n      } else if (this.contentVisible) {\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform(...fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n      }\n\n      const p = [glyph.width, 0];\n      Util.applyTransform(p, fontMatrix);\n      width = p[0] * fontSize + spacing;\n\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n    ctx.restore();\n    if (dependencyTracker) {\n      this.dependencyTracker = dependencyTracker;\n    }\n  }\n\n  // Type3 fonts\n  setCharWidth(opIdx, xWidth, yWidth) {\n    // We can safely ignore this since the width should be the same\n    // as the width in the Widths array.\n  }\n\n  setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n    const clip = new Path2D();\n    clip.rect(llx, lly, urx - llx, ury - lly);\n    this.ctx.clip(clip);\n    this.dependencyTracker\n      ?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury)\n      .recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n    this.endPath(opIdx);\n  }\n\n  // Color\n  getColorN_Pattern(opIdx, IR) {\n    let pattern;\n    if (IR[0] === \"TilingPattern\") {\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n      const canvasGraphicsFactory = {\n        createCanvasGraphics: (ctx, renderingOpIdx) =>\n          new CanvasGraphics(\n            ctx,\n            this.commonObjs,\n            this.objs,\n            this.canvasFactory,\n            this.filterFactory,\n            {\n              optionalContentConfig: this.optionalContentConfig,\n              markedContentStack: this.markedContentStack,\n            },\n            undefined,\n            undefined,\n            this.dependencyTracker\n              ? new CanvasNestedDependencyTracker(\n                  this.dependencyTracker,\n                  renderingOpIdx,\n                  /* ignoreBBoxes */ true\n                )\n              : null\n          ),\n      };\n      pattern = new TilingPattern(\n        IR,\n        this.ctx,\n        canvasGraphicsFactory,\n        baseTransform\n      );\n    } else {\n      pattern = this._getPattern(opIdx, IR[1], IR[2]);\n    }\n    return pattern;\n  }\n\n  setStrokeColorN(opIdx, ...args) {\n    this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n    this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n    this.current.patternStroke = true;\n  }\n\n  setFillColorN(opIdx, ...args) {\n    this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n    this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n    this.current.patternFill = true;\n  }\n\n  setStrokeRGBColor(opIdx, color) {\n    this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n    this.ctx.strokeStyle = this.current.strokeColor = color;\n    this.current.patternStroke = false;\n  }\n\n  setStrokeTransparent(opIdx) {\n    this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n    this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n    this.current.patternStroke = false;\n  }\n\n  setFillRGBColor(opIdx, color) {\n    this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n    this.ctx.fillStyle = this.current.fillColor = color;\n    this.current.patternFill = false;\n  }\n\n  setFillTransparent(opIdx) {\n    this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n    this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n    this.current.patternFill = false;\n  }\n\n  _getPattern(opIdx, objId, matrix = null) {\n    let pattern;\n    if (this.cachedPatterns.has(objId)) {\n      pattern = this.cachedPatterns.get(objId);\n    } else {\n      pattern = getShadingPattern(this.getObject(opIdx, objId));\n      this.cachedPatterns.set(objId, pattern);\n    }\n    if (matrix) {\n      pattern.matrix = matrix;\n    }\n    return pattern;\n  }\n\n  shadingFill(opIdx, objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    this.save(opIdx);\n    const pattern = this._getPattern(opIdx, objId);\n    ctx.fillStyle = pattern.getPattern(\n      ctx,\n      this,\n      getCurrentTransformInverse(ctx),\n      PathType.SHADING,\n      opIdx\n    );\n\n    const inv = getCurrentTransformInverse(ctx);\n    if (inv) {\n      const { width, height } = ctx.canvas;\n      const minMax = MIN_MAX_INIT.slice();\n      Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n      const [x0, y0, x1, y1] = minMax;\n\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      // HACK to draw the gradient onto an infinite rectangle.\n      // PDF gradients are drawn across the entire image while\n      // Canvas only allows gradients to be drawn in a rectangle\n      // The following bug should allow us to remove this.\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      // TODO: Track proper bbox\n      .recordFullPageBBox(opIdx)\n      .recordDependencies(opIdx, Dependencies.transform)\n      .recordDependencies(opIdx, Dependencies.fill)\n      .recordOperation(opIdx);\n\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore(opIdx);\n  }\n\n  // Images\n  beginInlineImage() {\n    unreachable(\"Should not call beginInlineImage\");\n  }\n\n  beginImageData() {\n    unreachable(\"Should not call beginImageData\");\n  }\n\n  paintFormXObjectBegin(opIdx, matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save(opIdx);\n    this.baseTransformStack.push(this.baseTransform);\n\n    if (matrix) {\n      this.transform(opIdx, ...matrix);\n    }\n    this.baseTransform = getCurrentTransform(this.ctx);\n\n    if (bbox) {\n      Util.axialAlignedBoundingBox(\n        bbox,\n        this.baseTransform,\n        this.current.minMax\n      );\n      const [x0, y0, x1, y1] = bbox;\n      const clip = new Path2D();\n      clip.rect(x0, y0, x1 - x0, y1 - y0);\n      this.ctx.clip(clip);\n      this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n      this.endPath(opIdx);\n    }\n  }\n\n  paintFormXObjectEnd(opIdx) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.restore(opIdx);\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n\n  beginGroup(opIdx, group) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.save(opIdx);\n    // If there's an active soft mask we don't want it enabled for the group, so\n    // clear it out. The mask and suspended canvas will be restored in endGroup.\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n\n    const currentCtx = this.ctx;\n    // TODO non-isolated groups - according to Rik at adobe non-isolated\n    // group results aren't usually that different and they even have tools\n    // that ignore this setting. Notes from Rik on implementing:\n    // - When you encounter an transparency group, create a new canvas with\n    // the dimensions of the bbox\n    // - copy the content from the previous canvas to the new canvas\n    // - draw as usual\n    // - remove the backdrop alpha:\n    // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n    // value of your transparency group and 'alphaBackdrop' the alpha of the\n    // backdrop\n    // - remove background color:\n    // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n    if (!group.isolated) {\n      info(\"TODO: Support non-isolated groups.\");\n    }\n\n    // TODO knockout - supposedly possible with the clever use of compositing\n    // modes.\n    if (group.knockout) {\n      warn(\"Knockout groups not supported.\");\n    }\n\n    const currentTransform = getCurrentTransform(currentCtx);\n    if (group.matrix) {\n      currentCtx.transform(...group.matrix);\n    }\n    if (!group.bbox) {\n      throw new Error(\"Bounding box is required.\");\n    }\n\n    // Based on the current transform figure out how big the bounding box\n    // will actually be.\n    let bounds = MIN_MAX_INIT.slice();\n    Util.axialAlignedBoundingBox(\n      group.bbox,\n      getCurrentTransform(currentCtx),\n      bounds\n    );\n\n    // Clip the bounding box to the current canvas.\n    const canvasBounds = [\n      0,\n      0,\n      currentCtx.canvas.width,\n      currentCtx.canvas.height,\n    ];\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    // Use ceil in case we're between sizes so we don't create canvas that is\n    // too small and make the canvas at least 1x1 pixels.\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n    let cacheId = \"groupAt\" + this.groupLevel;\n    if (group.smask) {\n      // Using two cache entries is case if masks are used one after another.\n      cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n    }\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    const groupCtx = scratchCanvas.context;\n\n    // Since we created a new canvas that is just the size of the bounding box\n    // we have to translate the group ctx.\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform(...currentTransform);\n\n    // Apply the bbox to the group context.\n    let clip = new Path2D();\n    const [x0, y0, x1, y1] = group.bbox;\n    clip.rect(x0, y0, x1 - x0, y1 - y0);\n    if (group.matrix) {\n      const path = new Path2D();\n      path.addPath(clip, new DOMMatrix(group.matrix));\n      clip = path;\n    }\n    groupCtx.clip(clip);\n\n    if (group.smask) {\n      // Saving state and cached mask to be used in setGState.\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null, // used during suspend operation\n      });\n    }\n    if (\n      !group.smask ||\n      // When this is not an SMask group, we only need to update the current\n      // transform if recording operations bboxes, so they the bboxes have the\n      // correct transform applied.\n      this.dependencyTracker\n    ) {\n      // Setup the current ctx so when the group is popped we draw it at the\n      // right location.\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.save();\n    }\n    // The transparency group inherits all off the current graphics state\n    // except the blend mode, soft mask, and alpha constants.\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.dependencyTracker\n      ?.inheritSimpleDataAsFutureForcedDependencies([\n        \"fillAlpha\",\n        \"strokeAlpha\",\n        \"globalCompositeOperation\",\n      ])\n      .pushBaseTransform(currentCtx);\n    this.setGState(opIdx, [\n      [\"BM\", \"source-over\"],\n      [\"ca\", 1],\n      [\"CA\", 1],\n    ]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\n  }\n\n  endGroup(opIdx, group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.groupLevel--;\n    const groupCtx = this.ctx;\n    const ctx = this.groupStack.pop();\n    this.ctx = ctx;\n    // Turn off image smoothing to avoid sub pixel interpolation which can\n    // look kind of blurry for some pdfs.\n    this.ctx.imageSmoothingEnabled = false;\n\n    this.dependencyTracker?.popBaseTransform();\n\n    if (group.smask) {\n      this.tempSMask = this.smaskStack.pop();\n      this.restore(opIdx);\n      if (this.dependencyTracker) {\n        this.ctx.restore();\n      }\n    } else {\n      this.ctx.restore();\n      const currentMtx = getCurrentTransform(this.ctx);\n      this.restore(opIdx);\n      this.ctx.save();\n      this.ctx.setTransform(...currentMtx);\n      const dirtyBox = MIN_MAX_INIT.slice();\n      Util.axialAlignedBoundingBox(\n        [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n        currentMtx,\n        dirtyBox\n      );\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n\n  beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n    // The annotations are drawn just after the page content.\n    // The page content drawing can potentially have set a transform,\n    // a clipping path, whatever...\n    // So in order to have something clean, we restore the initial state.\n    this.#restoreInitialState();\n    resetCtxToDefault(this.ctx);\n\n    this.ctx.save();\n    this.save(opIdx);\n\n    if (this.baseTransform) {\n      this.ctx.setTransform(...this.baseTransform);\n    }\n\n    if (rect) {\n      const width = rect[2] - rect[0];\n      const height = rect[3] - rect[1];\n\n      if (hasOwnCanvas && this.annotationCanvasMap) {\n        transform = transform.slice();\n        transform[4] -= rect[0];\n        transform[5] -= rect[1];\n\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n\n        Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n        const { viewportScale } = this;\n        const canvasWidth = Math.ceil(\n          width * this.outputScaleX * viewportScale\n        );\n        const canvasHeight = Math.ceil(\n          height * this.outputScaleY * viewportScale\n        );\n\n        this.annotationCanvas = this.canvasFactory.create(\n          canvasWidth,\n          canvasHeight\n        );\n        const { canvas, context } = this.annotationCanvas;\n        this.annotationCanvasMap.set(id, canvas);\n        this.annotationCanvas.savedCtx = this.ctx;\n        this.ctx = context;\n        this.ctx.save();\n        this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n\n        resetCtxToDefault(this.ctx);\n      } else {\n        resetCtxToDefault(this.ctx);\n\n        // Consume a potential path before clipping.\n        this.endPath(opIdx);\n\n        const clip = new Path2D();\n        clip.rect(rect[0], rect[1], width, height);\n        this.ctx.clip(clip);\n      }\n    }\n\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n\n    this.transform(opIdx, ...transform);\n    this.transform(opIdx, ...matrix);\n  }\n\n  endAnnotation(opIdx) {\n    if (this.annotationCanvas) {\n      this.ctx.restore();\n      this.#drawFilter();\n\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\n    }\n  }\n\n  paintImageMaskXObject(opIdx, img) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const count = img.count;\n    img = this.getObject(opIdx, img.data, img);\n    img.count = count;\n\n    const ctx = this.ctx;\n    const mask = this._createMaskCanvas(opIdx, img);\n    const maskCanvas = mask.canvas;\n\n    ctx.save();\n    // The mask is drawn with the transform applied. Reset the current\n    // transform to draw to the identity.\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      .recordBBox(\n        opIdx,\n        this.ctx,\n        mask.offsetX,\n        mask.offsetX + maskCanvas.width,\n        mask.offsetY,\n        mask.offsetY + maskCanvas.height\n      )\n      .recordOperation(opIdx);\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectRepeat(\n    opIdx,\n    img,\n    scaleX,\n    skewX = 0,\n    skewY = 0,\n    scaleY,\n    positions\n  ) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    img = this.getObject(opIdx, img.data, img);\n\n    const ctx = this.ctx;\n    ctx.save();\n    const currentTransform = getCurrentTransform(ctx);\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n    const mask = this._createMaskCanvas(opIdx, img);\n\n    ctx.setTransform(\n      1,\n      0,\n      0,\n      1,\n      mask.offsetX - currentTransform[4],\n      mask.offsetY - currentTransform[5]\n    );\n    this.dependencyTracker?.resetBBox(opIdx);\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = Util.transform(currentTransform, [\n        scaleX,\n        skewX,\n        skewY,\n        scaleY,\n        positions[i],\n        positions[i + 1],\n      ]);\n\n      // Here we want to apply the transform at the origin,\n      // hence no additional computation is necessary.\n      ctx.drawImage(mask.canvas, trans[4], trans[5]);\n      this.dependencyTracker?.recordBBox(\n        opIdx,\n        this.ctx,\n        trans[4],\n        trans[4] + mask.canvas.width,\n        trans[5],\n        trans[5] + mask.canvas.height\n      );\n    }\n    ctx.restore();\n    this.compose();\n\n    this.dependencyTracker?.recordOperation(opIdx);\n  }\n\n  paintImageMaskXObjectGroup(opIdx, images) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      .recordDependencies(opIdx, Dependencies.transformAndFill);\n\n    for (const image of images) {\n      const { data, width, height, transform } = image;\n\n      const maskCanvas = this.cachedCanvases.getCanvas(\n        \"maskCanvas\",\n        width,\n        height\n      );\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n\n      const img = this.getObject(opIdx, data, image);\n      putBinaryImageMask(maskCtx, img);\n\n      maskCtx.globalCompositeOperation = \"source-in\";\n\n      maskCtx.fillStyle = isPatternFill\n        ? fillColor.getPattern(\n            maskCtx,\n            this,\n            getCurrentTransformInverse(ctx),\n            PathType.FILL,\n            opIdx\n          )\n        : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n\n      maskCtx.restore();\n\n      ctx.save();\n      ctx.transform(...transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        maskCanvas.canvas,\n        0,\n        0,\n        width,\n        height,\n        0,\n        -1,\n        1,\n        1\n      );\n\n      this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n      ctx.restore();\n    }\n    this.compose();\n    this.dependencyTracker?.recordOperation(opIdx);\n  }\n\n  paintImageXObject(opIdx, objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(opIdx, objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    this.paintInlineImageXObject(opIdx, imgData);\n  }\n\n  paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(opIdx, objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    const width = imgData.width;\n    const height = imgData.height;\n    const map = [];\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      map.push({\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n        x: 0,\n        y: 0,\n        w: width,\n        h: height,\n      });\n    }\n    this.paintInlineImageXObjectGroup(opIdx, imgData, map);\n  }\n\n  applyTransferMapsToCanvas(ctx) {\n    if (this.current.transferMaps !== \"none\") {\n      ctx.filter = this.current.transferMaps;\n      ctx.drawImage(ctx.canvas, 0, 0);\n      ctx.filter = \"none\";\n    }\n    return ctx.canvas;\n  }\n\n  applyTransferMapsToBitmap(imgData) {\n    if (this.current.transferMaps === \"none\") {\n      return imgData.bitmap;\n    }\n    const { bitmap, width, height } = imgData;\n    const tmpCanvas = this.cachedCanvases.getCanvas(\n      \"inlineImage\",\n      width,\n      height\n    );\n    const tmpCtx = tmpCanvas.context;\n    tmpCtx.filter = this.current.transferMaps;\n    tmpCtx.drawImage(bitmap, 0, 0);\n    tmpCtx.filter = \"none\";\n\n    return tmpCanvas.canvas;\n  }\n\n  paintInlineImageXObject(opIdx, imgData) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const ctx = this.ctx;\n\n    this.save(opIdx);\n\n    // The filter, if any, will be applied in applyTransferMapsToBitmap.\n    // It must be applied to the image before rescaling else some artifacts\n    // could appear.\n    // The final restore will reset it to its value.\n    const { filter } = ctx;\n    if (filter !== \"none\" && filter !== \"\") {\n      ctx.filter = \"none\";\n    }\n\n    // scale the image to the unit square\n    ctx.scale(1 / width, -1 / height);\n\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\n    } else if (\n      (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n      !imgData.data\n    ) {\n      // typeof check is needed due to node.js support, see issue #8489\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\n        \"inlineImage\",\n        width,\n        height\n      );\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n\n    const scaled = this._scaleImage(\n      imgToPaint,\n      getCurrentTransformInverse(ctx)\n    );\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(ctx),\n      imgData.interpolate\n    );\n\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      .recordBBox(opIdx, ctx, 0, width, -height, 0)\n      .recordDependencies(opIdx, Dependencies.imageXObject)\n      .recordOperation(opIdx);\n\n    drawImageAtIntegerCoords(\n      ctx,\n      scaled.img,\n      0,\n      0,\n      scaled.paintWidth,\n      scaled.paintHeight,\n      0,\n      -height,\n      width,\n      height\n    );\n    this.compose();\n    this.restore(opIdx);\n  }\n\n  paintInlineImageXObjectGroup(opIdx, imgData, map) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = imgData.bitmap;\n    } else {\n      const w = imgData.width;\n      const h = imgData.height;\n\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n\n    this.dependencyTracker?.resetBBox(opIdx);\n\n    for (const entry of map) {\n      ctx.save();\n      ctx.transform(...entry.transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        imgToPaint,\n        entry.x,\n        entry.y,\n        entry.w,\n        entry.h,\n        0,\n        -1,\n        1,\n        1\n      );\n      this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n      ctx.restore();\n    }\n    this.dependencyTracker?.recordOperation(opIdx);\n    this.compose();\n  }\n\n  paintSolidColorImageMask(opIdx) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      .recordBBox(opIdx, this.ctx, 0, 1, 0, 1)\n      .recordDependencies(opIdx, Dependencies.fill)\n      .recordOperation(opIdx);\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n\n  // Marked content\n\n  markPoint(opIdx, tag) {\n    // TODO Marked content.\n  }\n\n  markPointProps(opIdx, tag, properties) {\n    // TODO Marked content.\n  }\n\n  beginMarkedContent(opIdx, tag) {\n    this.dependencyTracker?.beginMarkedContent(opIdx);\n    this.markedContentStack.push({\n      visible: true,\n    });\n  }\n\n  beginMarkedContentProps(opIdx, tag, properties) {\n    this.dependencyTracker?.beginMarkedContent(opIdx);\n    if (tag === \"OC\") {\n      this.markedContentStack.push({\n        visible: this.optionalContentConfig.isVisible(properties),\n      });\n    } else {\n      this.markedContentStack.push({\n        visible: true,\n      });\n    }\n    this.contentVisible = this.isContentVisible();\n  }\n\n  endMarkedContent(opIdx) {\n    this.dependencyTracker?.endMarkedContent(opIdx);\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n\n  // Compatibility\n\n  beginCompat(opIdx) {\n    // TODO ignore undefined operators (should we do that anyway?)\n  }\n\n  endCompat(opIdx) {\n    // TODO stop ignoring undefined operators\n  }\n\n  // Helper functions\n\n  consumePath(opIdx, path, clipBox) {\n    const isEmpty = this.current.isEmptyClip();\n    if (this.pendingClip) {\n      this.current.updateClipFromPath();\n    }\n    if (!this.pendingClip) {\n      this.compose(clipBox);\n    }\n    const ctx = this.ctx;\n    if (this.pendingClip) {\n      if (!isEmpty) {\n        if (this.pendingClip === EO_CLIP) {\n          ctx.clip(path, \"evenodd\");\n        } else {\n          ctx.clip(path);\n        }\n      }\n      this.pendingClip = null;\n      this.dependencyTracker\n        ?.bboxToClipBoxDropOperation(opIdx)\n        .recordFutureForcedDependency(\"clipPath\", opIdx);\n    } else {\n      this.dependencyTracker?.recordOperation(opIdx);\n    }\n\n    this.current.startNewPathAndClipBox(this.current.clipBox);\n  }\n\n  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = getCurrentTransform(this.ctx);\n      if (m[1] === 0 && m[2] === 0) {\n        // Fast path\n        this._cachedGetSinglePixelWidth =\n          1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n      } else {\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[2]);\n        const normY = Math.hypot(m[1], m[3]);\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n      }\n    }\n    return this._cachedGetSinglePixelWidth;\n  }\n\n  getScaleForStroking() {\n    // A pixel has thicknessX = thicknessY = 1;\n    // A transformed pixel is a parallelogram and the thicknesses\n    // corresponds to the heights.\n    // The goal of this function is to rescale before setting the\n    // lineWidth in order to have both thicknesses greater or equal\n    // to 1 after transform.\n    if (this._cachedScaleForStroking[0] === -1) {\n      const { lineWidth } = this.current;\n      const { a, b, c, d } = this.ctx.getTransform();\n      let scaleX, scaleY;\n\n      if (b === 0 && c === 0) {\n        // Fast path\n        const normX = Math.abs(a);\n        const normY = Math.abs(d);\n        if (normX === normY) {\n          if (lineWidth === 0) {\n            scaleX = scaleY = 1 / normX;\n          } else {\n            const scaledLineWidth = normX * lineWidth;\n            scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n          }\n        } else if (lineWidth === 0) {\n          scaleX = 1 / normX;\n          scaleY = 1 / normY;\n        } else {\n          const scaledXLineWidth = normX * lineWidth;\n          const scaledYLineWidth = normY * lineWidth;\n          scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n          scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n        }\n      } else {\n        // A pixel (base (x, y)) is transformed by M into a parallelogram:\n        //  - its area is |det(M)|;\n        //  - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n        //  - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n        // heightX and heightY are the thicknesses of the transformed pixel\n        // and they must be both greater or equal to 1.\n        const absDet = Math.abs(a * d - b * c);\n        const normX = Math.hypot(a, b);\n        const normY = Math.hypot(c, d);\n        if (lineWidth === 0) {\n          scaleX = normY / absDet;\n          scaleY = normX / absDet;\n        } else {\n          const baseArea = lineWidth * absDet;\n          scaleX = normY > baseArea ? normY / baseArea : 1;\n          scaleY = normX > baseArea ? normX / baseArea : 1;\n        }\n      }\n      this._cachedScaleForStroking[0] = scaleX;\n      this._cachedScaleForStroking[1] = scaleY;\n    }\n    return this._cachedScaleForStroking;\n  }\n\n  // Rescale before stroking in order to have a final lineWidth\n  // with both thicknesses greater or equal to 1.\n  rescaleAndStroke(path, saveRestore) {\n    const {\n      ctx,\n      current: { lineWidth },\n    } = this;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n\n    if (scaleX === scaleY) {\n      ctx.lineWidth = (lineWidth || 1) * scaleX;\n      ctx.stroke(path);\n      return;\n    }\n\n    const dashes = ctx.getLineDash();\n    if (saveRestore) {\n      ctx.save();\n    }\n\n    ctx.scale(scaleX, scaleY);\n    SCALE_MATRIX.a = 1 / scaleX;\n    SCALE_MATRIX.d = 1 / scaleY;\n    const newPath = new Path2D();\n    newPath.addPath(path, SCALE_MATRIX);\n\n    // How the dashed line is rendered depends on the current transform...\n    // so we added a rescale to handle too thin lines and consequently\n    // the way the line is dashed will be modified.\n    // If scaleX === scaleY, the dashed lines will be rendered correctly\n    // else we'll have some bugs (but only with too thin lines).\n    // Here we take the max... why not taking the min... or something else.\n    // Anyway, as said it's buggy when scaleX !== scaleY.\n    if (dashes.length > 0) {\n      const scale = Math.max(scaleX, scaleY);\n      ctx.setLineDash(dashes.map(x => x / scale));\n      ctx.lineDashOffset /= scale;\n    }\n\n    ctx.lineWidth = lineWidth || 1;\n    ctx.stroke(newPath);\n\n    if (saveRestore) {\n      ctx.restore();\n    }\n  }\n\n  isContentVisible() {\n    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n      if (!this.markedContentStack[i].visible) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\nfor (const op in OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\nexport { CanvasGraphics };\n", "/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass GlobalWorkerOptions {\n  static #port = null;\n\n  static #src = \"\";\n\n  /**\n   * @type {Worker | null}\n   */\n  static get workerPort() {\n    return this.#port;\n  }\n\n  /**\n   * @param {Worker | null} workerPort - Defines global port for worker process.\n   *   Overrides the `workerSrc` option.\n   */\n  static set workerPort(val) {\n    if (\n      !(typeof Worker !== \"undefined\" && val instanceof Worker) &&\n      val !== null\n    ) {\n      throw new Error(\"Invalid `workerPort` type.\");\n    }\n    this.#port = val;\n  }\n\n  /**\n   * @type {string}\n   */\n  static get workerSrc() {\n    return this.#src;\n  }\n\n  /**\n   * @param {string} workerSrc - A string containing the path and filename of\n   *   the worker file.\n   *\n   *   NOTE: The `workerSrc` option should always be set, in order to prevent\n   *         any issues when using the PDF.js library.\n   */\n  static set workerSrc(val) {\n    if (typeof val !== \"string\") {\n      throw new Error(\"Invalid `workerSrc` type.\");\n    }\n    this.#src = val;\n  }\n}\n\nexport { GlobalWorkerOptions };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass Metadata {\n  #map;\n\n  #data;\n\n  constructor({ parsedData, rawData }) {\n    this.#map = parsedData;\n    this.#data = rawData;\n  }\n\n  getRaw() {\n    return this.#data;\n  }\n\n  get(name) {\n    return this.#map.get(name) ?? null;\n  }\n\n  [Symbol.iterator]() {\n    return this.#map.entries();\n  }\n}\n\nexport { Metadata };\n", "/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  info,\n  RenderingIntentFlag,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n  #isDisplay = false;\n\n  #isPrint = false;\n\n  #userSet = false;\n\n  #visible = true;\n\n  constructor(renderingIntent, { name, intent, usage, rbGroups }) {\n    this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n    this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n\n    this.name = name;\n    this.intent = intent;\n    this.usage = usage;\n    this.rbGroups = rbGroups;\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get visible() {\n    if (this.#userSet) {\n      return this.#visible;\n    }\n    if (!this.#visible) {\n      return false;\n    }\n    const { print, view } = this.usage;\n\n    if (this.#isDisplay) {\n      return view?.viewState !== \"OFF\";\n    } else if (this.#isPrint) {\n      return print?.printState !== \"OFF\";\n    }\n    return true;\n  }\n\n  /**\n   * @ignore\n   */\n  _setVisible(internal, visible, userSet = false) {\n    if (internal !== INTERNAL) {\n      unreachable(\"Internal method `_setVisible` called.\");\n    }\n    this.#userSet = userSet;\n    this.#visible = visible;\n  }\n}\n\nclass OptionalContentConfig {\n  #cachedGetHash = null;\n\n  #groups = new Map();\n\n  #initialHash = null;\n\n  #order = null;\n\n  constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n    this.renderingIntent = renderingIntent;\n\n    this.name = null;\n    this.creator = null;\n\n    if (data === null) {\n      return;\n    }\n    this.name = data.name;\n    this.creator = data.creator;\n    this.#order = data.order;\n    for (const group of data.groups) {\n      this.#groups.set(\n        group.id,\n        new OptionalContentGroup(renderingIntent, group)\n      );\n    }\n\n    if (data.baseState === \"OFF\") {\n      for (const group of this.#groups.values()) {\n        group._setVisible(INTERNAL, false);\n      }\n    }\n\n    for (const on of data.on) {\n      this.#groups.get(on)._setVisible(INTERNAL, true);\n    }\n\n    for (const off of data.off) {\n      this.#groups.get(off)._setVisible(INTERNAL, false);\n    }\n\n    // The following code must always run *last* in the constructor.\n    this.#initialHash = this.getHash();\n  }\n\n  #evaluateVisibilityExpression(array) {\n    const length = array.length;\n    if (length < 2) {\n      return true;\n    }\n    const operator = array[0];\n    for (let i = 1; i < length; i++) {\n      const element = array[i];\n      let state;\n      if (Array.isArray(element)) {\n        state = this.#evaluateVisibilityExpression(element);\n      } else if (this.#groups.has(element)) {\n        state = this.#groups.get(element).visible;\n      } else {\n        warn(`Optional content group not found: ${element}`);\n        return true;\n      }\n      switch (operator) {\n        case \"And\":\n          if (!state) {\n            return false;\n          }\n          break;\n        case \"Or\":\n          if (state) {\n            return true;\n          }\n          break;\n        case \"Not\":\n          return !state;\n        default:\n          return true;\n      }\n    }\n    return operator === \"And\";\n  }\n\n  isVisible(group) {\n    if (this.#groups.size === 0) {\n      return true;\n    }\n    if (!group) {\n      info(\"Optional content group not defined.\");\n      return true;\n    }\n    if (group.type === \"OCG\") {\n      if (!this.#groups.has(group.id)) {\n        warn(`Optional content group not found: ${group.id}`);\n        return true;\n      }\n      return this.#groups.get(group.id).visible;\n    } else if (group.type === \"OCMD\") {\n      // Per the spec, the expression should be preferred if available.\n      if (group.expression) {\n        return this.#evaluateVisibilityExpression(group.expression);\n      }\n      if (!group.policy || group.policy === \"AnyOn\") {\n        // Default\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOn\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      } else if (group.policy === \"AnyOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      }\n      warn(`Unknown optional content policy ${group.policy}.`);\n      return true;\n    }\n    warn(`Unknown group type ${group.type}.`);\n    return true;\n  }\n\n  setVisibility(id, visible = true, preserveRB = true) {\n    const group = this.#groups.get(id);\n    if (!group) {\n      warn(`Optional content group not found: ${id}`);\n      return;\n    }\n\n    // If the visibility is about to be set to `true` and the group belongs to\n    // any radiobutton groups, hide all other OCGs in these radiobutton groups,\n    // provided that radiobutton state relationships are to be preserved.\n    if (preserveRB && visible && group.rbGroups.length) {\n      for (const rbGroup of group.rbGroups) {\n        for (const otherId of rbGroup) {\n          if (otherId !== id) {\n            this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n          }\n        }\n      }\n    }\n\n    group._setVisible(INTERNAL, !!visible, /* userSet = */ true);\n\n    this.#cachedGetHash = null;\n  }\n\n  setOCGState({ state, preserveRB }) {\n    let operator;\n\n    for (const elem of state) {\n      switch (elem) {\n        case \"ON\":\n        case \"OFF\":\n        case \"Toggle\":\n          operator = elem;\n          continue;\n      }\n\n      const group = this.#groups.get(elem);\n      if (!group) {\n        continue;\n      }\n      switch (operator) {\n        case \"ON\":\n          this.setVisibility(elem, true, preserveRB);\n          break;\n        case \"OFF\":\n          this.setVisibility(elem, false, preserveRB);\n          break;\n        case \"Toggle\":\n          this.setVisibility(elem, !group.visible, preserveRB);\n          break;\n      }\n    }\n\n    this.#cachedGetHash = null;\n  }\n\n  get hasInitialVisibility() {\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\n  }\n\n  getOrder() {\n    if (!this.#groups.size) {\n      return null;\n    }\n    if (this.#order) {\n      return this.#order.slice();\n    }\n    return [...this.#groups.keys()];\n  }\n\n  getGroup(id) {\n    return this.#groups.get(id) || null;\n  }\n\n  getHash() {\n    if (this.#cachedGetHash !== null) {\n      return this.#cachedGetHash;\n    }\n    const hash = new MurmurHash3_64();\n\n    for (const [id, group] of this.#groups) {\n      hash.update(`${id}:${group.visible}`);\n    }\n    return (this.#cachedGetHash = hash.hexdigest());\n  }\n\n  [Symbol.iterator]() {\n    return this.#groups.entries();\n  }\n}\n\nexport { OptionalContentConfig };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../interfaces\").IPDFStream} IPDFStream */\n/** @typedef {import(\"../interfaces\").IPDFStreamReader} IPDFStreamReader */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../interfaces\").IPDFStreamRangeReader} IPDFStreamRangeReader */\n\nimport { assert } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n  constructor(\n    pdfDataRangeTransport,\n    { disableRange = false, disableStream = false }\n  ) {\n    assert(\n      pdfDataRangeTransport,\n      'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n    );\n    const { length, initialData, progressiveDone, contentDispositionFilename } =\n      pdfDataRangeTransport;\n\n    this._queuedChunks = [];\n    this._progressiveDone = progressiveDone;\n    this._contentDispositionFilename = contentDispositionFilename;\n\n    if (initialData?.length > 0) {\n      // Prevent any possible issues by only transferring a Uint8Array that\n      // completely \"utilizes\" its underlying ArrayBuffer.\n      const buffer =\n        initialData instanceof Uint8Array &&\n        initialData.byteLength === initialData.buffer.byteLength\n          ? initialData.buffer\n          : new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !disableStream;\n    this._isRangeSupported = !disableRange;\n    this._contentLength = length;\n\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n\n    pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({ begin, chunk });\n    });\n\n    pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({ loaded, total });\n    });\n\n    pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({ chunk });\n    });\n\n    pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n\n    pdfDataRangeTransport.transportReady();\n  }\n\n  _onReceiveData({ begin, chunk }) {\n    // Prevent any possible issues by only transferring a Uint8Array that\n    // completely \"utilizes\" its underlying ArrayBuffer.\n    const buffer =\n      chunk instanceof Uint8Array &&\n      chunk.byteLength === chunk.buffer.byteLength\n        ? chunk.buffer\n        : new Uint8Array(chunk).buffer;\n\n    if (begin === undefined) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader._enqueue(buffer);\n      } else {\n        this._queuedChunks.push(buffer);\n      }\n    } else {\n      const found = this._rangeReaders.some(function (rangeReader) {\n        if (rangeReader._begin !== begin) {\n          return false;\n        }\n        rangeReader._enqueue(buffer);\n        return true;\n      });\n      assert(\n        found,\n        \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n      );\n    }\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      // Reporting to first range reader, if it exists.\n      this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\n    } else {\n      this._fullRequestReader?.onProgress?.({\n        loaded: evt.loaded,\n        total: evt.total,\n      });\n    }\n  }\n\n  _onProgressiveDone() {\n    this._fullRequestReader?.progressiveDone();\n    this._progressiveDone = true;\n  }\n\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFDataTransportStream.getFullReader can only be called once.\"\n    );\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(\n      this,\n      queuedChunks,\n      this._progressiveDone,\n      this._contentDispositionFilename\n    );\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\n    this._rangeReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n    this._pdfDataRangeTransport.abort();\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n  constructor(\n    stream,\n    queuedChunks,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = isPdfFile(contentDispositionFilename)\n      ? contentDispositionFilename\n      : null;\n    this._queuedChunks = queuedChunks || [];\n    this._loaded = 0;\n    for (const chunk of this._queuedChunks) {\n      this._loaded += chunk.byteLength;\n    }\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // Ignore new data.\n    }\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n    this._loaded += chunk.byteLength;\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n    this._done = true;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // ignore new data\n    }\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n      requestsCapability.resolve({ value: chunk, done: false });\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({ value: undefined, done: true });\n      }\n      this._requests.length = 0;\n    }\n    this._done = true;\n    this._stream._removeRangeReader(this);\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._stream._removeRangeReader(this);\n  }\n}\n\nexport { PDFDataTransportStream };\n", "/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n//   function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n\n  // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n  let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n  // filename*n*=part\n  // filename*n=part\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    // RFC 2047, section\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n\n  // filename=value (RFC 5987, section 4.1).\n  tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // After this line there are only function declarations. We cannot put\n  // \"return\" here for readability because babel would then drop the function\n  // declarations...\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\n      \"(?:^|;)\\\\s*\" +\n        attributePattern +\n        \"\\\\s*=\\\\s*\" +\n        // Captures: value = token | quoted-string\n        // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n        \"(\" +\n        '[^\";\\\\s][^;\\\\s]*' +\n        \"|\" +\n        '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n        \")\",\n      flags\n    );\n  }\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch {\n        // TextDecoder constructor threw - unrecognized encoding.\n      }\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      // Maybe multi-byte UTF-8.\n      value = textdecode(\"utf-8\", value);\n      if (needsEncodingFixup) {\n        // Try iso-8859-1 encoding.\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    // Iterate over all filename*n= and filename*n*= with n being an integer\n    // of at least zero. Any non-zero number must not start with '0'.\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match; // eslint-disable-line prefer-const\n      n = parseInt(n, 10);\n      if (n in matches) {\n        // Ignore anything after the invalid second filename*0.\n        if (n === 0) {\n          break;\n        }\n        continue;\n      }\n      matches[n] = [quot, part];\n    }\n    const parts = [];\n    for (let n = 0; n < matches.length; ++n) {\n      if (!(n in matches)) {\n        // Numbers must be consecutive. Truncate when there is a hole.\n        break;\n      }\n      let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n      part = rfc2616unquote(part);\n      if (quot) {\n        part = unescape(part);\n        if (n === 0) {\n          part = rfc5987decode(part);\n        }\n      }\n      parts.push(part);\n    }\n    return parts.join(\"\");\n  }\n  function rfc2616unquote(value) {\n    if (value.startsWith('\"')) {\n      const parts = value.slice(1).split('\\\\\"');\n      // Find the first unescaped \" and terminate there.\n      for (let i = 0; i < parts.length; ++i) {\n        const quotindex = parts[i].indexOf('\"');\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1; // Truncates and stop the iteration.\n        }\n        parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    // Decodes \"ext-value\" from RFC 5987.\n    const encodingend = extvalue.indexOf(\"'\");\n    if (encodingend === -1) {\n      // Some servers send \"filename*=\" without encoding 'language' prefix,\n      // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n      // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n      return extvalue;\n    }\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    // RFC 2047-decode the result. Firefox tried to drop support for it, but\n    // backed out because some servers use it - https://bugzil.la/875615\n    // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n    // We are more strict and only recognize RFC 2047-encoding if the value\n    // starts with \"=?\", since then it is likely that the full value is\n    // RFC 2047-encoded.\n\n    // Firefox also decodes words even where RFC 2047 section 5 states:\n    // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    // RFC 2047, section 2.4\n    // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n    // charset = token (but let's restrict to characters that denote a\n    //       possibly valid encoding).\n    // encoding = q or b\n    // encoded-text = any printable ASCII character other than ? or space.\n    //        ... but Firefox permits ? and space.\n    return value.replaceAll(\n      /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n      function (matches, charset, encoding, text) {\n        if (encoding === \"q\" || encoding === \"Q\") {\n          // RFC 2047 section 4.2.\n          text = text.replaceAll(\"_\", \" \");\n          text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n            return String.fromCharCode(parseInt(hex, 16));\n          });\n          return textdecode(charset, text);\n        } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n        try {\n          text = atob(text);\n        } catch {}\n        return textdecode(charset, text);\n      }\n    );\n  }\n\n  return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, ResponseException } from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction createHeaders(isHttp, httpHeaders) {\n  const headers = new Headers();\n\n  if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n    return headers;\n  }\n  for (const key in httpHeaders) {\n    const val = httpHeaders[key];\n    if (val !== undefined) {\n      headers.append(key, val);\n    }\n  }\n  return headers;\n}\n\nfunction getResponseOrigin(url) {\n  // Notably, null is distinct from \"null\" string (e.g. from file:-URLs).\n  return URL.parse(url)?.origin ?? null;\n}\n\nfunction validateRangeRequestCapabilities({\n  responseHeaders,\n  isHttp,\n  rangeChunkSize,\n  disableRange,\n}) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n      \"rangeChunkSize must be an integer larger than zero.\"\n    );\n  }\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined,\n  };\n\n  const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n\n  returnValues.suggestedLength = length;\n\n  if (length <= 2 * rangeChunkSize) {\n    // The file size is smaller than the size of two chunks, so it does not\n    // make any sense to abort the request and retry with a range request.\n    return returnValues;\n  }\n\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n\n  const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\n\nfunction extractFilenameFromHeader(responseHeaders) {\n  const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n  if (contentDisposition) {\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n    if (filename.includes(\"%\")) {\n      try {\n        filename = decodeURIComponent(filename);\n      } catch {}\n    }\n    if (isPdfFile(filename)) {\n      return filename;\n    }\n  }\n  return null;\n}\n\nfunction createResponseError(status, url) {\n  return new ResponseException(\n    `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n    status,\n    /* missing = */ status === 404 || (status === 0 && url.startsWith(\"file:\"))\n  );\n}\n\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\nexport {\n  createHeaders,\n  createResponseError,\n  extractFilenameFromHeader,\n  getResponseOrigin,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n};\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AbortException, assert, warn } from \"../shared/util.js\";\nimport {\n  createHeaders,\n  createResponseError,\n  extractFilenameFromHeader,\n  getResponseOrigin,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n  return {\n    method: \"GET\",\n    headers,\n    signal: abortController.signal,\n    mode: \"cors\",\n    credentials: withCredentials ? \"include\" : \"same-origin\",\n    redirect: \"follow\",\n  };\n}\n\nfunction getArrayBuffer(val) {\n  if (val instanceof Uint8Array) {\n    return val.buffer;\n  }\n  if (val instanceof ArrayBuffer) {\n    return val;\n  }\n  warn(`getArrayBuffer - unexpected data format: ${val}`);\n  return new Uint8Array(val).buffer;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n  _responseOrigin = null;\n\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.headers = createHeaders(this.isHttp, source.httpHeaders);\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFFetchStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n  constructor(stream) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._contentLength = source.length;\n    this._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._abortController = new AbortController();\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    // Always create a copy of the headers.\n    const headers = new Headers(stream.headers);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(headers, this._withCredentials, this._abortController)\n    )\n      .then(response => {\n        stream._responseOrigin = getResponseOrigin(response.url);\n\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseError(response.status, url);\n        }\n        this._reader = response.body.getReader();\n        this._headersCapability.resolve();\n\n        const responseHeaders = response.headers;\n\n        const { allowRangeRequests, suggestedLength } =\n          validateRangeRequestCapabilities({\n            responseHeaders,\n            isHttp: stream.isHttp,\n            rangeChunkSize: this._rangeChunkSize,\n            disableRange: this._disableRange,\n          });\n\n        this._isRangeSupported = allowRangeRequests;\n        // Setting right content length.\n        this._contentLength = suggestedLength || this._contentLength;\n\n        this._filename = extractFilenameFromHeader(responseHeaders);\n\n        // We need to stop reading when range is supported and streaming is\n        // disabled.\n        if (!this._isStreamingSupported && this._isRangeSupported) {\n          this.cancel(new AbortException(\"Streaming is disabled.\"));\n        }\n      })\n      .catch(this._headersCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength,\n    });\n\n    return { value: getArrayBuffer(value), done: false };\n  }\n\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._readCapability = Promise.withResolvers();\n    this._isStreamingSupported = !source.disableStream;\n\n    this._abortController = new AbortController();\n    // Always create a copy of the headers.\n    const headers = new Headers(stream.headers);\n    headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(headers, this._withCredentials, this._abortController)\n    )\n      .then(response => {\n        const responseOrigin = getResponseOrigin(response.url);\n\n        if (responseOrigin !== stream._responseOrigin) {\n          throw new Error(\n            `Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`\n          );\n        }\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseError(response.status, url);\n        }\n        this._readCapability.resolve();\n        this._reader = response.body.getReader();\n      })\n      .catch(this._readCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({ loaded: this._loaded });\n\n    return { value: getArrayBuffer(value), done: false };\n  }\n\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\nexport { PDFFetchStream };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, stringToBytes, warn } from \"../shared/util.js\";\nimport {\n  createHeaders,\n  createResponseError,\n  extractFilenameFromHeader,\n  getResponseOrigin,\n  validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n  const data = xhr.response;\n  if (typeof data !== \"string\") {\n    return data;\n  }\n  return stringToBytes(data).buffer;\n}\n\nclass NetworkManager {\n  _responseOrigin = null;\n\n  constructor({ url, httpHeaders, withCredentials }) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.headers = createHeaders(this.isHttp, httpHeaders);\n    this.withCredentials = withCredentials || false;\n\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n\n  request(args) {\n    const xhr = new XMLHttpRequest();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (const [key, val] of this.headers) {\n      xhr.setRequestHeader(key, val);\n    }\n    if (this.isHttp && \"begin\" in args && \"end\" in args) {\n      xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n    } else {\n      pendingRequest.expectedStatus = OK_RESPONSE;\n    }\n    xhr.responseType = \"arraybuffer\";\n\n    assert(args.onError, \"Expected `onError` callback to be provided.\");\n    xhr.onerror = () => {\n      args.onError(xhr.status);\n    };\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n\n    xhr.send(null);\n\n    return xhrId;\n  }\n\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n    pendingRequest.onProgress?.(evt);\n  }\n\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n\n    const xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (!(xhrId in this.pendingRequests)) {\n      // The XHR request might have been aborted in onHeadersReceived()\n      // callback, in which case we should abort request.\n      return;\n    }\n\n    delete this.pendingRequests[xhrId];\n\n    // Success status == 0 can be on ftp, file and other protocols.\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError(xhr.status);\n      return;\n    }\n    const xhrStatus = xhr.status || OK_RESPONSE;\n\n    // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n    // \"A server MAY ignore the Range header\". This means it's possible to\n    // get a 200 rather than a 206 response from a range request.\n    const ok_response_on_range_request =\n      xhrStatus === OK_RESPONSE &&\n      pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n    if (\n      !ok_response_on_range_request &&\n      xhrStatus !== pendingRequest.expectedStatus\n    ) {\n      pendingRequest.onError(xhr.status);\n      return;\n    }\n\n    const chunk = getArrayBuffer(xhr);\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n      const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      if (matches) {\n        pendingRequest.onDone({\n          begin: parseInt(matches[1], 10),\n          chunk,\n        });\n      } else {\n        warn(`Missing or invalid \"Content-Range\" header.`);\n        pendingRequest.onError(0);\n      }\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk,\n      });\n    } else {\n      pendingRequest.onError(xhr.status);\n    }\n  }\n\n  getRequestXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  }\n\n  isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  }\n\n  abortRequest(xhrId) {\n    const xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source);\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNetworkStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n      this._manager,\n      this._source\n    );\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(\n      this._manager,\n      begin,\n      end\n    );\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n\n    this._url = source.url;\n    this._fullRequestId = manager.request({\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    });\n    this._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length; // Optional\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n\n    this.onProgress = null;\n  }\n\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n    this._manager._responseOrigin = getResponseOrigin(\n      fullRequestXhr.responseURL\n    );\n\n    const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n    const responseHeaders = new Headers(\n      rawResponseHeaders\n        ? rawResponseHeaders\n            .trimStart()\n            .replace(/[^\\S ]+$/, \"\") // Not `trimEnd`, to keep regular spaces.\n            .split(/[\\r\\n]+/)\n            .map(x => {\n              const [key, ...val] = x.split(\": \");\n              return [key, val.join(\": \")];\n            })\n        : []\n    );\n\n    const { allowRangeRequests, suggestedLength } =\n      validateRangeRequestCapabilities({\n        responseHeaders,\n        isHttp: this._manager.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange,\n      });\n\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    // Setting right content length.\n    this._contentLength = suggestedLength || this._contentLength;\n\n    this._filename = extractFilenameFromHeader(responseHeaders);\n\n    if (this._isRangeSupported) {\n      // NOTE: by cancelling the full request, and then issuing range\n      // requests, there will be an issue for sites where you can only\n      // request the pdf once. However, if this is the case, then the\n      // server should not be returning that it can support range requests.\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n\n    this._headersCapability.resolve();\n  }\n\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n        requestCapability.resolve({ value: data.chunk, done: false });\n      } else {\n        this._cachedChunks.push(data.chunk);\n      }\n    }\n    this._done = true;\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  _onError(status) {\n    this._storedError = createResponseError(status, this._url);\n    this._headersCapability.reject(this._storedError);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._cachedChunks.length = 0;\n  }\n\n  _onProgress(evt) {\n    this.onProgress?.({\n      loaded: evt.loaded,\n      total: evt.lengthComputable ? evt.total : this._contentLength,\n    });\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    this._headersCapability.reject(reason);\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n    this._fullRequestReader = null;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n\n    this._url = manager.url;\n    this._requestId = manager.request({\n      begin,\n      end,\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    });\n    this._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n\n  _onHeadersReceived() {\n    const responseOrigin = getResponseOrigin(\n      this._manager.getRequestXhr(this._requestId)?.responseURL\n    );\n\n    if (responseOrigin !== this._manager._responseOrigin) {\n      this._storedError = new Error(\n        `Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`\n      );\n      this._onError(0);\n    }\n  }\n\n  _close() {\n    this.onClosed?.(this);\n  }\n\n  _onDone(data) {\n    const chunk = data.chunk;\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._close();\n  }\n\n  _onError(status) {\n    this._storedError ??= createResponseError(status, this._url);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._queuedChunk = null;\n  }\n\n  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({ loaded: evt.loaded });\n    }\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._queuedChunk !== null) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n    this._close();\n  }\n}\n\nexport { PDFNetworkStream };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\nimport { AbortException, assert } from \"../shared/util.js\";\nimport { createResponseError } from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\n\nfunction parseUrlOrPath(sourceUrl) {\n  if (urlRegex.test(sourceUrl)) {\n    return new URL(sourceUrl);\n  }\n  const url = process.getBuiltinModule(\"url\");\n  return new URL(url.pathToFileURL(sourceUrl));\n}\n\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrlOrPath(source.url);\n    assert(\n      this.url.protocol === \"file:\",\n      \"PDFNodeStream only supports file:// URLs.\"\n    );\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNodeStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\nclass PDFNodeStreamFsFullReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    const source = stream.source;\n    this._contentLength = source.length; // optional\n    this._loaded = 0;\n    this._filename = null;\n\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    this._headersCapability = Promise.withResolvers();\n\n    const fs = process.getBuiltinModule(\"fs\");\n    fs.promises.lstat(this._url).then(\n      stat => {\n        // Setting right content length.\n        this._contentLength = stat.size;\n\n        this._setReadableStream(fs.createReadStream(this._url));\n        this._headersCapability.resolve();\n      },\n      error => {\n        if (error.code === \"ENOENT\") {\n          error = createResponseError(/* status = */ 0, this._url.href);\n        }\n        this._storedError = error;\n        this._headersCapability.reject(error);\n      }\n    );\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength,\n    });\n\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readable to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // We need to stop reading when range is supported and streaming is\n    // disabled.\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException(\"streaming is disabled\"));\n    }\n\n    // Destroy ReadableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nclass PDFNodeStreamFsRangeReader {\n  constructor(stream, start, end) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n\n    const fs = process.getBuiltinModule(\"fs\");\n    this._setReadableStream(\n      fs.createReadStream(this._url, { start, end: end - 1 })\n    );\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({ loaded: this._loaded });\n\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readableStream to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // Destroy readableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nexport { PDFNodeStream };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n  #objs = Object.create(null);\n\n  /**\n   * Ensures there is an object defined for `objId`.\n   *\n   * @param {string} objId\n   * @returns {Object}\n   */\n  #ensureObj(objId) {\n    return (this.#objs[objId] ||= {\n      ...Promise.withResolvers(),\n      data: INITIAL_DATA,\n    });\n  }\n\n  /**\n   * If called *without* callback, this returns the data of `objId` but the\n   * object needs to be resolved. If it isn't, this method throws.\n   *\n   * If called *with* a callback, the callback is called with the data of the\n   * object once the object is resolved. That means, if you call this method\n   * and the object is already resolved, the callback gets called right away.\n   *\n   * @param {string} objId\n   * @param {function} [callback]\n   * @returns {any}\n   */\n  get(objId, callback = null) {\n    // If there is a callback, then the get can be async and the object is\n    // not required to be resolved right now.\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.promise.then(() => callback(obj.data));\n      return null;\n    }\n    // If there isn't a callback, the user expects to get the resolved data\n    // directly.\n    const obj = this.#objs[objId];\n    // If there isn't an object yet or the object isn't resolved, then the\n    // data isn't ready yet!\n    if (!obj || obj.data === INITIAL_DATA) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n    return obj.data;\n  }\n\n  /**\n   * @param {string} objId\n   * @returns {boolean}\n   */\n  has(objId) {\n    const obj = this.#objs[objId];\n    return !!obj && obj.data !== INITIAL_DATA;\n  }\n\n  /**\n   * @param {string} objId\n   * @returns {boolean}\n   */\n  delete(objId) {\n    const obj = this.#objs[objId];\n    if (!obj || obj.data === INITIAL_DATA) {\n      // Only allow removing the object *after* it's been resolved.\n      return false;\n    }\n    delete this.#objs[objId];\n    return true;\n  }\n\n  /**\n   * Resolves the object `objId` with optional `data`.\n   *\n   * @param {string} objId\n   * @param {any} [data]\n   */\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.resolve();\n  }\n\n  clear() {\n    for (const objId in this.#objs) {\n      const { data } = this.#objs[objId];\n      data?.bitmap?.close(); // Release any `ImageBitmap` data.\n    }\n    this.#objs = Object.create(null);\n  }\n\n  *[Symbol.iterator]() {\n    for (const objId in this.#objs) {\n      const { data } = this.#objs[objId];\n\n      if (data === INITIAL_DATA) {\n        continue;\n      }\n      yield [objId, data];\n    }\n  }\n}\n\nexport { PDFObjects };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nimport {\n  AbortException,\n  FeatureTest,\n  shadow,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { OutputScale, setLayerDimensions } from \"./display_utils.js\";\n\n/**\n * @typedef {Object} TextLayerParameters\n * @property {ReadableStream | TextContent} textContentSource - Text content to\n *   render, i.e. the value returned by the page's `streamTextContent` or\n *   `getTextContent` method.\n * @property {HTMLElement} container - The DOM node that will contain the text\n *   runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n *   the text runs.\n */\n\n/**\n * @typedef {Object} TextLayerUpdateParameters\n * @property {PageViewport} viewport - The target viewport to properly layout\n *   the text runs.\n * @property {function} [onBefore] - Callback invoked before the textLayer is\n *   updated in the DOM.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\n\nclass TextLayer {\n  #capability = Promise.withResolvers();\n\n  #container = null;\n\n  #disableProcessItems = false;\n\n  #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n  #lang = null;\n\n  #layoutTextParams = null;\n\n  #pageHeight = 0;\n\n  #pageWidth = 0;\n\n  #reader = null;\n\n  #rootContainer = null;\n\n  #rotation = 0;\n\n  #scale = 0;\n\n  #styleCache = Object.create(null);\n\n  #textContentItemsStr = [];\n\n  #textContentSource = null;\n\n  #textDivs = [];\n\n  #textDivProperties = new WeakMap();\n\n  #transform = null;\n\n  static #ascentCache = new Map();\n\n  static #canvasContexts = new Map();\n\n  static #canvasCtxFonts = new WeakMap();\n\n  static #minFontSize = null;\n\n  static #pendingTextLayers = new Set();\n\n  /**\n   * @param {TextLayerParameters} options\n   */\n  constructor({ textContentSource, container, viewport }) {\n    if (textContentSource instanceof ReadableStream) {\n      this.#textContentSource = textContentSource;\n    } else if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n      typeof textContentSource === \"object\"\n    ) {\n      this.#textContentSource = new ReadableStream({\n        start(controller) {\n          controller.enqueue(textContentSource);\n          controller.close();\n        },\n      });\n    } else {\n      throw new Error('No \"textContentSource\" parameter specified.');\n    }\n    this.#container = this.#rootContainer = container;\n\n    this.#scale = viewport.scale * OutputScale.pixelRatio;\n    this.#rotation = viewport.rotation;\n    this.#layoutTextParams = {\n      div: null,\n      properties: null,\n      ctx: null,\n    };\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n    this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n    this.#pageWidth = pageWidth;\n    this.#pageHeight = pageHeight;\n\n    TextLayer.#ensureMinFontSizeComputed();\n    container.style.setProperty(\"--min-font-size\", TextLayer.#minFontSize);\n\n    setLayerDimensions(container, viewport);\n\n    // Always clean-up the temporary canvas once rendering is no longer pending.\n    this.#capability.promise\n      .finally(() => {\n        TextLayer.#pendingTextLayers.delete(this);\n        this.#layoutTextParams = null;\n        this.#styleCache = null;\n      })\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"pageWidth\", {\n        get() {\n          return this.#pageWidth;\n        },\n      });\n      Object.defineProperty(this, \"pageHeight\", {\n        get() {\n          return this.#pageHeight;\n        },\n      });\n    }\n  }\n\n  static get fontFamilyMap() {\n    const { isWindows, isFirefox } = FeatureTest.platform;\n    return shadow(\n      this,\n      \"fontFamilyMap\",\n      new Map([\n        [\n          \"sans-serif\",\n          `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`,\n        ],\n        [\n          \"monospace\",\n          `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`,\n        ],\n      ])\n    );\n  }\n\n  /**\n   * Render the textLayer.\n   * @returns {Promise}\n   */\n  render() {\n    const pump = () => {\n      this.#reader.read().then(({ value, done }) => {\n        if (done) {\n          this.#capability.resolve();\n          return;\n        }\n        this.#lang ??= value.lang;\n        Object.assign(this.#styleCache, value.styles);\n        this.#processItems(value.items);\n        pump();\n      }, this.#capability.reject);\n    };\n    this.#reader = this.#textContentSource.getReader();\n    TextLayer.#pendingTextLayers.add(this);\n    pump();\n\n    return this.#capability.promise;\n  }\n\n  /**\n   * Update a previously rendered textLayer, if necessary.\n   * @param {TextLayerUpdateParameters} options\n   * @returns {undefined}\n   */\n  update({ viewport, onBefore = null }) {\n    const scale = viewport.scale * OutputScale.pixelRatio;\n    const rotation = viewport.rotation;\n\n    if (rotation !== this.#rotation) {\n      onBefore?.();\n      this.#rotation = rotation;\n      setLayerDimensions(this.#rootContainer, { rotation });\n    }\n\n    if (scale !== this.#scale) {\n      onBefore?.();\n      this.#scale = scale;\n      const params = {\n        div: null,\n        properties: null,\n        ctx: TextLayer.#getCtx(this.#lang),\n      };\n      for (const div of this.#textDivs) {\n        params.properties = this.#textDivProperties.get(div);\n        params.div = div;\n        this.#layout(params);\n      }\n    }\n  }\n\n  /**\n   * Cancel rendering of the textLayer.\n   * @returns {undefined}\n   */\n  cancel() {\n    const abortEx = new AbortException(\"TextLayer task cancelled.\");\n\n    this.#reader?.cancel(abortEx).catch(() => {\n      // Avoid \"Uncaught promise\" messages in the console.\n    });\n    this.#reader = null;\n\n    this.#capability.reject(abortEx);\n  }\n\n  /**\n   * @type {Array<HTMLElement>} HTML elements that correspond to the text items\n   *   of the textContent input.\n   *   This is output and will initially be set to an empty array.\n   */\n  get textDivs() {\n    return this.#textDivs;\n  }\n\n  /**\n   * @type {Array<string>} Strings that correspond to the `str` property of\n   *   the text items of the textContent input.\n   *   This is output and will initially be set to an empty array\n   */\n  get textContentItemsStr() {\n    return this.#textContentItemsStr;\n  }\n\n  #processItems(items) {\n    if (this.#disableProcessItems) {\n      return;\n    }\n    this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n\n    const textDivs = this.#textDivs,\n      textContentItemsStr = this.#textContentItemsStr;\n\n    for (const item of items) {\n      // No point in rendering many divs as it would make the browser\n      // unusable even after the divs are rendered.\n      if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n        warn(\"Ignoring additional textDivs for performance reasons.\");\n\n        this.#disableProcessItems = true; // Avoid multiple warnings for one page.\n        return;\n      }\n\n      if (item.str === undefined) {\n        if (\n          item.type === \"beginMarkedContentProps\" ||\n          item.type === \"beginMarkedContent\"\n        ) {\n          const parent = this.#container;\n          this.#container = document.createElement(\"span\");\n          this.#container.classList.add(\"markedContent\");\n          if (item.id) {\n            this.#container.setAttribute(\"id\", `${item.id}`);\n          }\n          parent.append(this.#container);\n        } else if (item.type === \"endMarkedContent\") {\n          this.#container = this.#container.parentNode;\n        }\n        continue;\n      }\n      textContentItemsStr.push(item.str);\n      this.#appendText(item);\n    }\n  }\n\n  #appendText(geom) {\n    // Initialize all used properties to keep the caches monomorphic.\n    const textDiv = document.createElement(\"span\");\n    const textDivProperties = {\n      angle: 0,\n      canvasWidth: 0,\n      hasText: geom.str !== \"\",\n      hasEOL: geom.hasEOL,\n      fontSize: 0,\n    };\n    this.#textDivs.push(textDiv);\n\n    const tx = Util.transform(this.#transform, geom.transform);\n    let angle = Math.atan2(tx[1], tx[0]);\n    const style = this.#styleCache[geom.fontName];\n    if (style.vertical) {\n      angle += Math.PI / 2;\n    }\n\n    let fontFamily =\n      (this.#fontInspectorEnabled && style.fontSubstitution) ||\n      style.fontFamily;\n\n    // Workaround for bug 1922063.\n    fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n    const fontHeight = Math.hypot(tx[2], tx[3]);\n    const fontAscent =\n      fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n\n    let left, top;\n    if (angle === 0) {\n      left = tx[4];\n      top = tx[5] - fontAscent;\n    } else {\n      left = tx[4] + fontAscent * Math.sin(angle);\n      top = tx[5] - fontAscent * Math.cos(angle);\n    }\n\n    const divStyle = textDiv.style;\n    // Setting the style properties individually, rather than all at once,\n    // should be OK since the `textDiv` isn't appended to the document yet.\n    divStyle.left = `${((100 * left) / this.#pageWidth).toFixed(2)}%`;\n    divStyle.top = `${((100 * top) / this.#pageHeight).toFixed(2)}%`;\n    divStyle.setProperty(\"--font-height\", `${fontHeight.toFixed(2)}px`);\n    divStyle.fontFamily = fontFamily;\n\n    textDivProperties.fontSize = fontHeight;\n\n    // Keeps screen readers from pausing on every new text span.\n    textDiv.setAttribute(\"role\", \"presentation\");\n\n    textDiv.textContent = geom.str;\n    // geom.dir may be 'ttb' for vertical texts.\n    textDiv.dir = geom.dir;\n\n    // `fontName` is only used by the FontInspector, and we only use `dataset`\n    // here to make the font name available in the debugger.\n    if (this.#fontInspectorEnabled) {\n      textDiv.dataset.fontName =\n        style.fontSubstitutionLoadedName || geom.fontName;\n    }\n    if (angle !== 0) {\n      textDivProperties.angle = angle * (180 / Math.PI);\n    }\n    // We don't bother scaling single-char text divs, because it has very\n    // little effect on text highlighting. This makes scrolling on docs with\n    // lots of such divs a lot faster.\n    let shouldScaleText = false;\n    if (geom.str.length > 1) {\n      shouldScaleText = true;\n    } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n      const absScaleX = Math.abs(geom.transform[0]),\n        absScaleY = Math.abs(geom.transform[3]);\n      // When the horizontal/vertical scaling differs significantly, also scale\n      // even single-char text to improve highlighting (fixes issue11713.pdf).\n      if (\n        absScaleX !== absScaleY &&\n        Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n      ) {\n        shouldScaleText = true;\n      }\n    }\n    if (shouldScaleText) {\n      textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n    }\n    this.#textDivProperties.set(textDiv, textDivProperties);\n\n    // Finally, layout and append the text to the DOM.\n    this.#layoutTextParams.div = textDiv;\n    this.#layoutTextParams.properties = textDivProperties;\n    this.#layout(this.#layoutTextParams);\n\n    if (textDivProperties.hasText) {\n      this.#container.append(textDiv);\n    }\n    if (textDivProperties.hasEOL) {\n      const br = document.createElement(\"br\");\n      br.setAttribute(\"role\", \"presentation\");\n      this.#container.append(br);\n    }\n  }\n\n  #layout(params) {\n    const { div, properties, ctx } = params;\n    const { style } = div;\n\n    if (properties.canvasWidth !== 0 && properties.hasText) {\n      const { fontFamily } = style;\n      const { canvasWidth, fontSize } = properties;\n\n      TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n      // Only measure the width for multi-char text divs, see `appendText`.\n      const { width } = ctx.measureText(div.textContent);\n\n      if (width > 0) {\n        style.setProperty(\"--scale-x\", (canvasWidth * this.#scale) / width);\n      }\n    }\n    if (properties.angle !== 0) {\n      style.setProperty(\"--rotate\", `${properties.angle}deg`);\n    }\n  }\n\n  /**\n   * Clean-up global textLayer data.\n   * @returns {undefined}\n   */\n  static cleanup() {\n    if (this.#pendingTextLayers.size > 0) {\n      return;\n    }\n    this.#ascentCache.clear();\n\n    for (const { canvas } of this.#canvasContexts.values()) {\n      canvas.remove();\n    }\n    this.#canvasContexts.clear();\n  }\n\n  static #getCtx(lang = null) {\n    let ctx = this.#canvasContexts.get((lang ||= \"\"));\n    if (!ctx) {\n      // We don't use an OffscreenCanvas here because we use serif/sans serif\n      // fonts with it and they depends on the locale.\n      // In Firefox, the <html> element get a lang attribute that depends on\n      // what Fluent returns for the locale and the OffscreenCanvas uses\n      // the OS locale.\n      // Those two locales can be different and consequently the used fonts will\n      // be different (see bug 1869001).\n      // Ideally, we should use in the text layer the fonts we've in the pdf (or\n      // their replacements when they aren't embedded) and then we can use an\n      // OffscreenCanvas.\n      const canvas = document.createElement(\"canvas\");\n      canvas.className = \"hiddenCanvasElement\";\n      canvas.lang = lang;\n      document.body.append(canvas);\n      ctx = canvas.getContext(\"2d\", {\n        alpha: false,\n        willReadFrequently: true,\n      });\n      this.#canvasContexts.set(lang, ctx);\n\n      // Also, initialize state for the `#ensureCtxFont` method.\n      this.#canvasCtxFonts.set(ctx, { size: 0, family: \"\" });\n    }\n    return ctx;\n  }\n\n  static #ensureCtxFont(ctx, size, family) {\n    const cached = this.#canvasCtxFonts.get(ctx);\n    if (size === cached.size && family === cached.family) {\n      return; // The font is already set.\n    }\n    ctx.font = `${size}px ${family}`;\n    cached.size = size;\n    cached.family = family;\n  }\n\n  /**\n   * Compute the minimum font size enforced by the browser.\n   */\n  static #ensureMinFontSizeComputed() {\n    if (this.#minFontSize !== null) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.style.opacity = 0;\n    div.style.lineHeight = 1;\n    div.style.fontSize = \"1px\";\n    div.style.position = \"absolute\";\n    div.textContent = \"X\";\n    document.body.append(div);\n    // In `display:block` elements contain a single line of text,\n    // the height matches the line height (which, when set to 1,\n    // matches the actual font size).\n    this.#minFontSize = div.getBoundingClientRect().height;\n    div.remove();\n  }\n\n  static #getAscent(fontFamily, style, lang) {\n    const cachedAscent = this.#ascentCache.get(fontFamily);\n    if (cachedAscent) {\n      return cachedAscent;\n    }\n    const ctx = this.#getCtx(lang);\n\n    ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n    this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n    const metrics = ctx.measureText(\"\");\n\n    const ascent = metrics.fontBoundingBoxAscent;\n    const descent = Math.abs(metrics.fontBoundingBoxDescent);\n\n    ctx.canvas.width = ctx.canvas.height = 0;\n    let ratio = 0.8; // DEFAULT_FONT_ASCENT\n\n    if (ascent) {\n      ratio = ascent / (ascent + descent);\n    } else {\n      if (\n        (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        FeatureTest.platform.isFirefox\n      ) {\n        warn(\n          \"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" +\n            \"in `about:config` to improve TextLayer rendering.\"\n        );\n      }\n      if (style.ascent) {\n        ratio = style.ascent;\n      } else if (style.descent) {\n        ratio = 1 + style.descent;\n      }\n    }\n\n    this.#ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n}\n\nexport { TextLayer };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n  AbortException,\n  AnnotationMode,\n  assert,\n  FeatureTest,\n  getVerbosityLevel,\n  info,\n  isNodeJS,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  AnnotationStorage,\n  PrintAnnotationStorage,\n  SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n  deprecated,\n  isDataScheme,\n  isValidFetchUrl,\n  PageViewport,\n  RenderingCancelledException,\n  StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n  FontInfo,\n  FontPathInfo,\n  PatternInfo,\n} from \"../shared/obj-bin-transform.js\";\nimport {\n  getDataProp,\n  getFactoryUrlProp,\n  getUrlProp,\n  isRefProxy,\n  LoopbackPort,\n} from \"./api_utils.js\";\nimport { MessageHandler, wrapReason } from \"../shared/message_handler.js\";\nimport {\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeFilterFactory,\n  NodeStandardFontDataFactory,\n  NodeWasmFactory,\n} from \"display-node_utils\";\nimport { CanvasDependencyTracker } from \"./canvas_dependency_tracker.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { DOMCanvasFactory } from \"./canvas_factory.js\";\nimport { DOMCMapReaderFactory } from \"display-cmap_reader_factory\";\nimport { DOMFilterFactory } from \"./filter_factory.js\";\nimport { DOMStandardFontDataFactory } from \"display-standard_fontdata_factory\";\nimport { DOMWasmFactory } from \"display-wasm_factory\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { PDFObjects } from \"./pdf_objects.js\";\nimport { TextLayer } from \"./text_layer.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n *            Int16Array | Uint16Array |\n *            Int32Array | Uint32Array | Float32Array |\n *            Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {TypedArray | ArrayBuffer | Array<number> | string} [data] -\n *   Binary PDF data.\n *   Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n *   BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n *   NOTE: If TypedArrays are used they will generally be transferred to the\n *   worker-thread. This will help reduce main-thread memory usage, however\n *   it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n *   cross-site Access-Control requests should be made using credentials such\n *   as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n *   reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n *   transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n *   per range request. The default value is 65536 (= 2^16).\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n *   parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n *   from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n *   attempting to recover valid absolute URLs for annotations, and outline\n *   items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n *   located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n *   packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n *   reading built-in CMap files.\n *   The default value is {DOMCMapReaderFactory}.\n * @property {string} [iccUrl] - The URL where the predefined ICC profiles are\n *   located. Include the trailing slash.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n *   embedded in the PDF document will fallback to a system font.\n *   The default value is `true` in web environments and `false` in Node.js;\n *   unless `disableFontFace === true` in which case this defaults to `false`\n *   regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n *   files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n *   when reading the standard font files.\n *   The default value is {DOMStandardFontDataFactory}.\n * @property {string} [wasmUrl] - The URL where the wasm files are located.\n *   Include the trailing slash.\n * @property {Object} [WasmFactory] - The factory that will be used\n *   when reading the wasm files.\n *   The default value is {DOMWasmFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n *   worker-thread when reading CMap and standard font files. When `true`,\n *   the `CMapReaderFactory`, `StandardFontDataFactory`, and `WasmFactory`\n *   options are ignored.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [useWasm] - Attempt to use WebAssembly in order to\n *    improve e.g. image decoding performance.\n *    The default value is `true`.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n *   `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n *   PDF data cannot be successfully parsed, instead of attempting to recover\n *   whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n *   pixels, i.e. width * height. Images above this value will not be rendered.\n *   Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n *   as JavaScript. Primarily used to improve performance of PDF functions.\n *   The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n *   `OffscreenCanvas` in the worker. Primarily used to improve performance of\n *   image conversion/rendering.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [isImageDecoderSupported] - Determines if we can use\n *   `ImageDecoder` in the worker. Primarily used to improve performance of\n *   image conversion/rendering.\n *   The default value is `true` in web environments and `false` in Node.js.\n *\n *   NOTE: Also temporarily disabled in Chromium browsers, until we no longer\n *   support the affected browser versions, because of various bugs:\n *\n *    - Crashes when using the BMP decoder with huge images, e.g. issue6741.pdf;\n *      see https://issues.chromium.org/issues/374807001\n *\n *    - Broken images when using the JPEG decoder with images that have custom\n *      colour profiles, e.g. GitHub discussion 19030;\n *      see https://issues.chromium.org/issues/378869810\n *\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n *   know when an image must be resized (uses `OffscreenCanvas` in the worker).\n *   If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n *   OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n *   If disabled, fonts will be rendered using a built-in font renderer that\n *   constructs the glyphs with primitive path commands.\n *   The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n *   which are unused during rendering of PDF documents, when exporting the\n *   parsed font data from the worker-thread. This may be useful for debugging\n *   purposes (and backwards compatibility), but note that it will lead to\n *   increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n *   The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n *   context to create elements with and to load resources, such as fonts,\n *   into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n *   files. When enabled, and if the server supports partial content requests,\n *   then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n *   By default PDF.js attempts to load PDF files in chunks. The default value\n *   is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n *   data. When range requests are enabled PDF.js will automatically keep\n *   fetching more data even if it isn't needed to display the current page.\n *   The default value is `false`.\n *\n *   NOTE: It is also necessary to disable streaming, see above, in order for\n *   disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n *   (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [CanvasFactory] - The factory that will be used when\n *    creating canvases. The default value is {DOMCanvasFactory}.\n * @property {Object} [FilterFactory] - The factory that will be used to\n *    create SVG filters when rendering some images on the main canvas.\n *    The default value is {DOMFilterFactory}.\n * @property {boolean} [enableHWA] - Enables hardware acceleration for\n *   rendering. The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n *   src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n *         already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src = {}) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n    if (typeof src === \"string\" || src instanceof URL) {\n      src = { url: src };\n    } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n      src = { data: src };\n    }\n  }\n  const task = new PDFDocumentLoadingTask();\n  const { docId } = task;\n\n  const url = src.url ? getUrlProp(src.url) : null;\n  const data = src.data ? getDataProp(src.data) : null;\n  const httpHeaders = src.httpHeaders || null;\n  const withCredentials = src.withCredentials === true;\n  const password = src.password ?? null;\n  const rangeTransport =\n    src.range instanceof PDFDataRangeTransport ? src.range : null;\n  const rangeChunkSize =\n    Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n      ? src.rangeChunkSize\n      : 2 ** 16;\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\n  const verbosity = src.verbosity;\n  // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n  // URLs anyway. We want to avoid sending them to the worker-thread, since\n  // they contain the *entire* PDF document and can thus be arbitrarily long.\n  const docBaseUrl =\n    typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n      ? src.docBaseUrl\n      : null;\n  const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n  const cMapPacked = src.cMapPacked !== false;\n  const CMapReaderFactory =\n    src.CMapReaderFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeCMapReaderFactory\n      : DOMCMapReaderFactory);\n  const iccUrl = getFactoryUrlProp(src.iccUrl);\n  const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n  const StandardFontDataFactory =\n    src.StandardFontDataFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeStandardFontDataFactory\n      : DOMStandardFontDataFactory);\n  const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n  const WasmFactory =\n    src.WasmFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeWasmFactory\n      : DOMWasmFactory);\n  const ignoreErrors = src.stopAtErrors !== true;\n  const maxImageSize =\n    Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n      ? src.maxImageSize\n      : -1;\n  const isEvalSupported = src.isEvalSupported !== false;\n  const isOffscreenCanvasSupported =\n    typeof src.isOffscreenCanvasSupported === \"boolean\"\n      ? src.isOffscreenCanvasSupported\n      : !isNodeJS;\n  const isImageDecoderSupported =\n    // eslint-disable-next-line no-nested-ternary\n    typeof src.isImageDecoderSupported === \"boolean\"\n      ? src.isImageDecoderSupported\n      : // eslint-disable-next-line no-nested-ternary\n        typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")\n        ? true\n        : typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")\n          ? false\n          : !isNodeJS && (FeatureTest.platform.isFirefox || !globalThis.chrome);\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n    ? src.canvasMaxAreaInBytes\n    : -1;\n  const disableFontFace =\n    typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n  const fontExtraProperties = src.fontExtraProperties === true;\n  const enableXfa = src.enableXfa === true;\n  const ownerDocument = src.ownerDocument || globalThis.document;\n  const disableRange = src.disableRange === true;\n  const disableStream = src.disableStream === true;\n  const disableAutoFetch = src.disableAutoFetch === true;\n  const pdfBug = src.pdfBug === true;\n  const CanvasFactory =\n    src.CanvasFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeCanvasFactory\n      : DOMCanvasFactory);\n  const FilterFactory =\n    src.FilterFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeFilterFactory\n      : DOMFilterFactory);\n  const enableHWA = src.enableHWA === true;\n  const useWasm = src.useWasm !== false;\n\n  // Parameters whose default values depend on other parameters.\n  const length = rangeTransport ? rangeTransport.length : (src.length ?? NaN);\n  const useSystemFonts =\n    typeof src.useSystemFonts === \"boolean\"\n      ? src.useSystemFonts\n      : !isNodeJS && !disableFontFace;\n  const useWorkerFetch =\n    typeof src.useWorkerFetch === \"boolean\"\n      ? src.useWorkerFetch\n      : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        !!(\n          CMapReaderFactory === DOMCMapReaderFactory &&\n          StandardFontDataFactory === DOMStandardFontDataFactory &&\n          WasmFactory === DOMWasmFactory &&\n          cMapUrl &&\n          standardFontDataUrl &&\n          wasmUrl &&\n          isValidFetchUrl(cMapUrl, document.baseURI) &&\n          isValidFetchUrl(standardFontDataUrl, document.baseURI) &&\n          isValidFetchUrl(wasmUrl, document.baseURI)\n        );\n\n  // Parameters only intended for development/testing purposes.\n  const styleElement =\n    typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n      ? src.styleElement\n      : null;\n\n  // Set the main-thread verbosity level.\n  setVerbosityLevel(verbosity);\n\n  // Ensure that the various factories can be initialized, when necessary,\n  // since the user may provide *custom* ones.\n  const transportFactory = {\n    canvasFactory: new CanvasFactory({ ownerDocument, enableHWA }),\n    filterFactory: new FilterFactory({ docId, ownerDocument }),\n    cMapReaderFactory:\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      useWorkerFetch\n        ? null\n        : new CMapReaderFactory({ baseUrl: cMapUrl, isCompressed: cMapPacked }),\n    standardFontDataFactory:\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      useWorkerFetch\n        ? null\n        : new StandardFontDataFactory({ baseUrl: standardFontDataUrl }),\n    wasmFactory:\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      useWorkerFetch\n        ? null\n        : new WasmFactory({ baseUrl: wasmUrl }),\n  };\n\n  if (!worker) {\n    // Worker was not provided -- creating and owning our own. If message port\n    // is specified in global worker options, using it.\n    worker = PDFWorker.create({\n      verbosity,\n      port: GlobalWorkerOptions.workerPort,\n    });\n    task._worker = worker;\n  }\n\n  const docParams = {\n    docId,\n    apiVersion:\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null,\n    data,\n    password,\n    disableAutoFetch,\n    rangeChunkSize,\n    length,\n    docBaseUrl,\n    enableXfa,\n    evaluatorOptions: {\n      maxImageSize,\n      disableFontFace,\n      ignoreErrors,\n      isEvalSupported,\n      isOffscreenCanvasSupported,\n      isImageDecoderSupported,\n      canvasMaxAreaInBytes,\n      fontExtraProperties,\n      useSystemFonts,\n      useWasm,\n      useWorkerFetch,\n      cMapUrl,\n      iccUrl,\n      standardFontDataUrl,\n      wasmUrl,\n    },\n  };\n  const transportParams = {\n    ownerDocument,\n    pdfBug,\n    styleElement,\n    loadingParams: {\n      disableAutoFetch,\n      enableXfa,\n    },\n  };\n\n  worker.promise\n    .then(function () {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n      if (worker.destroyed) {\n        throw new Error(\"Worker was destroyed\");\n      }\n\n      const workerIdPromise = worker.messageHandler.sendWithPromise(\n        \"GetDocRequest\",\n        docParams,\n        data ? [data.buffer] : null\n      );\n\n      let networkStream;\n      if (rangeTransport) {\n        networkStream = new PDFDataTransportStream(rangeTransport, {\n          disableRange,\n          disableStream,\n        });\n      } else if (!data) {\n        if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n          throw new Error(\"Not implemented: NetworkStream\");\n        }\n        if (!url) {\n          throw new Error(\"getDocument - no `url` parameter provided.\");\n        }\n        // eslint-disable-next-line no-nested-ternary\n        const NetworkStream = isValidFetchUrl(url)\n          ? PDFFetchStream\n          : typeof PDFJSDev !== \"undefined\" &&\n              PDFJSDev.test(\"GENERIC\") &&\n              isNodeJS\n            ? PDFNodeStream\n            : PDFNetworkStream;\n\n        networkStream = new NetworkStream({\n          url,\n          length,\n          httpHeaders,\n          withCredentials,\n          rangeChunkSize,\n          disableRange,\n          disableStream,\n        });\n      }\n\n      return workerIdPromise.then(workerId => {\n        if (task.destroyed) {\n          throw new Error(\"Loading aborted\");\n        }\n        if (worker.destroyed) {\n          throw new Error(\"Worker was destroyed\");\n        }\n\n        const messageHandler = new MessageHandler(docId, workerId, worker.port);\n        const transport = new WorkerTransport(\n          messageHandler,\n          task,\n          networkStream,\n          transportParams,\n          transportFactory,\n          enableHWA\n        );\n        task._transport = transport;\n        messageHandler.send(\"Ready\", null);\n      });\n    })\n    .catch(task._capability.reject);\n\n  return task;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n  static #docId = 0;\n\n  /**\n   * @private\n   */\n  _capability = Promise.withResolvers();\n\n  /**\n   * @private\n   */\n  _transport = null;\n\n  /**\n   * @private\n   */\n  _worker = null;\n\n  /**\n   * Unique identifier for the document loading task.\n   * @type {string}\n   */\n  docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n  /**\n   * Whether the loading task is destroyed or not.\n   * @type {boolean}\n   */\n  destroyed = false;\n\n  /**\n   * Callback to request a password if a wrong or no password was provided.\n   * The callback receives two parameters: a function that should be called\n   * with the new password, and a reason (see {@link PasswordResponses}).\n   * @type {function}\n   */\n  onPassword = null;\n\n  /**\n   * Callback to be able to monitor the loading progress of the PDF file\n   * (necessary to implement e.g. a loading bar).\n   * The callback receives an {@link OnProgressParameters} argument.\n   * @type {function}\n   */\n  onProgress = null;\n\n  /**\n   * Promise for document loading task completion.\n   * @type {Promise<PDFDocumentProxy>}\n   */\n  get promise() {\n    return this._capability.promise;\n  }\n\n  /**\n   * Abort all network requests and destroy the worker.\n   * @returns {Promise<void>} A promise that is resolved when destruction is\n   *   completed.\n   */\n  async destroy() {\n    this.destroyed = true;\n\n    try {\n      if (this._worker?.port) {\n        this._worker._pendingDestroy = true;\n      }\n      await this._transport?.destroy();\n    } catch (ex) {\n      if (this._worker?.port) {\n        delete this._worker._pendingDestroy;\n      }\n      throw ex;\n    }\n    this._transport = null;\n\n    this._worker?.destroy();\n    this._worker = null;\n  }\n\n  /**\n   * Attempt to fetch the raw data of the PDF document, when e.g.\n   *  - An exception was thrown during document initialization.\n   *  - An `onPassword` callback is delaying initialization.\n   * @returns {Promise<Uint8Array>}\n   */\n  async getData() {\n    return this._transport.getData();\n  }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n  #capability = Promise.withResolvers();\n\n  #progressiveDoneListeners = [];\n\n  #progressiveReadListeners = [];\n\n  #progressListeners = [];\n\n  #rangeListeners = [];\n\n  /**\n   * @param {number} length\n   * @param {Uint8Array|null} initialData\n   * @param {boolean} [progressiveDone]\n   * @param {string} [contentDispositionFilename]\n   */\n  constructor(\n    length,\n    initialData,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addRangeListener(listener) {\n    this.#rangeListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressListener(listener) {\n    this.#progressListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressiveReadListener(listener) {\n    this.#progressiveReadListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressiveDoneListener(listener) {\n    this.#progressiveDoneListeners.push(listener);\n  }\n\n  /**\n   * @param {number} begin\n   * @param {Uint8Array|null} chunk\n   */\n  onDataRange(begin, chunk) {\n    for (const listener of this.#rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n\n  /**\n   * @param {number} loaded\n   * @param {number|undefined} total\n   */\n  onDataProgress(loaded, total) {\n    this.#capability.promise.then(() => {\n      for (const listener of this.#progressListeners) {\n        listener(loaded, total);\n      }\n    });\n  }\n\n  /**\n   * @param {Uint8Array|null} chunk\n   */\n  onDataProgressiveRead(chunk) {\n    this.#capability.promise.then(() => {\n      for (const listener of this.#progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n\n  onDataProgressiveDone() {\n    this.#capability.promise.then(() => {\n      for (const listener of this.#progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n\n  transportReady() {\n    this.#capability.resolve();\n  }\n\n  /**\n   * @param {number} begin\n   * @param {number} end\n   */\n  requestDataRange(begin, end) {\n    unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n\n  abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getNetworkStreamName\", {\n        value: () => this._transport.getNetworkStreamName(),\n      });\n      Object.defineProperty(this, \"getXFADatasets\", {\n        value: () => this._transport.getXFADatasets(),\n      });\n      Object.defineProperty(this, \"getStartXRefPos\", {\n        value: () => this._transport.getStartXRefPos(),\n      });\n      Object.defineProperty(this, \"getAnnotArray\", {\n        value: pageIndex => this._transport.getAnnotArray(pageIndex),\n      });\n    }\n  }\n\n  /**\n   * @type {AnnotationStorage} Storage for annotation data in forms.\n   */\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n\n  /**\n   * @type {Object} The canvas factory instance.\n   */\n  get canvasFactory() {\n    return this._transport.canvasFactory;\n  }\n\n  /**\n   * @type {Object} The filter factory instance.\n   */\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n\n  /**\n   * @type {number} Total number of pages in the PDF file.\n   */\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n\n  /**\n   * @type {Array<string | null>} A (not guaranteed to be) unique ID to identify\n   *   the PDF document.\n   *   NOTE: The first element will always be defined for all PDF documents,\n   *   whereas the second element is only defined for *modified* PDF documents.\n   */\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n\n  /**\n   * NOTE: This is (mostly) intended to support printing of XFA forms.\n   *\n   * @type {Object | null} An object representing a HTML tree structure\n   *   to render the XFA, or `null` when no XFA form exists.\n   */\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n\n  /**\n   * @param {number} pageNumber - The page number to get. The first page is 1.\n   * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n   *   a {@link PDFPageProxy} object.\n   */\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n\n  /**\n   * @param {RefProxy} ref - The page reference.\n   * @returns {Promise<number>} A promise that is resolved with the page index,\n   *   starting from zero, that is associated with the reference.\n   */\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n   *   with a mapping from named destinations to references.\n   *\n   * This can be slow for large documents. Use `getDestination` instead.\n   */\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n\n  /**\n   * @param {string} id - The named destination to get.\n   * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n   *   information of the given named destination, or `null` when the named\n   *   destination is not present in the PDF file.\n   */\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with\n   *   an {Array} containing the page labels that correspond to the page\n   *   indexes, or `null` when no page labels are present in the PDF file.\n   */\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page layout name.\n   */\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page mode name.\n   */\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with an\n   *   {Object} containing the viewer preferences, or `null` when no viewer\n   *   preferences are present in the PDF file.\n   */\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n\n  /**\n   * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n   *   containing the destination, or `null` when no open action is present\n   *   in the PDF.\n   */\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n\n  /**\n   * @returns {Promise<any>} A promise that is resolved with a lookup table\n   *   for mapping named attachments to their content.\n   */\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n\n  /**\n   * @param {Set<number>} types - The annotation types to retrieve.\n   * @param {Set<number>} pageIndexesToSkip\n   * @returns {Promise<Array<Object>>} A promise that is resolved with a list of\n   *   annotations data.\n   */\n  getAnnotationsByType(types, pageIndexesToSkip) {\n    return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with the JavaScript actions:\n   *     - from the name tree.\n   *     - from A or AA entries in the catalog dictionary.\n   *   , or `null` if no JavaScript exists.\n   */\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n\n  /**\n   * @typedef {Object} OutlineNode\n   * @property {string} title\n   * @property {boolean} bold\n   * @property {boolean} italic\n   * @property {Uint8ClampedArray} color - The color in RGB format to use for\n   *   display purposes.\n   * @property {string | Array<any> | null} dest\n   * @property {string | null} url\n   * @property {string | undefined} unsafeUrl\n   * @property {boolean | undefined} newWindow\n   * @property {number | undefined} count\n   * @property {Array<OutlineNode>} items\n   */\n\n  /**\n   * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n   *   {Array} that is a tree outline (if it has one) of the PDF file.\n   */\n  getOutline() {\n    return this._transport.getOutline();\n  }\n\n  /**\n   * @typedef {Object} GetOptionalContentConfigParameters\n   * @property {string} [intent] - Determines the optional content groups that\n   *   are visible by default; valid values are:\n   *    - 'display' (viewable groups).\n   *    - 'print' (printable groups).\n   *    - 'any' (all groups).\n   *   The default value is 'display'.\n   */\n\n  /**\n   * @param {GetOptionalContentConfigParameters} [params] - Optional content\n   *   config parameters.\n   * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n   *   an {@link OptionalContentConfig} that contains all the optional content\n   *   groups (assuming that the document has any).\n   */\n  getOptionalContentConfig({ intent = \"display\" } = {}) {\n    const { renderingIntent } = this._transport.getRenderingIntent(intent);\n\n    return this._transport.getOptionalContentConfig(renderingIntent);\n  }\n\n  /**\n   * @returns {Promise<Array<number> | null>} A promise that is resolved with\n   *   an {Array} that contains the permission flags for the PDF document, or\n   *   `null` when no permissions are present in the PDF file.\n   */\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n\n  /**\n   * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n   *   resolved with an {Object} that has `info` and `metadata` properties.\n   *   `info` is an {Object} filled with anything available in the information\n   *   dictionary and similarly `metadata` is a {Metadata} object with\n   *   information from the metadata section of the PDF.\n   */\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n\n  /**\n   * @typedef {Object} MarkInfo\n   * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n   * @property {boolean} Marked\n   * @property {boolean} UserProperties\n   * @property {boolean} Suspects\n   */\n\n  /**\n   * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n   *   a {MarkInfo} object that contains the MarkInfo flags for the PDF\n   *   document, or `null` when no MarkInfo values are present in the PDF file.\n   */\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the raw data of the PDF document.\n   */\n  getData() {\n    return this._transport.getData();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the full data of the saved document.\n   */\n  saveDocument() {\n    return this._transport.saveDocument();\n  }\n\n  /**\n   * @typedef {Object} PageInfo\n   * @property {null|Uint8Array} document\n   * @property {Array<Array<number>|number>} [includePages]\n   *  included ranges or indices.\n   * @property {Array<Array<number>|number>} [excludePages]\n   *  excluded ranges or indices.\n   */\n\n  /**\n   * @param {Array<PageInfo>} pageInfos - The pages to extract.\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the full data of the saved document.\n   */\n  extractPages(pageInfos) {\n    return this._transport.extractPages(pageInfos);\n  }\n\n  /**\n   * @returns {Promise<{ length: number }>} A promise that is resolved when the\n   *   document's data is loaded. It is resolved with an {Object} that contains\n   *   the `length` property that indicates size of the PDF data in bytes.\n   */\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n\n  /**\n   * Cleans up resources allocated by the document on both the main and worker\n   * threads.\n   *\n   * NOTE: Do not, under any circumstances, call this method when rendering is\n   * currently ongoing since that may lead to rendering errors.\n   *\n   * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n   *   NOTE: This will increase persistent memory usage, hence don't use this\n   *   option unless absolutely necessary. The default value is `false`.\n   * @returns {Promise} A promise that is resolved when clean-up has finished.\n   */\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n\n  /**\n   * Destroys the current document instance and terminates the worker.\n   */\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n\n  /**\n   * @param {RefProxy} ref - The page reference.\n   * @returns {number | null} The page number, if it's cached.\n   */\n  cachedPageNumber(ref) {\n    return this._transport.cachedPageNumber(ref);\n  }\n\n  /**\n   * @type {DocumentInitParameters} A subset of the current\n   *   {DocumentInitParameters}, which are needed in the viewer.\n   */\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n\n  /**\n   * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n   */\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n   *   resolved with an {Object} containing /AcroForm field data for the JS\n   *   sandbox, or `null` when no field data is present in the PDF file.\n   */\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n\n  /**\n   * @returns {Promise<boolean>} A promise that is resolved with `true`\n   *   if some /AcroForm fields have JavaScript actions.\n   */\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n   *   {Array<string>} containing IDs of annotations that have a calculation\n   *   action, or `null` when no such annotations are present in the PDF file.\n   */\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n *   the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n *   flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n *   content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n *   normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n *   {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n *   items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n *   indexed by font name.\n * @property {string | null} lang - The document /Lang attribute.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n *   line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n *   'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n *   'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n *   can be 'display' (viewable annotations), 'print' (printable annotations),\n *   or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {HTMLCanvasElement|null} canvas - A DOM Canvas object. The default\n *   value is the canvas associated with the `canvasContext` parameter if no\n *   value is provided explicitly.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n *   the `PDFPageProxy.getViewport` method.\n * @property {CanvasRenderingContext2D} [canvasContext] - 2D context of a DOM\n *   Canvas object for backwards compatibility; it is recommended to use the\n *   `canvas` parameter instead.\n *   If the context must absolutely be used to render the page, the canvas must\n *   be null.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n *   onto the canvas, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n *   before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n *   to use for the canvas.\n *   Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n *   <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n *   a `CanvasPattern` object (a repetitive image). The default value is\n *   'rgb(255,255,255)'.\n *\n *   NOTE: This option may be partially, or completely, ignored when the\n *   `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n *   with user defined ones in order to improve readability in high contrast\n *   mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n *   A promise that should resolve with an {@link OptionalContentConfig}\n *   created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n *   the configuration will be fetched automatically with the default visibility\n *   states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n *   annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n * @property {boolean} [isEditing] - Render the page in editing mode.\n * @property {boolean} [recordOperations] - Record the dependencies and bounding\n *   boxes of all PDF operations that render onto the canvas.\n * @property {OperationsFilter} [operationsFilter] - If provided, only\n *   run for which this function returns `true`.\n */\n\n/**\n * @callback OperationsFilter\n * @param {number} index - The index of the operation.\n * @returns {boolean} If false, the operation is ignored.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n *   in the operatorList, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n * @property {boolean} [isEditing] - Render the page in editing mode.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n *   {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n *   elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n *   functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n  #pendingCleanup = false;\n\n  constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n    this._pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this._transport = transport;\n    this._stats = pdfBug ? new StatTimer() : null;\n    this._pdfBug = pdfBug;\n    /** @type {PDFObjects} */\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n\n    this._intentStates = new Map();\n    this.destroyed = false;\n    this.recordedBBoxes = null;\n  }\n\n  /**\n   * @type {number} Page number of the page. First page is 1.\n   */\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n\n  /**\n   * @type {number} The number of degrees the page is rotated clockwise.\n   */\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n\n  /**\n   * @type {RefProxy | null} The reference that points to this page.\n   */\n  get ref() {\n    return this._pageInfo.ref;\n  }\n\n  /**\n   * @type {number} The default size of units in 1/72nds of an inch.\n   */\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n\n  /**\n   * @type {Array<number>} An array of the visible portion of the PDF page in\n   *   user space units [x1, y1, x2, y2].\n   */\n  get view() {\n    return this._pageInfo.view;\n  }\n\n  /**\n   * @param {GetViewportParameters} params - Viewport parameters.\n   * @returns {PageViewport} Contains 'width' and 'height' properties\n   *   along with transforms required for rendering.\n   */\n  getViewport({\n    scale,\n    rotation = this.rotate,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.view,\n      userUnit: this.userUnit,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * @param {GetAnnotationsParameters} [params] - Annotation parameters.\n   * @returns {Promise<Array<any>>} A promise that is resolved with an\n   *   {Array} of the annotation objects.\n   */\n  getAnnotations({ intent = \"display\" } = {}) {\n    const { renderingIntent } = this._transport.getRenderingIntent(intent);\n\n    return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n  }\n\n  /**\n   * @returns {Promise<Object>} A promise that is resolved with an\n   *   {Object} with JS actions.\n   */\n  getJSActions() {\n    return this._transport.getPageJSActions(this._pageIndex);\n  }\n\n  /**\n   * @type {Object} The filter factory instance.\n   */\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with a fake DOM object (a tree structure where elements\n   *   are {Object} with a name, attributes (class, style, ...), value and\n   *   children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n   */\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n  }\n\n  /**\n   * Begins the process of rendering a page to the desired context.\n   *\n   * @param {RenderParameters} params - Page render parameters.\n   * @returns {RenderTask} An object that contains a promise that is\n   *   resolved when the page finishes rendering.\n   */\n  render({\n    canvasContext,\n    canvas = canvasContext.canvas,\n    viewport,\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    transform = null,\n    background = null,\n    optionalContentConfigPromise = null,\n    annotationCanvasMap = null,\n    pageColors = null,\n    printAnnotationStorage = null,\n    isEditing = false,\n    recordOperations = false,\n    operationsFilter = null,\n  }) {\n    this._stats?.time(\"Overall\");\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage,\n      isEditing\n    );\n    const { renderingIntent, cacheKey } = intentArgs;\n    // If there was a pending destroy, cancel it so no cleanup happens during\n    // this call to render.\n    this.#pendingCleanup = false;\n\n    optionalContentConfigPromise ||=\n      this._transport.getOptionalContentConfig(renderingIntent);\n\n    let intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(cacheKey, intentState);\n    }\n\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n\n    // If there's no displayReadyCapability yet, then the operatorList\n    // was never requested before. Make the request and create the promise.\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = Promise.withResolvers();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n\n    const recordForDebugger = Boolean(\n      this._pdfBug && globalThis.StepperManager?.enabled\n    );\n\n    const shouldRecordOperations =\n      !this.recordedBBoxes && (recordOperations || recordForDebugger);\n\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n\n      if (shouldRecordOperations) {\n        const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n        if (recordedBBoxes) {\n          if (internalRenderTask.stepper) {\n            internalRenderTask.stepper.setOperatorBBoxes(\n              recordedBBoxes,\n              internalRenderTask.gfx.dependencyTracker.takeDebugMetadata()\n            );\n          }\n          if (recordOperations) {\n            this.recordedBBoxes = recordedBBoxes;\n          }\n        }\n      }\n\n      // Attempt to reduce memory usage during *printing*, by always running\n      // cleanup immediately once rendering has finished.\n      if (intentPrint) {\n        this.#pendingCleanup = true;\n      }\n      this.#tryCleanup();\n\n      if (error) {\n        internalRenderTask.capability.reject(error);\n\n        this._abortOperatorList({\n          intentState,\n          reason: error instanceof Error ? error : new Error(error),\n        });\n      } else {\n        internalRenderTask.capability.resolve();\n      }\n\n      if (this._stats) {\n        this._stats.timeEnd(\"Rendering\");\n        this._stats.timeEnd(\"Overall\");\n\n        if (globalThis.Stats?.enabled) {\n          globalThis.Stats.add(this.pageNumber, this._stats);\n        }\n      }\n    };\n\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\n      // Only include the required properties, and *not* the entire object.\n      params: {\n        canvas,\n        canvasContext,\n        dependencyTracker: shouldRecordOperations\n          ? new CanvasDependencyTracker(\n              canvas,\n              intentState.operatorList.length,\n              recordForDebugger\n            )\n          : null,\n        viewport,\n        transform,\n        background,\n      },\n      objs: this.objs,\n      commonObjs: this.commonObjs,\n      annotationCanvasMap,\n      operatorList: intentState.operatorList,\n      pageIndex: this._pageIndex,\n      canvasFactory: this._transport.canvasFactory,\n      filterFactory: this._transport.filterFactory,\n      useRequestAnimationFrame: !intentPrint,\n      pdfBug: this._pdfBug,\n      pageColors,\n      enableHWA: this._transport.enableHWA,\n      operationsFilter,\n    });\n\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n\n    Promise.all([\n      intentState.displayReadyCapability.promise,\n      optionalContentConfigPromise,\n    ])\n      .then(([transparency, optionalContentConfig]) => {\n        if (this.destroyed) {\n          complete();\n          return;\n        }\n        this._stats?.time(\"Rendering\");\n\n        if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n          throw new Error(\n            \"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" +\n              \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\"\n          );\n        }\n        internalRenderTask.initializeGraphics({\n          transparency,\n          optionalContentConfig,\n        });\n        internalRenderTask.operatorListChanged();\n      })\n      .catch(complete);\n\n    return renderTask;\n  }\n\n  /**\n   * @param {GetOperatorListParameters} params - Page getOperatorList\n   *   parameters.\n   * @returns {Promise<PDFOperatorList>} A promise resolved with an\n   *   {@link PDFOperatorList} object that represents the page's operator list.\n   */\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isEditing = false,\n  } = {}) {\n    if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n      throw new Error(\"Not implemented: getOperatorList\");\n    }\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage,\n      isEditing,\n      /* isOpList = */ true\n    );\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n    let opListTask;\n\n    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = Promise.withResolvers();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    return intentState.opListReadCapability.promise;\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {ReadableStream} Stream for reading text content chunks.\n   */\n  streamTextContent({\n    includeMarkedContent = false,\n    disableNormalization = false,\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n    return this._transport.messageHandler.sendWithStream(\n      \"GetTextContent\",\n      {\n        pageIndex: this._pageIndex,\n        includeMarkedContent: includeMarkedContent === true,\n        disableNormalization: disableNormalization === true,\n      },\n      {\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n        size(textContent) {\n          return textContent.items.length;\n        },\n      }\n    );\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {Promise<TextContent>} A promise that is resolved with a\n   *   {@link TextContent} object that represents the page's text content.\n   */\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      // TODO: We need to revisit this once the XFA foreground patch lands and\n      // only do this for non-foreground XFA.\n      return this.getXfa().then(xfa => XfaText.textContent(xfa));\n    }\n    const readableStream = this.streamTextContent(params);\n\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({ value, done }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n          textContent.lang ??= value.lang;\n          Object.assign(textContent.styles, value.styles);\n          textContent.items.push(...value.items);\n          pump();\n        }, reject);\n      }\n\n      const reader = readableStream.getReader();\n      const textContent = {\n        items: [],\n        styles: Object.create(null),\n        lang: null,\n      };\n      pump();\n    });\n  }\n\n  /**\n   * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n   *   {@link StructTreeNode} object that represents the page's structure tree,\n   *   or `null` when no structure tree is present for the current page.\n   */\n  getStructTree() {\n    return this._transport.getStructTree(this._pageIndex);\n  }\n\n  /**\n   * Destroys the page object.\n   * @private\n   */\n  _destroy() {\n    this.destroyed = true;\n\n    const waitOn = [];\n    for (const intentState of this._intentStates.values()) {\n      this._abortOperatorList({\n        intentState,\n        reason: new Error(\"Page was destroyed.\"),\n        force: true,\n      });\n\n      if (intentState.opListReadCapability) {\n        // Avoid errors below, since the renderTasks are just stubs.\n        continue;\n      }\n      for (const internalRenderTask of intentState.renderTasks) {\n        waitOn.push(internalRenderTask.completed);\n        internalRenderTask.cancel();\n      }\n    }\n    this.objs.clear();\n    this.#pendingCleanup = false;\n\n    return Promise.all(waitOn);\n  }\n\n  /**\n   * Cleans up resources allocated by the page.\n   *\n   * @param {boolean} [resetStats] - Reset page stats, if enabled.\n   *   The default value is `false`.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  cleanup(resetStats = false) {\n    this.#pendingCleanup = true;\n    const success = this.#tryCleanup();\n\n    if (resetStats && success) {\n      this._stats &&= new StatTimer();\n    }\n    return success;\n  }\n\n  /**\n   * Attempts to clean up if rendering is in a state where that's possible.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  #tryCleanup() {\n    if (!this.#pendingCleanup || this.destroyed) {\n      return false;\n    }\n    for (const { renderTasks, operatorList } of this._intentStates.values()) {\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\n        return false;\n      }\n    }\n    this._intentStates.clear();\n    this.objs.clear();\n    this.#pendingCleanup = false;\n    return true;\n  }\n\n  /**\n   * @private\n   */\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      return; // Rendering was cancelled.\n    }\n    this._stats?.timeEnd(\"Page Request\");\n\n    // TODO Refactor RenderPageRequest to separate rendering\n    // and operator list logic\n    intentState.displayReadyCapability?.resolve(transparency);\n  }\n\n  /**\n   * @private\n   */\n  _renderPageChunk(operatorListChunk, intentState) {\n    // Add the new chunk to the current operator list.\n    for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n    }\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n    intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n    // Notify all the rendering tasks there are more operators to be consumed.\n    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n\n    if (operatorListChunk.lastChunk) {\n      this.#tryCleanup();\n    }\n  }\n\n  /**\n   * @private\n   */\n  _pumpOperatorList({\n    renderingIntent,\n    cacheKey,\n    annotationStorageSerializable,\n    modifiedIds,\n  }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        Number.isInteger(renderingIntent) && renderingIntent > 0,\n        '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n      );\n    }\n    const { map, transfer } = annotationStorageSerializable;\n\n    const readableStream = this._transport.messageHandler.sendWithStream(\n      \"GetOperatorList\",\n      {\n        pageIndex: this._pageIndex,\n        intent: renderingIntent,\n        cacheKey,\n        annotationStorage: map,\n        modifiedIds,\n      },\n      transfer\n    );\n    const reader = readableStream.getReader();\n\n    const intentState = this._intentStates.get(cacheKey);\n    intentState.streamReader = reader;\n\n    const pump = () => {\n      reader.read().then(\n        ({ value, done }) => {\n          if (done) {\n            intentState.streamReader = null;\n            return;\n          }\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          this._renderPageChunk(value, intentState);\n          pump();\n        },\n        reason => {\n          intentState.streamReader = null;\n\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          if (intentState.operatorList) {\n            // Mark operator list as complete.\n            intentState.operatorList.lastChunk = true;\n\n            for (const internalRenderTask of intentState.renderTasks) {\n              internalRenderTask.operatorListChanged();\n            }\n            this.#tryCleanup();\n          }\n\n          if (intentState.displayReadyCapability) {\n            intentState.displayReadyCapability.reject(reason);\n          } else if (intentState.opListReadCapability) {\n            intentState.opListReadCapability.reject(reason);\n          } else {\n            throw reason;\n          }\n        }\n      );\n    };\n    pump();\n  }\n\n  /**\n   * @private\n   */\n  _abortOperatorList({ intentState, reason, force = false }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        reason instanceof Error,\n        '_abortOperatorList: Expected valid \"reason\" argument.'\n      );\n    }\n\n    if (!intentState.streamReader) {\n      return;\n    }\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    if (!force) {\n      // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n      // multiple render() calls on the same canvas, won't break all rendering.\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n      // Don't immediately abort parsing on the worker-thread when rendering is\n      // cancelled, since that will unnecessarily delay re-rendering when (for\n      // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n      if (reason instanceof RenderingCancelledException) {\n        let delay = RENDERING_CANCELLED_TIMEOUT;\n        if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n          // Above, we prevent the total delay from becoming arbitrarily large.\n          delay += reason.extraDelay;\n        }\n\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          intentState.streamReaderCancelTimeout = null;\n          this._abortOperatorList({ intentState, reason, force: true });\n        }, delay);\n        return;\n      }\n    }\n    intentState.streamReader\n      .cancel(new AbortException(reason.message))\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n    intentState.streamReader = null;\n\n    if (this._transport.destroyed) {\n      return; // Ignore any pending requests if the worker was terminated.\n    }\n    // Remove the current `intentState`, since a cancelled `getOperatorList`\n    // call on the worker-thread cannot be re-started...\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n        break;\n      }\n    }\n    // ... and force clean-up to ensure that any old state is always removed.\n    this.cleanup();\n  }\n\n  /**\n   * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n   *   otherwise.\n   */\n  get stats() {\n    return this._stats;\n  }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n *   the constants from {@link VerbosityLevel} should be used.\n */\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n  #capability = Promise.withResolvers();\n\n  #messageHandler = null;\n\n  #port = null;\n\n  #webWorker = null;\n\n  static #fakeWorkerId = 0;\n\n  static #isWorkerDisabled = false;\n\n  static #workerPorts = new WeakMap();\n\n  static {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      if (isNodeJS) {\n        // Workers aren't supported in Node.js, force-disabling them there.\n        this.#isWorkerDisabled = true;\n\n        GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\"LIB\")\n          ? \"../pdf.worker.js\"\n          : \"./pdf.worker.mjs\";\n      }\n\n      // Check if URLs have the same origin. For non-HTTP based URLs, returns\n      // false.\n      this._isSameOrigin = (baseUrl, otherUrl) => {\n        const base = URL.parse(baseUrl);\n        if (!base?.origin || base.origin === \"null\") {\n          return false; // non-HTTP url\n        }\n        const other = new URL(otherUrl, base);\n        return base.origin === other.origin;\n      };\n\n      this._createCDNWrapper = url => {\n        // We will rely on blob URL's property to specify origin.\n        // We want this function to fail in case if createObjectURL or Blob do\n        // not exist or fail for some reason -- our Worker creation will fail\n        // anyway.\n        const wrapper = `await import(\"${url}\");`;\n        return URL.createObjectURL(\n          new Blob([wrapper], { type: \"text/javascript\" })\n        );\n      };\n\n      this.fromPort = params => {\n        deprecated(\n          \"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\"\n        );\n        if (!params?.port) {\n          throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n        }\n        return this.create(params);\n      };\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      this._resetGlobalState = () => {\n        this.#isWorkerDisabled = false;\n        delete globalThis.pdfjsWorker;\n      };\n    }\n  }\n\n  constructor({\n    name = null,\n    port = null,\n    verbosity = getVerbosityLevel(),\n  } = {}) {\n    this.name = name;\n    this.destroyed = false;\n    this.verbosity = verbosity;\n\n    if (port) {\n      if (PDFWorker.#workerPorts.has(port)) {\n        throw new Error(\"Cannot use more than one PDFWorker per port.\");\n      }\n      PDFWorker.#workerPorts.set(port, this);\n      this.#initializeFromPort(port);\n    } else {\n      this.#initialize();\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"_webWorker\", {\n        get() {\n          return this.#webWorker;\n        },\n      });\n    }\n  }\n\n  /**\n   * Promise for worker initialization completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this.#capability.promise;\n  }\n\n  #resolve() {\n    this.#capability.resolve();\n    // Send global setting, e.g. verbosity level.\n    this.#messageHandler.send(\"configure\", {\n      verbosity: this.verbosity,\n    });\n  }\n\n  /**\n   * The current `workerPort`, when it exists.\n   * @type {Worker}\n   */\n  get port() {\n    return this.#port;\n  }\n\n  /**\n   * The current MessageHandler-instance.\n   * @type {MessageHandler}\n   */\n  get messageHandler() {\n    return this.#messageHandler;\n  }\n\n  #initializeFromPort(port) {\n    this.#port = port;\n    this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n    this.#messageHandler.on(\"ready\", () => {\n      // Ignoring \"ready\" event -- MessageHandler should already be initialized\n      // and ready to accept messages.\n    });\n    this.#resolve();\n  }\n\n  #initialize() {\n    // If worker support isn't disabled explicit and the browser has worker\n    // support, create a new web worker and test if it/the browser fulfills\n    // all requirements to run parts of pdf.js in a web worker.\n    // Right now, the requirement is, that an Uint8Array is still an\n    // Uint8Array as it arrives on the worker.\n    if (\n      PDFWorker.#isWorkerDisabled ||\n      PDFWorker.#mainThreadWorkerMessageHandler\n    ) {\n      this.#setupFakeWorker();\n      return;\n    }\n    let { workerSrc } = PDFWorker;\n\n    try {\n      // Wraps workerSrc path into blob URL, if the former does not belong\n      // to the same origin.\n      if (\n        typeof PDFJSDev !== \"undefined\" &&\n        PDFJSDev.test(\"GENERIC\") &&\n        !PDFWorker._isSameOrigin(window.location, workerSrc)\n      ) {\n        workerSrc = PDFWorker._createCDNWrapper(\n          new URL(workerSrc, window.location).href\n        );\n      }\n\n      const worker = new Worker(workerSrc, { type: \"module\" });\n      const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n      const terminateEarly = () => {\n        ac.abort();\n        messageHandler.destroy();\n        worker.terminate();\n        if (this.destroyed) {\n          this.#capability.reject(new Error(\"Worker was destroyed\"));\n        } else {\n          // Fall back to fake worker if the termination is caused by an\n          // error (e.g. NetworkError / SecurityError).\n          this.#setupFakeWorker();\n        }\n      };\n\n      const ac = new AbortController();\n      worker.addEventListener(\n        \"error\",\n        () => {\n          if (!this.#webWorker) {\n            // Worker failed to initialize due to an error. Clean up and fall\n            // back to the fake worker.\n            terminateEarly();\n          }\n        },\n        { signal: ac.signal }\n      );\n\n      messageHandler.on(\"test\", data => {\n        ac.abort();\n        if (this.destroyed || !data) {\n          terminateEarly();\n          return;\n        }\n        this.#messageHandler = messageHandler;\n        this.#port = worker;\n        this.#webWorker = worker;\n\n        this.#resolve();\n      });\n\n      messageHandler.on(\"ready\", data => {\n        ac.abort();\n        if (this.destroyed) {\n          terminateEarly();\n          return;\n        }\n        try {\n          sendTest();\n        } catch {\n          // We need fallback to a faked worker.\n          this.#setupFakeWorker();\n        }\n      });\n\n      const sendTest = () => {\n        const testObj = new Uint8Array();\n        // Ensure that we can use `postMessage` transfers.\n        messageHandler.send(\"test\", testObj, [testObj.buffer]);\n      };\n\n      // It might take time for the worker to initialize. We will try to send\n      // the \"test\" message immediately, and once the \"ready\" message arrives.\n      // The worker shall process only the first received \"test\" message.\n      sendTest();\n      return;\n    } catch {\n      info(\"The worker has been disabled.\");\n    }\n    // Either workers are not supported or have thrown an exception.\n    // Thus, we fallback to a faked worker.\n    this.#setupFakeWorker();\n  }\n\n  #setupFakeWorker() {\n    if (!PDFWorker.#isWorkerDisabled) {\n      warn(\"Setting up fake worker.\");\n      PDFWorker.#isWorkerDisabled = true;\n    }\n\n    PDFWorker._setupFakeWorkerGlobal\n      .then(WorkerMessageHandler => {\n        if (this.destroyed) {\n          this.#capability.reject(new Error(\"Worker was destroyed\"));\n          return;\n        }\n        const port = new LoopbackPort();\n        this.#port = port;\n\n        // All fake workers use the same port, making id unique.\n        const id = `fake${PDFWorker.#fakeWorkerId++}`;\n\n        // If the main thread is our worker, setup the handling for the\n        // messages -- the main thread sends to it self.\n        const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n        WorkerMessageHandler.setup(workerHandler, port);\n\n        this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n        this.#resolve();\n      })\n      .catch(reason => {\n        this.#capability.reject(\n          new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n        );\n      });\n  }\n\n  /**\n   * Destroys the worker instance.\n   */\n  destroy() {\n    this.destroyed = true;\n\n    // We need to terminate only web worker created resource.\n    this.#webWorker?.terminate();\n    this.#webWorker = null;\n\n    PDFWorker.#workerPorts.delete(this.#port);\n    this.#port = null;\n\n    this.#messageHandler?.destroy();\n    this.#messageHandler = null;\n  }\n\n  /**\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\n   * @returns {PDFWorker}\n   */\n  static create(params) {\n    const cachedPort = this.#workerPorts.get(params?.port);\n    if (cachedPort) {\n      if (cachedPort._pendingDestroy) {\n        throw new Error(\n          \"PDFWorker.create - the worker is being destroyed.\\n\" +\n            \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n        );\n      }\n      return cachedPort;\n    }\n    return new PDFWorker(params);\n  }\n\n  /**\n   * The current `workerSrc`, when it exists.\n   * @type {string}\n   */\n  static get workerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n\n  static get #mainThreadWorkerMessageHandler() {\n    try {\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n    } catch {\n      return null;\n    }\n  }\n\n  // Loads worker code into the main-thread.\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      if (this.#mainThreadWorkerMessageHandler) {\n        // The worker was already loaded using e.g. a `<script>` tag.\n        return this.#mainThreadWorkerMessageHandler;\n      }\n      const worker =\n        typeof PDFJSDev === \"undefined\"\n          ? await import(\"pdfjs/pdf.worker.js\")\n          : await __raw_import__(this.workerSrc);\n      return worker.WorkerMessageHandler;\n    };\n\n    return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n  #methodPromises = new Map();\n\n  #pageCache = new Map();\n\n  #pagePromises = new Map();\n\n  #pageRefCache = new Map();\n\n  #passwordCapability = null;\n\n  constructor(\n    messageHandler,\n    loadingTask,\n    networkStream,\n    params,\n    factory,\n    enableHWA\n  ) {\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new FontLoader({\n      ownerDocument: params.ownerDocument,\n      styleElement: params.styleElement,\n    });\n    this.loadingParams = params.loadingParams;\n    this._params = params;\n\n    this.canvasFactory = factory.canvasFactory;\n    this.filterFactory = factory.filterFactory;\n    this.cMapReaderFactory = factory.cMapReaderFactory;\n    this.standardFontDataFactory = factory.standardFontDataFactory;\n    this.wasmFactory = factory.wasmFactory;\n\n    this.destroyed = false;\n    this.destroyCapability = null;\n\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = Promise.withResolvers();\n    this.enableHWA = enableHWA;\n\n    this.setupMessageHandler();\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getNetworkStreamName\", {\n        value: () => networkStream?.constructor?.name || null,\n      });\n      Object.defineProperty(this, \"getXFADatasets\", {\n        value: () =>\n          this.messageHandler.sendWithPromise(\"GetXFADatasets\", null),\n      });\n      Object.defineProperty(this, \"getXRefPrevValue\", {\n        value: () =>\n          this.messageHandler.sendWithPromise(\"GetXRefPrevValue\", null),\n      });\n      Object.defineProperty(this, \"getStartXRefPos\", {\n        value: () =>\n          this.messageHandler.sendWithPromise(\"GetStartXRefPos\", null),\n      });\n      Object.defineProperty(this, \"getAnnotArray\", {\n        value: pageIndex =>\n          this.messageHandler.sendWithPromise(\"GetAnnotArray\", { pageIndex }),\n      });\n    }\n  }\n\n  #cacheSimpleMethod(name, data = null) {\n    const cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(name, data);\n\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n\n  get annotationStorage() {\n    return shadow(this, \"annotationStorage\", new AnnotationStorage());\n  }\n\n  getRenderingIntent(\n    intent,\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isEditing = false,\n    isOpList = false\n  ) {\n    let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n    let annotationStorageSerializable = SerializableEmpty;\n\n    switch (intent) {\n      case \"any\":\n        renderingIntent = RenderingIntentFlag.ANY;\n        break;\n      case \"display\":\n        break;\n      case \"print\":\n        renderingIntent = RenderingIntentFlag.PRINT;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid intent: ${intent}`);\n    }\n\n    const annotationStorage =\n      renderingIntent & RenderingIntentFlag.PRINT &&\n      printAnnotationStorage instanceof PrintAnnotationStorage\n        ? printAnnotationStorage\n        : this.annotationStorage;\n\n    switch (annotationMode) {\n      case AnnotationMode.DISABLE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n        break;\n      case AnnotationMode.ENABLE:\n        break;\n      case AnnotationMode.ENABLE_FORMS:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n        break;\n      case AnnotationMode.ENABLE_STORAGE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n        annotationStorageSerializable = annotationStorage.serializable;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n\n    if (isEditing) {\n      renderingIntent += RenderingIntentFlag.IS_EDITING;\n    }\n    if (isOpList) {\n      renderingIntent += RenderingIntentFlag.OPLIST;\n    }\n\n    const { ids: modifiedIds, hash: modifiedIdsHash } =\n      annotationStorage.modifiedIds;\n\n    const cacheKeyBuf = [\n      renderingIntent,\n      annotationStorageSerializable.hash,\n      modifiedIdsHash,\n    ];\n\n    return {\n      renderingIntent,\n      cacheKey: cacheKeyBuf.join(\"_\"),\n      annotationStorageSerializable,\n      modifiedIds,\n    };\n  }\n\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n\n    this.destroyed = true;\n    this.destroyCapability = Promise.withResolvers();\n\n    this.#passwordCapability?.reject(\n      new Error(\"Worker was destroyed during onPassword callback\")\n    );\n\n    const waitOn = [];\n    // We need to wait for all renderings to be completed, e.g.\n    // timeout/rAF can take a long time.\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n    this.#pageRefCache.clear();\n    // Allow `AnnotationStorage`-related clean-up when destroying the document.\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n    // We also need to wait for the worker to finish its long running tasks.\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#methodPromises.clear();\n      this.filterFactory.destroy();\n      TextLayer.cleanup();\n\n      this._networkStream?.cancelAllRequests(\n        new AbortException(\"Worker was terminated.\")\n      );\n\n      this.messageHandler?.destroy();\n      this.messageHandler = null;\n\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n\n  setupMessageHandler() {\n    const { messageHandler, loadingTask } = this;\n\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetReader - no `IPDFStream` instance available.\"\n      );\n      this._fullReader = this._networkStream.getFullReader();\n      this._fullReader.onProgress = evt => {\n        this._lastProgress = {\n          loaded: evt.loaded,\n          total: evt.total,\n        };\n      };\n      sink.onPull = () => {\n        this._fullReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              value instanceof ArrayBuffer,\n              \"GetReader - expected an ArrayBuffer.\"\n            );\n            // Enqueue data chunk into sink, and transfer it\n            // to other side as `Transferable` object.\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"ReaderHeadersReady\", async data => {\n      await this._fullReader.headersReady;\n\n      const { isStreamingSupported, isRangeSupported, contentLength } =\n        this._fullReader;\n\n      // If stream or range are disabled, it's our only way to report\n      // loading progress.\n      if (!isStreamingSupported || !isRangeSupported) {\n        if (this._lastProgress) {\n          loadingTask.onProgress?.(this._lastProgress);\n        }\n        this._fullReader.onProgress = evt => {\n          loadingTask.onProgress?.({\n            loaded: evt.loaded,\n            total: evt.total,\n          });\n        };\n      }\n\n      return { isStreamingSupported, isRangeSupported, contentLength };\n    });\n\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetRangeReader - no `IPDFStream` instance available.\"\n      );\n      const rangeReader = this._networkStream.getRangeReader(\n        data.begin,\n        data.end\n      );\n\n      // When streaming is enabled, it's possible that the data requested here\n      // has already been fetched via the `_fullRequestReader` implementation.\n      // However, given that the PDF data is loaded asynchronously on the\n      // main-thread and then sent via `postMessage` to the worker-thread,\n      // it may not have been available during parsing (hence the attempt to\n      // use range requests here).\n      //\n      // To avoid wasting time and resources here, we'll thus *not* dispatch\n      // range requests if the data was already loaded but has not been sent to\n      // the worker-thread yet (which will happen via the `_fullRequestReader`).\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n\n      sink.onPull = () => {\n        rangeReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              value instanceof ArrayBuffer,\n              \"GetRangeReader - expected an ArrayBuffer.\"\n            );\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n\n    messageHandler.on(\"DocException\", ex => {\n      loadingTask._capability.reject(wrapReason(ex));\n    });\n\n    messageHandler.on(\"PasswordRequest\", ex => {\n      this.#passwordCapability = Promise.withResolvers();\n\n      try {\n        if (!loadingTask.onPassword) {\n          throw wrapReason(ex);\n        }\n\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this.#passwordCapability.reject(password);\n          } else {\n            this.#passwordCapability.resolve({ password });\n          }\n        };\n        loadingTask.onPassword(updatePassword, ex.code);\n      } catch (err) {\n        this.#passwordCapability.reject(err);\n      }\n      return this.#passwordCapability.promise;\n    });\n\n    messageHandler.on(\"DataLoaded\", data => {\n      // For consistency: Ensure that progress is always reported when the\n      // entire PDF file has been loaded, regardless of how it was fetched.\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length,\n      });\n\n      this.downloadInfoCapability.resolve(data);\n    });\n\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const page = this.#pageCache.get(data.pageIndex);\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return null; // Ignore any pending requests if the worker was terminated.\n      }\n\n      if (this.commonObjs.has(id)) {\n        return null;\n      }\n\n      switch (type) {\n        case \"Font\":\n          if (\"error\" in exportedData) {\n            const exportedError = exportedData.error;\n            warn(`Error during font loading: ${exportedError}`);\n            this.commonObjs.resolve(id, exportedError);\n            break;\n          }\n\n          const fontData = new FontInfo(exportedData);\n          const inspectFont =\n            this._params.pdfBug && globalThis.FontInspector?.enabled\n              ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\n              : null;\n          const font = new FontFaceObject(\n            fontData,\n            inspectFont,\n            exportedData.extra,\n            exportedData.charProcOperatorList\n          );\n\n          this.fontLoader\n            .bind(font)\n            .catch(() => messageHandler.sendWithPromise(\"FontFallback\", { id }))\n            .finally(() => {\n              if (!font.fontExtraProperties && font.data) {\n                // Immediately release the `font.data` property once the font\n                // has been attached to the DOM, since it's no longer needed,\n                // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n                // Since `font.data` could be very large, e.g. in some cases\n                // multiple megabytes, this will help reduce memory usage.\n                font.clearData();\n              }\n              this.commonObjs.resolve(id, font);\n            });\n          break;\n        case \"CopyLocalImage\":\n          const { imageRef } = exportedData;\n          assert(imageRef, \"The imageRef must be defined.\");\n\n          for (const pageProxy of this.#pageCache.values()) {\n            for (const [, data] of pageProxy.objs) {\n              if (data?.ref !== imageRef) {\n                continue;\n              }\n              if (!data.dataLen) {\n                return null;\n              }\n              this.commonObjs.resolve(id, structuredClone(data));\n              return data.dataLen;\n            }\n          }\n          break;\n        case \"FontPath\":\n          this.commonObjs.resolve(id, new FontPathInfo(exportedData));\n          break;\n        case \"Image\":\n          this.commonObjs.resolve(id, exportedData);\n          break;\n        case \"Pattern\":\n          const pattern = new PatternInfo(exportedData);\n          this.commonObjs.resolve(id, pattern.getIR());\n          break;\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n\n      return null;\n    });\n\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        // Ignore any pending requests if the worker was terminated.\n        return;\n      }\n\n      const pageProxy = this.#pageCache.get(pageIndex);\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n      // Don't store data *after* cleanup has successfully run, see bug 1854145.\n      if (pageProxy._intentStates.size === 0) {\n        imageData?.bitmap?.close(); // Release any `ImageBitmap` data.\n        return;\n      }\n\n      switch (type) {\n        case \"Image\":\n        case \"Pattern\":\n          pageProxy.objs.resolve(id, imageData);\n          break;\n        default:\n          throw new Error(`Got unknown object type ${type}`);\n      }\n    });\n\n    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total,\n      });\n    });\n\n    messageHandler.on(\"FetchBinaryData\", async data => {\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n        throw new Error(\"Not implemented: FetchBinaryData\");\n      }\n      if (this.destroyed) {\n        throw new Error(\"Worker was destroyed.\");\n      }\n      const factory = this[data.type];\n\n      if (!factory) {\n        throw new Error(\n          `${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`\n        );\n      }\n      return factory.fetch(data);\n    });\n  }\n\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n\n  saveDocument() {\n    if (this.annotationStorage.size <= 0) {\n      warn(\n        \"saveDocument called while `annotationStorage` is empty, \" +\n          \"please use the getData-method instead.\"\n      );\n    }\n    const { map, transfer } = this.annotationStorage.serializable;\n\n    return this.messageHandler\n      .sendWithPromise(\n        \"SaveDocument\",\n        {\n          isPureXfa: !!this._htmlForXfa,\n          numPages: this._numPages,\n          annotationStorage: map,\n          filename: this._fullReader?.filename ?? null,\n        },\n        transfer\n      )\n      .finally(() => {\n        this.annotationStorage.resetModified();\n      });\n  }\n\n  extractPages(pageInfos) {\n    return this.messageHandler.sendWithPromise(\"ExtractPages\", { pageInfos });\n  }\n\n  getPage(pageNumber) {\n    if (\n      !Number.isInteger(pageNumber) ||\n      pageNumber <= 0 ||\n      pageNumber > this._numPages\n    ) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n\n    const pageIndex = pageNumber - 1,\n      cachedPromise = this.#pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler\n      .sendWithPromise(\"GetPage\", {\n        pageIndex,\n      })\n      .then(pageInfo => {\n        if (this.destroyed) {\n          throw new Error(\"Transport destroyed\");\n        }\n        if (pageInfo.refStr) {\n          this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n        }\n\n        const page = new PDFPageProxy(\n          pageIndex,\n          pageInfo,\n          this,\n          this._params.pdfBug\n        );\n        this.#pageCache.set(pageIndex, page);\n        return page;\n      });\n    this.#pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n\n  getPageIndex(ref) {\n    if (!isRefProxy(ref)) {\n      return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n      num: ref.num,\n      gen: ref.gen,\n    });\n  }\n\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent,\n    });\n  }\n\n  getFieldObjects() {\n    return this.#cacheSimpleMethod(\"GetFieldObjects\");\n  }\n\n  hasJSActions() {\n    return this.#cacheSimpleMethod(\"HasJSActions\");\n  }\n\n  getCalculationOrderIds() {\n    return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n  }\n\n  getDestinations() {\n    return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n  }\n\n  getDestination(id) {\n    if (typeof id !== \"string\") {\n      return Promise.reject(new Error(\"Invalid destination request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetDestination\", {\n      id,\n    });\n  }\n\n  getPageLabels() {\n    return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n  }\n\n  getPageLayout() {\n    return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n  }\n\n  getPageMode() {\n    return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n  }\n\n  getViewerPreferences() {\n    return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n  }\n\n  getOpenAction() {\n    return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n  }\n\n  getAttachments() {\n    return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n  }\n\n  getAnnotationsByType(types, pageIndexesToSkip) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n      types,\n      pageIndexesToSkip,\n    });\n  }\n\n  getDocJSActions() {\n    return this.#cacheSimpleMethod(\"GetDocJSActions\");\n  }\n\n  getPageJSActions(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n      pageIndex,\n    });\n  }\n\n  getStructTree(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n      pageIndex,\n    });\n  }\n\n  getOutline() {\n    return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n  }\n\n  getOptionalContentConfig(renderingIntent) {\n    return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(\n      data => new OptionalContentConfig(data, renderingIntent)\n    );\n  }\n\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n  }\n\n  getMetadata() {\n    const name = \"GetMetadata\",\n      cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler\n      .sendWithPromise(name, null)\n      .then(results => ({\n        info: results[0],\n        metadata: results[1] ? new Metadata(results[1]) : null,\n        contentDispositionFilename: this._fullReader?.filename ?? null,\n        contentLength: this._fullReader?.contentLength ?? null,\n        hasStructTree: results[2],\n      }));\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n\n  async startCleanup(keepLoadedFonts = false) {\n    if (this.destroyed) {\n      return; // No need to manually clean-up when destruction has started.\n    }\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n\n      if (!cleanupSuccessful) {\n        throw new Error(\n          `startCleanup: Page ${page.pageNumber} is currently rendering.`\n        );\n      }\n    }\n    this.commonObjs.clear();\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n    this.#methodPromises.clear();\n    this.filterFactory.destroy(/* keepHCM = */ true);\n    TextLayer.cleanup();\n  }\n\n  cachedPageNumber(ref) {\n    if (!isRefProxy(ref)) {\n      return null;\n    }\n    const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n    return this.#pageRefCache.get(refStr) ?? null;\n  }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n  #internalRenderTask = null;\n\n  /**\n   * Callback for incremental rendering -- a function that will be called\n   * each time the rendering is paused.  To continue rendering call the\n   * function that is the first argument to the callback.\n   * @type {function}\n   */\n  onContinue = null;\n\n  /**\n   * A function that will be synchronously called when the rendering tasks\n   * finishes with an error (either because of an actual error, or because the\n   * rendering is cancelled).\n   *\n   * @type {function}\n   * @param {Error} error\n   */\n  onError = null;\n\n  constructor(internalRenderTask) {\n    this.#internalRenderTask = internalRenderTask;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getOperatorList\", {\n        value: () => this.#internalRenderTask.operatorList,\n      });\n    }\n  }\n\n  /**\n   * Promise for rendering task completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this.#internalRenderTask.capability.promise;\n  }\n\n  /**\n   * Cancels the rendering task. If the task is currently rendering it will\n   * not be cancelled until graphics pauses with a timeout. The promise that\n   * this object extends will be rejected when cancelled.\n   *\n   * @param {number} [extraDelay]\n   */\n  cancel(extraDelay = 0) {\n    this.#internalRenderTask.cancel(/* error = */ null, extraDelay);\n  }\n\n  /**\n   * Whether form fields are rendered separately from the main operatorList.\n   * @type {boolean}\n   */\n  get separateAnnots() {\n    const { separateAnnots } = this.#internalRenderTask.operatorList;\n    if (!separateAnnots) {\n      return false;\n    }\n    const { annotationCanvasMap } = this.#internalRenderTask;\n    return (\n      separateAnnots.form ||\n      (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n    );\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n  #rAF = null;\n\n  static #canvasInUse = new WeakSet();\n\n  constructor({\n    callback,\n    params,\n    objs,\n    commonObjs,\n    annotationCanvasMap,\n    operatorList,\n    pageIndex,\n    canvasFactory,\n    filterFactory,\n    useRequestAnimationFrame = false,\n    pdfBug = false,\n    pageColors = null,\n    enableHWA = false,\n    operationsFilter = null,\n  }) {\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this._pageIndex = pageIndex;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this._pdfBug = pdfBug;\n    this.pageColors = pageColors;\n\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame =\n      useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = Promise.withResolvers();\n    this.task = new RenderTask(this);\n    // caching this-bound methods\n    this._cancelBound = this.cancel.bind(this);\n    this._continueBound = this._continue.bind(this);\n    this._scheduleNextBound = this._scheduleNext.bind(this);\n    this._nextBound = this._next.bind(this);\n    this._canvas = params.canvas;\n    this._canvasContext = params.canvas ? null : params.canvasContext;\n    this._enableHWA = enableHWA;\n    this._dependencyTracker = params.dependencyTracker;\n    this._operationsFilter = operationsFilter;\n  }\n\n  get completed() {\n    return this.capability.promise.catch(function () {\n      // Ignoring errors, since we only want to know when rendering is\n      // no longer pending.\n    });\n  }\n\n  initializeGraphics({ transparency = false, optionalContentConfig }) {\n    if (this.cancelled) {\n      return;\n    }\n    if (this._canvas) {\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n        throw new Error(\n          \"Cannot use the same canvas during multiple render() operations. \" +\n            \"Use different canvas or ensure previous operations were \" +\n            \"cancelled or completed.\"\n        );\n      }\n      InternalRenderTask.#canvasInUse.add(this._canvas);\n    }\n\n    if (this._pdfBug && globalThis.StepperManager?.enabled) {\n      this.stepper = globalThis.StepperManager.create(this._pageIndex);\n      this.stepper.init(this.operatorList);\n      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n    }\n    const { viewport, transform, background, dependencyTracker } = this.params;\n\n    // When printing in Firefox, we get a specific context in mozPrintCallback\n    // which cannot be created from the canvas itself.\n    const canvasContext =\n      this._canvasContext ||\n      this._canvas.getContext(\"2d\", {\n        alpha: false,\n        willReadFrequently: !this._enableHWA,\n      });\n\n    this.gfx = new CanvasGraphics(\n      canvasContext,\n      this.commonObjs,\n      this.objs,\n      this.canvasFactory,\n      this.filterFactory,\n      { optionalContentConfig },\n      this.annotationCanvasMap,\n      this.pageColors,\n      dependencyTracker\n    );\n    this.gfx.beginDrawing({\n      transform,\n      viewport,\n      transparency,\n      background,\n    });\n    this.operatorListIdx = 0;\n    this.graphicsReady = true;\n    this.graphicsReadyCallback?.();\n  }\n\n  cancel(error = null, extraDelay = 0) {\n    this.running = false;\n    this.cancelled = true;\n    this.gfx?.endDrawing();\n    if (this.#rAF) {\n      window.cancelAnimationFrame(this.#rAF);\n      this.#rAF = null;\n    }\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n    error ||= new RenderingCancelledException(\n      `Rendering cancelled, page ${this._pageIndex + 1}`,\n      extraDelay\n    );\n    this.callback(error);\n\n    this.task.onError?.(error);\n  }\n\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      this.graphicsReadyCallback ||= this._continueBound;\n      return;\n    }\n    this.gfx.dependencyTracker?.growOperationsCount(\n      this.operatorList.fnArray.length\n    );\n    this.stepper?.updateOperatorList(this.operatorList);\n\n    if (this.running) {\n      return;\n    }\n    this._continue();\n  }\n\n  _continue() {\n    this.running = true;\n    if (this.cancelled) {\n      return;\n    }\n    if (this.task.onContinue) {\n      this.task.onContinue(this._scheduleNextBound);\n    } else {\n      this._scheduleNext();\n    }\n  }\n\n  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      this.#rAF = window.requestAnimationFrame(() => {\n        this.#rAF = null;\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n    this.operatorListIdx = this.gfx.executeOperatorList(\n      this.operatorList,\n      this.operatorListIdx,\n      this._continueBound,\n      this.stepper,\n      this._operationsFilter\n    );\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\n      this.running = false;\n      if (this.operatorList.lastChunk) {\n        this.gfx.endDrawing();\n        InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n        this.callback();\n      }\n    }\n  }\n}\n\n/** @type {string} */\nconst version =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n  build,\n  getDocument,\n  PDFDataRangeTransport,\n  PDFDocumentLoadingTask,\n  PDFDocumentProxy,\n  PDFPageProxy,\n  PDFWorker,\n  RenderTask,\n  version,\n};\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorParamsType, shadow } from \"../../shared/util.js\";\nimport { KeyboardManager } from \"./tools.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\n/**\n * ColorPicker class provides a color picker for the annotation editor.\n * It displays a dropdown with some predefined colors and allows the user\n * to select a color for the annotation.\n */\nclass ColorPicker {\n  #button = null;\n\n  #buttonSwatch = null;\n\n  #defaultColor;\n\n  #dropdown = null;\n\n  #dropdownWasFromKeyboard = false;\n\n  #isMainColorPicker = false;\n\n  #editor = null;\n\n  #eventBus;\n\n  #openDropdownAC = null;\n\n  #uiManager = null;\n\n  static #l10nColor = null;\n\n  static get _keyboardManager() {\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          [\"Escape\", \"mac+Escape\"],\n          ColorPicker.prototype._hideDropdownFromKeyboard,\n        ],\n        [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard],\n        [\n          [\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"],\n          ColorPicker.prototype._moveToNext,\n        ],\n        [\n          [\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"],\n          ColorPicker.prototype._moveToPrevious,\n        ],\n        [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning],\n        [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd],\n      ])\n    );\n  }\n\n  constructor({ editor = null, uiManager = null }) {\n    if (editor) {\n      this.#isMainColorPicker = false;\n      this.#editor = editor;\n    } else {\n      this.#isMainColorPicker = true;\n    }\n    this.#uiManager = editor?._uiManager || uiManager;\n    this.#eventBus = this.#uiManager._eventBus;\n    this.#defaultColor =\n      editor?.color?.toUpperCase() ||\n      this.#uiManager?.highlightColors.values().next().value ||\n      \"#FFFF98\";\n\n    ColorPicker.#l10nColor ||= Object.freeze({\n      blue: \"pdfjs-editor-colorpicker-blue\",\n      green: \"pdfjs-editor-colorpicker-green\",\n      pink: \"pdfjs-editor-colorpicker-pink\",\n      red: \"pdfjs-editor-colorpicker-red\",\n      yellow: \"pdfjs-editor-colorpicker-yellow\",\n    });\n  }\n\n  renderButton() {\n    const button = (this.#button = document.createElement(\"button\"));\n    button.className = \"colorPicker\";\n    button.tabIndex = \"0\";\n    button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n    button.ariaHasPopup = \"true\";\n    if (this.#editor) {\n      button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n    }\n    const signal = this.#uiManager._signal;\n    button.addEventListener(\"click\", this.#openDropdown.bind(this), { signal });\n    button.addEventListener(\"keydown\", this.#keyDown.bind(this), { signal });\n    const swatch = (this.#buttonSwatch = document.createElement(\"span\"));\n    swatch.className = \"swatch\";\n    swatch.ariaHidden = \"true\";\n    swatch.style.backgroundColor = this.#defaultColor;\n    button.append(swatch);\n    return button;\n  }\n\n  renderMainDropdown() {\n    const dropdown = (this.#dropdown = this.#getDropdownRoot());\n    dropdown.ariaOrientation = \"horizontal\";\n    dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n\n    return dropdown;\n  }\n\n  #getDropdownRoot() {\n    const div = document.createElement(\"div\");\n    const signal = this.#uiManager._signal;\n    div.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    div.className = \"dropdown\";\n    div.role = \"listbox\";\n    div.ariaMultiSelectable = \"false\";\n    div.ariaOrientation = \"vertical\";\n    div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n    if (this.#editor) {\n      div.id = `${this.#editor.id}_colorpicker_dropdown`;\n    }\n    for (const [name, color] of this.#uiManager.highlightColors) {\n      const button = document.createElement(\"button\");\n      button.tabIndex = \"0\";\n      button.role = \"option\";\n      button.setAttribute(\"data-color\", color);\n      button.title = name;\n      button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n      const swatch = document.createElement(\"span\");\n      button.append(swatch);\n      swatch.className = \"swatch\";\n      swatch.style.backgroundColor = color;\n      button.ariaSelected = color === this.#defaultColor;\n      button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n        signal,\n      });\n      div.append(button);\n    }\n\n    div.addEventListener(\"keydown\", this.#keyDown.bind(this), { signal });\n\n    return div;\n  }\n\n  #colorSelect(color, event) {\n    event.stopPropagation();\n    this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n      source: this,\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n      value: color,\n    });\n    this.updateColor(color);\n  }\n\n  _colorSelectFromKeyboard(event) {\n    if (event.target === this.#button) {\n      this.#openDropdown(event);\n      return;\n    }\n    const color = event.target.getAttribute(\"data-color\");\n    if (!color) {\n      return;\n    }\n    this.#colorSelect(color, event);\n  }\n\n  _moveToNext(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    if (event.target === this.#button) {\n      this.#dropdown.firstElementChild?.focus();\n      return;\n    }\n    event.target.nextSibling?.focus();\n  }\n\n  _moveToPrevious(event) {\n    if (\n      event.target === this.#dropdown?.firstElementChild ||\n      event.target === this.#button\n    ) {\n      if (this.#isDropdownVisible) {\n        this._hideDropdownFromKeyboard();\n      }\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n    }\n    event.target.previousSibling?.focus();\n  }\n\n  _moveToBeginning(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.firstElementChild?.focus();\n  }\n\n  _moveToEnd(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.lastElementChild?.focus();\n  }\n\n  #keyDown(event) {\n    ColorPicker._keyboardManager.exec(this, event);\n  }\n\n  #openDropdown(event) {\n    if (this.#isDropdownVisible) {\n      this.hideDropdown();\n      return;\n    }\n    this.#dropdownWasFromKeyboard = event.detail === 0;\n\n    if (!this.#openDropdownAC) {\n      this.#openDropdownAC = new AbortController();\n\n      window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n        signal: this.#uiManager.combinedSignal(this.#openDropdownAC),\n      });\n    }\n    this.#button.ariaExpanded = \"true\";\n    if (this.#dropdown) {\n      this.#dropdown.classList.remove(\"hidden\");\n      return;\n    }\n    const root = (this.#dropdown = this.#getDropdownRoot());\n    this.#button.append(root);\n  }\n\n  #pointerDown(event) {\n    if (this.#dropdown?.contains(event.target)) {\n      return;\n    }\n    this.hideDropdown();\n  }\n\n  hideDropdown() {\n    this.#dropdown?.classList.add(\"hidden\");\n    this.#button.ariaExpanded = \"false\";\n    this.#openDropdownAC?.abort();\n    this.#openDropdownAC = null;\n  }\n\n  get #isDropdownVisible() {\n    return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n  }\n\n  _hideDropdownFromKeyboard() {\n    if (this.#isMainColorPicker) {\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      // The user pressed Escape with no dropdown visible, so we must\n      // unselect it.\n      this.#editor?.unselect();\n      return;\n    }\n    this.hideDropdown();\n    this.#button.focus({\n      preventScroll: true,\n      focusVisible: this.#dropdownWasFromKeyboard,\n    });\n  }\n\n  updateColor(color) {\n    if (this.#buttonSwatch) {\n      this.#buttonSwatch.style.backgroundColor = color;\n    }\n    if (!this.#dropdown) {\n      return;\n    }\n\n    const i = this.#uiManager.highlightColors.values();\n    for (const child of this.#dropdown.children) {\n      child.ariaSelected = i.next().value === color.toUpperCase();\n    }\n  }\n\n  destroy() {\n    this.#button?.remove();\n    this.#button = null;\n    this.#buttonSwatch = null;\n    this.#dropdown?.remove();\n    this.#dropdown = null;\n  }\n}\n\n/**\n * BasicColorPicker class provides a simple color picker.\n * It displays an input element (with type=\"color\") that allows the user\n * to select a color for the annotation.\n */\nclass BasicColorPicker {\n  #input = null;\n\n  #editor = null;\n\n  #uiManager = null;\n\n  static #l10nColor = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n    this.#uiManager = editor._uiManager;\n\n    BasicColorPicker.#l10nColor ||= Object.freeze({\n      freetext: \"pdfjs-editor-color-picker-free-text-input\",\n      ink: \"pdfjs-editor-color-picker-ink-input\",\n    });\n  }\n\n  renderButton() {\n    if (this.#input) {\n      return this.#input;\n    }\n    const { editorType, colorType, color } = this.#editor;\n    const input = (this.#input = document.createElement(\"input\"));\n    input.type = \"color\";\n    input.value = color || \"#000000\";\n    input.className = \"basicColorPicker\";\n    input.tabIndex = 0;\n    input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n    input.addEventListener(\n      \"input\",\n      () => {\n        this.#uiManager.updateParams(colorType, input.value);\n      },\n      { signal: this.#uiManager._signal }\n    );\n    return input;\n  }\n\n  update(value) {\n    if (!this.#input) {\n      return;\n    }\n    this.#input.value = value;\n  }\n\n  destroy() {\n    this.#input?.remove();\n    this.#input = null;\n  }\n\n  hideDropdown() {}\n}\n\nexport { BasicColorPicker, ColorPicker };\n", "/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n *              `../scripting_api/` folders, hence be EXTREMELY careful about\n *              introducing any dependencies here since that can lead to an\n *              unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n    .toString(16)\n    .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n  return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) {\n    return [\"CMYK\", 0, 0, 0, 1 - g];\n  }\n\n  static G_RGB([g]) {\n    return [\"RGB\", g, g, g];\n  }\n\n  static G_rgb([g]) {\n    g = scaleAndClamp(g);\n    return [g, g, g];\n  }\n\n  static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, g, b]) {\n    return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_rgb(color) {\n    return color.map(scaleAndClamp);\n  }\n\n  static RGB_HTML(color) {\n    return `#${color.map(makeColorComp).join(\"\")}`;\n  }\n\n  static T_HTML() {\n    return \"#00000000\";\n  }\n\n  static T_rgb() {\n    return [null];\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return [\n      \"RGB\",\n      1 - Math.min(1, c + k),\n      1 - Math.min(1, m + k),\n      1 - Math.min(1, y + k),\n    ];\n  }\n\n  static CMYK_rgb([c, y, m, k]) {\n    return [\n      scaleAndClamp(1 - Math.min(1, c + k)),\n      scaleAndClamp(1 - Math.min(1, m + k)),\n      scaleAndClamp(1 - Math.min(1, y + k)),\n    ];\n  }\n\n  static CMYK_HTML(components) {\n    const rgb = this.CMYK_RGB(components).slice(1);\n    return this.RGB_HTML(rgb);\n  }\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    const k = Math.min(c, m, y);\n    return [\"CMYK\", c, m, y, k];\n  }\n}\n\nconst DateFormats = [\n  \"m/d\",\n  \"m/d/yy\",\n  \"mm/dd/yy\",\n  \"mm/yy\",\n  \"d-mmm\",\n  \"d-mmm-yy\",\n  \"dd-mmm-yy\",\n  \"yy-mm-dd\",\n  \"mmm-yy\",\n  \"mmmm-yy\",\n  \"mmm d, yyyy\",\n  \"mmmm d, yyyy\",\n  \"m/d/yy h:MM tt\",\n  \"m/d/yy HH:MM\",\n];\nconst TimeFormats = [\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"];\n\nexport { ColorConverters, DateFormats, TimeFormats };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SVG_NS } from \"./display_utils.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nclass BaseSVGFactory {\n  constructor() {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseSVGFactory\n    ) {\n      unreachable(\"Cannot initialize BaseSVGFactory.\");\n    }\n  }\n\n  create(width, height, skipDimensions = false) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid SVG dimensions\");\n    }\n    const svg = this._createSVG(\"svg:svg\");\n    svg.setAttribute(\"version\", \"1.1\");\n\n    if (!skipDimensions) {\n      svg.setAttribute(\"width\", `${width}px`);\n      svg.setAttribute(\"height\", `${height}px`);\n    }\n\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n    return svg;\n  }\n\n  createElement(type) {\n    if (typeof type !== \"string\") {\n      throw new Error(\"Invalid SVG element type\");\n    }\n    return this._createSVG(type);\n  }\n\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    unreachable(\"Abstract method `_createSVG` called.\");\n  }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n}\n\nexport { BaseSVGFactory, DOMSVGFactory };\n", "/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/editor/tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/struct_tree_layer_builder.js\").StructTreeLayerBuilder} StructTreeLayerBuilder */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/comment_manager.js\").CommentManager} CommentManager */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationPrefix,\n  AnnotationType,\n  FeatureTest,\n  LINE_FACTOR,\n  shadow,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  PDFDateString,\n  renderRichText,\n  setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { DOMSVGFactory } from \"./svg_factory.js\";\n\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n  /**\n   * @param {AnnotationElementParameters} parameters\n   * @returns {AnnotationElement}\n   */\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n\n      case AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotationElement(parameters);\n          case \"Btn\":\n            if (parameters.data.radioButton) {\n              return new RadioButtonWidgetAnnotationElement(parameters);\n            } else if (parameters.data.checkBox) {\n              return new CheckboxWidgetAnnotationElement(parameters);\n            }\n            return new PushButtonWidgetAnnotationElement(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotationElement(parameters);\n          case \"Sig\":\n            return new SignatureWidgetAnnotationElement(parameters);\n        }\n        return new WidgetAnnotationElement(parameters);\n\n      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n\n      case AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n\n      case AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\n\nclass AnnotationElement {\n  #updates = null;\n\n  #hasBorder = false;\n\n  #popupElement = null;\n\n  constructor(\n    parameters,\n    {\n      isRenderable = false,\n      ignoreBorder = false,\n      createQuadrilaterals = false,\n    } = {}\n  ) {\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderForms = parameters.renderForms;\n    this.svgFactory = parameters.svgFactory;\n    this.annotationStorage = parameters.annotationStorage;\n    this.enableComment = parameters.enableComment;\n    this.enableScripting = parameters.enableScripting;\n    this.hasJSActions = parameters.hasJSActions;\n    this._fieldObjects = parameters.fieldObjects;\n    this.parent = parameters.parent;\n    this.hasOwnCommentButton = false;\n\n    if (isRenderable) {\n      this.contentElement = this.container =\n        this._createContainer(ignoreBorder);\n    }\n    if (createQuadrilaterals) {\n      this._createQuadrilaterals();\n    }\n  }\n\n  static _hasPopupData({ contentsObj, richText }) {\n    return !!(contentsObj?.str || richText?.str);\n  }\n\n  get _isEditable() {\n    return this.data.isEditable;\n  }\n\n  get hasPopupData() {\n    return (\n      AnnotationElement._hasPopupData(this.data) ||\n      (this.enableComment && !!this.commentText)\n    );\n  }\n\n  get commentData() {\n    const { data } = this;\n    const editor = this.annotationStorage?.getEditor(data.id);\n    if (editor) {\n      return editor.getData();\n    }\n    return data;\n  }\n\n  get hasCommentButton() {\n    return this.enableComment && this.hasPopupElement;\n  }\n\n  get commentButtonPosition() {\n    const editor = this.annotationStorage?.getEditor(this.data.id);\n    if (editor) {\n      return editor.commentButtonPositionInPage;\n    }\n    const { quadPoints, inkLists, rect } = this.data;\n    let maxX = -Infinity;\n    let maxY = -Infinity;\n    if (quadPoints?.length >= 8) {\n      for (let i = 0; i < quadPoints.length; i += 8) {\n        if (quadPoints[i + 1] > maxY) {\n          maxY = quadPoints[i + 1];\n          maxX = quadPoints[i + 2];\n        } else if (quadPoints[i + 1] === maxY) {\n          maxX = Math.max(maxX, quadPoints[i + 2]);\n        }\n      }\n      return [maxX, maxY];\n    }\n    if (inkLists?.length >= 1) {\n      for (const inkList of inkLists) {\n        for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n          if (inkList[i + 1] > maxY) {\n            maxY = inkList[i + 1];\n            maxX = inkList[i];\n          } else if (inkList[i + 1] === maxY) {\n            maxX = Math.max(maxX, inkList[i]);\n          }\n        }\n      }\n      if (maxX !== Infinity) {\n        return [maxX, maxY];\n      }\n    }\n    if (rect) {\n      return [rect[2], rect[3]];\n    }\n    return null;\n  }\n\n  _normalizePoint(point) {\n    const {\n      page: { view },\n      viewport: {\n        rawDims: { pageWidth, pageHeight, pageX, pageY },\n      },\n    } = this.parent;\n    point[1] = view[3] - point[1] + view[1];\n    point[0] = (100 * (point[0] - pageX)) / pageWidth;\n    point[1] = (100 * (point[1] - pageY)) / pageHeight;\n    return point;\n  }\n\n  get commentText() {\n    const { data } = this;\n    return (\n      this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)\n        ?.popup?.contents ||\n      data.contentsObj?.str ||\n      \"\"\n    );\n  }\n\n  set commentText(text) {\n    const { data } = this;\n    const popup = { deleted: !text, contents: text || \"\" };\n    if (!this.annotationStorage.updateEditor(data.id, { popup })) {\n      this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n        id: data.id,\n        annotationType: data.annotationType,\n        pageIndex: this.parent.page._pageIndex,\n        popup,\n        popupRef: data.popupRef,\n        modificationDate: new Date(),\n      });\n    }\n    if (!text) {\n      this.removePopup();\n    }\n  }\n\n  removePopup() {\n    (this.#popupElement?.popup || this.popup)?.remove();\n    this.#popupElement = this.popup = null;\n  }\n\n  updateEdited(params) {\n    if (!this.container) {\n      return;\n    }\n\n    if (params.rect) {\n      this.#updates ||= {\n        rect: this.data.rect.slice(0),\n      };\n    }\n\n    const { rect, popup: newPopup } = params;\n\n    if (rect) {\n      this.#setRectEdited(rect);\n    }\n\n    let popup = this.#popupElement?.popup || this.popup;\n    if (!popup && newPopup?.text) {\n      this._createPopup(newPopup);\n      popup = this.#popupElement.popup;\n    }\n    if (!popup) {\n      return;\n    }\n    popup.updateEdited(params);\n    if (newPopup?.deleted) {\n      popup.remove();\n      this.#popupElement = null;\n      this.popup = null;\n    }\n  }\n\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    this.#setRectEdited(this.#updates.rect);\n    this.#popupElement?.popup.resetEdited();\n    this.#updates = null;\n  }\n\n  #setRectEdited(rect) {\n    const {\n      container: { style },\n      data: { rect: currentRect, rotation },\n      parent: {\n        viewport: {\n          rawDims: { pageWidth, pageHeight, pageX, pageY },\n        },\n      },\n    } = this;\n    currentRect?.splice(0, 4, ...rect);\n    style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n    style.top = `${(100 * (pageHeight - rect[3] + pageY)) / pageHeight}%`;\n    if (rotation === 0) {\n      style.width = `${(100 * /* width = */ (rect[2] - rect[0])) / pageWidth}%`;\n      style.height = `${(100 * /* height = */ (rect[3] - rect[1])) / pageHeight}%`;\n    } else {\n      this.setRotation(rotation);\n    }\n  }\n\n  /**\n   * Create an empty container for the annotation's HTML element.\n   *\n   * @private\n   * @param {boolean} ignoreBorder\n   * @memberof AnnotationElement\n   * @returns {HTMLElement} A section element.\n   */\n  _createContainer(ignoreBorder) {\n    const {\n      data,\n      parent: { page, viewport },\n    } = this;\n\n    const container = document.createElement(\"section\");\n    container.setAttribute(\"data-annotation-id\", data.id);\n    if (\n      !(this instanceof WidgetAnnotationElement) &&\n      !(this instanceof LinkAnnotationElement)\n    ) {\n      container.tabIndex = 0;\n    }\n    const { style } = container;\n\n    // The accessibility manager will move the annotation in the DOM in\n    // order to match the visual ordering.\n    // But if an annotation is above an other one, then we must draw it\n    // after the other one whatever the order is in the DOM, hence the\n    // use of the z-index.\n    style.zIndex = this.parent.zIndex;\n    // Keep zIndex + 1 for stuff we want to add on top of this annotation.\n    this.parent.zIndex += 2;\n\n    if (data.alternativeText) {\n      container.title = data.alternativeText;\n    }\n\n    if (data.noRotate) {\n      container.classList.add(\"norotate\");\n    }\n\n    if (!data.rect || this instanceof PopupAnnotationElement) {\n      const { rotation } = data;\n      if (!data.hasOwnCanvas && rotation !== 0) {\n        this.setRotation(rotation, container);\n      }\n      return container;\n    }\n    const { width, height } = this;\n\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      style.borderWidth = `${data.borderStyle.width}px`;\n\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\n      if (horizontalRadius > 0 || verticalRadius > 0) {\n        const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n        style.borderRadius = radius;\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n        const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n        style.borderRadius = radius;\n      }\n\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          style.borderStyle = \"solid\";\n          break;\n\n        case AnnotationBorderStyleType.DASHED:\n          style.borderStyle = \"dashed\";\n          break;\n\n        case AnnotationBorderStyleType.BEVELED:\n          warn(\"Unimplemented border style: beveled\");\n          break;\n\n        case AnnotationBorderStyleType.INSET:\n          warn(\"Unimplemented border style: inset\");\n          break;\n\n        case AnnotationBorderStyleType.UNDERLINE:\n          style.borderBottomStyle = \"solid\";\n          break;\n\n        default:\n          break;\n      }\n\n      const borderColor = data.borderColor || null;\n      if (borderColor) {\n        this.#hasBorder = true;\n        style.borderColor = Util.makeHexColor(\n          borderColor[0] | 0,\n          borderColor[1] | 0,\n          borderColor[2] | 0\n        );\n      } else {\n        // Transparent (invisible) border, so do not draw it at all.\n        style.borderWidth = 0;\n      }\n    }\n\n    // Do *not* modify `data.rect`, since that will corrupt the annotation\n    // position on subsequent calls to `_createContainer` (see issue 6804).\n    const rect = Util.normalizeRect([\n      data.rect[0],\n      page.view[3] - data.rect[1] + page.view[1],\n      data.rect[2],\n      page.view[3] - data.rect[3] + page.view[1],\n    ]);\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n    style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n    style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n    const { rotation } = data;\n    if (data.hasOwnCanvas || rotation === 0) {\n      style.width = `${(100 * width) / pageWidth}%`;\n      style.height = `${(100 * height) / pageHeight}%`;\n    } else {\n      this.setRotation(rotation, container);\n    }\n\n    return container;\n  }\n\n  setRotation(angle, container = this.container) {\n    if (!this.data.rect) {\n      return;\n    }\n    const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n    let { width, height } = this;\n\n    if (angle % 180 !== 0) {\n      [width, height] = [height, width];\n    }\n    container.style.width = `${(100 * width) / pageWidth}%`;\n    container.style.height = `${(100 * height) / pageHeight}%`;\n\n    container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n  }\n\n  get _commonActions() {\n    const setColor = (jsName, styleName, event) => {\n      const color = event.detail[jsName];\n      const colorType = color[0];\n      const colorArray = color.slice(1);\n      event.target.style[styleName] =\n        ColorConverters[`${colorType}_HTML`](colorArray);\n      this.annotationStorage.setValue(this.data.id, {\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n      });\n    };\n\n    return shadow(this, \"_commonActions\", {\n      display: event => {\n        const { display } = event.detail;\n        // See scripting/constants.js for the values of `Display`.\n        // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\n        const hidden = display % 2 === 1;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noView: hidden,\n          noPrint: display === 1 || display === 2,\n        });\n      },\n      print: event => {\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: !event.detail.print,\n        });\n      },\n      hidden: event => {\n        const { hidden } = event.detail;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: hidden,\n          noView: hidden,\n        });\n      },\n      focus: event => {\n        setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n      },\n      userName: event => {\n        // tooltip\n        event.target.title = event.detail.userName;\n      },\n      readonly: event => {\n        event.target.disabled = event.detail.readonly;\n      },\n      required: event => {\n        this._setRequired(event.target, event.detail.required);\n      },\n      bgColor: event => {\n        setColor(\"bgColor\", \"backgroundColor\", event);\n      },\n      fillColor: event => {\n        setColor(\"fillColor\", \"backgroundColor\", event);\n      },\n      fgColor: event => {\n        setColor(\"fgColor\", \"color\", event);\n      },\n      textColor: event => {\n        setColor(\"textColor\", \"color\", event);\n      },\n      borderColor: event => {\n        setColor(\"borderColor\", \"borderColor\", event);\n      },\n      strokeColor: event => {\n        setColor(\"strokeColor\", \"borderColor\", event);\n      },\n      rotation: event => {\n        const angle = event.detail.rotation;\n        this.setRotation(angle);\n        this.annotationStorage.setValue(this.data.id, {\n          rotation: angle,\n        });\n      },\n    });\n  }\n\n  _dispatchEventFromSandbox(actions, jsEvent) {\n    const commonActions = this._commonActions;\n    for (const name of Object.keys(jsEvent.detail)) {\n      const action = actions[name] || commonActions[name];\n      action?.(jsEvent);\n    }\n  }\n\n  _setDefaultPropertiesFromJS(element) {\n    if (!this.enableScripting) {\n      return;\n    }\n\n    // Some properties may have been updated thanks to JS.\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\n    if (!storedData) {\n      return;\n    }\n\n    const commonActions = this._commonActions;\n    for (const [actionName, detail] of Object.entries(storedData)) {\n      const action = commonActions[actionName];\n      if (action) {\n        const eventProxy = {\n          detail: {\n            [actionName]: detail,\n          },\n          target: element,\n        };\n        action(eventProxy);\n        // The action has been consumed: no need to keep it.\n        delete storedData[actionName];\n      }\n    }\n  }\n\n  /**\n   * Create quadrilaterals from the annotation's quadpoints.\n   *\n   * @private\n   * @memberof AnnotationElement\n   */\n  _createQuadrilaterals() {\n    if (!this.container) {\n      return;\n    }\n    const { quadPoints } = this.data;\n    if (!quadPoints) {\n      return;\n    }\n\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x =>\n      Math.fround(x)\n    );\n\n    if (quadPoints.length === 8) {\n      const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n      if (\n        rectTrX === trX &&\n        rectTrY === trY &&\n        rectBlX === blX &&\n        rectBlY === blY\n      ) {\n        // The quadpoints cover the whole annotation rectangle, so no need to\n        // create a quadrilateral.\n        return;\n      }\n    }\n\n    const { style } = this.container;\n    let svgBuffer;\n    if (this.#hasBorder) {\n      const { borderColor, borderWidth } = style;\n      style.borderWidth = 0;\n      svgBuffer = [\n        \"url('data:image/svg+xml;utf8,\",\n        `<svg xmlns=\"http://www.w3.org/2000/svg\"`,\n        ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`,\n        `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`,\n      ];\n      this.container.classList.add(\"hasBorder\");\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      this.container.classList.add(\"hasClipPath\");\n    }\n\n    const width = rectTrX - rectBlX;\n    const height = rectTrY - rectBlY;\n\n    const { svgFactory } = this;\n    const svg = svgFactory.createElement(\"svg\");\n    svg.classList.add(\"quadrilateralsContainer\");\n    svg.setAttribute(\"width\", 0);\n    svg.setAttribute(\"height\", 0);\n    svg.role = \"none\";\n    const defs = svgFactory.createElement(\"defs\");\n    svg.append(defs);\n    const clipPath = svgFactory.createElement(\"clipPath\");\n    const id = `clippath_${this.data.id}`;\n    clipPath.setAttribute(\"id\", id);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    defs.append(clipPath);\n\n    for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n      const trX = quadPoints[i];\n      const trY = quadPoints[i + 1];\n      const blX = quadPoints[i + 2];\n      const blY = quadPoints[i + 3];\n      const rect = svgFactory.createElement(\"rect\");\n      const x = (blX - rectBlX) / width;\n      const y = (rectTrY - trY) / height;\n      const rectWidth = (trX - blX) / width;\n      const rectHeight = (trY - blY) / height;\n      rect.setAttribute(\"x\", x);\n      rect.setAttribute(\"y\", y);\n      rect.setAttribute(\"width\", rectWidth);\n      rect.setAttribute(\"height\", rectHeight);\n      clipPath.append(rect);\n      svgBuffer?.push(\n        `<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`\n      );\n    }\n\n    if (this.#hasBorder) {\n      svgBuffer.push(`</g></svg>')`);\n      style.backgroundImage = svgBuffer.join(\"\");\n    }\n\n    this.container.append(svg);\n    this.container.style.clipPath = `url(#${id})`;\n  }\n\n  /**\n   * Create a popup for the annotation's HTML element. This is used for\n   * annotations that do not have a Popup entry in the dictionary, but\n   * are of a type that works with popups (such as Highlight annotations).\n   *\n   * @param {Object} [popupData] - The data for the popup, if any.\n   *\n   * @private\n   * @memberof AnnotationElement\n   */\n  _createPopup(popupData = null) {\n    const { data } = this;\n\n    let contentsObj, modificationDate;\n    if (popupData) {\n      contentsObj = {\n        str: popupData.text,\n      };\n      modificationDate = popupData.date;\n    } else {\n      contentsObj = data.contentsObj;\n      modificationDate = data.modificationDate;\n    }\n    this.#popupElement = new PopupAnnotationElement({\n      data: {\n        color: data.color,\n        titleObj: data.titleObj,\n        modificationDate,\n        contentsObj,\n        richText: data.richText,\n        parentRect: data.rect,\n        borderStyle: 0,\n        id: `popup_${data.id}`,\n        rotation: data.rotation,\n        noRotate: true,\n      },\n      linkService: this.linkService,\n      parent: this.parent,\n      elements: [this],\n    });\n  }\n\n  get hasPopupElement() {\n    return !!(this.#popupElement || this.popup || this.data.popupRef);\n  }\n\n  get extraPopupElement() {\n    return this.#popupElement;\n  }\n\n  /**\n   * Render the annotation's HTML element(s).\n   *\n   * @public\n   * @memberof AnnotationElement\n   */\n  render() {\n    unreachable(\"Abstract method `AnnotationElement.render` called\");\n  }\n\n  /**\n   * @private\n   * @returns {Array}\n   */\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n      if (fieldObj) {\n        for (const { page, id, exportValues } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n          if (id === skipId) {\n            continue;\n          }\n          const exportValue =\n            typeof exportValues === \"string\" ? exportValues : null;\n\n          const domElement = document.querySelector(\n            `[data-element-id=\"${id}\"]`\n          );\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            warn(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n          fields.push({ id, exportValue, domElement });\n        }\n      }\n      return fields;\n    }\n    // Fallback to a regular DOM lookup, to ensure that the standalone\n    // viewer components won't break.\n    for (const domElement of document.getElementsByName(name)) {\n      const { exportValue } = domElement;\n      const id = domElement.getAttribute(\"data-element-id\");\n      if (id === skipId) {\n        continue;\n      }\n      if (!GetElementsByNameSet.has(domElement)) {\n        continue;\n      }\n      fields.push({ id, exportValue, domElement });\n    }\n    return fields;\n  }\n\n  show() {\n    if (this.container) {\n      this.container.hidden = false;\n    }\n    this.popup?.maybeShow();\n  }\n\n  hide() {\n    if (this.container) {\n      this.container.hidden = true;\n    }\n    this.popup?.forceHide();\n  }\n\n  /**\n   * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n   *\n   * @public\n   * @memberof AnnotationElement\n   * @returns {Array<HTMLElement>|HTMLElement} An array of elements or an\n   *          element.\n   */\n  getElementsToTriggerPopup() {\n    return this.container;\n  }\n\n  addHighlightArea() {\n    const triggers = this.getElementsToTriggerPopup();\n    if (Array.isArray(triggers)) {\n      for (const element of triggers) {\n        element.classList.add(\"highlightArea\");\n      }\n    } else {\n      triggers.classList.add(\"highlightArea\");\n    }\n  }\n\n  _editOnDoubleClick() {\n    if (!this._isEditable) {\n      return;\n    }\n    const {\n      annotationEditorType: mode,\n      data: { id: editId },\n    } = this;\n    this.container.addEventListener(\"dblclick\", () => {\n      this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n        source: this,\n        mode,\n        editId,\n        mustEnterInEditMode: true,\n      });\n    });\n  }\n\n  get width() {\n    return this.data.rect[2] - this.data.rect[0];\n  }\n\n  get height() {\n    return this.data.rect[3] - this.data.rect[1];\n  }\n}\n\nclass EditorAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n    this.editor = parameters.editor;\n  }\n\n  render() {\n    this.container.className = \"editorAnnotation\";\n    return this.container;\n  }\n\n  createOrUpdatePopup() {\n    const { editor } = this;\n    if (!editor.hasComment) {\n      return;\n    }\n    this._createPopup(editor.comment);\n  }\n\n  get hasCommentButton() {\n    return this.enableComment && this.editor.hasComment;\n  }\n\n  get commentButtonPosition() {\n    return this.editor.commentButtonPositionInPage;\n  }\n\n  get commentText() {\n    return this.editor.comment.text;\n  }\n\n  set commentText(text) {\n    this.editor.comment = text;\n    if (!text) {\n      this.removePopup();\n    }\n  }\n\n  get commentData() {\n    return this.editor.getData();\n  }\n\n  remove() {\n    this.parent.removeAnnotation(this.data.id);\n    this.container.remove();\n    this.container = null;\n    this.removePopup();\n  }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n  constructor(parameters, options = null) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: !!options?.ignoreBorder,\n      createQuadrilaterals: true,\n    });\n    this.isTooltipOnly = parameters.data.isTooltipOnly;\n  }\n\n  render() {\n    const { data, linkService } = this;\n    const link = document.createElement(\"a\");\n    link.setAttribute(\"data-element-id\", data.id);\n    let isBound = false;\n\n    if (data.url) {\n      linkService.addLinkAttributes(link, data.url, data.newWindow);\n      isBound = true;\n    } else if (data.action) {\n      this._bindNamedAction(link, data.action, data.overlaidText);\n      isBound = true;\n    } else if (data.attachment) {\n      this.#bindAttachment(\n        link,\n        data.attachment,\n        data.overlaidText,\n        data.attachmentDest\n      );\n      isBound = true;\n    } else if (data.setOCGState) {\n      this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n      isBound = true;\n    } else if (data.dest) {\n      this._bindLink(link, data.dest, data.overlaidText);\n      isBound = true;\n    } else {\n      if (\n        data.actions &&\n        (data.actions.Action ||\n          data.actions[\"Mouse Up\"] ||\n          data.actions[\"Mouse Down\"]) &&\n        this.enableScripting &&\n        this.hasJSActions\n      ) {\n        this._bindJSAction(link, data);\n        isBound = true;\n      }\n\n      if (data.resetForm) {\n        this._bindResetFormAction(link, data.resetForm);\n        isBound = true;\n      } else if (this.isTooltipOnly && !isBound) {\n        this._bindLink(link, \"\");\n        isBound = true;\n      }\n    }\n\n    this.container.classList.add(\"linkAnnotation\");\n    if (isBound) {\n      this.contentElement = link;\n      this.container.append(link);\n    }\n\n    return this.container;\n  }\n\n  #setInternalLink() {\n    this.container.setAttribute(\"data-internal-link\", \"\");\n  }\n\n  /**\n   * Bind internal links to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} destination\n   * @param {string} [overlaidText]\n   * @memberof LinkAnnotationElement\n   */\n  _bindLink(link, destination, overlaidText = \"\") {\n    link.href = this.linkService.getDestinationHash(destination);\n    link.onclick = () => {\n      if (destination) {\n        this.linkService.goToDestination(destination);\n      }\n      return false;\n    };\n    if (destination || destination === /* isTooltipOnly = */ \"\") {\n      this.#setInternalLink();\n    }\n    if (overlaidText) {\n      link.title = overlaidText;\n    }\n  }\n\n  /**\n   * Bind named actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} action\n   * @param {string} [overlaidText]\n   * @memberof LinkAnnotationElement\n   */\n  _bindNamedAction(link, action, overlaidText = \"\") {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n    if (overlaidText) {\n      link.title = overlaidText;\n    }\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind attachments to the link element.\n   * @param {Object} link\n   * @param {Object} attachment\n   * @param {string} [overlaidText]\n   * @param {string} [dest]\n   */\n  #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    if (attachment.description) {\n      link.title = attachment.description;\n    } else if (overlaidText) {\n      link.title = overlaidText;\n    }\n    link.onclick = () => {\n      this.downloadManager?.openOrDownloadData(\n        attachment.content,\n        attachment.filename,\n        dest\n      );\n      return false;\n    };\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind SetOCGState actions to the link element.\n   * @param {Object} link\n   * @param {Object} action\n   * @param {string} [overlaidText]\n   */\n  #bindSetOCGState(link, action, overlaidText = \"\") {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeSetOCGState(action);\n      return false;\n    };\n    if (overlaidText) {\n      link.title = overlaidText;\n    }\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind JS actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} data\n   * @memberof LinkAnnotationElement\n   */\n  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([\n      [\"Action\", \"onclick\"],\n      [\"Mouse Up\", \"onmouseup\"],\n      [\"Mouse Down\", \"onmousedown\"],\n    ]);\n    for (const name of Object.keys(data.actions)) {\n      const jsName = map.get(name);\n      if (!jsName) {\n        continue;\n      }\n      link[jsName] = () => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: data.id,\n            name,\n          },\n        });\n        return false;\n      };\n    }\n    if (data.overlaidText) {\n      link.title = data.overlaidText;\n    }\n\n    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n    this.#setInternalLink();\n  }\n\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n    this.#setInternalLink();\n\n    if (!this._fieldObjects) {\n      warn(\n        `_bindResetFormAction - \"resetForm\" action not supported, ` +\n          \"ensure that the `fieldObjects` parameter is provided.\"\n      );\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n      return;\n    }\n\n    link.onclick = () => {\n      otherClickAction?.();\n\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include,\n      } = resetForm;\n\n      const allFields = [];\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n        const fieldIds = new Set(resetFormRefs);\n        for (const fieldName of resetFormFields) {\n          const fields = this._fieldObjects[fieldName] || [];\n          for (const { id } of fields) {\n            fieldIds.add(id);\n          }\n        }\n        for (const fields of Object.values(this._fieldObjects)) {\n          for (const field of fields) {\n            if (fieldIds.has(field.id) === include) {\n              allFields.push(field);\n            }\n          }\n        }\n      } else {\n        for (const fields of Object.values(this._fieldObjects)) {\n          allFields.push(...fields);\n        }\n      }\n\n      const storage = this.annotationStorage;\n      const allIds = [];\n      for (const field of allFields) {\n        const { id } = field;\n        allIds.push(id);\n        switch (field.type) {\n          case \"text\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"checkbox\":\n          case \"radiobutton\": {\n            const value = field.defaultValue === field.exportValues;\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"combobox\":\n          case \"listbox\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          default:\n            continue;\n        }\n\n        const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n        if (!domElement) {\n          continue;\n        } else if (!GetElementsByNameSet.has(domElement)) {\n          warn(`_bindResetFormAction - element not allowed: ${id}`);\n          continue;\n        }\n        domElement.dispatchEvent(new Event(\"resetform\"));\n      }\n\n      if (this.enableScripting) {\n        // Update the values in the sandbox.\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: \"app\",\n            ids: allIds,\n            name: \"ResetForm\",\n          },\n        });\n      }\n\n      return false;\n    };\n  }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n  }\n\n  render() {\n    this.container.classList.add(\"textAnnotation\");\n\n    const image = document.createElement(\"img\");\n    image.src =\n      this.imageResourcesPath +\n      \"annotation-\" +\n      this.data.name.toLowerCase() +\n      \".svg\";\n    image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n    image.setAttribute(\n      \"data-l10n-args\",\n      JSON.stringify({ type: this.data.name })\n    );\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    this.container.append(image);\n    return this.container;\n  }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    // Show only the container for unsupported field types.\n    return this.container;\n  }\n\n  showElementAndHideCanvas(element) {\n    if (this.data.hasOwnCanvas) {\n      if (element.previousSibling?.nodeName === \"CANVAS\") {\n        element.previousSibling.hidden = true;\n      }\n      element.hidden = false;\n    }\n  }\n\n  _getKeyModifier(event) {\n    return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n  }\n\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\n      // Mouse events\n      element.addEventListener(baseName, event => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n            shift: event.shiftKey,\n            modifier: this._getKeyModifier(event),\n          },\n        });\n      });\n    } else {\n      // Non-mouse events\n      element.addEventListener(baseName, event => {\n        if (baseName === \"blur\") {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          elementData.focused = false;\n        } else if (baseName === \"focus\") {\n          if (elementData.focused) {\n            return;\n          }\n          elementData.focused = true;\n        }\n\n        if (!valueGetter) {\n          return;\n        }\n\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n          },\n        });\n      });\n    }\n  }\n\n  _setEventListeners(element, elementData, names, getter) {\n    for (const [baseName, eventName] of names) {\n      if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n        if (eventName === \"Focus\" || eventName === \"Blur\") {\n          elementData ||= { focused: false };\n        }\n        this._setEventListener(\n          element,\n          elementData,\n          baseName,\n          eventName,\n          getter\n        );\n        if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n          // Ensure that elementData will have the correct value.\n          this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n        } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n          this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n        }\n      }\n    }\n  }\n\n  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor =\n      color === null\n        ? \"transparent\"\n        : Util.makeHexColor(color[0], color[1], color[2]);\n  }\n\n  /**\n   * Apply text styles to the text in the element.\n   *\n   * @private\n   * @param {HTMLDivElement} element\n   * @memberof TextWidgetAnnotationElement\n   */\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const { fontColor } = this.data.defaultAppearanceData;\n    const fontSize =\n      this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n    const style = element.style;\n\n    // TODO: If the font-size is zero, calculate it based on the height and\n    //       width of the element.\n    // Not setting `style.fontSize` will use the default font-size for now.\n\n    // We don't use the font, as specified in the PDF document, for the <input>\n    // element. Hence using the original `fontSize` could look bad, which is why\n    // it's instead based on the field height.\n    // If the height is \"big\" then it could lead to a too big font size\n    // so in this case use the one we've in the pdf (hence the min).\n    let computedFontSize;\n    const BORDER_SIZE = 2;\n    const roundToOneDecimal = x => Math.round(10 * x) / 10;\n    if (this.data.multiLine) {\n      const height = Math.abs(\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n      );\n      const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n      const lineHeight = height / numberOfLines;\n      computedFontSize = Math.min(\n        fontSize,\n        roundToOneDecimal(lineHeight / LINE_FACTOR)\n      );\n    } else {\n      const height = Math.abs(\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n      );\n      computedFontSize = Math.min(\n        fontSize,\n        roundToOneDecimal(height / LINE_FACTOR)\n      );\n    }\n    style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n    if (this.data.textAlignment !== null) {\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n    }\n  }\n\n  _setRequired(element, isRequired) {\n    if (isRequired) {\n      element.setAttribute(\"required\", true);\n    } else {\n      element.removeAttribute(\"required\");\n    }\n    element.setAttribute(\"aria-required\", isRequired);\n  }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable =\n      parameters.renderForms ||\n      parameters.data.hasOwnCanvas ||\n      (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n    super(parameters, { isRenderable });\n  }\n\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n    for (const element of this._getElementsByName(\n      base.name,\n      /* skipId = */ base.id\n    )) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n      storage.setValue(element.id, { [keyInStorage]: value });\n    }\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    this.container.classList.add(\"textWidgetAnnotation\");\n\n    let element = null;\n    if (this.renderForms) {\n      // NOTE: We cannot set the values using `element.value` below, since it\n      //       prevents the AnnotationLayer rasterizer in `test/driver.js`\n      //       from parsing the elements correctly for the reference tests.\n      const storedData = storage.getValue(id, {\n        value: this.data.fieldValue,\n      });\n      let textContent = storedData.value || \"\";\n      const maxLen = storage.getValue(id, {\n        charLimit: this.data.maxLen,\n      }).charLimit;\n      if (maxLen && textContent.length > maxLen) {\n        textContent = textContent.slice(0, maxLen);\n      }\n\n      let fieldFormattedValues =\n        storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n      if (fieldFormattedValues && this.data.comb) {\n        fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n      }\n\n      const elementData = {\n        userValue: textContent,\n        formattedValue: fieldFormattedValues,\n        lastCommittedValue: null,\n        commitKey: 1,\n        focused: false,\n      };\n\n      if (this.data.multiLine) {\n        element = document.createElement(\"textarea\");\n        element.textContent = fieldFormattedValues ?? textContent;\n        if (this.data.doNotScroll) {\n          element.style.overflowY = \"hidden\";\n        }\n      } else {\n        element = document.createElement(\"input\");\n        element.type = this.data.password ? \"password\" : \"text\";\n        element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n        if (this.data.doNotScroll) {\n          element.style.overflowX = \"hidden\";\n        }\n      }\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n      GetElementsByNameSet.add(element);\n      this.contentElement = element;\n      element.setAttribute(\"data-element-id\", id);\n\n      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = 0;\n      const { datetimeFormat, datetimeType, timeStep } = this.data;\n      const hasDateOrTime = !!datetimeType && this.enableScripting;\n      if (datetimeFormat) {\n        element.title = datetimeFormat;\n      }\n\n      this._setRequired(element, this.data.required);\n\n      if (maxLen) {\n        element.maxLength = maxLen;\n      }\n\n      element.addEventListener(\"input\", event => {\n        storage.setValue(id, { value: event.target.value });\n        this.setPropertyOnSiblings(\n          element,\n          \"value\",\n          event.target.value,\n          \"value\"\n        );\n        elementData.formattedValue = null;\n      });\n\n      element.addEventListener(\"resetform\", event => {\n        const defaultValue = this.data.defaultFieldValue ?? \"\";\n        element.value = elementData.userValue = defaultValue;\n        elementData.formattedValue = null;\n      });\n\n      let blurListener = event => {\n        const { formattedValue } = elementData;\n        if (formattedValue !== null && formattedValue !== undefined) {\n          event.target.value = formattedValue;\n        }\n        // Reset the cursor position to the start of the field (issue 12359).\n        event.target.scrollLeft = 0;\n      };\n\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.focused) {\n            return;\n          }\n          const { target } = event;\n          if (hasDateOrTime) {\n            target.type = datetimeType;\n            if (timeStep) {\n              target.step = timeStep;\n            }\n          }\n\n          if (elementData.userValue) {\n            const value = elementData.userValue;\n            if (hasDateOrTime) {\n              if (datetimeType === \"time\") {\n                const date = new Date(value);\n                const parts = [\n                  date.getHours(),\n                  date.getMinutes(),\n                  date.getSeconds(),\n                ];\n                target.value = parts\n                  .map(v => v.toString().padStart(2, \"0\"))\n                  .join(\":\");\n              } else {\n                target.value = new Date(value - TIMEZONE_OFFSET)\n                  .toISOString()\n                  .split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n              }\n            } else {\n              target.value = value;\n            }\n          }\n          elementData.lastCommittedValue = target.value;\n          elementData.commitKey = 1;\n          if (!this.data.actions?.Focus) {\n            elementData.focused = true;\n          }\n        });\n\n        element.addEventListener(\"updatefromsandbox\", jsEvent => {\n          this.showElementAndHideCanvas(jsEvent.target);\n          const actions = {\n            value(event) {\n              elementData.userValue = event.detail.value ?? \"\";\n              if (!hasDateOrTime) {\n                storage.setValue(id, {\n                  value: elementData.userValue.toString(),\n                });\n              }\n              event.target.value = elementData.userValue;\n            },\n            formattedValue(event) {\n              const { formattedValue } = event.detail;\n              elementData.formattedValue = formattedValue;\n              if (\n                formattedValue !== null &&\n                formattedValue !== undefined &&\n                event.target !== document.activeElement\n              ) {\n                // Input hasn't the focus so display formatted string\n                event.target.value = formattedValue;\n              }\n              const data = {\n                formattedValue,\n              };\n              if (hasDateOrTime) {\n                // If the field is a date or time, we store the formatted value\n                // in the `value` property, so that it can be used by the\n                // `Keystroke` action.\n                data.value = formattedValue;\n              }\n              storage.setValue(id, data);\n            },\n            selRange(event) {\n              event.target.setSelectionRange(...event.detail.selRange);\n            },\n            charLimit: event => {\n              const { charLimit } = event.detail;\n              const { target } = event;\n              if (charLimit === 0) {\n                target.removeAttribute(\"maxLength\");\n                return;\n              }\n\n              target.setAttribute(\"maxLength\", charLimit);\n              let value = elementData.userValue;\n              if (!value || value.length <= charLimit) {\n                return;\n              }\n              value = value.slice(0, charLimit);\n              target.value = elementData.userValue = value;\n              storage.setValue(id, { value });\n\n              this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n                source: this,\n                detail: {\n                  id,\n                  name: \"Keystroke\",\n                  value,\n                  willCommit: true,\n                  commitKey: 1,\n                  selStart: target.selectionStart,\n                  selEnd: target.selectionEnd,\n                },\n              });\n            },\n          };\n          this._dispatchEventFromSandbox(actions, jsEvent);\n        });\n\n        // Even if the field hasn't any actions\n        // leaving it can still trigger some actions with Calculate\n        element.addEventListener(\"keydown\", event => {\n          elementData.commitKey = 1;\n          // If the key is one of Escape, Enter then the data are committed.\n          // If we've a Tab then data will be committed on blur.\n          let commitKey = -1;\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\" && !this.data.multiLine) {\n            // When we've a multiline field, \"Enter\" key is a key as the other\n            // hence we don't commit the data (Acrobat behaves the same way)\n            // (see issue #15627).\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            elementData.commitKey = 3;\n          }\n          if (commitKey === -1) {\n            return;\n          }\n          const { value } = event.target;\n          if (elementData.lastCommittedValue === value) {\n            return;\n          }\n          elementData.lastCommittedValue = value;\n          // Save the entered value\n          elementData.userValue = value;\n          this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n            source: this,\n            detail: {\n              id,\n              name: \"Keystroke\",\n              value,\n              willCommit: true,\n              commitKey,\n              selStart: event.target.selectionStart,\n              selEnd: event.target.selectionEnd,\n            },\n          });\n        });\n        const _blurListener = blurListener;\n        blurListener = null;\n        element.addEventListener(\"blur\", event => {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          if (!this.data.actions?.Blur) {\n            elementData.focused = false;\n          }\n          const { target } = event;\n          let { value } = target;\n          if (hasDateOrTime) {\n            if (value && datetimeType === \"time\") {\n              const parts = value.split(\":\").map(v => parseInt(v, 10));\n              value = new Date(\n                2000,\n                0,\n                1,\n                parts[0],\n                parts[1],\n                parts[2] || 0\n              ).valueOf();\n              target.step = \"\";\n            } else {\n              // Unfortunately, when the date is \"2025-09-23\", the parser\n              // converts it to UTC time which may lead to the date being off by\n              // one day depending on the timezone. To workaround this, we\n              // append \"T00:00\" to the date so that it's parsed as local\n              // time (bug 1989874).\n              if (!value.includes(\"T\")) {\n                value = `${value}T00:00`;\n              }\n              value = new Date(value).valueOf();\n            }\n            target.type = \"text\";\n          }\n          elementData.userValue = value;\n          if (elementData.lastCommittedValue !== value) {\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                willCommit: true,\n                commitKey: elementData.commitKey,\n                selStart: event.target.selectionStart,\n                selEnd: event.target.selectionEnd,\n              },\n            });\n          }\n          _blurListener(event);\n        });\n\n        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            elementData.lastCommittedValue = null;\n            const { data, target } = event;\n            const { value, selectionStart, selectionEnd } = target;\n\n            let selStart = selectionStart,\n              selEnd = selectionEnd;\n\n            switch (event.inputType) {\n              // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n              case \"deleteWordBackward\": {\n                const match = value\n                  .substring(0, selectionStart)\n                  .match(/\\w*[^\\w]*$/);\n                if (match) {\n                  selStart -= match[0].length;\n                }\n                break;\n              }\n              case \"deleteWordForward\": {\n                const match = value\n                  .substring(selectionStart)\n                  .match(/^[^\\w]*\\w*/);\n                if (match) {\n                  selEnd += match[0].length;\n                }\n                break;\n              }\n              case \"deleteContentBackward\":\n                if (selectionStart === selectionEnd) {\n                  selStart -= 1;\n                }\n                break;\n              case \"deleteContentForward\":\n                if (selectionStart === selectionEnd) {\n                  selEnd += 1;\n                }\n                break;\n            }\n\n            // We handle the event ourselves.\n            event.preventDefault();\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                change: data || \"\",\n                willCommit: false,\n                selStart,\n                selEnd,\n              },\n            });\n          });\n        }\n\n        this._setEventListeners(\n          element,\n          elementData,\n          [\n            [\"focus\", \"Focus\"],\n            [\"blur\", \"Blur\"],\n            [\"mousedown\", \"Mouse Down\"],\n            [\"mouseenter\", \"Mouse Enter\"],\n            [\"mouseleave\", \"Mouse Exit\"],\n            [\"mouseup\", \"Mouse Up\"],\n          ],\n          event => event.target.value\n        );\n      }\n\n      if (blurListener) {\n        element.addEventListener(\"blur\", blurListener);\n      }\n\n      if (this.data.comb) {\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\n        const combWidth = fieldWidth / maxLen;\n\n        element.classList.add(\"comb\");\n        element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n      }\n    } else {\n      element = document.createElement(\"div\");\n      element.textContent = this.data.fieldValue;\n      element.style.verticalAlign = \"middle\";\n      element.style.display = \"table-cell\";\n\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n    }\n\n    this._setTextStyle(element);\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n  }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.exportValue === data.fieldValue,\n    }).value;\n    if (typeof value === \"string\") {\n      // The value has been changed through js and set in annotationStorage.\n      value = value !== \"Off\";\n      storage.setValue(id, { value });\n    }\n\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"checkbox\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.setAttribute(\"exportValue\", data.exportValue);\n    element.tabIndex = 0;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n        storage.setValue(checkbox.id, { value: curChecked });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue || \"Off\";\n      event.target.checked = defaultValue === data.exportValue;\n    });\n\n    if (this.enableScripting && this.hasJSActions) {\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            event.target.checked = event.detail.value !== \"Off\";\n            storage.setValue(id, { value: event.target.checked });\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        null,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.fieldValue === data.buttonValue,\n    }).value;\n    if (typeof value === \"string\") {\n      // The value has been changed through js and set in annotationStorage.\n      value = value !== data.buttonValue;\n      storage.setValue(id, { value });\n    }\n\n    if (value) {\n      // It's possible that multiple radio buttons are checked.\n      // So if this one is checked we just reset the other ones.\n      // (see bug 1864136). Then when the other ones will be rendered they will\n      // unchecked (because of their value in the storage).\n      // Consequently, the first checked radio button will be the only checked\n      // one.\n      for (const radio of this._getElementsByName(\n        data.fieldName,\n        /* skipId = */ id\n      )) {\n        storage.setValue(radio.id, { value: false });\n      }\n    }\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"radio\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.tabIndex = 0;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n        storage.setValue(radio.id, { value: false });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked =\n        defaultValue !== null &&\n        defaultValue !== undefined &&\n        defaultValue === data.buttonValue;\n    });\n\n    if (this.enableScripting && this.hasJSActions) {\n      const pdfButtonValue = data.buttonValue;\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value: event => {\n            const checked = pdfButtonValue === event.detail.value;\n            for (const radio of this._getElementsByName(event.target.name)) {\n              const curChecked = checked && radio.id === id;\n              if (radio.domElement) {\n                radio.domElement.checked = curChecked;\n              }\n              storage.setValue(radio.id, { value: curChecked });\n            }\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        null,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n  }\n\n  render() {\n    // The rendering and functionality of a push button widget annotation is\n    // equal to that of a link annotation, but may have more functionality, such\n    // as performing actions on form fields (resetting, submitting, et cetera).\n    const container = super.render();\n    container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n    const linkElement = container.lastChild;\n    if (this.enableScripting && this.hasJSActions && linkElement) {\n      this._setDefaultPropertiesFromJS(linkElement);\n\n      linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        this._dispatchEventFromSandbox({}, jsEvent);\n      });\n    }\n\n    return container;\n  }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    this.container.classList.add(\"choiceWidgetAnnotation\");\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    const storedData = storage.getValue(id, {\n      value: this.data.fieldValue,\n    });\n\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.setAttribute(\"data-element-id\", id);\n\n    selectElement.disabled = this.data.readOnly;\n    this._setRequired(selectElement, this.data.required);\n    selectElement.name = this.data.fieldName;\n    selectElement.tabIndex = 0;\n\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n    if (!this.data.combo) {\n      // List boxes have a size and (optionally) multiple selection.\n      selectElement.size = this.data.options.length;\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\n    }\n\n    selectElement.addEventListener(\"resetform\", event => {\n      const defaultValue = this.data.defaultFieldValue;\n      for (const option of selectElement.options) {\n        option.selected = option.value === defaultValue;\n      }\n    });\n\n    // Insert the options into the choice field.\n    for (const option of this.data.options) {\n      const optionElement = document.createElement(\"option\");\n      optionElement.textContent = option.displayValue;\n      optionElement.value = option.exportValue;\n      if (storedData.value.includes(option.exportValue)) {\n        optionElement.setAttribute(\"selected\", true);\n        addAnEmptyEntry = false;\n      }\n      selectElement.append(optionElement);\n    }\n\n    let removeEmptyEntry = null;\n    if (addAnEmptyEntry) {\n      const noneOptionElement = document.createElement(\"option\");\n      noneOptionElement.value = \" \";\n      noneOptionElement.setAttribute(\"hidden\", true);\n      noneOptionElement.setAttribute(\"selected\", true);\n      selectElement.prepend(noneOptionElement);\n\n      removeEmptyEntry = () => {\n        noneOptionElement.remove();\n        selectElement.removeEventListener(\"input\", removeEmptyEntry);\n        removeEmptyEntry = null;\n      };\n      selectElement.addEventListener(\"input\", removeEmptyEntry);\n    }\n\n    const getValue = isExport => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const { options, multiple } = selectElement;\n      if (!multiple) {\n        return options.selectedIndex === -1\n          ? null\n          : options[options.selectedIndex][name];\n      }\n      return Array.prototype.filter\n        .call(options, option => option.selected)\n        .map(option => option[name]);\n    };\n\n    let selectedValues = getValue(/* isExport */ false);\n\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => ({\n        displayValue: option.textContent,\n        exportValue: option.value,\n      }));\n    };\n\n    if (this.enableScripting && this.hasJSActions) {\n      selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            removeEmptyEntry?.();\n            const value = event.detail.value;\n            const values = new Set(Array.isArray(value) ? value : [value]);\n            for (const option of selectElement.options) {\n              option.selected = values.has(option.value);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          multipleSelection(event) {\n            selectElement.multiple = true;\n          },\n          remove(event) {\n            const options = selectElement.options;\n            const index = event.detail.remove;\n            options[index].selected = false;\n            selectElement.remove(index);\n            if (options.length > 0) {\n              const i = Array.prototype.findIndex.call(\n                options,\n                option => option.selected\n              );\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            storage.setValue(id, { value: null, items: [] });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          insert(event) {\n            const { index, displayValue, exportValue } = event.detail.insert;\n            const selectChild = selectElement.children[index];\n            const optionElement = document.createElement(\"option\");\n            optionElement.textContent = displayValue;\n            optionElement.value = exportValue;\n\n            if (selectChild) {\n              selectChild.before(optionElement);\n            } else {\n              selectElement.append(optionElement);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          items(event) {\n            const { items } = event.detail;\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            for (const item of items) {\n              const { displayValue, exportValue } = item;\n              const optionElement = document.createElement(\"option\");\n              optionElement.textContent = displayValue;\n              optionElement.value = exportValue;\n              selectElement.append(optionElement);\n            }\n            if (selectElement.options.length > 0) {\n              selectElement.options[0].selected = true;\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          indices(event) {\n            const indices = new Set(event.detail.indices);\n            for (const option of event.target.options) {\n              option.selected = indices.has(option.index);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(/* isExport */ true);\n        const change = getValue(/* isExport */ false);\n        storage.setValue(id, { value: exportValue });\n\n        event.preventDefault();\n\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value: selectedValues,\n            change,\n            changeEx: exportValue,\n            willCommit: false,\n            commitKey: 1,\n            keyDown: false,\n          },\n        });\n      });\n\n      this._setEventListeners(\n        selectElement,\n        null,\n        [\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n          [\"input\", \"Action\"],\n          [\"input\", \"Validate\"],\n        ],\n        event => event.target.value\n      );\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, { value: getValue(/* isExport */ true) });\n      });\n    }\n\n    if (this.data.combo) {\n      this._setTextStyle(selectElement);\n    } else {\n      // Just use the default font size...\n      // it's a bit hard to guess what is a good size.\n    }\n    this._setBackgroundColor(selectElement);\n    this._setDefaultPropertiesFromJS(selectElement);\n\n    this.container.append(selectElement);\n    return this.container;\n  }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const { data, elements, parent } = parameters;\n    const hasCommentManager = !!parent._commentManager;\n    super(parameters, {\n      isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data),\n    });\n    this.elements = elements;\n    if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n      const popup = (this.popup = this.#createPopup());\n      for (const element of elements) {\n        element.popup = popup;\n      }\n    } else {\n      this.popup = null;\n    }\n  }\n\n  #createPopup() {\n    return new PopupElement({\n      container: this.container,\n      color: this.data.color,\n      titleObj: this.data.titleObj,\n      modificationDate: this.data.modificationDate || this.data.creationDate,\n      contentsObj: this.data.contentsObj,\n      richText: this.data.richText,\n      rect: this.data.rect,\n      parentRect: this.data.parentRect || null,\n      parent: this.parent,\n      elements: this.elements,\n      open: this.data.open,\n      commentManager: this.parent._commentManager,\n    });\n  }\n\n  render() {\n    const { container } = this;\n    container.classList.add(\"popupAnnotation\");\n    container.role = \"comment\";\n\n    const popup = (this.popup = this.#createPopup());\n\n    const elementIds = [];\n    for (const element of this.elements) {\n      element.popup = popup;\n      element.container.ariaHasPopup = \"dialog\";\n      elementIds.push(element.data.id);\n      element.addHighlightArea();\n    }\n\n    this.container.setAttribute(\n      \"aria-controls\",\n      elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\")\n    );\n\n    return this.container;\n  }\n}\n\nclass PopupElement {\n  #commentManager = null;\n\n  #boundKeyDown = this.#keyDown.bind(this);\n\n  #boundHide = this.#hide.bind(this);\n\n  #boundShow = this.#show.bind(this);\n\n  #boundToggle = this.#toggle.bind(this);\n\n  #color = null;\n\n  #container = null;\n\n  #contentsObj = null;\n\n  #dateObj = null;\n\n  #elements = null;\n\n  #parent = null;\n\n  #parentRect = null;\n\n  #pinned = false;\n\n  #popup = null;\n\n  #popupAbortController = null;\n\n  #position = null;\n\n  #commentButton = null;\n\n  #commentButtonPosition = null;\n\n  #popupPosition = null;\n\n  #rect = null;\n\n  #richText = null;\n\n  #titleObj = null;\n\n  #updates = null;\n\n  #wasVisible = false;\n\n  #firstElement = null;\n\n  #commentText = null;\n\n  constructor({\n    container,\n    color,\n    elements,\n    titleObj,\n    modificationDate,\n    contentsObj,\n    richText,\n    parent,\n    rect,\n    parentRect,\n    open,\n    commentManager = null,\n  }) {\n    this.#container = container;\n    this.#titleObj = titleObj;\n    this.#contentsObj = contentsObj;\n    this.#richText = richText;\n    this.#parent = parent;\n    this.#color = color;\n    this.#rect = rect;\n    this.#parentRect = parentRect;\n    this.#elements = elements;\n    this.#commentManager = commentManager;\n    this.#firstElement = elements[0];\n\n    // The modification date is shown in the popup instead of the creation\n    // date if it is available and can be parsed correctly, which is\n    // consistent with other viewers such as Adobe Acrobat.\n    this.#dateObj = PDFDateString.toDateObject(modificationDate);\n\n    // The elements that will trigger the popup.\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n\n    if (!commentManager) {\n      this.#addEventListeners();\n\n      this.#container.hidden = true;\n      if (open) {\n        this.#toggle();\n      }\n\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n        // Since the popup is lazily created, we need to ensure that it'll be\n        // created and displayed during reference tests.\n        this.#parent.popupShow.push(async () => {\n          if (this.#container.hidden) {\n            this.#show();\n          }\n        });\n      }\n    }\n  }\n\n  #addEventListeners() {\n    if (this.#popupAbortController) {\n      return;\n    }\n    this.#popupAbortController = new AbortController();\n    const { signal } = this.#popupAbortController;\n\n    // Attach the event listeners to the trigger element.\n    for (const element of this.trigger) {\n      element.addEventListener(\"click\", this.#boundToggle, { signal });\n      element.addEventListener(\"pointerenter\", this.#boundShow, { signal });\n      element.addEventListener(\"pointerleave\", this.#boundHide, { signal });\n      element.classList.add(\"popupTriggerArea\");\n    }\n\n    // Attach the event listener to toggle the popup with the keyboard.\n    for (const element of this.#elements) {\n      element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n        signal,\n      });\n    }\n  }\n\n  #setCommentButtonPosition() {\n    const element = this.#elements.find(e => e.hasCommentButton);\n    if (!element) {\n      return;\n    }\n    this.#commentButtonPosition = element._normalizePoint(\n      element.commentButtonPosition\n    );\n  }\n\n  renderCommentButton() {\n    if (this.#commentButton) {\n      if (!this.#commentButton.parentNode) {\n        this.#firstElement.container.after(this.#commentButton);\n      }\n      return;\n    }\n\n    if (!this.#commentButtonPosition) {\n      this.#setCommentButtonPosition();\n    }\n\n    if (!this.#commentButtonPosition) {\n      return;\n    }\n\n    const { signal } = (this.#popupAbortController = new AbortController());\n    const hasOwnButton = this.#firstElement.hasOwnCommentButton;\n    const togglePopup = () => {\n      this.#commentManager.toggleCommentPopup(\n        this,\n        /* isSelected = */ true,\n        /* visibility = */ undefined,\n        /* isEditable = */ !hasOwnButton\n      );\n    };\n    const showPopup = () => {\n      this.#commentManager.toggleCommentPopup(\n        this,\n        /* isSelected = */ false,\n        /* visibility = */ true,\n        /* isEditable = */ !hasOwnButton\n      );\n    };\n    const hidePopup = () => {\n      this.#commentManager.toggleCommentPopup(\n        this,\n        /* isSelected = */ false,\n        /* visibility = */ false\n      );\n    };\n\n    if (!hasOwnButton) {\n      const button = (this.#commentButton = document.createElement(\"button\"));\n      button.className = \"annotationCommentButton\";\n      const parentContainer = this.#firstElement.container;\n      button.style.zIndex = parentContainer.style.zIndex + 1;\n      button.tabIndex = 0;\n      button.ariaHasPopup = \"dialog\";\n      button.ariaControls = \"commentPopup\";\n      button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n      this.#updateColor();\n      this.#updateCommentButtonPosition();\n      button.addEventListener(\"keydown\", this.#boundKeyDown, { signal });\n      button.addEventListener(\"click\", togglePopup, { signal });\n      button.addEventListener(\"pointerenter\", showPopup, { signal });\n      button.addEventListener(\"pointerleave\", hidePopup, { signal });\n      parentContainer.after(button);\n    } else {\n      this.#commentButton = this.#firstElement.container;\n      for (const element of this.trigger) {\n        element.ariaHasPopup = \"dialog\";\n        element.ariaControls = \"commentPopup\";\n        element.addEventListener(\"keydown\", this.#boundKeyDown, { signal });\n        element.addEventListener(\"click\", togglePopup, { signal });\n        element.addEventListener(\"pointerenter\", showPopup, { signal });\n        element.addEventListener(\"pointerleave\", hidePopup, { signal });\n        element.classList.add(\"popupTriggerArea\");\n      }\n    }\n  }\n\n  #updateCommentButtonPosition() {\n    if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n      // If there's no editor associated with the annotation then the comment\n      // button position can't be changed.\n      return;\n    }\n    if (!this.#commentButton) {\n      this.renderCommentButton();\n    }\n    const [x, y] = this.#commentButtonPosition;\n    const { style } = this.#commentButton;\n    style.left = `calc(${x}%)`;\n    style.top = `calc(${y}% - var(--comment-button-dim))`;\n  }\n\n  #updateColor() {\n    if (this.#firstElement.extraPopupElement) {\n      return;\n    }\n    if (!this.#commentButton) {\n      this.renderCommentButton();\n    }\n    this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n  }\n\n  get commentButtonColor() {\n    const { color, opacity } = this.#firstElement.commentData;\n    if (!color) {\n      return null;\n    }\n    return this.#parent._commentManager.makeCommentColor(color, opacity);\n  }\n\n  focusCommentButton() {\n    setTimeout(() => {\n      this.#commentButton?.focus();\n    }, 0);\n  }\n\n  getData() {\n    const { richText, color, opacity, creationDate, modificationDate } =\n      this.#firstElement.commentData;\n    return {\n      contentsObj: { str: this.comment },\n      richText,\n      color,\n      opacity,\n      creationDate,\n      modificationDate,\n    };\n  }\n\n  get elementBeforePopup() {\n    return this.#commentButton;\n  }\n\n  get comment() {\n    this.#commentText ||= this.#firstElement.commentText;\n    return this.#commentText;\n  }\n\n  set comment(text) {\n    if (text === this.comment) {\n      return;\n    }\n    this.#firstElement.commentText = this.#commentText = text;\n  }\n\n  focus() {\n    this.#firstElement.container?.focus();\n  }\n\n  get parentBoundingClientRect() {\n    return this.#firstElement.layer.getBoundingClientRect();\n  }\n\n  setCommentButtonStates({ selected, hasPopup }) {\n    if (!this.#commentButton) {\n      return;\n    }\n    this.#commentButton.classList.toggle(\"selected\", selected);\n    this.#commentButton.ariaExpanded = hasPopup;\n  }\n\n  setSelectedCommentButton(selected) {\n    this.#commentButton.classList.toggle(\"selected\", selected);\n  }\n\n  get commentPopupPosition() {\n    if (this.#popupPosition) {\n      return this.#popupPosition;\n    }\n    const { x, y, height } = this.#commentButton.getBoundingClientRect();\n    const {\n      x: parentX,\n      y: parentY,\n      width: parentWidth,\n      height: parentHeight,\n    } = this.#firstElement.layer.getBoundingClientRect();\n    return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n  }\n\n  set commentPopupPosition(pos) {\n    this.#popupPosition = pos;\n  }\n\n  hasDefaultPopupPosition() {\n    return this.#popupPosition === null;\n  }\n\n  get commentButtonPosition() {\n    return this.#commentButtonPosition;\n  }\n\n  get commentButtonWidth() {\n    return (\n      this.#commentButton.getBoundingClientRect().width /\n      this.parentBoundingClientRect.width\n    );\n  }\n\n  editComment(options) {\n    const [posX, posY] =\n      this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n    const parentDimensions = this.parentBoundingClientRect;\n    const {\n      x: parentX,\n      y: parentY,\n      width: parentWidth,\n      height: parentHeight,\n    } = parentDimensions;\n    this.#commentManager.showDialog(\n      null,\n      this,\n      parentX + posX * parentWidth,\n      parentY + posY * parentHeight,\n      { ...options, parentDimensions }\n    );\n  }\n\n  render() {\n    if (this.#popup) {\n      return;\n    }\n\n    const popup = (this.#popup = document.createElement(\"div\"));\n    popup.className = \"popup\";\n\n    if (this.#color) {\n      const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n        ...this.#color\n      ));\n      popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n    }\n\n    const header = document.createElement(\"span\");\n    header.className = \"header\";\n    if (this.#titleObj?.str) {\n      const title = document.createElement(\"span\");\n      title.className = \"title\";\n      header.append(title);\n      ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n    }\n    popup.append(header);\n\n    if (this.#dateObj) {\n      const modificationDate = document.createElement(\"time\");\n      modificationDate.className = \"popupDate\";\n      modificationDate.setAttribute(\n        \"data-l10n-id\",\n        \"pdfjs-annotation-date-time-string\"\n      );\n      modificationDate.setAttribute(\n        \"data-l10n-args\",\n        JSON.stringify({ dateObj: this.#dateObj.valueOf() })\n      );\n      modificationDate.dateTime = this.#dateObj.toISOString();\n      header.append(modificationDate);\n    }\n\n    renderRichText(\n      {\n        html: this.#html || this.#contentsObj.str,\n        dir: this.#contentsObj?.dir,\n        className: \"popupContent\",\n      },\n      popup\n    );\n\n    this.#container.append(popup);\n  }\n\n  get #html() {\n    const richText = this.#richText;\n    const contentsObj = this.#contentsObj;\n    if (\n      richText?.str &&\n      (!contentsObj?.str || contentsObj.str === richText.str)\n    ) {\n      return this.#richText.html || null;\n    }\n    return null;\n  }\n\n  get #fontSize() {\n    return this.#html?.attributes?.style?.fontSize || 0;\n  }\n\n  get #fontColor() {\n    return this.#html?.attributes?.style?.color || null;\n  }\n\n  #makePopupContent(text) {\n    const popupLines = [];\n    const popupContent = {\n      str: text,\n      html: {\n        name: \"div\",\n        attributes: {\n          dir: \"auto\",\n        },\n        children: [\n          {\n            name: \"p\",\n            children: popupLines,\n          },\n        ],\n      },\n    };\n    const lineAttributes = {\n      style: {\n        color: this.#fontColor,\n        fontSize: this.#fontSize\n          ? `calc(${this.#fontSize}px * var(--total-scale-factor))`\n          : \"\",\n      },\n    };\n    for (const line of text.split(\"\\n\")) {\n      popupLines.push({\n        name: \"span\",\n        value: line,\n        attributes: lineAttributes,\n      });\n    }\n    return popupContent;\n  }\n\n  #keyDown(event) {\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n\n    if (event.key === \"Enter\" || (event.key === \"Escape\" && this.#pinned)) {\n      this.#toggle();\n    }\n  }\n\n  updateEdited({ rect, popup, deleted }) {\n    if (this.#commentManager) {\n      if (deleted) {\n        this.remove();\n        this.#commentText = null;\n      } else if (popup) {\n        if (popup.deleted) {\n          this.remove();\n        } else {\n          this.#updateColor();\n          this.#commentText = popup.text;\n        }\n      }\n      if (rect) {\n        this.#commentButtonPosition = null;\n        this.#setCommentButtonPosition();\n        this.#updateCommentButtonPosition();\n      }\n      return;\n    }\n    if (deleted || popup?.deleted) {\n      this.remove();\n      return;\n    }\n    this.#addEventListeners();\n    this.#updates ||= {\n      contentsObj: this.#contentsObj,\n      richText: this.#richText,\n    };\n    if (rect) {\n      this.#position = null;\n    }\n    if (popup && popup.text) {\n      this.#richText = this.#makePopupContent(popup.text);\n      this.#dateObj = PDFDateString.toDateObject(popup.date);\n      this.#contentsObj = null;\n    }\n    this.#popup?.remove();\n    this.#popup = null;\n  }\n\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    ({ contentsObj: this.#contentsObj, richText: this.#richText } =\n      this.#updates);\n    this.#updates = null;\n    this.#popup?.remove();\n    this.#popup = null;\n    this.#position = null;\n  }\n\n  remove() {\n    this.#popupAbortController?.abort();\n    this.#popupAbortController = null;\n    this.#popup?.remove();\n    this.#popup = null;\n    this.#wasVisible = false;\n    this.#pinned = false;\n    this.#commentButton?.remove();\n    this.#commentButton = null;\n    if (this.trigger) {\n      for (const element of this.trigger) {\n        element.classList.remove(\"popupTriggerArea\");\n      }\n    }\n  }\n\n  #setPosition() {\n    if (this.#position !== null) {\n      return;\n    }\n    const {\n      page: { view },\n      viewport: {\n        rawDims: { pageWidth, pageHeight, pageX, pageY },\n      },\n    } = this.#parent;\n\n    let useParentRect = !!this.#parentRect;\n    let rect = useParentRect ? this.#parentRect : this.#rect;\n    for (const element of this.#elements) {\n      if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n        rect = element.data.rect;\n        useParentRect = true;\n        break;\n      }\n    }\n\n    const normalizedRect = Util.normalizeRect([\n      rect[0],\n      view[3] - rect[1] + view[1],\n      rect[2],\n      view[3] - rect[3] + view[1],\n    ]);\n\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n    const parentWidth = useParentRect\n      ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n      : 0;\n    const popupLeft = normalizedRect[0] + parentWidth;\n    const popupTop = normalizedRect[1];\n    this.#position = [\n      (100 * (popupLeft - pageX)) / pageWidth,\n      (100 * (popupTop - pageY)) / pageHeight,\n    ];\n\n    const { style } = this.#container;\n    style.left = `${this.#position[0]}%`;\n    style.top = `${this.#position[1]}%`;\n  }\n\n  /**\n   * Toggle the visibility of the popup.\n   */\n  #toggle() {\n    if (this.#commentManager) {\n      this.#commentManager.toggleCommentPopup(this, /* isSelected = */ false);\n      return;\n    }\n\n    this.#pinned = !this.#pinned;\n    if (this.#pinned) {\n      this.#show();\n      this.#container.addEventListener(\"click\", this.#boundToggle);\n      this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n    } else {\n      this.#hide();\n      this.#container.removeEventListener(\"click\", this.#boundToggle);\n      this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n    }\n  }\n\n  /**\n   * Show the popup.\n   */\n  #show() {\n    if (!this.#popup) {\n      this.render();\n    }\n    if (!this.isVisible) {\n      this.#setPosition();\n      this.#container.hidden = false;\n      this.#container.style.zIndex =\n        parseInt(this.#container.style.zIndex) + 1000;\n    } else if (this.#pinned) {\n      this.#container.classList.add(\"focused\");\n    }\n  }\n\n  /**\n   * Hide the popup.\n   */\n  #hide() {\n    this.#container.classList.remove(\"focused\");\n    if (this.#pinned || !this.isVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n    this.#container.style.zIndex =\n      parseInt(this.#container.style.zIndex) - 1000;\n  }\n\n  forceHide() {\n    this.#wasVisible = this.isVisible;\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n  }\n\n  maybeShow() {\n    if (this.#commentManager) {\n      return;\n    }\n    this.#addEventListeners();\n    if (!this.#wasVisible) {\n      return;\n    }\n    if (!this.#popup) {\n      this.#show();\n    }\n    this.#wasVisible = false;\n    this.#container.hidden = false;\n  }\n\n  get isVisible() {\n    if (this.#commentManager) {\n      return false;\n    }\n    return this.#container.hidden === false;\n  }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n    this.textContent = parameters.data.textContent;\n    this.textPosition = parameters.data.textPosition;\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\n  }\n\n  render() {\n    this.container.classList.add(\"freeTextAnnotation\");\n\n    if (this.textContent) {\n      const content = (this.contentElement = document.createElement(\"div\"));\n      content.classList.add(\"annotationTextContent\");\n      content.setAttribute(\"role\", \"comment\");\n      for (const line of this.textContent) {\n        const lineSpan = document.createElement(\"span\");\n        lineSpan.textContent = line;\n        content.append(lineSpan);\n      }\n      this.container.append(content);\n    }\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    this._editOnDoubleClick();\n\n    return this.container;\n  }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n  #line = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"lineAnnotation\");\n\n    // Create an invisible line with the same starting and ending coordinates\n    // that acts as the trigger for the popup. Only the line itself should\n    // trigger the popup, not the entire container.\n    const { data, width, height } = this;\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // PDF coordinates are calculated from a bottom left origin, so transform\n    // the line coordinates to a top left origin for the SVG element.\n    const line = (this.#line = this.svgFactory.createElement(\"svg:line\"));\n    line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n    line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n    line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n    line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(line);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the line instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#line;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n  #square = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"squareAnnotation\");\n\n    // Create an invisible square with the same rectangle that acts as the\n    // trigger for the popup. Only the square itself should trigger the\n    // popup, not the entire container.\n    const { data, width, height } = this;\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the square and half of\n    // the borders outside the square by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const square = (this.#square = this.svgFactory.createElement(\"svg:rect\"));\n    square.setAttribute(\"x\", borderWidth / 2);\n    square.setAttribute(\"y\", borderWidth / 2);\n    square.setAttribute(\"width\", width - borderWidth);\n    square.setAttribute(\"height\", height - borderWidth);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(square);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the square instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#square;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n  #circle = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"circleAnnotation\");\n\n    // Create an invisible circle with the same ellipse that acts as the\n    // trigger for the popup. Only the circle itself should trigger the\n    // popup, not the entire container.\n    const { data, width, height } = this;\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the circle and half of\n    // the borders outside the circle by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const circle = (this.#circle =\n      this.svgFactory.createElement(\"svg:ellipse\"));\n    circle.setAttribute(\"cx\", width / 2);\n    circle.setAttribute(\"cy\", height / 2);\n    circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n    circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(circle);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the circle instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#circle;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n  #polyline = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n\n  render() {\n    this.container.classList.add(this.containerClassName);\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup. Only the polyline itself should trigger the\n    // popup, not the entire container.\n    const {\n      data: { rect, vertices, borderStyle, popupRef },\n      width,\n      height,\n    } = this;\n    if (!vertices) {\n      return this.container;\n    }\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // Convert the vertices array to a single points string that the SVG\n    // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n    // calculated from a bottom left origin, so transform the polyline\n    // coordinates to a top left origin for the SVG element.\n    let points = [];\n    for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n      const x = vertices[i] - rect[0];\n      const y = rect[3] - vertices[i + 1];\n      points.push(`${x},${y}`);\n    }\n    points = points.join(\" \");\n\n    const polyline = (this.#polyline = this.svgFactory.createElement(\n      this.svgElementName\n    ));\n    polyline.setAttribute(\"points\", points);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(polyline);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the polyline\n    // instead of to the entire container (which is the default).\n    if (!popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#polyline;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"caretAnnotation\");\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n  #polylinesGroupElement = null;\n\n  #polylines = [];\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n\n    this.containerClassName = \"inkAnnotation\";\n\n    // Use the polyline SVG element since it allows us to use coordinates\n    // directly and to draw both straight lines and curves.\n    this.svgElementName = \"svg:polyline\";\n\n    this.annotationEditorType =\n      this.data.it === \"InkHighlight\"\n        ? AnnotationEditorType.HIGHLIGHT\n        : AnnotationEditorType.INK;\n  }\n\n  #getTransform(rotation, rect) {\n    // PDF coordinates are calculated from a bottom left origin, so\n    // transform the polyline coordinates to a top left origin for the\n    // SVG element.\n    switch (rotation) {\n      case 90:\n        return {\n          transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n          width: rect[3] - rect[1],\n          height: rect[2] - rect[0],\n        };\n      case 180:\n        return {\n          transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n          width: rect[2] - rect[0],\n          height: rect[3] - rect[1],\n        };\n      case 270:\n        return {\n          transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n          width: rect[3] - rect[1],\n          height: rect[2] - rect[0],\n        };\n      default:\n        return {\n          transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n          width: rect[2] - rect[0],\n          height: rect[3] - rect[1],\n        };\n    }\n  }\n\n  render() {\n    this.container.classList.add(this.containerClassName);\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup.\n    const {\n      data: { rect, rotation, inkLists, borderStyle, popupRef },\n    } = this;\n    const { transform, width, height } = this.#getTransform(rotation, rect);\n\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n    const g = (this.#polylinesGroupElement =\n      this.svgFactory.createElement(\"svg:g\"));\n    svg.append(g);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    g.setAttribute(\"stroke-linecap\", \"round\");\n    g.setAttribute(\"stroke-linejoin\", \"round\");\n    g.setAttribute(\"stroke-miterlimit\", 10);\n    g.setAttribute(\"stroke\", \"transparent\");\n    g.setAttribute(\"fill\", \"transparent\");\n    g.setAttribute(\"transform\", transform);\n\n    for (let i = 0, ii = inkLists.length; i < ii; i++) {\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      this.#polylines.push(polyline);\n      polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n      g.append(polyline);\n    }\n\n    if (!popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    this.container.append(svg);\n    this._editOnDoubleClick();\n\n    return this.container;\n  }\n\n  updateEdited(params) {\n    super.updateEdited(params);\n    const { thickness, points, rect } = params;\n    const g = this.#polylinesGroupElement;\n    if (thickness >= 0) {\n      g.setAttribute(\"stroke-width\", thickness || 1);\n    }\n    if (points) {\n      for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n        this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n      }\n    }\n    if (rect) {\n      const { transform, width, height } = this.#getTransform(\n        this.data.rotation,\n        rect\n      );\n      const root = g.parentElement;\n      root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n      g.setAttribute(\"transform\", transform);\n    }\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#polylines;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n    this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n  }\n\n  render() {\n    const {\n      data: { overlaidText, popupRef },\n    } = this;\n    if (!popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"highlightAnnotation\");\n    this._editOnDoubleClick();\n\n    if (overlaidText) {\n      const mark = document.createElement(\"mark\");\n      mark.classList.add(\"overlaidText\");\n      mark.textContent = overlaidText;\n      this.container.append(mark);\n    }\n\n    return this.container;\n  }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    const {\n      data: { overlaidText, popupRef },\n    } = this;\n    if (!popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"underlineAnnotation\");\n\n    if (overlaidText) {\n      const underline = document.createElement(\"u\");\n      underline.classList.add(\"overlaidText\");\n      underline.textContent = overlaidText;\n      this.container.append(underline);\n    }\n\n    return this.container;\n  }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    const {\n      data: { overlaidText, popupRef },\n    } = this;\n    if (!popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"squigglyAnnotation\");\n\n    if (overlaidText) {\n      const underline = document.createElement(\"u\");\n      underline.classList.add(\"overlaidText\");\n      underline.textContent = overlaidText;\n      this.container.append(underline);\n    }\n\n    return this.container;\n  }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    const {\n      data: { overlaidText, popupRef },\n    } = this;\n    if (!popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"strikeoutAnnotation\");\n\n    if (overlaidText) {\n      const strikeout = document.createElement(\"s\");\n      strikeout.classList.add(\"overlaidText\");\n      strikeout.textContent = overlaidText;\n      this.container.append(strikeout);\n    }\n\n    return this.container;\n  }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n    this.annotationEditorType = AnnotationEditorType.STAMP;\n  }\n\n  render() {\n    this.container.classList.add(\"stampAnnotation\");\n    this.container.setAttribute(\"role\", \"img\");\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    }\n    this._editOnDoubleClick();\n\n    return this.container;\n  }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  #trigger = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n\n    const { file } = this.data;\n    this.filename = file.filename;\n    this.content = file.content;\n\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      ...file,\n    });\n  }\n\n  render() {\n    this.container.classList.add(\"fileAttachmentAnnotation\");\n\n    const { container, data } = this;\n    let trigger;\n    if (data.hasAppearance || data.fillAlpha === 0) {\n      trigger = document.createElement(\"div\");\n    } else {\n      // Unfortunately it seems that it's not clearly specified exactly what\n      // names are actually valid, since Table 184 contains:\n      //   Conforming readers shall provide predefined icon appearances for at\n      //   least the following standard names: GraphPushPin, PaperclipTag.\n      //   Additional names may be supported as well. Default value: PushPin.\n      trigger = document.createElement(\"img\");\n      trigger.src = `${this.imageResourcesPath}annotation-${\n        /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n      }.svg`;\n\n      if (data.fillAlpha && data.fillAlpha < 1) {\n        trigger.style = `filter: opacity(${Math.round(\n          data.fillAlpha * 100\n        )}%);`;\n\n        if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n          this.container.classList.add(\"hasFillAlpha\");\n        }\n      }\n    }\n    trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n    this.#trigger = trigger;\n\n    const { isMac } = FeatureTest.platform;\n    container.addEventListener(\"keydown\", evt => {\n      if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n        this.#download();\n      }\n    });\n\n    if (!data.popupRef && this.hasPopupData) {\n      this.hasOwnCommentButton = true;\n      this._createPopup();\n    } else {\n      trigger.classList.add(\"popupTriggerArea\");\n    }\n\n    container.append(trigger);\n    return container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#trigger;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n\n  /**\n   * Download the file attachment associated with this annotation.\n   */\n  #download() {\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\n  }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n *   The default value is `false`.\n * @property {Object<string, Array<Object>> | null} [fieldObjects]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {AnnotationEditorUIManager} [annotationEditorUIManager]\n * @property {StructTreeLayerBuilder} [structTreeLayer]\n * @property {CommentManager} [commentManager] - The comment manager instance.\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n  #accessibilityManager = null;\n\n  #annotationCanvasMap = null;\n\n  #annotationStorage = null;\n\n  #editableAnnotations = new Map();\n\n  #structTreeLayer = null;\n\n  #linkService = null;\n\n  #elements = [];\n\n  #hasAriaAttributesFromStructTree = false;\n\n  constructor({\n    div,\n    accessibilityManager,\n    annotationCanvasMap,\n    annotationEditorUIManager,\n    page,\n    viewport,\n    structTreeLayer,\n    commentManager,\n    linkService,\n    annotationStorage,\n  }) {\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationCanvasMap = annotationCanvasMap;\n    this.#structTreeLayer = structTreeLayer || null;\n    this.#linkService = linkService || null;\n    this.#annotationStorage = annotationStorage || new AnnotationStorage();\n    this.page = page;\n    this.viewport = viewport;\n    this.zIndex = 0;\n    this._annotationEditorUIManager = annotationEditorUIManager;\n    this._commentManager = commentManager || null;\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"showPopups\", {\n        value: async () => {\n          for (const show of this.popupShow) {\n            await show();\n          }\n        },\n      });\n      this.popupShow = [];\n    }\n  }\n\n  hasEditableAnnotations() {\n    return this.#editableAnnotations.size > 0;\n  }\n\n  /**\n   * Render a new annotation layer with all annotation elements.\n   *\n   * @param {AnnotationLayerParameters} params\n   * @memberof AnnotationLayer\n   */\n  async render(params) {\n    const { annotations } = params;\n    const layer = this.div;\n    setLayerDimensions(layer, this.viewport);\n\n    const popupToElements = new Map();\n    const popupAnnotations = [];\n    const elementParams = {\n      data: null,\n      layer,\n      linkService: this.#linkService,\n      downloadManager: params.downloadManager,\n      imageResourcesPath: params.imageResourcesPath || \"\",\n      renderForms: params.renderForms !== false,\n      svgFactory: new DOMSVGFactory(),\n      annotationStorage: this.#annotationStorage,\n      enableComment: params.enableComment === true,\n      enableScripting: params.enableScripting === true,\n      hasJSActions: params.hasJSActions,\n      fieldObjects: params.fieldObjects,\n      parent: this,\n      elements: null,\n    };\n\n    for (const data of annotations) {\n      if (data.noHTML) {\n        continue;\n      }\n      const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n      if (!isPopupAnnotation) {\n        if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n          continue; // Ignore empty annotations.\n        }\n      } else {\n        const elements = popupToElements.get(data.id);\n        if (!elements) {\n          // Ignore popup annotations without a corresponding annotation.\n          continue;\n        }\n        if (!this._commentManager) {\n          popupAnnotations.push(data);\n          continue;\n        }\n        elementParams.elements = elements;\n      }\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n\n      if (!element.isRenderable) {\n        continue;\n      }\n\n      if (!isPopupAnnotation) {\n        this.#elements.push(element);\n\n        if (data.popupRef) {\n          const elements = popupToElements.get(data.popupRef);\n          if (!elements) {\n            popupToElements.set(data.popupRef, [element]);\n          } else {\n            elements.push(element);\n          }\n        }\n      }\n\n      const rendered = element.render();\n      if (data.hidden) {\n        rendered.style.visibility = \"hidden\";\n      }\n\n      if (element._isEditable) {\n        this.#editableAnnotations.set(element.data.id, element);\n        this._annotationEditorUIManager?.renderAnnotationElement(element);\n      }\n    }\n\n    await this.#addElementsToDOM();\n\n    for (const data of popupAnnotations) {\n      const elements = (elementParams.elements = popupToElements.get(data.id));\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n      if (!element.isRenderable) {\n        continue;\n      }\n      const rendered = element.render();\n      element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n      if (data.hidden) {\n        rendered.style.visibility = \"hidden\";\n      }\n      elements.at(-1).container.after(rendered);\n    }\n\n    this.#setAnnotationCanvasMap();\n  }\n\n  async #addElementsToDOM() {\n    if (this.#elements.length === 0) {\n      return;\n    }\n    // Clear the existing annotations in order to make sure comment buttons\n    // don't have a parent any longer.\n    this.div.replaceChildren();\n\n    const promises = [];\n    if (!this.#hasAriaAttributesFromStructTree) {\n      this.#hasAriaAttributesFromStructTree = true;\n      for (const {\n        contentElement,\n        data: { id },\n      } of this.#elements) {\n        const annotationId = (contentElement.id = `${AnnotationPrefix}${id}`);\n        promises.push(\n          this.#structTreeLayer\n            ?.getAriaAttributes(annotationId)\n            .then(ariaAttributes => {\n              if (ariaAttributes) {\n                for (const [key, value] of ariaAttributes) {\n                  contentElement.setAttribute(key, value);\n                }\n              }\n            })\n        );\n      }\n    }\n    this.#elements.sort(\n      (\n        {\n          data: {\n            rect: [a0, a1, a2, a3],\n          },\n        },\n        {\n          data: {\n            rect: [b0, b1, b2, b3],\n          },\n        }\n      ) => {\n        // We are in page coordinates, which has the origin at the\n        // bottom left.\n        if (a0 === a2 && a1 === a3) {\n          return +1;\n        }\n\n        if (b0 === b2 && b1 === b3) {\n          return -1;\n        }\n\n        const top1 = a3;\n        const bot1 = a1;\n        const mid1 = (a1 + a3) / 2;\n\n        const top2 = b3;\n        const bot2 = b1;\n        const mid2 = (b1 + b3) / 2;\n\n        if (mid1 >= top2 && mid2 <= bot1) {\n          return -1;\n        }\n\n        if (mid2 >= top1 && mid1 <= bot2) {\n          return +1;\n        }\n\n        const centerX1 = (a0 + a2) / 2;\n        const centerX2 = (b0 + b2) / 2;\n\n        return centerX1 - centerX2;\n      }\n    );\n\n    const fragment = document.createDocumentFragment();\n    for (const element of this.#elements) {\n      fragment.append(element.container);\n      if (this._commentManager) {\n        (\n          element.extraPopupElement?.popup || element.popup\n        )?.renderCommentButton();\n      } else if (element.extraPopupElement) {\n        fragment.append(element.extraPopupElement.render());\n      }\n    }\n    this.div.append(fragment);\n    await Promise.all(promises);\n    if (this.#accessibilityManager) {\n      for (const element of this.#elements) {\n        this.#accessibilityManager.addPointerInTextLayer(\n          element.contentElement,\n          /* isRemovable = */ false\n        );\n      }\n    }\n  }\n\n  /**\n   * Add link annotations to the annotation layer.\n   *\n   * @param {Array<Object>} annotations\n   * @param {IPDFLinkService} linkService\n   * @memberof AnnotationLayer\n   */\n  async addLinkAnnotations(annotations) {\n    const elementParams = {\n      data: null,\n      layer: this.div,\n      linkService: this.#linkService,\n      svgFactory: new DOMSVGFactory(),\n      parent: this,\n    };\n    for (const data of annotations) {\n      data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n\n      if (!element.isRenderable) {\n        continue;\n      }\n      element.render();\n      element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n      this.#elements.push(element);\n    }\n    await this.#addElementsToDOM();\n  }\n\n  /**\n   * Update the annotation elements on existing annotation layer.\n   *\n   * @param {AnnotationLayerParameters} viewport\n   * @memberof AnnotationLayer\n   */\n  update({ viewport }) {\n    const layer = this.div;\n    this.viewport = viewport;\n    setLayerDimensions(layer, { rotation: viewport.rotation });\n\n    this.#setAnnotationCanvasMap();\n    layer.hidden = false;\n  }\n\n  #setAnnotationCanvasMap() {\n    if (!this.#annotationCanvasMap) {\n      return;\n    }\n    const layer = this.div;\n    for (const [id, canvas] of this.#annotationCanvasMap) {\n      const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n      if (!element) {\n        continue;\n      }\n\n      canvas.className = \"annotationContent\";\n      const { firstChild } = element;\n      if (!firstChild) {\n        element.append(canvas);\n      } else if (firstChild.nodeName === \"CANVAS\") {\n        firstChild.replaceWith(canvas);\n      } else if (!firstChild.classList.contains(\"annotationContent\")) {\n        firstChild.before(canvas);\n      } else {\n        firstChild.after(canvas);\n      }\n\n      const editableAnnotation = this.#editableAnnotations.get(id);\n      if (!editableAnnotation) {\n        continue;\n      }\n      if (editableAnnotation._hasNoCanvas) {\n        // The canvas wasn't available when the annotation was created.\n        this._annotationEditorUIManager?.setMissingCanvas(\n          id,\n          element.id,\n          canvas\n        );\n        editableAnnotation._hasNoCanvas = false;\n      } else {\n        editableAnnotation.canvas = canvas;\n      }\n    }\n    this.#annotationCanvasMap.clear();\n  }\n\n  getEditableAnnotations() {\n    return Array.from(this.#editableAnnotations.values());\n  }\n\n  getEditableAnnotation(id) {\n    return this.#editableAnnotations.get(id);\n  }\n\n  addFakeAnnotation(editor) {\n    const { div } = this;\n    const { id, rotation } = editor;\n    const element = new EditorAnnotationElement({\n      data: {\n        id,\n        rect: editor.getPDFRect(),\n        rotation,\n      },\n      editor,\n      layer: div,\n      parent: this,\n      enableComment: !!this._commentManager,\n      linkService: this.#linkService,\n      annotationStorage: this.#annotationStorage,\n    });\n    element.render();\n    element.contentElement.id = `${AnnotationPrefix}${id}`;\n    element.createOrUpdatePopup();\n    this.#elements.push(element);\n    return element;\n  }\n\n  removeAnnotation(id) {\n    const index = this.#elements.findIndex(el => el.data.id === id);\n    if (index < 0) {\n      return;\n    }\n    const [element] = this.#elements.splice(index, 1);\n    this.#accessibilityManager?.removePointerInTextLayer(\n      element.contentElement\n    );\n  }\n\n  updateFakeAnnotations(editors) {\n    if (editors.length === 0) {\n      return;\n    }\n    for (const editor of editors) {\n      editor.updateFakeAnnotationElement(this);\n    }\n    this.#addElementsToDOM();\n  }\n\n  togglePointerEvents(enabled = false) {\n    this.div.classList.toggle(\"disabled\", !enabled);\n  }\n\n  /**\n   * @private\n   */\n  static get _defaultBorderStyle() {\n    return shadow(\n      this,\n      \"_defaultBorderStyle\",\n      Object.freeze({\n        width: 1,\n        rawWidth: 1,\n        style: AnnotationBorderStyleType.SOLID,\n        dashArray: [3],\n        horizontalCornerRadius: 0,\n        verticalCornerRadius: 0,\n      })\n    );\n  }\n}\n\nexport {\n  AnnotationLayer,\n  FreeTextAnnotationElement,\n  HighlightAnnotationElement,\n  InkAnnotationElement,\n  StampAnnotationElement,\n};\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  assert,\n  LINE_FACTOR,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditorUIManager, KeyboardManager } from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { BasicColorPicker } from \"./color_picker.js\";\nimport { FreeTextAnnotationElement } from \"../annotation_layer.js\";\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n  #content = \"\";\n\n  #editorDivId = `${this.id}-editor`;\n\n  #editModeAC = null;\n\n  #fontSize;\n\n  _colorPicker = null;\n\n  static _freeTextDefaultContent = \"\";\n\n  static _internalPadding = 0;\n\n  static _defaultColor = null;\n\n  static _defaultFontSize = 10;\n\n  static get _keyboardManager() {\n    const proto = FreeTextEditor.prototype;\n\n    const arrowChecker = self => self.isEmpty();\n\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          // Commit the text in case the user use ctrl+s to save the document.\n          // The event must bubble in order to be caught by the viewer.\n          // See bug 1831574.\n          [\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"],\n          proto.commitOrRemove,\n          { bubbles: true },\n        ],\n        [\n          [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n          proto.commitOrRemove,\n        ],\n        [\n          [\"ArrowLeft\", \"mac+ArrowLeft\"],\n          proto._translateEmpty,\n          { args: [-small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          proto._translateEmpty,\n          { args: [-big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowRight\", \"mac+ArrowRight\"],\n          proto._translateEmpty,\n          { args: [small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          proto._translateEmpty,\n          { args: [big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowUp\", \"mac+ArrowUp\"],\n          proto._translateEmpty,\n          { args: [0, -small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n          proto._translateEmpty,\n          { args: [0, -big], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowDown\", \"mac+ArrowDown\"],\n          proto._translateEmpty,\n          { args: [0, small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n          proto._translateEmpty,\n          { args: [0, big], checker: arrowChecker },\n        ],\n      ])\n    );\n  }\n\n  static _type = \"freetext\";\n\n  static _editorType = AnnotationEditorType.FREETEXT;\n\n  constructor(params) {\n    super({ ...params, name: \"freeTextEditor\" });\n    this.color =\n      params.color ||\n      FreeTextEditor._defaultColor ||\n      AnnotationEditor._defaultLineColor;\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n    if (!this.annotationElementId) {\n      this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n    }\n    this.canAddComment = false;\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    const style = getComputedStyle(document.documentElement);\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      const lineHeight = parseFloat(\n        style.getPropertyValue(\"--freetext-line-height\")\n      );\n      assert(\n        lineHeight === LINE_FACTOR,\n        \"Update the CSS variable to agree with the constant.\"\n      );\n    }\n\n    this._internalPadding = parseFloat(\n      style.getPropertyValue(\"--freetext-padding\")\n    );\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        FreeTextEditor._defaultFontSize = value;\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        FreeTextEditor._defaultColor = value;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        this.#updateFontSize(value);\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        this.#updateColor(value);\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  static get defaultPropertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.FREETEXT_SIZE,\n        FreeTextEditor._defaultFontSize,\n      ],\n      [\n        AnnotationEditorParamsType.FREETEXT_COLOR,\n        FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n      [AnnotationEditorParamsType.FREETEXT_COLOR, this.color],\n    ];\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    this._colorPicker ||= new BasicColorPicker(this);\n    return [[\"colorPicker\", this._colorPicker]];\n  }\n\n  get colorType() {\n    return AnnotationEditorParamsType.FREETEXT_COLOR;\n  }\n\n  /**\n   * Update the font size and make this action as undoable.\n   * @param {number} fontSize\n   */\n  #updateFontSize(fontSize) {\n    const setFontsize = size => {\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n      this.translate(0, -(size - this.#fontSize) * this.parentScale);\n      this.#fontSize = size;\n      this.#setEditorDimensions();\n    };\n    const savedFontsize = this.#fontSize;\n    this.addCommands({\n      cmd: setFontsize.bind(this, fontSize),\n      undo: setFontsize.bind(this, savedFontsize),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  onUpdatedColor() {\n    this.editorDiv.style.color = this.color;\n    this._colorPicker?.update(this.color);\n    super.onUpdatedColor();\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const setColor = col => {\n      this.color = col;\n      this.onUpdatedColor();\n    };\n    const savedColor = this.color;\n    this.addCommands({\n      cmd: setColor.bind(this, color),\n      undo: setColor.bind(this, savedColor),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Helper to translate the editor with the keyboard when it's empty.\n   * @param {number} x in page units.\n   * @param {number} y in page units.\n   */\n  _translateEmpty(x, y) {\n    this._uiManager.translateSelectedEditors(x, y, /* noCommit = */ true);\n  }\n\n  /** @inheritdoc */\n  getInitialTranslation() {\n    // The start of the base line is where the user clicked.\n    const scale = this.parentScale;\n    return [\n      -FreeTextEditor._internalPadding * scale,\n      -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\n    ];\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  enableEditMode() {\n    if (!super.enableEditMode()) {\n      return false;\n    }\n\n    this.overlayDiv.classList.remove(\"enabled\");\n    this.editorDiv.contentEditable = true;\n    this._isDraggable = false;\n    this.div.removeAttribute(\"aria-activedescendant\");\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        !this.#editModeAC,\n        \"No `this.#editModeAC` AbortController should exist.\"\n      );\n    }\n    this.#editModeAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#editModeAC);\n\n    this.editorDiv.addEventListener(\n      \"keydown\",\n      this.editorDivKeydown.bind(this),\n      { signal }\n    );\n    this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n      signal,\n    });\n    this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n      signal,\n    });\n    this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n      signal,\n    });\n    this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n      signal,\n    });\n\n    return true;\n  }\n\n  /** @inheritdoc */\n  disableEditMode() {\n    if (!super.disableEditMode()) {\n      return false;\n    }\n\n    this.overlayDiv.classList.add(\"enabled\");\n    this.editorDiv.contentEditable = false;\n    this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n    this._isDraggable = true;\n\n    this.#editModeAC?.abort();\n    this.#editModeAC = null;\n\n    // On Chrome, the focus is given to <body> when contentEditable is set to\n    // false, hence we focus the div.\n    this.div.focus({\n      preventScroll: true /* See issue #15744 */,\n    });\n\n    // In case the blur callback hasn't been called.\n    this.isEditing = false;\n    this.parent.div.classList.add(\"freetextEditing\");\n\n    return true;\n  }\n\n  /** @inheritdoc */\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    super.focusin(event);\n    if (event.target !== this.editorDiv) {\n      this.editorDiv.focus();\n    }\n  }\n\n  /** @inheritdoc */\n  onceAdded(focus) {\n    if (this.width) {\n      // The editor was created in using ctrl+c.\n      return;\n    }\n    this.enableEditMode();\n    if (focus) {\n      this.editorDiv.focus();\n    }\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    }\n    this._initialOptions = null;\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n  }\n\n  /** @inheritdoc */\n  remove() {\n    this.isEditing = false;\n    if (this.parent) {\n      this.parent.setEditingState(true);\n      this.parent.div.classList.add(\"freetextEditing\");\n    }\n    super.remove();\n  }\n\n  /**\n   * Extract the text from this editor.\n   * @returns {string}\n   */\n  #extractText() {\n    // We don't use innerText because there are some bugs with line breaks.\n    const buffer = [];\n    this.editorDiv.normalize();\n    let prevChild = null;\n    for (const child of this.editorDiv.childNodes) {\n      if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n        // It can happen if the user uses shift+enter to add a new line.\n        // If we don't skip it, we'll end up with an extra line (one for the\n        // text and one for the br element).\n        continue;\n      }\n      buffer.push(FreeTextEditor.#getNodeContent(child));\n      prevChild = child;\n    }\n    return buffer.join(\"\\n\");\n  }\n\n  #setEditorDimensions() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n\n    let rect;\n    if (this.isAttachedToDOM) {\n      rect = this.div.getBoundingClientRect();\n    } else {\n      // This editor isn't on screen but we need to get its dimensions, so\n      // we just insert it in the DOM, get its bounding box and then remove it.\n      const { currentLayer, div } = this;\n      const savedDisplay = div.style.display;\n      const savedVisibility = div.classList.contains(\"hidden\");\n      div.classList.remove(\"hidden\");\n      div.style.display = \"hidden\";\n      currentLayer.div.append(this.div);\n      rect = div.getBoundingClientRect();\n      div.remove();\n      div.style.display = savedDisplay;\n      div.classList.toggle(\"hidden\", savedVisibility);\n    }\n\n    // The dimensions are relative to the rotation of the page, hence we need to\n    // take that into account (see issue #16636).\n    if (this.rotation % 180 === this.parentRotation % 180) {\n      this.width = rect.width / parentWidth;\n      this.height = rect.height / parentHeight;\n    } else {\n      this.width = rect.height / parentWidth;\n      this.height = rect.width / parentHeight;\n    }\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Commit the content we have in this editor.\n   * @returns {undefined}\n   */\n  commit() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n\n    super.commit();\n    this.disableEditMode();\n    const savedText = this.#content;\n    const newText = (this.#content = this.#extractText().trimEnd());\n    if (savedText === newText) {\n      return;\n    }\n\n    const setText = text => {\n      this.#content = text;\n      if (!text) {\n        this.remove();\n        return;\n      }\n      this.#setContent();\n      this._uiManager.rebuild(this);\n      this.#setEditorDimensions();\n    };\n    this.addCommands({\n      cmd: () => {\n        setText(newText);\n      },\n      undo: () => {\n        setText(savedText);\n      },\n      mustExec: false,\n    });\n    this.#setEditorDimensions();\n  }\n\n  /** @inheritdoc */\n  shouldGetKeyboardEvents() {\n    return this.isInEditMode();\n  }\n\n  /** @inheritdoc */\n  enterInEditMode() {\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n\n  /** @inheritdoc */\n  keydown(event) {\n    if (event.target === this.div && event.key === \"Enter\") {\n      this.enterInEditMode();\n      // Avoid to add an unwanted new line.\n      event.preventDefault();\n    }\n  }\n\n  editorDivKeydown(event) {\n    FreeTextEditor._keyboardManager.exec(this, event);\n  }\n\n  editorDivFocus(event) {\n    this.isEditing = true;\n  }\n\n  editorDivBlur(event) {\n    this.isEditing = false;\n  }\n\n  editorDivInput(event) {\n    this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"comment\");\n    this.editorDiv.removeAttribute(\"aria-multiline\");\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"textbox\");\n    this.editorDiv.setAttribute(\"aria-multiline\", true);\n  }\n\n  /** @inheritdoc */\n  get canChangeContent() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this._isCopy || this.annotationElementId) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n    this.editorDiv = document.createElement(\"div\");\n    this.editorDiv.className = \"internal\";\n\n    this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n    this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n    this.enableEditing();\n\n    this.editorDiv.contentEditable = true;\n\n    const { style } = this.editorDiv;\n    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n    style.color = this.color;\n\n    this.div.append(this.editorDiv);\n\n    this.overlayDiv = document.createElement(\"div\");\n    this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n    this.div.append(this.overlayDiv);\n\n    if (this._isCopy || this.annotationElementId) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      if (this.annotationElementId) {\n        // This stuff is hard to test: if something is changed here, please\n        // test with the following PDF file:\n        //  - freetexts.pdf\n        //  - rotated_freetexts.pdf\n        // Only small variations between the original annotation and its editor\n        // are allowed.\n\n        // position is the position of the first glyph in the annotation\n        // and it's relative to its container.\n        const { position } = this._initialData;\n        let [tx, ty] = this.getInitialTranslation();\n        [tx, ty] = this.pageTranslationToScreen(tx, ty);\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        const [pageX, pageY] = this.pageTranslation;\n        let posX, posY;\n        switch (this.rotation) {\n          case 0:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n            break;\n          case 90:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [ty, -tx];\n            break;\n          case 180:\n            posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [-tx, -ty];\n            break;\n          case 270:\n            posX =\n              baseX +\n              (position[0] - pageX - this.height * pageHeight) / pageWidth;\n            posY =\n              baseY +\n              (position[1] - pageY - this.width * pageWidth) / pageHeight;\n            [tx, ty] = [-ty, tx];\n            break;\n        }\n        this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n      } else {\n        this._moveAfterPaste(baseX, baseY);\n      }\n\n      this.#setContent();\n      this._isDraggable = true;\n      this.editorDiv.contentEditable = false;\n    } else {\n      this._isDraggable = false;\n      this.editorDiv.contentEditable = true;\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      this.div.setAttribute(\"annotation-id\", this.annotationElementId);\n    }\n\n    return this.div;\n  }\n\n  static #getNodeContent(node) {\n    return (\n      node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText\n    ).replaceAll(EOL_PATTERN, \"\");\n  }\n\n  editorDivPaste(event) {\n    const clipboardData = event.clipboardData || window.clipboardData;\n    const { types } = clipboardData;\n    if (types.length === 1 && types[0] === \"text/plain\") {\n      return;\n    }\n\n    event.preventDefault();\n    const paste = FreeTextEditor.#deserializeContent(\n      clipboardData.getData(\"text\") || \"\"\n    ).replaceAll(EOL_PATTERN, \"\\n\");\n    if (!paste) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (!selection.rangeCount) {\n      return;\n    }\n    this.editorDiv.normalize();\n    selection.deleteFromDocument();\n    const range = selection.getRangeAt(0);\n    if (!paste.includes(\"\\n\")) {\n      range.insertNode(document.createTextNode(paste));\n      this.editorDiv.normalize();\n      selection.collapseToStart();\n      return;\n    }\n\n    // Collect the text before and after the caret.\n    const { startContainer, startOffset } = range;\n    const bufferBefore = [];\n    const bufferAfter = [];\n    if (startContainer.nodeType === Node.TEXT_NODE) {\n      const parent = startContainer.parentElement;\n      bufferAfter.push(\n        startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\")\n      );\n      if (parent !== this.editorDiv) {\n        let buffer = bufferBefore;\n        for (const child of this.editorDiv.childNodes) {\n          if (child === parent) {\n            buffer = bufferAfter;\n            continue;\n          }\n          buffer.push(FreeTextEditor.#getNodeContent(child));\n        }\n      }\n      bufferBefore.push(\n        startContainer.nodeValue\n          .slice(0, startOffset)\n          .replaceAll(EOL_PATTERN, \"\")\n      );\n    } else if (startContainer === this.editorDiv) {\n      let buffer = bufferBefore;\n      let i = 0;\n      for (const child of this.editorDiv.childNodes) {\n        if (i++ === startOffset) {\n          buffer = bufferAfter;\n        }\n        buffer.push(FreeTextEditor.#getNodeContent(child));\n      }\n    }\n    this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n    this.#setContent();\n\n    // Set the caret at the right position.\n    const newRange = new Range();\n    let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n    for (const { firstChild } of this.editorDiv.childNodes) {\n      // Each child is either a div with a text node or a br element.\n      if (firstChild.nodeType === Node.TEXT_NODE) {\n        const length = firstChild.nodeValue.length;\n        if (beforeLength <= length) {\n          newRange.setStart(firstChild, beforeLength);\n          newRange.setEnd(firstChild, beforeLength);\n          break;\n        }\n        beforeLength -= length;\n      }\n    }\n    selection.removeAllRanges();\n    selection.addRange(newRange);\n  }\n\n  #setContent() {\n    this.editorDiv.replaceChildren();\n    if (!this.#content) {\n      return;\n    }\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(\n        line ? document.createTextNode(line) : document.createElement(\"br\")\n      );\n      this.editorDiv.append(div);\n    }\n  }\n\n  #serializeContent() {\n    return this.#content.replaceAll(\"\\xa0\", \" \");\n  }\n\n  static #deserializeContent(content) {\n    return content.replaceAll(\" \", \"\\xa0\");\n  }\n\n  /** @inheritdoc */\n  get contentDiv() {\n    return this.editorDiv;\n  }\n\n  /** @inheritdoc */\n  getPDFRect() {\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    return this.getRect(padding, padding);\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof FreeTextAnnotationElement) {\n      const {\n        data: {\n          defaultAppearanceData: { fontSize, fontColor },\n          rect,\n          rotation,\n          id,\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        textContent,\n        textPosition,\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      // textContent is supposed to be an array of strings containing each line\n      // of text. However, it can be null or empty.\n      if (!textContent || textContent.length === 0) {\n        // Empty annotation.\n        return null;\n      }\n      initialData = data = {\n        annotationType: AnnotationEditorType.FREETEXT,\n        color: Array.from(fontColor),\n        fontSize,\n        value: textContent.join(\"\\n\"),\n        position: textPosition,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        popupRef,\n        comment: contentsObj?.str || null,\n        richText,\n        creationDate,\n        modificationDate,\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.#fontSize = data.fontSize;\n    editor.color = Util.makeHexColor(...data.color);\n    editor.#content = FreeTextEditor.#deserializeContent(data.value);\n    editor._initialData = initialData;\n    if (data.comment) {\n      editor.setCommentData(data);\n    }\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n\n    const color = AnnotationEditor._colorManager.convert(\n      this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color\n    );\n    const serialized = Object.assign(super.serialize(isForCopying), {\n      color,\n      fontSize: this.#fontSize,\n      value: this.#serializeContent(),\n    });\n    this.addComment(serialized);\n\n    if (isForCopying) {\n      // Don't add the id when copying because the pasted editor mustn't be\n      // linked to an existing annotation.\n      serialized.isCopy = true;\n      return serialized;\n    }\n\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n\n    serialized.id = this.annotationElementId;\n\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const { value, fontSize, color, pageIndex } = this._initialData;\n\n    return (\n      this.hasEditedComment ||\n      this._hasBeenMoved ||\n      serialized.value !== value ||\n      serialized.fontSize !== fontSize ||\n      serialized.color.some((c, i) => c !== color[i]) ||\n      serialized.pageIndex !== pageIndex\n    );\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    const content = super.renderAnnotationElement(annotation);\n    if (!content) {\n      return null;\n    }\n    const { style } = content;\n    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n    style.color = this.color;\n\n    content.replaceChildren();\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(\n        line ? document.createTextNode(line) : document.createElement(\"br\")\n      );\n      content.append(div);\n    }\n\n    annotation.updateEdited({\n      rect: this.getPDFRect(),\n      popup:\n        this._uiManager.hasCommentManager() || this.hasEditedComment\n          ? this.comment\n          : { text: this.#content },\n    });\n\n    return content;\n  }\n\n  resetAnnotationElement(annotation) {\n    super.resetAnnotationElement(annotation);\n    annotation.resetEdited();\n  }\n}\n\nexport { FreeTextEditor };\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../../../shared/util.js\";\n\nclass Outline {\n  static PRECISION = 1e-4;\n\n  /**\n   * @returns {string} The SVG path of the outline.\n   */\n  toSVGPath() {\n    unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n  }\n\n  /**\n   * @type {Object|null} The bounding box of the outline.\n   */\n  // eslint-disable-next-line getter-return\n  get box() {\n    unreachable(\"Abstract getter `box` must be implemented.\");\n  }\n\n  serialize(_bbox, _rotation) {\n    unreachable(\"Abstract method `serialize` must be implemented.\");\n  }\n\n  static _rescale(src, tx, ty, sx, sy, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i] * sx;\n      dest[i + 1] = ty + src[i + 1] * sy;\n    }\n    return dest;\n  }\n\n  static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i + 1] * sx;\n      dest[i + 1] = ty + src[i] * sy;\n    }\n    return dest;\n  }\n\n  static _translate(src, tx, ty, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i];\n      dest[i + 1] = ty + src[i + 1];\n    }\n    return dest;\n  }\n\n  static svgRound(x) {\n    // 0.1234 will be 1234 and this way we economize 2 bytes per number.\n    // Of course, it makes sense only when the viewBox is [0 0 10000 10000].\n    // And it helps to avoid bugs like:\n    //  https://bugzilla.mozilla.org/show_bug.cgi?id=1929340\n    return Math.round(x * 10000);\n  }\n\n  static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n    switch (rotation) {\n      case 90:\n        return [1 - y / parentWidth, x / parentHeight];\n      case 180:\n        return [1 - x / parentWidth, 1 - y / parentHeight];\n      case 270:\n        return [y / parentWidth, 1 - x / parentHeight];\n      default:\n        return [x / parentWidth, y / parentHeight];\n    }\n  }\n\n  static _normalizePagePoint(x, y, rotation) {\n    switch (rotation) {\n      case 90:\n        return [1 - y, x];\n      case 180:\n        return [1 - x, 1 - y];\n      case 270:\n        return [y, 1 - x];\n      default:\n        return [x, y];\n    }\n  }\n\n  static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n    return [\n      (x1 + 5 * x2) / 6,\n      (y1 + 5 * y2) / 6,\n      (5 * x2 + x3) / 6,\n      (5 * y2 + y3) / 6,\n      (x2 + x3) / 2,\n      (y2 + y3) / 2,\n    ];\n  }\n}\n\nexport { Outline };\n", "/* Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Outline } from \"./outline.js\";\nimport { Util } from \"../../../shared/util.js\";\n\nclass FreeDrawOutliner {\n  #box;\n\n  #bottom = [];\n\n  #innerMargin;\n\n  #isLTR;\n\n  #top = [];\n\n  // The first 6 elements are the last 3 points of the top part of the outline.\n  // The next 6 elements are the last 3 points of the line.\n  // The next 6 elements are the last 3 points of the bottom part of the\n  // outline.\n  // We track the last 3 points in order to be able to:\n  //  - compute the normal of the line,\n  //  - compute the control points of the quadratic Bézier curve.\n  #last = new Float32Array(18);\n\n  #lastX;\n\n  #lastY;\n\n  #min;\n\n  #min_dist;\n\n  #scaleFactor;\n\n  #thickness;\n\n  #points = [];\n\n  static #MIN_DIST = 8;\n\n  static #MIN_DIFF = 2;\n\n  static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n\n  constructor({ x, y }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    this.#box = box;\n    this.#thickness = thickness * scaleFactor;\n    this.#isLTR = isLTR;\n    this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n    this.#innerMargin = innerMargin;\n    this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n    this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n    this.#scaleFactor = scaleFactor;\n    this.#points.push(x, y);\n  }\n\n  isEmpty() {\n    // When we add a second point then this.#last.slice(6) will be something\n    // like [NaN, NaN, firstX, firstY, secondX, secondY,...] so having a NaN\n    // at index 8 means that we've only one point.\n    return isNaN(this.#last[8]);\n  }\n\n  #getLastCoords() {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [x, y, width, height] = this.#box;\n\n    return [\n      (this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width,\n      (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height,\n      (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width,\n      (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height,\n    ];\n  }\n\n  add({ x, y }) {\n    this.#lastX = x;\n    this.#lastY = y;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(diffX, diffY);\n    if (d < this.#min) {\n      // The idea is to avoid garbage points around the last point.\n      // When the points are too close, it just leads to bad normal vectors and\n      // control points.\n      return false;\n    }\n    const diffD = d - this.#min_dist;\n    const K = diffD / d;\n    const shiftX = K * diffX;\n    const shiftY = K * diffY;\n\n    // We update the last 3 points of the line.\n    let x0 = x1;\n    let y0 = y1;\n    x1 = x2;\n    y1 = y2;\n    x2 += shiftX;\n    y2 += shiftY;\n\n    // We keep track of the points in order to be able to compute the focus\n    // outline.\n    this.#points?.push(x, y);\n\n    // Create the normal unit vector.\n    // |(shiftX, shiftY)| = |K| * |(diffX, diffY)| = |K| * d = diffD.\n    const nX = -shiftY / diffD;\n    const nY = shiftX / diffD;\n    const thX = nX * this.#thickness;\n    const thY = nY * this.#thickness;\n    this.#last.set(this.#last.subarray(2, 8), 0);\n    this.#last.set([x2 + thX, y2 + thY], 4);\n    this.#last.set(this.#last.subarray(14, 18), 12);\n    this.#last.set([x2 - thX, y2 - thY], 16);\n\n    if (isNaN(this.#last[6])) {\n      if (this.#top.length === 0) {\n        this.#last.set([x1 + thX, y1 + thY], 2);\n        this.#top.push(\n          NaN,\n          NaN,\n          NaN,\n          NaN,\n          (x1 + thX - layerX) / layerWidth,\n          (y1 + thY - layerY) / layerHeight\n        );\n        this.#last.set([x1 - thX, y1 - thY], 14);\n        this.#bottom.push(\n          NaN,\n          NaN,\n          NaN,\n          NaN,\n          (x1 - thX - layerX) / layerWidth,\n          (y1 - thY - layerY) / layerHeight\n        );\n      }\n      this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n      return !this.isEmpty();\n    }\n\n    this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n\n    const angle = Math.abs(\n      Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX)\n    );\n    if (angle < Math.PI / 2) {\n      // In order to avoid some possible artifacts, we're going to use the a\n      // straight line instead of a quadratic Bézier curve.\n      [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n      this.#top.push(\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        ((x1 + x2) / 2 - layerX) / layerWidth,\n        ((y1 + y2) / 2 - layerY) / layerHeight\n      );\n      [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n      this.#bottom.push(\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        ((x0 + x1) / 2 - layerX) / layerWidth,\n        ((y0 + y1) / 2 - layerY) / layerHeight\n      );\n      return true;\n    }\n\n    // Control points and the final point for the quadratic Bézier curve.\n    [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n    this.#top.push(\n      ((x0 + 5 * x1) / 6 - layerX) / layerWidth,\n      ((y0 + 5 * y1) / 6 - layerY) / layerHeight,\n      ((5 * x1 + x2) / 6 - layerX) / layerWidth,\n      ((5 * y1 + y2) / 6 - layerY) / layerHeight,\n      ((x1 + x2) / 2 - layerX) / layerWidth,\n      ((y1 + y2) / 2 - layerY) / layerHeight\n    );\n    [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n    this.#bottom.push(\n      ((x0 + 5 * x1) / 6 - layerX) / layerWidth,\n      ((y0 + 5 * y1) / 6 - layerY) / layerHeight,\n      ((5 * x1 + x2) / 6 - layerX) / layerWidth,\n      ((5 * y1 + y2) / 6 - layerY) / layerHeight,\n      ((x1 + x2) / 2 - layerX) / layerWidth,\n      ((y1 + y2) / 2 - layerY) / layerHeight\n    );\n    return true;\n  }\n\n  toSVGPath() {\n    if (this.isEmpty()) {\n      // We've only one point.\n      return \"\";\n    }\n    const top = this.#top;\n    const bottom = this.#bottom;\n\n    if (isNaN(this.#last[6]) && !this.isEmpty()) {\n      // We've only two points.\n      return this.#toSVGPathTwoPoints();\n    }\n\n    const buffer = [];\n    buffer.push(`M${top[4]} ${top[5]}`);\n    for (let i = 6; i < top.length; i += 6) {\n      if (isNaN(top[i])) {\n        buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n      } else {\n        buffer.push(\n          `C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${\n            top[i + 5]\n          }`\n        );\n      }\n    }\n\n    this.#toSVGPathEnd(buffer);\n\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      if (isNaN(bottom[i])) {\n        buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n      } else {\n        buffer.push(\n          `C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${\n            bottom[i + 4]\n          } ${bottom[i + 5]}`\n        );\n      }\n    }\n\n    this.#toSVGPathStart(buffer);\n\n    return buffer.join(\" \");\n  }\n\n  #toSVGPathTwoPoints() {\n    const [x, y, width, height] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n      this.#getLastCoords();\n\n    return `M${(this.#last[2] - x) / width} ${\n      (this.#last[3] - y) / height\n    } L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\n      (this.#last[16] - x) / width\n    } ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${\n      (this.#last[15] - y) / height\n    } Z`;\n  }\n\n  #toSVGPathStart(buffer) {\n    const bottom = this.#bottom;\n    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n  }\n\n  #toSVGPathEnd(buffer) {\n    const [x, y, width, height] = this.#box;\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n      this.#getLastCoords();\n\n    buffer.push(\n      `L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\n        (lastBottom[0] - x) / width\n      } ${(lastBottom[1] - y) / height}`\n    );\n  }\n\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    return new FreeDrawOutline(\n      outline,\n      points,\n      box,\n      scaleFactor,\n      innerMargin,\n      isLTR\n    );\n  }\n\n  getOutlines() {\n    const top = this.#top;\n    const bottom = this.#bottom;\n    const last = this.#last;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n\n    const points = new Float32Array((this.#points?.length ?? 0) + 2);\n    for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n      points[i] = (this.#points[i] - layerX) / layerWidth;\n      points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n    }\n    points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n    points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n\n    if (isNaN(last[6]) && !this.isEmpty()) {\n      // We've only two points.\n      return this.#getOutlineTwoPoints(points);\n    }\n\n    const outline = new Float32Array(\n      this.#top.length + 24 + this.#bottom.length\n    );\n    let N = top.length;\n    for (let i = 0; i < N; i += 2) {\n      if (isNaN(top[i])) {\n        outline[i] = outline[i + 1] = NaN;\n        continue;\n      }\n      outline[i] = top[i];\n      outline[i + 1] = top[i + 1];\n    }\n\n    N = this.#getOutlineEnd(outline, N);\n\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      for (let j = 0; j < 6; j += 2) {\n        if (isNaN(bottom[i + j])) {\n          outline[N] = outline[N + 1] = NaN;\n          N += 2;\n          continue;\n        }\n        outline[N] = bottom[i + j];\n        outline[N + 1] = bottom[i + j + 1];\n        N += 2;\n      }\n    }\n\n    this.#getOutlineStart(outline, N);\n\n    return this.newFreeDrawOutline(\n      outline,\n      points,\n      this.#box,\n      this.#scaleFactor,\n      this.#innerMargin,\n      this.#isLTR\n    );\n  }\n\n  #getOutlineTwoPoints(points) {\n    const last = this.#last;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n      this.#getLastCoords();\n    const outline = new Float32Array(36);\n    outline.set(\n      [\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (last[2] - layerX) / layerWidth,\n        (last[3] - layerY) / layerHeight,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (last[4] - layerX) / layerWidth,\n        (last[5] - layerY) / layerHeight,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        lastTopX,\n        lastTopY,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        lastBottomX,\n        lastBottomY,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (last[16] - layerX) / layerWidth,\n        (last[17] - layerY) / layerHeight,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (last[14] - layerX) / layerWidth,\n        (last[15] - layerY) / layerHeight,\n      ],\n      0\n    );\n    return this.newFreeDrawOutline(\n      outline,\n      points,\n      this.#box,\n      this.#scaleFactor,\n      this.#innerMargin,\n      this.#isLTR\n    );\n  }\n\n  #getOutlineStart(outline, pos) {\n    const bottom = this.#bottom;\n    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n    return (pos += 6);\n  }\n\n  #getOutlineEnd(outline, pos) {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n      this.#getLastCoords();\n    outline.set(\n      [\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (lastTop[0] - layerX) / layerWidth,\n        (lastTop[1] - layerY) / layerHeight,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        lastTopX,\n        lastTopY,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        lastBottomX,\n        lastBottomY,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (lastBottom[0] - layerX) / layerWidth,\n        (lastBottom[1] - layerY) / layerHeight,\n      ],\n      pos\n    );\n    return (pos += 24);\n  }\n}\n\nclass FreeDrawOutline extends Outline {\n  #box;\n\n  #bbox = new Float32Array(4);\n\n  #innerMargin;\n\n  #isLTR;\n\n  #points;\n\n  #scaleFactor;\n\n  #outline;\n\n  constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    super();\n    this.#outline = outline;\n    this.#points = points;\n    this.#box = box;\n    this.#scaleFactor = scaleFactor;\n    this.#innerMargin = innerMargin;\n    this.#isLTR = isLTR;\n    this.firstPoint = [NaN, NaN];\n    this.lastPoint = [NaN, NaN];\n    this.#computeMinMax(isLTR);\n\n    const [x, y, width, height] = this.#bbox;\n    for (let i = 0, ii = outline.length; i < ii; i += 2) {\n      outline[i] = (outline[i] - x) / width;\n      outline[i + 1] = (outline[i + 1] - y) / height;\n    }\n    for (let i = 0, ii = points.length; i < ii; i += 2) {\n      points[i] = (points[i] - x) / width;\n      points[i + 1] = (points[i + 1] - y) / height;\n    }\n  }\n\n  toSVGPath() {\n    const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n    for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n      if (isNaN(this.#outline[i])) {\n        buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n        continue;\n      }\n      buffer.push(\n        `C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${\n          this.#outline[i + 3]\n        } ${this.#outline[i + 4]} ${this.#outline[i + 5]}`\n      );\n    }\n    buffer.push(\"Z\");\n    return buffer.join(\" \");\n  }\n\n  serialize([blX, blY, trX, trY], rotation) {\n    const width = trX - blX;\n    const height = trY - blY;\n    let outline;\n    let points;\n    switch (rotation) {\n      case 0:\n        outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n        points = Outline._rescale(this.#points, blX, trY, width, -height);\n        break;\n      case 90:\n        outline = Outline._rescaleAndSwap(\n          this.#outline,\n          blX,\n          blY,\n          width,\n          height\n        );\n        points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n        break;\n      case 180:\n        outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n        points = Outline._rescale(this.#points, trX, blY, -width, height);\n        break;\n      case 270:\n        outline = Outline._rescaleAndSwap(\n          this.#outline,\n          trX,\n          trY,\n          -width,\n          -height\n        );\n        points = Outline._rescaleAndSwap(\n          this.#points,\n          trX,\n          trY,\n          -width,\n          -height\n        );\n        break;\n    }\n    return { outline: Array.from(outline), points: [Array.from(points)] };\n  }\n\n  #computeMinMax(isLTR) {\n    const outline = this.#outline;\n    let lastX = outline[4];\n    let lastY = outline[5];\n    const minMax = [lastX, lastY, lastX, lastY];\n    let firstPointX = lastX;\n    let firstPointY = lastY;\n    let lastPointX = lastX;\n    let lastPointY = lastY;\n    const ltrCallback = isLTR ? Math.max : Math.min;\n    const bezierBbox = new Float32Array(4);\n\n    for (let i = 6, ii = outline.length; i < ii; i += 6) {\n      const x = outline[i + 4],\n        y = outline[i + 5];\n\n      if (isNaN(outline[i])) {\n        Util.pointBoundingBox(x, y, minMax);\n\n        if (firstPointY > y) {\n          firstPointX = x;\n          firstPointY = y;\n        } else if (firstPointY === y) {\n          firstPointX = ltrCallback(firstPointX, x);\n        }\n        if (lastPointY < y) {\n          lastPointX = x;\n          lastPointY = y;\n        } else if (lastPointY === y) {\n          lastPointX = ltrCallback(lastPointX, x);\n        }\n      } else {\n        bezierBbox[0] = bezierBbox[1] = Infinity;\n        bezierBbox[2] = bezierBbox[3] = -Infinity;\n        Util.bezierBoundingBox(\n          lastX,\n          lastY,\n          ...outline.slice(i, i + 6),\n          bezierBbox\n        );\n\n        Util.rectBoundingBox(\n          bezierBbox[0],\n          bezierBbox[1],\n          bezierBbox[2],\n          bezierBbox[3],\n          minMax\n        );\n\n        if (firstPointY > bezierBbox[1]) {\n          firstPointX = bezierBbox[0];\n          firstPointY = bezierBbox[1];\n        } else if (firstPointY === bezierBbox[1]) {\n          firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n        }\n        if (lastPointY < bezierBbox[3]) {\n          lastPointX = bezierBbox[2];\n          lastPointY = bezierBbox[3];\n        } else if (lastPointY === bezierBbox[3]) {\n          lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n        }\n      }\n      lastX = x;\n      lastY = y;\n    }\n\n    const bbox = this.#bbox;\n    bbox[0] = minMax[0] - this.#innerMargin;\n    bbox[1] = minMax[1] - this.#innerMargin;\n    bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n    bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n    this.firstPoint = [firstPointX, firstPointY];\n    this.lastPoint = [lastPointX, lastPointY];\n  }\n\n  get box() {\n    return this.#bbox;\n  }\n\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    return new FreeDrawOutliner(\n      point,\n      box,\n      scaleFactor,\n      thickness,\n      isLTR,\n      innerMargin\n    );\n  }\n\n  getNewOutline(thickness, innerMargin) {\n    // Build the outline of the highlight to use as the focus outline.\n    const [x, y, width, height] = this.#bbox;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const sx = width * layerWidth;\n    const sy = height * layerHeight;\n    const tx = x * layerWidth + layerX;\n    const ty = y * layerHeight + layerY;\n    const outliner = this.newOutliner(\n      {\n        x: this.#points[0] * sx + tx,\n        y: this.#points[1] * sy + ty,\n      },\n      this.#box,\n      this.#scaleFactor,\n      thickness,\n      this.#isLTR,\n      innerMargin ?? this.#innerMargin\n    );\n    for (let i = 2; i < this.#points.length; i += 2) {\n      outliner.add({\n        x: this.#points[i] * sx + tx,\n        y: this.#points[i + 1] * sy + ty,\n      });\n    }\n    return outliner.getOutlines();\n  }\n}\n\nexport { FreeDrawOutline, FreeDrawOutliner };\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FreeDrawOutline, FreeDrawOutliner } from \"./freedraw.js\";\nimport { Outline } from \"./outline.js\";\nimport { Util } from \"../../../shared/util.js\";\n\nclass HighlightOutliner {\n  #box;\n\n  #firstPoint;\n\n  #lastPoint;\n\n  #verticalEdges = [];\n\n  #intervals = [];\n\n  /**\n   * Construct an outliner.\n   * @param {Array<Object>} boxes - An array of axis-aligned rectangles.\n   * @param {number} borderWidth - The width of the border of the boxes, it\n   *   allows to make the boxes bigger (or smaller).\n   * @param {number} innerMargin - The margin between the boxes and the\n   *   outlines. It's important to not have a null innerMargin when we want to\n   *   draw the outline else the stroked outline could be clipped because of its\n   *   width.\n   * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine\n   *   the last point of the boxes.\n   */\n  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n    const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n\n    // We round the coordinates to slightly reduce the number of edges in the\n    // final outlines.\n    const NUMBER_OF_DIGITS = 4;\n    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n\n    // The coordinates of the boxes are in the page coordinate system.\n    for (const { x, y, width, height } of boxes) {\n      const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n      const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n      const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n      const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n      const left = [x1, y1, y2, true];\n      const right = [x2, y1, y2, false];\n      this.#verticalEdges.push(left, right);\n\n      Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n    }\n\n    const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n    const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n    const shiftedMinX = minMax[0] - innerMargin;\n    const shiftedMinY = minMax[1] - innerMargin;\n    let firstPointX = isLTR ? -Infinity : Infinity;\n    let firstPointY = Infinity;\n    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n    const lastPoint = [lastEdge[0], lastEdge[2]];\n\n    // Convert the coordinates of the edges into box coordinates.\n    for (const edge of this.#verticalEdges) {\n      const [x, y1, y2, left] = edge;\n      if (!left && isLTR) {\n        if (y1 < firstPointY) {\n          firstPointY = y1;\n          firstPointX = x;\n        } else if (y1 === firstPointY) {\n          firstPointX = Math.max(firstPointX, x);\n        }\n      } else if (left && !isLTR) {\n        if (y1 < firstPointY) {\n          firstPointY = y1;\n          firstPointX = x;\n        } else if (y1 === firstPointY) {\n          firstPointX = Math.min(firstPointX, x);\n        }\n      }\n\n      edge[0] = (x - shiftedMinX) / bboxWidth;\n      edge[1] = (y1 - shiftedMinY) / bboxHeight;\n      edge[2] = (y2 - shiftedMinY) / bboxHeight;\n    }\n\n    this.#box = new Float32Array([\n      shiftedMinX,\n      shiftedMinY,\n      bboxWidth,\n      bboxHeight,\n    ]);\n    this.#firstPoint = [firstPointX, firstPointY];\n    this.#lastPoint = lastPoint;\n  }\n\n  getOutlines() {\n    // We begin to sort lexicographically the vertical edges by their abscissa,\n    // and then by their ordinate.\n    this.#verticalEdges.sort(\n      (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]\n    );\n\n    // We're now using a sweep line algorithm to find the outlines.\n    // We start with the leftmost vertical edge, and we're going to iterate\n    // over all the vertical edges from left to right.\n    // Each time we encounter a left edge, we're going to insert the interval\n    // [y1, y2] in the set of intervals.\n    // This set of intervals is used to break the vertical edges into chunks:\n    // we only take the part of the vertical edge that isn't in the union of\n    // the intervals.\n    const outlineVerticalEdges = [];\n    for (const edge of this.#verticalEdges) {\n      if (edge[3]) {\n        // Left edge.\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n        this.#insert(edge);\n      } else {\n        // Right edge.\n        this.#remove(edge);\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n      }\n    }\n    return this.#getOutlines(outlineVerticalEdges);\n  }\n\n  #getOutlines(outlineVerticalEdges) {\n    const edges = [];\n    const allEdges = new Set();\n\n    for (const edge of outlineVerticalEdges) {\n      const [x, y1, y2] = edge;\n      edges.push([x, y1, edge], [x, y2, edge]);\n    }\n\n    // We sort lexicographically the vertices of each edge by their ordinate and\n    // by their abscissa.\n    // Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge.\n    // So for every vertical edge, we're going to add the two vertical edges\n    // which are connected to it through a horizontal edge.\n    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n    for (let i = 0, ii = edges.length; i < ii; i += 2) {\n      const edge1 = edges[i][2];\n      const edge2 = edges[i + 1][2];\n      edge1.push(edge2);\n      edge2.push(edge1);\n      allEdges.add(edge1);\n      allEdges.add(edge2);\n    }\n    const outlines = [];\n    let outline;\n\n    while (allEdges.size > 0) {\n      const edge = allEdges.values().next().value;\n      let [x, y1, y2, edge1, edge2] = edge;\n      allEdges.delete(edge);\n      let lastPointX = x;\n      let lastPointY = y1;\n\n      outline = [x, y2];\n      outlines.push(outline);\n\n      while (true) {\n        let e;\n        if (allEdges.has(edge1)) {\n          e = edge1;\n        } else if (allEdges.has(edge2)) {\n          e = edge2;\n        } else {\n          break;\n        }\n\n        allEdges.delete(e);\n        [x, y1, y2, edge1, edge2] = e;\n\n        if (lastPointX !== x) {\n          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n          lastPointX = x;\n        }\n        lastPointY = lastPointY === y1 ? y2 : y1;\n      }\n      outline.push(lastPointX, lastPointY);\n    }\n    return new HighlightOutline(\n      outlines,\n      this.#box,\n      this.#firstPoint,\n      this.#lastPoint\n    );\n  }\n\n  #binarySearch(y) {\n    const array = this.#intervals;\n    let start = 0;\n    let end = array.length - 1;\n\n    while (start <= end) {\n      const middle = (start + end) >> 1;\n      const y1 = array[middle][0];\n      if (y1 === y) {\n        return middle;\n      }\n      if (y1 < y) {\n        start = middle + 1;\n      } else {\n        end = middle - 1;\n      }\n    }\n    return end + 1;\n  }\n\n  #insert([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    this.#intervals.splice(index, 0, [y1, y2]);\n  }\n\n  #remove([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    for (let i = index; i < this.#intervals.length; i++) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n    for (let i = index - 1; i >= 0; i--) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n  }\n\n  #breakEdge(edge) {\n    const [x, y1, y2] = edge;\n    const results = [[x, y1, y2]];\n    const index = this.#binarySearch(y2);\n    for (let i = 0; i < index; i++) {\n      const [start, end] = this.#intervals[i];\n      for (let j = 0, jj = results.length; j < jj; j++) {\n        const [, y3, y4] = results[j];\n        if (end <= y3 || y4 <= start) {\n          // There is no intersection between the interval and the edge, hence\n          // we keep it as is.\n          continue;\n        }\n        if (y3 >= start) {\n          if (y4 > end) {\n            results[j][1] = end;\n          } else {\n            if (jj === 1) {\n              return [];\n            }\n            // The edge is included in the interval, hence we remove it.\n            results.splice(j, 1);\n            j--;\n            jj--;\n          }\n          continue;\n        }\n        results[j][2] = start;\n        if (y4 > end) {\n          results.push([x, end, y4]);\n        }\n      }\n    }\n    return results;\n  }\n}\n\nclass HighlightOutline extends Outline {\n  #box;\n\n  #outlines;\n\n  constructor(outlines, box, firstPoint, lastPoint) {\n    super();\n    this.#outlines = outlines;\n    this.#box = box;\n    this.firstPoint = firstPoint;\n    this.lastPoint = lastPoint;\n  }\n\n  toSVGPath() {\n    const buffer = [];\n    for (const polygon of this.#outlines) {\n      let [prevX, prevY] = polygon;\n      buffer.push(`M${prevX} ${prevY}`);\n      for (let i = 2; i < polygon.length; i += 2) {\n        const x = polygon[i];\n        const y = polygon[i + 1];\n        if (x === prevX) {\n          buffer.push(`V${y}`);\n          prevY = y;\n        } else if (y === prevY) {\n          buffer.push(`H${x}`);\n          prevX = x;\n        }\n      }\n      buffer.push(\"Z\");\n    }\n    return buffer.join(\" \");\n  }\n\n  /**\n   * Serialize the outlines into the PDF page coordinate system.\n   * @param {Array<number>} _bbox - the bounding box of the annotation.\n   * @param {number} _rotation - the rotation of the annotation.\n   * @returns {Array<Array<number>>}\n   */\n  serialize([blX, blY, trX, trY], _rotation) {\n    const outlines = [];\n    const width = trX - blX;\n    const height = trY - blY;\n    for (const outline of this.#outlines) {\n      const points = new Array(outline.length);\n      for (let i = 0; i < outline.length; i += 2) {\n        points[i] = blX + outline[i] * width;\n        points[i + 1] = trY - outline[i + 1] * height;\n      }\n      outlines.push(points);\n    }\n    return outlines;\n  }\n\n  get box() {\n    return this.#box;\n  }\n\n  get classNamesForOutlining() {\n    return [\"highlightOutline\"];\n  }\n}\n\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    return new FreeHighlightOutline(\n      outline,\n      points,\n      box,\n      scaleFactor,\n      innerMargin,\n      isLTR\n    );\n  }\n}\n\nclass FreeHighlightOutline extends FreeDrawOutline {\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    return new FreeHighlightOutliner(\n      point,\n      box,\n      scaleFactor,\n      thickness,\n      isLTR,\n      innerMargin\n    );\n  }\n}\n\nexport { FreeHighlightOutliner, HighlightOutliner };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport { bindEvents, KeyboardManager } from \"./tools.js\";\nimport {\n  FreeHighlightOutliner,\n  HighlightOutliner,\n} from \"./drawers/highlight.js\";\nimport {\n  HighlightAnnotationElement,\n  InkAnnotationElement,\n} from \"../annotation_layer.js\";\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { ColorPicker } from \"./color_picker.js\";\n\n/**\n * Basic draw editor in order to generate an Highlight annotation.\n */\nclass HighlightEditor extends AnnotationEditor {\n  #anchorNode = null;\n\n  #anchorOffset = 0;\n\n  #boxes;\n\n  #clipPathId = null;\n\n  #colorPicker = null;\n\n  #focusOutlines = null;\n\n  #focusNode = null;\n\n  #focusOffset = 0;\n\n  #highlightDiv = null;\n\n  #highlightOutlines = null;\n\n  #id = null;\n\n  #isFreeHighlight = false;\n\n  #firstPoint = null;\n\n  #lastPoint = null;\n\n  #outlineId = null;\n\n  #text = \"\";\n\n  #thickness;\n\n  #methodOfCreation = \"\";\n\n  static _defaultColor = null;\n\n  static _defaultOpacity = 1;\n\n  static _defaultThickness = 12;\n\n  static _type = \"highlight\";\n\n  static _editorType = AnnotationEditorType.HIGHLIGHT;\n\n  static _freeHighlightId = -1;\n\n  static _freeHighlight = null;\n\n  static _freeHighlightClipId = \"\";\n\n  static get _keyboardManager() {\n    const proto = HighlightEditor.prototype;\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, { args: [0] }],\n        [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, { args: [1] }],\n        [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, { args: [2] }],\n        [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, { args: [3] }],\n      ])\n    );\n  }\n\n  constructor(params) {\n    super({ ...params, name: \"highlightEditor\" });\n    this.color = params.color || HighlightEditor._defaultColor;\n    this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n    this.opacity = params.opacity || HighlightEditor._defaultOpacity;\n    this.#boxes = params.boxes || null;\n    this.#methodOfCreation = params.methodOfCreation || \"\";\n    this.#text = params.text || \"\";\n    this._isDraggable = false;\n    this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n\n    if (params.highlightId > -1) {\n      this.#isFreeHighlight = true;\n      this.#createFreeOutlines(params);\n      this.#addToDrawLayer();\n    } else if (this.#boxes) {\n      this.#anchorNode = params.anchorNode;\n      this.#anchorOffset = params.anchorOffset;\n      this.#focusNode = params.focusNode;\n      this.#focusOffset = params.focusOffset;\n      this.#createOutlines();\n      this.#addToDrawLayer();\n      this.rotate(this.rotation);\n    }\n\n    if (!this.annotationElementId) {\n      this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n    }\n  }\n\n  /** @inheritdoc */\n  get telemetryInitialData() {\n    return {\n      action: \"added\",\n      type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n      color: this._uiManager.getNonHCMColorName(this.color),\n      thickness: this.#thickness,\n      methodOfCreation: this.#methodOfCreation,\n    };\n  }\n\n  /** @inheritdoc */\n  get telemetryFinalData() {\n    return {\n      type: \"highlight\",\n      color: this._uiManager.getNonHCMColorName(this.color),\n    };\n  }\n\n  static computeTelemetryFinalData(data) {\n    // We want to know how many colors have been used.\n    return { numberOfColors: data.get(\"color\").size };\n  }\n\n  #createOutlines() {\n    const outliner = new HighlightOutliner(\n      this.#boxes,\n      /* borderWidth = */ 0.001\n    );\n    this.#highlightOutlines = outliner.getOutlines();\n    [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n\n    const outlinerForOutline = new HighlightOutliner(\n      this.#boxes,\n      /* borderWidth = */ 0.0025,\n      /* innerMargin = */ 0.001,\n      this._uiManager.direction === \"ltr\"\n    );\n    this.#focusOutlines = outlinerForOutline.getOutlines();\n\n    const { firstPoint } = this.#highlightOutlines;\n    this.#firstPoint = [\n      (firstPoint[0] - this.x) / this.width,\n      (firstPoint[1] - this.y) / this.height,\n    ];\n    // The last point is in the pages coordinate system.\n    const { lastPoint } = this.#focusOutlines;\n    this.#lastPoint = [\n      (lastPoint[0] - this.x) / this.width,\n      (lastPoint[1] - this.y) / this.height,\n    ];\n  }\n\n  #createFreeOutlines({ highlightOutlines, highlightId, clipPathId }) {\n    this.#highlightOutlines = highlightOutlines;\n    const extraThickness = 1.5;\n    this.#focusOutlines = highlightOutlines.getNewOutline(\n      /* Slightly bigger than the highlight in order to have a little\n         space between the highlight and the outline. */\n      this.#thickness / 2 + extraThickness,\n      /* innerMargin = */ 0.0025\n    );\n\n    if (highlightId >= 0) {\n      this.#id = highlightId;\n      this.#clipPathId = clipPathId;\n      // We need to redraw the highlight because we change the coordinates to be\n      // in the box coordinate system.\n      this.parent.drawLayer.finalizeDraw(highlightId, {\n        bbox: highlightOutlines.box,\n        path: {\n          d: highlightOutlines.toSVGPath(),\n        },\n      });\n      this.#outlineId = this.parent.drawLayer.drawOutline(\n        {\n          rootClass: {\n            highlightOutline: true,\n            free: true,\n          },\n          bbox: this.#focusOutlines.box,\n          path: {\n            d: this.#focusOutlines.toSVGPath(),\n          },\n        },\n        /* mustRemoveSelfIntersections = */ true\n      );\n    } else if (this.parent) {\n      const angle = this.parent.viewport.rotation;\n      this.parent.drawLayer.updateProperties(this.#id, {\n        bbox: HighlightEditor.#rotateBbox(\n          this.#highlightOutlines.box,\n          (angle - this.rotation + 360) % 360\n        ),\n        path: {\n          d: highlightOutlines.toSVGPath(),\n        },\n      });\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\n        bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n        path: {\n          d: this.#focusOutlines.toSVGPath(),\n        },\n      });\n    }\n    const [x, y, width, height] = highlightOutlines.box;\n    switch (this.rotation) {\n      case 0:\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 90: {\n        const [pageWidth, pageHeight] = this.parentDimensions;\n        this.x = y;\n        this.y = 1 - x;\n        this.width = (width * pageHeight) / pageWidth;\n        this.height = (height * pageWidth) / pageHeight;\n        break;\n      }\n      case 180:\n        this.x = 1 - x;\n        this.y = 1 - y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 270: {\n        const [pageWidth, pageHeight] = this.parentDimensions;\n        this.x = 1 - y;\n        this.y = x;\n        this.width = (width * pageHeight) / pageWidth;\n        this.height = (height * pageWidth) / pageHeight;\n        break;\n      }\n    }\n\n    const { firstPoint } = highlightOutlines;\n    this.#firstPoint = [\n      (firstPoint[0] - x) / width,\n      (firstPoint[1] - y) / height,\n    ];\n    const { lastPoint } = this.#focusOutlines;\n    this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    HighlightEditor._defaultColor ||=\n      uiManager.highlightColors?.values().next().value || \"#fff066\";\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n        HighlightEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        HighlightEditor._defaultThickness = value;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  translateInPage(x, y) {}\n\n  /** @inheritdoc */\n  get toolbarPosition() {\n    return this.#lastPoint;\n  }\n\n  /** @inheritdoc */\n  get commentButtonPosition() {\n    return this.#firstPoint;\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        this.#updateThickness(value);\n        break;\n    }\n  }\n\n  static get defaultPropertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n        HighlightEditor._defaultColor,\n      ],\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\n        HighlightEditor._defaultThickness,\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n        this.color || HighlightEditor._defaultColor,\n      ],\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\n        this.#thickness || HighlightEditor._defaultThickness,\n      ],\n      [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight],\n    ];\n  }\n\n  /** @inheritdoc */\n  onUpdatedColor() {\n    this.parent?.drawLayer.updateProperties(this.#id, {\n      root: {\n        fill: this.color,\n        \"fill-opacity\": this.opacity,\n      },\n    });\n    this.#colorPicker?.updateColor(this.color);\n    super.onUpdatedColor();\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const setColorAndOpacity = (col, opa) => {\n      this.color = col;\n      this.opacity = opa;\n      this.onUpdatedColor();\n    };\n    const savedColor = this.color;\n    const savedOpacity = this.opacity;\n    this.addCommands({\n      cmd: setColorAndOpacity.bind(\n        this,\n        color,\n        HighlightEditor._defaultOpacity\n      ),\n      undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n\n    this._reportTelemetry(\n      {\n        action: \"color_changed\",\n        color: this._uiManager.getNonHCMColorName(color),\n      },\n      /* mustWait = */ true\n    );\n  }\n\n  /**\n   * Update the thickness and make this action undoable.\n   * @param {number} thickness\n   */\n  #updateThickness(thickness) {\n    const savedThickness = this.#thickness;\n    const setThickness = th => {\n      this.#thickness = th;\n      this.#changeThickness(th);\n    };\n    this.addCommands({\n      cmd: setThickness.bind(this, thickness),\n      undo: setThickness.bind(this, savedThickness),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n    this._reportTelemetry(\n      { action: \"thickness_changed\", thickness },\n      /* mustWait = */ true\n    );\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    if (this._uiManager.highlightColors) {\n      const colorPicker = (this.#colorPicker = new ColorPicker({\n        editor: this,\n      }));\n      return [[\"colorPicker\", colorPicker]];\n    }\n    return super.toolbarButtons;\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n\n  /** @inheritdoc */\n  fixAndSetPosition() {\n    return super.fixAndSetPosition(this.#getRotation());\n  }\n\n  /** @inheritdoc */\n  getBaseTranslation() {\n    // The editor itself doesn't have any CSS border (we're drawing one\n    // ourselves in using SVG).\n    return [0, 0];\n  }\n\n  /** @inheritdoc */\n  getRect(tx, ty) {\n    return super.getRect(tx, ty, this.#getRotation());\n  }\n\n  /** @inheritdoc */\n  onceAdded(focus) {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    if (focus) {\n      this.div.focus();\n    }\n  }\n\n  /** @inheritdoc */\n  remove() {\n    this.#cleanDrawLayer();\n    this._reportTelemetry({\n      action: \"deleted\",\n    });\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    this.#addToDrawLayer();\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilding it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this.#addToDrawLayer(parent);\n      // If mustBeSelected is true it means that this editor was selected\n      // when its parent has been destroyed, hence we must select it again.\n      mustBeSelected =\n        !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    this.show(this._isVisible);\n    if (mustBeSelected) {\n      // We select it after the parent has been set.\n      this.select();\n    }\n  }\n\n  #changeThickness(thickness) {\n    if (!this.#isFreeHighlight) {\n      return;\n    }\n    this.#createFreeOutlines({\n      highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2),\n    });\n    this.fixAndSetPosition();\n    this.setDims();\n  }\n\n  #cleanDrawLayer() {\n    if (this.#id === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this.#id);\n    this.#id = null;\n    this.parent.drawLayer.remove(this.#outlineId);\n    this.#outlineId = null;\n  }\n\n  #addToDrawLayer(parent = this.parent) {\n    if (this.#id !== null) {\n      return;\n    }\n    ({ id: this.#id, clipPathId: this.#clipPathId } = parent.drawLayer.draw(\n      {\n        bbox: this.#highlightOutlines.box,\n        root: {\n          viewBox: \"0 0 1 1\",\n          fill: this.color,\n          \"fill-opacity\": this.opacity,\n        },\n        rootClass: {\n          highlight: true,\n          free: this.#isFreeHighlight,\n        },\n        path: {\n          d: this.#highlightOutlines.toSVGPath(),\n        },\n      },\n      /* isPathUpdatable = */ false,\n      /* hasClip = */ true\n    ));\n    this.#outlineId = parent.drawLayer.drawOutline(\n      {\n        rootClass: {\n          highlightOutline: true,\n          free: this.#isFreeHighlight,\n        },\n        bbox: this.#focusOutlines.box,\n        path: {\n          d: this.#focusOutlines.toSVGPath(),\n        },\n      },\n      /* mustRemoveSelfIntersections = */ this.#isFreeHighlight\n    );\n\n    if (this.#highlightDiv) {\n      this.#highlightDiv.style.clipPath = this.#clipPathId;\n    }\n  }\n\n  static #rotateBbox([x, y, width, height], angle) {\n    switch (angle) {\n      case 90:\n        return [1 - y - height, x, height, width];\n      case 180:\n        return [1 - x - width, 1 - y - height, width, height];\n      case 270:\n        return [y, 1 - x - width, height, width];\n    }\n    return [x, y, width, height];\n  }\n\n  /** @inheritdoc */\n  rotate(angle) {\n    // We need to rotate the svgs because of the coordinates system.\n    const { drawLayer } = this.parent;\n    let box;\n    if (this.#isFreeHighlight) {\n      angle = (angle - this.rotation + 360) % 360;\n      box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n    } else {\n      // An highlight annotation is always drawn horizontally.\n      box = HighlightEditor.#rotateBbox(\n        [this.x, this.y, this.width, this.height],\n        angle\n      );\n    }\n    drawLayer.updateProperties(this.#id, {\n      bbox: box,\n      root: {\n        \"data-main-rotation\": angle,\n      },\n    });\n    drawLayer.updateProperties(this.#outlineId, {\n      bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n      root: {\n        \"data-main-rotation\": angle,\n      },\n    });\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    const div = super.render();\n    if (this.#text) {\n      div.setAttribute(\"aria-label\", this.#text);\n      div.setAttribute(\"role\", \"mark\");\n    }\n    if (this.#isFreeHighlight) {\n      div.classList.add(\"free\");\n    } else {\n      this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n        signal: this._uiManager._signal,\n      });\n    }\n    const highlightDiv = (this.#highlightDiv = document.createElement(\"div\"));\n    div.append(highlightDiv);\n    highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n    highlightDiv.className = \"internal\";\n    highlightDiv.style.clipPath = this.#clipPathId;\n    this.setDims();\n\n    bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n    this.enableEditing();\n\n    return div;\n  }\n\n  pointerover() {\n    if (!this.isSelected) {\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hovered: true,\n        },\n      });\n    }\n  }\n\n  pointerleave() {\n    if (!this.isSelected) {\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hovered: false,\n        },\n      });\n    }\n  }\n\n  #keydown(event) {\n    HighlightEditor._keyboardManager.exec(this, event);\n  }\n\n  _moveCaret(direction) {\n    this.parent.unselect(this);\n    switch (direction) {\n      case 0 /* left */:\n      case 2 /* up */:\n        this.#setCaret(/* start = */ true);\n        break;\n      case 1 /* right */:\n      case 3 /* down */:\n        this.#setCaret(/* start = */ false);\n        break;\n    }\n  }\n\n  #setCaret(start) {\n    if (!this.#anchorNode) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (start) {\n      selection.setPosition(this.#anchorNode, this.#anchorOffset);\n    } else {\n      selection.setPosition(this.#focusNode, this.#focusOffset);\n    }\n  }\n\n  /** @inheritdoc */\n  select() {\n    super.select();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n      rootClass: {\n        hovered: false,\n        selected: true,\n      },\n    });\n  }\n\n  /** @inheritdoc */\n  unselect() {\n    super.unselect();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n      rootClass: {\n        selected: false,\n      },\n    });\n    if (!this.#isFreeHighlight) {\n      this.#setCaret(/* start = */ false);\n    }\n  }\n\n  /** @inheritdoc */\n  get _mustFixPosition() {\n    return !this.#isFreeHighlight;\n  }\n\n  /** @inheritdoc */\n  show(visible = this._isVisible) {\n    super.show(visible);\n    if (this.parent) {\n      this.parent.drawLayer.updateProperties(this.#id, {\n        rootClass: {\n          hidden: !visible,\n        },\n      });\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hidden: !visible,\n        },\n      });\n    }\n  }\n\n  #getRotation() {\n    // Highlight annotations are always drawn horizontally but if\n    // a free highlight annotation can be rotated.\n    return this.#isFreeHighlight ? this.rotation : 0;\n  }\n\n  #serializeBoxes() {\n    if (this.#isFreeHighlight) {\n      return null;\n    }\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const boxes = this.#boxes;\n    const quadPoints = new Float32Array(boxes.length * 8);\n    let i = 0;\n    for (const { x, y, width, height } of boxes) {\n      const sx = x * pageWidth + pageX;\n      const sy = (1 - y) * pageHeight + pageY;\n      // Serializes the rectangle in the Adobe Acrobat format.\n      // The rectangle's coordinates (b = bottom, t = top, L = left, R = right)\n      // are ordered as follows: tL, tR, bL, bR (bL origin).\n      quadPoints[i] = quadPoints[i + 4] = sx;\n      quadPoints[i + 1] = quadPoints[i + 3] = sy;\n      quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n      quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n      i += 8;\n    }\n    return quadPoints;\n  }\n\n  #serializeOutlines(rect) {\n    return this.#highlightOutlines.serialize(rect, this.#getRotation());\n  }\n\n  static startHighlighting(parent, isLTR, { target: textLayer, x, y }) {\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight,\n    } = textLayer.getBoundingClientRect();\n\n    const ac = new AbortController();\n    const signal = parent.combinedSignal(ac);\n\n    const pointerUpCallback = e => {\n      ac.abort();\n      this.#endHighlight(parent, e);\n    };\n    window.addEventListener(\"blur\", pointerUpCallback, { signal });\n    window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n    window.addEventListener(\n      \"pointerdown\",\n      stopEvent /* Avoid to have undesired clicks during the drawing. */,\n      {\n        capture: true,\n        passive: false,\n        signal,\n      }\n    );\n    window.addEventListener(\"contextmenu\", noContextMenu, { signal });\n\n    textLayer.addEventListener(\n      \"pointermove\",\n      this.#highlightMove.bind(this, parent),\n      { signal }\n    );\n    this._freeHighlight = new FreeHighlightOutliner(\n      { x, y },\n      [layerX, layerY, parentWidth, parentHeight],\n      parent.scale,\n      this._defaultThickness / 2,\n      isLTR,\n      /* innerMargin = */ 0.001\n    );\n    ({ id: this._freeHighlightId, clipPathId: this._freeHighlightClipId } =\n      parent.drawLayer.draw(\n        {\n          bbox: [0, 0, 1, 1],\n          root: {\n            viewBox: \"0 0 1 1\",\n            fill: this._defaultColor,\n            \"fill-opacity\": this._defaultOpacity,\n          },\n          rootClass: {\n            highlight: true,\n            free: true,\n          },\n          path: {\n            d: this._freeHighlight.toSVGPath(),\n          },\n        },\n        /* isPathUpdatable = */ true,\n        /* hasClip = */ true\n      ));\n  }\n\n  static #highlightMove(parent, event) {\n    if (this._freeHighlight.add(event)) {\n      // Redraw only if the point has been added.\n      parent.drawLayer.updateProperties(this._freeHighlightId, {\n        path: {\n          d: this._freeHighlight.toSVGPath(),\n        },\n      });\n    }\n  }\n\n  static #endHighlight(parent, event) {\n    if (!this._freeHighlight.isEmpty()) {\n      parent.createAndAddNewEditor(event, false, {\n        highlightId: this._freeHighlightId,\n        highlightOutlines: this._freeHighlight.getOutlines(),\n        clipPathId: this._freeHighlightClipId,\n        methodOfCreation: \"main_toolbar\",\n      });\n    } else {\n      parent.drawLayer.remove(this._freeHighlightId);\n    }\n    this._freeHighlightId = -1;\n    this._freeHighlight = null;\n    this._freeHighlightClipId = \"\";\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof HighlightAnnotationElement) {\n      const {\n        data: {\n          quadPoints,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        opacity,\n        quadPoints,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        popupRef,\n        richText,\n        comment: contentsObj?.str || null,\n        creationDate,\n        modificationDate,\n      };\n    } else if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          borderStyle: { rawWidth: thickness },\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        thickness,\n        inkLists,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        popupRef,\n        richText,\n        comment: contentsObj?.str || null,\n        creationDate,\n        modificationDate,\n      };\n    }\n\n    const { color, quadPoints, inkLists, opacity } = data;\n    const editor = await super.deserialize(data, parent, uiManager);\n\n    editor.color = Util.makeHexColor(...color);\n    editor.opacity = opacity || 1;\n    if (inkLists) {\n      editor.#thickness = data.thickness;\n    }\n    editor._initialData = initialData;\n    if (data.comment) {\n      editor.setCommentData(data);\n    }\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [pageX, pageY] = editor.pageTranslation;\n\n    if (quadPoints) {\n      const boxes = (editor.#boxes = []);\n      for (let i = 0; i < quadPoints.length; i += 8) {\n        boxes.push({\n          x: (quadPoints[i] - pageX) / pageWidth,\n          y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n          width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n          height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight,\n        });\n      }\n      editor.#createOutlines();\n      editor.#addToDrawLayer();\n      editor.rotate(editor.rotation);\n    } else if (inkLists) {\n      editor.#isFreeHighlight = true;\n      const points = inkLists[0];\n      const point = {\n        x: points[0] - pageX,\n        y: pageHeight - (points[1] - pageY),\n      };\n      const outliner = new FreeHighlightOutliner(\n        point,\n        [0, 0, pageWidth, pageHeight],\n        1,\n        editor.#thickness / 2,\n        true,\n        0.001\n      );\n      for (let i = 0, ii = points.length; i < ii; i += 2) {\n        point.x = points[i] - pageX;\n        point.y = pageHeight - (points[i + 1] - pageY);\n        outliner.add(point);\n      }\n      const { id, clipPathId } = parent.drawLayer.draw(\n        {\n          bbox: [0, 0, 1, 1],\n          root: {\n            viewBox: \"0 0 1 1\",\n            fill: editor.color,\n            \"fill-opacity\": editor._defaultOpacity,\n          },\n          rootClass: {\n            highlight: true,\n            free: true,\n          },\n          path: {\n            d: outliner.toSVGPath(),\n          },\n        },\n        /* isPathUpdatable = */ true,\n        /* hasClip = */ true\n      );\n      editor.#createFreeOutlines({\n        highlightOutlines: outliner.getOutlines(),\n        highlightId: id,\n        clipPathId,\n      });\n      editor.#addToDrawLayer();\n      editor.rotate(editor.parentRotation);\n    }\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    // It doesn't make sense to copy/paste a highlight annotation.\n    if (this.isEmpty() || isForCopying) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n\n    const color = AnnotationEditor._colorManager.convert(\n      this._uiManager.getNonHCMColor(this.color)\n    );\n    const serialized = super.serialize(isForCopying);\n    Object.assign(serialized, {\n      color,\n      opacity: this.opacity,\n      thickness: this.#thickness,\n      quadPoints: this.#serializeBoxes(),\n      outlines: this.#serializeOutlines(serialized.rect),\n    });\n    this.addComment(serialized);\n\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const { color } = this._initialData;\n    return (\n      this.hasEditedComment || serialized.color.some((c, i) => c !== color[i])\n    );\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    if (this.deleted) {\n      annotation.hide();\n      return null;\n    }\n    annotation.updateEdited({\n      rect: this.getPDFRect(),\n      popup: this.comment,\n    });\n\n    return null;\n  }\n\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\nexport { HighlightEditor };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorParamsType, unreachable } from \"../../shared/util.js\";\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { CurrentPointers } from \"./tools.js\";\n\nclass DrawingOptions {\n  #svgProperties = Object.create(null);\n\n  updateProperty(name, value) {\n    this[name] = value;\n    this.updateSVGProperty(name, value);\n  }\n\n  updateProperties(properties) {\n    if (!properties) {\n      return;\n    }\n    for (const [name, value] of Object.entries(properties)) {\n      if (!name.startsWith(\"_\")) {\n        this.updateProperty(name, value);\n      }\n    }\n  }\n\n  updateSVGProperty(name, value) {\n    this.#svgProperties[name] = value;\n  }\n\n  toSVGProperties() {\n    const root = this.#svgProperties;\n    this.#svgProperties = Object.create(null);\n    return { root };\n  }\n\n  reset() {\n    this.#svgProperties = Object.create(null);\n  }\n\n  updateAll(options = this) {\n    this.updateProperties(options);\n  }\n\n  clone() {\n    unreachable(\"Not implemented\");\n  }\n}\n\n/**\n * Basic draw editor.\n */\nclass DrawingEditor extends AnnotationEditor {\n  #drawOutlines = null;\n\n  #mustBeCommitted;\n\n  _colorPicker = null;\n\n  _drawId = null;\n\n  static _currentDrawId = -1;\n\n  static _currentParent = null;\n\n  static #currentDraw = null;\n\n  static #currentDrawingAC = null;\n\n  static #currentDrawingOptions = null;\n\n  static _INNER_MARGIN = 3;\n\n  constructor(params) {\n    super(params);\n    this.#mustBeCommitted = params.mustBeCommitted || false;\n\n    this._addOutlines(params);\n  }\n\n  /** @inheritdoc */\n  onUpdatedColor() {\n    this._colorPicker?.update(this.color);\n    super.onUpdatedColor();\n  }\n\n  _addOutlines(params) {\n    if (params.drawOutlines) {\n      this.#createDrawOutlines(params);\n      this.#addToDrawLayer();\n    }\n  }\n\n  #createDrawOutlines({ drawOutlines, drawId, drawingOptions }) {\n    this.#drawOutlines = drawOutlines;\n    this._drawingOptions ||= drawingOptions;\n    if (!this.annotationElementId) {\n      this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n    }\n\n    if (drawId >= 0) {\n      this._drawId = drawId;\n      // We need to redraw the drawing because we changed the coordinates to be\n      // in the box coordinate system.\n      this.parent.drawLayer.finalizeDraw(\n        drawId,\n        drawOutlines.defaultProperties\n      );\n    } else {\n      // We create a new drawing.\n      this._drawId = this.#createDrawing(drawOutlines, this.parent);\n    }\n\n    this.#updateBbox(drawOutlines.box);\n  }\n\n  #createDrawing(drawOutlines, parent) {\n    const { id } = parent.drawLayer.draw(\n      DrawingEditor._mergeSVGProperties(\n        this._drawingOptions.toSVGProperties(),\n        drawOutlines.defaultSVGProperties\n      ),\n      /* isPathUpdatable = */ false,\n      /* hasClip = */ false\n    );\n    return id;\n  }\n\n  static _mergeSVGProperties(p1, p2) {\n    const p1Keys = new Set(Object.keys(p1));\n\n    for (const [key, value] of Object.entries(p2)) {\n      if (p1Keys.has(key)) {\n        Object.assign(p1[key], value);\n      } else {\n        p1[key] = value;\n      }\n    }\n    return p1;\n  }\n\n  /**\n   * @param {Object} options\n   * @return {DrawingOptions} the default options to use for a new editor.\n   */\n  static getDefaultDrawingOptions(_options) {\n    unreachable(\"Not implemented\");\n  }\n\n  /**\n   * @return {Map<AnnotationEditorParamsType, string>} a map between the\n   *   parameter types and the name of the options.\n   */\n  // eslint-disable-next-line getter-return\n  static get typesMap() {\n    unreachable(\"Not implemented\");\n  }\n\n  static get isDrawer() {\n    return true;\n  }\n\n  /**\n   * @returns {boolean} `true` if several drawings can be added to the\n   * annotation.\n   */\n  static get supportMultipleDrawings() {\n    return false;\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    const propertyName = this.typesMap.get(type);\n    if (propertyName) {\n      this._defaultDrawingOptions.updateProperty(propertyName, value);\n    }\n    if (this._currentParent) {\n      DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n      this._currentParent.drawLayer.updateProperties(\n        this._currentDrawId,\n        this._defaultDrawingOptions.toSVGProperties()\n      );\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    const propertyName = this.constructor.typesMap.get(type);\n    if (propertyName) {\n      this._updateProperty(type, propertyName, value);\n    }\n  }\n\n  /** @inheritdoc */\n  static get defaultPropertiesToUpdate() {\n    const properties = [];\n    const options = this._defaultDrawingOptions;\n    for (const [type, name] of this.typesMap) {\n      properties.push([type, options[name]]);\n    }\n    return properties;\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    const properties = [];\n    const { _drawingOptions } = this;\n    for (const [type, name] of this.constructor.typesMap) {\n      properties.push([type, _drawingOptions[name]]);\n    }\n    return properties;\n  }\n\n  /**\n   * Update a property and make this action undoable.\n   * @param {string} color\n   */\n  _updateProperty(type, name, value) {\n    const options = this._drawingOptions;\n    const savedValue = options[name];\n    const setter = val => {\n      options.updateProperty(name, val);\n      const bbox = this.#drawOutlines.updateProperty(name, val);\n      if (bbox) {\n        this.#updateBbox(bbox);\n      }\n      this.parent?.drawLayer.updateProperties(\n        this._drawId,\n        options.toSVGProperties()\n      );\n      if (type === this.colorType) {\n        this.onUpdatedColor();\n      }\n    };\n    this.addCommands({\n      cmd: setter.bind(this, value),\n      undo: setter.bind(this, savedValue),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  _onResizing() {\n    this.parent?.drawLayer.updateProperties(\n      this._drawId,\n      DrawingEditor._mergeSVGProperties(\n        this.#drawOutlines.getPathResizingSVGProperties(\n          this.#convertToDrawSpace()\n        ),\n        {\n          bbox: this.#rotateBox(),\n        }\n      )\n    );\n  }\n\n  /** @inheritdoc */\n  _onResized() {\n    this.parent?.drawLayer.updateProperties(\n      this._drawId,\n      DrawingEditor._mergeSVGProperties(\n        this.#drawOutlines.getPathResizedSVGProperties(\n          this.#convertToDrawSpace()\n        ),\n        {\n          bbox: this.#rotateBox(),\n        }\n      )\n    );\n  }\n\n  /** @inheritdoc */\n  _onTranslating(_x, _y) {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      bbox: this.#rotateBox(),\n    });\n  }\n\n  /** @inheritdoc */\n  _onTranslated() {\n    this.parent?.drawLayer.updateProperties(\n      this._drawId,\n      DrawingEditor._mergeSVGProperties(\n        this.#drawOutlines.getPathTranslatedSVGProperties(\n          this.#convertToDrawSpace(),\n          this.parentDimensions\n        ),\n        {\n          bbox: this.#rotateBox(),\n        }\n      )\n    );\n  }\n\n  _onStartDragging() {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      rootClass: {\n        moving: true,\n      },\n    });\n  }\n\n  _onStopDragging() {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      rootClass: {\n        moving: false,\n      },\n    });\n  }\n\n  /** @inheritdoc */\n  commit() {\n    super.commit();\n\n    this.disableEditMode();\n    this.disableEditing();\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n\n  /** @inheritdoc */\n  getBaseTranslation() {\n    // The editor itself doesn't have any CSS border (we're drawing one\n    // ourselves in using SVG).\n    return [0, 0];\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  onceAdded(focus) {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    this._isDraggable = true;\n    if (this.#mustBeCommitted) {\n      this.#mustBeCommitted = false;\n      this.commit();\n      this.parent.setSelected(this);\n      if (focus && this.isOnScreen) {\n        this.div.focus();\n      }\n    }\n  }\n\n  /** @inheritdoc */\n  remove() {\n    this.#cleanDrawLayer();\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    this.#addToDrawLayer();\n    this.#updateBbox(this.#drawOutlines.box);\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilding it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this._uiManager.removeShouldRescale(this);\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this._uiManager.addShouldRescale(this);\n      this.#addToDrawLayer(parent);\n      // If mustBeSelected is true it means that this editor was selected\n      // when its parent has been destroyed, hence we must select it again.\n      mustBeSelected =\n        !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    if (mustBeSelected) {\n      // We select it after the parent has been set.\n      this.select();\n    }\n  }\n\n  #cleanDrawLayer() {\n    if (this._drawId === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this._drawId);\n    this._drawId = null;\n\n    // All the SVG properties must be reset in order to make it possible to\n    // undo.\n    this._drawingOptions.reset();\n  }\n\n  #addToDrawLayer(parent = this.parent) {\n    if (this._drawId !== null && this.parent === parent) {\n      return;\n    }\n    if (this._drawId !== null) {\n      // The parent has changed, we need to move the drawing to the new parent.\n      this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n      return;\n    }\n    this._drawingOptions.updateAll();\n    this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n  }\n\n  #convertToParentSpace([x, y, width, height]) {\n    const {\n      parentDimensions: [pW, pH],\n      rotation,\n    } = this;\n    switch (rotation) {\n      case 90:\n        return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n      case 180:\n        return [1 - x, 1 - y, width, height];\n      case 270:\n        return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n\n  #convertToDrawSpace() {\n    const {\n      x,\n      y,\n      width,\n      height,\n      parentDimensions: [pW, pH],\n      rotation,\n    } = this;\n    switch (rotation) {\n      case 90:\n        return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n      case 180:\n        return [1 - x, 1 - y, width, height];\n      case 270:\n        return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n\n  #updateBbox(bbox) {\n    [this.x, this.y, this.width, this.height] =\n      this.#convertToParentSpace(bbox);\n    if (this.div) {\n      this.fixAndSetPosition();\n      this.setDims();\n    }\n    this._onResized();\n  }\n\n  #rotateBox() {\n    // We've to deal with two rotations: the rotation of the annotation and the\n    // rotation of the parent page.\n    // When the page is rotated, all the layers are just rotated thanks to CSS\n    // but there is a notable exception: the canvas wrapper.\n    // The canvas wrapper is not rotated but the dimensions are (or not) swapped\n    // and the page is redrawn with the rotation applied to the canvas.\n    // The drawn layer is under the canvas wrapper and is not rotated so we have\n    // to \"manually\" rotate the coordinates.\n    //\n    // The coordinates (this.x, this.y) correspond to the top-left corner of\n    // the editor after it has been rotated in the page coordinate system.\n\n    const {\n      x,\n      y,\n      width,\n      height,\n      rotation,\n      parentRotation,\n      parentDimensions: [pW, pH],\n    } = this;\n    switch ((rotation * 4 + parentRotation) / 90) {\n      case 1:\n        // 0 -> 90\n        return [1 - y - height, x, height, width];\n      case 2:\n        // 0 -> 180\n        return [1 - x - width, 1 - y - height, width, height];\n      case 3:\n        // 0 -> 270\n        return [y, 1 - x - width, height, width];\n      case 4:\n        // 90 -> 0\n        return [\n          x,\n          y - width * (pW / pH),\n          height * (pH / pW),\n          width * (pW / pH),\n        ];\n      case 5:\n        // 90 -> 90\n        return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n      case 6:\n        // 90 -> 180\n        return [\n          1 - x - height * (pH / pW),\n          1 - y,\n          height * (pH / pW),\n          width * (pW / pH),\n        ];\n      case 7:\n        // 90 -> 270\n        return [\n          y - width * (pW / pH),\n          1 - x - height * (pH / pW),\n          width * (pW / pH),\n          height * (pH / pW),\n        ];\n      case 8:\n        // 180 -> 0\n        return [x - width, y - height, width, height];\n      case 9:\n        // 180 -> 90\n        return [1 - y, x - width, height, width];\n      case 10:\n        // 180 -> 180\n        return [1 - x, 1 - y, width, height];\n      case 11:\n        // 180 -> 270\n        return [y - height, 1 - x, height, width];\n      case 12:\n        // 270 -> 0\n        return [\n          x - height * (pH / pW),\n          y,\n          height * (pH / pW),\n          width * (pW / pH),\n        ];\n      case 13:\n        // 270 -> 90\n        return [\n          1 - y - width * (pW / pH),\n          x - height * (pH / pW),\n          width * (pW / pH),\n          height * (pH / pW),\n        ];\n      case 14:\n        // 270 -> 180\n        return [\n          1 - x,\n          1 - y - width * (pW / pH),\n          height * (pH / pW),\n          width * (pW / pH),\n        ];\n      case 15:\n        // 270 -> 270\n        return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n      default:\n        // 0 -> 0\n        return [x, y, width, height];\n    }\n  }\n\n  /** @inheritdoc */\n  rotate() {\n    if (!this.parent) {\n      return;\n    }\n    this.parent.drawLayer.updateProperties(\n      this._drawId,\n      DrawingEditor._mergeSVGProperties(\n        {\n          bbox: this.#rotateBox(),\n        },\n        this.#drawOutlines.updateRotation(\n          (this.parentRotation - this.rotation + 360) % 360\n        )\n      )\n    );\n  }\n\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    this.#updateBbox(\n      this.#drawOutlines.updateParentDimensions(\n        this.parentDimensions,\n        this.parent.scale\n      )\n    );\n  }\n\n  static onScaleChangingWhenDrawing() {}\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this._isCopy) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    const div = super.render();\n    div.classList.add(\"draw\");\n\n    const drawDiv = document.createElement(\"div\");\n    div.append(drawDiv);\n    drawDiv.setAttribute(\"aria-hidden\", \"true\");\n    drawDiv.className = \"internal\";\n    this.setDims();\n    this._uiManager.addShouldRescale(this);\n    this.disableEditing();\n\n    if (this._isCopy) {\n      this._moveAfterPaste(baseX, baseY);\n    }\n\n    return div;\n  }\n\n  /**\n   * Create a new drawer instance.\n   * @param {number} x - The x coordinate of the event.\n   * @param {number} y - The y coordinate of the event.\n   * @param {number} parentWidth - The parent width.\n   * @param {number} parentHeight - The parent height.\n   * @param {number} rotation - The parent rotation.\n   */\n  static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n    unreachable(\"Not implemented\");\n  }\n\n  static startDrawing(parent, uiManager, _isLTR, event) {\n    // The pointerType of CurrentPointer is set when the user starts an empty\n    // drawing session. If, in the same drawing session, the user starts using a\n    // different type of pointer (e.g. a pen and then a finger), we just return.\n    //\n    // If the user starts to draw with a finger and then uses a second finger,\n    // we just stop the current drawing and let the user zoom the document.\n\n    const { target, offsetX: x, offsetY: y, pointerId, pointerType } = event;\n    if (CurrentPointers.isInitializedAndDifferentPointerType(pointerType)) {\n      return;\n    }\n\n    const {\n      viewport: { rotation },\n    } = parent;\n    const { width: parentWidth, height: parentHeight } =\n      target.getBoundingClientRect();\n\n    const ac = (DrawingEditor.#currentDrawingAC = new AbortController());\n    const signal = parent.combinedSignal(ac);\n\n    CurrentPointers.setPointer(pointerType, pointerId);\n\n    window.addEventListener(\n      \"pointerup\",\n      e => {\n        if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n          this._endDraw(e);\n        }\n      },\n      { signal }\n    );\n    window.addEventListener(\n      \"pointercancel\",\n      e => {\n        if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n          this._currentParent.endDrawingSession();\n        }\n      },\n      { signal }\n    );\n    window.addEventListener(\n      \"pointerdown\",\n      e => {\n        if (!CurrentPointers.isSamePointerType(e.pointerType)) {\n          // For example, we started with a pen and the user\n          // is now using a finger.\n          return;\n        }\n\n        // For example, the user is using a second finger.\n        CurrentPointers.initializeAndAddPointerId(e.pointerId);\n\n        // The first finger created a first point and a second finger just\n        // started, so we stop the drawing and remove this only point.\n        if (DrawingEditor.#currentDraw.isCancellable()) {\n          DrawingEditor.#currentDraw.removeLastElement();\n          if (DrawingEditor.#currentDraw.isEmpty()) {\n            this._currentParent.endDrawingSession(/* isAborted = */ true);\n          } else {\n            this._endDraw(null);\n          }\n        }\n      },\n      {\n        capture: true,\n        passive: false,\n        signal,\n      }\n    );\n    window.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n      signal,\n    });\n    target.addEventListener(\n      \"touchmove\",\n      e => {\n        if (CurrentPointers.isSameTimeStamp(e.timeStamp)) {\n          // This move event is used to draw so we don't want to scroll.\n          stopEvent(e);\n        }\n      },\n      { signal }\n    );\n    parent.toggleDrawing();\n    uiManager._editorUndoBar?.hide();\n\n    if (DrawingEditor.#currentDraw) {\n      parent.drawLayer.updateProperties(\n        this._currentDrawId,\n        DrawingEditor.#currentDraw.startNew(\n          x,\n          y,\n          parentWidth,\n          parentHeight,\n          rotation\n        )\n      );\n      return;\n    }\n\n    uiManager.updateUIForDefaultProperties(this);\n\n    DrawingEditor.#currentDraw = this.createDrawerInstance(\n      x,\n      y,\n      parentWidth,\n      parentHeight,\n      rotation\n    );\n    DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n    this._currentParent = parent;\n\n    ({ id: this._currentDrawId } = parent.drawLayer.draw(\n      this._mergeSVGProperties(\n        DrawingEditor.#currentDrawingOptions.toSVGProperties(),\n        DrawingEditor.#currentDraw.defaultSVGProperties\n      ),\n      /* isPathUpdatable = */ true,\n      /* hasClip = */ false\n    ));\n  }\n\n  static _drawMove(event) {\n    CurrentPointers.isSameTimeStamp(event.timeStamp);\n    if (!DrawingEditor.#currentDraw) {\n      return;\n    }\n    const { offsetX, offsetY, pointerId } = event;\n\n    if (!CurrentPointers.isSamePointerId(pointerId)) {\n      return;\n    }\n    if (CurrentPointers.isUsingMultiplePointers()) {\n      // The user is using multiple fingers and the first one is moving.\n      this._endDraw(event);\n      return;\n    }\n    this._currentParent.drawLayer.updateProperties(\n      this._currentDrawId,\n      DrawingEditor.#currentDraw.add(offsetX, offsetY)\n    );\n    // We track the timestamp to know if the touchmove event is used to draw.\n    CurrentPointers.setTimeStamp(event.timeStamp);\n    stopEvent(event);\n  }\n\n  static _cleanup(all) {\n    if (all) {\n      this._currentDrawId = -1;\n      this._currentParent = null;\n      DrawingEditor.#currentDraw = null;\n      DrawingEditor.#currentDrawingOptions = null;\n      CurrentPointers.clearTimeStamp();\n    }\n\n    if (DrawingEditor.#currentDrawingAC) {\n      DrawingEditor.#currentDrawingAC.abort();\n      DrawingEditor.#currentDrawingAC = null;\n      CurrentPointers.clearPointerIds();\n    }\n  }\n\n  static _endDraw(event) {\n    const parent = this._currentParent;\n    if (!parent) {\n      return;\n    }\n\n    parent.toggleDrawing(true);\n    this._cleanup(false);\n\n    if (event?.target === parent.div) {\n      parent.drawLayer.updateProperties(\n        this._currentDrawId,\n        DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY)\n      );\n    }\n    if (this.supportMultipleDrawings) {\n      const draw = DrawingEditor.#currentDraw;\n      const drawId = this._currentDrawId;\n      const lastElement = draw.getLastElement();\n      parent.addCommands({\n        cmd: () => {\n          parent.drawLayer.updateProperties(\n            drawId,\n            draw.setLastElement(lastElement)\n          );\n        },\n        undo: () => {\n          parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n        },\n        mustExec: false,\n        type: AnnotationEditorParamsType.DRAW_STEP,\n      });\n\n      return;\n    }\n\n    this.endDrawing(/* isAborted = */ false);\n  }\n\n  static endDrawing(isAborted) {\n    const parent = this._currentParent;\n    if (!parent) {\n      return null;\n    }\n    parent.toggleDrawing(true);\n    parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n\n    if (!DrawingEditor.#currentDraw.isEmpty()) {\n      const {\n        pageDimensions: [pageWidth, pageHeight],\n        scale,\n      } = parent;\n\n      const editor = parent.createAndAddNewEditor(\n        { offsetX: 0, offsetY: 0 },\n        false,\n        {\n          drawId: this._currentDrawId,\n          drawOutlines: DrawingEditor.#currentDraw.getOutlines(\n            pageWidth * scale,\n            pageHeight * scale,\n            scale,\n            this._INNER_MARGIN\n          ),\n          drawingOptions: DrawingEditor.#currentDrawingOptions,\n          mustBeCommitted: !isAborted,\n        }\n      );\n      this._cleanup(true);\n      return editor;\n    }\n\n    parent.drawLayer.remove(this._currentDrawId);\n    this._cleanup(true);\n    return null;\n  }\n\n  /**\n   * Create the drawing options.\n   * @param {Object} _data\n   */\n  createDrawingOptions(_data) {}\n\n  /**\n   * Deserialize the drawing outlines.\n   * @param {number} pageX - The x coordinate of the page.\n   * @param {number} pageY - The y coordinate of the page.\n   * @param {number} pageWidth - The width of the page.\n   * @param {number} pageHeight - The height of the page.\n   * @param {number} innerWidth - The inner width.\n   * @param {Object} data - The data to deserialize.\n   * @returns {Object} The deserialized outlines.\n   */\n  static deserializeDraw(\n    _pageX,\n    _pageY,\n    _pageWidth,\n    _pageHeight,\n    _innerWidth,\n    _data\n  ) {\n    unreachable(\"Not implemented\");\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    const {\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\n    } = parent.viewport;\n    const drawOutlines = this.deserializeDraw(\n      pageX,\n      pageY,\n      pageWidth,\n      pageHeight,\n      this._INNER_MARGIN,\n      data\n    );\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.createDrawingOptions(data);\n    editor.#createDrawOutlines({ drawOutlines });\n    editor.#addToDrawLayer();\n    editor.onScaleChanging();\n    editor.rotate();\n\n    return editor;\n  }\n\n  serializeDraw(isForCopying) {\n    const [pageX, pageY] = this.pageTranslation;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    return this.#drawOutlines.serialize(\n      [pageX, pageY, pageWidth, pageHeight],\n      isForCopying\n    );\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getPDFRect(),\n    });\n\n    return null;\n  }\n\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\nexport { DrawingEditor, DrawingOptions };\n", "/* Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MathClamp, Util } from \"../../../shared/util.js\";\nimport { Outline } from \"./outline.js\";\n\nclass InkDrawOutliner {\n  // The last 3 points of the line.\n  #last = new Float64Array(6);\n\n  #line;\n\n  #lines;\n\n  #rotation;\n\n  #thickness;\n\n  #points;\n\n  #lastSVGPath = \"\";\n\n  #lastIndex = 0;\n\n  #outlines = new InkDrawOutline();\n\n  #parentWidth;\n\n  #parentHeight;\n\n  constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#rotation = rotation;\n    this.#thickness = thickness;\n\n    [x, y] = this.#normalizePoint(x, y);\n\n    const line = (this.#line = [NaN, NaN, NaN, NaN, x, y]);\n    this.#points = [x, y];\n    this.#lines = [{ line, points: this.#points }];\n    this.#last.set(line, 0);\n  }\n\n  updateProperty(name, value) {\n    if (name === \"stroke-width\") {\n      this.#thickness = value;\n    }\n  }\n\n  #normalizePoint(x, y) {\n    return Outline._normalizePoint(\n      x,\n      y,\n      this.#parentWidth,\n      this.#parentHeight,\n      this.#rotation\n    );\n  }\n\n  isEmpty() {\n    return !this.#lines || this.#lines.length === 0;\n  }\n\n  isCancellable() {\n    // The user a second finger after drawing 5 points: it's small enough\n    // to not be a real drawing.\n    return this.#points.length <= 10;\n  }\n\n  add(x, y) {\n    // The point is in canvas coordinates which means that there is no rotation.\n    // It's the same as parent coordinates.\n    [x, y] = this.#normalizePoint(x, y);\n    const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n    if (d <= 2) {\n      // The idea is to avoid garbage points around the last point.\n      // When the points are too close, it just leads to bad normal vectors and\n      // control points.\n      return null;\n    }\n\n    this.#points.push(x, y);\n\n    if (isNaN(x1)) {\n      // We've only one point.\n      this.#last.set([x2, y2, x, y], 2);\n      this.#line.push(NaN, NaN, NaN, NaN, x, y);\n      return {\n        path: {\n          d: this.toSVGPath(),\n        },\n      };\n    }\n\n    if (isNaN(this.#last[0])) {\n      // We've only two points.\n      this.#line.splice(6, 6);\n    }\n\n    this.#last.set([x1, y1, x2, y2, x, y], 0);\n    this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n\n    return {\n      path: {\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  end(x, y) {\n    const change = this.add(x, y);\n    if (change) {\n      return change;\n    }\n    if (this.#points.length === 2) {\n      // We've only one point.\n      return {\n        path: {\n          d: this.toSVGPath(),\n        },\n      };\n    }\n    return null;\n  }\n\n  startNew(x, y, parentWidth, parentHeight, rotation) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#rotation = rotation;\n\n    [x, y] = this.#normalizePoint(x, y);\n\n    const line = (this.#line = [NaN, NaN, NaN, NaN, x, y]);\n    this.#points = [x, y];\n    const last = this.#lines.at(-1);\n    if (last) {\n      last.line = new Float32Array(last.line);\n      last.points = new Float32Array(last.points);\n    }\n    this.#lines.push({ line, points: this.#points });\n    this.#last.set(line, 0);\n    this.#lastIndex = 0;\n    this.toSVGPath();\n\n    return null;\n  }\n\n  getLastElement() {\n    return this.#lines.at(-1);\n  }\n\n  setLastElement(element) {\n    if (!this.#lines) {\n      return this.#outlines.setLastElement(element);\n    }\n    this.#lines.push(element);\n    this.#line = element.line;\n    this.#points = element.points;\n    this.#lastIndex = 0;\n    return {\n      path: {\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  removeLastElement() {\n    if (!this.#lines) {\n      return this.#outlines.removeLastElement();\n    }\n    this.#lines.pop();\n    this.#lastSVGPath = \"\";\n    for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n      const { line, points } = this.#lines[i];\n      this.#line = line;\n      this.#points = points;\n      this.#lastIndex = 0;\n      this.toSVGPath();\n    }\n\n    return {\n      path: {\n        d: this.#lastSVGPath,\n      },\n    };\n  }\n\n  toSVGPath() {\n    const firstX = Outline.svgRound(this.#line[4]);\n    const firstY = Outline.svgRound(this.#line[5]);\n    if (this.#points.length === 2) {\n      this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n      return this.#lastSVGPath;\n    }\n\n    if (this.#points.length <= 6) {\n      // We've 2 or 3 points.\n      const i = this.#lastSVGPath.lastIndexOf(\"M\");\n      this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n      this.#lastIndex = 6;\n    }\n\n    if (this.#points.length === 4) {\n      const secondX = Outline.svgRound(this.#line[10]);\n      const secondY = Outline.svgRound(this.#line[11]);\n      this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n      this.#lastIndex = 12;\n      return this.#lastSVGPath;\n    }\n\n    const buffer = [];\n    if (this.#lastIndex === 0) {\n      buffer.push(`M ${firstX} ${firstY}`);\n      this.#lastIndex = 6;\n    }\n\n    for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n      const [c1x, c1y, c2x, c2y, x, y] = this.#line\n        .slice(i, i + 6)\n        .map(Outline.svgRound);\n      buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n    }\n    this.#lastSVGPath += buffer.join(\" \");\n    this.#lastIndex = this.#line.length;\n\n    return this.#lastSVGPath;\n  }\n\n  getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n    const last = this.#lines.at(-1);\n    last.line = new Float32Array(last.line);\n    last.points = new Float32Array(last.points);\n\n    this.#outlines.build(\n      this.#lines,\n      parentWidth,\n      parentHeight,\n      scale,\n      this.#rotation,\n      this.#thickness,\n      innerMargin\n    );\n\n    // We reset everything: the drawing is done.\n    this.#last = null;\n    this.#line = null;\n    this.#lines = null;\n    this.#lastSVGPath = null;\n\n    return this.#outlines;\n  }\n\n  get defaultSVGProperties() {\n    return {\n      root: {\n        viewBox: \"0 0 10000 10000\",\n      },\n      rootClass: {\n        draw: true,\n      },\n      bbox: [0, 0, 1, 1],\n    };\n  }\n}\n\nclass InkDrawOutline extends Outline {\n  #bbox;\n\n  #currentRotation = 0;\n\n  #innerMargin;\n\n  #lines;\n\n  #parentWidth;\n\n  #parentHeight;\n\n  #parentScale;\n\n  #rotation;\n\n  #thickness;\n\n  build(\n    lines,\n    parentWidth,\n    parentHeight,\n    parentScale,\n    rotation,\n    thickness,\n    innerMargin\n  ) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#parentScale = parentScale;\n    this.#rotation = rotation;\n    this.#thickness = thickness;\n    this.#innerMargin = innerMargin ?? 0;\n    this.#lines = lines;\n\n    this.#computeBbox();\n  }\n\n  get thickness() {\n    return this.#thickness;\n  }\n\n  setLastElement(element) {\n    this.#lines.push(element);\n    return {\n      path: {\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  removeLastElement() {\n    this.#lines.pop();\n    return {\n      path: {\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  toSVGPath() {\n    const buffer = [];\n    for (const { line } of this.#lines) {\n      buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n      if (line.length === 6) {\n        buffer.push(\"Z\");\n        continue;\n      }\n      if (line.length === 12 && isNaN(line[6])) {\n        buffer.push(\n          `L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`\n        );\n        continue;\n      }\n      for (let i = 6, ii = line.length; i < ii; i += 6) {\n        const [c1x, c1y, c2x, c2y, x, y] = line\n          .subarray(i, i + 6)\n          .map(Outline.svgRound);\n        buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n      }\n    }\n    return buffer.join(\"\");\n  }\n\n  serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n    const serializedLines = [];\n    const serializedPoints = [];\n    const [x, y, width, height] = this.#getBBoxWithNoMargin();\n    let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n\n    switch (this.#rotation) {\n      case 0:\n        rescaleFn = Outline._rescale;\n        tx = pageX;\n        ty = pageY + pageHeight;\n        sx = pageWidth;\n        sy = -pageHeight;\n        x1 = pageX + x * pageWidth;\n        y1 = pageY + (1 - y - height) * pageHeight;\n        x2 = pageX + (x + width) * pageWidth;\n        y2 = pageY + (1 - y) * pageHeight;\n        break;\n      case 90:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageX;\n        ty = pageY;\n        sx = pageWidth;\n        sy = pageHeight;\n        x1 = pageX + y * pageWidth;\n        y1 = pageY + x * pageHeight;\n        x2 = pageX + (y + height) * pageWidth;\n        y2 = pageY + (x + width) * pageHeight;\n        break;\n      case 180:\n        rescaleFn = Outline._rescale;\n        tx = pageX + pageWidth;\n        ty = pageY;\n        sx = -pageWidth;\n        sy = pageHeight;\n        x1 = pageX + (1 - x - width) * pageWidth;\n        y1 = pageY + y * pageHeight;\n        x2 = pageX + (1 - x) * pageWidth;\n        y2 = pageY + (y + height) * pageHeight;\n        break;\n      case 270:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageX + pageWidth;\n        ty = pageY + pageHeight;\n        sx = -pageWidth;\n        sy = -pageHeight;\n        x1 = pageX + (1 - y - height) * pageWidth;\n        y1 = pageY + (1 - x - width) * pageHeight;\n        x2 = pageX + (1 - y) * pageWidth;\n        y2 = pageY + (1 - x) * pageHeight;\n        break;\n    }\n\n    for (const { line, points } of this.#lines) {\n      serializedLines.push(\n        rescaleFn(\n          line,\n          tx,\n          ty,\n          sx,\n          sy,\n          isForCopying ? new Array(line.length) : null\n        )\n      );\n      serializedPoints.push(\n        rescaleFn(\n          points,\n          tx,\n          ty,\n          sx,\n          sy,\n          isForCopying ? new Array(points.length) : null\n        )\n      );\n    }\n\n    return {\n      lines: serializedLines,\n      points: serializedPoints,\n      rect: [x1, y1, x2, y2],\n    };\n  }\n\n  static deserialize(\n    pageX,\n    pageY,\n    pageWidth,\n    pageHeight,\n    innerMargin,\n    { paths: { lines, points }, rotation, thickness }\n  ) {\n    const newLines = [];\n    let tx, ty, sx, sy, rescaleFn;\n    switch (rotation) {\n      case 0:\n        rescaleFn = Outline._rescale;\n        tx = -pageX / pageWidth;\n        ty = pageY / pageHeight + 1;\n        sx = 1 / pageWidth;\n        sy = -1 / pageHeight;\n        break;\n      case 90:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = -pageY / pageHeight;\n        ty = -pageX / pageWidth;\n        sx = 1 / pageHeight;\n        sy = 1 / pageWidth;\n        break;\n      case 180:\n        rescaleFn = Outline._rescale;\n        tx = pageX / pageWidth + 1;\n        ty = -pageY / pageHeight;\n        sx = -1 / pageWidth;\n        sy = 1 / pageHeight;\n        break;\n      case 270:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageY / pageHeight + 1;\n        ty = pageX / pageWidth + 1;\n        sx = -1 / pageHeight;\n        sy = -1 / pageWidth;\n        break;\n    }\n\n    if (!lines) {\n      lines = [];\n      for (const point of points) {\n        const len = point.length;\n        if (len === 2) {\n          lines.push(\n            new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]])\n          );\n          continue;\n        }\n        if (len === 4) {\n          lines.push(\n            new Float32Array([\n              NaN,\n              NaN,\n              NaN,\n              NaN,\n              point[0],\n              point[1],\n              NaN,\n              NaN,\n              NaN,\n              NaN,\n              point[2],\n              point[3],\n            ])\n          );\n          continue;\n        }\n        const line = new Float32Array(3 * (len - 2));\n        lines.push(line);\n        let [x1, y1, x2, y2] = point.subarray(0, 4);\n        line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n        for (let i = 4; i < len; i += 2) {\n          const x = point[i];\n          const y = point[i + 1];\n          line.set(\n            Outline.createBezierPoints(x1, y1, x2, y2, x, y),\n            (i - 2) * 3\n          );\n          [x1, y1, x2, y2] = [x2, y2, x, y];\n        }\n      }\n    }\n\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      newLines.push({\n        line: rescaleFn(\n          lines[i].map(x => x ?? NaN),\n          tx,\n          ty,\n          sx,\n          sy\n        ),\n        points: rescaleFn(\n          points[i].map(x => x ?? NaN),\n          tx,\n          ty,\n          sx,\n          sy\n        ),\n      });\n    }\n\n    const outlines = new this.prototype.constructor();\n    outlines.build(\n      newLines,\n      pageWidth,\n      pageHeight,\n      1,\n      rotation,\n      thickness,\n      innerMargin\n    );\n\n    return outlines;\n  }\n\n  #getMarginComponents(thickness = this.#thickness) {\n    const margin = this.#innerMargin + (thickness / 2) * this.#parentScale;\n    return this.#rotation % 180 === 0\n      ? [margin / this.#parentWidth, margin / this.#parentHeight]\n      : [margin / this.#parentHeight, margin / this.#parentWidth];\n  }\n\n  #getBBoxWithNoMargin() {\n    const [x, y, width, height] = this.#bbox;\n    const [marginX, marginY] = this.#getMarginComponents(0);\n\n    return [\n      x + marginX,\n      y + marginY,\n      width - 2 * marginX,\n      height - 2 * marginY,\n    ];\n  }\n\n  #computeBbox() {\n    const bbox = (this.#bbox = new Float32Array([\n      Infinity,\n      Infinity,\n      -Infinity,\n      -Infinity,\n    ]));\n\n    for (const { line } of this.#lines) {\n      if (line.length <= 12) {\n        // We've only one or two points => no bezier curve.\n        for (let i = 4, ii = line.length; i < ii; i += 6) {\n          Util.pointBoundingBox(line[i], line[i + 1], bbox);\n        }\n        continue;\n      }\n      let lastX = line[4],\n        lastY = line[5];\n      for (let i = 6, ii = line.length; i < ii; i += 6) {\n        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n        Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n        lastX = x;\n        lastY = y;\n      }\n    }\n\n    const [marginX, marginY] = this.#getMarginComponents();\n    bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n    bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n    bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n    bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n\n    bbox[2] -= bbox[0];\n    bbox[3] -= bbox[1];\n  }\n\n  get box() {\n    return this.#bbox;\n  }\n\n  updateProperty(name, value) {\n    if (name === \"stroke-width\") {\n      return this.#updateThickness(value);\n    }\n    return null;\n  }\n\n  #updateThickness(thickness) {\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n    this.#thickness = thickness;\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\n    const [diffMarginX, diffMarginY] = [\n      newMarginX - oldMarginX,\n      newMarginY - oldMarginY,\n    ];\n    const bbox = this.#bbox;\n    bbox[0] -= diffMarginX;\n    bbox[1] -= diffMarginY;\n    bbox[2] += 2 * diffMarginX;\n    bbox[3] += 2 * diffMarginY;\n\n    return bbox;\n  }\n\n  updateParentDimensions([width, height], scale) {\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n    this.#parentWidth = width;\n    this.#parentHeight = height;\n    this.#parentScale = scale;\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\n    const diffMarginX = newMarginX - oldMarginX;\n    const diffMarginY = newMarginY - oldMarginY;\n\n    const bbox = this.#bbox;\n    bbox[0] -= diffMarginX;\n    bbox[1] -= diffMarginY;\n    bbox[2] += 2 * diffMarginX;\n    bbox[3] += 2 * diffMarginY;\n\n    return bbox;\n  }\n\n  updateRotation(rotation) {\n    this.#currentRotation = rotation;\n    return {\n      path: {\n        transform: this.rotationTransform,\n      },\n    };\n  }\n\n  get viewBox() {\n    return this.#bbox.map(Outline.svgRound).join(\" \");\n  }\n\n  get defaultProperties() {\n    const [x, y] = this.#bbox;\n    return {\n      root: {\n        viewBox: this.viewBox,\n      },\n      path: {\n        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n      },\n    };\n  }\n\n  get rotationTransform() {\n    const [, , width, height] = this.#bbox;\n    let a = 0,\n      b = 0,\n      c = 0,\n      d = 0,\n      e = 0,\n      f = 0;\n    switch (this.#currentRotation) {\n      case 90:\n        b = height / width;\n        c = -width / height;\n        e = width;\n        break;\n      case 180:\n        a = -1;\n        d = -1;\n        e = width;\n        f = height;\n        break;\n      case 270:\n        b = -height / width;\n        c = width / height;\n        f = height;\n        break;\n      default:\n        return \"\";\n    }\n    return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n  }\n\n  getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n    const [marginX, marginY] = this.#getMarginComponents();\n    const [x, y, width, height] = this.#bbox;\n\n    if (\n      Math.abs(width - marginX) <= Outline.PRECISION ||\n      Math.abs(height - marginY) <= Outline.PRECISION\n    ) {\n      // Center the path in the new bounding box.\n      const tx = newX + newWidth / 2 - (x + width / 2);\n      const ty = newY + newHeight / 2 - (y + height / 2);\n      return {\n        path: {\n          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n          transform: `${this.rotationTransform} translate(${tx} ${ty})`,\n        },\n      };\n    }\n\n    // We compute the following transform:\n    //  1. Translate the path to the origin (-marginX, -marginY).\n    //  2. Scale the path to the new size:\n    //   ((newWidth - 2*marginX) / (bbox.width - 2*marginX),\n    //   (newHeight - 2*marginY) / (bbox.height - 2*marginY)).\n    //  3. Translate the path back to its original position\n    //   (marginX, marginY).\n    //  4. Scale the inverse of bbox scaling:\n    //   (bbox.width / newWidth, bbox.height / newHeight).\n\n    const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n    const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n    const s2x = width / newWidth;\n    const s2y = height / newHeight;\n\n    return {\n      path: {\n        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n        transform:\n          `${this.rotationTransform} scale(${s2x} ${s2y}) ` +\n          `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` +\n          `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`,\n      },\n    };\n  }\n\n  getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n    const [marginX, marginY] = this.#getMarginComponents();\n    const bbox = this.#bbox;\n    const [x, y, width, height] = bbox;\n\n    bbox[0] = newX;\n    bbox[1] = newY;\n    bbox[2] = newWidth;\n    bbox[3] = newHeight;\n\n    if (\n      Math.abs(width - marginX) <= Outline.PRECISION ||\n      Math.abs(height - marginY) <= Outline.PRECISION\n    ) {\n      // Center the path in the new bounding box.\n      const tx = newX + newWidth / 2 - (x + width / 2);\n      const ty = newY + newHeight / 2 - (y + height / 2);\n      for (const { line, points } of this.#lines) {\n        Outline._translate(line, tx, ty, line);\n        Outline._translate(points, tx, ty, points);\n      }\n      return {\n        root: {\n          viewBox: this.viewBox,\n        },\n        path: {\n          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n          transform: this.rotationTransform || null,\n          d: this.toSVGPath(),\n        },\n      };\n    }\n\n    // We compute the following transform:\n    //  1. Translate the path to the origin (-(x + marginX), -(y + marginY)).\n    //  2. Scale the path to the new size:\n    //   ((newWidth - 2*marginX) / (bbox.width - 2*marginX),\n    //   (newHeight - 2*marginY) / (bbox.height - 2*marginY)).\n    //  3. Translate the path back to its new position\n    //     (newX + marginX,y newY + marginY).\n\n    const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n    const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n    const tx = -s1x * (x + marginX) + newX + marginX;\n    const ty = -s1y * (y + marginY) + newY + marginY;\n\n    if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n      for (const { line, points } of this.#lines) {\n        Outline._rescale(line, tx, ty, s1x, s1y, line);\n        Outline._rescale(points, tx, ty, s1x, s1y, points);\n      }\n    }\n\n    return {\n      root: {\n        viewBox: this.viewBox,\n      },\n      path: {\n        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n        transform: this.rotationTransform || null,\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n    const [newParentWidth, newParentHeight] = parentDimensions;\n    const bbox = this.#bbox;\n    const tx = newX - bbox[0];\n    const ty = newY - bbox[1];\n\n    if (\n      this.#parentWidth === newParentWidth &&\n      this.#parentHeight === newParentHeight\n    ) {\n      // We don't change the parent dimensions so it's a simple translation.\n      for (const { line, points } of this.#lines) {\n        Outline._translate(line, tx, ty, line);\n        Outline._translate(points, tx, ty, points);\n      }\n    } else {\n      const sx = this.#parentWidth / newParentWidth;\n      const sy = this.#parentHeight / newParentHeight;\n      this.#parentWidth = newParentWidth;\n      this.#parentHeight = newParentHeight;\n\n      for (const { line, points } of this.#lines) {\n        Outline._rescale(line, tx, ty, sx, sy, line);\n        Outline._rescale(points, tx, ty, sx, sy, points);\n      }\n      bbox[2] *= sx;\n      bbox[3] *= sy;\n    }\n    bbox[0] = newX;\n    bbox[1] = newY;\n\n    return {\n      root: {\n        viewBox: this.viewBox,\n      },\n      path: {\n        d: this.toSVGPath(),\n        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n      },\n    };\n  }\n\n  get defaultSVGProperties() {\n    const bbox = this.#bbox;\n    return {\n      root: {\n        viewBox: this.viewBox,\n      },\n      rootClass: {\n        draw: true,\n      },\n      path: {\n        d: this.toSVGPath(),\n        \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n        transform: this.rotationTransform || null,\n      },\n      bbox,\n    };\n  }\n}\n\nexport { InkDrawOutline, InkDrawOutliner };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport { DrawingEditor, DrawingOptions } from \"./draw.js\";\nimport { InkDrawOutline, InkDrawOutliner } from \"./drawers/inkdraw.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { BasicColorPicker } from \"./color_picker.js\";\nimport { InkAnnotationElement } from \"../annotation_layer.js\";\n\nclass InkDrawingOptions extends DrawingOptions {\n  constructor(viewerParameters) {\n    super();\n    this._viewParameters = viewerParameters;\n\n    super.updateProperties({\n      fill: \"none\",\n      stroke: AnnotationEditor._defaultLineColor,\n      \"stroke-opacity\": 1,\n      \"stroke-width\": 1,\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"stroke-miterlimit\": 10,\n    });\n  }\n\n  updateSVGProperty(name, value) {\n    if (name === \"stroke-width\") {\n      value ??= this[\"stroke-width\"];\n      value *= this._viewParameters.realScale;\n    }\n    super.updateSVGProperty(name, value);\n  }\n\n  clone() {\n    const clone = new InkDrawingOptions(this._viewParameters);\n    clone.updateAll(this);\n    return clone;\n  }\n}\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends DrawingEditor {\n  static _type = \"ink\";\n\n  static _editorType = AnnotationEditorType.INK;\n\n  static _defaultDrawingOptions = null;\n\n  constructor(params) {\n    super({ ...params, name: \"inkEditor\" });\n    this._willKeepAspectRatio = true;\n    this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    this._defaultDrawingOptions = new InkDrawingOptions(\n      uiManager.viewParameters\n    );\n  }\n\n  /** @inheritdoc */\n  static getDefaultDrawingOptions(options) {\n    const clone = this._defaultDrawingOptions.clone();\n    clone.updateProperties(options);\n    return clone;\n  }\n\n  /** @inheritdoc */\n  static get supportMultipleDrawings() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  static get typesMap() {\n    return shadow(\n      this,\n      \"typesMap\",\n      new Map([\n        [AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"],\n        [AnnotationEditorParamsType.INK_COLOR, \"stroke\"],\n        [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"],\n      ])\n    );\n  }\n\n  /** @inheritdoc */\n  static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n    return new InkDrawOutliner(\n      x,\n      y,\n      parentWidth,\n      parentHeight,\n      rotation,\n      this._defaultDrawingOptions[\"stroke-width\"]\n    );\n  }\n\n  /** @inheritdoc */\n  static deserializeDraw(\n    pageX,\n    pageY,\n    pageWidth,\n    pageHeight,\n    innerMargin,\n    data\n  ) {\n    return InkDrawOutline.deserialize(\n      pageX,\n      pageY,\n      pageWidth,\n      pageHeight,\n      innerMargin,\n      data\n    );\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          borderStyle: { rawWidth: thickness },\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.INK,\n        color: Array.from(color),\n        thickness,\n        opacity,\n        paths: { points: inkLists },\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        popupRef,\n        richText,\n        comment: contentsObj?.str || null,\n        creationDate,\n        modificationDate,\n      };\n    }\n\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor._initialData = initialData;\n    if (data.comment) {\n      editor.setCommentData(data);\n    }\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    this._colorPicker ||= new BasicColorPicker(this);\n    return [[\"colorPicker\", this._colorPicker]];\n  }\n\n  get colorType() {\n    return AnnotationEditorParamsType.INK_COLOR;\n  }\n\n  get color() {\n    return this._drawingOptions.stroke;\n  }\n\n  get opacity() {\n    return this._drawingOptions[\"stroke-opacity\"];\n  }\n\n  /** @inheritdoc */\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    super.onScaleChanging();\n    const { _drawId, _drawingOptions, parent } = this;\n    _drawingOptions.updateSVGProperty(\"stroke-width\");\n    parent.drawLayer.updateProperties(\n      _drawId,\n      _drawingOptions.toSVGProperties()\n    );\n  }\n\n  static onScaleChangingWhenDrawing() {\n    const parent = this._currentParent;\n    if (!parent) {\n      return;\n    }\n    super.onScaleChangingWhenDrawing();\n    this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n    parent.drawLayer.updateProperties(\n      this._currentDrawId,\n      this._defaultDrawingOptions.toSVGProperties()\n    );\n  }\n\n  /** @inheritdoc */\n  createDrawingOptions({ color, thickness, opacity }) {\n    this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n      stroke: Util.makeHexColor(...color),\n      \"stroke-width\": thickness,\n      \"stroke-opacity\": opacity,\n    });\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n\n    const { lines, points } = this.serializeDraw(isForCopying);\n    const {\n      _drawingOptions: {\n        stroke,\n        \"stroke-opacity\": opacity,\n        \"stroke-width\": thickness,\n      },\n    } = this;\n    const serialized = Object.assign(super.serialize(isForCopying), {\n      color: AnnotationEditor._colorManager.convert(stroke),\n      opacity,\n      thickness,\n      paths: {\n        lines,\n        points,\n      },\n    });\n    this.addComment(serialized);\n\n    if (isForCopying) {\n      serialized.isCopy = true;\n      return serialized;\n    }\n\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const { color, thickness, opacity, pageIndex } = this._initialData;\n    return (\n      this.hasEditedComment ||\n      this._hasBeenMoved ||\n      this._hasBeenResized ||\n      serialized.color.some((c, i) => c !== color[i]) ||\n      serialized.thickness !== thickness ||\n      serialized.opacity !== opacity ||\n      serialized.pageIndex !== pageIndex\n    );\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    if (this.deleted) {\n      annotation.hide();\n      return null;\n    }\n    const { points, rect } = this.serializeDraw(/* isForCopying = */ false);\n    annotation.updateEdited({\n      rect,\n      thickness: this._drawingOptions[\"stroke-width\"],\n      points,\n      popup: this.comment,\n    });\n\n    return null;\n  }\n}\n\nexport { InkDrawingOptions, InkEditor };\n", "/* Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InkDrawOutline } from \"./inkdraw.js\";\n\nclass ContourDrawOutline extends InkDrawOutline {\n  toSVGPath() {\n    let path = super.toSVGPath();\n    if (!path.endsWith(\"Z\")) {\n      path += \"Z\";\n    }\n    return path;\n  }\n}\n\nexport { ContourDrawOutline };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { fromBase64Util, toBase64Util, warn } from \"../../../shared/util.js\";\nimport { ContourDrawOutline } from \"./contour.js\";\nimport { InkDrawOutline } from \"./inkdraw.js\";\nimport { Outline } from \"./outline.js\";\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\n\n/**\n * Basic text editor in order to create a Signature annotation.\n */\nclass SignatureExtractor {\n  static #PARAMETERS = {\n    maxDim: 512,\n    sigmaSFactor: 0.02,\n    sigmaR: 25,\n    kernelSize: 16,\n  };\n\n  static #neighborIndexToId(i0, j0, i, j) {\n    /*\n      The idea is to map the neighbors of a pixel into a unique id.\n        3 2 1\n        4 X 0\n        5 6 7\n    */\n\n    i -= i0;\n    j -= j0;\n\n    if (i === 0) {\n      return j > 0 ? 0 : 4;\n    }\n\n    if (i === 1) {\n      return j + 6;\n    }\n\n    return 2 - j;\n  }\n\n  static #neighborIdToIndex = new Int32Array([\n    0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1,\n  ]);\n\n  static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n    const id = this.#neighborIndexToId(i0, j0, i, j);\n    for (let k = 0; k < 8; k++) {\n      const kk = (-k + id - offset + 16) % 8;\n      const shiftI = this.#neighborIdToIndex[2 * kk];\n      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n        return kk;\n      }\n    }\n    return -1;\n  }\n\n  static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n    const id = this.#neighborIndexToId(i0, j0, i, j);\n    for (let k = 0; k < 8; k++) {\n      const kk = (k + id + offset + 16) % 8;\n      const shiftI = this.#neighborIdToIndex[2 * kk];\n      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n        return kk;\n      }\n    }\n    return -1;\n  }\n\n  static #findContours(buf, width, height, threshold) {\n    // Based on the Suzuki's algorithm:\n    //  https://web.archive.org/web/20231213161741/https://www.nevis.columbia.edu/~vgenty/public/suzuki_et_al.pdf\n\n    const N = buf.length;\n    const types = new Int32Array(N);\n    for (let i = 0; i < N; i++) {\n      types[i] = buf[i] <= threshold ? 1 : 0;\n    }\n\n    for (let i = 1; i < height - 1; i++) {\n      types[i * width] = types[i * width + width - 1] = 0;\n    }\n    for (let i = 0; i < width; i++) {\n      types[i] = types[width * height - 1 - i] = 0;\n    }\n\n    let nbd = 1;\n    let lnbd;\n    const contours = [];\n\n    for (let i = 1; i < height - 1; i++) {\n      lnbd = 1;\n      for (let j = 1; j < width - 1; j++) {\n        const ij = i * width + j;\n        const pix = types[ij];\n        if (pix === 0) {\n          continue;\n        }\n\n        let i2 = i;\n        let j2 = j;\n\n        if (pix === 1 && types[ij - 1] === 0) {\n          // Outer border.\n          nbd += 1;\n          j2 -= 1;\n        } else if (pix >= 1 && types[ij + 1] === 0) {\n          // Hole border.\n          nbd += 1;\n          j2 += 1;\n          if (pix > 1) {\n            lnbd = pix;\n          }\n        } else {\n          if (pix !== 1) {\n            lnbd = Math.abs(pix);\n          }\n          continue;\n        }\n\n        const points = [j, i];\n        const isHole = j2 === j + 1;\n        const contour = {\n          isHole,\n          points,\n          id: nbd,\n          parent: 0,\n        };\n        contours.push(contour);\n\n        let contour0;\n        for (const c of contours) {\n          if (c.id === lnbd) {\n            contour0 = c;\n            break;\n          }\n        }\n\n        if (!contour0) {\n          contour.parent = isHole ? lnbd : 0;\n        } else if (contour0.isHole) {\n          contour.parent = isHole ? contour0.parent : lnbd;\n        } else {\n          contour.parent = isHole ? lnbd : contour0.parent;\n        }\n\n        const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n        if (k === -1) {\n          types[ij] = -nbd;\n          if (types[ij] !== 1) {\n            lnbd = Math.abs(types[ij]);\n          }\n          continue;\n        }\n\n        let shiftI = this.#neighborIdToIndex[2 * k];\n        let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n        const i1 = i + shiftI;\n        const j1 = j + shiftJ;\n        i2 = i1;\n        j2 = j1;\n        let i3 = i;\n        let j3 = j;\n\n        while (true) {\n          const kk = this.#counterClockwiseNonZero(\n            types,\n            width,\n            i3,\n            j3,\n            i2,\n            j2,\n            1\n          );\n          shiftI = this.#neighborIdToIndex[2 * kk];\n          shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n          const i4 = i3 + shiftI;\n          const j4 = j3 + shiftJ;\n          points.push(j4, i4);\n          const ij3 = i3 * width + j3;\n          if (types[ij3 + 1] === 0) {\n            types[ij3] = -nbd;\n          } else if (types[ij3] === 1) {\n            types[ij3] = nbd;\n          }\n\n          if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n            if (types[ij] !== 1) {\n              lnbd = Math.abs(types[ij]);\n            }\n            break;\n          } else {\n            i2 = i3;\n            j2 = j3;\n            i3 = i4;\n            j3 = j4;\n          }\n        }\n      }\n    }\n    return contours;\n  }\n\n  static #douglasPeuckerHelper(points, start, end, output) {\n    // Based on the Douglas-Peucker algorithm:\n    //  https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm\n    if (end - start <= 4) {\n      for (let i = start; i < end - 2; i += 2) {\n        output.push(points[i], points[i + 1]);\n      }\n      return;\n    }\n\n    const ax = points[start];\n    const ay = points[start + 1];\n    const abx = points[end - 4] - ax;\n    const aby = points[end - 3] - ay;\n    const dist = Math.hypot(abx, aby);\n    const nabx = abx / dist;\n    const naby = aby / dist;\n    const aa = nabx * ay - naby * ax;\n\n    // Guessing the epsilon value.\n    // See \"A novel framework for making dominant point detection methods\n    // non-parametric\".\n    const m = aby / abx;\n    const invS = 1 / dist;\n    const phi = Math.atan(m);\n    const cosPhi = Math.cos(phi);\n    const sinPhi = Math.sin(phi);\n    const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n    const poly = invS * (1 - tmax + tmax ** 2);\n    const partialPhi = Math.max(\n      Math.atan(Math.abs(sinPhi + cosPhi) * poly),\n      Math.atan(Math.abs(sinPhi - cosPhi) * poly)\n    );\n\n    let dmax = 0;\n    let index = start;\n    for (let i = start + 2; i < end - 2; i += 2) {\n      const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n      if (d > dmax) {\n        index = i;\n        dmax = d;\n      }\n    }\n\n    if (dmax > (dist * partialPhi) ** 2) {\n      this.#douglasPeuckerHelper(points, start, index + 2, output);\n      this.#douglasPeuckerHelper(points, index, end, output);\n    } else {\n      output.push(ax, ay);\n    }\n  }\n\n  static #douglasPeucker(points) {\n    const output = [];\n    const len = points.length;\n    this.#douglasPeuckerHelper(points, 0, len, output);\n    output.push(points[len - 2], points[len - 1]);\n    return output.length <= 4 ? null : output;\n  }\n\n  static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n    // The bilateral filter is a nonlinear filter that does spatial averaging.\n    // Its main interest is to preserve edges while removing noise.\n    // See https://en.wikipedia.org/wiki/Bilateral_filter for more details.\n    // sigmaS is the standard deviation of the spatial gaussian.\n    // sigmaR is the standard deviation of the range (in term of pixel\n    // intensity) gaussian.\n\n    // Create a gaussian kernel\n    const kernel = new Float32Array(kernelSize ** 2);\n    const sigmaS2 = -2 * sigmaS ** 2;\n    const halfSize = kernelSize >> 1;\n\n    for (let i = 0; i < kernelSize; i++) {\n      const x = (i - halfSize) ** 2;\n      for (let j = 0; j < kernelSize; j++) {\n        kernel[i * kernelSize + j] = Math.exp(\n          (x + (j - halfSize) ** 2) / sigmaS2\n        );\n      }\n    }\n\n    // Create the range values to be used with the distance between pixels.\n    // It's a way faster with a lookup table than computing the exponential.\n    const rangeValues = new Float32Array(256);\n    const sigmaR2 = -2 * sigmaR ** 2;\n    for (let i = 0; i < 256; i++) {\n      rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n    }\n\n    const N = buf.length;\n    const out = new Uint8Array(N);\n\n    // We compute the histogram here instead of doing it later: it's slightly\n    // faster.\n    const histogram = new Uint32Array(256);\n    for (let i = 0; i < height; i++) {\n      for (let j = 0; j < width; j++) {\n        const ij = i * width + j;\n        const center = buf[ij];\n        let sum = 0;\n        let norm = 0;\n\n        for (let k = 0; k < kernelSize; k++) {\n          const y = i + k - halfSize;\n          if (y < 0 || y >= height) {\n            continue;\n          }\n          for (let l = 0; l < kernelSize; l++) {\n            const x = j + l - halfSize;\n            if (x < 0 || x >= width) {\n              continue;\n            }\n            const neighbour = buf[y * width + x];\n            const w =\n              kernel[k * kernelSize + l] *\n              rangeValues[Math.abs(neighbour - center)];\n            sum += neighbour * w;\n            norm += w;\n          }\n        }\n\n        const pix = (out[ij] = Math.round(sum / norm));\n        histogram[pix]++;\n      }\n    }\n\n    return [out, histogram];\n  }\n\n  static #getHistogram(buf) {\n    const histogram = new Uint32Array(256);\n    for (const g of buf) {\n      histogram[g]++;\n    }\n    return histogram;\n  }\n\n  static #toUint8(buf) {\n    // We have a RGBA buffer, containing a grayscale image.\n    // We want to convert it into a basic G buffer.\n    // Also, we want to normalize the values between 0 and 255 in order to\n    // increase the contrast.\n    const N = buf.length;\n    const out = new Uint8ClampedArray(N >> 2);\n    let max = -Infinity;\n    let min = Infinity;\n    for (let i = 0, ii = out.length; i < ii; i++) {\n      const pix = (out[i] = buf[i << 2]);\n      max = Math.max(max, pix);\n      min = Math.min(min, pix);\n    }\n    const ratio = 255 / (max - min);\n    for (let i = 0, ii = out.length; i < ii; i++) {\n      out[i] = (out[i] - min) * ratio;\n    }\n\n    return out;\n  }\n\n  static #guessThreshold(histogram) {\n    // We want to find the threshold that will separate the background from the\n    // foreground.\n    // We could have used Otsu's method, but unfortunately it doesn't work well\n    // when the background has too much shade of greys.\n    // So the idea is to find a maximum in the black part of the histogram and\n    // figure out the value which will be the first one of the white part.\n\n    let i;\n    let M = -Infinity;\n    let L = -Infinity;\n    const min = histogram.findIndex(v => v !== 0);\n    let pos = min;\n    let spos = min;\n    for (i = min; i < 256; i++) {\n      const v = histogram[i];\n      if (v > M) {\n        if (i - pos > L) {\n          L = i - pos;\n          spos = i - 1;\n        }\n        M = v;\n        pos = i;\n      }\n    }\n    for (i = spos - 1; i >= 0; i--) {\n      if (histogram[i] > histogram[i + 1]) {\n        break;\n      }\n    }\n\n    return i;\n  }\n\n  static #getGrayPixels(bitmap) {\n    const originalBitmap = bitmap;\n    const { width, height } = bitmap;\n    const { maxDim } = this.#PARAMETERS;\n    let newWidth = width;\n    let newHeight = height;\n\n    if (width > maxDim || height > maxDim) {\n      let prevWidth = width;\n      let prevHeight = height;\n\n      let steps = Math.log2(Math.max(width, height) / maxDim);\n      const isteps = Math.floor(steps);\n      steps = steps === isteps ? isteps - 1 : isteps;\n      for (let i = 0; i < steps; i++) {\n        newWidth = Math.ceil(prevWidth / 2);\n        newHeight = Math.ceil(prevHeight / 2);\n\n        const offscreen = new OffscreenCanvas(newWidth, newHeight);\n        const ctx = offscreen.getContext(\"2d\");\n        ctx.drawImage(\n          bitmap,\n          0,\n          0,\n          prevWidth,\n          prevHeight,\n          0,\n          0,\n          newWidth,\n          newHeight\n        );\n        prevWidth = newWidth;\n        prevHeight = newHeight;\n\n        // Release the resources associated with the bitmap.\n        if (bitmap !== originalBitmap) {\n          bitmap.close();\n        }\n        bitmap = offscreen.transferToImageBitmap();\n      }\n\n      const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n      newWidth = Math.round(newWidth * ratio);\n      newHeight = Math.round(newHeight * ratio);\n    }\n    const offscreen = new OffscreenCanvas(newWidth, newHeight);\n    const ctx = offscreen.getContext(\"2d\", { willReadFrequently: true });\n    ctx.fillStyle = \"white\";\n    ctx.fillRect(0, 0, newWidth, newHeight);\n    ctx.filter = \"grayscale(1)\";\n    ctx.drawImage(\n      bitmap,\n      0,\n      0,\n      bitmap.width,\n      bitmap.height,\n      0,\n      0,\n      newWidth,\n      newHeight\n    );\n    const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n    const uint8Buf = this.#toUint8(grayImage);\n\n    return [uint8Buf, newWidth, newHeight];\n  }\n\n  static extractContoursFromText(\n    text,\n    { fontFamily, fontStyle, fontWeight },\n    pageWidth,\n    pageHeight,\n    rotation,\n    innerMargin\n  ) {\n    let canvas = new OffscreenCanvas(1, 1);\n    let ctx = canvas.getContext(\"2d\", { alpha: false });\n    const fontSize = 200;\n    const font =\n      (ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`);\n    const {\n      actualBoundingBoxLeft,\n      actualBoundingBoxRight,\n      actualBoundingBoxAscent,\n      actualBoundingBoxDescent,\n      fontBoundingBoxAscent,\n      fontBoundingBoxDescent,\n      width,\n    } = ctx.measureText(text);\n\n    // We rescale the canvas to make \"sure\" the text fits.\n    const SCALE = 1.5;\n    const canvasWidth = Math.ceil(\n      Math.max(\n        Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0,\n        width\n      ) * SCALE\n    );\n    const canvasHeight = Math.ceil(\n      Math.max(\n        Math.abs(actualBoundingBoxAscent) +\n          Math.abs(actualBoundingBoxDescent) || fontSize,\n        Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) ||\n          fontSize\n      ) * SCALE\n    );\n    canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n    ctx = canvas.getContext(\"2d\", { alpha: true, willReadFrequently: true });\n    ctx.font = font;\n    ctx.filter = \"grayscale(1)\";\n    ctx.fillStyle = \"white\";\n    ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n    ctx.fillStyle = \"black\";\n    ctx.fillText(\n      text,\n      (canvasWidth * (SCALE - 1)) / 2,\n      (canvasHeight * (3 - SCALE)) / 2\n    );\n\n    const uint8Buf = this.#toUint8(\n      ctx.getImageData(0, 0, canvasWidth, canvasHeight).data\n    );\n    const histogram = this.#getHistogram(uint8Buf);\n    const threshold = this.#guessThreshold(histogram);\n\n    const contourList = this.#findContours(\n      uint8Buf,\n      canvasWidth,\n      canvasHeight,\n      threshold\n    );\n\n    return this.processDrawnLines({\n      lines: { curves: contourList, width: canvasWidth, height: canvasHeight },\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin,\n      mustSmooth: true,\n      areContours: true,\n    });\n  }\n\n  static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n    const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n    const [buffer, histogram] = this.#bilateralFilter(\n      uint8Buf,\n      width,\n      height,\n      Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor,\n      this.#PARAMETERS.sigmaR,\n      this.#PARAMETERS.kernelSize\n    );\n\n    const threshold = this.#guessThreshold(histogram);\n    const contourList = this.#findContours(buffer, width, height, threshold);\n\n    return this.processDrawnLines({\n      lines: { curves: contourList, width, height },\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin,\n      mustSmooth: true,\n      areContours: true,\n    });\n  }\n\n  static processDrawnLines({\n    lines,\n    pageWidth,\n    pageHeight,\n    rotation,\n    innerMargin,\n    mustSmooth,\n    areContours,\n  }) {\n    if (rotation % 180 !== 0) {\n      [pageWidth, pageHeight] = [pageHeight, pageWidth];\n    }\n\n    const { curves, width, height } = lines;\n    const thickness = lines.thickness ?? 0;\n    const linesAndPoints = [];\n    const ratio = Math.min(pageWidth / width, pageHeight / height);\n    const xScale = ratio / pageWidth;\n    const yScale = ratio / pageHeight;\n    const newCurves = [];\n\n    for (const { points } of curves) {\n      const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n      if (!reducedPoints) {\n        continue;\n      }\n      newCurves.push(reducedPoints);\n\n      const len = reducedPoints.length;\n      const newPoints = new Float32Array(len);\n      const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n      linesAndPoints.push({ line, points: newPoints });\n\n      if (len === 2) {\n        newPoints[0] = reducedPoints[0] * xScale;\n        newPoints[1] = reducedPoints[1] * yScale;\n        line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n        continue;\n      }\n\n      let [x1, y1, x2, y2] = reducedPoints;\n      x1 *= xScale;\n      y1 *= yScale;\n      x2 *= xScale;\n      y2 *= yScale;\n      newPoints.set([x1, y1, x2, y2], 0);\n\n      line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n      for (let i = 4; i < len; i += 2) {\n        const x = (newPoints[i] = reducedPoints[i] * xScale);\n        const y = (newPoints[i + 1] = reducedPoints[i + 1] * yScale);\n        line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n        [x1, y1, x2, y2] = [x2, y2, x, y];\n      }\n    }\n\n    if (linesAndPoints.length === 0) {\n      return null;\n    }\n\n    const outline = areContours\n      ? new ContourDrawOutline()\n      : new InkDrawOutline();\n\n    outline.build(\n      linesAndPoints,\n      pageWidth,\n      pageHeight,\n      1,\n      rotation,\n      areContours ? 0 : thickness,\n      innerMargin\n    );\n\n    return { outline, newCurves, areContours, thickness, width, height };\n  }\n\n  static async compressSignature({\n    outlines,\n    areContours,\n    thickness,\n    width,\n    height,\n  }) {\n    // We create a single array containing all the outlines.\n    // The format is the following:\n    // - 4 bytes: data length.\n    // - 4 bytes: version.\n    // - 4 bytes: width.\n    // - 4 bytes: height.\n    // - 4 bytes: 0 if it's a contour, 1 if it's an ink.\n    // - 4 bytes: thickness.\n    // - 4 bytes: number of drawings.\n    // - 4 bytes: size of the buffer containing the diff of the coordinates.\n    // - 4 bytes: number of points in the first drawing.\n    // - 4 bytes: x coordinate of the first point.\n    // - 4 bytes: y coordinate of the first point.\n    // - 4 bytes: number of points in the second drawing.\n    // - 4 bytes: x coordinate of the first point.\n    // - 4 bytes: y coordinate of the first point.\n    // - ...\n    // - The buffer containing the diff of the coordinates.\n\n    // The coordinates are supposed to be positive integers.\n\n    // We also compute the min and max difference between two points.\n    // This will help us to determine the type of the buffer (Int8, Int16 or\n    // Int32) in order to minimize the amount of data we have.\n    let minDiff = Infinity;\n    let maxDiff = -Infinity;\n    let outlinesLength = 0;\n    for (const points of outlines) {\n      outlinesLength += points.length;\n      for (let i = 2, ii = points.length; i < ii; i++) {\n        const dx = points[i] - points[i - 2];\n        minDiff = Math.min(minDiff, dx);\n        maxDiff = Math.max(maxDiff, dx);\n      }\n    }\n\n    let bufferType;\n    if (minDiff >= -128 && maxDiff <= 127) {\n      bufferType = Int8Array;\n    } else if (minDiff >= -32768 && maxDiff <= 32767) {\n      bufferType = Int16Array;\n    } else {\n      bufferType = Int32Array;\n    }\n\n    const len = outlines.length;\n    const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n    const header = new Uint32Array(headerLength);\n\n    let offset = 0;\n    header[offset++] =\n      headerLength * Uint32Array.BYTES_PER_ELEMENT +\n      (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n    header[offset++] = 0; // Version.\n    header[offset++] = width;\n    header[offset++] = height;\n    header[offset++] = areContours ? 0 : 1;\n    header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n    header[offset++] = len;\n    header[offset++] = bufferType.BYTES_PER_ELEMENT;\n    for (const points of outlines) {\n      header[offset++] = points.length - 2;\n      header[offset++] = points[0];\n      header[offset++] = points[1];\n    }\n\n    const cs = new CompressionStream(\"deflate-raw\");\n    const writer = cs.writable.getWriter();\n    await writer.ready;\n\n    writer.write(header);\n    const BufferCtor = bufferType.prototype.constructor;\n    for (const points of outlines) {\n      const diffs = new BufferCtor(points.length - 2);\n      for (let i = 2, ii = points.length; i < ii; i++) {\n        diffs[i - 2] = points[i] - points[i - 2];\n      }\n      writer.write(diffs);\n    }\n\n    writer.close();\n\n    const buf = await new Response(cs.readable).arrayBuffer();\n    const bytes = new Uint8Array(buf);\n\n    return toBase64Util(bytes);\n  }\n\n  static async decompressSignature(signatureData) {\n    try {\n      const bytes = fromBase64Util(signatureData);\n      const { readable, writable } = new DecompressionStream(\"deflate-raw\");\n      const writer = writable.getWriter();\n      await writer.ready;\n\n      // We can't await writer.write() because it'll block until the reader\n      // starts which happens few lines below.\n      writer\n        .write(bytes)\n        .then(async () => {\n          await writer.ready;\n          await writer.close();\n        })\n        .catch(() => {});\n\n      let data = null;\n      let offset = 0;\n      for await (const chunk of readable) {\n        data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n        data.set(chunk, offset);\n        offset += chunk.length;\n      }\n\n      // We take a bit too much data for the header but it's fine.\n      const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n      const version = header[1];\n      if (version !== 0) {\n        throw new Error(`Invalid version: ${version}`);\n      }\n      const width = header[2];\n      const height = header[3];\n      const areContours = header[4] === 0;\n      const thickness = header[5];\n      const numberOfDrawings = header[6];\n      const bufferType = header[7];\n      const outlines = [];\n      const diffsOffset =\n        (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) *\n        Uint32Array.BYTES_PER_ELEMENT;\n      let diffs;\n\n      switch (bufferType) {\n        case Int8Array.BYTES_PER_ELEMENT:\n          diffs = new Int8Array(data.buffer, diffsOffset);\n          break;\n        case Int16Array.BYTES_PER_ELEMENT:\n          diffs = new Int16Array(data.buffer, diffsOffset);\n          break;\n        case Int32Array.BYTES_PER_ELEMENT:\n          diffs = new Int32Array(data.buffer, diffsOffset);\n          break;\n      }\n\n      offset = 0;\n      for (let i = 0; i < numberOfDrawings; i++) {\n        const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n        const points = new Float32Array(len + 2);\n        outlines.push(points);\n\n        for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n          points[j] =\n            header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n        }\n        for (let j = 0; j < len; j++) {\n          points[j + 2] = points[j] + diffs[offset++];\n        }\n      }\n\n      return {\n        areContours,\n        thickness,\n        outlines,\n        width,\n        height,\n      };\n    } catch (e) {\n      warn(`decompressSignature: ${e}`);\n      return null;\n    }\n  }\n}\n\nexport { SignatureExtractor };\n", "/* Copyright 2025 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType, shadow } from \"../../shared/util.js\";\nimport { DrawingEditor, DrawingOptions } from \"./draw.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { ContourDrawOutline } from \"./drawers/contour.js\";\nimport { InkDrawingOptions } from \"./ink.js\";\nimport { InkDrawOutline } from \"./drawers/inkdraw.js\";\nimport { SignatureExtractor } from \"./drawers/signaturedraw.js\";\n\nclass SignatureOptions extends DrawingOptions {\n  constructor() {\n    super();\n\n    super.updateProperties({\n      fill: AnnotationEditor._defaultLineColor,\n      \"stroke-width\": 0,\n    });\n  }\n\n  clone() {\n    const clone = new SignatureOptions();\n    clone.updateAll(this);\n    return clone;\n  }\n}\n\nclass DrawnSignatureOptions extends InkDrawingOptions {\n  constructor(viewerParameters) {\n    super(viewerParameters);\n\n    super.updateProperties({\n      stroke: AnnotationEditor._defaultLineColor,\n      \"stroke-width\": 1,\n    });\n  }\n\n  clone() {\n    const clone = new DrawnSignatureOptions(this._viewParameters);\n    clone.updateAll(this);\n    return clone;\n  }\n}\n\n/**\n * Basic editor in order to generate an Stamp annotation annotation containing\n * a signature drawing.\n */\nclass SignatureEditor extends DrawingEditor {\n  #isExtracted = false;\n\n  #description = null;\n\n  #signatureData = null;\n\n  #signatureUUID = null;\n\n  static _type = \"signature\";\n\n  static _editorType = AnnotationEditorType.SIGNATURE;\n\n  static _defaultDrawingOptions = null;\n\n  constructor(params) {\n    super({ ...params, mustBeCommitted: true, name: \"signatureEditor\" });\n    this._willKeepAspectRatio = true;\n    this.#signatureData = params.signatureData || null;\n    this.#description = null;\n    this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n\n    this._defaultDrawingOptions = new SignatureOptions();\n    this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(\n      uiManager.viewParameters\n    );\n  }\n\n  /** @inheritdoc */\n  static getDefaultDrawingOptions(options) {\n    const clone = this._defaultDrawingOptions.clone();\n    clone.updateProperties(options);\n    return clone;\n  }\n\n  /** @inheritdoc */\n  static get supportMultipleDrawings() {\n    return false;\n  }\n\n  static get typesMap() {\n    return shadow(this, \"typesMap\", new Map());\n  }\n\n  static get isDrawer() {\n    return false;\n  }\n\n  /** @inheritdoc */\n  get telemetryFinalData() {\n    return {\n      type: \"signature\",\n      hasDescription: !!this.#description,\n    };\n  }\n\n  static computeTelemetryFinalData(data) {\n    const hasDescriptionStats = data.get(\"hasDescription\");\n    return {\n      hasAltText: hasDescriptionStats.get(true) ?? 0,\n      hasNoAltText: hasDescriptionStats.get(false) ?? 0,\n    };\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  onScaleChanging() {\n    if (this._drawId === null) {\n      return;\n    }\n    super.onScaleChanging();\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    const { _isCopy } = this;\n    if (_isCopy) {\n      // No need to adjust the position when rendering in DrawingEditor.\n      this._isCopy = false;\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n\n    if (this._drawId === null) {\n      if (this.#signatureData) {\n        const {\n          lines,\n          mustSmooth,\n          areContours,\n          description,\n          uuid,\n          heightInPage,\n        } = this.#signatureData;\n        const {\n          rawDims: { pageWidth, pageHeight },\n          rotation,\n        } = this.parent.viewport;\n        const outline = SignatureExtractor.processDrawnLines({\n          lines,\n          pageWidth,\n          pageHeight,\n          rotation,\n          innerMargin: SignatureEditor._INNER_MARGIN,\n          mustSmooth,\n          areContours,\n        });\n        this.addSignature(outline, heightInPage, description, uuid);\n      } else {\n        // Avoid Firefox crashing (with a local build) because the description\n        // parameter is missing.\n        this.div.setAttribute(\n          \"data-l10n-args\",\n          JSON.stringify({ description: \"\" })\n        );\n        this.div.hidden = true;\n        this._uiManager.getSignature(this);\n      }\n    } else {\n      this.div.setAttribute(\n        \"data-l10n-args\",\n        JSON.stringify({ description: this.#description || \"\" })\n      );\n    }\n\n    if (_isCopy) {\n      this._isCopy = true;\n      this._moveAfterPaste(baseX, baseY);\n    }\n\n    return this.div;\n  }\n\n  setUuid(uuid) {\n    this.#signatureUUID = uuid;\n    this.addEditToolbar();\n  }\n\n  getUuid() {\n    return this.#signatureUUID;\n  }\n\n  get description() {\n    return this.#description;\n  }\n\n  set description(description) {\n    this.#description = description;\n    if (!this.div) {\n      return;\n    }\n    this.div.setAttribute(\"data-l10n-args\", JSON.stringify({ description }));\n    super.addEditToolbar().then(toolbar => {\n      toolbar?.updateEditSignatureButton(description);\n    });\n  }\n\n  getSignaturePreview() {\n    const { newCurves, areContours, thickness, width, height } =\n      this.#signatureData;\n    const maxDim = Math.max(width, height);\n    const outlineData = SignatureExtractor.processDrawnLines({\n      lines: {\n        curves: newCurves.map(points => ({ points })),\n        thickness,\n        width,\n        height,\n      },\n      pageWidth: maxDim,\n      pageHeight: maxDim,\n      rotation: 0,\n      innerMargin: 0,\n      mustSmooth: false,\n      areContours,\n    });\n    return { areContours, outline: outlineData.outline };\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    if (this._uiManager.signatureManager) {\n      return [[\"editSignature\", this._uiManager.signatureManager]];\n    }\n    return super.toolbarButtons;\n  }\n\n  addSignature(data, heightInPage, description, uuid) {\n    const { x: savedX, y: savedY } = this;\n    const { outline } = (this.#signatureData = data);\n    this.#isExtracted = outline instanceof ContourDrawOutline;\n    this.description = description;\n    let drawingOptions;\n    if (this.#isExtracted) {\n      drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n    } else {\n      drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n      drawingOptions.updateProperties({ \"stroke-width\": outline.thickness });\n    }\n    this._addOutlines({\n      drawOutlines: outline,\n      drawingOptions,\n    });\n    const [, pageHeight] = this.pageDimensions;\n    let newHeight = heightInPage / pageHeight;\n    // Ensure the signature doesn't exceed the page height.\n    // If the signature is too big, we scale it down to 50% of the page height.\n    newHeight = newHeight >= 1 ? 0.5 : newHeight;\n\n    this.width *= newHeight / this.height;\n    if (this.width >= 1) {\n      newHeight *= 0.9 / this.width;\n      this.width = 0.9;\n    }\n\n    this.height = newHeight;\n    this.setDims();\n    this.x = savedX;\n    this.y = savedY;\n    this.center();\n\n    this._onResized();\n    this.onScaleChanging();\n    this.rotate();\n    this._uiManager.addToAnnotationStorage(this);\n    this.setUuid(uuid);\n\n    this._reportTelemetry({\n      action: \"pdfjs.signature.inserted\",\n      data: {\n        hasBeenSaved: !!uuid,\n        hasDescription: !!description,\n      },\n    });\n\n    this.div.hidden = false;\n  }\n\n  getFromImage(bitmap) {\n    const {\n      rawDims: { pageWidth, pageHeight },\n      rotation,\n    } = this.parent.viewport;\n    return SignatureExtractor.process(\n      bitmap,\n      pageWidth,\n      pageHeight,\n      rotation,\n      SignatureEditor._INNER_MARGIN\n    );\n  }\n\n  getFromText(text, fontInfo) {\n    const {\n      rawDims: { pageWidth, pageHeight },\n      rotation,\n    } = this.parent.viewport;\n    return SignatureExtractor.extractContoursFromText(\n      text,\n      fontInfo,\n      pageWidth,\n      pageHeight,\n      rotation,\n      SignatureEditor._INNER_MARGIN\n    );\n  }\n\n  getDrawnSignature(curves) {\n    const {\n      rawDims: { pageWidth, pageHeight },\n      rotation,\n    } = this.parent.viewport;\n    return SignatureExtractor.processDrawnLines({\n      lines: curves,\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin: SignatureEditor._INNER_MARGIN,\n      mustSmooth: false,\n      areContours: false,\n    });\n  }\n\n  /** @inheritdoc */\n  createDrawingOptions({ areContours, thickness }) {\n    if (areContours) {\n      this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n    } else {\n      this._drawingOptions =\n        SignatureEditor._defaultDrawnSignatureOptions.clone();\n      this._drawingOptions.updateProperties({ \"stroke-width\": thickness });\n    }\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    const { lines, points } = this.serializeDraw(isForCopying);\n    const {\n      _drawingOptions: { \"stroke-width\": thickness },\n    } = this;\n    const serialized = Object.assign(super.serialize(isForCopying), {\n      isSignature: true,\n      areContours: this.#isExtracted,\n      color: [0, 0, 0],\n      thickness: this.#isExtracted ? 0 : thickness,\n    });\n    this.addComment(serialized);\n    if (isForCopying) {\n      serialized.paths = { lines, points };\n      serialized.uuid = this.#signatureUUID;\n      serialized.isCopy = true;\n    } else {\n      serialized.lines = lines;\n    }\n    if (this.#description) {\n      serialized.accessibilityData = { type: \"Figure\", alt: this.#description };\n    }\n    return serialized;\n  }\n\n  /** @inheritdoc */\n  static deserializeDraw(\n    pageX,\n    pageY,\n    pageWidth,\n    pageHeight,\n    innerMargin,\n    data\n  ) {\n    if (data.areContours) {\n      return ContourDrawOutline.deserialize(\n        pageX,\n        pageY,\n        pageWidth,\n        pageHeight,\n        innerMargin,\n        data\n      );\n    }\n\n    return InkDrawOutline.deserialize(\n      pageX,\n      pageY,\n      pageWidth,\n      pageHeight,\n      innerMargin,\n      data\n    );\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.#isExtracted = data.areContours;\n    editor.description = data.accessibilityData?.alt || \"\";\n    editor.#signatureUUID = data.uuid;\n    return editor;\n  }\n}\n\nexport { SignatureEditor };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType, AnnotationPrefix } from \"../../shared/util.js\";\nimport {\n  ColorScheme,\n  OutputScale,\n  PixelsPerInch,\n  SupportedImageMimeTypes,\n} from \"../display_utils.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { StampAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass StampEditor extends AnnotationEditor {\n  #bitmap = null;\n\n  #bitmapId = null;\n\n  #bitmapPromise = null;\n\n  #bitmapUrl = null;\n\n  #bitmapFile = null;\n\n  #bitmapFileName = \"\";\n\n  #canvas = null;\n\n  #missingCanvas = false;\n\n  #resizeTimeoutId = null;\n\n  #isSvg = false;\n\n  #hasBeenAddedInUndoStack = false;\n\n  static _type = \"stamp\";\n\n  static _editorType = AnnotationEditorType.STAMP;\n\n  constructor(params) {\n    super({ ...params, name: \"stampEditor\" });\n    this.#bitmapUrl = params.bitmapUrl;\n    this.#bitmapFile = params.bitmapFile;\n    this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n  }\n\n  /** @inheritdoc */\n  static isHandlingMimeForPasting(mime) {\n    return SupportedImageMimeTypes.includes(mime);\n  }\n\n  /** @inheritdoc */\n  static paste(item, parent) {\n    parent.pasteEditor(\n      { mode: AnnotationEditorType.STAMP },\n      { bitmapFile: item.getAsFile() }\n    );\n  }\n\n  /** @inheritdoc */\n  altTextFinish() {\n    if (this._uiManager.useNewAltTextFlow) {\n      this.div.hidden = false;\n    }\n    super.altTextFinish();\n  }\n\n  /** @inheritdoc */\n  get telemetryFinalData() {\n    return {\n      type: \"stamp\",\n      hasAltText: !!this.altTextData?.altText,\n    };\n  }\n\n  static computeTelemetryFinalData(data) {\n    const hasAltTextStats = data.get(\"hasAltText\");\n    return {\n      hasAltText: hasAltTextStats.get(true) ?? 0,\n      hasNoAltText: hasAltTextStats.get(false) ?? 0,\n    };\n  }\n\n  #getBitmapFetched(data, fromId = false) {\n    if (!data) {\n      this.remove();\n      return;\n    }\n    this.#bitmap = data.bitmap;\n    if (!fromId) {\n      this.#bitmapId = data.id;\n      this.#isSvg = data.isSvg;\n    }\n    if (data.file) {\n      this.#bitmapFileName = data.file.name;\n    }\n    this.#createCanvas();\n  }\n\n  #getBitmapDone() {\n    this.#bitmapPromise = null;\n    this._uiManager.enableWaiting(false);\n    if (!this.#canvas) {\n      return;\n    }\n    if (\n      this._uiManager.useNewAltTextWhenAddingImage &&\n      this._uiManager.useNewAltTextFlow &&\n      this.#bitmap\n    ) {\n      this.addEditToolbar().then(() => {\n        this._editToolbar.hide();\n        this._uiManager.editAltText(this, /* firstTime = */ true);\n      });\n      return;\n    }\n\n    if (\n      !this._uiManager.useNewAltTextWhenAddingImage &&\n      this._uiManager.useNewAltTextFlow &&\n      this.#bitmap\n    ) {\n      this._reportTelemetry({\n        action: \"pdfjs.image.image_added\",\n        data: { alt_text_modal: false, alt_text_type: \"empty\" },\n      });\n      try {\n        // The alt-text dialog isn't opened but we still want to guess the alt\n        // text.\n        this.mlGuessAltText();\n      } catch {}\n    }\n\n    this.div.focus();\n  }\n\n  async mlGuessAltText(imageData = null, updateAltTextData = true) {\n    if (this.hasAltTextData()) {\n      return null;\n    }\n\n    const { mlManager } = this._uiManager;\n    if (!mlManager) {\n      throw new Error(\"No ML.\");\n    }\n    if (!(await mlManager.isEnabledFor(\"altText\"))) {\n      throw new Error(\"ML isn't enabled for alt text.\");\n    }\n    const { data, width, height } =\n      imageData ||\n      this.copyCanvas(null, null, /* createImageData = */ true).imageData;\n    const response = await mlManager.guess({\n      name: \"altText\",\n      request: {\n        data,\n        width,\n        height,\n        channels: data.length / (width * height),\n      },\n    });\n    if (!response) {\n      throw new Error(\"No response from the AI service.\");\n    }\n    if (response.error) {\n      throw new Error(\"Error from the AI service.\");\n    }\n    if (response.cancel) {\n      return null;\n    }\n    if (!response.output) {\n      throw new Error(\"No valid response from the AI service.\");\n    }\n    const altText = response.output;\n    await this.setGuessedAltText(altText);\n    if (updateAltTextData && !this.hasAltTextData()) {\n      this.altTextData = { alt: altText, decorative: false };\n    }\n    return altText;\n  }\n\n  #getBitmap() {\n    if (this.#bitmapId) {\n      this._uiManager.enableWaiting(true);\n      this._uiManager.imageManager\n        .getFromId(this.#bitmapId)\n        .then(data => this.#getBitmapFetched(data, /* fromId = */ true))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    if (this.#bitmapUrl) {\n      const url = this.#bitmapUrl;\n      this.#bitmapUrl = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager\n        .getFromUrl(url)\n        .then(data => this.#getBitmapFetched(data))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    if (this.#bitmapFile) {\n      const file = this.#bitmapFile;\n      this.#bitmapFile = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager\n        .getFromFile(file)\n        .then(data => this.#getBitmapFetched(data))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    const input = document.createElement(\"input\");\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      input.hidden = true;\n      input.id = \"stampEditorFileInput\";\n      document.body.append(input);\n    }\n    input.type = \"file\";\n    input.accept = SupportedImageMimeTypes.join(\",\");\n    const signal = this._uiManager._signal;\n    this.#bitmapPromise = new Promise(resolve => {\n      input.addEventListener(\n        \"change\",\n        async () => {\n          if (!input.files || input.files.length === 0) {\n            this.remove();\n          } else {\n            this._uiManager.enableWaiting(true);\n            const data = await this._uiManager.imageManager.getFromFile(\n              input.files[0]\n            );\n            this._reportTelemetry({\n              action: \"pdfjs.image.image_selected\",\n              data: { alt_text_modal: this._uiManager.useNewAltTextFlow },\n            });\n            this.#getBitmapFetched(data);\n          }\n          if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n            input.remove();\n          }\n          resolve();\n        },\n        { signal }\n      );\n      input.addEventListener(\n        \"cancel\",\n        () => {\n          this.remove();\n          resolve();\n        },\n        { signal }\n      );\n    }).finally(() => this.#getBitmapDone());\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"TESTING\")) {\n      input.click();\n    }\n  }\n\n  /** @inheritdoc */\n  remove() {\n    if (this.#bitmapId) {\n      this.#bitmap = null;\n      this._uiManager.imageManager.deleteId(this.#bitmapId);\n      this.#canvas?.remove();\n      this.#canvas = null;\n      if (this.#resizeTimeoutId) {\n        clearTimeout(this.#resizeTimeoutId);\n        this.#resizeTimeoutId = null;\n      }\n    }\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      // It's possible to have to rebuild an editor which is not on a visible\n      // page.\n      if (this.#bitmapId) {\n        this.#getBitmap();\n      }\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (this.#bitmapId && this.#canvas === null) {\n      this.#getBitmap();\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  onceAdded(focus) {\n    this._isDraggable = true;\n    if (focus) {\n      this.div.focus();\n    }\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !(\n      this.#bitmapPromise ||\n      this.#bitmap ||\n      this.#bitmapUrl ||\n      this.#bitmapFile ||\n      this.#bitmapId ||\n      this.#missingCanvas\n    );\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    return [[\"altText\", this.createAltText()]];\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this._isCopy) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n    this.div.hidden = true;\n\n    this.createAltText();\n\n    if (!this.#missingCanvas) {\n      if (this.#bitmap) {\n        this.#createCanvas();\n      } else {\n        this.#getBitmap();\n      }\n    }\n\n    if (this._isCopy) {\n      this._moveAfterPaste(baseX, baseY);\n    }\n\n    this._uiManager.addShouldRescale(this);\n\n    return this.div;\n  }\n\n  setCanvas(annotationElementId, canvas) {\n    const { id: bitmapId, bitmap } = this._uiManager.imageManager.getFromCanvas(\n      annotationElementId,\n      canvas\n    );\n    canvas.remove();\n    if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n      this.#bitmapId = bitmapId;\n      if (bitmap) {\n        this.#bitmap = bitmap;\n      }\n      this.#missingCanvas = false;\n      this.#createCanvas();\n    }\n  }\n\n  /** @inheritdoc */\n  _onResized() {\n    // We used a CSS-zoom during the resizing, but now it's resized we can\n    // rescale correctly the bitmap to fit the new dimensions.\n    this.onScaleChanging();\n  }\n\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    if (this.#resizeTimeoutId !== null) {\n      clearTimeout(this.#resizeTimeoutId);\n    }\n    // The user's zooming the page, there is no need to redraw the bitmap at\n    // each step, hence we wait a bit before redrawing it.\n    const TIME_TO_WAIT = 200;\n    this.#resizeTimeoutId = setTimeout(() => {\n      this.#resizeTimeoutId = null;\n      this.#drawBitmap();\n    }, TIME_TO_WAIT);\n  }\n\n  #createCanvas() {\n    const { div } = this;\n    let { width, height } = this.#bitmap;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const MAX_RATIO = 0.75;\n    if (this.width) {\n      width = this.width * pageWidth;\n      height = this.height * pageHeight;\n    } else if (\n      width > MAX_RATIO * pageWidth ||\n      height > MAX_RATIO * pageHeight\n    ) {\n      // If the image is too big compared to the page dimensions\n      // (more than MAX_RATIO) then we scale it down.\n      const factor = Math.min(\n        (MAX_RATIO * pageWidth) / width,\n        (MAX_RATIO * pageHeight) / height\n      );\n      width *= factor;\n      height *= factor;\n    }\n\n    this._uiManager.enableWaiting(false);\n    const canvas = (this.#canvas = document.createElement(\"canvas\"));\n    canvas.setAttribute(\"role\", \"img\");\n    this.addContainer(canvas);\n\n    this.width = width / pageWidth;\n    this.height = height / pageHeight;\n    this.setDims();\n\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    } else {\n      this.fixAndSetPosition();\n    }\n    this._initialOptions = null;\n\n    if (\n      !this._uiManager.useNewAltTextWhenAddingImage ||\n      !this._uiManager.useNewAltTextFlow ||\n      this.annotationElementId\n    ) {\n      div.hidden = false;\n    }\n    this.#drawBitmap();\n    if (!this.#hasBeenAddedInUndoStack) {\n      this.parent.addUndoableEditor(this);\n      this.#hasBeenAddedInUndoStack = true;\n    }\n\n    // There are multiple ways to add an image to the page, so here we just\n    // count the number of times an image is added to the page whatever the way\n    // is.\n    this._reportTelemetry({\n      action: \"inserted_image\",\n    });\n    if (this.#bitmapFileName) {\n      this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n    }\n    if (!this.annotationElementId) {\n      this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\n    }\n  }\n\n  copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n    if (!maxDataDimension) {\n      // TODO: get this value from Firefox\n      //   (https://bugzilla.mozilla.org/show_bug.cgi?id=1908184)\n      // It's the maximum dimension that the AI can handle.\n      maxDataDimension = 224;\n    }\n\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n    const outputScale = new OutputScale();\n\n    let bitmap = this.#bitmap;\n    let width = bitmapWidth,\n      height = bitmapHeight;\n    let canvas = null;\n\n    if (maxPreviewDimension) {\n      if (\n        bitmapWidth > maxPreviewDimension ||\n        bitmapHeight > maxPreviewDimension\n      ) {\n        const ratio = Math.min(\n          maxPreviewDimension / bitmapWidth,\n          maxPreviewDimension / bitmapHeight\n        );\n        width = Math.floor(bitmapWidth * ratio);\n        height = Math.floor(bitmapHeight * ratio);\n      }\n\n      canvas = document.createElement(\"canvas\");\n      const scaledWidth = (canvas.width = Math.ceil(width * outputScale.sx));\n      const scaledHeight = (canvas.height = Math.ceil(height * outputScale.sy));\n\n      if (!this.#isSvg) {\n        bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n      }\n\n      const ctx = canvas.getContext(\"2d\");\n      ctx.filter = this._uiManager.hcmFilter;\n\n      // Add a checkerboard pattern as a background in case the image has some\n      // transparency.\n      let white = \"white\",\n        black = \"#cfcfd8\";\n      if (this._uiManager.hcmFilter !== \"none\") {\n        black = \"black\";\n      } else if (ColorScheme.isDarkMode) {\n        white = \"#8f8f9d\";\n        black = \"#42414d\";\n      }\n      const boxDim = 15;\n      const boxDimWidth = boxDim * outputScale.sx;\n      const boxDimHeight = boxDim * outputScale.sy;\n      const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n      const patternCtx = pattern.getContext(\"2d\");\n      patternCtx.fillStyle = white;\n      patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n      patternCtx.fillStyle = black;\n      patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n      patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n      ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n      ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n      ctx.drawImage(\n        bitmap,\n        0,\n        0,\n        bitmap.width,\n        bitmap.height,\n        0,\n        0,\n        scaledWidth,\n        scaledHeight\n      );\n    }\n\n    let imageData = null;\n    if (createImageData) {\n      let dataWidth, dataHeight;\n      if (\n        outputScale.symmetric &&\n        bitmap.width < maxDataDimension &&\n        bitmap.height < maxDataDimension\n      ) {\n        dataWidth = bitmap.width;\n        dataHeight = bitmap.height;\n      } else {\n        bitmap = this.#bitmap;\n        if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n          const ratio = Math.min(\n            maxDataDimension / bitmapWidth,\n            maxDataDimension / bitmapHeight\n          );\n          dataWidth = Math.floor(bitmapWidth * ratio);\n          dataHeight = Math.floor(bitmapHeight * ratio);\n\n          if (!this.#isSvg) {\n            bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n          }\n        }\n      }\n\n      const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n      const offscreenCtx = offscreen.getContext(\"2d\", {\n        willReadFrequently: true,\n      });\n      offscreenCtx.drawImage(\n        bitmap,\n        0,\n        0,\n        bitmap.width,\n        bitmap.height,\n        0,\n        0,\n        dataWidth,\n        dataHeight\n      );\n      imageData = {\n        width: dataWidth,\n        height: dataHeight,\n        data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data,\n      };\n    }\n\n    return { canvas, width, height, imageData };\n  }\n\n  #scaleBitmap(width, height) {\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n\n    let newWidth = bitmapWidth;\n    let newHeight = bitmapHeight;\n    let bitmap = this.#bitmap;\n    while (newWidth > 2 * width || newHeight > 2 * height) {\n      const prevWidth = newWidth;\n      const prevHeight = newHeight;\n\n      if (newWidth > 2 * width) {\n        // See bug 1820511 (Windows specific bug).\n        // TODO: once the above bug is fixed we could revert to:\n        // newWidth = Math.ceil(newWidth / 2);\n        newWidth =\n          newWidth >= 16384\n            ? Math.floor(newWidth / 2) - 1\n            : Math.ceil(newWidth / 2);\n      }\n      if (newHeight > 2 * height) {\n        newHeight =\n          newHeight >= 16384\n            ? Math.floor(newHeight / 2) - 1\n            : Math.ceil(newHeight / 2);\n      }\n\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(\n        bitmap,\n        0,\n        0,\n        prevWidth,\n        prevHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\n      bitmap = offscreen.transferToImageBitmap();\n    }\n\n    return bitmap;\n  }\n\n  #drawBitmap() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const { width, height } = this;\n    const outputScale = new OutputScale();\n    const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n    const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n    const canvas = this.#canvas;\n\n    if (\n      !canvas ||\n      (canvas.width === scaledWidth && canvas.height === scaledHeight)\n    ) {\n      return;\n    }\n\n    canvas.width = scaledWidth;\n    canvas.height = scaledHeight;\n\n    const bitmap = this.#isSvg\n      ? this.#bitmap\n      : this.#scaleBitmap(scaledWidth, scaledHeight);\n\n    const ctx = canvas.getContext(\"2d\");\n    ctx.filter = this._uiManager.hcmFilter;\n    ctx.drawImage(\n      bitmap,\n      0,\n      0,\n      bitmap.width,\n      bitmap.height,\n      0,\n      0,\n      scaledWidth,\n      scaledHeight\n    );\n  }\n\n  #serializeBitmap(toUrl) {\n    if (toUrl) {\n      if (this.#isSvg) {\n        const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n        if (url) {\n          return url;\n        }\n      }\n      // We convert to a data url because it's sync and the url can live in the\n      // clipboard.\n      const canvas = document.createElement(\"canvas\");\n      ({ width: canvas.width, height: canvas.height } = this.#bitmap);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0);\n\n      return canvas.toDataURL();\n    }\n\n    if (this.#isSvg) {\n      const [pageWidth, pageHeight] = this.pageDimensions;\n      // Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\n      // image resolution when rasterizing it.\n      const width = Math.round(\n        this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\n      );\n      const height = Math.round(\n        this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\n      );\n      const offscreen = new OffscreenCanvas(width, height);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(\n        this.#bitmap,\n        0,\n        0,\n        this.#bitmap.width,\n        this.#bitmap.height,\n        0,\n        0,\n        width,\n        height\n      );\n      return offscreen.transferToImageBitmap();\n    }\n\n    return structuredClone(this.#bitmap);\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    let missingCanvas = false;\n    if (data instanceof StampAnnotationElement) {\n      const {\n        data: {\n          rect,\n          rotation,\n          id,\n          structParent,\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        container,\n        parent: {\n          page: { pageNumber },\n        },\n        canvas,\n      } = data;\n      let bitmapId, bitmap;\n      if (canvas) {\n        delete data.canvas;\n        ({ id: bitmapId, bitmap } = uiManager.imageManager.getFromCanvas(\n          container.id,\n          canvas\n        ));\n        canvas.remove();\n      } else {\n        missingCanvas = true;\n        data._hasNoCanvas = true;\n      }\n\n      // When switching to edit mode, we wait for the structure tree to be\n      // ready (see pdf_viewer.js), so it's fine to use getAriaAttributesSync.\n      const altText =\n        (\n          await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`)\n        )?.get(\"aria-label\") || \"\";\n\n      initialData = data = {\n        annotationType: AnnotationEditorType.STAMP,\n        bitmapId,\n        bitmap,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        accessibilityData: {\n          decorative: false,\n          altText,\n        },\n        isSvg: false,\n        structParent,\n        popupRef,\n        richText,\n        comment: contentsObj?.str || null,\n        creationDate,\n        modificationDate,\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    const { rect, bitmap, bitmapUrl, bitmapId, isSvg, accessibilityData } =\n      data;\n    if (missingCanvas) {\n      uiManager.addMissingCanvas(data.id, editor);\n      editor.#missingCanvas = true;\n    } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n      editor.#bitmapId = bitmapId;\n      if (bitmap) {\n        editor.#bitmap = bitmap;\n      }\n    } else {\n      editor.#bitmapUrl = bitmapUrl;\n    }\n    editor.#isSvg = isSvg;\n\n    const [parentWidth, parentHeight] = editor.pageDimensions;\n    editor.width = (rect[2] - rect[0]) / parentWidth;\n    editor.height = (rect[3] - rect[1]) / parentHeight;\n\n    if (accessibilityData) {\n      editor.altTextData = accessibilityData;\n    }\n    editor._initialData = initialData;\n    if (data.comment) {\n      editor.setCommentData(data);\n    }\n    // No need to be add in the undo stack if the editor is created from an\n    // existing one.\n    editor.#hasBeenAddedInUndoStack = !!initialData;\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false, context = null) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n\n    const serialized = Object.assign(super.serialize(isForCopying), {\n      bitmapId: this.#bitmapId,\n      isSvg: this.#isSvg,\n    });\n    this.addComment(serialized);\n\n    if (isForCopying) {\n      // We don't know what's the final destination (this pdf or another one)\n      // of this annotation and the clipboard doesn't support ImageBitmaps,\n      // hence we serialize the bitmap to a data url.\n      serialized.bitmapUrl = this.#serializeBitmap(/* toUrl = */ true);\n      serialized.accessibilityData = this.serializeAltText(true);\n      serialized.isCopy = true;\n      return serialized;\n    }\n\n    const { decorative, altText } = this.serializeAltText(false);\n    if (!decorative && altText) {\n      serialized.accessibilityData = { type: \"Figure\", alt: altText };\n    }\n    if (this.annotationElementId) {\n      const changes = this.#hasElementChanged(serialized);\n      if (changes.isSame) {\n        // Nothing has been changed.\n        return null;\n      }\n      if (changes.isSameAltText) {\n        delete serialized.accessibilityData;\n      } else {\n        serialized.accessibilityData.structParent =\n          this._initialData.structParent ?? -1;\n      }\n      serialized.id = this.annotationElementId;\n      delete serialized.bitmapId;\n      return serialized;\n    }\n\n    if (context === null) {\n      return serialized;\n    }\n\n    context.stamps ||= new Map();\n    const area = this.#isSvg\n      ? (serialized.rect[2] - serialized.rect[0]) *\n        (serialized.rect[3] - serialized.rect[1])\n      : null;\n    if (!context.stamps.has(this.#bitmapId)) {\n      // We don't want to have multiple copies of the same bitmap in the\n      // annotationMap, hence we only add the bitmap the first time we meet it.\n      context.stamps.set(this.#bitmapId, { area, serialized });\n      serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n    } else if (this.#isSvg) {\n      // If we have multiple copies of the same svg but with different sizes,\n      // then we want to keep the biggest one.\n      const prevData = context.stamps.get(this.#bitmapId);\n      if (area > prevData.area) {\n        prevData.area = area;\n        prevData.serialized.bitmap.close();\n        prevData.serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n      }\n    }\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const {\n      pageIndex,\n      accessibilityData: { altText },\n    } = this._initialData;\n\n    const isSamePageIndex = serialized.pageIndex === pageIndex;\n    const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n\n    return {\n      isSame:\n        !this.hasEditedComment &&\n        !this._hasBeenMoved &&\n        !this._hasBeenResized &&\n        isSamePageIndex &&\n        isSameAltText,\n      isSameAltText,\n    };\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    if (this.deleted) {\n      annotation.hide();\n      return null;\n    }\n    annotation.updateEdited({\n      rect: this.getPDFRect(),\n      popup: this.comment,\n    });\n\n    return null;\n  }\n}\n\nexport { StampEditor };\n", "/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../../web/interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../annotation_layer.js\").AnnotationLayer} AnnotationLayer */\n/** @typedef {import(\"../draw_layer.js\").DrawLayer} DrawLayer */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/struct_tree_layer_builder.js\").StructTreeLayerBuilder} StructTreeLayerBuilder */\n\nimport {\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  FeatureTest,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { HighlightEditor } from \"./highlight.js\";\nimport { InkEditor } from \"./ink.js\";\nimport { setLayerDimensions } from \"../display_utils.js\";\nimport { SignatureEditor } from \"./signature.js\";\nimport { StampEditor } from \"./stamp.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {StructTreeLayerBuilder} structTreeLayer\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n * @property {AnnotationLayer} [annotationLayer]\n * @property {HTMLDivElement} [textLayer]\n * @property {DrawLayer} drawLayer\n * @property {PageViewport} viewport\n */\n\n/**\n * @typedef {Object} RenderEditorLayerOptions\n * @property {PageViewport} viewport\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n  #accessibilityManager;\n\n  #allowClick = false;\n\n  #annotationLayer = null;\n\n  #clickAC = null;\n\n  #editorFocusTimeoutId = null;\n\n  #editors = new Map();\n\n  #hadPointerDown = false;\n\n  #isDisabling = false;\n\n  #isEnabling = false;\n\n  #drawingAC = null;\n\n  #focusedElement = null;\n\n  #textLayer = null;\n\n  #textSelectionAC = null;\n\n  #textLayerDblClickAC = null;\n\n  #lastPointerDownTimestamp = -1;\n\n  #uiManager;\n\n  static _initialized = false;\n\n  static #editorTypes = new Map(\n    [\n      FreeTextEditor,\n      InkEditor,\n      StampEditor,\n      HighlightEditor,\n      SignatureEditor,\n    ].map(type => [type._editorType, type])\n  );\n\n  /**\n   * @param {AnnotationEditorLayerOptions} options\n   */\n  constructor({\n    uiManager,\n    pageIndex,\n    div,\n    structTreeLayer,\n    accessibilityManager,\n    annotationLayer,\n    drawLayer,\n    textLayer,\n    viewport,\n    l10n,\n  }) {\n    const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n    if (!AnnotationEditorLayer._initialized) {\n      AnnotationEditorLayer._initialized = true;\n      for (const editorType of editorTypes) {\n        editorType.initialize(l10n, uiManager);\n      }\n    }\n    uiManager.registerEditorTypes(editorTypes);\n\n    this.#uiManager = uiManager;\n    this.pageIndex = pageIndex;\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationLayer = annotationLayer;\n    this.viewport = viewport;\n    this.#textLayer = textLayer;\n    this.drawLayer = drawLayer;\n    this._structTree = structTreeLayer;\n\n    this.#uiManager.addLayer(this);\n  }\n\n  get isEmpty() {\n    return this.#editors.size === 0;\n  }\n\n  get isInvisible() {\n    return (\n      this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE\n    );\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {Object} options\n   */\n  updateToolbar(options) {\n    this.#uiManager.updateToolbar(options);\n  }\n\n  /**\n   * The mode has changed: it must be updated.\n   * @param {number} mode\n   */\n  updateMode(mode = this.#uiManager.getMode()) {\n    this.#cleanup();\n    switch (mode) {\n      case AnnotationEditorType.NONE:\n        this.div.classList.toggle(\"nonEditing\", true);\n        this.disableTextSelection();\n        this.togglePointerEvents(false);\n        this.toggleAnnotationLayerPointerEvents(true);\n        this.disableClick();\n        return;\n      case AnnotationEditorType.INK:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n        break;\n      case AnnotationEditorType.HIGHLIGHT:\n        this.enableTextSelection();\n        this.togglePointerEvents(false);\n        this.disableClick();\n        break;\n      default:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n    }\n\n    this.toggleAnnotationLayerPointerEvents(false);\n    const { classList } = this.div;\n    classList.toggle(\"nonEditing\", false);\n    if (mode === AnnotationEditorType.POPUP) {\n      classList.toggle(\"commentEditing\", true);\n    } else {\n      classList.toggle(\"commentEditing\", false);\n      for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n        classList.toggle(\n          `${editorType._type}Editing`,\n          mode === editorType._editorType\n        );\n      }\n    }\n    this.div.hidden = false;\n  }\n\n  hasTextLayer(textLayer) {\n    return textLayer === this.#textLayer?.div;\n  }\n\n  /**\n   * Set the editing state.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    this.#uiManager.setEditingState(isEditing);\n  }\n\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this.#uiManager.addCommands(params);\n  }\n\n  cleanUndoStack(type) {\n    this.#uiManager.cleanUndoStack(type);\n  }\n\n  toggleDrawing(enabled = false) {\n    this.div.classList.toggle(\"drawing\", !enabled);\n  }\n\n  togglePointerEvents(enabled = false) {\n    this.div.classList.toggle(\"disabled\", !enabled);\n  }\n\n  toggleAnnotationLayerPointerEvents(enabled = false) {\n    this.#annotationLayer?.togglePointerEvents(enabled);\n  }\n\n  get #allEditorsIterator() {\n    return this.#editors.size !== 0\n      ? this.#editors.values()\n      : this.#uiManager.getEditors(this.pageIndex);\n  }\n\n  /**\n   * Enable pointer events on the main div in order to enable\n   * editor creation.\n   */\n  async enable() {\n    this.#isEnabling = true;\n    this.div.tabIndex = 0;\n    this.togglePointerEvents(true);\n    this.div.classList.toggle(\"nonEditing\", false);\n    this.#textLayerDblClickAC?.abort();\n    this.#textLayerDblClickAC = null;\n    const annotationElementIds = new Set();\n    for (const editor of this.#allEditorsIterator) {\n      editor.enableEditing();\n      editor.show(true);\n      if (editor.annotationElementId) {\n        this.#uiManager.removeChangedExistingAnnotation(editor);\n        annotationElementIds.add(editor.annotationElementId);\n      }\n    }\n\n    const annotationLayer = this.#annotationLayer;\n    if (annotationLayer) {\n      for (const editable of annotationLayer.getEditableAnnotations()) {\n        // The element must be hidden whatever its state is.\n        editable.hide();\n        if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n          continue;\n        }\n        if (annotationElementIds.has(editable.data.id)) {\n          continue;\n        }\n        const editor = await this.deserialize(editable);\n        if (!editor) {\n          continue;\n        }\n        this.addOrRebuild(editor);\n        editor.enableEditing();\n      }\n    }\n    this.#isEnabling = false;\n    this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n      source: this,\n      pageNumber: this.pageIndex + 1,\n    });\n  }\n\n  /**\n   * Disable editor creation.\n   */\n  disable() {\n    this.#isDisabling = true;\n    this.div.tabIndex = -1;\n    this.togglePointerEvents(false);\n    this.div.classList.toggle(\"nonEditing\", true);\n    if (this.#textLayer && !this.#textLayerDblClickAC) {\n      this.#textLayerDblClickAC = new AbortController();\n      const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n      this.#textLayer.div.addEventListener(\n        \"pointerdown\",\n        e => {\n          // It's the default value in Fenix:\n          // https://searchfox.org/mozilla-central/rev/beba5cde846f944c4d709e75cbe499d17af880a4/modules/libpref/init/StaticPrefList.yaml#19064\n          // and in Chrome and Windows:\n          // https://source.chromium.org/chromium/chromium/src/+/main:ui/events/event_constants.h;drc=f0f5f3ceebb00da9363ccc7a1e2c0f17b6b383ba;l=115\n          const DBL_CLICK_THRESHOLD = 500;\n          const { clientX, clientY, timeStamp } = e;\n          const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n          if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n            this.#lastPointerDownTimestamp = timeStamp;\n            return;\n          }\n          this.#lastPointerDownTimestamp = -1;\n          const { classList } = this.div;\n          classList.toggle(\"getElements\", true);\n          const elements = document.elementsFromPoint(clientX, clientY);\n          classList.toggle(\"getElements\", false);\n          if (!this.div.contains(elements[0])) {\n            return;\n          }\n          let id;\n          const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n          for (const element of elements) {\n            if (regex.test(element.id)) {\n              id = element.id;\n              break;\n            }\n          }\n          if (!id) {\n            return;\n          }\n          const editor = this.#editors.get(id);\n          if (editor?.annotationElementId === null) {\n            e.stopPropagation();\n            e.preventDefault();\n            editor.dblclick(e);\n          }\n        },\n        { signal, capture: true }\n      );\n    }\n\n    const annotationLayer = this.#annotationLayer;\n    const needFakeAnnotation = [];\n    if (annotationLayer) {\n      const changedAnnotations = new Map();\n      const resetAnnotations = new Map();\n      for (const editor of this.#allEditorsIterator) {\n        editor.disableEditing();\n        if (!editor.annotationElementId) {\n          needFakeAnnotation.push(editor);\n          continue;\n        }\n        if (editor.serialize() !== null) {\n          changedAnnotations.set(editor.annotationElementId, editor);\n          continue;\n        } else {\n          resetAnnotations.set(editor.annotationElementId, editor);\n        }\n        this.getEditableAnnotation(editor.annotationElementId)?.show();\n        editor.remove();\n      }\n\n      // Show the annotations that were hidden in enable().\n      const editables = annotationLayer.getEditableAnnotations();\n      for (const editable of editables) {\n        const { id } = editable.data;\n        if (this.#uiManager.isDeletedAnnotationElement(id)) {\n          editable.updateEdited({ deleted: true });\n          continue;\n        }\n        let editor = resetAnnotations.get(id);\n        if (editor) {\n          editor.resetAnnotationElement(editable);\n          editor.show(false);\n          editable.show();\n          continue;\n        }\n\n        editor = changedAnnotations.get(id);\n        if (editor) {\n          this.#uiManager.addChangedExistingAnnotation(editor);\n          if (editor.renderAnnotationElement(editable)) {\n            // Content has changed, so we need to hide the editor.\n            editor.show(false);\n          }\n        }\n        editable.show();\n      }\n    }\n\n    this.#cleanup();\n    if (this.isEmpty) {\n      this.div.hidden = true;\n    }\n    const { classList } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.remove(`${editorType._type}Editing`);\n    }\n    this.disableTextSelection();\n    this.toggleAnnotationLayerPointerEvents(true);\n    annotationLayer?.updateFakeAnnotations(needFakeAnnotation);\n\n    this.#isDisabling = false;\n  }\n\n  getEditableAnnotation(id) {\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\n  }\n\n  /**\n   * Set the current editor.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    const currentActive = this.#uiManager.getActive();\n    if (currentActive === editor) {\n      return;\n    }\n\n    this.#uiManager.setActiveEditor(editor);\n  }\n\n  enableTextSelection() {\n    this.div.tabIndex = -1;\n    if (this.#textLayer?.div && !this.#textSelectionAC) {\n      this.#textSelectionAC = new AbortController();\n      const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n\n      this.#textLayer.div.addEventListener(\n        \"pointerdown\",\n        this.#textLayerPointerDown.bind(this),\n        { signal }\n      );\n      this.#textLayer.div.classList.add(\"highlighting\");\n    }\n  }\n\n  disableTextSelection() {\n    this.div.tabIndex = 0;\n    if (this.#textLayer?.div && this.#textSelectionAC) {\n      this.#textSelectionAC.abort();\n      this.#textSelectionAC = null;\n\n      this.#textLayer.div.classList.remove(\"highlighting\");\n    }\n  }\n\n  #textLayerPointerDown(event) {\n    // Unselect all the editors in order to let the user select some text\n    // without being annoyed by an editor toolbar.\n    this.#uiManager.unselectAll();\n    const { target } = event;\n    if (\n      target === this.#textLayer.div ||\n      ((target.getAttribute(\"role\") === \"img\" ||\n        target.classList.contains(\"endOfContent\")) &&\n        this.#textLayer.div.contains(target))\n    ) {\n      const { isMac } = FeatureTest.platform;\n      if (event.button !== 0 || (event.ctrlKey && isMac)) {\n        // Do nothing on right click.\n        return;\n      }\n      this.#uiManager.showAllEditors(\n        \"highlight\",\n        true,\n        /* updateButton = */ true\n      );\n      this.#textLayer.div.classList.add(\"free\");\n      this.toggleDrawing();\n      HighlightEditor.startHighlighting(\n        this,\n        this.#uiManager.direction === \"ltr\",\n        { target: this.#textLayer.div, x: event.x, y: event.y }\n      );\n      this.#textLayer.div.addEventListener(\n        \"pointerup\",\n        () => {\n          this.#textLayer.div.classList.remove(\"free\");\n          this.toggleDrawing(true);\n        },\n        { once: true, signal: this.#uiManager._signal }\n      );\n      event.preventDefault();\n    }\n  }\n\n  enableClick() {\n    if (this.#clickAC) {\n      return;\n    }\n    this.#clickAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#clickAC);\n\n    this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n      signal,\n    });\n    const pointerup = this.pointerup.bind(this);\n    this.div.addEventListener(\"pointerup\", pointerup, { signal });\n    this.div.addEventListener(\"pointercancel\", pointerup, { signal });\n  }\n\n  disableClick() {\n    this.#clickAC?.abort();\n    this.#clickAC = null;\n  }\n\n  attach(editor) {\n    this.#editors.set(editor.id, editor);\n    const { annotationElementId } = editor;\n    if (\n      annotationElementId &&\n      this.#uiManager.isDeletedAnnotationElement(annotationElementId)\n    ) {\n      this.#uiManager.removeDeletedAnnotationElement(editor);\n    }\n  }\n\n  detach(editor) {\n    this.#editors.delete(editor.id);\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n\n    if (!this.#isDisabling && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor);\n    }\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  remove(editor) {\n    this.detach(editor);\n    this.#uiManager.removeEditor(editor);\n    editor.div.remove();\n    editor.isAttachedToDOM = false;\n  }\n\n  /**\n   * An editor can have a different parent, for example after having\n   * being dragged and dropped from a page to another.\n   * @param {AnnotationEditor} editor\n   */\n  changeParent(editor) {\n    if (editor.parent === this) {\n      return;\n    }\n\n    if (editor.parent && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor);\n      AnnotationEditor.deleteAnnotationElement(editor);\n      editor.annotationElementId = null;\n    }\n\n    this.attach(editor);\n    editor.parent?.detach(editor);\n    editor.setParent(this);\n    if (editor.div && editor.isAttachedToDOM) {\n      editor.div.remove();\n      this.div.append(editor.div);\n    }\n  }\n\n  /**\n   * Add a new editor in the current view.\n   * @param {AnnotationEditor} editor\n   */\n  add(editor) {\n    if (editor.parent === this && editor.isAttachedToDOM) {\n      return;\n    }\n    this.changeParent(editor);\n    this.#uiManager.addEditor(editor);\n    this.attach(editor);\n\n    if (!editor.isAttachedToDOM) {\n      const div = editor.render();\n      this.div.append(div);\n      editor.isAttachedToDOM = true;\n    }\n\n    // The editor will be correctly moved into the DOM (see fixAndSetPosition).\n    editor.fixAndSetPosition();\n    editor.onceAdded(/* focus = */ !this.#isEnabling);\n    this.#uiManager.addToAnnotationStorage(editor);\n    editor._reportTelemetry(editor.telemetryInitialData);\n  }\n\n  moveEditorInDOM(editor) {\n    if (!editor.isAttachedToDOM) {\n      return;\n    }\n\n    const { activeElement } = document;\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n      // When the div is moved in the DOM the focus can move somewhere else,\n      // so we want to be sure that the focus will stay on the editor but we\n      // don't want to call any focus callbacks, hence we disable them and only\n      // re-enable them when the editor has the focus.\n      editor._focusEventsAllowed = false;\n      this.#editorFocusTimeoutId = setTimeout(() => {\n        this.#editorFocusTimeoutId = null;\n        if (!editor.div.contains(document.activeElement)) {\n          editor.div.addEventListener(\n            \"focusin\",\n            () => {\n              editor._focusEventsAllowed = true;\n            },\n            { once: true, signal: this.#uiManager._signal }\n          );\n          activeElement.focus();\n        } else {\n          editor._focusEventsAllowed = true;\n        }\n      }, 0);\n    }\n\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(\n      this.div,\n      editor.div,\n      editor.contentDiv,\n      /* isRemovable = */ true\n    );\n  }\n\n  /**\n   * Add or rebuild depending if it has been removed or not.\n   * @param {AnnotationEditor} editor\n   */\n  addOrRebuild(editor) {\n    if (editor.needsToBeRebuilt()) {\n      editor.parent ||= this;\n      editor.rebuild();\n      editor.show();\n    } else {\n      this.add(editor);\n    }\n  }\n\n  /**\n   * Add a new editor and make this addition undoable.\n   * @param {AnnotationEditor} editor\n   */\n  addUndoableEditor(editor) {\n    const cmd = () => editor._uiManager.rebuild(editor);\n    const undo = () => {\n      editor.remove();\n    };\n\n    this.addCommands({ cmd, undo, mustExec: false });\n  }\n\n  getEditorByUID(uid) {\n    for (const editor of this.#editors.values()) {\n      if (editor.uid === uid) {\n        return editor;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Get an id for an editor.\n   * @returns {string}\n   */\n  getNextId() {\n    return this.#uiManager.getId();\n  }\n\n  get #currentEditorType() {\n    return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n  }\n\n  combinedSignal(ac) {\n    return this.#uiManager.combinedSignal(ac);\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} params\n   * @returns {AnnotationEditor}\n   */\n  #createNewEditor(params) {\n    const editorType = this.#currentEditorType;\n    return editorType ? new editorType.prototype.constructor(params) : null;\n  }\n\n  canCreateNewEmptyEditor() {\n    return this.#currentEditorType?.canCreateNewEmptyEditor();\n  }\n\n  /**\n   * Paste some content into a new editor.\n   * @param {Object} options\n   * @param {Object} params\n   */\n  async pasteEditor(options, params) {\n    this.updateToolbar(options);\n    await this.#uiManager.updateMode(options.mode);\n\n    const { offsetX, offsetY } = this.#getCenterPoint();\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: offsetX,\n      y: offsetY,\n      uiManager: this.#uiManager,\n      isCentered: true,\n      ...params,\n    });\n    if (editor) {\n      this.add(editor);\n    }\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} data\n   * @returns {Promise<AnnotationEditor | null>}\n   */\n  async deserialize(data) {\n    return (\n      (await AnnotationEditorLayer.#editorTypes\n        .get(data.annotationType ?? data.annotationEditorType)\n        ?.deserialize(data, this, this.#uiManager)) || null\n    );\n  }\n\n  /**\n   * Create and add a new editor.\n   * @param {PointerEvent} event\n   * @param {boolean} isCentered\n   * @param [Object] data\n   * @returns {AnnotationEditor}\n   */\n  createAndAddNewEditor(event, isCentered, data = {}) {\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: event.offsetX,\n      y: event.offsetY,\n      uiManager: this.#uiManager,\n      isCentered,\n      ...data,\n    });\n    if (editor) {\n      this.add(editor);\n    }\n\n    return editor;\n  }\n\n  get boundingClientRect() {\n    return this.div.getBoundingClientRect();\n  }\n\n  #getCenterPoint() {\n    const { x, y, width, height } = this.boundingClientRect;\n    const tlX = Math.max(0, x);\n    const tlY = Math.max(0, y);\n    const brX = Math.min(window.innerWidth, x + width);\n    const brY = Math.min(window.innerHeight, y + height);\n    const centerX = (tlX + brX) / 2 - x;\n    const centerY = (tlY + brY) / 2 - y;\n    const [offsetX, offsetY] =\n      this.viewport.rotation % 180 === 0\n        ? [centerX, centerY]\n        : [centerY, centerX];\n\n    return { offsetX, offsetY };\n  }\n\n  /**\n   * Create and add a new editor.\n   */\n  addNewEditor(data = {}) {\n    this.createAndAddNewEditor(\n      this.#getCenterPoint(),\n      /* isCentered = */ true,\n      data\n    );\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    this.#uiManager.setSelected(editor);\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    this.#uiManager.toggleSelected(editor);\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    this.#uiManager.unselect(editor);\n  }\n\n  /**\n   * Pointerup callback.\n   * @param {PointerEvent} event\n   */\n  pointerup(event) {\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Don't create an editor on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    if (!this.#hadPointerDown) {\n      // It can happen when the user starts a drag inside a text editor\n      // and then releases the mouse button outside of it. In such a case\n      // we don't want to create a new editor, hence we check that a pointerdown\n      // occurred on this div previously.\n      return;\n    }\n    this.#hadPointerDown = false;\n\n    if (\n      this.#currentEditorType?.isDrawer &&\n      this.#currentEditorType.supportMultipleDrawings\n    ) {\n      return;\n    }\n\n    if (!this.#allowClick) {\n      this.#allowClick = true;\n      return;\n    }\n\n    const currentMode = this.#uiManager.getMode();\n    if (\n      currentMode === AnnotationEditorType.STAMP ||\n      currentMode === AnnotationEditorType.SIGNATURE\n    ) {\n      this.#uiManager.unselectAll();\n      return;\n    }\n\n    this.createAndAddNewEditor(event, /* isCentered = */ false);\n  }\n\n  /**\n   * Pointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n      this.enableTextSelection();\n    }\n    if (this.#hadPointerDown) {\n      // It's possible to have a second pointerdown event before a pointerup one\n      // when the user puts a finger on a touchscreen and then add a second one\n      // to start a pinch-to-zoom gesture.\n      // That said, in case it's possible to have two pointerdown events with\n      // a mouse, we don't want to create a new editor in such a case either.\n      this.#hadPointerDown = false;\n      return;\n    }\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Do nothing on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    this.#hadPointerDown = true;\n\n    if (this.#currentEditorType?.isDrawer) {\n      this.startDrawingSession(event);\n      return;\n    }\n\n    const editor = this.#uiManager.getActive();\n    this.#allowClick = !editor || editor.isEmpty();\n  }\n\n  startDrawingSession(event) {\n    this.div.focus({\n      preventScroll: true,\n    });\n    if (this.#drawingAC) {\n      this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n      return;\n    }\n\n    this.#uiManager.setCurrentDrawingSession(this);\n    this.#drawingAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n    this.div.addEventListener(\n      \"blur\",\n      ({ relatedTarget }) => {\n        if (relatedTarget && !this.div.contains(relatedTarget)) {\n          this.#focusedElement = null;\n          this.commitOrRemove();\n        }\n      },\n      { signal }\n    );\n    this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n  }\n\n  pause(on) {\n    if (on) {\n      const { activeElement } = document;\n      if (this.div.contains(activeElement)) {\n        this.#focusedElement = activeElement;\n      }\n      return;\n    }\n    if (this.#focusedElement) {\n      setTimeout(() => {\n        this.#focusedElement?.focus();\n        this.#focusedElement = null;\n      }, 0);\n    }\n  }\n\n  endDrawingSession(isAborted = false) {\n    if (!this.#drawingAC) {\n      return null;\n    }\n    this.#uiManager.setCurrentDrawingSession(null);\n    this.#drawingAC.abort();\n    this.#drawingAC = null;\n    this.#focusedElement = null;\n    return this.#currentEditorType.endDrawing(isAborted);\n  }\n\n  /**\n   *\n   * @param {AnnotationEditor} editor\n   * @param {number} x\n   * @param {number} y\n   * @returns\n   */\n  findNewParent(editor, x, y) {\n    const layer = this.#uiManager.findParent(x, y);\n    if (layer === null || layer === this) {\n      return false;\n    }\n    layer.changeParent(editor);\n    return true;\n  }\n\n  commitOrRemove() {\n    if (this.#drawingAC) {\n      this.endDrawingSession();\n      return true;\n    }\n    return false;\n  }\n\n  onScaleChanging() {\n    if (!this.#drawingAC) {\n      return;\n    }\n    this.#currentEditorType.onScaleChangingWhenDrawing(this);\n  }\n\n  /**\n   * Destroy the main editor.\n   */\n  destroy() {\n    this.commitOrRemove();\n    if (this.#uiManager.getActive()?.parent === this) {\n      // We need to commit the current editor before destroying the layer.\n      this.#uiManager.commitOrRemove();\n      this.#uiManager.setActiveEditor(null);\n    }\n\n    if (this.#editorFocusTimeoutId) {\n      clearTimeout(this.#editorFocusTimeoutId);\n      this.#editorFocusTimeoutId = null;\n    }\n\n    for (const editor of this.#editors.values()) {\n      this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n      editor.setParent(null);\n      editor.isAttachedToDOM = false;\n      editor.div.remove();\n    }\n    this.div = null;\n    this.#editors.clear();\n    this.#uiManager.removeLayer(this);\n  }\n\n  #cleanup() {\n    // When we're cleaning up, some editors are removed but we don't want\n    // to add a new one which will induce an addition in this.#editors, hence\n    // an infinite loop.\n    for (const editor of this.#editors.values()) {\n      if (editor.isEmpty()) {\n        editor.remove();\n      }\n    }\n  }\n\n  /**\n   * Render the main editor.\n   * @param {RenderEditorLayerOptions} parameters\n   */\n  render({ viewport }) {\n    this.viewport = viewport;\n    setLayerDimensions(this.div, viewport);\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n      this.add(editor);\n      editor.rebuild();\n    }\n    // We're maybe rendering a layer which was invisible when we started to edit\n    // so we must set the different callbacks for it.\n    this.updateMode();\n  }\n\n  /**\n   * Update the main editor.\n   * @param {RenderEditorLayerOptions} parameters\n   */\n  update({ viewport }) {\n    // Editors have their dimensions/positions in percent so to avoid any\n    // issues (see #15582), we must commit the current one before changing\n    // the viewport.\n    this.#uiManager.commitOrRemove();\n    this.#cleanup();\n\n    const oldRotation = this.viewport.rotation;\n    const rotation = viewport.rotation;\n\n    this.viewport = viewport;\n    setLayerDimensions(this.div, { rotation });\n    if (oldRotation !== rotation) {\n      for (const editor of this.#editors.values()) {\n        editor.rotate(rotation);\n      }\n    }\n  }\n\n  /**\n   * Get page dimensions.\n   * @returns {Object} dimensions.\n   */\n  get pageDimensions() {\n    const { pageWidth, pageHeight } = this.viewport.rawDims;\n    return [pageWidth, pageHeight];\n  }\n\n  get scale() {\n    return this.#uiManager.viewParameters.realScale;\n  }\n}\n\nexport { AnnotationEditorLayer };\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DOMSVGFactory } from \"./svg_factory.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * Manage the SVGs drawn on top of the page canvas.\n * It's important to have them directly on top of the canvas because we want to\n * be able to use mix-blend-mode for some of them.\n */\nclass DrawLayer {\n  #parent = null;\n\n  #mapping = new Map();\n\n  #toUpdate = new Map();\n\n  static #id = 0;\n\n  constructor({ pageIndex }) {\n    this.pageIndex = pageIndex;\n  }\n\n  setParent(parent) {\n    if (!this.#parent) {\n      this.#parent = parent;\n      return;\n    }\n\n    if (this.#parent !== parent) {\n      if (this.#mapping.size > 0) {\n        for (const root of this.#mapping.values()) {\n          root.remove();\n          parent.append(root);\n        }\n      }\n      this.#parent = parent;\n    }\n  }\n\n  static get _svgFactory() {\n    return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n  }\n\n  static #setBox(element, [x, y, width, height]) {\n    const { style } = element;\n    style.top = `${100 * y}%`;\n    style.left = `${100 * x}%`;\n    style.width = `${100 * width}%`;\n    style.height = `${100 * height}%`;\n  }\n\n  #createSVG() {\n    const svg = DrawLayer._svgFactory.create(1, 1, /* skipDimensions = */ true);\n    this.#parent.append(svg);\n    svg.setAttribute(\"aria-hidden\", true);\n\n    return svg;\n  }\n\n  #createClipPath(defs, pathId) {\n    const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n    defs.append(clipPath);\n    const clipPathId = `clip_${pathId}`;\n    clipPath.setAttribute(\"id\", clipPathId);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n    clipPath.append(clipPathUse);\n    clipPathUse.setAttribute(\"href\", `#${pathId}`);\n    clipPathUse.classList.add(\"clip\");\n\n    return clipPathId;\n  }\n\n  #updateProperties(element, properties) {\n    for (const [key, value] of Object.entries(properties)) {\n      if (value === null) {\n        element.removeAttribute(key);\n      } else {\n        element.setAttribute(key, value);\n      }\n    }\n  }\n\n  draw(properties, isPathUpdatable = false, hasClip = false) {\n    const id = DrawLayer.#id++;\n    const root = this.#createSVG();\n\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n\n    if (isPathUpdatable) {\n      this.#toUpdate.set(id, path);\n    }\n\n    // Create the clipping path for the editor div.\n    const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n\n    const use = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use);\n    use.setAttribute(\"href\", `#${pathId}`);\n    this.updateProperties(root, properties);\n\n    this.#mapping.set(id, root);\n\n    return { id, clipPathId: `url(#${clipPathId})` };\n  }\n\n  drawOutline(properties, mustRemoveSelfIntersections) {\n    // We cannot draw the outline directly in the SVG for highlights because\n    // it composes with its parent with mix-blend-mode: multiply.\n    // But the outline has a different mix-blend-mode, so we need to draw it in\n    // its own SVG.\n    const id = DrawLayer.#id++;\n    const root = this.#createSVG();\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n\n    let maskId;\n    if (mustRemoveSelfIntersections) {\n      const mask = DrawLayer._svgFactory.createElement(\"mask\");\n      defs.append(mask);\n      maskId = `mask_p${this.pageIndex}_${id}`;\n      mask.setAttribute(\"id\", maskId);\n      mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n      const rect = DrawLayer._svgFactory.createElement(\"rect\");\n      mask.append(rect);\n      rect.setAttribute(\"width\", \"1\");\n      rect.setAttribute(\"height\", \"1\");\n      rect.setAttribute(\"fill\", \"white\");\n      const use = DrawLayer._svgFactory.createElement(\"use\");\n      mask.append(use);\n      use.setAttribute(\"href\", `#${pathId}`);\n      use.setAttribute(\"stroke\", \"none\");\n      use.setAttribute(\"fill\", \"black\");\n      use.setAttribute(\"fill-rule\", \"nonzero\");\n      use.classList.add(\"mask\");\n    }\n\n    const use1 = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use1);\n    use1.setAttribute(\"href\", `#${pathId}`);\n    if (maskId) {\n      use1.setAttribute(\"mask\", `url(#${maskId})`);\n    }\n    const use2 = use1.cloneNode();\n    root.append(use2);\n    use1.classList.add(\"mainOutline\");\n    use2.classList.add(\"secondaryOutline\");\n\n    this.updateProperties(root, properties);\n\n    this.#mapping.set(id, root);\n\n    return id;\n  }\n\n  finalizeDraw(id, properties) {\n    this.#toUpdate.delete(id);\n    this.updateProperties(id, properties);\n  }\n\n  updateProperties(elementOrId, properties) {\n    if (!properties) {\n      return;\n    }\n    const { root, bbox, rootClass, path } = properties;\n    const element =\n      typeof elementOrId === \"number\"\n        ? this.#mapping.get(elementOrId)\n        : elementOrId;\n    if (!element) {\n      return;\n    }\n    if (root) {\n      this.#updateProperties(element, root);\n    }\n    if (bbox) {\n      DrawLayer.#setBox(element, bbox);\n    }\n    if (rootClass) {\n      const { classList } = element;\n      for (const [className, value] of Object.entries(rootClass)) {\n        classList.toggle(className, value);\n      }\n    }\n    if (path) {\n      const defs = element.firstElementChild;\n      const pathElement = defs.firstElementChild;\n      this.#updateProperties(pathElement, path);\n    }\n  }\n\n  updateParent(id, layer) {\n    if (layer === this) {\n      return;\n    }\n    const root = this.#mapping.get(id);\n    if (!root) {\n      return;\n    }\n    layer.#parent.append(root);\n    this.#mapping.delete(id);\n    layer.#mapping.set(id, root);\n  }\n\n  remove(id) {\n    this.#toUpdate.delete(id);\n    if (this.#parent === null) {\n      return;\n    }\n    this.#mapping.get(id).remove();\n    this.#mapping.delete(id);\n  }\n\n  destroy() {\n    this.#parent = null;\n    for (const root of this.#mapping.values()) {\n      root.remove();\n    }\n    this.#mapping.clear();\n    this.#toUpdate.clear();\n  }\n}\n\nexport { DrawLayer };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").OnProgressParameters} OnProgressParameters */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n\nimport {\n  AbortException,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationMode,\n  AnnotationType,\n  createValidAbsoluteUrl,\n  FeatureTest,\n  getUuid,\n  ImageKind,\n  InvalidPDFException,\n  MathClamp,\n  normalizeUnicode,\n  OPS,\n  PasswordResponses,\n  PermissionFlag,\n  ResponseException,\n  shadow,\n  updateUrlHash,\n  Util,\n  VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n  applyOpacity,\n  CSSConstants,\n  fetchData,\n  findContrastColor,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  noContextMenu,\n  OutputScale,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderRichText,\n  setLayerDimensions,\n  stopEvent,\n  SupportedImageMimeTypes,\n} from \"./display/display_utils.js\";\nimport {\n  build,\n  getDocument,\n  PDFDataRangeTransport,\n  PDFWorker,\n  version,\n} from \"./display/api.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { ColorPicker } from \"./display/editor/color_picker.js\";\nimport { DOMSVGFactory } from \"./display/svg_factory.js\";\nimport { DrawLayer } from \"./display/draw_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { HighlightOutliner } from \"./display/editor/drawers/highlight.js\";\nimport { isValidExplicitDest } from \"./display/api_utils.js\";\nimport { SignatureExtractor } from \"./display/editor/drawers/signaturedraw.js\";\nimport { TextLayer } from \"./display/text_layer.js\";\nimport { TouchManager } from \"./display/touch_manager.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING || GENERIC\")) {\n  globalThis._pdfjsTestingUtils = {\n    HighlightOutliner,\n  };\n}\n\nglobalThis.pdfjsLib = {\n  AbortException,\n  AnnotationEditorLayer,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationEditorUIManager,\n  AnnotationLayer,\n  AnnotationMode,\n  AnnotationType,\n  applyOpacity,\n  build,\n  ColorPicker,\n  createValidAbsoluteUrl,\n  CSSConstants,\n  DOMSVGFactory,\n  DrawLayer,\n  FeatureTest,\n  fetchData,\n  findContrastColor,\n  getDocument,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getUuid,\n  getXfaPageViewport,\n  GlobalWorkerOptions,\n  ImageKind,\n  InvalidPDFException,\n  isDataScheme,\n  isPdfFile,\n  isValidExplicitDest,\n  MathClamp,\n  noContextMenu,\n  normalizeUnicode,\n  OPS,\n  OutputScale,\n  PasswordResponses,\n  PDFDataRangeTransport,\n  PDFDateString,\n  PDFWorker,\n  PermissionFlag,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderRichText,\n  ResponseException,\n  setLayerDimensions,\n  shadow,\n  SignatureExtractor,\n  stopEvent,\n  SupportedImageMimeTypes,\n  TextLayer,\n  TouchManager,\n  updateUrlHash,\n  Util,\n  VerbosityLevel,\n  version,\n  XfaLayer,\n};\n\nexport {\n  AbortException,\n  AnnotationEditorLayer,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationEditorUIManager,\n  AnnotationLayer,\n  AnnotationMode,\n  AnnotationType,\n  applyOpacity,\n  build,\n  ColorPicker,\n  createValidAbsoluteUrl,\n  CSSConstants,\n  DOMSVGFactory,\n  DrawLayer,\n  FeatureTest,\n  fetchData,\n  findContrastColor,\n  getDocument,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getUuid,\n  getXfaPageViewport,\n  GlobalWorkerOptions,\n  ImageKind,\n  InvalidPDFException,\n  isDataScheme,\n  isPdfFile,\n  isValidExplicitDest,\n  MathClamp,\n  noContextMenu,\n  normalizeUnicode,\n  OPS,\n  OutputScale,\n  PasswordResponses,\n  PDFDataRangeTransport,\n  PDFDateString,\n  PDFWorker,\n  PermissionFlag,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderRichText,\n  ResponseException,\n  setLayerDimensions,\n  shadow,\n  SignatureExtractor,\n  stopEvent,\n  SupportedImageMimeTypes,\n  TextLayer,\n  TouchManager,\n  updateUrlHash,\n  Util,\n  VerbosityLevel,\n  version,\n  XfaLayer,\n};\n", "// packages/ag-grid-community/src/localEventService.ts\nvar LocalEventService = class {\n  constructor() {\n    this.allSyncListeners = /* @__PURE__ */ new Map();\n    this.allAsyncListeners = /* @__PURE__ */ new Map();\n    this.globalSyncListeners = /* @__PURE__ */ new Set();\n    this.globalAsyncListeners = /* @__PURE__ */ new Set();\n    this.asyncFunctionsQueue = [];\n    this.scheduled = false;\n    // using an object performs better than a Set for the number of different events we have\n    this.firedEvents = {};\n  }\n  setFrameworkOverrides(frameworkOverrides) {\n    this.frameworkOverrides = frameworkOverrides;\n  }\n  getListeners(eventType, async, autoCreateListenerCollection) {\n    const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n    let listeners = listenerMap.get(eventType);\n    if (!listeners && autoCreateListenerCollection) {\n      listeners = /* @__PURE__ */ new Set();\n      listenerMap.set(eventType, listeners);\n    }\n    return listeners;\n  }\n  noRegisteredListenersExist() {\n    return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 && this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;\n  }\n  addEventListener(eventType, listener, async = false) {\n    this.getListeners(eventType, async, true).add(listener);\n  }\n  removeEventListener(eventType, listener, async = false) {\n    const listeners = this.getListeners(eventType, async, false);\n    if (!listeners) {\n      return;\n    }\n    listeners.delete(listener);\n    if (listeners.size === 0) {\n      (async ? this.allAsyncListeners : this.allSyncListeners).delete(eventType);\n    }\n  }\n  addGlobalListener(listener, async = false) {\n    this.getGlobalListeners(async).add(listener);\n  }\n  removeGlobalListener(listener, async = false) {\n    this.getGlobalListeners(async).delete(listener);\n  }\n  dispatchEvent(event) {\n    const agEvent = event;\n    this.dispatchToListeners(agEvent, true);\n    this.dispatchToListeners(agEvent, false);\n    this.firedEvents[agEvent.type] = true;\n  }\n  dispatchEventOnce(event) {\n    if (!this.firedEvents[event.type]) {\n      this.dispatchEvent(event);\n    }\n  }\n  dispatchToListeners(event, async) {\n    const eventType = event.type;\n    if (async && \"event\" in event) {\n      const browserEvent = event.event;\n      if (browserEvent instanceof Event) {\n        event.eventPath = browserEvent.composedPath();\n      }\n    }\n    const { frameworkOverrides } = this;\n    const runCallback = (func) => {\n      const callback = frameworkOverrides ? () => frameworkOverrides.wrapIncoming(func) : func;\n      if (async) {\n        this.dispatchAsync(callback);\n      } else {\n        callback();\n      }\n    };\n    const originalListeners = this.getListeners(eventType, async, false);\n    if ((originalListeners?.size ?? 0) > 0) {\n      const listeners = new Set(originalListeners);\n      for (const listener of listeners) {\n        if (!originalListeners?.has(listener)) {\n          continue;\n        }\n        runCallback(() => listener(event));\n      }\n    }\n    const globalListenersSrc = this.getGlobalListeners(async);\n    if (globalListenersSrc.size > 0) {\n      const globalListeners = new Set(globalListenersSrc);\n      for (const listener of globalListeners) {\n        runCallback(() => listener(eventType, event));\n      }\n    }\n  }\n  getGlobalListeners(async) {\n    return async ? this.globalAsyncListeners : this.globalSyncListeners;\n  }\n  // this gets called inside the grid's thread, for each event that it\n  // wants to set async. the grid then batches the events into one setTimeout()\n  // because setTimeout() is an expensive operation. ideally we would have\n  // each event in it's own setTimeout(), but we batch for performance.\n  dispatchAsync(func) {\n    this.asyncFunctionsQueue.push(func);\n    if (!this.scheduled) {\n      const flush = () => {\n        window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n      };\n      this.frameworkOverrides ? this.frameworkOverrides.wrapIncoming(flush) : flush();\n      this.scheduled = true;\n    }\n  }\n  // this happens in the next VM turn only, and empties the queue of events\n  flushAsyncQueue() {\n    this.scheduled = false;\n    const queueCopy = this.asyncFunctionsQueue.slice();\n    this.asyncFunctionsQueue = [];\n    queueCopy.forEach((func) => func());\n  }\n};\n\n// packages/ag-grid-community/src/misc/locale/localeUtils.ts\nfunction defaultLocaleTextFunc(_key, defaultValue) {\n  return defaultValue;\n}\nfunction _getLocaleTextFunc(localeSvc) {\n  return localeSvc?.getLocaleTextFunc() ?? defaultLocaleTextFunc;\n}\n\n// packages/ag-grid-community/src/utils/aria.ts\nfunction _toggleAriaAttribute(element, attribute, value) {\n  if (value == null || typeof value === \"string\" && value == \"\") {\n    _removeAriaAttribute(element, attribute);\n  } else {\n    _setAriaAttribute(element, attribute, value);\n  }\n}\nfunction _setAriaAttribute(element, attribute, value) {\n  element.setAttribute(_ariaAttributeName(attribute), value.toString());\n}\nfunction _removeAriaAttribute(element, attribute) {\n  element.removeAttribute(_ariaAttributeName(attribute));\n}\nfunction _ariaAttributeName(attribute) {\n  return `aria-${attribute}`;\n}\nfunction _setAriaRole(element, role) {\n  if (role) {\n    element.setAttribute(\"role\", role);\n  } else {\n    element.removeAttribute(\"role\");\n  }\n}\nfunction _getAriaSortState(sortDirection) {\n  let sort;\n  if (sortDirection === \"asc\") {\n    sort = \"ascending\";\n  } else if (sortDirection === \"desc\") {\n    sort = \"descending\";\n  } else if (sortDirection === \"mixed\") {\n    sort = \"other\";\n  } else {\n    sort = \"none\";\n  }\n  return sort;\n}\nfunction _getAriaPosInSet(element) {\n  return parseInt(element.getAttribute(\"aria-posinset\"), 10);\n}\nfunction _getAriaLabel(element) {\n  return element.getAttribute(\"aria-label\");\n}\nfunction _setAriaLabel(element, label) {\n  _toggleAriaAttribute(element, \"label\", label);\n}\nfunction _setAriaLabelledBy(element, labelledBy) {\n  _toggleAriaAttribute(element, \"labelledby\", labelledBy);\n}\nfunction _setAriaDescribedBy(element, describedby) {\n  _toggleAriaAttribute(element, \"describedby\", describedby);\n}\nfunction _setAriaLive(element, live) {\n  _toggleAriaAttribute(element, \"live\", live);\n}\nfunction _setAriaAtomic(element, atomic) {\n  _toggleAriaAttribute(element, \"atomic\", atomic);\n}\nfunction _setAriaRelevant(element, relevant) {\n  _toggleAriaAttribute(element, \"relevant\", relevant);\n}\nfunction _setAriaLevel(element, level) {\n  _toggleAriaAttribute(element, \"level\", level);\n}\nfunction _setAriaDisabled(element, disabled) {\n  _toggleAriaAttribute(element, \"disabled\", disabled);\n}\nfunction _setAriaHidden(element, hidden) {\n  _toggleAriaAttribute(element, \"hidden\", hidden);\n}\nfunction _setAriaActiveDescendant(element, descendantId) {\n  _toggleAriaAttribute(element, \"activedescendant\", descendantId);\n}\nfunction _setAriaExpanded(element, expanded) {\n  _setAriaAttribute(element, \"expanded\", expanded);\n}\nfunction _removeAriaExpanded(element) {\n  _removeAriaAttribute(element, \"expanded\");\n}\nfunction _setAriaSetSize(element, setsize) {\n  _setAriaAttribute(element, \"setsize\", setsize);\n}\nfunction _setAriaPosInSet(element, position) {\n  _setAriaAttribute(element, \"posinset\", position);\n}\nfunction _setAriaMultiSelectable(element, multiSelectable) {\n  _setAriaAttribute(element, \"multiselectable\", multiSelectable);\n}\nfunction _setAriaRowCount(element, rowCount) {\n  _setAriaAttribute(element, \"rowcount\", rowCount);\n}\nfunction _setAriaRowIndex(element, rowIndex) {\n  _setAriaAttribute(element, \"rowindex\", rowIndex);\n}\nfunction _setAriaRowSpan(element, spanCount) {\n  _setAriaAttribute(element, \"rowspan\", spanCount);\n}\nfunction _setAriaColCount(element, colCount) {\n  _setAriaAttribute(element, \"colcount\", colCount);\n}\nfunction _setAriaColIndex(element, colIndex) {\n  _setAriaAttribute(element, \"colindex\", colIndex);\n}\nfunction _setAriaColSpan(element, colSpan) {\n  _setAriaAttribute(element, \"colspan\", colSpan);\n}\nfunction _setAriaSort(element, sort) {\n  _setAriaAttribute(element, \"sort\", sort);\n}\nfunction _removeAriaSort(element) {\n  _removeAriaAttribute(element, \"sort\");\n}\nfunction _setAriaSelected(element, selected) {\n  _toggleAriaAttribute(element, \"selected\", selected);\n}\nfunction _setAriaChecked(element, checked) {\n  _setAriaAttribute(element, \"checked\", checked === void 0 ? \"mixed\" : checked);\n}\nfunction _setAriaControls(controllerElement, controlledElement) {\n  _toggleAriaAttribute(controllerElement, \"controls\", controlledElement.id);\n  _setAriaLabelledBy(controlledElement, controllerElement.id);\n}\nfunction _setAriaHasPopup(element, hasPopup) {\n  _toggleAriaAttribute(element, \"haspopup\", hasPopup === false ? null : hasPopup);\n}\nfunction _getAriaCheckboxStateName(translate, state) {\n  return state === void 0 ? translate(\"ariaIndeterminate\", \"indeterminate\") : state === true ? translate(\"ariaChecked\", \"checked\") : translate(\"ariaUnchecked\", \"unchecked\");\n}\n\n// packages/ag-grid-community/src/utils/browser.ts\nvar isSafari;\nvar isFirefox;\nvar isMacOs;\nvar isIOS;\nvar invisibleScrollbar;\nvar browserScrollbarWidth;\nvar maxDivHeight;\nfunction _isBrowserSafari() {\n  if (isSafari === void 0) {\n    isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n  }\n  return isSafari;\n}\nfunction _isBrowserFirefox() {\n  if (isFirefox === void 0) {\n    isFirefox = /(firefox)/i.test(navigator.userAgent);\n  }\n  return isFirefox;\n}\nfunction _isMacOsUserAgent() {\n  if (isMacOs === void 0) {\n    isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n  }\n  return isMacOs;\n}\nfunction _isIOSUserAgent() {\n  if (isIOS === void 0) {\n    isIOS = /iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1;\n  }\n  return isIOS;\n}\nfunction _getTabIndex(el) {\n  if (!el) {\n    return null;\n  }\n  const numberTabIndex = el.tabIndex;\n  const tabIndex = el.getAttribute(\"tabIndex\");\n  if (numberTabIndex === -1 && (tabIndex === null || tabIndex === \"\" && !_isBrowserFirefox())) {\n    return null;\n  }\n  return numberTabIndex.toString();\n}\nfunction _getMaxDivHeight() {\n  if (maxDivHeight !== void 0) {\n    return maxDivHeight;\n  }\n  if (!document.body) {\n    return -1;\n  }\n  let res = 1e6;\n  const testUpTo = _isBrowserFirefox() ? 6e6 : 1e9;\n  const div = document.createElement(\"div\");\n  document.body.appendChild(div);\n  while (true) {\n    const test = res * 2;\n    div.style.height = test + \"px\";\n    if (test > testUpTo || div.clientHeight !== test) {\n      break;\n    } else {\n      res = test;\n    }\n  }\n  document.body.removeChild(div);\n  maxDivHeight = res;\n  return res;\n}\nfunction _getScrollbarWidth() {\n  if (browserScrollbarWidth == null) {\n    initScrollbarWidthAndVisibility();\n  }\n  return browserScrollbarWidth;\n}\nfunction initScrollbarWidthAndVisibility() {\n  const body = document.body;\n  const div = document.createElement(\"div\");\n  div.style.width = div.style.height = \"100px\";\n  div.style.opacity = \"0\";\n  div.style.overflow = \"scroll\";\n  div.style.msOverflowStyle = \"scrollbar\";\n  div.style.position = \"absolute\";\n  body.appendChild(div);\n  let width = div.offsetWidth - div.clientWidth;\n  if (width === 0 && div.clientWidth === 0) {\n    width = null;\n  }\n  if (div.parentNode) {\n    div.parentNode.removeChild(div);\n  }\n  if (width != null) {\n    browserScrollbarWidth = width;\n    invisibleScrollbar = width === 0;\n  }\n}\nfunction _isInvisibleScrollbar() {\n  if (invisibleScrollbar == null) {\n    initScrollbarWidthAndVisibility();\n  }\n  return invisibleScrollbar;\n}\n\n// packages/ag-grid-community/src/utils/dom.ts\nfunction _radioCssClass(element, elementClass, otherElementClass) {\n  const parent = element.parentElement;\n  let sibling = parent && parent.firstChild;\n  while (sibling) {\n    if (elementClass) {\n      sibling.classList.toggle(elementClass, sibling === element);\n    }\n    if (otherElementClass) {\n      sibling.classList.toggle(otherElementClass, sibling !== element);\n    }\n    sibling = sibling.nextSibling;\n  }\n}\nvar FOCUSABLE_SELECTOR = \"[tabindex], input, select, button, textarea, [href]\";\nvar FOCUSABLE_EXCLUDE = \"[disabled], .ag-disabled:not(.ag-button), .ag-disabled *\";\nfunction _isFocusableFormField(element) {\n  const matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n  const inputSelector = \"input, select, button, textarea\";\n  const isFocusable = matches.call(element, inputSelector);\n  const isNotFocusable = matches.call(element, FOCUSABLE_EXCLUDE);\n  const isElementVisible = _isVisible(element);\n  const focusable = isFocusable && !isNotFocusable && isElementVisible;\n  return focusable;\n}\nfunction _setDisplayed(element, displayed, options = {}) {\n  const { skipAriaHidden } = options;\n  element.classList.toggle(\"ag-hidden\", !displayed);\n  if (!skipAriaHidden) {\n    _setAriaHidden(element, !displayed);\n  }\n}\nfunction _setVisible(element, visible, options = {}) {\n  const { skipAriaHidden } = options;\n  element.classList.toggle(\"ag-invisible\", !visible);\n  if (!skipAriaHidden) {\n    _setAriaHidden(element, !visible);\n  }\n}\nfunction _setDisabled(element, disabled) {\n  const attributeName = \"disabled\";\n  const addOrRemoveDisabledAttribute = disabled ? (e) => e.setAttribute(attributeName, \"\") : (e) => e.removeAttribute(attributeName);\n  addOrRemoveDisabledAttribute(element);\n  const inputs = element.querySelectorAll(\"input\") ?? [];\n  for (const input of inputs) {\n    addOrRemoveDisabledAttribute(input);\n  }\n}\nfunction _isElementChildOfClass(element, cls, maxNest) {\n  let counter = 0;\n  while (element) {\n    if (element.classList.contains(cls)) {\n      return true;\n    }\n    element = element.parentElement;\n    if (typeof maxNest == \"number\") {\n      if (++counter > maxNest) {\n        break;\n      }\n    } else if (element === maxNest) {\n      break;\n    }\n  }\n  return false;\n}\nfunction _getElementSize(el) {\n  const {\n    height,\n    width,\n    borderTopWidth,\n    borderRightWidth,\n    borderBottomWidth,\n    borderLeftWidth,\n    paddingTop,\n    paddingRight,\n    paddingBottom,\n    paddingLeft,\n    marginTop,\n    marginRight,\n    marginBottom,\n    marginLeft,\n    boxSizing\n  } = window.getComputedStyle(el);\n  return {\n    height: parseFloat(height || \"0\"),\n    width: parseFloat(width || \"0\"),\n    borderTopWidth: parseFloat(borderTopWidth || \"0\"),\n    borderRightWidth: parseFloat(borderRightWidth || \"0\"),\n    borderBottomWidth: parseFloat(borderBottomWidth || \"0\"),\n    borderLeftWidth: parseFloat(borderLeftWidth || \"0\"),\n    paddingTop: parseFloat(paddingTop || \"0\"),\n    paddingRight: parseFloat(paddingRight || \"0\"),\n    paddingBottom: parseFloat(paddingBottom || \"0\"),\n    paddingLeft: parseFloat(paddingLeft || \"0\"),\n    marginTop: parseFloat(marginTop || \"0\"),\n    marginRight: parseFloat(marginRight || \"0\"),\n    marginBottom: parseFloat(marginBottom || \"0\"),\n    marginLeft: parseFloat(marginLeft || \"0\"),\n    boxSizing\n  };\n}\nfunction _getInnerHeight(el) {\n  const size = _getElementSize(el);\n  if (size.boxSizing === \"border-box\") {\n    return size.height - size.paddingTop - size.paddingBottom;\n  }\n  return size.height;\n}\nfunction _getInnerWidth(el) {\n  const size = _getElementSize(el);\n  if (size.boxSizing === \"border-box\") {\n    return size.width - size.paddingLeft - size.paddingRight;\n  }\n  return size.width;\n}\nfunction _getAbsoluteHeight(el) {\n  const { height, marginBottom, marginTop } = _getElementSize(el);\n  return Math.floor(height + marginBottom + marginTop);\n}\nfunction _getAbsoluteWidth(el) {\n  const { width, marginLeft, marginRight } = _getElementSize(el);\n  return Math.floor(width + marginLeft + marginRight);\n}\nfunction _getElementRectWithOffset(el) {\n  const offsetElementRect = el.getBoundingClientRect();\n  const { borderTopWidth, borderLeftWidth, borderRightWidth, borderBottomWidth } = _getElementSize(el);\n  return {\n    top: offsetElementRect.top + (borderTopWidth || 0),\n    left: offsetElementRect.left + (borderLeftWidth || 0),\n    right: offsetElementRect.right + (borderRightWidth || 0),\n    bottom: offsetElementRect.bottom + (borderBottomWidth || 0)\n  };\n}\nfunction _getScrollLeft(element, rtl) {\n  let scrollLeft = element.scrollLeft;\n  if (rtl) {\n    scrollLeft = Math.abs(scrollLeft);\n  }\n  return scrollLeft;\n}\nfunction _setScrollLeft(element, value, rtl) {\n  if (rtl) {\n    value *= -1;\n  }\n  element.scrollLeft = value;\n}\nfunction _clearElement(el) {\n  while (el && el.firstChild) {\n    el.removeChild(el.firstChild);\n  }\n}\nfunction _removeFromParent(node) {\n  if (node && node.parentNode) {\n    node.parentNode.removeChild(node);\n  }\n}\nfunction _isInDOM(element) {\n  return !!element.offsetParent;\n}\nfunction _isVisible(element) {\n  const el = element;\n  if (el.checkVisibility) {\n    return el.checkVisibility({ checkVisibilityCSS: true });\n  }\n  const isHidden = !_isInDOM(element) || window.getComputedStyle(element).visibility !== \"visible\";\n  return !isHidden;\n}\nfunction _loadTemplate(template) {\n  const tempDiv = document.createElement(\"div\");\n  tempDiv.innerHTML = (template || \"\").trim();\n  return tempDiv.firstChild;\n}\nfunction _ensureDomOrder(eContainer, eChild, eChildBefore) {\n  if (eChildBefore && eChildBefore.nextSibling === eChild) {\n    return;\n  }\n  if (!eContainer.firstChild) {\n    eContainer.appendChild(eChild);\n  } else if (eChildBefore) {\n    if (eChildBefore.nextSibling) {\n      eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n    } else {\n      eContainer.appendChild(eChild);\n    }\n  } else if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n    eContainer.insertAdjacentElement(\"afterbegin\", eChild);\n  }\n}\nfunction _setDomChildOrder(eContainer, orderedChildren) {\n  for (let i = 0; i < orderedChildren.length; i++) {\n    const correctCellAtIndex = orderedChildren[i];\n    const actualCellAtIndex = eContainer.children[i];\n    if (actualCellAtIndex !== correctCellAtIndex) {\n      eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n    }\n  }\n}\nfunction _camelCaseToHyphenated(camelCase) {\n  return camelCase.replace(/[A-Z]/g, (s) => `-${s.toLocaleLowerCase()}`);\n}\nfunction _addStylesToElement(eElement, styles) {\n  if (!styles) {\n    return;\n  }\n  for (const key of Object.keys(styles)) {\n    const value = styles[key];\n    if (!key || !key.length || value == null) {\n      continue;\n    }\n    const parsedKey = _camelCaseToHyphenated(key);\n    const valueAsString = value.toString();\n    const parsedValue = valueAsString.replace(/\\s*!important/g, \"\");\n    const priority = parsedValue.length != valueAsString.length ? \"important\" : void 0;\n    eElement.style.setProperty(parsedKey, parsedValue, priority);\n  }\n}\nfunction _isHorizontalScrollShowing(element) {\n  return element.clientWidth < element.scrollWidth;\n}\nfunction _isVerticalScrollShowing(element) {\n  return element.clientHeight < element.scrollHeight;\n}\nfunction _setElementWidth(element, width) {\n  if (width === \"flex\") {\n    element.style.removeProperty(\"width\");\n    element.style.removeProperty(\"minWidth\");\n    element.style.removeProperty(\"maxWidth\");\n    element.style.flex = \"1 1 auto\";\n  } else {\n    _setFixedWidth(element, width);\n  }\n}\nfunction _setFixedWidth(element, width) {\n  width = _formatSize(width);\n  element.style.width = width;\n  element.style.maxWidth = width;\n  element.style.minWidth = width;\n}\nfunction _setFixedHeight(element, height) {\n  height = _formatSize(height);\n  element.style.height = height;\n  element.style.maxHeight = height;\n  element.style.minHeight = height;\n}\nfunction _formatSize(size) {\n  return typeof size === \"number\" ? `${size}px` : size;\n}\nfunction _isNodeOrElement(o) {\n  return o instanceof Node || o instanceof HTMLElement;\n}\nfunction _addOrRemoveAttribute(element, name, value) {\n  if (value == null || value === \"\") {\n    element.removeAttribute(name);\n  } else {\n    element.setAttribute(name, value.toString());\n  }\n}\nfunction _observeResize(beans, element, callback) {\n  const win = _getWindow(beans);\n  const ResizeObserverImpl = win.ResizeObserver;\n  const resizeObserver = ResizeObserverImpl ? new ResizeObserverImpl(callback) : null;\n  resizeObserver?.observe(element);\n  return () => resizeObserver?.disconnect();\n}\nfunction _getTextSelectionRanges(beans) {\n  const rootNode = _getRootNode(beans);\n  const selection = \"getSelection\" in rootNode ? rootNode.getSelection() : null;\n  const ranges = [];\n  for (let i = 0; i < (selection?.rangeCount ?? 0); i++) {\n    const range = selection?.getRangeAt(i);\n    if (range) {\n      ranges.push(range);\n    }\n  }\n  return { selection, ranges };\n}\nfunction _preserveRangesWhile(beans, fn) {\n  const enableCellTextSelection = beans.gos.get(\"enableCellTextSelection\");\n  if (!enableCellTextSelection) {\n    return fn();\n  }\n  if (!_isBrowserFirefox() && !_isBrowserSafari()) {\n    return fn();\n  }\n  const { selection, ranges } = _getTextSelectionRanges(beans);\n  fn();\n  selection?.removeAllRanges();\n  for (const range of ranges) {\n    selection?.addRange(range);\n  }\n}\nfunction _requestAnimationFrame(beans, callback) {\n  const win = _getWindow(beans);\n  if (win.requestAnimationFrame) {\n    win.requestAnimationFrame(callback);\n  } else if (win.webkitRequestAnimationFrame) {\n    win.webkitRequestAnimationFrame(callback);\n  } else {\n    win.setTimeout(callback, 0);\n  }\n}\nvar DataRefAttribute = \"data-ref\";\nvar whitespaceNode;\nfunction getWhitespaceNode() {\n  whitespaceNode ?? (whitespaceNode = document.createTextNode(\" \"));\n  return whitespaceNode.cloneNode();\n}\nfunction _createElement(params) {\n  const { attrs, children, cls, ref, role, tag } = params;\n  const element = document.createElement(tag);\n  if (cls) {\n    element.className = cls;\n  }\n  if (ref) {\n    element.setAttribute(DataRefAttribute, ref);\n  }\n  if (role) {\n    element.setAttribute(\"role\", role);\n  }\n  if (attrs) {\n    for (const key of Object.keys(attrs)) {\n      element.setAttribute(key, attrs[key]);\n    }\n  }\n  if (children) {\n    if (typeof children === \"string\") {\n      element.textContent = children;\n    } else {\n      let addFirstWhitespace = true;\n      for (const child of children) {\n        if (child) {\n          if (typeof child === \"string\") {\n            element.appendChild(document.createTextNode(child));\n            addFirstWhitespace = false;\n          } else {\n            if (addFirstWhitespace) {\n              element.appendChild(getWhitespaceNode());\n              addFirstWhitespace = false;\n            }\n            element.append(_createElement(child));\n            element.appendChild(getWhitespaceNode());\n          }\n        }\n      }\n    }\n  }\n  return element;\n}\n\n// packages/ag-grid-community/src/utils/function.ts\nvar doOnceFlags = {};\nfunction _doOnce(func, key) {\n  if (doOnceFlags[key]) {\n    return;\n  }\n  func();\n  doOnceFlags[key] = true;\n}\nfunction _logIfDebug(gos, message, ...args) {\n  if (gos.get(\"debug\")) {\n    console.log(\"AG Grid: \" + message, ...args);\n  }\n}\nfunction _warnOnce(msg, ...args) {\n  _doOnce(() => console.warn(\"AG Grid: \" + msg, ...args), msg + args?.join(\"\"));\n}\nfunction _errorOnce(msg, ...args) {\n  _doOnce(() => console.error(\"AG Grid: \" + msg, ...args), msg + args?.join(\"\"));\n}\nvar batchedCallsSetTimeout = {\n  pending: false,\n  funcs: []\n};\nvar batchedCallsRaf = {\n  pending: false,\n  funcs: []\n};\nfunction _batchCall(func, mode = \"setTimeout\", beans) {\n  const batch = mode === \"raf\" ? batchedCallsRaf : batchedCallsSetTimeout;\n  batch.funcs.push(func);\n  if (batch.pending) {\n    return;\n  }\n  batch.pending = true;\n  const runBatch = () => {\n    const funcsCopy = batch.funcs.slice();\n    batch.funcs.length = 0;\n    batch.pending = false;\n    funcsCopy.forEach((func2) => func2());\n  };\n  if (mode === \"raf\") {\n    _requestAnimationFrame(beans, runBatch);\n  } else {\n    window.setTimeout(runBatch, 0);\n  }\n}\nfunction _debounce(bean, func, delay) {\n  let timeout;\n  return function(...args) {\n    const context = this;\n    window.clearTimeout(timeout);\n    timeout = window.setTimeout(function() {\n      if (bean.isAlive()) {\n        func.apply(context, args);\n      }\n    }, delay);\n  };\n}\nfunction _throttle(func, wait) {\n  let previousCall = 0;\n  return function(...args) {\n    const context = this;\n    const currentCall = Date.now();\n    if (currentCall - previousCall < wait) {\n      return;\n    }\n    previousCall = currentCall;\n    func.apply(context, args);\n  };\n}\nfunction _waitUntil(condition, callback, timeout = 100, timeoutMessage) {\n  const timeStamp = Date.now();\n  let interval = null;\n  let executed = false;\n  const internalCallback = () => {\n    const reachedTimeout = Date.now() - timeStamp > timeout;\n    if (condition() || reachedTimeout) {\n      callback();\n      executed = true;\n      if (interval != null) {\n        window.clearInterval(interval);\n        interval = null;\n      }\n      if (reachedTimeout && timeoutMessage) {\n        _warnOnce(timeoutMessage);\n      }\n    }\n  };\n  internalCallback();\n  if (!executed) {\n    interval = window.setInterval(internalCallback, 10);\n  }\n}\n\n// packages/ag-grid-community/src/utils/generic.ts\nfunction _makeNull(value) {\n  if (value == null || value === \"\") {\n    return null;\n  }\n  return value;\n}\nfunction _exists(value) {\n  return value != null && value !== \"\";\n}\nfunction _missing(value) {\n  return !_exists(value);\n}\nfunction _toStringOrNull(value) {\n  return value != null && typeof value.toString === \"function\" ? value.toString() : null;\n}\nfunction _jsonEquals(val1, val2) {\n  const val1Json = val1 ? JSON.stringify(val1) : null;\n  const val2Json = val2 ? JSON.stringify(val2) : null;\n  return val1Json === val2Json;\n}\nfunction _defaultComparator(valueA, valueB, accentedCompare = false) {\n  const valueAMissing = valueA == null;\n  const valueBMissing = valueB == null;\n  if (valueA && valueA.toNumber) {\n    valueA = valueA.toNumber();\n  }\n  if (valueB && valueB.toNumber) {\n    valueB = valueB.toNumber();\n  }\n  if (valueAMissing && valueBMissing) {\n    return 0;\n  }\n  if (valueAMissing) {\n    return -1;\n  }\n  if (valueBMissing) {\n    return 1;\n  }\n  function doQuickCompare(a, b) {\n    return a > b ? 1 : a < b ? -1 : 0;\n  }\n  if (typeof valueA !== \"string\") {\n    return doQuickCompare(valueA, valueB);\n  }\n  if (!accentedCompare) {\n    return doQuickCompare(valueA, valueB);\n  }\n  try {\n    return valueA.localeCompare(valueB);\n  } catch (e) {\n    return doQuickCompare(valueA, valueB);\n  }\n}\n\n// packages/ag-grid-community/src/baseUrl.ts\nvar BASE_URL = \"https://www.ag-grid.com\";\n\n// packages/ag-grid-community/src/version.ts\nvar VERSION = \"33.3.2\";\n\n// packages/ag-grid-community/src/validation/logging.ts\nvar MAX_URL_LENGTH = 2e3;\nvar MIN_PARAM_LENGTH = 100;\nvar VERSION_PARAM_NAME = \"_version_\";\nvar validation = null;\nvar suppressAllLogging = false;\nvar baseDocLink = `${BASE_URL}/javascript-data-grid`;\nfunction provideValidationServiceLogger(logger) {\n  validation = logger;\n}\nfunction setValidationDocLink(docLink) {\n  baseDocLink = docLink;\n}\nfunction getErrorParts(id, args, defaultMessage) {\n  return validation?.getConsoleMessage(id, args) ?? [minifiedLog(id, args, defaultMessage)];\n}\nfunction getMsgOrDefault(logger, id, args, defaultMessage) {\n  if (suppressAllLogging)\n    return;\n  logger(`error #${id}`, ...getErrorParts(id, args, defaultMessage));\n}\nfunction stringifyObject(inputObj) {\n  if (!inputObj)\n    return String(inputObj);\n  const object = {};\n  for (const prop of Object.keys(inputObj)) {\n    if (typeof inputObj[prop] !== \"object\" && typeof inputObj[prop] !== \"function\") {\n      object[prop] = inputObj[prop];\n    }\n  }\n  return JSON.stringify(object);\n}\nfunction stringifyValue(value) {\n  let output = value;\n  if (value instanceof Error) {\n    output = value.toString();\n  } else if (typeof value === \"object\") {\n    output = stringifyObject(value);\n  }\n  return output;\n}\nfunction toStringWithNullUndefined(str) {\n  return str === void 0 ? \"undefined\" : str === null ? \"null\" : str;\n}\nfunction getParamsUrl(baseUrl, params) {\n  return `${baseUrl}?${params.toString()}`;\n}\nfunction truncateUrl(baseUrl, params, maxLength) {\n  const sortedParams = Array.from(params.entries()).sort((a, b) => b[1].length - a[1].length);\n  let url = getParamsUrl(baseUrl, params);\n  for (const [key, value] of sortedParams) {\n    if (key === VERSION_PARAM_NAME) {\n      continue;\n    }\n    const excessLength = url.length - maxLength;\n    if (excessLength <= 0) {\n      break;\n    }\n    const ellipse = \"...\";\n    const truncateAmount = excessLength + ellipse.length;\n    const truncatedValue = value.length - truncateAmount > MIN_PARAM_LENGTH ? value.slice(0, value.length - truncateAmount) + ellipse : value.slice(0, MIN_PARAM_LENGTH) + ellipse;\n    params.set(key, truncatedValue);\n    url = getParamsUrl(baseUrl, params);\n  }\n  return url;\n}\nfunction getErrorLink(errorNum, args) {\n  const params = new URLSearchParams();\n  params.append(VERSION_PARAM_NAME, VERSION);\n  if (args) {\n    for (const key of Object.keys(args)) {\n      params.append(key, stringifyValue(args[key]));\n    }\n  }\n  const baseUrl = `${baseDocLink}/errors/${errorNum}`;\n  const url = getParamsUrl(baseUrl, params);\n  return url.length <= MAX_URL_LENGTH ? url : truncateUrl(baseUrl, params, MAX_URL_LENGTH);\n}\nvar minifiedLog = (errorNum, args, defaultMessage) => {\n  const errorLink = getErrorLink(errorNum, args);\n  return `${defaultMessage ? defaultMessage + \" \\n\" : \"\"}Visit ${errorLink}${defaultMessage ? \"\" : \" \\n  Alternatively register the ValidationModule to see the full message in the console.\"}`;\n};\nfunction _warn(...args) {\n  getMsgOrDefault(_warnOnce, args[0], args[1]);\n}\nfunction _error(...args) {\n  getMsgOrDefault(_errorOnce, args[0], args[1]);\n}\nfunction _logPreInitErr(id, args, defaultMessage) {\n  getMsgOrDefault(_errorOnce, id, args, defaultMessage);\n}\nfunction getErrMsg(defaultMessage, args) {\n  const id = args[0];\n  return `error #${id} ` + getErrorParts(id, args[1], defaultMessage).join(\" \");\n}\nfunction _errMsg(...args) {\n  return getErrMsg(void 0, args);\n}\nfunction _preInitErrMsg(...args) {\n  return getErrMsg(\"\\n\", args);\n}\n\n// packages/ag-grid-community/src/gridOptionsUtils.ts\nfunction isRowModelType(gos, rowModelType) {\n  return gos.get(\"rowModelType\") === rowModelType;\n}\nfunction _isClientSideRowModel(gos, rowModel) {\n  return isRowModelType(gos, \"clientSide\");\n}\nfunction _isServerSideRowModel(gos, rowModel) {\n  return isRowModelType(gos, \"serverSide\");\n}\nfunction _isDomLayout(gos, domLayout) {\n  return gos.get(\"domLayout\") === domLayout;\n}\nfunction _isRowSelection(gos) {\n  return _getRowSelectionMode(gos) !== void 0;\n}\nfunction _isGetRowHeightFunction(gos) {\n  return typeof gos.get(\"getRowHeight\") === \"function\";\n}\nfunction _shouldMaintainColumnOrder(gos, isPivotColumns) {\n  if (isPivotColumns) {\n    return !gos.get(\"enableStrictPivotColumnOrder\");\n  }\n  return gos.get(\"maintainColumnOrder\");\n}\nfunction _getRowHeightForNode(beans, rowNode, allowEstimate = false, defaultRowHeight) {\n  const { gos, environment } = beans;\n  if (defaultRowHeight == null) {\n    defaultRowHeight = environment.getDefaultRowHeight();\n  }\n  if (_isGetRowHeightFunction(gos)) {\n    if (allowEstimate) {\n      return { height: defaultRowHeight, estimated: true };\n    }\n    const params = {\n      node: rowNode,\n      data: rowNode.data\n    };\n    const height = gos.getCallback(\"getRowHeight\")(params);\n    if (isNumeric(height)) {\n      if (height === 0) {\n        _warn(23);\n      }\n      return { height: Math.max(1, height), estimated: false };\n    }\n  }\n  if (rowNode.detail && gos.get(\"masterDetail\")) {\n    return getMasterDetailRowHeight(gos);\n  }\n  const gridOptionsRowHeight = gos.get(\"rowHeight\");\n  const rowHeight = gridOptionsRowHeight && isNumeric(gridOptionsRowHeight) ? gridOptionsRowHeight : defaultRowHeight;\n  return { height: rowHeight, estimated: false };\n}\nfunction getMasterDetailRowHeight(gos) {\n  if (gos.get(\"detailRowAutoHeight\")) {\n    return { height: 1, estimated: false };\n  }\n  const defaultRowHeight = gos.get(\"detailRowHeight\");\n  if (isNumeric(defaultRowHeight)) {\n    return { height: defaultRowHeight, estimated: false };\n  }\n  return { height: 300, estimated: false };\n}\nfunction _getRowHeightAsNumber(beans) {\n  const { environment, gos } = beans;\n  const gridOptionsRowHeight = gos.get(\"rowHeight\");\n  if (!gridOptionsRowHeight || _missing(gridOptionsRowHeight)) {\n    return environment.getDefaultRowHeight();\n  }\n  const rowHeight = environment.refreshRowHeightVariable();\n  if (rowHeight !== -1) {\n    return rowHeight;\n  }\n  _warn(24);\n  return environment.getDefaultRowHeight();\n}\nfunction isNumeric(value) {\n  return !isNaN(value) && typeof value === \"number\" && isFinite(value);\n}\nfunction _getDomData(gos, element, key) {\n  const domData = element[gos.getDomDataKey()];\n  return domData ? domData[key] : void 0;\n}\nfunction _setDomData(gos, element, key, value) {\n  const domDataKey = gos.getDomDataKey();\n  let domData = element[domDataKey];\n  if (_missing(domData)) {\n    domData = {};\n    element[domDataKey] = domData;\n  }\n  domData[key] = value;\n}\nfunction _getDocument(beans) {\n  const { gos, eGridDiv } = beans;\n  let result = null;\n  const gridOptionsGetDocument = gos.get(\"getDocument\");\n  if (gridOptionsGetDocument && _exists(gridOptionsGetDocument)) {\n    result = gridOptionsGetDocument();\n  } else if (eGridDiv) {\n    result = eGridDiv.ownerDocument;\n  }\n  if (result && _exists(result)) {\n    return result;\n  }\n  return document;\n}\nfunction _getWindow(beans) {\n  const eDocument = _getDocument(beans);\n  return eDocument.defaultView || window;\n}\nfunction _getRootNode(beans) {\n  return beans.eGridDiv.getRootNode();\n}\nfunction _getActiveDomElement(beans) {\n  return _getRootNode(beans).activeElement;\n}\nfunction _getPageBody(beans) {\n  let rootNode = null;\n  let targetEl = null;\n  try {\n    rootNode = _getDocument(beans).fullscreenElement;\n  } catch (e) {\n  } finally {\n    if (!rootNode) {\n      rootNode = _getRootNode(beans);\n    }\n    const body = rootNode.querySelector(\"body\");\n    if (body) {\n      targetEl = body;\n    } else if (rootNode instanceof ShadowRoot) {\n      targetEl = rootNode;\n    } else if (rootNode instanceof Document) {\n      targetEl = rootNode?.documentElement;\n    } else {\n      targetEl = rootNode;\n    }\n  }\n  return targetEl;\n}\nfunction _getBodyWidth(beans) {\n  const body = _getPageBody(beans);\n  return body?.clientWidth ?? (window.innerHeight || -1);\n}\nfunction _getBodyHeight(beans) {\n  const body = _getPageBody(beans);\n  return body?.clientHeight ?? (window.innerHeight || -1);\n}\nfunction _anchorElementToMouseMoveEvent(element, mouseMoveEvent, beans) {\n  const eRect = element.getBoundingClientRect();\n  const height = eRect.height;\n  const browserWidth = _getBodyWidth(beans) - 2;\n  const browserHeight = _getBodyHeight(beans) - 2;\n  const offsetParent = element.offsetParent;\n  if (!offsetParent) {\n    return;\n  }\n  const offsetParentSize = _getElementRectWithOffset(element.offsetParent);\n  const { clientY, clientX } = mouseMoveEvent;\n  let top = clientY - offsetParentSize.top - height / 2;\n  let left = clientX - offsetParentSize.left - 10;\n  const eDocument = _getDocument(beans);\n  const win = eDocument.defaultView || window;\n  const windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;\n  const windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;\n  if (browserWidth > 0 && left + element.clientWidth > browserWidth + windowScrollX) {\n    left = browserWidth + windowScrollX - element.clientWidth;\n  }\n  if (left < 0) {\n    left = 0;\n  }\n  if (browserHeight > 0 && top + element.clientHeight > browserHeight + windowScrollY) {\n    top = browserHeight + windowScrollY - element.clientHeight;\n  }\n  if (top < 0) {\n    top = 0;\n  }\n  element.style.left = `${left}px`;\n  element.style.top = `${top}px`;\n}\nfunction _isNothingFocused(beans) {\n  const activeEl = _getActiveDomElement(beans);\n  return activeEl === null || activeEl === _getDocument(beans).body;\n}\nfunction _isAnimateRows(gos) {\n  if (gos.get(\"ensureDomOrder\")) {\n    return false;\n  }\n  return gos.get(\"animateRows\");\n}\nfunction _isGroupRowsSticky(gos) {\n  if (gos.get(\"paginateChildRows\") || gos.get(\"groupHideOpenParents\") || _isDomLayout(gos, \"print\")) {\n    return false;\n  }\n  return true;\n}\nfunction _isColumnsSortingCoupledToGroup(gos) {\n  const autoGroupColumnDef = gos.get(\"autoGroupColumnDef\");\n  return !autoGroupColumnDef?.comparator && !gos.get(\"treeData\");\n}\nfunction _getGroupAggFiltering(gos) {\n  const userValue = gos.get(\"groupAggFiltering\");\n  if (typeof userValue === \"function\") {\n    return gos.getCallback(\"groupAggFiltering\");\n  }\n  if (userValue === true) {\n    return () => true;\n  }\n  return void 0;\n}\nfunction _getGrandTotalRow(gos) {\n  return gos.get(\"grandTotalRow\");\n}\nfunction _getGroupTotalRowCallback(gos) {\n  const userValue = gos.get(\"groupTotalRow\");\n  if (typeof userValue === \"function\") {\n    return gos.getCallback(\"groupTotalRow\");\n  }\n  return () => userValue ?? void 0;\n}\nfunction _isGroupMultiAutoColumn(gos) {\n  const isHideOpenParents = !!gos.get(\"groupHideOpenParents\");\n  if (isHideOpenParents) {\n    return true;\n  }\n  return gos.get(\"groupDisplayType\") === \"multipleColumns\";\n}\nfunction _isGroupUseEntireRow(gos, pivotMode) {\n  if (pivotMode) {\n    return false;\n  }\n  return gos.get(\"groupDisplayType\") === \"groupRows\";\n}\nfunction _isFullWidthGroupRow(gos, node, pivotMode) {\n  return !!node.group && !node.footer && _isGroupUseEntireRow(gos, pivotMode);\n}\nfunction _getRowIdCallback(gos) {\n  const getRowId = gos.getCallback(\"getRowId\");\n  if (getRowId === void 0) {\n    return getRowId;\n  }\n  return (params) => {\n    let id = getRowId(params);\n    if (typeof id !== \"string\") {\n      _doOnce(() => _warn(25, { id }), \"getRowIdString\");\n      id = String(id);\n    }\n    return id;\n  };\n}\nfunction _canSkipShowingRowGroup(gos, node) {\n  const isSkippingGroups = gos.get(\"groupHideParentOfSingleChild\");\n  if (isSkippingGroups === true) {\n    return true;\n  }\n  if (isSkippingGroups === \"leafGroupsOnly\" && node.leafGroup) {\n    return true;\n  }\n  if (gos.get(\"groupRemoveSingleChildren\")) {\n    return true;\n  }\n  if (gos.get(\"groupRemoveLowestSingleChildren\") && node.leafGroup) {\n    return true;\n  }\n  return false;\n}\nfunction _getMaxConcurrentDatasourceRequests(gos) {\n  const res = gos.get(\"maxConcurrentDatasourceRequests\");\n  return res > 0 ? res : void 0;\n}\nfunction _shouldUpdateColVisibilityAfterGroup(gos, isGrouped) {\n  const preventVisibilityChanges = gos.get(\"suppressGroupChangesColumnVisibility\");\n  if (preventVisibilityChanges === true) {\n    return false;\n  }\n  if (isGrouped && preventVisibilityChanges === \"suppressHideOnGroup\") {\n    return false;\n  }\n  if (!isGrouped && preventVisibilityChanges === \"suppressShowOnUngroup\") {\n    return false;\n  }\n  const legacySuppressOnGroup = gos.get(\"suppressRowGroupHidesColumns\");\n  if (isGrouped && legacySuppressOnGroup === true) {\n    return false;\n  }\n  const legacySuppressOnUngroup = gos.get(\"suppressMakeColumnVisibleAfterUnGroup\");\n  if (!isGrouped && legacySuppressOnUngroup === true) {\n    return false;\n  }\n  return true;\n}\nfunction _getCheckboxes(selection) {\n  return selection?.checkboxes ?? true;\n}\nfunction _getHeaderCheckbox(selection) {\n  return selection?.mode === \"multiRow\" && (selection.headerCheckbox ?? true);\n}\nfunction _getCheckboxLocation(rowSelection) {\n  if (typeof rowSelection !== \"object\") {\n    return void 0;\n  }\n  return rowSelection.checkboxLocation ?? \"selectionColumn\";\n}\nfunction _getHideDisabledCheckboxes(selection) {\n  return selection?.hideDisabledCheckboxes ?? false;\n}\nfunction _isUsingNewRowSelectionAPI(gos) {\n  const rowSelection = gos.get(\"rowSelection\");\n  return typeof rowSelection !== \"string\";\n}\nfunction _isUsingNewCellSelectionAPI(gos) {\n  return gos.get(\"cellSelection\") !== void 0;\n}\nfunction _getSuppressMultiRanges(gos) {\n  const selection = gos.get(\"cellSelection\");\n  const useNewAPI = selection !== void 0;\n  if (!useNewAPI) {\n    return gos.get(\"suppressMultiRangeSelection\");\n  }\n  return typeof selection !== \"boolean\" ? selection?.suppressMultiRanges ?? false : false;\n}\nfunction _isCellSelectionEnabled(gos) {\n  const selection = gos.get(\"cellSelection\");\n  const useNewAPI = selection !== void 0;\n  return useNewAPI ? !!selection : gos.get(\"enableRangeSelection\");\n}\nfunction _getFillHandle(gos) {\n  const selection = gos.get(\"cellSelection\");\n  const useNewAPI = selection !== void 0;\n  if (!useNewAPI) {\n    return {\n      mode: \"fill\",\n      setFillValue: gos.get(\"fillOperation\"),\n      direction: gos.get(\"fillHandleDirection\"),\n      suppressClearOnFillReduction: gos.get(\"suppressClearOnFillReduction\")\n    };\n  }\n  return typeof selection !== \"boolean\" && selection.handle?.mode === \"fill\" ? selection.handle : void 0;\n}\nfunction _getEnableClickSelection(gos) {\n  const selection = gos.get(\"rowSelection\") ?? \"single\";\n  if (typeof selection === \"string\") {\n    const suppressRowClickSelection = gos.get(\"suppressRowClickSelection\");\n    const suppressRowDeselection = gos.get(\"suppressRowDeselection\");\n    if (suppressRowClickSelection && suppressRowDeselection) {\n      return false;\n    } else if (suppressRowClickSelection) {\n      return \"enableDeselection\";\n    } else if (suppressRowDeselection) {\n      return \"enableSelection\";\n    } else {\n      return true;\n    }\n  }\n  return selection.mode === \"singleRow\" || selection.mode === \"multiRow\" ? selection.enableClickSelection ?? false : false;\n}\nfunction _getEnableSelection(gos) {\n  const enableClickSelection = _getEnableClickSelection(gos);\n  return enableClickSelection === true || enableClickSelection === \"enableSelection\";\n}\nfunction _getEnableDeselection(gos) {\n  const enableClickSelection = _getEnableClickSelection(gos);\n  return enableClickSelection === true || enableClickSelection === \"enableDeselection\";\n}\nfunction _getIsRowSelectable(gos) {\n  const selection = gos.get(\"rowSelection\");\n  if (typeof selection === \"string\") {\n    return gos.get(\"isRowSelectable\");\n  }\n  return selection?.isRowSelectable;\n}\nfunction _getRowSelectionMode(arg) {\n  const selection = \"beanName\" in arg && arg.beanName === \"gos\" ? arg.get(\"rowSelection\") : arg.rowSelection;\n  if (typeof selection === \"string\") {\n    switch (selection) {\n      case \"multiple\":\n        return \"multiRow\";\n      case \"single\":\n        return \"singleRow\";\n      default:\n        return;\n    }\n  }\n  switch (selection?.mode) {\n    case \"multiRow\":\n    case \"singleRow\":\n      return selection.mode;\n    default:\n      return;\n  }\n}\nfunction _isMultiRowSelection(arg) {\n  const mode = _getRowSelectionMode(arg);\n  return mode === \"multiRow\";\n}\nfunction _getEnableSelectionWithoutKeys(gos) {\n  const selection = gos.get(\"rowSelection\");\n  if (typeof selection === \"string\") {\n    return gos.get(\"rowMultiSelectWithClick\");\n  }\n  return selection?.enableSelectionWithoutKeys ?? false;\n}\nfunction _getGroupSelection(gos) {\n  const selection = gos.get(\"rowSelection\");\n  if (typeof selection === \"string\") {\n    const groupSelectsChildren = gos.get(\"groupSelectsChildren\");\n    const groupSelectsFiltered = gos.get(\"groupSelectsFiltered\");\n    if (groupSelectsChildren && groupSelectsFiltered) {\n      return \"filteredDescendants\";\n    } else if (groupSelectsChildren) {\n      return \"descendants\";\n    } else {\n      return \"self\";\n    }\n  }\n  return selection?.mode === \"multiRow\" ? selection.groupSelects : void 0;\n}\nfunction _getSelectAll(gos, defaultValue = true) {\n  const rowSelection = gos.get(\"rowSelection\");\n  if (typeof rowSelection !== \"object\") {\n    return defaultValue ? \"all\" : void 0;\n  }\n  return rowSelection.mode === \"multiRow\" ? rowSelection.selectAll : \"all\";\n}\nfunction _getGroupSelectsDescendants(gos) {\n  const groupSelection = _getGroupSelection(gos);\n  return groupSelection === \"descendants\" || groupSelection === \"filteredDescendants\";\n}\nfunction _getMasterSelects(gos) {\n  const rowSelection = gos.get(\"rowSelection\");\n  return typeof rowSelection === \"object\" && rowSelection.masterSelects || \"self\";\n}\nfunction _isSetFilterByDefault(gos) {\n  return gos.isModuleRegistered(\"SetFilter\") && !gos.get(\"suppressSetFilterByDefault\");\n}\nfunction _isLegacyMenuEnabled(gos) {\n  return gos.get(\"columnMenu\") === \"legacy\";\n}\nfunction _isColumnMenuAnchoringEnabled(gos) {\n  return !_isLegacyMenuEnabled(gos);\n}\nfunction _getCallbackForEvent(eventName) {\n  if (!eventName || eventName.length < 2) {\n    return eventName;\n  }\n  return \"on\" + eventName[0].toUpperCase() + eventName.substring(1);\n}\nfunction _combineAttributesAndGridOptions(gridOptions, component, gridOptionsKeys) {\n  if (typeof gridOptions !== \"object\") {\n    gridOptions = {};\n  }\n  const mergedOptions = { ...gridOptions };\n  gridOptionsKeys.forEach((key) => {\n    const value = component[key];\n    if (typeof value !== \"undefined\") {\n      mergedOptions[key] = value;\n    }\n  });\n  return mergedOptions;\n}\nfunction _processOnChange(changes, api) {\n  if (!changes) {\n    return;\n  }\n  const gridChanges = {};\n  let hasChanges = false;\n  Object.keys(changes).forEach((key) => {\n    gridChanges[key] = changes[key];\n    hasChanges = true;\n  });\n  if (!hasChanges) {\n    return;\n  }\n  const internalUpdateEvent = {\n    type: \"gridOptionsChanged\",\n    options: gridChanges\n  };\n  api.dispatchEvent(internalUpdateEvent);\n  const event = {\n    type: \"componentStateChanged\",\n    ...gridChanges\n  };\n  api.dispatchEvent(event);\n}\nfunction _addGridCommonParams(gos, params) {\n  return gos.addGridCommonParams(params);\n}\nfunction _getGroupingApproach(gos) {\n  if (gos.get(\"treeData\")) {\n    if (gos.get(\"treeDataParentIdField\")) {\n      return \"treeSelfRef\";\n    }\n    if (gos.get(\"treeDataChildrenField\")) {\n      return \"treeNested\";\n    }\n    return \"treePath\";\n  }\n  return \"group\";\n}\n\n// packages/ag-grid-community/src/utils/event.ts\nvar AG_GRID_STOP_PROPAGATION = \"__ag_Grid_Stop_Propagation\";\nvar PASSIVE_EVENTS = [\"touchstart\", \"touchend\", \"touchmove\", \"touchcancel\", \"scroll\"];\nvar NON_PASSIVE_EVENTS = [\"wheel\"];\nvar supports = {};\nfunction _stopPropagationForAgGrid(event) {\n  event[AG_GRID_STOP_PROPAGATION] = true;\n}\nfunction _isStopPropagationForAgGrid(event) {\n  return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nvar _isEventSupported = /* @__PURE__ */ (() => {\n  const tags = {\n    select: \"input\",\n    change: \"input\",\n    submit: \"form\",\n    reset: \"form\",\n    error: \"img\",\n    load: \"img\",\n    abort: \"img\"\n  };\n  const eventChecker = (eventName) => {\n    if (typeof supports[eventName] === \"boolean\") {\n      return supports[eventName];\n    }\n    const el = document.createElement(tags[eventName] || \"div\");\n    eventName = \"on\" + eventName;\n    return supports[eventName] = eventName in el;\n  };\n  return eventChecker;\n})();\nfunction _getCtrlForEventTarget(gos, eventTarget, type) {\n  let sourceElement = eventTarget;\n  while (sourceElement) {\n    const renderedComp = _getDomData(gos, sourceElement, type);\n    if (renderedComp) {\n      return renderedComp;\n    }\n    sourceElement = sourceElement.parentElement;\n  }\n  return null;\n}\nfunction _isElementInEventPath(element, event) {\n  if (!event || !element) {\n    return false;\n  }\n  return _getEventPath(event).indexOf(element) >= 0;\n}\nfunction _createEventPath(event) {\n  const res = [];\n  let pointer = event.target;\n  while (pointer) {\n    res.push(pointer);\n    pointer = pointer.parentElement;\n  }\n  return res;\n}\nfunction _getEventPath(event) {\n  const eventNoType = event;\n  if (eventNoType.path) {\n    return eventNoType.path;\n  }\n  if (eventNoType.composedPath) {\n    return eventNoType.composedPath();\n  }\n  return _createEventPath(eventNoType);\n}\nfunction _addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n  const passive = getPassiveStateForEvent(event);\n  let options;\n  if (passive != null) {\n    options = { passive };\n  }\n  if (frameworkOverrides && frameworkOverrides.addEventListener) {\n    frameworkOverrides.addEventListener(eElement, event, listener, options);\n  }\n}\nvar getPassiveStateForEvent = (event) => {\n  const isPassive = PASSIVE_EVENTS.includes(event);\n  const isNonPassive = NON_PASSIVE_EVENTS.includes(event);\n  if (isPassive) {\n    return true;\n  }\n  if (isNonPassive) {\n    return false;\n  }\n};\n\n// packages/ag-grid-community/src/context/beanStub.ts\nvar BeanStub = class {\n  constructor() {\n    // not named context to allow children to use 'context' as a variable name\n    this.destroyFunctions = [];\n    this.destroyed = false;\n    // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive\n    // prevents vue from creating proxies for created objects and prevents identity related issues\n    this.__v_skip = true;\n    this.propertyListenerId = 0;\n    // Enable multiple grid properties to be updated together by the user but only trigger shared logic once.\n    // Closely related to logic in GridOptionsUtils.ts _processOnChange\n    this.lastChangeSetIdLookup = {};\n    this.isAlive = () => !this.destroyed;\n  }\n  preWireBeans(beans) {\n    this.beans = beans;\n    this.stubContext = beans.context;\n    this.eventSvc = beans.eventSvc;\n    this.gos = beans.gos;\n  }\n  // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n  // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n  // points to a bean or component that was not properly disposed of.\n  // constructor() {\n  //     setTimeout(()=> {\n  //         if (this.isAlive()) {\n  //             let prototype: any = Object.getPrototypeOf(this);\n  //             const constructor: any = prototype.constructor;\n  //             const constructorString = constructor.toString();\n  //             const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n  //             console.log('is alive ' + beanName);\n  //         }\n  //     }, 5000);\n  // }\n  destroy() {\n    const { destroyFunctions } = this;\n    for (let i = 0; i < destroyFunctions.length; i++) {\n      destroyFunctions[i]();\n    }\n    destroyFunctions.length = 0;\n    this.destroyed = true;\n    this.dispatchLocalEvent({ type: \"destroyed\" });\n  }\n  // The typing of AgEventListener<any, any, any> is not ideal, but it's the best we can do at the moment to enable\n  // eventSvc to have the best typing at the expense of BeanStub local events\n  /** Add a local event listener against this BeanStub */\n  addEventListener(eventType, listener, async) {\n    if (!this.localEventService) {\n      this.localEventService = new LocalEventService();\n    }\n    this.localEventService.addEventListener(eventType, listener, async);\n  }\n  /** Remove a local event listener from this BeanStub */\n  removeEventListener(eventType, listener, async) {\n    this.localEventService?.removeEventListener(eventType, listener, async);\n  }\n  dispatchLocalEvent(event) {\n    this.localEventService?.dispatchEvent(event);\n  }\n  addManagedElementListeners(object, handlers) {\n    return this._setupListeners(object, handlers);\n  }\n  addManagedEventListeners(handlers) {\n    return this._setupListeners(this.eventSvc, handlers);\n  }\n  addManagedListeners(object, handlers) {\n    return this._setupListeners(object, handlers);\n  }\n  _setupListeners(object, handlers) {\n    const destroyFuncs = [];\n    for (const k of Object.keys(handlers)) {\n      const handler = handlers[k];\n      if (handler) {\n        destroyFuncs.push(this._setupListener(object, k, handler));\n      }\n    }\n    return destroyFuncs;\n  }\n  _setupListener(object, event, listener) {\n    if (this.destroyed) {\n      return () => null;\n    }\n    let destroyFunc;\n    if (isAgEventEmitter(object)) {\n      object.__addEventListener(event, listener);\n      destroyFunc = () => {\n        object.__removeEventListener(event, listener);\n        return null;\n      };\n    } else {\n      if (object instanceof HTMLElement) {\n        _addSafePassiveEventListener(this.beans.frameworkOverrides, object, event, listener);\n      } else {\n        object.addEventListener(event, listener);\n      }\n      destroyFunc = () => {\n        object.removeEventListener(event, listener);\n        return null;\n      };\n    }\n    this.destroyFunctions.push(destroyFunc);\n    return () => {\n      destroyFunc();\n      this.destroyFunctions = this.destroyFunctions.filter((fn) => fn !== destroyFunc);\n      return null;\n    };\n  }\n  /**\n   * Setup a managed property listener for the given GridOption property.\n   * However, stores the destroy function in the beanStub so that if this bean\n   * is a component the destroy function will be called when the component is destroyed\n   * as opposed to being cleaned up only when the GridOptionsService is destroyed.\n   */\n  setupGridOptionListener(event, listener) {\n    const { gos } = this;\n    gos.addPropertyEventListener(event, listener);\n    const destroyFunc = () => {\n      gos.removePropertyEventListener(event, listener);\n      return null;\n    };\n    this.destroyFunctions.push(destroyFunc);\n    return () => {\n      destroyFunc();\n      this.destroyFunctions = this.destroyFunctions.filter((fn) => fn !== destroyFunc);\n      return null;\n    };\n  }\n  /**\n   * Setup a managed property listener for the given GridOption property.\n   * @param event GridOption property to listen to changes for.\n   * @param listener Listener to run when property value changes\n   */\n  addManagedPropertyListener(event, listener) {\n    if (this.destroyed) {\n      return () => null;\n    }\n    return this.setupGridOptionListener(event, listener);\n  }\n  /**\n   * Setup managed property listeners for the given set of GridOption properties.\n   * The listener will be run if any of the property changes but will only run once if\n   * multiple of the properties change within the same framework lifecycle event.\n   * Works on the basis that GridOptionsService updates all properties *before* any property change events are fired.\n   * @param events Array of GridOption properties to listen for changes too.\n   * @param listener Shared listener to run if any of the properties change\n   */\n  addManagedPropertyListeners(events, listener) {\n    if (this.destroyed) {\n      return;\n    }\n    const eventsKey = events.join(\"-\") + this.propertyListenerId++;\n    const wrappedListener = (event) => {\n      if (event.changeSet) {\n        if (event.changeSet && event.changeSet.id === this.lastChangeSetIdLookup[eventsKey]) {\n          return;\n        }\n        this.lastChangeSetIdLookup[eventsKey] = event.changeSet.id;\n      }\n      const propertiesChangeEvent = {\n        type: \"gridPropertyChanged\",\n        changeSet: event.changeSet,\n        source: event.source\n      };\n      listener(propertiesChangeEvent);\n    };\n    events.forEach((event) => this.setupGridOptionListener(event, wrappedListener));\n  }\n  getLocaleTextFunc() {\n    return _getLocaleTextFunc(this.beans.localeSvc);\n  }\n  addDestroyFunc(func) {\n    if (this.isAlive()) {\n      this.destroyFunctions.push(func);\n    } else {\n      func();\n    }\n  }\n  /** doesn't throw an error if `bean` is undefined */\n  createOptionalManagedBean(bean, context) {\n    return bean ? this.createManagedBean(bean, context) : void 0;\n  }\n  createManagedBean(bean, context) {\n    const res = this.createBean(bean, context);\n    this.addDestroyFunc(this.destroyBean.bind(this, bean, context));\n    return res;\n  }\n  createBean(bean, context, afterPreCreateCallback) {\n    return (context || this.stubContext).createBean(bean, afterPreCreateCallback);\n  }\n  /**\n   * Destroys a bean and returns undefined to support destruction and clean up in a single line.\n   * this.dateComp = this.context.destroyBean(this.dateComp);\n   */\n  destroyBean(bean, context) {\n    return (context || this.stubContext).destroyBean(bean);\n  }\n  /**\n   * Destroys an array of beans and returns an empty array to support destruction and clean up in a single line.\n   * this.dateComps = this.context.destroyBeans(this.dateComps);\n   */\n  destroyBeans(beans, context) {\n    return (context || this.stubContext).destroyBeans(beans);\n  }\n};\nfunction isAgEventEmitter(object) {\n  return object.__addEventListener !== void 0;\n}\n\n// packages/ag-grid-community/src/utils/object.ts\nvar SKIP_JS_BUILTINS = /* @__PURE__ */ new Set([\"__proto__\", \"constructor\", \"prototype\"]);\nfunction _iterateObject(object, callback) {\n  if (object == null) {\n    return;\n  }\n  if (Array.isArray(object)) {\n    for (let i = 0; i < object.length; i++) {\n      callback(i.toString(), object[i]);\n    }\n    return;\n  }\n  for (const key of Object.keys(object)) {\n    callback(key, object[key]);\n  }\n}\nfunction _mergeDeep(dest, source, copyUndefined = true, makeCopyOfSimpleObjects = false) {\n  if (!_exists(source)) {\n    return;\n  }\n  _iterateObject(source, (key, sourceValue) => {\n    if (SKIP_JS_BUILTINS.has(key)) {\n      return;\n    }\n    let destValue = dest[key];\n    if (destValue === sourceValue) {\n      return;\n    }\n    if (makeCopyOfSimpleObjects) {\n      const objectIsDueToBeCopied = destValue == null && sourceValue != null;\n      if (objectIsDueToBeCopied) {\n        const doNotCopyAsSourceIsSimpleObject = typeof sourceValue === \"object\" && sourceValue.constructor === Object;\n        if (doNotCopyAsSourceIsSimpleObject) {\n          destValue = {};\n          dest[key] = destValue;\n        }\n      }\n    }\n    if (_isNonNullObject(sourceValue) && _isNonNullObject(destValue) && !Array.isArray(destValue)) {\n      _mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);\n    } else if (copyUndefined || sourceValue !== void 0) {\n      dest[key] = sourceValue;\n    }\n  });\n}\nfunction _getValueUsingField(data, field, fieldContainsDots) {\n  if (!field || !data) {\n    return;\n  }\n  if (!fieldContainsDots) {\n    return data[field];\n  }\n  const fields = field.split(\".\");\n  let currentObject = data;\n  for (let i = 0; i < fields.length; i++) {\n    if (currentObject == null) {\n      return void 0;\n    }\n    currentObject = currentObject[fields[i]];\n  }\n  return currentObject;\n}\nfunction _isNonNullObject(value) {\n  return typeof value === \"object\" && value !== null;\n}\n\n// packages/ag-grid-community/src/utils/string.ts\nvar reUnescapedHtml = /[&<>\"']/g;\nvar HTML_ESCAPES = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\"\n};\nfunction _toString(toEscape) {\n  return toEscape?.toString().toString() ?? null;\n}\nfunction _escapeString(toEscape) {\n  return _toString(toEscape)?.replace(reUnescapedHtml, (chr) => HTML_ESCAPES[chr]) ?? null;\n}\n\n// packages/ag-grid-community/src/entities/agColumn.ts\nvar COL_DEF_DEFAULTS = {\n  resizable: true,\n  sortable: true\n};\nvar instanceIdSequence = 0;\nfunction getNextColInstanceId() {\n  return instanceIdSequence++;\n}\nfunction isColumn(col) {\n  return col instanceof AgColumn;\n}\nvar AgColumn = class extends BeanStub {\n  constructor(colDef, userProvidedColDef, colId, primary) {\n    super();\n    this.colDef = colDef;\n    this.userProvidedColDef = userProvidedColDef;\n    this.colId = colId;\n    this.primary = primary;\n    this.isColumn = true;\n    // used by React (and possibly other frameworks) as key for rendering. also used to\n    // identify old vs new columns for destroying cols when no longer used.\n    this.instanceId = getNextColInstanceId();\n    // The measured height of this column's header when autoHeaderHeight is enabled\n    this.autoHeaderHeight = null;\n    this.moving = false;\n    this.menuVisible = false;\n    this.lastLeftPinned = false;\n    this.firstRightPinned = false;\n    this.filterActive = false;\n    this.colEventSvc = new LocalEventService();\n    this.tooltipEnabled = false;\n    this.rowGroupActive = false;\n    this.pivotActive = false;\n    this.aggregationActive = false;\n    this.flex = null;\n    this.colIdSanitised = _escapeString(colId);\n  }\n  destroy() {\n    super.destroy();\n    this.beans.rowSpanSvc?.deregister(this);\n  }\n  getInstanceId() {\n    return this.instanceId;\n  }\n  setState() {\n    const {\n      colDef,\n      beans: { sortSvc, pinnedCols, colFlex }\n    } = this;\n    sortSvc?.initCol(this);\n    const hide = colDef.hide;\n    if (hide !== void 0) {\n      this.visible = !hide;\n    } else {\n      this.visible = !colDef.initialHide;\n    }\n    pinnedCols?.initCol(this);\n    colFlex?.initCol(this);\n  }\n  // gets called when user provides an alternative colDef, eg\n  setColDef(colDef, userProvidedColDef, source) {\n    const colSpanChanged = colDef.spanRows !== this.colDef.spanRows;\n    this.colDef = colDef;\n    this.userProvidedColDef = userProvidedColDef;\n    this.initMinAndMaxWidths();\n    this.initDotNotation();\n    this.initTooltip();\n    if (colSpanChanged) {\n      this.beans.rowSpanSvc?.deregister(this);\n      this.initRowSpan();\n    }\n    this.dispatchColEvent(\"colDefChanged\", source);\n  }\n  getUserProvidedColDef() {\n    return this.userProvidedColDef;\n  }\n  getParent() {\n    return this.parent;\n  }\n  getOriginalParent() {\n    return this.originalParent;\n  }\n  // this is done after constructor as it uses gridOptionsService\n  postConstruct() {\n    this.setState();\n    this.initMinAndMaxWidths();\n    this.resetActualWidth(\"gridInitializing\");\n    this.initDotNotation();\n    this.initTooltip();\n    this.initRowSpan();\n  }\n  initDotNotation() {\n    const {\n      gos,\n      colDef: { field, tooltipField }\n    } = this;\n    const suppressDotNotation = gos.get(\"suppressFieldDotNotation\");\n    this.fieldContainsDots = _exists(field) && field.indexOf(\".\") >= 0 && !suppressDotNotation;\n    this.tooltipFieldContainsDots = _exists(tooltipField) && tooltipField.indexOf(\".\") >= 0 && !suppressDotNotation;\n  }\n  initMinAndMaxWidths() {\n    const colDef = this.colDef;\n    this.minWidth = colDef.minWidth ?? this.beans.environment.getDefaultColumnMinWidth();\n    this.maxWidth = colDef.maxWidth ?? Number.MAX_SAFE_INTEGER;\n  }\n  initTooltip() {\n    this.beans.tooltipSvc?.initCol(this);\n  }\n  initRowSpan() {\n    if (this.colDef.spanRows) {\n      this.beans.rowSpanSvc?.register(this);\n    }\n  }\n  resetActualWidth(source) {\n    const initialWidth = this.calculateColInitialWidth(this.colDef);\n    this.setActualWidth(initialWidth, source, true);\n  }\n  calculateColInitialWidth(colDef) {\n    let width;\n    const colDefWidth = colDef.width;\n    const colDefInitialWidth = colDef.initialWidth;\n    if (colDefWidth != null) {\n      width = colDefWidth;\n    } else if (colDefInitialWidth != null) {\n      width = colDefInitialWidth;\n    } else {\n      width = 200;\n    }\n    return Math.max(Math.min(width, this.maxWidth), this.minWidth);\n  }\n  isEmptyGroup() {\n    return false;\n  }\n  isRowGroupDisplayed(colId) {\n    return this.beans.showRowGroupCols?.isRowGroupDisplayed(this, colId) ?? false;\n  }\n  isPrimary() {\n    return this.primary;\n  }\n  isFilterAllowed() {\n    const filterDefined = !!this.colDef.filter;\n    return filterDefined;\n  }\n  isFieldContainsDots() {\n    return this.fieldContainsDots;\n  }\n  isTooltipEnabled() {\n    return this.tooltipEnabled;\n  }\n  isTooltipFieldContainsDots() {\n    return this.tooltipFieldContainsDots;\n  }\n  getHighlighted() {\n    return this.highlighted;\n  }\n  __addEventListener(eventType, listener) {\n    this.colEventSvc.addEventListener(eventType, listener);\n  }\n  __removeEventListener(eventType, listener) {\n    this.colEventSvc.removeEventListener(eventType, listener);\n  }\n  /**\n   * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods.\n   */\n  addEventListener(eventType, userListener) {\n    this.frameworkEventListenerService = this.beans.frameworkOverrides.createLocalEventListenerWrapper?.(\n      this.frameworkEventListenerService,\n      this.colEventSvc\n    );\n    const listener = this.frameworkEventListenerService?.wrap(eventType, userListener) ?? userListener;\n    this.colEventSvc.addEventListener(eventType, listener);\n  }\n  /**\n   * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods.\n   */\n  removeEventListener(eventType, userListener) {\n    const listener = this.frameworkEventListenerService?.unwrap(eventType, userListener) ?? userListener;\n    this.colEventSvc.removeEventListener(eventType, listener);\n  }\n  createColumnFunctionCallbackParams(rowNode) {\n    return _addGridCommonParams(this.gos, {\n      node: rowNode,\n      data: rowNode.data,\n      column: this,\n      colDef: this.colDef\n    });\n  }\n  isSuppressNavigable(rowNode) {\n    return this.beans.cellNavigation?.isSuppressNavigable(this, rowNode) ?? false;\n  }\n  isCellEditable(rowNode) {\n    return this.beans.editSvc?.isCellEditable(this, rowNode) ?? false;\n  }\n  isSuppressFillHandle() {\n    return !!this.colDef.suppressFillHandle;\n  }\n  isAutoHeight() {\n    return !!this.colDef.autoHeight;\n  }\n  isAutoHeaderHeight() {\n    return !!this.colDef.autoHeaderHeight;\n  }\n  isRowDrag(rowNode) {\n    return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n  }\n  isDndSource(rowNode) {\n    return this.isColumnFunc(rowNode, this.colDef.dndSource);\n  }\n  isCellCheckboxSelection(rowNode) {\n    return this.beans.selectionSvc?.isCellCheckboxSelection(this, rowNode) ?? false;\n  }\n  isSuppressPaste(rowNode) {\n    return this.isColumnFunc(rowNode, this.colDef?.suppressPaste ?? null);\n  }\n  isResizable() {\n    return !!this.getColDefValue(\"resizable\");\n  }\n  /** Get value from ColDef or default if it exists. */\n  getColDefValue(key) {\n    return this.colDef[key] ?? COL_DEF_DEFAULTS[key];\n  }\n  isColumnFunc(rowNode, value) {\n    if (typeof value === \"boolean\") {\n      return value;\n    }\n    if (typeof value === \"function\") {\n      const params = this.createColumnFunctionCallbackParams(rowNode);\n      const editableFunc = value;\n      return editableFunc(params);\n    }\n    return false;\n  }\n  createColumnEvent(type, source) {\n    return _addGridCommonParams(this.gos, {\n      type,\n      column: this,\n      columns: [this],\n      source\n    });\n  }\n  isMoving() {\n    return this.moving;\n  }\n  getSort() {\n    return this.sort;\n  }\n  isSortable() {\n    return !!this.getColDefValue(\"sortable\");\n  }\n  /** @deprecated v32 use col.getSort() === 'asc */\n  isSortAscending() {\n    return this.sort === \"asc\";\n  }\n  /** @deprecated v32 use col.getSort() === 'desc */\n  isSortDescending() {\n    return this.sort === \"desc\";\n  }\n  /** @deprecated v32 use col.getSort() === undefined */\n  isSortNone() {\n    return _missing(this.sort);\n  }\n  /** @deprecated v32 use col.getSort() !== undefined */\n  isSorting() {\n    return _exists(this.sort);\n  }\n  getSortIndex() {\n    return this.sortIndex;\n  }\n  isMenuVisible() {\n    return this.menuVisible;\n  }\n  getAggFunc() {\n    return this.aggFunc;\n  }\n  getLeft() {\n    return this.left;\n  }\n  getOldLeft() {\n    return this.oldLeft;\n  }\n  getRight() {\n    return this.left + this.actualWidth;\n  }\n  setLeft(left, source) {\n    this.oldLeft = this.left;\n    if (this.left !== left) {\n      this.left = left;\n      this.dispatchColEvent(\"leftChanged\", source);\n    }\n  }\n  isFilterActive() {\n    return this.filterActive;\n  }\n  /** @deprecated v33 Use `api.isColumnHovered(column)` instead. */\n  isHovered() {\n    _warn(261);\n    return !!this.beans.colHover?.isHovered(this);\n  }\n  setFirstRightPinned(firstRightPinned, source) {\n    if (this.firstRightPinned !== firstRightPinned) {\n      this.firstRightPinned = firstRightPinned;\n      this.dispatchColEvent(\"firstRightPinnedChanged\", source);\n    }\n  }\n  setLastLeftPinned(lastLeftPinned, source) {\n    if (this.lastLeftPinned !== lastLeftPinned) {\n      this.lastLeftPinned = lastLeftPinned;\n      this.dispatchColEvent(\"lastLeftPinnedChanged\", source);\n    }\n  }\n  isFirstRightPinned() {\n    return this.firstRightPinned;\n  }\n  isLastLeftPinned() {\n    return this.lastLeftPinned;\n  }\n  isPinned() {\n    return this.pinned === \"left\" || this.pinned === \"right\";\n  }\n  isPinnedLeft() {\n    return this.pinned === \"left\";\n  }\n  isPinnedRight() {\n    return this.pinned === \"right\";\n  }\n  getPinned() {\n    return this.pinned;\n  }\n  setVisible(visible, source) {\n    const newValue = visible === true;\n    if (this.visible !== newValue) {\n      this.visible = newValue;\n      this.dispatchColEvent(\"visibleChanged\", source);\n    }\n    this.dispatchStateUpdatedEvent(\"hide\");\n  }\n  isVisible() {\n    return this.visible;\n  }\n  isSpanHeaderHeight() {\n    const colDef = this.getColDef();\n    return !colDef.suppressSpanHeaderHeight;\n  }\n  getColumnGroupPaddingInfo() {\n    let parent = this.getParent();\n    if (!parent || !parent.isPadding()) {\n      return { numberOfParents: 0, isSpanningTotal: false };\n    }\n    const numberOfParents = parent.getPaddingLevel() + 1;\n    let isSpanningTotal = true;\n    while (parent) {\n      if (!parent.isPadding()) {\n        isSpanningTotal = false;\n        break;\n      }\n      parent = parent.getParent();\n    }\n    return { numberOfParents, isSpanningTotal };\n  }\n  getColDef() {\n    return this.colDef;\n  }\n  getDefinition() {\n    return this.colDef;\n  }\n  getColumnGroupShow() {\n    return this.colDef.columnGroupShow;\n  }\n  getColId() {\n    return this.colId;\n  }\n  getId() {\n    return this.colId;\n  }\n  getUniqueId() {\n    return this.colId;\n  }\n  getActualWidth() {\n    return this.actualWidth;\n  }\n  getAutoHeaderHeight() {\n    return this.autoHeaderHeight;\n  }\n  /** Returns true if the header height has changed */\n  setAutoHeaderHeight(height) {\n    const changed = height !== this.autoHeaderHeight;\n    this.autoHeaderHeight = height;\n    return changed;\n  }\n  createBaseColDefParams(rowNode) {\n    const params = _addGridCommonParams(this.gos, {\n      node: rowNode,\n      data: rowNode.data,\n      colDef: this.colDef,\n      column: this\n    });\n    return params;\n  }\n  getColSpan(rowNode) {\n    if (_missing(this.colDef.colSpan)) {\n      return 1;\n    }\n    const params = this.createBaseColDefParams(rowNode);\n    const colSpan = this.colDef.colSpan(params);\n    return Math.max(colSpan, 1);\n  }\n  getRowSpan(rowNode) {\n    if (_missing(this.colDef.rowSpan)) {\n      return 1;\n    }\n    const params = this.createBaseColDefParams(rowNode);\n    const rowSpan = this.colDef.rowSpan(params);\n    return Math.max(rowSpan, 1);\n  }\n  setActualWidth(actualWidth, source, silent = false) {\n    actualWidth = Math.max(actualWidth, this.minWidth);\n    actualWidth = Math.min(actualWidth, this.maxWidth);\n    if (this.actualWidth !== actualWidth) {\n      this.actualWidth = actualWidth;\n      if (this.flex != null && source !== \"flex\" && source !== \"gridInitializing\") {\n        this.flex = null;\n      }\n      if (!silent) {\n        this.fireColumnWidthChangedEvent(source);\n      }\n    }\n    this.dispatchStateUpdatedEvent(\"width\");\n  }\n  fireColumnWidthChangedEvent(source) {\n    this.dispatchColEvent(\"widthChanged\", source);\n  }\n  isGreaterThanMax(width) {\n    return width > this.maxWidth;\n  }\n  getMinWidth() {\n    return this.minWidth;\n  }\n  getMaxWidth() {\n    return this.maxWidth;\n  }\n  getFlex() {\n    return this.flex;\n  }\n  isRowGroupActive() {\n    return this.rowGroupActive;\n  }\n  isPivotActive() {\n    return this.pivotActive;\n  }\n  isAnyFunctionActive() {\n    return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n  }\n  isAnyFunctionAllowed() {\n    return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n  }\n  isValueActive() {\n    return this.aggregationActive;\n  }\n  isAllowPivot() {\n    return this.colDef.enablePivot === true;\n  }\n  isAllowValue() {\n    return this.colDef.enableValue === true;\n  }\n  isAllowRowGroup() {\n    return this.colDef.enableRowGroup === true;\n  }\n  dispatchColEvent(type, source, additionalEventAttributes) {\n    const colEvent = this.createColumnEvent(type, source);\n    if (additionalEventAttributes) {\n      _mergeDeep(colEvent, additionalEventAttributes);\n    }\n    this.colEventSvc.dispatchEvent(colEvent);\n  }\n  dispatchStateUpdatedEvent(key) {\n    this.colEventSvc.dispatchEvent({\n      type: \"columnStateUpdated\",\n      key\n    });\n  }\n};\n\n// packages/ag-grid-community/src/entities/agProvidedColumnGroup.ts\nfunction isProvidedColumnGroup(col) {\n  return col instanceof AgProvidedColumnGroup;\n}\nvar AgProvidedColumnGroup = class extends BeanStub {\n  constructor(colGroupDef, groupId, padding, level) {\n    super();\n    this.colGroupDef = colGroupDef;\n    this.groupId = groupId;\n    this.padding = padding;\n    this.level = level;\n    this.isColumn = false;\n    this.expandable = false;\n    // used by React (and possibly other frameworks) as key for rendering. also used to\n    // identify old vs new columns for destroying cols when no longer used.\n    this.instanceId = getNextColInstanceId();\n    this.expandableListenerRemoveCallback = null;\n    this.expanded = !!colGroupDef?.openByDefault;\n  }\n  destroy() {\n    if (this.expandableListenerRemoveCallback) {\n      this.reset(null, void 0);\n    }\n    super.destroy();\n  }\n  reset(colGroupDef, level) {\n    this.colGroupDef = colGroupDef;\n    this.level = level;\n    this.originalParent = null;\n    if (this.expandableListenerRemoveCallback) {\n      this.expandableListenerRemoveCallback();\n    }\n    this.children = void 0;\n    this.expandable = void 0;\n  }\n  getInstanceId() {\n    return this.instanceId;\n  }\n  getOriginalParent() {\n    return this.originalParent;\n  }\n  getLevel() {\n    return this.level;\n  }\n  isVisible() {\n    if (this.children) {\n      return this.children.some((child) => child.isVisible());\n    }\n    return false;\n  }\n  isPadding() {\n    return this.padding;\n  }\n  setExpanded(expanded) {\n    this.expanded = expanded === void 0 ? false : expanded;\n    this.dispatchLocalEvent({ type: \"expandedChanged\" });\n  }\n  isExpandable() {\n    return this.expandable;\n  }\n  isExpanded() {\n    return this.expanded;\n  }\n  getGroupId() {\n    return this.groupId;\n  }\n  getId() {\n    return this.getGroupId();\n  }\n  setChildren(children) {\n    this.children = children;\n  }\n  getChildren() {\n    return this.children;\n  }\n  getColGroupDef() {\n    return this.colGroupDef;\n  }\n  getLeafColumns() {\n    const result = [];\n    this.addLeafColumns(result);\n    return result;\n  }\n  forEachLeafColumn(callback) {\n    if (!this.children) {\n      return;\n    }\n    for (const child of this.children) {\n      if (isColumn(child)) {\n        callback(child);\n      } else if (isProvidedColumnGroup(child)) {\n        child.forEachLeafColumn(callback);\n      }\n    }\n  }\n  addLeafColumns(leafColumns) {\n    if (!this.children) {\n      return;\n    }\n    this.children.forEach((child) => {\n      if (isColumn(child)) {\n        leafColumns.push(child);\n      } else if (isProvidedColumnGroup(child)) {\n        child.addLeafColumns(leafColumns);\n      }\n    });\n  }\n  getColumnGroupShow() {\n    const colGroupDef = this.colGroupDef;\n    if (!colGroupDef) {\n      return;\n    }\n    return colGroupDef.columnGroupShow;\n  }\n  // need to check that this group has at least one col showing when both expanded and contracted.\n  // if not, then we don't allow expanding and contracting on this group\n  setupExpandable() {\n    this.setExpandable();\n    if (this.expandableListenerRemoveCallback) {\n      this.expandableListenerRemoveCallback();\n    }\n    const listener = this.onColumnVisibilityChanged.bind(this);\n    this.getLeafColumns().forEach((col) => col.__addEventListener(\"visibleChanged\", listener));\n    this.expandableListenerRemoveCallback = () => {\n      this.getLeafColumns().forEach((col) => col.__removeEventListener(\"visibleChanged\", listener));\n      this.expandableListenerRemoveCallback = null;\n    };\n  }\n  setExpandable() {\n    if (this.isPadding()) {\n      return;\n    }\n    let atLeastOneShowingWhenOpen = false;\n    let atLeastOneShowingWhenClosed = false;\n    let atLeastOneChangeable = false;\n    const children = this.findChildrenRemovingPadding();\n    for (let i = 0, j = children.length; i < j; i++) {\n      const abstractColumn = children[i];\n      if (!abstractColumn.isVisible()) {\n        continue;\n      }\n      const headerGroupShow = abstractColumn.getColumnGroupShow();\n      if (headerGroupShow === \"open\") {\n        atLeastOneShowingWhenOpen = true;\n        atLeastOneChangeable = true;\n      } else if (headerGroupShow === \"closed\") {\n        atLeastOneShowingWhenClosed = true;\n        atLeastOneChangeable = true;\n      } else {\n        atLeastOneShowingWhenOpen = true;\n        atLeastOneShowingWhenClosed = true;\n      }\n    }\n    const expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n    if (this.expandable !== expandable) {\n      this.expandable = expandable;\n      this.dispatchLocalEvent({ type: \"expandableChanged\" });\n    }\n  }\n  findChildrenRemovingPadding() {\n    const res = [];\n    const process = (items) => {\n      items.forEach((item) => {\n        const skipBecausePadding = isProvidedColumnGroup(item) && item.isPadding();\n        if (skipBecausePadding) {\n          process(item.children);\n        } else {\n          res.push(item);\n        }\n      });\n    };\n    process(this.children);\n    return res;\n  }\n  onColumnVisibilityChanged() {\n    this.setExpandable();\n  }\n};\n\n// packages/ag-grid-community/src/entities/defaultColumnTypes.ts\nvar DefaultColumnTypes = {\n  numericColumn: {\n    headerClass: \"ag-right-aligned-header\",\n    cellClass: \"ag-right-aligned-cell\"\n  },\n  rightAligned: {\n    headerClass: \"ag-right-aligned-header\",\n    cellClass: \"ag-right-aligned-cell\"\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnGroups/columnGroupUtils.ts\nfunction createMergedColGroupDef(beans, colGroupDef, groupId) {\n  const colGroupDefMerged = {};\n  const gos = beans.gos;\n  Object.assign(colGroupDefMerged, gos.get(\"defaultColGroupDef\"));\n  Object.assign(colGroupDefMerged, colGroupDef);\n  gos.validateColDef(colGroupDefMerged, groupId);\n  return colGroupDefMerged;\n}\n\n// packages/ag-grid-community/src/columns/columnKeyCreator.ts\nvar ColumnKeyCreator = class {\n  constructor() {\n    this.existingKeys = {};\n  }\n  addExistingKeys(keys) {\n    for (let i = 0; i < keys.length; i++) {\n      this.existingKeys[keys[i]] = true;\n    }\n  }\n  getUniqueKey(colId, colField) {\n    colId = _toStringOrNull(colId);\n    let count = 0;\n    while (true) {\n      let idToTry = colId ?? colField;\n      if (idToTry) {\n        if (count !== 0) {\n          idToTry += \"_\" + count;\n        }\n      } else {\n        idToTry = count;\n      }\n      if (!this.existingKeys[idToTry]) {\n        const usedId = String(idToTry);\n        if (colId && count > 0) {\n          _warn(273, { providedId: colId, usedId });\n        }\n        this.existingKeys[usedId] = true;\n        return usedId;\n      }\n      count++;\n    }\n  }\n};\n\n// packages/ag-grid-community/src/utils/array.ts\nvar _EmptyArray = Object.freeze([]);\nfunction _last(arr) {\n  if (!arr?.length) {\n    return;\n  }\n  return arr[arr.length - 1];\n}\nfunction _areEqual(a, b, comparator) {\n  if (a == null && b == null) {\n    return true;\n  }\n  return a != null && b != null && a.length === b.length && a.every((value, index) => comparator ? comparator(value, b[index]) : b[index] === value);\n}\nfunction _forAll(array, callback) {\n  if (!array) {\n    return;\n  }\n  for (const value of array) {\n    callback(value);\n  }\n}\nfunction _removeFromArray(array, object) {\n  const index = array.indexOf(object);\n  if (index >= 0) {\n    array.splice(index, 1);\n  }\n}\nfunction _moveInArray(array, objectsToMove, toIndex) {\n  for (let i = 0; i < objectsToMove.length; i++) {\n    _removeFromArray(array, objectsToMove[i]);\n  }\n  for (let i = objectsToMove.length - 1; i >= 0; i--) {\n    array.splice(toIndex, 0, objectsToMove[i]);\n  }\n}\nfunction _flatten(arrays) {\n  return [].concat.apply([], arrays);\n}\n\n// packages/ag-grid-community/src/columns/columnUtils.ts\nvar GROUP_AUTO_COLUMN_ID = \"ag-Grid-AutoColumn\";\nvar SELECTION_COLUMN_ID = \"ag-Grid-SelectionColumn\";\nvar ROW_NUMBERS_COLUMN_ID = \"ag-Grid-RowNumbersColumn\";\nfunction _getColumnsFromTree(rootColumns) {\n  const result = [];\n  const recursiveFindColumns = (childColumns) => {\n    for (let i = 0; i < childColumns.length; i++) {\n      const child = childColumns[i];\n      if (isColumn(child)) {\n        result.push(child);\n      } else if (isProvidedColumnGroup(child)) {\n        recursiveFindColumns(child.getChildren());\n      }\n    }\n  };\n  recursiveFindColumns(rootColumns);\n  return result;\n}\nfunction getWidthOfColsInList(columnList) {\n  return columnList.reduce((width, col) => width + col.getActualWidth(), 0);\n}\nfunction _destroyColumnTree(beans, oldTree, newTree) {\n  const oldObjectsById = {};\n  if (!oldTree) {\n    return;\n  }\n  depthFirstOriginalTreeSearch(null, oldTree, (child) => {\n    oldObjectsById[child.getInstanceId()] = child;\n  });\n  if (newTree) {\n    depthFirstOriginalTreeSearch(null, newTree, (child) => {\n      oldObjectsById[child.getInstanceId()] = null;\n    });\n  }\n  const colsToDestroy = Object.values(oldObjectsById).filter((item) => item != null);\n  beans.context.destroyBeans(colsToDestroy);\n}\nfunction isColumnGroupAutoCol(col) {\n  const colId = col.getId();\n  return colId.startsWith(GROUP_AUTO_COLUMN_ID);\n}\nfunction isColumnSelectionCol(col) {\n  const id = typeof col === \"string\" ? col : \"getColId\" in col ? col.getColId() : col.colId;\n  return id?.startsWith(SELECTION_COLUMN_ID) ?? false;\n}\nfunction isRowNumberCol(col) {\n  const id = typeof col === \"string\" ? col : \"getColId\" in col ? col.getColId() : col.colId;\n  return id?.startsWith(ROW_NUMBERS_COLUMN_ID) ?? false;\n}\nfunction convertColumnTypes(type) {\n  let typeKeys = [];\n  if (type instanceof Array) {\n    typeKeys = type;\n  } else if (typeof type === \"string\") {\n    typeKeys = type.split(\",\");\n  }\n  return typeKeys;\n}\nfunction _areColIdsEqual(colsA, colsB) {\n  return _areEqual(colsA, colsB, (a, b) => a.getColId() === b.getColId());\n}\nfunction _updateColsMap(cols) {\n  cols.map = {};\n  cols.list.forEach((col) => cols.map[col.getId()] = col);\n}\nfunction _convertColumnEventSourceType(source) {\n  return source === \"gridOptionsUpdated\" ? \"gridOptionsChanged\" : source;\n}\nfunction _columnsMatch(column, key) {\n  const columnMatches = column === key;\n  const colDefMatches = column.getColDef() === key;\n  const idMatches = column.getColId() == key;\n  return columnMatches || colDefMatches || idMatches;\n}\nvar getValueFactory = (stateItem, defaultState) => (key1, key2) => {\n  const obj = {\n    value1: void 0,\n    value2: void 0\n  };\n  let calculated = false;\n  if (stateItem) {\n    if (stateItem[key1] !== void 0) {\n      obj.value1 = stateItem[key1];\n      calculated = true;\n    }\n    if (_exists(key2) && stateItem[key2] !== void 0) {\n      obj.value2 = stateItem[key2];\n      calculated = true;\n    }\n  }\n  if (!calculated && defaultState) {\n    if (defaultState[key1] !== void 0) {\n      obj.value1 = defaultState[key1];\n    }\n    if (_exists(key2) && defaultState[key2] !== void 0) {\n      obj.value2 = defaultState[key2];\n    }\n  }\n  return obj;\n};\n\n// packages/ag-grid-community/src/columns/columnFactoryUtils.ts\nfunction _createColumnTreeWithIds(beans, defs = null, primaryColumns, existingTree, source) {\n  const { existingCols, existingGroups } = extractExistingTreeData(existingTree);\n  const colIdMap = new Map(existingCols.map((col) => [col.getId(), col]));\n  const colGroupIdMap = new Map(existingGroups.map((group) => [group.getId(), group]));\n  let maxDepth = 0;\n  const recursivelyProcessColDef = (def, level) => {\n    maxDepth = Math.max(maxDepth, level);\n    if (isColumnGroupDef(def)) {\n      if (!beans.colGroupSvc) {\n        return null;\n      }\n      const groupId = def.groupId;\n      const group = colGroupIdMap.get(groupId);\n      const colGroupDef = createMergedColGroupDef(beans, def, groupId);\n      const newGroup = new AgProvidedColumnGroup(colGroupDef, groupId, false, level);\n      beans.context.createBean(newGroup);\n      if (group) {\n        newGroup.setExpanded(group.isExpanded());\n      }\n      newGroup.setChildren(def.children.map((child) => recursivelyProcessColDef(child, level + 1)));\n      return newGroup;\n    }\n    const colId = def.colId;\n    let column = colIdMap.get(colId);\n    if (!column) {\n      const colDefMerged = _addColumnDefaultAndTypes(beans, def, colId);\n      column = new AgColumn(colDefMerged, def, colId, primaryColumns);\n      beans.context.createBean(column);\n    } else {\n      const colDefMerged = _addColumnDefaultAndTypes(beans, def, column.getColId());\n      column.setColDef(colDefMerged, def, source);\n      _updateColumnState(beans, column, colDefMerged, source);\n    }\n    beans.dataTypeSvc?.addColumnListeners(column);\n    return column;\n  };\n  const root = defs?.map((def) => recursivelyProcessColDef(def, 0)) ?? [];\n  let counter = 0;\n  const keyCreator = {\n    getUniqueKey: (_colId, _field) => String(++counter)\n  };\n  const columnTree = beans.colGroupSvc ? beans.colGroupSvc.balanceColumnTree(root, 0, maxDepth, keyCreator) : root;\n  const depthFirstCallback = (child, parent) => {\n    if (isProvidedColumnGroup(child)) {\n      child.setupExpandable();\n    }\n    child.originalParent = parent;\n  };\n  depthFirstOriginalTreeSearch(null, columnTree, depthFirstCallback);\n  return {\n    columnTree,\n    treeDepth: maxDepth\n  };\n}\nfunction _createColumnTree(beans, defs = null, primaryColumns, existingTree, source) {\n  const columnKeyCreator = new ColumnKeyCreator();\n  const { existingCols, existingGroups, existingColKeys } = extractExistingTreeData(existingTree);\n  columnKeyCreator.addExistingKeys(existingColKeys);\n  const unbalancedTree = _recursivelyCreateColumns(\n    beans,\n    defs,\n    0,\n    primaryColumns,\n    existingCols,\n    columnKeyCreator,\n    existingGroups,\n    source\n  );\n  const { colGroupSvc } = beans;\n  const treeDepth = colGroupSvc?.findMaxDepth(unbalancedTree, 0) ?? 0;\n  const columnTree = colGroupSvc ? colGroupSvc.balanceColumnTree(unbalancedTree, 0, treeDepth, columnKeyCreator) : unbalancedTree;\n  const depthFirstCallback = (child, parent) => {\n    if (isProvidedColumnGroup(child)) {\n      child.setupExpandable();\n    }\n    child.originalParent = parent;\n  };\n  depthFirstOriginalTreeSearch(null, columnTree, depthFirstCallback);\n  return {\n    columnTree,\n    treeDepth\n  };\n}\nfunction extractExistingTreeData(existingTree) {\n  const existingCols = [];\n  const existingGroups = [];\n  const existingColKeys = [];\n  if (existingTree) {\n    depthFirstOriginalTreeSearch(null, existingTree, (item) => {\n      if (isProvidedColumnGroup(item)) {\n        const group = item;\n        existingGroups.push(group);\n      } else {\n        const col = item;\n        existingColKeys.push(col.getId());\n        existingCols.push(col);\n      }\n    });\n  }\n  return { existingCols, existingGroups, existingColKeys };\n}\nfunction _recursivelyCreateColumns(beans, defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups, source) {\n  if (!defs)\n    return [];\n  const { colGroupSvc } = beans;\n  const result = new Array(defs.length);\n  for (let i = 0; i < result.length; i++) {\n    const def = defs[i];\n    if (colGroupSvc && isColumnGroupDef(def)) {\n      result[i] = colGroupSvc.createProvidedColumnGroup(\n        primaryColumns,\n        def,\n        level,\n        existingColsCopy,\n        columnKeyCreator,\n        existingGroups,\n        source\n      );\n    } else {\n      result[i] = createColumn(beans, primaryColumns, def, existingColsCopy, columnKeyCreator, source);\n    }\n  }\n  return result;\n}\nfunction createColumn(beans, primaryColumns, colDef, existingColsCopy, columnKeyCreator, source) {\n  const existingColAndIndex = findExistingColumn(colDef, existingColsCopy);\n  if (existingColAndIndex) {\n    existingColsCopy?.splice(existingColAndIndex.idx, 1);\n  }\n  let column = existingColAndIndex?.column;\n  if (!column) {\n    const colId = columnKeyCreator.getUniqueKey(colDef.colId, colDef.field);\n    const colDefMerged = _addColumnDefaultAndTypes(beans, colDef, colId);\n    column = new AgColumn(colDefMerged, colDef, colId, primaryColumns);\n    beans.context.createBean(column);\n  } else {\n    const colDefMerged = _addColumnDefaultAndTypes(beans, colDef, column.getColId());\n    column.setColDef(colDefMerged, colDef, source);\n    _updateColumnState(beans, column, colDefMerged, source);\n  }\n  beans.dataTypeSvc?.addColumnListeners(column);\n  return column;\n}\nfunction updateSomeColumnState(beans, column, hide, sort, sortIndex, pinned, flex, source) {\n  const { sortSvc, pinnedCols, colFlex } = beans;\n  if (hide !== void 0) {\n    column.setVisible(!hide, source);\n  }\n  if (sortSvc) {\n    sortSvc.updateColSort(column, sort, source);\n    if (sortIndex !== void 0) {\n      sortSvc.setColSortIndex(column, sortIndex);\n    }\n  }\n  if (pinned !== void 0) {\n    pinnedCols?.setColPinned(column, pinned);\n  }\n  if (flex !== void 0) {\n    colFlex?.setColFlex(column, flex);\n  }\n}\nfunction _updateColumnState(beans, column, colDef, source) {\n  updateSomeColumnState(\n    beans,\n    column,\n    colDef.hide,\n    colDef.sort,\n    colDef.sortIndex,\n    colDef.pinned,\n    colDef.flex,\n    source\n  );\n  const colFlex = column.getFlex();\n  if (colFlex != null && colFlex > 0) {\n    return;\n  }\n  if (colDef.width != null) {\n    column.setActualWidth(colDef.width, source);\n  } else {\n    const widthBeforeUpdate = column.getActualWidth();\n    column.setActualWidth(widthBeforeUpdate, source);\n  }\n}\nfunction findExistingColumn(newColDef, existingColsCopy) {\n  if (!existingColsCopy)\n    return void 0;\n  for (let i = 0; i < existingColsCopy.length; i++) {\n    const def = existingColsCopy[i].getUserProvidedColDef();\n    if (!def)\n      continue;\n    const newHasId = newColDef.colId != null;\n    if (newHasId) {\n      if (existingColsCopy[i].getId() === newColDef.colId) {\n        return { idx: i, column: existingColsCopy[i] };\n      }\n      continue;\n    }\n    const newHasField = newColDef.field != null;\n    if (newHasField) {\n      if (def.field === newColDef.field) {\n        return { idx: i, column: existingColsCopy[i] };\n      }\n      continue;\n    }\n    if (def === newColDef) {\n      return { idx: i, column: existingColsCopy[i] };\n    }\n  }\n  return void 0;\n}\nfunction _addColumnDefaultAndTypes(beans, colDef, colId, isAutoCol) {\n  const { gos, dataTypeSvc } = beans;\n  const res = {};\n  const defaultColDef = gos.get(\"defaultColDef\");\n  _mergeDeep(res, defaultColDef, false, true);\n  const columnType = updateColDefAndGetColumnType(beans, res, colDef, colId);\n  if (columnType) {\n    assignColumnTypes(beans, columnType, res);\n  }\n  _mergeDeep(res, colDef, false, true);\n  const autoGroupColDef = gos.get(\"autoGroupColumnDef\");\n  const isSortingCoupled = _isColumnsSortingCoupledToGroup(gos);\n  if (colDef.rowGroup && autoGroupColDef && isSortingCoupled) {\n    _mergeDeep(\n      res,\n      { sort: autoGroupColDef.sort, initialSort: autoGroupColDef.initialSort },\n      false,\n      true\n    );\n  }\n  dataTypeSvc?.validateColDef(res);\n  gos.validateColDef(res, colId, isAutoCol);\n  return res;\n}\nfunction updateColDefAndGetColumnType(beans, colDef, userColDef, colId) {\n  const dataTypeDefinitionColumnType = beans.dataTypeSvc?.updateColDefAndGetColumnType(colDef, userColDef, colId);\n  const columnTypes = userColDef.type ?? dataTypeDefinitionColumnType ?? colDef.type;\n  colDef.type = columnTypes;\n  return columnTypes ? convertColumnTypes(columnTypes) : void 0;\n}\nfunction assignColumnTypes(beans, typeKeys, colDefMerged) {\n  if (!typeKeys.length) {\n    return;\n  }\n  const allColumnTypes = Object.assign({}, DefaultColumnTypes);\n  const userTypes = beans.gos.get(\"columnTypes\") || {};\n  for (const key of Object.keys(userTypes)) {\n    const value = userTypes[key];\n    if (key in allColumnTypes) {\n      _warn(34, { key });\n    } else {\n      const colType = value;\n      if (colType.type) {\n        _warn(35);\n      }\n      allColumnTypes[key] = value;\n    }\n  }\n  typeKeys.forEach((t) => {\n    const typeColDef = allColumnTypes[t.trim()];\n    if (typeColDef) {\n      _mergeDeep(colDefMerged, typeColDef, false, true);\n    } else {\n      _warn(36, { t });\n    }\n  });\n}\nfunction isColumnGroupDef(abstractColDef) {\n  return abstractColDef.children !== void 0;\n}\nfunction depthFirstOriginalTreeSearch(parent, tree, callback) {\n  if (!tree) {\n    return;\n  }\n  for (let i = 0; i < tree.length; i++) {\n    const child = tree[i];\n    if (isProvidedColumnGroup(child)) {\n      depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n    }\n    callback(child, parent);\n  }\n}\n\n// packages/ag-grid-community/src/columnMove/columnMoveUtils.ts\nfunction placeLockedColumns(cols, gos) {\n  const left = [];\n  const normal = [];\n  const right = [];\n  cols.forEach((col) => {\n    const position = col.getColDef().lockPosition;\n    if (position === \"right\") {\n      right.push(col);\n    } else if (position === \"left\" || position === true) {\n      left.push(col);\n    } else {\n      normal.push(col);\n    }\n  });\n  const isRtl = gos.get(\"enableRtl\");\n  if (isRtl) {\n    return [...right, ...normal, ...left];\n  }\n  return [...left, ...normal, ...right];\n}\nfunction doesMovePassMarryChildren(allColumnsCopy, gridBalancedTree) {\n  let rulePassed = true;\n  depthFirstOriginalTreeSearch(null, gridBalancedTree, (child) => {\n    if (!isProvidedColumnGroup(child)) {\n      return;\n    }\n    const columnGroup = child;\n    const colGroupDef = columnGroup.getColGroupDef();\n    const marryChildren = colGroupDef && colGroupDef.marryChildren;\n    if (!marryChildren) {\n      return;\n    }\n    const newIndexes = [];\n    columnGroup.getLeafColumns().forEach((col) => {\n      const newColIndex = allColumnsCopy.indexOf(col);\n      newIndexes.push(newColIndex);\n    });\n    const maxIndex = Math.max.apply(Math, newIndexes);\n    const minIndex = Math.min.apply(Math, newIndexes);\n    const spread = maxIndex - minIndex;\n    const maxSpread = columnGroup.getLeafColumns().length - 1;\n    if (spread > maxSpread) {\n      rulePassed = false;\n    }\n  });\n  return rulePassed;\n}\n\n// packages/ag-grid-community/src/columns/columnEventUtils.ts\nfunction getCommonValue(cols, valueGetter) {\n  if (!cols || cols.length == 0) {\n    return void 0;\n  }\n  const firstValue = valueGetter(cols[0]);\n  for (let i = 1; i < cols.length; i++) {\n    if (firstValue !== valueGetter(cols[i])) {\n      return void 0;\n    }\n  }\n  return firstValue;\n}\nfunction dispatchColumnPinnedEvent(eventSvc, changedColumns, source) {\n  if (!changedColumns.length) {\n    return;\n  }\n  const column = changedColumns.length === 1 ? changedColumns[0] : null;\n  const pinned = getCommonValue(changedColumns, (col) => col.getPinned());\n  eventSvc.dispatchEvent({\n    type: \"columnPinned\",\n    // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'\n    pinned: pinned != null ? pinned : null,\n    columns: changedColumns,\n    column,\n    source\n  });\n}\nfunction dispatchColumnVisibleEvent(eventSvc, changedColumns, source) {\n  if (!changedColumns.length) {\n    return;\n  }\n  const column = changedColumns.length === 1 ? changedColumns[0] : null;\n  const visible = getCommonValue(changedColumns, (col) => col.isVisible());\n  eventSvc.dispatchEvent({\n    type: \"columnVisible\",\n    visible,\n    columns: changedColumns,\n    column,\n    source\n  });\n}\nfunction dispatchColumnChangedEvent(eventSvc, type, columns, source) {\n  eventSvc.dispatchEvent({\n    type,\n    columns,\n    column: columns && columns.length == 1 ? columns[0] : null,\n    source\n  });\n}\nfunction dispatchColumnResizedEvent(eventSvc, columns, finished, source, flexColumns = null) {\n  if (columns?.length) {\n    eventSvc.dispatchEvent({\n      type: \"columnResized\",\n      columns,\n      column: columns.length === 1 ? columns[0] : null,\n      flexColumns,\n      finished,\n      source\n    });\n  }\n}\n\n// packages/ag-grid-community/src/columns/columnStateUtils.ts\nfunction _applyColumnState(beans, params, source) {\n  const {\n    colModel,\n    rowGroupColsSvc,\n    pivotColsSvc,\n    autoColSvc,\n    selectionColSvc,\n    colAnimation,\n    visibleCols,\n    pivotResultCols,\n    environment,\n    valueColsSvc,\n    eventSvc,\n    gos\n  } = beans;\n  const providedCols = colModel.getColDefCols() ?? [];\n  const selectionCols = selectionColSvc?.getColumns();\n  if (!providedCols?.length && !selectionCols?.length) {\n    return false;\n  }\n  if (params?.state && !params.state.forEach) {\n    _warn(32);\n    return false;\n  }\n  const syncColumnWithStateItem = (column, stateItem, rowGroupIndexes, pivotIndexes, autoCol) => {\n    if (!column) {\n      return;\n    }\n    const getValue = getValueFactory(stateItem, params.defaultState);\n    const flex = getValue(\"flex\").value1;\n    updateSomeColumnState(\n      beans,\n      column,\n      getValue(\"hide\").value1,\n      getValue(\"sort\").value1,\n      getValue(\"sortIndex\").value1,\n      getValue(\"pinned\").value1,\n      flex,\n      source\n    );\n    if (flex == null) {\n      const width = getValue(\"width\").value1;\n      if (width != null) {\n        const minColWidth = column.getColDef().minWidth ?? environment.getDefaultColumnMinWidth();\n        if (minColWidth != null && width >= minColWidth) {\n          column.setActualWidth(width, source);\n        }\n      }\n    }\n    if (autoCol || !column.isPrimary()) {\n      return;\n    }\n    valueColsSvc?.syncColumnWithState(column, source, getValue);\n    rowGroupColsSvc?.syncColumnWithState(column, source, getValue, rowGroupIndexes);\n    pivotColsSvc?.syncColumnWithState(column, source, getValue, pivotIndexes);\n  };\n  const applyStates = (states, existingColumns, getById2) => {\n    const dispatchEventsFunc = _compareColumnStatesAndDispatchEvents(beans, source);\n    const columnsWithNoState = existingColumns.slice();\n    const rowGroupIndexes = {};\n    const pivotIndexes = {};\n    const autoColStates = [];\n    const selectionColStates = [];\n    const unmatchedAndAutoStates2 = [];\n    let unmatchedCount2 = 0;\n    const previousRowGroupCols = rowGroupColsSvc?.columns.slice() ?? [];\n    const previousPivotCols = pivotColsSvc?.columns.slice() ?? [];\n    states.forEach((state) => {\n      const colId = state.colId;\n      const isAutoGroupColumn = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n      if (isAutoGroupColumn) {\n        autoColStates.push(state);\n        unmatchedAndAutoStates2.push(state);\n        return;\n      }\n      if (isColumnSelectionCol(colId)) {\n        selectionColStates.push(state);\n        unmatchedAndAutoStates2.push(state);\n        return;\n      }\n      const column = getById2(colId);\n      if (!column) {\n        unmatchedAndAutoStates2.push(state);\n        unmatchedCount2 += 1;\n      } else {\n        syncColumnWithStateItem(column, state, rowGroupIndexes, pivotIndexes, false);\n        _removeFromArray(columnsWithNoState, column);\n      }\n    });\n    const applyDefaultsFunc = (col) => syncColumnWithStateItem(col, null, rowGroupIndexes, pivotIndexes, false);\n    columnsWithNoState.forEach(applyDefaultsFunc);\n    rowGroupColsSvc?.sortColumns(comparatorByIndex.bind(rowGroupColsSvc, rowGroupIndexes, previousRowGroupCols));\n    pivotColsSvc?.sortColumns(comparatorByIndex.bind(pivotColsSvc, pivotIndexes, previousPivotCols));\n    colModel.refreshCols(false);\n    const syncColStates = (getCol, colStates, columns = []) => {\n      colStates.forEach((stateItem) => {\n        const col = getCol(stateItem.colId);\n        _removeFromArray(columns, col);\n        syncColumnWithStateItem(col, stateItem, null, null, true);\n      });\n      columns.forEach(applyDefaultsFunc);\n    };\n    syncColStates(\n      (colId) => autoColSvc?.getColumn(colId) ?? null,\n      autoColStates,\n      autoColSvc?.getColumns()?.slice()\n    );\n    syncColStates(\n      (colId) => selectionColSvc?.getColumn(colId) ?? null,\n      selectionColStates,\n      selectionColSvc?.getColumns()?.slice()\n    );\n    orderLiveColsLikeState(params, colModel, gos);\n    visibleCols.refresh(source);\n    eventSvc.dispatchEvent({\n      type: \"columnEverythingChanged\",\n      source\n    });\n    dispatchEventsFunc();\n    return { unmatchedAndAutoStates: unmatchedAndAutoStates2, unmatchedCount: unmatchedCount2 };\n  };\n  colAnimation?.start();\n  let { unmatchedAndAutoStates, unmatchedCount } = applyStates(\n    params.state || [],\n    providedCols,\n    (id) => colModel.getColDefCol(id)\n  );\n  if (unmatchedAndAutoStates.length > 0 || _exists(params.defaultState)) {\n    const pivotResultColsList = pivotResultCols?.getPivotResultCols()?.list ?? [];\n    unmatchedCount = applyStates(\n      unmatchedAndAutoStates,\n      pivotResultColsList,\n      (id) => pivotResultCols?.getPivotResultCol(id) ?? null\n    ).unmatchedCount;\n  }\n  colAnimation?.finish();\n  return unmatchedCount === 0;\n}\nfunction _resetColumnState(beans, source) {\n  const { colModel, autoColSvc, selectionColSvc } = beans;\n  const primaryCols = colModel.getColDefCols();\n  if (!primaryCols?.length) {\n    return;\n  }\n  const primaryColumnTree = colModel.getColDefColTree();\n  const primaryColumns = _getColumnsFromTree(primaryColumnTree);\n  const columnStates = [];\n  let letRowGroupIndex = 1e3;\n  let letPivotIndex = 1e3;\n  const addColState = (col) => {\n    const stateItem = getColumnStateFromColDef(col);\n    if (_missing(stateItem.rowGroupIndex) && stateItem.rowGroup) {\n      stateItem.rowGroupIndex = letRowGroupIndex++;\n    }\n    if (_missing(stateItem.pivotIndex) && stateItem.pivot) {\n      stateItem.pivotIndex = letPivotIndex++;\n    }\n    columnStates.push(stateItem);\n  };\n  autoColSvc?.getColumns()?.forEach(addColState);\n  selectionColSvc?.getColumns()?.forEach(addColState);\n  primaryColumns?.forEach(addColState);\n  _applyColumnState(beans, { state: columnStates }, source);\n  const autoCols = autoColSvc?.getColumns() ?? [];\n  const selectionCols = selectionColSvc?.getColumns() ?? [];\n  const orderedCols = [...selectionCols, ...autoCols, ...primaryCols];\n  const orderedColState = orderedCols.map((col) => ({ colId: col.colId }));\n  _applyColumnState(beans, { state: orderedColState, applyOrder: true }, source);\n}\nfunction _compareColumnStatesAndDispatchEvents(beans, source) {\n  const { rowGroupColsSvc, pivotColsSvc, valueColsSvc, colModel, sortSvc, eventSvc } = beans;\n  const startState = {\n    rowGroupColumns: rowGroupColsSvc?.columns.slice() ?? [],\n    pivotColumns: pivotColsSvc?.columns.slice() ?? [],\n    valueColumns: valueColsSvc?.columns.slice() ?? []\n  };\n  const columnStateBefore = _getColumnState(beans);\n  const columnStateBeforeMap = {};\n  columnStateBefore.forEach((col) => {\n    columnStateBeforeMap[col.colId] = col;\n  });\n  return () => {\n    const dispatchWhenListsDifferent = (eventType, colsBefore, colsAfter, idMapper) => {\n      const beforeList = colsBefore.map(idMapper);\n      const afterList = colsAfter.map(idMapper);\n      const unchanged = _areEqual(beforeList, afterList);\n      if (unchanged) {\n        return;\n      }\n      const changes = new Set(colsBefore);\n      colsAfter.forEach((id) => {\n        if (!changes.delete(id)) {\n          changes.add(id);\n        }\n      });\n      const changesArr = [...changes];\n      eventSvc.dispatchEvent({\n        type: eventType,\n        columns: changesArr,\n        column: changesArr.length === 1 ? changesArr[0] : null,\n        source\n      });\n    };\n    const getChangedColumns = (changedPredicate) => {\n      const changedColumns2 = [];\n      colModel.forAllCols((column) => {\n        const colStateBefore = columnStateBeforeMap[column.getColId()];\n        if (colStateBefore && changedPredicate(colStateBefore, column)) {\n          changedColumns2.push(column);\n        }\n      });\n      return changedColumns2;\n    };\n    const columnIdMapper = (c) => c.getColId();\n    dispatchWhenListsDifferent(\n      \"columnRowGroupChanged\",\n      startState.rowGroupColumns,\n      rowGroupColsSvc?.columns ?? [],\n      columnIdMapper\n    );\n    dispatchWhenListsDifferent(\n      \"columnPivotChanged\",\n      startState.pivotColumns,\n      pivotColsSvc?.columns ?? [],\n      columnIdMapper\n    );\n    const valueChangePredicate = (cs, c) => {\n      const oldActive = cs.aggFunc != null;\n      const activeChanged = oldActive != c.isValueActive();\n      const aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();\n      return activeChanged || aggFuncChanged;\n    };\n    const changedValues = getChangedColumns(valueChangePredicate);\n    if (changedValues.length > 0) {\n      dispatchColumnChangedEvent(eventSvc, \"columnValueChanged\", changedValues, source);\n    }\n    const resizeChangePredicate = (cs, c) => cs.width != c.getActualWidth();\n    dispatchColumnResizedEvent(eventSvc, getChangedColumns(resizeChangePredicate), true, source);\n    const pinnedChangePredicate = (cs, c) => cs.pinned != c.getPinned();\n    dispatchColumnPinnedEvent(eventSvc, getChangedColumns(pinnedChangePredicate), source);\n    const visibilityChangePredicate = (cs, c) => cs.hide == c.isVisible();\n    dispatchColumnVisibleEvent(eventSvc, getChangedColumns(visibilityChangePredicate), source);\n    const sortChangePredicate = (cs, c) => cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex();\n    const changedColumns = getChangedColumns(sortChangePredicate);\n    if (changedColumns.length > 0) {\n      sortSvc?.dispatchSortChangedEvents(source, changedColumns);\n    }\n    const colStateAfter = _getColumnState(beans);\n    normaliseColumnMovedEventForColumnState(columnStateBefore, colStateAfter, source, colModel, eventSvc);\n  };\n}\nfunction _getColumnState(beans) {\n  const { colModel, rowGroupColsSvc, pivotColsSvc } = beans;\n  const primaryCols = colModel.getColDefCols();\n  if (_missing(primaryCols) || !colModel.isAlive()) {\n    return [];\n  }\n  const rowGroupColumns = rowGroupColsSvc?.columns;\n  const pivotColumns = pivotColsSvc?.columns;\n  const res = [];\n  const createStateItemFromColumn = (column) => {\n    const rowGroupIndex = column.isRowGroupActive() && rowGroupColumns ? rowGroupColumns.indexOf(column) : null;\n    const pivotIndex = column.isPivotActive() && pivotColumns ? pivotColumns.indexOf(column) : null;\n    const aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n    const sort = column.getSort() != null ? column.getSort() : null;\n    const sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;\n    res.push({\n      colId: column.getColId(),\n      width: column.getActualWidth(),\n      hide: !column.isVisible(),\n      pinned: column.getPinned(),\n      sort,\n      sortIndex,\n      aggFunc,\n      rowGroup: column.isRowGroupActive(),\n      rowGroupIndex,\n      pivot: column.isPivotActive(),\n      pivotIndex,\n      flex: column.getFlex() ?? null\n    });\n  };\n  colModel.forAllCols((col) => createStateItemFromColumn(col));\n  const colIdToGridIndexMap = new Map(\n    colModel.getCols().map((col, index) => [col.getColId(), index])\n  );\n  res.sort((itemA, itemB) => {\n    const posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;\n    const posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;\n    return posA - posB;\n  });\n  return res;\n}\nfunction getColumnStateFromColDef(column) {\n  const getValueOrNull = (a, b) => a != null ? a : b != null ? b : null;\n  const colDef = column.getColDef();\n  const sort = getValueOrNull(colDef.sort, colDef.initialSort);\n  const sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);\n  const hide = getValueOrNull(colDef.hide, colDef.initialHide);\n  const pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);\n  const width = getValueOrNull(colDef.width, colDef.initialWidth);\n  const flex = getValueOrNull(colDef.flex, colDef.initialFlex);\n  let rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);\n  let rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);\n  if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {\n    rowGroupIndex = null;\n    rowGroup = null;\n  }\n  let pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);\n  let pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);\n  if (pivotIndex == null && (pivot == null || pivot == false)) {\n    pivotIndex = null;\n    pivot = null;\n  }\n  const aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);\n  return {\n    colId: column.getColId(),\n    sort,\n    sortIndex,\n    hide,\n    pinned,\n    width,\n    flex,\n    rowGroup,\n    rowGroupIndex,\n    pivot,\n    pivotIndex,\n    aggFunc\n  };\n}\nfunction orderLiveColsLikeState(params, colModel, gos) {\n  if (!params.applyOrder || !params.state) {\n    return;\n  }\n  const colIds = [];\n  params.state.forEach((item) => {\n    if (item.colId != null) {\n      colIds.push(item.colId);\n    }\n  });\n  sortColsLikeKeys(colModel.cols, colIds, colModel, gos);\n}\nfunction sortColsLikeKeys(cols, colIds, colModel, gos) {\n  if (cols == null) {\n    return;\n  }\n  let newOrder = [];\n  const processedColIds = {};\n  colIds.forEach((colId) => {\n    if (processedColIds[colId]) {\n      return;\n    }\n    const col = cols.map[colId];\n    if (col) {\n      newOrder.push(col);\n      processedColIds[colId] = true;\n    }\n  });\n  let autoGroupInsertIndex = 0;\n  cols.list.forEach((col) => {\n    const colId = col.getColId();\n    const alreadyProcessed = processedColIds[colId] != null;\n    if (alreadyProcessed) {\n      return;\n    }\n    const isAutoGroupCol = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n    if (isAutoGroupCol) {\n      newOrder.splice(autoGroupInsertIndex++, 0, col);\n    } else {\n      newOrder.push(col);\n    }\n  });\n  newOrder = placeLockedColumns(newOrder, gos);\n  if (!doesMovePassMarryChildren(newOrder, colModel.getColTree())) {\n    _warn(39);\n    return;\n  }\n  cols.list = newOrder;\n}\nfunction normaliseColumnMovedEventForColumnState(colStateBefore, colStateAfter, source, colModel, eventSvc) {\n  const colStateAfterMapped = {};\n  colStateAfter.forEach((s) => colStateAfterMapped[s.colId] = s);\n  const colsIntersectIds = {};\n  colStateBefore.forEach((s) => {\n    if (colStateAfterMapped[s.colId]) {\n      colsIntersectIds[s.colId] = true;\n    }\n  });\n  const beforeFiltered = colStateBefore.filter((c) => colsIntersectIds[c.colId]);\n  const afterFiltered = colStateAfter.filter((c) => colsIntersectIds[c.colId]);\n  const movedColumns = [];\n  afterFiltered.forEach((csAfter, index) => {\n    const csBefore = beforeFiltered && beforeFiltered[index];\n    if (csBefore && csBefore.colId !== csAfter.colId) {\n      const gridCol = colModel.getCol(csBefore.colId);\n      if (gridCol) {\n        movedColumns.push(gridCol);\n      }\n    }\n  });\n  if (!movedColumns.length) {\n    return;\n  }\n  eventSvc.dispatchEvent({\n    type: \"columnMoved\",\n    columns: movedColumns,\n    column: movedColumns.length === 1 ? movedColumns[0] : null,\n    finished: true,\n    source\n  });\n}\nvar comparatorByIndex = (indexes, oldList, colA, colB) => {\n  const indexA = indexes[colA.getId()];\n  const indexB = indexes[colB.getId()];\n  const aHasIndex = indexA != null;\n  const bHasIndex = indexB != null;\n  if (aHasIndex && bHasIndex) {\n    return indexA - indexB;\n  }\n  if (aHasIndex) {\n    return -1;\n  }\n  if (bHasIndex) {\n    return 1;\n  }\n  const oldIndexA = oldList.indexOf(colA);\n  const oldIndexB = oldList.indexOf(colB);\n  const aHasOldIndex = oldIndexA >= 0;\n  const bHasOldIndex = oldIndexB >= 0;\n  if (aHasOldIndex && bHasOldIndex) {\n    return oldIndexA - oldIndexB;\n  }\n  if (aHasOldIndex) {\n    return -1;\n  }\n  return 1;\n};\n\n// packages/ag-grid-community/src/columns/columnModel.ts\nvar ColumnModel = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colModel\";\n    // if pivotMode is on, however pivot results are NOT shown if no pivot columns are set\n    this.pivotMode = false;\n    this.ready = false;\n    this.changeEventsDispatching = false;\n  }\n  postConstruct() {\n    this.pivotMode = this.gos.get(\"pivotMode\");\n    this.addManagedPropertyListeners(\n      [\"groupDisplayType\", \"treeData\", \"treeDataDisplayType\", \"groupHideOpenParents\"],\n      (event) => this.refreshAll(_convertColumnEventSourceType(event.source))\n    );\n    this.addManagedPropertyListeners(\n      [\"defaultColDef\", \"defaultColGroupDef\", \"columnTypes\", \"suppressFieldDotNotation\"],\n      this.recreateColumnDefs.bind(this)\n    );\n    this.addManagedPropertyListener(\n      \"pivotMode\",\n      (event) => this.setPivotMode(this.gos.get(\"pivotMode\"), _convertColumnEventSourceType(event.source))\n    );\n  }\n  // called from SyncService, when grid has finished initialising\n  createColsFromColDefs(source) {\n    const { beans } = this;\n    const {\n      valueCache,\n      colAutosize,\n      rowGroupColsSvc,\n      pivotColsSvc,\n      valueColsSvc,\n      visibleCols,\n      colViewport,\n      eventSvc\n    } = beans;\n    const dispatchEventsFunc = this.colDefs ? _compareColumnStatesAndDispatchEvents(beans, source) : void 0;\n    valueCache?.expire();\n    const oldCols = this.colDefCols?.list;\n    const oldTree = this.colDefCols?.tree;\n    const newTree = _createColumnTree(beans, this.colDefs, true, oldTree, source);\n    _destroyColumnTree(beans, this.colDefCols?.tree, newTree.columnTree);\n    const tree = newTree.columnTree;\n    const treeDepth = newTree.treeDepth;\n    const list = _getColumnsFromTree(tree);\n    const map = {};\n    list.forEach((col) => map[col.getId()] = col);\n    this.colDefCols = { tree, treeDepth, list, map };\n    rowGroupColsSvc?.extractCols(source, oldCols);\n    pivotColsSvc?.extractCols(source, oldCols);\n    valueColsSvc?.extractCols(source, oldCols);\n    this.ready = true;\n    this.refreshCols(true);\n    visibleCols.refresh(source);\n    colViewport.checkViewportColumns();\n    eventSvc.dispatchEvent({\n      type: \"columnEverythingChanged\",\n      source\n    });\n    if (dispatchEventsFunc) {\n      this.changeEventsDispatching = true;\n      dispatchEventsFunc();\n      this.changeEventsDispatching = false;\n    }\n    eventSvc.dispatchEvent({\n      type: \"newColumnsLoaded\",\n      source\n    });\n    if (source === \"gridInitializing\") {\n      colAutosize?.applyAutosizeStrategy();\n    }\n  }\n  // called from: buildAutoGroupColumns (events 'groupDisplayType', 'treeData', 'treeDataDisplayType', 'groupHideOpenParents')\n  // createColsFromColDefs (recreateColumnDefs, setColumnsDefs),\n  // setPivotMode, applyColumnState,\n  // functionColsService.setPrimaryColList, functionColsService.updatePrimaryColList,\n  // pivotResultCols.setPivotResultCols\n  refreshCols(newColDefs) {\n    if (!this.colDefCols) {\n      return;\n    }\n    const prevColTree = this.cols?.tree;\n    this.saveColOrder();\n    const {\n      autoColSvc,\n      selectionColSvc,\n      rowNumbersSvc,\n      quickFilter,\n      pivotResultCols,\n      showRowGroupCols,\n      rowAutoHeight,\n      visibleCols,\n      colViewport,\n      eventSvc\n    } = this.beans;\n    const cols = this.selectCols(pivotResultCols, this.colDefCols);\n    this.createColumnsForService([autoColSvc, selectionColSvc, rowNumbersSvc], cols);\n    const shouldSortNewColDefs = _shouldMaintainColumnOrder(this.gos, this.showingPivotResult);\n    if (!newColDefs || shouldSortNewColDefs) {\n      this.restoreColOrder(cols);\n    }\n    this.positionLockedCols(cols);\n    showRowGroupCols?.refresh();\n    quickFilter?.refreshCols();\n    this.setColSpanActive();\n    rowAutoHeight?.setAutoHeightActive(cols);\n    visibleCols.clear();\n    colViewport.clear();\n    const dispatchChangedEvent = !_areEqual(prevColTree, this.cols.tree);\n    if (dispatchChangedEvent) {\n      eventSvc.dispatchEvent({\n        type: \"gridColumnsChanged\"\n      });\n    }\n  }\n  createColumnsForService(services, cols) {\n    for (const service of services) {\n      if (!service) {\n        continue;\n      }\n      service.createColumns(cols, (updateOrder) => {\n        this.lastOrder = updateOrder(this.lastOrder);\n        this.lastPivotOrder = updateOrder(this.lastPivotOrder);\n      });\n      service.addColumns(cols);\n    }\n  }\n  selectCols(pivotResultColsSvc, colDefCols) {\n    const pivotResultCols = pivotResultColsSvc?.getPivotResultCols() ?? null;\n    this.showingPivotResult = pivotResultCols != null;\n    const { map, list, tree, treeDepth } = pivotResultCols ?? colDefCols;\n    this.cols = {\n      list: list.slice(),\n      map: { ...map },\n      tree: tree.slice(),\n      treeDepth\n    };\n    if (pivotResultCols) {\n      const hasSameColumns = pivotResultCols.list.some((col) => this.cols?.map[col.getColId()] !== void 0);\n      if (!hasSameColumns) {\n        this.lastPivotOrder = null;\n      }\n    }\n    return this.cols;\n  }\n  getColsToShow() {\n    if (!this.cols) {\n      return [];\n    }\n    const showAutoGroupAndValuesOnly = this.isPivotMode() && !this.showingPivotResult;\n    const valueColumns = this.beans.valueColsSvc?.columns;\n    const res = this.cols.list.filter((col) => {\n      const isAutoGroupCol = isColumnGroupAutoCol(col);\n      if (showAutoGroupAndValuesOnly) {\n        const isValueCol = valueColumns?.includes(col);\n        return isAutoGroupCol || isValueCol;\n      } else {\n        return isAutoGroupCol || col.isVisible();\n      }\n    });\n    return res;\n  }\n  // on events 'groupDisplayType', 'treeData', 'treeDataDisplayType', 'groupHideOpenParents'\n  refreshAll(source) {\n    if (!this.ready) {\n      return;\n    }\n    this.refreshCols(false);\n    this.beans.visibleCols.refresh(source);\n  }\n  setColsVisible(keys, visible = false, source) {\n    _applyColumnState(\n      this.beans,\n      {\n        state: keys.map((key) => ({\n          colId: typeof key === \"string\" ? key : key.getColId(),\n          hide: !visible\n        }))\n      },\n      source\n    );\n  }\n  /**\n   * Restores provided columns order to the previous order in this.lastPivotOrder / this.lastOrder\n   * If columns are not in the last order:\n   *  - Check column groups, and apply column after the last column in the lowest shared group\n   *  - If no sibling is found, apply the column at the end of the cols\n   */\n  restoreColOrder(cols) {\n    const lastOrder = this.showingPivotResult ? this.lastPivotOrder : this.lastOrder;\n    if (!lastOrder) {\n      return;\n    }\n    const preservedOrder = lastOrder.filter((col) => cols.map[col.getId()] != null);\n    if (preservedOrder.length === 0) {\n      return;\n    }\n    if (preservedOrder.length === cols.list.length) {\n      cols.list = preservedOrder;\n      return;\n    }\n    const hasSiblings = (col) => {\n      const ancestor = col.getOriginalParent();\n      if (!ancestor) {\n        return false;\n      }\n      const children = ancestor.getChildren();\n      if (children.length > 1) {\n        return true;\n      }\n      return hasSiblings(ancestor);\n    };\n    if (!preservedOrder.some((col) => hasSiblings(col))) {\n      const preservedOrderSet = new Set(preservedOrder);\n      for (const col of cols.list) {\n        if (!preservedOrderSet.has(col)) {\n          preservedOrder.push(col);\n        }\n      }\n      cols.list = preservedOrder;\n      return;\n    }\n    const colPositionMap = /* @__PURE__ */ new Map();\n    for (let i = 0; i < preservedOrder.length; i++) {\n      const col = preservedOrder[i];\n      colPositionMap.set(col, i);\n    }\n    const additionalCols = cols.list.filter((col) => !colPositionMap.has(col));\n    if (additionalCols.length === 0) {\n      cols.list = preservedOrder;\n      return;\n    }\n    const getPreviousSibling = (col, group) => {\n      const parent = group ? group.getOriginalParent() : col.getOriginalParent();\n      if (!parent) {\n        return null;\n      }\n      let highestIdx = null;\n      let highestSibling = null;\n      for (const child of parent.getChildren()) {\n        if (child === group || child === col) {\n          continue;\n        }\n        if (child instanceof AgColumn) {\n          const colIdx = colPositionMap.get(child);\n          if (colIdx == null) {\n            continue;\n          }\n          if (highestIdx == null || highestIdx < colIdx) {\n            highestIdx = colIdx;\n            highestSibling = child;\n          }\n          continue;\n        }\n        child.forEachLeafColumn((leafCol) => {\n          const colIdx = colPositionMap.get(leafCol);\n          if (colIdx == null) {\n            return;\n          }\n          if (highestIdx == null || highestIdx < colIdx) {\n            highestIdx = colIdx;\n            highestSibling = leafCol;\n          }\n        });\n      }\n      if (highestSibling == null) {\n        return getPreviousSibling(col, parent);\n      }\n      return highestSibling;\n    };\n    const noSiblingsAvailable = [];\n    const previousSiblingPosMap = /* @__PURE__ */ new Map();\n    for (const col of additionalCols) {\n      const prevSiblingIdx = getPreviousSibling(col, null);\n      if (prevSiblingIdx == null) {\n        noSiblingsAvailable.push(col);\n        continue;\n      }\n      const prev = previousSiblingPosMap.get(prevSiblingIdx);\n      if (prev === void 0) {\n        previousSiblingPosMap.set(prevSiblingIdx, col);\n      } else if (Array.isArray(prev)) {\n        prev.push(col);\n      } else {\n        previousSiblingPosMap.set(prevSiblingIdx, [prev, col]);\n      }\n    }\n    const result = new Array(cols.list.length);\n    let resultPointer = result.length - 1;\n    for (let i = noSiblingsAvailable.length - 1; i >= 0; i--) {\n      result[resultPointer--] = noSiblingsAvailable[i];\n    }\n    for (let i = preservedOrder.length - 1; i >= 0; i--) {\n      const nextCol = preservedOrder[i];\n      const extraCols = previousSiblingPosMap.get(nextCol);\n      if (extraCols) {\n        if (Array.isArray(extraCols)) {\n          for (let x = extraCols.length - 1; x >= 0; x--) {\n            const col = extraCols[x];\n            result[resultPointer--] = col;\n          }\n        } else {\n          result[resultPointer--] = extraCols;\n        }\n      }\n      result[resultPointer--] = nextCol;\n    }\n    cols.list = result;\n  }\n  positionLockedCols(cols) {\n    cols.list = placeLockedColumns(cols.list, this.gos);\n  }\n  saveColOrder() {\n    if (this.showingPivotResult) {\n      this.lastPivotOrder = this.cols?.list ?? null;\n    } else {\n      this.lastOrder = this.cols?.list ?? null;\n    }\n  }\n  getColumnDefs() {\n    return this.colDefCols ? this.beans.colDefFactory?.getColumnDefs(\n      this.colDefCols.list,\n      this.showingPivotResult,\n      this.lastOrder,\n      this.cols?.list ?? []\n    ) : void 0;\n  }\n  setColSpanActive() {\n    this.colSpanActive = !!this.cols?.list.some((col) => col.getColDef().colSpan != null);\n  }\n  isPivotMode() {\n    return this.pivotMode;\n  }\n  setPivotMode(pivotMode, source) {\n    if (pivotMode === this.pivotMode) {\n      return;\n    }\n    this.pivotMode = pivotMode;\n    if (!this.ready) {\n      return;\n    }\n    this.refreshCols(false);\n    const { visibleCols, eventSvc } = this.beans;\n    visibleCols.refresh(source);\n    eventSvc.dispatchEvent({\n      type: \"columnPivotModeChanged\"\n    });\n  }\n  // + clientSideRowModel\n  isPivotActive() {\n    const pivotColumns = this.beans.pivotColsSvc?.columns;\n    return this.pivotMode && !!pivotColumns?.length;\n  }\n  // called when dataTypes change\n  recreateColumnDefs(e) {\n    if (!this.cols) {\n      return;\n    }\n    this.beans.autoColSvc?.updateColumns(e);\n    const source = _convertColumnEventSourceType(e.source);\n    this.createColsFromColDefs(source);\n  }\n  setColumnDefs(columnDefs, source) {\n    this.colDefs = columnDefs;\n    this.createColsFromColDefs(source);\n  }\n  destroy() {\n    _destroyColumnTree(this.beans, this.colDefCols?.tree);\n    super.destroy();\n  }\n  getColTree() {\n    return this.cols?.tree ?? [];\n  }\n  // + columnSelectPanel\n  getColDefColTree() {\n    return this.colDefCols?.tree ?? [];\n  }\n  // + clientSideRowController -> sorting, building quick filter text\n  // + headerRenderer -> sorting (clearing icon)\n  getColDefCols() {\n    return this.colDefCols?.list ?? null;\n  }\n  // + moveColumnController\n  getCols() {\n    return this.cols?.list ?? [];\n  }\n  forAllCols(callback) {\n    const { pivotResultCols, autoColSvc, selectionColSvc } = this.beans;\n    _forAll(this.colDefCols?.list, callback);\n    _forAll(autoColSvc?.columns?.list, callback);\n    _forAll(selectionColSvc?.columns?.list, callback);\n    _forAll(pivotResultCols?.getPivotResultCols()?.list, callback);\n  }\n  getColsForKeys(keys) {\n    if (!keys) {\n      return [];\n    }\n    return keys.map((key) => this.getCol(key)).filter((col) => col != null);\n  }\n  getColDefCol(key) {\n    if (!this.colDefCols?.list) {\n      return null;\n    }\n    return this.getColFromCollection(key, this.colDefCols);\n  }\n  getCol(key) {\n    if (key == null) {\n      return null;\n    }\n    return this.getColFromCollection(key, this.cols);\n  }\n  /**\n   * Get column exclusively by ID.\n   *\n   * Note getCol/getColFromCollection have poor performance when col has been removed.\n   */\n  getColById(key) {\n    return this.cols?.map[key] ?? null;\n  }\n  getColFromCollection(key, cols) {\n    if (cols == null) {\n      return null;\n    }\n    const { map, list } = cols;\n    if (typeof key == \"string\" && map[key]) {\n      return map[key];\n    }\n    for (let i = 0; i < list.length; i++) {\n      if (_columnsMatch(list[i], key)) {\n        return list[i];\n      }\n    }\n    return this.beans.autoColSvc?.getColumn(key) ?? this.beans.selectionColSvc?.getColumn(key) ?? null;\n  }\n};\n\n// packages/ag-grid-community/src/columns/baseColsService.ts\nvar BaseColsService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.dispatchColumnChangedEvent = dispatchColumnChangedEvent;\n    this.columns = [];\n    this.columnIndexMap = {};\n    this.updateIndexMap = () => {\n      this.columnIndexMap = {};\n      this.columns.forEach((col, index) => this.columnIndexMap[col.getId()] = index);\n    };\n  }\n  wireBeans(beans) {\n    this.colModel = beans.colModel;\n    this.aggFuncSvc = beans.aggFuncSvc;\n    this.visibleCols = beans.visibleCols;\n  }\n  sortColumns(compareFn) {\n    this.columns.sort(compareFn);\n    this.updateIndexMap();\n  }\n  setColumns(colKeys, source) {\n    this.setColList(colKeys, this.columns, this.eventName, true, true, this.columnProcessors.set, source);\n  }\n  addColumns(colKeys, source) {\n    this.updateColList(colKeys, this.columns, true, true, this.columnProcessors.add, this.eventName, source);\n  }\n  removeColumns(colKeys, source) {\n    this.updateColList(colKeys, this.columns, false, true, this.columnProcessors.remove, this.eventName, source);\n  }\n  getColumnIndex(colId) {\n    return this.columnIndexMap[colId];\n  }\n  setColList(colKeys = [], masterList, eventName, detectOrderChange, autoGroupsNeedBuilding, columnCallback, source) {\n    const gridColumns = this.colModel.getCols();\n    if (!gridColumns || gridColumns.length === 0) {\n      return;\n    }\n    const changes = /* @__PURE__ */ new Map();\n    masterList.forEach((col, idx) => changes.set(col, idx));\n    masterList.length = 0;\n    if (_exists(colKeys)) {\n      colKeys.forEach((key) => {\n        const column = this.colModel.getColDefCol(key);\n        if (column) {\n          masterList.push(column);\n        }\n      });\n    }\n    masterList.forEach((col, idx) => {\n      const oldIndex = changes.get(col);\n      if (oldIndex === void 0) {\n        changes.set(col, 0);\n        return;\n      }\n      if (detectOrderChange && oldIndex !== idx) {\n        return;\n      }\n      changes.delete(col);\n    });\n    this.updateIndexMap();\n    const primaryCols = this.colModel.getColDefCols();\n    (primaryCols || []).forEach((column) => {\n      const added = masterList.indexOf(column) >= 0;\n      columnCallback(column, added, source);\n    });\n    autoGroupsNeedBuilding && this.colModel.refreshCols(false);\n    this.visibleCols.refresh(source);\n    this.dispatchColumnChangedEvent(this.eventSvc, eventName, [...changes.keys()], source);\n  }\n  updateColList(keys = [], masterList, actionIsAdd, autoGroupsNeedBuilding, columnCallback, eventType, source) {\n    if (!keys || keys.length === 0) {\n      return;\n    }\n    let atLeastOne = false;\n    const updatedCols = /* @__PURE__ */ new Set();\n    keys.forEach((key) => {\n      if (!key) {\n        return;\n      }\n      const columnToAdd = this.colModel.getColDefCol(key);\n      if (!columnToAdd) {\n        return;\n      }\n      updatedCols.add(columnToAdd);\n      if (actionIsAdd) {\n        if (masterList.indexOf(columnToAdd) >= 0) {\n          return;\n        }\n        masterList.push(columnToAdd);\n      } else {\n        const currentIndex = masterList.indexOf(columnToAdd);\n        if (currentIndex < 0) {\n          return;\n        }\n        for (let i = currentIndex + 1; i < masterList.length; i++) {\n          updatedCols.add(masterList[i]);\n        }\n        _removeFromArray(masterList, columnToAdd);\n      }\n      columnCallback(columnToAdd, actionIsAdd, source);\n      atLeastOne = true;\n    });\n    if (!atLeastOne) {\n      return;\n    }\n    this.updateIndexMap();\n    if (autoGroupsNeedBuilding) {\n      this.colModel.refreshCols(false);\n    }\n    this.visibleCols.refresh(source);\n    const eventColumns = Array.from(updatedCols);\n    this.eventSvc.dispatchEvent({\n      type: eventType,\n      columns: eventColumns,\n      column: eventColumns.length === 1 ? eventColumns[0] : null,\n      source\n    });\n  }\n  extractCols(source, oldProvidedCols = []) {\n    const previousCols = this.columns;\n    const colsWithIndex = [];\n    const colsWithValue = [];\n    const { setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc } = this.columnExtractors;\n    const primaryCols = this.colModel.getColDefCols() || [];\n    primaryCols.forEach((col) => {\n      const colIsNew = oldProvidedCols.indexOf(col) < 0;\n      const colDef = col.getColDef();\n      const value = getValueFunc(colDef);\n      const initialValue = getInitialValueFunc(colDef);\n      const index = getIndexFunc(colDef);\n      const initialIndex = getInitialIndexFunc(colDef);\n      let include;\n      const valuePresent = value !== void 0;\n      const indexPresent = index !== void 0;\n      const initialValuePresent = initialValue !== void 0;\n      const initialIndexPresent = initialIndex !== void 0;\n      if (valuePresent) {\n        include = value;\n      } else if (indexPresent) {\n        if (index === null) {\n          include = false;\n        } else {\n          include = index >= 0;\n        }\n      } else {\n        if (colIsNew) {\n          if (initialValuePresent) {\n            include = initialValue;\n          } else if (initialIndexPresent) {\n            include = initialIndex != null && initialIndex >= 0;\n          } else {\n            include = false;\n          }\n        } else {\n          include = previousCols.indexOf(col) >= 0;\n        }\n      }\n      if (include) {\n        const useIndex = colIsNew ? index != null || initialIndex != null : index != null;\n        useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);\n      }\n    });\n    const getIndexForCol = (col) => {\n      const index = getIndexFunc(col.getColDef());\n      const defaultIndex = getInitialIndexFunc(col.getColDef());\n      return index != null ? index : defaultIndex;\n    };\n    colsWithIndex.sort((colA, colB) => {\n      const indexA = getIndexForCol(colA);\n      const indexB = getIndexForCol(colB);\n      if (indexA === indexB) {\n        return 0;\n      }\n      if (indexA < indexB) {\n        return -1;\n      }\n      return 1;\n    });\n    const res = [].concat(colsWithIndex);\n    previousCols.forEach((col) => {\n      if (colsWithValue.indexOf(col) >= 0) {\n        res.push(col);\n      }\n    });\n    colsWithValue.forEach((col) => {\n      if (res.indexOf(col) < 0) {\n        res.push(col);\n      }\n    });\n    previousCols.forEach((col) => {\n      if (res.indexOf(col) < 0) {\n        setFlagFunc(col, false, source);\n      }\n    });\n    res.forEach((col) => {\n      if (previousCols.indexOf(col) < 0) {\n        setFlagFunc(col, true, source);\n      }\n    });\n    this.columns = res;\n    this.updateIndexMap();\n    return this.columns;\n  }\n  restoreColumnOrder(columnStateAccumulator, incomingColumnState) {\n    const colList = this.columns;\n    const primaryCols = this.colModel.getColDefCols();\n    if (!colList.length || !primaryCols) {\n      return columnStateAccumulator;\n    }\n    const updatedColIdArray = Object.keys(incomingColumnState);\n    const updatedColIds = new Set(updatedColIdArray);\n    const newColIds = new Set(updatedColIdArray);\n    const allColIds = new Set(\n      colList.map((column) => {\n        const colId = column.getColId();\n        newColIds.delete(colId);\n        return colId;\n      }).concat(updatedColIdArray)\n    );\n    const colIdsInOriginalOrder = [];\n    const originalOrderMap = {};\n    let orderIndex = 0;\n    for (let i = 0; i < primaryCols.length; i++) {\n      const colId = primaryCols[i].getColId();\n      if (allColIds.has(colId)) {\n        colIdsInOriginalOrder.push(colId);\n        originalOrderMap[colId] = orderIndex++;\n      }\n    }\n    let index = 1e3;\n    let hasAddedNewCols = false;\n    let lastIndex = 0;\n    const enableProp = this.columnOrdering.enableProp;\n    const initialEnableProp = this.columnOrdering.initialEnableProp;\n    const indexProp = this.columnOrdering.indexProp;\n    const initialIndexProp = this.columnOrdering.initialIndexProp;\n    const processPrecedingNewCols = (colId) => {\n      const originalOrderIndex = originalOrderMap[colId];\n      for (let i = lastIndex; i < originalOrderIndex; i++) {\n        const newColId = colIdsInOriginalOrder[i];\n        if (newColIds.has(newColId)) {\n          incomingColumnState[newColId][indexProp] = index++;\n          newColIds.delete(newColId);\n        }\n      }\n      lastIndex = originalOrderIndex;\n    };\n    colList.forEach((column) => {\n      const colId = column.getColId();\n      if (updatedColIds.has(colId)) {\n        processPrecedingNewCols(colId);\n        incomingColumnState[colId][indexProp] = index++;\n      } else {\n        const colDef = column.getColDef();\n        const missingIndex = colDef[indexProp] === null || colDef[indexProp] === void 0 && colDef[initialIndexProp] == null;\n        if (missingIndex) {\n          if (!hasAddedNewCols) {\n            const propEnabled = colDef[enableProp] || colDef[enableProp] === void 0 && colDef[initialEnableProp];\n            if (propEnabled) {\n              processPrecedingNewCols(colId);\n            } else {\n              newColIds.forEach((newColId) => {\n                incomingColumnState[newColId][indexProp] = index + originalOrderMap[newColId];\n              });\n              index += colIdsInOriginalOrder.length;\n              hasAddedNewCols = true;\n            }\n          }\n          if (!columnStateAccumulator[colId]) {\n            columnStateAccumulator[colId] = { colId };\n          }\n          columnStateAccumulator[colId][indexProp] = index++;\n        }\n      }\n    });\n    return columnStateAccumulator;\n  }\n};\n\n// packages/ag-grid-community/src/columns/groupInstanceIdCreator.ts\nvar GroupInstanceIdCreator = class {\n  constructor() {\n    // this map contains keys to numbers, so we remember what the last call was\n    this.existingIds = {};\n  }\n  getInstanceIdForKey(key) {\n    const lastResult = this.existingIds[key];\n    let result;\n    if (typeof lastResult !== \"number\") {\n      result = 0;\n    } else {\n      result = lastResult + 1;\n    }\n    this.existingIds[key] = result;\n    return result;\n  }\n};\n\n// packages/ag-grid-community/src/components/emptyBean.ts\nvar EmptyBean = class extends BeanStub {\n};\nfunction setupCompBean(ctrl, ctx, compBean) {\n  if (compBean) {\n    ctrl.addDestroyFunc(() => ctx.destroyBean(compBean));\n  }\n  return compBean ?? ctrl;\n}\n\n// packages/ag-grid-community/src/rendering/cssClassManager.ts\nvar CssClassManager = class {\n  constructor(getGui) {\n    // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already\n    // there, or removing one that wasn't present, all takes CPU.\n    this.cssClassStates = {};\n    this.getGui = getGui;\n  }\n  toggleCss(className, addOrRemove) {\n    if (!className) {\n      return;\n    }\n    if (className.indexOf(\" \") >= 0) {\n      const list = (className || \"\").split(\" \");\n      if (list.length > 1) {\n        list.forEach((cls) => this.toggleCss(cls, addOrRemove));\n        return;\n      }\n    }\n    const updateNeeded = this.cssClassStates[className] !== addOrRemove;\n    if (updateNeeded && className.length) {\n      this.getGui()?.classList.toggle(className, addOrRemove);\n      this.cssClassStates[className] = addOrRemove;\n    }\n  }\n};\n\n// packages/ag-grid-community/src/widgets/component.ts\nvar compIdSequence = 0;\nvar RefPlaceholder = null;\nvar Component = class extends BeanStub {\n  constructor(templateOrParams, componentSelectors) {\n    super();\n    this.suppressDataRefValidation = false;\n    // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n    this.displayed = true;\n    // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n    this.visible = true;\n    // unique id for this row component. this is used for getting a reference to the HTML dom.\n    // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n    // around as we create a new rowComp instance for the same row node).\n    this.compId = compIdSequence++;\n    this.cssManager = new CssClassManager(() => this.eGui);\n    this.componentSelectors = new Map((componentSelectors ?? []).map((comp) => [comp.selector, comp]));\n    if (templateOrParams) {\n      this.setTemplate(templateOrParams);\n    }\n  }\n  preConstruct() {\n    this.wireTemplate(this.getGui());\n    const debugId = \"component-\" + Object.getPrototypeOf(this)?.constructor?.name;\n    this.css?.forEach((css) => this.beans.environment.addGlobalCSS(css, debugId));\n  }\n  wireTemplate(element, paramsMap) {\n    if (element && this.gos) {\n      this.applyElementsToComponent(element);\n      this.createChildComponentsFromTags(element, paramsMap);\n    }\n  }\n  getCompId() {\n    return this.compId;\n  }\n  getDataRefAttribute(element) {\n    if (element.getAttribute) {\n      return element.getAttribute(DataRefAttribute);\n    }\n    return null;\n  }\n  applyElementsToComponent(element, elementRef, paramsMap, newComponent = null) {\n    if (elementRef === void 0) {\n      elementRef = this.getDataRefAttribute(element);\n    }\n    if (elementRef) {\n      const current = this[elementRef];\n      if (current === RefPlaceholder) {\n        this[elementRef] = newComponent ?? element;\n      } else {\n        const usedAsParamRef = paramsMap && paramsMap[elementRef];\n        if (!this.suppressDataRefValidation && !usedAsParamRef) {\n          throw new Error(`data-ref: ${elementRef} on ${this.constructor.name} with ${current}`);\n        }\n      }\n    }\n  }\n  // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n  createChildComponentsFromTags(parentNode, paramsMap) {\n    const childNodeList = [];\n    for (const childNode of parentNode.childNodes ?? []) {\n      childNodeList.push(childNode);\n    }\n    childNodeList.forEach((childNode) => {\n      if (!(childNode instanceof HTMLElement)) {\n        return;\n      }\n      const childComp = this.createComponentFromElement(\n        childNode,\n        (childComp2) => {\n          const childGui = childComp2.getGui();\n          if (childGui) {\n            for (const attr of childNode.attributes ?? []) {\n              childGui.setAttribute(attr.name, attr.value);\n            }\n          }\n        },\n        paramsMap\n      );\n      if (childComp) {\n        if (childComp.addItems && childNode.children.length) {\n          this.createChildComponentsFromTags(childNode, paramsMap);\n          const items = Array.prototype.slice.call(childNode.children);\n          childComp.addItems(items);\n        }\n        this.swapComponentForNode(childComp, parentNode, childNode);\n      } else if (childNode.childNodes) {\n        this.createChildComponentsFromTags(childNode, paramsMap);\n      }\n    });\n  }\n  createComponentFromElement(element, afterPreCreateCallback, paramsMap) {\n    const key = element.nodeName;\n    const elementRef = this.getDataRefAttribute(element);\n    const isAgGridComponent = key.indexOf(\"AG-\") === 0;\n    const componentSelector = isAgGridComponent ? this.componentSelectors.get(key) : null;\n    let newComponent = null;\n    if (componentSelector) {\n      const componentParams = paramsMap && elementRef ? paramsMap[elementRef] : void 0;\n      newComponent = new componentSelector.component(componentParams);\n      newComponent.setParentComponent(this);\n      this.createBean(newComponent, null, afterPreCreateCallback);\n    } else if (isAgGridComponent) {\n      throw new Error(`selector: ${key}`);\n    }\n    this.applyElementsToComponent(element, elementRef, paramsMap, newComponent);\n    return newComponent;\n  }\n  swapComponentForNode(newComponent, parentNode, childNode) {\n    const eComponent = newComponent.getGui();\n    parentNode.replaceChild(eComponent, childNode);\n    parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n    this.addDestroyFunc(this.destroyBean.bind(this, newComponent));\n  }\n  activateTabIndex(elements) {\n    const tabIndex = this.gos.get(\"tabIndex\");\n    if (!elements) {\n      elements = [];\n    }\n    if (!elements.length) {\n      elements.push(this.getGui());\n    }\n    elements.forEach((el) => el.setAttribute(\"tabindex\", tabIndex.toString()));\n  }\n  setTemplate(templateOrParams, componentSelectors, paramsMap) {\n    let eGui;\n    if (typeof templateOrParams === \"string\" || templateOrParams == null) {\n      eGui = _loadTemplate(templateOrParams);\n    } else {\n      eGui = _createElement(templateOrParams);\n    }\n    this.setTemplateFromElement(eGui, componentSelectors, paramsMap);\n  }\n  setTemplateFromElement(element, components, paramsMap, suppressDataRefValidation = false) {\n    this.eGui = element;\n    this.suppressDataRefValidation = suppressDataRefValidation;\n    if (components) {\n      for (let i = 0; i < components.length; i++) {\n        const component = components[i];\n        this.componentSelectors.set(component.selector, component);\n      }\n    }\n    this.wireTemplate(element, paramsMap);\n  }\n  getGui() {\n    return this.eGui;\n  }\n  getFocusableElement() {\n    return this.eGui;\n  }\n  getAriaElement() {\n    return this.getFocusableElement();\n  }\n  setParentComponent(component) {\n    this.parentComponent = component;\n  }\n  getParentComponent() {\n    return this.parentComponent;\n  }\n  // this method is for older code, that wants to provide the gui element,\n  // it is not intended for this to be in ag-Stack\n  setGui(eGui) {\n    this.eGui = eGui;\n  }\n  queryForHtmlElement(cssSelector) {\n    return this.eGui.querySelector(cssSelector);\n  }\n  getContainerAndElement(newChild, container) {\n    let parent = container;\n    if (newChild == null) {\n      return null;\n    }\n    if (!parent) {\n      parent = this.eGui;\n    }\n    if (_isNodeOrElement(newChild)) {\n      return {\n        element: newChild,\n        parent\n      };\n    }\n    return {\n      element: newChild.getGui(),\n      parent\n    };\n  }\n  prependChild(newChild, container) {\n    const { element, parent } = this.getContainerAndElement(newChild, container) || {};\n    if (!element || !parent) {\n      return;\n    }\n    parent.insertAdjacentElement(\"afterbegin\", element);\n  }\n  appendChild(newChild, container) {\n    const { element, parent } = this.getContainerAndElement(newChild, container) || {};\n    if (!element || !parent) {\n      return;\n    }\n    parent.appendChild(element);\n  }\n  isDisplayed() {\n    return this.displayed;\n  }\n  setVisible(visible, options = {}) {\n    if (visible !== this.visible) {\n      this.visible = visible;\n      const { skipAriaHidden } = options;\n      _setVisible(this.eGui, visible, { skipAriaHidden });\n    }\n  }\n  setDisplayed(displayed, options = {}) {\n    if (displayed !== this.displayed) {\n      this.displayed = displayed;\n      const { skipAriaHidden } = options;\n      _setDisplayed(this.eGui, displayed, { skipAriaHidden });\n      const event = {\n        type: \"displayChanged\",\n        visible: this.displayed\n      };\n      this.dispatchLocalEvent(event);\n    }\n  }\n  destroy() {\n    if (this.parentComponent) {\n      this.parentComponent = void 0;\n    }\n    super.destroy();\n  }\n  addGuiEventListener(event, listener, options) {\n    this.eGui.addEventListener(event, listener, options);\n    this.addDestroyFunc(() => this.eGui.removeEventListener(event, listener));\n  }\n  addCss(className) {\n    this.cssManager.toggleCss(className, true);\n  }\n  removeCss(className) {\n    this.cssManager.toggleCss(className, false);\n  }\n  toggleCss(className, addOrRemove) {\n    this.cssManager.toggleCss(className, addOrRemove);\n  }\n  registerCSS(css) {\n    this.css || (this.css = []);\n    this.css.push(css);\n  }\n};\n\n// packages/ag-grid-community/src/utils/promise.ts\nfunction _isPromise(fn) {\n  if (typeof fn.then === \"function\") {\n    return true;\n  }\n  return false;\n}\nvar AgPromise = class _AgPromise {\n  constructor(callback) {\n    this.status = 0 /* IN_PROGRESS */;\n    this.resolution = null;\n    this.waiters = [];\n    callback(\n      (value) => this.onDone(value),\n      (params) => this.onReject(params)\n    );\n  }\n  static all(promises) {\n    return promises.length ? new _AgPromise((resolve) => {\n      let remainingToResolve = promises.length;\n      const combinedValues = new Array(remainingToResolve);\n      promises.forEach((promise, index) => {\n        promise.then((value) => {\n          combinedValues[index] = value;\n          remainingToResolve--;\n          if (remainingToResolve === 0) {\n            resolve(combinedValues);\n          }\n        });\n      });\n    }) : _AgPromise.resolve();\n  }\n  static resolve(value = null) {\n    return new _AgPromise((resolve) => resolve(value));\n  }\n  then(func) {\n    return new _AgPromise((resolve) => {\n      if (this.status === 1 /* RESOLVED */) {\n        resolve(func(this.resolution));\n      } else {\n        this.waiters.push((value) => resolve(func(value)));\n      }\n    });\n  }\n  onDone(value) {\n    this.status = 1 /* RESOLVED */;\n    this.resolution = value;\n    this.waiters.forEach((waiter) => waiter(value));\n  }\n  onReject(_) {\n  }\n};\n\n// packages/ag-grid-community/src/components/framework/userComponentFactory.ts\nfunction doesImplementIComponent(candidate) {\n  if (!candidate) {\n    return false;\n  }\n  return candidate.prototype && \"getGui\" in candidate.prototype;\n}\nfunction _getUserCompKeys(frameworkOverrides, defObject, type, params) {\n  const { name } = type;\n  let compName;\n  let jsComp;\n  let fwComp;\n  let paramsFromSelector;\n  let popupFromSelector;\n  let popupPositionFromSelector;\n  if (defObject) {\n    const defObjectAny = defObject;\n    const selectorFunc = defObjectAny[name + \"Selector\"];\n    const selectorRes = selectorFunc ? selectorFunc(params) : null;\n    const assignComp = (providedJsComp) => {\n      if (typeof providedJsComp === \"string\") {\n        compName = providedJsComp;\n      } else if (providedJsComp != null && providedJsComp !== true) {\n        const isFwkComp = frameworkOverrides.isFrameworkComponent(providedJsComp);\n        if (isFwkComp) {\n          fwComp = providedJsComp;\n        } else {\n          jsComp = providedJsComp;\n        }\n      }\n    };\n    if (selectorRes) {\n      assignComp(selectorRes.component);\n      paramsFromSelector = selectorRes.params;\n      popupFromSelector = selectorRes.popup;\n      popupPositionFromSelector = selectorRes.popupPosition;\n    } else {\n      assignComp(defObjectAny[name]);\n    }\n  }\n  return { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector };\n}\nvar UserComponentFactory = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"userCompFactory\";\n  }\n  wireBeans(beans) {\n    this.agCompUtils = beans.agCompUtils;\n    this.registry = beans.registry;\n    this.frameworkCompWrapper = beans.frameworkCompWrapper;\n    this.gridOptions = beans.gridOptions;\n  }\n  getCompDetailsFromGridOptions(type, defaultName, params, mandatory = false) {\n    return this.getCompDetails(this.gridOptions, type, defaultName, params, mandatory);\n  }\n  getCompDetails(defObject, type, defaultName, params, mandatory = false) {\n    const { name, cellRenderer } = type;\n    let { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector } = _getUserCompKeys(this.beans.frameworkOverrides, defObject, type, params);\n    let defaultCompParams;\n    const lookupFromRegistry = (key) => {\n      const item = this.registry.getUserComponent(name, key);\n      if (item) {\n        jsComp = !item.componentFromFramework ? item.component : void 0;\n        fwComp = item.componentFromFramework ? item.component : void 0;\n        defaultCompParams = item.params;\n      }\n    };\n    if (compName != null) {\n      lookupFromRegistry(compName);\n    }\n    if (jsComp == null && fwComp == null && defaultName != null) {\n      lookupFromRegistry(defaultName);\n    }\n    if (jsComp && cellRenderer && !doesImplementIComponent(jsComp)) {\n      jsComp = this.agCompUtils?.adaptFunction(type, jsComp);\n    }\n    if (!jsComp && !fwComp) {\n      const { validation: validation2 } = this.beans;\n      if (mandatory && (compName !== defaultName || !defaultName)) {\n        if (compName) {\n          if (!validation2?.isProvidedUserComp(compName)) {\n            _error(50, { compName });\n          }\n        } else {\n          if (defaultName) {\n            if (!validation2) {\n              _error(260, {\n                ...this.gos.getModuleErrorParams(),\n                propName: name,\n                compName: defaultName\n              });\n            }\n          } else {\n            _error(216, { name });\n          }\n        }\n      } else if (defaultName && !validation2) {\n        _error(146, { comp: defaultName });\n      }\n      return;\n    }\n    const paramsMerged = this.mergeParams(defObject, type, params, paramsFromSelector, defaultCompParams);\n    const componentFromFramework = jsComp == null;\n    const componentClass = jsComp ?? fwComp;\n    return {\n      componentFromFramework,\n      componentClass,\n      params: paramsMerged,\n      type,\n      popupFromSelector,\n      popupPositionFromSelector,\n      newAgStackInstance: () => this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type)\n    };\n  }\n  newAgStackInstance(ComponentClass, componentFromFramework, params, type) {\n    const jsComponent = !componentFromFramework;\n    let instance;\n    if (jsComponent) {\n      instance = new ComponentClass();\n    } else {\n      instance = this.frameworkCompWrapper.wrap(\n        ComponentClass,\n        type.mandatoryMethods,\n        type.optionalMethods,\n        type\n      );\n    }\n    this.createBean(instance);\n    const deferredInit = instance.init?.(params);\n    if (deferredInit == null) {\n      return AgPromise.resolve(instance);\n    }\n    return deferredInit.then(() => instance);\n  }\n  /**\n   * merges params with application provided params\n   * used by Floating Filter\n   */\n  mergeParams(defObject, type, paramsFromGrid, paramsFromSelector = null, defaultCompParams) {\n    const params = { ...paramsFromGrid, ...defaultCompParams };\n    const defObjectAny = defObject;\n    const userParams = defObjectAny && defObjectAny[type.name + \"Params\"];\n    if (typeof userParams === \"function\") {\n      const userParamsFromFunc = userParams(paramsFromGrid);\n      _mergeDeep(params, userParamsFromFunc);\n    } else if (typeof userParams === \"object\") {\n      _mergeDeep(params, userParams);\n    }\n    _mergeDeep(params, paramsFromSelector);\n    return params;\n  }\n};\n\n// packages/ag-grid-community/src/components/framework/userCompUtils.ts\nvar DateComponent = {\n  name: \"dateComponent\",\n  mandatoryMethods: [\"getDate\", \"setDate\"],\n  optionalMethods: [\"afterGuiAttached\", \"setInputPlaceholder\", \"setInputAriaLabel\", \"setDisabled\", \"refresh\"]\n};\nvar DragAndDropImageComponent = {\n  name: \"dragAndDropImageComponent\",\n  mandatoryMethods: [\"setIcon\", \"setLabel\"]\n};\nvar HeaderComponent = { name: \"headerComponent\", optionalMethods: [\"refresh\"] };\nvar InnerHeaderComponent = { name: \"innerHeaderComponent\" };\nvar InnerHeaderGroupComponent = { name: \"innerHeaderGroupComponent\" };\nvar HeaderGroupComponent = { name: \"headerGroupComponent\" };\nvar InnerCellRendererComponent = {\n  name: \"innerRenderer\",\n  cellRenderer: true,\n  optionalMethods: [\"afterGuiAttached\"]\n};\nvar CellRendererComponent = {\n  name: \"cellRenderer\",\n  optionalMethods: [\"refresh\", \"afterGuiAttached\"],\n  cellRenderer: true\n};\nvar EditorRendererComponent = {\n  name: \"cellRenderer\",\n  optionalMethods: [\"refresh\", \"afterGuiAttached\"]\n};\nvar LoadingCellRendererComponent = { name: \"loadingCellRenderer\", cellRenderer: true };\nvar CellEditorComponent = {\n  name: \"cellEditor\",\n  mandatoryMethods: [\"getValue\"],\n  optionalMethods: [\n    \"isPopup\",\n    \"isCancelBeforeStart\",\n    \"isCancelAfterEnd\",\n    \"getPopupPosition\",\n    \"focusIn\",\n    \"focusOut\",\n    \"afterGuiAttached\",\n    \"refresh\"\n  ]\n};\nvar LoadingOverlayComponent = { name: \"loadingOverlayComponent\", optionalMethods: [\"refresh\"] };\nvar NoRowsOverlayComponent = { name: \"noRowsOverlayComponent\", optionalMethods: [\"refresh\"] };\nvar TooltipComponent = { name: \"tooltipComponent\" };\nvar FilterComponent = {\n  name: \"filter\",\n  mandatoryMethods: [\"isFilterActive\", \"doesFilterPass\", \"getModel\", \"setModel\"],\n  optionalMethods: [\n    \"afterGuiAttached\",\n    \"afterGuiDetached\",\n    \"onNewRowsLoaded\",\n    \"getModelAsString\",\n    \"onFloatingFilterChanged\",\n    \"onAnyFilterChanged\",\n    \"refresh\"\n  ]\n};\nvar FloatingFilterComponent = {\n  name: \"floatingFilterComponent\",\n  mandatoryMethods: [\"onParentModelChanged\"],\n  optionalMethods: [\"afterGuiAttached\", \"refresh\"]\n};\nvar FullWidth = {\n  name: \"fullWidthCellRenderer\",\n  optionalMethods: [\"refresh\", \"afterGuiAttached\"],\n  cellRenderer: true\n};\nvar FullWidthLoading = { name: \"loadingCellRenderer\", cellRenderer: true };\nvar FullWidthGroup = {\n  name: \"groupRowRenderer\",\n  optionalMethods: [\"afterGuiAttached\"],\n  cellRenderer: true\n};\nvar FullWidthDetail = { name: \"detailCellRenderer\", optionalMethods: [\"refresh\"], cellRenderer: true };\nfunction _getDragAndDropImageCompDetails(userCompFactory, params) {\n  return userCompFactory.getCompDetailsFromGridOptions(DragAndDropImageComponent, \"agDragAndDropImage\", params, true);\n}\nfunction _getInnerCellRendererDetails(userCompFactory, def, params) {\n  return userCompFactory.getCompDetails(def, InnerCellRendererComponent, void 0, params);\n}\nfunction _getHeaderCompDetails(userCompFactory, colDef, params) {\n  return userCompFactory.getCompDetails(colDef, HeaderComponent, \"agColumnHeader\", params);\n}\nfunction _getInnerHeaderCompDetails(userCompFactory, headerCompParams, params) {\n  return userCompFactory.getCompDetails(headerCompParams, InnerHeaderComponent, void 0, params);\n}\nfunction _getHeaderGroupCompDetails(userCompFactory, params) {\n  const colGroupDef = params.columnGroup.getColGroupDef();\n  return userCompFactory.getCompDetails(colGroupDef, HeaderGroupComponent, \"agColumnGroupHeader\", params);\n}\nfunction _getInnerHeaderGroupCompDetails(userCompFactory, headerGroupCompParams, params) {\n  return userCompFactory.getCompDetails(headerGroupCompParams, InnerHeaderGroupComponent, void 0, params);\n}\nfunction _getFullWidthCellRendererDetails(userCompFactory, params) {\n  return userCompFactory.getCompDetailsFromGridOptions(FullWidth, void 0, params, true);\n}\nfunction _getFullWidthLoadingCellRendererDetails(userCompFactory, params) {\n  return userCompFactory.getCompDetailsFromGridOptions(FullWidthLoading, \"agLoadingCellRenderer\", params, true);\n}\nfunction _getFullWidthGroupCellRendererDetails(userCompFactory, params) {\n  return userCompFactory.getCompDetailsFromGridOptions(FullWidthGroup, \"agGroupRowRenderer\", params, true);\n}\nfunction _getFullWidthDetailCellRendererDetails(userCompFactory, params) {\n  return userCompFactory.getCompDetailsFromGridOptions(FullWidthDetail, \"agDetailCellRenderer\", params, true);\n}\nfunction _getCellRendererDetails(userCompFactory, def, params) {\n  return userCompFactory.getCompDetails(def, CellRendererComponent, void 0, params);\n}\nfunction _getEditorRendererDetails(userCompFactory, def, params) {\n  return userCompFactory.getCompDetails(\n    def,\n    EditorRendererComponent,\n    void 0,\n    params\n  );\n}\nfunction _getLoadingCellRendererDetails(userCompFactory, def, params) {\n  return userCompFactory.getCompDetails(def, LoadingCellRendererComponent, \"agSkeletonCellRenderer\", params, true);\n}\nfunction _getCellEditorDetails(userCompFactory, def, params) {\n  return userCompFactory.getCompDetails(def, CellEditorComponent, \"agCellEditor\", params, true);\n}\nfunction _getFilterDetails(userCompFactory, def, params, defaultFilter) {\n  return userCompFactory.getCompDetails(def, FilterComponent, defaultFilter, params, true);\n}\nfunction _getDateCompDetails(userCompFactory, def, params) {\n  return userCompFactory.getCompDetails(def, DateComponent, \"agDateInput\", params, true);\n}\nfunction _getLoadingOverlayCompDetails(userCompFactory, params) {\n  return userCompFactory.getCompDetailsFromGridOptions(LoadingOverlayComponent, \"agLoadingOverlay\", params, true);\n}\nfunction _getNoRowsOverlayCompDetails(userCompFactory, params) {\n  return userCompFactory.getCompDetailsFromGridOptions(NoRowsOverlayComponent, \"agNoRowsOverlay\", params, true);\n}\nfunction _getTooltipCompDetails(userCompFactory, params) {\n  return userCompFactory.getCompDetails(params.colDef, TooltipComponent, \"agTooltipComponent\", params, true);\n}\nfunction _getFloatingFilterCompDetails(userCompFactory, def, params, defaultFloatingFilter) {\n  return userCompFactory.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);\n}\nfunction _getFilterCompKeys(frameworkOverrides, def) {\n  return _getUserCompKeys(frameworkOverrides, def, FilterComponent);\n}\nfunction _mergeFilterParamsWithApplicationProvidedParams(userCompFactory, defObject, paramsFromGrid) {\n  return userCompFactory.mergeParams(defObject, FilterComponent, paramsFromGrid);\n}\n\n// packages/ag-grid-community/src/components/framework/unwrapUserComp.ts\nfunction _unwrapUserComp(comp) {\n  const compAsAny = comp;\n  const isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;\n  return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;\n}\n\n// packages/ag-grid-community/src/modules/moduleRegistry.ts\nvar allRegisteredModules = /* @__PURE__ */ new Set();\nvar globalModulesMap = {};\nvar gridModulesMap = {};\nvar currentModuleVersion;\nvar userHasRegistered = false;\nvar areGridScopedModules = false;\nvar isUmd = false;\nfunction isValidModuleVersion(module) {\n  const [moduleMajor, moduleMinor] = module.version.split(\".\") || [];\n  const [currentModuleMajor, currentModuleMinor] = currentModuleVersion.split(\".\") || [];\n  return moduleMajor === currentModuleMajor && moduleMinor === currentModuleMinor;\n}\nfunction runVersionChecks(module) {\n  if (!currentModuleVersion) {\n    currentModuleVersion = module.version;\n  }\n  const errorMsg = (details) => `You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. ${details} Please update all modules to the same version.`;\n  if (!module.version) {\n    _errorOnce(errorMsg(`'${module.moduleName}' is incompatible.`));\n  } else if (!isValidModuleVersion(module)) {\n    _errorOnce(\n      errorMsg(\n        `'${module.moduleName}' is version ${module.version} but the other modules are version ${currentModuleVersion}.`\n      )\n    );\n  }\n  if (module.validate) {\n    const result = module.validate();\n    if (!result.isValid) {\n      const errorResult = result;\n      _errorOnce(`${errorResult.message}`);\n    }\n  }\n}\nfunction _registerModule(module, gridId, isInternalRegistration = false) {\n  if (!isInternalRegistration) {\n    userHasRegistered = true;\n  }\n  runVersionChecks(module);\n  const rowModels = module.rowModels ?? [\"all\"];\n  allRegisteredModules.add(module);\n  let moduleStore;\n  if (gridId !== void 0) {\n    areGridScopedModules = true;\n    if (gridModulesMap[gridId] === void 0) {\n      gridModulesMap[gridId] = {};\n    }\n    moduleStore = gridModulesMap[gridId];\n  } else {\n    moduleStore = globalModulesMap;\n  }\n  rowModels.forEach((rowModel) => {\n    if (moduleStore[rowModel] === void 0) {\n      moduleStore[rowModel] = {};\n    }\n    moduleStore[rowModel][module.moduleName] = module;\n  });\n  if (module.dependsOn) {\n    module.dependsOn.forEach((dependency) => _registerModule(dependency, gridId, isInternalRegistration));\n  }\n}\nfunction _unRegisterGridModules(gridId) {\n  delete gridModulesMap[gridId];\n}\nfunction _isModuleRegistered(moduleName, gridId, rowModel) {\n  const isRegisteredForRowModel = (model) => !!globalModulesMap[model]?.[moduleName] || !!gridModulesMap[gridId]?.[model]?.[moduleName];\n  return isRegisteredForRowModel(rowModel) || isRegisteredForRowModel(\"all\");\n}\nfunction _areModulesGridScoped() {\n  return areGridScopedModules;\n}\nfunction _getRegisteredModules(gridId, rowModel) {\n  const gridModules = gridModulesMap[gridId] ?? {};\n  return [\n    ...Object.values(globalModulesMap[\"all\"] ?? {}),\n    ...Object.values(gridModules[\"all\"] ?? {}),\n    ...Object.values(globalModulesMap[rowModel] ?? {}),\n    ...Object.values(gridModules[rowModel] ?? {})\n  ];\n}\nfunction _getAllRegisteredModules() {\n  return new Set(allRegisteredModules);\n}\nfunction _getGridRegisteredModules(gridId, rowModel) {\n  const gridModules = gridModulesMap[gridId] ?? {};\n  return [...Object.values(gridModules[\"all\"] ?? {}), ...Object.values(gridModules[rowModel] ?? {})];\n}\nfunction _hasUserRegistered() {\n  return userHasRegistered;\n}\nfunction _isUmd() {\n  return isUmd;\n}\nfunction _setUmd() {\n  isUmd = true;\n}\nvar ModuleRegistry = class {\n  /**\n   * @deprecated v33 Use `registerModules([module])` instead.\n   */\n  static register(module) {\n    _registerModule(module, void 0);\n  }\n  /**\n   * Globally register the given modules for all grids.\n   * @param modules - modules to register\n   */\n  static registerModules(modules) {\n    modules.forEach((module) => _registerModule(module, void 0));\n  }\n};\n\n// packages/ag-grid-community/src/context/genericContext.ts\nvar GenericContext = class {\n  constructor(params) {\n    this.beans = {};\n    this.createdBeans = [];\n    this.destroyed = false;\n    if (!params || !params.beanClasses) {\n      return;\n    }\n    this.beanDestroyComparator = params.beanDestroyComparator;\n    this.init(params);\n  }\n  init(params) {\n    for (const beanName of Object.keys(params.providedBeanInstances)) {\n      this.beans[beanName] = params.providedBeanInstances[beanName];\n    }\n    params.beanClasses.forEach((BeanClass) => {\n      const instance = new BeanClass();\n      if (instance.beanName) {\n        this.beans[instance.beanName] = instance;\n      } else {\n        console.error(`Bean ${BeanClass.name} is missing beanName`);\n      }\n      this.createdBeans.push(instance);\n    });\n    params.derivedBeans?.forEach((beanFunc) => {\n      const { beanName, bean } = beanFunc(this);\n      this.beans[beanName] = bean;\n      this.createdBeans.push(bean);\n    });\n    if (params.beanInitComparator) {\n      this.createdBeans.sort(params.beanInitComparator);\n    }\n    this.initBeans(this.createdBeans);\n  }\n  getBeanInstances() {\n    return Object.values(this.beans);\n  }\n  createBean(bean, afterPreCreateCallback) {\n    if (!bean) {\n      throw Error(\"null bean\");\n    }\n    this.initBeans([bean], afterPreCreateCallback);\n    return bean;\n  }\n  initBeans(beanInstances, afterPreCreateCallback) {\n    beanInstances.forEach((instance) => {\n      instance.preWireBeans?.(this.beans);\n      instance.wireBeans?.(this.beans);\n    });\n    beanInstances.forEach((instance) => instance.preConstruct?.());\n    if (afterPreCreateCallback) {\n      beanInstances.forEach(afterPreCreateCallback);\n    }\n    beanInstances.forEach((instance) => instance.postConstruct?.());\n  }\n  getBeans() {\n    return this.beans;\n  }\n  getBean(name) {\n    return this.beans[name];\n  }\n  destroy() {\n    if (this.destroyed) {\n      return;\n    }\n    this.destroyed = true;\n    const beanInstances = this.getBeanInstances();\n    if (this.beanDestroyComparator) {\n      beanInstances.sort(this.beanDestroyComparator);\n    }\n    this.destroyBeans(beanInstances);\n    this.beans = {};\n    this.createdBeans = [];\n  }\n  /**\n   * Destroys a bean and returns undefined to support destruction and clean up in a single line.\n   * this.dateComp = this.context.destroyBean(this.dateComp);\n   */\n  destroyBean(bean) {\n    bean?.destroy?.();\n  }\n  /**\n   * Destroys an array of beans and returns an empty array to support destruction and clean up in a single line.\n   * this.dateComps = this.context.destroyBeans(this.dateComps);\n   */\n  destroyBeans(beans) {\n    if (beans) {\n      for (let i = 0; i < beans.length; i++) {\n        this.destroyBean(beans[i]);\n      }\n    }\n    return [];\n  }\n  isDestroyed() {\n    return this.destroyed;\n  }\n};\n\n// packages/ag-grid-community/src/context/context.ts\nvar Context = class extends GenericContext {\n  init(params) {\n    this.gridId = params.gridId;\n    this.beans.context = this;\n    this.destroyCallback = params.destroyCallback;\n    super.init(params);\n  }\n  destroy() {\n    super.destroy();\n    _unRegisterGridModules(this.gridId);\n    this.destroyCallback?.();\n  }\n  getGridId() {\n    return this.gridId;\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/cssClassApplier.ts\nvar CSS_FIRST_COLUMN = \"ag-column-first\";\nvar CSS_LAST_COLUMN = \"ag-column-last\";\nfunction _getHeaderClassesFromColDef(abstractColDef, gos, column, columnGroup) {\n  if (_missing(abstractColDef)) {\n    return [];\n  }\n  return getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gos, column, columnGroup);\n}\nfunction _getToolPanelClassesFromColDef(abstractColDef, gos, column, columnGroup) {\n  if (_missing(abstractColDef)) {\n    return [];\n  }\n  return getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gos, column, columnGroup);\n}\nfunction refreshFirstAndLastStyles(comp, column, presentedColsService) {\n  comp.toggleCss(CSS_FIRST_COLUMN, presentedColsService.isColAtEdge(column, \"first\"));\n  comp.toggleCss(CSS_LAST_COLUMN, presentedColsService.isColAtEdge(column, \"last\"));\n}\nfunction getClassParams(abstractColDef, gos, column, columnGroup) {\n  return _addGridCommonParams(gos, {\n    // bad naming, as colDef here can be a group or a column,\n    // however most people won't appreciate the difference,\n    // so keeping it as colDef to avoid confusion.\n    colDef: abstractColDef,\n    column,\n    columnGroup\n  });\n}\nfunction getColumnClassesFromCollDef(classesOrFunc, abstractColDef, gos, column, columnGroup) {\n  if (_missing(classesOrFunc)) {\n    return [];\n  }\n  let classToUse;\n  if (typeof classesOrFunc === \"function\") {\n    const params = getClassParams(abstractColDef, gos, column, columnGroup);\n    classToUse = classesOrFunc(params);\n  } else {\n    classToUse = classesOrFunc;\n  }\n  if (typeof classToUse === \"string\") {\n    return [classToUse];\n  }\n  if (Array.isArray(classToUse)) {\n    return [...classToUse];\n  }\n  return [];\n}\n\n// packages/ag-grid-community/src/pinnedRowModel/pinnedRowUtils.ts\nfunction _isManualPinnedRow(rowNode) {\n  return !!(rowNode.rowPinned && rowNode.pinnedSibling);\n}\nfunction _getNodesInRangeForSelection(rowModel, float, start, end) {\n  const isTop = float === \"top\";\n  if (!start) {\n    return _getNodesInRangeForSelection(\n      rowModel,\n      float,\n      isTop ? rowModel.getPinnedTopRow(0) : rowModel.getPinnedBottomRow(0),\n      end\n    );\n  }\n  if (!end) {\n    const count = isTop ? rowModel.getPinnedTopRowCount() : rowModel.getPinnedBottomRowCount();\n    return _getNodesInRangeForSelection(\n      rowModel,\n      float,\n      start,\n      isTop ? rowModel.getPinnedTopRow(count - 1) : rowModel.getPinnedBottomRow(count - 1)\n    );\n  }\n  let started = false;\n  let finished = false;\n  const range = [];\n  rowModel.forEachPinnedRow(float, (node) => {\n    if (node === start && !started) {\n      started = true;\n      range.push(node);\n      return;\n    }\n    if (started && node === end) {\n      finished = true;\n      range.push(node);\n      return;\n    }\n    if (started && !finished) {\n      range.push(node);\n    }\n  });\n  return range;\n}\n\n// packages/ag-grid-community/src/constants/keyCode.ts\nvar KeyCode = {\n  BACKSPACE: \"Backspace\",\n  TAB: \"Tab\",\n  ENTER: \"Enter\",\n  ESCAPE: \"Escape\",\n  SPACE: \" \",\n  LEFT: \"ArrowLeft\",\n  UP: \"ArrowUp\",\n  RIGHT: \"ArrowRight\",\n  DOWN: \"ArrowDown\",\n  DELETE: \"Delete\",\n  F2: \"F2\",\n  PAGE_UP: \"PageUp\",\n  PAGE_DOWN: \"PageDown\",\n  PAGE_HOME: \"Home\",\n  PAGE_END: \"End\",\n  // these should be used with `event.code` instead of `event.key`\n  // as `event.key` changes when non-latin keyboards are used\n  A: \"KeyA\",\n  C: \"KeyC\",\n  D: \"KeyD\",\n  V: \"KeyV\",\n  X: \"KeyX\",\n  Y: \"KeyY\",\n  Z: \"KeyZ\"\n};\n\n// packages/ag-grid-community/src/utils/focus.ts\nvar keyboardModeActive = false;\nvar instanceCount = 0;\nfunction addKeyboardModeEvents(doc) {\n  if (instanceCount > 0) {\n    return;\n  }\n  doc.addEventListener(\"keydown\", toggleKeyboardMode);\n  doc.addEventListener(\"mousedown\", toggleKeyboardMode);\n}\nfunction removeKeyboardModeEvents(doc) {\n  if (instanceCount > 0)\n    return;\n  doc.removeEventListener(\"keydown\", toggleKeyboardMode);\n  doc.removeEventListener(\"mousedown\", toggleKeyboardMode);\n}\nfunction toggleKeyboardMode(event) {\n  const isKeyboardActive = keyboardModeActive;\n  const isKeyboardEvent = event.type === \"keydown\";\n  if (isKeyboardEvent) {\n    if (event.ctrlKey || event.metaKey || event.altKey) {\n      return;\n    }\n  }\n  if (isKeyboardActive === isKeyboardEvent) {\n    return;\n  }\n  keyboardModeActive = isKeyboardEvent;\n}\nfunction _registerKeyboardFocusEvents(beans) {\n  const eDocument = _getDocument(beans);\n  addKeyboardModeEvents(eDocument);\n  instanceCount++;\n  return () => {\n    instanceCount--;\n    removeKeyboardModeEvents(eDocument);\n  };\n}\nfunction _isKeyboardMode() {\n  return keyboardModeActive;\n}\nfunction _addFocusableContainerListener(beans, comp, eGui) {\n  comp.addManagedElementListeners(eGui, {\n    keydown: (e) => {\n      if (!e.defaultPrevented && e.key === KeyCode.TAB) {\n        const backwards = e.shiftKey;\n        if (!_findNextFocusableElement(beans, eGui, false, backwards)) {\n          if (_focusNextGridCoreContainer(beans, backwards)) {\n            e.preventDefault();\n          }\n        }\n      }\n    }\n  });\n}\nfunction _findFocusableElements(rootNode, exclude, onlyUnmanaged = false) {\n  const focusableString = FOCUSABLE_SELECTOR;\n  let excludeString = FOCUSABLE_EXCLUDE;\n  if (exclude) {\n    excludeString += \", \" + exclude;\n  }\n  if (onlyUnmanaged) {\n    excludeString += ', [tabindex=\"-1\"]';\n  }\n  const nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString)).filter((node) => {\n    return _isVisible(node);\n  });\n  const excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));\n  if (!excludeNodes.length) {\n    return nodes;\n  }\n  const diff = (a, b) => a.filter((element) => b.indexOf(element) === -1);\n  return diff(nodes, excludeNodes);\n}\nfunction _focusInto(rootNode, up = false, onlyUnmanaged = false, excludeTabGuards = false) {\n  const focusableElements = _findFocusableElements(\n    rootNode,\n    excludeTabGuards ? \".ag-tab-guard\" : null,\n    onlyUnmanaged\n  );\n  const toFocus = up ? _last(focusableElements) : focusableElements[0];\n  if (toFocus) {\n    toFocus.focus({ preventScroll: true });\n    return true;\n  }\n  return false;\n}\nfunction _findNextFocusableElement(beans, rootNode, onlyManaged, backwards) {\n  const focusable = _findFocusableElements(rootNode, onlyManaged ? ':not([tabindex=\"-1\"])' : null);\n  const activeEl = _getActiveDomElement(beans);\n  let currentIndex;\n  if (onlyManaged) {\n    currentIndex = focusable.findIndex((el) => el.contains(activeEl));\n  } else {\n    currentIndex = focusable.indexOf(activeEl);\n  }\n  const nextIndex = currentIndex + (backwards ? -1 : 1);\n  if (nextIndex < 0 || nextIndex >= focusable.length) {\n    return null;\n  }\n  return focusable[nextIndex];\n}\nfunction _findTabbableParent(node, limit = 5) {\n  let counter = 0;\n  while (node && _getTabIndex(node) === null && ++counter <= limit) {\n    node = node.parentElement;\n  }\n  if (_getTabIndex(node) === null) {\n    return null;\n  }\n  return node;\n}\nfunction _focusGridInnerElement(beans, fromBottom) {\n  return beans.ctrlsSvc.get(\"gridCtrl\").focusInnerElement(fromBottom);\n}\nfunction _isHeaderFocusSuppressed(beans) {\n  return beans.gos.get(\"suppressHeaderFocus\") || !!beans.overlays?.isExclusive();\n}\nfunction _isCellFocusSuppressed(beans) {\n  return beans.gos.get(\"suppressCellFocus\") || !!beans.overlays?.isExclusive();\n}\nfunction _focusNextGridCoreContainer(beans, backwards, forceOut = false) {\n  const gridCtrl = beans.ctrlsSvc.get(\"gridCtrl\");\n  if (!forceOut && gridCtrl.focusNextInnerContainer(backwards)) {\n    return true;\n  }\n  if (forceOut || !backwards && !gridCtrl.isDetailGrid()) {\n    gridCtrl.forceFocusOutOfContainer(backwards);\n  }\n  return false;\n}\n\n// packages/ag-grid-community/src/rendering/cell/cellKeyboardListenerFeature.ts\nfunction _isDeleteKey(key, alwaysReturnFalseOnBackspace = false) {\n  if (key === KeyCode.DELETE) {\n    return true;\n  }\n  if (!alwaysReturnFalseOnBackspace && key === KeyCode.BACKSPACE) {\n    return _isMacOsUserAgent();\n  }\n  return false;\n}\nvar CellKeyboardListenerFeature = class extends BeanStub {\n  constructor(cellCtrl, beans, rowNode, rowCtrl) {\n    super();\n    this.cellCtrl = cellCtrl;\n    this.rowNode = rowNode;\n    this.rowCtrl = rowCtrl;\n    this.beans = beans;\n  }\n  init() {\n    this.eGui = this.cellCtrl.eGui;\n  }\n  onKeyDown(event) {\n    const key = event.key;\n    switch (key) {\n      case KeyCode.ENTER:\n        this.onEnterKeyDown(event);\n        break;\n      case KeyCode.F2:\n        this.onF2KeyDown(event);\n        break;\n      case KeyCode.ESCAPE:\n        this.onEscapeKeyDown(event);\n        break;\n      case KeyCode.TAB:\n        this.onTabKeyDown(event);\n        break;\n      case KeyCode.BACKSPACE:\n      case KeyCode.DELETE:\n        this.onBackspaceOrDeleteKeyDown(key, event);\n        break;\n      case KeyCode.DOWN:\n      case KeyCode.UP:\n      case KeyCode.RIGHT:\n      case KeyCode.LEFT:\n        this.onNavigationKeyDown(event, key);\n        break;\n    }\n  }\n  onNavigationKeyDown(event, key) {\n    if (this.cellCtrl.editing) {\n      return;\n    }\n    if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {\n      this.onShiftRangeSelect(event);\n    } else {\n      const currentCellPosition = this.cellCtrl.getFocusedCellPosition();\n      this.beans.navigation?.navigateToNextCell(event, key, currentCellPosition, true);\n    }\n    event.preventDefault();\n  }\n  onShiftRangeSelect(event) {\n    const { rangeSvc, navigation } = this.beans;\n    if (!rangeSvc) {\n      return;\n    }\n    const endCell = rangeSvc.extendLatestRangeInDirection(event);\n    if (endCell) {\n      navigation?.ensureCellVisible(endCell);\n    }\n  }\n  onTabKeyDown(event) {\n    this.beans.navigation?.onTabKeyDown(this.cellCtrl, event);\n  }\n  onBackspaceOrDeleteKeyDown(key, event) {\n    const { cellCtrl, beans, rowNode } = this;\n    const { gos, rangeSvc, eventSvc } = beans;\n    if (cellCtrl.editing) {\n      return;\n    }\n    eventSvc.dispatchEvent({ type: \"keyShortcutChangedCellStart\" });\n    if (_isDeleteKey(key, gos.get(\"enableCellEditingOnBackspace\"))) {\n      if (rangeSvc && _isCellSelectionEnabled(gos)) {\n        rangeSvc.clearCellRangeCellValues({ dispatchWrapperEvents: true, wrapperEventSource: \"deleteKey\" });\n      } else if (cellCtrl.isCellEditable()) {\n        const { column } = cellCtrl;\n        const emptyValue = this.beans.valueSvc.getDeleteValue(column, rowNode);\n        rowNode.setDataValue(column, emptyValue, \"cellClear\");\n      }\n    } else {\n      beans.editSvc?.startRowOrCellEdit(cellCtrl, key, event);\n    }\n    eventSvc.dispatchEvent({ type: \"keyShortcutChangedCellEnd\" });\n  }\n  onEnterKeyDown(e) {\n    const { cellCtrl, beans } = this;\n    if (cellCtrl.editing || this.rowCtrl.editing) {\n      this.beans.editSvc?.stopRowOrCellEdit(cellCtrl, false, false, e.shiftKey);\n    } else {\n      if (beans.gos.get(\"enterNavigatesVertically\")) {\n        const key = e.shiftKey ? KeyCode.UP : KeyCode.DOWN;\n        beans.navigation?.navigateToNextCell(null, key, cellCtrl.cellPosition, false);\n      } else {\n        beans.editSvc?.startRowOrCellEdit(cellCtrl, KeyCode.ENTER, e);\n        if (cellCtrl.editing) {\n          e.preventDefault();\n        }\n      }\n    }\n  }\n  onF2KeyDown(event) {\n    const { cellCtrl, beans } = this;\n    if (!cellCtrl.editing) {\n      beans.editSvc?.startRowOrCellEdit(cellCtrl, KeyCode.F2, event);\n    }\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onEscapeKeyDown(event) {\n    const { cellCtrl, beans } = this;\n    if (cellCtrl.editing) {\n      beans.editSvc?.stopRowOrCellEdit(cellCtrl, true);\n    }\n  }\n  processCharacter(event) {\n    const eventTarget = event.target;\n    const eventOnChildComponent = eventTarget !== this.eGui;\n    if (eventOnChildComponent || this.cellCtrl.editing) {\n      return;\n    }\n    const key = event.key;\n    if (key === KeyCode.SPACE) {\n      this.onSpaceKeyDown(event);\n    } else {\n      if (this.beans.editSvc?.startRowOrCellEdit(this.cellCtrl, key, event)) {\n        event.preventDefault();\n      }\n    }\n  }\n  onSpaceKeyDown(event) {\n    const { gos } = this.beans;\n    if (!this.cellCtrl.editing && _isRowSelection(gos)) {\n      this.beans.selectionSvc?.handleSelectionEvent(event, this.rowNode, \"spaceKey\");\n    }\n    event.preventDefault();\n  }\n  destroy() {\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellMouseListenerFeature.ts\nvar CellMouseListenerFeature = class extends BeanStub {\n  constructor(cellCtrl, beans, column) {\n    super();\n    this.cellCtrl = cellCtrl;\n    this.column = column;\n    this.beans = beans;\n  }\n  onMouseEvent(eventName, mouseEvent) {\n    if (_isStopPropagationForAgGrid(mouseEvent)) {\n      return;\n    }\n    switch (eventName) {\n      case \"click\":\n        this.onCellClicked(mouseEvent);\n        break;\n      case \"mousedown\":\n      case \"touchstart\":\n        this.onMouseDown(mouseEvent);\n        break;\n      case \"dblclick\":\n        this.onCellDoubleClicked(mouseEvent);\n        break;\n      case \"mouseout\":\n        this.onMouseOut(mouseEvent);\n        break;\n      case \"mouseover\":\n        this.onMouseOver(mouseEvent);\n        break;\n    }\n  }\n  onCellClicked(mouseEvent) {\n    if (this.beans.touchSvc?.handleCellDoubleClick(this, mouseEvent)) {\n      return;\n    }\n    const { eventSvc, rangeSvc, gos, editSvc } = this.beans;\n    const isMultiKey = mouseEvent.ctrlKey || mouseEvent.metaKey;\n    if (rangeSvc && isMultiKey) {\n      if (rangeSvc.getCellRangeCount(this.cellCtrl.cellPosition) > 1) {\n        rangeSvc.intersectLastRange(true);\n      }\n    }\n    const cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, \"cellClicked\");\n    eventSvc.dispatchEvent(cellClickedEvent);\n    const colDef = this.column.getColDef();\n    if (colDef.onCellClicked) {\n      window.setTimeout(() => {\n        this.beans.frameworkOverrides.wrapOutgoing(() => {\n          colDef.onCellClicked(cellClickedEvent);\n        });\n      }, 0);\n    }\n    const editOnSingleClick = (gos.get(\"singleClickEdit\") || colDef.singleClickEdit) && !gos.get(\"suppressClickEdit\");\n    if (editOnSingleClick && !(mouseEvent.shiftKey && rangeSvc?.getCellRanges().length != 0)) {\n      editSvc?.startRowOrCellEdit(this.cellCtrl, void 0, mouseEvent);\n    }\n  }\n  onCellDoubleClicked(mouseEvent) {\n    const { column, beans, cellCtrl } = this;\n    const { eventSvc, frameworkOverrides, gos, editSvc } = beans;\n    const colDef = column.getColDef();\n    const cellDoubleClickedEvent = cellCtrl.createEvent(mouseEvent, \"cellDoubleClicked\");\n    eventSvc.dispatchEvent(cellDoubleClickedEvent);\n    if (typeof colDef.onCellDoubleClicked === \"function\") {\n      window.setTimeout(() => {\n        frameworkOverrides.wrapOutgoing(() => {\n          colDef.onCellDoubleClicked(cellDoubleClickedEvent);\n        });\n      }, 0);\n    }\n    const editOnDoubleClick = !gos.get(\"singleClickEdit\") && !gos.get(\"suppressClickEdit\");\n    if (editOnDoubleClick) {\n      editSvc?.startRowOrCellEdit(cellCtrl, null, mouseEvent);\n    }\n  }\n  onMouseDown(mouseEvent) {\n    const { ctrlKey, metaKey, shiftKey } = mouseEvent;\n    const target = mouseEvent.target;\n    const { cellCtrl, beans } = this;\n    const { eventSvc, rangeSvc, rowNumbersSvc, focusSvc, gos } = beans;\n    if (this.isRightClickInExistingRange(mouseEvent)) {\n      return;\n    }\n    const hasRanges = rangeSvc && !rangeSvc.isEmpty();\n    const containsWidget = this.containsWidget(target);\n    const { cellPosition } = cellCtrl;\n    const isRowNumberColumn = isRowNumberCol(cellPosition.column);\n    if (rowNumbersSvc && isRowNumberColumn && !rowNumbersSvc.handleMouseDownOnCell(cellPosition, mouseEvent)) {\n      if (rangeSvc) {\n        mouseEvent.preventDefault();\n      }\n      mouseEvent.stopImmediatePropagation();\n      return;\n    }\n    if (!shiftKey || !hasRanges) {\n      const isEnableCellTextSelection = gos.get(\"enableCellTextSelection\");\n      const shouldFocus = isEnableCellTextSelection && mouseEvent.defaultPrevented;\n      const forceBrowserFocus = (_isBrowserSafari() || shouldFocus) && !cellCtrl.editing && !_isFocusableFormField(target) && !containsWidget;\n      cellCtrl.focusCell(forceBrowserFocus);\n    }\n    if (shiftKey && hasRanges && !focusSvc.isCellFocused(cellPosition)) {\n      mouseEvent.preventDefault();\n      const focusedCellPosition = focusSvc.getFocusedCell();\n      if (focusedCellPosition) {\n        const { column, rowIndex, rowPinned } = focusedCellPosition;\n        const focusedRowCtrl = beans.rowRenderer.getRowByPosition({ rowIndex, rowPinned });\n        const focusedCellCtrl = focusedRowCtrl?.getCellCtrl(column);\n        if (focusedCellCtrl?.editing) {\n          focusedCellCtrl.stopEditing();\n        }\n        focusSvc.setFocusedCell({\n          column,\n          rowIndex,\n          rowPinned,\n          forceBrowserFocus: true,\n          preventScrollOnBrowserFocus: true\n        });\n      }\n    }\n    if (containsWidget) {\n      return;\n    }\n    if (rangeSvc) {\n      if (isRowNumberColumn) {\n        mouseEvent.preventDefault();\n      }\n      if (shiftKey) {\n        rangeSvc.extendLatestRangeToCell(cellPosition);\n      } else {\n        const isMultiKey = ctrlKey || metaKey;\n        rangeSvc.setRangeToCell(cellPosition, isMultiKey);\n      }\n    }\n    eventSvc.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, \"cellMouseDown\"));\n  }\n  isRightClickInExistingRange(mouseEvent) {\n    const { rangeSvc } = this.beans;\n    if (rangeSvc) {\n      const cellInRange = rangeSvc.isCellInAnyRange(this.cellCtrl.cellPosition);\n      const isRightClick = mouseEvent.button === 2 || mouseEvent.ctrlKey && this.beans.gos.get(\"allowContextMenuWithControlKey\");\n      if (cellInRange && isRightClick) {\n        return true;\n      }\n    }\n    return false;\n  }\n  containsWidget(target) {\n    return _isElementChildOfClass(target, \"ag-selection-checkbox\", 3) || _isElementChildOfClass(target, \"ag-drag-handle\", 3);\n  }\n  onMouseOut(mouseEvent) {\n    if (this.mouseStayingInsideCell(mouseEvent)) {\n      return;\n    }\n    const { eventSvc, colHover } = this.beans;\n    eventSvc.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, \"cellMouseOut\"));\n    colHover?.clearMouseOver();\n  }\n  onMouseOver(mouseEvent) {\n    if (this.mouseStayingInsideCell(mouseEvent)) {\n      return;\n    }\n    const { eventSvc, colHover } = this.beans;\n    eventSvc.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, \"cellMouseOver\"));\n    colHover?.setMouseOver([this.column]);\n  }\n  mouseStayingInsideCell(e) {\n    if (!e.target || !e.relatedTarget) {\n      return false;\n    }\n    const eCell = this.cellCtrl.eGui;\n    const cellContainsTarget = eCell.contains(e.target);\n    const cellContainsRelatedTarget = eCell.contains(e.relatedTarget);\n    return cellContainsTarget && cellContainsRelatedTarget;\n  }\n  destroy() {\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellPositionFeature.ts\nvar CellPositionFeature = class extends BeanStub {\n  constructor(cellCtrl, beans) {\n    super();\n    this.cellCtrl = cellCtrl;\n    this.beans = beans;\n    this.column = cellCtrl.column;\n    this.rowNode = cellCtrl.rowNode;\n  }\n  setupRowSpan() {\n    this.rowSpan = this.column.getRowSpan(this.rowNode);\n    this.addManagedListeners(this.beans.eventSvc, { newColumnsLoaded: () => this.onNewColumnsLoaded() });\n  }\n  init() {\n    this.eSetLeft = this.cellCtrl.getRootElement();\n    this.eContent = this.cellCtrl.eGui;\n    const cellSpan = this.cellCtrl.getCellSpan();\n    if (!cellSpan) {\n      this.setupColSpan();\n      this.setupRowSpan();\n    }\n    this.onLeftChanged();\n    this.onWidthChanged();\n    if (!cellSpan) {\n      this._legacyApplyRowSpan();\n    }\n    if (cellSpan) {\n      const refreshSpanHeight = this.refreshSpanHeight.bind(this, cellSpan);\n      refreshSpanHeight();\n      this.addManagedListeners(this.beans.eventSvc, {\n        paginationChanged: refreshSpanHeight,\n        recalculateRowBounds: refreshSpanHeight,\n        pinnedHeightChanged: refreshSpanHeight\n      });\n    }\n  }\n  refreshSpanHeight(cellSpan) {\n    const spanHeight = cellSpan.getCellHeight();\n    if (spanHeight != null) {\n      this.eContent.style.height = `${spanHeight}px`;\n    }\n  }\n  onNewColumnsLoaded() {\n    const rowSpan = this.column.getRowSpan(this.rowNode);\n    if (this.rowSpan === rowSpan) {\n      return;\n    }\n    this.rowSpan = rowSpan;\n    this._legacyApplyRowSpan(true);\n  }\n  onDisplayColumnsChanged() {\n    const colsSpanning = this.getColSpanningList();\n    if (!_areEqual(this.colsSpanning, colsSpanning)) {\n      this.colsSpanning = colsSpanning;\n      this.onWidthChanged();\n      this.onLeftChanged();\n    }\n  }\n  setupColSpan() {\n    if (this.column.getColDef().colSpan == null) {\n      return;\n    }\n    this.colsSpanning = this.getColSpanningList();\n    this.addManagedListeners(this.beans.eventSvc, {\n      // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n      displayedColumnsChanged: this.onDisplayColumnsChanged.bind(this),\n      // because we are spanning over multiple cols, we check for width any time any cols width changes.\n      // this is expensive - really we should be explicitly checking only the cols we are spanning over\n      // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n      // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n      displayedColumnsWidthChanged: this.onWidthChanged.bind(this)\n    });\n  }\n  onWidthChanged() {\n    if (!this.eContent) {\n      return;\n    }\n    const width = this.getCellWidth();\n    this.eContent.style.width = `${width}px`;\n  }\n  getCellWidth() {\n    if (!this.colsSpanning) {\n      return this.column.getActualWidth();\n    }\n    return this.colsSpanning.reduce((width, col) => width + col.getActualWidth(), 0);\n  }\n  getColSpanningList() {\n    const { column, rowNode } = this;\n    const colSpan = column.getColSpan(rowNode);\n    const colsSpanning = [];\n    if (colSpan === 1) {\n      colsSpanning.push(column);\n    } else {\n      let pointer = column;\n      const pinned = column.getPinned();\n      for (let i = 0; pointer && i < colSpan; i++) {\n        colsSpanning.push(pointer);\n        pointer = this.beans.visibleCols.getColAfter(pointer);\n        if (!pointer || _missing(pointer)) {\n          break;\n        }\n        if (pinned !== pointer.getPinned()) {\n          break;\n        }\n      }\n    }\n    return colsSpanning;\n  }\n  onLeftChanged() {\n    if (!this.eSetLeft) {\n      return;\n    }\n    const left = this.modifyLeftForPrintLayout(this.getCellLeft());\n    this.eSetLeft.style.left = left + \"px\";\n  }\n  getCellLeft() {\n    let mostLeftCol;\n    if (this.beans.gos.get(\"enableRtl\") && this.colsSpanning) {\n      mostLeftCol = _last(this.colsSpanning);\n    } else {\n      mostLeftCol = this.column;\n    }\n    return mostLeftCol.getLeft();\n  }\n  modifyLeftForPrintLayout(leftPosition) {\n    if (!this.cellCtrl.printLayout || this.column.getPinned() === \"left\") {\n      return leftPosition;\n    }\n    const { visibleCols } = this.beans;\n    const leftWidth = visibleCols.getColsLeftWidth();\n    if (this.column.getPinned() === \"right\") {\n      const bodyWidth = visibleCols.bodyWidth;\n      return leftWidth + bodyWidth + (leftPosition || 0);\n    }\n    return leftWidth + (leftPosition || 0);\n  }\n  _legacyApplyRowSpan(force) {\n    if (this.rowSpan === 1 && !force) {\n      return;\n    }\n    const singleRowHeight = _getRowHeightAsNumber(this.beans);\n    const totalRowHeight = singleRowHeight * this.rowSpan;\n    this.eContent.style.height = `${totalRowHeight}px`;\n    this.eContent.style.zIndex = \"1\";\n  }\n  // overriding to make public, as we don't dispose this bean via context\n  destroy() {\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellCtrl.ts\nvar CSS_CELL = \"ag-cell\";\nvar CSS_AUTO_HEIGHT = \"ag-cell-auto-height\";\nvar CSS_NORMAL_HEIGHT = \"ag-cell-normal-height\";\nvar CSS_CELL_FOCUS = \"ag-cell-focus\";\nvar CSS_CELL_FIRST_RIGHT_PINNED = \"ag-cell-first-right-pinned\";\nvar CSS_CELL_LAST_LEFT_PINNED = \"ag-cell-last-left-pinned\";\nvar CSS_CELL_NOT_INLINE_EDITING = \"ag-cell-not-inline-editing\";\nvar CSS_CELL_WRAP_TEXT = \"ag-cell-wrap-text\";\nvar DOM_DATA_KEY_CELL_CTRL = \"cellCtrl\";\nfunction _getCellCtrlForEventTarget(gos, eventTarget) {\n  return _getCtrlForEventTarget(gos, eventTarget, DOM_DATA_KEY_CELL_CTRL);\n}\nvar instanceIdSequence2 = 0;\nvar CellCtrl = class extends BeanStub {\n  constructor(column, rowNode, beans, rowCtrl) {\n    super();\n    this.column = column;\n    this.rowNode = rowNode;\n    this.rowCtrl = rowCtrl;\n    this.rangeFeature = void 0;\n    this.rowResizeFeature = void 0;\n    this.positionFeature = void 0;\n    this.customStyleFeature = void 0;\n    this.tooltipFeature = void 0;\n    this.mouseListener = void 0;\n    this.keyboardListener = void 0;\n    this.suppressRefreshCell = false;\n    this.onCompAttachedFuncs = [];\n    this.onEditorAttachedFuncs = [];\n    this.focusEventWhileNotReady = null;\n    // if cell has been focused, check if it's focused when destroyed\n    this.hasBeenFocused = false;\n    this.beans = beans;\n    const { colId } = column;\n    this.instanceId = colId + \"-\" + instanceIdSequence2++;\n    this.createCellPosition();\n    this.updateAndFormatValue(false);\n  }\n  addFeatures() {\n    const { beans } = this;\n    this.positionFeature = new CellPositionFeature(this, beans);\n    this.customStyleFeature = beans.cellStyles?.createCellCustomStyleFeature(this, beans);\n    this.mouseListener = new CellMouseListenerFeature(this, beans, this.column);\n    this.keyboardListener = new CellKeyboardListenerFeature(this, beans, this.rowNode, this.rowCtrl);\n    if (this.column.isTooltipEnabled()) {\n      this.enableTooltipFeature();\n    }\n    const { rangeSvc } = beans;\n    const cellSelectionEnabled = rangeSvc && _isCellSelectionEnabled(beans.gos);\n    if (cellSelectionEnabled) {\n      this.rangeFeature = rangeSvc.createCellRangeFeature(beans, this);\n    }\n    if (isRowNumberCol(this.column)) {\n      this.rowResizeFeature = this.beans.rowNumbersSvc.createRowNumbersRowResizerFeature(beans, this);\n    }\n  }\n  isCellSpanning() {\n    return false;\n  }\n  getCellSpan() {\n    return void 0;\n  }\n  removeFeatures() {\n    const context = this.beans.context;\n    this.positionFeature = context.destroyBean(this.positionFeature);\n    this.customStyleFeature = context.destroyBean(this.customStyleFeature);\n    this.mouseListener = context.destroyBean(this.mouseListener);\n    this.keyboardListener = context.destroyBean(this.keyboardListener);\n    this.rangeFeature = context.destroyBean(this.rangeFeature);\n    this.rowResizeFeature = context.destroyBean(this.rowResizeFeature);\n    this.disableTooltipFeature();\n  }\n  enableTooltipFeature(value, shouldDisplayTooltip) {\n    this.tooltipFeature = this.beans.tooltipSvc?.enableCellTooltipFeature(this, value, shouldDisplayTooltip);\n  }\n  disableTooltipFeature() {\n    this.tooltipFeature = this.beans.context.destroyBean(this.tooltipFeature);\n  }\n  setComp(comp, eCell, _eWrapper, eCellWrapper, printLayout, startEditing, compBean) {\n    this.comp = comp;\n    this.eGui = eCell;\n    this.printLayout = printLayout;\n    compBean ?? (compBean = this);\n    this.addDomData(compBean);\n    this.addFeatures();\n    compBean.addDestroyFunc(() => this.removeFeatures());\n    this.onSuppressCellFocusChanged(this.beans.gos.get(\"suppressCellFocus\"));\n    this.setupFocus();\n    this.applyStaticCssClasses();\n    this.setWrapText();\n    this.onFirstRightPinnedChanged();\n    this.onLastLeftPinnedChanged();\n    this.onColumnHover();\n    this.setupControlComps();\n    this.setupAutoHeight(eCellWrapper, compBean);\n    this.refreshFirstAndLastStyles();\n    this.refreshAriaColIndex();\n    this.positionFeature?.init();\n    this.customStyleFeature?.setComp(comp);\n    this.tooltipFeature?.refreshTooltip();\n    this.keyboardListener?.init();\n    this.rangeFeature?.setComp(comp);\n    this.rowResizeFeature?.refreshRowResizer();\n    if (startEditing && this.isCellEditable()) {\n      this.beans.editSvc?.startEditing(this);\n    } else {\n      this.showValue(false, true);\n    }\n    if (this.onCompAttachedFuncs.length) {\n      this.onCompAttachedFuncs.forEach((func) => func());\n      this.onCompAttachedFuncs = [];\n    }\n  }\n  setupAutoHeight(eCellWrapper, compBean) {\n    this.isAutoHeight = this.beans.rowAutoHeight?.setupCellAutoHeight(this, eCellWrapper, compBean) ?? false;\n  }\n  getCellAriaRole() {\n    return this.column.getColDef().cellAriaRole ?? \"gridcell\";\n  }\n  isCellRenderer() {\n    const colDef = this.column.getColDef();\n    return colDef.cellRenderer != null || colDef.cellRendererSelector != null;\n  }\n  getValueToDisplay() {\n    return this.valueFormatted ?? this.value;\n  }\n  showValue(forceNewCellRendererInstance, skipRangeHandleRefresh) {\n    const { beans, column, rowNode, rangeFeature } = this;\n    const { userCompFactory } = beans;\n    const valueToDisplay = this.getValueToDisplay();\n    let compDetails;\n    const isSsrmLoading = rowNode.stub && rowNode.groupData?.[column.getId()] == null;\n    const colDef = column.getColDef();\n    if (isSsrmLoading || this.isCellRenderer()) {\n      const params = this.createCellRendererParams();\n      if (!isSsrmLoading || isRowNumberCol(column)) {\n        compDetails = _getCellRendererDetails(userCompFactory, colDef, params);\n      } else {\n        compDetails = _getLoadingCellRendererDetails(userCompFactory, colDef, params);\n      }\n    }\n    if (!compDetails && !isSsrmLoading && beans.findSvc?.isMatch(rowNode, column)) {\n      const params = this.createCellRendererParams();\n      compDetails = _getCellRendererDetails(\n        userCompFactory,\n        { ...column.getColDef(), cellRenderer: \"agFindCellRenderer\" },\n        params\n      );\n    }\n    this.comp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);\n    if (!skipRangeHandleRefresh && rangeFeature) {\n      _requestAnimationFrame(beans, () => rangeFeature?.refreshHandle());\n    }\n    this.rowResizeFeature?.refreshRowResizer();\n  }\n  setupControlComps() {\n    const colDef = this.column.getColDef();\n    this.includeSelection = this.isIncludeControl(this.isCheckboxSelection(colDef), true);\n    this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);\n    this.includeDndSource = this.isIncludeControl(colDef.dndSource);\n    this.comp.setIncludeSelection(this.includeSelection);\n    this.comp.setIncludeDndSource(this.includeDndSource);\n    this.comp.setIncludeRowDrag(this.includeRowDrag);\n  }\n  isForceWrapper() {\n    return this.beans.gos.get(\"enableCellTextSelection\") || this.column.isAutoHeight();\n  }\n  /**\n   * Wrapper providing general conditions under which control elements (e.g. checkboxes and drag handles)\n   * are rendered for a particular cell.\n   * @param value Whether to render the control in the specific context of the caller\n   * @param allowManuallyPinned Whether manually pinned rows are permitted this form of control element\n   */\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  isIncludeControl(value, allowManuallyPinned = false) {\n    const rowUnpinned = this.rowNode.rowPinned == null;\n    return (rowUnpinned || allowManuallyPinned && _isManualPinnedRow(this.rowNode)) && !!value;\n  }\n  isCheckboxSelection(colDef) {\n    const { rowSelection, groupDisplayType } = this.beans.gridOptions;\n    const checkboxLocation = _getCheckboxLocation(rowSelection);\n    const isSelectionColumn = isColumnSelectionCol(this.column);\n    if (groupDisplayType === \"custom\" && checkboxLocation !== \"selectionColumn\" && isSelectionColumn) {\n      return false;\n    }\n    return colDef.checkboxSelection || isSelectionColumn && typeof rowSelection === \"object\" && _getCheckboxes(rowSelection);\n  }\n  refreshShouldDestroy() {\n    const colDef = this.column.getColDef();\n    const selectionChanged = this.includeSelection != this.isIncludeControl(this.isCheckboxSelection(colDef), true);\n    const rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);\n    const dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);\n    const autoHeightChanged = this.isAutoHeight != this.column.isAutoHeight();\n    return selectionChanged || rowDragChanged || dndSourceChanged || autoHeightChanged;\n  }\n  onPopupEditorClosed() {\n    if (!this.editing) {\n      return;\n    }\n    this.beans.editSvc?.stopRowOrCellEdit(this);\n  }\n  /**\n   * Ends the Cell Editing\n   * @param cancel `True` if the edit process is being canceled.\n   * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.\n   */\n  stopEditing(cancel = false) {\n    return this.beans.editSvc?.stopEditing(this, cancel) ?? false;\n  }\n  createCellRendererParams() {\n    const {\n      value,\n      valueFormatted,\n      column,\n      rowNode,\n      comp,\n      eGui,\n      beans: { valueSvc, gos }\n    } = this;\n    const res = _addGridCommonParams(gos, {\n      value,\n      valueFormatted,\n      getValue: () => valueSvc.getValueForDisplay(column, rowNode).value,\n      setValue: (value2) => valueSvc.setValue(rowNode, column, value2),\n      formatValue: this.formatValue.bind(this),\n      data: rowNode.data,\n      node: rowNode,\n      pinned: column.getPinned(),\n      colDef: column.getColDef(),\n      column,\n      refreshCell: this.refreshCell.bind(this),\n      eGridCell: eGui,\n      eParentOfValue: comp.getParentOfValue(),\n      registerRowDragger: (rowDraggerElement, dragStartPixels, value2, suppressVisibilityChange) => this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange),\n      setTooltip: (value2, shouldDisplayTooltip) => {\n        gos.assertModuleRegistered(\"Tooltip\", 3);\n        if (this.tooltipFeature) {\n          this.disableTooltipFeature();\n        }\n        this.enableTooltipFeature(value2, shouldDisplayTooltip);\n        this.tooltipFeature?.refreshTooltip();\n      }\n    });\n    return res;\n  }\n  onCellChanged(event) {\n    const eventImpactsThisCell = event.column === this.column;\n    if (eventImpactsThisCell) {\n      this.refreshCell({});\n    }\n  }\n  refreshOrDestroyCell(params) {\n    if (this.refreshShouldDestroy()) {\n      this.rowCtrl?.recreateCell(this);\n    } else {\n      this.refreshCell(params);\n    }\n  }\n  // + stop editing {forceRefresh: true, suppressFlash: true}\n  // + event cellChanged {}\n  // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n  // + rowCtrl: event dataChanged {suppressFlash: !update, newData: !update}\n  // + rowCtrl: api refreshCells() {animate: true/false}\n  // + rowRenderer: api softRefreshView() {}\n  refreshCell(params) {\n    if (this.suppressRefreshCell || this.editing) {\n      return;\n    }\n    const colDef = this.column.getColDef();\n    const newData = params != null && !!params.newData;\n    const suppressFlash = params != null && !!params.suppressFlash;\n    const noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;\n    const forceRefresh = params && params.forceRefresh || noValueProvided || newData;\n    const isCellCompReady = !!this.comp;\n    const valuesDifferent = this.updateAndFormatValue(isCellCompReady);\n    const dataNeedsUpdating = forceRefresh || valuesDifferent;\n    if (!isCellCompReady) {\n      return;\n    }\n    if (dataNeedsUpdating) {\n      this.showValue(newData, false);\n      const processingFilterChange = this.beans.filterManager?.isSuppressFlashingCellsBecauseFiltering();\n      const flashCell = !suppressFlash && !processingFilterChange && colDef.enableCellChangeFlash;\n      if (flashCell) {\n        this.beans.cellFlashSvc?.flashCell(this);\n      }\n      this.customStyleFeature?.applyUserStyles();\n      this.customStyleFeature?.applyClassesFromColDef();\n    }\n    this.tooltipFeature?.refreshTooltip();\n    this.customStyleFeature?.applyCellClassRules();\n  }\n  isCellEditable() {\n    return this.column.isCellEditable(this.rowNode);\n  }\n  formatValue(value) {\n    return this.callValueFormatter(value) ?? value;\n  }\n  callValueFormatter(value) {\n    return this.beans.valueSvc.formatValue(this.column, this.rowNode, value);\n  }\n  updateAndFormatValue(compareValues) {\n    const oldValue = this.value;\n    const oldValueFormatted = this.valueFormatted;\n    const { value, valueFormatted } = this.beans.valueSvc.getValueForDisplay(this.column, this.rowNode, true);\n    this.value = value;\n    this.valueFormatted = valueFormatted;\n    if (compareValues) {\n      return !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;\n    }\n    return true;\n  }\n  valuesAreEqual(val1, val2) {\n    const colDef = this.column.getColDef();\n    return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;\n  }\n  addDomData(compBean) {\n    const element = this.eGui;\n    _setDomData(this.beans.gos, element, DOM_DATA_KEY_CELL_CTRL, this);\n    compBean.addDestroyFunc(() => _setDomData(this.beans.gos, element, DOM_DATA_KEY_CELL_CTRL, null));\n  }\n  createEvent(domEvent, eventType) {\n    const { rowNode, column, value, beans } = this;\n    const event = _addGridCommonParams(beans.gos, {\n      type: eventType,\n      node: rowNode,\n      data: rowNode.data,\n      value,\n      column,\n      colDef: column.getColDef(),\n      rowPinned: rowNode.rowPinned,\n      event: domEvent,\n      rowIndex: rowNode.rowIndex\n    });\n    return event;\n  }\n  processCharacter(event) {\n    this.keyboardListener?.processCharacter(event);\n  }\n  onKeyDown(event) {\n    this.keyboardListener?.onKeyDown(event);\n  }\n  onMouseEvent(eventName, mouseEvent) {\n    this.mouseListener?.onMouseEvent(eventName, mouseEvent);\n  }\n  getColSpanningList() {\n    return this.positionFeature.getColSpanningList();\n  }\n  onLeftChanged() {\n    if (!this.comp) {\n      return;\n    }\n    this.positionFeature?.onLeftChanged();\n  }\n  onDisplayedColumnsChanged() {\n    if (!this.eGui) {\n      return;\n    }\n    this.refreshAriaColIndex();\n    this.refreshFirstAndLastStyles();\n  }\n  refreshFirstAndLastStyles() {\n    const { comp, column, beans } = this;\n    refreshFirstAndLastStyles(comp, column, beans.visibleCols);\n  }\n  refreshAriaColIndex() {\n    const colIdx = this.beans.visibleCols.getAriaColIndex(this.column);\n    _setAriaColIndex(this.eGui, colIdx);\n  }\n  onWidthChanged() {\n    return this.positionFeature?.onWidthChanged();\n  }\n  getRowPosition() {\n    const { rowIndex, rowPinned } = this.cellPosition;\n    return {\n      rowIndex,\n      rowPinned\n    };\n  }\n  updateRangeBordersIfRangeCount() {\n    if (!this.comp) {\n      return;\n    }\n    this.rangeFeature?.updateRangeBordersIfRangeCount();\n  }\n  onCellSelectionChanged() {\n    if (!this.comp) {\n      return;\n    }\n    this.rangeFeature?.onCellSelectionChanged();\n  }\n  isRangeSelectionEnabled() {\n    return this.rangeFeature != null;\n  }\n  focusCell(forceBrowserFocus = false) {\n    this.beans.focusSvc.setFocusedCell({\n      ...this.getFocusedCellPosition(),\n      forceBrowserFocus\n    });\n  }\n  /**\n   * Restores focus to the cell, if it should have it\n   * @param waitForRender if the cell has just setComp, it may not be rendered yet, so we wait for the next render\n   */\n  restoreFocus(waitForRender = false) {\n    if (!this.comp || this.editing || !this.isCellFocused() || !this.beans.focusSvc.shouldTakeFocus()) {\n      return;\n    }\n    const focus = () => {\n      if (!this.isAlive()) {\n        return;\n      }\n      const focusableElement = this.comp.getFocusableElement();\n      if (this.isCellFocused()) {\n        focusableElement.focus({ preventScroll: true });\n      }\n    };\n    if (waitForRender) {\n      setTimeout(focus, 0);\n      return;\n    }\n    focus();\n  }\n  onRowIndexChanged() {\n    this.createCellPosition();\n    this.onCellFocused();\n    this.restoreFocus();\n    this.rangeFeature?.onCellSelectionChanged();\n    this.rowResizeFeature?.refreshRowResizer();\n  }\n  onSuppressCellFocusChanged(suppressCellFocus) {\n    const element = this.eGui;\n    if (!element) {\n      return;\n    }\n    if (isRowNumberCol(this.column)) {\n      suppressCellFocus = true;\n    }\n    _addOrRemoveAttribute(element, \"tabindex\", suppressCellFocus ? void 0 : -1);\n  }\n  onFirstRightPinnedChanged() {\n    if (!this.comp) {\n      return;\n    }\n    const firstRightPinned = this.column.isFirstRightPinned();\n    this.comp.toggleCss(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);\n  }\n  onLastLeftPinnedChanged() {\n    if (!this.comp) {\n      return;\n    }\n    const lastLeftPinned = this.column.isLastLeftPinned();\n    this.comp.toggleCss(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);\n  }\n  /**\n   * Returns whether cell is focused by the focusSvc, overridden by spannedCellCtrl\n   */\n  checkCellFocused() {\n    return this.beans.focusSvc.isCellFocused(this.cellPosition);\n  }\n  isCellFocused() {\n    const isFocused = this.checkCellFocused();\n    this.hasBeenFocused || (this.hasBeenFocused = isFocused);\n    return isFocused;\n  }\n  setupFocus() {\n    this.restoreFocus(true);\n    this.onCellFocused(this.focusEventWhileNotReady ?? void 0);\n  }\n  onCellFocused(event) {\n    const { beans } = this;\n    if (_isCellFocusSuppressed(beans)) {\n      return;\n    }\n    if (!this.comp) {\n      if (event) {\n        this.focusEventWhileNotReady = event;\n      }\n      return;\n    }\n    const cellFocused = this.isCellFocused();\n    this.comp.toggleCss(CSS_CELL_FOCUS, cellFocused);\n    if (cellFocused && event && event.forceBrowserFocus) {\n      let focusEl = this.comp.getFocusableElement();\n      if (this.editing) {\n        const focusableEls = _findFocusableElements(focusEl, null, true);\n        if (focusableEls.length) {\n          focusEl = focusableEls[0];\n        }\n      }\n      focusEl.focus({ preventScroll: !!event.preventScrollOnBrowserFocus });\n    }\n    const fullRowEdit = beans.gos.get(\"editType\") === \"fullRow\";\n    if (!cellFocused && !fullRowEdit && this.editing) {\n      beans.editSvc?.stopRowOrCellEdit(this);\n    }\n    if (cellFocused) {\n      this.rowCtrl.announceDescription();\n    }\n  }\n  createCellPosition() {\n    const { rowIndex, rowPinned } = this.rowNode;\n    this.cellPosition = {\n      rowIndex,\n      rowPinned: _makeNull(rowPinned),\n      column: this.column\n    };\n  }\n  setInlineEditingCss() {\n    this.beans.editSvc?.setInlineEditingCss(this.rowCtrl);\n  }\n  // CSS Classes that only get applied once, they never change\n  applyStaticCssClasses() {\n    const { comp } = this;\n    comp.toggleCss(CSS_CELL, true);\n    comp.toggleCss(CSS_CELL_NOT_INLINE_EDITING, true);\n    const autoHeight = this.column.isAutoHeight() == true;\n    comp.toggleCss(CSS_AUTO_HEIGHT, autoHeight);\n    comp.toggleCss(CSS_NORMAL_HEIGHT, !autoHeight);\n  }\n  onColumnHover() {\n    this.beans.colHover?.onCellColumnHover(this.column, this.comp);\n  }\n  onColDefChanged() {\n    if (!this.comp) {\n      return;\n    }\n    if (this.column.isTooltipEnabled()) {\n      this.disableTooltipFeature();\n      this.enableTooltipFeature();\n    } else {\n      this.disableTooltipFeature();\n    }\n    this.setWrapText();\n    if (!this.editing) {\n      this.refreshOrDestroyCell({ forceRefresh: true, suppressFlash: true });\n    } else {\n      this.beans.editSvc?.handleColDefChanged(this);\n    }\n  }\n  setWrapText() {\n    const value = this.column.getColDef().wrapText == true;\n    this.comp.toggleCss(CSS_CELL_WRAP_TEXT, value);\n  }\n  dispatchCellContextMenuEvent(event) {\n    const colDef = this.column.getColDef();\n    const cellContextMenuEvent = this.createEvent(event, \"cellContextMenu\");\n    const { beans } = this;\n    beans.eventSvc.dispatchEvent(cellContextMenuEvent);\n    if (colDef.onCellContextMenu) {\n      window.setTimeout(() => {\n        beans.frameworkOverrides.wrapOutgoing(() => {\n          colDef.onCellContextMenu(cellContextMenuEvent);\n        });\n      }, 0);\n    }\n  }\n  getCellRenderer() {\n    return this.comp?.getCellRenderer() ?? null;\n  }\n  destroy() {\n    this.onCompAttachedFuncs = [];\n    this.onEditorAttachedFuncs = [];\n    if (this.isCellFocused() && this.hasBrowserFocus()) {\n      this.beans.focusSvc.attemptToRecoverFocus();\n    }\n    super.destroy();\n  }\n  hasBrowserFocus() {\n    return this.eGui?.contains(_getActiveDomElement(this.beans)) ?? false;\n  }\n  createSelectionCheckbox() {\n    const cbSelectionComponent = this.beans.selectionSvc?.createCheckboxSelectionComponent();\n    if (!cbSelectionComponent) {\n      return void 0;\n    }\n    this.beans.context.createBean(cbSelectionComponent);\n    cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });\n    return cbSelectionComponent;\n  }\n  createDndSource() {\n    const dndSourceComp = this.beans.registry.createDynamicBean(\n      \"dndSourceComp\",\n      false,\n      this.rowNode,\n      this.column,\n      this.eGui\n    );\n    if (dndSourceComp) {\n      this.beans.context.createBean(dndSourceComp);\n    }\n    return dndSourceComp;\n  }\n  registerRowDragger(customElement, dragStartPixels, suppressVisibilityChange) {\n    if (this.customRowDragComp) {\n      this.customRowDragComp.setDragElement(customElement, dragStartPixels);\n      return;\n    }\n    const newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);\n    if (newComp) {\n      this.customRowDragComp = newComp;\n      this.addDestroyFunc(() => {\n        this.beans.context.destroyBean(newComp);\n        this.customRowDragComp = null;\n      });\n    }\n  }\n  createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange) {\n    const rowDragComp = this.beans.rowDragSvc?.createRowDragCompForCell(\n      this.rowNode,\n      this.column,\n      () => this.value,\n      customElement,\n      dragStartPixels,\n      suppressVisibilityChange\n    );\n    if (!rowDragComp) {\n      return void 0;\n    }\n    this.beans.context.createBean(rowDragComp);\n    return rowDragComp;\n  }\n  cellEditorAttached() {\n    this.onEditorAttachedFuncs.forEach((func) => func());\n    this.onEditorAttachedFuncs = [];\n  }\n  setFocusedCellPosition(_cellPosition) {\n  }\n  getFocusedCellPosition() {\n    return this.cellPosition;\n  }\n  // used by spannedCellCtrl\n  refreshAriaRowIndex() {\n  }\n  /**\n   * Returns the root element of the cell, could be a span container rather than the cell element.\n   * @returns The root element of the cell.\n   */\n  getRootElement() {\n    return this.eGui;\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/mouseEventUtils.ts\nvar GRID_DOM_KEY = \"__ag_grid_instance\";\nfunction _stampTopLevelGridCompWithGridInstance(gos, eGridDiv) {\n  eGridDiv[GRID_DOM_KEY] = gos.gridInstanceId;\n}\nfunction _isEventFromThisGrid(gos, event) {\n  const res = _isElementInThisGrid(gos, event.target);\n  return res;\n}\nfunction _isElementInThisGrid(gos, element) {\n  let pointer = element;\n  while (pointer) {\n    const instanceId = pointer[GRID_DOM_KEY];\n    if (_exists(instanceId)) {\n      const eventFromThisGrid = instanceId === gos.gridInstanceId;\n      return eventFromThisGrid;\n    }\n    pointer = pointer.parentElement;\n  }\n  return false;\n}\nfunction _getCellPositionForEvent(gos, event) {\n  return _getCellCtrlForEventTarget(gos, event.target)?.getFocusedCellPosition() ?? null;\n}\nfunction _getNormalisedMousePosition(beans, event) {\n  const gridPanelHasScrolls = _isDomLayout(beans.gos, \"normal\");\n  const e = event;\n  let x;\n  let y;\n  if (e.clientX != null || e.clientY != null) {\n    x = e.clientX;\n    y = e.clientY;\n  } else {\n    x = e.x;\n    y = e.y;\n  }\n  const { pageFirstPixel } = beans.pageBounds.getCurrentPagePixelRange();\n  y += pageFirstPixel;\n  if (gridPanelHasScrolls) {\n    const scrollFeature = beans.ctrlsSvc.getScrollFeature();\n    const vRange = scrollFeature.getVScrollPosition();\n    const hRange = scrollFeature.getHScrollPosition();\n    x += hRange.left;\n    y += vRange.top;\n  }\n  return { x, y };\n}\n\n// packages/ag-grid-community/src/dragAndDrop/dragAndDropService.ts\nvar DragSourceType = /* @__PURE__ */ ((DragSourceType2) => {\n  DragSourceType2[DragSourceType2[\"ToolPanel\"] = 0] = \"ToolPanel\";\n  DragSourceType2[DragSourceType2[\"HeaderCell\"] = 1] = \"HeaderCell\";\n  DragSourceType2[DragSourceType2[\"RowDrag\"] = 2] = \"RowDrag\";\n  DragSourceType2[DragSourceType2[\"ChartPanel\"] = 3] = \"ChartPanel\";\n  DragSourceType2[DragSourceType2[\"AdvancedFilterBuilder\"] = 4] = \"AdvancedFilterBuilder\";\n  return DragSourceType2;\n})(DragSourceType || {});\nvar DragAndDropService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"dragAndDrop\";\n    this.dragSourceAndParamsList = [];\n    this.dropTargets = [];\n  }\n  wireBeans(beans) {\n    this.ctrlsSvc = beans.ctrlsSvc;\n    this.dragSvc = beans.dragSvc;\n    this.environment = beans.environment;\n    this.userCompFactory = beans.userCompFactory;\n  }\n  addDragSource(dragSource, allowTouch = false) {\n    const params = {\n      eElement: dragSource.eElement,\n      dragStartPixels: dragSource.dragStartPixels,\n      onDragStart: this.onDragStart.bind(this, dragSource),\n      onDragStop: this.onDragStop.bind(this),\n      onDragging: this.onDragging.bind(this),\n      onDragCancel: this.onDragCancel.bind(this),\n      includeTouch: allowTouch\n    };\n    this.dragSourceAndParamsList.push({ params, dragSource });\n    this.dragSvc.addDragSource(params);\n  }\n  getDragAndDropImageComponent() {\n    const { dragAndDropImageComp } = this;\n    if (!dragAndDropImageComp || !dragAndDropImageComp.comp) {\n      return null;\n    }\n    return dragAndDropImageComp.comp;\n  }\n  removeDragSource(dragSource) {\n    const { dragSourceAndParamsList, dragSvc } = this;\n    const sourceAndParams = dragSourceAndParamsList.find((item) => item.dragSource === dragSource);\n    if (sourceAndParams) {\n      dragSvc.removeDragSource(sourceAndParams.params);\n      _removeFromArray(dragSourceAndParamsList, sourceAndParams);\n    }\n  }\n  destroy() {\n    const { dragSourceAndParamsList, dragSvc, dropTargets } = this;\n    dragSourceAndParamsList.forEach((sourceAndParams) => dragSvc.removeDragSource(sourceAndParams.params));\n    dragSourceAndParamsList.length = 0;\n    dropTargets.length = 0;\n    this.clearDragAndDropProperties();\n    super.destroy();\n  }\n  nudge() {\n    if (this.dragging) {\n      this.onDragging(this.eventLastTime, true);\n    }\n  }\n  onDragStart(dragSource, mouseEvent) {\n    this.dragging = true;\n    this.dragSource = dragSource;\n    this.eventLastTime = mouseEvent;\n    this.dragItem = dragSource.getDragItem();\n    dragSource.onDragStarted?.();\n    this.createDragAndDropImageComponent();\n  }\n  onDragStop(mouseEvent) {\n    this.dragSource?.onDragStopped?.();\n    const { lastDropTarget } = this;\n    if (lastDropTarget?.onDragStop) {\n      const draggingEvent = this.createDropTargetEvent(lastDropTarget, mouseEvent, null, null, false);\n      lastDropTarget.onDragStop(draggingEvent);\n    }\n    this.clearDragAndDropProperties();\n  }\n  onDragCancel() {\n    const { dragSource, lastDropTarget } = this;\n    dragSource?.onDragCancelled?.();\n    if (lastDropTarget?.onDragCancel) {\n      lastDropTarget.onDragCancel(\n        this.createDropTargetEvent(lastDropTarget, this.eventLastTime, null, null, false)\n      );\n    }\n    this.clearDragAndDropProperties();\n  }\n  clearDragAndDropProperties() {\n    this.eventLastTime = null;\n    this.dragging = false;\n    this.lastDropTarget = void 0;\n    this.dragItem = null;\n    this.dragSource = null;\n    this.removeDragAndDropImageComponent();\n  }\n  onDragging(mouseEvent, fromNudge = false) {\n    const hDirection = this.getHorizontalDirection(mouseEvent);\n    const vDirection = this.getVerticalDirection(mouseEvent);\n    this.eventLastTime = mouseEvent;\n    this.positionDragAndDropImageComp(mouseEvent);\n    const validDropTargets = this.dropTargets.filter((target) => this.isMouseOnDropTarget(mouseEvent, target));\n    const dropTarget = this.findCurrentDropTarget(mouseEvent, validDropTargets);\n    const { lastDropTarget, dragSource, dragAndDropImageComp, dragItem } = this;\n    if (dropTarget !== lastDropTarget) {\n      this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n      if (lastDropTarget !== null && dropTarget === null) {\n        dragSource?.onGridExit?.(dragItem);\n      }\n      if (lastDropTarget === null && dropTarget !== null) {\n        dragSource?.onGridEnter?.(dragItem);\n      }\n      this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n      if (dropTarget && dragAndDropImageComp) {\n        const { comp, promise } = dragAndDropImageComp;\n        if (comp) {\n          comp.setIcon(dropTarget.getIconName ? dropTarget.getIconName() : null, false);\n        } else {\n          promise.then((resolvedComponent) => {\n            if (resolvedComponent) {\n              resolvedComponent.setIcon(dropTarget.getIconName ? dropTarget.getIconName() : null, false);\n            }\n          });\n        }\n      }\n      this.lastDropTarget = dropTarget;\n    } else if (dropTarget && dropTarget.onDragging) {\n      const draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n      dropTarget.onDragging(draggingEvent);\n    }\n  }\n  getAllContainersFromDropTarget(dropTarget) {\n    const secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n    const containers = [[dropTarget.getContainer()]];\n    return secondaryContainers ? containers.concat(secondaryContainers) : containers;\n  }\n  // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n  isMouseOnDropTarget(mouseEvent, dropTarget) {\n    const allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);\n    let mouseOverTarget = false;\n    const allContainersIntersect = (mouseEvent2, containers) => {\n      for (const container of containers) {\n        const { width, height, left, right, top, bottom } = container.getBoundingClientRect();\n        if (width === 0 || height === 0) {\n          return false;\n        }\n        const horizontalFit = mouseEvent2.clientX >= left && mouseEvent2.clientX < right;\n        const verticalFit = mouseEvent2.clientY >= top && mouseEvent2.clientY < bottom;\n        if (!horizontalFit || !verticalFit) {\n          return false;\n        }\n      }\n      return true;\n    };\n    for (const currentContainers of allContainersFromDropTarget) {\n      if (allContainersIntersect(mouseEvent, currentContainers)) {\n        mouseOverTarget = true;\n        break;\n      }\n    }\n    const { eElement, type } = this.dragSource;\n    if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(eElement)) {\n      return false;\n    }\n    return mouseOverTarget && dropTarget.isInterestedIn(type, eElement);\n  }\n  findCurrentDropTarget(mouseEvent, validDropTargets) {\n    const len = validDropTargets.length;\n    if (len === 0) {\n      return null;\n    }\n    if (len === 1) {\n      return validDropTargets[0];\n    }\n    const rootNode = _getRootNode(this.beans);\n    const elementStack = rootNode.elementsFromPoint(mouseEvent.clientX, mouseEvent.clientY);\n    for (const el of elementStack) {\n      for (const dropTarget of validDropTargets) {\n        const containers = this.getAllContainersFromDropTarget(dropTarget).flatMap((a) => a);\n        if (containers.indexOf(el) !== -1) {\n          return dropTarget;\n        }\n      }\n    }\n    return null;\n  }\n  enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n    if (!dropTarget) {\n      return;\n    }\n    if (dropTarget.onDragEnter) {\n      const dragEnterEvent = this.createDropTargetEvent(\n        dropTarget,\n        mouseEvent,\n        hDirection,\n        vDirection,\n        fromNudge\n      );\n      dropTarget.onDragEnter(dragEnterEvent);\n    }\n  }\n  leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge) {\n    const { lastDropTarget } = this;\n    if (!lastDropTarget) {\n      return;\n    }\n    if (lastDropTarget.onDragLeave) {\n      const dragLeaveEvent = this.createDropTargetEvent(\n        lastDropTarget,\n        mouseEvent,\n        hDirection,\n        vDirection,\n        fromNudge\n      );\n      lastDropTarget.onDragLeave(dragLeaveEvent);\n    }\n    const dragAndDropImageComponent = this.getDragAndDropImageComponent();\n    if (dragAndDropImageComponent) {\n      dragAndDropImageComponent.setIcon(null, false);\n    }\n  }\n  addDropTarget(dropTarget) {\n    this.dropTargets.push(dropTarget);\n  }\n  removeDropTarget(dropTarget) {\n    this.dropTargets = this.dropTargets.filter((target) => target.getContainer() !== dropTarget.getContainer());\n  }\n  hasExternalDropZones() {\n    return this.dropTargets.some((zones) => zones.external);\n  }\n  findExternalZone(params) {\n    const externalTargets = this.dropTargets.filter((target) => target.external);\n    return externalTargets.find((zone) => zone.getContainer() === params.getContainer()) || null;\n  }\n  isDropZoneWithinThisGrid(draggingEvent) {\n    const gridBodyCon = this.ctrlsSvc.getGridBodyCtrl();\n    const gridGui = gridBodyCon.eGridBody;\n    const { dropZoneTarget } = draggingEvent;\n    return gridGui.contains(dropZoneTarget);\n  }\n  getHorizontalDirection(event) {\n    const clientX = this.eventLastTime?.clientX;\n    const eClientX = event.clientX;\n    if (clientX === eClientX) {\n      return null;\n    }\n    return clientX > eClientX ? \"left\" : \"right\";\n  }\n  getVerticalDirection(event) {\n    const clientY = this.eventLastTime?.clientY;\n    const eClientY = event.clientY;\n    if (clientY === eClientY) {\n      return null;\n    }\n    return clientY > eClientY ? \"up\" : \"down\";\n  }\n  createDropTargetEvent(dropTarget, event, hDirection, vDirection, fromNudge) {\n    const dropZoneTarget = dropTarget.getContainer();\n    const rect = dropZoneTarget.getBoundingClientRect();\n    const { dragItem, dragSource, gos } = this;\n    const x = event.clientX - rect.left;\n    const y = event.clientY - rect.top;\n    return _addGridCommonParams(gos, {\n      event,\n      x,\n      y,\n      vDirection,\n      hDirection,\n      dragSource,\n      fromNudge,\n      dragItem,\n      dropZoneTarget\n    });\n  }\n  positionDragAndDropImageComp(event) {\n    const dragAndDropImageComponent = this.getDragAndDropImageComponent();\n    if (!dragAndDropImageComponent) {\n      return;\n    }\n    _anchorElementToMouseMoveEvent(dragAndDropImageComponent.getGui(), event, this.beans);\n  }\n  removeDragAndDropImageComponent() {\n    const { dragAndDropImageComp } = this;\n    if (dragAndDropImageComp) {\n      const { comp } = dragAndDropImageComp;\n      if (comp) {\n        const eGui = comp.getGui();\n        this.dragAndDropImageParent?.removeChild(eGui);\n        this.destroyBean(comp);\n      }\n    }\n    this.dragAndDropImageComp = null;\n  }\n  createDragAndDropImageComponent() {\n    const { dragSource, gos, userCompFactory } = this;\n    if (!dragSource) {\n      return;\n    }\n    const userCompDetails = _getDragAndDropImageCompDetails(\n      userCompFactory,\n      _addGridCommonParams(gos, {\n        dragSource\n      })\n    );\n    if (!userCompDetails) {\n      return;\n    }\n    const promise = userCompDetails.newAgStackInstance();\n    this.dragAndDropImageComp = {\n      promise\n    };\n    promise.then((comp) => {\n      if (!comp || !this.isAlive()) {\n        return;\n      }\n      this.processDragAndDropImageComponent(comp);\n      this.dragAndDropImageComp.comp = comp;\n    });\n  }\n  processDragAndDropImageComponent(dragAndDropImageComponent) {\n    const { dragSource, environment } = this;\n    if (!dragSource) {\n      return;\n    }\n    const eGui = dragAndDropImageComponent.getGui();\n    eGui.style.setProperty(\"position\", \"absolute\");\n    eGui.style.setProperty(\"z-index\", \"9999\");\n    _stampTopLevelGridCompWithGridInstance(this.gos, eGui);\n    environment.applyThemeClasses(eGui);\n    dragAndDropImageComponent.setIcon(null, false);\n    let { dragItemName } = dragSource;\n    if (typeof dragItemName === \"function\") {\n      dragItemName = dragItemName();\n    }\n    dragAndDropImageComponent.setLabel(dragItemName || \"\");\n    eGui.style.top = \"20px\";\n    eGui.style.left = \"20px\";\n    const targetEl = _getPageBody(this.beans);\n    this.dragAndDropImageParent = targetEl;\n    if (!targetEl) {\n      _warn(54);\n    } else {\n      targetEl.appendChild(eGui);\n    }\n  }\n  registerGridDropTarget(elementFn, ctrl) {\n    const dropTarget = {\n      getContainer: elementFn,\n      isInterestedIn: (type) => type === 1 /* HeaderCell */ || type === 0 /* ToolPanel */,\n      getIconName: () => \"notAllowed\"\n    };\n    this.addDropTarget(dropTarget);\n    ctrl.addDestroyFunc(() => this.removeDropTarget(dropTarget));\n  }\n};\n\n// packages/ag-grid-community/src/autoScrollService.ts\nvar AutoScrollService = class {\n  constructor(params) {\n    this.tickingInterval = null;\n    this.onScrollCallback = null;\n    this.scrollContainer = params.scrollContainer;\n    this.scrollHorizontally = params.scrollAxis.indexOf(\"x\") !== -1;\n    this.scrollVertically = params.scrollAxis.indexOf(\"y\") !== -1;\n    this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;\n    if (params.onScrollCallback) {\n      this.onScrollCallback = params.onScrollCallback;\n    }\n    if (this.scrollVertically) {\n      this.getVerticalPosition = params.getVerticalPosition;\n      this.setVerticalPosition = params.setVerticalPosition;\n    }\n    if (this.scrollHorizontally) {\n      this.getHorizontalPosition = params.getHorizontalPosition;\n      this.setHorizontalPosition = params.setHorizontalPosition;\n    }\n    this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || (() => false);\n    this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (() => false);\n  }\n  check(mouseEvent, forceSkipVerticalScroll = false) {\n    const skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();\n    if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {\n      return;\n    }\n    const rect = this.scrollContainer.getBoundingClientRect();\n    const scrollTick = this.scrollByTick;\n    this.tickLeft = mouseEvent.clientX < rect.left + scrollTick;\n    this.tickRight = mouseEvent.clientX > rect.right - scrollTick;\n    this.tickUp = mouseEvent.clientY < rect.top + scrollTick && !skipVerticalScroll;\n    this.tickDown = mouseEvent.clientY > rect.bottom - scrollTick && !skipVerticalScroll;\n    if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {\n      this.ensureTickingStarted();\n    } else {\n      this.ensureCleared();\n    }\n  }\n  ensureTickingStarted() {\n    if (this.tickingInterval === null) {\n      this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n      this.tickCount = 0;\n    }\n  }\n  doTick() {\n    this.tickCount++;\n    const tickAmount = this.tickCount > 20 ? 200 : this.tickCount > 10 ? 80 : 40;\n    if (this.scrollVertically) {\n      const vScrollPosition = this.getVerticalPosition();\n      if (this.tickUp) {\n        this.setVerticalPosition(vScrollPosition - tickAmount);\n      }\n      if (this.tickDown) {\n        this.setVerticalPosition(vScrollPosition + tickAmount);\n      }\n    }\n    if (this.scrollHorizontally) {\n      const hScrollPosition = this.getHorizontalPosition();\n      if (this.tickLeft) {\n        this.setHorizontalPosition(hScrollPosition - tickAmount);\n      }\n      if (this.tickRight) {\n        this.setHorizontalPosition(hScrollPosition + tickAmount);\n      }\n    }\n    if (this.onScrollCallback) {\n      this.onScrollCallback();\n    }\n  }\n  ensureCleared() {\n    if (this.tickingInterval) {\n      window.clearInterval(this.tickingInterval);\n      this.tickingInterval = null;\n    }\n  }\n};\n\n// packages/ag-grid-community/src/entities/positionUtils.ts\nfunction _createCellId(cellPosition) {\n  const { rowIndex, rowPinned, column } = cellPosition;\n  return `${rowIndex}.${rowPinned == null ? \"null\" : rowPinned}.${column.getId()}`;\n}\nfunction _areCellsEqual(cellA, cellB) {\n  const colsMatch = cellA.column === cellB.column;\n  const floatingMatch = cellA.rowPinned === cellB.rowPinned;\n  const indexMatch = cellA.rowIndex === cellB.rowIndex;\n  return colsMatch && floatingMatch && indexMatch;\n}\nfunction _isRowBefore(rowA, rowB) {\n  switch (rowA.rowPinned) {\n    case \"top\":\n      if (rowB.rowPinned !== \"top\") {\n        return true;\n      }\n      break;\n    case \"bottom\":\n      if (rowB.rowPinned !== \"bottom\") {\n        return false;\n      }\n      break;\n    default:\n      if (_exists(rowB.rowPinned)) {\n        return rowB.rowPinned !== \"top\";\n      }\n      break;\n  }\n  return rowA.rowIndex < rowB.rowIndex;\n}\nfunction _isSameRow(rowA, rowB) {\n  if (!rowA && !rowB) {\n    return true;\n  }\n  if (rowA && !rowB || !rowA && rowB) {\n    return false;\n  }\n  return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n}\nfunction _getFirstRow(beans) {\n  let rowIndex = 0;\n  let rowPinned;\n  const { pinnedRowModel, rowModel, pageBounds } = beans;\n  if (pinnedRowModel?.getPinnedTopRowCount()) {\n    rowPinned = \"top\";\n  } else if (rowModel.getRowCount()) {\n    rowPinned = null;\n    rowIndex = pageBounds.getFirstRow();\n  } else if (pinnedRowModel?.getPinnedBottomRowCount()) {\n    rowPinned = \"bottom\";\n  }\n  return rowPinned === void 0 ? null : { rowIndex, rowPinned };\n}\nfunction _getLastRow(beans) {\n  let rowIndex;\n  let rowPinned = null;\n  const { pinnedRowModel, pageBounds } = beans;\n  const pinnedBottomCount = pinnedRowModel?.getPinnedBottomRowCount();\n  const pinnedTopCount = pinnedRowModel?.getPinnedTopRowCount();\n  if (pinnedBottomCount) {\n    rowPinned = \"bottom\";\n    rowIndex = pinnedBottomCount - 1;\n  } else if (beans.rowModel.getRowCount()) {\n    rowPinned = null;\n    rowIndex = pageBounds.getLastRow();\n  } else if (pinnedTopCount) {\n    rowPinned = \"top\";\n    rowIndex = pinnedTopCount - 1;\n  }\n  return rowIndex === void 0 ? null : { rowIndex, rowPinned };\n}\nfunction _getRowNode(beans, gridRow) {\n  switch (gridRow.rowPinned) {\n    case \"top\":\n      return beans.pinnedRowModel?.getPinnedTopRow(gridRow.rowIndex);\n    case \"bottom\":\n      return beans.pinnedRowModel?.getPinnedBottomRow(gridRow.rowIndex);\n    default:\n      return beans.rowModel.getRow(gridRow.rowIndex);\n  }\n}\nfunction _getCellByPosition(beans, cellPosition) {\n  const spannedCellCtrl = beans.spannedRowRenderer?.getCellByPosition(cellPosition);\n  if (spannedCellCtrl) {\n    return spannedCellCtrl;\n  }\n  const rowCtrl = beans.rowRenderer.getRowByPosition(cellPosition);\n  if (!rowCtrl) {\n    return null;\n  }\n  return rowCtrl.getCellCtrl(cellPosition.column);\n}\nfunction _getRowAbove(beans, rowPosition) {\n  const { rowIndex: index, rowPinned: pinned } = rowPosition;\n  const { pageBounds, pinnedRowModel, rowModel } = beans;\n  if (index === 0) {\n    if (pinned === \"top\") {\n      return null;\n    }\n    if (pinned === \"bottom\" && rowModel.isRowsToRender()) {\n      return { rowIndex: pageBounds.getLastRow(), rowPinned: null };\n    }\n    return pinnedRowModel?.isRowsToRender(\"top\") ? { rowIndex: pinnedRowModel.getPinnedTopRowCount() - 1, rowPinned: \"top\" } : null;\n  }\n  const rowNode = pinned ? void 0 : rowModel.getRow(index);\n  return getNextStickyPosition(beans, rowNode, true) ?? { rowIndex: index - 1, rowPinned: pinned };\n}\nfunction _getRowBelow(beans, rowPosition) {\n  const { rowIndex: index, rowPinned: pinned } = rowPosition;\n  const { pageBounds, pinnedRowModel, rowModel } = beans;\n  if (isLastRowInContainer(beans, rowPosition)) {\n    if (pinned === \"bottom\") {\n      return null;\n    }\n    if (pinned === \"top\" && rowModel.isRowsToRender()) {\n      return { rowIndex: pageBounds.getFirstRow(), rowPinned: null };\n    }\n    return pinnedRowModel?.isRowsToRender(\"bottom\") ? { rowIndex: 0, rowPinned: \"bottom\" } : null;\n  }\n  const rowNode = pinned ? void 0 : rowModel.getRow(index);\n  return getNextStickyPosition(beans, rowNode) ?? { rowIndex: index + 1, rowPinned: pinned };\n}\nfunction getNextStickyPosition(beans, rowNode, up) {\n  const { gos, rowRenderer } = beans;\n  if (!rowNode?.sticky || !_isGroupRowsSticky(gos)) {\n    return;\n  }\n  const stickyRowCtrls = up ? rowRenderer.getStickyTopRowCtrls() : rowRenderer.getStickyBottomRowCtrls();\n  let nextCtrl;\n  for (let i = 0; i < stickyRowCtrls.length; i++) {\n    if (stickyRowCtrls[i].rowNode.rowIndex === rowNode.rowIndex) {\n      nextCtrl = stickyRowCtrls[i + (up ? -1 : 1)];\n      break;\n    }\n  }\n  return nextCtrl ? { rowIndex: nextCtrl.rowNode.rowIndex, rowPinned: null } : void 0;\n}\nfunction isLastRowInContainer(beans, rowPosition) {\n  const { rowPinned, rowIndex } = rowPosition;\n  const { pinnedRowModel, pageBounds } = beans;\n  if (rowPinned === \"top\") {\n    const lastTopIndex = (pinnedRowModel?.getPinnedTopRowCount() ?? 0) - 1;\n    return lastTopIndex <= rowIndex;\n  }\n  if (rowPinned === \"bottom\") {\n    const lastBottomIndex = (pinnedRowModel?.getPinnedBottomRowCount() ?? 0) - 1;\n    return lastBottomIndex <= rowIndex;\n  }\n  const lastBodyIndex = pageBounds.getLastRow();\n  return lastBodyIndex <= rowIndex;\n}\n\n// packages/ag-grid-community/src/utils/changedPath.ts\nvar ChangedPath = class {\n  constructor(keepingColumns, rootNode) {\n    // whether changed path is active of not. it is active when a) doing\n    // a transaction update or b) doing change detection. if we are doing\n    // a CSRM refresh for other reasons (after sort or filter, or user calling\n    // setRowData() without delta mode) then we are not active. we are also\n    // marked as not active if secondary columns change in pivot (as this impacts\n    // aggregations).\n    // can be set inactive by:\n    // a) ClientSideRowModel, if no transactions or\n    // b) PivotService, if secondary columns changed\n    this.active = true;\n    // for each node in the change path, we also store which columns need\n    // to be re-aggregated.\n    this.nodeIdsToColumns = {};\n    // for quick lookup, all items in the change path are mapped by nodeId\n    this.mapToItems = {};\n    this.keepingColumns = keepingColumns;\n    this.pathRoot = {\n      rowNode: rootNode,\n      children: null\n    };\n    this.mapToItems[rootNode.id] = this.pathRoot;\n  }\n  depthFirstSearchChangedPath(pathItem, callback) {\n    const { rowNode, children } = pathItem;\n    if (children) {\n      for (let i = 0; i < children.length; ++i) {\n        this.depthFirstSearchChangedPath(children[i], callback);\n      }\n    }\n    callback(rowNode);\n  }\n  depthFirstSearchEverything(rowNode, callback, traverseEverything) {\n    const childrenAfterGroup = rowNode.childrenAfterGroup;\n    if (childrenAfterGroup) {\n      for (let i = 0, len = childrenAfterGroup.length; i < len; ++i) {\n        const childNode = childrenAfterGroup[i];\n        if (childNode.childrenAfterGroup) {\n          this.depthFirstSearchEverything(childNode, callback, traverseEverything);\n        } else if (traverseEverything) {\n          callback(childNode);\n        }\n      }\n    }\n    callback(rowNode);\n  }\n  // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback\n  // will be called for child nodes in addition to parent nodes.\n  forEachChangedNodeDepthFirst(callback, traverseLeafNodes = false, includeUnchangedNodes = false) {\n    if (this.active && !includeUnchangedNodes) {\n      this.depthFirstSearchChangedPath(this.pathRoot, callback);\n    } else {\n      this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);\n    }\n  }\n  executeFromRootNode(callback) {\n    callback(this.pathRoot.rowNode);\n  }\n  createPathItems(rowNode) {\n    let pointer = rowNode;\n    let newEntryCount = 0;\n    while (!this.mapToItems[pointer.id]) {\n      const newEntry = {\n        rowNode: pointer,\n        children: null\n      };\n      this.mapToItems[pointer.id] = newEntry;\n      newEntryCount++;\n      pointer = pointer.parent;\n    }\n    return newEntryCount;\n  }\n  populateColumnsMap(rowNode, columns) {\n    if (!this.keepingColumns || !columns) {\n      return;\n    }\n    let pointer = rowNode;\n    while (pointer) {\n      if (!this.nodeIdsToColumns[pointer.id]) {\n        this.nodeIdsToColumns[pointer.id] = {};\n      }\n      columns.forEach((col) => this.nodeIdsToColumns[pointer.id][col.getId()] = true);\n      pointer = pointer.parent;\n    }\n  }\n  linkPathItems(rowNode, newEntryCount) {\n    let pointer = rowNode;\n    for (let i = 0; i < newEntryCount; i++) {\n      const thisItem = this.mapToItems[pointer.id];\n      const parentItem = this.mapToItems[pointer.parent.id];\n      if (!parentItem.children) {\n        parentItem.children = [];\n      }\n      parentItem.children.push(thisItem);\n      pointer = pointer.parent;\n    }\n  }\n  // called by\n  // 1) change detection (provides cols) and\n  // 2) groupStage if doing transaction update (doesn't provide cols)\n  addParentNode(rowNode, columns) {\n    if (!rowNode || rowNode.isRowPinned()) {\n      return;\n    }\n    const newEntryCount = this.createPathItems(rowNode);\n    this.linkPathItems(rowNode, newEntryCount);\n    this.populateColumnsMap(rowNode, columns);\n  }\n  canSkip(rowNode) {\n    return this.active && !this.mapToItems[rowNode.id];\n  }\n  getValueColumnsForNode(rowNode, valueColumns) {\n    if (!this.keepingColumns) {\n      return valueColumns;\n    }\n    const colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n    const result = valueColumns.filter((col) => colsForThisNode[col.getId()]);\n    return result;\n  }\n  getNotValueColumnsForNode(rowNode, valueColumns) {\n    if (!this.keepingColumns) {\n      return null;\n    }\n    const colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n    const result = valueColumns.filter((col) => !colsForThisNode[col.getId()]);\n    return result;\n  }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/rowDragFeature.ts\nvar RowDragFeature = class extends BeanStub {\n  constructor(eContainer) {\n    super();\n    this.eContainer = eContainer;\n  }\n  postConstruct() {\n    const { rowModel, gos, ctrlsSvc } = this.beans;\n    if (_isClientSideRowModel(gos, rowModel)) {\n      this.clientSideRowModel = rowModel;\n    }\n    ctrlsSvc.whenReady(this, (p) => {\n      const gridBodyCon = p.gridBodyCtrl;\n      this.autoScrollService = new AutoScrollService({\n        scrollContainer: gridBodyCon.eBodyViewport,\n        scrollAxis: \"y\",\n        getVerticalPosition: () => gridBodyCon.scrollFeature.getVScrollPosition().top,\n        setVerticalPosition: (position) => gridBodyCon.scrollFeature.setVerticalScrollPosition(position),\n        onScrollCallback: () => {\n          this.onDragging(this.lastDraggingEvent);\n        }\n      });\n    });\n  }\n  getContainer() {\n    return this.eContainer;\n  }\n  isInterestedIn(type) {\n    return type === 2 /* RowDrag */;\n  }\n  getIconName() {\n    const managedDrag = this.gos.get(\"rowDragManaged\");\n    if (managedDrag && this.shouldPreventRowMove()) {\n      return \"notAllowed\";\n    }\n    return \"move\";\n  }\n  shouldPreventRowMove() {\n    const { rowGroupColsSvc, filterManager, sortSvc } = this.beans;\n    const rowGroupCols = rowGroupColsSvc?.columns ?? [];\n    if (rowGroupCols.length) {\n      return true;\n    }\n    const isFilterPresent = filterManager?.isAnyFilterPresent();\n    if (isFilterPresent) {\n      return true;\n    }\n    const isSortActive = sortSvc?.isSortActive();\n    if (isSortActive) {\n      return true;\n    }\n    return false;\n  }\n  getRowNodes(draggingEvent) {\n    if (!this.isFromThisGrid(draggingEvent)) {\n      return draggingEvent.dragItem.rowNodes || [];\n    }\n    const currentNode = draggingEvent.dragItem.rowNode;\n    const isRowDragMultiRow = this.gos.get(\"rowDragMultiRow\");\n    if (isRowDragMultiRow) {\n      const selectedNodes = [...this.beans.selectionSvc?.getSelectedNodes() ?? []].sort((a, b) => {\n        if (a.rowIndex == null || b.rowIndex == null) {\n          return 0;\n        }\n        return this.getRowIndexNumber(a) - this.getRowIndexNumber(b);\n      });\n      if (selectedNodes.indexOf(currentNode) !== -1) {\n        return selectedNodes;\n      }\n    }\n    return [currentNode];\n  }\n  onDragEnter(draggingEvent) {\n    draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);\n    this.dispatchGridEvent(\"rowDragEnter\", draggingEvent);\n    this.getRowNodes(draggingEvent).forEach((rowNode) => {\n      this.setRowNodeDragging(rowNode, true);\n    });\n    this.onEnterOrDragging(draggingEvent);\n  }\n  onDragging(draggingEvent) {\n    this.onEnterOrDragging(draggingEvent);\n  }\n  isFromThisGrid(draggingEvent) {\n    const { dragSourceDomDataKey } = draggingEvent.dragSource;\n    return dragSourceDomDataKey === this.gos.getDomDataKey();\n  }\n  onEnterOrDragging(draggingEvent) {\n    this.dispatchGridEvent(\"rowDragMove\", draggingEvent);\n    this.lastDraggingEvent = draggingEvent;\n    if (this.gos.get(\"rowDragManaged\")) {\n      this.doManagedDrag(draggingEvent);\n    }\n    this.autoScrollService.check(draggingEvent.event);\n  }\n  doManagedDrag(draggingEvent) {\n    const { dragAndDrop, gos } = this.beans;\n    const isFromThisGrid = this.isFromThisGrid(draggingEvent);\n    const managedDrag = gos.get(\"rowDragManaged\");\n    if (managedDrag && this.shouldPreventRowMove()) {\n      return;\n    }\n    if (gos.get(\"suppressMoveWhenRowDragging\") || !isFromThisGrid) {\n      if (dragAndDrop.isDropZoneWithinThisGrid(draggingEvent)) {\n        const clientSideRowModel = this.clientSideRowModel;\n        const rowsDrop = this.getRowsDrop(draggingEvent);\n        const target = rowsDrop?.target;\n        if (target) {\n          clientSideRowModel.highlightRow(target, rowsDrop.delta < 0 ? \"Above\" : \"Below\");\n        } else {\n          clientSideRowModel.clearHighlight();\n        }\n      }\n    } else {\n      const rowsDrop = this.getRowsDrop(draggingEvent);\n      if (rowsDrop) {\n        this.dropRows(rowsDrop);\n      }\n    }\n  }\n  getRowIndexNumber(rowNode) {\n    const rowIndexStr = rowNode.getRowIndexString();\n    return parseInt(_last(rowIndexStr.split(\"-\")), 10);\n  }\n  getRowsDrop(draggingEvent) {\n    const { rowNode, rowNodes: rows } = draggingEvent.dragItem;\n    const rowsLen = rows?.length;\n    const sameGrid = this.isFromThisGrid(draggingEvent);\n    const source = rowsLen && (rowNode ?? rows[0]);\n    const y = _getNormalisedMousePosition(this.beans, draggingEvent).y;\n    const clientSideRowModel = this.clientSideRowModel;\n    const targetRowIndex = clientSideRowModel.getRowIndexAtPixel(y);\n    let target = clientSideRowModel.getRow(targetRowIndex);\n    let delta = 0;\n    if (!source) {\n      return null;\n    }\n    if (sameGrid) {\n      if (!target || target === source) {\n        return null;\n      }\n      delta = targetRowIndex - source.rowIndex;\n      if (rows.includes(target)) {\n        target = (delta < 0 ? this.getPrevOrNext(-1, rows[0]) : this.getPrevOrNext(1, _last(rows))) ?? target;\n      }\n    }\n    if (target && (!sameGrid || delta < -1 || delta > 1)) {\n      delta = y - target.rowTop - target.rowHeight / 2;\n    }\n    return { sameGrid, delta, target, rows };\n  }\n  /** When dragging multiple rows, we want the user to be able to drag to the prev or next in the group if dragging on one of the selected rows. */\n  getPrevOrNext(increment, initialRow) {\n    const clientSideRowModel = this.clientSideRowModel;\n    const rowCount = clientSideRowModel.getRowCount();\n    let rowIndex = initialRow.rowIndex + increment;\n    while (rowIndex >= 0 && rowIndex < rowCount) {\n      const row = clientSideRowModel.getRow(rowIndex);\n      if (row.sourceRowIndex >= 0) {\n        return row;\n      }\n      rowIndex += increment;\n    }\n    return void 0;\n  }\n  addRowDropZone(params) {\n    if (!params.getContainer()) {\n      _warn(55);\n      return;\n    }\n    const dragAndDrop = this.beans.dragAndDrop;\n    if (dragAndDrop.findExternalZone(params)) {\n      _warn(56);\n      return;\n    }\n    let processedParams = {\n      getContainer: params.getContainer\n    };\n    if (params.fromGrid) {\n      processedParams = params;\n    } else {\n      if (params.onDragEnter) {\n        processedParams.onDragEnter = (e) => {\n          params.onDragEnter(this.draggingToRowDragEvent(\"rowDragEnter\", e));\n        };\n      }\n      if (params.onDragLeave) {\n        processedParams.onDragLeave = (e) => {\n          params.onDragLeave(this.draggingToRowDragEvent(\"rowDragLeave\", e));\n        };\n      }\n      if (params.onDragging) {\n        processedParams.onDragging = (e) => {\n          params.onDragging(this.draggingToRowDragEvent(\"rowDragMove\", e));\n        };\n      }\n      if (params.onDragStop) {\n        processedParams.onDragStop = (e) => {\n          params.onDragStop(this.draggingToRowDragEvent(\"rowDragEnd\", e));\n        };\n      }\n      if (params.onDragCancel) {\n        processedParams.onDragCancel = (e) => {\n          params.onDragCancel(this.draggingToRowDragEvent(\"rowDragCancel\", e));\n        };\n      }\n    }\n    const dropTarget = {\n      isInterestedIn: (type) => type === 2 /* RowDrag */,\n      getIconName: () => \"move\",\n      external: true,\n      ...processedParams\n    };\n    dragAndDrop.addDropTarget(dropTarget);\n    this.addDestroyFunc(() => dragAndDrop.removeDropTarget(dropTarget));\n  }\n  getRowDropZone(events) {\n    const getContainer = this.getContainer.bind(this);\n    const onDragEnter = this.onDragEnter.bind(this);\n    const onDragLeave = this.onDragLeave.bind(this);\n    const onDragging = this.onDragging.bind(this);\n    const onDragStop = this.onDragStop.bind(this);\n    const onDragCancel = this.onDragCancel.bind(this);\n    let params;\n    if (!events) {\n      params = {\n        getContainer,\n        onDragEnter,\n        onDragLeave,\n        onDragging,\n        onDragStop,\n        onDragCancel,\n        /* @private */\n        fromGrid: true\n      };\n    } else {\n      params = {\n        getContainer,\n        onDragEnter: events.onDragEnter ? (e) => {\n          onDragEnter(e);\n          events.onDragEnter(this.draggingToRowDragEvent(\"rowDragEnter\", e));\n        } : onDragEnter,\n        onDragLeave: events.onDragLeave ? (e) => {\n          onDragLeave(e);\n          events.onDragLeave(this.draggingToRowDragEvent(\"rowDragLeave\", e));\n        } : onDragLeave,\n        onDragging: events.onDragging ? (e) => {\n          onDragging(e);\n          events.onDragging(this.draggingToRowDragEvent(\"rowDragMove\", e));\n        } : onDragging,\n        onDragStop: events.onDragStop ? (e) => {\n          onDragStop(e);\n          events.onDragStop(this.draggingToRowDragEvent(\"rowDragEnd\", e));\n        } : onDragStop,\n        onDragCancel: events.onDragCancel ? (e) => {\n          onDragCancel(e);\n          events.onDragCancel(this.draggingToRowDragEvent(\"rowDragCancel\", e));\n        } : onDragCancel,\n        fromGrid: true\n      };\n    }\n    return params;\n  }\n  draggingToRowDragEvent(type, draggingEvent) {\n    const beans = this.beans;\n    const { pageBounds, rowModel, gos } = beans;\n    const y = _getNormalisedMousePosition(this.beans, draggingEvent).y;\n    const mouseIsPastLastRow = y > pageBounds.getCurrentPagePixelRange().pageLastPixel;\n    let overIndex = -1;\n    let overNode;\n    if (!mouseIsPastLastRow) {\n      overIndex = rowModel.getRowIndexAtPixel(y);\n      overNode = rowModel.getRow(overIndex);\n    }\n    const event = _addGridCommonParams(gos, {\n      type,\n      event: draggingEvent.event,\n      node: draggingEvent.dragItem.rowNode,\n      nodes: draggingEvent.dragItem.rowNodes,\n      overIndex,\n      overNode,\n      y,\n      vDirection: draggingEvent.vDirection\n    });\n    return event;\n  }\n  dispatchGridEvent(type, draggingEvent) {\n    const event = this.draggingToRowDragEvent(type, draggingEvent);\n    this.eventSvc.dispatchEvent(event);\n  }\n  onDragLeave(draggingEvent) {\n    this.dispatchGridEvent(\"rowDragLeave\", draggingEvent);\n    this.stopDragging(draggingEvent);\n    if (this.gos.get(\"rowDragManaged\")) {\n      this.clientSideRowModel.clearHighlight();\n    }\n  }\n  onDragStop(draggingEvent) {\n    this.dispatchGridEvent(\"rowDragEnd\", draggingEvent);\n    this.stopDragging(draggingEvent);\n    const { dragAndDrop, gos } = this.beans;\n    if (gos.get(\"rowDragManaged\") && (gos.get(\"suppressMoveWhenRowDragging\") || !this.isFromThisGrid(draggingEvent)) && dragAndDrop.isDropZoneWithinThisGrid(draggingEvent)) {\n      const rowsDrop = this.getRowsDrop(draggingEvent);\n      if (rowsDrop) {\n        this.dropRows(rowsDrop);\n      }\n      this.clientSideRowModel.clearHighlight();\n    }\n  }\n  onDragCancel(draggingEvent) {\n    this.dispatchGridEvent(\"rowDragCancel\", draggingEvent);\n    this.stopDragging(draggingEvent);\n    const { dragAndDrop, gos } = this.beans;\n    if (gos.get(\"rowDragManaged\") && (gos.get(\"suppressMoveWhenRowDragging\") || !this.isFromThisGrid(draggingEvent)) && dragAndDrop.isDropZoneWithinThisGrid(draggingEvent)) {\n      this.clientSideRowModel.clearHighlight();\n    }\n  }\n  stopDragging(draggingEvent) {\n    this.autoScrollService.ensureCleared();\n    this.getRowNodes(draggingEvent).forEach((rowNode) => {\n      this.setRowNodeDragging(rowNode, false);\n    });\n  }\n  setRowNodeDragging(rowNode, dragging) {\n    if (rowNode.dragging !== dragging) {\n      rowNode.dragging = dragging;\n      rowNode.dispatchRowEvent(\"draggingChanged\");\n    }\n  }\n  /** Drag and drop. Returns false if at least a row was moved, otherwise true */\n  dropRows(rowsDrop) {\n    return rowsDrop.sameGrid ? this.moveRows(rowsDrop) : this.addRows(rowsDrop);\n  }\n  addRows({ delta, target, rows }) {\n    const getRowIdFunc = _getRowIdCallback(this.gos);\n    const clientSideRowModel = this.clientSideRowModel;\n    const add = rows.filter(\n      ({ data, rowPinned }) => !clientSideRowModel.getRowNode(getRowIdFunc?.({ data, level: 0, rowPinned }) ?? data.id)\n    ).map(({ data }) => data);\n    if (add.length === 0) {\n      return false;\n    }\n    const addIndex = target && target.sourceRowIndex + (delta < 0 ? 0 : 1);\n    clientSideRowModel.updateRowData({ add, addIndex });\n    return true;\n  }\n  moveRows({ delta, target, rows }) {\n    const rowsToMoveSet = this.getValidRowsToMove(rows);\n    const focusSvc = this.beans.focusSvc;\n    const cellPosition = focusSvc.getFocusedCell();\n    const cellCtrl = cellPosition && _getCellByPosition(this.beans, cellPosition);\n    if (!this.reorderLeafChildren(rowsToMoveSet, ...this.getMoveRowsBounds(rowsToMoveSet, target, delta))) {\n      return false;\n    }\n    this.clientSideRowModel.refreshModel({\n      step: \"group\",\n      keepRenderedRows: true,\n      animate: !this.gos.get(\"suppressAnimationFrame\"),\n      changedPath: new ChangedPath(false, this.clientSideRowModel.rootNode),\n      rowNodesOrderChanged: true\n    });\n    if (cellCtrl) {\n      cellCtrl.focusCell();\n    } else {\n      focusSvc.clearFocusedCell();\n    }\n    return true;\n  }\n  /** Creates a set of valid rows to move, filtering out rows that are not leafs or are not in the current model (deleted) */\n  getValidRowsToMove(rows) {\n    const clientSideRowModel = this.clientSideRowModel;\n    const rowsSet = /* @__PURE__ */ new Set();\n    for (const row of rows) {\n      if (row.sourceRowIndex >= 0 && (row.rowTop !== null || row === clientSideRowModel.getRowNode(row.id))) {\n        rowsSet.add(row);\n      }\n    }\n    return rowsSet;\n  }\n  /** For reorderLeafChildren, returns min index of the rows to move, the target index and the max index of the rows to move. */\n  getMoveRowsBounds(rows, target, delta) {\n    const totalRows = this.clientSideRowModel.rootNode?.allLeafChildren.length ?? 0;\n    let targetPositionIdx = target?.sourceRowIndex ?? -1;\n    if (targetPositionIdx < 0 || targetPositionIdx >= totalRows) {\n      targetPositionIdx = totalRows;\n    } else if (delta >= 0) {\n      ++targetPositionIdx;\n    }\n    let firstAffectedLeafIdx = targetPositionIdx;\n    let lastAffectedLeafIndex = Math.min(targetPositionIdx, totalRows - 1);\n    for (const { sourceRowIndex } of rows) {\n      if (sourceRowIndex < firstAffectedLeafIdx)\n        firstAffectedLeafIdx = sourceRowIndex;\n      if (sourceRowIndex > lastAffectedLeafIndex)\n        lastAffectedLeafIndex = sourceRowIndex;\n    }\n    return [firstAffectedLeafIdx, targetPositionIdx, lastAffectedLeafIndex];\n  }\n  /** Reorders the children of the root node, so that the rows to move are in the correct order.\n   * @param rowsToMoveSet The valid set of rows to move, as returned by getValidRowsToMove\n   * @param firstAffectedLeafIdx The first index of the rows to move\n   * @param targetPositionIdx The target index, where the rows will be moved\n   * @param lastAffectedLeafIndex The last index of the rows to move\n   * @returns True if the order of the rows changed, false otherwise\n   */\n  reorderLeafChildren(rowsToMoveSet, firstAffectedLeafIdx, targetPositionIdx, lastAffectedLeafIndex) {\n    let orderChanged = false;\n    const allLeafChildren = this.clientSideRowModel.rootNode?.allLeafChildren;\n    if (!rowsToMoveSet.size || !allLeafChildren) {\n      return false;\n    }\n    let writeIdxLeft = firstAffectedLeafIdx;\n    for (let readIdx = firstAffectedLeafIdx; readIdx < targetPositionIdx; ++readIdx) {\n      const row = allLeafChildren[readIdx];\n      if (!rowsToMoveSet.has(row)) {\n        if (row.sourceRowIndex !== writeIdxLeft) {\n          row.sourceRowIndex = writeIdxLeft;\n          allLeafChildren[writeIdxLeft] = row;\n          orderChanged = true;\n        }\n        ++writeIdxLeft;\n      }\n    }\n    let writeIdxRight = lastAffectedLeafIndex;\n    for (let readIdx = lastAffectedLeafIndex; readIdx >= targetPositionIdx; --readIdx) {\n      const row = allLeafChildren[readIdx];\n      if (!rowsToMoveSet.has(row)) {\n        if (row.sourceRowIndex !== writeIdxRight) {\n          row.sourceRowIndex = writeIdxRight;\n          allLeafChildren[writeIdxRight] = row;\n          orderChanged = true;\n        }\n        --writeIdxRight;\n      }\n    }\n    for (const row of rowsToMoveSet) {\n      if (row.sourceRowIndex !== writeIdxLeft) {\n        row.sourceRowIndex = writeIdxLeft;\n        allLeafChildren[writeIdxLeft] = row;\n        orderChanged = true;\n      }\n      ++writeIdxLeft;\n    }\n    return orderChanged;\n  }\n};\n\n// packages/ag-grid-community/src/utils/mouse.ts\nfunction _areEventsNear(e1, e2, pixelCount) {\n  if (pixelCount === 0) {\n    return false;\n  }\n  const diffX = Math.abs(e1.clientX - e2.clientX);\n  const diffY = Math.abs(e1.clientY - e2.clientY);\n  return Math.max(diffX, diffY) <= pixelCount;\n}\n\n// packages/ag-grid-community/src/dragAndDrop/dragService.ts\nvar DragService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"dragSvc\";\n    this.dragEndFunctions = [];\n    this.dragSources = [];\n  }\n  destroy() {\n    const { dragSources } = this;\n    dragSources.forEach(this.removeListener.bind(this));\n    dragSources.length = 0;\n    super.destroy();\n  }\n  removeListener(dragSourceAndListener) {\n    const element = dragSourceAndListener.dragSource.eElement;\n    const mouseDownListener = dragSourceAndListener.mouseDownListener;\n    element.removeEventListener(\"mousedown\", mouseDownListener);\n    if (dragSourceAndListener.touchEnabled) {\n      const touchStartListener = dragSourceAndListener.touchStartListener;\n      element.removeEventListener(\"touchstart\", touchStartListener, { passive: true });\n    }\n  }\n  removeDragSource(params) {\n    const { dragSources } = this;\n    const dragSourceAndListener = dragSources.find((item) => item.dragSource === params);\n    if (!dragSourceAndListener) {\n      return;\n    }\n    this.removeListener(dragSourceAndListener);\n    _removeFromArray(dragSources, dragSourceAndListener);\n  }\n  addDragSource(params) {\n    const mouseListener = this.onMouseDown.bind(this, params);\n    const { eElement, includeTouch, stopPropagationForTouch } = params;\n    eElement.addEventListener(\"mousedown\", mouseListener);\n    let touchListener = null;\n    const suppressTouch = this.gos.get(\"suppressTouch\");\n    if (includeTouch && !suppressTouch) {\n      touchListener = (touchEvent) => {\n        if (_isFocusableFormField(touchEvent.target)) {\n          return;\n        }\n        if (stopPropagationForTouch) {\n          touchEvent.stopPropagation();\n        }\n        this.onTouchStart(params, touchEvent);\n      };\n      eElement.addEventListener(\"touchstart\", touchListener, { passive: false });\n    }\n    this.dragSources.push({\n      dragSource: params,\n      mouseDownListener: mouseListener,\n      touchStartListener: touchListener,\n      touchEnabled: !!includeTouch\n    });\n  }\n  // gets called whenever mouse down on any drag source\n  onTouchStart(params, touchEvent) {\n    this.currentDragParams = params;\n    this.dragging = false;\n    const touch = touchEvent.touches[0];\n    this.touchLastTime = touch;\n    this.touchStart = touch;\n    const touchMoveEvent = (e) => this.onTouchMove(e, params.eElement);\n    const touchEndEvent = (e) => this.onTouchUp(e, params.eElement);\n    const documentTouchMove = (e) => {\n      if (e.cancelable) {\n        e.preventDefault();\n      }\n    };\n    const target = touchEvent.target;\n    const events = [\n      // Prevents the page document from moving while we are dragging items around.\n      // preventDefault needs to be called in the touchmove listener and never inside the\n      // touchstart, because using touchstart causes the click event to be cancelled on touch devices.\n      {\n        target: _getRootNode(this.beans),\n        type: \"touchmove\",\n        listener: documentTouchMove,\n        options: { passive: false }\n      },\n      { target, type: \"touchmove\", listener: touchMoveEvent, options: { passive: true } },\n      { target, type: \"touchend\", listener: touchEndEvent, options: { passive: true } },\n      { target, type: \"touchcancel\", listener: touchEndEvent, options: { passive: true } }\n    ];\n    this.addTemporaryEvents(events);\n    if (params.dragStartPixels === 0) {\n      this.onCommonMove(touch, this.touchStart, params.eElement);\n    }\n  }\n  // gets called whenever mouse down on any drag source\n  onMouseDown(params, mouseEvent) {\n    const e = mouseEvent;\n    if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {\n      return;\n    }\n    if (e._alreadyProcessedByDragService) {\n      return;\n    }\n    e._alreadyProcessedByDragService = true;\n    if (mouseEvent.button !== 0) {\n      return;\n    }\n    if (this.shouldPreventMouseEvent(mouseEvent)) {\n      mouseEvent.preventDefault();\n    }\n    this.currentDragParams = params;\n    this.dragging = false;\n    this.mouseStartEvent = mouseEvent;\n    this.startTarget = mouseEvent.target;\n    const mouseMoveEvent = (event) => this.onMouseMove(event, params.eElement);\n    const mouseUpEvent = (event) => this.onMouseUp(event, params.eElement);\n    const contextEvent = (event) => event.preventDefault();\n    const keydownEvent = (event) => {\n      if (event.key === KeyCode.ESCAPE) {\n        this.cancelDrag(params.eElement);\n      }\n    };\n    const target = _getRootNode(this.beans);\n    const events = [\n      { target, type: \"mousemove\", listener: mouseMoveEvent },\n      { target, type: \"mouseup\", listener: mouseUpEvent },\n      { target, type: \"contextmenu\", listener: contextEvent },\n      { target, type: \"keydown\", listener: keydownEvent }\n    ];\n    this.addTemporaryEvents(events);\n    if (params.dragStartPixels === 0) {\n      this.onMouseMove(mouseEvent, params.eElement);\n    }\n  }\n  addTemporaryEvents(events) {\n    events.forEach((currentEvent) => {\n      const { target, type, listener, options } = currentEvent;\n      target.addEventListener(type, listener, options);\n    });\n    this.dragEndFunctions.push(() => {\n      events.forEach((currentEvent) => {\n        const { target, type, listener, options } = currentEvent;\n        target.removeEventListener(type, listener, options);\n      });\n    });\n  }\n  // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n  // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n  isEventNearStartEvent(currentEvent, startEvent) {\n    const { dragStartPixels } = this.currentDragParams;\n    const requiredPixelDiff = _exists(dragStartPixels) ? dragStartPixels : 4;\n    return _areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n  }\n  getFirstActiveTouch(touchList) {\n    for (let i = 0; i < touchList.length; i++) {\n      if (touchList[i].identifier === this.touchStart.identifier) {\n        return touchList[i];\n      }\n    }\n    return null;\n  }\n  onCommonMove(currentEvent, startEvent, el) {\n    if (!this.dragging) {\n      if (this.isEventNearStartEvent(currentEvent, startEvent)) {\n        return;\n      }\n      this.dragging = true;\n      this.eventSvc.dispatchEvent({\n        type: \"dragStarted\",\n        target: el\n      });\n      this.currentDragParams.onDragStart(startEvent);\n      if (!this.currentDragParams) {\n        this.dragging = false;\n        return;\n      }\n      this.currentDragParams.onDragging(startEvent);\n    }\n    this.currentDragParams?.onDragging(currentEvent);\n  }\n  onTouchMove(touchEvent, el) {\n    const touch = this.getFirstActiveTouch(touchEvent.touches);\n    if (!touch) {\n      return;\n    }\n    this.onCommonMove(touch, this.touchStart, el);\n  }\n  // only gets called after a mouse down - as this is only added after mouseDown\n  // and is removed when mouseUp happens\n  onMouseMove(mouseEvent, el) {\n    if (_isBrowserSafari()) {\n      const eDocument = _getDocument(this.beans);\n      eDocument.getSelection()?.removeAllRanges();\n    }\n    if (this.shouldPreventMouseEvent(mouseEvent)) {\n      mouseEvent.preventDefault();\n    }\n    this.onCommonMove(mouseEvent, this.mouseStartEvent, el);\n  }\n  shouldPreventMouseEvent(mouseEvent) {\n    const { gos } = this;\n    const isEnableCellTextSelect = gos.get(\"enableCellTextSelection\");\n    const isMouseMove = mouseEvent.type === \"mousemove\";\n    const isOverFormFieldElement = (mouseEvent2) => {\n      const el = mouseEvent2.target;\n      const tagName = el?.tagName.toLocaleLowerCase();\n      return !!tagName?.match(\"^a$|textarea|input|select|button\");\n    };\n    return (\n      // when `isEnableCellTextSelect` is `true`, we need to preventDefault on mouseMove\n      // to avoid the grid text being selected while dragging components.\n      isEnableCellTextSelect && isMouseMove && mouseEvent.cancelable && _isEventFromThisGrid(gos, mouseEvent) && !isOverFormFieldElement(mouseEvent)\n    );\n  }\n  onTouchUp(touchEvent, el) {\n    let touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n    if (!touch) {\n      touch = this.touchLastTime;\n    }\n    this.onUpCommon(touch, el);\n  }\n  onMouseUp(mouseEvent, el) {\n    this.onUpCommon(mouseEvent, el);\n  }\n  onUpCommon(eventOrTouch, el) {\n    if (this.dragging) {\n      this.dragging = false;\n      this.currentDragParams.onDragStop(eventOrTouch);\n      this.eventSvc.dispatchEvent({\n        type: \"dragStopped\",\n        target: el\n      });\n    }\n    this.resetDragProperties();\n  }\n  cancelDrag(el) {\n    this.eventSvc.dispatchEvent({\n      type: \"dragCancelled\",\n      target: el\n    });\n    this.currentDragParams?.onDragCancel?.();\n    this.resetDragProperties();\n  }\n  resetDragProperties() {\n    this.mouseStartEvent = null;\n    this.startTarget = null;\n    this.touchStart = null;\n    this.touchLastTime = null;\n    this.currentDragParams = null;\n    const { dragEndFunctions } = this;\n    dragEndFunctions.forEach((func) => func());\n    dragEndFunctions.length = 0;\n  }\n};\n\n// packages/ag-grid-community/src/entities/agColumnGroup.ts\nfunction createUniqueColumnGroupId(groupId, instanceId) {\n  return groupId + \"_\" + instanceId;\n}\nfunction isColumnGroup(col) {\n  return col instanceof AgColumnGroup;\n}\nvar AgColumnGroup = class extends BeanStub {\n  constructor(providedColumnGroup, groupId, partId, pinned) {\n    super();\n    this.providedColumnGroup = providedColumnGroup;\n    this.groupId = groupId;\n    this.partId = partId;\n    this.pinned = pinned;\n    this.isColumn = false;\n    // depends on the open/closed state of the group, only displaying columns are stored here\n    this.displayedChildren = [];\n    // The measured height of this column's header when autoHeaderHeight is enabled\n    this.autoHeaderHeight = null;\n    this.parent = null;\n  }\n  // as the user is adding and removing columns, the groups are recalculated.\n  // this reset clears out all children, ready for children to be added again\n  reset() {\n    this.parent = null;\n    this.children = null;\n    this.displayedChildren = null;\n  }\n  getParent() {\n    return this.parent;\n  }\n  getUniqueId() {\n    return createUniqueColumnGroupId(this.groupId, this.partId);\n  }\n  isEmptyGroup() {\n    return this.displayedChildren.length === 0;\n  }\n  isMoving() {\n    const allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();\n    if (!allLeafColumns || allLeafColumns.length === 0) {\n      return false;\n    }\n    return allLeafColumns.every((col) => col.isMoving());\n  }\n  checkLeft() {\n    this.displayedChildren.forEach((child) => {\n      if (isColumnGroup(child)) {\n        child.checkLeft();\n      }\n    });\n    if (this.displayedChildren.length > 0) {\n      if (this.gos.get(\"enableRtl\")) {\n        const lastChild = _last(this.displayedChildren);\n        const lastChildLeft = lastChild.getLeft();\n        this.setLeft(lastChildLeft);\n      } else {\n        const firstChildLeft = this.displayedChildren[0].getLeft();\n        this.setLeft(firstChildLeft);\n      }\n    } else {\n      this.setLeft(null);\n    }\n  }\n  getLeft() {\n    return this.left;\n  }\n  getOldLeft() {\n    return this.oldLeft;\n  }\n  setLeft(left) {\n    this.oldLeft = this.left;\n    if (this.left !== left) {\n      this.left = left;\n      this.dispatchLocalEvent({ type: \"leftChanged\" });\n    }\n  }\n  getPinned() {\n    return this.pinned;\n  }\n  getGroupId() {\n    return this.groupId;\n  }\n  getPartId() {\n    return this.partId;\n  }\n  getActualWidth() {\n    let groupActualWidth = 0;\n    this.displayedChildren?.forEach((child) => {\n      groupActualWidth += child.getActualWidth();\n    });\n    return groupActualWidth;\n  }\n  isResizable() {\n    if (!this.displayedChildren) {\n      return false;\n    }\n    let result = false;\n    this.displayedChildren.forEach((child) => {\n      if (child.isResizable()) {\n        result = true;\n      }\n    });\n    return result;\n  }\n  getMinWidth() {\n    let result = 0;\n    this.displayedChildren.forEach((groupChild) => {\n      result += groupChild.getMinWidth();\n    });\n    return result;\n  }\n  addChild(child) {\n    if (!this.children) {\n      this.children = [];\n    }\n    this.children.push(child);\n  }\n  getDisplayedChildren() {\n    return this.displayedChildren;\n  }\n  getLeafColumns() {\n    const result = [];\n    this.addLeafColumns(result);\n    return result;\n  }\n  getDisplayedLeafColumns() {\n    const result = [];\n    this.addDisplayedLeafColumns(result);\n    return result;\n  }\n  getDefinition() {\n    return this.providedColumnGroup.getColGroupDef();\n  }\n  getColGroupDef() {\n    return this.providedColumnGroup.getColGroupDef();\n  }\n  isPadding() {\n    return this.providedColumnGroup.isPadding();\n  }\n  isExpandable() {\n    return this.providedColumnGroup.isExpandable();\n  }\n  isExpanded() {\n    return this.providedColumnGroup.isExpanded();\n  }\n  setExpanded(expanded) {\n    this.providedColumnGroup.setExpanded(expanded);\n  }\n  isAutoHeaderHeight() {\n    return !!this.getColGroupDef()?.autoHeaderHeight;\n  }\n  getAutoHeaderHeight() {\n    return this.autoHeaderHeight;\n  }\n  /** Returns true if the header height has changed */\n  setAutoHeaderHeight(height) {\n    const changed = height !== this.autoHeaderHeight;\n    this.autoHeaderHeight = height;\n    return changed;\n  }\n  addDisplayedLeafColumns(leafColumns) {\n    this.displayedChildren.forEach((child) => {\n      if (isColumn(child)) {\n        leafColumns.push(child);\n      } else if (isColumnGroup(child)) {\n        child.addDisplayedLeafColumns(leafColumns);\n      }\n    });\n  }\n  addLeafColumns(leafColumns) {\n    this.children.forEach((child) => {\n      if (isColumn(child)) {\n        leafColumns.push(child);\n      } else if (isColumnGroup(child)) {\n        child.addLeafColumns(leafColumns);\n      }\n    });\n  }\n  getChildren() {\n    return this.children;\n  }\n  getColumnGroupShow() {\n    return this.providedColumnGroup.getColumnGroupShow();\n  }\n  getProvidedColumnGroup() {\n    return this.providedColumnGroup;\n  }\n  getPaddingLevel() {\n    const parent = this.getParent();\n    if (!this.isPadding() || !parent || !parent.isPadding()) {\n      return 0;\n    }\n    return 1 + parent.getPaddingLevel();\n  }\n  calculateDisplayedColumns() {\n    this.displayedChildren = [];\n    let parentWithExpansion = this;\n    while (parentWithExpansion != null && parentWithExpansion.isPadding()) {\n      parentWithExpansion = parentWithExpansion.getParent();\n    }\n    const isExpandable = parentWithExpansion ? parentWithExpansion.getProvidedColumnGroup().isExpandable() : false;\n    if (!isExpandable) {\n      this.displayedChildren = this.children;\n      this.dispatchLocalEvent({ type: \"displayedChildrenChanged\" });\n      return;\n    }\n    this.children.forEach((child) => {\n      const emptyGroup = isColumnGroup(child) && (!child.displayedChildren || !child.displayedChildren.length);\n      if (emptyGroup) {\n        return;\n      }\n      const headerGroupShow = child.getColumnGroupShow();\n      switch (headerGroupShow) {\n        case \"open\":\n          if (parentWithExpansion.getProvidedColumnGroup().isExpanded()) {\n            this.displayedChildren.push(child);\n          }\n          break;\n        case \"closed\":\n          if (!parentWithExpansion.getProvidedColumnGroup().isExpanded()) {\n            this.displayedChildren.push(child);\n          }\n          break;\n        default:\n          this.displayedChildren.push(child);\n          break;\n      }\n    });\n    this.dispatchLocalEvent({ type: \"displayedChildrenChanged\" });\n  }\n};\n\n// packages/ag-grid-community/src/entities/rowNode.ts\nvar ROW_ID_PREFIX_ROW_GROUP = \"row-group-\";\nvar ROW_ID_PREFIX_TOP_PINNED = \"t-\";\nvar ROW_ID_PREFIX_BOTTOM_PINNED = \"b-\";\nvar OBJECT_ID_SEQUENCE = 0;\nvar RowNode = class {\n  constructor(beans) {\n    /** `true` if this row is a master row, part of master / detail (ie row can be expanded to show detail) */\n    this.master = false;\n    /** `true` if this row is a detail row, part of master / detail (ie child row of an expanded master row)*/\n    this.detail = void 0;\n    /** The current row index. If the row is filtered out or in a collapsed group, this value will be `null`. */\n    this.rowIndex = null;\n    /** The key for the group eg Ireland, UK, USA */\n    this.key = null;\n    /**\n     * The index of the row in the source rowData array including any updates via transactions.\n     * It does not change when sorting, filtering, grouping, pivoting or any other UI related operations.\n     * If this is a filler node (a visual row created by AG Grid in tree data or grouping) the value will be `-1`.\n     *\n     * Generally readonly. It is modified only by:\n     * - ClientSideNodeManager, cast to ClientSideNodeManagerRowNode\n     * - ClientSideRowModel, cast to ClientSideRowModelRowNode\n     */\n    this.sourceRowIndex = -1;\n    /**\n     * Children mapped by the pivot columns.\n     *\n     * TODO: this field is currently used only by the GroupStrategy and Pivot.\n     * TreeStrategy does not use it, and pivot cannot be enabled with tree data.\n     * Creating a new object for every row when not pivoting and not grouping\n     * consumes memory unnecessarily. Setting it to null however currently breaks\n     * transactional updates in groups so this requires a deeper investigation on GroupStrategy.\n     */\n    this.childrenMapped = {};\n    /** The TreeNode associated to this row. Used only with tree data. */\n    this.treeNode = null;\n    /** The flags associated to this node. Used only with tree data. */\n    this.treeNodeFlags = 0;\n    /**\n     * This will be `true` if it has a rowIndex assigned, otherwise `false`.\n     */\n    this.displayed = false;\n    /** The row top position in pixels. */\n    this.rowTop = null;\n    /** The top pixel for this row last time, makes sense if data set was ordered or filtered,\n     * it is used so new rows can animate in from their old position. */\n    this.oldRowTop = null;\n    /** `true` by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n    this.selectable = true;\n    /**\n     * Used by sorting service - to give deterministic sort to groups. Previously we\n     * just id for this, however id is a string and had slower sorting compared to numbers.\n     * If re-naming this property, you must also update `IGNORED_SIBLING_PROPERTIES`\n     */\n    this.__objectId = OBJECT_ID_SEQUENCE++;\n    /** `true` when nodes with the same id are being removed and added as part of the same batch transaction */\n    this.alreadyRendered = false;\n    this.highlighted = null;\n    this.hovered = false;\n    this.__selected = false;\n    this.beans = beans;\n  }\n  /**\n   * Replaces the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n   */\n  setData(data) {\n    this.setDataCommon(data, false);\n  }\n  // similar to setRowData, however it is expected that the data is the same data item. this\n  // is intended to be used with Redux type stores, where the whole data can be changed. we are\n  // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n  // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n  // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n  /**\n   * Updates the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n   */\n  updateData(data) {\n    this.setDataCommon(data, true);\n  }\n  setDataCommon(data, update) {\n    const { valueCache, selectionSvc, eventSvc } = this.beans;\n    const oldData = this.data;\n    this.data = data;\n    valueCache?.onDataChanged();\n    this.updateDataOnDetailNode();\n    selectionSvc?.updateRowSelectable(this);\n    this.resetQuickFilterAggregateText();\n    const event = this.createDataChangedEvent(data, oldData, update);\n    this.__localEventService?.dispatchEvent(event);\n    if (this.sibling) {\n      this.sibling.data = data;\n      const event2 = this.sibling.createDataChangedEvent(data, oldData, update);\n      this.sibling.__localEventService?.dispatchEvent(event2);\n    }\n    eventSvc.dispatchEvent({ type: \"rowNodeDataChanged\", node: this });\n    const pinnedSibling = this.pinnedSibling;\n    if (pinnedSibling) {\n      pinnedSibling.data = data;\n      pinnedSibling.__localEventService?.dispatchEvent(\n        pinnedSibling.createDataChangedEvent(data, oldData, update)\n      );\n      eventSvc.dispatchEvent({ type: \"rowNodeDataChanged\", node: pinnedSibling });\n    }\n  }\n  // when we are doing master / detail, the detail node is lazy created, but then kept around.\n  // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n  // in sync, otherwise expand/collapse of the detail would still show the old values.\n  updateDataOnDetailNode() {\n    if (this.detailNode) {\n      this.detailNode.data = this.data;\n    }\n  }\n  createDataChangedEvent(newData, oldData, update) {\n    return {\n      type: \"dataChanged\",\n      node: this,\n      oldData,\n      newData,\n      update\n    };\n  }\n  getRowIndexString() {\n    if (this.rowIndex == null) {\n      _error(13);\n      return null;\n    }\n    if (this.rowPinned === \"top\") {\n      return ROW_ID_PREFIX_TOP_PINNED + this.rowIndex;\n    }\n    if (this.rowPinned === \"bottom\") {\n      return ROW_ID_PREFIX_BOTTOM_PINNED + this.rowIndex;\n    }\n    return this.rowIndex.toString();\n  }\n  setDataAndId(data, id) {\n    const { selectionSvc } = this.beans;\n    const oldNode = selectionSvc?.createDaemonNode?.(this);\n    const oldData = this.data;\n    this.data = data;\n    this.updateDataOnDetailNode();\n    this.setId(id);\n    if (selectionSvc) {\n      selectionSvc.updateRowSelectable(this);\n      selectionSvc.syncInRowNode(this, oldNode);\n    }\n    const event = this.createDataChangedEvent(data, oldData, false);\n    this.__localEventService?.dispatchEvent(event);\n  }\n  setId(id) {\n    const getRowIdFunc = _getRowIdCallback(this.beans.gos);\n    if (getRowIdFunc) {\n      if (this.data) {\n        const parentKeys = this.parent?.getRoute() ?? [];\n        this.id = getRowIdFunc({\n          data: this.data,\n          parentKeys: parentKeys.length > 0 ? parentKeys : void 0,\n          level: this.level,\n          rowPinned: this.rowPinned\n        });\n        if (this.id.startsWith(ROW_ID_PREFIX_ROW_GROUP)) {\n          _error(14, {\n            groupPrefix: ROW_ID_PREFIX_ROW_GROUP\n          });\n        }\n      } else {\n        this.id = void 0;\n      }\n    } else {\n      this.id = id;\n    }\n  }\n  setRowTop(rowTop) {\n    this.oldRowTop = this.rowTop;\n    if (this.rowTop === rowTop) {\n      return;\n    }\n    this.rowTop = rowTop;\n    this.dispatchRowEvent(\"topChanged\");\n    this.setDisplayed(rowTop !== null);\n  }\n  clearRowTopAndRowIndex() {\n    this.oldRowTop = null;\n    this.setRowTop(null);\n    this.setRowIndex(null);\n  }\n  setHovered(hovered) {\n    this.hovered = hovered;\n  }\n  isHovered() {\n    return this.hovered;\n  }\n  /**\n   * Sets the row height.\n   * Call if you want to change the height initially assigned to the row.\n   * After calling, you must call `api.onRowHeightChanged()` so the grid knows it needs to work out the placement of the rows. */\n  setRowHeight(rowHeight, estimated = false) {\n    this.rowHeight = rowHeight;\n    this.rowHeightEstimated = estimated;\n    this.dispatchRowEvent(\"heightChanged\");\n  }\n  setExpanded(expanded, e, forceSync) {\n    this.beans.expansionSvc?.setExpanded(this, expanded, e, forceSync);\n  }\n  /**\n   * Replaces the value on the `rowNode` for the specified column. When complete,\n   * the grid will refresh the rendered cell on the required row only.\n   * **Note**: This method only fires `onCellEditRequest` when the Grid is in **Read Only** mode.\n   *\n   * @param colKey The column where the value should be updated\n   * @param newValue The new value\n   * @param eventSource The source of the event\n   * @returns `true` if the value was changed, otherwise `false`.\n   */\n  setDataValue(colKey, newValue, eventSource) {\n    const { colModel, valueSvc, gos, selectionSvc } = this.beans;\n    const column = typeof colKey !== \"string\" ? colKey : colModel.getCol(colKey) ?? colModel.getColDefCol(colKey);\n    if (!column) {\n      return false;\n    }\n    const oldValue = valueSvc.getValueForDisplay(column, this).value;\n    if (gos.get(\"readOnlyEdit\")) {\n      const {\n        beans: { eventSvc },\n        data,\n        rowIndex,\n        rowPinned\n      } = this;\n      eventSvc.dispatchEvent({\n        type: \"cellEditRequest\",\n        event: null,\n        rowIndex,\n        rowPinned,\n        column,\n        colDef: column.colDef,\n        data,\n        node: this,\n        oldValue,\n        newValue,\n        value: newValue,\n        source: eventSource\n      });\n      return false;\n    }\n    const valueChanged = valueSvc.setValue(this, column, newValue, eventSource);\n    this.dispatchCellChangedEvent(column, newValue, oldValue);\n    const selectable = selectionSvc?.updateRowSelectable(this);\n    const pinnedSibling = this.pinnedSibling;\n    if (pinnedSibling) {\n      if (valueChanged) {\n        pinnedSibling.dispatchCellChangedEvent(column, newValue, oldValue);\n      }\n      pinnedSibling.selectable = selectable ?? true;\n    }\n    return valueChanged;\n  }\n  updateHasChildren() {\n    let newValue = this.group && !this.footer || this.childrenAfterGroup && this.childrenAfterGroup.length > 0;\n    const { rowChildrenSvc } = this.beans;\n    if (rowChildrenSvc) {\n      newValue = rowChildrenSvc.getHasChildrenValue(this);\n    }\n    if (newValue !== this.__hasChildren) {\n      this.__hasChildren = !!newValue;\n      this.dispatchRowEvent(\"hasChildrenChanged\");\n    }\n  }\n  hasChildren() {\n    if (this.__hasChildren == null) {\n      this.updateHasChildren();\n    }\n    return this.__hasChildren;\n  }\n  dispatchCellChangedEvent(column, newValue, oldValue) {\n    const cellChangedEvent = {\n      type: \"cellChanged\",\n      node: this,\n      column,\n      newValue,\n      oldValue\n    };\n    this.__localEventService?.dispatchEvent(cellChangedEvent);\n  }\n  /**\n   * The first time `quickFilter` runs, the grid creates a one-off string representation of the row.\n   * This string is then used for the quick filter instead of hitting each column separately.\n   * When you edit, using grid editing, this string gets cleared down.\n   * However if you edit without using grid editing, you will need to clear this string down for the row to be updated with the new values.\n   * Otherwise new values will not work with the `quickFilter`. */\n  resetQuickFilterAggregateText() {\n    this.quickFilterAggregateText = null;\n  }\n  /** Returns:\n   * - `true` if the node can be expanded, i.e it is a group or master row.\n   * - `false` if the node cannot be expanded\n   */\n  isExpandable() {\n    return this.beans.expansionSvc?.isExpandable(this) ?? false;\n  }\n  /** Returns:\n   * - `true` if node is selected,\n   * - `false` if the node isn't selected\n   * - `undefined` if it's partially selected (group where not all children are selected). */\n  isSelected() {\n    if (this.footer) {\n      return this.sibling.isSelected();\n    }\n    if (this.rowPinned && this.pinnedSibling) {\n      return this.pinnedSibling.isSelected();\n    }\n    return this.__selected;\n  }\n  /** Perform a depth-first search of this node and its children. */\n  depthFirstSearch(callback) {\n    this.childrenAfterGroup?.forEach((child) => child.depthFirstSearch(callback));\n    callback(this);\n  }\n  dispatchRowEvent(type) {\n    this.__localEventService?.dispatchEvent({\n      type,\n      node: this\n    });\n  }\n  /**\n   * Select (or deselect) the node.\n   * @param newValue -`true` for selection, `false` for deselection.\n   * @param clearSelection - If selecting, then passing `true` will select the node exclusively (i.e. NOT do multi select). If doing deselection, `clearSelection` has no impact.\n   * @param source - Source property that will appear in the `selectionChanged` event.\n   */\n  setSelected(newValue, clearSelection = false, source = \"api\") {\n    this.beans.selectionSvc?.setNodesSelected({\n      nodes: [this],\n      newValue,\n      clearSelection,\n      source\n    });\n  }\n  /**\n   * Returns:\n   * - `true` if node is either pinned to the `top` or `bottom`\n   * - `false` if the node isn't pinned\n   */\n  isRowPinned() {\n    return !!this.rowPinned;\n  }\n  __addEventListener(eventType, listener) {\n    if (!this.__localEventService) {\n      this.__localEventService = new LocalEventService();\n    }\n    this.__localEventService.addEventListener(eventType, listener);\n  }\n  __removeEventListener(eventType, listener) {\n    this.removeLocalListener(eventType, listener);\n  }\n  /**\n   * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods.\n   */\n  addEventListener(eventType, userListener) {\n    this.beans.validation?.checkRowEvents(eventType);\n    if (!this.__localEventService) {\n      this.__localEventService = new LocalEventService();\n    }\n    this.frameworkEventListenerService = this.beans.frameworkOverrides.createLocalEventListenerWrapper?.(\n      this.frameworkEventListenerService,\n      this.__localEventService\n    );\n    const listener = this.frameworkEventListenerService?.wrap(eventType, userListener) ?? userListener;\n    this.__localEventService.addEventListener(eventType, listener);\n  }\n  /**\n   * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods.\n   */\n  removeEventListener(eventType, userListener) {\n    const listener = this.frameworkEventListenerService?.unwrap(eventType, userListener) ?? userListener;\n    this.removeLocalListener(eventType, listener);\n  }\n  removeLocalListener(eventType, listener) {\n    this.__localEventService?.removeEventListener(eventType, listener);\n    if (this.__localEventService?.noRegisteredListenersExist()) {\n      this.__localEventService = null;\n    }\n  }\n  /**\n   * @deprecated v32.2.0 Check `node.detail` then user provided callback `isFullWidthRow` instead.\n   *\n   * Returns:\n   * - `true` if the node is a full width cell\n   * - `false` if the node is not a full width cell\n   */\n  isFullWidthCell() {\n    _warn(61);\n    if (this.detail) {\n      return true;\n    }\n    const isFullWidthCellFunc = this.beans.gos.getCallback(\"isFullWidthRow\");\n    return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this }) : false;\n  }\n  /**\n   * Returns the route of keys to the row node. Returns undefined if the node has no key.\n   */\n  getRoute() {\n    if (this.level === -1) {\n      return [];\n    }\n    if (this.key == null) {\n      return void 0;\n    }\n    const res = [];\n    let pointer = this;\n    while (pointer && pointer.key != null) {\n      res.push(pointer.key);\n      pointer = pointer.parent;\n    }\n    return res.reverse();\n  }\n  setFirstChild(firstChild) {\n    if (this.firstChild !== firstChild) {\n      this.firstChild = firstChild;\n      this.dispatchRowEvent(\"firstChildChanged\");\n    }\n  }\n  setDisplayed(displayed) {\n    if (this.displayed !== displayed) {\n      this.displayed = displayed;\n      this.dispatchRowEvent(\"displayedChanged\");\n    }\n  }\n  setRowIndex(rowIndex) {\n    if (this.rowIndex !== rowIndex) {\n      this.rowIndex = rowIndex;\n      this.dispatchRowEvent(\"rowIndexChanged\");\n    }\n  }\n  setAllChildrenCount(allChildrenCount) {\n    if (this.allChildrenCount !== allChildrenCount) {\n      this.allChildrenCount = allChildrenCount;\n      this.dispatchRowEvent(\"allChildrenCountChanged\");\n    }\n  }\n  setUiLevel(uiLevel) {\n    if (this.uiLevel !== uiLevel) {\n      this.uiLevel = uiLevel;\n      this.dispatchRowEvent(\"uiLevelChanged\");\n    }\n  }\n  getFirstChild() {\n    if (this.childStore) {\n      return this.childStore.getFirstNode();\n    }\n    return this.childrenAfterSort?.[0] ?? null;\n  }\n};\n\n// packages/ag-grid-community/src/entities/rowNodeUtils.ts\nfunction _createGlobalRowEvent(rowNode, gos, type) {\n  return _addGridCommonParams(gos, {\n    type,\n    node: rowNode,\n    data: rowNode.data,\n    rowIndex: rowNode.rowIndex,\n    rowPinned: rowNode.rowPinned\n  });\n}\nvar IGNORED_SIBLING_PROPERTIES = /* @__PURE__ */ new Set([\"__localEventService\", \"__objectId\", \"sticky\", \"__autoHeights\", \"__checkAutoHeightsDebounced\", \"childStore\"]);\nfunction _createRowNodeSibling(rowNode, beans) {\n  const sibling = new RowNode(beans);\n  Object.keys(rowNode).forEach((key) => {\n    if (IGNORED_SIBLING_PROPERTIES.has(key)) {\n      return;\n    }\n    sibling[key] = rowNode[key];\n  });\n  sibling.oldRowTop = null;\n  return sibling;\n}\n\n// packages/ag-grid-community/src/filter/filterWrapperComp.ts\nvar FilterWrapperElement = { tag: \"div\", cls: \"ag-filter\" };\nvar FilterWrapperComp = class extends Component {\n  constructor(column, source) {\n    super(FilterWrapperElement);\n    this.column = column;\n    this.source = source;\n    this.filterWrapper = null;\n  }\n  postConstruct() {\n    this.createFilter(true);\n    this.addManagedEventListeners({ filterDestroyed: this.onFilterDestroyed.bind(this) });\n  }\n  hasFilter() {\n    return !!this.filterWrapper;\n  }\n  getFilter() {\n    return this.filterWrapper?.filterPromise ?? null;\n  }\n  afterInit() {\n    return this.filterWrapper?.filterPromise?.then(() => {\n    }) ?? AgPromise.resolve();\n  }\n  afterGuiAttached(params) {\n    this.filterWrapper?.filterPromise?.then((filter) => {\n      filter?.afterGuiAttached?.(params);\n    });\n  }\n  afterGuiDetached() {\n    this.filterWrapper?.filterPromise?.then((filter) => {\n      filter?.afterGuiDetached?.();\n    });\n  }\n  createFilter(init) {\n    const { column, source } = this;\n    this.filterWrapper = this.beans.filterManager?.getOrCreateFilterWrapper(column) ?? null;\n    if (!this.filterWrapper?.filterPromise) {\n      return;\n    }\n    this.filterWrapper.filterPromise.then((filter) => {\n      const guiFromFilter = filter.getGui();\n      if (!_exists(guiFromFilter)) {\n        _warn(69, { guiFromFilter });\n      }\n      this.appendChild(guiFromFilter);\n      if (init) {\n        this.eventSvc.dispatchEvent({\n          type: \"filterOpened\",\n          column,\n          source,\n          eGui: this.getGui()\n        });\n      }\n    });\n  }\n  onFilterDestroyed(event) {\n    if ((event.source === \"api\" || event.source === \"paramsUpdated\") && event.column.getId() === this.column.getId() && this.beans.colModel.getColDefCol(this.column)) {\n      _clearElement(this.getGui());\n      this.createFilter();\n    }\n  }\n  destroy() {\n    this.filterWrapper = null;\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/rendering/features/positionableFeature.ts\nvar RESIZE_CONTAINER_STYLE = \"ag-resizer-wrapper\";\nvar makeDiv = (dataRefPrefix, classSuffix) => ({\n  tag: \"div\",\n  ref: `${dataRefPrefix}Resizer`,\n  cls: `ag-resizer ag-resizer-${classSuffix}`\n});\nvar RESIZE_TEMPLATE = {\n  tag: \"div\",\n  cls: RESIZE_CONTAINER_STYLE,\n  children: [\n    makeDiv(\"eTopLeft\", \"topLeft\"),\n    makeDiv(\"eTop\", \"top\"),\n    makeDiv(\"eTopRight\", \"topRight\"),\n    makeDiv(\"eRight\", \"right\"),\n    makeDiv(\"eBottomRight\", \"bottomRight\"),\n    makeDiv(\"eBottom\", \"bottom\"),\n    makeDiv(\"eBottomLeft\", \"bottomLeft\"),\n    makeDiv(\"eLeft\", \"left\")\n  ]\n};\nvar PositionableFeature = class extends BeanStub {\n  constructor(element, config) {\n    super();\n    this.element = element;\n    this.dragStartPosition = {\n      x: 0,\n      y: 0\n    };\n    this.position = {\n      x: 0,\n      y: 0\n    };\n    this.lastSize = {\n      width: -1,\n      height: -1\n    };\n    this.positioned = false;\n    this.resizersAdded = false;\n    this.resizeListeners = [];\n    this.boundaryEl = null;\n    this.isResizing = false;\n    this.isMoving = false;\n    this.resizable = {};\n    this.movable = false;\n    this.currentResizer = null;\n    this.config = Object.assign({}, { popup: false }, config);\n  }\n  wireBeans(beans) {\n    this.popupSvc = beans.popupSvc;\n    this.dragSvc = beans.dragSvc;\n  }\n  center() {\n    const { clientHeight, clientWidth } = this.offsetParent;\n    const x = clientWidth / 2 - this.getWidth() / 2;\n    const y = clientHeight / 2 - this.getHeight() / 2;\n    this.offsetElement(x, y);\n  }\n  initialisePosition() {\n    if (this.positioned) {\n      return;\n    }\n    const { centered, forcePopupParentAsOffsetParent, minWidth, width, minHeight, height, x, y } = this.config;\n    if (!this.offsetParent) {\n      this.setOffsetParent();\n    }\n    let computedMinHeight = 0;\n    let computedMinWidth = 0;\n    const isElementVisible = _isVisible(this.element);\n    if (isElementVisible) {\n      const boundaryEl = this.findBoundaryElement();\n      const offsetParentComputedStyles = window.getComputedStyle(boundaryEl);\n      if (offsetParentComputedStyles.minWidth != null) {\n        const paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;\n        computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;\n      }\n      if (offsetParentComputedStyles.minHeight != null) {\n        const paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;\n        computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;\n      }\n    }\n    this.minHeight = minHeight || computedMinHeight;\n    this.minWidth = minWidth || computedMinWidth;\n    if (width) {\n      this.setWidth(width);\n    }\n    if (height) {\n      this.setHeight(height);\n    }\n    if (!width || !height) {\n      this.refreshSize();\n    }\n    if (centered) {\n      this.center();\n    } else if (x || y) {\n      this.offsetElement(x, y);\n    } else if (isElementVisible && forcePopupParentAsOffsetParent) {\n      let boundaryEl = this.boundaryEl;\n      let initialisedDuringPositioning = true;\n      if (!boundaryEl) {\n        boundaryEl = this.findBoundaryElement();\n        initialisedDuringPositioning = false;\n      }\n      if (boundaryEl) {\n        const top = parseFloat(boundaryEl.style.top);\n        const left = parseFloat(boundaryEl.style.left);\n        if (initialisedDuringPositioning) {\n          this.offsetElement(isNaN(left) ? 0 : left, isNaN(top) ? 0 : top);\n        } else {\n          this.setPosition(left, top);\n        }\n      }\n    }\n    this.positioned = !!this.offsetParent;\n  }\n  isPositioned() {\n    return this.positioned;\n  }\n  getPosition() {\n    return this.position;\n  }\n  setMovable(movable, moveElement) {\n    if (!this.config.popup || movable === this.movable) {\n      return;\n    }\n    this.movable = movable;\n    const params = this.moveElementDragListener || {\n      eElement: moveElement,\n      onDragStart: this.onMoveStart.bind(this),\n      onDragging: this.onMove.bind(this),\n      onDragStop: this.onMoveEnd.bind(this)\n    };\n    if (movable) {\n      this.dragSvc?.addDragSource(params);\n      this.moveElementDragListener = params;\n    } else {\n      this.dragSvc?.removeDragSource(params);\n      this.moveElementDragListener = void 0;\n    }\n  }\n  setResizable(resizable) {\n    this.clearResizeListeners();\n    if (resizable) {\n      this.addResizers();\n    } else {\n      this.removeResizers();\n    }\n    if (typeof resizable === \"boolean\") {\n      if (resizable === false) {\n        return;\n      }\n      resizable = {\n        topLeft: resizable,\n        top: resizable,\n        topRight: resizable,\n        right: resizable,\n        bottomRight: resizable,\n        bottom: resizable,\n        bottomLeft: resizable,\n        left: resizable\n      };\n    }\n    Object.keys(resizable).forEach((side) => {\n      const resizableStructure = resizable;\n      const isSideResizable = !!resizableStructure[side];\n      const resizerEl = this.getResizerElement(side);\n      const params = {\n        dragStartPixels: 0,\n        eElement: resizerEl,\n        onDragStart: (e) => this.onResizeStart(e, side),\n        onDragging: this.onResize.bind(this),\n        onDragStop: (e) => this.onResizeEnd(e, side)\n      };\n      if (isSideResizable || !this.isAlive() && !isSideResizable) {\n        if (isSideResizable) {\n          this.dragSvc?.addDragSource(params);\n          this.resizeListeners.push(params);\n          resizerEl.style.pointerEvents = \"all\";\n        } else {\n          resizerEl.style.pointerEvents = \"none\";\n        }\n        this.resizable[side] = isSideResizable;\n      }\n    });\n  }\n  removeSizeFromEl() {\n    this.element.style.removeProperty(\"height\");\n    this.element.style.removeProperty(\"width\");\n    this.element.style.removeProperty(\"flex\");\n  }\n  restoreLastSize() {\n    this.element.style.flex = \"0 0 auto\";\n    const { height, width } = this.lastSize;\n    if (width !== -1) {\n      this.element.style.width = `${width}px`;\n    }\n    if (height !== -1) {\n      this.element.style.height = `${height}px`;\n    }\n  }\n  getHeight() {\n    return this.element.offsetHeight;\n  }\n  setHeight(height) {\n    const { popup } = this.config;\n    const eGui = this.element;\n    let isPercent = false;\n    if (typeof height === \"string\" && height.indexOf(\"%\") !== -1) {\n      _setFixedHeight(eGui, height);\n      height = _getAbsoluteHeight(eGui);\n      isPercent = true;\n    } else {\n      height = Math.max(this.minHeight, height);\n      if (this.positioned) {\n        const availableHeight = this.getAvailableHeight();\n        if (availableHeight && height > availableHeight) {\n          height = availableHeight;\n        }\n      }\n    }\n    if (this.getHeight() === height) {\n      return;\n    }\n    if (!isPercent) {\n      if (popup) {\n        _setFixedHeight(eGui, height);\n      } else {\n        eGui.style.height = `${height}px`;\n        eGui.style.flex = \"0 0 auto\";\n        this.lastSize.height = typeof height === \"number\" ? height : parseFloat(height);\n      }\n    } else {\n      eGui.style.maxHeight = \"unset\";\n      eGui.style.minHeight = \"unset\";\n    }\n  }\n  getAvailableHeight() {\n    const { popup, forcePopupParentAsOffsetParent } = this.config;\n    if (!this.positioned) {\n      this.initialisePosition();\n    }\n    const { clientHeight } = this.offsetParent;\n    if (!clientHeight) {\n      return null;\n    }\n    const elRect = this.element.getBoundingClientRect();\n    const offsetParentRect = this.offsetParent.getBoundingClientRect();\n    const yPosition = popup ? this.position.y : elRect.top;\n    const parentTop = popup ? 0 : offsetParentRect.top;\n    let additionalHeight = 0;\n    if (forcePopupParentAsOffsetParent) {\n      const parentEl = this.element.parentElement;\n      if (parentEl) {\n        const { bottom } = parentEl.getBoundingClientRect();\n        additionalHeight = bottom - elRect.bottom;\n      }\n    }\n    const availableHeight = clientHeight + parentTop - yPosition - additionalHeight;\n    return availableHeight;\n  }\n  getWidth() {\n    return this.element.offsetWidth;\n  }\n  setWidth(width) {\n    const eGui = this.element;\n    const { popup } = this.config;\n    let isPercent = false;\n    if (typeof width === \"string\" && width.indexOf(\"%\") !== -1) {\n      _setFixedWidth(eGui, width);\n      width = _getAbsoluteWidth(eGui);\n      isPercent = true;\n    } else if (this.positioned) {\n      width = Math.max(this.minWidth, width);\n      const { clientWidth } = this.offsetParent;\n      const xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;\n      if (clientWidth && width + xPosition > clientWidth) {\n        width = clientWidth - xPosition;\n      }\n    }\n    if (this.getWidth() === width) {\n      return;\n    }\n    if (!isPercent) {\n      if (this.config.popup) {\n        _setFixedWidth(eGui, width);\n      } else {\n        eGui.style.width = `${width}px`;\n        eGui.style.flex = \" unset\";\n        this.lastSize.width = typeof width === \"number\" ? width : parseFloat(width);\n      }\n    } else {\n      eGui.style.maxWidth = \"unset\";\n      eGui.style.minWidth = \"unset\";\n    }\n  }\n  offsetElement(x = 0, y = 0) {\n    const { forcePopupParentAsOffsetParent } = this.config;\n    const ePopup = forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;\n    if (!ePopup) {\n      return;\n    }\n    this.popupSvc?.positionPopup({\n      ePopup,\n      keepWithinBounds: true,\n      skipObserver: this.movable || this.isResizable(),\n      updatePosition: () => ({ x, y })\n    });\n    this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));\n  }\n  constrainSizeToAvailableHeight(constrain) {\n    if (!this.config.forcePopupParentAsOffsetParent) {\n      return;\n    }\n    const applyMaxHeightToElement = () => {\n      const availableHeight = this.getAvailableHeight();\n      this.element.style.setProperty(\"max-height\", `${availableHeight}px`);\n    };\n    if (constrain && this.popupSvc) {\n      this.resizeObserverSubscriber = _observeResize(\n        this.beans,\n        this.popupSvc?.getPopupParent(),\n        applyMaxHeightToElement\n      );\n    } else {\n      this.element.style.removeProperty(\"max-height\");\n      if (this.resizeObserverSubscriber) {\n        this.resizeObserverSubscriber();\n        this.resizeObserverSubscriber = void 0;\n      }\n    }\n  }\n  setPosition(x, y) {\n    this.position.x = x;\n    this.position.y = y;\n  }\n  updateDragStartPosition(x, y) {\n    this.dragStartPosition = { x, y };\n  }\n  calculateMouseMovement(params) {\n    const { e, isLeft, isTop, anywhereWithin, topBuffer } = params;\n    const xDiff = e.clientX - this.dragStartPosition.x;\n    const yDiff = e.clientY - this.dragStartPosition.y;\n    const movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;\n    const movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;\n    return { movementX, movementY };\n  }\n  shouldSkipX(e, isLeft, anywhereWithin, diff) {\n    const elRect = this.element.getBoundingClientRect();\n    const parentRect = this.offsetParent.getBoundingClientRect();\n    const boundaryElRect = this.boundaryEl.getBoundingClientRect();\n    const xPosition = this.config.popup ? this.position.x : elRect.left;\n    let skipX = xPosition <= 0 && parentRect.left >= e.clientX || parentRect.right <= e.clientX && parentRect.right <= boundaryElRect.right;\n    if (skipX) {\n      return true;\n    }\n    if (isLeft) {\n      skipX = // skip if we are moving to the left and the cursor\n      // is positioned to the right of the left side anchor\n      diff < 0 && e.clientX > xPosition + parentRect.left || // skip if we are moving to the right and the cursor\n      // is positioned to the left of the dialog\n      diff > 0 && e.clientX < xPosition + parentRect.left;\n    } else {\n      if (anywhereWithin) {\n        skipX = diff < 0 && e.clientX > boundaryElRect.right || diff > 0 && e.clientX < xPosition + parentRect.left;\n      } else {\n        skipX = // if the movement is bound to the right side of the dialog\n        // we skip if we are moving to the left and the cursor\n        // is to the right of the dialog\n        diff < 0 && e.clientX > boundaryElRect.right || // or skip if we are moving to the right and the cursor\n        // is to the left of the right side anchor\n        diff > 0 && e.clientX < boundaryElRect.right;\n      }\n    }\n    return skipX;\n  }\n  shouldSkipY(e, isTop, topBuffer = 0, diff) {\n    const elRect = this.element.getBoundingClientRect();\n    const parentRect = this.offsetParent.getBoundingClientRect();\n    const boundaryElRect = this.boundaryEl.getBoundingClientRect();\n    const yPosition = this.config.popup ? this.position.y : elRect.top;\n    let skipY = yPosition <= 0 && parentRect.top >= e.clientY || parentRect.bottom <= e.clientY && parentRect.bottom <= boundaryElRect.bottom;\n    if (skipY) {\n      return true;\n    }\n    if (isTop) {\n      skipY = // skip if we are moving to towards top and the cursor is\n      // below the top anchor + topBuffer\n      // note: topBuffer is used when moving the dialog using the title bar\n      diff < 0 && e.clientY > yPosition + parentRect.top + topBuffer || // skip if we are moving to the bottom and the cursor is\n      // above the top anchor\n      diff > 0 && e.clientY < yPosition + parentRect.top;\n    } else {\n      skipY = // skip if we are moving towards the top and the cursor\n      // is below the bottom anchor\n      diff < 0 && e.clientY > boundaryElRect.bottom || // skip if we are moving towards the bottom and the cursor\n      // is above the bottom anchor\n      diff > 0 && e.clientY < boundaryElRect.bottom;\n    }\n    return skipY;\n  }\n  createResizeMap() {\n    const getElement = (ref) => ({\n      element: this.element.querySelector(`[data-ref=${ref}Resizer]`)\n    });\n    this.resizerMap = {\n      topLeft: getElement(\"eTopLeft\"),\n      top: getElement(\"eTop\"),\n      topRight: getElement(\"eTopRight\"),\n      right: getElement(\"eRight\"),\n      bottomRight: getElement(\"eBottomRight\"),\n      bottom: getElement(\"eBottom\"),\n      bottomLeft: getElement(\"eBottomLeft\"),\n      left: getElement(\"eLeft\")\n    };\n  }\n  addResizers() {\n    if (this.resizersAdded) {\n      return;\n    }\n    const eGui = this.element;\n    if (!eGui) {\n      return;\n    }\n    eGui.appendChild(_createElement(RESIZE_TEMPLATE));\n    this.createResizeMap();\n    this.resizersAdded = true;\n  }\n  removeResizers() {\n    this.resizerMap = void 0;\n    const resizerEl = this.element.querySelector(`.${RESIZE_CONTAINER_STYLE}`);\n    if (resizerEl) {\n      this.element.removeChild(resizerEl);\n    }\n    this.resizersAdded = false;\n  }\n  getResizerElement(side) {\n    return this.resizerMap[side].element;\n  }\n  onResizeStart(e, side) {\n    this.boundaryEl = this.findBoundaryElement();\n    if (!this.positioned) {\n      this.initialisePosition();\n    }\n    this.currentResizer = {\n      isTop: !!side.match(/top/i),\n      isRight: !!side.match(/right/i),\n      isBottom: !!side.match(/bottom/i),\n      isLeft: !!side.match(/left/i)\n    };\n    this.element.classList.add(\"ag-resizing\");\n    this.resizerMap[side].element.classList.add(\"ag-active\");\n    const { popup, forcePopupParentAsOffsetParent } = this.config;\n    if (!popup && !forcePopupParentAsOffsetParent) {\n      this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);\n    }\n    this.isResizing = true;\n    this.updateDragStartPosition(e.clientX, e.clientY);\n  }\n  getSiblings() {\n    const element = this.element;\n    const parent = element.parentElement;\n    if (!parent) {\n      return null;\n    }\n    return Array.prototype.slice.call(parent.children).filter((el) => !el.classList.contains(\"ag-hidden\"));\n  }\n  getMinSizeOfSiblings() {\n    const siblings = this.getSiblings() || [];\n    let height = 0;\n    let width = 0;\n    for (let i = 0; i < siblings.length; i++) {\n      const currentEl = siblings[i];\n      const isFlex = !!currentEl.style.flex && currentEl.style.flex !== \"0 0 auto\";\n      if (currentEl === this.element) {\n        continue;\n      }\n      let nextHeight = this.minHeight || 0;\n      let nextWidth = this.minWidth || 0;\n      if (isFlex) {\n        const computedStyle = window.getComputedStyle(currentEl);\n        if (computedStyle.minHeight) {\n          nextHeight = parseInt(computedStyle.minHeight, 10);\n        }\n        if (computedStyle.minWidth) {\n          nextWidth = parseInt(computedStyle.minWidth, 10);\n        }\n      } else {\n        nextHeight = currentEl.offsetHeight;\n        nextWidth = currentEl.offsetWidth;\n      }\n      height += nextHeight;\n      width += nextWidth;\n    }\n    return { height, width };\n  }\n  applySizeToSiblings(vertical) {\n    let containerToFlex = null;\n    const siblings = this.getSiblings();\n    if (!siblings) {\n      return;\n    }\n    for (let i = 0; i < siblings.length; i++) {\n      const el = siblings[i];\n      if (el === containerToFlex) {\n        continue;\n      }\n      if (vertical) {\n        el.style.height = `${el.offsetHeight}px`;\n      } else {\n        el.style.width = `${el.offsetWidth}px`;\n      }\n      el.style.flex = \"0 0 auto\";\n      if (el === this.element) {\n        containerToFlex = siblings[i + 1];\n      }\n    }\n    if (containerToFlex) {\n      containerToFlex.style.removeProperty(\"height\");\n      containerToFlex.style.removeProperty(\"min-height\");\n      containerToFlex.style.removeProperty(\"max-height\");\n      containerToFlex.style.flex = \"1 1 auto\";\n    }\n  }\n  isResizable() {\n    return Object.values(this.resizable).some((value) => value);\n  }\n  onResize(e) {\n    if (!this.isResizing || !this.currentResizer) {\n      return;\n    }\n    const { popup, forcePopupParentAsOffsetParent } = this.config;\n    const { isTop, isRight, isBottom, isLeft } = this.currentResizer;\n    const isHorizontal = isRight || isLeft;\n    const isVertical = isBottom || isTop;\n    const { movementX, movementY } = this.calculateMouseMovement({ e, isLeft, isTop });\n    const xPosition = this.position.x;\n    const yPosition = this.position.y;\n    let offsetLeft = 0;\n    let offsetTop = 0;\n    if (isHorizontal && movementX) {\n      const direction = isLeft ? -1 : 1;\n      const oldWidth = this.getWidth();\n      const newWidth = oldWidth + movementX * direction;\n      let skipWidth = false;\n      if (isLeft) {\n        offsetLeft = oldWidth - newWidth;\n        if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {\n          skipWidth = true;\n          offsetLeft = 0;\n        }\n      }\n      if (!skipWidth) {\n        this.setWidth(newWidth);\n      }\n    }\n    if (isVertical && movementY) {\n      const direction = isTop ? -1 : 1;\n      const oldHeight = this.getHeight();\n      const newHeight = oldHeight + movementY * direction;\n      let skipHeight = false;\n      if (isTop) {\n        offsetTop = oldHeight - newHeight;\n        if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {\n          skipHeight = true;\n          offsetTop = 0;\n        }\n      } else {\n        if (!this.config.popup && !this.config.forcePopupParentAsOffsetParent && oldHeight < newHeight && this.getMinSizeOfSiblings().height + newHeight > this.element.parentElement.offsetHeight) {\n          skipHeight = true;\n        }\n      }\n      if (!skipHeight) {\n        this.setHeight(newHeight);\n      }\n    }\n    this.updateDragStartPosition(e.clientX, e.clientY);\n    if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {\n      this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);\n    }\n  }\n  onResizeEnd(e, side) {\n    this.isResizing = false;\n    this.currentResizer = null;\n    this.boundaryEl = null;\n    this.element.classList.remove(\"ag-resizing\");\n    this.resizerMap[side].element.classList.remove(\"ag-active\");\n    this.dispatchLocalEvent({ type: \"resize\" });\n  }\n  refreshSize() {\n    const eGui = this.element;\n    if (this.config.popup) {\n      if (!this.config.width) {\n        this.setWidth(eGui.offsetWidth);\n      }\n      if (!this.config.height) {\n        this.setHeight(eGui.offsetHeight);\n      }\n    }\n  }\n  onMoveStart(e) {\n    this.boundaryEl = this.findBoundaryElement();\n    if (!this.positioned) {\n      this.initialisePosition();\n    }\n    this.isMoving = true;\n    this.element.classList.add(\"ag-moving\");\n    this.updateDragStartPosition(e.clientX, e.clientY);\n  }\n  onMove(e) {\n    if (!this.isMoving) {\n      return;\n    }\n    const { x, y } = this.position;\n    let topBuffer;\n    if (this.config.calculateTopBuffer) {\n      topBuffer = this.config.calculateTopBuffer();\n    }\n    const { movementX, movementY } = this.calculateMouseMovement({\n      e,\n      isTop: true,\n      anywhereWithin: true,\n      topBuffer\n    });\n    this.offsetElement(x + movementX, y + movementY);\n    this.updateDragStartPosition(e.clientX, e.clientY);\n  }\n  onMoveEnd() {\n    this.isMoving = false;\n    this.boundaryEl = null;\n    this.element.classList.remove(\"ag-moving\");\n  }\n  setOffsetParent() {\n    if (this.config.forcePopupParentAsOffsetParent && this.popupSvc) {\n      this.offsetParent = this.popupSvc.getPopupParent();\n    } else {\n      this.offsetParent = this.element.offsetParent;\n    }\n  }\n  findBoundaryElement() {\n    let el = this.element;\n    while (el) {\n      if (window.getComputedStyle(el).position !== \"static\") {\n        return el;\n      }\n      el = el.parentElement;\n    }\n    return this.element;\n  }\n  clearResizeListeners() {\n    while (this.resizeListeners.length) {\n      const params = this.resizeListeners.pop();\n      this.dragSvc?.removeDragSource(params);\n    }\n  }\n  destroy() {\n    super.destroy();\n    if (this.moveElementDragListener) {\n      this.dragSvc?.removeDragSource(this.moveElementDragListener);\n    }\n    this.constrainSizeToAvailableHeight(false);\n    this.clearResizeListeners();\n    this.removeResizers();\n  }\n};\n\n// packages/ag-grid-community/src/widgets/managedFocusFeature.ts\nvar FOCUS_MANAGED_CLASS = \"ag-focus-managed\";\nvar ManagedFocusFeature = class extends BeanStub {\n  constructor(eFocusable, callbacks = {}) {\n    super();\n    this.eFocusable = eFocusable;\n    this.callbacks = callbacks;\n    this.callbacks = {\n      shouldStopEventPropagation: () => false,\n      onTabKeyDown: (e) => {\n        if (e.defaultPrevented) {\n          return;\n        }\n        const nextRoot = _findNextFocusableElement(this.beans, this.eFocusable, false, e.shiftKey);\n        if (!nextRoot) {\n          return;\n        }\n        nextRoot.focus();\n        e.preventDefault();\n      },\n      ...callbacks\n    };\n  }\n  postConstruct() {\n    const {\n      eFocusable,\n      callbacks: { onFocusIn, onFocusOut }\n    } = this;\n    eFocusable.classList.add(FOCUS_MANAGED_CLASS);\n    this.addKeyDownListeners(eFocusable);\n    if (onFocusIn) {\n      this.addManagedElementListeners(eFocusable, { focusin: onFocusIn });\n    }\n    if (onFocusOut) {\n      this.addManagedElementListeners(eFocusable, { focusout: onFocusOut });\n    }\n  }\n  addKeyDownListeners(eGui) {\n    this.addManagedElementListeners(eGui, {\n      keydown: (e) => {\n        if (e.defaultPrevented || _isStopPropagationForAgGrid(e)) {\n          return;\n        }\n        const { callbacks } = this;\n        if (callbacks.shouldStopEventPropagation(e)) {\n          _stopPropagationForAgGrid(e);\n          return;\n        }\n        if (e.key === KeyCode.TAB) {\n          callbacks.onTabKeyDown(e);\n        } else if (callbacks.handleKeyDown) {\n          callbacks.handleKeyDown(e);\n        }\n      }\n    });\n  }\n};\n\n// packages/ag-grid-community/src/filter/filterLocaleText.ts\nvar FILTER_LOCALE_TEXT = {\n  applyFilter: \"Apply\",\n  clearFilter: \"Clear\",\n  resetFilter: \"Reset\",\n  cancelFilter: \"Cancel\",\n  textFilter: \"Text Filter\",\n  numberFilter: \"Number Filter\",\n  dateFilter: \"Date Filter\",\n  setFilter: \"Set Filter\",\n  filterOoo: \"Filter...\",\n  empty: \"Choose one\",\n  equals: \"Equals\",\n  notEqual: \"Does not equal\",\n  lessThan: \"Less than\",\n  greaterThan: \"Greater than\",\n  inRange: \"Between\",\n  inRangeStart: \"From\",\n  inRangeEnd: \"To\",\n  lessThanOrEqual: \"Less than or equal to\",\n  greaterThanOrEqual: \"Greater than or equal to\",\n  contains: \"Contains\",\n  notContains: \"Does not contain\",\n  startsWith: \"Begins with\",\n  endsWith: \"Ends with\",\n  blank: \"Blank\",\n  notBlank: \"Not blank\",\n  before: \"Before\",\n  after: \"After\",\n  andCondition: \"AND\",\n  orCondition: \"OR\",\n  dateFormatOoo: \"yyyy-mm-dd\"\n};\n\n// packages/ag-grid-community/src/filter/floating/provided/providedFilterUtils.ts\nfunction getDebounceMs(params, debounceDefault) {\n  const { debounceMs } = params;\n  if (isUseApplyButton(params)) {\n    if (debounceMs != null) {\n      _warn(71);\n    }\n    return 0;\n  }\n  return debounceMs ?? debounceDefault;\n}\nfunction isUseApplyButton(params) {\n  return (params.buttons?.indexOf(\"apply\") ?? -1) >= 0;\n}\n\n// packages/ag-grid-community/src/filter/provided/providedFilter.ts\nvar ProvidedFilter = class extends Component {\n  constructor(filterNameKey) {\n    super();\n    this.filterNameKey = filterNameKey;\n    this.applyActive = false;\n    this.hidePopup = null;\n    this.debouncePending = false;\n    // after the user hits 'apply' the model gets copied to here. this is then the model that we use for\n    // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.\n    // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is\n    // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter\n    // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter\n    // not active) then this appliedModel will be null/undefined.\n    this.appliedModel = null;\n    this.eFilterBody = RefPlaceholder;\n    this.buttonListeners = [];\n    // subclasses can override this to provide alternative debounce defaults\n    this.defaultDebounceMs = 0;\n  }\n  postConstruct() {\n    this.resetTemplate();\n    this.createManagedBean(\n      new ManagedFocusFeature(this.getFocusableElement(), {\n        handleKeyDown: this.handleKeyDown.bind(this)\n      })\n    );\n    this.positionableFeature = new PositionableFeature(this.getPositionableElement(), {\n      forcePopupParentAsOffsetParent: true\n    });\n    this.createBean(this.positionableFeature);\n  }\n  // override\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  handleKeyDown(e) {\n  }\n  getFilterTitle() {\n    return this.translate(this.filterNameKey);\n  }\n  isFilterActive() {\n    return !!this.appliedModel;\n  }\n  resetTemplate(paramsMap) {\n    let eGui = this.getGui();\n    eGui?.removeEventListener(\"submit\", this.onFormSubmit);\n    const element = {\n      tag: \"form\",\n      cls: \"ag-filter-wrapper\",\n      children: [\n        {\n          tag: \"div\",\n          ref: \"eFilterBody\",\n          cls: `ag-filter-body-wrapper ag-${this.getCssIdentifier()}-body-wrapper`,\n          children: [this.createBodyTemplate()]\n        }\n      ]\n    };\n    this.setTemplate(element, this.getAgComponents(), paramsMap);\n    eGui = this.getGui();\n    eGui?.addEventListener(\"submit\", this.onFormSubmit);\n  }\n  isReadOnly() {\n    return !!this.params.readOnly;\n  }\n  init(params) {\n    this.setParams(params);\n    this.resetUiToDefaults(true).then(() => {\n      this.updateUiVisibility();\n      this.setupOnBtApplyDebounce();\n    });\n  }\n  setParams(params) {\n    this.params = params;\n    this.applyActive = isUseApplyButton(params);\n    this.resetButtonsPanel(params);\n  }\n  updateParams(params) {\n    this.params = params;\n    this.applyActive = isUseApplyButton(params);\n    this.resetUiToActiveModel(this.getModel(), () => {\n      this.updateUiVisibility();\n      this.setupOnBtApplyDebounce();\n    });\n  }\n  resetButtonsPanel(newParams, oldParams) {\n    const { buttons: oldButtons, readOnly: oldReadOnly } = oldParams ?? {};\n    const { buttons, readOnly } = newParams;\n    if (oldReadOnly === readOnly && _jsonEquals(oldButtons, buttons)) {\n      return;\n    }\n    const hasButtons = buttons && buttons.length > 0 && !this.isReadOnly();\n    if (!this.eButtonsPanel) {\n      if (hasButtons) {\n        this.eButtonsPanel = _createElement({ tag: \"div\", cls: \"ag-filter-apply-panel\" });\n      }\n    } else {\n      _clearElement(this.eButtonsPanel);\n      this.buttonListeners.forEach((destroyFunc) => destroyFunc());\n      this.buttonListeners = [];\n    }\n    if (!hasButtons) {\n      if (this.eButtonsPanel) {\n        _removeFromParent(this.eButtonsPanel);\n      }\n      return;\n    }\n    const fragment = document.createDocumentFragment();\n    const addButton = (type) => {\n      let clickListener;\n      const text = type ? this.translate(`${type}Filter`) : void 0;\n      switch (type) {\n        case \"apply\":\n          clickListener = (e) => this.onBtApply(false, false, e);\n          break;\n        case \"clear\":\n          clickListener = () => this.onBtClear();\n          break;\n        case \"reset\":\n          clickListener = () => this.onBtReset();\n          break;\n        case \"cancel\":\n          clickListener = (e) => {\n            this.onBtCancel(e);\n          };\n          break;\n        default:\n          _warn(75);\n          return;\n      }\n      const buttonType = type === \"apply\" ? \"submit\" : \"button\";\n      const button = _createElement({\n        tag: \"button\",\n        attrs: { type: buttonType },\n        ref: `${type}FilterButton`,\n        cls: \"ag-button ag-standard-button ag-filter-apply-panel-button\",\n        children: text\n      });\n      this.buttonListeners.push(...this.addManagedElementListeners(button, { click: clickListener }));\n      fragment.append(button);\n    };\n    buttons.forEach((type) => addButton(type));\n    this.eButtonsPanel.append(fragment);\n    this.getGui().appendChild(this.eButtonsPanel);\n  }\n  setupOnBtApplyDebounce() {\n    const debounceMs = getDebounceMs(this.params, this.defaultDebounceMs);\n    const debounceFunc = _debounce(this, this.checkApplyDebounce.bind(this), debounceMs);\n    this.onBtApplyDebounce = () => {\n      this.debouncePending = true;\n      debounceFunc();\n    };\n  }\n  checkApplyDebounce() {\n    if (this.debouncePending) {\n      this.debouncePending = false;\n      this.onBtApply();\n    }\n  }\n  getModel() {\n    return this.appliedModel ?? null;\n  }\n  setModel(model) {\n    const promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();\n    return promise.then(() => {\n      this.updateUiVisibility();\n      this.applyModel(\"api\");\n    });\n  }\n  onBtCancel(e) {\n    this.resetUiToActiveModel(this.getModel(), () => {\n      this.handleCancelEnd(e);\n    });\n  }\n  handleCancelEnd(e) {\n    if (this.params.closeOnApply) {\n      this.close(e);\n    }\n  }\n  resetUiToActiveModel(currentModel, afterUiUpdatedFunc) {\n    const afterAppliedFunc = () => {\n      this.onUiChanged(false, \"prevent\");\n      afterUiUpdatedFunc?.();\n    };\n    if (currentModel != null) {\n      this.setModelIntoUi(currentModel).then(afterAppliedFunc);\n    } else {\n      this.resetUiToDefaults().then(afterAppliedFunc);\n    }\n  }\n  onBtClear() {\n    this.resetUiToDefaults().then(() => this.onUiChanged());\n  }\n  onBtReset() {\n    this.onBtClear();\n    this.onBtApply();\n  }\n  /**\n   * Applies changes made in the UI to the filter, and returns true if the model has changed.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  applyModel(source = \"api\") {\n    const newModel = this.getModelFromUi();\n    if (!this.isModelValid(newModel)) {\n      return false;\n    }\n    const previousModel = this.appliedModel;\n    this.appliedModel = newModel;\n    return !this.areModelsEqual(previousModel, newModel);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  isModelValid(model) {\n    return true;\n  }\n  onFormSubmit(e) {\n    e.preventDefault();\n  }\n  onBtApply(afterFloatingFilter = false, afterDataChange = false, e) {\n    if (e) {\n      e.preventDefault();\n    }\n    if (this.applyModel(afterDataChange ? \"rowDataUpdated\" : \"ui\")) {\n      const source = \"columnFilter\";\n      this.params.filterChangedCallback({ afterFloatingFilter, afterDataChange, source });\n    }\n    const { closeOnApply } = this.params;\n    if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {\n      this.close(e);\n    }\n  }\n  onNewRowsLoaded() {\n  }\n  close(e) {\n    if (!this.hidePopup) {\n      return;\n    }\n    const keyboardEvent = e;\n    const key = keyboardEvent && keyboardEvent.key;\n    let params;\n    if (key === \"Enter\" || key === \"Space\") {\n      params = { keyboardEvent };\n    }\n    this.hidePopup(params);\n    this.hidePopup = null;\n  }\n  /**\n   * By default, if the change came from a floating filter it will be applied immediately, otherwise if there is no\n   * apply button it will be applied after a debounce, otherwise it will not be applied at all. This behaviour can\n   * be adjusted by using the apply parameter.\n   */\n  onUiChanged(fromFloatingFilter = false, apply) {\n    this.updateUiVisibility();\n    this.params.filterModifiedCallback();\n    if (this.applyActive && !this.isReadOnly()) {\n      const isValid = this.isModelValid(this.getModelFromUi());\n      const applyFilterButton = this.queryForHtmlElement(`[data-ref=\"applyFilterButton\"]`);\n      if (applyFilterButton) {\n        _setDisabled(applyFilterButton, !isValid);\n      }\n    }\n    if (fromFloatingFilter && !apply || apply === \"immediately\") {\n      this.onBtApply(fromFloatingFilter);\n    } else if (!this.applyActive && !apply || apply === \"debounce\") {\n      this.onBtApplyDebounce();\n    }\n  }\n  afterGuiAttached(params) {\n    if (params) {\n      this.hidePopup = params.hidePopup;\n    }\n    this.refreshFilterResizer(params?.container);\n  }\n  refreshFilterResizer(containerType) {\n    const { positionableFeature, gos } = this;\n    if (!positionableFeature || containerType === \"toolPanel\") {\n      return;\n    }\n    const isResizable = containerType === \"floatingFilter\" || containerType === \"columnFilter\";\n    if (isResizable) {\n      positionableFeature.restoreLastSize();\n      positionableFeature.setResizable(\n        gos.get(\"enableRtl\") ? { bottom: true, bottomLeft: true, left: true } : { bottom: true, bottomRight: true, right: true }\n      );\n    } else {\n      positionableFeature.removeSizeFromEl();\n      positionableFeature.setResizable(false);\n    }\n    positionableFeature.constrainSizeToAvailableHeight(true);\n  }\n  afterGuiDetached() {\n    this.checkApplyDebounce();\n    this.positionableFeature?.constrainSizeToAvailableHeight(false);\n  }\n  refresh(newParams) {\n    const oldParams = this.params;\n    this.params = newParams;\n    this.resetButtonsPanel(newParams, oldParams);\n    return true;\n  }\n  destroy() {\n    const eGui = this.getGui();\n    if (eGui) {\n      eGui.removeEventListener(\"submit\", this.onFormSubmit);\n    }\n    this.hidePopup = null;\n    if (this.positionableFeature) {\n      this.positionableFeature = this.destroyBean(this.positionableFeature);\n    }\n    this.appliedModel = null;\n    super.destroy();\n  }\n  translate(key) {\n    return this.getLocaleTextFunc()(key, FILTER_LOCALE_TEXT[key]);\n  }\n  getCellValue(rowNode) {\n    return this.params.getValue(rowNode);\n  }\n  // override to control positionable feature\n  getPositionableElement() {\n    return this.eFilterBody;\n  }\n};\n\n// packages/ag-grid-community/src/filter/floating/floatingFilterMapper.ts\nfunction _getDefaultFloatingFilterType(frameworkOverrides, def, getFromDefault) {\n  if (def == null) {\n    return null;\n  }\n  let defaultFloatingFilterType = null;\n  const { compName, jsComp, fwComp } = _getFilterCompKeys(frameworkOverrides, def);\n  if (compName) {\n    const floatingFilterTypeMap = {\n      agSetColumnFilter: \"agSetColumnFloatingFilter\",\n      agMultiColumnFilter: \"agMultiColumnFloatingFilter\",\n      agGroupColumnFilter: \"agGroupColumnFloatingFilter\",\n      agNumberColumnFilter: \"agNumberColumnFloatingFilter\",\n      agDateColumnFilter: \"agDateColumnFloatingFilter\",\n      agTextColumnFilter: \"agTextColumnFloatingFilter\"\n    };\n    defaultFloatingFilterType = floatingFilterTypeMap[compName];\n  } else {\n    const usingDefaultFilter = jsComp == null && fwComp == null && def.filter === true;\n    if (usingDefaultFilter) {\n      defaultFloatingFilterType = getFromDefault();\n    }\n  }\n  return defaultFloatingFilterType;\n}\n\n// packages/ag-grid-community/src/styling/layoutFeature.ts\nvar LayoutCssClasses = {\n  AUTO_HEIGHT: \"ag-layout-auto-height\",\n  NORMAL: \"ag-layout-normal\",\n  PRINT: \"ag-layout-print\"\n};\nvar LayoutFeature = class extends BeanStub {\n  constructor(view) {\n    super();\n    this.view = view;\n  }\n  postConstruct() {\n    this.addManagedPropertyListener(\"domLayout\", this.updateLayoutClasses.bind(this));\n    this.updateLayoutClasses();\n  }\n  updateLayoutClasses() {\n    const domLayout = this.gos.get(\"domLayout\");\n    const params = {\n      autoHeight: domLayout === \"autoHeight\",\n      normal: domLayout === \"normal\",\n      print: domLayout === \"print\"\n    };\n    const cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT : params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;\n    this.view.updateLayoutClasses(cssClass, params);\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/gridBodyScrollFeature.ts\nvar VIEWPORT = \"Viewport\";\nvar FAKE_V_SCROLLBAR = \"fakeVScrollComp\";\nvar HORIZONTAL_SOURCES = [\n  \"fakeHScrollComp\",\n  \"centerHeader\",\n  \"topCenter\",\n  \"bottomCenter\",\n  \"stickyTopCenter\",\n  \"stickyBottomCenter\"\n];\nvar SCROLL_DEBOUNCE_TIMEOUT = 100;\nvar SCROLL_END_TIMEOUT = 150;\nvar GridBodyScrollFeature = class extends BeanStub {\n  constructor(eBodyViewport) {\n    super();\n    // listeners for when ensureIndexVisible is waiting for SSRM data to load\n    this.clearRetryListenerFncs = [];\n    this.lastScrollSource = [null, null];\n    this.scrollLeft = -1;\n    this.nextScrollTop = -1;\n    this.scrollTop = -1;\n    // Used to provide approximate values of scrollTop and offsetHeight\n    // without forcing the browser to recalculate styles.\n    this.lastOffsetHeight = -1;\n    this.lastScrollTop = -1;\n    this.lastIsHorizontalScrollShowing = false;\n    this.scrollTimer = 0;\n    this.isVerticalPositionInvalidated = true;\n    this.isHorizontalPositionInvalidated = true;\n    this.eBodyViewport = eBodyViewport;\n    this.resetLastHScrollDebounced = _debounce(\n      this,\n      () => this.lastScrollSource[1 /* Horizontal */] = null,\n      SCROLL_END_TIMEOUT\n    );\n    this.resetLastVScrollDebounced = _debounce(\n      this,\n      () => this.lastScrollSource[0 /* Vertical */] = null,\n      SCROLL_END_TIMEOUT\n    );\n  }\n  wireBeans(beans) {\n    this.ctrlsSvc = beans.ctrlsSvc;\n    this.animationFrameSvc = beans.animationFrameSvc;\n    this.visibleCols = beans.visibleCols;\n  }\n  destroy() {\n    super.destroy();\n    this.clearRetryListenerFncs = [];\n    window.clearTimeout(this.scrollTimer);\n  }\n  postConstruct() {\n    this.enableRtl = this.gos.get(\"enableRtl\");\n    const invalidateVerticalScroll = this.invalidateVerticalScroll.bind(this);\n    const invalidateHorizontalScroll = this.invalidateHorizontalScroll.bind(this);\n    this.addManagedEventListeners({\n      displayedColumnsWidthChanged: this.onDisplayedColumnsWidthChanged.bind(this),\n      gridSizeChanged: invalidateVerticalScroll,\n      // We only invalidate horizontal scrolling when the viewport switches\n      // between scrollable and non-scrollable, avoiding unnecessary\n      // invalidation on every gridSizeChanged event. If more properties\n      // require invalidation, read/write DOM cycles may be needed.\n      scrollGapChanged: invalidateHorizontalScroll\n    });\n    this.addManagedElementListeners(this.eBodyViewport, {\n      scroll: invalidateVerticalScroll\n    });\n    this.ctrlsSvc.whenReady(this, (p) => {\n      this.centerRowsCtrl = p.center;\n      this.onDisplayedColumnsWidthChanged();\n      this.addScrollListener();\n    });\n  }\n  invalidateHorizontalScroll() {\n    this.isHorizontalPositionInvalidated = true;\n  }\n  invalidateVerticalScroll() {\n    this.isVerticalPositionInvalidated = true;\n  }\n  addScrollListener() {\n    this.addHorizontalScrollListeners();\n    this.addVerticalScrollListeners();\n  }\n  addHorizontalScrollListeners() {\n    this.addManagedElementListeners(this.centerRowsCtrl.eViewport, {\n      scroll: this.onHScroll.bind(this, VIEWPORT)\n    });\n    for (const source of HORIZONTAL_SOURCES) {\n      const scrollPartner = this.ctrlsSvc.get(source);\n      this.registerScrollPartner(scrollPartner, this.onHScroll.bind(this, source));\n    }\n  }\n  addVerticalScrollListeners() {\n    const fakeVScrollComp = this.ctrlsSvc.get(\"fakeVScrollComp\");\n    const isDebounce = this.gos.get(\"debounceVerticalScrollbar\");\n    const onVScroll = isDebounce ? _debounce(this, this.onVScroll.bind(this, VIEWPORT), SCROLL_DEBOUNCE_TIMEOUT) : this.onVScroll.bind(this, VIEWPORT);\n    const onFakeVScroll = isDebounce ? _debounce(this, this.onVScroll.bind(this, FAKE_V_SCROLLBAR), SCROLL_DEBOUNCE_TIMEOUT) : this.onVScroll.bind(this, FAKE_V_SCROLLBAR);\n    this.addManagedElementListeners(this.eBodyViewport, { scroll: onVScroll });\n    this.registerScrollPartner(fakeVScrollComp, onFakeVScroll);\n  }\n  registerScrollPartner(comp, callback) {\n    comp.onScrollCallback(callback);\n  }\n  onDisplayedColumnsWidthChanged() {\n    if (this.enableRtl) {\n      this.horizontallyScrollHeaderCenterAndFloatingCenter();\n    }\n  }\n  horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft) {\n    const notYetInitialised = this.centerRowsCtrl == null;\n    if (notYetInitialised) {\n      return;\n    }\n    if (scrollLeft === void 0) {\n      scrollLeft = this.centerRowsCtrl.getCenterViewportScrollLeft();\n    }\n    this.setScrollLeftForAllContainersExceptCurrent(Math.abs(scrollLeft));\n  }\n  setScrollLeftForAllContainersExceptCurrent(scrollLeft) {\n    for (const container of [...HORIZONTAL_SOURCES, VIEWPORT]) {\n      if (this.lastScrollSource[1 /* Horizontal */] === container) {\n        continue;\n      }\n      const viewport = this.getViewportForSource(container);\n      _setScrollLeft(viewport, scrollLeft, this.enableRtl);\n    }\n  }\n  getViewportForSource(source) {\n    if (source === VIEWPORT) {\n      return this.centerRowsCtrl.eViewport;\n    }\n    return this.ctrlsSvc.get(source).eViewport;\n  }\n  isControllingScroll(source, direction) {\n    if (this.lastScrollSource[direction] == null) {\n      if (direction === 0 /* Vertical */) {\n        this.lastScrollSource[0] = source;\n      } else {\n        this.lastScrollSource[1] = source;\n      }\n      return true;\n    }\n    return this.lastScrollSource[direction] === source;\n  }\n  onHScroll(source) {\n    if (!this.isControllingScroll(source, 1 /* Horizontal */)) {\n      return;\n    }\n    const centerContainerViewport = this.centerRowsCtrl.eViewport;\n    const { scrollLeft } = centerContainerViewport;\n    if (this.shouldBlockScrollUpdate(1 /* Horizontal */, scrollLeft, true)) {\n      return;\n    }\n    const newScrollLeft = _getScrollLeft(this.getViewportForSource(source), this.enableRtl);\n    this.doHorizontalScroll(newScrollLeft);\n    this.resetLastHScrollDebounced();\n  }\n  onVScroll(source) {\n    if (!this.isControllingScroll(source, 0 /* Vertical */)) {\n      return;\n    }\n    let scrollTop;\n    if (source === VIEWPORT) {\n      scrollTop = this.eBodyViewport.scrollTop;\n    } else {\n      scrollTop = this.ctrlsSvc.get(\"fakeVScrollComp\").getScrollPosition();\n    }\n    if (this.shouldBlockScrollUpdate(0 /* Vertical */, scrollTop, true)) {\n      return;\n    }\n    const { animationFrameSvc } = this;\n    animationFrameSvc?.setScrollTop(scrollTop);\n    this.nextScrollTop = scrollTop;\n    if (source === VIEWPORT) {\n      this.ctrlsSvc.get(\"fakeVScrollComp\").setScrollPosition(scrollTop);\n    } else {\n      this.eBodyViewport.scrollTop = scrollTop;\n    }\n    if (animationFrameSvc?.active) {\n      animationFrameSvc.schedule();\n    } else {\n      this.scrollGridIfNeeded(true);\n    }\n    this.resetLastVScrollDebounced();\n  }\n  doHorizontalScroll(scrollLeft) {\n    const fakeScrollLeft = this.ctrlsSvc.get(\"fakeHScrollComp\").getScrollPosition();\n    if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {\n      return;\n    }\n    this.scrollLeft = scrollLeft;\n    this.fireScrollEvent(1 /* Horizontal */);\n    this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n    this.centerRowsCtrl.onHorizontalViewportChanged(true);\n  }\n  fireScrollEvent(direction) {\n    const bodyScrollEvent = {\n      type: \"bodyScroll\",\n      direction: direction === 1 /* Horizontal */ ? \"horizontal\" : \"vertical\",\n      left: this.scrollLeft,\n      top: this.scrollTop\n    };\n    this.eventSvc.dispatchEvent(bodyScrollEvent);\n    window.clearTimeout(this.scrollTimer);\n    this.scrollTimer = window.setTimeout(() => {\n      this.scrollTimer = 0;\n      this.eventSvc.dispatchEvent({\n        ...bodyScrollEvent,\n        type: \"bodyScrollEnd\"\n      });\n    }, SCROLL_END_TIMEOUT);\n  }\n  shouldBlockScrollUpdate(direction, scrollTo, touchOnly = false) {\n    if (touchOnly && !_isIOSUserAgent()) {\n      return false;\n    }\n    if (direction === 0 /* Vertical */) {\n      return this.shouldBlockVerticalScroll(scrollTo);\n    }\n    return this.shouldBlockHorizontalScroll(scrollTo);\n  }\n  shouldBlockVerticalScroll(scrollTo) {\n    const clientHeight = _getInnerHeight(this.eBodyViewport);\n    const { scrollHeight } = this.eBodyViewport;\n    if (scrollTo < 0 || scrollTo + clientHeight > scrollHeight) {\n      return true;\n    }\n    return false;\n  }\n  shouldBlockHorizontalScroll(scrollTo) {\n    const clientWidth = this.centerRowsCtrl.getCenterWidth();\n    const { scrollWidth } = this.centerRowsCtrl.eViewport;\n    if (this.enableRtl) {\n      if (scrollTo > 0) {\n        return true;\n      }\n    } else if (scrollTo < 0) {\n      return true;\n    }\n    if (Math.abs(scrollTo) + clientWidth > scrollWidth) {\n      return true;\n    }\n    return false;\n  }\n  redrawRowsAfterScroll() {\n    this.fireScrollEvent(0 /* Vertical */);\n  }\n  // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n  // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n  // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n  // back to the left to be kept in sync.\n  // adding and removing the grid from the DOM both resets the scroll position and\n  // triggers a resize event, so notify listeners if the scroll position has changed\n  checkScrollLeft() {\n    if (this.scrollLeft !== this.centerRowsCtrl.getCenterViewportScrollLeft()) {\n      this.onHScroll(VIEWPORT);\n    }\n  }\n  scrollGridIfNeeded(suppressedAnimationFrame = false) {\n    const frameNeeded = this.scrollTop != this.nextScrollTop;\n    if (frameNeeded) {\n      this.scrollTop = this.nextScrollTop;\n      if (suppressedAnimationFrame) {\n        this.invalidateVerticalScroll();\n      }\n      this.redrawRowsAfterScroll();\n    }\n    return frameNeeded;\n  }\n  // called by scrollHorizontally method and alignedGridsService\n  setHorizontalScrollPosition(hScrollPosition, fromAlignedGridsService = false) {\n    const minScrollLeft = 0;\n    const maxScrollLeft = this.centerRowsCtrl.eViewport.scrollWidth - this.centerRowsCtrl.getCenterWidth();\n    if (!fromAlignedGridsService && this.shouldBlockScrollUpdate(1 /* Horizontal */, hScrollPosition)) {\n      if (this.enableRtl) {\n        hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;\n      } else {\n        hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);\n      }\n    }\n    _setScrollLeft(this.centerRowsCtrl.eViewport, Math.abs(hScrollPosition), this.enableRtl);\n    this.doHorizontalScroll(hScrollPosition);\n  }\n  setVerticalScrollPosition(vScrollPosition) {\n    this.invalidateVerticalScroll();\n    this.eBodyViewport.scrollTop = vScrollPosition;\n  }\n  getVScrollPosition() {\n    if (!this.isVerticalPositionInvalidated) {\n      const { lastOffsetHeight, lastScrollTop } = this;\n      return {\n        top: lastScrollTop,\n        bottom: lastScrollTop + lastOffsetHeight\n      };\n    }\n    this.isVerticalPositionInvalidated = false;\n    const { scrollTop, offsetHeight } = this.eBodyViewport;\n    this.lastScrollTop = scrollTop;\n    this.lastOffsetHeight = offsetHeight;\n    return {\n      top: scrollTop,\n      bottom: scrollTop + offsetHeight\n    };\n  }\n  /** Get an approximate scroll position that returns the last real value read.\n   * This is useful for avoiding repeated DOM reads that force the browser to recalculate styles.\n   * This can have big performance improvements but may not be 100% accurate so only use if this is acceptable.\n   */\n  getApproximateVScollPosition() {\n    if (this.lastScrollTop >= 0 && this.lastOffsetHeight >= 0) {\n      return {\n        top: this.scrollTop,\n        bottom: this.scrollTop + this.lastOffsetHeight\n      };\n    }\n    return this.getVScrollPosition();\n  }\n  getHScrollPosition() {\n    return this.centerRowsCtrl.getHScrollPosition();\n  }\n  isHorizontalScrollShowing() {\n    if (this.isHorizontalPositionInvalidated) {\n      this.lastIsHorizontalScrollShowing = this.centerRowsCtrl.isHorizontalScrollShowing();\n      this.isHorizontalPositionInvalidated = false;\n    }\n    return this.lastIsHorizontalScrollShowing;\n  }\n  // called by the headerRootComp and moveColumnController\n  scrollHorizontally(pixels) {\n    const oldScrollPosition = this.centerRowsCtrl.eViewport.scrollLeft;\n    this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n    return this.centerRowsCtrl.eViewport.scrollLeft - oldScrollPosition;\n  }\n  // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n  scrollToTop() {\n    this.eBodyViewport.scrollTop = 0;\n  }\n  // Valid values for position are bottom, middle and top\n  ensureNodeVisible(comparator, position = null) {\n    const { rowModel } = this.beans;\n    const rowCount = rowModel.getRowCount();\n    let indexToSelect = -1;\n    for (let i = 0; i < rowCount; i++) {\n      const node = rowModel.getRow(i);\n      if (typeof comparator === \"function\") {\n        const predicate = comparator;\n        if (node && predicate(node)) {\n          indexToSelect = i;\n          break;\n        }\n      } else {\n        if (comparator === node || comparator === node.data) {\n          indexToSelect = i;\n          break;\n        }\n      }\n    }\n    if (indexToSelect >= 0) {\n      this.ensureIndexVisible(indexToSelect, position);\n    }\n  }\n  // Valid values for position are bottom, middle and top\n  // position should be {'top','middle','bottom', or undefined/null}.\n  // if undefined/null, then the grid will to the minimal amount of scrolling,\n  // eg if grid needs to scroll up, it scrolls until row is on top,\n  //    if grid needs to scroll down, it scrolls until row is on bottom,\n  //    if row is already in view, grid does not scroll\n  ensureIndexVisible(index, position, retry = 0) {\n    if (_isDomLayout(this.gos, \"print\")) {\n      return;\n    }\n    const { rowModel } = this.beans;\n    const rowCount = rowModel.getRowCount();\n    if (typeof index !== \"number\" || index < 0 || index >= rowCount) {\n      _warn(88, { index });\n      return;\n    }\n    this.clearRetryListeners();\n    const { frameworkOverrides, pageBounds, rowContainerHeight: heightScaler, rowRenderer } = this.beans;\n    frameworkOverrides.wrapIncoming(() => {\n      const gridBodyCtrl = this.ctrlsSvc.getGridBodyCtrl();\n      const rowNode = rowModel.getRow(index);\n      let rowGotShiftedDuringOperation;\n      let stickyHeightsChanged;\n      let attempt = 0;\n      this.invalidateVerticalScroll();\n      do {\n        const { stickyTopHeight, stickyBottomHeight } = gridBodyCtrl;\n        const startingRowTop = rowNode.rowTop;\n        const startingRowHeight = rowNode.rowHeight;\n        const paginationOffset = pageBounds.getPixelOffset();\n        const rowTopPixel = rowNode.rowTop - paginationOffset;\n        const rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n        const scrollPosition = this.getVScrollPosition();\n        const heightOffset = heightScaler.divStretchOffset;\n        const vScrollTop = scrollPosition.top + heightOffset;\n        const vScrollBottom = scrollPosition.bottom + heightOffset;\n        const viewportHeight = vScrollBottom - vScrollTop;\n        const pxTop = heightScaler.getScrollPositionForPixel(rowTopPixel);\n        const pxBottom = heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n        const pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n        const rowAboveViewport = vScrollTop + stickyTopHeight > rowTopPixel;\n        const rowBelowViewport = vScrollBottom - stickyBottomHeight < rowBottomPixel;\n        let newScrollPosition = null;\n        if (position === \"top\") {\n          newScrollPosition = pxTop - stickyTopHeight;\n        } else if (position === \"bottom\") {\n          newScrollPosition = pxBottom + stickyBottomHeight;\n        } else if (position === \"middle\") {\n          newScrollPosition = pxMiddle;\n        } else if (rowAboveViewport) {\n          newScrollPosition = pxTop - stickyTopHeight;\n        } else if (rowBelowViewport) {\n          newScrollPosition = pxBottom + stickyBottomHeight;\n        }\n        if (newScrollPosition !== null) {\n          this.setVerticalScrollPosition(newScrollPosition);\n          rowRenderer.redraw({ afterScroll: true });\n        }\n        rowGotShiftedDuringOperation = startingRowTop !== rowNode.rowTop || startingRowHeight !== rowNode.rowHeight;\n        stickyHeightsChanged = stickyTopHeight !== gridBodyCtrl.stickyTopHeight || stickyBottomHeight !== gridBodyCtrl.stickyBottomHeight;\n        attempt++;\n      } while ((rowGotShiftedDuringOperation || stickyHeightsChanged) && attempt < 10);\n      this.animationFrameSvc?.flushAllFrames();\n      if (retry < 10 && (rowNode?.stub || !this.beans.rowAutoHeight?.areRowsMeasured())) {\n        const scrollTop = this.getVScrollPosition().top;\n        this.clearRetryListenerFncs = this.addManagedEventListeners({\n          bodyScroll: () => {\n            const newScrollTop = this.getVScrollPosition().top;\n            if (scrollTop === newScrollTop) {\n              return;\n            }\n            this.clearRetryListeners();\n          },\n          modelUpdated: () => {\n            this.clearRetryListeners();\n            if (index >= rowModel.getRowCount()) {\n              return;\n            }\n            this.ensureIndexVisible(index, position, retry + 1);\n          }\n        });\n      }\n    });\n  }\n  clearRetryListeners() {\n    this.clearRetryListenerFncs.forEach((callback) => callback());\n    this.clearRetryListenerFncs = [];\n  }\n  ensureColumnVisible(key, position = \"auto\") {\n    const { colModel, frameworkOverrides } = this.beans;\n    const column = colModel.getCol(key);\n    if (!column) {\n      return;\n    }\n    if (column.isPinned()) {\n      return;\n    }\n    if (!this.visibleCols.isColDisplayed(column)) {\n      return;\n    }\n    const newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);\n    frameworkOverrides.wrapIncoming(() => {\n      if (newHorizontalScroll !== null) {\n        this.centerRowsCtrl.setCenterViewportScrollLeft(newHorizontalScroll);\n      }\n      this.centerRowsCtrl.onHorizontalViewportChanged();\n      this.animationFrameSvc?.flushAllFrames();\n    });\n  }\n  getPositionedHorizontalScroll(column, position) {\n    const { columnBeforeStart, columnAfterEnd } = this.isColumnOutsideViewport(column);\n    const viewportTooSmallForColumn = this.centerRowsCtrl.getCenterWidth() < column.getActualWidth();\n    const viewportWidth = this.centerRowsCtrl.getCenterWidth();\n    const isRtl = this.enableRtl;\n    let alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;\n    let alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;\n    if (position !== \"auto\") {\n      alignColToStart = position === \"start\";\n      alignColToEnd = position === \"end\";\n    }\n    const isMiddle = position === \"middle\";\n    if (alignColToStart || alignColToEnd || isMiddle) {\n      const { colLeft, colMiddle, colRight } = this.getColumnBounds(column);\n      if (isMiddle) {\n        return colMiddle - viewportWidth / 2;\n      }\n      if (alignColToStart) {\n        return isRtl ? colRight : colLeft;\n      }\n      return isRtl ? colLeft - viewportWidth : colRight - viewportWidth;\n    }\n    return null;\n  }\n  isColumnOutsideViewport(column) {\n    const { start: viewportStart, end: viewportEnd } = this.getViewportBounds();\n    const { colLeft, colRight } = this.getColumnBounds(column);\n    const isRtl = this.enableRtl;\n    const columnBeforeStart = isRtl ? viewportStart > colRight : viewportEnd < colRight;\n    const columnAfterEnd = isRtl ? viewportEnd < colLeft : viewportStart > colLeft;\n    return { columnBeforeStart, columnAfterEnd };\n  }\n  getColumnBounds(column) {\n    const isRtl = this.enableRtl;\n    const bodyWidth = this.visibleCols.bodyWidth;\n    const colWidth = column.getActualWidth();\n    const colLeft = column.getLeft();\n    const multiplier = isRtl ? -1 : 1;\n    const colLeftPixel = isRtl ? bodyWidth - colLeft : colLeft;\n    const colRightPixel = colLeftPixel + colWidth * multiplier;\n    const colMidPixel = colLeftPixel + colWidth / 2 * multiplier;\n    return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };\n  }\n  getViewportBounds() {\n    const viewportWidth = this.centerRowsCtrl.getCenterWidth();\n    const scrollPosition = this.centerRowsCtrl.getCenterViewportScrollLeft();\n    const viewportStartPixel = scrollPosition;\n    const viewportEndPixel = viewportWidth + scrollPosition;\n    return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/centerWidthFeature.ts\nvar CenterWidthFeature = class extends BeanStub {\n  constructor(callback, addSpacer = false) {\n    super();\n    this.callback = callback;\n    this.addSpacer = addSpacer;\n  }\n  postConstruct() {\n    const listener = this.setWidth.bind(this);\n    this.addManagedPropertyListener(\"domLayout\", listener);\n    this.addManagedEventListeners({\n      columnContainerWidthChanged: listener,\n      displayedColumnsChanged: listener,\n      leftPinnedWidthChanged: listener\n    });\n    if (this.addSpacer) {\n      this.addManagedEventListeners({\n        rightPinnedWidthChanged: listener,\n        scrollVisibilityChanged: listener,\n        scrollbarWidthChanged: listener\n      });\n    }\n    this.setWidth();\n  }\n  setWidth() {\n    const printLayout = _isDomLayout(this.gos, \"print\");\n    const { visibleCols, scrollVisibleSvc } = this.beans;\n    const centerWidth = visibleCols.bodyWidth;\n    const leftWidth = visibleCols.getColsLeftWidth();\n    const rightWidth = visibleCols.getDisplayedColumnsRightWidth();\n    let totalWidth;\n    if (printLayout) {\n      totalWidth = centerWidth + leftWidth + rightWidth;\n    } else {\n      totalWidth = centerWidth;\n      if (this.addSpacer) {\n        const relevantWidth = this.gos.get(\"enableRtl\") ? leftWidth : rightWidth;\n        if (relevantWidth === 0 && scrollVisibleSvc.verticalScrollShowing) {\n          totalWidth += scrollVisibleSvc.getScrollbarWidth();\n        }\n      }\n    }\n    this.callback(totalWidth);\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/viewportSizeFeature.ts\nvar ViewportSizeFeature = class extends BeanStub {\n  constructor(centerContainerCtrl) {\n    super();\n    this.centerContainerCtrl = centerContainerCtrl;\n  }\n  wireBeans(beans) {\n    this.scrollVisibleSvc = beans.scrollVisibleSvc;\n  }\n  postConstruct() {\n    this.beans.ctrlsSvc.whenReady(this, (p) => {\n      this.gridBodyCtrl = p.gridBodyCtrl;\n      this.listenForResize();\n    });\n    this.addManagedEventListeners({ scrollbarWidthChanged: this.onScrollbarWidthChanged.bind(this) });\n    this.addManagedPropertyListeners([\"alwaysShowHorizontalScroll\", \"alwaysShowVerticalScroll\"], () => {\n      this.checkViewportAndScrolls();\n    });\n  }\n  listenForResize() {\n    const { beans, centerContainerCtrl, gridBodyCtrl } = this;\n    const listener = () => {\n      _requestAnimationFrame(beans, () => {\n        this.onCenterViewportResized();\n      });\n    };\n    centerContainerCtrl.registerViewportResizeListener(listener);\n    gridBodyCtrl.registerBodyViewportResizeListener(listener);\n  }\n  onScrollbarWidthChanged() {\n    this.checkViewportAndScrolls();\n  }\n  onCenterViewportResized() {\n    this.scrollVisibleSvc.updateScrollGap();\n    if (this.centerContainerCtrl.isViewportInTheDOMTree()) {\n      const { pinnedCols, colFlex } = this.beans;\n      pinnedCols?.keepPinnedColumnsNarrowerThanViewport();\n      this.checkViewportAndScrolls();\n      const newWidth = this.centerContainerCtrl.getCenterWidth();\n      if (newWidth !== this.centerWidth) {\n        this.centerWidth = newWidth;\n        colFlex?.refreshFlexedColumns({\n          viewportWidth: this.centerWidth,\n          updateBodyWidths: true,\n          fireResizedEvent: true\n        });\n      }\n    } else {\n      this.bodyHeight = 0;\n    }\n  }\n  // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n  // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n  checkViewportAndScrolls() {\n    this.updateScrollVisibleService();\n    this.checkBodyHeight();\n    this.onHorizontalViewportChanged();\n    this.gridBodyCtrl.scrollFeature.checkScrollLeft();\n  }\n  getBodyHeight() {\n    return this.bodyHeight;\n  }\n  checkBodyHeight() {\n    const eBodyViewport = this.gridBodyCtrl.eBodyViewport;\n    const bodyHeight = _getInnerHeight(eBodyViewport);\n    if (this.bodyHeight !== bodyHeight) {\n      this.bodyHeight = bodyHeight;\n      this.eventSvc.dispatchEvent({\n        type: \"bodyHeightChanged\"\n      });\n    }\n  }\n  updateScrollVisibleService() {\n    this.updateScrollVisibleServiceImpl();\n    setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n  }\n  updateScrollVisibleServiceImpl() {\n    const params = {\n      horizontalScrollShowing: this.centerContainerCtrl.isHorizontalScrollShowing(),\n      verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()\n    };\n    this.scrollVisibleSvc.setScrollsVisible(params);\n  }\n  // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n  // out the virtual columns again. gets called from following locations:\n  // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged\n  onHorizontalViewportChanged() {\n    const scrollWidth = this.centerContainerCtrl.getCenterWidth();\n    const scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();\n    this.beans.colViewport.setScrollPosition(scrollWidth, scrollPosition);\n  }\n};\n\n// packages/ag-grid-community/src/styling/stylingUtils.ts\nfunction processClassRules(expressionSvc, previousClassRules, classRules, params, onApplicableClass, onNotApplicableClass) {\n  if (classRules == null && previousClassRules == null) {\n    return;\n  }\n  const classesToApply = {};\n  const classesToRemove = {};\n  const forEachSingleClass = (className, callback) => {\n    className.split(\" \").forEach((singleClass) => {\n      if (singleClass.trim() == \"\")\n        return;\n      callback(singleClass);\n    });\n  };\n  if (classRules) {\n    const classNames = Object.keys(classRules);\n    for (let i = 0; i < classNames.length; i++) {\n      const className = classNames[i];\n      const rule = classRules[className];\n      let resultOfRule;\n      if (typeof rule === \"string\") {\n        resultOfRule = expressionSvc ? expressionSvc.evaluate(rule, params) : true;\n      } else if (typeof rule === \"function\") {\n        resultOfRule = rule(params);\n      }\n      forEachSingleClass(className, (singleClass) => {\n        resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;\n      });\n    }\n  }\n  if (previousClassRules && onNotApplicableClass) {\n    Object.keys(previousClassRules).forEach(\n      (className) => forEachSingleClass(className, (singleClass) => {\n        if (!classesToApply[singleClass]) {\n          classesToRemove[singleClass] = true;\n        }\n      })\n    );\n  }\n  if (onNotApplicableClass) {\n    Object.keys(classesToRemove).forEach(onNotApplicableClass);\n  }\n  Object.keys(classesToApply).forEach(onApplicableClass);\n}\n\n// packages/ag-grid-community/src/styling/rowStyleService.ts\nfunction calculateRowLevel(rowNode) {\n  if (rowNode.group) {\n    return rowNode.level;\n  }\n  const parent = rowNode.parent;\n  return parent ? parent.level + 1 : 0;\n}\nvar RowStyleService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowStyleSvc\";\n  }\n  processClassesFromGridOptions(classes, rowNode) {\n    const gos = this.gos;\n    const process = (rowCls) => {\n      if (typeof rowCls === \"string\") {\n        classes.push(rowCls);\n      } else if (Array.isArray(rowCls)) {\n        rowCls.forEach((e) => classes.push(e));\n      }\n    };\n    const rowClass = gos.get(\"rowClass\");\n    if (rowClass) {\n      process(rowClass);\n    }\n    const rowClassFunc = gos.getCallback(\"getRowClass\");\n    if (rowClassFunc) {\n      const params = {\n        data: rowNode.data,\n        node: rowNode,\n        rowIndex: rowNode.rowIndex\n      };\n      const rowClassFuncResult = rowClassFunc(params);\n      process(rowClassFuncResult);\n    }\n  }\n  preProcessRowClassRules(classes, rowNode) {\n    this.processRowClassRules(\n      rowNode,\n      (className) => {\n        classes.push(className);\n      },\n      () => {\n      }\n    );\n  }\n  processRowClassRules(rowNode, onApplicableClass, onNotApplicableClass) {\n    const { gos, expressionSvc } = this.beans;\n    const rowClassParams = _addGridCommonParams(gos, {\n      data: rowNode.data,\n      node: rowNode,\n      rowIndex: rowNode.rowIndex\n    });\n    processClassRules(\n      expressionSvc,\n      void 0,\n      gos.get(\"rowClassRules\"),\n      rowClassParams,\n      onApplicableClass,\n      onNotApplicableClass\n    );\n  }\n  processStylesFromGridOptions(rowNode) {\n    const gos = this.gos;\n    const rowStyle = gos.get(\"rowStyle\");\n    const rowStyleFunc = gos.getCallback(\"getRowStyle\");\n    let rowStyleFuncResult;\n    if (rowStyleFunc) {\n      const params = {\n        data: rowNode.data,\n        node: rowNode,\n        rowIndex: rowNode.rowIndex\n      };\n      rowStyleFuncResult = rowStyleFunc(params);\n    }\n    if (rowStyleFuncResult || rowStyle) {\n      return Object.assign({}, rowStyle, rowStyleFuncResult);\n    }\n    return void 0;\n  }\n};\n\n// packages/ag-grid-community/src/rendering/row/rowCtrl.ts\nvar instanceIdSequence3 = 0;\nvar DOM_DATA_KEY_ROW_CTRL = \"renderedRow\";\nvar RowCtrl = class extends BeanStub {\n  constructor(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {\n    super();\n    this.rowNode = rowNode;\n    this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n    this.printLayout = printLayout;\n    this.allRowGuis = [];\n    this.active = true;\n    this.centerCellCtrls = { list: [], map: {} };\n    this.leftCellCtrls = { list: [], map: {} };\n    this.rightCellCtrls = { list: [], map: {} };\n    this.slideInAnimation = {\n      left: false,\n      center: false,\n      right: false,\n      fullWidth: false\n    };\n    this.fadeInAnimation = {\n      left: false,\n      center: false,\n      right: false,\n      fullWidth: false\n    };\n    this.rowDragComps = [];\n    this.lastMouseDownOnDragger = false;\n    this.emptyStyle = {};\n    this.updateColumnListsPending = false;\n    this.rowId = null;\n    /** sanitised */\n    this.businessKey = null;\n    this.beans = beans;\n    this.gos = beans.gos;\n    this.paginationPage = beans.pagination?.getCurrentPage() ?? 0;\n    this.suppressRowTransform = this.gos.get(\"suppressRowTransform\");\n    this.instanceId = rowNode.id + \"-\" + instanceIdSequence3++;\n    this.rowId = _escapeString(rowNode.id);\n    this.initRowBusinessKey();\n    this.rowFocused = beans.focusSvc.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n    this.rowLevel = calculateRowLevel(this.rowNode);\n    this.setRowType();\n    this.setAnimateFlags(animateIn);\n    this.rowStyles = this.processStylesFromGridOptions();\n    this.addListeners();\n  }\n  initRowBusinessKey() {\n    this.businessKeyForNodeFunc = this.gos.get(\"getBusinessKeyForNode\");\n    this.updateRowBusinessKey();\n  }\n  updateRowBusinessKey() {\n    if (typeof this.businessKeyForNodeFunc !== \"function\") {\n      return;\n    }\n    const businessKey = this.businessKeyForNodeFunc(this.rowNode);\n    this.businessKey = _escapeString(businessKey);\n  }\n  updateGui(containerType, gui) {\n    if (containerType === \"left\") {\n      this.leftGui = gui;\n    } else if (containerType === \"right\") {\n      this.rightGui = gui;\n    } else if (containerType === \"fullWidth\") {\n      this.fullWidthGui = gui;\n    } else {\n      this.centerGui = gui;\n    }\n  }\n  setComp(rowComp, element, containerType, compBean) {\n    const { context, focusSvc } = this.beans;\n    compBean = setupCompBean(this, context, compBean);\n    const gui = { rowComp, element, containerType, compBean };\n    this.allRowGuis.push(gui);\n    this.updateGui(containerType, gui);\n    this.initialiseRowComp(gui);\n    const rowNode = this.rowNode;\n    const isSsrmLoadingRow = this.rowType === \"FullWidthLoading\" || rowNode.stub;\n    const isIrmLoadingRow = !rowNode.data && this.beans.rowModel.getType() === \"infinite\";\n    if (!isSsrmLoadingRow && !isIrmLoadingRow && !rowNode.rowPinned) {\n      this.beans.rowRenderer.dispatchFirstDataRenderedEvent();\n    }\n    const focusableElement = this.fullWidthGui?.element;\n    if (focusableElement) {\n      if (!this.editing && focusSvc.isRowFocused(rowNode.rowIndex, rowNode.rowPinned) && focusSvc.shouldTakeFocus()) {\n        setTimeout(() => focusableElement.focus({ preventScroll: true }), 0);\n      }\n    }\n  }\n  unsetComp(containerType) {\n    this.allRowGuis = this.allRowGuis.filter((rowGui) => rowGui.containerType !== containerType);\n    this.updateGui(containerType, void 0);\n  }\n  isCacheable() {\n    return this.rowType === \"FullWidthDetail\" && this.gos.get(\"keepDetailRows\");\n  }\n  setCached(cached) {\n    const displayValue = cached ? \"none\" : \"\";\n    this.allRowGuis.forEach((rg) => rg.element.style.display = displayValue);\n  }\n  initialiseRowComp(gui) {\n    const gos = this.gos;\n    this.onSuppressCellFocusChanged(this.beans.gos.get(\"suppressCellFocus\"));\n    this.listenOnDomOrder(gui);\n    this.onRowHeightChanged(gui);\n    this.updateRowIndexes(gui);\n    this.setFocusedClasses(gui);\n    this.setStylesFromGridOptions(false, gui);\n    if (_isRowSelection(gos) && this.rowNode.selectable) {\n      this.onRowSelected(gui);\n    }\n    this.updateColumnLists(!this.useAnimationFrameForCreate);\n    const comp = gui.rowComp;\n    const initialRowClasses = this.getInitialRowClasses(gui.containerType);\n    initialRowClasses.forEach((name) => comp.toggleCss(name, true));\n    this.executeSlideAndFadeAnimations(gui);\n    if (this.rowNode.group) {\n      _setAriaExpanded(gui.element, this.rowNode.expanded == true);\n    }\n    this.setRowCompRowId(comp);\n    this.setRowCompRowBusinessKey(comp);\n    _setDomData(gos, gui.element, DOM_DATA_KEY_ROW_CTRL, this);\n    gui.compBean.addDestroyFunc(() => _setDomData(gos, gui.element, DOM_DATA_KEY_ROW_CTRL, null));\n    if (this.useAnimationFrameForCreate) {\n      this.beans.animationFrameSvc.createTask(\n        this.addHoverFunctionality.bind(this, gui),\n        this.rowNode.rowIndex,\n        \"p2\",\n        false\n      );\n    } else {\n      this.addHoverFunctionality(gui);\n    }\n    if (this.isFullWidth()) {\n      this.setupFullWidth(gui);\n    }\n    if (gos.get(\"rowDragEntireRow\")) {\n      this.addRowDraggerToRow(gui);\n    }\n    if (this.useAnimationFrameForCreate) {\n      this.beans.animationFrameSvc.addDestroyTask(() => {\n        if (!this.isAlive()) {\n          return;\n        }\n        gui.rowComp.toggleCss(\"ag-after-created\", true);\n      });\n    }\n    this.executeProcessRowPostCreateFunc();\n  }\n  setRowCompRowBusinessKey(comp) {\n    if (this.businessKey == null) {\n      return;\n    }\n    comp.setRowBusinessKey(this.businessKey);\n  }\n  setRowCompRowId(comp) {\n    const rowId = _escapeString(this.rowNode.id);\n    this.rowId = rowId;\n    if (rowId == null) {\n      return;\n    }\n    comp.setRowId(rowId);\n  }\n  executeSlideAndFadeAnimations(gui) {\n    const { containerType } = gui;\n    const shouldSlide = this.slideInAnimation[containerType];\n    if (shouldSlide) {\n      _batchCall(() => {\n        this.onTopChanged();\n      });\n      this.slideInAnimation[containerType] = false;\n    }\n    const shouldFade = this.fadeInAnimation[containerType];\n    if (shouldFade) {\n      _batchCall(() => {\n        gui.rowComp.toggleCss(\"ag-opacity-zero\", false);\n      });\n      this.fadeInAnimation[containerType] = false;\n    }\n  }\n  addRowDraggerToRow(gui) {\n    const rowDragComp = this.beans.rowDragSvc?.createRowDragCompForRow(this.rowNode, gui.element);\n    if (!rowDragComp) {\n      return;\n    }\n    const rowDragBean = this.createBean(rowDragComp, this.beans.context);\n    this.rowDragComps.push(rowDragBean);\n    gui.compBean.addDestroyFunc(() => {\n      this.rowDragComps = this.rowDragComps.filter((r) => r !== rowDragBean);\n      this.destroyBean(rowDragBean, this.beans.context);\n    });\n  }\n  setupFullWidth(gui) {\n    const pinned = this.getPinnedForContainer(gui.containerType);\n    const compDetails = this.createFullWidthCompDetails(gui.element, pinned);\n    gui.rowComp.showFullWidth(compDetails);\n  }\n  getFullWidthCellRenderers() {\n    if (this.gos.get(\"embedFullWidthRows\")) {\n      return this.allRowGuis.map((gui) => gui?.rowComp?.getFullWidthCellRenderer());\n    }\n    return [this.fullWidthGui?.rowComp?.getFullWidthCellRenderer()];\n  }\n  executeProcessRowPostCreateFunc() {\n    const func = this.gos.getCallback(\"processRowPostCreate\");\n    if (!func || !this.areAllContainersReady()) {\n      return;\n    }\n    const params = {\n      // areAllContainersReady asserts that centerGui is not null\n      eRow: this.centerGui.element,\n      ePinnedLeftRow: this.leftGui ? this.leftGui.element : void 0,\n      ePinnedRightRow: this.rightGui ? this.rightGui.element : void 0,\n      node: this.rowNode,\n      rowIndex: this.rowNode.rowIndex,\n      addRenderedRowListener: this.addEventListener.bind(this)\n    };\n    func(params);\n  }\n  areAllContainersReady() {\n    const {\n      leftGui,\n      centerGui,\n      rightGui,\n      beans: { visibleCols }\n    } = this;\n    const isLeftReady = !!leftGui || !visibleCols.isPinningLeft();\n    const isCenterReady = !!centerGui;\n    const isRightReady = !!rightGui || !visibleCols.isPinningRight();\n    return isLeftReady && isCenterReady && isRightReady;\n  }\n  isNodeFullWidthCell() {\n    if (this.rowNode.detail) {\n      return true;\n    }\n    const isFullWidthCellFunc = this.beans.gos.getCallback(\"isFullWidthRow\");\n    return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this.rowNode }) : false;\n  }\n  setRowType() {\n    const isStub = this.rowNode.stub && !this.gos.get(\"suppressServerSideFullWidthLoadingRow\") && !this.gos.get(\"groupHideOpenParents\");\n    const isFullWidthCell = this.isNodeFullWidthCell();\n    const isDetailCell = this.gos.get(\"masterDetail\") && this.rowNode.detail;\n    const pivotMode = this.beans.colModel.isPivotMode();\n    const isFullWidthGroup = _isFullWidthGroupRow(this.gos, this.rowNode, pivotMode);\n    if (isStub) {\n      this.rowType = \"FullWidthLoading\";\n    } else if (isDetailCell) {\n      this.rowType = \"FullWidthDetail\";\n    } else if (isFullWidthCell) {\n      this.rowType = \"FullWidth\";\n    } else if (isFullWidthGroup) {\n      this.rowType = \"FullWidthGroup\";\n    } else {\n      this.rowType = \"Normal\";\n    }\n  }\n  updateColumnLists(suppressAnimationFrame = false, useFlushSync = false) {\n    if (this.isFullWidth()) {\n      return;\n    }\n    const { animationFrameSvc } = this.beans;\n    const noAnimation = !animationFrameSvc?.active || suppressAnimationFrame || this.printLayout;\n    if (noAnimation) {\n      this.updateColumnListsImpl(useFlushSync);\n      return;\n    }\n    if (this.updateColumnListsPending) {\n      return;\n    }\n    animationFrameSvc.createTask(\n      () => {\n        if (!this.active) {\n          return;\n        }\n        this.updateColumnListsImpl(true);\n      },\n      this.rowNode.rowIndex,\n      \"p1\",\n      false\n    );\n    this.updateColumnListsPending = true;\n  }\n  /**\n   * Overridden by SpannedRowCtrl\n   */\n  getNewCellCtrl(col) {\n    const isCellSpan = this.beans.rowSpanSvc?.isCellSpanning(col, this.rowNode);\n    if (isCellSpan) {\n      return void 0;\n    }\n    return new CellCtrl(col, this.rowNode, this.beans, this);\n  }\n  /**\n   * Overridden by SpannedRowCtrl, if span context changes cell needs rebuilt\n   */\n  isCorrectCtrlForSpan(cell) {\n    return !this.beans.rowSpanSvc?.isCellSpanning(cell.column, this.rowNode);\n  }\n  createCellCtrls(prev, cols, pinned = null) {\n    const res = {\n      list: [],\n      map: {}\n    };\n    const addCell = (colInstanceId, cellCtrl, index) => {\n      if (index != null) {\n        res.list.splice(index, 0, cellCtrl);\n      } else {\n        res.list.push(cellCtrl);\n      }\n      res.map[colInstanceId] = cellCtrl;\n    };\n    const colsFromPrev = [];\n    for (const col of cols) {\n      const colInstanceId = col.getInstanceId();\n      let cellCtrl = prev.map[colInstanceId];\n      if (cellCtrl && !this.isCorrectCtrlForSpan(cellCtrl)) {\n        cellCtrl.destroy();\n        cellCtrl = void 0;\n      }\n      if (!cellCtrl) {\n        cellCtrl = this.getNewCellCtrl(col);\n      }\n      if (!cellCtrl) {\n        continue;\n      }\n      addCell(colInstanceId, cellCtrl);\n    }\n    for (const prevCellCtrl of prev.list) {\n      const colInstanceId = prevCellCtrl.column.getInstanceId();\n      const cellInResult = res.map[colInstanceId] != null;\n      if (cellInResult) {\n        continue;\n      }\n      const keepCell = !this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);\n      if (keepCell) {\n        colsFromPrev.push([colInstanceId, prevCellCtrl]);\n      } else {\n        prevCellCtrl.destroy();\n      }\n    }\n    if (colsFromPrev.length) {\n      for (const [colInstanceId, cellCtrl] of colsFromPrev) {\n        const index = res.list.findIndex((ctrl) => ctrl.column.getLeft() > cellCtrl.column.getLeft());\n        const normalisedIndex = index === -1 ? void 0 : Math.max(index - 1, 0);\n        addCell(colInstanceId, cellCtrl, normalisedIndex);\n      }\n    }\n    const { focusSvc, visibleCols } = this.beans;\n    const focusedCell = focusSvc.getFocusedCell();\n    if (focusedCell && focusedCell.column.getPinned() == pinned) {\n      const focusedColInstanceId = focusedCell.column.getInstanceId();\n      const focusedCellCtrl = res.map[focusedColInstanceId];\n      if (!focusedCellCtrl && visibleCols.allCols.includes(focusedCell.column)) {\n        const cellCtrl = this.createFocusedCellCtrl();\n        if (cellCtrl) {\n          const index = res.list.findIndex((ctrl) => ctrl.column.getLeft() > cellCtrl.column.getLeft());\n          const normalisedIndex = index === -1 ? void 0 : Math.max(index - 1, 0);\n          addCell(focusedColInstanceId, cellCtrl, normalisedIndex);\n        }\n      }\n    }\n    return res;\n  }\n  /**\n   * Creates a new cell ctrl for the focused cell, if this is the correct row ctrl.\n   * @returns a CellCtrl for the focused cell, if required.\n   */\n  createFocusedCellCtrl() {\n    const { focusSvc, rowSpanSvc } = this.beans;\n    const focusedCell = focusSvc.getFocusedCell();\n    if (!focusedCell) {\n      return void 0;\n    }\n    const focusedSpan = rowSpanSvc?.getCellSpan(focusedCell.column, this.rowNode);\n    if (focusedSpan) {\n      if (focusedSpan.firstNode !== this.rowNode || !focusedSpan.doesSpanContain(focusedCell)) {\n        return void 0;\n      }\n    } else {\n      if (!focusSvc.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned)) {\n        return void 0;\n      }\n    }\n    return this.getNewCellCtrl(focusedCell.column);\n  }\n  updateColumnListsImpl(useFlushSync) {\n    this.updateColumnListsPending = false;\n    this.createAllCellCtrls();\n    this.setCellCtrls(useFlushSync);\n  }\n  setCellCtrls(useFlushSync) {\n    this.allRowGuis.forEach((item) => {\n      const cellControls = this.getCellCtrlsForContainer(item.containerType);\n      item.rowComp.setCellCtrls(cellControls, useFlushSync);\n    });\n  }\n  getCellCtrlsForContainer(containerType) {\n    switch (containerType) {\n      case \"left\":\n        return this.leftCellCtrls.list;\n      case \"right\":\n        return this.rightCellCtrls.list;\n      case \"fullWidth\":\n        return [];\n      case \"center\":\n        return this.centerCellCtrls.list;\n    }\n  }\n  createAllCellCtrls() {\n    const colViewport = this.beans.colViewport;\n    const presentedColsService = this.beans.visibleCols;\n    if (this.printLayout) {\n      this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, presentedColsService.allCols);\n      this.leftCellCtrls = { list: [], map: {} };\n      this.rightCellCtrls = { list: [], map: {} };\n    } else {\n      const centerCols = colViewport.getColsWithinViewport(this.rowNode);\n      this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);\n      const leftCols = presentedColsService.getLeftColsForRow(this.rowNode);\n      this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, \"left\");\n      const rightCols = presentedColsService.getRightColsForRow(this.rowNode);\n      this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, \"right\");\n    }\n  }\n  isCellEligibleToBeRemoved(cellCtrl, nextContainerPinned) {\n    const REMOVE_CELL = true;\n    const KEEP_CELL = false;\n    const { column } = cellCtrl;\n    if (column.getPinned() != nextContainerPinned) {\n      return REMOVE_CELL;\n    }\n    if (!this.isCorrectCtrlForSpan(cellCtrl)) {\n      return REMOVE_CELL;\n    }\n    const { editing } = cellCtrl;\n    const { visibleCols } = this.beans;\n    const focused = cellCtrl.isCellFocused();\n    const mightWantToKeepCell = editing || focused;\n    if (mightWantToKeepCell) {\n      const displayedColumns = visibleCols.allCols;\n      const cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n      return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n    }\n    return REMOVE_CELL;\n  }\n  getDomOrder() {\n    const isEnsureDomOrder = this.gos.get(\"ensureDomOrder\");\n    return isEnsureDomOrder || _isDomLayout(this.gos, \"print\");\n  }\n  listenOnDomOrder(gui) {\n    const listener = () => {\n      gui.rowComp.setDomOrder(this.getDomOrder());\n    };\n    gui.compBean.addManagedPropertyListeners([\"domLayout\", \"ensureDomOrder\"], listener);\n  }\n  setAnimateFlags(animateIn) {\n    if (this.rowNode.sticky || !animateIn) {\n      return;\n    }\n    const oldRowTopExists = _exists(this.rowNode.oldRowTop);\n    const { visibleCols } = this.beans;\n    const pinningLeft = visibleCols.isPinningLeft();\n    const pinningRight = visibleCols.isPinningRight();\n    if (oldRowTopExists) {\n      const { slideInAnimation } = this;\n      if (this.isFullWidth() && !this.gos.get(\"embedFullWidthRows\")) {\n        slideInAnimation.fullWidth = true;\n        return;\n      }\n      slideInAnimation.center = true;\n      slideInAnimation.left = pinningLeft;\n      slideInAnimation.right = pinningRight;\n    } else {\n      const { fadeInAnimation } = this;\n      if (this.isFullWidth() && !this.gos.get(\"embedFullWidthRows\")) {\n        fadeInAnimation.fullWidth = true;\n        return;\n      }\n      fadeInAnimation.center = true;\n      fadeInAnimation.left = pinningLeft;\n      fadeInAnimation.right = pinningRight;\n    }\n  }\n  isFullWidth() {\n    return this.rowType !== \"Normal\";\n  }\n  refreshFullWidth() {\n    const tryRefresh = (gui, pinned) => {\n      if (!gui) {\n        return true;\n      }\n      return gui.rowComp.refreshFullWidth(() => {\n        const compDetails = this.createFullWidthCompDetails(gui.element, pinned);\n        return compDetails.params;\n      });\n    };\n    const fullWidthSuccess = tryRefresh(this.fullWidthGui, null);\n    const centerSuccess = tryRefresh(this.centerGui, null);\n    const leftSuccess = tryRefresh(this.leftGui, \"left\");\n    const rightSuccess = tryRefresh(this.rightGui, \"right\");\n    const allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;\n    return allFullWidthRowsRefreshed;\n  }\n  addListeners() {\n    this.addManagedListeners(this.rowNode, {\n      heightChanged: () => this.onRowHeightChanged(),\n      rowSelected: () => this.onRowSelected(),\n      rowIndexChanged: this.onRowIndexChanged.bind(this),\n      topChanged: this.onTopChanged.bind(this),\n      ...this.beans.expansionSvc?.getRowExpandedListeners(this) ?? {}\n    });\n    if (this.rowNode.detail) {\n      this.addManagedListeners(this.rowNode.parent, { dataChanged: this.onRowNodeDataChanged.bind(this) });\n    }\n    this.addManagedListeners(this.rowNode, {\n      dataChanged: this.onRowNodeDataChanged.bind(this),\n      cellChanged: this.postProcessCss.bind(this),\n      rowHighlightChanged: this.onRowNodeHighlightChanged.bind(this),\n      draggingChanged: this.postProcessRowDragging.bind(this),\n      uiLevelChanged: this.onUiLevelChanged.bind(this),\n      rowPinned: this.onRowPinned.bind(this)\n    });\n    this.addManagedListeners(this.beans.eventSvc, {\n      paginationPixelOffsetChanged: this.onPaginationPixelOffsetChanged.bind(this),\n      heightScaleChanged: this.onTopChanged.bind(this),\n      displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this),\n      virtualColumnsChanged: this.onVirtualColumnsChanged.bind(this),\n      cellFocused: this.onCellFocusChanged.bind(this),\n      cellFocusCleared: this.onCellFocusChanged.bind(this),\n      paginationChanged: this.onPaginationChanged.bind(this),\n      modelUpdated: this.refreshFirstAndLastRowStyles.bind(this),\n      columnMoved: () => this.updateColumnLists()\n    });\n    if (this.beans.rowSpanSvc) {\n      this.addManagedListeners(this.beans.rowSpanSvc, {\n        spannedCellsUpdated: ({ pinned }) => {\n          if (pinned && !this.rowNode.rowPinned) {\n            return;\n          }\n          this.updateColumnLists();\n        }\n      });\n    }\n    this.addDestroyFunc(() => {\n      this.rowDragComps = this.destroyBeans(this.rowDragComps, this.beans.context);\n      this.tooltipFeature = this.destroyBean(this.tooltipFeature, this.beans.context);\n    });\n    this.addManagedPropertyListeners(\n      [\"rowStyle\", \"getRowStyle\", \"rowClass\", \"getRowClass\", \"rowClassRules\"],\n      this.postProcessCss.bind(this)\n    );\n    this.addManagedPropertyListener(\"rowDragEntireRow\", () => {\n      const useRowDragEntireRow = this.gos.get(\"rowDragEntireRow\");\n      if (useRowDragEntireRow) {\n        this.allRowGuis.forEach((gui) => {\n          this.addRowDraggerToRow(gui);\n        });\n        return;\n      }\n      this.rowDragComps = this.destroyBeans(this.rowDragComps, this.beans.context);\n    });\n    this.addListenersForCellComps();\n  }\n  addListenersForCellComps() {\n    this.addManagedListeners(this.rowNode, {\n      rowIndexChanged: () => {\n        this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onRowIndexChanged());\n      },\n      cellChanged: (event) => {\n        this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onCellChanged(event));\n      }\n    });\n  }\n  /** Should only ever be triggered on source rows (i.e. not on pinned siblings) */\n  onRowPinned() {\n    for (const gui of this.allRowGuis) {\n      gui.rowComp.toggleCss(\"ag-row-pinned-source\", !!this.rowNode.pinnedSibling);\n    }\n  }\n  onRowNodeDataChanged(event) {\n    const fullWidthChanged = this.isFullWidth() !== !!this.isNodeFullWidthCell();\n    if (fullWidthChanged) {\n      this.beans.rowRenderer.redrawRow(this.rowNode);\n      return;\n    }\n    if (this.isFullWidth()) {\n      const refresh = this.refreshFullWidth();\n      if (!refresh) {\n        this.beans.rowRenderer.redrawRow(this.rowNode);\n      }\n      return;\n    }\n    this.getAllCellCtrls().forEach(\n      (cellCtrl) => cellCtrl.refreshCell({\n        suppressFlash: !event.update,\n        newData: !event.update\n      })\n    );\n    this.allRowGuis.forEach((gui) => {\n      this.setRowCompRowId(gui.rowComp);\n      this.updateRowBusinessKey();\n      this.setRowCompRowBusinessKey(gui.rowComp);\n    });\n    this.onRowSelected();\n    this.postProcessCss();\n  }\n  postProcessCss() {\n    this.setStylesFromGridOptions(true);\n    this.postProcessClassesFromGridOptions();\n    this.postProcessRowClassRules();\n    this.postProcessRowDragging();\n  }\n  onRowNodeHighlightChanged() {\n    const highlighted = this.rowNode.highlighted;\n    this.allRowGuis.forEach((gui) => {\n      const aboveOn = highlighted === \"Above\";\n      const belowOn = highlighted === \"Below\";\n      gui.rowComp.toggleCss(\"ag-row-highlight-above\", aboveOn);\n      gui.rowComp.toggleCss(\"ag-row-highlight-below\", belowOn);\n    });\n  }\n  postProcessRowDragging() {\n    const dragging = this.rowNode.dragging;\n    this.allRowGuis.forEach((gui) => gui.rowComp.toggleCss(\"ag-row-dragging\", dragging));\n  }\n  onDisplayedColumnsChanged() {\n    this.updateColumnLists(true);\n    this.beans.rowAutoHeight?.requestCheckAutoHeight();\n  }\n  onVirtualColumnsChanged() {\n    this.updateColumnLists(false, true);\n  }\n  getRowPosition() {\n    return {\n      rowPinned: _makeNull(this.rowNode.rowPinned),\n      rowIndex: this.rowNode.rowIndex\n    };\n  }\n  onKeyboardNavigate(keyboardEvent) {\n    const groupInfo = this.findFullWidthInfoForEvent(keyboardEvent);\n    if (!groupInfo) {\n      return;\n    }\n    const { rowGui, column } = groupInfo;\n    const currentFullWidthContainer = rowGui.element;\n    const isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n    if (!isFullWidthContainerFocused) {\n      return;\n    }\n    const node = this.rowNode;\n    const { focusSvc, navigation } = this.beans;\n    const lastFocusedCell = focusSvc.getFocusedCell();\n    const cellPosition = {\n      rowIndex: node.rowIndex,\n      rowPinned: node.rowPinned,\n      column: lastFocusedCell?.column ?? column\n    };\n    navigation?.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);\n    keyboardEvent.preventDefault();\n  }\n  onTabKeyDown(keyboardEvent) {\n    if (keyboardEvent.defaultPrevented || _isStopPropagationForAgGrid(keyboardEvent)) {\n      return;\n    }\n    const currentFullWidthComp = this.allRowGuis.find(\n      (c) => c.element.contains(keyboardEvent.target)\n    );\n    const currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n    const isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n    const activeEl = _getActiveDomElement(this.beans);\n    let isDetailGridCellFocused = false;\n    if (currentFullWidthContainer && activeEl) {\n      isDetailGridCellFocused = currentFullWidthContainer.contains(activeEl) && activeEl.classList.contains(\"ag-cell\");\n    }\n    let nextEl = null;\n    if (!isFullWidthContainerFocused && !isDetailGridCellFocused) {\n      nextEl = _findNextFocusableElement(this.beans, currentFullWidthContainer, false, keyboardEvent.shiftKey);\n    }\n    if (this.isFullWidth() && isFullWidthContainerFocused || !nextEl) {\n      this.beans.navigation?.onTabKeyDown(this, keyboardEvent);\n    }\n  }\n  getFullWidthElement() {\n    if (this.fullWidthGui) {\n      return this.fullWidthGui.element;\n    }\n    return null;\n  }\n  getRowYPosition() {\n    const displayedEl = this.allRowGuis.find((el) => _isVisible(el.element))?.element;\n    if (displayedEl) {\n      return displayedEl.getBoundingClientRect().top;\n    }\n    return 0;\n  }\n  onSuppressCellFocusChanged(suppressCellFocus) {\n    const tabIndex = this.isFullWidth() && suppressCellFocus ? void 0 : -1;\n    this.allRowGuis.forEach((gui) => {\n      _addOrRemoveAttribute(gui.element, \"tabindex\", tabIndex);\n    });\n  }\n  onFullWidthRowFocused(event) {\n    const node = this.rowNode;\n    const isFocused = !event ? false : this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;\n    let element;\n    if (this.fullWidthGui) {\n      element = this.fullWidthGui.element;\n    } else {\n      const column = this.beans.colModel.getCol(event?.column);\n      const pinned = column?.pinned;\n      if (pinned) {\n        element = pinned === \"right\" ? this.rightGui?.element : this.leftGui?.element;\n      } else {\n        element = this.centerGui?.element;\n      }\n    }\n    if (!element) {\n      return;\n    }\n    element.classList.toggle(\"ag-full-width-focus\", isFocused);\n    if (isFocused && event?.forceBrowserFocus) {\n      element.focus({ preventScroll: true });\n    }\n  }\n  recreateCell(cellCtrl) {\n    this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);\n    this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);\n    this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);\n    cellCtrl.destroy();\n    this.updateColumnLists();\n  }\n  removeCellCtrl(prev, cellCtrlToRemove) {\n    const res = {\n      list: [],\n      map: {}\n    };\n    prev.list.forEach((cellCtrl) => {\n      if (cellCtrl === cellCtrlToRemove) {\n        return;\n      }\n      res.list.push(cellCtrl);\n      res.map[cellCtrl.column.getInstanceId()] = cellCtrl;\n    });\n    return res;\n  }\n  onMouseEvent(eventName, mouseEvent) {\n    switch (eventName) {\n      case \"dblclick\":\n        this.onRowDblClick(mouseEvent);\n        break;\n      case \"click\":\n        this.onRowClick(mouseEvent);\n        break;\n      case \"touchstart\":\n      case \"mousedown\":\n        this.onRowMouseDown(mouseEvent);\n        break;\n    }\n  }\n  createRowEvent(type, domEvent) {\n    const { rowNode } = this;\n    return _addGridCommonParams(this.gos, {\n      type,\n      node: rowNode,\n      data: rowNode.data,\n      rowIndex: rowNode.rowIndex,\n      rowPinned: rowNode.rowPinned,\n      event: domEvent\n    });\n  }\n  createRowEventWithSource(type, domEvent) {\n    const event = this.createRowEvent(type, domEvent);\n    event.source = this;\n    return event;\n  }\n  onRowDblClick(mouseEvent) {\n    if (_isStopPropagationForAgGrid(mouseEvent)) {\n      return;\n    }\n    this.beans.eventSvc.dispatchEvent(this.createRowEventWithSource(\"rowDoubleClicked\", mouseEvent));\n  }\n  findFullWidthInfoForEvent(event) {\n    if (!event) {\n      return;\n    }\n    const rowGui = this.findFullWidthRowGui(event.target);\n    const column = this.getColumnForFullWidth(rowGui);\n    if (!rowGui || !column) {\n      return;\n    }\n    return { rowGui, column };\n  }\n  findFullWidthRowGui(target) {\n    return this.allRowGuis.find((c) => c.element.contains(target));\n  }\n  getColumnForFullWidth(fullWidthRowGui) {\n    const { visibleCols } = this.beans;\n    switch (fullWidthRowGui?.containerType) {\n      case \"center\":\n        return visibleCols.centerCols[0];\n      case \"left\":\n        return visibleCols.leftCols[0];\n      case \"right\":\n        return visibleCols.rightCols[0];\n      default:\n        return visibleCols.allCols[0];\n    }\n  }\n  onRowMouseDown(mouseEvent) {\n    this.lastMouseDownOnDragger = _isElementChildOfClass(mouseEvent.target, \"ag-row-drag\", 3);\n    if (!this.isFullWidth()) {\n      return;\n    }\n    const node = this.rowNode;\n    const { rangeSvc, focusSvc } = this.beans;\n    rangeSvc?.removeAllCellRanges();\n    const groupInfo = this.findFullWidthInfoForEvent(mouseEvent);\n    if (!groupInfo) {\n      return;\n    }\n    const { rowGui, column } = groupInfo;\n    const element = rowGui.element;\n    const target = mouseEvent.target;\n    let forceBrowserFocus = mouseEvent.defaultPrevented || _isBrowserSafari();\n    if (element && element.contains(target) && _isFocusableFormField(target)) {\n      forceBrowserFocus = false;\n    }\n    focusSvc.setFocusedCell({\n      rowIndex: node.rowIndex,\n      column,\n      rowPinned: node.rowPinned,\n      forceBrowserFocus\n    });\n  }\n  onRowClick(mouseEvent) {\n    const stop = _isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;\n    if (stop) {\n      return;\n    }\n    const { eventSvc, selectionSvc } = this.beans;\n    eventSvc.dispatchEvent(this.createRowEventWithSource(\"rowClicked\", mouseEvent));\n    selectionSvc?.handleSelectionEvent(mouseEvent, this.rowNode, \"rowClicked\");\n  }\n  setupDetailRowAutoHeight(eDetailGui) {\n    if (this.rowType !== \"FullWidthDetail\") {\n      return;\n    }\n    this.beans.masterDetailSvc?.setupDetailRowAutoHeight(this, eDetailGui);\n  }\n  createFullWidthCompDetails(eRow, pinned) {\n    const { gos, rowNode } = this;\n    const params = _addGridCommonParams(gos, {\n      fullWidth: true,\n      data: rowNode.data,\n      node: rowNode,\n      value: rowNode.key,\n      valueFormatted: rowNode.key,\n      // these need to be taken out, as part of 'afterAttached' now\n      eGridCell: eRow,\n      eParentOfValue: eRow,\n      pinned,\n      addRenderedRowListener: this.addEventListener.bind(this),\n      // This is not on the type of ICellRendererParams\n      registerRowDragger: (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) => this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange),\n      setTooltip: (value, shouldDisplayTooltip) => {\n        gos.assertModuleRegistered(\"Tooltip\", 3);\n        this.refreshRowTooltip(value, shouldDisplayTooltip);\n      }\n    });\n    const compFactory = this.beans.userCompFactory;\n    switch (this.rowType) {\n      case \"FullWidthDetail\":\n        return _getFullWidthDetailCellRendererDetails(compFactory, params);\n      case \"FullWidthGroup\": {\n        const { value, valueFormatted } = this.beans.valueSvc.getValueForDisplay(void 0, this.rowNode, true);\n        params.value = value;\n        params.valueFormatted = valueFormatted;\n        return _getFullWidthGroupCellRendererDetails(compFactory, params);\n      }\n      case \"FullWidthLoading\":\n        return _getFullWidthLoadingCellRendererDetails(compFactory, params);\n      default:\n        return _getFullWidthCellRendererDetails(compFactory, params);\n    }\n  }\n  refreshRowTooltip(value, shouldDisplayTooltip) {\n    if (!this.fullWidthGui) {\n      return;\n    }\n    this.tooltipFeature = this.beans.tooltipSvc?.refreshRowTooltip(\n      this.tooltipFeature,\n      this,\n      value,\n      shouldDisplayTooltip\n    );\n  }\n  addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value = \"\", suppressVisibilityChange) {\n    const { rowDragSvc, context } = this.beans;\n    if (!rowDragSvc || !this.isFullWidth()) {\n      return;\n    }\n    const rowDragComp = rowDragSvc.createRowDragComp(\n      () => value,\n      this.rowNode,\n      void 0,\n      rowDraggerElement,\n      dragStartPixels,\n      suppressVisibilityChange\n    );\n    this.createBean(rowDragComp, context);\n    this.addDestroyFunc(() => {\n      this.destroyBean(rowDragComp, context);\n    });\n  }\n  onUiLevelChanged() {\n    const newLevel = calculateRowLevel(this.rowNode);\n    if (this.rowLevel != newLevel) {\n      const classToAdd = \"ag-row-level-\" + newLevel;\n      const classToRemove = \"ag-row-level-\" + this.rowLevel;\n      this.allRowGuis.forEach((gui) => {\n        gui.rowComp.toggleCss(classToAdd, true);\n        gui.rowComp.toggleCss(classToRemove, false);\n      });\n    }\n    this.rowLevel = newLevel;\n  }\n  isFirstRowOnPage() {\n    return this.rowNode.rowIndex === this.beans.pageBounds.getFirstRow();\n  }\n  isLastRowOnPage() {\n    return this.rowNode.rowIndex === this.beans.pageBounds.getLastRow();\n  }\n  refreshFirstAndLastRowStyles() {\n    const newFirst = this.isFirstRowOnPage();\n    const newLast = this.isLastRowOnPage();\n    if (this.firstRowOnPage !== newFirst) {\n      this.firstRowOnPage = newFirst;\n      this.allRowGuis.forEach((gui) => gui.rowComp.toggleCss(\"ag-row-first\", newFirst));\n    }\n    if (this.lastRowOnPage !== newLast) {\n      this.lastRowOnPage = newLast;\n      this.allRowGuis.forEach((gui) => gui.rowComp.toggleCss(\"ag-row-last\", newLast));\n    }\n  }\n  getAllCellCtrls() {\n    if (this.leftCellCtrls.list.length === 0 && this.rightCellCtrls.list.length === 0) {\n      return this.centerCellCtrls.list;\n    }\n    const res = [...this.centerCellCtrls.list, ...this.leftCellCtrls.list, ...this.rightCellCtrls.list];\n    return res;\n  }\n  postProcessClassesFromGridOptions() {\n    const cssClasses = [];\n    this.beans.rowStyleSvc?.processClassesFromGridOptions(cssClasses, this.rowNode);\n    if (!cssClasses.length) {\n      return;\n    }\n    cssClasses.forEach((classStr) => {\n      this.allRowGuis.forEach((c) => c.rowComp.toggleCss(classStr, true));\n    });\n  }\n  postProcessRowClassRules() {\n    this.beans.rowStyleSvc?.processRowClassRules(\n      this.rowNode,\n      (className) => {\n        this.allRowGuis.forEach((gui) => gui.rowComp.toggleCss(className, true));\n      },\n      (className) => {\n        this.allRowGuis.forEach((gui) => gui.rowComp.toggleCss(className, false));\n      }\n    );\n  }\n  setStylesFromGridOptions(updateStyles, gui) {\n    if (updateStyles) {\n      this.rowStyles = this.processStylesFromGridOptions();\n    }\n    this.forEachGui(gui, (gui2) => gui2.rowComp.setUserStyles(this.rowStyles));\n  }\n  getPinnedForContainer(rowContainerType) {\n    if (rowContainerType === \"left\" || rowContainerType === \"right\") {\n      return rowContainerType;\n    }\n    return null;\n  }\n  getInitialRowClasses(rowContainerType) {\n    const pinned = this.getPinnedForContainer(rowContainerType);\n    const fullWidthRow = this.isFullWidth();\n    const { rowNode, beans } = this;\n    const classes = [];\n    classes.push(\"ag-row\");\n    classes.push(this.rowFocused ? \"ag-row-focus\" : \"ag-row-no-focus\");\n    if (this.fadeInAnimation[rowContainerType]) {\n      classes.push(\"ag-opacity-zero\");\n    }\n    classes.push(rowNode.rowIndex % 2 === 0 ? \"ag-row-even\" : \"ag-row-odd\");\n    if (rowNode.isRowPinned()) {\n      classes.push(\"ag-row-pinned\");\n      if (beans.pinnedRowModel?.isManual()) {\n        classes.push(\"ag-row-pinned-manual\");\n      }\n    }\n    if (!rowNode.isRowPinned() && rowNode.pinnedSibling) {\n      classes.push(\"ag-row-pinned-source\");\n    }\n    if (rowNode.isSelected()) {\n      classes.push(\"ag-row-selected\");\n    }\n    if (rowNode.footer) {\n      classes.push(\"ag-row-footer\");\n    }\n    classes.push(\"ag-row-level-\" + this.rowLevel);\n    if (rowNode.stub) {\n      classes.push(\"ag-row-loading\");\n    }\n    if (fullWidthRow) {\n      classes.push(\"ag-full-width-row\");\n    }\n    beans.expansionSvc?.addExpandedCss(classes, rowNode);\n    if (rowNode.dragging) {\n      classes.push(\"ag-row-dragging\");\n    }\n    const { rowStyleSvc } = beans;\n    if (rowStyleSvc) {\n      rowStyleSvc.processClassesFromGridOptions(classes, rowNode);\n      rowStyleSvc.preProcessRowClassRules(classes, rowNode);\n    }\n    classes.push(this.printLayout ? \"ag-row-position-relative\" : \"ag-row-position-absolute\");\n    if (this.isFirstRowOnPage()) {\n      classes.push(\"ag-row-first\");\n    }\n    if (this.isLastRowOnPage()) {\n      classes.push(\"ag-row-last\");\n    }\n    if (fullWidthRow) {\n      if (pinned === \"left\") {\n        classes.push(\"ag-cell-last-left-pinned\");\n      }\n      if (pinned === \"right\") {\n        classes.push(\"ag-cell-first-right-pinned\");\n      }\n    }\n    return classes;\n  }\n  processStylesFromGridOptions() {\n    return this.beans.rowStyleSvc?.processStylesFromGridOptions(this.rowNode) ?? this.emptyStyle;\n  }\n  onRowSelected(gui) {\n    this.beans.selectionSvc?.onRowCtrlSelected(\n      this,\n      (gui2) => {\n        if (gui2 === this.centerGui || gui2 === this.fullWidthGui) {\n          this.announceDescription();\n        }\n      },\n      gui\n    );\n  }\n  announceDescription() {\n    this.beans.selectionSvc?.announceAriaRowSelection(this.rowNode);\n  }\n  addHoverFunctionality(eGui) {\n    if (!this.active) {\n      return;\n    }\n    const { element, compBean } = eGui;\n    const { rowNode, beans, gos } = this;\n    compBean.addManagedListeners(element, {\n      mouseenter: () => rowNode.dispatchRowEvent(\"mouseEnter\"),\n      mouseleave: () => rowNode.dispatchRowEvent(\"mouseLeave\")\n    });\n    compBean.addManagedListeners(rowNode, {\n      mouseEnter: () => {\n        if (!beans.dragSvc?.dragging && !gos.get(\"suppressRowHoverHighlight\")) {\n          element.classList.add(\"ag-row-hover\");\n          rowNode.setHovered(true);\n        }\n      },\n      mouseLeave: () => {\n        this.resetHoveredStatus(element);\n      }\n    });\n  }\n  resetHoveredStatus(el) {\n    const elements = el ? [el] : this.allRowGuis.map((gui) => gui.element);\n    for (const element of elements) {\n      element.classList.remove(\"ag-row-hover\");\n    }\n    this.rowNode.setHovered(false);\n  }\n  // for animation, we don't want to animate entry or exit to a very far away pixel,\n  // otherwise the row would move so fast, it would appear to disappear. so this method\n  // moves the row closer to the viewport if it is far away, so the row slide in / out\n  // at a speed the user can see.\n  roundRowTopToBounds(rowTop) {\n    const range = this.beans.ctrlsSvc.getScrollFeature().getApproximateVScollPosition();\n    const minPixel = this.applyPaginationOffset(range.top, true) - 100;\n    const maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n    return Math.min(Math.max(minPixel, rowTop), maxPixel);\n  }\n  forEachGui(gui, callback) {\n    if (gui) {\n      callback(gui);\n    } else {\n      this.allRowGuis.forEach(callback);\n    }\n  }\n  isRowRendered() {\n    return this.allRowGuis.length > 0;\n  }\n  onRowHeightChanged(gui) {\n    if (this.rowNode.rowHeight == null) {\n      return;\n    }\n    const rowHeight = this.rowNode.rowHeight;\n    const defaultRowHeight = this.beans.environment.getDefaultRowHeight();\n    const isHeightFromFunc = _isGetRowHeightFunction(this.gos);\n    const heightFromFunc = isHeightFromFunc ? _getRowHeightForNode(this.beans, this.rowNode).height : void 0;\n    const lineHeight = heightFromFunc ? `${Math.min(defaultRowHeight, heightFromFunc) - 2}px` : void 0;\n    this.forEachGui(gui, (gui2) => {\n      gui2.element.style.height = `${rowHeight}px`;\n      if (lineHeight) {\n        gui2.element.style.setProperty(\"--ag-line-height\", lineHeight);\n      }\n    });\n  }\n  // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n  destroyFirstPass(suppressAnimation = false) {\n    this.active = false;\n    const { rowNode } = this;\n    if (!suppressAnimation && _isAnimateRows(this.gos) && !rowNode.sticky) {\n      const rowStillVisibleJustNotInViewport = rowNode.rowTop != null;\n      if (rowStillVisibleJustNotInViewport) {\n        const rowTop = this.roundRowTopToBounds(rowNode.rowTop);\n        this.setRowTop(rowTop);\n      } else {\n        this.allRowGuis.forEach((gui) => gui.rowComp.toggleCss(\"ag-opacity-zero\", true));\n      }\n    }\n    if (this.fullWidthGui?.element.contains(_getActiveDomElement(this.beans))) {\n      this.beans.focusSvc.attemptToRecoverFocus();\n    }\n    rowNode.setHovered(false);\n    const event = this.createRowEvent(\"virtualRowRemoved\");\n    this.dispatchLocalEvent(event);\n    this.beans.eventSvc.dispatchEvent(event);\n    super.destroy();\n  }\n  destroySecondPass() {\n    this.allRowGuis.length = 0;\n    this.beans.editSvc?.stopRowEditing(this);\n    const destroyCellCtrls = (ctrls) => {\n      ctrls.list.forEach((c) => c.destroy());\n      return { list: [], map: {} };\n    };\n    this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);\n    this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);\n    this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);\n  }\n  setFocusedClasses(gui) {\n    this.forEachGui(gui, (gui2) => {\n      gui2.rowComp.toggleCss(\"ag-row-focus\", this.rowFocused);\n      gui2.rowComp.toggleCss(\"ag-row-no-focus\", !this.rowFocused);\n    });\n  }\n  onCellFocusChanged() {\n    const { focusSvc, editSvc } = this.beans;\n    const rowFocused = focusSvc.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n    if (rowFocused !== this.rowFocused) {\n      this.rowFocused = rowFocused;\n      this.setFocusedClasses();\n    }\n    if (!rowFocused && this.editing) {\n      editSvc?.stopRowEditing(this, false);\n    }\n  }\n  onPaginationChanged() {\n    const currentPage = this.beans.pagination?.getCurrentPage() ?? 0;\n    if (this.paginationPage !== currentPage) {\n      this.paginationPage = currentPage;\n      this.onTopChanged();\n    }\n    this.refreshFirstAndLastRowStyles();\n  }\n  onTopChanged() {\n    this.setRowTop(this.rowNode.rowTop);\n  }\n  onPaginationPixelOffsetChanged() {\n    this.onTopChanged();\n  }\n  // applies pagination offset, eg if on second page, and page height is 500px, then removes\n  // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n  // reverse will take the offset away rather than add.\n  applyPaginationOffset(topPx, reverse = false) {\n    if (this.rowNode.isRowPinned() || this.rowNode.sticky) {\n      return topPx;\n    }\n    const pixelOffset = this.beans.pageBounds.getPixelOffset();\n    const multiplier = reverse ? 1 : -1;\n    return topPx + pixelOffset * multiplier;\n  }\n  setRowTop(pixels) {\n    if (this.printLayout) {\n      return;\n    }\n    if (_exists(pixels)) {\n      const afterPaginationPixels = this.applyPaginationOffset(pixels);\n      const skipScaling = this.rowNode.isRowPinned() || this.rowNode.sticky;\n      const afterScalingPixels = skipScaling ? afterPaginationPixels : this.beans.rowContainerHeight.getRealPixelPosition(afterPaginationPixels);\n      const topPx = `${afterScalingPixels}px`;\n      this.setRowTopStyle(topPx);\n    }\n  }\n  // the top needs to be set into the DOM element when the element is created, not updated afterwards.\n  // otherwise the transition would not work, as it would be transitioning from zero (the unset value).\n  // for example, suppose a row that is outside the viewport, then user does a filter to remove other rows\n  // and this row now appears in the viewport, and the row moves up (ie it was under the viewport and not rendered,\n  // but now is in the viewport) then a new RowComp is created, however it should have it's position initialised\n  // to below the viewport, so the row will appear to animate up. if we didn't set the initial position at creation\n  // time, the row would animate down (ie from position zero).\n  getInitialRowTop(rowContainerType) {\n    return this.suppressRowTransform ? this.getInitialRowTopShared(rowContainerType) : void 0;\n  }\n  getInitialTransform(rowContainerType) {\n    return this.suppressRowTransform ? void 0 : `translateY(${this.getInitialRowTopShared(rowContainerType)})`;\n  }\n  getInitialRowTopShared(rowContainerType) {\n    if (this.printLayout) {\n      return \"\";\n    }\n    const rowNode = this.rowNode;\n    let rowTop;\n    if (rowNode.sticky) {\n      rowTop = rowNode.stickyRowTop;\n    } else {\n      const pixels = this.slideInAnimation[rowContainerType] ? this.roundRowTopToBounds(rowNode.oldRowTop) : rowNode.rowTop;\n      const afterPaginationPixels = this.applyPaginationOffset(pixels);\n      rowTop = rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeight.getRealPixelPosition(afterPaginationPixels);\n    }\n    return rowTop + \"px\";\n  }\n  setRowTopStyle(topPx) {\n    this.allRowGuis.forEach(\n      (gui) => this.suppressRowTransform ? gui.rowComp.setTop(topPx) : gui.rowComp.setTransform(`translateY(${topPx})`)\n    );\n  }\n  getCellCtrl(column, skipColSpanSearch = false) {\n    let res = null;\n    this.getAllCellCtrls().forEach((cellCtrl) => {\n      if (cellCtrl.column == column) {\n        res = cellCtrl;\n      }\n    });\n    if (res != null || skipColSpanSearch) {\n      return res;\n    }\n    this.getAllCellCtrls().forEach((cellCtrl) => {\n      if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {\n        res = cellCtrl;\n      }\n    });\n    return res;\n  }\n  onRowIndexChanged() {\n    if (this.rowNode.rowIndex != null) {\n      this.onCellFocusChanged();\n      this.updateRowIndexes();\n      this.postProcessCss();\n    }\n  }\n  updateRowIndexes(gui) {\n    const rowIndexStr = this.rowNode.getRowIndexString();\n    if (rowIndexStr === null) {\n      return;\n    }\n    const headerRowCount = (this.beans.ctrlsSvc.getHeaderRowContainerCtrl()?.getRowCount() ?? 0) + (this.beans.filterManager?.getHeaderRowCount() ?? 0);\n    const rowIsEven = this.rowNode.rowIndex % 2 === 0;\n    const ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;\n    this.forEachGui(gui, (c) => {\n      c.rowComp.setRowIndex(rowIndexStr);\n      c.rowComp.toggleCss(\"ag-row-even\", rowIsEven);\n      c.rowComp.toggleCss(\"ag-row-odd\", !rowIsEven);\n      _setAriaRowIndex(c.element, ariaRowIndex);\n    });\n  }\n};\n\n// packages/ag-grid-community/src/utils/keyboard.ts\nfunction _isEventFromPrintableCharacter(event) {\n  if (event.altKey || event.ctrlKey || event.metaKey) {\n    return false;\n  }\n  const printableCharacter = event.key?.length === 1;\n  return printableCharacter;\n}\nfunction _isUserSuppressingKeyboardEvent(gos, keyboardEvent, rowNode, column, editing) {\n  const colDefFunc = column ? column.getColDef().suppressKeyboardEvent : void 0;\n  if (!colDefFunc) {\n    return false;\n  }\n  const params = _addGridCommonParams(gos, {\n    event: keyboardEvent,\n    editing,\n    column,\n    node: rowNode,\n    data: rowNode.data,\n    colDef: column.getColDef()\n  });\n  if (colDefFunc) {\n    const colDefFuncResult = colDefFunc(params);\n    if (colDefFuncResult) {\n      return true;\n    }\n  }\n  return false;\n}\n\n// packages/ag-grid-community/src/utils/selection.ts\nfunction _selectAllCells(beans) {\n  const { pinnedRowModel, rowModel } = beans;\n  const [isEmptyPinnedTop, isEmptyPinnedBottom] = [\n    pinnedRowModel?.isEmpty(\"top\") ?? true,\n    pinnedRowModel?.isEmpty(\"bottom\") ?? true\n  ];\n  const floatingStart = isEmptyPinnedTop ? null : \"top\";\n  let floatingEnd;\n  let rowEnd;\n  if (isEmptyPinnedBottom) {\n    floatingEnd = null;\n    rowEnd = rowModel.getRowCount() - 1;\n  } else {\n    floatingEnd = \"bottom\";\n    rowEnd = pinnedRowModel?.getPinnedBottomRowCount() ?? 0 - 1;\n  }\n  const { visibleCols, rangeSvc } = beans;\n  const allDisplayedColumns = visibleCols.allCols;\n  if (!rangeSvc || !allDisplayedColumns?.length) {\n    return;\n  }\n  rangeSvc.setCellRange({\n    rowStartIndex: 0,\n    rowStartPinned: floatingStart,\n    rowEndIndex: rowEnd,\n    rowEndPinned: floatingEnd\n  });\n}\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/rowContainerEventsFeature.ts\nvar A_KEYCODE = 65;\nvar C_KEYCODE = 67;\nvar V_KEYCODE = 86;\nvar D_KEYCODE = 68;\nvar Z_KEYCODE = 90;\nvar Y_KEYCODE = 89;\nfunction _normaliseQwertyAzerty(keyboardEvent) {\n  const { keyCode } = keyboardEvent;\n  let code;\n  switch (keyCode) {\n    case A_KEYCODE:\n      code = KeyCode.A;\n      break;\n    case C_KEYCODE:\n      code = KeyCode.C;\n      break;\n    case V_KEYCODE:\n      code = KeyCode.V;\n      break;\n    case D_KEYCODE:\n      code = KeyCode.D;\n      break;\n    case Z_KEYCODE:\n      code = KeyCode.Z;\n      break;\n    case Y_KEYCODE:\n      code = KeyCode.Y;\n      break;\n    default:\n      code = keyboardEvent.code;\n  }\n  return code;\n}\nvar RowContainerEventsFeature = class extends BeanStub {\n  constructor(element) {\n    super();\n    this.element = element;\n  }\n  postConstruct() {\n    this.addKeyboardListeners();\n    this.addMouseListeners();\n    this.beans.touchSvc?.mockRowContextMenu(this);\n  }\n  addKeyboardListeners() {\n    const eventName = \"keydown\";\n    const listener = this.processKeyboardEvent.bind(this, eventName);\n    this.addManagedElementListeners(this.element, { [eventName]: listener });\n  }\n  addMouseListeners() {\n    const mouseDownEvent = _isEventSupported(\"touchstart\") ? \"touchstart\" : \"mousedown\";\n    const eventNames = [\"dblclick\", \"contextmenu\", \"mouseover\", \"mouseout\", \"click\", mouseDownEvent];\n    eventNames.forEach((eventName) => {\n      const listener = this.processMouseEvent.bind(this, eventName);\n      this.addManagedElementListeners(this.element, { [eventName]: listener });\n    });\n  }\n  processMouseEvent(eventName, mouseEvent) {\n    if (!_isEventFromThisGrid(this.gos, mouseEvent) || _isStopPropagationForAgGrid(mouseEvent)) {\n      return;\n    }\n    const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(mouseEvent.target);\n    if (eventName === \"contextmenu\") {\n      if (cellCtrl?.column) {\n        cellCtrl.dispatchCellContextMenuEvent(mouseEvent);\n      }\n      this.beans.contextMenuSvc?.handleContextMenuMouseEvent(mouseEvent, void 0, rowCtrl, cellCtrl);\n    } else {\n      if (cellCtrl) {\n        cellCtrl.onMouseEvent(eventName, mouseEvent);\n      }\n      if (rowCtrl) {\n        rowCtrl.onMouseEvent(eventName, mouseEvent);\n      }\n    }\n  }\n  getControlsForEventTarget(target) {\n    const { gos } = this;\n    return {\n      cellCtrl: _getCellCtrlForEventTarget(gos, target),\n      rowCtrl: _getCtrlForEventTarget(gos, target, DOM_DATA_KEY_ROW_CTRL)\n    };\n  }\n  processKeyboardEvent(eventName, keyboardEvent) {\n    const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(keyboardEvent.target);\n    if (keyboardEvent.defaultPrevented) {\n      return;\n    }\n    if (cellCtrl) {\n      this.processCellKeyboardEvent(cellCtrl, eventName, keyboardEvent);\n    } else if (rowCtrl && rowCtrl.isFullWidth()) {\n      this.processFullWidthRowKeyboardEvent(rowCtrl, eventName, keyboardEvent);\n    }\n  }\n  processCellKeyboardEvent(cellCtrl, eventName, keyboardEvent) {\n    const { rowNode, column, editing } = cellCtrl;\n    const gridProcessingAllowed = !_isUserSuppressingKeyboardEvent(\n      this.gos,\n      keyboardEvent,\n      rowNode,\n      column,\n      editing\n    );\n    if (gridProcessingAllowed) {\n      if (eventName === \"keydown\") {\n        const wasScrollKey = !editing && this.beans.navigation?.handlePageScrollingKey(keyboardEvent);\n        if (!wasScrollKey) {\n          cellCtrl.onKeyDown(keyboardEvent);\n        }\n        this.doGridOperations(keyboardEvent, cellCtrl.editing);\n        if (_isEventFromPrintableCharacter(keyboardEvent)) {\n          cellCtrl.processCharacter(keyboardEvent);\n        }\n      }\n    }\n    if (eventName === \"keydown\") {\n      this.eventSvc.dispatchEvent(cellCtrl.createEvent(keyboardEvent, \"cellKeyDown\"));\n    }\n  }\n  processFullWidthRowKeyboardEvent(rowCtrl, eventName, keyboardEvent) {\n    const { rowNode } = rowCtrl;\n    const { focusSvc, navigation } = this.beans;\n    const focusedCell = focusSvc.getFocusedCell();\n    const column = focusedCell && focusedCell.column;\n    const gridProcessingAllowed = !_isUserSuppressingKeyboardEvent(this.gos, keyboardEvent, rowNode, column, false);\n    if (gridProcessingAllowed) {\n      const key = keyboardEvent.key;\n      if (eventName === \"keydown\") {\n        switch (key) {\n          case KeyCode.PAGE_HOME:\n          case KeyCode.PAGE_END:\n          case KeyCode.PAGE_UP:\n          case KeyCode.PAGE_DOWN:\n            navigation?.handlePageScrollingKey(keyboardEvent, true);\n            break;\n          case KeyCode.LEFT:\n          case KeyCode.RIGHT:\n            if (!this.gos.get(\"embedFullWidthRows\")) {\n              break;\n            }\n          case KeyCode.UP:\n          case KeyCode.DOWN:\n            rowCtrl.onKeyboardNavigate(keyboardEvent);\n            break;\n          case KeyCode.TAB:\n            rowCtrl.onTabKeyDown(keyboardEvent);\n            break;\n          default:\n        }\n      }\n    }\n    if (eventName === \"keydown\") {\n      this.eventSvc.dispatchEvent(rowCtrl.createRowEvent(\"cellKeyDown\", keyboardEvent));\n    }\n  }\n  doGridOperations(keyboardEvent, editing) {\n    if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n      return;\n    }\n    if (editing) {\n      return;\n    }\n    if (!_isEventFromThisGrid(this.gos, keyboardEvent)) {\n      return;\n    }\n    const keyCode = _normaliseQwertyAzerty(keyboardEvent);\n    const { clipboardSvc, undoRedo } = this.beans;\n    if (keyCode === KeyCode.A) {\n      return this.onCtrlAndA(keyboardEvent);\n    }\n    if (keyCode === KeyCode.C) {\n      return this.onCtrlAndC(clipboardSvc, keyboardEvent);\n    }\n    if (keyCode === KeyCode.D) {\n      return this.onCtrlAndD(clipboardSvc, keyboardEvent);\n    }\n    if (keyCode === KeyCode.V) {\n      return this.onCtrlAndV(clipboardSvc, keyboardEvent);\n    }\n    if (keyCode === KeyCode.X) {\n      return this.onCtrlAndX(clipboardSvc, keyboardEvent);\n    }\n    if (keyCode === KeyCode.Y) {\n      return this.onCtrlAndY(undoRedo);\n    }\n    if (keyCode === KeyCode.Z) {\n      return this.onCtrlAndZ(undoRedo, keyboardEvent);\n    }\n  }\n  onCtrlAndA(event) {\n    const {\n      beans: { rowModel, rangeSvc, selectionSvc },\n      gos\n    } = this;\n    if (rangeSvc && _isCellSelectionEnabled(gos) && rowModel.isRowsToRender()) {\n      _selectAllCells(this.beans);\n    } else if (selectionSvc) {\n      selectionSvc?.selectAllRowNodes({ source: \"keyboardSelectAll\", selectAll: _getSelectAll(gos) });\n    }\n    event.preventDefault();\n  }\n  onCtrlAndC(clipboardSvc, event) {\n    if (!clipboardSvc || this.gos.get(\"enableCellTextSelection\")) {\n      return;\n    }\n    const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n    if (cellCtrl?.editing || rowCtrl?.editing) {\n      return;\n    }\n    event.preventDefault();\n    clipboardSvc.copyToClipboard();\n  }\n  onCtrlAndX(clipboardSvc, event) {\n    if (!clipboardSvc || this.gos.get(\"enableCellTextSelection\") || this.gos.get(\"suppressCutToClipboard\")) {\n      return;\n    }\n    const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n    if (cellCtrl?.editing || rowCtrl?.editing) {\n      return;\n    }\n    event.preventDefault();\n    clipboardSvc.cutToClipboard(void 0, \"ui\");\n  }\n  onCtrlAndV(clipboardSvc, event) {\n    const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n    if (cellCtrl?.editing || rowCtrl?.editing) {\n      return;\n    }\n    if (clipboardSvc && !this.gos.get(\"suppressClipboardPaste\")) {\n      clipboardSvc.pasteFromClipboard();\n    }\n  }\n  onCtrlAndD(clipboardSvc, event) {\n    if (clipboardSvc && !this.gos.get(\"suppressClipboardPaste\")) {\n      clipboardSvc.copyRangeDown();\n    }\n    event.preventDefault();\n  }\n  onCtrlAndZ(undoRedo, event) {\n    if (!this.gos.get(\"undoRedoCellEditing\") || !undoRedo) {\n      return;\n    }\n    event.preventDefault();\n    if (event.shiftKey) {\n      undoRedo.redo(\"ui\");\n    } else {\n      undoRedo.undo(\"ui\");\n    }\n  }\n  onCtrlAndY(undoRedo) {\n    undoRedo?.redo(\"ui\");\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/setHeightFeature.ts\nvar SetHeightFeature = class extends BeanStub {\n  constructor(eContainer, eViewport) {\n    super();\n    this.eContainer = eContainer;\n    this.eViewport = eViewport;\n  }\n  postConstruct() {\n    this.addManagedEventListeners({\n      rowContainerHeightChanged: this.onHeightChanged.bind(this, this.beans.rowContainerHeight)\n    });\n  }\n  onHeightChanged(maxDivHeightScaler) {\n    const height = maxDivHeightScaler.uiContainerHeight;\n    const heightString = height != null ? `${height}px` : ``;\n    this.eContainer.style.height = heightString;\n    if (this.eViewport) {\n      this.eViewport.style.height = heightString;\n    }\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/rowContainerCtrl.ts\nvar getTopRowCtrls = (r) => r.topRowCtrls;\nvar getStickyTopRowCtrls = (r) => r.getStickyTopRowCtrls();\nvar getStickyBottomRowCtrls = (r) => r.getStickyBottomRowCtrls();\nvar getBottomRowCtrls = (r) => r.bottomRowCtrls;\nvar getCentreRowCtrls = (r) => r.allRowCtrls;\nvar getSpannedTopRowCtrls = (r) => r.getCtrls(\"top\");\nvar getSpannedCenterRowCtrls = (r) => r.getCtrls(\"center\");\nvar getSpannedBottomRowCtrls = (r) => r.getCtrls(\"bottom\");\nvar ContainerCssClasses = {\n  center: {\n    type: \"center\",\n    name: \"center-cols\",\n    getRowCtrls: getCentreRowCtrls,\n    getSpannedRowCtrls: getSpannedCenterRowCtrls\n  },\n  left: {\n    type: \"left\",\n    name: \"pinned-left-cols\",\n    pinnedType: \"left\",\n    getRowCtrls: getCentreRowCtrls,\n    getSpannedRowCtrls: getSpannedCenterRowCtrls\n  },\n  right: {\n    type: \"right\",\n    name: \"pinned-right-cols\",\n    pinnedType: \"right\",\n    getRowCtrls: getCentreRowCtrls,\n    getSpannedRowCtrls: getSpannedCenterRowCtrls\n  },\n  fullWidth: {\n    type: \"fullWidth\",\n    name: \"full-width\",\n    fullWidth: true,\n    getRowCtrls: getCentreRowCtrls\n  },\n  topCenter: {\n    type: \"center\",\n    name: \"floating-top\",\n    getRowCtrls: getTopRowCtrls,\n    getSpannedRowCtrls: getSpannedTopRowCtrls\n  },\n  topLeft: {\n    type: \"left\",\n    name: \"pinned-left-floating\",\n    container: \"ag-pinned-left-floating-top\",\n    pinnedType: \"left\",\n    getRowCtrls: getTopRowCtrls,\n    getSpannedRowCtrls: getSpannedTopRowCtrls\n  },\n  topRight: {\n    type: \"right\",\n    name: \"pinned-right-floating\",\n    container: \"ag-pinned-right-floating-top\",\n    pinnedType: \"right\",\n    getRowCtrls: getTopRowCtrls,\n    getSpannedRowCtrls: getSpannedTopRowCtrls\n  },\n  topFullWidth: {\n    type: \"fullWidth\",\n    name: \"floating-top-full-width\",\n    fullWidth: true,\n    getRowCtrls: getTopRowCtrls\n  },\n  stickyTopCenter: {\n    type: \"center\",\n    name: \"sticky-top\",\n    getRowCtrls: getStickyTopRowCtrls\n  },\n  stickyTopLeft: {\n    type: \"left\",\n    name: \"pinned-left-sticky-top\",\n    container: \"ag-pinned-left-sticky-top\",\n    pinnedType: \"left\",\n    getRowCtrls: getStickyTopRowCtrls\n  },\n  stickyTopRight: {\n    type: \"right\",\n    name: \"pinned-right-sticky-top\",\n    container: \"ag-pinned-right-sticky-top\",\n    pinnedType: \"right\",\n    getRowCtrls: getStickyTopRowCtrls\n  },\n  stickyTopFullWidth: {\n    type: \"fullWidth\",\n    name: \"sticky-top-full-width\",\n    fullWidth: true,\n    getRowCtrls: getStickyTopRowCtrls\n  },\n  stickyBottomCenter: {\n    type: \"center\",\n    name: \"sticky-bottom\",\n    getRowCtrls: getStickyBottomRowCtrls\n  },\n  stickyBottomLeft: {\n    type: \"left\",\n    name: \"pinned-left-sticky-bottom\",\n    container: \"ag-pinned-left-sticky-bottom\",\n    pinnedType: \"left\",\n    getRowCtrls: getStickyBottomRowCtrls\n  },\n  stickyBottomRight: {\n    type: \"right\",\n    name: \"pinned-right-sticky-bottom\",\n    container: \"ag-pinned-right-sticky-bottom\",\n    pinnedType: \"right\",\n    getRowCtrls: getStickyBottomRowCtrls\n  },\n  stickyBottomFullWidth: {\n    type: \"fullWidth\",\n    name: \"sticky-bottom-full-width\",\n    fullWidth: true,\n    getRowCtrls: getStickyBottomRowCtrls\n  },\n  bottomCenter: {\n    type: \"center\",\n    name: \"floating-bottom\",\n    getRowCtrls: getBottomRowCtrls,\n    getSpannedRowCtrls: getSpannedBottomRowCtrls\n  },\n  bottomLeft: {\n    type: \"left\",\n    name: \"pinned-left-floating-bottom\",\n    container: \"ag-pinned-left-floating-bottom\",\n    pinnedType: \"left\",\n    getRowCtrls: getBottomRowCtrls,\n    getSpannedRowCtrls: getSpannedBottomRowCtrls\n  },\n  bottomRight: {\n    type: \"right\",\n    name: \"pinned-right-floating-bottom\",\n    container: \"ag-pinned-right-floating-bottom\",\n    pinnedType: \"right\",\n    getRowCtrls: getBottomRowCtrls,\n    getSpannedRowCtrls: getSpannedBottomRowCtrls\n  },\n  bottomFullWidth: {\n    type: \"fullWidth\",\n    name: \"floating-bottom-full-width\",\n    fullWidth: true,\n    getRowCtrls: getBottomRowCtrls\n  }\n};\nfunction _getRowViewportClass(name) {\n  const options = _getRowContainerOptions(name);\n  return `ag-${options.name}-viewport`;\n}\nfunction _getRowContainerClass(name) {\n  const options = _getRowContainerOptions(name);\n  return options.container ?? `ag-${options.name}-container`;\n}\nfunction _getRowSpanContainerClass(name) {\n  const options = _getRowContainerOptions(name);\n  return `ag-${options.name}-spanned-cells-container`;\n}\nfunction _getRowContainerOptions(name) {\n  return ContainerCssClasses[name];\n}\nvar allTopNoFW = [\"topCenter\", \"topLeft\", \"topRight\"];\nvar allBottomNoFW = [\"bottomCenter\", \"bottomLeft\", \"bottomRight\"];\nvar allMiddleNoFW = [\"center\", \"left\", \"right\"];\nvar allMiddle = [\"center\", \"left\", \"right\", \"fullWidth\"];\nvar allCenter = [\"stickyTopCenter\", \"stickyBottomCenter\", \"center\", \"topCenter\", \"bottomCenter\"];\nvar allLeft = [\"left\", \"bottomLeft\", \"topLeft\", \"stickyTopLeft\", \"stickyBottomLeft\"];\nvar allRight = [\"right\", \"bottomRight\", \"topRight\", \"stickyTopRight\", \"stickyBottomRight\"];\nvar allStickyTopNoFW = [\"stickyTopCenter\", \"stickyTopLeft\", \"stickyTopRight\"];\nvar allStickyBottomNoFW = [\"stickyBottomCenter\", \"stickyBottomLeft\", \"stickyBottomRight\"];\nvar allStickyContainers = [\n  ...allStickyTopNoFW,\n  \"stickyTopFullWidth\",\n  ...allStickyBottomNoFW,\n  \"stickyBottomFullWidth\"\n];\nvar allNoFW = [\n  ...allTopNoFW,\n  ...allBottomNoFW,\n  ...allMiddleNoFW,\n  ...allStickyTopNoFW,\n  ...allStickyBottomNoFW\n];\nvar RowContainerCtrl = class extends BeanStub {\n  constructor(name) {\n    super();\n    this.name = name;\n    this.visible = true;\n    // Maintaining a constant reference enables optimization in React.\n    this.EMPTY_CTRLS = [];\n    this.options = _getRowContainerOptions(name);\n  }\n  postConstruct() {\n    this.enableRtl = this.gos.get(\"enableRtl\");\n    this.forContainers([\"center\"], () => {\n      this.viewportSizeFeature = this.createManagedBean(new ViewportSizeFeature(this));\n      this.addManagedEventListeners({\n        stickyTopOffsetChanged: this.onStickyTopOffsetChanged.bind(this)\n      });\n    });\n  }\n  onStickyTopOffsetChanged(event) {\n    this.comp.setOffsetTop(`${event.offset}px`);\n  }\n  registerWithCtrlsService() {\n    if (this.options.fullWidth)\n      return;\n    this.beans.ctrlsSvc.register(this.name, this);\n  }\n  forContainers(names, callback) {\n    if (names.indexOf(this.name) >= 0) {\n      callback();\n    }\n  }\n  setComp(view, eContainer, eSpannedContainer, eViewport) {\n    this.comp = view;\n    this.eContainer = eContainer;\n    this.eSpannedContainer = eSpannedContainer;\n    this.eViewport = eViewport;\n    this.createManagedBean(new RowContainerEventsFeature(this.eViewport ?? this.eContainer));\n    this.addPreventScrollWhileDragging();\n    this.listenOnDomOrder();\n    const { pinnedCols, rangeSvc } = this.beans;\n    const pinnedWidthChanged = () => this.onPinnedWidthChanged();\n    this.forContainers(allLeft, () => {\n      this.pinnedWidthFeature = this.createOptionalManagedBean(\n        pinnedCols?.createPinnedWidthFeature(true, this.eContainer, this.eSpannedContainer)\n      );\n      this.addManagedEventListeners({ leftPinnedWidthChanged: pinnedWidthChanged });\n    });\n    this.forContainers(allRight, () => {\n      this.pinnedWidthFeature = this.createOptionalManagedBean(\n        pinnedCols?.createPinnedWidthFeature(false, this.eContainer, this.eSpannedContainer)\n      );\n      this.addManagedEventListeners({ rightPinnedWidthChanged: pinnedWidthChanged });\n    });\n    this.forContainers(\n      allMiddle,\n      () => this.createManagedBean(\n        new SetHeightFeature(this.eContainer, this.name === \"center\" ? eViewport : void 0)\n      )\n    );\n    if (rangeSvc) {\n      this.forContainers(\n        allNoFW,\n        () => this.createManagedBean(rangeSvc.createDragListenerFeature(this.eContainer))\n      );\n    }\n    this.forContainers(\n      allCenter,\n      () => this.createManagedBean(new CenterWidthFeature((width) => this.comp.setContainerWidth(`${width}px`)))\n    );\n    this.visible = this.isContainerVisible();\n    this.addListeners();\n    this.registerWithCtrlsService();\n  }\n  onScrollCallback(fn) {\n    this.addManagedElementListeners(this.eViewport, { scroll: fn });\n  }\n  addListeners() {\n    const { spannedRowRenderer, gos } = this.beans;\n    const onDisplayedColumnsChanged = this.onDisplayedColumnsChanged.bind(this);\n    this.addManagedEventListeners({\n      displayedColumnsChanged: onDisplayedColumnsChanged,\n      displayedColumnsWidthChanged: onDisplayedColumnsChanged,\n      displayedRowsChanged: (params) => this.onDisplayedRowsChanged(params.afterScroll)\n    });\n    onDisplayedColumnsChanged();\n    this.onDisplayedRowsChanged();\n    if (spannedRowRenderer && this.options.getSpannedRowCtrls && gos.get(\"enableCellSpan\")) {\n      this.addManagedListeners(spannedRowRenderer, {\n        spannedRowsUpdated: () => {\n          const spannedCtrls = this.options.getSpannedRowCtrls(spannedRowRenderer);\n          if (!spannedCtrls) {\n            return;\n          }\n          this.comp.setSpannedRowCtrls(spannedCtrls, false);\n        }\n      });\n    }\n  }\n  listenOnDomOrder() {\n    const isStickContainer = allStickyContainers.indexOf(this.name) >= 0;\n    if (isStickContainer) {\n      this.comp.setDomOrder(true);\n      return;\n    }\n    const listener = () => {\n      const isEnsureDomOrder = this.gos.get(\"ensureDomOrder\");\n      const isPrintLayout = _isDomLayout(this.gos, \"print\");\n      this.comp.setDomOrder(isEnsureDomOrder || isPrintLayout);\n    };\n    this.addManagedPropertyListener(\"domLayout\", listener);\n    listener();\n  }\n  onDisplayedColumnsChanged() {\n    this.forContainers([\"center\"], () => this.onHorizontalViewportChanged());\n  }\n  // this methods prevents the grid views from being scrolled while the dragService is being used\n  // eg. the view should not scroll up and down while dragging rows using the rowDragComp.\n  addPreventScrollWhileDragging() {\n    const { dragSvc } = this.beans;\n    if (!dragSvc) {\n      return;\n    }\n    const preventScroll = (e) => {\n      if (dragSvc.dragging) {\n        if (e.cancelable) {\n          e.preventDefault();\n        }\n      }\n    };\n    this.eContainer.addEventListener(\"touchmove\", preventScroll, { passive: false });\n    this.addDestroyFunc(() => this.eContainer.removeEventListener(\"touchmove\", preventScroll));\n  }\n  // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n  // out the virtual columns again. gets called from following locations:\n  // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged\n  onHorizontalViewportChanged(afterScroll = false) {\n    const scrollWidth = this.getCenterWidth();\n    const scrollPosition = this.getCenterViewportScrollLeft();\n    this.beans.colViewport.setScrollPosition(scrollWidth, scrollPosition, afterScroll);\n  }\n  hasHorizontalScrollGap() {\n    return this.eContainer.clientWidth - this.eViewport.clientWidth < 0;\n  }\n  hasVerticalScrollGap() {\n    return this.eContainer.clientHeight - this.eViewport.clientHeight < 0;\n  }\n  getCenterWidth() {\n    return _getInnerWidth(this.eViewport);\n  }\n  getCenterViewportScrollLeft() {\n    return _getScrollLeft(this.eViewport, this.enableRtl);\n  }\n  registerViewportResizeListener(listener) {\n    const unsubscribeFromResize = _observeResize(this.beans, this.eViewport, listener);\n    this.addDestroyFunc(() => unsubscribeFromResize());\n  }\n  isViewportInTheDOMTree() {\n    return _isInDOM(this.eViewport);\n  }\n  getViewportScrollLeft() {\n    return _getScrollLeft(this.eViewport, this.enableRtl);\n  }\n  isHorizontalScrollShowing() {\n    const isAlwaysShowHorizontalScroll = this.gos.get(\"alwaysShowHorizontalScroll\");\n    return isAlwaysShowHorizontalScroll || _isHorizontalScrollShowing(this.eViewport);\n  }\n  setHorizontalScroll(offset) {\n    this.comp.setHorizontalScroll(offset);\n  }\n  getHScrollPosition() {\n    const res = {\n      left: this.eViewport.scrollLeft,\n      right: this.eViewport.scrollLeft + this.eViewport.offsetWidth\n    };\n    return res;\n  }\n  setCenterViewportScrollLeft(value) {\n    _setScrollLeft(this.eViewport, value, this.enableRtl);\n  }\n  isContainerVisible() {\n    const pinned = this.options.pinnedType != null;\n    return !pinned || !!this.pinnedWidthFeature && this.pinnedWidthFeature.getWidth() > 0;\n  }\n  onPinnedWidthChanged() {\n    const visible = this.isContainerVisible();\n    if (this.visible != visible) {\n      this.visible = visible;\n      this.onDisplayedRowsChanged();\n    }\n  }\n  onDisplayedRowsChanged(afterScroll = false) {\n    const rows = this.options.getRowCtrls(this.beans.rowRenderer);\n    if (!this.visible || rows.length === 0) {\n      this.comp.setRowCtrls({ rowCtrls: this.EMPTY_CTRLS });\n      return;\n    }\n    const printLayout = _isDomLayout(this.gos, \"print\");\n    const embedFullWidthRows = this.gos.get(\"embedFullWidthRows\");\n    const embedFW = embedFullWidthRows || printLayout;\n    const rowsThisContainer = rows.filter((rowCtrl) => {\n      const fullWidthRow = rowCtrl.isFullWidth();\n      const match = this.options.fullWidth ? !embedFW && fullWidthRow : embedFW || !fullWidthRow;\n      return match;\n    });\n    this.comp.setRowCtrls({ rowCtrls: rowsThisContainer, useFlushSync: afterScroll });\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/gridBodyCtrl.ts\nvar CSS_CLASS_FORCE_VERTICAL_SCROLL = \"ag-force-vertical-scroll\";\nvar CSS_CLASS_CELL_SELECTABLE = \"ag-selectable\";\nvar CSS_CLASS_COLUMN_MOVING = \"ag-column-moving\";\nvar GridBodyCtrl = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.stickyTopHeight = 0;\n    this.stickyBottomHeight = 0;\n  }\n  wireBeans(beans) {\n    this.ctrlsSvc = beans.ctrlsSvc;\n    this.colModel = beans.colModel;\n    this.scrollVisibleSvc = beans.scrollVisibleSvc;\n    this.pinnedRowModel = beans.pinnedRowModel;\n    this.filterManager = beans.filterManager;\n    this.rowGroupColsSvc = beans.rowGroupColsSvc;\n  }\n  setComp(comp, eGridBody, eBodyViewport, eTop, eBottom, eStickyTop, eStickyBottom) {\n    this.comp = comp;\n    this.eGridBody = eGridBody;\n    this.eBodyViewport = eBodyViewport;\n    this.eTop = eTop;\n    this.eBottom = eBottom;\n    this.eStickyTop = eStickyTop;\n    this.eStickyBottom = eStickyBottom;\n    this.eCenterColsViewport = eBodyViewport.querySelector(`.${_getRowViewportClass(\"center\")}`);\n    this.eFullWidthContainer = eBodyViewport.querySelector(`.${_getRowContainerClass(\"fullWidth\")}`);\n    this.eStickyTopFullWidthContainer = eStickyTop.querySelector(\n      `.${_getRowContainerClass(\"stickyTopFullWidth\")}`\n    );\n    this.eStickyBottomFullWidthContainer = eStickyBottom.querySelector(\n      `.${_getRowContainerClass(\"stickyBottomFullWidth\")}`\n    );\n    this.setCellTextSelection(this.gos.get(\"enableCellTextSelection\"));\n    this.addManagedPropertyListener(\n      \"enableCellTextSelection\",\n      (props) => this.setCellTextSelection(props.currentValue)\n    );\n    this.createManagedBean(new LayoutFeature(this.comp));\n    this.scrollFeature = this.createManagedBean(new GridBodyScrollFeature(eBodyViewport));\n    this.beans.rowDragSvc?.setupRowDrag(eBodyViewport, this);\n    this.setupRowAnimationCssClass();\n    this.addEventListeners();\n    this.addFocusListeners([eTop, eBodyViewport, eBottom, eStickyTop, eStickyBottom]);\n    this.setGridRootRole();\n    this.onGridColumnsChanged();\n    this.addBodyViewportListener();\n    this.setFloatingHeights();\n    this.disableBrowserDragging();\n    this.addStopEditingWhenGridLosesFocus();\n    this.updateScrollingClasses();\n    this.filterManager?.setupAdvFilterHeaderComp(eTop);\n    this.ctrlsSvc.register(\"gridBodyCtrl\", this);\n  }\n  addEventListeners() {\n    const setFloatingHeights = this.setFloatingHeights.bind(this);\n    const setGridRootRole = this.setGridRootRole.bind(this);\n    const toggleRowResizeStyle = this.toggleRowResizeStyles.bind(this);\n    this.addManagedEventListeners({\n      gridColumnsChanged: this.onGridColumnsChanged.bind(this),\n      scrollVisibilityChanged: this.onScrollVisibilityChanged.bind(this),\n      scrollGapChanged: this.updateScrollingClasses.bind(this),\n      pinnedRowDataChanged: setFloatingHeights,\n      pinnedHeightChanged: setFloatingHeights,\n      pinnedRowsChanged: setFloatingHeights,\n      headerHeightChanged: this.setStickyTopOffsetTop.bind(this),\n      columnRowGroupChanged: setGridRootRole,\n      columnPivotChanged: setGridRootRole,\n      rowResizeStarted: toggleRowResizeStyle,\n      rowResizeEnded: toggleRowResizeStyle\n    });\n    this.addManagedPropertyListener(\"treeData\", setGridRootRole);\n  }\n  toggleRowResizeStyles(params) {\n    const isResizingRow = params.type === \"rowResizeStarted\";\n    this.eBodyViewport.classList.toggle(\"ag-prevent-animation\", isResizingRow);\n  }\n  onGridColumnsChanged() {\n    const columns = this.beans.colModel.getCols();\n    this.comp.setColumnCount(columns.length);\n  }\n  onScrollVisibilityChanged() {\n    const { scrollVisibleSvc } = this;\n    const visible = scrollVisibleSvc.verticalScrollShowing;\n    this.setVerticalScrollPaddingVisible(visible);\n    this.setStickyWidth(visible);\n    this.setStickyBottomOffsetBottom();\n    const scrollbarWidth = visible ? scrollVisibleSvc.getScrollbarWidth() || 0 : 0;\n    const pad = _isInvisibleScrollbar() ? 16 : 0;\n    const width = `calc(100% + ${scrollbarWidth + pad}px)`;\n    _requestAnimationFrame(this.beans, () => this.comp.setBodyViewportWidth(width));\n    this.updateScrollingClasses();\n  }\n  setGridRootRole() {\n    const { rowGroupColsSvc, colModel } = this;\n    let isTreeGrid = this.gos.get(\"treeData\");\n    if (!isTreeGrid) {\n      const isPivotActive = colModel.isPivotMode();\n      const rowGroupColumnLen = !rowGroupColsSvc ? 0 : rowGroupColsSvc.columns.length;\n      const columnsNeededForGrouping = isPivotActive ? 2 : 1;\n      isTreeGrid = rowGroupColumnLen >= columnsNeededForGrouping;\n    }\n    this.comp.setGridRootRole(isTreeGrid ? \"treegrid\" : \"grid\");\n  }\n  addFocusListeners(elements) {\n    elements.forEach((element) => {\n      this.addManagedElementListeners(element, {\n        focusin: (e) => {\n          const { target } = e;\n          const isFocusedElementNested = _isElementChildOfClass(target, \"ag-root\", element);\n          element.classList.toggle(\"ag-has-focus\", !isFocusedElementNested);\n        },\n        focusout: (e) => {\n          const { target, relatedTarget } = e;\n          const gridContainRelatedTarget = element.contains(relatedTarget);\n          const isNestedRelatedTarget = _isElementChildOfClass(\n            relatedTarget,\n            \"ag-root\",\n            element\n          );\n          const isNestedTarget = _isElementChildOfClass(target, \"ag-root\", element);\n          if (isNestedTarget) {\n            return;\n          }\n          if (!gridContainRelatedTarget || isNestedRelatedTarget) {\n            element.classList.remove(\"ag-has-focus\");\n          }\n        }\n      });\n    });\n  }\n  // used by ColumnAnimationService\n  setColumnMovingCss(moving) {\n    this.comp.setColumnMovingCss(CSS_CLASS_COLUMN_MOVING, moving);\n  }\n  setCellTextSelection(selectable = false) {\n    this.comp.setCellSelectableCss(CSS_CLASS_CELL_SELECTABLE, selectable);\n  }\n  updateScrollingClasses() {\n    const {\n      eGridBody: { classList },\n      scrollVisibleSvc\n    } = this;\n    classList.toggle(\"ag-body-vertical-content-no-gap\", !scrollVisibleSvc.verticalScrollGap);\n    classList.toggle(\"ag-body-horizontal-content-no-gap\", !scrollVisibleSvc.horizontalScrollGap);\n  }\n  // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n  // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n  disableBrowserDragging() {\n    this.addManagedElementListeners(this.eGridBody, {\n      dragstart: (event) => {\n        if (event.target instanceof HTMLImageElement) {\n          event.preventDefault();\n          return false;\n        }\n      }\n    });\n  }\n  addStopEditingWhenGridLosesFocus() {\n    this.beans.editSvc?.addStopEditingWhenGridLosesFocus([\n      this.eBodyViewport,\n      this.eBottom,\n      this.eTop,\n      this.eStickyTop,\n      this.eStickyBottom\n    ]);\n  }\n  updateRowCount() {\n    const headerCount = (this.ctrlsSvc.getHeaderRowContainerCtrl()?.getRowCount() ?? 0) + (this.filterManager?.getHeaderRowCount() ?? 0);\n    const { rowModel } = this.beans;\n    const rowCount = rowModel.isLastRowIndexKnown() ? rowModel.getRowCount() : -1;\n    const total = rowCount === -1 ? -1 : headerCount + rowCount;\n    this.comp.setRowCount(total);\n  }\n  registerBodyViewportResizeListener(listener) {\n    this.comp.registerBodyViewportResizeListener(listener);\n  }\n  setVerticalScrollPaddingVisible(visible) {\n    const overflowY = visible ? \"scroll\" : \"hidden\";\n    this.comp.setPinnedTopBottomOverflowY(overflowY);\n  }\n  isVerticalScrollShowing() {\n    const show = this.gos.get(\"alwaysShowVerticalScroll\");\n    const cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;\n    const allowVerticalScroll = _isDomLayout(this.gos, \"normal\");\n    this.comp.setAlwaysVerticalScrollClass(cssClass, show);\n    return show || allowVerticalScroll && _isVerticalScrollShowing(this.eBodyViewport);\n  }\n  setupRowAnimationCssClass() {\n    const { rowContainerHeight, environment } = this.beans;\n    let initialSizeMeasurementComplete = environment.sizesMeasured;\n    const updateAnimationClass = () => {\n      const animateRows = initialSizeMeasurementComplete && _isAnimateRows(this.gos) && !rowContainerHeight.stretching;\n      const animateRowsCssClass = animateRows ? \"ag-row-animation\" : \"ag-row-no-animation\";\n      this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);\n    };\n    updateAnimationClass();\n    this.addManagedEventListeners({ heightScaleChanged: updateAnimationClass });\n    this.addManagedPropertyListener(\"animateRows\", updateAnimationClass);\n    this.addManagedEventListeners({\n      gridStylesChanged: () => {\n        if (!initialSizeMeasurementComplete && environment.sizesMeasured) {\n          initialSizeMeasurementComplete = true;\n          updateAnimationClass();\n        }\n      }\n    });\n  }\n  addBodyViewportListener() {\n    const {\n      eBodyViewport,\n      eStickyTop,\n      eStickyBottom,\n      eTop,\n      eBottom,\n      beans: { popupSvc, touchSvc }\n    } = this;\n    const listener = this.onBodyViewportContextMenu.bind(this);\n    this.addManagedElementListeners(eBodyViewport, { contextmenu: listener });\n    touchSvc?.mockBodyContextMenu(this, listener);\n    this.addManagedElementListeners(eBodyViewport, {\n      wheel: this.onBodyViewportWheel.bind(this, popupSvc)\n    });\n    const onStickyWheel = this.onStickyWheel.bind(this);\n    for (const container of [eStickyTop, eStickyBottom, eTop, eBottom]) {\n      this.addManagedElementListeners(container, { wheel: onStickyWheel });\n    }\n    const onHorizontalWheel = this.onHorizontalWheel.bind(this);\n    for (const container of [\"left\", \"right\", \"topLeft\", \"topRight\", \"bottomLeft\", \"bottomRight\"]) {\n      this.addManagedElementListeners(this.ctrlsSvc.get(container).eContainer, {\n        wheel: onHorizontalWheel\n      });\n    }\n    this.addFullWidthContainerWheelListener();\n  }\n  addFullWidthContainerWheelListener() {\n    this.addManagedElementListeners(this.eFullWidthContainer, {\n      wheel: (e) => this.onFullWidthContainerWheel(e)\n    });\n  }\n  onFullWidthContainerWheel(e) {\n    const { deltaX, deltaY, shiftKey } = e;\n    const isHorizontalScroll = shiftKey || Math.abs(deltaX) > Math.abs(deltaY);\n    if (isHorizontalScroll && _isEventFromThisGrid(this.gos, e)) {\n      this.scrollGridBodyToMatchEvent(e);\n    }\n  }\n  onStickyWheel(e) {\n    const { deltaY } = e;\n    e.preventDefault();\n    this.scrollVertically(deltaY);\n  }\n  onHorizontalWheel(e) {\n    const { deltaX, deltaY, shiftKey } = e;\n    const isHorizontalScroll = shiftKey || Math.abs(deltaX) > Math.abs(deltaY);\n    if (!isHorizontalScroll) {\n      return;\n    }\n    this.scrollGridBodyToMatchEvent(e);\n  }\n  scrollGridBodyToMatchEvent(e) {\n    const { deltaX, deltaY } = e;\n    e.preventDefault();\n    this.eCenterColsViewport.scrollBy({ left: deltaX || deltaY });\n  }\n  onBodyViewportContextMenu(mouseEvent, touch, touchEvent) {\n    if (!mouseEvent && !touchEvent) {\n      return;\n    }\n    if (this.gos.get(\"preventDefaultOnContextMenu\")) {\n      const event = mouseEvent || touchEvent;\n      event.preventDefault();\n    }\n    const { target } = mouseEvent || touch;\n    if (target === this.eBodyViewport || target === this.ctrlsSvc.get(\"center\").eViewport) {\n      this.beans.contextMenuSvc?.showContextMenu({\n        mouseEvent,\n        touchEvent,\n        value: null,\n        anchorToElement: this.eGridBody,\n        source: \"ui\"\n      });\n    }\n  }\n  onBodyViewportWheel(popupSvc, e) {\n    if (!this.gos.get(\"suppressScrollWhenPopupsAreOpen\")) {\n      return;\n    }\n    if (popupSvc?.hasAnchoredPopup()) {\n      e.preventDefault();\n    }\n  }\n  // called by rowDragFeature\n  scrollVertically(pixels) {\n    const oldScrollPosition = this.eBodyViewport.scrollTop;\n    this.scrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);\n    return this.eBodyViewport.scrollTop - oldScrollPosition;\n  }\n  setFloatingHeights() {\n    const {\n      pinnedRowModel,\n      beans: { environment }\n    } = this;\n    const floatingTopHeight = pinnedRowModel?.getPinnedTopTotalHeight();\n    const floatingBottomHeight = pinnedRowModel?.getPinnedBottomTotalHeight();\n    const pinnedBorderWidth = environment.getPinnedRowBorderWidth();\n    const rowBorderWidth = environment.getRowBorderWidth();\n    const additionalHeight = pinnedBorderWidth - rowBorderWidth;\n    const normalisedFloatingTopHeight = !floatingTopHeight ? 0 : additionalHeight + floatingTopHeight;\n    const normalisedFloatingBottomHeight = !floatingBottomHeight ? 0 : additionalHeight + floatingBottomHeight;\n    this.comp.setTopHeight(normalisedFloatingTopHeight);\n    this.comp.setBottomHeight(normalisedFloatingBottomHeight);\n    this.comp.setTopInvisible(normalisedFloatingTopHeight <= 0);\n    this.comp.setBottomInvisible(normalisedFloatingBottomHeight <= 0);\n    this.setStickyTopOffsetTop();\n    this.setStickyBottomOffsetBottom();\n  }\n  setStickyTopHeight(height = 0) {\n    this.comp.setStickyTopHeight(`${height}px`);\n    this.stickyTopHeight = height;\n  }\n  setStickyBottomHeight(height = 0) {\n    this.comp.setStickyBottomHeight(`${height}px`);\n    this.stickyBottomHeight = height;\n  }\n  setStickyWidth(vScrollVisible) {\n    if (!vScrollVisible) {\n      this.comp.setStickyTopWidth(\"100%\");\n      this.comp.setStickyBottomWidth(\"100%\");\n    } else {\n      const scrollbarWidth = this.scrollVisibleSvc.getScrollbarWidth();\n      this.comp.setStickyTopWidth(`calc(100% - ${scrollbarWidth}px)`);\n      this.comp.setStickyBottomWidth(`calc(100% - ${scrollbarWidth}px)`);\n    }\n  }\n  setStickyTopOffsetTop() {\n    const headerCtrl = this.ctrlsSvc.get(\"gridHeaderCtrl\");\n    const headerHeight = headerCtrl.headerHeight + (this.filterManager?.getHeaderHeight() ?? 0);\n    const pinnedTopHeight = this.pinnedRowModel?.getPinnedTopTotalHeight() ?? 0;\n    let height = 0;\n    if (headerHeight > 0) {\n      height += headerHeight;\n    }\n    if (pinnedTopHeight > 0) {\n      height += pinnedTopHeight;\n    }\n    if (height > 0) {\n      height += 1;\n    }\n    this.comp.setStickyTopTop(`${height}px`);\n  }\n  setStickyBottomOffsetBottom() {\n    const { pinnedRowModel, scrollVisibleSvc, comp } = this;\n    const pinnedBottomHeight = pinnedRowModel?.getPinnedBottomTotalHeight() ?? 0;\n    const hScrollShowing = scrollVisibleSvc.horizontalScrollShowing;\n    const scrollbarWidth = hScrollShowing ? scrollVisibleSvc.getScrollbarWidth() || 0 : 0;\n    const height = pinnedBottomHeight + scrollbarWidth;\n    comp.setStickyBottomBottom(`${height}px`);\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/abstractFakeScrollComp.ts\nvar AbstractFakeScrollComp = class extends Component {\n  constructor(template, direction) {\n    super();\n    this.direction = direction;\n    this.eViewport = RefPlaceholder;\n    this.eContainer = RefPlaceholder;\n    this.hideTimeout = 0;\n    this.setTemplate(template);\n  }\n  postConstruct() {\n    this.addManagedEventListeners({\n      scrollVisibilityChanged: this.onScrollVisibilityChanged.bind(this)\n    });\n    this.onScrollVisibilityChanged();\n    this.toggleCss(\"ag-apple-scrollbar\", _isMacOsUserAgent() || _isIOSUserAgent());\n  }\n  destroy() {\n    super.destroy();\n    window.clearTimeout(this.hideTimeout);\n  }\n  initialiseInvisibleScrollbar() {\n    if (this.invisibleScrollbar !== void 0) {\n      return;\n    }\n    this.invisibleScrollbar = _isInvisibleScrollbar();\n    if (this.invisibleScrollbar) {\n      this.hideAndShowInvisibleScrollAsNeeded();\n      this.addActiveListenerToggles();\n    }\n  }\n  addActiveListenerToggles() {\n    const eGui = this.getGui();\n    const onActivate = () => this.toggleCss(\"ag-scrollbar-active\", true);\n    const onDeactivate = () => this.toggleCss(\"ag-scrollbar-active\", false);\n    this.addManagedListeners(eGui, {\n      mouseenter: onActivate,\n      mousedown: onActivate,\n      touchstart: onActivate,\n      mouseleave: onDeactivate,\n      touchend: onDeactivate\n    });\n  }\n  onScrollVisibilityChanged() {\n    if (this.invisibleScrollbar === void 0) {\n      this.initialiseInvisibleScrollbar();\n    }\n    _requestAnimationFrame(this.beans, () => this.setScrollVisible());\n  }\n  hideAndShowInvisibleScrollAsNeeded() {\n    this.addManagedEventListeners({\n      bodyScroll: (params) => {\n        if (params.direction === this.direction) {\n          if (this.hideTimeout) {\n            window.clearTimeout(this.hideTimeout);\n            this.hideTimeout = 0;\n          }\n          this.toggleCss(\"ag-scrollbar-scrolling\", true);\n        }\n      },\n      bodyScrollEnd: () => {\n        this.hideTimeout = window.setTimeout(() => {\n          this.toggleCss(\"ag-scrollbar-scrolling\", false);\n          this.hideTimeout = 0;\n        }, 400);\n      }\n    });\n  }\n  attemptSettingScrollPosition(value) {\n    const viewport = this.eViewport;\n    _waitUntil(\n      () => _isVisible(viewport),\n      () => this.setScrollPosition(value),\n      100\n    );\n  }\n  onScrollCallback(fn) {\n    this.addManagedElementListeners(this.eViewport, { scroll: fn });\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/fakeHScrollComp.ts\nvar FakeHScrollElement = {\n  tag: \"div\",\n  cls: \"ag-body-horizontal-scroll\",\n  attrs: { \"aria-hidden\": \"true\" },\n  children: [\n    { tag: \"div\", ref: \"eLeftSpacer\", cls: \"ag-horizontal-left-spacer\" },\n    {\n      tag: \"div\",\n      ref: \"eViewport\",\n      cls: \"ag-body-horizontal-scroll-viewport\",\n      children: [{ tag: \"div\", ref: \"eContainer\", cls: \"ag-body-horizontal-scroll-container\" }]\n    },\n    { tag: \"div\", ref: \"eRightSpacer\", cls: \"ag-horizontal-right-spacer\" }\n  ]\n};\nvar FakeHScrollComp = class extends AbstractFakeScrollComp {\n  constructor() {\n    super(FakeHScrollElement, \"horizontal\");\n    this.eLeftSpacer = RefPlaceholder;\n    this.eRightSpacer = RefPlaceholder;\n    this.setScrollVisibleDebounce = 0;\n  }\n  wireBeans(beans) {\n    this.visibleCols = beans.visibleCols;\n    this.scrollVisibleSvc = beans.scrollVisibleSvc;\n  }\n  postConstruct() {\n    super.postConstruct();\n    const spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);\n    this.addManagedEventListeners({\n      displayedColumnsChanged: spacerWidthsListener,\n      displayedColumnsWidthChanged: spacerWidthsListener,\n      pinnedRowDataChanged: this.refreshCompBottom.bind(this)\n    });\n    this.addManagedPropertyListener(\"domLayout\", spacerWidthsListener);\n    this.beans.ctrlsSvc.register(\"fakeHScrollComp\", this);\n    this.createManagedBean(new CenterWidthFeature((width) => this.eContainer.style.width = `${width}px`));\n    this.addManagedPropertyListeners([\"suppressHorizontalScroll\"], this.onScrollVisibilityChanged.bind(this));\n  }\n  destroy() {\n    window.clearTimeout(this.setScrollVisibleDebounce);\n    super.destroy();\n  }\n  initialiseInvisibleScrollbar() {\n    if (this.invisibleScrollbar !== void 0) {\n      return;\n    }\n    this.enableRtl = this.gos.get(\"enableRtl\");\n    super.initialiseInvisibleScrollbar();\n    if (this.invisibleScrollbar) {\n      this.refreshCompBottom();\n    }\n  }\n  refreshCompBottom() {\n    if (!this.invisibleScrollbar) {\n      return;\n    }\n    const bottomPinnedHeight = this.beans.pinnedRowModel?.getPinnedBottomTotalHeight() ?? 0;\n    this.getGui().style.bottom = `${bottomPinnedHeight}px`;\n  }\n  onScrollVisibilityChanged() {\n    super.onScrollVisibilityChanged();\n    this.setFakeHScrollSpacerWidths();\n  }\n  setFakeHScrollSpacerWidths() {\n    const vScrollShowing = this.scrollVisibleSvc.verticalScrollShowing;\n    let rightSpacing = this.visibleCols.getDisplayedColumnsRightWidth();\n    const scrollOnRight = !this.enableRtl && vScrollShowing;\n    const scrollbarWidth = this.scrollVisibleSvc.getScrollbarWidth();\n    if (scrollOnRight) {\n      rightSpacing += scrollbarWidth;\n    }\n    _setFixedWidth(this.eRightSpacer, rightSpacing);\n    this.eRightSpacer.classList.toggle(\"ag-scroller-corner\", rightSpacing <= scrollbarWidth);\n    let leftSpacing = this.visibleCols.getColsLeftWidth();\n    const scrollOnLeft = this.enableRtl && vScrollShowing;\n    if (scrollOnLeft) {\n      leftSpacing += scrollbarWidth;\n    }\n    _setFixedWidth(this.eLeftSpacer, leftSpacing);\n    this.eLeftSpacer.classList.toggle(\"ag-scroller-corner\", leftSpacing <= scrollbarWidth);\n  }\n  setScrollVisible() {\n    const hScrollShowing = this.scrollVisibleSvc.horizontalScrollShowing;\n    const invisibleScrollbar2 = this.invisibleScrollbar;\n    const isSuppressHorizontalScroll = this.gos.get(\"suppressHorizontalScroll\");\n    const scrollbarWidth = hScrollShowing ? this.scrollVisibleSvc.getScrollbarWidth() || 0 : 0;\n    const adjustedScrollbarWidth = scrollbarWidth === 0 && invisibleScrollbar2 ? 16 : scrollbarWidth;\n    const scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;\n    const apply = () => {\n      this.setScrollVisibleDebounce = 0;\n      this.toggleCss(\"ag-scrollbar-invisible\", invisibleScrollbar2);\n      _setFixedHeight(this.getGui(), scrollContainerSize);\n      _setFixedHeight(this.eViewport, scrollContainerSize);\n      _setFixedHeight(this.eContainer, scrollContainerSize);\n      if (!scrollContainerSize) {\n        this.eContainer.style.setProperty(\"min-height\", \"1px\");\n      }\n      this.setVisible(hScrollShowing, { skipAriaHidden: true });\n    };\n    window.clearTimeout(this.setScrollVisibleDebounce);\n    if (!hScrollShowing) {\n      apply();\n    } else {\n      this.setScrollVisibleDebounce = window.setTimeout(apply, 100);\n    }\n  }\n  getScrollPosition() {\n    return _getScrollLeft(this.eViewport, this.enableRtl);\n  }\n  setScrollPosition(value) {\n    if (!_isVisible(this.eViewport)) {\n      this.attemptSettingScrollPosition(value);\n    }\n    _setScrollLeft(this.eViewport, value, this.enableRtl);\n  }\n};\nvar FakeHScrollSelector = {\n  selector: \"AG-FAKE-HORIZONTAL-SCROLL\",\n  component: FakeHScrollComp\n};\n\n// packages/ag-grid-community/src/gridBodyComp/fakeVScrollComp.ts\nvar FakeVScrollElement = {\n  tag: \"div\",\n  cls: \"ag-body-vertical-scroll\",\n  attrs: { \"aria-hidden\": \"true\" },\n  children: [\n    {\n      tag: \"div\",\n      ref: \"eViewport\",\n      cls: \"ag-body-vertical-scroll-viewport\",\n      children: [{ tag: \"div\", ref: \"eContainer\", cls: \"ag-body-vertical-scroll-container\" }]\n    }\n  ]\n};\nvar FakeVScrollComp = class extends AbstractFakeScrollComp {\n  constructor() {\n    super(FakeVScrollElement, \"vertical\");\n  }\n  postConstruct() {\n    super.postConstruct();\n    this.createManagedBean(new SetHeightFeature(this.eContainer));\n    const { ctrlsSvc } = this.beans;\n    ctrlsSvc.register(\"fakeVScrollComp\", this);\n    this.addManagedEventListeners({\n      rowContainerHeightChanged: this.onRowContainerHeightChanged.bind(this, ctrlsSvc)\n    });\n  }\n  setScrollVisible() {\n    const { scrollVisibleSvc } = this.beans;\n    const vScrollShowing = scrollVisibleSvc.verticalScrollShowing;\n    const invisibleScrollbar2 = this.invisibleScrollbar;\n    const scrollbarWidth = vScrollShowing ? scrollVisibleSvc.getScrollbarWidth() || 0 : 0;\n    const adjustedScrollbarWidth = scrollbarWidth === 0 && invisibleScrollbar2 ? 16 : scrollbarWidth;\n    this.toggleCss(\"ag-scrollbar-invisible\", invisibleScrollbar2);\n    _setFixedWidth(this.getGui(), adjustedScrollbarWidth);\n    _setFixedWidth(this.eViewport, adjustedScrollbarWidth);\n    _setFixedWidth(this.eContainer, adjustedScrollbarWidth);\n    this.setDisplayed(vScrollShowing, { skipAriaHidden: true });\n  }\n  onRowContainerHeightChanged(ctrlsSvc) {\n    const gridBodyCtrl = ctrlsSvc.getGridBodyCtrl();\n    const gridBodyViewportEl = gridBodyCtrl.eBodyViewport;\n    const eViewportScrollTop = this.getScrollPosition();\n    const gridBodyViewportScrollTop = gridBodyViewportEl.scrollTop;\n    if (eViewportScrollTop != gridBodyViewportScrollTop) {\n      this.setScrollPosition(gridBodyViewportScrollTop, true);\n    }\n  }\n  getScrollPosition() {\n    return this.eViewport.scrollTop;\n  }\n  setScrollPosition(value, force) {\n    if (!force && !_isVisible(this.eViewport)) {\n      this.attemptSettingScrollPosition(value);\n    }\n    this.eViewport.scrollTop = value;\n  }\n};\nvar FakeVScrollSelector = {\n  selector: \"AG-FAKE-VERTICAL-SCROLL\",\n  component: FakeVScrollComp\n};\n\n// packages/ag-grid-community/src/headerRendering/headerUtils.ts\nfunction getHeaderRowCount(colModel) {\n  return colModel.cols ? colModel.cols.treeDepth + 1 : -1;\n}\nfunction getFocusHeaderRowCount(beans) {\n  return beans.ctrlsSvc.getHeaderRowContainerCtrl()?.getRowCount() ?? 0;\n}\nfunction getGroupRowsHeight(beans) {\n  const heights = [];\n  const headerRowContainerCtrls = beans.ctrlsSvc.getHeaderRowContainerCtrls();\n  for (const headerRowContainerCtrl of headerRowContainerCtrls) {\n    if (!headerRowContainerCtrl) {\n      continue;\n    }\n    const groupRowCount = headerRowContainerCtrl.getGroupRowCount() || 0;\n    for (let i = 0; i < groupRowCount; i++) {\n      const headerRowCtrl = headerRowContainerCtrl.getGroupRowCtrlAtIndex(i);\n      const currentHeightAtPos = heights[i];\n      if (headerRowCtrl) {\n        const newHeight = getColumnGroupHeaderRowHeight(beans, headerRowCtrl);\n        if (currentHeightAtPos == null || newHeight > currentHeightAtPos) {\n          heights[i] = newHeight;\n        }\n      }\n    }\n  }\n  return heights;\n}\nfunction getColumnGroupHeaderRowHeight(beans, headerRowCtrl) {\n  const defaultHeight = beans.colModel.isPivotMode() ? getPivotGroupHeaderHeight(beans) : getGroupHeaderHeight(beans);\n  let maxDisplayedHeight = defaultHeight;\n  const headerRowCellCtrls = headerRowCtrl.getHeaderCellCtrls();\n  for (const headerCellCtrl of headerRowCellCtrls) {\n    const { column } = headerCellCtrl;\n    const height = column.getAutoHeaderHeight();\n    if (height != null && height > maxDisplayedHeight && column.isAutoHeaderHeight()) {\n      maxDisplayedHeight = height;\n    }\n  }\n  return maxDisplayedHeight;\n}\nfunction getColumnHeaderRowHeight(beans) {\n  const defaultHeight = beans.colModel.isPivotMode() ? getPivotHeaderHeight(beans) : getHeaderHeight(beans);\n  let maxDisplayedHeight = defaultHeight;\n  beans.colModel.forAllCols((col) => {\n    const height = col.getAutoHeaderHeight();\n    if (height != null && height > maxDisplayedHeight && col.isAutoHeaderHeight()) {\n      maxDisplayedHeight = height;\n    }\n  });\n  return maxDisplayedHeight;\n}\nfunction getHeaderHeight(beans) {\n  return beans.gos.get(\"headerHeight\") ?? beans.environment.getDefaultHeaderHeight();\n}\nfunction getFloatingFiltersHeight(beans) {\n  return beans.gos.get(\"floatingFiltersHeight\") ?? getHeaderHeight(beans);\n}\nfunction getGroupHeaderHeight(beans) {\n  return beans.gos.get(\"groupHeaderHeight\") ?? getHeaderHeight(beans);\n}\nfunction getPivotHeaderHeight(beans) {\n  return beans.gos.get(\"pivotHeaderHeight\") ?? getHeaderHeight(beans);\n}\nfunction getPivotGroupHeaderHeight(beans) {\n  return beans.gos.get(\"pivotGroupHeaderHeight\") ?? getGroupHeaderHeight(beans);\n}\n\n// packages/ag-grid-community/src/headerRendering/gridHeaderCtrl.ts\nvar GridHeaderCtrl = class extends BeanStub {\n  setComp(comp, eGui, eFocusableElement) {\n    this.comp = comp;\n    this.eGui = eGui;\n    const { beans } = this;\n    const { headerNavigation, touchSvc, ctrlsSvc } = beans;\n    if (headerNavigation) {\n      this.createManagedBean(\n        new ManagedFocusFeature(eFocusableElement, {\n          onTabKeyDown: this.onTabKeyDown.bind(this),\n          handleKeyDown: this.handleKeyDown.bind(this),\n          onFocusOut: this.onFocusOut.bind(this)\n        })\n      );\n    }\n    this.addManagedEventListeners({\n      columnPivotModeChanged: this.onPivotModeChanged.bind(this, beans),\n      displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this, beans)\n    });\n    this.onPivotModeChanged(beans);\n    this.setupHeaderHeight();\n    const listener = this.onHeaderContextMenu.bind(this);\n    this.addManagedElementListeners(this.eGui, { contextmenu: listener });\n    touchSvc?.mockHeaderContextMenu(this, listener);\n    ctrlsSvc.register(\"gridHeaderCtrl\", this);\n  }\n  setupHeaderHeight() {\n    const listener = this.setHeaderHeight.bind(this);\n    listener();\n    this.addManagedPropertyListeners(\n      [\n        \"headerHeight\",\n        \"pivotHeaderHeight\",\n        \"groupHeaderHeight\",\n        \"pivotGroupHeaderHeight\",\n        \"floatingFiltersHeight\"\n      ],\n      listener\n    );\n    this.addManagedEventListeners({\n      displayedColumnsChanged: listener,\n      columnHeaderHeightChanged: listener,\n      // add this to the animation frame to avoid a feedback loop\n      columnGroupHeaderHeightChanged: () => _requestAnimationFrame(this.beans, () => listener()),\n      gridStylesChanged: listener,\n      advancedFilterEnabledChanged: listener\n    });\n  }\n  setHeaderHeight() {\n    const { beans } = this;\n    let totalHeaderHeight = 0;\n    const groupHeight = getGroupRowsHeight(beans).reduce((prev, curr) => prev + curr, 0);\n    const headerHeight = getColumnHeaderRowHeight(beans);\n    if (beans.filterManager?.hasFloatingFilters()) {\n      totalHeaderHeight += getFloatingFiltersHeight(beans);\n    }\n    totalHeaderHeight += groupHeight;\n    totalHeaderHeight += headerHeight;\n    if (this.headerHeight === totalHeaderHeight) {\n      return;\n    }\n    this.headerHeight = totalHeaderHeight;\n    const px = `${totalHeaderHeight + 1}px`;\n    this.comp.setHeightAndMinHeight(px);\n    this.eventSvc.dispatchEvent({\n      type: \"headerHeightChanged\"\n    });\n  }\n  onPivotModeChanged(beans) {\n    const pivotMode = beans.colModel.isPivotMode();\n    this.comp.toggleCss(\"ag-pivot-on\", pivotMode);\n    this.comp.toggleCss(\"ag-pivot-off\", !pivotMode);\n  }\n  onDisplayedColumnsChanged(beans) {\n    const columns = beans.visibleCols.allCols;\n    const shouldAllowOverflow = columns.some((col) => col.isSpanHeaderHeight());\n    this.comp.toggleCss(\"ag-header-allow-overflow\", shouldAllowOverflow);\n  }\n  onTabKeyDown(e) {\n    const isRtl = this.gos.get(\"enableRtl\");\n    const backwards = e.shiftKey;\n    const direction = backwards !== isRtl ? \"LEFT\" : \"RIGHT\";\n    const { beans } = this;\n    const { headerNavigation, focusSvc } = beans;\n    if (headerNavigation.navigateHorizontally(direction, true, e) || !backwards && focusSvc.focusOverlay(false) || _focusNextGridCoreContainer(beans, backwards, true)) {\n      e.preventDefault();\n    }\n  }\n  handleKeyDown(e) {\n    let direction = null;\n    const { headerNavigation } = this.beans;\n    switch (e.key) {\n      case KeyCode.LEFT:\n        direction = \"LEFT\";\n      case KeyCode.RIGHT: {\n        if (!_exists(direction)) {\n          direction = \"RIGHT\";\n        }\n        if (headerNavigation.navigateHorizontally(direction, false, e)) {\n          e.preventDefault();\n        }\n        break;\n      }\n      case KeyCode.UP:\n        direction = \"UP\";\n      case KeyCode.DOWN: {\n        if (!_exists(direction)) {\n          direction = \"DOWN\";\n        }\n        if (headerNavigation.navigateVertically(direction, null, e)) {\n          e.preventDefault();\n        }\n        break;\n      }\n      default:\n        return;\n    }\n  }\n  onFocusOut(e) {\n    const { relatedTarget } = e;\n    const { eGui, beans } = this;\n    if (!relatedTarget && eGui.contains(_getActiveDomElement(beans))) {\n      return;\n    }\n    if (!eGui.contains(relatedTarget)) {\n      beans.focusSvc.focusedHeader = null;\n    }\n  }\n  onHeaderContextMenu(mouseEvent, touch, touchEvent) {\n    const { menuSvc, ctrlsSvc } = this.beans;\n    if (!mouseEvent && !touchEvent || !menuSvc?.isHeaderContextMenuEnabled()) {\n      return;\n    }\n    const { target } = mouseEvent ?? touch;\n    if (target === this.eGui || target === ctrlsSvc.getHeaderRowContainerCtrl()?.eViewport) {\n      menuSvc.showHeaderContextMenu(void 0, mouseEvent, touchEvent);\n    }\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/abstractCell/abstractHeaderCellComp.ts\nvar AbstractHeaderCellComp = class extends Component {\n  constructor(template, ctrl) {\n    super(template);\n    this.ctrl = ctrl;\n  }\n  getCtrl() {\n    return this.ctrl;\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/column/headerCellComp.ts\nvar HeaderCellElement = {\n  tag: \"div\",\n  cls: \"ag-header-cell\",\n  role: \"columnheader\",\n  children: [\n    { tag: \"div\", ref: \"eResize\", cls: \"ag-header-cell-resize\", role: \"presentation\" },\n    { tag: \"div\", ref: \"eHeaderCompWrapper\", cls: \"ag-header-cell-comp-wrapper\", role: \"presentation\" }\n  ]\n};\nvar HeaderCellComp = class extends AbstractHeaderCellComp {\n  constructor(ctrl) {\n    super(HeaderCellElement, ctrl);\n    this.eResize = RefPlaceholder;\n    this.eHeaderCompWrapper = RefPlaceholder;\n    this.headerCompVersion = 0;\n  }\n  postConstruct() {\n    const eGui = this.getGui();\n    const setAttribute = (name, value) => {\n      if (value != null && value != \"\") {\n        eGui.setAttribute(name, value);\n      } else {\n        eGui.removeAttribute(name);\n      }\n    };\n    setAttribute(\"col-id\", this.ctrl.column.getColId());\n    const compProxy = {\n      setWidth: (width) => eGui.style.width = width,\n      toggleCss: (cssClassName, on) => this.toggleCss(cssClassName, on),\n      setUserStyles: (styles) => _addStylesToElement(eGui, styles),\n      setAriaSort: (sort) => sort ? _setAriaSort(eGui, sort) : _removeAriaSort(eGui),\n      setUserCompDetails: (compDetails) => this.setUserCompDetails(compDetails),\n      getUserCompInstance: () => this.headerComp\n    };\n    this.ctrl.setComp(compProxy, this.getGui(), this.eResize, this.eHeaderCompWrapper, void 0);\n    const selectAllGui = this.ctrl.getSelectAllGui();\n    if (selectAllGui) {\n      this.eResize.insertAdjacentElement(\"afterend\", selectAllGui);\n    }\n  }\n  destroy() {\n    this.destroyHeaderComp();\n    super.destroy();\n  }\n  destroyHeaderComp() {\n    if (this.headerComp) {\n      this.eHeaderCompWrapper.removeChild(this.headerCompGui);\n      this.headerComp = this.destroyBean(this.headerComp);\n      this.headerCompGui = void 0;\n    }\n  }\n  setUserCompDetails(compDetails) {\n    this.headerCompVersion++;\n    const versionCopy = this.headerCompVersion;\n    compDetails.newAgStackInstance().then((comp) => this.afterCompCreated(versionCopy, comp));\n  }\n  afterCompCreated(version, headerComp) {\n    if (version != this.headerCompVersion || !this.isAlive()) {\n      this.destroyBean(headerComp);\n      return;\n    }\n    this.destroyHeaderComp();\n    this.headerComp = headerComp;\n    this.headerCompGui = headerComp.getGui();\n    this.eHeaderCompWrapper.appendChild(this.headerCompGui);\n    this.ctrl.setDragSource(this.getGui());\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/columnGroup/headerGroupCellComp.ts\nvar HeaderGroupCellCompElement = {\n  tag: \"div\",\n  cls: \"ag-header-group-cell\",\n  role: \"columnheader\",\n  children: [\n    { tag: \"div\", ref: \"eHeaderCompWrapper\", cls: \"ag-header-cell-comp-wrapper\", role: \"presentation\" },\n    { tag: \"div\", ref: \"eResize\", cls: \"ag-header-cell-resize\", role: \"presentation\" }\n  ]\n};\nvar HeaderGroupCellComp = class extends AbstractHeaderCellComp {\n  constructor(ctrl) {\n    super(HeaderGroupCellCompElement, ctrl);\n    this.eResize = RefPlaceholder;\n    this.eHeaderCompWrapper = RefPlaceholder;\n  }\n  postConstruct() {\n    const eGui = this.getGui();\n    const setAttribute = (key, value) => value != void 0 ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);\n    eGui.setAttribute(\"col-id\", this.ctrl.column.getUniqueId());\n    const compProxy = {\n      toggleCss: (cssClassName, on) => this.toggleCss(cssClassName, on),\n      setUserStyles: (styles) => _addStylesToElement(eGui, styles),\n      setHeaderWrapperHidden: (hidden) => {\n        if (hidden) {\n          this.eHeaderCompWrapper.style.setProperty(\"display\", \"none\");\n        } else {\n          this.eHeaderCompWrapper.style.removeProperty(\"display\");\n        }\n      },\n      setHeaderWrapperMaxHeight: (value) => {\n        if (value != null) {\n          this.eHeaderCompWrapper.style.setProperty(\"max-height\", `${value}px`);\n        } else {\n          this.eHeaderCompWrapper.style.removeProperty(\"max-height\");\n        }\n        this.eHeaderCompWrapper.classList.toggle(\"ag-header-cell-comp-wrapper-limited-height\", value != null);\n      },\n      setResizableDisplayed: (displayed) => _setDisplayed(this.eResize, displayed),\n      setWidth: (width) => eGui.style.width = width,\n      setAriaExpanded: (expanded) => setAttribute(\"aria-expanded\", expanded),\n      setUserCompDetails: (details) => this.setUserCompDetails(details),\n      getUserCompInstance: () => this.headerGroupComp\n    };\n    this.ctrl.setComp(compProxy, eGui, this.eResize, this.eHeaderCompWrapper, void 0);\n  }\n  setUserCompDetails(details) {\n    details.newAgStackInstance().then((comp) => this.afterHeaderCompCreated(comp));\n  }\n  afterHeaderCompCreated(headerGroupComp) {\n    const destroyFunc = () => this.destroyBean(headerGroupComp);\n    if (!this.isAlive()) {\n      destroyFunc();\n      return;\n    }\n    const eGui = this.getGui();\n    const eHeaderGroupGui = headerGroupComp.getGui();\n    this.eHeaderCompWrapper.appendChild(eHeaderGroupGui);\n    this.addDestroyFunc(destroyFunc);\n    this.headerGroupComp = headerGroupComp;\n    this.ctrl.setDragSource(eGui);\n  }\n  addOrRemoveHeaderWrapperStyle(style, value) {\n    const { eHeaderCompWrapper } = this;\n    if (value) {\n      eHeaderCompWrapper.style.setProperty(style, value);\n    } else {\n      eHeaderCompWrapper.style.removeProperty(style);\n    }\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/floatingFilter/headerFilterCellComp.ts\nvar HeaderFilterCellCompElement = {\n  tag: \"div\",\n  cls: \"ag-header-cell ag-floating-filter\",\n  role: \"gridcell\",\n  children: [\n    { tag: \"div\", ref: \"eFloatingFilterBody\", role: \"presentation\" },\n    {\n      tag: \"div\",\n      ref: \"eButtonWrapper\",\n      cls: \"ag-floating-filter-button ag-hidden\",\n      role: \"presentation\",\n      children: [\n        {\n          tag: \"button\",\n          ref: \"eButtonShowMainFilter\",\n          cls: \"ag-button ag-floating-filter-button-button\",\n          attrs: { type: \"button\", tabindex: \"-1\" }\n        }\n      ]\n    }\n  ]\n};\nvar HeaderFilterCellComp = class extends AbstractHeaderCellComp {\n  constructor(ctrl) {\n    super(HeaderFilterCellCompElement, ctrl);\n    this.eFloatingFilterBody = RefPlaceholder;\n    this.eButtonWrapper = RefPlaceholder;\n    this.eButtonShowMainFilter = RefPlaceholder;\n  }\n  postConstruct() {\n    const eGui = this.getGui();\n    const compProxy = {\n      toggleCss: (cssClassName, on) => this.toggleCss(cssClassName, on),\n      setUserStyles: (styles) => _addStylesToElement(eGui, styles),\n      addOrRemoveBodyCssClass: (cssClassName, on) => this.eFloatingFilterBody.classList.toggle(cssClassName, on),\n      setButtonWrapperDisplayed: (displayed) => _setDisplayed(this.eButtonWrapper, displayed),\n      setCompDetails: (compDetails) => this.setCompDetails(compDetails),\n      getFloatingFilterComp: () => this.compPromise,\n      setWidth: (width) => eGui.style.width = width,\n      setMenuIcon: (eIcon) => this.eButtonShowMainFilter.appendChild(eIcon)\n    };\n    this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody, void 0);\n  }\n  setCompDetails(compDetails) {\n    if (!compDetails) {\n      this.destroyFloatingFilterComp();\n      this.compPromise = null;\n      return;\n    }\n    this.compPromise = compDetails.newAgStackInstance();\n    this.compPromise.then((comp) => this.afterCompCreated(comp));\n  }\n  destroy() {\n    this.destroyFloatingFilterComp();\n    super.destroy();\n  }\n  destroyFloatingFilterComp() {\n    if (this.floatingFilterComp) {\n      this.eFloatingFilterBody.removeChild(this.floatingFilterComp.getGui());\n      this.floatingFilterComp = this.destroyBean(this.floatingFilterComp);\n    }\n  }\n  afterCompCreated(comp) {\n    if (!comp) {\n      return;\n    }\n    if (!this.isAlive()) {\n      this.destroyBean(comp);\n      return;\n    }\n    this.destroyFloatingFilterComp();\n    this.floatingFilterComp = comp;\n    this.eFloatingFilterBody.appendChild(comp.getGui());\n    if (comp.afterGuiAttached) {\n      comp.afterGuiAttached();\n    }\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/row/headerRowComp.ts\nvar HeaderRowComp = class extends Component {\n  constructor(ctrl) {\n    super({ tag: \"div\", cls: ctrl.headerRowClass, role: \"row\" });\n    this.ctrl = ctrl;\n    this.headerComps = {};\n  }\n  postConstruct() {\n    _setAriaRowIndex(this.getGui(), this.ctrl.getAriaRowIndex());\n    const compProxy = {\n      setHeight: (height) => this.getGui().style.height = height,\n      setTop: (top) => this.getGui().style.top = top,\n      setHeaderCtrls: (ctrls, forceOrder) => this.setHeaderCtrls(ctrls, forceOrder),\n      setWidth: (width) => this.getGui().style.width = width\n    };\n    this.ctrl.setComp(compProxy, void 0);\n  }\n  destroy() {\n    this.setHeaderCtrls([], false);\n    super.destroy();\n  }\n  setHeaderCtrls(ctrls, forceOrder) {\n    if (!this.isAlive()) {\n      return;\n    }\n    const oldComps = this.headerComps;\n    this.headerComps = {};\n    ctrls.forEach((ctrl) => {\n      const id = ctrl.instanceId;\n      let comp = oldComps[id];\n      delete oldComps[id];\n      if (comp == null) {\n        comp = this.createHeaderComp(ctrl);\n        this.getGui().appendChild(comp.getGui());\n      }\n      this.headerComps[id] = comp;\n    });\n    Object.values(oldComps).forEach((comp) => {\n      this.getGui().removeChild(comp.getGui());\n      this.destroyBean(comp);\n    });\n    if (forceOrder) {\n      const comps = Object.values(this.headerComps);\n      comps.sort(\n        (a, b) => {\n          const leftA = a.getCtrl().column.getLeft();\n          const leftB = b.getCtrl().column.getLeft();\n          return leftA - leftB;\n        }\n      );\n      const elementsInOrder = comps.map((c) => c.getGui());\n      _setDomChildOrder(this.getGui(), elementsInOrder);\n    }\n  }\n  createHeaderComp(headerCtrl) {\n    let result;\n    switch (this.ctrl.type) {\n      case \"group\":\n        result = new HeaderGroupCellComp(headerCtrl);\n        break;\n      case \"filter\":\n        result = new HeaderFilterCellComp(headerCtrl);\n        break;\n      default:\n        result = new HeaderCellComp(headerCtrl);\n        break;\n    }\n    this.createBean(result);\n    result.setParentComponent(this);\n    return result;\n  }\n};\n\n// packages/ag-grid-community/src/rendering/features/setLeftFeature.ts\nvar SetLeftFeature = class extends BeanStub {\n  constructor(columnOrGroup, eCell, beans, colsSpanning) {\n    super();\n    this.columnOrGroup = columnOrGroup;\n    this.eCell = eCell;\n    this.colsSpanning = colsSpanning;\n    this.columnOrGroup = columnOrGroup;\n    this.ariaEl = eCell.querySelector(\"[role=columnheader]\") || eCell;\n    this.beans = beans;\n  }\n  setColsSpanning(colsSpanning) {\n    this.colsSpanning = colsSpanning;\n    this.onLeftChanged();\n  }\n  getColumnOrGroup() {\n    const { beans, colsSpanning } = this;\n    if (beans.gos.get(\"enableRtl\") && colsSpanning) {\n      return _last(colsSpanning);\n    }\n    return this.columnOrGroup;\n  }\n  postConstruct() {\n    const onLeftChanged = this.onLeftChanged.bind(this);\n    this.addManagedListeners(this.columnOrGroup, { leftChanged: onLeftChanged });\n    this.setLeftFirstTime();\n    this.addManagedEventListeners({ displayedColumnsWidthChanged: onLeftChanged });\n    this.addManagedPropertyListener(\"domLayout\", onLeftChanged);\n  }\n  setLeftFirstTime() {\n    const { gos, colAnimation } = this.beans;\n    const suppressMoveAnimation = gos.get(\"suppressColumnMoveAnimation\");\n    const oldLeftExists = _exists(this.columnOrGroup.getOldLeft());\n    const animateColumnMove = colAnimation?.isActive() && oldLeftExists && !suppressMoveAnimation;\n    if (animateColumnMove) {\n      this.animateInLeft();\n    } else {\n      this.onLeftChanged();\n    }\n  }\n  animateInLeft() {\n    const colOrGroup = this.getColumnOrGroup();\n    const oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, colOrGroup.getOldLeft());\n    const actualLeft = this.modifyLeftForPrintLayout(colOrGroup, colOrGroup.getLeft());\n    this.setLeft(oldActualLeft);\n    this.actualLeft = actualLeft;\n    this.beans.colAnimation.executeNextVMTurn(() => {\n      if (this.actualLeft === actualLeft) {\n        this.setLeft(actualLeft);\n      }\n    });\n  }\n  onLeftChanged() {\n    const colOrGroup = this.getColumnOrGroup();\n    const left = colOrGroup.getLeft();\n    this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n    this.setLeft(this.actualLeft);\n  }\n  modifyLeftForPrintLayout(colOrGroup, leftPosition) {\n    const { gos, visibleCols } = this.beans;\n    const printLayout = _isDomLayout(gos, \"print\");\n    if (!printLayout) {\n      return leftPosition;\n    }\n    if (colOrGroup.getPinned() === \"left\") {\n      return leftPosition;\n    }\n    const leftWidth = visibleCols.getColsLeftWidth();\n    if (colOrGroup.getPinned() === \"right\") {\n      const bodyWidth = visibleCols.bodyWidth;\n      return leftWidth + bodyWidth + leftPosition;\n    }\n    return leftWidth + leftPosition;\n  }\n  setLeft(value) {\n    if (_exists(value)) {\n      this.eCell.style.left = `${value}px`;\n    }\n    if (isColumnGroup(this.columnOrGroup)) {\n      const children = this.columnOrGroup.getLeafColumns();\n      if (!children.length) {\n        return;\n      }\n      if (children.length > 1) {\n        _setAriaColSpan(this.ariaEl, children.length);\n      }\n    }\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/abstractCell/abstractHeaderCellCtrl.ts\nvar instanceIdSequence4 = 0;\nvar DOM_DATA_KEY_HEADER_CTRL = \"headerCtrl\";\nvar AbstractHeaderCellCtrl = class extends BeanStub {\n  constructor(column, rowCtrl) {\n    super();\n    this.column = column;\n    this.rowCtrl = rowCtrl;\n    this.resizeToggleTimeout = 0;\n    this.resizeMultiplier = 1;\n    this.resizeFeature = null;\n    this.lastFocusEvent = null;\n    this.dragSource = null;\n    this.instanceId = column.getUniqueId() + \"-\" + instanceIdSequence4++;\n  }\n  postConstruct() {\n    const refreshTabIndex = this.refreshTabIndex.bind(this);\n    this.addManagedPropertyListeners([\"suppressHeaderFocus\"], refreshTabIndex);\n    this.addManagedEventListeners({\n      overlayExclusiveChanged: refreshTabIndex\n    });\n  }\n  shouldStopEventPropagation(event) {\n    const { headerRowIndex, column } = this.beans.focusSvc.focusedHeader;\n    const colDef = column.getDefinition();\n    const colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;\n    if (!_exists(colDefFunc)) {\n      return false;\n    }\n    const params = _addGridCommonParams(this.gos, {\n      colDef,\n      column,\n      headerRowIndex,\n      event\n    });\n    return !!colDefFunc(params);\n  }\n  getWrapperHasFocus() {\n    const activeEl = _getActiveDomElement(this.beans);\n    return activeEl === this.eGui;\n  }\n  setGui(eGui, compBean) {\n    this.eGui = eGui;\n    this.addDomData(compBean);\n    compBean.addManagedListeners(this.beans.eventSvc, {\n      displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this)\n    });\n    compBean.addManagedElementListeners(this.eGui, {\n      focus: this.onGuiFocus.bind(this)\n    });\n    this.onDisplayedColumnsChanged();\n    this.refreshTabIndex();\n  }\n  refreshHeaderStyles() {\n    const colDef = this.column.getDefinition();\n    if (!colDef) {\n      return;\n    }\n    const { headerStyle } = colDef;\n    let styles;\n    if (typeof headerStyle === \"function\") {\n      const cellStyleParams = this.getHeaderClassParams();\n      styles = headerStyle(cellStyleParams);\n    } else {\n      styles = headerStyle;\n    }\n    if (styles) {\n      this.comp.setUserStyles(styles);\n    }\n  }\n  onGuiFocus() {\n    this.eventSvc.dispatchEvent({\n      type: \"headerFocused\",\n      column: this.column\n    });\n  }\n  setupAutoHeight(params) {\n    const { wrapperElement, checkMeasuringCallback, compBean } = params;\n    const { beans } = this;\n    const measureHeight = (timesCalled) => {\n      if (!this.isAlive() || !compBean.isAlive()) {\n        return;\n      }\n      const { paddingTop, paddingBottom, borderBottomWidth, borderTopWidth } = _getElementSize(this.eGui);\n      const extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n      const wrapperHeight = wrapperElement.offsetHeight;\n      const autoHeight = wrapperHeight + extraHeight;\n      if (timesCalled < 5) {\n        const doc = _getDocument(beans);\n        const notYetInDom = !doc || !doc.contains(wrapperElement);\n        const possiblyNoContentYet = autoHeight == 0;\n        if (notYetInDom || possiblyNoContentYet) {\n          _batchCall(() => measureHeight(timesCalled + 1), \"raf\", beans);\n          return;\n        }\n      }\n      this.setColHeaderHeight(this.column, autoHeight);\n    };\n    let isMeasuring = false;\n    let stopResizeObserver;\n    const checkMeasuring = () => {\n      const newValue = this.column.isAutoHeaderHeight();\n      if (newValue && !isMeasuring) {\n        startMeasuring();\n      }\n      if (!newValue && isMeasuring) {\n        stopMeasuring();\n      }\n    };\n    const startMeasuring = () => {\n      isMeasuring = true;\n      measureHeight(0);\n      this.comp.toggleCss(\"ag-header-cell-auto-height\", true);\n      stopResizeObserver = _observeResize(this.beans, wrapperElement, () => measureHeight(0));\n    };\n    const stopMeasuring = () => {\n      isMeasuring = false;\n      if (stopResizeObserver) {\n        stopResizeObserver();\n      }\n      this.comp.toggleCss(\"ag-header-cell-auto-height\", false);\n      stopResizeObserver = void 0;\n    };\n    checkMeasuring();\n    compBean.addDestroyFunc(() => stopMeasuring());\n    compBean.addManagedListeners(this.column, { widthChanged: () => isMeasuring && measureHeight(0) });\n    compBean.addManagedEventListeners({\n      sortChanged: () => {\n        if (isMeasuring) {\n          window.setTimeout(() => measureHeight(0));\n        }\n      }\n    });\n    if (checkMeasuringCallback) {\n      checkMeasuringCallback(checkMeasuring);\n    }\n  }\n  onDisplayedColumnsChanged() {\n    const { comp, column, beans, eGui } = this;\n    if (!comp || !column || !eGui) {\n      return;\n    }\n    refreshFirstAndLastStyles(comp, column, beans.visibleCols);\n    _setAriaColIndex(eGui, beans.visibleCols.getAriaColIndex(column));\n  }\n  addResizeAndMoveKeyboardListeners(compBean) {\n    compBean.addManagedListeners(this.eGui, {\n      keydown: this.onGuiKeyDown.bind(this),\n      keyup: this.onGuiKeyUp.bind(this)\n    });\n  }\n  refreshTabIndex() {\n    const suppressHeaderFocus = _isHeaderFocusSuppressed(this.beans);\n    if (this.eGui) {\n      _addOrRemoveAttribute(this.eGui, \"tabindex\", suppressHeaderFocus ? null : \"-1\");\n    }\n  }\n  onGuiKeyDown(e) {\n    const activeEl = _getActiveDomElement(this.beans);\n    const isLeftOrRight = e.key === KeyCode.LEFT || e.key === KeyCode.RIGHT;\n    if (this.isResizing) {\n      e.preventDefault();\n      e.stopImmediatePropagation();\n    }\n    if (\n      // if elements within the header are focused, we don't process the event\n      activeEl !== this.eGui || // if shiftKey and altKey are not pressed, it's cell navigation so we don't process the event\n      !e.shiftKey && !e.altKey\n    ) {\n      return;\n    }\n    if (this.isResizing || isLeftOrRight) {\n      e.preventDefault();\n      e.stopImmediatePropagation();\n    }\n    if (!isLeftOrRight) {\n      return;\n    }\n    const isLeft = e.key === KeyCode.LEFT !== this.gos.get(\"enableRtl\");\n    const direction = isLeft ? \"left\" : \"right\";\n    if (e.altKey) {\n      this.isResizing = true;\n      this.resizeMultiplier += 1;\n      const diff = this.getViewportAdjustedResizeDiff(e);\n      this.resizeHeader(diff, e.shiftKey);\n      this.resizeFeature?.toggleColumnResizing(true);\n    } else {\n      this.moveHeader(direction);\n    }\n  }\n  moveHeader(hDirection) {\n    this.beans.colMoves?.moveHeader(hDirection, this.eGui, this.column, this.rowCtrl.pinned, this);\n  }\n  getViewportAdjustedResizeDiff(e) {\n    const diff = this.getResizeDiff(e);\n    const { pinnedCols } = this.beans;\n    return pinnedCols ? pinnedCols.getHeaderResizeDiff(diff, this.column) : diff;\n  }\n  getResizeDiff(e) {\n    const { gos, column } = this;\n    let isLeft = e.key === KeyCode.LEFT !== gos.get(\"enableRtl\");\n    const pinned = column.getPinned();\n    const isRtl = gos.get(\"enableRtl\");\n    if (pinned) {\n      if (isRtl !== (pinned === \"right\")) {\n        isLeft = !isLeft;\n      }\n    }\n    return (isLeft ? -1 : 1) * this.resizeMultiplier;\n  }\n  onGuiKeyUp() {\n    if (!this.isResizing) {\n      return;\n    }\n    if (this.resizeToggleTimeout) {\n      window.clearTimeout(this.resizeToggleTimeout);\n      this.resizeToggleTimeout = 0;\n    }\n    this.isResizing = false;\n    this.resizeMultiplier = 1;\n    this.resizeToggleTimeout = window.setTimeout(() => {\n      this.resizeFeature?.toggleColumnResizing(false);\n    }, 150);\n  }\n  handleKeyDown(e) {\n    const wrapperHasFocus = this.getWrapperHasFocus();\n    switch (e.key) {\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAGE_HOME:\n      case KeyCode.PAGE_END:\n        if (wrapperHasFocus) {\n          e.preventDefault();\n        }\n    }\n  }\n  addDomData(compBean) {\n    const key = DOM_DATA_KEY_HEADER_CTRL;\n    const { eGui, gos } = this;\n    _setDomData(gos, eGui, key, this);\n    compBean.addDestroyFunc(() => _setDomData(gos, eGui, key, null));\n  }\n  focus(event) {\n    const { eGui } = this;\n    if (!eGui) {\n      return false;\n    }\n    this.lastFocusEvent = event || null;\n    eGui.focus();\n    return true;\n  }\n  focusThis() {\n    this.beans.focusSvc.focusedHeader = { headerRowIndex: this.rowCtrl.rowIndex, column: this.column };\n  }\n  removeDragSource() {\n    if (this.dragSource) {\n      this.beans.dragAndDrop?.removeDragSource(this.dragSource);\n      this.dragSource = null;\n    }\n  }\n  handleContextMenuMouseEvent(mouseEvent, touchEvent, column) {\n    const event = mouseEvent ?? touchEvent;\n    const { menuSvc, gos } = this.beans;\n    if (gos.get(\"preventDefaultOnContextMenu\")) {\n      event.preventDefault();\n    }\n    if (menuSvc?.isHeaderContextMenuEnabled(column)) {\n      menuSvc.showHeaderContextMenu(column, mouseEvent, touchEvent);\n    }\n    this.dispatchColumnMouseEvent(\"columnHeaderContextMenu\", column);\n  }\n  dispatchColumnMouseEvent(eventType, column) {\n    this.eventSvc.dispatchEvent({\n      type: eventType,\n      column\n    });\n  }\n  setColHeaderHeight(col, height) {\n    if (!col.setAutoHeaderHeight(height)) {\n      return;\n    }\n    const { eventSvc } = this;\n    if (col.isColumn) {\n      eventSvc.dispatchEvent({\n        type: \"columnHeaderHeightChanged\",\n        column: col,\n        columns: [col],\n        source: \"autosizeColumnHeaderHeight\"\n      });\n    } else {\n      eventSvc.dispatchEvent({\n        type: \"columnGroupHeaderHeightChanged\",\n        columnGroup: col,\n        source: \"autosizeColumnGroupHeaderHeight\"\n      });\n    }\n  }\n  clearComponent() {\n    this.removeDragSource();\n    this.resizeFeature = null;\n    this.comp = null;\n    this.eGui = null;\n  }\n  destroy() {\n    super.destroy();\n    this.column = null;\n    this.lastFocusEvent = null;\n    this.rowCtrl = null;\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/column/headerCellCtrl.ts\nvar HeaderCellCtrl = class extends AbstractHeaderCellCtrl {\n  constructor() {\n    super(...arguments);\n    this.refreshFunctions = {};\n    this.userHeaderClasses = /* @__PURE__ */ new Set();\n    this.ariaDescriptionProperties = /* @__PURE__ */ new Map();\n  }\n  setComp(comp, eGui, eResize, eHeaderCompWrapper, compBeanInput) {\n    this.comp = comp;\n    const { rowCtrl, column, beans } = this;\n    const { colResize, context, colHover, rangeSvc } = beans;\n    const compBean = setupCompBean(this, context, compBeanInput);\n    this.setGui(eGui, compBean);\n    this.updateState();\n    this.setupWidth(compBean);\n    this.setupMovingCss(compBean);\n    this.setupMenuClass(compBean);\n    this.setupSortableClass(compBean);\n    this.setupWrapTextClass();\n    this.refreshSpanHeaderHeight();\n    this.setupAutoHeight({\n      wrapperElement: eHeaderCompWrapper,\n      checkMeasuringCallback: (checkMeasuring) => this.setRefreshFunction(\"measuring\", checkMeasuring),\n      compBean\n    });\n    this.addColumnHoverListener(compBean);\n    this.setupFilterClass(compBean);\n    this.setupStylesFromColDef();\n    this.setupClassesFromColDef();\n    this.setupTooltip();\n    this.addActiveHeaderMouseListeners(compBean);\n    this.setupSelectAll(compBean);\n    this.setupUserComp();\n    this.refreshAria();\n    if (colResize) {\n      this.resizeFeature = compBean.createManagedBean(\n        colResize.createResizeFeature(rowCtrl.pinned, column, eResize, comp, this)\n      );\n    } else {\n      _setDisplayed(eResize, false);\n    }\n    colHover?.createHoverFeature(compBean, [column], eGui);\n    rangeSvc?.createRangeHighlightFeature(compBean, column, comp);\n    compBean.createManagedBean(new SetLeftFeature(column, eGui, beans));\n    compBean.createManagedBean(\n      new ManagedFocusFeature(eGui, {\n        shouldStopEventPropagation: (e) => this.shouldStopEventPropagation(e),\n        onTabKeyDown: () => null,\n        handleKeyDown: this.handleKeyDown.bind(this),\n        onFocusIn: this.onFocusIn.bind(this),\n        onFocusOut: this.onFocusOut.bind(this)\n      })\n    );\n    this.addResizeAndMoveKeyboardListeners(compBean);\n    compBean.addManagedPropertyListeners(\n      [\"suppressMovableColumns\", \"suppressMenuHide\", \"suppressAggFuncInHeader\", \"enableAdvancedFilter\"],\n      () => this.refresh()\n    );\n    compBean.addManagedListeners(column, { colDefChanged: () => this.refresh() });\n    compBean.addManagedListeners(column, { headerHighlightChanged: this.onHeaderHighlightChanged.bind(this) });\n    const listener = () => this.checkDisplayName();\n    compBean.addManagedEventListeners({\n      columnValueChanged: listener,\n      columnRowGroupChanged: listener,\n      columnPivotChanged: listener,\n      headerHeightChanged: this.onHeaderHeightChanged.bind(this)\n    });\n    compBean.addDestroyFunc(() => {\n      this.refreshFunctions = {};\n      this.selectAllFeature = null;\n      this.dragSourceElement = void 0;\n      this.userCompDetails = null;\n      this.userHeaderClasses.clear();\n      this.ariaDescriptionProperties.clear();\n      this.clearComponent();\n    });\n  }\n  resizeHeader(delta, shiftKey) {\n    this.beans.colResize?.resizeHeader(this.column, delta, shiftKey);\n  }\n  getHeaderClassParams() {\n    const { column, beans } = this;\n    const colDef = column.colDef;\n    return _addGridCommonParams(beans.gos, {\n      colDef,\n      column,\n      floatingFilter: false\n    });\n  }\n  setupUserComp() {\n    const compDetails = this.lookupUserCompDetails();\n    if (compDetails) {\n      this.setCompDetails(compDetails);\n    }\n  }\n  setCompDetails(compDetails) {\n    this.userCompDetails = compDetails;\n    this.comp.setUserCompDetails(compDetails);\n  }\n  lookupUserCompDetails() {\n    const params = this.createParams();\n    const colDef = this.column.getColDef();\n    return _getHeaderCompDetails(this.beans.userCompFactory, colDef, params);\n  }\n  createParams() {\n    const { menuSvc, sortSvc, colFilter, gos } = this.beans;\n    const params = _addGridCommonParams(gos, {\n      column: this.column,\n      displayName: this.displayName,\n      enableSorting: this.column.isSortable(),\n      enableMenu: this.menuEnabled,\n      enableFilterButton: this.openFilterEnabled && !!menuSvc?.isHeaderFilterButtonEnabled(this.column),\n      enableFilterIcon: !!colFilter && (!this.openFilterEnabled || _isLegacyMenuEnabled(this.gos)),\n      showColumnMenu: (buttonElement, onClosedCallback) => {\n        menuSvc?.showColumnMenu({\n          column: this.column,\n          buttonElement,\n          positionBy: \"button\",\n          onClosedCallback\n        });\n      },\n      showColumnMenuAfterMouseClick: (mouseEvent, onClosedCallback) => {\n        menuSvc?.showColumnMenu({\n          column: this.column,\n          mouseEvent,\n          positionBy: \"mouse\",\n          onClosedCallback\n        });\n      },\n      showFilter: (buttonElement) => {\n        menuSvc?.showFilterMenu({\n          column: this.column,\n          buttonElement,\n          containerType: \"columnFilter\",\n          positionBy: \"button\"\n        });\n      },\n      progressSort: (multiSort) => {\n        sortSvc?.progressSort(this.column, !!multiSort, \"uiColumnSorted\");\n      },\n      setSort: (sort, multiSort) => {\n        sortSvc?.setSortForColumn(this.column, sort, !!multiSort, \"uiColumnSorted\");\n      },\n      eGridHeader: this.eGui,\n      setTooltip: (value, shouldDisplayTooltip) => {\n        gos.assertModuleRegistered(\"Tooltip\", 3);\n        this.setupTooltip(value, shouldDisplayTooltip);\n      }\n    });\n    return params;\n  }\n  setupSelectAll(compBean) {\n    const { selectionSvc } = this.beans;\n    if (!selectionSvc) {\n      return;\n    }\n    this.selectAllFeature = compBean.createManagedBean(selectionSvc.createSelectAllFeature(this.column));\n    this.selectAllFeature.setComp(this);\n  }\n  getSelectAllGui() {\n    return this.selectAllFeature?.getCheckboxGui();\n  }\n  handleKeyDown(e) {\n    super.handleKeyDown(e);\n    if (e.key === KeyCode.SPACE) {\n      this.selectAllFeature?.onSpaceKeyDown(e);\n    }\n    if (e.key === KeyCode.ENTER) {\n      this.onEnterKeyDown(e);\n    }\n    if (e.key === KeyCode.DOWN && e.altKey) {\n      this.showMenuOnKeyPress(e, false);\n    }\n  }\n  onEnterKeyDown(e) {\n    if (e.ctrlKey || e.metaKey) {\n      this.showMenuOnKeyPress(e, true);\n    } else if (this.sortable) {\n      this.beans.sortSvc?.progressSort(this.column, e.shiftKey, \"uiColumnSorted\");\n    }\n  }\n  showMenuOnKeyPress(e, isFilterShortcut) {\n    const headerComp = this.comp.getUserCompInstance();\n    if (!isHeaderComp(headerComp)) {\n      return;\n    }\n    if (headerComp.onMenuKeyboardShortcut(isFilterShortcut)) {\n      e.preventDefault();\n    }\n  }\n  onFocusIn(e) {\n    if (!this.eGui.contains(e.relatedTarget)) {\n      this.focusThis();\n      this.announceAriaDescription();\n    }\n    if (_isKeyboardMode()) {\n      this.setActiveHeader(true);\n    }\n  }\n  onFocusOut(e) {\n    if (this.eGui.contains(e.relatedTarget)) {\n      return;\n    }\n    this.setActiveHeader(false);\n  }\n  setupTooltip(value, shouldDisplayTooltip) {\n    this.tooltipFeature = this.beans.tooltipSvc?.setupHeaderTooltip(\n      this.tooltipFeature,\n      this,\n      value,\n      shouldDisplayTooltip\n    );\n  }\n  setupStylesFromColDef() {\n    this.setRefreshFunction(\"headerStyles\", this.refreshHeaderStyles.bind(this));\n    this.refreshHeaderStyles();\n  }\n  setupClassesFromColDef() {\n    const refreshHeaderClasses = () => {\n      const colDef = this.column.getColDef();\n      const classes = _getHeaderClassesFromColDef(colDef, this.gos, this.column, null);\n      const oldClasses = this.userHeaderClasses;\n      this.userHeaderClasses = new Set(classes);\n      classes.forEach((c) => {\n        if (oldClasses.has(c)) {\n          oldClasses.delete(c);\n        } else {\n          this.comp.toggleCss(c, true);\n        }\n      });\n      oldClasses.forEach((c) => this.comp.toggleCss(c, false));\n    };\n    this.setRefreshFunction(\"headerClasses\", refreshHeaderClasses);\n    refreshHeaderClasses();\n  }\n  setDragSource(eSource) {\n    this.dragSourceElement = eSource;\n    this.removeDragSource();\n    if (!eSource || !this.draggable) {\n      return;\n    }\n    this.dragSource = this.beans.colMoves?.setDragSourceForHeader(eSource, this.column, this.displayName) ?? null;\n  }\n  updateState() {\n    const { menuSvc } = this.beans;\n    this.menuEnabled = !!menuSvc?.isColumnMenuInHeaderEnabled(this.column);\n    this.openFilterEnabled = !!menuSvc?.isFilterMenuInHeaderEnabled(this.column);\n    this.sortable = this.column.isSortable();\n    this.displayName = this.calculateDisplayName();\n    this.draggable = this.workOutDraggable();\n  }\n  setRefreshFunction(name, func) {\n    this.refreshFunctions[name] = func;\n  }\n  refresh() {\n    this.updateState();\n    this.refreshHeaderComp();\n    this.refreshAria();\n    Object.values(this.refreshFunctions).forEach((f) => f());\n  }\n  refreshHeaderComp() {\n    const newCompDetails = this.lookupUserCompDetails();\n    if (!newCompDetails) {\n      return;\n    }\n    const compInstance = this.comp.getUserCompInstance();\n    const attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;\n    const headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;\n    if (headerCompRefreshed) {\n      this.setDragSource(this.dragSourceElement);\n    } else {\n      this.setCompDetails(newCompDetails);\n    }\n  }\n  attemptHeaderCompRefresh(params) {\n    const headerComp = this.comp.getUserCompInstance();\n    if (!headerComp) {\n      return false;\n    }\n    if (!headerComp.refresh) {\n      return false;\n    }\n    const res = headerComp.refresh(params);\n    return res;\n  }\n  calculateDisplayName() {\n    return this.beans.colNames.getDisplayNameForColumn(this.column, \"header\", true);\n  }\n  checkDisplayName() {\n    if (this.displayName !== this.calculateDisplayName()) {\n      this.refresh();\n    }\n  }\n  workOutDraggable() {\n    const colDef = this.column.getColDef();\n    const isSuppressMovableColumns = this.gos.get(\"suppressMovableColumns\");\n    const colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;\n    return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;\n  }\n  setupWidth(compBean) {\n    const listener = () => {\n      const columnWidth = this.column.getActualWidth();\n      this.comp.setWidth(`${columnWidth}px`);\n    };\n    compBean.addManagedListeners(this.column, { widthChanged: listener });\n    listener();\n  }\n  setupMovingCss(compBean) {\n    const listener = () => {\n      this.comp.toggleCss(\"ag-header-cell-moving\", this.column.isMoving());\n    };\n    compBean.addManagedListeners(this.column, { movingChanged: listener });\n    listener();\n  }\n  setupMenuClass(compBean) {\n    const listener = () => {\n      this.comp?.toggleCss(\"ag-column-menu-visible\", this.column.isMenuVisible());\n    };\n    compBean.addManagedListeners(this.column, { menuVisibleChanged: listener });\n    listener();\n  }\n  setupSortableClass(compBean) {\n    const updateSortableCssClass = () => {\n      this.comp.toggleCss(\"ag-header-cell-sortable\", !!this.sortable);\n    };\n    updateSortableCssClass();\n    this.setRefreshFunction(\"updateSortable\", updateSortableCssClass);\n    compBean.addManagedEventListeners({ sortChanged: this.refreshAriaSort.bind(this) });\n  }\n  setupFilterClass(compBean) {\n    const listener = () => {\n      const isFilterActive = this.column.isFilterActive();\n      this.comp.toggleCss(\"ag-header-cell-filtered\", isFilterActive);\n      this.refreshAria();\n    };\n    compBean.addManagedListeners(this.column, { filterActiveChanged: listener });\n    listener();\n  }\n  setupWrapTextClass() {\n    const listener = () => {\n      const wrapText = !!this.column.getColDef().wrapHeaderText;\n      this.comp.toggleCss(\"ag-header-cell-wrap-text\", wrapText);\n    };\n    listener();\n    this.setRefreshFunction(\"wrapText\", listener);\n  }\n  onHeaderHighlightChanged() {\n    const highlighted = this.column.getHighlighted();\n    const beforeOn = highlighted === 0 /* Before */;\n    const afterOn = highlighted === 1 /* After */;\n    this.comp.toggleCss(\"ag-header-highlight-before\", beforeOn);\n    this.comp.toggleCss(\"ag-header-highlight-after\", afterOn);\n  }\n  onDisplayedColumnsChanged() {\n    super.onDisplayedColumnsChanged();\n    if (!this.isAlive()) {\n      return;\n    }\n    this.onHeaderHeightChanged();\n  }\n  onHeaderHeightChanged() {\n    this.refreshSpanHeaderHeight();\n  }\n  refreshSpanHeaderHeight() {\n    const { eGui, column, comp, beans } = this;\n    const groupHeaderHeight = getGroupRowsHeight(this.beans);\n    const isZeroGroupHeight = groupHeaderHeight.reduce((total, next) => total += next, 0) === 0;\n    comp.toggleCss(\"ag-header-parent-hidden\", isZeroGroupHeight);\n    if (!column.isSpanHeaderHeight()) {\n      eGui.style.removeProperty(\"top\");\n      eGui.style.removeProperty(\"height\");\n      comp.toggleCss(\"ag-header-span-height\", false);\n      comp.toggleCss(\"ag-header-span-total\", false);\n      return;\n    }\n    const { numberOfParents, isSpanningTotal } = this.column.getColumnGroupPaddingInfo();\n    comp.toggleCss(\"ag-header-span-height\", numberOfParents > 0);\n    const headerHeight = getColumnHeaderRowHeight(beans);\n    if (numberOfParents === 0) {\n      comp.toggleCss(\"ag-header-span-total\", false);\n      eGui.style.setProperty(\"top\", `0px`);\n      eGui.style.setProperty(\"height\", `${headerHeight}px`);\n      return;\n    }\n    comp.toggleCss(\"ag-header-span-total\", isSpanningTotal);\n    let extraHeight = 0;\n    for (let i = 0; i < numberOfParents; i++) {\n      extraHeight += groupHeaderHeight[groupHeaderHeight.length - 1 - i];\n    }\n    eGui.style.setProperty(\"top\", `${-extraHeight}px`);\n    eGui.style.setProperty(\"height\", `${headerHeight + extraHeight}px`);\n  }\n  refreshAriaSort() {\n    if (this.sortable) {\n      const translate = this.getLocaleTextFunc();\n      const sort = this.beans.sortSvc?.getDisplaySortForColumn(this.column) || null;\n      this.comp.setAriaSort(_getAriaSortState(sort));\n      this.setAriaDescriptionProperty(\"sort\", translate(\"ariaSortableColumn\", \"Press ENTER to sort\"));\n    } else {\n      this.comp.setAriaSort();\n      this.setAriaDescriptionProperty(\"sort\", null);\n    }\n  }\n  refreshAriaMenu() {\n    if (this.menuEnabled) {\n      const translate = this.getLocaleTextFunc();\n      this.setAriaDescriptionProperty(\"menu\", translate(\"ariaMenuColumn\", \"Press ALT DOWN to open column menu\"));\n    } else {\n      this.setAriaDescriptionProperty(\"menu\", null);\n    }\n  }\n  refreshAriaFilterButton() {\n    if (this.openFilterEnabled && !_isLegacyMenuEnabled(this.gos)) {\n      const translate = this.getLocaleTextFunc();\n      this.setAriaDescriptionProperty(\n        \"filterButton\",\n        translate(\"ariaFilterColumn\", \"Press CTRL ENTER to open filter\")\n      );\n    } else {\n      this.setAriaDescriptionProperty(\"filterButton\", null);\n    }\n  }\n  refreshAriaFiltered() {\n    const translate = this.getLocaleTextFunc();\n    const isFilterActive = this.column.isFilterActive();\n    if (isFilterActive) {\n      this.setAriaDescriptionProperty(\"filter\", translate(\"ariaColumnFiltered\", \"Column Filtered\"));\n    } else {\n      this.setAriaDescriptionProperty(\"filter\", null);\n    }\n  }\n  setAriaDescriptionProperty(property, value) {\n    if (value != null) {\n      this.ariaDescriptionProperties.set(property, value);\n    } else {\n      this.ariaDescriptionProperties.delete(property);\n    }\n  }\n  announceAriaDescription() {\n    if (!this.eGui.contains(_getActiveDomElement(this.beans))) {\n      return;\n    }\n    const ariaDescription = Array.from(this.ariaDescriptionProperties.keys()).sort((a, b) => a === \"filter\" ? -1 : b.charCodeAt(0) - a.charCodeAt(0)).map((key) => this.ariaDescriptionProperties.get(key)).join(\". \");\n    this.beans.ariaAnnounce?.announceValue(ariaDescription, \"columnHeader\");\n  }\n  refreshAria() {\n    this.refreshAriaSort();\n    this.refreshAriaMenu();\n    this.refreshAriaFilterButton();\n    this.refreshAriaFiltered();\n  }\n  addColumnHoverListener(compBean) {\n    this.beans.colHover?.addHeaderColumnHoverListener(compBean, this.comp, this.column);\n  }\n  addActiveHeaderMouseListeners(compBean) {\n    const listener = (e) => this.handleMouseOverChange(e.type === \"mouseenter\");\n    const clickListener = () => {\n      this.setActiveHeader(true);\n      this.dispatchColumnMouseEvent(\"columnHeaderClicked\", this.column);\n    };\n    const contextMenuListener = (event) => this.handleContextMenuMouseEvent(event, void 0, this.column);\n    compBean.addManagedListeners(this.eGui, {\n      mouseenter: listener,\n      mouseleave: listener,\n      click: clickListener,\n      contextmenu: contextMenuListener\n    });\n  }\n  handleMouseOverChange(isMouseOver) {\n    this.setActiveHeader(isMouseOver);\n    this.eventSvc.dispatchEvent({\n      type: isMouseOver ? \"columnHeaderMouseOver\" : \"columnHeaderMouseLeave\",\n      column: this.column\n    });\n  }\n  setActiveHeader(active) {\n    this.comp.toggleCss(\"ag-header-active\", active);\n  }\n  getAnchorElementForMenu(isFilter) {\n    const headerComp = this.comp.getUserCompInstance();\n    if (isHeaderComp(headerComp)) {\n      return headerComp.getAnchorElementForMenu(isFilter);\n    }\n    return this.eGui;\n  }\n  destroy() {\n    this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n    super.destroy();\n  }\n};\nfunction isHeaderComp(headerComp) {\n  return typeof headerComp?.getAnchorElementForMenu === \"function\" && typeof headerComp.onMenuKeyboardShortcut === \"function\";\n}\n\n// packages/ag-grid-community/src/headerRendering/row/headerRowCtrl.ts\nvar instanceIdSequence5 = 0;\nvar HeaderRowCtrl = class extends BeanStub {\n  constructor(rowIndex, pinned, type) {\n    super();\n    this.rowIndex = rowIndex;\n    this.pinned = pinned;\n    this.type = type;\n    this.instanceId = instanceIdSequence5++;\n    this.allCtrls = [];\n    const typeClass = type == \"group\" ? `ag-header-row-column-group` : type == \"filter\" ? `ag-header-row-column-filter` : `ag-header-row-column`;\n    this.headerRowClass = `ag-header-row ${typeClass}`;\n  }\n  postConstruct() {\n    this.isPrintLayout = _isDomLayout(this.gos, \"print\");\n    this.isEnsureDomOrder = this.gos.get(\"ensureDomOrder\");\n  }\n  /** Checks that every header cell that is currently visible has been rendered.\n   * Can only be false under some circumstances when using React\n   */\n  areCellsRendered() {\n    if (!this.comp) {\n      return false;\n    }\n    return this.allCtrls.every((ctrl) => ctrl.eGui != null);\n  }\n  /**\n   *\n   * @param comp Proxy to the actual component\n   * @param initCompState Should the component be initialised with the current state of the controller. Default: true\n   */\n  setComp(comp, compBean, initCompState = true) {\n    this.comp = comp;\n    compBean = setupCompBean(this, this.beans.context, compBean);\n    if (initCompState) {\n      this.onRowHeightChanged();\n      this.onVirtualColumnsChanged();\n    }\n    this.setWidth();\n    this.addEventListeners(compBean);\n  }\n  getAriaRowIndex() {\n    return this.rowIndex + 1;\n  }\n  addEventListeners(compBean) {\n    const onHeightChanged = this.onRowHeightChanged.bind(this);\n    const onDisplayedColumnsChanged = this.onDisplayedColumnsChanged.bind(this);\n    compBean.addManagedEventListeners({\n      columnResized: this.setWidth.bind(this),\n      displayedColumnsChanged: onDisplayedColumnsChanged,\n      virtualColumnsChanged: (params) => this.onVirtualColumnsChanged(params.afterScroll),\n      columnGroupHeaderHeightChanged: onHeightChanged,\n      columnHeaderHeightChanged: onHeightChanged,\n      gridStylesChanged: onHeightChanged,\n      advancedFilterEnabledChanged: onHeightChanged\n    });\n    compBean.addManagedPropertyListener(\"domLayout\", onDisplayedColumnsChanged);\n    compBean.addManagedPropertyListener(\"ensureDomOrder\", (e) => this.isEnsureDomOrder = e.currentValue);\n    compBean.addManagedPropertyListeners(\n      [\n        \"headerHeight\",\n        \"pivotHeaderHeight\",\n        \"groupHeaderHeight\",\n        \"pivotGroupHeaderHeight\",\n        \"floatingFiltersHeight\"\n      ],\n      onHeightChanged\n    );\n  }\n  onDisplayedColumnsChanged() {\n    this.isPrintLayout = _isDomLayout(this.gos, \"print\");\n    this.onVirtualColumnsChanged();\n    this.setWidth();\n    this.onRowHeightChanged();\n  }\n  setWidth() {\n    const width = this.getWidthForRow();\n    this.comp.setWidth(`${width}px`);\n  }\n  getWidthForRow() {\n    const { visibleCols } = this.beans;\n    if (this.isPrintLayout) {\n      const pinned = this.pinned != null;\n      if (pinned) {\n        return 0;\n      }\n      return visibleCols.getContainerWidth(\"right\") + visibleCols.getContainerWidth(\"left\") + visibleCols.getContainerWidth(null);\n    }\n    return visibleCols.getContainerWidth(this.pinned);\n  }\n  onRowHeightChanged() {\n    const { topOffset, rowHeight } = this.getTopAndHeight();\n    this.comp.setTop(topOffset + \"px\");\n    this.comp.setHeight(rowHeight + \"px\");\n  }\n  getTopAndHeight() {\n    const { filterManager } = this.beans;\n    const sizes = [];\n    const groupHeadersHeight = getGroupRowsHeight(this.beans);\n    const headerHeight = getColumnHeaderRowHeight(this.beans);\n    sizes.push(...groupHeadersHeight);\n    sizes.push(headerHeight);\n    if (filterManager?.hasFloatingFilters()) {\n      sizes.push(getFloatingFiltersHeight(this.beans));\n    }\n    let topOffset = 0;\n    for (let i = 0; i < this.rowIndex; i++) {\n      topOffset += sizes[i];\n    }\n    const rowHeight = sizes[this.rowIndex];\n    return { topOffset, rowHeight };\n  }\n  onVirtualColumnsChanged(afterScroll = false) {\n    const ctrlsToDisplay = this.getUpdatedHeaderCtrls();\n    const forceOrder = this.isEnsureDomOrder || this.isPrintLayout;\n    this.comp.setHeaderCtrls(ctrlsToDisplay, forceOrder, afterScroll);\n  }\n  /**\n   * Recycles the header cell ctrls and creates new ones for the columns in the viewport\n   * @returns The updated header cell ctrls\n   */\n  getUpdatedHeaderCtrls() {\n    const oldCtrls = this.ctrlsById;\n    this.ctrlsById = /* @__PURE__ */ new Map();\n    const columns = this.getColumnsInViewport();\n    for (const child of columns) {\n      this.recycleAndCreateHeaderCtrls(child, this.ctrlsById, oldCtrls);\n    }\n    const isFocusedAndDisplayed = (ctrl) => {\n      const { focusSvc, visibleCols } = this.beans;\n      const isFocused = focusSvc.isHeaderWrapperFocused(ctrl);\n      if (!isFocused) {\n        return false;\n      }\n      const isDisplayed = visibleCols.isVisible(ctrl.column);\n      return isDisplayed;\n    };\n    if (oldCtrls) {\n      for (const [id, oldCtrl] of oldCtrls) {\n        const keepCtrl = isFocusedAndDisplayed(oldCtrl);\n        if (keepCtrl) {\n          this.ctrlsById.set(id, oldCtrl);\n        } else {\n          this.destroyBean(oldCtrl);\n        }\n      }\n    }\n    this.allCtrls = Array.from(this.ctrlsById.values());\n    return this.allCtrls;\n  }\n  /** Get the current header cell ctrls */\n  getHeaderCellCtrls() {\n    return this.allCtrls;\n  }\n  recycleAndCreateHeaderCtrls(headerColumn, currCtrls, oldCtrls) {\n    if (headerColumn.isEmptyGroup()) {\n      return;\n    }\n    const idOfChild = headerColumn.getUniqueId();\n    let headerCtrl;\n    if (oldCtrls) {\n      headerCtrl = oldCtrls.get(idOfChild);\n      oldCtrls.delete(idOfChild);\n    }\n    const forOldColumn = headerCtrl && headerCtrl.column != headerColumn;\n    if (forOldColumn) {\n      this.destroyBean(headerCtrl);\n      headerCtrl = void 0;\n    }\n    if (headerCtrl == null) {\n      switch (this.type) {\n        case \"filter\": {\n          headerCtrl = this.createBean(\n            this.beans.registry.createDynamicBean(\n              \"headerFilterCellCtrl\",\n              true,\n              headerColumn,\n              this\n            )\n          );\n          break;\n        }\n        case \"group\":\n          headerCtrl = this.createBean(\n            this.beans.registry.createDynamicBean(\n              \"headerGroupCellCtrl\",\n              true,\n              headerColumn,\n              this\n            )\n          );\n          break;\n        default:\n          headerCtrl = this.createBean(new HeaderCellCtrl(headerColumn, this));\n          break;\n      }\n    }\n    currCtrls.set(idOfChild, headerCtrl);\n  }\n  getColumnsInViewport() {\n    return this.isPrintLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();\n  }\n  getColumnsInViewportPrintLayout() {\n    if (this.pinned != null) {\n      return [];\n    }\n    let viewportColumns = [];\n    const actualDepth = this.getActualDepth();\n    const { colViewport } = this.beans;\n    [\"left\", null, \"right\"].forEach((pinned) => {\n      const items = colViewport.getHeadersToRender(pinned, actualDepth);\n      viewportColumns = viewportColumns.concat(items);\n    });\n    return viewportColumns;\n  }\n  getActualDepth() {\n    return this.type == \"filter\" ? this.rowIndex - 1 : this.rowIndex;\n  }\n  getColumnsInViewportNormalLayout() {\n    return this.beans.colViewport.getHeadersToRender(this.pinned, this.getActualDepth());\n  }\n  focusHeader(column, event) {\n    const ctrl = this.allCtrls.find((ctrl2) => ctrl2.column == column);\n    if (!ctrl) {\n      return false;\n    }\n    const focused = ctrl.focus(event);\n    return focused;\n  }\n  destroy() {\n    this.allCtrls = this.destroyBeans(this.allCtrls);\n    this.ctrlsById = void 0;\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/rowContainer/headerRowContainerCtrl.ts\nvar HeaderRowContainerCtrl = class extends BeanStub {\n  constructor(pinned) {\n    super();\n    this.pinned = pinned;\n    this.hidden = false;\n    this.includeFloatingFilter = false;\n    this.groupsRowCtrls = [];\n  }\n  setComp(comp, eGui) {\n    this.comp = comp;\n    this.eViewport = eGui;\n    const { pinnedCols, ctrlsSvc, colModel, colMoves, filterManager } = this.beans;\n    this.setupCenterWidth();\n    pinnedCols?.setupHeaderPinnedWidth(this);\n    this.setupDragAndDrop(colMoves, this.eViewport);\n    const onDisplayedColsChanged = this.onDisplayedColumnsChanged.bind(this, filterManager);\n    this.addManagedEventListeners({\n      gridColumnsChanged: this.onGridColumnsChanged.bind(this),\n      displayedColumnsChanged: onDisplayedColsChanged,\n      advancedFilterEnabledChanged: onDisplayedColsChanged\n    });\n    const headerType = `${typeof this.pinned === \"string\" ? this.pinned : \"center\"}Header`;\n    ctrlsSvc.register(headerType, this);\n    if (colModel.ready) {\n      this.refresh();\n    }\n  }\n  getAllCtrls() {\n    const res = [...this.groupsRowCtrls];\n    if (this.columnsRowCtrl) {\n      res.push(this.columnsRowCtrl);\n    }\n    if (this.filtersRowCtrl) {\n      res.push(this.filtersRowCtrl);\n    }\n    return res;\n  }\n  refresh(keepColumns = false) {\n    const { focusSvc, colModel, filterManager } = this.beans;\n    let sequence = 0;\n    const focusedHeaderPosition = focusSvc.getFocusHeaderToUseAfterRefresh();\n    const refreshColumnGroups = () => {\n      const groupRowCount = getHeaderRowCount(colModel) - 1;\n      this.groupsRowCtrls = this.destroyBeans(this.groupsRowCtrls);\n      for (let i = 0; i < groupRowCount; i++) {\n        const ctrl = this.createBean(new HeaderRowCtrl(sequence++, this.pinned, \"group\"));\n        this.groupsRowCtrls.push(ctrl);\n      }\n    };\n    const refreshColumns = () => {\n      const rowIndex = sequence++;\n      const needNewInstance = !this.hidden && (this.columnsRowCtrl == null || !keepColumns || this.columnsRowCtrl.rowIndex !== rowIndex);\n      const shouldDestroyInstance = needNewInstance || this.hidden;\n      if (shouldDestroyInstance) {\n        this.columnsRowCtrl = this.destroyBean(this.columnsRowCtrl);\n      }\n      if (needNewInstance) {\n        this.columnsRowCtrl = this.createBean(new HeaderRowCtrl(rowIndex, this.pinned, \"column\"));\n      }\n    };\n    const refreshFilters = () => {\n      this.includeFloatingFilter = !!filterManager?.hasFloatingFilters() && !this.hidden;\n      const destroyPreviousComp = () => {\n        this.filtersRowCtrl = this.destroyBean(this.filtersRowCtrl);\n      };\n      if (!this.includeFloatingFilter) {\n        destroyPreviousComp();\n        return;\n      }\n      const rowIndex = sequence++;\n      if (this.filtersRowCtrl) {\n        const rowIndexMismatch = this.filtersRowCtrl.rowIndex !== rowIndex;\n        if (!keepColumns || rowIndexMismatch) {\n          destroyPreviousComp();\n        }\n      }\n      if (!this.filtersRowCtrl) {\n        this.filtersRowCtrl = this.createBean(new HeaderRowCtrl(rowIndex, this.pinned, \"filter\"));\n      }\n    };\n    refreshColumnGroups();\n    refreshColumns();\n    refreshFilters();\n    const allCtrls = this.getAllCtrls();\n    this.comp.setCtrls(allCtrls);\n    this.restoreFocusOnHeader(focusSvc, focusedHeaderPosition);\n  }\n  getHeaderCtrlForColumn(column) {\n    const findCtrl = (ctrl) => ctrl?.getHeaderCellCtrls().find((ctrl2) => ctrl2.column === column);\n    if (isColumn(column)) {\n      return findCtrl(this.columnsRowCtrl);\n    }\n    if (this.groupsRowCtrls.length === 0) {\n      return;\n    }\n    for (let i = 0; i < this.groupsRowCtrls.length; i++) {\n      const ctrl = findCtrl(this.groupsRowCtrls[i]);\n      if (ctrl) {\n        return ctrl;\n      }\n    }\n  }\n  getHtmlElementForColumnHeader(column) {\n    return this.getHeaderCtrlForColumn(column)?.eGui ?? null;\n  }\n  getRowType(rowIndex) {\n    return this.getAllCtrls()[rowIndex]?.type;\n  }\n  focusHeader(rowIndex, column, event) {\n    const allCtrls = this.getAllCtrls();\n    const ctrl = allCtrls[rowIndex];\n    if (!ctrl) {\n      return false;\n    }\n    return ctrl.focusHeader(column, event);\n  }\n  getGroupRowCount() {\n    return this.groupsRowCtrls.length;\n  }\n  getGroupRowCtrlAtIndex(index) {\n    return this.groupsRowCtrls[index];\n  }\n  getRowCount() {\n    return this.groupsRowCtrls.length + (this.columnsRowCtrl ? 1 : 0) + (this.filtersRowCtrl ? 1 : 0);\n  }\n  setHorizontalScroll(offset) {\n    this.comp.setViewportScrollLeft(offset);\n  }\n  onScrollCallback(fn) {\n    this.addManagedElementListeners(this.eViewport, { scroll: fn });\n  }\n  destroy() {\n    this.filtersRowCtrl = this.destroyBean(this.filtersRowCtrl);\n    this.columnsRowCtrl = this.destroyBean(this.columnsRowCtrl);\n    this.groupsRowCtrls = this.destroyBeans(this.groupsRowCtrls);\n    super.destroy();\n  }\n  setupDragAndDrop(colMoves, dropContainer) {\n    const bodyDropTarget = colMoves?.createBodyDropTarget(this.pinned, dropContainer);\n    if (bodyDropTarget) {\n      this.createManagedBean(bodyDropTarget);\n    }\n  }\n  restoreFocusOnHeader(focusSvc, position) {\n    if (!position) {\n      return;\n    }\n    const { column } = position;\n    if (column.getPinned() != this.pinned) {\n      return;\n    }\n    focusSvc.focusHeaderPosition({ headerPosition: position });\n  }\n  // grid cols have changed - this also means the number of rows in the header can have\n  // changed. so we remove all the old rows and insert new ones for a complete refresh\n  onGridColumnsChanged() {\n    this.refresh(true);\n  }\n  onDisplayedColumnsChanged(filterManager) {\n    const includeFloatingFilter = !!filterManager?.hasFloatingFilters() && !this.hidden;\n    if (this.includeFloatingFilter !== includeFloatingFilter) {\n      this.refresh(true);\n    }\n  }\n  setupCenterWidth() {\n    if (this.pinned != null) {\n      return;\n    }\n    this.createManagedBean(new CenterWidthFeature((width) => this.comp.setCenterWidth(`${width}px`), true));\n  }\n};\n\n// packages/ag-grid-community/src/misc/menu/menuService.ts\nvar MenuService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"menuSvc\";\n  }\n  postConstruct() {\n    const { enterpriseMenuFactory, filterMenuFactory } = this.beans;\n    this.activeMenuFactory = enterpriseMenuFactory ?? filterMenuFactory;\n  }\n  showColumnMenu(params) {\n    this.showColumnMenuCommon(this.activeMenuFactory, params, \"columnMenu\");\n  }\n  showFilterMenu(params) {\n    const { enterpriseMenuFactory, filterMenuFactory } = this.beans;\n    const menuFactory = enterpriseMenuFactory && _isLegacyMenuEnabled(this.gos) ? enterpriseMenuFactory : filterMenuFactory;\n    this.showColumnMenuCommon(menuFactory, params, params.containerType, true);\n  }\n  showHeaderContextMenu(column, mouseEvent, touchEvent) {\n    this.activeMenuFactory?.showMenuAfterContextMenuEvent(column, mouseEvent, touchEvent);\n  }\n  hidePopupMenu() {\n    this.beans.contextMenuSvc?.hideActiveMenu();\n    this.activeMenuFactory?.hideActiveMenu();\n  }\n  isColumnMenuInHeaderEnabled(column) {\n    const { suppressHeaderMenuButton } = column.getColDef();\n    return !suppressHeaderMenuButton && !!this.activeMenuFactory?.isMenuEnabled(column) && (_isLegacyMenuEnabled(this.gos) || !!this.beans.enterpriseMenuFactory);\n  }\n  isFilterMenuInHeaderEnabled(column) {\n    return !column.getColDef().suppressHeaderFilterButton && !!this.beans.filterManager?.isFilterAllowed(column);\n  }\n  isHeaderContextMenuEnabled(column) {\n    const colDef = column && isColumn(column) ? column.getColDef() : column?.getColGroupDef();\n    return !colDef?.suppressHeaderContextMenu && this.gos.get(\"columnMenu\") === \"new\";\n  }\n  isHeaderMenuButtonAlwaysShowEnabled() {\n    return this.isSuppressMenuHide();\n  }\n  isHeaderMenuButtonEnabled() {\n    const menuHides = !this.isSuppressMenuHide();\n    const onIpadAndMenuHides = _isIOSUserAgent() && menuHides;\n    return !onIpadAndMenuHides;\n  }\n  isHeaderFilterButtonEnabled(column) {\n    return this.isFilterMenuInHeaderEnabled(column) && !_isLegacyMenuEnabled(this.gos) && !this.isFloatingFilterButtonDisplayed(column);\n  }\n  isFilterMenuItemEnabled(column) {\n    return !!this.beans.filterManager?.isFilterAllowed(column) && !_isLegacyMenuEnabled(this.gos) && !this.isFilterMenuInHeaderEnabled(column) && !this.isFloatingFilterButtonDisplayed(column);\n  }\n  isFloatingFilterButtonEnabled(column) {\n    return !column.getColDef().suppressFloatingFilterButton;\n  }\n  isFloatingFilterButtonDisplayed(column) {\n    return !!column.getColDef().floatingFilter && this.isFloatingFilterButtonEnabled(column);\n  }\n  isSuppressMenuHide() {\n    const gos = this.gos;\n    const suppressMenuHide = gos.get(\"suppressMenuHide\");\n    if (_isLegacyMenuEnabled(gos)) {\n      return gos.exists(\"suppressMenuHide\") ? suppressMenuHide : false;\n    }\n    return suppressMenuHide;\n  }\n  showColumnMenuCommon(menuFactory, params, containerType, filtersOnly) {\n    const { positionBy, onClosedCallback } = params;\n    const column = params.column;\n    if (positionBy === \"button\") {\n      const { buttonElement } = params;\n      menuFactory?.showMenuAfterButtonClick(column, buttonElement, containerType, onClosedCallback, filtersOnly);\n    } else if (positionBy === \"mouse\") {\n      const { mouseEvent } = params;\n      menuFactory?.showMenuAfterMouseEvent(column, mouseEvent, containerType, onClosedCallback, filtersOnly);\n    } else if (column) {\n      const beans = this.beans;\n      const ctrlsSvc = beans.ctrlsSvc;\n      ctrlsSvc.getScrollFeature().ensureColumnVisible(column, \"auto\");\n      _requestAnimationFrame(beans, () => {\n        const headerCellCtrl = ctrlsSvc.getHeaderRowContainerCtrl(column.getPinned())?.getHeaderCtrlForColumn(column);\n        if (headerCellCtrl) {\n          menuFactory?.showMenuAfterButtonClick(\n            column,\n            headerCellCtrl.getAnchorElementForMenu(filtersOnly),\n            containerType,\n            onClosedCallback,\n            filtersOnly\n          );\n        }\n      });\n    }\n  }\n};\nfunction _setColMenuVisible(column, visible, source) {\n  if (column.menuVisible !== visible) {\n    column.menuVisible = visible;\n    column.dispatchColEvent(\"menuVisibleChanged\", source);\n  }\n}\n\n// packages/ag-grid-community/src/rendering/overlays/overlayComponent.ts\nvar OverlayComponent = class extends Component {\n  constructor() {\n    super();\n  }\n};\n\n// packages/ag-grid-community/src/rendering/overlays/loadingOverlayComponent.ts\nvar LoadingOverlayElement = {\n  tag: \"span\",\n  cls: \"ag-overlay-loading-center\",\n  attrs: { \"aria-live\": \"polite\", \"aria-atomic\": \"true\" }\n};\nvar LoadingOverlayComponent2 = class extends OverlayComponent {\n  init() {\n    const customTemplate = _makeNull(this.gos.get(\"overlayLoadingTemplate\")?.trim());\n    this.setTemplate(customTemplate ?? LoadingOverlayElement);\n    if (!customTemplate) {\n      const localeTextFunc = this.getLocaleTextFunc();\n      setTimeout(() => {\n        this.getGui().textContent = localeTextFunc(\"loadingOoo\", \"Loading...\");\n      });\n    }\n  }\n};\n\n// packages/ag-grid-community/src/rendering/overlays/noRowsOverlayComponent.ts\nvar NoRowsOverlayElement = { tag: \"span\", cls: \"ag-overlay-no-rows-center\" };\nvar NoRowsOverlayComponent2 = class extends OverlayComponent {\n  init() {\n    const customTemplate = _makeNull(this.gos.get(\"overlayNoRowsTemplate\")?.trim());\n    this.setTemplate(customTemplate ?? NoRowsOverlayElement);\n    if (!customTemplate) {\n      const localeTextFunc = this.getLocaleTextFunc();\n      setTimeout(() => {\n        this.getGui().textContent = localeTextFunc(\"noRowsToShow\", \"No Rows To Show\");\n      });\n    }\n  }\n};\n\n// packages/ag-grid-community/src/utils/icon.ts\nfunction _createIcon(iconName, beans, column) {\n  const iconContents = _createIconNoSpan(iconName, beans, column);\n  if (iconContents) {\n    const { className } = iconContents;\n    if (typeof className === \"string\" && className.indexOf(\"ag-icon\") > -1 || typeof className === \"object\" && className[\"ag-icon\"]) {\n      return iconContents;\n    }\n  }\n  const eResult = _createElement({ tag: \"span\" });\n  eResult.appendChild(iconContents);\n  return eResult;\n}\nfunction _createIconNoSpan(iconName, beans, column) {\n  let userProvidedIcon = null;\n  if (iconName === \"smallDown\") {\n    _warn(262);\n  } else if (iconName === \"smallLeft\") {\n    _warn(263);\n  } else if (iconName === \"smallRight\") {\n    _warn(264);\n  }\n  const icons = column && column.getColDef().icons;\n  if (icons) {\n    userProvidedIcon = icons[iconName];\n  }\n  if (beans.gos && !userProvidedIcon) {\n    const optionsIcons = beans.gos.get(\"icons\");\n    if (optionsIcons) {\n      userProvidedIcon = optionsIcons[iconName];\n    }\n  }\n  if (userProvidedIcon) {\n    let rendererResult;\n    if (typeof userProvidedIcon === \"function\") {\n      rendererResult = userProvidedIcon();\n    } else if (typeof userProvidedIcon === \"string\") {\n      rendererResult = userProvidedIcon;\n    } else {\n      _warn(38, { iconName });\n      return void 0;\n    }\n    if (typeof rendererResult === \"string\") {\n      return _loadTemplate(rendererResult);\n    }\n    if (_isNodeOrElement(rendererResult)) {\n      return rendererResult;\n    }\n    _warn(133, { iconName });\n    return void 0;\n  } else {\n    const iconValue = beans.registry.getIcon(iconName);\n    if (!iconValue) {\n      beans.validation?.validateIcon(iconName);\n    }\n    return _createElement({\n      tag: \"span\",\n      cls: `ag-icon ag-icon-${iconValue ?? iconName}`,\n      role: \"presentation\",\n      attrs: { unselectable: \"on\" }\n    });\n  }\n}\n\n// packages/ag-grid-community/src/dragAndDrop/dragAndDropImageComponent.css-GENERATED.ts\nvar dragAndDropImageComponentCSS = (\n  /*css*/\n  `.ag-dnd-ghost{align-items:center;background-color:var(--ag-drag-and-drop-image-background-color);border:var(--ag-drag-and-drop-image-border);border-radius:var(--ag-border-radius);box-shadow:var(--ag-drag-and-drop-image-shadow);color:var(--ag-text-color);cursor:move;display:flex;font-weight:500;gap:var(--ag-cell-widget-spacing);height:var(--ag-header-height);overflow:hidden;padding-left:var(--ag-cell-horizontal-padding);padding-right:var(--ag-cell-horizontal-padding);text-overflow:ellipsis;transform:translateY(calc(var(--ag-spacing)*2));white-space:nowrap}`\n);\n\n// packages/ag-grid-community/src/dragAndDrop/dragAndDropImageComponent.ts\nvar DragAndDropElement = {\n  tag: \"div\",\n  children: [\n    {\n      tag: \"div\",\n      ref: \"eGhost\",\n      cls: \"ag-dnd-ghost ag-unselectable\",\n      children: [\n        { tag: \"span\", ref: \"eIcon\", cls: \"ag-dnd-ghost-icon ag-shake-left-to-right\" },\n        { tag: \"div\", ref: \"eLabel\", cls: \"ag-dnd-ghost-label\" }\n      ]\n    }\n  ]\n};\nvar DragAndDropImageComponent2 = class extends Component {\n  constructor() {\n    super();\n    this.dragSource = null;\n    this.eIcon = RefPlaceholder;\n    this.eLabel = RefPlaceholder;\n    this.eGhost = RefPlaceholder;\n    this.registerCSS(dragAndDropImageComponentCSS);\n  }\n  postConstruct() {\n    const create = (iconName) => _createIcon(iconName, this.beans, null);\n    this.dropIconMap = {\n      pinned: create(\"columnMovePin\"),\n      hide: create(\"columnMoveHide\"),\n      move: create(\"columnMoveMove\"),\n      left: create(\"columnMoveLeft\"),\n      right: create(\"columnMoveRight\"),\n      group: create(\"columnMoveGroup\"),\n      aggregate: create(\"columnMoveValue\"),\n      pivot: create(\"columnMovePivot\"),\n      notAllowed: create(\"dropNotAllowed\")\n    };\n  }\n  init(params) {\n    this.dragSource = params.dragSource;\n    this.setTemplate(DragAndDropElement);\n    this.beans.environment.applyThemeClasses(this.eGhost);\n  }\n  destroy() {\n    this.dragSource = null;\n    super.destroy();\n  }\n  setIcon(iconName, shake) {\n    const { eIcon, dragSource, dropIconMap, gos } = this;\n    _clearElement(eIcon);\n    let eIconChild = null;\n    if (!iconName) {\n      iconName = dragSource?.getDefaultIconName ? dragSource.getDefaultIconName() : \"notAllowed\";\n    }\n    eIconChild = dropIconMap[iconName];\n    eIcon.classList.toggle(\"ag-shake-left-to-right\", shake);\n    if (eIconChild === dropIconMap[\"hide\"] && gos.get(\"suppressDragLeaveHidesColumns\")) {\n      return;\n    }\n    if (eIconChild) {\n      eIcon.appendChild(eIconChild);\n    }\n  }\n  setLabel(label) {\n    this.eLabel.textContent = label;\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agAbstractLabel.css-GENERATED.ts\nvar agAbstractLabelCSS = (\n  /*css*/\n  `.ag-label{white-space:nowrap}:where(.ag-ltr) .ag-label{margin-right:var(--ag-spacing)}:where(.ag-rtl) .ag-label{margin-left:var(--ag-spacing)}:where(.ag-label-align-right) .ag-label{order:1}:where(.ag-ltr) :where(.ag-label-align-right) .ag-label{margin-left:var(--ag-spacing)}:where(.ag-rtl) :where(.ag-label-align-right) .ag-label{margin-right:var(--ag-spacing)}.ag-label-align-right>*{flex:none}.ag-label-align-top{align-items:flex-start;flex-direction:column;>*{align-self:stretch}}.ag-label-ellipsis{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:where(.ag-label-align-top) .ag-label{margin-bottom:calc(var(--ag-spacing)*.5)}`\n);\n\n// packages/ag-grid-community/src/widgets/agAbstractLabel.ts\nvar AgAbstractLabel = class extends Component {\n  constructor(config, template, components) {\n    super(template, components);\n    this.labelSeparator = \"\";\n    this.labelAlignment = \"left\";\n    this.disabled = false;\n    this.label = \"\";\n    this.config = config || {};\n    this.registerCSS(agAbstractLabelCSS);\n  }\n  postConstruct() {\n    this.addCss(\"ag-labeled\");\n    this.eLabel.classList.add(\"ag-label\");\n    const { labelSeparator, label, labelWidth, labelAlignment, disabled } = this.config;\n    if (disabled != null) {\n      this.setDisabled(disabled);\n    }\n    if (labelSeparator != null) {\n      this.setLabelSeparator(labelSeparator);\n    }\n    if (label != null) {\n      this.setLabel(label);\n    }\n    if (labelWidth != null) {\n      this.setLabelWidth(labelWidth);\n    }\n    this.setLabelAlignment(labelAlignment || this.labelAlignment);\n    this.refreshLabel();\n  }\n  refreshLabel() {\n    const { label, eLabel } = this;\n    _clearElement(eLabel);\n    if (typeof label === \"string\") {\n      eLabel.innerText = label + this.labelSeparator;\n    } else if (label) {\n      eLabel.appendChild(label);\n    }\n    if (label === \"\") {\n      _setDisplayed(eLabel, false);\n      _setAriaRole(eLabel, \"presentation\");\n    } else {\n      _setDisplayed(eLabel, true);\n      _setAriaRole(eLabel, null);\n    }\n  }\n  setLabelSeparator(labelSeparator) {\n    if (this.labelSeparator === labelSeparator) {\n      return this;\n    }\n    this.labelSeparator = labelSeparator;\n    if (this.label != null) {\n      this.refreshLabel();\n    }\n    return this;\n  }\n  getLabelId() {\n    const eLabel = this.eLabel;\n    eLabel.id = eLabel.id || `ag-${this.getCompId()}-label`;\n    return eLabel.id;\n  }\n  getLabel() {\n    return this.label;\n  }\n  setLabel(label) {\n    if (this.label === label) {\n      return this;\n    }\n    this.label = label;\n    this.refreshLabel();\n    return this;\n  }\n  setLabelAlignment(alignment) {\n    const eGui = this.getGui();\n    const eGuiClassList = eGui.classList;\n    eGuiClassList.toggle(\"ag-label-align-left\", alignment === \"left\");\n    eGuiClassList.toggle(\"ag-label-align-right\", alignment === \"right\");\n    eGuiClassList.toggle(\"ag-label-align-top\", alignment === \"top\");\n    return this;\n  }\n  setLabelEllipsis(hasEllipsis) {\n    this.eLabel.classList.toggle(\"ag-label-ellipsis\", hasEllipsis);\n    return this;\n  }\n  setLabelWidth(width) {\n    if (this.label == null) {\n      return this;\n    }\n    _setElementWidth(this.eLabel, width);\n    return this;\n  }\n  setDisabled(disabled) {\n    disabled = !!disabled;\n    const element = this.getGui();\n    _setDisabled(element, disabled);\n    element.classList.toggle(\"ag-disabled\", disabled);\n    this.disabled = disabled;\n    return this;\n  }\n  isDisabled() {\n    return !!this.disabled;\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agAbstractField.ts\nvar AgAbstractField = class extends AgAbstractLabel {\n  constructor(config, template, components, className) {\n    super(config, template, components);\n    this.className = className;\n  }\n  postConstruct() {\n    super.postConstruct();\n    const { width, value, onValueChange } = this.config;\n    if (width != null) {\n      this.setWidth(width);\n    }\n    if (value != null) {\n      this.setValue(value);\n    }\n    if (onValueChange != null) {\n      this.onValueChange(onValueChange);\n    }\n    if (this.className) {\n      this.addCss(this.className);\n    }\n    this.refreshAriaLabelledBy();\n  }\n  setLabel(label) {\n    super.setLabel(label);\n    this.refreshAriaLabelledBy();\n    return this;\n  }\n  refreshAriaLabelledBy() {\n    const ariaEl = this.getAriaElement();\n    const labelId = this.getLabelId();\n    const label = this.getLabel();\n    if (label == null || label == \"\" || _getAriaLabel(ariaEl) !== null) {\n      _setAriaLabelledBy(ariaEl, \"\");\n    } else {\n      _setAriaLabelledBy(ariaEl, labelId ?? \"\");\n    }\n  }\n  setAriaLabel(label) {\n    _setAriaLabel(this.getAriaElement(), label);\n    this.refreshAriaLabelledBy();\n    return this;\n  }\n  onValueChange(callbackFn) {\n    this.addManagedListeners(this, { fieldValueChanged: () => callbackFn(this.getValue()) });\n    return this;\n  }\n  getWidth() {\n    return this.getGui().clientWidth;\n  }\n  setWidth(width) {\n    _setFixedWidth(this.getGui(), width);\n    return this;\n  }\n  getPreviousValue() {\n    return this.previousValue;\n  }\n  getValue() {\n    return this.value;\n  }\n  setValue(value, silent) {\n    if (this.value === value) {\n      return this;\n    }\n    this.previousValue = this.value;\n    this.value = value;\n    if (!silent) {\n      this.dispatchLocalEvent({ type: \"fieldValueChanged\" });\n    }\n    return this;\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agAbstractInputField.ts\nfunction buildTemplate(displayFieldTag) {\n  return {\n    tag: \"div\",\n    role: \"presentation\",\n    children: [\n      { tag: \"div\", ref: \"eLabel\", cls: \"ag-input-field-label\" },\n      {\n        tag: \"div\",\n        ref: \"eWrapper\",\n        cls: \"ag-wrapper ag-input-wrapper\",\n        role: \"presentation\",\n        children: [{ tag: displayFieldTag, ref: \"eInput\", cls: \"ag-input-field-input\" }]\n      }\n    ]\n  };\n}\nvar AgAbstractInputField = class extends AgAbstractField {\n  constructor(config, className, inputType = \"text\", displayFieldTag = \"input\") {\n    super(config, config?.template ?? buildTemplate(displayFieldTag), [], className);\n    this.inputType = inputType;\n    this.displayFieldTag = displayFieldTag;\n    this.eLabel = RefPlaceholder;\n    this.eWrapper = RefPlaceholder;\n    this.eInput = RefPlaceholder;\n  }\n  postConstruct() {\n    super.postConstruct();\n    this.setInputType();\n    const { eLabel, eWrapper, eInput, className } = this;\n    eLabel.classList.add(`${className}-label`);\n    eWrapper.classList.add(`${className}-input-wrapper`);\n    eInput.classList.add(`${className}-input`);\n    this.addCss(\"ag-input-field\");\n    eInput.id = eInput.id || `ag-${this.getCompId()}-input`;\n    const { inputName, inputWidth } = this.config;\n    if (inputName != null) {\n      this.setInputName(inputName);\n    }\n    if (inputWidth != null) {\n      this.setInputWidth(inputWidth);\n    }\n    this.addInputListeners();\n    this.activateTabIndex([eInput]);\n  }\n  addInputListeners() {\n    this.addManagedElementListeners(this.eInput, { input: (e) => this.setValue(e.target.value) });\n  }\n  setInputType() {\n    if (this.displayFieldTag === \"input\") {\n      this.eInput.setAttribute(\"type\", this.inputType);\n    }\n  }\n  getInputElement() {\n    return this.eInput;\n  }\n  setInputWidth(width) {\n    _setElementWidth(this.eWrapper, width);\n    return this;\n  }\n  setInputName(name) {\n    this.getInputElement().setAttribute(\"name\", name);\n    return this;\n  }\n  getFocusableElement() {\n    return this.eInput;\n  }\n  setMaxLength(length) {\n    const eInput = this.eInput;\n    eInput.maxLength = length;\n    return this;\n  }\n  setInputPlaceholder(placeholder) {\n    _addOrRemoveAttribute(this.eInput, \"placeholder\", placeholder);\n    return this;\n  }\n  setInputAriaLabel(label) {\n    _setAriaLabel(this.eInput, label);\n    this.refreshAriaLabelledBy();\n    return this;\n  }\n  setDisabled(disabled) {\n    _setDisabled(this.eInput, disabled);\n    return super.setDisabled(disabled);\n  }\n  setAutoComplete(value) {\n    if (value === true) {\n      _addOrRemoveAttribute(this.eInput, \"autocomplete\", null);\n    } else {\n      const autoCompleteValue = typeof value === \"string\" ? value : \"off\";\n      _addOrRemoveAttribute(this.eInput, \"autocomplete\", autoCompleteValue);\n    }\n    return this;\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agCheckbox.ts\nvar AgCheckbox = class extends AgAbstractInputField {\n  constructor(config, className = \"ag-checkbox\", inputType = \"checkbox\") {\n    super(config, className, inputType);\n    this.labelAlignment = \"right\";\n    this.selected = false;\n    this.readOnly = false;\n    this.passive = false;\n  }\n  postConstruct() {\n    super.postConstruct();\n    const { readOnly, passive } = this.config;\n    if (typeof readOnly === \"boolean\")\n      this.setReadOnly(readOnly);\n    if (typeof passive === \"boolean\")\n      this.setPassive(passive);\n  }\n  addInputListeners() {\n    this.addManagedElementListeners(this.eInput, { click: this.onCheckboxClick.bind(this) });\n    this.addManagedElementListeners(this.eLabel, { click: this.toggle.bind(this) });\n  }\n  getNextValue() {\n    return this.selected === void 0 ? true : !this.selected;\n  }\n  setPassive(passive) {\n    this.passive = passive;\n  }\n  isReadOnly() {\n    return this.readOnly;\n  }\n  setReadOnly(readOnly) {\n    this.eWrapper.classList.toggle(\"ag-disabled\", readOnly);\n    this.eInput.disabled = readOnly;\n    this.readOnly = readOnly;\n  }\n  setDisabled(disabled) {\n    this.eWrapper.classList.toggle(\"ag-disabled\", disabled);\n    return super.setDisabled(disabled);\n  }\n  toggle() {\n    if (this.eInput.disabled) {\n      return;\n    }\n    const previousValue = this.isSelected();\n    const nextValue = this.getNextValue();\n    if (this.passive) {\n      this.dispatchChange(nextValue, previousValue);\n    } else {\n      this.setValue(nextValue);\n    }\n  }\n  getValue() {\n    return this.isSelected();\n  }\n  setValue(value, silent) {\n    this.refreshSelectedClass(value);\n    this.setSelected(value, silent);\n    return this;\n  }\n  setName(name) {\n    const input = this.getInputElement();\n    input.name = name;\n    return this;\n  }\n  isSelected() {\n    return this.selected;\n  }\n  setSelected(selected, silent) {\n    if (this.isSelected() === selected) {\n      return;\n    }\n    this.previousValue = this.isSelected();\n    selected = this.selected = typeof selected === \"boolean\" ? selected : void 0;\n    const eInput = this.eInput;\n    eInput.checked = selected;\n    eInput.indeterminate = selected === void 0;\n    if (!silent) {\n      this.dispatchChange(this.selected, this.previousValue);\n    }\n  }\n  dispatchChange(selected, previousValue, event) {\n    this.dispatchLocalEvent({ type: \"fieldValueChanged\", selected, previousValue, event });\n    const input = this.getInputElement();\n    this.eventSvc.dispatchEvent({\n      type: \"checkboxChanged\",\n      id: input.id,\n      name: input.name,\n      selected,\n      previousValue\n    });\n  }\n  onCheckboxClick(e) {\n    if (this.passive || this.eInput.disabled) {\n      return;\n    }\n    const previousValue = this.isSelected();\n    const selected = this.selected = e.target.checked;\n    this.refreshSelectedClass(selected);\n    this.dispatchChange(selected, previousValue, e);\n  }\n  refreshSelectedClass(value) {\n    const classList = this.eWrapper.classList;\n    classList.toggle(\"ag-checked\", value === true);\n    classList.toggle(\"ag-indeterminate\", value == null);\n  }\n};\nvar AgCheckboxSelector = {\n  selector: \"AG-CHECKBOX\",\n  component: AgCheckbox\n};\n\n// packages/ag-grid-community/src/rendering/cellRenderers/checkboxCellRenderer.css-GENERATED.ts\nvar checkboxCellRendererCSS = (\n  /*css*/\n  `.ag-checkbox-cell{height:100%}`\n);\n\n// packages/ag-grid-community/src/rendering/cellRenderers/checkboxCellRenderer.ts\nvar CheckboxCellRendererElement = {\n  tag: \"div\",\n  cls: \"ag-cell-wrapper ag-checkbox-cell\",\n  role: \"presentation\",\n  children: [\n    {\n      tag: \"ag-checkbox\",\n      ref: \"eCheckbox\",\n      role: \"presentation\"\n    }\n  ]\n};\nvar CheckboxCellRenderer = class extends Component {\n  constructor() {\n    super(CheckboxCellRendererElement, [AgCheckboxSelector]);\n    this.eCheckbox = RefPlaceholder;\n    this.registerCSS(checkboxCellRendererCSS);\n  }\n  init(params) {\n    this.refresh(params);\n    const { eCheckbox, beans } = this;\n    const inputEl = eCheckbox.getInputElement();\n    inputEl.setAttribute(\"tabindex\", \"-1\");\n    _setAriaLive(inputEl, \"polite\");\n    this.addManagedListeners(inputEl, {\n      click: (event) => {\n        _stopPropagationForAgGrid(event);\n        if (eCheckbox.isDisabled()) {\n          return;\n        }\n        const isSelected = eCheckbox.getValue();\n        this.onCheckboxChanged(isSelected);\n      },\n      dblclick: (event) => {\n        _stopPropagationForAgGrid(event);\n      }\n    });\n    this.addManagedElementListeners(params.eGridCell, {\n      keydown: (event) => {\n        if (event.key === KeyCode.SPACE && !eCheckbox.isDisabled()) {\n          if (params.eGridCell === _getActiveDomElement(beans)) {\n            eCheckbox.toggle();\n          }\n          const isSelected = eCheckbox.getValue();\n          this.onCheckboxChanged(isSelected);\n          event.preventDefault();\n        }\n      }\n    });\n  }\n  refresh(params) {\n    this.params = params;\n    this.updateCheckbox(params);\n    return true;\n  }\n  updateCheckbox(params) {\n    let isSelected;\n    let displayed = true;\n    const { value, column, node } = params;\n    if (node.group && column) {\n      if (typeof value === \"boolean\") {\n        isSelected = value;\n      } else {\n        const colId = column.getColId();\n        if (colId.startsWith(GROUP_AUTO_COLUMN_ID)) {\n          isSelected = value == null || value === \"\" ? void 0 : value === \"true\";\n        } else if (node.aggData && node.aggData[colId] !== void 0) {\n          isSelected = value ?? void 0;\n        } else {\n          displayed = false;\n        }\n      }\n    } else {\n      isSelected = value ?? void 0;\n    }\n    const { eCheckbox } = this;\n    if (!displayed) {\n      eCheckbox.setDisplayed(false);\n      return;\n    }\n    eCheckbox.setValue(isSelected);\n    const disabled = params.disabled ?? !column?.isCellEditable(node);\n    eCheckbox.setDisabled(disabled);\n    const translate = this.getLocaleTextFunc();\n    const stateName = _getAriaCheckboxStateName(translate, isSelected);\n    const ariaLabel = disabled ? stateName : `${translate(\"ariaToggleCellValue\", \"Press SPACE to toggle cell value\")} (${stateName})`;\n    eCheckbox.setInputAriaLabel(ariaLabel);\n  }\n  onCheckboxChanged(isSelected) {\n    const { eventSvc, params } = this;\n    const { column, node, value } = params;\n    const sharedEventParams = {\n      column,\n      colDef: column.getColDef(),\n      data: node.data,\n      node,\n      rowIndex: node.rowIndex,\n      rowPinned: node.rowPinned,\n      value\n    };\n    eventSvc.dispatchEvent({\n      type: \"cellEditingStarted\",\n      ...sharedEventParams\n    });\n    const valueChanged = node.setDataValue(column, isSelected, \"edit\");\n    eventSvc.dispatchEvent({\n      type: \"cellEditingStopped\",\n      ...sharedEventParams,\n      oldValue: value,\n      newValue: isSelected,\n      valueChanged\n    });\n    if (!valueChanged) {\n      this.updateCheckbox(params);\n    }\n  }\n};\n\n// packages/ag-grid-community/src/pinnedRowModel/manualPinnedRowUtils.ts\nvar PinnedRows = class {\n  constructor(beans, floating) {\n    this.beans = beans;\n    this.floating = floating;\n    /** Canonical set of pinned nodes */\n    this.all = /* @__PURE__ */ new Set();\n    /**\n     * Set of nodes that should currently be visible given the context of the grid.\n     * This is currently used for hiding leaf nodes in pivot mode and filtered nodes.\n     */\n    this.visible = /* @__PURE__ */ new Set();\n    /** Ordering of nodes in the pinned area */\n    this.order = [];\n    /** IDs of nodes that need to be pinned once they are available from the row model (SSRM) */\n    this.queued = /* @__PURE__ */ new Set();\n  }\n  size() {\n    return this.visible.size;\n  }\n  add(node) {\n    const { all, visible, order } = this;\n    if (all.has(node))\n      return;\n    all.add(node);\n    visible.add(node);\n    order.push(node);\n    this.sort();\n  }\n  delete(item) {\n    this.all.delete(item);\n    this.visible.delete(item);\n    this.queued.delete(item.id);\n    _removeFromArray(this.order, item);\n  }\n  has(item) {\n    return this.visible.has(item);\n  }\n  forEach(fn) {\n    this.order.forEach(fn);\n  }\n  getByIndex(i) {\n    return this.order[i];\n  }\n  getById(id) {\n    for (const node of this.visible) {\n      if (node.id == id)\n        return node;\n    }\n  }\n  clear() {\n    const { all, visible, order, queued } = this;\n    all.clear();\n    queued.clear();\n    visible.clear();\n    order.length = 0;\n  }\n  sort() {\n    const { sortSvc, rowNodeSorter } = this.beans;\n    const sortOptions = sortSvc?.getSortOptions() ?? [];\n    const grandTotalNode = _removeGrandTotalRow(this.order);\n    this.order.sort((a, b) => (a.pinnedSibling?.rowIndex ?? 0) - (b.pinnedSibling?.rowIndex ?? 0));\n    this.order = rowNodeSorter?.doFullSort(this.order, sortOptions) ?? this.order;\n    if (!grandTotalNode)\n      return;\n    const grandTotalRow = this.beans.gos.get(\"grandTotalRow\");\n    if (grandTotalRow === \"bottom\" || grandTotalRow === \"pinnedBottom\") {\n      this.order.push(grandTotalNode);\n    } else {\n      this.order.unshift(grandTotalNode);\n    }\n  }\n  hide(shouldHide) {\n    const { all, visible } = this;\n    all.forEach((node) => shouldHide(node) ? visible.delete(node) : visible.add(node));\n    this.order = Array.from(visible);\n    this.sort();\n  }\n  queue(id) {\n    this.queued.add(id);\n  }\n  unqueue(id) {\n    this.queued.delete(id);\n  }\n  forEachQueued(fn) {\n    this.queued.forEach(fn);\n  }\n};\nfunction _isDisplayedAfterFilterCSRM(node) {\n  if (node.level === -1)\n    return true;\n  const parent = node.parent;\n  if (parent?.childrenAfterSort?.some((child) => child == node)) {\n    return _isDisplayedAfterFilterCSRM(parent);\n  }\n  return false;\n}\nfunction _shouldHidePinnedRows(beans, node) {\n  const { gos, rowModel, filterManager } = beans;\n  if (_isServerSideRowModel(gos, rowModel)) {\n    return !rowModel.getRowNode(node.id);\n  }\n  if (filterManager?.isAnyFilterPresent()) {\n    return !_isDisplayedAfterFilterCSRM(node);\n  }\n  if (gos.get(\"pivotMode\")) {\n    return !node.group;\n  }\n  return false;\n}\nfunction _isNodeGrandTotal(node) {\n  return !!node.footer && node.level === -1;\n}\nfunction _isPinnedNodeGrandTotal(node) {\n  return !!node.pinnedSibling && _isNodeGrandTotal(node.pinnedSibling);\n}\nfunction _removeGrandTotalRow(order) {\n  const index = order.findIndex(_isPinnedNodeGrandTotal);\n  if (index > -1) {\n    return order.splice(index, 1)?.[0];\n  }\n}\n\n// packages/ag-grid-community/src/pinnedRowModel/manualPinnedRowModel.ts\nvar ManualPinnedRowModel = class extends BeanStub {\n  postConstruct() {\n    const { gos, beans } = this;\n    this.top = new PinnedRows(beans, \"top\");\n    this.bottom = new PinnedRows(beans, \"bottom\");\n    const shouldHide = (node) => _shouldHidePinnedRows(beans, node.pinnedSibling);\n    const runIsRowPinned = () => {\n      const isRowPinned = gos.get(\"isRowPinned\");\n      if (isRowPinned) {\n        beans.rowModel.forEachNode((node) => this.pinRow(node, isRowPinned(node)), true);\n      }\n      this.refreshRowPositions();\n      this.dispatchRowPinnedEvents();\n    };\n    this.addManagedEventListeners({\n      gridStylesChanged: this.onGridStylesChanges.bind(this),\n      modelUpdated: () => {\n        this.tryToEmptyQueues();\n        this.pinGrandTotalRow();\n        this.forContainers((container) => container.hide(shouldHide));\n        this.refreshRowPositions();\n        this.dispatchRowPinnedEvents();\n      },\n      columnRowGroupChanged: () => {\n        this.forContainers(removeGroupRows);\n        this.refreshRowPositions();\n      },\n      rowNodeDataChanged: ({ node }) => {\n        const isRowPinnable = gos.get(\"isRowPinnable\");\n        const pinnable = isRowPinnable?.(node) ?? true;\n        if (!pinnable) {\n          this.pinRow(node, null);\n        }\n      },\n      firstDataRendered: runIsRowPinned\n    });\n    this.addManagedPropertyListener(\"pivotMode\", () => {\n      this.forContainers((container) => container.hide(shouldHide));\n      this.dispatchRowPinnedEvents();\n    });\n    this.addManagedPropertyListener(\"grandTotalRow\", ({ currentValue }) => {\n      this._grandTotalPinned = currentValue === \"pinnedBottom\" ? \"bottom\" : currentValue === \"pinnedTop\" ? \"top\" : null;\n    });\n    this.addManagedPropertyListener(\"isRowPinned\", runIsRowPinned);\n  }\n  destroy() {\n    this.reset(false);\n    super.destroy();\n  }\n  reset(dispatch = true) {\n    this.forContainers((container) => {\n      const nodesToUnpin = [];\n      container.forEach((n) => nodesToUnpin.push(n));\n      nodesToUnpin.forEach((n) => this.pinRow(n, null));\n      container.clear();\n    });\n    if (dispatch) {\n      this.dispatchRowPinnedEvents();\n    }\n  }\n  pinRow(rowNode, float, column) {\n    if (rowNode.footer && rowNode.level > -1)\n      return;\n    if (rowNode.footer && rowNode.level === -1) {\n      this._grandTotalPinned = float;\n      if (_isClientSideRowModel(this.gos, this.beans.rowModel)) {\n        this.beans.rowModel.refreshModel({ step: \"map\" });\n      }\n      return;\n    }\n    const currentFloat = rowNode.rowPinned ?? rowNode.pinnedSibling?.rowPinned;\n    const switching = currentFloat != null && float != null && float != currentFloat;\n    if (switching) {\n      const pinned = rowNode.rowPinned ? rowNode : rowNode.pinnedSibling;\n      const source = rowNode.rowPinned ? rowNode.pinnedSibling : rowNode;\n      this.pinRow(pinned, null, column);\n      this.pinRow(source, float, column);\n      return;\n    }\n    const spannedRows = column && getSpannedRows(this.beans, rowNode, column);\n    if (spannedRows) {\n      spannedRows.forEach((node) => this.pinRow(node, float));\n      return;\n    }\n    if (float == null) {\n      const node = rowNode.rowPinned ? rowNode : rowNode.pinnedSibling;\n      const found = this.findPinnedRowNode(node);\n      if (!found)\n        return;\n      found.delete(node);\n      const source = node.pinnedSibling;\n      _destroyRowNodeSibling(node);\n      this.refreshRowPositions(float);\n      this.dispatchRowPinnedEvents(source);\n    } else {\n      const sibling = _createPinnedSibling(this.beans, rowNode, float);\n      const container = this.getContainer(float);\n      container.add(sibling);\n      if (_shouldHidePinnedRows(this.beans, rowNode)) {\n        container.hide((node) => _shouldHidePinnedRows(this.beans, node.pinnedSibling));\n      }\n      this.refreshRowPositions(float);\n      this.dispatchRowPinnedEvents(rowNode);\n    }\n  }\n  isManual() {\n    return true;\n  }\n  isEmpty(floating) {\n    return this.getContainer(floating).size() === 0;\n  }\n  isRowsToRender(floating) {\n    return !this.isEmpty(floating);\n  }\n  ensureRowHeightsValid() {\n    let anyChange = false;\n    let rowTop = 0;\n    const updateRowHeight = (rowNode) => {\n      if (rowNode.rowHeightEstimated) {\n        const rowHeight = _getRowHeightForNode(this.beans, rowNode);\n        rowNode.setRowTop(rowTop);\n        rowNode.setRowHeight(rowHeight.height);\n        rowTop += rowHeight.height;\n        anyChange = true;\n      }\n    };\n    this.bottom.forEach(updateRowHeight);\n    rowTop = 0;\n    this.top.forEach(updateRowHeight);\n    this.eventSvc.dispatchEvent({\n      type: \"pinnedHeightChanged\"\n    });\n    return anyChange;\n  }\n  getPinnedTopTotalHeight() {\n    const size = this.top.size();\n    if (size === 0)\n      return 0;\n    const node = this.top.getByIndex(size - 1);\n    if (node === void 0)\n      return 0;\n    return node.rowTop + node.rowHeight;\n  }\n  getPinnedBottomTotalHeight() {\n    const size = this.bottom.size();\n    if (size === 0)\n      return 0;\n    const node = this.bottom.getByIndex(size - 1);\n    if (node === void 0)\n      return 0;\n    return node.rowTop + node.rowHeight;\n  }\n  getPinnedTopRowCount() {\n    return this.top.size();\n  }\n  getPinnedBottomRowCount() {\n    return this.bottom.size();\n  }\n  getPinnedTopRow(index) {\n    return this.top.getByIndex(index);\n  }\n  getPinnedBottomRow(index) {\n    return this.bottom.getByIndex(index);\n  }\n  getPinnedRowById(id, floating) {\n    return this.getContainer(floating).getById(id);\n  }\n  forEachPinnedRow(floating, callback) {\n    this.getContainer(floating).forEach(callback);\n  }\n  getPinnedState() {\n    const buildState = (floating) => {\n      const list = [];\n      this.forEachPinnedRow(floating, (node) => list.push(node.pinnedSibling.id));\n      return list;\n    };\n    return {\n      top: buildState(\"top\"),\n      bottom: buildState(\"bottom\")\n    };\n  }\n  setPinnedState(state) {\n    this.forContainers((pinned, floating) => {\n      for (const id of state[floating]) {\n        const node = this.beans.rowModel.getRowNode(id);\n        if (node) {\n          this.pinRow(node, floating);\n        } else {\n          pinned.queue(id);\n        }\n      }\n    });\n  }\n  getGrandTotalPinned() {\n    return this._grandTotalPinned;\n  }\n  setGrandTotalPinned(value) {\n    this._grandTotalPinned = value;\n  }\n  tryToEmptyQueues() {\n    this.forContainers((pinned, container) => {\n      const nodesToPin = /* @__PURE__ */ new Set();\n      pinned.forEachQueued((id) => {\n        const node = this.beans.rowModel.getRowNode(id);\n        if (node) {\n          nodesToPin.add(node);\n        }\n      });\n      for (const node of nodesToPin) {\n        pinned.unqueue(node.id);\n        this.pinRow(node, container);\n      }\n    });\n  }\n  pinGrandTotalRow() {\n    const rowModel = this.beans.rowModel;\n    if (!_isClientSideRowModel(this.gos, rowModel))\n      return;\n    const sibling = rowModel.rootNode?.sibling;\n    if (!sibling)\n      return;\n    const float = this._grandTotalPinned;\n    const pinnedSibling = sibling.pinnedSibling;\n    const container = pinnedSibling && this.findPinnedRowNode(pinnedSibling);\n    if (!float) {\n      if (!container)\n        return;\n      container.delete(pinnedSibling);\n      _destroyRowNodeSibling(pinnedSibling);\n    } else {\n      if (container && container.floating !== float) {\n        container.delete(pinnedSibling);\n        _destroyRowNodeSibling(pinnedSibling);\n      }\n      if (!container || container.floating !== float) {\n        const newPinnedSibling = _createPinnedSibling(this.beans, sibling, float);\n        this.getContainer(float).add(newPinnedSibling);\n      }\n    }\n  }\n  onGridStylesChanges(e) {\n    if (e.rowHeightChanged) {\n      const estimateRowHeight = (rowNode) => {\n        rowNode.setRowHeight(rowNode.rowHeight, true);\n      };\n      this.forContainers((container) => container.forEach(estimateRowHeight));\n    }\n  }\n  getContainer(floating) {\n    return floating === \"top\" ? this.top : this.bottom;\n  }\n  findPinnedRowNode(node) {\n    if (this.top.has(node))\n      return this.top;\n    if (this.bottom.has(node))\n      return this.bottom;\n  }\n  refreshRowPositions(floating) {\n    const refreshAll = (pinned) => refreshRowPositions(this.beans, pinned);\n    return floating == null ? this.forContainers(refreshAll) : refreshAll(this.getContainer(floating));\n  }\n  forContainers(fn) {\n    fn(this.top, \"top\");\n    fn(this.bottom, \"bottom\");\n  }\n  dispatchRowPinnedEvents(node) {\n    this.eventSvc.dispatchEvent({ type: \"pinnedRowsChanged\" });\n    node?.dispatchRowEvent(\"rowPinned\");\n  }\n};\nfunction refreshRowPositions(beans, container) {\n  let rowTop = 0;\n  container.forEach((node, index) => {\n    node.setRowTop(rowTop);\n    if (node.rowHeightEstimated || node.rowHeight == null) {\n      node.setRowHeight(_getRowHeightForNode(beans, node).height);\n    }\n    node.setRowIndex(index);\n    rowTop += node.rowHeight;\n  });\n}\nfunction _createPinnedSibling(beans, rowNode, floating) {\n  if (rowNode.pinnedSibling) {\n    return rowNode.pinnedSibling;\n  }\n  const sibling = _createRowNodeSibling(rowNode, beans);\n  sibling.setRowTop(null);\n  sibling.setRowIndex(null);\n  sibling.rowPinned = floating;\n  const prefix = floating === \"top\" ? ROW_ID_PREFIX_TOP_PINNED : ROW_ID_PREFIX_BOTTOM_PINNED;\n  sibling.id = `${prefix}${floating}-${rowNode.id}`;\n  sibling.pinnedSibling = rowNode;\n  rowNode.pinnedSibling = sibling;\n  return sibling;\n}\nfunction _destroyRowNodeSibling(rowNode) {\n  if (!rowNode.pinnedSibling) {\n    return;\n  }\n  rowNode.rowPinned = null;\n  rowNode.setRowTop(null);\n  rowNode.setRowIndex(null);\n  const mainNode = rowNode.pinnedSibling;\n  rowNode.pinnedSibling = void 0;\n  if (mainNode) {\n    mainNode.pinnedSibling = void 0;\n    mainNode.rowPinned = null;\n  }\n}\nfunction removeGroupRows(set) {\n  const rowsToRemove = /* @__PURE__ */ new Set();\n  set.forEach((node) => {\n    if (node.group) {\n      rowsToRemove.add(node);\n    }\n  });\n  rowsToRemove.forEach((node) => {\n    set.delete(node);\n  });\n}\nfunction getSpannedRows(beans, rowNode, column) {\n  const { rowSpanSvc } = beans;\n  const isCellSpanning = (column && rowSpanSvc?.isCellSpanning(column, rowNode)) ?? false;\n  if (column && isCellSpanning) {\n    const span = rowSpanSvc?.getCellSpan(column, rowNode);\n    if (span)\n      return Array.from(span.spannedNodes);\n  }\n}\n\n// packages/ag-grid-community/src/pinnedRowModel/staticPinnedRowModel.ts\nvar StaticPinnedRowModel = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.nextId = 0;\n    this.pinnedTopRows = { cache: {}, order: [] };\n    this.pinnedBottomRows = { cache: {}, order: [] };\n  }\n  postConstruct() {\n    const gos = this.gos;\n    this.setPinnedRowData(gos.get(\"pinnedTopRowData\"), \"top\");\n    this.setPinnedRowData(gos.get(\"pinnedBottomRowData\"), \"bottom\");\n    this.addManagedPropertyListener(\"pinnedTopRowData\", (e) => this.setPinnedRowData(e.currentValue, \"top\"));\n    this.addManagedPropertyListener(\"pinnedBottomRowData\", (e) => this.setPinnedRowData(e.currentValue, \"bottom\"));\n    this.addManagedEventListeners({ gridStylesChanged: this.onGridStylesChanges.bind(this) });\n  }\n  reset() {\n  }\n  isEmpty(floating) {\n    return this.getCache(floating).order.length === 0;\n  }\n  isRowsToRender(floating) {\n    return !this.isEmpty(floating);\n  }\n  isManual() {\n    return false;\n  }\n  pinRow(_node, _container) {\n  }\n  onGridStylesChanges(e) {\n    if (e.rowHeightChanged) {\n      const estimateRowHeight = (rowNode) => {\n        rowNode.setRowHeight(rowNode.rowHeight, true);\n      };\n      forEach(this.pinnedBottomRows, estimateRowHeight);\n      forEach(this.pinnedTopRows, estimateRowHeight);\n    }\n  }\n  ensureRowHeightsValid() {\n    let anyChange = false;\n    let rowTop = 0;\n    const updateRowHeight = (rowNode) => {\n      if (rowNode.rowHeightEstimated) {\n        const rowHeight = _getRowHeightForNode(this.beans, rowNode);\n        rowNode.setRowTop(rowTop);\n        rowNode.setRowHeight(rowHeight.height);\n        rowTop += rowHeight.height;\n        anyChange = true;\n      }\n    };\n    forEach(this.pinnedBottomRows, updateRowHeight);\n    rowTop = 0;\n    forEach(this.pinnedTopRows, updateRowHeight);\n    this.eventSvc.dispatchEvent({\n      type: \"pinnedHeightChanged\"\n    });\n    return anyChange;\n  }\n  setPinnedRowData(rowData, floating) {\n    this.updateNodesFromRowData(rowData, floating);\n    this.eventSvc.dispatchEvent({\n      type: \"pinnedRowDataChanged\"\n    });\n  }\n  /**\n   * Updates existing RowNode instances and creates new ones if necessary\n   *\n   * Setting data as `undefined` will clear row nodes\n   */\n  updateNodesFromRowData(allData, floating) {\n    const nodes = this.getCache(floating);\n    if (allData === void 0) {\n      nodes.order.length = 0;\n      nodes.cache = {};\n      return;\n    }\n    const getRowId = _getRowIdCallback(this.gos);\n    const idPrefix = floating === \"top\" ? ROW_ID_PREFIX_TOP_PINNED : ROW_ID_PREFIX_BOTTOM_PINNED;\n    const nodesToRemove = new Set(nodes.order);\n    const newOrder = [];\n    const dataIds = /* @__PURE__ */ new Set();\n    let nextRowTop = 0;\n    let i = -1;\n    for (const data of allData) {\n      const id = getRowId?.({ data, level: 0, rowPinned: floating }) ?? idPrefix + this.nextId++;\n      if (dataIds.has(id)) {\n        _warn(96, { id, data });\n        continue;\n      }\n      i++;\n      dataIds.add(id);\n      newOrder.push(id);\n      const existingNode = getById(nodes, id);\n      if (existingNode !== void 0) {\n        if (existingNode.data !== data) {\n          existingNode.updateData(data);\n        }\n        nextRowTop += this.setRowTopAndRowIndex(existingNode, nextRowTop, i);\n        nodesToRemove.delete(id);\n      } else {\n        const rowNode = new RowNode(this.beans);\n        rowNode.id = id;\n        rowNode.data = data;\n        rowNode.rowPinned = floating;\n        nextRowTop += this.setRowTopAndRowIndex(rowNode, nextRowTop, i);\n        nodes.cache[id] = rowNode;\n        nodes.order.push(id);\n      }\n    }\n    nodesToRemove.forEach((id) => {\n      getById(nodes, id)?.clearRowTopAndRowIndex();\n      delete nodes.cache[id];\n    });\n    nodes.order = newOrder;\n  }\n  setRowTopAndRowIndex(rowNode, rowTop, rowIndex) {\n    rowNode.setRowTop(rowTop);\n    rowNode.setRowHeight(_getRowHeightForNode(this.beans, rowNode).height);\n    rowNode.setRowIndex(rowIndex);\n    return rowNode.rowHeight;\n  }\n  getPinnedTopTotalHeight() {\n    return getTotalHeight(this.pinnedTopRows);\n  }\n  getPinnedBottomTotalHeight() {\n    return getTotalHeight(this.pinnedBottomRows);\n  }\n  getPinnedTopRowCount() {\n    return getSize(this.pinnedTopRows);\n  }\n  getPinnedBottomRowCount() {\n    return getSize(this.pinnedBottomRows);\n  }\n  getPinnedTopRow(index) {\n    return getByIndex(this.pinnedTopRows, index);\n  }\n  getPinnedBottomRow(index) {\n    return getByIndex(this.pinnedBottomRows, index);\n  }\n  getPinnedRowById(id, floating) {\n    return getById(this.getCache(floating), id);\n  }\n  forEachPinnedRow(floating, callback) {\n    return forEach(this.getCache(floating), callback);\n  }\n  getCache(floating) {\n    return floating === \"top\" ? this.pinnedTopRows : this.pinnedBottomRows;\n  }\n  getPinnedState() {\n    return { top: [], bottom: [] };\n  }\n  setPinnedState() {\n  }\n  getGrandTotalPinned() {\n    return;\n  }\n  setGrandTotalPinned() {\n  }\n};\nfunction getTotalHeight(rowNodes) {\n  const size = getSize(rowNodes);\n  if (size === 0) {\n    return 0;\n  }\n  const node = getByIndex(rowNodes, size - 1);\n  if (node === void 0) {\n    return 0;\n  }\n  return node.rowTop + node.rowHeight;\n}\nfunction getById(cache, id) {\n  return cache.cache[id];\n}\nfunction getByIndex(cache, i) {\n  return getById(cache, cache.order[i]);\n}\nfunction forEach(cache, callback) {\n  cache.order.forEach((id, index) => {\n    const node = getById(cache, id);\n    node && callback(node, index);\n  });\n}\nfunction getSize(cache) {\n  return cache.order.length;\n}\n\n// packages/ag-grid-community/src/pinnedRowModel/pinnedRowModel.ts\nvar PinnedRowModel = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"pinnedRowModel\";\n  }\n  postConstruct() {\n    const initialiseRowModel = () => {\n      const enableRowPinning = this.gos.get(\"enableRowPinning\");\n      if (this.inner) {\n        this.destroyBean(this.inner);\n      }\n      this.inner = this.createManagedBean(\n        enableRowPinning ? new ManualPinnedRowModel() : new StaticPinnedRowModel()\n      );\n    };\n    this.addManagedPropertyListener(\"enableRowPinning\", initialiseRowModel);\n    initialiseRowModel();\n  }\n  reset() {\n    return this.inner.reset();\n  }\n  isEmpty(container) {\n    return this.inner.isEmpty(container);\n  }\n  isManual() {\n    return this.inner.isManual();\n  }\n  isRowsToRender(container) {\n    return this.inner.isRowsToRender(container);\n  }\n  pinRow(node, container, column) {\n    return this.inner.pinRow(node, container, column);\n  }\n  ensureRowHeightsValid() {\n    return this.inner.ensureRowHeightsValid();\n  }\n  getPinnedRowById(id, container) {\n    return this.inner.getPinnedRowById(id, container);\n  }\n  getPinnedTopTotalHeight() {\n    return this.inner.getPinnedTopTotalHeight();\n  }\n  getPinnedBottomTotalHeight() {\n    return this.inner.getPinnedBottomTotalHeight();\n  }\n  getPinnedTopRowCount() {\n    return this.inner.getPinnedTopRowCount();\n  }\n  getPinnedBottomRowCount() {\n    return this.inner.getPinnedBottomRowCount();\n  }\n  getPinnedTopRow(index) {\n    return this.inner.getPinnedTopRow(index);\n  }\n  getPinnedBottomRow(index) {\n    return this.inner.getPinnedBottomRow(index);\n  }\n  forEachPinnedRow(container, callback) {\n    return this.inner.forEachPinnedRow(container, callback);\n  }\n  getPinnedState() {\n    return this.inner.getPinnedState();\n  }\n  setPinnedState(state) {\n    return this.inner.setPinnedState(state);\n  }\n  setGrandTotalPinned(value) {\n    return this.inner.setGrandTotalPinned(value);\n  }\n  getGrandTotalPinned() {\n    return this.inner.getGrandTotalPinned();\n  }\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/abstractClientSideNodeManager.ts\nvar ROOT_NODE_ID = \"ROOT_NODE_ID\";\nvar AbstractClientSideNodeManager = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.nextId = 0;\n    this.allNodesMap = {};\n    this.rootNode = null;\n  }\n  get treeData() {\n    return false;\n  }\n  getRowNode(id) {\n    return this.allNodesMap[id];\n  }\n  extractRowData() {\n    return this.rootNode?.allLeafChildren?.map((node) => node.data);\n  }\n  activate(rootNode) {\n    this.rootNode = rootNode;\n    rootNode.group = true;\n    rootNode.level = -1;\n    rootNode.id = ROOT_NODE_ID;\n    rootNode.allLeafChildren = [];\n    rootNode.childrenAfterGroup = [];\n    rootNode.childrenAfterSort = [];\n    rootNode.childrenAfterAggFilter = [];\n    rootNode.childrenAfterFilter = [];\n    this.updateRootSiblingArrays(rootNode);\n  }\n  deactivate() {\n    if (this.rootNode) {\n      this.allNodesMap = {};\n      this.rootNode = null;\n    }\n  }\n  destroy() {\n    super.destroy();\n    this.allNodesMap = {};\n    this.rootNode = null;\n  }\n  setNewRowData(rowData) {\n    const rootNode = this.rootNode;\n    if (!rootNode) {\n      return;\n    }\n    this.dispatchRowDataUpdateStartedEvent(rowData);\n    rootNode.childrenAfterFilter = null;\n    rootNode.childrenAfterGroup = null;\n    rootNode.childrenAfterAggFilter = null;\n    rootNode.childrenAfterSort = null;\n    rootNode.childrenMapped = null;\n    rootNode.updateHasChildren();\n    this.allNodesMap = {};\n    this.nextId = 0;\n    this.loadNewRowData(rowData);\n    this.updateRootSiblingArrays(rootNode);\n  }\n  updateRootSiblingArrays(rootNode) {\n    const sibling = rootNode.sibling;\n    if (sibling) {\n      sibling.childrenAfterFilter = rootNode.childrenAfterFilter;\n      sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n      sibling.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;\n      sibling.childrenAfterSort = rootNode.childrenAfterSort;\n      sibling.childrenMapped = rootNode.childrenMapped;\n      sibling.allLeafChildren = rootNode.allLeafChildren;\n    }\n  }\n  loadNewRowData(rowData) {\n    this.rootNode.allLeafChildren = rowData?.map((dataItem, index) => this.createRowNode(dataItem, index)) ?? [];\n  }\n  setImmutableRowData(params, rowData) {\n    const getRowIdFunc = _getRowIdCallback(this.gos);\n    const reorder = !this.gos.get(\"suppressMaintainUnsortedOrder\");\n    const changedRowNodes = params.changedRowNodes;\n    const processedNodes = /* @__PURE__ */ new Set();\n    const rootNode = this.rootNode;\n    const oldAllLeafChildren = rootNode.allLeafChildren;\n    const oldAllLeafChildrenLen = oldAllLeafChildren.length;\n    let nodesAdded = false;\n    let nodesRemoved = false;\n    let nodesUpdated = false;\n    let orderChanged = false;\n    for (let i = 0, prevSourceRowIndex = -1, len = rowData.length; i < len; i++) {\n      const data = rowData[i];\n      let node = this.getRowNode(\n        getRowIdFunc({ data, level: 0 })\n      );\n      if (!node) {\n        nodesAdded = true;\n        node = this.createRowNode(data, -1);\n        changedRowNodes.add(node);\n      } else {\n        if (reorder) {\n          const sourceRowIndex = node.sourceRowIndex;\n          orderChanged || (orderChanged = sourceRowIndex <= prevSourceRowIndex || // A node was moved up, so order changed\n          nodesAdded);\n          prevSourceRowIndex = sourceRowIndex;\n        }\n        if (node.data !== data) {\n          nodesUpdated = true;\n          node.updateData(data);\n          changedRowNodes.update(node);\n        }\n      }\n      processedNodes.add(node);\n    }\n    const nodesToUnselect = [];\n    for (let i = 0; i < oldAllLeafChildrenLen; i++) {\n      const node = oldAllLeafChildren[i];\n      if (!processedNodes.has(node)) {\n        nodesRemoved = true;\n        if (node.isSelected()) {\n          nodesToUnselect.push(node);\n        }\n        if (node.pinnedSibling) {\n          this.beans.pinnedRowModel?.pinRow(node.pinnedSibling, null);\n        }\n        this.rowNodeDeleted(node);\n        changedRowNodes.remove(node);\n      }\n    }\n    if (nodesAdded || nodesRemoved || orderChanged) {\n      const newAllLeafChildren = new Array(processedNodes.size);\n      let writeIdx = 0;\n      if (!reorder) {\n        for (let i = 0; i < oldAllLeafChildrenLen; ++i) {\n          const node = oldAllLeafChildren[i];\n          if (processedNodes.delete(node)) {\n            node.sourceRowIndex = writeIdx;\n            newAllLeafChildren[writeIdx++] = node;\n          }\n        }\n      }\n      for (const node of processedNodes) {\n        node.sourceRowIndex = writeIdx;\n        newAllLeafChildren[writeIdx++] = node;\n      }\n      rootNode.allLeafChildren = newAllLeafChildren;\n      const sibling = rootNode.sibling;\n      if (sibling) {\n        sibling.allLeafChildren = newAllLeafChildren;\n      }\n      params.rowNodesOrderChanged || (params.rowNodesOrderChanged = orderChanged);\n    }\n    if (nodesAdded || nodesRemoved || orderChanged || nodesUpdated) {\n      this.deselectNodes(nodesToUnselect);\n      params.rowDataUpdated = true;\n    }\n  }\n  /** Called when a node needs to be deleted */\n  rowNodeDeleted(node) {\n    node.clearRowTopAndRowIndex();\n    const id = node.id;\n    const allNodesMap = this.allNodesMap;\n    if (allNodesMap[id] === node) {\n      delete allNodesMap[id];\n    }\n  }\n  updateRowData(rowDataTran, changedRowNodes) {\n    this.dispatchRowDataUpdateStartedEvent(rowDataTran.add);\n    const updateRowDataResult = {\n      changedRowNodes,\n      rowNodeTransaction: { remove: [], update: [], add: [] },\n      rowsInserted: false\n    };\n    const nodesToUnselect = [];\n    const getRowIdFunc = _getRowIdCallback(this.gos);\n    this.executeRemove(getRowIdFunc, rowDataTran, updateRowDataResult, nodesToUnselect);\n    this.executeUpdate(getRowIdFunc, rowDataTran, updateRowDataResult, nodesToUnselect);\n    this.executeAdd(rowDataTran, updateRowDataResult);\n    this.deselectNodes(nodesToUnselect);\n    return updateRowDataResult;\n  }\n  executeAdd(rowDataTran, result) {\n    const add = rowDataTran.add;\n    if (!add?.length) {\n      return;\n    }\n    let allLeafChildren = this.rootNode.allLeafChildren;\n    let addIndex = allLeafChildren.length;\n    if (typeof rowDataTran.addIndex === \"number\") {\n      addIndex = this.sanitizeAddIndex(rowDataTran.addIndex);\n      if (addIndex > 0) {\n        const getDataPath = this.gos.get(\"treeData\") && this.gos.get(\"getDataPath\");\n        if (getDataPath) {\n          for (let i = 0; i < allLeafChildren.length; i++) {\n            const node = allLeafChildren[i];\n            if (node?.rowIndex == addIndex - 1) {\n              addIndex = i + 1;\n              break;\n            }\n          }\n        }\n      }\n    }\n    const addLength = add.length;\n    const changedRowNodes = result.changedRowNodes;\n    const newNodes = new Array(addLength);\n    for (let i = 0; i < addLength; i++) {\n      const newNode = this.createRowNode(add[i], addIndex + i);\n      changedRowNodes.add(newNode);\n      newNodes[i] = newNode;\n    }\n    const rootNode = this.rootNode;\n    if (addIndex < allLeafChildren.length) {\n      const nodesBeforeIndex = allLeafChildren.slice(0, addIndex);\n      const nodesAfterIndex = allLeafChildren.slice(addIndex, allLeafChildren.length);\n      const nodesAfterIndexFirstIndex = nodesBeforeIndex.length + newNodes.length;\n      for (let index = 0, length = nodesAfterIndex.length; index < length; ++index) {\n        nodesAfterIndex[index].sourceRowIndex = nodesAfterIndexFirstIndex + index;\n      }\n      allLeafChildren = [...nodesBeforeIndex, ...newNodes, ...nodesAfterIndex];\n      result.rowsInserted = true;\n    } else {\n      allLeafChildren = allLeafChildren.concat(newNodes);\n    }\n    rootNode.allLeafChildren = allLeafChildren;\n    const sibling = rootNode.sibling;\n    if (sibling) {\n      sibling.allLeafChildren = allLeafChildren;\n    }\n    result.rowNodeTransaction.add = newNodes;\n  }\n  executeRemove(getRowIdFunc, rowDataTran, { changedRowNodes, rowNodeTransaction }, nodesToUnselect) {\n    const { remove } = rowDataTran;\n    if (!remove?.length) {\n      return;\n    }\n    const rowIdsRemoved = {};\n    remove.forEach((item) => {\n      const rowNode = this.lookupRowNode(getRowIdFunc, item);\n      if (!rowNode) {\n        return;\n      }\n      if (rowNode.isSelected()) {\n        nodesToUnselect.push(rowNode);\n      }\n      if (rowNode.pinnedSibling) {\n        this.beans.pinnedRowModel?.pinRow(rowNode.pinnedSibling, null);\n      }\n      rowNode.clearRowTopAndRowIndex();\n      rowIdsRemoved[rowNode.id] = true;\n      delete this.allNodesMap[rowNode.id];\n      rowNodeTransaction.remove.push(rowNode);\n      changedRowNodes.remove(rowNode);\n    });\n    const rootNode = this.rootNode;\n    rootNode.allLeafChildren = rootNode.allLeafChildren?.filter((rowNode) => !rowIdsRemoved[rowNode.id]) ?? null;\n    rootNode.allLeafChildren?.forEach((node, idx) => {\n      node.sourceRowIndex = idx;\n    });\n    const sibling = rootNode.sibling;\n    if (sibling) {\n      sibling.allLeafChildren = rootNode.allLeafChildren;\n    }\n  }\n  executeUpdate(getRowIdFunc, rowDataTran, { changedRowNodes, rowNodeTransaction }, nodesToUnselect) {\n    const { update } = rowDataTran;\n    if (!update?.length) {\n      return;\n    }\n    update.forEach((item) => {\n      const rowNode = this.lookupRowNode(getRowIdFunc, item);\n      if (!rowNode) {\n        return;\n      }\n      rowNode.updateData(item);\n      if (!rowNode.selectable && rowNode.isSelected()) {\n        nodesToUnselect.push(rowNode);\n      }\n      rowNodeTransaction.update.push(rowNode);\n      changedRowNodes.update(rowNode);\n    });\n  }\n  dispatchRowDataUpdateStartedEvent(rowData) {\n    this.eventSvc.dispatchEvent({\n      type: \"rowDataUpdateStarted\",\n      firstRowData: rowData?.length ? rowData[0] : null\n    });\n  }\n  deselectNodes(nodesToUnselect) {\n    const source = \"rowDataChanged\";\n    const selectionSvc = this.beans.selectionSvc;\n    const selectionChanged = nodesToUnselect.length > 0;\n    if (selectionChanged) {\n      selectionSvc?.setNodesSelected({\n        newValue: false,\n        nodes: nodesToUnselect,\n        suppressFinishActions: true,\n        source\n      });\n    }\n    selectionSvc?.updateGroupsFromChildrenSelections?.(source);\n    if (selectionChanged) {\n      this.eventSvc.dispatchEvent({\n        type: \"selectionChanged\",\n        source,\n        selectedNodes: selectionSvc?.getSelectedNodes() ?? null,\n        serverSideState: null\n      });\n    }\n  }\n  sanitizeAddIndex(addIndex) {\n    const allChildrenCount = this.rootNode.allLeafChildren?.length ?? 0;\n    if (addIndex < 0 || addIndex >= allChildrenCount || Number.isNaN(addIndex)) {\n      return allChildrenCount;\n    }\n    return Math.ceil(addIndex);\n  }\n  createRowNode(data, sourceRowIndex) {\n    const node = new RowNode(this.beans);\n    node.parent = this.rootNode;\n    node.level = 0;\n    node.group = false;\n    node.expanded = false;\n    node.sourceRowIndex = sourceRowIndex;\n    node.setDataAndId(data, String(this.nextId));\n    if (this.allNodesMap[node.id]) {\n      _warn(2, { nodeId: node.id });\n    }\n    this.allNodesMap[node.id] = node;\n    this.nextId++;\n    return node;\n  }\n  lookupRowNode(getRowIdFunc, data) {\n    let rowNode;\n    if (getRowIdFunc) {\n      const id = getRowIdFunc({ data, level: 0 });\n      rowNode = this.allNodesMap[id];\n      if (!rowNode) {\n        _error(4, { id });\n        return null;\n      }\n    } else {\n      rowNode = this.rootNode?.allLeafChildren?.find((node) => node.data === data);\n      if (!rowNode) {\n        _error(5, { data });\n        return null;\n      }\n    }\n    return rowNode || null;\n  }\n};\n\n// packages/ag-grid-community/src/interfaces/serverSideTransaction.ts\nvar ServerSideTransactionResultStatus = /* @__PURE__ */ ((ServerSideTransactionResultStatus2) => {\n  ServerSideTransactionResultStatus2[\"Applied\"] = \"Applied\";\n  ServerSideTransactionResultStatus2[\"StoreNotFound\"] = \"StoreNotFound\";\n  ServerSideTransactionResultStatus2[\"StoreLoading\"] = \"StoreLoading\";\n  ServerSideTransactionResultStatus2[\"StoreWaitingToLoad\"] = \"StoreWaitingToLoad\";\n  ServerSideTransactionResultStatus2[\"StoreLoadingFailed\"] = \"StoreLoadingFailed\";\n  ServerSideTransactionResultStatus2[\"StoreWrongType\"] = \"StoreWrongType\";\n  ServerSideTransactionResultStatus2[\"Cancelled\"] = \"Cancelled\";\n  ServerSideTransactionResultStatus2[\"StoreNotStarted\"] = \"StoreNotStarted\";\n  return ServerSideTransactionResultStatus2;\n})(ServerSideTransactionResultStatus || {});\n\n// packages/ag-grid-community/src/selection/checkboxSelectionComponent.ts\nvar CheckboxSelectionComponentElement = {\n  tag: \"div\",\n  cls: \"ag-selection-checkbox\",\n  role: \"presentation\",\n  children: [\n    {\n      tag: \"ag-checkbox\",\n      ref: \"eCheckbox\",\n      role: \"presentation\"\n    }\n  ]\n};\nvar CheckboxSelectionComponent = class extends Component {\n  constructor() {\n    super(CheckboxSelectionComponentElement, [AgCheckboxSelector]);\n    this.eCheckbox = RefPlaceholder;\n  }\n  postConstruct() {\n    this.eCheckbox.setPassive(true);\n  }\n  getCheckboxId() {\n    return this.eCheckbox.getInputElement().id;\n  }\n  onDataChanged() {\n    this.onSelectionChanged();\n  }\n  onSelectableChanged() {\n    this.showOrHideSelect();\n  }\n  onSelectionChanged() {\n    const translate = this.getLocaleTextFunc();\n    const { rowNode, eCheckbox } = this;\n    const state = rowNode.isSelected();\n    const stateName = _getAriaCheckboxStateName(translate, state);\n    const [ariaKey, ariaLabel] = rowNode.selectable ? [\"ariaRowToggleSelection\", \"Press Space to toggle row selection\"] : [\"ariaRowSelectionDisabled\", \"Row Selection is disabled for this row\"];\n    const translatedLabel = translate(ariaKey, ariaLabel);\n    eCheckbox.setValue(state, true);\n    eCheckbox.setInputAriaLabel(`${translatedLabel} (${stateName})`);\n  }\n  init(params) {\n    this.rowNode = params.rowNode;\n    this.column = params.column;\n    this.overrides = params.overrides;\n    this.onSelectionChanged();\n    this.addManagedListeners(this.eCheckbox.getInputElement(), {\n      // we don't want double click on this icon to open a group\n      dblclick: _stopPropagationForAgGrid,\n      click: (event) => {\n        _stopPropagationForAgGrid(event);\n        this.beans.selectionSvc?.handleSelectionEvent(event, this.rowNode, \"checkboxSelected\");\n      }\n    });\n    this.addManagedListeners(this.rowNode, {\n      rowSelected: this.onSelectionChanged.bind(this),\n      dataChanged: this.onDataChanged.bind(this),\n      selectableChanged: this.onSelectableChanged.bind(this)\n    });\n    this.addManagedPropertyListener(\"rowSelection\", ({ currentValue, previousValue }) => {\n      const curr = typeof currentValue === \"object\" ? _getHideDisabledCheckboxes(currentValue) : void 0;\n      const prev = typeof previousValue === \"object\" ? _getHideDisabledCheckboxes(previousValue) : void 0;\n      if (curr !== prev) {\n        this.onSelectableChanged();\n      }\n    });\n    const isRowSelectableFunc = _getIsRowSelectable(this.gos);\n    const checkboxVisibleIsDynamic = isRowSelectableFunc || typeof this.getIsVisible() === \"function\";\n    if (checkboxVisibleIsDynamic) {\n      const showOrHideSelectListener = this.showOrHideSelect.bind(this);\n      this.addManagedEventListeners({ displayedColumnsChanged: showOrHideSelectListener });\n      this.addManagedListeners(this.rowNode, {\n        dataChanged: showOrHideSelectListener,\n        cellChanged: showOrHideSelectListener\n      });\n      this.showOrHideSelect();\n    }\n    this.eCheckbox.getInputElement().setAttribute(\"tabindex\", \"-1\");\n  }\n  showOrHideSelect() {\n    const { column, rowNode, overrides, gos } = this;\n    let selectable = rowNode.selectable;\n    const isVisible = this.getIsVisible();\n    if (selectable) {\n      if (typeof isVisible === \"function\") {\n        const extraParams = overrides?.callbackParams;\n        if (!column) {\n          selectable = isVisible({ ...extraParams, node: rowNode, data: rowNode.data });\n        } else {\n          const params = column.createColumnFunctionCallbackParams(rowNode);\n          selectable = isVisible({ ...extraParams, ...params });\n        }\n      } else {\n        selectable = isVisible ?? false;\n      }\n    }\n    const so = gos.get(\"rowSelection\");\n    const disableInsteadOfHide = so && typeof so !== \"string\" ? !_getHideDisabledCheckboxes(so) : column?.getColDef().showDisabledCheckboxes;\n    if (disableInsteadOfHide) {\n      this.eCheckbox.setDisabled(!selectable);\n      this.setVisible(true);\n      this.setDisplayed(true);\n      return;\n    }\n    if (overrides?.removeHidden) {\n      this.setDisplayed(selectable);\n      return;\n    }\n    this.setVisible(selectable);\n  }\n  getIsVisible() {\n    const overrides = this.overrides;\n    if (overrides) {\n      return overrides.isVisible;\n    }\n    const so = this.gos.get(\"rowSelection\");\n    if (so && typeof so !== \"string\") {\n      return _getCheckboxes(so);\n    }\n    return this.column?.getColDef()?.checkboxSelection;\n  }\n};\n\n// packages/ag-grid-community/src/selection/rowRangeSelectionContext.ts\nvar RowRangeSelectionContext = class {\n  constructor(rowModel, pinnedRowModel) {\n    this.rowModel = rowModel;\n    this.pinnedRowModel = pinnedRowModel;\n    /** Whether the user is currently selecting all nodes either via the header checkbox or API */\n    this.selectAll = false;\n    this.rootId = null;\n    /**\n     * Note that the \"end\" `RowNode` may come before or after the \"root\" `RowNode` in the\n     * actual grid.\n     */\n    this.endId = null;\n    this.cachedRange = [];\n  }\n  reset() {\n    this.rootId = null;\n    this.endId = null;\n    this.cachedRange.length = 0;\n  }\n  setRoot(node) {\n    this.rootId = node.id;\n    this.endId = null;\n    this.cachedRange.length = 0;\n  }\n  setEndRange(end) {\n    this.endId = end.id;\n    this.cachedRange.length = 0;\n  }\n  getRange() {\n    if (this.cachedRange.length === 0) {\n      const root = this.getRoot();\n      const end = this.getEnd();\n      if (root == null || end == null) {\n        return this.cachedRange;\n      }\n      this.cachedRange = this.getNodesInRange(root, end) ?? [];\n    }\n    return this.cachedRange;\n  }\n  isInRange(node) {\n    if (this.rootId === null) {\n      return false;\n    }\n    return this.getRange().some((nodeInRange) => nodeInRange.id === node.id);\n  }\n  getRoot(fallback) {\n    if (this.rootId) {\n      return this.getRowNode(this.rootId);\n    }\n    if (fallback) {\n      this.setRoot(fallback);\n      return fallback;\n    }\n  }\n  getEnd() {\n    if (this.endId) {\n      return this.getRowNode(this.endId);\n    }\n  }\n  getRowNode(id) {\n    let node;\n    const { rowModel, pinnedRowModel } = this;\n    node ?? (node = rowModel.getRowNode(id));\n    if (pinnedRowModel?.isManual()) {\n      node ?? (node = pinnedRowModel.getPinnedRowById(id, \"top\"));\n      node ?? (node = pinnedRowModel.getPinnedRowById(id, \"bottom\"));\n    }\n    return node;\n  }\n  /**\n   * Truncates the range to the given node (assumed to be within the current range).\n   * Returns nodes that remain in the current range and those that should be removed\n   *\n   * @param node - Node at which to truncate the range\n   * @returns Object of nodes to either keep or discard (i.e. deselect) from the range\n   */\n  truncate(node) {\n    const range = this.getRange();\n    if (range.length === 0) {\n      return { keep: [], discard: [] };\n    }\n    const discardAfter = range[0].id === this.rootId;\n    const idx = range.findIndex((rowNode) => rowNode.id === node.id);\n    if (idx > -1) {\n      const above = range.slice(0, idx);\n      const below = range.slice(idx + 1);\n      this.setEndRange(node);\n      return discardAfter ? { keep: above, discard: below } : { keep: below, discard: above };\n    } else {\n      return { keep: range, discard: [] };\n    }\n  }\n  /**\n   * Extends the range to the given node. Returns nodes that remain in the current range\n   * and those that should be removed.\n   *\n   * @param node - Node marking the new end of the range\n   * @returns Object of nodes to either keep or discard (i.e. deselect) from the range\n   */\n  extend(node, groupSelectsChildren = false) {\n    const root = this.getRoot();\n    if (root == null) {\n      const keep = this.getRange().slice();\n      if (groupSelectsChildren) {\n        node.depthFirstSearch((node2) => !node2.group && keep.push(node2));\n      }\n      keep.push(node);\n      this.setRoot(node);\n      return { keep, discard: [] };\n    }\n    const newRange = this.getNodesInRange(root, node);\n    if (!newRange) {\n      this.setRoot(node);\n      return { keep: [node], discard: [] };\n    }\n    if (newRange.find((newRangeNode) => newRangeNode.id === this.endId)) {\n      this.setEndRange(node);\n      return { keep: this.getRange(), discard: [] };\n    } else {\n      const discard = this.getRange().slice();\n      this.setEndRange(node);\n      return { keep: this.getRange(), discard };\n    }\n  }\n  getNodesInRange(start, end) {\n    const { pinnedRowModel, rowModel } = this;\n    if (!pinnedRowModel?.isManual()) {\n      return rowModel.getNodesInRangeForSelection(start, end);\n    }\n    if (start.rowPinned === \"top\" && !end.rowPinned) {\n      const pinnedRange = _getNodesInRangeForSelection(pinnedRowModel, \"top\", start, void 0);\n      return pinnedRange.concat(rowModel.getNodesInRangeForSelection(rowModel.getRow(0), end) ?? []);\n    }\n    if (start.rowPinned === \"bottom\" && !end.rowPinned) {\n      const pinnedRange = _getNodesInRangeForSelection(pinnedRowModel, \"bottom\", void 0, start);\n      const count = rowModel.getRowCount();\n      const lastMain = rowModel.getRow(count - 1);\n      return (rowModel.getNodesInRangeForSelection(end, lastMain) ?? []).concat(pinnedRange);\n    }\n    if (!start.rowPinned && !end.rowPinned) {\n      return rowModel.getNodesInRangeForSelection(start, end);\n    }\n    if (start.rowPinned === \"top\" && end.rowPinned === \"top\") {\n      return _getNodesInRangeForSelection(pinnedRowModel, \"top\", start, end);\n    }\n    if (start.rowPinned === \"bottom\" && end.rowPinned === \"top\") {\n      const top = _getNodesInRangeForSelection(pinnedRowModel, \"top\", end, void 0);\n      const bottom = _getNodesInRangeForSelection(pinnedRowModel, \"bottom\", void 0, start);\n      const first = rowModel.getRow(0);\n      const last = rowModel.getRow(rowModel.getRowCount() - 1);\n      return top.concat(rowModel.getNodesInRangeForSelection(first, last) ?? []).concat(bottom);\n    }\n    if (!start.rowPinned && end.rowPinned === \"top\") {\n      const pinned = _getNodesInRangeForSelection(pinnedRowModel, \"top\", end, void 0);\n      return pinned.concat(rowModel.getNodesInRangeForSelection(rowModel.getRow(0), start) ?? []);\n    }\n    if (start.rowPinned === \"top\" && end.rowPinned === \"bottom\") {\n      const top = _getNodesInRangeForSelection(pinnedRowModel, \"top\", start, void 0);\n      const bottom = _getNodesInRangeForSelection(pinnedRowModel, \"bottom\", void 0, end);\n      const first = rowModel.getRow(0);\n      const last = rowModel.getRow(rowModel.getRowCount() - 1);\n      return top.concat(rowModel.getNodesInRangeForSelection(first, last) ?? []).concat(bottom);\n    }\n    if (start.rowPinned === \"bottom\" && end.rowPinned === \"bottom\") {\n      return _getNodesInRangeForSelection(pinnedRowModel, \"bottom\", start, end);\n    }\n    if (!start.rowPinned && end.rowPinned === \"bottom\") {\n      const pinned = _getNodesInRangeForSelection(pinnedRowModel, \"bottom\", void 0, end);\n      const last = rowModel.getRow(rowModel.getRowCount());\n      return (rowModel.getNodesInRangeForSelection(start, last) ?? []).concat(pinned);\n    }\n    return null;\n  }\n};\n\n// packages/ag-grid-community/src/selection/selectAllFeature.ts\nvar SelectAllFeature = class extends BeanStub {\n  constructor(column) {\n    super();\n    this.column = column;\n    this.cbSelectAllVisible = false;\n    this.processingEventFromCheckbox = false;\n  }\n  onSpaceKeyDown(e) {\n    const checkbox = this.cbSelectAll;\n    if (checkbox.isDisplayed() && !checkbox.getGui().contains(_getActiveDomElement(this.beans))) {\n      e.preventDefault();\n      checkbox.setValue(!checkbox.getValue());\n    }\n  }\n  getCheckboxGui() {\n    return this.cbSelectAll.getGui();\n  }\n  setComp(ctrl) {\n    this.headerCellCtrl = ctrl;\n    const cbSelectAll = this.createManagedBean(new AgCheckbox());\n    this.cbSelectAll = cbSelectAll;\n    cbSelectAll.addCss(\"ag-header-select-all\");\n    _setAriaRole(cbSelectAll.getGui(), \"presentation\");\n    this.showOrHideSelectAll();\n    const updateStateOfCheckbox = this.updateStateOfCheckbox.bind(this);\n    this.addManagedEventListeners({\n      newColumnsLoaded: () => this.showOrHideSelectAll(),\n      displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this),\n      selectionChanged: updateStateOfCheckbox,\n      paginationChanged: updateStateOfCheckbox,\n      modelUpdated: updateStateOfCheckbox\n    });\n    this.addManagedPropertyListener(\"rowSelection\", ({ currentValue, previousValue }) => {\n      const getSelectAll = (rowSelection) => typeof rowSelection === \"string\" || !rowSelection || rowSelection.mode === \"singleRow\" ? void 0 : rowSelection.selectAll;\n      if (getSelectAll(currentValue) !== getSelectAll(previousValue)) {\n        this.showOrHideSelectAll();\n      }\n      this.updateStateOfCheckbox();\n    });\n    this.addManagedListeners(cbSelectAll, { fieldValueChanged: this.onCbSelectAll.bind(this) });\n    cbSelectAll.getInputElement().setAttribute(\"tabindex\", \"-1\");\n    this.refreshSelectAllLabel();\n  }\n  onDisplayedColumnsChanged(e) {\n    if (!this.isAlive()) {\n      return;\n    }\n    this.showOrHideSelectAll(e.source === \"uiColumnMoved\");\n  }\n  showOrHideSelectAll(fromColumnMoved = false) {\n    const cbSelectAllVisible = this.isCheckboxSelection();\n    this.cbSelectAllVisible = cbSelectAllVisible;\n    this.cbSelectAll.setDisplayed(cbSelectAllVisible);\n    if (cbSelectAllVisible) {\n      this.checkRightRowModelType(\"selectAllCheckbox\");\n      this.checkSelectionType(\"selectAllCheckbox\");\n      this.updateStateOfCheckbox();\n    }\n    this.refreshSelectAllLabel(fromColumnMoved);\n  }\n  updateStateOfCheckbox() {\n    if (!this.cbSelectAllVisible || this.processingEventFromCheckbox) {\n      return;\n    }\n    this.processingEventFromCheckbox = true;\n    const selectAllMode = this.getSelectAllMode();\n    const selectionSvc = this.beans.selectionSvc;\n    const cbSelectAll = this.cbSelectAll;\n    const allSelected = selectionSvc.getSelectAllState(selectAllMode);\n    cbSelectAll.setValue(allSelected);\n    const hasNodesToSelect = selectionSvc.hasNodesToSelect(selectAllMode);\n    cbSelectAll.setDisabled(!hasNodesToSelect);\n    this.refreshSelectAllLabel();\n    this.processingEventFromCheckbox = false;\n  }\n  refreshSelectAllLabel(fromColumnMoved = false) {\n    const translate = this.getLocaleTextFunc();\n    const { headerCellCtrl, cbSelectAll, cbSelectAllVisible } = this;\n    const checked = cbSelectAll.getValue();\n    const ariaStatus = checked ? translate(\"ariaChecked\", \"checked\") : translate(\"ariaUnchecked\", \"unchecked\");\n    const ariaLabel = translate(\"ariaRowSelectAll\", \"Press Space to toggle all rows selection\");\n    headerCellCtrl.setAriaDescriptionProperty(\n      \"selectAll\",\n      cbSelectAllVisible ? `${ariaLabel} (${ariaStatus})` : null\n    );\n    cbSelectAll.setInputAriaLabel(translate(\"ariaHeaderSelection\", \"Column with Header Selection\"));\n    if (!fromColumnMoved) {\n      headerCellCtrl.announceAriaDescription();\n    }\n  }\n  checkSelectionType(feature) {\n    const isMultiSelect = _isMultiRowSelection(this.gos);\n    if (!isMultiSelect) {\n      _warn(128, { feature });\n      return false;\n    }\n    return true;\n  }\n  checkRightRowModelType(feature) {\n    const { gos, rowModel } = this.beans;\n    const rowModelMatches = _isClientSideRowModel(gos) || _isServerSideRowModel(gos);\n    if (!rowModelMatches) {\n      _warn(129, { feature, rowModel: rowModel.getType() });\n      return false;\n    }\n    return true;\n  }\n  onCbSelectAll() {\n    if (this.processingEventFromCheckbox) {\n      return;\n    }\n    if (!this.cbSelectAllVisible) {\n      return;\n    }\n    const value = this.cbSelectAll.getValue();\n    const selectAll2 = this.getSelectAllMode();\n    let source = \"uiSelectAll\";\n    if (selectAll2 === \"currentPage\") {\n      source = \"uiSelectAllCurrentPage\";\n    } else if (selectAll2 === \"filtered\") {\n      source = \"uiSelectAllFiltered\";\n    }\n    const params = { source, selectAll: selectAll2 };\n    const selectionSvc = this.beans.selectionSvc;\n    if (value) {\n      selectionSvc.selectAllRowNodes(params);\n    } else {\n      selectionSvc.deselectAllRowNodes(params);\n    }\n  }\n  /**\n   * Checkbox is enabled when either the `headerCheckbox` option is enabled in the new selection API\n   * or `headerCheckboxSelection` is enabled in the legacy API.\n   */\n  isCheckboxSelection() {\n    const { column, gos, beans } = this;\n    const rowSelection = gos.get(\"rowSelection\");\n    const colDef = column.getColDef();\n    const { headerCheckboxSelection } = colDef;\n    let result = false;\n    const newHeaderCheckbox = typeof rowSelection === \"object\";\n    if (newHeaderCheckbox) {\n      const isSelectionCol = isColumnSelectionCol(column);\n      const isAutoCol = isColumnGroupAutoCol(column);\n      const location = _getCheckboxLocation(rowSelection);\n      if (location === \"autoGroupColumn\" && isAutoCol || isSelectionCol && beans.selectionColSvc?.isSelectionColumnEnabled()) {\n        result = _getHeaderCheckbox(rowSelection);\n      }\n    } else {\n      if (typeof headerCheckboxSelection === \"function\") {\n        result = headerCheckboxSelection(_addGridCommonParams(gos, { column, colDef }));\n      } else {\n        result = !!headerCheckboxSelection;\n      }\n    }\n    const featureName = newHeaderCheckbox ? \"headerCheckbox\" : \"headerCheckboxSelection\";\n    return result && this.checkRightRowModelType(featureName) && this.checkSelectionType(featureName);\n  }\n  getSelectAllMode() {\n    const selectAll2 = _getSelectAll(this.gos, false);\n    if (selectAll2) {\n      return selectAll2;\n    }\n    const { headerCheckboxSelectionCurrentPageOnly, headerCheckboxSelectionFilteredOnly } = this.column.getColDef();\n    if (headerCheckboxSelectionCurrentPageOnly) {\n      return \"currentPage\";\n    }\n    if (headerCheckboxSelectionFilteredOnly) {\n      return \"filtered\";\n    }\n    return \"all\";\n  }\n};\n\n// packages/ag-grid-community/src/selection/baseSelectionService.ts\nvar BaseSelectionService = class extends BeanStub {\n  postConstruct() {\n    const { gos, beans } = this;\n    this.selectionCtx = new RowRangeSelectionContext(beans.rowModel, beans.pinnedRowModel);\n    this.addManagedPropertyListeners([\"isRowSelectable\", \"rowSelection\"], () => {\n      const callback = _getIsRowSelectable(gos);\n      if (callback !== this.isRowSelectable) {\n        this.isRowSelectable = callback;\n        this.updateSelectable();\n      }\n    });\n    this.isRowSelectable = _getIsRowSelectable(gos);\n  }\n  destroy() {\n    super.destroy();\n    this.selectionCtx.reset();\n  }\n  createCheckboxSelectionComponent() {\n    return new CheckboxSelectionComponent();\n  }\n  createSelectAllFeature(column) {\n    return new SelectAllFeature(column);\n  }\n  isMultiSelect() {\n    return _isMultiRowSelection(this.gos);\n  }\n  onRowCtrlSelected(rowCtrl, hasFocusFunc, gui) {\n    const selected = !!rowCtrl.rowNode.isSelected();\n    rowCtrl.forEachGui(gui, (gui2) => {\n      gui2.rowComp.toggleCss(\"ag-row-selected\", selected);\n      const element = gui2.element;\n      _setAriaSelected(element, selected);\n      const hasFocus = element.contains(_getActiveDomElement(this.beans));\n      if (hasFocus) {\n        hasFocusFunc(gui2);\n      }\n    });\n  }\n  announceAriaRowSelection(rowNode) {\n    if (this.isRowSelectionBlocked(rowNode)) {\n      return;\n    }\n    const selected = rowNode.isSelected();\n    if (!rowNode.selectable) {\n      return;\n    }\n    const translate = this.getLocaleTextFunc();\n    const label = translate(\n      selected ? \"ariaRowDeselect\" : \"ariaRowSelect\",\n      `Press SPACE to ${selected ? \"deselect\" : \"select\"} this row`\n    );\n    this.beans.ariaAnnounce?.announceValue(label, \"rowSelection\");\n  }\n  isRowSelectionBlocked(rowNode) {\n    return !rowNode.selectable || rowNode.rowPinned && !_isManualPinnedRow(rowNode) || !_isRowSelection(this.gos);\n  }\n  updateRowSelectable(rowNode, suppressSelectionUpdate) {\n    const selectable = this.isRowSelectable?.(rowNode) ?? true;\n    this.setRowSelectable(rowNode, selectable, suppressSelectionUpdate);\n    return selectable;\n  }\n  setRowSelectable(rowNode, newVal, suppressSelectionUpdate) {\n    if (rowNode.selectable !== newVal) {\n      rowNode.selectable = newVal;\n      rowNode.dispatchRowEvent(\"selectableChanged\");\n      if (suppressSelectionUpdate) {\n        return;\n      }\n      const isGroupSelectsChildren = _getGroupSelectsDescendants(this.gos);\n      if (isGroupSelectsChildren) {\n        const selected = this.calculateSelectedFromChildren(rowNode);\n        this.setNodesSelected({ nodes: [rowNode], newValue: selected ?? false, source: \"selectableChanged\" });\n        return;\n      }\n      if (rowNode.isSelected() && !rowNode.selectable) {\n        this.setNodesSelected({ nodes: [rowNode], newValue: false, source: \"selectableChanged\" });\n      }\n    }\n  }\n  calculateSelectedFromChildren(rowNode) {\n    let atLeastOneSelected = false;\n    let atLeastOneDeSelected = false;\n    if (!rowNode.childrenAfterGroup?.length) {\n      return rowNode.selectable ? rowNode.__selected : null;\n    }\n    for (let i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n      const child = rowNode.childrenAfterGroup[i];\n      let childState = child.isSelected();\n      if (!child.selectable) {\n        const selectable = this.calculateSelectedFromChildren(child);\n        if (selectable === null) {\n          continue;\n        }\n        childState = selectable;\n      }\n      switch (childState) {\n        case true:\n          atLeastOneSelected = true;\n          break;\n        case false:\n          atLeastOneDeSelected = true;\n          break;\n        default:\n          return void 0;\n      }\n    }\n    if (atLeastOneSelected && atLeastOneDeSelected) {\n      return void 0;\n    }\n    if (atLeastOneSelected) {\n      return true;\n    }\n    if (atLeastOneDeSelected) {\n      return false;\n    }\n    if (!rowNode.selectable) {\n      return null;\n    }\n    return rowNode.__selected;\n  }\n  selectRowNode(rowNode, newValue, e, source = \"api\") {\n    const selectionNotAllowed = !rowNode.selectable && newValue;\n    const selectionNotChanged = rowNode.__selected === newValue;\n    if (selectionNotAllowed || selectionNotChanged) {\n      return false;\n    }\n    rowNode.__selected = newValue;\n    rowNode.dispatchRowEvent(\"rowSelected\");\n    const sibling = rowNode.sibling;\n    if (sibling && sibling.footer && sibling.__localEventService) {\n      sibling.dispatchRowEvent(\"rowSelected\");\n    }\n    const pinnedSibling = rowNode.pinnedSibling;\n    if (pinnedSibling && pinnedSibling.rowPinned && pinnedSibling.__localEventService) {\n      pinnedSibling.dispatchRowEvent(\"rowSelected\");\n    }\n    this.eventSvc.dispatchEvent({\n      ..._createGlobalRowEvent(rowNode, this.gos, \"rowSelected\"),\n      event: e || null,\n      source\n    });\n    return true;\n  }\n  isCellCheckboxSelection(column, rowNode) {\n    const so = this.gos.get(\"rowSelection\");\n    if (so && typeof so !== \"string\") {\n      const checkbox = isColumnSelectionCol(column) && _getCheckboxes(so);\n      return column.isColumnFunc(rowNode, checkbox);\n    } else {\n      return column.isColumnFunc(rowNode, column.colDef.checkboxSelection);\n    }\n  }\n  inferNodeSelections(node, shiftKey, metaKey, source) {\n    const { gos, selectionCtx } = this;\n    const currentSelection = node.isSelected();\n    const groupSelectsDescendants = _getGroupSelectsDescendants(gos);\n    const enableClickSelection = _getEnableSelection(gos);\n    const enableDeselection = _getEnableDeselection(gos);\n    const isMultiSelect = this.isMultiSelect();\n    const isRowClicked = source === \"rowClicked\";\n    if (isRowClicked && !(enableClickSelection || enableDeselection))\n      return null;\n    if (shiftKey && metaKey && isMultiSelect) {\n      const root = selectionCtx.getRoot();\n      if (!root) {\n        return null;\n      } else if (!root.isSelected()) {\n        const partition = selectionCtx.extend(node, groupSelectsDescendants);\n        return {\n          select: [],\n          deselect: partition.keep,\n          reset: false\n        };\n      } else {\n        const partition = selectionCtx.isInRange(node) ? selectionCtx.truncate(node) : selectionCtx.extend(node, groupSelectsDescendants);\n        return {\n          deselect: partition.discard,\n          select: partition.keep,\n          reset: false\n        };\n      }\n    } else if (shiftKey && isMultiSelect) {\n      const fallback = selectionCtx.selectAll ? this.beans.rowModel.getRow(0) : void 0;\n      const root = selectionCtx.getRoot(fallback);\n      const partition = selectionCtx.isInRange(node) ? selectionCtx.truncate(node) : selectionCtx.extend(node, groupSelectsDescendants);\n      return {\n        select: partition.keep,\n        deselect: partition.discard,\n        reset: selectionCtx.selectAll || !!(root && !root.isSelected())\n      };\n    } else if (metaKey) {\n      if (isRowClicked) {\n        const newValue = !currentSelection;\n        const selectingWhenDisabled = newValue && !enableClickSelection;\n        const deselectingWhenDisabled = !newValue && !enableDeselection;\n        if (selectingWhenDisabled || deselectingWhenDisabled)\n          return null;\n        selectionCtx.setRoot(node);\n        return {\n          node,\n          newValue,\n          clearSelection: false\n        };\n      }\n      selectionCtx.setRoot(node);\n      return {\n        node,\n        newValue: !currentSelection,\n        clearSelection: !isMultiSelect\n      };\n    } else {\n      selectionCtx.setRoot(node);\n      const enableSelectionWithoutKeys = _getEnableSelectionWithoutKeys(gos);\n      const groupSelectsFiltered = _getGroupSelection(gos) === \"filteredDescendants\";\n      const shouldClear = isRowClicked && (!enableSelectionWithoutKeys || !enableClickSelection);\n      if (groupSelectsFiltered && currentSelection === void 0 && _isClientSideRowModel(gos)) {\n        return {\n          node,\n          newValue: false,\n          clearSelection: !isMultiSelect || shouldClear\n        };\n      }\n      if (isRowClicked) {\n        const newValue = currentSelection ? !enableSelectionWithoutKeys : enableClickSelection;\n        const selectingWhenDisabled = newValue && !enableClickSelection;\n        const deselectingWhenDisabled = !newValue && !enableDeselection;\n        const wouldStateBeUnchanged = newValue === currentSelection && !shouldClear;\n        if (wouldStateBeUnchanged || selectingWhenDisabled || deselectingWhenDisabled)\n          return null;\n        return {\n          node,\n          newValue,\n          clearSelection: !isMultiSelect || shouldClear,\n          keepDescendants: node.group && groupSelectsDescendants\n        };\n      }\n      return {\n        node,\n        newValue: !currentSelection,\n        clearSelection: !isMultiSelect || shouldClear\n      };\n    }\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agRadioButton.ts\nvar AgRadioButton = class extends AgCheckbox {\n  constructor(config) {\n    super(config, \"ag-radio-button\", \"radio\");\n  }\n  isSelected() {\n    return this.eInput.checked;\n  }\n  toggle() {\n    if (this.eInput.disabled) {\n      return;\n    }\n    if (!this.isSelected()) {\n      this.setValue(true);\n    }\n  }\n  addInputListeners() {\n    super.addInputListeners();\n    this.addManagedEventListeners({ checkboxChanged: this.onChange.bind(this) });\n  }\n  /**\n   * This ensures that if another radio button in the same named group is selected, we deselect this radio button.\n   * By default the browser does this for you, but we are managing classes ourselves in order to ensure input\n   * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,\n   * not deselected, so we need to use our own event.\n   */\n  onChange(event) {\n    const eInput = this.eInput;\n    if (event.selected && event.name && eInput.name && eInput.name === event.name && event.id && eInput.id !== event.id) {\n      this.setValue(false, true);\n    }\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agToggleButton.css-GENERATED.ts\nvar agToggleButtonCSS = (\n  /*css*/\n  `.ag-toggle-button{flex:none;min-width:unset;width:unset}.ag-toggle-button-input-wrapper{background-color:var(--ag-toggle-button-off-background-color);border-radius:calc(var(--ag-toggle-button-height)*.5);flex:none;height:var(--ag-toggle-button-height);max-width:var(--ag-toggle-button-width);min-width:var(--ag-toggle-button-width);position:relative;transition:background-color .1s;:where(.ag-toggle-button-input){-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;display:block;height:var(--ag-toggle-button-height);margin:0;max-width:var(--ag-toggle-button-width);min-width:var(--ag-toggle-button-width);opacity:0}&:before{background-color:var(--ag-toggle-button-switch-background-color);border-radius:100%;content:\"\";display:block;height:calc(var(--ag-toggle-button-height) - var(--ag-toggle-button-switch-inset)*2);left:var(--ag-toggle-button-switch-inset);pointer-events:none;position:absolute;top:var(--ag-toggle-button-switch-inset);transition:left .1s;width:calc(var(--ag-toggle-button-height) - var(--ag-toggle-button-switch-inset)*2)}&.ag-checked{background-color:var(--ag-toggle-button-on-background-color);&:before{left:calc(100% - var(--ag-toggle-button-height) + var(--ag-toggle-button-switch-inset))}}&:focus-within{box-shadow:var(--ag-focus-shadow)}&.ag-disabled{opacity:.5}}`\n);\n\n// packages/ag-grid-community/src/widgets/agToggleButton.ts\nvar AgToggleButton = class extends AgCheckbox {\n  constructor(config) {\n    super(config, \"ag-toggle-button\");\n    this.registerCSS(agToggleButtonCSS);\n  }\n  setValue(value, silent) {\n    super.setValue(value, silent);\n    this.toggleCss(\"ag-selected\", this.getValue());\n    return this;\n  }\n};\nvar AgToggleButtonSelector = {\n  selector: \"AG-TOGGLE-BUTTON\",\n  component: AgToggleButton\n};\n\n// packages/ag-grid-community/src/widgets/agInputTextField.ts\nvar AgInputTextField = class extends AgAbstractInputField {\n  constructor(config, className = \"ag-text-field\", inputType = \"text\") {\n    super(config, className, inputType);\n  }\n  postConstruct() {\n    super.postConstruct();\n    if (this.config.allowedCharPattern) {\n      this.preventDisallowedCharacters();\n    }\n  }\n  setValue(value, silent) {\n    const eInput = this.eInput;\n    if (eInput.value !== value) {\n      eInput.value = _exists(value) ? value : \"\";\n    }\n    return super.setValue(value, silent);\n  }\n  /** Used to set an initial value into the input without necessarily setting `this.value` or triggering events (e.g. to set an invalid value) */\n  setStartValue(value) {\n    this.setValue(value, true);\n  }\n  preventDisallowedCharacters() {\n    const pattern = new RegExp(`[${this.config.allowedCharPattern}]`);\n    const preventCharacters = (event) => {\n      if (!_isEventFromPrintableCharacter(event)) {\n        return;\n      }\n      if (event.key && !pattern.test(event.key)) {\n        event.preventDefault();\n      }\n    };\n    this.addManagedListeners(this.eInput, {\n      keydown: preventCharacters,\n      paste: (e) => {\n        const text = e.clipboardData?.getData(\"text\");\n        if (text && text.split(\"\").some((c) => !pattern.test(c))) {\n          e.preventDefault();\n        }\n      }\n    });\n  }\n};\nvar AgInputTextFieldSelector = {\n  selector: \"AG-INPUT-TEXT-FIELD\",\n  component: AgInputTextField\n};\n\n// packages/ag-grid-community/src/widgets/agInputTextArea.ts\nvar AgInputTextArea = class extends AgAbstractInputField {\n  constructor(config) {\n    super(config, \"ag-text-area\", null, \"textarea\");\n  }\n  setValue(value, silent) {\n    const ret = super.setValue(value, silent);\n    this.eInput.value = value;\n    return ret;\n  }\n  setCols(cols) {\n    this.eInput.cols = cols;\n    return this;\n  }\n  setRows(rows) {\n    this.eInput.rows = rows;\n    return this;\n  }\n};\nvar AgInputTextAreaSelector = {\n  selector: \"AG-INPUT-TEXT-AREA\",\n  component: AgInputTextArea\n};\n\n// packages/ag-grid-community/src/widgets/agInputNumberField.ts\nvar AgInputNumberField = class extends AgInputTextField {\n  constructor(config) {\n    super(config, \"ag-number-field\", \"number\");\n  }\n  postConstruct() {\n    super.postConstruct();\n    const eInput = this.eInput;\n    this.addManagedListeners(eInput, {\n      blur: () => {\n        const floatedValue = parseFloat(eInput.value);\n        const value = isNaN(floatedValue) ? \"\" : this.normalizeValue(floatedValue.toString());\n        if (this.value !== value) {\n          this.setValue(value);\n        }\n      },\n      wheel: this.onWheel.bind(this)\n    });\n    eInput.step = \"any\";\n    const { precision, min, max, step } = this.config;\n    if (typeof precision === \"number\")\n      this.setPrecision(precision);\n    if (typeof min === \"number\")\n      this.setMin(min);\n    if (typeof max === \"number\")\n      this.setMax(max);\n    if (typeof step === \"number\")\n      this.setStep(step);\n  }\n  onWheel(e) {\n    if (_getActiveDomElement(this.beans) === this.eInput) {\n      e.preventDefault();\n    }\n  }\n  normalizeValue(value) {\n    if (value === \"\") {\n      return \"\";\n    }\n    if (this.precision != null) {\n      value = this.adjustPrecision(value);\n    }\n    const val = parseFloat(value);\n    const { min, max } = this;\n    if (min != null && val < min) {\n      value = min.toString();\n    } else if (max != null && val > max) {\n      value = max.toString();\n    }\n    return value;\n  }\n  adjustPrecision(value, isScientificNotation) {\n    const precision = this.precision;\n    if (precision == null) {\n      return value;\n    }\n    if (isScientificNotation) {\n      const floatString = parseFloat(value).toFixed(precision);\n      return parseFloat(floatString).toString();\n    }\n    const parts = String(value).split(\".\");\n    if (parts.length > 1) {\n      if (parts[1].length <= precision) {\n        return value;\n      } else if (precision > 0) {\n        return `${parts[0]}.${parts[1].slice(0, precision)}`;\n      }\n    }\n    return parts[0];\n  }\n  setMin(min) {\n    if (this.min === min) {\n      return this;\n    }\n    this.min = min;\n    _addOrRemoveAttribute(this.eInput, \"min\", min);\n    return this;\n  }\n  setMax(max) {\n    if (this.max === max) {\n      return this;\n    }\n    this.max = max;\n    _addOrRemoveAttribute(this.eInput, \"max\", max);\n    return this;\n  }\n  setPrecision(precision) {\n    this.precision = precision;\n    return this;\n  }\n  setStep(step) {\n    if (this.step === step) {\n      return this;\n    }\n    this.step = step;\n    _addOrRemoveAttribute(this.eInput, \"step\", step);\n    return this;\n  }\n  setValue(value, silent) {\n    return this.setValueOrInputValue(\n      (v) => super.setValue(v, silent),\n      () => this,\n      value\n    );\n  }\n  setStartValue(value) {\n    return this.setValueOrInputValue(\n      (v) => super.setValue(v, true),\n      (v) => {\n        this.eInput.value = v;\n      },\n      value\n    );\n  }\n  setValueOrInputValue(setValueFunc, setInputValueOnlyFunc, value) {\n    if (_exists(value)) {\n      let setInputValueOnly = this.isScientificNotation(value);\n      if (setInputValueOnly && this.eInput.validity.valid) {\n        return setValueFunc(value);\n      }\n      if (!setInputValueOnly) {\n        value = this.adjustPrecision(value);\n        const normalizedValue = this.normalizeValue(value);\n        setInputValueOnly = value != normalizedValue;\n      }\n      if (setInputValueOnly) {\n        return setInputValueOnlyFunc(value);\n      }\n    }\n    return setValueFunc(value);\n  }\n  getValue() {\n    const eInput = this.eInput;\n    if (!eInput.validity.valid) {\n      return void 0;\n    }\n    const inputValue = eInput.value;\n    if (this.isScientificNotation(inputValue)) {\n      return this.adjustPrecision(inputValue, true);\n    }\n    return super.getValue();\n  }\n  isScientificNotation(value) {\n    return typeof value === \"string\" && value.includes(\"e\");\n  }\n};\nvar AgInputNumberFieldSelector = {\n  selector: \"AG-INPUT-NUMBER-FIELD\",\n  component: AgInputNumberField\n};\n\n// packages/ag-grid-community/src/utils/date.ts\nfunction _padStartWidthZeros(value, totalStringSize) {\n  return value.toString().padStart(totalStringSize, \"0\");\n}\nfunction _serialiseDate(date, includeTime = true, separator = \"-\") {\n  if (!date) {\n    return null;\n  }\n  let serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map((part) => _padStartWidthZeros(part, 2)).join(separator);\n  if (includeTime) {\n    serialised += \" \" + [date.getHours(), date.getMinutes(), date.getSeconds()].map((part) => _padStartWidthZeros(part, 2)).join(\":\");\n  }\n  return serialised;\n}\nvar calculateOrdinal = (value) => {\n  if (value > 3 && value < 21) {\n    return \"th\";\n  }\n  const remainder = value % 10;\n  switch (remainder) {\n    case 1:\n      return \"st\";\n    case 2:\n      return \"nd\";\n    case 3:\n      return \"rd\";\n  }\n  return \"th\";\n};\nfunction _dateToFormattedString(date, format = \"YYYY-MM-DD\") {\n  const fullYear = _padStartWidthZeros(date.getFullYear(), 4);\n  const months = [\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  const days = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n  const replace = {\n    YYYY: () => fullYear.slice(fullYear.length - 4, fullYear.length),\n    YY: () => fullYear.slice(fullYear.length - 2, fullYear.length),\n    Y: () => `${date.getFullYear()}`,\n    MMMM: () => months[date.getMonth()],\n    MMM: () => months[date.getMonth()].slice(0, 3),\n    MM: () => _padStartWidthZeros(date.getMonth() + 1, 2),\n    Mo: () => `${date.getMonth() + 1}${calculateOrdinal(date.getMonth() + 1)}`,\n    M: () => `${date.getMonth() + 1}`,\n    Do: () => `${date.getDate()}${calculateOrdinal(date.getDate())}`,\n    DD: () => _padStartWidthZeros(date.getDate(), 2),\n    D: () => `${date.getDate()}`,\n    dddd: () => days[date.getDay()],\n    ddd: () => days[date.getDay()].slice(0, 3),\n    dd: () => days[date.getDay()].slice(0, 2),\n    do: () => `${date.getDay()}${calculateOrdinal(date.getDay())}`,\n    d: () => `${date.getDay()}`\n  };\n  const regexp = new RegExp(Object.keys(replace).join(\"|\"), \"g\");\n  return format.replace(regexp, (match) => {\n    if (match in replace) {\n      return replace[match]();\n    }\n    return match;\n  });\n}\nfunction _parseDateTimeFromString(value) {\n  if (!value) {\n    return null;\n  }\n  const [dateStr, timeStr] = value.split(\" \");\n  if (!dateStr) {\n    return null;\n  }\n  const fields = dateStr.split(\"-\").map((f) => parseInt(f, 10));\n  if (fields.filter((f) => !isNaN(f)).length !== 3) {\n    return null;\n  }\n  const [year, month, day] = fields;\n  const date = new Date(year, month - 1, day);\n  if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n    return null;\n  }\n  if (!timeStr || timeStr === \"00:00:00\") {\n    return date;\n  }\n  const [hours, minutes, seconds] = timeStr.split(\":\").map((part) => parseInt(part, 10));\n  if (hours >= 0 && hours < 24) {\n    date.setHours(hours);\n  }\n  if (minutes >= 0 && minutes < 60) {\n    date.setMinutes(minutes);\n  }\n  if (seconds >= 0 && seconds < 60) {\n    date.setSeconds(seconds);\n  }\n  return date;\n}\n\n// packages/ag-grid-community/src/widgets/agInputDateField.ts\nvar AgInputDateField = class extends AgInputTextField {\n  constructor(config) {\n    super(config, \"ag-date-field\", \"date\");\n  }\n  postConstruct() {\n    super.postConstruct();\n    const usingSafari = _isBrowserSafari();\n    this.addManagedListeners(this.eInput, {\n      wheel: this.onWheel.bind(this),\n      mousedown: () => {\n        if (this.isDisabled() || usingSafari) {\n          return;\n        }\n        this.eInput.focus();\n      }\n    });\n    this.eInput.step = \"any\";\n  }\n  onWheel(e) {\n    if (_getActiveDomElement(this.beans) === this.eInput) {\n      e.preventDefault();\n    }\n  }\n  setMin(minDate) {\n    const min = minDate instanceof Date ? _serialiseDate(minDate ?? null, false) ?? void 0 : minDate;\n    if (this.min === min) {\n      return this;\n    }\n    this.min = min;\n    _addOrRemoveAttribute(this.eInput, \"min\", min);\n    return this;\n  }\n  setMax(maxDate) {\n    const max = maxDate instanceof Date ? _serialiseDate(maxDate ?? null, false) ?? void 0 : maxDate;\n    if (this.max === max) {\n      return this;\n    }\n    this.max = max;\n    _addOrRemoveAttribute(this.eInput, \"max\", max);\n    return this;\n  }\n  setStep(step) {\n    if (this.step === step) {\n      return this;\n    }\n    this.step = step;\n    _addOrRemoveAttribute(this.eInput, \"step\", step);\n    return this;\n  }\n  getDate() {\n    if (!this.eInput.validity.valid) {\n      return void 0;\n    }\n    return _parseDateTimeFromString(this.getValue()) ?? void 0;\n  }\n  setDate(date, silent) {\n    this.setValue(_serialiseDate(date ?? null, false), silent);\n  }\n};\nvar AgInputDateFieldSelector = {\n  selector: \"AG-INPUT-DATE-FIELD\",\n  component: AgInputDateField\n};\n\n// packages/ag-grid-community/src/tooltip/tooltipStateManager.ts\nvar SHOW_QUICK_TOOLTIP_DIFF = 1e3;\nvar FADE_OUT_TOOLTIP_TIMEOUT = 1e3;\nvar INTERACTIVE_HIDE_DELAY = 100;\nvar lastTooltipHideTime;\nvar isLocked = false;\nvar TooltipStateManager = class extends BeanStub {\n  constructor(tooltipCtrl, getTooltipValue) {\n    super();\n    this.tooltipCtrl = tooltipCtrl;\n    this.getTooltipValue = getTooltipValue;\n    this.interactionEnabled = false;\n    this.isInteractingWithTooltip = false;\n    this.state = 0 /* NOTHING */;\n    // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to\n    // async we could request two tooltips before the first instance returns, in which case we should\n    // disregard the second instance.\n    this.tooltipInstanceCount = 0;\n    this.tooltipMouseTrack = false;\n  }\n  wireBeans(beans) {\n    this.popupSvc = beans.popupSvc;\n    this.userCompFactory = beans.userCompFactory;\n  }\n  postConstruct() {\n    if (this.gos.get(\"tooltipInteraction\")) {\n      this.interactionEnabled = true;\n    }\n    this.tooltipTrigger = this.getTooltipTrigger();\n    this.tooltipMouseTrack = this.gos.get(\"tooltipMouseTrack\");\n    const el = this.tooltipCtrl.getGui();\n    if (this.tooltipTrigger === 0 /* HOVER */) {\n      this.addManagedListeners(el, {\n        mouseenter: this.onMouseEnter.bind(this),\n        mouseleave: this.onMouseLeave.bind(this)\n      });\n    }\n    if (this.tooltipTrigger === 1 /* FOCUS */) {\n      this.addManagedListeners(el, {\n        focusin: this.onFocusIn.bind(this),\n        focusout: this.onFocusOut.bind(this)\n      });\n    }\n    this.addManagedListeners(el, { mousemove: this.onMouseMove.bind(this) });\n    if (!this.interactionEnabled) {\n      this.addManagedListeners(el, {\n        mousedown: this.onMouseDown.bind(this),\n        keydown: this.onKeyDown.bind(this)\n      });\n    }\n  }\n  getGridOptionsTooltipDelay(delayOption) {\n    const delay = this.gos.get(delayOption);\n    return Math.max(200, delay);\n  }\n  getTooltipDelay(type) {\n    if (type === \"show\") {\n      return this.tooltipCtrl.getTooltipShowDelayOverride?.() ?? this.getGridOptionsTooltipDelay(\"tooltipShowDelay\");\n    }\n    return this.tooltipCtrl.getTooltipHideDelayOverride?.() ?? this.getGridOptionsTooltipDelay(\"tooltipHideDelay\");\n  }\n  destroy() {\n    this.setToDoNothing();\n    super.destroy();\n  }\n  getTooltipTrigger() {\n    const trigger = this.gos.get(\"tooltipTrigger\");\n    if (!trigger || trigger === \"hover\") {\n      return 0 /* HOVER */;\n    }\n    return 1 /* FOCUS */;\n  }\n  onMouseEnter(e) {\n    if (this.interactionEnabled && this.interactiveTooltipTimeoutId) {\n      this.unlockService();\n      this.startHideTimeout();\n    }\n    if (_isIOSUserAgent()) {\n      return;\n    }\n    if (isLocked) {\n      this.showTooltipTimeoutId = window.setTimeout(() => {\n        this.prepareToShowTooltip(e);\n      }, INTERACTIVE_HIDE_DELAY);\n    } else {\n      this.prepareToShowTooltip(e);\n    }\n  }\n  onMouseMove(e) {\n    if (this.lastMouseEvent) {\n      this.lastMouseEvent = e;\n    }\n    if (this.tooltipMouseTrack && this.state === 2 /* SHOWING */ && this.tooltipComp) {\n      this.positionTooltip();\n    }\n  }\n  onMouseDown() {\n    this.setToDoNothing();\n  }\n  onMouseLeave() {\n    if (this.interactionEnabled) {\n      this.lockService();\n    } else {\n      this.setToDoNothing();\n    }\n  }\n  onFocusIn() {\n    this.prepareToShowTooltip();\n  }\n  onFocusOut(e) {\n    const relatedTarget = e.relatedTarget;\n    const parentCompGui = this.tooltipCtrl.getGui();\n    const tooltipGui = this.tooltipComp?.getGui();\n    if (this.isInteractingWithTooltip || parentCompGui.contains(relatedTarget) || this.interactionEnabled && tooltipGui?.contains(relatedTarget)) {\n      return;\n    }\n    this.setToDoNothing();\n  }\n  onKeyDown() {\n    if (this.isInteractingWithTooltip) {\n      this.isInteractingWithTooltip = false;\n    }\n    this.setToDoNothing();\n  }\n  prepareToShowTooltip(mouseEvent) {\n    if (this.state != 0 /* NOTHING */ || isLocked) {\n      return;\n    }\n    let delay = 0;\n    if (mouseEvent) {\n      delay = this.isLastTooltipHiddenRecently() ? 200 : this.getTooltipDelay(\"show\");\n    }\n    this.lastMouseEvent = mouseEvent || null;\n    this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);\n    this.state = 1 /* WAITING_TO_SHOW */;\n  }\n  isLastTooltipHiddenRecently() {\n    const now = Date.now();\n    const then = lastTooltipHideTime;\n    return now - then < SHOW_QUICK_TOOLTIP_DIFF;\n  }\n  setToDoNothing(fromHideTooltip) {\n    if (!fromHideTooltip && this.state === 2 /* SHOWING */) {\n      this.hideTooltip();\n    }\n    if (this.onBodyScrollEventCallback) {\n      this.onBodyScrollEventCallback();\n      this.onBodyScrollEventCallback = void 0;\n    }\n    if (this.onColumnMovedEventCallback) {\n      this.onColumnMovedEventCallback();\n      this.onColumnMovedEventCallback = void 0;\n    }\n    if (this.onDocumentKeyDownCallback) {\n      this.onDocumentKeyDownCallback();\n      this.onDocumentKeyDownCallback = void 0;\n    }\n    this.clearTimeouts();\n    this.state = 0 /* NOTHING */;\n    this.lastMouseEvent = null;\n  }\n  showTooltip() {\n    const value = this.getTooltipValue();\n    const ctrl = this.tooltipCtrl;\n    if (!_exists(value) || ctrl.shouldDisplayTooltip && !ctrl.shouldDisplayTooltip()) {\n      this.setToDoNothing();\n      return;\n    }\n    const rowNode = ctrl.getRowNode?.();\n    const params = _addGridCommonParams(this.gos, {\n      location: ctrl.getLocation?.() ?? \"UNKNOWN\",\n      //'cell',\n      colDef: ctrl.getColDef?.(),\n      column: ctrl.getColumn?.(),\n      rowIndex: ctrl.getRowIndex?.(),\n      node: rowNode,\n      data: rowNode?.data,\n      value,\n      valueFormatted: ctrl.getValueFormatted?.(),\n      hideTooltipCallback: () => this.hideTooltip(true),\n      ...ctrl.getAdditionalParams?.() ?? {}\n    });\n    this.state = 2 /* SHOWING */;\n    this.tooltipInstanceCount++;\n    const callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n    const userDetails = _getTooltipCompDetails(this.userCompFactory, params);\n    userDetails?.newAgStackInstance().then(callback);\n  }\n  hideTooltip(forceHide) {\n    if (!forceHide && this.isInteractingWithTooltip) {\n      return;\n    }\n    if (this.tooltipComp) {\n      this.destroyTooltipComp();\n      lastTooltipHideTime = Date.now();\n    }\n    this.eventSvc.dispatchEvent({\n      type: \"tooltipHide\",\n      parentGui: this.tooltipCtrl.getGui()\n    });\n    if (forceHide) {\n      this.isInteractingWithTooltip = false;\n    }\n    this.setToDoNothing(true);\n  }\n  newTooltipComponentCallback(tooltipInstanceCopy, tooltipComp) {\n    const compNoLongerNeeded = this.state !== 2 /* SHOWING */ || this.tooltipInstanceCount !== tooltipInstanceCopy;\n    if (compNoLongerNeeded) {\n      this.destroyBean(tooltipComp);\n      return;\n    }\n    const eGui = tooltipComp.getGui();\n    this.tooltipComp = tooltipComp;\n    if (!eGui.classList.contains(\"ag-tooltip\")) {\n      eGui.classList.add(\"ag-tooltip-custom\");\n    }\n    if (this.tooltipTrigger === 0 /* HOVER */) {\n      eGui.classList.add(\"ag-tooltip-animate\");\n    }\n    if (this.interactionEnabled) {\n      eGui.classList.add(\"ag-tooltip-interactive\");\n    }\n    const translate = this.getLocaleTextFunc();\n    const addPopupRes = this.popupSvc?.addPopup({\n      eChild: eGui,\n      ariaLabel: translate(\"ariaLabelTooltip\", \"Tooltip\")\n    });\n    if (addPopupRes) {\n      this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;\n    }\n    this.positionTooltip();\n    if (this.tooltipTrigger === 1 /* FOCUS */) {\n      const listener = () => this.setToDoNothing();\n      [this.onBodyScrollEventCallback, this.onColumnMovedEventCallback] = this.addManagedEventListeners({\n        bodyScroll: listener,\n        columnMoved: listener\n      });\n    }\n    if (this.interactionEnabled) {\n      [this.tooltipMouseEnterListener, this.tooltipMouseLeaveListener] = this.addManagedElementListeners(eGui, {\n        mouseenter: this.onTooltipMouseEnter.bind(this),\n        mouseleave: this.onTooltipMouseLeave.bind(this)\n      });\n      [this.onDocumentKeyDownCallback] = this.addManagedElementListeners(_getDocument(this.beans), {\n        keydown: (e) => {\n          if (!eGui.contains(e?.target)) {\n            this.onKeyDown();\n          }\n        }\n      });\n      if (this.tooltipTrigger === 1 /* FOCUS */) {\n        [this.tooltipFocusInListener, this.tooltipFocusOutListener] = this.addManagedElementListeners(eGui, {\n          focusin: this.onTooltipFocusIn.bind(this),\n          focusout: this.onTooltipFocusOut.bind(this)\n        });\n      }\n    }\n    this.eventSvc.dispatchEvent({\n      type: \"tooltipShow\",\n      tooltipGui: eGui,\n      parentGui: this.tooltipCtrl.getGui()\n    });\n    this.startHideTimeout();\n  }\n  onTooltipMouseEnter() {\n    this.isInteractingWithTooltip = true;\n    this.unlockService();\n  }\n  onTooltipMouseLeave() {\n    if (this.isTooltipFocused()) {\n      return;\n    }\n    this.isInteractingWithTooltip = false;\n    this.lockService();\n  }\n  onTooltipFocusIn() {\n    this.isInteractingWithTooltip = true;\n  }\n  isTooltipFocused() {\n    const tooltipGui = this.tooltipComp?.getGui();\n    const activeEl = _getActiveDomElement(this.beans);\n    return !!tooltipGui && tooltipGui.contains(activeEl);\n  }\n  onTooltipFocusOut(e) {\n    const parentGui = this.tooltipCtrl.getGui();\n    if (this.isTooltipFocused()) {\n      return;\n    }\n    this.isInteractingWithTooltip = false;\n    if (parentGui.contains(e.relatedTarget)) {\n      this.startHideTimeout();\n    } else {\n      this.hideTooltip();\n    }\n  }\n  positionTooltip() {\n    const params = {\n      type: \"tooltip\",\n      ePopup: this.tooltipComp.getGui(),\n      nudgeY: 18,\n      skipObserver: this.tooltipMouseTrack\n    };\n    if (this.lastMouseEvent) {\n      this.popupSvc?.positionPopupUnderMouseEvent({\n        ...params,\n        mouseEvent: this.lastMouseEvent\n      });\n    } else {\n      this.popupSvc?.positionPopupByComponent({\n        ...params,\n        eventSource: this.tooltipCtrl.getGui(),\n        position: \"under\",\n        keepWithinBounds: true,\n        nudgeY: 5\n      });\n    }\n  }\n  destroyTooltipComp() {\n    this.tooltipComp.getGui().classList.add(\"ag-tooltip-hiding\");\n    const tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n    const tooltipComp = this.tooltipComp;\n    const delay = this.tooltipTrigger === 0 /* HOVER */ ? FADE_OUT_TOOLTIP_TIMEOUT : 0;\n    window.setTimeout(() => {\n      tooltipPopupDestroyFunc();\n      this.destroyBean(tooltipComp);\n    }, delay);\n    this.clearTooltipListeners();\n    this.tooltipPopupDestroyFunc = void 0;\n    this.tooltipComp = void 0;\n  }\n  clearTooltipListeners() {\n    [\n      this.tooltipMouseEnterListener,\n      this.tooltipMouseLeaveListener,\n      this.tooltipFocusInListener,\n      this.tooltipFocusOutListener\n    ].forEach((listener) => {\n      if (listener) {\n        listener();\n      }\n    });\n    this.tooltipMouseEnterListener = this.tooltipMouseLeaveListener = this.tooltipFocusInListener = this.tooltipFocusOutListener = null;\n  }\n  lockService() {\n    isLocked = true;\n    this.interactiveTooltipTimeoutId = window.setTimeout(() => {\n      this.unlockService();\n      this.setToDoNothing();\n    }, INTERACTIVE_HIDE_DELAY);\n  }\n  unlockService() {\n    isLocked = false;\n    this.clearInteractiveTimeout();\n  }\n  startHideTimeout() {\n    this.clearHideTimeout();\n    this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.getTooltipDelay(\"hide\"));\n  }\n  clearShowTimeout() {\n    if (!this.showTooltipTimeoutId) {\n      return;\n    }\n    window.clearTimeout(this.showTooltipTimeoutId);\n    this.showTooltipTimeoutId = void 0;\n  }\n  clearHideTimeout() {\n    if (!this.hideTooltipTimeoutId) {\n      return;\n    }\n    window.clearTimeout(this.hideTooltipTimeoutId);\n    this.hideTooltipTimeoutId = void 0;\n  }\n  clearInteractiveTimeout() {\n    if (!this.interactiveTooltipTimeoutId) {\n      return;\n    }\n    window.clearTimeout(this.interactiveTooltipTimeoutId);\n    this.interactiveTooltipTimeoutId = void 0;\n  }\n  clearTimeouts() {\n    this.clearShowTimeout();\n    this.clearHideTimeout();\n    this.clearInteractiveTimeout();\n  }\n};\n\n// packages/ag-grid-community/src/tooltip/tooltipFeature.ts\nfunction _isShowTooltipWhenTruncated(gos) {\n  return gos.get(\"tooltipShowMode\") === \"whenTruncated\";\n}\nfunction _getShouldDisplayTooltip(gos, getElement) {\n  return _isShowTooltipWhenTruncated(gos) ? _shouldDisplayTooltip(getElement) : void 0;\n}\nfunction _shouldDisplayTooltip(getElement) {\n  return () => {\n    const element = getElement();\n    if (!element) {\n      return true;\n    }\n    return element.scrollWidth > element.clientWidth;\n  };\n}\nvar TooltipFeature = class extends BeanStub {\n  constructor(ctrl, beans) {\n    super();\n    this.ctrl = ctrl;\n    if (beans) {\n      this.beans = beans;\n    }\n  }\n  postConstruct() {\n    this.refreshTooltip();\n  }\n  setBrowserTooltip(tooltip) {\n    const name = \"title\";\n    const eGui = this.ctrl.getGui();\n    if (!eGui) {\n      return;\n    }\n    if (tooltip != null && tooltip != \"\") {\n      eGui.setAttribute(name, tooltip);\n    } else {\n      eGui.removeAttribute(name);\n    }\n  }\n  updateTooltipText() {\n    const { getTooltipValue } = this.ctrl;\n    if (getTooltipValue) {\n      this.tooltip = getTooltipValue();\n    }\n  }\n  createTooltipFeatureIfNeeded() {\n    if (this.tooltipManager == null) {\n      this.tooltipManager = this.createBean(\n        new TooltipStateManager(this.ctrl, () => this.tooltip),\n        this.beans.context\n      );\n    }\n  }\n  setTooltipAndRefresh(tooltip) {\n    this.tooltip = tooltip;\n    this.refreshTooltip();\n  }\n  refreshTooltip() {\n    this.browserTooltips = this.beans.gos.get(\"enableBrowserTooltips\");\n    this.updateTooltipText();\n    if (this.browserTooltips) {\n      this.setBrowserTooltip(this.tooltip);\n      this.tooltipManager = this.destroyBean(this.tooltipManager, this.beans.context);\n    } else {\n      this.setBrowserTooltip(null);\n      this.createTooltipFeatureIfNeeded();\n    }\n  }\n  destroy() {\n    this.tooltipManager = this.destroyBean(this.tooltipManager, this.beans.context);\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agList.ts\nvar AgList = class extends Component {\n  constructor(cssIdentifier = \"default\", unFocusable = false) {\n    super({ tag: \"div\", cls: `ag-list ag-${cssIdentifier}-list` });\n    this.cssIdentifier = cssIdentifier;\n    this.unFocusable = unFocusable;\n    this.activeClass = \"ag-active-item\";\n    this.options = [];\n    this.itemEls = [];\n  }\n  postConstruct() {\n    const eGui = this.getGui();\n    this.addManagedElementListeners(eGui, { mouseleave: () => this.clearHighlighted() });\n    if (this.unFocusable) {\n      return;\n    }\n    this.addManagedElementListeners(eGui, { keydown: this.handleKeyDown.bind(this) });\n  }\n  handleKeyDown(e) {\n    const key = e.key;\n    switch (key) {\n      case KeyCode.ENTER:\n        if (!this.highlightedEl) {\n          this.setValue(this.getValue());\n        } else {\n          const pos = this.itemEls.indexOf(this.highlightedEl);\n          this.setValueByIndex(pos);\n        }\n        break;\n      case KeyCode.DOWN:\n      case KeyCode.UP:\n        e.preventDefault();\n        this.navigate(key);\n        break;\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAGE_HOME:\n      case KeyCode.PAGE_END:\n        e.preventDefault();\n        this.navigateToPage(key);\n        break;\n    }\n  }\n  navigate(key) {\n    const isDown = key === KeyCode.DOWN;\n    let itemToHighlight;\n    const { itemEls, highlightedEl } = this;\n    if (!highlightedEl) {\n      itemToHighlight = itemEls[isDown ? 0 : itemEls.length - 1];\n    } else {\n      const currentIdx = itemEls.indexOf(highlightedEl);\n      let nextPos = currentIdx + (isDown ? 1 : -1);\n      nextPos = Math.min(Math.max(nextPos, 0), itemEls.length - 1);\n      itemToHighlight = itemEls[nextPos];\n    }\n    this.highlightItem(itemToHighlight);\n  }\n  navigateToPage(key) {\n    const { itemEls, highlightedEl } = this;\n    if (!highlightedEl || itemEls.length === 0) {\n      return;\n    }\n    const currentIdx = itemEls.indexOf(highlightedEl);\n    const rowCount = this.options.length - 1;\n    const itemHeight = itemEls[0].clientHeight;\n    const pageSize = Math.floor(this.getGui().clientHeight / itemHeight);\n    let newIndex = -1;\n    if (key === KeyCode.PAGE_HOME) {\n      newIndex = 0;\n    } else if (key === KeyCode.PAGE_END) {\n      newIndex = rowCount;\n    } else if (key === KeyCode.PAGE_DOWN) {\n      newIndex = Math.min(currentIdx + pageSize, rowCount);\n    } else if (key === KeyCode.PAGE_UP) {\n      newIndex = Math.max(currentIdx - pageSize, 0);\n    }\n    if (newIndex === -1) {\n      return;\n    }\n    this.highlightItem(itemEls[newIndex]);\n  }\n  addOptions(listOptions) {\n    listOptions.forEach((listOption) => this.addOption(listOption));\n    return this;\n  }\n  addOption(listOption) {\n    const { value, text } = listOption;\n    const valueToRender = text ?? value;\n    this.options.push({ value, text: valueToRender });\n    this.renderOption(value, valueToRender);\n    this.updateIndices();\n    return this;\n  }\n  clearOptions() {\n    this.options = [];\n    this.reset(true);\n    this.itemEls.forEach((itemEl) => {\n      _removeFromParent(itemEl);\n    });\n    this.itemEls = [];\n    this.refreshAriaRole();\n  }\n  refreshAriaRole() {\n    const eGui = this.getGui();\n    _setAriaRole(eGui, this.options.length === 0 ? \"presentation\" : \"listbox\");\n  }\n  updateIndices() {\n    const options = this.getGui().querySelectorAll(\".ag-list-item\");\n    this.refreshAriaRole();\n    options.forEach((option, idx) => {\n      _setAriaPosInSet(option, idx + 1);\n      _setAriaSetSize(option, options.length);\n    });\n  }\n  renderOption(value, text) {\n    const itemEl = _createElement({\n      tag: \"div\",\n      cls: `ag-list-item ag-${this.cssIdentifier}-list-item`,\n      attrs: { role: \"option\" }\n    });\n    const span = _createElement({\n      tag: \"span\",\n      children: text\n    });\n    itemEl.appendChild(span);\n    if (!this.unFocusable) {\n      itemEl.tabIndex = -1;\n    }\n    this.itemEls.push(itemEl);\n    this.addManagedListeners(itemEl, {\n      mouseover: () => this.highlightItem(itemEl),\n      mousedown: (e) => {\n        e.preventDefault();\n        e.stopPropagation();\n        this.setValue(value);\n      }\n    });\n    this.createOptionalManagedBean(\n      this.beans.registry.createDynamicBean(\"tooltipFeature\", false, {\n        getTooltipValue: () => text,\n        getGui: () => itemEl,\n        getLocation: () => \"UNKNOWN\",\n        // only show tooltips for items where the text cannot be fully displayed\n        shouldDisplayTooltip: () => span.scrollWidth > span.clientWidth\n      })\n    );\n    this.getGui().appendChild(itemEl);\n  }\n  setValue(value, silent) {\n    if (this.value === value) {\n      this.fireItemSelected();\n      return this;\n    }\n    if (value == null) {\n      this.reset(silent);\n      return this;\n    }\n    const idx = this.options.findIndex((option) => option.value === value);\n    if (idx !== -1) {\n      const option = this.options[idx];\n      this.value = option.value;\n      this.displayValue = option.text;\n      this.highlightItem(this.itemEls[idx]);\n      if (!silent) {\n        this.fireChangeEvent();\n      }\n    }\n    return this;\n  }\n  setValueByIndex(idx) {\n    return this.setValue(this.options[idx].value);\n  }\n  getValue() {\n    return this.value;\n  }\n  getDisplayValue() {\n    return this.displayValue;\n  }\n  refreshHighlighted() {\n    this.clearHighlighted();\n    const idx = this.options.findIndex((option) => option.value === this.value);\n    if (idx !== -1) {\n      this.highlightItem(this.itemEls[idx]);\n    }\n  }\n  reset(silent) {\n    this.value = null;\n    this.displayValue = null;\n    this.clearHighlighted();\n    if (!silent) {\n      this.fireChangeEvent();\n    }\n  }\n  highlightItem(el) {\n    if (!_isVisible(el)) {\n      return;\n    }\n    this.clearHighlighted();\n    this.highlightedEl = el;\n    el.classList.add(this.activeClass);\n    _setAriaSelected(el, true);\n    const eGui = this.getGui();\n    const { scrollTop, clientHeight } = eGui;\n    const { offsetTop, offsetHeight } = el;\n    if (offsetTop + offsetHeight > scrollTop + clientHeight || offsetTop < scrollTop) {\n      el.scrollIntoView({ block: \"nearest\" });\n    }\n    if (!this.unFocusable) {\n      el.focus();\n    }\n  }\n  clearHighlighted() {\n    const highlightedEl = this.highlightedEl;\n    if (!highlightedEl || !_isVisible(highlightedEl)) {\n      return;\n    }\n    highlightedEl.classList.remove(this.activeClass);\n    _setAriaSelected(highlightedEl, false);\n    this.highlightedEl = null;\n  }\n  fireChangeEvent() {\n    this.dispatchLocalEvent({ type: \"fieldValueChanged\" });\n    this.fireItemSelected();\n  }\n  fireItemSelected() {\n    this.dispatchLocalEvent({ type: \"selectedItem\" });\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agPickerField.css-GENERATED.ts\nvar agPickerFieldCSS = (\n  /*css*/\n  `.ag-picker-field-display{flex:1 1 auto}.ag-picker-field{align-items:center;display:flex}.ag-picker-field-icon{border:0;cursor:pointer;display:flex;margin:0;padding:0}.ag-picker-field-wrapper{background-color:var(--ag-picker-button-background-color);border:var(--ag-picker-button-border);border-radius:5px;min-height:max(var(--ag-list-item-height),calc(var(--ag-spacing)*4));overflow:hidden;&:disabled{opacity:.5}&.ag-picker-has-focus,&:focus-within{background-color:var(--ag-picker-button-focus-background-color);border:var(--ag-picker-button-focus-border);box-shadow:var(--ag-focus-shadow)}}`\n);\n\n// packages/ag-grid-community/src/widgets/agPickerField.ts\nvar AgPickerFieldElement = {\n  tag: \"div\",\n  cls: \"ag-picker-field\",\n  role: \"presentation\",\n  children: [\n    { tag: \"div\", ref: \"eLabel\" },\n    {\n      tag: \"div\",\n      ref: \"eWrapper\",\n      cls: \"ag-wrapper ag-picker-field-wrapper ag-picker-collapsed\",\n      children: [\n        { tag: \"div\", ref: \"eDisplayField\", cls: \"ag-picker-field-display\" },\n        { tag: \"div\", ref: \"eIcon\", cls: \"ag-picker-field-icon\", attrs: { \"aria-hidden\": \"true\" } }\n      ]\n    }\n  ]\n};\nvar AgPickerField = class extends AgAbstractField {\n  constructor(config) {\n    super(config, config?.template || AgPickerFieldElement, config?.agComponents || [], config?.className);\n    this.isPickerDisplayed = false;\n    this.skipClick = false;\n    this.pickerGap = 4;\n    this.hideCurrentPicker = null;\n    this.eLabel = RefPlaceholder;\n    this.eWrapper = RefPlaceholder;\n    this.eDisplayField = RefPlaceholder;\n    this.eIcon = RefPlaceholder;\n    this.registerCSS(agPickerFieldCSS);\n    this.ariaRole = config?.ariaRole;\n    this.onPickerFocusIn = this.onPickerFocusIn.bind(this);\n    this.onPickerFocusOut = this.onPickerFocusOut.bind(this);\n    if (!config) {\n      return;\n    }\n    const { pickerGap, maxPickerHeight, variableWidth, minPickerWidth, maxPickerWidth } = config;\n    if (pickerGap != null) {\n      this.pickerGap = pickerGap;\n    }\n    this.variableWidth = !!variableWidth;\n    if (maxPickerHeight != null) {\n      this.setPickerMaxHeight(maxPickerHeight);\n    }\n    if (minPickerWidth != null) {\n      this.setPickerMinWidth(minPickerWidth);\n    }\n    if (maxPickerWidth != null) {\n      this.setPickerMaxWidth(maxPickerWidth);\n    }\n  }\n  postConstruct() {\n    super.postConstruct();\n    this.setupAria();\n    const displayId = `ag-${this.getCompId()}-display`;\n    this.eDisplayField.setAttribute(\"id\", displayId);\n    const ariaEl = this.getAriaElement();\n    this.addManagedElementListeners(ariaEl, { keydown: this.onKeyDown.bind(this) });\n    this.addManagedElementListeners(this.eLabel, { mousedown: this.onLabelOrWrapperMouseDown.bind(this) });\n    this.addManagedElementListeners(this.eWrapper, { mousedown: this.onLabelOrWrapperMouseDown.bind(this) });\n    const { pickerIcon, inputWidth } = this.config;\n    if (pickerIcon) {\n      const icon = _createIconNoSpan(pickerIcon, this.beans);\n      if (icon) {\n        this.eIcon.appendChild(icon);\n      }\n    }\n    if (inputWidth != null) {\n      this.setInputWidth(inputWidth);\n    }\n  }\n  setupAria() {\n    const ariaEl = this.getAriaElement();\n    ariaEl.setAttribute(\"tabindex\", this.gos.get(\"tabIndex\").toString());\n    _setAriaExpanded(ariaEl, false);\n    if (this.ariaRole) {\n      _setAriaRole(ariaEl, this.ariaRole);\n    }\n  }\n  onLabelOrWrapperMouseDown(e) {\n    if (e) {\n      const focusableEl = this.getFocusableElement();\n      if (focusableEl !== this.eWrapper && e?.target === focusableEl) {\n        return;\n      }\n      e.preventDefault();\n      this.getFocusableElement().focus();\n    }\n    if (this.skipClick) {\n      this.skipClick = false;\n      return;\n    }\n    if (this.isDisabled()) {\n      return;\n    }\n    if (this.isPickerDisplayed) {\n      this.hidePicker();\n    } else {\n      this.showPicker();\n    }\n  }\n  onKeyDown(e) {\n    switch (e.key) {\n      case KeyCode.UP:\n      case KeyCode.DOWN:\n      case KeyCode.ENTER:\n      case KeyCode.SPACE:\n        e.preventDefault();\n        this.onLabelOrWrapperMouseDown();\n        break;\n      case KeyCode.ESCAPE:\n        if (this.isPickerDisplayed) {\n          e.preventDefault();\n          e.stopPropagation();\n          if (this.hideCurrentPicker) {\n            this.hideCurrentPicker();\n          }\n        }\n        break;\n    }\n  }\n  showPicker() {\n    this.isPickerDisplayed = true;\n    if (!this.pickerComponent) {\n      this.pickerComponent = this.createPickerComponent();\n    }\n    const pickerGui = this.pickerComponent.getGui();\n    pickerGui.addEventListener(\"focusin\", this.onPickerFocusIn);\n    pickerGui.addEventListener(\"focusout\", this.onPickerFocusOut);\n    this.hideCurrentPicker = this.renderAndPositionPicker();\n    this.toggleExpandedStyles(true);\n  }\n  renderAndPositionPicker() {\n    const ePicker = this.pickerComponent.getGui();\n    if (!this.gos.get(\"suppressScrollWhenPopupsAreOpen\")) {\n      [this.destroyMouseWheelFunc] = this.addManagedEventListeners({\n        bodyScroll: () => {\n          this.hidePicker();\n        }\n      });\n    }\n    const translate = this.getLocaleTextFunc();\n    const {\n      config: { pickerAriaLabelKey, pickerAriaLabelValue, modalPicker = true },\n      maxPickerHeight,\n      minPickerWidth,\n      maxPickerWidth,\n      variableWidth,\n      beans,\n      eWrapper\n    } = this;\n    const popupParams = {\n      modal: modalPicker,\n      eChild: ePicker,\n      closeOnEsc: true,\n      closedCallback: () => {\n        const shouldRestoreFocus = _isNothingFocused(beans);\n        this.beforeHidePicker();\n        if (shouldRestoreFocus && this.isAlive()) {\n          this.getFocusableElement().focus();\n        }\n      },\n      ariaLabel: translate(pickerAriaLabelKey, pickerAriaLabelValue),\n      anchorToElement: eWrapper\n    };\n    ePicker.style.position = \"absolute\";\n    const popupSvc = beans.popupSvc;\n    const addPopupRes = popupSvc.addPopup(popupParams);\n    if (variableWidth) {\n      if (minPickerWidth) {\n        ePicker.style.minWidth = minPickerWidth;\n      }\n      ePicker.style.width = _formatSize(_getAbsoluteWidth(eWrapper));\n      if (maxPickerWidth) {\n        ePicker.style.maxWidth = maxPickerWidth;\n      }\n    } else {\n      _setElementWidth(ePicker, maxPickerWidth ?? _getAbsoluteWidth(eWrapper));\n    }\n    const maxHeight = maxPickerHeight ?? `${_getInnerHeight(popupSvc.getPopupParent())}px`;\n    ePicker.style.setProperty(\"max-height\", maxHeight);\n    this.alignPickerToComponent();\n    return addPopupRes.hideFunc;\n  }\n  alignPickerToComponent() {\n    if (!this.pickerComponent) {\n      return;\n    }\n    const {\n      pickerGap,\n      config: { pickerType },\n      beans: { popupSvc, gos },\n      eWrapper,\n      pickerComponent\n    } = this;\n    const alignSide = gos.get(\"enableRtl\") ? \"right\" : \"left\";\n    popupSvc.positionPopupByComponent({\n      type: pickerType,\n      eventSource: eWrapper,\n      ePopup: pickerComponent.getGui(),\n      position: \"under\",\n      alignSide,\n      keepWithinBounds: true,\n      nudgeY: pickerGap\n    });\n  }\n  beforeHidePicker() {\n    if (this.destroyMouseWheelFunc) {\n      this.destroyMouseWheelFunc();\n      this.destroyMouseWheelFunc = void 0;\n    }\n    this.toggleExpandedStyles(false);\n    const pickerGui = this.pickerComponent.getGui();\n    pickerGui.removeEventListener(\"focusin\", this.onPickerFocusIn);\n    pickerGui.removeEventListener(\"focusout\", this.onPickerFocusOut);\n    this.isPickerDisplayed = false;\n    this.pickerComponent = void 0;\n    this.hideCurrentPicker = null;\n  }\n  toggleExpandedStyles(expanded) {\n    if (!this.isAlive()) {\n      return;\n    }\n    const ariaEl = this.getAriaElement();\n    _setAriaExpanded(ariaEl, expanded);\n    const classList = this.eWrapper.classList;\n    classList.toggle(\"ag-picker-expanded\", expanded);\n    classList.toggle(\"ag-picker-collapsed\", !expanded);\n  }\n  onPickerFocusIn() {\n    this.togglePickerHasFocus(true);\n  }\n  onPickerFocusOut(e) {\n    if (!this.pickerComponent?.getGui().contains(e.relatedTarget)) {\n      this.togglePickerHasFocus(false);\n    }\n  }\n  togglePickerHasFocus(focused) {\n    if (!this.pickerComponent) {\n      return;\n    }\n    this.eWrapper.classList.toggle(\"ag-picker-has-focus\", focused);\n  }\n  hidePicker() {\n    this.hideCurrentPicker?.();\n  }\n  setInputWidth(width) {\n    _setElementWidth(this.eWrapper, width);\n    return this;\n  }\n  getFocusableElement() {\n    return this.eWrapper;\n  }\n  setPickerGap(gap) {\n    this.pickerGap = gap;\n    return this;\n  }\n  setPickerMinWidth(width) {\n    if (typeof width === \"number\") {\n      width = `${width}px`;\n    }\n    this.minPickerWidth = width == null ? void 0 : width;\n    return this;\n  }\n  setPickerMaxWidth(width) {\n    if (typeof width === \"number\") {\n      width = `${width}px`;\n    }\n    this.maxPickerWidth = width == null ? void 0 : width;\n    return this;\n  }\n  setPickerMaxHeight(height) {\n    if (typeof height === \"number\") {\n      height = `${height}px`;\n    }\n    this.maxPickerHeight = height == null ? void 0 : height;\n    return this;\n  }\n  destroy() {\n    this.hidePicker();\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/widgets/agSelect.css-GENERATED.ts\nvar agSelectCSS = (\n  /*css*/\n  `.ag-select{align-items:center;display:flex;&.ag-disabled{opacity:.5}}:where(.ag-select){.ag-picker-field-wrapper{cursor:default}&.ag-disabled .ag-picker-field-wrapper:focus{box-shadow:none}&:not(.ag-cell-editor,.ag-label-align-top){min-height:var(--ag-list-item-height)}.ag-picker-field-display{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ag-picker-field-icon{align-items:center;display:flex}}:where(.ag-ltr) :where(.ag-select){.ag-picker-field-wrapper{padding-left:calc(var(--ag-cell-horizontal-padding)/2);padding-right:var(--ag-spacing)}}:where(.ag-rtl) :where(.ag-select){.ag-picker-field-wrapper{padding-left:var(--ag-spacing);padding-right:calc(var(--ag-cell-horizontal-padding)/2)}}`\n);\n\n// packages/ag-grid-community/src/widgets/agSelect.ts\nvar AgSelect = class extends AgPickerField {\n  constructor(config) {\n    super({\n      pickerAriaLabelKey: \"ariaLabelSelectField\",\n      pickerAriaLabelValue: \"Select Field\",\n      pickerType: \"ag-list\",\n      className: \"ag-select\",\n      pickerIcon: \"selectOpen\",\n      ariaRole: \"combobox\",\n      ...config\n    });\n    this.registerCSS(agSelectCSS);\n  }\n  postConstruct() {\n    this.tooltipFeature = this.createOptionalManagedBean(\n      this.beans.registry.createDynamicBean(\"tooltipFeature\", false, {\n        shouldDisplayTooltip: _shouldDisplayTooltip(() => this.eDisplayField),\n        getGui: () => this.getGui()\n      })\n    );\n    super.postConstruct();\n    this.createListComponent();\n    this.eWrapper.tabIndex = this.gos.get(\"tabIndex\");\n    const { options, value, placeholder } = this.config;\n    if (options != null) {\n      this.addOptions(options);\n    }\n    if (value != null) {\n      this.setValue(value, true);\n    }\n    if (placeholder && value == null) {\n      this.eDisplayField.textContent = placeholder;\n    }\n    this.addManagedElementListeners(this.eWrapper, { focusout: this.onWrapperFocusOut.bind(this) });\n  }\n  onWrapperFocusOut(e) {\n    if (!this.eWrapper.contains(e.relatedTarget)) {\n      this.hidePicker();\n    }\n  }\n  createListComponent() {\n    const listComponent = this.createBean(new AgList(\"select\", true));\n    this.listComponent = listComponent;\n    listComponent.setParentComponent(this);\n    const eListAriaEl = listComponent.getAriaElement();\n    const listId = `ag-select-list-${listComponent.getCompId()}`;\n    eListAriaEl.setAttribute(\"id\", listId);\n    _setAriaControls(this.getAriaElement(), eListAriaEl);\n    listComponent.addManagedElementListeners(listComponent.getGui(), {\n      mousedown: (e) => {\n        e?.preventDefault();\n      }\n    });\n    listComponent.addManagedListeners(listComponent, {\n      selectedItem: () => {\n        this.hidePicker();\n        this.dispatchLocalEvent({ type: \"selectedItem\" });\n      },\n      fieldValueChanged: () => {\n        if (!this.listComponent) {\n          return;\n        }\n        this.setValue(this.listComponent.getValue(), false, true);\n        this.hidePicker();\n      }\n    });\n  }\n  createPickerComponent() {\n    return this.listComponent;\n  }\n  onKeyDown(e) {\n    const { key } = e;\n    if (key === KeyCode.TAB) {\n      this.hidePicker();\n    }\n    switch (key) {\n      case KeyCode.ENTER:\n      case KeyCode.UP:\n      case KeyCode.DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_HOME:\n      case KeyCode.PAGE_END:\n        e.preventDefault();\n        if (this.isPickerDisplayed) {\n          this.listComponent?.handleKeyDown(e);\n        } else {\n          super.onKeyDown(e);\n        }\n        break;\n      case KeyCode.ESCAPE:\n        super.onKeyDown(e);\n        break;\n      case KeyCode.SPACE:\n        if (this.isPickerDisplayed) {\n          e.preventDefault();\n        } else {\n          super.onKeyDown(e);\n        }\n        break;\n    }\n  }\n  showPicker() {\n    const listComponent = this.listComponent;\n    if (!listComponent) {\n      return;\n    }\n    super.showPicker();\n    listComponent.refreshHighlighted();\n  }\n  addOptions(options) {\n    options.forEach((option) => this.addOption(option));\n    return this;\n  }\n  addOption(option) {\n    this.listComponent.addOption(option);\n    return this;\n  }\n  clearOptions() {\n    this.listComponent?.clearOptions();\n    this.setValue(void 0, true);\n    return this;\n  }\n  setValue(value, silent, fromPicker) {\n    const {\n      listComponent,\n      config: { placeholder },\n      eDisplayField,\n      tooltipFeature\n    } = this;\n    if (this.value === value || !listComponent) {\n      return this;\n    }\n    if (!fromPicker) {\n      listComponent.setValue(value, true);\n    }\n    const newValue = listComponent.getValue();\n    if (newValue === this.getValue()) {\n      return this;\n    }\n    let displayValue = listComponent.getDisplayValue();\n    if (displayValue == null && placeholder) {\n      displayValue = placeholder;\n    }\n    eDisplayField.textContent = displayValue;\n    tooltipFeature?.setTooltipAndRefresh(displayValue ?? null);\n    return super.setValue(value, silent);\n  }\n  destroy() {\n    this.listComponent = this.destroyBean(this.listComponent);\n    super.destroy();\n  }\n};\nvar AgSelectSelector = {\n  selector: \"AG-SELECT\",\n  component: AgSelect\n};\n\n// packages/ag-grid-community/src/widgets/tabGuardCtrl.ts\nvar TabGuardClassNames = {\n  TAB_GUARD: \"ag-tab-guard\",\n  TAB_GUARD_TOP: \"ag-tab-guard-top\",\n  TAB_GUARD_BOTTOM: \"ag-tab-guard-bottom\"\n};\nvar TabGuardCtrl = class extends BeanStub {\n  constructor(params) {\n    super();\n    this.skipTabGuardFocus = false;\n    this.forcingFocusOut = false;\n    // Used when `isFocusableContainer` enabled\n    this.allowFocus = false;\n    const {\n      comp,\n      eTopGuard,\n      eBottomGuard,\n      focusTrapActive,\n      forceFocusOutWhenTabGuardsAreEmpty,\n      isFocusableContainer,\n      focusInnerElement,\n      onFocusIn,\n      onFocusOut,\n      shouldStopEventPropagation,\n      onTabKeyDown,\n      handleKeyDown,\n      isEmpty,\n      eFocusableElement\n    } = params;\n    this.comp = comp;\n    this.eTopGuard = eTopGuard;\n    this.eBottomGuard = eBottomGuard;\n    this.providedFocusInnerElement = focusInnerElement;\n    this.eFocusableElement = eFocusableElement;\n    this.focusTrapActive = !!focusTrapActive;\n    this.forceFocusOutWhenTabGuardsAreEmpty = !!forceFocusOutWhenTabGuardsAreEmpty;\n    this.isFocusableContainer = !!isFocusableContainer;\n    this.providedFocusIn = onFocusIn;\n    this.providedFocusOut = onFocusOut;\n    this.providedShouldStopEventPropagation = shouldStopEventPropagation;\n    this.providedOnTabKeyDown = onTabKeyDown;\n    this.providedHandleKeyDown = handleKeyDown;\n    this.providedIsEmpty = isEmpty;\n  }\n  postConstruct() {\n    this.createManagedBean(\n      new ManagedFocusFeature(this.eFocusableElement, {\n        shouldStopEventPropagation: () => this.shouldStopEventPropagation(),\n        onTabKeyDown: (e) => this.onTabKeyDown(e),\n        handleKeyDown: (e) => this.handleKeyDown(e),\n        onFocusIn: (e) => this.onFocusIn(e),\n        onFocusOut: (e) => this.onFocusOut(e)\n      })\n    );\n    this.activateTabGuards();\n    [this.eTopGuard, this.eBottomGuard].forEach(\n      (guard) => this.addManagedElementListeners(guard, { focus: this.onFocus.bind(this) })\n    );\n  }\n  handleKeyDown(e) {\n    if (this.providedHandleKeyDown) {\n      this.providedHandleKeyDown(e);\n    }\n  }\n  tabGuardsAreActive() {\n    return !!this.eTopGuard && this.eTopGuard.hasAttribute(\"tabIndex\");\n  }\n  shouldStopEventPropagation() {\n    if (this.providedShouldStopEventPropagation) {\n      return this.providedShouldStopEventPropagation();\n    }\n    return false;\n  }\n  activateTabGuards() {\n    if (this.forcingFocusOut) {\n      return;\n    }\n    const tabIndex = this.gos.get(\"tabIndex\");\n    this.comp.setTabIndex(tabIndex.toString());\n  }\n  deactivateTabGuards() {\n    this.comp.setTabIndex();\n  }\n  onFocus(e) {\n    if (this.isFocusableContainer && !this.eFocusableElement.contains(e.relatedTarget)) {\n      if (!this.allowFocus) {\n        this.findNextElementOutsideAndFocus(e.target === this.eBottomGuard);\n        return;\n      }\n    }\n    if (this.skipTabGuardFocus) {\n      this.skipTabGuardFocus = false;\n      return;\n    }\n    if (this.forceFocusOutWhenTabGuardsAreEmpty) {\n      const isEmpty = this.providedIsEmpty ? this.providedIsEmpty() : _findFocusableElements(this.eFocusableElement, \".ag-tab-guard\").length === 0;\n      if (isEmpty) {\n        this.findNextElementOutsideAndFocus(e.target === this.eBottomGuard);\n        return;\n      }\n    }\n    if (this.isFocusableContainer && this.eFocusableElement.contains(e.relatedTarget)) {\n      return;\n    }\n    const fromBottom = e.target === this.eBottomGuard;\n    const hasFocusedInnerElement = this.providedFocusInnerElement ? this.providedFocusInnerElement(fromBottom) : this.focusInnerElement(fromBottom);\n    if (!hasFocusedInnerElement && this.forceFocusOutWhenTabGuardsAreEmpty) {\n      this.findNextElementOutsideAndFocus(e.target === this.eBottomGuard);\n    }\n  }\n  findNextElementOutsideAndFocus(up) {\n    const eDocument = _getDocument(this.beans);\n    const focusableEls = _findFocusableElements(eDocument.body, null, true);\n    const index = focusableEls.indexOf(up ? this.eTopGuard : this.eBottomGuard);\n    if (index === -1) {\n      return;\n    }\n    let start;\n    let end;\n    if (up) {\n      start = 0;\n      end = index;\n    } else {\n      start = index + 1;\n      end = focusableEls.length;\n    }\n    const focusableRange = focusableEls.slice(start, end);\n    const targetTabIndex = this.gos.get(\"tabIndex\");\n    focusableRange.sort((a, b) => {\n      const indexA = parseInt(a.getAttribute(\"tabindex\") || \"0\");\n      const indexB = parseInt(b.getAttribute(\"tabindex\") || \"0\");\n      if (indexB === targetTabIndex) {\n        return 1;\n      }\n      if (indexA === targetTabIndex) {\n        return -1;\n      }\n      if (indexA === 0) {\n        return 1;\n      }\n      if (indexB === 0) {\n        return -1;\n      }\n      return indexA - indexB;\n    });\n    focusableRange[up ? focusableRange.length - 1 : 0]?.focus();\n  }\n  onFocusIn(e) {\n    if (this.focusTrapActive || this.forcingFocusOut) {\n      return;\n    }\n    if (this.providedFocusIn) {\n      this.providedFocusIn(e);\n    }\n    if (!this.isFocusableContainer) {\n      this.deactivateTabGuards();\n    }\n  }\n  onFocusOut(e) {\n    if (this.focusTrapActive) {\n      return;\n    }\n    if (this.providedFocusOut) {\n      this.providedFocusOut(e);\n    }\n    if (!this.eFocusableElement.contains(e.relatedTarget)) {\n      this.activateTabGuards();\n    }\n  }\n  onTabKeyDown(e) {\n    if (this.providedOnTabKeyDown) {\n      this.providedOnTabKeyDown(e);\n      return;\n    }\n    if (this.focusTrapActive) {\n      return;\n    }\n    if (e.defaultPrevented) {\n      return;\n    }\n    const tabGuardsAreActive = this.tabGuardsAreActive();\n    if (tabGuardsAreActive) {\n      this.deactivateTabGuards();\n    }\n    const nextRoot = this.getNextFocusableElement(e.shiftKey);\n    if (tabGuardsAreActive) {\n      setTimeout(() => this.activateTabGuards(), 0);\n    }\n    if (!nextRoot) {\n      return;\n    }\n    nextRoot.focus();\n    e.preventDefault();\n  }\n  focusInnerElement(fromBottom = false) {\n    const focusable = _findFocusableElements(this.eFocusableElement);\n    if (this.tabGuardsAreActive()) {\n      focusable.splice(0, 1);\n      focusable.splice(focusable.length - 1, 1);\n    }\n    if (!focusable.length) {\n      return false;\n    }\n    focusable[fromBottom ? focusable.length - 1 : 0].focus({ preventScroll: true });\n    return true;\n  }\n  getNextFocusableElement(backwards) {\n    return _findNextFocusableElement(this.beans, this.eFocusableElement, false, backwards);\n  }\n  forceFocusOutOfContainer(up = false) {\n    if (this.forcingFocusOut) {\n      return;\n    }\n    const tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;\n    this.activateTabGuards();\n    this.skipTabGuardFocus = true;\n    this.forcingFocusOut = true;\n    tabGuardToFocus.focus();\n    window.setTimeout(() => {\n      this.forcingFocusOut = false;\n      this.activateTabGuards();\n    });\n  }\n  isTabGuard(element, bottom) {\n    return element === this.eTopGuard && !bottom || element === this.eBottomGuard && (bottom ?? true);\n  }\n  setAllowFocus(allowFocus) {\n    this.allowFocus = allowFocus;\n  }\n};\n\n// packages/ag-grid-community/src/widgets/tabGuardFeature.ts\nvar TabGuardFeature = class extends BeanStub {\n  constructor(comp) {\n    super();\n    this.comp = comp;\n  }\n  initialiseTabGuard(params) {\n    this.eTopGuard = this.createTabGuard(\"top\");\n    this.eBottomGuard = this.createTabGuard(\"bottom\");\n    this.eFocusableElement = this.comp.getFocusableElement();\n    const { eTopGuard, eBottomGuard, eFocusableElement } = this;\n    const tabGuards = [eTopGuard, eBottomGuard];\n    const compProxy = {\n      setTabIndex: (tabIndex) => {\n        tabGuards.forEach(\n          (tabGuard) => tabIndex != null ? tabGuard.setAttribute(\"tabindex\", tabIndex) : tabGuard.removeAttribute(\"tabindex\")\n        );\n      }\n    };\n    this.addTabGuards(eTopGuard, eBottomGuard);\n    const {\n      focusTrapActive = false,\n      onFocusIn,\n      onFocusOut,\n      focusInnerElement,\n      handleKeyDown,\n      onTabKeyDown,\n      shouldStopEventPropagation,\n      isEmpty,\n      forceFocusOutWhenTabGuardsAreEmpty,\n      isFocusableContainer\n    } = params;\n    this.tabGuardCtrl = this.createManagedBean(\n      new TabGuardCtrl({\n        comp: compProxy,\n        focusTrapActive,\n        eTopGuard,\n        eBottomGuard,\n        eFocusableElement,\n        onFocusIn,\n        onFocusOut,\n        focusInnerElement,\n        handleKeyDown,\n        onTabKeyDown,\n        shouldStopEventPropagation,\n        isEmpty,\n        forceFocusOutWhenTabGuardsAreEmpty,\n        isFocusableContainer\n      })\n    );\n  }\n  getTabGuardCtrl() {\n    return this.tabGuardCtrl;\n  }\n  createTabGuard(side) {\n    const tabGuard = _getDocument(this.beans).createElement(\"div\");\n    const cls = side === \"top\" ? TabGuardClassNames.TAB_GUARD_TOP : TabGuardClassNames.TAB_GUARD_BOTTOM;\n    tabGuard.classList.add(TabGuardClassNames.TAB_GUARD, cls);\n    _setAriaRole(tabGuard, \"presentation\");\n    return tabGuard;\n  }\n  addTabGuards(topTabGuard, bottomTabGuard) {\n    const eFocusableElement = this.eFocusableElement;\n    eFocusableElement.insertAdjacentElement(\"afterbegin\", topTabGuard);\n    eFocusableElement.insertAdjacentElement(\"beforeend\", bottomTabGuard);\n  }\n  removeAllChildrenExceptTabGuards() {\n    const tabGuards = [this.eTopGuard, this.eBottomGuard];\n    _clearElement(this.comp.getFocusableElement());\n    this.addTabGuards(...tabGuards);\n  }\n  forceFocusOutOfContainer(up = false) {\n    this.tabGuardCtrl.forceFocusOutOfContainer(up);\n  }\n  appendChild(appendChild, newChild, container) {\n    if (!_isNodeOrElement(newChild)) {\n      newChild = newChild.getGui();\n    }\n    const { eBottomGuard: bottomTabGuard } = this;\n    if (bottomTabGuard) {\n      bottomTabGuard.insertAdjacentElement(\"beforebegin\", newChild);\n    } else {\n      appendChild(newChild, container);\n    }\n  }\n  destroy() {\n    const { eTopGuard, eBottomGuard } = this;\n    _removeFromParent(eTopGuard);\n    _removeFromParent(eBottomGuard);\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/widgets/tabGuardComp.ts\nvar TabGuardComp = class extends Component {\n  initialiseTabGuard(params) {\n    this.tabGuardFeature = this.createManagedBean(new TabGuardFeature(this));\n    this.tabGuardFeature.initialiseTabGuard(params);\n  }\n  forceFocusOutOfContainer(up = false) {\n    this.tabGuardFeature.forceFocusOutOfContainer(up);\n  }\n  appendChild(newChild, container) {\n    this.tabGuardFeature.appendChild(super.appendChild.bind(this), newChild, container);\n  }\n};\n\n// packages/ag-grid-community/src/widgets/popupComponent.ts\nvar PopupComponent = class extends Component {\n  isPopup() {\n    return true;\n  }\n  setParentComponent(container) {\n    container.addCss(\"ag-has-popup\");\n    super.setParentComponent(container);\n  }\n  destroy() {\n    const parentComp = this.parentComponent;\n    const hasParent = parentComp && parentComp.isAlive();\n    if (hasParent) {\n      parentComp.getGui().classList.remove(\"ag-has-popup\");\n    }\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/widgets/touchListener.ts\nvar TouchListener = class {\n  constructor(eElement, preventMouseClick = false) {\n    this.DOUBLE_TAP_MILLIS = 500;\n    this.destroyFuncs = [];\n    this.touching = false;\n    this.localEventService = new LocalEventService();\n    this.preventMouseClick = preventMouseClick;\n    const startListener = this.onTouchStart.bind(this);\n    const moveListener = this.onTouchMove.bind(this);\n    const endListener = this.onTouchEnd.bind(this);\n    eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n    eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n    eElement.addEventListener(\"touchend\", endListener, { passive: false });\n    this.destroyFuncs.push(() => {\n      eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n      eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n      eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n    });\n  }\n  getActiveTouch(touchList) {\n    for (let i = 0; i < touchList.length; i++) {\n      const matches = touchList[i].identifier === this.touchStart.identifier;\n      if (matches) {\n        return touchList[i];\n      }\n    }\n    return null;\n  }\n  addEventListener(eventType, listener) {\n    this.localEventService.addEventListener(eventType, listener);\n  }\n  removeEventListener(eventType, listener) {\n    this.localEventService.removeEventListener(eventType, listener);\n  }\n  onTouchStart(touchEvent) {\n    if (this.touching) {\n      return;\n    }\n    this.touchStart = touchEvent.touches[0];\n    this.touching = true;\n    this.moved = false;\n    const touchStartCopy = this.touchStart;\n    window.setTimeout(() => {\n      const touchesMatch = this.touchStart === touchStartCopy;\n      if (this.touching && touchesMatch && !this.moved) {\n        this.moved = true;\n        const event = {\n          type: \"longTap\",\n          touchStart: this.touchStart,\n          touchEvent\n        };\n        this.localEventService.dispatchEvent(event);\n      }\n    }, 500);\n  }\n  onTouchMove(touchEvent) {\n    if (!this.touching) {\n      return;\n    }\n    const touch = this.getActiveTouch(touchEvent.touches);\n    if (!touch) {\n      return;\n    }\n    const eventIsFarAway = !_areEventsNear(touch, this.touchStart, 4);\n    if (eventIsFarAway) {\n      this.moved = true;\n    }\n  }\n  onTouchEnd(touchEvent) {\n    if (!this.touching) {\n      return;\n    }\n    if (!this.moved) {\n      const event = {\n        type: \"tap\",\n        touchStart: this.touchStart\n      };\n      this.localEventService.dispatchEvent(event);\n      this.checkForDoubleTap();\n    }\n    if (this.preventMouseClick && touchEvent.cancelable) {\n      touchEvent.preventDefault();\n    }\n    this.touching = false;\n  }\n  checkForDoubleTap() {\n    const now = Date.now();\n    if (this.lastTapTime && this.lastTapTime > 0) {\n      const interval = now - this.lastTapTime;\n      if (interval > this.DOUBLE_TAP_MILLIS) {\n        const event = {\n          type: \"doubleTap\",\n          touchStart: this.touchStart\n        };\n        this.localEventService.dispatchEvent(event);\n        this.lastTapTime = null;\n      } else {\n        this.lastTapTime = now;\n      }\n    } else {\n      this.lastTapTime = now;\n    }\n  }\n  destroy() {\n    this.destroyFuncs.forEach((func) => func());\n  }\n};\n\n// packages/ag-grid-community/src/interfaces/IRangeService.ts\nvar CellRangeType = /* @__PURE__ */ ((CellRangeType2) => {\n  CellRangeType2[CellRangeType2[\"VALUE\"] = 0] = \"VALUE\";\n  CellRangeType2[CellRangeType2[\"DIMENSION\"] = 1] = \"DIMENSION\";\n  return CellRangeType2;\n})(CellRangeType || {});\n\n// packages/ag-grid-community/src/vanillaFrameworkOverrides.ts\nvar VanillaFrameworkOverrides = class {\n  constructor(frameworkName = \"javascript\") {\n    this.frameworkName = frameworkName;\n    this.renderingEngine = \"vanilla\";\n    this.batchFrameworkComps = false;\n    this.wrapIncoming = (callback) => callback();\n    this.wrapOutgoing = (callback) => callback();\n    this.baseDocLink = `${BASE_URL}/${this.frameworkName}-data-grid`;\n    setValidationDocLink(this.baseDocLink);\n  }\n  setInterval(action, timeout) {\n    return new AgPromise((resolve) => {\n      resolve(window.setInterval(action, timeout));\n    });\n  }\n  // for Vanilla JS, we just add the event to the element\n  addEventListener(element, type, listener, options) {\n    let eventListenerOptions = {};\n    if (typeof options === \"object\") {\n      eventListenerOptions = options;\n    } else if (typeof options === \"boolean\") {\n      eventListenerOptions = { capture: options };\n    }\n    if (eventListenerOptions.passive == null) {\n      const passive = getPassiveStateForEvent(type);\n      if (passive != null) {\n        eventListenerOptions.passive = passive;\n      }\n    }\n    element.addEventListener(type, listener, eventListenerOptions);\n  }\n  frameworkComponent(_) {\n    return null;\n  }\n  isFrameworkComponent(_) {\n    return false;\n  }\n  getDocLink(path) {\n    return `${this.baseDocLink}${path ? `/${path}` : \"\"}`;\n  }\n};\n\n// packages/ag-grid-community/src/api/apiUtils.ts\nfunction createGridApi(context) {\n  return {\n    beanName: \"gridApi\",\n    bean: context.getBean(\"apiFunctionSvc\").api\n  };\n}\n\n// packages/ag-grid-community/src/context/gridBeanComparator.ts\nvar orderedCoreBeans = [\n  // Validate license first\n  \"licenseManager\",\n  // core beans only\n  \"environment\",\n  \"eventSvc\",\n  \"gos\",\n  \"paginationAutoPageSizeSvc\",\n  \"apiFunctionSvc\",\n  \"gridApi\",\n  \"registry\",\n  \"agCompUtils\",\n  \"userCompFactory\",\n  \"rowContainerHeight\",\n  \"horizontalResizeSvc\",\n  \"localeSvc\",\n  \"pinnedRowModel\",\n  \"dragSvc\",\n  \"colGroupSvc\",\n  \"visibleCols\",\n  \"popupSvc\",\n  \"selectionSvc\",\n  \"colFilter\",\n  \"quickFilter\",\n  \"filterManager\",\n  \"colModel\",\n  \"headerNavigation\",\n  \"pageBounds\",\n  \"pagination\",\n  \"pageBoundsListener\",\n  \"rowSpanSvc\",\n  \"stickyRowSvc\",\n  \"rowRenderer\",\n  \"expressionSvc\",\n  \"alignedGridsSvc\",\n  \"navigation\",\n  \"valueCache\",\n  \"valueSvc\",\n  \"autoWidthCalc\",\n  \"filterMenuFactory\",\n  \"dragAndDrop\",\n  \"focusSvc\",\n  \"cellNavigation\",\n  \"cellStyles\",\n  \"scrollVisibleSvc\",\n  \"sortSvc\",\n  \"colHover\",\n  \"colAnimation\",\n  \"autoColSvc\",\n  \"selectionColSvc\",\n  \"changeDetectionSvc\",\n  \"animationFrameSvc\",\n  \"undoRedo\",\n  \"colDefFactory\",\n  \"rowStyleSvc\",\n  \"rowNodeBlockLoader\",\n  \"rowNodeSorter\",\n  \"ctrlsSvc\",\n  \"pinnedCols\",\n  \"dataTypeSvc\",\n  \"syncSvc\",\n  \"overlays\",\n  \"stateSvc\",\n  \"expansionSvc\",\n  \"apiEventSvc\",\n  \"ariaAnnounce\",\n  \"menuSvc\",\n  \"colMoves\",\n  \"colAutosize\",\n  \"colFlex\",\n  \"colResize\",\n  \"pivotColsSvc\",\n  \"valueColsSvc\",\n  \"rowGroupColsSvc\",\n  \"funcColsSvc\",\n  \"colNames\",\n  \"colViewport\",\n  \"pivotResultCols\",\n  \"showRowGroupCols\",\n  \"validation\"\n  // Have validations run last\n];\nvar beanNamePosition = Object.fromEntries(\n  orderedCoreBeans.map((beanName, index) => [beanName, index])\n);\nfunction gridBeanInitComparator(bean1, bean2) {\n  const index1 = (bean1.beanName ? beanNamePosition[bean1.beanName] : void 0) ?? Number.MAX_SAFE_INTEGER;\n  const index2 = (bean2.beanName ? beanNamePosition[bean2.beanName] : void 0) ?? Number.MAX_SAFE_INTEGER;\n  return index1 - index2;\n}\nfunction gridBeanDestroyComparator(bean1, bean2) {\n  if (bean1?.beanName === \"gridDestroySvc\") {\n    return -1;\n  }\n  if (bean2?.beanName === \"gridDestroySvc\") {\n    return 1;\n  }\n  return 0;\n}\n\n// packages/ag-grid-community/src/headerRendering/rowContainer/headerRowContainerComp.ts\nvar PinnedLeftElement = { tag: \"div\", cls: \"ag-pinned-left-header\", role: \"rowgroup\" };\nvar PinnedRightElement = { tag: \"div\", cls: \"ag-pinned-right-header\", role: \"rowgroup\" };\nvar CenterElement = {\n  tag: \"div\",\n  cls: \"ag-header-viewport\",\n  role: \"presentation\",\n  attrs: { tabindex: \"-1\" },\n  children: [{ tag: \"div\", ref: \"eCenterContainer\", cls: \"ag-header-container\", role: \"rowgroup\" }]\n};\nvar HeaderRowContainerComp = class extends Component {\n  constructor(pinned) {\n    super();\n    this.eCenterContainer = RefPlaceholder;\n    this.headerRowComps = {};\n    this.rowCompsList = [];\n    this.pinned = pinned;\n  }\n  postConstruct() {\n    this.selectAndSetTemplate();\n    const compProxy = {\n      setDisplayed: (displayed) => this.setDisplayed(displayed),\n      setCtrls: (ctrls) => this.setCtrls(ctrls),\n      // only gets called for center section\n      setCenterWidth: (width) => this.eCenterContainer.style.width = width,\n      setViewportScrollLeft: (left) => this.getGui().scrollLeft = left,\n      // only gets called for pinned sections\n      setPinnedContainerWidth: (width) => {\n        const eGui = this.getGui();\n        eGui.style.width = width;\n        eGui.style.maxWidth = width;\n        eGui.style.minWidth = width;\n      }\n    };\n    const ctrl = this.createManagedBean(new HeaderRowContainerCtrl(this.pinned));\n    ctrl.setComp(compProxy, this.getGui());\n  }\n  selectAndSetTemplate() {\n    const pinnedLeft = this.pinned == \"left\";\n    const pinnedRight = this.pinned == \"right\";\n    const template = pinnedLeft ? PinnedLeftElement : pinnedRight ? PinnedRightElement : CenterElement;\n    this.setTemplate(template);\n    this.eRowContainer = this.eCenterContainer !== RefPlaceholder ? this.eCenterContainer : this.getGui();\n  }\n  destroy() {\n    this.setCtrls([]);\n    super.destroy();\n  }\n  destroyRowComp(rowComp) {\n    this.destroyBean(rowComp);\n    this.eRowContainer.removeChild(rowComp.getGui());\n  }\n  setCtrls(ctrls) {\n    const oldRowComps = this.headerRowComps;\n    this.headerRowComps = {};\n    this.rowCompsList = [];\n    let prevGui;\n    const appendEnsuringDomOrder = (rowComp) => {\n      const eGui = rowComp.getGui();\n      const notAlreadyIn = eGui.parentElement != this.eRowContainer;\n      if (notAlreadyIn) {\n        this.eRowContainer.appendChild(eGui);\n      }\n      if (prevGui) {\n        _ensureDomOrder(this.eRowContainer, eGui, prevGui);\n      }\n      prevGui = eGui;\n    };\n    ctrls.forEach((ctrl) => {\n      const ctrlId = ctrl.instanceId;\n      const existingComp = oldRowComps[ctrlId];\n      delete oldRowComps[ctrlId];\n      const rowComp = existingComp ? existingComp : this.createBean(new HeaderRowComp(ctrl));\n      this.headerRowComps[ctrlId] = rowComp;\n      this.rowCompsList.push(rowComp);\n      appendEnsuringDomOrder(rowComp);\n    });\n    Object.values(oldRowComps).forEach((c) => this.destroyRowComp(c));\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/gridHeaderComp.ts\nvar GridHeaderElement = { tag: \"div\", cls: \"ag-header\", role: \"presentation\" };\nvar GridHeaderComp = class extends Component {\n  constructor() {\n    super(GridHeaderElement);\n  }\n  postConstruct() {\n    const compProxy = {\n      toggleCss: (cssClassName, on) => this.toggleCss(cssClassName, on),\n      setHeightAndMinHeight: (height) => {\n        this.getGui().style.height = height;\n        this.getGui().style.minHeight = height;\n      }\n    };\n    const ctrl = this.createManagedBean(new GridHeaderCtrl());\n    ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());\n    const addContainer = (container) => {\n      this.createManagedBean(container);\n      this.appendChild(container);\n    };\n    addContainer(new HeaderRowContainerComp(\"left\"));\n    addContainer(new HeaderRowContainerComp(null));\n    addContainer(new HeaderRowContainerComp(\"right\"));\n  }\n};\nvar GridHeaderSelector = {\n  selector: \"AG-HEADER-ROOT\",\n  component: GridHeaderComp\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellComp.ts\nvar CellComp = class extends Component {\n  constructor(beans, cellCtrl, printLayout, eRow, editingRow) {\n    super();\n    this.cellCtrl = cellCtrl;\n    // every time we go into edit mode, or back again, this gets incremented.\n    // it's the components way of dealing with the async nature of framework components,\n    // so if a framework component takes a while to be created, we know if the object\n    // is still relevant when creating is finished. eg we could click edit / un-edit 20\n    // times before the first React edit component comes back - we should discard\n    // the first 19.\n    this.rendererVersion = 0;\n    this.editorVersion = 0;\n    this.beans = beans;\n    this.column = cellCtrl.column;\n    this.rowNode = cellCtrl.rowNode;\n    this.eRow = eRow;\n    const cellDiv = _createElement({\n      tag: \"div\",\n      role: cellCtrl.getCellAriaRole(),\n      attrs: {\n        \"comp-id\": `${this.getCompId()}`,\n        \"col-id\": cellCtrl.column.colIdSanitised\n      }\n    });\n    this.eCell = cellDiv;\n    let wrapperDiv;\n    if (cellCtrl.isCellSpanning()) {\n      wrapperDiv = _createElement({\n        tag: \"div\",\n        cls: \"ag-spanned-cell-wrapper\",\n        role: \"presentation\"\n      });\n      wrapperDiv.appendChild(cellDiv);\n      this.setTemplateFromElement(wrapperDiv);\n    } else {\n      this.setTemplateFromElement(cellDiv);\n    }\n    this.cellCssManager = new CssClassManager(() => cellDiv);\n    this.forceWrapper = cellCtrl.isForceWrapper();\n    this.refreshWrapper(false);\n    const compProxy = {\n      toggleCss: (cssClassName, on) => this.cellCssManager.toggleCss(cssClassName, on),\n      setUserStyles: (styles) => _addStylesToElement(cellDiv, styles),\n      getFocusableElement: () => cellDiv,\n      setIncludeSelection: (include) => this.includeSelection = include,\n      setIncludeRowDrag: (include) => this.includeRowDrag = include,\n      setIncludeDndSource: (include) => this.includeDndSource = include,\n      setRenderDetails: (compDetails, valueToDisplay, force) => this.setRenderDetails(compDetails, valueToDisplay, force),\n      setEditDetails: (compDetails, popup, position) => this.setEditDetails(compDetails, popup, position),\n      getCellEditor: () => this.cellEditor || null,\n      getCellRenderer: () => this.cellRenderer || null,\n      getParentOfValue: () => this.getParentOfValue()\n    };\n    cellCtrl.setComp(compProxy, cellDiv, wrapperDiv, this.eCellWrapper, printLayout, editingRow, void 0);\n  }\n  getParentOfValue() {\n    return this.eCellValue ?? this.eCellWrapper ?? this.eCell;\n  }\n  setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance) {\n    const isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;\n    if (isInlineEditing) {\n      return;\n    }\n    this.firstRender = this.firstRender == null;\n    const controlWrapperChanged = this.refreshWrapper(false);\n    this.refreshEditStyles(false);\n    if (compDetails) {\n      const neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;\n      const cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);\n      if (!cellRendererRefreshSuccessful) {\n        this.destroyRenderer();\n        this.createCellRendererInstance(compDetails);\n      }\n    } else {\n      this.destroyRenderer();\n      this.insertValueWithoutCellRenderer(valueToDisplay);\n    }\n  }\n  setEditDetails(compDetails, popup, position) {\n    if (compDetails) {\n      this.createCellEditorInstance(compDetails, popup, position);\n    } else {\n      this.destroyEditor();\n    }\n  }\n  removeControls() {\n    const context = this.beans.context;\n    this.checkboxSelectionComp = context.destroyBean(this.checkboxSelectionComp);\n    this.dndSourceComp = context.destroyBean(this.dndSourceComp);\n    this.rowDraggingComp = context.destroyBean(this.rowDraggingComp);\n  }\n  // returns true if wrapper was changed\n  refreshWrapper(editing) {\n    const providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;\n    const usingWrapper = providingControls || this.forceWrapper;\n    const putWrapperIn = usingWrapper && this.eCellWrapper == null;\n    if (putWrapperIn) {\n      this.eCellWrapper = _createElement({ tag: \"div\", cls: \"ag-cell-wrapper\", role: \"presentation\" });\n      this.eCell.appendChild(this.eCellWrapper);\n    }\n    const takeWrapperOut = !usingWrapper && this.eCellWrapper != null;\n    if (takeWrapperOut) {\n      _removeFromParent(this.eCellWrapper);\n      this.eCellWrapper = void 0;\n    }\n    this.cellCssManager.toggleCss(\"ag-cell-value\", !usingWrapper);\n    const usingCellValue = !editing && usingWrapper;\n    const putCellValueIn = usingCellValue && this.eCellValue == null;\n    if (putCellValueIn) {\n      this.eCellValue = _createElement({ tag: \"span\", cls: \"ag-cell-value\", role: \"presentation\" });\n      this.eCellWrapper.appendChild(this.eCellValue);\n    }\n    const takeCellValueOut = !usingCellValue && this.eCellValue != null;\n    if (takeCellValueOut) {\n      _removeFromParent(this.eCellValue);\n      this.eCellValue = void 0;\n    }\n    const templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;\n    if (templateChanged) {\n      this.removeControls();\n    }\n    if (!editing && providingControls) {\n      this.addControls();\n    }\n    return templateChanged;\n  }\n  addControls() {\n    const { cellCtrl, eCellWrapper, eCellValue, includeRowDrag, includeDndSource, includeSelection } = this;\n    const insertBefore = (comp) => {\n      if (comp) {\n        eCellWrapper.insertBefore(comp.getGui(), eCellValue);\n      }\n    };\n    if (includeRowDrag && this.rowDraggingComp == null) {\n      this.rowDraggingComp = cellCtrl.createRowDragComp();\n      insertBefore(this.rowDraggingComp);\n    }\n    if (includeDndSource && this.dndSourceComp == null) {\n      this.dndSourceComp = cellCtrl.createDndSource();\n      insertBefore(this.dndSourceComp);\n    }\n    if (includeSelection && this.checkboxSelectionComp == null) {\n      this.checkboxSelectionComp = cellCtrl.createSelectionCheckbox();\n      insertBefore(this.checkboxSelectionComp);\n    }\n  }\n  createCellEditorInstance(compDetails, popup, position) {\n    const versionCopy = this.editorVersion;\n    const cellEditorPromise = compDetails.newAgStackInstance();\n    const { params } = compDetails;\n    cellEditorPromise.then((c) => this.afterCellEditorCreated(versionCopy, c, params, popup, position));\n    const cellEditorAsync = _missing(this.cellEditor);\n    if (cellEditorAsync && params.cellStartedEdit) {\n      this.cellCtrl.focusCell(true);\n    }\n  }\n  insertValueWithoutCellRenderer(valueToDisplay) {\n    const eParent = this.getParentOfValue();\n    _clearElement(eParent);\n    const escapedValue = _toString(valueToDisplay);\n    if (escapedValue != null) {\n      eParent.textContent = escapedValue;\n    }\n  }\n  destroyRenderer() {\n    const { context } = this.beans;\n    this.cellRenderer = context.destroyBean(this.cellRenderer);\n    _removeFromParent(this.cellRendererGui);\n    this.cellRendererGui = null;\n    this.rendererVersion++;\n  }\n  destroyEditor() {\n    const { context } = this.beans;\n    const recoverFocus = this.cellEditorPopupWrapper?.getGui().contains(_getActiveDomElement(this.beans)) || this.cellCtrl.hasBrowserFocus();\n    if (recoverFocus) {\n      this.eCell.focus({ preventScroll: true });\n    }\n    this.hideEditorPopup?.();\n    this.hideEditorPopup = void 0;\n    this.cellEditor = context.destroyBean(this.cellEditor);\n    this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);\n    _removeFromParent(this.cellEditorGui);\n    this.cellEditorGui = null;\n    this.editorVersion++;\n  }\n  refreshCellRenderer(compClassAndParams) {\n    if (this.cellRenderer?.refresh == null) {\n      return false;\n    }\n    if (this.cellRendererClass !== compClassAndParams.componentClass) {\n      return false;\n    }\n    const result = this.cellRenderer.refresh(compClassAndParams.params);\n    return result === true || result === void 0;\n  }\n  createCellRendererInstance(compDetails) {\n    const displayComponentVersionCopy = this.rendererVersion;\n    const { componentClass } = compDetails;\n    const createCellRendererFunc = () => {\n      const staleTask = this.rendererVersion !== displayComponentVersionCopy || !this.isAlive();\n      if (staleTask) {\n        return;\n      }\n      const componentPromise = compDetails.newAgStackInstance();\n      const callback = this.afterCellRendererCreated.bind(this, displayComponentVersionCopy, componentClass);\n      componentPromise?.then(callback);\n    };\n    const { animationFrameSvc } = this.beans;\n    if (animationFrameSvc?.active && this.firstRender) {\n      animationFrameSvc.createTask(\n        createCellRendererFunc,\n        this.rowNode.rowIndex,\n        \"p2\",\n        compDetails.componentFromFramework\n      );\n    } else {\n      createCellRendererFunc();\n    }\n  }\n  afterCellRendererCreated(cellRendererVersion, cellRendererClass, cellRenderer) {\n    const staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;\n    if (staleTask) {\n      this.beans.context.destroyBean(cellRenderer);\n      return;\n    }\n    this.cellRenderer = cellRenderer;\n    this.cellRendererClass = cellRendererClass;\n    const cellGui = cellRenderer.getGui();\n    this.cellRendererGui = cellGui;\n    if (cellGui != null) {\n      const eParent = this.getParentOfValue();\n      _clearElement(eParent);\n      eParent.appendChild(cellGui);\n    }\n  }\n  afterCellEditorCreated(requestVersion, cellEditor, params, popup, position) {\n    const staleComp = requestVersion !== this.editorVersion;\n    const { context } = this.beans;\n    if (staleComp) {\n      context.destroyBean(cellEditor);\n      return;\n    }\n    const editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n    if (editingCancelledByUserComp) {\n      context.destroyBean(cellEditor);\n      this.cellCtrl.stopEditing(true);\n      return;\n    }\n    if (!cellEditor.getGui) {\n      _warn(97, { colId: this.column.getId() });\n      context.destroyBean(cellEditor);\n      return;\n    }\n    this.cellEditor = cellEditor;\n    this.cellEditorGui = cellEditor.getGui();\n    const cellEditorInPopup = popup || cellEditor.isPopup !== void 0 && cellEditor.isPopup();\n    if (cellEditorInPopup) {\n      this.addPopupCellEditor(params, position);\n    } else {\n      this.addInCellEditor();\n    }\n    this.refreshEditStyles(true, cellEditorInPopup);\n    cellEditor.afterGuiAttached?.();\n    this.cellCtrl.cellEditorAttached();\n  }\n  refreshEditStyles(editing, isPopup) {\n    const { cellCssManager } = this;\n    cellCssManager.toggleCss(\"ag-cell-inline-editing\", editing && !isPopup);\n    cellCssManager.toggleCss(\"ag-cell-popup-editing\", editing && !!isPopup);\n    cellCssManager.toggleCss(\"ag-cell-not-inline-editing\", !editing || !!isPopup);\n    this.cellCtrl.setInlineEditingCss();\n  }\n  addInCellEditor() {\n    const { eCell } = this;\n    if (eCell.contains(_getActiveDomElement(this.beans))) {\n      eCell.focus();\n    }\n    this.destroyRenderer();\n    this.refreshWrapper(true);\n    _clearElement(this.getParentOfValue());\n    if (this.cellEditorGui) {\n      const eParent = this.getParentOfValue();\n      eParent.appendChild(this.cellEditorGui);\n    }\n  }\n  addPopupCellEditor(params, position) {\n    const { gos, context, editSvc, popupSvc, localeSvc } = this.beans;\n    if (gos.get(\"editType\") === \"fullRow\") {\n      _warn(98);\n    }\n    const cellEditor = this.cellEditor;\n    this.cellEditorPopupWrapper = context.createBean(editSvc.createPopupEditorWrapper(params));\n    const ePopupGui = this.cellEditorPopupWrapper.getGui();\n    if (this.cellEditorGui) {\n      ePopupGui.appendChild(this.cellEditorGui);\n    }\n    const useModelPopup = gos.get(\"stopEditingWhenCellsLoseFocus\");\n    const positionToUse = position != null ? position : cellEditor.getPopupPosition?.() ?? \"over\";\n    const isRtl = gos.get(\"enableRtl\");\n    const positionParams = {\n      ePopup: ePopupGui,\n      column: this.column,\n      rowNode: this.rowNode,\n      type: \"popupCellEditor\",\n      eventSource: this.eCell,\n      position: positionToUse,\n      alignSide: isRtl ? \"right\" : \"left\",\n      keepWithinBounds: true\n    };\n    const positionCallback = popupSvc.positionPopupByComponent.bind(popupSvc, positionParams);\n    const translate = _getLocaleTextFunc(localeSvc);\n    const addPopupRes = popupSvc.addPopup({\n      modal: useModelPopup,\n      eChild: ePopupGui,\n      closeOnEsc: true,\n      closedCallback: () => {\n        this.cellCtrl.onPopupEditorClosed();\n      },\n      anchorToElement: this.eCell,\n      positionCallback,\n      ariaLabel: translate(\"ariaLabelCellEditor\", \"Cell Editor\")\n    });\n    if (addPopupRes) {\n      this.hideEditorPopup = addPopupRes.hideFunc;\n    }\n  }\n  detach() {\n    this.eRow.removeChild(this.getGui());\n  }\n  // if the row is also getting destroyed, then we don't need to remove from dom,\n  // as the row will also get removed, so no need to take out the cells from the row\n  // if the row is going (removing is an expensive operation, so only need to remove\n  // the top part)\n  //\n  // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n  destroy() {\n    this.cellCtrl.stopEditing();\n    this.destroyRenderer();\n    this.destroyEditor();\n    this.removeControls();\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/rendering/row/rowComp.ts\nvar RowComp = class extends Component {\n  constructor(ctrl, beans, containerType) {\n    super();\n    this.cellComps = /* @__PURE__ */ new Map();\n    this.beans = beans;\n    this.rowCtrl = ctrl;\n    const rowDiv = _createElement({ tag: \"div\", role: \"row\", attrs: { \"comp-id\": `${this.getCompId()}` } });\n    this.setInitialStyle(rowDiv, containerType);\n    this.setTemplateFromElement(rowDiv);\n    const style = rowDiv.style;\n    this.domOrder = this.rowCtrl.getDomOrder();\n    const compProxy = {\n      setDomOrder: (domOrder) => this.domOrder = domOrder,\n      setCellCtrls: (cellCtrls) => this.setCellCtrls(cellCtrls),\n      showFullWidth: (compDetails) => this.showFullWidth(compDetails),\n      getFullWidthCellRenderer: () => this.fullWidthCellRenderer,\n      toggleCss: (name, on) => this.toggleCss(name, on),\n      setUserStyles: (styles) => _addStylesToElement(rowDiv, styles),\n      setTop: (top) => style.top = top,\n      setTransform: (transform) => style.transform = transform,\n      setRowIndex: (rowIndex) => rowDiv.setAttribute(\"row-index\", rowIndex),\n      setRowId: (rowId) => rowDiv.setAttribute(\"row-id\", rowId),\n      setRowBusinessKey: (businessKey) => rowDiv.setAttribute(\"row-business-key\", businessKey),\n      refreshFullWidth: (getUpdatedParams) => this.fullWidthCellRenderer?.refresh?.(getUpdatedParams()) ?? false\n    };\n    ctrl.setComp(compProxy, this.getGui(), containerType, void 0);\n    this.addDestroyFunc(() => {\n      ctrl.unsetComp(containerType);\n    });\n  }\n  setInitialStyle(container, containerType) {\n    const transform = this.rowCtrl.getInitialTransform(containerType);\n    if (transform) {\n      container.style.setProperty(\"transform\", transform);\n    } else {\n      const top = this.rowCtrl.getInitialRowTop(containerType);\n      if (top) {\n        container.style.setProperty(\"top\", top);\n      }\n    }\n  }\n  showFullWidth(compDetails) {\n    const callback = (cellRenderer) => {\n      if (this.isAlive()) {\n        const eGui = cellRenderer.getGui();\n        this.getGui().appendChild(eGui);\n        this.rowCtrl.setupDetailRowAutoHeight(eGui);\n        this.setFullWidthRowComp(cellRenderer);\n      } else {\n        this.beans.context.destroyBean(cellRenderer);\n      }\n    };\n    const res = compDetails.newAgStackInstance();\n    res.then(callback);\n  }\n  setCellCtrls(cellCtrls) {\n    const cellsToRemove = new Map(this.cellComps);\n    for (const cellCtrl of cellCtrls) {\n      const key = cellCtrl.instanceId;\n      if (!this.cellComps.has(key)) {\n        this.newCellComp(cellCtrl);\n      } else {\n        cellsToRemove.delete(key);\n      }\n    }\n    this.destroyCells(cellsToRemove);\n    this.ensureDomOrder(cellCtrls);\n  }\n  ensureDomOrder(cellCtrls) {\n    if (!this.domOrder) {\n      return;\n    }\n    const elementsInOrder = [];\n    for (const cellCtrl of cellCtrls) {\n      const cellComp = this.cellComps.get(cellCtrl.instanceId);\n      if (cellComp) {\n        elementsInOrder.push(cellComp.getGui());\n      }\n    }\n    _setDomChildOrder(this.getGui(), elementsInOrder);\n  }\n  newCellComp(cellCtrl) {\n    const cellComp = new CellComp(\n      this.beans,\n      cellCtrl,\n      this.rowCtrl.printLayout,\n      this.getGui(),\n      this.rowCtrl.editing\n    );\n    this.cellComps.set(cellCtrl.instanceId, cellComp);\n    this.getGui().appendChild(cellComp.getGui());\n  }\n  destroy() {\n    super.destroy();\n    this.destroyCells(this.cellComps);\n  }\n  setFullWidthRowComp(fullWidthRowComponent) {\n    this.fullWidthCellRenderer = fullWidthRowComponent;\n    this.addDestroyFunc(() => {\n      this.fullWidthCellRenderer = this.beans.context.destroyBean(this.fullWidthCellRenderer);\n    });\n  }\n  destroyCells(cellComps) {\n    for (const cellComp of cellComps.values()) {\n      if (!cellComp) {\n        return;\n      }\n      const instanceId = cellComp.cellCtrl.instanceId;\n      if (this.cellComps.get(instanceId) !== cellComp) {\n        return;\n      }\n      cellComp.detach();\n      cellComp.destroy();\n      this.cellComps.delete(instanceId);\n    }\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/rowContainerComp.ts\nfunction getElementParams(name, options, beans) {\n  const isCellSpanning = !!beans.gos.get(\"enableCellSpan\") && !!options.getSpannedRowCtrls;\n  const eContainerElement = {\n    tag: \"div\",\n    ref: \"eContainer\",\n    cls: _getRowContainerClass(name),\n    role: \"rowgroup\"\n  };\n  if (options.type === \"center\" || isCellSpanning) {\n    const eSpannedContainerElement = {\n      tag: \"div\",\n      ref: \"eSpannedContainer\",\n      cls: `ag-spanning-container ${_getRowSpanContainerClass(name)}`,\n      role: \"rowgroup\"\n    };\n    return {\n      tag: \"div\",\n      ref: \"eViewport\",\n      cls: `ag-viewport ${_getRowViewportClass(name)}`,\n      role: \"presentation\",\n      children: [eContainerElement, isCellSpanning ? eSpannedContainerElement : null]\n    };\n  }\n  return eContainerElement;\n}\nvar RowContainerComp = class extends Component {\n  constructor(params) {\n    super();\n    this.eViewport = RefPlaceholder;\n    this.eContainer = RefPlaceholder;\n    this.eSpannedContainer = RefPlaceholder;\n    this.rowCompsNoSpan = {};\n    this.rowCompsWithSpan = {};\n    this.name = params?.name;\n    this.options = _getRowContainerOptions(this.name);\n  }\n  postConstruct() {\n    this.setTemplate(getElementParams(this.name, this.options, this.beans));\n    const compProxy = {\n      setHorizontalScroll: (offset) => this.eViewport.scrollLeft = offset,\n      setViewportHeight: (height) => this.eViewport.style.height = height,\n      setRowCtrls: ({ rowCtrls }) => this.setRowCtrls(rowCtrls),\n      setSpannedRowCtrls: (rowCtrls) => this.setRowCtrls(rowCtrls, true),\n      setDomOrder: (domOrder) => {\n        this.domOrder = domOrder;\n      },\n      setContainerWidth: (width) => {\n        this.eContainer.style.width = width;\n        if (this.eSpannedContainer) {\n          this.eSpannedContainer.style.width = width;\n        }\n      },\n      setOffsetTop: (offset) => {\n        const top = `translateY(${offset})`;\n        this.eContainer.style.transform = top;\n        if (this.eSpannedContainer) {\n          this.eSpannedContainer.style.transform = top;\n        }\n      }\n    };\n    const ctrl = this.createManagedBean(new RowContainerCtrl(this.name));\n    ctrl.setComp(compProxy, this.eContainer, this.eSpannedContainer, this.eViewport);\n  }\n  destroy() {\n    this.setRowCtrls([]);\n    this.setRowCtrls([], true);\n    super.destroy();\n    this.lastPlacedElement = null;\n  }\n  setRowCtrls(rowCtrls, spanContainer) {\n    const { beans, options } = this;\n    const container = spanContainer ? this.eSpannedContainer : this.eContainer;\n    const oldRows = spanContainer ? { ...this.rowCompsWithSpan } : { ...this.rowCompsNoSpan };\n    const newComps = {};\n    if (spanContainer) {\n      this.rowCompsWithSpan = newComps;\n    } else {\n      this.rowCompsNoSpan = newComps;\n    }\n    this.lastPlacedElement = null;\n    const orderedRows = [];\n    for (const rowCtrl of rowCtrls) {\n      const instanceId = rowCtrl.instanceId;\n      const existingRowComp = oldRows[instanceId];\n      let rowComp;\n      if (existingRowComp) {\n        rowComp = existingRowComp;\n        delete oldRows[instanceId];\n      } else {\n        if (!rowCtrl.rowNode.displayed) {\n          continue;\n        }\n        rowComp = new RowComp(rowCtrl, beans, options.type);\n      }\n      newComps[instanceId] = rowComp;\n      orderedRows.push([rowComp, !existingRowComp]);\n    }\n    this.removeOldRows(Object.values(oldRows), container);\n    this.addRowNodes(orderedRows, container);\n  }\n  addRowNodes(rows, container) {\n    const { domOrder } = this;\n    for (const [rowComp, isNew] of rows) {\n      const eGui = rowComp.getGui();\n      if (!domOrder) {\n        if (isNew) {\n          container.appendChild(eGui);\n        }\n      } else {\n        this.ensureDomOrder(eGui, container);\n      }\n    }\n  }\n  removeOldRows(rowComps, container) {\n    for (const oldRowComp of rowComps) {\n      container.removeChild(oldRowComp.getGui());\n      oldRowComp.destroy();\n    }\n  }\n  ensureDomOrder(eRow, container) {\n    _ensureDomOrder(container, eRow, this.lastPlacedElement);\n    this.lastPlacedElement = eRow;\n  }\n};\nvar RowContainerSelector = {\n  selector: \"AG-ROW-CONTAINER\",\n  component: RowContainerComp\n};\n\n// packages/ag-grid-community/src/gridBodyComp/gridBodyComp.ts\nfunction makeRowContainers(paramsMap, names) {\n  return names.map((name) => {\n    const refName = `e${name[0].toUpperCase() + name.substring(1)}RowContainer`;\n    paramsMap[refName] = { name };\n    return {\n      tag: \"ag-row-container\",\n      ref: refName,\n      attrs: { name }\n    };\n  });\n}\nfunction getGridBodyTemplate(includeOverlay) {\n  const paramsMap = {};\n  const elementParams = {\n    tag: \"div\",\n    ref: \"eGridRoot\",\n    cls: \"ag-root ag-unselectable\",\n    children: [\n      { tag: \"ag-header-root\" },\n      {\n        tag: \"div\",\n        ref: \"eTop\",\n        cls: \"ag-floating-top\",\n        role: \"presentation\",\n        children: makeRowContainers(paramsMap, [\"topLeft\", \"topCenter\", \"topRight\", \"topFullWidth\"])\n      },\n      {\n        tag: \"div\",\n        ref: \"eBody\",\n        cls: \"ag-body\",\n        role: \"presentation\",\n        children: [\n          {\n            tag: \"div\",\n            ref: \"eBodyViewport\",\n            cls: \"ag-body-viewport\",\n            role: \"presentation\",\n            children: makeRowContainers(paramsMap, [\"left\", \"center\", \"right\", \"fullWidth\"])\n          },\n          { tag: \"ag-fake-vertical-scroll\" }\n        ]\n      },\n      {\n        tag: \"div\",\n        ref: \"eStickyTop\",\n        cls: \"ag-sticky-top\",\n        role: \"presentation\",\n        children: makeRowContainers(paramsMap, [\n          \"stickyTopLeft\",\n          \"stickyTopCenter\",\n          \"stickyTopRight\",\n          \"stickyTopFullWidth\"\n        ])\n      },\n      {\n        tag: \"div\",\n        ref: \"eStickyBottom\",\n        cls: \"ag-sticky-bottom\",\n        role: \"presentation\",\n        children: makeRowContainers(paramsMap, [\n          \"stickyBottomLeft\",\n          \"stickyBottomCenter\",\n          \"stickyBottomRight\",\n          \"stickyBottomFullWidth\"\n        ])\n      },\n      {\n        tag: \"div\",\n        ref: \"eBottom\",\n        cls: \"ag-floating-bottom\",\n        role: \"presentation\",\n        children: makeRowContainers(paramsMap, [\n          \"bottomLeft\",\n          \"bottomCenter\",\n          \"bottomRight\",\n          \"bottomFullWidth\"\n        ])\n      },\n      { tag: \"ag-fake-horizontal-scroll\" },\n      includeOverlay ? { tag: \"ag-overlay-wrapper\" } : null\n    ]\n  };\n  return { paramsMap, elementParams };\n}\nvar GridBodyComp = class extends Component {\n  constructor() {\n    super(...arguments);\n    this.eGridRoot = RefPlaceholder;\n    this.eBodyViewport = RefPlaceholder;\n    this.eStickyTop = RefPlaceholder;\n    this.eStickyBottom = RefPlaceholder;\n    this.eTop = RefPlaceholder;\n    this.eBottom = RefPlaceholder;\n    this.eBody = RefPlaceholder;\n  }\n  postConstruct() {\n    const { overlays, rangeSvc } = this.beans;\n    const overlaySelector = overlays?.getOverlayWrapperSelector();\n    const { paramsMap, elementParams } = getGridBodyTemplate(!!overlaySelector);\n    this.setTemplate(\n      elementParams,\n      [\n        ...overlaySelector ? [overlaySelector] : [],\n        FakeHScrollSelector,\n        FakeVScrollSelector,\n        GridHeaderSelector,\n        RowContainerSelector\n      ],\n      paramsMap\n    );\n    const setHeight = (height, element) => {\n      const heightString = `${height}px`;\n      element.style.minHeight = heightString;\n      element.style.height = heightString;\n    };\n    const compProxy = {\n      setRowAnimationCssOnBodyViewport: (cssClass, animate) => this.setRowAnimationCssOnBodyViewport(cssClass, animate),\n      setColumnCount: (count) => _setAriaColCount(this.getGui(), count),\n      setRowCount: (count) => _setAriaRowCount(this.getGui(), count),\n      setTopHeight: (height) => setHeight(height, this.eTop),\n      setBottomHeight: (height) => setHeight(height, this.eBottom),\n      setTopInvisible: (invisible) => this.eTop.classList.toggle(\"ag-invisible\", invisible),\n      setBottomInvisible: (invisible) => this.eBottom.classList.toggle(\"ag-invisible\", invisible),\n      setStickyTopHeight: (height) => this.eStickyTop.style.height = height,\n      setStickyTopTop: (top) => this.eStickyTop.style.top = top,\n      setStickyTopWidth: (width) => this.eStickyTop.style.width = width,\n      setStickyBottomHeight: (height) => {\n        this.eStickyBottom.style.height = height;\n        this.eStickyBottom.classList.toggle(\"ag-invisible\", height === \"0px\");\n      },\n      setStickyBottomBottom: (bottom) => this.eStickyBottom.style.bottom = bottom,\n      setStickyBottomWidth: (width) => this.eStickyBottom.style.width = width,\n      setColumnMovingCss: (cssClass, flag) => this.toggleCss(cssClass, flag),\n      updateLayoutClasses: (cssClass, params) => {\n        const classLists = [this.eBodyViewport.classList, this.eBody.classList];\n        for (const classList of classLists) {\n          classList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n          classList.toggle(LayoutCssClasses.NORMAL, params.normal);\n          classList.toggle(LayoutCssClasses.PRINT, params.print);\n        }\n        this.toggleCss(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n        this.toggleCss(LayoutCssClasses.NORMAL, params.normal);\n        this.toggleCss(LayoutCssClasses.PRINT, params.print);\n      },\n      setAlwaysVerticalScrollClass: (cssClass, on) => this.eBodyViewport.classList.toggle(CSS_CLASS_FORCE_VERTICAL_SCROLL, on),\n      registerBodyViewportResizeListener: (listener) => {\n        const unsubscribeFromResize = _observeResize(this.beans, this.eBodyViewport, listener);\n        this.addDestroyFunc(() => unsubscribeFromResize());\n      },\n      setPinnedTopBottomOverflowY: (overflow) => this.eTop.style.overflowY = this.eBottom.style.overflowY = overflow,\n      setCellSelectableCss: (cssClass, selectable) => {\n        [this.eTop, this.eBodyViewport, this.eBottom].forEach(\n          (ct) => ct.classList.toggle(cssClass, selectable)\n        );\n      },\n      setBodyViewportWidth: (width) => this.eBodyViewport.style.width = width,\n      setGridRootRole: (role) => _setAriaRole(this.eGridRoot, role)\n    };\n    this.ctrl = this.createManagedBean(new GridBodyCtrl());\n    this.ctrl.setComp(\n      compProxy,\n      this.getGui(),\n      this.eBodyViewport,\n      this.eTop,\n      this.eBottom,\n      this.eStickyTop,\n      this.eStickyBottom\n    );\n    if (rangeSvc && _isCellSelectionEnabled(this.gos) || _isMultiRowSelection(this.gos)) {\n      _setAriaMultiSelectable(this.getGui(), true);\n    }\n  }\n  setRowAnimationCssOnBodyViewport(cssClass, animateRows) {\n    const bodyViewportClassList = this.eBodyViewport.classList;\n    bodyViewportClassList.toggle(\"ag-row-animation\", animateRows);\n    bodyViewportClassList.toggle(\"ag-row-no-animation\", !animateRows);\n  }\n};\nvar GridBodySelector = {\n  selector: \"AG-GRID-BODY\",\n  component: GridBodyComp\n};\n\n// packages/ag-grid-community/src/gridComp/gridCtrl.ts\nvar GridCtrl = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.additionalFocusableContainers = /* @__PURE__ */ new Set();\n  }\n  setComp(view, eGridDiv, eGui) {\n    this.view = view;\n    this.eGridHostDiv = eGridDiv;\n    this.eGui = eGui;\n    this.eGui.setAttribute(\"grid-id\", this.beans.context.getGridId());\n    const { dragAndDrop, ctrlsSvc } = this.beans;\n    dragAndDrop?.registerGridDropTarget(() => this.eGui, this);\n    _stampTopLevelGridCompWithGridInstance(this.gos, eGridDiv);\n    this.createManagedBean(new LayoutFeature(this.view));\n    this.view.setRtlClass(this.gos.get(\"enableRtl\") ? \"ag-rtl\" : \"ag-ltr\");\n    const unsubscribeFromResize = _observeResize(this.beans, this.eGridHostDiv, this.onGridSizeChanged.bind(this));\n    this.addDestroyFunc(() => unsubscribeFromResize());\n    ctrlsSvc.register(\"gridCtrl\", this);\n  }\n  isDetailGrid() {\n    const el = _findTabbableParent(this.getGui());\n    return el?.getAttribute(\"row-id\")?.startsWith(\"detail\") || false;\n  }\n  getOptionalSelectors() {\n    const beans = this.beans;\n    return {\n      paginationSelector: beans.pagination?.getPaginationSelector(),\n      gridHeaderDropZonesSelector: beans.registry.getSelector(\"AG-GRID-HEADER-DROP-ZONES\"),\n      sideBarSelector: beans.sideBar?.getSelector(),\n      statusBarSelector: beans.registry?.getSelector(\"AG-STATUS-BAR\"),\n      watermarkSelector: beans.licenseManager?.getWatermarkSelector()\n    };\n  }\n  onGridSizeChanged() {\n    this.eventSvc.dispatchEvent({\n      type: \"gridSizeChanged\",\n      clientWidth: this.eGridHostDiv.clientWidth,\n      clientHeight: this.eGridHostDiv.clientHeight\n    });\n  }\n  destroyGridUi() {\n    this.view.destroyGridUi();\n  }\n  getGui() {\n    return this.eGui;\n  }\n  setResizeCursor(on) {\n    this.view.setCursor(on ? \"ew-resize\" : null);\n  }\n  disableUserSelect(on) {\n    this.view.setUserSelect(on ? \"none\" : null);\n  }\n  focusNextInnerContainer(backwards) {\n    const focusableContainers = this.getFocusableContainers();\n    const { indexWithFocus, nextIndex } = this.getNextFocusableIndex(focusableContainers, backwards);\n    if (nextIndex < 0 || nextIndex >= focusableContainers.length) {\n      return false;\n    }\n    if (nextIndex === 0) {\n      if (indexWithFocus > 0) {\n        const { visibleCols, focusSvc } = this.beans;\n        const allColumns = visibleCols.allCols;\n        const lastColumn = _last(allColumns);\n        if (focusSvc.focusGridView({ column: lastColumn, backwards: true })) {\n          return true;\n        }\n      }\n      return false;\n    }\n    return this.focusContainer(focusableContainers[nextIndex], backwards);\n  }\n  focusInnerElement(fromBottom) {\n    const userCallbackFunction = this.gos.getCallback(\"focusGridInnerElement\");\n    if (userCallbackFunction && userCallbackFunction({ fromBottom: !!fromBottom })) {\n      return true;\n    }\n    const focusableContainers = this.getFocusableContainers();\n    const { focusSvc, visibleCols } = this.beans;\n    const allColumns = visibleCols.allCols;\n    if (fromBottom) {\n      if (focusableContainers.length > 1) {\n        return this.focusContainer(_last(focusableContainers), fromBottom);\n      }\n      const lastColumn = _last(allColumns);\n      if (focusSvc.focusGridView({ column: lastColumn, backwards: fromBottom })) {\n        return true;\n      }\n    }\n    if (this.gos.get(\"headerHeight\") === 0 || _isHeaderFocusSuppressed(this.beans)) {\n      if (focusSvc.focusGridView({ column: allColumns[0], backwards: fromBottom })) {\n        return true;\n      }\n      for (let i = 1; i < focusableContainers.length; i++) {\n        if (_focusInto(focusableContainers[i].getGui(), fromBottom)) {\n          return true;\n        }\n      }\n      return false;\n    }\n    return focusSvc.focusFirstHeader();\n  }\n  forceFocusOutOfContainer(up = false) {\n    this.view.forceFocusOutOfContainer(up);\n  }\n  addFocusableContainer(container) {\n    this.additionalFocusableContainers.add(container);\n  }\n  removeFocusableContainer(container) {\n    this.additionalFocusableContainers.delete(container);\n  }\n  allowFocusForNextCoreContainer(up) {\n    const coreContainers = this.view.getFocusableContainers();\n    const { nextIndex, indexWithFocus } = this.getNextFocusableIndex(coreContainers, up);\n    if (indexWithFocus === -1 || nextIndex < 0 || nextIndex >= coreContainers.length) {\n      return;\n    }\n    const comp = coreContainers[nextIndex];\n    comp.setAllowFocus?.(true);\n    setTimeout(() => {\n      comp.setAllowFocus?.(false);\n    });\n  }\n  isFocusable() {\n    const beans = this.beans;\n    return !_isCellFocusSuppressed(beans) || !_isHeaderFocusSuppressed(beans) || !!beans.sideBar?.comp?.isDisplayed();\n  }\n  getNextFocusableIndex(focusableContainers, backwards) {\n    const activeEl = _getActiveDomElement(this.beans);\n    const indexWithFocus = focusableContainers.findIndex((container) => container.getGui().contains(activeEl));\n    const nextIndex = indexWithFocus + (backwards ? -1 : 1);\n    return {\n      indexWithFocus,\n      nextIndex\n    };\n  }\n  focusContainer(comp, up) {\n    comp.setAllowFocus?.(true);\n    const result = _focusInto(comp.getGui(), up, false, true);\n    comp.setAllowFocus?.(false);\n    return result;\n  }\n  getFocusableContainers() {\n    return [...this.view.getFocusableContainers(), ...this.additionalFocusableContainers];\n  }\n  destroy() {\n    this.additionalFocusableContainers.clear();\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/gridComp/gridComp.ts\nvar GridComp = class extends TabGuardComp {\n  constructor(eGridDiv) {\n    super();\n    this.gridBody = RefPlaceholder;\n    this.sideBar = RefPlaceholder;\n    this.pagination = RefPlaceholder;\n    this.rootWrapperBody = RefPlaceholder;\n    this.eGridDiv = eGridDiv;\n  }\n  postConstruct() {\n    const compProxy = {\n      destroyGridUi: () => this.destroyBean(this),\n      setRtlClass: (cssClass) => this.addCss(cssClass),\n      forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),\n      updateLayoutClasses: this.updateLayoutClasses.bind(this),\n      getFocusableContainers: this.getFocusableContainers.bind(this),\n      setUserSelect: (value) => {\n        this.getGui().style.userSelect = value != null ? value : \"\";\n        this.getGui().style.webkitUserSelect = value != null ? value : \"\";\n      },\n      setCursor: (value) => {\n        this.getGui().style.cursor = value != null ? value : \"\";\n      }\n    };\n    const ctrl = this.createManagedBean(new GridCtrl());\n    const comps = ctrl.getOptionalSelectors();\n    const template = this.createTemplate(comps);\n    const requiredComps = [GridBodySelector, ...Object.values(comps).filter((c) => !!c)];\n    this.setTemplate(template, requiredComps);\n    ctrl.setComp(compProxy, this.eGridDiv, this.getGui());\n    this.insertGridIntoDom();\n    this.initialiseTabGuard({\n      // we want to override the default behaviour to do nothing for onTabKeyDown\n      onTabKeyDown: () => void 0,\n      focusInnerElement: (fromBottom) => ctrl.focusInnerElement(fromBottom),\n      forceFocusOutWhenTabGuardsAreEmpty: true,\n      isEmpty: () => !ctrl.isFocusable()\n    });\n  }\n  insertGridIntoDom() {\n    const eGui = this.getGui();\n    this.eGridDiv.appendChild(eGui);\n    this.addDestroyFunc(() => {\n      this.eGridDiv.removeChild(eGui);\n      _logIfDebug(this.gos, \"Grid removed from DOM\");\n    });\n  }\n  updateLayoutClasses(cssClass, params) {\n    const eRootWrapperBodyClassList = this.rootWrapperBody.classList;\n    const { AUTO_HEIGHT, NORMAL, PRINT } = LayoutCssClasses;\n    const { autoHeight, normal, print } = params;\n    eRootWrapperBodyClassList.toggle(AUTO_HEIGHT, autoHeight);\n    eRootWrapperBodyClassList.toggle(NORMAL, normal);\n    eRootWrapperBodyClassList.toggle(PRINT, print);\n    this.toggleCss(AUTO_HEIGHT, autoHeight);\n    this.toggleCss(NORMAL, normal);\n    this.toggleCss(PRINT, print);\n  }\n  createTemplate(params) {\n    const dropZones = params.gridHeaderDropZonesSelector ? { tag: \"ag-grid-header-drop-zones\" } : null;\n    const sideBar = params.sideBarSelector ? {\n      tag: \"ag-side-bar\",\n      ref: \"sideBar\"\n    } : null;\n    const statusBar = params.statusBarSelector ? { tag: \"ag-status-bar\" } : null;\n    const watermark = params.watermarkSelector ? { tag: \"ag-watermark\" } : null;\n    const pagination = params.paginationSelector ? { tag: \"ag-pagination\", ref: \"pagination\" } : null;\n    return {\n      tag: \"div\",\n      cls: \"ag-root-wrapper\",\n      role: \"presentation\",\n      children: [\n        dropZones,\n        {\n          tag: \"div\",\n          ref: \"rootWrapperBody\",\n          cls: \"ag-root-wrapper-body\",\n          role: \"presentation\",\n          children: [{ tag: \"ag-grid-body\", ref: \"gridBody\" }, sideBar]\n        },\n        statusBar,\n        pagination,\n        watermark\n      ]\n    };\n  }\n  getFocusableElement() {\n    return this.rootWrapperBody;\n  }\n  forceFocusOutOfContainer(up = false) {\n    if (!up && this.pagination?.isDisplayed()) {\n      this.pagination.forceFocusOutOfContainer(up);\n      return;\n    }\n    super.forceFocusOutOfContainer(up);\n  }\n  getFocusableContainers() {\n    const focusableContainers = [this.gridBody];\n    [this.sideBar, this.pagination].forEach((comp) => {\n      if (comp) {\n        focusableContainers.push(comp);\n      }\n    });\n    return focusableContainers.filter((el) => _isVisible(el.getGui()));\n  }\n};\n\n// packages/ag-grid-community/src/api/gridApiFunctions.ts\nvar mod = (moduleName, input) => {\n  for (const key of Object.keys(input)) {\n    input[key] = moduleName;\n  }\n  return input;\n};\nvar gridApiFunctionsMap = {\n  dispatchEvent: \"CommunityCore\",\n  // this is always registered\n  ...mod(\"CommunityCore\", {\n    destroy: 0,\n    getGridId: 0,\n    getGridOption: 0,\n    isDestroyed: 0,\n    setGridOption: 0,\n    updateGridOptions: 0,\n    isModuleRegistered: 0\n  }),\n  ...mod(\"GridState\", {\n    getState: 0\n  }),\n  ...mod(\"SharedRowSelection\", {\n    setNodesSelected: 0,\n    selectAll: 0,\n    deselectAll: 0,\n    selectAllFiltered: 0,\n    deselectAllFiltered: 0,\n    selectAllOnCurrentPage: 0,\n    deselectAllOnCurrentPage: 0,\n    getSelectedNodes: 0,\n    getSelectedRows: 0\n  }),\n  ...mod(\"RowApi\", {\n    redrawRows: 0,\n    setRowNodeExpanded: 0,\n    getRowNode: 0,\n    addRenderedRowListener: 0,\n    getRenderedNodes: 0,\n    forEachNode: 0,\n    getFirstDisplayedRowIndex: 0,\n    getLastDisplayedRowIndex: 0,\n    getDisplayedRowAtIndex: 0,\n    getDisplayedRowCount: 0\n  }),\n  ...mod(\"ScrollApi\", {\n    getVerticalPixelRange: 0,\n    getHorizontalPixelRange: 0,\n    ensureColumnVisible: 0,\n    ensureIndexVisible: 0,\n    ensureNodeVisible: 0\n  }),\n  ...mod(\"KeyboardNavigation\", {\n    getFocusedCell: 0,\n    clearFocusedCell: 0,\n    setFocusedCell: 0,\n    tabToNextCell: 0,\n    tabToPreviousCell: 0,\n    setFocusedHeader: 0\n  }),\n  ...mod(\"EventApi\", {\n    addEventListener: 0,\n    addGlobalListener: 0,\n    removeEventListener: 0,\n    removeGlobalListener: 0\n  }),\n  ...mod(\"ValueCache\", {\n    expireValueCache: 0\n  }),\n  ...mod(\"CellApi\", {\n    getCellValue: 0\n  }),\n  ...mod(\"SharedMenu\", {\n    showColumnMenu: 0,\n    hidePopupMenu: 0\n  }),\n  ...mod(\"Sort\", {\n    onSortChanged: 0\n  }),\n  ...mod(\"PinnedRow\", {\n    getPinnedTopRowCount: 0,\n    getPinnedBottomRowCount: 0,\n    getPinnedTopRow: 0,\n    getPinnedBottomRow: 0,\n    forEachPinnedRow: 0\n  }),\n  ...mod(\"Overlay\", {\n    showLoadingOverlay: 0,\n    showNoRowsOverlay: 0,\n    hideOverlay: 0\n  }),\n  ...mod(\"RenderApi\", {\n    setGridAriaProperty: 0,\n    refreshCells: 0,\n    refreshHeader: 0,\n    isAnimationFrameQueueEmpty: 0,\n    flushAllAnimationFrames: 0,\n    getSizesForCurrentTheme: 0,\n    getCellRendererInstances: 0\n  }),\n  ...mod(\"HighlightChanges\", {\n    flashCells: 0\n  }),\n  ...mod(\"RowDrag\", {\n    addRowDropZone: 0,\n    removeRowDropZone: 0,\n    getRowDropZoneParams: 0\n  }),\n  ...mod(\"ColumnApi\", {\n    getColumnDefs: 0,\n    getColumnDef: 0,\n    getDisplayNameForColumn: 0,\n    getColumn: 0,\n    getColumns: 0,\n    applyColumnState: 0,\n    getColumnState: 0,\n    resetColumnState: 0,\n    isPinning: 0,\n    isPinningLeft: 0,\n    isPinningRight: 0,\n    getDisplayedColAfter: 0,\n    getDisplayedColBefore: 0,\n    setColumnsVisible: 0,\n    setColumnsPinned: 0,\n    getAllGridColumns: 0,\n    getDisplayedLeftColumns: 0,\n    getDisplayedCenterColumns: 0,\n    getDisplayedRightColumns: 0,\n    getAllDisplayedColumns: 0,\n    getAllDisplayedVirtualColumns: 0\n  }),\n  ...mod(\"ColumnAutoSize\", {\n    sizeColumnsToFit: 0,\n    autoSizeColumns: 0,\n    autoSizeAllColumns: 0\n  }),\n  ...mod(\"ColumnGroup\", {\n    setColumnGroupOpened: 0,\n    getColumnGroup: 0,\n    getProvidedColumnGroup: 0,\n    getDisplayNameForColumnGroup: 0,\n    getColumnGroupState: 0,\n    setColumnGroupState: 0,\n    resetColumnGroupState: 0,\n    getLeftDisplayedColumnGroups: 0,\n    getCenterDisplayedColumnGroups: 0,\n    getRightDisplayedColumnGroups: 0,\n    getAllDisplayedColumnGroups: 0\n  }),\n  ...mod(\"ColumnMove\", {\n    moveColumnByIndex: 0,\n    moveColumns: 0\n  }),\n  ...mod(\"ColumnResize\", {\n    setColumnWidths: 0\n  }),\n  ...mod(\"ColumnHover\", {\n    isColumnHovered: 0\n  }),\n  ...mod(\"EditCore\", {\n    getCellEditorInstances: 0,\n    getEditingCells: 0,\n    stopEditing: 0,\n    startEditingCell: 0\n  }),\n  ...mod(\"UndoRedoEdit\", {\n    undoCellEditing: 0,\n    redoCellEditing: 0,\n    getCurrentUndoSize: 0,\n    getCurrentRedoSize: 0\n  }),\n  ...mod(\"FilterCore\", {\n    isAnyFilterPresent: 0,\n    onFilterChanged: 0\n  }),\n  ...mod(\"ColumnFilter\", {\n    isColumnFilterPresent: 0,\n    getColumnFilterInstance: 0,\n    destroyFilter: 0,\n    setFilterModel: 0,\n    getFilterModel: 0,\n    getColumnFilterModel: 0,\n    setColumnFilterModel: 0,\n    showColumnFilter: 0\n  }),\n  ...mod(\"QuickFilter\", {\n    isQuickFilterPresent: 0,\n    getQuickFilter: 0,\n    resetQuickFilter: 0\n  }),\n  ...mod(\"Find\", {\n    findGetActiveMatch: 0,\n    findGetTotalMatches: 0,\n    findGoTo: 0,\n    findNext: 0,\n    findPrevious: 0,\n    findGetNumMatches: 0,\n    findGetParts: 0,\n    findClearActive: 0,\n    findRefresh: 0\n  }),\n  ...mod(\"Pagination\", {\n    paginationIsLastPageFound: 0,\n    paginationGetPageSize: 0,\n    paginationGetCurrentPage: 0,\n    paginationGetTotalPages: 0,\n    paginationGetRowCount: 0,\n    paginationGoToNextPage: 0,\n    paginationGoToPreviousPage: 0,\n    paginationGoToFirstPage: 0,\n    paginationGoToLastPage: 0,\n    paginationGoToPage: 0\n  }),\n  ...mod(\"CsrmSsrmSharedApi\", {\n    expandAll: 0,\n    collapseAll: 0,\n    onRowHeightChanged: 0\n  }),\n  ...mod(\"SsrmInfiniteSharedApi\", {\n    setRowCount: 0,\n    getCacheBlockState: 0,\n    isLastRowIndexKnown: 0\n  }),\n  ...mod(\"ClientSideRowModelApi\", {\n    onGroupExpandedOrCollapsed: 0,\n    refreshClientSideRowModel: 0,\n    isRowDataEmpty: 0,\n    forEachLeafNode: 0,\n    forEachNodeAfterFilter: 0,\n    forEachNodeAfterFilterAndSort: 0,\n    resetRowHeights: 0,\n    applyTransaction: 0,\n    applyTransactionAsync: 0,\n    flushAsyncTransactions: 0,\n    getBestCostNodeSelection: 0\n  }),\n  ...mod(\"CsvExport\", {\n    getDataAsCsv: 0,\n    exportDataAsCsv: 0\n  }),\n  ...mod(\"InfiniteRowModel\", {\n    refreshInfiniteCache: 0,\n    purgeInfiniteCache: 0,\n    getInfiniteRowCount: 0\n  }),\n  ...mod(\"AdvancedFilter\", {\n    getAdvancedFilterModel: 0,\n    setAdvancedFilterModel: 0,\n    showAdvancedFilterBuilder: 0,\n    hideAdvancedFilterBuilder: 0\n  }),\n  ...mod(\"IntegratedCharts\", {\n    getChartModels: 0,\n    getChartRef: 0,\n    getChartImageDataURL: 0,\n    downloadChart: 0,\n    openChartToolPanel: 0,\n    closeChartToolPanel: 0,\n    createRangeChart: 0,\n    createPivotChart: 0,\n    createCrossFilterChart: 0,\n    updateChart: 0,\n    restoreChart: 0\n  }),\n  ...mod(\"Clipboard\", {\n    copyToClipboard: 0,\n    cutToClipboard: 0,\n    copySelectedRowsToClipboard: 0,\n    copySelectedRangeToClipboard: 0,\n    copySelectedRangeDown: 0,\n    pasteFromClipboard: 0\n  }),\n  ...mod(\"ExcelExport\", {\n    getDataAsExcel: 0,\n    exportDataAsExcel: 0,\n    getSheetDataForExcel: 0,\n    getMultipleSheetsAsExcel: 0,\n    exportMultipleSheetsAsExcel: 0\n  }),\n  ...mod(\"SharedMasterDetail\", {\n    addDetailGridInfo: 0,\n    removeDetailGridInfo: 0,\n    getDetailGridInfo: 0,\n    forEachDetailGridInfo: 0\n  }),\n  ...mod(\"ContextMenu\", {\n    showContextMenu: 0\n  }),\n  ...mod(\"ColumnMenu\", {\n    showColumnChooser: 0,\n    hideColumnChooser: 0\n  }),\n  ...mod(\"CellSelection\", {\n    getCellRanges: 0,\n    addCellRange: 0,\n    clearRangeSelection: 0,\n    clearCellSelection: 0\n  }),\n  ...mod(\"SharedRowGrouping\", {\n    setRowGroupColumns: 0,\n    removeRowGroupColumns: 0,\n    addRowGroupColumns: 0,\n    getRowGroupColumns: 0,\n    moveRowGroupColumn: 0\n  }),\n  ...mod(\"SharedAggregation\", {\n    addAggFuncs: 0,\n    clearAggFuncs: 0,\n    setColumnAggFunc: 0\n  }),\n  ...mod(\"SharedPivot\", {\n    isPivotMode: 0,\n    getPivotResultColumn: 0,\n    setValueColumns: 0,\n    getValueColumns: 0,\n    removeValueColumns: 0,\n    addValueColumns: 0,\n    setPivotColumns: 0,\n    removePivotColumns: 0,\n    addPivotColumns: 0,\n    getPivotColumns: 0,\n    setPivotResultColumns: 0,\n    getPivotResultColumns: 0\n  }),\n  ...mod(\"ServerSideRowModelApi\", {\n    getServerSideSelectionState: 0,\n    setServerSideSelectionState: 0,\n    applyServerSideTransaction: 0,\n    applyServerSideTransactionAsync: 0,\n    applyServerSideRowData: 0,\n    retryServerSideLoads: 0,\n    flushServerSideAsyncTransactions: 0,\n    refreshServerSide: 0,\n    getServerSideGroupLevelState: 0\n  }),\n  ...mod(\"SideBar\", {\n    isSideBarVisible: 0,\n    setSideBarVisible: 0,\n    setSideBarPosition: 0,\n    openToolPanel: 0,\n    closeToolPanel: 0,\n    getOpenedToolPanel: 0,\n    refreshToolPanel: 0,\n    isToolPanelShowing: 0,\n    getToolPanelInstance: 0,\n    getSideBar: 0\n  }),\n  ...mod(\"StatusBar\", {\n    getStatusPanel: 0\n  })\n};\n\n// packages/ag-grid-community/src/api/apiFunctionService.ts\nvar defaultFns = {\n  isDestroyed: () => true,\n  destroy() {\n  },\n  preConstruct() {\n  },\n  postConstruct() {\n  },\n  preWireBeans() {\n  },\n  wireBeans() {\n  }\n};\nvar dispatchEvent = (beans, event) => beans.eventSvc.dispatchEvent(event);\nvar GridApiClass = class {\n};\nReflect.defineProperty(GridApiClass, \"name\", { value: \"GridApi\" });\nvar ApiFunctionService = class extends BeanStub {\n  constructor() {\n    super();\n    this.beanName = \"apiFunctionSvc\";\n    this.api = new GridApiClass();\n    this.fns = {\n      ...defaultFns,\n      // dispatchEvent is used by frameworks, also used by aligned grids to identify a grid api instance\n      dispatchEvent\n    };\n    this.preDestroyLink = \"\";\n    const { api } = this;\n    for (const key of Object.keys(gridApiFunctionsMap)) {\n      api[key] = this.makeApi(key)[key];\n    }\n  }\n  postConstruct() {\n    this.preDestroyLink = this.beans.frameworkOverrides.getDocLink(\"grid-lifecycle/#grid-pre-destroyed\");\n  }\n  addFunction(functionName, func) {\n    const { fns, beans } = this;\n    if (fns !== defaultFns) {\n      fns[functionName] = beans?.validation?.validateApiFunction(functionName, func) ?? func;\n    }\n  }\n  makeApi(apiName) {\n    return {\n      [apiName]: (...args) => {\n        const {\n          beans,\n          fns: { [apiName]: fn }\n        } = this;\n        return fn ? fn(beans, ...args) : this.apiNotFound(apiName);\n      }\n    };\n  }\n  apiNotFound(fnName) {\n    const { beans, gos, preDestroyLink } = this;\n    if (!beans) {\n      _warn(26, { fnName, preDestroyLink });\n    } else {\n      const module = gridApiFunctionsMap[fnName];\n      if (gos.assertModuleRegistered(module, `api.${fnName}`)) {\n        _warn(27, { fnName, module });\n      }\n    }\n  }\n  destroy() {\n    super.destroy();\n    this.fns = defaultFns;\n    this.beans = null;\n  }\n};\n\n// packages/ag-grid-community/src/api/coreApi.ts\nfunction getGridId(beans) {\n  return beans.context.getGridId();\n}\nfunction destroy(beans) {\n  beans.gridDestroySvc.destroy();\n}\nfunction isDestroyed(beans) {\n  return beans.gridDestroySvc.destroyCalled;\n}\nfunction getGridOption(beans, key) {\n  return beans.gos.get(key);\n}\nfunction setGridOption(beans, key, value) {\n  updateGridOptions(beans, { [key]: value });\n}\nfunction updateGridOptions(beans, options) {\n  beans.gos.updateGridOptions({ options });\n}\nfunction isModuleRegistered(beans, moduleName) {\n  const withoutSuffix = moduleName.replace(/Module$/, \"\");\n  return beans.gos.isModuleRegistered(withoutSuffix);\n}\n\n// packages/ag-grid-community/src/rendering/dndSourceComp.ts\nvar DndSourceElement = { tag: \"div\", cls: \"ag-drag-handle ag-row-drag\", attrs: { draggable: \"true\" } };\nvar DndSourceComp = class extends Component {\n  constructor(rowNode, column, eCell) {\n    super(DndSourceElement);\n    this.rowNode = rowNode;\n    this.column = column;\n    this.eCell = eCell;\n  }\n  postConstruct() {\n    const eGui = this.getGui();\n    eGui.appendChild(_createIconNoSpan(\"rowDrag\", this.beans, null));\n    this.addGuiEventListener(\"mousedown\", (e) => {\n      e.stopPropagation();\n    });\n    this.addDragSource();\n    this.checkVisibility();\n  }\n  addDragSource() {\n    this.addGuiEventListener(\"dragstart\", this.onDragStart.bind(this));\n  }\n  onDragStart(dragEvent) {\n    const { rowNode, column, eCell, gos } = this;\n    const providedOnRowDrag = column.getColDef().dndSourceOnRowDrag;\n    const dataTransfer = dragEvent.dataTransfer;\n    dataTransfer.setDragImage(eCell, 0, 0);\n    if (providedOnRowDrag) {\n      const params = _addGridCommonParams(gos, {\n        rowNode,\n        dragEvent\n      });\n      providedOnRowDrag(params);\n    } else {\n      try {\n        const jsonData = JSON.stringify(rowNode.data);\n        dataTransfer.setData(\"application/json\", jsonData);\n        dataTransfer.setData(\"text/plain\", jsonData);\n      } catch (e) {\n      }\n    }\n  }\n  checkVisibility() {\n    const visible = this.column.isDndSource(this.rowNode);\n    this.setDisplayed(visible);\n  }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/dragApi.ts\nfunction addRowDropZone(beans, params) {\n  beans.rowDragSvc?.rowDragFeature?.addRowDropZone(params);\n}\nfunction removeRowDropZone(beans, params) {\n  const activeDropTarget = beans.dragAndDrop?.findExternalZone(params);\n  if (activeDropTarget) {\n    beans.dragAndDrop?.removeDropTarget(activeDropTarget);\n  }\n}\nfunction getRowDropZoneParams(beans, events) {\n  return beans.rowDragSvc?.rowDragFeature?.getRowDropZone(events);\n}\n\n// packages/ag-grid-community/src/dragAndDrop/horizontalResizeService.ts\nvar HorizontalResizeService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"horizontalResizeSvc\";\n  }\n  addResizeBar(params) {\n    const dragSource = {\n      dragStartPixels: params.dragStartPixels || 0,\n      eElement: params.eResizeBar,\n      onDragStart: this.onDragStart.bind(this, params),\n      onDragStop: this.onDragStop.bind(this, params),\n      onDragging: this.onDragging.bind(this, params),\n      onDragCancel: this.onDragStop.bind(this, params),\n      includeTouch: true,\n      stopPropagationForTouch: true\n    };\n    const { dragSvc } = this.beans;\n    dragSvc.addDragSource(dragSource);\n    const finishedWithResizeFunc = () => dragSvc.removeDragSource(dragSource);\n    return finishedWithResizeFunc;\n  }\n  onDragStart(params, mouseEvent) {\n    this.dragStartX = mouseEvent.clientX;\n    this.setResizeIcons();\n    const shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;\n    params.onResizeStart(shiftKey);\n  }\n  setResizeIcons() {\n    const ctrl = this.beans.ctrlsSvc.get(\"gridCtrl\");\n    ctrl.setResizeCursor(true);\n    ctrl.disableUserSelect(true);\n  }\n  onDragStop(params) {\n    params.onResizeEnd(this.resizeAmount);\n    this.resetIcons();\n  }\n  resetIcons() {\n    const ctrl = this.beans.ctrlsSvc.get(\"gridCtrl\");\n    ctrl.setResizeCursor(false);\n    ctrl.disableUserSelect(false);\n  }\n  onDragging(params, mouseEvent) {\n    this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n    params.onResizing(this.resizeAmount);\n  }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/rowDragComp.ts\nvar RowDragElement = {\n  tag: \"div\",\n  cls: \"ag-drag-handle ag-row-drag\",\n  attrs: { \"aria-hidden\": \"true\" }\n};\nvar RowDragComp = class extends Component {\n  constructor(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n    super();\n    this.cellValueFn = cellValueFn;\n    this.rowNode = rowNode;\n    this.column = column;\n    this.customGui = customGui;\n    this.dragStartPixels = dragStartPixels;\n    this.suppressVisibilityChange = suppressVisibilityChange;\n    this.dragSource = null;\n  }\n  isCustomGui() {\n    return this.customGui != null;\n  }\n  postConstruct() {\n    const { beans, rowNode, column, gos } = this;\n    if (!this.customGui) {\n      this.setTemplate(RowDragElement);\n      this.getGui().appendChild(_createIconNoSpan(\"rowDrag\", beans, null));\n      this.addDragSource();\n    } else {\n      this.setDragElement(this.customGui, this.dragStartPixels);\n    }\n    if (!this.suppressVisibilityChange) {\n      const strategy = gos.get(\"rowDragManaged\") ? new ManagedVisibilityStrategy(this, rowNode, column) : new NonManagedVisibilityStrategy(this, rowNode, column);\n      this.createManagedBean(strategy, this.beans.context);\n    }\n  }\n  setDragElement(dragElement, dragStartPixels) {\n    this.setTemplateFromElement(dragElement, void 0, void 0, true);\n    this.addDragSource(dragStartPixels);\n  }\n  getSelectedNodes() {\n    const rowNode = this.rowNode;\n    const isRowDragMultiRow = this.gos.get(\"rowDragMultiRow\");\n    if (!isRowDragMultiRow) {\n      return [rowNode];\n    }\n    const selection = this.beans.selectionSvc?.getSelectedNodes() ?? [];\n    return selection.indexOf(rowNode) !== -1 ? selection : [rowNode];\n  }\n  getDragItem() {\n    const { column, rowNode } = this;\n    return {\n      rowNode,\n      rowNodes: this.getSelectedNodes(),\n      columns: column ? [column] : void 0,\n      defaultTextValue: this.cellValueFn()\n    };\n  }\n  getRowDragText(column) {\n    if (column) {\n      const colDef = column.getColDef();\n      if (colDef.rowDragText) {\n        return colDef.rowDragText;\n      }\n    }\n    return this.gos.get(\"rowDragText\");\n  }\n  addDragSource(dragStartPixels = 4) {\n    if (this.dragSource) {\n      this.removeDragSource();\n    }\n    const eGui = this.getGui();\n    if (this.gos.get(\"enableCellTextSelection\")) {\n      this.removeMouseDownListener();\n      this.mouseDownListener = this.addManagedElementListeners(eGui, {\n        mousedown: (e) => {\n          e?.preventDefault();\n        }\n      })[0];\n    }\n    const translate = this.getLocaleTextFunc();\n    this.dragSource = {\n      type: 2 /* RowDrag */,\n      eElement: eGui,\n      dragItemName: () => {\n        const dragItem = this.getDragItem();\n        const dragItemCount = dragItem.rowNodes?.length || 1;\n        const rowDragText = this.getRowDragText(this.column);\n        if (rowDragText) {\n          return rowDragText(dragItem, dragItemCount);\n        }\n        return dragItemCount === 1 ? this.cellValueFn() : `${dragItemCount} ${translate(\"rowDragRows\", \"rows\")}`;\n      },\n      getDragItem: () => this.getDragItem(),\n      dragStartPixels,\n      dragSourceDomDataKey: this.gos.getDomDataKey()\n    };\n    this.beans.dragAndDrop.addDragSource(this.dragSource, true);\n  }\n  destroy() {\n    this.removeDragSource();\n    this.removeMouseDownListener();\n    super.destroy();\n  }\n  removeDragSource() {\n    if (!this.dragSource) {\n      return;\n    }\n    this.beans.dragAndDrop.removeDragSource(this.dragSource);\n    this.dragSource = null;\n  }\n  removeMouseDownListener() {\n    if (!this.mouseDownListener) {\n      return;\n    }\n    this.mouseDownListener();\n    this.mouseDownListener = void 0;\n  }\n};\nvar VisibilityStrategy = class extends BeanStub {\n  constructor(parent, rowNode, column) {\n    super();\n    this.parent = parent;\n    this.rowNode = rowNode;\n    this.column = column;\n  }\n  setDisplayedOrVisible(neverDisplayed) {\n    const displayedOptions = { skipAriaHidden: true };\n    if (neverDisplayed) {\n      this.parent.setDisplayed(false, displayedOptions);\n    } else {\n      let shown = true;\n      let isShownSometimes = false;\n      const { column, rowNode, parent } = this;\n      if (column) {\n        shown = column.isRowDrag(rowNode) || parent.isCustomGui();\n        isShownSometimes = typeof column.getColDef().rowDrag === \"function\";\n      }\n      if (isShownSometimes) {\n        parent.setDisplayed(true, displayedOptions);\n        parent.setVisible(shown, displayedOptions);\n      } else {\n        parent.setDisplayed(shown, displayedOptions);\n        parent.setVisible(true, displayedOptions);\n      }\n    }\n  }\n};\nvar NonManagedVisibilityStrategy = class extends VisibilityStrategy {\n  postConstruct() {\n    this.addManagedPropertyListener(\"suppressRowDrag\", this.onSuppressRowDrag.bind(this));\n    const listener = this.workOutVisibility.bind(this);\n    this.addManagedListeners(this.rowNode, {\n      dataChanged: listener,\n      cellChanged: listener\n    });\n    this.addManagedListeners(this.beans.eventSvc, { newColumnsLoaded: listener });\n    this.workOutVisibility();\n  }\n  onSuppressRowDrag() {\n    this.workOutVisibility();\n  }\n  workOutVisibility() {\n    const neverDisplayed = this.gos.get(\"suppressRowDrag\");\n    this.setDisplayedOrVisible(neverDisplayed);\n  }\n};\nvar ManagedVisibilityStrategy = class extends VisibilityStrategy {\n  postConstruct() {\n    const listener = this.workOutVisibility.bind(this);\n    this.addManagedListeners(this.beans.eventSvc, {\n      sortChanged: listener,\n      filterChanged: listener,\n      columnRowGroupChanged: listener,\n      newColumnsLoaded: listener\n    });\n    this.addManagedListeners(this.rowNode, {\n      dataChanged: listener,\n      cellChanged: listener\n    });\n    this.addManagedPropertyListener(\"suppressRowDrag\", this.onSuppressRowDrag.bind(this));\n    this.workOutVisibility();\n  }\n  onSuppressRowDrag() {\n    this.workOutVisibility();\n  }\n  workOutVisibility() {\n    const { rowDragSvc, dragAndDrop, gos } = this.beans;\n    const rowDragFeature = rowDragSvc.rowDragFeature;\n    const shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();\n    const suppressRowDrag = gos.get(\"suppressRowDrag\");\n    const hasExternalDropZones = dragAndDrop.hasExternalDropZones();\n    const neverDisplayed = shouldPreventRowMove && !hasExternalDropZones || suppressRowDrag;\n    this.setDisplayedOrVisible(neverDisplayed);\n  }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/rowDragService.ts\nvar RowDragService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowDragSvc\";\n  }\n  setupRowDrag(element, ctrl) {\n    const rowDragFeature = ctrl.createManagedBean(new RowDragFeature(element));\n    const dragAndDrop = this.beans.dragAndDrop;\n    dragAndDrop.addDropTarget(rowDragFeature);\n    ctrl.addDestroyFunc(() => dragAndDrop.removeDropTarget(rowDragFeature));\n    this.rowDragFeature = rowDragFeature;\n  }\n  createRowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n    return new RowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange);\n  }\n  createRowDragCompForRow(rowNode, element) {\n    if (_isCellSelectionEnabled(this.gos)) {\n      return void 0;\n    }\n    const translate = this.getLocaleTextFunc();\n    return this.createRowDragComp(\n      () => `1 ${translate(\"rowDragRow\", \"row\")}`,\n      rowNode,\n      void 0,\n      element,\n      void 0,\n      true\n    );\n  }\n  createRowDragCompForCell(rowNode, column, cellValueFn, element, dragStartPixels, suppressVisibilityChange) {\n    const gos = this.gos;\n    if (gos.get(\"rowDragManaged\")) {\n      if (!_isClientSideRowModel(gos) || gos.get(\"pagination\")) {\n        return void 0;\n      }\n    }\n    const rowDragComp = this.createRowDragComp(\n      cellValueFn,\n      rowNode,\n      column,\n      element,\n      dragStartPixels,\n      suppressVisibilityChange\n    );\n    return rowDragComp;\n  }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/dragModule.ts\nvar DragModule = {\n  moduleName: \"Drag\",\n  version: VERSION,\n  beans: [DragService]\n};\nvar DragAndDropModule = {\n  moduleName: \"DragAndDrop\",\n  version: VERSION,\n  dynamicBeans: {\n    dndSourceComp: DndSourceComp\n  },\n  icons: {\n    // drag handle used to pick up draggable rows\n    rowDrag: \"grip\"\n  }\n};\nvar SharedDragAndDropModule = {\n  moduleName: \"SharedDragAndDrop\",\n  version: VERSION,\n  beans: [DragAndDropService],\n  dependsOn: [DragModule],\n  userComponents: {\n    agDragAndDropImage: DragAndDropImageComponent2\n  },\n  icons: {\n    // shown on drag and drop image component icon while dragging column to the side of the grid to pin\n    columnMovePin: \"pin\",\n    // shown on drag and drop image component icon while dragging over part of the page that is not a drop zone\n    columnMoveHide: \"eye-slash\",\n    // shown on drag and drop image component icon while dragging columns to reorder\n    columnMoveMove: \"arrows\",\n    // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling\n    columnMoveLeft: \"left\",\n    // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling\n    columnMoveRight: \"right\",\n    // shown on drag and drop image component icon while dragging over Row Groups drop zone\n    columnMoveGroup: \"group\",\n    // shown on drag and drop image component icon while dragging over Values drop zone\n    columnMoveValue: \"aggregation\",\n    // shown on drag and drop image component icon while dragging over pivot drop zone\n    columnMovePivot: \"pivot\",\n    // shown on drag and drop image component icon while dragging over drop zone that doesn't support it, e.g.\n    // string column over aggregation drop zone\n    dropNotAllowed: \"not-allowed\",\n    // drag handle used to pick up draggable rows\n    rowDrag: \"grip\"\n  }\n};\nvar RowDragModule = {\n  moduleName: \"RowDrag\",\n  version: VERSION,\n  beans: [RowDragService],\n  apiFunctions: {\n    addRowDropZone,\n    removeRowDropZone,\n    getRowDropZoneParams\n  },\n  dependsOn: [SharedDragAndDropModule]\n};\nvar HorizontalResizeModule = {\n  moduleName: \"HorizontalResize\",\n  version: VERSION,\n  beans: [HorizontalResizeService],\n  dependsOn: [DragModule]\n};\n\n// packages/ag-grid-community/src/columnMove/column-moving.css-GENERATED.ts\nvar columnMovingCSS = (\n  /*css*/\n  `:where(.ag-ltr) :where(.ag-column-moving){.ag-cell,.ag-header-cell,.ag-spanned-cell-wrapper{transition:left .2s}.ag-header-group-cell{transition:left .2s,width .2s}}:where(.ag-rtl) :where(.ag-column-moving){.ag-cell,.ag-header-cell,.ag-spanned-cell-wrapper{transition:right .2s}.ag-header-group-cell{transition:right .2s,width .2s}}`\n);\n\n// packages/ag-grid-community/src/columnMove/columnAnimationService.ts\nvar ColumnAnimationService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colAnimation\";\n    this.executeNextFuncs = [];\n    this.executeLaterFuncs = [];\n    this.active = false;\n    // activeNext starts with active but it is reset earlier after the nextFuncs are cleared\n    // to prevent calls made to executeNextVMTurn from queuing functions after executeNextFuncs has already been flushed,\n    this.activeNext = false;\n    this.suppressAnimation = false;\n    this.animationThreadCount = 0;\n  }\n  postConstruct() {\n    this.beans.ctrlsSvc.whenReady(this, (p) => this.gridBodyCtrl = p.gridBodyCtrl);\n  }\n  isActive() {\n    return this.active && !this.suppressAnimation;\n  }\n  setSuppressAnimation(suppress) {\n    this.suppressAnimation = suppress;\n  }\n  start() {\n    if (this.active) {\n      return;\n    }\n    const { gos } = this;\n    if (gos.get(\"suppressColumnMoveAnimation\")) {\n      return;\n    }\n    if (gos.get(\"enableRtl\")) {\n      return;\n    }\n    this.ensureAnimationCssClassPresent();\n    this.active = true;\n    this.activeNext = true;\n  }\n  finish() {\n    if (!this.active) {\n      return;\n    }\n    this.flush(\n      () => this.activeNext = false,\n      () => this.active = false\n    );\n  }\n  executeNextVMTurn(func) {\n    if (this.activeNext) {\n      this.executeNextFuncs.push(func);\n    } else {\n      func();\n    }\n  }\n  executeLaterVMTurn(func) {\n    if (this.active) {\n      this.executeLaterFuncs.push(func);\n    } else {\n      func();\n    }\n  }\n  ensureAnimationCssClassPresent() {\n    this.animationThreadCount++;\n    const animationThreadCountCopy = this.animationThreadCount;\n    const { gridBodyCtrl } = this;\n    gridBodyCtrl.setColumnMovingCss(true);\n    this.executeLaterFuncs.push(() => {\n      if (this.animationThreadCount === animationThreadCountCopy) {\n        gridBodyCtrl.setColumnMovingCss(false);\n      }\n    });\n  }\n  flush(callbackNext, callbackLater) {\n    const { executeNextFuncs, executeLaterFuncs } = this;\n    if (executeNextFuncs.length === 0 && executeLaterFuncs.length === 0) {\n      callbackNext();\n      callbackLater();\n      return;\n    }\n    const runFuncs = (queue) => {\n      while (queue.length) {\n        const func = queue.pop();\n        if (func) {\n          func();\n        }\n      }\n    };\n    this.beans.frameworkOverrides.wrapIncoming(() => {\n      window.setTimeout(() => {\n        callbackNext();\n        runFuncs(executeNextFuncs);\n      }, 0);\n      window.setTimeout(() => {\n        callbackLater();\n        runFuncs(executeLaterFuncs);\n      }, 200);\n    });\n  }\n};\n\n// packages/ag-grid-community/src/columnMove/columnMoveApi.ts\nfunction moveColumnByIndex(beans, fromIndex, toIndex) {\n  beans.colMoves?.moveColumnByIndex(fromIndex, toIndex, \"api\");\n}\nfunction moveColumns(beans, columnsToMoveKeys, toIndex) {\n  beans.colMoves?.moveColumns(columnsToMoveKeys, toIndex, \"api\");\n}\n\n// packages/ag-grid-community/src/columnMove/columnDrag/bodyDropPivotTarget.ts\nvar BodyDropPivotTarget = class extends BeanStub {\n  constructor(pinned) {\n    super();\n    this.pinned = pinned;\n    this.columnsToAggregate = [];\n    this.columnsToGroup = [];\n    this.columnsToPivot = [];\n  }\n  /** Callback for when drag enters */\n  onDragEnter(draggingEvent) {\n    this.clearColumnsList();\n    if (this.gos.get(\"functionsReadOnly\")) {\n      return;\n    }\n    const dragColumns = draggingEvent.dragItem.columns;\n    if (!dragColumns) {\n      return;\n    }\n    dragColumns.forEach((column) => {\n      if (!column.isPrimary()) {\n        return;\n      }\n      if (column.isAnyFunctionActive()) {\n        return;\n      }\n      if (column.isAllowValue()) {\n        this.columnsToAggregate.push(column);\n      } else if (column.isAllowRowGroup()) {\n        this.columnsToGroup.push(column);\n      } else if (column.isAllowPivot()) {\n        this.columnsToPivot.push(column);\n      }\n    });\n  }\n  getIconName() {\n    const totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n    if (totalColumns > 0) {\n      return this.pinned ? \"pinned\" : \"move\";\n    }\n    return null;\n  }\n  /** Callback for when drag leaves */\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onDragLeave(draggingEvent) {\n    this.clearColumnsList();\n  }\n  clearColumnsList() {\n    this.columnsToAggregate.length = 0;\n    this.columnsToGroup.length = 0;\n    this.columnsToPivot.length = 0;\n  }\n  /** Callback for when dragging */\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onDragging(draggingEvent) {\n  }\n  /** Callback for when drag stops */\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onDragStop(draggingEvent) {\n    const { valueColsSvc, rowGroupColsSvc, pivotColsSvc } = this.beans;\n    if (this.columnsToAggregate.length > 0) {\n      valueColsSvc?.addColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n    }\n    if (this.columnsToGroup.length > 0) {\n      rowGroupColsSvc?.addColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n    }\n    if (this.columnsToPivot.length > 0) {\n      pivotColsSvc?.addColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n    }\n  }\n  onDragCancel() {\n    this.clearColumnsList();\n  }\n};\n\n// packages/ag-grid-community/src/columnMove/internalColumnMoveUtils.ts\nfunction sortColsLikeCols(colsList, cols) {\n  if (!cols || cols.length <= 1) {\n    return;\n  }\n  const notAllColsPresent = cols.filter((c) => colsList.indexOf(c) < 0).length > 0;\n  if (notAllColsPresent) {\n    return;\n  }\n  cols.sort((a, b) => {\n    const indexA = colsList.indexOf(a);\n    const indexB = colsList.indexOf(b);\n    return indexA - indexB;\n  });\n}\nfunction getBestColumnMoveIndexFromXPosition(params) {\n  const { isFromHeader, fromLeft, xPosition, fromEnter, fakeEvent, pinned, gos, colModel, colMoves, visibleCols } = params;\n  let { allMovingColumns } = params;\n  if (isFromHeader) {\n    const newCols = [];\n    allMovingColumns.forEach((col) => {\n      let movingGroup = null;\n      let parent = col.getParent();\n      while (parent != null && parent.getDisplayedLeafColumns().length === 1) {\n        movingGroup = parent;\n        parent = parent.getParent();\n      }\n      if (movingGroup != null) {\n        const isMarryChildren = !!movingGroup.getColGroupDef()?.marryChildren;\n        const columnsToMove = isMarryChildren ? (\n          // when marry children is true, we also have to move hidden\n          // columns within the group, so grab them from the `providedColumnGroup`\n          movingGroup.getProvidedColumnGroup().getLeafColumns()\n        ) : movingGroup.getLeafColumns();\n        columnsToMove.forEach((newCol) => {\n          if (!newCols.includes(newCol)) {\n            newCols.push(newCol);\n          }\n        });\n      } else if (!newCols.includes(col)) {\n        newCols.push(col);\n      }\n    });\n    allMovingColumns = newCols;\n  }\n  const allMovingColumnsOrdered = allMovingColumns.slice();\n  sortColsLikeCols(colModel.getCols(), allMovingColumnsOrdered);\n  const validMoves = calculateValidMoves({\n    movingCols: allMovingColumnsOrdered,\n    draggingRight: fromLeft,\n    xPosition,\n    pinned,\n    gos,\n    colModel,\n    visibleCols\n  });\n  const oldIndex = calculateOldIndex(allMovingColumnsOrdered, colModel);\n  if (validMoves.length === 0) {\n    return;\n  }\n  const firstValidMove = validMoves[0];\n  let constrainDirection = oldIndex !== null && !fromEnter;\n  if (isFromHeader) {\n    constrainDirection = oldIndex !== null;\n  }\n  if (constrainDirection && !fakeEvent) {\n    if (!fromLeft && firstValidMove >= oldIndex) {\n      return;\n    }\n    if (fromLeft && firstValidMove <= oldIndex) {\n      return;\n    }\n  }\n  const displayedCols = visibleCols.allCols;\n  const potentialMoves = [];\n  let targetOrder = null;\n  for (let i = 0; i < validMoves.length; i++) {\n    const move = validMoves[i];\n    const order = colMoves.getProposedColumnOrder(allMovingColumnsOrdered, move);\n    if (!colMoves.doesOrderPassRules(order)) {\n      continue;\n    }\n    const displayedOrder = order.filter((col) => displayedCols.includes(col));\n    if (targetOrder === null) {\n      targetOrder = displayedOrder;\n    } else if (!_areEqual(displayedOrder, targetOrder)) {\n      break;\n    }\n    const fragCount = groupFragCount(order);\n    potentialMoves.push({ move, fragCount });\n  }\n  if (potentialMoves.length === 0) {\n    return;\n  }\n  potentialMoves.sort((a, b) => a.fragCount - b.fragCount);\n  const toIndex = potentialMoves[0].move;\n  if (toIndex > colModel.getCols().length - allMovingColumns.length) {\n    return;\n  }\n  return { columns: allMovingColumns, toIndex };\n}\nfunction attemptMoveColumns(params) {\n  const { columns, toIndex } = getBestColumnMoveIndexFromXPosition(params) || {};\n  const { finished, colMoves } = params;\n  if (!columns || toIndex == null) {\n    return null;\n  }\n  colMoves.moveColumns(columns, toIndex, \"uiColumnMoved\", finished);\n  return finished ? null : { columns, toIndex };\n}\nfunction calculateOldIndex(movingCols, colModel) {\n  const gridCols = colModel.getCols();\n  const indexes = movingCols.map((col) => gridCols.indexOf(col)).sort((a, b) => a - b);\n  const firstIndex = indexes[0];\n  const lastIndex = _last(indexes);\n  const spread = lastIndex - firstIndex;\n  const gapsExist = spread !== indexes.length - 1;\n  return gapsExist ? null : firstIndex;\n}\nfunction groupFragCount(columns) {\n  function parents(col) {\n    const result = [];\n    let parent = col.getOriginalParent();\n    while (parent != null) {\n      result.push(parent);\n      parent = parent.getOriginalParent();\n    }\n    return result;\n  }\n  let count = 0;\n  for (let i = 0; i < columns.length - 1; i++) {\n    let a = parents(columns[i]);\n    let b = parents(columns[i + 1]);\n    [a, b] = a.length > b.length ? [a, b] : [b, a];\n    a.forEach((parent) => {\n      if (b.indexOf(parent) === -1) {\n        count++;\n      }\n    });\n  }\n  return count;\n}\nfunction getDisplayedColumns(visibleCols, type) {\n  switch (type) {\n    case \"left\":\n      return visibleCols.leftCols;\n    case \"right\":\n      return visibleCols.rightCols;\n    default:\n      return visibleCols.centerCols;\n  }\n}\nfunction calculateValidMoves(params) {\n  const { movingCols, draggingRight, xPosition, pinned, gos, colModel, visibleCols } = params;\n  const isMoveBlocked = gos.get(\"suppressMovableColumns\") || movingCols.some((col) => col.getColDef().suppressMovable);\n  if (isMoveBlocked) {\n    return [];\n  }\n  const allDisplayedCols = getDisplayedColumns(visibleCols, pinned);\n  const allGridCols = colModel.getCols();\n  const movingDisplayedCols = allDisplayedCols.filter((col) => movingCols.includes(col));\n  const otherDisplayedCols = allDisplayedCols.filter((col) => !movingCols.includes(col));\n  const otherGridCols = allGridCols.filter((col) => !movingCols.includes(col));\n  let displayIndex = 0;\n  let availableWidth = xPosition;\n  if (draggingRight) {\n    let widthOfMovingDisplayedCols = 0;\n    movingDisplayedCols.forEach((col) => widthOfMovingDisplayedCols += col.getActualWidth());\n    availableWidth -= widthOfMovingDisplayedCols;\n  }\n  if (availableWidth > 0) {\n    for (let i = 0; i < otherDisplayedCols.length; i++) {\n      const col = otherDisplayedCols[i];\n      availableWidth -= col.getActualWidth();\n      if (availableWidth < 0) {\n        break;\n      }\n      displayIndex++;\n    }\n    if (draggingRight) {\n      displayIndex++;\n    }\n  }\n  let firstValidMove;\n  if (displayIndex > 0) {\n    const leftColumn = otherDisplayedCols[displayIndex - 1];\n    firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n  } else {\n    firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n    if (firstValidMove === -1) {\n      firstValidMove = 0;\n    }\n  }\n  const validMoves = [firstValidMove];\n  const numberComparator = (a, b) => a - b;\n  if (draggingRight) {\n    let pointer = firstValidMove + 1;\n    const lastIndex = allGridCols.length - 1;\n    while (pointer <= lastIndex) {\n      validMoves.push(pointer);\n      pointer++;\n    }\n    validMoves.sort(numberComparator);\n  } else {\n    let pointer = firstValidMove;\n    const lastIndex = allGridCols.length - 1;\n    let displacedCol = allGridCols[pointer];\n    while (pointer <= lastIndex && allDisplayedCols.indexOf(displacedCol) < 0) {\n      pointer++;\n      validMoves.push(pointer);\n      displacedCol = allGridCols[pointer];\n    }\n    pointer = firstValidMove - 1;\n    const firstDisplayIndex = 0;\n    while (pointer >= firstDisplayIndex) {\n      validMoves.push(pointer);\n      pointer--;\n    }\n    validMoves.sort(numberComparator).reverse();\n  }\n  return validMoves;\n}\nfunction normaliseX(params) {\n  const { pinned, fromKeyboard, gos, ctrlsSvc, useHeaderRow, skipScrollPadding } = params;\n  let eViewport = ctrlsSvc.getHeaderRowContainerCtrl(pinned)?.eViewport;\n  let { x } = params;\n  if (!eViewport) {\n    return 0;\n  }\n  if (fromKeyboard) {\n    x -= eViewport.getBoundingClientRect().left;\n  }\n  if (gos.get(\"enableRtl\")) {\n    if (useHeaderRow) {\n      eViewport = eViewport.querySelector(\".ag-header-row\");\n    }\n    x = eViewport.clientWidth - x;\n  }\n  if (pinned == null && !skipScrollPadding) {\n    x += ctrlsSvc.get(\"center\").getCenterViewportScrollLeft();\n  }\n  return x;\n}\nfunction setColumnsMoving(columns, isMoving) {\n  for (const column of columns) {\n    column.moving = isMoving;\n    column.dispatchColEvent(\"movingChanged\", \"uiColumnMoved\");\n  }\n}\n\n// packages/ag-grid-community/src/columnMove/columnDrag/moveColumnFeature.ts\nvar MOVE_FAIL_THRESHOLD = 7;\nvar SCROLL_MOVE_WIDTH = 100;\nvar SCROLL_GAP_NEEDED_BEFORE_MOVE = SCROLL_MOVE_WIDTH / 2;\nvar SCROLL_ACCELERATION_RATE = 5;\nvar SCROLL_TIME_INTERVAL = 100;\nvar MoveColumnFeature = class extends BeanStub {\n  constructor(pinned) {\n    super();\n    this.pinned = pinned;\n    this.needToMoveLeft = false;\n    this.needToMoveRight = false;\n    this.lastMovedInfo = null;\n    this.isCenterContainer = !_exists(pinned);\n  }\n  postConstruct() {\n    this.beans.ctrlsSvc.whenReady(this, (p) => {\n      this.gridBodyCon = p.gridBodyCtrl;\n    });\n  }\n  getIconName() {\n    const { pinned, lastDraggingEvent } = this;\n    const { dragItem } = lastDraggingEvent || {};\n    const columns = dragItem?.columns ?? [];\n    for (const col of columns) {\n      const colPinned = col.getPinned();\n      if (col.getColDef().lockPinned) {\n        if (colPinned == pinned) {\n          return \"move\";\n        }\n        continue;\n      }\n      const initialPinnedState = dragItem?.containerType;\n      if (initialPinnedState === pinned || !pinned) {\n        return \"move\";\n      }\n      if (pinned && (!colPinned || initialPinnedState !== pinned)) {\n        return \"pinned\";\n      }\n    }\n    return \"notAllowed\";\n  }\n  onDragEnter(draggingEvent) {\n    const dragItem = draggingEvent.dragItem;\n    const columns = dragItem.columns;\n    const dragCameFromToolPanel = draggingEvent.dragSource.type === 0 /* ToolPanel */;\n    if (dragCameFromToolPanel) {\n      this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n    } else {\n      const visibleState = dragItem.visibleState;\n      const visibleColumns = (columns || []).filter((column) => visibleState[column.getId()]);\n      this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n    }\n    if (!this.gos.get(\"suppressMoveWhenColumnDragging\")) {\n      this.attemptToPinColumns(columns, this.pinned);\n    }\n    this.onDragging(draggingEvent, true, true);\n  }\n  onDragging(draggingEvent = this.lastDraggingEvent, fromEnter = false, fakeEvent = false, finished = false) {\n    const { gos, ctrlsSvc } = this.beans;\n    const isSuppressMoveWhenDragging = gos.get(\"suppressMoveWhenColumnDragging\");\n    if (finished && !isSuppressMoveWhenDragging) {\n      this.finishColumnMoving();\n      return;\n    }\n    this.lastDraggingEvent = draggingEvent;\n    if (!draggingEvent || !finished && _missing(draggingEvent.hDirection)) {\n      return;\n    }\n    const mouseX = normaliseX({\n      x: draggingEvent.x,\n      pinned: this.pinned,\n      gos,\n      ctrlsSvc\n    });\n    if (!fromEnter) {\n      this.checkCenterForScrolling(mouseX);\n    }\n    if (isSuppressMoveWhenDragging) {\n      this.handleColumnDragWhileSuppressingMovement(draggingEvent, fromEnter, fakeEvent, mouseX, finished);\n    } else {\n      this.handleColumnDragWhileAllowingMovement(draggingEvent, fromEnter, fakeEvent, mouseX, finished);\n    }\n  }\n  onDragLeave() {\n    this.ensureIntervalCleared();\n    this.clearHighlighted();\n    this.updateDragItemContainerType();\n    this.lastMovedInfo = null;\n  }\n  onDragStop() {\n    this.onDragging(this.lastDraggingEvent, false, true, true);\n    this.ensureIntervalCleared();\n    this.lastMovedInfo = null;\n  }\n  onDragCancel() {\n    this.clearHighlighted();\n    this.ensureIntervalCleared();\n    this.lastMovedInfo = null;\n  }\n  setColumnsVisible(columns, visible, source) {\n    if (!columns) {\n      return;\n    }\n    const allowedCols = columns.filter((c) => !c.getColDef().lockVisible);\n    this.beans.colModel.setColsVisible(allowedCols, visible, source);\n  }\n  finishColumnMoving() {\n    this.clearHighlighted();\n    const lastMovedInfo = this.lastMovedInfo;\n    if (!lastMovedInfo) {\n      return;\n    }\n    const { columns, toIndex } = lastMovedInfo;\n    this.beans.colMoves.moveColumns(columns, toIndex, \"uiColumnMoved\", true);\n  }\n  updateDragItemContainerType() {\n    const { lastDraggingEvent } = this;\n    if (this.gos.get(\"suppressMoveWhenColumnDragging\") || !lastDraggingEvent) {\n      return;\n    }\n    const dragItem = lastDraggingEvent.dragItem;\n    if (!dragItem) {\n      return;\n    }\n    dragItem.containerType = this.pinned;\n  }\n  handleColumnDragWhileSuppressingMovement(draggingEvent, fromEnter, fakeEvent, mouseX, finished) {\n    const allMovingColumns = this.getAllMovingColumns(draggingEvent, true);\n    if (finished) {\n      const isAttemptingToPin = this.isAttemptingToPin(allMovingColumns);\n      if (isAttemptingToPin) {\n        this.attemptToPinColumns(allMovingColumns, void 0, true);\n      }\n      const { fromLeft, xPosition } = this.getNormalisedXPositionInfo(allMovingColumns, isAttemptingToPin) || {};\n      if (fromLeft == null || xPosition == null) {\n        this.finishColumnMoving();\n        return;\n      }\n      this.moveColumnsAfterHighlight({\n        allMovingColumns,\n        xPosition,\n        fromEnter,\n        fakeEvent,\n        fromLeft\n      });\n    } else {\n      if (!this.beans.dragAndDrop.isDropZoneWithinThisGrid(draggingEvent)) {\n        return;\n      }\n      this.highlightHoveredColumn(allMovingColumns, mouseX);\n    }\n  }\n  handleColumnDragWhileAllowingMovement(draggingEvent, fromEnter, fakeEvent, mouseX, finished) {\n    const allMovingColumns = this.getAllMovingColumns(draggingEvent);\n    const fromLeft = this.normaliseDirection(draggingEvent.hDirection) === \"right\";\n    const isFromHeader = draggingEvent.dragSource.type === 1 /* HeaderCell */;\n    const params = this.getMoveColumnParams({\n      allMovingColumns,\n      isFromHeader,\n      xPosition: mouseX,\n      fromLeft,\n      fromEnter,\n      fakeEvent\n    });\n    const lastMovedInfo = attemptMoveColumns({ ...params, finished });\n    if (lastMovedInfo) {\n      this.lastMovedInfo = lastMovedInfo;\n    }\n  }\n  getAllMovingColumns(draggingEvent, useSplit = false) {\n    const dragItem = draggingEvent.dragSource.getDragItem();\n    let columns = null;\n    if (useSplit) {\n      columns = dragItem.columnsInSplit;\n      if (!columns) {\n        columns = dragItem.columns;\n      }\n    } else {\n      columns = dragItem.columns;\n    }\n    const conditionCallback = (col) => col.getColDef().lockPinned ? col.getPinned() == this.pinned : true;\n    if (!columns) {\n      return [];\n    }\n    return columns.filter(conditionCallback);\n  }\n  getMoveColumnParams(params) {\n    const { allMovingColumns, isFromHeader, xPosition, fromLeft, fromEnter, fakeEvent } = params;\n    const { gos, colModel, colMoves, visibleCols } = this.beans;\n    return {\n      allMovingColumns,\n      isFromHeader,\n      fromLeft,\n      xPosition,\n      pinned: this.pinned,\n      fromEnter,\n      fakeEvent,\n      gos,\n      colModel,\n      colMoves,\n      visibleCols\n    };\n  }\n  highlightHoveredColumn(movingColumns, mouseX) {\n    const { gos, colModel } = this.beans;\n    const isRtl = gos.get(\"enableRtl\");\n    const consideredColumns = colModel.getCols().filter((col) => col.isVisible() && col.getPinned() === this.pinned);\n    let start = null;\n    let width = null;\n    let targetColumn = null;\n    for (const col of consideredColumns) {\n      width = col.getActualWidth();\n      start = this.getNormalisedColumnLeft(col, 0, isRtl);\n      if (start != null) {\n        const end = start + width;\n        if (start <= mouseX && end >= mouseX) {\n          targetColumn = col;\n          break;\n        }\n      }\n      start = null;\n      width = null;\n    }\n    if (!targetColumn) {\n      for (let i = consideredColumns.length - 1; i >= 0; i--) {\n        const currentColumn = consideredColumns[i];\n        const parent = consideredColumns[i].getParent();\n        if (!parent) {\n          targetColumn = currentColumn;\n          break;\n        }\n        const leafDisplayedCols = parent?.getDisplayedLeafColumns();\n        if (leafDisplayedCols.length) {\n          targetColumn = _last(leafDisplayedCols);\n          break;\n        }\n      }\n      if (!targetColumn) {\n        return;\n      }\n      start = this.getNormalisedColumnLeft(targetColumn, 0, isRtl);\n      width = targetColumn.getActualWidth();\n    } else if (movingColumns.indexOf(targetColumn) !== -1) {\n      targetColumn = null;\n    }\n    if (this.lastHighlightedColumn?.column !== targetColumn) {\n      this.clearHighlighted();\n    }\n    if (targetColumn == null || start == null || width == null) {\n      return;\n    }\n    let position;\n    if (mouseX - start < width / 2 !== isRtl) {\n      position = 0 /* Before */;\n    } else {\n      position = 1 /* After */;\n    }\n    setColumnHighlighted(targetColumn, position);\n    this.lastHighlightedColumn = { column: targetColumn, position };\n  }\n  getNormalisedXPositionInfo(allMovingColumns, isAttemptingToPin) {\n    const { gos, visibleCols } = this.beans;\n    const isRtl = gos.get(\"enableRtl\");\n    const { firstMovingCol, column, position } = this.getColumnMoveAndTargetInfo(\n      allMovingColumns,\n      isAttemptingToPin,\n      isRtl\n    );\n    if (!firstMovingCol || !column || position == null) {\n      return;\n    }\n    const visibleColumns = visibleCols.allCols;\n    const movingColIndex = visibleColumns.indexOf(firstMovingCol);\n    const targetIndex = visibleColumns.indexOf(column);\n    const isBefore = position === 0 /* Before */ !== isRtl;\n    const fromLeft = movingColIndex < targetIndex || movingColIndex === targetIndex && !isBefore;\n    let diff = 0;\n    if (isBefore) {\n      if (fromLeft) {\n        diff -= 1;\n      }\n    } else {\n      if (!fromLeft) {\n        diff += 1;\n      }\n    }\n    if (targetIndex + diff === movingColIndex) {\n      return;\n    }\n    const targetColumn = visibleColumns[targetIndex + diff];\n    if (!targetColumn) {\n      return;\n    }\n    const xPosition = this.getNormalisedColumnLeft(targetColumn, 20, isRtl);\n    return { fromLeft, xPosition };\n  }\n  getColumnMoveAndTargetInfo(allMovingColumns, isAttemptingToPin, isRtl) {\n    const lastHighlightedColumn = this.lastHighlightedColumn || {};\n    const { firstMovingCol, lastMovingCol } = findFirstAndLastMovingColumns(allMovingColumns);\n    if (!firstMovingCol || !lastMovingCol || lastHighlightedColumn.column || !isAttemptingToPin) {\n      return {\n        firstMovingCol,\n        ...lastHighlightedColumn\n      };\n    }\n    const pinned = this.getPinDirection();\n    const isLeft = pinned === \"left\";\n    return {\n      firstMovingCol,\n      position: isLeft ? 1 /* After */ : 0 /* Before */,\n      column: isLeft !== isRtl ? firstMovingCol : lastMovingCol\n    };\n  }\n  normaliseDirection(hDirection) {\n    if (this.gos.get(\"enableRtl\")) {\n      switch (hDirection) {\n        case \"left\":\n          return \"right\";\n        case \"right\":\n          return \"left\";\n      }\n    }\n    return hDirection;\n  }\n  getNormalisedColumnLeft(col, padding, isRtl) {\n    const { gos, ctrlsSvc } = this.beans;\n    const left = col.getLeft();\n    if (left == null) {\n      return null;\n    }\n    const width = col.getActualWidth();\n    return normaliseX({\n      x: isRtl ? left + width - padding : left + padding,\n      pinned: col.getPinned(),\n      useHeaderRow: isRtl,\n      skipScrollPadding: true,\n      gos,\n      ctrlsSvc\n    });\n  }\n  isAttemptingToPin(columns) {\n    const isMovingHorizontally = this.needToMoveLeft || this.needToMoveRight;\n    const isFailedMoreThanThreshold = this.failedMoveAttempts > MOVE_FAIL_THRESHOLD;\n    return isMovingHorizontally && isFailedMoreThanThreshold || columns.some((col) => col.getPinned() !== this.pinned);\n  }\n  moveColumnsAfterHighlight(params) {\n    const { allMovingColumns, xPosition, fromEnter, fakeEvent, fromLeft } = params;\n    const columnMoveParams = this.getMoveColumnParams({\n      allMovingColumns,\n      isFromHeader: true,\n      xPosition,\n      fromLeft,\n      fromEnter,\n      fakeEvent\n    });\n    const { columns, toIndex } = getBestColumnMoveIndexFromXPosition(columnMoveParams) || {};\n    if (columns && toIndex != null) {\n      this.lastMovedInfo = {\n        columns,\n        toIndex\n      };\n    }\n    this.finishColumnMoving();\n  }\n  clearHighlighted() {\n    const { lastHighlightedColumn } = this;\n    if (!lastHighlightedColumn) {\n      return;\n    }\n    setColumnHighlighted(lastHighlightedColumn.column, null);\n    this.lastHighlightedColumn = null;\n  }\n  checkCenterForScrolling(xAdjustedForScroll) {\n    if (!this.isCenterContainer) {\n      return;\n    }\n    const centerCtrl = this.beans.ctrlsSvc.get(\"center\");\n    const firstVisiblePixel = centerCtrl.getCenterViewportScrollLeft();\n    const lastVisiblePixel = firstVisiblePixel + centerCtrl.getCenterWidth();\n    let needToMoveRight;\n    let needToMoveLeft;\n    if (this.gos.get(\"enableRtl\")) {\n      needToMoveRight = xAdjustedForScroll < firstVisiblePixel + SCROLL_GAP_NEEDED_BEFORE_MOVE;\n      needToMoveLeft = xAdjustedForScroll > lastVisiblePixel - SCROLL_GAP_NEEDED_BEFORE_MOVE;\n    } else {\n      needToMoveLeft = xAdjustedForScroll < firstVisiblePixel + SCROLL_GAP_NEEDED_BEFORE_MOVE;\n      needToMoveRight = xAdjustedForScroll > lastVisiblePixel - SCROLL_GAP_NEEDED_BEFORE_MOVE;\n    }\n    this.needToMoveRight = needToMoveRight;\n    this.needToMoveLeft = needToMoveLeft;\n    if (needToMoveLeft || needToMoveRight) {\n      this.ensureIntervalStarted();\n    } else {\n      this.ensureIntervalCleared();\n    }\n  }\n  ensureIntervalStarted() {\n    if (this.movingIntervalId) {\n      return;\n    }\n    this.intervalCount = 0;\n    this.failedMoveAttempts = 0;\n    this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), SCROLL_TIME_INTERVAL);\n    this.beans.dragAndDrop.getDragAndDropImageComponent()?.setIcon(this.needToMoveLeft ? \"left\" : \"right\", true);\n  }\n  ensureIntervalCleared() {\n    if (!this.movingIntervalId) {\n      return;\n    }\n    window.clearInterval(this.movingIntervalId);\n    this.movingIntervalId = null;\n    this.failedMoveAttempts = 0;\n    this.beans.dragAndDrop.getDragAndDropImageComponent()?.setIcon(this.getIconName(), false);\n  }\n  moveInterval() {\n    let pixelsToMove;\n    this.intervalCount++;\n    pixelsToMove = 10 + this.intervalCount * SCROLL_ACCELERATION_RATE;\n    if (pixelsToMove > SCROLL_MOVE_WIDTH) {\n      pixelsToMove = SCROLL_MOVE_WIDTH;\n    }\n    let pixelsMoved = null;\n    const scrollFeature = this.gridBodyCon.scrollFeature;\n    if (this.needToMoveLeft) {\n      pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);\n    } else if (this.needToMoveRight) {\n      pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);\n    }\n    if (pixelsMoved !== 0) {\n      this.onDragging(this.lastDraggingEvent);\n      this.failedMoveAttempts = 0;\n    } else {\n      this.failedMoveAttempts++;\n      const { pinnedCols, dragAndDrop, gos } = this.beans;\n      if (this.failedMoveAttempts <= MOVE_FAIL_THRESHOLD + 1 || !pinnedCols) {\n        return;\n      }\n      dragAndDrop.getDragAndDropImageComponent()?.setIcon(\"pinned\", false);\n      if (!gos.get(\"suppressMoveWhenColumnDragging\")) {\n        const columns = this.lastDraggingEvent?.dragItem.columns;\n        this.attemptToPinColumns(columns, void 0, true);\n      }\n    }\n  }\n  getPinDirection() {\n    if (this.needToMoveLeft || this.pinned === \"left\") {\n      return \"left\";\n    }\n    if (this.needToMoveRight || this.pinned === \"right\") {\n      return \"right\";\n    }\n  }\n  attemptToPinColumns(columns, pinned, fromMoving = false) {\n    const allowedCols = (columns || []).filter((c) => !c.getColDef().lockPinned);\n    if (!allowedCols.length) {\n      return 0;\n    }\n    if (fromMoving) {\n      pinned = this.getPinDirection();\n    }\n    const { pinnedCols, dragAndDrop } = this.beans;\n    pinnedCols?.setColsPinned(allowedCols, pinned, \"uiColumnDragged\");\n    if (fromMoving) {\n      dragAndDrop.nudge();\n    }\n    return allowedCols.length;\n  }\n  destroy() {\n    super.destroy();\n    this.lastDraggingEvent = null;\n    this.clearHighlighted();\n    this.lastMovedInfo = null;\n  }\n};\nfunction setColumnHighlighted(column, highlighted) {\n  if (column.highlighted === highlighted) {\n    return;\n  }\n  column.highlighted = highlighted;\n  column.dispatchColEvent(\"headerHighlightChanged\", \"uiColumnMoved\");\n}\nfunction findFirstAndLastMovingColumns(allMovingColumns) {\n  const moveLen = allMovingColumns.length;\n  let firstMovingCol;\n  let lastMovingCol;\n  for (let i = 0; i < moveLen; i++) {\n    if (!firstMovingCol) {\n      const leftCol = allMovingColumns[i];\n      if (leftCol.getLeft() != null) {\n        firstMovingCol = leftCol;\n      }\n    }\n    if (!lastMovingCol) {\n      const rightCol = allMovingColumns[moveLen - 1 - i];\n      if (rightCol.getLeft() != null) {\n        lastMovingCol = rightCol;\n      }\n    }\n    if (firstMovingCol && lastMovingCol) {\n      break;\n    }\n  }\n  return { firstMovingCol, lastMovingCol };\n}\n\n// packages/ag-grid-community/src/columnMove/columnDrag/bodyDropTarget.ts\nvar BodyDropTarget = class extends BeanStub {\n  constructor(pinned, eContainer) {\n    super();\n    this.pinned = pinned;\n    this.eContainer = eContainer;\n  }\n  postConstruct() {\n    const { ctrlsSvc, dragAndDrop } = this.beans;\n    const pinned = this.pinned;\n    ctrlsSvc.whenReady(this, (p) => {\n      let eSecondaryContainers;\n      const eBodyViewport = p.gridBodyCtrl.eBodyViewport;\n      switch (pinned) {\n        case \"left\":\n          eSecondaryContainers = [\n            [eBodyViewport, p.left.eContainer],\n            [p.bottomLeft.eContainer],\n            [p.topLeft.eContainer]\n          ];\n          break;\n        case \"right\":\n          eSecondaryContainers = [\n            [eBodyViewport, p.right.eContainer],\n            [p.bottomRight.eContainer],\n            [p.topRight.eContainer]\n          ];\n          break;\n        default:\n          eSecondaryContainers = [\n            [eBodyViewport, p.center.eViewport],\n            [p.bottomCenter.eViewport],\n            [p.topCenter.eViewport]\n          ];\n          break;\n      }\n      this.eSecondaryContainers = eSecondaryContainers;\n    });\n    this.moveColumnFeature = this.createManagedBean(new MoveColumnFeature(pinned));\n    this.bodyDropPivotTarget = this.createManagedBean(new BodyDropPivotTarget(pinned));\n    dragAndDrop.addDropTarget(this);\n    this.addDestroyFunc(() => dragAndDrop.removeDropTarget(this));\n  }\n  isInterestedIn(type) {\n    return type === 1 /* HeaderCell */ || type === 0 /* ToolPanel */ && this.gos.get(\"allowDragFromColumnsToolPanel\");\n  }\n  getSecondaryContainers() {\n    return this.eSecondaryContainers;\n  }\n  getContainer() {\n    return this.eContainer;\n  }\n  getIconName() {\n    return this.currentDropListener.getIconName();\n  }\n  // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n  // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n  // dropped into the grid's body.\n  isDropColumnInPivotMode(draggingEvent) {\n    return this.beans.colModel.isPivotMode() && draggingEvent.dragSource.type === 0 /* ToolPanel */;\n  }\n  onDragEnter(draggingEvent) {\n    this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;\n    this.currentDropListener.onDragEnter(draggingEvent);\n  }\n  onDragLeave(params) {\n    this.currentDropListener.onDragLeave(params);\n  }\n  onDragging(params) {\n    this.currentDropListener.onDragging(params);\n  }\n  onDragStop(params) {\n    this.currentDropListener.onDragStop(params);\n  }\n  onDragCancel() {\n    this.currentDropListener.onDragCancel();\n  }\n};\n\n// packages/ag-grid-community/src/columnMove/columnMoveService.ts\nvar ColumnMoveService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colMoves\";\n  }\n  moveColumnByIndex(fromIndex, toIndex, source) {\n    const gridColumns = this.beans.colModel.getCols();\n    if (!gridColumns) {\n      return;\n    }\n    const column = gridColumns[fromIndex];\n    this.moveColumns([column], toIndex, source);\n  }\n  moveColumns(columnsToMoveKeys, toIndex, source, finished = true) {\n    const { colModel, colAnimation, visibleCols, eventSvc } = this.beans;\n    const gridColumns = colModel.getCols();\n    if (!gridColumns) {\n      return;\n    }\n    if (toIndex > gridColumns.length - columnsToMoveKeys.length) {\n      _warn(30, { toIndex });\n      return;\n    }\n    colAnimation?.start();\n    const movedColumns = colModel.getColsForKeys(columnsToMoveKeys);\n    if (this.doesMovePassRules(movedColumns, toIndex)) {\n      _moveInArray(colModel.getCols(), movedColumns, toIndex);\n      visibleCols.refresh(source);\n      eventSvc.dispatchEvent({\n        type: \"columnMoved\",\n        columns: movedColumns,\n        column: movedColumns.length === 1 ? movedColumns[0] : null,\n        toIndex,\n        finished,\n        source\n      });\n    }\n    colAnimation?.finish();\n  }\n  doesMovePassRules(columnsToMove, toIndex) {\n    const proposedColumnOrder = this.getProposedColumnOrder(columnsToMove, toIndex);\n    return this.doesOrderPassRules(proposedColumnOrder);\n  }\n  doesOrderPassRules(gridOrder) {\n    const { colModel, gos } = this.beans;\n    if (!doesMovePassMarryChildren(gridOrder, colModel.getColTree())) {\n      return false;\n    }\n    const doesMovePassLockedPositions = (proposedColumnOrder) => {\n      const lockPositionToPlacement = (position) => {\n        if (!position) {\n          return 0 /* NONE */;\n        }\n        return position === \"left\" || position === true ? -1 /* LEFT */ : 1 /* RIGHT */;\n      };\n      const isRtl = gos.get(\"enableRtl\");\n      let lastPlacement = isRtl ? 1 /* RIGHT */ : -1 /* LEFT */;\n      let rulePassed = true;\n      proposedColumnOrder.forEach((col) => {\n        const placement = lockPositionToPlacement(col.getColDef().lockPosition);\n        if (isRtl) {\n          if (placement > lastPlacement) {\n            rulePassed = false;\n          }\n        } else {\n          if (placement < lastPlacement) {\n            rulePassed = false;\n          }\n        }\n        lastPlacement = placement;\n      });\n      return rulePassed;\n    };\n    if (!doesMovePassLockedPositions(gridOrder)) {\n      return false;\n    }\n    return true;\n  }\n  getProposedColumnOrder(columnsToMove, toIndex) {\n    const gridColumns = this.beans.colModel.getCols();\n    const proposedColumnOrder = gridColumns.slice();\n    _moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n    return proposedColumnOrder;\n  }\n  createBodyDropTarget(pinned, dropContainer) {\n    return new BodyDropTarget(pinned, dropContainer);\n  }\n  moveHeader(hDirection, eGui, column, pinned, bean) {\n    const { ctrlsSvc, gos, colModel, visibleCols, focusSvc } = this.beans;\n    const rect = eGui.getBoundingClientRect();\n    const left = rect.left;\n    const isGroup = isColumnGroup(column);\n    const width = isGroup ? rect.width : column.getActualWidth();\n    const isLeft = hDirection === \"left\" !== gos.get(\"enableRtl\");\n    const xPosition = normaliseX({\n      x: isLeft ? left - 20 : left + width + 20,\n      pinned,\n      fromKeyboard: true,\n      gos,\n      ctrlsSvc\n    });\n    const headerPosition = focusSvc.focusedHeader;\n    attemptMoveColumns({\n      allMovingColumns: isGroup ? column.getLeafColumns() : [column],\n      isFromHeader: true,\n      fromLeft: hDirection === \"right\",\n      xPosition,\n      pinned,\n      fromEnter: false,\n      fakeEvent: false,\n      gos,\n      colModel,\n      colMoves: this,\n      visibleCols,\n      finished: true\n    });\n    let targetColumn;\n    if (isGroup) {\n      const displayedLeafColumns = column.getDisplayedLeafColumns();\n      targetColumn = isLeft ? displayedLeafColumns[0] : _last(displayedLeafColumns);\n    } else {\n      targetColumn = column;\n    }\n    ctrlsSvc.getScrollFeature().ensureColumnVisible(targetColumn, \"auto\");\n    if ((!bean.isAlive() || gos.get(\"ensureDomOrder\")) && headerPosition) {\n      let restoreFocusColumn;\n      if (isGroup) {\n        const groupId = column.getGroupId();\n        const leafCols = column.getLeafColumns();\n        if (!leafCols.length) {\n          return;\n        }\n        const parent = leafCols[0].getParent();\n        if (!parent) {\n          return;\n        }\n        restoreFocusColumn = findGroupWidthId(parent, groupId);\n      } else {\n        restoreFocusColumn = column;\n      }\n      if (restoreFocusColumn) {\n        focusSvc.focusHeaderPosition({\n          headerPosition: {\n            ...headerPosition,\n            column: restoreFocusColumn\n          }\n        });\n      }\n    }\n  }\n  setDragSourceForHeader(eSource, column, displayName) {\n    const { gos, colModel, dragAndDrop, visibleCols } = this.beans;\n    let hideColumnOnExit = !gos.get(\"suppressDragLeaveHidesColumns\");\n    const isGroup = isColumnGroup(column);\n    const columns = isGroup ? column.getProvidedColumnGroup().getLeafColumns() : [column];\n    const getDragItem = isGroup ? () => createDragItemForGroup(column, visibleCols.allCols) : () => createDragItem(column);\n    const dragSource = {\n      type: 1 /* HeaderCell */,\n      eElement: eSource,\n      getDefaultIconName: () => hideColumnOnExit ? \"hide\" : \"notAllowed\",\n      getDragItem,\n      dragItemName: displayName,\n      onDragStarted: () => {\n        hideColumnOnExit = !gos.get(\"suppressDragLeaveHidesColumns\");\n        setColumnsMoving(columns, true);\n      },\n      onDragStopped: () => setColumnsMoving(columns, false),\n      onDragCancelled: () => setColumnsMoving(columns, false),\n      onGridEnter: (dragItem) => {\n        if (hideColumnOnExit) {\n          const { columns: columns2 = [], visibleState } = dragItem ?? {};\n          const hasVisibleState = isGroup ? (col) => !visibleState || visibleState[col.getColId()] : () => true;\n          const unlockedColumns = columns2.filter(\n            (col) => !col.getColDef().lockVisible && hasVisibleState(col)\n          );\n          colModel.setColsVisible(unlockedColumns, true, \"uiColumnMoved\");\n        }\n      },\n      onGridExit: (dragItem) => {\n        if (hideColumnOnExit) {\n          const unlockedColumns = dragItem?.columns?.filter((col) => !col.getColDef().lockVisible) || [];\n          colModel.setColsVisible(unlockedColumns, false, \"uiColumnMoved\");\n        }\n      }\n    };\n    dragAndDrop.addDragSource(dragSource, true);\n    return dragSource;\n  }\n};\nfunction findGroupWidthId(columnGroup, id) {\n  while (columnGroup) {\n    if (columnGroup.getGroupId() === id) {\n      return columnGroup;\n    }\n    columnGroup = columnGroup.getParent();\n  }\n  return void 0;\n}\nfunction createDragItem(column) {\n  const visibleState = {};\n  visibleState[column.getId()] = column.isVisible();\n  return {\n    columns: [column],\n    visibleState,\n    containerType: column.pinned\n  };\n}\nfunction createDragItemForGroup(columnGroup, allCols) {\n  const allColumnsOriginalOrder = columnGroup.getProvidedColumnGroup().getLeafColumns();\n  const visibleState = {};\n  allColumnsOriginalOrder.forEach((column) => visibleState[column.getId()] = column.isVisible());\n  const allColumnsCurrentOrder = [];\n  allCols.forEach((column) => {\n    if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n      allColumnsCurrentOrder.push(column);\n      _removeFromArray(allColumnsOriginalOrder, column);\n    }\n  });\n  allColumnsOriginalOrder.forEach((column) => allColumnsCurrentOrder.push(column));\n  const columnsInSplit = [];\n  const columnGroupColumns = columnGroup.getLeafColumns();\n  for (const col of allColumnsCurrentOrder) {\n    if (columnGroupColumns.indexOf(col) !== -1) {\n      columnsInSplit.push(col);\n    }\n  }\n  return {\n    columns: allColumnsCurrentOrder,\n    columnsInSplit,\n    visibleState,\n    containerType: columnsInSplit[0]?.pinned\n  };\n}\n\n// packages/ag-grid-community/src/columnMove/columnMoveModule.ts\nvar ColumnMoveModule = {\n  moduleName: \"ColumnMove\",\n  version: VERSION,\n  beans: [ColumnMoveService, ColumnAnimationService],\n  apiFunctions: {\n    moveColumnByIndex,\n    moveColumns\n  },\n  dependsOn: [SharedDragAndDropModule],\n  css: [columnMovingCSS]\n};\n\n// packages/ag-grid-community/src/rendering/autoWidthCalculator.ts\nvar AutoWidthCalculator = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"autoWidthCalc\";\n  }\n  postConstruct() {\n    this.beans.ctrlsSvc.whenReady(this, (p) => {\n      this.centerRowContainerCtrl = p.center;\n    });\n  }\n  // this is the trick: we create a dummy container and clone all the cells\n  // into the dummy, then check the dummy's width. then destroy the dummy\n  // as we don't need it any more.\n  // drawback: only the cells visible on the screen are considered\n  getPreferredWidthForColumn(column, skipHeader) {\n    const eHeaderCell = this.getHeaderCellForColumn(column);\n    if (!eHeaderCell) {\n      return -1;\n    }\n    const elements = this.beans.rowRenderer.getAllCellsNotSpanningForColumn(column);\n    if (!skipHeader) {\n      elements.push(eHeaderCell);\n    }\n    return this.getPreferredWidthForElements(elements);\n  }\n  getPreferredWidthForColumnGroup(columnGroup) {\n    const eHeaderCell = this.getHeaderCellForColumn(columnGroup);\n    if (!eHeaderCell) {\n      return -1;\n    }\n    return this.getPreferredWidthForElements([eHeaderCell]);\n  }\n  getPreferredWidthForElements(elements, extraPadding) {\n    const eDummyContainer = document.createElement(\"form\");\n    eDummyContainer.style.position = \"fixed\";\n    const eBodyContainer = this.centerRowContainerCtrl.eContainer;\n    elements.forEach((el) => this.cloneItemIntoDummy(el, eDummyContainer));\n    eBodyContainer.appendChild(eDummyContainer);\n    const dummyContainerWidth = eDummyContainer.offsetWidth;\n    eBodyContainer.removeChild(eDummyContainer);\n    extraPadding = extraPadding ?? this.gos.get(\"autoSizePadding\");\n    return dummyContainerWidth + extraPadding;\n  }\n  getHeaderCellForColumn(column) {\n    let element = null;\n    this.beans.ctrlsSvc.getHeaderRowContainerCtrls().forEach((container) => {\n      const res = container.getHtmlElementForColumnHeader(column);\n      if (res != null) {\n        element = res;\n      }\n    });\n    return element;\n  }\n  cloneItemIntoDummy(eCell, eDummyContainer) {\n    const eCellClone = eCell.cloneNode(true);\n    eCellClone.style.width = \"\";\n    eCellClone.style.position = \"static\";\n    eCellClone.style.left = \"\";\n    const eCloneParent = document.createElement(\"div\");\n    const eCloneParentClassList = eCloneParent.classList;\n    const isHeader = [\"ag-header-cell\", \"ag-header-group-cell\"].some((cls) => eCellClone.classList.contains(cls));\n    if (isHeader) {\n      eCloneParentClassList.add(\"ag-header\", \"ag-header-row\");\n      eCloneParent.style.position = \"static\";\n    } else {\n      eCloneParentClassList.add(\"ag-row\");\n    }\n    let pointer = eCell.parentElement;\n    while (pointer) {\n      const isRow = [\"ag-header-row\", \"ag-row\"].some((cls) => pointer.classList.contains(cls));\n      if (isRow) {\n        for (let i = 0; i < pointer.classList.length; i++) {\n          const item = pointer.classList[i];\n          if (item != \"ag-row-position-absolute\") {\n            eCloneParentClassList.add(item);\n          }\n        }\n        break;\n      }\n      pointer = pointer.parentElement;\n    }\n    eCloneParent.appendChild(eCellClone);\n    eDummyContainer.appendChild(eCloneParent);\n  }\n};\n\n// packages/ag-grid-community/src/rendering/autoWidthModule.ts\nvar AutoWidthModule = {\n  moduleName: \"AutoWidth\",\n  version: VERSION,\n  beans: [AutoWidthCalculator]\n};\n\n// packages/ag-grid-community/src/columnResize/columnResizeApi.ts\nfunction setColumnWidths(beans, columnWidths, finished = true, source = \"api\") {\n  beans.colResize?.setColumnWidths(columnWidths, false, finished, source);\n}\n\n// packages/ag-grid-community/src/columnResize/groupResizeFeature.ts\nvar GroupResizeFeature = class extends BeanStub {\n  constructor(comp, eResize, pinned, columnGroup) {\n    super();\n    this.comp = comp;\n    this.eResize = eResize;\n    this.pinned = pinned;\n    this.columnGroup = columnGroup;\n  }\n  postConstruct() {\n    if (!this.columnGroup.isResizable()) {\n      this.comp.setResizableDisplayed(false);\n      return;\n    }\n    const { horizontalResizeSvc, gos, colAutosize } = this.beans;\n    const finishedWithResizeFunc = horizontalResizeSvc.addResizeBar({\n      eResizeBar: this.eResize,\n      onResizeStart: this.onResizeStart.bind(this),\n      onResizing: this.onResizing.bind(this, false),\n      onResizeEnd: this.onResizing.bind(this, true)\n    });\n    this.addDestroyFunc(finishedWithResizeFunc);\n    if (!gos.get(\"suppressAutoSize\") && colAutosize) {\n      this.addDestroyFunc(\n        colAutosize.addColumnGroupResize(\n          this.eResize,\n          this.columnGroup,\n          () => this.resizeLeafColumnsToFit(\"uiColumnResized\")\n        )\n      );\n    }\n  }\n  onResizeStart(shiftKey) {\n    const {\n      columnsToResize,\n      resizeStartWidth,\n      resizeRatios,\n      groupAfterColumns,\n      groupAfterStartWidth,\n      groupAfterRatios\n    } = this.getInitialValues(shiftKey);\n    this.resizeCols = columnsToResize;\n    this.resizeStartWidth = resizeStartWidth;\n    this.resizeRatios = resizeRatios;\n    this.resizeTakeFromCols = groupAfterColumns;\n    this.resizeTakeFromStartWidth = groupAfterStartWidth;\n    this.resizeTakeFromRatios = groupAfterRatios;\n    this.toggleColumnResizing(true);\n  }\n  onResizing(finished, resizeAmount, source = \"uiColumnResized\") {\n    const resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n    const width = this.resizeStartWidth + resizeAmountNormalised;\n    this.resizeColumnsFromLocalValues(width, source, finished);\n  }\n  getInitialValues(shiftKey) {\n    const getInitialSizeOfColumns = (columns) => columns.reduce((totalWidth, column) => totalWidth + column.getActualWidth(), 0);\n    const getSizeRatiosOfColumns = (columns, initialSizeOfColumns) => columns.map((column) => column.getActualWidth() / initialSizeOfColumns);\n    const columnsToResize = this.getColumnsToResize();\n    const resizeStartWidth = getInitialSizeOfColumns(columnsToResize);\n    const resizeRatios = getSizeRatiosOfColumns(columnsToResize, resizeStartWidth);\n    const columnSizeAndRatios = {\n      columnsToResize,\n      resizeStartWidth,\n      resizeRatios\n    };\n    let groupAfter = null;\n    if (shiftKey) {\n      groupAfter = this.beans.colGroupSvc?.getGroupAtDirection(this.columnGroup, \"After\") ?? null;\n    }\n    if (groupAfter) {\n      const takeFromLeafCols = groupAfter.getDisplayedLeafColumns();\n      const groupAfterColumns = columnSizeAndRatios.groupAfterColumns = takeFromLeafCols.filter(\n        (col) => col.isResizable()\n      );\n      const groupAfterStartWidth = columnSizeAndRatios.groupAfterStartWidth = getInitialSizeOfColumns(groupAfterColumns);\n      columnSizeAndRatios.groupAfterRatios = getSizeRatiosOfColumns(groupAfterColumns, groupAfterStartWidth);\n    } else {\n      columnSizeAndRatios.groupAfterColumns = void 0;\n      columnSizeAndRatios.groupAfterStartWidth = void 0;\n      columnSizeAndRatios.groupAfterRatios = void 0;\n    }\n    return columnSizeAndRatios;\n  }\n  resizeLeafColumnsToFit(source) {\n    const preferredSize = this.beans.autoWidthCalc.getPreferredWidthForColumnGroup(this.columnGroup);\n    const initialValues = this.getInitialValues();\n    if (preferredSize > initialValues.resizeStartWidth) {\n      this.resizeColumns(initialValues, preferredSize, source, true);\n    }\n  }\n  resizeColumnsFromLocalValues(totalWidth, source, finished = true) {\n    if (!this.resizeCols || !this.resizeRatios) {\n      return;\n    }\n    const initialValues = {\n      columnsToResize: this.resizeCols,\n      resizeStartWidth: this.resizeStartWidth,\n      resizeRatios: this.resizeRatios,\n      groupAfterColumns: this.resizeTakeFromCols,\n      groupAfterStartWidth: this.resizeTakeFromStartWidth,\n      groupAfterRatios: this.resizeTakeFromRatios\n    };\n    this.resizeColumns(initialValues, totalWidth, source, finished);\n  }\n  resizeColumns(initialValues, totalWidth, source, finished = true) {\n    const {\n      columnsToResize,\n      resizeStartWidth,\n      resizeRatios,\n      groupAfterColumns,\n      groupAfterStartWidth,\n      groupAfterRatios\n    } = initialValues;\n    const resizeSets = [];\n    resizeSets.push({\n      columns: columnsToResize,\n      ratios: resizeRatios,\n      width: totalWidth\n    });\n    if (groupAfterColumns) {\n      const diff = totalWidth - resizeStartWidth;\n      resizeSets.push({\n        columns: groupAfterColumns,\n        ratios: groupAfterRatios,\n        width: groupAfterStartWidth - diff\n      });\n    }\n    this.beans.colResize?.resizeColumnSets({\n      resizeSets,\n      finished,\n      source\n    });\n    if (finished) {\n      this.toggleColumnResizing(false);\n    }\n  }\n  toggleColumnResizing(resizing) {\n    this.comp.toggleCss(\"ag-column-resizing\", resizing);\n  }\n  getColumnsToResize() {\n    const leafCols = this.columnGroup.getDisplayedLeafColumns();\n    return leafCols.filter((col) => col.isResizable());\n  }\n  // optionally inverts the drag, depending on pinned and RTL\n  // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n  normaliseDragChange(dragChange) {\n    let result = dragChange;\n    if (this.gos.get(\"enableRtl\")) {\n      if (this.pinned !== \"left\") {\n        result *= -1;\n      }\n    } else if (this.pinned === \"right\") {\n      result *= -1;\n    }\n    return result;\n  }\n  destroy() {\n    super.destroy();\n    this.resizeCols = void 0;\n    this.resizeRatios = void 0;\n    this.resizeTakeFromCols = void 0;\n    this.resizeTakeFromRatios = void 0;\n  }\n};\n\n// packages/ag-grid-community/src/columnResize/resizeFeature.ts\nvar ResizeFeature = class extends BeanStub {\n  constructor(pinned, column, eResize, comp, ctrl) {\n    super();\n    this.pinned = pinned;\n    this.column = column;\n    this.eResize = eResize;\n    this.comp = comp;\n    this.ctrl = ctrl;\n  }\n  postConstruct() {\n    const destroyResizeFuncs = [];\n    let canResize;\n    let canAutosize;\n    const addResize = () => {\n      _setDisplayed(this.eResize, canResize);\n      if (!canResize) {\n        return;\n      }\n      const { horizontalResizeSvc, colAutosize } = this.beans;\n      const finishedWithResizeFunc = horizontalResizeSvc.addResizeBar({\n        eResizeBar: this.eResize,\n        onResizeStart: this.onResizeStart.bind(this),\n        onResizing: this.onResizing.bind(this, false),\n        onResizeEnd: this.onResizing.bind(this, true)\n      });\n      destroyResizeFuncs.push(finishedWithResizeFunc);\n      if (canAutosize && colAutosize) {\n        destroyResizeFuncs.push(colAutosize.addColumnAutosize(this.eResize, this.column));\n      }\n    };\n    const removeResize = () => {\n      destroyResizeFuncs.forEach((f) => f());\n      destroyResizeFuncs.length = 0;\n    };\n    const refresh = () => {\n      const resize = this.column.isResizable();\n      const autoSize = !this.gos.get(\"suppressAutoSize\") && !this.column.getColDef().suppressAutoSize;\n      const propertyChange = resize !== canResize || autoSize !== canAutosize;\n      if (propertyChange) {\n        canResize = resize;\n        canAutosize = autoSize;\n        removeResize();\n        addResize();\n      }\n    };\n    refresh();\n    this.addDestroyFunc(removeResize);\n    this.ctrl.setRefreshFunction(\"resize\", refresh);\n  }\n  onResizing(finished, resizeAmount) {\n    const { column: key, lastResizeAmount, resizeStartWidth, beans } = this;\n    const resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n    const newWidth = resizeStartWidth + resizeAmountNormalised;\n    const columnWidths = [{ key, newWidth }];\n    const { pinnedCols, ctrlsSvc, colResize } = beans;\n    if (this.column.getPinned()) {\n      const leftWidth = pinnedCols?.leftWidth ?? 0;\n      const rightWidth = pinnedCols?.rightWidth ?? 0;\n      const bodyWidth = _getInnerWidth(ctrlsSvc.getGridBodyCtrl().eBodyViewport) - 50;\n      if (leftWidth + rightWidth + (resizeAmountNormalised - lastResizeAmount) > bodyWidth) {\n        return;\n      }\n    }\n    this.lastResizeAmount = resizeAmountNormalised;\n    colResize?.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, \"uiColumnResized\");\n    if (finished) {\n      this.toggleColumnResizing(false);\n    }\n  }\n  onResizeStart(shiftKey) {\n    this.resizeStartWidth = this.column.getActualWidth();\n    this.lastResizeAmount = 0;\n    this.resizeWithShiftKey = shiftKey;\n    this.toggleColumnResizing(true);\n  }\n  toggleColumnResizing(resizing) {\n    this.comp.toggleCss(\"ag-column-resizing\", resizing);\n  }\n  // optionally inverts the drag, depending on pinned and RTL\n  // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n  normaliseResizeAmount(dragChange) {\n    let result = dragChange;\n    const notPinningLeft = this.pinned !== \"left\";\n    const pinningRight = this.pinned === \"right\";\n    if (this.gos.get(\"enableRtl\")) {\n      if (notPinningLeft) {\n        result *= -1;\n      }\n    } else {\n      if (pinningRight) {\n        result *= -1;\n      }\n    }\n    return result;\n  }\n};\n\n// packages/ag-grid-community/src/columnResize/columnResizeService.ts\nvar ColumnResizeService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colResize\";\n  }\n  setColumnWidths(columnWidths, shiftKey, finished, source) {\n    const sets = [];\n    const { colModel, gos, visibleCols } = this.beans;\n    columnWidths.forEach((columnWidth) => {\n      const col = colModel.getColDefCol(columnWidth.key) || colModel.getCol(columnWidth.key);\n      if (!col) {\n        return;\n      }\n      sets.push({\n        width: columnWidth.newWidth,\n        ratios: [1],\n        columns: [col]\n      });\n      const defaultIsShift = gos.get(\"colResizeDefault\") === \"shift\";\n      if (defaultIsShift) {\n        shiftKey = !shiftKey;\n      }\n      if (shiftKey) {\n        const otherCol = visibleCols.getColAfter(col);\n        if (!otherCol) {\n          return;\n        }\n        const widthDiff = col.getActualWidth() - columnWidth.newWidth;\n        const otherColWidth = otherCol.getActualWidth() + widthDiff;\n        sets.push({\n          width: otherColWidth,\n          ratios: [1],\n          columns: [otherCol]\n        });\n      }\n    });\n    if (sets.length === 0) {\n      return;\n    }\n    this.resizeColumnSets({\n      resizeSets: sets,\n      finished,\n      source\n    });\n  }\n  // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n  // be resized. this is used for example when user tries to resize a group and holds shift key,\n  // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n  // so that's two sets for this method.\n  resizeColumnSets(params) {\n    const { resizeSets, finished, source } = params;\n    const passMinMaxCheck = !resizeSets || resizeSets.every((columnResizeSet) => checkMinAndMaxWidthsForSet(columnResizeSet));\n    if (!passMinMaxCheck) {\n      if (finished) {\n        const columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n        dispatchColumnResizedEvent(this.eventSvc, columns, finished, source);\n      }\n      return;\n    }\n    const changedCols = [];\n    const allResizedCols = [];\n    resizeSets.forEach((set) => {\n      const { width, columns, ratios } = set;\n      const newWidths = {};\n      const finishedCols = {};\n      columns.forEach((col) => allResizedCols.push(col));\n      let finishedColsGrew = true;\n      let loopCount = 0;\n      while (finishedColsGrew) {\n        loopCount++;\n        if (loopCount > 1e3) {\n          _error(31);\n          break;\n        }\n        finishedColsGrew = false;\n        const subsetCols = [];\n        let subsetRatioTotal = 0;\n        let pixelsToDistribute = width;\n        columns.forEach((col, index) => {\n          const thisColFinished = finishedCols[col.getId()];\n          if (thisColFinished) {\n            pixelsToDistribute -= newWidths[col.getId()];\n          } else {\n            subsetCols.push(col);\n            const ratioThisCol = ratios[index];\n            subsetRatioTotal += ratioThisCol;\n          }\n        });\n        const ratioScale = 1 / subsetRatioTotal;\n        subsetCols.forEach((col, index) => {\n          const lastCol = index === subsetCols.length - 1;\n          let colNewWidth;\n          if (lastCol) {\n            colNewWidth = pixelsToDistribute;\n          } else {\n            colNewWidth = Math.round(ratios[index] * width * ratioScale);\n            pixelsToDistribute -= colNewWidth;\n          }\n          const minWidth = col.getMinWidth();\n          const maxWidth = col.getMaxWidth();\n          if (colNewWidth < minWidth) {\n            colNewWidth = minWidth;\n            finishedCols[col.getId()] = true;\n            finishedColsGrew = true;\n          } else if (maxWidth > 0 && colNewWidth > maxWidth) {\n            colNewWidth = maxWidth;\n            finishedCols[col.getId()] = true;\n            finishedColsGrew = true;\n          }\n          newWidths[col.getId()] = colNewWidth;\n        });\n      }\n      columns.forEach((col) => {\n        const newWidth = newWidths[col.getId()];\n        const actualWidth = col.getActualWidth();\n        if (actualWidth !== newWidth) {\n          col.setActualWidth(newWidth, source);\n          changedCols.push(col);\n        }\n      });\n    });\n    const atLeastOneColChanged = changedCols.length > 0;\n    let flexedCols = [];\n    if (atLeastOneColChanged) {\n      const { colFlex, visibleCols, colViewport } = this.beans;\n      flexedCols = colFlex?.refreshFlexedColumns({\n        resizingCols: allResizedCols,\n        skipSetLeft: true\n      }) ?? [];\n      visibleCols.setLeftValues(source);\n      visibleCols.updateBodyWidths();\n      colViewport.checkViewportColumns();\n    }\n    const colsForEvent = allResizedCols.concat(flexedCols);\n    if (atLeastOneColChanged || finished) {\n      dispatchColumnResizedEvent(this.eventSvc, colsForEvent, finished, source, flexedCols);\n    }\n  }\n  resizeHeader(column, delta, shiftKey) {\n    if (!column.isResizable()) {\n      return;\n    }\n    const actualWidth = column.getActualWidth();\n    const minWidth = column.getMinWidth();\n    const maxWidth = column.getMaxWidth();\n    const newWidth = Math.min(Math.max(actualWidth + delta, minWidth), maxWidth);\n    this.setColumnWidths([{ key: column, newWidth }], shiftKey, true, \"uiColumnResized\");\n  }\n  createResizeFeature(pinned, column, eResize, comp, ctrl) {\n    return new ResizeFeature(pinned, column, eResize, comp, ctrl);\n  }\n  createGroupResizeFeature(comp, eResize, pinned, columnGroup) {\n    return new GroupResizeFeature(comp, eResize, pinned, columnGroup);\n  }\n};\nfunction checkMinAndMaxWidthsForSet(columnResizeSet) {\n  const { columns, width } = columnResizeSet;\n  let minWidthAccumulated = 0;\n  let maxWidthAccumulated = 0;\n  let maxWidthActive = true;\n  columns.forEach((col) => {\n    const minWidth = col.getMinWidth();\n    minWidthAccumulated += minWidth || 0;\n    const maxWidth = col.getMaxWidth();\n    if (maxWidth > 0) {\n      maxWidthAccumulated += maxWidth;\n    } else {\n      maxWidthActive = false;\n    }\n  });\n  const minWidthPasses = width >= minWidthAccumulated;\n  const maxWidthPasses = !maxWidthActive || width <= maxWidthAccumulated;\n  return minWidthPasses && maxWidthPasses;\n}\n\n// packages/ag-grid-community/src/columnResize/columnResizeModule.ts\nvar ColumnResizeModule = {\n  moduleName: \"ColumnResize\",\n  version: VERSION,\n  beans: [ColumnResizeService],\n  apiFunctions: {\n    setColumnWidths\n  },\n  dependsOn: [HorizontalResizeModule, AutoWidthModule]\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/columnGroup/groupWidthFeature.ts\nvar GroupWidthFeature = class extends BeanStub {\n  constructor(comp, columnGroup) {\n    super();\n    // the children can change, we keep destroy functions related to listening to the children here\n    this.removeChildListenersFuncs = [];\n    this.columnGroup = columnGroup;\n    this.comp = comp;\n  }\n  postConstruct() {\n    this.addListenersToChildrenColumns();\n    this.addManagedListeners(this.columnGroup, {\n      displayedChildrenChanged: this.onDisplayedChildrenChanged.bind(this)\n    });\n    this.onWidthChanged();\n    this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));\n  }\n  addListenersToChildrenColumns() {\n    this.removeListenersOnChildrenColumns();\n    const widthChangedListener = this.onWidthChanged.bind(this);\n    this.columnGroup.getLeafColumns().forEach((column) => {\n      column.__addEventListener(\"widthChanged\", widthChangedListener);\n      column.__addEventListener(\"visibleChanged\", widthChangedListener);\n      this.removeChildListenersFuncs.push(() => {\n        column.__removeEventListener(\"widthChanged\", widthChangedListener);\n        column.__removeEventListener(\"visibleChanged\", widthChangedListener);\n      });\n    });\n  }\n  removeListenersOnChildrenColumns() {\n    this.removeChildListenersFuncs.forEach((func) => func());\n    this.removeChildListenersFuncs = [];\n  }\n  onDisplayedChildrenChanged() {\n    this.addListenersToChildrenColumns();\n    this.onWidthChanged();\n  }\n  onWidthChanged() {\n    const columnWidth = this.columnGroup.getActualWidth();\n    this.comp.setWidth(`${columnWidth}px`);\n    this.comp.toggleCss(\"ag-hidden\", columnWidth === 0);\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/columnGroup/headerGroupCellCtrl.ts\nvar HeaderGroupCellCtrl = class extends AbstractHeaderCellCtrl {\n  constructor() {\n    super(...arguments);\n    this.onSuppressColMoveChange = () => {\n      if (!this.isAlive() || this.isSuppressMoving()) {\n        this.removeDragSource();\n      } else {\n        if (!this.dragSource) {\n          this.setDragSource(this.eGui);\n        }\n      }\n    };\n  }\n  setComp(comp, eGui, eResize, eHeaderCompWrapper, compBean) {\n    const { column, beans } = this;\n    const { context, colNames, colHover, rangeSvc, colResize } = beans;\n    this.comp = comp;\n    compBean = setupCompBean(this, context, compBean);\n    this.setGui(eGui, compBean);\n    this.displayName = colNames.getDisplayNameForColumnGroup(column, \"header\");\n    this.refreshHeaderStyles();\n    this.addClasses();\n    this.setupMovingCss(compBean);\n    this.setupExpandable(compBean);\n    this.setupTooltip();\n    this.setupAutoHeight({\n      wrapperElement: eHeaderCompWrapper,\n      compBean\n    });\n    this.setupUserComp();\n    this.addHeaderMouseListeners(compBean);\n    this.addManagedPropertyListener(\"groupHeaderHeight\", this.refreshMaxHeaderHeight.bind(this));\n    this.refreshMaxHeaderHeight();\n    const pinned = this.rowCtrl.pinned;\n    const leafCols = column.getProvidedColumnGroup().getLeafColumns();\n    colHover?.createHoverFeature(compBean, leafCols, eGui);\n    rangeSvc?.createRangeHighlightFeature(compBean, column, comp);\n    compBean.createManagedBean(new SetLeftFeature(column, eGui, beans));\n    compBean.createManagedBean(new GroupWidthFeature(comp, column));\n    if (colResize) {\n      this.resizeFeature = compBean.createManagedBean(\n        colResize.createGroupResizeFeature(comp, eResize, pinned, column)\n      );\n    } else {\n      comp.setResizableDisplayed(false);\n    }\n    compBean.createManagedBean(\n      new ManagedFocusFeature(eGui, {\n        shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n        onTabKeyDown: () => void 0,\n        handleKeyDown: this.handleKeyDown.bind(this),\n        onFocusIn: this.onFocusIn.bind(this)\n      })\n    );\n    this.addHighlightListeners(compBean, leafCols);\n    compBean.addManagedPropertyListener(\"suppressMovableColumns\", this.onSuppressColMoveChange);\n    this.addResizeAndMoveKeyboardListeners(compBean);\n    compBean.addDestroyFunc(() => this.clearComponent());\n  }\n  getHeaderClassParams() {\n    const { column, beans } = this;\n    const colDef = column.getDefinition();\n    return _addGridCommonParams(beans.gos, {\n      colDef,\n      columnGroup: column,\n      floatingFilter: false\n    });\n  }\n  refreshMaxHeaderHeight() {\n    const { gos, comp } = this;\n    const groupHeaderHeight = gos.get(\"groupHeaderHeight\");\n    if (groupHeaderHeight != null) {\n      if (groupHeaderHeight === 0) {\n        comp.setHeaderWrapperHidden(true);\n      } else {\n        comp.setHeaderWrapperMaxHeight(groupHeaderHeight);\n      }\n    } else {\n      comp.setHeaderWrapperHidden(false);\n      comp.setHeaderWrapperMaxHeight(null);\n    }\n  }\n  addHighlightListeners(compBean, columns) {\n    if (!this.beans.gos.get(\"suppressMoveWhenColumnDragging\")) {\n      return;\n    }\n    for (const column of columns) {\n      compBean.addManagedListeners(column, {\n        headerHighlightChanged: this.onLeafColumnHighlightChanged.bind(this, column)\n      });\n    }\n  }\n  onLeafColumnHighlightChanged(column) {\n    const displayedColumns = this.column.getDisplayedLeafColumns();\n    const isFirst = displayedColumns[0] === column;\n    const isLast = _last(displayedColumns) === column;\n    if (!isFirst && !isLast) {\n      return;\n    }\n    const highlighted = column.getHighlighted();\n    const isColumnMoveAtThisLevel = !!this.rowCtrl.getHeaderCellCtrls().find((ctrl) => {\n      return ctrl.column.isMoving();\n    });\n    let beforeOn = false;\n    let afterOn = false;\n    if (isColumnMoveAtThisLevel) {\n      const isRtl = this.beans.gos.get(\"enableRtl\");\n      const isHighlightAfter = highlighted === 1 /* After */;\n      const isHighlightBefore = highlighted === 0 /* Before */;\n      if (isFirst) {\n        if (isRtl) {\n          afterOn = isHighlightAfter;\n        } else {\n          beforeOn = isHighlightBefore;\n        }\n      }\n      if (isLast) {\n        if (isRtl) {\n          beforeOn = isHighlightBefore;\n        } else {\n          afterOn = isHighlightAfter;\n        }\n      }\n    }\n    this.comp.toggleCss(\"ag-header-highlight-before\", beforeOn);\n    this.comp.toggleCss(\"ag-header-highlight-after\", afterOn);\n  }\n  resizeHeader(delta, shiftKey) {\n    const { resizeFeature } = this;\n    if (!resizeFeature) {\n      return;\n    }\n    const initialValues = resizeFeature.getInitialValues(shiftKey);\n    resizeFeature.resizeColumns(initialValues, initialValues.resizeStartWidth + delta, \"uiColumnResized\", true);\n  }\n  resizeLeafColumnsToFit(source) {\n    this.resizeFeature?.resizeLeafColumnsToFit(source);\n  }\n  setupUserComp() {\n    const { colGroupSvc, userCompFactory, gos, enterpriseMenuFactory } = this.beans;\n    const columnGroup = this.column;\n    const providedColumnGroup = columnGroup.getProvidedColumnGroup();\n    const params = _addGridCommonParams(gos, {\n      displayName: this.displayName,\n      columnGroup,\n      setExpanded: (expanded) => {\n        colGroupSvc.setColumnGroupOpened(providedColumnGroup, expanded, \"gridInitializing\");\n      },\n      setTooltip: (value, shouldDisplayTooltip) => {\n        gos.assertModuleRegistered(\"Tooltip\", 3);\n        this.setupTooltip(value, shouldDisplayTooltip);\n      },\n      showColumnMenu: (buttonElement, onClosedCallback) => enterpriseMenuFactory?.showMenuAfterButtonClick(\n        providedColumnGroup,\n        buttonElement,\n        \"columnMenu\",\n        onClosedCallback\n      ),\n      showColumnMenuAfterMouseClick: (mouseEvent, onClosedCallback) => enterpriseMenuFactory?.showMenuAfterMouseEvent(\n        providedColumnGroup,\n        mouseEvent,\n        \"columnMenu\",\n        onClosedCallback\n      ),\n      eGridHeader: this.eGui\n    });\n    const compDetails = _getHeaderGroupCompDetails(userCompFactory, params);\n    if (compDetails) {\n      this.comp.setUserCompDetails(compDetails);\n    }\n  }\n  addHeaderMouseListeners(compBean) {\n    const listener = (e) => this.handleMouseOverChange(e.type === \"mouseenter\");\n    const clickListener = () => this.dispatchColumnMouseEvent(\"columnHeaderClicked\", this.column.getProvidedColumnGroup());\n    const contextMenuListener = (event) => this.handleContextMenuMouseEvent(event, void 0, this.column.getProvidedColumnGroup());\n    compBean.addManagedListeners(this.eGui, {\n      mouseenter: listener,\n      mouseleave: listener,\n      click: clickListener,\n      contextmenu: contextMenuListener\n    });\n  }\n  handleMouseOverChange(isMouseOver) {\n    this.eventSvc.dispatchEvent({\n      type: isMouseOver ? \"columnHeaderMouseOver\" : \"columnHeaderMouseLeave\",\n      column: this.column.getProvidedColumnGroup()\n    });\n  }\n  setupTooltip(value, shouldDisplayTooltip) {\n    this.tooltipFeature = this.beans.tooltipSvc?.setupHeaderGroupTooltip(\n      this.tooltipFeature,\n      this,\n      value,\n      shouldDisplayTooltip\n    );\n  }\n  setupExpandable(compBean) {\n    const providedColGroup = this.column.getProvidedColumnGroup();\n    this.refreshExpanded();\n    const listener = this.refreshExpanded.bind(this);\n    compBean.addManagedListeners(providedColGroup, {\n      expandedChanged: listener,\n      expandableChanged: listener\n    });\n  }\n  refreshExpanded() {\n    const { column } = this;\n    this.expandable = column.isExpandable();\n    const expanded = column.isExpanded();\n    if (this.expandable) {\n      this.comp.setAriaExpanded(expanded ? \"true\" : \"false\");\n    } else {\n      this.comp.setAriaExpanded(void 0);\n    }\n    this.refreshHeaderStyles();\n  }\n  addClasses() {\n    const { column } = this;\n    const colGroupDef = column.getColGroupDef();\n    const classes = _getHeaderClassesFromColDef(colGroupDef, this.gos, null, column);\n    if (column.isPadding()) {\n      classes.push(\"ag-header-group-cell-no-group\");\n      const leafCols = column.getLeafColumns();\n      if (leafCols.every((col) => col.isSpanHeaderHeight())) {\n        classes.push(\"ag-header-span-height\");\n      }\n    } else {\n      classes.push(\"ag-header-group-cell-with-group\");\n      if (colGroupDef?.wrapHeaderText) {\n        classes.push(\"ag-header-cell-wrap-text\");\n      }\n    }\n    classes.forEach((c) => this.comp.toggleCss(c, true));\n  }\n  setupMovingCss(compBean) {\n    const { column } = this;\n    const providedColumnGroup = column.getProvidedColumnGroup();\n    const leafColumns = providedColumnGroup.getLeafColumns();\n    const listener = () => this.comp.toggleCss(\"ag-header-cell-moving\", column.isMoving());\n    leafColumns.forEach((col) => {\n      compBean.addManagedListeners(col, { movingChanged: listener });\n    });\n    listener();\n  }\n  onFocusIn(e) {\n    if (!this.eGui.contains(e.relatedTarget)) {\n      this.focusThis();\n    }\n  }\n  handleKeyDown(e) {\n    super.handleKeyDown(e);\n    const wrapperHasFocus = this.getWrapperHasFocus();\n    if (!this.expandable || !wrapperHasFocus) {\n      return;\n    }\n    if (e.key === KeyCode.ENTER) {\n      const column = this.column;\n      const newExpandedValue = !column.isExpanded();\n      this.beans.colGroupSvc.setColumnGroupOpened(\n        column.getProvidedColumnGroup(),\n        newExpandedValue,\n        \"uiColumnExpanded\"\n      );\n    }\n  }\n  // unlike columns, this will only get called once, as we don't react on props on column groups\n  // (we will always destroy and recreate this comp if something changes)\n  setDragSource(eHeaderGroup) {\n    if (!this.isAlive() || this.isSuppressMoving()) {\n      return;\n    }\n    this.removeDragSource();\n    if (!eHeaderGroup) {\n      return;\n    }\n    this.dragSource = this.beans.colMoves?.setDragSourceForHeader(eHeaderGroup, this.column, this.displayName) ?? null;\n  }\n  isSuppressMoving() {\n    return this.gos.get(\"suppressMovableColumns\") || this.column.getLeafColumns().some((column) => column.getColDef().suppressMovable || column.getColDef().lockPosition);\n  }\n  destroy() {\n    this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnGroups/columnGroupApi.ts\nfunction setColumnGroupOpened(beans, group, newValue) {\n  beans.colGroupSvc?.setColumnGroupOpened(group, newValue, \"api\");\n}\nfunction getColumnGroup(beans, name, instanceId) {\n  return beans.colGroupSvc?.getColumnGroup(name, instanceId) ?? null;\n}\nfunction getProvidedColumnGroup(beans, name) {\n  return beans.colGroupSvc?.getProvidedColGroup(name) ?? null;\n}\nfunction getDisplayNameForColumnGroup(beans, columnGroup, location) {\n  return beans.colNames.getDisplayNameForColumnGroup(columnGroup, location) || \"\";\n}\nfunction getColumnGroupState(beans) {\n  return beans.colGroupSvc?.getColumnGroupState() ?? [];\n}\nfunction setColumnGroupState(beans, stateItems) {\n  beans.colGroupSvc?.setColumnGroupState(stateItems, \"api\");\n}\nfunction resetColumnGroupState(beans) {\n  beans.colGroupSvc?.resetColumnGroupState(\"api\");\n}\nfunction getLeftDisplayedColumnGroups(beans) {\n  return beans.visibleCols.treeLeft;\n}\nfunction getCenterDisplayedColumnGroups(beans) {\n  return beans.visibleCols.treeCenter;\n}\nfunction getRightDisplayedColumnGroups(beans) {\n  return beans.visibleCols.treeRight;\n}\nfunction getAllDisplayedColumnGroups(beans) {\n  return beans.visibleCols.getAllTrees();\n}\n\n// packages/ag-grid-community/src/columns/visibleColsService.ts\nfunction _removeAllFromUnorderedArray(array, toRemove) {\n  for (let i = 0; i < toRemove.length; i++) {\n    const index = array.indexOf(toRemove[i]);\n    if (index >= 0) {\n      array[index] = array[array.length - 1];\n      array.pop();\n    }\n  }\n}\nvar VisibleColsService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"visibleCols\";\n    // for fast lookup, to see if a column or group is still visible\n    this.colsAndGroupsMap = {};\n    // leave level columns of the displayed trees\n    this.leftCols = [];\n    this.rightCols = [];\n    this.centerCols = [];\n    // all three lists above combined\n    this.allCols = [];\n    // used by:\n    // + angularGrid -> for setting body width\n    // + rowController -> setting main row widths (when inserting and resizing)\n    // need to cache this\n    this.bodyWidth = 0;\n    this.leftWidth = 0;\n    this.rightWidth = 0;\n    this.isBodyWidthDirty = true;\n  }\n  refresh(source, skipTreeBuild = false) {\n    const { colFlex, colModel, colGroupSvc, colViewport, selectionColSvc } = this.beans;\n    if (!skipTreeBuild) {\n      this.buildTrees(colModel, colGroupSvc);\n    }\n    colGroupSvc?.updateOpenClosedVisibility();\n    this.leftCols = pickDisplayedCols(this.treeLeft);\n    this.centerCols = pickDisplayedCols(this.treeCenter);\n    this.rightCols = pickDisplayedCols(this.treeRight);\n    selectionColSvc?.refreshVisibility(this.leftCols, this.centerCols, this.rightCols);\n    this.joinColsAriaOrder(colModel);\n    this.joinCols();\n    this.setLeftValues(source);\n    this.autoHeightCols = this.allCols.filter((col) => col.isAutoHeight());\n    colFlex?.refreshFlexedColumns();\n    this.updateBodyWidths();\n    colViewport.checkViewportColumns(false);\n    this.setFirstRightAndLastLeftPinned(colModel, this.leftCols, this.rightCols, source);\n    this.eventSvc.dispatchEvent({\n      type: \"displayedColumnsChanged\",\n      source\n    });\n  }\n  // after setColumnWidth or updateGroupsAndPresentedCols\n  updateBodyWidths() {\n    const newBodyWidth = getWidthOfColsInList(this.centerCols);\n    const newLeftWidth = getWidthOfColsInList(this.leftCols);\n    const newRightWidth = getWidthOfColsInList(this.rightCols);\n    this.isBodyWidthDirty = this.bodyWidth !== newBodyWidth;\n    const atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n    if (atLeastOneChanged) {\n      this.bodyWidth = newBodyWidth;\n      this.leftWidth = newLeftWidth;\n      this.rightWidth = newRightWidth;\n      this.eventSvc.dispatchEvent({\n        type: \"columnContainerWidthChanged\"\n      });\n      this.eventSvc.dispatchEvent({\n        type: \"displayedColumnsWidthChanged\"\n      });\n    }\n  }\n  // sets the left pixel position of each column\n  setLeftValues(source) {\n    this.setLeftValuesOfCols(source);\n    this.setLeftValuesOfGroups();\n  }\n  setFirstRightAndLastLeftPinned(colModel, leftCols, rightCols, source) {\n    let lastLeft;\n    let firstRight;\n    if (this.gos.get(\"enableRtl\")) {\n      lastLeft = leftCols ? leftCols[0] : null;\n      firstRight = rightCols ? _last(rightCols) : null;\n    } else {\n      lastLeft = leftCols ? _last(leftCols) : null;\n      firstRight = rightCols ? rightCols[0] : null;\n    }\n    colModel.getCols().forEach((col) => {\n      col.setLastLeftPinned(col === lastLeft, source);\n      col.setFirstRightPinned(col === firstRight, source);\n    });\n  }\n  buildTrees(colModel, columnGroupSvc) {\n    const cols = colModel.getColsToShow();\n    const leftCols = cols.filter((col) => col.getPinned() == \"left\");\n    const rightCols = cols.filter((col) => col.getPinned() == \"right\");\n    const centerCols = cols.filter((col) => col.getPinned() != \"left\" && col.getPinned() != \"right\");\n    const idCreator = new GroupInstanceIdCreator();\n    const createGroups = (params) => {\n      return columnGroupSvc ? columnGroupSvc.createColumnGroups(params) : params.columns;\n    };\n    this.treeLeft = createGroups({\n      columns: leftCols,\n      idCreator,\n      pinned: \"left\",\n      oldDisplayedGroups: this.treeLeft\n    });\n    this.treeRight = createGroups({\n      columns: rightCols,\n      idCreator,\n      pinned: \"right\",\n      oldDisplayedGroups: this.treeRight\n    });\n    this.treeCenter = createGroups({\n      columns: centerCols,\n      idCreator,\n      pinned: null,\n      oldDisplayedGroups: this.treeCenter\n    });\n    this.updateColsAndGroupsMap();\n  }\n  clear() {\n    this.leftCols = [];\n    this.rightCols = [];\n    this.centerCols = [];\n    this.allCols = [];\n    this.ariaOrderColumns = [];\n  }\n  joinColsAriaOrder(colModel) {\n    const allColumns = colModel.getCols();\n    const pinnedLeft = [];\n    const center = [];\n    const pinnedRight = [];\n    for (const col of allColumns) {\n      const pinned = col.getPinned();\n      if (!pinned) {\n        center.push(col);\n      } else if (pinned === true || pinned === \"left\") {\n        pinnedLeft.push(col);\n      } else {\n        pinnedRight.push(col);\n      }\n    }\n    this.ariaOrderColumns = pinnedLeft.concat(center).concat(pinnedRight);\n  }\n  getAriaColIndex(colOrGroup) {\n    let col;\n    if (isColumnGroup(colOrGroup)) {\n      col = colOrGroup.getLeafColumns()[0];\n    } else {\n      col = colOrGroup;\n    }\n    return this.ariaOrderColumns.indexOf(col) + 1;\n  }\n  setLeftValuesOfGroups() {\n    [this.treeLeft, this.treeRight, this.treeCenter].forEach((columns) => {\n      columns.forEach((column) => {\n        if (isColumnGroup(column)) {\n          const columnGroup = column;\n          columnGroup.checkLeft();\n        }\n      });\n    });\n  }\n  setLeftValuesOfCols(source) {\n    const { colModel } = this.beans;\n    const primaryCols = colModel.getColDefCols();\n    if (!primaryCols) {\n      return;\n    }\n    const allColumns = colModel.getCols().slice(0);\n    const doingRtl = this.gos.get(\"enableRtl\");\n    [this.leftCols, this.rightCols, this.centerCols].forEach((columns) => {\n      if (doingRtl) {\n        let left = getWidthOfColsInList(columns);\n        columns.forEach((column) => {\n          left -= column.getActualWidth();\n          column.setLeft(left, source);\n        });\n      } else {\n        let left = 0;\n        columns.forEach((column) => {\n          column.setLeft(left, source);\n          left += column.getActualWidth();\n        });\n      }\n      _removeAllFromUnorderedArray(allColumns, columns);\n    });\n    allColumns.forEach((column) => {\n      column.setLeft(null, source);\n    });\n  }\n  joinCols() {\n    if (this.gos.get(\"enableRtl\")) {\n      this.allCols = this.rightCols.concat(this.centerCols).concat(this.leftCols);\n    } else {\n      this.allCols = this.leftCols.concat(this.centerCols).concat(this.rightCols);\n    }\n  }\n  getAllTrees() {\n    if (this.treeLeft && this.treeRight && this.treeCenter) {\n      return this.treeLeft.concat(this.treeCenter).concat(this.treeRight);\n    }\n    return null;\n  }\n  // gridPanel -> ensureColumnVisible\n  isColDisplayed(column) {\n    return this.allCols.indexOf(column) >= 0;\n  }\n  getLeftColsForRow(rowNode) {\n    const {\n      leftCols,\n      beans: { colModel }\n    } = this;\n    const colSpanActive = colModel.colSpanActive;\n    if (!colSpanActive) {\n      return leftCols;\n    }\n    return this.getColsForRow(rowNode, leftCols);\n  }\n  getRightColsForRow(rowNode) {\n    const {\n      rightCols,\n      beans: { colModel }\n    } = this;\n    const colSpanActive = colModel.colSpanActive;\n    if (!colSpanActive) {\n      return rightCols;\n    }\n    return this.getColsForRow(rowNode, rightCols);\n  }\n  getColsForRow(rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n    const result = [];\n    let lastConsideredCol = null;\n    for (let i = 0; i < displayedColumns.length; i++) {\n      const col = displayedColumns[i];\n      const maxAllowedColSpan = displayedColumns.length - i;\n      const colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n      const columnsToCheckFilter = [col];\n      if (colSpan > 1) {\n        const colsToRemove = colSpan - 1;\n        for (let j = 1; j <= colsToRemove; j++) {\n          columnsToCheckFilter.push(displayedColumns[i + j]);\n        }\n        i += colsToRemove;\n      }\n      let filterPasses;\n      if (filterCallback) {\n        filterPasses = false;\n        columnsToCheckFilter.forEach((colForFilter) => {\n          if (filterCallback(colForFilter)) {\n            filterPasses = true;\n          }\n        });\n      } else {\n        filterPasses = true;\n      }\n      if (filterPasses) {\n        if (result.length === 0 && lastConsideredCol) {\n          const gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n          if (gapBeforeColumn) {\n            result.push(lastConsideredCol);\n          }\n        }\n        result.push(col);\n      }\n      lastConsideredCol = col;\n    }\n    return result;\n  }\n  getContainerWidth(pinned) {\n    switch (pinned) {\n      case \"left\":\n        return this.leftWidth;\n      case \"right\":\n        return this.rightWidth;\n      default:\n        return this.bodyWidth;\n    }\n  }\n  getColBefore(col) {\n    const allDisplayedColumns = this.allCols;\n    const oldIndex = allDisplayedColumns.indexOf(col);\n    if (oldIndex > 0) {\n      return allDisplayedColumns[oldIndex - 1];\n    }\n    return null;\n  }\n  isPinningLeft() {\n    return this.leftCols.length > 0;\n  }\n  isPinningRight() {\n    return this.rightCols.length > 0;\n  }\n  updateColsAndGroupsMap() {\n    this.colsAndGroupsMap = {};\n    const func = (child) => {\n      this.colsAndGroupsMap[child.getUniqueId()] = child;\n    };\n    depthFirstAllColumnTreeSearch(this.treeCenter, false, func);\n    depthFirstAllColumnTreeSearch(this.treeLeft, false, func);\n    depthFirstAllColumnTreeSearch(this.treeRight, false, func);\n  }\n  isVisible(item) {\n    const fromMap = this.colsAndGroupsMap[item.getUniqueId()];\n    return fromMap === item;\n  }\n  getFirstColumn() {\n    const isRtl = this.gos.get(\"enableRtl\");\n    const queryOrder = [\"leftCols\", \"centerCols\", \"rightCols\"];\n    if (isRtl) {\n      queryOrder.reverse();\n    }\n    for (let i = 0; i < queryOrder.length; i++) {\n      const container = this[queryOrder[i]];\n      if (container.length) {\n        return isRtl ? _last(container) : container[0];\n      }\n    }\n    return null;\n  }\n  // used by:\n  // + rowRenderer -> for navigation\n  getColAfter(col) {\n    const allDisplayedColumns = this.allCols;\n    const oldIndex = allDisplayedColumns.indexOf(col);\n    if (oldIndex < allDisplayedColumns.length - 1) {\n      return allDisplayedColumns[oldIndex + 1];\n    }\n    return null;\n  }\n  // used by:\n  // + angularGrid -> setting pinned body width\n  // note: this should be cached\n  getColsLeftWidth() {\n    return getWidthOfColsInList(this.leftCols);\n  }\n  // note: this should be cached\n  getDisplayedColumnsRightWidth() {\n    return getWidthOfColsInList(this.rightCols);\n  }\n  isColAtEdge(col, edge) {\n    const allColumns = this.allCols;\n    if (!allColumns.length) {\n      return false;\n    }\n    const isFirst = edge === \"first\";\n    let columnToCompare;\n    if (isColumnGroup(col)) {\n      const leafColumns = col.getDisplayedLeafColumns();\n      if (!leafColumns.length) {\n        return false;\n      }\n      columnToCompare = isFirst ? leafColumns[0] : _last(leafColumns);\n    } else {\n      columnToCompare = col;\n    }\n    return (isFirst ? allColumns[0] : _last(allColumns)) === columnToCompare;\n  }\n};\nfunction depthFirstAllColumnTreeSearch(tree, useDisplayedChildren, callback) {\n  if (!tree) {\n    return;\n  }\n  for (let i = 0; i < tree.length; i++) {\n    const child = tree[i];\n    if (isColumnGroup(child)) {\n      const childTree = useDisplayedChildren ? child.getDisplayedChildren() : child.getChildren();\n      depthFirstAllColumnTreeSearch(childTree, useDisplayedChildren, callback);\n    }\n    callback(child);\n  }\n}\nfunction pickDisplayedCols(tree) {\n  const res = [];\n  depthFirstAllColumnTreeSearch(tree, true, (child) => {\n    if (isColumn(child)) {\n      res.push(child);\n    }\n  });\n  return res;\n}\n\n// packages/ag-grid-community/src/columns/columnGroups/columnGroupService.ts\nvar ColumnGroupService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colGroupSvc\";\n  }\n  getColumnGroupState() {\n    const columnGroupState = [];\n    const gridBalancedTree = this.beans.colModel.getColTree();\n    depthFirstOriginalTreeSearch(null, gridBalancedTree, (node) => {\n      if (isProvidedColumnGroup(node)) {\n        columnGroupState.push({\n          groupId: node.getGroupId(),\n          open: node.isExpanded()\n        });\n      }\n    });\n    return columnGroupState;\n  }\n  resetColumnGroupState(source) {\n    const primaryColumnTree = this.beans.colModel.getColDefColTree();\n    if (!primaryColumnTree) {\n      return;\n    }\n    const stateItems = [];\n    depthFirstOriginalTreeSearch(null, primaryColumnTree, (child) => {\n      if (isProvidedColumnGroup(child)) {\n        const colGroupDef = child.getColGroupDef();\n        const groupState = {\n          groupId: child.getGroupId(),\n          open: !colGroupDef ? void 0 : colGroupDef.openByDefault\n        };\n        stateItems.push(groupState);\n      }\n    });\n    this.setColumnGroupState(stateItems, source);\n  }\n  setColumnGroupState(stateItems, source) {\n    const { colModel, colAnimation, visibleCols, eventSvc } = this.beans;\n    const gridBalancedTree = colModel.getColTree();\n    if (!gridBalancedTree.length) {\n      return;\n    }\n    colAnimation?.start();\n    const impactedGroups = [];\n    stateItems.forEach((stateItem) => {\n      const groupKey = stateItem.groupId;\n      const newValue = stateItem.open;\n      const providedColumnGroup = this.getProvidedColGroup(groupKey);\n      if (!providedColumnGroup) {\n        return;\n      }\n      if (providedColumnGroup.isExpanded() === newValue) {\n        return;\n      }\n      providedColumnGroup.setExpanded(newValue);\n      impactedGroups.push(providedColumnGroup);\n    });\n    visibleCols.refresh(source, true);\n    if (impactedGroups.length) {\n      eventSvc.dispatchEvent({\n        type: \"columnGroupOpened\",\n        columnGroup: impactedGroups.length === 1 ? impactedGroups[0] : void 0,\n        columnGroups: impactedGroups\n      });\n    }\n    colAnimation?.finish();\n  }\n  // called by headerRenderer - when a header is opened or closed\n  setColumnGroupOpened(key, newValue, source) {\n    let keyAsString;\n    if (isProvidedColumnGroup(key)) {\n      keyAsString = key.getId();\n    } else {\n      keyAsString = key || \"\";\n    }\n    this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n  }\n  getProvidedColGroup(key) {\n    let res = null;\n    depthFirstOriginalTreeSearch(null, this.beans.colModel.getColTree(), (node) => {\n      if (isProvidedColumnGroup(node)) {\n        if (node.getId() === key) {\n          res = node;\n        }\n      }\n    });\n    return res;\n  }\n  getGroupAtDirection(columnGroup, direction) {\n    const requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();\n    const colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();\n    const col = direction === \"After\" ? _last(colGroupLeafColumns) : colGroupLeafColumns[0];\n    const getDisplayColMethod = `getCol${direction}`;\n    while (true) {\n      const column = this.beans.visibleCols[getDisplayColMethod](col);\n      if (!column) {\n        return null;\n      }\n      const groupPointer = this.getColGroupAtLevel(column, requiredLevel);\n      if (groupPointer !== columnGroup) {\n        return groupPointer;\n      }\n    }\n  }\n  getColGroupAtLevel(column, level) {\n    let groupPointer = column.getParent();\n    let originalGroupLevel;\n    let groupPointerLevel;\n    while (true) {\n      const groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();\n      originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();\n      groupPointerLevel = groupPointer.getPaddingLevel();\n      if (originalGroupLevel + groupPointerLevel <= level) {\n        break;\n      }\n      groupPointer = groupPointer.getParent();\n    }\n    return groupPointer;\n  }\n  updateOpenClosedVisibility() {\n    const allColumnGroups = this.beans.visibleCols.getAllTrees();\n    depthFirstAllColumnTreeSearch(allColumnGroups, false, (child) => {\n      if (isColumnGroup(child)) {\n        child.calculateDisplayedColumns();\n      }\n    });\n  }\n  // returns the group with matching colId and instanceId. If instanceId is missing,\n  // matches only on the colId.\n  getColumnGroup(colId, partId) {\n    if (!colId) {\n      return null;\n    }\n    if (isColumnGroup(colId)) {\n      return colId;\n    }\n    const allColumnGroups = this.beans.visibleCols.getAllTrees();\n    const checkPartId = typeof partId === \"number\";\n    let result = null;\n    depthFirstAllColumnTreeSearch(allColumnGroups, false, (child) => {\n      if (isColumnGroup(child)) {\n        const columnGroup = child;\n        let matched;\n        if (checkPartId) {\n          matched = colId === columnGroup.getGroupId() && partId === columnGroup.getPartId();\n        } else {\n          matched = colId === columnGroup.getGroupId();\n        }\n        if (matched) {\n          result = columnGroup;\n        }\n      }\n    });\n    return result;\n  }\n  createColumnGroups(params) {\n    const { columns, idCreator, pinned, oldDisplayedGroups, isStandaloneStructure } = params;\n    const oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n    const topLevelResultCols = [];\n    let groupsOrColsAtCurrentLevel = columns;\n    while (groupsOrColsAtCurrentLevel.length) {\n      const currentlyIterating = groupsOrColsAtCurrentLevel;\n      groupsOrColsAtCurrentLevel = [];\n      let lastGroupedColIdx = 0;\n      const createGroupToIndex = (to) => {\n        const from = lastGroupedColIdx;\n        lastGroupedColIdx = to;\n        const previousNode = currentlyIterating[from];\n        const previousNodeProvided = isColumnGroup(previousNode) ? previousNode.getProvidedColumnGroup() : previousNode;\n        const previousNodeParent = previousNodeProvided.getOriginalParent();\n        if (previousNodeParent == null) {\n          for (let i = from; i < to; i++) {\n            topLevelResultCols.push(currentlyIterating[i]);\n          }\n          return;\n        }\n        const newGroup = this.createColumnGroup(\n          previousNodeParent,\n          idCreator,\n          oldColumnsMapped,\n          pinned,\n          isStandaloneStructure\n        );\n        for (let i = from; i < to; i++) {\n          newGroup.addChild(currentlyIterating[i]);\n        }\n        groupsOrColsAtCurrentLevel.push(newGroup);\n      };\n      for (let i = 1; i < currentlyIterating.length; i++) {\n        const thisNode = currentlyIterating[i];\n        const thisNodeProvided = isColumnGroup(thisNode) ? thisNode.getProvidedColumnGroup() : thisNode;\n        const thisNodeParent = thisNodeProvided.getOriginalParent();\n        const previousNode = currentlyIterating[lastGroupedColIdx];\n        const previousNodeProvided = isColumnGroup(previousNode) ? previousNode.getProvidedColumnGroup() : previousNode;\n        const previousNodeParent = previousNodeProvided.getOriginalParent();\n        if (thisNodeParent !== previousNodeParent) {\n          createGroupToIndex(i);\n        }\n      }\n      if (lastGroupedColIdx < currentlyIterating.length) {\n        createGroupToIndex(currentlyIterating.length);\n      }\n    }\n    if (!isStandaloneStructure) {\n      this.setupParentsIntoCols(topLevelResultCols, null);\n    }\n    return topLevelResultCols;\n  }\n  createProvidedColumnGroup(primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups, source) {\n    const groupId = columnKeyCreator.getUniqueKey(colGroupDef.groupId || null, null);\n    const colGroupDefMerged = createMergedColGroupDef(this.beans, colGroupDef, groupId);\n    const providedGroup = new AgProvidedColumnGroup(colGroupDefMerged, groupId, false, level);\n    this.createBean(providedGroup);\n    const existingGroupAndIndex = this.findExistingGroup(colGroupDef, existingGroups);\n    if (existingGroupAndIndex) {\n      existingGroups.splice(existingGroupAndIndex.idx, 1);\n    }\n    const existingGroup = existingGroupAndIndex?.group;\n    if (existingGroup) {\n      providedGroup.setExpanded(existingGroup.isExpanded());\n    }\n    const children = _recursivelyCreateColumns(\n      this.beans,\n      colGroupDefMerged.children,\n      level + 1,\n      primaryColumns,\n      existingColumns,\n      columnKeyCreator,\n      existingGroups,\n      source\n    );\n    providedGroup.setChildren(children);\n    return providedGroup;\n  }\n  balanceColumnTree(unbalancedTree, currentDepth, columnDepth, columnKeyCreator) {\n    const result = [];\n    for (let i = 0; i < unbalancedTree.length; i++) {\n      const child = unbalancedTree[i];\n      if (isProvidedColumnGroup(child)) {\n        const originalGroup = child;\n        const newChildren = this.balanceColumnTree(\n          originalGroup.getChildren(),\n          currentDepth + 1,\n          columnDepth,\n          columnKeyCreator\n        );\n        originalGroup.setChildren(newChildren);\n        result.push(originalGroup);\n      } else {\n        let firstPaddedGroup;\n        let currentPaddedGroup;\n        for (let j = columnDepth - 1; j >= currentDepth; j--) {\n          const newColId = columnKeyCreator.getUniqueKey(null, null);\n          const colGroupDefMerged = createMergedColGroupDef(this.beans, null, newColId);\n          const paddedGroup = new AgProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDepth);\n          this.createBean(paddedGroup);\n          if (currentPaddedGroup) {\n            currentPaddedGroup.setChildren([paddedGroup]);\n          }\n          currentPaddedGroup = paddedGroup;\n          if (!firstPaddedGroup) {\n            firstPaddedGroup = currentPaddedGroup;\n          }\n        }\n        if (firstPaddedGroup && currentPaddedGroup) {\n          result.push(firstPaddedGroup);\n          const hasGroups = unbalancedTree.some((leaf) => isProvidedColumnGroup(leaf));\n          if (hasGroups) {\n            currentPaddedGroup.setChildren([child]);\n            continue;\n          } else {\n            currentPaddedGroup.setChildren(unbalancedTree);\n            break;\n          }\n        }\n        result.push(child);\n      }\n    }\n    return result;\n  }\n  findDepth(balancedColumnTree) {\n    let depth = 0;\n    let pointer = balancedColumnTree;\n    while (pointer && pointer[0] && isProvidedColumnGroup(pointer[0])) {\n      depth++;\n      pointer = pointer[0].getChildren();\n    }\n    return depth;\n  }\n  findMaxDepth(treeChildren, depth) {\n    let maxDepthThisLevel = depth;\n    for (let i = 0; i < treeChildren.length; i++) {\n      const abstractColumn = treeChildren[i];\n      if (isProvidedColumnGroup(abstractColumn)) {\n        const originalGroup = abstractColumn;\n        const newDepth = this.findMaxDepth(originalGroup.getChildren(), depth + 1);\n        if (maxDepthThisLevel < newDepth) {\n          maxDepthThisLevel = newDepth;\n        }\n      }\n    }\n    return maxDepthThisLevel;\n  }\n  /**\n   * Inserts dummy group columns in the hierarchy above auto-generated columns\n   * in order to ensure auto-generated columns are leaf nodes (and therefore are\n   * displayed correctly)\n   */\n  balanceTreeForAutoCols(autoCols, depth) {\n    const tree = [];\n    autoCols.forEach((col) => {\n      let nextChild = col;\n      for (let i = depth - 1; i >= 0; i--) {\n        const autoGroup = new AgProvidedColumnGroup(null, `FAKE_PATH_${col.getId()}}_${i}`, true, i);\n        this.createBean(autoGroup);\n        autoGroup.setChildren([nextChild]);\n        nextChild.originalParent = autoGroup;\n        nextChild = autoGroup;\n      }\n      if (depth === 0) {\n        col.originalParent = null;\n      }\n      tree.push(nextChild);\n    });\n    return tree;\n  }\n  findExistingGroup(newGroupDef, existingGroups) {\n    const newHasId = newGroupDef.groupId != null;\n    if (!newHasId) {\n      return void 0;\n    }\n    for (let i = 0; i < existingGroups.length; i++) {\n      const existingGroup = existingGroups[i];\n      const existingDef = existingGroup.getColGroupDef();\n      if (!existingDef) {\n        continue;\n      }\n      if (existingGroup.getId() === newGroupDef.groupId) {\n        return { idx: i, group: existingGroup };\n      }\n    }\n    return void 0;\n  }\n  createColumnGroup(providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned, isStandaloneStructure) {\n    const groupId = providedGroup.getGroupId();\n    const instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n    const uniqueId = createUniqueColumnGroupId(groupId, instanceId);\n    let columnGroup = oldColumnsMapped[uniqueId];\n    if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {\n      columnGroup = null;\n    }\n    if (_exists(columnGroup)) {\n      columnGroup.reset();\n    } else {\n      columnGroup = new AgColumnGroup(providedGroup, groupId, instanceId, pinned);\n      if (!isStandaloneStructure) {\n        this.createBean(columnGroup);\n      }\n    }\n    return columnGroup;\n  }\n  // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n  mapOldGroupsById(displayedGroups) {\n    const result = {};\n    const recursive = (columnsOrGroups) => {\n      columnsOrGroups.forEach((columnOrGroup) => {\n        if (isColumnGroup(columnOrGroup)) {\n          const columnGroup = columnOrGroup;\n          result[columnOrGroup.getUniqueId()] = columnGroup;\n          recursive(columnGroup.getChildren());\n        }\n      });\n    };\n    if (displayedGroups) {\n      recursive(displayedGroups);\n    }\n    return result;\n  }\n  setupParentsIntoCols(columnsOrGroups, parent) {\n    columnsOrGroups.forEach((columnsOrGroup) => {\n      columnsOrGroup.parent = parent;\n      if (isColumnGroup(columnsOrGroup)) {\n        const columnGroup = columnsOrGroup;\n        this.setupParentsIntoCols(columnGroup.getChildren(), columnGroup);\n      }\n    });\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnGroups/columnGroupModule.ts\nvar ColumnGroupModule = {\n  moduleName: \"ColumnGroup\",\n  version: VERSION,\n  dynamicBeans: { headerGroupCellCtrl: HeaderGroupCellCtrl },\n  beans: [ColumnGroupService],\n  apiFunctions: {\n    getAllDisplayedColumnGroups,\n    getCenterDisplayedColumnGroups,\n    getColumnGroup,\n    getColumnGroupState,\n    getDisplayNameForColumnGroup,\n    getLeftDisplayedColumnGroups,\n    getProvidedColumnGroup,\n    getRightDisplayedColumnGroups,\n    resetColumnGroupState,\n    setColumnGroupOpened,\n    setColumnGroupState\n  }\n};\n\n// packages/ag-grid-community/src/rendering/cellRenderers/cellRendererModule.ts\nvar CheckboxCellRendererModule = {\n  moduleName: \"CheckboxCellRenderer\",\n  version: VERSION,\n  userComponents: {\n    agCheckboxCellRenderer: CheckboxCellRenderer\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnApi.ts\nfunction getColumnDef(beans, key) {\n  const column = beans.colModel.getColDefCol(key);\n  if (column) {\n    return column.getColDef();\n  }\n  return null;\n}\nfunction getColumnDefs(beans) {\n  return beans.colModel.getColumnDefs();\n}\nfunction getDisplayNameForColumn(beans, column, location) {\n  return beans.colNames.getDisplayNameForColumn(column, location) || \"\";\n}\nfunction getColumn(beans, key) {\n  return beans.colModel.getColDefCol(key);\n}\nfunction getColumns(beans) {\n  return beans.colModel.getColDefCols();\n}\nfunction applyColumnState(beans, params) {\n  return _applyColumnState(beans, params, \"api\");\n}\nfunction getColumnState(beans) {\n  return _getColumnState(beans);\n}\nfunction resetColumnState(beans) {\n  _resetColumnState(beans, \"api\");\n}\nfunction isPinning(beans) {\n  return beans.visibleCols.isPinningLeft() || beans.visibleCols.isPinningRight();\n}\nfunction isPinningLeft(beans) {\n  return beans.visibleCols.isPinningLeft();\n}\nfunction isPinningRight(beans) {\n  return beans.visibleCols.isPinningRight();\n}\nfunction getDisplayedColAfter(beans, col) {\n  return beans.visibleCols.getColAfter(col);\n}\nfunction getDisplayedColBefore(beans, col) {\n  return beans.visibleCols.getColBefore(col);\n}\nfunction setColumnsVisible(beans, keys, visible) {\n  beans.colModel.setColsVisible(keys, visible, \"api\");\n}\nfunction setColumnsPinned(beans, keys, pinned) {\n  beans.pinnedCols?.setColsPinned(keys, pinned, \"api\");\n}\nfunction getAllGridColumns(beans) {\n  return beans.colModel.getCols();\n}\nfunction getDisplayedLeftColumns(beans) {\n  return beans.visibleCols.leftCols;\n}\nfunction getDisplayedCenterColumns(beans) {\n  return beans.visibleCols.centerCols;\n}\nfunction getDisplayedRightColumns(beans) {\n  return beans.visibleCols.rightCols;\n}\nfunction getAllDisplayedColumns(beans) {\n  return beans.visibleCols.allCols;\n}\nfunction getAllDisplayedVirtualColumns(beans) {\n  return beans.colViewport.getViewportColumns();\n}\n\n// packages/ag-grid-community/src/columns/columnDefFactory.ts\nfunction _deepCloneDefinition(object, keysToSkip) {\n  if (!object) {\n    return;\n  }\n  const obj = object;\n  const res = {};\n  Object.keys(obj).forEach((key) => {\n    if (keysToSkip && keysToSkip.indexOf(key) >= 0 || SKIP_JS_BUILTINS.has(key)) {\n      return;\n    }\n    const value = obj[key];\n    const sourceIsSimpleObject = typeof value === \"object\" && value !== null && value.constructor === Object;\n    if (sourceIsSimpleObject) {\n      res[key] = _deepCloneDefinition(value);\n    } else {\n      res[key] = value;\n    }\n  });\n  return res;\n}\nvar ColumnDefFactory = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colDefFactory\";\n  }\n  wireBeans(beans) {\n    this.rowGroupColsSvc = beans.rowGroupColsSvc;\n    this.pivotColsSvc = beans.pivotColsSvc;\n  }\n  getColumnDefs(colDefColsList, showingPivotResult, lastOrder, colsList) {\n    const cols = colDefColsList.slice();\n    if (showingPivotResult) {\n      cols.sort((a, b) => lastOrder.indexOf(a) - lastOrder.indexOf(b));\n    } else if (lastOrder) {\n      cols.sort((a, b) => colsList.indexOf(a) - colsList.indexOf(b));\n    }\n    const rowGroupColumns = this.rowGroupColsSvc?.columns;\n    const pivotColumns = this.pivotColsSvc?.columns;\n    return this.buildColumnDefs(cols, rowGroupColumns, pivotColumns);\n  }\n  buildColumnDefs(cols, rowGroupColumns = [], pivotColumns = []) {\n    const res = [];\n    const colGroupDefs = {};\n    cols.forEach((col) => {\n      const colDef = this.createDefFromColumn(col, rowGroupColumns, pivotColumns);\n      let addToResult = true;\n      let childDef = colDef;\n      let pointer = col.getOriginalParent();\n      let lastPointer = null;\n      while (pointer) {\n        let parentDef = null;\n        if (pointer.isPadding()) {\n          pointer = pointer.getOriginalParent();\n          continue;\n        }\n        const existingParentDef = colGroupDefs[pointer.getGroupId()];\n        if (existingParentDef) {\n          existingParentDef.children.push(childDef);\n          addToResult = false;\n          break;\n        }\n        parentDef = this.createDefFromGroup(pointer);\n        if (parentDef) {\n          parentDef.children = [childDef];\n          colGroupDefs[parentDef.groupId] = parentDef;\n          childDef = parentDef;\n          pointer = pointer.getOriginalParent();\n        }\n        if (pointer != null && lastPointer === pointer) {\n          addToResult = false;\n          break;\n        }\n        lastPointer = pointer;\n      }\n      if (addToResult) {\n        res.push(childDef);\n      }\n    });\n    return res;\n  }\n  createDefFromGroup(group) {\n    const defCloned = _deepCloneDefinition(group.getColGroupDef(), [\"children\"]);\n    if (defCloned) {\n      defCloned.groupId = group.getGroupId();\n    }\n    return defCloned;\n  }\n  createDefFromColumn(col, rowGroupColumns, pivotColumns) {\n    const colDefCloned = _deepCloneDefinition(col.getColDef());\n    colDefCloned.colId = col.getColId();\n    colDefCloned.width = col.getActualWidth();\n    colDefCloned.rowGroup = col.isRowGroupActive();\n    colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;\n    colDefCloned.pivot = col.isPivotActive();\n    colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;\n    colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;\n    colDefCloned.hide = col.isVisible() ? void 0 : true;\n    colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;\n    colDefCloned.sort = col.getSort() ? col.getSort() : null;\n    colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;\n    return colDefCloned;\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnFlexService.ts\nvar ColumnFlexService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colFlex\";\n  }\n  refreshFlexedColumns(params = {}) {\n    const source = params.source ?? \"flex\";\n    if (params.viewportWidth != null) {\n      this.flexViewportWidth = params.viewportWidth;\n    }\n    const totalSpace = this.flexViewportWidth;\n    if (!totalSpace) {\n      return [];\n    }\n    const { visibleCols } = this.beans;\n    const visibleCenterCols = visibleCols.centerCols;\n    let flexAfterDisplayIndex = -1;\n    if (params.resizingCols) {\n      const allResizingCols = new Set(params.resizingCols);\n      for (let i = visibleCenterCols.length - 1; i >= 0; i--) {\n        if (allResizingCols.has(visibleCenterCols[i])) {\n          flexAfterDisplayIndex = i;\n          break;\n        }\n      }\n    }\n    let hasFlexItems = false;\n    const items = visibleCenterCols.map((col, i) => {\n      const flex = col.getFlex();\n      const isFlex = flex != null && flex > 0 && i > flexAfterDisplayIndex;\n      hasFlexItems || (hasFlexItems = isFlex);\n      return {\n        col,\n        isFlex,\n        flex: Math.max(0, flex ?? 0),\n        initialSize: col.getActualWidth(),\n        min: col.getMinWidth(),\n        max: col.getMaxWidth(),\n        targetSize: 0\n      };\n    });\n    if (!hasFlexItems) {\n      return [];\n    }\n    let unfrozenItemCount = items.length;\n    let unfrozenFlex = items.reduce((acc, item) => acc + item.flex, 0);\n    let unfrozenSpace = totalSpace;\n    const freeze = (item, width) => {\n      item.frozenSize = width;\n      item.col.setActualWidth(width, source);\n      unfrozenSpace -= width;\n      unfrozenFlex -= item.flex;\n      unfrozenItemCount -= 1;\n    };\n    const isFrozen = (item) => item.frozenSize != null;\n    for (const item of items) {\n      if (!item.isFlex) {\n        freeze(item, item.initialSize);\n      }\n    }\n    while (unfrozenItemCount > 0) {\n      const spaceToFill = Math.round(unfrozenFlex < 1 ? unfrozenSpace * unfrozenFlex : unfrozenSpace);\n      let lastUnfrozenItem;\n      let actualLeft = 0;\n      let idealRight = 0;\n      for (const item of items) {\n        if (isFrozen(item)) {\n          continue;\n        }\n        lastUnfrozenItem = item;\n        idealRight += spaceToFill * (item.flex / unfrozenFlex);\n        const idealSize = idealRight - actualLeft;\n        const roundedSize = Math.round(idealSize);\n        item.targetSize = roundedSize;\n        actualLeft += roundedSize;\n      }\n      if (lastUnfrozenItem) {\n        lastUnfrozenItem.targetSize += spaceToFill - actualLeft;\n      }\n      let totalViolation = 0;\n      for (const item of items) {\n        if (isFrozen(item)) {\n          continue;\n        }\n        const unclampedSize = item.targetSize;\n        const clampedSize = Math.min(Math.max(unclampedSize, item.min), item.max);\n        totalViolation += clampedSize - unclampedSize;\n        item.violationType = clampedSize === unclampedSize ? void 0 : clampedSize < unclampedSize ? \"max\" : \"min\";\n        item.targetSize = clampedSize;\n      }\n      const freezeType = totalViolation === 0 ? \"all\" : totalViolation > 0 ? \"min\" : \"max\";\n      for (const item of items) {\n        if (isFrozen(item)) {\n          continue;\n        }\n        if (freezeType === \"all\" || item.violationType === freezeType) {\n          freeze(item, item.targetSize);\n        }\n      }\n    }\n    if (!params.skipSetLeft) {\n      visibleCols.setLeftValues(source);\n    }\n    if (params.updateBodyWidths) {\n      visibleCols.updateBodyWidths();\n    }\n    const unconstrainedFlexColumns = items.filter((item) => item.isFlex && !item.violationType).map((item) => item.col);\n    if (params.fireResizedEvent) {\n      const changedColumns = items.filter((item) => item.initialSize !== item.frozenSize).map((item) => item.col);\n      const flexingColumns = items.filter((item) => item.flex).map((item) => item.col);\n      dispatchColumnResizedEvent(this.eventSvc, changedColumns, true, source, flexingColumns);\n    }\n    return unconstrainedFlexColumns;\n  }\n  initCol(column) {\n    const { flex, initialFlex } = column.colDef;\n    if (flex !== void 0) {\n      column.flex = flex;\n    } else if (initialFlex !== void 0) {\n      column.flex = initialFlex;\n    }\n  }\n  // this method should only be used by the colModel to\n  // change flex when required by the applyColumnState method.\n  setColFlex(column, flex) {\n    column.flex = flex ?? null;\n    column.dispatchStateUpdatedEvent(\"flex\");\n  }\n};\n\n// packages/ag-grid-community/src/columns/dataTypeService.ts\nvar DataTypeService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"dataTypeSvc\";\n    this.dataTypeDefinitions = {};\n    this.isPendingInference = false;\n    this.isColumnTypeOverrideInDataTypeDefinitions = false;\n    // keep track of any column state updates whilst waiting for data types to be inferred\n    this.columnStateUpdatesPendingInference = {};\n    this.columnStateUpdateListenerDestroyFuncs = [];\n  }\n  wireBeans(beans) {\n    this.colModel = beans.colModel;\n  }\n  postConstruct() {\n    this.processDataTypeDefinitions();\n    this.addManagedPropertyListener(\"dataTypeDefinitions\", (event) => {\n      this.processDataTypeDefinitions();\n      this.colModel.recreateColumnDefs(event);\n    });\n  }\n  processDataTypeDefinitions() {\n    const defaultDataTypes = this.getDefaultDataTypes();\n    const newDataTypeDefinitions = {};\n    this.dataTypeDefinitions = newDataTypeDefinitions;\n    const newFormatValueFuncs = {};\n    this.formatValueFuncs = newFormatValueFuncs;\n    const generateFormatValueFunc = (dataTypeDefinition) => {\n      return (params) => {\n        const { column, node, value } = params;\n        let valueFormatter = column.getColDef().valueFormatter;\n        if (valueFormatter === dataTypeDefinition.groupSafeValueFormatter) {\n          valueFormatter = dataTypeDefinition.valueFormatter;\n        }\n        return this.beans.valueSvc.formatValue(column, node, value, valueFormatter);\n      };\n    };\n    for (const cellDataType of Object.keys(defaultDataTypes)) {\n      const dataTypeDefinition = defaultDataTypes[cellDataType];\n      const mergedDataTypeDefinition = {\n        ...dataTypeDefinition,\n        groupSafeValueFormatter: createGroupSafeValueFormatter(dataTypeDefinition, this.gos)\n      };\n      newDataTypeDefinitions[cellDataType] = mergedDataTypeDefinition;\n      newFormatValueFuncs[cellDataType] = generateFormatValueFunc(mergedDataTypeDefinition);\n    }\n    const dataTypeDefinitions = this.gos.get(\"dataTypeDefinitions\") ?? {};\n    const newDataTypeMatchers = {};\n    this.dataTypeMatchers = newDataTypeMatchers;\n    for (const cellDataType of Object.keys(dataTypeDefinitions)) {\n      const dataTypeDefinition = dataTypeDefinitions[cellDataType];\n      const mergedDataTypeDefinition = this.processDataTypeDefinition(\n        dataTypeDefinition,\n        dataTypeDefinitions,\n        [cellDataType],\n        defaultDataTypes\n      );\n      if (mergedDataTypeDefinition) {\n        newDataTypeDefinitions[cellDataType] = mergedDataTypeDefinition;\n        if (dataTypeDefinition.dataTypeMatcher) {\n          newDataTypeMatchers[cellDataType] = dataTypeDefinition.dataTypeMatcher;\n        }\n        newFormatValueFuncs[cellDataType] = generateFormatValueFunc(mergedDataTypeDefinition);\n      }\n    }\n    this.checkObjectValueHandlers(defaultDataTypes);\n    [\"dateString\", \"text\", \"number\", \"boolean\", \"date\"].forEach((cellDataType) => {\n      const overriddenDataTypeMatcher = newDataTypeMatchers[cellDataType];\n      if (overriddenDataTypeMatcher) {\n        delete newDataTypeMatchers[cellDataType];\n      }\n      newDataTypeMatchers[cellDataType] = overriddenDataTypeMatcher ?? defaultDataTypes[cellDataType].dataTypeMatcher;\n    });\n  }\n  processDataTypeDefinition(dataTypeDefinition, dataTypeDefinitions, alreadyProcessedDataTypes, defaultDataTypes) {\n    let mergedDataTypeDefinition;\n    const extendsCellDataType = dataTypeDefinition.extendsDataType;\n    if (dataTypeDefinition.columnTypes) {\n      this.isColumnTypeOverrideInDataTypeDefinitions = true;\n    }\n    if (dataTypeDefinition.extendsDataType === dataTypeDefinition.baseDataType) {\n      let baseDataTypeDefinition = defaultDataTypes[extendsCellDataType];\n      const overriddenBaseDataTypeDefinition = dataTypeDefinitions[extendsCellDataType];\n      if (baseDataTypeDefinition && overriddenBaseDataTypeDefinition) {\n        baseDataTypeDefinition = overriddenBaseDataTypeDefinition;\n      }\n      if (!validateDataTypeDefinition(dataTypeDefinition, baseDataTypeDefinition, extendsCellDataType)) {\n        return void 0;\n      }\n      mergedDataTypeDefinition = mergeDataTypeDefinitions(baseDataTypeDefinition, dataTypeDefinition);\n    } else {\n      if (alreadyProcessedDataTypes.includes(extendsCellDataType)) {\n        _warn(44);\n        return void 0;\n      }\n      const extendedDataTypeDefinition = dataTypeDefinitions[extendsCellDataType];\n      if (!validateDataTypeDefinition(dataTypeDefinition, extendedDataTypeDefinition, extendsCellDataType)) {\n        return void 0;\n      }\n      const mergedExtendedDataTypeDefinition = this.processDataTypeDefinition(\n        extendedDataTypeDefinition,\n        dataTypeDefinitions,\n        [...alreadyProcessedDataTypes, extendsCellDataType],\n        defaultDataTypes\n      );\n      if (!mergedExtendedDataTypeDefinition) {\n        return void 0;\n      }\n      mergedDataTypeDefinition = mergeDataTypeDefinitions(mergedExtendedDataTypeDefinition, dataTypeDefinition);\n    }\n    return {\n      ...mergedDataTypeDefinition,\n      groupSafeValueFormatter: createGroupSafeValueFormatter(mergedDataTypeDefinition, this.gos)\n    };\n  }\n  updateColDefAndGetColumnType(colDef, userColDef, colId) {\n    let { cellDataType } = userColDef;\n    const { field } = userColDef;\n    if (cellDataType === void 0) {\n      cellDataType = colDef.cellDataType;\n    }\n    if (cellDataType == null || cellDataType === true) {\n      cellDataType = this.canInferCellDataType(colDef, userColDef) ? this.inferCellDataType(field, colId) : false;\n    }\n    if (!cellDataType) {\n      colDef.cellDataType = false;\n      return void 0;\n    }\n    const dataTypeDefinition = this.dataTypeDefinitions[cellDataType];\n    if (!dataTypeDefinition) {\n      _warn(47, { cellDataType });\n      return void 0;\n    }\n    colDef.cellDataType = cellDataType;\n    if (dataTypeDefinition.groupSafeValueFormatter) {\n      colDef.valueFormatter = dataTypeDefinition.groupSafeValueFormatter;\n    }\n    if (dataTypeDefinition.valueParser) {\n      colDef.valueParser = dataTypeDefinition.valueParser;\n    }\n    if (!dataTypeDefinition.suppressDefaultProperties) {\n      this.setColDefPropertiesForBaseDataType(colDef, cellDataType, dataTypeDefinition, colId);\n    }\n    return dataTypeDefinition.columnTypes;\n  }\n  addColumnListeners(column) {\n    if (!this.isPendingInference) {\n      return;\n    }\n    const columnStateUpdates = this.columnStateUpdatesPendingInference[column.getColId()];\n    if (!columnStateUpdates) {\n      return;\n    }\n    const columnListener = (event) => {\n      columnStateUpdates.add(event.key);\n    };\n    column.__addEventListener(\"columnStateUpdated\", columnListener);\n    this.columnStateUpdateListenerDestroyFuncs.push(\n      () => column.__removeEventListener(\"columnStateUpdated\", columnListener)\n    );\n  }\n  canInferCellDataType(colDef, userColDef) {\n    const { gos } = this;\n    if (!_isClientSideRowModel(gos)) {\n      return false;\n    }\n    const propsToCheckForInference = { cellRenderer: true, valueGetter: true, valueParser: true, refData: true };\n    if (doColDefPropsPreventInference(userColDef, propsToCheckForInference)) {\n      return false;\n    }\n    const columnTypes = userColDef.type === null ? colDef.type : userColDef.type;\n    if (columnTypes) {\n      const columnTypeDefs = gos.get(\"columnTypes\") ?? {};\n      const hasPropsPreventingInference = convertColumnTypes(columnTypes).some((columnType) => {\n        const columnTypeDef = columnTypeDefs[columnType.trim()];\n        return columnTypeDef && doColDefPropsPreventInference(columnTypeDef, propsToCheckForInference);\n      });\n      if (hasPropsPreventingInference) {\n        return false;\n      }\n    }\n    return !doColDefPropsPreventInference(colDef, propsToCheckForInference);\n  }\n  inferCellDataType(field, colId) {\n    if (!field) {\n      return void 0;\n    }\n    let value;\n    const initialData = this.getInitialData();\n    if (initialData) {\n      const fieldContainsDots = field.indexOf(\".\") >= 0 && !this.gos.get(\"suppressFieldDotNotation\");\n      value = _getValueUsingField(initialData, field, fieldContainsDots);\n    } else {\n      this.initWaitForRowData(colId);\n    }\n    if (value == null) {\n      return void 0;\n    }\n    return Object.keys(this.dataTypeMatchers).find((_cellDataType) => this.dataTypeMatchers[_cellDataType](value)) ?? \"object\";\n  }\n  getInitialData() {\n    const rowData = this.gos.get(\"rowData\");\n    if (rowData?.length) {\n      return rowData[0];\n    } else if (this.initialData) {\n      return this.initialData;\n    } else {\n      const rowNodes = this.beans.rowModel.rootNode?.allLeafChildren;\n      if (rowNodes?.length) {\n        return rowNodes[0].data;\n      }\n    }\n    return null;\n  }\n  initWaitForRowData(colId) {\n    this.columnStateUpdatesPendingInference[colId] = /* @__PURE__ */ new Set();\n    if (this.isPendingInference) {\n      return;\n    }\n    this.isPendingInference = true;\n    const columnTypeOverridesExist = this.isColumnTypeOverrideInDataTypeDefinitions;\n    const { colAutosize, eventSvc } = this.beans;\n    if (columnTypeOverridesExist && colAutosize) {\n      colAutosize.shouldQueueResizeOperations = true;\n    }\n    const [destroyFunc] = this.addManagedEventListeners({\n      rowDataUpdateStarted: (event) => {\n        const { firstRowData } = event;\n        if (!firstRowData) {\n          return;\n        }\n        destroyFunc?.();\n        this.isPendingInference = false;\n        this.processColumnsPendingInference(firstRowData, columnTypeOverridesExist);\n        this.columnStateUpdatesPendingInference = {};\n        if (columnTypeOverridesExist) {\n          colAutosize?.processResizeOperations();\n        }\n        eventSvc.dispatchEvent({\n          type: \"dataTypesInferred\"\n        });\n      }\n    });\n  }\n  processColumnsPendingInference(firstRowData, columnTypeOverridesExist) {\n    this.initialData = firstRowData;\n    const state = [];\n    this.destroyColumnStateUpdateListeners();\n    const newRowGroupColumnStateWithoutIndex = {};\n    const newPivotColumnStateWithoutIndex = {};\n    for (const colId of Object.keys(this.columnStateUpdatesPendingInference)) {\n      const columnStateUpdates = this.columnStateUpdatesPendingInference[colId];\n      const column = this.colModel.getCol(colId);\n      if (!column) {\n        return;\n      }\n      const oldColDef = column.getColDef();\n      if (!this.resetColDefIntoCol(column, \"cellDataTypeInferred\")) {\n        return;\n      }\n      const newColDef = column.getColDef();\n      if (columnTypeOverridesExist && newColDef.type && newColDef.type !== oldColDef.type) {\n        const updatedColumnState = getUpdatedColumnState(column, columnStateUpdates);\n        if (updatedColumnState.rowGroup && updatedColumnState.rowGroupIndex == null) {\n          newRowGroupColumnStateWithoutIndex[colId] = updatedColumnState;\n        }\n        if (updatedColumnState.pivot && updatedColumnState.pivotIndex == null) {\n          newPivotColumnStateWithoutIndex[colId] = updatedColumnState;\n        }\n        state.push(updatedColumnState);\n      }\n    }\n    if (columnTypeOverridesExist) {\n      state.push(\n        ...this.generateColumnStateForRowGroupAndPivotIndexes(\n          newRowGroupColumnStateWithoutIndex,\n          newPivotColumnStateWithoutIndex\n        )\n      );\n    }\n    if (state.length) {\n      _applyColumnState(this.beans, { state }, \"cellDataTypeInferred\");\n    }\n    this.initialData = null;\n  }\n  generateColumnStateForRowGroupAndPivotIndexes(updatedRowGroupColumnState, updatedPivotColumnState) {\n    const existingColumnStateUpdates = {};\n    const { rowGroupColsSvc, pivotColsSvc } = this.beans;\n    rowGroupColsSvc?.restoreColumnOrder(existingColumnStateUpdates, updatedRowGroupColumnState);\n    pivotColsSvc?.restoreColumnOrder(existingColumnStateUpdates, updatedPivotColumnState);\n    return Object.values(existingColumnStateUpdates);\n  }\n  resetColDefIntoCol(column, source) {\n    const userColDef = column.getUserProvidedColDef();\n    if (!userColDef) {\n      return false;\n    }\n    const newColDef = _addColumnDefaultAndTypes(this.beans, userColDef, column.getColId());\n    column.setColDef(newColDef, userColDef, source);\n    return true;\n  }\n  checkObjectValueHandlers(defaultDataTypes) {\n    const resolvedObjectDataTypeDefinition = this.dataTypeDefinitions.object;\n    const defaultObjectDataTypeDefinition = defaultDataTypes.object;\n    this.hasObjectValueParser = resolvedObjectDataTypeDefinition.valueParser !== defaultObjectDataTypeDefinition.valueParser;\n    this.hasObjectValueFormatter = resolvedObjectDataTypeDefinition.valueFormatter !== defaultObjectDataTypeDefinition.valueFormatter;\n  }\n  getDateStringTypeDefinition(column) {\n    const { dateString } = this.dataTypeDefinitions;\n    if (!column) {\n      return dateString;\n    }\n    return this.getDataTypeDefinition(column) ?? dateString;\n  }\n  getDateParserFunction(column) {\n    return this.getDateStringTypeDefinition(column).dateParser;\n  }\n  getDateFormatterFunction(column) {\n    return this.getDateStringTypeDefinition(column).dateFormatter;\n  }\n  getDataTypeDefinition(column) {\n    const colDef = column.getColDef();\n    if (!colDef.cellDataType) {\n      return void 0;\n    }\n    return this.dataTypeDefinitions[colDef.cellDataType];\n  }\n  getBaseDataType(column) {\n    return this.getDataTypeDefinition(column)?.baseDataType;\n  }\n  checkType(column, value) {\n    if (value == null) {\n      return true;\n    }\n    const dataTypeMatcher = this.getDataTypeDefinition(column)?.dataTypeMatcher;\n    if (!dataTypeMatcher) {\n      return true;\n    }\n    return dataTypeMatcher(value);\n  }\n  validateColDef(colDef) {\n    const warning = (property) => _warn(48, { property });\n    if (colDef.cellDataType === \"object\") {\n      const { object } = this.dataTypeDefinitions;\n      if (colDef.valueFormatter === object.groupSafeValueFormatter && !this.hasObjectValueFormatter) {\n        warning(\"Formatter\");\n      }\n      if (colDef.editable && colDef.valueParser === object.valueParser && !this.hasObjectValueParser) {\n        warning(\"Parser\");\n      }\n    }\n  }\n  getFormatValue(cellDataType) {\n    return this.formatValueFuncs[cellDataType];\n  }\n  isColPendingInference(colId) {\n    return this.isPendingInference && !!this.columnStateUpdatesPendingInference[colId];\n  }\n  setColDefPropertiesForBaseDataType(colDef, cellDataType, dataTypeDefinition, colId) {\n    const formatValue = this.formatValueFuncs[cellDataType];\n    switch (dataTypeDefinition.baseDataType) {\n      case \"number\": {\n        colDef.cellEditor = \"agNumberCellEditor\";\n        break;\n      }\n      case \"boolean\": {\n        colDef.cellEditor = \"agCheckboxCellEditor\";\n        colDef.cellRenderer = \"agCheckboxCellRenderer\";\n        colDef.getFindText = () => null;\n        colDef.suppressKeyboardEvent = (params) => !!params.colDef.editable && params.event.key === KeyCode.SPACE;\n        break;\n      }\n      case \"date\": {\n        colDef.cellEditor = \"agDateCellEditor\";\n        colDef.keyCreator = formatValue;\n        break;\n      }\n      case \"dateString\": {\n        colDef.cellEditor = \"agDateStringCellEditor\";\n        colDef.keyCreator = formatValue;\n        break;\n      }\n      case \"object\": {\n        colDef.cellEditorParams = {\n          useFormatter: true\n        };\n        colDef.comparator = (a, b) => {\n          const column = this.colModel.getColDefCol(colId);\n          const colDef2 = column?.getColDef();\n          if (!column || !colDef2) {\n            return 0;\n          }\n          const valA = a == null ? \"\" : formatValue({ column, node: null, value: a });\n          const valB = b == null ? \"\" : formatValue({ column, node: null, value: b });\n          if (valA === valB)\n            return 0;\n          return valA > valB ? 1 : -1;\n        };\n        colDef.keyCreator = formatValue;\n        break;\n      }\n    }\n    this.beans.filterManager?.setColDefPropertiesForDataType(colDef, dataTypeDefinition, formatValue);\n  }\n  getDefaultDataTypes() {\n    const defaultDateFormatMatcher = (value) => !!value.match(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\");\n    const translate = this.getLocaleTextFunc();\n    return {\n      number: {\n        baseDataType: \"number\",\n        // can be empty space with legacy copy\n        valueParser: (params) => params.newValue?.trim?.() === \"\" ? null : Number(params.newValue),\n        valueFormatter: (params) => {\n          if (params.value == null) {\n            return \"\";\n          }\n          if (typeof params.value !== \"number\" || isNaN(params.value)) {\n            return translate(\"invalidNumber\", \"Invalid Number\");\n          }\n          return String(params.value);\n        },\n        dataTypeMatcher: (value) => typeof value === \"number\"\n      },\n      text: {\n        baseDataType: \"text\",\n        valueParser: (params) => params.newValue === \"\" ? null : _toStringOrNull(params.newValue),\n        dataTypeMatcher: (value) => typeof value === \"string\"\n      },\n      boolean: {\n        baseDataType: \"boolean\",\n        valueParser: (params) => {\n          if (params.newValue == null) {\n            return params.newValue;\n          }\n          return params.newValue?.trim?.() === \"\" ? null : String(params.newValue).toLowerCase() === \"true\";\n        },\n        valueFormatter: (params) => params.value == null ? \"\" : String(params.value),\n        dataTypeMatcher: (value) => typeof value === \"boolean\"\n      },\n      date: {\n        baseDataType: \"date\",\n        valueParser: (params) => _parseDateTimeFromString(params.newValue == null ? null : String(params.newValue)),\n        valueFormatter: (params) => {\n          if (params.value == null) {\n            return \"\";\n          }\n          if (!(params.value instanceof Date) || isNaN(params.value.getTime())) {\n            return translate(\"invalidDate\", \"Invalid Date\");\n          }\n          return _serialiseDate(params.value, false) ?? \"\";\n        },\n        dataTypeMatcher: (value) => value instanceof Date\n      },\n      dateString: {\n        baseDataType: \"dateString\",\n        dateParser: (value) => _parseDateTimeFromString(value) ?? void 0,\n        dateFormatter: (value) => _serialiseDate(value ?? null, false) ?? void 0,\n        valueParser: (params) => defaultDateFormatMatcher(String(params.newValue)) ? params.newValue : null,\n        valueFormatter: (params) => defaultDateFormatMatcher(String(params.value)) ? params.value : \"\",\n        dataTypeMatcher: (value) => typeof value === \"string\" && defaultDateFormatMatcher(value)\n      },\n      object: {\n        baseDataType: \"object\",\n        valueParser: () => null,\n        valueFormatter: (params) => _toStringOrNull(params.value) ?? \"\"\n      }\n    };\n  }\n  destroyColumnStateUpdateListeners() {\n    this.columnStateUpdateListenerDestroyFuncs.forEach((destroyFunc) => destroyFunc());\n    this.columnStateUpdateListenerDestroyFuncs = [];\n  }\n  destroy() {\n    this.dataTypeDefinitions = {};\n    this.dataTypeMatchers = {};\n    this.formatValueFuncs = {};\n    this.columnStateUpdatesPendingInference = {};\n    this.destroyColumnStateUpdateListeners();\n    super.destroy();\n  }\n};\nfunction mergeDataTypeDefinitions(parentDataTypeDefinition, childDataTypeDefinition) {\n  const mergedDataTypeDefinition = {\n    ...parentDataTypeDefinition,\n    ...childDataTypeDefinition\n  };\n  if (parentDataTypeDefinition.columnTypes && childDataTypeDefinition.columnTypes && childDataTypeDefinition.appendColumnTypes) {\n    mergedDataTypeDefinition.columnTypes = [\n      ...convertColumnTypes(parentDataTypeDefinition.columnTypes),\n      ...convertColumnTypes(childDataTypeDefinition.columnTypes)\n    ];\n  }\n  return mergedDataTypeDefinition;\n}\nfunction validateDataTypeDefinition(dataTypeDefinition, parentDataTypeDefinition, parentCellDataType) {\n  if (!parentDataTypeDefinition) {\n    _warn(45, { parentCellDataType });\n    return false;\n  }\n  if (parentDataTypeDefinition.baseDataType !== dataTypeDefinition.baseDataType) {\n    _warn(46);\n    return false;\n  }\n  return true;\n}\nfunction createGroupSafeValueFormatter(dataTypeDefinition, gos) {\n  if (!dataTypeDefinition.valueFormatter) {\n    return void 0;\n  }\n  return (params) => {\n    if (params.node?.group) {\n      const aggFunc = (params.colDef.pivotValueColumn ?? params.column).getAggFunc();\n      if (aggFunc) {\n        if (aggFunc === \"first\" || aggFunc === \"last\") {\n          return dataTypeDefinition.valueFormatter(params);\n        }\n        if (dataTypeDefinition.baseDataType === \"number\" && aggFunc !== \"count\") {\n          if (typeof params.value === \"number\") {\n            return dataTypeDefinition.valueFormatter(params);\n          }\n          if (typeof params.value === \"object\") {\n            if (!params.value) {\n              return void 0;\n            }\n            if (\"toNumber\" in params.value) {\n              return dataTypeDefinition.valueFormatter({\n                ...params,\n                value: params.value.toNumber()\n              });\n            }\n            if (\"value\" in params.value) {\n              return dataTypeDefinition.valueFormatter({\n                ...params,\n                value: params.value.value\n              });\n            }\n          }\n        }\n        return void 0;\n      }\n      if (gos.get(\"groupDisplayType\") === \"groupRows\" && !gos.get(\"treeData\")) {\n        return void 0;\n      }\n    } else if (gos.get(\"groupHideOpenParents\") && params.column.isRowGroupActive()) {\n      if (typeof params.value === \"string\" && !dataTypeDefinition.dataTypeMatcher?.(params.value)) {\n        return void 0;\n      }\n    }\n    return dataTypeDefinition.valueFormatter(params);\n  };\n}\nfunction doesColDefPropPreventInference(colDef, checkProps, prop, comparisonValue) {\n  if (!checkProps[prop]) {\n    return false;\n  }\n  const value = colDef[prop];\n  if (value === null) {\n    checkProps[prop] = false;\n    return false;\n  } else {\n    return comparisonValue === void 0 ? !!value : value === comparisonValue;\n  }\n}\nfunction doColDefPropsPreventInference(colDef, propsToCheckForInference) {\n  return [\n    [\"cellRenderer\", \"agSparklineCellRenderer\"],\n    [\"valueGetter\", void 0],\n    [\"valueParser\", void 0],\n    [\"refData\", void 0]\n  ].some(\n    ([prop, comparisonValue]) => doesColDefPropPreventInference(colDef, propsToCheckForInference, prop, comparisonValue)\n  );\n}\nfunction getUpdatedColumnState(column, columnStateUpdates) {\n  const columnState = getColumnStateFromColDef(column);\n  columnStateUpdates.forEach((key) => {\n    delete columnState[key];\n    if (key === \"rowGroup\") {\n      delete columnState.rowGroupIndex;\n    } else if (key === \"pivot\") {\n      delete columnState.pivotIndex;\n    }\n  });\n  return columnState;\n}\n\n// packages/ag-grid-community/src/columns/columnModule.ts\nvar DataTypeModule = {\n  moduleName: \"DataType\",\n  version: VERSION,\n  beans: [DataTypeService],\n  dependsOn: [CheckboxCellRendererModule]\n};\nvar ColumnFlexModule = {\n  moduleName: \"ColumnFlex\",\n  version: VERSION,\n  beans: [ColumnFlexService]\n};\nvar ColumnApiModule = {\n  moduleName: \"ColumnApi\",\n  version: VERSION,\n  beans: [ColumnDefFactory],\n  apiFunctions: {\n    getColumnDef,\n    getDisplayNameForColumn,\n    getColumn,\n    getColumns,\n    applyColumnState,\n    getColumnState,\n    resetColumnState,\n    isPinning,\n    isPinningLeft,\n    isPinningRight,\n    getDisplayedColAfter,\n    getDisplayedColBefore,\n    setColumnsVisible,\n    setColumnsPinned,\n    getAllGridColumns,\n    getDisplayedLeftColumns,\n    getDisplayedCenterColumns,\n    getDisplayedRightColumns,\n    getAllDisplayedColumns,\n    getAllDisplayedVirtualColumns,\n    getColumnDefs\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnNameService.ts\nfunction _camelCaseToHumanText(camelCase) {\n  if (!camelCase || camelCase == null) {\n    return null;\n  }\n  const rex = /([a-z])([A-Z])/g;\n  const rexCaps = /([A-Z]+)([A-Z])([a-z])/g;\n  const words = camelCase.replace(rex, \"$1 $2\").replace(rexCaps, \"$1 $2$3\").replace(/\\./g, \" \").split(\" \");\n  return words.map((word) => word.substring(0, 1).toUpperCase() + (word.length > 1 ? word.substring(1, word.length) : \"\")).join(\" \");\n}\nvar ColumnNameService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colNames\";\n  }\n  getDisplayNameForColumn(column, location, includeAggFunc = false) {\n    if (!column) {\n      return null;\n    }\n    const headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n    const { aggColNameSvc } = this.beans;\n    if (includeAggFunc && aggColNameSvc) {\n      return aggColNameSvc.getHeaderName(column, headerName);\n    }\n    return headerName;\n  }\n  getDisplayNameForProvidedColumnGroup(columnGroup, providedColumnGroup, location) {\n    const colGroupDef = providedColumnGroup?.getColGroupDef();\n    if (colGroupDef) {\n      return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);\n    }\n    return null;\n  }\n  getDisplayNameForColumnGroup(columnGroup, location) {\n    return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);\n  }\n  // location is where the column is going to appear, ie who is calling us\n  getHeaderName(colDef, column, columnGroup, providedColumnGroup, location) {\n    const headerValueGetter = colDef.headerValueGetter;\n    if (headerValueGetter) {\n      const params = _addGridCommonParams(this.gos, {\n        colDef,\n        column,\n        columnGroup,\n        providedColumnGroup,\n        location\n      });\n      if (typeof headerValueGetter === \"function\") {\n        return headerValueGetter(params);\n      } else if (typeof headerValueGetter === \"string\") {\n        return this.beans.expressionSvc?.evaluate(headerValueGetter, params) ?? null;\n      }\n      return \"\";\n    } else if (colDef.headerName != null) {\n      return colDef.headerName;\n    } else if (colDef.field) {\n      return _camelCaseToHumanText(colDef.field);\n    }\n    return \"\";\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnViewportService.ts\nvar ColumnViewportService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colViewport\";\n    // cols in center that are in the viewport\n    this.colsWithinViewport = [];\n    // same as colsWithinViewport, except we always include columns with headerAutoHeight\n    this.headerColsWithinViewport = [];\n    // A hash key to keep track of changes in viewport columns\n    this.colsWithinViewportHash = \"\";\n    // all columns & groups to be rendered, index by row.\n    // used by header rows to get all items to render for that row.\n    this.rowsOfHeadersToRenderLeft = {};\n    this.rowsOfHeadersToRenderRight = {};\n    this.rowsOfHeadersToRenderCenter = {};\n  }\n  wireBeans(beans) {\n    this.visibleCols = beans.visibleCols;\n    this.colModel = beans.colModel;\n  }\n  postConstruct() {\n    this.suppressColumnVirtualisation = this.gos.get(\"suppressColumnVirtualisation\");\n  }\n  setScrollPosition(scrollWidth, scrollPosition, afterScroll = false) {\n    const { visibleCols } = this;\n    const bodyWidthDirty = visibleCols.isBodyWidthDirty;\n    const noChange = scrollWidth === this.scrollWidth && scrollPosition === this.scrollPosition && !bodyWidthDirty;\n    if (noChange) {\n      return;\n    }\n    this.scrollWidth = scrollWidth;\n    this.scrollPosition = scrollPosition;\n    visibleCols.isBodyWidthDirty = true;\n    if (this.gos.get(\"enableRtl\")) {\n      const bodyWidth = visibleCols.bodyWidth;\n      this.viewportLeft = bodyWidth - scrollPosition - scrollWidth;\n      this.viewportRight = bodyWidth - scrollPosition;\n    } else {\n      this.viewportLeft = scrollPosition;\n      this.viewportRight = scrollWidth + scrollPosition;\n    }\n    if (this.colModel.ready) {\n      this.checkViewportColumns(afterScroll);\n    }\n  }\n  getHeadersToRender(type, depth) {\n    let result;\n    switch (type) {\n      case \"left\":\n        result = this.rowsOfHeadersToRenderLeft[depth];\n        break;\n      case \"right\":\n        result = this.rowsOfHeadersToRenderRight[depth];\n        break;\n      default:\n        result = this.rowsOfHeadersToRenderCenter[depth];\n        break;\n    }\n    return result || [];\n  }\n  extractViewportColumns() {\n    const displayedColumnsCenter = this.visibleCols.centerCols;\n    if (this.isColumnVirtualisationSuppressed()) {\n      this.colsWithinViewport = displayedColumnsCenter;\n      this.headerColsWithinViewport = displayedColumnsCenter;\n    } else {\n      this.colsWithinViewport = displayedColumnsCenter.filter(this.isColumnInRowViewport.bind(this));\n      this.headerColsWithinViewport = displayedColumnsCenter.filter(this.isColumnInHeaderViewport.bind(this));\n    }\n  }\n  isColumnVirtualisationSuppressed() {\n    return this.suppressColumnVirtualisation || this.viewportRight === 0;\n  }\n  clear(suppressHashClear) {\n    this.rowsOfHeadersToRenderLeft = {};\n    this.rowsOfHeadersToRenderRight = {};\n    this.rowsOfHeadersToRenderCenter = {};\n    if (!suppressHashClear) {\n      this.colsWithinViewportHash = \"\";\n    }\n  }\n  isColumnInHeaderViewport(col) {\n    if (col.isAutoHeaderHeight() || isAnyParentAutoHeaderHeight(col)) {\n      return true;\n    }\n    return this.isColumnInRowViewport(col);\n  }\n  isColumnInRowViewport(col) {\n    if (col.isAutoHeight()) {\n      return true;\n    }\n    const columnLeft = col.getLeft() || 0;\n    const columnRight = columnLeft + col.getActualWidth();\n    const leftBounds = this.viewportLeft - 200;\n    const rightBounds = this.viewportRight + 200;\n    const columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n    const columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n    return !columnToMuchLeft && !columnToMuchRight;\n  }\n  // used by Grid API only\n  getViewportColumns() {\n    const { leftCols, rightCols } = this.visibleCols;\n    const res = this.colsWithinViewport.concat(leftCols).concat(rightCols);\n    return res;\n  }\n  // + rowRenderer\n  // if we are not column spanning, this just returns back the virtual centre columns,\n  // however if we are column spanning, then different rows can have different virtual\n  // columns, so we have to work out the list for each individual row.\n  getColsWithinViewport(rowNode) {\n    if (!this.colModel.colSpanActive) {\n      return this.colsWithinViewport;\n    }\n    const emptySpaceBeforeColumn = (col) => {\n      const left = col.getLeft();\n      return _exists(left) && left > this.viewportLeft;\n    };\n    const inViewportCallback = this.isColumnVirtualisationSuppressed() ? void 0 : this.isColumnInRowViewport.bind(this);\n    const { visibleCols } = this;\n    const displayedColumnsCenter = visibleCols.centerCols;\n    return visibleCols.getColsForRow(rowNode, displayedColumnsCenter, inViewportCallback, emptySpaceBeforeColumn);\n  }\n  // checks what columns are currently displayed due to column virtualisation. dispatches an event\n  // if the list of columns has changed.\n  // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n  checkViewportColumns(afterScroll = false) {\n    const viewportColumnsChanged = this.extractViewport();\n    if (viewportColumnsChanged) {\n      this.eventSvc.dispatchEvent({\n        type: \"virtualColumnsChanged\",\n        afterScroll\n      });\n    }\n  }\n  calculateHeaderRows() {\n    this.clear(true);\n    const renderedColIds = {};\n    const { leftCols, rightCols, treeLeft, treeRight, treeCenter } = this.visibleCols;\n    const allRenderedCols = this.headerColsWithinViewport.concat(leftCols).concat(rightCols);\n    allRenderedCols.forEach((col) => renderedColIds[col.getId()] = true);\n    const testGroup = (children, result, depth) => {\n      let returnValue = false;\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        let addThisItem = false;\n        if (isColumn(child)) {\n          addThisItem = renderedColIds[child.getId()] === true;\n        } else {\n          const columnGroup = child;\n          const displayedChildren = columnGroup.getDisplayedChildren();\n          if (displayedChildren) {\n            addThisItem = testGroup(displayedChildren, result, depth + 1);\n          }\n        }\n        if (addThisItem) {\n          returnValue = true;\n          if (!result[depth]) {\n            result[depth] = [];\n          }\n          result[depth].push(child);\n        }\n      }\n      return returnValue;\n    };\n    testGroup(treeLeft, this.rowsOfHeadersToRenderLeft, 0);\n    testGroup(treeRight, this.rowsOfHeadersToRenderRight, 0);\n    testGroup(treeCenter, this.rowsOfHeadersToRenderCenter, 0);\n  }\n  extractViewport() {\n    const hashColumn = (c) => `${c.getId()}-${c.getPinned() || \"normal\"}`;\n    this.extractViewportColumns();\n    const newHash = this.getViewportColumns().map(hashColumn).join(\"#\");\n    const changed = this.colsWithinViewportHash !== newHash;\n    if (changed) {\n      this.colsWithinViewportHash = newHash;\n      this.calculateHeaderRows();\n    }\n    return changed;\n  }\n};\nfunction isAnyParentAutoHeaderHeight(col) {\n  while (col) {\n    if (col.isAutoHeaderHeight()) {\n      return true;\n    }\n    col = col.getParent();\n  }\n  return false;\n}\n\n// packages/ag-grid-community/src/components/framework/agComponentUtils.ts\nvar AgComponentUtils = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"agCompUtils\";\n  }\n  adaptFunction(type, jsCompFunc) {\n    if (!type.cellRenderer) {\n      return null;\n    }\n    class Adapter {\n      refresh() {\n        return false;\n      }\n      getGui() {\n        return this.eGui;\n      }\n      init(params) {\n        const callbackResult = jsCompFunc(params);\n        const type2 = typeof callbackResult;\n        if (type2 === \"string\" || type2 === \"number\" || type2 === \"boolean\") {\n          this.eGui = _loadTemplate(\"<span>\" + callbackResult + \"</span>\");\n          return;\n        }\n        if (callbackResult == null) {\n          this.eGui = _createElement({ tag: \"span\" });\n          return;\n        }\n        this.eGui = callbackResult;\n      }\n    }\n    return Adapter;\n  }\n};\n\n// packages/ag-grid-community/src/components/framework/cellRendererFunctionModule.ts\nvar CellRendererFunctionModule = {\n  moduleName: \"CellRendererFunction\",\n  version: VERSION,\n  beans: [AgComponentUtils]\n};\n\n// packages/ag-grid-community/src/components/framework/registry.ts\nvar Registry = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"registry\";\n    this.agGridDefaults = {};\n    this.agGridDefaultParams = {};\n    this.jsComps = {};\n    this.dynamicBeans = {};\n    this.selectors = {};\n    this.icons = {};\n  }\n  postConstruct() {\n    const comps = this.gos.get(\"components\");\n    if (comps != null) {\n      for (const key of Object.keys(comps)) {\n        this.jsComps[key] = comps[key];\n      }\n    }\n  }\n  registerModule(module) {\n    const { icons, userComponents, dynamicBeans, selectors } = module;\n    if (userComponents) {\n      const registerUserComponent = (name, component, params) => {\n        this.agGridDefaults[name] = component;\n        if (params) {\n          this.agGridDefaultParams[name] = params;\n        }\n      };\n      for (const name of Object.keys(userComponents)) {\n        const comp = userComponents[name];\n        if (typeof comp === \"object\") {\n          registerUserComponent(name, comp.classImp, comp.params);\n        } else {\n          registerUserComponent(name, comp);\n        }\n      }\n    }\n    if (dynamicBeans) {\n      for (const name of Object.keys(dynamicBeans)) {\n        this.dynamicBeans[name] = dynamicBeans[name];\n      }\n    }\n    selectors?.forEach((selector) => {\n      this.selectors[selector.selector] = selector;\n    });\n    if (icons) {\n      for (const name of Object.keys(icons)) {\n        this.icons[name] = icons[name];\n      }\n    }\n  }\n  getUserComponent(propertyName, name) {\n    const createResult = (component, componentFromFramework, params) => ({\n      componentFromFramework,\n      component,\n      params\n    });\n    const { frameworkOverrides } = this.beans;\n    const registeredViaFrameworkComp = frameworkOverrides.frameworkComponent(name, this.gos.get(\"components\"));\n    if (registeredViaFrameworkComp != null) {\n      return createResult(registeredViaFrameworkComp, true);\n    }\n    const jsComponent = this.jsComps[name];\n    if (jsComponent) {\n      const isFwkComp = frameworkOverrides.isFrameworkComponent(jsComponent);\n      return createResult(jsComponent, isFwkComp);\n    }\n    const defaultComponent = this.agGridDefaults[name];\n    if (defaultComponent) {\n      return createResult(defaultComponent, false, this.agGridDefaultParams[name]);\n    }\n    this.beans.validation?.missingUserComponent(propertyName, name, this.agGridDefaults, this.jsComps);\n    return null;\n  }\n  createDynamicBean(name, mandatory, ...args) {\n    const BeanClass = this.dynamicBeans[name];\n    if (BeanClass == null) {\n      if (mandatory) {\n        throw new Error(_errMsg(256));\n      }\n      return void 0;\n    }\n    return new BeanClass(...args);\n  }\n  getSelector(name) {\n    return this.selectors[name];\n  }\n  getIcon(name) {\n    return this.icons[name];\n  }\n};\n\n// packages/ag-grid-community/src/ctrlsService.ts\nvar NUM_CTRLS = 23;\nvar CtrlsService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"ctrlsSvc\";\n    this.params = {};\n    this.ready = false;\n    this.readyCallbacks = [];\n  }\n  postConstruct() {\n    this.addEventListener(\n      \"ready\",\n      () => {\n        this.updateReady();\n        if (this.ready) {\n          this.readyCallbacks.forEach((c) => c(this.params));\n          this.readyCallbacks.length = 0;\n        }\n      },\n      this.beans.frameworkOverrides.runWhenReadyAsync?.() ?? false\n    );\n  }\n  updateReady() {\n    const values = Object.values(this.params);\n    this.ready = values.length === NUM_CTRLS && values.every((ctrl) => {\n      return ctrl?.isAlive() ?? false;\n    });\n  }\n  whenReady(caller, callback) {\n    if (this.ready) {\n      callback(this.params);\n    } else {\n      this.readyCallbacks.push(callback);\n    }\n    caller.addDestroyFunc(() => {\n      const index = this.readyCallbacks.indexOf(callback);\n      if (index >= 0) {\n        this.readyCallbacks.splice(index, 1);\n      }\n    });\n  }\n  register(ctrlType, ctrl) {\n    this.params[ctrlType] = ctrl;\n    this.updateReady();\n    if (this.ready) {\n      this.dispatchLocalEvent({ type: \"ready\" });\n    }\n    ctrl.addDestroyFunc(() => {\n      this.updateReady();\n    });\n  }\n  get(ctrlType) {\n    return this.params[ctrlType];\n  }\n  getGridBodyCtrl() {\n    return this.params.gridBodyCtrl;\n  }\n  getHeaderRowContainerCtrls() {\n    const { leftHeader, centerHeader, rightHeader } = this.params;\n    return [leftHeader, rightHeader, centerHeader];\n  }\n  getHeaderRowContainerCtrl(pinned) {\n    const params = this.params;\n    switch (pinned) {\n      case \"left\":\n        return params.leftHeader;\n      case \"right\":\n        return params.rightHeader;\n      default:\n        return params.centerHeader;\n    }\n  }\n  getScrollFeature() {\n    return this.getGridBodyCtrl().scrollFeature;\n  }\n};\n\n// packages/ag-grid-community/src/theming/core/core.css-GENERATED.ts\nvar coreCSS = (\n  /*css*/\n  `:where(.ag-root-wrapper,.ag-popup,.ag-dnd-ghost,.ag-chart),:where(.ag-root-wrapper,.ag-popup,.ag-dnd-ghost,.ag-chart) :where([class^=ag-]){box-sizing:border-box;&:after,&:before{box-sizing:border-box}&:where(div,span,label):focus-visible{box-shadow:inset var(--ag-focus-shadow);outline:none}}:where(.ag-root-wrapper,.ag-popup,.ag-dnd-ghost,.ag-chart) :where([class^=ag-]) ::-ms-clear{display:none}.ag-aria-description-container{border:0;z-index:9999;clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.ag-hidden{display:none!important}.ag-invisible{visibility:hidden!important}.ag-unselectable{-webkit-user-select:none;-moz-user-select:none;user-select:none}.ag-selectable{-webkit-user-select:text;-moz-user-select:text;user-select:text}.ag-tab-guard{display:block;height:0;position:absolute;width:0}:where(.ag-virtual-list-viewport) .ag-tab-guard{position:sticky}.ag-tab-guard-top{top:1px}.ag-tab-guard-bottom{bottom:1px}.ag-shake-left-to-right{animation-direction:alternate;animation-duration:.2s;animation-iteration-count:infinite;animation-name:ag-shake-left-to-right}@keyframes ag-shake-left-to-right{0%{padding-left:6px;padding-right:2px}to{padding-left:2px;padding-right:6px}}.ag-body-horizontal-scroll-viewport,.ag-body-vertical-scroll-viewport,.ag-body-viewport,.ag-center-cols-viewport,.ag-floating-bottom-viewport,.ag-floating-top-viewport,.ag-header-viewport,.ag-sticky-bottom-viewport,.ag-sticky-top-viewport,.ag-virtual-list-viewport{flex:1 1 auto;height:100%;min-width:0;overflow:hidden;position:relative}.ag-viewport{position:relative}.ag-spanning-container{position:absolute;top:0;z-index:1}.ag-body-viewport,.ag-center-cols-viewport,.ag-floating-bottom-viewport,.ag-floating-top-viewport,.ag-header-viewport,.ag-sticky-bottom-viewport,.ag-sticky-top-viewport{overflow-x:auto;-ms-overflow-style:none!important;scrollbar-width:none!important;&::-webkit-scrollbar{display:none!important}}.ag-body-viewport{display:flex;overflow-x:hidden;&:where(.ag-layout-normal){overflow-y:auto;-webkit-overflow-scrolling:touch}}.ag-floating-bottom-container,.ag-floating-top-container,.ag-sticky-bottom-container,.ag-sticky-top-container{min-height:1px}.ag-center-cols-viewport{min-height:100%;width:100%}.ag-body-horizontal-scroll-viewport{overflow-x:scroll}.ag-body-vertical-scroll-viewport{overflow-y:scroll}.ag-virtual-list-viewport{overflow:auto;width:100%}.ag-body-container,.ag-body-horizontal-scroll-container,.ag-body-vertical-scroll-container,.ag-center-cols-container,.ag-floating-bottom-container,.ag-floating-bottom-full-width-container,.ag-floating-top-container,.ag-full-width-container,.ag-header-container,.ag-pinned-left-cols-container,.ag-pinned-right-cols-container,.ag-sticky-bottom-container,.ag-sticky-top-container,.ag-virtual-list-container{position:relative}.ag-floating-bottom-container,.ag-floating-top-container,.ag-header-container,.ag-pinned-left-floating-bottom,.ag-pinned-left-floating-top,.ag-pinned-right-floating-bottom,.ag-pinned-right-floating-top,.ag-sticky-bottom-container,.ag-sticky-top-container{height:100%;white-space:nowrap}.ag-center-cols-container,.ag-pinned-right-cols-container{display:block}.ag-body-horizontal-scroll-container{height:100%}.ag-body-vertical-scroll-container{width:100%}.ag-floating-bottom-full-width-container,.ag-floating-top-full-width-container,.ag-full-width-container,.ag-sticky-bottom-full-width-container,.ag-sticky-top-full-width-container{pointer-events:none;position:absolute;top:0}:where(.ag-ltr) .ag-floating-bottom-full-width-container,:where(.ag-ltr) .ag-floating-top-full-width-container,:where(.ag-ltr) .ag-full-width-container,:where(.ag-ltr) .ag-sticky-bottom-full-width-container,:where(.ag-ltr) .ag-sticky-top-full-width-container{left:0}:where(.ag-rtl) .ag-floating-bottom-full-width-container,:where(.ag-rtl) .ag-floating-top-full-width-container,:where(.ag-rtl) .ag-full-width-container,:where(.ag-rtl) .ag-sticky-bottom-full-width-container,:where(.ag-rtl) .ag-sticky-top-full-width-container{right:0}.ag-full-width-container{width:100%}.ag-floating-bottom-full-width-container,.ag-floating-top-full-width-container{display:inline-block;height:100%;overflow:hidden;width:100%}.ag-virtual-list-container{overflow:hidden}.ag-body{display:flex;flex:1 1 auto;flex-direction:row!important;min-height:0;position:relative}.ag-body-horizontal-scroll,.ag-body-vertical-scroll{display:flex;min-height:0;min-width:0;position:relative;&:where(.ag-scrollbar-invisible){bottom:0;position:absolute;&:where(.ag-apple-scrollbar){opacity:0;transition:opacity .4s;visibility:hidden;&:where(.ag-scrollbar-scrolling,.ag-scrollbar-active){opacity:1;visibility:visible}}}}.ag-body-horizontal-scroll{width:100%;&:where(.ag-scrollbar-invisible){left:0;right:0}}.ag-body-vertical-scroll{height:100%;&:where(.ag-scrollbar-invisible){top:0;z-index:10}}:where(.ag-ltr) .ag-body-vertical-scroll{&:where(.ag-scrollbar-invisible){right:0}}:where(.ag-rtl) .ag-body-vertical-scroll{&:where(.ag-scrollbar-invisible){left:0}}.ag-force-vertical-scroll{overflow-y:scroll!important}.ag-horizontal-left-spacer,.ag-horizontal-right-spacer{height:100%;min-width:0;overflow-x:scroll;&:where(.ag-scroller-corner){overflow-x:hidden}}:where(.ag-row-animation) .ag-row{transition:transform .4s,top .4s,opacity .2s;&:where(.ag-after-created){transition:transform .4s,top .4s,height .4s,opacity .2s}}:where(.ag-row-animation.ag-prevent-animation) .ag-row{transition:none!important;&:where(.ag-row.ag-after-created){transition:none!important}}:where(.ag-row-no-animation) .ag-row{transition:none}.ag-row-loading{align-items:center;display:flex}.ag-row-position-absolute{position:absolute}.ag-row-position-relative{position:relative}.ag-full-width-row{overflow:hidden;pointer-events:all}.ag-row-inline-editing{z-index:1}.ag-row-dragging{z-index:2}.ag-stub-cell{align-items:center;display:flex}.ag-cell{display:inline-block;height:100%;position:absolute;white-space:nowrap;&:focus-visible{box-shadow:none}}.ag-cell-value{flex:1 1 auto}.ag-cell-value,.ag-group-value{overflow:hidden;text-overflow:ellipsis}.ag-cell-wrap-text{white-space:normal;word-break:break-word}:where(.ag-cell) .ag-icon{display:inline-block;vertical-align:middle}.ag-floating-top{display:flex;overflow:hidden;position:relative;white-space:nowrap;width:100%}:where(.ag-floating-top:not(.ag-invisible)){border-bottom:var(--ag-pinned-row-border)}.ag-floating-bottom{display:flex;overflow:hidden;position:relative;white-space:nowrap;width:100%}:where(.ag-floating-bottom:not(.ag-invisible)){border-top:var(--ag-pinned-row-border)}.ag-sticky-bottom,.ag-sticky-top{background-color:var(--ag-background-color);display:flex;height:0;overflow:hidden;position:absolute;width:100%;z-index:1}.ag-opacity-zero{opacity:0!important}.ag-cell-label-container{align-items:center;display:flex;flex-direction:row-reverse;height:100%;justify-content:space-between;width:100%}:where(.ag-right-aligned-header){.ag-cell-label-container{flex-direction:row}.ag-header-cell-text{text-align:end}}.ag-column-group-icons{display:block;>*{cursor:pointer}}:where(.ag-ltr){direction:ltr;.ag-body,.ag-body-horizontal-scroll,.ag-body-viewport,.ag-floating-bottom,.ag-floating-top,.ag-header,.ag-sticky-bottom,.ag-sticky-top{flex-direction:row}}:where(.ag-rtl){direction:rtl;text-align:right;.ag-body,.ag-body-horizontal-scroll,.ag-body-viewport,.ag-floating-bottom,.ag-floating-top,.ag-header,.ag-sticky-bottom,.ag-sticky-top{flex-direction:row-reverse}.ag-icon-contracted,.ag-icon-expanded,.ag-icon-tree-closed{display:block}}:where(.ag-rtl){.ag-icon-contracted,.ag-icon-expanded,.ag-icon-tree-closed{transform:rotate(180deg)}}:where(.ag-rtl){.ag-icon-contracted,.ag-icon-expanded,.ag-icon-tree-closed{transform:rotate(-180deg)}}.ag-measurement-container{height:0;overflow:hidden;visibility:hidden;width:0}.ag-measurement-element-border{display:inline-block;&:before{border-left:var(--ag-internal-measurement-border);content:\"\";display:block}}.ag-group{position:relative;width:100%}.ag-group-title-bar{align-items:center;display:flex;padding:var(--ag-spacing)}.ag-group-title{display:inline;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:where(.ag-group-title-bar) .ag-group-title{cursor:default}.ag-group-toolbar{align-items:center;display:flex;padding:var(--ag-spacing)}.ag-group-container{display:flex}.ag-disabled .ag-group-container{pointer-events:none}.ag-disabled-group-container,.ag-disabled-group-title-bar{opacity:.5}.ag-group-container-horizontal{flex-flow:row wrap}.ag-group-container-vertical{flex-direction:column}.ag-group-title-bar-icon{cursor:pointer;flex:none}:where(.ag-ltr) .ag-group-title-bar-icon{margin-right:var(--ag-spacing)}:where(.ag-rtl) .ag-group-title-bar-icon{margin-left:var(--ag-spacing)}:where(.ag-group-item-alignment-stretch) .ag-group-item{align-items:stretch}:where(.ag-group-item-alignment-start) .ag-group-item{align-items:flex-start}:where(.ag-group-item-alignment-end) .ag-group-item{align-items:flex-end}.ag-popup-child{top:0;z-index:5;&:where(:not(.ag-tooltip-custom)){box-shadow:var(--ag-popup-shadow)}}.ag-popup-editor{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ag-large-text-input{display:block}:where(.ag-ltr) .ag-row:not(.ag-row-level-0) .ag-pivot-leaf-group{margin-left:var(--ag-row-group-indent-size)}:where(.ag-rtl) .ag-row:not(.ag-row-level-0) .ag-pivot-leaf-group{margin-right:var(--ag-row-group-indent-size)}:where(.ag-ltr) .ag-row-group-leaf-indent{margin-left:calc(var(--ag-cell-widget-spacing) + var(--ag-icon-size))}:where(.ag-rtl) .ag-row-group-leaf-indent{margin-right:calc(var(--ag-cell-widget-spacing) + var(--ag-icon-size))}.ag-value-change-delta{padding:0 2px}.ag-value-change-delta-up{color:var(--ag-value-change-delta-up-color)}.ag-value-change-delta-down{color:var(--ag-value-change-delta-down-color)}.ag-value-change-value{background-color:transparent;border-radius:1px;padding-left:1px;padding-right:1px;transition:background-color 1s}.ag-value-change-value-highlight{background-color:var(--ag-value-change-value-highlight-background-color);transition:background-color .1s}.ag-cell-data-changed{background-color:var(--ag-value-change-value-highlight-background-color)!important}.ag-cell-data-changed-animation{background-color:transparent}.ag-cell-highlight{background-color:var(--ag-range-selection-highlight-color)!important}.ag-row,.ag-spanned-row{color:var(--ag-cell-text-color);font-family:var(--ag-cell-font-family);font-size:var(--ag-data-font-size);white-space:nowrap;--ag-internal-content-line-height:calc(min(var(--ag-row-height), var(--ag-line-height, 1000px)) - var(--ag-internal-row-border-width, 1px) - 2px)}.ag-row{background-color:var(--ag-background-color);border-bottom:var(--ag-row-border);height:var(--ag-row-height);width:100%}:where(.ag-body-vertical-content-no-gap>div>div>div,.ag-body-vertical-content-no-gap>div>div>div>div)>.ag-row-last{border-bottom-color:transparent}.ag-sticky-bottom{border-top:var(--ag-row-border);box-sizing:content-box!important}.ag-group-contracted,.ag-group-expanded{cursor:pointer}.ag-cell,.ag-full-width-row .ag-cell-wrapper.ag-row-group{border:1px solid transparent;line-height:var(--ag-internal-content-line-height);-webkit-font-smoothing:subpixel-antialiased}:where(.ag-ltr) .ag-cell{border-right:var(--ag-column-border)}:where(.ag-rtl) .ag-cell{border-left:var(--ag-column-border)}.ag-spanned-cell-wrapper{background-color:var(--ag-background-color);position:absolute}.ag-spanned-cell-wrapper>.ag-spanned-cell{display:block;position:relative}:where(.ag-ltr) :where(.ag-body-horizontal-content-no-gap) .ag-column-last{border-right-color:transparent}:where(.ag-rtl) :where(.ag-body-horizontal-content-no-gap) .ag-column-last{border-left-color:transparent}.ag-cell-wrapper{align-items:center;display:flex;>:where(:not(.ag-cell-value,.ag-group-value)){align-items:center;display:flex;height:var(--ag-internal-content-line-height)}&:where(.ag-row-group){align-items:flex-start}:where(.ag-full-width-row) &:where(.ag-row-group){align-items:center;height:100%}}:where(.ag-ltr) .ag-cell-wrapper{padding-left:calc(var(--ag-indentation-level)*var(--ag-row-group-indent-size))}:where(.ag-rtl) .ag-cell-wrapper{padding-right:calc(var(--ag-indentation-level)*var(--ag-row-group-indent-size))}:where(.ag-cell-wrap-text:not(.ag-cell-auto-height)) .ag-cell-wrapper{align-items:normal;height:100%;:where(.ag-cell-value){height:100%}}:where(.ag-ltr) .ag-row>.ag-cell-wrapper.ag-row-group{padding-left:calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size)*var(--ag-indentation-level))}:where(.ag-rtl) .ag-row>.ag-cell-wrapper.ag-row-group{padding-right:calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size)*var(--ag-indentation-level))}.ag-cell-focus:not(.ag-cell-range-selected):focus-within,.ag-cell-range-single-cell,.ag-cell-range-single-cell.ag-cell-range-handle,.ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),.ag-context-menu-open .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,.ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group{border:1px solid;border-color:var(--ag-range-selection-border-color);border-style:var(--ag-range-selection-border-style);outline:initial}.ag-full-width-row.ag-row-focus:focus{box-shadow:none}:where(.ag-ltr) .ag-group-contracted,:where(.ag-ltr) .ag-group-expanded,:where(.ag-ltr) .ag-row-drag,:where(.ag-ltr) .ag-selection-checkbox{margin-right:var(--ag-cell-widget-spacing)}:where(.ag-rtl) .ag-group-contracted,:where(.ag-rtl) .ag-group-expanded,:where(.ag-rtl) .ag-row-drag,:where(.ag-rtl) .ag-selection-checkbox{margin-left:var(--ag-cell-widget-spacing)}:where(.ag-ltr) .ag-group-child-count{margin-left:3px}:where(.ag-rtl) .ag-group-child-count{margin-right:3px}.ag-row-highlight-above:after,.ag-row-highlight-below:after{background-color:var(--ag-range-selection-border-color);content:\"\";height:1px;position:absolute;width:calc(100% - 1px)}:where(.ag-ltr) .ag-row-highlight-above:after,:where(.ag-ltr) .ag-row-highlight-below:after{left:1px}:where(.ag-rtl) .ag-row-highlight-above:after,:where(.ag-rtl) .ag-row-highlight-below:after{right:1px}.ag-row-highlight-above:after{top:0}.ag-row-highlight-below:after{bottom:0}.ag-row-odd{background-color:var(--ag-odd-row-background-color)}.ag-row-selected:before{background-color:var(--ag-selected-row-background-color);content:\"\";display:block;inset:0;pointer-events:none;position:absolute}.ag-row-hover.ag-full-width-row.ag-row-group:before,.ag-row-hover:not(.ag-full-width-row):before{background-color:var(--ag-row-hover-color);content:\"\";display:block;inset:0;pointer-events:none;position:absolute}.ag-row-hover.ag-row-selected:before{background-color:var(--ag-row-hover-color);background-image:linear-gradient(var(--ag-selected-row-background-color),var(--ag-selected-row-background-color))}.ag-row.ag-full-width-row.ag-row-group>*{position:relative}.ag-column-hover{background-color:var(--ag-column-hover-color)}.ag-header-range-highlight{background-color:var(--ag-range-header-highlight-color)}.ag-right-aligned-cell{font-variant-numeric:tabular-nums}:where(.ag-ltr) .ag-right-aligned-cell{text-align:right}:where(.ag-rtl) .ag-right-aligned-cell{text-align:left}.ag-right-aligned-cell .ag-cell-value,.ag-right-aligned-cell .ag-group-value{margin-left:auto}:where(.ag-ltr) .ag-cell:not(.ag-cell-inline-editing),:where(.ag-ltr) .ag-full-width-row .ag-cell-wrapper.ag-row-group{padding-left:calc(var(--ag-cell-horizontal-padding) - 1px + var(--ag-row-group-indent-size)*var(--ag-indentation-level));padding-right:calc(var(--ag-cell-horizontal-padding) - 1px)}:where(.ag-rtl) .ag-cell:not(.ag-cell-inline-editing),:where(.ag-rtl) .ag-full-width-row .ag-cell-wrapper.ag-row-group{padding-left:calc(var(--ag-cell-horizontal-padding) - 1px);padding-right:calc(var(--ag-cell-horizontal-padding) - 1px + var(--ag-row-group-indent-size)*var(--ag-indentation-level))}.ag-row>.ag-cell-wrapper{padding-left:calc(var(--ag-cell-horizontal-padding) - 1px);padding-right:calc(var(--ag-cell-horizontal-padding) - 1px)}.ag-row-dragging{cursor:move;opacity:.5}.ag-details-row{background-color:var(--ag-background-color);padding:calc(var(--ag-spacing)*3.75)}.ag-layout-auto-height,.ag-layout-print{.ag-center-cols-container,.ag-center-cols-viewport{min-height:150px}}.ag-overlay-loading-wrapper{background-color:var(--ag-modal-overlay-background-color)}.ag-skeleton-container{align-content:center;height:100%;width:100%}.ag-skeleton-effect{animation:ag-skeleton-loading 1.5s ease-in-out .5s infinite;background-color:var(--ag-row-loading-skeleton-effect-color);border-radius:.25rem;height:1em;width:100%}:where(.ag-ltr) .ag-right-aligned-cell .ag-skeleton-effect{margin-left:auto}:where(.ag-rtl) .ag-right-aligned-cell .ag-skeleton-effect{margin-right:auto}@keyframes ag-skeleton-loading{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.ag-loading{align-items:center;display:flex;height:100%}:where(.ag-ltr) .ag-loading{padding-left:var(--ag-cell-horizontal-padding)}:where(.ag-rtl) .ag-loading{padding-right:var(--ag-cell-horizontal-padding)}:where(.ag-ltr) .ag-loading-icon{padding-right:var(--ag-cell-widget-spacing)}:where(.ag-rtl) .ag-loading-icon{padding-left:var(--ag-cell-widget-spacing)}.ag-icon-loading{animation-duration:1s;animation-iteration-count:infinite;animation-name:spin;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ag-input-wrapper,.ag-picker-field-wrapper{align-items:center;display:flex;flex:1 1 auto;line-height:normal;position:relative}.ag-input-field{align-items:center;display:flex;flex-direction:row}.ag-input-field-input:where(:not([type=checkbox],[type=radio])){flex:1 1 auto;min-width:0;width:100%}.ag-header{background-color:var(--ag-header-background-color);border-bottom:var(--ag-header-row-border);color:var(--ag-header-text-color);display:flex;font-family:var(--ag-header-font-family);font-size:var(--ag-header-font-size);font-weight:var(--ag-header-font-weight);overflow:hidden;white-space:nowrap;width:100%}.ag-header-row{height:var(--ag-header-height);position:absolute}.ag-floating-filter-button-button,.ag-header-cell-filter-button,.ag-header-cell-menu-button,.ag-header-expand-icon,.ag-panel-title-bar-button,:where(.ag-header-cell-sortable) .ag-header-cell-label{cursor:pointer}:where(.ag-ltr) .ag-header-expand-icon{margin-left:4px}:where(.ag-rtl) .ag-header-expand-icon{margin-right:4px}.ag-header-row:where(:not(:first-child)){:where(.ag-header-cell:not(.ag-header-span-height.ag-header-span-total,.ag-header-parent-hidden),.ag-header-group-cell.ag-header-group-cell-with-group){border-top:var(--ag-header-row-border)}}.ag-header-row:where(:not(.ag-header-row-column-group)){overflow:hidden}:where(.ag-header.ag-header-allow-overflow) .ag-header-row{overflow:visible}.ag-header-cell{display:inline-flex;overflow:hidden}.ag-header-group-cell{contain:paint;display:flex}.ag-header-cell,.ag-header-group-cell{align-items:center;gap:var(--ag-cell-widget-spacing);height:100%;padding:0 var(--ag-cell-horizontal-padding);position:absolute}@property --ag-internal-moving-color{syntax:\"<color>\";inherits:false;initial-value:transparent}@property --ag-internal-hover-color{syntax:\"<color>\";inherits:false;initial-value:transparent}.ag-header-cell:where(:not(.ag-floating-filter)),.ag-header-group-cell{&:before{background-image:linear-gradient(var(--ag-internal-hover-color),var(--ag-internal-hover-color)),linear-gradient(var(--ag-internal-moving-color),var(--ag-internal-moving-color));content:\"\";inset:0;position:absolute;--ag-internal-moving-color:transparent;--ag-internal-hover-color:transparent;transition:--ag-internal-moving-color var(--ag-header-cell-background-transition-duration),--ag-internal-hover-color var(--ag-header-cell-background-transition-duration)}&:where(:hover):before{--ag-internal-hover-color:var(--ag-header-cell-hover-background-color)}&:where(.ag-header-cell-moving):before{--ag-internal-moving-color:var(--ag-header-cell-moving-background-color);--ag-internal-hover-color:var(--ag-header-cell-hover-background-color)}}:where(.ag-header-cell:not(.ag-floating-filter) *,.ag-header-group-cell *){position:relative;z-index:1}.ag-header-cell-menu-button:where(:not(.ag-header-menu-always-show)){opacity:0;transition:opacity .2s}.ag-header-cell-filter-button,:where(.ag-header-cell.ag-header-active) .ag-header-cell-menu-button{opacity:1}.ag-header-cell-label,.ag-header-group-cell-label{align-items:center;align-self:stretch;display:flex;flex:1 1 auto;overflow:hidden;padding:5px 0}:where(.ag-ltr) .ag-sort-indicator-icon{padding-left:var(--ag-spacing)}:where(.ag-rtl) .ag-sort-indicator-icon{padding-right:var(--ag-spacing)}.ag-header-cell-label{text-overflow:ellipsis}.ag-header-group-cell-label.ag-sticky-label{flex:none;max-width:100%;overflow:visible;position:sticky}:where(.ag-ltr) .ag-header-group-cell-label.ag-sticky-label{left:var(--ag-cell-horizontal-padding)}:where(.ag-rtl) .ag-header-group-cell-label.ag-sticky-label{right:var(--ag-cell-horizontal-padding)}.ag-header-cell-text,.ag-header-group-text{overflow:hidden;text-overflow:ellipsis}.ag-header-cell-text{word-break:break-word}.ag-header-cell-comp-wrapper{width:100%}:where(.ag-header-group-cell) .ag-header-cell-comp-wrapper{display:flex}:where(.ag-header-cell:not(.ag-header-cell-auto-height)) .ag-header-cell-comp-wrapper{align-items:center;display:flex;height:100%}.ag-header-cell-wrap-text .ag-header-cell-comp-wrapper{white-space:normal}.ag-header-cell-comp-wrapper-limited-height>*{overflow:hidden}:where(.ag-right-aligned-header) .ag-header-cell-label{flex-direction:row-reverse}:where(.ag-ltr) :where(.ag-header-cell:not(.ag-right-aligned-header)){.ag-header-label-icon,.ag-header-menu-icon{margin-left:var(--ag-spacing)}}:where(.ag-rtl) :where(.ag-header-cell:not(.ag-right-aligned-header)){.ag-header-label-icon,.ag-header-menu-icon{margin-right:var(--ag-spacing)}}:where(.ag-ltr) :where(.ag-header-cell.ag-right-aligned-header){.ag-header-label-icon,.ag-header-menu-icon{margin-right:var(--ag-spacing)}}:where(.ag-rtl) :where(.ag-header-cell.ag-right-aligned-header){.ag-header-label-icon,.ag-header-menu-icon{margin-left:var(--ag-spacing)}}.ag-header-cell:after,.ag-header-group-cell:where(:not(.ag-header-span-height.ag-header-group-cell-no-group)):after{content:\"\";height:var(--ag-header-column-border-height);position:absolute;top:calc(50% - var(--ag-header-column-border-height)*.5);z-index:1}:where(.ag-ltr) .ag-header-cell:after,:where(.ag-ltr) .ag-header-group-cell:where(:not(.ag-header-span-height.ag-header-group-cell-no-group)):after{border-right:var(--ag-header-column-border);right:0}:where(.ag-rtl) .ag-header-cell:after,:where(.ag-rtl) .ag-header-group-cell:where(:not(.ag-header-span-height.ag-header-group-cell-no-group)):after{border-left:var(--ag-header-column-border);left:0}.ag-header-highlight-after:after,.ag-header-highlight-before:after{background-color:var(--ag-accent-color);content:\"\";height:100%;position:absolute;width:1px}:where(.ag-ltr) .ag-header-highlight-before:after{left:0}:where(.ag-rtl) .ag-header-highlight-before:after{right:0}:where(.ag-ltr) .ag-header-highlight-after:after{right:0;:where(.ag-pinned-left-header) &{right:1px}}:where(.ag-rtl) .ag-header-highlight-after:after{left:0;:where(.ag-pinned-left-header) &{left:1px}}.ag-header-cell-resize{align-items:center;cursor:ew-resize;display:flex;height:100%;position:absolute;top:0;width:8px;z-index:2;&:after{background-color:var(--ag-header-column-resize-handle-color);content:\"\";height:var(--ag-header-column-resize-handle-height);position:absolute;top:calc(50% - var(--ag-header-column-resize-handle-height)*.5);width:var(--ag-header-column-resize-handle-width);z-index:1}}:where(.ag-ltr) .ag-header-cell-resize{right:-3px;&:after{left:calc(50% - var(--ag-header-column-resize-handle-width))}}:where(.ag-rtl) .ag-header-cell-resize{left:-3px;&:after{right:calc(50% - var(--ag-header-column-resize-handle-width))}}:where(.ag-header-cell.ag-header-span-height) .ag-header-cell-resize:after{height:calc(100% - var(--ag-spacing)*4);top:calc(var(--ag-spacing)*2)}.ag-header-group-cell-no-group:where(.ag-header-span-height){display:none}.ag-sort-indicator-container{display:flex;gap:var(--ag-spacing)}.ag-layout-print{&.ag-body{display:block;height:unset}&.ag-root-wrapper{display:inline-block}.ag-body-horizontal-scroll,.ag-body-vertical-scroll{display:none}&.ag-force-vertical-scroll{overflow-y:visible!important}}@media print{.ag-root-wrapper.ag-layout-print{display:table;.ag-body-horizontal-scroll-viewport,.ag-body-viewport,.ag-center-cols-container,.ag-center-cols-viewport,.ag-root,.ag-root-wrapper-body,.ag-virtual-list-viewport{display:block!important;height:auto!important;overflow:hidden!important}.ag-cell,.ag-row{-moz-column-break-inside:avoid;break-inside:avoid}}}ag-grid,ag-grid-angular{display:block}.ag-chart,.ag-dnd-ghost,.ag-popup,.ag-root-wrapper{cursor:default;line-height:normal;white-space:normal;-webkit-font-smoothing:antialiased;background-color:var(--ag-background-color);color:var(--ag-text-color);color-scheme:var(--ag-browser-color-scheme);font-family:var(--ag-font-family);font-size:var(--ag-font-size);--ag-indentation-level:0}.ag-root-wrapper{border:var(--ag-wrapper-border);border-radius:var(--ag-wrapper-border-radius);display:flex;flex-direction:column;overflow:hidden;position:relative;&.ag-layout-normal{height:100%}}.ag-root-wrapper-body{display:flex;flex-direction:row;&.ag-layout-normal{flex:1 1 auto;height:0;min-height:0}}.ag-root{display:flex;flex-direction:column;position:relative;&.ag-layout-auto-height,&.ag-layout-normal{flex:1 1 auto;overflow:hidden;width:0}&.ag-layout-normal{height:100%}}.ag-drag-handle{color:var(--ag-drag-handle-color);cursor:grab}.ag-list-item,.ag-virtual-list-item{height:var(--ag-list-item-height)}.ag-virtual-list-item{position:absolute;width:100%}.ag-select-list{background-color:var(--ag-picker-list-background-color);border:var(--ag-picker-list-border);border-radius:var(--ag-border-radius);box-shadow:var(--ag-dropdown-shadow);overflow:hidden auto}.ag-list-item{align-items:center;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;&.ag-active-item{background-color:var(--ag-row-hover-color)}}.ag-select-list-item{cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;:where(span){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}:where(.ag-ltr) .ag-select-list-item{padding-left:calc(var(--ag-cell-horizontal-padding)/2)}:where(.ag-rtl) .ag-select-list-item{padding-right:calc(var(--ag-cell-horizontal-padding)/2)}.ag-list-item-hovered:after{background-color:var(--ag-accent-color);content:\"\";height:1px;left:0;position:absolute;right:0}.ag-item-highlight-top:after{top:0}.ag-item-highlight-bottom:after{bottom:0}:where(.ag-icon):before{align-items:center;background-color:currentcolor;color:inherit;content:\"\";display:flex;font-family:inherit;font-size:var(--ag-icon-size);font-style:normal;font-variant:normal;height:var(--ag-icon-size);justify-content:center;line-height:var(--ag-icon-size);-webkit-mask-size:contain;mask-size:contain;text-transform:none;width:var(--ag-icon-size)}.ag-icon{background-position:50%;background-repeat:no-repeat;background-size:contain;color:var(--ag-icon-color);display:block;height:var(--ag-icon-size);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--ag-icon-size)}.ag-column-select-column-group-readonly,.ag-column-select-column-readonly,.ag-disabled,[disabled]{.ag-icon{opacity:.5}&.ag-icon-grip{opacity:.35}}.ag-column-select-column-readonly{&.ag-icon-grip,.ag-icon-grip{opacity:.35}}.ag-chart-menu-icon,.ag-chart-settings-next,.ag-chart-settings-prev,.ag-column-group-icons,.ag-column-select-header-icon,.ag-filter-toolpanel-expand,.ag-floating-filter-button-button,.ag-group-title-bar-icon,.ag-header-cell-filter-button,.ag-header-cell-menu-button,.ag-header-expand-icon,.ag-panel-title-bar-button,.ag-panel-title-bar-button-icon,.ag-set-filter-group-icons,:where(.ag-group-contracted) .ag-icon,:where(.ag-group-expanded) .ag-icon{background-color:var(--ag-icon-button-background-color);border-radius:var(--ag-icon-button-border-radius);box-shadow:0 0 0 var(--ag-icon-button-background-spread) var(--ag-icon-button-background-color);color:var(--ag-icon-button-color);&:hover{background-color:var(--ag-icon-button-hover-background-color);box-shadow:0 0 0 var(--ag-icon-button-background-spread) var(--ag-icon-button-hover-background-color);color:var(--ag-icon-button-hover-color)}}.ag-filter-active{background-image:linear-gradient(var(--ag-icon-button-active-background-color),var(--ag-icon-button-active-background-color));border-radius:1px;outline:solid var(--ag-icon-button-background-spread) var(--ag-icon-button-active-background-color);position:relative;&:after{background-color:var(--ag-accent-color);border-radius:50%;content:\"\";height:6px;position:absolute;top:-1px;width:6px}:where(.ag-icon-filter){clip-path:path(\"M8,0C8,4.415 11.585,8 16,8L16,16L0,16L0,0L8,0Z\");color:var(--ag-icon-button-active-color)}}:where(.ag-ltr) .ag-filter-active{&:after{right:-1px}}:where(.ag-rtl) .ag-filter-active{&:after{left:-1px}}.ag-menu{background-color:var(--ag-menu-background-color);border:var(--ag-menu-border);border-radius:var(--ag-border-radius);box-shadow:var(--ag-menu-shadow);color:var(--ag-menu-text-color);max-height:100%;overflow-y:auto}.ag-menu,.ag-resizer{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ag-resizer{pointer-events:none;z-index:1}:where(.ag-resizer){&.ag-resizer-topLeft{cursor:nwse-resize;height:5px;left:0;top:0;width:5px}&.ag-resizer-top{cursor:ns-resize;height:5px;left:5px;right:5px;top:0}&.ag-resizer-topRight{cursor:nesw-resize;height:5px;right:0;top:0;width:5px}&.ag-resizer-right{bottom:5px;cursor:ew-resize;right:0;top:5px;width:5px}&.ag-resizer-bottomRight{bottom:0;cursor:nwse-resize;height:5px;right:0;width:5px}&.ag-resizer-bottom{bottom:0;cursor:ns-resize;height:5px;left:5px;right:5px}&.ag-resizer-bottomLeft{bottom:0;cursor:nesw-resize;height:5px;left:0;width:5px}&.ag-resizer-left{bottom:5px;cursor:ew-resize;left:0;top:5px;width:5px}}`\n);\n\n// packages/ag-grid-community/src/theming/inject.ts\nvar IS_SSR = typeof window !== \"object\" || !window?.document?.fonts?.forEach;\nvar _injectGlobalCSS = (css, styleContainer, debugId, layer, priority, nonce) => {\n  if (IS_SSR)\n    return;\n  if (FORCE_LEGACY_THEMES)\n    return;\n  if (layer) {\n    css = `@layer ${CSS.escape(layer)} { ${css} }`;\n  }\n  let injections = injectionState.map.get(styleContainer);\n  if (!injections) {\n    injections = [];\n    injectionState.map.set(styleContainer, injections);\n  }\n  if (injections.find((i) => i.css === css))\n    return;\n  const el = document.createElement(\"style\");\n  if (nonce) {\n    el.setAttribute(\"nonce\", nonce);\n  }\n  el.dataset.agGlobalCss = debugId;\n  el.textContent = css;\n  const newInjection = { css, el, priority };\n  let insertAfter;\n  for (const injection of injections) {\n    if (injection.priority > priority)\n      break;\n    insertAfter = injection;\n  }\n  if (insertAfter) {\n    insertAfter.el.insertAdjacentElement(\"afterend\", el);\n    const index = injections.indexOf(insertAfter);\n    injections.splice(index + 1, 0, newInjection);\n  } else {\n    styleContainer.insertBefore(el, styleContainer.querySelector(\":not(title, meta)\"));\n    injections.push(newInjection);\n  }\n};\nvar _injectCoreAndModuleCSS = (styleContainer, layer, nonce) => {\n  _injectGlobalCSS(coreCSS, styleContainer, \"core\", layer, 0, nonce);\n  Array.from(_getAllRegisteredModules()).sort((a, b) => a.moduleName.localeCompare(b.moduleName)).forEach(\n    (module) => module.css?.forEach(\n      (css) => _injectGlobalCSS(css, styleContainer, `module-${module.moduleName}`, layer, 0, nonce)\n    )\n  );\n};\nvar _registerGridUsingThemingAPI = (environment) => {\n  injectionState.grids.add(environment);\n};\nvar _unregisterGridUsingThemingAPI = (environment) => {\n  injectionState.grids.delete(environment);\n  if (injectionState.grids.size === 0) {\n    injectionState.map = /* @__PURE__ */ new WeakMap();\n    for (const style of document.head.querySelectorAll(\"style[data-ag-global-css]\")) {\n      style.remove();\n    }\n  }\n};\nvar _a;\nvar injectionState = (_a = typeof window === \"object\" ? window : {}).agStyleInjectionState ?? (_a.agStyleInjectionState = {\n  map: /* @__PURE__ */ new WeakMap(),\n  grids: /* @__PURE__ */ new Set()\n});\n\n// packages/ag-grid-community/src/theming/Part.ts\nvar createPart = (args) => {\n  return new PartImpl(args);\n};\nvar defaultModeName = \"$default\";\nvar partCounter = 0;\nvar PartImpl = class {\n  constructor({ feature, params, modeParams = {}, css, cssImports }) {\n    this.feature = feature;\n    this.css = css;\n    this.cssImports = cssImports;\n    this.modeParams = {\n      // NOTE: it's important that default is defined first, putting it\n      // first in iteration order, because when merging params the default\n      // params override any prior modal params, so modal params in this\n      // part need to come after default params to prevent them from being\n      // immediately overridden.\n      [defaultModeName]: {\n        ...modeParams[defaultModeName] ?? {},\n        ...params ?? {}\n      },\n      ...modeParams\n    };\n  }\n  use(styleContainer, layer, nonce) {\n    let inject = this._inject;\n    if (inject == null) {\n      let { css } = this;\n      if (css) {\n        const className = `ag-theme-${this.feature ?? \"part\"}-${++partCounter}`;\n        if (typeof css === \"function\")\n          css = css();\n        css = `:where(.${className}) {\n${css}\n}\n`;\n        for (const cssImport of this.cssImports ?? []) {\n          css = `@import url(${JSON.stringify(cssImport)});\n${css}`;\n        }\n        inject = { css, class: className };\n      } else {\n        inject = false;\n      }\n      this._inject = inject;\n    }\n    if (inject && styleContainer) {\n      _injectGlobalCSS(inject.css, styleContainer, inject.class, layer, 1, nonce);\n    }\n    return inject ? inject.class : false;\n  }\n};\n\n// packages/ag-grid-community/src/theming/theme-utils.ts\nvar kebabCase = (str) => str.replace(/[A-Z]/g, (m) => `-${m}`).toLowerCase();\nvar paramToVariableName = (paramName) => `--ag-${kebabCase(paramName)}`;\nvar paramToVariableExpression = (paramName) => `var(${paramToVariableName(paramName)})`;\nvar clamp = (value, min, max) => Math.max(min, Math.min(max, value));\nvar memoize = (fn) => {\n  const values = /* @__PURE__ */ new Map();\n  return (a) => {\n    const key = a;\n    if (!values.has(key)) {\n      values.set(key, fn(a));\n    }\n    return values.get(key);\n  };\n};\nvar accentMix = (mix) => ({ ref: \"accentColor\", mix });\nvar foregroundMix = (mix) => ({ ref: \"foregroundColor\", mix });\nvar foregroundBackgroundMix = (mix) => ({\n  ref: \"foregroundColor\",\n  mix,\n  onto: \"backgroundColor\"\n});\nvar foregroundHeaderBackgroundMix = (mix) => ({\n  ref: \"foregroundColor\",\n  mix,\n  onto: \"headerBackgroundColor\"\n});\nvar backgroundColor = { ref: \"backgroundColor\" };\nvar foregroundColor = { ref: \"foregroundColor\" };\nvar accentColor = { ref: \"accentColor\" };\n\n// packages/ag-grid-community/src/theming/core/core-css.ts\nvar defaultLightColorSchemeParams = {\n  backgroundColor: \"#fff\",\n  foregroundColor: \"#181d1f\",\n  borderColor: foregroundMix(0.15),\n  chromeBackgroundColor: foregroundBackgroundMix(0.02),\n  browserColorScheme: \"light\"\n};\nvar coreDefaults = {\n  ...defaultLightColorSchemeParams,\n  textColor: foregroundColor,\n  accentColor: \"#2196f3\",\n  invalidColor: \"#e02525\",\n  wrapperBorder: true,\n  rowBorder: true,\n  headerRowBorder: true,\n  footerRowBorder: {\n    ref: \"rowBorder\"\n  },\n  columnBorder: {\n    style: \"solid\",\n    width: 1,\n    color: \"transparent\"\n  },\n  headerColumnBorder: false,\n  headerColumnBorderHeight: \"100%\",\n  pinnedColumnBorder: true,\n  pinnedRowBorder: true,\n  sidePanelBorder: true,\n  sideBarPanelWidth: 250,\n  sideBarBackgroundColor: {\n    ref: \"chromeBackgroundColor\"\n  },\n  sideButtonBarBackgroundColor: {\n    ref: \"sideBarBackgroundColor\"\n  },\n  sideButtonBarTopPadding: 0,\n  sideButtonSelectedUnderlineWidth: 2,\n  sideButtonSelectedUnderlineColor: \"transparent\",\n  sideButtonSelectedUnderlineTransitionDuration: 0,\n  sideButtonBackgroundColor: \"transparent\",\n  sideButtonTextColor: { ref: \"textColor\" },\n  sideButtonHoverBackgroundColor: { ref: \"sideButtonBackgroundColor\" },\n  sideButtonHoverTextColor: { ref: \"sideButtonTextColor\" },\n  sideButtonSelectedBackgroundColor: backgroundColor,\n  sideButtonSelectedTextColor: { ref: \"sideButtonTextColor\" },\n  sideButtonBorder: \"solid 1px transparent\",\n  sideButtonSelectedBorder: true,\n  sideButtonLeftPadding: { ref: \"spacing\" },\n  sideButtonRightPadding: { ref: \"spacing\" },\n  sideButtonVerticalPadding: { calc: \"spacing * 3\" },\n  fontFamily: [\n    \"-apple-system\",\n    \"BlinkMacSystemFont\",\n    \"Segoe UI\",\n    \"Roboto\",\n    \"Oxygen-Sans\",\n    \"Ubuntu\",\n    \"Cantarell\",\n    \"Helvetica Neue\",\n    \"sans-serif\"\n  ],\n  headerBackgroundColor: {\n    ref: \"chromeBackgroundColor\"\n  },\n  headerFontFamily: {\n    ref: \"fontFamily\"\n  },\n  cellFontFamily: {\n    ref: \"fontFamily\"\n  },\n  headerFontWeight: 500,\n  headerFontSize: {\n    ref: \"fontSize\"\n  },\n  dataFontSize: {\n    ref: \"fontSize\"\n  },\n  headerTextColor: {\n    ref: \"textColor\"\n  },\n  headerCellHoverBackgroundColor: \"transparent\",\n  headerCellMovingBackgroundColor: { ref: \"headerCellHoverBackgroundColor\" },\n  headerCellBackgroundTransitionDuration: \"0.2s\",\n  cellTextColor: {\n    ref: \"textColor\"\n  },\n  subtleTextColor: {\n    ref: \"textColor\",\n    mix: 0.5\n  },\n  rangeSelectionBorderStyle: \"solid\",\n  rangeSelectionBorderColor: accentColor,\n  rangeSelectionBackgroundColor: accentMix(0.2),\n  rangeSelectionChartBackgroundColor: \"#0058FF1A\",\n  rangeSelectionChartCategoryBackgroundColor: \"#00FF841A\",\n  rangeSelectionHighlightColor: accentMix(0.5),\n  rangeHeaderHighlightColor: foregroundHeaderBackgroundMix(0.08),\n  rowNumbersSelectedColor: accentMix(0.5),\n  rowHoverColor: accentMix(0.08),\n  columnHoverColor: accentMix(0.05),\n  selectedRowBackgroundColor: accentMix(0.12),\n  modalOverlayBackgroundColor: {\n    ref: \"backgroundColor\",\n    mix: 0.66\n  },\n  oddRowBackgroundColor: backgroundColor,\n  borderRadius: 4,\n  wrapperBorderRadius: 8,\n  cellHorizontalPadding: {\n    calc: \"spacing * 2 * cellHorizontalPaddingScale\"\n  },\n  cellWidgetSpacing: {\n    calc: \"spacing * 1.5\"\n  },\n  cellHorizontalPaddingScale: 1,\n  rowGroupIndentSize: {\n    calc: \"cellWidgetSpacing + iconSize\"\n  },\n  valueChangeDeltaUpColor: \"#43a047\",\n  valueChangeDeltaDownColor: \"#e53935\",\n  valueChangeValueHighlightBackgroundColor: \"#16a08580\",\n  spacing: 8,\n  fontSize: 14,\n  rowHeight: {\n    calc: \"max(iconSize, dataFontSize) + spacing * 3.25 * rowVerticalPaddingScale\"\n  },\n  rowVerticalPaddingScale: 1,\n  headerHeight: {\n    calc: \"max(iconSize, dataFontSize) + spacing * 4 * headerVerticalPaddingScale\"\n  },\n  headerVerticalPaddingScale: 1,\n  popupShadow: \"0 0 16px #00000026\",\n  cardShadow: \"0 1px 4px 1px #00000018\",\n  dropdownShadow: { ref: \"cardShadow\" },\n  dragAndDropImageBackgroundColor: backgroundColor,\n  dragAndDropImageBorder: true,\n  dragAndDropImageShadow: {\n    ref: \"popupShadow\"\n  },\n  dragHandleColor: foregroundMix(0.7),\n  focusShadow: {\n    spread: 3,\n    color: accentMix(0.5)\n  },\n  headerColumnResizeHandleHeight: \"30%\",\n  headerColumnResizeHandleWidth: 2,\n  headerColumnResizeHandleColor: {\n    ref: \"borderColor\"\n  },\n  widgetContainerHorizontalPadding: {\n    calc: \"spacing * 1.5\"\n  },\n  widgetContainerVerticalPadding: {\n    calc: \"spacing * 1.5\"\n  },\n  widgetHorizontalSpacing: {\n    calc: \"spacing * 1.5\"\n  },\n  widgetVerticalSpacing: {\n    ref: \"spacing\"\n  },\n  listItemHeight: {\n    calc: \"max(iconSize, dataFontSize) + widgetVerticalSpacing\"\n  },\n  iconSize: 16,\n  iconColor: \"inherit\",\n  iconButtonColor: { ref: \"iconColor\" },\n  iconButtonBackgroundColor: \"transparent\",\n  iconButtonBackgroundSpread: 4,\n  iconButtonBorderRadius: 1,\n  iconButtonHoverColor: { ref: \"iconButtonColor\" },\n  iconButtonHoverBackgroundColor: foregroundMix(0.1),\n  iconButtonActiveColor: accentColor,\n  iconButtonActiveBackgroundColor: accentMix(0.28),\n  iconButtonActiveIndicatorColor: accentColor,\n  toggleButtonWidth: 28,\n  toggleButtonHeight: 18,\n  toggleButtonOnBackgroundColor: accentColor,\n  toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.3),\n  toggleButtonSwitchBackgroundColor: backgroundColor,\n  toggleButtonSwitchInset: 2,\n  menuBorder: {\n    color: foregroundMix(0.2)\n  },\n  menuBackgroundColor: foregroundBackgroundMix(0.03),\n  menuTextColor: foregroundBackgroundMix(0.95),\n  menuShadow: {\n    ref: \"popupShadow\"\n  },\n  menuSeparatorColor: {\n    ref: \"borderColor\"\n  },\n  setFilterIndentSize: {\n    ref: \"iconSize\"\n  },\n  chartMenuPanelWidth: 260,\n  chartMenuLabelColor: foregroundMix(0.8),\n  dialogShadow: {\n    ref: \"popupShadow\"\n  },\n  cellEditingBorder: {\n    color: accentColor\n  },\n  cellEditingShadow: { ref: \"cardShadow\" },\n  dialogBorder: {\n    color: foregroundMix(0.2)\n  },\n  panelBackgroundColor: backgroundColor,\n  panelTitleBarBackgroundColor: {\n    ref: \"headerBackgroundColor\"\n  },\n  panelTitleBarIconColor: {\n    ref: \"headerTextColor\"\n  },\n  panelTitleBarTextColor: {\n    ref: \"headerTextColor\"\n  },\n  panelTitleBarFontWeight: {\n    ref: \"headerFontWeight\"\n  },\n  panelTitleBarBorder: true,\n  columnSelectIndentSize: {\n    ref: \"iconSize\"\n  },\n  toolPanelSeparatorBorder: true,\n  tooltipBackgroundColor: {\n    ref: \"chromeBackgroundColor\"\n  },\n  tooltipTextColor: {\n    ref: \"textColor\"\n  },\n  tooltipBorder: true,\n  columnDropCellBackgroundColor: foregroundMix(0.07),\n  columnDropCellTextColor: {\n    ref: \"textColor\"\n  },\n  columnDropCellDragHandleColor: {\n    ref: \"textColor\"\n  },\n  columnDropCellBorder: {\n    color: foregroundMix(0.13)\n  },\n  selectCellBackgroundColor: foregroundMix(0.07),\n  selectCellBorder: {\n    color: foregroundMix(0.13)\n  },\n  advancedFilterBuilderButtonBarBorder: true,\n  advancedFilterBuilderIndentSize: {\n    calc: \"spacing * 2 + iconSize\"\n  },\n  advancedFilterBuilderJoinPillColor: \"#f08e8d\",\n  advancedFilterBuilderColumnPillColor: \"#a6e194\",\n  advancedFilterBuilderOptionPillColor: \"#f3c08b\",\n  advancedFilterBuilderValuePillColor: \"#85c0e4\",\n  findMatchColor: foregroundColor,\n  findMatchBackgroundColor: \"#ffff00\",\n  findActiveMatchColor: foregroundColor,\n  findActiveMatchBackgroundColor: \"#ffa500\",\n  filterToolPanelGroupIndent: {\n    ref: \"spacing\"\n  },\n  rowLoadingSkeletonEffectColor: foregroundMix(0.15),\n  statusBarLabelColor: foregroundColor,\n  statusBarLabelFontWeight: 500,\n  statusBarValueColor: foregroundColor,\n  statusBarValueFontWeight: 500,\n  pinnedSourceRowTextColor: {\n    ref: \"textColor\"\n  },\n  pinnedSourceRowBackgroundColor: {\n    ref: \"backgroundColor\"\n  },\n  pinnedSourceRowFontWeight: 600,\n  pinnedRowFontWeight: 600,\n  pinnedRowBackgroundColor: {\n    ref: \"backgroundColor\"\n  },\n  pinnedRowTextColor: {\n    ref: \"textColor\"\n  }\n};\n\n// packages/ag-grid-community/src/theming/parts/button-style/button-style-base.css-GENERATED.ts\nvar buttonStyleBaseCSS = (\n  /*css*/\n  `:where(.ag-button){background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0;text-indent:inherit;text-shadow:inherit;text-transform:inherit;word-spacing:inherit;&:disabled{cursor:default}&:focus-visible{box-shadow:var(--ag-focus-shadow);outline:none}}.ag-standard-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--ag-button-background-color);border:var(--ag-button-border);border-radius:var(--ag-button-border-radius);color:var(--ag-button-text-color);cursor:pointer;font-weight:var(--ag-button-font-weight);padding:var(--ag-button-vertical-padding) var(--ag-button-horizontal-padding);&:hover{background-color:var(--ag-button-hover-background-color);border:var(--ag-button-hover-border);color:var(--ag-button-hover-text-color)}&:active{background-color:var(--ag-button-active-background-color);border:var(--ag-button-active-border);color:var(--ag-button-active-text-color)}&:disabled{background-color:var(--ag-button-disabled-background-color);border:var(--ag-button-disabled-border);color:var(--ag-button-disabled-text-color)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/button-style/button-styles.ts\nvar baseParams = {\n  buttonTextColor: \"inherit\",\n  buttonFontWeight: \"normal\",\n  buttonBackgroundColor: \"transparent\",\n  buttonBorder: false,\n  buttonBorderRadius: { ref: \"borderRadius\" },\n  buttonHorizontalPadding: { calc: \"spacing * 2\" },\n  buttonVerticalPadding: { ref: \"spacing\" },\n  buttonHoverTextColor: { ref: \"buttonTextColor\" },\n  buttonHoverBackgroundColor: { ref: \"buttonBackgroundColor\" },\n  buttonHoverBorder: { ref: \"buttonBorder\" },\n  buttonActiveTextColor: { ref: \"buttonHoverTextColor\" },\n  buttonActiveBackgroundColor: { ref: \"buttonHoverBackgroundColor\" },\n  buttonActiveBorder: { ref: \"buttonHoverBorder\" },\n  buttonDisabledTextColor: { ref: \"inputDisabledTextColor\" },\n  buttonDisabledBackgroundColor: { ref: \"inputDisabledBackgroundColor\" },\n  buttonDisabledBorder: { ref: \"inputDisabledBorder\" }\n};\nvar makeButtonStyleBaseTreeShakeable = () => createPart({\n  feature: \"buttonStyle\",\n  params: baseParams,\n  css: buttonStyleBaseCSS\n});\nvar buttonStyleBase = /* @__PURE__ */ makeButtonStyleBaseTreeShakeable();\nvar makeButtonStyleQuartzTreeShakeable = () => createPart({\n  feature: \"buttonStyle\",\n  params: {\n    ...baseParams,\n    buttonBackgroundColor: backgroundColor,\n    buttonBorder: true,\n    buttonHoverBackgroundColor: { ref: \"rowHoverColor\" },\n    buttonActiveBorder: { color: accentColor }\n  },\n  css: buttonStyleBaseCSS\n});\nvar buttonStyleQuartz = /* @__PURE__ */ makeButtonStyleQuartzTreeShakeable();\nvar makeButtonStyleAlpineTreeShakeable = () => createPart({\n  feature: \"buttonStyle\",\n  params: {\n    ...baseParams,\n    buttonBackgroundColor: backgroundColor,\n    buttonBorder: { color: accentColor },\n    buttonFontWeight: 600,\n    buttonTextColor: accentColor,\n    buttonHoverBackgroundColor: { ref: \"rowHoverColor\" },\n    buttonActiveBackgroundColor: accentColor,\n    buttonActiveTextColor: backgroundColor\n  },\n  css: buttonStyleBaseCSS\n});\nvar buttonStyleAlpine = /* @__PURE__ */ makeButtonStyleAlpineTreeShakeable();\nvar makeButtonStyleBalhamTreeShakeable = () => createPart({\n  feature: \"buttonStyle\",\n  params: {\n    ...baseParams,\n    buttonBorder: { color: foregroundColor, width: 2, style: \"outset\" },\n    buttonActiveBorder: { color: foregroundColor, width: 2, style: \"inset\" },\n    buttonBackgroundColor: foregroundBackgroundMix(0.07),\n    buttonHoverBackgroundColor: backgroundColor,\n    buttonVerticalPadding: { calc: \"spacing * 0.5\" }\n  },\n  css: buttonStyleBaseCSS\n});\nvar buttonStyleBalham = /* @__PURE__ */ makeButtonStyleBalhamTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/column-drop-style/column-drop-style-bordered.css-GENERATED.ts\nvar columnDropStyleBorderedCSS = (\n  /*css*/\n  `.ag-column-drop-vertical-empty-message{align-items:center;border:1px dashed;border-color:var(--ag-border-color);display:flex;inset:0;justify-content:center;margin:calc(var(--ag-spacing)*1.5) calc(var(--ag-spacing)*2);overflow:hidden;padding:calc(var(--ag-spacing)*2);position:absolute}`\n);\n\n// packages/ag-grid-community/src/theming/parts/column-drop-style/column-drop-style-plain.css-GENERATED.ts\nvar columnDropStylePlainCSS = (\n  /*css*/\n  `.ag-column-drop-vertical-empty-message{color:var(--ag-subtle-text-color);font-size:calc(var(--ag-font-size) - 1px);font-weight:600;padding-top:var(--ag-spacing)}:where(.ag-ltr) .ag-column-drop-vertical-empty-message{padding-left:calc(var(--ag-icon-size) + var(--ag-spacing) + var(--ag-widget-horizontal-spacing));padding-right:var(--ag-spacing)}:where(.ag-rtl) .ag-column-drop-vertical-empty-message{padding-left:var(--ag-spacing);padding-right:calc(var(--ag-icon-size) + var(--ag-spacing) + var(--ag-widget-horizontal-spacing))}`\n);\n\n// packages/ag-grid-community/src/theming/parts/column-drop-style/column-drop-styles.ts\nvar makeColumnDropStyleBorderedTreeShakeable = () => {\n  return createPart({\n    feature: \"columnDropStyle\",\n    css: columnDropStyleBorderedCSS\n  });\n};\nvar columnDropStyleBordered = /* @__PURE__ */ makeColumnDropStyleBorderedTreeShakeable();\nvar makeColumnDropStylePlainTreeShakeable = () => {\n  return createPart({\n    feature: \"columnDropStyle\",\n    css: columnDropStylePlainCSS\n  });\n};\nvar columnDropStylePlain = /* @__PURE__ */ makeColumnDropStylePlainTreeShakeable();\n\n// packages/ag-grid-community/src/theming/theme-types.ts\nvar paramTypes = [\n  \"colorScheme\",\n  \"color\",\n  \"length\",\n  \"scale\",\n  \"borderStyle\",\n  \"border\",\n  \"shadow\",\n  \"image\",\n  \"fontFamily\",\n  \"fontWeight\",\n  \"duration\"\n];\nvar getParamType = memoize((param) => {\n  param = param.toLowerCase();\n  return paramTypes.find((type) => param.endsWith(type.toLowerCase())) ?? \"length\";\n});\nvar literalToCSS = (value) => {\n  if (typeof value === \"object\" && value?.ref)\n    return paramToVariableExpression(value.ref);\n  if (typeof value === \"string\")\n    return value;\n  if (typeof value === \"number\")\n    return String(value);\n  return false;\n};\nvar colorValueToCss = (value) => {\n  if (typeof value === \"string\")\n    return value;\n  if (value && \"ref\" in value) {\n    const colorExpr = paramToVariableExpression(value.ref);\n    if (value.mix == null) {\n      return colorExpr;\n    }\n    const backgroundExpr = value.onto ? paramToVariableExpression(value.onto) : \"transparent\";\n    return `color-mix(in srgb, ${backgroundExpr}, ${colorExpr} ${clamp(value.mix * 100, 0, 100)}%)`;\n  }\n  return false;\n};\nvar colorSchemeValueToCss = literalToCSS;\nvar lengthValueToCss = (value) => {\n  if (typeof value === \"string\")\n    return value;\n  if (typeof value === \"number\")\n    return `${value}px`;\n  if (value && \"calc\" in value) {\n    const valueWithSpaces = value.calc.replace(/ ?[*/+] ?/g, \" $& \");\n    return `calc(${valueWithSpaces.replace(/-?\\b[a-z][a-z0-9]*\\b(?![-(])/gi, (p) => p[0] === \"-\" ? p : ` ${paramToVariableExpression(p)} `)})`;\n  }\n  if (value && \"ref\" in value)\n    return paramToVariableExpression(value.ref);\n  return false;\n};\nvar scaleValueToCss = literalToCSS;\nvar borderValueToCss = (value, param) => {\n  if (typeof value === \"string\")\n    return value;\n  if (value === true)\n    return \"solid 1px var(--ag-border-color)\";\n  if (value === false)\n    return param === \"columnBorder\" ? \"solid 1px transparent\" : \"none\";\n  if (value && \"ref\" in value)\n    return paramToVariableExpression(value.ref);\n  return borderStyleValueToCss(value.style ?? \"solid\") + \" \" + lengthValueToCss(value.width ?? 1) + \" \" + colorValueToCss(value.color ?? { ref: \"borderColor\" });\n};\nvar shadowValueToCss = (value) => {\n  if (typeof value === \"string\")\n    return value;\n  if (value === false)\n    return \"none\";\n  if (value && \"ref\" in value)\n    return paramToVariableExpression(value.ref);\n  return [\n    lengthValueToCss(value.offsetX ?? 0),\n    lengthValueToCss(value.offsetY ?? 0),\n    lengthValueToCss(value.radius ?? 0),\n    lengthValueToCss(value.spread ?? 0),\n    colorValueToCss(value.color ?? { ref: \"foregroundColor\" })\n  ].join(\" \");\n};\nvar borderStyleValueToCss = literalToCSS;\nvar fontFamilyValueToCss = (value) => {\n  if (typeof value === \"string\")\n    return value.includes(\",\") ? value : quoteUnsafeChars(value);\n  if (value && \"googleFont\" in value)\n    return fontFamilyValueToCss(value.googleFont);\n  if (value && \"ref\" in value)\n    return paramToVariableExpression(value.ref);\n  if (Array.isArray(value)) {\n    return value.map((font) => {\n      if (typeof font === \"object\" && \"googleFont\" in font) {\n        font = font.googleFont;\n      }\n      return quoteUnsafeChars(font);\n    }).join(\", \");\n  }\n  return false;\n};\nvar quoteUnsafeChars = (font) => (\n  // don't quote var() expressions or quote safe identifier names, so that\n  // people can specify fonts like sans-serif which are keywords not strings,\n  // or var(--my-var)\n  /^[\\w-]+$|\\w\\(/.test(font) ? font : JSON.stringify(font)\n);\nvar fontWeightValueToCss = literalToCSS;\nvar imageValueToCss = (value) => {\n  if (typeof value === \"string\")\n    return value;\n  if (value && \"url\" in value)\n    return `url(${JSON.stringify(value.url)})`;\n  if (value && \"svg\" in value)\n    return imageValueToCss({ url: `data:image/svg+xml,${encodeURIComponent(value.svg)}` });\n  if (value && \"ref\" in value)\n    return paramToVariableExpression(value.ref);\n  return false;\n};\nvar durationValueToCss = (value, param) => {\n  if (typeof value === \"string\")\n    return value;\n  if (typeof value === \"number\") {\n    if (value >= 10) {\n      _error(104, { value, param });\n    }\n    return `${value}s`;\n  }\n  if (value && \"ref\" in value)\n    return paramToVariableExpression(value.ref);\n  return false;\n};\nvar paramValidators = {\n  color: colorValueToCss,\n  colorScheme: colorSchemeValueToCss,\n  length: lengthValueToCss,\n  scale: scaleValueToCss,\n  border: borderValueToCss,\n  borderStyle: borderStyleValueToCss,\n  shadow: shadowValueToCss,\n  image: imageValueToCss,\n  fontFamily: fontFamilyValueToCss,\n  fontWeight: fontWeightValueToCss,\n  duration: durationValueToCss\n};\nvar paramValueToCss = (param, value) => {\n  const type = getParamType(param);\n  return paramValidators[type](value, param);\n};\n\n// packages/ag-grid-community/src/theming/Theme.ts\nvar FORCE_LEGACY_THEMES = false;\nvar _asThemeImpl = (theme) => {\n  if (!(theme instanceof ThemeImpl)) {\n    throw new Error(\"theme is not an object created by createTheme\");\n  }\n  return theme;\n};\nvar createTheme = () => new ThemeImpl().withPart(buttonStyleQuartz).withPart(columnDropStyleBordered);\nvar ThemeImpl = class _ThemeImpl {\n  constructor(parts = []) {\n    this.parts = parts;\n  }\n  withPart(part) {\n    if (typeof part === \"function\")\n      part = part();\n    if (!(part instanceof PartImpl)) {\n      _logPreInitErr(259, { part }, \"Invalid part\");\n      return this;\n    }\n    return new _ThemeImpl([...this.parts, part]);\n  }\n  withoutPart(feature) {\n    return this.withPart(createPart({ feature }));\n  }\n  withParams(params, mode = defaultModeName) {\n    return this.withPart(\n      createPart({\n        modeParams: { [mode]: params }\n      })\n    );\n  }\n  /**\n   * Called by a grid instance when it starts using the theme. This installs\n   * the theme's parts into document head, or the shadow DOM if the provided\n   * container is within a shadow root.\n   */\n  _startUse({ styleContainer, cssLayer, nonce, loadThemeGoogleFonts }) {\n    if (IS_SSR)\n      return;\n    if (FORCE_LEGACY_THEMES)\n      return;\n    uninstallLegacyCSS();\n    _injectCoreAndModuleCSS(styleContainer, cssLayer, nonce);\n    const googleFontsUsed = getGoogleFontsUsed(this);\n    if (googleFontsUsed.length > 0) {\n      for (const googleFont of googleFontsUsed) {\n        if (loadThemeGoogleFonts) {\n          loadGoogleFont(googleFont, nonce);\n        }\n      }\n    }\n    for (const part of this.parts) {\n      part.use(styleContainer, cssLayer, nonce);\n    }\n  }\n  /**\n   * Return CSS that that applies the params of this theme to elements with\n   * the provided class name\n   */\n  _getCssClass() {\n    if (FORCE_LEGACY_THEMES)\n      return \"ag-theme-quartz\";\n    return this._cssClassCache ?? (this._cssClassCache = deduplicatePartsByFeature(this.parts).map((part) => part.use(void 0, void 0, void 0)).filter(Boolean).join(\" \"));\n  }\n  _getModeParams() {\n    let paramsCache = this._paramsCache;\n    if (!paramsCache) {\n      const mergedModeParams = {\n        // NOTE: defining the default mode here is important, it ensures\n        // that the default mode is first in iteration order, which puts\n        // it first in outputted CSS, allowing other modes to override it\n        [defaultModeName]: { ...coreDefaults }\n      };\n      for (const part of deduplicatePartsByFeature(this.parts)) {\n        for (const partMode of Object.keys(part.modeParams)) {\n          const partParams = part.modeParams[partMode];\n          if (partParams) {\n            const mergedParams = mergedModeParams[partMode] ?? (mergedModeParams[partMode] = {});\n            const partParamNames = /* @__PURE__ */ new Set();\n            for (const partParamName of Object.keys(partParams)) {\n              const partParamValue = partParams[partParamName];\n              if (partParamValue !== void 0) {\n                mergedParams[partParamName] = partParamValue;\n                partParamNames.add(partParamName);\n              }\n            }\n            if (partMode === defaultModeName) {\n              for (const mergedMode of Object.keys(mergedModeParams)) {\n                const mergedParams2 = mergedModeParams[mergedMode];\n                if (mergedMode !== defaultModeName) {\n                  for (const partParamName of partParamNames) {\n                    delete mergedParams2[partParamName];\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n      this._paramsCache = paramsCache = mergedModeParams;\n    }\n    return paramsCache;\n  }\n  /**\n   * Return the CSS chunk that is inserted into the grid DOM, and will\n   * therefore be removed automatically when the grid is destroyed or it\n   * starts to use a new theme.\n   *\n   * @param className a unique class name on the grid wrapper used to scope the returned CSS to the grid instance\n   */\n  _getPerGridCss(className) {\n    const selectorPlaceholder = \"##SELECTOR##\";\n    let innerParamsCss = this._paramsCssCache;\n    if (!innerParamsCss) {\n      let variablesCss = \"\";\n      let inheritanceCss = \"\";\n      const modeParams = this._getModeParams();\n      for (const mode of Object.keys(modeParams)) {\n        const params = modeParams[mode];\n        if (mode !== defaultModeName) {\n          const escapedMode = typeof CSS === \"object\" ? CSS.escape(mode) : mode;\n          const wrapPrefix = `:where([data-ag-theme-mode=\"${escapedMode}\"]) & {\n`;\n          variablesCss += wrapPrefix;\n          inheritanceCss += wrapPrefix;\n        }\n        for (const key of Object.keys(params).sort()) {\n          const value = params[key];\n          const cssValue = paramValueToCss(key, value);\n          if (cssValue === false) {\n            _error(107, { key, value });\n          } else {\n            const cssName = paramToVariableName(key);\n            const inheritedName = cssName.replace(\"--ag-\", \"--ag-inherited-\");\n            variablesCss += `\t${cssName}: var(${inheritedName}, ${cssValue});\n`;\n            inheritanceCss += `\t${inheritedName}: var(${cssName});\n`;\n          }\n        }\n        if (mode !== defaultModeName) {\n          variablesCss += \"}\\n\";\n          inheritanceCss += \"}\\n\";\n        }\n      }\n      let css = `${selectorPlaceholder} {\n${variablesCss}}\n`;\n      css += `:has(> ${selectorPlaceholder}):not(${selectorPlaceholder}) {\n${inheritanceCss}}\n`;\n      this._paramsCssCache = innerParamsCss = css;\n    }\n    return innerParamsCss.replaceAll(selectorPlaceholder, `:where(.${className})`);\n  }\n};\nvar deduplicatePartsByFeature = (parts) => {\n  const lastPartByFeature = /* @__PURE__ */ new Map();\n  for (const part of parts) {\n    lastPartByFeature.set(part.feature, part);\n  }\n  const result = [];\n  for (const part of parts) {\n    if (!part.feature || lastPartByFeature.get(part.feature) === part) {\n      result.push(part);\n    }\n  }\n  return result;\n};\nvar getGoogleFontsUsed = (theme) => {\n  const googleFontsUsed = /* @__PURE__ */ new Set();\n  const visitParamValue = (paramValue) => {\n    if (Array.isArray(paramValue)) {\n      paramValue.forEach(visitParamValue);\n    } else {\n      const googleFont = paramValue?.googleFont;\n      if (typeof googleFont === \"string\") {\n        googleFontsUsed.add(googleFont);\n      }\n    }\n  };\n  const allModeValues = Object.values(theme._getModeParams());\n  const allValues = allModeValues.flatMap((mv) => Object.values(mv));\n  allValues.forEach(visitParamValue);\n  return Array.from(googleFontsUsed).sort();\n};\nvar uninstalledLegacyCSS = false;\nvar uninstallLegacyCSS = () => {\n  if (uninstalledLegacyCSS)\n    return;\n  uninstalledLegacyCSS = true;\n  for (const style of Array.from(document.head.querySelectorAll('style[data-ag-scope=\"legacy\"]'))) {\n    style.remove();\n  }\n};\nvar googleFontsLoaded = /* @__PURE__ */ new Set();\nvar loadGoogleFont = async (font, nonce) => {\n  googleFontsLoaded.add(font);\n  const css = `@import url('https://${googleFontsDomain}/css2?family=${encodeURIComponent(font)}:wght@100;200;300;400;500;600;700;800;900&display=swap');\n`;\n  _injectGlobalCSS(css, document.head, `googleFont:${font}`, void 0, 0, nonce);\n};\nvar googleFontsDomain = \"fonts.googleapis.com\";\n\n// packages/ag-grid-community/src/theming/parts/checkbox-style/checkbox-style-default.css-GENERATED.ts\nvar checkboxStyleDefaultCSS = (\n  /*css*/\n  `.ag-checkbox-input-wrapper,.ag-radio-button-input-wrapper{background-color:var(--ag-checkbox-unchecked-background-color);border:solid var(--ag-checkbox-border-width) var(--ag-checkbox-unchecked-border-color);flex:none;height:var(--ag-icon-size);position:relative;width:var(--ag-icon-size);:where(input){-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;display:block;height:var(--ag-icon-size);margin:0;opacity:0;width:var(--ag-icon-size)}&:after{content:\"\";display:block;inset:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;pointer-events:none;position:absolute}&:where(.ag-checked){background-color:var(--ag-checkbox-checked-background-color);border-color:var(--ag-checkbox-checked-border-color);&:after{background-color:var(--ag-checkbox-checked-shape-color)}}&:where(:focus-within,:active){box-shadow:var(--ag-focus-shadow)}&:where(.ag-disabled){filter:grayscale();opacity:.5}}.ag-checkbox-input-wrapper{border-radius:var(--ag-checkbox-border-radius);&:where(.ag-checked):after{-webkit-mask-image:var(--ag-checkbox-checked-shape-image);mask-image:var(--ag-checkbox-checked-shape-image)}&:where(.ag-indeterminate){background-color:var(--ag-checkbox-indeterminate-background-color);border-color:var(--ag-checkbox-indeterminate-border-color);&:after{background-color:var(--ag-checkbox-indeterminate-shape-color);-webkit-mask-image:var(--ag-checkbox-indeterminate-shape-image);mask-image:var(--ag-checkbox-indeterminate-shape-image)}}}.ag-radio-button-input-wrapper{border-radius:100%;&:where(.ag-checked):after{-webkit-mask-image:var(--ag-radio-checked-shape-image);mask-image:var(--ag-radio-checked-shape-image)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/checkbox-style/checkbox-styles.ts\nvar makeCheckboxStyleDefaultTreeShakeable = () => createPart({\n  feature: \"checkboxStyle\",\n  params: {\n    checkboxBorderWidth: 1,\n    checkboxBorderRadius: {\n      ref: \"borderRadius\"\n    },\n    checkboxUncheckedBackgroundColor: backgroundColor,\n    checkboxUncheckedBorderColor: foregroundBackgroundMix(0.3),\n    checkboxCheckedBackgroundColor: accentColor,\n    checkboxCheckedBorderColor: { ref: \"checkboxCheckedBackgroundColor\" },\n    checkboxCheckedShapeImage: {\n      svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"7\" fill=\"none\"><path stroke=\"#000\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.75\" d=\"M1 3.5 3.5 6l5-5\"/></svg>'\n    },\n    checkboxCheckedShapeColor: backgroundColor,\n    checkboxIndeterminateBackgroundColor: foregroundBackgroundMix(0.3),\n    checkboxIndeterminateBorderColor: { ref: \"checkboxIndeterminateBackgroundColor\" },\n    checkboxIndeterminateShapeImage: {\n      svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"2\" fill=\"none\"><rect width=\"10\" height=\"2\" fill=\"#000\" rx=\"1\"/></svg>'\n    },\n    checkboxIndeterminateShapeColor: backgroundColor,\n    radioCheckedShapeImage: {\n      svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"6\" height=\"6\" fill=\"none\"><circle cx=\"3\" cy=\"3\" r=\"3\" fill=\"#000\"/></svg>'\n    }\n  },\n  css: checkboxStyleDefaultCSS\n});\nvar checkboxStyleDefault = /* @__PURE__ */ makeCheckboxStyleDefaultTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/color-scheme/color-schemes.ts\nvar makeColorSchemeLightTreeShakeable = () => createPart({\n  feature: \"colorScheme\",\n  params: defaultLightColorSchemeParams\n});\nvar colorSchemeLight = /* @__PURE__ */ makeColorSchemeLightTreeShakeable();\nvar makeColorSchemeLightWarmTreeShakeable = () => createPart({\n  feature: \"colorScheme\",\n  params: {\n    ...defaultLightColorSchemeParams,\n    foregroundColor: \"#000000de\",\n    borderColor: \"#60300026\",\n    chromeBackgroundColor: \"#60300005\"\n  }\n});\nvar colorSchemeLightWarm = /* @__PURE__ */ makeColorSchemeLightWarmTreeShakeable();\nvar makeColorSchemeLightColdTreeShakeable = () => createPart({\n  feature: \"colorScheme\",\n  params: {\n    ...defaultLightColorSchemeParams,\n    foregroundColor: \"#000\",\n    chromeBackgroundColor: \"#f3f8f8\"\n  }\n});\nvar colorSchemeLightCold = /* @__PURE__ */ makeColorSchemeLightColdTreeShakeable();\nvar darkParams = () => ({\n  ...defaultLightColorSchemeParams,\n  backgroundColor: \"hsl(217, 0%, 17%)\",\n  foregroundColor: \"#FFF\",\n  chromeBackgroundColor: foregroundBackgroundMix(0.05),\n  rowHoverColor: accentMix(0.15),\n  selectedRowBackgroundColor: accentMix(0.2),\n  menuBackgroundColor: foregroundBackgroundMix(0.1),\n  browserColorScheme: \"dark\",\n  popupShadow: \"0 0px 20px #000A\",\n  cardShadow: \"0 1px 4px 1px #000A\",\n  advancedFilterBuilderJoinPillColor: \"#7a3a37\",\n  advancedFilterBuilderColumnPillColor: \"#355f2d\",\n  advancedFilterBuilderOptionPillColor: \"#5a3168\",\n  advancedFilterBuilderValuePillColor: \"#374c86\",\n  findMatchColor: backgroundColor,\n  findActiveMatchColor: backgroundColor,\n  checkboxUncheckedBorderColor: foregroundBackgroundMix(0.4),\n  toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.4)\n});\nvar makeColorSchemeDarkTreeShakeable = () => createPart({\n  feature: \"colorScheme\",\n  params: darkParams()\n});\nvar colorSchemeDark = /* @__PURE__ */ makeColorSchemeDarkTreeShakeable();\nvar makeColorSchemeDarkWarmTreeShakeable = () => createPart({\n  feature: \"colorScheme\",\n  params: {\n    backgroundColor: \"hsl(29, 10%, 17%)\",\n    foregroundColor: \"#FFF\",\n    browserColorScheme: \"dark\"\n  }\n});\nvar darkBlueParams = () => ({\n  ...darkParams(),\n  backgroundColor: \"#1f2836\"\n});\nvar colorSchemeDarkWarm = /* @__PURE__ */ makeColorSchemeDarkWarmTreeShakeable();\nvar makeColorSchemeDarkBlueTreeShakeable = () => createPart({\n  feature: \"colorScheme\",\n  params: darkBlueParams()\n});\nvar colorSchemeDarkBlue = /* @__PURE__ */ makeColorSchemeDarkBlueTreeShakeable();\nvar makeColorSchemeVariableTreeShakeable = () => createPart({\n  feature: \"colorScheme\",\n  params: defaultLightColorSchemeParams,\n  modeParams: {\n    light: defaultLightColorSchemeParams,\n    dark: darkParams(),\n    \"dark-blue\": darkBlueParams()\n  }\n});\nvar colorSchemeVariable = /* @__PURE__ */ makeColorSchemeVariableTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/icon-set/balham/icon-set-balham.css-GENERATED.ts\nvar iconSetBalhamCSS = (\n  /*css*/\n  `.ag-icon-aggregation:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eaggregation%3C/title%3E%3Cpath d='M25.128 2.002c2.56.096 4.772 2.292 4.87 4.87a712 712 0 0 1 0 18.256c-.096 2.56-2.292 4.772-4.87 4.87a712 712 0 0 1-18.256 0c-2.558-.096-4.772-2.29-4.87-4.87a712 712 0 0 1 0-18.256c.096-2.56 2.292-4.772 4.87-4.87a712 712 0 0 1 18.256 0M7.006 4c-1.57.02-2.946 1.348-3.004 2.922-.078 6.078-.23 12.16.002 18.234.094 1.484 1.354 2.746 2.84 2.84 6.1.232 12.212.232 18.312 0 1.48-.094 2.746-1.35 2.84-2.84.232-6.1.232-12.212 0-18.312-.094-1.48-1.35-2.746-2.84-2.84C19.11 3.774 13.056 4 7.006 4M22 12h-2v-2h-8v.092c.056 1.352 3.426 2.598 4.472 4.404.682 1.174.438 2.754-.572 3.72C14.29 19.618 12 20.924 12 22h8v-2h2v4H10c0-1.586-.098-3.304 1.016-4.314 1.904-1.632 4.89-3.108 3.54-4.42-1.918-1.68-4.464-2.936-4.554-5.12L10 8h12z'/%3E%3C/svg%3E\")}.ag-icon-arrows:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Earrows%3C/title%3E%3Cpath d='m6.414 17 2.294 2.292-1.416 1.416L2.586 16l4.706-4.708 1.416 1.416L6.414 15H15V6.414l-2.292 2.294-1.416-1.416L16 2.586l4.708 4.706-1.416 1.416L17 6.414V15h8.586l-2.294-2.292 1.416-1.416L29.414 16l-4.706 4.708-1.416-1.416L25.586 17H17v8.586l2.292-2.294 1.416 1.416L16 29.414l-4.708-4.706 1.416-1.416L15 25.586V17z'/%3E%3C/svg%3E\")}.ag-icon-asc:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Easc%3C/title%3E%3Cpath d='m15 10.621-4.292 4.294-1.416-1.416L16 6.793l6.708 6.706-1.416 1.416L17 10.621v14.586h-2z'/%3E%3C/svg%3E\")}.ag-icon-cancel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecancel%3C/title%3E%3Cpath d='M16 4C9.378 4 4 9.378 4 16s5.378 12 12 12 12-5.378 12-12S22.622 4 16 4m0 2c5.52 0 10 4.48 10 10s-4.48 10-10 10S6 21.52 6 16 10.48 6 16 6m0 8.586 5.292-5.294 1.416 1.416L17.414 16l5.294 5.292-1.416 1.416L16 17.414l-5.292 5.294-1.416-1.416L14.586 16l-5.294-5.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-chart:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Echart%3C/title%3E%3Cpath d='M6.667 12.267h4v13.067h-4zm7.466-5.6h3.733v18.667h-3.733zM21.6 17.333h3.733v8H21.6z'/%3E%3C/svg%3E\")}.ag-icon-color-picker:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecolor-picker%3C/title%3E%3Cpath d='M23.907 17.587 10.574 4.254l-1.88 1.88 3.173 3.173-8.28 8.28 10.16 10.16zm-16.547 0 6.387-6.387 6.387 6.387H7.361zm18.387 2s-2.667 2.893-2.667 4.667c0 1.467 1.2 2.667 2.667 2.667s2.667-1.2 2.667-2.667c0-1.773-2.667-4.667-2.667-4.667'/%3E%3C/svg%3E\")}.ag-icon-columns:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecolumns%3C/title%3E%3Cpath d='M14 25h-2V7h2zm6 0h-2V7h2zm6 0h-2V7h2zM8 25H6V7h2z'/%3E%3C/svg%3E\")}.ag-icon-contracted:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Econtracted%3C/title%3E%3Cpath d='m21.061 16-8.706 8.708-1.416-1.416L18.233 16l-7.294-7.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-copy:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecopy%3C/title%3E%3Cpath d='M21.929 27.999h-7.828a5.09 5.09 0 0 1-5.086-5.086v-9.812a5.087 5.087 0 0 1 5.086-5.086h7.828a5.09 5.09 0 0 1 5.086 5.086v9.812a5.087 5.087 0 0 1-5.086 5.086m.16-17.984h-8.088a2.94 2.94 0 0 0-2.938 2.938v10.132a2.94 2.94 0 0 0 2.938 2.938h8.088a2.94 2.94 0 0 0 2.936-2.938V12.953a2.94 2.94 0 0 0-2.936-2.938M7.041 26.013h-2.05a4 4 0 0 1-.006-.228V9.065a5.07 5.07 0 0 1 5.064-5.064h12.812q.069 0 .134.002v2.012H9.915a2.876 2.876 0 0 0-2.874 2.874z'/%3E%3C/svg%3E\")}.ag-icon-cross:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='4 4 24 24'%3E%3Ctitle%3Ecross%3C/title%3E%3Cpath d='m16 14.586 5.292-5.294 1.416 1.416L17.414 16l5.294 5.292-1.416 1.416L16 17.414l-5.292 5.294-1.416-1.416L14.586 16l-5.294-5.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-csv:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='M.688-.226a.2.2 0 0 1-.017.074.28.28 0 0 1-.145.14.412.412 0 0 1-.234.013.28.28 0 0 1-.202-.168.468.468 0 0 1-.04-.19q0-.086.025-.155a.319.319 0 0 1 .182-.191.4.4 0 0 1 .134-.025q.087 0 .155.035a.3.3 0 0 1 .104.085.17.17 0 0 1 .036.097.06.06 0 0 1-.018.044.06.06 0 0 1-.042.019.06.06 0 0 1-.042-.013.2.2 0 0 1-.031-.046.2.2 0 0 0-.066-.079.16.16 0 0 0-.095-.027.17.17 0 0 0-.142.068.3.3 0 0 0-.053.193.4.4 0 0 0 .023.139.2.2 0 0 0 .067.083.2.2 0 0 0 .1.027q.063 0 .106-.031a.2.2 0 0 0 .065-.091.2.2 0 0 1 .023-.046q.014-.018.044-.018a.06.06 0 0 1 .044.018.06.06 0 0 1 .019.045' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 7.122 25.977)'/%3E%3Cpath d='M.622-.215a.2.2 0 0 1-.033.117.23.23 0 0 1-.098.081.4.4 0 0 1-.153.029.34.34 0 0 1-.175-.04.23.23 0 0 1-.079-.077.17.17 0 0 1-.031-.093q0-.027.019-.045a.06.06 0 0 1 .046-.019.06.06 0 0 1 .039.014.1.1 0 0 1 .027.044.3.3 0 0 0 .03.057q.015.023.044.038.03.015.076.015.065 0 .105-.03a.09.09 0 0 0 .04-.075.08.08 0 0 0-.022-.058.14.14 0 0 0-.056-.034 1 1 0 0 0-.092-.025.7.7 0 0 1-.129-.042.2.2 0 0 1-.083-.066.17.17 0 0 1-.03-.104q0-.058.032-.105a.2.2 0 0 1 .093-.07.4.4 0 0 1 .144-.025q.066 0 .114.016a.3.3 0 0 1 .08.044.2.2 0 0 1 .046.057q.015.03.015.058a.07.07 0 0 1-.018.046.06.06 0 0 1-.046.021q-.025 0-.038-.012a.2.2 0 0 1-.028-.041.2.2 0 0 0-.047-.063Q.387-.625.326-.625a.15.15 0 0 0-.09.025q-.035.024-.035.059 0 .021.012.037a.1.1 0 0 0 .032.027.4.4 0 0 0 .111.036q.06.015.11.031.048.018.083.042a.2.2 0 0 1 .054.062.2.2 0 0 1 .019.091' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 13.339 25.977)'/%3E%3Cpath d='m.184-.633.162.48.163-.483q.013-.038.019-.053a.062.062 0 0 1 .061-.039q.018 0 .034.009a.1.1 0 0 1 .025.025q.009.015.009.031L.654-.64l-.007.025-.009.024-.173.468-.019.051a.2.2 0 0 1-.021.042.1.1 0 0 1-.033.03.1.1 0 0 1-.049.012.1.1 0 0 1-.05-.011A.1.1 0 0 1 .26-.03a.2.2 0 0 1-.021-.042L.22-.123.05-.587.041-.612.033-.638.03-.662q0-.025.02-.046a.07.07 0 0 1 .05-.02q.037 0 .053.023.015.023.031.072' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 18.94 25.977)'/%3E%3C/svg%3E\")}.ag-icon-cut:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M14.703 15.096 6.215 4.719a1 1 0 1 1 1.548-1.267l13.058 15.965A5.001 5.001 0 0 1 28 23.916a5 5 0 0 1-4.999 4.999 5 5 0 0 1-4.999-4.999 4.98 4.98 0 0 1 1.23-3.283l-3.238-3.958-3.272 4.001a4.98 4.98 0 0 1 1.265 3.323 5 5 0 0 1-4.999 4.999 5 5 0 0 1-4.999-4.999 5 5 0 0 1 7.13-4.522zM8.991 20.8a3.1 3.1 0 0 0-3.1 3.1c0 1.711 1.389 3.1 3.1 3.1s3.1-1.389 3.1-3.1-1.389-3.1-3.1-3.1M23 20.8a3.1 3.1 0 0 0-3.1 3.1c0 1.711 1.389 3.1 3.1 3.1s3.1-1.389 3.1-3.1-1.389-3.1-3.1-3.1m-5.723-8.852 1.292 1.579 7.205-8.808a1 1 0 0 0-1.548-1.267z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-desc:before,.ag-icon-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Edesc%3C/title%3E%3Cpath d='m17 21.379 4.292-4.294 1.416 1.416L16 25.207l-6.708-6.706 1.416-1.416L15 21.379V6.793h2z'/%3E%3C/svg%3E\")}.ag-icon-excel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='m.052-.139.16-.234-.135-.208a.4.4 0 0 1-.028-.052.1.1 0 0 1-.01-.042.05.05 0 0 1 .018-.037.07.07 0 0 1 .045-.016q.03 0 .047.018a1 1 0 0 1 .047.066l.107.174.115-.174.024-.038.019-.026.021-.015a.1.1 0 0 1 .027-.005.06.06 0 0 1 .044.016.05.05 0 0 1 .018.039q0 .033-.038.089l-.141.211.152.234a.3.3 0 0 1 .03.051.1.1 0 0 1 .009.038.1.1 0 0 1-.008.031.1.1 0 0 1-.024.023.1.1 0 0 1-.034.008.1.1 0 0 1-.035-.008.1.1 0 0 1-.023-.022L.427-.067.301-.265l-.134.204-.022.034-.016.019a.1.1 0 0 1-.022.015.1.1 0 0 1-.03.005.06.06 0 0 1-.044-.016.06.06 0 0 1-.017-.047q0-.036.036-.088' style='fill-rule:nonzero' transform='matrix(17.82892 0 0 16.50777 10.371 25.928)'/%3E%3C/svg%3E\")}.ag-icon-expanded:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eexpanded%3C/title%3E%3Cpath d='M21.061 8.708 13.767 16l7.294 7.292-1.416 1.416L10.939 16l8.706-8.708z'/%3E%3C/svg%3E\")}.ag-icon-eye-slash:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye-slash%3C/title%3E%3Cpath d='M9.304 7.89a15.2 15.2 0 0 1 6.404-1.638c.294-.002.292-.002.584 0 5.956.174 11.328 4.088 13.62 9.748 0 0-1.318 3.178-3.224 5.174a13.6 13.6 0 0 1-2.226 1.874L26.414 25 25 26.414l-2.336-2.336C17.866 26.396 11.776 26.15 7.36 22.96a14.9 14.9 0 0 1-4.168-4.612c-.41-.71-.694-1.336-1.104-2.348 0 0 .898-2.218 2.002-3.718a14.6 14.6 0 0 1 3.442-3.334L5.586 7 7 5.586zm-.3 2.528c-2.038 1.344-3.708 3.246-4.724 5.508L4.248 16c2.46 5.762 9.622 9.064 15.63 7.15q.688-.219 1.342-.516l-.912-.912a6.96 6.96 0 0 1-4.19 1.394c-3.862 0-7-3.136-7-7 0-1.57.52-3.022 1.394-4.19zm14.032 11.204a13.25 13.25 0 0 0 4.684-5.548l.032-.074c-1.984-4.646-6.834-7.798-12.006-7.748-1.712.05-3.386.458-4.922 1.158l1.102 1.102a6.97 6.97 0 0 1 4.192-1.396 7.003 7.003 0 0 1 5.606 11.192zm-11.09-8.262a5.003 5.003 0 0 0 6.928 6.928zm8.342 5.514a5.002 5.002 0 0 0-6.928-6.928z'/%3E%3C/svg%3E\")}.ag-icon-eye:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye%3C/title%3E%3Cpath d='M16.292 6.32c5.956.174 11.328 4.086 13.62 9.746 0 0-1.318 3.18-3.224 5.176-4.862 5.088-13.534 5.97-19.328 1.784a14.9 14.9 0 0 1-4.168-4.612c-.41-.71-.694-1.336-1.104-2.348 0 0 .898-2.216 2.002-3.716 2.678-3.64 7.03-5.896 11.618-6.03.294-.004.292-.004.584 0m-.546 2c-4.896.142-9.458 3.202-11.466 7.672l-.032.074c2.46 5.762 9.622 9.066 15.63 7.152 3.458-1.102 6.342-3.738 7.842-7.076l.032-.076C25.768 11.42 20.918 8.27 15.746 8.32m.254.946c3.754 0 6.8 3.048 6.8 6.8 0 3.754-3.046 6.8-6.8 6.8s-6.8-3.046-6.8-6.8c0-3.752 3.046-6.8 6.8-6.8m5 6.768V16c0-2.76-2.24-5-5-5s-5 2.24-5 5v.066c0 2.76 2.24 5 5 5s5-2.24 5-5z'/%3E%3C/svg%3E\")}.ag-icon-filter:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Efilter%3C/title%3E%3Cpath d='M26 8.184c-.066 2.658-4.058 5.154-6.742 7.974a1.05 1.05 0 0 0-.258.682v3.66L13 25c0-2.74.066-5.482-.002-8.222a1.05 1.05 0 0 0-.256-.62C10.026 13.304 6.06 10.61 6 8.184V6h20zM8 8c0 .304.06.612.258.842 2.716 2.854 6.682 5.548 6.742 7.974V21l2-1.5v-2.684c.066-2.658 4.058-5.154 6.742-7.974.198-.23.258-.538.258-.842z'/%3E%3C/svg%3E\")}.ag-icon-first:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Efirst%3C/title%3E%3Cpath d='M24.354 8.708 17.06 16l7.294 7.292-1.416 1.416L14.232 16l8.706-8.708zM9.646 8v16h-2V8z'/%3E%3C/svg%3E\")}.ag-icon-group:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Egroup%3C/title%3E%3Cpath d='M25.128 2.002c2.56.096 4.772 2.292 4.87 4.87a712 712 0 0 1 0 18.256c-.096 2.56-2.292 4.772-4.87 4.87a712 712 0 0 1-18.256 0c-2.558-.096-4.772-2.29-4.87-4.87a712 712 0 0 1 0-18.256c.096-2.56 2.292-4.772 4.87-4.87a712 712 0 0 1 18.256 0M7.006 4c-1.57.02-2.946 1.348-3.004 2.922-.078 6.078-.23 12.16.002 18.234.094 1.484 1.354 2.746 2.84 2.84 6.1.232 12.212.232 18.312 0 1.48-.094 2.746-1.35 2.84-2.84.232-6.1.232-12.212 0-18.312-.094-1.48-1.35-2.746-2.84-2.84C19.11 3.774 13.056 4 7.006 4M14 21h-4v-2h4zm12 0H16v-2h10zm-12-4h-4v-2h4zm12 0H16v-2h10zm-16-4H6v-2h4zm16 0H12v-2h14z'/%3E%3C/svg%3E\")}.ag-icon-last:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Elast%3C/title%3E%3Cpath d='m17.768 16-8.706 8.708-1.416-1.416L14.94 16 7.646 8.708l1.416-1.416zm6.586 8h-2V8h2z'/%3E%3C/svg%3E\")}.ag-icon-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eleft%3C/title%3E%3Cpath d='m17.621 11-2 2h12.586v6H15.621l2 2-4.414 4.414L3.793 16l9.414-9.414zm-11 5 6.586 6.586L14.793 21l-4-4h15.414v-2H10.793l4-4-1.586-1.586z'/%3E%3C/svg%3E\")}.ag-icon-linked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Elinked%3C/title%3E%3Cpath d='M17.138 13.418a1.03 1.03 0 0 0-.298.658s.125.096.226.178c1.372 1.114 2.033 3.039 1.582 4.796a4.7 4.7 0 0 1-1.205 2.123c-1.145 1.151-2.296 2.294-3.445 3.441-1.241 1.232-3.185 1.691-4.864 1.105-1.546-.54-2.756-1.938-3.048-3.572-.267-1.496.246-3.108 1.319-4.186l.578-.578-.03-.092a10.5 10.5 0 0 1-.452-2.3v-.005c-.776.775-1.621 1.489-2.275 2.396-1.817 2.522-1.643 6.323.706 8.669 1.813 1.811 4.708 2.462 7.171 1.517a6.75 6.75 0 0 0 2.336-1.518l3.427-3.424c1.939-1.954 2.533-5.126 1.294-7.674a6.8 6.8 0 0 0-2.071-2.481l-.003-.002zM21.265 4a6.8 6.8 0 0 0-4.734 1.964l-3.427 3.424c-1.961 1.977-2.52 5.092-1.32 7.619a6.8 6.8 0 0 0 2.098 2.537l.003.002c.32-.32.643-.637.96-.96.167-.172.27-.401.286-.64l-.204-.167c-1.603-1.287-2.215-3.68-1.316-5.616a4.7 4.7 0 0 1 .918-1.32c1.145-1.151 2.296-2.294 3.445-3.441 1.239-1.23 3.178-1.694 4.864-1.105 1.83.639 3.16 2.498 3.12 4.493a4.8 4.8 0 0 1-1.391 3.265l-.578.578.03.092c.235.743.387 1.519.452 2.3v.005c.732-.731 1.521-1.406 2.162-2.244 1.192-1.559 1.643-3.651 1.204-5.575a6.8 6.8 0 0 0-3.98-4.703 6.8 6.8 0 0 0-2.529-.506h-.061z'/%3E%3C/svg%3E\")}.ag-icon-loading:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eloading%3C/title%3E%3Cpath d='M17 29h-2v-8h2zm-3.586-9L7 26.414 5.586 25 12 18.586zm13 5L25 26.414 18.586 20 20 18.586zM29 17h-8v-2h8zm-18 0H3v-2h8zm2.414-5L12 13.414 5.586 7 7 5.586zm13-5L20 13.414 18.586 12 25 5.586zM17 11h-2V3h2z'/%3E%3C/svg%3E\")}.ag-icon-maximize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='3 3 26 26'%3E%3Ctitle%3Emaximize%3C/title%3E%3Cpath d='m7.54 17.4.1 6.98 6.96.1-2.24-2.24L16 18.6 13.4 16l-3.64 3.64zm16.92-2.8-.1-6.98-6.96-.1 2.24 2.24L16 13.4l2.6 2.6 3.64-3.64z'/%3E%3C/svg%3E\")}.ag-icon-menu:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Emenu%3C/title%3E%3Cpath d='M26 23H6v-2h20zm0-6H6v-2h20zm0-6H6V9h20z'/%3E%3C/svg%3E\")}.ag-icon-menu-alt:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none'%3E%3Cpath fill='%23000' d='M16 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0-7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4'/%3E%3C/svg%3E\")}.ag-icon-minimize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='3 3 26 26'%3E%3Ctitle%3Eminimize%3C/title%3E%3Cpath d='m14.8 24.26-.1-6.96-6.96-.1 2.24 2.24-3.64 3.64 2.6 2.6 3.64-3.64zm2.4-16.52.1 6.96 6.96.1-2.24-2.24 3.64-3.64-2.6-2.6-3.64 3.64z'/%3E%3C/svg%3E\")}.ag-icon-minus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.515 7.515c-4.683 4.682-4.683 12.288 0 16.97 4.682 4.683 12.288 4.683 16.97 0 4.683-4.682 4.683-12.288 0-16.97-4.682-4.683-12.288-4.683-16.97 0m1.414 1.414c3.903-3.903 10.239-3.903 14.142 0s3.903 10.239 0 14.142-10.239 3.903-14.142 0-3.903-10.239 0-14.142m-1.414 6.07h16.97v2.002H7.515z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-next:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enext%3C/title%3E%3Cpath d='m21.061 16-8.706 8.708-1.416-1.416L18.233 16l-7.294-7.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-none:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enone%3C/title%3E%3Cpath d='m10.044 21.258 4.478-4.198L16 18.444 9 25l-7-6.556 1.478-1.384 4.478 4.198V7h2.088zm14 3.742h-2.088V10.742l-4.478 4.198L16 13.556 23 7q3.5 3.28 7 6.556l-1.478 1.384-4.478-4.198z'/%3E%3C/svg%3E\")}.ag-icon-not-allowed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enot-allowed%3C/title%3E%3Cpath d='M16.186 3.646c8.188.154 14.898 9.796 11.17 17.78-3.298 7.066-13.932 9.374-19.848 3.87-3.9-3.632-5.076-9.896-2.684-14.708 2.082-4.19 6.588-6.974 11.362-6.942m-.298 1.998c-6.922.132-12.578 8.308-9.33 15.052 3.342 6.934 15.246 7.646 18.932 0 3.076-6.386-1.988-15.1-9.602-15.052m7.596 6.422c2.864 5.33-1.744 13.186-8.306 12.536a8.6 8.6 0 0 1-3.232-.998l-1.266-.706L22.778 10.8q.351.633.706 1.266m-9.422 10.276c3.296 1.028 7.246-1.006 8.216-4.418a6.6 6.6 0 0 0-.056-3.742zm2.104-14.696a8.8 8.8 0 0 1 3.936 1.038l1.266.706L9.27 21.488c-3.018-5.41-.99-13.37 6.318-13.834q.289-.01.578-.008m-.31 2c-4.06.154-7.23 4.614-6.03 8.46l8.16-8.16a6.8 6.8 0 0 0-2.13-.3'/%3E%3C/svg%3E\")}.ag-icon-paste:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epaste%3C/title%3E%3Cpath d='M20 6.5c0-1-1-3-4-3s-4 2-4 3H8c-2.21 0-4 1.79-4 4v14c0 2.21 1.79 4 4 4h16c2.21 0 4-1.79 4-4v-14c0-2.21-1.79-4-4-4zm-4 .546c.734 0 1.334.572 1.334 1.272S16.734 9.59 16 9.59s-1.334-.572-1.334-1.272.6-1.272 1.334-1.272M24 26.5H8a2 2 0 0 1-2-2v-14a2 2 0 0 1 2-2h2v4h12v-4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2'/%3E%3C/svg%3E\")}.ag-icon-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epin%3C/title%3E%3Cpath d='m10.78 19.777-4.668-4.666s.032-1 .67-1.87c1.366-1.86 4.052-1.96 6.056-1.572l3.158-3.108c-.7-2.342 3.352-5.046 3.352-5.046l9.166 9.168q-.334.447-.67.894c-1.074 1.426-2.538 2.63-4.272 2.338l-3.32 3.218c.046.344.042.03.118 1.152.144 2.13-.64 4.324-2.632 5.34l-.746.364-4.798-4.798-7.292 7.294-1.416-1.416zm8.24-13.672c-.688.568-1.416 1.45-1.024 2.072l.49.722-4.986 4.988c-1.988-.506-4.346-.636-5.156.614l9.02 9.032q.14-.099.272-.21c1.226-1.08.764-3.04.498-4.9l4.79-4.79s1.47.938 2.936-.776l-6.79-6.79q-.026.019-.05.038'/%3E%3C/svg%3E\")}.ag-icon-pivot:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epivot%3C/title%3E%3Cpath d='M25.128 2.002c2.56.096 4.772 2.292 4.87 4.87a712 712 0 0 1 0 18.256c-.096 2.56-2.292 4.772-4.87 4.87a712 712 0 0 1-18.256 0c-2.558-.096-4.772-2.29-4.87-4.87a712 712 0 0 1 0-18.256c.096-2.56 2.292-4.772 4.87-4.87a712 712 0 0 1 18.256 0m2.966 7.954H9.892v18.136c5.086.13 10.18.098 15.264-.096 1.48-.094 2.746-1.35 2.84-2.84.192-5.064.226-10.134.098-15.2M3.968 24.1q.015.528.036 1.056c.094 1.484 1.354 2.746 2.84 2.84l1.012.036V24.1zM22 15.414l-.292.294-1.416-1.416L23 11.586l2.708 2.706-1.416 1.416-.292-.294v3.592c-.032 2.604-2.246 4.892-4.872 4.992L15.414 24l.294.292-1.416 1.416L11.586 23l2.706-2.708 1.416 1.416-.322.32c3.372.03 6.578-.164 6.614-3.034zM3.88 18.038c.002 1.346.012 2.694.038 4.04h3.938v-4.04zm.05-6.062a681 681 0 0 0-.044 4.042h3.97v-4.042zm5.962-7.99Q8.449 3.999 7.006 4c-1.57.02-2.946 1.348-3.004 2.922q-.02 1.517-.042 3.034h3.896v-2.02h2.036zm14.244-.016v3.966h3.898q-.017-.546-.038-1.092c-.094-1.48-1.35-2.746-2.84-2.84q-.51-.019-1.02-.034m-8.14-.054q-2.035.022-4.07.048v3.972h4.07zm6.106.008c-1.358-.022-2.714-.026-4.07-.022v4.034h4.07z'/%3E%3C/svg%3E\")}.ag-icon-plus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.515 7.515c-4.683 4.682-4.683 12.288 0 16.97 4.682 4.683 12.288 4.683 16.97 0 4.683-4.682 4.683-12.288 0-16.97-4.682-4.683-12.288-4.683-16.97 0m1.414 1.414c3.903-3.903 10.239-3.903 14.142 0s3.903 10.239 0 14.142-10.239 3.903-14.142 0-3.903-10.239 0-14.142M15 15l-.001-7.485h2.002L17 15l7.485-.001v2.002L17 17l.001 7.485h-2.002L15 17l-7.485.001v-2.002z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-previous:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eprevious%3C/title%3E%3Cpath d='M21.061 8.708 13.767 16l7.294 7.292-1.416 1.416L10.939 16l8.706-8.708z'/%3E%3C/svg%3E\")}.ag-icon-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eright%3C/title%3E%3Cpath d='m28.207 16-9.414 9.414L14.379 21l2-2H3.793v-6h12.586l-2-2 4.414-4.414zm-11-5 4 4H5.793v2h15.414l-4 4 1.586 1.586L25.379 16l-6.586-6.586z'/%3E%3C/svg%3E\")}.ag-icon-save:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esave%3C/title%3E%3Cpath d='M25.333 16v9.333H6.666V16H3.999v9.333C3.999 26.8 5.199 28 6.666 28h18.667C26.8 28 28 26.8 28 25.333V16zm-8 .893 3.453-3.44 1.88 1.88L15.999 22l-6.667-6.667 1.88-1.88 3.453 3.44V4h2.667v12.893z'/%3E%3C/svg%3E\")}.ag-icon-small-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-down%3C/title%3E%3Cpath d='M24.708 12.355 16 21.061l-8.708-8.706 1.416-1.416L16 18.233l7.292-7.294z'/%3E%3C/svg%3E\")}.ag-icon-small-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-left%3C/title%3E%3Cpath d='M21.061 8.708 13.767 16l7.294 7.292-1.416 1.416L10.939 16l8.706-8.708z'/%3E%3C/svg%3E\")}.ag-icon-small-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-right%3C/title%3E%3Cpath d='m21.061 16-8.706 8.708-1.416-1.416L18.233 16l-7.294-7.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-small-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-up%3C/title%3E%3Cpath d='m24.708 19.645-1.416 1.416L16 13.767l-7.292 7.294-1.416-1.416L16 10.939z'/%3E%3C/svg%3E\")}.ag-icon-tick:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etick%3C/title%3E%3Cpath d='M24.708 10.855 13 22.561l-5.708-5.706 1.416-1.416L13 19.733 23.292 9.439z'/%3E%3C/svg%3E\")}.ag-icon-tree-closed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-closed%3C/title%3E%3Cpath d='m21.061 16-8.706 8.708-1.416-1.416L18.233 16l-7.294-7.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-tree-indeterminate:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-indeterminate%3C/title%3E%3Cpath d='M6 15h20v2H6z'/%3E%3C/svg%3E\")}.ag-icon-tree-open:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-open%3C/title%3E%3Cpath d='M24.708 12.355 16 21.061l-8.708-8.706 1.416-1.416L16 18.233l7.292-7.294z'/%3E%3C/svg%3E\")}.ag-icon-unlinked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eunlinked%3C/title%3E%3Cpath d='M5.35 3.999a.2.2 0 0 0-.14.058c-.388.38-.768.768-1.152 1.152a.21.21 0 0 0-.002.288c7.459 7.506 14.965 14.965 22.447 22.447a.21.21 0 0 0 .288.002q.576-.574 1.151-1.151a.21.21 0 0 0 .002-.288C20.484 19.002 12.979 11.542 5.497 4.06a.2.2 0 0 0-.146-.061zm.611 12.548c-1.933 1.939-2.538 5.119-1.289 7.688a6.79 6.79 0 0 0 4.891 3.672 6.82 6.82 0 0 0 5.893-1.866l1.984-1.984-1.438-1.438-1.986 1.986c-1.486 1.476-3.993 1.81-5.834.629a4.73 4.73 0 0 1-2.024-2.853 4.76 4.76 0 0 1 1.241-4.393l1.986-1.986-1.438-1.438-1.984 1.984zM21.273 3.999a6.78 6.78 0 0 0-4.727 1.963l-1.984 1.984L16 9.384l1.985-1.985a4.74 4.74 0 0 1 2.776-1.338c1.974-.224 4.045.926 4.845 2.834.712 1.699.329 3.778-1.004 5.12L22.616 16l1.439 1.438q1-1 2-2c2.012-2.031 2.557-5.368 1.112-7.982-1.144-2.07-3.432-3.441-5.834-3.459h-.061z'/%3E%3C/svg%3E\")}.ag-icon-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Easc%3C/title%3E%3Cpath d='m15 10.621-4.292 4.294-1.416-1.416L16 6.793l6.708 6.706-1.416 1.416L17 10.621v14.586h-2z'/%3E%3C/svg%3E\")}.ag-icon-grip:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Egrip%3C/title%3E%3Cpath d='M8 24H6v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zM8 18H6v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zM8 12H6V8h2zm6 0h-2V8h2zm6 0h-2V8h2zm6 0h-2V8h2z'/%3E%3C/svg%3E\")}.ag-icon-settings:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M30 8h-4.1c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2v2h14.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30zm-9 4c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3M2 24h4.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30v-2H15.9c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2zm9-4c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3'/%3E%3C/svg%3E\")}.ag-icon-column-arrow:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M11 4a1 1 0 0 1 1 1v22a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1' clip-rule='evenodd'/%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M2 13a1 1 0 0 1 1-1h23.5a1 1 0 1 1 0 2H3a1 1 0 0 1-1-1' clip-rule='evenodd'/%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M2 4h18v24H2zm2 2v20h14V6zM26.793 13 23 9.207l1.414-1.414L29.621 13l-5.207 5.207L23 16.793z' clip-rule='evenodd'/%3E%3C/svg%3E\")}.ag-icon-un-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='m6.112 15.111 3.272 3.271 1.436-1.402-2.476-2.479c.81-1.25 3.168-1.12 5.156-.614l4.986-4.988-.49-.722c-.392-.622.336-1.504 1.024-2.072l.008-.007.01-.006.032-.025 1.447 1.447 1.432-1.397-2.601-2.602s-4.052 2.704-3.352 5.046l-3.158 3.108c-2.004-.388-4.69-.288-6.056 1.572-.638.87-.67 1.87-.67 1.87m.581 11.582.014.014 5.502-5.501 4.783 4.783.746-.364c1.992-1.016 2.776-3.21 2.632-5.34-.055-.805-.068-.87-.088-.97-.008-.04-.017-.085-.03-.182l3.32-3.218c1.734.292 3.198-.912 4.272-2.338q.337-.447.67-.894l-.001-.001-.007-.007-.007-.007-.007-.007-3.87-3.87 1.585-1.584-1.414-1.414-14.381 14.38-1.237 1.209-5.69 5.687 1.417 1.416zM23.21 10.206l2.65 2.651c-1.465 1.714-2.935.776-2.935.776l-4.79 4.79q.041.291.087.583c.257 1.676.513 3.35-.585 4.317a4 4 0 0 1-.272.21l-3.739-3.744z' clip-rule='evenodd'/%3E%3C/svg%3E\")}.ag-icon-pinned-top:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' d='m16.708 10.878 8.708 8.706L24 21l-6.292-6.294V27h-2V14.706L9.416 21 8 19.584q4.348-4.344 8.691-8.69zM25 6H8v2h17z'/%3E%3C/svg%3E\")}.ag-icon-pinned-bottom:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' d='M16.708 22.122 8 13.416 9.416 12l6.292 6.294V6h2v12.294L24 12l1.416 1.416-8.691 8.69zM7.416 28h17v-2h-17z'/%3E%3C/svg%3E\")}`\n);\n\n// packages/ag-grid-community/src/theming/parts/icon-set/balham/icon-set-balham.ts\nvar iconSetBalham = /* @__PURE__ */ createPart({\n  feature: \"iconSet\",\n  css: iconSetBalhamCSS\n});\n\n// packages/ag-grid-community/src/theming/parts/icon-set/alpine/icon-set-alpine.css-GENERATED.ts\nvar iconSetAlpineCSS = (\n  /*css*/\n  `.ag-icon-aggregation:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M24 6H8v2l8 8-8 8v2h16v-2H11l8-8-8-8h13z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-arrows:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.515 11.171 2.687 16l4.828 4.829-1.414 1.414L-.142 16l6.243-6.243zm16.97 0 1.414-1.414L32.142 16l-6.243 6.243-1.414-1.414L29.313 16zM16.028 13.2l2.829 2.828-2.829 2.829-2.828-2.829zm-4.857 11.285L16 29.313l4.829-4.828 1.414 1.414L16 32.142l-6.243-6.243zm0-16.97L9.757 6.101 16-.142l6.243 6.243-1.414 1.414L16 2.687z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-asc:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m5.333 16 1.88 1.88 7.453-7.44v16.227h2.667V10.44l7.44 7.453L26.666 16 15.999 5.333 5.332 16z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-cancel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M16 2.667A13.32 13.32 0 0 0 2.667 16c0 7.373 5.96 13.333 13.333 13.333S29.333 23.373 29.333 16 23.373 2.667 16 2.667m6.667 18.12-1.88 1.88L16 17.88l-4.787 4.787-1.88-1.88L14.12 16l-4.787-4.787 1.88-1.88L16 14.12l4.787-4.787 1.88 1.88L17.88 16z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-chart:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Echart%3C/title%3E%3Cg fill='%23000' fill-rule='nonzero'%3E%3Cpath d='M14 7h4v18h-4zM8 17h4v8H8zM20 13h4v12h-4z'/%3E%3C/g%3E%3C/svg%3E\")}.ag-icon-color-picker:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M23.907 17.587 10.574 4.254l-1.88 1.88 3.173 3.173-8.28 8.28 10.16 10.16zm-16.547 0 6.387-6.387 6.387 6.387zm18.387 2s-2.667 2.893-2.667 4.667c0 1.467 1.2 2.667 2.667 2.667s2.667-1.2 2.667-2.667c0-1.773-2.667-4.667-2.667-4.667' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-columns:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M26 25H6V7h20zM12 11H8v12h4zm6 0h-4v12h4zm6 12V11h-4v12z' style='fill-rule:nonzero' transform='translate(0 -1)'/%3E%3C/svg%3E\")}.ag-icon-contracted:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m12 6 10 10-10 10-2-2 8-8-8-8z'/%3E%3C/svg%3E\")}.ag-icon-copy:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M22 1.333H6A2.675 2.675 0 0 0 3.333 4v18.667H6V4h16zm4 5.334H11.333a2.675 2.675 0 0 0-2.667 2.667v18.667c0 1.467 1.2 2.667 2.667 2.667H26c1.467 0 2.667-1.2 2.667-2.667V9.334c0-1.467-1.2-2.667-2.667-2.667M26 28H11.333V9.333H26z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-cross:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M15.984 13.894 27.05 2.828l2.122 2.122-11.066 11.066 11.066 11.066-2.122 2.12-11.066-11.066L4.918 29.202l-2.12-2.12 11.066-11.066L2.798 4.95l2.12-2.122z'/%3E%3C/svg%3E\")}.ag-icon-csv:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='M.688-.226a.2.2 0 0 1-.017.074.28.28 0 0 1-.145.14.412.412 0 0 1-.234.013.28.28 0 0 1-.202-.168.468.468 0 0 1-.04-.19q0-.086.025-.155a.319.319 0 0 1 .182-.191.4.4 0 0 1 .134-.025q.087 0 .155.035a.3.3 0 0 1 .104.085.17.17 0 0 1 .036.097.06.06 0 0 1-.018.044.06.06 0 0 1-.042.019.06.06 0 0 1-.042-.013.2.2 0 0 1-.031-.046.2.2 0 0 0-.066-.079.16.16 0 0 0-.095-.027.17.17 0 0 0-.142.068.3.3 0 0 0-.053.193.4.4 0 0 0 .023.139.2.2 0 0 0 .067.083.2.2 0 0 0 .1.027q.063 0 .106-.031a.2.2 0 0 0 .065-.091.2.2 0 0 1 .023-.046q.014-.018.044-.018a.06.06 0 0 1 .044.018.06.06 0 0 1 .019.045' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 7.122 25.977)'/%3E%3Cpath d='M.622-.215a.2.2 0 0 1-.033.117.23.23 0 0 1-.098.081.4.4 0 0 1-.153.029.34.34 0 0 1-.175-.04.23.23 0 0 1-.079-.077.17.17 0 0 1-.031-.093q0-.027.019-.045a.06.06 0 0 1 .046-.019.06.06 0 0 1 .039.014.1.1 0 0 1 .027.044.3.3 0 0 0 .03.057q.015.023.044.038.03.015.076.015.065 0 .105-.03a.09.09 0 0 0 .04-.075.08.08 0 0 0-.022-.058.14.14 0 0 0-.056-.034 1 1 0 0 0-.092-.025.7.7 0 0 1-.129-.042.2.2 0 0 1-.083-.066.17.17 0 0 1-.03-.104q0-.058.032-.105a.2.2 0 0 1 .093-.07.4.4 0 0 1 .144-.025q.066 0 .114.016a.3.3 0 0 1 .08.044.2.2 0 0 1 .046.057q.015.03.015.058a.07.07 0 0 1-.018.046.06.06 0 0 1-.046.021q-.025 0-.038-.012a.2.2 0 0 1-.028-.041.2.2 0 0 0-.047-.063Q.387-.625.326-.625a.15.15 0 0 0-.09.025q-.035.024-.035.059 0 .021.012.037a.1.1 0 0 0 .032.027.4.4 0 0 0 .111.036q.06.015.11.031.048.018.083.042a.2.2 0 0 1 .054.062.2.2 0 0 1 .019.091' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 13.339 25.977)'/%3E%3Cpath d='m.184-.633.162.48.163-.483q.013-.038.019-.053a.062.062 0 0 1 .061-.039q.018 0 .034.009a.1.1 0 0 1 .025.025q.009.015.009.031L.654-.64l-.007.025-.009.024-.173.468-.019.051a.2.2 0 0 1-.021.042.1.1 0 0 1-.033.03.1.1 0 0 1-.049.012.1.1 0 0 1-.05-.011A.1.1 0 0 1 .26-.03a.2.2 0 0 1-.021-.042L.22-.123.05-.587.041-.612.033-.638.03-.662q0-.025.02-.046a.07.07 0 0 1 .05-.02q.037 0 .053.023.015.023.031.072' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 18.94 25.977)'/%3E%3C/svg%3E\")}.ag-icon-cut:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M13.775 15.198 3.835 2.945a1.501 1.501 0 0 1 2.33-1.89l14.997 18.488A6.003 6.003 0 0 1 29.657 25c0 3.311-2.688 6-6 6s-6-2.689-6-6c0-1.335.437-2.569 1.176-3.566l-3.127-3.855-3.001 3.7A5.97 5.97 0 0 1 14 25c0 3.311-2.689 6-6 6s-6-2.689-6-6a6.003 6.003 0 0 1 8.315-5.536zm9.882 6.702a3.1 3.1 0 0 0-3.1 3.1c0 1.711 1.389 3.1 3.1 3.1s3.1-1.389 3.1-3.1-1.389-3.1-3.1-3.1M8 21.95a3.05 3.05 0 1 0 .001 6.101A3.05 3.05 0 0 0 8 21.95m9.63-11.505 1.932 2.381 8.015-9.881a1.5 1.5 0 0 0-2.329-1.89z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-desc:before,.ag-icon-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m26.667 16-1.88-1.88-7.453 7.44V5.333h-2.667V21.56l-7.44-7.453L5.334 16l10.667 10.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-excel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='m.052-.139.16-.234-.135-.208a.4.4 0 0 1-.028-.052.1.1 0 0 1-.01-.042.05.05 0 0 1 .018-.037.07.07 0 0 1 .045-.016q.03 0 .047.018a1 1 0 0 1 .047.066l.107.174.115-.174.024-.038.019-.026.021-.015a.1.1 0 0 1 .027-.005.06.06 0 0 1 .044.016.05.05 0 0 1 .018.039q0 .033-.038.089l-.141.211.152.234a.3.3 0 0 1 .03.051.1.1 0 0 1 .009.038.1.1 0 0 1-.008.031.1.1 0 0 1-.024.023.1.1 0 0 1-.034.008.1.1 0 0 1-.035-.008.1.1 0 0 1-.023-.022L.427-.067.301-.265l-.134.204-.022.034-.016.019a.1.1 0 0 1-.022.015.1.1 0 0 1-.03.005.06.06 0 0 1-.044-.016.06.06 0 0 1-.017-.047q0-.036.036-.088' style='fill-rule:nonzero' transform='matrix(17.82892 0 0 16.50777 10.371 25.928)'/%3E%3C/svg%3E\")}.ag-icon-expanded:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M20 26 10 16 20 6l2 2-8 8 8 8z'/%3E%3C/svg%3E\")}.ag-icon-eye-slash:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye-slash%3C/title%3E%3Cpath fill='%23000' fill-rule='nonzero' d='M8.95 10.364 7 8.414 8.414 7l2.32 2.32A13.2 13.2 0 0 1 16.5 8c5.608 0 10.542 3.515 12.381 8.667L29 17l-.119.333a13 13 0 0 1-4.255 5.879l1.466 1.466-1.414 1.414-1.754-1.753A13.2 13.2 0 0 1 16.5 26c-5.608 0-10.542-3.515-12.381-8.667L4 17l.119-.333a13 13 0 0 1 4.83-6.303m1.445 1.445A11.02 11.02 0 0 0 6.148 17c1.646 4.177 5.728 7 10.352 7 1.76 0 3.441-.409 4.94-1.146l-1.878-1.878A5.06 5.06 0 0 1 16.5 22c-2.789 0-5.05-2.239-5.05-5 0-1.158.398-2.223 1.065-3.07zm1.855-.974 1.794 1.795A5.07 5.07 0 0 1 16.5 12c2.789 0 5.05 2.239 5.05 5 0 .9-.24 1.745-.661 2.474l2.305 2.306A11 11 0 0 0 26.852 17c-1.646-4.177-5.728-7-10.352-7-1.495 0-2.933.295-4.25.835'/%3E%3C/svg%3E\")}.ag-icon-eye:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M16.5 23c4.624 0 8.706-2.823 10.352-7-1.646-4.177-5.728-7-10.352-7s-8.706 2.823-10.352 7c1.646 4.177 5.728 7 10.352 7M4.119 15.667C5.958 10.515 10.892 7 16.5 7s10.542 3.515 12.381 8.667L29 16l-.119.333C27.042 21.485 22.108 25 16.5 25S5.958 21.485 4.119 16.333L4 16zM16.5 21c2.789 0 5.049-2.239 5.049-5s-2.26-5-5.049-5-5.049 2.239-5.049 5 2.26 5 5.049 5' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-filter:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m28 8-8 8v5l-6 6V16L6 8V6h22zM9 8l7 7v7l2-2v-5l7-7z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-first:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M24.273 22.12 18.153 16l6.12-6.12L22.393 8l-8 8 8 8zM7.727 8h2.667v16H7.727z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-group:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M14 7v1H9V7zm0-3v1H5.001V4zm-7 7H5v-1h2zm0-3H5V7h2zM3 5H1V4h2zm11 5v1H9v-1zm-7 4H5v-1h2zm7-1v1H9v-1z' style='fill-rule:nonzero' transform='matrix(2 0 0 2 0 -2)'/%3E%3C/svg%3E\")}.ag-icon-last:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m7.727 9.88 6.12 6.12-6.12 6.12L9.607 24l8-8-8-8zM21.607 8h2.667v16h-2.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M26.667 14.667H10.44l7.453-7.453L16 5.334 5.333 16.001 16 26.668l1.88-1.88-7.44-7.453h16.227z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-linked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M5.2 16a4.136 4.136 0 0 1 4.133-4.133h5.333V9.334H9.333a6.67 6.67 0 0 0-6.667 6.667 6.67 6.67 0 0 0 6.667 6.667h5.333v-2.533H9.333A4.136 4.136 0 0 1 5.2 16.002zm5.467 1.333h10.667v-2.667H10.667zm12-8h-5.333v2.533h5.333a4.136 4.136 0 0 1 4.133 4.133 4.136 4.136 0 0 1-4.133 4.133h-5.333v2.533h5.333a6.67 6.67 0 0 0 6.667-6.667 6.67 6.67 0 0 0-6.667-6.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-loading:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M17 29h-2v-8h2zm-3.586-9L7 26.414 5.586 25 12 18.586zm13 5L25 26.414 18.586 20 20 18.586zM29 17h-8v-2h8zm-18 0H3v-2h8zm2.414-5L12 13.414 5.586 7 7 5.586zm13-5L20 13.414 18.586 12 25 5.586zM17 11h-2V3h2z' style='fill-rule:nonzero' transform='translate(-3.692 -3.692)scale(1.23077)'/%3E%3C/svg%3E\")}.ag-icon-maximize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M14 30H2V18h2.828v7.05l8.254-8.252 2.12 2.12-8.252 8.254H14zm4-28h12v12h-2.828V6.95l-8.254 8.252-2.12-2.12 8.252-8.254H18z'/%3E%3C/svg%3E\")}.ag-icon-menu:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M20 13H0v-2h20zm0-6H0V5h20zm0-6H0v-2h20z' style='fill-rule:nonzero' transform='translate(6 9)'/%3E%3C/svg%3E\")}.ag-icon-menu-alt:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M16 19a3 3 0 1 0 0-6 3 3 0 0 0 0 6M16 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6M16 27a3 3 0 1 0 0-6 3 3 0 0 0 0 6'/%3E%3C/svg%3E\")}.ag-icon-minimize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M2 18h12v12h-2.828v-7.05l-8.254 8.252-2.12-2.12 8.252-8.254H2zm28-4H18V2h2.828v7.05L29.082.798l2.12 2.12-8.252 8.254H30z'/%3E%3C/svg%3E\")}.ag-icon-minus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6.572 6.572a13.32 13.32 0 0 0 0 18.856 13.32 13.32 0 0 0 18.856 0 13.32 13.32 0 0 0 0-18.856 13.32 13.32 0 0 0-18.856 0m17.527 8.099v2.658H7.901v-2.658z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-next:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M10.94 6 9.06 7.88 17.167 16 9.06 24.12 10.94 26l10-10z' style='fill-rule:nonzero' transform='translate(1)'/%3E%3C/svg%3E\")}.ag-icon-none:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enone%3C/title%3E%3Cg fill='%23000' fill-rule='nonzero'%3E%3Cpath d='M23.708 14.645 16 6.939l-7.708 7.706 1.416 1.416L16 9.767l6.292 6.294zM23.708 20.355 16 28.061l-7.708-7.706 1.416-1.416L16 25.233l6.292-6.294z'/%3E%3C/g%3E%3C/svg%3E\")}.ag-icon-not-allowed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M16 2.667C8.64 2.667 2.667 8.64 2.667 16S8.64 29.333 16 29.333 29.333 23.36 29.333 16 23.36 2.667 16 2.667M5.333 16c0-5.893 4.773-10.667 10.667-10.667 2.467 0 4.733.84 6.533 2.253L7.586 22.533A10.54 10.54 0 0 1 5.333 16M16 26.667c-2.467 0-4.733-.84-6.533-2.253L24.414 9.467A10.54 10.54 0 0 1 26.667 16c0 5.893-4.773 10.667-10.667 10.667' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-paste:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M25.334 4H19.76C19.2 2.453 17.733 1.333 16 1.333S12.8 2.453 12.24 4H6.667A2.675 2.675 0 0 0 4 6.667V28c0 1.467 1.2 2.667 2.667 2.667h18.667c1.467 0 2.667-1.2 2.667-2.667V6.667C28.001 5.2 26.801 4 25.334 4M16 4c.733 0 1.333.6 1.333 1.333s-.6 1.333-1.333 1.333-1.333-.6-1.333-1.333S15.267 4 16 4m9.333 24H6.666V6.667h2.667v4h13.333v-4h2.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m10.78 19.777-4.668-4.666s.032-1 .67-1.87c1.366-1.86 4.052-1.96 6.056-1.572l3.158-3.108c-.7-2.342 3.352-5.046 3.352-5.046l9.166 9.168q-.334.447-.67.894c-1.074 1.426-2.538 2.63-4.272 2.338l-3.32 3.218c.046.344.042.03.118 1.152.144 2.13-.64 4.324-2.632 5.34l-.746.364-4.798-4.798-7.292 7.294-1.416-1.416zm8.24-13.672c-.688.568-1.416 1.45-1.024 2.072l.49.722-4.986 4.988c-1.988-.506-4.346-.636-5.156.614l9.02 9.032q.14-.099.272-.21c1.226-1.08.764-3.04.498-4.9l4.79-4.79s1.47.938 2.936-.776l-6.79-6.79q-.026.019-.05.038' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-pivot:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M25.128 2.002c2.56.096 4.772 2.292 4.87 4.87a712 712 0 0 1 0 18.256c-.096 2.56-2.292 4.772-4.87 4.87a712 712 0 0 1-18.256 0c-2.558-.096-4.772-2.29-4.87-4.87a712 712 0 0 1 0-18.256c.096-2.56 2.292-4.772 4.87-4.87a712 712 0 0 1 18.256 0m2.966 7.954H9.892v18.136c5.086.13 10.18.098 15.264-.096 1.48-.094 2.746-1.35 2.84-2.84.192-5.064.226-10.134.098-15.2M3.968 24.1q.015.528.036 1.056c.094 1.484 1.354 2.746 2.84 2.84l1.012.036V24.1zM22 15.414l-.292.294-1.416-1.416L23 11.586l2.708 2.706-1.416 1.416-.292-.294v3.592c-.032 2.604-2.246 4.892-4.872 4.992L15.414 24l.294.292-1.416 1.416L11.586 23l2.706-2.708 1.416 1.416-.322.32c3.372.03 6.578-.164 6.614-3.034zM3.88 18.038c.002 1.346.012 2.694.038 4.04h3.938v-4.04zm.05-6.062a681 681 0 0 0-.044 4.042h3.97v-4.042zm5.962-7.99Q8.449 3.999 7.006 4c-1.57.02-2.946 1.348-3.004 2.922q-.02 1.517-.042 3.034h3.896v-2.02h2.036zm14.244-.016v3.966h3.898q-.017-.546-.038-1.092c-.094-1.48-1.35-2.746-2.84-2.84q-.51-.019-1.02-.034m-8.14-.054q-2.035.022-4.07.048v3.972h4.07zm6.106.008a213 213 0 0 0-4.07-.022v4.034h4.07z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-plus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6.572 6.572a13.32 13.32 0 0 0 0 18.856 13.32 13.32 0 0 0 18.856 0 13.32 13.32 0 0 0 0-18.856 13.32 13.32 0 0 0-18.856 0m17.527 8.099v2.658h-6.77v6.77h-2.658v-6.77h-6.77v-2.658h6.77v-6.77h2.658v6.77z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-previous:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M21.94 7.88 20.06 6l-10 10 10 10 1.88-1.88L13.833 16z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m16 5.333-1.88 1.88 7.44 7.453H5.333v2.667H21.56l-7.44 7.453 1.88 1.88 10.667-10.667L16 5.332z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-save:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M15.708 2.355 8 10.061.292 2.355 1.708.939 8 7.233 14.292.939z' style='fill-rule:nonzero' transform='translate(8 14)'/%3E%3Cpath d='M5 26h22v2H5zM15 4h2v18h-2z'/%3E%3C/svg%3E\")}.ag-icon-small-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.334 10.667 16 21.334l8.667-10.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-small-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M21.333 7.334 10.666 16l10.667 8.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-small-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M10.667 24.666 21.334 16 10.667 7.333z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-small-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.334 21.333 16 10.666l8.667 10.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-tick:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M11.586 22.96 27.718 6.828 29.84 8.95 11.586 27.202 2.4 18.016l2.12-2.122z'/%3E%3C/svg%3E\")}.ag-icon-tree-closed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m11.94 6-1.88 1.88L18.167 16l-8.107 8.12L11.94 26l10-10z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-tree-indeterminate:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6 13.5h20v3H6z'/%3E%3C/svg%3E\")}.ag-icon-tree-open:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M24.12 9.06 16 17.167 7.88 9.06 6 10.94l10 10 10-10z' style='fill-rule:nonzero' transform='translate(0 1)'/%3E%3C/svg%3E\")}.ag-icon-unlinked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M22.667 9.333h-5.333v2.533h5.333a4.136 4.136 0 0 1 4.133 4.133c0 1.907-1.307 3.507-3.08 3.973l1.947 1.947c2.173-1.107 3.667-3.32 3.667-5.92a6.67 6.67 0 0 0-6.667-6.667zm-1.334 5.334h-2.92l2.667 2.667h.253zM2.667 5.693 6.814 9.84A6.65 6.65 0 0 0 2.667 16a6.67 6.67 0 0 0 6.667 6.667h5.333v-2.533H9.334a4.136 4.136 0 0 1-4.133-4.133c0-2.12 1.613-3.867 3.68-4.093l2.76 2.76h-.973v2.667h3.64l3.027 3.027v2.307h2.307l5.347 5.333 1.68-1.68L4.362 4.002 2.669 5.695z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m5.333 16 1.88 1.88 7.453-7.44v16.227h2.667V10.44l7.44 7.453L26.666 16 15.999 5.333 5.332 16z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-grip:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M8 24H6v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zM8 18H6v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zM8 12H6V8h2zm6 0h-2V8h2zm6 0h-2V8h2zm6 0h-2V8h2z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-settings:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M30 8h-4.1c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2v2h14.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30zm-9 4c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3M2 24h4.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30v-2H15.9c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2zm9-4c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3'/%3E%3C/svg%3E\")}.ag-icon-column-arrow:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M11 4a1 1 0 0 1 1 1v22a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1' clip-rule='evenodd'/%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M2 13a1 1 0 0 1 1-1h23.5a1 1 0 1 1 0 2H3a1 1 0 0 1-1-1' clip-rule='evenodd'/%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M2 4h18v24H2zm2 2v20h14V6zM26.793 13 23 9.207l1.414-1.414L29.621 13l-5.207 5.207L23 16.793z' clip-rule='evenodd'/%3E%3C/svg%3E\")}.ag-icon-un-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='m6.112 15.111 3.272 3.271 1.436-1.402-2.476-2.479c.81-1.25 3.168-1.12 5.156-.614l4.986-4.988-.49-.722c-.392-.622.336-1.504 1.024-2.072l.008-.007.01-.006.032-.025 1.447 1.447 1.432-1.397-2.601-2.602s-4.052 2.704-3.352 5.046l-3.158 3.108c-2.004-.388-4.69-.288-6.056 1.572-.638.87-.67 1.87-.67 1.87m.581 11.582.014.014 5.502-5.501 4.783 4.783.746-.364c1.992-1.016 2.776-3.21 2.632-5.34-.055-.805-.068-.87-.088-.97-.008-.04-.017-.085-.03-.182l3.32-3.218c1.734.292 3.198-.912 4.272-2.338q.337-.447.67-.894l-.001-.001-.007-.007-.007-.007-.007-.007-3.87-3.87 1.585-1.584-1.414-1.414-14.381 14.38-1.237 1.209-5.69 5.687 1.417 1.416zM23.21 10.206l2.65 2.651c-1.465 1.714-2.935.776-2.935.776l-4.79 4.79q.041.291.087.583c.257 1.676.513 3.35-.585 4.317a4 4 0 0 1-.272.21l-3.739-3.744z' clip-rule='evenodd'/%3E%3C/svg%3E\")}.ag-icon-pinned-top:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' d='m16.708 10.878 8.708 8.706L24 21l-6.292-6.294V27h-2V14.706L9.416 21 8 19.584q4.348-4.344 8.691-8.69zM25 6H8v2h17z'/%3E%3C/svg%3E\")}.ag-icon-pinned-bottom:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' d='M16.708 22.122 8 13.416 9.416 12l6.292 6.294V6h2v12.294L24 12l1.416 1.416-8.691 8.69zM7.416 28h17v-2h-17z'/%3E%3C/svg%3E\")}`\n);\n\n// packages/ag-grid-community/src/theming/parts/icon-set/alpine/icon-set-alpine.ts\nvar iconSetAlpine = /* @__PURE__ */ createPart({\n  feature: \"iconSet\",\n  css: iconSetAlpineCSS\n});\n\n// packages/ag-grid-community/src/theming/parts/icon-set/material/icon-set-material.css-GENERATED.ts\nvar iconSetMaterialCSS = (\n  /*css*/\n  `.ag-icon-aggregation:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eaggregation%3C/title%3E%3Cpath d='M24 5.333H8V8l8.667 8L8 24v2.667h16v-4h-9.333L21.334 16l-6.667-6.667H24z'/%3E%3C/svg%3E\")}.ag-icon-arrows:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Earrows%3C/title%3E%3Cpath d='M13.333 11.556h5.333V8h3.556L16 1.778 9.778 8h3.556zm-1.777 1.777H8V9.777l-6.222 6.222L8 22.221v-3.556h3.556zM30.222 16 24 9.778v3.556h-3.556v5.333H24v3.556l6.222-6.222zm-11.555 4.444h-5.333V24H9.778L16 30.222 22.222 24h-3.556z'/%3E%3C/svg%3E\")}.ag-icon-asc:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Easc%3C/title%3E%3Cpath d='m5.333 16 1.88 1.88 7.453-7.44v16.227h2.667V10.44l7.44 7.453L26.666 16 15.999 5.333z'/%3E%3C/svg%3E\")}.ag-icon-cancel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecancel%3C/title%3E%3Cpath d='M16 2.667C8.627 2.667 2.667 8.627 2.667 16S8.627 29.333 16 29.333 29.333 23.373 29.333 16 23.373 2.667 16 2.667m6.667 18.12-1.88 1.88L16 17.88l-4.787 4.787-1.88-1.88L14.12 16l-4.787-4.787 1.88-1.88L16 14.12l4.787-4.787 1.88 1.88L17.88 16z'/%3E%3C/svg%3E\")}.ag-icon-chart:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Echart%3C/title%3E%3Cpath d='M6.667 12.267h4v13.067h-4zm7.466-5.6h3.733v18.667h-3.733zM21.6 17.333h3.733v8H21.6z'/%3E%3C/svg%3E\")}.ag-icon-color-picker:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecolor-picker%3C/title%3E%3Cpath d='M23.907 17.587 10.574 4.254l-1.88 1.88 3.173 3.173-8.28 8.28 10.16 10.16zm-16.547 0 6.387-6.387 6.387 6.387H7.361zm18.387 2s-2.667 2.893-2.667 4.667c0 1.467 1.2 2.667 2.667 2.667s2.667-1.2 2.667-2.667c0-1.773-2.667-4.667-2.667-4.667'/%3E%3C/svg%3E\")}.ag-icon-columns:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecolumns%3C/title%3E%3Cpath d='M5.333 10.667h5.333V5.334H5.333zm8 16h5.333v-5.333h-5.333zm-8 0h5.333v-5.333H5.333zm0-8h5.333v-5.333H5.333zm8 0h5.333v-5.333h-5.333zm8-13.334v5.333h5.333V5.333zm-8 5.334h5.333V5.334h-5.333zm8 8h5.333v-5.333h-5.333zm0 8h5.333v-5.333h-5.333z'/%3E%3C/svg%3E\")}.ag-icon-contracted:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Econtracted%3C/title%3E%3Cpath d='m12.94 8-1.88 1.88L17.167 16l-6.107 6.12L12.94 24l8-8z'/%3E%3C/svg%3E\")}.ag-icon-copy:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecopy%3C/title%3E%3Cpath d='M22 1.333H6A2.675 2.675 0 0 0 3.333 4v18.667H6V4h16zm4 5.334H11.333a2.675 2.675 0 0 0-2.667 2.667v18.667c0 1.467 1.2 2.667 2.667 2.667H26c1.467 0 2.667-1.2 2.667-2.667V9.334c0-1.467-1.2-2.667-2.667-2.667M26 28H11.333V9.333H26z'/%3E%3C/svg%3E\")}.ag-icon-cross:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecross%3C/title%3E%3Cpath d='m25.333 8.547-1.88-1.88L16 14.12 8.547 6.667l-1.88 1.88L14.12 16l-7.453 7.453 1.88 1.88L16 17.88l7.453 7.453 1.88-1.88L17.88 16z'/%3E%3C/svg%3E\")}.ag-icon-csv:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='M.688-.226a.2.2 0 0 1-.017.074.28.28 0 0 1-.145.14.412.412 0 0 1-.234.013.28.28 0 0 1-.202-.168.468.468 0 0 1-.04-.19q0-.086.025-.155a.319.319 0 0 1 .182-.191.4.4 0 0 1 .134-.025q.087 0 .155.035a.3.3 0 0 1 .104.085.17.17 0 0 1 .036.097.06.06 0 0 1-.018.044.06.06 0 0 1-.042.019.06.06 0 0 1-.042-.013.2.2 0 0 1-.031-.046.2.2 0 0 0-.066-.079.16.16 0 0 0-.095-.027.17.17 0 0 0-.142.068.3.3 0 0 0-.053.193.4.4 0 0 0 .023.139.2.2 0 0 0 .067.083.2.2 0 0 0 .1.027q.063 0 .106-.031a.2.2 0 0 0 .065-.091.2.2 0 0 1 .023-.046q.014-.018.044-.018a.06.06 0 0 1 .044.018.06.06 0 0 1 .019.045' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 7.122 25.977)'/%3E%3Cpath d='M.622-.215a.2.2 0 0 1-.033.117.23.23 0 0 1-.098.081.4.4 0 0 1-.153.029.34.34 0 0 1-.175-.04.23.23 0 0 1-.079-.077.17.17 0 0 1-.031-.093q0-.027.019-.045a.06.06 0 0 1 .046-.019.06.06 0 0 1 .039.014.1.1 0 0 1 .027.044.3.3 0 0 0 .03.057q.015.023.044.038.03.015.076.015.065 0 .105-.03a.09.09 0 0 0 .04-.075.08.08 0 0 0-.022-.058.14.14 0 0 0-.056-.034 1 1 0 0 0-.092-.025.7.7 0 0 1-.129-.042.2.2 0 0 1-.083-.066.17.17 0 0 1-.03-.104q0-.058.032-.105a.2.2 0 0 1 .093-.07.4.4 0 0 1 .144-.025q.066 0 .114.016a.3.3 0 0 1 .08.044.2.2 0 0 1 .046.057q.015.03.015.058a.07.07 0 0 1-.018.046.06.06 0 0 1-.046.021q-.025 0-.038-.012a.2.2 0 0 1-.028-.041.2.2 0 0 0-.047-.063Q.387-.625.326-.625a.15.15 0 0 0-.09.025q-.035.024-.035.059 0 .021.012.037a.1.1 0 0 0 .032.027.4.4 0 0 0 .111.036q.06.015.11.031.048.018.083.042a.2.2 0 0 1 .054.062.2.2 0 0 1 .019.091' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 13.339 25.977)'/%3E%3Cpath d='m.184-.633.162.48.163-.483q.013-.038.019-.053a.062.062 0 0 1 .061-.039q.018 0 .034.009a.1.1 0 0 1 .025.025q.009.015.009.031L.654-.64l-.007.025-.009.024-.173.468-.019.051a.2.2 0 0 1-.021.042.1.1 0 0 1-.033.03.1.1 0 0 1-.049.012.1.1 0 0 1-.05-.011A.1.1 0 0 1 .26-.03a.2.2 0 0 1-.021-.042L.22-.123.05-.587.041-.612.033-.638.03-.662q0-.025.02-.046a.07.07 0 0 1 .05-.02q.037 0 .053.023.015.023.031.072' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 18.94 25.977)'/%3E%3C/svg%3E\")}.ag-icon-cut:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m19 3-6 6 2 2 7-7V3m-10 9.5a.503.503 0 0 1-.5-.5c0-.274.226-.5.5-.5s.5.226.5.5-.226.5-.5.5M6 20c-1.097 0-2-.903-2-2a2 2 0 0 1 2-2c1.097 0 2 .903 2 2a2 2 0 0 1-2 2M6 8c-1.097 0-2-.903-2-2a2 2 0 0 1 2-2c1.097 0 2 .903 2 2a2 2 0 0 1-2 2m3.64-.36c.23-.5.36-1.05.36-1.64 0-2.194-1.806-4-4-4S2 3.806 2 6s1.806 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.194 0-4 1.806-4 4s1.806 4 4 4 4-1.806 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1z' style='fill-rule:nonzero' transform='translate(4 4)'/%3E%3C/svg%3E\")}.ag-icon-desc:before,.ag-icon-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Edesc%3C/title%3E%3Cpath d='m26.667 16-1.88-1.88-7.453 7.44V5.333h-2.667V21.56l-7.44-7.453L5.334 16l10.667 10.667L26.668 16z'/%3E%3C/svg%3E\")}.ag-icon-excel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='m.052-.139.16-.234-.135-.208a.4.4 0 0 1-.028-.052.1.1 0 0 1-.01-.042.05.05 0 0 1 .018-.037.07.07 0 0 1 .045-.016q.03 0 .047.018a1 1 0 0 1 .047.066l.107.174.115-.174.024-.038.019-.026.021-.015a.1.1 0 0 1 .027-.005.06.06 0 0 1 .044.016.05.05 0 0 1 .018.039q0 .033-.038.089l-.141.211.152.234a.3.3 0 0 1 .03.051.1.1 0 0 1 .009.038.1.1 0 0 1-.008.031.1.1 0 0 1-.024.023.1.1 0 0 1-.034.008.1.1 0 0 1-.035-.008.1.1 0 0 1-.023-.022L.427-.067.301-.265l-.134.204-.022.034-.016.019a.1.1 0 0 1-.022.015.1.1 0 0 1-.03.005.06.06 0 0 1-.044-.016.06.06 0 0 1-.017-.047q0-.036.036-.088' style='fill-rule:nonzero' transform='matrix(17.82892 0 0 16.50777 10.371 25.928)'/%3E%3C/svg%3E\")}.ag-icon-expanded:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eexpanded%3C/title%3E%3Cpath d='M20.94 9.88 19.06 8l-8 8 8 8 1.88-1.88L14.833 16z'/%3E%3C/svg%3E\")}.ag-icon-eye-slash:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye-slash%3C/title%3E%3Cpath d='M21.106 15.088A5.19 5.19 0 0 0 16 10.814a5.17 5.17 0 0 0-3.668 1.522L9.866 9.868a12.2 12.2 0 0 1 6.133-1.646c5.186 0 9.614 3.225 11.408 7.778a12.34 12.34 0 0 1-5.276 6.133l-2.468-2.466a5.17 5.17 0 0 0 1.449-2.802h-2.123c-.148.508-.42.964-.782 1.33l-1.33-1.33h-2.514l2.196 2.196q-.272.049-.56.05a3.11 3.11 0 0 1-2.99-2.245h-2.123a5.19 5.19 0 0 0 7.3 3.836l2.247 2.247a12.2 12.2 0 0 1-4.434.828c-5.186 0-9.614-3.225-11.408-7.778a12.3 12.3 0 0 1 3.781-5.111l2.924 2.924a5.1 5.1 0 0 0-.404 1.275h4.206l-1.296-1.296a3.1 3.1 0 0 1 2.196-.903c1.404 0 2.587.924 2.976 2.199h2.13z'/%3E%3C/svg%3E\")}.ag-icon-eye:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye%3C/title%3E%3Cpath d='M16 8.222c-5.186 0-9.614 3.225-11.408 7.778 1.794 4.553 6.222 7.778 11.408 7.778S25.614 20.553 27.408 16C25.614 11.447 21.186 8.222 16 8.222m0 12.964c-2.862 0-5.186-2.324-5.186-5.186s2.324-5.186 5.186-5.186 5.186 2.324 5.186 5.186-2.324 5.186-5.186 5.186m0-8.297c-1.721 0-3.111 1.39-3.111 3.111s1.39 3.111 3.111 3.111 3.111-1.39 3.111-3.111-1.39-3.111-3.111-3.111'/%3E%3C/svg%3E\")}.ag-icon-filter:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Efilter%3C/title%3E%3Cpath d='M13.333 24h5.333v-2.667h-5.333zM4 8v2.667h24V8zm4 9.333h16v-2.667H8z'/%3E%3C/svg%3E\")}.ag-icon-first:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Efirst%3C/title%3E%3Cpath d='M24.273 22.12 18.153 16l6.12-6.12L22.393 8l-8 8 8 8zM7.727 8h2.667v16H7.727z'/%3E%3C/svg%3E\")}.ag-icon-group:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Egroup%3C/title%3E%3Cpath d='M18.667 21.333h8.889A3.555 3.555 0 0 1 24 24.889h-5.333zm8.888-7.111v3.556h-8.889v-3.556zM24 7.111a3.555 3.555 0 0 1 3.556 3.556h-16V7.111zm-8.889 17.778h-3.556v-3.556h3.556zm0-7.111h-3.556v-3.556h3.556zM8 10.667H4.444A3.555 3.555 0 0 1 8 7.111z'/%3E%3C/svg%3E\")}.ag-icon-last:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Elast%3C/title%3E%3Cpath d='m7.727 9.88 6.12 6.12-6.12 6.12L9.607 24l8-8-8-8zM21.607 8h2.667v16h-2.667z'/%3E%3C/svg%3E\")}.ag-icon-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eleft%3C/title%3E%3Cpath d='M26.667 14.667H10.44l7.453-7.453L16 5.334 5.333 16.001 16 26.668l1.88-1.88-7.44-7.453h16.227v-2.667z'/%3E%3C/svg%3E\")}.ag-icon-linked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Elinked%3C/title%3E%3Cpath d='M5.2 16a4.136 4.136 0 0 1 4.133-4.133h5.333V9.334H9.333c-3.68 0-6.667 2.987-6.667 6.667s2.987 6.667 6.667 6.667h5.333v-2.533H9.333A4.136 4.136 0 0 1 5.2 16.002zm5.467 1.333h10.667v-2.667H10.667zm12-8h-5.333v2.533h5.333c2.28 0 4.133 1.853 4.133 4.133s-1.853 4.133-4.133 4.133h-5.333v2.533h5.333c3.68 0 6.667-2.987 6.667-6.667s-2.987-6.667-6.667-6.667z'/%3E%3C/svg%3E\")}.ag-icon-loading:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eloading%3C/title%3E%3Cpath d='m17.778 11.708 3.25-3.251 2.516 2.516-3.251 3.25h4.597v3.556h-4.597l3.251 3.25-2.516 2.516-3.25-3.251v4.597h-3.556v-4.597l-3.25 3.251-2.516-2.516 3.251-3.25H7.11v-3.556h4.597l-3.251-3.25 2.516-2.516 3.25 3.251V7.111h3.556zm-3.251 7.847h2.944l2.084-2.084v-2.944l-2.084-2.084h-2.944l-2.084 2.084v2.944z'/%3E%3C/svg%3E\")}.ag-icon-maximize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Emaximize%3C/title%3E%3Cpath d='M4 4h24v2.667H4z'/%3E%3C/svg%3E\")}.ag-icon-menu:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Emenu%3C/title%3E%3Cpath d='M4 24h24v-2.667H4zm0-6.667h24v-2.667H4zM4 8v2.667h24V8z'/%3E%3C/svg%3E\")}.ag-icon-menu-alt:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M16 26.667a2.57 2.57 0 0 1-1.883-.784A2.57 2.57 0 0 1 13.333 24q0-1.1.784-1.883A2.57 2.57 0 0 1 16 21.333q1.1 0 1.883.784.784.783.784 1.883t-.784 1.883a2.57 2.57 0 0 1-1.883.784m0-8a2.57 2.57 0 0 1-1.883-.784A2.57 2.57 0 0 1 13.333 16q0-1.1.784-1.883A2.57 2.57 0 0 1 16 13.333q1.1 0 1.883.784.784.783.784 1.883t-.784 1.883a2.57 2.57 0 0 1-1.883.784m0-8a2.57 2.57 0 0 1-1.883-.784A2.57 2.57 0 0 1 13.333 8q0-1.1.784-1.883A2.57 2.57 0 0 1 16 5.333q1.1 0 1.883.784.784.783.784 1.883t-.784 1.883a2.57 2.57 0 0 1-1.883.784'/%3E%3C/svg%3E\")}.ag-icon-minimize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eminimize%3C/title%3E%3Cpath d='M8 25.333h16V28H8z'/%3E%3C/svg%3E\")}.ag-icon-minus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6.572 6.572a13.32 13.32 0 0 0 0 18.856 13.32 13.32 0 0 0 18.856 0 13.32 13.32 0 0 0 0-18.856 13.32 13.32 0 0 0-18.856 0m17.527 8.099v2.658H7.901v-2.658z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-next:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enext%3C/title%3E%3Cpath d='m12.94 8-1.88 1.88L17.167 16l-6.107 6.12L12.94 24l8-8z'/%3E%3C/svg%3E\")}.ag-icon-none:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enone%3C/title%3E%3Cpath d='M4 24h16v-2.667H4zM4 8v2.667h24V8zm0 9.333h24v-2.667H4z'/%3E%3C/svg%3E\")}.ag-icon-not-allowed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enot-allowed%3C/title%3E%3Cpath d='M16 2.667C8.64 2.667 2.667 8.64 2.667 16S8.64 29.333 16 29.333 29.333 23.36 29.333 16 23.36 2.667 16 2.667M5.333 16c0-5.893 4.773-10.667 10.667-10.667 2.467 0 4.733.84 6.533 2.253L7.586 22.533A10.54 10.54 0 0 1 5.333 16M16 26.667c-2.467 0-4.733-.84-6.533-2.253L24.414 9.467A10.54 10.54 0 0 1 26.667 16c0 5.893-4.773 10.667-10.667 10.667'/%3E%3C/svg%3E\")}.ag-icon-paste:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epaste%3C/title%3E%3Cpath d='M25.333 4H19.76C19.2 2.453 17.733 1.333 16 1.333S12.8 2.453 12.24 4H6.667A2.675 2.675 0 0 0 4 6.667V28c0 1.467 1.2 2.667 2.667 2.667h18.667c1.467 0 2.667-1.2 2.667-2.667V6.667C28.001 5.2 26.801 4 25.334 4zM16 4c.733 0 1.333.6 1.333 1.333s-.6 1.333-1.333 1.333-1.333-.6-1.333-1.333S15.267 4 16 4m9.333 24H6.666V6.667h2.667v4h13.333v-4h2.667z'/%3E%3C/svg%3E\")}.ag-icon-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epin%3C/title%3E%3Cpath d='m11.106 22.093-4.444 4.444-1.259-1.259 4.444-4.444zm5.872-16.63 9.618 9.62-.962.962-.962-.962-7.694 3.847 1.924 1.924-2.74 2.74-7.696-7.696 2.741-2.74 1.924 1.925 3.847-7.696-.962-.962z'/%3E%3C/svg%3E\")}.ag-icon-pivot:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epivot%3C/title%3E%3Cpath d='M26.667 30.223H5.334a3.556 3.556 0 0 1-3.556-3.556V5.334a3.556 3.556 0 0 1 3.556-3.556h21.333a3.556 3.556 0 0 1 3.556 3.556v21.333a3.556 3.556 0 0 1-3.556 3.556m-16-8.89H5.334v5.333h5.333zm16-7.11H12.444v12.444h14.223zm-9.15 6.85-2.039 2.037 2.039 2.039-1.257 1.257-3.295-3.296 3.295-3.295q.63.628 1.257 1.257zm-6.85-6.85H5.334v5.333h5.333zm15.74 3.816-1.257 1.256-2.039-2.037-2.037 2.037-1.257-1.256 3.295-3.296zM10.667 5.333H5.334v5.333h5.333zm8.889 0h-7.112v5.333h7.112zm7.111 0h-5.333v5.333h5.333z'/%3E%3C/svg%3E\")}.ag-icon-plus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6.572 6.572a13.32 13.32 0 0 0 0 18.856 13.32 13.32 0 0 0 18.856 0 13.32 13.32 0 0 0 0-18.856 13.32 13.32 0 0 0-18.856 0m17.527 8.099v2.658h-6.77v6.77h-2.658v-6.77h-6.77v-2.658h6.77v-6.77h2.658v6.77z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-previous:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eprevious%3C/title%3E%3Cpath d='M20.94 9.88 19.06 8l-8 8 8 8 1.88-1.88L14.833 16z'/%3E%3C/svg%3E\")}.ag-icon-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eright%3C/title%3E%3Cpath d='m16 5.333-1.88 1.88 7.44 7.453H5.333v2.667H21.56l-7.44 7.453 1.88 1.88 10.667-10.667L16 5.332z'/%3E%3C/svg%3E\")}.ag-icon-save:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esave%3C/title%3E%3Cpath d='M25.333 16v9.333H6.666V16H3.999v9.333C3.999 26.8 5.199 28 6.666 28h18.667C26.8 28 28 26.8 28 25.333V16zm-8 .893 3.453-3.44 1.88 1.88L15.999 22l-6.667-6.667 1.88-1.88 3.453 3.44V4h2.667v12.893z'/%3E%3C/svg%3E\")}.ag-icon-small-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-down%3C/title%3E%3Cpath d='M9.333 12.667 16 19.334l6.667-6.667H9.334z'/%3E%3C/svg%3E\")}.ag-icon-small-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-left%3C/title%3E%3Cpath d='M19.333 9.333 12.666 16l6.667 6.667V9.334z'/%3E%3C/svg%3E\")}.ag-icon-small-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-right%3C/title%3E%3Cpath d='M12.667 22.667 19.334 16l-6.667-6.667v13.333z'/%3E%3C/svg%3E\")}.ag-icon-small-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-up%3C/title%3E%3Cpath d='M9.333 19.333 16 12.666l6.667 6.667H9.334z'/%3E%3C/svg%3E\")}.ag-icon-tick:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etick%3C/title%3E%3Cpath d='m11.727 21.167-5.56-5.56-1.893 1.88 7.453 7.453 16-16-1.88-1.88z'/%3E%3C/svg%3E\")}.ag-icon-tree-closed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-closed%3C/title%3E%3Cpath d='m12.94 8-1.88 1.88L17.167 16l-6.107 6.12L12.94 24l8-8z'/%3E%3C/svg%3E\")}.ag-icon-tree-indeterminate:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-indeterminate%3C/title%3E%3Cpath d='M6.667 14.667h18.667v2.667H6.667z'/%3E%3C/svg%3E\")}.ag-icon-tree-open:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-open%3C/title%3E%3Cpath d='M22.12 11.06 16 17.167 9.88 11.06 8 12.94l8 8 8-8z'/%3E%3C/svg%3E\")}.ag-icon-unlinked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eunlinked%3C/title%3E%3Cpath d='M22.667 9.333h-5.333v2.533h5.333a4.136 4.136 0 0 1 4.133 4.133c0 1.907-1.307 3.507-3.08 3.973l1.947 1.947c2.173-1.107 3.667-3.32 3.667-5.92a6.67 6.67 0 0 0-6.667-6.667zm-1.334 5.334h-2.92l2.667 2.667h.253zM2.667 5.693 6.814 9.84A6.65 6.65 0 0 0 2.667 16a6.67 6.67 0 0 0 6.667 6.667h5.333v-2.533H9.334a4.136 4.136 0 0 1-4.133-4.133c0-2.12 1.613-3.867 3.68-4.093l2.76 2.76h-.973v2.667h3.64l3.027 3.027v2.307h2.307l5.347 5.333 1.68-1.68L4.362 4.002 2.669 5.695z'/%3E%3C/svg%3E\")}.ag-icon-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Easc%3C/title%3E%3Cpath d='m5.333 16 1.88 1.88 7.453-7.44v16.227h2.667V10.44l7.44 7.453L26.666 16 15.999 5.333z'/%3E%3C/svg%3E\")}.ag-icon-grip:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Egrip%3C/title%3E%3Cpath d='M26.667 12H5.334v2.667h21.333zM5.333 20h21.333v-2.667H5.333z'/%3E%3C/svg%3E\")}.ag-icon-settings:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M30 8h-4.1c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2v2h14.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30zm-9 4c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3M2 24h4.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30v-2H15.9c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2zm9-4c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3'/%3E%3C/svg%3E\")}.ag-icon-column-arrow:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M11 4a1 1 0 0 1 1 1v22a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1' clip-rule='evenodd'/%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M2 13a1 1 0 0 1 1-1h23.5a1 1 0 1 1 0 2H3a1 1 0 0 1-1-1' clip-rule='evenodd'/%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M2 4h18v24H2zm2 2v20h14V6zM26.793 13 23 9.207l1.414-1.414L29.621 13l-5.207 5.207L23 16.793z' clip-rule='evenodd'/%3E%3C/svg%3E\")}.ag-icon-un-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='currentColor' d='M8 11a.75.75 0 0 0-.75.75v3.333a.75.75 0 1 0 1.5 0V11.75A.75.75 0 0 0 8 11'/%3E%3Cpath fill='currentColor' d='M13.11 1.436a.75.75 0 0 0-1.22-.872l-10 14a.75.75 0 1 0 1.22.872L5.207 12.5h7.376a.75.75 0 0 0 .75-.75v-1.174a2.08 2.08 0 0 0-1.153-1.863l-1.185-.599-.005-.002a.58.58 0 0 1-.323-.522V5.165a2.083 2.083 0 0 0 1.854-2.904zm-3.943 5.52v.634a2.08 2.08 0 0 0 1.153 1.863l1.185.6.005.002a.58.58 0 0 1 .323.522V11H6.28zM9.277 1H5.25a2.084 2.084 0 0 0-.083 4.165v1.676l1.5-2.132v-.292a.75.75 0 0 0-.75-.75H5.25a.584.584 0 0 1 0-1.167h2.972z'/%3E%3C/svg%3E\")}.ag-icon-pinned-top:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='currentColor' d='M12.53 3.72A.75.75 0 0 1 12 5H4a.75.75 0 0 1 0-1.5h8a.75.75 0 0 1 .53.22M3.269 10.744a.75.75 0 0 1 .2-.524l4-4a.75.75 0 0 1 1.06 0l4 4a.75.75 0 1 1-1.06 1.06L8.75 8.56V14a.75.75 0 0 1-1.5 0V8.56l-2.72 2.72a.75.75 0 0 1-1.26-.536'/%3E%3C/svg%3E\")}.ag-icon-pinned-bottom:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='currentColor' d='M3.47 12.28A.75.75 0 0 1 4 11h8a.75.75 0 0 1 0 1.5H4a.75.75 0 0 1-.53-.22M12.731 5.256a.75.75 0 0 1-.2.524l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06l2.72 2.72V2a.75.75 0 0 1 1.5 0v5.44l2.72-2.72a.75.75 0 0 1 1.26.536'/%3E%3C/svg%3E\")}`\n);\n\n// packages/ag-grid-community/src/theming/parts/icon-set/material/icon-set-material.ts\nvar iconSetMaterial = /* @__PURE__ */ createPart({\n  feature: \"iconSet\",\n  css: iconSetMaterialCSS\n});\n\n// packages/ag-grid-community/src/theming/parts/icon-set/overrides/icon-overrides.ts\nvar iconOverrides = (args) => {\n  const cssParts = [];\n  if (args.type === \"image\") {\n    const { icons, mask } = args;\n    for (const key of Object.keys(icons)) {\n      const imageCssValue = imageValueToCss(icons[key]);\n      if (mask) {\n        cssParts.push(`.ag-icon-${key}::before { mask-image: ${imageCssValue}; }`);\n      } else {\n        cssParts.push(`.ag-icon-${key}::before { background-image: ${imageCssValue}; ${unsetMaskIcon} }`);\n      }\n    }\n  }\n  if (args.type === \"font\") {\n    const { family, weight, color, icons } = args;\n    let properties = unsetMaskIcon;\n    if (family) {\n      properties += ` font-family: ${fontFamilyValueToCss(family)};`;\n    }\n    if (weight) {\n      properties += ` font-weight: ${fontWeightValueToCss(weight)};`;\n    }\n    if (color) {\n      properties += ` color: ${colorValueToCss(color)};`;\n    }\n    for (const key of Object.keys(icons)) {\n      cssParts.push(`.ag-icon-${key}::before { content: ${JSON.stringify(icons[key])}; ${properties} }`);\n    }\n  }\n  return createPart({\n    css: cssParts.join(\";\\n\"),\n    cssImports: args.cssImports\n  });\n};\nvar unsetMaskIcon = `background-color: unset; mask-image: unset; -webkit-mask-image: unset;`;\n\n// packages/ag-grid-community/src/theming/parts/icon-set/quartz/quartz-icon-data.ts\nvar iconNameToSvgFragment = {\n  aggregation: '<path d=\"M18 7V4H6l6 8-6 8h12v-3\"/>',\n  arrows: '<polyline points=\"5 9 2 12 5 15\"/><polyline points=\"9 5 12 2 15 5\"/><polyline points=\"15 19 12 22 9 19\"/><polyline points=\"19 9 22 12 19 15\"/><line x1=\"2\" x2=\"22\" y1=\"12\" y2=\"12\"/><line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"22\"/>',\n  asc: '<path d=\"m5 12 7-7 7 7\"/><path d=\"M12 19V5\"/>',\n  cancel: '<path d=\"m18 6-12 12\"/><path d=\"m6 6 12 12\"/>',\n  chart: '<line x1=\"18\" x2=\"18\" y1=\"20\" y2=\"10\"/><line x1=\"12\" x2=\"12\" y1=\"20\" y2=\"4\"/><line x1=\"6\" x2=\"6\" y1=\"20\" y2=\"14\"/>',\n  \"color-picker\": '<path d=\"m19 11-8-8-8.6 8.6a2 2 0 0 0 0 2.8l5.2 5.2c.8.8 2 .8 2.8 0L19 11Z\"/><path d=\"m5 2 5 5\"/><path d=\"M2 13h15\"/><path d=\"M22 20a2 2 0 1 1-4 0c0-1.6 1.7-2.4 2-4 .3 1.6 2 2.4 2 4Z\"/>',\n  columns: '<path d=\"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\"/>',\n  contracted: '<path d=\"m9 18 6-6-6-6\"/>',\n  copy: '<rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>',\n  cross: '<path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>',\n  csv: '<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/><polyline points=\"14 2 14 8 20 8\"/><path d=\"M8 13h2\"/><path d=\"M8 17h2\"/><path d=\"M14 13h2\"/><path d=\"M14 17h2\"/>',\n  cut: '<circle cx=\"6\" cy=\"6\" r=\"3\"/><path d=\"M8.12 8.12 12 12\"/><path d=\"M20 4 8.12 15.88\"/><circle cx=\"6\" cy=\"18\" r=\"3\"/><path d=\"M14.8 14.8 20 20\"/>',\n  desc: '<path d=\"M12 5v14\"/><path d=\"m19 12-7 7-7-7\"/>',\n  down: '<path d=\"M12 5v14\"/><path d=\"m19 12-7 7-7-7\"/>',\n  excel: '<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/><polyline points=\"14 2 14 8 20 8\"/><path d=\"M8 13h2\"/><path d=\"M8 17h2\"/><path d=\"M14 13h2\"/><path d=\"M14 17h2\"/>',\n  expanded: '<path d=\"m15 18-6-6 6-6\"/>',\n  \"eye-slash\": '<path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\"/><path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\"/><path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\"/><line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\"/>',\n  eye: '<path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>',\n  filter: '<path d=\"M3 6h18\"/><path d=\"M7 12h10\"/><path d=\"M10 18h4\"/>',\n  first: '<path d=\"m17 18-6-6 6-6\"/><path d=\"M7 6v12\"/>',\n  group: '<path d=\"M16 12H3\"/><path d=\"M16 18H3\"/><path d=\"M10 6H3\"/><path d=\"M21 18V8a2 2 0 0 0-2-2h-5\"/><path d=\"m16 8-2-2 2-2\"/>',\n  last: '<path d=\"m7 18 6-6-6-6\"/><path d=\"M17 6v12\"/>',\n  left: '<path d=\"m12 19-7-7 7-7\"/><path d=\"M19 12H5\"/>',\n  linked: '<path d=\"M9 17H7A5 5 0 0 1 7 7h2\"/><path d=\"M15 7h2a5 5 0 1 1 0 10h-2\"/><line x1=\"8\" x2=\"16\" y1=\"12\" y2=\"12\"/>',\n  loading: '<line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"6\"/><line x1=\"12\" x2=\"12\" y1=\"18\" y2=\"22\"/><line x1=\"4.93\" x2=\"7.76\" y1=\"4.93\" y2=\"7.76\"/><line x1=\"16.24\" x2=\"19.07\" y1=\"16.24\" y2=\"19.07\"/><line x1=\"2\" x2=\"6\" y1=\"12\" y2=\"12\"/><line x1=\"18\" x2=\"22\" y1=\"12\" y2=\"12\"/><line x1=\"4.93\" x2=\"7.76\" y1=\"19.07\" y2=\"16.24\"/><line x1=\"16.24\" x2=\"19.07\" y1=\"7.76\" y2=\"4.93\"/>',\n  maximize: '<polyline points=\"15 3 21 3 21 9\"/><polyline points=\"9 21 3 21 3 15\"/><line x1=\"21\" x2=\"14\" y1=\"3\" y2=\"10\"/><line x1=\"3\" x2=\"10\" y1=\"21\" y2=\"14\"/>',\n  menu: '<line x1=\"4\" x2=\"20\" y1=\"12\" y2=\"12\"/><line x1=\"4\" x2=\"20\" y1=\"6\" y2=\"6\"/><line x1=\"4\" x2=\"20\" y1=\"18\" y2=\"18\"/>',\n  \"menu-alt\": '<circle cx=\"12\" cy=\"5\" r=\"0.75\" fill=\"#D9D9D9\"/><circle cx=\"12\" cy=\"12\" r=\"0.75\" fill=\"#D9D9D9\"/><circle cx=\"12\" cy=\"19\" r=\"0.75\" fill=\"#D9D9D9\"/>',\n  minimize: '<polyline points=\"4 14 10 14 10 20\"/><polyline points=\"20 10 14 10 14 4\"/><line x1=\"14\" x2=\"21\" y1=\"10\" y2=\"3\"/><line x1=\"3\" x2=\"10\" y1=\"21\" y2=\"14\"/>',\n  minus: '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M8 12h8\"/>',\n  next: '<path d=\"m9 18 6-6-6-6\"/>',\n  none: '<path d=\"m7 15 5 5 5-5\"/><path d=\"m7 9 5-5 5 5\"/>',\n  \"not-allowed\": '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m4.9 4.9 14.2 14.2\"/>',\n  paste: '<path d=\"M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z\"/><path d=\"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10\"/><path d=\"m17 10 4 4-4 4\"/>',\n  pin: '<line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"22\"/><path d=\"M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z\"/>',\n  pivot: '<path d=\"M15 3v18\"/><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M21 9H3\"/><path d=\"M21 15H3\"/>',\n  plus: '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M8 12h8\"/><path d=\"M12 8v8\"/>',\n  previous: '<path d=\"m15 18-6-6 6-6\"/>',\n  right: '<path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/>',\n  save: '<path d=\"M12 17V3\"/><path d=\"m6 11 6 6 6-6\"/><path d=\"M19 21H5\"/>',\n  \"small-left\": '<path d=\"m15 18-6-6 6-6\"/>',\n  \"small-right\": '<path d=\"m9 18 6-6-6-6\"/>',\n  tick: '<path d=\"M20 6 9 17l-5-5\"/>',\n  \"tree-closed\": '<path d=\"m9 18 6-6-6-6\"/>',\n  \"tree-indeterminate\": '<path d=\"M5 12h14\"/>',\n  \"tree-open\": '<path d=\"m6 9 6 6 6-6\"/>',\n  unlinked: '<path d=\"M9 17H7A5 5 0 0 1 7 7\"/><path d=\"M15 7h2a5 5 0 0 1 4 8\"/><line x1=\"8\" x2=\"12\" y1=\"12\" y2=\"12\"/><line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\"/>',\n  up: '<path d=\"m5 12 7-7 7 7\"/><path d=\"M12 19V5\"/>',\n  grip: '<circle cx=\"5\" cy=\"8\" r=\"0.5\"/><circle cx=\"12\" cy=\"8\" r=\"0.5\"/><circle cx=\"19\" cy=\"8\" r=\"0.5\"/><circle cx=\"5\" cy=\"16\" r=\"0.5\"/><circle cx=\"12\" cy=\"16\" r=\"0.5\"/><circle cx=\"19\" cy=\"16\" r=\"0.5\"/><g stroke=\"none\" fill=\"currentColor\"><circle cx=\"5\" cy=\"8\" r=\"1\"/><circle cx=\"12\" cy=\"8\" r=\"1\"/><circle cx=\"19\" cy=\"8\" r=\"1\"/><circle cx=\"5\" cy=\"16\" r=\"1\"/><circle cx=\"12\" cy=\"16\" r=\"1\"/><circle cx=\"19\" cy=\"16\" r=\"1\"/></g>',\n  settings: '<path d=\"M20 7h-9\"/><path d=\"M14 17H5\"/><circle cx=\"17\" cy=\"17\" r=\"3\"/><circle cx=\"7\" cy=\"7\" r=\"3\"/>'\n};\nvar iconNameToFullSvg = {\n  \"column-arrow\": '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ag-icon\" fill=\"none\" viewBox=\"0 0 32 32\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 26C0 28.2092 1.79086 30 4 30H14C16.2091 30 18 28.2092 18 26V15H25.8786L24.4394 16.4393C23.8536 17.0251 23.8536 17.9749 24.4394 18.5607C25.0252 19.1464 25.9748 19.1464 26.5606 18.5607L30.5606 14.5607C31.1464 13.9749 31.1464 13.0251 30.5606 12.4393L26.5606 8.43934C25.9748 7.85356 25.0252 7.85356 24.4394 8.43934C23.8536 9.02512 23.8536 9.97488 24.4394 10.5607L25.8786 12H18V6C18 3.79086 16.2091 2 14 2H4C1.79086 2 0 3.79086 0 6V26ZM14 5H10.5V12H15V6C15 5.44772 14.5523 5 14 5ZM4 5H7.5V12H3V6C3 5.44772 3.44772 5 4 5ZM10.5 15H15V26C15 26.5522 14.5523 27 14 27H10.5V15ZM4 27H7.5V15H3V26C3 26.5522 3.44772 27 4 27Z\" fill=\"currentColor\"/></svg>',\n  \"small-down\": '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ag-icon\" fill=\"black\" stroke=\"none\" viewBox=\"0 0 32 32\"><path d=\"M7.334 10.667 16 21.334l8.667-10.667H7.334Z\"/></svg>',\n  \"small-up\": '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ag-icon\" fill=\"black\" stroke=\"none\" viewBox=\"0 0 32 32\"><path d=\"M7.334 21.333 16 10.666l8.667 10.667H7.334Z\"/></svg>',\n  \"pinned-top\": '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ag-icon\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" d=\"M12.53 3.72A.75.75 0 0 1 12 5H4a.75.75 0 0 1 0-1.5h8a.75.75 0 0 1 .53.22ZM3.269 10.744a.75.75 0 0 1 .2-.524l4-4a.75.75 0 0 1 1.06 0l4 4a.75.75 0 1 1-1.06 1.06L8.75 8.56V14a.75.75 0 0 1-1.5 0V8.56l-2.72 2.72a.75.75 0 0 1-1.26-.536Z\"/></svg>',\n  \"pinned-bottom\": '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" class=\"ag-icon\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" d=\"M3.47 12.28A.75.75 0 0 1 4 11h8a.75.75 0 0 1 0 1.5H4a.75.75 0 0 1-.53-.22ZM12.731 5.256a.75.75 0 0 1-.2.524l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06l2.72 2.72V2a.75.75 0 0 1 1.5 0v5.44l2.72-2.72a.75.75 0 0 1 1.26.536Z\"/></svg>',\n  \"un-pin\": '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" class=\"ag-icon\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" d=\"M8 11a.75.75 0 0 0-.75.75v3.333a.75.75 0 1 0 1.5 0V11.75A.75.75 0 0 0 8 11Z\"/><path fill=\"currentColor\" d=\"M13.11 1.436a.75.75 0 0 0-1.22-.872l-10 14a.75.75 0 1 0 1.22.872L5.207 12.5h7.376a.75.75 0 0 0 .75-.75v-1.174a2.08 2.08 0 0 0-1.153-1.863l-1.185-.599-.005-.002a.58.58 0 0 1-.323-.522V5.165a2.083 2.083 0 0 0 1.854-2.904l.589-.825Zm-3.943 5.52v.634a2.08 2.08 0 0 0 1.153 1.863l1.185.6.005.002a.58.58 0 0 1 .323.522V11H6.28l2.887-4.044ZM9.277 1H5.25a2.084 2.084 0 0 0-.083 4.165v1.676l1.5-2.132v-.292a.75.75 0 0 0-.75-.75H5.25a.584.584 0 0 1 0-1.167h2.972L9.277 1Z\"/></svg>'\n};\nvar getQuartzIconsCss = (args = {}) => {\n  let result = \"\";\n  for (const iconName of [...Object.keys(iconNameToSvgFragment), ...Object.keys(iconNameToFullSvg)]) {\n    const iconSvg = quartzIconSvg(iconName, args.strokeWidth);\n    result += `.ag-icon-${iconName}::before { mask-image: url('data:image/svg+xml,${encodeURIComponent(iconSvg)}'); }\n`;\n  }\n  return result;\n};\nvar quartzIconSvg = (name, strokeWidth = 1.5) => {\n  const fullSVG = iconNameToFullSvg[name];\n  if (fullSVG)\n    return fullSVG;\n  const svgFragment = iconNameToSvgFragment[name];\n  if (!svgFragment)\n    throw new Error(`Missing icon data for ${name}`);\n  return `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ag-icon\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke=\"black\" stroke-width=\"${strokeWidth}\" viewBox=\"0 0 24 24\"><style>* { vector-effect: non-scaling-stroke; }</style>` + svgFragment + \"</svg>\";\n};\n\n// packages/ag-grid-community/src/theming/parts/icon-set/quartz/icon-set-quartz.ts\nvar iconSetQuartz = (args = {}) => {\n  return createPart({\n    feature: \"iconSet\",\n    css: () => getQuartzIconsCss(args)\n  });\n};\nvar iconSetQuartzLight = /* @__PURE__ */ iconSetQuartz({ strokeWidth: 1 });\nvar iconSetQuartzRegular = /* @__PURE__ */ iconSetQuartz();\nvar iconSetQuartzBold = /* @__PURE__ */ iconSetQuartz({ strokeWidth: 2 });\n\n// packages/ag-grid-community/src/theming/parts/input-style/input-style-base.css-GENERATED.ts\nvar inputStyleBaseCSS = (\n  /*css*/\n  `:where(.ag-input-field-input[type=number]:not(.ag-number-field-input-stepper)){-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}}.ag-input-field-input:where(input:not([type]),input[type=text],input[type=number],input[type=tel],input[type=date],input[type=datetime-local],textarea){background-color:var(--ag-input-background-color);border:var(--ag-input-border);border-radius:var(--ag-input-border-radius);color:var(--ag-input-text-color);font-family:inherit;font-size:inherit;line-height:inherit;margin:0;min-height:var(--ag-input-height);padding:0;&:where(:disabled){background-color:var(--ag-input-disabled-background-color);border:var(--ag-input-disabled-border);color:var(--ag-input-disabled-text-color)}&:where(:focus){background-color:var(--ag-input-focus-background-color);border:var(--ag-input-focus-border);box-shadow:var(--ag-input-focus-shadow);color:var(--ag-input-focus-text-color);outline:none}&:where(:invalid){background-color:var(--ag-input-invalid-background-color);border:var(--ag-input-invalid-border);color:var(--ag-input-invalid-text-color)}&:where(.invalid){background-color:var(--ag-input-invalid-background-color);border:var(--ag-input-invalid-border);color:var(--ag-input-invalid-text-color)}&::-moz-placeholder{color:var(--ag-input-placeholder-text-color)}&::placeholder{color:var(--ag-input-placeholder-text-color)}}:where(.ag-ltr) .ag-input-field-input:where(input:not([type]),input[type=text],input[type=number],input[type=tel],input[type=date],input[type=datetime-local],textarea){padding-left:var(--ag-input-padding-start)}:where(.ag-rtl) .ag-input-field-input:where(input:not([type]),input[type=text],input[type=number],input[type=tel],input[type=date],input[type=datetime-local],textarea){padding-right:var(--ag-input-padding-start)}:where(.ag-column-select-header-filter-wrapper,.ag-filter-toolpanel-search,.ag-mini-filter,.ag-filter-filter){.ag-input-wrapper:before{background-color:currentcolor;color:var(--ag-input-icon-color);content:\"\";display:block;height:12px;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNNS4zIDlhMy43IDMuNyAwIDEgMCAwLTcuNSAzLjcgMy43IDAgMCAwIDAgNy41Wk0xMC41IDEwLjUgOC4zIDguMiIvPjwvc3ZnPg==\");mask-image:url(\"data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNNS4zIDlhMy43IDMuNyAwIDEgMCAwLTcuNSAzLjcgMy43IDAgMCAwIDAgNy41Wk0xMC41IDEwLjUgOC4zIDguMiIvPjwvc3ZnPg==\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;opacity:.5;position:absolute;width:12px}}:where(.ag-ltr) :where(.ag-column-select-header-filter-wrapper,.ag-filter-toolpanel-search,.ag-mini-filter,.ag-filter-filter){.ag-input-wrapper:before{margin-left:var(--ag-spacing)}.ag-number-field-input,.ag-text-field-input{padding-left:calc(var(--ag-spacing)*1.5 + 12px)}}:where(.ag-rtl) :where(.ag-column-select-header-filter-wrapper,.ag-filter-toolpanel-search,.ag-mini-filter,.ag-filter-filter){.ag-input-wrapper:before{margin-right:var(--ag-spacing)}.ag-number-field-input,.ag-text-field-input{padding-right:calc(var(--ag-spacing)*1.5 + 12px)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/input-style/input-style-bordered.css-GENERATED.ts\nvar inputStyleBorderedCSS = (\n  /*css*/\n  `.ag-input-field-input:where(input:not([type]),input[type=text],input[type=number],input[type=tel],input[type=date],input[type=datetime-local],textarea){&:focus{box-shadow:var(--ag-focus-shadow)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/input-style/input-style-underlined.css-GENERATED.ts\nvar inputStyleUnderlinedCSS = (\n  /*css*/\n  `.ag-input-field-input:where(input:not([type]),input[type=text],input[type=number],input[type=tel],input[type=date],input[type=datetime-local],textarea){border-left:none;border-right:none;border-top:none}`\n);\n\n// packages/ag-grid-community/src/theming/parts/input-style/input-styles.ts\nvar baseParams2 = {\n  inputBackgroundColor: \"transparent\",\n  inputBorder: false,\n  inputBorderRadius: 0,\n  inputTextColor: {\n    ref: \"textColor\"\n  },\n  inputPlaceholderTextColor: {\n    ref: \"inputTextColor\",\n    mix: 0.5\n  },\n  inputPaddingStart: 0,\n  inputHeight: {\n    calc: \"max(iconSize, fontSize) + spacing * 2\"\n  },\n  inputFocusBackgroundColor: {\n    ref: \"inputBackgroundColor\"\n  },\n  inputFocusBorder: {\n    ref: \"inputBorder\"\n  },\n  inputFocusShadow: \"none\",\n  inputFocusTextColor: {\n    ref: \"inputTextColor\"\n  },\n  inputDisabledBackgroundColor: {\n    ref: \"inputBackgroundColor\"\n  },\n  inputDisabledBorder: {\n    ref: \"inputBorder\"\n  },\n  inputDisabledTextColor: {\n    ref: \"inputTextColor\"\n  },\n  inputInvalidBackgroundColor: {\n    ref: \"inputBackgroundColor\"\n  },\n  inputInvalidBorder: {\n    ref: \"inputBorder\"\n  },\n  inputInvalidTextColor: {\n    ref: \"inputTextColor\"\n  },\n  inputIconColor: {\n    ref: \"inputTextColor\"\n  },\n  pickerButtonBorder: false,\n  pickerButtonFocusBorder: { ref: \"inputFocusBorder\" },\n  pickerButtonBackgroundColor: { ref: \"backgroundColor\" },\n  pickerButtonFocusBackgroundColor: { ref: \"backgroundColor\" },\n  pickerListBorder: false,\n  pickerListBackgroundColor: { ref: \"backgroundColor\" }\n};\nvar makeInputStyleBaseTreeShakeable = () => createPart({\n  feature: \"inputStyle\",\n  params: baseParams2,\n  css: inputStyleBaseCSS\n});\nvar inputStyleBase = /* @__PURE__ */ makeInputStyleBaseTreeShakeable();\nvar makeInputStyleBorderedTreeShakeable = () => createPart({\n  feature: \"inputStyle\",\n  params: {\n    ...baseParams2,\n    inputBackgroundColor: backgroundColor,\n    inputBorder: true,\n    inputBorderRadius: {\n      ref: \"borderRadius\"\n    },\n    inputPaddingStart: {\n      ref: \"spacing\"\n    },\n    inputFocusBorder: {\n      color: accentColor\n    },\n    inputFocusShadow: {\n      ref: \"focusShadow\"\n    },\n    inputDisabledBackgroundColor: foregroundBackgroundMix(0.06),\n    inputDisabledTextColor: {\n      ref: \"textColor\",\n      mix: 0.5\n    },\n    inputInvalidBorder: {\n      color: { ref: \"invalidColor\" }\n    },\n    pickerButtonBorder: true,\n    pickerListBorder: true\n  },\n  css: () => inputStyleBaseCSS + inputStyleBorderedCSS\n});\nvar inputStyleBordered = /* @__PURE__ */ makeInputStyleBorderedTreeShakeable();\nvar makeInputStyleUnderlinedTreeShakeable = () => createPart({\n  feature: \"inputStyle\",\n  params: {\n    ...baseParams2,\n    inputBackgroundColor: \"transparent\",\n    inputBorder: {\n      width: 2,\n      color: foregroundMix(0.3)\n    },\n    inputPaddingStart: {\n      ref: \"spacing\"\n    },\n    inputFocusBorder: \"solid 2px var(--ag-accent-color)\",\n    inputDisabledTextColor: {\n      ref: \"textColor\",\n      mix: 0.5\n    },\n    inputDisabledBorder: \"solid 1px var(--ag-border-color)\",\n    inputInvalidBorder: {\n      width: 2,\n      color: {\n        ref: \"invalidColor\",\n        mix: 0.3\n      }\n    }\n  },\n  css: () => inputStyleBaseCSS + inputStyleUnderlinedCSS\n});\nvar inputStyleUnderlined = /* @__PURE__ */ makeInputStyleUnderlinedTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/tab-style/tab-style-base.css-GENERATED.ts\nvar tabStyleBaseCSS = (\n  /*css*/\n  `.ag-tabs-header{background-color:var(--ag-tab-bar-background-color);border-bottom:var(--ag-tab-bar-border);display:flex;flex:1;gap:var(--ag-tab-spacing);padding:var(--ag-tab-bar-top-padding) var(--ag-tab-bar-horizontal-padding) 0}.ag-tabs-header-wrapper{display:flex}.ag-tabs-close-button-wrapper{align-items:center;border:0;display:flex;padding:var(--ag-spacing)}:where(.ag-ltr) .ag-tabs-close-button-wrapper{border-right:1px solid var(--ag-border-color)}:where(.ag-rtl) .ag-tabs-close-button-wrapper{border-left:1px solid var(--ag-border-color)}.ag-tabs-close-button{background-color:unset;border:0;cursor:pointer;padding:0}.ag-tab{align-items:center;background-color:var(--ag-tab-background-color);border-left:var(--ag-tab-selected-border-width) solid transparent;border-right:var(--ag-tab-selected-border-width) solid transparent;color:var(--ag-tab-text-color);cursor:pointer;display:flex;flex:1;justify-content:center;padding:var(--ag-tab-top-padding) var(--ag-tab-horizontal-padding) var(--ag-tab-bottom-padding);position:relative;&:hover{background-color:var(--ag-tab-hover-background-color);color:var(--ag-tab-hover-text-color)}&.ag-tab-selected{background-color:var(--ag-tab-selected-background-color);color:var(--ag-tab-selected-text-color)}&:after{background-color:var(--ag-tab-selected-underline-color);bottom:0;content:\"\";display:block;height:var(--ag-tab-selected-underline-width);left:0;opacity:0;position:absolute;right:0;transition:opacity var(--ag-tab-selected-underline-transition-duration)}&.ag-tab-selected:after{opacity:1}}:where(.ag-ltr) .ag-tab{&.ag-tab-selected{&:where(:not(:first-of-type)){border-left-color:var(--ag-tab-selected-border-color)}&:where(:not(:last-of-type)){border-right-color:var(--ag-tab-selected-border-color)}}}:where(.ag-rtl) .ag-tab{&.ag-tab-selected{&:where(:not(:first-of-type)){border-right-color:var(--ag-tab-selected-border-color)}&:where(:not(:last-of-type)){border-left-color:var(--ag-tab-selected-border-color)}}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/tab-style/tab-style-rolodex.css-GENERATED.ts\nvar tabStyleRolodexCSS = (\n  /*css*/\n  `.ag-tab{border-left:var(--ag-tab-selected-border-width) solid transparent;border-right:var(--ag-tab-selected-border-width) solid transparent;border-top:var(--ag-tab-selected-border-width) solid transparent;flex:none;&.ag-tab-selected{border-left-color:var(--ag-tab-selected-border-color);border-right-color:var(--ag-tab-selected-border-color);border-top-color:var(--ag-tab-selected-border-color);margin-bottom:-1px;padding-bottom:calc(var(--ag-tab-bottom-padding) + 1px)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/tab-style/tab-styles.ts\nvar baseParams3 = {\n  tabBarBackgroundColor: \"transparent\",\n  tabBarHorizontalPadding: 0,\n  tabBarTopPadding: 0,\n  tabBackgroundColor: \"transparent\",\n  tabTextColor: {\n    ref: \"textColor\"\n  },\n  tabHorizontalPadding: {\n    ref: \"spacing\"\n  },\n  tabTopPadding: {\n    ref: \"spacing\"\n  },\n  tabBottomPadding: {\n    ref: \"spacing\"\n  },\n  tabSpacing: \"0\",\n  tabHoverBackgroundColor: {\n    ref: \"tabBackgroundColor\"\n  },\n  tabHoverTextColor: {\n    ref: \"tabTextColor\"\n  },\n  tabSelectedBackgroundColor: {\n    ref: \"tabBackgroundColor\"\n  },\n  tabSelectedTextColor: {\n    ref: \"tabTextColor\"\n  },\n  tabSelectedBorderWidth: 1,\n  tabSelectedBorderColor: \"transparent\",\n  tabSelectedUnderlineColor: \"transparent\",\n  tabSelectedUnderlineWidth: 0,\n  tabSelectedUnderlineTransitionDuration: 0,\n  tabBarBorder: false\n};\nvar makeTabStyleBaseTreeShakeable = () => createPart({\n  feature: \"tabStyle\",\n  params: baseParams3,\n  css: tabStyleBaseCSS\n});\nvar tabStyleBase = /* @__PURE__ */ makeTabStyleBaseTreeShakeable();\nvar makeTabStyleQuartzTreeShakeable = () => createPart({\n  feature: \"tabStyle\",\n  params: {\n    ...baseParams3,\n    tabBarBorder: true,\n    tabBarBackgroundColor: foregroundMix(0.05),\n    tabTextColor: {\n      ref: \"textColor\",\n      mix: 0.7\n    },\n    tabSelectedTextColor: {\n      ref: \"textColor\"\n    },\n    tabHoverTextColor: {\n      ref: \"textColor\"\n    },\n    tabSelectedBorderColor: {\n      ref: \"borderColor\"\n    },\n    tabSelectedBackgroundColor: backgroundColor\n  },\n  css: tabStyleBaseCSS\n});\nvar tabStyleQuartz = /* @__PURE__ */ makeTabStyleQuartzTreeShakeable();\nvar makeTabStyleMaterialTreeShakeable = () => createPart({\n  feature: \"tabStyle\",\n  params: {\n    ...baseParams3,\n    tabBarBackgroundColor: {\n      ref: \"chromeBackgroundColor\"\n    },\n    tabSelectedUnderlineColor: {\n      ref: \"primaryColor\"\n    },\n    tabSelectedUnderlineWidth: 2,\n    tabSelectedUnderlineTransitionDuration: 0\n  },\n  css: tabStyleBaseCSS\n});\nvar tabStyleMaterial = /* @__PURE__ */ makeTabStyleMaterialTreeShakeable();\nvar makeTabStyleAlpineTreeShakeable = () => createPart({\n  feature: \"tabStyle\",\n  params: {\n    ...baseParams3,\n    tabBarBorder: true,\n    tabBarBackgroundColor: {\n      ref: \"chromeBackgroundColor\"\n    },\n    tabHoverTextColor: accentColor,\n    tabSelectedTextColor: accentColor,\n    tabSelectedUnderlineColor: accentColor,\n    tabSelectedUnderlineWidth: 2,\n    tabSelectedUnderlineTransitionDuration: \"0.3s\"\n  },\n  css: tabStyleBaseCSS\n});\nvar tabStyleAlpine = /* @__PURE__ */ makeTabStyleAlpineTreeShakeable();\nvar makeTabStyleRolodexTreeShakeable = () => createPart({\n  feature: \"tabStyle\",\n  params: {\n    ...baseParams3,\n    tabBarBackgroundColor: {\n      ref: \"chromeBackgroundColor\"\n    },\n    tabBarHorizontalPadding: {\n      ref: \"spacing\"\n    },\n    tabBarTopPadding: {\n      ref: \"spacing\"\n    },\n    tabBarBorder: true,\n    tabHorizontalPadding: { calc: \"spacing * 2\" },\n    tabTopPadding: {\n      ref: \"spacing\"\n    },\n    tabBottomPadding: {\n      ref: \"spacing\"\n    },\n    tabSpacing: {\n      ref: \"spacing\"\n    },\n    tabSelectedBorderColor: {\n      ref: \"borderColor\"\n    },\n    tabSelectedBackgroundColor: backgroundColor\n  },\n  css: () => tabStyleBaseCSS + tabStyleRolodexCSS\n});\nvar tabStyleRolodex = /* @__PURE__ */ makeTabStyleRolodexTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/theme/material-adjustments.css-GENERATED.ts\nvar materialAdjustmentsCSS = (\n  /*css*/\n  `.ag-dnd-ghost,.ag-filter-toolpanel-header,.ag-filter-toolpanel-search,.ag-multi-filter-group-title-bar,.ag-panel-title-bar-title,.ag-status-bar{color:var(--ag-header-text-color);font-size:calc(var(--ag-font-size) - 1px);font-weight:600}.ag-column-drop-horizontal{background-color:color-mix(in srgb,var(--ag-background-color),var(--ag-foreground-color) 8%)}.ag-cell.ag-cell-inline-editing{background-color:var(--ag-background-color);background-image:linear-gradient(0deg,var(--ag-input-background-color),var(--ag-input-background-color));border:var(--ag-input-border)!important;border-width:1px!important;height:calc(var(--ag-row-height) + var(--ag-spacing)*3);padding:var(--ag-spacing);:where(.ag-row-last:not(.ag-row-first)) &{bottom:0}:where(.ag-has-focus) &{border:var(--ag-input-focus-border)!important;border-width:1px!important}}.ag-advanced-filter-builder-button,.ag-standard-button{text-transform:uppercase}.ag-status-bar{border:1px solid var(--ag-border-color)}.ag-list-item-hovered:after{background-color:var(--ag-primary-color)}.ag-pill-button:hover{color:var(--ag-primary-color)}.ag-header-highlight-after:after,.ag-header-highlight-before:after{background-color:var(--ag-primary-color)}`\n);\n\n// packages/ag-grid-community/src/theming/parts/theme/themes.ts\nvar makeThemeQuartzTreeShakeable = () => createTheme().withPart(checkboxStyleDefault).withPart(colorSchemeVariable).withPart(iconSetQuartzRegular).withPart(tabStyleQuartz).withPart(inputStyleBordered).withPart(columnDropStyleBordered).withParams({\n  fontFamily: [\n    { googleFont: \"IBM Plex Sans\" },\n    \"-apple-system\",\n    \"BlinkMacSystemFont\",\n    \"Segoe UI\",\n    \"Roboto\",\n    \"Oxygen-Sans\",\n    \"Ubuntu\"\n  ]\n});\nvar themeQuartz = /* @__PURE__ */ makeThemeQuartzTreeShakeable();\nvar makeThemeAlpineTreeShakeable = () => createTheme().withPart(buttonStyleAlpine).withPart(checkboxStyleDefault).withPart(colorSchemeVariable).withPart(iconSetAlpine).withPart(tabStyleAlpine).withPart(inputStyleBordered).withPart(columnDropStyleBordered).withParams({\n  accentColor: \"#2196f3\",\n  selectedRowBackgroundColor: accentMix(0.3),\n  inputFocusBorder: {\n    color: accentMix(0.4)\n  },\n  focusShadow: { radius: 2, spread: 1.6, color: accentMix(0.4) },\n  iconButtonHoverBackgroundColor: \"transparent\",\n  iconButtonActiveBackgroundColor: \"transparent\",\n  checkboxUncheckedBorderColor: foregroundBackgroundMix(0.45),\n  checkboxIndeterminateBackgroundColor: foregroundBackgroundMix(0.45),\n  checkboxIndeterminateBorderColor: foregroundBackgroundMix(0.45),\n  checkboxBorderWidth: 2,\n  checkboxBorderRadius: 2,\n  fontSize: 13,\n  dataFontSize: 14,\n  headerFontWeight: 700,\n  borderRadius: 3,\n  wrapperBorderRadius: 3,\n  tabSelectedUnderlineColor: accentColor,\n  tabSelectedBorderWidth: 0,\n  tabSelectedUnderlineTransitionDuration: 0.3,\n  sideButtonSelectedUnderlineColor: accentColor,\n  sideButtonSelectedUnderlineWidth: 2,\n  sideButtonSelectedUnderlineTransitionDuration: 0.3,\n  sideButtonBorder: false,\n  sideButtonSelectedBorder: false,\n  sideButtonBarTopPadding: { calc: \"spacing * 3\" },\n  sideButtonSelectedBackgroundColor: \"transparent\",\n  sideButtonHoverTextColor: accentColor,\n  iconButtonHoverColor: accentColor,\n  toggleButtonWidth: 28,\n  toggleButtonHeight: 18,\n  toggleButtonSwitchInset: 1,\n  toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.45)\n});\nvar themeAlpine = /* @__PURE__ */ makeThemeAlpineTreeShakeable();\nvar makeThemeBalhamTreeShakeable = () => createTheme().withPart(buttonStyleBalham).withPart(checkboxStyleDefault).withPart(colorSchemeVariable).withPart(iconSetBalham).withPart(tabStyleRolodex).withPart(inputStyleBordered).withPart(columnDropStylePlain).withParams({\n  accentColor: \"#0091ea\",\n  borderColor: foregroundMix(0.2),\n  spacing: 4,\n  widgetVerticalSpacing: { calc: \"max(8px, spacing)\" },\n  borderRadius: 2,\n  wrapperBorderRadius: 2,\n  headerColumnResizeHandleColor: \"transparent\",\n  headerColumnBorder: true,\n  headerColumnBorderHeight: \"50%\",\n  oddRowBackgroundColor: {\n    ref: \"chromeBackgroundColor\",\n    mix: 0.5\n  },\n  checkboxBorderRadius: 2,\n  checkboxBorderWidth: 1,\n  checkboxUncheckedBackgroundColor: backgroundColor,\n  checkboxUncheckedBorderColor: foregroundBackgroundMix(0.5),\n  checkboxCheckedBackgroundColor: backgroundColor,\n  checkboxCheckedBorderColor: accentColor,\n  checkboxCheckedShapeColor: accentColor,\n  checkboxIndeterminateBackgroundColor: backgroundColor,\n  checkboxIndeterminateBorderColor: foregroundBackgroundMix(0.5),\n  checkboxIndeterminateShapeColor: foregroundBackgroundMix(0.5),\n  focusShadow: { radius: 2, spread: 1, color: accentColor },\n  headerTextColor: foregroundMix(0.6),\n  iconButtonHoverBackgroundColor: \"transparent\",\n  iconButtonActiveBackgroundColor: \"transparent\",\n  fontSize: 12,\n  tabSelectedBackgroundColor: backgroundColor,\n  headerFontWeight: \"bold\",\n  toggleButtonWidth: 32,\n  toggleButtonHeight: 16,\n  toggleButtonSwitchInset: 1,\n  toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.5),\n  sideButtonBorder: true,\n  sideButtonBarTopPadding: { calc: \"spacing * 4\" },\n  popupShadow: \"5px 5px 10px rgba(0, 0, 0, 0.3)\",\n  statusBarLabelColor: foregroundMix(0.54),\n  statusBarLabelFontWeight: 600,\n  statusBarValueFontWeight: 600,\n  panelTitleBarIconColor: foregroundColor\n});\nvar themeBalham = /* @__PURE__ */ makeThemeBalhamTreeShakeable();\nvar makeStyleMaterialTreeShakeable = () => {\n  const sharedParams = {\n    tabSelectedUnderlineColor: { ref: \"primaryColor\" },\n    sideButtonSelectedUnderlineColor: { ref: \"primaryColor\" },\n    buttonTextColor: { ref: \"primaryColor\" },\n    rangeSelectionBackgroundColor: {\n      ref: \"primaryColor\",\n      mix: 0.2\n    },\n    rangeSelectionBorderColor: {\n      ref: \"primaryColor\"\n    },\n    rangeSelectionHighlightColor: {\n      ref: \"primaryColor\",\n      mix: 0.5\n    },\n    rangeHeaderHighlightColor: {\n      ref: \"foregroundColor\",\n      mix: 0.08\n    },\n    rowNumbersSelectedColor: {\n      ref: \"primaryColor\",\n      mix: 0.5\n    },\n    inputFocusBorder: {\n      width: 2,\n      color: { ref: \"primaryColor\" }\n    },\n    pickerButtonFocusBorder: {\n      width: 1,\n      color: { ref: \"primaryColor\" }\n    },\n    cellEditingBorder: {\n      color: { ref: \"primaryColor\" }\n    },\n    menuBackgroundColor: { ref: \"backgroundColor\" },\n    sideButtonBarBackgroundColor: backgroundColor,\n    sideButtonSelectedBackgroundColor: \"transparent\",\n    sideButtonBarTopPadding: { calc: \"spacing * 4\" },\n    headerColumnResizeHandleColor: \"none\",\n    headerBackgroundColor: {\n      ref: \"backgroundColor\"\n    },\n    rowHoverColor: foregroundMix(0.08),\n    columnHoverColor: foregroundMix(0.08),\n    headerCellHoverBackgroundColor: foregroundMix(0.05),\n    statusBarLabelColor: foregroundMix(0.63),\n    statusBarLabelFontWeight: 600,\n    statusBarValueFontWeight: 600,\n    valueChangeValueHighlightBackgroundColor: \"#00acc1\",\n    panelTitleBarIconColor: foregroundColor,\n    advancedFilterBuilderButtonBarBorder: false\n  };\n  const lightParams = {\n    ...sharedParams,\n    primaryColor: \"#3f51b5\",\n    foregroundColor: \"#000D\",\n    headerTextColor: \"#0008\",\n    accentColor: \"#ff4081\",\n    checkboxUncheckedBorderColor: foregroundColor,\n    checkboxIndeterminateBackgroundColor: foregroundColor,\n    toggleButtonOffBackgroundColor: foregroundColor,\n    selectedRowBackgroundColor: \"rgba(33, 150, 243, 0.3)\"\n  };\n  const darkParams2 = {\n    ...sharedParams,\n    primaryColor: \"#3f51b5\",\n    foregroundColor: \"#fffD\",\n    headerTextColor: \"#fff8\",\n    accentColor: \"#bb86fc\",\n    checkboxUncheckedBorderColor: foregroundBackgroundMix(0.5),\n    checkboxIndeterminateBackgroundColor: foregroundBackgroundMix(0.5),\n    toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.5),\n    selectedRowBackgroundColor: \"#bb86fc33\"\n  };\n  return createPart({\n    feature: \"styleMaterial\",\n    css: materialAdjustmentsCSS,\n    params: lightParams,\n    modeParams: {\n      light: lightParams,\n      dark: darkParams2,\n      \"dark-blue\": darkParams2\n    }\n  });\n};\nvar styleMaterial = /* @__PURE__ */ makeStyleMaterialTreeShakeable();\nvar makeThemeMaterialTreeShakeable = () => /* @__PURE__ */ createTheme().withPart(buttonStyleBase).withPart(checkboxStyleDefault).withPart(colorSchemeVariable).withPart(iconSetMaterial).withPart(tabStyleMaterial).withPart(inputStyleUnderlined).withPart(columnDropStylePlain).withPart(styleMaterial).withParams({\n  rowHeight: {\n    calc: \"max(iconSize, dataFontSize) + spacing * 3.75 * rowVerticalPaddingScale\"\n  },\n  headerHeight: {\n    calc: \"max(iconSize, dataFontSize) + spacing * 4.75 * headerVerticalPaddingScale\"\n  },\n  widgetVerticalSpacing: {\n    calc: \"spacing * 1.75\"\n  },\n  cellHorizontalPadding: { calc: \"spacing * 3\" },\n  buttonHorizontalPadding: { ref: \"spacing\" },\n  widgetContainerHorizontalPadding: { calc: \"spacing * 1.5\" },\n  widgetContainerVerticalPadding: { calc: \"spacing * 2\" },\n  fontSize: 13,\n  iconSize: 18,\n  borderRadius: 0,\n  wrapperBorderRadius: 0,\n  wrapperBorder: false,\n  menuBorder: false,\n  dialogBorder: false,\n  panelTitleBarBorder: false,\n  tabSelectedBorderWidth: 0,\n  tabSelectedUnderlineTransitionDuration: 0.3,\n  sidePanelBorder: false,\n  sideButtonSelectedBorder: false,\n  sideButtonSelectedUnderlineWidth: 2,\n  sideButtonSelectedUnderlineTransitionDuration: 0.3,\n  sideButtonBorder: false,\n  buttonBorder: false,\n  buttonDisabledBorder: false,\n  focusShadow: {\n    spread: 4,\n    color: foregroundMix(0.16)\n  },\n  fontFamily: [\n    { googleFont: \"Roboto\" },\n    \"-apple-system\",\n    \"BlinkMacSystemFont\",\n    \"Segoe UI\",\n    \"Oxygen-Sans\",\n    \"Ubuntu\",\n    \"Cantarell\",\n    \"Helvetica Neue\",\n    \"sans-serif\"\n  ],\n  inputHeight: {\n    calc: \"max(iconSize, fontSize) + spacing * 3\"\n  },\n  pickerButtonBorder: {\n    width: 1,\n    color: \"transparent\"\n  },\n  headerFontWeight: 600,\n  headerFontSize: { calc: \"fontSize - 1px\" },\n  checkboxBorderWidth: 2,\n  checkboxBorderRadius: 2,\n  toggleButtonWidth: 34,\n  toggleButtonSwitchInset: 1,\n  cardShadow: \"0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)\",\n  popupShadow: \"5px 5px 10px rgba(0, 0, 0, 0.3)\"\n});\nvar themeMaterial = /* @__PURE__ */ makeThemeMaterialTreeShakeable();\n\n// packages/ag-grid-community/src/environment.ts\nvar CELL_HORIZONTAL_PADDING = {\n  cssName: \"--ag-cell-horizontal-padding\",\n  changeKey: \"cellHorizontalPaddingChanged\",\n  defaultValue: 16\n};\nvar INDENTATION_LEVEL = {\n  cssName: \"--ag-indentation-level\",\n  changeKey: \"indentationLevelChanged\",\n  defaultValue: 0,\n  noWarn: true,\n  cacheDefault: true\n};\nvar ROW_GROUP_INDENT_SIZE = {\n  cssName: \"--ag-row-group-indent-size\",\n  changeKey: \"rowGroupIndentSizeChanged\",\n  defaultValue: 0\n};\nvar ROW_HEIGHT = {\n  cssName: \"--ag-row-height\",\n  changeKey: \"rowHeightChanged\",\n  defaultValue: 42\n};\nvar HEADER_HEIGHT = {\n  cssName: \"--ag-header-height\",\n  changeKey: \"headerHeightChanged\",\n  defaultValue: 48\n};\nvar LIST_ITEM_HEIGHT = {\n  cssName: \"--ag-list-item-height\",\n  changeKey: \"listItemHeightChanged\",\n  defaultValue: 24\n};\nvar ROW_BORDER_WIDTH = {\n  cssName: \"--ag-row-border\",\n  changeKey: \"rowBorderWidthChanged\",\n  defaultValue: 1,\n  border: true\n};\nvar PINNED_BORDER_WIDTH = {\n  cssName: \"--ag-pinned-row-border\",\n  changeKey: \"pinnedRowBorderWidthChanged\",\n  defaultValue: 1,\n  border: true\n};\nvar paramsId = 0;\nvar Environment = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"environment\";\n    this.sizeEls = /* @__PURE__ */ new Map();\n    this.lastKnownValues = /* @__PURE__ */ new Map();\n    this.sizesMeasured = false;\n    this.paramsClass = `ag-theme-params-${++paramsId}`;\n    this.globalCSS = [];\n  }\n  wireBeans(beans) {\n    const { eGridDiv, gridOptions } = beans;\n    this.eGridDiv = eGridDiv;\n    this.eStyleContainer = gridOptions.themeStyleContainer ?? (eGridDiv.getRootNode() === document ? document.head : eGridDiv);\n    this.cssLayer = gridOptions.themeCssLayer;\n    this.styleNonce = gridOptions.styleNonce;\n  }\n  postConstruct() {\n    this.addManagedPropertyListener(\"theme\", () => this.handleThemeGridOptionChange());\n    this.handleThemeGridOptionChange();\n    this.addManagedPropertyListener(\"rowHeight\", () => this.refreshRowHeightVariable());\n    this.getSizeEl(ROW_HEIGHT);\n    this.getSizeEl(HEADER_HEIGHT);\n    this.getSizeEl(LIST_ITEM_HEIGHT);\n    this.getSizeEl(ROW_BORDER_WIDTH);\n    this.getSizeEl(PINNED_BORDER_WIDTH);\n    this.refreshRowBorderWidthVariable();\n    this.addDestroyFunc(() => _unregisterGridUsingThemingAPI(this));\n    this.mutationObserver = new MutationObserver(() => {\n      this.fireGridStylesChangedEvent(\"themeChanged\");\n    });\n    this.addDestroyFunc(() => this.mutationObserver.disconnect());\n  }\n  getPinnedRowBorderWidth() {\n    return this.getCSSVariablePixelValue(PINNED_BORDER_WIDTH);\n  }\n  getRowBorderWidth() {\n    return this.getCSSVariablePixelValue(ROW_BORDER_WIDTH);\n  }\n  getDefaultRowHeight() {\n    return this.getCSSVariablePixelValue(ROW_HEIGHT);\n  }\n  getDefaultHeaderHeight() {\n    return this.getCSSVariablePixelValue(HEADER_HEIGHT);\n  }\n  getDefaultCellHorizontalPadding() {\n    return this.getCSSVariablePixelValue(CELL_HORIZONTAL_PADDING);\n  }\n  getCellPaddingLeft() {\n    const cellHorizontalPadding = this.getDefaultCellHorizontalPadding();\n    const indentationLevel = this.getCSSVariablePixelValue(INDENTATION_LEVEL);\n    const rowGroupIndentSize = this.getCSSVariablePixelValue(ROW_GROUP_INDENT_SIZE);\n    return cellHorizontalPadding - 1 + rowGroupIndentSize * indentationLevel;\n  }\n  getCellPadding() {\n    const cellPaddingRight = this.getDefaultCellHorizontalPadding() - 1;\n    return this.getCellPaddingLeft() + cellPaddingRight;\n  }\n  getDefaultColumnMinWidth() {\n    return Math.min(36, this.getDefaultRowHeight());\n  }\n  getDefaultListItemHeight() {\n    return this.getCSSVariablePixelValue(LIST_ITEM_HEIGHT);\n  }\n  applyThemeClasses(el) {\n    const { gridTheme } = this;\n    let themeClass = \"\";\n    if (gridTheme) {\n      themeClass = `${this.paramsClass} ${gridTheme._getCssClass()}`;\n    } else {\n      this.mutationObserver.disconnect();\n      let node = this.eGridDiv;\n      while (node) {\n        let isThemeEl = false;\n        for (const className of Array.from(node.classList)) {\n          if (className.startsWith(\"ag-theme-\")) {\n            isThemeEl = true;\n            themeClass = themeClass ? `${themeClass} ${className}` : className;\n          }\n        }\n        if (isThemeEl) {\n          this.mutationObserver.observe(node, {\n            attributes: true,\n            attributeFilter: [\"class\"]\n          });\n        }\n        node = node.parentElement;\n      }\n    }\n    for (const className of Array.from(el.classList)) {\n      if (className.startsWith(\"ag-theme-\")) {\n        el.classList.remove(className);\n      }\n    }\n    if (themeClass) {\n      const oldClass = el.className;\n      el.className = oldClass + (oldClass ? \" \" : \"\") + themeClass;\n    }\n  }\n  refreshRowHeightVariable() {\n    const { eGridDiv } = this;\n    const oldRowHeight = eGridDiv.style.getPropertyValue(\"--ag-line-height\").trim();\n    const height = this.gos.get(\"rowHeight\");\n    if (height == null || isNaN(height) || !isFinite(height)) {\n      if (oldRowHeight !== null) {\n        eGridDiv.style.setProperty(\"--ag-line-height\", null);\n      }\n      return -1;\n    }\n    const newRowHeight = `${height}px`;\n    if (oldRowHeight != newRowHeight) {\n      eGridDiv.style.setProperty(\"--ag-line-height\", newRowHeight);\n      return height;\n    }\n    return oldRowHeight != \"\" ? parseFloat(oldRowHeight) : -1;\n  }\n  addGlobalCSS(css, debugId) {\n    if (this.gridTheme) {\n      _injectGlobalCSS(css, this.eStyleContainer, debugId, this.cssLayer, 0, this.styleNonce);\n    } else {\n      this.globalCSS.push([css, debugId]);\n    }\n  }\n  getCSSVariablePixelValue(variable) {\n    const cached = this.lastKnownValues.get(variable);\n    if (cached != null) {\n      return cached;\n    }\n    const measurement = this.measureSizeEl(variable);\n    if (measurement === \"detached\" || measurement === \"no-styles\") {\n      if (variable.cacheDefault) {\n        this.lastKnownValues.set(variable, variable.defaultValue);\n      }\n      return variable.defaultValue;\n    }\n    this.lastKnownValues.set(variable, measurement);\n    return measurement;\n  }\n  measureSizeEl(variable) {\n    const sizeEl = this.getSizeEl(variable);\n    if (sizeEl.offsetParent == null) {\n      return \"detached\";\n    }\n    const newSize = sizeEl.offsetWidth;\n    if (newSize === NO_VALUE_SENTINEL)\n      return \"no-styles\";\n    this.sizesMeasured = true;\n    return newSize;\n  }\n  getMeasurementContainer() {\n    let container = this.eMeasurementContainer;\n    if (!container) {\n      container = this.eMeasurementContainer = _createElement({ tag: \"div\", cls: \"ag-measurement-container\" });\n      this.eGridDiv.appendChild(container);\n    }\n    return container;\n  }\n  getSizeEl(variable) {\n    let sizeEl = this.sizeEls.get(variable);\n    if (sizeEl) {\n      return sizeEl;\n    }\n    const container = this.getMeasurementContainer();\n    sizeEl = _createElement({ tag: \"div\" });\n    const { border, noWarn } = variable;\n    if (border) {\n      sizeEl.className = \"ag-measurement-element-border\";\n      sizeEl.style.setProperty(\n        \"--ag-internal-measurement-border\",\n        `var(${variable.cssName}, solid ${NO_VALUE_SENTINEL}px)`\n      );\n    } else {\n      sizeEl.style.width = `var(${variable.cssName}, ${NO_VALUE_SENTINEL}px)`;\n    }\n    container.appendChild(sizeEl);\n    this.sizeEls.set(variable, sizeEl);\n    let lastMeasurement = this.measureSizeEl(variable);\n    if (lastMeasurement === \"no-styles\" && !noWarn) {\n      _warn(9, { variable });\n    }\n    const unsubscribe = _observeResize(this.beans, sizeEl, () => {\n      const newMeasurement = this.measureSizeEl(variable);\n      if (newMeasurement === \"detached\" || newMeasurement === \"no-styles\") {\n        return;\n      }\n      this.lastKnownValues.set(variable, newMeasurement);\n      if (newMeasurement !== lastMeasurement) {\n        lastMeasurement = newMeasurement;\n        this.fireGridStylesChangedEvent(variable.changeKey);\n      }\n    });\n    this.addDestroyFunc(() => unsubscribe());\n    return sizeEl;\n  }\n  fireGridStylesChangedEvent(change) {\n    if (change === \"rowBorderWidthChanged\") {\n      this.refreshRowBorderWidthVariable();\n    }\n    this.eventSvc.dispatchEvent({\n      type: \"gridStylesChanged\",\n      [change]: true\n    });\n  }\n  refreshRowBorderWidthVariable() {\n    const width = this.getCSSVariablePixelValue(ROW_BORDER_WIDTH);\n    this.eGridDiv.style.setProperty(\"--ag-internal-row-border-width\", `${width}px`);\n  }\n  handleThemeGridOptionChange() {\n    const { gos, eGridDiv, globalCSS, gridTheme: oldGridTheme } = this;\n    const themeGridOption = gos.get(\"theme\");\n    let newGridTheme;\n    if (themeGridOption === \"legacy\") {\n      newGridTheme = void 0;\n    } else {\n      const themeOrDefault = themeGridOption ?? themeQuartz;\n      if (themeOrDefault instanceof ThemeImpl) {\n        newGridTheme = themeOrDefault;\n      } else {\n        _error(240, { theme: themeOrDefault });\n      }\n    }\n    if (newGridTheme !== oldGridTheme) {\n      if (newGridTheme) {\n        _registerGridUsingThemingAPI(this);\n        _injectCoreAndModuleCSS(this.eStyleContainer, this.cssLayer, this.styleNonce);\n        for (const [css, debugId] of globalCSS) {\n          _injectGlobalCSS(css, this.eStyleContainer, debugId, this.cssLayer, 0, this.styleNonce);\n        }\n        globalCSS.length = 0;\n      }\n      this.gridTheme = newGridTheme;\n      newGridTheme?._startUse({\n        loadThemeGoogleFonts: gos.get(\"loadThemeGoogleFonts\"),\n        styleContainer: this.eStyleContainer,\n        cssLayer: this.cssLayer,\n        nonce: this.styleNonce\n      });\n      let eParamsStyle = this.eParamsStyle;\n      if (!eParamsStyle) {\n        eParamsStyle = this.eParamsStyle = _createElement({ tag: \"style\" });\n        const styleNonce = this.gos.get(\"styleNonce\");\n        if (styleNonce) {\n          eParamsStyle.setAttribute(\"nonce\", styleNonce);\n        }\n        eGridDiv.appendChild(eParamsStyle);\n      }\n      if (!IS_SSR) {\n        eParamsStyle.textContent = newGridTheme?._getPerGridCss(this.paramsClass) || \"\";\n      }\n      this.applyThemeClasses(eGridDiv);\n      this.fireGridStylesChangedEvent(\"themeChanged\");\n    }\n    if (newGridTheme && getComputedStyle(this.getMeasurementContainer()).getPropertyValue(\"--ag-legacy-styles-loaded\")) {\n      if (themeGridOption) {\n        _error(106);\n      } else {\n        _error(239);\n      }\n    }\n  }\n};\nvar NO_VALUE_SENTINEL = 15538;\n\n// packages/ag-grid-community/src/eventService.ts\nvar EventService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"eventSvc\";\n    this.globalSvc = new LocalEventService();\n  }\n  postConstruct() {\n    const { globalListener, globalSyncListener } = this.beans;\n    if (globalListener) {\n      this.addGlobalListener(globalListener, true);\n    }\n    if (globalSyncListener) {\n      this.addGlobalListener(globalSyncListener, false);\n    }\n  }\n  addEventListener(eventType, listener, async) {\n    this.globalSvc.addEventListener(eventType, listener, async);\n  }\n  removeEventListener(eventType, listener, async) {\n    this.globalSvc.removeEventListener(eventType, listener, async);\n  }\n  addGlobalListener(listener, async = false) {\n    this.globalSvc.addGlobalListener(listener, async);\n  }\n  removeGlobalListener(listener, async = false) {\n    this.globalSvc.removeGlobalListener(listener, async);\n  }\n  /** @deprecated DO NOT FIRE LOCAL EVENTS OFF THE EVENT SERVICE */\n  dispatchLocalEvent() {\n  }\n  dispatchEvent(event) {\n    this.globalSvc.dispatchEvent(_addGridCommonParams(this.gos, event));\n  }\n  dispatchEventOnce(event) {\n    this.globalSvc.dispatchEventOnce(_addGridCommonParams(this.gos, event));\n  }\n};\n\n// packages/ag-grid-community/src/navigation/headerNavigationService.ts\nfunction isAnyChildSpanningHeaderHeight(columnGroup) {\n  if (!columnGroup) {\n    return false;\n  }\n  return columnGroup.getLeafColumns().some((col) => col.isSpanHeaderHeight());\n}\nfunction getHeaderIndexToFocus(column, currentIndex) {\n  let nextColumn;\n  if (isColumnGroup(column) && isAnyChildSpanningHeaderHeight(column) && column.isPadding()) {\n    const targetColumn = column;\n    nextColumn = targetColumn.getLeafColumns()[0];\n    let col = nextColumn;\n    while (col !== targetColumn) {\n      currentIndex++;\n      col = col.getParent();\n    }\n  }\n  return {\n    column: nextColumn || column,\n    headerRowIndex: currentIndex\n  };\n}\nvar HeaderNavigationService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"headerNavigation\";\n    this.currentHeaderRowWithoutSpan = -1;\n  }\n  postConstruct() {\n    const beans = this.beans;\n    beans.ctrlsSvc.whenReady(this, (p) => {\n      this.gridBodyCon = p.gridBodyCtrl;\n    });\n    const eDocument = _getDocument(beans);\n    this.addManagedElementListeners(eDocument, {\n      mousedown: () => {\n        this.currentHeaderRowWithoutSpan = -1;\n      }\n    });\n  }\n  getHeaderPositionForColumn(colKey, floatingFilter) {\n    let column;\n    const { colModel, colGroupSvc, ctrlsSvc } = this.beans;\n    if (typeof colKey === \"string\") {\n      column = colModel.getCol(colKey);\n      if (!column) {\n        column = colGroupSvc?.getColumnGroup(colKey) ?? null;\n      }\n    } else {\n      column = colKey;\n    }\n    if (!column) {\n      return null;\n    }\n    const centerHeaderContainer = ctrlsSvc.getHeaderRowContainerCtrl();\n    const allCtrls = centerHeaderContainer?.getAllCtrls();\n    const isFloatingFilterVisible = _last(allCtrls || []).type === \"filter\";\n    const headerRowCount = getFocusHeaderRowCount(this.beans) - 1;\n    let row = -1;\n    let col = column;\n    while (col) {\n      row++;\n      col = col.getParent();\n    }\n    let headerRowIndex = row;\n    if (floatingFilter && isFloatingFilterVisible && headerRowIndex === headerRowCount - 1) {\n      headerRowIndex++;\n    }\n    return headerRowIndex === -1 ? null : {\n      headerRowIndex,\n      column\n    };\n  }\n  /*\n   * This method navigates grid header vertically\n   * @return {boolean} true to preventDefault on the event that caused this navigation.\n   */\n  navigateVertically(direction, fromHeader, event) {\n    const focusSvc = this.beans.focusSvc;\n    if (!fromHeader) {\n      fromHeader = focusSvc.focusedHeader;\n    }\n    if (!fromHeader) {\n      return false;\n    }\n    const { headerRowIndex } = fromHeader;\n    const column = fromHeader.column;\n    const rowLen = getFocusHeaderRowCount(this.beans);\n    const isUp = direction === \"UP\";\n    const currentRowType = this.getHeaderRowType(headerRowIndex);\n    let {\n      headerRowIndex: nextRow,\n      column: nextFocusColumn,\n      headerRowIndexWithoutSpan\n    } = isUp ? getColumnVisibleParent(currentRowType, column, headerRowIndex) : getColumnVisibleChild(currentRowType, column, headerRowIndex);\n    let skipColumn = false;\n    if (nextRow < 0) {\n      nextRow = 0;\n      nextFocusColumn = column;\n      skipColumn = true;\n    }\n    if (nextRow >= rowLen) {\n      nextRow = -1;\n      this.currentHeaderRowWithoutSpan = -1;\n    } else if (headerRowIndexWithoutSpan !== void 0) {\n      this.currentHeaderRowWithoutSpan = headerRowIndexWithoutSpan;\n    }\n    if (!skipColumn && !nextFocusColumn) {\n      return false;\n    }\n    return focusSvc.focusHeaderPosition({\n      headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },\n      allowUserOverride: true,\n      event\n    });\n  }\n  /*\n   * This method navigates grid header horizontally\n   * @return {boolean} true to preventDefault on the event that caused this navigation.\n   */\n  navigateHorizontally(direction, fromTab = false, event) {\n    const { focusSvc, gos } = this.beans;\n    const focusedHeader = focusSvc.focusedHeader;\n    let nextHeader;\n    let normalisedDirection;\n    if (this.currentHeaderRowWithoutSpan !== -1) {\n      focusedHeader.headerRowIndex = this.currentHeaderRowWithoutSpan;\n    } else {\n      this.currentHeaderRowWithoutSpan = focusedHeader.headerRowIndex;\n    }\n    if (direction === \"LEFT\" !== gos.get(\"enableRtl\")) {\n      normalisedDirection = \"Before\";\n      nextHeader = this.findHeader(focusedHeader, normalisedDirection);\n    } else {\n      normalisedDirection = \"After\";\n      nextHeader = this.findHeader(focusedHeader, normalisedDirection);\n    }\n    const userFunc = gos.getCallback(\"tabToNextHeader\");\n    if (fromTab && userFunc) {\n      const wasFocusedFromUserFunc = focusSvc.focusHeaderPositionFromUserFunc({\n        userFunc,\n        headerPosition: nextHeader,\n        direction: normalisedDirection\n      });\n      if (wasFocusedFromUserFunc) {\n        const { headerRowIndex } = focusSvc.focusedHeader || {};\n        if (headerRowIndex != null && headerRowIndex != focusedHeader.headerRowIndex) {\n          this.currentHeaderRowWithoutSpan = headerRowIndex;\n        }\n      }\n      return wasFocusedFromUserFunc;\n    }\n    if (nextHeader || !fromTab) {\n      return focusSvc.focusHeaderPosition({\n        headerPosition: nextHeader,\n        direction: normalisedDirection,\n        fromTab,\n        allowUserOverride: true,\n        event\n      });\n    }\n    return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);\n  }\n  focusNextHeaderRow(focusedHeader, direction, event) {\n    const currentIndex = focusedHeader.headerRowIndex;\n    let nextPosition = null;\n    let nextRowIndex;\n    const beans = this.beans;\n    if (direction === \"Before\") {\n      if (currentIndex > 0) {\n        nextRowIndex = currentIndex - 1;\n        this.currentHeaderRowWithoutSpan -= 1;\n        nextPosition = this.findColAtEdgeForHeaderRow(nextRowIndex, \"end\");\n      }\n    } else {\n      nextRowIndex = currentIndex + 1;\n      if (this.currentHeaderRowWithoutSpan < getFocusHeaderRowCount(beans)) {\n        this.currentHeaderRowWithoutSpan += 1;\n      } else {\n        this.currentHeaderRowWithoutSpan = -1;\n      }\n      nextPosition = this.findColAtEdgeForHeaderRow(nextRowIndex, \"start\");\n    }\n    if (!nextPosition) {\n      return false;\n    }\n    const { column, headerRowIndex } = getHeaderIndexToFocus(\n      nextPosition.column,\n      nextPosition?.headerRowIndex\n    );\n    return beans.focusSvc.focusHeaderPosition({\n      headerPosition: { column, headerRowIndex },\n      direction,\n      fromTab: true,\n      allowUserOverride: true,\n      event\n    });\n  }\n  scrollToColumn(column, direction = \"After\") {\n    if (column.getPinned()) {\n      return;\n    }\n    let columnToScrollTo;\n    if (isColumnGroup(column)) {\n      const columns = column.getDisplayedLeafColumns();\n      columnToScrollTo = direction === \"Before\" ? _last(columns) : columns[0];\n    } else {\n      columnToScrollTo = column;\n    }\n    this.gridBodyCon.scrollFeature.ensureColumnVisible(columnToScrollTo);\n  }\n  findHeader(focusedHeader, direction) {\n    let nextColumn;\n    let getColMethod;\n    const { colGroupSvc, visibleCols } = this.beans;\n    if (isColumnGroup(focusedHeader.column)) {\n      nextColumn = colGroupSvc?.getGroupAtDirection(focusedHeader.column, direction) ?? void 0;\n    } else {\n      getColMethod = `getCol${direction}`;\n      nextColumn = visibleCols[getColMethod](focusedHeader.column);\n    }\n    if (!nextColumn) {\n      return;\n    }\n    const { headerRowIndex } = focusedHeader;\n    if (this.getHeaderRowType(headerRowIndex) !== \"filter\") {\n      const columnsInPath = [nextColumn];\n      while (nextColumn.getParent()) {\n        nextColumn = nextColumn.getParent();\n        columnsInPath.push(nextColumn);\n      }\n      nextColumn = columnsInPath[Math.max(0, columnsInPath.length - 1 - headerRowIndex)];\n    }\n    const { column, headerRowIndex: indexToFocus } = getHeaderIndexToFocus(nextColumn, headerRowIndex);\n    return {\n      column,\n      headerRowIndex: indexToFocus\n    };\n  }\n  getHeaderRowType(rowIndex) {\n    const centerHeaderContainer = this.beans.ctrlsSvc.getHeaderRowContainerCtrl();\n    if (centerHeaderContainer) {\n      return centerHeaderContainer.getRowType(rowIndex);\n    }\n  }\n  findColAtEdgeForHeaderRow(level, position) {\n    const { visibleCols, ctrlsSvc, colGroupSvc } = this.beans;\n    const displayedColumns = visibleCols.allCols;\n    const column = displayedColumns[position === \"start\" ? 0 : displayedColumns.length - 1];\n    if (!column) {\n      return;\n    }\n    const childContainer = ctrlsSvc.getHeaderRowContainerCtrl(column.getPinned());\n    const type = childContainer?.getRowType(level);\n    if (type == \"group\") {\n      const columnGroup = colGroupSvc?.getColGroupAtLevel(column, level);\n      return {\n        headerRowIndex: level,\n        column: columnGroup\n      };\n    }\n    return {\n      // if type==null, means the header level didn't exist\n      headerRowIndex: type == null ? -1 : level,\n      column\n    };\n  }\n};\nfunction getColumnVisibleParent(currentRowType, currentColumn, currentIndex) {\n  const isFloatingFilter = currentRowType === \"filter\";\n  const isColumn2 = currentRowType === \"column\";\n  let nextFocusColumn = isFloatingFilter ? currentColumn : currentColumn.getParent();\n  let nextRow = currentIndex - 1;\n  let headerRowIndexWithoutSpan = nextRow;\n  if (isColumn2 && isAnyChildSpanningHeaderHeight(currentColumn.getParent())) {\n    while (nextFocusColumn && nextFocusColumn.isPadding()) {\n      nextFocusColumn = nextFocusColumn.getParent();\n      nextRow--;\n    }\n    headerRowIndexWithoutSpan = nextRow;\n    if (nextRow < 0) {\n      nextFocusColumn = currentColumn;\n      nextRow = currentIndex;\n      headerRowIndexWithoutSpan = void 0;\n    }\n  }\n  return { column: nextFocusColumn, headerRowIndex: nextRow, headerRowIndexWithoutSpan };\n}\nfunction getColumnVisibleChild(currentRowType, column, currentIndex, direction = \"After\") {\n  let nextFocusColumn = column;\n  let nextRow = currentIndex + 1;\n  const headerRowIndexWithoutSpan = nextRow;\n  if (currentRowType === \"group\") {\n    const leafColumns = column.getDisplayedLeafColumns();\n    const leafColumn = direction === \"After\" ? leafColumns[0] : _last(leafColumns);\n    const columnsInTheWay = [];\n    let currentColumn = leafColumn;\n    while (currentColumn.getParent() !== column) {\n      currentColumn = currentColumn.getParent();\n      columnsInTheWay.push(currentColumn);\n    }\n    nextFocusColumn = leafColumn;\n    if (leafColumn.isSpanHeaderHeight()) {\n      for (let i = columnsInTheWay.length - 1; i >= 0; i--) {\n        const colToFocus = columnsInTheWay[i];\n        if (!colToFocus.isPadding()) {\n          nextFocusColumn = colToFocus;\n          break;\n        }\n        nextRow++;\n      }\n    } else {\n      nextFocusColumn = _last(columnsInTheWay);\n      if (!nextFocusColumn) {\n        nextFocusColumn = leafColumn;\n      }\n    }\n  }\n  return { column: nextFocusColumn, headerRowIndex: nextRow, headerRowIndexWithoutSpan };\n}\n\n// packages/ag-grid-community/src/focusService.ts\nvar FocusService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"focusSvc\";\n    /** If a cell was destroyed that previously had focus, focus needs restored when the cell reappears */\n    this.focusFallbackTimeout = null;\n    this.needsFocusRestored = false;\n  }\n  wireBeans(beans) {\n    this.colModel = beans.colModel;\n    this.visibleCols = beans.visibleCols;\n    this.rowRenderer = beans.rowRenderer;\n    this.navigation = beans.navigation;\n    this.filterManager = beans.filterManager;\n    this.overlays = beans.overlays;\n  }\n  postConstruct() {\n    const clearFocusedCellListener = this.clearFocusedCell.bind(this);\n    this.addManagedEventListeners({\n      columnPivotModeChanged: clearFocusedCellListener,\n      newColumnsLoaded: this.onColumnEverythingChanged.bind(this),\n      columnGroupOpened: clearFocusedCellListener,\n      columnRowGroupChanged: clearFocusedCellListener\n    });\n    this.addDestroyFunc(_registerKeyboardFocusEvents(this.beans));\n  }\n  attemptToRecoverFocus() {\n    this.needsFocusRestored = true;\n    if (this.focusFallbackTimeout != null) {\n      clearTimeout(this.focusFallbackTimeout);\n    }\n    this.focusFallbackTimeout = window.setTimeout(this.setFocusRecovered.bind(this), 100);\n  }\n  setFocusRecovered() {\n    this.needsFocusRestored = false;\n    if (this.focusFallbackTimeout != null) {\n      clearTimeout(this.focusFallbackTimeout);\n      this.focusFallbackTimeout = null;\n    }\n  }\n  /**\n   * Specifies whether to take focus, as grid either already has focus, or lost it due\n   * to a destroyed cell\n   * @returns true if the grid should re-take focus, otherwise false\n   */\n  shouldTakeFocus() {\n    if (this.gos.get(\"suppressFocusAfterRefresh\")) {\n      this.setFocusRecovered();\n      return false;\n    }\n    if (this.needsFocusRestored) {\n      this.setFocusRecovered();\n      return true;\n    }\n    return this.doesRowOrCellHaveBrowserFocus();\n  }\n  onColumnEverythingChanged() {\n    if (!this.focusedCell) {\n      return;\n    }\n    const col = this.focusedCell.column;\n    const colFromColumnModel = this.colModel.getCol(col.getId());\n    if (col !== colFromColumnModel) {\n      this.clearFocusedCell();\n    }\n  }\n  // we check if the browser is focusing something, and if it is, and\n  // it's the cell we think is focused, then return the cell. so this\n  // methods returns the cell if a) we think it has focus and b) the\n  // browser thinks it has focus. this then returns nothing if we\n  // first focus a cell, then second click outside the grid, as then the\n  // grid cell will still be focused as far as the grid is concerned,\n  // however the browser focus will have moved somewhere else.\n  getFocusCellToUseAfterRefresh() {\n    const { gos, focusedCell } = this;\n    if (gos.get(\"suppressFocusAfterRefresh\") || gos.get(\"suppressCellFocus\") || !focusedCell) {\n      return null;\n    }\n    if (!this.doesRowOrCellHaveBrowserFocus()) {\n      return null;\n    }\n    return focusedCell;\n  }\n  getFocusHeaderToUseAfterRefresh() {\n    if (this.gos.get(\"suppressFocusAfterRefresh\") || !this.focusedHeader) {\n      return null;\n    }\n    if (!this.isDomDataPresentInHierarchy(_getActiveDomElement(this.beans), DOM_DATA_KEY_HEADER_CTRL)) {\n      return null;\n    }\n    return this.focusedHeader;\n  }\n  /**\n   * Check for both cells and rows, as a row might be destroyed and the dom data removed before the cell if the\n   * row is animating out.\n   */\n  doesRowOrCellHaveBrowserFocus() {\n    const activeElement = _getActiveDomElement(this.beans);\n    if (this.isDomDataPresentInHierarchy(activeElement, DOM_DATA_KEY_CELL_CTRL)) {\n      return true;\n    }\n    return this.isDomDataPresentInHierarchy(activeElement, DOM_DATA_KEY_ROW_CTRL);\n  }\n  isDomDataPresentInHierarchy(eBrowserCell, key) {\n    let ePointer = eBrowserCell;\n    while (ePointer) {\n      const data = _getDomData(this.gos, ePointer, key);\n      if (data) {\n        return true;\n      }\n      ePointer = ePointer.parentNode;\n    }\n    return false;\n  }\n  getFocusedCell() {\n    return this.focusedCell;\n  }\n  getFocusEventParams(focusedCellPosition) {\n    const { rowIndex, rowPinned, column } = focusedCellPosition;\n    const params = {\n      rowIndex,\n      rowPinned,\n      column,\n      isFullWidthCell: false\n    };\n    const rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex, rowPinned });\n    if (rowCtrl) {\n      params.isFullWidthCell = rowCtrl.isFullWidth();\n    }\n    return params;\n  }\n  clearFocusedCell() {\n    if (this.focusedCell == null) {\n      return;\n    }\n    const focusEventParams = this.getFocusEventParams(this.focusedCell);\n    this.focusedCell = null;\n    this.eventSvc.dispatchEvent({\n      type: \"cellFocusCleared\",\n      ...focusEventParams\n    });\n  }\n  setFocusedCell(params) {\n    this.setFocusRecovered();\n    const { column, rowIndex, rowPinned, forceBrowserFocus = false, preventScrollOnBrowserFocus = false } = params;\n    const gridColumn = this.colModel.getCol(column);\n    if (!gridColumn) {\n      this.focusedCell = null;\n      return;\n    }\n    this.focusedCell = {\n      rowIndex,\n      rowPinned: _makeNull(rowPinned),\n      column: gridColumn\n    };\n    this.eventSvc.dispatchEvent({\n      type: \"cellFocused\",\n      ...this.getFocusEventParams(this.focusedCell),\n      forceBrowserFocus,\n      preventScrollOnBrowserFocus\n    });\n  }\n  isCellFocused(cellPosition) {\n    if (this.focusedCell == null) {\n      return false;\n    }\n    return _areCellsEqual(cellPosition, this.focusedCell);\n  }\n  isHeaderWrapperFocused(headerCtrl) {\n    if (this.focusedHeader == null) {\n      return false;\n    }\n    const {\n      column,\n      rowCtrl: { rowIndex: headerRowIndex, pinned }\n    } = headerCtrl;\n    const { column: focusedColumn, headerRowIndex: focusedHeaderRowIndex } = this.focusedHeader;\n    return column === focusedColumn && headerRowIndex === focusedHeaderRowIndex && pinned == focusedColumn.getPinned();\n  }\n  focusHeaderPosition(params) {\n    this.setFocusRecovered();\n    if (_isHeaderFocusSuppressed(this.beans)) {\n      return false;\n    }\n    const { direction, fromTab, allowUserOverride, event, fromCell, rowWithoutSpanValue } = params;\n    let { headerPosition } = params;\n    if (fromCell && this.filterManager?.isAdvFilterHeaderActive()) {\n      return this.focusAdvancedFilter(headerPosition);\n    }\n    if (allowUserOverride) {\n      const currentPosition = this.focusedHeader;\n      const headerRowCount = getFocusHeaderRowCount(this.beans);\n      if (fromTab) {\n        const userFunc = this.gos.getCallback(\"tabToNextHeader\");\n        if (userFunc) {\n          headerPosition = this.getHeaderPositionFromUserFunc({\n            userFunc,\n            direction,\n            currentPosition,\n            headerPosition,\n            headerRowCount\n          });\n        }\n      } else {\n        const userFunc = this.gos.getCallback(\"navigateToNextHeader\");\n        if (userFunc && event) {\n          const params2 = {\n            key: event.key,\n            previousHeaderPosition: currentPosition,\n            nextHeaderPosition: headerPosition,\n            headerRowCount,\n            event\n          };\n          headerPosition = userFunc(params2);\n        }\n      }\n    }\n    if (!headerPosition) {\n      return false;\n    }\n    return this.focusProvidedHeaderPosition({\n      headerPosition,\n      direction,\n      event,\n      fromCell,\n      rowWithoutSpanValue\n    });\n  }\n  focusHeaderPositionFromUserFunc(params) {\n    if (_isHeaderFocusSuppressed(this.beans)) {\n      return false;\n    }\n    const { userFunc, headerPosition, direction, event } = params;\n    const currentPosition = this.focusedHeader;\n    const headerRowCount = getFocusHeaderRowCount(this.beans);\n    const newHeaderPosition = this.getHeaderPositionFromUserFunc({\n      userFunc,\n      direction,\n      currentPosition,\n      headerPosition,\n      headerRowCount\n    });\n    return !!newHeaderPosition && this.focusProvidedHeaderPosition({\n      headerPosition: newHeaderPosition,\n      direction,\n      event\n    });\n  }\n  getHeaderPositionFromUserFunc(params) {\n    const { userFunc, direction, currentPosition, headerPosition, headerRowCount } = params;\n    const userFuncParams = {\n      backwards: direction === \"Before\",\n      previousHeaderPosition: currentPosition,\n      nextHeaderPosition: headerPosition,\n      headerRowCount\n    };\n    const userResult = userFunc(userFuncParams);\n    if (userResult === true) {\n      return currentPosition;\n    }\n    if (userResult === false) {\n      return null;\n    }\n    return userResult;\n  }\n  focusProvidedHeaderPosition(params) {\n    const { headerPosition, direction, fromCell, rowWithoutSpanValue, event } = params;\n    const { column, headerRowIndex } = headerPosition;\n    const { filterManager, ctrlsSvc, headerNavigation } = this.beans;\n    if (headerRowIndex === -1) {\n      if (filterManager?.isAdvFilterHeaderActive()) {\n        return this.focusAdvancedFilter(headerPosition);\n      }\n      return this.focusGridView({ column, event });\n    }\n    headerNavigation?.scrollToColumn(column, direction);\n    const headerRowContainerCtrl = ctrlsSvc.getHeaderRowContainerCtrl(column.getPinned());\n    const focusSuccess = headerRowContainerCtrl?.focusHeader(headerPosition.headerRowIndex, column, event) || false;\n    if (headerNavigation && focusSuccess && (rowWithoutSpanValue != null || fromCell)) {\n      headerNavigation.currentHeaderRowWithoutSpan = rowWithoutSpanValue ?? -1;\n    }\n    return focusSuccess;\n  }\n  focusFirstHeader() {\n    if (this.overlays?.isExclusive() && this.focusOverlay()) {\n      return true;\n    }\n    let firstColumn = this.visibleCols.allCols[0];\n    if (!firstColumn) {\n      return false;\n    }\n    const { colGroupSvc } = this.beans;\n    if (colGroupSvc && firstColumn.getParent()) {\n      firstColumn = colGroupSvc.getColGroupAtLevel(firstColumn, 0);\n    }\n    const headerPosition = getHeaderIndexToFocus(firstColumn, 0);\n    return this.focusHeaderPosition({\n      headerPosition,\n      rowWithoutSpanValue: 0\n    });\n  }\n  focusLastHeader(event) {\n    if (this.overlays?.isExclusive() && this.focusOverlay(true)) {\n      return true;\n    }\n    const headerRowIndex = getFocusHeaderRowCount(this.beans) - 1;\n    const column = _last(this.visibleCols.allCols);\n    return this.focusHeaderPosition({\n      headerPosition: { headerRowIndex, column },\n      rowWithoutSpanValue: -1,\n      event\n    });\n  }\n  focusPreviousFromFirstCell(event) {\n    if (this.filterManager?.isAdvFilterHeaderActive()) {\n      return this.focusAdvancedFilter(null);\n    }\n    return this.focusLastHeader(event);\n  }\n  isAnyCellFocused() {\n    return !!this.focusedCell;\n  }\n  isRowFocused(rowIndex, rowPinnedType) {\n    if (this.focusedCell == null) {\n      return false;\n    }\n    return this.focusedCell.rowIndex === rowIndex && this.focusedCell.rowPinned === _makeNull(rowPinnedType);\n  }\n  focusOverlay(backwards) {\n    const overlayGui = this.overlays?.isVisible() && this.overlays.eWrapper?.getGui();\n    return !!overlayGui && _focusInto(overlayGui, backwards);\n  }\n  focusGridView(params) {\n    const { backwards = false, canFocusOverlay = true, event } = params;\n    if (this.overlays?.isExclusive()) {\n      return canFocusOverlay && this.focusOverlay(backwards);\n    }\n    if (_isCellFocusSuppressed(this.beans)) {\n      if (backwards) {\n        if (!_isHeaderFocusSuppressed(this.beans)) {\n          return this.focusLastHeader();\n        }\n      }\n      if (canFocusOverlay && this.focusOverlay(backwards)) {\n        return true;\n      }\n      if (backwards) {\n        return false;\n      }\n      return _focusNextGridCoreContainer(this.beans, backwards);\n    }\n    const nextRow = backwards ? _getLastRow(this.beans) : _getFirstRow(this.beans);\n    if (nextRow) {\n      const column = params.column ?? this.focusedHeader?.column;\n      const { rowIndex, rowPinned } = nextRow;\n      const rowNode = _getRowNode(this.beans, nextRow);\n      if (!column || !rowNode || rowIndex == null) {\n        return false;\n      }\n      if (column.isSuppressNavigable(rowNode)) {\n        const isRtl = this.gos.get(\"enableRtl\");\n        let key;\n        if (!event || event.key === KeyCode.TAB) {\n          key = isRtl ? KeyCode.LEFT : KeyCode.RIGHT;\n        } else {\n          key = event.key;\n        }\n        this.beans.navigation?.navigateToNextCell(\n          null,\n          key,\n          { rowIndex, column, rowPinned: rowPinned || null },\n          true\n        );\n        return true;\n      }\n      this.navigation?.ensureCellVisible({ rowIndex, column, rowPinned });\n      if (backwards) {\n        const rowCtrl = this.rowRenderer.getRowByPosition(nextRow);\n        if (rowCtrl?.isFullWidth() && this.navigation?.tryToFocusFullWidthRow(nextRow, backwards)) {\n          return true;\n        }\n      }\n      this.setFocusedCell({\n        rowIndex,\n        column,\n        rowPinned: _makeNull(rowPinned),\n        forceBrowserFocus: true\n      });\n      this.beans.rangeSvc?.setRangeToCell({ rowIndex, rowPinned, column });\n      return true;\n    }\n    if (canFocusOverlay && this.focusOverlay(backwards)) {\n      return true;\n    }\n    if (backwards && this.focusLastHeader()) {\n      return true;\n    }\n    return false;\n  }\n  focusAdvancedFilter(position) {\n    this.advFilterFocusColumn = position?.column;\n    return this.beans.advancedFilter?.getCtrl().focusHeaderComp() ?? false;\n  }\n  focusNextFromAdvancedFilter(backwards, forceFirstColumn) {\n    const column = (forceFirstColumn ? void 0 : this.advFilterFocusColumn) ?? this.visibleCols.allCols?.[0];\n    if (backwards) {\n      return this.focusHeaderPosition({\n        headerPosition: {\n          column,\n          headerRowIndex: getFocusHeaderRowCount(this.beans) - 1\n        }\n      });\n    } else {\n      return this.focusGridView({ column });\n    }\n  }\n  clearAdvancedFilterColumn() {\n    this.advFilterFocusColumn = void 0;\n  }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/scrollVisibleService.ts\nvar ScrollVisibleService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"scrollVisibleSvc\";\n  }\n  wireBeans(beans) {\n    this.ctrlsSvc = beans.ctrlsSvc;\n    this.colAnimation = beans.colAnimation;\n  }\n  postConstruct() {\n    this.getScrollbarWidth();\n    this.addManagedEventListeners({\n      displayedColumnsChanged: this.updateScrollVisible.bind(this),\n      displayedColumnsWidthChanged: this.updateScrollVisible.bind(this)\n    });\n  }\n  updateScrollVisible() {\n    const { colAnimation } = this;\n    if (colAnimation?.isActive()) {\n      colAnimation.executeLaterVMTurn(() => {\n        colAnimation.executeLaterVMTurn(() => this.updateScrollVisibleImpl());\n      });\n    } else {\n      this.updateScrollVisibleImpl();\n    }\n  }\n  updateScrollVisibleImpl() {\n    const centerRowCtrl = this.ctrlsSvc.get(\"center\");\n    if (!centerRowCtrl || this.colAnimation?.isActive()) {\n      return;\n    }\n    const params = {\n      horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),\n      verticalScrollShowing: this.verticalScrollShowing\n    };\n    this.setScrollsVisible(params);\n    this.updateScrollGap();\n  }\n  updateScrollGap() {\n    const centerRowCtrl = this.ctrlsSvc.get(\"center\");\n    const horizontalGap = centerRowCtrl.hasHorizontalScrollGap();\n    const verticalGap = centerRowCtrl.hasVerticalScrollGap();\n    const atLeastOneDifferent = this.horizontalScrollGap !== horizontalGap || this.verticalScrollGap !== verticalGap;\n    if (atLeastOneDifferent) {\n      this.horizontalScrollGap = horizontalGap;\n      this.verticalScrollGap = verticalGap;\n      this.eventSvc.dispatchEvent({\n        type: \"scrollGapChanged\"\n      });\n    }\n  }\n  setScrollsVisible(params) {\n    const atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing || this.verticalScrollShowing !== params.verticalScrollShowing;\n    if (atLeastOneDifferent) {\n      this.horizontalScrollShowing = params.horizontalScrollShowing;\n      this.verticalScrollShowing = params.verticalScrollShowing;\n      this.eventSvc.dispatchEvent({\n        type: \"scrollVisibilityChanged\"\n      });\n    }\n  }\n  // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n  // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n  // allow the user to provide the scroll width before we work it out.\n  getScrollbarWidth() {\n    if (this.scrollbarWidth == null) {\n      const gridOptionsScrollbarWidth = this.gos.get(\"scrollbarWidth\");\n      const useGridOptions = typeof gridOptionsScrollbarWidth === \"number\" && gridOptionsScrollbarWidth >= 0;\n      const scrollbarWidth = useGridOptions ? gridOptionsScrollbarWidth : _getScrollbarWidth();\n      if (scrollbarWidth != null) {\n        this.scrollbarWidth = scrollbarWidth;\n        this.eventSvc.dispatchEvent({\n          type: \"scrollbarWidthChanged\"\n        });\n      }\n    }\n    return this.scrollbarWidth;\n  }\n};\n\n// packages/ag-grid-community/src/gridDestroyService.ts\nvar GridDestroyService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"gridDestroySvc\";\n    this.destroyCalled = false;\n  }\n  destroy() {\n    if (this.destroyCalled) {\n      return;\n    }\n    const { stateSvc, ctrlsSvc, context } = this.beans;\n    this.eventSvc.dispatchEvent({\n      type: \"gridPreDestroyed\",\n      state: stateSvc?.getState() ?? {}\n    });\n    this.destroyCalled = true;\n    ctrlsSvc.get(\"gridCtrl\")?.destroyGridUi();\n    context.destroy();\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/events.ts\nvar ALWAYS_SYNC_GLOBAL_EVENTS = /* @__PURE__ */ new Set([\"gridPreDestroyed\", \"fillStart\", \"pasteStart\"]);\n\n// packages/ag-grid-community/src/gridOptionsDefault.ts\nvar GRID_OPTION_DEFAULTS = {\n  suppressContextMenu: false,\n  preventDefaultOnContextMenu: false,\n  allowContextMenuWithControlKey: false,\n  suppressMenuHide: true,\n  enableBrowserTooltips: false,\n  tooltipTrigger: \"hover\",\n  tooltipShowDelay: 2e3,\n  tooltipHideDelay: 1e4,\n  tooltipMouseTrack: false,\n  tooltipShowMode: \"standard\",\n  tooltipInteraction: false,\n  copyHeadersToClipboard: false,\n  copyGroupHeadersToClipboard: false,\n  clipboardDelimiter: \"\t\",\n  suppressCopyRowsToClipboard: false,\n  suppressCopySingleCellRanges: false,\n  suppressLastEmptyLineOnPaste: false,\n  suppressClipboardPaste: false,\n  suppressClipboardApi: false,\n  suppressCutToClipboard: false,\n  maintainColumnOrder: false,\n  enableStrictPivotColumnOrder: false,\n  suppressFieldDotNotation: false,\n  allowDragFromColumnsToolPanel: false,\n  suppressMovableColumns: false,\n  suppressColumnMoveAnimation: false,\n  suppressMoveWhenColumnDragging: false,\n  suppressDragLeaveHidesColumns: false,\n  suppressRowGroupHidesColumns: false,\n  suppressAutoSize: false,\n  autoSizePadding: 20,\n  skipHeaderOnAutoSize: false,\n  singleClickEdit: false,\n  suppressClickEdit: false,\n  readOnlyEdit: false,\n  stopEditingWhenCellsLoseFocus: false,\n  enterNavigatesVertically: false,\n  enterNavigatesVerticallyAfterEdit: false,\n  enableCellEditingOnBackspace: false,\n  undoRedoCellEditing: false,\n  undoRedoCellEditingLimit: 10,\n  suppressCsvExport: false,\n  suppressExcelExport: false,\n  cacheQuickFilter: false,\n  includeHiddenColumnsInQuickFilter: false,\n  excludeChildrenWhenTreeDataFiltering: false,\n  enableAdvancedFilter: false,\n  includeHiddenColumnsInAdvancedFilter: false,\n  enableCharts: false,\n  masterDetail: false,\n  keepDetailRows: false,\n  keepDetailRowsCount: 10,\n  detailRowAutoHeight: false,\n  tabIndex: 0,\n  rowBuffer: 10,\n  valueCache: false,\n  valueCacheNeverExpires: false,\n  enableCellExpressions: false,\n  suppressTouch: false,\n  suppressFocusAfterRefresh: false,\n  suppressBrowserResizeObserver: false,\n  suppressPropertyNamesCheck: false,\n  suppressChangeDetection: false,\n  debug: false,\n  suppressLoadingOverlay: false,\n  suppressNoRowsOverlay: false,\n  pagination: false,\n  paginationPageSize: 100,\n  paginationPageSizeSelector: true,\n  paginationAutoPageSize: false,\n  paginateChildRows: false,\n  suppressPaginationPanel: false,\n  pivotMode: false,\n  pivotPanelShow: \"never\",\n  pivotDefaultExpanded: 0,\n  pivotSuppressAutoColumn: false,\n  suppressExpandablePivotGroups: false,\n  functionsReadOnly: false,\n  suppressAggFuncInHeader: false,\n  alwaysAggregateAtRootLevel: false,\n  aggregateOnlyChangedColumns: false,\n  suppressAggFilteredOnly: false,\n  removePivotHeaderRowWhenSingleValueColumn: false,\n  animateRows: true,\n  cellFlashDuration: 500,\n  cellFadeDuration: 1e3,\n  allowShowChangeAfterFilter: false,\n  domLayout: \"normal\",\n  ensureDomOrder: false,\n  enableRtl: false,\n  suppressColumnVirtualisation: false,\n  suppressMaxRenderedRowRestriction: false,\n  suppressRowVirtualisation: false,\n  rowDragManaged: false,\n  suppressRowDrag: false,\n  suppressMoveWhenRowDragging: false,\n  rowDragEntireRow: false,\n  rowDragMultiRow: false,\n  embedFullWidthRows: false,\n  groupDisplayType: \"singleColumn\",\n  groupDefaultExpanded: 0,\n  groupMaintainOrder: false,\n  groupSelectsChildren: false,\n  groupSuppressBlankHeader: false,\n  groupSelectsFiltered: false,\n  showOpenedGroup: false,\n  groupRemoveSingleChildren: false,\n  groupRemoveLowestSingleChildren: false,\n  groupHideOpenParents: false,\n  groupAllowUnbalanced: false,\n  rowGroupPanelShow: \"never\",\n  suppressMakeColumnVisibleAfterUnGroup: false,\n  treeData: false,\n  rowGroupPanelSuppressSort: false,\n  suppressGroupRowsSticky: false,\n  rowModelType: \"clientSide\",\n  asyncTransactionWaitMillis: 50,\n  suppressModelUpdateAfterUpdateTransaction: false,\n  cacheOverflowSize: 1,\n  infiniteInitialRowCount: 1,\n  serverSideInitialRowCount: 1,\n  cacheBlockSize: 100,\n  maxBlocksInCache: -1,\n  maxConcurrentDatasourceRequests: 2,\n  blockLoadDebounceMillis: 0,\n  purgeClosedRowNodes: false,\n  serverSideSortAllLevels: false,\n  serverSideOnlyRefreshFilteredGroups: false,\n  serverSidePivotResultFieldSeparator: \"_\",\n  viewportRowModelPageSize: 5,\n  viewportRowModelBufferSize: 5,\n  alwaysShowHorizontalScroll: false,\n  alwaysShowVerticalScroll: false,\n  debounceVerticalScrollbar: false,\n  suppressHorizontalScroll: false,\n  suppressScrollOnNewData: false,\n  suppressScrollWhenPopupsAreOpen: false,\n  suppressAnimationFrame: false,\n  suppressMiddleClickScrolls: false,\n  suppressPreventDefaultOnMouseWheel: false,\n  rowMultiSelectWithClick: false,\n  suppressRowDeselection: false,\n  suppressRowClickSelection: false,\n  suppressCellFocus: false,\n  suppressHeaderFocus: false,\n  suppressMultiRangeSelection: false,\n  enableCellTextSelection: false,\n  enableRangeSelection: false,\n  enableRangeHandle: false,\n  enableFillHandle: false,\n  fillHandleDirection: \"xy\",\n  suppressClearOnFillReduction: false,\n  accentedSort: false,\n  unSortIcon: false,\n  suppressMultiSort: false,\n  alwaysMultiSort: false,\n  suppressMaintainUnsortedOrder: false,\n  suppressRowHoverHighlight: false,\n  suppressRowTransform: false,\n  columnHoverHighlight: false,\n  deltaSort: false,\n  enableGroupEdit: false,\n  groupLockGroupColumns: 0,\n  serverSideEnableClientSideSort: false,\n  suppressServerSideFullWidthLoadingRow: false,\n  pivotMaxGeneratedColumns: -1,\n  columnMenu: \"new\",\n  reactiveCustomComponents: true,\n  suppressSetFilterByDefault: false,\n  rowNumbers: false\n};\n\n// packages/ag-grid-community/src/sort/sortIndicatorComp.ts\nvar makeIconParams = (dataRefSuffix, classSuffix) => ({\n  tag: \"span\",\n  ref: `eSort${dataRefSuffix}`,\n  cls: `ag-sort-indicator-icon ag-sort-${classSuffix} ag-hidden`,\n  attrs: { \"aria-hidden\": \"true\" }\n});\nvar SortIndicatorElement = {\n  tag: \"span\",\n  cls: \"ag-sort-indicator-container\",\n  children: [\n    makeIconParams(\"Order\", \"order\"),\n    makeIconParams(\"Asc\", \"ascending-icon\"),\n    makeIconParams(\"Desc\", \"descending-icon\"),\n    makeIconParams(\"Mixed\", \"mixed-icon\"),\n    makeIconParams(\"None\", \"none-icon\")\n  ]\n};\nvar SortIndicatorComp = class extends Component {\n  constructor(skipTemplate) {\n    super();\n    // Elements might by undefined when the user provides a custom template\n    this.eSortOrder = RefPlaceholder;\n    this.eSortAsc = RefPlaceholder;\n    this.eSortDesc = RefPlaceholder;\n    this.eSortMixed = RefPlaceholder;\n    this.eSortNone = RefPlaceholder;\n    if (!skipTemplate) {\n      this.setTemplate(SortIndicatorElement);\n    }\n  }\n  attachCustomElements(eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone) {\n    this.eSortOrder = eSortOrder;\n    this.eSortAsc = eSortAsc;\n    this.eSortDesc = eSortDesc;\n    this.eSortMixed = eSortMixed;\n    this.eSortNone = eSortNone;\n  }\n  setupSort(column, suppressOrder = false) {\n    this.column = column;\n    this.suppressOrder = suppressOrder;\n    this.setupMultiSortIndicator();\n    if (!column.isSortable() && !column.getColDef().showRowGroup) {\n      return;\n    }\n    this.addInIcon(\"sortAscending\", this.eSortAsc, column);\n    this.addInIcon(\"sortDescending\", this.eSortDesc, column);\n    this.addInIcon(\"sortUnSort\", this.eSortNone, column);\n    const updateIcons = this.updateIcons.bind(this);\n    const sortUpdated = this.onSortChanged.bind(this);\n    this.addManagedPropertyListener(\"unSortIcon\", updateIcons);\n    this.addManagedEventListeners({\n      newColumnsLoaded: updateIcons,\n      // Watch global events, as row group columns can effect their display column.\n      sortChanged: sortUpdated,\n      // when grouping changes so can sort indexes and icons\n      columnRowGroupChanged: sortUpdated\n    });\n    this.onSortChanged();\n  }\n  addInIcon(iconName, eParent, column) {\n    if (eParent == null) {\n      return;\n    }\n    const eIcon = _createIconNoSpan(iconName, this.beans, column);\n    if (eIcon) {\n      eParent.appendChild(eIcon);\n    }\n  }\n  onSortChanged() {\n    this.updateIcons();\n    if (!this.suppressOrder) {\n      this.updateSortOrder();\n    }\n  }\n  updateIcons() {\n    const { eSortAsc, eSortDesc, eSortNone, column, gos, beans } = this;\n    const sortDirection = beans.sortSvc.getDisplaySortForColumn(column);\n    if (eSortAsc) {\n      const isAscending = sortDirection === \"asc\";\n      _setDisplayed(eSortAsc, isAscending, { skipAriaHidden: true });\n    }\n    if (eSortDesc) {\n      const isDescending = sortDirection === \"desc\";\n      _setDisplayed(eSortDesc, isDescending, { skipAriaHidden: true });\n    }\n    if (eSortNone) {\n      const alwaysHideNoSort = !column.getColDef().unSortIcon && !gos.get(\"unSortIcon\");\n      const isNone = sortDirection === null || sortDirection === void 0;\n      _setDisplayed(eSortNone, !alwaysHideNoSort && isNone, { skipAriaHidden: true });\n    }\n  }\n  setupMultiSortIndicator() {\n    const { eSortMixed, column, gos } = this;\n    this.addInIcon(\"sortUnSort\", eSortMixed, column);\n    const isColumnShowingRowGroup = column.getColDef().showRowGroup;\n    const areGroupsCoupled = _isColumnsSortingCoupledToGroup(gos);\n    if (areGroupsCoupled && isColumnShowingRowGroup) {\n      this.addManagedEventListeners({\n        // Watch global events, as row group columns can effect their display column.\n        sortChanged: this.updateMultiSortIndicator.bind(this),\n        // when grouping changes so can sort indexes and icons\n        columnRowGroupChanged: this.updateMultiSortIndicator.bind(this)\n      });\n      this.updateMultiSortIndicator();\n    }\n  }\n  updateMultiSortIndicator() {\n    const { eSortMixed, beans, column } = this;\n    if (eSortMixed) {\n      const isMixedSort = beans.sortSvc.getDisplaySortForColumn(column) === \"mixed\";\n      _setDisplayed(eSortMixed, isMixedSort, { skipAriaHidden: true });\n    }\n  }\n  // we listen here for global sort events, NOT column sort events, as we want to do this\n  // when sorting has been set on all column (if we listened just for our col (where we\n  // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n  updateSortOrder() {\n    const {\n      eSortOrder,\n      column,\n      beans: { sortSvc }\n    } = this;\n    if (!eSortOrder) {\n      return;\n    }\n    const allColumnsWithSorting = sortSvc.getColumnsWithSortingOrdered();\n    const indexThisCol = sortSvc.getDisplaySortIndexForColumn(column) ?? -1;\n    const moreThanOneColSorting = allColumnsWithSorting.some(\n      (col) => sortSvc.getDisplaySortIndexForColumn(col) ?? -1 >= 1\n    );\n    const showIndex = indexThisCol >= 0 && moreThanOneColSorting;\n    _setDisplayed(eSortOrder, showIndex, { skipAriaHidden: true });\n    if (indexThisCol >= 0) {\n      eSortOrder.textContent = (indexThisCol + 1).toString();\n    } else {\n      _clearElement(eSortOrder);\n    }\n  }\n};\nvar SortIndicatorSelector = {\n  selector: \"AG-SORT-INDICATOR\",\n  component: SortIndicatorComp\n};\n\n// packages/ag-grid-community/src/sort/sortService.ts\nvar DEFAULT_SORTING_ORDER = [\"asc\", \"desc\", null];\nvar SortService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"sortSvc\";\n  }\n  progressSort(column, multiSort, source) {\n    const nextDirection = this.getNextSortDirection(column);\n    this.setSortForColumn(column, nextDirection, multiSort, source);\n  }\n  progressSortFromEvent(column, event) {\n    const sortUsingCtrl = this.gos.get(\"multiSortKey\") === \"ctrl\";\n    const multiSort = sortUsingCtrl ? event.ctrlKey || event.metaKey : event.shiftKey;\n    this.progressSort(column, multiSort, \"uiColumnSorted\");\n  }\n  setSortForColumn(column, sort, multiSort, source) {\n    if (sort !== \"asc\" && sort !== \"desc\") {\n      sort = null;\n    }\n    const { gos, showRowGroupCols } = this.beans;\n    const isColumnsSortingCoupledToGroup = _isColumnsSortingCoupledToGroup(gos);\n    let columnsToUpdate = [column];\n    if (isColumnsSortingCoupledToGroup) {\n      if (column.getColDef().showRowGroup) {\n        const rowGroupColumns = showRowGroupCols?.getSourceColumnsForGroupColumn?.(column);\n        const sortableRowGroupColumns = rowGroupColumns?.filter((col) => col.isSortable());\n        if (sortableRowGroupColumns) {\n          columnsToUpdate = [column, ...sortableRowGroupColumns];\n        }\n      }\n    }\n    columnsToUpdate.forEach((col) => this.setColSort(col, sort, source));\n    const doingMultiSort = (multiSort || gos.get(\"alwaysMultiSort\")) && !gos.get(\"suppressMultiSort\");\n    const updatedColumns = [];\n    if (!doingMultiSort) {\n      const clearedColumns = this.clearSortBarTheseColumns(columnsToUpdate, source);\n      updatedColumns.push(...clearedColumns);\n    }\n    this.updateSortIndex(column);\n    updatedColumns.push(...columnsToUpdate);\n    this.dispatchSortChangedEvents(source, updatedColumns);\n  }\n  updateSortIndex(lastColToChange) {\n    const { gos, colModel, showRowGroupCols } = this.beans;\n    const isCoupled = _isColumnsSortingCoupledToGroup(gos);\n    const groupParent = showRowGroupCols?.getShowRowGroupCol(lastColToChange.getId());\n    const lastSortIndexCol = isCoupled ? groupParent || lastColToChange : lastColToChange;\n    const allSortedCols = this.getColumnsWithSortingOrdered();\n    colModel.forAllCols((col) => this.setColSortIndex(col, null));\n    const allSortedColsWithoutChangesOrGroups = allSortedCols.filter((col) => {\n      if (isCoupled && col.getColDef().showRowGroup) {\n        return false;\n      }\n      return col !== lastSortIndexCol;\n    });\n    const sortedColsWithIndices = lastSortIndexCol.getSort() ? [...allSortedColsWithoutChangesOrGroups, lastSortIndexCol] : allSortedColsWithoutChangesOrGroups;\n    sortedColsWithIndices.forEach((col, idx) => this.setColSortIndex(col, idx));\n  }\n  // gets called by API, so if data changes, use can call this, which will end up\n  // working out the sort order again of the rows.\n  onSortChanged(source, columns) {\n    this.dispatchSortChangedEvents(source, columns);\n  }\n  isSortActive() {\n    let isSorting = false;\n    this.beans.colModel.forAllCols((col) => {\n      if (col.getSort()) {\n        isSorting = true;\n      }\n    });\n    return isSorting;\n  }\n  dispatchSortChangedEvents(source, columns) {\n    const event = {\n      type: \"sortChanged\",\n      source\n    };\n    if (columns) {\n      event.columns = columns;\n    }\n    this.eventSvc.dispatchEvent(event);\n  }\n  clearSortBarTheseColumns(columnsToSkip, source) {\n    const clearedColumns = [];\n    this.beans.colModel.forAllCols((columnToClear) => {\n      if (!columnsToSkip.includes(columnToClear)) {\n        if (columnToClear.getSort()) {\n          clearedColumns.push(columnToClear);\n        }\n        this.setColSort(columnToClear, void 0, source);\n      }\n    });\n    return clearedColumns;\n  }\n  getNextSortDirection(column) {\n    const sortingOrder = column.getColDef().sortingOrder ?? this.gos.get(\"sortingOrder\") ?? DEFAULT_SORTING_ORDER;\n    const currentIndex = sortingOrder.indexOf(column.getSort());\n    const notInArray = currentIndex < 0;\n    const lastItemInArray = currentIndex == sortingOrder.length - 1;\n    return notInArray || lastItemInArray ? sortingOrder[0] : sortingOrder[currentIndex + 1];\n  }\n  /**\n   * @returns a map of sort indexes for every sorted column, if groups sort primaries then they will have equivalent indices\n   */\n  getIndexedSortMap() {\n    const { gos, colModel, showRowGroupCols, rowGroupColsSvc } = this.beans;\n    let allSortedCols = [];\n    colModel.forAllCols((col) => {\n      if (col.getSort()) {\n        allSortedCols.push(col);\n      }\n    });\n    if (colModel.isPivotMode()) {\n      const isSortingLinked = _isColumnsSortingCoupledToGroup(gos);\n      allSortedCols = allSortedCols.filter((col) => {\n        const isAggregated = !!col.getAggFunc();\n        const isSecondary = !col.isPrimary();\n        const isGroup = isSortingLinked ? showRowGroupCols?.getShowRowGroupCol(col.getId()) : col.getColDef().showRowGroup;\n        return isAggregated || isSecondary || isGroup;\n      });\n    }\n    const sortedRowGroupCols = rowGroupColsSvc?.columns.filter((col) => !!col.getSort()) ?? [];\n    const allColsIndexes = {};\n    allSortedCols.forEach((col, index) => allColsIndexes[col.getId()] = index);\n    allSortedCols.sort((a, b) => {\n      const iA = a.getSortIndex();\n      const iB = b.getSortIndex();\n      if (iA != null && iB != null) {\n        return iA - iB;\n      } else if (iA == null && iB == null) {\n        const posA = allColsIndexes[a.getId()];\n        const posB = allColsIndexes[b.getId()];\n        return posA > posB ? 1 : -1;\n      } else if (iB == null) {\n        return -1;\n      } else {\n        return 1;\n      }\n    });\n    const isSortLinked = _isColumnsSortingCoupledToGroup(gos) && !!sortedRowGroupCols.length;\n    if (isSortLinked) {\n      allSortedCols = [\n        ...new Set(\n          // if linked sorting, replace all columns with the display group column for index purposes, and ensure uniqueness\n          allSortedCols.map((col) => showRowGroupCols?.getShowRowGroupCol(col.getId()) ?? col)\n        )\n      ];\n    }\n    const indexMap = /* @__PURE__ */ new Map();\n    allSortedCols.forEach((col, idx) => indexMap.set(col, idx));\n    if (isSortLinked) {\n      sortedRowGroupCols.forEach((col) => {\n        const groupDisplayCol = showRowGroupCols.getShowRowGroupCol(col.getId());\n        indexMap.set(col, indexMap.get(groupDisplayCol));\n      });\n    }\n    return indexMap;\n  }\n  getColumnsWithSortingOrdered() {\n    return [...this.getIndexedSortMap().entries()].sort(([, idx1], [, idx2]) => idx1 - idx2).map(([col]) => col);\n  }\n  // used by server side row models, to sent sort to server\n  getSortModel() {\n    return this.getColumnsWithSortingOrdered().filter((column) => column.getSort()).map((column) => ({\n      sort: column.getSort(),\n      colId: column.getId()\n    }));\n  }\n  getSortOptions() {\n    return this.getColumnsWithSortingOrdered().filter((column) => column.getSort()).map((column) => ({\n      sort: column.getSort(),\n      column\n    }));\n  }\n  canColumnDisplayMixedSort(column) {\n    const isColumnSortCouplingActive = _isColumnsSortingCoupledToGroup(this.gos);\n    const isGroupDisplayColumn = !!column.getColDef().showRowGroup;\n    return isColumnSortCouplingActive && isGroupDisplayColumn;\n  }\n  getDisplaySortForColumn(column) {\n    const linkedColumns = this.beans.showRowGroupCols?.getSourceColumnsForGroupColumn(column);\n    if (!this.canColumnDisplayMixedSort(column) || !linkedColumns?.length) {\n      return column.getSort();\n    }\n    const columnHasUniqueData = column.getColDef().field != null || !!column.getColDef().valueGetter;\n    const sortableColumns = columnHasUniqueData ? [column, ...linkedColumns] : linkedColumns;\n    const firstSort = sortableColumns[0].getSort();\n    const allMatch = sortableColumns.every((col) => col.getSort() == firstSort);\n    if (!allMatch) {\n      return \"mixed\";\n    }\n    return firstSort;\n  }\n  getDisplaySortIndexForColumn(column) {\n    return this.getIndexedSortMap().get(column);\n  }\n  setupHeader(comp, column, clickElement) {\n    let lastMovingChanged = 0;\n    comp.addManagedListeners(column, {\n      movingChanged: () => {\n        lastMovingChanged = Date.now();\n      }\n    });\n    if (clickElement) {\n      comp.addManagedElementListeners(clickElement, {\n        click: (event) => {\n          const moving = column.isMoving();\n          const nowTime = Date.now();\n          const movedRecently = nowTime - lastMovingChanged < 50;\n          const columnMoving = moving || movedRecently;\n          if (!columnMoving) {\n            this.progressSortFromEvent(column, event);\n          }\n        }\n      });\n    }\n    const onSortingChanged = () => {\n      const sort = column.getSort();\n      comp.toggleCss(\"ag-header-cell-sorted-asc\", sort === \"asc\");\n      comp.toggleCss(\"ag-header-cell-sorted-desc\", sort === \"desc\");\n      comp.toggleCss(\"ag-header-cell-sorted-none\", !sort);\n      if (column.getColDef().showRowGroup) {\n        const sourceColumns = this.beans.showRowGroupCols?.getSourceColumnsForGroupColumn(column);\n        const sortDirectionsMatch = sourceColumns?.every(\n          (sourceCol) => column.getSort() == sourceCol.getSort()\n        );\n        const isMultiSorting = !sortDirectionsMatch;\n        comp.toggleCss(\"ag-header-cell-sorted-mixed\", isMultiSorting);\n      }\n    };\n    comp.addManagedEventListeners({\n      sortChanged: onSortingChanged,\n      columnRowGroupChanged: onSortingChanged\n    });\n  }\n  initCol(column) {\n    const { sort, initialSort, sortIndex, initialSortIndex } = column.colDef;\n    if (sort !== void 0) {\n      if (sort === \"asc\" || sort === \"desc\") {\n        column.sort = sort;\n      }\n    } else {\n      if (initialSort === \"asc\" || initialSort === \"desc\") {\n        column.sort = initialSort;\n      }\n    }\n    if (sortIndex !== void 0) {\n      if (sortIndex !== null) {\n        column.sortIndex = sortIndex;\n      }\n    } else {\n      if (initialSortIndex !== null) {\n        column.sortIndex = initialSortIndex;\n      }\n    }\n  }\n  updateColSort(column, sort, source) {\n    if (sort !== void 0) {\n      if (sort === \"desc\" || sort === \"asc\") {\n        this.setColSort(column, sort, source);\n      } else {\n        this.setColSort(column, void 0, source);\n      }\n    }\n  }\n  setColSort(column, sort, source) {\n    if (column.sort !== sort) {\n      column.sort = sort;\n      column.dispatchColEvent(\"sortChanged\", source);\n    }\n    column.dispatchStateUpdatedEvent(\"sort\");\n  }\n  setColSortIndex(column, sortOrder) {\n    column.sortIndex = sortOrder;\n    column.dispatchStateUpdatedEvent(\"sortIndex\");\n  }\n  createSortIndicator(skipTemplate) {\n    return new SortIndicatorComp(skipTemplate);\n  }\n  getSortIndicatorSelector() {\n    return SortIndicatorSelector;\n  }\n};\n\n// packages/ag-grid-community/src/validation/rules/userCompValidations.ts\nvar USER_COMP_MODULES = {\n  agSetColumnFilter: \"SetFilter\",\n  agSetColumnFloatingFilter: \"SetFilter\",\n  agMultiColumnFilter: \"MultiFilter\",\n  agMultiColumnFloatingFilter: \"MultiFilter\",\n  agGroupColumnFilter: \"GroupFilter\",\n  agGroupColumnFloatingFilter: \"GroupFilter\",\n  agGroupCellRenderer: \"GroupCellRenderer\",\n  agGroupRowRenderer: \"GroupCellRenderer\",\n  agRichSelect: \"RichSelect\",\n  agRichSelectCellEditor: \"RichSelect\",\n  agDetailCellRenderer: \"SharedMasterDetail\",\n  agSparklineCellRenderer: \"Sparklines\",\n  agDragAndDropImage: \"SharedDragAndDrop\",\n  agColumnHeader: \"ColumnHeaderComp\",\n  agColumnGroupHeader: \"ColumnGroupHeaderComp\",\n  agSortIndicator: \"Sort\",\n  agAnimateShowChangeCellRenderer: \"HighlightChanges\",\n  agAnimateSlideCellRenderer: \"HighlightChanges\",\n  agLoadingCellRenderer: \"LoadingCellRenderer\",\n  agSkeletonCellRenderer: \"SkeletonCellRenderer\",\n  agCheckboxCellRenderer: \"CheckboxCellRenderer\",\n  agLoadingOverlay: \"Overlay\",\n  agNoRowsOverlay: \"Overlay\",\n  agTooltipComponent: \"Tooltip\",\n  agReadOnlyFloatingFilter: \"CustomFilter\",\n  agTextColumnFilter: \"TextFilter\",\n  agNumberColumnFilter: \"NumberFilter\",\n  agDateColumnFilter: \"DateFilter\",\n  agDateInput: \"DateFilter\",\n  agTextColumnFloatingFilter: \"TextFilter\",\n  agNumberColumnFloatingFilter: \"NumberFilter\",\n  agDateColumnFloatingFilter: \"DateFilter\",\n  agCellEditor: \"TextEditor\",\n  agSelectCellEditor: \"SelectEditor\",\n  agTextCellEditor: \"TextEditor\",\n  agNumberCellEditor: \"NumberEditor\",\n  agDateCellEditor: \"DateEditor\",\n  agDateStringCellEditor: \"DateEditor\",\n  agCheckboxCellEditor: \"CheckboxEditor\",\n  agLargeTextCellEditor: \"LargeTextEditor\",\n  agMenuItem: \"MenuItem\",\n  agColumnsToolPanel: \"ColumnsToolPanel\",\n  agFiltersToolPanel: \"FiltersToolPanel\",\n  agAggregationComponent: \"StatusBar\",\n  agSelectedRowCountComponent: \"StatusBar\",\n  agTotalRowCountComponent: \"StatusBar\",\n  agFilteredRowCountComponent: \"StatusBar\",\n  agTotalAndFilteredRowCountComponent: \"StatusBar\",\n  agFindCellRenderer: \"Find\"\n};\n\n// packages/ag-grid-community/src/validation/rules/colDefValidations.ts\nvar COLUMN_DEFINITION_DEPRECATIONS = () => ({\n  checkboxSelection: { version: \"32.2\", message: \"Use `rowSelection.checkboxes` in `GridOptions` instead.\" },\n  headerCheckboxSelection: {\n    version: \"32.2\",\n    message: \"Use `rowSelection.headerCheckbox = true` in `GridOptions` instead.\"\n  },\n  headerCheckboxSelectionFilteredOnly: {\n    version: \"32.2\",\n    message: 'Use `rowSelection.selectAll = \"filtered\"` in `GridOptions` instead.'\n  },\n  headerCheckboxSelectionCurrentPageOnly: {\n    version: \"32.2\",\n    message: 'Use `rowSelection.selectAll = \"currentPage\"` in `GridOptions` instead.'\n  },\n  showDisabledCheckboxes: {\n    version: \"32.2\",\n    message: \"Use `rowSelection.hideDisabledCheckboxes = true` in `GridOptions` instead.\"\n  }\n});\nvar COLUMN_DEFINITION_MOD_VALIDATIONS = {\n  aggFunc: \"SharedAggregation\",\n  autoHeight: \"RowAutoHeight\",\n  cellClass: \"CellStyle\",\n  cellClassRules: \"CellStyle\",\n  cellEditor: ({ cellEditor, editable }) => {\n    if (!editable) {\n      return null;\n    }\n    if (typeof cellEditor === \"string\") {\n      return USER_COMP_MODULES[cellEditor] ?? \"CustomEditor\";\n    }\n    return \"CustomEditor\";\n  },\n  cellRenderer: ({ cellRenderer }) => {\n    if (typeof cellRenderer !== \"string\") {\n      return null;\n    }\n    return USER_COMP_MODULES[cellRenderer];\n  },\n  cellStyle: \"CellStyle\",\n  columnChooserParams: \"ColumnMenu\",\n  contextMenuItems: \"ContextMenu\",\n  dndSource: \"DragAndDrop\",\n  dndSourceOnRowDrag: \"DragAndDrop\",\n  editable: ({ editable, cellEditor }) => {\n    if (editable && !cellEditor) {\n      return \"TextEditor\";\n    }\n    return null;\n  },\n  enableCellChangeFlash: \"HighlightChanges\",\n  enablePivot: \"SharedPivot\",\n  enableRowGroup: \"SharedRowGrouping\",\n  enableValue: \"SharedAggregation\",\n  filter: ({ filter }) => {\n    if (filter && typeof filter !== \"string\" && typeof filter !== \"boolean\") {\n      return \"CustomFilter\";\n    }\n    if (typeof filter === \"string\") {\n      return USER_COMP_MODULES[filter] ?? \"ColumnFilter\";\n    }\n    return \"ColumnFilter\";\n  },\n  floatingFilter: \"ColumnFilter\",\n  getQuickFilterText: \"QuickFilter\",\n  headerTooltip: \"Tooltip\",\n  mainMenuItems: \"ColumnMenu\",\n  menuTabs: (options) => {\n    const enterpriseMenuTabs = [\"columnsMenuTab\", \"generalMenuTab\"];\n    if (options.menuTabs?.some((tab) => enterpriseMenuTabs.includes(tab))) {\n      return \"ColumnMenu\";\n    }\n    return null;\n  },\n  pivot: \"SharedPivot\",\n  pivotIndex: \"SharedPivot\",\n  rowDrag: \"RowDrag\",\n  rowGroup: \"SharedRowGrouping\",\n  rowGroupIndex: \"SharedRowGrouping\",\n  tooltipField: \"Tooltip\",\n  tooltipValueGetter: \"Tooltip\",\n  spanRows: \"CellSpan\"\n};\nvar COLUMN_DEFINITION_VALIDATIONS = () => {\n  const validations = {\n    autoHeight: {\n      supportedRowModels: [\"clientSide\", \"serverSide\"],\n      validate: (_colDef, { paginationAutoPageSize }) => {\n        if (paginationAutoPageSize) {\n          return \"colDef.autoHeight is not supported with paginationAutoPageSize.\";\n        }\n        return null;\n      }\n    },\n    cellRendererParams: {\n      validate: (colDef) => {\n        const groupColumn = colDef.rowGroup != null || colDef.rowGroupIndex != null || colDef.cellRenderer === \"agGroupCellRenderer\";\n        if (groupColumn && \"checkbox\" in colDef.cellRendererParams) {\n          return 'Since v33.0, `cellRendererParams.checkbox` has been deprecated. Use `rowSelection.checkboxLocation = \"autoGroupColumn\"` instead.';\n        }\n        return null;\n      }\n    },\n    flex: {\n      validate: (_options, gridOptions) => {\n        if (gridOptions.autoSizeStrategy) {\n          return \"colDef.flex is not supported with gridOptions.autoSizeStrategy\";\n        }\n        return null;\n      }\n    },\n    headerCheckboxSelection: {\n      supportedRowModels: [\"clientSide\", \"serverSide\"],\n      validate: (_options, { rowSelection }) => rowSelection === \"multiple\" ? null : \"headerCheckboxSelection is only supported with rowSelection=multiple\"\n    },\n    headerCheckboxSelectionCurrentPageOnly: {\n      supportedRowModels: [\"clientSide\"],\n      validate: (_options, { rowSelection }) => rowSelection === \"multiple\" ? null : \"headerCheckboxSelectionCurrentPageOnly is only supported with rowSelection=multiple\"\n    },\n    headerCheckboxSelectionFilteredOnly: {\n      supportedRowModels: [\"clientSide\"],\n      validate: (_options, { rowSelection }) => rowSelection === \"multiple\" ? null : \"headerCheckboxSelectionFilteredOnly is only supported with rowSelection=multiple\"\n    },\n    headerValueGetter: {\n      validate: (_options) => {\n        const headerValueGetter = _options.headerValueGetter;\n        if (typeof headerValueGetter === \"function\" || typeof headerValueGetter === \"string\") {\n          return null;\n        }\n        return \"headerValueGetter must be a function or a valid string expression\";\n      }\n    },\n    icons: {\n      validate: ({ icons }) => {\n        if (icons) {\n          if (icons[\"smallDown\"]) {\n            return _errMsg(262);\n          }\n          if (icons[\"smallLeft\"]) {\n            return _errMsg(263);\n          }\n          if (icons[\"smallRight\"]) {\n            return _errMsg(264);\n          }\n        }\n        return null;\n      }\n    },\n    sortingOrder: {\n      validate: (_options) => {\n        const sortingOrder = _options.sortingOrder;\n        if (Array.isArray(sortingOrder) && sortingOrder.length > 0) {\n          const invalidItems = sortingOrder.filter((a) => !DEFAULT_SORTING_ORDER.includes(a));\n          if (invalidItems.length > 0) {\n            return `sortingOrder must be an array with elements from [${DEFAULT_SORTING_ORDER.map(toStringWithNullUndefined).join()}], currently it includes [${invalidItems.map(toStringWithNullUndefined).join()}]`;\n          }\n        } else if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n          return `sortingOrder must be an array with at least one element, currently it's ${sortingOrder}`;\n        }\n        return null;\n      }\n    },\n    type: {\n      validate: (_options) => {\n        const type = _options.type;\n        if (type instanceof Array) {\n          const invalidArray = type.some((a) => typeof a !== \"string\");\n          if (invalidArray) {\n            return \"if colDef.type is supplied an array it should be of type 'string[]'\";\n          }\n          return null;\n        }\n        if (typeof type === \"string\") {\n          return null;\n        }\n        return \"colDef.type should be of type 'string' | 'string[]'\";\n      }\n    },\n    rowSpan: {\n      validate: (_options, { suppressRowTransform }) => {\n        if (!suppressRowTransform) {\n          return \"colDef.rowSpan requires suppressRowTransform to be enabled.\";\n        }\n        return null;\n      }\n    },\n    spanRows: {\n      dependencies: {\n        editable: { required: [false, void 0] },\n        rowDrag: { required: [false, void 0] },\n        colSpan: { required: [void 0] },\n        rowSpan: { required: [void 0] }\n      },\n      validate: (_options, {\n        rowSelection,\n        cellSelection,\n        suppressRowTransform,\n        enableCellSpan,\n        rowDragEntireRow,\n        enableCellTextSelection\n      }) => {\n        if (typeof rowSelection === \"object\") {\n          if (rowSelection?.mode === \"singleRow\" && rowSelection?.enableClickSelection) {\n            return \"colDef.spanRows is not supported with rowSelection.clickSelection\";\n          }\n        }\n        if (cellSelection) {\n          return \"colDef.spanRows is not supported with cellSelection.\";\n        }\n        if (suppressRowTransform) {\n          return \"colDef.spanRows is not supported with suppressRowTransform.\";\n        }\n        if (!enableCellSpan) {\n          return \"colDef.spanRows requires enableCellSpan to be enabled.\";\n        }\n        if (rowDragEntireRow) {\n          return \"colDef.spanRows is not supported with rowDragEntireRow.\";\n        }\n        if (enableCellTextSelection) {\n          return \"colDef.spanRows is not supported with enableCellTextSelection.\";\n        }\n        return null;\n      }\n    }\n  };\n  return validations;\n};\nvar colDefPropertyMap = {\n  headerName: void 0,\n  columnGroupShow: void 0,\n  headerStyle: void 0,\n  headerClass: void 0,\n  toolPanelClass: void 0,\n  headerValueGetter: void 0,\n  pivotKeys: void 0,\n  groupId: void 0,\n  colId: void 0,\n  sort: void 0,\n  initialSort: void 0,\n  field: void 0,\n  type: void 0,\n  cellDataType: void 0,\n  tooltipComponent: void 0,\n  tooltipField: void 0,\n  headerTooltip: void 0,\n  cellClass: void 0,\n  showRowGroup: void 0,\n  filter: void 0,\n  initialAggFunc: void 0,\n  defaultAggFunc: void 0,\n  aggFunc: void 0,\n  pinned: void 0,\n  initialPinned: void 0,\n  chartDataType: void 0,\n  cellAriaRole: void 0,\n  cellEditorPopupPosition: void 0,\n  headerGroupComponent: void 0,\n  headerGroupComponentParams: void 0,\n  cellStyle: void 0,\n  cellRenderer: void 0,\n  cellRendererParams: void 0,\n  cellEditor: void 0,\n  cellEditorParams: void 0,\n  filterParams: void 0,\n  pivotValueColumn: void 0,\n  headerComponent: void 0,\n  headerComponentParams: void 0,\n  floatingFilterComponent: void 0,\n  floatingFilterComponentParams: void 0,\n  tooltipComponentParams: void 0,\n  refData: void 0,\n  columnChooserParams: void 0,\n  children: void 0,\n  sortingOrder: void 0,\n  allowedAggFuncs: void 0,\n  menuTabs: void 0,\n  pivotTotalColumnIds: void 0,\n  cellClassRules: void 0,\n  icons: void 0,\n  sortIndex: void 0,\n  initialSortIndex: void 0,\n  flex: void 0,\n  initialFlex: void 0,\n  width: void 0,\n  initialWidth: void 0,\n  minWidth: void 0,\n  maxWidth: void 0,\n  rowGroupIndex: void 0,\n  initialRowGroupIndex: void 0,\n  pivotIndex: void 0,\n  initialPivotIndex: void 0,\n  suppressColumnsToolPanel: void 0,\n  suppressFiltersToolPanel: void 0,\n  openByDefault: void 0,\n  marryChildren: void 0,\n  suppressStickyLabel: void 0,\n  hide: void 0,\n  initialHide: void 0,\n  rowGroup: void 0,\n  initialRowGroup: void 0,\n  pivot: void 0,\n  initialPivot: void 0,\n  checkboxSelection: void 0,\n  showDisabledCheckboxes: void 0,\n  headerCheckboxSelection: void 0,\n  headerCheckboxSelectionFilteredOnly: void 0,\n  headerCheckboxSelectionCurrentPageOnly: void 0,\n  suppressHeaderMenuButton: void 0,\n  suppressMovable: void 0,\n  lockPosition: void 0,\n  lockVisible: void 0,\n  lockPinned: void 0,\n  unSortIcon: void 0,\n  suppressSizeToFit: void 0,\n  suppressAutoSize: void 0,\n  enableRowGroup: void 0,\n  enablePivot: void 0,\n  enableValue: void 0,\n  editable: void 0,\n  suppressPaste: void 0,\n  suppressNavigable: void 0,\n  enableCellChangeFlash: void 0,\n  rowDrag: void 0,\n  dndSource: void 0,\n  autoHeight: void 0,\n  wrapText: void 0,\n  sortable: void 0,\n  resizable: void 0,\n  singleClickEdit: void 0,\n  floatingFilter: void 0,\n  cellEditorPopup: void 0,\n  suppressFillHandle: void 0,\n  wrapHeaderText: void 0,\n  autoHeaderHeight: void 0,\n  dndSourceOnRowDrag: void 0,\n  valueGetter: void 0,\n  valueSetter: void 0,\n  filterValueGetter: void 0,\n  keyCreator: void 0,\n  valueFormatter: void 0,\n  valueParser: void 0,\n  comparator: void 0,\n  equals: void 0,\n  pivotComparator: void 0,\n  suppressKeyboardEvent: void 0,\n  suppressHeaderKeyboardEvent: void 0,\n  colSpan: void 0,\n  rowSpan: void 0,\n  spanRows: void 0,\n  getQuickFilterText: void 0,\n  onCellValueChanged: void 0,\n  onCellClicked: void 0,\n  onCellDoubleClicked: void 0,\n  onCellContextMenu: void 0,\n  rowDragText: void 0,\n  tooltipValueGetter: void 0,\n  cellRendererSelector: void 0,\n  cellEditorSelector: void 0,\n  suppressSpanHeaderHeight: void 0,\n  useValueFormatterForExport: void 0,\n  useValueParserForImport: void 0,\n  mainMenuItems: void 0,\n  contextMenuItems: void 0,\n  suppressFloatingFilterButton: void 0,\n  suppressHeaderFilterButton: void 0,\n  suppressHeaderContextMenu: void 0,\n  loadingCellRenderer: void 0,\n  loadingCellRendererParams: void 0,\n  loadingCellRendererSelector: void 0,\n  context: void 0,\n  dateComponent: void 0,\n  dateComponentParams: void 0,\n  getFindText: void 0\n};\nvar ALL_PROPERTIES = () => Object.keys(colDefPropertyMap);\nvar COL_DEF_VALIDATORS = () => ({\n  objectName: \"colDef\",\n  allProperties: ALL_PROPERTIES(),\n  docsUrl: \"column-properties/\",\n  deprecations: COLUMN_DEFINITION_DEPRECATIONS(),\n  validations: COLUMN_DEFINITION_VALIDATIONS()\n});\n\n// packages/ag-grid-community/src/eventTypes.ts\nvar _PUBLIC_EVENTS = [\n  \"columnEverythingChanged\",\n  \"newColumnsLoaded\",\n  \"columnPivotModeChanged\",\n  \"pivotMaxColumnsExceeded\",\n  \"columnRowGroupChanged\",\n  \"expandOrCollapseAll\",\n  \"columnPivotChanged\",\n  \"gridColumnsChanged\",\n  \"columnValueChanged\",\n  \"columnMoved\",\n  \"columnVisible\",\n  \"columnPinned\",\n  \"columnGroupOpened\",\n  \"columnResized\",\n  \"displayedColumnsChanged\",\n  \"virtualColumnsChanged\",\n  \"columnHeaderMouseOver\",\n  \"columnHeaderMouseLeave\",\n  \"columnHeaderClicked\",\n  \"columnHeaderContextMenu\",\n  \"asyncTransactionsFlushed\",\n  \"rowGroupOpened\",\n  \"rowDataUpdated\",\n  \"pinnedRowDataChanged\",\n  \"pinnedRowsChanged\",\n  \"rangeSelectionChanged\",\n  \"cellSelectionChanged\",\n  \"chartCreated\",\n  \"chartRangeSelectionChanged\",\n  \"chartOptionsChanged\",\n  \"chartDestroyed\",\n  \"toolPanelVisibleChanged\",\n  \"toolPanelSizeChanged\",\n  \"modelUpdated\",\n  \"cutStart\",\n  \"cutEnd\",\n  \"pasteStart\",\n  \"pasteEnd\",\n  \"fillStart\",\n  \"fillEnd\",\n  \"cellSelectionDeleteStart\",\n  \"cellSelectionDeleteEnd\",\n  \"rangeDeleteStart\",\n  \"rangeDeleteEnd\",\n  \"undoStarted\",\n  \"undoEnded\",\n  \"redoStarted\",\n  \"redoEnded\",\n  \"cellClicked\",\n  \"cellDoubleClicked\",\n  \"cellMouseDown\",\n  \"cellContextMenu\",\n  \"cellValueChanged\",\n  \"cellEditRequest\",\n  \"rowValueChanged\",\n  \"headerFocused\",\n  \"cellFocused\",\n  \"rowSelected\",\n  \"selectionChanged\",\n  \"tooltipShow\",\n  \"tooltipHide\",\n  \"cellKeyDown\",\n  \"cellMouseOver\",\n  \"cellMouseOut\",\n  \"filterChanged\",\n  \"filterModified\",\n  \"filterOpened\",\n  \"advancedFilterBuilderVisibleChanged\",\n  \"sortChanged\",\n  \"virtualRowRemoved\",\n  \"rowClicked\",\n  \"rowDoubleClicked\",\n  \"gridReady\",\n  \"gridPreDestroyed\",\n  \"gridSizeChanged\",\n  \"viewportChanged\",\n  \"firstDataRendered\",\n  \"dragStarted\",\n  \"dragStopped\",\n  \"dragCancelled\",\n  \"rowEditingStarted\",\n  \"rowEditingStopped\",\n  \"cellEditingStarted\",\n  \"cellEditingStopped\",\n  \"bodyScroll\",\n  \"bodyScrollEnd\",\n  \"paginationChanged\",\n  \"componentStateChanged\",\n  \"storeRefreshed\",\n  \"stateUpdated\",\n  \"columnMenuVisibleChanged\",\n  \"contextMenuVisibleChanged\",\n  \"rowDragEnter\",\n  \"rowDragMove\",\n  \"rowDragLeave\",\n  \"rowDragEnd\",\n  \"rowDragCancel\",\n  \"findChanged\",\n  \"rowResizeStarted\",\n  \"rowResizeEnded\"\n];\nvar _INTERNAL_EVENTS = [\n  \"scrollbarWidthChanged\",\n  \"keyShortcutChangedCellStart\",\n  \"keyShortcutChangedCellEnd\",\n  \"pinnedHeightChanged\",\n  \"cellFocusCleared\",\n  \"fullWidthRowFocused\",\n  \"checkboxChanged\",\n  \"heightScaleChanged\",\n  \"suppressMovableColumns\",\n  \"suppressMenuHide\",\n  \"suppressFieldDotNotation\",\n  \"columnPanelItemDragStart\",\n  \"columnPanelItemDragEnd\",\n  \"bodyHeightChanged\",\n  \"columnContainerWidthChanged\",\n  \"displayedColumnsWidthChanged\",\n  \"scrollVisibilityChanged\",\n  \"scrollGapChanged\",\n  \"columnHoverChanged\",\n  \"flashCells\",\n  \"paginationPixelOffsetChanged\",\n  \"displayedRowsChanged\",\n  \"leftPinnedWidthChanged\",\n  \"rightPinnedWidthChanged\",\n  \"rowContainerHeightChanged\",\n  \"headerHeightChanged\",\n  \"columnGroupHeaderHeightChanged\",\n  \"columnHeaderHeightChanged\",\n  \"gridStylesChanged\",\n  \"storeUpdated\",\n  \"filterDestroyed\",\n  \"rowDataUpdateStarted\",\n  \"rowCountReady\",\n  \"advancedFilterEnabledChanged\",\n  \"dataTypesInferred\",\n  \"fieldValueChanged\",\n  \"fieldPickerValueSelected\",\n  \"richSelectListRowSelected\",\n  \"sideBarUpdated\",\n  \"alignedGridScroll\",\n  \"alignedGridColumn\",\n  \"gridOptionsChanged\",\n  \"chartTitleEdit\",\n  \"recalculateRowBounds\",\n  \"stickyTopOffsetChanged\",\n  \"overlayExclusiveChanged\",\n  \"beforeRefreshModel\",\n  \"rowNodeDataChanged\"\n];\nvar _GET_ALL_EVENTS = () => [..._PUBLIC_EVENTS, ..._INTERNAL_EVENTS];\n\n// packages/ag-grid-community/src/propertyKeys.ts\nvar STRING_GRID_OPTIONS = [\n  \"overlayLoadingTemplate\",\n  \"overlayNoRowsTemplate\",\n  \"gridId\",\n  \"quickFilterText\",\n  \"rowModelType\",\n  \"editType\",\n  \"domLayout\",\n  \"clipboardDelimiter\",\n  \"rowGroupPanelShow\",\n  \"multiSortKey\",\n  \"pivotColumnGroupTotals\",\n  \"pivotRowTotals\",\n  \"pivotPanelShow\",\n  \"fillHandleDirection\",\n  \"groupDisplayType\",\n  \"treeDataDisplayType\",\n  \"treeDataChildrenField\",\n  \"treeDataParentIdField\",\n  \"colResizeDefault\",\n  \"tooltipTrigger\",\n  \"serverSidePivotResultFieldSeparator\",\n  \"columnMenu\",\n  \"tooltipShowMode\",\n  \"grandTotalRow\",\n  \"themeCssLayer\",\n  \"findSearchValue\",\n  \"styleNonce\"\n];\nvar OBJECT_GRID_OPTIONS = [\n  \"components\",\n  \"rowStyle\",\n  \"context\",\n  \"autoGroupColumnDef\",\n  \"localeText\",\n  \"icons\",\n  \"datasource\",\n  \"dragAndDropImageComponentParams\",\n  \"serverSideDatasource\",\n  \"viewportDatasource\",\n  \"groupRowRendererParams\",\n  \"aggFuncs\",\n  \"fullWidthCellRendererParams\",\n  \"defaultColGroupDef\",\n  \"defaultColDef\",\n  \"defaultCsvExportParams\",\n  \"defaultExcelExportParams\",\n  \"columnTypes\",\n  \"rowClassRules\",\n  \"detailCellRendererParams\",\n  \"loadingCellRendererParams\",\n  \"loadingOverlayComponentParams\",\n  \"noRowsOverlayComponentParams\",\n  \"popupParent\",\n  \"themeStyleContainer\",\n  \"statusBar\",\n  \"chartThemeOverrides\",\n  \"customChartThemes\",\n  \"chartToolPanelsDef\",\n  \"dataTypeDefinitions\",\n  \"advancedFilterParent\",\n  \"advancedFilterBuilderParams\",\n  \"initialState\",\n  \"autoSizeStrategy\",\n  \"selectionColumnDef\",\n  \"findOptions\"\n];\nvar ARRAY_GRID_OPTIONS = [\n  \"sortingOrder\",\n  \"alignedGrids\",\n  \"rowData\",\n  \"columnDefs\",\n  \"excelStyles\",\n  \"pinnedTopRowData\",\n  \"pinnedBottomRowData\",\n  \"chartThemes\",\n  \"rowClass\",\n  \"paginationPageSizeSelector\"\n];\nvar _NUMBER_GRID_OPTIONS = [\n  \"rowHeight\",\n  \"detailRowHeight\",\n  \"rowBuffer\",\n  \"headerHeight\",\n  \"groupHeaderHeight\",\n  \"groupLockGroupColumns\",\n  \"floatingFiltersHeight\",\n  \"pivotHeaderHeight\",\n  \"pivotGroupHeaderHeight\",\n  \"groupDefaultExpanded\",\n  \"pivotDefaultExpanded\",\n  \"viewportRowModelPageSize\",\n  \"viewportRowModelBufferSize\",\n  \"autoSizePadding\",\n  \"maxBlocksInCache\",\n  \"maxConcurrentDatasourceRequests\",\n  \"tooltipShowDelay\",\n  \"tooltipHideDelay\",\n  \"cacheOverflowSize\",\n  \"paginationPageSize\",\n  \"cacheBlockSize\",\n  \"infiniteInitialRowCount\",\n  \"serverSideInitialRowCount\",\n  \"scrollbarWidth\",\n  \"asyncTransactionWaitMillis\",\n  \"blockLoadDebounceMillis\",\n  \"keepDetailRowsCount\",\n  \"undoRedoCellEditingLimit\",\n  \"cellFlashDuration\",\n  \"cellFadeDuration\",\n  \"tabIndex\",\n  \"pivotMaxGeneratedColumns\"\n];\nvar OTHER_GRID_OPTIONS = [\"theme\", \"rowSelection\"];\nvar _BOOLEAN_MIXED_GRID_OPTIONS = [\n  \"cellSelection\",\n  \"sideBar\",\n  \"rowNumbers\",\n  \"suppressGroupChangesColumnVisibility\",\n  \"groupAggFiltering\",\n  \"suppressStickyTotalRow\",\n  \"groupHideParentOfSingleChild\",\n  \"enableRowPinning\"\n];\nvar _BOOLEAN_GRID_OPTIONS = [\n  \"loadThemeGoogleFonts\",\n  \"suppressMakeColumnVisibleAfterUnGroup\",\n  \"suppressRowClickSelection\",\n  \"suppressCellFocus\",\n  \"suppressHeaderFocus\",\n  \"suppressHorizontalScroll\",\n  \"groupSelectsChildren\",\n  \"alwaysShowHorizontalScroll\",\n  \"alwaysShowVerticalScroll\",\n  \"debug\",\n  \"enableBrowserTooltips\",\n  \"enableCellExpressions\",\n  \"groupSuppressBlankHeader\",\n  \"suppressMenuHide\",\n  \"suppressRowDeselection\",\n  \"unSortIcon\",\n  \"suppressMultiSort\",\n  \"alwaysMultiSort\",\n  \"singleClickEdit\",\n  \"suppressLoadingOverlay\",\n  \"suppressNoRowsOverlay\",\n  \"suppressAutoSize\",\n  \"skipHeaderOnAutoSize\",\n  \"suppressColumnMoveAnimation\",\n  \"suppressMoveWhenColumnDragging\",\n  \"suppressMovableColumns\",\n  \"suppressFieldDotNotation\",\n  \"enableRangeSelection\",\n  \"enableRangeHandle\",\n  \"enableFillHandle\",\n  \"suppressClearOnFillReduction\",\n  \"deltaSort\",\n  \"suppressTouch\",\n  \"allowContextMenuWithControlKey\",\n  \"suppressContextMenu\",\n  \"suppressDragLeaveHidesColumns\",\n  \"suppressRowGroupHidesColumns\",\n  \"suppressMiddleClickScrolls\",\n  \"suppressPreventDefaultOnMouseWheel\",\n  \"suppressCopyRowsToClipboard\",\n  \"copyHeadersToClipboard\",\n  \"copyGroupHeadersToClipboard\",\n  \"pivotMode\",\n  \"suppressAggFuncInHeader\",\n  \"suppressColumnVirtualisation\",\n  \"alwaysAggregateAtRootLevel\",\n  \"suppressFocusAfterRefresh\",\n  \"functionsReadOnly\",\n  \"animateRows\",\n  \"groupSelectsFiltered\",\n  \"groupRemoveSingleChildren\",\n  \"groupRemoveLowestSingleChildren\",\n  \"enableRtl\",\n  \"enableCellSpan\",\n  \"suppressClickEdit\",\n  \"rowDragEntireRow\",\n  \"rowDragManaged\",\n  \"suppressRowDrag\",\n  \"suppressMoveWhenRowDragging\",\n  \"rowDragMultiRow\",\n  \"enableGroupEdit\",\n  \"embedFullWidthRows\",\n  \"suppressPaginationPanel\",\n  \"groupHideOpenParents\",\n  \"groupAllowUnbalanced\",\n  \"pagination\",\n  \"paginationAutoPageSize\",\n  \"suppressScrollOnNewData\",\n  \"suppressScrollWhenPopupsAreOpen\",\n  \"purgeClosedRowNodes\",\n  \"cacheQuickFilter\",\n  \"includeHiddenColumnsInQuickFilter\",\n  \"ensureDomOrder\",\n  \"accentedSort\",\n  \"suppressChangeDetection\",\n  \"valueCache\",\n  \"valueCacheNeverExpires\",\n  \"aggregateOnlyChangedColumns\",\n  \"suppressAnimationFrame\",\n  \"suppressExcelExport\",\n  \"suppressCsvExport\",\n  \"includeHiddenColumnsInAdvancedFilter\",\n  \"suppressMultiRangeSelection\",\n  \"enterNavigatesVerticallyAfterEdit\",\n  \"enterNavigatesVertically\",\n  \"suppressPropertyNamesCheck\",\n  \"rowMultiSelectWithClick\",\n  \"suppressRowHoverHighlight\",\n  \"suppressRowTransform\",\n  \"suppressClipboardPaste\",\n  \"suppressLastEmptyLineOnPaste\",\n  \"enableCharts\",\n  \"suppressMaintainUnsortedOrder\",\n  \"enableCellTextSelection\",\n  \"suppressBrowserResizeObserver\",\n  \"suppressMaxRenderedRowRestriction\",\n  \"excludeChildrenWhenTreeDataFiltering\",\n  \"tooltipMouseTrack\",\n  \"tooltipInteraction\",\n  \"keepDetailRows\",\n  \"paginateChildRows\",\n  \"preventDefaultOnContextMenu\",\n  \"undoRedoCellEditing\",\n  \"allowDragFromColumnsToolPanel\",\n  \"pivotSuppressAutoColumn\",\n  \"suppressExpandablePivotGroups\",\n  \"debounceVerticalScrollbar\",\n  \"detailRowAutoHeight\",\n  \"serverSideSortAllLevels\",\n  \"serverSideEnableClientSideSort\",\n  \"serverSideOnlyRefreshFilteredGroups\",\n  \"suppressAggFilteredOnly\",\n  \"showOpenedGroup\",\n  \"suppressClipboardApi\",\n  \"suppressModelUpdateAfterUpdateTransaction\",\n  \"stopEditingWhenCellsLoseFocus\",\n  \"groupMaintainOrder\",\n  \"columnHoverHighlight\",\n  \"readOnlyEdit\",\n  \"suppressRowVirtualisation\",\n  \"enableCellEditingOnBackspace\",\n  \"resetRowDataOnUpdate\",\n  \"removePivotHeaderRowWhenSingleValueColumn\",\n  \"suppressCopySingleCellRanges\",\n  \"suppressGroupRowsSticky\",\n  \"suppressCutToClipboard\",\n  \"rowGroupPanelSuppressSort\",\n  \"allowShowChangeAfterFilter\",\n  \"enableAdvancedFilter\",\n  \"masterDetail\",\n  \"treeData\",\n  \"reactiveCustomComponents\",\n  \"applyQuickFilterBeforePivotOrAgg\",\n  \"suppressServerSideFullWidthLoadingRow\",\n  \"suppressAdvancedFilterEval\",\n  \"loading\",\n  \"maintainColumnOrder\",\n  \"enableStrictPivotColumnOrder\",\n  \"suppressSetFilterByDefault\"\n];\nvar _FUNCTION_GRID_OPTIONS = [\n  \"doesExternalFilterPass\",\n  \"processPivotResultColDef\",\n  \"processPivotResultColGroupDef\",\n  \"getBusinessKeyForNode\",\n  \"isRowSelectable\",\n  \"rowDragText\",\n  \"groupRowRenderer\",\n  \"dragAndDropImageComponent\",\n  \"fullWidthCellRenderer\",\n  \"loadingCellRenderer\",\n  \"loadingOverlayComponent\",\n  \"noRowsOverlayComponent\",\n  \"detailCellRenderer\",\n  \"quickFilterParser\",\n  \"quickFilterMatcher\",\n  \"getLocaleText\",\n  \"isExternalFilterPresent\",\n  \"getRowHeight\",\n  \"getRowClass\",\n  \"getRowStyle\",\n  \"getContextMenuItems\",\n  \"getMainMenuItems\",\n  \"processRowPostCreate\",\n  \"processCellForClipboard\",\n  \"getGroupRowAgg\",\n  \"isFullWidthRow\",\n  \"sendToClipboard\",\n  \"focusGridInnerElement\",\n  \"navigateToNextHeader\",\n  \"tabToNextHeader\",\n  \"navigateToNextCell\",\n  \"tabToNextCell\",\n  \"processCellFromClipboard\",\n  \"getDocument\",\n  \"postProcessPopup\",\n  \"getChildCount\",\n  \"getDataPath\",\n  \"isRowMaster\",\n  \"postSortRows\",\n  \"processHeaderForClipboard\",\n  \"processUnpinnedColumns\",\n  \"processGroupHeaderForClipboard\",\n  \"paginationNumberFormatter\",\n  \"processDataFromClipboard\",\n  \"getServerSideGroupKey\",\n  \"isServerSideGroup\",\n  \"createChartContainer\",\n  \"getChartToolbarItems\",\n  \"fillOperation\",\n  \"isApplyServerSideTransaction\",\n  \"getServerSideGroupLevelParams\",\n  \"isServerSideGroupOpenByDefault\",\n  \"isGroupOpenByDefault\",\n  \"initialGroupOrderComparator\",\n  \"loadingCellRendererSelector\",\n  \"getRowId\",\n  \"chartMenuItems\",\n  \"groupTotalRow\",\n  \"alwaysPassFilter\",\n  \"isRowPinnable\",\n  \"isRowPinned\"\n];\nvar _GET_ALL_GRID_OPTIONS = () => [\n  ...ARRAY_GRID_OPTIONS,\n  ...OBJECT_GRID_OPTIONS,\n  ...STRING_GRID_OPTIONS,\n  ..._NUMBER_GRID_OPTIONS,\n  ..._FUNCTION_GRID_OPTIONS,\n  ..._BOOLEAN_GRID_OPTIONS,\n  ..._BOOLEAN_MIXED_GRID_OPTIONS,\n  ...OTHER_GRID_OPTIONS\n];\n\n// packages/ag-grid-community/src/validation/rules/gridOptionsValidations.ts\nvar GRID_OPTION_DEPRECATIONS = () => ({\n  suppressLoadingOverlay: { version: \"32\", message: \"Use `loading`=false instead.\" },\n  enableFillHandle: { version: \"32.2\", message: \"Use `cellSelection.handle` instead.\" },\n  enableRangeHandle: { version: \"32.2\", message: \"Use `cellSelection.handle` instead.\" },\n  enableRangeSelection: { version: \"32.2\", message: \"Use `cellSelection = true` instead.\" },\n  suppressMultiRangeSelection: {\n    version: \"32.2\",\n    message: \"Use `cellSelection.suppressMultiRanges` instead.\"\n  },\n  suppressClearOnFillReduction: {\n    version: \"32.2\",\n    message: \"Use `cellSelection.handle.suppressClearOnFillReduction` instead.\"\n  },\n  fillHandleDirection: { version: \"32.2\", message: \"Use `cellSelection.handle.direction` instead.\" },\n  fillOperation: { version: \"32.2\", message: \"Use `cellSelection.handle.setFillValue` instead.\" },\n  suppressRowClickSelection: {\n    version: \"32.2\",\n    message: \"Use `rowSelection.enableClickSelection` instead.\"\n  },\n  suppressRowDeselection: { version: \"32.2\", message: \"Use `rowSelection.enableClickSelection` instead.\" },\n  rowMultiSelectWithClick: {\n    version: \"32.2\",\n    message: \"Use `rowSelection.enableSelectionWithoutKeys` instead.\"\n  },\n  groupSelectsChildren: {\n    version: \"32.2\",\n    message: 'Use `rowSelection.groupSelects = \"descendants\"` instead.'\n  },\n  groupSelectsFiltered: {\n    version: \"32.2\",\n    message: 'Use `rowSelection.groupSelects = \"filteredDescendants\"` instead.'\n  },\n  isRowSelectable: { version: \"32.2\", message: \"Use `selectionOptions.isRowSelectable` instead.\" },\n  suppressCopySingleCellRanges: { version: \"32.2\", message: \"Use `rowSelection.copySelectedRows` instead.\" },\n  suppressCopyRowsToClipboard: { version: \"32.2\", message: \"Use `rowSelection.copySelectedRows` instead.\" },\n  onRangeSelectionChanged: { version: \"32.2\", message: \"Use `onCellSelectionChanged` instead.\" },\n  onRangeDeleteStart: { version: \"32.2\", message: \"Use `onCellSelectionDeleteStart` instead.\" },\n  onRangeDeleteEnd: { version: \"32.2\", message: \"Use `onCellSelectionDeleteEnd` instead.\" },\n  suppressBrowserResizeObserver: {\n    version: \"32.2\",\n    message: \"The grid always uses the browser's ResizeObserver, this grid option has no effect.\"\n  },\n  onColumnEverythingChanged: {\n    version: \"32.2\",\n    message: \"Either use `onDisplayedColumnsChanged` which is fired at the same time, or use one of the more specific column events.\"\n  },\n  groupRemoveSingleChildren: {\n    version: \"33\",\n    message: \"Use `groupHideParentOfSingleChild` instead.\"\n  },\n  groupRemoveLowestSingleChildren: {\n    version: \"33\",\n    message: 'Use `groupHideParentOfSingleChild: \"leafGroupsOnly\"` instead.'\n  },\n  suppressRowGroupHidesColumns: {\n    version: \"33\",\n    message: 'Use `suppressGroupChangesColumnVisibility: \"suppressHideOnGroup\"` instead.'\n  },\n  suppressMakeColumnVisibleAfterUnGroup: {\n    version: \"33\",\n    message: 'Use `suppressGroupChangesColumnVisibility: \"suppressShowOnUngroup\"` instead.'\n  },\n  unSortIcon: { version: \"33\", message: \"Use `defaultColDef.unSortIcon` instead.\" },\n  sortingOrder: { version: \"33\", message: \"Use `defaultColDef.sortingOrder` instead.\" },\n  suppressPropertyNamesCheck: {\n    version: \"33\",\n    message: \"`gridOptions` and `columnDefs` both have a `context` property that should be used for arbitrary user data. This means that column definitions and gridOptions should only contain valid properties making this property redundant.\"\n  }\n});\nfunction toConstrainedNum(key, value, min) {\n  if (typeof value === \"number\" || value == null) {\n    if (value == null) {\n      return null;\n    }\n    return value >= min ? null : `${key}: value should be greater than or equal to ${min}`;\n  }\n  return `${key}: value should be a number`;\n}\nvar GRID_OPTIONS_MODULES = {\n  alignedGrids: \"AlignedGrids\",\n  allowContextMenuWithControlKey: \"ContextMenu\",\n  autoSizeStrategy: \"ColumnAutoSize\",\n  cellSelection: \"CellSelection\",\n  columnHoverHighlight: \"ColumnHover\",\n  datasource: \"InfiniteRowModel\",\n  doesExternalFilterPass: \"ExternalFilter\",\n  editType: \"EditCore\",\n  enableAdvancedFilter: \"AdvancedFilter\",\n  enableCellSpan: \"CellSpan\",\n  enableCharts: \"IntegratedCharts\",\n  enableRangeSelection: \"CellSelection\",\n  enableRowPinning: \"PinnedRow\",\n  findSearchValue: \"Find\",\n  getContextMenuItems: \"ContextMenu\",\n  getLocaleText: \"Locale\",\n  getMainMenuItems: \"ColumnMenu\",\n  getRowClass: \"RowStyle\",\n  getRowStyle: \"RowStyle\",\n  groupTotalRow: \"SharedRowGrouping\",\n  grandTotalRow: \"SharedRowGrouping\",\n  initialState: \"GridState\",\n  isExternalFilterPresent: \"ExternalFilter\",\n  isRowPinnable: \"PinnedRow\",\n  localeText: \"Locale\",\n  masterDetail: \"SharedMasterDetail\",\n  pagination: \"Pagination\",\n  pinnedBottomRowData: \"PinnedRow\",\n  pinnedTopRowData: \"PinnedRow\",\n  pivotMode: \"SharedPivot\",\n  pivotPanelShow: \"RowGroupingPanel\",\n  quickFilterText: \"QuickFilter\",\n  rowClass: \"RowStyle\",\n  rowClassRules: \"RowStyle\",\n  rowData: \"ClientSideRowModel\",\n  rowDragManaged: \"RowDrag\",\n  rowGroupPanelShow: \"RowGroupingPanel\",\n  rowNumbers: \"RowNumbers\",\n  rowSelection: \"SharedRowSelection\",\n  rowStyle: \"RowStyle\",\n  serverSideDatasource: \"ServerSideRowModel\",\n  sideBar: \"SideBar\",\n  statusBar: \"StatusBar\",\n  treeData: \"SharedTreeData\",\n  undoRedoCellEditing: \"UndoRedoEdit\",\n  valueCache: \"ValueCache\",\n  viewportDatasource: \"ViewportRowModel\"\n};\nvar GRID_OPTION_VALIDATIONS = () => {\n  const definedValidations = {\n    autoSizePadding: {\n      validate({ autoSizePadding }) {\n        return toConstrainedNum(\"autoSizePadding\", autoSizePadding, 0);\n      }\n    },\n    cacheBlockSize: {\n      supportedRowModels: [\"serverSide\", \"infinite\"],\n      validate({ cacheBlockSize }) {\n        return toConstrainedNum(\"cacheBlockSize\", cacheBlockSize, 1);\n      }\n    },\n    cacheOverflowSize: {\n      validate({ cacheOverflowSize }) {\n        return toConstrainedNum(\"cacheOverflowSize\", cacheOverflowSize, 1);\n      }\n    },\n    datasource: {\n      supportedRowModels: [\"infinite\"]\n    },\n    domLayout: {\n      validate: (options) => {\n        const domLayout = options.domLayout;\n        const validLayouts = [\"autoHeight\", \"normal\", \"print\"];\n        if (domLayout && !validLayouts.includes(domLayout)) {\n          return `domLayout must be one of [${validLayouts.join()}], currently it's ${domLayout}`;\n        }\n        return null;\n      }\n    },\n    enableFillHandle: {\n      dependencies: {\n        enableRangeSelection: { required: [true] }\n      }\n    },\n    enableRangeHandle: {\n      dependencies: {\n        enableRangeSelection: { required: [true] }\n      }\n    },\n    enableRangeSelection: {\n      dependencies: {\n        rowDragEntireRow: { required: [false, void 0] }\n      }\n    },\n    enableRowPinning: {\n      supportedRowModels: [\"clientSide\"],\n      validate({ enableRowPinning, pinnedTopRowData, pinnedBottomRowData }) {\n        if (enableRowPinning && (pinnedTopRowData || pinnedBottomRowData)) {\n          return \"Manual row pinning cannot be used together with pinned row data. Either set `enableRowPinning` to `false`, or remove `pinnedTopRowData` and `pinnedBottomRowData`.\";\n        }\n        return null;\n      }\n    },\n    isRowPinnable: {\n      supportedRowModels: [\"clientSide\"],\n      validate({ isRowPinnable, pinnedTopRowData, pinnedBottomRowData }) {\n        if (isRowPinnable && (pinnedTopRowData || pinnedBottomRowData)) {\n          return \"Manual row pinning cannot be used together with pinned row data. Either remove `isRowPinnable`, or remove `pinnedTopRowData` and `pinnedBottomRowData`.\";\n        }\n        return null;\n      }\n    },\n    isRowPinned: {\n      supportedRowModels: [\"clientSide\"],\n      validate({ isRowPinned, pinnedTopRowData, pinnedBottomRowData }) {\n        if (isRowPinned && (pinnedTopRowData || pinnedBottomRowData)) {\n          return \"Manual row pinning cannot be used together with pinned row data. Either remove `isRowPinned`, or remove `pinnedTopRowData` and `pinnedBottomRowData`.\";\n        }\n        return null;\n      }\n    },\n    groupDefaultExpanded: {\n      supportedRowModels: [\"clientSide\"]\n    },\n    groupHideOpenParents: {\n      supportedRowModels: [\"clientSide\", \"serverSide\"],\n      dependencies: {\n        groupTotalRow: { required: [void 0, \"bottom\"] },\n        treeData: {\n          required: [void 0, false],\n          reason: \"Tree Data has values at the group level so it doesn't make sense to hide them.\"\n        }\n      }\n    },\n    groupHideParentOfSingleChild: {\n      dependencies: {\n        groupHideOpenParents: { required: [void 0, false] }\n      }\n    },\n    groupRemoveLowestSingleChildren: {\n      dependencies: {\n        groupHideOpenParents: { required: [void 0, false] },\n        groupRemoveSingleChildren: { required: [void 0, false] }\n      }\n    },\n    groupRemoveSingleChildren: {\n      dependencies: {\n        groupHideOpenParents: { required: [void 0, false] },\n        groupRemoveLowestSingleChildren: { required: [void 0, false] }\n      }\n    },\n    groupSelectsChildren: {\n      dependencies: {\n        rowSelection: { required: [\"multiple\"] }\n      }\n    },\n    icons: {\n      validate: ({ icons }) => {\n        if (icons) {\n          if (icons[\"smallDown\"]) {\n            return _errMsg(262);\n          }\n          if (icons[\"smallLeft\"]) {\n            return _errMsg(263);\n          }\n          if (icons[\"smallRight\"]) {\n            return _errMsg(264);\n          }\n        }\n        return null;\n      }\n    },\n    infiniteInitialRowCount: {\n      validate({ infiniteInitialRowCount }) {\n        return toConstrainedNum(\"infiniteInitialRowCount\", infiniteInitialRowCount, 1);\n      }\n    },\n    initialGroupOrderComparator: {\n      supportedRowModels: [\"clientSide\"]\n    },\n    keepDetailRowsCount: {\n      validate({ keepDetailRowsCount }) {\n        return toConstrainedNum(\"keepDetailRowsCount\", keepDetailRowsCount, 1);\n      }\n    },\n    paginationPageSize: {\n      validate({ paginationPageSize }) {\n        return toConstrainedNum(\"paginationPageSize\", paginationPageSize, 1);\n      }\n    },\n    paginationPageSizeSelector: {\n      validate: (options) => {\n        const values = options.paginationPageSizeSelector;\n        if (typeof values === \"boolean\" || values == null) {\n          return null;\n        }\n        if (!values.length) {\n          return `'paginationPageSizeSelector' cannot be an empty array.\n                    If you want to hide the page size selector, set paginationPageSizeSelector to false.`;\n        }\n        return null;\n      }\n    },\n    pivotMode: {\n      dependencies: {\n        treeData: {\n          required: [false, void 0],\n          reason: \"Pivot Mode is not supported with Tree Data.\"\n        }\n      }\n    },\n    quickFilterText: {\n      supportedRowModels: [\"clientSide\"]\n    },\n    rowBuffer: {\n      validate({ rowBuffer }) {\n        return toConstrainedNum(\"rowBuffer\", rowBuffer, 0);\n      }\n    },\n    rowClass: {\n      validate: (options) => {\n        const rowClass = options.rowClass;\n        if (typeof rowClass === \"function\") {\n          return \"rowClass should not be a function, please use getRowClass instead\";\n        }\n        return null;\n      }\n    },\n    rowData: {\n      supportedRowModels: [\"clientSide\"]\n    },\n    rowDragManaged: {\n      supportedRowModels: [\"clientSide\"],\n      dependencies: {\n        treeData: {\n          required: [false, void 0]\n        },\n        pagination: {\n          required: [false, void 0]\n        }\n      }\n    },\n    rowSelection: {\n      validate({ rowSelection }) {\n        if (rowSelection && typeof rowSelection === \"string\") {\n          return 'As of version 32.2.1, using `rowSelection` with the values \"single\" or \"multiple\" has been deprecated. Use the object value instead.';\n        }\n        if (rowSelection && typeof rowSelection !== \"object\") {\n          return \"Expected `RowSelectionOptions` object for the `rowSelection` property.\";\n        }\n        if (rowSelection && rowSelection.mode !== \"multiRow\" && rowSelection.mode !== \"singleRow\") {\n          return `Selection mode \"${rowSelection.mode}\" is invalid. Use one of 'singleRow' or 'multiRow'.`;\n        }\n        return null;\n      }\n    },\n    rowStyle: {\n      validate: (options) => {\n        const rowStyle = options.rowStyle;\n        if (rowStyle && typeof rowStyle === \"function\") {\n          return \"rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead\";\n        }\n        return null;\n      }\n    },\n    serverSideDatasource: {\n      supportedRowModels: [\"serverSide\"]\n    },\n    serverSideInitialRowCount: {\n      supportedRowModels: [\"serverSide\"],\n      validate({ serverSideInitialRowCount }) {\n        return toConstrainedNum(\"serverSideInitialRowCount\", serverSideInitialRowCount, 1);\n      }\n    },\n    serverSideOnlyRefreshFilteredGroups: {\n      supportedRowModels: [\"serverSide\"]\n    },\n    serverSideSortAllLevels: {\n      supportedRowModels: [\"serverSide\"]\n    },\n    sortingOrder: {\n      validate: (_options) => {\n        const sortingOrder = _options.sortingOrder;\n        if (Array.isArray(sortingOrder) && sortingOrder.length > 0) {\n          const invalidItems = sortingOrder.filter((a) => !DEFAULT_SORTING_ORDER.includes(a));\n          if (invalidItems.length > 0) {\n            return `sortingOrder must be an array with elements from [${DEFAULT_SORTING_ORDER.map(toStringWithNullUndefined).join()}], currently it includes [${invalidItems.map(toStringWithNullUndefined).join()}]`;\n          }\n        } else if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n          return `sortingOrder must be an array with at least one element, currently it's ${sortingOrder}`;\n        }\n        return null;\n      }\n    },\n    tooltipHideDelay: {\n      validate: (options) => {\n        if (options.tooltipHideDelay && options.tooltipHideDelay < 0) {\n          return \"tooltipHideDelay should not be lower than 0\";\n        }\n        return null;\n      }\n    },\n    tooltipShowDelay: {\n      validate: (options) => {\n        if (options.tooltipShowDelay && options.tooltipShowDelay < 0) {\n          return \"tooltipShowDelay should not be lower than 0\";\n        }\n        return null;\n      }\n    },\n    treeData: {\n      supportedRowModels: [\"clientSide\", \"serverSide\"],\n      validate: (options) => {\n        const rowModel = options.rowModelType ?? \"clientSide\";\n        switch (rowModel) {\n          case \"clientSide\": {\n            const { treeDataChildrenField, treeDataParentIdField, getDataPath, getRowId } = options;\n            if (!treeDataChildrenField && !treeDataParentIdField && !getDataPath) {\n              return \"treeData requires either 'treeDataChildrenField' or 'treeDataParentIdField' or 'getDataPath' in the clientSide row model.\";\n            }\n            if (treeDataChildrenField) {\n              if (getDataPath) {\n                return \"Cannot use both 'treeDataChildrenField' and 'getDataPath' at the same time.\";\n              }\n              if (treeDataParentIdField) {\n                return \"Cannot use both 'treeDataChildrenField' and 'treeDataParentIdField' at the same time.\";\n              }\n            }\n            if (treeDataParentIdField) {\n              if (!getRowId) {\n                return \"getRowId callback not provided, tree data with parent id cannot be built.\";\n              }\n              if (getDataPath) {\n                return \"Cannot use both 'treeDataParentIdField' and 'getDataPath' at the same time.\";\n              }\n            }\n            return null;\n          }\n          case \"serverSide\": {\n            const ssrmWarning = `treeData requires 'isServerSideGroup' and 'getServerSideGroupKey' in the ${rowModel} row model.`;\n            return options.isServerSideGroup && options.getServerSideGroupKey ? null : ssrmWarning;\n          }\n        }\n        return null;\n      }\n    },\n    viewportDatasource: {\n      supportedRowModels: [\"viewport\"]\n    },\n    viewportRowModelBufferSize: {\n      validate({ viewportRowModelBufferSize }) {\n        return toConstrainedNum(\"viewportRowModelBufferSize\", viewportRowModelBufferSize, 0);\n      }\n    },\n    viewportRowModelPageSize: {\n      validate({ viewportRowModelPageSize }) {\n        return toConstrainedNum(\"viewportRowModelPageSize\", viewportRowModelPageSize, 1);\n      }\n    },\n    rowDragEntireRow: {\n      dependencies: {\n        cellSelection: { required: [void 0] }\n      }\n    },\n    autoGroupColumnDef: {\n      validate({ autoGroupColumnDef, showOpenedGroup }) {\n        if (autoGroupColumnDef?.field && showOpenedGroup) {\n          return \"autoGroupColumnDef.field and showOpenedGroup are not supported when used together.\";\n        }\n        if (autoGroupColumnDef?.valueGetter && showOpenedGroup) {\n          return \"autoGroupColumnDef.valueGetter and showOpenedGroup are not supported when used together.\";\n        }\n        return null;\n      }\n    }\n  };\n  const validations = {};\n  _BOOLEAN_GRID_OPTIONS.forEach((key) => {\n    validations[key] = { expectedType: \"boolean\" };\n  });\n  _NUMBER_GRID_OPTIONS.forEach((key) => {\n    validations[key] = { expectedType: \"number\" };\n  });\n  _mergeDeep(validations, definedValidations);\n  return validations;\n};\nvar GRID_OPTIONS_VALIDATORS = () => ({\n  objectName: \"gridOptions\",\n  allProperties: [..._GET_ALL_GRID_OPTIONS(), ..._GET_ALL_EVENTS().map((event) => _getCallbackForEvent(event))],\n  propertyExceptions: [\"api\"],\n  docsUrl: \"grid-options/\",\n  deprecations: GRID_OPTION_DEPRECATIONS(),\n  validations: GRID_OPTION_VALIDATIONS()\n});\n\n// packages/ag-grid-community/src/gridOptionsService.ts\nvar changeSetId = 0;\nvar gridInstanceSequence = 0;\nvar GridOptionsService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"gos\";\n    this.domDataKey = \"__AG_\" + Math.random().toString();\n    /** This is only used for the main DOM element */\n    this.gridInstanceId = gridInstanceSequence++;\n    // Used to hold user events until the grid is ready\n    // Required to support React 19 StrictMode. See IFrameworkOverrides.runWhenReadyAsync but also is likely a good idea that onGridReady is the first event fired.\n    this.gridReadyFired = false;\n    this.queueEvents = [];\n    this.propEventSvc = new LocalEventService();\n    // responsible for calling the onXXX functions on gridOptions\n    // It forces events defined in GridOptionsService.alwaysSyncGlobalEvents to be fired synchronously.\n    // This is required for events such as GridPreDestroyed.\n    // Other events can be fired asynchronously or synchronously depending on config.\n    this.globalEventHandlerFactory = (restrictToSyncOnly) => {\n      return (eventName, event) => {\n        if (!this.isAlive()) {\n          return;\n        }\n        const alwaysSync = ALWAYS_SYNC_GLOBAL_EVENTS.has(eventName);\n        if (alwaysSync && !restrictToSyncOnly || !alwaysSync && restrictToSyncOnly) {\n          return;\n        }\n        const fireEvent = (name, e) => {\n          const eventHandler = this.gridOptions[_getCallbackForEvent(name)];\n          if (typeof eventHandler === \"function\") {\n            this.beans.frameworkOverrides.wrapOutgoing(() => eventHandler(e));\n          }\n        };\n        if (this.gridReadyFired) {\n          fireEvent(eventName, event);\n        } else {\n          if (eventName === \"gridReady\") {\n            fireEvent(eventName, event);\n            this.gridReadyFired = true;\n            for (const q of this.queueEvents) {\n              fireEvent(q.eventName, q.event);\n            }\n            this.queueEvents = [];\n          } else {\n            this.queueEvents.push({ eventName, event });\n          }\n        }\n      };\n    };\n  }\n  wireBeans(beans) {\n    this.gridOptions = beans.gridOptions;\n    this.validation = beans.validation;\n    this.api = beans.gridApi;\n    this.gridId = beans.context.getGridId();\n  }\n  // This is quicker then having code call gridOptionsService.get('context')\n  get gridOptionsContext() {\n    return this.gridOptions[\"context\"];\n  }\n  postConstruct() {\n    this.validateGridOptions(this.gridOptions);\n    this.eventSvc.addGlobalListener(this.globalEventHandlerFactory().bind(this), true);\n    this.eventSvc.addGlobalListener(this.globalEventHandlerFactory(true).bind(this), false);\n    this.propEventSvc.setFrameworkOverrides(this.beans.frameworkOverrides);\n    this.addManagedEventListeners({\n      gridOptionsChanged: ({ options }) => {\n        this.updateGridOptions({ options, force: true, source: \"gridOptionsUpdated\" });\n      }\n    });\n  }\n  destroy() {\n    super.destroy();\n    this.queueEvents = [];\n  }\n  /**\n   * Get the raw value of the GridOptions property provided.\n   * @param property\n   */\n  get(property) {\n    return this.gridOptions[property] ?? GRID_OPTION_DEFAULTS[property];\n  }\n  /**\n   * Get the GridOption callback but wrapped so that the common params of api and context are automatically applied to the params.\n   * @param property GridOption callback properties based on the fact that this property has a callback with params extending AgGridCommon\n   */\n  getCallback(property) {\n    return this.mergeGridCommonParams(this.gridOptions[property]);\n  }\n  /**\n   * Returns `true` if a value has been specified for this GridOption.\n   * @param property GridOption property\n   */\n  exists(property) {\n    return _exists(this.gridOptions[property]);\n  }\n  /**\n   * Wrap the user callback and attach the api and context to the params object on the way through.\n   * @param callback User provided callback\n   * @returns Wrapped callback where the params object not require api and context\n   */\n  mergeGridCommonParams(callback) {\n    if (callback) {\n      const wrapped = (callbackParams) => {\n        return callback(this.addGridCommonParams(callbackParams));\n      };\n      return wrapped;\n    }\n    return callback;\n  }\n  updateGridOptions({\n    options,\n    force,\n    source = \"api\"\n  }) {\n    const changeSet = { id: changeSetId++, properties: [] };\n    const events = [];\n    const { gridOptions, validation: validation2 } = this;\n    for (const key of Object.keys(options)) {\n      const value = options[key];\n      validation2?.warnOnInitialPropertyUpdate(source, key);\n      const shouldForce = force || typeof value === \"object\" && source === \"api\";\n      const previousValue = gridOptions[key];\n      if (shouldForce || previousValue !== value) {\n        gridOptions[key] = value;\n        const event = {\n          type: key,\n          currentValue: value,\n          previousValue,\n          changeSet,\n          source\n        };\n        events.push(event);\n      }\n    }\n    this.validateGridOptions(this.gridOptions);\n    changeSet.properties = events.map((event) => event.type);\n    events.forEach((event) => {\n      _logIfDebug(this, `Updated property ${event.type} from`, event.previousValue, ` to `, event.currentValue);\n      this.propEventSvc.dispatchEvent(event);\n    });\n  }\n  addPropertyEventListener(key, listener) {\n    this.propEventSvc.addEventListener(key, listener);\n  }\n  removePropertyEventListener(key, listener) {\n    this.propEventSvc.removeEventListener(key, listener);\n  }\n  getDomDataKey() {\n    return this.domDataKey;\n  }\n  /** Prefer _addGridCommonParams from gridOptionsUtils for bundle size savings */\n  addGridCommonParams(params) {\n    params.api = this.api;\n    params.context = this.gridOptionsContext;\n    return params;\n  }\n  validateOptions(options, modValidations) {\n    for (const key of Object.keys(options)) {\n      const value = options[key];\n      if (value == null || value === false) {\n        continue;\n      }\n      let moduleToCheck = modValidations[key];\n      if (typeof moduleToCheck === \"function\") {\n        moduleToCheck = moduleToCheck(options, this.gridOptions, this.beans);\n      }\n      if (moduleToCheck) {\n        this.assertModuleRegistered(moduleToCheck, key);\n      }\n    }\n  }\n  validateGridOptions(gridOptions) {\n    this.validateOptions(gridOptions, GRID_OPTIONS_MODULES);\n    this.validation?.processGridOptions(gridOptions);\n  }\n  validateColDef(colDef, colId, skipInferenceCheck) {\n    if (skipInferenceCheck || !this.beans.dataTypeSvc?.isColPendingInference(colId)) {\n      this.validateOptions(colDef, COLUMN_DEFINITION_MOD_VALIDATIONS);\n      this.validation?.validateColDef(colDef);\n    }\n  }\n  assertModuleRegistered(moduleName, reasonOrId) {\n    const registered = Array.isArray(moduleName) ? moduleName.some((modName) => this.isModuleRegistered(modName)) : this.isModuleRegistered(moduleName);\n    if (!registered) {\n      _error(200, {\n        ...this.getModuleErrorParams(),\n        moduleName,\n        reasonOrId\n      });\n    }\n    return registered;\n  }\n  getModuleErrorParams() {\n    return {\n      gridId: this.gridId,\n      gridScoped: _areModulesGridScoped(),\n      rowModelType: this.get(\"rowModelType\"),\n      isUmd: _isUmd()\n    };\n  }\n  isModuleRegistered(moduleName) {\n    return _isModuleRegistered(moduleName, this.gridId, this.get(\"rowModelType\"));\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/column/headerComp.ts\nfunction getHeaderCompElementParams(includeSortIndicator) {\n  const hiddenAttrs = { \"aria-hidden\": \"true\" };\n  return {\n    tag: \"div\",\n    cls: \"ag-cell-label-container\",\n    role: \"presentation\",\n    children: [\n      {\n        tag: \"span\",\n        ref: \"eMenu\",\n        cls: \"ag-header-icon ag-header-cell-menu-button\",\n        attrs: hiddenAttrs\n      },\n      {\n        tag: \"span\",\n        ref: \"eFilterButton\",\n        cls: \"ag-header-icon ag-header-cell-filter-button\",\n        attrs: hiddenAttrs\n      },\n      {\n        tag: \"div\",\n        ref: \"eLabel\",\n        cls: \"ag-header-cell-label\",\n        role: \"presentation\",\n        children: [\n          { tag: \"span\", ref: \"eText\", cls: \"ag-header-cell-text\" },\n          {\n            tag: \"span\",\n            ref: \"eFilter\",\n            cls: \"ag-header-icon ag-header-label-icon ag-filter-icon\",\n            attrs: hiddenAttrs\n          },\n          includeSortIndicator ? { tag: \"ag-sort-indicator\", ref: \"eSortIndicator\" } : null\n        ]\n      }\n    ]\n  };\n}\nvar HeaderCompElement = getHeaderCompElementParams(true);\nvar HeaderCompElementNoSort = getHeaderCompElementParams(false);\nvar HeaderComp = class extends Component {\n  constructor() {\n    super(...arguments);\n    // All the elements are optional, as they are not guaranteed to be present if the user provides a custom template\n    this.eFilter = RefPlaceholder;\n    this.eFilterButton = RefPlaceholder;\n    this.eSortIndicator = RefPlaceholder;\n    this.eMenu = RefPlaceholder;\n    this.eLabel = RefPlaceholder;\n    this.eText = RefPlaceholder;\n    /**\n     * Selectors for custom headers templates, i.e when the ag-sort-indicator is not present.\n     */\n    this.eSortOrder = RefPlaceholder;\n    this.eSortAsc = RefPlaceholder;\n    this.eSortDesc = RefPlaceholder;\n    this.eSortMixed = RefPlaceholder;\n    this.eSortNone = RefPlaceholder;\n    this.isLoadingInnerComponent = false;\n  }\n  refresh(params) {\n    const oldParams = this.params;\n    this.params = params;\n    if (this.workOutTemplate(params, !!this.beans?.sortSvc) != this.currentTemplate || this.workOutShowMenu() != this.currentShowMenu || params.enableSorting != this.currentSort || this.currentSuppressMenuHide != null && this.shouldSuppressMenuHide() != this.currentSuppressMenuHide || oldParams.enableFilterButton != params.enableFilterButton || oldParams.enableFilterIcon != params.enableFilterIcon) {\n      return false;\n    }\n    if (this.innerHeaderComponent) {\n      const mergedParams = { ...params };\n      _mergeDeep(mergedParams, params.innerHeaderComponentParams);\n      this.innerHeaderComponent.refresh?.(mergedParams);\n    } else {\n      this.setDisplayName(params);\n    }\n    return true;\n  }\n  workOutTemplate(params, isSorting) {\n    const paramsTemplate = params.template;\n    if (paramsTemplate) {\n      return paramsTemplate?.trim ? paramsTemplate.trim() : paramsTemplate;\n    } else {\n      return isSorting ? HeaderCompElement : HeaderCompElementNoSort;\n    }\n  }\n  init(params) {\n    this.params = params;\n    const { sortSvc, touchSvc, rowNumbersSvc, userCompFactory } = this.beans;\n    const sortComp = sortSvc?.getSortIndicatorSelector();\n    this.currentTemplate = this.workOutTemplate(params, !!sortComp);\n    this.setTemplate(this.currentTemplate, sortComp ? [sortComp] : void 0);\n    touchSvc?.setupForHeader(this);\n    this.setMenu();\n    this.setupSort();\n    rowNumbersSvc?.setupForHeader(this);\n    this.setupFilterIcon();\n    this.setupFilterButton();\n    this.workOutInnerHeaderComponent(userCompFactory, params);\n    this.setDisplayName(params);\n  }\n  workOutInnerHeaderComponent(userCompFactory, params) {\n    const userCompDetails = _getInnerHeaderCompDetails(userCompFactory, params, params);\n    if (!userCompDetails) {\n      return;\n    }\n    this.isLoadingInnerComponent = true;\n    userCompDetails.newAgStackInstance().then((comp) => {\n      this.isLoadingInnerComponent = false;\n      if (!comp) {\n        return;\n      }\n      if (this.isAlive()) {\n        this.innerHeaderComponent = comp;\n        if (this.eText) {\n          this.eText.appendChild(comp.getGui());\n        }\n      } else {\n        this.destroyBean(comp);\n      }\n    });\n  }\n  setDisplayName(params) {\n    const { displayName } = params;\n    const oldDisplayName = this.currentDisplayName;\n    this.currentDisplayName = displayName;\n    if (!this.eText || oldDisplayName === displayName || this.innerHeaderComponent || this.isLoadingInnerComponent) {\n      return;\n    }\n    this.eText.textContent = _toString(displayName);\n  }\n  addInIcon(iconName, eParent, column) {\n    const eIcon = _createIconNoSpan(iconName, this.beans, column);\n    if (eIcon) {\n      eParent.appendChild(eIcon);\n    }\n  }\n  workOutShowMenu() {\n    return this.params.enableMenu && !!this.beans.menuSvc?.isHeaderMenuButtonEnabled();\n  }\n  shouldSuppressMenuHide() {\n    return !!this.beans.menuSvc?.isHeaderMenuButtonAlwaysShowEnabled();\n  }\n  setMenu() {\n    if (!this.eMenu) {\n      return;\n    }\n    this.currentShowMenu = this.workOutShowMenu();\n    if (!this.currentShowMenu) {\n      _removeFromParent(this.eMenu);\n      this.eMenu = void 0;\n      return;\n    }\n    const { gos, eMenu, params } = this;\n    const isLegacyMenu = _isLegacyMenuEnabled(gos);\n    this.addInIcon(isLegacyMenu ? \"menu\" : \"menuAlt\", eMenu, params.column);\n    eMenu.classList.toggle(\"ag-header-menu-icon\", !isLegacyMenu);\n    const currentSuppressMenuHide = this.shouldSuppressMenuHide();\n    this.currentSuppressMenuHide = currentSuppressMenuHide;\n    this.addManagedElementListeners(eMenu, { click: () => this.showColumnMenu(this.eMenu) });\n    this.toggleMenuAlwaysShow(currentSuppressMenuHide);\n  }\n  toggleMenuAlwaysShow(alwaysShow) {\n    this.eMenu?.classList.toggle(\"ag-header-menu-always-show\", alwaysShow);\n  }\n  showColumnMenu(element) {\n    const { currentSuppressMenuHide, params } = this;\n    if (!currentSuppressMenuHide) {\n      this.toggleMenuAlwaysShow(true);\n    }\n    params.showColumnMenu(element, () => {\n      if (!currentSuppressMenuHide) {\n        this.toggleMenuAlwaysShow(false);\n      }\n    });\n  }\n  onMenuKeyboardShortcut(isFilterShortcut) {\n    const { params, gos, beans, eMenu, eFilterButton } = this;\n    const column = params.column;\n    const isLegacyMenuEnabled = _isLegacyMenuEnabled(gos);\n    if (isFilterShortcut && !isLegacyMenuEnabled) {\n      if (beans.menuSvc?.isFilterMenuInHeaderEnabled(column)) {\n        params.showFilter(eFilterButton ?? eMenu ?? this.getGui());\n        return true;\n      }\n    } else if (params.enableMenu) {\n      this.showColumnMenu(eMenu ?? eFilterButton ?? this.getGui());\n      return true;\n    }\n    return false;\n  }\n  setupSort() {\n    const { sortSvc } = this.beans;\n    if (!sortSvc) {\n      return;\n    }\n    const { enableSorting, column } = this.params;\n    this.currentSort = enableSorting;\n    if (!this.eSortIndicator) {\n      this.eSortIndicator = this.createBean(sortSvc.createSortIndicator(true));\n      const { eSortIndicator, eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone } = this;\n      eSortIndicator.attachCustomElements(eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone);\n    }\n    this.eSortIndicator.setupSort(column);\n    if (!this.currentSort) {\n      return;\n    }\n    sortSvc.setupHeader(this, column, this.eLabel);\n  }\n  setupFilterIcon() {\n    const { eFilter, params } = this;\n    if (!eFilter) {\n      return;\n    }\n    const onFilterChangedIcon = () => {\n      const filterPresent = params.column.isFilterActive();\n      _setDisplayed(eFilter, filterPresent, { skipAriaHidden: true });\n    };\n    this.configureFilter(params.enableFilterIcon, eFilter, onFilterChangedIcon, \"filterActive\");\n  }\n  setupFilterButton() {\n    const { eFilterButton, params } = this;\n    if (!eFilterButton) {\n      return;\n    }\n    const configured = this.configureFilter(\n      params.enableFilterButton,\n      eFilterButton,\n      this.onFilterChangedButton.bind(this),\n      \"filter\"\n    );\n    if (configured) {\n      this.addManagedElementListeners(eFilterButton, {\n        click: () => params.showFilter(eFilterButton)\n      });\n    } else {\n      this.eFilterButton = void 0;\n    }\n  }\n  configureFilter(enabled, element, filterChangedCallback, icon) {\n    if (!enabled) {\n      _removeFromParent(element);\n      return false;\n    }\n    const column = this.params.column;\n    this.addInIcon(icon, element, column);\n    this.addManagedListeners(column, { filterChanged: filterChangedCallback });\n    filterChangedCallback();\n    return true;\n  }\n  onFilterChangedButton() {\n    const filterPresent = this.params.column.isFilterActive();\n    this.eFilterButton.classList.toggle(\"ag-filter-active\", filterPresent);\n  }\n  getAnchorElementForMenu(isFilter) {\n    const { eFilterButton, eMenu } = this;\n    if (isFilter) {\n      return eFilterButton ?? eMenu ?? this.getGui();\n    }\n    return eMenu ?? eFilterButton ?? this.getGui();\n  }\n  destroy() {\n    super.destroy();\n    if (this.innerHeaderComponent) {\n      this.destroyBean(this.innerHeaderComponent);\n      this.innerHeaderComponent = void 0;\n    }\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/columnGroup/headerGroupComp.ts\nvar HeaderGroupCompElement = {\n  tag: \"div\",\n  cls: \"ag-header-group-cell-label\",\n  role: \"presentation\",\n  children: [\n    { tag: \"span\", ref: \"agLabel\", cls: \"ag-header-group-text\", role: \"presentation\" },\n    { tag: \"span\", ref: \"agOpened\", cls: `ag-header-icon ag-header-expand-icon ag-header-expand-icon-expanded` },\n    { tag: \"span\", ref: \"agClosed\", cls: `ag-header-icon ag-header-expand-icon ag-header-expand-icon-collapsed` }\n  ]\n};\nvar HeaderGroupComp = class extends Component {\n  constructor() {\n    super(HeaderGroupCompElement);\n    this.agOpened = RefPlaceholder;\n    this.agClosed = RefPlaceholder;\n    this.agLabel = RefPlaceholder;\n    this.isLoadingInnerComponent = false;\n  }\n  init(params) {\n    const { userCompFactory, touchSvc } = this.beans;\n    this.params = params;\n    this.checkWarnings();\n    this.workOutInnerHeaderGroupComponent(userCompFactory, params);\n    this.setupLabel(params);\n    this.addGroupExpandIcon(params);\n    this.setupExpandIcons();\n    touchSvc?.setupForHeaderGroup(this);\n  }\n  checkWarnings() {\n    const paramsAny = this.params;\n    if (paramsAny.template) {\n      _warn(89);\n    }\n  }\n  workOutInnerHeaderGroupComponent(userCompFactory, params) {\n    const userCompDetails = _getInnerHeaderGroupCompDetails(userCompFactory, params, params);\n    if (!userCompDetails) {\n      return;\n    }\n    this.isLoadingInnerComponent = true;\n    userCompDetails.newAgStackInstance().then((comp) => {\n      this.isLoadingInnerComponent = false;\n      if (!comp) {\n        return;\n      }\n      if (this.isAlive()) {\n        this.innerHeaderGroupComponent = comp;\n        this.agLabel.appendChild(comp.getGui());\n      } else {\n        this.destroyBean(comp);\n      }\n    });\n  }\n  setupExpandIcons() {\n    const {\n      agOpened,\n      agClosed,\n      params: { columnGroup },\n      beans\n    } = this;\n    this.addInIcon(\"columnGroupOpened\", agOpened);\n    this.addInIcon(\"columnGroupClosed\", agClosed);\n    const expandAction = (event) => {\n      if (_isStopPropagationForAgGrid(event)) {\n        return;\n      }\n      const newExpandedValue = !columnGroup.isExpanded();\n      beans.colGroupSvc.setColumnGroupOpened(\n        columnGroup.getProvidedColumnGroup(),\n        newExpandedValue,\n        \"uiColumnExpanded\"\n      );\n    };\n    this.addTouchAndClickListeners(beans, agClosed, expandAction);\n    this.addTouchAndClickListeners(beans, agOpened, expandAction);\n    const stopPropagationAction = (event) => {\n      _stopPropagationForAgGrid(event);\n    };\n    this.addManagedElementListeners(agClosed, { dblclick: stopPropagationAction });\n    this.addManagedElementListeners(agOpened, { dblclick: stopPropagationAction });\n    this.addManagedElementListeners(this.getGui(), { dblclick: expandAction });\n    this.updateIconVisibility();\n    const providedColumnGroup = columnGroup.getProvidedColumnGroup();\n    const updateIcon = this.updateIconVisibility.bind(this);\n    this.addManagedListeners(providedColumnGroup, {\n      expandedChanged: updateIcon,\n      expandableChanged: updateIcon\n    });\n  }\n  addTouchAndClickListeners(beans, eElement, action) {\n    beans.touchSvc?.setupForHeaderGroupElement(this, eElement, action);\n    this.addManagedElementListeners(eElement, { click: action });\n  }\n  updateIconVisibility() {\n    const {\n      agOpened,\n      agClosed,\n      params: { columnGroup }\n    } = this;\n    if (columnGroup.isExpandable()) {\n      const expanded = columnGroup.isExpanded();\n      _setDisplayed(agOpened, expanded);\n      _setDisplayed(agClosed, !expanded);\n    } else {\n      _setDisplayed(agOpened, false);\n      _setDisplayed(agClosed, false);\n    }\n  }\n  addInIcon(iconName, element) {\n    const eIcon = _createIconNoSpan(iconName, this.beans, null);\n    if (eIcon) {\n      element.appendChild(eIcon);\n    }\n  }\n  addGroupExpandIcon(params) {\n    if (!params.columnGroup.isExpandable()) {\n      const { agOpened, agClosed } = this;\n      _setDisplayed(agOpened, false);\n      _setDisplayed(agClosed, false);\n      return;\n    }\n  }\n  setupLabel(params) {\n    const { displayName, columnGroup } = params;\n    const hasInnerComponent = this.innerHeaderGroupComponent || this.isLoadingInnerComponent;\n    if (_exists(displayName) && !hasInnerComponent) {\n      this.agLabel.textContent = _toString(displayName);\n    }\n    this.toggleCss(\"ag-sticky-label\", !columnGroup.getColGroupDef()?.suppressStickyLabel);\n  }\n  destroy() {\n    super.destroy();\n    if (this.innerHeaderGroupComponent) {\n      this.destroyBean(this.innerHeaderGroupComponent);\n      this.innerHeaderGroupComponent = void 0;\n    }\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/headerModule.ts\nvar ColumnHeaderCompModule = {\n  moduleName: \"ColumnHeaderComp\",\n  version: VERSION,\n  userComponents: {\n    agColumnHeader: HeaderComp\n  },\n  icons: {\n    // button to launch legacy column menu\n    menu: \"menu\",\n    // button to launch new enterprise column menu\n    menuAlt: \"menu-alt\"\n  }\n};\nvar ColumnGroupHeaderCompModule = {\n  moduleName: \"ColumnGroupHeaderComp\",\n  version: VERSION,\n  userComponents: {\n    agColumnGroupHeader: HeaderGroupComp\n  },\n  icons: {\n    // header column group shown when expanded (click to contract)\n    columnGroupOpened: \"expanded\",\n    // header column group shown when contracted (click to expand)\n    columnGroupClosed: \"contracted\"\n  }\n};\n\n// packages/ag-grid-community/src/misc/animationFrameService.ts\nvar AnimationFrameService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"animationFrameSvc\";\n    // p1 and p2 are create tasks are to do with row and cell creation.\n    // for them we want to execute according to row order, so we use\n    // TaskItem so we know what index the item is for.\n    this.p1 = { list: [], sorted: false };\n    // eg drawing back-ground of rows\n    this.p2 = { list: [], sorted: false };\n    // eg cell renderers, adding hover functionality\n    this.f1 = { list: [], sorted: false };\n    // eg framework cell renderers\n    // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n    // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n    // important.\n    this.destroyTasks = [];\n    this.ticking = false;\n    // we need to know direction of scroll, to build up rows in the direction of\n    // the scroll. eg if user scrolls down, we extend the rows by building down.\n    this.scrollGoingDown = true;\n    this.lastScrollTop = 0;\n    this.taskCount = 0;\n  }\n  setScrollTop(scrollTop) {\n    this.scrollGoingDown = scrollTop >= this.lastScrollTop;\n    if (scrollTop === 0) {\n      this.scrollGoingDown = true;\n    }\n    this.lastScrollTop = scrollTop;\n  }\n  postConstruct() {\n    this.active = !this.gos.get(\"suppressAnimationFrame\");\n    this.batchFrameworkComps = this.beans.frameworkOverrides.batchFrameworkComps;\n  }\n  // this method is for our AG Grid sanity only - if animation frames are turned off,\n  // then no place in the code should be looking to add any work to be done in animation\n  // frames. this stops bugs - where some code is asking for a frame to be executed\n  // when it should not.\n  verify() {\n    if (this.active === false) {\n      _warn(92);\n    }\n  }\n  createTask(task, index, list, isFramework) {\n    this.verify();\n    let taskList = list;\n    if (isFramework && this.batchFrameworkComps) {\n      taskList = \"f1\";\n    }\n    const taskItem = { task, index, createOrder: ++this.taskCount };\n    this.addTaskToList(this[taskList], taskItem);\n    this.schedule();\n  }\n  addTaskToList(taskList, task) {\n    taskList.list.push(task);\n    taskList.sorted = false;\n  }\n  sortTaskList(taskList) {\n    if (taskList.sorted) {\n      return;\n    }\n    const sortDirection = this.scrollGoingDown ? 1 : -1;\n    taskList.list.sort(\n      (a, b) => a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder\n    );\n    taskList.sorted = true;\n  }\n  addDestroyTask(task) {\n    this.verify();\n    this.destroyTasks.push(task);\n    this.schedule();\n  }\n  executeFrame(millis) {\n    const { p1, p2, f1, destroyTasks, beans } = this;\n    const { ctrlsSvc, frameworkOverrides } = beans;\n    const p1Tasks = p1.list;\n    const p2Tasks = p2.list;\n    const f1Tasks = f1.list;\n    const frameStart = Date.now();\n    let duration = 0;\n    const noMaxMillis = millis <= 0;\n    const scrollFeature = ctrlsSvc.getScrollFeature();\n    while (noMaxMillis || duration < millis) {\n      const gridBodyDidSomething = scrollFeature.scrollGridIfNeeded();\n      if (!gridBodyDidSomething) {\n        let task;\n        if (p1Tasks.length) {\n          this.sortTaskList(p1);\n          task = p1Tasks.pop().task;\n        } else if (p2Tasks.length) {\n          this.sortTaskList(p2);\n          task = p2Tasks.pop().task;\n        } else if (f1Tasks.length) {\n          frameworkOverrides.wrapOutgoing(() => {\n            while (noMaxMillis || duration < millis) {\n              const gridBodyDidSomething2 = scrollFeature.scrollGridIfNeeded();\n              if (!gridBodyDidSomething2) {\n                if (f1Tasks.length) {\n                  this.sortTaskList(f1);\n                  task = f1Tasks.pop().task;\n                  task();\n                } else {\n                  break;\n                }\n              } else {\n                break;\n              }\n              duration = Date.now() - frameStart;\n            }\n          });\n          task = () => {\n          };\n        } else if (destroyTasks.length) {\n          task = destroyTasks.pop();\n        } else {\n          break;\n        }\n        task();\n      }\n      duration = Date.now() - frameStart;\n    }\n    if (p1Tasks.length || p2Tasks.length || f1Tasks.length || destroyTasks.length) {\n      this.requestFrame();\n    } else {\n      this.ticking = false;\n    }\n  }\n  flushAllFrames() {\n    if (!this.active) {\n      return;\n    }\n    this.executeFrame(-1);\n  }\n  schedule() {\n    if (!this.active) {\n      return;\n    }\n    if (!this.ticking) {\n      this.ticking = true;\n      this.requestFrame();\n    }\n  }\n  requestFrame() {\n    const callback = this.executeFrame.bind(this, 60);\n    _requestAnimationFrame(this.beans, callback);\n  }\n  isQueueEmpty() {\n    return !this.ticking;\n  }\n};\n\n// packages/ag-grid-community/src/misc/animationFrameModule.ts\nvar AnimationFrameModule = {\n  moduleName: \"AnimationFrame\",\n  version: VERSION,\n  beans: [AnimationFrameService]\n};\n\n// packages/ag-grid-community/src/misc/touchService.ts\nvar TouchService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"touchSvc\";\n  }\n  mockBodyContextMenu(ctrl, listener) {\n    this.mockContextMenu(ctrl, ctrl.eBodyViewport, listener);\n  }\n  mockHeaderContextMenu(ctrl, listener) {\n    this.mockContextMenu(ctrl, ctrl.eGui, listener);\n  }\n  mockRowContextMenu(ctrl) {\n    if (!_isIOSUserAgent()) {\n      return;\n    }\n    const listener = (mouseListener, touch, touchEvent) => {\n      const { rowCtrl, cellCtrl } = ctrl.getControlsForEventTarget(touchEvent?.target ?? null);\n      if (cellCtrl?.column) {\n        cellCtrl.dispatchCellContextMenuEvent(touchEvent ?? null);\n      }\n      this.beans.contextMenuSvc?.handleContextMenuMouseEvent(void 0, touchEvent, rowCtrl, cellCtrl);\n    };\n    this.mockContextMenu(ctrl, ctrl.element, listener);\n  }\n  handleCellDoubleClick(ctrl, mouseEvent) {\n    const isDoubleClickOnIPad = () => {\n      if (!_isIOSUserAgent() || _isEventSupported(\"dblclick\")) {\n        return false;\n      }\n      const nowMillis = Date.now();\n      const res = nowMillis - ctrl.lastIPadMouseClickEvent < 200;\n      ctrl.lastIPadMouseClickEvent = nowMillis;\n      return res;\n    };\n    if (isDoubleClickOnIPad()) {\n      ctrl.onCellDoubleClicked(mouseEvent);\n      mouseEvent.preventDefault();\n      return true;\n    }\n    return false;\n  }\n  setupForHeader(comp) {\n    const { gos, sortSvc, menuSvc } = this.beans;\n    if (gos.get(\"suppressTouch\")) {\n      return;\n    }\n    const { params, eMenu, eFilterButton } = comp;\n    const touchListener = new TouchListener(comp.getGui(), true);\n    const suppressMenuHide = comp.shouldSuppressMenuHide();\n    const tapMenuButton = suppressMenuHide && _exists(eMenu) && params.enableMenu;\n    const menuTouchListener = tapMenuButton ? new TouchListener(eMenu, true) : touchListener;\n    if (params.enableMenu || menuSvc?.isHeaderContextMenuEnabled(params.column)) {\n      const eventType = tapMenuButton ? \"tap\" : \"longTap\";\n      const showMenuFn = (event) => params.showColumnMenuAfterMouseClick(event.touchStart);\n      comp.addManagedListeners(menuTouchListener, { [eventType]: showMenuFn });\n    }\n    if (params.enableSorting) {\n      const tapListener = (event) => {\n        const target = event.touchStart.target;\n        if (suppressMenuHide && (eMenu?.contains(target) || eFilterButton?.contains(target))) {\n          return;\n        }\n        sortSvc?.progressSort(params.column, false, \"uiColumnSorted\");\n      };\n      comp.addManagedListeners(touchListener, { tap: tapListener });\n    }\n    if (params.enableFilterButton && eFilterButton) {\n      const filterButtonTouchListener = new TouchListener(eFilterButton, true);\n      comp.addManagedListeners(filterButtonTouchListener, {\n        tap: () => params.showFilter(eFilterButton)\n      });\n      comp.addDestroyFunc(() => filterButtonTouchListener.destroy());\n    }\n    comp.addDestroyFunc(() => touchListener.destroy());\n    if (tapMenuButton) {\n      comp.addDestroyFunc(() => menuTouchListener.destroy());\n    }\n  }\n  setupForHeaderGroup(comp) {\n    const params = comp.params;\n    if (this.beans.menuSvc?.isHeaderContextMenuEnabled(\n      params.columnGroup.getProvidedColumnGroup()\n    )) {\n      const touchListener = new TouchListener(params.eGridHeader, true);\n      const showMenuFn = (event) => params.showColumnMenuAfterMouseClick(event.touchStart);\n      comp.addManagedListeners(touchListener, { longTap: showMenuFn });\n      comp.addDestroyFunc(() => touchListener.destroy());\n    }\n  }\n  setupForHeaderGroupElement(comp, eElement, action) {\n    const touchListener = new TouchListener(eElement, true);\n    comp.addManagedListeners(touchListener, { tap: action });\n    comp.addDestroyFunc(() => touchListener.destroy());\n  }\n  mockContextMenu(ctrl, element, listener) {\n    if (!_isIOSUserAgent()) {\n      return;\n    }\n    const touchListener = new TouchListener(element);\n    const longTapListener = (event) => {\n      if (!_isEventFromThisGrid(this.gos, event.touchEvent)) {\n        return;\n      }\n      listener(void 0, event.touchStart, event.touchEvent);\n    };\n    ctrl.addManagedListeners(touchListener, { longTap: longTapListener });\n    ctrl.addDestroyFunc(() => touchListener.destroy());\n  }\n};\n\n// packages/ag-grid-community/src/misc/touchModule.ts\nvar TouchModule = {\n  moduleName: \"Touch\",\n  version: VERSION,\n  beans: [TouchService]\n};\n\n// packages/ag-grid-community/src/navigation/cellNavigationService.ts\nvar CellNavigationService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"cellNavigation\";\n  }\n  wireBeans(beans) {\n    this.rowSpanSvc = beans.rowSpanSvc;\n  }\n  // returns null if no cell to focus on, ie at the end of the grid\n  getNextCellToFocus(key, focusedCell, ctrlPressed = false) {\n    if (ctrlPressed) {\n      return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);\n    }\n    return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);\n  }\n  getNextCellToFocusWithCtrlPressed(key, focusedCell) {\n    const upKey = key === KeyCode.UP;\n    const downKey = key === KeyCode.DOWN;\n    const leftKey = key === KeyCode.LEFT;\n    let column;\n    let rowIndex;\n    const { pageBounds, gos, visibleCols } = this.beans;\n    if (upKey || downKey) {\n      rowIndex = upKey ? pageBounds.getFirstRow() : pageBounds.getLastRow();\n      column = focusedCell.column;\n    } else {\n      const isRtl = gos.get(\"enableRtl\");\n      rowIndex = focusedCell.rowIndex;\n      const allColumns = leftKey !== isRtl ? visibleCols.allCols : [...visibleCols.allCols].reverse();\n      column = allColumns.find(\n        (col) => this.isCellGoodToFocusOn({\n          rowIndex,\n          rowPinned: null,\n          column: col\n        })\n      );\n    }\n    return column ? {\n      rowIndex,\n      rowPinned: null,\n      column\n    } : null;\n  }\n  getNextCellToFocusWithoutCtrlPressed(key, focusedCell) {\n    let pointer = focusedCell;\n    let finished = false;\n    while (!finished) {\n      switch (key) {\n        case KeyCode.UP:\n          pointer = this.getCellAbove(pointer);\n          break;\n        case KeyCode.DOWN:\n          pointer = this.getCellBelow(pointer);\n          break;\n        case KeyCode.RIGHT:\n          pointer = this.gos.get(\"enableRtl\") ? this.getCellToLeft(pointer) : this.getCellToRight(pointer);\n          break;\n        case KeyCode.LEFT:\n          pointer = this.gos.get(\"enableRtl\") ? this.getCellToRight(pointer) : this.getCellToLeft(pointer);\n          break;\n        default:\n          pointer = null;\n          _warn(8, { key });\n          break;\n      }\n      if (pointer) {\n        finished = this.isCellGoodToFocusOn(pointer);\n      } else {\n        finished = true;\n      }\n    }\n    return pointer;\n  }\n  isCellGoodToFocusOn(gridCell) {\n    const column = gridCell.column;\n    let rowNode;\n    const { pinnedRowModel, rowModel } = this.beans;\n    switch (gridCell.rowPinned) {\n      case \"top\":\n        rowNode = pinnedRowModel?.getPinnedTopRow(gridCell.rowIndex);\n        break;\n      case \"bottom\":\n        rowNode = pinnedRowModel?.getPinnedBottomRow(gridCell.rowIndex);\n        break;\n      default:\n        rowNode = rowModel.getRow(gridCell.rowIndex);\n        break;\n    }\n    if (!rowNode) {\n      return false;\n    }\n    const suppressNavigable = this.isSuppressNavigable(column, rowNode);\n    return !suppressNavigable;\n  }\n  getCellToLeft(lastCell) {\n    if (!lastCell) {\n      return null;\n    }\n    const colToLeft = this.beans.visibleCols.getColBefore(lastCell.column);\n    if (!colToLeft) {\n      return null;\n    }\n    return {\n      rowIndex: lastCell.rowIndex,\n      column: colToLeft,\n      rowPinned: lastCell.rowPinned\n    };\n  }\n  getCellToRight(lastCell) {\n    if (!lastCell) {\n      return null;\n    }\n    const colToRight = this.beans.visibleCols.getColAfter(lastCell.column);\n    if (!colToRight) {\n      return null;\n    }\n    return {\n      rowIndex: lastCell.rowIndex,\n      column: colToRight,\n      rowPinned: lastCell.rowPinned\n    };\n  }\n  getCellBelow(lastCell) {\n    if (!lastCell) {\n      return null;\n    }\n    const adjustedLastCell = this.rowSpanSvc?.getCellEnd(lastCell) ?? lastCell;\n    const rowBelow = _getRowBelow(this.beans, adjustedLastCell);\n    if (rowBelow) {\n      return {\n        rowIndex: rowBelow.rowIndex,\n        column: lastCell.column,\n        rowPinned: rowBelow.rowPinned\n      };\n    }\n    return null;\n  }\n  getCellAbove(lastCell) {\n    if (!lastCell) {\n      return null;\n    }\n    const adjustedLastCell = this.rowSpanSvc?.getCellStart(lastCell) ?? lastCell;\n    const rowAbove = _getRowAbove(this.beans, {\n      rowIndex: adjustedLastCell.rowIndex,\n      rowPinned: adjustedLastCell.rowPinned\n    });\n    if (rowAbove) {\n      return {\n        rowIndex: rowAbove.rowIndex,\n        column: lastCell.column,\n        rowPinned: rowAbove.rowPinned\n      };\n    }\n    return null;\n  }\n  getNextTabbedCell(gridCell, backwards) {\n    if (backwards) {\n      return this.getNextTabbedCellBackwards(gridCell);\n    }\n    return this.getNextTabbedCellForwards(gridCell);\n  }\n  getNextTabbedCellForwards(gridCell) {\n    const { visibleCols, pagination } = this.beans;\n    const displayedColumns = visibleCols.allCols;\n    let newRowIndex = gridCell.rowIndex;\n    let newFloating = gridCell.rowPinned;\n    let newColumn = visibleCols.getColAfter(gridCell.column);\n    if (!newColumn) {\n      newColumn = displayedColumns[0];\n      const rowBelow = _getRowBelow(this.beans, gridCell);\n      if (_missing(rowBelow)) {\n        return null;\n      }\n      if (!rowBelow.rowPinned && !(pagination?.isRowInPage(rowBelow.rowIndex) ?? true)) {\n        return null;\n      }\n      newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n      newFloating = rowBelow ? rowBelow.rowPinned : null;\n    }\n    return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n  }\n  getNextTabbedCellBackwards(gridCell) {\n    const { beans } = this;\n    const { visibleCols, pagination } = beans;\n    const displayedColumns = visibleCols.allCols;\n    let newRowIndex = gridCell.rowIndex;\n    let newFloating = gridCell.rowPinned;\n    let newColumn = visibleCols.getColBefore(gridCell.column);\n    if (!newColumn) {\n      newColumn = _last(displayedColumns);\n      const rowAbove = _getRowAbove(beans, { rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n      if (_missing(rowAbove)) {\n        return null;\n      }\n      if (!rowAbove.rowPinned && !(pagination?.isRowInPage(rowAbove.rowIndex) ?? true)) {\n        return null;\n      }\n      newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n      newFloating = rowAbove ? rowAbove.rowPinned : null;\n    }\n    return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n  }\n  isSuppressNavigable(column, rowNode) {\n    const { suppressNavigable } = column.colDef;\n    if (typeof suppressNavigable === \"boolean\") {\n      return suppressNavigable;\n    }\n    if (typeof suppressNavigable === \"function\") {\n      const params = column.createColumnFunctionCallbackParams(rowNode);\n      const userFunc = suppressNavigable;\n      return userFunc(params);\n    }\n    return false;\n  }\n};\n\n// packages/ag-grid-community/src/navigation/navigationApi.ts\nfunction getFocusedCell(beans) {\n  return beans.focusSvc.getFocusedCell();\n}\nfunction clearFocusedCell(beans) {\n  return beans.focusSvc.clearFocusedCell();\n}\nfunction setFocusedCell(beans, rowIndex, colKey, rowPinned) {\n  beans.focusSvc.setFocusedCell({ rowIndex, column: colKey, rowPinned, forceBrowserFocus: true });\n}\nfunction tabToNextCell(beans, event) {\n  return beans.navigation?.tabToNextCell(false, event) ?? false;\n}\nfunction tabToPreviousCell(beans, event) {\n  return beans.navigation?.tabToNextCell(true, event) ?? false;\n}\nfunction setFocusedHeader(beans, colKey, floatingFilter = false) {\n  const headerPosition = beans.headerNavigation?.getHeaderPositionForColumn(colKey, floatingFilter);\n  if (!headerPosition) {\n    return;\n  }\n  beans.focusSvc.focusHeaderPosition({ headerPosition });\n}\n\n// packages/ag-grid-community/src/navigation/navigationService.ts\nvar NavigationService = class extends BeanStub {\n  constructor() {\n    super();\n    this.beanName = \"navigation\";\n    this.onPageDown = _throttle(this.onPageDown, 100);\n    this.onPageUp = _throttle(this.onPageUp, 100);\n  }\n  postConstruct() {\n    this.beans.ctrlsSvc.whenReady(this, (p) => {\n      this.gridBodyCon = p.gridBodyCtrl;\n    });\n  }\n  handlePageScrollingKey(event, fromFullWidth = false) {\n    const key = event.key;\n    const alt = event.altKey;\n    const ctrl = event.ctrlKey || event.metaKey;\n    const rangeServiceShouldHandleShift = !!this.beans.rangeSvc && event.shiftKey;\n    const currentCell = _getCellPositionForEvent(this.gos, event);\n    let processed = false;\n    switch (key) {\n      case KeyCode.PAGE_HOME:\n      case KeyCode.PAGE_END:\n        if (!ctrl && !alt) {\n          this.onHomeOrEndKey(key);\n          processed = true;\n        }\n        break;\n      case KeyCode.LEFT:\n      case KeyCode.RIGHT:\n      case KeyCode.UP:\n      case KeyCode.DOWN:\n        if (!currentCell) {\n          return false;\n        }\n        if (ctrl && !alt && !rangeServiceShouldHandleShift) {\n          this.onCtrlUpDownLeftRight(key, currentCell);\n          processed = true;\n        }\n        break;\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n        if (!ctrl && !alt) {\n          processed = this.handlePageUpDown(key, currentCell, fromFullWidth);\n        }\n        break;\n    }\n    if (processed) {\n      event.preventDefault();\n    }\n    return processed;\n  }\n  handlePageUpDown(key, currentCell, fromFullWidth) {\n    if (fromFullWidth) {\n      currentCell = this.beans.focusSvc.getFocusedCell();\n    }\n    if (!currentCell) {\n      return false;\n    }\n    if (key === KeyCode.PAGE_UP) {\n      this.onPageUp(currentCell);\n    } else {\n      this.onPageDown(currentCell);\n    }\n    return true;\n  }\n  navigateTo(navigateParams) {\n    const { scrollIndex, scrollType, scrollColumn, focusIndex, focusColumn } = navigateParams;\n    const { scrollFeature } = this.gridBodyCon;\n    if (_exists(scrollColumn) && !scrollColumn.isPinned()) {\n      scrollFeature.ensureColumnVisible(scrollColumn);\n    }\n    if (_exists(scrollIndex)) {\n      scrollFeature.ensureIndexVisible(scrollIndex, scrollType);\n    }\n    if (!navigateParams.isAsync) {\n      scrollFeature.ensureIndexVisible(focusIndex);\n    }\n    const { focusSvc, rangeSvc } = this.beans;\n    focusSvc.setFocusedCell({\n      rowIndex: focusIndex,\n      column: focusColumn,\n      rowPinned: null,\n      forceBrowserFocus: true\n    });\n    rangeSvc?.setRangeToCell({ rowIndex: focusIndex, rowPinned: null, column: focusColumn });\n  }\n  // this method is throttled, see the `constructor`\n  onPageDown(gridCell) {\n    const beans = this.beans;\n    const scrollPosition = getVScroll(beans);\n    const pixelsInOnePage = this.getViewportHeight();\n    const { pageBounds, rowModel, rowAutoHeight } = beans;\n    const pagingPixelOffset = pageBounds.getPixelOffset();\n    const currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n    const currentPageBottomRow = rowModel.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n    if (rowAutoHeight?.active) {\n      this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);\n    } else {\n      this.navigateToNextPage(gridCell, currentPageBottomRow);\n    }\n  }\n  // this method is throttled, see the `constructor`\n  onPageUp(gridCell) {\n    const beans = this.beans;\n    const scrollPosition = getVScroll(beans);\n    const { pageBounds, rowModel, rowAutoHeight } = beans;\n    const pagingPixelOffset = pageBounds.getPixelOffset();\n    const currentPageTopPixel = scrollPosition.top;\n    const currentPageTopRow = rowModel.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n    if (rowAutoHeight?.active) {\n      this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);\n    } else {\n      this.navigateToNextPage(gridCell, currentPageTopRow, true);\n    }\n  }\n  navigateToNextPage(gridCell, scrollIndex, up = false) {\n    const { pageBounds, rowModel } = this.beans;\n    const pixelsInOnePage = this.getViewportHeight();\n    const firstRow = pageBounds.getFirstRow();\n    const lastRow = pageBounds.getLastRow();\n    const pagingPixelOffset = pageBounds.getPixelOffset();\n    const currentRowNode = rowModel.getRow(gridCell.rowIndex);\n    const rowPixelDiff = up ? (\n      // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n      currentRowNode?.rowHeight - pixelsInOnePage - pagingPixelOffset\n    ) : pixelsInOnePage - pagingPixelOffset;\n    const nextCellPixel = currentRowNode?.rowTop + rowPixelDiff;\n    let focusIndex = rowModel.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n    if (focusIndex === gridCell.rowIndex) {\n      const diff = up ? -1 : 1;\n      scrollIndex = focusIndex = gridCell.rowIndex + diff;\n    }\n    let scrollType;\n    if (up) {\n      scrollType = \"bottom\";\n      if (focusIndex < firstRow) {\n        focusIndex = firstRow;\n      }\n      if (scrollIndex < firstRow) {\n        scrollIndex = firstRow;\n      }\n    } else {\n      scrollType = \"top\";\n      if (focusIndex > lastRow) {\n        focusIndex = lastRow;\n      }\n      if (scrollIndex > lastRow) {\n        scrollIndex = lastRow;\n      }\n    }\n    if (this.isRowTallerThanView(rowModel.getRow(focusIndex))) {\n      scrollIndex = focusIndex;\n      scrollType = \"top\";\n    }\n    this.navigateTo({\n      scrollIndex,\n      scrollType,\n      scrollColumn: null,\n      focusIndex,\n      focusColumn: gridCell.column\n    });\n  }\n  navigateToNextPageWithAutoHeight(gridCell, scrollIndex, up = false) {\n    this.navigateTo({\n      scrollIndex,\n      scrollType: up ? \"bottom\" : \"top\",\n      scrollColumn: null,\n      focusIndex: scrollIndex,\n      focusColumn: gridCell.column\n    });\n    setTimeout(() => {\n      const focusIndex = this.getNextFocusIndexForAutoHeight(gridCell, up);\n      this.navigateTo({\n        scrollIndex,\n        scrollType: up ? \"bottom\" : \"top\",\n        scrollColumn: null,\n        focusIndex,\n        focusColumn: gridCell.column,\n        isAsync: true\n      });\n    }, 50);\n  }\n  getNextFocusIndexForAutoHeight(gridCell, up = false) {\n    const step = up ? -1 : 1;\n    const pixelsInOnePage = this.getViewportHeight();\n    const { pageBounds, rowModel } = this.beans;\n    const lastRowIndex = pageBounds.getLastRow();\n    let pixelSum = 0;\n    let currentIndex = gridCell.rowIndex;\n    while (currentIndex >= 0 && currentIndex <= lastRowIndex) {\n      const currentCell = rowModel.getRow(currentIndex);\n      if (currentCell) {\n        const currentCellHeight = currentCell.rowHeight ?? 0;\n        if (pixelSum + currentCellHeight > pixelsInOnePage) {\n          break;\n        }\n        pixelSum += currentCellHeight;\n      }\n      currentIndex += step;\n    }\n    return Math.max(0, Math.min(currentIndex, lastRowIndex));\n  }\n  getViewportHeight() {\n    const beans = this.beans;\n    const scrollPosition = getVScroll(beans);\n    const scrollbarWidth = this.beans.scrollVisibleSvc.getScrollbarWidth();\n    let pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n    if (beans.ctrlsSvc.get(\"center\").isHorizontalScrollShowing()) {\n      pixelsInOnePage -= scrollbarWidth;\n    }\n    return pixelsInOnePage;\n  }\n  isRowTallerThanView(rowNode) {\n    if (!rowNode) {\n      return false;\n    }\n    const rowHeight = rowNode.rowHeight;\n    if (typeof rowHeight !== \"number\") {\n      return false;\n    }\n    return rowHeight > this.getViewportHeight();\n  }\n  onCtrlUpDownLeftRight(key, gridCell) {\n    const cellToFocus = this.beans.cellNavigation.getNextCellToFocus(key, gridCell, true);\n    const { rowIndex } = cellToFocus;\n    const column = cellToFocus.column;\n    this.navigateTo({\n      scrollIndex: rowIndex,\n      scrollType: null,\n      scrollColumn: column,\n      focusIndex: rowIndex,\n      focusColumn: column\n    });\n  }\n  // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n  // same cell into view (which means either scroll all the way up, or all the way down).\n  onHomeOrEndKey(key) {\n    const homeKey = key === KeyCode.PAGE_HOME;\n    const { visibleCols, pageBounds, rowModel } = this.beans;\n    const allColumns = visibleCols.allCols;\n    const scrollIndex = homeKey ? pageBounds.getFirstRow() : pageBounds.getLastRow();\n    const rowNode = rowModel.getRow(scrollIndex);\n    if (!rowNode) {\n      return;\n    }\n    const columnToSelect = (homeKey ? allColumns : [...allColumns].reverse()).find(\n      (col) => !col.isSuppressNavigable(rowNode)\n    );\n    if (!columnToSelect) {\n      return;\n    }\n    this.navigateTo({\n      scrollIndex,\n      scrollType: null,\n      scrollColumn: columnToSelect,\n      focusIndex: scrollIndex,\n      focusColumn: columnToSelect\n    });\n  }\n  // result of keyboard event\n  onTabKeyDown(previous, keyboardEvent) {\n    const backwards = keyboardEvent.shiftKey;\n    const movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);\n    const beans = this.beans;\n    const { ctrlsSvc, pageBounds, focusSvc, gos } = beans;\n    if (movedToNextCell !== false) {\n      if (movedToNextCell) {\n        keyboardEvent.preventDefault();\n      } else if (movedToNextCell === null) {\n        ctrlsSvc.get(\"gridCtrl\").allowFocusForNextCoreContainer(backwards);\n      }\n      return;\n    }\n    if (backwards) {\n      const { rowIndex, rowPinned } = previous.getRowPosition();\n      const firstRow = rowPinned ? rowIndex === 0 : rowIndex === pageBounds.getFirstRow();\n      if (firstRow) {\n        if (gos.get(\"headerHeight\") === 0 || _isHeaderFocusSuppressed(beans)) {\n          _focusNextGridCoreContainer(beans, true, true);\n        } else {\n          keyboardEvent.preventDefault();\n          focusSvc.focusPreviousFromFirstCell(keyboardEvent);\n        }\n      }\n    } else {\n      if (previous instanceof CellCtrl) {\n        previous.focusCell(true);\n      }\n      if (!backwards && focusSvc.focusOverlay(false) || _focusNextGridCoreContainer(beans, backwards)) {\n        keyboardEvent.preventDefault();\n      }\n    }\n  }\n  // comes from API\n  tabToNextCell(backwards, event) {\n    const beans = this.beans;\n    const { focusSvc, rowRenderer } = beans;\n    const focusedCell = focusSvc.getFocusedCell();\n    if (!focusedCell) {\n      return false;\n    }\n    let cellOrRow = _getCellByPosition(beans, focusedCell);\n    if (!cellOrRow) {\n      cellOrRow = rowRenderer.getRowByPosition(focusedCell);\n      if (!cellOrRow || !cellOrRow.isFullWidth()) {\n        return false;\n      }\n    }\n    return !!this.tabToNextCellCommon(cellOrRow, backwards, event);\n  }\n  tabToNextCellCommon(previous, backwards, event) {\n    let editing = previous.editing;\n    if (!editing && previous instanceof CellCtrl) {\n      const cell = previous;\n      const row = cell.rowCtrl;\n      if (row) {\n        editing = row.editing;\n      }\n    }\n    let res;\n    if (editing) {\n      if (this.gos.get(\"editType\") === \"fullRow\") {\n        res = this.moveToNextEditingRow(previous, backwards, event);\n      } else {\n        res = this.moveToNextEditingCell(previous, backwards, event);\n      }\n    } else {\n      res = this.moveToNextCellNotEditing(previous, backwards, event);\n    }\n    if (res === null) {\n      return res;\n    }\n    return res || !!this.beans.focusSvc.focusedHeader;\n  }\n  // returns null if no navigation should be performed\n  moveToNextEditingCell(previousCell, backwards, event = null) {\n    const previousPos = previousCell.cellPosition;\n    previousCell.eGui.focus();\n    previousCell.stopEditing();\n    const nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n    if (nextCell === false) {\n      return null;\n    }\n    if (nextCell == null) {\n      return false;\n    }\n    this.beans.editSvc?.startEditing(nextCell, null, true, event);\n    nextCell.focusCell(false);\n    return true;\n  }\n  // returns null if no navigation should be performed\n  moveToNextEditingRow(previousCell, backwards, event = null) {\n    const previousPos = previousCell.cellPosition;\n    const nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n    if (nextCell === false) {\n      return null;\n    }\n    if (nextCell == null) {\n      return false;\n    }\n    const nextPos = nextCell.cellPosition;\n    const previousEditable = this.isCellEditable(previousPos);\n    const nextEditable = this.isCellEditable(nextPos);\n    const rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;\n    const { editSvc, rowEditSvc } = this.beans;\n    if (previousEditable) {\n      editSvc?.setFocusOutOnEditor(previousCell);\n    }\n    if (!rowsMatch) {\n      const pRow = previousCell.rowCtrl;\n      editSvc?.stopRowEditing(pRow);\n      const nRow = nextCell.rowCtrl;\n      rowEditSvc?.startEditing(nRow, void 0, void 0, event);\n    }\n    if (nextEditable) {\n      editSvc?.setFocusInOnEditor(nextCell);\n      nextCell.focusCell();\n    } else {\n      nextCell.focusCell(true);\n    }\n    return true;\n  }\n  // returns null if no navigation should be performed\n  moveToNextCellNotEditing(previousCell, backwards, event) {\n    const displayedColumns = this.beans.visibleCols.allCols;\n    let cellPos;\n    if (previousCell instanceof RowCtrl) {\n      cellPos = {\n        ...previousCell.getRowPosition(),\n        column: backwards ? displayedColumns[0] : _last(displayedColumns)\n      };\n      if (this.gos.get(\"embedFullWidthRows\") && event) {\n        const focusedContainer = previousCell.findFullWidthInfoForEvent(event);\n        if (focusedContainer) {\n          cellPos.column = focusedContainer.column;\n        }\n      }\n    } else {\n      cellPos = previousCell.getFocusedCellPosition();\n    }\n    const nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);\n    if (nextCell === false) {\n      return null;\n    }\n    if (nextCell instanceof CellCtrl) {\n      nextCell.focusCell(true);\n    } else if (nextCell) {\n      return this.tryToFocusFullWidthRow(nextCell, backwards);\n    }\n    return _exists(nextCell);\n  }\n  /**\n   * called by the cell, when tab is pressed while editing.\n   * @return: RenderedCell when navigation successful, false if navigation should not be performed, otherwise null\n   */\n  findNextCellToFocusOn(previousPosition, backwards, startEditing) {\n    let nextPosition = previousPosition;\n    const beans = this.beans;\n    const { cellNavigation, gos, focusSvc, rowRenderer, rangeSvc } = beans;\n    while (true) {\n      if (previousPosition !== nextPosition) {\n        previousPosition = nextPosition;\n      }\n      if (!backwards) {\n        nextPosition = this.getLastCellOfColSpan(nextPosition);\n      }\n      nextPosition = cellNavigation.getNextTabbedCell(nextPosition, backwards);\n      const userFunc = gos.getCallback(\"tabToNextCell\");\n      if (_exists(userFunc)) {\n        const params = {\n          backwards,\n          editing: startEditing,\n          previousCellPosition: previousPosition,\n          nextCellPosition: nextPosition ? nextPosition : null\n        };\n        const userResult = userFunc(params);\n        if (userResult === true) {\n          nextPosition = previousPosition;\n        } else if (userResult === false) {\n          return false;\n        } else {\n          nextPosition = {\n            rowIndex: userResult.rowIndex,\n            column: userResult.column,\n            rowPinned: userResult.rowPinned\n          };\n        }\n      }\n      if (!nextPosition) {\n        return null;\n      }\n      if (nextPosition.rowIndex < 0) {\n        const headerLen = getFocusHeaderRowCount(beans);\n        focusSvc.focusHeaderPosition({\n          headerPosition: {\n            headerRowIndex: headerLen + nextPosition.rowIndex,\n            column: nextPosition.column\n          },\n          fromCell: true\n        });\n        return null;\n      }\n      const fullRowEdit = gos.get(\"editType\") === \"fullRow\";\n      if (startEditing && !fullRowEdit) {\n        const cellIsEditable = this.isCellEditable(nextPosition);\n        if (!cellIsEditable) {\n          continue;\n        }\n      }\n      this.ensureCellVisible(nextPosition);\n      const nextCell = _getCellByPosition(beans, nextPosition);\n      if (!nextCell) {\n        const row = rowRenderer.getRowByPosition(nextPosition);\n        if (!row || !row.isFullWidth() || startEditing) {\n          continue;\n        }\n        return { ...row.getRowPosition(), column: nextPosition?.column };\n      }\n      if (cellNavigation.isSuppressNavigable(nextCell.column, nextCell.rowNode)) {\n        continue;\n      }\n      nextCell.setFocusedCellPosition(nextPosition);\n      rangeSvc?.setRangeToCell(nextPosition);\n      return nextCell;\n    }\n  }\n  isCellEditable(cell) {\n    const rowNode = this.lookupRowNodeForCell(cell);\n    if (rowNode) {\n      return cell.column.isCellEditable(rowNode);\n    }\n    return false;\n  }\n  lookupRowNodeForCell({ rowIndex, rowPinned }) {\n    const { pinnedRowModel, rowModel } = this.beans;\n    if (rowPinned === \"top\") {\n      return pinnedRowModel?.getPinnedTopRow(rowIndex);\n    }\n    if (rowPinned === \"bottom\") {\n      return pinnedRowModel?.getPinnedBottomRow(rowIndex);\n    }\n    return rowModel.getRow(rowIndex);\n  }\n  // we use index for rows, but column object for columns, as the next column (by index) might not\n  // be visible (header grouping) so it's not reliable, so using the column object instead.\n  navigateToNextCell(event, key, currentCell, allowUserOverride) {\n    let nextCell = currentCell;\n    let hitEdgeOfGrid = false;\n    const beans = this.beans;\n    const { cellNavigation, focusSvc, gos } = beans;\n    while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {\n      if (gos.get(\"enableRtl\")) {\n        if (key === KeyCode.LEFT) {\n          nextCell = this.getLastCellOfColSpan(nextCell);\n        }\n      } else if (key === KeyCode.RIGHT) {\n        nextCell = this.getLastCellOfColSpan(nextCell);\n      }\n      nextCell = cellNavigation.getNextCellToFocus(key, nextCell);\n      hitEdgeOfGrid = _missing(nextCell);\n    }\n    if (hitEdgeOfGrid && event && event.key === KeyCode.UP) {\n      nextCell = {\n        rowIndex: -1,\n        rowPinned: null,\n        column: currentCell.column\n      };\n    }\n    if (allowUserOverride) {\n      const userFunc = gos.getCallback(\"navigateToNextCell\");\n      if (_exists(userFunc)) {\n        const params = {\n          key,\n          previousCellPosition: currentCell,\n          nextCellPosition: nextCell ? nextCell : null,\n          event\n        };\n        const userCell = userFunc(params);\n        if (_exists(userCell)) {\n          nextCell = {\n            rowPinned: userCell.rowPinned,\n            rowIndex: userCell.rowIndex,\n            column: userCell.column\n          };\n        } else {\n          nextCell = null;\n        }\n      }\n    }\n    if (!nextCell) {\n      return;\n    }\n    if (nextCell.rowIndex < 0) {\n      const headerLen = getFocusHeaderRowCount(beans);\n      focusSvc.focusHeaderPosition({\n        headerPosition: { headerRowIndex: headerLen + nextCell.rowIndex, column: currentCell.column },\n        event: event || void 0,\n        fromCell: true\n      });\n      return;\n    }\n    const normalisedPosition = this.getNormalisedPosition(nextCell);\n    if (normalisedPosition) {\n      this.focusPosition(normalisedPosition);\n    } else {\n      this.tryToFocusFullWidthRow(nextCell);\n    }\n  }\n  getNormalisedPosition(cellPosition) {\n    const isSpannedCell = !!this.beans.spannedRowRenderer?.getCellByPosition(cellPosition);\n    if (isSpannedCell) {\n      return cellPosition;\n    }\n    this.ensureCellVisible(cellPosition);\n    const cellCtrl = _getCellByPosition(this.beans, cellPosition);\n    if (!cellCtrl) {\n      return null;\n    }\n    cellPosition = cellCtrl.getFocusedCellPosition();\n    this.ensureCellVisible(cellPosition);\n    return cellPosition;\n  }\n  tryToFocusFullWidthRow(position, backwards) {\n    const { visibleCols, rowRenderer, focusSvc, eventSvc } = this.beans;\n    const displayedColumns = visibleCols.allCols;\n    const rowComp = rowRenderer.getRowByPosition(position);\n    if (!rowComp || !rowComp.isFullWidth()) {\n      return false;\n    }\n    const currentCellFocused = focusSvc.getFocusedCell();\n    const cellPosition = {\n      rowIndex: position.rowIndex,\n      rowPinned: position.rowPinned,\n      column: position.column || (backwards ? _last(displayedColumns) : displayedColumns[0])\n    };\n    this.focusPosition(cellPosition);\n    const fromBelow = backwards == null ? currentCellFocused != null && _isRowBefore(cellPosition, currentCellFocused) : backwards;\n    eventSvc.dispatchEvent({\n      type: \"fullWidthRowFocused\",\n      rowIndex: cellPosition.rowIndex,\n      rowPinned: cellPosition.rowPinned,\n      column: cellPosition.column,\n      isFullWidthCell: true,\n      fromBelow\n    });\n    return true;\n  }\n  focusPosition(cellPosition) {\n    const { focusSvc, rangeSvc } = this.beans;\n    focusSvc.setFocusedCell({\n      rowIndex: cellPosition.rowIndex,\n      column: cellPosition.column,\n      rowPinned: cellPosition.rowPinned,\n      forceBrowserFocus: true\n    });\n    rangeSvc?.setRangeToCell(cellPosition);\n  }\n  isValidNavigateCell(cell) {\n    const rowNode = _getRowNode(this.beans, cell);\n    return !!rowNode;\n  }\n  getLastCellOfColSpan(cell) {\n    const cellCtrl = _getCellByPosition(this.beans, cell);\n    if (!cellCtrl) {\n      return cell;\n    }\n    const colSpanningList = cellCtrl.getColSpanningList();\n    if (colSpanningList.length === 1) {\n      return cell;\n    }\n    return {\n      rowIndex: cell.rowIndex,\n      column: _last(colSpanningList),\n      rowPinned: cell.rowPinned\n    };\n  }\n  ensureCellVisible(gridCell) {\n    const isGroupStickyEnabled = _isGroupRowsSticky(this.gos);\n    const rowNode = this.beans.rowModel.getRow(gridCell.rowIndex);\n    const skipScrollToRow = isGroupStickyEnabled && rowNode?.sticky;\n    const { scrollFeature } = this.gridBodyCon;\n    if (!skipScrollToRow && _missing(gridCell.rowPinned)) {\n      scrollFeature.ensureIndexVisible(gridCell.rowIndex);\n    }\n    if (!gridCell.column.isPinned()) {\n      scrollFeature.ensureColumnVisible(gridCell.column);\n    }\n  }\n};\nfunction getVScroll(beans) {\n  return beans.ctrlsSvc.getScrollFeature().getVScrollPosition();\n}\n\n// packages/ag-grid-community/src/navigation/navigationModule.ts\nvar KeyboardNavigationModule = {\n  moduleName: \"KeyboardNavigation\",\n  version: VERSION,\n  beans: [NavigationService, CellNavigationService, HeaderNavigationService],\n  apiFunctions: {\n    getFocusedCell,\n    clearFocusedCell,\n    setFocusedCell,\n    setFocusedHeader,\n    tabToNextCell,\n    tabToPreviousCell\n  }\n};\n\n// packages/ag-grid-community/src/pagination/pageBoundsListener.ts\nvar PageBoundsListener = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"pageBoundsListener\";\n  }\n  postConstruct() {\n    this.addManagedEventListeners({\n      modelUpdated: this.onModelUpdated.bind(this),\n      recalculateRowBounds: this.calculatePages.bind(this)\n    });\n    this.onModelUpdated();\n  }\n  onModelUpdated(modelUpdatedEvent) {\n    this.calculatePages();\n    this.eventSvc.dispatchEvent({\n      type: \"paginationChanged\",\n      animate: modelUpdatedEvent?.animate ?? false,\n      newData: modelUpdatedEvent?.newData ?? false,\n      newPage: modelUpdatedEvent?.newPage ?? false,\n      newPageSize: modelUpdatedEvent?.newPageSize ?? false,\n      keepRenderedRows: modelUpdatedEvent?.keepRenderedRows ?? false\n    });\n  }\n  calculatePages() {\n    const { pageBounds, pagination, rowModel } = this.beans;\n    if (pagination) {\n      pagination.calculatePages();\n    } else {\n      pageBounds.calculateBounds(0, rowModel.getRowCount() - 1);\n    }\n  }\n};\n\n// packages/ag-grid-community/src/pagination/pageBoundsService.ts\nvar PageBoundsService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"pageBounds\";\n    this.pixelOffset = 0;\n  }\n  getFirstRow() {\n    return this.topRowBounds?.rowIndex ?? -1;\n  }\n  getLastRow() {\n    return this.bottomRowBounds?.rowIndex ?? -1;\n  }\n  getCurrentPageHeight() {\n    const { topRowBounds, bottomRowBounds } = this;\n    if (!topRowBounds || !bottomRowBounds) {\n      return 0;\n    }\n    return Math.max(bottomRowBounds.rowTop + bottomRowBounds.rowHeight - topRowBounds.rowTop, 0);\n  }\n  getCurrentPagePixelRange() {\n    const { topRowBounds, bottomRowBounds } = this;\n    const pageFirstPixel = topRowBounds?.rowTop ?? 0;\n    const pageLastPixel = bottomRowBounds ? bottomRowBounds.rowTop + bottomRowBounds.rowHeight : 0;\n    return { pageFirstPixel, pageLastPixel };\n  }\n  calculateBounds(topDisplayedRowIndex, bottomDisplayedRowIndex) {\n    const { rowModel } = this.beans;\n    const topRowBounds = rowModel.getRowBounds(topDisplayedRowIndex);\n    if (topRowBounds) {\n      topRowBounds.rowIndex = topDisplayedRowIndex;\n    }\n    this.topRowBounds = topRowBounds;\n    const bottomRowBounds = rowModel.getRowBounds(bottomDisplayedRowIndex);\n    if (bottomRowBounds) {\n      bottomRowBounds.rowIndex = bottomDisplayedRowIndex;\n    }\n    this.bottomRowBounds = bottomRowBounds;\n    this.calculatePixelOffset();\n  }\n  getPixelOffset() {\n    return this.pixelOffset;\n  }\n  calculatePixelOffset() {\n    const value = this.topRowBounds?.rowTop ?? 0;\n    if (this.pixelOffset === value) {\n      return;\n    }\n    this.pixelOffset = value;\n    this.eventSvc.dispatchEvent({ type: \"paginationPixelOffsetChanged\" });\n  }\n};\n\n// packages/ag-grid-community/src/pinnedColumns/pinnedColumnModule.css-GENERATED.ts\nvar pinnedColumnModuleCSS = (\n  /*css*/\n  `.ag-pinned-left-floating-bottom,.ag-pinned-left-floating-top,.ag-pinned-right-floating-bottom,.ag-pinned-right-floating-top{min-width:0;overflow:hidden;position:relative}.ag-pinned-left-sticky-top,.ag-pinned-right-sticky-top{height:100%;overflow:hidden;position:relative}.ag-sticky-bottom-full-width-container,.ag-sticky-top-full-width-container{height:100%;overflow:hidden;width:100%}.ag-pinned-left-header,.ag-pinned-right-header{display:inline-block;height:100%;overflow:hidden;position:relative}.ag-body-horizontal-scroll:not(.ag-scrollbar-invisible){.ag-horizontal-left-spacer:not(.ag-scroller-corner){border-right:var(--ag-pinned-column-border)}.ag-horizontal-right-spacer:not(.ag-scroller-corner){border-left:var(--ag-pinned-column-border)}}.ag-pinned-right-header{border-left:var(--ag-pinned-column-border)}.ag-pinned-left-header{border-right:var(--ag-pinned-column-border)}.ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left,.ag-cell-range-single-cell,.ag-cell-focus:not(.ag-cell-range-selected):focus-within){border-left:var(--ag-pinned-column-border)}.ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right,.ag-cell-range-single-cell,.ag-cell-focus:not(.ag-cell-range-selected):focus-within){border-right:var(--ag-pinned-column-border)}.ag-pinned-left-header .ag-header-cell-resize:after{left:calc(50% - var(--ag-header-column-resize-handle-width))}.ag-pinned-right-header .ag-header-cell-resize:after{left:50%}.ag-pinned-left-header .ag-header-cell-resize{right:-3px}.ag-pinned-right-header .ag-header-cell-resize{left:-3px}`\n);\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/setPinnedWidthFeature.ts\nvar SetPinnedWidthFeature = class extends BeanStub {\n  constructor(isLeft, elements) {\n    super();\n    this.isLeft = isLeft;\n    this.elements = elements;\n    this.getWidth = isLeft ? () => this.beans.pinnedCols.leftWidth : () => this.beans.pinnedCols.rightWidth;\n  }\n  postConstruct() {\n    this.addManagedEventListeners({\n      [`${this.isLeft ? \"left\" : \"right\"}PinnedWidthChanged`]: this.onPinnedWidthChanged.bind(this)\n    });\n  }\n  onPinnedWidthChanged() {\n    const width = this.getWidth();\n    const displayed = width > 0;\n    for (const element of this.elements) {\n      if (element) {\n        _setDisplayed(element, displayed);\n        _setFixedWidth(element, width);\n      }\n    }\n  }\n};\n\n// packages/ag-grid-community/src/pinnedColumns/pinnedColumnService.ts\nvar PinnedColumnService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"pinnedCols\";\n  }\n  postConstruct() {\n    this.beans.ctrlsSvc.whenReady(this, (p) => {\n      this.gridBodyCtrl = p.gridBodyCtrl;\n    });\n    const listener = this.checkContainerWidths.bind(this);\n    this.addManagedEventListeners({\n      displayedColumnsChanged: listener,\n      displayedColumnsWidthChanged: listener\n    });\n    this.addManagedPropertyListener(\"domLayout\", listener);\n  }\n  checkContainerWidths() {\n    const { gos, visibleCols, eventSvc } = this.beans;\n    const printLayout = _isDomLayout(gos, \"print\");\n    const newLeftWidth = printLayout ? 0 : visibleCols.getColsLeftWidth();\n    const newRightWidth = printLayout ? 0 : visibleCols.getDisplayedColumnsRightWidth();\n    if (newLeftWidth != this.leftWidth) {\n      this.leftWidth = newLeftWidth;\n      eventSvc.dispatchEvent({ type: \"leftPinnedWidthChanged\" });\n    }\n    if (newRightWidth != this.rightWidth) {\n      this.rightWidth = newRightWidth;\n      eventSvc.dispatchEvent({ type: \"rightPinnedWidthChanged\" });\n    }\n  }\n  keepPinnedColumnsNarrowerThanViewport() {\n    const eBodyViewport = this.gridBodyCtrl.eBodyViewport;\n    const bodyWidth = _getInnerWidth(eBodyViewport);\n    if (bodyWidth <= 50) {\n      return;\n    }\n    const processedColumnsToRemove = this.getPinnedColumnsOverflowingViewport(bodyWidth - 50);\n    const processUnpinnedColumns = this.gos.getCallback(\"processUnpinnedColumns\");\n    const { columns, hasLockedPinned } = processedColumnsToRemove;\n    let columnsToRemove = columns;\n    if (!columnsToRemove.length && !hasLockedPinned) {\n      return;\n    }\n    if (processUnpinnedColumns) {\n      const params = {\n        columns: columnsToRemove,\n        viewportWidth: bodyWidth\n      };\n      columnsToRemove = processUnpinnedColumns(params);\n    }\n    if (!columnsToRemove || !columnsToRemove.length) {\n      return;\n    }\n    columnsToRemove = columnsToRemove.filter((col) => !isRowNumberCol(col));\n    this.setColsPinned(columnsToRemove, null, \"viewportSizeFeature\");\n  }\n  createPinnedWidthFeature(isLeft, ...elements) {\n    return new SetPinnedWidthFeature(isLeft, elements);\n  }\n  setColsPinned(keys, pinned, source) {\n    const { colModel, colAnimation, visibleCols, gos } = this.beans;\n    if (!colModel.cols) {\n      return;\n    }\n    if (!keys?.length) {\n      return;\n    }\n    if (_isDomLayout(gos, \"print\")) {\n      _warn(37);\n      return;\n    }\n    colAnimation?.start();\n    let actualPinned;\n    if (pinned === true || pinned === \"left\") {\n      actualPinned = \"left\";\n    } else if (pinned === \"right\") {\n      actualPinned = \"right\";\n    } else {\n      actualPinned = null;\n    }\n    const updatedCols = [];\n    keys.forEach((key) => {\n      if (!key) {\n        return;\n      }\n      const column = colModel.getCol(key);\n      if (!column) {\n        return;\n      }\n      if (column.getPinned() !== actualPinned) {\n        this.setColPinned(column, actualPinned);\n        updatedCols.push(column);\n      }\n    });\n    if (updatedCols.length) {\n      visibleCols.refresh(source);\n      dispatchColumnPinnedEvent(this.eventSvc, updatedCols, source);\n    }\n    colAnimation?.finish();\n  }\n  initCol(column) {\n    const { pinned, initialPinned } = column.colDef;\n    if (pinned !== void 0) {\n      this.setColPinned(column, pinned);\n    } else {\n      this.setColPinned(column, initialPinned);\n    }\n  }\n  setColPinned(column, pinned) {\n    if (pinned === true || pinned === \"left\") {\n      column.pinned = \"left\";\n    } else if (pinned === \"right\") {\n      column.pinned = \"right\";\n    } else {\n      column.pinned = null;\n    }\n    column.dispatchStateUpdatedEvent(\"pinned\");\n  }\n  setupHeaderPinnedWidth(ctrl) {\n    const { scrollVisibleSvc } = this.beans;\n    if (ctrl.pinned == null) {\n      return;\n    }\n    const pinningLeft = ctrl.pinned === \"left\";\n    const pinningRight = ctrl.pinned === \"right\";\n    ctrl.hidden = true;\n    const listener = () => {\n      const width = pinningLeft ? this.leftWidth : this.rightWidth;\n      if (width == null) {\n        return;\n      }\n      const hidden = width == 0;\n      const hiddenChanged = ctrl.hidden !== hidden;\n      const isRtl = this.gos.get(\"enableRtl\");\n      const scrollbarWidth = scrollVisibleSvc.getScrollbarWidth();\n      const addPaddingForScrollbar = scrollVisibleSvc.verticalScrollShowing && (isRtl && pinningLeft || !isRtl && pinningRight);\n      const widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;\n      ctrl.comp.setPinnedContainerWidth(`${widthWithPadding}px`);\n      ctrl.comp.setDisplayed(!hidden);\n      if (hiddenChanged) {\n        ctrl.hidden = hidden;\n        ctrl.refresh();\n      }\n    };\n    ctrl.addManagedEventListeners({\n      leftPinnedWidthChanged: listener,\n      rightPinnedWidthChanged: listener,\n      scrollVisibilityChanged: listener,\n      scrollbarWidthChanged: listener\n    });\n  }\n  getHeaderResizeDiff(diff, column) {\n    const pinned = column.getPinned();\n    if (pinned) {\n      const { leftWidth, rightWidth } = this;\n      const bodyWidth = _getInnerWidth(this.beans.ctrlsSvc.getGridBodyCtrl().eBodyViewport) - 50;\n      if (leftWidth + rightWidth + diff > bodyWidth) {\n        if (bodyWidth > leftWidth + rightWidth) {\n          diff = bodyWidth - leftWidth - rightWidth;\n        } else {\n          return 0;\n        }\n      }\n    }\n    return diff;\n  }\n  getPinnedColumnsOverflowingViewport(viewportWidth) {\n    const pinnedRightWidth = this.rightWidth ?? 0;\n    const pinnedLeftWidth = this.leftWidth ?? 0;\n    const totalPinnedWidth = pinnedRightWidth + pinnedLeftWidth;\n    let hasLockedPinned = false;\n    if (totalPinnedWidth < viewportWidth) {\n      return { columns: [], hasLockedPinned };\n    }\n    const { visibleCols } = this.beans;\n    const pinnedLeftColumns = [...visibleCols.leftCols];\n    const pinnedRightColumns = [...visibleCols.rightCols];\n    let indexRight = 0;\n    let indexLeft = 0;\n    const totalWidthRemoved = 0;\n    const columnsToRemove = [];\n    let spaceNecessary = totalPinnedWidth - totalWidthRemoved - viewportWidth;\n    while ((indexLeft < pinnedLeftColumns.length || indexRight < pinnedRightColumns.length) && spaceNecessary > 0) {\n      if (indexRight < pinnedRightColumns.length) {\n        const currentColumn = pinnedRightColumns[indexRight++];\n        if (currentColumn.colDef.lockPinned) {\n          hasLockedPinned = true;\n          continue;\n        }\n        spaceNecessary -= currentColumn.getActualWidth();\n        columnsToRemove.push(currentColumn);\n      }\n      if (indexLeft < pinnedLeftColumns.length && spaceNecessary > 0) {\n        const currentColumn = pinnedLeftColumns[indexLeft++];\n        if (currentColumn.colDef.lockPinned) {\n          hasLockedPinned = true;\n          continue;\n        }\n        spaceNecessary -= currentColumn.getActualWidth();\n        columnsToRemove.push(currentColumn);\n      }\n    }\n    return { columns: columnsToRemove, hasLockedPinned };\n  }\n};\n\n// packages/ag-grid-community/src/pinnedColumns/pinnedColumnModule.ts\nvar PinnedColumnModule = {\n  moduleName: \"PinnedColumn\",\n  version: VERSION,\n  beans: [PinnedColumnService],\n  css: [pinnedColumnModuleCSS]\n};\n\n// packages/ag-grid-community/src/rendering/ariaAnnouncementService.ts\nvar AriaAnnouncementService = class extends BeanStub {\n  constructor() {\n    super();\n    this.beanName = \"ariaAnnounce\";\n    this.descriptionContainer = null;\n    this.pendingAnnouncements = /* @__PURE__ */ new Map();\n    this.lastAnnouncement = \"\";\n    this.updateAnnouncement = _debounce(this, this.updateAnnouncement.bind(this), 200);\n  }\n  postConstruct() {\n    const beans = this.beans;\n    const eDocument = _getDocument(beans);\n    const div = this.descriptionContainer = eDocument.createElement(\"div\");\n    div.classList.add(\"ag-aria-description-container\");\n    _setAriaLive(div, \"polite\");\n    _setAriaRelevant(div, \"additions text\");\n    _setAriaAtomic(div, true);\n    beans.eGridDiv.appendChild(div);\n  }\n  /**\n   * @param key used for debouncing calls\n   */\n  announceValue(value, key) {\n    this.pendingAnnouncements.set(key, value);\n    this.updateAnnouncement();\n  }\n  updateAnnouncement() {\n    if (!this.descriptionContainer) {\n      return;\n    }\n    const value = Array.from(this.pendingAnnouncements.values()).join(\". \");\n    this.pendingAnnouncements.clear();\n    this.descriptionContainer.textContent = \"\";\n    setTimeout(() => {\n      if (this.isAlive() && this.descriptionContainer) {\n        let valueToAnnounce = value;\n        if (this.lastAnnouncement === valueToAnnounce) {\n          valueToAnnounce = `${valueToAnnounce}.`;\n        }\n        this.lastAnnouncement = valueToAnnounce;\n        this.descriptionContainer.textContent = valueToAnnounce;\n      }\n    }, 50);\n  }\n  destroy() {\n    super.destroy();\n    const { descriptionContainer } = this;\n    if (descriptionContainer) {\n      _clearElement(descriptionContainer);\n      descriptionContainer.parentElement?.removeChild(descriptionContainer);\n    }\n    this.descriptionContainer = null;\n    this.pendingAnnouncements.clear();\n  }\n};\n\n// packages/ag-grid-community/src/rendering/ariaModule.ts\nvar AriaModule = {\n  moduleName: \"Aria\",\n  version: VERSION,\n  beans: [AriaAnnouncementService]\n};\n\n// packages/ag-grid-community/src/rendering/overlays/overlayApi.ts\nfunction showLoadingOverlay(beans) {\n  beans.overlays?.showLoadingOverlay();\n}\nfunction showNoRowsOverlay(beans) {\n  beans.overlays?.showNoRowsOverlay();\n}\nfunction hideOverlay(beans) {\n  beans.overlays?.hideOverlay();\n}\n\n// packages/ag-grid-community/src/rendering/overlays/overlayWrapperComponent.css-GENERATED.ts\nvar overlayWrapperComponentCSS = (\n  /*css*/\n  `.ag-overlay{inset:0;pointer-events:none;position:absolute;z-index:2}.ag-overlay-panel,.ag-overlay-wrapper{display:flex;height:100%;width:100%}.ag-overlay-wrapper{align-items:center;flex:none;justify-content:center;text-align:center}.ag-overlay-loading-wrapper{pointer-events:all}.ag-overlay-loading-center{background:var(--ag-background-color);border:1px solid var(--ag-border-color);border-radius:var(--ag-border-radius);box-shadow:var(--ag-popup-shadow);padding:var(--ag-spacing)}`\n);\n\n// packages/ag-grid-community/src/rendering/overlays/overlayWrapperComponent.ts\nvar OverlayWrapperElement = {\n  tag: \"div\",\n  cls: \"ag-overlay\",\n  role: \"presentation\",\n  children: [\n    {\n      tag: \"div\",\n      cls: \"ag-overlay-panel\",\n      role: \"presentation\",\n      children: [{ tag: \"div\", ref: \"eOverlayWrapper\", cls: \"ag-overlay-wrapper\", role: \"presentation\" }]\n    }\n  ]\n};\nvar OverlayWrapperComponent = class extends Component {\n  constructor() {\n    super(OverlayWrapperElement);\n    this.eOverlayWrapper = RefPlaceholder;\n    this.activePromise = null;\n    this.activeOverlay = null;\n    this.updateListenerDestroyFunc = null;\n    this.activeCssClass = null;\n    this.elToFocusAfter = null;\n    this.registerCSS(overlayWrapperComponentCSS);\n  }\n  handleKeyDown(e) {\n    if (e.key !== KeyCode.TAB || e.defaultPrevented || _isStopPropagationForAgGrid(e)) {\n      return;\n    }\n    const beans = this.beans;\n    const nextEl = _findNextFocusableElement(beans, this.eOverlayWrapper, false, e.shiftKey);\n    if (nextEl) {\n      return;\n    }\n    let isFocused = false;\n    if (e.shiftKey) {\n      isFocused = beans.focusSvc.focusGridView({\n        column: _last(beans.visibleCols.allCols),\n        backwards: true,\n        canFocusOverlay: false\n      });\n    } else {\n      isFocused = _focusNextGridCoreContainer(beans, false);\n    }\n    if (isFocused) {\n      e.preventDefault();\n    }\n  }\n  updateLayoutClasses(cssClass, params) {\n    const overlayWrapperClassList = this.eOverlayWrapper.classList;\n    const { AUTO_HEIGHT, NORMAL, PRINT } = LayoutCssClasses;\n    overlayWrapperClassList.toggle(AUTO_HEIGHT, params.autoHeight);\n    overlayWrapperClassList.toggle(NORMAL, params.normal);\n    overlayWrapperClassList.toggle(PRINT, params.print);\n  }\n  postConstruct() {\n    this.createManagedBean(new LayoutFeature(this));\n    this.setDisplayed(false, { skipAriaHidden: true });\n    this.beans.overlays.setOverlayWrapperComp(this);\n    this.addManagedElementListeners(this.getFocusableElement(), { keydown: this.handleKeyDown.bind(this) });\n  }\n  setWrapperTypeClass(overlayWrapperCssClass) {\n    const overlayWrapperClassList = this.eOverlayWrapper.classList;\n    if (this.activeCssClass) {\n      overlayWrapperClassList.toggle(this.activeCssClass, false);\n    }\n    this.activeCssClass = overlayWrapperCssClass;\n    overlayWrapperClassList.toggle(overlayWrapperCssClass, true);\n  }\n  showOverlay(overlayComponentPromise, overlayWrapperCssClass, exclusive, gridOption) {\n    this.setWrapperTypeClass(overlayWrapperCssClass);\n    this.destroyActiveOverlay();\n    this.elToFocusAfter = null;\n    this.activePromise = overlayComponentPromise;\n    if (!overlayComponentPromise) {\n      return;\n    }\n    this.setDisplayed(true, { skipAriaHidden: true });\n    if (exclusive && this.isGridFocused()) {\n      const activeElement = _getActiveDomElement(this.beans);\n      if (activeElement && !_isNothingFocused(this.beans)) {\n        this.elToFocusAfter = activeElement;\n      }\n    }\n    overlayComponentPromise.then((comp) => {\n      if (this.activePromise !== overlayComponentPromise) {\n        if (this.activeOverlay !== comp) {\n          this.destroyBean(comp);\n          comp = null;\n        }\n        return;\n      }\n      this.activePromise = null;\n      if (!comp) {\n        return;\n      }\n      if (this.activeOverlay !== comp) {\n        this.eOverlayWrapper.appendChild(comp.getGui());\n        this.activeOverlay = comp;\n        if (gridOption) {\n          const component = comp;\n          this.updateListenerDestroyFunc = this.addManagedPropertyListener(gridOption, ({ currentValue }) => {\n            component.refresh?.(_addGridCommonParams(this.gos, { ...currentValue ?? {} }));\n          });\n        }\n      }\n      if (exclusive && this.isGridFocused()) {\n        _focusInto(this.eOverlayWrapper);\n      }\n    });\n  }\n  updateOverlayWrapperPaddingTop(padding) {\n    this.eOverlayWrapper.style.setProperty(\"padding-top\", `${padding}px`);\n  }\n  destroyActiveOverlay() {\n    this.activePromise = null;\n    const activeOverlay = this.activeOverlay;\n    if (!activeOverlay) {\n      return;\n    }\n    let elementToFocus = this.elToFocusAfter;\n    this.activeOverlay = null;\n    this.elToFocusAfter = null;\n    if (elementToFocus && !this.isGridFocused()) {\n      elementToFocus = null;\n    }\n    const updateListenerDestroyFunc = this.updateListenerDestroyFunc;\n    if (updateListenerDestroyFunc) {\n      updateListenerDestroyFunc();\n      this.updateListenerDestroyFunc = null;\n    }\n    this.destroyBean(activeOverlay);\n    _clearElement(this.eOverlayWrapper);\n    elementToFocus?.focus?.({ preventScroll: true });\n  }\n  hideOverlay() {\n    this.destroyActiveOverlay();\n    this.setDisplayed(false, { skipAriaHidden: true });\n  }\n  isGridFocused() {\n    const activeEl = _getActiveDomElement(this.beans);\n    return !!activeEl && this.beans.eGridDiv.contains(activeEl);\n  }\n  destroy() {\n    this.elToFocusAfter = null;\n    this.destroyActiveOverlay();\n    this.beans.overlays.setOverlayWrapperComp(void 0);\n    super.destroy();\n  }\n};\nvar OverlayWrapperSelector = {\n  selector: \"AG-OVERLAY-WRAPPER\",\n  component: OverlayWrapperComponent\n};\n\n// packages/ag-grid-community/src/rendering/overlays/overlayService.ts\nvar OverlayService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"overlays\";\n    this.state = 0 /* Hidden */;\n    this.showInitialOverlay = true;\n    this.wrapperPadding = 0;\n  }\n  postConstruct() {\n    this.isClientSide = _isClientSideRowModel(this.gos);\n    this.isServerSide = !this.isClientSide && _isServerSideRowModel(this.gos);\n    const updateOverlayVisibility = () => this.updateOverlayVisibility();\n    this.addManagedEventListeners({\n      newColumnsLoaded: updateOverlayVisibility,\n      rowDataUpdated: updateOverlayVisibility,\n      gridSizeChanged: this.refreshWrapperPadding.bind(this),\n      rowCountReady: () => {\n        this.showInitialOverlay = false;\n        this.updateOverlayVisibility();\n      }\n    });\n    this.addManagedPropertyListener(\"loading\", updateOverlayVisibility);\n  }\n  setOverlayWrapperComp(overlayWrapperComp) {\n    this.eWrapper = overlayWrapperComp;\n    this.updateOverlayVisibility();\n  }\n  /** Returns true if the overlay is visible. */\n  isVisible() {\n    return this.state !== 0 /* Hidden */ && !!this.eWrapper;\n  }\n  /** Returns true if the overlay is visible and is exclusive (popup over the grid) */\n  isExclusive() {\n    return this.state === 1 /* Loading */ && !!this.eWrapper;\n  }\n  showLoadingOverlay() {\n    this.showInitialOverlay = false;\n    const gos = this.gos;\n    const loading = gos.get(\"loading\");\n    if (!loading && (loading !== void 0 || gos.get(\"suppressLoadingOverlay\"))) {\n      return;\n    }\n    this.doShowLoadingOverlay();\n  }\n  showNoRowsOverlay() {\n    this.showInitialOverlay = false;\n    const gos = this.gos;\n    if (gos.get(\"loading\") || gos.get(\"suppressNoRowsOverlay\")) {\n      return;\n    }\n    this.doShowNoRowsOverlay();\n  }\n  hideOverlay() {\n    this.showInitialOverlay = false;\n    if (this.gos.get(\"loading\")) {\n      _warn(99);\n      return;\n    }\n    this.doHideOverlay();\n  }\n  getOverlayWrapperSelector() {\n    return OverlayWrapperSelector;\n  }\n  getOverlayWrapperCompClass() {\n    return OverlayWrapperComponent;\n  }\n  updateOverlayVisibility() {\n    if (!this.eWrapper) {\n      this.state = 0 /* Hidden */;\n      return;\n    }\n    const {\n      state,\n      isClientSide,\n      isServerSide,\n      beans: { gos, colModel, rowModel }\n    } = this;\n    let loading = this.gos.get(\"loading\");\n    if (loading !== void 0) {\n      this.showInitialOverlay = false;\n    }\n    if (this.showInitialOverlay && loading === void 0 && !gos.get(\"suppressLoadingOverlay\")) {\n      loading = !gos.get(\"columnDefs\") || !colModel.ready || !gos.get(\"rowData\") && isClientSide;\n    }\n    if (loading) {\n      if (state !== 1 /* Loading */) {\n        this.doShowLoadingOverlay();\n      }\n    } else {\n      this.showInitialOverlay = false;\n      if (isClientSide && rowModel.isEmpty() && !gos.get(\"suppressNoRowsOverlay\")) {\n        if (state !== 2 /* NoRows */) {\n          this.doShowNoRowsOverlay();\n        }\n      } else if (state === 1 /* Loading */ || !isServerSide && state !== 0 /* Hidden */) {\n        this.doHideOverlay();\n      }\n    }\n  }\n  doShowLoadingOverlay() {\n    if (!this.eWrapper) {\n      return;\n    }\n    this.state = 1 /* Loading */;\n    this.showOverlay(\n      _getLoadingOverlayCompDetails(this.beans.userCompFactory, _addGridCommonParams(this.gos, {})),\n      \"ag-overlay-loading-wrapper\",\n      \"loadingOverlayComponentParams\"\n    );\n    this.updateExclusive();\n  }\n  doShowNoRowsOverlay() {\n    if (!this.eWrapper) {\n      return;\n    }\n    this.state = 2 /* NoRows */;\n    this.showOverlay(\n      _getNoRowsOverlayCompDetails(this.beans.userCompFactory, _addGridCommonParams(this.gos, {})),\n      \"ag-overlay-no-rows-wrapper\",\n      \"noRowsOverlayComponentParams\"\n    );\n    this.updateExclusive();\n  }\n  doHideOverlay() {\n    if (!this.eWrapper) {\n      return;\n    }\n    this.state = 0 /* Hidden */;\n    this.eWrapper.hideOverlay();\n    this.updateExclusive();\n  }\n  showOverlay(compDetails, wrapperCssClass, gridOption) {\n    const promise = compDetails?.newAgStackInstance() ?? null;\n    this.eWrapper?.showOverlay(promise, wrapperCssClass, this.isExclusive(), gridOption);\n    this.refreshWrapperPadding();\n  }\n  updateExclusive() {\n    const wasExclusive = this.exclusive;\n    this.exclusive = this.isExclusive();\n    if (this.exclusive !== wasExclusive) {\n      this.eventSvc.dispatchEvent({\n        type: \"overlayExclusiveChanged\"\n      });\n    }\n  }\n  refreshWrapperPadding() {\n    const eWrapper = this.eWrapper;\n    if (!eWrapper) {\n      return;\n    }\n    let newPadding = 0;\n    if (this.state === 2 /* NoRows */) {\n      const headerCtrl = this.beans.ctrlsSvc.get(\"gridHeaderCtrl\");\n      const headerHeight = headerCtrl?.headerHeight || 0;\n      newPadding = headerHeight;\n    } else if (this.wrapperPadding !== 0) {\n      newPadding = 0;\n    }\n    if (this.wrapperPadding === newPadding) {\n      return;\n    }\n    this.wrapperPadding = newPadding;\n    eWrapper.updateOverlayWrapperPaddingTop(newPadding);\n  }\n};\n\n// packages/ag-grid-community/src/rendering/overlays/overlayModule.ts\nvar OverlayModule = {\n  moduleName: \"Overlay\",\n  version: VERSION,\n  userComponents: {\n    agLoadingOverlay: LoadingOverlayComponent2,\n    agNoRowsOverlay: NoRowsOverlayComponent2\n  },\n  apiFunctions: {\n    showLoadingOverlay,\n    showNoRowsOverlay,\n    hideOverlay\n  },\n  beans: [OverlayService]\n};\n\n// packages/ag-grid-community/src/rendering/rowContainerHeightService.ts\nvar RowContainerHeightService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowContainerHeight\";\n    // the scrollY position\n    this.scrollY = 0;\n    // how tall the body is\n    this.uiBodyHeight = 0;\n  }\n  postConstruct() {\n    this.addManagedEventListeners({ bodyHeightChanged: this.updateOffset.bind(this) });\n    this.maxDivHeight = _getMaxDivHeight();\n    _logIfDebug(this.gos, \"RowContainerHeightService - maxDivHeight = \" + this.maxDivHeight);\n  }\n  updateOffset() {\n    if (!this.stretching) {\n      return;\n    }\n    const newScrollY = this.beans.ctrlsSvc.getScrollFeature().getVScrollPosition().top;\n    const newBodyHeight = this.getUiBodyHeight();\n    const atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n    if (atLeastOneChanged) {\n      this.scrollY = newScrollY;\n      this.uiBodyHeight = newBodyHeight;\n      this.calculateOffset();\n    }\n  }\n  calculateOffset() {\n    this.setUiContainerHeight(this.maxDivHeight);\n    this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n    this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n    const scrollPercent = this.scrollY / this.maxScrollY;\n    const divStretchOffset = scrollPercent * this.pixelsToShave;\n    _logIfDebug(\n      this.gos,\n      `RowContainerHeightService - Div Stretch Offset = ${divStretchOffset} (${this.pixelsToShave} * ${scrollPercent})`\n    );\n    this.setDivStretchOffset(divStretchOffset);\n  }\n  setUiContainerHeight(height) {\n    if (height !== this.uiContainerHeight) {\n      this.uiContainerHeight = height;\n      this.eventSvc.dispatchEvent({ type: \"rowContainerHeightChanged\" });\n    }\n  }\n  clearOffset() {\n    this.setUiContainerHeight(this.modelHeight);\n    this.pixelsToShave = 0;\n    this.setDivStretchOffset(0);\n  }\n  setDivStretchOffset(newOffset) {\n    const newOffsetFloor = typeof newOffset === \"number\" ? Math.floor(newOffset) : null;\n    if (this.divStretchOffset === newOffsetFloor) {\n      return;\n    }\n    this.divStretchOffset = newOffsetFloor;\n    this.eventSvc.dispatchEvent({ type: \"heightScaleChanged\" });\n  }\n  setModelHeight(modelHeight) {\n    this.modelHeight = modelHeight;\n    this.stretching = modelHeight != null && // null happens when in print layout\n    this.maxDivHeight > 0 && modelHeight > this.maxDivHeight;\n    if (this.stretching) {\n      this.calculateOffset();\n    } else {\n      this.clearOffset();\n    }\n  }\n  getRealPixelPosition(modelPixel) {\n    return modelPixel - this.divStretchOffset;\n  }\n  getUiBodyHeight() {\n    const pos = this.beans.ctrlsSvc.getScrollFeature().getVScrollPosition();\n    return pos.bottom - pos.top;\n  }\n  getScrollPositionForPixel(rowTop) {\n    if (this.pixelsToShave <= 0) {\n      return rowTop;\n    }\n    const modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n    const scrollPercent = rowTop / modelMaxScroll;\n    const scrollPixel = this.maxScrollY * scrollPercent;\n    return scrollPixel;\n  }\n};\n\n// packages/ag-grid-community/src/rendering/rowRenderer.ts\nvar ROW_ANIMATION_TIMEOUT = 400;\nvar RowRenderer = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowRenderer\";\n    this.destroyFuncsForColumnListeners = [];\n    // map of row ids to row objects. keeps track of which elements\n    // are rendered for which rows in the dom.\n    this.rowCtrlsByRowIndex = {};\n    this.zombieRowCtrls = {};\n    this.allRowCtrls = [];\n    this.topRowCtrls = [];\n    this.bottomRowCtrls = [];\n    // we only allow one refresh at a time, otherwise the internal memory structure here\n    // will get messed up. this can happen if the user has a cellRenderer, and inside the\n    // renderer they call an API method that results in another pass of the refresh,\n    // then it will be trying to draw rows in the middle of a refresh.\n    this.refreshInProgress = false;\n    this.dataFirstRenderedFired = false;\n    this.setupRangeSelectionListeners = () => {\n      const onCellSelectionChanged = () => {\n        this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onCellSelectionChanged());\n      };\n      const onColumnMovedPinnedVisible = () => {\n        this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.updateRangeBordersIfRangeCount());\n      };\n      const addCellSelectionListeners = () => {\n        this.eventSvc.addEventListener(\"cellSelectionChanged\", onCellSelectionChanged);\n        this.eventSvc.addEventListener(\"columnMoved\", onColumnMovedPinnedVisible);\n        this.eventSvc.addEventListener(\"columnPinned\", onColumnMovedPinnedVisible);\n        this.eventSvc.addEventListener(\"columnVisible\", onColumnMovedPinnedVisible);\n      };\n      const removeCellSelectionListeners = () => {\n        this.eventSvc.removeEventListener(\"cellSelectionChanged\", onCellSelectionChanged);\n        this.eventSvc.removeEventListener(\"columnMoved\", onColumnMovedPinnedVisible);\n        this.eventSvc.removeEventListener(\"columnPinned\", onColumnMovedPinnedVisible);\n        this.eventSvc.removeEventListener(\"columnVisible\", onColumnMovedPinnedVisible);\n      };\n      this.addDestroyFunc(() => removeCellSelectionListeners());\n      this.addManagedPropertyListeners([\"enableRangeSelection\", \"cellSelection\"], () => {\n        const isEnabled = _isCellSelectionEnabled(this.gos);\n        if (isEnabled) {\n          addCellSelectionListeners();\n        } else {\n          removeCellSelectionListeners();\n        }\n      });\n      const cellSelectionEnabled = _isCellSelectionEnabled(this.gos);\n      if (cellSelectionEnabled) {\n        addCellSelectionListeners();\n      }\n    };\n  }\n  wireBeans(beans) {\n    this.pageBounds = beans.pageBounds;\n    this.colModel = beans.colModel;\n    this.pinnedRowModel = beans.pinnedRowModel;\n    this.rowModel = beans.rowModel;\n    this.focusSvc = beans.focusSvc;\n    this.rowContainerHeight = beans.rowContainerHeight;\n    this.ctrlsSvc = beans.ctrlsSvc;\n  }\n  postConstruct() {\n    this.ctrlsSvc.whenReady(this, (p) => {\n      this.gridBodyCtrl = p.gridBodyCtrl;\n      this.initialise();\n    });\n  }\n  initialise() {\n    this.addManagedEventListeners({\n      paginationChanged: this.onPageLoaded.bind(this),\n      pinnedRowDataChanged: this.onPinnedRowDataChanged.bind(this),\n      pinnedRowsChanged: this.onPinnedRowsChanged.bind(this),\n      displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this),\n      bodyScroll: this.onBodyScroll.bind(this),\n      bodyHeightChanged: this.redraw.bind(this, {})\n    });\n    this.addManagedPropertyListeners([\"domLayout\", \"embedFullWidthRows\"], () => this.onDomLayoutChanged());\n    this.addManagedPropertyListeners([\"suppressMaxRenderedRowRestriction\", \"rowBuffer\"], () => this.redraw());\n    this.addManagedPropertyListener(\"suppressCellFocus\", (e) => this.onSuppressCellFocusChanged(e.currentValue));\n    this.addManagedPropertyListeners(\n      [\n        \"groupSuppressBlankHeader\",\n        \"getBusinessKeyForNode\",\n        \"fullWidthCellRenderer\",\n        \"fullWidthCellRendererParams\",\n        \"suppressStickyTotalRow\",\n        \"groupRowRenderer\",\n        \"groupRowRendererParams\",\n        // maybe only needs to refresh FW rows...\n        \"loadingCellRenderer\",\n        \"loadingCellRendererParams\",\n        \"detailCellRenderer\",\n        \"detailCellRendererParams\",\n        \"enableRangeSelection\",\n        \"enableCellTextSelection\"\n      ],\n      () => this.redrawRows()\n    );\n    this.addManagedPropertyListener(\"cellSelection\", ({ currentValue, previousValue }) => {\n      if (!previousValue && currentValue || previousValue && !currentValue) {\n        this.redrawRows();\n      }\n    });\n    const { stickyRowSvc, gos, showRowGroupCols } = this.beans;\n    if (showRowGroupCols) {\n      this.addManagedPropertyListener(\"showOpenedGroup\", () => {\n        const columns = showRowGroupCols.getShowRowGroupCols();\n        if (columns.length) {\n          this.refreshCells({ columns, force: true });\n        }\n      });\n    }\n    if (stickyRowSvc) {\n      this.stickyRowFeature = stickyRowSvc.createStickyRowFeature(\n        this,\n        this.createRowCon.bind(this),\n        this.destroyRowCtrls.bind(this)\n      );\n    } else {\n      const gridBodyCtrl = this.gridBodyCtrl;\n      gridBodyCtrl.setStickyTopHeight(0);\n      gridBodyCtrl.setStickyBottomHeight(0);\n    }\n    this.registerCellEventListeners();\n    this.initialiseCache();\n    this.printLayout = _isDomLayout(gos, \"print\");\n    this.embedFullWidthRows = this.printLayout || gos.get(\"embedFullWidthRows\");\n    this.redrawAfterModelUpdate();\n  }\n  initialiseCache() {\n    if (this.gos.get(\"keepDetailRows\")) {\n      const countProp = this.getKeepDetailRowsCount();\n      const count = countProp != null ? countProp : 3;\n      this.cachedRowCtrls = new RowCtrlCache(count);\n    }\n  }\n  getKeepDetailRowsCount() {\n    return this.gos.get(\"keepDetailRowsCount\");\n  }\n  getStickyTopRowCtrls() {\n    return this.stickyRowFeature?.stickyTopRowCtrls ?? [];\n  }\n  getStickyBottomRowCtrls() {\n    return this.stickyRowFeature?.stickyBottomRowCtrls ?? [];\n  }\n  updateAllRowCtrls() {\n    const liveList = Object.values(this.rowCtrlsByRowIndex);\n    const zombieList = Object.values(this.zombieRowCtrls);\n    const cachedList = this.cachedRowCtrls?.getEntries() ?? [];\n    if (zombieList.length > 0 || cachedList.length > 0) {\n      this.allRowCtrls = [...liveList, ...zombieList, ...cachedList];\n    } else {\n      this.allRowCtrls = liveList;\n    }\n  }\n  /**\n   * Checks if the cell is rendered or not. Also returns true if row ctrl is present but has not rendered\n   * cells yet.\n   * @returns true if cellCtrl is present, or if the row is present but has not rendered rows yet\n   */\n  isCellBeingRendered(rowIndex, column) {\n    const rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n    if (!column || !rowCtrl) {\n      return !!rowCtrl;\n    }\n    if (rowCtrl.isFullWidth()) {\n      return true;\n    }\n    const spannedCell = this.beans.spannedRowRenderer?.getCellByPosition({ rowIndex, column, rowPinned: null });\n    return !!spannedCell || !!rowCtrl.getCellCtrl(column) || !rowCtrl.isRowRendered();\n  }\n  /**\n   * Notifies all row and cell controls of any change in focused cell.\n   * @param event cell focused event\n   */\n  updateCellFocus(event) {\n    this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onCellFocused(event));\n    this.getFullWidthRowCtrls().forEach((rowCtrl) => rowCtrl.onFullWidthRowFocused(event));\n  }\n  /**\n   * Called when a new cell is focused in the grid\n   * - if the focused cell isn't rendered; re-draw rows to dry to render it\n   * - subsequently updates all cell and row controls with the new focused cell\n   * @param event cell focused event\n   */\n  onCellFocusChanged(event) {\n    if (event && event.rowIndex != null && !event.rowPinned) {\n      const col = this.beans.colModel.getCol(event.column) ?? void 0;\n      if (!this.isCellBeingRendered(event.rowIndex, col)) {\n        this.redraw();\n      }\n    }\n    this.updateCellFocus(event);\n  }\n  onSuppressCellFocusChanged(suppressCellFocus) {\n    this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onSuppressCellFocusChanged(suppressCellFocus));\n    this.getFullWidthRowCtrls().forEach((rowCtrl) => rowCtrl.onSuppressCellFocusChanged(suppressCellFocus));\n  }\n  // in a clean design, each cell would register for each of these events. however when scrolling, all the cells\n  // registering and de-registering for events is a performance bottleneck. so we register here once and inform\n  // all active cells.\n  registerCellEventListeners() {\n    this.addManagedEventListeners({\n      cellFocused: (event) => this.onCellFocusChanged(event),\n      cellFocusCleared: () => this.updateCellFocus(),\n      flashCells: (event) => {\n        const { cellFlashSvc } = this.beans;\n        if (cellFlashSvc) {\n          this.getAllCellCtrls().forEach((cellCtrl) => cellFlashSvc.onFlashCells(cellCtrl, event));\n        }\n      },\n      columnHoverChanged: () => {\n        this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onColumnHover());\n      },\n      displayedColumnsChanged: () => {\n        this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onDisplayedColumnsChanged());\n      },\n      displayedColumnsWidthChanged: () => {\n        if (this.printLayout) {\n          this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onLeftChanged());\n        }\n      }\n    });\n    this.setupRangeSelectionListeners();\n    this.refreshListenersToColumnsForCellComps();\n    this.addManagedEventListeners({\n      gridColumnsChanged: this.refreshListenersToColumnsForCellComps.bind(this)\n    });\n    this.addDestroyFunc(this.removeGridColumnListeners.bind(this));\n  }\n  // executes all functions in destroyFuncsForColumnListeners and then clears the list\n  removeGridColumnListeners() {\n    this.destroyFuncsForColumnListeners.forEach((func) => func());\n    this.destroyFuncsForColumnListeners.length = 0;\n  }\n  // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.\n  // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to\n  // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here\n  // once instead.\n  refreshListenersToColumnsForCellComps() {\n    this.removeGridColumnListeners();\n    const cols = this.colModel.getCols();\n    cols.forEach((col) => {\n      const forEachCellWithThisCol = (callback) => {\n        this.getAllCellCtrls().forEach((cellCtrl) => {\n          if (cellCtrl.column === col) {\n            callback(cellCtrl);\n          }\n        });\n      };\n      const leftChangedListener = () => {\n        forEachCellWithThisCol((cellCtrl) => cellCtrl.onLeftChanged());\n      };\n      const widthChangedListener = () => {\n        forEachCellWithThisCol((cellCtrl) => cellCtrl.onWidthChanged());\n      };\n      const firstRightPinnedChangedListener = () => {\n        forEachCellWithThisCol((cellCtrl) => cellCtrl.onFirstRightPinnedChanged());\n      };\n      const lastLeftPinnedChangedListener = () => {\n        forEachCellWithThisCol((cellCtrl) => cellCtrl.onLastLeftPinnedChanged());\n      };\n      const colDefChangedListener = () => {\n        forEachCellWithThisCol((cellCtrl) => cellCtrl.onColDefChanged());\n      };\n      col.__addEventListener(\"leftChanged\", leftChangedListener);\n      col.__addEventListener(\"widthChanged\", widthChangedListener);\n      col.__addEventListener(\"firstRightPinnedChanged\", firstRightPinnedChangedListener);\n      col.__addEventListener(\"lastLeftPinnedChanged\", lastLeftPinnedChangedListener);\n      col.__addEventListener(\"colDefChanged\", colDefChangedListener);\n      this.destroyFuncsForColumnListeners.push(() => {\n        col.__removeEventListener(\"leftChanged\", leftChangedListener);\n        col.__removeEventListener(\"widthChanged\", widthChangedListener);\n        col.__removeEventListener(\"firstRightPinnedChanged\", firstRightPinnedChangedListener);\n        col.__removeEventListener(\"lastLeftPinnedChanged\", lastLeftPinnedChangedListener);\n        col.__removeEventListener(\"colDefChanged\", colDefChangedListener);\n      });\n    });\n  }\n  onDomLayoutChanged() {\n    const printLayout = _isDomLayout(this.gos, \"print\");\n    const embedFullWidthRows = printLayout || this.gos.get(\"embedFullWidthRows\");\n    const destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n    this.printLayout = printLayout;\n    this.embedFullWidthRows = embedFullWidthRows;\n    if (destroyRows) {\n      this.redrawAfterModelUpdate({ domLayoutChanged: true });\n    }\n  }\n  // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n  // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n  datasourceChanged() {\n    this.firstRenderedRow = 0;\n    this.lastRenderedRow = -1;\n    const rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n    this.removeRowCtrls(rowIndexesToRemove);\n  }\n  onPageLoaded(event) {\n    const params = {\n      recycleRows: event.keepRenderedRows,\n      animate: event.animate,\n      newData: event.newData,\n      newPage: event.newPage,\n      // because this is a model updated event (not pinned rows), we\n      // can skip updating the pinned rows. this is needed so that if user\n      // is doing transaction updates, the pinned rows are not getting constantly\n      // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n      onlyBody: true\n    };\n    this.redrawAfterModelUpdate(params);\n  }\n  /**\n   * @param column AgColumn\n   * @returns An array with HTMLElement for every cell of the column passed as param.\n   * If the cell is spanning across multiple columns, it only returns the html element\n   * if the column passed is the first column of the span (used for auto width calculation).\n   */\n  getAllCellsNotSpanningForColumn(column) {\n    const res = [];\n    this.getAllRowCtrls().forEach((rowCtrl) => {\n      const eCell = rowCtrl.getCellCtrl(column, true)?.eGui;\n      if (eCell) {\n        res.push(eCell);\n      }\n    });\n    return res;\n  }\n  refreshFloatingRowComps(recycleRows = true) {\n    this.refreshFloatingRows(this.topRowCtrls, \"top\", recycleRows);\n    this.refreshFloatingRows(this.bottomRowCtrls, \"bottom\", recycleRows);\n  }\n  /**\n   * Determines which row controllers need to be destroyed and re-created vs which ones can\n   * be re-used.\n   *\n   * This is operation is to pinned/floating rows as `this.recycleRows` is to normal/body rows.\n   *\n   * All `RowCtrl` instances in `rowCtrls` that don't correspond to `RowNode` instances in `rowNodes` are destroyed.\n   * All `RowNode` instances in `rowNodes` that don't correspond to `RowCtrl` instances in `rowCtrls` are created.\n   * All instances in `rowCtrls` must be in the same order as their corresponding nodes in `rowNodes`.\n   *\n   * @param rowCtrls The list of existing row controllers\n   * @param rowNodes The canonical list of row nodes that should have associated controllers\n   */\n  refreshFloatingRows(rowCtrls, floating, recycleRows) {\n    const { pinnedRowModel, beans, printLayout } = this;\n    const rowCtrlMap = Object.fromEntries(rowCtrls.map((ctrl) => [ctrl.rowNode.id, ctrl]));\n    pinnedRowModel?.forEachPinnedRow(floating, (node, i) => {\n      const rowCtrl = rowCtrls[i];\n      const rowCtrlDoesNotExist = rowCtrl && pinnedRowModel.getPinnedRowById(rowCtrl.rowNode.id, floating) === void 0;\n      if (rowCtrlDoesNotExist) {\n        rowCtrl.destroyFirstPass();\n        rowCtrl.destroySecondPass();\n      }\n      if (node.id in rowCtrlMap && recycleRows) {\n        rowCtrls[i] = rowCtrlMap[node.id];\n        delete rowCtrlMap[node.id];\n      } else {\n        rowCtrls[i] = new RowCtrl(node, beans, false, false, printLayout);\n      }\n    });\n    const rowNodeCount = (floating === \"top\" ? pinnedRowModel?.getPinnedTopRowCount() : pinnedRowModel?.getPinnedBottomRowCount()) ?? 0;\n    rowCtrls.length = rowNodeCount;\n  }\n  onPinnedRowDataChanged() {\n    const params = {\n      recycleRows: true\n    };\n    this.redrawAfterModelUpdate(params);\n  }\n  onPinnedRowsChanged() {\n    this.redrawAfterModelUpdate({ recycleRows: true });\n  }\n  redrawRow(rowNode, suppressEvent = false) {\n    if (rowNode.sticky) {\n      this.stickyRowFeature?.refreshStickyNode(rowNode);\n    } else if (this.cachedRowCtrls?.has(rowNode)) {\n      this.cachedRowCtrls.removeRow(rowNode);\n      return;\n    } else {\n      const destroyAndRecreateCtrl = (dataStruct) => {\n        const ctrl = dataStruct[rowNode.rowIndex];\n        if (!ctrl) {\n          return;\n        }\n        if (ctrl.rowNode !== rowNode) {\n          return;\n        }\n        ctrl.destroyFirstPass();\n        ctrl.destroySecondPass();\n        dataStruct[rowNode.rowIndex] = this.createRowCon(rowNode, false, false);\n      };\n      switch (rowNode.rowPinned) {\n        case \"top\":\n          destroyAndRecreateCtrl(this.topRowCtrls);\n          break;\n        case \"bottom\":\n          destroyAndRecreateCtrl(this.bottomRowCtrls);\n          break;\n        default:\n          destroyAndRecreateCtrl(this.rowCtrlsByRowIndex);\n          this.updateAllRowCtrls();\n      }\n    }\n    if (!suppressEvent) {\n      this.dispatchDisplayedRowsChanged(false);\n    }\n  }\n  redrawRows(rowNodes) {\n    const partialRefresh = rowNodes != null;\n    if (partialRefresh) {\n      rowNodes?.forEach((node) => this.redrawRow(node, true));\n      this.dispatchDisplayedRowsChanged(false);\n      return;\n    }\n    this.redrawAfterModelUpdate();\n  }\n  // gets called from:\n  // +) initialisation (in registerGridComp) params = null\n  // +) onDomLayoutChanged, params = null\n  // +) onPageLoaded, recycleRows, animate, newData, newPage from event, onlyBody=true\n  // +) onPinnedRowDataChanged, recycleRows = true\n  // +) redrawRows (from Grid API), recycleRows = true/false\n  redrawAfterModelUpdate(params = {}) {\n    this.getLockOnRefresh();\n    const focusedCell = this.beans.focusSvc?.getFocusCellToUseAfterRefresh();\n    this.updateContainerHeights();\n    this.scrollToTopIfNewData(params);\n    const recycleRows = !params.domLayoutChanged && !!params.recycleRows;\n    const animate = params.animate && _isAnimateRows(this.gos);\n    const rowsToRecycle = recycleRows ? this.getRowsToRecycle() : null;\n    if (!recycleRows) {\n      this.removeAllRowComps();\n    }\n    this.workOutFirstAndLastRowsToRender();\n    const { stickyRowFeature, gos } = this;\n    if (stickyRowFeature) {\n      stickyRowFeature.checkStickyRows();\n      const extraHeight = stickyRowFeature.extraTopHeight + stickyRowFeature.extraBottomHeight;\n      if (extraHeight) {\n        this.updateContainerHeights(extraHeight);\n      }\n    }\n    this.recycleRows(rowsToRecycle, animate);\n    this.gridBodyCtrl.updateRowCount();\n    if (!params.onlyBody) {\n      this.refreshFloatingRowComps(gos.get(\"enableRowPinning\") ? recycleRows : void 0);\n    }\n    this.dispatchDisplayedRowsChanged();\n    if (focusedCell != null) {\n      this.restoreFocusedCell(focusedCell);\n    }\n    this.releaseLockOnRefresh();\n  }\n  scrollToTopIfNewData(params) {\n    const scrollToTop = params.newData || params.newPage;\n    const suppressScrollToTop = this.gos.get(\"suppressScrollOnNewData\");\n    if (scrollToTop && !suppressScrollToTop) {\n      this.gridBodyCtrl.scrollFeature.scrollToTop();\n      this.stickyRowFeature?.resetOffsets();\n    }\n  }\n  updateContainerHeights(additionalHeight = 0) {\n    const { rowContainerHeight } = this;\n    if (this.printLayout) {\n      rowContainerHeight.setModelHeight(null);\n      return;\n    }\n    let containerHeight = this.pageBounds.getCurrentPageHeight();\n    if (containerHeight === 0) {\n      containerHeight = 1;\n    }\n    rowContainerHeight.setModelHeight(containerHeight + additionalHeight);\n  }\n  getLockOnRefresh() {\n    if (this.refreshInProgress) {\n      throw new Error(_errMsg(252));\n    }\n    this.refreshInProgress = true;\n    this.beans.frameworkOverrides.getLockOnRefresh?.();\n  }\n  releaseLockOnRefresh() {\n    this.refreshInProgress = false;\n    this.beans.frameworkOverrides.releaseLockOnRefresh?.();\n  }\n  isRefreshInProgress() {\n    return this.refreshInProgress;\n  }\n  // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n  // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n  // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n  // edited cell).\n  restoreFocusedCell(cellPosition) {\n    if (!cellPosition) {\n      return;\n    }\n    const focusSvc = this.beans.focusSvc;\n    const cellToFocus = this.findPositionToFocus(cellPosition);\n    if (!cellToFocus) {\n      focusSvc.focusHeaderPosition({\n        headerPosition: {\n          headerRowIndex: getFocusHeaderRowCount(this.beans) - 1,\n          column: cellPosition.column\n        }\n      });\n      return;\n    }\n    if (cellPosition.rowIndex !== cellToFocus.rowIndex || cellPosition.rowPinned != cellToFocus.rowPinned) {\n      focusSvc.setFocusedCell({\n        ...cellToFocus,\n        preventScrollOnBrowserFocus: true,\n        forceBrowserFocus: true\n      });\n      return;\n    }\n    if (!focusSvc.doesRowOrCellHaveBrowserFocus()) {\n      this.updateCellFocus(\n        _addGridCommonParams(this.gos, {\n          ...cellToFocus,\n          forceBrowserFocus: true,\n          preventScrollOnBrowserFocus: true,\n          type: \"cellFocused\"\n        })\n      );\n    }\n  }\n  findPositionToFocus(cellPosition) {\n    const { pagination, pageBounds } = this.beans;\n    let rowPosition = cellPosition;\n    if (rowPosition.rowPinned == null && pagination && pageBounds && !pagination.isRowInPage(rowPosition.rowIndex)) {\n      rowPosition = { rowPinned: null, rowIndex: pageBounds.getFirstRow() };\n    }\n    while (rowPosition) {\n      if (rowPosition.rowPinned == null && pageBounds) {\n        if (rowPosition.rowIndex < pageBounds.getFirstRow()) {\n          rowPosition = _getRowAbove(this.beans, { rowPinned: null, rowIndex: 0 });\n          if (!rowPosition) {\n            return null;\n          }\n        } else if (rowPosition.rowIndex > pageBounds.getLastRow()) {\n          rowPosition = { rowPinned: null, rowIndex: pageBounds.getLastRow() };\n        }\n      }\n      const row = this.getRowByPosition(rowPosition);\n      if (row?.isAlive()) {\n        return { ...row.getRowPosition(), column: cellPosition.column };\n      }\n      rowPosition = _getRowAbove(this.beans, rowPosition);\n    }\n    return null;\n  }\n  getAllCellCtrls() {\n    const res = [];\n    const rowCtrls = this.getAllRowCtrls();\n    const rowCtrlsLength = rowCtrls.length;\n    for (let i = 0; i < rowCtrlsLength; i++) {\n      const cellCtrls = rowCtrls[i].getAllCellCtrls();\n      const cellCtrlsLength = cellCtrls.length;\n      for (let j = 0; j < cellCtrlsLength; j++) {\n        res.push(cellCtrls[j]);\n      }\n    }\n    return res;\n  }\n  getAllRowCtrls() {\n    const { spannedRowRenderer } = this.beans;\n    const stickyTopRowCtrls = this.getStickyTopRowCtrls();\n    const stickyBottomRowCtrls = this.getStickyBottomRowCtrls();\n    const res = [\n      ...this.topRowCtrls,\n      ...this.bottomRowCtrls,\n      ...stickyTopRowCtrls,\n      ...stickyBottomRowCtrls,\n      ...spannedRowRenderer?.getCtrls(\"top\") ?? [],\n      ...spannedRowRenderer?.getCtrls(\"bottom\") ?? [],\n      ...spannedRowRenderer?.getCtrls(\"center\") ?? [],\n      ...Object.values(this.rowCtrlsByRowIndex)\n    ];\n    return res;\n  }\n  addRenderedRowListener(eventName, rowIndex, callback) {\n    const rowComp = this.rowCtrlsByRowIndex[rowIndex];\n    if (rowComp) {\n      rowComp.addEventListener(eventName, callback);\n    }\n  }\n  refreshCells(params = {}) {\n    const refreshCellParams = {\n      forceRefresh: params.force,\n      newData: false,\n      suppressFlash: params.suppressFlash\n    };\n    for (const cellCtrl of this.getCellCtrls(params.rowNodes, params.columns)) {\n      cellCtrl.refreshOrDestroyCell(refreshCellParams);\n    }\n    this.refreshFullWidth(params.rowNodes);\n  }\n  refreshFullWidth(rowNodes) {\n    if (!rowNodes) {\n      return;\n    }\n    let rowRedrawn = false;\n    for (const rowCtrl of this.getRowCtrls(rowNodes)) {\n      if (!rowCtrl.isFullWidth()) {\n        continue;\n      }\n      const refreshed = rowCtrl.refreshFullWidth();\n      if (!refreshed) {\n        rowRedrawn = true;\n        this.redrawRow(rowCtrl.rowNode, true);\n      }\n    }\n    if (rowRedrawn) {\n      this.dispatchDisplayedRowsChanged(false);\n    }\n  }\n  /**\n   * @param rowNodes if provided, returns the RowCtrls for the provided rowNodes. otherwise returns all RowCtrls.\n   */\n  getRowCtrls(rowNodes) {\n    const rowIdsMap = mapRowNodes(rowNodes);\n    const allRowCtrls = this.getAllRowCtrls();\n    if (!rowNodes || !rowIdsMap) {\n      return allRowCtrls;\n    }\n    return allRowCtrls.filter((rowCtrl) => {\n      const rowNode = rowCtrl.rowNode;\n      return isRowInMap(rowNode, rowIdsMap);\n    });\n  }\n  // returns CellCtrl's that match the provided rowNodes and columns. eg if one row node\n  // and two columns provided, that identifies 4 cells, so 4 CellCtrl's returned.\n  getCellCtrls(rowNodes, columns) {\n    let colIdsMap;\n    if (_exists(columns)) {\n      colIdsMap = {};\n      columns.forEach((colKey) => {\n        const column = this.colModel.getCol(colKey);\n        if (_exists(column)) {\n          colIdsMap[column.getId()] = true;\n        }\n      });\n    }\n    const res = [];\n    this.getRowCtrls(rowNodes).forEach((rowCtrl) => {\n      rowCtrl.getAllCellCtrls().forEach((cellCtrl) => {\n        const colId = cellCtrl.column.getId();\n        const excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n        if (excludeColFromRefresh) {\n          return;\n        }\n        res.push(cellCtrl);\n      });\n    });\n    return res;\n  }\n  destroy() {\n    this.removeAllRowComps(true);\n    super.destroy();\n  }\n  removeAllRowComps(suppressAnimation = false) {\n    const rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n    this.removeRowCtrls(rowIndexesToRemove, suppressAnimation);\n    this.stickyRowFeature?.destroyStickyCtrls();\n  }\n  getRowsToRecycle() {\n    const stubNodeIndexes = [];\n    for (const index of Object.keys(this.rowCtrlsByRowIndex)) {\n      const rowCtrl = this.rowCtrlsByRowIndex[index];\n      const stubNode = rowCtrl.rowNode.id == null;\n      if (stubNode) {\n        stubNodeIndexes.push(index);\n      }\n    }\n    this.removeRowCtrls(stubNodeIndexes);\n    const ctrlsByIdMap = {};\n    for (const rowCtrl of Object.values(this.rowCtrlsByRowIndex)) {\n      const rowNode = rowCtrl.rowNode;\n      ctrlsByIdMap[rowNode.id] = rowCtrl;\n    }\n    this.rowCtrlsByRowIndex = {};\n    return ctrlsByIdMap;\n  }\n  // takes array of row indexes\n  removeRowCtrls(rowsToRemove, suppressAnimation = false) {\n    rowsToRemove.forEach((indexToRemove) => {\n      const rowCtrl = this.rowCtrlsByRowIndex[indexToRemove];\n      if (rowCtrl) {\n        rowCtrl.destroyFirstPass(suppressAnimation);\n        rowCtrl.destroySecondPass();\n      }\n      delete this.rowCtrlsByRowIndex[indexToRemove];\n    });\n  }\n  onBodyScroll(e) {\n    if (e.direction !== \"vertical\") {\n      return;\n    }\n    this.redraw({ afterScroll: true });\n  }\n  // gets called when rows don't change, but viewport does, so after:\n  // 1) height of grid body changes, ie number of displayed rows has changed\n  // 2) grid scrolled to new position\n  // 3) ensure index visible (which is a scroll)\n  redraw(params = {}) {\n    const { focusSvc, animationFrameSvc } = this.beans;\n    const { afterScroll } = params;\n    let cellFocused;\n    const stickyRowFeature = this.stickyRowFeature;\n    if (stickyRowFeature) {\n      cellFocused = focusSvc?.getFocusCellToUseAfterRefresh() || void 0;\n    }\n    const oldFirstRow = this.firstRenderedRow;\n    const oldLastRow = this.lastRenderedRow;\n    this.workOutFirstAndLastRowsToRender();\n    let hasStickyRowChanges = false;\n    if (stickyRowFeature) {\n      hasStickyRowChanges = stickyRowFeature.checkStickyRows();\n      const extraHeight = stickyRowFeature.extraTopHeight + stickyRowFeature.extraBottomHeight;\n      if (extraHeight) {\n        this.updateContainerHeights(extraHeight);\n      }\n    }\n    const rangeChanged = this.firstRenderedRow !== oldFirstRow || this.lastRenderedRow !== oldLastRow;\n    if (afterScroll && !hasStickyRowChanges && !rangeChanged) {\n      return;\n    }\n    this.getLockOnRefresh();\n    this.recycleRows(null, false, afterScroll);\n    this.releaseLockOnRefresh();\n    this.dispatchDisplayedRowsChanged(afterScroll && !hasStickyRowChanges);\n    if (cellFocused != null) {\n      const newFocusedCell = focusSvc?.getFocusCellToUseAfterRefresh();\n      if (cellFocused != null && newFocusedCell == null) {\n        animationFrameSvc?.flushAllFrames();\n        this.restoreFocusedCell(cellFocused);\n      }\n    }\n  }\n  removeRowCompsNotToDraw(indexesToDraw, suppressAnimation) {\n    const indexesToDrawMap = {};\n    indexesToDraw.forEach((index) => indexesToDrawMap[index] = true);\n    const existingIndexes = Object.keys(this.rowCtrlsByRowIndex);\n    const indexesNotToDraw = existingIndexes.filter((index) => !indexesToDrawMap[index]);\n    this.removeRowCtrls(indexesNotToDraw, suppressAnimation);\n  }\n  calculateIndexesToDraw(rowsToRecycle) {\n    const indexesToDraw = [];\n    for (let i = this.firstRenderedRow; i <= this.lastRenderedRow; i++) {\n      indexesToDraw.push(i);\n    }\n    const pagination = this.beans.pagination;\n    const focusedRowIndex = this.beans.focusSvc?.getFocusedCell()?.rowIndex;\n    if (focusedRowIndex != null && (focusedRowIndex < this.firstRenderedRow || focusedRowIndex > this.lastRenderedRow) && (!pagination || pagination.isRowInPage(focusedRowIndex)) && focusedRowIndex < this.rowModel.getRowCount()) {\n      indexesToDraw.push(focusedRowIndex);\n    }\n    const checkRowToDraw = (rowComp) => {\n      const index = rowComp.rowNode.rowIndex;\n      if (index == null || index === focusedRowIndex) {\n        return;\n      }\n      if (index < this.firstRenderedRow || index > this.lastRenderedRow) {\n        if (this.doNotUnVirtualiseRow(rowComp)) {\n          indexesToDraw.push(index);\n        }\n      }\n    };\n    for (const rowCtrl of Object.values(this.rowCtrlsByRowIndex)) {\n      checkRowToDraw(rowCtrl);\n    }\n    if (rowsToRecycle) {\n      for (const rowCtrl of Object.values(rowsToRecycle)) {\n        checkRowToDraw(rowCtrl);\n      }\n    }\n    indexesToDraw.sort((a, b) => a - b);\n    const ret = [];\n    for (let i = 0; i < indexesToDraw.length; i++) {\n      const currRow = indexesToDraw[i];\n      const rowNode = this.rowModel.getRow(currRow);\n      if (rowNode && !rowNode.sticky) {\n        ret.push(currRow);\n      }\n    }\n    return ret;\n  }\n  recycleRows(rowsToRecycle, animate = false, afterScroll = false) {\n    const indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);\n    if (this.printLayout || afterScroll) {\n      animate = false;\n    }\n    this.removeRowCompsNotToDraw(indexesToDraw, !animate);\n    const rowCtrls = [];\n    indexesToDraw.forEach((rowIndex) => {\n      const rowCtrl = this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);\n      if (_exists(rowCtrl)) {\n        rowCtrls.push(rowCtrl);\n      }\n    });\n    if (rowsToRecycle) {\n      const { animationFrameSvc } = this.beans;\n      const useAnimationFrame = animationFrameSvc?.active && afterScroll && !this.printLayout;\n      if (useAnimationFrame) {\n        animationFrameSvc.addDestroyTask(() => {\n          this.destroyRowCtrls(rowsToRecycle, animate);\n          this.updateAllRowCtrls();\n          this.dispatchDisplayedRowsChanged();\n        });\n      } else {\n        this.destroyRowCtrls(rowsToRecycle, animate);\n      }\n    }\n    this.updateAllRowCtrls();\n  }\n  dispatchDisplayedRowsChanged(afterScroll = false) {\n    this.eventSvc.dispatchEvent({\n      type: \"displayedRowsChanged\",\n      afterScroll\n    });\n  }\n  onDisplayedColumnsChanged() {\n    const { visibleCols } = this.beans;\n    const pinningLeft = visibleCols.isPinningLeft();\n    const pinningRight = visibleCols.isPinningRight();\n    const atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n    if (atLeastOneChanged) {\n      this.pinningLeft = pinningLeft;\n      this.pinningRight = pinningRight;\n      if (this.embedFullWidthRows) {\n        this.redrawFullWidthEmbeddedRows();\n      }\n    }\n  }\n  // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n  // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n  redrawFullWidthEmbeddedRows() {\n    const rowsToRemove = [];\n    this.getFullWidthRowCtrls().forEach((fullWidthCtrl) => {\n      const rowIndex = fullWidthCtrl.rowNode.rowIndex;\n      rowsToRemove.push(rowIndex.toString());\n    });\n    this.refreshFloatingRowComps();\n    this.removeRowCtrls(rowsToRemove);\n    this.redraw({ afterScroll: true });\n  }\n  getFullWidthRowCtrls(rowNodes) {\n    const rowNodesMap = mapRowNodes(rowNodes);\n    return this.getAllRowCtrls().filter((rowCtrl) => {\n      if (!rowCtrl.isFullWidth()) {\n        return false;\n      }\n      const rowNode = rowCtrl.rowNode;\n      if (rowNodesMap != null && !isRowInMap(rowNode, rowNodesMap)) {\n        return false;\n      }\n      return true;\n    });\n  }\n  createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll) {\n    let rowNode;\n    let rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n    if (!rowCtrl) {\n      rowNode = this.rowModel.getRow(rowIndex);\n      if (_exists(rowNode) && _exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n        rowCtrl = rowsToRecycle[rowNode.id];\n        rowsToRecycle[rowNode.id] = null;\n      }\n    }\n    const creatingNewRowCtrl = !rowCtrl;\n    if (creatingNewRowCtrl) {\n      if (!rowNode) {\n        rowNode = this.rowModel.getRow(rowIndex);\n      }\n      if (_exists(rowNode)) {\n        rowCtrl = this.createRowCon(rowNode, animate, afterScroll);\n      } else {\n        return;\n      }\n    }\n    if (rowNode) {\n      rowNode.alreadyRendered = true;\n    }\n    this.rowCtrlsByRowIndex[rowIndex] = rowCtrl;\n    return rowCtrl;\n  }\n  destroyRowCtrls(rowCtrlsMap, animate) {\n    const executeInAWhileFuncs = [];\n    if (rowCtrlsMap) {\n      for (const rowCtrl of Object.values(rowCtrlsMap)) {\n        if (!rowCtrl) {\n          continue;\n        }\n        if (this.cachedRowCtrls && rowCtrl.isCacheable()) {\n          this.cachedRowCtrls.addRow(rowCtrl);\n          continue;\n        }\n        rowCtrl.destroyFirstPass(!animate);\n        if (animate) {\n          const instanceId = rowCtrl.instanceId;\n          this.zombieRowCtrls[instanceId] = rowCtrl;\n          executeInAWhileFuncs.push(() => {\n            rowCtrl.destroySecondPass();\n            delete this.zombieRowCtrls[instanceId];\n          });\n        } else {\n          rowCtrl.destroySecondPass();\n        }\n      }\n    }\n    if (animate) {\n      executeInAWhileFuncs.push(() => {\n        this.updateAllRowCtrls();\n        this.dispatchDisplayedRowsChanged();\n      });\n      window.setTimeout(() => executeInAWhileFuncs.forEach((func) => func()), ROW_ANIMATION_TIMEOUT);\n    }\n  }\n  getRowBuffer() {\n    return this.gos.get(\"rowBuffer\");\n  }\n  getRowBufferInPixels() {\n    const rowsToBuffer = this.getRowBuffer();\n    const defaultRowHeight = _getRowHeightAsNumber(this.beans);\n    return rowsToBuffer * defaultRowHeight;\n  }\n  workOutFirstAndLastRowsToRender() {\n    const { rowContainerHeight, pageBounds, rowModel } = this;\n    rowContainerHeight.updateOffset();\n    let newFirst;\n    let newLast;\n    if (!rowModel.isRowsToRender()) {\n      newFirst = 0;\n      newLast = -1;\n    } else if (this.printLayout) {\n      this.beans.environment.refreshRowHeightVariable();\n      newFirst = pageBounds.getFirstRow();\n      newLast = pageBounds.getLastRow();\n    } else {\n      const bufferPixels = this.getRowBufferInPixels();\n      const scrollFeature = this.ctrlsSvc.getScrollFeature();\n      const suppressRowVirtualisation = this.gos.get(\"suppressRowVirtualisation\");\n      let rowHeightsChanged = false;\n      let firstPixel;\n      let lastPixel;\n      do {\n        const paginationOffset = pageBounds.getPixelOffset();\n        const { pageFirstPixel, pageLastPixel } = pageBounds.getCurrentPagePixelRange();\n        const divStretchOffset = rowContainerHeight.divStretchOffset;\n        const bodyVRange = scrollFeature.getVScrollPosition();\n        const bodyTopPixel = bodyVRange.top;\n        const bodyBottomPixel = bodyVRange.bottom;\n        if (suppressRowVirtualisation) {\n          firstPixel = pageFirstPixel + divStretchOffset;\n          lastPixel = pageLastPixel + divStretchOffset;\n        } else {\n          firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;\n          lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;\n        }\n        this.firstVisibleVPixel = Math.max(bodyTopPixel + paginationOffset, pageFirstPixel) + divStretchOffset;\n        this.lastVisibleVPixel = Math.min(bodyBottomPixel + paginationOffset, pageLastPixel) + divStretchOffset;\n        rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n      } while (rowHeightsChanged);\n      let firstRowIndex = rowModel.getRowIndexAtPixel(firstPixel);\n      let lastRowIndex = rowModel.getRowIndexAtPixel(lastPixel);\n      const pageFirstRow = pageBounds.getFirstRow();\n      const pageLastRow = pageBounds.getLastRow();\n      if (firstRowIndex < pageFirstRow) {\n        firstRowIndex = pageFirstRow;\n      }\n      if (lastRowIndex > pageLastRow) {\n        lastRowIndex = pageLastRow;\n      }\n      newFirst = firstRowIndex;\n      newLast = lastRowIndex;\n    }\n    const rowLayoutNormal = _isDomLayout(this.gos, \"normal\");\n    const suppressRowCountRestriction = this.gos.get(\"suppressMaxRenderedRowRestriction\");\n    const rowBufferMaxSize = Math.max(this.getRowBuffer(), 500);\n    if (rowLayoutNormal && !suppressRowCountRestriction) {\n      if (newLast - newFirst > rowBufferMaxSize) {\n        newLast = newFirst + rowBufferMaxSize;\n      }\n    }\n    const firstDiffers = newFirst !== this.firstRenderedRow;\n    const lastDiffers = newLast !== this.lastRenderedRow;\n    if (firstDiffers || lastDiffers) {\n      this.firstRenderedRow = newFirst;\n      this.lastRenderedRow = newLast;\n      this.eventSvc.dispatchEvent({\n        type: \"viewportChanged\",\n        firstRow: newFirst,\n        lastRow: newLast\n      });\n    }\n  }\n  /**\n   * This event will only be fired once, and is queued until after the browser next renders.\n   * This allows us to fire an event during the start of the render cycle, when we first see data being rendered\n   * but not execute the event until all of the data has finished being rendered to the dom.\n   */\n  dispatchFirstDataRenderedEvent() {\n    if (this.dataFirstRenderedFired) {\n      return;\n    }\n    this.dataFirstRenderedFired = true;\n    _requestAnimationFrame(this.beans, () => {\n      this.beans.eventSvc.dispatchEvent({\n        type: \"firstDataRendered\",\n        firstRow: this.firstRenderedRow,\n        lastRow: this.lastRenderedRow\n      });\n    });\n  }\n  ensureAllRowsInRangeHaveHeightsCalculated(topPixel, bottomPixel) {\n    const pinnedRowHeightsChanged = this.pinnedRowModel?.ensureRowHeightsValid();\n    const stickyHeightsChanged = this.stickyRowFeature?.ensureRowHeightsValid();\n    const { pageBounds, rowModel } = this;\n    const rowModelHeightsChanged = rowModel.ensureRowHeightsValid(\n      topPixel,\n      bottomPixel,\n      pageBounds.getFirstRow(),\n      pageBounds.getLastRow()\n    );\n    if (rowModelHeightsChanged || stickyHeightsChanged) {\n      this.eventSvc.dispatchEvent({\n        type: \"recalculateRowBounds\"\n      });\n    }\n    if (stickyHeightsChanged || rowModelHeightsChanged || pinnedRowHeightsChanged) {\n      this.updateContainerHeights();\n      return true;\n    }\n    return false;\n  }\n  // check that none of the rows to remove are editing or focused as:\n  // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n  //    eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n  //    the edit is reset - so we want to keep it rendered.\n  // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n  //    otherwise the user can range select and drag (with focus cell going out of the viewport)\n  //    and then ctrl+c, nothing will happen if cell is removed from dom.\n  // c) if detail record of master detail, as users complained that the context of detail rows\n  //    was getting lost when detail row out of view. eg user expands to show detail row,\n  //    then manipulates the detail panel (eg sorts the detail grid), then context is lost\n  //    after detail panel is scrolled out of / into view.\n  doNotUnVirtualiseRow(rowCtrl) {\n    const REMOVE_ROW = false;\n    const KEEP_ROW = true;\n    const rowNode = rowCtrl.rowNode;\n    const rowHasFocus = this.focusSvc.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n    const rowIsEditing = rowCtrl.editing;\n    const rowIsDetail = rowNode.detail;\n    const mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;\n    if (!mightWantToKeepRow) {\n      return REMOVE_ROW;\n    }\n    const rowNodePresent = this.isRowPresent(rowNode);\n    return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n  }\n  isRowPresent(rowNode) {\n    if (!this.rowModel.isRowPresent(rowNode)) {\n      return false;\n    }\n    return this.beans.pagination?.isRowInPage(rowNode.rowIndex) ?? true;\n  }\n  createRowCon(rowNode, animate, afterScroll) {\n    const rowCtrlFromCache = this.cachedRowCtrls?.getRow(rowNode) ?? null;\n    if (rowCtrlFromCache) {\n      return rowCtrlFromCache;\n    }\n    const useAnimationFrameForCreate = afterScroll && !this.printLayout && !!this.beans.animationFrameSvc?.active;\n    const res = new RowCtrl(rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);\n    return res;\n  }\n  getRenderedNodes() {\n    const viewportRows = Object.values(this.rowCtrlsByRowIndex).map((rowCtrl) => rowCtrl.rowNode);\n    const stickyTopRows = this.getStickyTopRowCtrls().map((rowCtrl) => rowCtrl.rowNode);\n    const stickyBottomRows = this.getStickyBottomRowCtrls().map((rowCtrl) => rowCtrl.rowNode);\n    return [...stickyTopRows, ...viewportRows, ...stickyBottomRows];\n  }\n  getRowByPosition(rowPosition) {\n    let rowCtrl;\n    const { rowIndex } = rowPosition;\n    switch (rowPosition.rowPinned) {\n      case \"top\":\n        rowCtrl = this.topRowCtrls[rowIndex];\n        break;\n      case \"bottom\":\n        rowCtrl = this.bottomRowCtrls[rowIndex];\n        break;\n      default:\n        rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n        if (!rowCtrl) {\n          rowCtrl = this.getStickyTopRowCtrls().find((ctrl) => ctrl.rowNode.rowIndex === rowIndex) || null;\n          if (!rowCtrl) {\n            rowCtrl = this.getStickyBottomRowCtrls().find((ctrl) => ctrl.rowNode.rowIndex === rowIndex) || null;\n          }\n        }\n        break;\n    }\n    return rowCtrl;\n  }\n  // returns true if any row between startIndex and endIndex is rendered. used by\n  // SSRM or IRM, as they don't want to purge visible blocks from cache.\n  isRangeInRenderedViewport(startIndex, endIndex) {\n    const parentClosed = startIndex == null || endIndex == null;\n    if (parentClosed) {\n      return false;\n    }\n    const blockAfterViewport = startIndex > this.lastRenderedRow;\n    const blockBeforeViewport = endIndex < this.firstRenderedRow;\n    const blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;\n    return blockInsideViewport;\n  }\n};\nvar RowCtrlCache = class {\n  constructor(maxCount) {\n    // map for fast access\n    this.entriesMap = {};\n    // list for keeping order\n    this.entriesList = [];\n    this.maxCount = maxCount;\n  }\n  addRow(rowCtrl) {\n    this.entriesMap[rowCtrl.rowNode.id] = rowCtrl;\n    this.entriesList.push(rowCtrl);\n    rowCtrl.setCached(true);\n    if (this.entriesList.length > this.maxCount) {\n      const rowCtrlToDestroy = this.entriesList[0];\n      rowCtrlToDestroy.destroyFirstPass();\n      rowCtrlToDestroy.destroySecondPass();\n      this.removeFromCache(rowCtrlToDestroy);\n    }\n  }\n  getRow(rowNode) {\n    if (rowNode == null || rowNode.id == null) {\n      return null;\n    }\n    const res = this.entriesMap[rowNode.id];\n    if (!res) {\n      return null;\n    }\n    this.removeFromCache(res);\n    res.setCached(false);\n    const rowNodeMismatch = res.rowNode != rowNode;\n    return rowNodeMismatch ? null : res;\n  }\n  has(rowNode) {\n    return this.entriesMap[rowNode.id] != null;\n  }\n  removeRow(rowNode) {\n    const rowNodeId = rowNode.id;\n    const ctrl = this.entriesMap[rowNodeId];\n    delete this.entriesMap[rowNodeId];\n    _removeFromArray(this.entriesList, ctrl);\n  }\n  removeFromCache(rowCtrl) {\n    const rowNodeId = rowCtrl.rowNode.id;\n    delete this.entriesMap[rowNodeId];\n    _removeFromArray(this.entriesList, rowCtrl);\n  }\n  getEntries() {\n    return this.entriesList;\n  }\n};\nfunction mapRowNodes(rowNodes) {\n  if (!rowNodes) {\n    return;\n  }\n  const res = {\n    top: {},\n    bottom: {},\n    normal: {}\n  };\n  rowNodes.forEach((rowNode) => {\n    const id = rowNode.id;\n    switch (rowNode.rowPinned) {\n      case \"top\":\n        res.top[id] = rowNode;\n        break;\n      case \"bottom\":\n        res.bottom[id] = rowNode;\n        break;\n      default:\n        res.normal[id] = rowNode;\n        break;\n    }\n  });\n  return res;\n}\nfunction isRowInMap(rowNode, rowIdsMap) {\n  const id = rowNode.id;\n  const floating = rowNode.rowPinned;\n  switch (floating) {\n    case \"top\":\n      return rowIdsMap.top[id] != null;\n    case \"bottom\":\n      return rowIdsMap.bottom[id] != null;\n    default:\n      return rowIdsMap.normal[id] != null;\n  }\n}\n\n// packages/ag-grid-community/src/sort/rowNodeSorter.ts\nvar RowNodeSorter = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowNodeSorter\";\n  }\n  postConstruct() {\n    const { gos } = this;\n    this.isAccentedSort = gos.get(\"accentedSort\");\n    this.primaryColumnsSortGroups = _isColumnsSortingCoupledToGroup(gos);\n    this.addManagedPropertyListener(\n      \"accentedSort\",\n      (propChange) => this.isAccentedSort = propChange.currentValue\n    );\n    this.addManagedPropertyListener(\n      \"autoGroupColumnDef\",\n      () => this.primaryColumnsSortGroups = _isColumnsSortingCoupledToGroup(gos)\n    );\n  }\n  doFullSort(rowNodes, sortOptions) {\n    const sortedRowNodes = rowNodes.map((rowNode, currentPos) => ({\n      currentPos,\n      rowNode\n    }));\n    sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n    return sortedRowNodes.map((item) => item.rowNode);\n  }\n  compareRowNodes(sortOptions, sortedNodeA, sortedNodeB) {\n    const nodeA = sortedNodeA.rowNode;\n    const nodeB = sortedNodeB.rowNode;\n    for (let i = 0, len = sortOptions.length; i < len; i++) {\n      const sortOption = sortOptions[i];\n      const isDescending = sortOption.sort === \"desc\";\n      const valueA = this.getValue(nodeA, sortOption.column);\n      const valueB = this.getValue(nodeB, sortOption.column);\n      let comparatorResult;\n      const providedComparator = this.getComparator(sortOption, nodeA);\n      if (providedComparator) {\n        comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isDescending);\n      } else {\n        comparatorResult = _defaultComparator(valueA, valueB, this.isAccentedSort);\n      }\n      const validResult = !isNaN(comparatorResult);\n      if (validResult && comparatorResult !== 0) {\n        return sortOption.sort === \"asc\" ? comparatorResult : comparatorResult * -1;\n      }\n    }\n    return sortedNodeA.currentPos - sortedNodeB.currentPos;\n  }\n  getComparator(sortOption, rowNode) {\n    const column = sortOption.column;\n    const comparatorOnCol = column.getColDef().comparator;\n    if (comparatorOnCol != null) {\n      return comparatorOnCol;\n    }\n    if (!column.getColDef().showRowGroup) {\n      return;\n    }\n    const groupLeafField = !rowNode.group && column.getColDef().field;\n    if (!groupLeafField) {\n      return;\n    }\n    const primaryColumn = this.beans.colModel.getColDefCol(groupLeafField);\n    if (!primaryColumn) {\n      return;\n    }\n    return primaryColumn.getColDef().comparator;\n  }\n  getValue(node, column) {\n    const { valueSvc, colModel, showRowGroupCols, gos } = this.beans;\n    if (!this.primaryColumnsSortGroups) {\n      return valueSvc.getValue(column, node, false);\n    }\n    const isNodeGroupedAtLevel = node.rowGroupColumn === column;\n    if (isNodeGroupedAtLevel) {\n      const isGroupRows = _isGroupUseEntireRow(gos, colModel.isPivotActive());\n      if (isGroupRows) {\n        const leafChild = node.allLeafChildren?.[0];\n        if (leafChild) {\n          return valueSvc.getValue(column, leafChild, false);\n        }\n        return void 0;\n      }\n      const displayCol = showRowGroupCols?.getShowRowGroupCol(column.getId());\n      if (!displayCol) {\n        return void 0;\n      }\n      return node.groupData?.[displayCol.getId()];\n    }\n    if (node.group && column.getColDef().showRowGroup) {\n      return void 0;\n    }\n    return valueSvc.getValue(column, node, false);\n  }\n};\n\n// packages/ag-grid-community/src/sort/sortApi.ts\nfunction onSortChanged(beans) {\n  beans.sortSvc?.onSortChanged(\"api\");\n}\n\n// packages/ag-grid-community/src/sort/sortModule.ts\nvar SortModule = {\n  moduleName: \"Sort\",\n  version: VERSION,\n  beans: [SortService, RowNodeSorter],\n  apiFunctions: {\n    onSortChanged\n  },\n  userComponents: {\n    agSortIndicator: SortIndicatorComp\n  },\n  icons: {\n    // show on column header when column is sorted ascending\n    sortAscending: \"asc\",\n    // show on column header when column is sorted descending\n    sortDescending: \"desc\",\n    // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n    sortUnSort: \"none\"\n  }\n};\n\n// packages/ag-grid-community/src/syncService.ts\nvar SyncService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"syncSvc\";\n    this.waitingForColumns = false;\n  }\n  postConstruct() {\n    this.addManagedPropertyListener(\"columnDefs\", (event) => this.setColumnDefs(event));\n  }\n  start() {\n    this.beans.ctrlsSvc.whenReady(this, () => {\n      const columnDefs = this.gos.get(\"columnDefs\");\n      if (columnDefs) {\n        this.setColumnsAndData(columnDefs);\n      } else {\n        this.waitingForColumns = true;\n      }\n      this.gridReady();\n    });\n  }\n  setColumnsAndData(columnDefs) {\n    const { colModel, rowModel } = this.beans;\n    colModel.setColumnDefs(columnDefs ?? [], \"gridInitializing\");\n    rowModel.start();\n  }\n  gridReady() {\n    const { eventSvc, gos } = this;\n    eventSvc.dispatchEvent({\n      type: \"gridReady\"\n    });\n    _logIfDebug(gos, `initialised successfully, enterprise = ${gos.isModuleRegistered(\"EnterpriseCore\")}`);\n  }\n  setColumnDefs(event) {\n    const columnDefs = this.gos.get(\"columnDefs\");\n    if (!columnDefs) {\n      return;\n    }\n    if (this.waitingForColumns) {\n      this.waitingForColumns = false;\n      this.setColumnsAndData(columnDefs);\n      return;\n    }\n    this.beans.colModel.setColumnDefs(columnDefs, _convertColumnEventSourceType(event.source));\n  }\n};\n\n// packages/ag-grid-community/src/valueService/cellApi.ts\nfunction expireValueCache(beans) {\n  beans.valueCache?.expire();\n}\nfunction getCellValue(beans, params) {\n  const { colKey, rowNode, useFormatter } = params;\n  const column = beans.colModel.getColDefCol(colKey) ?? beans.colModel.getCol(colKey);\n  if (_missing(column)) {\n    return null;\n  }\n  const value = beans.valueSvc.getValueForDisplay(column, rowNode).value;\n  if (useFormatter) {\n    const formattedValue = beans.valueSvc.formatValue(column, rowNode, value);\n    return formattedValue ?? _toString(value);\n  }\n  return value;\n}\n\n// packages/ag-grid-community/src/valueService/changeDetectionService.ts\nvar SOURCE_PASTE = \"paste\";\nvar ChangeDetectionService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"changeDetectionSvc\";\n    this.clientSideRowModel = null;\n  }\n  postConstruct() {\n    const { gos, rowModel } = this.beans;\n    if (_isClientSideRowModel(gos, rowModel)) {\n      this.clientSideRowModel = rowModel;\n    }\n    this.addManagedEventListeners({ cellValueChanged: this.onCellValueChanged.bind(this) });\n  }\n  onCellValueChanged(event) {\n    const { gos, rowRenderer } = this.beans;\n    if (event.source === SOURCE_PASTE || gos.get(\"suppressChangeDetection\")) {\n      return;\n    }\n    const rowNode = event.node;\n    const nodesToRefresh = [rowNode];\n    const clientSideRowModel = this.clientSideRowModel;\n    const rootNode = clientSideRowModel?.rootNode;\n    if (rootNode && !rowNode.isRowPinned()) {\n      const onlyChangedColumns = gos.get(\"aggregateOnlyChangedColumns\");\n      const changedPath = new ChangedPath(onlyChangedColumns, rootNode);\n      changedPath.addParentNode(rowNode.parent, [event.column]);\n      clientSideRowModel.doAggregate(changedPath);\n      changedPath.forEachChangedNodeDepthFirst((rowNode2) => {\n        nodesToRefresh.push(rowNode2);\n        if (rowNode2.sibling) {\n          nodesToRefresh.push(rowNode2.sibling);\n        }\n      });\n    }\n    rowRenderer.refreshCells({ rowNodes: nodesToRefresh });\n  }\n};\n\n// packages/ag-grid-community/src/valueService/expressionService.ts\nvar ExpressionService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"expressionSvc\";\n    this.cache = {};\n  }\n  evaluate(expression, params) {\n    if (typeof expression === \"string\") {\n      return this.evaluateExpression(expression, params);\n    } else {\n      _error(15, { expression });\n    }\n  }\n  evaluateExpression(expression, params) {\n    try {\n      const javaScriptFunction = this.createExpressionFunction(expression);\n      const result = javaScriptFunction(\n        params.value,\n        params.context,\n        params.oldValue,\n        params.newValue,\n        params.value,\n        params.node,\n        params.data,\n        params.colDef,\n        params.rowIndex,\n        params.api,\n        params.getValue,\n        params.column,\n        params.columnGroup\n      );\n      return result;\n    } catch (e) {\n      _error(16, { expression, params, e });\n      return null;\n    }\n  }\n  createExpressionFunction(expression) {\n    const expressionToFunctionCache = this.cache;\n    if (expressionToFunctionCache[expression]) {\n      return expressionToFunctionCache[expression];\n    }\n    const functionBody = this.createFunctionBody(expression);\n    const theFunction = new Function(\n      \"x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, getValue, column, columnGroup\",\n      functionBody\n    );\n    expressionToFunctionCache[expression] = theFunction;\n    return theFunction;\n  }\n  createFunctionBody(expression) {\n    if (expression.indexOf(\"return\") >= 0) {\n      return expression;\n    } else {\n      return \"return \" + expression + \";\";\n    }\n  }\n};\n\n// packages/ag-grid-community/src/valueService/valueCache.ts\nvar ValueCache = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"valueCache\";\n    this.cacheVersion = 0;\n  }\n  postConstruct() {\n    const gos = this.gos;\n    this.active = gos.get(\"valueCache\");\n    this.neverExpires = gos.get(\"valueCacheNeverExpires\");\n  }\n  onDataChanged() {\n    if (this.neverExpires) {\n      return;\n    }\n    this.expire();\n  }\n  expire() {\n    this.cacheVersion++;\n  }\n  setValue(rowNode, colId, value) {\n    if (this.active) {\n      const cacheVersion = this.cacheVersion;\n      if (rowNode.__cacheVersion !== cacheVersion) {\n        rowNode.__cacheVersion = cacheVersion;\n        rowNode.__cacheData = {};\n      }\n      rowNode.__cacheData[colId] = value;\n    }\n  }\n  getValue(rowNode, colId) {\n    if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n      return void 0;\n    }\n    return rowNode.__cacheData[colId];\n  }\n};\n\n// packages/ag-grid-community/src/valueService/valueModule.ts\nvar ValueCacheModule = {\n  moduleName: \"ValueCache\",\n  version: VERSION,\n  beans: [ValueCache],\n  apiFunctions: {\n    expireValueCache\n  }\n};\nvar ExpressionModule = {\n  moduleName: \"Expression\",\n  version: VERSION,\n  beans: [ExpressionService]\n};\nvar ChangeDetectionModule = {\n  moduleName: \"ChangeDetection\",\n  version: VERSION,\n  beans: [ChangeDetectionService]\n};\nvar CellApiModule = {\n  moduleName: \"CellApi\",\n  version: VERSION,\n  apiFunctions: {\n    getCellValue\n  }\n};\n\n// packages/ag-grid-community/src/valueService/valueService.ts\nvar ValueService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"valueSvc\";\n    this.initialised = false;\n    this.isSsrm = false;\n  }\n  wireBeans(beans) {\n    this.expressionSvc = beans.expressionSvc;\n    this.colModel = beans.colModel;\n    this.valueCache = beans.valueCache;\n    this.dataTypeSvc = beans.dataTypeSvc;\n  }\n  postConstruct() {\n    if (!this.initialised) {\n      this.init();\n    }\n  }\n  init() {\n    this.executeValueGetter = this.valueCache ? this.executeValueGetterWithValueCache.bind(this) : this.executeValueGetterWithoutValueCache.bind(this);\n    this.isSsrm = _isServerSideRowModel(this.gos);\n    this.cellExpressions = this.gos.get(\"enableCellExpressions\");\n    this.isTreeData = this.gos.get(\"treeData\");\n    this.initialised = true;\n    const listener = (event) => this.callColumnCellValueChangedHandler(event);\n    this.eventSvc.addEventListener(\"cellValueChanged\", listener, true);\n    this.addDestroyFunc(() => this.eventSvc.removeEventListener(\"cellValueChanged\", listener, true));\n    this.addManagedPropertyListener(\"treeData\", (propChange) => this.isTreeData = propChange.currentValue);\n  }\n  /**\n   * Use this function to get a displayable cell value.\n   * The values from this function are not used for sorting, filtering, or aggregation purposes.\n   * Handles: groupHideOpenParents, showOpenedGroup and groupSuppressBlankHeader behaviours\n   */\n  getValueForDisplay(column, node, includeValueFormatted = false, exporting = false) {\n    const { showRowGroupColValueSvc } = this.beans;\n    const isFullWidthGroup = !column && node.group;\n    const isGroupCol = column?.colDef.showRowGroup;\n    const processTreeDataAsGroup = !this.isTreeData || node.footer;\n    if (showRowGroupColValueSvc && processTreeDataAsGroup && (isFullWidthGroup || isGroupCol)) {\n      const groupValue = showRowGroupColValueSvc.getGroupValue(node, column);\n      if (groupValue == null) {\n        return {\n          value: null,\n          valueFormatted: null\n        };\n      }\n      if (!includeValueFormatted) {\n        return {\n          value: groupValue.value,\n          valueFormatted: null\n        };\n      }\n      const valueFormatted = showRowGroupColValueSvc.formatAndPrefixGroupColValue(groupValue, column, exporting);\n      return {\n        value: groupValue.value,\n        valueFormatted\n      };\n    }\n    if (!column) {\n      return {\n        value: node.key,\n        valueFormatted: null\n      };\n    }\n    const isPivotLeaf = node.leafGroup && this.colModel.isPivotMode();\n    const isOpenedGroup = node.group && node.expanded && !node.footer && !isPivotLeaf;\n    const groupShowsAggData = this.gos.get(\"groupSuppressBlankHeader\") || !node.sibling;\n    const ignoreAggData = isOpenedGroup && !groupShowsAggData;\n    const value = this.getValue(column, node, ignoreAggData);\n    const format = includeValueFormatted && !(exporting && column.colDef.useValueFormatterForExport === false);\n    return {\n      value,\n      valueFormatted: format ? this.formatValue(column, node, value) : null\n    };\n  }\n  getValue(column, rowNode, ignoreAggData = false) {\n    if (!this.initialised) {\n      this.init();\n    }\n    if (!rowNode) {\n      return;\n    }\n    const colDef = column.getColDef();\n    const field = colDef.field;\n    const colId = column.getColId();\n    const data = rowNode.data;\n    let result;\n    const rowGroupColId = colDef.showRowGroup;\n    if (typeof rowGroupColId === \"string\") {\n      const colRowGroupIndex = this.beans.rowGroupColsSvc?.getColumnIndex(rowGroupColId) ?? -1;\n      if (colRowGroupIndex > rowNode.level) {\n        return null;\n      }\n    }\n    const allowUserValuesForCell = typeof rowGroupColId !== \"string\" || !rowNode.group;\n    const groupDataExists = rowNode.groupData && colId in rowNode.groupData;\n    const aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== void 0;\n    const ignoreSsrmAggData = this.isSsrm && ignoreAggData && !!column.getColDef().aggFunc;\n    const ssrmFooterGroupCol = this.isSsrm && rowNode.footer && rowNode.field && (column.getColDef().showRowGroup === true || column.getColDef().showRowGroup === rowNode.field);\n    if (this.isTreeData && aggDataExists) {\n      result = rowNode.aggData[colId];\n    } else if (this.isTreeData && colDef.valueGetter) {\n      result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n    } else if (this.isTreeData && field && data) {\n      result = _getValueUsingField(data, field, column.isFieldContainsDots());\n    } else if (groupDataExists) {\n      result = rowNode.groupData[colId];\n    } else if (aggDataExists) {\n      result = rowNode.aggData[colId];\n    } else if (colDef.valueGetter) {\n      if (!allowUserValuesForCell) {\n        return result;\n      }\n      result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n    } else if (ssrmFooterGroupCol) {\n      result = _getValueUsingField(data, rowNode.field, column.isFieldContainsDots());\n    } else if (field && data && !ignoreSsrmAggData) {\n      if (!allowUserValuesForCell) {\n        return result;\n      }\n      result = _getValueUsingField(data, field, column.isFieldContainsDots());\n    }\n    if (this.cellExpressions && typeof result === \"string\" && result.indexOf(\"=\") === 0) {\n      const cellValueGetter = result.substring(1);\n      result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n    }\n    return result;\n  }\n  parseValue(column, rowNode, newValue, oldValue) {\n    const colDef = column.getColDef();\n    const valueParser = colDef.valueParser;\n    if (_exists(valueParser)) {\n      const params = _addGridCommonParams(this.gos, {\n        node: rowNode,\n        data: rowNode?.data,\n        oldValue,\n        newValue,\n        colDef,\n        column\n      });\n      if (typeof valueParser === \"function\") {\n        return valueParser(params);\n      }\n      return this.expressionSvc?.evaluate(valueParser, params);\n    }\n    return newValue;\n  }\n  getDeleteValue(column, rowNode) {\n    if (_exists(column.getColDef().valueParser)) {\n      return this.parseValue(column, rowNode, \"\", this.getValueForDisplay(column, rowNode).value) ?? null;\n    }\n    return null;\n  }\n  formatValue(column, node, value, suppliedFormatter, useFormatterFromColumn = true) {\n    let result = null;\n    let formatter;\n    const colDef = column.getColDef();\n    if (suppliedFormatter) {\n      formatter = suppliedFormatter;\n    } else if (useFormatterFromColumn) {\n      formatter = colDef.valueFormatter;\n    }\n    if (formatter) {\n      const params = _addGridCommonParams(this.gos, {\n        value,\n        node,\n        data: node ? node.data : null,\n        colDef,\n        column\n      });\n      if (typeof formatter === \"function\") {\n        result = formatter(params);\n      } else {\n        result = this.expressionSvc ? this.expressionSvc.evaluate(formatter, params) : null;\n      }\n    } else if (colDef.refData) {\n      return colDef.refData[value] || \"\";\n    }\n    if (result == null && Array.isArray(value)) {\n      result = value.join(\", \");\n    }\n    return result;\n  }\n  /**\n   * Sets the value of a GridCell\n   * @param rowNode The `RowNode` to be updated\n   * @param colKey The `Column` to be updated\n   * @param newValue The new value to be set\n   * @param eventSource The event source\n   * @returns `True` if the value has been updated, otherwise`False`.\n   */\n  setValue(rowNode, colKey, newValue, eventSource) {\n    const column = this.colModel.getColDefCol(colKey);\n    if (!rowNode || !column) {\n      return false;\n    }\n    if (_missing(rowNode.data)) {\n      rowNode.data = {};\n    }\n    const { field, valueSetter } = column.getColDef();\n    if (_missing(field) && _missing(valueSetter)) {\n      _warn(17);\n      return false;\n    }\n    if (this.dataTypeSvc && !this.dataTypeSvc.checkType(column, newValue)) {\n      _warn(135);\n      return false;\n    }\n    const params = _addGridCommonParams(this.gos, {\n      node: rowNode,\n      data: rowNode.data,\n      oldValue: this.getValue(column, rowNode),\n      newValue,\n      colDef: column.getColDef(),\n      column\n    });\n    params.newValue = newValue;\n    let valueWasDifferent;\n    if (_exists(valueSetter)) {\n      if (typeof valueSetter === \"function\") {\n        valueWasDifferent = valueSetter(params);\n      } else {\n        valueWasDifferent = this.expressionSvc?.evaluate(valueSetter, params);\n      }\n    } else {\n      valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());\n    }\n    if (valueWasDifferent === void 0) {\n      valueWasDifferent = true;\n    }\n    if (!valueWasDifferent) {\n      return false;\n    }\n    rowNode.resetQuickFilterAggregateText();\n    this.valueCache?.onDataChanged();\n    const savedValue = this.getValue(column, rowNode);\n    this.eventSvc.dispatchEvent({\n      type: \"cellValueChanged\",\n      event: null,\n      rowIndex: rowNode.rowIndex,\n      rowPinned: rowNode.rowPinned,\n      column: params.column,\n      colDef: params.colDef,\n      data: rowNode.data,\n      node: rowNode,\n      oldValue: params.oldValue,\n      newValue: savedValue,\n      value: savedValue,\n      source: eventSource\n    });\n    return true;\n  }\n  callColumnCellValueChangedHandler(event) {\n    const onCellValueChanged = event.colDef.onCellValueChanged;\n    if (typeof onCellValueChanged === \"function\") {\n      this.beans.frameworkOverrides.wrapOutgoing(() => {\n        onCellValueChanged({\n          node: event.node,\n          data: event.data,\n          oldValue: event.oldValue,\n          newValue: event.newValue,\n          colDef: event.colDef,\n          column: event.column,\n          api: event.api,\n          context: event.context\n        });\n      });\n    }\n  }\n  setValueUsingField(data, field, newValue, isFieldContainsDots) {\n    if (!field) {\n      return false;\n    }\n    let valuesAreSame = false;\n    if (!isFieldContainsDots) {\n      valuesAreSame = data[field] === newValue;\n      if (!valuesAreSame) {\n        data[field] = newValue;\n      }\n    } else {\n      const fieldPieces = field.split(\".\");\n      let currentObject = data;\n      while (fieldPieces.length > 0 && currentObject) {\n        const fieldPiece = fieldPieces.shift();\n        if (fieldPieces.length === 0) {\n          valuesAreSame = currentObject[fieldPiece] === newValue;\n          if (!valuesAreSame) {\n            currentObject[fieldPiece] = newValue;\n          }\n        } else {\n          currentObject = currentObject[fieldPiece];\n        }\n      }\n    }\n    return !valuesAreSame;\n  }\n  executeValueGetterWithValueCache(valueGetter, data, column, rowNode) {\n    const colId = column.getColId();\n    const valueFromCache = this.valueCache.getValue(rowNode, colId);\n    if (valueFromCache !== void 0) {\n      return valueFromCache;\n    }\n    const result = this.executeValueGetterWithoutValueCache(valueGetter, data, column, rowNode);\n    this.valueCache.setValue(rowNode, colId, result);\n    return result;\n  }\n  executeValueGetterWithoutValueCache(valueGetter, data, column, rowNode) {\n    const params = _addGridCommonParams(this.gos, {\n      data,\n      node: rowNode,\n      column,\n      colDef: column.getColDef(),\n      getValue: this.getValueCallback.bind(this, rowNode)\n    });\n    let result;\n    if (typeof valueGetter === \"function\") {\n      result = valueGetter(params);\n    } else {\n      result = this.expressionSvc?.evaluate(valueGetter, params);\n    }\n    return result;\n  }\n  getValueCallback(node, field) {\n    const otherColumn = this.colModel.getColDefCol(field);\n    if (otherColumn) {\n      return this.getValue(otherColumn, node);\n    }\n    return null;\n  }\n  // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n  getKeyForNode(col, rowNode) {\n    const value = this.getValue(col, rowNode);\n    const keyCreator = col.getColDef().keyCreator;\n    let result = value;\n    if (keyCreator) {\n      const keyParams = _addGridCommonParams(this.gos, {\n        value,\n        colDef: col.getColDef(),\n        column: col,\n        node: rowNode,\n        data: rowNode.data\n      });\n      result = keyCreator(keyParams);\n    }\n    if (typeof result === \"string\" || result == null) {\n      return result;\n    }\n    result = String(result);\n    if (result === \"[object Object]\") {\n      _warn(121);\n    }\n    return result;\n  }\n};\n\n// packages/ag-grid-community/src/gridCoreModule.ts\nvar CommunityCoreModule = {\n  moduleName: \"CommunityCore\",\n  version: VERSION,\n  beans: [\n    GridDestroyService,\n    ApiFunctionService,\n    Registry,\n    UserComponentFactory,\n    RowContainerHeightService,\n    VisibleColsService,\n    EventService,\n    GridOptionsService,\n    ColumnModel,\n    PageBoundsService,\n    PageBoundsListener,\n    RowRenderer,\n    ValueService,\n    FocusService,\n    Environment,\n    ScrollVisibleService,\n    CtrlsService,\n    SyncService,\n    ColumnNameService,\n    ColumnViewportService\n  ],\n  icons: {\n    // icon on select dropdowns (select cell editor, charts tool panels)\n    selectOpen: \"small-down\",\n    /** @deprecated v33 */\n    smallDown: \"small-down\",\n    /** @deprecated v33 */\n    colorPicker: \"color-picker\",\n    /** @deprecated v33 */\n    smallUp: \"small-up\",\n    /** @deprecated v33 */\n    checkboxChecked: \"small-up\",\n    /** @deprecated v33 */\n    checkboxIndeterminate: \"checkbox-indeterminate\",\n    /** @deprecated v33 */\n    checkboxUnchecked: \"checkbox-unchecked\",\n    /** @deprecated v33 */\n    radioButtonOn: \"radio-button-on\",\n    /** @deprecated v33 */\n    radioButtonOff: \"radio-button-off\",\n    /** @deprecated v33 */\n    smallLeft: \"small-left\",\n    /** @deprecated v33 */\n    smallRight: \"small-right\"\n  },\n  apiFunctions: {\n    getGridId,\n    destroy,\n    isDestroyed,\n    getGridOption,\n    setGridOption,\n    updateGridOptions,\n    isModuleRegistered\n  },\n  dependsOn: [\n    DataTypeModule,\n    ColumnMoveModule,\n    ColumnResizeModule,\n    SortModule,\n    ColumnHeaderCompModule,\n    ColumnGroupModule,\n    ColumnGroupHeaderCompModule,\n    OverlayModule,\n    ChangeDetectionModule,\n    AnimationFrameModule,\n    KeyboardNavigationModule,\n    PinnedColumnModule,\n    AriaModule,\n    TouchModule,\n    CellRendererFunctionModule,\n    ColumnFlexModule,\n    ExpressionModule\n  ]\n};\n\n// packages/ag-grid-community/src/utils/fuzzyMatch.ts\nfunction _fuzzySuggestions(params) {\n  const { inputValue, allSuggestions, hideIrrelevant, filterByPercentageOfBestMatch } = params;\n  let thisSuggestions = allSuggestions.map((text, idx) => ({\n    value: text,\n    relevance: hybridFuzzySearch(inputValue, text),\n    idx\n  }));\n  thisSuggestions.sort((a, b) => b.relevance - a.relevance);\n  if (hideIrrelevant) {\n    thisSuggestions = thisSuggestions.filter((suggestion) => suggestion.relevance !== 0);\n  }\n  if (thisSuggestions.length > 0 && filterByPercentageOfBestMatch && filterByPercentageOfBestMatch > 0) {\n    const bestMatch = thisSuggestions[0].relevance;\n    const limit = bestMatch * filterByPercentageOfBestMatch;\n    thisSuggestions = thisSuggestions.filter((suggestion) => limit - suggestion.relevance < 0);\n  }\n  const values = [];\n  const indices = [];\n  for (const suggestion of thisSuggestions) {\n    values.push(suggestion.value);\n    indices.push(suggestion.idx);\n  }\n  return { values, indices };\n}\nfunction hybridFuzzySearch(str1, str2) {\n  if (str1 === str2) {\n    return 1e3;\n  }\n  const len1 = str1.length;\n  const len2 = str2.length;\n  if (len1 === 0 || len2 === 0) {\n    return 0;\n  }\n  const str1Lower = str1.toLocaleLowerCase();\n  const str2Lower = str2.toLocaleLowerCase();\n  const str2PositionInStr1 = str2Lower.indexOf(str1Lower);\n  if (str2PositionInStr1 !== -1) {\n    return 980 - str2PositionInStr1 * 2;\n  }\n  const commonChars = [...str1Lower].filter((char) => str2Lower.includes(char));\n  if (commonChars.length === 0) {\n    return 0;\n  }\n  let previousRow = Array.from({ length: len2 + 1 }, (_, i) => i);\n  for (let i = 0; i < len1; i++) {\n    const currentRow = [i + 1];\n    for (let j = 0; j < len2; j++) {\n      const insertions = previousRow[j + 1] + 1;\n      const deletions = currentRow[j] + 1;\n      let substitutions = previousRow[j] + (str1[i] !== str2[j] ? 1 : 0);\n      if (len2 > 10 && j > len2 / 2) {\n        substitutions += 1;\n      }\n      if (i > 0 && j > 0 && str1[i - 1] === str2[j - 1]) {\n        substitutions -= 4;\n      }\n      currentRow.push(Math.min(insertions, deletions, substitutions));\n    }\n    previousRow = currentRow;\n  }\n  const distance = Math.round(previousRow[len2]);\n  const score = Math.max(1, 1e3 - distance * 30);\n  return Math.max(1, score);\n}\n\n// packages/ag-grid-community/src/validation/enterpriseModuleNames.ts\nvar ENTERPRISE_MODULE_NAMES = {\n  AdvancedFilter: 1,\n  AllEnterprise: 1,\n  CellSelection: 1,\n  Clipboard: 1,\n  ColumnMenu: 1,\n  ColumnsToolPanel: 1,\n  ContextMenu: 1,\n  ExcelExport: 1,\n  FiltersToolPanel: 1,\n  Find: 1,\n  GridCharts: 1,\n  IntegratedCharts: 1,\n  GroupFilter: 1,\n  MasterDetail: 1,\n  Menu: 1,\n  MultiFilter: 1,\n  Pivot: 1,\n  RangeSelection: 1,\n  RichSelect: 1,\n  RowNumbers: 1,\n  RowGrouping: 1,\n  RowGroupingPanel: 1,\n  ServerSideRowModelApi: 1,\n  ServerSideRowModel: 1,\n  SetFilter: 1,\n  SideBar: 1,\n  Sparklines: 1,\n  StatusBar: 1,\n  TreeData: 1,\n  ViewportRowModel: 1\n};\n\n// packages/ag-grid-community/src/validation/resolvableModuleNames.ts\nvar ALL_COLUMN_FILTERS = [\n  \"TextFilter\",\n  \"NumberFilter\",\n  \"DateFilter\",\n  \"SetFilter\",\n  \"MultiFilter\",\n  \"GroupFilter\",\n  \"CustomFilter\"\n];\nvar RESOLVABLE_MODULE_NAMES = {\n  EditCore: [\n    \"TextEditor\",\n    \"NumberEditor\",\n    \"DateEditor\",\n    \"CheckboxEditor\",\n    \"LargeTextEditor\",\n    \"SelectEditor\",\n    \"RichSelect\",\n    \"CustomEditor\"\n  ],\n  CheckboxCellRenderer: [\"AllCommunity\"],\n  ClientSideRowModelHierarchy: [\"RowGrouping\", \"Pivot\", \"TreeData\"],\n  ColumnFilter: ALL_COLUMN_FILTERS,\n  ColumnGroupHeaderComp: [\"AllCommunity\"],\n  ColumnGroup: [\"AllCommunity\"],\n  ColumnHeaderComp: [\"AllCommunity\"],\n  ColumnMove: [\"AllCommunity\"],\n  ColumnResize: [\"AllCommunity\"],\n  CommunityCore: [\"AllCommunity\"],\n  CsrmSsrmSharedApi: [\"ClientSideRowModelApi\", \"ServerSideRowModelApi\"],\n  EnterpriseCore: [\"AllEnterprise\"],\n  FilterCore: [...ALL_COLUMN_FILTERS, \"QuickFilter\", \"ExternalFilter\", \"AdvancedFilter\"],\n  GroupCellRenderer: [\"RowGrouping\", \"Pivot\", \"TreeData\", \"MasterDetail\", \"ServerSideRowModel\"],\n  KeyboardNavigation: [\"AllCommunity\"],\n  LoadingCellRenderer: [\"ServerSideRowModel\"],\n  MenuCore: [\"ColumnMenu\", \"ContextMenu\"],\n  MenuItem: [\"ColumnMenu\", \"ContextMenu\", \"MultiFilter\", \"IntegratedCharts\", \"ColumnsToolPanel\"],\n  Overlay: [\"AllCommunity\"],\n  PinnedColumn: [\"AllCommunity\"],\n  SharedAggregation: [\"RowGrouping\", \"Pivot\", \"TreeData\", \"ServerSideRowModel\"],\n  SharedDragAndDrop: [\"AllCommunity\"],\n  SharedMasterDetail: [\"MasterDetail\", \"ServerSideRowModel\"],\n  SharedMenu: [...ALL_COLUMN_FILTERS, \"ColumnMenu\", \"ContextMenu\"],\n  SharedPivot: [\"Pivot\", \"ServerSideRowModel\"],\n  SharedRowGrouping: [\"RowGrouping\", \"ServerSideRowModel\"],\n  SharedRowSelection: [\"RowSelection\", \"ServerSideRowModel\"],\n  SkeletonCellRenderer: [\"ServerSideRowModel\"],\n  Sort: [\"AllCommunity\"],\n  SsrmInfiniteSharedApi: [\"InfiniteRowModel\", \"ServerSideRowModelApi\"],\n  SharedTreeData: [\"TreeData\", \"ServerSideRowModel\"]\n};\nvar MODULES_FOR_ROW_MODELS = {\n  InfiniteRowModel: \"infinite\",\n  ClientSideRowModelApi: \"clientSide\",\n  ClientSideRowModel: \"clientSide\",\n  ServerSideRowModelApi: \"serverSide\",\n  ServerSideRowModel: \"serverSide\",\n  ViewportRowModel: \"viewport\"\n};\nfunction resolveModuleNames(moduleName, rowModelType) {\n  const resolvedModuleNames = [];\n  (Array.isArray(moduleName) ? moduleName : [moduleName]).forEach((modName) => {\n    const resolved = RESOLVABLE_MODULE_NAMES[modName];\n    if (resolved) {\n      resolved.forEach((resolvedModName) => {\n        const rowModelForModule = MODULES_FOR_ROW_MODELS[resolvedModName];\n        if (!rowModelForModule || rowModelForModule === rowModelType) {\n          resolvedModuleNames.push(resolvedModName);\n        }\n      });\n    } else {\n      resolvedModuleNames.push(modName);\n    }\n  });\n  return resolvedModuleNames;\n}\n\n// packages/ag-grid-community/src/validation/errorMessages/errorText.ts\nvar NoModulesRegisteredError = () => `No AG Grid modules are registered! It is recommended to start with all Community features via the AllCommunityModule:\n                    \n    import { ModuleRegistry, AllCommunityModule } from 'ag-grid-community';\n    \n    ModuleRegistry.registerModules([ AllCommunityModule ]);\n    `;\nvar moduleImportMsg = (moduleNames) => {\n  const imports = moduleNames.map(\n    (moduleName) => `import { ${convertToUserModuleName(moduleName)} } from '${ENTERPRISE_MODULE_NAMES[moduleName] ? \"ag-grid-enterprise\" : \"ag-grid-community\"}';`\n  );\n  const includeCharts = moduleNames.some((m) => m === \"IntegratedCharts\" || m === \"Sparklines\");\n  if (includeCharts) {\n    const chartImport = `import { AgChartsEnterpriseModule } from 'ag-charts-enterprise';`;\n    imports.push(chartImport);\n  }\n  return `import { ModuleRegistry } from 'ag-grid-community'; \n${imports.join(\" \\n\")} \n\nModuleRegistry.registerModules([ ${moduleNames.map((m) => convertToUserModuleName(m, true)).join(\", \")} ]); \n\nFor more info see: ${baseDocLink}/modules/`;\n};\nfunction convertToUserModuleName(moduleName, inModuleRegistration = false) {\n  if (inModuleRegistration && (moduleName === \"IntegratedCharts\" || moduleName === \"Sparklines\")) {\n    return `${moduleName}Module.with(AgChartsEnterpriseModule)`;\n  }\n  return `${moduleName}Module`;\n}\nfunction umdMissingModule(reasonOrId, moduleNames) {\n  const chartModules = moduleNames.filter((m) => m === \"IntegratedCharts\" || m === \"Sparklines\");\n  let message = \"\";\n  const agChartsDynamic = globalThis?.agCharts;\n  if (!agChartsDynamic && chartModules.length > 0) {\n    message = `Unable to use ${reasonOrId} as either the ag-charts-community or ag-charts-enterprise script needs to be included alongside ag-grid-enterprise.\n`;\n  } else if (moduleNames.some((m) => ENTERPRISE_MODULE_NAMES[m])) {\n    message = message + `Unable to use ${reasonOrId} as that requires the ag-grid-enterprise script to be included.\n`;\n  }\n  return message;\n}\nfunction missingRowModelTypeError({\n  moduleName,\n  rowModelType\n}) {\n  return `To use the ${moduleName}Module you must set the gridOption \"rowModelType='${rowModelType}'\"`;\n}\nvar missingModule = ({\n  reasonOrId,\n  moduleName,\n  gridScoped,\n  gridId,\n  rowModelType,\n  additionalText,\n  isUmd: isUmd2\n}) => {\n  const resolvedModuleNames = resolveModuleNames(moduleName, rowModelType);\n  const reason = typeof reasonOrId === \"string\" ? reasonOrId : MISSING_MODULE_REASONS[reasonOrId];\n  if (isUmd2) {\n    return umdMissingModule(reason, resolvedModuleNames);\n  }\n  const chartModules = resolvedModuleNames.filter((m) => m === \"IntegratedCharts\" || m === \"Sparklines\");\n  const chartImportRequired = chartModules.length > 0 ? `${chartModules.map((m) => convertToUserModuleName(m)).join()} must be initialised with an AG Charts module. One of 'AgChartsCommunityModule' / 'AgChartsEnterpriseModule'.` : \"\";\n  const explanation = `Unable to use ${reason} as ${resolvedModuleNames.length > 1 ? \"one of \" + resolvedModuleNames.map((m) => convertToUserModuleName(m)).join(\", \") : convertToUserModuleName(resolvedModuleNames[0])} is not registered${gridScoped ? \" for gridId: \" + gridId : \"\"}. ${chartImportRequired} Check if you have registered the module:\n`;\n  return `${explanation}\n${moduleImportMsg(resolvedModuleNames)}` + (additionalText ? ` \n\n${additionalText}` : \"\");\n};\nvar missingChartsWithModule = (gridModule) => {\n  return `${gridModule} must be initialised with an AG Charts module. One of 'AgChartsCommunityModule' / 'AgChartsEnterpriseModule'.\n\nimport { AgChartsEnterpriseModule } from 'ag-charts-enterprise';\nimport { ModuleRegistry } from 'ag-grid-community';\nimport { ${gridModule} } from 'ag-grid-enterprise';\n    \nModuleRegistry.registerModules([${gridModule}.with(AgChartsEnterpriseModule)]);\n    `;\n};\nvar clipboardApiError = (method) => `AG Grid: Unable to use the Clipboard API (navigator.clipboard.${method}()). The reason why it could not be used has been logged in the previous line. For this reason the grid has defaulted to using a workaround which doesn't perform as well. Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API.`;\nvar AG_GRID_ERRORS = {\n  1: () => \"`rowData` must be an array\",\n  2: ({ nodeId }) => `Duplicate node id '${nodeId}' detected from getRowId callback, this could cause issues in your grid.`,\n  3: () => \"Calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.\",\n  4: ({ id }) => `Could not find row id=${id}, data item was not found for this id`,\n  5: ({ data }) => [\n    `Could not find data item as object was not found.`,\n    data,\n    \" Consider using getRowId to help the Grid find matching row data\"\n  ],\n  6: () => `'groupHideOpenParents' only works when specifying specific columns for 'colDef.showRowGroup'`,\n  7: () => \"Pivoting is not supported with aligned grids as it may produce different columns in each grid.\",\n  8: ({ key }) => `Unknown key for navigation ${key}`,\n  9: ({ variable }) => `No value for ${variable?.cssName}. This usually means that the grid has been initialised before styles have been loaded. The default value of ${variable?.defaultValue} will be used and updated when styles load.`,\n  10: ({ eventType }) => `As of v33, the '${eventType}' event is deprecated. Use the global 'modelUpdated' event to determine when row children have changed.`,\n  11: () => \"No gridOptions provided to createGrid\",\n  12: ({ colKey }) => [\"column \", colKey, \" not found\"],\n  13: () => \"Could not find rowIndex, this means tasks are being executed on a rowNode that has been removed from the grid.\",\n  14: ({ groupPrefix }) => `Row IDs cannot start with ${groupPrefix}, this is a reserved prefix for AG Grid's row grouping feature.`,\n  15: ({ expression }) => [\"value should be either a string or a function\", expression],\n  16: ({ expression, params, e }) => [\n    \"Processing of the expression failed\",\n    \"Expression = \",\n    expression,\n    \"Params = \",\n    params,\n    \"Exception = \",\n    e\n  ],\n  17: () => \"you need either field or valueSetter set on colDef for editing to work\",\n  18: () => `alignedGrids contains an undefined option.`,\n  19: () => `alignedGrids - No api found on the linked grid.`,\n  20: () => `You may want to configure via a callback to avoid setup race conditions:\n                     \"alignedGrids: () => [linkedGrid]\"`,\n  21: () => \"pivoting is not supported with aligned grids. You can only use one of these features at a time in a grid.\",\n  22: ({ key }) => `${key} is an initial property and cannot be updated.`,\n  23: () => \"The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.\",\n  24: () => \"row height must be a number if not using standard row model\",\n  25: ({ id }) => [`The getRowId callback must return a string. The ID `, id, ` is being cast to a string.`],\n  26: ({ fnName, preDestroyLink }) => {\n    return `Grid API function ${fnName}() cannot be called as the grid has been destroyed.\n Either clear local references to the grid api, when it is destroyed, or check gridApi.isDestroyed() to avoid calling methods against a destroyed grid.\n To run logic when the grid is about to be destroyed use the gridPreDestroy event. See: ${preDestroyLink}`;\n  },\n  27: ({ fnName, module }) => `API function '${fnName}' not registered to module '${module}'`,\n  28: () => \"setRowCount cannot be used while using row grouping.\",\n  29: () => \"tried to call sizeColumnsToFit() but the grid is coming back with zero width, maybe the grid is not visible yet on the screen?\",\n  30: ({ toIndex }) => [\n    \"tried to insert columns in invalid location, toIndex = \",\n    toIndex,\n    \"remember that you should not count the moving columns when calculating the new index\"\n  ],\n  31: () => \"infinite loop in resizeColumnSets\",\n  32: () => \"applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.\",\n  33: () => \"stateItem.aggFunc must be a string. if using your own aggregation functions, register the functions first before using them in get/set state. This is because it is intended for the column state to be stored and retrieved as simple JSON.\",\n  34: ({ key }) => `the column type '${key}' is a default column type and cannot be overridden.`,\n  35: () => `Column type definitions 'columnTypes' with a 'type' attribute are not supported because a column type cannot refer to another column type. Only column definitions 'columnDefs' can use the 'type' attribute to refer to a column type.`,\n  36: ({ t }) => \"colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\",\n  37: () => `Changing the column pinning status is not allowed with domLayout='print'`,\n  38: ({ iconName }) => `provided icon '${iconName}' needs to be a string or a function`,\n  39: () => \"Applying column order broke a group where columns should be married together. Applying new order has been discarded.\",\n  40: ({ e, method }) => `${e}\n${clipboardApiError(method)}`,\n  41: () => \"Browser did not allow document.execCommand('copy'). Ensure 'api.copySelectedRowsToClipboard() is invoked via a user event, i.e. button click, otherwise the browser will prevent it for security reasons.\",\n  42: () => \"Browser does not support document.execCommand('copy') for clipboard operations\",\n  43: ({ iconName }) => `As of v33, icon '${iconName}' is deprecated. Use the icon CSS name instead.`,\n  44: () => 'Data type definition hierarchies (via the \"extendsDataType\" property) cannot contain circular references.',\n  45: ({ parentCellDataType }) => `The data type definition ${parentCellDataType} does not exist.`,\n  46: () => 'The \"baseDataType\" property of a data type definition must match that of its parent.',\n  47: ({ cellDataType }) => `Missing data type definition - \"${cellDataType}\"`,\n  48: ({ property }) => `Cell data type is \"object\" but no Value ${property} has been provided. Please either provide an object data type definition with a Value ${property}, or set \"colDef.value${property}\"`,\n  49: ({ methodName }) => `Framework component is missing the method ${methodName}()`,\n  50: ({ compName }) => `Could not find component ${compName}, did you forget to configure this component?`,\n  51: () => `Export cancelled. Export is not allowed as per your configuration.`,\n  52: () => \"There is no `window` associated with the current `document`\",\n  53: () => `unknown value type during csv conversion`,\n  54: () => \"Could not find document body, it is needed for drag and drop and context menu.\",\n  55: () => \"addRowDropZone - A container target needs to be provided\",\n  56: () => \"addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.\",\n  57: () => \"unable to show popup filter, filter instantiation failed\",\n  58: () => \"no values found for select cellEditor\",\n  59: () => \"cannot select pinned rows\",\n  60: () => \"cannot select node until it has finished loading\",\n  61: () => \"since version v32.2.0, rowNode.isFullWidthCell() has been deprecated. Instead check `rowNode.detail` followed by the user provided `isFullWidthRow` grid option.\",\n  62: ({ colId }) => `setFilterModel() - no column found for colId: ${colId}`,\n  63: ({ colId }) => `setFilterModel() - unable to fully apply model, filtering disabled for colId: ${colId}`,\n  64: ({ colId }) => `setFilterModel() - unable to fully apply model, unable to create filter for colId: ${colId}`,\n  65: () => \"filter missing setModel method, which is needed for setFilterModel\",\n  66: () => \"filter API missing getModel method, which is needed for getFilterModel\",\n  67: () => \"Filter is missing isFilterActive() method\",\n  68: () => \"Column Filter API methods have been disabled as Advanced Filters are enabled.\",\n  69: ({ guiFromFilter }) => `getGui method from filter returned ${guiFromFilter}; it should be a DOM element.`,\n  70: ({ newFilter }) => `Grid option quickFilterText only supports string inputs, received: ${typeof newFilter}`,\n  71: () => \"debounceMs is ignored when apply button is present\",\n  72: ({ keys }) => [`ignoring FilterOptionDef as it doesn't contain one of `, keys],\n  73: () => `invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'`,\n  74: () => \"no filter options for filter\",\n  75: () => \"Unknown button type specified\",\n  76: ({ filterModelType }) => [\n    'Unexpected type of filter \"',\n    filterModelType,\n    '\", it looks like the filter was configured with incorrect Filter Options'\n  ],\n  77: () => `Filter model is missing 'conditions'`,\n  78: () => 'Filter Model contains more conditions than \"filterParams.maxNumConditions\". Additional conditions have been ignored.',\n  79: () => '\"filterParams.maxNumConditions\" must be greater than or equal to zero.',\n  80: () => '\"filterParams.numAlwaysVisibleConditions\" must be greater than or equal to zero.',\n  81: () => '\"filterParams.numAlwaysVisibleConditions\" cannot be greater than \"filterParams.maxNumConditions\".',\n  82: ({ param }) => `DateFilter ${param} is not a number`,\n  83: () => `DateFilter minValidYear should be <= maxValidYear`,\n  84: () => `DateFilter minValidDate should be <= maxValidDate`,\n  85: () => \"DateFilter should not have both minValidDate and minValidYear parameters set at the same time! minValidYear will be ignored.\",\n  86: () => \"DateFilter should not have both maxValidDate and maxValidYear parameters set at the same time! maxValidYear will be ignored.\",\n  87: () => \"DateFilter parameter minValidDate should always be lower than or equal to parameter maxValidDate.\",\n  88: ({ index }) => `Invalid row index for ensureIndexVisible: ${index}`,\n  89: () => `A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)`,\n  90: () => `datasource is missing getRows method`,\n  91: () => \"Filter is missing method doesFilterPass\",\n  92: () => `AnimationFrameService called but animation frames are off`,\n  93: () => \"cannot add multiple ranges when `cellSelection.suppressMultiRanges = true`\",\n  94: ({\n    paginationPageSizeOption,\n    pageSizeSet,\n    pageSizesSet,\n    pageSizeOptions\n  }) => `'paginationPageSize=${paginationPageSizeOption}'${pageSizeSet ? \"\" : \" (default value)\"}, but ${paginationPageSizeOption} is not included in${pageSizesSet ? \"\" : \" the default\"} paginationPageSizeSelector=[${pageSizeOptions?.join(\", \")}].`,\n  95: ({\n    paginationPageSizeOption,\n    paginationPageSizeSelector: paginationPageSizeSelector2\n  }) => `Either set '${paginationPageSizeSelector2}' to an array that includes ${paginationPageSizeOption} or to 'false' to disable the page size selector.`,\n  96: ({ id, data }) => [\n    \"Duplicate ID\",\n    id,\n    \"found for pinned row with data\",\n    data,\n    \"When `getRowId` is defined, it must return unique IDs for all pinned rows. Use the `rowPinned` parameter.\"\n  ],\n  97: ({ colId }) => `cellEditor for column ${colId} is missing getGui() method`,\n  98: () => \"popup cellEditor does not work with fullRowEdit - you cannot use them both - either turn off fullRowEdit, or stop using popup editors.\",\n  99: () => \"Since v32, `api.hideOverlay()` does not hide the loading overlay when `loading=true`. Set `loading=false` instead.\",\n  100: ({ rowModelType }) => `selectAll only available when rowModelType='clientSide', ie not ${rowModelType}`,\n  101: ({\n    propertyName,\n    componentName,\n    agGridDefaults,\n    jsComps\n  }) => {\n    const textOutput = [];\n    const validComponents = [\n      // Don't include the old names / internals in potential suggestions\n      ...Object.keys(agGridDefaults ?? []).filter(\n        (k) => ![\"agCellEditor\", \"agGroupRowRenderer\", \"agSortIndicator\"].includes(k)\n      ),\n      ...Object.keys(jsComps ?? [])\n    ];\n    const suggestions = _fuzzySuggestions({\n      inputValue: componentName,\n      allSuggestions: validComponents,\n      hideIrrelevant: true,\n      filterByPercentageOfBestMatch: 0.8\n    }).values;\n    textOutput.push(\n      `Could not find '${componentName}' component. It was configured as \"${propertyName}: '${componentName}'\" but it wasn't found in the list of registered components.\n`\n    );\n    if (suggestions.length > 0) {\n      textOutput.push(`         Did you mean: [${suggestions.slice(0, 3)}]?\n`);\n    }\n    textOutput.push(`If using a custom component check it has been registered correctly.`);\n    return textOutput;\n  },\n  102: () => \"selectAll: 'filtered' only works when gridOptions.rowModelType='clientSide'\",\n  103: () => \"Invalid selection state. When using client-side row model, the state must conform to `string[]`.\",\n  104: ({ value, param }) => `Numeric value ${value} passed to ${param} param will be interpreted as ${value} seconds. If this is intentional use \"${value}s\" to silence this warning.`,\n  105: ({ e }) => [`chart rendering failed`, e],\n  106: () => `Theming API and Legacy Themes are both used in the same page. A Theming API theme has been provided to the 'theme' grid option, but the file (ag-grid.css) is also included and will cause styling issues. Remove ag-grid.css from the page. See the migration guide: ${baseDocLink}/theming-migration/`,\n  107: ({ key, value }) => `Invalid value for theme param ${key} - ${value}`,\n  108: ({ e }) => [\"chart update failed\", e],\n  109: ({ aggFuncOrString }) => `unrecognised aggregation function ${aggFuncOrString}`,\n  110: () => \"groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup\",\n  111: () => \"Invalid selection state. When `groupSelects` is enabled, the state must conform to `IServerSideGroupSelectionState`.\",\n  113: () => \"Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values\",\n  114: ({ component }) => `Could not find component with name of ${component}. Is it in Vue.components?`,\n  // 115: () => 'The provided selection state should be an object.' as const,\n  116: () => \"Invalid selection state. The state must conform to `IServerSideSelectionState`.\",\n  117: () => \"selectAll must be of boolean type.\",\n  118: () => \"Infinite scrolling must be enabled in order to set the row count.\",\n  119: () => \"Unable to instantiate filter\",\n  120: () => \"MultiFloatingFilterComp expects MultiFilter as its parent\",\n  121: () => \"a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (see AG Grid docs) or b) to toString() on the object to return a key\",\n  122: () => \"could not find the document, document is empty\",\n  123: () => \"Advanced Filter is only supported with the Client-Side Row Model or Server-Side Row Model.\",\n  124: () => \"No active charts to update.\",\n  125: ({ chartId }) => `Unable to update chart. No active chart found with ID: ${chartId}.`,\n  126: () => \"unable to restore chart as no chart model is provided\",\n  127: ({ allRange }) => `unable to create chart as ${allRange ? \"there are no columns in the grid\" : \"no range is selected\"}.`,\n  128: ({ feature }) => `${feature} is only available if using 'multiRow' selection mode.`,\n  129: ({ feature, rowModel }) => `${feature} is only available if using 'clientSide' or 'serverSide' rowModelType, you are using ${rowModel}.`,\n  130: () => 'cannot multi select unless selection mode is \"multiRow\"',\n  // 131: () => 'cannot range select while selecting multiple rows' as const,\n  132: () => \"Row selection features are not available unless `rowSelection` is enabled.\",\n  133: ({ iconName }) => `icon '${iconName}' function should return back a string or a dom object`,\n  134: ({ iconName }) => `Did not find icon '${iconName}'`,\n  135: () => `Data type of the new value does not match the cell data type of the column`,\n  136: () => `Unable to update chart as the 'type' is missing. It must be either 'rangeChartUpdate', 'pivotChartUpdate', or 'crossFilterChartUpdate'.`,\n  137: ({ type, currentChartType }) => `Unable to update chart as a '${type}' update type is not permitted on a ${currentChartType}.`,\n  138: ({ chartType }) => `invalid chart type supplied: ${chartType}`,\n  139: ({ customThemeName }) => `a custom chart theme with the name ${customThemeName} has been supplied but not added to the 'chartThemes' list`,\n  140: ({ name }) => `no stock theme exists with the name '${name}' and no custom chart theme with that name was supplied to 'customChartThemes'`,\n  141: () => \"cross filtering with row grouping is not supported.\",\n  142: () => \"cross filtering is only supported in the client side row model.\",\n  143: ({ panel }) => `'${panel}' is not a valid Chart Tool Panel name`,\n  144: ({ type }) => `Invalid charts data panel group name supplied: '${type}'`,\n  145: ({ group }) => `As of v32, only one charts customize panel group can be expanded at a time. '${group}' will not be expanded.`,\n  146: ({ comp }) => `Unable to instantiate component '${comp}' as its module hasn't been loaded. Add 'ValidationModule' to see which module is required.`,\n  147: ({ group }) => `Invalid charts customize panel group name supplied: '${group}'`,\n  148: ({ group }) => `invalid chartGroupsDef config '${group}'`,\n  149: ({ group, chartType }) => `invalid chartGroupsDef config '${group}.${chartType}'`,\n  150: () => `'seriesChartTypes' are required when the 'customCombo' chart type is specified.`,\n  151: ({ chartType }) => `invalid chartType '${chartType}' supplied in 'seriesChartTypes', converting to 'line' instead.`,\n  152: ({ colId }) => `no 'seriesChartType' found for colId = '${colId}', defaulting to 'line'.`,\n  153: ({ chartDataType }) => `unexpected chartDataType value '${chartDataType}' supplied, instead use 'category', 'series' or 'excluded'`,\n  154: ({ colId }) => `cross filtering requires a 'agSetColumnFilter' or 'agMultiColumnFilter' to be defined on the column with id: ${colId}`,\n  155: ({ option }) => `'${option}' is not a valid Chart Toolbar Option`,\n  156: ({ panel }) => `Invalid panel in chartToolPanelsDef.panels: '${panel}'`,\n  157: ({ unrecognisedGroupIds }) => [\"unable to find group(s) for supplied groupIds:\", unrecognisedGroupIds],\n  158: () => \"can not expand a column item that does not represent a column group header\",\n  159: () => \"Invalid params supplied to createExcelFileForExcel() - `ExcelExportParams.data` is empty.\",\n  160: () => `Export cancelled. Export is not allowed as per your configuration.`,\n  161: () => \"The Excel Exporter is currently on Multi Sheet mode. End that operation by calling 'api.getMultipleSheetAsExcel()' or 'api.exportMultipleSheetsAsExcel()'\",\n  162: ({ id, dataType }) => `Unrecognized data type for excel export [${id}.dataType=${dataType}]`,\n  163: ({ featureName }) => `Excel table export does not work with ${featureName}. The exported Excel file will not contain any Excel tables.\n Please turn off ${featureName} to enable Excel table exports.`,\n  164: () => \"Unable to add data table to Excel sheet: A table already exists.\",\n  165: () => \"Unable to add data table to Excel sheet: Missing required parameters.\",\n  166: ({ unrecognisedGroupIds }) => [\"unable to find groups for these supplied groupIds:\", unrecognisedGroupIds],\n  167: ({ unrecognisedColIds }) => [\"unable to find columns for these supplied colIds:\", unrecognisedColIds],\n  168: () => \"detailCellRendererParams.template should be function or string\",\n  169: () => 'Reference to eDetailGrid was missing from the details template. Please add data-ref=\"eDetailGrid\" to the template.',\n  170: ({ providedStrategy }) => `invalid cellRendererParams.refreshStrategy = ${providedStrategy} supplied, defaulting to refreshStrategy = 'rows'.`,\n  171: () => \"could not find detail grid options for master detail, please set gridOptions.detailCellRendererParams.detailGridOptions\",\n  172: () => \"could not find getDetailRowData for master / detail, please set gridOptions.detailCellRendererParams.getDetailRowData\",\n  173: ({ group }) => `invalid chartGroupsDef config '${group}'`,\n  174: ({ group, chartType }) => `invalid chartGroupsDef config '${group}.${chartType}'`,\n  175: ({ menuTabName, itemsToConsider }) => [\n    `Trying to render an invalid menu item '${menuTabName}'. Check that your 'menuTabs' contains one of `,\n    itemsToConsider\n  ],\n  176: ({ key }) => `unknown menu item type ${key}`,\n  177: () => `valid values for cellSelection.handle.direction are 'x', 'y' and 'xy'. Default to 'xy'.`,\n  178: ({ colId }) => `column ${colId} is not visible`,\n  179: () => \"totalValueGetter should be either a function or a string (expression)\",\n  180: () => \"agRichSelectCellEditor requires cellEditorParams.values to be set\",\n  181: () => \"agRichSelectCellEditor cannot have `multiSelect` and `allowTyping` set to `true`. AllowTyping has been turned off.\",\n  182: () => 'you cannot mix groupDisplayType = \"multipleColumns\" with treeData, only one column can be used to display groups when doing tree data',\n  183: () => \"Group Column Filter only works on group columns. Please use a different filter.\",\n  184: ({ parentGroupData, childNodeData }) => [`duplicate group keys for row data, keys should be unique`, [parentGroupData, childNodeData]],\n  185: ({ data }) => [`getDataPath() should not return an empty path`, [data]],\n  186: ({\n    rowId,\n    rowData,\n    duplicateRowsData\n  }) => [\n    `duplicate group keys for row data, keys should be unique`,\n    rowId,\n    rowData,\n    ...duplicateRowsData ?? []\n  ],\n  187: ({ rowId, firstData, secondData }) => [\n    `Duplicate node id ${rowId}. Row IDs are provided via the getRowId() callback. Please modify the getRowId() callback code to provide unique row id values.`,\n    \"first instance\",\n    firstData,\n    \"second instance\",\n    secondData\n  ],\n  188: () => `getRowId callback must be provided for Server Side Row Model selection to work correctly.`,\n  189: ({ startRow }) => `invalid value ${startRow} for startRow, the value should be >= 0`,\n  190: ({ rowGroupId, data }) => [\n    `null and undefined values are not allowed for server side row model keys`,\n    rowGroupId ? `column = ${rowGroupId}` : ``,\n    `data is `,\n    data\n  ],\n  // 191: () => `cannot multi select unless selection mode is 'multiRow'` as const,\n  // 192: () => `cannot use range selection when multi selecting rows` as const,\n  // 193: () => \"cannot multi select unless selection mode is 'multiRow'\" as const,\n  194: ({ method }) => `calling gridApi.${method}() is only possible when using rowModelType=\\`clientSide\\`.`,\n  195: ({ justCurrentPage }) => `selecting just ${justCurrentPage ? \"current page\" : \"filtered\"} only works when gridOptions.rowModelType='clientSide'`,\n  196: ({ key }) => `Provided ids must be of string type. Invalid id provided: ${key}`,\n  197: () => \"`toggledNodes` must be an array of string ids.\",\n  // 198: () => `cannot multi select unless selection mode is 'multiRow'` as const,\n  199: () => `getSelectedNodes and getSelectedRows functions cannot be used with select all functionality with the server-side row model. Use \\`api.getServerSideSelectionState()\\` instead.`,\n  200: missingModule,\n  201: ({ rowModelType }) => `Could not find row model for rowModelType = ${rowModelType}`,\n  202: () => `\\`getSelectedNodes\\` and \\`getSelectedRows\\` functions cannot be used with \\`groupSelectsChildren\\` and the server-side row model. Use \\`api.getServerSideSelectionState()\\` instead.`,\n  203: () => \"Server Side Row Model does not support Dynamic Row Height and Cache Purging. Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.\",\n  204: () => \"Server Side Row Model does not support Auto Row Height and Cache Purging. Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.\",\n  205: ({ duplicateIdText }) => `Unable to display rows as duplicate row ids (${duplicateIdText}) were returned by the getRowId callback. Please modify the getRowId callback to provide unique ids.`,\n  206: () => \"getRowId callback must be implemented for transactions to work. Transaction was ignored.\",\n  207: () => 'The Set Filter Parameter \"defaultToNothingSelected\" value was ignored because it does not work when \"excelMode\" is used.',\n  208: () => `Set Filter Value Formatter must return string values. Please ensure the Set Filter Value Formatter returns string values for complex objects.`,\n  209: () => `Set Filter Key Creator is returning null for provided values and provided values are primitives. Please provide complex objects. See ${baseDocLink}/filter-set-filter-list/#filter-value-types`,\n  210: () => \"Set Filter has a Key Creator, but provided values are primitives. Did you mean to provide complex objects?\",\n  211: () => \"property treeList=true for Set Filter params, but you did not provide a treeListPathGetter or values of type Date.\",\n  212: () => `please review all your toolPanel components, it seems like at least one of them doesn't have an id`,\n  213: () => \"Advanced Filter does not work with Filters Tool Panel. Filters Tool Panel has been disabled.\",\n  214: ({ key }) => `unable to lookup Tool Panel as invalid key supplied: ${key}`,\n  215: ({ key, defaultByKey }) => `the key ${key} is not a valid key for specifying a tool panel, valid keys are: ${Object.keys(defaultByKey ?? {}).join(\",\")}`,\n  216: ({ name }) => `Missing component for '${name}'`,\n  217: ({ invalidColIds }) => [\"unable to find grid columns for the supplied colDef(s):\", invalidColIds],\n  218: ({ property, defaultOffset }) => `${property} must be a number, the value you provided is not a valid number. Using the default of ${defaultOffset}px.`,\n  219: ({ property }) => `Property ${property} does not exist on the target object.`,\n  220: ({ lineDash }) => `'${lineDash}' is not a valid 'lineDash' option.`,\n  221: () => `agAggregationComponent should only be used with the client and server side row model.`,\n  222: () => `agFilteredRowCountComponent should only be used with the client side row model.`,\n  223: () => `agSelectedRowCountComponent should only be used with the client and server side row model.`,\n  224: () => `agTotalAndFilteredRowCountComponent should only be used with the client side row model.`,\n  225: () => \"agTotalRowCountComponent should only be used with the client side row model.\",\n  226: () => \"viewport is missing init method.\",\n  227: () => \"menu item icon must be DOM node or string\",\n  228: ({ menuItemOrString }) => `unrecognised menu item ${menuItemOrString}`,\n  229: ({ index }) => [\"invalid row index for ensureIndexVisible: \", index],\n  230: () => \"detailCellRendererParams.template is not supported by AG Grid React. To change the template, provide a Custom Detail Cell Renderer. See https://www.ag-grid.com/react-data-grid/master-detail-custom-detail/\",\n  // @deprecated v32 mark for removal as part of v32 deprecated features\n  231: () => \"As of v32, using custom components with `reactiveCustomComponents = false` is deprecated.\",\n  232: () => \"Using both rowData and v-model. rowData will be ignored.\",\n  233: ({ methodName }) => `Framework component is missing the method ${methodName}()`,\n  234: () => 'Group Column Filter does not work with the colDef property \"field\". This property will be ignored.',\n  235: () => 'Group Column Filter does not work with the colDef property \"filterValueGetter\". This property will be ignored.',\n  236: () => 'Group Column Filter does not work with the colDef property \"filterParams\". This property will be ignored.',\n  237: () => \"Group Column Filter does not work with Tree Data enabled. Please disable Tree Data, or use a different filter.\",\n  238: () => \"setRowCount can only accept a positive row count.\",\n  239: () => 'Theming API and CSS File Themes are both used in the same page. In v33 we released the Theming API as the new default method of styling the grid. See the migration docs https://www.ag-grid.com/react-data-grid/theming-migration/. Because no value was provided to the `theme` grid option it defaulted to themeQuartz. But the file (ag-grid.css) is also included and will cause styling issues. Either pass the string \"legacy\" to the theme grid option to use v32 style themes, or remove ag-grid.css from the page to use Theming API.',\n  240: ({ theme }) => `theme grid option must be a Theming API theme object or the string \"legacy\", received: ${theme}`,\n  // 241: () => `cannot select multiple rows when rowSelection.mode is set to 'singleRow'` as const,\n  // 242: () => 'cannot select multiple rows when using rangeSelect' as const,\n  243: () => \"Failed to deserialize state - each provided state object must be an object.\",\n  244: () => \"Failed to deserialize state - `selectAllChildren` must be a boolean value or undefined.\",\n  245: () => \"Failed to deserialize state - `toggledNodes` must be an array.\",\n  246: () => \"Failed to deserialize state - Every `toggledNode` requires an associated string id.\",\n  247: () => `Row selection state could not be parsed due to invalid data. Ensure all child state has toggledNodes or does not conform with the parent rule. \nPlease rebuild the selection state and reapply it.`,\n  248: () => \"SetFloatingFilter expects SetFilter as its parent\",\n  249: () => \"Must supply a Value Formatter in Set Filter params when using a Key Creator\",\n  250: () => \"Must supply a Key Creator in Set Filter params when `treeList = true` on a group column, and Tree Data or Row Grouping is enabled.\",\n  251: ({ chartType }) => `AG Grid: Unable to create chart as an invalid chartType = '${chartType}' was supplied.`,\n  252: () => \"cannot get grid to draw rows when it is in the middle of drawing rows. \\nYour code probably called a grid API method while the grid was in the render stage. \\nTo overcome this, put the API call into a timeout, e.g. instead of api.redrawRows(), call setTimeout(function() { api.redrawRows(); }, 0). \\nTo see what part of your code that caused the refresh check this stacktrace.\",\n  253: ({ version }) => [\"Illegal version string: \", version],\n  254: () => \"Cannot create chart: no chart themes available.\",\n  255: ({ point }) => `Lone surrogate U+${point?.toString(16).toUpperCase()} is not a scalar value`,\n  256: () => \"Unable to initialise. See validation error, or load ValidationModule if missing.\",\n  257: () => missingChartsWithModule(\"IntegratedChartsModule\"),\n  258: () => missingChartsWithModule(\"SparklinesModule\"),\n  259: ({ part }) => `the argument to theme.withPart must be a Theming API part object, received: ${part}`,\n  260: ({\n    propName,\n    compName,\n    gridScoped,\n    gridId,\n    rowModelType\n  }) => missingModule({\n    reasonOrId: `AG Grid '${propName}' component: ${compName}`,\n    moduleName: USER_COMP_MODULES[compName],\n    gridId,\n    gridScoped,\n    rowModelType\n  }),\n  261: () => \"As of v33, `column.isHovered()` is deprecated. Use `api.isColumnHovered(column)` instead.\",\n  262: () => 'As of v33, icon key \"smallDown\" is deprecated. Use \"advancedFilterBuilderSelect\" for Advanced Filter Builder dropdown, \"selectOpen\" for Select cell editor and dropdowns (e.g. Integrated Charts menu), \"richSelectOpen\" for Rich Select cell editor.',\n  263: () => 'As of v33, icon key \"smallLeft\" is deprecated. Use \"panelDelimiterRtl\" for Row Group Panel / Pivot Panel, \"subMenuOpenRtl\" for sub-menus.',\n  264: () => 'As of v33, icon key \"smallRight\" is deprecated. Use \"panelDelimiter\" for Row Group Panel / Pivot Panel, \"subMenuOpen\" for sub-menus.',\n  265: ({ colId }) => `Unable to infer chart data type for column '${colId}' if first data entry is null. Please specify \"chartDataType\", or a \"cellDataType\" in the column definition. For more information, see ${baseDocLink}/integrated-charts-range-chart#coldefchartdatatype .`,\n  266: () => 'As of v33.1, using \"keyCreator\" with the Rich Select Editor has been deprecated. It now requires the \"formatValue\" callback to convert complex data to strings.',\n  267: () => \"Detail grids can not use a different theme to the master grid, the `theme` detail grid option will be ignored.\",\n  268: () => \"Transactions aren't supported with tree data when using treeDataChildrenField\",\n  269: () => \"When `masterSelects: 'detail'`, detail grids must be configured with multi-row selection\",\n  270: ({ id, parentId }) => `Cycle detected for row with id='${id}' and parent id='${parentId}'. Resetting the parent for row with id='${id}' and showing it as a root-level node.`,\n  271: ({ id, parentId }) => `Parent row not found for row with id='${id}' and parent id='${parentId}'. Showing row with id='${id}' as a root-level node.`,\n  272: () => NoModulesRegisteredError(),\n  273: ({ providedId, usedId }) => `Provided column id '${providedId}' was already in use, ensure all column and group ids are unique. Using '${usedId}' instead.`,\n  274: ({ prop }) => {\n    let msg = `Since v33, ${prop} has been deprecated.`;\n    switch (prop) {\n      case \"maxComponentCreationTimeMs\":\n        msg += \" This property is no longer required and so will be removed in a future version.\";\n        break;\n      case \"setGridApi\":\n        msg += ` This method is not called by AG Grid. To access the GridApi see: https://ag-grid.com/react-data-grid/grid-interface/#grid-api `;\n        break;\n      case \"children\":\n        msg += ` For multiple versions AgGridReact does not support children.`;\n        break;\n    }\n    return msg;\n  },\n  275: missingRowModelTypeError,\n  276: () => \"Row Numbers Row Resizer cannot be used when Grid Columns have `autoHeight` enabled.\"\n};\nfunction getError(errorId, args) {\n  const msgOrFunc = AG_GRID_ERRORS[errorId];\n  if (!msgOrFunc) {\n    return [`Missing error text for error id ${errorId}!`];\n  }\n  const errorBody = msgOrFunc(args);\n  const errorLink = getErrorLink(errorId, args);\n  const errorSuffix = `\nSee ${errorLink}`;\n  return Array.isArray(errorBody) ? errorBody.concat(errorSuffix) : [errorBody, errorSuffix];\n}\nvar MISSING_MODULE_REASONS = {\n  1: \"Charting Aggregation\",\n  2: \"pivotResultFields\",\n  3: \"setTooltip\"\n};\n\n// packages/ag-grid-community/src/grid.ts\nvar _GlobalGridOptions = class _GlobalGridOptions {\n  /**\n   * @param providedOptions\n   * @returns Shallow copy of the provided options with global options merged in.\n   */\n  static applyGlobalGridOptions(providedOptions) {\n    if (!_GlobalGridOptions.gridOptions) {\n      return { ...providedOptions };\n    }\n    let mergedGridOps = {};\n    _mergeDeep(mergedGridOps, _GlobalGridOptions.gridOptions, true, true);\n    if (_GlobalGridOptions.mergeStrategy === \"deep\") {\n      _mergeDeep(mergedGridOps, providedOptions, true, true);\n    } else {\n      mergedGridOps = { ...mergedGridOps, ...providedOptions };\n    }\n    if (_GlobalGridOptions.gridOptions.context) {\n      mergedGridOps.context = _GlobalGridOptions.gridOptions.context;\n    }\n    if (providedOptions.context) {\n      if (_GlobalGridOptions.mergeStrategy === \"deep\" && mergedGridOps.context) {\n        _mergeDeep(providedOptions.context, mergedGridOps.context, true, true);\n      }\n      mergedGridOps.context = providedOptions.context;\n    }\n    return mergedGridOps;\n  }\n};\n_GlobalGridOptions.gridOptions = void 0;\n_GlobalGridOptions.mergeStrategy = \"shallow\";\nvar GlobalGridOptions = _GlobalGridOptions;\nfunction provideGlobalGridOptions(gridOptions, mergeStrategy = \"shallow\") {\n  GlobalGridOptions.gridOptions = gridOptions;\n  GlobalGridOptions.mergeStrategy = mergeStrategy;\n}\nfunction _getGlobalGridOption(gridOption) {\n  return GlobalGridOptions.gridOptions?.[gridOption];\n}\nfunction createGrid(eGridDiv, gridOptions, params) {\n  if (!gridOptions) {\n    _error(11);\n    return {};\n  }\n  const gridParams = params;\n  let destroyCallback;\n  if (!gridParams?.setThemeOnGridDiv) {\n    const newGridDiv = _createElement({ tag: \"div\" });\n    newGridDiv.style.height = \"100%\";\n    eGridDiv.appendChild(newGridDiv);\n    eGridDiv = newGridDiv;\n    destroyCallback = () => eGridDiv.remove();\n  }\n  const api = new GridCoreCreator().create(\n    eGridDiv,\n    gridOptions,\n    (context) => {\n      const gridComp = new GridComp(eGridDiv);\n      context.createBean(gridComp);\n    },\n    void 0,\n    params,\n    destroyCallback\n  );\n  return api;\n}\nvar nextGridId = 1;\nvar GridCoreCreator = class {\n  create(eGridDiv, providedOptions, createUi, acceptChanges, params, destroyCallback) {\n    const gridOptions = GlobalGridOptions.applyGlobalGridOptions(providedOptions);\n    const gridId = gridOptions.gridId ?? String(nextGridId++);\n    const registeredModules = this.getRegisteredModules(params, gridId, gridOptions.rowModelType);\n    const beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules, gridId);\n    const providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);\n    if (!beanClasses) {\n      return void 0;\n    }\n    const contextParams = {\n      providedBeanInstances,\n      beanClasses,\n      gridId,\n      beanInitComparator: gridBeanInitComparator,\n      beanDestroyComparator: gridBeanDestroyComparator,\n      derivedBeans: [createGridApi],\n      destroyCallback\n    };\n    const context = new Context(contextParams);\n    this.registerModuleFeatures(context, registeredModules);\n    createUi(context);\n    context.getBean(\"syncSvc\").start();\n    if (acceptChanges) {\n      acceptChanges(context);\n    }\n    return context.getBean(\"gridApi\");\n  }\n  getRegisteredModules(params, gridId, rowModelType) {\n    _registerModule(CommunityCoreModule, void 0, true);\n    params?.modules?.forEach((m) => _registerModule(m, gridId));\n    return _getRegisteredModules(gridId, getDefaultRowModelType(rowModelType));\n  }\n  registerModuleFeatures(context, registeredModules) {\n    const registry = context.getBean(\"registry\");\n    const apiFunctionSvc = context.getBean(\"apiFunctionSvc\");\n    registeredModules.forEach((module) => {\n      registry.registerModule(module);\n      const apiFunctions = module.apiFunctions;\n      if (apiFunctions) {\n        const names = Object.keys(apiFunctions);\n        names.forEach((name) => {\n          apiFunctionSvc?.addFunction(name, apiFunctions[name]);\n        });\n      }\n    });\n  }\n  createProvidedBeans(eGridDiv, gridOptions, params) {\n    let frameworkOverrides = params ? params.frameworkOverrides : null;\n    if (_missing(frameworkOverrides)) {\n      frameworkOverrides = new VanillaFrameworkOverrides();\n    }\n    const seed = {\n      gridOptions,\n      eGridDiv,\n      globalListener: params ? params.globalListener : null,\n      globalSyncListener: params ? params.globalSyncListener : null,\n      frameworkOverrides\n    };\n    if (params && params.providedBeanInstances) {\n      Object.assign(seed, params.providedBeanInstances);\n    }\n    return seed;\n  }\n  createBeansList(userProvidedRowModelType, registeredModules, gridId) {\n    const rowModelModuleNames = {\n      clientSide: \"ClientSideRowModel\",\n      infinite: \"InfiniteRowModel\",\n      serverSide: \"ServerSideRowModel\",\n      viewport: \"ViewportRowModel\"\n    };\n    const rowModelType = getDefaultRowModelType(userProvidedRowModelType);\n    const rowModuleModelName = rowModelModuleNames[rowModelType];\n    if (!rowModuleModelName) {\n      _logPreInitErr(201, { rowModelType }, `Unknown rowModelType ${rowModelType}.`);\n      return;\n    }\n    if (!_hasUserRegistered()) {\n      _logPreInitErr(272, void 0, NoModulesRegisteredError());\n      return;\n    }\n    if (!userProvidedRowModelType) {\n      const registeredRowModelModules = Object.entries(rowModelModuleNames).filter(\n        ([rowModelType2, module]) => _isModuleRegistered(module, gridId, rowModelType2)\n      );\n      if (registeredRowModelModules.length == 1) {\n        const [userRowModelType, moduleName] = registeredRowModelModules[0];\n        if (userRowModelType !== rowModelType) {\n          const params = {\n            moduleName,\n            rowModelType: userRowModelType\n          };\n          _logPreInitErr(275, params, missingRowModelTypeError(params));\n          return;\n        }\n      }\n    }\n    if (!_isModuleRegistered(rowModuleModelName, gridId, rowModelType)) {\n      _logPreInitErr(\n        200,\n        {\n          reasonOrId: `rowModelType = '${rowModelType}'`,\n          moduleName: rowModuleModelName,\n          gridScoped: _areModulesGridScoped(),\n          gridId,\n          rowModelType\n        },\n        `Missing module ${rowModuleModelName}Module for rowModelType ${rowModelType}.`\n      );\n      return;\n    }\n    const beans = /* @__PURE__ */ new Set();\n    registeredModules.forEach((module) => module.beans?.forEach((bean) => beans.add(bean)));\n    return Array.from(beans);\n  }\n};\nfunction getDefaultRowModelType(passedRowModelType) {\n  return passedRowModelType ?? \"clientSide\";\n}\n\n// packages/ag-grid-community/src/api/rowModelApiUtils.ts\nfunction _getClientSideRowModel(beans) {\n  const rowModel = beans.rowModel;\n  return rowModel.getType() === \"clientSide\" ? rowModel : void 0;\n}\nfunction _getInfiniteRowModel(beans) {\n  const rowModel = beans.rowModel;\n  return rowModel.getType() === \"infinite\" ? rowModel : void 0;\n}\nfunction _getServerSideRowModel(beans) {\n  const rowModel = beans.rowModel;\n  return rowModel.getType() === \"serverSide\" ? rowModel : void 0;\n}\n\n// packages/ag-grid-community/src/misc/locale/localeService.ts\nvar LocaleService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"localeSvc\";\n  }\n  getLocaleTextFunc() {\n    const gos = this.gos;\n    const getLocaleText = gos.getCallback(\"getLocaleText\");\n    if (getLocaleText) {\n      return (key, defaultValue, variableValues) => {\n        const params = {\n          key,\n          defaultValue,\n          variableValues\n        };\n        return getLocaleText(params);\n      };\n    }\n    const localeText = gos.get(\"localeText\");\n    return (key, defaultValue, variableValues) => {\n      let localisedText = localeText && localeText[key];\n      if (localisedText && variableValues && variableValues.length) {\n        let found = 0;\n        while (true) {\n          if (found >= variableValues.length) {\n            break;\n          }\n          const idx = localisedText.indexOf(\"${variable}\");\n          if (idx === -1) {\n            break;\n          }\n          localisedText = localisedText.replace(\"${variable}\", variableValues[found++]);\n        }\n      }\n      return localisedText ?? defaultValue;\n    };\n  }\n};\n\n// packages/ag-grid-community/src/misc/state/stateUtils.ts\nfunction convertColumnState(columnState, enablePivotMode = false) {\n  const sortColumns = [];\n  const groupColIds = [];\n  const aggregationColumns = [];\n  const pivotColIds = [];\n  const leftColIds = [];\n  const rightColIds = [];\n  const hiddenColIds = [];\n  const columnSizes = [];\n  const columns = [];\n  let defaultSortIndex = 0;\n  for (let i = 0; i < columnState.length; i++) {\n    const {\n      colId,\n      sort,\n      sortIndex,\n      rowGroup,\n      rowGroupIndex,\n      aggFunc,\n      pivot,\n      pivotIndex,\n      pinned,\n      hide,\n      width,\n      flex\n    } = columnState[i];\n    columns.push(colId);\n    if (sort) {\n      sortColumns[sortIndex ?? defaultSortIndex++] = { colId, sort };\n    }\n    if (rowGroup) {\n      groupColIds[rowGroupIndex ?? 0] = colId;\n    }\n    if (typeof aggFunc === \"string\") {\n      aggregationColumns.push({ colId, aggFunc });\n    }\n    if (pivot) {\n      pivotColIds[pivotIndex ?? 0] = colId;\n    }\n    if (pinned) {\n      (pinned === \"right\" ? rightColIds : leftColIds).push(colId);\n    }\n    if (hide) {\n      hiddenColIds.push(colId);\n    }\n    if (flex != null || width) {\n      columnSizes.push({ colId, flex: flex ?? void 0, width });\n    }\n  }\n  return {\n    sort: sortColumns.length ? { sortModel: sortColumns } : void 0,\n    rowGroup: groupColIds.length ? { groupColIds } : void 0,\n    aggregation: aggregationColumns.length ? { aggregationModel: aggregationColumns } : void 0,\n    pivot: pivotColIds.length || enablePivotMode ? { pivotMode: enablePivotMode, pivotColIds } : void 0,\n    columnPinning: leftColIds.length || rightColIds.length ? { leftColIds, rightColIds } : void 0,\n    columnVisibility: hiddenColIds.length ? { hiddenColIds } : void 0,\n    columnSizing: columnSizes.length ? { columnSizingModel: columnSizes } : void 0,\n    columnOrder: columns.length ? { orderedColIds: columns } : void 0\n  };\n}\nfunction _convertColumnGroupState(columnGroupState) {\n  const openColumnGroups = [];\n  columnGroupState.forEach(({ groupId, open }) => {\n    if (open) {\n      openColumnGroups.push(groupId);\n    }\n  });\n  return openColumnGroups.length ? { openColumnGroupIds: openColumnGroups } : void 0;\n}\nfunction convertColumnGroupState(columnGroupState) {\n  return { columnGroup: _convertColumnGroupState(columnGroupState) };\n}\n\n// packages/ag-grid-community/src/components/framework/frameworkComponentWrapper.ts\nvar BaseComponentWrapper = class {\n  wrap(OriginalConstructor, mandatoryMethods, optionalMethods, componentType) {\n    const wrapper = this.createWrapper(OriginalConstructor, componentType);\n    mandatoryMethods?.forEach((methodName) => {\n      this.createMethod(wrapper, methodName, true);\n    });\n    optionalMethods?.forEach((methodName) => {\n      this.createMethod(wrapper, methodName, false);\n    });\n    return wrapper;\n  }\n  createMethod(wrapper, methodName, mandatory) {\n    wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n  }\n  createMethodProxy(wrapper, methodName, mandatory) {\n    return function() {\n      if (wrapper.hasMethod(methodName)) {\n        return wrapper.callMethod(methodName, arguments);\n      }\n      if (mandatory) {\n        _warn(49, { methodName });\n      }\n      return null;\n    };\n  }\n};\n\n// packages/ag-grid-community/src/tooltip/tooltipComponent.ts\nvar TooltipComponentElement = { tag: \"div\", cls: \"ag-tooltip\" };\nvar TooltipComponent2 = class extends PopupComponent {\n  constructor() {\n    super(TooltipComponentElement);\n  }\n  // will need to type params\n  init(params) {\n    const { value } = params;\n    this.getGui().textContent = _toString(value);\n  }\n};\n\n// packages/ag-grid-community/src/utils/number.ts\nfunction _formatNumberCommas(value, getLocaleTextFunc) {\n  if (typeof value !== \"number\") {\n    return \"\";\n  }\n  const localeTextFunc = getLocaleTextFunc();\n  const thousandSeparator = localeTextFunc(\"thousandSeparator\", \",\");\n  const decimalSeparator = localeTextFunc(\"decimalSeparator\", \".\");\n  return value.toString().replace(\".\", decimalSeparator).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, `$1${thousandSeparator}`);\n}\n\n// packages/ag-grid-community/src/export/baseCreator.ts\nvar BaseCreator = class extends BeanStub {\n  getFileName(fileName) {\n    const extension = this.getDefaultFileExtension();\n    if (fileName == null || !fileName.length) {\n      fileName = this.getDefaultFileName();\n    }\n    return fileName.indexOf(\".\") === -1 ? `${fileName}.${extension}` : fileName;\n  }\n  getData(params) {\n    const serializingSession = this.createSerializingSession(params);\n    return this.beans.gridSerializer.serialize(serializingSession, params);\n  }\n  getDefaultFileName() {\n    return `export.${this.getDefaultFileExtension()}`;\n  }\n};\n\n// packages/ag-grid-community/src/export/baseGridSerializingSession.ts\nvar BaseGridSerializingSession = class {\n  constructor(config) {\n    const {\n      colModel,\n      rowGroupColsSvc,\n      colNames,\n      valueSvc,\n      gos,\n      processCellCallback,\n      processHeaderCallback,\n      processGroupHeaderCallback,\n      processRowGroupCallback\n    } = config;\n    this.colModel = colModel;\n    this.rowGroupColsSvc = rowGroupColsSvc;\n    this.colNames = colNames;\n    this.valueSvc = valueSvc;\n    this.gos = gos;\n    this.processCellCallback = processCellCallback;\n    this.processHeaderCallback = processHeaderCallback;\n    this.processGroupHeaderCallback = processGroupHeaderCallback;\n    this.processRowGroupCallback = processRowGroupCallback;\n  }\n  prepare(_columnsToExport) {\n  }\n  extractHeaderValue(column) {\n    const value = this.getHeaderName(this.processHeaderCallback, column);\n    return value ?? \"\";\n  }\n  extractRowCellValue(column, currentColumnIndex, accumulatedRowIndex, type, node) {\n    if (this.processRowGroupCallback && (this.gos.get(\"treeData\") || node.group) && (!node.rowGroupColumn || column.isRowGroupDisplayed(node.rowGroupColumn.getColId()))) {\n      return { value: this.processRowGroupCallback(_addGridCommonParams(this.gos, { column, node })) ?? \"\" };\n    }\n    if (this.processCellCallback) {\n      return {\n        value: this.processCellCallback(\n          _addGridCommonParams(this.gos, {\n            accumulatedRowIndex,\n            column,\n            node,\n            value: this.valueSvc.getValueForDisplay(column, node).value,\n            type,\n            parseValue: (valueToParse) => this.valueSvc.parseValue(\n              column,\n              node,\n              valueToParse,\n              this.valueSvc.getValue(column, node)\n            ),\n            formatValue: (valueToFormat) => this.valueSvc.formatValue(column, node, valueToFormat) ?? valueToFormat\n          })\n        ) ?? \"\"\n      };\n    }\n    const isTreeData = this.gos.get(\"treeData\");\n    const valueService = this.valueSvc;\n    const isGrandTotalRow = node.level === -1 && node.footer;\n    const isFullWidthGroup = currentColumnIndex === 0 && _isFullWidthGroupRow(this.gos, node, this.colModel.isPivotMode());\n    const isMultiAutoCol = column.colDef.showRowGroup === true && (node.group || isTreeData);\n    if (!isGrandTotalRow && (isFullWidthGroup || isMultiAutoCol)) {\n      let concatenatedGroupValue = \"\";\n      let pointer = node;\n      while (pointer && pointer.level !== -1) {\n        const { value: value2, valueFormatted: valueFormatted2 } = valueService.getValueForDisplay(\n          isFullWidthGroup ? void 0 : column,\n          // full width group doesn't have a column\n          pointer,\n          true,\n          true\n        );\n        concatenatedGroupValue = ` -> ${valueFormatted2 ?? value2 ?? \"\"}${concatenatedGroupValue}`;\n        pointer = pointer.parent;\n      }\n      return {\n        value: concatenatedGroupValue,\n        // don't return the unformatted value; as if the grid detects number it'll not use the concatenated string\n        valueFormatted: concatenatedGroupValue\n      };\n    }\n    const { value, valueFormatted } = valueService.getValueForDisplay(column, node, true, true);\n    return {\n      value: value ?? \"\",\n      valueFormatted\n    };\n  }\n  getHeaderName(callback, column) {\n    if (callback) {\n      return callback(_addGridCommonParams(this.gos, { column }));\n    }\n    return this.colNames.getDisplayNameForColumn(column, \"csv\", true);\n  }\n};\n\n// packages/ag-grid-community/src/export/downloader.ts\nfunction _downloadFile(fileName, content) {\n  const win = document.defaultView || window;\n  if (!win) {\n    _warn(52);\n    return;\n  }\n  const element = document.createElement(\"a\");\n  const url = win.URL.createObjectURL(content);\n  element.setAttribute(\"href\", url);\n  element.setAttribute(\"download\", fileName);\n  element.style.display = \"none\";\n  document.body.appendChild(element);\n  element.dispatchEvent(\n    new MouseEvent(\"click\", {\n      bubbles: false,\n      cancelable: true,\n      view: win\n    })\n  );\n  document.body.removeChild(element);\n  win.setTimeout(() => {\n    win.URL.revokeObjectURL(url);\n  }, 0);\n}\n\n// packages/ag-grid-community/src/gridOptionsInitial.ts\nvar INITIAL_GRID_OPTION_KEYS = {\n  enableBrowserTooltips: true,\n  tooltipTrigger: true,\n  tooltipMouseTrack: true,\n  tooltipShowMode: true,\n  tooltipInteraction: true,\n  defaultColGroupDef: true,\n  suppressAutoSize: true,\n  skipHeaderOnAutoSize: true,\n  autoSizeStrategy: true,\n  components: true,\n  stopEditingWhenCellsLoseFocus: true,\n  undoRedoCellEditing: true,\n  undoRedoCellEditingLimit: true,\n  excelStyles: true,\n  cacheQuickFilter: true,\n  customChartThemes: true,\n  chartThemeOverrides: true,\n  chartToolPanelsDef: true,\n  loadingCellRendererSelector: true,\n  localeText: true,\n  keepDetailRows: true,\n  keepDetailRowsCount: true,\n  detailRowHeight: true,\n  detailRowAutoHeight: true,\n  tabIndex: true,\n  valueCache: true,\n  valueCacheNeverExpires: true,\n  enableCellExpressions: true,\n  suppressTouch: true,\n  suppressBrowserResizeObserver: true,\n  suppressPropertyNamesCheck: true,\n  debug: true,\n  dragAndDropImageComponent: true,\n  loadingOverlayComponent: true,\n  suppressLoadingOverlay: true,\n  noRowsOverlayComponent: true,\n  paginationPageSizeSelector: true,\n  paginateChildRows: true,\n  pivotPanelShow: true,\n  pivotSuppressAutoColumn: true,\n  suppressExpandablePivotGroups: true,\n  aggFuncs: true,\n  allowShowChangeAfterFilter: true,\n  ensureDomOrder: true,\n  enableRtl: true,\n  suppressColumnVirtualisation: true,\n  suppressMaxRenderedRowRestriction: true,\n  suppressRowVirtualisation: true,\n  rowDragText: true,\n  groupLockGroupColumns: true,\n  suppressGroupRowsSticky: true,\n  rowModelType: true,\n  cacheOverflowSize: true,\n  infiniteInitialRowCount: true,\n  serverSideInitialRowCount: true,\n  maxBlocksInCache: true,\n  maxConcurrentDatasourceRequests: true,\n  blockLoadDebounceMillis: true,\n  serverSideOnlyRefreshFilteredGroups: true,\n  serverSidePivotResultFieldSeparator: true,\n  viewportRowModelPageSize: true,\n  viewportRowModelBufferSize: true,\n  debounceVerticalScrollbar: true,\n  suppressAnimationFrame: true,\n  suppressPreventDefaultOnMouseWheel: true,\n  scrollbarWidth: true,\n  icons: true,\n  suppressRowTransform: true,\n  gridId: true,\n  enableGroupEdit: true,\n  initialState: true,\n  processUnpinnedColumns: true,\n  createChartContainer: true,\n  getLocaleText: true,\n  getRowId: true,\n  reactiveCustomComponents: true,\n  columnMenu: true,\n  suppressSetFilterByDefault: true,\n  getDataPath: true,\n  enableCellSpan: true\n};\n\n// packages/ag-grid-community/src/validation/apiFunctionValidator.ts\nvar clientSide = \"clientSide\";\nvar serverSide = \"serverSide\";\nvar infinite = \"infinite\";\nvar functionRowModels = {\n  onGroupExpandedOrCollapsed: [clientSide],\n  refreshClientSideRowModel: [clientSide],\n  isRowDataEmpty: [clientSide],\n  forEachLeafNode: [clientSide],\n  forEachNodeAfterFilter: [clientSide],\n  forEachNodeAfterFilterAndSort: [clientSide],\n  resetRowHeights: [clientSide],\n  applyTransaction: [clientSide],\n  applyTransactionAsync: [clientSide],\n  flushAsyncTransactions: [clientSide],\n  getBestCostNodeSelection: [clientSide],\n  getServerSideSelectionState: [serverSide],\n  setServerSideSelectionState: [serverSide],\n  applyServerSideTransaction: [serverSide],\n  applyServerSideTransactionAsync: [serverSide],\n  applyServerSideRowData: [serverSide],\n  retryServerSideLoads: [serverSide],\n  flushServerSideAsyncTransactions: [serverSide],\n  refreshServerSide: [serverSide],\n  getServerSideGroupLevelState: [serverSide],\n  refreshInfiniteCache: [infinite],\n  purgeInfiniteCache: [infinite],\n  getInfiniteRowCount: [infinite],\n  isLastRowIndexKnown: [infinite, serverSide],\n  expandAll: [clientSide, serverSide],\n  collapseAll: [clientSide, serverSide],\n  onRowHeightChanged: [clientSide, serverSide],\n  setRowCount: [infinite, serverSide],\n  getCacheBlockState: [infinite, serverSide]\n};\nvar deprecatedFunctions = {\n  showLoadingOverlay: {\n    version: \"v32\",\n    message: '`showLoadingOverlay` is deprecated. Use the grid option \"loading\"=true instead or setGridOption(\"loading\", true).'\n  },\n  clearRangeSelection: {\n    version: \"v32.2\",\n    message: \"Use `clearCellSelection` instead.\"\n  },\n  getInfiniteRowCount: {\n    version: \"v32.2\",\n    old: \"getInfiniteRowCount()\",\n    new: \"getDisplayedRowCount()\"\n  },\n  selectAllFiltered: {\n    version: \"v33\",\n    old: \"selectAllFiltered()\",\n    new: 'selectAll(\"filtered\")'\n  },\n  deselectAllFiltered: {\n    version: \"v33\",\n    old: \"deselectAllFiltered()\",\n    new: 'deselectAll(\"filtered\")'\n  },\n  selectAllOnCurrentPage: {\n    version: \"v33\",\n    old: \"selectAllOnCurrentPage()\",\n    new: 'selectAll(\"currentPage\")'\n  },\n  deselectAllOnCurrentPage: {\n    version: \"v33\",\n    old: \"deselectAllOnCurrentPage()\",\n    new: 'deselectAll(\"currentPage\")'\n  }\n};\nfunction validateApiFunction(functionName, apiFunction, beans) {\n  const deprecation = deprecatedFunctions[functionName];\n  if (deprecation) {\n    const { version, new: replacement, old, message } = deprecation;\n    const apiMethod = old ?? functionName;\n    return (...args) => {\n      const replacementMessage = replacement ? `Please use ${replacement} instead. ` : \"\";\n      _warnOnce(`Since ${version} api.${apiMethod} is deprecated. ${replacementMessage}${message ?? \"\"}`);\n      return apiFunction.apply(apiFunction, args);\n    };\n  }\n  const rowModels = functionRowModels[functionName];\n  if (rowModels) {\n    return (...args) => {\n      const rowModel = beans.rowModel.getType();\n      if (!rowModels.includes(rowModel)) {\n        _errorOnce(\n          `api.${functionName} can only be called when gridOptions.rowModelType is ${rowModels.join(\" or \")}`\n        );\n        return void 0;\n      }\n      return apiFunction.apply(apiFunction, args);\n    };\n  }\n  return apiFunction;\n}\n\n// packages/ag-grid-community/src/validation/rules/iconValidations.ts\nvar ICON_VALUES = {\n  expanded: 1,\n  contracted: 1,\n  \"tree-closed\": 1,\n  \"tree-open\": 1,\n  \"tree-indeterminate\": 1,\n  pin: 1,\n  \"eye-slash\": 1,\n  arrows: 1,\n  left: 1,\n  right: 1,\n  group: 1,\n  aggregation: 1,\n  pivot: 1,\n  \"not-allowed\": 1,\n  chart: 1,\n  cross: 1,\n  cancel: 1,\n  tick: 1,\n  first: 1,\n  previous: 1,\n  next: 1,\n  last: 1,\n  linked: 1,\n  unlinked: 1,\n  \"color-picker\": 1,\n  loading: 1,\n  menu: 1,\n  \"menu-alt\": 1,\n  filter: 1,\n  columns: 1,\n  maximize: 1,\n  minimize: 1,\n  copy: 1,\n  cut: 1,\n  paste: 1,\n  grip: 1,\n  save: 1,\n  csv: 1,\n  excel: 1,\n  \"small-down\": 1,\n  \"small-left\": 1,\n  \"small-right\": 1,\n  \"small-up\": 1,\n  asc: 1,\n  desc: 1,\n  none: 1,\n  up: 1,\n  down: 1,\n  plus: 1,\n  minus: 1,\n  settings: 1,\n  \"checkbox-checked\": 1,\n  \"checkbox-indeterminate\": 1,\n  \"checkbox-unchecked\": 1,\n  \"radio-button-on\": 1,\n  \"radio-button-off\": 1,\n  eye: 1,\n  \"column-arrow\": 1,\n  \"un-pin\": 1,\n  \"pinned-top\": 1,\n  \"pinned-bottom\": 1\n};\nvar ICON_MODULES = {\n  chart: \"MenuCore\",\n  cancel: \"EnterpriseCore\",\n  first: \"Pagination\",\n  previous: \"Pagination\",\n  next: \"Pagination\",\n  last: \"Pagination\",\n  linked: \"IntegratedCharts\",\n  loadingMenuItems: \"MenuCore\",\n  unlinked: \"IntegratedCharts\",\n  menu: \"ColumnHeaderComp\",\n  legacyMenu: \"ColumnMenu\",\n  filter: \"ColumnFilter\",\n  filterActive: \"ColumnFilter\",\n  filterTab: \"ColumnMenu\",\n  filtersToolPanel: \"FiltersToolPanel\",\n  columns: [\"MenuCore\"],\n  columnsToolPanel: [\"ColumnsToolPanel\"],\n  maximize: \"EnterpriseCore\",\n  minimize: \"EnterpriseCore\",\n  save: \"MenuCore\",\n  columnGroupOpened: \"ColumnGroupHeaderComp\",\n  columnGroupClosed: \"ColumnGroupHeaderComp\",\n  accordionOpen: \"EnterpriseCore\",\n  accordionClosed: \"EnterpriseCore\",\n  accordionIndeterminate: \"EnterpriseCore\",\n  columnSelectClosed: [\"ColumnsToolPanel\", \"ColumnMenu\"],\n  columnSelectOpen: [\"ColumnsToolPanel\", \"ColumnMenu\"],\n  columnSelectIndeterminate: [\"ColumnsToolPanel\", \"ColumnMenu\"],\n  columnMovePin: \"SharedDragAndDrop\",\n  columnMoveHide: \"SharedDragAndDrop\",\n  columnMoveMove: \"SharedDragAndDrop\",\n  columnMoveLeft: \"SharedDragAndDrop\",\n  columnMoveRight: \"SharedDragAndDrop\",\n  columnMoveGroup: \"SharedDragAndDrop\",\n  columnMoveValue: \"SharedDragAndDrop\",\n  columnMovePivot: \"SharedDragAndDrop\",\n  dropNotAllowed: \"SharedDragAndDrop\",\n  ensureColumnVisible: [\"ColumnsToolPanel\", \"ColumnMenu\"],\n  groupContracted: \"GroupCellRenderer\",\n  groupExpanded: \"GroupCellRenderer\",\n  setFilterGroupClosed: \"SetFilter\",\n  setFilterGroupOpen: \"SetFilter\",\n  setFilterGroupIndeterminate: \"SetFilter\",\n  setFilterLoading: \"SetFilter\",\n  close: \"EnterpriseCore\",\n  check: \"MenuItem\",\n  colorPicker: \"CommunityCore\",\n  groupLoading: \"LoadingCellRenderer\",\n  menuAlt: \"ColumnHeaderComp\",\n  menuPin: \"MenuCore\",\n  menuValue: \"MenuCore\",\n  menuAddRowGroup: [\"MenuCore\", \"ColumnsToolPanel\"],\n  menuRemoveRowGroup: [\"MenuCore\", \"ColumnsToolPanel\"],\n  clipboardCopy: \"MenuCore\",\n  clipboardCut: \"MenuCore\",\n  clipboardPaste: \"MenuCore\",\n  pivotPanel: [\"ColumnsToolPanel\", \"RowGroupingPanel\"],\n  rowGroupPanel: [\"ColumnsToolPanel\", \"RowGroupingPanel\"],\n  valuePanel: \"ColumnsToolPanel\",\n  columnDrag: \"EnterpriseCore\",\n  rowDrag: [\"RowDrag\", \"DragAndDrop\"],\n  csvExport: \"MenuCore\",\n  excelExport: \"MenuCore\",\n  smallDown: \"CommunityCore\",\n  selectOpen: \"CommunityCore\",\n  richSelectOpen: \"RichSelect\",\n  richSelectRemove: \"RichSelect\",\n  smallLeft: \"CommunityCore\",\n  smallRight: \"CommunityCore\",\n  subMenuOpen: \"MenuItem\",\n  subMenuOpenRtl: \"MenuItem\",\n  panelDelimiter: \"RowGroupingPanel\",\n  panelDelimiterRtl: \"RowGroupingPanel\",\n  smallUp: \"CommunityCore\",\n  sortAscending: [\"MenuCore\", \"Sort\"],\n  sortDescending: [\"MenuCore\", \"Sort\"],\n  sortUnSort: [\"MenuCore\", \"Sort\"],\n  advancedFilterBuilder: \"AdvancedFilter\",\n  advancedFilterBuilderDrag: \"AdvancedFilter\",\n  advancedFilterBuilderInvalid: \"AdvancedFilter\",\n  advancedFilterBuilderMoveUp: \"AdvancedFilter\",\n  advancedFilterBuilderMoveDown: \"AdvancedFilter\",\n  advancedFilterBuilderAdd: \"AdvancedFilter\",\n  advancedFilterBuilderRemove: \"AdvancedFilter\",\n  advancedFilterBuilderSelectOpen: \"AdvancedFilter\",\n  chartsMenu: \"IntegratedCharts\",\n  chartsMenuEdit: \"IntegratedCharts\",\n  chartsMenuAdvancedSettings: \"IntegratedCharts\",\n  chartsMenuAdd: \"IntegratedCharts\",\n  chartsColorPicker: \"IntegratedCharts\",\n  chartsThemePrevious: \"IntegratedCharts\",\n  chartsThemeNext: \"IntegratedCharts\",\n  chartsDownload: \"IntegratedCharts\",\n  checkboxChecked: \"CommunityCore\",\n  checkboxIndeterminate: \"CommunityCore\",\n  checkboxUnchecked: \"CommunityCore\",\n  radioButtonOn: \"CommunityCore\",\n  radioButtonOff: \"CommunityCore\",\n  rowPin: \"PinnedRow\",\n  rowUnpin: \"PinnedRow\",\n  rowPinBottom: \"PinnedRow\",\n  rowPinTop: \"PinnedRow\"\n};\nvar DEPRECATED_ICONS_V33 = /* @__PURE__ */ new Set([\n  \"colorPicker\",\n  \"smallUp\",\n  \"checkboxChecked\",\n  \"checkboxIndeterminate\",\n  \"checkboxUnchecked\",\n  \"radioButtonOn\",\n  \"radioButtonOff\",\n  \"smallDown\",\n  \"smallLeft\",\n  \"smallRight\"\n]);\n\n// packages/ag-grid-community/src/validation/validationService.ts\nvar ValidationService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"validation\";\n  }\n  wireBeans(beans) {\n    this.gridOptions = beans.gridOptions;\n    provideValidationServiceLogger(this);\n  }\n  warnOnInitialPropertyUpdate(source, key) {\n    if (source === \"api\" && INITIAL_GRID_OPTION_KEYS[key]) {\n      _warn(22, { key });\n    }\n  }\n  processGridOptions(options) {\n    this.processOptions(options, GRID_OPTIONS_VALIDATORS());\n  }\n  validateApiFunction(functionName, apiFunction) {\n    return validateApiFunction(functionName, apiFunction, this.beans);\n  }\n  missingUserComponent(propertyName, componentName, agGridDefaults, jsComps) {\n    const moduleForComponent = USER_COMP_MODULES[componentName];\n    if (moduleForComponent) {\n      this.gos.assertModuleRegistered(\n        moduleForComponent,\n        `AG Grid '${propertyName}' component: ${componentName}`\n      );\n    } else {\n      _warn(101, {\n        propertyName,\n        componentName,\n        agGridDefaults,\n        jsComps\n      });\n    }\n  }\n  checkRowEvents(eventType) {\n    if (DEPRECATED_ROW_NODE_EVENTS.has(eventType)) {\n      _warn(10, { eventType });\n    }\n  }\n  validateIcon(iconName) {\n    if (DEPRECATED_ICONS_V33.has(iconName)) {\n      _warn(43, { iconName });\n    }\n    if (ICON_VALUES[iconName]) {\n      return;\n    }\n    const moduleName = ICON_MODULES[iconName];\n    if (moduleName) {\n      _error(200, {\n        reasonOrId: `icon '${iconName}'`,\n        moduleName,\n        gridScoped: _areModulesGridScoped(),\n        gridId: this.beans.context.getGridId(),\n        rowModelType: this.gos.get(\"rowModelType\"),\n        additionalText: \"Alternatively, use the CSS icon name directly.\"\n      });\n      return;\n    }\n    _warn(134, { iconName });\n  }\n  isProvidedUserComp(compName) {\n    return !!USER_COMP_MODULES[compName];\n  }\n  /** Should only be called via the GridOptionsService */\n  validateColDef(colDef) {\n    this.processOptions(colDef, COL_DEF_VALIDATORS());\n  }\n  processOptions(options, validator) {\n    const { validations, deprecations, allProperties, propertyExceptions, objectName, docsUrl } = validator;\n    if (allProperties && this.gridOptions.suppressPropertyNamesCheck !== true) {\n      this.checkProperties(\n        options,\n        [...propertyExceptions ?? [], ...Object.keys(deprecations)],\n        allProperties,\n        objectName,\n        docsUrl\n      );\n    }\n    const warnings = /* @__PURE__ */ new Set();\n    const optionKeys = Object.keys(options);\n    optionKeys.forEach((key) => {\n      const deprecation = deprecations[key];\n      if (deprecation) {\n        const { message, version } = deprecation;\n        warnings.add(`As of v${version}, ${String(key)} is deprecated. ${message ?? \"\"}`);\n      }\n      const value = options[key];\n      if (value == null || value === false) {\n        return;\n      }\n      const rules = validations[key];\n      if (!rules) {\n        return;\n      }\n      const { dependencies, validate, supportedRowModels, expectedType } = rules;\n      if (expectedType) {\n        const actualType = typeof value;\n        if (actualType !== expectedType) {\n          warnings.add(\n            `${String(key)} should be of type '${expectedType}' but received '${actualType}' (${value}).`\n          );\n          return;\n        }\n      }\n      if (supportedRowModels) {\n        const rowModel = this.gridOptions.rowModelType ?? \"clientSide\";\n        if (!supportedRowModels.includes(rowModel)) {\n          warnings.add(\n            `${String(key)} is not supported with the '${rowModel}' row model. It is only valid with: ${supportedRowModels.join(\", \")}.`\n          );\n          return;\n        }\n      }\n      if (dependencies) {\n        const warning = this.checkForRequiredDependencies(key, dependencies, options);\n        if (warning) {\n          warnings.add(warning);\n          return;\n        }\n      }\n      if (validate) {\n        const warning = validate(options, this.gridOptions, this.beans);\n        if (warning) {\n          warnings.add(warning);\n          return;\n        }\n      }\n    });\n    if (warnings.size > 0) {\n      warnings.forEach((warning) => {\n        _warnOnce(warning);\n      });\n    }\n  }\n  checkForRequiredDependencies(key, validator, options) {\n    const optionEntries = Object.entries(validator);\n    const failedOptions = optionEntries.filter(([key2, value]) => {\n      const gridOptionValue = options[key2];\n      return !value.required.includes(gridOptionValue);\n    });\n    if (failedOptions.length === 0) {\n      return null;\n    }\n    return failedOptions.map(\n      ([failedKey, possibleOptions]) => `'${String(key)}' requires '${failedKey}' to be one of [${possibleOptions.required.map((o) => {\n        if (o === null) {\n          return \"null\";\n        } else if (o === void 0) {\n          return \"undefined\";\n        }\n        return o;\n      }).join(\", \")}]. ${possibleOptions.reason ?? \"\"}`\n    ).join(\"\\n           \");\n  }\n  checkProperties(object, exceptions, validProperties, containerName, docsUrl) {\n    const VUE_FRAMEWORK_PROPS = [\"__ob__\", \"__v_skip\", \"__metadata__\"];\n    const invalidProperties = _fuzzyCheckStrings(\n      Object.getOwnPropertyNames(object),\n      [...VUE_FRAMEWORK_PROPS, ...exceptions, ...validProperties],\n      validProperties\n    );\n    const invalidPropertiesKeys = Object.keys(invalidProperties);\n    for (const key of invalidPropertiesKeys) {\n      const value = invalidProperties[key];\n      let message = `invalid ${containerName} property '${key}' did you mean any of these: ${value.slice(0, 8).join(\", \")}.`;\n      if (validProperties.includes(\"context\")) {\n        message += `\nIf you are trying to annotate ${containerName} with application data, use the '${containerName}.context' property instead.`;\n      }\n      _warnOnce(message);\n    }\n    if (invalidPropertiesKeys.length > 0 && docsUrl) {\n      const url = this.beans.frameworkOverrides.getDocLink(docsUrl);\n      _warnOnce(`to see all the valid ${containerName} properties please check: ${url}`);\n    }\n  }\n  getConsoleMessage(id, args) {\n    return getError(id, args);\n  }\n};\nfunction _fuzzyCheckStrings(inputValues, validValues, allSuggestions) {\n  const fuzzyMatches = {};\n  const invalidInputs = inputValues.filter(\n    (inputValue) => !validValues.some((validValue) => validValue === inputValue)\n  );\n  if (invalidInputs.length > 0) {\n    invalidInputs.forEach(\n      (invalidInput) => fuzzyMatches[invalidInput] = _fuzzySuggestions({ inputValue: invalidInput, allSuggestions }).values\n    );\n  }\n  return fuzzyMatches;\n}\nvar DEPRECATED_ROW_NODE_EVENTS = /* @__PURE__ */ new Set([\n  \"firstChildChanged\",\n  \"lastChildChanged\",\n  \"childIndexChanged\"\n]);\n\n// packages/ag-grid-community/src/validation/validationModule.ts\nvar ValidationModule = {\n  moduleName: \"Validation\",\n  version: VERSION,\n  beans: [ValidationService]\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/filterStage.ts\nfunction updateRowNodeAfterFilter(rowNode) {\n  if (rowNode.sibling) {\n    rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;\n  }\n}\nvar FilterStage = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"filterStage\";\n    this.refreshProps = /* @__PURE__ */ new Set([\"excludeChildrenWhenTreeDataFiltering\"]);\n    this.step = \"filter\";\n  }\n  wireBeans(beans) {\n    this.filterManager = beans.filterManager;\n  }\n  execute(params) {\n    const { changedPath } = params;\n    this.filter(changedPath);\n  }\n  filter(changedPath) {\n    const filterActive = !!this.filterManager?.isChildFilterPresent();\n    this.filterNodes(filterActive, changedPath);\n  }\n  filterNodes(filterActive, changedPath) {\n    const filterCallback = (rowNode, includeChildNodes) => {\n      if (rowNode.hasChildren()) {\n        if (filterActive && !includeChildNodes) {\n          rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter((childNode) => {\n            const passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n            const passBecauseDataPasses = childNode.data && this.filterManager.doesRowPassFilter({ rowNode: childNode });\n            return passBecauseChildren || passBecauseDataPasses;\n          });\n        } else {\n          rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n        }\n      } else {\n        rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n      }\n      updateRowNodeAfterFilter(rowNode);\n    };\n    if (this.doingTreeDataFiltering()) {\n      const treeDataDepthFirstFilter = (rowNode, alreadyFoundInParent) => {\n        if (rowNode.childrenAfterGroup) {\n          for (let i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n            const childNode = rowNode.childrenAfterGroup[i];\n            const foundInParent = alreadyFoundInParent || this.filterManager.doesRowPassFilter({ rowNode: childNode });\n            if (childNode.childrenAfterGroup) {\n              treeDataDepthFirstFilter(rowNode.childrenAfterGroup[i], foundInParent);\n            } else {\n              filterCallback(childNode, foundInParent);\n            }\n          }\n        }\n        filterCallback(rowNode, alreadyFoundInParent);\n      };\n      const treeDataFilterCallback = (rowNode) => treeDataDepthFirstFilter(rowNode, false);\n      changedPath.executeFromRootNode(treeDataFilterCallback);\n    } else {\n      const defaultFilterCallback = (rowNode) => filterCallback(rowNode, false);\n      changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n    }\n  }\n  doingTreeDataFiltering() {\n    return this.gos.get(\"treeData\") && !this.gos.get(\"excludeChildrenWhenTreeDataFiltering\");\n  }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/floatingFilter/headerFilterCellCtrl.ts\nvar HeaderFilterCellCtrl = class extends AbstractHeaderCellCtrl {\n  constructor() {\n    super(...arguments);\n    this.iconCreated = false;\n  }\n  setComp(comp, eGui, eButtonShowMainFilter, eFloatingFilterBody, compBeanInput) {\n    this.comp = comp;\n    const compBean = setupCompBean(this, this.beans.context, compBeanInput);\n    this.eButtonShowMainFilter = eButtonShowMainFilter;\n    this.eFloatingFilterBody = eFloatingFilterBody;\n    this.setGui(eGui, compBean);\n    this.setupActive();\n    this.refreshHeaderStyles();\n    this.setupWidth(compBean);\n    this.setupLeft(compBean);\n    this.setupHover(compBean);\n    this.setupFocus(compBean);\n    this.setupAria();\n    this.setupFilterButton();\n    this.setupUserComp();\n    this.setupSyncWithFilter(compBean);\n    this.setupUi();\n    compBean.addManagedElementListeners(this.eButtonShowMainFilter, { click: this.showParentFilter.bind(this) });\n    this.setupFilterChangedListener(compBean);\n    compBean.addManagedListeners(this.column, { colDefChanged: () => this.onColDefChanged(compBean) });\n    compBean.addDestroyFunc(() => {\n      this.eButtonShowMainFilter = null;\n      this.eFloatingFilterBody = null;\n      this.userCompDetails = null;\n      this.clearComponent();\n    });\n  }\n  // empty abstract method\n  resizeHeader() {\n  }\n  moveHeader() {\n  }\n  getHeaderClassParams() {\n    const { column, beans } = this;\n    const colDef = column.colDef;\n    return _addGridCommonParams(beans.gos, {\n      colDef,\n      column,\n      floatingFilter: true\n    });\n  }\n  setupActive() {\n    const colDef = this.column.getColDef();\n    const filterExists = !!colDef.filter;\n    const floatingFilterExists = !!colDef.floatingFilter;\n    this.active = filterExists && floatingFilterExists;\n  }\n  setupUi() {\n    this.comp.setButtonWrapperDisplayed(!this.suppressFilterButton && this.active);\n    this.comp.addOrRemoveBodyCssClass(\"ag-floating-filter-full-body\", this.suppressFilterButton);\n    this.comp.addOrRemoveBodyCssClass(\"ag-floating-filter-body\", !this.suppressFilterButton);\n    if (!this.active || this.iconCreated) {\n      return;\n    }\n    const eMenuIcon = _createIconNoSpan(\"filter\", this.beans, this.column);\n    if (eMenuIcon) {\n      this.iconCreated = true;\n      this.eButtonShowMainFilter.appendChild(eMenuIcon);\n    }\n  }\n  setupFocus(compBean) {\n    compBean.createManagedBean(\n      new ManagedFocusFeature(this.eGui, {\n        shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n        onTabKeyDown: this.onTabKeyDown.bind(this),\n        handleKeyDown: this.handleKeyDown.bind(this),\n        onFocusIn: this.onFocusIn.bind(this)\n      })\n    );\n  }\n  setupAria() {\n    const localeTextFunc = this.getLocaleTextFunc();\n    _setAriaLabel(this.eButtonShowMainFilter, localeTextFunc(\"ariaFilterMenuOpen\", \"Open Filter Menu\"));\n  }\n  onTabKeyDown(e) {\n    const { beans } = this;\n    const activeEl = _getActiveDomElement(beans);\n    const wrapperHasFocus = activeEl === this.eGui;\n    if (wrapperHasFocus) {\n      return;\n    }\n    const nextFocusableEl = _findNextFocusableElement(beans, this.eGui, null, e.shiftKey);\n    if (nextFocusableEl) {\n      beans.headerNavigation?.scrollToColumn(this.column);\n      e.preventDefault();\n      nextFocusableEl.focus();\n      return;\n    }\n    const nextFocusableColumn = this.findNextColumnWithFloatingFilter(e.shiftKey);\n    if (!nextFocusableColumn) {\n      return;\n    }\n    if (beans.focusSvc.focusHeaderPosition({\n      headerPosition: {\n        headerRowIndex: this.rowCtrl.rowIndex,\n        column: nextFocusableColumn\n      },\n      event: e\n    })) {\n      e.preventDefault();\n    }\n  }\n  findNextColumnWithFloatingFilter(backwards) {\n    const presentedColsService = this.beans.visibleCols;\n    let nextCol = this.column;\n    do {\n      nextCol = backwards ? presentedColsService.getColBefore(nextCol) : presentedColsService.getColAfter(nextCol);\n      if (!nextCol) {\n        break;\n      }\n    } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);\n    return nextCol;\n  }\n  handleKeyDown(e) {\n    super.handleKeyDown(e);\n    const wrapperHasFocus = this.getWrapperHasFocus();\n    switch (e.key) {\n      case KeyCode.UP:\n      case KeyCode.DOWN:\n      case KeyCode.LEFT:\n      case KeyCode.RIGHT:\n        if (wrapperHasFocus) {\n          return;\n        }\n        _stopPropagationForAgGrid(e);\n      case KeyCode.ENTER:\n        if (wrapperHasFocus) {\n          if (_focusInto(this.eGui)) {\n            e.preventDefault();\n          }\n        }\n        break;\n      case KeyCode.ESCAPE:\n        if (!wrapperHasFocus) {\n          this.eGui.focus();\n        }\n    }\n  }\n  onFocusIn(e) {\n    const isRelatedWithin = this.eGui.contains(e.relatedTarget);\n    if (isRelatedWithin) {\n      return;\n    }\n    const notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains(\"ag-floating-filter\");\n    const fromWithinHeader = !!e.relatedTarget && _isElementChildOfClass(e.relatedTarget, \"ag-floating-filter\");\n    if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {\n      const lastFocusEvent = this.lastFocusEvent;\n      const fromTab = !!(lastFocusEvent && lastFocusEvent.key === KeyCode.TAB);\n      if (lastFocusEvent && fromTab) {\n        const shouldFocusLast = lastFocusEvent.shiftKey;\n        _focusInto(this.eGui, shouldFocusLast);\n      }\n    }\n    this.focusThis();\n  }\n  setupHover(compBean) {\n    this.beans.colHover?.addHeaderFilterColumnHoverListener(compBean, this.comp, this.column, this.eGui);\n  }\n  setupLeft(compBean) {\n    const setLeftFeature = new SetLeftFeature(this.column, this.eGui, this.beans);\n    compBean.createManagedBean(setLeftFeature);\n  }\n  setupFilterButton() {\n    this.suppressFilterButton = !this.beans.menuSvc?.isFloatingFilterButtonEnabled(this.column);\n    this.highlightFilterButtonWhenActive = !_isLegacyMenuEnabled(this.gos);\n  }\n  setupUserComp() {\n    if (!this.active) {\n      return;\n    }\n    const compDetails = this.beans.filterManager?.getFloatingFilterCompDetails(\n      this.column,\n      () => this.showParentFilter()\n    );\n    if (compDetails) {\n      this.setCompDetails(compDetails);\n    }\n  }\n  setCompDetails(compDetails) {\n    this.userCompDetails = compDetails;\n    this.comp.setCompDetails(compDetails);\n  }\n  showParentFilter() {\n    const eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;\n    this.beans.menuSvc?.showFilterMenu({\n      column: this.column,\n      buttonElement: eventSource,\n      containerType: \"floatingFilter\",\n      positionBy: \"button\"\n    });\n  }\n  setupSyncWithFilter(compBean) {\n    if (!this.active) {\n      return;\n    }\n    const { filterManager } = this.beans;\n    const syncWithFilter = (event) => {\n      if (event?.source === \"filterDestroyed\" && !this.isAlive()) {\n        return;\n      }\n      const compPromise = this.comp.getFloatingFilterComp();\n      if (!compPromise) {\n        return;\n      }\n      compPromise.then((comp) => {\n        if (comp) {\n          const parentModel = filterManager?.getCurrentFloatingFilterParentModel(this.column);\n          const filterChangedEvent = event ? {\n            // event can have additional params like `afterDataChange` which need to be passed through\n            ...event,\n            columns: event.columns ?? [],\n            source: event.source === \"api\" ? \"api\" : \"columnFilter\"\n          } : null;\n          comp.onParentModelChanged(parentModel, filterChangedEvent);\n        }\n      });\n    };\n    [this.destroySyncListener] = compBean.addManagedListeners(this.column, { filterChanged: syncWithFilter });\n    if (filterManager?.isFilterActive(this.column)) {\n      syncWithFilter(null);\n    }\n  }\n  setupWidth(compBean) {\n    const listener = () => {\n      const width = `${this.column.getActualWidth()}px`;\n      this.comp.setWidth(width);\n    };\n    compBean.addManagedListeners(this.column, { widthChanged: listener });\n    listener();\n  }\n  setupFilterChangedListener(compBean) {\n    if (this.active) {\n      [this.destroyFilterChangedListener] = compBean.addManagedListeners(this.column, {\n        filterChanged: this.updateFilterButton.bind(this)\n      });\n      this.updateFilterButton();\n    }\n  }\n  updateFilterButton() {\n    if (!this.suppressFilterButton && this.comp) {\n      const isFilterAllowed = !!this.beans.filterManager?.isFilterAllowed(this.column);\n      this.comp.setButtonWrapperDisplayed(isFilterAllowed);\n      if (this.highlightFilterButtonWhenActive && isFilterAllowed) {\n        this.eButtonShowMainFilter.classList.toggle(\"ag-filter-active\", this.column.isFilterActive());\n      }\n    }\n  }\n  onColDefChanged(compBean) {\n    const wasActive = this.active;\n    this.setupActive();\n    const becomeActive = !wasActive && this.active;\n    if (wasActive && !this.active) {\n      this.destroySyncListener();\n      this.destroyFilterChangedListener();\n    }\n    const newCompDetails = this.active ? this.beans.filterManager?.getFloatingFilterCompDetails(this.column, () => this.showParentFilter()) : null;\n    const compPromise = this.comp.getFloatingFilterComp();\n    if (!compPromise || !newCompDetails) {\n      this.updateCompDetails(compBean, newCompDetails, becomeActive);\n    } else {\n      compPromise.then((compInstance) => {\n        if (!compInstance || this.beans.filterManager?.areFilterCompsDifferent(this.userCompDetails ?? null, newCompDetails)) {\n          this.updateCompDetails(compBean, newCompDetails, becomeActive);\n        } else {\n          this.updateFloatingFilterParams(newCompDetails);\n        }\n      });\n    }\n  }\n  updateCompDetails(compBean, compDetails, becomeActive) {\n    if (!this.isAlive()) {\n      return;\n    }\n    this.setCompDetails(compDetails);\n    this.setupFilterButton();\n    this.setupUi();\n    if (becomeActive) {\n      this.setupSyncWithFilter(compBean);\n      this.setupFilterChangedListener(compBean);\n    }\n  }\n  updateFloatingFilterParams(userCompDetails) {\n    if (!userCompDetails) {\n      return;\n    }\n    const params = userCompDetails.params;\n    this.comp.getFloatingFilterComp()?.then((floatingFilter) => {\n      if (floatingFilter?.refresh && typeof floatingFilter.refresh === \"function\") {\n        floatingFilter.refresh(params);\n      }\n    });\n  }\n  addResizeAndMoveKeyboardListeners() {\n  }\n  destroy() {\n    super.destroy();\n    this.destroySyncListener = null;\n    this.destroyFilterChangedListener = null;\n  }\n};\n\n// packages/ag-grid-community/src/misc/menu/menuApi.ts\nfunction showColumnMenu(beans, colKey) {\n  const column = beans.colModel.getCol(colKey);\n  if (!column) {\n    _error(12, { colKey });\n    return;\n  }\n  beans.menuSvc?.showColumnMenu({\n    column,\n    positionBy: \"auto\"\n  });\n}\nfunction hidePopupMenu(beans) {\n  beans.menuSvc?.hidePopupMenu();\n}\n\n// packages/ag-grid-community/src/misc/menu/sharedMenuModule.ts\nvar SharedMenuModule = {\n  moduleName: \"SharedMenu\",\n  version: VERSION,\n  beans: [MenuService],\n  apiFunctions: {\n    showColumnMenu,\n    hidePopupMenu\n  }\n};\n\n// packages/ag-grid-community/src/widgets/popupService.ts\nvar instanceIdSeq = 0;\nvar WAIT_FOR_POPUP_CONTENT_RESIZE = 200;\nvar PopupService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"popupSvc\";\n    this.popupList = [];\n  }\n  postConstruct() {\n    this.beans.ctrlsSvc.whenReady(this, (p) => {\n      this.gridCtrl = p.gridCtrl;\n    });\n    this.addManagedEventListeners({ gridStylesChanged: this.handleThemeChange.bind(this) });\n  }\n  getPopupParent() {\n    const ePopupParent = this.gos.get(\"popupParent\");\n    if (ePopupParent) {\n      return ePopupParent;\n    }\n    return this.gridCtrl.getGui();\n  }\n  positionPopupForMenu(params) {\n    const { eventSource, ePopup, column, node, event } = params;\n    const sourceRect = eventSource.getBoundingClientRect();\n    const parentRect = this.getParentRect();\n    this.setAlignedTo(eventSource, ePopup);\n    let minWidthSet = false;\n    const updatePosition = () => {\n      const y = this.keepXYWithinBounds(ePopup, sourceRect.top - parentRect.top, 0 /* vertical */);\n      const minWidth = ePopup.clientWidth > 0 ? ePopup.clientWidth : 200;\n      if (!minWidthSet) {\n        ePopup.style.minWidth = `${minWidth}px`;\n        minWidthSet = true;\n      }\n      const widthOfParent = parentRect.right - parentRect.left;\n      const maxX = widthOfParent - minWidth;\n      let x;\n      if (this.gos.get(\"enableRtl\")) {\n        x = xLeftPosition();\n        if (x < 0) {\n          x = xRightPosition();\n          this.setAlignedStyles(ePopup, \"left\");\n        }\n        if (x > maxX) {\n          x = 0;\n          this.setAlignedStyles(ePopup, \"right\");\n        }\n      } else {\n        x = xRightPosition();\n        if (x > maxX) {\n          x = xLeftPosition();\n          this.setAlignedStyles(ePopup, \"right\");\n        }\n        if (x < 0) {\n          x = 0;\n          this.setAlignedStyles(ePopup, \"left\");\n        }\n      }\n      return { x, y };\n      function xRightPosition() {\n        return sourceRect.right - parentRect.left - 2;\n      }\n      function xLeftPosition() {\n        return sourceRect.left - parentRect.left - minWidth;\n      }\n    };\n    this.positionPopup({\n      ePopup,\n      keepWithinBounds: true,\n      updatePosition,\n      postProcessCallback: () => this.callPostProcessPopup(\n        \"subMenu\",\n        ePopup,\n        eventSource,\n        event instanceof MouseEvent ? event : void 0,\n        column,\n        node\n      )\n    });\n  }\n  positionPopupUnderMouseEvent(params) {\n    const { ePopup, nudgeX, nudgeY, skipObserver } = params;\n    this.positionPopup({\n      ePopup,\n      nudgeX,\n      nudgeY,\n      keepWithinBounds: true,\n      skipObserver,\n      updatePosition: () => this.calculatePointerAlign(params.mouseEvent),\n      postProcessCallback: () => this.callPostProcessPopup(\n        params.type,\n        params.ePopup,\n        null,\n        params.mouseEvent,\n        params.column,\n        params.rowNode\n      )\n    });\n  }\n  calculatePointerAlign(e) {\n    const parentRect = this.getParentRect();\n    return {\n      x: e.clientX - parentRect.left,\n      y: e.clientY - parentRect.top\n    };\n  }\n  positionPopupByComponent(params) {\n    const {\n      ePopup,\n      nudgeX,\n      nudgeY,\n      keepWithinBounds,\n      eventSource,\n      alignSide = \"left\",\n      position = \"over\",\n      column,\n      rowNode,\n      type\n    } = params;\n    const sourceRect = eventSource.getBoundingClientRect();\n    const parentRect = this.getParentRect();\n    this.setAlignedTo(eventSource, ePopup);\n    const updatePosition = () => {\n      let x = sourceRect.left - parentRect.left;\n      if (alignSide === \"right\") {\n        x -= ePopup.offsetWidth - sourceRect.width;\n      }\n      let y;\n      if (position === \"over\") {\n        y = sourceRect.top - parentRect.top;\n        this.setAlignedStyles(ePopup, \"over\");\n      } else {\n        this.setAlignedStyles(ePopup, \"under\");\n        const alignSide2 = this.shouldRenderUnderOrAbove(ePopup, sourceRect, parentRect, params.nudgeY || 0);\n        if (alignSide2 === \"under\") {\n          y = sourceRect.top - parentRect.top + sourceRect.height;\n        } else {\n          y = sourceRect.top - ePopup.offsetHeight - (nudgeY || 0) * 2 - parentRect.top;\n        }\n      }\n      return { x, y };\n    };\n    this.positionPopup({\n      ePopup,\n      nudgeX,\n      nudgeY,\n      keepWithinBounds,\n      updatePosition,\n      postProcessCallback: () => this.callPostProcessPopup(type, ePopup, eventSource, null, column, rowNode)\n    });\n  }\n  shouldRenderUnderOrAbove(ePopup, targetCompRect, parentRect, nudgeY) {\n    const spaceAvailableUnder = parentRect.bottom - targetCompRect.bottom;\n    const spaceAvailableAbove = targetCompRect.top - parentRect.top;\n    const spaceRequired = ePopup.offsetHeight + nudgeY;\n    if (spaceAvailableUnder > spaceRequired) {\n      return \"under\";\n    }\n    if (spaceAvailableAbove > spaceRequired || spaceAvailableAbove > spaceAvailableUnder) {\n      return \"above\";\n    }\n    return \"under\";\n  }\n  setAlignedStyles(ePopup, positioned) {\n    const popupIdx = this.getPopupIndex(ePopup);\n    if (popupIdx === -1) {\n      return;\n    }\n    const popup = this.popupList[popupIdx];\n    const { alignedToElement } = popup;\n    if (!alignedToElement) {\n      return;\n    }\n    const positions = [\"right\", \"left\", \"over\", \"above\", \"under\"];\n    positions.forEach((position) => {\n      alignedToElement.classList.remove(`ag-has-popup-positioned-${position}`);\n      ePopup.classList.remove(`ag-popup-positioned-${position}`);\n    });\n    if (!positioned) {\n      return;\n    }\n    alignedToElement.classList.add(`ag-has-popup-positioned-${positioned}`);\n    ePopup.classList.add(`ag-popup-positioned-${positioned}`);\n  }\n  setAlignedTo(eventSource, ePopup) {\n    const popupIdx = this.getPopupIndex(ePopup);\n    if (popupIdx !== -1) {\n      const popup = this.popupList[popupIdx];\n      popup.alignedToElement = eventSource;\n    }\n  }\n  callPostProcessPopup(type, ePopup, eventSource, mouseEvent, column, rowNode) {\n    const callback = this.gos.getCallback(\"postProcessPopup\");\n    if (callback) {\n      const params = {\n        column,\n        rowNode,\n        ePopup,\n        type,\n        eventSource,\n        mouseEvent\n      };\n      callback(params);\n    }\n  }\n  positionPopup(params) {\n    const { ePopup, keepWithinBounds, nudgeX, nudgeY, skipObserver, updatePosition } = params;\n    const lastSize = { width: 0, height: 0 };\n    const updatePopupPosition = (fromResizeObserver = false) => {\n      let { x, y } = updatePosition();\n      if (fromResizeObserver && ePopup.clientWidth === lastSize.width && ePopup.clientHeight === lastSize.height) {\n        return;\n      }\n      lastSize.width = ePopup.clientWidth;\n      lastSize.height = ePopup.clientHeight;\n      if (nudgeX) {\n        x += nudgeX;\n      }\n      if (nudgeY) {\n        y += nudgeY;\n      }\n      if (keepWithinBounds) {\n        x = this.keepXYWithinBounds(ePopup, x, 1 /* horizontal */);\n        y = this.keepXYWithinBounds(ePopup, y, 0 /* vertical */);\n      }\n      ePopup.style.left = `${x}px`;\n      ePopup.style.top = `${y}px`;\n      if (params.postProcessCallback) {\n        params.postProcessCallback();\n      }\n    };\n    updatePopupPosition();\n    if (!skipObserver) {\n      const resizeObserverDestroyFunc = _observeResize(this.beans, ePopup, () => updatePopupPosition(true));\n      setTimeout(() => resizeObserverDestroyFunc(), WAIT_FOR_POPUP_CONTENT_RESIZE);\n    }\n  }\n  getActivePopups() {\n    return this.popupList.map((popup) => popup.element);\n  }\n  getParentRect() {\n    const eDocument = _getDocument(this.beans);\n    let popupParent = this.getPopupParent();\n    if (popupParent === eDocument.body) {\n      popupParent = eDocument.documentElement;\n    } else if (getComputedStyle(popupParent).position === \"static\") {\n      popupParent = popupParent.offsetParent;\n    }\n    return _getElementRectWithOffset(popupParent);\n  }\n  keepXYWithinBounds(ePopup, position, direction) {\n    const isVertical = direction === 0 /* vertical */;\n    const sizeProperty = isVertical ? \"clientHeight\" : \"clientWidth\";\n    const anchorProperty = isVertical ? \"top\" : \"left\";\n    const offsetProperty = isVertical ? \"height\" : \"width\";\n    const scrollPositionProperty = isVertical ? \"scrollTop\" : \"scrollLeft\";\n    const eDocument = _getDocument(this.beans);\n    const docElement = eDocument.documentElement;\n    const popupParent = this.getPopupParent();\n    const popupRect = ePopup.getBoundingClientRect();\n    const parentRect = popupParent.getBoundingClientRect();\n    const documentRect = eDocument.documentElement.getBoundingClientRect();\n    const isBody = popupParent === eDocument.body;\n    const offsetSize = Math.ceil(popupRect[offsetProperty]);\n    const getSize2 = isVertical ? _getAbsoluteHeight : _getAbsoluteWidth;\n    let sizeOfParent = isBody ? getSize2(docElement) + docElement[scrollPositionProperty] : popupParent[sizeProperty];\n    if (isBody) {\n      sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);\n    }\n    const max = sizeOfParent - offsetSize;\n    return Math.min(Math.max(position, 0), Math.abs(max));\n  }\n  addPopup(params) {\n    const eDocument = _getDocument(this.beans);\n    const { eChild, ariaLabel, alwaysOnTop, positionCallback, anchorToElement } = params;\n    if (!eDocument) {\n      _warn(122);\n      return { hideFunc: () => {\n      } };\n    }\n    const pos = this.getPopupIndex(eChild);\n    if (pos !== -1) {\n      const popup = this.popupList[pos];\n      return { hideFunc: popup.hideFunc };\n    }\n    this.initialisePopupPosition(eChild);\n    const wrapperEl = this.createPopupWrapper(eChild, ariaLabel, !!alwaysOnTop);\n    const removeListeners = this.addEventListenersToPopup({ ...params, wrapperEl });\n    if (positionCallback) {\n      positionCallback();\n    }\n    this.addPopupToPopupList(eChild, wrapperEl, removeListeners, anchorToElement);\n    return {\n      hideFunc: removeListeners\n    };\n  }\n  initialisePopupPosition(element) {\n    const ePopupParent = this.getPopupParent();\n    const ePopupParentRect = ePopupParent.getBoundingClientRect();\n    if (!_exists(element.style.top)) {\n      element.style.top = `${ePopupParentRect.top * -1}px`;\n    }\n    if (!_exists(element.style.left)) {\n      element.style.left = `${ePopupParentRect.left * -1}px`;\n    }\n  }\n  createPopupWrapper(element, ariaLabel, alwaysOnTop) {\n    const ePopupParent = this.getPopupParent();\n    const { environment, gos } = this.beans;\n    const eWrapper = _createElement({ tag: \"div\" });\n    environment.applyThemeClasses(eWrapper);\n    eWrapper.classList.add(\"ag-popup\");\n    element.classList.add(gos.get(\"enableRtl\") ? \"ag-rtl\" : \"ag-ltr\", \"ag-popup-child\");\n    if (!element.hasAttribute(\"role\")) {\n      _setAriaRole(element, \"dialog\");\n    }\n    _setAriaLabel(element, ariaLabel);\n    eWrapper.appendChild(element);\n    ePopupParent.appendChild(eWrapper);\n    if (alwaysOnTop) {\n      this.setAlwaysOnTop(element, true);\n    } else {\n      this.bringPopupToFront(element);\n    }\n    return eWrapper;\n  }\n  handleThemeChange(e) {\n    if (e.themeChanged) {\n      const environment = this.beans.environment;\n      for (const popup of this.popupList) {\n        environment.applyThemeClasses(popup.wrapper);\n      }\n    }\n  }\n  addEventListenersToPopup(params) {\n    const beans = this.beans;\n    const eDocument = _getDocument(beans);\n    const ePopupParent = this.getPopupParent();\n    const { wrapperEl, eChild: popupEl, closedCallback, afterGuiAttached, closeOnEsc, modal } = params;\n    let popupHidden = false;\n    const hidePopupOnKeyboardEvent = (event) => {\n      if (!wrapperEl.contains(_getActiveDomElement(beans))) {\n        return;\n      }\n      const key = event.key;\n      if (key === KeyCode.ESCAPE && !_isStopPropagationForAgGrid(event)) {\n        removeListeners({ keyboardEvent: event });\n      }\n    };\n    const hidePopupOnMouseEvent = (event) => removeListeners({ mouseEvent: event });\n    const hidePopupOnTouchEvent = (event) => removeListeners({ touchEvent: event });\n    const removeListeners = (popupParams = {}) => {\n      const { mouseEvent, touchEvent, keyboardEvent, forceHide } = popupParams;\n      if (!forceHide && // we don't hide popup if the event was on the child, or any\n      // children of this child\n      (this.isEventFromCurrentPopup({ mouseEvent, touchEvent }, popupEl) || // this method should only be called once. the client can have different\n      // paths, each one wanting to close, so this method may be called multiple times.\n      popupHidden)) {\n        return;\n      }\n      popupHidden = true;\n      ePopupParent.removeChild(wrapperEl);\n      eDocument.removeEventListener(\"keydown\", hidePopupOnKeyboardEvent);\n      eDocument.removeEventListener(\"mousedown\", hidePopupOnMouseEvent);\n      eDocument.removeEventListener(\"touchstart\", hidePopupOnTouchEvent);\n      eDocument.removeEventListener(\"contextmenu\", hidePopupOnMouseEvent);\n      this.eventSvc.removeEventListener(\"dragStarted\", hidePopupOnMouseEvent);\n      if (closedCallback) {\n        closedCallback(mouseEvent || touchEvent || keyboardEvent);\n      }\n      this.removePopupFromPopupList(popupEl);\n    };\n    if (afterGuiAttached) {\n      afterGuiAttached({ hidePopup: removeListeners });\n    }\n    window.setTimeout(() => {\n      if (closeOnEsc) {\n        eDocument.addEventListener(\"keydown\", hidePopupOnKeyboardEvent);\n      }\n      if (modal) {\n        eDocument.addEventListener(\"mousedown\", hidePopupOnMouseEvent);\n        this.eventSvc.addEventListener(\"dragStarted\", hidePopupOnMouseEvent);\n        eDocument.addEventListener(\"touchstart\", hidePopupOnTouchEvent);\n        eDocument.addEventListener(\"contextmenu\", hidePopupOnMouseEvent);\n      }\n    }, 0);\n    return removeListeners;\n  }\n  addPopupToPopupList(element, wrapperEl, removeListeners, anchorToElement) {\n    this.popupList.push({\n      element,\n      wrapper: wrapperEl,\n      hideFunc: removeListeners,\n      instanceId: instanceIdSeq++,\n      isAnchored: !!anchorToElement\n    });\n    if (anchorToElement) {\n      this.setPopupPositionRelatedToElement(element, anchorToElement);\n    }\n  }\n  getPopupIndex(el) {\n    return this.popupList.findIndex((p) => p.element === el);\n  }\n  setPopupPositionRelatedToElement(popupEl, relativeElement) {\n    const popupIndex = this.getPopupIndex(popupEl);\n    if (popupIndex === -1) {\n      return;\n    }\n    const popup = this.popupList[popupIndex];\n    if (popup.stopAnchoringPromise) {\n      popup.stopAnchoringPromise.then((destroyFunc) => destroyFunc && destroyFunc());\n    }\n    popup.stopAnchoringPromise = void 0;\n    popup.isAnchored = false;\n    if (!relativeElement) {\n      return;\n    }\n    const destroyPositionTracker = this.keepPopupPositionedRelativeTo({\n      element: relativeElement,\n      ePopup: popupEl,\n      hidePopup: popup.hideFunc\n    });\n    popup.stopAnchoringPromise = destroyPositionTracker;\n    popup.isAnchored = true;\n    return destroyPositionTracker;\n  }\n  removePopupFromPopupList(element) {\n    this.setAlignedStyles(element, null);\n    this.setPopupPositionRelatedToElement(element, null);\n    this.popupList = this.popupList.filter((p) => p.element !== element);\n  }\n  keepPopupPositionedRelativeTo(params) {\n    const eParent = this.getPopupParent();\n    const parentRect = eParent.getBoundingClientRect();\n    const { element, ePopup } = params;\n    const sourceRect = element.getBoundingClientRect();\n    const extractFromPixelValue = (pxSize) => parseInt(pxSize.substring(0, pxSize.length - 1), 10);\n    const createPosition = (prop, direction) => {\n      const initialDiff = parentRect[prop] - sourceRect[prop];\n      const initial = extractFromPixelValue(ePopup.style[prop]);\n      return {\n        initialDiff,\n        lastDiff: initialDiff,\n        initial,\n        last: initial,\n        direction\n      };\n    };\n    const topPosition = createPosition(\"top\", 0 /* vertical */);\n    const leftPosition = createPosition(\"left\", 1 /* horizontal */);\n    const fwOverrides = this.beans.frameworkOverrides;\n    return new AgPromise((resolve) => {\n      fwOverrides.wrapIncoming(() => {\n        fwOverrides.setInterval(() => {\n          const pRect = eParent.getBoundingClientRect();\n          const sRect = element.getBoundingClientRect();\n          const elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;\n          if (elementNotInDom) {\n            params.hidePopup();\n            return;\n          }\n          const calculateNewPosition = (position, prop) => {\n            const current = extractFromPixelValue(ePopup.style[prop]);\n            if (position.last !== current) {\n              position.initial = current;\n              position.last = current;\n            }\n            const currentDiff = pRect[prop] - sRect[prop];\n            if (currentDiff != position.lastDiff) {\n              const newValue = this.keepXYWithinBounds(\n                ePopup,\n                position.initial + position.initialDiff - currentDiff,\n                position.direction\n              );\n              ePopup.style[prop] = `${newValue}px`;\n              position.last = newValue;\n            }\n            position.lastDiff = currentDiff;\n          };\n          calculateNewPosition(topPosition, \"top\");\n          calculateNewPosition(leftPosition, \"left\");\n        }, 200).then((intervalId) => {\n          const result = () => {\n            if (intervalId != null) {\n              window.clearInterval(intervalId);\n            }\n          };\n          resolve(result);\n        });\n      }, \"popupPositioning\");\n    });\n  }\n  hasAnchoredPopup() {\n    return this.popupList.some((popup) => popup.isAnchored);\n  }\n  isEventFromCurrentPopup(params, target) {\n    const { mouseEvent, touchEvent } = params;\n    const event = mouseEvent ? mouseEvent : touchEvent;\n    if (!event) {\n      return false;\n    }\n    const indexOfThisChild = this.getPopupIndex(target);\n    if (indexOfThisChild === -1) {\n      return false;\n    }\n    for (let i = indexOfThisChild; i < this.popupList.length; i++) {\n      const popup = this.popupList[i];\n      if (_isElementInEventPath(popup.element, event)) {\n        return true;\n      }\n    }\n    return this.isElementWithinCustomPopup(event.target);\n  }\n  isElementWithinCustomPopup(el) {\n    const eDocument = _getDocument(this.beans);\n    while (el && el !== eDocument.body) {\n      if (el.classList.contains(\"ag-custom-component-popup\") || el.parentElement === null) {\n        return true;\n      }\n      el = el.parentElement;\n    }\n    return false;\n  }\n  getWrapper(ePopup) {\n    while (!ePopup.classList.contains(\"ag-popup\") && ePopup.parentElement) {\n      ePopup = ePopup.parentElement;\n    }\n    return ePopup.classList.contains(\"ag-popup\") ? ePopup : null;\n  }\n  setAlwaysOnTop(ePopup, alwaysOnTop) {\n    const eWrapper = this.getWrapper(ePopup);\n    if (!eWrapper) {\n      return;\n    }\n    eWrapper.classList.toggle(\"ag-always-on-top\", !!alwaysOnTop);\n    if (alwaysOnTop) {\n      this.bringPopupToFront(eWrapper);\n    }\n  }\n  /** @return true if moved */\n  bringPopupToFront(ePopup) {\n    const parent = this.getPopupParent();\n    const popupList = Array.prototype.slice.call(parent.querySelectorAll(\".ag-popup\"));\n    const popupLen = popupList.length;\n    const eWrapper = this.getWrapper(ePopup);\n    if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n      return;\n    }\n    const standardPopupList = [];\n    const alwaysOnTopList = [];\n    for (const popup of popupList) {\n      if (popup === eWrapper) {\n        continue;\n      }\n      if (popup.classList.contains(\"ag-always-on-top\")) {\n        alwaysOnTopList.push(popup);\n      } else {\n        standardPopupList.push(popup);\n      }\n    }\n    const innerElsScrollMap = [];\n    const onTopLength = alwaysOnTopList.length;\n    const isPopupAlwaysOnTop = eWrapper.classList.contains(\"ag-always-on-top\");\n    const shouldBeLast = isPopupAlwaysOnTop || !onTopLength;\n    const targetList = shouldBeLast ? [...standardPopupList, ...alwaysOnTopList, eWrapper] : [...standardPopupList, eWrapper, ...alwaysOnTopList];\n    for (let i = 0; i <= popupLen; i++) {\n      const currentPopup = targetList[i];\n      if (popupList[i] === targetList[i] || currentPopup === eWrapper) {\n        continue;\n      }\n      const innerEls = currentPopup.querySelectorAll(\"div\");\n      innerEls.forEach((el) => {\n        if (el.scrollTop !== 0) {\n          innerElsScrollMap.push([el, el.scrollTop]);\n        }\n      });\n      if (i === 0) {\n        parent.insertAdjacentElement(\"afterbegin\", currentPopup);\n      } else {\n        targetList[i - 1].insertAdjacentElement(\"afterend\", currentPopup);\n      }\n    }\n    while (innerElsScrollMap.length) {\n      const currentEl = innerElsScrollMap.pop();\n      currentEl[0].scrollTop = currentEl[1];\n    }\n  }\n};\n\n// packages/ag-grid-community/src/widgets/popupModule.ts\nvar PopupModule = {\n  moduleName: \"Popup\",\n  version: VERSION,\n  beans: [PopupService]\n};\n\n// packages/ag-grid-community/src/filter/column-filters.css-GENERATED.ts\nvar columnFiltersCSS = (\n  /*css*/\n  `.ag-set-filter{--ag-indentation-level:0}.ag-set-filter-item{align-items:center;display:flex;height:100%}:where(.ag-ltr) .ag-set-filter-item{padding-left:calc(var(--ag-widget-container-horizontal-padding) + var(--ag-indentation-level)*var(--ag-set-filter-indent-size))}:where(.ag-rtl) .ag-set-filter-item{padding-right:calc(var(--ag-widget-container-horizontal-padding) + var(--ag-indentation-level)*var(--ag-set-filter-indent-size))}.ag-set-filter-item-checkbox{display:flex;height:100%;width:100%}.ag-set-filter-group-icons{display:block;>*{cursor:pointer}}:where(.ag-ltr) .ag-set-filter-group-icons{margin-right:var(--ag-widget-container-horizontal-padding)}:where(.ag-rtl) .ag-set-filter-group-icons{margin-left:var(--ag-widget-container-horizontal-padding)}.ag-filter-body-wrapper{display:flex;flex-direction:column}:where(.ag-menu:not(.ag-tabs) .ag-filter) .ag-filter-body-wrapper,:where(.ag-menu:not(.ag-tabs) .ag-filter)>:not(.ag-filter-wrapper){min-width:180px}.ag-filter-filter{flex:1 1 0px}.ag-filter-condition{display:flex;justify-content:center}.ag-floating-filter-body{display:flex;flex:1 1 auto;height:100%;position:relative}.ag-floating-filter-full-body{align-items:center;display:flex;flex:1 1 auto;height:100%;overflow:hidden;width:100%}:where(.ag-floating-filter-full-body)>div{flex:1 1 auto}.ag-floating-filter-input{align-items:center;display:flex;width:100%;>*{flex:1 1 auto}:where(.ag-input-field-input[type=date]){width:1px}}.ag-floating-filter-button{display:flex;flex:none}.ag-date-floating-filter-wrapper{display:flex}.ag-set-floating-filter-input :where(input)[disabled]{pointer-events:none}.ag-floating-filter-button-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;height:var(--ag-icon-size);width:var(--ag-icon-size)}.ag-filter-loading{align-items:unset;background-color:var(--ag-chrome-background-color);height:100%;padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);position:absolute;width:100%;z-index:1;:where(.ag-menu) &{background-color:var(--ag-menu-background-color)}}.ag-filter-separator{border-top:1px solid var(--menu-separator-color)}:where(.ag-filter-select) .ag-picker-field-wrapper{width:0}.ag-filter-condition-operator{height:17px}:where(.ag-ltr) .ag-filter-condition-operator-or{margin-left:calc(var(--ag-spacing)*2)}:where(.ag-rtl) .ag-filter-condition-operator-or{margin-right:calc(var(--ag-spacing)*2)}.ag-set-filter-select-all{padding-top:var(--ag-widget-container-vertical-padding)}.ag-filter-no-matches,.ag-set-filter-list{height:calc(var(--ag-list-item-height)*6)}.ag-filter-no-matches{padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}.ag-set-filter-tree-list{height:calc(var(--ag-list-item-height)*10)}.ag-set-filter-filter{margin-left:var(--ag-widget-container-horizontal-padding);margin-right:var(--ag-widget-container-horizontal-padding);margin-top:var(--ag-widget-container-vertical-padding)}.ag-filter-to{margin-top:var(--ag-widget-vertical-spacing)}.ag-mini-filter{margin:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}:where(.ag-ltr) .ag-set-filter-add-group-indent{margin-left:calc(var(--ag-icon-size) + var(--ag-widget-container-horizontal-padding))}:where(.ag-rtl) .ag-set-filter-add-group-indent{margin-right:calc(var(--ag-icon-size) + var(--ag-widget-container-horizontal-padding))}:where(.ag-filter-menu) .ag-set-filter-list{min-width:200px}.ag-filter-virtual-list-item:focus-visible{box-shadow:inset var(--ag-focus-shadow)}.ag-filter-apply-panel{display:flex;justify-content:flex-end;overflow:hidden;padding:var(--ag-widget-vertical-spacing) var(--ag-widget-container-horizontal-padding) var(--ag-widget-container-vertical-padding)}.ag-filter-apply-panel-button{line-height:1.5}:where(.ag-ltr) .ag-filter-apply-panel-button{margin-left:calc(var(--ag-spacing)*2)}:where(.ag-rtl) .ag-filter-apply-panel-button{margin-right:calc(var(--ag-spacing)*2)}.ag-simple-filter-body-wrapper{display:flex;flex-direction:column;min-height:calc(var(--ag-list-item-height) + var(--ag-widget-container-vertical-padding) + var(--ag-widget-vertical-spacing));overflow-y:auto;padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);padding-bottom:calc(var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing));&>*{margin-bottom:var(--ag-widget-vertical-spacing)}:where(.ag-resizer-wrapper){margin:0}}.ag-multi-filter-menu-item{margin:var(--ag-spacing) 0}.ag-multi-filter-group-title-bar{background-color:transparent;color:var(--ag-header-text-color);font-weight:500;padding:calc(var(--ag-spacing)*1.5) var(--ag-spacing)}.ag-group-filter-field-select-wrapper{display:flex;flex-direction:column;gap:var(--ag-widget-vertical-spacing);padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}`\n);\n\n// packages/ag-grid-community/src/filter/columnFilterApi.ts\nfunction isColumnFilterPresent(beans) {\n  const filterManager = beans.filterManager;\n  return !!filterManager?.isColumnFilterPresent() || !!filterManager?.isAggregateFilterPresent();\n}\nfunction getColumnFilterInstance(beans, key) {\n  return beans.filterManager?.getColumnFilterInstance(key) ?? Promise.resolve(void 0);\n}\nfunction destroyFilter(beans, key) {\n  const column = beans.colModel.getColDefCol(key);\n  if (column) {\n    return beans.filterManager?.destroyFilter(column, \"api\");\n  }\n}\nfunction setFilterModel(beans, model) {\n  beans.frameworkOverrides.wrapIncoming(() => beans.filterManager?.setFilterModel(model));\n}\nfunction getFilterModel(beans) {\n  return beans.filterManager?.getFilterModel() ?? {};\n}\nfunction getColumnFilterModel(beans, column) {\n  return beans.filterManager?.getColumnFilterModel(column) ?? null;\n}\nfunction setColumnFilterModel(beans, column, model) {\n  return beans.filterManager?.setColumnFilterModel(column, model) ?? Promise.resolve();\n}\nfunction showColumnFilter(beans, colKey) {\n  const column = beans.colModel.getCol(colKey);\n  if (!column) {\n    _error(12, { colKey });\n    return;\n  }\n  beans.menuSvc?.showFilterMenu({\n    column,\n    containerType: \"columnFilter\",\n    positionBy: \"auto\"\n  });\n}\n\n// packages/ag-grid-community/src/filter/columnFilterService.ts\nvar MONTH_LOCALE_TEXT = {\n  january: \"January\",\n  february: \"February\",\n  march: \"March\",\n  april: \"April\",\n  may: \"May\",\n  june: \"June\",\n  july: \"July\",\n  august: \"August\",\n  september: \"September\",\n  october: \"October\",\n  november: \"November\",\n  december: \"December\"\n};\nvar MONTH_KEYS = [\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];\nfunction setFilterNumberComparator(a, b) {\n  if (a == null) {\n    return -1;\n  }\n  if (b == null) {\n    return 1;\n  }\n  return parseFloat(a) - parseFloat(b);\n}\nvar ColumnFilterService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colFilter\";\n    this.allColumnFilters = /* @__PURE__ */ new Map();\n    this.allColumnListeners = /* @__PURE__ */ new Map();\n    this.activeAggregateFilters = [];\n    this.activeColumnFilters = [];\n    // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n    // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n    // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n    // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n    // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n    this.processingFilterChange = false;\n    // when we're waiting for cell data types to be inferred, we need to defer filter model updates\n    this.filterModelUpdateQueue = [];\n    this.columnFilterModelUpdateQueue = [];\n  }\n  postConstruct() {\n    this.addManagedEventListeners({\n      gridColumnsChanged: this.onColumnsChanged.bind(this),\n      beforeRefreshModel: ({ params }) => {\n        if (params.rowDataUpdated || params.changedProps?.has(\"treeData\")) {\n          this.onNewRowsLoaded(\"rowDataUpdated\");\n        }\n      },\n      dataTypesInferred: this.processFilterModelUpdateQueue.bind(this)\n    });\n    this.initialFilterModel = {\n      ...this.gos.get(\"initialState\")?.filter?.filterModel ?? {}\n    };\n  }\n  setFilterModel(model, source = \"api\") {\n    const { colModel, dataTypeSvc, filterManager } = this.beans;\n    if (dataTypeSvc?.isPendingInference) {\n      this.filterModelUpdateQueue.push({ model, source });\n      return;\n    }\n    const allPromises = [];\n    const previousModel = this.getFilterModel(true);\n    if (model) {\n      const modelKeys = new Set(Object.keys(model));\n      this.allColumnFilters.forEach((filterWrapper, colId) => {\n        const newModel = model[colId];\n        allPromises.push(setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));\n        modelKeys.delete(colId);\n      });\n      modelKeys.forEach((colId) => {\n        const column = colModel.getColDefCol(colId) || colModel.getCol(colId);\n        if (!column) {\n          _warn(62, { colId });\n          return;\n        }\n        if (!column.isFilterAllowed()) {\n          _warn(63, { colId });\n          return;\n        }\n        const filterWrapper = this.getOrCreateFilterWrapper(column);\n        if (!filterWrapper) {\n          _warn(64, { colId });\n          return;\n        }\n        allPromises.push(setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));\n      });\n    } else {\n      this.allColumnFilters.forEach((filterWrapper) => {\n        allPromises.push(setModelOnFilterWrapper(filterWrapper.filterPromise, null));\n      });\n    }\n    AgPromise.all(allPromises).then(() => {\n      const currentModel = this.getFilterModel(true);\n      const columns = [];\n      this.allColumnFilters.forEach((filterWrapper, colId) => {\n        const before = previousModel ? previousModel[colId] : null;\n        const after = currentModel ? currentModel[colId] : null;\n        if (!_jsonEquals(before, after)) {\n          columns.push(filterWrapper.column);\n        }\n      });\n      if (columns.length > 0) {\n        filterManager?.onFilterChanged({ columns, source });\n      }\n    });\n  }\n  getFilterModel(excludeInitialState) {\n    const result = {};\n    const {\n      allColumnFilters,\n      initialFilterModel,\n      beans: { colModel }\n    } = this;\n    allColumnFilters.forEach((filterWrapper, key) => {\n      const model = this.getModelFromFilterWrapper(filterWrapper);\n      if (_exists(model)) {\n        result[key] = model;\n      }\n    });\n    if (!excludeInitialState) {\n      for (const colId of Object.keys(initialFilterModel)) {\n        const model = initialFilterModel[colId];\n        if (_exists(model) && !allColumnFilters.has(colId) && colModel.getCol(colId)?.isFilterAllowed()) {\n          result[colId] = model;\n        }\n      }\n    }\n    return result;\n  }\n  getModelFromFilterWrapper(filterWrapper) {\n    const { filter } = filterWrapper;\n    if (filter) {\n      if (typeof filter.getModel !== \"function\") {\n        _warn(66);\n        return null;\n      }\n      return filter.getModel();\n    } else {\n      return this.getModelFromInitialState(filterWrapper.column);\n    }\n  }\n  getModelFromInitialState(column) {\n    return this.initialFilterModel[column.getColId()] ?? null;\n  }\n  isColumnFilterPresent() {\n    return this.activeColumnFilters.length > 0;\n  }\n  isAggregateFilterPresent() {\n    return !!this.activeAggregateFilters.length;\n  }\n  disableColumnFilters() {\n    this.initialFilterModel = {};\n    const { allColumnFilters } = this;\n    if (allColumnFilters.size) {\n      allColumnFilters.forEach(\n        (filterWrapper) => this.disposeFilterWrapper(filterWrapper, \"advancedFilterEnabled\")\n      );\n      return true;\n    }\n    return false;\n  }\n  doAggregateFiltersPass(node, filterToSkip) {\n    return this.doColumnFiltersPass(node, filterToSkip, true);\n  }\n  updateActiveFilters() {\n    const isFilterActive = (filter) => {\n      if (!filter) {\n        return false;\n      }\n      if (!filter.isFilterActive) {\n        _warn(67);\n        return false;\n      }\n      return filter.isFilterActive();\n    };\n    const { colModel, gos } = this.beans;\n    const groupFilterEnabled = !!_getGroupAggFiltering(gos);\n    const isAggFilter = (column) => {\n      const isSecondary = !column.isPrimary();\n      if (isSecondary) {\n        return true;\n      }\n      const isShowingPrimaryColumns = !colModel.isPivotActive();\n      const isValueActive = column.isValueActive();\n      if (!isValueActive || !isShowingPrimaryColumns) {\n        return false;\n      }\n      if (colModel.isPivotMode()) {\n        return true;\n      }\n      return groupFilterEnabled;\n    };\n    const activeAggregateFilters = [];\n    const activeColumnFilters = [];\n    return this.forEachColumnFilter((filter, filterWrapper) => {\n      const filterActive = isFilterActive(filter);\n      if (filterActive) {\n        if (isAggFilter(filterWrapper.column)) {\n          activeAggregateFilters.push(filter);\n        } else {\n          activeColumnFilters.push(filter);\n        }\n      }\n    }).then(() => {\n      this.activeAggregateFilters = activeAggregateFilters;\n      this.activeColumnFilters = activeColumnFilters;\n    });\n  }\n  updateFilterFlagInColumns(source, additionalEventAttributes) {\n    return this.forEachColumnFilter(\n      (filter, filterWrapper) => this.setColFilterActive(filterWrapper.column, filter.isFilterActive(), source, additionalEventAttributes)\n    );\n  }\n  forEachColumnFilter(callback) {\n    const promises = [];\n    this.allColumnFilters.forEach((filterWrapper) => {\n      const filterPromise = filterWrapper.filterPromise;\n      if (filterPromise) {\n        promises.push(filterPromise.then((filter) => callback(filter, filterWrapper)));\n      }\n    });\n    return AgPromise.all(promises);\n  }\n  doColumnFiltersPass(node, filterToSkip, targetAggregates) {\n    const { data, aggData } = node;\n    const targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;\n    const targetedData = targetAggregates ? aggData : data;\n    for (let i = 0; i < targetedFilters.length; i++) {\n      const filter = targetedFilters[i];\n      if (filter == null || filter === filterToSkip) {\n        continue;\n      }\n      if (typeof filter.doesFilterPass !== \"function\") {\n        _error(91);\n        continue;\n      }\n      if (!filter.doesFilterPass({ node, data: targetedData })) {\n        return false;\n      }\n    }\n    return true;\n  }\n  // sometimes (especially in React) the filter can call onFilterChanged when we are in the middle\n  // of a render cycle. this would be bad, so we wait for render cycle to complete when this happens.\n  // this happens in react when we change React State in the grid (eg setting RowCtrl's in RowContainer)\n  // which results in React State getting applied in the main application, triggering a useEffect() to\n  // be kicked off adn then the application calling the grid's API. in AG-6554, the custom filter was\n  // getting it's useEffect() triggered in this way.\n  callOnFilterChangedOutsideRenderCycle(params) {\n    const { rowRenderer, filterManager } = this.beans;\n    const action = () => {\n      if (this.isAlive()) {\n        filterManager?.onFilterChanged(params);\n      }\n    };\n    if (rowRenderer.isRefreshInProgress()) {\n      setTimeout(action, 0);\n    } else {\n      action();\n    }\n  }\n  updateBeforeFilterChanged(params = {}) {\n    const { filterInstance, additionalEventAttributes } = params;\n    this.updateDependentFilters();\n    return this.updateActiveFilters().then(\n      () => this.updateFilterFlagInColumns(\"filterChanged\", additionalEventAttributes).then(() => {\n        this.allColumnFilters.forEach((filterWrapper) => {\n          if (!filterWrapper.filterPromise) {\n            return;\n          }\n          filterWrapper.filterPromise.then((filter) => {\n            if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {\n              filter.onAnyFilterChanged();\n            }\n          });\n        });\n        this.processingFilterChange = true;\n      })\n    );\n  }\n  updateAfterFilterChanged() {\n    this.processingFilterChange = false;\n  }\n  isSuppressFlashingCellsBecauseFiltering() {\n    const allowShowChangeAfterFilter = this.gos.get(\"allowShowChangeAfterFilter\") ?? false;\n    return !allowShowChangeAfterFilter && this.processingFilterChange;\n  }\n  onNewRowsLoaded(source) {\n    this.forEachColumnFilter((filter) => {\n      filter.onNewRowsLoaded?.();\n    }).then(() => this.updateFilterFlagInColumns(source, { afterDataChange: true })).then(() => this.updateActiveFilters());\n  }\n  createGetValue(filterColumn) {\n    const { filterValueSvc, colModel } = this.beans;\n    return (rowNode, column) => {\n      const columnToUse = column ? colModel.getCol(column) : filterColumn;\n      return columnToUse ? filterValueSvc.getValue(columnToUse, rowNode) : void 0;\n    };\n  }\n  isFilterActive(column) {\n    const { filter } = this.cachedFilter(column) ?? {};\n    if (filter) {\n      return filter.isFilterActive();\n    }\n    return this.getModelFromInitialState(column) != null;\n  }\n  getOrCreateFilterWrapper(column) {\n    if (!column.isFilterAllowed()) {\n      return null;\n    }\n    let filterWrapper = this.cachedFilter(column);\n    if (!filterWrapper) {\n      filterWrapper = this.createFilterWrapper(column);\n      this.setColumnFilterWrapper(column, filterWrapper);\n    }\n    return filterWrapper;\n  }\n  cachedFilter(column) {\n    return this.allColumnFilters.get(column.getColId());\n  }\n  getDefaultFilter(column) {\n    let defaultFilter;\n    const { gos, dataTypeSvc } = this.beans;\n    if (_isSetFilterByDefault(gos)) {\n      defaultFilter = \"agSetColumnFilter\";\n    } else {\n      const cellDataType = dataTypeSvc?.getBaseDataType(column);\n      if (cellDataType === \"number\") {\n        defaultFilter = \"agNumberColumnFilter\";\n      } else if (cellDataType === \"date\" || cellDataType === \"dateString\") {\n        defaultFilter = \"agDateColumnFilter\";\n      } else {\n        defaultFilter = \"agTextColumnFilter\";\n      }\n    }\n    return defaultFilter;\n  }\n  getDefaultFloatingFilter(column) {\n    let defaultFloatingFilterType;\n    const { gos, dataTypeSvc } = this.beans;\n    if (_isSetFilterByDefault(gos)) {\n      defaultFloatingFilterType = \"agSetColumnFloatingFilter\";\n    } else {\n      const cellDataType = dataTypeSvc?.getBaseDataType(column);\n      if (cellDataType === \"number\") {\n        defaultFloatingFilterType = \"agNumberColumnFloatingFilter\";\n      } else if (cellDataType === \"date\" || cellDataType === \"dateString\") {\n        defaultFloatingFilterType = \"agDateColumnFloatingFilter\";\n      } else {\n        defaultFloatingFilterType = \"agTextColumnFloatingFilter\";\n      }\n    }\n    return defaultFloatingFilterType;\n  }\n  createFilterInstance(column, filterWrapper) {\n    const defaultFilter = this.getDefaultFilter(column);\n    const colDef = column.getColDef();\n    let filterInstance;\n    const params = {\n      ...this.createFilterParams(column, colDef),\n      filterModifiedCallback: () => this.filterModifiedCallbackFactory(filterInstance, column)(),\n      filterChangedCallback: (additionalEventAttributes) => this.filterChangedCallbackFactory(filterInstance, column)(additionalEventAttributes),\n      doesRowPassOtherFilter: (node) => this.beans.filterManager?.doesRowPassOtherFilters(filterInstance, node) ?? true\n    };\n    const compDetails = _getFilterDetails(this.beans.userCompFactory, colDef, params, defaultFilter);\n    if (!compDetails) {\n      return { filterPromise: null, compDetails: null };\n    }\n    return {\n      filterPromise: () => {\n        const filterPromise = compDetails.newAgStackInstance();\n        filterPromise.then((r) => {\n          filterInstance = r;\n          if (filterWrapper) {\n            filterWrapper.filter = r ?? void 0;\n          }\n        });\n        return filterPromise;\n      },\n      compDetails\n    };\n  }\n  createFilterParams(column, colDef) {\n    const params = _addGridCommonParams(this.gos, {\n      column,\n      colDef,\n      rowModel: this.beans.rowModel,\n      // @deprecated v33.1\n      filterChangedCallback: () => {\n      },\n      filterModifiedCallback: () => {\n      },\n      getValue: this.createGetValue(column),\n      doesRowPassOtherFilter: () => true\n    });\n    return params;\n  }\n  createFilterWrapper(column) {\n    const filterWrapper = {\n      column,\n      filterPromise: null,\n      compDetails: null\n    };\n    const { filterPromise, compDetails } = this.createFilterInstance(column, filterWrapper);\n    filterWrapper.filterPromise = filterPromise?.() ?? null;\n    filterWrapper.compDetails = compDetails;\n    return filterWrapper;\n  }\n  onColumnsChanged() {\n    const columns = [];\n    const { colModel, filterManager } = this.beans;\n    this.allColumnFilters.forEach((wrapper, colId) => {\n      let currentColumn;\n      if (wrapper.column.isPrimary()) {\n        currentColumn = colModel.getColDefCol(colId);\n      } else {\n        currentColumn = colModel.getCol(colId);\n      }\n      if (currentColumn && currentColumn === wrapper.column) {\n        return;\n      }\n      columns.push(wrapper.column);\n      this.disposeFilterWrapper(wrapper, \"columnChanged\");\n      this.disposeColumnListener(colId);\n    });\n    const allFiltersAreGroupFilters = columns.every(isGroupFilter);\n    if (columns.length > 0 && !allFiltersAreGroupFilters) {\n      filterManager?.onFilterChanged({ columns, source: \"api\" });\n    } else {\n      this.updateDependentFilters();\n    }\n  }\n  updateDependentFilters() {\n    this.beans.autoColSvc?.getColumns()?.forEach((groupColumn) => {\n      if (isGroupFilter(groupColumn)) {\n        this.getOrCreateFilterWrapper(groupColumn);\n      }\n    });\n  }\n  // for group filters, can change dynamically whether they are allowed or not\n  isFilterAllowed(column) {\n    const isFilterAllowed = column.isFilterAllowed();\n    if (!isFilterAllowed) {\n      return false;\n    }\n    const { filter } = this.allColumnFilters.get(column.getColId()) ?? {};\n    if (filter) {\n      return typeof filter?.isFilterAllowed === \"function\" ? filter.isFilterAllowed() : true;\n    }\n    return true;\n  }\n  getFloatingFilterCompDetails(column, showParentFilter) {\n    const parentFilterInstance = (callback) => {\n      const filterComponent = this.getOrCreateFilterWrapper(column)?.filterPromise;\n      if (filterComponent == null) {\n        return;\n      }\n      filterComponent.then((instance) => {\n        callback(_unwrapUserComp(instance));\n      });\n    };\n    const colDef = column.getColDef();\n    const filterParams = {\n      ...this.createFilterParams(column, colDef),\n      filterChangedCallback: () => parentFilterInstance(\n        (filterInstance) => this.filterChangedCallbackFactory(filterInstance, column)()\n      )\n    };\n    const { userCompFactory, frameworkOverrides } = this.beans;\n    const finalFilterParams = _mergeFilterParamsWithApplicationProvidedParams(\n      userCompFactory,\n      colDef,\n      filterParams\n    );\n    let defaultFloatingFilterType = _getDefaultFloatingFilterType(\n      frameworkOverrides,\n      colDef,\n      () => this.getDefaultFloatingFilter(column)\n    );\n    if (defaultFloatingFilterType == null) {\n      defaultFloatingFilterType = \"agReadOnlyFloatingFilter\";\n    }\n    const params = _addGridCommonParams(this.gos, {\n      column,\n      filterParams: finalFilterParams,\n      currentParentModel: () => this.getCurrentFloatingFilterParentModel(column),\n      parentFilterInstance,\n      showParentFilter\n    });\n    return _getFloatingFilterCompDetails(userCompFactory, colDef, params, defaultFloatingFilterType);\n  }\n  getCurrentFloatingFilterParentModel(column) {\n    return this.getModelFromFilterWrapper(this.cachedFilter(column) ?? { column });\n  }\n  // destroys the filter, so it no longer takes part\n  destroyFilter(column, source = \"api\") {\n    const colId = column.getColId();\n    const filterWrapper = this.allColumnFilters.get(colId);\n    this.disposeColumnListener(colId);\n    delete this.initialFilterModel[colId];\n    if (filterWrapper) {\n      this.disposeFilterWrapper(filterWrapper, source).then((wasActive) => {\n        if (wasActive && this.isAlive()) {\n          this.beans.filterManager?.onFilterChanged({\n            columns: [column],\n            source: \"api\"\n          });\n        }\n      });\n    }\n  }\n  disposeColumnListener(colId) {\n    const columnListener = this.allColumnListeners.get(colId);\n    if (columnListener) {\n      this.allColumnListeners.delete(colId);\n      columnListener();\n    }\n  }\n  disposeFilterWrapper(filterWrapper, source) {\n    return filterWrapper.filterPromise?.then((filter) => {\n      const isActive = !!filter?.isFilterActive();\n      this.destroyBean(filter);\n      this.setColFilterActive(filterWrapper.column, false, \"filterDestroyed\");\n      this.allColumnFilters.delete(filterWrapper.column.getColId());\n      this.eventSvc.dispatchEvent({\n        type: \"filterDestroyed\",\n        source,\n        column: filterWrapper.column\n      });\n      return isActive;\n    }) ?? AgPromise.resolve(false);\n  }\n  filterModifiedCallbackFactory(filter, column) {\n    return () => {\n      this.eventSvc.dispatchEvent({\n        type: \"filterModified\",\n        column,\n        filterInstance: filter\n      });\n    };\n  }\n  filterChangedCallbackFactory(filter, column) {\n    return (additionalEventAttributes) => {\n      const source = additionalEventAttributes?.source ?? \"columnFilter\";\n      const params = {\n        filter,\n        additionalEventAttributes,\n        columns: [column],\n        source\n      };\n      this.callOnFilterChangedOutsideRenderCycle(params);\n    };\n  }\n  checkDestroyFilter(colId) {\n    const filterWrapper = this.allColumnFilters.get(colId);\n    if (!filterWrapper) {\n      return;\n    }\n    const column = filterWrapper.column;\n    const { compDetails } = column.isFilterAllowed() ? this.createFilterInstance(column) : { compDetails: null };\n    if (this.areFilterCompsDifferent(filterWrapper.compDetails, compDetails)) {\n      this.destroyFilter(column, \"paramsUpdated\");\n      return;\n    }\n    const newFilterParams = column.getColDef().filterParams;\n    if (!filterWrapper.filterPromise) {\n      this.destroyFilter(column, \"paramsUpdated\");\n      return;\n    }\n    filterWrapper.filterPromise.then((filter) => {\n      const shouldRefreshFilter = filter?.refresh ? filter.refresh({\n        ...this.createFilterParams(column, column.getColDef()),\n        filterModifiedCallback: this.filterModifiedCallbackFactory(filter, column),\n        filterChangedCallback: this.filterChangedCallbackFactory(filter, column),\n        doesRowPassOtherFilter: (node) => this.beans.filterManager?.doesRowPassOtherFilters(filter, node) ?? true,\n        ...newFilterParams\n      }) : true;\n      if (shouldRefreshFilter === false) {\n        this.destroyFilter(column, \"paramsUpdated\");\n      }\n    });\n  }\n  setColumnFilterWrapper(column, filterWrapper) {\n    const colId = column.getColId();\n    this.allColumnFilters.set(colId, filterWrapper);\n    this.allColumnListeners.set(\n      colId,\n      this.addManagedListeners(column, { colDefChanged: () => this.checkDestroyFilter(colId) })[0]\n    );\n  }\n  areFilterCompsDifferent(oldCompDetails, newCompDetails) {\n    if (!newCompDetails || !oldCompDetails) {\n      return true;\n    }\n    const { componentClass: oldComponentClass } = oldCompDetails;\n    const { componentClass: newComponentClass } = newCompDetails;\n    const isSameComponentClass = oldComponentClass === newComponentClass || // react hooks returns new wrappers, so check nested render method\n    oldComponentClass?.render && newComponentClass?.render && oldComponentClass.render === newComponentClass.render;\n    return !isSameComponentClass;\n  }\n  hasFloatingFilters() {\n    const gridColumns = this.beans.colModel.getCols();\n    return gridColumns.some((col) => col.getColDef().floatingFilter);\n  }\n  getColumnFilterInstance(key) {\n    return new Promise((resolve) => {\n      this.getFilterInstanceImpl(key).then((filter) => {\n        resolve(_unwrapUserComp(filter));\n      });\n    });\n  }\n  getFilterInstanceImpl(key) {\n    const column = this.beans.colModel.getColDefCol(key);\n    if (!column) {\n      return AgPromise.resolve(void 0);\n    }\n    const filterPromise = this.getOrCreateFilterWrapper(column)?.filterPromise;\n    return filterPromise ?? AgPromise.resolve(null);\n  }\n  processFilterModelUpdateQueue() {\n    this.filterModelUpdateQueue.forEach(({ model, source }) => this.setFilterModel(model, source));\n    this.filterModelUpdateQueue = [];\n    this.columnFilterModelUpdateQueue.forEach(({ key, model, resolve }) => {\n      this.setColumnFilterModel(key, model).then(() => resolve());\n    });\n    this.columnFilterModelUpdateQueue = [];\n  }\n  getColumnFilterModel(key) {\n    const filterWrapper = this.getFilterWrapper(key);\n    return filterWrapper ? this.getModelFromFilterWrapper(filterWrapper) : null;\n  }\n  setColumnFilterModel(key, model) {\n    const { colModel, dataTypeSvc } = this.beans;\n    if (dataTypeSvc?.isPendingInference) {\n      let resolve = () => {\n      };\n      const promise = new Promise((res) => {\n        resolve = res;\n      });\n      this.columnFilterModelUpdateQueue.push({ key, model, resolve });\n      return promise;\n    }\n    const column = colModel.getColDefCol(key);\n    const filterWrapper = column ? this.getOrCreateFilterWrapper(column) : null;\n    const convertPromise = (promise) => {\n      return new Promise((resolve) => {\n        promise.then((result) => resolve(result));\n      });\n    };\n    return filterWrapper ? convertPromise(setModelOnFilterWrapper(filterWrapper.filterPromise, model)) : Promise.resolve();\n  }\n  getFilterWrapper(key) {\n    const column = this.beans.colModel.getColDefCol(key);\n    return column ? this.cachedFilter(column) ?? null : null;\n  }\n  setColDefPropertiesForDataType(colDef, dataTypeDefinition, formatValue) {\n    const usingSetFilter = _isSetFilterByDefault(this.gos);\n    const translate = this.getLocaleTextFunc();\n    const mergeFilterParams = (params) => {\n      const { filterParams } = colDef;\n      colDef.filterParams = typeof filterParams === \"object\" ? {\n        ...filterParams,\n        ...params\n      } : params;\n    };\n    switch (dataTypeDefinition.baseDataType) {\n      case \"number\": {\n        if (usingSetFilter) {\n          mergeFilterParams({\n            comparator: setFilterNumberComparator\n          });\n        }\n        break;\n      }\n      case \"boolean\": {\n        if (usingSetFilter) {\n          mergeFilterParams({\n            valueFormatter: (params) => {\n              if (!_exists(params.value)) {\n                return translate(\"blanks\", \"(Blanks)\");\n              }\n              return translate(String(params.value), params.value ? \"True\" : \"False\");\n            }\n          });\n        } else {\n          mergeFilterParams({\n            maxNumConditions: 1,\n            debounceMs: 0,\n            filterOptions: [\n              \"empty\",\n              {\n                displayKey: \"true\",\n                displayName: \"True\",\n                predicate: (_filterValues, cellValue) => cellValue,\n                numberOfInputs: 0\n              },\n              {\n                displayKey: \"false\",\n                displayName: \"False\",\n                predicate: (_filterValues, cellValue) => cellValue === false,\n                numberOfInputs: 0\n              }\n            ]\n          });\n        }\n        break;\n      }\n      case \"date\": {\n        if (usingSetFilter) {\n          mergeFilterParams({\n            valueFormatter: (params) => {\n              const valueFormatted = formatValue(params);\n              return _exists(valueFormatted) ? valueFormatted : translate(\"blanks\", \"(Blanks)\");\n            },\n            treeList: true,\n            treeListFormatter: (pathKey, level) => {\n              if (pathKey === \"NaN\") {\n                return translate(\"invalidDate\", \"Invalid Date\");\n              }\n              if (level === 1 && pathKey != null) {\n                const monthKey = MONTH_KEYS[Number(pathKey) - 1];\n                return translate(monthKey, MONTH_LOCALE_TEXT[monthKey]);\n              }\n              return pathKey ?? translate(\"blanks\", \"(Blanks)\");\n            }\n          });\n        } else {\n          mergeFilterParams({\n            isValidDate\n          });\n        }\n        break;\n      }\n      case \"dateString\": {\n        const convertToDate = dataTypeDefinition.dateParser;\n        if (usingSetFilter) {\n          mergeFilterParams({\n            valueFormatter: (params) => {\n              const valueFormatted = formatValue(params);\n              return _exists(valueFormatted) ? valueFormatted : translate(\"blanks\", \"(Blanks)\");\n            },\n            treeList: true,\n            treeListPathGetter: (value) => {\n              const date = convertToDate(value ?? void 0);\n              return date ? [String(date.getFullYear()), String(date.getMonth() + 1), String(date.getDate())] : null;\n            },\n            treeListFormatter: (pathKey, level) => {\n              if (level === 1 && pathKey != null) {\n                const monthKey = MONTH_KEYS[Number(pathKey) - 1];\n                return translate(monthKey, MONTH_LOCALE_TEXT[monthKey]);\n              }\n              return pathKey ?? translate(\"blanks\", \"(Blanks)\");\n            }\n          });\n        } else {\n          mergeFilterParams({\n            comparator: (filterDate, cellValue) => {\n              const cellAsDate = convertToDate(cellValue);\n              if (cellValue == null || cellAsDate < filterDate) {\n                return -1;\n              }\n              if (cellAsDate > filterDate) {\n                return 1;\n              }\n              return 0;\n            },\n            isValidDate: (value) => typeof value === \"string\" && isValidDate(convertToDate(value))\n          });\n        }\n        break;\n      }\n      case \"object\": {\n        if (usingSetFilter) {\n          mergeFilterParams({\n            valueFormatter: (params) => {\n              const valueFormatted = formatValue(params);\n              return _exists(valueFormatted) ? valueFormatted : translate(\"blanks\", \"(Blanks)\");\n            }\n          });\n        } else {\n          colDef.filterValueGetter = (params) => formatValue({\n            column: params.column,\n            node: params.node,\n            value: this.beans.valueSvc.getValue(params.column, params.node)\n          });\n        }\n        break;\n      }\n    }\n  }\n  // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n  setColFilterActive(column, active, source, additionalEventAttributes) {\n    if (column.filterActive !== active) {\n      column.filterActive = active;\n      column.dispatchColEvent(\"filterActiveChanged\", source);\n    }\n    column.dispatchColEvent(\"filterChanged\", source, additionalEventAttributes);\n  }\n  destroy() {\n    super.destroy();\n    this.allColumnFilters.forEach((filterWrapper) => this.disposeFilterWrapper(filterWrapper, \"gridDestroyed\"));\n    this.allColumnListeners.clear();\n  }\n};\nfunction setModelOnFilterWrapper(filterPromise, newModel) {\n  if (!filterPromise) {\n    return AgPromise.resolve();\n  }\n  return new AgPromise((resolve) => {\n    filterPromise.then((filter) => {\n      if (typeof filter.setModel !== \"function\") {\n        _warn(65);\n        resolve();\n      }\n      (filter.setModel(newModel) || AgPromise.resolve()).then(() => resolve());\n    });\n  });\n}\nfunction isGroupFilter(column) {\n  return column.getColDef().filter === \"agGroupColumnFilter\";\n}\nfunction isValidDate(value) {\n  return value instanceof Date && !isNaN(value.getTime());\n}\n\n// packages/ag-grid-community/src/filter/filterApi.ts\nfunction isAnyFilterPresent(beans) {\n  return !!beans.filterManager?.isAnyFilterPresent();\n}\nfunction onFilterChanged(beans, source = \"api\") {\n  beans.filterManager?.onFilterChanged({ source });\n}\n\n// packages/ag-grid-community/src/filter/filterManager.ts\nvar FilterManager = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"filterManager\";\n    // when we're waiting for cell data types to be inferred, we need to defer filter model updates\n    this.advFilterModelUpdateQueue = [];\n  }\n  wireBeans(beans) {\n    this.quickFilter = beans.quickFilter;\n    this.advancedFilter = beans.advancedFilter;\n    this.colFilter = beans.colFilter;\n  }\n  postConstruct() {\n    const refreshFiltersForAggregations = this.refreshFiltersForAggregations.bind(this);\n    const updateAdvFilterColumns = this.updateAdvFilterColumns.bind(this);\n    this.addManagedEventListeners({\n      columnValueChanged: refreshFiltersForAggregations,\n      columnPivotChanged: refreshFiltersForAggregations,\n      columnPivotModeChanged: refreshFiltersForAggregations,\n      newColumnsLoaded: updateAdvFilterColumns,\n      columnVisible: updateAdvFilterColumns,\n      advancedFilterEnabledChanged: ({ enabled }) => this.onAdvFilterEnabledChanged(enabled),\n      dataTypesInferred: this.processFilterModelUpdateQueue.bind(this)\n    });\n    this.externalFilterPresent = this.isExternalFilterPresentCallback();\n    this.addManagedPropertyListeners([\"isExternalFilterPresent\", \"doesExternalFilterPass\"], () => {\n      this.onFilterChanged({ source: \"api\" });\n    });\n    this.updateAggFiltering();\n    this.addManagedPropertyListener(\"groupAggFiltering\", () => {\n      this.updateAggFiltering();\n      this.onFilterChanged();\n    });\n    if (this.quickFilter) {\n      this.addManagedListeners(this.quickFilter, {\n        quickFilterChanged: () => this.onFilterChanged({ source: \"quickFilter\" })\n      });\n    }\n    const { gos } = this;\n    this.alwaysPassFilter = gos.get(\"alwaysPassFilter\");\n    this.addManagedPropertyListener(\"alwaysPassFilter\", () => {\n      this.alwaysPassFilter = gos.get(\"alwaysPassFilter\");\n      this.onFilterChanged({ source: \"api\" });\n    });\n  }\n  isExternalFilterPresentCallback() {\n    const isFilterPresent = this.gos.getCallback(\"isExternalFilterPresent\");\n    return typeof isFilterPresent === \"function\" && isFilterPresent({});\n  }\n  doesExternalFilterPass(node) {\n    const doesFilterPass = this.gos.get(\"doesExternalFilterPass\");\n    return typeof doesFilterPass === \"function\" && doesFilterPass(node);\n  }\n  setFilterModel(model, source = \"api\") {\n    if (this.isAdvFilterEnabled()) {\n      this.warnAdvFilters();\n      return;\n    }\n    this.colFilter?.setFilterModel(model, source);\n  }\n  getFilterModel() {\n    return this.colFilter?.getFilterModel() ?? {};\n  }\n  isColumnFilterPresent() {\n    return !!this.colFilter?.isColumnFilterPresent();\n  }\n  isAggregateFilterPresent() {\n    return !!this.colFilter?.isAggregateFilterPresent();\n  }\n  isChildFilterPresent() {\n    return this.isColumnFilterPresent() || this.isQuickFilterPresent() || this.externalFilterPresent || this.isAdvFilterPresent();\n  }\n  isAnyFilterPresent() {\n    return this.isChildFilterPresent() || this.isAggregateFilterPresent();\n  }\n  isAdvFilterPresent() {\n    return this.isAdvFilterEnabled() && this.advancedFilter.isFilterPresent();\n  }\n  onAdvFilterEnabledChanged(enabled) {\n    if (enabled) {\n      if (this.colFilter?.disableColumnFilters()) {\n        this.onFilterChanged({ source: \"advancedFilter\" });\n      }\n    } else {\n      if (this.advancedFilter?.isFilterPresent()) {\n        this.advancedFilter.setModel(null);\n        this.onFilterChanged({ source: \"advancedFilter\" });\n      }\n    }\n  }\n  isAdvFilterEnabled() {\n    return !!this.advancedFilter?.isEnabled();\n  }\n  isAdvFilterHeaderActive() {\n    return this.isAdvFilterEnabled() && this.advancedFilter.isHeaderActive();\n  }\n  refreshFiltersForAggregations() {\n    const isAggFiltering = _getGroupAggFiltering(this.gos);\n    if (isAggFiltering) {\n      this.onFilterChanged();\n    }\n  }\n  onFilterChanged(params = {}) {\n    const { source, additionalEventAttributes, columns = [] } = params;\n    this.externalFilterPresent = this.isExternalFilterPresentCallback();\n    (this.colFilter ? this.colFilter.updateBeforeFilterChanged(params) : AgPromise.resolve()).then(() => {\n      const filterChangedEvent = {\n        source,\n        type: \"filterChanged\",\n        columns\n      };\n      if (additionalEventAttributes) {\n        _mergeDeep(filterChangedEvent, additionalEventAttributes);\n      }\n      this.eventSvc.dispatchEvent(filterChangedEvent);\n      this.colFilter?.updateAfterFilterChanged();\n    });\n  }\n  isSuppressFlashingCellsBecauseFiltering() {\n    return !!this.colFilter?.isSuppressFlashingCellsBecauseFiltering();\n  }\n  isQuickFilterPresent() {\n    return !!this.quickFilter?.isFilterPresent();\n  }\n  updateAggFiltering() {\n    this.aggFiltering = !!_getGroupAggFiltering(this.gos);\n  }\n  isAggregateQuickFilterPresent() {\n    return this.isQuickFilterPresent() && this.shouldApplyQuickFilterAfterAgg();\n  }\n  isNonAggregateQuickFilterPresent() {\n    return this.isQuickFilterPresent() && !this.shouldApplyQuickFilterAfterAgg();\n  }\n  shouldApplyQuickFilterAfterAgg() {\n    return (this.aggFiltering || this.beans.colModel.isPivotMode()) && !this.gos.get(\"applyQuickFilterBeforePivotOrAgg\");\n  }\n  doesRowPassOtherFilters(filterToSkip, node) {\n    return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });\n  }\n  doesRowPassAggregateFilters(params) {\n    const { rowNode } = params;\n    if (this.alwaysPassFilter?.(rowNode)) {\n      return true;\n    }\n    if (this.isAggregateQuickFilterPresent() && !this.quickFilter.doesRowPass(rowNode)) {\n      return false;\n    }\n    if (this.isAggregateFilterPresent() && !this.colFilter.doAggregateFiltersPass(rowNode, params.filterInstanceToSkip)) {\n      return false;\n    }\n    return true;\n  }\n  doesRowPassFilter(params) {\n    const { rowNode } = params;\n    if (this.alwaysPassFilter?.(rowNode)) {\n      return true;\n    }\n    if (this.isNonAggregateQuickFilterPresent() && !this.quickFilter.doesRowPass(rowNode)) {\n      return false;\n    }\n    if (this.externalFilterPresent && !this.doesExternalFilterPass(rowNode)) {\n      return false;\n    }\n    if (this.isColumnFilterPresent() && !this.colFilter.doColumnFiltersPass(rowNode, params.filterInstanceToSkip)) {\n      return false;\n    }\n    if (this.isAdvFilterPresent() && !this.advancedFilter.doesFilterPass(rowNode)) {\n      return false;\n    }\n    return true;\n  }\n  isFilterActive(column) {\n    return !!this.colFilter?.isFilterActive(column);\n  }\n  getOrCreateFilterWrapper(column) {\n    return this.colFilter?.getOrCreateFilterWrapper(column) ?? null;\n  }\n  getDefaultFloatingFilter(column) {\n    return this.colFilter.getDefaultFloatingFilter(column);\n  }\n  createFilterParams(column, colDef) {\n    return this.colFilter.createFilterParams(column, colDef);\n  }\n  // for group filters, can change dynamically whether they are allowed or not\n  isFilterAllowed(column) {\n    if (this.isAdvFilterEnabled()) {\n      return false;\n    }\n    return !!this.colFilter?.isFilterAllowed(column);\n  }\n  getFloatingFilterCompDetails(column, showParentFilter) {\n    return this.colFilter?.getFloatingFilterCompDetails(column, showParentFilter);\n  }\n  getCurrentFloatingFilterParentModel(column) {\n    return this.colFilter?.getCurrentFloatingFilterParentModel(column);\n  }\n  // destroys the filter, so it no longer takes part\n  destroyFilter(column, source = \"api\") {\n    this.colFilter?.destroyFilter(column, source);\n  }\n  areFilterCompsDifferent(oldCompDetails, newCompDetails) {\n    return !!this.colFilter?.areFilterCompsDifferent(oldCompDetails, newCompDetails);\n  }\n  getAdvFilterModel() {\n    return this.isAdvFilterEnabled() ? this.advancedFilter.getModel() : null;\n  }\n  setAdvFilterModel(expression, source = \"api\") {\n    if (!this.isAdvFilterEnabled()) {\n      return;\n    }\n    if (this.beans.dataTypeSvc?.isPendingInference) {\n      this.advFilterModelUpdateQueue.push(expression);\n      return;\n    }\n    this.advancedFilter.setModel(expression ?? null);\n    this.onFilterChanged({ source });\n  }\n  toggleAdvFilterBuilder(show, source) {\n    if (!this.isAdvFilterEnabled()) {\n      return;\n    }\n    this.advancedFilter.getCtrl().toggleFilterBuilder({ source, force: show });\n  }\n  updateAdvFilterColumns() {\n    if (!this.isAdvFilterEnabled()) {\n      return;\n    }\n    if (this.advancedFilter.updateValidity()) {\n      this.onFilterChanged({ source: \"advancedFilter\" });\n    }\n  }\n  hasFloatingFilters() {\n    if (this.isAdvFilterEnabled()) {\n      return false;\n    }\n    return !!this.colFilter?.hasFloatingFilters();\n  }\n  getColumnFilterInstance(key) {\n    if (this.isAdvFilterEnabled()) {\n      this.warnAdvFilters();\n      return Promise.resolve(void 0);\n    }\n    return this.colFilter?.getColumnFilterInstance(key) ?? Promise.resolve(void 0);\n  }\n  warnAdvFilters() {\n    _warn(68);\n  }\n  setupAdvFilterHeaderComp(eCompToInsertBefore) {\n    this.advancedFilter?.getCtrl().setupHeaderComp(eCompToInsertBefore);\n  }\n  getHeaderRowCount() {\n    return this.isAdvFilterHeaderActive() ? 1 : 0;\n  }\n  getHeaderHeight() {\n    return this.isAdvFilterHeaderActive() ? this.advancedFilter.getCtrl().getHeaderHeight() : 0;\n  }\n  processFilterModelUpdateQueue() {\n    this.advFilterModelUpdateQueue.forEach((model) => this.setAdvFilterModel(model));\n    this.advFilterModelUpdateQueue = [];\n  }\n  getColumnFilterModel(key) {\n    return this.colFilter?.getColumnFilterModel(key);\n  }\n  setColumnFilterModel(key, model) {\n    if (this.isAdvFilterEnabled()) {\n      this.warnAdvFilters();\n      return Promise.resolve();\n    }\n    return this.colFilter?.setColumnFilterModel(key, model) ?? Promise.resolve();\n  }\n  setColDefPropertiesForDataType(colDef, dataTypeDefinition, formatValue) {\n    this.colFilter?.setColDefPropertiesForDataType(colDef, dataTypeDefinition, formatValue);\n  }\n};\n\n// packages/ag-grid-community/src/filter/filterMenuFactory.ts\nvar FilterMenuFactory = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"filterMenuFactory\";\n  }\n  wireBeans(beans) {\n    this.popupSvc = beans.popupSvc;\n  }\n  hideActiveMenu() {\n    this.hidePopup?.();\n  }\n  showMenuAfterMouseEvent(column, mouseEvent, containerType, onClosedCallback) {\n    if (column && !column.isColumn) {\n      return;\n    }\n    this.showPopup(\n      column,\n      (eMenu) => {\n        this.popupSvc?.positionPopupUnderMouseEvent({\n          column,\n          type: containerType,\n          mouseEvent,\n          ePopup: eMenu\n        });\n      },\n      containerType,\n      mouseEvent.target,\n      _isLegacyMenuEnabled(this.gos),\n      onClosedCallback\n    );\n  }\n  showMenuAfterButtonClick(column, eventSource, containerType, onClosedCallback) {\n    if (column && !column.isColumn) {\n      return;\n    }\n    let multiplier = -1;\n    let alignSide = \"left\";\n    const isLegacyMenuEnabled = _isLegacyMenuEnabled(this.gos);\n    if (!isLegacyMenuEnabled && this.gos.get(\"enableRtl\")) {\n      multiplier = 1;\n      alignSide = \"right\";\n    }\n    const nudgeX = isLegacyMenuEnabled ? void 0 : 4 * multiplier;\n    const nudgeY = isLegacyMenuEnabled ? void 0 : 4;\n    this.showPopup(\n      column,\n      (eMenu) => {\n        this.popupSvc?.positionPopupByComponent({\n          type: containerType,\n          eventSource,\n          ePopup: eMenu,\n          nudgeX,\n          nudgeY,\n          alignSide,\n          keepWithinBounds: true,\n          position: \"under\",\n          column\n        });\n      },\n      containerType,\n      eventSource,\n      isLegacyMenuEnabled,\n      onClosedCallback\n    );\n  }\n  showPopup(column, positionCallback, containerType, eventSource, isLegacyMenuEnabled, onClosedCallback) {\n    const comp = column ? this.createBean(new FilterWrapperComp(column, \"COLUMN_MENU\")) : void 0;\n    this.activeMenu = comp;\n    if (!comp?.hasFilter() || !column) {\n      _error(57);\n      return;\n    }\n    const eMenu = _createElement({\n      tag: \"div\",\n      cls: `ag-menu${!isLegacyMenuEnabled ? \" ag-filter-menu\" : \"\"}`,\n      role: \"presentation\"\n    });\n    [this.tabListener] = this.addManagedElementListeners(eMenu, {\n      keydown: (e) => this.trapFocusWithin(e, eMenu)\n    });\n    eMenu.appendChild(comp?.getGui());\n    let hidePopup;\n    const afterGuiDetached = () => comp?.afterGuiDetached();\n    const anchorToElement = _isColumnMenuAnchoringEnabled(this.gos) ? eventSource ?? this.beans.ctrlsSvc.getGridBodyCtrl().eGridBody : void 0;\n    const closedCallback = (e) => {\n      _setColMenuVisible(column, false, \"contextMenu\");\n      const isKeyboardEvent = e instanceof KeyboardEvent;\n      if (this.tabListener) {\n        this.tabListener = this.tabListener();\n      }\n      if (isKeyboardEvent && eventSource && _isVisible(eventSource)) {\n        const focusableEl = _findTabbableParent(eventSource);\n        focusableEl?.focus({ preventScroll: true });\n      }\n      afterGuiDetached();\n      this.destroyBean(this.activeMenu);\n      this.dispatchVisibleChangedEvent(false, containerType, column);\n      onClosedCallback?.();\n    };\n    const translate = this.getLocaleTextFunc();\n    const ariaLabel = isLegacyMenuEnabled && containerType !== \"columnFilter\" ? translate(\"ariaLabelColumnMenu\", \"Column Menu\") : translate(\"ariaLabelColumnFilter\", \"Column Filter\");\n    const addPopupRes = this.popupSvc?.addPopup({\n      modal: true,\n      eChild: eMenu,\n      closeOnEsc: true,\n      closedCallback,\n      positionCallback: () => positionCallback(eMenu),\n      anchorToElement,\n      ariaLabel\n    });\n    if (addPopupRes) {\n      this.hidePopup = hidePopup = addPopupRes.hideFunc;\n    }\n    comp.afterInit().then(() => {\n      positionCallback(eMenu);\n      comp.afterGuiAttached({ container: containerType, hidePopup });\n    });\n    _setColMenuVisible(column, true, \"contextMenu\");\n    this.dispatchVisibleChangedEvent(true, containerType, column);\n  }\n  trapFocusWithin(e, menu) {\n    if (e.key !== KeyCode.TAB || e.defaultPrevented || _findNextFocusableElement(this.beans, menu, false, e.shiftKey)) {\n      return;\n    }\n    e.preventDefault();\n    _focusInto(menu, e.shiftKey);\n  }\n  dispatchVisibleChangedEvent(visible, containerType, column) {\n    this.eventSvc.dispatchEvent({\n      type: \"columnMenuVisibleChanged\",\n      visible,\n      switchingTab: false,\n      key: containerType,\n      column: column ?? null,\n      columnGroup: null\n    });\n  }\n  isMenuEnabled(column) {\n    return column.isFilterAllowed() && (column.getColDef().menuTabs ?? [\"filterMenuTab\"]).includes(\"filterMenuTab\");\n  }\n  showMenuAfterContextMenuEvent() {\n  }\n  destroy() {\n    this.destroyBean(this.activeMenu);\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/filter/filterValueService.ts\nvar FilterValueService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"filterValueSvc\";\n  }\n  getValue(column, rowNode) {\n    if (!rowNode) {\n      return;\n    }\n    const colDef = column.getColDef();\n    const { filterValueGetter } = colDef;\n    if (filterValueGetter) {\n      return this.executeFilterValueGetter(filterValueGetter, rowNode.data, column, rowNode, colDef);\n    }\n    return this.beans.valueSvc.getValue(column, rowNode);\n  }\n  executeFilterValueGetter(valueGetter, data, column, node, colDef) {\n    const { expressionSvc, valueSvc } = this.beans;\n    const params = _addGridCommonParams(this.gos, {\n      data,\n      node,\n      column,\n      colDef,\n      getValue: valueSvc.getValueCallback.bind(valueSvc, node)\n    });\n    if (typeof valueGetter === \"function\") {\n      return valueGetter(params);\n    }\n    return expressionSvc?.evaluate(valueGetter, params);\n  }\n};\n\n// packages/ag-grid-community/src/filter/floating/provided/readOnlyFloatingFilter.ts\nvar ReadOnlyFloatingFilterElement = {\n  tag: \"div\",\n  cls: \"ag-floating-filter-input\",\n  role: \"presentation\",\n  children: [\n    {\n      tag: \"ag-input-text-field\",\n      ref: \"eFloatingFilterText\"\n    }\n  ]\n};\nvar ReadOnlyFloatingFilter = class extends Component {\n  constructor() {\n    super(ReadOnlyFloatingFilterElement, [AgInputTextFieldSelector]);\n    this.eFloatingFilterText = RefPlaceholder;\n  }\n  init(params) {\n    this.params = params;\n    const displayName = this.beans.colNames.getDisplayNameForColumn(params.column, \"header\", true);\n    this.eFloatingFilterText.setDisabled(true).setInputAriaLabel(`${displayName} ${this.getLocaleTextFunc()(\"ariaFilterInput\", \"Filter Input\")}`);\n  }\n  onParentModelChanged(parentModel) {\n    if (parentModel == null) {\n      this.eFloatingFilterText.setValue(\"\");\n      return;\n    }\n    this.params.parentFilterInstance((filterInstance) => {\n      if (filterInstance.getModelAsString) {\n        const modelAsString = filterInstance.getModelAsString(parentModel);\n        this.eFloatingFilterText.setValue(modelAsString);\n      }\n    });\n  }\n  refresh(params) {\n    this.init(params);\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/optionsFactory.ts\nvar OptionsFactory = class {\n  constructor() {\n    this.customFilterOptions = {};\n  }\n  init(params, defaultOptions) {\n    this.filterOptions = params.filterOptions || defaultOptions;\n    this.mapCustomOptions();\n    this.selectDefaultItem(params);\n  }\n  mapCustomOptions() {\n    const { filterOptions } = this;\n    if (!filterOptions) {\n      return;\n    }\n    filterOptions.forEach((filterOption) => {\n      if (typeof filterOption === \"string\") {\n        return;\n      }\n      const requiredProperties = [[\"displayKey\"], [\"displayName\"], [\"predicate\", \"test\"]];\n      const propertyCheck = (keys) => {\n        if (!keys.some((key) => filterOption[key] != null)) {\n          _warn(72, { keys });\n          return false;\n        }\n        return true;\n      };\n      if (!requiredProperties.every(propertyCheck)) {\n        this.filterOptions = filterOptions.filter((v) => v === filterOption) || [];\n        return;\n      }\n      this.customFilterOptions[filterOption.displayKey] = filterOption;\n    });\n  }\n  selectDefaultItem(params) {\n    const { filterOptions } = this;\n    if (params.defaultOption) {\n      this.defaultOption = params.defaultOption;\n    } else if (filterOptions.length >= 1) {\n      const firstFilterOption = filterOptions[0];\n      if (typeof firstFilterOption === \"string\") {\n        this.defaultOption = firstFilterOption;\n      } else if (firstFilterOption.displayKey) {\n        this.defaultOption = firstFilterOption.displayKey;\n      } else {\n        _warn(73);\n      }\n    } else {\n      _warn(74);\n    }\n  }\n  getCustomOption(name) {\n    return this.customFilterOptions[name];\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/simpleFilterUtils.ts\nfunction removeItems(items, startPosition, deleteCount) {\n  return deleteCount == null ? items.splice(startPosition) : items.splice(startPosition, deleteCount);\n}\nfunction isBlank(cellValue) {\n  return cellValue == null || typeof cellValue === \"string\" && cellValue.trim().length === 0;\n}\nfunction getDefaultJoinOperator(defaultJoinOperator) {\n  return defaultJoinOperator === \"AND\" || defaultJoinOperator === \"OR\" ? defaultJoinOperator : \"AND\";\n}\nfunction evaluateCustomFilter(customFilterOption, values, cellValue) {\n  if (customFilterOption == null) {\n    return;\n  }\n  const { predicate } = customFilterOption;\n  if (predicate != null && !values.some((v) => v == null)) {\n    return predicate(values, cellValue);\n  }\n  return;\n}\nfunction validateAndUpdateConditions(conditions, maxNumConditions) {\n  let numConditions = conditions.length;\n  if (numConditions > maxNumConditions) {\n    conditions.splice(maxNumConditions);\n    _warn(78);\n    numConditions = maxNumConditions;\n  }\n  return numConditions;\n}\n\n// packages/ag-grid-community/src/filter/provided/simpleFilter.ts\nvar SimpleFilter = class extends ProvidedFilter {\n  constructor() {\n    super(...arguments);\n    this.eTypes = [];\n    this.eJoinOperatorPanels = [];\n    this.eJoinOperatorsAnd = [];\n    this.eJoinOperatorsOr = [];\n    this.eConditionBodies = [];\n    this.listener = () => this.onUiChanged();\n    this.lastUiCompletePosition = null;\n    this.joinOperatorId = 0;\n  }\n  getNumberOfInputs(type) {\n    const customOpts = this.optionsFactory.getCustomOption(type);\n    if (customOpts) {\n      const { numberOfInputs } = customOpts;\n      return numberOfInputs != null ? numberOfInputs : 1;\n    }\n    const zeroInputTypes = [\"empty\", \"notBlank\", \"blank\"];\n    if (type && zeroInputTypes.indexOf(type) >= 0) {\n      return 0;\n    } else if (type === \"inRange\") {\n      return 2;\n    }\n    return 1;\n  }\n  // floating filter calls this when user applies filter from floating filter\n  onFloatingFilterChanged(type, value) {\n    this.setTypeFromFloatingFilter(type);\n    this.setValueFromFloatingFilter(value);\n    this.onUiChanged(true);\n  }\n  setTypeFromFloatingFilter(type) {\n    this.eTypes.forEach((eType, position) => {\n      const value = position === 0 ? type : this.optionsFactory.defaultOption;\n      eType.setValue(value, true);\n    });\n  }\n  getModelFromUi() {\n    const conditions = this.getUiCompleteConditions();\n    if (conditions.length === 0) {\n      return null;\n    }\n    if (this.maxNumConditions > 1 && conditions.length > 1) {\n      return {\n        filterType: this.filterType,\n        operator: this.getJoinOperator(),\n        conditions\n      };\n    }\n    return conditions[0];\n  }\n  getConditionTypes() {\n    return this.eTypes.map((eType) => eType.getValue());\n  }\n  getConditionType(position) {\n    return this.eTypes[position].getValue();\n  }\n  getJoinOperator() {\n    const { eJoinOperatorsOr, defaultJoinOperator } = this;\n    return eJoinOperatorsOr.length === 0 ? defaultJoinOperator : eJoinOperatorsOr[0].getValue() === true ? \"OR\" : \"AND\";\n  }\n  areModelsEqual(a, b) {\n    if (!a && !b) {\n      return true;\n    }\n    if (!a && b || a && !b) {\n      return false;\n    }\n    const aIsSimple = !a.operator;\n    const bIsSimple = !b.operator;\n    const oneSimpleOneCombined = !aIsSimple && bIsSimple || aIsSimple && !bIsSimple;\n    if (oneSimpleOneCombined) {\n      return false;\n    }\n    let res;\n    if (aIsSimple) {\n      const aSimple = a;\n      const bSimple = b;\n      res = this.areSimpleModelsEqual(aSimple, bSimple);\n    } else {\n      const aCombined = a;\n      const bCombined = b;\n      res = aCombined.operator === bCombined.operator && _areEqual(\n        aCombined.conditions,\n        bCombined.conditions,\n        (aModel, bModel) => this.areSimpleModelsEqual(aModel, bModel)\n      );\n    }\n    return res;\n  }\n  shouldRefresh(newParams) {\n    const model = this.getModel();\n    const conditions = model ? model.conditions ?? [model] : null;\n    const newOptionsList = newParams.filterOptions?.map((option) => typeof option === \"string\" ? option : option.displayKey) ?? this.getDefaultFilterOptions();\n    const allConditionsExistInNewOptionsList = !conditions || conditions.every((condition) => newOptionsList.find((option) => option === condition.type) !== void 0);\n    if (!allConditionsExistInNewOptionsList) {\n      return false;\n    }\n    if (typeof newParams.maxNumConditions === \"number\" && conditions && conditions.length > newParams.maxNumConditions) {\n      return false;\n    }\n    return true;\n  }\n  refresh(newParams) {\n    if (!this.shouldRefresh(newParams)) {\n      return false;\n    }\n    const parentRefreshed = super.refresh(newParams);\n    if (!parentRefreshed) {\n      return false;\n    }\n    this.setParams(newParams);\n    this.removeConditionsAndOperators(0);\n    this.createOption();\n    this.setModel(this.getModel());\n    return true;\n  }\n  setModelIntoUi(model) {\n    const isCombined = model.operator;\n    if (isCombined) {\n      const combinedModel = model;\n      let conditions = combinedModel.conditions;\n      if (conditions == null) {\n        conditions = [];\n        _warn(77);\n      }\n      const numConditions = validateAndUpdateConditions(conditions, this.maxNumConditions);\n      const numPrevConditions = this.getNumConditions();\n      if (numConditions < numPrevConditions) {\n        this.removeConditionsAndOperators(numConditions);\n      } else if (numConditions > numPrevConditions) {\n        for (let i = numPrevConditions; i < numConditions; i++) {\n          this.createJoinOperatorPanel();\n          this.createOption();\n        }\n      }\n      const orChecked = combinedModel.operator === \"OR\";\n      this.eJoinOperatorsAnd.forEach((eJoinOperatorAnd) => eJoinOperatorAnd.setValue(!orChecked, true));\n      this.eJoinOperatorsOr.forEach((eJoinOperatorOr) => eJoinOperatorOr.setValue(orChecked, true));\n      conditions.forEach((condition, position) => {\n        this.eTypes[position].setValue(condition.type, true);\n        this.setConditionIntoUi(condition, position);\n      });\n    } else {\n      const simpleModel = model;\n      if (this.getNumConditions() > 1) {\n        this.removeConditionsAndOperators(1);\n      }\n      this.eTypes[0].setValue(simpleModel.type, true);\n      this.setConditionIntoUi(simpleModel, 0);\n    }\n    this.lastUiCompletePosition = this.getNumConditions() - 1;\n    this.createMissingConditionsAndOperators();\n    this.onUiChanged();\n    return AgPromise.resolve();\n  }\n  doesFilterPass(params) {\n    const model = this.getModel();\n    if (model == null) {\n      return true;\n    }\n    const { operator } = model;\n    const models = [];\n    if (operator) {\n      const combinedModel = model;\n      models.push(...combinedModel.conditions ?? []);\n    } else {\n      models.push(model);\n    }\n    const combineFunction = operator && operator === \"OR\" ? \"some\" : \"every\";\n    return models[combineFunction]((m) => this.individualConditionPasses(params, m));\n  }\n  setParams(params) {\n    super.setParams(params);\n    this.setNumConditions(params);\n    this.defaultJoinOperator = getDefaultJoinOperator(params.defaultJoinOperator);\n    this.filterPlaceholder = params.filterPlaceholder;\n    this.optionsFactory = new OptionsFactory();\n    this.optionsFactory.init(params, this.getDefaultFilterOptions());\n    this.createFilterListOptions();\n    this.createOption();\n    this.createMissingConditionsAndOperators();\n    if (this.isReadOnly()) {\n      this.eFilterBody.setAttribute(\"tabindex\", \"-1\");\n    }\n  }\n  setNumConditions(params) {\n    let maxNumConditions = params.maxNumConditions ?? 2;\n    if (maxNumConditions < 1) {\n      _warn(79);\n      maxNumConditions = 1;\n    }\n    this.maxNumConditions = maxNumConditions;\n    let numAlwaysVisibleConditions = params.numAlwaysVisibleConditions ?? 1;\n    if (numAlwaysVisibleConditions < 1) {\n      _warn(80);\n      numAlwaysVisibleConditions = 1;\n    }\n    if (numAlwaysVisibleConditions > maxNumConditions) {\n      _warn(81);\n      numAlwaysVisibleConditions = maxNumConditions;\n    }\n    this.numAlwaysVisibleConditions = numAlwaysVisibleConditions;\n  }\n  createOption() {\n    const eType = this.createManagedBean(new AgSelect());\n    this.eTypes.push(eType);\n    eType.addCss(\"ag-filter-select\");\n    this.eFilterBody.appendChild(eType.getGui());\n    const eConditionBody = this.createValueElement();\n    this.eConditionBodies.push(eConditionBody);\n    this.eFilterBody.appendChild(eConditionBody);\n    this.putOptionsIntoDropdown(eType);\n    this.resetType(eType);\n    const position = this.getNumConditions() - 1;\n    this.forEachPositionInput(position, (element) => this.resetInput(element));\n    this.addChangedListeners(eType, position);\n  }\n  createJoinOperatorPanel() {\n    const eJoinOperatorPanel = _createElement({ tag: \"div\", cls: \"ag-filter-condition\" });\n    this.eJoinOperatorPanels.push(eJoinOperatorPanel);\n    const eJoinOperatorAnd = this.createJoinOperator(this.eJoinOperatorsAnd, eJoinOperatorPanel, \"and\");\n    const eJoinOperatorOr = this.createJoinOperator(this.eJoinOperatorsOr, eJoinOperatorPanel, \"or\");\n    this.eFilterBody.appendChild(eJoinOperatorPanel);\n    const index = this.eJoinOperatorPanels.length - 1;\n    const uniqueGroupId = this.joinOperatorId++;\n    this.resetJoinOperatorAnd(eJoinOperatorAnd, index, uniqueGroupId);\n    this.resetJoinOperatorOr(eJoinOperatorOr, index, uniqueGroupId);\n    if (!this.isReadOnly()) {\n      eJoinOperatorAnd.onValueChange(this.listener);\n      eJoinOperatorOr.onValueChange(this.listener);\n    }\n  }\n  createJoinOperator(eJoinOperators, eJoinOperatorPanel, andOr) {\n    const eJoinOperator = this.createManagedBean(new AgRadioButton());\n    eJoinOperators.push(eJoinOperator);\n    const baseClass = \"ag-filter-condition-operator\";\n    eJoinOperator.addCss(baseClass);\n    eJoinOperator.addCss(`${baseClass}-${andOr}`);\n    eJoinOperatorPanel.appendChild(eJoinOperator.getGui());\n    return eJoinOperator;\n  }\n  createFilterListOptions() {\n    this.filterListOptions = this.optionsFactory.filterOptions.map(\n      (option) => typeof option === \"string\" ? this.createBoilerplateListOption(option) : this.createCustomListOption(option)\n    );\n  }\n  putOptionsIntoDropdown(eType) {\n    const { filterListOptions } = this;\n    filterListOptions.forEach((listOption) => {\n      eType.addOption(listOption);\n    });\n    eType.setDisabled(filterListOptions.length <= 1);\n  }\n  createBoilerplateListOption(option) {\n    return { value: option, text: this.translate(option) };\n  }\n  createCustomListOption(option) {\n    const { displayKey } = option;\n    const customOption = this.optionsFactory.getCustomOption(option.displayKey);\n    return {\n      value: displayKey,\n      text: customOption ? this.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) : this.translate(displayKey)\n    };\n  }\n  createBodyTemplate() {\n    return null;\n  }\n  getAgComponents() {\n    return [];\n  }\n  getCssIdentifier() {\n    return \"simple-filter\";\n  }\n  updateUiVisibility() {\n    const joinOperator = this.getJoinOperator();\n    this.updateNumConditions();\n    this.updateConditionStatusesAndValues(this.lastUiCompletePosition, joinOperator);\n  }\n  updateNumConditions() {\n    let lastUiCompletePosition = -1;\n    let areAllConditionsUiComplete = true;\n    for (let position = 0; position < this.getNumConditions(); position++) {\n      if (this.isConditionUiComplete(position)) {\n        lastUiCompletePosition = position;\n      } else {\n        areAllConditionsUiComplete = false;\n      }\n    }\n    if (this.shouldAddNewConditionAtEnd(areAllConditionsUiComplete)) {\n      this.createJoinOperatorPanel();\n      this.createOption();\n    } else {\n      const activePosition = this.lastUiCompletePosition ?? this.getNumConditions() - 2;\n      if (lastUiCompletePosition < activePosition) {\n        this.removeConditionsAndOperators(activePosition + 1);\n        const removeStartPosition = lastUiCompletePosition + 1;\n        const numConditionsToRemove = activePosition - removeStartPosition;\n        if (numConditionsToRemove > 0) {\n          this.removeConditionsAndOperators(removeStartPosition, numConditionsToRemove);\n        }\n        this.createMissingConditionsAndOperators();\n      }\n    }\n    this.lastUiCompletePosition = lastUiCompletePosition;\n  }\n  updateConditionStatusesAndValues(lastUiCompletePosition, joinOperator) {\n    this.eTypes.forEach((eType, position) => {\n      const disabled = this.isConditionDisabled(position, lastUiCompletePosition);\n      eType.setDisabled(disabled || this.filterListOptions.length <= 1);\n      if (position === 1) {\n        _setDisabled(this.eJoinOperatorPanels[0], disabled);\n        this.eJoinOperatorsAnd[0].setDisabled(disabled);\n        this.eJoinOperatorsOr[0].setDisabled(disabled);\n      }\n    });\n    this.eConditionBodies.forEach((element, index) => {\n      _setDisplayed(element, this.isConditionBodyVisible(index));\n    });\n    const orChecked = (joinOperator ?? this.getJoinOperator()) === \"OR\";\n    this.eJoinOperatorsAnd.forEach((eJoinOperatorAnd) => {\n      eJoinOperatorAnd.setValue(!orChecked, true);\n    });\n    this.eJoinOperatorsOr.forEach((eJoinOperatorOr) => {\n      eJoinOperatorOr.setValue(orChecked, true);\n    });\n    this.forEachInput((element, index, position, numberOfInputs) => {\n      this.setElementDisplayed(element, index < numberOfInputs);\n      this.setElementDisabled(element, this.isConditionDisabled(position, lastUiCompletePosition));\n    });\n    this.resetPlaceholder();\n  }\n  shouldAddNewConditionAtEnd(areAllConditionsUiComplete) {\n    return areAllConditionsUiComplete && this.getNumConditions() < this.maxNumConditions && !this.isReadOnly();\n  }\n  removeConditionsAndOperators(startPosition, deleteCount) {\n    if (startPosition >= this.getNumConditions()) {\n      return;\n    }\n    const { eTypes, eConditionBodies, eJoinOperatorPanels, eJoinOperatorsAnd, eJoinOperatorsOr } = this;\n    this.removeComponents(eTypes, startPosition, deleteCount);\n    this.removeElements(eConditionBodies, startPosition, deleteCount);\n    this.removeValueElements(startPosition, deleteCount);\n    const joinOperatorIndex = Math.max(startPosition - 1, 0);\n    this.removeElements(eJoinOperatorPanels, joinOperatorIndex, deleteCount);\n    this.removeComponents(eJoinOperatorsAnd, joinOperatorIndex, deleteCount);\n    this.removeComponents(eJoinOperatorsOr, joinOperatorIndex, deleteCount);\n  }\n  removeElements(elements, startPosition, deleteCount) {\n    const removedElements = removeItems(elements, startPosition, deleteCount);\n    removedElements.forEach((element) => _removeFromParent(element));\n  }\n  removeComponents(components, startPosition, deleteCount) {\n    const removedComponents = removeItems(components, startPosition, deleteCount);\n    removedComponents.forEach((comp) => {\n      _removeFromParent(comp.getGui());\n      this.destroyBean(comp);\n    });\n  }\n  afterGuiAttached(params) {\n    super.afterGuiAttached(params);\n    this.resetPlaceholder();\n    if (!params?.suppressFocus) {\n      const { eFilterBody, eTypes } = this;\n      let elementToFocus;\n      if (!this.isReadOnly()) {\n        const firstInput = this.getInputs(0)[0];\n        if (firstInput instanceof AgAbstractInputField && this.isConditionBodyVisible(0)) {\n          elementToFocus = firstInput.getInputElement();\n        } else {\n          elementToFocus = eTypes[0]?.getFocusableElement();\n        }\n      }\n      (elementToFocus ?? eFilterBody).focus({ preventScroll: true });\n    }\n  }\n  afterGuiDetached() {\n    super.afterGuiDetached();\n    const appliedModel = this.getModel();\n    this.resetUiToActiveModel(appliedModel);\n    let lastUiCompletePosition = -1;\n    let updatedLastUiCompletePosition = -1;\n    let conditionsRemoved = false;\n    const joinOperator = this.getJoinOperator();\n    for (let position = this.getNumConditions() - 1; position >= 0; position--) {\n      if (this.isConditionUiComplete(position)) {\n        if (lastUiCompletePosition === -1) {\n          lastUiCompletePosition = position;\n          updatedLastUiCompletePosition = position;\n        }\n      } else {\n        const shouldRemovePositionAtEnd = position >= this.numAlwaysVisibleConditions && !this.isConditionUiComplete(position - 1);\n        const positionBeforeLastUiCompletePosition = position < lastUiCompletePosition;\n        if (shouldRemovePositionAtEnd || positionBeforeLastUiCompletePosition) {\n          this.removeConditionsAndOperators(position, 1);\n          conditionsRemoved = true;\n          if (positionBeforeLastUiCompletePosition) {\n            updatedLastUiCompletePosition--;\n          }\n        }\n      }\n    }\n    let shouldUpdateConditionStatusesAndValues = false;\n    if (this.getNumConditions() < this.numAlwaysVisibleConditions) {\n      this.createMissingConditionsAndOperators();\n      shouldUpdateConditionStatusesAndValues = true;\n    }\n    if (this.shouldAddNewConditionAtEnd(updatedLastUiCompletePosition === this.getNumConditions() - 1)) {\n      this.createJoinOperatorPanel();\n      this.createOption();\n      shouldUpdateConditionStatusesAndValues = true;\n    }\n    if (shouldUpdateConditionStatusesAndValues) {\n      this.updateConditionStatusesAndValues(updatedLastUiCompletePosition, joinOperator);\n    }\n    if (conditionsRemoved) {\n      this.updateJoinOperatorsDisabled();\n    }\n    this.lastUiCompletePosition = updatedLastUiCompletePosition;\n  }\n  getPlaceholderText(defaultPlaceholder, position) {\n    let placeholder = this.translate(defaultPlaceholder);\n    if (typeof this.filterPlaceholder === \"function\") {\n      const filterOptionKey = this.eTypes[position].getValue();\n      const filterOption = this.translate(filterOptionKey);\n      placeholder = this.filterPlaceholder({\n        filterOptionKey,\n        filterOption,\n        placeholder\n      });\n    } else if (typeof this.filterPlaceholder === \"string\") {\n      placeholder = this.filterPlaceholder;\n    }\n    return placeholder;\n  }\n  // allow sub-classes to reset HTML placeholders after UI update.\n  resetPlaceholder() {\n    const globalTranslate = this.getLocaleTextFunc();\n    this.forEachInput((element, index, position, numberOfInputs) => {\n      if (!(element instanceof AgAbstractInputField)) {\n        return;\n      }\n      const placeholder = index === 0 && numberOfInputs > 1 ? \"inRangeStart\" : index === 0 ? \"filterOoo\" : \"inRangeEnd\";\n      const ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate(\"ariaFilterFromValue\", \"Filter from value\") : index === 0 ? globalTranslate(\"ariaFilterValue\", \"Filter Value\") : globalTranslate(\"ariaFilterToValue\", \"Filter to Value\");\n      element.setInputPlaceholder(this.getPlaceholderText(placeholder, position));\n      element.setInputAriaLabel(ariaLabel);\n    });\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  setElementValue(element, value, fromFloatingFilter) {\n    if (element instanceof AgAbstractInputField) {\n      element.setValue(value != null ? String(value) : null, true);\n    }\n  }\n  setElementDisplayed(element, displayed) {\n    if (element instanceof Component) {\n      _setDisplayed(element.getGui(), displayed);\n    }\n  }\n  setElementDisabled(element, disabled) {\n    if (element instanceof Component) {\n      _setDisabled(element.getGui(), disabled);\n    }\n  }\n  attachElementOnChange(element, listener) {\n    if (element instanceof AgAbstractInputField) {\n      element.onValueChange(listener);\n    }\n  }\n  forEachInput(cb) {\n    this.getConditionTypes().forEach((type, position) => {\n      this.forEachPositionTypeInput(position, type, cb);\n    });\n  }\n  forEachPositionInput(position, cb) {\n    const type = this.getConditionType(position);\n    this.forEachPositionTypeInput(position, type, cb);\n  }\n  forEachPositionTypeInput(position, type, cb) {\n    const numberOfInputs = this.getNumberOfInputs(type);\n    const inputs = this.getInputs(position);\n    for (let index = 0; index < inputs.length; index++) {\n      const input = inputs[index];\n      if (input != null) {\n        cb(input, index, position, numberOfInputs);\n      }\n    }\n  }\n  isConditionDisabled(position, lastUiCompletePosition) {\n    if (this.isReadOnly()) {\n      return true;\n    }\n    if (position === 0) {\n      return false;\n    }\n    return position > lastUiCompletePosition + 1;\n  }\n  isConditionBodyVisible(position) {\n    const type = this.getConditionType(position);\n    const numberOfInputs = this.getNumberOfInputs(type);\n    return numberOfInputs > 0;\n  }\n  // returns true if the UI represents a working filter, eg all parts are filled out.\n  // eg if text filter and textfield blank then returns false.\n  isConditionUiComplete(position) {\n    if (position >= this.getNumConditions()) {\n      return false;\n    }\n    const type = this.getConditionType(position);\n    if (type === \"empty\") {\n      return false;\n    }\n    if (this.getValues(position).some((v) => v == null)) {\n      return false;\n    }\n    return true;\n  }\n  getNumConditions() {\n    return this.eTypes.length;\n  }\n  getUiCompleteConditions() {\n    const conditions = [];\n    for (let position = 0; position < this.getNumConditions(); position++) {\n      if (this.isConditionUiComplete(position)) {\n        conditions.push(this.createCondition(position));\n      }\n    }\n    return conditions;\n  }\n  createMissingConditionsAndOperators() {\n    if (this.isReadOnly()) {\n      return;\n    }\n    for (let i = this.getNumConditions(); i < this.numAlwaysVisibleConditions; i++) {\n      this.createJoinOperatorPanel();\n      this.createOption();\n    }\n  }\n  resetUiToDefaults(silent) {\n    this.removeConditionsAndOperators(this.isReadOnly() ? 1 : this.numAlwaysVisibleConditions);\n    this.eTypes.forEach((eType) => this.resetType(eType));\n    this.eJoinOperatorsAnd.forEach(\n      (eJoinOperatorAnd, index) => this.resetJoinOperatorAnd(eJoinOperatorAnd, index, this.joinOperatorId + index)\n    );\n    this.eJoinOperatorsOr.forEach(\n      (eJoinOperatorOr, index) => this.resetJoinOperatorOr(eJoinOperatorOr, index, this.joinOperatorId + index)\n    );\n    this.joinOperatorId++;\n    this.forEachInput((element) => this.resetInput(element));\n    this.resetPlaceholder();\n    this.createMissingConditionsAndOperators();\n    this.lastUiCompletePosition = null;\n    if (!silent) {\n      this.onUiChanged();\n    }\n    return AgPromise.resolve();\n  }\n  resetType(eType) {\n    const translate = this.getLocaleTextFunc();\n    const filteringLabel = translate(\"ariaFilteringOperator\", \"Filtering operator\");\n    eType.setValue(this.optionsFactory.defaultOption, true).setAriaLabel(filteringLabel).setDisabled(this.isReadOnly() || this.filterListOptions.length <= 1);\n  }\n  resetJoinOperatorAnd(eJoinOperatorAnd, index, uniqueGroupId) {\n    this.resetJoinOperator(\n      eJoinOperatorAnd,\n      index,\n      this.defaultJoinOperator === \"AND\",\n      this.translate(\"andCondition\"),\n      uniqueGroupId\n    );\n  }\n  resetJoinOperatorOr(eJoinOperatorOr, index, uniqueGroupId) {\n    this.resetJoinOperator(\n      eJoinOperatorOr,\n      index,\n      this.defaultJoinOperator === \"OR\",\n      this.translate(\"orCondition\"),\n      uniqueGroupId\n    );\n  }\n  resetJoinOperator(eJoinOperator, index, value, label, uniqueGroupId) {\n    this.updateJoinOperatorDisabled(\n      eJoinOperator.setValue(value, true).setName(`ag-simple-filter-and-or-${this.getCompId()}-${uniqueGroupId}`).setLabel(label),\n      index\n    );\n  }\n  updateJoinOperatorsDisabled() {\n    const updater = (eJoinOperator, index) => this.updateJoinOperatorDisabled(eJoinOperator, index);\n    this.eJoinOperatorsAnd.forEach(updater);\n    this.eJoinOperatorsOr.forEach(updater);\n  }\n  updateJoinOperatorDisabled(eJoinOperator, index) {\n    eJoinOperator.setDisabled(this.isReadOnly() || index > 0);\n  }\n  resetInput(element) {\n    this.setElementValue(element, null);\n    this.setElementDisabled(element, this.isReadOnly());\n  }\n  // puts model values into the UI\n  setConditionIntoUi(model, position) {\n    const values = this.mapValuesFromModel(model);\n    this.forEachInput((element, index, elPosition) => {\n      if (elPosition !== position) {\n        return;\n      }\n      this.setElementValue(element, values[index] != null ? values[index] : null);\n    });\n  }\n  // after floating filter changes, this sets the 'value' section. this is implemented by the base class\n  // (as that's where value is controlled), the 'type' part from the floating filter is dealt with in this class.\n  setValueFromFloatingFilter(value) {\n    this.forEachInput((element, index, position) => {\n      this.setElementValue(element, index === 0 && position === 0 ? value : null, true);\n    });\n  }\n  addChangedListeners(eType, position) {\n    if (this.isReadOnly()) {\n      return;\n    }\n    eType.onValueChange(this.listener);\n    this.forEachPositionInput(position, (element) => {\n      this.attachElementOnChange(element, this.listener);\n    });\n  }\n  /** returns true if the row passes the said condition */\n  individualConditionPasses(params, filterModel) {\n    const cellValue = this.getCellValue(params.node);\n    const values = this.mapValuesFromModel(filterModel);\n    const customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);\n    const customFilterResult = evaluateCustomFilter(customFilterOption, values, cellValue);\n    if (customFilterResult != null) {\n      return customFilterResult;\n    }\n    if (cellValue == null) {\n      return this.evaluateNullValue(filterModel.type);\n    }\n    return this.evaluateNonNullValue(values, cellValue, filterModel, params);\n  }\n  hasInvalidInputs() {\n    return false;\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/scalarFilter.ts\nvar ScalarFilter = class extends SimpleFilter {\n  setParams(params) {\n    super.setParams(params);\n    this.scalarFilterParams = params;\n  }\n  evaluateNullValue(filterType) {\n    const {\n      includeBlanksInEquals,\n      includeBlanksInNotEqual,\n      includeBlanksInGreaterThan,\n      includeBlanksInLessThan,\n      includeBlanksInRange\n    } = this.scalarFilterParams;\n    switch (filterType) {\n      case \"equals\":\n        if (includeBlanksInEquals) {\n          return true;\n        }\n        break;\n      case \"notEqual\":\n        if (includeBlanksInNotEqual) {\n          return true;\n        }\n        break;\n      case \"greaterThan\":\n      case \"greaterThanOrEqual\":\n        if (includeBlanksInGreaterThan) {\n          return true;\n        }\n        break;\n      case \"lessThan\":\n      case \"lessThanOrEqual\":\n        if (includeBlanksInLessThan) {\n          return true;\n        }\n        break;\n      case \"inRange\":\n        if (includeBlanksInRange) {\n          return true;\n        }\n        break;\n      case \"blank\":\n        return true;\n      case \"notBlank\":\n        return false;\n    }\n    return false;\n  }\n  evaluateNonNullValue(values, cellValue, filterModel) {\n    const type = filterModel.type;\n    if (!this.isValid(cellValue)) {\n      return type === \"notEqual\" || type === \"notBlank\";\n    }\n    const comparator = this.comparator();\n    const compareResult = values[0] != null ? comparator(values[0], cellValue) : 0;\n    switch (type) {\n      case \"equals\":\n        return compareResult === 0;\n      case \"notEqual\":\n        return compareResult !== 0;\n      case \"greaterThan\":\n        return compareResult > 0;\n      case \"greaterThanOrEqual\":\n        return compareResult >= 0;\n      case \"lessThan\":\n        return compareResult < 0;\n      case \"lessThanOrEqual\":\n        return compareResult <= 0;\n      case \"inRange\": {\n        const compareToResult = comparator(values[1], cellValue);\n        return this.scalarFilterParams.inRangeInclusive ? compareResult >= 0 && compareToResult <= 0 : compareResult > 0 && compareToResult < 0;\n      }\n      case \"blank\":\n        return isBlank(cellValue);\n      case \"notBlank\":\n        return !isBlank(cellValue);\n      default:\n        _warn(76, { filterModelType: type });\n        return true;\n    }\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateCompWrapper.ts\nvar DateCompWrapper = class {\n  constructor(context, userCompFactory, colDef, dateComponentParams, eParent, onReady) {\n    this.alive = true;\n    this.context = context;\n    this.eParent = eParent;\n    const compDetails = _getDateCompDetails(userCompFactory, colDef, dateComponentParams);\n    if (!compDetails) {\n      return;\n    }\n    compDetails.newAgStackInstance().then((dateComp) => {\n      if (!this.alive) {\n        context.destroyBean(dateComp);\n        return;\n      }\n      this.dateComp = dateComp;\n      if (!dateComp) {\n        return;\n      }\n      eParent.appendChild(dateComp.getGui());\n      dateComp?.afterGuiAttached?.();\n      const { tempValue, disabled } = this;\n      if (tempValue) {\n        dateComp.setDate(tempValue);\n      }\n      if (disabled != null) {\n        dateComp.setDisabled?.(disabled);\n      }\n      onReady?.(this);\n    });\n  }\n  destroy() {\n    this.alive = false;\n    this.dateComp = this.context.destroyBean(this.dateComp);\n  }\n  getDate() {\n    return this.dateComp ? this.dateComp.getDate() : this.tempValue;\n  }\n  setDate(value) {\n    const dateComp = this.dateComp;\n    if (dateComp) {\n      dateComp.setDate(value);\n    } else {\n      this.tempValue = value;\n    }\n  }\n  setDisabled(disabled) {\n    const dateComp = this.dateComp;\n    if (dateComp) {\n      dateComp.setDisabled?.(disabled);\n    } else {\n      this.disabled = disabled;\n    }\n  }\n  setDisplayed(displayed) {\n    _setDisplayed(this.eParent, displayed);\n  }\n  setInputPlaceholder(placeholder) {\n    this.dateComp?.setInputPlaceholder?.(placeholder);\n  }\n  setInputAriaLabel(label) {\n    this.dateComp?.setInputAriaLabel?.(label);\n  }\n  afterGuiAttached(params) {\n    this.dateComp?.afterGuiAttached?.(params);\n  }\n  updateParams(params) {\n    this.dateComp?.refresh?.(params);\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateFilterConstants.ts\nvar DEFAULT_DATE_FILTER_OPTIONS = [\n  \"equals\",\n  \"notEqual\",\n  \"lessThan\",\n  \"greaterThan\",\n  \"inRange\",\n  \"blank\",\n  \"notBlank\"\n];\n\n// packages/ag-grid-community/src/filter/provided/simpleFilterModelFormatter.ts\nvar SimpleFilterModelFormatter = class {\n  constructor(getLocaleTextFunc, optionsFactory, valueFormatter) {\n    this.getLocaleTextFunc = getLocaleTextFunc;\n    this.optionsFactory = optionsFactory;\n    this.valueFormatter = valueFormatter;\n  }\n  // used by:\n  // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n  // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n  getModelAsString(model) {\n    if (!model) {\n      return null;\n    }\n    const isCombined = model.operator != null;\n    const translate = this.getLocaleTextFunc();\n    if (isCombined) {\n      const combinedModel = model;\n      const conditions = combinedModel.conditions ?? [];\n      const customOptions = conditions.map((condition) => this.getModelAsString(condition));\n      const joinOperatorTranslateKey = combinedModel.operator === \"AND\" ? \"andCondition\" : \"orCondition\";\n      return customOptions.join(\n        ` ${translate(joinOperatorTranslateKey, FILTER_LOCALE_TEXT[joinOperatorTranslateKey])} `\n      );\n    } else if (model.type === \"blank\" || model.type === \"notBlank\") {\n      return translate(model.type, model.type);\n    } else {\n      const condition = model;\n      const customOption = this.optionsFactory.getCustomOption(condition.type);\n      const { displayKey, displayName, numberOfInputs } = customOption || {};\n      if (displayKey && displayName && numberOfInputs === 0) {\n        translate(displayKey, displayName);\n        return displayName;\n      }\n      return this.conditionToString(condition, customOption);\n    }\n  }\n  updateParams(params) {\n    this.optionsFactory = params.optionsFactory;\n  }\n  formatValue(value) {\n    const valueFormatter = this.valueFormatter;\n    return valueFormatter ? valueFormatter(value ?? null) ?? \"\" : String(value);\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateFilterModelFormatter.ts\nvar DateFilterModelFormatter = class extends SimpleFilterModelFormatter {\n  constructor(dateFilterParams, getLocaleTextFunc, optionsFactory) {\n    super(getLocaleTextFunc, optionsFactory);\n    this.dateFilterParams = dateFilterParams;\n  }\n  conditionToString(condition, options) {\n    const { type } = condition;\n    const { numberOfInputs } = options || {};\n    const isRange = type == \"inRange\" || numberOfInputs === 2;\n    const dateFrom = _parseDateTimeFromString(condition.dateFrom);\n    const dateTo = _parseDateTimeFromString(condition.dateTo);\n    const format = this.dateFilterParams.inRangeFloatingFilterDateFormat;\n    if (isRange) {\n      const formattedFrom = dateFrom !== null ? _dateToFormattedString(dateFrom, format) : \"null\";\n      const formattedTo = dateTo !== null ? _dateToFormattedString(dateTo, format) : \"null\";\n      return `${formattedFrom}-${formattedTo}`;\n    }\n    if (dateFrom != null) {\n      return _dateToFormattedString(dateFrom, format);\n    }\n    return `${type}`;\n  }\n  updateParams(params) {\n    super.updateParams(params);\n    this.dateFilterParams = params.dateFilterParams;\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateFilter.ts\nvar DEFAULT_MIN_YEAR = 1e3;\nvar DEFAULT_MAX_YEAR = Infinity;\nvar DateFilter = class extends ScalarFilter {\n  constructor() {\n    super(\"dateFilter\");\n    this.eConditionPanelsFrom = [];\n    this.eConditionPanelsTo = [];\n    this.dateConditionFromComps = [];\n    this.dateConditionToComps = [];\n    this.minValidYear = DEFAULT_MIN_YEAR;\n    this.maxValidYear = DEFAULT_MAX_YEAR;\n    this.minValidDate = null;\n    this.maxValidDate = null;\n    this.filterType = \"date\";\n  }\n  afterGuiAttached(params) {\n    super.afterGuiAttached(params);\n    this.dateConditionFromComps[0].afterGuiAttached(params);\n  }\n  mapValuesFromModel(filterModel) {\n    const { dateFrom, dateTo, type } = filterModel || {};\n    return [\n      dateFrom && _parseDateTimeFromString(dateFrom) || null,\n      dateTo && _parseDateTimeFromString(dateTo) || null\n    ].slice(0, this.getNumberOfInputs(type));\n  }\n  comparator() {\n    return this.dateFilterParams.comparator ?? defaultDateComparator;\n  }\n  isValid(value) {\n    const isValidDate2 = this.dateFilterParams.isValidDate;\n    return !isValidDate2 || isValidDate2(value);\n  }\n  setParams(params) {\n    this.dateFilterParams = params;\n    super.setParams(params);\n    const yearParser = (param, fallback) => {\n      if (params[param] != null) {\n        if (!isNaN(params[param])) {\n          return params[param] == null ? fallback : Number(params[param]);\n        } else {\n          _warn(82, { param });\n        }\n      }\n      return fallback;\n    };\n    this.minValidYear = yearParser(\"minValidYear\", DEFAULT_MIN_YEAR);\n    this.maxValidYear = yearParser(\"maxValidYear\", DEFAULT_MAX_YEAR);\n    if (this.minValidYear > this.maxValidYear) {\n      _warn(83);\n    }\n    this.minValidDate = params.minValidDate ? params.minValidDate instanceof Date ? params.minValidDate : _parseDateTimeFromString(params.minValidDate) : null;\n    this.maxValidDate = params.maxValidDate ? params.maxValidDate instanceof Date ? params.maxValidDate : _parseDateTimeFromString(params.maxValidDate) : null;\n    if (this.minValidDate && this.maxValidDate && this.minValidDate > this.maxValidDate) {\n      _warn(84);\n    }\n    this.filterModelFormatter = new DateFilterModelFormatter(\n      this.dateFilterParams,\n      this.getLocaleTextFunc.bind(this),\n      this.optionsFactory\n    );\n  }\n  createDateCompWrapper(element) {\n    const {\n      beans: { userCompFactory, context, gos },\n      dateFilterParams\n    } = this;\n    const dateCompWrapper = new DateCompWrapper(\n      context,\n      userCompFactory,\n      dateFilterParams.colDef,\n      _addGridCommonParams(gos, {\n        onDateChanged: () => this.onUiChanged(),\n        filterParams: dateFilterParams,\n        location: \"filter\"\n      }),\n      element\n    );\n    this.addDestroyFunc(() => dateCompWrapper.destroy());\n    return dateCompWrapper;\n  }\n  setElementValue(element, value) {\n    element.setDate(value);\n  }\n  setElementDisplayed(element, displayed) {\n    element.setDisplayed(displayed);\n  }\n  setElementDisabled(element, disabled) {\n    element.setDisabled(disabled);\n  }\n  getDefaultFilterOptions() {\n    return DEFAULT_DATE_FILTER_OPTIONS;\n  }\n  createValueElement() {\n    const eCondition = _createElement({ tag: \"div\", cls: \"ag-filter-body\" });\n    this.createFromToElement(eCondition, this.eConditionPanelsFrom, this.dateConditionFromComps, \"from\");\n    this.createFromToElement(eCondition, this.eConditionPanelsTo, this.dateConditionToComps, \"to\");\n    return eCondition;\n  }\n  createFromToElement(eCondition, eConditionPanels, dateConditionComps, fromTo) {\n    const eConditionPanel = _createElement({ tag: \"div\", cls: `ag-filter-${fromTo} ag-filter-date-${fromTo}` });\n    eConditionPanels.push(eConditionPanel);\n    eCondition.appendChild(eConditionPanel);\n    dateConditionComps.push(this.createDateCompWrapper(eConditionPanel));\n  }\n  removeValueElements(startPosition, deleteCount) {\n    this.removeDateComps(this.dateConditionFromComps, startPosition, deleteCount);\n    this.removeDateComps(this.dateConditionToComps, startPosition, deleteCount);\n    removeItems(this.eConditionPanelsFrom, startPosition, deleteCount);\n    removeItems(this.eConditionPanelsTo, startPosition, deleteCount);\n  }\n  removeDateComps(components, startPosition, deleteCount) {\n    const removedComponents = removeItems(components, startPosition, deleteCount);\n    removedComponents.forEach((comp) => comp.destroy());\n  }\n  isValidDateValue(value) {\n    if (value === null) {\n      return false;\n    }\n    const { minValidDate, maxValidDate, minValidYear, maxValidYear } = this;\n    if (minValidDate) {\n      if (value < minValidDate) {\n        return false;\n      }\n    } else {\n      if (value.getUTCFullYear() < minValidYear) {\n        return false;\n      }\n    }\n    if (maxValidDate) {\n      if (value > maxValidDate) {\n        return false;\n      }\n    } else {\n      if (value.getUTCFullYear() > maxValidYear) {\n        return false;\n      }\n    }\n    return true;\n  }\n  isConditionUiComplete(position) {\n    if (!super.isConditionUiComplete(position)) {\n      return false;\n    }\n    let valid = true;\n    this.forEachInput((element, index, elPosition, numberOfInputs) => {\n      if (elPosition !== position || !valid || index >= numberOfInputs) {\n        return;\n      }\n      valid = valid && this.isValidDateValue(element.getDate());\n    });\n    return valid;\n  }\n  areSimpleModelsEqual(aSimple, bSimple) {\n    return aSimple.dateFrom === bSimple.dateFrom && aSimple.dateTo === bSimple.dateTo && aSimple.type === bSimple.type;\n  }\n  createCondition(position) {\n    const type = this.getConditionType(position);\n    const model = {};\n    const values = this.getValues(position);\n    if (values.length > 0) {\n      model.dateFrom = _serialiseDate(values[0]);\n    }\n    if (values.length > 1) {\n      model.dateTo = _serialiseDate(values[1]);\n    }\n    return {\n      dateFrom: null,\n      dateTo: null,\n      filterType: this.filterType,\n      type,\n      ...model\n    };\n  }\n  resetPlaceholder() {\n    const globalTranslate = this.getLocaleTextFunc();\n    const placeholder = this.translate(\"dateFormatOoo\");\n    const ariaLabel = globalTranslate(\"ariaFilterValue\", \"Filter Value\");\n    this.forEachInput((element) => {\n      element.setInputPlaceholder(placeholder);\n      element.setInputAriaLabel(ariaLabel);\n    });\n  }\n  getInputs(position) {\n    const { dateConditionFromComps, dateConditionToComps } = this;\n    if (position >= dateConditionFromComps.length) {\n      return [null, null];\n    }\n    return [dateConditionFromComps[position], dateConditionToComps[position]];\n  }\n  getValues(position) {\n    const result = [];\n    this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n      if (index < numberOfInputs) {\n        result.push(element.getDate());\n      }\n    });\n    return result;\n  }\n  translate(key) {\n    if (key === \"lessThan\") {\n      return super.translate(\"before\");\n    }\n    if (key === \"greaterThan\") {\n      return super.translate(\"after\");\n    }\n    return super.translate(key);\n  }\n  getModelAsString(model) {\n    return this.filterModelFormatter.getModelAsString(model) ?? \"\";\n  }\n};\nfunction defaultDateComparator(filterDate, cellValue) {\n  const cellAsDate = cellValue;\n  if (cellAsDate < filterDate) {\n    return -1;\n  }\n  if (cellAsDate > filterDate) {\n    return 1;\n  }\n  return 0;\n}\n\n// packages/ag-grid-community/src/filter/floating/provided/simpleFloatingFilter.ts\nvar SimpleFloatingFilter = class extends Component {\n  constructor() {\n    super(...arguments);\n    this.defaultDebounceMs = 0;\n  }\n  setLastTypeFromModel(model) {\n    if (!model) {\n      this.lastType = this.optionsFactory.defaultOption;\n      return;\n    }\n    const isCombined = model.operator;\n    let condition;\n    if (isCombined) {\n      const combinedModel = model;\n      condition = combinedModel.conditions[0];\n    } else {\n      condition = model;\n    }\n    this.lastType = condition.type;\n  }\n  canWeEditAfterModelFromParentFilter(model) {\n    if (!model) {\n      return this.isTypeEditable(this.lastType);\n    }\n    const isCombined = model.operator;\n    if (isCombined) {\n      return false;\n    }\n    const simpleModel = model;\n    return this.isTypeEditable(simpleModel.type);\n  }\n  init(params) {\n    this.setSimpleParams(params, false);\n  }\n  setSimpleParams(params, update = true) {\n    const optionsFactory = new OptionsFactory();\n    this.optionsFactory = optionsFactory;\n    optionsFactory.init(params.filterParams, this.getDefaultOptions());\n    const defaultOption = optionsFactory.defaultOption;\n    if (!update) {\n      this.lastType = defaultOption;\n    }\n    this.readOnly = !!params.filterParams.readOnly;\n    const editable = this.isTypeEditable(defaultOption);\n    this.setEditable(editable);\n  }\n  refresh(params) {\n    this.setSimpleParams(params);\n  }\n  hasSingleInput(filterType) {\n    const numberOfInputs = this.optionsFactory.getCustomOption(filterType)?.numberOfInputs;\n    return numberOfInputs == null || numberOfInputs == 1;\n  }\n  isTypeEditable(type) {\n    const uneditableTypes = [\"inRange\", \"empty\", \"blank\", \"notBlank\"];\n    return !!type && !this.readOnly && this.hasSingleInput(type) && uneditableTypes.indexOf(type) < 0;\n  }\n  getAriaLabel(params) {\n    const displayName = this.beans.colNames.getDisplayNameForColumn(params.column, \"header\", true);\n    return `${displayName} ${this.getLocaleTextFunc()(\"ariaFilterInput\", \"Filter Input\")}`;\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateFloatingFilter.ts\nvar DateFloatingFilterElement = {\n  tag: \"div\",\n  cls: \"ag-floating-filter-input\",\n  role: \"presentation\",\n  children: [\n    {\n      tag: \"ag-input-text-field\",\n      ref: \"eReadOnlyText\"\n    },\n    { tag: \"div\", ref: \"eDateWrapper\", cls: \"ag-date-floating-filter-wrapper\" }\n  ]\n};\nvar DateFloatingFilter = class extends SimpleFloatingFilter {\n  constructor() {\n    super(DateFloatingFilterElement, [AgInputTextFieldSelector]);\n    this.eReadOnlyText = RefPlaceholder;\n    this.eDateWrapper = RefPlaceholder;\n  }\n  getDefaultOptions() {\n    return DEFAULT_DATE_FILTER_OPTIONS;\n  }\n  init(params) {\n    super.init(params);\n    this.params = params;\n    this.filterParams = params.filterParams;\n    this.createDateComponent();\n    this.filterModelFormatter = new DateFilterModelFormatter(\n      this.filterParams,\n      this.getLocaleTextFunc.bind(this),\n      this.optionsFactory\n    );\n    const translate = this.getLocaleTextFunc();\n    this.eReadOnlyText.setDisabled(true).setInputAriaLabel(translate(\"ariaDateFilterInput\", \"Date Filter Input\"));\n  }\n  refresh(params) {\n    super.refresh(params);\n    this.params = params;\n    this.filterParams = params.filterParams;\n    this.dateComp.updateParams(this.getDateComponentParams());\n    this.filterModelFormatter.updateParams({\n      optionsFactory: this.optionsFactory,\n      dateFilterParams: this.filterParams\n    });\n    this.updateCompOnModelChange(params.currentParentModel());\n  }\n  updateCompOnModelChange(model) {\n    const allowEditing = !this.readOnly && this.canWeEditAfterModelFromParentFilter(model);\n    this.setEditable(allowEditing);\n    if (allowEditing) {\n      const dateModel = model ? _parseDateTimeFromString(model.dateFrom) : null;\n      this.dateComp.setDate(dateModel);\n      this.eReadOnlyText.setValue(\"\");\n    } else {\n      this.eReadOnlyText.setValue(this.filterModelFormatter.getModelAsString(model));\n      this.dateComp.setDate(null);\n    }\n  }\n  setEditable(editable) {\n    _setDisplayed(this.eDateWrapper, editable);\n    _setDisplayed(this.eReadOnlyText.getGui(), !editable);\n  }\n  onParentModelChanged(model, event) {\n    if (event?.afterFloatingFilter || event?.afterDataChange) {\n      return;\n    }\n    super.setLastTypeFromModel(model);\n    this.updateCompOnModelChange(model);\n  }\n  onDateChanged() {\n    const filterValueDate = this.dateComp.getDate();\n    const filterValueText = _serialiseDate(filterValueDate);\n    this.params.parentFilterInstance((filterInstance) => {\n      if (filterInstance) {\n        const date = _parseDateTimeFromString(filterValueText);\n        filterInstance.onFloatingFilterChanged(this.lastType || null, date);\n      }\n    });\n  }\n  getDateComponentParams() {\n    const { filterParams, column } = this.params;\n    const debounceMs = getDebounceMs(filterParams, this.defaultDebounceMs);\n    return _addGridCommonParams(this.gos, {\n      onDateChanged: _debounce(this, this.onDateChanged.bind(this), debounceMs),\n      filterParams: column.getColDef().filterParams,\n      location: \"floatingFilter\"\n    });\n  }\n  createDateComponent() {\n    const {\n      beans: { context, userCompFactory },\n      eDateWrapper,\n      params\n    } = this;\n    this.dateComp = new DateCompWrapper(\n      context,\n      userCompFactory,\n      params.column.getColDef(),\n      this.getDateComponentParams(),\n      eDateWrapper,\n      (dateComp) => {\n        dateComp.setInputAriaLabel(this.getAriaLabel(params));\n      }\n    );\n    this.addDestroyFunc(() => this.dateComp.destroy());\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/defaultDateComponent.ts\nvar DefaultDateElement = {\n  tag: \"div\",\n  cls: \"ag-filter-filter\",\n  children: [\n    {\n      tag: \"ag-input-text-field\",\n      ref: \"eDateInput\",\n      cls: \"ag-date-filter\"\n    }\n  ]\n};\nvar DefaultDateComponent = class extends Component {\n  constructor() {\n    super(DefaultDateElement, [AgInputTextFieldSelector]);\n    this.eDateInput = RefPlaceholder;\n    this.isApply = false;\n    this.applyOnFocusOut = false;\n  }\n  init(params) {\n    this.params = params;\n    this.setParams(params);\n    const inputElement = this.eDateInput.getInputElement();\n    this.addManagedListeners(inputElement, {\n      // ensures that the input element is focussed when a clear button is clicked,\n      // unless using safari as there is no clear button and focus does not work properly\n      mouseDown: () => {\n        if (this.eDateInput.isDisabled() || this.usingSafariDatePicker) {\n          return;\n        }\n        inputElement.focus({ preventScroll: true });\n      },\n      input: this.handleInput.bind(this, false),\n      change: this.handleInput.bind(this, true),\n      focusout: this.handleFocusOut.bind(this)\n    });\n  }\n  handleInput(isChange) {\n    if (this.eDateInput.isDisabled()) {\n      return;\n    }\n    if (this.isApply) {\n      this.applyOnFocusOut = !isChange;\n      if (isChange) {\n        this.params.onDateChanged();\n      }\n      return;\n    }\n    if (!isChange) {\n      this.params.onDateChanged();\n    }\n  }\n  handleFocusOut() {\n    if (this.applyOnFocusOut) {\n      this.applyOnFocusOut = false;\n      this.params.onDateChanged();\n    }\n  }\n  setParams(params) {\n    const inputElement = this.eDateInput.getInputElement();\n    const shouldUseBrowserDatePicker = this.shouldUseBrowserDatePicker(params);\n    this.usingSafariDatePicker = shouldUseBrowserDatePicker && _isBrowserSafari();\n    inputElement.type = shouldUseBrowserDatePicker ? \"date\" : \"text\";\n    const { minValidYear, maxValidYear, minValidDate, maxValidDate, buttons } = params.filterParams || {};\n    if (minValidDate && minValidYear) {\n      _warn(85);\n    }\n    if (maxValidDate && maxValidYear) {\n      _warn(86);\n    }\n    if (minValidDate && maxValidDate) {\n      const [parsedMinValidDate, parsedMaxValidDate] = [minValidDate, maxValidDate].map(\n        (v) => v instanceof Date ? v : _parseDateTimeFromString(v)\n      );\n      if (parsedMinValidDate && parsedMaxValidDate && parsedMinValidDate.getTime() > parsedMaxValidDate.getTime()) {\n        _warn(87);\n      }\n    }\n    if (minValidDate) {\n      if (minValidDate instanceof Date) {\n        inputElement.min = _dateToFormattedString(minValidDate);\n      } else {\n        inputElement.min = minValidDate;\n      }\n    } else {\n      if (minValidYear) {\n        inputElement.min = `${minValidYear}-01-01`;\n      }\n    }\n    if (maxValidDate) {\n      if (maxValidDate instanceof Date) {\n        inputElement.max = _dateToFormattedString(maxValidDate);\n      } else {\n        inputElement.max = maxValidDate;\n      }\n    } else {\n      if (maxValidYear) {\n        inputElement.max = `${maxValidYear}-12-31`;\n      }\n    }\n    this.isApply = params.location === \"floatingFilter\" && !!buttons?.includes(\"apply\");\n  }\n  refresh(params) {\n    this.params = params;\n    this.setParams(params);\n  }\n  getDate() {\n    return _parseDateTimeFromString(this.eDateInput.getValue());\n  }\n  setDate(date) {\n    this.eDateInput.setValue(_serialiseDate(date, false));\n  }\n  setInputPlaceholder(placeholder) {\n    this.eDateInput.setInputPlaceholder(placeholder);\n  }\n  setInputAriaLabel(ariaLabel) {\n    this.eDateInput.setAriaLabel(ariaLabel);\n  }\n  setDisabled(disabled) {\n    this.eDateInput.setDisabled(disabled);\n  }\n  afterGuiAttached(params) {\n    if (!params || !params.suppressFocus) {\n      this.eDateInput.getInputElement().focus({ preventScroll: true });\n    }\n  }\n  shouldUseBrowserDatePicker(params) {\n    return params?.filterParams?.browserDatePicker ?? true;\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/number/numberFilterConstants.ts\nvar DEFAULT_NUMBER_FILTER_OPTIONS = [\n  \"equals\",\n  \"notEqual\",\n  \"greaterThan\",\n  \"greaterThanOrEqual\",\n  \"lessThan\",\n  \"lessThanOrEqual\",\n  \"inRange\",\n  \"blank\",\n  \"notBlank\"\n];\n\n// packages/ag-grid-community/src/filter/provided/number/numberFilterModelFormatter.ts\nvar NumberFilterModelFormatter = class extends SimpleFilterModelFormatter {\n  conditionToString(condition, options) {\n    const { numberOfInputs } = options || {};\n    const { filter, filterTo, type } = condition;\n    const isRange = type == \"inRange\" || numberOfInputs === 2;\n    const formatValue = this.formatValue.bind(this);\n    if (isRange) {\n      return `${formatValue(filter)}-${formatValue(filterTo)}`;\n    }\n    if (filter != null) {\n      return formatValue(filter);\n    }\n    return `${type}`;\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/number/numberFilterUtils.ts\nfunction getAllowedCharPattern(filterParams) {\n  const { allowedCharPattern } = filterParams ?? {};\n  return allowedCharPattern ?? null;\n}\n\n// packages/ag-grid-community/src/filter/provided/number/numberFilter.ts\nvar NumberFilter = class extends ScalarFilter {\n  constructor() {\n    super(\"numberFilter\");\n    this.eValuesFrom = [];\n    this.eValuesTo = [];\n    this.filterType = \"number\";\n    this.defaultDebounceMs = 500;\n  }\n  refresh(params) {\n    if (this.numberFilterParams.allowedCharPattern !== params.allowedCharPattern) {\n      return false;\n    }\n    return super.refresh(params);\n  }\n  mapValuesFromModel(filterModel) {\n    const { filter, filterTo, type } = filterModel || {};\n    return [this.processValue(filter), this.processValue(filterTo)].slice(0, this.getNumberOfInputs(type));\n  }\n  comparator() {\n    return (left, right) => {\n      if (left === right) {\n        return 0;\n      }\n      return left < right ? 1 : -1;\n    };\n  }\n  isValid(value) {\n    return !isNaN(value);\n  }\n  setParams(params) {\n    this.numberFilterParams = params;\n    super.setParams(params);\n    this.filterModelFormatter = new NumberFilterModelFormatter(\n      this.getLocaleTextFunc.bind(this),\n      this.optionsFactory,\n      this.numberFilterParams.numberFormatter\n    );\n  }\n  getDefaultFilterOptions() {\n    return DEFAULT_NUMBER_FILTER_OPTIONS;\n  }\n  setElementValue(element, value, fromFloatingFilter) {\n    const { numberFormatter } = this.numberFilterParams;\n    const valueToSet = !fromFloatingFilter && numberFormatter ? numberFormatter(value ?? null) : value;\n    super.setElementValue(element, valueToSet);\n  }\n  createValueElement() {\n    const allowedCharPattern = getAllowedCharPattern(this.numberFilterParams);\n    const eCondition = _createElement({ tag: \"div\", cls: \"ag-filter-body\", role: \"presentation\" });\n    this.createFromToElement(eCondition, this.eValuesFrom, \"from\", allowedCharPattern);\n    this.createFromToElement(eCondition, this.eValuesTo, \"to\", allowedCharPattern);\n    return eCondition;\n  }\n  createFromToElement(eCondition, eValues, fromTo, allowedCharPattern) {\n    const eValue = this.createManagedBean(\n      allowedCharPattern ? new AgInputTextField({ allowedCharPattern }) : new AgInputNumberField()\n    );\n    eValue.addCss(`ag-filter-${fromTo}`);\n    eValue.addCss(\"ag-filter-filter\");\n    eValues.push(eValue);\n    eCondition.appendChild(eValue.getGui());\n  }\n  removeValueElements(startPosition, deleteCount) {\n    const removeComps = (eGui) => this.removeComponents(eGui, startPosition, deleteCount);\n    removeComps(this.eValuesFrom);\n    removeComps(this.eValuesTo);\n  }\n  getValues(position) {\n    const result = [];\n    this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n      if (index < numberOfInputs) {\n        result.push(this.processValue(this.stringToFloat(element.getValue())));\n      }\n    });\n    return result;\n  }\n  areSimpleModelsEqual(aSimple, bSimple) {\n    return aSimple.filter === bSimple.filter && aSimple.filterTo === bSimple.filterTo && aSimple.type === bSimple.type;\n  }\n  processValue(value) {\n    if (value == null) {\n      return null;\n    }\n    return isNaN(value) ? null : value;\n  }\n  stringToFloat(value) {\n    if (typeof value === \"number\") {\n      return value;\n    }\n    let filterText = _makeNull(value);\n    if (filterText != null && filterText.trim() === \"\") {\n      filterText = null;\n    }\n    const numberParser = this.numberFilterParams.numberParser;\n    if (numberParser) {\n      return numberParser(filterText);\n    }\n    return filterText == null || filterText.trim() === \"-\" ? null : parseFloat(filterText);\n  }\n  createCondition(position) {\n    const type = this.getConditionType(position);\n    const model = {\n      filterType: this.filterType,\n      type\n    };\n    const values = this.getValues(position);\n    if (values.length > 0) {\n      model.filter = values[0];\n    }\n    if (values.length > 1) {\n      model.filterTo = values[1];\n    }\n    return model;\n  }\n  getInputs(position) {\n    const { eValuesFrom, eValuesTo } = this;\n    if (position >= eValuesFrom.length) {\n      return [null, null];\n    }\n    return [eValuesFrom[position], eValuesTo[position]];\n  }\n  getModelAsString(model) {\n    return this.filterModelFormatter.getModelAsString(model) ?? \"\";\n  }\n  hasInvalidInputs() {\n    let invalidInputs = false;\n    this.forEachInput((element) => {\n      if (!element.getInputElement().validity.valid) {\n        invalidInputs = true;\n        return;\n      }\n    });\n    return invalidInputs;\n  }\n};\n\n// packages/ag-grid-community/src/filter/floating/provided/floatingFilterTextInputService.ts\nvar FloatingFilterTextInputService = class extends BeanStub {\n  constructor(params) {\n    super();\n    this.params = params;\n    this.eInput = RefPlaceholder;\n    this.onValueChanged = () => {\n    };\n  }\n  setupGui(parentElement) {\n    this.eInput = this.createManagedBean(new AgInputTextField(this.params?.config));\n    const eInput = this.eInput.getGui();\n    parentElement.appendChild(eInput);\n    const listener = (e) => this.onValueChanged(e);\n    this.addManagedListeners(eInput, {\n      input: listener,\n      keydown: listener\n    });\n  }\n  setEditable(editable) {\n    this.eInput.setDisabled(!editable);\n  }\n  getValue() {\n    return this.eInput.getValue();\n  }\n  setValue(value, silent) {\n    this.eInput.setValue(value, silent);\n  }\n  setValueChangedListener(listener) {\n    this.onValueChanged = listener;\n  }\n  setParams({ ariaLabel, autoComplete }) {\n    const { eInput } = this;\n    eInput.setInputAriaLabel(ariaLabel);\n    if (autoComplete !== void 0) {\n      eInput.setAutoComplete(autoComplete);\n    }\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/text/textFilterUtils.ts\nfunction trimInputForFilter(value) {\n  const trimmedInput = value?.trim();\n  return trimmedInput === \"\" ? value : trimmedInput;\n}\n\n// packages/ag-grid-community/src/filter/floating/provided/textInputFloatingFilter.ts\nvar TextInputFloatingFilterElement = {\n  tag: \"div\",\n  ref: \"eFloatingFilterInputContainer\",\n  cls: \"ag-floating-filter-input\",\n  role: \"presentation\"\n};\nvar TextInputFloatingFilter = class extends SimpleFloatingFilter {\n  constructor() {\n    super(...arguments);\n    this.eFloatingFilterInputContainer = RefPlaceholder;\n    this.defaultDebounceMs = 500;\n  }\n  postConstruct() {\n    this.setTemplate(TextInputFloatingFilterElement);\n  }\n  onParentModelChanged(model, event) {\n    if (event?.afterFloatingFilter || event?.afterDataChange) {\n      return;\n    }\n    this.setLastTypeFromModel(model);\n    this.setEditable(this.canWeEditAfterModelFromParentFilter(model));\n    this.inputSvc.setValue(this.filterModelFormatter.getModelAsString(model));\n  }\n  init(params) {\n    this.setupFloatingFilterInputService(params);\n    super.init(params);\n    this.setTextInputParams(params);\n  }\n  setupFloatingFilterInputService(params) {\n    this.inputSvc = this.createFloatingFilterInputService(params);\n    this.inputSvc.setupGui(this.eFloatingFilterInputContainer);\n  }\n  setTextInputParams(params) {\n    this.params = params;\n    const autoComplete = params.browserAutoComplete ?? false;\n    const { inputSvc, defaultDebounceMs, readOnly } = this;\n    inputSvc.setParams({\n      ariaLabel: this.getAriaLabel(params),\n      autoComplete\n    });\n    this.applyActive = isUseApplyButton(params.filterParams);\n    if (!readOnly) {\n      const debounceMs = getDebounceMs(params.filterParams, defaultDebounceMs);\n      const toDebounce = _debounce(\n        this,\n        this.syncUpWithParentFilter.bind(this),\n        debounceMs\n      );\n      inputSvc.setValueChangedListener(toDebounce);\n    }\n  }\n  refresh(params) {\n    super.refresh(params);\n    this.setTextInputParams(params);\n  }\n  recreateFloatingFilterInputService(params) {\n    const { inputSvc } = this;\n    const value = inputSvc.getValue();\n    _clearElement(this.eFloatingFilterInputContainer);\n    this.destroyBean(inputSvc);\n    this.setupFloatingFilterInputService(params);\n    inputSvc.setValue(value, true);\n  }\n  syncUpWithParentFilter(e) {\n    const isEnterKey = e.key === KeyCode.ENTER;\n    if (this.applyActive && !isEnterKey) {\n      return;\n    }\n    const { inputSvc, params } = this;\n    let value = inputSvc.getValue();\n    if (params.filterParams.trimInput) {\n      value = trimInputForFilter(value);\n      inputSvc.setValue(value, true);\n    }\n    params.parentFilterInstance((filterInstance) => {\n      filterInstance?.onFloatingFilterChanged(this.lastType || null, value || null);\n    });\n  }\n  setEditable(editable) {\n    this.inputSvc.setEditable(editable);\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/number/numberFloatingFilter.ts\nvar FloatingFilterNumberInputService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.onValueChanged = () => {\n    };\n    this.numberInputActive = true;\n  }\n  setupGui(parentElement) {\n    this.eNumberInput = this.createManagedBean(new AgInputNumberField());\n    this.eTextInput = this.createManagedBean(new AgInputTextField());\n    this.eTextInput.setDisabled(true);\n    const eNumberInput = this.eNumberInput.getGui();\n    const eTextInput = this.eTextInput.getGui();\n    parentElement.appendChild(eNumberInput);\n    parentElement.appendChild(eTextInput);\n    this.setupListeners(eNumberInput, (e) => this.onValueChanged(e));\n    this.setupListeners(eTextInput, (e) => this.onValueChanged(e));\n  }\n  setEditable(editable) {\n    this.numberInputActive = editable;\n    this.eNumberInput.setDisplayed(this.numberInputActive);\n    this.eTextInput.setDisplayed(!this.numberInputActive);\n  }\n  setAutoComplete(autoComplete) {\n    this.eNumberInput.setAutoComplete(autoComplete);\n    this.eTextInput.setAutoComplete(autoComplete);\n  }\n  getValue() {\n    return this.getActiveInputElement().getValue();\n  }\n  setValue(value, silent) {\n    this.getActiveInputElement().setValue(value, silent);\n  }\n  getActiveInputElement() {\n    return this.numberInputActive ? this.eNumberInput : this.eTextInput;\n  }\n  setValueChangedListener(listener) {\n    this.onValueChanged = listener;\n  }\n  setupListeners(element, listener) {\n    this.addManagedListeners(element, {\n      input: listener,\n      keydown: listener\n    });\n  }\n  setParams(params) {\n    this.setAriaLabel(params.ariaLabel);\n    if (params.autoComplete !== void 0) {\n      this.setAutoComplete(params.autoComplete);\n    }\n  }\n  setAriaLabel(ariaLabel) {\n    this.eNumberInput.setInputAriaLabel(ariaLabel);\n    this.eTextInput.setInputAriaLabel(ariaLabel);\n  }\n};\nvar NumberFloatingFilter = class extends TextInputFloatingFilter {\n  init(params) {\n    super.init(params);\n    this.filterModelFormatter = new NumberFilterModelFormatter(\n      this.getLocaleTextFunc.bind(this),\n      this.optionsFactory,\n      params.filterParams?.numberFormatter\n    );\n  }\n  refresh(params) {\n    const allowedCharPattern = getAllowedCharPattern(params.filterParams);\n    if (allowedCharPattern !== this.allowedCharPattern) {\n      this.recreateFloatingFilterInputService(params);\n    }\n    super.refresh(params);\n    this.filterModelFormatter.updateParams({ optionsFactory: this.optionsFactory });\n  }\n  getDefaultOptions() {\n    return DEFAULT_NUMBER_FILTER_OPTIONS;\n  }\n  createFloatingFilterInputService(params) {\n    this.allowedCharPattern = getAllowedCharPattern(params.filterParams);\n    if (this.allowedCharPattern) {\n      return this.createManagedBean(\n        new FloatingFilterTextInputService({\n          config: { allowedCharPattern: this.allowedCharPattern }\n        })\n      );\n    }\n    return this.createManagedBean(new FloatingFilterNumberInputService());\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/text/textFilterConstants.ts\nvar DEFAULT_TEXT_FILTER_OPTIONS = [\n  \"contains\",\n  \"notContains\",\n  \"equals\",\n  \"notEqual\",\n  \"startsWith\",\n  \"endsWith\",\n  \"blank\",\n  \"notBlank\"\n];\n\n// packages/ag-grid-community/src/filter/provided/text/textFilterModelFormatter.ts\nvar TextFilterModelFormatter = class extends SimpleFilterModelFormatter {\n  conditionToString(condition, options) {\n    const { numberOfInputs } = options || {};\n    const { filter, filterTo, type } = condition;\n    const isRange = type == \"inRange\" || numberOfInputs === 2;\n    if (isRange) {\n      return `${filter}-${filterTo}`;\n    }\n    if (filter != null) {\n      return `${filter}`;\n    }\n    return `${type}`;\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/text/textFilter.ts\nvar TextFilter = class extends SimpleFilter {\n  constructor() {\n    super(\"textFilter\");\n    this.filterType = \"text\";\n    this.defaultFormatter = (from) => from;\n    this.defaultLowercaseFormatter = (from) => from == null ? null : from.toString().toLowerCase();\n    this.defaultMatcher = ({ filterOption, value, filterText }) => {\n      if (filterText == null) {\n        return false;\n      }\n      switch (filterOption) {\n        case \"contains\":\n          return value.indexOf(filterText) >= 0;\n        case \"notContains\":\n          return value.indexOf(filterText) < 0;\n        case \"equals\":\n          return value === filterText;\n        case \"notEqual\":\n          return value != filterText;\n        case \"startsWith\":\n          return value.indexOf(filterText) === 0;\n        case \"endsWith\": {\n          const index = value.lastIndexOf(filterText);\n          return index >= 0 && index === value.length - filterText.length;\n        }\n        default:\n          return false;\n      }\n    };\n    this.eValuesFrom = [];\n    this.eValuesTo = [];\n    this.defaultDebounceMs = 500;\n  }\n  setParams(params) {\n    this.textFilterParams = params;\n    super.setParams(params);\n    this.matcher = params.textMatcher || this.defaultMatcher;\n    this.formatter = params.textFormatter || (params.caseSensitive ? this.defaultFormatter : this.defaultLowercaseFormatter);\n    this.filterModelFormatter = new TextFilterModelFormatter(\n      this.getLocaleTextFunc.bind(this),\n      this.optionsFactory\n    );\n  }\n  createCondition(position) {\n    const type = this.getConditionType(position);\n    const model = {\n      filterType: this.filterType,\n      type\n    };\n    const values = this.getValuesWithSideEffects(position, true);\n    if (values.length > 0) {\n      model.filter = values[0];\n    }\n    if (values.length > 1) {\n      model.filterTo = values[1];\n    }\n    return model;\n  }\n  areSimpleModelsEqual(aSimple, bSimple) {\n    return aSimple.filter === bSimple.filter && aSimple.filterTo === bSimple.filterTo && aSimple.type === bSimple.type;\n  }\n  getInputs(position) {\n    const { eValuesFrom, eValuesTo } = this;\n    if (position >= eValuesFrom.length) {\n      return [null, null];\n    }\n    return [eValuesFrom[position], eValuesTo[position]];\n  }\n  getValues(position) {\n    return this.getValuesWithSideEffects(position, false);\n  }\n  getValuesWithSideEffects(position, applySideEffects) {\n    const result = [];\n    this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n      if (index < numberOfInputs) {\n        let value = _makeNull(element.getValue());\n        if (applySideEffects && this.textFilterParams.trimInput) {\n          value = trimInputForFilter(value) ?? null;\n          element.setValue(value, true);\n        }\n        result.push(value);\n      }\n    });\n    return result;\n  }\n  getDefaultFilterOptions() {\n    return DEFAULT_TEXT_FILTER_OPTIONS;\n  }\n  createValueElement() {\n    const eCondition = _createElement({ tag: \"div\", cls: \"ag-filter-body\", role: \"presentation\" });\n    this.createFromToElement(eCondition, this.eValuesFrom, \"from\");\n    this.createFromToElement(eCondition, this.eValuesTo, \"to\");\n    return eCondition;\n  }\n  createFromToElement(eCondition, eValues, fromTo) {\n    const eValue = this.createManagedBean(new AgInputTextField());\n    eValue.addCss(`ag-filter-${fromTo}`);\n    eValue.addCss(\"ag-filter-filter\");\n    eValues.push(eValue);\n    eCondition.appendChild(eValue.getGui());\n  }\n  removeValueElements(startPosition, deleteCount) {\n    const removeComps = (eGui) => this.removeComponents(eGui, startPosition, deleteCount);\n    removeComps(this.eValuesFrom);\n    removeComps(this.eValuesTo);\n  }\n  mapValuesFromModel(filterModel) {\n    const { filter, filterTo, type } = filterModel || {};\n    return [filter || null, filterTo || null].slice(0, this.getNumberOfInputs(type));\n  }\n  evaluateNullValue(filterType) {\n    const filterTypesAllowNulls = [\"notEqual\", \"notContains\", \"blank\"];\n    return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;\n  }\n  evaluateNonNullValue(values, cellValue, filterModel, params) {\n    const formattedValues = values.map((v) => this.formatter(v)) || [];\n    const cellValueFormatted = this.formatter(cellValue);\n    const { api, colDef, column, context, textFormatter } = this.textFilterParams;\n    if (filterModel.type === \"blank\") {\n      return isBlank(cellValue);\n    } else if (filterModel.type === \"notBlank\") {\n      return !isBlank(cellValue);\n    }\n    const matcherParams = {\n      api,\n      colDef,\n      column,\n      context,\n      node: params.node,\n      data: params.data,\n      filterOption: filterModel.type,\n      value: cellValueFormatted,\n      textFormatter\n    };\n    return formattedValues.some((v) => this.matcher({ ...matcherParams, filterText: v }));\n  }\n  getModelAsString(model) {\n    return this.filterModelFormatter.getModelAsString(model) ?? \"\";\n  }\n};\n\n// packages/ag-grid-community/src/filter/provided/text/textFloatingFilter.ts\nvar TextFloatingFilter = class extends TextInputFloatingFilter {\n  init(params) {\n    super.init(params);\n    this.filterModelFormatter = new TextFilterModelFormatter(\n      this.getLocaleTextFunc.bind(this),\n      this.optionsFactory\n    );\n  }\n  refresh(params) {\n    super.refresh(params);\n    this.filterModelFormatter.updateParams({ optionsFactory: this.optionsFactory });\n  }\n  getDefaultOptions() {\n    return DEFAULT_TEXT_FILTER_OPTIONS;\n  }\n  createFloatingFilterInputService() {\n    return this.createManagedBean(new FloatingFilterTextInputService());\n  }\n};\n\n// packages/ag-grid-community/src/filter/quickFilterApi.ts\nfunction isQuickFilterPresent(beans) {\n  return !!beans.quickFilter?.isFilterPresent();\n}\nfunction getQuickFilter(beans) {\n  return beans.quickFilter?.getText();\n}\nfunction resetQuickFilter(beans) {\n  beans.quickFilter?.resetCache();\n}\n\n// packages/ag-grid-community/src/filter/quickFilterService.ts\nvar QuickFilterService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"quickFilter\";\n    this.quickFilter = null;\n    this.quickFilterParts = null;\n  }\n  postConstruct() {\n    const resetListener = this.resetCache.bind(this);\n    const gos = this.gos;\n    this.addManagedEventListeners({\n      columnPivotModeChanged: resetListener,\n      newColumnsLoaded: resetListener,\n      columnRowGroupChanged: resetListener,\n      columnVisible: () => {\n        if (!gos.get(\"includeHiddenColumnsInQuickFilter\")) {\n          this.resetCache();\n        }\n      }\n    });\n    this.addManagedPropertyListener(\"quickFilterText\", (e) => this.setFilter(e.currentValue));\n    this.addManagedPropertyListeners(\n      [\"includeHiddenColumnsInQuickFilter\", \"applyQuickFilterBeforePivotOrAgg\"],\n      () => this.onColumnConfigChanged()\n    );\n    this.quickFilter = this.parseFilter(gos.get(\"quickFilterText\"));\n    this.parser = gos.get(\"quickFilterParser\");\n    this.matcher = gos.get(\"quickFilterMatcher\");\n    this.setFilterParts();\n    this.addManagedPropertyListeners([\"quickFilterMatcher\", \"quickFilterParser\"], () => this.setParserAndMatcher());\n  }\n  // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n  // following scenarios:\n  // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n  // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n  //    (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n  refreshCols() {\n    const { autoColSvc, colModel, gos, pivotResultCols } = this.beans;\n    const pivotMode = colModel.isPivotMode();\n    const groupAutoCols = autoColSvc?.getColumns();\n    const providedCols = colModel.getColDefCols();\n    let columnsForQuickFilter = (pivotMode && !gos.get(\"applyQuickFilterBeforePivotOrAgg\") ? pivotResultCols?.getPivotResultCols()?.list : providedCols) ?? [];\n    if (groupAutoCols) {\n      columnsForQuickFilter = columnsForQuickFilter.concat(groupAutoCols);\n    }\n    this.colsToUse = gos.get(\"includeHiddenColumnsInQuickFilter\") ? columnsForQuickFilter : columnsForQuickFilter.filter((col) => col.isVisible() || col.isRowGroupActive());\n  }\n  isFilterPresent() {\n    return this.quickFilter !== null;\n  }\n  doesRowPass(node) {\n    const usingCache = this.gos.get(\"cacheQuickFilter\");\n    if (this.matcher) {\n      return this.doesRowPassMatcher(usingCache, node);\n    }\n    return this.quickFilterParts.every(\n      (part) => usingCache ? this.doesRowPassCache(node, part) : this.doesRowPassNoCache(node, part)\n    );\n  }\n  resetCache() {\n    this.beans.rowModel.forEachNode((node) => node.quickFilterAggregateText = null);\n  }\n  getText() {\n    return this.gos.get(\"quickFilterText\");\n  }\n  setFilterParts() {\n    const { quickFilter, parser } = this;\n    if (quickFilter) {\n      this.quickFilterParts = parser ? parser(quickFilter) : quickFilter.split(\" \");\n    } else {\n      this.quickFilterParts = null;\n    }\n  }\n  parseFilter(newFilter) {\n    if (!_exists(newFilter)) {\n      return null;\n    }\n    return newFilter.toUpperCase();\n  }\n  setFilter(newFilter) {\n    if (newFilter != null && typeof newFilter !== \"string\") {\n      _warn(70, { newFilter });\n      return;\n    }\n    const parsedFilter = this.parseFilter(newFilter);\n    if (this.quickFilter !== parsedFilter) {\n      this.quickFilter = parsedFilter;\n      this.setFilterParts();\n      this.dispatchLocalEvent({ type: \"quickFilterChanged\" });\n    }\n  }\n  setParserAndMatcher() {\n    const parser = this.gos.get(\"quickFilterParser\");\n    const matcher = this.gos.get(\"quickFilterMatcher\");\n    const hasChanged = parser !== this.parser || matcher !== this.matcher;\n    this.parser = parser;\n    this.matcher = matcher;\n    if (hasChanged) {\n      this.setFilterParts();\n      this.dispatchLocalEvent({ type: \"quickFilterChanged\" });\n    }\n  }\n  onColumnConfigChanged() {\n    this.refreshCols();\n    this.resetCache();\n    if (this.isFilterPresent()) {\n      this.dispatchLocalEvent({ type: \"quickFilterChanged\" });\n    }\n  }\n  doesRowPassNoCache(node, filterPart) {\n    return this.colsToUse.some((column) => {\n      const part = this.getTextForColumn(column, node);\n      return _exists(part) && part.indexOf(filterPart) >= 0;\n    });\n  }\n  doesRowPassCache(node, filterPart) {\n    this.checkGenerateAggText(node);\n    return node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n  }\n  doesRowPassMatcher(usingCache, node) {\n    let quickFilterAggregateText;\n    if (usingCache) {\n      this.checkGenerateAggText(node);\n      quickFilterAggregateText = node.quickFilterAggregateText;\n    } else {\n      quickFilterAggregateText = this.getAggText(node);\n    }\n    const { quickFilterParts, matcher } = this;\n    return matcher(quickFilterParts, quickFilterAggregateText);\n  }\n  checkGenerateAggText(node) {\n    if (!node.quickFilterAggregateText) {\n      node.quickFilterAggregateText = this.getAggText(node);\n    }\n  }\n  getTextForColumn(column, node) {\n    let value = this.beans.filterValueSvc.getValue(column, node);\n    const colDef = column.getColDef();\n    if (colDef.getQuickFilterText) {\n      const params = _addGridCommonParams(this.gos, {\n        value,\n        node,\n        data: node.data,\n        column,\n        colDef\n      });\n      value = colDef.getQuickFilterText(params);\n    }\n    return _exists(value) ? value.toString().toUpperCase() : null;\n  }\n  getAggText(node) {\n    const stringParts = [];\n    this.colsToUse.forEach((column) => {\n      const part = this.getTextForColumn(column, node);\n      if (_exists(part)) {\n        stringParts.push(part);\n      }\n    });\n    return stringParts.join(\"\\n\");\n  }\n};\n\n// packages/ag-grid-community/src/filter/filterModule.ts\nvar ClientSideRowModelFilterModule = {\n  moduleName: \"ClientSideRowModelFilter\",\n  version: VERSION,\n  rowModels: [\"clientSide\"],\n  beans: [FilterStage]\n};\nvar FilterCoreModule = {\n  moduleName: \"FilterCore\",\n  version: VERSION,\n  beans: [FilterManager],\n  apiFunctions: {\n    isAnyFilterPresent,\n    onFilterChanged\n  },\n  css: [columnFiltersCSS],\n  dependsOn: [ClientSideRowModelFilterModule]\n};\nvar FilterValueModule = {\n  moduleName: \"FilterValue\",\n  version: VERSION,\n  beans: [FilterValueService]\n};\nvar ColumnFilterModule = {\n  moduleName: \"ColumnFilter\",\n  version: VERSION,\n  beans: [ColumnFilterService, FilterMenuFactory],\n  dynamicBeans: { headerFilterCellCtrl: HeaderFilterCellCtrl },\n  icons: {\n    // open filter button - header, floating filter, menu\n    filter: \"filter\",\n    // filter is applied - header (legacy column menu), filter tool panel\n    filterActive: \"filter\"\n  },\n  apiFunctions: {\n    isColumnFilterPresent,\n    getColumnFilterInstance,\n    destroyFilter,\n    setFilterModel,\n    getFilterModel,\n    getColumnFilterModel,\n    setColumnFilterModel,\n    showColumnFilter\n  },\n  dependsOn: [FilterCoreModule, PopupModule, FilterValueModule, SharedMenuModule]\n};\nvar CustomFilterModule = {\n  moduleName: \"CustomFilter\",\n  version: VERSION,\n  userComponents: { agReadOnlyFloatingFilter: ReadOnlyFloatingFilter },\n  dependsOn: [ColumnFilterModule]\n};\nvar TextFilterModule = {\n  moduleName: \"TextFilter\",\n  version: VERSION,\n  dependsOn: [ColumnFilterModule],\n  userComponents: {\n    agTextColumnFilter: TextFilter,\n    agTextColumnFloatingFilter: TextFloatingFilter\n  }\n};\nvar NumberFilterModule = {\n  moduleName: \"NumberFilter\",\n  version: VERSION,\n  dependsOn: [ColumnFilterModule],\n  userComponents: {\n    agNumberColumnFilter: NumberFilter,\n    agNumberColumnFloatingFilter: NumberFloatingFilter\n  }\n};\nvar DateFilterModule = {\n  moduleName: \"DateFilter\",\n  version: VERSION,\n  dependsOn: [ColumnFilterModule],\n  userComponents: {\n    agDateColumnFilter: DateFilter,\n    agDateInput: DefaultDateComponent,\n    agDateColumnFloatingFilter: DateFloatingFilter\n  }\n};\nvar QuickFilterCoreModule = {\n  moduleName: \"QuickFilterCore\",\n  version: VERSION,\n  rowModels: [\"clientSide\"],\n  beans: [QuickFilterService],\n  dependsOn: [FilterCoreModule, FilterValueModule]\n};\nvar QuickFilterModule = {\n  moduleName: \"QuickFilter\",\n  version: VERSION,\n  apiFunctions: {\n    isQuickFilterPresent,\n    getQuickFilter,\n    resetQuickFilter\n  },\n  dependsOn: [QuickFilterCoreModule]\n};\nvar ExternalFilterModule = {\n  moduleName: \"ExternalFilter\",\n  version: VERSION,\n  dependsOn: [FilterCoreModule]\n};\n\n// packages/ag-grid-community/src/undoRedo/undoRedoStack.ts\nvar UndoRedoAction = class {\n  constructor(cellValueChanges) {\n    this.cellValueChanges = cellValueChanges;\n  }\n};\nvar RangeUndoRedoAction = class extends UndoRedoAction {\n  constructor(cellValueChanges, initialRange, finalRange, ranges) {\n    super(cellValueChanges);\n    this.initialRange = initialRange;\n    this.finalRange = finalRange;\n    this.ranges = ranges;\n  }\n};\nvar DEFAULT_STACK_SIZE = 10;\nvar UndoRedoStack = class {\n  constructor(maxStackSize) {\n    this.actionStack = [];\n    this.maxStackSize = maxStackSize ? maxStackSize : DEFAULT_STACK_SIZE;\n    this.actionStack = new Array(this.maxStackSize);\n  }\n  pop() {\n    return this.actionStack.pop();\n  }\n  push(item) {\n    const shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;\n    if (!shouldAddActions) {\n      return;\n    }\n    if (this.actionStack.length === this.maxStackSize) {\n      this.actionStack.shift();\n    }\n    this.actionStack.push(item);\n  }\n  clear() {\n    this.actionStack = [];\n  }\n  getCurrentStackSize() {\n    return this.actionStack.length;\n  }\n};\n\n// packages/ag-grid-community/src/undoRedo/undoRedoService.ts\nvar UndoRedoService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"undoRedo\";\n    this.cellValueChanges = [];\n    this.activeCellEdit = null;\n    this.activeRowEdit = null;\n    this.isPasting = false;\n    this.isRangeInAction = false;\n    this.onCellValueChanged = (event) => {\n      const eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };\n      const isCellEditing = this.activeCellEdit !== null && _areCellsEqual(this.activeCellEdit, eventCell);\n      const isRowEditing = this.activeRowEdit !== null && _isSameRow(this.activeRowEdit, eventCell);\n      const shouldCaptureAction = isCellEditing || isRowEditing || this.isPasting || this.isRangeInAction;\n      if (!shouldCaptureAction) {\n        return;\n      }\n      const { rowPinned, rowIndex, column, oldValue, value } = event;\n      const cellValueChange = {\n        rowPinned,\n        rowIndex,\n        columnId: column.getColId(),\n        newValue: value,\n        oldValue\n      };\n      this.cellValueChanges.push(cellValueChange);\n    };\n    this.clearStacks = () => {\n      this.undoStack.clear();\n      this.redoStack.clear();\n    };\n  }\n  postConstruct() {\n    const { gos, ctrlsSvc } = this.beans;\n    if (!gos.get(\"undoRedoCellEditing\")) {\n      return;\n    }\n    const undoRedoLimit = gos.get(\"undoRedoCellEditingLimit\");\n    if (undoRedoLimit <= 0) {\n      return;\n    }\n    this.undoStack = new UndoRedoStack(undoRedoLimit);\n    this.redoStack = new UndoRedoStack(undoRedoLimit);\n    this.addListeners();\n    const listener = this.clearStacks.bind(this);\n    this.addManagedEventListeners({\n      cellValueChanged: this.onCellValueChanged.bind(this),\n      // undo / redo is restricted to actual editing so we clear the stacks when other operations are\n      // performed that change the order of the row / cols.\n      modelUpdated: (e) => {\n        if (!e.keepUndoRedoStack) {\n          this.clearStacks();\n        }\n      },\n      columnPivotModeChanged: listener,\n      newColumnsLoaded: listener,\n      columnGroupOpened: listener,\n      columnRowGroupChanged: listener,\n      columnMoved: listener,\n      columnPinned: listener,\n      columnVisible: listener,\n      rowDragEnd: listener\n    });\n    ctrlsSvc.whenReady(this, (p) => {\n      this.gridBodyCtrl = p.gridBodyCtrl;\n    });\n  }\n  getCurrentUndoStackSize() {\n    return this.undoStack?.getCurrentStackSize() ?? 0;\n  }\n  getCurrentRedoStackSize() {\n    return this.redoStack?.getCurrentStackSize() ?? 0;\n  }\n  undo(source) {\n    const { eventSvc, undoStack, redoStack } = this;\n    eventSvc.dispatchEvent({\n      type: \"undoStarted\",\n      source\n    });\n    const operationPerformed = this.undoRedo(undoStack, redoStack, \"initialRange\", \"oldValue\", \"undo\");\n    eventSvc.dispatchEvent({\n      type: \"undoEnded\",\n      source,\n      operationPerformed\n    });\n  }\n  redo(source) {\n    const { eventSvc, undoStack, redoStack } = this;\n    eventSvc.dispatchEvent({\n      type: \"redoStarted\",\n      source\n    });\n    const operationPerformed = this.undoRedo(redoStack, undoStack, \"finalRange\", \"newValue\", \"redo\");\n    eventSvc.dispatchEvent({\n      type: \"redoEnded\",\n      source,\n      operationPerformed\n    });\n  }\n  undoRedo(undoRedoStack, opposingUndoRedoStack, rangeProperty, cellValueChangeProperty, source) {\n    if (!undoRedoStack) {\n      return false;\n    }\n    const undoRedoAction = undoRedoStack.pop();\n    if (!undoRedoAction || !undoRedoAction.cellValueChanges) {\n      return false;\n    }\n    this.processAction(\n      undoRedoAction,\n      (cellValueChange) => cellValueChange[cellValueChangeProperty],\n      source\n    );\n    if (undoRedoAction instanceof RangeUndoRedoAction) {\n      this.processRange(undoRedoAction.ranges || [undoRedoAction[rangeProperty]]);\n    } else {\n      this.processCell(undoRedoAction.cellValueChanges);\n    }\n    opposingUndoRedoStack.push(undoRedoAction);\n    return true;\n  }\n  processAction(action, valueExtractor, source) {\n    action.cellValueChanges.forEach((cellValueChange) => {\n      const { rowIndex, rowPinned, columnId } = cellValueChange;\n      const rowPosition = { rowIndex, rowPinned };\n      const currentRow = _getRowNode(this.beans, rowPosition);\n      if (!currentRow.displayed) {\n        return;\n      }\n      currentRow.setDataValue(columnId, valueExtractor(cellValueChange), source);\n    });\n  }\n  processRange(ranges) {\n    let lastFocusedCell;\n    const rangeSvc = this.beans.rangeSvc;\n    rangeSvc.removeAllCellRanges(true);\n    ranges.forEach((range, idx) => {\n      if (!range) {\n        return;\n      }\n      const startRow = range.startRow;\n      const endRow = range.endRow;\n      if (idx === ranges.length - 1) {\n        lastFocusedCell = {\n          rowPinned: startRow.rowPinned,\n          rowIndex: startRow.rowIndex,\n          columnId: range.startColumn.getColId()\n        };\n        this.setLastFocusedCell(lastFocusedCell);\n      }\n      const cellRangeParams = {\n        rowStartIndex: startRow.rowIndex,\n        rowStartPinned: startRow.rowPinned,\n        rowEndIndex: endRow.rowIndex,\n        rowEndPinned: endRow.rowPinned,\n        columnStart: range.startColumn,\n        columns: range.columns\n      };\n      rangeSvc.addCellRange(cellRangeParams);\n    });\n  }\n  processCell(cellValueChanges) {\n    const cellValueChange = cellValueChanges[0];\n    const { rowIndex, rowPinned } = cellValueChange;\n    const rowPosition = { rowIndex, rowPinned };\n    const row = _getRowNode(this.beans, rowPosition);\n    const lastFocusedCell = {\n      rowPinned: cellValueChange.rowPinned,\n      rowIndex: row.rowIndex,\n      columnId: cellValueChange.columnId\n    };\n    this.setLastFocusedCell(lastFocusedCell);\n  }\n  setLastFocusedCell(lastFocusedCell) {\n    const { rowIndex, columnId, rowPinned } = lastFocusedCell;\n    const { colModel, focusSvc, rangeSvc } = this.beans;\n    const column = colModel.getCol(columnId);\n    if (!column) {\n      return;\n    }\n    const { scrollFeature } = this.gridBodyCtrl;\n    scrollFeature.ensureIndexVisible(rowIndex);\n    scrollFeature.ensureColumnVisible(column);\n    const cellPosition = { rowIndex, column, rowPinned };\n    focusSvc.setFocusedCell({ ...cellPosition, forceBrowserFocus: true });\n    rangeSvc?.setRangeToCell(cellPosition);\n  }\n  addListeners() {\n    this.addManagedEventListeners({\n      rowEditingStarted: (e) => {\n        this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n      },\n      rowEditingStopped: () => {\n        const action = new UndoRedoAction(this.cellValueChanges);\n        this.pushActionsToUndoStack(action);\n        this.activeRowEdit = null;\n      },\n      cellEditingStarted: (e) => {\n        this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n      },\n      cellEditingStopped: (e) => {\n        this.activeCellEdit = null;\n        const shouldPushAction = e.valueChanged && !this.activeRowEdit && !this.isPasting && !this.isRangeInAction;\n        if (shouldPushAction) {\n          const action = new UndoRedoAction(this.cellValueChanges);\n          this.pushActionsToUndoStack(action);\n        }\n      },\n      pasteStart: () => {\n        this.isPasting = true;\n      },\n      pasteEnd: () => {\n        const action = new UndoRedoAction(this.cellValueChanges);\n        this.pushActionsToUndoStack(action);\n        this.isPasting = false;\n      },\n      fillStart: () => {\n        this.isRangeInAction = true;\n      },\n      fillEnd: (event) => {\n        const action = new RangeUndoRedoAction(this.cellValueChanges, event.initialRange, event.finalRange);\n        this.pushActionsToUndoStack(action);\n        this.isRangeInAction = false;\n      },\n      keyShortcutChangedCellStart: () => {\n        this.isRangeInAction = true;\n      },\n      keyShortcutChangedCellEnd: () => {\n        let action;\n        const { rangeSvc, gos } = this.beans;\n        if (rangeSvc && _isCellSelectionEnabled(gos)) {\n          action = new RangeUndoRedoAction(this.cellValueChanges, void 0, void 0, [\n            ...rangeSvc.getCellRanges()\n          ]);\n        } else {\n          action = new UndoRedoAction(this.cellValueChanges);\n        }\n        this.pushActionsToUndoStack(action);\n        this.isRangeInAction = false;\n      }\n    });\n  }\n  pushActionsToUndoStack(action) {\n    this.undoStack.push(action);\n    this.cellValueChanges = [];\n    this.redoStack.clear();\n  }\n};\n\n// packages/ag-grid-community/src/edit/cell-editing.css-GENERATED.ts\nvar cellEditingCSS = (\n  /*css*/\n  `.ag-cell-inline-editing{border:var(--ag-cell-editing-border)!important;border-radius:var(--ag-border-radius);box-shadow:var(--ag-cell-editing-shadow);padding:0;z-index:1;.ag-cell-edit-wrapper,.ag-cell-editor,.ag-cell-wrapper,:where(.ag-cell-editor) .ag-input-field-input,:where(.ag-cell-editor) .ag-wrapper{height:100%;line-height:normal;min-height:100%;width:100%}}:where(.ag-popup-editor) .ag-large-text{background-color:var(--ag-background-color);border-radius:var(--ag-border-radius);box-shadow:var(--ag-dropdown-shadow);padding:0}.ag-large-text-input{height:auto;padding:var(--ag-cell-horizontal-padding)}:where(.ag-rtl .ag-large-text-input) textarea{resize:none}:where(.ag-ltr) .ag-checkbox-edit{padding-left:var(--ag-cell-horizontal-padding)}:where(.ag-rtl) .ag-checkbox-edit{padding-right:var(--ag-cell-horizontal-padding)}`\n);\n\n// packages/ag-grid-community/src/edit/cellEditors/checkboxCellEditor.ts\nvar CheckboxCellEditorElement = {\n  tag: \"div\",\n  cls: \"ag-cell-wrapper ag-cell-edit-wrapper ag-checkbox-edit\",\n  children: [\n    {\n      tag: \"ag-checkbox\",\n      ref: \"eCheckbox\",\n      role: \"presentation\"\n    }\n  ]\n};\nvar CheckboxCellEditor = class extends PopupComponent {\n  constructor() {\n    super(CheckboxCellEditorElement, [AgCheckboxSelector]);\n    this.eCheckbox = RefPlaceholder;\n  }\n  init(params) {\n    this.params = params;\n    const isSelected = params.value ?? void 0;\n    const eCheckbox = this.eCheckbox;\n    eCheckbox.setValue(isSelected);\n    const inputEl = eCheckbox.getInputElement();\n    inputEl.setAttribute(\"tabindex\", \"-1\");\n    this.setAriaLabel(isSelected);\n    this.addManagedListeners(eCheckbox, {\n      fieldValueChanged: (event) => this.setAriaLabel(event.selected)\n    });\n  }\n  getValue() {\n    return this.eCheckbox.getValue();\n  }\n  focusIn() {\n    this.eCheckbox.getFocusableElement().focus();\n  }\n  afterGuiAttached() {\n    if (this.params.cellStartedEdit) {\n      this.focusIn();\n    }\n  }\n  isPopup() {\n    return false;\n  }\n  setAriaLabel(isSelected) {\n    const translate = this.getLocaleTextFunc();\n    const stateName = _getAriaCheckboxStateName(translate, isSelected);\n    const ariaLabel = translate(\"ariaToggleCellValue\", \"Press SPACE to toggle cell value\");\n    this.eCheckbox.setInputAriaLabel(`${ariaLabel} (${stateName})`);\n  }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/simpleCellEditor.ts\nvar SimpleCellEditor = class extends PopupComponent {\n  constructor(cellEditorInput) {\n    super(\n      { tag: \"div\", cls: \"ag-cell-edit-wrapper\", children: [cellEditorInput.getTemplate()] },\n      cellEditorInput.getAgComponents()\n    );\n    this.cellEditorInput = cellEditorInput;\n    this.eInput = RefPlaceholder;\n  }\n  init(params) {\n    this.params = params;\n    const { cellStartedEdit, eventKey, suppressPreventDefault } = params;\n    const eInput = this.eInput;\n    this.cellEditorInput.init(eInput, params);\n    let startValue;\n    let shouldSetStartValue = true;\n    if (cellStartedEdit) {\n      this.focusAfterAttached = true;\n      if (eventKey === KeyCode.BACKSPACE || eventKey === KeyCode.DELETE) {\n        startValue = \"\";\n      } else if (eventKey && eventKey.length === 1) {\n        if (suppressPreventDefault) {\n          shouldSetStartValue = false;\n        } else {\n          startValue = eventKey;\n        }\n      } else {\n        startValue = this.cellEditorInput.getStartValue();\n        if (eventKey !== KeyCode.F2) {\n          this.highlightAllOnFocus = true;\n        }\n      }\n    } else {\n      this.focusAfterAttached = false;\n      startValue = this.cellEditorInput.getStartValue();\n    }\n    if (shouldSetStartValue && startValue != null) {\n      eInput.setStartValue(startValue);\n    }\n    this.addManagedElementListeners(eInput.getGui(), {\n      keydown: (event) => {\n        const { key } = event;\n        if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n          event.preventDefault();\n        }\n      }\n    });\n  }\n  afterGuiAttached() {\n    const translate = this.getLocaleTextFunc();\n    const eInput = this.eInput;\n    eInput.setInputAriaLabel(translate(\"ariaInputEditor\", \"Input Editor\"));\n    if (!this.focusAfterAttached) {\n      return;\n    }\n    if (!_isBrowserSafari()) {\n      eInput.getFocusableElement().focus();\n    }\n    const inputEl = eInput.getInputElement();\n    if (this.highlightAllOnFocus) {\n      inputEl.select();\n    } else {\n      this.cellEditorInput.setCaret?.();\n    }\n  }\n  // gets called when tabbing through cells and in full row edit mode\n  focusIn() {\n    const eInput = this.eInput;\n    const focusEl = eInput.getFocusableElement();\n    const inputEl = eInput.getInputElement();\n    focusEl.focus();\n    inputEl.select();\n  }\n  getValue() {\n    return this.cellEditorInput.getValue();\n  }\n  isPopup() {\n    return false;\n  }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/dateCellEditor.ts\nvar DateCellElement = {\n  tag: \"ag-input-date-field\",\n  ref: \"eInput\",\n  cls: \"ag-cell-editor\"\n};\nvar DateCellEditorInput = class {\n  getTemplate() {\n    return DateCellElement;\n  }\n  getAgComponents() {\n    return [AgInputDateFieldSelector];\n  }\n  init(eInput, params) {\n    this.eInput = eInput;\n    this.params = params;\n    const { min, max, step } = params;\n    if (min != null) {\n      eInput.setMin(min);\n    }\n    if (max != null) {\n      eInput.setMax(max);\n    }\n    if (step != null) {\n      eInput.setStep(step);\n    }\n  }\n  getValue() {\n    const { eInput, params } = this;\n    const value = eInput.getDate();\n    if (!_exists(value) && !_exists(params.value)) {\n      return params.value;\n    }\n    return value ?? null;\n  }\n  getStartValue() {\n    const { value } = this.params;\n    if (!(value instanceof Date)) {\n      return void 0;\n    }\n    return _serialiseDate(value, false);\n  }\n};\nvar DateCellEditor = class extends SimpleCellEditor {\n  constructor() {\n    super(new DateCellEditorInput());\n  }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/dateStringCellEditor.ts\nvar DateStringCellElement = {\n  tag: \"ag-input-date-field\",\n  ref: \"eInput\",\n  cls: \"ag-cell-editor\"\n};\nvar DateStringCellEditorInput = class {\n  constructor(getDataTypeService) {\n    this.getDataTypeService = getDataTypeService;\n  }\n  getTemplate() {\n    return DateStringCellElement;\n  }\n  getAgComponents() {\n    return [AgInputDateFieldSelector];\n  }\n  init(eInput, params) {\n    this.eInput = eInput;\n    this.params = params;\n    const { min, max, step } = params;\n    if (min != null) {\n      eInput.setMin(min);\n    }\n    if (max != null) {\n      eInput.setMax(max);\n    }\n    if (step != null) {\n      eInput.setStep(step);\n    }\n  }\n  getValue() {\n    const { params, eInput } = this;\n    const value = this.formatDate(eInput.getDate());\n    if (!_exists(value) && !_exists(params.value)) {\n      return params.value;\n    }\n    return params.parseValue(value ?? \"\");\n  }\n  getStartValue() {\n    return _serialiseDate(this.parseDate(this.params.value ?? void 0) ?? null, false);\n  }\n  parseDate(value) {\n    const dataTypeSvc = this.getDataTypeService();\n    return dataTypeSvc ? dataTypeSvc.getDateParserFunction(this.params.column)(value) : _parseDateTimeFromString(value) ?? void 0;\n  }\n  formatDate(value) {\n    const dataTypeSvc = this.getDataTypeService();\n    return dataTypeSvc ? dataTypeSvc.getDateFormatterFunction(this.params.column)(value) : _serialiseDate(value ?? null, false) ?? void 0;\n  }\n};\nvar DateStringCellEditor = class extends SimpleCellEditor {\n  constructor() {\n    super(new DateStringCellEditorInput(() => this.beans.dataTypeSvc));\n  }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/largeTextCellEditor.ts\nvar LargeTextCellElement = {\n  tag: \"div\",\n  cls: \"ag-large-text\",\n  children: [\n    {\n      tag: \"ag-input-text-area\",\n      ref: \"eTextArea\",\n      cls: \"ag-large-text-input\"\n    }\n  ]\n};\nvar LargeTextCellEditor = class extends PopupComponent {\n  constructor() {\n    super(LargeTextCellElement, [AgInputTextAreaSelector]);\n    this.eTextArea = RefPlaceholder;\n  }\n  init(params) {\n    this.params = params;\n    this.focusAfterAttached = params.cellStartedEdit;\n    this.eTextArea.setMaxLength(params.maxLength || 200).setCols(params.cols || 60).setRows(params.rows || 10);\n    if (params.value != null) {\n      this.eTextArea.setValue(params.value.toString(), true);\n    }\n    this.addGuiEventListener(\"keydown\", this.onKeyDown.bind(this));\n    this.activateTabIndex();\n  }\n  onKeyDown(event) {\n    const key = event.key;\n    if (key === KeyCode.LEFT || key === KeyCode.UP || key === KeyCode.RIGHT || key === KeyCode.DOWN || event.shiftKey && key === KeyCode.ENTER) {\n      event.stopPropagation();\n    }\n  }\n  afterGuiAttached() {\n    const translate = this.getLocaleTextFunc();\n    this.eTextArea.setInputAriaLabel(translate(\"ariaInputEditor\", \"Input Editor\"));\n    if (this.focusAfterAttached) {\n      this.eTextArea.getFocusableElement().focus();\n    }\n  }\n  getValue() {\n    const value = this.eTextArea.getValue();\n    const params = this.params;\n    if (!_exists(value) && !_exists(params.value)) {\n      return params.value;\n    }\n    return params.parseValue(value);\n  }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/numberCellEditor.ts\nvar NumberCellElement = {\n  tag: \"ag-input-number-field\",\n  ref: \"eInput\",\n  cls: \"ag-cell-editor\"\n};\nvar NumberCellEditorInput = class {\n  getTemplate() {\n    return NumberCellElement;\n  }\n  getAgComponents() {\n    return [AgInputNumberFieldSelector];\n  }\n  init(eInput, params) {\n    this.eInput = eInput;\n    this.params = params;\n    const { max, min, precision, step } = params;\n    if (max != null) {\n      eInput.setMax(max);\n    }\n    if (min != null) {\n      eInput.setMin(min);\n    }\n    if (precision != null) {\n      eInput.setPrecision(precision);\n    }\n    if (step != null) {\n      eInput.setStep(step);\n    }\n    const inputEl = eInput.getInputElement();\n    if (params.preventStepping) {\n      eInput.addManagedElementListeners(inputEl, { keydown: this.preventStepping });\n    } else if (params.showStepperButtons) {\n      inputEl.classList.add(\"ag-number-field-input-stepper\");\n    }\n  }\n  preventStepping(e) {\n    if (e.key === KeyCode.UP || e.key === KeyCode.DOWN) {\n      e.preventDefault();\n    }\n  }\n  getValue() {\n    const { eInput, params } = this;\n    const value = eInput.getValue();\n    if (!_exists(value) && !_exists(params.value)) {\n      return params.value;\n    }\n    let parsedValue = params.parseValue(value);\n    if (parsedValue == null) {\n      return parsedValue;\n    }\n    if (typeof parsedValue === \"string\") {\n      if (parsedValue === \"\") {\n        return null;\n      }\n      parsedValue = Number(parsedValue);\n    }\n    return isNaN(parsedValue) ? null : parsedValue;\n  }\n  getStartValue() {\n    return this.params.value;\n  }\n  setCaret() {\n    if (_isBrowserSafari()) {\n      this.eInput.getInputElement().focus({ preventScroll: true });\n    }\n  }\n};\nvar NumberCellEditor = class extends SimpleCellEditor {\n  constructor() {\n    super(new NumberCellEditorInput());\n  }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/selectCellEditor.ts\nvar SelectCellElement = {\n  tag: \"div\",\n  cls: \"ag-cell-edit-wrapper\",\n  children: [\n    {\n      tag: \"ag-select\",\n      ref: \"eSelect\",\n      cls: \"ag-cell-editor\"\n    }\n  ]\n};\nvar SelectCellEditor = class extends PopupComponent {\n  constructor() {\n    super(SelectCellElement, [AgSelectSelector]);\n    this.eSelect = RefPlaceholder;\n    this.startedByEnter = false;\n  }\n  wireBeans(beans) {\n    this.valueSvc = beans.valueSvc;\n  }\n  init(params) {\n    this.focusAfterAttached = params.cellStartedEdit;\n    const { eSelect, valueSvc, gos } = this;\n    const { values, value, eventKey } = params;\n    if (_missing(values)) {\n      _warn(58);\n      return;\n    }\n    this.startedByEnter = eventKey != null ? eventKey === KeyCode.ENTER : false;\n    let hasValue = false;\n    values.forEach((currentValue) => {\n      const option = { value: currentValue };\n      const valueFormatted = valueSvc.formatValue(params.column, null, currentValue);\n      const valueFormattedExits = valueFormatted !== null && valueFormatted !== void 0;\n      option.text = valueFormattedExits ? valueFormatted : currentValue;\n      eSelect.addOption(option);\n      hasValue = hasValue || value === currentValue;\n    });\n    if (hasValue) {\n      eSelect.setValue(params.value, true);\n    } else if (params.values.length) {\n      eSelect.setValue(params.values[0], true);\n    }\n    const { valueListGap, valueListMaxWidth, valueListMaxHeight } = params;\n    if (valueListGap != null) {\n      eSelect.setPickerGap(valueListGap);\n    }\n    if (valueListMaxHeight != null) {\n      eSelect.setPickerMaxHeight(valueListMaxHeight);\n    }\n    if (valueListMaxWidth != null) {\n      eSelect.setPickerMaxWidth(valueListMaxWidth);\n    }\n    if (gos.get(\"editType\") !== \"fullRow\") {\n      this.addManagedListeners(this.eSelect, { selectedItem: () => params.stopEditing() });\n    }\n  }\n  afterGuiAttached() {\n    if (this.focusAfterAttached) {\n      this.eSelect.getFocusableElement().focus();\n    }\n    if (this.startedByEnter) {\n      setTimeout(() => {\n        if (this.isAlive()) {\n          this.eSelect.showPicker();\n        }\n      });\n    }\n  }\n  focusIn() {\n    this.eSelect.getFocusableElement().focus();\n  }\n  getValue() {\n    return this.eSelect.getValue();\n  }\n  isPopup() {\n    return false;\n  }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/textCellEditor.ts\nvar TextCellEditorElement = {\n  tag: \"ag-input-text-field\",\n  ref: \"eInput\",\n  cls: \"ag-cell-editor\"\n};\nvar TextCellEditorInput = class {\n  getTemplate() {\n    return TextCellEditorElement;\n  }\n  getAgComponents() {\n    return [AgInputTextFieldSelector];\n  }\n  init(eInput, params) {\n    this.eInput = eInput;\n    this.params = params;\n    const maxLength = params.maxLength;\n    if (maxLength != null) {\n      eInput.setMaxLength(maxLength);\n    }\n  }\n  getValue() {\n    const { eInput, params } = this;\n    const value = eInput.getValue();\n    if (!_exists(value) && !_exists(params.value)) {\n      return params.value;\n    }\n    return params.parseValue(value);\n  }\n  getStartValue() {\n    const params = this.params;\n    const formatValue = params.useFormatter || params.column.getColDef().refData;\n    return formatValue ? params.formatValue(params.value) : params.value;\n  }\n  setCaret() {\n    const eInput = this.eInput;\n    const value = eInput.getValue();\n    const len = _exists(value) && value.length || 0;\n    if (len) {\n      eInput.getInputElement().setSelectionRange(len, len);\n    }\n  }\n};\nvar TextCellEditor = class extends SimpleCellEditor {\n  constructor() {\n    super(new TextCellEditorInput());\n  }\n};\n\n// packages/ag-grid-community/src/api/scrollApi.ts\nfunction getVerticalPixelRange(beans) {\n  return beans.ctrlsSvc.getScrollFeature().getVScrollPosition();\n}\nfunction getHorizontalPixelRange(beans) {\n  return beans.ctrlsSvc.getScrollFeature().getHScrollPosition();\n}\nfunction ensureColumnVisible(beans, key, position = \"auto\") {\n  beans.frameworkOverrides.wrapIncoming(\n    () => beans.ctrlsSvc.getScrollFeature().ensureColumnVisible(key, position),\n    \"ensureVisible\"\n  );\n}\nfunction ensureIndexVisible(beans, index, position) {\n  beans.frameworkOverrides.wrapIncoming(\n    () => beans.ctrlsSvc.getScrollFeature().ensureIndexVisible(index, position),\n    \"ensureVisible\"\n  );\n}\nfunction ensureNodeVisible(beans, nodeSelector, position = null) {\n  beans.frameworkOverrides.wrapIncoming(\n    () => beans.ctrlsSvc.getScrollFeature().ensureNodeVisible(nodeSelector, position),\n    \"ensureVisible\"\n  );\n}\n\n// packages/ag-grid-community/src/edit/editApi.ts\nfunction undoCellEditing(beans) {\n  beans.undoRedo?.undo(\"api\");\n}\nfunction redoCellEditing(beans) {\n  beans.undoRedo?.redo(\"api\");\n}\nfunction getCellEditorInstances(beans, params = {}) {\n  const res = [];\n  beans.rowRenderer.getCellCtrls(params.rowNodes, params.columns).forEach((cellCtrl) => {\n    const cellEditor = cellCtrl.comp?.getCellEditor();\n    if (cellEditor) {\n      res.push(_unwrapUserComp(cellEditor));\n    }\n  });\n  return res;\n}\nfunction getEditingCells(beans) {\n  const res = [];\n  beans.rowRenderer.getAllCellCtrls().forEach((cellCtrl) => {\n    if (cellCtrl.editing) {\n      const { cellPosition } = cellCtrl;\n      res.push(cellPosition);\n    }\n  });\n  return res;\n}\nfunction stopEditing(beans, cancel = false) {\n  beans.editSvc?.stopAllEditing(cancel);\n}\nfunction startEditingCell(beans, params) {\n  const column = beans.colModel.getCol(params.colKey);\n  if (!column) {\n    _warn(12, { colKey: params.colKey });\n    return;\n  }\n  const cellPosition = {\n    rowIndex: params.rowIndex,\n    rowPinned: params.rowPinned || null,\n    column\n  };\n  const notPinned = params.rowPinned == null;\n  if (notPinned) {\n    ensureIndexVisible(beans, params.rowIndex);\n  }\n  ensureColumnVisible(beans, params.colKey);\n  const cell = _getCellByPosition(beans, cellPosition);\n  if (!cell) {\n    return;\n  }\n  const { focusSvc, gos, editSvc } = beans;\n  const isFocusWithinCell = () => {\n    const activeElement = _getActiveDomElement(beans);\n    const eCell = cell.eGui;\n    return activeElement !== eCell && !!eCell?.contains(activeElement);\n  };\n  const forceBrowserFocus = gos.get(\"stopEditingWhenCellsLoseFocus\") && isFocusWithinCell();\n  if (forceBrowserFocus || !focusSvc.isCellFocused(cellPosition)) {\n    focusSvc.setFocusedCell({\n      ...cellPosition,\n      forceBrowserFocus,\n      preventScrollOnBrowserFocus: true\n    });\n  }\n  editSvc?.startRowOrCellEdit(cell, params.key);\n}\nfunction getCurrentUndoSize(beans) {\n  return beans.undoRedo?.getCurrentUndoStackSize() ?? 0;\n}\nfunction getCurrentRedoSize(beans) {\n  return beans.undoRedo?.getCurrentRedoStackSize() ?? 0;\n}\n\n// packages/ag-grid-community/src/edit/cellEditors/popupEditorWrapper.ts\nvar PopupEditorElement = { tag: \"div\", cls: \"ag-popup-editor\", attrs: { tabindex: \"-1\" } };\nvar PopupEditorWrapper = class extends PopupComponent {\n  constructor(params) {\n    super(PopupEditorElement);\n    this.params = params;\n  }\n  postConstruct() {\n    _setDomData(this.gos, this.getGui(), \"popupEditorWrapper\", true);\n    this.addKeyDownListener();\n  }\n  addKeyDownListener() {\n    const eGui = this.getGui();\n    const params = this.params;\n    const listener = (event) => {\n      if (!_isUserSuppressingKeyboardEvent(this.gos, event, params.node, params.column, true)) {\n        params.onKeyDown(event);\n      }\n    };\n    this.addManagedElementListeners(eGui, { keydown: listener });\n  }\n};\n\n// packages/ag-grid-community/src/edit/editService.ts\nvar EditService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"editSvc\";\n  }\n  /** @return whether to prevent default on event */\n  startEditing(cellCtrl, key = null, cellStartedEdit = false, event = null) {\n    if (!cellCtrl.isCellEditable() || cellCtrl.editing) {\n      return false;\n    }\n    if (!cellCtrl.comp) {\n      cellCtrl.onCompAttachedFuncs.push(() => {\n        this.startEditing(cellCtrl, key, cellStartedEdit, event);\n      });\n      return true;\n    }\n    const editorParams = this.createCellEditorParams(cellCtrl, key, cellStartedEdit);\n    const colDef = cellCtrl.column.getColDef();\n    const compDetails = _getCellEditorDetails(this.beans.userCompFactory, colDef, editorParams);\n    const popup = compDetails?.popupFromSelector != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;\n    const position = compDetails?.popupPositionFromSelector != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;\n    setEditing(cellCtrl, true, compDetails);\n    cellCtrl.comp.setEditDetails(compDetails, popup, position, this.gos.get(\"reactiveCustomComponents\"));\n    this.eventSvc.dispatchEvent(cellCtrl.createEvent(event, \"cellEditingStarted\"));\n    return !compDetails?.params?.suppressPreventDefault;\n  }\n  /**\n   * Ends the Cell Editing\n   * @param cancel `True` if the edit process is being canceled.\n   * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.\n   */\n  stopEditing(cellCtrl, cancel = false) {\n    cellCtrl.onEditorAttachedFuncs = [];\n    if (!cellCtrl.editing) {\n      return false;\n    }\n    const { comp: cellComp, column, rowNode } = cellCtrl;\n    const { newValue, newValueExists } = takeValueFromCellEditor(cancel, cellComp);\n    const oldValue = this.beans.valueSvc.getValueForDisplay(column, rowNode).value;\n    let valueChanged = false;\n    if (newValueExists) {\n      valueChanged = saveNewValue(cellCtrl, oldValue, newValue, rowNode, column);\n    }\n    setEditing(cellCtrl, false, void 0);\n    cellComp.setEditDetails();\n    cellCtrl.updateAndFormatValue(false);\n    cellCtrl.refreshCell({ forceRefresh: true, suppressFlash: true });\n    this.eventSvc.dispatchEvent({\n      ...cellCtrl.createEvent(null, \"cellEditingStopped\"),\n      oldValue,\n      newValue,\n      valueChanged\n    });\n    return valueChanged;\n  }\n  handleColDefChanged(cellCtrl) {\n    const cellEditor = cellCtrl.comp?.getCellEditor();\n    if (cellEditor?.refresh) {\n      const { eventKey, cellStartedEdit } = cellCtrl.editCompDetails.params;\n      const editorParams = this.createCellEditorParams(cellCtrl, eventKey, cellStartedEdit);\n      const colDef = cellCtrl.column.getColDef();\n      const compDetails = _getCellEditorDetails(this.beans.userCompFactory, colDef, editorParams);\n      cellEditor.refresh(compDetails.params);\n    }\n  }\n  setFocusOutOnEditor(cellCtrl) {\n    if (!cellCtrl.editing) {\n      return;\n    }\n    const cellEditor = cellCtrl.comp.getCellEditor();\n    if (cellEditor && cellEditor.focusOut) {\n      cellEditor.focusOut();\n    }\n  }\n  setFocusInOnEditor(cellCtrl) {\n    if (!cellCtrl.editing) {\n      return;\n    }\n    const cellComp = cellCtrl.comp;\n    const cellEditor = cellComp.getCellEditor();\n    if (cellEditor?.focusIn) {\n      cellEditor.focusIn();\n    } else {\n      cellCtrl.focusCell(true);\n      cellCtrl.onEditorAttachedFuncs.push(() => cellComp.getCellEditor()?.focusIn?.());\n    }\n  }\n  createPopupEditorWrapper(params) {\n    return new PopupEditorWrapper(params);\n  }\n  stopAllEditing(cancel = false) {\n    this.beans.rowRenderer.getAllRowCtrls().forEach((rowCtrl) => this.stopRowEditing(rowCtrl, cancel));\n  }\n  stopRowEditing(rowCtrl, cancel = false) {\n    if (rowCtrl.stoppingRowEdit) {\n      return;\n    }\n    const cellControls = rowCtrl.getAllCellCtrls();\n    const isRowEdit = rowCtrl.editing;\n    rowCtrl.stoppingRowEdit = true;\n    let fireRowEditEvent = false;\n    for (const ctrl of cellControls) {\n      const valueChanged = ctrl.stopEditing(cancel);\n      if (isRowEdit && !cancel && !fireRowEditEvent && valueChanged) {\n        fireRowEditEvent = true;\n      }\n    }\n    if (fireRowEditEvent) {\n      this.eventSvc.dispatchEvent(rowCtrl.createRowEvent(\"rowValueChanged\"));\n    }\n    if (isRowEdit) {\n      this.beans.rowEditSvc?.setEditing(rowCtrl, false);\n    }\n    rowCtrl.stoppingRowEdit = false;\n  }\n  addStopEditingWhenGridLosesFocus(viewports) {\n    if (!this.gos.get(\"stopEditingWhenCellsLoseFocus\")) {\n      return;\n    }\n    const focusOutListener = (event) => {\n      const elementWithFocus = event.relatedTarget;\n      if (_getTabIndex(elementWithFocus) === null) {\n        this.stopAllEditing();\n        return;\n      }\n      let clickInsideGrid = (\n        // see if click came from inside the viewports\n        viewports.some((viewport) => viewport.contains(elementWithFocus)) && // and also that it's not from a detail grid\n        _isElementInThisGrid(this.gos, elementWithFocus)\n      );\n      if (!clickInsideGrid) {\n        const popupSvc = this.beans.popupSvc;\n        clickInsideGrid = !!popupSvc && (popupSvc.getActivePopups().some((popup) => popup.contains(elementWithFocus)) || popupSvc.isElementWithinCustomPopup(elementWithFocus));\n      }\n      if (!clickInsideGrid) {\n        this.stopAllEditing();\n      }\n    };\n    viewports.forEach((viewport) => this.addManagedElementListeners(viewport, { focusout: focusOutListener }));\n  }\n  setInlineEditingCss(rowCtrl) {\n    const editing = rowCtrl.editing || rowCtrl.getAllCellCtrls().some((cellCtrl) => cellCtrl.editing);\n    rowCtrl.forEachGui(void 0, (gui) => {\n      gui.rowComp.toggleCss(\"ag-row-inline-editing\", editing);\n      gui.rowComp.toggleCss(\"ag-row-not-inline-editing\", !editing);\n    });\n  }\n  isCellEditable(column, rowNode) {\n    if (rowNode.group) {\n      if (this.gos.get(\"treeData\")) {\n        if (!rowNode.data && !this.gos.get(\"enableGroupEdit\")) {\n          return false;\n        }\n      } else {\n        if (!this.gos.get(\"enableGroupEdit\")) {\n          return false;\n        }\n      }\n    }\n    return column.isColumnFunc(rowNode, column.colDef.editable);\n  }\n  // called by rowRenderer when user navigates via tab key\n  /** @return whether to prevent default on event */\n  startRowOrCellEdit(cellCtrl, key, event = null) {\n    if (!cellCtrl.comp) {\n      cellCtrl.onCompAttachedFuncs.push(() => {\n        this.startRowOrCellEdit(cellCtrl, key, event);\n      });\n      return true;\n    }\n    if (this.gos.get(\"editType\") === \"fullRow\") {\n      return this.beans.rowEditSvc?.startEditing(cellCtrl.rowCtrl, key, cellCtrl) ?? false;\n    } else {\n      return this.startEditing(cellCtrl, key, true, event);\n    }\n  }\n  // pass in 'true' to cancel the editing.\n  stopRowOrCellEdit(cellCtrl, cancel = false, suppressNavigateAfterEdit = false, shiftKey = false) {\n    if (this.gos.get(\"editType\") === \"fullRow\") {\n      this.stopRowEditing(cellCtrl.rowCtrl, cancel);\n    } else {\n      this.stopEditing(cellCtrl, cancel);\n    }\n    if (!suppressNavigateAfterEdit) {\n      this.navigateAfterEdit(shiftKey, cellCtrl.cellPosition);\n    }\n  }\n  createCellEditorParams(cellCtrl, key, cellStartedEdit) {\n    const {\n      column,\n      rowNode,\n      cellPosition: { rowIndex }\n    } = cellCtrl;\n    const { valueSvc, gos } = this.beans;\n    return _addGridCommonParams(gos, {\n      value: valueSvc.getValueForDisplay(column, rowNode).value,\n      eventKey: key,\n      column,\n      colDef: column.getColDef(),\n      rowIndex,\n      node: rowNode,\n      data: rowNode.data,\n      cellStartedEdit,\n      onKeyDown: cellCtrl.onKeyDown.bind(cellCtrl),\n      stopEditing: this.stopRowOrCellEdit.bind(this, cellCtrl, false),\n      eGridCell: cellCtrl.eGui,\n      parseValue: (newValue) => valueSvc.parseValue(column, rowNode, newValue, cellCtrl.value),\n      formatValue: cellCtrl.formatValue.bind(cellCtrl)\n    });\n  }\n  navigateAfterEdit(shiftKey, cellPosition) {\n    const enterNavigatesVerticallyAfterEdit = this.gos.get(\"enterNavigatesVerticallyAfterEdit\");\n    if (enterNavigatesVerticallyAfterEdit) {\n      const key = shiftKey ? KeyCode.UP : KeyCode.DOWN;\n      this.beans.navigation?.navigateToNextCell(null, key, cellPosition, false);\n    }\n  }\n};\nfunction setEditing(cellCtrl, editing, compDetails) {\n  cellCtrl.editCompDetails = compDetails;\n  if (cellCtrl.editing === editing) {\n    return;\n  }\n  cellCtrl.editing = editing;\n}\nfunction takeValueFromCellEditor(cancel, cellComp) {\n  const noValueResult = { newValueExists: false };\n  if (cancel) {\n    return noValueResult;\n  }\n  const cellEditor = cellComp.getCellEditor();\n  if (!cellEditor) {\n    return noValueResult;\n  }\n  const userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();\n  if (userWantsToCancel) {\n    return noValueResult;\n  }\n  const newValue = cellEditor.getValue();\n  return {\n    newValue,\n    newValueExists: true\n  };\n}\nfunction saveNewValue(cellCtrl, oldValue, newValue, rowNode, column) {\n  if (newValue === oldValue) {\n    return false;\n  }\n  cellCtrl.suppressRefreshCell = true;\n  const valueChanged = rowNode.setDataValue(column, newValue, \"edit\");\n  cellCtrl.suppressRefreshCell = false;\n  return valueChanged;\n}\n\n// packages/ag-grid-community/src/edit/rowEditService.ts\nvar RowEditService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowEditSvc\";\n  }\n  /** @return whether to prevent default on event */\n  startEditing(rowCtrl, key = null, sourceRenderedCell = null, event = null) {\n    if (rowCtrl.editing) {\n      return false;\n    }\n    let preventDefault = true;\n    let atLeastOneEditing = false;\n    const { editSvc } = this.beans;\n    rowCtrl.getAllCellCtrls().forEach((cellCtrl) => {\n      const cellStartedEdit = cellCtrl === sourceRenderedCell;\n      if (cellStartedEdit) {\n        preventDefault = editSvc?.startEditing(cellCtrl, key, cellStartedEdit, event) ?? false;\n      } else {\n        editSvc?.startEditing(cellCtrl, null, cellStartedEdit, event);\n      }\n      atLeastOneEditing || (atLeastOneEditing = cellCtrl.editing);\n    });\n    if (atLeastOneEditing) {\n      this.setEditing(rowCtrl, true);\n    }\n    return preventDefault;\n  }\n  setEditing(rowCtrl, value) {\n    rowCtrl.editing = value;\n    rowCtrl.forEachGui(void 0, (gui) => gui.rowComp.toggleCss(\"ag-row-editing\", value));\n    const event = value ? rowCtrl.createRowEvent(\"rowEditingStarted\") : rowCtrl.createRowEvent(\"rowEditingStopped\");\n    this.eventSvc.dispatchEvent(event);\n  }\n};\n\n// packages/ag-grid-community/src/edit/editModule.ts\nvar EditCoreModule = {\n  moduleName: \"EditCore\",\n  version: VERSION,\n  beans: [EditService, RowEditService],\n  apiFunctions: {\n    getCellEditorInstances,\n    getEditingCells,\n    stopEditing,\n    startEditingCell\n  },\n  dependsOn: [PopupModule],\n  css: [cellEditingCSS]\n};\nvar UndoRedoEditModule = {\n  moduleName: \"UndoRedoEdit\",\n  version: VERSION,\n  beans: [UndoRedoService],\n  apiFunctions: {\n    undoCellEditing,\n    redoCellEditing,\n    getCurrentUndoSize,\n    getCurrentRedoSize\n  },\n  dependsOn: [EditCoreModule]\n};\nvar TextEditorModule = {\n  moduleName: \"TextEditor\",\n  version: VERSION,\n  userComponents: { agCellEditor: TextCellEditor, agTextCellEditor: TextCellEditor },\n  dependsOn: [EditCoreModule]\n};\nvar NumberEditorModule = {\n  moduleName: \"NumberEditor\",\n  version: VERSION,\n  userComponents: {\n    agNumberCellEditor: {\n      classImp: NumberCellEditor,\n      params: {\n        suppressPreventDefault: true\n      }\n    }\n  },\n  dependsOn: [EditCoreModule]\n};\nvar DateEditorModule = {\n  moduleName: \"DateEditor\",\n  version: VERSION,\n  userComponents: {\n    agDateCellEditor: DateCellEditor,\n    agDateStringCellEditor: DateStringCellEditor\n  },\n  dependsOn: [EditCoreModule]\n};\nvar CheckboxEditorModule = {\n  moduleName: \"CheckboxEditor\",\n  version: VERSION,\n  userComponents: {\n    agCheckboxCellEditor: CheckboxCellEditor\n  },\n  dependsOn: [EditCoreModule]\n};\nvar SelectEditorModule = {\n  moduleName: \"SelectEditor\",\n  version: VERSION,\n  userComponents: { agSelectCellEditor: SelectCellEditor },\n  dependsOn: [EditCoreModule]\n};\nvar LargeTextEditorModule = {\n  moduleName: \"LargeTextEditor\",\n  version: VERSION,\n  userComponents: { agLargeTextCellEditor: LargeTextCellEditor },\n  dependsOn: [EditCoreModule]\n};\nvar CustomEditorModule = {\n  moduleName: \"CustomEditor\",\n  version: VERSION,\n  dependsOn: [EditCoreModule]\n};\n\n// packages/ag-grid-community/src/columns/selectionColService.ts\nvar SelectionColService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"selectionColSvc\";\n  }\n  postConstruct() {\n    this.addManagedPropertyListener(\"rowSelection\", (event) => {\n      this.onSelectionOptionsChanged(\n        event.currentValue,\n        event.previousValue,\n        _convertColumnEventSourceType(event.source)\n      );\n    });\n    this.addManagedPropertyListener(\"selectionColumnDef\", this.updateColumns.bind(this));\n  }\n  addColumns(cols) {\n    const selectionCols = this.columns;\n    if (selectionCols == null) {\n      return;\n    }\n    cols.list = selectionCols.list.concat(cols.list);\n    cols.tree = selectionCols.tree.concat(cols.tree);\n    _updateColsMap(cols);\n  }\n  createColumns(cols, updateOrders) {\n    const destroyCollection = () => {\n      _destroyColumnTree(this.beans, this.columns?.tree);\n      this.columns = null;\n    };\n    const newTreeDepth = cols.treeDepth;\n    const oldTreeDepth = this.columns?.treeDepth ?? -1;\n    const treeDepthSame = oldTreeDepth == newTreeDepth;\n    const list = this.generateSelectionCols();\n    const areSame = _areColIdsEqual(list, this.columns?.list ?? []);\n    if (areSame && treeDepthSame) {\n      return;\n    }\n    destroyCollection();\n    const { colGroupSvc } = this.beans;\n    const treeDepth = colGroupSvc?.findDepth(cols.tree) ?? 0;\n    const tree = colGroupSvc?.balanceTreeForAutoCols(list, treeDepth) ?? [];\n    this.columns = {\n      list,\n      tree,\n      treeDepth,\n      map: {}\n    };\n    const putSelectionColsFirstInList = (cols2) => {\n      if (!cols2) {\n        return null;\n      }\n      const colsFiltered = cols2.filter((col) => !isColumnSelectionCol(col));\n      return [...list, ...colsFiltered];\n    };\n    updateOrders(putSelectionColsFirstInList);\n  }\n  updateColumns(event) {\n    const source = _convertColumnEventSourceType(event.source);\n    this.columns?.list.forEach((col) => {\n      const newColDef = this.createSelectionColDef(event.currentValue);\n      col.setColDef(newColDef, null, source);\n      _applyColumnState(this.beans, { state: [{ ...newColDef, colId: col.getColId() }] }, source);\n    });\n  }\n  getColumn(key) {\n    return this.columns?.list.find((col) => _columnsMatch(col, key)) ?? null;\n  }\n  getColumns() {\n    return this.columns?.list ?? null;\n  }\n  isSelectionColumnEnabled() {\n    const { gos, beans } = this;\n    const rowSelection = gos.get(\"rowSelection\");\n    if (typeof rowSelection !== \"object\" || !_isRowSelection(gos)) {\n      return false;\n    }\n    const hasAutoCols = (beans.autoColSvc?.getColumns()?.length ?? 0) > 0;\n    if (rowSelection.checkboxLocation === \"autoGroupColumn\" && hasAutoCols) {\n      return false;\n    }\n    const checkboxes = !!_getCheckboxes(rowSelection);\n    const headerCheckbox = _getHeaderCheckbox(rowSelection);\n    return checkboxes || headerCheckbox;\n  }\n  createSelectionColDef(def) {\n    const { gos } = this.beans;\n    const selectionColumnDef = def ?? gos.get(\"selectionColumnDef\");\n    const enableRTL = gos.get(\"enableRtl\");\n    const { rowSpan: _, spanRows: __, ...filteredSelColDef } = selectionColumnDef ?? {};\n    return {\n      // overridable properties\n      width: 50,\n      resizable: false,\n      suppressHeaderMenuButton: true,\n      sortable: false,\n      suppressMovable: true,\n      lockPosition: enableRTL ? \"right\" : \"left\",\n      comparator(valueA, valueB, nodeA, nodeB) {\n        const aSelected = nodeA.isSelected();\n        const bSelected = nodeB.isSelected();\n        return aSelected === bSelected ? 0 : aSelected ? 1 : -1;\n      },\n      editable: false,\n      suppressFillHandle: true,\n      pinned: null,\n      // overrides\n      ...filteredSelColDef,\n      // non-overridable properties\n      colId: SELECTION_COLUMN_ID,\n      chartDataType: \"excluded\"\n    };\n  }\n  generateSelectionCols() {\n    if (!this.isSelectionColumnEnabled()) {\n      return [];\n    }\n    const colDef = this.createSelectionColDef();\n    const colId = colDef.colId;\n    this.gos.validateColDef(colDef, colId, true);\n    const col = new AgColumn(colDef, null, colId, false);\n    this.createBean(col);\n    return [col];\n  }\n  onSelectionOptionsChanged(current, prev, source) {\n    const prevCheckbox = prev && typeof prev !== \"string\" ? _getCheckboxes(prev) : void 0;\n    const currCheckbox = current && typeof current !== \"string\" ? _getCheckboxes(current) : void 0;\n    const checkboxHasChanged = prevCheckbox !== currCheckbox;\n    const prevHeaderCheckbox = prev && typeof prev !== \"string\" ? _getHeaderCheckbox(prev) : void 0;\n    const currHeaderCheckbox = current && typeof current !== \"string\" ? _getHeaderCheckbox(current) : void 0;\n    const headerCheckboxHasChanged = prevHeaderCheckbox !== currHeaderCheckbox;\n    const currLocation = _getCheckboxLocation(current);\n    const prevLocation = _getCheckboxLocation(prev);\n    const locationChanged = currLocation !== prevLocation;\n    if (checkboxHasChanged || headerCheckboxHasChanged || locationChanged) {\n      this.beans.colModel.refreshAll(source);\n    }\n  }\n  destroy() {\n    _destroyColumnTree(this.beans, this.columns?.tree);\n    super.destroy();\n  }\n  /**\n   * Refreshes visibility of the selection column based on which columns are currently visible.\n   * Called by the VisibleColsService with the columns that are currently visible in left/center/right\n   * containers. This method *MUTATES* those arrays directly.\n   *\n   * The selection column should be visible if all of the following are true\n   * - The selection column is not disabled\n   * - The number of visible columns excluding the selection column and row numbers column is greater than 0\n   * @param leftCols Visible columns in the left-pinned container\n   * @param centerCols Visible columns in the center viewport\n   * @param rightCols Visible columns in the right-pinned container\n   */\n  refreshVisibility(leftCols, centerCols, rightCols) {\n    if (!this.columns?.list.length) {\n      return;\n    }\n    const numVisibleCols = leftCols.length + centerCols.length + rightCols.length;\n    if (numVisibleCols === 0) {\n      return;\n    }\n    const column = this.columns.list[0];\n    if (!column.isVisible())\n      return;\n    const hideSelectionCol = () => {\n      let cols;\n      switch (column.pinned) {\n        case \"left\":\n        case true:\n          cols = leftCols;\n          break;\n        case \"right\":\n          cols = rightCols;\n          break;\n        default:\n          cols = centerCols;\n      }\n      cols && _removeFromArray(cols, column);\n    };\n    const rowNumbersCol = this.beans.rowNumbersSvc?.getColumn(ROW_NUMBERS_COLUMN_ID);\n    const expectedNumCols = rowNumbersCol ? 2 : 1;\n    if (expectedNumCols === numVisibleCols) {\n      hideSelectionCol();\n    }\n  }\n};\n\n// packages/ag-grid-community/src/selection/rowSelectionApi.ts\nfunction setNodesSelected(beans, params) {\n  const allNodesValid = params.nodes.every((node) => {\n    if (node.rowPinned && !_isManualPinnedRow(node)) {\n      _warn(59);\n      return false;\n    }\n    if (node.id === void 0) {\n      _warn(60);\n      return false;\n    }\n    return true;\n  });\n  if (!allNodesValid) {\n    return;\n  }\n  const { nodes, source, newValue } = params;\n  beans.selectionSvc?.setNodesSelected({ nodes, source: source ?? \"api\", newValue });\n}\nfunction selectAll(beans, selectAll2, source = \"apiSelectAll\") {\n  beans.selectionSvc?.selectAllRowNodes({ source, selectAll: selectAll2 });\n}\nfunction deselectAll(beans, selectAll2, source = \"apiSelectAll\") {\n  beans.selectionSvc?.deselectAllRowNodes({ source, selectAll: selectAll2 });\n}\nfunction selectAllFiltered(beans, source = \"apiSelectAllFiltered\") {\n  beans.selectionSvc?.selectAllRowNodes({ source, selectAll: \"filtered\" });\n}\nfunction deselectAllFiltered(beans, source = \"apiSelectAllFiltered\") {\n  beans.selectionSvc?.deselectAllRowNodes({ source, selectAll: \"filtered\" });\n}\nfunction selectAllOnCurrentPage(beans, source = \"apiSelectAllCurrentPage\") {\n  beans.selectionSvc?.selectAllRowNodes({ source, selectAll: \"currentPage\" });\n}\nfunction deselectAllOnCurrentPage(beans, source = \"apiSelectAllCurrentPage\") {\n  beans.selectionSvc?.deselectAllRowNodes({ source, selectAll: \"currentPage\" });\n}\nfunction getSelectedNodes(beans) {\n  return beans.selectionSvc?.getSelectedNodes() ?? [];\n}\nfunction getSelectedRows(beans) {\n  return beans.selectionSvc?.getSelectedRows() ?? [];\n}\n\n// packages/ag-grid-community/src/selection/selectionService.ts\nvar SelectionService = class extends BaseSelectionService {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"selectionSvc\";\n    this.selectedNodes = /* @__PURE__ */ new Map();\n    /** Only used to track detail grid selection state when master/detail is enabled */\n    this.detailSelection = /* @__PURE__ */ new Map();\n    this.masterSelectsDetail = false;\n  }\n  postConstruct() {\n    super.postConstruct();\n    const { gos } = this;\n    this.mode = _getRowSelectionMode(gos);\n    this.groupSelectsDescendants = _getGroupSelectsDescendants(gos);\n    this.groupSelectsFiltered = _getGroupSelection(gos) === \"filteredDescendants\";\n    this.masterSelectsDetail = _getMasterSelects(gos) === \"detail\";\n    this.addManagedPropertyListeners([\"groupSelectsChildren\", \"groupSelectsFiltered\", \"rowSelection\"], () => {\n      const groupSelectsDescendants = _getGroupSelectsDescendants(gos);\n      const selectionMode = _getRowSelectionMode(gos);\n      const groupSelectsFiltered = _getGroupSelection(gos) === \"filteredDescendants\";\n      this.masterSelectsDetail = _getMasterSelects(gos) === \"detail\";\n      if (groupSelectsDescendants !== this.groupSelectsDescendants || groupSelectsFiltered !== this.groupSelectsFiltered || selectionMode !== this.mode) {\n        this.deselectAllRowNodes({ source: \"api\" });\n        this.groupSelectsDescendants = groupSelectsDescendants;\n        this.groupSelectsFiltered = groupSelectsFiltered;\n        this.mode = selectionMode;\n      }\n    });\n    this.addManagedEventListeners({ rowSelected: this.onRowSelected.bind(this) });\n  }\n  destroy() {\n    super.destroy();\n    this.resetNodes();\n  }\n  handleSelectionEvent(event, rowNode, source) {\n    if (this.isRowSelectionBlocked(rowNode))\n      return 0;\n    const selection = this.inferNodeSelections(rowNode, event.shiftKey, event.metaKey || event.ctrlKey, source);\n    if (selection == null) {\n      return 0;\n    }\n    this.selectionCtx.selectAll = false;\n    if (\"select\" in selection) {\n      if (selection.reset) {\n        this.resetNodes();\n      } else {\n        this.selectRange(selection.deselect, false, source);\n      }\n      return this.selectRange(selection.select, true, source);\n    } else {\n      return this.setNodesSelected({\n        nodes: [selection.node],\n        newValue: selection.newValue,\n        clearSelection: selection.clearSelection,\n        keepDescendants: selection.keepDescendants,\n        event,\n        source\n      });\n    }\n  }\n  setNodesSelected({\n    newValue,\n    clearSelection,\n    suppressFinishActions,\n    nodes,\n    event,\n    source,\n    keepDescendants = false\n  }) {\n    if (!_isRowSelection(this.gos) && newValue) {\n      _warn(132);\n      return 0;\n    }\n    if (nodes.length === 0)\n      return 0;\n    if (nodes.length > 1 && !this.isMultiSelect()) {\n      _warn(130);\n      return 0;\n    }\n    let updatedCount = 0;\n    for (let i = 0; i < nodes.length; i++) {\n      const rowNode = nodes[i];\n      const node = _normaliseSiblingRef(rowNode);\n      const skipThisNode = this.groupSelectsFiltered && node.group;\n      if (node.rowPinned && !_isManualPinnedRow(node)) {\n        _warn(59);\n        continue;\n      }\n      if (node.id === void 0) {\n        _warn(60);\n        continue;\n      }\n      if (!skipThisNode) {\n        const thisNodeWasSelected = this.selectRowNode(node, newValue, event, source);\n        if (thisNodeWasSelected) {\n          this.detailSelection.delete(node.id);\n          updatedCount++;\n        }\n      }\n      if (this.groupSelectsDescendants && node.childrenAfterGroup?.length) {\n        updatedCount += this.selectChildren(node, newValue, source);\n      }\n    }\n    if (!suppressFinishActions) {\n      if (nodes.length === 1 && source === \"api\") {\n        this.selectionCtx.setRoot(_normaliseSiblingRef(nodes[0]));\n      }\n      const clearOtherNodes = newValue && (clearSelection || !this.isMultiSelect());\n      if (clearOtherNodes) {\n        updatedCount += this.clearOtherNodes(_normaliseSiblingRef(nodes[0]), keepDescendants, source);\n      }\n      if (updatedCount > 0) {\n        this.updateGroupsFromChildrenSelections(source);\n        this.dispatchSelectionChanged(source);\n      }\n    }\n    return updatedCount;\n  }\n  // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n  // holding down 'shift'.\n  selectRange(nodesToSelect, value, source) {\n    let updatedCount = 0;\n    nodesToSelect.forEach((node) => {\n      const rowNode = _normaliseSiblingRef(node);\n      if (rowNode.group && this.groupSelectsDescendants) {\n        return;\n      }\n      const nodeWasSelected = this.selectRowNode(rowNode, value, void 0, source);\n      if (nodeWasSelected) {\n        updatedCount++;\n      }\n    });\n    if (updatedCount > 0) {\n      this.updateGroupsFromChildrenSelections(source);\n      this.dispatchSelectionChanged(source);\n    }\n    return updatedCount;\n  }\n  selectChildren(node, newValue, source) {\n    const children = this.groupSelectsFiltered ? node.childrenAfterAggFilter : node.childrenAfterGroup;\n    if (!children) {\n      return 0;\n    }\n    return this.setNodesSelected({\n      newValue,\n      clearSelection: false,\n      suppressFinishActions: true,\n      source,\n      nodes: children\n    });\n  }\n  getSelectedNodes() {\n    return Array.from(this.selectedNodes.values());\n  }\n  getSelectedRows() {\n    const selectedRows = [];\n    this.selectedNodes.forEach((rowNode) => selectedRows.push(rowNode.data));\n    return selectedRows;\n  }\n  getSelectionCount() {\n    return this.selectedNodes.size;\n  }\n  /**\n   * This method is used by the CSRM to remove groups which are being disposed of,\n   * events do not need fired in this case\n   */\n  filterFromSelection(predicate) {\n    const newSelectedNodes = /* @__PURE__ */ new Map();\n    this.selectedNodes.forEach((rowNode, key) => {\n      if (predicate(rowNode)) {\n        newSelectedNodes.set(key, rowNode);\n      }\n    });\n    this.selectedNodes = newSelectedNodes;\n  }\n  updateGroupsFromChildrenSelections(source, changedPath) {\n    if (!this.groupSelectsDescendants) {\n      return false;\n    }\n    const { gos, rowModel } = this.beans;\n    if (!_isClientSideRowModel(gos, rowModel)) {\n      return false;\n    }\n    const rootNode = rowModel.rootNode;\n    if (!rootNode) {\n      return false;\n    }\n    if (!changedPath) {\n      changedPath = new ChangedPath(true, rootNode);\n      changedPath.active = false;\n    }\n    let selectionChanged = false;\n    changedPath.forEachChangedNodeDepthFirst((rowNode) => {\n      if (rowNode !== rootNode) {\n        const selected = this.calculateSelectedFromChildren(rowNode);\n        selectionChanged = this.selectRowNode(rowNode, selected === null ? false : selected, void 0, source) || selectionChanged;\n      }\n    });\n    return selectionChanged;\n  }\n  clearOtherNodes(rowNodeToKeepSelected, keepDescendants, source) {\n    const groupsToRefresh = /* @__PURE__ */ new Map();\n    let updatedCount = 0;\n    this.selectedNodes.forEach((otherRowNode) => {\n      const isNodeToKeep = otherRowNode.id == rowNodeToKeepSelected.id;\n      const shouldClearDescendant = keepDescendants ? !isDescendantOf(rowNodeToKeepSelected, otherRowNode) : true;\n      if (shouldClearDescendant && !isNodeToKeep) {\n        const rowNode = this.selectedNodes.get(otherRowNode.id);\n        updatedCount += this.setNodesSelected({\n          nodes: [rowNode],\n          newValue: false,\n          clearSelection: false,\n          suppressFinishActions: true,\n          source\n        });\n        if (this.groupSelectsDescendants && otherRowNode.parent) {\n          groupsToRefresh.set(otherRowNode.parent.id, otherRowNode.parent);\n        }\n      }\n    });\n    groupsToRefresh.forEach((group) => {\n      const selected = this.calculateSelectedFromChildren(group);\n      this.selectRowNode(group, selected === null ? false : selected, void 0, source);\n    });\n    return updatedCount;\n  }\n  onRowSelected(event) {\n    const rowNode = event.node;\n    if (this.groupSelectsDescendants && rowNode.group) {\n      return;\n    }\n    if (rowNode.isSelected()) {\n      this.selectedNodes.set(rowNode.id, rowNode);\n    } else {\n      this.selectedNodes.delete(rowNode.id);\n    }\n  }\n  syncInRowNode(rowNode, oldNode) {\n    this.syncInOldRowNode(rowNode, oldNode);\n    this.syncInNewRowNode(rowNode);\n  }\n  createDaemonNode(rowNode) {\n    if (!rowNode.id) {\n      return void 0;\n    }\n    const oldNode = new RowNode(this.beans);\n    oldNode.id = rowNode.id;\n    oldNode.data = rowNode.data;\n    oldNode.__daemon = true;\n    oldNode.__selected = rowNode.__selected;\n    oldNode.level = rowNode.level;\n    return oldNode;\n  }\n  // if the id has changed for the node, then this means the rowNode\n  // is getting used for a different data item, which breaks\n  // our selectedNodes, as the node now is mapped by the old id\n  // which is inconsistent. so to keep the old node as selected,\n  // we swap in the clone (with the old id and old data). this means\n  // the oldNode is effectively a daemon we keep a reference to,\n  // so if client calls api.getSelectedNodes(), it gets the daemon\n  // in the result. when the client un-selects, the reference to the\n  // daemon is removed. the daemon, because it's an oldNode, is not\n  // used by the grid for rendering, it's a copy of what the node used\n  // to be like before the id was changed.\n  syncInOldRowNode(rowNode, oldNode) {\n    if (oldNode && rowNode.id !== oldNode.id) {\n      const oldNodeSelected = this.selectedNodes.get(oldNode.id) == rowNode;\n      if (oldNodeSelected) {\n        this.selectedNodes.set(oldNode.id, oldNode);\n      }\n    }\n  }\n  syncInNewRowNode(rowNode) {\n    if (this.selectedNodes.has(rowNode.id)) {\n      rowNode.__selected = true;\n      this.selectedNodes.set(rowNode.id, rowNode);\n    } else {\n      rowNode.__selected = false;\n    }\n  }\n  reset(source) {\n    const selectionCount = this.getSelectionCount();\n    this.resetNodes();\n    if (selectionCount) {\n      this.dispatchSelectionChanged(source);\n    }\n  }\n  resetNodes() {\n    this.selectedNodes.forEach((node) => {\n      this.selectRowNode(node, false);\n    });\n    this.selectedNodes.clear();\n  }\n  // returns a list of all nodes at 'best cost' - a feature to be used\n  // with groups / trees. if a group has all it's children selected,\n  // then the group appears in the result, but not the children.\n  // Designed for use with 'children' as the group selection type,\n  // where groups don't actually appear in the selection normally.\n  getBestCostNodeSelection() {\n    const { gos, rowModel } = this.beans;\n    if (!_isClientSideRowModel(gos, rowModel)) {\n      return;\n    }\n    const topLevelNodes = rowModel.getTopLevelNodes();\n    if (topLevelNodes === null) {\n      return;\n    }\n    const result = [];\n    function traverse(nodes) {\n      for (let i = 0, l = nodes.length; i < l; i++) {\n        const node = nodes[i];\n        if (node.isSelected()) {\n          result.push(node);\n        } else {\n          if (node.group && node.childrenAfterGroup) {\n            traverse(node.childrenAfterGroup);\n          }\n        }\n      }\n    }\n    traverse(topLevelNodes);\n    return result;\n  }\n  isEmpty() {\n    return this.getSelectionCount() === 0;\n  }\n  deselectAllRowNodes({ source, selectAll: selectAll2 }) {\n    const rowModelClientSide = _isClientSideRowModel(this.gos);\n    let updatedNodes = false;\n    const callback = (rowNode) => {\n      const updated = this.selectRowNode(_normaliseSiblingRef(rowNode), false, void 0, source);\n      updatedNodes || (updatedNodes = updated);\n    };\n    if (selectAll2 === \"currentPage\" || selectAll2 === \"filtered\") {\n      if (!rowModelClientSide) {\n        _error(102);\n        return;\n      }\n      this.getNodesToSelect(selectAll2).forEach(callback);\n    } else {\n      this.selectedNodes.forEach(callback);\n      this.reset(source);\n    }\n    this.selectionCtx.selectAll = false;\n    if (rowModelClientSide && this.groupSelectsDescendants) {\n      const updated = this.updateGroupsFromChildrenSelections(source);\n      updatedNodes || (updatedNodes = updated);\n    }\n    if (updatedNodes) {\n      this.dispatchSelectionChanged(source);\n    }\n  }\n  getSelectedCounts(selectAll2) {\n    let selectedCount = 0;\n    let notSelectedCount = 0;\n    this.getNodesToSelect(selectAll2).forEach((node) => {\n      if (this.groupSelectsDescendants && node.group) {\n        return;\n      }\n      if (node.isSelected()) {\n        selectedCount++;\n      } else if (node.selectable) {\n        notSelectedCount++;\n      }\n    });\n    return { selectedCount, notSelectedCount };\n  }\n  getSelectAllState(selectAll2) {\n    const { selectedCount, notSelectedCount } = this.getSelectedCounts(selectAll2);\n    return _calculateSelectAllState(selectedCount, notSelectedCount) ?? null;\n  }\n  hasNodesToSelect(selectAll2) {\n    return this.getNodesToSelect(selectAll2).filter((node) => node.selectable).length > 0;\n  }\n  /**\n   * @param selectAll See `MultiRowSelectionOptions.selectAll`\n   * @returns all nodes including unselectable nodes which are the target of this selection attempt\n   */\n  getNodesToSelect(selectAll2) {\n    if (!this.canSelectAll()) {\n      return [];\n    }\n    const nodes = [];\n    const addToResult = (node) => nodes.push(node);\n    if (selectAll2 === \"currentPage\") {\n      this.forEachNodeOnPage((node) => {\n        if (!node.group) {\n          addToResult(node);\n          return;\n        }\n        if (!node.expanded && !node.footer) {\n          const recursivelyAddChildren = (child) => {\n            addToResult(child);\n            child.childrenAfterFilter?.forEach(recursivelyAddChildren);\n          };\n          recursivelyAddChildren(node);\n          return;\n        }\n        if (!this.groupSelectsDescendants) {\n          addToResult(node);\n        }\n      });\n      return nodes;\n    }\n    const clientSideRowModel = this.beans.rowModel;\n    if (selectAll2 === \"filtered\") {\n      clientSideRowModel.forEachNodeAfterFilter(addToResult);\n      return nodes;\n    }\n    clientSideRowModel.forEachNode(addToResult);\n    return nodes;\n  }\n  forEachNodeOnPage(callback) {\n    const { pageBounds, rowModel } = this.beans;\n    const firstRow = pageBounds.getFirstRow();\n    const lastRow = pageBounds.getLastRow();\n    for (let i = firstRow; i <= lastRow; i++) {\n      const node = rowModel.getRow(i);\n      if (node) {\n        callback(node);\n      }\n    }\n  }\n  selectAllRowNodes(params) {\n    const { gos, selectionCtx } = this;\n    if (!_isRowSelection(gos)) {\n      _warn(132);\n      return;\n    }\n    if (_isUsingNewRowSelectionAPI(gos) && !_isMultiRowSelection(gos)) {\n      _warn(130);\n      return;\n    }\n    if (!this.canSelectAll()) {\n      return;\n    }\n    const { source, selectAll: selectAll2 } = params;\n    let updatedNodes = false;\n    this.getNodesToSelect(selectAll2).forEach((rowNode) => {\n      const updated = this.selectRowNode(_normaliseSiblingRef(rowNode), true, void 0, source);\n      updatedNodes || (updatedNodes = updated);\n    });\n    selectionCtx.selectAll = true;\n    if (_isClientSideRowModel(gos) && this.groupSelectsDescendants) {\n      const updated = this.updateGroupsFromChildrenSelections(source);\n      updatedNodes || (updatedNodes = updated);\n    }\n    if (updatedNodes) {\n      this.dispatchSelectionChanged(source);\n    }\n  }\n  getSelectionState() {\n    return this.isEmpty() ? null : Array.from(this.selectedNodes.keys());\n  }\n  setSelectionState(state, source) {\n    if (!Array.isArray(state)) {\n      _error(103);\n      return;\n    }\n    const rowIds = new Set(state);\n    const nodes = [];\n    this.beans.rowModel.forEachNode((node) => {\n      if (rowIds.has(node.id)) {\n        nodes.push(node);\n      }\n    });\n    this.setNodesSelected({\n      newValue: true,\n      nodes,\n      source\n    });\n  }\n  canSelectAll() {\n    const { gos } = this.beans;\n    if (!_isClientSideRowModel(gos)) {\n      return false;\n    }\n    return true;\n  }\n  /**\n   * Updates the selectable state for a node by invoking isRowSelectable callback.\n   * If the node is not selectable, it will be deselected.\n   *\n   * Callers:\n   *  - property isRowSelectable changed\n   *  - after grouping / treeData via `updateSelectableAfterGrouping`\n   */\n  updateSelectable(changedPath) {\n    const { gos, rowModel } = this.beans;\n    if (!_isRowSelection(gos)) {\n      return;\n    }\n    const source = \"selectableChanged\";\n    const skipLeafNodes = changedPath !== void 0;\n    const isCSRMGroupSelectsDescendants = _isClientSideRowModel(gos) && this.groupSelectsDescendants;\n    const nodesToDeselect = [];\n    const nodeCallback = (node) => {\n      if (skipLeafNodes && !node.group) {\n        return;\n      }\n      if (isCSRMGroupSelectsDescendants && node.group) {\n        const hasSelectableChild = node.childrenAfterGroup?.some((rowNode) => rowNode.selectable) ?? false;\n        this.setRowSelectable(node, hasSelectableChild, true);\n        return;\n      }\n      const rowSelectable = this.updateRowSelectable(node, true);\n      if (!rowSelectable && node.isSelected()) {\n        nodesToDeselect.push(node);\n      }\n    };\n    if (isCSRMGroupSelectsDescendants) {\n      if (changedPath === void 0) {\n        const rootNode = rowModel.rootNode;\n        changedPath = rootNode ? new ChangedPath(false, rootNode) : void 0;\n      }\n      changedPath?.forEachChangedNodeDepthFirst(nodeCallback, !skipLeafNodes, !skipLeafNodes);\n    } else {\n      rowModel.forEachNode(nodeCallback);\n    }\n    if (nodesToDeselect.length) {\n      this.setNodesSelected({\n        nodes: nodesToDeselect,\n        newValue: false,\n        source\n      });\n    }\n    if (!skipLeafNodes && isCSRMGroupSelectsDescendants) {\n      this.updateGroupsFromChildrenSelections?.(source);\n    }\n  }\n  // only called by CSRM\n  updateSelectableAfterGrouping(changedPath) {\n    this.updateSelectable(changedPath);\n    if (this.groupSelectsDescendants) {\n      const selectionChanged = this.updateGroupsFromChildrenSelections?.(\"rowGroupChanged\", changedPath);\n      if (selectionChanged) {\n        this.dispatchSelectionChanged(\"rowGroupChanged\");\n      }\n    }\n  }\n  refreshMasterNodeState(node, e) {\n    if (!this.masterSelectsDetail)\n      return;\n    const detailApi = node.detailNode?.detailGridInfo?.api;\n    if (!detailApi)\n      return;\n    const isSelectAll = _isAllSelected(detailApi);\n    const current = node.isSelected();\n    if (current !== isSelectAll) {\n      const selectionChanged = this.selectRowNode(node, isSelectAll, e, \"masterDetail\");\n      if (selectionChanged) {\n        this.dispatchSelectionChanged(\"masterDetail\");\n      }\n    }\n    if (!isSelectAll) {\n      const detailSelected = this.detailSelection.get(node.id) ?? /* @__PURE__ */ new Set();\n      for (const n of detailApi.getSelectedNodes()) {\n        detailSelected.add(n.id);\n      }\n      this.detailSelection.set(node.id, detailSelected);\n    }\n  }\n  setDetailSelectionState(masterNode, detailGridOptions, detailApi) {\n    if (!this.masterSelectsDetail)\n      return;\n    if (!_isMultiRowSelection(detailGridOptions)) {\n      _warn(269);\n      return;\n    }\n    switch (masterNode.isSelected()) {\n      case true: {\n        detailApi.selectAll();\n        break;\n      }\n      case false: {\n        detailApi.deselectAll();\n        break;\n      }\n      case void 0: {\n        const selectedIds = this.detailSelection.get(masterNode.id);\n        if (selectedIds) {\n          const nodes = [];\n          for (const id of selectedIds) {\n            const n = detailApi.getRowNode(id);\n            if (n) {\n              nodes.push(n);\n            }\n          }\n          detailApi.setNodesSelected({ nodes, newValue: true, source: \"masterDetail\" });\n        }\n        break;\n      }\n      default:\n        break;\n    }\n  }\n  dispatchSelectionChanged(source) {\n    this.eventSvc.dispatchEvent({\n      type: \"selectionChanged\",\n      source,\n      selectedNodes: this.getSelectedNodes(),\n      serverSideState: null\n    });\n  }\n};\nfunction _normaliseSiblingRef(node) {\n  return _isManualPinnedRow(node) ? node.pinnedSibling : node.footer ? node.sibling : node;\n}\nfunction _isAllSelected(api) {\n  let selectedCount = 0;\n  let notSelectedCount = 0;\n  api.forEachNode((node) => {\n    if (node.isSelected()) {\n      selectedCount++;\n    } else if (node.selectable) {\n      notSelectedCount++;\n    }\n  });\n  return _calculateSelectAllState(selectedCount, notSelectedCount);\n}\nfunction _calculateSelectAllState(selected, notSelected) {\n  if (selected === 0 && notSelected === 0) {\n    return false;\n  }\n  if (selected > 0 && notSelected > 0) {\n    return;\n  }\n  return selected > 0;\n}\nfunction isDescendantOf(root, child) {\n  let parent = child.parent;\n  while (parent) {\n    if (parent === root)\n      return true;\n    parent = parent.parent;\n  }\n  return false;\n}\n\n// packages/ag-grid-community/src/selection/rowSelectionModule.ts\nvar SharedRowSelectionModule = {\n  moduleName: \"SharedRowSelection\",\n  version: VERSION,\n  beans: [SelectionColService],\n  apiFunctions: {\n    setNodesSelected,\n    selectAll,\n    deselectAll,\n    selectAllFiltered,\n    deselectAllFiltered,\n    selectAllOnCurrentPage,\n    deselectAllOnCurrentPage,\n    getSelectedNodes,\n    getSelectedRows\n  }\n};\nvar RowSelectionModule = {\n  moduleName: \"RowSelection\",\n  version: VERSION,\n  rowModels: [\"clientSide\", \"infinite\", \"viewport\"],\n  beans: [SelectionService],\n  dependsOn: [SharedRowSelectionModule]\n};\n\n// packages/ag-grid-community/src/api/csrmSsrmSharedApi.ts\nfunction expandAll(beans) {\n  beans.expansionSvc?.expandAll(true);\n}\nfunction collapseAll(beans) {\n  beans.expansionSvc?.expandAll(false);\n}\nfunction onRowHeightChanged(beans) {\n  const clientSideRowModel = _getClientSideRowModel(beans);\n  const serverSideRowModel = _getServerSideRowModel(beans);\n  if (clientSideRowModel) {\n    clientSideRowModel.onRowHeightChanged();\n  } else if (serverSideRowModel) {\n    serverSideRowModel.onRowHeightChanged();\n  }\n}\n\n// packages/ag-grid-community/src/api/ssrmInfiniteSharedApi.ts\nfunction setRowCount(beans, rowCount, maxRowFound) {\n  const serverSideRowModel = _getServerSideRowModel(beans);\n  if (serverSideRowModel) {\n    if (beans.rowGroupColsSvc?.columns.length === 0) {\n      if (rowCount < 0) {\n        _error(238);\n        return;\n      }\n      serverSideRowModel.setRowCount(rowCount, maxRowFound);\n      return;\n    }\n    _error(28);\n    return;\n  }\n  const infiniteRowModel = _getInfiniteRowModel(beans);\n  if (infiniteRowModel) {\n    infiniteRowModel.setRowCount(rowCount, maxRowFound);\n    return;\n  }\n}\nfunction getCacheBlockState(beans) {\n  if (_isServerSideRowModel(beans.gos)) {\n    const ssrm = beans.rowModel;\n    return ssrm.getBlockStates();\n  }\n  return beans.rowNodeBlockLoader?.getBlockState() ?? {};\n}\nfunction isLastRowIndexKnown(beans) {\n  return beans.rowModel.isLastRowIndexKnown();\n}\n\n// packages/ag-grid-community/src/api/sharedApiModule.ts\nvar CsrmSsrmSharedApiModule = {\n  moduleName: \"CsrmSsrmSharedApi\",\n  version: VERSION,\n  apiFunctions: {\n    expandAll,\n    collapseAll,\n    onRowHeightChanged\n  }\n};\nvar SsrmInfiniteSharedApiModule = {\n  moduleName: \"SsrmInfiniteSharedApi\",\n  version: VERSION,\n  apiFunctions: {\n    setRowCount,\n    getCacheBlockState,\n    isLastRowIndexKnown\n  }\n};\n\n// packages/ag-grid-community/src/alignedGrids/alignedGridsService.ts\nvar AlignedGridsService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"alignedGridsSvc\";\n    // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n    // while processing a master event) we mark this if consuming an event, and if we are, then\n    // we don't fire back any events.\n    this.consuming = false;\n  }\n  getAlignedGridApis() {\n    let alignedGrids = this.gos.get(\"alignedGrids\") ?? [];\n    const isCallbackConfig = typeof alignedGrids === \"function\";\n    if (typeof alignedGrids === \"function\") {\n      alignedGrids = alignedGrids();\n    }\n    const apis = alignedGrids.map((alignedGrid) => {\n      if (!alignedGrid) {\n        _error(18);\n        if (!isCallbackConfig) {\n          _error(20);\n        }\n        return;\n      }\n      if (this.isGridApi(alignedGrid)) {\n        return alignedGrid;\n      }\n      const refOrComp = alignedGrid;\n      if (\"current\" in refOrComp) {\n        return refOrComp.current?.api;\n      }\n      if (!refOrComp.api) {\n        _error(19);\n      }\n      return refOrComp.api;\n    }).filter((api) => !!api && !api.isDestroyed());\n    return apis;\n  }\n  isGridApi(ref) {\n    return !!ref && !!ref.dispatchEvent;\n  }\n  postConstruct() {\n    const fireColumnEvent = this.fireColumnEvent.bind(this);\n    this.addManagedEventListeners({\n      columnMoved: fireColumnEvent,\n      columnVisible: fireColumnEvent,\n      columnPinned: fireColumnEvent,\n      columnGroupOpened: fireColumnEvent,\n      columnResized: fireColumnEvent,\n      bodyScroll: this.fireScrollEvent.bind(this),\n      alignedGridColumn: ({ event }) => this.onColumnEvent(event),\n      alignedGridScroll: ({ event }) => this.onScrollEvent(event)\n    });\n  }\n  // common logic across all the fire methods\n  fireEvent(event) {\n    if (this.consuming) {\n      return;\n    }\n    this.getAlignedGridApis().forEach((api) => {\n      if (api.isDestroyed()) {\n        return;\n      }\n      api.dispatchEvent(event);\n    });\n  }\n  // common logic across all consume methods. very little common logic, however extracting\n  // guarantees consistency across the methods.\n  onEvent(callback) {\n    this.consuming = true;\n    callback();\n    this.consuming = false;\n  }\n  fireColumnEvent(columnEvent) {\n    this.fireEvent({\n      type: \"alignedGridColumn\",\n      event: columnEvent\n    });\n  }\n  fireScrollEvent(scrollEvent) {\n    if (scrollEvent.direction !== \"horizontal\") {\n      return;\n    }\n    this.fireEvent({\n      type: \"alignedGridScroll\",\n      event: scrollEvent\n    });\n  }\n  onScrollEvent(event) {\n    this.onEvent(() => {\n      this.beans.ctrlsSvc.getScrollFeature().setHorizontalScrollPosition(event.left, true);\n    });\n  }\n  extractDataFromEvent(event, func) {\n    const result = [];\n    if (event.columns) {\n      event.columns.forEach((column) => {\n        result.push(func(column));\n      });\n    } else if (event.column) {\n      result.push(func(event.column));\n    }\n    return result;\n  }\n  getMasterColumns(event) {\n    return this.extractDataFromEvent(event, (col) => col);\n  }\n  getColumnIds(event) {\n    return this.extractDataFromEvent(event, (col) => col.getColId());\n  }\n  onColumnEvent(event) {\n    this.onEvent(() => {\n      switch (event.type) {\n        case \"columnMoved\":\n        case \"columnVisible\":\n        case \"columnPinned\":\n        case \"columnResized\": {\n          this.processColumnEvent(event);\n          break;\n        }\n        case \"columnGroupOpened\": {\n          this.processGroupOpenedEvent(event);\n          break;\n        }\n        case \"columnPivotChanged\":\n          _warn(21);\n          break;\n      }\n    });\n  }\n  processGroupOpenedEvent(groupOpenedEvent) {\n    const { colGroupSvc } = this.beans;\n    if (!colGroupSvc) {\n      return;\n    }\n    groupOpenedEvent.columnGroups.forEach((masterGroup) => {\n      let otherColumnGroup = null;\n      if (masterGroup) {\n        otherColumnGroup = colGroupSvc.getProvidedColGroup(masterGroup.getGroupId());\n      }\n      if (masterGroup && !otherColumnGroup) {\n        return;\n      }\n      colGroupSvc.setColumnGroupOpened(otherColumnGroup, masterGroup.isExpanded(), \"alignedGridChanged\");\n    });\n  }\n  processColumnEvent(colEvent) {\n    const masterColumn = colEvent.column;\n    let otherColumn = null;\n    const beans = this.beans;\n    const { colResize, ctrlsSvc, colModel } = beans;\n    if (masterColumn) {\n      otherColumn = colModel.getColDefCol(masterColumn.getColId());\n    }\n    if (masterColumn && !otherColumn) {\n      return;\n    }\n    const masterColumns = this.getMasterColumns(colEvent);\n    switch (colEvent.type) {\n      case \"columnMoved\":\n        {\n          const srcColState = colEvent.api.getColumnState();\n          const destColState = srcColState.map((s) => ({ colId: s.colId }));\n          _applyColumnState(beans, { state: destColState, applyOrder: true }, \"alignedGridChanged\");\n        }\n        break;\n      case \"columnVisible\":\n        {\n          const srcColState = colEvent.api.getColumnState();\n          const destColState = srcColState.map((s) => ({ colId: s.colId, hide: s.hide }));\n          _applyColumnState(beans, { state: destColState }, \"alignedGridChanged\");\n        }\n        break;\n      case \"columnPinned\":\n        {\n          const srcColState = colEvent.api.getColumnState();\n          const destColState = srcColState.map((s) => ({ colId: s.colId, pinned: s.pinned }));\n          _applyColumnState(beans, { state: destColState }, \"alignedGridChanged\");\n        }\n        break;\n      case \"columnResized\": {\n        const resizedEvent = colEvent;\n        const columnWidths = {};\n        masterColumns.forEach((column) => {\n          columnWidths[column.getId()] = { key: column.getColId(), newWidth: column.getActualWidth() };\n        });\n        resizedEvent.flexColumns?.forEach((col) => {\n          if (columnWidths[col.getId()]) {\n            delete columnWidths[col.getId()];\n          }\n        });\n        colResize?.setColumnWidths(\n          Object.values(columnWidths),\n          false,\n          resizedEvent.finished,\n          \"alignedGridChanged\"\n        );\n        break;\n      }\n    }\n    const gridBodyCon = ctrlsSvc.getGridBodyCtrl();\n    const isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();\n    this.getAlignedGridApis().forEach((api) => {\n      api.setGridOption(\"alwaysShowVerticalScroll\", isVerticalScrollShowing);\n    });\n  }\n};\n\n// packages/ag-grid-community/src/alignedGrids/alignedGridsModule.ts\nvar AlignedGridsModule = {\n  moduleName: \"AlignedGrids\",\n  version: VERSION,\n  beans: [AlignedGridsService]\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/clientSideNodeManager.ts\nvar ClientSideNodeManager = class extends AbstractClientSideNodeManager {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"csrmNodeSvc\";\n  }\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/changedRowNodes.ts\nvar ChangedRowNodes = class {\n  constructor() {\n    this.removals = /* @__PURE__ */ new Set();\n    this.updates = /* @__PURE__ */ new Set();\n    this.adds = /* @__PURE__ */ new Set();\n  }\n  /** Marks a row as removed. Order of operations is: remove, update, add */\n  remove(node) {\n    if (!this.adds.delete(node)) {\n      this.updates.delete(node);\n      this.removals.add(node);\n    }\n  }\n  /** Marks a row as updated. Order of operations is: remove, update, add */\n  update(node) {\n    if (!this.adds.has(node)) {\n      this.updates.add(node);\n    }\n  }\n  /** Marks a row as added. Order of operation is: remove, update, add */\n  add(node) {\n    this.adds.add(node);\n  }\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/sortStage.ts\nfunction updateChildIndexes(rowNode) {\n  if (_missing(rowNode.childrenAfterSort)) {\n    return;\n  }\n  const listToSort = rowNode.childrenAfterSort;\n  for (let i = 0; i < listToSort.length; i++) {\n    const child = listToSort[i];\n    const firstChild = i === 0;\n    const lastChild = i === rowNode.childrenAfterSort.length - 1;\n    child.setFirstChild(firstChild);\n    if (child.lastChild !== lastChild) {\n      child.lastChild = lastChild;\n      child.dispatchRowEvent(\"lastChildChanged\");\n    }\n    if (child.childIndex !== i) {\n      child.childIndex = i;\n      child.dispatchRowEvent(\"childIndexChanged\");\n    }\n  }\n}\nfunction updateRowNodeAfterSort(rowNode) {\n  if (rowNode.sibling) {\n    rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;\n  }\n  updateChildIndexes(rowNode);\n}\nvar SortStage = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"sortStage\";\n    this.refreshProps = /* @__PURE__ */ new Set([\"postSortRows\", \"groupDisplayType\", \"accentedSort\"]);\n    this.step = \"sort\";\n  }\n  execute(params) {\n    const beans = this.beans;\n    const sortOptions = beans.sortSvc.getSortOptions();\n    const sortActive = _exists(sortOptions) && sortOptions.length > 0;\n    const deltaSort = sortActive && !!params.changedRowNodes && // in time we can remove this check, so that delta sort is always\n    // on if transactions are present. it's off for now so that we can\n    // selectively turn it on and test it with some select users before\n    // rolling out to everyone.\n    this.gos.get(\"deltaSort\");\n    const sortContainsGroupColumns = sortOptions.some(({ column }) => {\n      const isSortingCoupled = _isColumnsSortingCoupledToGroup(beans.gos);\n      if (isSortingCoupled) {\n        return column.isPrimary() && column.isRowGroupActive();\n      }\n      return !!column.getColDef().showRowGroup;\n    });\n    this.sort(\n      beans,\n      sortOptions,\n      sortActive,\n      deltaSort,\n      params.changedRowNodes,\n      params.changedPath,\n      sortContainsGroupColumns\n    );\n  }\n  sort(beans, sortOptions, sortActive, useDeltaSort, changedRowNodes, changedPath, sortContainsGroupColumns) {\n    const { gos, colModel, rowGroupColsSvc, rowNodeSorter, rowRenderer, showRowGroupCols } = beans;\n    const groupMaintainOrder = gos.get(\"groupMaintainOrder\");\n    const groupColumnsPresent = colModel.getCols().some((c) => c.isRowGroupActive());\n    const isPivotMode = colModel.isPivotMode();\n    const postSortFunc = gos.getCallback(\"postSortRows\");\n    let hasAnyFirstChildChanged = false;\n    const callback = (rowNode) => {\n      const skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;\n      const skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;\n      let newChildrenAfterSort;\n      if (skipSortingGroups) {\n        const nextGroup = rowGroupColsSvc?.columns?.[rowNode.level + 1];\n        const wasSortExplicitlyRemoved = nextGroup?.getSort() === null;\n        const childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);\n        if (rowNode.childrenAfterSort && !wasSortExplicitlyRemoved) {\n          const indexedOrders = {};\n          rowNode.childrenAfterSort.forEach((node, idx) => {\n            indexedOrders[node.id] = idx;\n          });\n          childrenToBeSorted.sort(\n            (row1, row2) => (indexedOrders[row1.id] ?? 0) - (indexedOrders[row2.id] ?? 0)\n          );\n        }\n        newChildrenAfterSort = childrenToBeSorted;\n      } else if (!sortActive || skipSortingPivotLeafs) {\n        newChildrenAfterSort = rowNode.childrenAfterAggFilter.slice(0);\n      } else if (useDeltaSort && changedRowNodes) {\n        newChildrenAfterSort = doDeltaSort(rowNodeSorter, rowNode, changedRowNodes, changedPath, sortOptions);\n      } else {\n        newChildrenAfterSort = rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);\n      }\n      hasAnyFirstChildChanged || (hasAnyFirstChildChanged = rowNode.childrenAfterSort?.[0] !== newChildrenAfterSort[0]);\n      rowNode.childrenAfterSort = newChildrenAfterSort;\n      updateRowNodeAfterSort(rowNode);\n      if (postSortFunc) {\n        const params = { nodes: rowNode.childrenAfterSort };\n        postSortFunc(params);\n      }\n    };\n    changedPath?.forEachChangedNodeDepthFirst(callback);\n    if (hasAnyFirstChildChanged && this.gos.get(\"groupHideOpenParents\")) {\n      const columns = showRowGroupCols?.getShowRowGroupCols();\n      if (columns?.length) {\n        rowRenderer.refreshCells({ columns, force: true });\n      }\n    }\n  }\n};\nfunction doDeltaSort(rowNodeSorter, rowNode, changedRowNodes, changedPath, sortOptions) {\n  const unsortedRows = rowNode.childrenAfterAggFilter;\n  const oldSortedRows = rowNode.childrenAfterSort;\n  if (!oldSortedRows) {\n    return rowNodeSorter.doFullSort(unsortedRows, sortOptions);\n  }\n  const untouchedRows = /* @__PURE__ */ new Set();\n  const touchedRows = [];\n  const { updates, adds } = changedRowNodes;\n  for (let i = 0, len = unsortedRows.length; i < len; ++i) {\n    const row = unsortedRows[i];\n    if (updates.has(row) || adds.has(row) || changedPath && !changedPath.canSkip(row)) {\n      touchedRows.push({\n        currentPos: touchedRows.length,\n        rowNode: row\n      });\n    } else {\n      untouchedRows.add(row.id);\n    }\n  }\n  const sortedUntouchedRows = oldSortedRows.filter((child) => untouchedRows.has(child.id)).map((rowNode2, currentPos) => ({ currentPos, rowNode: rowNode2 }));\n  touchedRows.sort((a, b) => rowNodeSorter.compareRowNodes(sortOptions, a, b));\n  return mergeSortedArrays(rowNodeSorter, sortOptions, touchedRows, sortedUntouchedRows);\n}\nfunction mergeSortedArrays(rowNodeSorter, sortOptions, arr1, arr2) {\n  const res = [];\n  let i = 0;\n  let j = 0;\n  const arr1Length = arr1.length;\n  const arr2Length = arr2.length;\n  while (i < arr1Length && j < arr2Length) {\n    const a = arr1[i];\n    const b = arr2[j];\n    const compareResult = rowNodeSorter.compareRowNodes(sortOptions, a, b);\n    let chosen;\n    if (compareResult < 0) {\n      chosen = a;\n      ++i;\n    } else {\n      chosen = b;\n      ++j;\n    }\n    res.push(chosen.rowNode);\n  }\n  while (i < arr1Length) {\n    res.push(arr1[i++].rowNode);\n  }\n  while (j < arr2Length) {\n    res.push(arr2[j++].rowNode);\n  }\n  return res;\n}\n\n// packages/ag-grid-community/src/clientSideRowModel/clientSideRowModel.ts\nvar ClientSideRowModel = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowModel\";\n    // top most node of the tree. the children are the user provided data.\n    this.rootNode = null;\n    this.rowsToDisplay = [];\n    this.lastHighlightedRow = null;\n    /** Has the start method been called */\n    this.started = false;\n    /**\n     * This is to prevent refresh model being called when it's already being called.\n     * E.g. the group stage can trigger initial state filter model to be applied. This fires onFilterChanged,\n     * which then triggers the listener here that calls refresh model again but at the filter stage\n     * (which is about to be run by the original call).\n     */\n    this.isRefreshingModel = false;\n    this.rowNodesCountReady = false;\n    this.rowCountReady = false;\n    this.onRowHeightChanged_debounced = _debounce(this, this.onRowHeightChanged.bind(this), 100);\n  }\n  wireBeans(beans) {\n    this.colModel = beans.colModel;\n    this.valueCache = beans.valueCache;\n    this.filterStage = beans.filterStage;\n    this.sortStage = beans.sortStage;\n    this.flattenStage = beans.flattenStage;\n    this.groupStage = beans.groupStage;\n    this.aggStage = beans.aggStage;\n    this.pivotStage = beans.pivotStage;\n    this.filterAggStage = beans.filterAggStage;\n  }\n  postConstruct() {\n    this.orderedStages = [\n      this.groupStage,\n      this.filterStage,\n      this.pivotStage,\n      this.aggStage,\n      this.sortStage,\n      this.filterAggStage,\n      this.flattenStage\n    ].filter((stage) => !!stage);\n    const refreshEverythingFunc = this.refreshModel.bind(this, { step: \"group\" });\n    const refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {\n      step: \"group\",\n      // after cols change, row grouping (the first stage) could of changed\n      afterColumnsChanged: true,\n      keepRenderedRows: true,\n      // we want animations cos sorting or filtering could be applied\n      animate: !this.gos.get(\"suppressAnimationFrame\")\n    });\n    this.addManagedEventListeners({\n      newColumnsLoaded: refreshEverythingAfterColsChangedFunc,\n      columnRowGroupChanged: refreshEverythingFunc,\n      columnValueChanged: this.onValueChanged.bind(this),\n      columnPivotChanged: this.refreshModel.bind(this, { step: \"pivot\" }),\n      filterChanged: this.onFilterChanged.bind(this),\n      sortChanged: this.onSortChanged.bind(this),\n      columnPivotModeChanged: refreshEverythingFunc,\n      gridStylesChanged: this.onGridStylesChanges.bind(this),\n      gridReady: this.onGridReady.bind(this)\n    });\n    this.addPropertyListeners();\n    this.rootNode = new RowNode(this.beans);\n    const nodeManager = this.getNewNodeManager();\n    this.nodeManager = nodeManager;\n    nodeManager.activate(this.rootNode);\n  }\n  getNewNodeManager() {\n    const { gos, beans } = this;\n    switch (_getGroupingApproach(gos)) {\n      case \"treeNested\":\n        return beans.csrmChildrenTreeNodeSvc ?? beans.csrmNodeSvc;\n      case \"treePath\":\n        return beans.csrmPathTreeNodeSvc ?? beans.csrmNodeSvc;\n      default:\n        return beans.csrmNodeSvc;\n    }\n  }\n  addPropertyListeners() {\n    const allProps = [\n      \"treeData\",\n      \"treeDataChildrenField\",\n      ...this.orderedStages.flatMap(({ refreshProps }) => [...refreshProps])\n    ];\n    this.addManagedPropertyListeners(allProps, (params) => {\n      const properties = params.changeSet?.properties;\n      if (properties) {\n        this.onPropChange(properties);\n      }\n    });\n    this.addManagedPropertyListener(\"rowData\", () => this.onPropChange([\"rowData\"]));\n    this.addManagedPropertyListener(\"rowHeight\", () => this.resetRowHeights());\n  }\n  start() {\n    this.started = true;\n    if (this.rowNodesCountReady) {\n      this.refreshModel({ step: \"group\", rowDataUpdated: true, newData: true });\n    } else {\n      this.setInitialData();\n    }\n  }\n  setInitialData() {\n    const rowData = this.gos.get(\"rowData\");\n    if (rowData) {\n      this.onPropChange([\"rowData\"]);\n    }\n  }\n  ensureRowHeightsValid(startPixel, endPixel, startLimitIndex, endLimitIndex) {\n    let atLeastOneChange;\n    let res = false;\n    do {\n      atLeastOneChange = false;\n      const rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n      const rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n      const firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n      const lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n      for (let rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n        const rowNode = this.getRow(rowIndex);\n        if (rowNode.rowHeightEstimated) {\n          const rowHeight = _getRowHeightForNode(this.beans, rowNode);\n          rowNode.setRowHeight(rowHeight.height);\n          atLeastOneChange = true;\n          res = true;\n        }\n      }\n      if (atLeastOneChange) {\n        this.setRowTopAndRowIndex();\n      }\n    } while (atLeastOneChange);\n    return res;\n  }\n  onPropChange(properties) {\n    if (!this.rootNode) {\n      return;\n    }\n    const gos = this.gos;\n    const changedProps = new Set(properties);\n    const params = {\n      step: \"nothing\",\n      changedProps\n    };\n    const rowDataChanged = changedProps.has(\"rowData\");\n    const oldNodeManager = this.nodeManager;\n    const nodeManager = this.getNewNodeManager();\n    const reset = oldNodeManager !== nodeManager || rowDataChanged && changedProps.has(\"treeData\") && gos.get(\"treeData\") || changedProps.has(\"treeDataChildrenField\") && gos.get(\"treeData\");\n    let newRowData;\n    if (reset || rowDataChanged) {\n      newRowData = gos.get(\"rowData\");\n      if (newRowData != null && !Array.isArray(newRowData)) {\n        newRowData = null;\n        _warn(1);\n      }\n    }\n    if (reset) {\n      if (!rowDataChanged) {\n        newRowData = oldNodeManager?.extractRowData() ?? newRowData;\n      }\n      if (oldNodeManager !== nodeManager) {\n        oldNodeManager?.deactivate();\n        this.nodeManager = nodeManager;\n      }\n      nodeManager.activate(this.rootNode);\n    }\n    if (newRowData) {\n      const immutable = !reset && !this.isEmpty() && newRowData.length > 0 && gos.exists(\"getRowId\") && // this property is a backwards compatibility property, for those who want\n      // the old behaviour of Row IDs but NOT Immutable Data.\n      !gos.get(\"resetRowDataOnUpdate\");\n      if (immutable) {\n        params.keepRenderedRows = true;\n        params.animate = !this.gos.get(\"suppressAnimationFrame\");\n        params.changedRowNodes = new ChangedRowNodes();\n        nodeManager.setImmutableRowData(params, newRowData);\n      } else {\n        params.rowDataUpdated = true;\n        params.newData = true;\n        const { selectionSvc, pinnedRowModel } = this.beans;\n        selectionSvc?.reset(\"rowDataChanged\");\n        if (pinnedRowModel?.isManual()) {\n          pinnedRowModel.reset();\n        }\n        this.rowNodesCountReady = true;\n        nodeManager.setNewRowData(newRowData);\n      }\n    }\n    if (params.rowDataUpdated) {\n      params.step = \"group\";\n    } else if (params.step === \"nothing\") {\n      for (const { refreshProps, step } of this.orderedStages) {\n        if (properties.some((prop) => refreshProps.has(prop))) {\n          params.step = step;\n          break;\n        }\n      }\n    }\n    if (params.step !== \"nothing\") {\n      this.refreshModel(params);\n    }\n  }\n  setRowTopAndRowIndex() {\n    const { beans, rowsToDisplay } = this;\n    const defaultRowHeight = beans.environment.getDefaultRowHeight();\n    let nextRowTop = 0;\n    const displayedRowsMapped = /* @__PURE__ */ new Set();\n    const allowEstimate = _isDomLayout(this.gos, \"normal\");\n    for (let i = 0, len = rowsToDisplay.length; i < len; ++i) {\n      const rowNode = rowsToDisplay[i];\n      if (rowNode.id != null) {\n        displayedRowsMapped.add(rowNode.id);\n      }\n      if (rowNode.rowHeight == null) {\n        const rowHeight = _getRowHeightForNode(beans, rowNode, allowEstimate, defaultRowHeight);\n        rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n      }\n      rowNode.setRowTop(nextRowTop);\n      rowNode.setRowIndex(i);\n      nextRowTop += rowNode.rowHeight;\n    }\n    return displayedRowsMapped;\n  }\n  clearRowTopAndRowIndex(changedPath, displayedRowsMapped) {\n    const changedPathActive = changedPath.active;\n    const clearIfNotDisplayed = (rowNode) => {\n      if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {\n        rowNode.clearRowTopAndRowIndex();\n      }\n    };\n    const recurse = (rowNode) => {\n      if (rowNode === null) {\n        return;\n      }\n      clearIfNotDisplayed(rowNode);\n      clearIfNotDisplayed(rowNode.detailNode);\n      clearIfNotDisplayed(rowNode.sibling);\n      if (rowNode.hasChildren()) {\n        if (rowNode.childrenAfterGroup) {\n          const isRootNode = rowNode.level == -1;\n          const skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;\n          if (!skipChildren) {\n            rowNode.childrenAfterGroup.forEach(recurse);\n          }\n        }\n      }\n    };\n    recurse(this.rootNode);\n  }\n  clearHighlight() {\n    const last = this.lastHighlightedRow;\n    if (last) {\n      last.highlighted = null;\n      last.dispatchRowEvent(\"rowHighlightChanged\");\n      this.lastHighlightedRow = null;\n    }\n  }\n  highlightRow(row, highlight) {\n    const nodeChanged = row !== this.lastHighlightedRow;\n    const highlightChanged = highlight !== row.highlighted;\n    if (nodeChanged || highlightChanged) {\n      if (nodeChanged) {\n        this.clearHighlight();\n      }\n      row.highlighted = highlight;\n      row.dispatchRowEvent(\"rowHighlightChanged\");\n      this.lastHighlightedRow = row;\n    }\n  }\n  getLastHighlightedRowNode() {\n    return this.lastHighlightedRow;\n  }\n  isLastRowIndexKnown() {\n    return true;\n  }\n  getRowCount() {\n    if (this.rowsToDisplay) {\n      return this.rowsToDisplay.length;\n    }\n    return 0;\n  }\n  /**\n   * Returns the number of rows with level === 1\n   */\n  getTopLevelRowCount() {\n    const rootNode = this.rootNode;\n    if (!rootNode) {\n      return 0;\n    }\n    if (this.rowsToDisplay.length === 0) {\n      return 0;\n    }\n    const showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === rootNode;\n    if (showingRootNode) {\n      return 1;\n    }\n    const filteredChildren = rootNode.childrenAfterAggFilter;\n    const totalFooterInc = rootNode.sibling ? 1 : 0;\n    return (filteredChildren ? filteredChildren.length : 0) + totalFooterInc;\n  }\n  /**\n   * Get the row display index by the top level index\n   * top level index is the index of rows with level === 1\n   */\n  getTopLevelRowDisplayedIndex(topLevelIndex) {\n    const { rootNode, rowsToDisplay } = this;\n    const showingRootNode = !rootNode || !rowsToDisplay.length || rowsToDisplay[0] === rootNode;\n    if (showingRootNode) {\n      return topLevelIndex;\n    }\n    const { childrenAfterSort } = rootNode;\n    const getDefaultIndex = (adjustedIndex) => {\n      let rowNode = childrenAfterSort[adjustedIndex];\n      if (this.gos.get(\"groupHideOpenParents\")) {\n        while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {\n          rowNode = rowNode.childrenAfterSort[0];\n        }\n      }\n      return rowNode.rowIndex;\n    };\n    const { footerSvc } = this.beans;\n    if (footerSvc) {\n      return footerSvc.getTopDisplayIndex(rowsToDisplay, topLevelIndex, childrenAfterSort, getDefaultIndex);\n    } else {\n      return getDefaultIndex(topLevelIndex);\n    }\n  }\n  /**\n   * The opposite of `getTopLevelRowDisplayedIndex`\n   */\n  getTopLevelIndexFromDisplayedIndex(displayedIndex) {\n    const { rootNode, rowsToDisplay } = this;\n    const showingRootNode = !rootNode || !rowsToDisplay.length || rowsToDisplay[0] === rootNode;\n    if (showingRootNode) {\n      return displayedIndex;\n    }\n    let node = this.getRow(displayedIndex);\n    if (node.footer) {\n      node = node.sibling;\n    }\n    while (node.parent && node.parent !== rootNode) {\n      node = node.parent;\n    }\n    const topLevelIndex = rootNode.childrenAfterSort?.findIndex((childNode) => childNode === node);\n    return topLevelIndex === -1 ? displayedIndex : topLevelIndex ?? displayedIndex;\n  }\n  getRowBounds(index) {\n    const rowNode = this.rowsToDisplay[index];\n    if (rowNode) {\n      return {\n        rowTop: rowNode.rowTop,\n        rowHeight: rowNode.rowHeight\n      };\n    }\n    return null;\n  }\n  onRowGroupOpened() {\n    const animate = _isAnimateRows(this.gos);\n    this.refreshModel({ step: \"map\", keepRenderedRows: true, animate });\n  }\n  onFilterChanged(event) {\n    if (event.afterDataChange) {\n      return;\n    }\n    const animate = _isAnimateRows(this.gos);\n    const primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some((col) => col.isPrimary());\n    const step = primaryOrQuickFilterChanged ? \"filter\" : \"filter_aggregates\";\n    this.refreshModel({ step, keepRenderedRows: true, animate });\n  }\n  onSortChanged() {\n    const animate = _isAnimateRows(this.gos);\n    this.refreshModel({\n      step: \"sort\",\n      keepRenderedRows: true,\n      animate\n    });\n  }\n  getType() {\n    return \"clientSide\";\n  }\n  onValueChanged() {\n    this.refreshModel({ step: this.colModel.isPivotActive() ? \"pivot\" : \"aggregate\" });\n  }\n  createChangePath(enabled) {\n    const changedPath = new ChangedPath(false, this.rootNode);\n    if (!enabled) {\n      changedPath.active = false;\n    }\n    return changedPath;\n  }\n  isSuppressModelUpdateAfterUpdateTransaction(params) {\n    if (!this.gos.get(\"suppressModelUpdateAfterUpdateTransaction\")) {\n      return false;\n    }\n    const { changedRowNodes, newData, rowDataUpdated } = params;\n    if (!changedRowNodes || newData || !rowDataUpdated) {\n      return false;\n    }\n    if (changedRowNodes.removals.size || changedRowNodes.adds.size) {\n      return false;\n    }\n    return true;\n  }\n  refreshModel(params) {\n    if (!this.rootNode) {\n      return;\n    }\n    const changedPath = params.changedPath ?? (params.changedPath = this.createChangePath(!params.newData && !!params.rowDataUpdated));\n    this.nodeManager.refreshModel?.(params, this.started);\n    this.eventSvc.dispatchEvent({ type: \"beforeRefreshModel\", params });\n    if (!this.started) {\n      return;\n    }\n    if (params.rowDataUpdated) {\n      this.eventSvc.dispatchEvent({ type: \"rowDataUpdated\" });\n    }\n    if (this.isRefreshingModel || this.colModel.changeEventsDispatching || this.isSuppressModelUpdateAfterUpdateTransaction(params)) {\n      return;\n    }\n    this.isRefreshingModel = true;\n    switch (params.step) {\n      case \"group\": {\n        this.doRowGrouping(\n          params.changedRowNodes,\n          changedPath,\n          !!params.rowNodesOrderChanged,\n          !!params.afterColumnsChanged\n        );\n      }\n      case \"filter\":\n        this.doFilter(changedPath);\n      case \"pivot\":\n        this.doPivot(changedPath);\n      case \"aggregate\":\n        this.doAggregate(changedPath);\n      case \"filter_aggregates\":\n        this.doFilterAggregates(changedPath);\n      case \"sort\":\n        this.doSort(params.changedRowNodes, changedPath);\n      case \"map\":\n        this.doRowsToDisplay();\n    }\n    const displayedNodesMapped = this.setRowTopAndRowIndex();\n    this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);\n    this.isRefreshingModel = false;\n    this.eventSvc.dispatchEvent({\n      type: \"modelUpdated\",\n      animate: params.animate,\n      keepRenderedRows: params.keepRenderedRows,\n      newData: params.newData,\n      newPage: false,\n      keepUndoRedoStack: params.keepUndoRedoStack\n    });\n  }\n  isEmpty() {\n    return !this.rootNode?.allLeafChildren?.length || !this.colModel?.ready;\n  }\n  isRowsToRender() {\n    return this.rowsToDisplay.length > 0;\n  }\n  getNodesInRangeForSelection(firstInRange, lastInRange) {\n    let started = false;\n    let finished = false;\n    const result = [];\n    const groupsSelectChildren = _getGroupSelectsDescendants(this.gos);\n    this.forEachNodeAfterFilterAndSort((rowNode) => {\n      if (finished) {\n        return;\n      }\n      if (started) {\n        if (rowNode === lastInRange || rowNode === firstInRange) {\n          finished = true;\n          if (rowNode.group && groupsSelectChildren) {\n            result.push(...rowNode.allLeafChildren);\n            return;\n          }\n        }\n      }\n      if (!started) {\n        if (rowNode !== lastInRange && rowNode !== firstInRange) {\n          return;\n        }\n        started = true;\n      }\n      const includeThisNode = !rowNode.group || !groupsSelectChildren;\n      if (includeThisNode) {\n        result.push(rowNode);\n        return;\n      }\n    });\n    return result;\n  }\n  getTopLevelNodes() {\n    return this.rootNode?.childrenAfterGroup ?? null;\n  }\n  getRow(index) {\n    return this.rowsToDisplay[index];\n  }\n  isRowPresent(rowNode) {\n    return this.rowsToDisplay.indexOf(rowNode) >= 0;\n  }\n  getRowIndexAtPixel(pixelToMatch) {\n    const rowsToDisplay = this.rowsToDisplay;\n    if (this.isEmpty() || rowsToDisplay.length === 0) {\n      return -1;\n    }\n    let bottomPointer = 0;\n    let topPointer = rowsToDisplay.length - 1;\n    if (pixelToMatch <= 0) {\n      return 0;\n    }\n    const lastNode = _last(rowsToDisplay);\n    if (lastNode.rowTop <= pixelToMatch) {\n      return rowsToDisplay.length - 1;\n    }\n    let oldBottomPointer = -1;\n    let oldTopPointer = -1;\n    while (true) {\n      const midPointer = Math.floor((bottomPointer + topPointer) / 2);\n      const currentRowNode = rowsToDisplay[midPointer];\n      if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n        return midPointer;\n      }\n      if (currentRowNode.rowTop < pixelToMatch) {\n        bottomPointer = midPointer + 1;\n      } else if (currentRowNode.rowTop > pixelToMatch) {\n        topPointer = midPointer - 1;\n      }\n      const caughtInInfiniteLoop = oldBottomPointer === bottomPointer && oldTopPointer === topPointer;\n      if (caughtInInfiniteLoop) {\n        return midPointer;\n      }\n      oldBottomPointer = bottomPointer;\n      oldTopPointer = topPointer;\n    }\n  }\n  isRowInPixel(rowNode, pixelToMatch) {\n    const topPixel = rowNode.rowTop;\n    const bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n    const pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n    return pixelInRow;\n  }\n  forEachLeafNode(callback) {\n    this.rootNode?.allLeafChildren?.forEach((rowNode, index) => callback(rowNode, index));\n  }\n  forEachNode(callback, includeFooterNodes = false) {\n    this.depthFirstSearchRowNodes(callback, includeFooterNodes);\n  }\n  forEachDisplayedNode(callback) {\n    this.rowsToDisplay.forEach(callback);\n  }\n  forEachNodeAfterFilter(callback, includeFooterNodes = false) {\n    this.depthFirstSearchRowNodes(callback, includeFooterNodes, (node) => node.childrenAfterAggFilter);\n  }\n  forEachNodeAfterFilterAndSort(callback, includeFooterNodes = false) {\n    this.depthFirstSearchRowNodes(callback, includeFooterNodes, (node) => node.childrenAfterSort);\n  }\n  forEachPivotNode(callback, includeFooterNodes = false, afterSort = false) {\n    const { colModel, rowGroupColsSvc } = this.beans;\n    if (!colModel.isPivotMode()) {\n      return;\n    }\n    if (!rowGroupColsSvc?.columns.length) {\n      callback(this.rootNode, 0);\n      return;\n    }\n    const childrenField = afterSort ? \"childrenAfterSort\" : \"childrenAfterGroup\";\n    this.depthFirstSearchRowNodes(\n      callback,\n      includeFooterNodes,\n      (node) => !node.leafGroup ? node[childrenField] : null\n    );\n  }\n  /**\n   * Iterate through each node and all of its children\n   * @param callback the function to execute for each node\n   * @param includeFooterNodes whether to also iterate over footer nodes\n   * @param nodes the nodes to start iterating over\n   * @param getChildren a function to determine the recursion strategy\n   * @param startIndex the index to start from\n   * @returns the index ended at\n   */\n  depthFirstSearchRowNodes(callback, includeFooterNodes = false, getChildren = (node2) => node2.childrenAfterGroup, node = this.rootNode, startIndex = 0) {\n    let index = startIndex;\n    if (!node) {\n      return index;\n    }\n    const isRootNode = node === this.rootNode;\n    if (!isRootNode) {\n      callback(node, index++);\n    }\n    const { footerSvc } = this.beans;\n    if (node.hasChildren() && !node.footer) {\n      const children = getChildren(node);\n      if (children) {\n        index = footerSvc?.addTotalRows(index, node, callback, includeFooterNodes, isRootNode, \"top\") ?? index;\n        for (const node2 of children) {\n          index = this.depthFirstSearchRowNodes(callback, includeFooterNodes, getChildren, node2, index);\n        }\n        return footerSvc?.addTotalRows(index, node, callback, includeFooterNodes, isRootNode, \"bottom\") ?? index;\n      }\n    }\n    return index;\n  }\n  // it's possible to recompute the aggregate without doing the other parts\n  // + api.refreshClientSideRowModel('aggregate')\n  doAggregate(changedPath) {\n    const rootNode = this.rootNode;\n    if (rootNode) {\n      this.aggStage?.execute({ rowNode: rootNode, changedPath });\n    }\n  }\n  doFilterAggregates(changedPath) {\n    const rootNode = this.rootNode;\n    if (this.filterAggStage) {\n      this.filterAggStage.execute({ rowNode: rootNode, changedPath });\n    } else {\n      rootNode.childrenAfterAggFilter = rootNode.childrenAfterFilter;\n    }\n  }\n  doSort(changedRowNodes, changedPath) {\n    if (this.sortStage) {\n      this.sortStage.execute({\n        rowNode: this.rootNode,\n        changedRowNodes,\n        changedPath\n      });\n    } else {\n      changedPath.forEachChangedNodeDepthFirst((rowNode) => {\n        rowNode.childrenAfterSort = rowNode.childrenAfterAggFilter.slice(0);\n        updateRowNodeAfterSort(rowNode);\n      });\n    }\n  }\n  doRowGrouping(changedRowNodes, changedPath, rowNodesOrderChanged, afterColumnsChanged) {\n    const rootNode = this.rootNode;\n    const groupStageExecuted = this.groupStage?.execute({\n      rowNode: rootNode,\n      changedPath,\n      changedRowNodes,\n      rowNodesOrderChanged,\n      afterColumnsChanged\n    });\n    if (!groupStageExecuted && !this.nodeManager.treeData) {\n      const sibling = rootNode.sibling;\n      rootNode.childrenAfterGroup = rootNode.allLeafChildren;\n      if (sibling) {\n        sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n      }\n      rootNode.updateHasChildren();\n    }\n    if (this.rowNodesCountReady) {\n      this.rowCountReady = true;\n      this.eventSvc.dispatchEventOnce({ type: \"rowCountReady\" });\n    }\n  }\n  doFilter(changedPath) {\n    if (this.filterStage) {\n      this.filterStage.execute({ rowNode: this.rootNode, changedPath });\n    } else {\n      changedPath.forEachChangedNodeDepthFirst((rowNode) => {\n        rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n        updateRowNodeAfterFilter(rowNode);\n      }, true);\n    }\n  }\n  doPivot(changedPath) {\n    this.pivotStage?.execute({ rowNode: this.rootNode, changedPath });\n  }\n  getRowNode(id) {\n    const idIsGroup = typeof id == \"string\" && id.indexOf(ROW_ID_PREFIX_ROW_GROUP) == 0;\n    if (idIsGroup) {\n      let res = void 0;\n      this.forEachNode((node) => {\n        if (node.id === id) {\n          res = node;\n        }\n      });\n      return res;\n    }\n    return this.nodeManager.getRowNode(id);\n  }\n  batchUpdateRowData(rowDataTransaction, callback) {\n    if (this.applyAsyncTransactionsTimeout == null) {\n      this.rowDataTransactionBatch = [];\n      const waitMillis = this.gos.get(\"asyncTransactionWaitMillis\");\n      this.applyAsyncTransactionsTimeout = window.setTimeout(() => {\n        if (this.isAlive()) {\n          this.executeBatchUpdateRowData();\n        }\n      }, waitMillis);\n    }\n    this.rowDataTransactionBatch.push({ rowDataTransaction, callback });\n  }\n  flushAsyncTransactions() {\n    if (this.applyAsyncTransactionsTimeout != null) {\n      clearTimeout(this.applyAsyncTransactionsTimeout);\n      this.executeBatchUpdateRowData();\n    }\n  }\n  executeBatchUpdateRowData() {\n    this.valueCache?.onDataChanged();\n    const callbackFuncsBound = [];\n    const rowNodeTrans = [];\n    const changedRowNodes = new ChangedRowNodes();\n    let orderChanged = false;\n    this.rowDataTransactionBatch?.forEach((tranItem) => {\n      this.rowNodesCountReady = true;\n      const { rowNodeTransaction, rowsInserted } = this.nodeManager.updateRowData(\n        tranItem.rowDataTransaction,\n        changedRowNodes\n      );\n      if (rowsInserted) {\n        orderChanged = true;\n      }\n      rowNodeTrans.push(rowNodeTransaction);\n      if (tranItem.callback) {\n        callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTransaction));\n      }\n    });\n    this.commitTransactions(orderChanged, changedRowNodes);\n    if (callbackFuncsBound.length > 0) {\n      window.setTimeout(() => {\n        callbackFuncsBound.forEach((func) => func());\n      }, 0);\n    }\n    if (rowNodeTrans.length > 0) {\n      this.eventSvc.dispatchEvent({\n        type: \"asyncTransactionsFlushed\",\n        results: rowNodeTrans\n      });\n    }\n    this.rowDataTransactionBatch = null;\n    this.applyAsyncTransactionsTimeout = void 0;\n  }\n  /**\n   * Used to apply transaction changes.\n   * Called by gridApi & rowDragFeature\n   */\n  updateRowData(rowDataTran) {\n    this.valueCache?.onDataChanged();\n    this.rowNodesCountReady = true;\n    const changedRowNodes = new ChangedRowNodes();\n    const { rowNodeTransaction, rowsInserted } = this.nodeManager.updateRowData(rowDataTran, changedRowNodes);\n    this.commitTransactions(rowsInserted, changedRowNodes);\n    return rowNodeTransaction;\n  }\n  /**\n   * Common to:\n   * - executeBatchUpdateRowData (batch transactions)\n   * - updateRowData (single transaction)\n   * - setImmutableRowData (generated transaction)\n   *\n   * @param rowNodeTrans - the transactions to apply\n   * @param orderChanged - whether the order of the rows has changed, either via generated transaction or user provided addIndex\n   */\n  commitTransactions(rowNodesOrderChanged, changedRowNodes) {\n    this.refreshModel({\n      step: \"group\",\n      rowDataUpdated: true,\n      rowNodesOrderChanged,\n      keepRenderedRows: true,\n      animate: !this.gos.get(\"suppressAnimationFrame\"),\n      changedRowNodes,\n      changedPath: this.createChangePath(true)\n    });\n  }\n  doRowsToDisplay() {\n    const { flattenStage, rootNode } = this;\n    let rowsToDisplay;\n    if (flattenStage) {\n      rowsToDisplay = flattenStage.execute({ rowNode: rootNode });\n    } else {\n      rowsToDisplay = rootNode?.childrenAfterSort ?? [];\n      for (const row of rowsToDisplay) {\n        row.setUiLevel(0);\n      }\n    }\n    this.rowsToDisplay = rowsToDisplay;\n  }\n  onRowHeightChanged() {\n    this.refreshModel({\n      step: \"map\",\n      keepRenderedRows: true,\n      keepUndoRedoStack: true\n    });\n  }\n  resetRowHeights() {\n    const rootNode = this.rootNode;\n    if (!rootNode) {\n      return;\n    }\n    const atLeastOne = this.resetRowHeightsForAllRowNodes();\n    rootNode.setRowHeight(rootNode.rowHeight, true);\n    if (rootNode.sibling) {\n      rootNode.sibling.setRowHeight(rootNode.sibling.rowHeight, true);\n    }\n    if (atLeastOne) {\n      this.onRowHeightChanged();\n    }\n  }\n  resetRowHeightsForAllRowNodes() {\n    let atLeastOne = false;\n    this.forEachNode((rowNode) => {\n      rowNode.setRowHeight(rowNode.rowHeight, true);\n      const detailNode = rowNode.detailNode;\n      if (detailNode) {\n        detailNode.setRowHeight(detailNode.rowHeight, true);\n      }\n      if (rowNode.sibling) {\n        rowNode.sibling.setRowHeight(rowNode.sibling.rowHeight, true);\n      }\n      atLeastOne = true;\n    });\n    return atLeastOne;\n  }\n  onGridStylesChanges(e) {\n    if (e.rowHeightChanged) {\n      if (this.beans.rowAutoHeight?.active) {\n        return;\n      }\n      this.resetRowHeights();\n    }\n  }\n  onGridReady() {\n    if (!this.started) {\n      this.setInitialData();\n    }\n  }\n  isRowDataLoaded() {\n    return this.rowCountReady;\n  }\n  destroy() {\n    super.destroy();\n    this.clearHighlight();\n    this.started = false;\n    this.rootNode = null;\n    this.nodeManager = null;\n    this.rowDataTransactionBatch = null;\n    this.orderedStages = _EmptyArray;\n    this.rowsToDisplay = _EmptyArray;\n  }\n  /**\n   * @deprecated v33.1\n   */\n  onRowHeightChangedDebounced() {\n    this.onRowHeightChanged_debounced();\n  }\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/clientSideRowModelApi.ts\nfunction onGroupExpandedOrCollapsed(beans) {\n  beans.expansionSvc?.onGroupExpandedOrCollapsed();\n}\nfunction refreshClientSideRowModel(beans, step) {\n  const clientSideRowModel = _getClientSideRowModel(beans);\n  if (clientSideRowModel) {\n    if (!step || step === \"everything\") {\n      step = \"group\";\n    }\n    clientSideRowModel.refreshModel({\n      step,\n      keepRenderedRows: true,\n      animate: !beans.gos.get(\"suppressAnimationFrame\")\n    });\n  }\n}\nfunction isRowDataEmpty(beans) {\n  return _getClientSideRowModel(beans)?.isEmpty() ?? true;\n}\nfunction forEachLeafNode(beans, callback) {\n  _getClientSideRowModel(beans)?.forEachLeafNode(callback);\n}\nfunction forEachNodeAfterFilter(beans, callback) {\n  _getClientSideRowModel(beans)?.forEachNodeAfterFilter(callback);\n}\nfunction forEachNodeAfterFilterAndSort(beans, callback) {\n  _getClientSideRowModel(beans)?.forEachNodeAfterFilterAndSort(callback);\n}\nfunction resetRowHeights(beans) {\n  if (beans.rowAutoHeight?.active) {\n    _warn(3);\n    return;\n  }\n  _getClientSideRowModel(beans)?.resetRowHeights();\n}\nfunction applyTransaction(beans, rowDataTransaction) {\n  return beans.frameworkOverrides.wrapIncoming(\n    () => _getClientSideRowModel(beans)?.updateRowData(rowDataTransaction)\n  );\n}\nfunction applyTransactionAsync(beans, rowDataTransaction, callback) {\n  beans.frameworkOverrides.wrapIncoming(\n    () => _getClientSideRowModel(beans)?.batchUpdateRowData(rowDataTransaction, callback)\n  );\n}\nfunction flushAsyncTransactions(beans) {\n  beans.frameworkOverrides.wrapIncoming(() => _getClientSideRowModel(beans)?.flushAsyncTransactions());\n}\nfunction getBestCostNodeSelection(beans) {\n  return beans.selectionSvc?.getBestCostNodeSelection();\n}\n\n// packages/ag-grid-community/src/clientSideRowModel/clientSideRowModelModule.ts\nvar ClientSideRowModelModule = {\n  moduleName: \"ClientSideRowModel\",\n  version: VERSION,\n  rowModels: [\"clientSide\"],\n  beans: [ClientSideNodeManager, ClientSideRowModel, SortStage],\n  dependsOn: [SortModule]\n};\nvar ClientSideRowModelApiModule = {\n  moduleName: \"ClientSideRowModelApi\",\n  version: VERSION,\n  apiFunctions: {\n    onGroupExpandedOrCollapsed,\n    refreshClientSideRowModel,\n    isRowDataEmpty,\n    forEachLeafNode,\n    forEachNodeAfterFilter,\n    forEachNodeAfterFilterAndSort,\n    resetRowHeights,\n    applyTransaction,\n    applyTransactionAsync,\n    flushAsyncTransactions,\n    getBestCostNodeSelection\n  },\n  dependsOn: [CsrmSsrmSharedApiModule]\n};\n\n// packages/ag-grid-community/src/export/gridSerializer.ts\nvar GridSerializer = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"gridSerializer\";\n  }\n  wireBeans(beans) {\n    this.visibleCols = beans.visibleCols;\n    this.colModel = beans.colModel;\n    this.rowModel = beans.rowModel;\n    this.pinnedRowModel = beans.pinnedRowModel;\n  }\n  serialize(gridSerializingSession, params = {}) {\n    const { allColumns, columnKeys, skipRowGroups, exportRowNumbers } = params;\n    const columnsToExport = this.getColumnsToExport({\n      allColumns,\n      skipRowGroups,\n      columnKeys,\n      exportRowNumbers\n    });\n    return [\n      // first pass, put in the header names of the cols\n      this.prepareSession(columnsToExport),\n      this.prependContent(params),\n      this.exportColumnGroups(params, columnsToExport),\n      this.exportHeaders(params, columnsToExport),\n      this.processPinnedTopRows(params, columnsToExport),\n      this.processRows(params, columnsToExport),\n      this.processPinnedBottomRows(params, columnsToExport),\n      this.appendContent(params)\n    ].reduce((composed, f) => f(composed), gridSerializingSession).parse();\n  }\n  processRow(gridSerializingSession, params, columnsToExport, node) {\n    const rowSkipper = params.shouldRowBeSkipped || (() => false);\n    const isClipboardExport = params.rowPositions != null;\n    const isExplicitExportSelection = isClipboardExport || !!params.onlySelected;\n    const hideOpenParents = this.gos.get(\"groupHideOpenParents\") && !isExplicitExportSelection;\n    const isLeafNode = this.colModel.isPivotMode() ? node.leafGroup : !node.group;\n    const isFooter = !!node.footer;\n    const shouldSkipCurrentGroup = node.allChildrenCount === 1 && node.childrenAfterGroup?.length === 1 && _canSkipShowingRowGroup(this.gos, node);\n    if (!isLeafNode && !isFooter && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents) || params.onlySelected && !node.isSelected() || params.skipPinnedTop && node.rowPinned === \"top\" || params.skipPinnedBottom && node.rowPinned === \"bottom\" || node.stub) {\n      return;\n    }\n    const nodeIsRootNode = node.level === -1;\n    if (nodeIsRootNode && !isLeafNode && !isFooter) {\n      return;\n    }\n    const shouldRowBeSkipped = rowSkipper(_addGridCommonParams(this.gos, { node }));\n    if (shouldRowBeSkipped) {\n      return;\n    }\n    const rowAccumulator = gridSerializingSession.onNewBodyRow(node);\n    columnsToExport.forEach((column, index) => {\n      rowAccumulator.onColumn(column, index, node);\n    });\n    if (params.getCustomContentBelowRow) {\n      const content = params.getCustomContentBelowRow(_addGridCommonParams(this.gos, { node }));\n      if (content) {\n        gridSerializingSession.addCustomContent(content);\n      }\n    }\n  }\n  appendContent(params) {\n    return (gridSerializingSession) => {\n      const appendContent = params.appendContent;\n      if (appendContent) {\n        gridSerializingSession.addCustomContent(appendContent);\n      }\n      return gridSerializingSession;\n    };\n  }\n  prependContent(params) {\n    return (gridSerializingSession) => {\n      const prependContent = params.prependContent;\n      if (prependContent) {\n        gridSerializingSession.addCustomContent(prependContent);\n      }\n      return gridSerializingSession;\n    };\n  }\n  prepareSession(columnsToExport) {\n    return (gridSerializingSession) => {\n      gridSerializingSession.prepare(columnsToExport);\n      return gridSerializingSession;\n    };\n  }\n  exportColumnGroups(params, columnsToExport) {\n    return (gridSerializingSession) => {\n      if (!params.skipColumnGroupHeaders) {\n        const idCreator = new GroupInstanceIdCreator();\n        const { colGroupSvc } = this.beans;\n        const displayedGroups = colGroupSvc ? colGroupSvc.createColumnGroups({\n          columns: columnsToExport,\n          idCreator,\n          pinned: null,\n          isStandaloneStructure: true\n        }) : columnsToExport;\n        this.recursivelyAddHeaderGroups(\n          displayedGroups,\n          gridSerializingSession,\n          params.processGroupHeaderCallback\n        );\n      }\n      return gridSerializingSession;\n    };\n  }\n  exportHeaders(params, columnsToExport) {\n    return (gridSerializingSession) => {\n      if (!params.skipColumnHeaders) {\n        const gridRowIterator = gridSerializingSession.onNewHeaderRow();\n        columnsToExport.forEach((column, index) => {\n          gridRowIterator.onColumn(column, index, void 0);\n        });\n      }\n      return gridSerializingSession;\n    };\n  }\n  processPinnedTopRows(params, columnsToExport) {\n    return (gridSerializingSession) => {\n      const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n      if (params.rowPositions) {\n        params.rowPositions.filter((position) => position.rowPinned === \"top\").sort((a, b) => a.rowIndex - b.rowIndex).map((position) => this.pinnedRowModel?.getPinnedTopRow(position.rowIndex)).forEach(processRow);\n      } else if (!this.pinnedRowModel?.isManual()) {\n        this.pinnedRowModel?.forEachPinnedRow(\"top\", processRow);\n      }\n      return gridSerializingSession;\n    };\n  }\n  processRows(params, columnsToExport) {\n    return (gridSerializingSession) => {\n      const rowModel = this.rowModel;\n      const usingCsrm = _isClientSideRowModel(this.gos, rowModel);\n      const usingSsrm = _isServerSideRowModel(this.gos, rowModel);\n      const onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;\n      const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n      const { exportedRows = \"filteredAndSorted\" } = params;\n      if (params.rowPositions) {\n        params.rowPositions.filter((position) => position.rowPinned == null).sort((a, b) => a.rowIndex - b.rowIndex).map((position) => rowModel.getRow(position.rowIndex)).forEach(processRow);\n        return gridSerializingSession;\n      }\n      if (this.colModel.isPivotMode()) {\n        if (usingCsrm) {\n          rowModel.forEachPivotNode(processRow, true, exportedRows === \"filteredAndSorted\");\n        } else if (usingSsrm) {\n          rowModel.forEachNodeAfterFilterAndSort(processRow, true);\n        } else {\n          rowModel.forEachNode(processRow);\n        }\n        return gridSerializingSession;\n      }\n      if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {\n        const selectedNodes = this.beans.selectionSvc?.getSelectedNodes() ?? [];\n        this.replicateSortedOrder(selectedNodes);\n        selectedNodes.forEach(processRow);\n      } else {\n        if (exportedRows === \"all\") {\n          rowModel.forEachNode(processRow);\n        } else if (usingCsrm || usingSsrm) {\n          rowModel.forEachNodeAfterFilterAndSort(processRow, true);\n        } else {\n          rowModel.forEachNode(processRow);\n        }\n      }\n      return gridSerializingSession;\n    };\n  }\n  replicateSortedOrder(rows) {\n    const { sortSvc, rowNodeSorter } = this.beans;\n    if (!sortSvc || !rowNodeSorter) {\n      return;\n    }\n    const sortOptions = sortSvc.getSortOptions();\n    const compareNodes = (rowA, rowB) => {\n      if (rowA.rowIndex != null && rowB.rowIndex != null) {\n        return rowA.rowIndex - rowB.rowIndex;\n      }\n      if (rowA.level === rowB.level) {\n        if (rowA.parent?.id === rowB.parent?.id) {\n          return rowNodeSorter.compareRowNodes(\n            sortOptions,\n            {\n              rowNode: rowA,\n              currentPos: rowA.rowIndex ?? -1\n            },\n            {\n              rowNode: rowB,\n              currentPos: rowB.rowIndex ?? -1\n            }\n          );\n        }\n        return compareNodes(rowA.parent, rowB.parent);\n      }\n      if (rowA.level > rowB.level) {\n        return compareNodes(rowA.parent, rowB);\n      }\n      return compareNodes(rowA, rowB.parent);\n    };\n    rows.sort(compareNodes);\n  }\n  processPinnedBottomRows(params, columnsToExport) {\n    return (gridSerializingSession) => {\n      const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n      if (params.rowPositions) {\n        params.rowPositions.filter((position) => position.rowPinned === \"bottom\").sort((a, b) => a.rowIndex - b.rowIndex).map((position) => this.pinnedRowModel?.getPinnedBottomRow(position.rowIndex)).forEach(processRow);\n      } else if (!this.pinnedRowModel?.isManual()) {\n        this.pinnedRowModel?.forEachPinnedRow(\"bottom\", processRow);\n      }\n      return gridSerializingSession;\n    };\n  }\n  getColumnsToExport(params) {\n    const { allColumns = false, skipRowGroups = false, exportRowNumbers = false, columnKeys } = params;\n    const { colModel, gos, visibleCols } = this;\n    const isPivotMode = colModel.isPivotMode();\n    const filterSpecialColumns = (col) => {\n      if (isColumnSelectionCol(col)) {\n        return false;\n      }\n      return !isRowNumberCol(col) || exportRowNumbers;\n    };\n    if (columnKeys && columnKeys.length) {\n      return colModel.getColsForKeys(columnKeys).filter(filterSpecialColumns);\n    }\n    const isTreeData = gos.get(\"treeData\");\n    let columnsToExport = [];\n    if (allColumns && !isPivotMode) {\n      columnsToExport = colModel.getCols();\n    } else {\n      columnsToExport = visibleCols.allCols;\n    }\n    columnsToExport = columnsToExport.filter(\n      (column) => filterSpecialColumns(column) && (skipRowGroups && !isTreeData ? !isColumnGroupAutoCol(column) : true)\n    );\n    return columnsToExport;\n  }\n  recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n    const directChildrenHeaderGroups = [];\n    displayedGroups.forEach((columnGroupChild) => {\n      const columnGroup = columnGroupChild;\n      if (!columnGroup.getChildren) {\n        return;\n      }\n      columnGroup.getChildren().forEach((it) => directChildrenHeaderGroups.push(it));\n    });\n    if (displayedGroups.length > 0 && isColumnGroup(displayedGroups[0])) {\n      this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);\n    }\n    if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n      this.recursivelyAddHeaderGroups(\n        directChildrenHeaderGroups,\n        gridSerializingSession,\n        processGroupHeaderCallback\n      );\n    }\n  }\n  doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n    const gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n    let columnIndex = 0;\n    displayedGroups.forEach((columnGroupChild) => {\n      const columnGroup = columnGroupChild;\n      let name;\n      if (processGroupHeaderCallback) {\n        name = processGroupHeaderCallback(\n          _addGridCommonParams(this.gos, {\n            columnGroup\n          })\n        );\n      } else {\n        name = this.beans.colNames.getDisplayNameForColumnGroup(columnGroup, \"header\");\n      }\n      const collapsibleGroupRanges = columnGroup.getLeafColumns().reduce((collapsibleGroups, currentColumn, currentIdx, arr) => {\n        let lastGroup = _last(collapsibleGroups);\n        const groupShow = currentColumn.getColumnGroupShow() === \"open\";\n        if (!groupShow) {\n          if (lastGroup && lastGroup[1] == null) {\n            lastGroup[1] = currentIdx - 1;\n          }\n        } else if (!lastGroup || lastGroup[1] != null) {\n          lastGroup = [currentIdx];\n          collapsibleGroups.push(lastGroup);\n        }\n        if (currentIdx === arr.length - 1 && lastGroup && lastGroup[1] == null) {\n          lastGroup[1] = currentIdx;\n        }\n        return collapsibleGroups;\n      }, []);\n      gridRowIterator.onColumn(\n        columnGroup,\n        name || \"\",\n        columnIndex++,\n        columnGroup.getLeafColumns().length - 1,\n        collapsibleGroupRanges\n      );\n    });\n  }\n};\n\n// packages/ag-grid-community/src/export/exportModule.ts\nvar SharedExportModule = {\n  moduleName: \"SharedExport\",\n  version: VERSION,\n  beans: [GridSerializer]\n};\n\n// packages/ag-grid-community/src/csvExport/csvSerializingSession.ts\nvar LINE_SEPARATOR = \"\\r\\n\";\nvar CsvSerializingSession = class extends BaseGridSerializingSession {\n  constructor(config) {\n    super(config);\n    this.isFirstLine = true;\n    this.result = \"\";\n    const { suppressQuotes, columnSeparator } = config;\n    this.suppressQuotes = suppressQuotes;\n    this.columnSeparator = columnSeparator;\n  }\n  addCustomContent(content) {\n    if (!content) {\n      return;\n    }\n    if (typeof content === \"string\") {\n      if (!/^\\s*\\n/.test(content)) {\n        this.beginNewLine();\n      }\n      content = content.replace(/\\r?\\n/g, LINE_SEPARATOR);\n      this.result += content;\n    } else {\n      content.forEach((row) => {\n        this.beginNewLine();\n        row.forEach((cell, index) => {\n          if (index !== 0) {\n            this.result += this.columnSeparator;\n          }\n          this.result += this.putInQuotes(cell.data.value || \"\");\n          if (cell.mergeAcross) {\n            this.appendEmptyCells(cell.mergeAcross);\n          }\n        });\n      });\n    }\n  }\n  onNewHeaderGroupingRow() {\n    this.beginNewLine();\n    return {\n      onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n    };\n  }\n  onNewHeaderGroupingRowColumn(columnGroup, header, index, span) {\n    if (index != 0) {\n      this.result += this.columnSeparator;\n    }\n    this.result += this.putInQuotes(header);\n    this.appendEmptyCells(span);\n  }\n  appendEmptyCells(count) {\n    for (let i = 1; i <= count; i++) {\n      this.result += this.columnSeparator + this.putInQuotes(\"\");\n    }\n  }\n  onNewHeaderRow() {\n    this.beginNewLine();\n    return {\n      onColumn: this.onNewHeaderRowColumn.bind(this)\n    };\n  }\n  onNewHeaderRowColumn(column, index) {\n    if (index != 0) {\n      this.result += this.columnSeparator;\n    }\n    this.result += this.putInQuotes(this.extractHeaderValue(column));\n  }\n  onNewBodyRow() {\n    this.beginNewLine();\n    return {\n      onColumn: this.onNewBodyRowColumn.bind(this)\n    };\n  }\n  onNewBodyRowColumn(column, index, node) {\n    if (index != 0) {\n      this.result += this.columnSeparator;\n    }\n    const rowCellValue = this.extractRowCellValue(column, index, index, \"csv\", node);\n    this.result += this.putInQuotes(rowCellValue.valueFormatted ?? rowCellValue.value);\n  }\n  putInQuotes(value) {\n    if (this.suppressQuotes) {\n      return value;\n    }\n    if (value === null || value === void 0) {\n      return '\"\"';\n    }\n    let stringValue;\n    if (typeof value === \"string\") {\n      stringValue = value;\n    } else if (typeof value.toString === \"function\") {\n      stringValue = value.toString();\n    } else {\n      _warn(53);\n      stringValue = \"\";\n    }\n    const valueEscaped = stringValue.replace(/\"/g, '\"\"');\n    return '\"' + valueEscaped + '\"';\n  }\n  parse() {\n    return this.result;\n  }\n  beginNewLine() {\n    if (!this.isFirstLine) {\n      this.result += LINE_SEPARATOR;\n    }\n    this.isFirstLine = false;\n  }\n};\n\n// packages/ag-grid-community/src/csvExport/csvCreator.ts\nvar CsvCreator = class extends BaseCreator {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"csvCreator\";\n  }\n  wireBeans(beans) {\n    this.colModel = beans.colModel;\n    this.colNames = beans.colNames;\n    this.rowGroupColsSvc = beans.rowGroupColsSvc;\n    this.valueSvc = beans.valueSvc;\n  }\n  getMergedParams(params) {\n    const baseParams4 = this.gos.get(\"defaultCsvExportParams\");\n    return Object.assign({}, baseParams4, params);\n  }\n  export(userParams) {\n    if (this.isExportSuppressed()) {\n      _warn(51);\n      return;\n    }\n    const mergedParams = this.getMergedParams(userParams);\n    const data = this.getData(mergedParams);\n    const packagedFile = new Blob([\"\\uFEFF\", data], { type: \"text/plain\" });\n    const fileName = typeof mergedParams.fileName === \"function\" ? mergedParams.fileName(_addGridCommonParams(this.gos, {})) : mergedParams.fileName;\n    _downloadFile(this.getFileName(fileName), packagedFile);\n  }\n  exportDataAsCsv(params) {\n    this.export(params);\n  }\n  getDataAsCsv(params, skipDefaultParams = false) {\n    const mergedParams = skipDefaultParams ? Object.assign({}, params) : this.getMergedParams(params);\n    return this.getData(mergedParams);\n  }\n  getDefaultFileExtension() {\n    return \"csv\";\n  }\n  createSerializingSession(params) {\n    const { colModel, colNames, rowGroupColsSvc, valueSvc, gos } = this;\n    const {\n      processCellCallback,\n      processHeaderCallback,\n      processGroupHeaderCallback,\n      processRowGroupCallback,\n      suppressQuotes,\n      columnSeparator\n    } = params;\n    return new CsvSerializingSession({\n      colModel,\n      colNames,\n      valueSvc,\n      gos,\n      processCellCallback: processCellCallback || void 0,\n      processHeaderCallback: processHeaderCallback || void 0,\n      processGroupHeaderCallback: processGroupHeaderCallback || void 0,\n      processRowGroupCallback: processRowGroupCallback || void 0,\n      suppressQuotes: suppressQuotes || false,\n      columnSeparator: columnSeparator || \",\",\n      rowGroupColsSvc\n    });\n  }\n  isExportSuppressed() {\n    return this.gos.get(\"suppressCsvExport\");\n  }\n};\n\n// packages/ag-grid-community/src/csvExport/csvExportApi.ts\nfunction getDataAsCsv(beans, params) {\n  return beans.csvCreator?.getDataAsCsv(params);\n}\nfunction exportDataAsCsv(beans, params) {\n  beans.csvCreator?.exportDataAsCsv(params);\n}\n\n// packages/ag-grid-community/src/csvExport/csvExportModule.ts\nvar CsvExportModule = {\n  moduleName: \"CsvExport\",\n  version: VERSION,\n  beans: [CsvCreator],\n  apiFunctions: {\n    getDataAsCsv,\n    exportDataAsCsv\n  },\n  dependsOn: [SharedExportModule]\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteBlock.ts\nvar InfiniteBlock = class extends BeanStub {\n  constructor(id, parentCache, params) {\n    super();\n    this.id = id;\n    this.parentCache = parentCache;\n    this.params = params;\n    this.state = \"needsLoading\";\n    this.version = 0;\n    this.startRow = id * params.blockSize;\n    this.endRow = this.startRow + params.blockSize;\n  }\n  load() {\n    this.state = \"loading\";\n    this.loadFromDatasource();\n  }\n  setStateWaitingToLoad() {\n    this.version++;\n    this.state = \"needsLoading\";\n  }\n  pageLoadFailed(version) {\n    const requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n    if (requestMostRecentAndLive) {\n      this.state = \"failed\";\n    }\n    this.dispatchLocalEvent({ type: \"loadComplete\" });\n  }\n  pageLoaded(version, rows, lastRow) {\n    this.successCommon(version, { rowData: rows, rowCount: lastRow });\n  }\n  isRequestMostRecentAndLive(version) {\n    const thisIsMostRecentRequest = version === this.version;\n    const weAreNotDestroyed = this.isAlive();\n    return thisIsMostRecentRequest && weAreNotDestroyed;\n  }\n  successCommon(version, params) {\n    this.dispatchLocalEvent({ type: \"loadComplete\" });\n    const requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n    if (requestMostRecentAndLive) {\n      this.state = \"loaded\";\n      this.processServerResult(params);\n    }\n  }\n  postConstruct() {\n    this.rowNodes = [];\n    const {\n      params: { blockSize, rowHeight },\n      startRow,\n      beans,\n      rowNodes\n    } = this;\n    for (let i = 0; i < blockSize; i++) {\n      const rowIndex = startRow + i;\n      const rowNode = new RowNode(beans);\n      rowNode.setRowHeight(rowHeight);\n      rowNode.uiLevel = 0;\n      rowNode.setRowIndex(rowIndex);\n      rowNode.setRowTop(rowHeight * rowIndex);\n      rowNodes.push(rowNode);\n    }\n  }\n  getBlockStateJson() {\n    const { id, startRow, endRow, state: pageStatus } = this;\n    return {\n      id: \"\" + id,\n      state: {\n        blockNumber: id,\n        startRow,\n        endRow,\n        pageStatus\n      }\n    };\n  }\n  setDataAndId(rowNode, data, index) {\n    if (_exists(data)) {\n      rowNode.setDataAndId(data, index.toString());\n    } else {\n      rowNode.setDataAndId(void 0, void 0);\n    }\n  }\n  loadFromDatasource() {\n    const params = this.createLoadParams();\n    if (_missing(this.params.datasource.getRows)) {\n      _warn(90);\n      return;\n    }\n    window.setTimeout(() => {\n      this.params.datasource.getRows(params);\n    }, 0);\n  }\n  createLoadParams() {\n    const {\n      startRow,\n      endRow,\n      version,\n      params: { sortModel, filterModel },\n      gos\n    } = this;\n    const params = {\n      startRow,\n      endRow,\n      successCallback: this.pageLoaded.bind(this, version),\n      failCallback: this.pageLoadFailed.bind(this, version),\n      sortModel,\n      filterModel,\n      context: _addGridCommonParams(gos, {}).context\n    };\n    return params;\n  }\n  forEachNode(callback, sequence, rowCount) {\n    this.rowNodes.forEach((rowNode, index) => {\n      const rowIndex = this.startRow + index;\n      if (rowIndex < rowCount) {\n        callback(rowNode, sequence.value++);\n      }\n    });\n  }\n  getRow(rowIndex, dontTouchLastAccessed = false) {\n    if (!dontTouchLastAccessed) {\n      this.lastAccessed = this.params.lastAccessedSequence.value++;\n    }\n    const localIndex = rowIndex - this.startRow;\n    return this.rowNodes[localIndex];\n  }\n  processServerResult(params) {\n    const { rowNodes, beans } = this;\n    rowNodes.forEach((rowNode, index) => {\n      const data = params.rowData ? params.rowData[index] : void 0;\n      if (!rowNode.id && rowNode.alreadyRendered && data) {\n        rowNodes[index] = new RowNode(beans);\n        rowNodes[index].setRowIndex(rowNode.rowIndex);\n        rowNodes[index].setRowTop(rowNode.rowTop);\n        rowNodes[index].setRowHeight(rowNode.rowHeight);\n        rowNode.clearRowTopAndRowIndex();\n      }\n      this.setDataAndId(rowNodes[index], data, this.startRow + index);\n    });\n    const finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : void 0;\n    this.parentCache.pageLoaded(this, finalRowCount);\n  }\n  destroy() {\n    this.rowNodes.forEach((rowNode) => {\n      rowNode.clearRowTopAndRowIndex();\n    });\n    super.destroy();\n  }\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteCache.ts\nvar MAX_EMPTY_BLOCKS_TO_KEEP = 2;\nvar InfiniteCache = class extends BeanStub {\n  constructor(params) {\n    super();\n    this.params = params;\n    this.lastRowIndexKnown = false;\n    this.blocks = {};\n    this.blockCount = 0;\n    this.rowCount = params.initialRowCount;\n  }\n  // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n  // it will want new pages in the cache as it asks for rows. only when we are inserting /\n  // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n  getRow(rowIndex, dontCreatePage = false) {\n    const blockId = Math.floor(rowIndex / this.params.blockSize);\n    let block = this.blocks[blockId];\n    if (!block) {\n      if (dontCreatePage) {\n        return void 0;\n      }\n      block = this.createBlock(blockId);\n    }\n    return block.getRow(rowIndex);\n  }\n  createBlock(blockNumber) {\n    const params = this.params;\n    const newBlock = this.createBean(new InfiniteBlock(blockNumber, this, params));\n    this.blocks[newBlock.id] = newBlock;\n    this.blockCount++;\n    this.purgeBlocksIfNeeded(newBlock);\n    params.rowNodeBlockLoader.addBlock(newBlock);\n    return newBlock;\n  }\n  // we have this on infinite row model only, not server side row model,\n  // because for server side, it would leave the children in inconsistent\n  // state - eg if a node had children, but after the refresh it had data\n  // for a different row, then the children would be with the wrong row node.\n  refreshCache() {\n    const nothingToRefresh = this.blockCount == 0;\n    if (nothingToRefresh) {\n      this.purgeCache();\n      return;\n    }\n    this.getBlocksInOrder().forEach((block) => block.setStateWaitingToLoad());\n    this.params.rowNodeBlockLoader.checkBlockToLoad();\n  }\n  destroy() {\n    this.getBlocksInOrder().forEach((block) => this.destroyBlock(block));\n    super.destroy();\n  }\n  getRowCount() {\n    return this.rowCount;\n  }\n  isLastRowIndexKnown() {\n    return this.lastRowIndexKnown;\n  }\n  // block calls this, when page loaded\n  pageLoaded(block, lastRow) {\n    if (!this.isAlive()) {\n      return;\n    }\n    _logIfDebug(this.gos, `InfiniteCache - onPageLoaded: page = ${block.id}, lastRow = ${lastRow}`);\n    this.checkRowCount(block, lastRow);\n    this.onCacheUpdated();\n  }\n  purgeBlocksIfNeeded(blockToExclude) {\n    const blocksForPurging = this.getBlocksInOrder().filter((b) => b != blockToExclude);\n    const lastAccessedComparator = (a, b) => b.lastAccessed - a.lastAccessed;\n    blocksForPurging.sort(lastAccessedComparator);\n    const maxBlocksProvided = this.params.maxBlocksInCache > 0;\n    const blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;\n    const emptyBlocksToKeep = MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n    blocksForPurging.forEach((block, index) => {\n      const purgeBecauseBlockEmpty = block.state === \"needsLoading\" && index >= emptyBlocksToKeep;\n      const purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n      if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n        if (this.isBlockCurrentlyDisplayed(block)) {\n          return;\n        }\n        if (this.isBlockFocused(block)) {\n          return;\n        }\n        this.removeBlockFromCache(block);\n      }\n    });\n  }\n  isBlockFocused(block) {\n    const focusedCell = this.beans.focusSvc.getFocusCellToUseAfterRefresh();\n    if (!focusedCell) {\n      return false;\n    }\n    if (focusedCell.rowPinned != null) {\n      return false;\n    }\n    const { startRow, endRow } = block;\n    const hasFocus = focusedCell.rowIndex >= startRow && focusedCell.rowIndex < endRow;\n    return hasFocus;\n  }\n  isBlockCurrentlyDisplayed(block) {\n    const { startRow, endRow } = block;\n    return this.beans.rowRenderer.isRangeInRenderedViewport(startRow, endRow - 1);\n  }\n  removeBlockFromCache(blockToRemove) {\n    if (!blockToRemove) {\n      return;\n    }\n    this.destroyBlock(blockToRemove);\n  }\n  checkRowCount(block, lastRow) {\n    if (typeof lastRow === \"number\" && lastRow >= 0) {\n      this.rowCount = lastRow;\n      this.lastRowIndexKnown = true;\n    } else if (!this.lastRowIndexKnown) {\n      const { blockSize, overflowSize } = this.params;\n      const lastRowIndex = (block.id + 1) * blockSize;\n      const lastRowIndexPlusOverflow = lastRowIndex + overflowSize;\n      if (this.rowCount < lastRowIndexPlusOverflow) {\n        this.rowCount = lastRowIndexPlusOverflow;\n      }\n    }\n  }\n  setRowCount(rowCount, lastRowIndexKnown) {\n    this.rowCount = rowCount;\n    if (_exists(lastRowIndexKnown)) {\n      this.lastRowIndexKnown = lastRowIndexKnown;\n    }\n    if (!this.lastRowIndexKnown) {\n      if (this.rowCount % this.params.blockSize === 0) {\n        this.rowCount++;\n      }\n    }\n    this.onCacheUpdated();\n  }\n  forEachNodeDeep(callback) {\n    const sequence = { value: 0 };\n    this.getBlocksInOrder().forEach((block) => block.forEachNode(callback, sequence, this.rowCount));\n  }\n  getBlocksInOrder() {\n    const blockComparator = (a, b) => a.id - b.id;\n    const blocks = Object.values(this.blocks).sort(blockComparator);\n    return blocks;\n  }\n  destroyBlock(block) {\n    delete this.blocks[block.id];\n    this.destroyBean(block);\n    this.blockCount--;\n    this.params.rowNodeBlockLoader.removeBlock(block);\n  }\n  // gets called 1) row count changed 2) cache purged 3) items inserted\n  onCacheUpdated() {\n    if (this.isAlive()) {\n      this.destroyAllBlocksPastVirtualRowCount();\n      this.eventSvc.dispatchEvent({\n        type: \"storeUpdated\"\n      });\n    }\n  }\n  destroyAllBlocksPastVirtualRowCount() {\n    const blocksToDestroy = [];\n    this.getBlocksInOrder().forEach((block) => {\n      const startRow = block.id * this.params.blockSize;\n      if (startRow >= this.rowCount) {\n        blocksToDestroy.push(block);\n      }\n    });\n    if (blocksToDestroy.length > 0) {\n      blocksToDestroy.forEach((block) => this.destroyBlock(block));\n    }\n  }\n  purgeCache() {\n    this.getBlocksInOrder().forEach((block) => this.removeBlockFromCache(block));\n    this.lastRowIndexKnown = false;\n    if (this.rowCount === 0) {\n      this.rowCount = this.params.initialRowCount;\n    }\n    this.onCacheUpdated();\n  }\n  getRowNodesInRange(firstInRange, lastInRange) {\n    const result = [];\n    let lastBlockId = -1;\n    let inActiveRange = false;\n    const numberSequence = { value: 0 };\n    let foundGapInSelection = false;\n    this.getBlocksInOrder().forEach((block) => {\n      if (foundGapInSelection) {\n        return;\n      }\n      if (inActiveRange && lastBlockId + 1 !== block.id) {\n        foundGapInSelection = true;\n        return;\n      }\n      lastBlockId = block.id;\n      block.forEachNode(\n        (rowNode) => {\n          const hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n          if (inActiveRange || hitFirstOrLast) {\n            result.push(rowNode);\n          }\n          if (hitFirstOrLast) {\n            inActiveRange = !inActiveRange;\n          }\n        },\n        numberSequence,\n        this.rowCount\n      );\n    });\n    const invalidRange = foundGapInSelection || inActiveRange;\n    return invalidRange ? [] : result;\n  }\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteRowModel.ts\nvar InfiniteRowModel = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowModel\";\n  }\n  getRowBounds(index) {\n    return {\n      rowHeight: this.rowHeight,\n      rowTop: this.rowHeight * index\n    };\n  }\n  // we don't implement as lazy row heights is not supported in this row model\n  ensureRowHeightsValid() {\n    return false;\n  }\n  postConstruct() {\n    if (this.gos.get(\"rowModelType\") !== \"infinite\") {\n      return;\n    }\n    this.rowHeight = _getRowHeightAsNumber(this.beans);\n    this.addEventListeners();\n    this.addDestroyFunc(() => this.destroyCache());\n  }\n  start() {\n    this.setDatasource(this.gos.get(\"datasource\"));\n  }\n  destroy() {\n    this.destroyDatasource();\n    super.destroy();\n  }\n  destroyDatasource() {\n    if (this.datasource) {\n      this.destroyBean(this.datasource);\n      this.beans.rowRenderer.datasourceChanged();\n      this.datasource = null;\n    }\n  }\n  addEventListeners() {\n    this.addManagedEventListeners({\n      filterChanged: this.reset.bind(this),\n      sortChanged: this.reset.bind(this),\n      newColumnsLoaded: this.onColumnEverything.bind(this),\n      storeUpdated: this.dispatchModelUpdatedEvent.bind(this)\n    });\n    this.addManagedPropertyListener(\"datasource\", () => this.setDatasource(this.gos.get(\"datasource\")));\n    this.addManagedPropertyListener(\"cacheBlockSize\", () => this.resetCache());\n    this.addManagedPropertyListener(\"rowHeight\", () => {\n      this.rowHeight = _getRowHeightAsNumber(this.beans);\n      this.cacheParams.rowHeight = this.rowHeight;\n      this.updateRowHeights();\n    });\n  }\n  onColumnEverything() {\n    let resetRequired;\n    if (this.cacheParams) {\n      resetRequired = !_jsonEquals(this.cacheParams.sortModel, this.beans.sortSvc?.getSortModel() ?? []);\n    } else {\n      resetRequired = true;\n    }\n    if (resetRequired) {\n      this.reset();\n    }\n  }\n  getType() {\n    return \"infinite\";\n  }\n  setDatasource(datasource) {\n    this.destroyDatasource();\n    this.datasource = datasource;\n    if (datasource) {\n      this.reset();\n    }\n  }\n  isEmpty() {\n    return !this.infiniteCache;\n  }\n  isRowsToRender() {\n    return !!this.infiniteCache;\n  }\n  getNodesInRangeForSelection(firstInRange, lastInRange) {\n    return this.infiniteCache?.getRowNodesInRange(firstInRange, lastInRange) ?? [];\n  }\n  reset() {\n    if (!this.datasource) {\n      return;\n    }\n    const getRowIdFunc = _getRowIdCallback(this.gos);\n    const userGeneratingIds = getRowIdFunc != null;\n    if (!userGeneratingIds) {\n      this.beans.selectionSvc?.reset(\"rowDataChanged\");\n    }\n    this.resetCache();\n  }\n  dispatchModelUpdatedEvent() {\n    this.eventSvc.dispatchEvent({\n      type: \"modelUpdated\",\n      // not sure if these should all be false - noticed if after implementing,\n      // maybe they should be true?\n      newPage: false,\n      newPageSize: false,\n      newData: false,\n      keepRenderedRows: true,\n      animate: false\n    });\n  }\n  resetCache() {\n    this.destroyCache();\n    const beans = this.beans;\n    const { filterManager, sortSvc, rowNodeBlockLoader, eventSvc, gos } = beans;\n    this.cacheParams = {\n      // the user provided datasource\n      datasource: this.datasource,\n      // sort and filter model\n      filterModel: filterManager?.getFilterModel() ?? {},\n      sortModel: sortSvc?.getSortModel() ?? [],\n      rowNodeBlockLoader,\n      // properties - this way we take a snapshot of them, so if user changes any, they will be\n      // used next time we create a new cache, which is generally after a filter or sort change,\n      // or a new datasource is set\n      initialRowCount: gos.get(\"infiniteInitialRowCount\"),\n      maxBlocksInCache: gos.get(\"maxBlocksInCache\"),\n      rowHeight: _getRowHeightAsNumber(beans),\n      // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n      // the current page and request first row of next page\n      overflowSize: gos.get(\"cacheOverflowSize\"),\n      // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n      // server for one page at a time. so the default if not specified is 100.\n      blockSize: gos.get(\"cacheBlockSize\"),\n      // the cache could create this, however it is also used by the pages, so handy to create it\n      // here as the settings are also passed to the pages\n      lastAccessedSequence: { value: 0 }\n    };\n    this.infiniteCache = this.createBean(new InfiniteCache(this.cacheParams));\n    eventSvc.dispatchEventOnce({\n      type: \"rowCountReady\"\n    });\n    this.dispatchModelUpdatedEvent();\n  }\n  updateRowHeights() {\n    this.forEachNode((node) => {\n      node.setRowHeight(this.rowHeight);\n      node.setRowTop(this.rowHeight * node.rowIndex);\n    });\n    this.dispatchModelUpdatedEvent();\n  }\n  destroyCache() {\n    this.infiniteCache = this.destroyBean(this.infiniteCache);\n  }\n  getRow(rowIndex) {\n    const infiniteCache = this.infiniteCache;\n    if (!infiniteCache) {\n      return void 0;\n    }\n    if (rowIndex >= infiniteCache.getRowCount()) {\n      return void 0;\n    }\n    return infiniteCache.getRow(rowIndex);\n  }\n  getRowNode(id) {\n    let result;\n    this.forEachNode((rowNode) => {\n      if (rowNode.id === id) {\n        result = rowNode;\n      }\n    });\n    return result;\n  }\n  forEachNode(callback) {\n    this.infiniteCache?.forEachNodeDeep(callback);\n  }\n  getTopLevelRowCount() {\n    return this.getRowCount();\n  }\n  getTopLevelRowDisplayedIndex(topLevelIndex) {\n    return topLevelIndex;\n  }\n  getRowIndexAtPixel(pixel) {\n    if (this.rowHeight !== 0) {\n      const rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n      const lastRowIndex = this.getRowCount() - 1;\n      if (rowIndexForPixel > lastRowIndex) {\n        return lastRowIndex;\n      }\n      return rowIndexForPixel;\n    }\n    return 0;\n  }\n  getRowCount() {\n    return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;\n  }\n  isRowPresent(rowNode) {\n    return !!this.getRowNode(rowNode.id);\n  }\n  refreshCache() {\n    this.infiniteCache?.refreshCache();\n  }\n  purgeCache() {\n    this.infiniteCache?.purgeCache();\n  }\n  // for iRowModel\n  isLastRowIndexKnown() {\n    return this.infiniteCache?.isLastRowIndexKnown() ?? false;\n  }\n  setRowCount(rowCount, lastRowIndexKnown) {\n    this.infiniteCache?.setRowCount(rowCount, lastRowIndexKnown);\n  }\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteRowModelApi.ts\nfunction refreshInfiniteCache(beans) {\n  _getInfiniteRowModel(beans)?.refreshCache();\n}\nfunction purgeInfiniteCache(beans) {\n  _getInfiniteRowModel(beans)?.purgeCache();\n}\nfunction getInfiniteRowCount(beans) {\n  return _getInfiniteRowModel(beans)?.getRowCount();\n}\n\n// packages/ag-grid-community/src/infiniteRowModel/rowNodeBlockLoader.ts\nvar RowNodeBlockLoader = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowNodeBlockLoader\";\n    this.activeBlockLoadsCount = 0;\n    this.blocks = [];\n    this.active = true;\n  }\n  postConstruct() {\n    this.maxConcurrentRequests = _getMaxConcurrentDatasourceRequests(this.gos);\n    const blockLoadDebounceMillis = this.gos.get(\"blockLoadDebounceMillis\");\n    if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n      this.checkBlockToLoadDebounce = _debounce(\n        this,\n        this.performCheckBlocksToLoad.bind(this),\n        blockLoadDebounceMillis\n      );\n    }\n  }\n  addBlock(block) {\n    this.blocks.push(block);\n    block.addEventListener(\"loadComplete\", this.loadComplete.bind(this));\n    this.checkBlockToLoad();\n  }\n  removeBlock(block) {\n    _removeFromArray(this.blocks, block);\n  }\n  destroy() {\n    super.destroy();\n    this.active = false;\n  }\n  loadComplete() {\n    this.activeBlockLoadsCount--;\n    this.checkBlockToLoad();\n  }\n  checkBlockToLoad() {\n    if (this.checkBlockToLoadDebounce) {\n      this.checkBlockToLoadDebounce();\n    } else {\n      this.performCheckBlocksToLoad();\n    }\n  }\n  performCheckBlocksToLoad() {\n    if (!this.active) {\n      return;\n    }\n    this.printCacheStatus();\n    if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n      _logIfDebug(this.gos, `RowNodeBlockLoader - checkBlockToLoad: max loads exceeded`);\n      return;\n    }\n    const loadAvailability = this.maxConcurrentRequests != null ? this.maxConcurrentRequests - this.activeBlockLoadsCount : 1;\n    const blocksToLoad = this.blocks.filter((block) => block.state === \"needsLoading\").slice(0, loadAvailability);\n    this.activeBlockLoadsCount += blocksToLoad.length;\n    blocksToLoad.forEach((block) => block.load());\n    this.printCacheStatus();\n  }\n  getBlockState() {\n    const result = {};\n    this.blocks.forEach((block) => {\n      const { id, state } = block.getBlockStateJson();\n      result[id] = state;\n    });\n    return result;\n  }\n  printCacheStatus() {\n    _logIfDebug(\n      this.gos,\n      `RowNodeBlockLoader - printCacheStatus: activePageLoadsCount = ${this.activeBlockLoadsCount}, blocks = ${JSON.stringify(this.getBlockState())}`\n    );\n  }\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteRowModelModule.ts\nvar InfiniteRowModelCoreModule = {\n  moduleName: \"InfiniteRowModelCore\",\n  version: VERSION,\n  rowModels: [\"infinite\"],\n  beans: [InfiniteRowModel, RowNodeBlockLoader]\n};\nvar InfiniteRowModelModule = {\n  moduleName: \"InfiniteRowModel\",\n  version: VERSION,\n  apiFunctions: {\n    refreshInfiniteCache,\n    purgeInfiniteCache,\n    getInfiniteRowCount\n  },\n  dependsOn: [InfiniteRowModelCoreModule, SsrmInfiniteSharedApiModule]\n};\n\n// packages/ag-grid-community/src/rendering/cellRenderers/animateShowChangeCellRenderer.ts\nvar ARROW_UP = \"\\u2191\";\nvar ARROW_DOWN = \"\\u2193\";\nvar AnimateShowChangeCellRendererElement = {\n  tag: \"span\",\n  children: [\n    { tag: \"span\", ref: \"eDelta\", cls: \"ag-value-change-delta\" },\n    { tag: \"span\", ref: \"eValue\", cls: \"ag-value-change-value\" }\n  ]\n};\nvar AnimateShowChangeCellRenderer = class extends Component {\n  constructor() {\n    super(AnimateShowChangeCellRendererElement);\n    this.eValue = RefPlaceholder;\n    this.eDelta = RefPlaceholder;\n    this.refreshCount = 0;\n  }\n  init(params) {\n    this.refresh(params, true);\n  }\n  showDelta(params, delta) {\n    const absDelta = Math.abs(delta);\n    const valueFormatted = params.formatValue(absDelta);\n    const valueToUse = _exists(valueFormatted) ? valueFormatted : absDelta;\n    const deltaUp = delta >= 0;\n    const eDelta = this.eDelta;\n    if (deltaUp) {\n      eDelta.textContent = ARROW_UP + valueToUse;\n    } else {\n      eDelta.textContent = ARROW_DOWN + valueToUse;\n    }\n    eDelta.classList.toggle(\"ag-value-change-delta-up\", deltaUp);\n    eDelta.classList.toggle(\"ag-value-change-delta-down\", !deltaUp);\n  }\n  setTimerToRemoveDelta() {\n    this.refreshCount++;\n    const refreshCountCopy = this.refreshCount;\n    this.beans.frameworkOverrides.wrapIncoming(() => {\n      window.setTimeout(() => {\n        if (refreshCountCopy === this.refreshCount) {\n          this.hideDeltaValue();\n        }\n      }, 2e3);\n    });\n  }\n  hideDeltaValue() {\n    this.eValue.classList.remove(\"ag-value-change-value-highlight\");\n    _clearElement(this.eDelta);\n  }\n  refresh(params, isInitialRender = false) {\n    const { value, valueFormatted } = params;\n    const { eValue, lastValue, beans } = this;\n    if (value === lastValue) {\n      return false;\n    }\n    if (_exists(valueFormatted)) {\n      eValue.textContent = valueFormatted;\n    } else if (_exists(value)) {\n      eValue.textContent = value;\n    } else {\n      _clearElement(eValue);\n    }\n    if (beans.filterManager?.isSuppressFlashingCellsBecauseFiltering()) {\n      return false;\n    }\n    if (typeof value === \"number\" && typeof lastValue === \"number\") {\n      const delta = value - lastValue;\n      this.showDelta(params, delta);\n    }\n    if (lastValue) {\n      eValue.classList.add(\"ag-value-change-value-highlight\");\n    }\n    if (!isInitialRender) {\n      this.setTimerToRemoveDelta();\n    }\n    this.lastValue = value;\n    return true;\n  }\n};\n\n// packages/ag-grid-community/src/rendering/cellRenderers/animateSlideCellRenderer.css-GENERATED.ts\nvar animateSlideCellRendererCSS = (\n  /*css*/\n  `.ag-value-slide-out{opacity:1}:where(.ag-ltr) .ag-value-slide-out{margin-right:5px;transition:opacity 3s,margin-right 3s}:where(.ag-rtl) .ag-value-slide-out{margin-left:5px;transition:opacity 3s,margin-left 3s}:where(.ag-ltr,.ag-rtl) .ag-value-slide-out{transition-timing-function:linear}.ag-value-slide-out-end{opacity:0}:where(.ag-ltr) .ag-value-slide-out-end{margin-right:10px}:where(.ag-rtl) .ag-value-slide-out-end{margin-left:10px}`\n);\n\n// packages/ag-grid-community/src/rendering/cellRenderers/animateSlideCellRenderer.ts\nvar AnimateSlideCellRendererElement = {\n  tag: \"span\",\n  children: [{ tag: \"span\", ref: \"eCurrent\", cls: \"ag-value-slide-current\" }]\n};\nvar AnimateSlideCellRenderer = class extends Component {\n  constructor() {\n    super(AnimateSlideCellRendererElement);\n    this.eCurrent = RefPlaceholder;\n    this.refreshCount = 0;\n    this.registerCSS(animateSlideCellRendererCSS);\n  }\n  init(params) {\n    this.refresh(params, true);\n  }\n  addSlideAnimation() {\n    this.refreshCount++;\n    const refreshCountCopy = this.refreshCount;\n    if (this.ePrevious) {\n      this.getGui().removeChild(this.ePrevious);\n    }\n    const { beans, eCurrent } = this;\n    const prevElement = _createElement({ tag: \"span\", cls: \"ag-value-slide-previous ag-value-slide-out\" });\n    this.ePrevious = prevElement;\n    prevElement.textContent = eCurrent.textContent;\n    this.getGui().insertBefore(prevElement, eCurrent);\n    beans.frameworkOverrides.wrapIncoming(() => {\n      window.setTimeout(() => {\n        if (refreshCountCopy !== this.refreshCount) {\n          return;\n        }\n        this.ePrevious.classList.add(\"ag-value-slide-out-end\");\n      }, 50);\n      window.setTimeout(() => {\n        if (refreshCountCopy !== this.refreshCount) {\n          return;\n        }\n        this.getGui().removeChild(this.ePrevious);\n        this.ePrevious = null;\n      }, 3e3);\n    });\n  }\n  refresh(params, isInitialRender = false) {\n    let value = params.value;\n    if (_missing(value)) {\n      value = \"\";\n    }\n    if (value === this.lastValue) {\n      return false;\n    }\n    if (this.beans.filterManager?.isSuppressFlashingCellsBecauseFiltering()) {\n      return false;\n    }\n    if (!isInitialRender) {\n      this.addSlideAnimation();\n    }\n    this.lastValue = value;\n    const eCurrent = this.eCurrent;\n    if (_exists(params.valueFormatted)) {\n      eCurrent.textContent = params.valueFormatted;\n    } else if (_exists(params.value)) {\n      eCurrent.textContent = value;\n    } else {\n      _clearElement(eCurrent);\n    }\n    return true;\n  }\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellFlashService.ts\nvar CellFlashService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"cellFlashSvc\";\n    this.nextAnimationTime = null;\n    this.nextAnimationCycle = null;\n    this.animations = {\n      highlight: /* @__PURE__ */ new Map(),\n      \"data-changed\": /* @__PURE__ */ new Map()\n    };\n  }\n  animateCell(cellCtrl, cssName, flashDuration = this.beans.gos.get(\"cellFlashDuration\"), fadeDuration = this.beans.gos.get(\"cellFadeDuration\")) {\n    const animations = this.animations[cssName];\n    animations.delete(cellCtrl);\n    const time = Date.now();\n    const flashEndTime = time + flashDuration;\n    const fadeEndTime = time + flashDuration + fadeDuration;\n    const animState = {\n      phase: \"flash\",\n      flashEndTime,\n      fadeEndTime\n    };\n    animations.set(cellCtrl, animState);\n    const cssBase = `ag-cell-${cssName}`;\n    const cssAnimation = `${cssBase}-animation`;\n    const {\n      comp,\n      eGui: { style }\n    } = cellCtrl;\n    comp.toggleCss(cssBase, true);\n    comp.toggleCss(cssAnimation, false);\n    style.removeProperty(\"transition\");\n    style.removeProperty(\"transition-delay\");\n    if (this.nextAnimationTime && flashEndTime + 15 < this.nextAnimationTime) {\n      clearTimeout(this.nextAnimationCycle);\n      this.nextAnimationCycle = null;\n      this.nextAnimationTime = null;\n    }\n    if (!this.nextAnimationCycle) {\n      this.beans.frameworkOverrides.wrapIncoming(() => {\n        this.nextAnimationCycle = setTimeout(this.advanceAnimations.bind(this), flashDuration);\n      });\n      this.nextAnimationTime = flashEndTime;\n    }\n  }\n  advanceAnimations() {\n    const time = Date.now();\n    let nextAnimationTime = null;\n    for (const cssName of Object.keys(this.animations)) {\n      const animations = this.animations[cssName];\n      const cssBase = `ag-cell-${cssName}`;\n      const cssAnimation = `${cssBase}-animation`;\n      for (const [cell, animState] of animations) {\n        if (!cell.isAlive() || !cell.comp) {\n          animations.delete(cell);\n          continue;\n        }\n        const { phase, flashEndTime, fadeEndTime } = animState;\n        const nextActionableTime = phase === \"flash\" ? flashEndTime : fadeEndTime;\n        const requiresAction = time + 15 >= nextActionableTime;\n        if (!requiresAction) {\n          nextAnimationTime = Math.min(nextActionableTime, nextAnimationTime ?? Infinity);\n          continue;\n        }\n        const {\n          comp,\n          eGui: { style }\n        } = cell;\n        switch (phase) {\n          case \"flash\":\n            comp.toggleCss(cssBase, false);\n            comp.toggleCss(cssAnimation, true);\n            style.transition = `background-color ${fadeEndTime - flashEndTime}ms`;\n            style.transitionDelay = `${flashEndTime - time}ms`;\n            nextAnimationTime = Math.min(fadeEndTime, nextAnimationTime ?? Infinity);\n            animState.phase = \"fade\";\n            break;\n          case \"fade\":\n            comp.toggleCss(cssBase, false);\n            comp.toggleCss(cssAnimation, false);\n            style.removeProperty(\"transition\");\n            style.removeProperty(\"transition-delay\");\n            animations.delete(cell);\n            break;\n        }\n      }\n    }\n    if (nextAnimationTime == null) {\n      this.nextAnimationTime = null;\n      this.nextAnimationCycle = null;\n    } else if (nextAnimationTime) {\n      this.nextAnimationCycle = setTimeout(this.advanceAnimations.bind(this), nextAnimationTime - time);\n      this.nextAnimationTime = nextAnimationTime;\n    }\n  }\n  onFlashCells(cellCtrl, event) {\n    if (!cellCtrl.comp) {\n      return;\n    }\n    const cellId = _createCellId(cellCtrl.cellPosition);\n    const shouldFlash = event.cells[cellId];\n    if (shouldFlash) {\n      this.animateCell(cellCtrl, \"highlight\");\n    }\n  }\n  flashCell(cellCtrl, delays) {\n    this.animateCell(cellCtrl, \"data-changed\", delays?.flashDuration, delays?.fadeDuration);\n  }\n  destroy() {\n    for (const cssName of Object.keys(this.animations)) {\n      const animations = this.animations[cssName];\n      animations.clear();\n    }\n  }\n};\n\n// packages/ag-grid-community/src/rendering/cell/highlightChangesApi.ts\nfunction flashCells(beans, params = {}) {\n  const { cellFlashSvc } = beans;\n  if (!cellFlashSvc) {\n    return;\n  }\n  beans.frameworkOverrides.wrapIncoming(() => {\n    beans.rowRenderer.getCellCtrls(params.rowNodes, params.columns).forEach((cellCtrl) => cellFlashSvc.flashCell(cellCtrl, params));\n  });\n}\n\n// packages/ag-grid-community/src/rendering/cell/highlightChangesModule.ts\nvar HighlightChangesModule = {\n  moduleName: \"HighlightChanges\",\n  version: VERSION,\n  beans: [CellFlashService],\n  userComponents: {\n    agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n    agAnimateSlideCellRenderer: AnimateSlideCellRenderer\n  },\n  apiFunctions: {\n    flashCells\n  }\n};\n\n// packages/ag-grid-community/src/misc/state/stateApi.ts\nfunction getState(beans) {\n  return beans.stateSvc?.getState() ?? {};\n}\n\n// packages/ag-grid-community/src/misc/state/stateModelMigration.ts\nfunction migrateGridStateModel(state) {\n  state = { ...state };\n  if (!state.version) {\n    state.version = \"32.1.0\";\n  }\n  switch (state.version) {\n    case \"32.1.0\":\n      state = migrateV32_1(state);\n  }\n  return state;\n}\nfunction migrateV32_1(state) {\n  state.cellSelection = jsonGet(state, \"rangeSelection\");\n  return state;\n}\nfunction jsonGet(json, key) {\n  if (json && typeof json === \"object\") {\n    return json[key];\n  }\n}\n\n// packages/ag-grid-community/src/misc/state/stateService.ts\nvar StateService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"stateSvc\";\n    this.updateRowGroupExpansionStateTimer = 0;\n    this.suppressEvents = true;\n    this.queuedUpdateSources = /* @__PURE__ */ new Set();\n    this.dispatchStateUpdateEventDebounced = _debounce(this, () => this.dispatchQueuedStateUpdateEvents(), 0);\n    // If user is doing a manual expand all node by node, we don't want to process one at a time.\n    // EVENT_ROW_GROUP_OPENED is already async, so no impact of making the state async here.\n    this.onRowGroupOpenedDebounced = _debounce(\n      this,\n      () => {\n        this.updateCachedState(\"rowGroupExpansion\", this.getRowGroupExpansionState());\n      },\n      0\n    );\n    // similar to row expansion, want to debounce. However, selection is synchronous, so need to mark as stale in case `getState` is called.\n    this.onRowSelectedDebounced = _debounce(\n      this,\n      () => {\n        this.staleStateKeys.delete(\"rowSelection\");\n        this.updateCachedState(\"rowSelection\", this.getRowSelectionState());\n      },\n      0\n    );\n    this.staleStateKeys = /* @__PURE__ */ new Set();\n  }\n  postConstruct() {\n    this.isClientSideRowModel = _isClientSideRowModel(this.gos);\n    this.cachedState = this.getInitialState();\n    this.setCachedStateValue(\"version\", VERSION);\n    const suppressEventsAndDispatchInitEvent = this.suppressEventsAndDispatchInitEvent.bind(this);\n    this.beans.ctrlsSvc.whenReady(\n      this,\n      () => suppressEventsAndDispatchInitEvent(() => this.setupStateOnGridReady())\n    );\n    const [newColumnsLoadedDestroyFunc, rowCountReadyDestroyFunc, firstDataRenderedDestroyFunc] = this.addManagedEventListeners({\n      newColumnsLoaded: ({ source }) => {\n        if (source === \"gridInitializing\") {\n          newColumnsLoadedDestroyFunc();\n          suppressEventsAndDispatchInitEvent(() => this.setupStateOnColumnsInitialised());\n        }\n      },\n      rowCountReady: () => {\n        rowCountReadyDestroyFunc?.();\n        suppressEventsAndDispatchInitEvent(() => this.setupStateOnRowCountReady());\n      },\n      firstDataRendered: () => {\n        firstDataRenderedDestroyFunc?.();\n        suppressEventsAndDispatchInitEvent(() => this.setupStateOnFirstDataRendered());\n      }\n    });\n  }\n  destroy() {\n    super.destroy();\n    clearTimeout(this.updateRowGroupExpansionStateTimer);\n    this.queuedUpdateSources.clear();\n  }\n  getInitialState() {\n    return migrateGridStateModel(this.gos.get(\"initialState\") ?? {});\n  }\n  getState() {\n    if (this.staleStateKeys.size) {\n      this.refreshStaleState();\n    }\n    return this.cachedState;\n  }\n  setupStateOnGridReady() {\n    const stateUpdater = () => this.updateCachedState(\"sideBar\", this.getSideBarState());\n    stateUpdater();\n    this.addManagedEventListeners({\n      toolPanelVisibleChanged: stateUpdater,\n      sideBarUpdated: stateUpdater\n    });\n  }\n  setupStateOnColumnsInitialised() {\n    const initialState = this.getInitialState();\n    this.setColumnState(initialState);\n    this.setColumnGroupState(initialState);\n    this.updateColumnState([\n      \"aggregation\",\n      \"columnOrder\",\n      \"columnPinning\",\n      \"columnSizing\",\n      \"columnVisibility\",\n      \"pivot\",\n      \"pivot\",\n      \"rowGroup\",\n      \"sort\"\n    ]);\n    this.updateCachedState(\"columnGroup\", this.getColumnGroupState());\n    const onUpdate = (state) => () => this.updateColumnState([state]);\n    this.addManagedEventListeners({\n      columnValueChanged: onUpdate(\"aggregation\"),\n      columnMoved: onUpdate(\"columnOrder\"),\n      columnPinned: onUpdate(\"columnPinning\"),\n      columnResized: onUpdate(\"columnSizing\"),\n      columnVisible: onUpdate(\"columnVisibility\"),\n      columnPivotChanged: onUpdate(\"pivot\"),\n      columnPivotModeChanged: onUpdate(\"pivot\"),\n      columnRowGroupChanged: onUpdate(\"rowGroup\"),\n      sortChanged: onUpdate(\"sort\"),\n      newColumnsLoaded: () => this.updateColumnState([\n        \"aggregation\",\n        \"columnOrder\",\n        \"columnPinning\",\n        \"columnSizing\",\n        \"columnVisibility\",\n        \"pivot\",\n        \"rowGroup\",\n        \"sort\"\n      ]),\n      columnGroupOpened: () => this.updateCachedState(\"columnGroup\", this.getColumnGroupState())\n    });\n  }\n  setupStateOnRowCountReady() {\n    const {\n      filter: filterState,\n      rowGroupExpansion: rowGroupExpansionState,\n      rowSelection: rowSelectionState,\n      pagination: paginationState\n    } = this.getInitialState();\n    if (filterState) {\n      this.setFilterState(filterState);\n    }\n    if (rowGroupExpansionState) {\n      this.setRowGroupExpansionState(rowGroupExpansionState);\n    }\n    if (rowSelectionState) {\n      this.setRowSelectionState(rowSelectionState);\n    }\n    if (paginationState) {\n      this.setPaginationState(paginationState);\n    }\n    const updateCachedState = this.updateCachedState.bind(this);\n    updateCachedState(\"filter\", this.getFilterState());\n    updateCachedState(\"rowGroupExpansion\", this.getRowGroupExpansionState());\n    updateCachedState(\"rowSelection\", this.getRowSelectionState());\n    updateCachedState(\"pagination\", this.getPaginationState());\n    const updateRowGroupExpansionState = () => {\n      this.updateRowGroupExpansionStateTimer = 0;\n      updateCachedState(\"rowGroupExpansion\", this.getRowGroupExpansionState());\n    };\n    this.addManagedEventListeners({\n      filterChanged: () => updateCachedState(\"filter\", this.getFilterState()),\n      rowGroupOpened: () => this.onRowGroupOpenedDebounced(),\n      expandOrCollapseAll: updateRowGroupExpansionState,\n      // `groupDefaultExpanded` updates expansion state without an expansion event\n      columnRowGroupChanged: updateRowGroupExpansionState,\n      rowDataUpdated: () => {\n        if (this.gos.get(\"groupDefaultExpanded\") !== 0) {\n          this.updateRowGroupExpansionStateTimer || (this.updateRowGroupExpansionStateTimer = setTimeout(updateRowGroupExpansionState));\n        }\n      },\n      selectionChanged: () => {\n        this.staleStateKeys.add(\"rowSelection\");\n        this.onRowSelectedDebounced();\n      },\n      paginationChanged: (event) => {\n        if (event.newPage || event.newPageSize) {\n          updateCachedState(\"pagination\", this.getPaginationState());\n        }\n      }\n    });\n  }\n  setupStateOnFirstDataRendered() {\n    const {\n      scroll: scrollState,\n      cellSelection: cellSelectionState,\n      focusedCell: focusedCellState,\n      columnOrder: columnOrderState,\n      rowPinning\n    } = this.getInitialState();\n    if (focusedCellState) {\n      this.setFocusedCellState(focusedCellState);\n    }\n    if (cellSelectionState) {\n      this.setCellSelectionState(cellSelectionState);\n    }\n    if (scrollState) {\n      this.setScrollState(scrollState);\n    }\n    if (rowPinning) {\n      this.setRowPinningState(rowPinning);\n    }\n    this.setColumnPivotState(!!columnOrderState?.orderedColIds);\n    const updateCachedState = this.updateCachedState.bind(this);\n    updateCachedState(\"sideBar\", this.getSideBarState());\n    updateCachedState(\"focusedCell\", this.getFocusedCellState());\n    const cellSelection = this.getRangeSelectionState();\n    updateCachedState(\"rangeSelection\", cellSelection);\n    updateCachedState(\"cellSelection\", cellSelection);\n    updateCachedState(\"scroll\", this.getScrollState());\n    this.addManagedEventListeners({\n      cellFocused: () => updateCachedState(\"focusedCell\", this.getFocusedCellState()),\n      cellSelectionChanged: (event) => {\n        if (event.finished) {\n          const cellSelection2 = this.getRangeSelectionState();\n          updateCachedState(\"rangeSelection\", cellSelection2);\n          updateCachedState(\"cellSelection\", cellSelection2);\n        }\n      },\n      bodyScrollEnd: () => updateCachedState(\"scroll\", this.getScrollState()),\n      pinnedRowsChanged: () => updateCachedState(\"rowPinning\", this.getRowPinningState())\n    });\n  }\n  getColumnState() {\n    const beans = this.beans;\n    return convertColumnState(_getColumnState(beans), beans.colModel.isPivotMode());\n  }\n  setColumnState(initialState) {\n    const {\n      sort: sortState,\n      rowGroup: groupState,\n      aggregation: aggregationState,\n      pivot: pivotState,\n      columnPinning: columnPinningState,\n      columnVisibility: columnVisibilityState,\n      columnSizing: columnSizingState,\n      columnOrder: columnOrderState,\n      partialColumnState\n    } = initialState;\n    const columnStateMap = {};\n    const getColumnState2 = (colId) => {\n      let columnState = columnStateMap[colId];\n      if (columnState) {\n        return columnState;\n      }\n      columnState = { colId };\n      columnStateMap[colId] = columnState;\n      return columnState;\n    };\n    const defaultState = partialColumnState ? {} : {\n      sort: null,\n      sortIndex: null,\n      rowGroup: null,\n      rowGroupIndex: null,\n      aggFunc: null,\n      pivot: null,\n      pivotIndex: null,\n      pinned: null,\n      hide: null,\n      flex: null\n    };\n    if (sortState) {\n      sortState.sortModel.forEach(({ colId, sort }, sortIndex) => {\n        const columnState = getColumnState2(colId);\n        columnState.sort = sort;\n        columnState.sortIndex = sortIndex;\n      });\n      defaultState.sort = null;\n      defaultState.sortIndex = null;\n    }\n    if (groupState) {\n      groupState.groupColIds.forEach((colId, rowGroupIndex) => {\n        const columnState = getColumnState2(colId);\n        columnState.rowGroup = true;\n        columnState.rowGroupIndex = rowGroupIndex;\n      });\n      defaultState.rowGroup = null;\n      defaultState.rowGroupIndex = null;\n    }\n    if (aggregationState) {\n      aggregationState.aggregationModel.forEach(({ colId, aggFunc }) => {\n        getColumnState2(colId).aggFunc = aggFunc;\n      });\n      defaultState.aggFunc = null;\n    }\n    if (pivotState) {\n      pivotState.pivotColIds.forEach((colId, pivotIndex) => {\n        const columnState = getColumnState2(colId);\n        columnState.pivot = true;\n        columnState.pivotIndex = pivotIndex;\n      });\n      this.gos.updateGridOptions({\n        options: { pivotMode: pivotState.pivotMode },\n        source: \"gridInitializing\"\n      });\n      defaultState.pivot = null;\n      defaultState.pivotIndex = null;\n    }\n    if (columnPinningState) {\n      columnPinningState.leftColIds.forEach((colId) => {\n        getColumnState2(colId).pinned = \"left\";\n      });\n      columnPinningState.rightColIds.forEach((colId) => {\n        getColumnState2(colId).pinned = \"right\";\n      });\n      defaultState.pinned = null;\n    }\n    if (columnVisibilityState) {\n      columnVisibilityState.hiddenColIds.forEach((colId) => {\n        getColumnState2(colId).hide = true;\n      });\n      defaultState.hide = null;\n    }\n    if (columnSizingState) {\n      columnSizingState.columnSizingModel.forEach(({ colId, flex, width }) => {\n        const columnState = getColumnState2(colId);\n        columnState.flex = flex ?? null;\n        columnState.width = width;\n      });\n      defaultState.flex = null;\n    }\n    const columns = columnOrderState?.orderedColIds;\n    const applyOrder = !!columns?.length;\n    const columnStates = applyOrder ? columns.map((colId) => getColumnState2(colId)) : Object.values(columnStateMap);\n    if (columnStates.length) {\n      this.columnStates = columnStates;\n      _applyColumnState(\n        this.beans,\n        {\n          state: columnStates,\n          applyOrder,\n          defaultState\n        },\n        \"gridInitializing\"\n      );\n    }\n  }\n  setColumnPivotState(applyOrder) {\n    const columnStates = this.columnStates;\n    this.columnStates = void 0;\n    const columnGroupStates = this.columnGroupStates;\n    this.columnGroupStates = void 0;\n    const beans = this.beans;\n    const { pivotResultCols, colGroupSvc } = beans;\n    if (!pivotResultCols?.isPivotResultColsPresent()) {\n      return;\n    }\n    if (columnStates) {\n      const secondaryColumnStates = [];\n      for (const columnState of columnStates) {\n        if (pivotResultCols.getPivotResultCol(columnState.colId)) {\n          secondaryColumnStates.push(columnState);\n        }\n      }\n      _applyColumnState(\n        beans,\n        {\n          state: secondaryColumnStates,\n          applyOrder\n        },\n        \"gridInitializing\"\n      );\n    }\n    if (columnGroupStates) {\n      colGroupSvc?.setColumnGroupState(columnGroupStates, \"gridInitializing\");\n    }\n  }\n  getColumnGroupState() {\n    const colGroupSvc = this.beans.colGroupSvc;\n    if (!colGroupSvc) {\n      return void 0;\n    }\n    const columnGroupState = colGroupSvc.getColumnGroupState();\n    return _convertColumnGroupState(columnGroupState);\n  }\n  setColumnGroupState(initialState) {\n    const colGroupSvc = this.beans.colGroupSvc;\n    if (!Object.prototype.hasOwnProperty.call(initialState, \"columnGroup\") || !colGroupSvc) {\n      return;\n    }\n    const openColumnGroups = new Set(initialState.columnGroup?.openColumnGroupIds);\n    const existingColumnGroupState = colGroupSvc.getColumnGroupState();\n    const stateItems = existingColumnGroupState.map(({ groupId }) => {\n      const open = openColumnGroups.has(groupId);\n      if (open) {\n        openColumnGroups.delete(groupId);\n      }\n      return {\n        groupId,\n        open\n      };\n    });\n    openColumnGroups.forEach((groupId) => {\n      stateItems.push({\n        groupId,\n        open: true\n      });\n    });\n    if (stateItems.length) {\n      this.columnGroupStates = stateItems;\n    }\n    colGroupSvc.setColumnGroupState(stateItems, \"gridInitializing\");\n  }\n  getFilterState() {\n    const filterManager = this.beans.filterManager;\n    let filterModel = filterManager?.getFilterModel();\n    if (filterModel && Object.keys(filterModel).length === 0) {\n      filterModel = void 0;\n    }\n    const advancedFilterModel = filterManager?.getAdvFilterModel() ?? void 0;\n    return filterModel || advancedFilterModel ? { filterModel, advancedFilterModel } : void 0;\n  }\n  setFilterState(filterState) {\n    const filterManager = this.beans.filterManager;\n    const { filterModel, advancedFilterModel } = filterState ?? {};\n    if (filterModel) {\n      filterManager?.setFilterModel(filterModel, \"columnFilter\");\n    }\n    if (advancedFilterModel) {\n      filterManager?.setAdvFilterModel(advancedFilterModel, \"advancedFilter\");\n    }\n  }\n  getRangeSelectionState() {\n    const cellRanges = this.beans.rangeSvc?.getCellRanges().map((cellRange) => {\n      const { id, type, startRow, endRow, columns, startColumn } = cellRange;\n      return {\n        id,\n        type,\n        startRow,\n        endRow,\n        colIds: columns.map((column) => column.getColId()),\n        startColId: startColumn.getColId()\n      };\n    });\n    return cellRanges?.length ? { cellRanges } : void 0;\n  }\n  setCellSelectionState(cellSelectionState) {\n    const { gos, rangeSvc, colModel, visibleCols } = this.beans;\n    if (!_isCellSelectionEnabled(gos) || !rangeSvc) {\n      return;\n    }\n    const cellRanges = [];\n    cellSelectionState.cellRanges.forEach((cellRange) => {\n      const columns = [];\n      cellRange.colIds.forEach((colId) => {\n        const column = colModel.getCol(colId);\n        if (column) {\n          columns.push(column);\n        }\n      });\n      if (!columns.length) {\n        return;\n      }\n      let startColumn = colModel.getCol(cellRange.startColId);\n      if (!startColumn) {\n        const allColumns = visibleCols.allCols;\n        const columnSet = new Set(columns);\n        startColumn = allColumns.find((column) => columnSet.has(column));\n      }\n      cellRanges.push({\n        ...cellRange,\n        columns,\n        startColumn\n      });\n    });\n    rangeSvc.setCellRanges(cellRanges);\n  }\n  getScrollState() {\n    if (!this.isClientSideRowModel) {\n      return void 0;\n    }\n    const scrollFeature = this.beans.ctrlsSvc.getScrollFeature();\n    const { left } = scrollFeature?.getHScrollPosition() ?? { left: 0 };\n    const { top } = scrollFeature?.getVScrollPosition() ?? { top: 0 };\n    return top || left ? {\n      top,\n      left\n    } : void 0;\n  }\n  setScrollState(scrollState) {\n    if (!this.isClientSideRowModel) {\n      return;\n    }\n    const { top, left } = scrollState;\n    const { frameworkOverrides, rowRenderer, animationFrameSvc, ctrlsSvc } = this.beans;\n    frameworkOverrides.wrapIncoming(() => {\n      ctrlsSvc.get(\"center\").setCenterViewportScrollLeft(left);\n      ctrlsSvc.getScrollFeature()?.setVerticalScrollPosition(top);\n      rowRenderer.redraw({ afterScroll: true });\n      animationFrameSvc?.flushAllFrames();\n    });\n  }\n  getSideBarState() {\n    return this.beans.sideBar?.comp?.getState();\n  }\n  getFocusedCellState() {\n    if (!this.isClientSideRowModel) {\n      return void 0;\n    }\n    const focusedCell = this.beans.focusSvc.getFocusedCell();\n    if (focusedCell) {\n      const { column, rowIndex, rowPinned } = focusedCell;\n      return {\n        colId: column.getColId(),\n        rowIndex,\n        rowPinned\n      };\n    }\n    return void 0;\n  }\n  setFocusedCellState(focusedCellState) {\n    if (!this.isClientSideRowModel) {\n      return;\n    }\n    const { colId, rowIndex, rowPinned } = focusedCellState;\n    const { focusSvc, colModel } = this.beans;\n    focusSvc.setFocusedCell({\n      column: colModel.getCol(colId),\n      rowIndex,\n      rowPinned,\n      forceBrowserFocus: true,\n      preventScrollOnBrowserFocus: true\n    });\n  }\n  getPaginationState() {\n    const { pagination, gos } = this.beans;\n    if (!pagination) {\n      return void 0;\n    }\n    const page = pagination.getCurrentPage();\n    const pageSize = !gos.get(\"paginationAutoPageSize\") ? pagination.getPageSize() : void 0;\n    if (!page && !pageSize) {\n      return;\n    }\n    return { page, pageSize };\n  }\n  setPaginationState(paginationState) {\n    const { pagination, gos } = this.beans;\n    if (!pagination) {\n      return;\n    }\n    if (paginationState.pageSize && !gos.get(\"paginationAutoPageSize\")) {\n      pagination.setPageSize(paginationState.pageSize, \"initialState\");\n    }\n    if (typeof paginationState.page === \"number\") {\n      pagination.setPage(paginationState.page);\n    }\n  }\n  getRowSelectionState() {\n    const selectionSvc = this.beans.selectionSvc;\n    if (!selectionSvc) {\n      return void 0;\n    }\n    const selectionState = selectionSvc.getSelectionState();\n    const noSelections = !selectionState || !Array.isArray(selectionState) && (selectionState.selectAll === false || selectionState.selectAllChildren === false) && !selectionState?.toggledNodes?.length;\n    return noSelections ? void 0 : selectionState;\n  }\n  setRowSelectionState(rowSelectionState) {\n    this.beans.selectionSvc?.setSelectionState(rowSelectionState, \"gridInitializing\");\n  }\n  getRowGroupExpansionState() {\n    const { expansionSvc, rowModel } = this.beans;\n    if (!expansionSvc) {\n      return void 0;\n    }\n    const expandedRowGroups = [];\n    rowModel.forEachNode(({ expanded, id }) => {\n      if (expanded && id) {\n        expandedRowGroups.push(id);\n      }\n    });\n    return expandedRowGroups.length ? {\n      expandedRowGroupIds: expandedRowGroups\n    } : void 0;\n  }\n  getRowPinningState() {\n    return this.beans.pinnedRowModel?.getPinnedState();\n  }\n  setRowPinningState(state) {\n    this.beans.pinnedRowModel?.setPinnedState(state);\n  }\n  setRowGroupExpansionState(rowGroupExpansionState) {\n    this.beans.expansionSvc?.expandRows(rowGroupExpansionState.expandedRowGroupIds);\n  }\n  updateColumnState(features) {\n    const newColumnState = this.getColumnState();\n    let hasChanged = false;\n    const cachedState = this.cachedState;\n    for (const key of Object.keys(newColumnState)) {\n      const value = newColumnState[key];\n      if (!_jsonEquals(value, cachedState[key])) {\n        hasChanged = true;\n      }\n    }\n    this.cachedState = {\n      ...cachedState,\n      ...newColumnState\n    };\n    if (hasChanged) {\n      this.dispatchStateUpdateEvent(features);\n    }\n  }\n  updateCachedState(key, value) {\n    const existingValue = this.cachedState[key];\n    this.setCachedStateValue(key, value);\n    if (!_jsonEquals(value, existingValue)) {\n      this.dispatchStateUpdateEvent([key]);\n    }\n  }\n  setCachedStateValue(key, value) {\n    this.cachedState = {\n      ...this.cachedState,\n      [key]: value\n    };\n  }\n  refreshStaleState() {\n    const staleStateKeys = this.staleStateKeys;\n    staleStateKeys.forEach((key) => {\n      switch (key) {\n        case \"rowSelection\":\n          this.setCachedStateValue(key, this.getRowSelectionState());\n          break;\n      }\n    });\n    staleStateKeys.clear();\n  }\n  dispatchStateUpdateEvent(sources) {\n    if (this.suppressEvents) {\n      return;\n    }\n    sources.forEach((source) => this.queuedUpdateSources.add(source));\n    this.dispatchStateUpdateEventDebounced();\n  }\n  dispatchQueuedStateUpdateEvents() {\n    const queuedUpdateSources = this.queuedUpdateSources;\n    const sources = Array.from(queuedUpdateSources);\n    queuedUpdateSources.clear();\n    this.eventSvc.dispatchEvent({\n      type: \"stateUpdated\",\n      sources,\n      state: this.cachedState\n    });\n  }\n  suppressEventsAndDispatchInitEvent(updateFunc) {\n    this.suppressEvents = true;\n    const colAnimation = this.beans.colAnimation;\n    colAnimation?.setSuppressAnimation(true);\n    updateFunc();\n    setTimeout(() => {\n      this.suppressEvents = false;\n      this.queuedUpdateSources.clear();\n      if (!this.isAlive()) {\n        return;\n      }\n      colAnimation?.setSuppressAnimation(false);\n      this.dispatchStateUpdateEvent([\"gridInitializing\"]);\n    });\n  }\n};\n\n// packages/ag-grid-community/src/misc/state/stateModule.ts\nvar GridStateModule = {\n  moduleName: \"GridState\",\n  version: VERSION,\n  beans: [StateService],\n  apiFunctions: {\n    getState\n  }\n};\n\n// packages/ag-grid-community/src/pagination/paginationApi.ts\nfunction paginationIsLastPageFound(beans) {\n  return beans.rowModel.isLastRowIndexKnown();\n}\nfunction paginationGetPageSize(beans) {\n  return beans.pagination?.getPageSize() ?? 100;\n}\nfunction paginationGetCurrentPage(beans) {\n  return beans.pagination?.getCurrentPage() ?? 0;\n}\nfunction paginationGetTotalPages(beans) {\n  return beans.pagination?.getTotalPages() ?? 1;\n}\nfunction paginationGetRowCount(beans) {\n  return beans.pagination ? beans.pagination.getMasterRowCount() : beans.rowModel.getRowCount();\n}\nfunction paginationGoToNextPage(beans) {\n  beans.pagination?.goToNextPage();\n}\nfunction paginationGoToPreviousPage(beans) {\n  beans.pagination?.goToPreviousPage();\n}\nfunction paginationGoToFirstPage(beans) {\n  beans.pagination?.goToFirstPage();\n}\nfunction paginationGoToLastPage(beans) {\n  beans.pagination?.goToLastPage();\n}\nfunction paginationGoToPage(beans, page) {\n  beans.pagination?.goToPage(page);\n}\n\n// packages/ag-grid-community/src/pagination/paginationAutoPageSizeService.ts\nvar PaginationAutoPageSizeService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"paginationAutoPageSizeSvc\";\n  }\n  postConstruct() {\n    this.beans.ctrlsSvc.whenReady(this, (p) => {\n      this.centerRowsCtrl = p.center;\n      const listener = this.checkPageSize.bind(this);\n      this.addManagedEventListeners({\n        bodyHeightChanged: listener,\n        scrollVisibilityChanged: listener\n      });\n      this.addManagedPropertyListener(\"paginationAutoPageSize\", this.onPaginationAutoSizeChanged.bind(this));\n      this.checkPageSize();\n    });\n  }\n  notActive() {\n    return !this.gos.get(\"paginationAutoPageSize\") || this.centerRowsCtrl == null;\n  }\n  onPaginationAutoSizeChanged() {\n    if (this.notActive()) {\n      this.beans.pagination.unsetAutoCalculatedPageSize();\n    } else {\n      this.checkPageSize();\n    }\n  }\n  checkPageSize() {\n    if (this.notActive()) {\n      return;\n    }\n    const bodyHeight = this.centerRowsCtrl.viewportSizeFeature.getBodyHeight();\n    if (bodyHeight > 0) {\n      const beans = this.beans;\n      const update = () => {\n        const rowHeight = Math.max(_getRowHeightAsNumber(beans), 1);\n        const newPageSize = Math.floor(bodyHeight / rowHeight);\n        beans.pagination.setPageSize(newPageSize, \"autoCalculated\");\n      };\n      if (!this.isBodyRendered) {\n        update();\n        this.isBodyRendered = true;\n      } else {\n        _debounce(this, update, 50)();\n      }\n    } else {\n      this.isBodyRendered = false;\n    }\n  }\n};\n\n// packages/ag-grid-community/src/pagination/pageSizeSelector/pageSizeSelectorComp.ts\nvar paginationPageSizeSelector = \"paginationPageSizeSelector\";\nvar PageSizeSelectorCompElement = { tag: \"span\", cls: \"ag-paging-page-size\" };\nvar PageSizeSelectorComp = class extends Component {\n  constructor() {\n    super(PageSizeSelectorCompElement);\n    this.hasEmptyOption = false;\n    this.handlePageSizeItemSelected = () => {\n      if (!this.selectPageSizeComp) {\n        return;\n      }\n      const newValue = this.selectPageSizeComp.getValue();\n      if (!newValue) {\n        return;\n      }\n      const paginationPageSize = Number(newValue);\n      if (isNaN(paginationPageSize) || paginationPageSize < 1 || paginationPageSize === this.pagination.getPageSize()) {\n        return;\n      }\n      this.pagination.setPageSize(paginationPageSize, \"pageSizeSelector\");\n      if (this.hasEmptyOption) {\n        this.toggleSelectDisplay(true);\n      }\n      this.selectPageSizeComp.getFocusableElement().focus();\n    };\n  }\n  wireBeans(beans) {\n    this.pagination = beans.pagination;\n  }\n  postConstruct() {\n    this.addManagedPropertyListener(paginationPageSizeSelector, () => {\n      this.onPageSizeSelectorValuesChange();\n    });\n    this.addManagedEventListeners({ paginationChanged: (event) => this.handlePaginationChanged(event) });\n  }\n  handlePaginationChanged(paginationChangedEvent) {\n    if (!this.selectPageSizeComp || !paginationChangedEvent?.newPageSize) {\n      return;\n    }\n    const paginationPageSize = this.pagination.getPageSize();\n    if (this.getPageSizeSelectorValues().includes(paginationPageSize)) {\n      this.selectPageSizeComp.setValue(paginationPageSize.toString());\n    } else {\n      if (this.hasEmptyOption) {\n        this.selectPageSizeComp.setValue(\"\");\n      } else {\n        this.toggleSelectDisplay(true);\n      }\n    }\n  }\n  toggleSelectDisplay(show) {\n    if (this.selectPageSizeComp && !show) {\n      this.reset();\n    }\n    if (!show) {\n      return;\n    }\n    this.reloadPageSizesSelector();\n    if (!this.selectPageSizeComp) {\n      return;\n    }\n  }\n  reset() {\n    _clearElement(this.getGui());\n    if (!this.selectPageSizeComp) {\n      return;\n    }\n    this.selectPageSizeComp = this.destroyBean(this.selectPageSizeComp);\n  }\n  onPageSizeSelectorValuesChange() {\n    if (!this.selectPageSizeComp) {\n      return;\n    }\n    if (this.shouldShowPageSizeSelector()) {\n      this.reloadPageSizesSelector();\n    }\n  }\n  shouldShowPageSizeSelector() {\n    return this.gos.get(\"pagination\") && !this.gos.get(\"suppressPaginationPanel\") && !this.gos.get(\"paginationAutoPageSize\") && this.gos.get(paginationPageSizeSelector) !== false;\n  }\n  reloadPageSizesSelector() {\n    const pageSizeOptions = this.getPageSizeSelectorValues();\n    const paginationPageSizeOption = this.pagination.getPageSize();\n    const shouldAddAndSelectEmptyOption = !paginationPageSizeOption || !pageSizeOptions.includes(paginationPageSizeOption);\n    if (shouldAddAndSelectEmptyOption) {\n      const pageSizeSet = this.gos.exists(\"paginationPageSize\");\n      const pageSizesSet = this.gos.get(paginationPageSizeSelector) !== true;\n      _warn(94, { pageSizeSet, pageSizesSet, pageSizeOptions, paginationPageSizeOption });\n      if (!pageSizesSet) {\n        _warn(95, { paginationPageSizeOption, paginationPageSizeSelector });\n      }\n      pageSizeOptions.unshift(\"\");\n    }\n    const value = String(shouldAddAndSelectEmptyOption ? \"\" : paginationPageSizeOption);\n    if (this.selectPageSizeComp) {\n      if (!_areEqual(this.pageSizeOptions, pageSizeOptions)) {\n        this.selectPageSizeComp.clearOptions().addOptions(this.createPageSizeSelectOptions(pageSizeOptions));\n        this.pageSizeOptions = pageSizeOptions;\n      }\n      this.selectPageSizeComp.setValue(value, true);\n    } else {\n      this.createPageSizeSelectorComp(pageSizeOptions, value);\n    }\n    this.hasEmptyOption = shouldAddAndSelectEmptyOption;\n  }\n  createPageSizeSelectOptions(pageSizeOptions) {\n    return pageSizeOptions.map((value) => ({\n      value: String(value)\n    }));\n  }\n  createPageSizeSelectorComp(pageSizeOptions, value) {\n    const localeTextFunc = this.getLocaleTextFunc();\n    const localisedLabel = localeTextFunc(\"pageSizeSelectorLabel\", \"Page Size:\");\n    const localisedAriaLabel = localeTextFunc(\"ariaPageSizeSelectorLabel\", \"Page Size\");\n    this.selectPageSizeComp = this.createManagedBean(new AgSelect()).addOptions(this.createPageSizeSelectOptions(pageSizeOptions)).setValue(value).setAriaLabel(localisedAriaLabel).setLabel(localisedLabel).onValueChange(() => this.handlePageSizeItemSelected());\n    this.appendChild(this.selectPageSizeComp);\n  }\n  getPageSizeSelectorValues() {\n    const defaultValues = [20, 50, 100];\n    const paginationPageSizeSelectorValues = this.gos.get(paginationPageSizeSelector);\n    if (!Array.isArray(paginationPageSizeSelectorValues) || !paginationPageSizeSelectorValues?.length) {\n      return defaultValues;\n    }\n    return [...paginationPageSizeSelectorValues].sort((a, b) => a - b);\n  }\n  destroy() {\n    this.toggleSelectDisplay(false);\n    super.destroy();\n  }\n};\nvar PageSizeSelectorSelector = {\n  selector: \"AG-PAGE-SIZE-SELECTOR\",\n  component: PageSizeSelectorComp\n};\n\n// packages/ag-grid-community/src/pagination/paginationComp.css-GENERATED.ts\nvar paginationCompCSS = (\n  /*css*/\n  `.ag-paging-panel{align-items:center;border-top:var(--ag-footer-row-border);display:flex;gap:calc(var(--ag-spacing)*4);height:max(var(--ag-row-height),22px);justify-content:flex-end;padding:0 var(--ag-cell-horizontal-padding)}:where(.ag-paging-page-size) .ag-wrapper{min-width:50px}.ag-paging-page-summary-panel{align-items:center;display:flex;gap:var(--ag-cell-widget-spacing);.ag-disabled &{pointer-events:none}}.ag-paging-button{cursor:pointer;position:relative;&.ag-disabled{cursor:default;opacity:.5}}.ag-paging-number,.ag-paging-row-summary-panel-number{font-weight:500}`\n);\n\n// packages/ag-grid-community/src/pagination/paginationComp.ts\nvar PaginationComp = class extends TabGuardComp {\n  constructor() {\n    super();\n    this.btFirst = RefPlaceholder;\n    this.btPrevious = RefPlaceholder;\n    this.btNext = RefPlaceholder;\n    this.btLast = RefPlaceholder;\n    this.lbRecordCount = RefPlaceholder;\n    this.lbFirstRowOnPage = RefPlaceholder;\n    this.lbLastRowOnPage = RefPlaceholder;\n    this.lbCurrent = RefPlaceholder;\n    this.lbTotal = RefPlaceholder;\n    this.pageSizeComp = RefPlaceholder;\n    this.previousAndFirstButtonsDisabled = false;\n    this.nextButtonDisabled = false;\n    this.lastButtonDisabled = false;\n    this.areListenersSetup = false;\n    this.allowFocusInnerElement = false;\n    this.registerCSS(paginationCompCSS);\n  }\n  wireBeans(beans) {\n    this.rowModel = beans.rowModel;\n    this.pagination = beans.pagination;\n    this.ariaAnnounce = beans.ariaAnnounce;\n  }\n  postConstruct() {\n    const isRtl = this.gos.get(\"enableRtl\");\n    this.setTemplate(this.getTemplate(), [PageSizeSelectorSelector]);\n    const { btFirst, btPrevious, btNext, btLast } = this;\n    this.activateTabIndex([btFirst, btPrevious, btNext, btLast]);\n    btFirst.insertAdjacentElement(\"afterbegin\", _createIconNoSpan(isRtl ? \"last\" : \"first\", this.beans));\n    btPrevious.insertAdjacentElement(\"afterbegin\", _createIconNoSpan(isRtl ? \"next\" : \"previous\", this.beans));\n    btNext.insertAdjacentElement(\"afterbegin\", _createIconNoSpan(isRtl ? \"previous\" : \"next\", this.beans));\n    btLast.insertAdjacentElement(\"afterbegin\", _createIconNoSpan(isRtl ? \"first\" : \"last\", this.beans));\n    this.addManagedPropertyListener(\"pagination\", this.onPaginationChanged.bind(this));\n    this.addManagedPropertyListener(\"suppressPaginationPanel\", this.onPaginationChanged.bind(this));\n    this.addManagedPropertyListeners(\n      [\"paginationPageSizeSelector\", \"paginationAutoPageSize\", \"suppressPaginationPanel\"],\n      () => this.onPageSizeRelatedOptionsChange()\n    );\n    this.pageSizeComp.toggleSelectDisplay(this.pageSizeComp.shouldShowPageSizeSelector());\n    this.initialiseTabGuard({\n      // prevent tab guard default logic\n      onTabKeyDown: () => {\n      },\n      focusInnerElement: (fromBottom) => {\n        if (this.allowFocusInnerElement) {\n          return this.tabGuardFeature.getTabGuardCtrl().focusInnerElement(fromBottom);\n        } else {\n          return _focusGridInnerElement(this.beans, fromBottom);\n        }\n      },\n      forceFocusOutWhenTabGuardsAreEmpty: true\n    });\n    this.onPaginationChanged();\n  }\n  setAllowFocus(allowFocus) {\n    this.allowFocusInnerElement = allowFocus;\n  }\n  onPaginationChanged() {\n    const isPaging = this.gos.get(\"pagination\");\n    const paginationPanelEnabled = isPaging && !this.gos.get(\"suppressPaginationPanel\");\n    this.setDisplayed(paginationPanelEnabled);\n    if (!paginationPanelEnabled) {\n      return;\n    }\n    this.setupListeners();\n    this.enableOrDisableButtons();\n    this.updateLabels();\n    this.onPageSizeRelatedOptionsChange();\n  }\n  onPageSizeRelatedOptionsChange() {\n    this.pageSizeComp.toggleSelectDisplay(this.pageSizeComp.shouldShowPageSizeSelector());\n  }\n  setupListeners() {\n    if (!this.areListenersSetup) {\n      this.addManagedEventListeners({ paginationChanged: this.onPaginationChanged.bind(this) });\n      [\n        { el: this.btFirst, fn: this.onBtFirst.bind(this) },\n        { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },\n        { el: this.btNext, fn: this.onBtNext.bind(this) },\n        { el: this.btLast, fn: this.onBtLast.bind(this) }\n      ].forEach((item) => {\n        const { el, fn } = item;\n        this.addManagedListeners(el, {\n          click: fn,\n          keydown: (e) => {\n            if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n              e.preventDefault();\n              fn();\n            }\n          }\n        });\n      });\n      _addFocusableContainerListener(this.beans, this, this.getGui());\n      this.areListenersSetup = true;\n    }\n  }\n  onBtFirst() {\n    if (!this.previousAndFirstButtonsDisabled) {\n      this.pagination.goToFirstPage();\n    }\n  }\n  formatNumber(value) {\n    const userFunc = this.gos.getCallback(\"paginationNumberFormatter\");\n    if (userFunc) {\n      const params = { value };\n      return userFunc(params);\n    }\n    return _formatNumberCommas(value, this.getLocaleTextFunc.bind(this));\n  }\n  getTemplate() {\n    const localeTextFunc = this.getLocaleTextFunc();\n    const idPrefix = `ag-${this.getCompId()}`;\n    return {\n      tag: \"div\",\n      cls: \"ag-paging-panel ag-unselectable\",\n      attrs: { id: `${idPrefix}` },\n      children: [\n        {\n          tag: \"ag-page-size-selector\",\n          ref: \"pageSizeComp\"\n        },\n        {\n          tag: \"span\",\n          cls: \"ag-paging-row-summary-panel\",\n          children: [\n            {\n              tag: \"span\",\n              ref: \"lbFirstRowOnPage\",\n              cls: \"ag-paging-row-summary-panel-number\",\n              attrs: { id: `${idPrefix}-first-row` }\n            },\n            { tag: \"span\", attrs: { id: `${idPrefix}-to` }, children: localeTextFunc(\"to\", \"to\") },\n            {\n              tag: \"span\",\n              ref: \"lbLastRowOnPage\",\n              cls: \"ag-paging-row-summary-panel-number\",\n              attrs: { id: `${idPrefix}-last-row` }\n            },\n            { tag: \"span\", attrs: { id: `${idPrefix}-of` }, children: localeTextFunc(\"of\", \"of\") },\n            {\n              tag: \"span\",\n              ref: \"lbRecordCount\",\n              cls: \"ag-paging-row-summary-panel-number\",\n              attrs: { id: `${idPrefix}-row-count` }\n            }\n          ]\n        },\n        {\n          tag: \"span\",\n          cls: \"ag-paging-page-summary-panel\",\n          role: \"presentation\",\n          children: [\n            {\n              tag: \"div\",\n              ref: \"btFirst\",\n              cls: \"ag-button ag-paging-button\",\n              role: \"button\",\n              attrs: { \"aria-label\": localeTextFunc(\"firstPage\", \"First Page\") }\n            },\n            {\n              tag: \"div\",\n              ref: \"btPrevious\",\n              cls: \"ag-button ag-paging-button\",\n              role: \"button\",\n              attrs: { \"aria-label\": localeTextFunc(\"previousPage\", \"Previous Page\") }\n            },\n            {\n              tag: \"span\",\n              cls: \"ag-paging-description\",\n              children: [\n                {\n                  tag: \"span\",\n                  attrs: {\n                    id: `${idPrefix}-start-page`\n                  },\n                  children: localeTextFunc(\"page\", \"Page\")\n                },\n                {\n                  tag: \"span\",\n                  ref: \"lbCurrent\",\n                  cls: \"ag-paging-number\",\n                  attrs: { id: `${idPrefix}-start-page-number` }\n                },\n                {\n                  tag: \"span\",\n                  attrs: {\n                    id: `${idPrefix}-of-page`\n                  },\n                  children: localeTextFunc(\"of\", \"of\")\n                },\n                {\n                  tag: \"span\",\n                  ref: \"lbTotal\",\n                  cls: \"ag-paging-number\",\n                  attrs: { id: `${idPrefix}-of-page-number` }\n                }\n              ]\n            },\n            {\n              tag: \"div\",\n              ref: \"btNext\",\n              cls: \"ag-button ag-paging-button\",\n              role: \"button\",\n              attrs: { \"aria-label\": localeTextFunc(\"nextPage\", \"Next Page\") }\n            },\n            {\n              tag: \"div\",\n              ref: \"btLast\",\n              cls: \"ag-button ag-paging-button\",\n              role: \"button\",\n              attrs: { \"aria-label\": localeTextFunc(\"lastPage\", \"Last Page\") }\n            }\n          ]\n        }\n      ]\n    };\n  }\n  onBtNext() {\n    if (!this.nextButtonDisabled) {\n      this.pagination.goToNextPage();\n    }\n  }\n  onBtPrevious() {\n    if (!this.previousAndFirstButtonsDisabled) {\n      this.pagination.goToPreviousPage();\n    }\n  }\n  onBtLast() {\n    if (!this.lastButtonDisabled) {\n      this.pagination.goToLastPage();\n    }\n  }\n  enableOrDisableButtons() {\n    const currentPage = this.pagination.getCurrentPage();\n    const maxRowFound = this.rowModel.isLastRowIndexKnown();\n    const totalPages = this.pagination.getTotalPages();\n    this.previousAndFirstButtonsDisabled = currentPage === 0;\n    this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);\n    this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);\n    const zeroPagesToDisplay = this.isZeroPagesToDisplay();\n    const onLastPage = currentPage === totalPages - 1;\n    this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n    this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === totalPages - 1;\n    this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);\n    this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);\n  }\n  toggleButtonDisabled(button, disabled) {\n    _setAriaDisabled(button, disabled);\n    button.classList.toggle(\"ag-disabled\", disabled);\n  }\n  isZeroPagesToDisplay() {\n    const maxRowFound = this.rowModel.isLastRowIndexKnown();\n    const totalPages = this.pagination.getTotalPages();\n    return maxRowFound && totalPages === 0;\n  }\n  updateLabels() {\n    const lastPageFound = this.rowModel.isLastRowIndexKnown();\n    const totalPages = this.pagination.getTotalPages();\n    const masterRowCount = this.pagination.getMasterRowCount();\n    const rowCount = lastPageFound ? masterRowCount : null;\n    const currentPage = this.pagination.getCurrentPage();\n    const pageSize = this.pagination.getPageSize();\n    let startRow;\n    let endRow;\n    if (this.isZeroPagesToDisplay()) {\n      startRow = endRow = 0;\n    } else {\n      startRow = pageSize * currentPage + 1;\n      endRow = startRow + pageSize - 1;\n      if (lastPageFound && endRow > rowCount) {\n        endRow = rowCount;\n      }\n    }\n    const theoreticalEndRow = startRow + pageSize - 1;\n    const isLoadingPageSize = !lastPageFound && masterRowCount < theoreticalEndRow;\n    const lbFirstRowOnPage = this.formatNumber(startRow);\n    this.lbFirstRowOnPage.textContent = lbFirstRowOnPage;\n    let lbLastRowOnPage;\n    const localeTextFunc = this.getLocaleTextFunc();\n    if (isLoadingPageSize) {\n      lbLastRowOnPage = localeTextFunc(\"pageLastRowUnknown\", \"?\");\n    } else {\n      lbLastRowOnPage = this.formatNumber(endRow);\n    }\n    this.lbLastRowOnPage.textContent = lbLastRowOnPage;\n    const pagesExist = totalPages > 0;\n    const toDisplay = pagesExist ? currentPage + 1 : 0;\n    const lbCurrent = this.formatNumber(toDisplay);\n    this.lbCurrent.textContent = lbCurrent;\n    let lbTotal;\n    let lbRecordCount;\n    if (lastPageFound) {\n      lbTotal = this.formatNumber(totalPages);\n      lbRecordCount = this.formatNumber(rowCount);\n    } else {\n      const moreText = localeTextFunc(\"more\", \"more\");\n      lbTotal = moreText;\n      lbRecordCount = moreText;\n    }\n    this.lbTotal.textContent = lbTotal;\n    this.lbRecordCount.textContent = lbRecordCount;\n    this.announceAriaStatus(lbFirstRowOnPage, lbLastRowOnPage, lbRecordCount, lbCurrent, lbTotal);\n  }\n  announceAriaStatus(lbFirstRowOnPage, lbLastRowOnPage, lbRecordCount, lbCurrent, lbTotal) {\n    const localeTextFunc = this.getLocaleTextFunc();\n    const strPage = localeTextFunc(\"page\", \"Page\");\n    const strTo = localeTextFunc(\"to\", \"to\");\n    const strOf = localeTextFunc(\"of\", \"of\");\n    const ariaRowStatus = `${lbFirstRowOnPage} ${strTo} ${lbLastRowOnPage} ${strOf} ${lbRecordCount}`;\n    const ariaPageStatus = `${strPage} ${lbCurrent} ${strOf} ${lbTotal}`;\n    if (ariaRowStatus !== this.ariaRowStatus) {\n      this.ariaRowStatus = ariaRowStatus;\n      this.ariaAnnounce?.announceValue(ariaRowStatus, \"paginationRow\");\n    }\n    if (ariaPageStatus !== this.ariaPageStatus) {\n      this.ariaPageStatus = ariaPageStatus;\n      this.ariaAnnounce?.announceValue(ariaPageStatus, \"paginationPage\");\n    }\n  }\n  setTotalLabelsToZero() {\n    const strZero = this.formatNumber(0);\n    this.lbFirstRowOnPage.textContent = strZero;\n    this.lbCurrent.textContent = strZero;\n    this.lbLastRowOnPage.textContent = strZero;\n    this.lbTotal.textContent = strZero;\n    this.lbRecordCount.textContent = strZero;\n    this.announceAriaStatus(strZero, strZero, strZero, strZero, strZero);\n  }\n};\nvar PaginationSelector = {\n  selector: \"AG-PAGINATION\",\n  component: PaginationComp\n};\n\n// packages/ag-grid-community/src/pagination/paginationService.ts\nvar PaginationService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"pagination\";\n    this.currentPage = 0;\n    this.topDisplayedRowIndex = 0;\n    this.bottomDisplayedRowIndex = 0;\n    this.masterRowCount = 0;\n  }\n  postConstruct() {\n    const gos = this.gos;\n    this.active = gos.get(\"pagination\");\n    this.pageSizeFromGridOptions = gos.get(\"paginationPageSize\");\n    this.paginateChildRows = this.isPaginateChildRows();\n    this.addManagedPropertyListener(\"pagination\", this.onPaginationGridOptionChanged.bind(this));\n    this.addManagedPropertyListener(\"paginationPageSize\", this.onPageSizeGridOptionChanged.bind(this));\n  }\n  getPaginationSelector() {\n    return PaginationSelector;\n  }\n  isPaginateChildRows() {\n    const gos = this.gos;\n    const shouldPaginate = gos.get(\"groupHideParentOfSingleChild\") || // following two properties deprecated v32.3.0\n    gos.get(\"groupRemoveSingleChildren\") || gos.get(\"groupRemoveLowestSingleChildren\");\n    if (shouldPaginate) {\n      return true;\n    }\n    return gos.get(\"paginateChildRows\");\n  }\n  onPaginationGridOptionChanged() {\n    this.active = this.gos.get(\"pagination\");\n    this.calculatePages();\n    this.dispatchPaginationChangedEvent({ keepRenderedRows: true });\n  }\n  onPageSizeGridOptionChanged() {\n    this.setPageSize(this.gos.get(\"paginationPageSize\"), \"gridOptions\");\n  }\n  goToPage(page) {\n    const currentPage = this.currentPage;\n    if (!this.active || currentPage === page || typeof currentPage !== \"number\") {\n      return;\n    }\n    this.currentPage = page;\n    this.calculatePages();\n    this.dispatchPaginationChangedEvent({ newPage: true });\n  }\n  goToPageWithIndex(index) {\n    if (!this.active) {\n      return;\n    }\n    let adjustedIndex = index;\n    if (!this.paginateChildRows) {\n      adjustedIndex = this.beans.rowModel.getTopLevelIndexFromDisplayedIndex?.(index) ?? index;\n    }\n    this.goToPage(Math.floor(adjustedIndex / this.pageSize));\n  }\n  isRowInPage(rowIndex) {\n    if (!this.active) {\n      return true;\n    }\n    return rowIndex >= this.topDisplayedRowIndex && rowIndex <= this.bottomDisplayedRowIndex;\n  }\n  getCurrentPage() {\n    return this.currentPage;\n  }\n  goToNextPage() {\n    this.goToPage(this.currentPage + 1);\n  }\n  goToPreviousPage() {\n    this.goToPage(this.currentPage - 1);\n  }\n  goToFirstPage() {\n    this.goToPage(0);\n  }\n  goToLastPage() {\n    const rowCount = this.beans.rowModel.getRowCount();\n    const lastPage = Math.floor(rowCount / this.pageSize);\n    this.goToPage(lastPage);\n  }\n  getPageSize() {\n    return this.pageSize;\n  }\n  getTotalPages() {\n    return this.totalPages;\n  }\n  /** This is only for state setting before data has been loaded */\n  setPage(page) {\n    this.currentPage = page;\n  }\n  get pageSize() {\n    if (_exists(this.pageSizeAutoCalculated) && this.gos.get(\"paginationAutoPageSize\")) {\n      return this.pageSizeAutoCalculated;\n    }\n    if (_exists(this.pageSizeFromPageSizeSelector)) {\n      return this.pageSizeFromPageSizeSelector;\n    }\n    if (_exists(this.pageSizeFromInitialState)) {\n      return this.pageSizeFromInitialState;\n    }\n    if (_exists(this.pageSizeFromGridOptions)) {\n      return this.pageSizeFromGridOptions;\n    }\n    return this.defaultPageSize;\n  }\n  calculatePages() {\n    if (this.active) {\n      if (this.paginateChildRows) {\n        this.calculatePagesAllRows();\n      } else {\n        this.calculatePagesMasterRowsOnly();\n      }\n    } else {\n      this.calculatedPagesNotActive();\n    }\n    this.beans.pageBounds.calculateBounds(this.topDisplayedRowIndex, this.bottomDisplayedRowIndex);\n  }\n  unsetAutoCalculatedPageSize() {\n    if (this.pageSizeAutoCalculated === void 0) {\n      return;\n    }\n    const oldPageSize = this.pageSizeAutoCalculated;\n    this.pageSizeAutoCalculated = void 0;\n    if (this.pageSize === oldPageSize) {\n      return;\n    }\n    this.calculatePages();\n    this.dispatchPaginationChangedEvent({ newPageSize: true });\n  }\n  setPageSize(size, source) {\n    const currentSize = this.pageSize;\n    switch (source) {\n      case \"autoCalculated\":\n        this.pageSizeAutoCalculated = size;\n        break;\n      case \"pageSizeSelector\":\n        this.pageSizeFromPageSizeSelector = size;\n        if (this.currentPage !== 0) {\n          this.goToFirstPage();\n        }\n        break;\n      case \"initialState\":\n        this.pageSizeFromInitialState = size;\n        break;\n      case \"gridOptions\":\n        this.pageSizeFromGridOptions = size;\n        this.pageSizeFromInitialState = void 0;\n        this.pageSizeFromPageSizeSelector = void 0;\n        if (this.currentPage !== 0) {\n          this.goToFirstPage();\n        }\n        break;\n    }\n    if (currentSize !== this.pageSize) {\n      this.calculatePages();\n      this.dispatchPaginationChangedEvent({ newPageSize: true, keepRenderedRows: true });\n    }\n  }\n  setZeroRows() {\n    this.masterRowCount = 0;\n    this.topDisplayedRowIndex = 0;\n    this.bottomDisplayedRowIndex = -1;\n    this.currentPage = 0;\n    this.totalPages = 0;\n  }\n  adjustCurrentPageIfInvalid() {\n    const totalPages = this.totalPages;\n    if (this.currentPage >= totalPages) {\n      this.currentPage = totalPages - 1;\n    }\n    const currentPage = this.currentPage;\n    if (!isFinite(currentPage) || isNaN(currentPage) || currentPage < 0) {\n      this.currentPage = 0;\n    }\n  }\n  calculatePagesMasterRowsOnly() {\n    const rowModel = this.beans.rowModel;\n    const masterRowCount = rowModel.getTopLevelRowCount();\n    this.masterRowCount = masterRowCount;\n    if (masterRowCount <= 0) {\n      this.setZeroRows();\n      return;\n    }\n    const pageSize = this.pageSize;\n    const masterLastRowIndex = masterRowCount - 1;\n    this.totalPages = Math.floor(masterLastRowIndex / pageSize) + 1;\n    this.adjustCurrentPageIfInvalid();\n    const currentPage = this.currentPage;\n    const masterPageStartIndex = pageSize * currentPage;\n    let masterPageEndIndex = pageSize * (currentPage + 1) - 1;\n    if (masterPageEndIndex > masterLastRowIndex) {\n      masterPageEndIndex = masterLastRowIndex;\n    }\n    this.topDisplayedRowIndex = rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);\n    if (masterPageEndIndex === masterLastRowIndex) {\n      this.bottomDisplayedRowIndex = rowModel.getRowCount() - 1;\n    } else {\n      const firstIndexNotToShow = rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);\n      this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;\n    }\n  }\n  getMasterRowCount() {\n    return this.masterRowCount;\n  }\n  calculatePagesAllRows() {\n    const masterRowCount = this.beans.rowModel.getRowCount();\n    this.masterRowCount = masterRowCount;\n    if (masterRowCount === 0) {\n      this.setZeroRows();\n      return;\n    }\n    const { pageSize, currentPage } = this;\n    const maxRowIndex = masterRowCount - 1;\n    this.totalPages = Math.floor(maxRowIndex / pageSize) + 1;\n    this.adjustCurrentPageIfInvalid();\n    this.topDisplayedRowIndex = pageSize * currentPage;\n    this.bottomDisplayedRowIndex = pageSize * (currentPage + 1) - 1;\n    if (this.bottomDisplayedRowIndex > maxRowIndex) {\n      this.bottomDisplayedRowIndex = maxRowIndex;\n    }\n  }\n  calculatedPagesNotActive() {\n    this.setPageSize(void 0, \"autoCalculated\");\n    this.totalPages = 1;\n    this.currentPage = 0;\n    this.topDisplayedRowIndex = 0;\n    this.bottomDisplayedRowIndex = this.beans.rowModel.getRowCount() - 1;\n  }\n  dispatchPaginationChangedEvent(params) {\n    const { keepRenderedRows = false, newPage = false, newPageSize = false } = params;\n    this.eventSvc.dispatchEvent({\n      type: \"paginationChanged\",\n      animate: false,\n      newData: false,\n      newPage,\n      newPageSize,\n      keepRenderedRows\n    });\n  }\n};\n\n// packages/ag-grid-community/src/pagination/paginationModule.ts\nvar PaginationModule = {\n  moduleName: \"Pagination\",\n  version: VERSION,\n  beans: [PaginationService, PaginationAutoPageSizeService],\n  icons: {\n    // \"go to first\" button in pagination controls\n    first: \"first\",\n    // \"go to previous\" button in pagination controls\n    previous: \"previous\",\n    // \"go to next\" button in pagination controls\n    next: \"next\",\n    // \"go to last\" button in pagination controls\n    last: \"last\"\n  },\n  apiFunctions: {\n    paginationIsLastPageFound,\n    paginationGetPageSize,\n    paginationGetCurrentPage,\n    paginationGetTotalPages,\n    paginationGetRowCount,\n    paginationGoToNextPage,\n    paginationGoToPreviousPage,\n    paginationGoToFirstPage,\n    paginationGoToLastPage,\n    paginationGoToPage\n  },\n  dependsOn: [PopupModule]\n};\n\n// packages/ag-grid-community/src/api/rowApi.ts\nfunction redrawRows(beans, params = {}) {\n  const rowNodes = params ? params.rowNodes : void 0;\n  beans.frameworkOverrides.wrapIncoming(() => beans.rowRenderer.redrawRows(rowNodes));\n}\nfunction setRowNodeExpanded(beans, rowNode, expanded, expandParents, forceSync) {\n  if (rowNode) {\n    if (expandParents && rowNode.parent && rowNode.parent.level !== -1) {\n      setRowNodeExpanded(beans, rowNode.parent, expanded, expandParents, forceSync);\n    }\n    rowNode.setExpanded(expanded, void 0, forceSync);\n  }\n}\nfunction getRowNode(beans, id) {\n  return beans.rowModel.getRowNode(id);\n}\nfunction addRenderedRowListener(beans, eventName, rowIndex, callback) {\n  beans.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n}\nfunction getRenderedNodes(beans) {\n  return beans.rowRenderer.getRenderedNodes();\n}\nfunction forEachNode(beans, callback, includeFooterNodes) {\n  beans.rowModel.forEachNode(callback, includeFooterNodes);\n}\nfunction getFirstDisplayedRowIndex(beans) {\n  return beans.rowRenderer.firstRenderedRow;\n}\nfunction getLastDisplayedRowIndex(beans) {\n  return beans.rowRenderer.lastRenderedRow;\n}\nfunction getDisplayedRowAtIndex(beans, index) {\n  return beans.rowModel.getRow(index);\n}\nfunction getDisplayedRowCount(beans) {\n  return beans.rowModel.getRowCount();\n}\n\n// packages/ag-grid-community/src/api/apiModule.ts\nvar RowApiModule = {\n  moduleName: \"RowApi\",\n  version: VERSION,\n  apiFunctions: {\n    redrawRows,\n    setRowNodeExpanded,\n    getRowNode,\n    addRenderedRowListener,\n    getRenderedNodes,\n    forEachNode,\n    getFirstDisplayedRowIndex,\n    getLastDisplayedRowIndex,\n    getDisplayedRowAtIndex,\n    getDisplayedRowCount\n  }\n};\nvar ScrollApiModule = {\n  moduleName: \"ScrollApi\",\n  version: VERSION,\n  apiFunctions: {\n    getVerticalPixelRange,\n    getHorizontalPixelRange,\n    ensureColumnVisible,\n    ensureIndexVisible,\n    ensureNodeVisible\n  }\n};\n\n// packages/ag-grid-community/src/rendering/renderApi.ts\nfunction setGridAriaProperty(beans, property, value) {\n  if (!property) {\n    return;\n  }\n  const eGrid = beans.ctrlsSvc.getGridBodyCtrl().eGridBody;\n  const ariaProperty = `aria-${property}`;\n  if (value === null) {\n    eGrid.removeAttribute(ariaProperty);\n  } else {\n    eGrid.setAttribute(ariaProperty, value);\n  }\n}\nfunction refreshCells(beans, params = {}) {\n  beans.frameworkOverrides.wrapIncoming(() => beans.rowRenderer.refreshCells(params));\n}\nfunction refreshHeader(beans) {\n  beans.frameworkOverrides.wrapIncoming(\n    () => beans.ctrlsSvc.getHeaderRowContainerCtrls().forEach((c) => c.refresh())\n  );\n}\nfunction isAnimationFrameQueueEmpty(beans) {\n  return beans.animationFrameSvc?.isQueueEmpty() ?? true;\n}\nfunction flushAllAnimationFrames(beans) {\n  beans.animationFrameSvc?.flushAllFrames();\n}\nfunction getSizesForCurrentTheme(beans) {\n  return {\n    rowHeight: _getRowHeightAsNumber(beans),\n    headerHeight: getHeaderHeight(beans)\n  };\n}\nfunction getCellRendererInstances(beans, params = {}) {\n  const cellRenderers = [];\n  beans.rowRenderer.getCellCtrls(params.rowNodes, params.columns).forEach((cellCtrl) => {\n    const cellRenderer = cellCtrl.getCellRenderer();\n    if (cellRenderer != null) {\n      cellRenderers.push(_unwrapUserComp(cellRenderer));\n    }\n  });\n  if (params.columns?.length) {\n    return cellRenderers;\n  }\n  const fullWidthRenderers = [];\n  const rowIdMap = mapRowNodes(params.rowNodes);\n  beans.rowRenderer.getAllRowCtrls().forEach((rowCtrl) => {\n    if (rowIdMap && !isRowInMap(rowCtrl.rowNode, rowIdMap)) {\n      return;\n    }\n    if (!rowCtrl.isFullWidth()) {\n      return;\n    }\n    const renderers = rowCtrl.getFullWidthCellRenderers();\n    for (let i = 0; i < renderers.length; i++) {\n      const renderer = renderers[i];\n      if (renderer != null) {\n        fullWidthRenderers.push(_unwrapUserComp(renderer));\n      }\n    }\n  });\n  return [...fullWidthRenderers, ...cellRenderers];\n}\n\n// packages/ag-grid-community/src/rendering/renderModule.ts\nvar RenderApiModule = {\n  moduleName: \"RenderApi\",\n  version: VERSION,\n  apiFunctions: {\n    setGridAriaProperty,\n    refreshCells,\n    refreshHeader,\n    isAnimationFrameQueueEmpty,\n    flushAllAnimationFrames,\n    getSizesForCurrentTheme,\n    getCellRendererInstances\n  }\n};\n\n// packages/ag-grid-community/src/columnAutosize/columnAutosizeApi.ts\nfunction sizeColumnsToFit(beans, paramsOrGridWidth) {\n  if (typeof paramsOrGridWidth === \"number\") {\n    beans.colAutosize?.sizeColumnsToFit(paramsOrGridWidth, \"api\");\n  } else {\n    beans.colAutosize?.sizeColumnsToFitGridBody(paramsOrGridWidth);\n  }\n}\nfunction autoSizeColumns(beans, keys, skipHeader) {\n  beans.colAutosize?.autoSizeCols({ colKeys: keys, skipHeader, source: \"api\" });\n}\nfunction autoSizeAllColumns(beans, skipHeader) {\n  beans.colAutosize?.autoSizeAllColumns(\"api\", skipHeader);\n}\n\n// packages/ag-grid-community/src/columnAutosize/columnAutosizeService.ts\nvar ColumnAutosizeService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colAutosize\";\n    this.timesDelayed = 0;\n    // when we're waiting for cell data types to be inferred, we need to defer column resizing\n    this.shouldQueueResizeOperations = false;\n    this.resizeOperationQueue = [];\n  }\n  postConstruct() {\n    this.addManagedEventListeners({ firstDataRendered: () => this.onFirstDataRendered() });\n  }\n  autoSizeCols(params) {\n    if (this.shouldQueueResizeOperations) {\n      this.pushResizeOperation(() => this.autoSizeCols(params));\n      return;\n    }\n    const { colKeys, skipHeader, skipHeaderGroups, stopAtGroup, source = \"api\" } = params;\n    const { animationFrameSvc, renderStatus, colModel, autoWidthCalc, visibleCols } = this.beans;\n    animationFrameSvc?.flushAllFrames();\n    if (this.timesDelayed < 5 && renderStatus && !renderStatus.areHeaderCellsRendered()) {\n      this.timesDelayed++;\n      setTimeout(() => {\n        if (this.isAlive()) {\n          this.autoSizeCols(params);\n        }\n      });\n      return;\n    }\n    this.timesDelayed = 0;\n    const columnsAutoSized = [];\n    let changesThisTimeAround = -1;\n    const shouldSkipHeader = skipHeader != null ? skipHeader : this.gos.get(\"skipHeaderOnAutoSize\");\n    const shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;\n    while (changesThisTimeAround !== 0) {\n      changesThisTimeAround = 0;\n      const updatedColumns = [];\n      colKeys.forEach((key) => {\n        if (!key) {\n          return;\n        }\n        const column = colModel.getCol(key);\n        if (!column || isRowNumberCol(column)) {\n          return;\n        }\n        if (columnsAutoSized.indexOf(column) >= 0) {\n          return;\n        }\n        const preferredWidth = autoWidthCalc.getPreferredWidthForColumn(column, shouldSkipHeader);\n        if (preferredWidth > 0) {\n          const newWidth = normaliseColumnWidth(column, preferredWidth);\n          column.setActualWidth(newWidth, source);\n          columnsAutoSized.push(column);\n          changesThisTimeAround++;\n        }\n        updatedColumns.push(column);\n      });\n      if (!updatedColumns.length) {\n        continue;\n      }\n      visibleCols.refresh(source);\n    }\n    if (!shouldSkipHeaderGroups) {\n      this.autoSizeColumnGroupsByColumns(colKeys, source, stopAtGroup);\n    }\n    dispatchColumnResizedEvent(this.eventSvc, columnsAutoSized, true, \"autosizeColumns\");\n  }\n  autoSizeColumn(key, source, skipHeader) {\n    if (key) {\n      this.autoSizeCols({ colKeys: [key], skipHeader, skipHeaderGroups: true, source });\n    }\n  }\n  autoSizeColumnGroupsByColumns(keys, source, stopAtGroup) {\n    const { colModel, ctrlsSvc } = this.beans;\n    const columnGroups = /* @__PURE__ */ new Set();\n    const columns = colModel.getColsForKeys(keys);\n    columns.forEach((col) => {\n      let parent = col.getParent();\n      while (parent && parent != stopAtGroup) {\n        if (!parent.isPadding()) {\n          columnGroups.add(parent);\n        }\n        parent = parent.getParent();\n      }\n    });\n    let headerGroupCtrl;\n    const resizedColumns = [];\n    for (const columnGroup of columnGroups) {\n      for (const headerContainerCtrl of ctrlsSvc.getHeaderRowContainerCtrls()) {\n        headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);\n        if (headerGroupCtrl) {\n          break;\n        }\n      }\n      if (headerGroupCtrl) {\n        headerGroupCtrl.resizeLeafColumnsToFit(source);\n      }\n    }\n    return resizedColumns;\n  }\n  autoSizeAllColumns(source, skipHeader) {\n    if (this.shouldQueueResizeOperations) {\n      this.pushResizeOperation(() => this.autoSizeAllColumns(source, skipHeader));\n      return;\n    }\n    const allDisplayedColumns = this.beans.visibleCols.allCols;\n    this.autoSizeCols({ colKeys: allDisplayedColumns, skipHeader, source });\n  }\n  addColumnAutosize(element, column) {\n    const skipHeaderOnAutoSize = this.gos.get(\"skipHeaderOnAutoSize\");\n    const autoSizeColListener = () => {\n      this.autoSizeColumn(column, \"uiColumnResized\", skipHeaderOnAutoSize);\n    };\n    element.addEventListener(\"dblclick\", autoSizeColListener);\n    const touchListener = new TouchListener(element);\n    touchListener.addEventListener(\"doubleTap\", autoSizeColListener);\n    return () => {\n      element.removeEventListener(\"dblclick\", autoSizeColListener);\n      touchListener.removeEventListener(\"doubleTap\", autoSizeColListener);\n      touchListener.destroy();\n    };\n  }\n  addColumnGroupResize(element, columnGroup, callback) {\n    const skipHeaderOnAutoSize = this.gos.get(\"skipHeaderOnAutoSize\");\n    const listener = () => {\n      const keys = [];\n      const leafCols = columnGroup.getDisplayedLeafColumns();\n      leafCols.forEach((column) => {\n        if (!column.getColDef().suppressAutoSize) {\n          keys.push(column.getColId());\n        }\n      });\n      if (keys.length > 0) {\n        this.autoSizeCols({\n          colKeys: keys,\n          skipHeader: skipHeaderOnAutoSize,\n          stopAtGroup: columnGroup,\n          source: \"uiColumnResized\"\n        });\n      }\n      callback();\n    };\n    element.addEventListener(\"dblclick\", listener);\n    return () => element.removeEventListener(\"dblclick\", listener);\n  }\n  // method will call itself if no available width. this covers if the grid\n  // isn't visible, but is just about to be visible.\n  sizeColumnsToFitGridBody(params, nextTimeout) {\n    if (!this.isAlive()) {\n      return;\n    }\n    const { ctrlsSvc, scrollVisibleSvc } = this.beans;\n    const gridBodyCtrl = ctrlsSvc.getGridBodyCtrl();\n    const removeScrollWidth = gridBodyCtrl.isVerticalScrollShowing();\n    const scrollWidthToRemove = removeScrollWidth ? scrollVisibleSvc.getScrollbarWidth() : 0;\n    const bodyViewportWidth = _getInnerWidth(gridBodyCtrl.eGridBody);\n    const availableWidth = bodyViewportWidth - scrollWidthToRemove;\n    if (availableWidth > 0) {\n      this.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\", false, params);\n      return;\n    }\n    if (nextTimeout === void 0) {\n      window.setTimeout(() => {\n        this.sizeColumnsToFitGridBody(params, 100);\n      }, 0);\n    } else if (nextTimeout === 100) {\n      window.setTimeout(() => {\n        this.sizeColumnsToFitGridBody(params, 500);\n      }, 100);\n    } else if (nextTimeout === 500) {\n      window.setTimeout(() => {\n        this.sizeColumnsToFitGridBody(params, -1);\n      }, 500);\n    } else {\n      _warn(29);\n    }\n  }\n  // called from api\n  sizeColumnsToFit(gridWidth, source = \"sizeColumnsToFit\", silent, params) {\n    if (this.shouldQueueResizeOperations) {\n      this.pushResizeOperation(() => this.sizeColumnsToFit(gridWidth, source, silent, params));\n      return;\n    }\n    const limitsMap = {};\n    if (params) {\n      params?.columnLimits?.forEach(({ key, ...dimensions }) => {\n        limitsMap[typeof key === \"string\" ? key : key.getColId()] = dimensions;\n      });\n    }\n    const allDisplayedColumns = this.beans.visibleCols.allCols;\n    if (gridWidth <= 0 || !allDisplayedColumns.length) {\n      return;\n    }\n    const doColumnsAlreadyFit = gridWidth === getWidthOfColsInList(allDisplayedColumns);\n    if (doColumnsAlreadyFit) {\n      const doAllColumnsSatisfyConstraints = allDisplayedColumns.every((column) => {\n        if (column.colDef.suppressSizeToFit) {\n          return true;\n        }\n        const widthOverride = limitsMap?.[column.getId()];\n        const minWidth = widthOverride?.minWidth ?? params?.defaultMinWidth;\n        const maxWidth = widthOverride?.maxWidth ?? params?.defaultMaxWidth;\n        const colWidth = column.getActualWidth();\n        return (minWidth == null || colWidth >= minWidth) && (maxWidth == null || colWidth <= maxWidth);\n      });\n      if (doAllColumnsSatisfyConstraints) {\n        return;\n      }\n    }\n    const colsToSpread = [];\n    const colsToNotSpread = [];\n    allDisplayedColumns.forEach((column) => {\n      if (column.getColDef().suppressSizeToFit === true) {\n        colsToNotSpread.push(column);\n      } else {\n        colsToSpread.push(column);\n      }\n    });\n    const colsToDispatchEventFor = colsToSpread.slice(0);\n    let finishedResizing = false;\n    const moveToNotSpread = (column) => {\n      _removeFromArray(colsToSpread, column);\n      colsToNotSpread.push(column);\n    };\n    colsToSpread.forEach((column) => {\n      column.resetActualWidth(source);\n      const widthOverride = limitsMap?.[column.getId()];\n      const minOverride = widthOverride?.minWidth ?? params?.defaultMinWidth;\n      const maxOverride = widthOverride?.maxWidth ?? params?.defaultMaxWidth;\n      const colWidth = column.getActualWidth();\n      if (typeof minOverride === \"number\" && colWidth < minOverride) {\n        column.setActualWidth(minOverride, source, true);\n      } else if (typeof maxOverride === \"number\" && colWidth > maxOverride) {\n        column.setActualWidth(maxOverride, source, true);\n      }\n    });\n    while (!finishedResizing) {\n      finishedResizing = true;\n      const availablePixels = gridWidth - getWidthOfColsInList(colsToNotSpread);\n      if (availablePixels <= 0) {\n        colsToSpread.forEach((column) => {\n          const widthOverride = limitsMap?.[column.getId()]?.minWidth ?? params?.defaultMinWidth;\n          if (typeof widthOverride === \"number\") {\n            column.setActualWidth(widthOverride, source, true);\n            return;\n          }\n          column.setActualWidth(column.minWidth, source);\n        });\n      } else {\n        const scale = availablePixels / getWidthOfColsInList(colsToSpread);\n        let pixelsForLastCol = availablePixels;\n        for (let i = colsToSpread.length - 1; i >= 0; i--) {\n          const column = colsToSpread[i];\n          const widthOverride = limitsMap?.[column.getId()];\n          const minOverride = widthOverride?.minWidth ?? params?.defaultMinWidth;\n          const maxOverride = widthOverride?.maxWidth ?? params?.defaultMaxWidth;\n          const colMinWidth = column.getMinWidth();\n          const colMaxWidth = column.getMaxWidth();\n          const minWidth = typeof minOverride === \"number\" && minOverride > colMinWidth ? minOverride : colMinWidth;\n          const maxWidth = typeof maxOverride === \"number\" && maxOverride < colMaxWidth ? maxOverride : colMaxWidth;\n          let newWidth = Math.round(column.getActualWidth() * scale);\n          if (newWidth < minWidth) {\n            newWidth = minWidth;\n            moveToNotSpread(column);\n            finishedResizing = false;\n          } else if (newWidth > maxWidth) {\n            newWidth = maxWidth;\n            moveToNotSpread(column);\n            finishedResizing = false;\n          } else if (i === 0) {\n            newWidth = pixelsForLastCol;\n          }\n          column.setActualWidth(newWidth, source, true);\n          pixelsForLastCol -= newWidth;\n        }\n      }\n    }\n    colsToDispatchEventFor.forEach((col) => {\n      col.fireColumnWidthChangedEvent(source);\n    });\n    const visibleCols = this.beans.visibleCols;\n    visibleCols.setLeftValues(source);\n    visibleCols.updateBodyWidths();\n    if (silent) {\n      return;\n    }\n    dispatchColumnResizedEvent(this.eventSvc, colsToDispatchEventFor, true, source);\n  }\n  applyAutosizeStrategy() {\n    const autoSizeStrategy = this.gos.get(\"autoSizeStrategy\");\n    if (!autoSizeStrategy) {\n      return;\n    }\n    const { type } = autoSizeStrategy;\n    setTimeout(() => {\n      if (type === \"fitGridWidth\") {\n        const { columnLimits: propColumnLimits, defaultMinWidth, defaultMaxWidth } = autoSizeStrategy;\n        const columnLimits = propColumnLimits?.map(({ colId: key, minWidth, maxWidth }) => ({\n          key,\n          minWidth,\n          maxWidth\n        }));\n        this.sizeColumnsToFitGridBody({\n          defaultMinWidth,\n          defaultMaxWidth,\n          columnLimits\n        });\n      } else if (type === \"fitProvidedWidth\") {\n        this.sizeColumnsToFit(autoSizeStrategy.width, \"sizeColumnsToFit\");\n      }\n    });\n  }\n  onFirstDataRendered() {\n    const autoSizeStrategy = this.gos.get(\"autoSizeStrategy\");\n    if (autoSizeStrategy?.type !== \"fitCellContents\") {\n      return;\n    }\n    const { colIds: columns, skipHeader } = autoSizeStrategy;\n    setTimeout(() => {\n      if (columns) {\n        this.autoSizeCols({\n          colKeys: columns,\n          skipHeader,\n          source: \"autosizeColumns\"\n        });\n      } else {\n        this.autoSizeAllColumns(\"autosizeColumns\", skipHeader);\n      }\n    });\n  }\n  processResizeOperations() {\n    this.shouldQueueResizeOperations = false;\n    this.resizeOperationQueue.forEach((resizeOperation) => resizeOperation());\n    this.resizeOperationQueue = [];\n  }\n  pushResizeOperation(func) {\n    this.resizeOperationQueue.push(func);\n  }\n  destroy() {\n    this.resizeOperationQueue.length = 0;\n    super.destroy();\n  }\n};\nfunction normaliseColumnWidth(column, newWidth) {\n  const minWidth = column.getMinWidth();\n  if (newWidth < minWidth) {\n    newWidth = minWidth;\n  }\n  const maxWidth = column.getMaxWidth();\n  if (column.isGreaterThanMax(newWidth)) {\n    newWidth = maxWidth;\n  }\n  return newWidth;\n}\n\n// packages/ag-grid-community/src/columnAutosize/columnAutosizeModule.ts\nvar ColumnAutoSizeModule = {\n  moduleName: \"ColumnAutoSize\",\n  version: VERSION,\n  beans: [ColumnAutosizeService],\n  apiFunctions: {\n    sizeColumnsToFit,\n    autoSizeColumns,\n    autoSizeAllColumns\n  },\n  dependsOn: [AutoWidthModule]\n};\n\n// packages/ag-grid-community/src/pinnedRowModel/manualPinnedRow.css-GENERATED.ts\nvar manualPinnedRowCSS = (\n  /*css*/\n  `.ag-row-pinned-source{background-color:var(--ag-pinned-source-row-background-color);color:var(--ag-pinned-source-row-text-color);font-weight:var(--ag-pinned-source-row-font-weight)}.ag-row-pinned-manual{background-color:var(--ag-pinned-row-background-color);color:var(--ag-pinned-row-text-color);font-weight:var(--ag-pinned-row-font-weight)}`\n);\n\n// packages/ag-grid-community/src/pinnedRowModel/pinnedRowApi.ts\nfunction getPinnedTopRowCount(beans) {\n  return beans.pinnedRowModel?.getPinnedTopRowCount() ?? 0;\n}\nfunction getPinnedBottomRowCount(beans) {\n  return beans.pinnedRowModel?.getPinnedBottomRowCount() ?? 0;\n}\nfunction getPinnedTopRow(beans, index) {\n  return beans.pinnedRowModel?.getPinnedTopRow(index);\n}\nfunction getPinnedBottomRow(beans, index) {\n  return beans.pinnedRowModel?.getPinnedBottomRow(index);\n}\nfunction forEachPinnedRow(beans, floating, callback) {\n  return beans.pinnedRowModel?.forEachPinnedRow(floating, callback);\n}\n\n// packages/ag-grid-community/src/pinnedRowModel/pinnedRowModule.ts\nvar PinnedRowModule = {\n  moduleName: \"PinnedRow\",\n  version: VERSION,\n  beans: [PinnedRowModel],\n  css: [manualPinnedRowCSS],\n  apiFunctions: {\n    getPinnedTopRowCount,\n    getPinnedBottomRowCount,\n    getPinnedTopRow,\n    getPinnedBottomRow,\n    forEachPinnedRow\n  },\n  icons: {\n    rowPin: \"pin\",\n    rowPinTop: \"pinned-top\",\n    rowPinBottom: \"pinned-bottom\",\n    rowUnpin: \"un-pin\"\n  }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/spannedCellCtrl.ts\nvar SpannedCellCtrl = class extends CellCtrl {\n  constructor(cellSpan, rowCtrl, beans) {\n    super(cellSpan.col, cellSpan.firstNode, beans, rowCtrl);\n    this.cellSpan = cellSpan;\n    this.SPANNED_CELL_CSS_CLASS = \"ag-spanned-cell\";\n  }\n  setComp(comp, eCell, eWrapper, eCellWrapper, printLayout, startEditing, compBean) {\n    this.eWrapper = eWrapper;\n    super.setComp(comp, eCell, eWrapper, eCellWrapper, printLayout, startEditing, compBean);\n    this.setAriaRowSpan();\n    this.refreshAriaRowIndex();\n  }\n  isCellSpanning() {\n    return true;\n  }\n  getCellSpan() {\n    return this.cellSpan;\n  }\n  /**\n   * When cell is spanning, ensure row index is also available on the cell\n   */\n  refreshAriaRowIndex() {\n    if (this.rowNode.rowIndex == null) {\n      return;\n    }\n    _setAriaRowIndex(this.eGui, this.rowNode.rowIndex);\n  }\n  /**\n   * When cell is spanning, ensure row index is also available on the cell\n   */\n  setAriaRowSpan() {\n    _setAriaRowSpan(this.eGui, this.cellSpan.spannedNodes.size);\n  }\n  // not ideal, for tabbing need to force the focused position\n  setFocusedCellPosition(cellPos) {\n    this.focusedCellPosition = cellPos;\n  }\n  getFocusedCellPosition() {\n    return this.focusedCellPosition ?? this.cellPosition;\n  }\n  checkCellFocused() {\n    const focusedCell = this.beans.focusSvc.getFocusedCell();\n    return !!focusedCell && this.cellSpan.doesSpanContain(focusedCell);\n  }\n  applyStaticCssClasses() {\n    super.applyStaticCssClasses();\n    this.comp.toggleCss(this.SPANNED_CELL_CSS_CLASS, true);\n  }\n  onCellFocused(event) {\n    const { beans } = this;\n    if (_isCellFocusSuppressed(beans)) {\n      this.focusedCellPosition = void 0;\n      return;\n    }\n    const cellFocused = this.isCellFocused();\n    if (!cellFocused) {\n      this.focusedCellPosition = void 0;\n    }\n    if (event && cellFocused) {\n      this.focusedCellPosition = {\n        rowIndex: event.rowIndex,\n        rowPinned: event.rowPinned,\n        column: event.column\n        // fix\n      };\n    }\n    super.onCellFocused(event);\n  }\n  getRootElement() {\n    return this.eWrapper;\n  }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/spannedRowCtrl.ts\nvar SpannedRowCtrl = class extends RowCtrl {\n  onRowIndexChanged() {\n    super.onRowIndexChanged();\n    this.getAllCellCtrls().forEach((c) => c.refreshAriaRowIndex());\n  }\n  getInitialRowClasses(_rowContainerType) {\n    return [\"ag-spanned-row\"];\n  }\n  getNewCellCtrl(col) {\n    const cellSpan = this.beans.rowSpanSvc?.getCellSpan(col, this.rowNode);\n    if (!cellSpan) {\n      return;\n    }\n    const firstRowOfSpan = cellSpan.firstNode !== this.rowNode;\n    if (firstRowOfSpan) {\n      return;\n    }\n    return new SpannedCellCtrl(cellSpan, this, this.beans);\n  }\n  isCorrectCtrlForSpan(cell) {\n    const cellSpan = this.beans.rowSpanSvc?.getCellSpan(cell.column, this.rowNode);\n    if (!cellSpan) {\n      return false;\n    }\n    const firstRowOfSpan = cellSpan.firstNode !== this.rowNode;\n    if (firstRowOfSpan) {\n      return false;\n    }\n    return cell.getCellSpan() === cellSpan;\n  }\n  /**\n   * Below overrides are explicitly disabling styling and other unwanted behaviours for spannedRowCtrl\n   */\n  // row height should be 0 in spanned row - they're only included for purpose of aria\n  onRowHeightChanged() {\n  }\n  // no styling spanned rows\n  refreshFirstAndLastRowStyles() {\n  }\n  // no hover functionality for spanned rows\n  addHoverFunctionality() {\n  }\n  resetHoveredStatus() {\n  }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/spannedRowRenderer.ts\nvar SpannedRowRenderer = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"spannedRowRenderer\";\n    this.topCtrls = /* @__PURE__ */ new Map();\n    this.bottomCtrls = /* @__PURE__ */ new Map();\n    this.centerCtrls = /* @__PURE__ */ new Map();\n  }\n  postConstruct() {\n    this.addManagedEventListeners({\n      displayedRowsChanged: this.createAllCtrls.bind(this)\n    });\n  }\n  createAllCtrls() {\n    this.createCtrls(\"top\");\n    this.createCtrls(\"bottom\");\n    this.createCtrls(\"center\");\n  }\n  /**\n   * When displayed rows or cols change, the spanned cell ctrls need to update\n   */\n  createCtrls(ctrlsKey) {\n    const { rowSpanSvc } = this.beans;\n    const ctrlsName = `${ctrlsKey}Ctrls`;\n    const previousCtrls = this[ctrlsName];\n    const previousCtrlsSize = previousCtrls.size;\n    const rowCtrls = this.getAllRelevantRowControls(ctrlsKey);\n    const newRowCtrls = /* @__PURE__ */ new Map();\n    let hasNewSpans = false;\n    for (const ctrl of rowCtrls) {\n      if (!ctrl.isAlive()) {\n        continue;\n      }\n      rowSpanSvc?.forEachSpannedColumn(ctrl.rowNode, (col, cellSpan) => {\n        if (newRowCtrls.has(cellSpan.firstNode)) {\n          return;\n        }\n        const existingCtrl = previousCtrls.get(cellSpan.firstNode);\n        if (existingCtrl) {\n          newRowCtrls.set(cellSpan.firstNode, existingCtrl);\n          previousCtrls.delete(cellSpan.firstNode);\n          return;\n        }\n        hasNewSpans = true;\n        const newCtrl = new SpannedRowCtrl(cellSpan.firstNode, this.beans, false, false, false);\n        newRowCtrls.set(cellSpan.firstNode, newCtrl);\n      });\n    }\n    this[ctrlsName] = newRowCtrls;\n    const sameCount = newRowCtrls.size === previousCtrlsSize;\n    if (!hasNewSpans && sameCount)\n      return;\n    for (const oldCtrl of previousCtrls.values()) {\n      oldCtrl.destroyFirstPass(true);\n      oldCtrl.destroySecondPass();\n    }\n    this.dispatchLocalEvent({\n      type: `spannedRowsUpdated`,\n      ctrlsKey\n    });\n  }\n  // cannot use getAllRowCtrls as it returns this services row ctrls.\n  getAllRelevantRowControls(ctrlsKey) {\n    const { rowRenderer } = this.beans;\n    switch (ctrlsKey) {\n      case \"top\":\n        return rowRenderer.topRowCtrls;\n      case \"bottom\":\n        return rowRenderer.bottomRowCtrls;\n      case \"center\":\n        return rowRenderer.allRowCtrls;\n    }\n  }\n  getCellByPosition(cellPosition) {\n    const { rowSpanSvc } = this.beans;\n    const cellSpan = rowSpanSvc?.getCellSpanByPosition(cellPosition);\n    if (!cellSpan) {\n      return void 0;\n    }\n    const ctrlsName = `${_normalisePinnedValue(cellPosition.rowPinned)}Ctrls`;\n    const ctrl = this[ctrlsName].get(cellSpan.firstNode);\n    if (!ctrl) {\n      return void 0;\n    }\n    return ctrl.getAllCellCtrls().find((cellCtrl) => cellCtrl.column === cellPosition.column);\n  }\n  getCtrls(container) {\n    const ctrlsName = `${container}Ctrls`;\n    return [...this[ctrlsName].values()];\n  }\n  destroyRowCtrls(container) {\n    const ctrlsName = `${container}Ctrls`;\n    for (const ctrl of this[ctrlsName].values()) {\n      ctrl.destroyFirstPass(true);\n      ctrl.destroySecondPass();\n    }\n    this[ctrlsName] = /* @__PURE__ */ new Map();\n  }\n  destroy() {\n    super.destroy();\n    this.destroyRowCtrls(\"top\");\n    this.destroyRowCtrls(\"bottom\");\n    this.destroyRowCtrls(\"center\");\n  }\n};\nvar _normalisePinnedValue = (pinned) => {\n  return pinned ?? \"center\";\n};\n\n// packages/ag-grid-community/src/rendering/spanning/rowSpanCache.ts\nvar CellSpan = class {\n  constructor(col, firstNode) {\n    this.col = col;\n    this.firstNode = firstNode;\n    // used for distinguishing between types\n    this.cellSpan = true;\n    this.spannedNodes = /* @__PURE__ */ new Set();\n    this.addSpannedNode(firstNode);\n  }\n  /**\n   * Reset the span leaving only the head.\n   * Head is used as a comparison as this is the row used to render this cell\n   * Even if the row data changes, the cell will properly reflect the correct value.\n   */\n  reset() {\n    this.spannedNodes.clear();\n    this.addSpannedNode(this.firstNode);\n  }\n  addSpannedNode(node) {\n    this.spannedNodes.add(node);\n    this.lastNode = node;\n  }\n  getLastNode() {\n    return this.lastNode;\n  }\n  getCellHeight() {\n    return this.lastNode.rowTop + this.lastNode.rowHeight - this.firstNode.rowTop - 1;\n  }\n  doesSpanContain(cellPosition) {\n    if (cellPosition.column !== this.col) {\n      return false;\n    }\n    if (cellPosition.rowPinned != this.firstNode.rowPinned) {\n      return false;\n    }\n    return this.firstNode.rowIndex <= cellPosition.rowIndex && cellPosition.rowIndex <= this.lastNode.rowIndex;\n  }\n  /**\n   * Gets the auto height value for last node in the spanned cell.\n   * The first node is used to store the auto height for the cell, but the additional height for this cell\n   * needs applied to the last row in the span.\n   */\n  getLastNodeAutoHeight() {\n    const autoHeight = this.firstNode.__autoHeights?.[this.col.getColId()];\n    if (autoHeight == null) {\n      return void 0;\n    }\n    let allButLastHeights = 0;\n    this.spannedNodes.forEach((node) => {\n      if (node === this.lastNode)\n        return;\n      allButLastHeights += node.rowHeight;\n    });\n    return autoHeight - allButLastHeights;\n  }\n};\nvar RowSpanCache = class extends BeanStub {\n  constructor(column) {\n    super();\n    this.column = column;\n  }\n  buildCache(pinned) {\n    const {\n      column,\n      beans: { gos, pinnedRowModel, rowModel, valueSvc, pagination }\n    } = this;\n    const { colDef } = column;\n    const oldMap = this[`${pinned}ValueNodeMap`];\n    const newMap = /* @__PURE__ */ new Map();\n    const isFullWidthCellFunc = gos.getCallback(\"isFullWidthRow\");\n    const equalsFnc = colDef.equals;\n    const customCompare = colDef.spanRows;\n    const isCustomCompare = typeof customCompare === \"function\";\n    let lastNode = null;\n    let spanData = null;\n    let lastValue;\n    const setNewHead = (node, value) => {\n      lastNode = node;\n      spanData = null;\n      lastValue = value;\n    };\n    const checkNodeForCache = (node) => {\n      const doesNodeSupportSpanning = !node.isExpandable() && !node.group && !node.detail && (isFullWidthCellFunc ? !isFullWidthCellFunc({ rowNode: node }) : true);\n      if (node.rowIndex == null || !doesNodeSupportSpanning) {\n        setNewHead(null, null);\n        return;\n      }\n      if (lastNode == null || node.level !== lastNode.level || // no span across groups\n      node.footer || spanData && node.rowIndex - 1 !== spanData?.getLastNode().rowIndex) {\n        setNewHead(node, valueSvc.getValue(column, node));\n        return;\n      }\n      const value = valueSvc.getValue(column, node);\n      if (isCustomCompare) {\n        const params = _addGridCommonParams(gos, {\n          valueA: lastValue,\n          nodeA: lastNode,\n          valueB: value,\n          nodeB: node,\n          column,\n          colDef\n        });\n        if (!customCompare(params)) {\n          setNewHead(node, value);\n          return;\n        }\n      } else {\n        if (equalsFnc ? !equalsFnc(lastValue, value) : lastValue !== value) {\n          setNewHead(node, value);\n          return;\n        }\n      }\n      if (!spanData) {\n        const oldSpan = oldMap?.get(lastNode);\n        if (oldSpan?.firstNode === lastNode) {\n          oldSpan.reset();\n          spanData = oldSpan;\n        } else {\n          spanData = new CellSpan(column, lastNode);\n        }\n        newMap.set(lastNode, spanData);\n      }\n      spanData.addSpannedNode(node);\n      newMap.set(node, spanData);\n    };\n    switch (pinned) {\n      case \"center\":\n        rowModel.forEachDisplayedNode?.((node) => {\n          const isNodeInPage = !pagination || pagination.isRowInPage(node.rowIndex);\n          if (!isNodeInPage) {\n            return;\n          }\n          checkNodeForCache(node);\n        });\n        break;\n      case \"top\":\n        pinnedRowModel?.forEachPinnedRow(\"top\", checkNodeForCache);\n        break;\n      case \"bottom\":\n        pinnedRowModel?.forEachPinnedRow(\"bottom\", checkNodeForCache);\n        break;\n    }\n    this[`${pinned}ValueNodeMap`] = newMap;\n  }\n  isCellSpanning(node) {\n    return !!this.getCellSpan(node);\n  }\n  getCellSpan(node) {\n    const map = this[`${_normalisePinnedValue(node.rowPinned)}ValueNodeMap`];\n    return map.get(node);\n  }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/rowSpanService.ts\nvar RowSpanService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowSpanSvc\";\n    this.spanningColumns = /* @__PURE__ */ new Map();\n    // debounced to allow spannedRowRenderer to run first, removing any old spanned rows\n    this.debouncePinnedEvent = _debounce(this, this.dispatchCellsUpdatedEvent.bind(this, true), 0);\n    this.debounceModelEvent = _debounce(this, this.dispatchCellsUpdatedEvent.bind(this, false), 0);\n    this.pinnedTimeout = null;\n    this.modelTimeout = null;\n  }\n  postConstruct() {\n    const onRowDataUpdated = this.onRowDataUpdated.bind(this);\n    const buildPinnedCaches = this.buildPinnedCaches.bind(this);\n    this.addManagedEventListeners({\n      paginationChanged: this.buildModelCaches.bind(this),\n      pinnedRowDataChanged: buildPinnedCaches,\n      pinnedRowsChanged: buildPinnedCaches,\n      rowNodeDataChanged: onRowDataUpdated,\n      cellValueChanged: onRowDataUpdated\n    });\n  }\n  /**\n   * When a new column is created with spanning (or spanning changes for a column)\n   * @param column column that is now spanning\n   */\n  register(column) {\n    const { gos } = this.beans;\n    if (!gos.get(\"enableCellSpan\")) {\n      return;\n    }\n    if (this.spanningColumns.has(column)) {\n      return;\n    }\n    const cache = this.createManagedBean(new RowSpanCache(column));\n    this.spanningColumns.set(column, cache);\n    cache.buildCache(\"top\");\n    cache.buildCache(\"bottom\");\n    cache.buildCache(\"center\");\n    this.debouncePinnedEvent();\n    this.debounceModelEvent();\n  }\n  dispatchCellsUpdatedEvent(pinned) {\n    this.dispatchLocalEvent({ type: \"spannedCellsUpdated\", pinned });\n  }\n  /**\n   * When a new column is destroyed with spanning (or spanning changes for a column)\n   * @param column column that is now spanning\n   */\n  deregister(column) {\n    this.spanningColumns.delete(column);\n  }\n  // called when data changes, as this could be a hot path it's debounced\n  // it uses timeouts instead of debounce so that it can be cancelled by `modelUpdated`\n  // which is expected to run immediately (to exec before the rowRenderer)\n  onRowDataUpdated({ node }) {\n    const { spannedRowRenderer } = this.beans;\n    if (node.rowPinned) {\n      if (this.pinnedTimeout != null) {\n        return;\n      }\n      this.pinnedTimeout = window.setTimeout(() => {\n        this.pinnedTimeout = null;\n        this.buildPinnedCaches();\n        spannedRowRenderer?.createCtrls(\"top\");\n        spannedRowRenderer?.createCtrls(\"bottom\");\n      }, 0);\n      return;\n    }\n    if (this.modelTimeout != null) {\n      return;\n    }\n    this.modelTimeout = window.setTimeout(() => {\n      this.modelTimeout = null;\n      this.buildModelCaches();\n      spannedRowRenderer?.createCtrls(\"center\");\n    }, 0);\n  }\n  buildModelCaches() {\n    if (this.modelTimeout != null) {\n      clearTimeout(this.modelTimeout);\n    }\n    this.spanningColumns.forEach((cache) => cache.buildCache(\"center\"));\n    this.debounceModelEvent();\n  }\n  buildPinnedCaches() {\n    if (this.pinnedTimeout != null) {\n      clearTimeout(this.pinnedTimeout);\n    }\n    this.spanningColumns.forEach((cache) => {\n      cache.buildCache(\"top\");\n      cache.buildCache(\"bottom\");\n    });\n    this.debouncePinnedEvent();\n  }\n  isCellSpanning(col, rowNode) {\n    const cache = this.spanningColumns.get(col);\n    if (!cache) {\n      return false;\n    }\n    return cache.isCellSpanning(rowNode);\n  }\n  getCellSpanByPosition(position) {\n    const { pinnedRowModel, rowModel } = this.beans;\n    const col = position.column;\n    const index = position.rowIndex;\n    const cache = this.spanningColumns.get(col);\n    if (!cache) {\n      return void 0;\n    }\n    let node;\n    switch (position.rowPinned) {\n      case \"top\":\n        node = pinnedRowModel?.getPinnedTopRow(index);\n        break;\n      case \"bottom\":\n        node = pinnedRowModel?.getPinnedBottomRow(index);\n        break;\n      default:\n        node = rowModel.getRow(index);\n    }\n    if (!node) {\n      return void 0;\n    }\n    return cache.getCellSpan(node);\n  }\n  getCellStart(position) {\n    const span = this.getCellSpanByPosition(position);\n    if (!span) {\n      return position;\n    }\n    return { ...position, rowIndex: span.firstNode.rowIndex };\n  }\n  getCellEnd(position) {\n    const span = this.getCellSpanByPosition(position);\n    if (!span) {\n      return position;\n    }\n    return { ...position, rowIndex: span.getLastNode().rowIndex };\n  }\n  /**\n   * Look-up a spanned cell given a col and node as position indicators\n   *\n   * @param col a column to lookup a span at this position\n   * @param rowNode a node that may be spanned at this position\n   * @returns the CellSpan object if one exists\n   */\n  getCellSpan(col, rowNode) {\n    const cache = this.spanningColumns.get(col);\n    if (!cache) {\n      return void 0;\n    }\n    return cache.getCellSpan(rowNode);\n  }\n  forEachSpannedColumn(rowNode, callback) {\n    for (const [col, cache] of this.spanningColumns) {\n      if (cache.isCellSpanning(rowNode)) {\n        const spanningNode = cache.getCellSpan(rowNode);\n        callback(col, spanningNode);\n      }\n    }\n  }\n  destroy() {\n    super.destroy();\n    this.spanningColumns.clear();\n  }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/cellSpanModule.ts\nvar CellSpanModule = {\n  moduleName: \"CellSpan\",\n  version: VERSION,\n  beans: [RowSpanService, SpannedRowRenderer]\n};\n\n// packages/ag-grid-community/src/styling/cellCustomStyleFeature.ts\nvar CellCustomStyleFeature = class extends BeanStub {\n  constructor(cellCtrl, beans) {\n    super();\n    this.cellCtrl = cellCtrl;\n    this.staticClasses = [];\n    this.beans = beans;\n    this.column = cellCtrl.column;\n  }\n  setComp(comp) {\n    this.cellComp = comp;\n    this.applyUserStyles();\n    this.applyCellClassRules();\n    this.applyClassesFromColDef();\n  }\n  applyCellClassRules() {\n    const { column, cellComp } = this;\n    const colDef = column.colDef;\n    const cellClassRules = colDef.cellClassRules;\n    const cellClassParams = this.getCellClassParams(column, colDef);\n    processClassRules(\n      this.beans.expressionSvc,\n      // if current was previous, skip\n      cellClassRules === this.cellClassRules ? void 0 : this.cellClassRules,\n      cellClassRules,\n      cellClassParams,\n      (className) => cellComp.toggleCss(className, true),\n      (className) => cellComp.toggleCss(className, false)\n    );\n    this.cellClassRules = cellClassRules;\n  }\n  applyUserStyles() {\n    const column = this.column;\n    const colDef = column.colDef;\n    const cellStyle = colDef.cellStyle;\n    if (!cellStyle) {\n      return;\n    }\n    let styles;\n    if (typeof cellStyle === \"function\") {\n      const cellStyleParams = this.getCellClassParams(column, colDef);\n      styles = cellStyle(cellStyleParams);\n    } else {\n      styles = cellStyle;\n    }\n    if (styles) {\n      this.cellComp.setUserStyles(styles);\n    }\n  }\n  applyClassesFromColDef() {\n    const { column, cellComp } = this;\n    const colDef = column.colDef;\n    const cellClassParams = this.getCellClassParams(column, colDef);\n    this.staticClasses.forEach((className) => cellComp.toggleCss(className, false));\n    const newStaticClasses = this.beans.cellStyles.getStaticCellClasses(colDef, cellClassParams);\n    this.staticClasses = newStaticClasses;\n    newStaticClasses.forEach((className) => cellComp.toggleCss(className, true));\n  }\n  getCellClassParams(column, colDef) {\n    const { value, rowNode } = this.cellCtrl;\n    return _addGridCommonParams(this.beans.gos, {\n      value,\n      data: rowNode.data,\n      node: rowNode,\n      colDef,\n      column,\n      rowIndex: rowNode.rowIndex\n    });\n  }\n};\n\n// packages/ag-grid-community/src/styling/cellStyleService.ts\nvar CellStyleService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"cellStyles\";\n  }\n  processAllCellClasses(colDef, params, onApplicableClass, onNotApplicableClass) {\n    processClassRules(\n      this.beans.expressionSvc,\n      void 0,\n      colDef.cellClassRules,\n      params,\n      onApplicableClass,\n      onNotApplicableClass\n    );\n    this.processStaticCellClasses(colDef, params, onApplicableClass);\n  }\n  getStaticCellClasses(colDef, params) {\n    const { cellClass } = colDef;\n    if (!cellClass) {\n      return [];\n    }\n    let classOrClasses;\n    if (typeof cellClass === \"function\") {\n      const cellClassFunc = cellClass;\n      classOrClasses = cellClassFunc(params);\n    } else {\n      classOrClasses = cellClass;\n    }\n    if (typeof classOrClasses === \"string\") {\n      classOrClasses = [classOrClasses];\n    }\n    return classOrClasses || [];\n  }\n  createCellCustomStyleFeature(ctrl, beans) {\n    return new CellCustomStyleFeature(ctrl, beans);\n  }\n  processStaticCellClasses(colDef, params, onApplicableClass) {\n    const classOrClasses = this.getStaticCellClasses(colDef, params);\n    classOrClasses.forEach((cssClassItem) => {\n      onApplicableClass(cssClassItem);\n    });\n  }\n};\n\n// packages/ag-grid-community/src/styling/stylingModule.ts\nvar CellStyleModule = {\n  moduleName: \"CellStyle\",\n  version: VERSION,\n  beans: [CellStyleService]\n};\nvar RowStyleModule = {\n  moduleName: \"RowStyle\",\n  version: VERSION,\n  beans: [RowStyleService]\n};\n\n// packages/ag-grid-community/src/columns/columnHover/columnHoverApi.ts\nfunction isColumnHovered(beans, column) {\n  return !!beans.colHover?.isHovered(column);\n}\n\n// packages/ag-grid-community/src/columns/columnHover/hoverFeature.ts\nvar HoverFeature = class extends BeanStub {\n  constructor(columns, element) {\n    super();\n    this.columns = columns;\n    this.element = element;\n    this.destroyManagedListeners = [];\n    this.enableFeature = (enabled) => {\n      const { beans, gos, element, columns } = this;\n      const colHover = beans.colHover;\n      const active = enabled ?? !!gos.get(\"columnHoverHighlight\");\n      if (active) {\n        this.destroyManagedListeners = this.addManagedElementListeners(element, {\n          mouseover: colHover.setMouseOver.bind(colHover, columns),\n          mouseout: colHover.clearMouseOver.bind(colHover)\n        });\n      } else {\n        this.destroyManagedListeners.forEach((fn) => fn());\n        this.destroyManagedListeners = [];\n      }\n    };\n  }\n  postConstruct() {\n    this.addManagedPropertyListener(\"columnHoverHighlight\", ({ currentValue }) => {\n      this.enableFeature(currentValue);\n    });\n    this.enableFeature();\n  }\n  destroy() {\n    super.destroy();\n    this.destroyManagedListeners = null;\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnHover/columnHoverService.ts\nvar CSS_COLUMN_HOVER = \"ag-column-hover\";\nvar ColumnHoverService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"colHover\";\n  }\n  postConstruct() {\n    this.addManagedPropertyListener(\"columnHoverHighlight\", ({ currentValue }) => {\n      if (!currentValue) {\n        this.clearMouseOver();\n      }\n    });\n  }\n  setMouseOver(columns) {\n    this.updateState(columns);\n  }\n  clearMouseOver() {\n    this.updateState(null);\n  }\n  isHovered(column) {\n    if (!this.gos.get(\"columnHoverHighlight\")) {\n      return false;\n    }\n    const selectedColumns = this.selectedColumns;\n    return !!selectedColumns && selectedColumns.indexOf(column) >= 0;\n  }\n  addHeaderColumnHoverListener(compBean, comp, column) {\n    const listener = () => {\n      const isHovered = this.isHovered(column);\n      comp.toggleCss(\"ag-column-hover\", isHovered);\n    };\n    compBean.addManagedEventListeners({ columnHoverChanged: listener });\n    listener();\n  }\n  onCellColumnHover(column, cellComp) {\n    if (!cellComp) {\n      return;\n    }\n    const isHovered = this.isHovered(column);\n    cellComp.toggleCss(CSS_COLUMN_HOVER, isHovered);\n  }\n  addHeaderFilterColumnHoverListener(compBean, comp, column, eGui) {\n    this.createHoverFeature(compBean, [column], eGui);\n    const listener = () => {\n      const hovered = this.isHovered(column);\n      comp.toggleCss(\"ag-column-hover\", hovered);\n    };\n    compBean.addManagedEventListeners({ columnHoverChanged: listener });\n    listener();\n  }\n  createHoverFeature(compBean, columns, eGui) {\n    compBean.createManagedBean(new HoverFeature(columns, eGui));\n  }\n  updateState(columns) {\n    this.selectedColumns = columns;\n    this.eventSvc.dispatchEvent({\n      type: \"columnHoverChanged\"\n    });\n  }\n};\n\n// packages/ag-grid-community/src/columns/columnHover/columnHoverModule.ts\nvar ColumnHoverModule = {\n  moduleName: \"ColumnHover\",\n  version: VERSION,\n  beans: [ColumnHoverService],\n  apiFunctions: {\n    isColumnHovered\n  }\n};\n\n// packages/ag-grid-community/src/misc/apiEvents/apiEventService.ts\nvar ApiEventService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"apiEventSvc\";\n    this.syncListeners = /* @__PURE__ */ new Map();\n    this.asyncListeners = /* @__PURE__ */ new Map();\n    this.syncGlobalListeners = /* @__PURE__ */ new Set();\n    this.globalListenerPairs = /* @__PURE__ */ new Map();\n  }\n  postConstruct() {\n    this.wrapSvc = this.beans.frameworkOverrides.createGlobalEventListenerWrapper?.();\n  }\n  addEventListener(eventType, userListener) {\n    const listener = this.wrapSvc?.wrap(eventType, userListener) ?? userListener;\n    const async = !ALWAYS_SYNC_GLOBAL_EVENTS.has(eventType);\n    const listeners = async ? this.asyncListeners : this.syncListeners;\n    if (!listeners.has(eventType)) {\n      listeners.set(eventType, /* @__PURE__ */ new Set());\n    }\n    listeners.get(eventType).add(listener);\n    this.eventSvc.addEventListener(eventType, listener, async);\n  }\n  removeEventListener(eventType, userListener) {\n    const listener = this.wrapSvc?.unwrap(eventType, userListener) ?? userListener;\n    const asyncListeners = this.asyncListeners.get(eventType);\n    const hasAsync = !!asyncListeners?.delete(listener);\n    if (!hasAsync) {\n      this.syncListeners.get(eventType)?.delete(listener);\n    }\n    this.eventSvc.removeEventListener(eventType, listener, hasAsync);\n  }\n  addGlobalListener(userListener) {\n    const listener = this.wrapSvc?.wrapGlobal(userListener) ?? userListener;\n    const syncListener = (eventType, event) => {\n      if (ALWAYS_SYNC_GLOBAL_EVENTS.has(eventType)) {\n        listener(eventType, event);\n      }\n    };\n    const asyncListener = (eventType, event) => {\n      if (!ALWAYS_SYNC_GLOBAL_EVENTS.has(eventType)) {\n        listener(eventType, event);\n      }\n    };\n    this.globalListenerPairs.set(userListener, { syncListener, asyncListener });\n    const eventSvc = this.eventSvc;\n    eventSvc.addGlobalListener(syncListener, false);\n    eventSvc.addGlobalListener(asyncListener, true);\n  }\n  removeGlobalListener(userListener) {\n    const { eventSvc, wrapSvc, globalListenerPairs } = this;\n    const listener = wrapSvc?.unwrapGlobal(userListener) ?? userListener;\n    const hasAsync = globalListenerPairs.has(listener);\n    if (hasAsync) {\n      const { syncListener, asyncListener } = globalListenerPairs.get(listener);\n      eventSvc.removeGlobalListener(syncListener, false);\n      eventSvc.removeGlobalListener(asyncListener, true);\n      globalListenerPairs.delete(userListener);\n    } else {\n      this.syncGlobalListeners.delete(listener);\n      eventSvc.removeGlobalListener(listener, false);\n    }\n  }\n  destroyEventListeners(map, async) {\n    map.forEach((listeners, eventType) => {\n      listeners.forEach((listener) => this.eventSvc.removeEventListener(eventType, listener, async));\n      listeners.clear();\n    });\n    map.clear();\n  }\n  destroyGlobalListeners(set, async) {\n    set.forEach((listener) => this.eventSvc.removeGlobalListener(listener, async));\n    set.clear();\n  }\n  destroy() {\n    super.destroy();\n    this.destroyEventListeners(this.syncListeners, false);\n    this.destroyEventListeners(this.asyncListeners, true);\n    this.destroyGlobalListeners(this.syncGlobalListeners, false);\n    const { globalListenerPairs, eventSvc } = this;\n    globalListenerPairs.forEach(({ syncListener, asyncListener }) => {\n      eventSvc.removeGlobalListener(syncListener, false);\n      eventSvc.removeGlobalListener(asyncListener, true);\n    });\n    globalListenerPairs.clear();\n  }\n};\n\n// packages/ag-grid-community/src/misc/apiEvents/eventApi.ts\nfunction addEventListener(beans, eventType, listener) {\n  beans.apiEventSvc?.addEventListener(eventType, listener);\n}\nfunction removeEventListener(beans, eventType, listener) {\n  beans.apiEventSvc?.removeEventListener(eventType, listener);\n}\nfunction addGlobalListener(beans, listener) {\n  beans.apiEventSvc?.addGlobalListener(listener);\n}\nfunction removeGlobalListener(beans, listener) {\n  beans.apiEventSvc?.removeGlobalListener(listener);\n}\n\n// packages/ag-grid-community/src/misc/apiEvents/apiEventModule.ts\nvar EventApiModule = {\n  moduleName: \"EventApi\",\n  version: VERSION,\n  apiFunctions: {\n    addEventListener,\n    addGlobalListener,\n    removeEventListener,\n    removeGlobalListener\n  },\n  beans: [ApiEventService]\n};\n\n// packages/ag-grid-community/src/tooltip/tooltip.css-GENERATED.ts\nvar tooltipCSS = (\n  /*css*/\n  `.ag-tooltip{background-color:var(--ag-tooltip-background-color);border:var(--ag-tooltip-border);border-radius:var(--ag-border-radius);color:var(--ag-tooltip-text-color);padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);white-space:normal}.ag-tooltip,.ag-tooltip-custom{position:absolute;z-index:99999}.ag-tooltip-custom:where(:not(.ag-tooltip-interactive)),.ag-tooltip:where(:not(.ag-tooltip-interactive)){pointer-events:none}.ag-tooltip-animate{transition:opacity 1s;&:where(.ag-tooltip-hiding){opacity:0}}`\n);\n\n// packages/ag-grid-community/src/tooltip/tooltipService.ts\nvar TooltipService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"tooltipSvc\";\n  }\n  setupHeaderTooltip(existingTooltipFeature, ctrl, value, shouldDisplayTooltip) {\n    if (existingTooltipFeature) {\n      ctrl.destroyBean(existingTooltipFeature);\n    }\n    const isTooltipWhenTruncated = _isShowTooltipWhenTruncated(this.gos);\n    const { column, eGui } = ctrl;\n    const colDef = column.getColDef();\n    if (!shouldDisplayTooltip && isTooltipWhenTruncated && !colDef.headerComponent) {\n      shouldDisplayTooltip = _shouldDisplayTooltip(\n        () => eGui.querySelector(\".ag-header-cell-text\")\n      );\n    }\n    const tooltipCtrl = {\n      getColumn: () => column,\n      getColDef: () => column.getColDef(),\n      getGui: () => eGui,\n      getLocation: () => \"header\",\n      getTooltipValue: () => {\n        if (value != null) {\n          return value;\n        }\n        const res = column.getColDef().headerTooltip;\n        return res;\n      },\n      shouldDisplayTooltip\n    };\n    let tooltipFeature = this.createTooltipFeature(tooltipCtrl);\n    if (tooltipFeature) {\n      tooltipFeature = ctrl.createBean(tooltipFeature);\n      ctrl.setRefreshFunction(\"tooltip\", () => tooltipFeature.refreshTooltip());\n    }\n    return tooltipFeature;\n  }\n  setupHeaderGroupTooltip(existingTooltipFeature, ctrl, value, shouldDisplayTooltip) {\n    if (existingTooltipFeature) {\n      ctrl.destroyBean(existingTooltipFeature);\n    }\n    const isTooltipWhenTruncated = _isShowTooltipWhenTruncated(this.gos);\n    const { column, eGui } = ctrl;\n    const colGroupDef = column.getColGroupDef();\n    if (!shouldDisplayTooltip && isTooltipWhenTruncated && !colGroupDef?.headerGroupComponent) {\n      shouldDisplayTooltip = _shouldDisplayTooltip(\n        () => eGui.querySelector(\".ag-header-group-text\")\n      );\n    }\n    const tooltipCtrl = {\n      getColumn: () => column,\n      getGui: () => eGui,\n      getLocation: () => \"headerGroup\",\n      getTooltipValue: () => value ?? (colGroupDef && colGroupDef.headerTooltip),\n      shouldDisplayTooltip\n    };\n    if (colGroupDef) {\n      tooltipCtrl.getColDef = () => colGroupDef;\n    }\n    const tooltipFeature = this.createTooltipFeature(tooltipCtrl);\n    return tooltipFeature ? ctrl.createBean(tooltipFeature) : tooltipFeature;\n  }\n  enableCellTooltipFeature(ctrl, value, shouldDisplayTooltip) {\n    const { column, rowNode } = ctrl;\n    const getTooltipValue = () => {\n      const colDef = column.getColDef();\n      const data = rowNode.data;\n      if (colDef.tooltipField && _exists(data)) {\n        return _getValueUsingField(data, colDef.tooltipField, column.isTooltipFieldContainsDots());\n      }\n      const valueGetter = colDef.tooltipValueGetter;\n      if (valueGetter) {\n        return valueGetter(\n          _addGridCommonParams(this.gos, {\n            location: \"cell\",\n            colDef: column.getColDef(),\n            column,\n            rowIndex: ctrl.cellPosition.rowIndex,\n            node: rowNode,\n            data: rowNode.data,\n            value: ctrl.value,\n            valueFormatted: ctrl.valueFormatted\n          })\n        );\n      }\n      return null;\n    };\n    const isTooltipWhenTruncated = _isShowTooltipWhenTruncated(this.gos);\n    if (!shouldDisplayTooltip && isTooltipWhenTruncated && !ctrl.isCellRenderer()) {\n      shouldDisplayTooltip = _shouldDisplayTooltip(() => {\n        const eCell = ctrl.eGui;\n        return eCell.children.length === 0 ? eCell : eCell.querySelector(\".ag-cell-value\");\n      });\n    }\n    const tooltipCtrl = {\n      getColumn: () => column,\n      getColDef: () => column.getColDef(),\n      getRowIndex: () => ctrl.cellPosition.rowIndex,\n      getRowNode: () => rowNode,\n      getGui: () => ctrl.eGui,\n      getLocation: () => \"cell\",\n      getTooltipValue: value != null ? () => value : getTooltipValue,\n      // this makes no sense, why is the cell formatted value passed to the tooltip???\n      getValueFormatted: () => ctrl.valueFormatted,\n      shouldDisplayTooltip\n    };\n    return this.createTooltipFeature(tooltipCtrl, this.beans);\n  }\n  refreshRowTooltip(existingTooltipFeature, ctrl, value, shouldDisplayTooltip) {\n    const tooltipParams = {\n      getGui: () => ctrl.getFullWidthElement(),\n      getTooltipValue: () => value,\n      getLocation: () => \"fullWidthRow\",\n      shouldDisplayTooltip\n    };\n    const beans = this.beans;\n    const context = beans.context;\n    if (existingTooltipFeature) {\n      ctrl.destroyBean(existingTooltipFeature, context);\n    }\n    const tooltipFeature = this.createTooltipFeature(tooltipParams, beans);\n    return ctrl.createBean(tooltipFeature, context);\n  }\n  initCol(column) {\n    const { colDef } = column;\n    column.tooltipEnabled = _exists(colDef.tooltipField) || _exists(colDef.tooltipValueGetter) || _exists(colDef.tooltipComponent);\n  }\n  createTooltipFeature(tooltipCtrl, beans) {\n    return this.beans.registry.createDynamicBean(\"tooltipFeature\", false, tooltipCtrl, beans);\n  }\n};\n\n// packages/ag-grid-community/src/tooltip/tooltipModule.ts\nvar TooltipModule = {\n  moduleName: \"Tooltip\",\n  version: VERSION,\n  beans: [TooltipService],\n  dynamicBeans: {\n    tooltipFeature: TooltipFeature\n  },\n  userComponents: {\n    agTooltipComponent: TooltipComponent2\n  },\n  dependsOn: [PopupModule],\n  css: [tooltipCSS]\n};\n\n// packages/ag-grid-community/src/misc/locale/localeModule.ts\nvar LocaleModule = {\n  moduleName: \"Locale\",\n  version: VERSION,\n  beans: [LocaleService]\n};\n\n// packages/ag-grid-community/src/rendering/row/rowAutoHeightService.ts\nvar RowAutoHeightService = class extends BeanStub {\n  constructor() {\n    super(...arguments);\n    this.beanName = \"rowAutoHeight\";\n    this.wasEverActive = false;\n    this._debouncedCalculateRowHeights = _debounce(this, this.calculateRowHeights.bind(this), 1);\n  }\n  /**\n   * If row height has been active, request a refresh of the row heights.\n   */\n  requestCheckAutoHeight() {\n    if (!this.wasEverActive) {\n      return;\n    }\n    this._debouncedCalculateRowHeights();\n  }\n  calculateRowHeights() {\n    const { visibleCols, rowModel, rowSpanSvc, pinnedRowModel } = this.beans;\n    const displayedAutoHeightCols = visibleCols.autoHeightCols;\n    let anyNodeChanged = false;\n    const updateDisplayedRowHeights = (row) => {\n      const autoHeights = row.__autoHeights;\n      let newRowHeight = _getRowHeightForNode(this.beans, row).height;\n      for (const col of displayedAutoHeightCols) {\n        let cellHeight = autoHeights?.[col.getColId()];\n        const spannedCell = rowSpanSvc?.getCellSpan(col, row);\n        if (spannedCell) {\n          if (spannedCell.getLastNode() !== row) {\n            continue;\n          }\n          cellHeight = rowSpanSvc?.getCellSpan(col, row)?.getLastNodeAutoHeight();\n          if (!cellHeight) {\n            return;\n          }\n        }\n        if (cellHeight == null) {\n          if (this.colSpanSkipCell(col, row)) {\n            continue;\n          }\n          return;\n        }\n        newRowHeight = Math.max(cellHeight, newRowHeight);\n      }\n      if (newRowHeight !== row.rowHeight) {\n        row.setRowHeight(newRowHeight);\n        anyNodeChanged = true;\n      }\n    };\n    pinnedRowModel?.forEachPinnedRow?.(\"top\", updateDisplayedRowHeights);\n    pinnedRowModel?.forEachPinnedRow?.(\"bottom\", updateDisplayedRowHeights);\n    rowModel.forEachDisplayedNode?.(updateDisplayedRowHeights);\n    if (anyNodeChanged) {\n      rowModel.onRowHeightChanged?.();\n    }\n  }\n  /**\n   * Set the cell height into the row node, and request a refresh of the row heights if there's been a change.\n   * @param rowNode the node to set the auto height on\n   * @param cellHeight the height to set, undefined if the cell has just been destroyed\n   * @param column the column of the cell\n   */\n  setRowAutoHeight(rowNode, cellHeight, column) {\n    rowNode.__autoHeights ?? (rowNode.__autoHeights = {});\n    if (cellHeight == void 0) {\n      delete rowNode.__autoHeights[column.getId()];\n      return;\n    }\n    const previousCellHeight = rowNode.__autoHeights[column.getId()];\n    rowNode.__autoHeights[column.getId()] = cellHeight;\n    if (previousCellHeight !== cellHeight) {\n      this.requestCheckAutoHeight();\n    }\n  }\n  /**\n   * If using col span, then cells which have been spanned over do not need an auto height value\n   * @param col the column of the cell\n   * @param node the node of the cell\n   * @returns whether the row needs auto height value for that column\n   */\n  colSpanSkipCell(col, node) {\n    const { colModel, colViewport, visibleCols } = this.beans;\n    if (!colModel.colSpanActive) {\n      return false;\n    }\n    let activeColsForRow = [];\n    switch (col.getPinned()) {\n      case \"left\":\n        activeColsForRow = visibleCols.getLeftColsForRow(node);\n        break;\n      case \"right\":\n        activeColsForRow = visibleCols.getRightColsForRow(node);\n        break;\n      case null:\n        activeColsForRow = colViewport.getColsWithinViewport(node);\n        break;\n    }\n    return !activeColsForRow.includes(col);\n  }\n  /**\n   * If required, sets up observers to continuously measure changes in the cell height.\n   * @param cellCtrl the cellCtrl of the cell\n   * @param eCellWrapper the HTMLElement to track the height of\n   * @param compBean the component bean to add the destroy/cleanup function to\n   * @returns whether or not auto height has been set up on this cell\n   */\n  setupCellAutoHeight(cellCtrl, eCellWrapper, compBean) {\n    if (!cellCtrl.column.isAutoHeight() || !eCellWrapper) {\n      return false;\n    }\n    this.wasEverActive = true;\n    const eParentCell = eCellWrapper.parentElement;\n    const { rowNode, column } = cellCtrl;\n    const beans = this.beans;\n    const measureHeight = (timesCalled) => {\n      if (cellCtrl.editing) {\n        return;\n      }\n      if (!cellCtrl.isAlive() || !compBean.isAlive()) {\n        return;\n      }\n      const { paddingTop, paddingBottom, borderBottomWidth, borderTopWidth } = _getElementSize(eParentCell);\n      const extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n      const wrapperHeight = eCellWrapper.offsetHeight;\n      const autoHeight = wrapperHeight + extraHeight;\n      if (timesCalled < 5) {\n        const doc = _getDocument(beans);\n        const notYetInDom = !doc || !doc.contains(eCellWrapper);\n        const possiblyNoContentYet = autoHeight == 0;\n        if (notYetInDom || possiblyNoContentYet) {\n          window.setTimeout(() => measureHeight(timesCalled + 1), 0);\n          return;\n        }\n      }\n      this.setRowAutoHeight(rowNode, autoHeight, column);\n    };\n    const listener = () => measureHeight(0);\n    listener();\n    const destroyResizeObserver = _observeResize(beans, eCellWrapper, listener);\n    compBean.addDestroyFunc(() => {\n      destroyResizeObserver();\n      this.setRowAutoHeight(rowNode, void 0, column);\n    });\n    return true;\n  }\n  setAutoHeightActive(cols) {\n    this.active = cols.list.some((col) => col.isVisible() && col.isAutoHeight());\n  }\n  /**\n   * Determines if the row auto height service has cells to grow.\n   * @returns true if all of the rendered rows are at least as tall as their rendered cells.\n   */\n  areRowsMeasured() {\n    if (!this.active) {\n      return true;\n    }\n    const rowCtrls = this.beans.rowRenderer.getAllRowCtrls();\n    let renderedAutoHeightCols = null;\n    for (const { rowNode } of rowCtrls) {\n      if (!renderedAutoHeightCols || this.beans.colModel.colSpanActive) {\n        const renderedCols = this.beans.colViewport.getColsWithinViewport(rowNode);\n        renderedAutoHeightCols = renderedCols.filter((col) => col.isAutoHeight());\n      }\n      if (renderedAutoHeightCols.length === 0) {\n        continue;\n      }\n      if (!rowNode.__autoHeights) {\n        return false;\n      }\n      for (const col of renderedAutoHeightCols) {\n        const cellHeight = rowNode.__autoHeights[col.getColId()];\n        if (!cellHeight || rowNode.rowHeight < cellHeight) {\n          return false;\n        }\n      }\n    }\n    return true;\n  }\n};\n\n// packages/ag-grid-community/src/rendering/row/rowAutoHeightModule.ts\nvar RowAutoHeightModule = {\n  moduleName: \"RowAutoHeight\",\n  version: VERSION,\n  beans: [RowAutoHeightService]\n};\n\n// packages/ag-grid-community/src/allCommunityModule.ts\nvar AllCommunityModule = {\n  moduleName: \"AllCommunity\",\n  version: VERSION,\n  dependsOn: [\n    ClientSideRowModelModule,\n    CsvExportModule,\n    InfiniteRowModelModule,\n    ValidationModule,\n    TextEditorModule,\n    NumberEditorModule,\n    DateEditorModule,\n    CheckboxEditorModule,\n    SelectEditorModule,\n    LargeTextEditorModule,\n    CustomEditorModule,\n    UndoRedoEditModule,\n    TextFilterModule,\n    NumberFilterModule,\n    DateFilterModule,\n    CustomFilterModule,\n    QuickFilterModule,\n    ExternalFilterModule,\n    GridStateModule,\n    AlignedGridsModule,\n    PaginationModule,\n    ColumnApiModule,\n    RowApiModule,\n    ScrollApiModule,\n    RenderApiModule,\n    ColumnAutoSizeModule,\n    RowDragModule,\n    PinnedRowModule,\n    RowSelectionModule,\n    ValueCacheModule,\n    CellStyleModule,\n    ColumnHoverModule,\n    RowStyleModule,\n    EventApiModule,\n    CellApiModule,\n    HighlightChangesModule,\n    TooltipModule,\n    LocaleModule,\n    RowAutoHeightModule,\n    DragAndDropModule,\n    ClientSideRowModelApiModule,\n    CellSpanModule\n  ]\n};\nexport {\n  ALWAYS_SYNC_GLOBAL_EVENTS,\n  AbstractClientSideNodeManager,\n  AgAbstractInputField,\n  AgAbstractLabel,\n  AgCheckbox,\n  AgCheckboxSelector,\n  AgColumn,\n  AgColumnGroup,\n  AgInputDateField,\n  AgInputNumberField,\n  AgInputNumberFieldSelector,\n  AgInputTextArea,\n  AgInputTextField,\n  AgInputTextFieldSelector,\n  AgPickerField,\n  AgPromise,\n  AgProvidedColumnGroup,\n  AgRadioButton,\n  AgSelect,\n  AgSelectSelector,\n  AgToggleButton,\n  AgToggleButtonSelector,\n  AlignedGridsModule,\n  AllCommunityModule,\n  AutoScrollService,\n  BaseColsService,\n  BaseComponentWrapper,\n  BaseCreator,\n  BaseGridSerializingSession,\n  BaseSelectionService,\n  BeanStub,\n  CellApiModule,\n  CellRangeType,\n  CellSpanModule,\n  CellStyleModule,\n  ChangedPath,\n  CheckboxEditorModule,\n  ClientSideRowModelApiModule,\n  ClientSideRowModelModule,\n  ColumnApiModule,\n  ColumnAutoSizeModule,\n  ColumnHoverModule,\n  ColumnKeyCreator,\n  Component,\n  CssClassManager,\n  CsvExportModule,\n  CustomEditorModule,\n  CustomFilterModule,\n  DateEditorModule,\n  DateFilterModule,\n  DragAndDropModule,\n  DragSourceType,\n  EventApiModule,\n  ExternalFilterModule,\n  FakeHScrollComp,\n  FakeVScrollComp,\n  FilterWrapperComp,\n  GROUP_AUTO_COLUMN_ID,\n  GridBodyCtrl,\n  GridCoreCreator,\n  GridCtrl,\n  GridHeaderCtrl,\n  GridStateModule,\n  GroupInstanceIdCreator,\n  HeaderRowContainerCtrl,\n  HighlightChangesModule,\n  InfiniteRowModelModule,\n  KeyCode,\n  LargeTextEditorModule,\n  LocalEventService,\n  LocaleModule,\n  LocaleService,\n  ManagedFocusFeature,\n  ModuleRegistry,\n  NumberEditorModule,\n  NumberFilterModule,\n  PaginationModule,\n  PinnedRowModel,\n  PinnedRowModule,\n  PopupComponent,\n  PositionableFeature,\n  ProvidedFilter,\n  QuickFilterModule,\n  ROW_NUMBERS_COLUMN_ID,\n  RefPlaceholder,\n  RenderApiModule,\n  RowApiModule,\n  RowAutoHeightModule,\n  RowContainerCtrl,\n  RowDragModule,\n  RowNode,\n  RowSelectionModule,\n  RowStyleModule,\n  SELECTION_COLUMN_ID,\n  ScrollApiModule,\n  SelectEditorModule,\n  ServerSideTransactionResultStatus,\n  TabGuardClassNames,\n  TabGuardComp,\n  TabGuardCtrl,\n  TabGuardFeature,\n  TextEditorModule,\n  TextFilterModule,\n  TooltipFeature,\n  TooltipModule,\n  TouchListener,\n  UndoRedoEditModule,\n  ValidationModule,\n  ValueCacheModule,\n  VanillaFrameworkOverrides,\n  _BOOLEAN_MIXED_GRID_OPTIONS,\n  ColumnFilterModule as _ColumnFilterModule,\n  ColumnGroupModule as _ColumnGroupModule,\n  ColumnMoveModule as _ColumnMoveModule,\n  CsrmSsrmSharedApiModule as _CsrmSsrmSharedApiModule,\n  DragModule as _DragModule,\n  EditCoreModule as _EditCoreModule,\n  _EmptyArray,\n  EmptyBean as _EmptyBean,\n  FOCUS_MANAGED_CLASS as _FOCUS_MANAGED_CLASS,\n  FilterCoreModule as _FilterCoreModule,\n  FilterValueModule as _FilterValueModule,\n  _GET_ALL_EVENTS,\n  _GET_ALL_GRID_OPTIONS,\n  HeaderComp as _HeaderComp,\n  HorizontalResizeModule as _HorizontalResizeModule,\n  KeyboardNavigationModule as _KeyboardNavigationModule,\n  _PUBLIC_EVENTS,\n  PopupModule as _PopupModule,\n  ROW_ID_PREFIX_BOTTOM_PINNED as _ROW_ID_PREFIX_BOTTOM_PINNED,\n  ROW_ID_PREFIX_ROW_GROUP as _ROW_ID_PREFIX_ROW_GROUP,\n  ROW_ID_PREFIX_TOP_PINNED as _ROW_ID_PREFIX_TOP_PINNED,\n  SharedDragAndDropModule as _SharedDragAndDropModule,\n  SharedExportModule as _SharedExportModule,\n  SharedMenuModule as _SharedMenuModule,\n  SharedRowSelectionModule as _SharedRowSelectionModule,\n  SortModule as _SortModule,\n  SsrmInfiniteSharedApiModule as _SsrmInfiniteSharedApiModule,\n  _addColumnDefaultAndTypes,\n  _addFocusableContainerListener,\n  _addGridCommonParams,\n  _anchorElementToMouseMoveEvent,\n  _applyColumnState,\n  _areCellsEqual,\n  _areColIdsEqual,\n  _areEqual,\n  _asThemeImpl,\n  _batchCall,\n  _canSkipShowingRowGroup,\n  _clearElement,\n  _columnsMatch,\n  _combineAttributesAndGridOptions,\n  _convertColumnEventSourceType,\n  _createCellId,\n  _createColumnTree,\n  _createColumnTreeWithIds,\n  _createElement,\n  _createGlobalRowEvent,\n  _createIcon,\n  _createIconNoSpan,\n  _createRowNodeSibling,\n  _debounce,\n  _defaultComparator,\n  _destroyColumnTree,\n  _doOnce,\n  _downloadFile,\n  _errMsg,\n  _error,\n  _escapeString,\n  _exists,\n  _findFocusableElements,\n  _findNextFocusableElement,\n  _findTabbableParent,\n  _flatten,\n  _focusGridInnerElement,\n  _focusInto,\n  _focusNextGridCoreContainer,\n  _formatNumberCommas,\n  _fuzzySuggestions,\n  _getAbsoluteHeight,\n  _getAbsoluteWidth,\n  _getActiveDomElement,\n  _getAriaPosInSet,\n  _getCallbackForEvent,\n  _getCellByPosition,\n  _getCellCtrlForEventTarget,\n  _getCellPositionForEvent,\n  _getCellRendererDetails,\n  _getCheckboxLocation,\n  _getCheckboxes,\n  _getClientSideRowModel,\n  _getColumnState,\n  _getColumnsFromTree,\n  _getDefaultFloatingFilterType,\n  _getDocument,\n  _getEditorRendererDetails,\n  _getFillHandle,\n  _getFilterDetails,\n  _getFloatingFilterCompDetails,\n  getFloatingFiltersHeight as _getFloatingFiltersHeight,\n  _getGlobalGridOption,\n  _getGrandTotalRow,\n  _getGridRegisteredModules,\n  _getGroupAggFiltering,\n  _getGroupSelection,\n  _getGroupSelectsDescendants,\n  _getGroupTotalRowCallback,\n  _getGroupingApproach,\n  _getHeaderCheckbox,\n  _getHeaderClassesFromColDef,\n  getHeaderRowCount as _getHeaderRowCount,\n  _getInnerCellRendererDetails,\n  _getInnerHeight,\n  _getInnerWidth,\n  _getIsRowSelectable,\n  _getLocaleTextFunc,\n  _getMaxConcurrentDatasourceRequests,\n  _getNormalisedMousePosition,\n  _getPageBody,\n  _getRootNode,\n  _getRowAbove,\n  _getRowBelow,\n  _getRowContainerClass,\n  _getRowContainerOptions,\n  _getRowHeightAsNumber,\n  _getRowHeightForNode,\n  _getRowIdCallback,\n  _getRowNode,\n  _getRowSelectionMode,\n  _getRowSpanContainerClass,\n  _getRowViewportClass,\n  _getServerSideRowModel,\n  _getShouldDisplayTooltip,\n  _getSuppressMultiRanges,\n  _getToolPanelClassesFromColDef,\n  _isAnimateRows,\n  _isCellSelectionEnabled,\n  _isClientSideRowModel,\n  _isColumnMenuAnchoringEnabled,\n  _isColumnsSortingCoupledToGroup,\n  _isDomLayout,\n  _isElementInEventPath,\n  _isEventFromPrintableCharacter,\n  _isFullWidthGroupRow,\n  _isGetRowHeightFunction,\n  _isGroupMultiAutoColumn,\n  _isGroupRowsSticky,\n  _isGroupUseEntireRow,\n  _isIOSUserAgent,\n  _isKeyboardMode,\n  _isLegacyMenuEnabled,\n  _isMultiRowSelection,\n  _isNodeOrElement,\n  _isNothingFocused,\n  _isPromise,\n  _isRowBefore,\n  _isRowSelection,\n  _isSameRow,\n  _isServerSideRowModel,\n  _isShowTooltipWhenTruncated,\n  _isStopPropagationForAgGrid,\n  _isUsingNewCellSelectionAPI,\n  _isUsingNewRowSelectionAPI,\n  _isVisible,\n  _jsonEquals,\n  _last,\n  _loadTemplate,\n  _makeNull,\n  _mergeDeep,\n  _missing,\n  _observeResize,\n  _parseDateTimeFromString,\n  _preInitErrMsg,\n  _preserveRangesWhile,\n  _processOnChange,\n  _radioCssClass,\n  _registerModule,\n  _removeAriaExpanded,\n  _removeAriaSort,\n  _removeFromArray,\n  _removeFromParent,\n  _requestAnimationFrame,\n  _resetColumnState,\n  _selectAllCells,\n  _serialiseDate,\n  _setAriaActiveDescendant,\n  _setAriaChecked,\n  _setAriaColCount,\n  _setAriaColIndex,\n  _setAriaColSpan,\n  _setAriaControls,\n  _setAriaDescribedBy,\n  _setAriaDisabled,\n  _setAriaExpanded,\n  _setAriaHasPopup,\n  _setAriaHidden,\n  _setAriaLabel,\n  _setAriaLabelledBy,\n  _setAriaLevel,\n  _setAriaPosInSet,\n  _setAriaRole,\n  _setAriaRowCount,\n  _setAriaRowIndex,\n  _setAriaSelected,\n  _setAriaSetSize,\n  _setAriaSort,\n  _setColMenuVisible,\n  _setDisabled,\n  _setDisplayed,\n  _setFixedWidth,\n  _setUmd,\n  _setVisible,\n  _shouldDisplayTooltip,\n  _shouldUpdateColVisibilityAfterGroup,\n  _stopPropagationForAgGrid,\n  _toString,\n  _toStringOrNull,\n  _unwrapUserComp,\n  _updateColsMap,\n  _updateColumnState,\n  _waitUntil,\n  _warn,\n  _warnOnce,\n  buttonStyleAlpine,\n  buttonStyleBalham,\n  buttonStyleBase,\n  buttonStyleQuartz,\n  checkboxStyleDefault,\n  colorSchemeDark,\n  colorSchemeDarkBlue,\n  colorSchemeDarkWarm,\n  colorSchemeLight,\n  colorSchemeLightCold,\n  colorSchemeLightWarm,\n  colorSchemeVariable,\n  columnDropStyleBordered,\n  columnDropStylePlain,\n  convertColumnGroupState,\n  convertColumnState,\n  createGrid,\n  createPart,\n  createTheme,\n  iconOverrides,\n  iconSetAlpine,\n  iconSetMaterial,\n  iconSetQuartz,\n  iconSetQuartzBold,\n  iconSetQuartzLight,\n  iconSetQuartzRegular,\n  inputStyleBase,\n  inputStyleBordered,\n  inputStyleUnderlined,\n  isColumn,\n  isColumnGroup,\n  isColumnGroupAutoCol,\n  isColumnSelectionCol,\n  isProvidedColumnGroup,\n  isRowNumberCol,\n  provideGlobalGridOptions,\n  styleMaterial,\n  tabStyleAlpine,\n  tabStyleBase,\n  tabStyleMaterial,\n  tabStyleQuartz,\n  tabStyleRolodex,\n  themeAlpine,\n  themeBalham,\n  themeMaterial,\n  themeQuartz\n};\n"],
  "mappings": "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AAC;AAAA,MACH;AACA,aAAO,eAAe,eAAe,OAAO,eAAe,QAAQ,CAAC;AACpE,aAAO,iBAAiB,eAAe,0BAA0B,QAAQ,CAAC;AAC1E,aAAO;AAAA,IACT;AACA,eAAW,cAAc;AACzB,WAAO;AAAA,EACT;AAlsEA,MACI,WACA,YAmDA,WACA,YAOA,WACA,YAOA,WACA,YAOA,WACA,YAOA,WACA,YAOA,WACA,YAOA,WACA,YAOA,WACA,YAuBA,WACA,YAgBA,WACA,YAqEA,WACA,YAQA,WACA,YAUA,WACA,YAwTA,WACA,YAkBA,WACA,YAgBA,WACA,YA+CA,WACA,YAuBA,WACA,YAoDA,WACA,YAgCAO,UACA,UAkBAC,WACA,WAqCA,OACA,UACA,cACA,YAkDA,OACA,MACA,UACA,KAOA,MACA,UACA,SACA,UACA,aAGA,SAGA,OAGA,KAGA,OAEA,SAQA,WACA,gBAIA,QACA,UACA6B,SAUA,YACA,OACA,UAGA,eACA,aACA,MACA,MACA,WACA,6BAIA,UAWA,kBACA,qCAIA,eACA,eACA,WACA,4BACA,2BACA,QACA,QACA,OACA,OACA,KACA,MACA,UACA,WACA,OACA,kBACA,sBACA,cAWA,WAIA,YAuBA,eACA,SACA,cAIA,aACA,MACA,KACA,gBACA,oBACA,MACA,iBACA,qBAIA5B,UAyEA,YACA,aAUA,YACA,aA0BA,YACA,aAyCA,YACA,aAoHA,YACA,aAyDA,YACA,aAOA,YACA,aACA,WAiBA,YACA,aACA,WA8GA,YACA,aAUA,YACA,aAmOA,YACA,aASA,YACA,WACA,SAkgBA,UA0BA,SACA,aACA,UACA,WACA,QACA,UACA,SACA,SACA,WACA,UACA,QACA,SACA,YACA,QACA,mBACA,UACA,UACA,aACA,UACA,UACA,UACA,aACA,KACA,WACA,OACA6B,cACAC;AAvvEJ;AAAA;AACA,MAAI,YAAY,CAAC;AACjB,MAAI,aAAa;AAmDjB,MAAI,YAAY,CAAC;AACjB,MAAI,aAAa;AAOjB,MAAI,YAAY,CAAC;AACjB,MAAI,aAAa;AAOjB,MAAI,YAAY,CAAC;AACjB,MAAI,aAAa;AAOjB,MAA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GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,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AK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAA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,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG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AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,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,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG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,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,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,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE;AACtR,QAAI,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE;AACtR,QAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC;AAChS,Q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,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,kEAAkE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG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AK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAC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AK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aA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,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,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AAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KA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AAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AA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AC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,gEAAgE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,CAAC;AAAA,MACzwR;AAAA,MACA,KAAK;AAAA,QACH,KAAK;AAAA,QACL,QAAQ,CAAC,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,kEAAkE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,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KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAIA;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,YAAI,OAAO,GAAG;AACZ,aAAG,EAAE,IAAI;AACT,cAAI;AAAA,QACN;AACA,eAAO;AAAA,MACT;AACA,UAAI,CAAC,KAAK,MAAM;AACd,sBAAc;AAAA,MAChB;AACA,eAAS,SAAS,OAAO,KAAK,KAAK;AACjC,YAAI,WAAW,IAAI,WAAW,MAAM;AACpC,YAAI,SAAS,MAAM,SAAS,IAAI;AAChC,YAAI,QAAQ;AACZ,YAAI,UAAU;AACd,iBAAS,KAAK,GAAG,KAAK,IAAI,SAAS,GAAG,MAAM;AAC1C,cAAI,SAAS;AACb,oBAAU;AACV,cAAI,QAAQ,QAAQ;AACpB,cAAI,OAAO,KAAK,IAAI,IAAI,IAAI,SAAS,CAAC;AACtC,mBAAS,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC,GAAG,MAAM,MAAM,MAAM;AAClE,gBAAI,KAAK,KAAK;AACd,gBAAI,KAAK,MAAM,MAAM,EAAE,IAAI;AAC3B,gBAAI,KAAK,IAAI,MAAM,EAAE,IAAI;AACzB,gBAAI,KAAK,KAAK;AACd,gBAAI,KAAK,KAAK;AACd,qBAAS,UAAU,KAAK,WAAW,KAAK;AACxC,iBAAK,KAAK,QAAQ;AAClB,oBAAQ,KAAK;AACb,qBAAS,UAAU,OAAO,MAAM;AAChC,uBAAW,WAAW;AACtB,sBAAU;AAAA,UACZ;AACA,cAAI,MAAM,EAAE,IAAI;AAChB,kBAAQ;AACR,mBAAS;AAAA,QACX;AACA,YAAI,UAAU,GAAG;AACf,cAAI,MAAM,EAAE,IAAI;AAAA,QAClB,OAAO;AACL,cAAI;AAAA,QACN;AACA,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,eAAS,WAAW,OAAO,KAAK,KAAK;AACnC,YAAI,OAAO,IAAI,KAAK;AACpB,eAAO,KAAK,KAAK,OAAO,KAAK,GAAG;AAAA,MAClC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK,KAAK;AAC5C,YAAI;AACJ,YAAI,OAAO,QAAQ,aAAa,SAAS,IAAI;AAC7C,aAAK,QAAQ,aAAa,WAAW,MAAM,IAAI,WAAW,IAAI;AAC5D,gBAAM,YAAY,QAAQ,aAAa,KAAK,GAAG;AAAA,QACjD,WAAW,MAAM,IAAI;AACnB,gBAAM,WAAW,QAAQ,aAAa,KAAK,GAAG;AAAA,QAChD,WAAW,MAAM,MAAM;AACrB,gBAAM,SAAS,QAAQ,aAAa,KAAK,GAAG;AAAA,QAC9C,OAAO;AACL,gBAAM,WAAW,QAAQ,aAAa,KAAK,GAAG;AAAA,QAChD;AACA,eAAO;AAAA,MACT;AACA,eAAS,KAAK,IAAI,IAAI;AACpB,SAAC,QAAQ,aAAa,IAAI;AAC1B,SAAC,QAAQ,aAAa,IAAI;AAAA,MAC5B;AACA,WAAK,UAAU,UAAU,SAAS,QAAQ,IAAI;AAC5C,YAAI,KAAK,IAAI,MAAM,EAAE;AACrB,YAAI,KAAK,GAAG,UAAU,WAAW,EAAE,IAAI;AACvC,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,aAAG,EAAE,IAAI,KAAK,OAAO,IAAI,IAAI,EAAE;AAAA,QACjC;AACA,eAAO;AAAA,MACT;AACA,WAAK,UAAU,SAAS,SAAS,OAAO,IAAI,IAAI,IAAI;AAClD,YAAI,OAAO,KAAK,OAAO,KAAK,EAAG,QAAO;AACtC,YAAI,KAAK;AACT,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,iBAAO,KAAK,MAAM,KAAK,KAAK;AAC5B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AACA,WAAK,UAAU,UAAU,SAAS,QAAQ,KAAK,KAAK,KAAK,MAAM,MAAM,IAAI;AACvE,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,eAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AACtB,eAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AAAA,QACxB;AAAA,MACF;AACA,WAAK,UAAU,YAAY,SAAS,UAAU,KAAK,KAAK,MAAM,MAAM,IAAI,KAAK;AAC3E,aAAK,QAAQ,KAAK,KAAK,KAAK,MAAM,MAAM,EAAE;AAC1C,iBAAS,KAAK,GAAG,KAAK,IAAI,OAAO,GAAG;AAClC,cAAI,KAAK,MAAM;AACf,cAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;AACrC,cAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;AACrC,mBAAS,KAAK,GAAG,KAAK,IAAI,MAAM,IAAI;AAClC,gBAAI,SAAS;AACb,gBAAI,SAAS;AACb,qBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,kBAAI,MAAM,KAAK,KAAK,EAAE;AACtB,kBAAIC,OAAM,KAAK,KAAK,EAAE;AACtB,kBAAIC,MAAK,KAAK,KAAK,KAAK,EAAE;AAC1B,kBAAI,KAAK,KAAK,KAAK,KAAK,EAAE;AAC1B,kBAAI,KAAK,SAASA,MAAK,SAAS;AAChC,mBAAK,SAAS,KAAK,SAASA;AAC5B,cAAAA,MAAK;AACL,mBAAK,KAAK,EAAE,IAAI,MAAMA;AACtB,mBAAK,KAAK,EAAE,IAAID,OAAM;AACtB,mBAAK,KAAK,KAAK,EAAE,IAAI,MAAMC;AAC3B,mBAAK,KAAK,KAAK,EAAE,IAAID,OAAM;AAC3B,kBAAI,OAAO,IAAI;AACb,qBAAK,QAAQ,SAAS,QAAQ;AAC9B,yBAAS,QAAQ,SAAS,QAAQ;AAClC,yBAAS;AAAA,cACX;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,WAAK,UAAU,cAAc,SAAS,YAAY,IAAI1N,KAAI;AACxD,YAAI,KAAK,KAAK,IAAIA,KAAI,EAAE,IAAI;AAC5B,YAAI,MAAM,KAAK;AACf,YAAI,KAAK;AACT,aAAK,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK,OAAO,GAAG;AACvC;AAAA,QACF;AACA,eAAO,KAAK,KAAK,IAAI;AAAA,MACvB;AACA,WAAK,UAAU,YAAY,SAAS,UAAU,KAAK,KAAK,IAAI;AAC1D,YAAI,MAAM,EAAG;AACb,iBAAS,KAAK,GAAG,KAAK,KAAK,GAAG,MAAM;AAClC,cAAI,KAAK,IAAI,EAAE;AACf,cAAI,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC;AACzB,cAAI,KAAK,KAAK,CAAC,IAAI;AACnB,eAAK,IAAI,EAAE;AACX,cAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;AAC1B,cAAI,KAAK,KAAK,CAAC,IAAI,CAAC;AAAA,QACtB;AAAA,MACF;AACA,WAAK,UAAU,eAAe,SAAS,aAAa,IAAI,IAAI;AAC1D,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,KAAK,GAAG,MAAM;AAClC,cAAI,KAAK,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,OAAO,KAAK,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI;AAChF,aAAG,EAAE,IAAI,KAAK;AACd,cAAI,KAAK,UAAU;AACjB,oBAAQ;AAAA,UACV,OAAO;AACL,oBAAQ,KAAK,WAAW;AAAA,UAC1B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,WAAK,UAAU,aAAa,SAAS,WAAW,IAAI,KAAK,KAAK,IAAI;AAChE,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,KAAK,MAAM;AAC/B,kBAAQ,SAAS,GAAG,EAAE,IAAI;AAC1B,cAAI,IAAI,EAAE,IAAI,QAAQ;AACtB,kBAAQ,UAAU;AAClB,cAAI,IAAI,KAAK,CAAC,IAAI,QAAQ;AAC1B,kBAAQ,UAAU;AAAA,QACpB;AACA,aAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI;AAChC,cAAI,EAAE,IAAI;AAAA,QACZ;AACA,QAAAkM,SAAQ,UAAU,CAAC;AACnB,QAAAA,UAAS,QAAQ,CAAC,UAAU,CAAC;AAAA,MAC/B;AACA,WAAK,UAAU,OAAO,SAAS,KAAK,IAAI;AACtC,YAAI,KAAK,IAAI,MAAM,EAAE;AACrB,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,aAAG,EAAE,IAAI;AAAA,QACX;AACA,eAAO;AAAA,MACT;AACA,WAAK,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI,KAAK;AAC/C,YAAI,KAAK,IAAI,KAAK,YAAY,GAAG,QAAQ,GAAG,MAAM;AAClD,YAAI,MAAM,KAAK,QAAQ,EAAE;AACzB,YAAIlE,MAAK,KAAK,KAAK,EAAE;AACrB,YAAI,MAAM,IAAI,MAAM,EAAE;AACtB,YAAI,OAAO,IAAI,MAAM,EAAE;AACvB,YAAI,OAAO,IAAI,MAAM,EAAE;AACvB,YAAI,OAAO,IAAI,MAAM,EAAE;AACvB,YAAI,QAAQ,IAAI,MAAM,EAAE;AACxB,YAAI,QAAQ,IAAI,MAAM,EAAE;AACxB,YAAI,OAAO,IAAI;AACf,aAAK,SAAS;AACd,aAAK,WAAW,GAAG,OAAO,GAAG,QAAQ,KAAK,EAAE;AAC5C,aAAK,WAAW,GAAG,OAAO,GAAG,QAAQ,MAAM,EAAE;AAC7C,aAAK,UAAU,KAAKA,KAAI,MAAM,MAAM,IAAI,GAAG;AAC3C,aAAK,UAAU,MAAMA,KAAI,OAAO,OAAO,IAAI,GAAG;AAC9C,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,cAAI,KAAK,KAAK,EAAE,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE;AACnD,eAAK,EAAE,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE;AACrD,eAAK,EAAE,IAAI;AAAA,QACb;AACA,aAAK,UAAU,MAAM,MAAM,EAAE;AAC7B,aAAK,UAAU,MAAM,MAAM,MAAMA,KAAI,IAAI,GAAG;AAC5C,aAAK,UAAU,MAAMA,KAAI,EAAE;AAC3B,aAAK,aAAa,MAAM,EAAE;AAC1B,YAAI,WAAW,GAAG,WAAW,GAAG;AAChC,YAAI,SAAS,GAAG,SAAS,GAAG;AAC5B,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,OAAO,QAAQ,aAAa,SAAS,IAAI,MAAM;AAC/D,eAAO,KAAK,MAAM,KAAK,GAAG;AAAA,MAC5B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,OAAO,QAAQ,aAAa,SAAS,IAAI,MAAM;AAC/D,eAAO,WAAW,QAAQ,aAAa,KAAK,GAAG;AAAA,MACjD;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,KAAK,QAAQ,WAAW;AAAA,MACpD;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAkE,SAAQ,OAAO,QAAQ,QAAQ;AAC/B,QAAAA,SAAQ,MAAM,QAAQ;AACtB,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACxD,cAAI,OAAO,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AACjD,cAAI,MAAM,KAAK,aAAa,QAAQ;AACpC,oBAAU;AACV,mBAAS,KAAK,WAAW;AACzB,mBAAS,OAAO;AAChB,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AAAA,QACzC;AACA,YAAI,UAAU,GAAG;AACf,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI;AAClC,WAAC,QAAQ,aAAa;AAAA,QACxB;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AACA,SAAG,UAAU,MAAM,SAAS,MAAM;AAChC,eAAO,KAAK,IAAI,QAAQ,WAAW;AAAA,MACrC;AACA,SAAG,UAAU,OAAO,SAAS,OAAO;AAClC,eAAO,KAAK,KAAK,KAAK,MAAM,CAAC;AAAA,MAC/B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,YAAI,KAAK,WAAW,GAAG;AACvB,YAAI,GAAG,WAAW,EAAG,QAAO,IAAI,GAAG,CAAC;AACpC,YAAI,MAAM,QAAQ;AAClB,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM,MAAM,IAAI,IAAI,GAAG;AACtD,cAAI,GAAG,EAAE,MAAM,EAAG;AAAA,QACpB;AACA,YAAI,EAAE,KAAK,GAAG,QAAQ;AACpB,mBAAS,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG;AAC5D,gBAAI,GAAG,EAAE,MAAM,EAAG;AAClB,kBAAM,IAAI,IAAI,EAAE;AAAA,UAClB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,MAAM;AAC1C,QAAAA,SAAQ,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC7C,YAAI,KAAK,OAAO;AAChB,YAAI,MAAM,OAAO,MAAM;AACvB,YAAI,YAAY,aAAa,KAAK,MAAM,KAAK;AAC7C,YAAI;AACJ,YAAI,OAAO,GAAG;AACZ,cAAI,QAAQ;AACZ,eAAK,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACpD,gBAAI,YAAY,QAAQ,aAAa,MAAM,EAAE,IAAI;AACjD,gBAAI,OAAO,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK,YAAY;AAC7D,aAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AACvC,oBAAQ,aAAa,KAAK;AAAA,UAC5B;AACA,cAAI,OAAO;AACT,aAAC,QAAQ,aAAa,MAAM,EAAE,IAAI;AAClC,aAAC,QAAQ,aAAa;AAAA,UACxB;AAAA,QACF;AACA,YAAI,OAAO,GAAG;AACZ,eAAK,MAAM,QAAQ,aAAa,SAAS,GAAG,MAAM,GAAG,MAAM;AACzD,aAAC,QAAQ,aAAa,MAAM,KAAK,EAAE,KAAK,QAAQ,aAAa,MAAM,EAAE;AAAA,UACvE;AACA,eAAK,KAAK,GAAG,KAAK,IAAI,MAAM;AAC1B,aAAC,QAAQ,aAAa,MAAM,EAAE,IAAI;AAAA,UACpC;AACA,WAAC,QAAQ,aAAa,UAAU;AAAA,QAClC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM;AACxC,QAAAA,UAAS,QAAQ,aAAa,aAAa,CAAC;AAC5C,eAAO,KAAK,OAAO,IAAI;AAAA,MACzB;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,MAAM,MAAM,UAAU;AAC1D,QAAAA,SAAQ,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC7C,YAAI;AACJ,YAAI,MAAM;AACR,gBAAM,OAAO,OAAO,MAAM;AAAA,QAC5B,OAAO;AACL,eAAK;AAAA,QACP;AACA,YAAI,KAAK,OAAO;AAChB,YAAI,KAAK,KAAK,KAAK,OAAO,MAAM,KAAK,QAAQ,aAAa,MAAM;AAChE,YAAI,OAAO,WAAW,aAAa,MAAM;AACzC,YAAI,cAAc;AAClB,cAAM;AACN,aAAK,KAAK,IAAI,GAAG,EAAE;AACnB,YAAI,aAAa;AACf,mBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,wBAAY,MAAM,EAAE,KAAK,QAAQ,aAAa,MAAM,EAAE;AAAA,UACxD;AACA,sBAAY,SAAS;AAAA,QACvB;AACA,YAAI,OAAO,EAAG;AAAA,kBACJ,QAAQ,aAAa,SAAS,IAAI;AAC1C,WAAC,QAAQ,aAAa,UAAU;AAChC,eAAK,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACpD,aAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,QAAQ,aAAa,MAAM,KAAK,EAAE;AAAA,UACvE;AAAA,QACF,OAAO;AACL,WAAC,QAAQ,aAAa,MAAM,CAAC,IAAI;AACjC,WAAC,QAAQ,aAAa,SAAS;AAAA,QACjC;AACA,YAAI,QAAQ;AACZ,aAAK,MAAM,QAAQ,aAAa,SAAS,GAAG,MAAM,MAAM,UAAU,KAAK,MAAM,KAAK,MAAM;AACtF,cAAI,QAAQ,QAAQ,aAAa,MAAM,EAAE,IAAI;AAC7C,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,SAAS,KAAK,KAAK,SAAS;AAC9D,kBAAQ,OAAO;AAAA,QACjB;AACA,YAAI,eAAe,UAAU,GAAG;AAC9B,sBAAY,MAAM,YAAY,QAAQ,IAAI;AAAA,QAC5C;AACA,aAAK,QAAQ,aAAa,WAAW,GAAG;AACtC,WAAC,QAAQ,aAAa,MAAM,CAAC,IAAI;AACjC,WAAC,QAAQ,aAAa,SAAS;AAAA,QACjC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM,MAAM,UAAU;AACxD,QAAAA,UAAS,QAAQ,aAAa,aAAa,CAAC;AAC5C,eAAO,KAAK,OAAO,MAAM,MAAM,QAAQ;AAAA,MACzC;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,MAAM;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,IAAI;AAAA,MAChC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM;AACxC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,MAAM;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,IAAI;AAAA,MAChC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM;AACxC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAA,SAAQ,OAAO,QAAQ,YAAY,OAAO,CAAC;AAC3C,YAAI,KAAK,MAAM;AACf,YAAI,MAAM,MAAM,MAAM;AACtB,YAAI,KAAK,KAAK;AACd,aAAK,QAAQ,aAAa,UAAU,GAAI,QAAO;AAC/C,YAAI,MAAM,QAAQ,aAAa,MAAM,EAAE;AACvC,eAAO,CAAC,EAAE,KAAK;AAAA,MACjB;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,MAAM;AAC1C,QAAAA,SAAQ,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC7C,YAAI,KAAK,OAAO;AAChB,YAAI,MAAM,OAAO,MAAM;AACvB,QAAAA,UAAS,QAAQ,aAAa,aAAa,GAAG,yCAAyC;AACvF,aAAK,QAAQ,aAAa,UAAU,IAAI;AACtC,iBAAO,QAAQ;AAAA,QACjB;AACA,YAAI,OAAO,GAAG;AACZ;AAAA,QACF;AACA,SAAC,QAAQ,aAAa,SAAS,KAAK,IAAI,KAAK,QAAQ,aAAa,MAAM;AACxE,YAAI,OAAO,GAAG;AACZ,cAAI,OAAO,WAAW,aAAa,MAAM;AACzC,WAAC,QAAQ,aAAa,OAAO,QAAQ,aAAa,SAAS,CAAC,KAAK;AAAA,QACnE;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM;AACxC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAA,SAAQ,OAAO,QAAQ,QAAQ;AAC/B,QAAAA,SAAQ,MAAM,QAAQ;AACtB,YAAI,MAAM,EAAG,QAAO,KAAK,MAAM,CAAC,GAAG;AACnC,aAAK,QAAQ,aAAa,aAAa,GAAG;AACxC,eAAK,QAAQ,aAAa,WAAW,OAAO,QAAQ,aAAa,MAAM,CAAC,IAAI,KAAK,KAAK;AACpF,aAAC,QAAQ,aAAa,MAAM,CAAC,IAAI,QAAQ,QAAQ,aAAa,MAAM,CAAC,IAAI;AACzE,aAAC,QAAQ,aAAa,WAAW;AACjC,mBAAO,QAAQ;AAAA,UACjB;AACA,WAAC,QAAQ,aAAa,WAAW;AACjC,eAAK,MAAM,GAAG;AACd,WAAC,QAAQ,aAAa,WAAW;AACjC,iBAAO,QAAQ;AAAA,QACjB;AACA,eAAO,KAAK,OAAO,GAAG;AAAA,MACxB;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,SAAC,QAAQ,aAAa,MAAM,CAAC,KAAK;AAClC,iBAAS,KAAK,GAAG,MAAM,QAAQ,aAAa,WAAW,QAAQ,aAAa,MAAM,EAAE,KAAK,UAAU,MAAM;AACvG,WAAC,QAAQ,aAAa,MAAM,EAAE,KAAK;AACnC,cAAI,QAAQ,QAAQ,aAAa,SAAS,GAAG;AAC3C,aAAC,QAAQ,aAAa,MAAM,KAAK,CAAC,IAAI;AAAA,UACxC,OAAO;AACL,aAAC,QAAQ,aAAa,MAAM,KAAK,CAAC;AAAA,UACpC;AAAA,QACF;AACA,SAAC,QAAQ,aAAa,SAAS,KAAK,KAAK,QAAQ,aAAa,QAAQ,KAAK,CAAC;AAC5E,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAA,SAAQ,OAAO,QAAQ,QAAQ;AAC/B,QAAAA,SAAQ,MAAM,QAAQ;AACtB,YAAI,MAAM,EAAG,QAAO,KAAK,MAAM,CAAC,GAAG;AACnC,aAAK,QAAQ,aAAa,aAAa,GAAG;AACxC,WAAC,QAAQ,aAAa,WAAW;AACjC,eAAK,MAAM,GAAG;AACd,WAAC,QAAQ,aAAa,WAAW;AACjC,iBAAO,QAAQ;AAAA,QACjB;AACA,SAAC,QAAQ,aAAa,MAAM,CAAC,KAAK;AAClC,aAAK,QAAQ,aAAa,WAAW,MAAM,QAAQ,aAAa,MAAM,CAAC,IAAI,GAAG;AAC5E,WAAC,QAAQ,aAAa,MAAM,CAAC,IAAI,EAAE,QAAQ,aAAa,MAAM,CAAC;AAC/D,WAAC,QAAQ,aAAa,WAAW;AAAA,QACnC,OAAO;AACL,mBAAS,KAAK,GAAG,MAAM,QAAQ,aAAa,WAAW,QAAQ,aAAa,MAAM,EAAE,IAAI,GAAG,MAAM;AAC/F,aAAC,QAAQ,aAAa,MAAM,EAAE,KAAK;AACnC,aAAC,QAAQ,aAAa,MAAM,KAAK,CAAC,KAAK;AAAA,UACzC;AAAA,QACF;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AACA,SAAG,UAAU,OAAO,SAAS,OAAO;AAClC,SAAC,QAAQ,aAAa,WAAW;AACjC,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,MAAM,SAAS,MAAM;AAChC,eAAO,KAAK,MAAM,EAAE,KAAK;AAAA,MAC3B;AACA,SAAG,UAAU,eAAe,SAAS,aAAa,KAAK,KAAK,OAAO;AACjE,YAAI,MAAM,IAAI,SAAS;AACvB,YAAI;AACJ,aAAK,QAAQ,GAAG;AAChB,YAAI;AACJ,YAAI,QAAQ;AACZ,aAAK,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AAClC,iBAAO,QAAQ,aAAa,MAAM,KAAK,KAAK,IAAI,KAAK;AACrD,cAAI,SAAS,IAAI,MAAM,EAAE,IAAI,KAAK;AAClC,gBAAM,QAAQ;AACd,mBAAS,MAAM,OAAO,QAAQ,WAAW;AACzC,WAAC,QAAQ,aAAa,MAAM,KAAK,KAAK,IAAI,KAAK;AAAA,QACjD;AACA,eAAO,MAAM,QAAQ,aAAa,SAAS,OAAO,MAAM;AACtD,iBAAO,QAAQ,aAAa,MAAM,KAAK,KAAK,IAAI,KAAK;AACrD,kBAAQ,MAAM;AACd,WAAC,QAAQ,aAAa,MAAM,KAAK,KAAK,IAAI,KAAK;AAAA,QACjD;AACA,YAAI,UAAU,EAAG,QAAO,KAAK,MAAM;AACnC,QAAAA,SAAQ,UAAU,EAAE;AACpB,gBAAQ;AACR,aAAK,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACpD,eAAK,GAAG,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AAC9C,kBAAQ,MAAM;AACd,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AAAA,QACzC;AACA,SAAC,QAAQ,aAAa,WAAW;AACjC,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,KAAK,MAAM;AACnD,YAAI,SAAS,QAAQ,aAAa,SAAS,IAAI;AAC/C,YAAI,KAAK,KAAK,MAAM;AACpB,YAAI,KAAK;AACT,YAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI;AACpC,YAAI,UAAU,KAAK,WAAW,GAAG;AACjC,gBAAQ,KAAK;AACb,YAAI,UAAU,GAAG;AACf,eAAK,GAAG,MAAM,KAAK;AACnB,aAAG,OAAO,KAAK;AACf,gBAAM,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI;AAAA,QAClC;AACA,YAAIlM,MAAK,GAAG,SAAS,GAAG;AACxB,YAAI;AACJ,YAAI,SAAS,OAAO;AAClB,eAAK,IAAI,GAAG,IAAI;AAChB,aAAG,SAASA,MAAK;AACjB,aAAG,QAAQ,IAAI,MAAM,GAAG,MAAM;AAC9B,mBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,eAAG,MAAM,EAAE,IAAI;AAAA,UACjB;AAAA,QACF;AACA,YAAI,OAAO,GAAG,MAAM,EAAE,aAAa,IAAI,GAAGA,GAAE;AAC5C,YAAI,KAAK,aAAa,GAAG;AACvB,eAAK;AACL,cAAI,IAAI;AACN,eAAG,MAAMA,GAAE,IAAI;AAAA,UACjB;AAAA,QACF;AACA,iBAAS,KAAKA,MAAK,GAAG,MAAM,GAAG,MAAM;AACnC,cAAI,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,IAAI,KAAK,YAAY,GAAG,MAAM,GAAG,SAAS,KAAK,CAAC,IAAI;AACrF,eAAK,KAAK,IAAI,KAAK,MAAM,GAAG,QAAQ;AACpC,aAAG,aAAa,IAAI,IAAI,EAAE;AAC1B,iBAAO,GAAG,aAAa,GAAG;AACxB;AACA,eAAG,WAAW;AACd,eAAG,aAAa,IAAI,GAAG,EAAE;AACzB,gBAAI,CAAC,GAAG,OAAO,GAAG;AAChB,iBAAG,YAAY;AAAA,YACjB;AAAA,UACF;AACA,cAAI,IAAI;AACN,eAAG,MAAM,EAAE,IAAI;AAAA,UACjB;AAAA,QACF;AACA,YAAI,IAAI;AACN,aAAG,MAAM;AAAA,QACX;AACA,WAAG,MAAM;AACT,YAAI,SAAS,SAAS,UAAU,GAAG;AACjC,aAAG,OAAO,KAAK;AAAA,QACjB;AACA,eAAO;AAAA,UACL,KAAK,MAAM;AAAA,UACX,KAAK;AAAA,QACP;AAAA,MACF;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK,MAAM,UAAU;AACzD,QAAAkM,SAAQ,CAAC,IAAI,OAAO,CAAC;AACrB,YAAI,KAAK,OAAO,GAAG;AACjB,iBAAO;AAAA,YACL,KAAK,IAAI,GAAG,CAAC;AAAA,YACb,KAAK,IAAI,GAAG,CAAC;AAAA,UACf;AAAA,QACF;AACA,YAAI,KAAKkB,MAAK;AACd,aAAK,QAAQ,aAAa,aAAa,KAAK,IAAI,aAAa,GAAG;AAC9D,gBAAM,KAAK,IAAI,EAAE,OAAO,KAAK,IAAI;AACjC,cAAI,SAAS,OAAO;AAClB,kBAAM,IAAI,IAAI,IAAI;AAAA,UACpB;AACA,cAAI,SAAS,OAAO;AAClB,YAAAA,OAAM,IAAI,IAAI,IAAI;AAClB,gBAAI,YAAYA,KAAI,aAAa,GAAG;AAClC,cAAAA,KAAI,KAAK,GAAG;AAAA,YACd;AAAA,UACF;AACA,iBAAO;AAAA,YACL;AAAA,YACA,KAAAA;AAAA,UACF;AAAA,QACF;AACA,aAAK,QAAQ,aAAa,aAAa,KAAK,IAAI,aAAa,GAAG;AAC9D,gBAAM,KAAK,OAAO,IAAI,IAAI,GAAG,IAAI;AACjC,cAAI,SAAS,OAAO;AAClB,kBAAM,IAAI,IAAI,IAAI;AAAA,UACpB;AACA,iBAAO;AAAA,YACL;AAAA,YACA,KAAK,IAAI;AAAA,UACX;AAAA,QACF;AACA,cAAM,QAAQ,aAAa,WAAW,IAAI,cAAc,GAAG;AACzD,gBAAM,KAAK,IAAI,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI;AACvC,cAAI,SAAS,OAAO;AAClB,YAAAA,OAAM,IAAI,IAAI,IAAI;AAClB,gBAAI,YAAYA,KAAI,aAAa,GAAG;AAClC,cAAAA,KAAI,KAAK,GAAG;AAAA,YACd;AAAA,UACF;AACA,iBAAO;AAAA,YACL,KAAK,IAAI;AAAA,YACT,KAAAA;AAAA,UACF;AAAA,QACF;AACA,YAAI,IAAI,UAAU,QAAQ,aAAa,UAAU,KAAK,IAAI,GAAG,IAAI,GAAG;AAClE,iBAAO;AAAA,YACL,KAAK,IAAI,GAAG,CAAC;AAAA,YACb,KAAK,QAAQ;AAAA,UACf;AAAA,QACF;AACA,YAAI,IAAI,WAAW,GAAG;AACpB,cAAI,SAAS,OAAO;AAClB,mBAAO;AAAA,cACL,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,cAC3B,KAAK;AAAA,YACP;AAAA,UACF;AACA,cAAI,SAAS,OAAO;AAClB,mBAAO;AAAA,cACL,KAAK;AAAA,cACL,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,YACrC;AAAA,UACF;AACA,iBAAO;AAAA,YACL,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,YAC3B,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,UACrC;AAAA,QACF;AACA,eAAO,KAAK,SAAS,KAAK,IAAI;AAAA,MAChC;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE;AAAA,MACxC;AACA,SAAG,UAAU,MAAM,SAASA,KAAI,KAAK;AACnC,eAAO,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE;AAAA,MACxC;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,OAAO,KAAK,OAAO,IAAI,EAAE;AAAA,MACvC;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,KAAK;AAC7C,YAAI,KAAK,KAAK,OAAO,GAAG;AACxB,YAAI,GAAG,IAAI,OAAO,EAAG,QAAO,GAAG;AAC/B,YAAIA,OAAM,GAAG,IAAI,aAAa,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,GAAG;AACxD,YAAI,OAAO,IAAI,MAAM,CAAC;AACtB,YAAI,MAAM,IAAI,MAAM,CAAC;AACrB,YAAI,MAAMA,KAAI,IAAI,IAAI;AACtB,YAAI,MAAM,KAAK,QAAQ,KAAK,QAAQ,EAAG,QAAO,GAAG;AACjD,eAAO,GAAG,IAAI,aAAa,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;AAAA,MACjE;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,QAAAlB,SAAQ,OAAO,QAAQ;AACvB,YAAI,MAAM,KAAK,MAAM;AACrB,YAAI,MAAM;AACV,iBAAS,MAAM,QAAQ,aAAa,SAAS,GAAG,MAAM,GAAG,MAAM;AAC7D,iBAAO,KAAK,QAAQ,QAAQ,aAAa,MAAM,EAAE,IAAI,MAAM;AAAA,QAC7D;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAA,SAAQ,OAAO,QAAQ;AACvB,YAAI,QAAQ;AACZ,iBAAS,MAAM,QAAQ,aAAa,SAAS,GAAG,MAAM,GAAG,MAAM;AAC7D,cAAI,OAAO,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK,QAAQ;AACzD,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK,MAAM;AAC7C,kBAAQ,KAAK;AAAA,QACf;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,IAAI;AACpC,QAAAA,SAAQ,GAAG,aAAa,CAAC;AACzB,QAAAA,SAAQ,CAAC,GAAG,OAAO,CAAC;AACpB,YAAI,KAAK,QAAQ;AACjB,YAAI,KAAK,GAAG,MAAM;AAClB,YAAI,GAAG,aAAa,GAAG;AACrB,eAAK,GAAG,KAAK,EAAE;AAAA,QACjB,OAAO;AACL,eAAK,GAAG,MAAM;AAAA,QAChB;AACA,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK;AACT,eAAO,GAAG,OAAO,KAAK,GAAG,OAAO,GAAG;AACjC,aAAG,OAAO,CAAC;AACX,aAAG,OAAO,CAAC;AACX,YAAE;AAAA,QACJ;AACA,YAAI,KAAK,GAAG,MAAM;AAClB,YAAI,KAAK,GAAG,MAAM;AAClB,eAAO,CAAC,GAAG,OAAO,GAAG;AACnB,mBAAS,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,OAAO,EAAG;AAC9E,cAAI,KAAK,GAAG;AACV,eAAG,OAAO,EAAE;AACZ,mBAAO,OAAO,GAAG;AACf,kBAAI,GAAG,MAAM,KAAK,GAAG,MAAM,GAAG;AAC5B,mBAAG,KAAK,EAAE;AACV,mBAAG,KAAK,EAAE;AAAA,cACZ;AACA,iBAAG,OAAO,CAAC;AACX,iBAAG,OAAO,CAAC;AAAA,YACb;AAAA,UACF;AACA,mBAAS,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,OAAO,EAAG;AAC9E,cAAI,KAAK,GAAG;AACV,eAAG,OAAO,EAAE;AACZ,mBAAO,OAAO,GAAG;AACf,kBAAI,GAAG,MAAM,KAAK,GAAG,MAAM,GAAG;AAC5B,mBAAG,KAAK,EAAE;AACV,mBAAG,KAAK,EAAE;AAAA,cACZ;AACA,iBAAG,OAAO,CAAC;AACX,iBAAG,OAAO,CAAC;AAAA,YACb;AAAA,UACF;AACA,cAAI,GAAG,IAAI,EAAE,KAAK,GAAG;AACnB,eAAG,KAAK,EAAE;AACV,eAAG,KAAK,EAAE;AACV,eAAG,KAAK,EAAE;AAAA,UACZ,OAAO;AACL,eAAG,KAAK,EAAE;AACV,eAAG,KAAK,EAAE;AACV,eAAG,KAAK,EAAE;AAAA,UACZ;AAAA,QACF;AACA,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG;AAAA,UACH,KAAK,GAAG,OAAO,EAAE;AAAA,QACnB;AAAA,MACF;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,IAAI;AACxC,QAAAA,SAAQ,GAAG,aAAa,CAAC;AACzB,QAAAA,SAAQ,CAAC,GAAG,OAAO,CAAC;AACpB,YAAI,KAAK,QAAQ;AACjB,YAAI,KAAK,GAAG,MAAM;AAClB,YAAI,GAAG,aAAa,GAAG;AACrB,eAAK,GAAG,KAAK,EAAE;AAAA,QACjB,OAAO;AACL,eAAK,GAAG,MAAM;AAAA,QAChB;AACA,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAIe,OAAM,IAAI,GAAG,CAAC;AAClB,YAAI,QAAQ,GAAG,MAAM;AACrB,eAAO,GAAG,KAAK,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG;AACvC,mBAAS,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,OAAO,EAAG;AAC9E,cAAI,KAAK,GAAG;AACV,eAAG,OAAO,EAAE;AACZ,mBAAO,OAAO,GAAG;AACf,kBAAI,GAAG,MAAM,GAAG;AACd,mBAAG,KAAK,KAAK;AAAA,cACf;AACA,iBAAG,OAAO,CAAC;AAAA,YACb;AAAA,UACF;AACA,mBAAS,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,OAAO,EAAG;AAC9E,cAAI,KAAK,GAAG;AACV,eAAG,OAAO,EAAE;AACZ,mBAAO,OAAO,GAAG;AACf,kBAAIA,KAAI,MAAM,GAAG;AACf,gBAAAA,KAAI,KAAK,KAAK;AAAA,cAChB;AACA,cAAAA,KAAI,OAAO,CAAC;AAAA,YACd;AAAA,UACF;AACA,cAAI,GAAG,IAAI,EAAE,KAAK,GAAG;AACnB,eAAG,KAAK,EAAE;AACV,eAAG,KAAKA,IAAG;AAAA,UACb,OAAO;AACL,eAAG,KAAK,EAAE;AACV,YAAAA,KAAI,KAAK,EAAE;AAAA,UACb;AAAA,QACF;AACA,YAAI;AACJ,YAAI,GAAG,KAAK,CAAC,MAAM,GAAG;AACpB,gBAAM;AAAA,QACR,OAAO;AACL,gBAAMA;AAAA,QACR;AACA,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,KAAK,EAAE;AAAA,QACb;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,YAAI,KAAK,OAAO,EAAG,QAAO,IAAI,IAAI;AAClC,YAAI,IAAI,OAAO,EAAG,QAAO,KAAK,IAAI;AAClC,YAAI,KAAK,KAAK,MAAM;AACpB,YAAI,KAAK,IAAI,MAAM;AACnB,WAAG,WAAW;AACd,WAAG,WAAW;AACd,iBAAS,QAAQ,GAAG,GAAG,OAAO,KAAK,GAAG,OAAO,GAAG,SAAS;AACvD,aAAG,OAAO,CAAC;AACX,aAAG,OAAO,CAAC;AAAA,QACb;AACA,WAAG;AACD,iBAAO,GAAG,OAAO,GAAG;AAClB,eAAG,OAAO,CAAC;AAAA,UACb;AACA,iBAAO,GAAG,OAAO,GAAG;AAClB,eAAG,OAAO,CAAC;AAAA,UACb;AACA,cAAI,KAAK,GAAG,IAAI,EAAE;AAClB,cAAI,KAAK,GAAG;AACV,gBAAI,KAAK;AACT,iBAAK;AACL,iBAAK;AAAA,UACP,WAAW,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG;AACvC;AAAA,UACF;AACA,aAAG,KAAK,EAAE;AAAA,QACZ,SAAS;AACT,eAAO,GAAG,OAAO,KAAK;AAAA,MACxB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG;AAAA,MAClC;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,iBAAS,QAAQ,aAAa,MAAM,CAAC,IAAI,OAAO;AAAA,MAClD;AACA,SAAG,UAAU,QAAQ,SAAS,QAAQ;AACpC,iBAAS,QAAQ,aAAa,MAAM,CAAC,IAAI,OAAO;AAAA,MAClD;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,gBAAQ,QAAQ,aAAa,MAAM,CAAC,IAAI;AAAA,MAC1C;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAf,SAAQ,OAAO,QAAQ,QAAQ;AAC/B,YAAI,KAAK,MAAM;AACf,YAAI,MAAM,MAAM,MAAM;AACtB,YAAI,KAAK,KAAK;AACd,aAAK,QAAQ,aAAa,UAAU,IAAI;AACtC,eAAK,QAAQ,KAAK,CAAC;AACnB,WAAC,QAAQ,aAAa,MAAM,EAAE,KAAK;AACnC,iBAAO,QAAQ;AAAA,QACjB;AACA,YAAI,QAAQ;AACZ,iBAAS,KAAK,IAAI,UAAU,KAAK,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACxE,cAAI,MAAM,QAAQ,aAAa,MAAM,EAAE,IAAI;AAC3C,gBAAM;AACN,kBAAQ,OAAO;AACf,gBAAM;AACN,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI;AAAA,QACpC;AACA,YAAI,UAAU,GAAG;AACf,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI;AAClC,WAAC,QAAQ,aAAa;AAAA,QACxB;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,gBAAQ,QAAQ,aAAa,WAAW,MAAM,QAAQ,aAAa,MAAM,CAAC,MAAM;AAAA,MAClF;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,YAAI,WAAW,MAAM;AACrB,aAAK,QAAQ,aAAa,aAAa,KAAK,CAAC,SAAU,QAAO;AAC9D,aAAK,QAAQ,aAAa,aAAa,KAAK,SAAU,QAAO;AAC7D,aAAK,MAAM;AACX,YAAI;AACJ,aAAK,QAAQ,aAAa,SAAS,GAAG;AACpC,gBAAM;AAAA,QACR,OAAO;AACL,cAAI,UAAU;AACZ,kBAAM,CAAC;AAAA,UACT;AACA,UAAAA,SAAQ,OAAO,UAAU,mBAAmB;AAC5C,cAAI,MAAM,QAAQ,aAAa,MAAM,CAAC,IAAI;AAC1C,gBAAM,OAAO,MAAM,IAAI,KAAK,MAAM,KAAK;AAAA,QACzC;AACA,aAAK,QAAQ,aAAa,aAAa,EAAG,QAAO,CAAC,MAAM;AACxD,eAAO;AAAA,MACT;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,aAAK,QAAQ,aAAa,aAAa,KAAK,IAAI,aAAa,EAAG,QAAO;AACvE,aAAK,QAAQ,aAAa,aAAa,KAAK,IAAI,aAAa,EAAG,QAAO;AACvE,YAAI,MAAM,KAAK,KAAK,GAAG;AACvB,aAAK,QAAQ,aAAa,aAAa,EAAG,QAAO,CAAC,MAAM;AACxD,eAAO;AAAA,MACT;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO;AACtD,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO;AACtD,YAAI,MAAM;AACV,iBAAS,MAAM,QAAQ,aAAa,SAAS,GAAG,MAAM,GAAG,MAAM;AAC7D,cAAI,MAAM,QAAQ,aAAa,MAAM,EAAE,IAAI;AAC3C,cAAI,KAAK,IAAI,MAAM,EAAE,IAAI;AACzB,cAAI,OAAO,GAAI;AACf,cAAI,KAAK,IAAI;AACX,kBAAM;AAAA,UACR,WAAW,KAAK,IAAI;AAClB,kBAAM;AAAA,UACR;AACA;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AACA,SAAG,UAAU,KAAK,SAAS,GAAG,KAAK;AACjC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,KAAK,GAAG,KAAK;AAAA,MAC3B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,IAAI,GAAG,KAAK;AAAA,MAC1B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AACA,SAAG,UAAU,KAAK,SAAS0B,IAAG,KAAK;AACjC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,KAAK,GAAG,KAAK;AAAA,MAC3B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,IAAI,GAAG,KAAK;AAAA,MAC1B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AACA,SAAG,UAAU,KAAK,SAASC,IAAG,KAAK;AACjC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AACA,SAAG,MAAM,SAAS,IAAI,KAAK;AACzB,eAAO,IAAI,IAAI,GAAG;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAA3B,SAAQ,EAAE,QAAQ,aAAa,KAAK,uCAAuC;AAC3E,QAAAA,UAAS,QAAQ,aAAa,aAAa,GAAG,+BAA+B;AAC7E,eAAO,IAAI,UAAU,QAAQ,WAAW,EAAE,UAAU,GAAG;AAAA,MACzD;AACA,SAAG,UAAU,UAAU,SAAS,UAAU;AACxC,QAAAA,UAAS,QAAQ,aAAa,KAAK,sDAAsD;AACzF,gBAAQ,QAAQ,aAAa,IAAI,YAAY,QAAQ,WAAW;AAAA,MAClE;AACA,SAAG,UAAU,YAAY,SAAS,UAAU,KAAK;AAC/C,SAAC,QAAQ,aAAa,MAAM;AAC5B,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,KAAK;AAC7C,QAAAA,SAAQ,EAAE,QAAQ,aAAa,KAAK,uCAAuC;AAC3E,eAAO,KAAK,UAAU,GAAG;AAAA,MAC3B;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,aAAa,KAAK,oCAAoC;AACvE,gBAAQ,QAAQ,aAAa,IAAI,IAAI,QAAQ,aAAa,GAAG;AAAA,MAC/D;AACA,SAAG,UAAU,UAAU,SAAS,QAAQ,KAAK;AAC3C,QAAAA,UAAS,QAAQ,aAAa,KAAK,qCAAqC;AACxE,gBAAQ,QAAQ,aAAa,IAAI,KAAK,QAAQ,aAAa,GAAG;AAAA,MAChE;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,aAAa,KAAK,oCAAoC;AACvE,gBAAQ,QAAQ,aAAa,IAAI,IAAI,QAAQ,aAAa,GAAG;AAAA,MAC/D;AACA,SAAG,UAAU,UAAU,SAAS,QAAQ,KAAK;AAC3C,QAAAA,UAAS,QAAQ,aAAa,KAAK,qCAAqC;AACxE,gBAAQ,QAAQ,aAAa,IAAI,KAAK,QAAQ,aAAa,GAAG;AAAA,MAChE;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,aAAa,KAAK,oCAAoC;AACvE,gBAAQ,QAAQ,aAAa,IAAI,IAAI,QAAQ,aAAa,GAAG;AAAA,MAC/D;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,aAAa,KAAK,oCAAoC;AACvE,SAAC,QAAQ,aAAa,IAAI,SAAS,QAAQ,aAAa,GAAG;AAC3D,gBAAQ,QAAQ,aAAa,IAAI,IAAI,QAAQ,aAAa,GAAG;AAAA,MAC/D;AACA,SAAG,UAAU,UAAU,SAAS,QAAQ,KAAK;AAC3C,QAAAA,UAAS,QAAQ,aAAa,KAAK,oCAAoC;AACvE,SAAC,QAAQ,aAAa,IAAI,SAAS,QAAQ,aAAa,GAAG;AAC3D,gBAAQ,QAAQ,aAAa,IAAI,KAAK,QAAQ,aAAa,GAAG;AAAA,MAChE;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,QAAAA,UAAS,QAAQ,aAAa,KAAK,oCAAoC;AACvE,SAAC,QAAQ,aAAa,IAAI,SAAS,QAAQ,WAAW;AACtD,gBAAQ,QAAQ,aAAa,IAAI,IAAI,QAAQ,WAAW;AAAA,MAC1D;AACA,SAAG,UAAU,UAAU,SAAS,UAAU;AACxC,QAAAA,UAAS,QAAQ,aAAa,KAAK,qCAAqC;AACxE,SAAC,QAAQ,aAAa,IAAI,SAAS,QAAQ,WAAW;AACtD,gBAAQ,QAAQ,aAAa,IAAI,KAAK,QAAQ,WAAW;AAAA,MAC3D;AACA,SAAG,UAAU,UAAU,SAAS,UAAU;AACxC,QAAAA,UAAS,QAAQ,aAAa,KAAK,qCAAqC;AACxE,SAAC,QAAQ,aAAa,IAAI,SAAS,QAAQ,WAAW;AACtD,gBAAQ,QAAQ,aAAa,IAAI,KAAK,QAAQ,WAAW;AAAA,MAC3D;AACA,SAAG,UAAU,UAAU,SAAS,UAAU;AACxC,QAAAA,UAAS,QAAQ,aAAa,KAAK,qCAAqC;AACxE,SAAC,QAAQ,aAAa,IAAI,SAAS,QAAQ,WAAW;AACtD,gBAAQ,QAAQ,aAAa,IAAI,KAAK,QAAQ,WAAW;AAAA,MAC3D;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,QAAAA,UAAS,QAAQ,aAAa,KAAK,oCAAoC;AACvE,SAAC,QAAQ,aAAa,IAAI,SAAS,QAAQ,WAAW;AACtD,gBAAQ,QAAQ,aAAa,IAAI,IAAI,QAAQ,WAAW;AAAA,MAC1D;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,aAAa,OAAO,CAAC,IAAI,KAAK,mBAAmB;AAClE,SAAC,QAAQ,aAAa,IAAI,SAAS,QAAQ,WAAW;AACtD,gBAAQ,QAAQ,aAAa,IAAI,IAAI,QAAQ,aAAa,GAAG;AAAA,MAC/D;AACA,UAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AACA,eAAS,OAAO,OAAO,IAAI;AACzB,SAAC,QAAQ,aAAa,OAAO;AAC7B,SAAC,QAAQ,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE;AACvC,SAAC,QAAQ,aAAa,KAAK,QAAQ,aAAa,EAAE,UAAU;AAC5D,SAAC,QAAQ,aAAa,IAAI,IAAI,GAAG,CAAC,EAAE,QAAQ,QAAQ,aAAa,CAAC,EAAE,MAAM,QAAQ,aAAa,CAAC;AAChG,SAAC,QAAQ,aAAa,MAAM,KAAK,KAAK;AAAA,MACxC;AACA,aAAO,UAAU,OAAO,SAAS,OAAO;AACtC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,MAAM,KAAK,MAAM,QAAQ,aAAa,IAAI,EAAE,CAAC;AAC7D,eAAO;AAAA,MACT;AACA,aAAO,UAAU,UAAU,SAAS,QAAQ,KAAK;AAC/C,YAAI,KAAK;AACT,YAAI;AACJ,WAAG;AACD,eAAK,MAAM,KAAK,QAAQ,aAAa,GAAG;AACxC,eAAK,KAAK,MAAM,EAAE;AAClB,eAAK,GAAG,MAAM,QAAQ,aAAa,GAAG;AACtC,iBAAO,GAAG,UAAU;AAAA,QACtB,SAAS,QAAQ,QAAQ,aAAa;AACtC,YAAI,MAAM,QAAQ,QAAQ,aAAa,IAAI,KAAK,GAAG,MAAM,QAAQ,aAAa,CAAC;AAC/E,YAAI,QAAQ,GAAG;AACb,aAAG,MAAM,CAAC,IAAI;AACd,aAAG,SAAS;AAAA,QACd,WAAW,MAAM,GAAG;AAClB,aAAG,MAAM,QAAQ,aAAa,CAAC;AAAA,QACjC,OAAO;AACL,cAAI,GAAG,UAAU,QAAQ;AACvB,eAAG,MAAM;AAAA,UACX,OAAO;AACL,eAAG,OAAO;AAAA,UACZ;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ,SAAS,MAAM,OAAO,KAAK;AAClD,cAAM,QAAQ,QAAQ,aAAa,GAAG,GAAG,GAAG;AAAA,MAC9C;AACA,aAAO,UAAU,QAAQ,SAAS,MAAM,KAAK;AAC3C,eAAO,IAAI,MAAM,QAAQ,aAAa,CAAC;AAAA,MACzC;AACA,eAAS,OAAO;AACd,eAAO,KAAK,QAAQ,aAAa,QAAQ,yEAAyE;AAAA,MACpH;AACA,MAAAtJ,UAAS,MAAM,MAAM;AACrB,WAAK,UAAU,QAAQ,SAAS,MAAM,OAAO,QAAQ;AACnD,YAAI,OAAO;AACX,YAAI,SAAS,KAAK,IAAI,MAAM,QAAQ,CAAC;AACrC,iBAAS,KAAK,GAAG,KAAK,QAAQ,MAAM;AAClC,iBAAO,MAAM,EAAE,IAAI,MAAM,MAAM,EAAE;AAAA,QACnC;AACA,eAAO,SAAS;AAChB,YAAI,MAAM,UAAU,GAAG;AACrB,gBAAM,MAAM,CAAC,IAAI;AACjB,gBAAM,SAAS;AACf;AAAA,QACF;AACA,YAAI,OAAO,MAAM,MAAM,CAAC;AACxB,eAAO,MAAM,OAAO,QAAQ,IAAI,OAAO;AACvC,aAAK,KAAK,IAAI,KAAK,MAAM,QAAQ,MAAM;AACrC,cAAI,OAAO,MAAM,MAAM,EAAE,IAAI;AAC7B,gBAAM,MAAM,KAAK,EAAE,KAAK,OAAO,SAAS,IAAI,SAAS;AACrD,iBAAO;AAAA,QACT;AACA,kBAAU;AACV,cAAM,MAAM,KAAK,EAAE,IAAI;AACvB,YAAI,SAAS,KAAK,MAAM,SAAS,IAAI;AACnC,gBAAM,UAAU;AAAA,QAClB,OAAO;AACL,gBAAM,UAAU;AAAA,QAClB;AAAA,MACF;AACA,WAAK,UAAU,QAAQ,SAAS,MAAM,KAAK;AACzC,YAAI,MAAM,IAAI,MAAM,IAAI;AACxB,YAAI,MAAM,IAAI,SAAS,CAAC,IAAI;AAC5B,YAAI,UAAU;AACd,YAAI,KAAK;AACT,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,cAAI,KAAK,IAAI,MAAM,EAAE,IAAI;AACzB,gBAAM,KAAK;AACX,cAAI,MAAM,EAAE,IAAI,KAAK;AACrB,eAAK,KAAK,MAAM,KAAK,WAAW;AAAA,QAClC;AACA,YAAI,IAAI,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG;AACnC,cAAI;AACJ,cAAI,IAAI,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG;AACnC,gBAAI;AAAA,UACN;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,OAAO;AACd,eAAO,KAAK,QAAQ,aAAa,QAAQ,gEAAgE;AAAA,MAC3G;AACA,MAAAA,UAAS,MAAM,MAAM;AACrB,eAAS,OAAO;AACd,eAAO,KAAK,QAAQ,aAAa,QAAQ,uDAAuD;AAAA,MAClG;AACA,MAAAA,UAAS,MAAM,MAAM;AACrB,eAAS,SAAS;AAChB,eAAO,KAAK,QAAQ,aAAa,SAAS,qEAAqE;AAAA,MACjH;AACA,MAAAA,UAAS,QAAQ,MAAM;AACvB,aAAO,UAAU,QAAQ,SAAS,MAAM,KAAK;AAC3C,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,cAAI,MAAM,IAAI,MAAM,EAAE,IAAI,KAAK,KAAK;AACpC,cAAI,KAAK,KAAK;AACd,kBAAQ;AACR,cAAI,MAAM,EAAE,IAAI;AAChB,kBAAQ;AAAA,QACV;AACA,YAAI,UAAU,GAAG;AACf,cAAI,MAAM,IAAI,QAAQ,IAAI;AAAA,QAC5B;AACA,eAAO;AAAA,MACT;AACA,SAAG,SAAS,SAAS,MAAM,OAAO;AAChC,YAAI,OAAO,KAAK,EAAG,QAAO,OAAO,KAAK;AACtC,YAAI;AACJ,YAAI,UAAU,QAAQ;AACpB,mBAAS,IAAI,KAAK;AAAA,QACpB,WAAW,UAAU,QAAQ;AAC3B,mBAAS,IAAI,KAAK;AAAA,QACpB,WAAW,UAAU,QAAQ;AAC3B,mBAAS,IAAI,KAAK;AAAA,QACpB,WAAW,UAAU,UAAU;AAC7B,mBAAS,IAAI,OAAO;AAAA,QACtB,OAAO;AACL,gBAAM,IAAI,MAAM,mBAAmB,KAAK;AAAA,QAC1C;AACA,eAAO,KAAK,IAAI;AAChB,eAAO;AAAA,MACT;AACA,eAAS,IAAI5C,KAAI;AACf,YAAI,OAAOA,QAAO,UAAU;AAC1B,cAAI,QAAQ,GAAG,OAAOA,GAAE;AACxB,WAAC,QAAQ,aAAa,IAAI,MAAM;AAChC,WAAC,QAAQ,aAAa,QAAQ;AAAA,QAChC,OAAO;AACL,UAAAkM,SAAQlM,IAAG,IAAI,CAAC,GAAG,gCAAgC;AACnD,WAAC,QAAQ,aAAa,IAAIA;AAC1B,WAAC,QAAQ,aAAa,QAAQ;AAAA,QAChC;AAAA,MACF;AACA,UAAI,UAAU,WAAW,SAAS,SAAS,IAAI;AAC7C,QAAAkM,SAAQ,GAAG,aAAa,GAAG,+BAA+B;AAC1D,QAAAA,SAAQ,GAAG,KAAK,iCAAiC;AAAA,MACnD;AACA,UAAI,UAAU,WAAW,SAAS,SAAS,IAAI,IAAI;AACjD,QAAAA,UAAS,GAAG,WAAW,GAAG,cAAc,GAAG,+BAA+B;AAC1E,QAAAA,SAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,iCAAiC;AAAA,MACxE;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI;AACrC,aAAK,QAAQ,aAAa,MAAO,SAAQ,QAAQ,aAAa,MAAM,QAAQ,EAAE,EAAE,UAAU,QAAQ,WAAW;AAC7G,eAAO,GAAG,MAAM,QAAQ,aAAa,CAAC,EAAE,UAAU,QAAQ,WAAW;AAAA,MACvE;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI;AACnC,YAAI,GAAG,OAAO,GAAG;AACf,iBAAO,GAAG,MAAM;AAAA,QAClB;AACA,gBAAQ,QAAQ,aAAa,EAAE,IAAI,EAAE,EAAE,UAAU,QAAQ,WAAW;AAAA,MACtE;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,IAAI;AACvC,aAAK,SAAS,IAAI,EAAE;AACpB,YAAI,MAAM,GAAG,IAAI,EAAE;AACnB,YAAI,IAAI,KAAK,QAAQ,aAAa,CAAC,KAAK,GAAG;AACzC,cAAI,MAAM,QAAQ,aAAa,CAAC;AAAA,QAClC;AACA,eAAO,IAAI,UAAU,QAAQ,WAAW;AAAA,MAC1C;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI;AACzC,aAAK,SAAS,IAAI,EAAE;AACpB,YAAI,MAAM,GAAG,KAAK,EAAE;AACpB,YAAI,IAAI,KAAK,QAAQ,aAAa,CAAC,KAAK,GAAG;AACzC,cAAI,MAAM,QAAQ,aAAa,CAAC;AAAA,QAClC;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,IAAI;AACvC,aAAK,SAAS,IAAI,EAAE;AACpB,YAAI,MAAM,GAAG,IAAI,EAAE;AACnB,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,MAAM,QAAQ,aAAa,CAAC;AAAA,QAClC;AACA,eAAO,IAAI,UAAU,QAAQ,WAAW;AAAA,MAC1C;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI;AACzC,aAAK,SAAS,IAAI,EAAE;AACpB,YAAI,MAAM,GAAG,KAAK,EAAE;AACpB,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,MAAM,QAAQ,aAAa,CAAC;AAAA,QAClC;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,KAAK;AACxC,aAAK,SAAS,EAAE;AAChB,eAAO,KAAK,KAAK,GAAG,MAAM,GAAG,CAAC;AAAA,MAChC;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI;AACzC,aAAK,SAAS,IAAI,EAAE;AACpB,eAAO,KAAK,KAAK,GAAG,KAAK,EAAE,CAAC;AAAA,MAC9B;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,IAAI;AACvC,aAAK,SAAS,IAAI,EAAE;AACpB,eAAO,KAAK,KAAK,GAAG,IAAI,EAAE,CAAC;AAAA,MAC7B;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI;AACrC,eAAO,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;AAAA,MACjC;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI;AACnC,eAAO,KAAK,IAAI,IAAI,EAAE;AAAA,MACxB;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI;AACrC,YAAI,GAAG,OAAO,EAAG,QAAO,GAAG,MAAM;AACjC,YAAI,QAAQ,QAAQ,aAAa,EAAE,MAAM,CAAC;AAC1C,QAAAA,SAAQ,OAAO,MAAM,CAAC;AACtB,YAAI,SAAS,GAAG;AACd,cAAI,OAAO,QAAQ,aAAa,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;AACzD,iBAAO,KAAK,IAAI,IAAI,GAAG;AAAA,QACzB;AACA,YAAI,MAAM,QAAQ,aAAa,EAAE,KAAK,CAAC;AACvC,YAAI,KAAK;AACT,eAAO,CAAC,GAAG,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG;AACxC;AACA,aAAG,OAAO,CAAC;AAAA,QACb;AACA,QAAAA,SAAQ,CAAC,GAAG,OAAO,CAAC;AACpB,YAAI,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,QAAQ,WAAW;AAC7C,YAAI,OAAO,IAAI,OAAO;AACtB,YAAI,QAAQ,QAAQ,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC;AACnD,YAAI,MAAM,QAAQ,aAAa,EAAE,UAAU;AAC3C,aAAK,IAAI,GAAG,IAAI,KAAK,EAAE,EAAE,MAAM,QAAQ,WAAW;AAClD,eAAO,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,MAAM,GAAG;AACzC,aAAG,QAAQ,IAAI;AAAA,QACjB;AACA,YAAI,KAAK,KAAK,IAAI,IAAI,EAAE;AACxB,YAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1C,YAAI,KAAK,KAAK,IAAI,IAAI,EAAE;AACxB,YAAIlM,MAAK;AACT,eAAO,GAAG,IAAI,GAAG,MAAM,GAAG;AACxB,cAAI,MAAM;AACV,mBAAS,KAAK,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM;AACzC,kBAAM,IAAI,OAAO;AAAA,UACnB;AACA,UAAAkM,SAAQ,KAAKlM,GAAE;AACf,cAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,OAAOA,MAAK,KAAK,CAAC,CAAC;AACnD,eAAK,GAAG,OAAO,EAAE;AACjB,eAAK,GAAG,OAAO;AACf,eAAK,GAAG,OAAO,EAAE;AACjB,UAAAA,MAAK;AAAA,QACP;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI;AACrC,YAAI,MAAM,GAAG,QAAQ,QAAQ,aAAa,CAAC;AAC3C,YAAI,IAAI,aAAa,GAAG;AACtB,cAAI,WAAW;AACf,iBAAO,KAAK,KAAK,GAAG,EAAE,OAAO;AAAA,QAC/B,OAAO;AACL,iBAAO,KAAK,KAAK,GAAG;AAAA,QACtB;AAAA,MACF;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,KAAK;AACxC,YAAI,IAAI,OAAO,EAAG,QAAO,IAAI,GAAG,CAAC,EAAE,MAAM,QAAQ,WAAW;AAC5D,YAAI,IAAI,KAAK,CAAC,MAAM,EAAG,QAAO,GAAG,MAAM;AACvC,YAAI,aAAa;AACjB,YAAI,MAAM,IAAI,MAAM,KAAK,UAAU;AACnC,YAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,MAAM,QAAQ,WAAW;AAC5C,YAAI,CAAC,IAAI;AACT,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,cAAI,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE;AAAA,QACpC;AACA,YAAI,MAAM,IAAI,CAAC;AACf,YAAI,UAAU;AACd,YAAI,aAAa;AACjB,YAAIJ,SAAQ,IAAI,UAAU,IAAI;AAC9B,YAAIA,WAAU,GAAG;AACf,UAAAA,SAAQ;AAAA,QACV;AACA,aAAK,KAAK,IAAI,SAAS,GAAG,MAAM,GAAG,MAAM;AACvC,cAAI,OAAO,IAAI,MAAM,EAAE;AACvB,mBAAS,KAAKA,SAAQ,GAAG,MAAM,GAAG,MAAM;AACtC,gBAAI,MAAM,QAAQ,KAAK;AACvB,gBAAI,QAAQ,IAAI,CAAC,GAAG;AAClB,oBAAM,KAAK,IAAI,GAAG;AAAA,YACpB;AACA,gBAAI,QAAQ,KAAK,YAAY,GAAG;AAC9B,2BAAa;AACb;AAAA,YACF;AACA,wBAAY;AACZ,uBAAW;AACX;AACA,gBAAI,eAAe,eAAe,OAAO,KAAK,OAAO,GAAI;AACzD,kBAAM,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC;AAChC,yBAAa;AACb,sBAAU;AAAA,UACZ;AACA,UAAAA,SAAQ;AAAA,QACV;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,YAAY,SAAS,UAAU,KAAK;AAChD,YAAI,KAAK,IAAI,MAAM,QAAQ,aAAa,CAAC;AACzC,eAAO,OAAO,MAAM,GAAG,MAAM,IAAI;AAAA,MACnC;AACA,UAAI,UAAU,cAAc,SAAS,YAAY,KAAK;AACpD,YAAI,MAAM,IAAI,MAAM;AACpB,YAAI,MAAM;AACV,eAAO;AAAA,MACT;AACA,SAAG,OAAO,SAAS,KAAK,KAAK;AAC3B,eAAO,IAAI,KAAK,GAAG;AAAA,MACrB;AACA,eAAS,KAAKI,KAAI;AAChB,YAAI,KAAK,QAAQ,aAAaA,GAAE;AAChC,SAAC,QAAQ,aAAa,SAAS,QAAQ,aAAa,EAAE,UAAU;AAChE,aAAK,QAAQ,aAAa,QAAQ,OAAO,GAAG;AAC1C,WAAC,QAAQ,aAAa,SAAS,MAAM,QAAQ,aAAa,QAAQ;AAAA,QACpE;AACA,SAAC,QAAQ,aAAa,IAAI,IAAI,GAAG,CAAC,EAAE,QAAQ,QAAQ,aAAa,KAAK;AACtE,SAAC,QAAQ,aAAa,KAAK,KAAK,MAAM,QAAQ,aAAa,EAAE,IAAI,CAAC;AAClE,SAAC,QAAQ,aAAa,QAAQ,QAAQ,aAAa,EAAE,QAAQ,QAAQ,aAAa,CAAC;AACnF,SAAC,QAAQ,aAAa,QAAQ,QAAQ,aAAa,KAAK,KAAK,QAAQ,aAAa,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,QAAQ,aAAa,CAAC;AACzH,SAAC,QAAQ,aAAa,QAAQ,QAAQ,aAAa,KAAK,MAAM,QAAQ,aAAa,CAAC;AACpF,SAAC,QAAQ,aAAa,QAAQ,QAAQ,aAAa,EAAE,KAAK,QAAQ,aAAa,IAAI;AAAA,MACrF;AACA,MAAA4C,UAAS,MAAM,GAAG;AAClB,WAAK,UAAU,YAAY,SAAS,UAAU,KAAK;AACjD,eAAO,KAAK,KAAK,IAAI,OAAO,QAAQ,aAAa,KAAK,CAAC;AAAA,MACzD;AACA,WAAK,UAAU,cAAc,SAAS,YAAY,KAAK;AACrD,YAAI,KAAK,KAAK,KAAK,IAAI,KAAK,QAAQ,aAAa,IAAI,CAAC;AACtD,WAAG,MAAM;AACT,eAAO;AAAA,MACT;AACA,WAAK,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI;AAC1C,YAAI,GAAG,OAAO,KAAK,GAAG,OAAO,GAAG;AAC9B,aAAG,MAAM,CAAC,IAAI;AACd,aAAG,SAAS;AACZ,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,GAAG,KAAK,EAAE;AACnB,YAAI,KAAK,GAAG,OAAO,QAAQ,aAAa,KAAK,EAAE,KAAK,QAAQ,aAAa,IAAI,EAAE,QAAQ,QAAQ,aAAa,KAAK,EAAE,KAAK,QAAQ,aAAa,CAAC;AAC9I,YAAI,KAAK,GAAG,KAAK,EAAE,EAAE,QAAQ,QAAQ,aAAa,KAAK;AACvD,YAAI,MAAM;AACV,YAAI,GAAG,KAAK,QAAQ,aAAa,CAAC,KAAK,GAAG;AACxC,gBAAM,GAAG,MAAM,QAAQ,aAAa,CAAC;AAAA,QACvC,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG;AACzB,gBAAM,GAAG,MAAM,QAAQ,aAAa,CAAC;AAAA,QACvC;AACA,eAAO,IAAI,UAAU,QAAQ,WAAW;AAAA,MAC1C;AACA,WAAK,UAAU,MAAM,SAAS,IAAI,IAAI,IAAI;AACxC,YAAI,GAAG,OAAO,KAAK,GAAG,OAAO,EAAG,QAAO,IAAI,GAAG,CAAC,EAAE,UAAU,QAAQ,WAAW;AAC9E,YAAI,KAAK,GAAG,IAAI,EAAE;AAClB,YAAI,KAAK,GAAG,OAAO,QAAQ,aAAa,KAAK,EAAE,KAAK,QAAQ,aAAa,IAAI,EAAE,QAAQ,QAAQ,aAAa,KAAK,EAAE,KAAK,QAAQ,aAAa,CAAC;AAC9I,YAAI,KAAK,GAAG,KAAK,EAAE,EAAE,QAAQ,QAAQ,aAAa,KAAK;AACvD,YAAI,MAAM;AACV,YAAI,GAAG,KAAK,QAAQ,aAAa,CAAC,KAAK,GAAG;AACxC,gBAAM,GAAG,MAAM,QAAQ,aAAa,CAAC;AAAA,QACvC,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG;AACzB,gBAAM,GAAG,MAAM,QAAQ,aAAa,CAAC;AAAA,QACvC;AACA,eAAO,IAAI,UAAU,QAAQ,WAAW;AAAA,MAC1C;AACA,WAAK,UAAU,OAAO,SAAS,KAAK,IAAI;AACtC,YAAI,MAAM,KAAK,KAAK,GAAG,QAAQ,QAAQ,aAAa,CAAC,EAAE,KAAK,QAAQ,aAAa,EAAE,CAAC;AACpF,eAAO,IAAI,UAAU,QAAQ,WAAW;AAAA,MAC1C;AAAA,IACF,GAAG,YAAY,WAAW;AAC1B,WAAO,WAAW;AAAA,EACpB;AAIA,WAAS,UAAU;AACjB,QAAI,aAAc,QAAO;AACzB,mBAAe;AACf,QAAIxC,UAAS,OAAO;AACpB,QAAI,WAAW,QAAQ;AACvB,QAAI,KAAK,QAAQ;AACjB,kBAAc,SAAS,YAAY,OAAO;AACxC,aAAO,IAAI,KAAK,KAAK;AAAA,IACvB;AACA,QAAI,UAAU;AAAA,MACZ,WAAW;AAAA,QACT,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AAAA,MACA,YAAY;AAAA,QACV,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AAAA,MACA,YAAY;AAAA,QACV,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,QACN,YAAY;AAAA,MACd;AAAA,IACF;AACA,YAAQ,OAAO,QAAQ;AACvB,YAAQ,OAAO,QAAQ,YAAY,QAAQ;AAC3C,YAAQ,OAAO,QAAQ,YAAY,QAAQ;AAC3C,YAAQ,OAAO,QAAQ;AACvB,YAAQ,OAAO,QAAQ;AACvB,aAAS,KAAK,OAAO;AACnB,OAAC,QAAQ,aAAa,YAAY,QAAQ,KAAK;AAC/C,UAAI,EAAE,QAAQ,aAAa,WAAW;AACpC,SAAC,QAAQ,aAAa,YAAY;AAAA,UAChC,MAAM;AAAA,QACR;AAAA,MACF;AACA,OAAC,QAAQ,aAAa,QAAQ,IAAI,SAAS,IAAI,QAAQ,aAAa,UAAU,IAAI;AAClF,OAAC,QAAQ,aAAa,OAAO;AAAA,IAC/B;AACA,SAAK,UAAU,eAAe,SAAS,KAAKuQ,SAAQ;AAClD,OAAC,QAAQ,aAAa,QAAQ,QAAQ,aAAa,MAAM,WAAW;AACpE,aAAO,KAAK,aAAa,KAAKA,OAAM;AAAA,IACtC;AACA,SAAK,UAAU,gBAAgB,SAAS,OAAO,OAAO,KAAK;AACzD,cAAQ,SAAS;AACjB,UAAI,CAACvQ,QAAO,SAAS,KAAK,GAAG;AAC3B,gBAAQ,IAAIA,QAAO,OAAO,KAAK;AAAA,MACjC;AACA,UAAI,YAAY,QAAQ,aAAa,MAAM,cAAc,KAAK,EAAE,UAAU;AAC1E,UAAI,MAAM,SAAS,KAAK,QAAQ,aAAa,KAAK,WAAW,CAAC,EAAE,KAAK;AACrE,aAAO,kBAAkB,KAAK,MAAM,QAAQ,aAAa,UAAU,UAAU;AAAA,IAC/E;AACA,SAAK,UAAU,eAAe,SAAS,KAAKuQ,SAAQ;AAClD,UAAI,OAAO,QAAQ,aAAa,KAAK,UAAUA,YAAW,cAAc,IAAI;AAC5E,UAAIA,YAAW,UAAU;AACvB,YAAI,IAAI,IAAI,SAAS,CAAC,IAAI,GAAG;AAC3B,cAAI,CAAC,IAAI;AAAA,QACX,OAAO;AACL,cAAI,CAAC,IAAI;AAAA,QACX;AAAA,MACF;AACA,aAAO,kBAAkB,KAAK,GAAG;AAAA,IACnC;AACA,SAAK,UAAU,gBAAgB,SAAS,KAAK;AAC3C,aAAO,mBAAmB,QAAQ,aAAa,KAAK,WAAW,GAAG,GAAG;AAAA,IACvE;AACA,SAAK,UAAU,eAAe,SAAS,KAAK,KAAK;AAC/C,YAAM,OAAO;AACb,UAAI,CAACvQ,QAAO,SAAS,GAAG,GAAG;AACzB,cAAM,IAAIA,QAAO,KAAK,GAAG;AAAA,MAC3B;AACA,OAAC,QAAQ,aAAa,KAAK,cAAc,GAAG;AAC5C,aAAO,QAAQ;AAAA,IACjB;AACA,SAAK,UAAU,gBAAgB,SAAS,MAAM,KAAK;AACjD,YAAM,OAAO;AACb,UAAI,CAACA,QAAO,SAAS,IAAI,GAAG;AAC1B,eAAO,IAAIA,QAAO,MAAM,GAAG;AAAA,MAC7B;AACA,UAAI,QAAQ,IAAI,GAAG,IAAI;AACvB,cAAQ,MAAM,SAAS,EAAE;AACzB,OAAC,QAAQ,aAAa,QAAQ,QAAQ,aAAa,MAAM,WAAW;AACpE,OAAC,QAAQ,aAAa,KAAK,eAAe,KAAK;AAC/C,aAAO,QAAQ;AAAA,IACjB;AACA,aAAS,kBAAkB,IAAI,KAAK,KAAK;AACvC,UAAI,CAAC,MAAM,QAAQ,EAAE,GAAG;AACtB,aAAK,GAAG,QAAQ;AAAA,MAClB;AACA,UAAI,MAAM,IAAIA,QAAO,EAAE;AACvB,UAAI,OAAO,IAAI,SAAS,KAAK;AAC3B,YAAI,QAAQ,IAAIA,QAAO,MAAM,IAAI,MAAM;AACvC,cAAM,KAAK,CAAC;AACZ,cAAMA,QAAO,OAAO,CAAC,OAAO,GAAG,CAAC;AAAA,MAClC;AACA,UAAI,CAAC,KAAK;AACR,eAAO;AAAA,MACT,OAAO;AACL,eAAO,IAAI,SAAS,GAAG;AAAA,MACzB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAGA,WAAS,UAAU;AACjB,QAAI,aAAc,QAAO;AACzB,mBAAe;AACf,QAAI,cAAc,OAAO;AACzB,QAAIA,UAAS,OAAO,EAAE;AACtB,kBAAc,SAAS,MAAM,KAAK;AAChC,UAAI,KAAKA,QAAO,MAAM,CAAC;AACvB,UAAI,KAAK;AACT,UAAI;AACJ,aAAO,GAAG,SAAS,KAAK;AACtB,aAAK,MAAM,IAAI;AACf,aAAKA,QAAO,OAAO,CAAC,IAAI,YAAY,MAAM,EAAE,OAAO,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAAA,MAC/E;AACA,aAAO,GAAG,MAAM,GAAG,GAAG;AAAA,IACxB;AACA,aAAS,MAAM,IAAI;AACjB,UAAI,MAAMA,QAAO,YAAY,CAAC;AAC9B,UAAI,cAAc,IAAI,CAAC;AACvB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAGA,WAAS,UAAU;AACjB,QAAI,aAAc,QAAO;AACzB,mBAAe;AACf,kBAAc,SAAS,IAAI,IAAI,IAAI;AACjC,UAAI,MAAM,GAAG;AACb,UAAI,KAAK;AACT,aAAO,EAAE,KAAK,KAAK;AACjB,WAAG,EAAE,KAAK,GAAG,EAAE;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAOA,WAAS,UAAU;AACjB,QAAI,aAAc,QAAO,SAAS;AAClC,mBAAe;AACf,KAAC,SAAS+M,UAAS,WAAW;AAC5B,eAASjB,SAAQ,KAAK,KAAK;AACzB,YAAI,CAAC,IAAK,OAAM,IAAI,MAAM,OAAO,kBAAkB;AAAA,MACrD;AACA,eAAStJ,UAAS,MAAM,WAAW;AACjC,aAAK,SAAS;AACd,YAAI,WAAW,WAAW;AAAA,QAC1B;AACA,iBAAS,YAAY,UAAU;AAC/B,aAAK,YAAY,IAAI,SAAS;AAC9B,aAAK,UAAU,cAAc;AAAA,MAC/B;AACA,eAAS,GAAG,QAAQ,MAAM,QAAQ;AAChC,YAAI,GAAG,KAAK,MAAM,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,SAAC,QAAQ,aAAa,WAAW;AACjC,SAAC,QAAQ,aAAa,QAAQ;AAC9B,SAAC,QAAQ,aAAa,SAAS;AAC/B,SAAC,QAAQ,aAAa,MAAM;AAC5B,YAAI,WAAW,MAAM;AACnB,cAAI,SAAS,QAAQ,SAAS,MAAM;AAClC,qBAAS;AACT,mBAAO;AAAA,UACT;AACA,eAAK,MAAM,UAAU,GAAG,QAAQ,IAAI,UAAU,IAAI;AAAA,QACpD;AAAA,MACF;AACA,UAAI,OAAOuK,aAAY,UAAU;AAC/B,QAAAA,SAAQ,UAAU;AAAA,MACpB,OAAO;AACL,kBAAU,KAAK;AAAA,MACjB;AACA,SAAG,KAAK;AACR,SAAG,WAAW;AACd,UAAI/M;AACJ,UAAI;AACF,YAAI,OAAO,WAAW,eAAe,OAAO,OAAO,WAAW,aAAa;AACzE,UAAAA,UAAS,OAAO;AAAA,QAClB,OAAO;AACL,UAAAA,UAAS,OAAO;AAAA,QAClB;AAAA,MACF,SAAS,IAAI;AAAA,MACb;AACA,SAAG,OAAO,SAAS,KAAK,KAAK;AAC3B,YAAI,eAAe,IAAI;AACrB,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,IAAI,YAAY,aAAa,GAAG,YAAY,MAAM,QAAQ,IAAI,KAAK;AAAA,MACvH;AACA,SAAG,MAAM,SAAS,IAAI,MAAM,OAAO;AACjC,YAAI,KAAK,IAAI,KAAK,IAAI,EAAG,QAAO;AAChC,eAAO;AAAA,MACT;AACA,SAAG,MAAM,SAAS,IAAI,MAAM,OAAO;AACjC,YAAI,KAAK,IAAI,KAAK,IAAI,EAAG,QAAO;AAChC,eAAO;AAAA,MACT;AACA,SAAG,UAAU,QAAQ,SAAS,KAAK,QAAQ,MAAM,QAAQ;AACvD,YAAI,OAAO,WAAW,UAAU;AAC9B,iBAAO,KAAK,YAAY,QAAQ,MAAM,MAAM;AAAA,QAC9C;AACA,YAAI,OAAO,WAAW,UAAU;AAC9B,iBAAO,KAAK,WAAW,QAAQ,MAAM,MAAM;AAAA,QAC7C;AACA,YAAI,SAAS,OAAO;AAClB,iBAAO;AAAA,QACT;AACA,QAAA8L,SAAQ,UAAU,OAAO,MAAM,QAAQ,KAAK,QAAQ,EAAE;AACtD,iBAAS,OAAO,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAC7C,YAAItM,SAAQ;AACZ,YAAI,OAAO,CAAC,MAAM,KAAK;AACrB,UAAAA;AACA,WAAC,QAAQ,aAAa,WAAW;AAAA,QACnC;AACA,YAAIA,SAAQ,OAAO,QAAQ;AACzB,cAAI,SAAS,IAAI;AACf,iBAAK,UAAU,QAAQA,QAAO,MAAM;AAAA,UACtC,OAAO;AACL,iBAAK,WAAW,QAAQ,MAAMA,MAAK;AACnC,gBAAI,WAAW,MAAM;AACnB,mBAAK,WAAW,KAAK,QAAQ,GAAG,MAAM,MAAM;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,SAAG,UAAU,cAAc,SAAS,YAAY,QAAQ,MAAM,QAAQ;AACpE,YAAI,SAAS,GAAG;AACd,WAAC,QAAQ,aAAa,WAAW;AACjC,mBAAS,CAAC;AAAA,QACZ;AACA,YAAI,SAAS,UAAU;AACrB,WAAC,QAAQ,aAAa,QAAQ,CAAC,SAAS,QAAQ;AAChD,WAAC,QAAQ,aAAa,SAAS;AAAA,QACjC,WAAW,SAAS,kBAAkB;AACpC,WAAC,QAAQ,aAAa,QAAQ,CAAC,SAAS,UAAU,SAAS,WAAW,QAAQ;AAC9E,WAAC,QAAQ,aAAa,SAAS;AAAA,QACjC,OAAO;AACL,UAAAsM,SAAQ,SAAS,gBAAgB;AACjC,WAAC,QAAQ,aAAa,QAAQ,CAAC,SAAS,UAAU,SAAS,WAAW,UAAU,CAAC;AACjF,WAAC,QAAQ,aAAa,SAAS;AAAA,QACjC;AACA,YAAI,WAAW,KAAM;AACrB,aAAK,WAAW,KAAK,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC9C;AACA,SAAG,UAAU,aAAa,SAAS,WAAW,QAAQ,MAAM,QAAQ;AAClE,QAAAA,SAAQ,OAAO,OAAO,WAAW,QAAQ;AACzC,YAAI,OAAO,UAAU,GAAG;AACtB,WAAC,QAAQ,aAAa,QAAQ,CAAC,CAAC;AAChC,WAAC,QAAQ,aAAa,SAAS;AAC/B,iBAAO,QAAQ;AAAA,QACjB;AACA,SAAC,QAAQ,aAAa,SAAS,KAAK,KAAK,OAAO,SAAS,CAAC;AAC1D,SAAC,QAAQ,aAAa,QAAQ,IAAI,OAAO,QAAQ,aAAa,MAAM;AACpE,iBAAS,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACxD,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI;AAAA,QACpC;AACA,YAAI,IAAI;AACR,YAAID,QAAO;AACX,YAAI,WAAW,MAAM;AACnB,eAAK,KAAK,OAAO,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG;AACrD,iBAAK,OAAO,EAAE,IAAI,OAAO,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK;AAC1D,aAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,MAAMA,QAAO;AAChD,aAAC,QAAQ,aAAa,MAAM,KAAK,CAAC,IAAI,OAAO,KAAKA,QAAO;AACzD,YAAAA,SAAQ;AACR,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAW,WAAW,MAAM;AAC1B,eAAK,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,QAAQ,MAAM,GAAG;AAChD,iBAAK,OAAO,EAAE,IAAI,OAAO,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK;AAC1D,aAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,MAAMA,QAAO;AAChD,aAAC,QAAQ,aAAa,MAAM,KAAK,CAAC,IAAI,OAAO,KAAKA,QAAO;AACzD,YAAAA,SAAQ;AACR,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,eAAS,cAAc,QAAQnB,QAAO;AACpC,YAAI,KAAK,OAAO,WAAWA,MAAK;AAChC,YAAI,MAAM,MAAM,MAAM,IAAI;AACxB,iBAAO,KAAK;AAAA,QACd,WAAW,MAAM,MAAM,MAAM,KAAK;AAChC,iBAAO,KAAK;AAAA,QACd,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AAAA,MACF;AACA,eAAS,aAAa,QAAQ,YAAYA,QAAO;AAC/C,YAAI,KAAK,cAAc,QAAQA,MAAK;AACpC,YAAIA,SAAQ,KAAK,YAAY;AAC3B,gBAAM,cAAc,QAAQA,SAAQ,CAAC,KAAK;AAAA,QAC5C;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,YAAY,SAAS,UAAU,QAAQlL,QAAO,QAAQ;AACjE,SAAC,QAAQ,aAAa,SAAS,KAAK,MAAM,OAAO,SAASA,UAAS,CAAC;AACpE,SAAC,QAAQ,aAAa,QAAQ,IAAI,OAAO,QAAQ,aAAa,MAAM;AACpE,iBAAS,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACxD,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI;AAAA,QACpC;AACA,YAAIqM,QAAO;AACX,YAAI,KAAK;AACT,YAAI;AACJ,YAAI,WAAW,MAAM;AACnB,eAAK,KAAK,OAAO,SAAS,GAAG,MAAMrM,QAAO,MAAM,GAAG;AACjD,iBAAK,aAAa,QAAQA,QAAO,EAAE,KAAKqM;AACxC,aAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,KAAK;AACxC,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR,oBAAM;AACN,eAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,OAAO;AAAA,YAC5C,OAAO;AACL,cAAAA,SAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF,OAAO;AACL,cAAI,cAAc,OAAO,SAASrM;AAClC,eAAK,KAAK,cAAc,MAAM,IAAIA,SAAQ,IAAIA,QAAO,KAAK,OAAO,QAAQ,MAAM,GAAG;AAChF,iBAAK,aAAa,QAAQA,QAAO,EAAE,KAAKqM;AACxC,aAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,KAAK;AACxC,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR,oBAAM;AACN,eAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,OAAO;AAAA,YAC5C,OAAO;AACL,cAAAA,SAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AACA,aAAK,MAAM;AAAA,MACb;AACA,eAAS,UAAU,KAAKrM,QAAO,KAAK,KAAK;AACvC,YAAI,KAAK;AACT,YAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,GAAG;AAClC,iBAAS,KAAKA,QAAO,KAAK,KAAK,MAAM;AACnC,cAAI,KAAK,IAAI,WAAW,EAAE,IAAI;AAC9B,gBAAM;AACN,cAAI,MAAM,IAAI;AACZ,kBAAM,KAAK,KAAK;AAAA,UAClB,WAAW,MAAM,IAAI;AACnB,kBAAM,KAAK,KAAK;AAAA,UAClB,OAAO;AACL,kBAAM;AAAA,UACR;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,aAAa,SAAS,WAAW,QAAQ,MAAMA,QAAO;AACjE,SAAC,QAAQ,aAAa,QAAQ,CAAC,CAAC;AAChC,SAAC,QAAQ,aAAa,SAAS;AAC/B,iBAAS,UAAU,GAAG,UAAU,GAAG,WAAW,UAAU,WAAW,MAAM;AACvE;AAAA,QACF;AACA;AACA,kBAAU,UAAU,OAAO;AAC3B,YAAI,QAAQ,OAAO,SAASA;AAC5B,YAAIwN,OAAM,QAAQ;AAClB,YAAI,MAAM,KAAK,IAAI,OAAO,QAAQA,IAAG,IAAIxN;AACzC,YAAI,OAAO;AACX,iBAAS,KAAKA,QAAO,KAAK,KAAK,MAAM,SAAS;AAC5C,iBAAO,UAAU,QAAQ,IAAI,KAAK,SAAS,IAAI;AAC/C,eAAK,MAAM,OAAO;AAClB,eAAK,QAAQ,aAAa,MAAM,CAAC,IAAI,OAAO,UAAU;AACpD,aAAC,QAAQ,aAAa,MAAM,CAAC,KAAK;AAAA,UACpC,OAAO;AACL,iBAAK,OAAO,IAAI;AAAA,UAClB;AAAA,QACF;AACA,YAAIwN,SAAQ,GAAG;AACb,cAAI,MAAM;AACV,iBAAO,UAAU,QAAQ,IAAI,OAAO,QAAQ,IAAI;AAChD,eAAK,KAAK,GAAG,KAAKA,MAAK,MAAM;AAC3B,mBAAO;AAAA,UACT;AACA,eAAK,MAAM,GAAG;AACd,eAAK,QAAQ,aAAa,MAAM,CAAC,IAAI,OAAO,UAAU;AACpD,aAAC,QAAQ,aAAa,MAAM,CAAC,KAAK;AAAA,UACpC,OAAO;AACL,iBAAK,OAAO,IAAI;AAAA,UAClB;AAAA,QACF;AACA,aAAK,MAAM;AAAA,MACb;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,MAAM;AACtC,aAAK,QAAQ,IAAI,OAAO,QAAQ,aAAa,MAAM;AACnD,iBAAS,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACxD,eAAK,MAAM,EAAE,KAAK,QAAQ,aAAa,MAAM,EAAE;AAAA,QACjD;AACA,aAAK,UAAU,QAAQ,aAAa;AACpC,aAAK,YAAY,QAAQ,aAAa;AACtC,aAAK,OAAO,QAAQ,aAAa;AAAA,MACnC;AACA,SAAG,UAAU,QAAQ,SAASC,SAAQ;AACpC,YAAI,KAAK,IAAI,GAAG,IAAI;AACpB,aAAK,KAAK,EAAE;AACZ,eAAO;AAAA,MACT;AACA,SAAG,UAAU,UAAU,SAAS,QAAQ,MAAM;AAC5C,gBAAQ,QAAQ,aAAa,SAAS,MAAM;AAC1C,WAAC,QAAQ,aAAa,OAAO,QAAQ,aAAa,QAAQ,IAAI;AAAA,QAChE;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,QAAQ,SAAS,QAAQ;AACpC,gBAAQ,QAAQ,aAAa,SAAS,MAAM,QAAQ,aAAa,OAAO,QAAQ,aAAa,SAAS,CAAC,MAAM,GAAG;AAC9G,WAAC,QAAQ,aAAa;AAAA,QACxB;AACA,eAAO,KAAK,UAAU;AAAA,MACxB;AACA,SAAG,UAAU,YAAY,SAAS,YAAY;AAC5C,aAAK,QAAQ,aAAa,WAAW,MAAM,QAAQ,aAAa,MAAM,CAAC,MAAM,GAAG;AAC9E,WAAC,QAAQ,aAAa,WAAW;AAAA,QACnC;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,UAAU,SAAS3M,WAAU;AACxC,iBAAS,QAAQ,aAAa,MAAM,YAAY,WAAW,KAAK,SAAS,EAAE,IAAI;AAAA,MACjF;AACA,UAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,OAAO,QAAQ,SAAS,UAAU,WAAW,YAAY,aAAa,cAAc,eAAe,gBAAgB,iBAAiB,kBAAkB,mBAAmB,oBAAoB,qBAAqB,sBAAsB,uBAAuB,wBAAwB,yBAAyB,0BAA0B,2BAA2B,4BAA4B,2BAA2B;AACxb,UAAI,aAAa,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACpI,UAAI,aAAa,CAAC,GAAG,GAAG,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,KAAK,UAAU,UAAU,UAAU,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,MAAM,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,OAAO,UAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAClW,SAAG,UAAU,WAAW,SAAS,SAAS,MAAM,SAAS;AACvD,eAAO,QAAQ;AACf,kBAAU,UAAU,KAAK;AACzB,YAAI;AACJ,YAAI,SAAS,MAAM,SAAS,OAAO;AACjC,gBAAM;AACN,cAAIuL,QAAO;AACX,cAAI,QAAQ;AACZ,mBAAS,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACxD,gBAAI,MAAM,QAAQ,aAAa,MAAM,EAAE;AACvC,gBAAI,SAAS,MAAMA,QAAO,SAAS,UAAU,SAAS,EAAE;AACxD,oBAAQ,OAAO,KAAKA,QAAO;AAC3B,gBAAI,UAAU,KAAK,QAAQ,QAAQ,aAAa,SAAS,GAAG;AAC1D,oBAAM,MAAM,IAAI,KAAK,MAAM,IAAI,OAAO;AAAA,YACxC,OAAO;AACL,oBAAM,OAAO;AAAA,YACf;AACA,YAAAA,SAAQ;AACR,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR;AAAA,YACF;AAAA,UACF;AACA,cAAI,UAAU,GAAG;AACf,kBAAM,MAAM,SAAS,EAAE,IAAI;AAAA,UAC7B;AACA,iBAAO,IAAI,SAAS,YAAY,GAAG;AACjC,kBAAM,MAAM;AAAA,UACd;AACA,eAAK,QAAQ,aAAa,aAAa,GAAG;AACxC,kBAAM,MAAM;AAAA,UACd;AACA,iBAAO;AAAA,QACT;AACA,YAAI,UAAU,OAAO,MAAM,QAAQ,KAAK,QAAQ,IAAI;AAClD,cAAI,YAAY,WAAW,IAAI;AAC/B,cAAI,YAAY,WAAW,IAAI;AAC/B,gBAAM;AACN,cAAI,KAAK,KAAK,MAAM;AACpB,aAAG,WAAW;AACd,iBAAO,CAAC,GAAG,OAAO,GAAG;AACnB,gBAAI,KAAK,GAAG,KAAK,SAAS,EAAE,SAAS,IAAI;AACzC,iBAAK,GAAG,MAAM,SAAS;AACvB,gBAAI,CAAC,GAAG,OAAO,GAAG;AAChB,oBAAM,MAAM,YAAY,GAAG,MAAM,IAAI,KAAK;AAAA,YAC5C,OAAO;AACL,oBAAM,KAAK;AAAA,YACb;AAAA,UACF;AACA,cAAI,KAAK,OAAO,GAAG;AACjB,kBAAM,MAAM;AAAA,UACd;AACA,iBAAO,IAAI,SAAS,YAAY,GAAG;AACjC,kBAAM,MAAM;AAAA,UACd;AACA,eAAK,QAAQ,aAAa,aAAa,GAAG;AACxC,kBAAM,MAAM;AAAA,UACd;AACA,iBAAO;AAAA,QACT;AACA,QAAAC,SAAQ,OAAO,iCAAiC;AAAA,MAClD;AACA,SAAG,UAAU,WAAW,SAAS,WAAW;AAC1C,YAAI,OAAO,QAAQ,aAAa,MAAM,CAAC;AACvC,aAAK,QAAQ,aAAa,WAAW,GAAG;AACtC,kBAAQ,QAAQ,aAAa,MAAM,CAAC,IAAI;AAAA,QAC1C,YAAY,QAAQ,aAAa,WAAW,MAAM,QAAQ,aAAa,MAAM,CAAC,MAAM,GAAG;AACrF,iBAAO,oBAAoB,QAAQ,aAAa,MAAM,CAAC,IAAI;AAAA,QAC7D,YAAY,QAAQ,aAAa,SAAS,GAAG;AAC3C,UAAAA,SAAQ,OAAO,4CAA4C;AAAA,QAC7D;AACA,gBAAQ,QAAQ,aAAa,aAAa,IAAI,CAAC,MAAM;AAAA,MACvD;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,eAAO,KAAK,SAAS,EAAE;AAAA,MACzB;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,QAAQ,QAAQ;AACxD,QAAAA,SAAQ,OAAO9L,YAAW,WAAW;AACrC,eAAO,KAAK,YAAYA,SAAQ,QAAQ,MAAM;AAAA,MAChD;AACA,SAAG,UAAU,UAAU,SAAS8M,SAAQ,QAAQ,QAAQ;AACtD,eAAO,KAAK,YAAY,OAAO,QAAQ,MAAM;AAAA,MAC/C;AACA,SAAG,UAAU,cAAc,SAAS,YAAY,WAAW,QAAQ,QAAQ;AACzE,YAAI,aAAa,KAAK,WAAW;AACjC,YAAI,YAAY,UAAU,KAAK,IAAI,GAAG,UAAU;AAChD,QAAAhB,SAAQ,cAAc,WAAW,uCAAuC;AACxE,QAAAA,SAAQ,YAAY,GAAG,6BAA6B;AACpD,aAAK,MAAM;AACX,YAAI,eAAe,WAAW;AAC9B,YAAI,MAAM,IAAI,UAAU,SAAS;AACjC,YAAI,IAAI;AACR,YAAI,KAAK,KAAK,MAAM;AACpB,YAAI,CAAC,cAAc;AACjB,eAAK,KAAK,GAAG,KAAK,YAAY,YAAY,MAAM;AAC9C,gBAAI,EAAE,IAAI;AAAA,UACZ;AACA,eAAK,KAAK,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM;AAC/B,iBAAK,GAAG,MAAM,GAAG;AACjB,eAAG,OAAO,CAAC;AACX,gBAAI,YAAY,KAAK,CAAC,IAAI;AAAA,UAC5B;AAAA,QACF,OAAO;AACL,eAAK,KAAK,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM;AAC/B,iBAAK,GAAG,MAAM,GAAG;AACjB,eAAG,OAAO,CAAC;AACX,gBAAI,EAAE,IAAI;AAAA,UACZ;AACA,iBAAO,KAAK,WAAW,MAAM;AAC3B,gBAAI,EAAE,IAAI;AAAA,UACZ;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,UAAI,KAAK,OAAO;AACd,WAAG,UAAU,aAAa,SAAS,WAAW,IAAI;AAChD,iBAAO,KAAK,KAAK,MAAM,EAAE;AAAA,QAC3B;AAAA,MACF,OAAO;AACL,WAAG,UAAU,aAAa,SAAS,WAAW,IAAI;AAChD,cAAI,KAAK;AACT,cAAI,KAAK;AACT,cAAI,MAAM,MAAM;AACd,kBAAM;AACN,oBAAQ;AAAA,UACV;AACA,cAAI,MAAM,IAAI;AACZ,kBAAM;AACN,oBAAQ;AAAA,UACV;AACA,cAAI,MAAM,GAAG;AACX,kBAAM;AACN,oBAAQ;AAAA,UACV;AACA,cAAI,MAAM,GAAG;AACX,kBAAM;AACN,oBAAQ;AAAA,UACV;AACA,iBAAO,KAAK;AAAA,QACd;AAAA,MACF;AACA,SAAG,UAAU,YAAY,SAAS,UAAU,IAAI;AAC9C,YAAI,OAAO,EAAG,QAAO;AACrB,YAAI,KAAK;AACT,YAAI,KAAK;AACT,aAAK,KAAK,UAAU,GAAG;AACrB,gBAAM;AACN,kBAAQ;AAAA,QACV;AACA,aAAK,KAAK,SAAS,GAAG;AACpB,gBAAM;AACN,kBAAQ;AAAA,QACV;AACA,aAAK,KAAK,QAAQ,GAAG;AACnB,gBAAM;AACN,kBAAQ;AAAA,QACV;AACA,aAAK,KAAK,OAAO,GAAG;AAClB,gBAAM;AACN,kBAAQ;AAAA,QACV;AACA,aAAK,KAAK,OAAO,GAAG;AAClB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,YAAY,SAAS,YAAY;AAC5C,YAAI,MAAM,QAAQ,aAAa,OAAO,QAAQ,aAAa,SAAS,CAAC;AACrE,YAAI,KAAK,KAAK,WAAW,EAAE;AAC3B,iBAAS,QAAQ,aAAa,SAAS,KAAK,KAAK;AAAA,MACnD;AACA,eAAS,WAAW,KAAK;AACvB,YAAI,KAAK,IAAI,MAAM,IAAI,UAAU,CAAC;AAClC,iBAAS,MAAM,GAAG,MAAM,GAAG,QAAQ,OAAO;AACxC,cAAID,QAAO,MAAM,KAAK;AACtB,cAAI,OAAO,MAAM;AACjB,aAAG,GAAG,KAAK,IAAI,MAAMA,KAAI,IAAI,KAAK,UAAU;AAAA,QAC9C;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,WAAW,SAAS,WAAW;AAC1C,YAAI,KAAK,OAAO,EAAG,QAAO;AAC1B,YAAI,KAAK;AACT,iBAAS,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,MAAM;AACxD,cAAI,KAAK,KAAK,WAAW,QAAQ,aAAa,MAAM,EAAE,CAAC;AACvD,gBAAM;AACN,cAAI,OAAO,GAAI;AAAA,QACjB;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,aAAa,SAAS,aAAa;AAC9C,eAAO,KAAK,KAAK,KAAK,UAAU,IAAI,CAAC;AAAA,MACvC;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,OAAO;AAC3C,aAAK,QAAQ,aAAa,aAAa,GAAG;AACxC,iBAAO,KAAK,IAAI,EAAE,MAAM,KAAK,EAAE,MAAM,CAAC;AAAA,QACxC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,OAAO;AAC/C,YAAI,KAAK,MAAM,QAAQ,CAAC,GAAG;AACzB,iBAAO,KAAK,KAAK,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK;AAAA,QACxC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,QAAQ;AACpC,gBAAQ,QAAQ,aAAa,aAAa;AAAA,MAC5C;AACA,SAAG,UAAU,MAAM,SAAS,MAAM;AAChC,eAAO,KAAK,MAAM,EAAE,KAAK;AAAA,MAC3B;AACA,SAAG,UAAU,OAAO,SAAS,OAAO;AAClC,YAAI,CAAC,KAAK,OAAO,GAAG;AAClB,WAAC,QAAQ,aAAa,YAAY;AAAA,QACpC;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,gBAAQ,QAAQ,aAAa,SAAS,IAAI,QAAQ;AAChD,WAAC,QAAQ,aAAa,OAAO,QAAQ,aAAa,QAAQ,IAAI;AAAA,QAChE;AACA,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,WAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,QAAQ,aAAa,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE;AAAA,QAClF;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,QAAAC,WAAU,QAAQ,aAAa,WAAW,IAAI,cAAc,CAAC;AAC7D,eAAO,KAAK,KAAK,GAAG;AAAA,MACtB;AACA,SAAG,UAAU,KAAK,SAAS,GAAG,KAAK;AACjC,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,IAAI,GAAG;AAC1E,eAAO,IAAI,MAAM,EAAE,IAAI,QAAQ,WAAW;AAAA,MAC5C;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AAC3E,eAAO,IAAI,MAAM,EAAE,KAAK,QAAQ,WAAW;AAAA,MAC7C;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,YAAI;AACJ,aAAK,QAAQ,aAAa,SAAS,IAAI,QAAQ;AAC7C,eAAK;AAAA,QACP,OAAO;AACL,eAAK,QAAQ;AAAA,QACf;AACA,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,WAAC,QAAQ,aAAa,MAAM,EAAE,KAAK,QAAQ,aAAa,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE;AAAA,QAClF;AACA,SAAC,QAAQ,aAAa,SAAS,GAAG;AAClC,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,QAAAA,WAAU,QAAQ,aAAa,WAAW,IAAI,cAAc,CAAC;AAC7D,eAAO,KAAK,MAAM,GAAG;AAAA,MACvB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AAC3E,eAAO,IAAI,MAAM,EAAE,KAAK,QAAQ,WAAW;AAAA,MAC7C;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAC5E,eAAO,IAAI,MAAM,EAAE,MAAM,QAAQ,WAAW;AAAA,MAC9C;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,YAAI;AACJ,YAAI;AACJ,aAAK,QAAQ,aAAa,SAAS,IAAI,QAAQ;AAC7C,eAAK,QAAQ;AACb,eAAK;AAAA,QACP,OAAO;AACL,eAAK;AACL,eAAK,QAAQ;AAAA,QACf;AACA,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE;AAAA,QAC9D;AACA,aAAK,QAAQ,iBAAiB,IAAI;AAChC,iBAAO,KAAK,GAAG,QAAQ,MAAM;AAC3B,aAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE;AAAA,UAC/C;AAAA,QACF;AACA,SAAC,QAAQ,aAAa,SAAS,GAAG;AAClC,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,QAAAA,WAAU,QAAQ,aAAa,WAAW,IAAI,cAAc,CAAC;AAC7D,eAAO,KAAK,MAAM,GAAG;AAAA,MACvB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AAC3E,eAAO,IAAI,MAAM,EAAE,KAAK,QAAQ,WAAW;AAAA,MAC7C;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAC5E,eAAO,IAAI,MAAM,EAAE,MAAM,QAAQ,WAAW;AAAA,MAC9C;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,OAAO;AACzC,QAAAA,SAAQ,OAAO,UAAU,YAAY,SAAS,CAAC;AAC/C,YAAI,cAAc,KAAK,KAAK,QAAQ,EAAE,IAAI;AAC1C,YAAI,WAAW,QAAQ;AACvB,aAAK,QAAQ,WAAW;AACxB,YAAI,WAAW,GAAG;AAChB;AAAA,QACF;AACA,iBAAS,KAAK,GAAG,KAAK,aAAa,MAAM;AACvC,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,EAAE,QAAQ,aAAa,MAAM,EAAE,IAAI;AAAA,QACvE;AACA,YAAI,WAAW,GAAG;AAChB,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,EAAE,QAAQ,aAAa,MAAM,EAAE,IAAI,YAAY,KAAK;AAAA,QACxF;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,OAAO;AACvC,eAAO,KAAK,MAAM,EAAE,MAAM,KAAK;AAAA,MACjC;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK,KAAK;AAC1C,QAAAA,SAAQ,OAAO,QAAQ,YAAY,OAAO,CAAC;AAC3C,YAAID,QAAO,MAAM,KAAK;AACtB,YAAI,OAAO,MAAM;AACjB,aAAK,QAAQA,QAAO,CAAC;AACrB,YAAI,KAAK;AACP,WAAC,QAAQ,aAAa,MAAMA,KAAI,KAAK,QAAQ,aAAa,MAAMA,KAAI,IAAI,KAAK;AAAA,QAC/E,OAAO;AACL,WAAC,QAAQ,aAAa,MAAMA,KAAI,KAAK,QAAQ,aAAa,MAAMA,KAAI,IAAI,EAAE,KAAK;AAAA,QACjF;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,YAAI;AACJ,aAAK,QAAQ,aAAa,aAAa,KAAK,IAAI,aAAa,GAAG;AAC9D,WAAC,QAAQ,aAAa,WAAW;AACjC,eAAK,KAAK,KAAK,GAAG;AAClB,WAAC,QAAQ,aAAa,YAAY;AAClC,iBAAO,KAAK,UAAU;AAAA,QACxB,YAAY,QAAQ,aAAa,aAAa,KAAK,IAAI,aAAa,GAAG;AACrE,cAAI,WAAW;AACf,eAAK,KAAK,KAAK,GAAG;AAClB,cAAI,WAAW;AACf,iBAAO,GAAG,UAAU;AAAA,QACtB;AACA,YAAI,IAAI;AACR,aAAK,QAAQ,aAAa,SAAS,IAAI,QAAQ;AAC7C,eAAK,QAAQ;AACb,eAAK;AAAA,QACP,OAAO;AACL,eAAK;AACL,eAAK,QAAQ;AAAA,QACf;AACA,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,gBAAM,GAAG,MAAM,EAAE,IAAI,MAAM,GAAG,MAAM,EAAE,IAAI,KAAK;AAC/C,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AACvC,kBAAQ,OAAO;AAAA,QACjB;AACA,eAAO,UAAU,KAAK,KAAK,GAAG,QAAQ,MAAM;AAC1C,gBAAM,GAAG,MAAM,EAAE,IAAI,KAAK;AAC1B,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AACvC,kBAAQ,OAAO;AAAA,QACjB;AACA,SAAC,QAAQ,aAAa,SAAS,GAAG;AAClC,YAAI,UAAU,GAAG;AACf,WAAC,QAAQ,aAAa,OAAO,QAAQ,aAAa,MAAM,IAAI;AAC5D,WAAC,QAAQ,aAAa;AAAA,QACxB,WAAW,QAAQ,QAAQ,cAAc;AACvC,iBAAO,KAAK,GAAG,QAAQ,MAAM;AAC3B,aAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE;AAAA,UAC/C;AAAA,QACF;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,YAAI;AACJ,YAAI,IAAI,aAAa,MAAM,QAAQ,aAAa,aAAa,GAAG;AAC9D,cAAI,WAAW;AACf,gBAAM,KAAK,IAAI,GAAG;AAClB,cAAI,YAAY;AAChB,iBAAO;AAAA,QACT,WAAW,IAAI,aAAa,MAAM,QAAQ,aAAa,aAAa,GAAG;AACrE,WAAC,QAAQ,aAAa,WAAW;AACjC,gBAAM,IAAI,IAAI,QAAQ,WAAW;AACjC,WAAC,QAAQ,aAAa,WAAW;AACjC,iBAAO;AAAA,QACT;AACA,aAAK,QAAQ,aAAa,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AAC3E,eAAO,IAAI,MAAM,EAAE,KAAK,QAAQ,WAAW;AAAA,MAC7C;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,YAAI,IAAI,aAAa,GAAG;AACtB,cAAI,WAAW;AACf,cAAI,KAAK,KAAK,KAAK,GAAG;AACtB,cAAI,WAAW;AACf,iBAAO,GAAG,UAAU;AAAA,QACtB,YAAY,QAAQ,aAAa,aAAa,GAAG;AAC/C,WAAC,QAAQ,aAAa,WAAW;AACjC,eAAK,KAAK,GAAG;AACb,WAAC,QAAQ,aAAa,WAAW;AACjC,iBAAO,KAAK,UAAU;AAAA,QACxB;AACA,YAAI,MAAM,KAAK,IAAI,GAAG;AACtB,YAAI,QAAQ,GAAG;AACb,WAAC,QAAQ,aAAa,WAAW;AACjC,WAAC,QAAQ,aAAa,SAAS;AAC/B,WAAC,QAAQ,aAAa,MAAM,CAAC,IAAI;AACjC,iBAAO,QAAQ;AAAA,QACjB;AACA,YAAI,IAAI;AACR,YAAI,MAAM,GAAG;AACX,eAAK,QAAQ;AACb,eAAK;AAAA,QACP,OAAO;AACL,eAAK;AACL,eAAK,QAAQ;AAAA,QACf;AACA,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,gBAAM,GAAG,MAAM,EAAE,IAAI,MAAM,GAAG,MAAM,EAAE,IAAI,KAAK;AAC/C,kBAAQ,MAAM;AACd,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AAAA,QACzC;AACA,eAAO,UAAU,KAAK,KAAK,GAAG,QAAQ,MAAM;AAC1C,gBAAM,GAAG,MAAM,EAAE,IAAI,KAAK;AAC1B,kBAAQ,MAAM;AACd,WAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,KAAK;AAAA,QACzC;AACA,YAAI,UAAU,KAAK,KAAK,GAAG,UAAU,QAAQ,QAAQ,cAAc;AACjE,iBAAO,KAAK,GAAG,QAAQ,MAAM;AAC3B,aAAC,QAAQ,aAAa,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE;AAAA,UAC/C;AAAA,QACF;AACA,SAAC,QAAQ,aAAa,SAAS,KAAK,KAAK,QAAQ,aAAa,QAAQ,EAAE;AACxE,YAAI,QAAQ,QAAQ,cAAc;AAChC,WAAC,QAAQ,aAAa,WAAW;AAAA,QACnC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AAAA,MAC9B;AACA,eAAS,WAAW,OAAO,KAAK,KAAK;AACnC,YAAI,WAAW,IAAI,WAAW,MAAM;AACpC,YAAI,MAAM,MAAM,SAAS,IAAI,SAAS;AACtC,YAAI,SAAS;AACb,cAAM,MAAM,IAAI;AAChB,YAAI,KAAK,MAAM,MAAM,CAAC,IAAI;AAC1B,YAAI,KAAK,IAAI,MAAM,CAAC,IAAI;AACxB,YAAI,KAAK,KAAK;AACd,YAAI,KAAK,KAAK;AACd,YAAI,QAAQ,KAAK,WAAW;AAC5B,YAAI,MAAM,CAAC,IAAI;AACf,iBAAS,KAAK,GAAG,KAAK,KAAK,MAAM;AAC/B,cAAI,SAAS,UAAU;AACvB,cAAI,QAAQ,QAAQ;AACpB,cAAI,OAAO,KAAK,IAAI,IAAI,IAAI,SAAS,CAAC;AACtC,mBAAS,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC,GAAG,MAAM,MAAM,MAAM;AAClE,gBAAI,KAAK,KAAK,KAAK;AACnB,iBAAK,MAAM,MAAM,EAAE,IAAI;AACvB,iBAAK,IAAI,MAAM,EAAE,IAAI;AACrB,iBAAK,KAAK,KAAK;AACf,sBAAU,KAAK,WAAW;AAC1B,oBAAQ,KAAK;AAAA,UACf;AACA,cAAI,MAAM,EAAE,IAAI,QAAQ;AACxB,kBAAQ,SAAS;AAAA,QACnB;AACA,YAAI,UAAU,GAAG;AACf,cAAI,MAAM,EAAE,IAAI,QAAQ;AAAA,QAC1B,OAAO;AACL,cAAI;AAAA,QACN;AACA,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,UAAI,cAAc,SAAS,aAAa,OAAO,KAAK,KAAK;AACvD,YAAI,KAAK,MAAM;AACf,YAAI,KAAK,IAAI;AACb,YAAI,KAAK,IAAI;AACb,YAAI,KAAK;AACT,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAIqB,OAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAMA,OAAM;AAChB,YAAI,MAAMA,SAAQ;AAClB,YAAIC,OAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAMA,OAAM;AAChB,YAAI,MAAMA,SAAQ;AAClB,YAAI,MAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAM,MAAM;AAChB,YAAI,MAAM,QAAQ;AAClB,YAAI,MAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAM,MAAM;AAChB,YAAI,MAAM,QAAQ;AAClB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAIC,OAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAMA,OAAM;AAChB,YAAI,MAAMA,SAAQ;AAClB,YAAI,MAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAM,MAAM;AAChB,YAAI,MAAM,QAAQ;AAClB,YAAI,MAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAM,MAAM;AAChB,YAAI,MAAM,QAAQ;AAClB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,WAAW,MAAM,WAAW,IAAI;AACpC,YAAI,SAAS;AACb,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAIC,QAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAMA,SAAQ,MAAM;AAC9C,QAAAA,QAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAA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G;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAA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IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,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AoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,kEAAkE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEA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AAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAIA;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,CAAC,IAAI;AACR,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,WAAG,EAAE,IAAI;AACT,YAAI,OAAO,GAAG;AACZ,aAAG,EAAE,IAAI;AACT,cAAI;AAAA,QACN;AACA,eAAO;AAAA,MACT;AACA,UAAI,CAAC,KAAK,MAAM;AACd,sBAAc;AAAA,MAChB;AACA,eAAS,SAAS,OAAO,KAAK,KAAK;AACjC,YAAI,WAAW,IAAI,WAAW,MAAM;AACpC,YAAI,SAAS,MAAM,SAAS,IAAI;AAChC,YAAI,QAAQ;AACZ,YAAI,UAAU;AACd,iBAAS,KAAK,GAAG,KAAK,IAAI,SAAS,GAAG,MAAM;AAC1C,cAAI,SAAS;AACb,oBAAU;AACV,cAAI,QAAQ,QAAQ;AACpB,cAAI,OAAO,KAAK,IAAI,IAAI,IAAI,SAAS,CAAC;AACtC,mBAAS,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC,GAAG,MAAM,MAAM,MAAM;AAClE,gBAAI,KAAK,KAAK;AACd,gBAAI,KAAK,MAAM,MAAM,EAAE,IAAI;AAC3B,gBAAI,KAAK,IAAI,MAAM,EAAE,IAAI;AACzB,gBAAI,KAAK,KAAK;AACd,gBAAI,KAAK,KAAK;AACd,qBAAS,UAAU,KAAK,WAAW,KAAK;AACxC,iBAAK,KAAK,QAAQ;AAClB,oBAAQ,KAAK;AACb,qBAAS,UAAU,OAAO,MAAM;AAChC,uBAAW,WAAW;AACtB,sBAAU;AAAA,UACZ;AACA,cAAI,MAAM,EAAE,IAAI;AAChB,kBAAQ;AACR,mBAAS;AAAA,QACX;AACA,YAAI,UAAU,GAAG;AACf,cAAI,MAAM,EAAE,IAAI;AAAA,QAClB,OAAO;AACL,cAAI;AAAA,QACN;AACA,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,eAAS,WAAW,OAAO,KAAK,KAAK;AACnC,YAAI,OAAO,IAAI,KAAK;AACpB,eAAO,KAAK,KAAK,OAAO,KAAK,GAAG;AAAA,MAClC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK,KAAK;AAC5C,YAAI;AACJ,YAAI,OAAO,QAAQ,WAAW,SAAS,IAAI;AAC3C,aAAK,QAAQ,WAAW,WAAW,MAAM,IAAI,WAAW,IAAI;AAC1D,gBAAM,YAAY,QAAQ,WAAW,KAAK,GAAG;AAAA,QAC/C,WAAW,MAAM,IAAI;AACnB,gBAAM,WAAW,QAAQ,WAAW,KAAK,GAAG;AAAA,QAC9C,WAAW,MAAM,MAAM;AACrB,gBAAM,SAAS,QAAQ,WAAW,KAAK,GAAG;AAAA,QAC5C,OAAO;AACL,gBAAM,WAAW,QAAQ,WAAW,KAAK,GAAG;AAAA,QAC9C;AACA,eAAO;AAAA,MACT;AACA,eAAS,KAAK,IAAI,IAAI;AACpB,SAAC,QAAQ,WAAW,IAAI;AACxB,SAAC,QAAQ,WAAW,IAAI;AAAA,MAC1B;AACA,WAAK,UAAU,UAAU,SAAS,QAAQ,IAAI;AAC5C,YAAI,KAAK,IAAI,MAAM,EAAE;AACrB,YAAI,KAAK,GAAG,UAAU,WAAW,EAAE,IAAI;AACvC,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,aAAG,EAAE,IAAI,KAAK,OAAO,IAAI,IAAI,EAAE;AAAA,QACjC;AACA,eAAO;AAAA,MACT;AACA,WAAK,UAAU,SAAS,SAAS,OAAO,IAAI,IAAI,IAAI;AAClD,YAAI,OAAO,KAAK,OAAO,KAAK,EAAG,QAAO;AACtC,YAAI,KAAK;AACT,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,iBAAO,KAAK,MAAM,KAAK,KAAK;AAC5B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AACA,WAAK,UAAU,UAAU,SAAS,QAAQ,KAAK,KAAK,KAAK,MAAM,MAAM,IAAI;AACvE,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,eAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AACtB,eAAK,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AAAA,QACxB;AAAA,MACF;AACA,WAAK,UAAU,YAAY,SAAS,UAAU,KAAK,KAAK,MAAM,MAAM,IAAI,KAAK;AAC3E,aAAK,QAAQ,KAAK,KAAK,KAAK,MAAM,MAAM,EAAE;AAC1C,iBAAS,KAAK,GAAG,KAAK,IAAI,OAAO,GAAG;AAClC,cAAI,KAAK,MAAM;AACf,cAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;AACrC,cAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;AACrC,mBAAS,KAAK,GAAG,KAAK,IAAI,MAAM,IAAI;AAClC,gBAAI,SAAS;AACb,gBAAI,SAAS;AACb,qBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,kBAAI,MAAM,KAAK,KAAK,EAAE;AACtB,kBAAIC,OAAM,KAAK,KAAK,EAAE;AACtB,kBAAIC,MAAK,KAAK,KAAK,KAAK,EAAE;AAC1B,kBAAI,KAAK,KAAK,KAAK,KAAK,EAAE;AAC1B,kBAAI,KAAK,SAASA,MAAK,SAAS;AAChC,mBAAK,SAAS,KAAK,SAASA;AAC5B,cAAAA,MAAK;AACL,mBAAK,KAAK,EAAE,IAAI,MAAMA;AACtB,mBAAK,KAAK,EAAE,IAAID,OAAM;AACtB,mBAAK,KAAK,KAAK,EAAE,IAAI,MAAMC;AAC3B,mBAAK,KAAK,KAAK,EAAE,IAAID,OAAM;AAC3B,kBAAI,OAAO,IAAI;AACb,qBAAK,QAAQ,SAAS,QAAQ;AAC9B,yBAAS,QAAQ,SAAS,QAAQ;AAClC,yBAAS;AAAA,cACX;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,WAAK,UAAU,cAAc,SAAS,YAAY,IAAI1N,KAAI;AACxD,YAAI,KAAK,KAAK,IAAIA,KAAI,EAAE,IAAI;AAC5B,YAAI,MAAM,KAAK;AACf,YAAI,KAAK;AACT,aAAK,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK,OAAO,GAAG;AACvC;AAAA,QACF;AACA,eAAO,KAAK,KAAK,IAAI;AAAA,MACvB;AACA,WAAK,UAAU,YAAY,SAAS,UAAU,KAAK,KAAK,IAAI;AAC1D,YAAI,MAAM,EAAG;AACb,iBAAS,KAAK,GAAG,KAAK,KAAK,GAAG,MAAM;AAClC,cAAI,KAAK,IAAI,EAAE;AACf,cAAI,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC;AACzB,cAAI,KAAK,KAAK,CAAC,IAAI;AACnB,eAAK,IAAI,EAAE;AACX,cAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC;AAC1B,cAAI,KAAK,KAAK,CAAC,IAAI,CAAC;AAAA,QACtB;AAAA,MACF;AACA,WAAK,UAAU,eAAe,SAAS,aAAa,IAAI,IAAI;AAC1D,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,KAAK,GAAG,MAAM;AAClC,cAAI,KAAK,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,OAAO,KAAK,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI;AAChF,aAAG,EAAE,IAAI,KAAK;AACd,cAAI,KAAK,UAAU;AACjB,oBAAQ;AAAA,UACV,OAAO;AACL,oBAAQ,KAAK,WAAW;AAAA,UAC1B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,WAAK,UAAU,aAAa,SAAS,WAAW,IAAI,KAAK,KAAK,IAAI;AAChE,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,KAAK,MAAM;AAC/B,kBAAQ,SAAS,GAAG,EAAE,IAAI;AAC1B,cAAI,IAAI,EAAE,IAAI,QAAQ;AACtB,kBAAQ,UAAU;AAClB,cAAI,IAAI,KAAK,CAAC,IAAI,QAAQ;AAC1B,kBAAQ,UAAU;AAAA,QACpB;AACA,aAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI;AAChC,cAAI,EAAE,IAAI;AAAA,QACZ;AACA,QAAAkM,SAAQ,UAAU,CAAC;AACnB,QAAAA,UAAS,QAAQ,CAAC,UAAU,CAAC;AAAA,MAC/B;AACA,WAAK,UAAU,OAAO,SAAS,KAAK,IAAI;AACtC,YAAI,KAAK,IAAI,MAAM,EAAE;AACrB,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,aAAG,EAAE,IAAI;AAAA,QACX;AACA,eAAO;AAAA,MACT;AACA,WAAK,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI,KAAK;AAC/C,YAAI,KAAK,IAAI,KAAK,YAAY,GAAG,QAAQ,GAAG,MAAM;AAClD,YAAI,MAAM,KAAK,QAAQ,EAAE;AACzB,YAAIlE,MAAK,KAAK,KAAK,EAAE;AACrB,YAAI,MAAM,IAAI,MAAM,EAAE;AACtB,YAAI,OAAO,IAAI,MAAM,EAAE;AACvB,YAAI,OAAO,IAAI,MAAM,EAAE;AACvB,YAAI,OAAO,IAAI,MAAM,EAAE;AACvB,YAAI,QAAQ,IAAI,MAAM,EAAE;AACxB,YAAI,QAAQ,IAAI,MAAM,EAAE;AACxB,YAAI,OAAO,IAAI;AACf,aAAK,SAAS;AACd,aAAK,WAAW,GAAG,OAAO,GAAG,QAAQ,KAAK,EAAE;AAC5C,aAAK,WAAW,GAAG,OAAO,GAAG,QAAQ,MAAM,EAAE;AAC7C,aAAK,UAAU,KAAKA,KAAI,MAAM,MAAM,IAAI,GAAG;AAC3C,aAAK,UAAU,MAAMA,KAAI,OAAO,OAAO,IAAI,GAAG;AAC9C,iBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,cAAI,KAAK,KAAK,EAAE,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE;AACnD,eAAK,EAAE,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE;AACrD,eAAK,EAAE,IAAI;AAAA,QACb;AACA,aAAK,UAAU,MAAM,MAAM,EAAE;AAC7B,aAAK,UAAU,MAAM,MAAM,MAAMA,KAAI,IAAI,GAAG;AAC5C,aAAK,UAAU,MAAMA,KAAI,EAAE;AAC3B,aAAK,aAAa,MAAM,EAAE;AAC1B,YAAI,WAAW,GAAG,WAAW,GAAG;AAChC,YAAI,SAAS,GAAG,SAAS,GAAG;AAC5B,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,OAAO,QAAQ,WAAW,SAAS,IAAI,MAAM;AAC7D,eAAO,KAAK,MAAM,KAAK,GAAG;AAAA,MAC5B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,OAAO,QAAQ,WAAW,SAAS,IAAI,MAAM;AAC7D,eAAO,WAAW,QAAQ,WAAW,KAAK,GAAG;AAAA,MAC/C;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,KAAK,QAAQ,SAAS;AAAA,MAClD;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAkE,SAAQ,OAAO,QAAQ,QAAQ;AAC/B,QAAAA,SAAQ,MAAM,QAAQ;AACtB,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AACtD,cAAI,OAAO,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AAC/C,cAAI,MAAM,KAAK,aAAa,QAAQ;AACpC,oBAAU;AACV,mBAAS,KAAK,WAAW;AACzB,mBAAS,OAAO;AAChB,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AAAA,QACvC;AACA,YAAI,UAAU,GAAG;AACf,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI;AAChC,WAAC,QAAQ,WAAW;AAAA,QACtB;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AACA,SAAG,UAAU,MAAM,SAAS,MAAM;AAChC,eAAO,KAAK,IAAI,QAAQ,SAAS;AAAA,MACnC;AACA,SAAG,UAAU,OAAO,SAAS,OAAO;AAClC,eAAO,KAAK,KAAK,KAAK,MAAM,CAAC;AAAA,MAC/B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,YAAI,KAAK,WAAW,GAAG;AACvB,YAAI,GAAG,WAAW,EAAG,QAAO,IAAI,GAAG,CAAC;AACpC,YAAI,MAAM,QAAQ;AAClB,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM,MAAM,IAAI,IAAI,GAAG;AACtD,cAAI,GAAG,EAAE,MAAM,EAAG;AAAA,QACpB;AACA,YAAI,EAAE,KAAK,GAAG,QAAQ;AACpB,mBAAS,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG;AAC5D,gBAAI,GAAG,EAAE,MAAM,EAAG;AAClB,kBAAM,IAAI,IAAI,EAAE;AAAA,UAClB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,MAAM;AAC1C,QAAAA,SAAQ,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC7C,YAAI,KAAK,OAAO;AAChB,YAAI,MAAM,OAAO,MAAM;AACvB,YAAI,YAAY,aAAa,KAAK,MAAM,KAAK;AAC7C,YAAI;AACJ,YAAI,OAAO,GAAG;AACZ,cAAI,QAAQ;AACZ,eAAK,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AAClD,gBAAI,YAAY,QAAQ,WAAW,MAAM,EAAE,IAAI;AAC/C,gBAAI,OAAO,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK,YAAY;AAC3D,aAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AACrC,oBAAQ,aAAa,KAAK;AAAA,UAC5B;AACA,cAAI,OAAO;AACT,aAAC,QAAQ,WAAW,MAAM,EAAE,IAAI;AAChC,aAAC,QAAQ,WAAW;AAAA,UACtB;AAAA,QACF;AACA,YAAI,OAAO,GAAG;AACZ,eAAK,MAAM,QAAQ,WAAW,SAAS,GAAG,MAAM,GAAG,MAAM;AACvD,aAAC,QAAQ,WAAW,MAAM,KAAK,EAAE,KAAK,QAAQ,WAAW,MAAM,EAAE;AAAA,UACnE;AACA,eAAK,KAAK,GAAG,KAAK,IAAI,MAAM;AAC1B,aAAC,QAAQ,WAAW,MAAM,EAAE,IAAI;AAAA,UAClC;AACA,WAAC,QAAQ,WAAW,UAAU;AAAA,QAChC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM;AACxC,QAAAA,UAAS,QAAQ,WAAW,aAAa,CAAC;AAC1C,eAAO,KAAK,OAAO,IAAI;AAAA,MACzB;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,MAAM,MAAM,UAAU;AAC1D,QAAAA,SAAQ,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC7C,YAAI;AACJ,YAAI,MAAM;AACR,gBAAM,OAAO,OAAO,MAAM;AAAA,QAC5B,OAAO;AACL,eAAK;AAAA,QACP;AACA,YAAI,KAAK,OAAO;AAChB,YAAI,KAAK,KAAK,KAAK,OAAO,MAAM,KAAK,QAAQ,WAAW,MAAM;AAC9D,YAAI,OAAO,WAAW,aAAa,MAAM;AACzC,YAAI,cAAc;AAClB,cAAM;AACN,aAAK,KAAK,IAAI,GAAG,EAAE;AACnB,YAAI,aAAa;AACf,mBAAS,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9B,wBAAY,MAAM,EAAE,KAAK,QAAQ,WAAW,MAAM,EAAE;AAAA,UACtD;AACA,sBAAY,SAAS;AAAA,QACvB;AACA,YAAI,OAAO,EAAG;AAAA,kBACJ,QAAQ,WAAW,SAAS,IAAI;AACxC,WAAC,QAAQ,WAAW,UAAU;AAC9B,eAAK,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AAClD,aAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,QAAQ,WAAW,MAAM,KAAK,EAAE;AAAA,UACnE;AAAA,QACF,OAAO;AACL,WAAC,QAAQ,WAAW,MAAM,CAAC,IAAI;AAC/B,WAAC,QAAQ,WAAW,SAAS;AAAA,QAC/B;AACA,YAAI,QAAQ;AACZ,aAAK,MAAM,QAAQ,WAAW,SAAS,GAAG,MAAM,MAAM,UAAU,KAAK,MAAM,KAAK,MAAM;AACpF,cAAI,QAAQ,QAAQ,WAAW,MAAM,EAAE,IAAI;AAC3C,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,SAAS,KAAK,KAAK,SAAS;AAC5D,kBAAQ,OAAO;AAAA,QACjB;AACA,YAAI,eAAe,UAAU,GAAG;AAC9B,sBAAY,MAAM,YAAY,QAAQ,IAAI;AAAA,QAC5C;AACA,aAAK,QAAQ,WAAW,WAAW,GAAG;AACpC,WAAC,QAAQ,WAAW,MAAM,CAAC,IAAI;AAC/B,WAAC,QAAQ,WAAW,SAAS;AAAA,QAC/B;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM,MAAM,UAAU;AACxD,QAAAA,UAAS,QAAQ,WAAW,aAAa,CAAC;AAC1C,eAAO,KAAK,OAAO,MAAM,MAAM,QAAQ;AAAA,MACzC;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,MAAM;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,IAAI;AAAA,MAChC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM;AACxC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,MAAM;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,IAAI;AAAA,MAChC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM;AACxC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAA,SAAQ,OAAO,QAAQ,YAAY,OAAO,CAAC;AAC3C,YAAI,KAAK,MAAM;AACf,YAAI,MAAM,MAAM,MAAM;AACtB,YAAI,KAAK,KAAK;AACd,aAAK,QAAQ,WAAW,UAAU,GAAI,QAAO;AAC7C,YAAI,MAAM,QAAQ,WAAW,MAAM,EAAE;AACrC,eAAO,CAAC,EAAE,KAAK;AAAA,MACjB;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,MAAM;AAC1C,QAAAA,SAAQ,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC7C,YAAI,KAAK,OAAO;AAChB,YAAI,MAAM,OAAO,MAAM;AACvB,QAAAA,UAAS,QAAQ,WAAW,aAAa,GAAG,yCAAyC;AACrF,aAAK,QAAQ,WAAW,UAAU,IAAI;AACpC,iBAAO,QAAQ;AAAA,QACjB;AACA,YAAI,OAAO,GAAG;AACZ;AAAA,QACF;AACA,SAAC,QAAQ,WAAW,SAAS,KAAK,IAAI,KAAK,QAAQ,WAAW,MAAM;AACpE,YAAI,OAAO,GAAG;AACZ,cAAI,OAAO,WAAW,aAAa,MAAM;AACzC,WAAC,QAAQ,WAAW,OAAO,QAAQ,WAAW,SAAS,CAAC,KAAK;AAAA,QAC/D;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,MAAM;AACxC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAA,SAAQ,OAAO,QAAQ,QAAQ;AAC/B,QAAAA,SAAQ,MAAM,QAAQ;AACtB,YAAI,MAAM,EAAG,QAAO,KAAK,MAAM,CAAC,GAAG;AACnC,aAAK,QAAQ,WAAW,aAAa,GAAG;AACtC,eAAK,QAAQ,WAAW,WAAW,OAAO,QAAQ,WAAW,MAAM,CAAC,IAAI,KAAK,KAAK;AAChF,aAAC,QAAQ,WAAW,MAAM,CAAC,IAAI,QAAQ,QAAQ,WAAW,MAAM,CAAC,IAAI;AACrE,aAAC,QAAQ,WAAW,WAAW;AAC/B,mBAAO,QAAQ;AAAA,UACjB;AACA,WAAC,QAAQ,WAAW,WAAW;AAC/B,eAAK,MAAM,GAAG;AACd,WAAC,QAAQ,WAAW,WAAW;AAC/B,iBAAO,QAAQ;AAAA,QACjB;AACA,eAAO,KAAK,OAAO,GAAG;AAAA,MACxB;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,SAAC,QAAQ,WAAW,MAAM,CAAC,KAAK;AAChC,iBAAS,KAAK,GAAG,MAAM,QAAQ,WAAW,WAAW,QAAQ,WAAW,MAAM,EAAE,KAAK,UAAU,MAAM;AACnG,WAAC,QAAQ,WAAW,MAAM,EAAE,KAAK;AACjC,cAAI,QAAQ,QAAQ,WAAW,SAAS,GAAG;AACzC,aAAC,QAAQ,WAAW,MAAM,KAAK,CAAC,IAAI;AAAA,UACtC,OAAO;AACL,aAAC,QAAQ,WAAW,MAAM,KAAK,CAAC;AAAA,UAClC;AAAA,QACF;AACA,SAAC,QAAQ,WAAW,SAAS,KAAK,KAAK,QAAQ,WAAW,QAAQ,KAAK,CAAC;AACxE,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAA,SAAQ,OAAO,QAAQ,QAAQ;AAC/B,QAAAA,SAAQ,MAAM,QAAQ;AACtB,YAAI,MAAM,EAAG,QAAO,KAAK,MAAM,CAAC,GAAG;AACnC,aAAK,QAAQ,WAAW,aAAa,GAAG;AACtC,WAAC,QAAQ,WAAW,WAAW;AAC/B,eAAK,MAAM,GAAG;AACd,WAAC,QAAQ,WAAW,WAAW;AAC/B,iBAAO,QAAQ;AAAA,QACjB;AACA,SAAC,QAAQ,WAAW,MAAM,CAAC,KAAK;AAChC,aAAK,QAAQ,WAAW,WAAW,MAAM,QAAQ,WAAW,MAAM,CAAC,IAAI,GAAG;AACxE,WAAC,QAAQ,WAAW,MAAM,CAAC,IAAI,EAAE,QAAQ,WAAW,MAAM,CAAC;AAC3D,WAAC,QAAQ,WAAW,WAAW;AAAA,QACjC,OAAO;AACL,mBAAS,KAAK,GAAG,MAAM,QAAQ,WAAW,WAAW,QAAQ,WAAW,MAAM,EAAE,IAAI,GAAG,MAAM;AAC3F,aAAC,QAAQ,WAAW,MAAM,EAAE,KAAK;AACjC,aAAC,QAAQ,WAAW,MAAM,KAAK,CAAC,KAAK;AAAA,UACvC;AAAA,QACF;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AACA,SAAG,UAAU,OAAO,SAAS,OAAO;AAClC,SAAC,QAAQ,WAAW,WAAW;AAC/B,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,MAAM,SAAS,MAAM;AAChC,eAAO,KAAK,MAAM,EAAE,KAAK;AAAA,MAC3B;AACA,SAAG,UAAU,eAAe,SAAS,aAAa,KAAK,KAAK,OAAO;AACjE,YAAI,MAAM,IAAI,SAAS;AACvB,YAAI;AACJ,aAAK,QAAQ,GAAG;AAChB,YAAI;AACJ,YAAI,QAAQ;AACZ,aAAK,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AAClC,iBAAO,QAAQ,WAAW,MAAM,KAAK,KAAK,IAAI,KAAK;AACnD,cAAI,SAAS,IAAI,MAAM,EAAE,IAAI,KAAK;AAClC,gBAAM,QAAQ;AACd,mBAAS,MAAM,OAAO,QAAQ,WAAW;AACzC,WAAC,QAAQ,WAAW,MAAM,KAAK,KAAK,IAAI,KAAK;AAAA,QAC/C;AACA,eAAO,MAAM,QAAQ,WAAW,SAAS,OAAO,MAAM;AACpD,iBAAO,QAAQ,WAAW,MAAM,KAAK,KAAK,IAAI,KAAK;AACnD,kBAAQ,MAAM;AACd,WAAC,QAAQ,WAAW,MAAM,KAAK,KAAK,IAAI,KAAK;AAAA,QAC/C;AACA,YAAI,UAAU,EAAG,QAAO,KAAK,MAAM;AACnC,QAAAA,SAAQ,UAAU,EAAE;AACpB,gBAAQ;AACR,aAAK,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AAClD,eAAK,GAAG,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AAC5C,kBAAQ,MAAM;AACd,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AAAA,QACvC;AACA,SAAC,QAAQ,WAAW,WAAW;AAC/B,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,KAAK,MAAM;AACnD,YAAI,SAAS,QAAQ,WAAW,SAAS,IAAI;AAC7C,YAAI,KAAK,KAAK,MAAM;AACpB,YAAI,KAAK;AACT,YAAI,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI;AACpC,YAAI,UAAU,KAAK,WAAW,GAAG;AACjC,gBAAQ,KAAK;AACb,YAAI,UAAU,GAAG;AACf,eAAK,GAAG,MAAM,KAAK;AACnB,aAAG,OAAO,KAAK;AACf,gBAAM,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI;AAAA,QAClC;AACA,YAAIlM,MAAK,GAAG,SAAS,GAAG;AACxB,YAAI;AACJ,YAAI,SAAS,OAAO;AAClB,eAAK,IAAI,GAAG,IAAI;AAChB,aAAG,SAASA,MAAK;AACjB,aAAG,QAAQ,IAAI,MAAM,GAAG,MAAM;AAC9B,mBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,eAAG,MAAM,EAAE,IAAI;AAAA,UACjB;AAAA,QACF;AACA,YAAI,OAAO,GAAG,MAAM,EAAE,aAAa,IAAI,GAAGA,GAAE;AAC5C,YAAI,KAAK,aAAa,GAAG;AACvB,eAAK;AACL,cAAI,IAAI;AACN,eAAG,MAAMA,GAAE,IAAI;AAAA,UACjB;AAAA,QACF;AACA,iBAAS,KAAKA,MAAK,GAAG,MAAM,GAAG,MAAM;AACnC,cAAI,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,IAAI,KAAK,YAAY,GAAG,MAAM,GAAG,SAAS,KAAK,CAAC,IAAI;AACrF,eAAK,KAAK,IAAI,KAAK,MAAM,GAAG,QAAQ;AACpC,aAAG,aAAa,IAAI,IAAI,EAAE;AAC1B,iBAAO,GAAG,aAAa,GAAG;AACxB;AACA,eAAG,WAAW;AACd,eAAG,aAAa,IAAI,GAAG,EAAE;AACzB,gBAAI,CAAC,GAAG,OAAO,GAAG;AAChB,iBAAG,YAAY;AAAA,YACjB;AAAA,UACF;AACA,cAAI,IAAI;AACN,eAAG,MAAM,EAAE,IAAI;AAAA,UACjB;AAAA,QACF;AACA,YAAI,IAAI;AACN,aAAG,MAAM;AAAA,QACX;AACA,WAAG,MAAM;AACT,YAAI,SAAS,SAAS,UAAU,GAAG;AACjC,aAAG,OAAO,KAAK;AAAA,QACjB;AACA,eAAO;AAAA,UACL,KAAK,MAAM;AAAA,UACX,KAAK;AAAA,QACP;AAAA,MACF;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK,MAAM,UAAU;AACzD,QAAAkM,SAAQ,CAAC,IAAI,OAAO,CAAC;AACrB,YAAI,KAAK,OAAO,GAAG;AACjB,iBAAO;AAAA,YACL,KAAK,IAAI,GAAG,CAAC;AAAA,YACb,KAAK,IAAI,GAAG,CAAC;AAAA,UACf;AAAA,QACF;AACA,YAAI,KAAKkB,MAAK;AACd,aAAK,QAAQ,WAAW,aAAa,KAAK,IAAI,aAAa,GAAG;AAC5D,gBAAM,KAAK,IAAI,EAAE,OAAO,KAAK,IAAI;AACjC,cAAI,SAAS,OAAO;AAClB,kBAAM,IAAI,IAAI,IAAI;AAAA,UACpB;AACA,cAAI,SAAS,OAAO;AAClB,YAAAA,OAAM,IAAI,IAAI,IAAI;AAClB,gBAAI,YAAYA,KAAI,aAAa,GAAG;AAClC,cAAAA,KAAI,KAAK,GAAG;AAAA,YACd;AAAA,UACF;AACA,iBAAO;AAAA,YACL;AAAA,YACA,KAAAA;AAAA,UACF;AAAA,QACF;AACA,aAAK,QAAQ,WAAW,aAAa,KAAK,IAAI,aAAa,GAAG;AAC5D,gBAAM,KAAK,OAAO,IAAI,IAAI,GAAG,IAAI;AACjC,cAAI,SAAS,OAAO;AAClB,kBAAM,IAAI,IAAI,IAAI;AAAA,UACpB;AACA,iBAAO;AAAA,YACL;AAAA,YACA,KAAK,IAAI;AAAA,UACX;AAAA,QACF;AACA,cAAM,QAAQ,WAAW,WAAW,IAAI,cAAc,GAAG;AACvD,gBAAM,KAAK,IAAI,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI;AACvC,cAAI,SAAS,OAAO;AAClB,YAAAA,OAAM,IAAI,IAAI,IAAI;AAClB,gBAAI,YAAYA,KAAI,aAAa,GAAG;AAClC,cAAAA,KAAI,KAAK,GAAG;AAAA,YACd;AAAA,UACF;AACA,iBAAO;AAAA,YACL,KAAK,IAAI;AAAA,YACT,KAAAA;AAAA,UACF;AAAA,QACF;AACA,YAAI,IAAI,UAAU,QAAQ,WAAW,UAAU,KAAK,IAAI,GAAG,IAAI,GAAG;AAChE,iBAAO;AAAA,YACL,KAAK,IAAI,GAAG,CAAC;AAAA,YACb,KAAK,QAAQ;AAAA,UACf;AAAA,QACF;AACA,YAAI,IAAI,WAAW,GAAG;AACpB,cAAI,SAAS,OAAO;AAClB,mBAAO;AAAA,cACL,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,cAC3B,KAAK;AAAA,YACP;AAAA,UACF;AACA,cAAI,SAAS,OAAO;AAClB,mBAAO;AAAA,cACL,KAAK;AAAA,cACL,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,YACrC;AAAA,UACF;AACA,iBAAO;AAAA,YACL,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,YAC3B,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,UACrC;AAAA,QACF;AACA,eAAO,KAAK,SAAS,KAAK,IAAI;AAAA,MAChC;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE;AAAA,MACxC;AACA,SAAG,UAAU,MAAM,SAASA,KAAI,KAAK;AACnC,eAAO,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE;AAAA,MACxC;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,OAAO,KAAK,OAAO,IAAI,EAAE;AAAA,MACvC;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,KAAK;AAC7C,YAAI,KAAK,KAAK,OAAO,GAAG;AACxB,YAAI,GAAG,IAAI,OAAO,EAAG,QAAO,GAAG;AAC/B,YAAIA,OAAM,GAAG,IAAI,aAAa,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,GAAG;AACxD,YAAI,OAAO,IAAI,MAAM,CAAC;AACtB,YAAI,MAAM,IAAI,MAAM,CAAC;AACrB,YAAI,MAAMA,KAAI,IAAI,IAAI;AACtB,YAAI,MAAM,KAAK,QAAQ,KAAK,QAAQ,EAAG,QAAO,GAAG;AACjD,eAAO,GAAG,IAAI,aAAa,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;AAAA,MACjE;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,QAAAlB,SAAQ,OAAO,QAAQ;AACvB,YAAI,MAAM,KAAK,MAAM;AACrB,YAAI,MAAM;AACV,iBAAS,MAAM,QAAQ,WAAW,SAAS,GAAG,MAAM,GAAG,MAAM;AAC3D,iBAAO,KAAK,QAAQ,QAAQ,WAAW,MAAM,EAAE,IAAI,MAAM;AAAA,QAC3D;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAA,SAAQ,OAAO,QAAQ;AACvB,YAAI,QAAQ;AACZ,iBAAS,MAAM,QAAQ,WAAW,SAAS,GAAG,MAAM,GAAG,MAAM;AAC3D,cAAI,OAAO,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK,QAAQ;AACvD,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK,MAAM;AAC3C,kBAAQ,KAAK;AAAA,QACf;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,IAAI;AACpC,QAAAA,SAAQ,GAAG,aAAa,CAAC;AACzB,QAAAA,SAAQ,CAAC,GAAG,OAAO,CAAC;AACpB,YAAI,KAAK,QAAQ;AACjB,YAAI,KAAK,GAAG,MAAM;AAClB,YAAI,GAAG,aAAa,GAAG;AACrB,eAAK,GAAG,KAAK,EAAE;AAAA,QACjB,OAAO;AACL,eAAK,GAAG,MAAM;AAAA,QAChB;AACA,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK;AACT,eAAO,GAAG,OAAO,KAAK,GAAG,OAAO,GAAG;AACjC,aAAG,OAAO,CAAC;AACX,aAAG,OAAO,CAAC;AACX,YAAE;AAAA,QACJ;AACA,YAAI,KAAK,GAAG,MAAM;AAClB,YAAI,KAAK,GAAG,MAAM;AAClB,eAAO,CAAC,GAAG,OAAO,GAAG;AACnB,mBAAS,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,OAAO,EAAG;AAC9E,cAAI,KAAK,GAAG;AACV,eAAG,OAAO,EAAE;AACZ,mBAAO,OAAO,GAAG;AACf,kBAAI,GAAG,MAAM,KAAK,GAAG,MAAM,GAAG;AAC5B,mBAAG,KAAK,EAAE;AACV,mBAAG,KAAK,EAAE;AAAA,cACZ;AACA,iBAAG,OAAO,CAAC;AACX,iBAAG,OAAO,CAAC;AAAA,YACb;AAAA,UACF;AACA,mBAAS,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,OAAO,EAAG;AAC9E,cAAI,KAAK,GAAG;AACV,eAAG,OAAO,EAAE;AACZ,mBAAO,OAAO,GAAG;AACf,kBAAI,GAAG,MAAM,KAAK,GAAG,MAAM,GAAG;AAC5B,mBAAG,KAAK,EAAE;AACV,mBAAG,KAAK,EAAE;AAAA,cACZ;AACA,iBAAG,OAAO,CAAC;AACX,iBAAG,OAAO,CAAC;AAAA,YACb;AAAA,UACF;AACA,cAAI,GAAG,IAAI,EAAE,KAAK,GAAG;AACnB,eAAG,KAAK,EAAE;AACV,eAAG,KAAK,EAAE;AACV,eAAG,KAAK,EAAE;AAAA,UACZ,OAAO;AACL,eAAG,KAAK,EAAE;AACV,eAAG,KAAK,EAAE;AACV,eAAG,KAAK,EAAE;AAAA,UACZ;AAAA,QACF;AACA,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG;AAAA,UACH,KAAK,GAAG,OAAO,EAAE;AAAA,QACnB;AAAA,MACF;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,IAAI;AACxC,QAAAA,SAAQ,GAAG,aAAa,CAAC;AACzB,QAAAA,SAAQ,CAAC,GAAG,OAAO,CAAC;AACpB,YAAI,KAAK,QAAQ;AACjB,YAAI,KAAK,GAAG,MAAM;AAClB,YAAI,GAAG,aAAa,GAAG;AACrB,eAAK,GAAG,KAAK,EAAE;AAAA,QACjB,OAAO;AACL,eAAK,GAAG,MAAM;AAAA,QAChB;AACA,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAIe,OAAM,IAAI,GAAG,CAAC;AAClB,YAAI,QAAQ,GAAG,MAAM;AACrB,eAAO,GAAG,KAAK,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG;AACvC,mBAAS,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,OAAO,EAAG;AAC9E,cAAI,KAAK,GAAG;AACV,eAAG,OAAO,EAAE;AACZ,mBAAO,OAAO,GAAG;AACf,kBAAI,GAAG,MAAM,GAAG;AACd,mBAAG,KAAK,KAAK;AAAA,cACf;AACA,iBAAG,OAAO,CAAC;AAAA,YACb;AAAA,UACF;AACA,mBAAS,KAAK,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,OAAO,EAAG;AAC9E,cAAI,KAAK,GAAG;AACV,eAAG,OAAO,EAAE;AACZ,mBAAO,OAAO,GAAG;AACf,kBAAIA,KAAI,MAAM,GAAG;AACf,gBAAAA,KAAI,KAAK,KAAK;AAAA,cAChB;AACA,cAAAA,KAAI,OAAO,CAAC;AAAA,YACd;AAAA,UACF;AACA,cAAI,GAAG,IAAI,EAAE,KAAK,GAAG;AACnB,eAAG,KAAK,EAAE;AACV,eAAG,KAAKA,IAAG;AAAA,UACb,OAAO;AACL,eAAG,KAAK,EAAE;AACV,YAAAA,KAAI,KAAK,EAAE;AAAA,UACb;AAAA,QACF;AACA,YAAI;AACJ,YAAI,GAAG,KAAK,CAAC,MAAM,GAAG;AACpB,gBAAM;AAAA,QACR,OAAO;AACL,gBAAMA;AAAA,QACR;AACA,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,KAAK,EAAE;AAAA,QACb;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,YAAI,KAAK,OAAO,EAAG,QAAO,IAAI,IAAI;AAClC,YAAI,IAAI,OAAO,EAAG,QAAO,KAAK,IAAI;AAClC,YAAI,KAAK,KAAK,MAAM;AACpB,YAAI,KAAK,IAAI,MAAM;AACnB,WAAG,WAAW;AACd,WAAG,WAAW;AACd,iBAAS,QAAQ,GAAG,GAAG,OAAO,KAAK,GAAG,OAAO,GAAG,SAAS;AACvD,aAAG,OAAO,CAAC;AACX,aAAG,OAAO,CAAC;AAAA,QACb;AACA,WAAG;AACD,iBAAO,GAAG,OAAO,GAAG;AAClB,eAAG,OAAO,CAAC;AAAA,UACb;AACA,iBAAO,GAAG,OAAO,GAAG;AAClB,eAAG,OAAO,CAAC;AAAA,UACb;AACA,cAAI,KAAK,GAAG,IAAI,EAAE;AAClB,cAAI,KAAK,GAAG;AACV,gBAAI,KAAK;AACT,iBAAK;AACL,iBAAK;AAAA,UACP,WAAW,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG;AACvC;AAAA,UACF;AACA,aAAG,KAAK,EAAE;AAAA,QACZ,SAAS;AACT,eAAO,GAAG,OAAO,KAAK;AAAA,MACxB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG;AAAA,MAClC;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,iBAAS,QAAQ,WAAW,MAAM,CAAC,IAAI,OAAO;AAAA,MAChD;AACA,SAAG,UAAU,QAAQ,SAAS,QAAQ;AACpC,iBAAS,QAAQ,WAAW,MAAM,CAAC,IAAI,OAAO;AAAA,MAChD;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,gBAAQ,QAAQ,WAAW,MAAM,CAAC,IAAI;AAAA,MACxC;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAAf,SAAQ,OAAO,QAAQ,QAAQ;AAC/B,YAAI,KAAK,MAAM;AACf,YAAI,MAAM,MAAM,MAAM;AACtB,YAAI,KAAK,KAAK;AACd,aAAK,QAAQ,WAAW,UAAU,IAAI;AACpC,eAAK,QAAQ,KAAK,CAAC;AACnB,WAAC,QAAQ,WAAW,MAAM,EAAE,KAAK;AACjC,iBAAO,QAAQ;AAAA,QACjB;AACA,YAAI,QAAQ;AACZ,iBAAS,KAAK,IAAI,UAAU,KAAK,MAAM,QAAQ,WAAW,QAAQ,MAAM;AACtE,cAAI,MAAM,QAAQ,WAAW,MAAM,EAAE,IAAI;AACzC,gBAAM;AACN,kBAAQ,OAAO;AACf,gBAAM;AACN,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI;AAAA,QAClC;AACA,YAAI,UAAU,GAAG;AACf,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI;AAChC,WAAC,QAAQ,WAAW;AAAA,QACtB;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,gBAAQ,QAAQ,WAAW,WAAW,MAAM,QAAQ,WAAW,MAAM,CAAC,MAAM;AAAA,MAC9E;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,YAAI,WAAW,MAAM;AACrB,aAAK,QAAQ,WAAW,aAAa,KAAK,CAAC,SAAU,QAAO;AAC5D,aAAK,QAAQ,WAAW,aAAa,KAAK,SAAU,QAAO;AAC3D,aAAK,MAAM;AACX,YAAI;AACJ,aAAK,QAAQ,WAAW,SAAS,GAAG;AAClC,gBAAM;AAAA,QACR,OAAO;AACL,cAAI,UAAU;AACZ,kBAAM,CAAC;AAAA,UACT;AACA,UAAAA,SAAQ,OAAO,UAAU,mBAAmB;AAC5C,cAAI,MAAM,QAAQ,WAAW,MAAM,CAAC,IAAI;AACxC,gBAAM,OAAO,MAAM,IAAI,KAAK,MAAM,KAAK;AAAA,QACzC;AACA,aAAK,QAAQ,WAAW,aAAa,EAAG,QAAO,CAAC,MAAM;AACtD,eAAO;AAAA,MACT;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,aAAK,QAAQ,WAAW,aAAa,KAAK,IAAI,aAAa,EAAG,QAAO;AACrE,aAAK,QAAQ,WAAW,aAAa,KAAK,IAAI,aAAa,EAAG,QAAO;AACrE,YAAI,MAAM,KAAK,KAAK,GAAG;AACvB,aAAK,QAAQ,WAAW,aAAa,EAAG,QAAO,CAAC,MAAM;AACtD,eAAO;AAAA,MACT;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO;AACpD,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO;AACpD,YAAI,MAAM;AACV,iBAAS,MAAM,QAAQ,WAAW,SAAS,GAAG,MAAM,GAAG,MAAM;AAC3D,cAAI,MAAM,QAAQ,WAAW,MAAM,EAAE,IAAI;AACzC,cAAI,KAAK,IAAI,MAAM,EAAE,IAAI;AACzB,cAAI,OAAO,GAAI;AACf,cAAI,KAAK,IAAI;AACX,kBAAM;AAAA,UACR,WAAW,KAAK,IAAI;AAClB,kBAAM;AAAA,UACR;AACA;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AACA,SAAG,UAAU,KAAK,SAAS,GAAG,KAAK;AACjC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,KAAK,GAAG,KAAK;AAAA,MAC3B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,IAAI,GAAG,KAAK;AAAA,MAC1B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AACA,SAAG,UAAU,KAAK,SAAS0B,IAAG,KAAK;AACjC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,eAAO,KAAK,KAAK,GAAG,KAAK;AAAA,MAC3B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,IAAI,GAAG,KAAK;AAAA,MAC1B;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AACA,SAAG,UAAU,KAAK,SAASC,IAAG,KAAK;AACjC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AACA,SAAG,MAAM,SAAS,IAAI,KAAK;AACzB,eAAO,IAAI,IAAI,GAAG;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,QAAA3B,SAAQ,EAAE,QAAQ,WAAW,KAAK,uCAAuC;AACzE,QAAAA,UAAS,QAAQ,WAAW,aAAa,GAAG,+BAA+B;AAC3E,eAAO,IAAI,UAAU,QAAQ,SAAS,EAAE,UAAU,GAAG;AAAA,MACvD;AACA,SAAG,UAAU,UAAU,SAAS,UAAU;AACxC,QAAAA,UAAS,QAAQ,WAAW,KAAK,sDAAsD;AACvF,gBAAQ,QAAQ,WAAW,IAAI,YAAY,QAAQ,SAAS;AAAA,MAC9D;AACA,SAAG,UAAU,YAAY,SAAS,UAAU,KAAK;AAC/C,SAAC,QAAQ,WAAW,MAAM;AAC1B,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,KAAK;AAC7C,QAAAA,SAAQ,EAAE,QAAQ,WAAW,KAAK,uCAAuC;AACzE,eAAO,KAAK,UAAU,GAAG;AAAA,MAC3B;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,WAAW,KAAK,oCAAoC;AACrE,gBAAQ,QAAQ,WAAW,IAAI,IAAI,QAAQ,WAAW,GAAG;AAAA,MAC3D;AACA,SAAG,UAAU,UAAU,SAAS,QAAQ,KAAK;AAC3C,QAAAA,UAAS,QAAQ,WAAW,KAAK,qCAAqC;AACtE,gBAAQ,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG;AAAA,MAC5D;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,WAAW,KAAK,oCAAoC;AACrE,gBAAQ,QAAQ,WAAW,IAAI,IAAI,QAAQ,WAAW,GAAG;AAAA,MAC3D;AACA,SAAG,UAAU,UAAU,SAAS,QAAQ,KAAK;AAC3C,QAAAA,UAAS,QAAQ,WAAW,KAAK,qCAAqC;AACtE,gBAAQ,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG;AAAA,MAC5D;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,WAAW,KAAK,oCAAoC;AACrE,gBAAQ,QAAQ,WAAW,IAAI,IAAI,QAAQ,WAAW,GAAG;AAAA,MAC3D;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,WAAW,KAAK,oCAAoC;AACrE,SAAC,QAAQ,WAAW,IAAI,SAAS,QAAQ,WAAW,GAAG;AACvD,gBAAQ,QAAQ,WAAW,IAAI,IAAI,QAAQ,WAAW,GAAG;AAAA,MAC3D;AACA,SAAG,UAAU,UAAU,SAAS,QAAQ,KAAK;AAC3C,QAAAA,UAAS,QAAQ,WAAW,KAAK,oCAAoC;AACrE,SAAC,QAAQ,WAAW,IAAI,SAAS,QAAQ,WAAW,GAAG;AACvD,gBAAQ,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG;AAAA,MAC5D;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,QAAAA,UAAS,QAAQ,WAAW,KAAK,oCAAoC;AACrE,SAAC,QAAQ,WAAW,IAAI,SAAS,QAAQ,SAAS;AAClD,gBAAQ,QAAQ,WAAW,IAAI,IAAI,QAAQ,SAAS;AAAA,MACtD;AACA,SAAG,UAAU,UAAU,SAAS,UAAU;AACxC,QAAAA,UAAS,QAAQ,WAAW,KAAK,qCAAqC;AACtE,SAAC,QAAQ,WAAW,IAAI,SAAS,QAAQ,SAAS;AAClD,gBAAQ,QAAQ,WAAW,IAAI,KAAK,QAAQ,SAAS;AAAA,MACvD;AACA,SAAG,UAAU,UAAU,SAAS,UAAU;AACxC,QAAAA,UAAS,QAAQ,WAAW,KAAK,qCAAqC;AACtE,SAAC,QAAQ,WAAW,IAAI,SAAS,QAAQ,SAAS;AAClD,gBAAQ,QAAQ,WAAW,IAAI,KAAK,QAAQ,SAAS;AAAA,MACvD;AACA,SAAG,UAAU,UAAU,SAAS,UAAU;AACxC,QAAAA,UAAS,QAAQ,WAAW,KAAK,qCAAqC;AACtE,SAAC,QAAQ,WAAW,IAAI,SAAS,QAAQ,SAAS;AAClD,gBAAQ,QAAQ,WAAW,IAAI,KAAK,QAAQ,SAAS;AAAA,MACvD;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,QAAAA,UAAS,QAAQ,WAAW,KAAK,oCAAoC;AACrE,SAAC,QAAQ,WAAW,IAAI,SAAS,QAAQ,SAAS;AAClD,gBAAQ,QAAQ,WAAW,IAAI,IAAI,QAAQ,SAAS;AAAA,MACtD;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,KAAK;AACzC,QAAAA,UAAS,QAAQ,WAAW,OAAO,CAAC,IAAI,KAAK,mBAAmB;AAChE,SAAC,QAAQ,WAAW,IAAI,SAAS,QAAQ,SAAS;AAClD,gBAAQ,QAAQ,WAAW,IAAI,IAAI,QAAQ,WAAW,GAAG;AAAA,MAC3D;AACA,UAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AACA,eAAS,OAAO,OAAO,IAAI;AACzB,SAAC,QAAQ,WAAW,OAAO;AAC3B,SAAC,QAAQ,WAAW,IAAI,IAAI,GAAG,IAAI,EAAE;AACrC,SAAC,QAAQ,WAAW,KAAK,QAAQ,WAAW,EAAE,UAAU;AACxD,SAAC,QAAQ,WAAW,IAAI,IAAI,GAAG,CAAC,EAAE,QAAQ,QAAQ,WAAW,CAAC,EAAE,MAAM,QAAQ,WAAW,CAAC;AAC1F,SAAC,QAAQ,WAAW,MAAM,KAAK,KAAK;AAAA,MACtC;AACA,aAAO,UAAU,OAAO,SAAS,OAAO;AACtC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,MAAM,KAAK,MAAM,QAAQ,WAAW,IAAI,EAAE,CAAC;AAC3D,eAAO;AAAA,MACT;AACA,aAAO,UAAU,UAAU,SAAS,QAAQ,KAAK;AAC/C,YAAI,KAAK;AACT,YAAI;AACJ,WAAG;AACD,eAAK,MAAM,KAAK,QAAQ,WAAW,GAAG;AACtC,eAAK,KAAK,MAAM,EAAE;AAClB,eAAK,GAAG,MAAM,QAAQ,WAAW,GAAG;AACpC,iBAAO,GAAG,UAAU;AAAA,QACtB,SAAS,QAAQ,QAAQ,WAAW;AACpC,YAAI,MAAM,QAAQ,QAAQ,WAAW,IAAI,KAAK,GAAG,MAAM,QAAQ,WAAW,CAAC;AAC3E,YAAI,QAAQ,GAAG;AACb,aAAG,MAAM,CAAC,IAAI;AACd,aAAG,SAAS;AAAA,QACd,WAAW,MAAM,GAAG;AAClB,aAAG,MAAM,QAAQ,WAAW,CAAC;AAAA,QAC/B,OAAO;AACL,cAAI,GAAG,UAAU,QAAQ;AACvB,eAAG,MAAM;AAAA,UACX,OAAO;AACL,eAAG,OAAO;AAAA,UACZ;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,aAAO,UAAU,QAAQ,SAAS,MAAM,OAAO,KAAK;AAClD,cAAM,QAAQ,QAAQ,WAAW,GAAG,GAAG,GAAG;AAAA,MAC5C;AACA,aAAO,UAAU,QAAQ,SAAS,MAAM,KAAK;AAC3C,eAAO,IAAI,MAAM,QAAQ,WAAW,CAAC;AAAA,MACvC;AACA,eAAS,OAAO;AACd,eAAO,KAAK,QAAQ,WAAW,QAAQ,yEAAyE;AAAA,MAClH;AACA,MAAAtJ,UAAS,MAAM,MAAM;AACrB,WAAK,UAAU,QAAQ,SAAS,MAAM,OAAO,QAAQ;AACnD,YAAI,OAAO;AACX,YAAI,SAAS,KAAK,IAAI,MAAM,QAAQ,CAAC;AACrC,iBAAS,KAAK,GAAG,KAAK,QAAQ,MAAM;AAClC,iBAAO,MAAM,EAAE,IAAI,MAAM,MAAM,EAAE;AAAA,QACnC;AACA,eAAO,SAAS;AAChB,YAAI,MAAM,UAAU,GAAG;AACrB,gBAAM,MAAM,CAAC,IAAI;AACjB,gBAAM,SAAS;AACf;AAAA,QACF;AACA,YAAI,OAAO,MAAM,MAAM,CAAC;AACxB,eAAO,MAAM,OAAO,QAAQ,IAAI,OAAO;AACvC,aAAK,KAAK,IAAI,KAAK,MAAM,QAAQ,MAAM;AACrC,cAAI,OAAO,MAAM,MAAM,EAAE,IAAI;AAC7B,gBAAM,MAAM,KAAK,EAAE,KAAK,OAAO,SAAS,IAAI,SAAS;AACrD,iBAAO;AAAA,QACT;AACA,kBAAU;AACV,cAAM,MAAM,KAAK,EAAE,IAAI;AACvB,YAAI,SAAS,KAAK,MAAM,SAAS,IAAI;AACnC,gBAAM,UAAU;AAAA,QAClB,OAAO;AACL,gBAAM,UAAU;AAAA,QAClB;AAAA,MACF;AACA,WAAK,UAAU,QAAQ,SAAS,MAAM,KAAK;AACzC,YAAI,MAAM,IAAI,MAAM,IAAI;AACxB,YAAI,MAAM,IAAI,SAAS,CAAC,IAAI;AAC5B,YAAI,UAAU;AACd,YAAI,KAAK;AACT,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,cAAI,KAAK,IAAI,MAAM,EAAE,IAAI;AACzB,gBAAM,KAAK;AACX,cAAI,MAAM,EAAE,IAAI,KAAK;AACrB,eAAK,KAAK,MAAM,KAAK,WAAW;AAAA,QAClC;AACA,YAAI,IAAI,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG;AACnC,cAAI;AACJ,cAAI,IAAI,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG;AACnC,gBAAI;AAAA,UACN;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,OAAO;AACd,eAAO,KAAK,QAAQ,WAAW,QAAQ,gEAAgE;AAAA,MACzG;AACA,MAAAA,UAAS,MAAM,MAAM;AACrB,eAAS,OAAO;AACd,eAAO,KAAK,QAAQ,WAAW,QAAQ,uDAAuD;AAAA,MAChG;AACA,MAAAA,UAAS,MAAM,MAAM;AACrB,eAAS,SAAS;AAChB,eAAO,KAAK,QAAQ,WAAW,SAAS,qEAAqE;AAAA,MAC/G;AACA,MAAAA,UAAS,QAAQ,MAAM;AACvB,aAAO,UAAU,QAAQ,SAAS,MAAM,KAAK;AAC3C,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,cAAI,MAAM,IAAI,MAAM,EAAE,IAAI,KAAK,KAAK;AACpC,cAAI,KAAK,KAAK;AACd,kBAAQ;AACR,cAAI,MAAM,EAAE,IAAI;AAChB,kBAAQ;AAAA,QACV;AACA,YAAI,UAAU,GAAG;AACf,cAAI,MAAM,IAAI,QAAQ,IAAI;AAAA,QAC5B;AACA,eAAO;AAAA,MACT;AACA,SAAG,SAAS,SAAS,MAAM,OAAO;AAChC,YAAI,OAAO,KAAK,EAAG,QAAO,OAAO,KAAK;AACtC,YAAI;AACJ,YAAI,UAAU,QAAQ;AACpB,mBAAS,IAAI,KAAK;AAAA,QACpB,WAAW,UAAU,QAAQ;AAC3B,mBAAS,IAAI,KAAK;AAAA,QACpB,WAAW,UAAU,QAAQ;AAC3B,mBAAS,IAAI,KAAK;AAAA,QACpB,WAAW,UAAU,UAAU;AAC7B,mBAAS,IAAI,OAAO;AAAA,QACtB,OAAO;AACL,gBAAM,IAAI,MAAM,mBAAmB,KAAK;AAAA,QAC1C;AACA,eAAO,KAAK,IAAI;AAChB,eAAO;AAAA,MACT;AACA,eAAS,IAAI5C,KAAI;AACf,YAAI,OAAOA,QAAO,UAAU;AAC1B,cAAI,QAAQ,GAAG,OAAOA,GAAE;AACxB,WAAC,QAAQ,WAAW,IAAI,MAAM;AAC9B,WAAC,QAAQ,WAAW,QAAQ;AAAA,QAC9B,OAAO;AACL,UAAAkM,SAAQlM,IAAG,IAAI,CAAC,GAAG,gCAAgC;AACnD,WAAC,QAAQ,WAAW,IAAIA;AACxB,WAAC,QAAQ,WAAW,QAAQ;AAAA,QAC9B;AAAA,MACF;AACA,UAAI,UAAU,WAAW,SAAS,SAAS,IAAI;AAC7C,QAAAkM,SAAQ,GAAG,aAAa,GAAG,+BAA+B;AAC1D,QAAAA,SAAQ,GAAG,KAAK,iCAAiC;AAAA,MACnD;AACA,UAAI,UAAU,WAAW,SAAS,SAAS,IAAI,IAAI;AACjD,QAAAA,UAAS,GAAG,WAAW,GAAG,cAAc,GAAG,+BAA+B;AAC1E,QAAAA,SAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,iCAAiC;AAAA,MACxE;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI;AACrC,aAAK,QAAQ,WAAW,MAAO,SAAQ,QAAQ,WAAW,MAAM,QAAQ,EAAE,EAAE,UAAU,QAAQ,SAAS;AACvG,eAAO,GAAG,MAAM,QAAQ,WAAW,CAAC,EAAE,UAAU,QAAQ,SAAS;AAAA,MACnE;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI;AACnC,YAAI,GAAG,OAAO,GAAG;AACf,iBAAO,GAAG,MAAM;AAAA,QAClB;AACA,gBAAQ,QAAQ,WAAW,EAAE,IAAI,EAAE,EAAE,UAAU,QAAQ,SAAS;AAAA,MAClE;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,IAAI;AACvC,aAAK,SAAS,IAAI,EAAE;AACpB,YAAI,MAAM,GAAG,IAAI,EAAE;AACnB,YAAI,IAAI,KAAK,QAAQ,WAAW,CAAC,KAAK,GAAG;AACvC,cAAI,MAAM,QAAQ,WAAW,CAAC;AAAA,QAChC;AACA,eAAO,IAAI,UAAU,QAAQ,SAAS;AAAA,MACxC;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI;AACzC,aAAK,SAAS,IAAI,EAAE;AACpB,YAAI,MAAM,GAAG,KAAK,EAAE;AACpB,YAAI,IAAI,KAAK,QAAQ,WAAW,CAAC,KAAK,GAAG;AACvC,cAAI,MAAM,QAAQ,WAAW,CAAC;AAAA,QAChC;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,IAAI;AACvC,aAAK,SAAS,IAAI,EAAE;AACpB,YAAI,MAAM,GAAG,IAAI,EAAE;AACnB,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,MAAM,QAAQ,WAAW,CAAC;AAAA,QAChC;AACA,eAAO,IAAI,UAAU,QAAQ,SAAS;AAAA,MACxC;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI;AACzC,aAAK,SAAS,IAAI,EAAE;AACpB,YAAI,MAAM,GAAG,KAAK,EAAE;AACpB,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,MAAM,QAAQ,WAAW,CAAC;AAAA,QAChC;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,KAAK;AACxC,aAAK,SAAS,EAAE;AAChB,eAAO,KAAK,KAAK,GAAG,MAAM,GAAG,CAAC;AAAA,MAChC;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI;AACzC,aAAK,SAAS,IAAI,EAAE;AACpB,eAAO,KAAK,KAAK,GAAG,KAAK,EAAE,CAAC;AAAA,MAC9B;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,IAAI;AACvC,aAAK,SAAS,IAAI,EAAE;AACpB,eAAO,KAAK,KAAK,GAAG,IAAI,EAAE,CAAC;AAAA,MAC7B;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI;AACrC,eAAO,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC;AAAA,MACjC;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI;AACnC,eAAO,KAAK,IAAI,IAAI,EAAE;AAAA,MACxB;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI;AACrC,YAAI,GAAG,OAAO,EAAG,QAAO,GAAG,MAAM;AACjC,YAAI,QAAQ,QAAQ,WAAW,EAAE,MAAM,CAAC;AACxC,QAAAA,SAAQ,OAAO,MAAM,CAAC;AACtB,YAAI,SAAS,GAAG;AACd,cAAI,OAAO,QAAQ,WAAW,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;AACvD,iBAAO,KAAK,IAAI,IAAI,GAAG;AAAA,QACzB;AACA,YAAI,MAAM,QAAQ,WAAW,EAAE,KAAK,CAAC;AACrC,YAAI,KAAK;AACT,eAAO,CAAC,GAAG,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG;AACxC;AACA,aAAG,OAAO,CAAC;AAAA,QACb;AACA,QAAAA,SAAQ,CAAC,GAAG,OAAO,CAAC;AACpB,YAAI,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,QAAQ,SAAS;AAC3C,YAAI,OAAO,IAAI,OAAO;AACtB,YAAI,QAAQ,QAAQ,WAAW,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC;AACjD,YAAI,MAAM,QAAQ,WAAW,EAAE,UAAU;AACzC,aAAK,IAAI,GAAG,IAAI,KAAK,EAAE,EAAE,MAAM,QAAQ,SAAS;AAChD,eAAO,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,MAAM,GAAG;AACzC,aAAG,QAAQ,IAAI;AAAA,QACjB;AACA,YAAI,KAAK,KAAK,IAAI,IAAI,EAAE;AACxB,YAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1C,YAAI,KAAK,KAAK,IAAI,IAAI,EAAE;AACxB,YAAIlM,MAAK;AACT,eAAO,GAAG,IAAI,GAAG,MAAM,GAAG;AACxB,cAAI,MAAM;AACV,mBAAS,KAAK,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM;AACzC,kBAAM,IAAI,OAAO;AAAA,UACnB;AACA,UAAAkM,SAAQ,KAAKlM,GAAE;AACf,cAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,OAAOA,MAAK,KAAK,CAAC,CAAC;AACnD,eAAK,GAAG,OAAO,EAAE;AACjB,eAAK,GAAG,OAAO;AACf,eAAK,GAAG,OAAO,EAAE;AACjB,UAAAA,MAAK;AAAA,QACP;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,OAAO,SAAS,KAAK,IAAI;AACrC,YAAI,MAAM,GAAG,QAAQ,QAAQ,WAAW,CAAC;AACzC,YAAI,IAAI,aAAa,GAAG;AACtB,cAAI,WAAW;AACf,iBAAO,KAAK,KAAK,GAAG,EAAE,OAAO;AAAA,QAC/B,OAAO;AACL,iBAAO,KAAK,KAAK,GAAG;AAAA,QACtB;AAAA,MACF;AACA,UAAI,UAAU,MAAM,SAAS,IAAI,IAAI,KAAK;AACxC,YAAI,IAAI,OAAO,EAAG,QAAO,IAAI,GAAG,CAAC,EAAE,MAAM,QAAQ,SAAS;AAC1D,YAAI,IAAI,KAAK,CAAC,MAAM,EAAG,QAAO,GAAG,MAAM;AACvC,YAAI,aAAa;AACjB,YAAI,MAAM,IAAI,MAAM,KAAK,UAAU;AACnC,YAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,MAAM,QAAQ,SAAS;AAC1C,YAAI,CAAC,IAAI;AACT,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,cAAI,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE;AAAA,QACpC;AACA,YAAI,MAAM,IAAI,CAAC;AACf,YAAI,UAAU;AACd,YAAI,aAAa;AACjB,YAAIJ,SAAQ,IAAI,UAAU,IAAI;AAC9B,YAAIA,WAAU,GAAG;AACf,UAAAA,SAAQ;AAAA,QACV;AACA,aAAK,KAAK,IAAI,SAAS,GAAG,MAAM,GAAG,MAAM;AACvC,cAAI,OAAO,IAAI,MAAM,EAAE;AACvB,mBAAS,KAAKA,SAAQ,GAAG,MAAM,GAAG,MAAM;AACtC,gBAAI,MAAM,QAAQ,KAAK;AACvB,gBAAI,QAAQ,IAAI,CAAC,GAAG;AAClB,oBAAM,KAAK,IAAI,GAAG;AAAA,YACpB;AACA,gBAAI,QAAQ,KAAK,YAAY,GAAG;AAC9B,2BAAa;AACb;AAAA,YACF;AACA,wBAAY;AACZ,uBAAW;AACX;AACA,gBAAI,eAAe,eAAe,OAAO,KAAK,OAAO,GAAI;AACzD,kBAAM,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC;AAChC,yBAAa;AACb,sBAAU;AAAA,UACZ;AACA,UAAAA,SAAQ;AAAA,QACV;AACA,eAAO;AAAA,MACT;AACA,UAAI,UAAU,YAAY,SAAS,UAAU,KAAK;AAChD,YAAI,KAAK,IAAI,MAAM,QAAQ,WAAW,CAAC;AACvC,eAAO,OAAO,MAAM,GAAG,MAAM,IAAI;AAAA,MACnC;AACA,UAAI,UAAU,cAAc,SAAS,YAAY,KAAK;AACpD,YAAI,MAAM,IAAI,MAAM;AACpB,YAAI,MAAM;AACV,eAAO;AAAA,MACT;AACA,SAAG,OAAO,SAAS,KAAK,KAAK;AAC3B,eAAO,IAAI,KAAK,GAAG;AAAA,MACrB;AACA,eAAS,KAAKI,KAAI;AAChB,YAAI,KAAK,QAAQ,WAAWA,GAAE;AAC9B,SAAC,QAAQ,WAAW,SAAS,QAAQ,WAAW,EAAE,UAAU;AAC5D,aAAK,QAAQ,WAAW,QAAQ,OAAO,GAAG;AACxC,WAAC,QAAQ,WAAW,SAAS,MAAM,QAAQ,WAAW,QAAQ;AAAA,QAChE;AACA,SAAC,QAAQ,WAAW,IAAI,IAAI,GAAG,CAAC,EAAE,QAAQ,QAAQ,WAAW,KAAK;AAClE,SAAC,QAAQ,WAAW,KAAK,KAAK,MAAM,QAAQ,WAAW,EAAE,IAAI,CAAC;AAC9D,SAAC,QAAQ,WAAW,QAAQ,QAAQ,WAAW,EAAE,QAAQ,QAAQ,WAAW,CAAC;AAC7E,SAAC,QAAQ,WAAW,QAAQ,QAAQ,WAAW,KAAK,KAAK,QAAQ,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,QAAQ,WAAW,CAAC;AACjH,SAAC,QAAQ,WAAW,QAAQ,QAAQ,WAAW,KAAK,MAAM,QAAQ,WAAW,CAAC;AAC9E,SAAC,QAAQ,WAAW,QAAQ,QAAQ,WAAW,EAAE,KAAK,QAAQ,WAAW,IAAI;AAAA,MAC/E;AACA,MAAA4C,UAAS,MAAM,GAAG;AAClB,WAAK,UAAU,YAAY,SAAS,UAAU,KAAK;AACjD,eAAO,KAAK,KAAK,IAAI,OAAO,QAAQ,WAAW,KAAK,CAAC;AAAA,MACvD;AACA,WAAK,UAAU,cAAc,SAAS,YAAY,KAAK;AACrD,YAAI,KAAK,KAAK,KAAK,IAAI,KAAK,QAAQ,WAAW,IAAI,CAAC;AACpD,WAAG,MAAM;AACT,eAAO;AAAA,MACT;AACA,WAAK,UAAU,OAAO,SAAS,KAAK,IAAI,IAAI;AAC1C,YAAI,GAAG,OAAO,KAAK,GAAG,OAAO,GAAG;AAC9B,aAAG,MAAM,CAAC,IAAI;AACd,aAAG,SAAS;AACZ,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,GAAG,KAAK,EAAE;AACnB,YAAI,KAAK,GAAG,OAAO,QAAQ,WAAW,KAAK,EAAE,KAAK,QAAQ,WAAW,IAAI,EAAE,QAAQ,QAAQ,WAAW,KAAK,EAAE,KAAK,QAAQ,WAAW,CAAC;AACtI,YAAI,KAAK,GAAG,KAAK,EAAE,EAAE,QAAQ,QAAQ,WAAW,KAAK;AACrD,YAAI,MAAM;AACV,YAAI,GAAG,KAAK,QAAQ,WAAW,CAAC,KAAK,GAAG;AACtC,gBAAM,GAAG,MAAM,QAAQ,WAAW,CAAC;AAAA,QACrC,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG;AACzB,gBAAM,GAAG,MAAM,QAAQ,WAAW,CAAC;AAAA,QACrC;AACA,eAAO,IAAI,UAAU,QAAQ,SAAS;AAAA,MACxC;AACA,WAAK,UAAU,MAAM,SAAS,IAAI,IAAI,IAAI;AACxC,YAAI,GAAG,OAAO,KAAK,GAAG,OAAO,EAAG,QAAO,IAAI,GAAG,CAAC,EAAE,UAAU,QAAQ,SAAS;AAC5E,YAAI,KAAK,GAAG,IAAI,EAAE;AAClB,YAAI,KAAK,GAAG,OAAO,QAAQ,WAAW,KAAK,EAAE,KAAK,QAAQ,WAAW,IAAI,EAAE,QAAQ,QAAQ,WAAW,KAAK,EAAE,KAAK,QAAQ,WAAW,CAAC;AACtI,YAAI,KAAK,GAAG,KAAK,EAAE,EAAE,QAAQ,QAAQ,WAAW,KAAK;AACrD,YAAI,MAAM;AACV,YAAI,GAAG,KAAK,QAAQ,WAAW,CAAC,KAAK,GAAG;AACtC,gBAAM,GAAG,MAAM,QAAQ,WAAW,CAAC;AAAA,QACrC,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG;AACzB,gBAAM,GAAG,MAAM,QAAQ,WAAW,CAAC;AAAA,QACrC;AACA,eAAO,IAAI,UAAU,QAAQ,SAAS;AAAA,MACxC;AACA,WAAK,UAAU,OAAO,SAAS,KAAK,IAAI;AACtC,YAAI,MAAM,KAAK,KAAK,GAAG,QAAQ,QAAQ,WAAW,CAAC,EAAE,KAAK,QAAQ,WAAW,EAAE,CAAC;AAChF,eAAO,IAAI,UAAU,QAAQ,SAAS;AAAA,MACxC;AAAA,IACF,GAAG,UAAU,SAAS;AACtB,WAAO,SAAS;AAAA,EAClB;AAIA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAI,OAAOsP,OAAM;AACjB,QAAItP,YAAWH,MAAK;AACpB,QAAI,MAAM;AACV,QAAI,SAAS,SAASgO,QAAO,OAAO,MAAM;AACxC,aAAO,IAAI,OAAO,OAAO,IAAI;AAAA,IAC/B;AACA,aAAS,OAAO,OAAO,MAAM;AAC3B,OAAC,QAAQ,WAAW,OAAO;AAC3B,OAAC,QAAQ,WAAW,OAAO;AAC3B,OAAC,QAAQ,WAAW,WAAW,CAAC;AAChC,OAAC,QAAQ,WAAW,WAAW,CAAC;AAAA,IAClC;AACA,WAAO,UAAU,eAAe,SAAS,YAAY,MAAM;AACzD,UAAI;AACJ,UAAI;AACF,gBAAQ,SAAS,iBAAiB,gBAAgB,QAAQ,WAAW,OAAO,4CAA4C;AAAA,MAC1H,SAAS,IAAI;AACX,gBAAQ,SAAS,QAAQ;AACvB,eAAK,WAAW,MAAM;AAAA,QACxB;AAAA,MACF;AACA,MAAA7N,UAAS,OAAO,IAAI;AACpB,YAAM,UAAU,aAAa,SAAS,UAAU,QAAQ;AACtD,aAAK,KAAK,QAAQ,WAAW,MAAM;AAAA,MACrC;AACA,aAAO,IAAI,MAAM,QAAQ,SAAS;AAAA,IACpC;AACA,WAAO,UAAU,cAAc,SAAS,YAAY,KAAK;AACvD,YAAM,OAAO;AACb,UAAI,EAAE,QAAQ,WAAW,SAAS,eAAe,GAAG,EAAG,EAAC,QAAQ,WAAW,SAAS,GAAG,IAAI,KAAK,aAAa,KAAK,SAAS,GAAG,CAAC;AAC/H,cAAQ,QAAQ,WAAW,SAAS,GAAG;AAAA,IACzC;AACA,WAAO,UAAU,SAAS,SAAS,OAAO,MAAM,KAAK,SAAS;AAC5D,aAAO,KAAK,YAAY,GAAG,EAAE,OAAO,MAAM,OAAO;AAAA,IACnD;AACA,WAAO,UAAU,cAAc,SAAS,YAAY,KAAK;AACvD,YAAM,OAAO;AACb,UAAI,EAAE,QAAQ,WAAW,SAAS,eAAe,GAAG,EAAG,EAAC,QAAQ,WAAW,SAAS,GAAG,IAAI,KAAK,aAAa,KAAK,SAAS,GAAG,CAAC;AAC/H,cAAQ,QAAQ,WAAW,SAAS,GAAG;AAAA,IACzC;AACA,WAAO,UAAU,SAAS,SAAS,OAAO,MAAM,KAAK,UAAU;AAC7D,aAAO,KAAK,YAAY,GAAG,EAAE,OAAO,MAAM,QAAQ;AAAA,IACpD;AACA,WAAO;AAAA,EACT;AAIA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAIA,YAAWH,MAAK;AACpB,aAAS,SAAS,SAAS;AACzB,OAAC,QAAQ,WAAW,iBAAiB;AAAA,QACnC,KAAK;AAAA,QACL,MAAM,CAAC;AAAA,QACP,SAAS,WAAW,CAAC;AAAA,QACrB,QAAQ,CAAC;AAAA,MACX;AAAA,IACF;AACA,cAAU,WAAW;AACrB,aAAS,UAAU,UAAU,SAASsN,SAAQ,KAAK;AACjD,aAAO,eAAe;AAAA,IACxB;AACA,aAAS,UAAU,OAAO,SAASC,QAAO;AACxC,UAAI,SAAS,QAAQ,WAAW;AAChC,aAAO;AAAA,QACL,KAAK,MAAM;AAAA,QACX,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,IACF;AACA,aAAS,UAAU,UAAU,SAAS,QAAQ,MAAM;AAClD,UAAI,SAAS,QAAQ,WAAW;AAChC,YAAM,MAAM,KAAK;AACjB,YAAM,OAAO,MAAM,KAAK,MAAM,GAAG,KAAK,OAAO;AAAA,IAC/C;AACA,aAAS,UAAU,WAAW,SAAS,SAAS,KAAK;AACnD,cAAQ,QAAQ,WAAW,eAAe,KAAK,KAAK,GAAG;AAAA,IACzD;AACA,aAAS,UAAU,UAAU,SAAS,QAAQlF,QAAO;AACnD,UAAI,SAAS,QAAQ,WAAW;AAChC,YAAM,OAAO,MAAM,KAAK,MAAM,GAAGA,SAAQ,CAAC;AAAA,IAC5C;AACA,aAAS,UAAU,WAAW,SAAS,SAASA,QAAO,KAAK,OAAO;AACjE,UAAI,SAAS,QAAQ,WAAW;AAChC,WAAK,QAAQA,MAAK;AAClB,UAAI,MAAM,QAAQ,KAAM,OAAM,IAAI,GAAG,IAAI;AAAA,IAC3C;AACA,aAAS,UAAU,OAAO,SAAS,OAAO;AACxC,cAAQ,QAAQ,WAAW,eAAe,KAAK,KAAK,GAAG;AAAA,IACzD;AACA,aAAS,UAAU,cAAc,SAAS,cAAc;AACtD,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,OAAO,MAAM;AACjB,YAAM,MAAM,CAAC;AACb,aAAO;AAAA,IACT;AACA,aAAS,UAAU,cAAc,SAAS,YAAY,MAAM;AAC1D,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAImF,OAAM,MAAM;AAChB,YAAM,MAAM;AACZ,aAAOA;AAAA,IACT;AACA,aAAS,UAAU,QAAQ,SAAS,MAAM,KAAK;AAC7C,UAAI;AACJ,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,YAAY,eAAe;AAC/B,UAAI,WAAW;AACb,cAAM;AAAA,MACR,OAAO;AACL,cAAM,IAAI,cAAc,MAAM,KAAK,IAAI,SAAS,MAAM;AACpD,iBAAO,MAAM,KAAK,UAAU,IAAI,IAAI;AAAA,QACtC,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,WAAW,KAAK,IAAI,KAAK;AAAA,MAC5C;AACA,UAAI,CAAC,MAAM,QAAQ,QAAS,OAAM;AAClC,UAAI,CAAC,UAAW,OAAM,OAAO,KAAK,GAAG;AACrC,aAAO;AAAA,IACT;AACA,aAAS,UAAU,aAAa,SAAS,WAAW,QAAQ;AAC1D,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,CAAC,MAAM,QAAQ,QAAS,QAAO;AACnC,aAAO;AAAA,QACL,QAAQ,KAAK,QAAQ,MAAM,IAAI,OAAO;AAAA,QACtC,QAAQ,MAAM;AAAA,MAChB;AAAA,IACF;AACA,aAAS,cAAc,MAAM,KAAK;AAChC,OAAC,QAAQ,WAAW,OAAO;AAC3B,WAAK,QAAQ,GAAG;AAAA,IAClB;AACA,IAAArN,UAAS,eAAe,KAAK;AAC7B,kBAAc,UAAU,UAAU,SAAS,QAAQ,KAAK;AACtD,OAAC,QAAQ,WAAW,UAAU,MAAM,YAAY,QAAQ,WAAW,QAAQ;AAC3E,UAAI,MAAM,kBAAmB,OAAM,kBAAkB,QAAQ,WAAW,aAAa;AACrF,UAAI,EAAE,QAAQ,WAAW,OAAO;AAC9B,YAAI;AACF,gBAAM,IAAI,OAAO,QAAQ,WAAW,OAAO;AAAA,QAC7C,SAAS,IAAI;AACX,WAAC,QAAQ,WAAW,QAAQ,GAAG;AAAA,QACjC;AAAA,MACF;AACA,aAAO,QAAQ;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAIA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAIA,YAAWH,MAAK;AACpB,QAAI,WAAW,MAAM,EAAE;AACvB,QAAIrC,UAASH,KAAI,EAAE;AACnB,aAAS,cAAc,MAAM,SAAS;AACpC,eAAS,KAAK,QAAQ,WAAW,OAAO;AACxC,UAAI,CAACG,QAAO,SAAS,IAAI,GAAG;AAC1B,aAAK,MAAM,kBAAkB;AAC7B;AAAA,MACF;AACA,OAAC,QAAQ,WAAW,OAAO;AAC3B,OAAC,QAAQ,WAAW,SAAS;AAC7B,OAAC,QAAQ,WAAW,SAAS,KAAK;AAAA,IACpC;AACA,IAAAwC,UAAS,eAAe,QAAQ;AAChC,cAAU,gBAAgB;AAC1B,kBAAc,UAAU,OAAO,SAASoN,QAAO;AAC7C,aAAO;AAAA,QACL,SAAS,QAAQ,WAAW;AAAA,QAC5B,UAAU,SAAS,UAAU,KAAK,KAAK,QAAQ,SAAS;AAAA,MAC1D;AAAA,IACF;AACA,kBAAc,UAAU,UAAU,SAAS,QAAQA,OAAM;AACvD,UAAI,MAAM,IAAI,eAAe,QAAQ,WAAW,IAAI;AACpD,UAAI,SAASA,MAAK;AAClB,UAAI,UAAU,QAAQ,WAAW;AACjC,OAAC,QAAQ,WAAW,SAASA,MAAK;AAClC,eAAS,UAAU,QAAQ,KAAK,QAAQ,WAAWA,MAAK,QAAQ;AAChE,aAAO;AAAA,IACT;AACA,kBAAc,UAAU,UAAU,SAAS,UAAU;AACnD,cAAQ,QAAQ,WAAW,YAAY,QAAQ,WAAW;AAAA,IAC5D;AACA,kBAAc,UAAU,YAAY,SAAS,UAAU,MAAM;AAC3D,WAAK,QAAQ,WAAW,SAAS,MAAM,QAAQ,WAAW,OAAQ,SAAQ,QAAQ,WAAW,KAAK,WAAW,QAAQ,WAAW,UAAU,IAAI;AAAA,UACzI,QAAO,KAAK,MAAM,QAAQ,uBAAuB;AAAA,IACxD;AACA,kBAAc,UAAU,OAAO,SAASE,MAAK,OAAO,MAAM;AACxD,UAAI,GAAG,QAAQ,WAAW,SAAS,UAAU,QAAQ,WAAW,QAAS,QAAO,KAAK,MAAM,QAAQ,uBAAuB;AAC1H,UAAI,MAAM,IAAI,eAAe,QAAQ,WAAW,IAAI;AACpD,UAAI,kBAAkB,QAAQ,WAAW;AACzC,UAAI,UAAU,QAAQ,WAAW;AACjC,UAAI,UAAU,QAAQ,WAAW,SAAS;AAC1C,OAAC,QAAQ,WAAW,UAAU;AAC9B,aAAO;AAAA,IACT;AACA,kBAAc,UAAU,MAAM,SAAS,IAAIF,OAAM;AAC/C,cAAQ,QAAQ,WAAW,KAAK,MAAMA,QAAOA,MAAK,UAAU,QAAQ,WAAW,SAAS,QAAQ,WAAW,MAAM;AAAA,IACnH;AACA,aAAS,cAAc,OAAO,UAAU;AACtC,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,SAAC,QAAQ,WAAW,SAAS;AAC7B,SAAC,QAAQ,WAAW,QAAQ,MAAM,IAAI,SAAS,MAAM;AACnD,cAAI,EAAE,gBAAgB,eAAgB,QAAO,IAAI,cAAc,MAAM,QAAQ;AAC7E,WAAC,QAAQ,WAAW,UAAU,KAAK;AACnC,iBAAO;AAAA,QACT,GAAG,QAAQ,SAAS;AAAA,MACtB,WAAW,OAAO,UAAU,UAAU;AACpC,YAAI,EAAE,KAAK,SAAS,SAAS,KAAM,QAAO,SAAS,MAAM,8BAA8B;AACvF,SAAC,QAAQ,WAAW,QAAQ;AAC5B,SAAC,QAAQ,WAAW,SAAS;AAAA,MAC/B,WAAW,OAAO,UAAU,UAAU;AACpC,SAAC,QAAQ,WAAW,QAAQ;AAC5B,SAAC,QAAQ,WAAW,SAAS5P,QAAO,WAAW,KAAK;AAAA,MACtD,WAAWA,QAAO,SAAS,KAAK,GAAG;AACjC,SAAC,QAAQ,WAAW,QAAQ;AAC5B,SAAC,QAAQ,WAAW,SAAS,MAAM;AAAA,MACrC,OAAO;AACL,eAAO,SAAS,MAAM,uBAAuB,OAAO,KAAK;AAAA,MAC3D;AAAA,IACF;AACA,cAAU,gBAAgB;AAC1B,kBAAc,UAAU,OAAO,SAAS,KAAK,KAAK,QAAQ;AACxD,UAAI,CAAC,IAAK,OAAM,IAAIA,SAAQ,QAAQ,WAAW,MAAM;AACrD,UAAI,CAAC,OAAQ,UAAS;AACtB,WAAK,QAAQ,WAAW,WAAW,EAAG,QAAO;AAC7C,UAAI,MAAM,SAAS,QAAQ,WAAW,KAAK,GAAG;AAC5C,SAAC,QAAQ,WAAW,MAAM,QAAQ,SAAS,MAAM;AAC/C,eAAK,KAAK,KAAK,MAAM;AACrB,oBAAU,KAAK;AAAA,QACjB,CAAC;AAAA,MACH,OAAO;AACL,YAAI,QAAQ,QAAQ,WAAW,UAAU,SAAU,KAAI,MAAM,KAAK,QAAQ,WAAW;AAAA,iBAC5E,QAAQ,QAAQ,WAAW,UAAU,SAAU,KAAI,OAAO,QAAQ,WAAW,OAAO,MAAM;AAAA,iBAC1FA,QAAO,UAAU,QAAQ,WAAW,KAAK,EAAG,EAAC,QAAQ,WAAW,MAAM,KAAK,KAAK,MAAM;AAC/F,mBAAW,QAAQ,WAAW;AAAA,MAChC;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAIA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAI,WAAW,MAAM,EAAE;AACvB,QAAI,gBAAgB,MAAM,EAAE;AAC5B,QAAI,gBAAgB,MAAM,EAAE;AAC5B,QAAI8L,WAAU,OAAO;AACrB,QAAI,OAAO,CAAC,OAAO,SAAS,OAAO,SAAS,SAAS,QAAQ,WAAW,WAAW,SAAS,QAAQ,OAAO,WAAW,UAAU,UAAU,WAAW,UAAU,YAAY,UAAU,aAAa,UAAU,UAAU,YAAY,UAAU,UAAU,WAAW,UAAU;AAC3Q,QAAI,UAAU,CAAC,OAAO,OAAO,OAAO,YAAY,YAAY,YAAY,OAAO,UAAU,OAAO,UAAU,EAAE,OAAO,IAAI;AACvH,QAAI,YAAY,CAAC,YAAY,cAAc,QAAQ,cAAc,gBAAgB,eAAe,eAAe,cAAc,eAAe,eAAe,oBAAoB,cAAc,gBAAgB,eAAe,eAAe,cAAc,aAAa;AACtQ,aAASiE,MAAK,KAAK,QAAQ;AACzB,UAAI,QAAQ,CAAC;AACb,OAAC,QAAQ,WAAW,aAAa;AACjC,YAAM,MAAM;AACZ,YAAM,SAAS,UAAU;AACzB,YAAM,WAAW;AACjB,YAAM,MAAM;AACZ,YAAM,OAAO;AACb,YAAM,cAAc;AACpB,YAAM,SAAS;AACf,YAAM,WAAW;AACjB,YAAM,MAAM;AACZ,YAAM,MAAM;AACZ,YAAM,MAAM;AACZ,YAAM,aAAa;AACnB,YAAM,MAAM;AACZ,YAAM,SAAS,IAAI;AACnB,YAAM,WAAW;AACjB,YAAM,WAAW;AACjB,YAAM,WAAW;AACjB,UAAI,CAAC,MAAM,QAAQ;AACjB,cAAM,WAAW,CAAC;AAClB,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,gBAAYA;AACZ,QAAI,aAAa,CAAC,OAAO,UAAU,YAAY,OAAO,QAAQ,eAAe,UAAU,YAAY,OAAO,OAAO,OAAO,cAAc,OAAO,WAAW,YAAY,YAAY,UAAU;AAC1L,IAAAA,MAAK,UAAU,QAAQ,SAAS9C,SAAQ;AACtC,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,SAAS,CAAC;AACd,iBAAW,QAAQ,SAAS,MAAM;AAChC,eAAO,IAAI,IAAI,MAAM,IAAI;AAAA,MAC3B,CAAC;AACD,UAAI,MAAM,KAAK,QAAQ,WAAW,YAAY,OAAO,MAAM;AAC3D,UAAI,aAAa;AACjB,aAAO;AAAA,IACT;AACA,IAAA8C,MAAK,UAAU,QAAQ,SAAS,OAAO;AACrC,UAAI,SAAS,QAAQ,WAAW;AAChC,cAAQ,QAAQ,SAAS,QAAQ;AAC/B,SAAC,QAAQ,WAAW,MAAM,IAAI,SAAS,iBAAiB;AACtD,cAAI9C,SAAQ,KAAK,QAAQ,WAAW,YAAY,QAAQ,SAAS;AACjE,gBAAM,SAAS,KAAKA,MAAK;AACzB,iBAAOA,OAAM,MAAM,EAAE,MAAMA,QAAO,SAAS;AAAA,QAC7C;AAAA,MACF,GAAG,QAAQ,SAAS;AAAA,IACtB;AACA,IAAA8C,MAAK,UAAU,QAAQ,SAAS,KAAK,MAAM;AACzC,UAAI,SAAS,QAAQ,WAAW;AAChC,MAAAjE,SAAQ,MAAM,WAAW,IAAI;AAC7B,WAAK,KAAK,QAAQ,SAAS;AAC3B,YAAM,WAAW,MAAM,SAAS,OAAO,SAAS,OAAO;AACrD,eAAO,MAAM,WAAW,YAAY,QAAQ;AAAA,MAC9C,GAAG,QAAQ,SAAS;AACpB,MAAAA,SAAQ,MAAM,MAAM,SAAS,QAAQ,GAAG,mCAAmC;AAAA,IAC7E;AACA,IAAAiE,MAAK,UAAU,WAAW,SAAS,QAAQ,MAAM;AAC/C,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,WAAW,KAAK,OAAO,SAAS,KAAK;AACvC,eAAO,gBAAgB,QAAQ,WAAW;AAAA,MAC5C,GAAG,QAAQ,SAAS;AACpB,aAAO,KAAK,OAAO,SAAS,KAAK;AAC/B,eAAO,EAAE,gBAAgB,QAAQ,WAAW;AAAA,MAC9C,GAAG,QAAQ,SAAS;AACpB,UAAI,SAAS,WAAW,GAAG;AACzB,QAAAjE,SAAQ,MAAM,aAAa,IAAI;AAC/B,cAAM,WAAW;AACjB,iBAAS,QAAQ,SAAS,OAAO;AAC/B,gBAAM,WAAW,SAAS,QAAQ;AAAA,QACpC,GAAG,QAAQ,SAAS;AAAA,MACtB;AACA,UAAI,KAAK,WAAW,GAAG;AACrB,QAAAA,SAAQ,MAAM,SAAS,IAAI;AAC3B,cAAM,OAAO;AACb,cAAM,cAAc,KAAK,IAAI,SAAS,KAAK;AACzC,cAAI,OAAO,QAAQ,YAAY,IAAI,gBAAgB,OAAQ,QAAO;AAClE,cAAI,MAAM,CAAC;AACX,iBAAO,KAAK,GAAG,EAAE,QAAQ,SAAS,KAAK;AACrC,gBAAI,QAAQ,MAAM,GAAI,QAAO;AAC7B,gBAAI,QAAQ,IAAI,GAAG;AACnB,gBAAI,KAAK,IAAI;AAAA,UACf,CAAC;AACD,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AACA,cAAU,QAAQ,SAAS,QAAQ;AACjC,MAAAiE,MAAK,UAAU,MAAM,IAAI,SAAS,aAAa;AAC7C,YAAI,SAAS,QAAQ,WAAW;AAChC,cAAM,IAAI,MAAM,SAAS,oCAAoC,MAAM,GAAG;AAAA,MACxE;AAAA,IACF,CAAC;AACD,SAAK,QAAQ,SAAS,KAAK;AACzB,MAAAA,MAAK,UAAU,GAAG,IAAI,SAAS,aAAa;AAC1C,YAAI,SAAS,QAAQ,WAAW;AAChC,YAAI,OAAO,MAAM,UAAU,MAAM,KAAK,SAAS;AAC/C,QAAAjE,SAAQ,MAAM,QAAQ,IAAI;AAC1B,cAAM,MAAM;AACZ,aAAK,SAAS,IAAI;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,IAAAiE,MAAK,UAAU,MAAM,SAAS,IAAI,MAAM;AACtC,MAAAjE,SAAQ,IAAI;AACZ,UAAI,SAAS,QAAQ,WAAW;AAChC,MAAAA,SAAQ,MAAM,QAAQ,IAAI;AAC1B,YAAM,MAAM;AACZ,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAiE,MAAK,UAAU,WAAW,SAAS,WAAW;AAC5C,UAAI,SAAS,QAAQ,WAAW;AAChC,YAAM,WAAW;AACjB,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAA,MAAK,UAAU,MAAM,SAAS,IAAI,KAAK;AACrC,UAAI,SAAS,QAAQ,WAAW;AAChC,MAAAjE,SAAQ,MAAM,SAAS,MAAM,IAAI;AACjC,YAAM,SAAS,IAAI;AACnB,YAAM,WAAW;AACjB,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAiE,MAAK,UAAU,WAAW,SAAS,SAAS,KAAK;AAC/C,UAAI,SAAS,QAAQ,WAAW;AAChC,MAAAjE,SAAQ,MAAM,aAAa,QAAQ,MAAM,aAAa,IAAI;AAC1D,YAAM,WAAW;AACjB,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAiE,MAAK,UAAU,WAAW,SAAS,SAAS,KAAK;AAC/C,UAAI,SAAS,QAAQ,WAAW;AAChC,MAAAjE,SAAQ,MAAM,aAAa,QAAQ,MAAM,aAAa,IAAI;AAC1D,YAAM,WAAW;AACjB,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAiE,MAAK,UAAU,MAAM,SAAS,MAAM;AAClC,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,OAAO,MAAM,UAAU,MAAM,KAAK,SAAS;AAC/C,YAAM,MAAM;AACZ,UAAI,KAAK,WAAW,EAAG,MAAK,SAAS,IAAI;AACzC,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAA,MAAK,UAAU,MAAM,SAAS,IAAI,QAAQ;AACxC,UAAI,SAAS,QAAQ,WAAW;AAChC,MAAAjE,SAAQ,MAAM,QAAQ,IAAI;AAC1B,YAAM,MAAM;AACZ,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAiE,MAAK,UAAU,MAAM,SAAS,MAAM;AAClC,UAAI,SAAS,QAAQ,WAAW;AAChC,YAAM,MAAM;AACZ,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAA,MAAK,UAAU,SAAS,SAAS,OAAO,KAAK;AAC3C,UAAI,SAAS,QAAQ,WAAW;AAChC,MAAAjE,SAAQ,MAAM,WAAW,IAAI;AAC7B,YAAM,SAAS;AACf,WAAK,SAAS,OAAO,KAAK,GAAG,EAAE,IAAI,SAAS,KAAK;AAC/C,eAAO,IAAI,GAAG;AAAA,MAChB,CAAC,CAAC;AACF,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAiE,MAAK,UAAU,WAAW,SAAS,SAAS,MAAM;AAChD,UAAI,SAAS,QAAQ,WAAW;AAChC,MAAAjE,SAAQ,MAAM,QAAQ,IAAI;AAC1B,YAAM,WAAW;AACjB,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAiE,MAAK,UAAU,UAAU,SAAS,OAAO,OAAO,SAAS;AACvD,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,MAAM,WAAW,KAAM,QAAO,MAAM,WAAW,MAAM,SAAS,CAAC,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC5F,UAAI,SAAS,MAAM,SAAS;AAC5B,UAAI,UAAU;AACd,UAAI,UAAU;AACd,UAAI,MAAM,QAAQ,KAAM,WAAU,MAAM,SAAS,MAAM,GAAG;AAC1D,UAAI,MAAM,UAAU;AAClB,YAAI,MAAM;AACV,YAAI,MAAM,aAAa,KAAM,OAAM,MAAM;AAAA,iBAChC,MAAM,aAAa,KAAM,OAAM,MAAM;AAAA,iBACrC,MAAM,QAAQ,KAAM,OAAM,MAAM;AACzC,YAAI,QAAQ,QAAQ,CAAC,MAAM,KAAK;AAC9B,cAAIH,QAAO,MAAM,KAAK;AACtB,cAAI;AACF,gBAAI,MAAM,WAAW,KAAM,MAAK,eAAe,MAAM,KAAK,OAAO,OAAO;AAAA,gBACnE,MAAK,cAAc,OAAO,OAAO;AACtC,sBAAU;AAAA,UACZ,SAAS,IAAI;AACX,sBAAU;AAAA,UACZ;AACA,gBAAM,QAAQA,KAAI;AAAA,QACpB,OAAO;AACL,oBAAU,KAAK,SAAS,OAAO,KAAK,MAAM,GAAG;AAC7C,cAAI,MAAM,QAAQ,OAAO,EAAG,QAAO;AAAA,QACrC;AAAA,MACF;AACA,UAAI;AACJ,UAAI,MAAM,OAAO,QAAS,WAAU,MAAM,YAAY;AACtD,UAAI,SAAS;AACX,YAAI,MAAM,aAAa,MAAM;AAC3B,cAAI,WAAW,KAAK,WAAW,OAAO,MAAM,QAAQ;AACpD,cAAI,MAAM,QAAQ,QAAQ,EAAG,QAAO;AACpC,kBAAQ;AAAA,QACV;AACA,YAAIpQ,SAAQ,MAAM;AAClB,YAAI,MAAM,QAAQ,QAAQ,MAAM,WAAW,MAAM;AAC/C,cAAI,MAAM,IAAK,KAAIoQ,QAAO,MAAM,KAAK;AACrC,cAAI,OAAO,KAAK,WAAW,OAAO,MAAM,aAAa,OAAO,MAAM,WAAW,MAAM,KAAK,MAAM,GAAG;AACjG,cAAI,MAAM,QAAQ,IAAI,EAAG,QAAO;AAChC,cAAI,MAAM,IAAK,UAAS,MAAM,IAAIA,KAAI;AAAA,cACjC,SAAQ;AAAA,QACf;AACA,YAAI,WAAW,QAAQ,SAAS,MAAM,QAAQ,KAAM,SAAQ,MAAM,MAAM,KAAK,GAAGpQ,QAAO,MAAM,QAAQ,QAAQ;AAC7G,YAAI,WAAW,QAAQ,SAAS,MAAM,QAAQ,KAAM,SAAQ,MAAM,MAAM,KAAK,GAAG,MAAM,QAAQ,MAAM,QAAQ,SAAS;AACrH,YAAI,MAAM,IAAK,UAAS;AAAA,iBACf,MAAM,WAAW,KAAM,UAAS,KAAK,eAAe,MAAM,KAAK,OAAO,OAAO;AAAA,YACjF,UAAS,KAAK,cAAc,OAAO,OAAO;AAC/C,YAAI,MAAM,QAAQ,MAAM,EAAG,QAAO;AAClC,YAAI,CAAC,MAAM,OAAO,MAAM,WAAW,QAAQ,MAAM,aAAa,MAAM;AAClE,gBAAM,SAAS,QAAQ,SAAS,eAAe,OAAO;AACpD,kBAAM,QAAQ,OAAO,OAAO;AAAA,UAC9B,CAAC;AAAA,QACH;AACA,YAAI,MAAM,aAAa,MAAM,QAAQ,YAAY,MAAM,QAAQ,WAAW;AACxE,cAAI,OAAO,IAAI,cAAc,MAAM;AACnC,mBAAS,KAAK,QAAQ,MAAM,UAAU,MAAM,eAAe,GAAG,EAAE,QAAQ,MAAM,OAAO;AAAA,QACvF;AAAA,MACF;AACA,UAAI,MAAM,OAAO,QAAS,UAAS,MAAM,YAAY,OAAO;AAC5D,UAAI,MAAM,QAAQ,SAAS,WAAW,QAAQ,YAAY,MAAO,OAAM,SAAS,SAAS,MAAM,KAAK,MAAM;AAAA,eACjG,YAAY,KAAM,OAAM,QAAQ,OAAO;AAChD,aAAO;AAAA,IACT;AACA,IAAAuQ,MAAK,UAAU,iBAAiB,SAAS,cAAc,KAAK,OAAO,SAAS;AAC1E,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,QAAQ,SAAS,QAAQ,MAAO,QAAO;AAC3C,UAAI,QAAQ,WAAW,QAAQ,QAAS,QAAO,KAAK,YAAY,OAAO,KAAK,MAAM,KAAK,CAAC,GAAG,OAAO;AAAA,eACzF,OAAO,KAAK,GAAG,EAAG,QAAO,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,eAC5D,QAAQ,WAAW,MAAM,KAAM,QAAO,KAAK,aAAa,OAAO,MAAM,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO;AAAA,eACpG,QAAQ,QAAS,QAAO,KAAK,aAAa,OAAO,MAAM,MAAM,OAAO;AAAA,eACpE,QAAQ,aAAa,QAAQ,UAAW,QAAO,KAAK,YAAY,OAAO,KAAK,OAAO;AAAA,eACnF,QAAQ,QAAS,QAAO,KAAK,YAAY,OAAO,OAAO;AAAA,eACvD,QAAQ,OAAQ,QAAO,KAAK,YAAY,OAAO,OAAO;AAAA,eACtD,QAAQ,UAAW,QAAO,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,eAC7D,QAAQ,SAAS,QAAQ,OAAQ,QAAO,KAAK,WAAW,OAAO,MAAM,QAAQ,MAAM,KAAK,CAAC,GAAG,OAAO;AAC5G,UAAI,MAAM,QAAQ,MAAM;AACtB,eAAO,KAAK,QAAQ,MAAM,KAAK,MAAM,eAAe,GAAG,EAAE,QAAQ,OAAO,OAAO;AAAA,MACjF,OAAO;AACL,eAAO,MAAM,MAAM,kBAAkB,GAAG;AAAA,MAC1C;AAAA,IACF;AACA,IAAAA,MAAK,UAAU,UAAU,SAAS,QAAQ,QAAQ,KAAK;AACrD,UAAI,SAAS,QAAQ,WAAW;AAChC,YAAM,aAAa,KAAK,KAAK,QAAQ,GAAG;AACxC,MAAAjE,SAAQ,MAAM,WAAW,WAAW,WAAW,IAAI;AACnD,YAAM,aAAa,MAAM,WAAW,WAAW,SAAS,CAAC;AACzD,UAAI,MAAM,aAAa,MAAM,WAAW,WAAW,UAAU;AAC3D,cAAM,aAAa,MAAM,WAAW,MAAM;AAC1C,cAAM,WAAW,WAAW,WAAW,MAAM;AAAA,MAC/C;AACA,aAAO,MAAM;AAAA,IACf;AACA,IAAAiE,MAAK,UAAU,gBAAgB,SAAS,aAAa,OAAO,SAAS;AACnE,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,SAAS;AACb,UAAIC,SAAQ;AACZ,aAAO,KAAK,MAAM,MAAM,EAAE,KAAK,SAAS,KAAK;AAC3C,YAAIJ,QAAO,MAAM,KAAK;AACtB,YAAI,OAAO,MAAM,OAAO,GAAG;AAC3B,YAAI;AACF,cAAI,QAAQ,KAAK,QAAQ,OAAO,OAAO;AACvC,cAAI,MAAM,QAAQ,KAAK,EAAG,QAAO;AACjC,mBAAS;AAAA,YACP,MAAM;AAAA,YACN;AAAA,UACF;AACA,UAAAI,SAAQ;AAAA,QACV,SAAS,IAAI;AACX,gBAAM,QAAQJ,KAAI;AAClB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,GAAG,QAAQ,SAAS;AACpB,UAAI,CAACI,OAAO,QAAO,MAAM,MAAM,oBAAoB;AACnD,aAAO;AAAA,IACT;AACA,IAAAD,MAAK,UAAU,uBAAuB,SAAS,oBAAoB,MAAM;AACvE,aAAO,IAAI,cAAc,OAAO,QAAQ,WAAW,QAAQ;AAAA,IAC7D;AACA,IAAAA,MAAK,UAAU,UAAU,SAAS,OAAO,MAAM,UAAU,QAAQ;AAC/D,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,MAAM,SAAS,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAM;AAC5D,UAAI,SAAS,KAAK,aAAa,MAAM,UAAU,MAAM;AACrD,UAAI,WAAW,OAAQ;AACvB,UAAI,KAAK,aAAa,QAAQ,UAAU,MAAM,EAAG;AACjD,aAAO;AAAA,IACT;AACA,IAAAA,MAAK,UAAU,eAAe,SAAS,OAAO,MAAM,UAAU,QAAQ;AACpE,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,MAAM,WAAW,KAAM,QAAO,MAAM,SAAS,CAAC,EAAE,QAAQ,MAAM,YAAY,IAAI,SAAS,CAAC;AAC5F,UAAI,SAAS;AACb,OAAC,QAAQ,WAAW,WAAW;AAC/B,UAAI,MAAM,YAAY,SAAS,QAAQ;AACrC,YAAI,MAAM,SAAS,MAAM,KAAM,QAAO,MAAM,SAAS;AAAA,YAChD;AAAA,MACP;AACA,UAAI,UAAU;AACd,UAAI,YAAY;AAChB,UAAI,MAAM,KAAK;AACb,iBAAS,KAAK,qBAAqB,IAAI;AAAA,MACzC,WAAW,MAAM,QAAQ;AACvB,iBAAS,KAAK,cAAc,MAAM,QAAQ;AAAA,MAC5C,WAAW,MAAM,UAAU;AACzB,kBAAU,KAAK,QAAQ,MAAM,UAAU,MAAM,EAAE,QAAQ,MAAM,QAAQ;AACrE,oBAAY;AAAA,MACd,WAAW,MAAM,UAAU;AACzB,kBAAU,MAAM,SAAS,IAAI,SAAS,QAAQ;AAC5C,cAAI,OAAO,WAAW,QAAQ,QAAS,QAAO,OAAO,QAAQ,MAAM,UAAU,IAAI;AACjF,cAAI,OAAO,WAAW,QAAQ,KAAM,QAAO,SAAS,MAAM,yBAAyB;AACnF,cAAI,UAAU,SAAS,SAAS,OAAO,WAAW,GAAG;AACrD,cAAI,OAAO,SAAS,SAAU,QAAO,SAAS,MAAM,yCAAyC;AAC7F,cAAI,MAAM,OAAO,QAAQ,KAAK,OAAO,WAAW,GAAG,GAAG,UAAU,IAAI;AACpE,mBAAS,SAAS,OAAO;AACzB,iBAAO;AAAA,QACT,GAAG,QAAQ,SAAS,EAAE,OAAO,SAAS,QAAQ;AAC5C,iBAAO;AAAA,QACT,CAAC;AACD,kBAAU,KAAK,qBAAqB,OAAO;AAAA,MAC7C,OAAO;AACL,YAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,SAAS;AAClD,cAAI,EAAE,MAAM,QAAQ,MAAM,KAAK,WAAW,GAAI,QAAO,SAAS,MAAM,yBAAyB,MAAM,GAAG;AACtG,cAAI,CAAC,MAAM,QAAQ,IAAI,EAAG,QAAO,SAAS,MAAM,oCAAoC;AACpF,cAAI,QAAQ,KAAK,MAAM;AACvB,gBAAM,WAAW,WAAW;AAC5B,oBAAU,KAAK,qBAAqB,KAAK,IAAI,SAAS,MAAM;AAC1D,gBAAI,UAAU,QAAQ,WAAW;AACjC,mBAAO,KAAK,QAAQ,OAAO,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,MAAM,QAAQ;AAAA,UAClE,GAAG,KAAK,CAAC;AAAA,QACX,WAAW,MAAM,QAAQ,MAAM;AAC7B,mBAAS,KAAK,QAAQ,MAAM,KAAK,MAAM,EAAE,QAAQ,MAAM,QAAQ;AAAA,QACjE,OAAO;AACL,oBAAU,KAAK,iBAAiB,MAAM,KAAK,IAAI;AAC/C,sBAAY;AAAA,QACd;AAAA,MACF;AACA,UAAI;AACJ,UAAI,CAAC,MAAM,OAAO,MAAM,WAAW,MAAM;AACvC,YAAI,MAAM,MAAM,aAAa,OAAO,MAAM,WAAW,MAAM;AAC3D,YAAI,MAAM,MAAM,aAAa,OAAO,cAAc;AAClD,YAAI,QAAQ,MAAM;AAChB,cAAI,MAAM,QAAQ,KAAM,UAAS,MAAM,sCAAsC;AAAA,QAC/E,OAAO;AACL,cAAI,MAAM,QAAQ,KAAM,UAAS,KAAK,iBAAiB,KAAK,WAAW,KAAK,OAAO;AAAA,QACrF;AAAA,MACF;AACA,UAAI,MAAM,aAAa,KAAM,UAAS,KAAK,iBAAiB,MAAM,UAAU,OAAO,WAAW,MAAM;AACpG,aAAO;AAAA,IACT;AACA,IAAAA,MAAK,UAAU,gBAAgB,SAAS,aAAa,MAAM,UAAU;AACnE,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,OAAO,MAAM,OAAO,KAAK,IAAI;AACjC,UAAI,CAAC,MAAM;AACT,QAAAjE,SAAQ,OAAO,KAAK,OAAO,mBAAmB,KAAK,UAAU,OAAO,KAAK,MAAM,MAAM,CAAC,CAAC;AAAA,MACzF;AACA,aAAO,KAAK,QAAQ,KAAK,OAAO,QAAQ;AAAA,IAC1C;AACA,IAAAiE,MAAK,UAAU,mBAAmB,SAAS,gBAAgB,KAAK,MAAM;AACpE,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI,OAAO,KAAK,GAAG,EAAG,QAAO,KAAK,WAAW,MAAM,GAAG;AAAA,eAC7C,QAAQ,WAAW,MAAM,KAAM,QAAO,KAAK,aAAa,MAAM,MAAM,YAAY,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC;AAAA,eACjG,QAAQ,QAAS,QAAO,KAAK,aAAa,MAAM,MAAM,IAAI;AAAA,eAC1D,QAAQ,aAAa,QAAQ,UAAW,QAAO,KAAK,YAAY,MAAM,GAAG;AAAA,eACzE,QAAQ,QAAS,QAAO,KAAK,YAAY;AAAA,eACzC,QAAQ,SAAS,QAAQ,OAAQ,QAAO,KAAK,WAAW,MAAM,MAAM,QAAQ,MAAM,YAAY,CAAC,CAAC;AAAA,eAChG,QAAQ,OAAQ,QAAO,KAAK,YAAY,IAAI;AAAA,eAC5C,QAAQ,UAAW,QAAO,KAAK,WAAW,MAAM,GAAG;AAAA,UACvD,OAAM,IAAI,MAAM,sBAAsB,GAAG;AAAA,IAChD;AACA,IAAAA,MAAK,UAAU,YAAY,SAAS,SAAS,KAAK;AAChD,aAAO,YAAY,KAAK,GAAG;AAAA,IAC7B;AACA,IAAAA,MAAK,UAAU,cAAc,SAAS,WAAW,KAAK;AACpD,aAAO,oCAAoC,KAAK,GAAG;AAAA,IACrD;AACA,WAAO;AAAA,EACT;AAGA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAI,OAAO;AACX,SAAK,WAAW,MAAM,EAAE;AACxB,SAAK,gBAAgB,MAAM,EAAE;AAC7B,SAAK,gBAAgB,MAAM,EAAE;AAC7B,SAAK,OAAO,MAAM;AAClB,WAAO;AAAA,EACT;AAGA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAI,aAAa,MAAM;AACvB,cAAU,WAAW;AAAA,MACnB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AACA,cAAU,iBAAiB,WAAW,SAAS,UAAU,QAAQ;AACjE,cAAU,MAAM;AAAA,MACd,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AACA,cAAU,YAAY,WAAW,SAAS,UAAU,GAAG;AACvD,WAAO;AAAA,EACT;AAGA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAI,aAAa;AACjB,eAAW,WAAW,SAAS,QAAQE,MAAK;AAC1C,UAAI,MAAM,CAAC;AACX,aAAO,KAAKA,IAAG,EAAE,QAAQ,SAAS,KAAK;AACrC,aAAK,MAAM,MAAM,IAAK,OAAM,MAAM;AAClC,YAAI,QAAQA,KAAI,GAAG;AACnB,YAAI,KAAK,IAAI;AAAA,MACf,CAAC;AACD,aAAO;AAAA,IACT;AACA,eAAW,MAAM,MAAM;AACvB,WAAO;AAAA,EACT;AAIA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAIzN,YAAWH,MAAK;AACpB,QAAI,OAAOyP,OAAM;AACjB,QAAI,OAAO,KAAK;AAChB,QAAI,SAAS,KAAK;AAClB,QAAI,MAAM,KAAK,UAAU;AACzB,aAAS,WAAW,QAAQ;AAC1B,OAAC,QAAQ,WAAW,MAAM;AAC1B,OAAC,QAAQ,WAAW,OAAO,OAAO;AAClC,OAAC,QAAQ,WAAW,SAAS;AAC7B,OAAC,QAAQ,WAAW,OAAO,IAAI,QAAQ;AACvC,OAAC,QAAQ,WAAW,KAAK,MAAM,OAAO,IAAI;AAAA,IAC5C;AACA,gBAAY;AACZ,eAAW,UAAU,SAAS,SAAS,OAAO,MAAM,SAAS;AAC3D,UAAI,EAAE,gBAAgB,KAAK,eAAgB,QAAO,IAAI,KAAK,cAAc,MAAM,OAAO;AACtF,cAAQ,QAAQ,WAAW,KAAK,QAAQ,MAAM,OAAO;AAAA,IACvD;AACA,aAAS,QAAQ,QAAQ;AACvB,WAAK,KAAK,KAAK,QAAQ,WAAW,OAAO,MAAM;AAAA,IACjD;AACA,IAAAtP,UAAS,SAAS,KAAK,IAAI;AAC3B,YAAQ,UAAU,WAAW,SAAS,QAAQ,SAAS,KAAK,KAAK;AAC/D,UAAI,QAAQ,QAAQ,EAAG,QAAO;AAC9B,UAAI,QAAQ,QAAQ,KAAK;AACzB,UAAI,aAAa,aAAa,SAAS,0BAA0B,MAAM,GAAG;AAC1E,UAAI,QAAQ,QAAQ,UAAU,EAAG,QAAO;AACxC,cAAQ,QAAQ,KAAK;AACrB,aAAO,WAAW,QAAQ,OAAO,WAAW,WAAW,OAAO,WAAW,SAAS,SAAS,OAAO;AAAA,IACpG;AACA,YAAQ,UAAU,aAAa,SAAS,UAAU,SAAS,KAAK,KAAK;AACnE,UAAI,aAAa,aAAa,SAAS,8BAA8B,MAAM,GAAG;AAC9E,UAAI,QAAQ,QAAQ,UAAU,EAAG,QAAO;AACxC,UAAI,MAAM,aAAa,SAAS,WAAW,WAAW,8BAA8B,MAAM,GAAG;AAC7F,UAAI,QAAQ,QAAQ,GAAG,EAAG,QAAO;AACjC,UAAI,CAAC,OAAO,WAAW,QAAQ,OAAO,WAAW,WAAW,OAAO,WAAW,SAAS,SAAS,KAAK;AACnG,eAAO,QAAQ,MAAM,2BAA2B,MAAM,GAAG;AAAA,MAC3D;AACA,UAAI,WAAW,aAAa,QAAQ,KAAM,QAAO,QAAQ,KAAK,KAAK,+BAA+B,MAAM,GAAG;AAC3G,UAAI,QAAQ,QAAQ,KAAK;AACzB,UAAI,MAAM,KAAK,cAAc,SAAS,8CAA8C,QAAQ,WAAW,MAAM,GAAG;AAChH,UAAI,QAAQ,QAAQ,GAAG,EAAG,QAAO;AACjC,YAAM,QAAQ,SAAS,MAAM;AAC7B,cAAQ,QAAQ,KAAK;AACrB,aAAO,QAAQ,KAAK,KAAK,+BAA+B,MAAM,GAAG;AAAA,IACnE;AACA,YAAQ,UAAU,gBAAgB,SAAS,aAAa,SAAS,MAAM;AACrE,aAAO,MAAM;AACX,YAAI,MAAM,aAAa,SAAS,IAAI;AACpC,YAAI,QAAQ,QAAQ,GAAG,EAAG,QAAO;AACjC,YAAI,MAAM,aAAa,SAAS,IAAI,WAAW,IAAI;AACnD,YAAI,QAAQ,QAAQ,GAAG,EAAG,QAAO;AACjC,YAAI;AACJ,YAAI,IAAI,aAAa,QAAQ,KAAM,OAAM,QAAQ,KAAK,GAAG;AAAA,YACpD,OAAM,KAAK,cAAc,SAAS,IAAI;AAC3C,YAAI,QAAQ,QAAQ,GAAG,EAAG,QAAO;AACjC,YAAI,IAAI,WAAW,MAAO;AAAA,MAC5B;AAAA,IACF;AACA,YAAQ,UAAU,cAAc,SAAS,WAAW,SAAS,KAAK,SAAS,SAAS;AAClF,UAAI,SAAS,CAAC;AACd,aAAO,CAAC,QAAQ,QAAQ,GAAG;AACzB,YAAI,cAAc,KAAK,SAAS,SAAS,KAAK;AAC9C,YAAI,QAAQ,QAAQ,WAAW,EAAG,QAAO;AACzC,YAAI,MAAM,QAAQ,OAAO,SAAS,OAAO,OAAO;AAChD,YAAI,QAAQ,QAAQ,GAAG,KAAK,YAAa;AACzC,eAAO,KAAK,GAAG;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AACA,YAAQ,UAAU,aAAa,SAAS,UAAU,SAAS,KAAK;AAC9D,UAAI,QAAQ,UAAU;AACpB,YAAI,SAAS,QAAQ,UAAU;AAC/B,YAAI,QAAQ,QAAQ,MAAM,EAAG,QAAO;AACpC,eAAO;AAAA,UACL;AAAA,UACA,MAAM,QAAQ,IAAI;AAAA,QACpB;AAAA,MACF,WAAW,QAAQ,UAAU;AAC3B,YAAI,MAAM,QAAQ,IAAI;AACtB,YAAI,IAAI,SAAS,MAAM,EAAG,QAAO,QAAQ,MAAM,iDAAiD;AAChG,YAAI,MAAM;AACV,iBAAS,KAAK,GAAG,KAAK,IAAI,SAAS,GAAG,MAAM;AAC1C,iBAAO,OAAO,aAAa,IAAI,aAAa,KAAK,CAAC,CAAC;AAAA,QACrD;AACA,eAAO;AAAA,MACT,WAAW,QAAQ,UAAU;AAC3B,YAAI,SAAS,QAAQ,IAAI,EAAE,SAAS,OAAO;AAC3C,YAAI,CAAC,KAAK,UAAU,MAAM,GAAG;AAC3B,iBAAO,QAAQ,MAAM,wDAAwD;AAAA,QAC/E;AACA,eAAO;AAAA,MACT,WAAW,QAAQ,UAAU;AAC3B,eAAO,QAAQ,IAAI;AAAA,MACrB,WAAW,QAAQ,WAAW;AAC5B,eAAO,QAAQ,IAAI;AAAA,MACrB,WAAW,QAAQ,YAAY;AAC7B,YAAI,WAAW,QAAQ,IAAI,EAAE,SAAS,OAAO;AAC7C,YAAI,CAAC,KAAK,YAAY,QAAQ,GAAG;AAC/B,iBAAO,QAAQ,MAAM,0DAA0D;AAAA,QACjF;AACA,eAAO;AAAA,MACT,WAAW,OAAO,KAAK,GAAG,GAAG;AAC3B,eAAO,QAAQ,IAAI,EAAE,SAAS;AAAA,MAChC,OAAO;AACL,eAAO,QAAQ,MAAM,8BAA8B,MAAM,cAAc;AAAA,MACzE;AAAA,IACF;AACA,YAAQ,UAAU,eAAe,SAAS,YAAY,SAAS,QAAQ,UAAU;AAC/E,UAAI;AACJ,UAAI,cAAc,CAAC;AACnB,UAAI,QAAQ;AACZ,aAAO,CAAC,QAAQ,QAAQ,GAAG;AACzB,YAAI,WAAW,QAAQ,UAAU;AACjC,kBAAU;AACV,iBAAS,WAAW;AACpB,aAAK,WAAW,SAAS,GAAG;AAC1B,sBAAY,KAAK,KAAK;AACtB,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,UAAI,WAAW,IAAK,aAAY,KAAK,KAAK;AAC1C,UAAI,QAAQ,YAAY,CAAC,IAAI,KAAK;AAClC,UAAI,SAAS,YAAY,CAAC,IAAI;AAC9B,UAAI,SAAU,UAAS;AAAA,UAClB,UAAS,CAAC,OAAO,MAAM,EAAE,OAAO,YAAY,MAAM,CAAC,CAAC;AACzD,UAAI,QAAQ;AACV,YAAI,MAAM,OAAO,OAAO,KAAK,GAAG,CAAC;AACjC,YAAI,QAAQ,OAAQ,OAAM,OAAO,OAAO,KAAK,GAAG,CAAC;AACjD,YAAI,QAAQ,OAAQ,UAAS;AAAA,MAC/B;AACA,aAAO;AAAA,IACT;AACA,YAAQ,UAAU,cAAc,SAAS,WAAW,SAAS,KAAK;AAChE,UAAI,MAAM,QAAQ,IAAI,EAAE,SAAS;AACjC,UAAI,QAAQ,WAAW;AACrB,YAAI0N,QAAO,IAAI,MAAM,GAAG,CAAC,IAAI;AAC7B,YAAI,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI;AAC5B,YAAIC,OAAM,IAAI,MAAM,GAAG,CAAC,IAAI;AAC5B,YAAIC,QAAO,IAAI,MAAM,GAAG,EAAE,IAAI;AAC9B,YAAI,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI;AAC9B,YAAI,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI;AAAA,MAChC,WAAW,QAAQ,WAAW;AAC5B,YAAIF,QAAO,IAAI,MAAM,GAAG,CAAC,IAAI;AAC7B,YAAI,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI;AAC5B,YAAIC,OAAM,IAAI,MAAM,GAAG,CAAC,IAAI;AAC5B,YAAIC,QAAO,IAAI,MAAM,GAAG,CAAC,IAAI;AAC7B,YAAI,MAAM,IAAI,MAAM,GAAG,EAAE,IAAI;AAC7B,YAAI,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI;AAC9B,YAAIF,QAAO,GAAI,CAAAA,QAAO,MAAMA;AAAA,YACvB,CAAAA,QAAO,OAAOA;AAAA,MACrB,OAAO;AACL,eAAO,QAAQ,MAAM,cAAc,MAAM,4BAA4B;AAAA,MACvE;AACA,aAAO,KAAK,IAAIA,OAAM,MAAM,GAAGC,MAAKC,OAAM,KAAK,KAAK,CAAC;AAAA,IACvD;AACA,YAAQ,UAAU,cAAc,SAAS,WAAW,SAAS;AAC3D,aAAO;AAAA,IACT;AACA,YAAQ,UAAU,cAAc,SAAS,WAAW,SAAS;AAC3D,UAAI,MAAM,QAAQ,UAAU;AAC5B,UAAI,QAAQ,QAAQ,GAAG,EAAG,QAAO;AAAA,UAC5B,QAAO,QAAQ;AAAA,IACtB;AACA,YAAQ,UAAU,aAAa,SAAS,UAAU,SAAS,QAAQ;AACjE,UAAI,MAAM,QAAQ,IAAI;AACtB,UAAI,MAAM,IAAI,OAAO,GAAG;AACxB,UAAI,OAAQ,OAAM,OAAO,IAAI,SAAS,EAAE,CAAC,KAAK;AAC9C,aAAO;AAAA,IACT;AACA,YAAQ,UAAU,OAAO,SAAS,IAAI,QAAQ,KAAK;AACjD,UAAI,OAAO,WAAW,WAAY,UAAS,OAAO,GAAG;AACrD,aAAO,OAAO,YAAY,KAAK,EAAE;AAAA,IACnC;AACA,aAAS,aAAa,KAAK,MAAM;AAC/B,UAAI,MAAM,IAAI,UAAU,IAAI;AAC5B,UAAI,IAAI,QAAQ,GAAG,EAAG,QAAO;AAC7B,UAAI,MAAM,IAAI,SAAS,OAAO,CAAC;AAC/B,UAAI,aAAa,MAAM,QAAQ;AAC/B,WAAK,MAAM,QAAQ,IAAI;AACrB,YAAI,MAAM;AACV,cAAM;AACN,gBAAQ,MAAM,SAAS,KAAK;AAC1B,gBAAM,IAAI,UAAU,IAAI;AACxB,cAAI,IAAI,QAAQ,GAAG,EAAG,QAAO;AAC7B,kBAAQ;AACR,iBAAO,MAAM;AAAA,QACf;AAAA,MACF,OAAO;AACL,eAAO;AAAA,MACT;AACA,UAAI,SAAS,IAAI,IAAI,GAAG;AACxB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,aAAS,aAAa,KAAK,WAAW,MAAM;AAC1C,UAAI,MAAM,IAAI,UAAU,IAAI;AAC5B,UAAI,IAAI,QAAQ,GAAG,EAAG,QAAO;AAC7B,UAAI,CAAC,aAAa,QAAQ,IAAK,QAAO;AACtC,WAAK,MAAM,SAAS,GAAG;AACrB,eAAO;AAAA,MACT;AACA,UAAI,MAAM,MAAM;AAChB,UAAI,MAAM,EAAG,QAAO,IAAI,MAAM,2BAA2B;AACzD,YAAM;AACN,eAAS,KAAK,GAAG,KAAK,KAAK,MAAM;AAC/B,gBAAQ;AACR,YAAI,KAAK,IAAI,UAAU,IAAI;AAC3B,YAAI,IAAI,QAAQ,EAAE,EAAG,QAAO;AAC5B,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAIA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAI5N,YAAWH,MAAK;AACpB,QAAIrC,UAASH,KAAI,EAAE;AACnB,QAAI,aAAa,MAAM;AACvB,aAAS,WAAW,QAAQ;AAC1B,iBAAW,KAAK,QAAQ,WAAW,MAAM;AACzC,OAAC,QAAQ,WAAW,MAAM;AAAA,IAC5B;AACA,IAAA2C,UAAS,YAAY,UAAU;AAC/B,gBAAY;AACZ,eAAW,UAAU,SAAS,SAAS,OAAO,MAAM,SAAS;AAC3D,UAAI,QAAQ,KAAK,SAAS,EAAE,MAAM,UAAU;AAC5C,UAAI,QAAQ,QAAQ,MAAM,YAAY;AACtC,UAAI,MAAM;AACV,UAAIhD,SAAQ;AACZ,UAAI,MAAM;AACV,eAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM;AACxC,YAAIwQ,SAAQ,MAAM,EAAE,EAAE,MAAM,GAAG;AAC/B,YAAIA,WAAU,KAAM;AACpB,YAAIA,OAAM,CAAC,MAAM,MAAO;AACxB,YAAIxQ,WAAU,IAAI;AAChB,cAAIwQ,OAAM,CAAC,MAAM,QAAS;AAC1B,UAAAxQ,SAAQ;AAAA,QACV,OAAO;AACL,cAAIwQ,OAAM,CAAC,MAAM,MAAO;AACxB,gBAAM;AACN;AAAA,QACF;AAAA,MACF;AACA,UAAIxQ,WAAU,MAAM,QAAQ,GAAI,OAAM,IAAI,MAAM,gCAAgC,KAAK;AACrF,UAAI,SAAS,MAAM,MAAMA,SAAQ,GAAG,GAAG,EAAE,KAAK,EAAE;AAChD,aAAO,QAAQ,qBAAqB,EAAE;AACtC,UAAI,QAAQ,IAAIQ,QAAO,QAAQ,QAAQ;AACvC,aAAO,WAAW,UAAU,OAAO,KAAK,QAAQ,WAAW,OAAO,OAAO;AAAA,IAC3E;AACA,WAAO;AAAA,EACT;AAGA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAI,WAAW;AACf,aAAS,MAAM,MAAM;AACrB,aAAS,MAAM,MAAM;AACrB,WAAO;AAAA,EACT;AAIA,WAAS,QAAQ;AACf,QAAI,WAAY,QAAO;AACvB,iBAAa;AACb,QAAIwC,YAAWH,MAAK;AACpB,QAAIrC,UAASH,KAAI,EAAE;AACnB,QAAI,OAAOiS,OAAM;AACjB,QAAI,OAAO,KAAK;AAChB,QAAI,MAAM,KAAK,UAAU;AACzB,aAAS,WAAW,QAAQ;AAC1B,OAAC,QAAQ,WAAW,MAAM;AAC1B,OAAC,QAAQ,WAAW,OAAO,OAAO;AAClC,OAAC,QAAQ,WAAW,SAAS;AAC7B,OAAC,QAAQ,WAAW,OAAO,IAAI,QAAQ;AACvC,OAAC,QAAQ,WAAW,KAAK,MAAM,OAAO,IAAI;AAAA,IAC5C;AACA,gBAAY;AACZ,eAAW,UAAU,SAAS,SAAS,OAAO,MAAM,UAAU;AAC5D,cAAQ,QAAQ,WAAW,KAAK,QAAQ,MAAM,QAAQ,EAAE,KAAK;AAAA,IAC/D;AACA,aAAS,QAAQ,QAAQ;AACvB,WAAK,KAAK,KAAK,QAAQ,WAAW,OAAO,MAAM;AAAA,IACjD;AACA,IAAAtP,UAAS,SAAS,KAAK,IAAI;AAC3B,YAAQ,UAAU,mBAAmB,SAAS,gBAAgB,KAAK,WAAW,KAAK,SAAS;AAC1F,UAAI,aAAa,UAAU,KAAK,WAAW,MAAM,QAAQ,WAAW,QAAQ;AAC5E,UAAI,QAAQ,SAAS,KAAK;AACxB,YAAI,SAAS,IAAIxC,QAAO,CAAC;AACzB,eAAO,CAAC,IAAI;AACZ,eAAO,CAAC,IAAI,QAAQ;AACpB,eAAO,KAAK,qBAAqB,CAAC,QAAQ,OAAO,CAAC;AAAA,MACpD;AACA,UAAI,YAAY;AAChB,eAAS,KAAK,QAAQ,QAAQ,MAAM,KAAK,OAAO,EAAG;AACnD,UAAI,SAAS,IAAIA,QAAO,IAAI,IAAI,SAAS;AACzC,aAAO,CAAC,IAAI;AACZ,aAAO,CAAC,IAAI,MAAM;AAClB,eAAS,KAAK,IAAI,WAAW,KAAK,QAAQ,QAAQ,KAAK,GAAG,MAAM,OAAO,EAAG,QAAO,EAAE,IAAI,KAAK;AAC5F,aAAO,KAAK,qBAAqB,CAAC,QAAQ,OAAO,CAAC;AAAA,IACpD;AACA,YAAQ,UAAU,aAAa,SAAS,UAAU,KAAK,KAAK;AAC1D,UAAI,QAAQ,UAAU;AACpB,eAAO,KAAK,qBAAqB,CAAC,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC;AAAA,MAC7D,WAAW,QAAQ,UAAU;AAC3B,YAAI,MAAM,IAAIA,QAAO,IAAI,SAAS,CAAC;AACnC,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,cAAI,cAAc,IAAI,WAAW,EAAE,GAAG,KAAK,CAAC;AAAA,QAC9C;AACA,eAAO,KAAK,qBAAqB,GAAG;AAAA,MACtC,WAAW,QAAQ,UAAU;AAC3B,YAAI,CAAC,KAAK,UAAU,GAAG,GAAG;AACxB,kBAAQ,QAAQ,WAAW,SAAS,MAAM,gEAAgE;AAAA,QAC5G;AACA,eAAO,KAAK,qBAAqB,GAAG;AAAA,MACtC,WAAW,QAAQ,YAAY;AAC7B,YAAI,CAAC,KAAK,YAAY,GAAG,GAAG;AAC1B,kBAAQ,QAAQ,WAAW,SAAS,MAAM,mNAAmN;AAAA,QAC/P;AACA,eAAO,KAAK,qBAAqB,GAAG;AAAA,MACtC,WAAW,OAAO,KAAK,GAAG,GAAG;AAC3B,eAAO,KAAK,qBAAqB,GAAG;AAAA,MACtC,WAAW,QAAQ,WAAW;AAC5B,eAAO,KAAK,qBAAqB,GAAG;AAAA,MACtC,OAAO;AACL,gBAAQ,QAAQ,WAAW,SAAS,MAAM,8BAA8B,MAAM,cAAc;AAAA,MAC9F;AAAA,IACF;AACA,YAAQ,UAAU,eAAe,SAAS,YAAY,IAAI,QAAQ,UAAU;AAC1E,UAAI,OAAO,OAAO,UAAU;AAC1B,YAAI,CAAC,OAAQ,SAAQ,QAAQ,WAAW,SAAS,MAAM,6CAA6C;AACpG,YAAI,CAAC,OAAO,eAAe,EAAE,EAAG,SAAQ,QAAQ,WAAW,SAAS,MAAM,+BAA+B;AACzG,aAAK,OAAO,EAAE,EAAE,MAAM,UAAU;AAChC,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,KAAM,IAAG,EAAE,KAAK;AAAA,MACnD,WAAW,MAAM,QAAQ,EAAE,GAAG;AAC5B,aAAK,GAAG,MAAM;AACd,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,KAAM,IAAG,EAAE,KAAK;AAAA,MACnD;AACA,UAAI,CAAC,MAAM,QAAQ,EAAE,GAAG;AACtB,gBAAQ,QAAQ,WAAW,SAAS,MAAM,oDAAoD,KAAK,UAAU,EAAE,CAAC;AAAA,MAClH;AACA,UAAI,CAAC,UAAU;AACb,YAAI,GAAG,CAAC,KAAK,GAAI,SAAQ,QAAQ,WAAW,SAAS,MAAM,6BAA6B;AACxF,WAAG,OAAO,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAAA,MACpC;AACA,UAAI,OAAO;AACX,eAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,YAAI,QAAQ,GAAG,EAAE;AACjB,aAAK,QAAQ,SAAS,KAAK,UAAU,EAAG;AAAA,MAC1C;AACA,UAAI,QAAQ,IAAIA,QAAO,IAAI;AAC3B,UAAI,SAAS,MAAM,SAAS;AAC5B,eAAS,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM;AAC1C,YAAI,QAAQ,GAAG,EAAE;AACjB,cAAM,QAAQ,IAAI,QAAQ;AAC1B,gBAAQ,UAAU,KAAK,EAAG,OAAM,QAAQ,IAAI,MAAM,QAAQ;AAAA,MAC5D;AACA,aAAO,KAAK,qBAAqB,KAAK;AAAA,IACxC;AACA,aAAS,IAAI,KAAK;AAChB,UAAI,MAAM,GAAI,QAAO,MAAM;AAAA,UACtB,QAAO;AAAA,IACd;AACA,YAAQ,UAAU,cAAc,SAAS,WAAW,MAAM,KAAK;AAC7D,UAAI;AACJ,UAAI,OAAO,IAAI,KAAK,IAAI;AACxB,UAAI,QAAQ,WAAW;AACrB,cAAM,CAAC,IAAI,KAAK,YAAY,CAAC,GAAG,IAAI,KAAK,YAAY,IAAI,CAAC,GAAG,IAAI,KAAK,WAAW,CAAC,GAAG,IAAI,KAAK,YAAY,CAAC,GAAG,IAAI,KAAK,cAAc,CAAC,GAAG,IAAI,KAAK,cAAc,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE;AAAA,MAClL,WAAW,QAAQ,WAAW;AAC5B,cAAM,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,GAAG,IAAI,KAAK,YAAY,IAAI,CAAC,GAAG,IAAI,KAAK,WAAW,CAAC,GAAG,IAAI,KAAK,YAAY,CAAC,GAAG,IAAI,KAAK,cAAc,CAAC,GAAG,IAAI,KAAK,cAAc,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE;AAAA,MACxL,OAAO;AACL,SAAC,QAAQ,WAAW,SAAS,MAAM,cAAc,MAAM,4BAA4B;AAAA,MACrF;AACA,aAAO,KAAK,WAAW,KAAK,QAAQ;AAAA,IACtC;AACA,YAAQ,UAAU,cAAc,SAAS,aAAa;AACpD,aAAO,KAAK,qBAAqB,EAAE;AAAA,IACrC;AACA,YAAQ,UAAU,aAAa,SAAS,UAAU,KAAK,QAAQ;AAC7D,UAAI,OAAO,QAAQ,UAAU;AAC3B,YAAI,CAAC,OAAQ,SAAQ,QAAQ,WAAW,SAAS,MAAM,6CAA6C;AACpG,YAAI,CAAC,OAAO,eAAe,GAAG,GAAG;AAC/B,kBAAQ,QAAQ,WAAW,SAAS,MAAM,iCAAiC,KAAK,UAAU,GAAG,CAAC;AAAA,QAChG;AACA,cAAM,OAAO,GAAG;AAAA,MAClB;AACA,UAAI,OAAO,QAAQ,YAAY,CAACA,QAAO,SAAS,GAAG,GAAG;AACpD,YAAI,WAAW,IAAI,QAAQ;AAC3B,YAAI,CAAC,IAAI,QAAQ,SAAS,CAAC,IAAI,KAAK;AAClC,mBAAS,QAAQ,CAAC;AAAA,QACpB;AACA,cAAM,IAAIA,QAAO,QAAQ;AAAA,MAC3B;AACA,UAAIA,QAAO,SAAS,GAAG,GAAG;AACxB,YAAI,OAAO,IAAI;AACf,YAAI,IAAI,WAAW,EAAG;AACtB,YAAI,MAAM,IAAIA,QAAO,IAAI;AACzB,YAAI,KAAK,GAAG;AACZ,YAAI,IAAI,WAAW,EAAG,KAAI,CAAC,IAAI;AAC/B,eAAO,KAAK,qBAAqB,GAAG;AAAA,MACtC;AACA,UAAI,MAAM,IAAK,QAAO,KAAK,qBAAqB,GAAG;AACnD,UAAI,MAAM,IAAK,QAAO,KAAK,qBAAqB,CAAC,GAAG,GAAG,CAAC;AACxD,UAAI,OAAO;AACX,eAAS,KAAK,KAAK,MAAM,KAAK,OAAO,EAAG;AACxC,UAAI,MAAM,IAAI,MAAM,IAAI;AACxB,eAAS,KAAK,IAAI,SAAS,GAAG,MAAM,GAAG,MAAM;AAC3C,YAAI,EAAE,IAAI,MAAM;AAChB,gBAAQ;AAAA,MACV;AACA,UAAI,IAAI,CAAC,IAAI,KAAK;AAChB,YAAI,QAAQ,CAAC;AAAA,MACf;AACA,aAAO,KAAK,qBAAqB,IAAIA,QAAO,GAAG,CAAC;AAAA,IAClD;AACA,YAAQ,UAAU,cAAc,SAAS,WAAW,OAAO;AACzD,aAAO,KAAK,qBAAqB,QAAQ,MAAM,CAAC;AAAA,IAClD;AACA,YAAQ,UAAU,OAAO,SAAS,IAAI,QAAQ,KAAK;AACjD,UAAI,OAAO,WAAW,WAAY,UAAS,OAAO,GAAG;AACrD,aAAO,OAAO,YAAY,KAAK,EAAE;AAAA,IACnC;AACA,YAAQ,UAAU,eAAe,SAAS,YAAY,YAAY,UAAU,QAAQ;AAClF,UAAI,SAAS,QAAQ,WAAW;AAChC,UAAI;AACJ,UAAI,MAAM,SAAS,MAAM,KAAM,QAAO;AACtC,UAAI,OAAO,WAAW,KAAK;AAC3B,UAAI,MAAM,kBAAkB,OAAQ,OAAM,gBAAgB,KAAK,aAAa,MAAM,SAAS,GAAG,UAAU,MAAM,EAAE,KAAK;AACrH,UAAI,KAAK,WAAW,MAAM,cAAc,OAAQ,QAAO;AACvD,WAAK,KAAK,GAAG,KAAK,KAAK,QAAQ,KAAM,KAAI,KAAK,EAAE,MAAM,MAAM,cAAc,EAAE,EAAG,QAAO;AACtF,aAAO;AAAA,IACT;AACA,aAAS,UAAU,KAAK,WAAW,KAAK,UAAU;AAChD,UAAI;AACJ,UAAI,QAAQ,QAAS,OAAM;AAAA,eAClB,QAAQ,QAAS,OAAM;AAChC,UAAI,IAAI,UAAU,eAAe,GAAG,EAAG,OAAM,IAAI,UAAU,GAAG;AAAA,eACrD,OAAO,QAAQ,aAAa,MAAM,OAAO,IAAK,OAAM;AAAA,UACxD,QAAO,SAAS,MAAM,kBAAkB,GAAG;AAChD,UAAI,OAAO,GAAI,QAAO,SAAS,MAAM,sCAAsC;AAC3E,UAAI,CAAC,UAAW,QAAO;AACvB,aAAO,IAAI,eAAe,OAAO,WAAW,KAAK;AACjD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAIA,WAAS+R,SAAQ;AACf,QAAIC,YAAY,QAAO;AACvB,IAAAA,cAAa;AACb,QAAIxP,YAAWH,MAAK;AACpB,QAAI,aAAa,MAAM;AACvB,aAAS,WAAW,QAAQ;AAC1B,iBAAW,KAAK,QAAQ,WAAW,MAAM;AACzC,OAAC,QAAQ,WAAW,MAAM;AAAA,IAC5B;AACA,IAAAG,UAAS,YAAY,UAAU;AAC/B,gBAAY;AACZ,eAAW,UAAU,SAAS,SAAS,OAAO,MAAM,SAAS;AAC3D,UAAI,MAAM,WAAW,UAAU,OAAO,KAAK,QAAQ,WAAW,IAAI;AAClE,UAAI,KAAK,IAAI,SAAS,QAAQ;AAC9B,UAAI,MAAM,CAAC,gBAAgB,QAAQ,QAAQ,OAAO;AAClD,eAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM,GAAI,KAAI,KAAK,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;AACzE,UAAI,KAAK,cAAc,QAAQ,QAAQ,OAAO;AAC9C,aAAO,IAAI,KAAK,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AAGA,WAASyP,SAAQ;AACf,QAAIC,YAAY,QAAOC;AACvB,IAAAD,cAAa;AACb,QAAI,WAAWC;AACf,aAAS,MAAM,MAAM;AACrB,aAAS,MAAMJ,OAAM;AACrB,WAAOI;AAAA,EACT;AAGA,WAASL,SAAQ;AACf,QAAIM,YAAY,QAAOC;AACvB,IAAAD,cAAa;AACb,QAAI,OAAOC;AACX,SAAK,SAAS,MAAM;AACpB,SAAK,SAAS,MAAM,EAAE;AACtB,SAAK,OAAO,MAAM;AAClB,SAAK,YAAY,MAAM;AACvB,SAAK,WAAW,MAAM;AACtB,SAAK,WAAWJ,OAAM;AACtB,WAAOI;AAAA,EACT;AAGA,WAASC,SAAQ;AACf,QAAIC,YAAY,QAAOC;AACvB,IAAAD,cAAa;AACb,QAAI,MAAMT,OAAM;AAChB,QAAI,OAAO,IAAI,OAAO,QAAQ,WAAW;AACvC,WAAK,OAAO;AAAA,QACV,SAAS,KAAK,QAAQ;AAAA,QACtB,aAAa,KAAK,QAAQ;AAAA,MAC5B,CAAC;AAAA,IACH,CAAC;AACD,QAAI,qBAAqB,IAAI,OAAO,sBAAsB,WAAW;AACnE,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,MAAM,EAAE,MAAM,GAAG,KAAK,IAAI,OAAO,EAAE,IAAI,CAAC;AAAA,IAClE,CAAC;AACD,QAAI,sBAAsB,IAAI,OAAO,uBAAuB,WAAW;AACrE,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,WAAW,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,EAAE,SAAS,GAAG,KAAK,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;AAAA,IACvH,CAAC;AACD,QAAI,uBAAuB,IAAI,OAAO,wBAAwB,WAAW;AACvE,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,WAAW,EAAE,IAAI,mBAAmB,GAAG,KAAK,IAAI,kBAAkB,EAAE,OAAO,CAAC;AAAA,IACtG,CAAC;AACD,QAAI,4BAA4B,IAAI,OAAO,6BAA6B,WAAW;AACjF,WAAK,MAAM,kBAAkB;AAAA,IAC/B,CAAC;AACD,QAAI,cAAc,IAAI,OAAO,eAAe,WAAW;AACrD,WAAK,MAAM,yBAAyB;AAAA,IACtC,CAAC;AACD,QAAI,OAAO,IAAI,OAAO,QAAQ,WAAW;AACvC,WAAK,OAAO;AAAA,QACV,aAAa,KAAK,IAAI,WAAW;AAAA,MACnC,CAAC;AAAA,IACH,CAAC;AACD,QAAI,WAAW,IAAI,OAAO,YAAY,WAAW;AAC/C,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,WAAW,EAAE,IAAI,IAAI,GAAG,KAAK,IAAI,UAAU,EAAE,IAAI,IAAI,CAAC;AAAA,IAChF,CAAC;AACD,QAAI,YAAY,IAAI,OAAO,aAAa,WAAW;AACjD,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,QAAQ,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,EAAE,KAAK,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,WAAW,EAAE,OAAO,CAAC;AAAA,IACnH,CAAC;AACD,QAAI,iBAAiB,IAAI,OAAO,kBAAkB,WAAW;AAC3D,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,KAAK,IAAI,cAAc,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,WAAW,EAAE,IAAI,mBAAmB,GAAG,KAAK,IAAI,QAAQ,EAAE,IAAI,IAAI,GAAG,KAAK,IAAI,UAAU,EAAE,IAAI,QAAQ,GAAG,KAAK,IAAI,SAAS,EAAE,IAAI,IAAI,GAAG,KAAK,IAAI,sBAAsB,EAAE,IAAI,oBAAoB,GAAG,KAAK,IAAI,gBAAgB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,IAAI,iBAAiB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,IAAI,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,SAAS,EAAE,SAAS,CAAC;AAAA,IAC7e,CAAC;AACD,QAAI,kBAAkB,IAAI,OAAO,mBAAmB,WAAW;AAC7D,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,gBAAgB,EAAE,IAAI,cAAc,GAAG,KAAK,IAAI,oBAAoB,EAAE,IAAI,mBAAmB,GAAG,KAAK,IAAI,gBAAgB,EAAE,OAAO,CAAC;AAAA,IAC7J,CAAC;AACD,IAAAU,aAAY;AACZ,WAAOA;AAAA,EACT;AAGA,WAASC,UAAS;AAChB,QAAIC,aAAa,QAAOC;AACxB,IAAAD,eAAc;AACd,QAAI,OAAOZ,OAAM;AACjB,IAAAa,WAAU,cAAcL,OAAM;AAC9B,QAAI,gBAAgB,KAAK,OAAO,iBAAiB,WAAW;AAC1D,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,gBAAgB,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,iBAAiB,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,aAAa,EAAE,KAAK,EAAE,CAAC;AAAA,IAClT,CAAC;AACD,IAAAK,WAAU,gBAAgB;AAC1B,QAAI,eAAe,KAAK,OAAO,gBAAgB,WAAW;AACxD,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAAA,IAClF,CAAC;AACD,IAAAA,WAAU,eAAe;AACzB,QAAI,sBAAsB,KAAK,OAAO,uBAAuB,WAAW;AACtE,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,WAAW,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,KAAK,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,GAAG,KAAK,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC;AAAA,IAC1O,CAAC;AACD,QAAI,YAAY,KAAK,OAAO,wBAAwB,WAAW;AAC7D,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,WAAW,EAAE,IAAI,mBAAmB,GAAG,KAAK,IAAI,kBAAkB,EAAE,OAAO,CAAC;AAAA,IACtG,CAAC;AACD,IAAAA,WAAU,YAAY;AACtB,QAAI,iBAAiB,KAAK,OAAO,kBAAkB,WAAW;AAC5D,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,WAAW,EAAE,IAAI,mBAAmB,GAAG,KAAK,IAAI,mBAAmB,EAAE,OAAO,CAAC;AAAA,IACrI,CAAC;AACD,IAAAA,WAAU,aAAa;AACvB,QAAI,0BAA0B,KAAK,OAAO,2BAA2B,WAAW;AAC9E,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE,MAAM,GAAG,KAAK,IAAI,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,MAAM,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,MAAM,EAAE,MAAM,GAAG,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,mBAAmB,EAAE,OAAO,CAAC;AAAA,IAC3W,CAAC;AACD,IAAAA,WAAU,sBAAsB;AAChC,QAAI,gBAAgB,KAAK,OAAO,iBAAiB,WAAW;AAC1D,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,UAAU,EAAE,KAAK,EAAE,CAAC;AAAA,IAClL,CAAC;AACD,IAAAA,WAAU,gBAAgB;AAC1B,IAAAA,WAAU,WAAW,KAAK,OAAO,YAAY,WAAW;AACtD,WAAK,KAAK,EAAE;AAAA,IACd,CAAC;AACD,QAAI,eAAe,KAAK,OAAO,gBAAgB,WAAW;AACxD,WAAK,OAAO;AAAA,QACV,YAAY,KAAK,MAAM;AAAA,MACzB,CAAC;AAAA,IACH,CAAC;AACD,QAAI,eAAe,KAAK,OAAO,gBAAgB,WAAW;AACxD,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,YAAY,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,YAAY,GAAG,KAAK,IAAI,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC;AAAA,IACtM,CAAC;AACD,IAAAA,WAAU,eAAe;AACzB,IAAAA,WAAU,YAAY,KAAK,OAAO,aAAa,WAAW;AACxD,WAAK,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;AAAA,IAC/D,CAAC;AACD,WAAOA;AAAA,EACT;AAiBA,WAASC,UAAS;AAChB,QAAIC,aAAa,QAAOC;AACxB,IAAAD,eAAc;AACd,QAAI,WAAW;AACf,QAAI,aAAa;AACjB,QAAI,YAAY;AAChB,QAAI,MAAM,OAAO;AACjB,QAAI,UAAU,OAAO;AACrB,QAAI7S,UAASQ,QAAO,EAAE;AACtB,IAAAsS,cAAa,SAAS,MAAM,UAAU;AACpC,UAAI,MAAM,KAAK,SAAS;AACxB,UAAI9C,SAAQ,IAAI,MAAM,QAAQ;AAC9B,UAAI;AACJ,UAAI,CAACA,QAAO;AACV,YAAIM,UAAS,IAAI,MAAM,SAAS;AAChC,oBAAYtQ,QAAO,KAAKsQ,QAAO,CAAC,EAAE,QAAQ,WAAW,EAAE,GAAG,QAAQ;AAAA,MACpE,OAAO;AACL,YAAI,QAAQ,QAAQN,OAAM,CAAC;AAC3B,YAAI,KAAKhQ,QAAO,KAAKgQ,OAAM,CAAC,GAAG,KAAK;AACpC,YAAI,aAAahQ,QAAO,KAAKgQ,OAAM,CAAC,EAAE,QAAQ,WAAW,EAAE,GAAG,QAAQ;AACtE,YAAI,YAAY,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,SAASA,OAAM,CAAC,GAAG,EAAE,CAAC,EAAE;AACtE,YAAI,MAAM,CAAC;AACX,YAAI,SAAS,QAAQ,iBAAiB,OAAO,WAAW,EAAE;AAC1D,YAAI,KAAK,OAAO,OAAO,UAAU,CAAC;AAClC,YAAI,KAAK,OAAO,OAAO,EAAE,CAAC;AAC1B,oBAAYhQ,QAAO,OAAO,GAAG;AAAA,MAC/B;AACA,UAAI,MAAM,IAAI,MAAM,UAAU,EAAE,CAAC;AACjC,aAAO;AAAA,QACL;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AACA,WAAO8S;AAAA,EACT;AAGA,WAASC,UAAS;AAChB,QAAIC,aAAa,QAAOC;AACxB,IAAAD,eAAc;AACd,QAAI,OAAOP,QAAO;AAClB,QAAI,QAAQ;AACZ,QAAI,UAAUG,QAAO;AACrB,QAAI,UAAU,OAAO;AACrB,QAAI,SAAS,OAAO;AACpB,QAAI5S,UAASQ,QAAO,EAAE;AACtB,aAAS,QAAQ,MAAM,UAAU;AAC/B,UAAI,OAAO,KAAK,UAAU,QAAQ,IAAI,UAAU;AAChD,UAAI,QAAQ,SAAS,KAAK,UAAU,QAAQ,IAAI,UAAU,MAAM,SAAS,GAAG,EAAE;AAC9E,UAAI,OAAO,MAAM,KAAK,UAAU,QAAQ,OAAO,KAAK,KAAK,GAAG,CAAC;AAC7D,UAAI,KAAK,KAAK,UAAU,QAAQ,OAAO;AACvC,UAAI,aAAa,KAAK;AACtB,UAAI,SAAS,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI;AAChD,UAAI,MAAM,OAAO,WAAW,UAAU,MAAM,OAAO,QAAQ,MAAM;AACjE,UAAI,SAAS,QAAQ,iBAAiB,MAAM,KAAK,EAAE;AACnD,UAAI,MAAM,CAAC;AACX,UAAI,KAAK,OAAO,OAAO,UAAU,CAAC;AAClC,UAAI,KAAK,OAAO,OAAO,EAAE,CAAC;AAC1B,aAAOR,QAAO,OAAO,GAAG;AAAA,IAC1B;AACA,aAAS,UAAU,SAAS;AAC1B,UAAI;AACJ,UAAI,OAAO,YAAY,YAAY,CAACA,QAAO,SAAS,OAAO,GAAG;AAC5D,mBAAW,QAAQ;AACnB,kBAAU,QAAQ;AAAA,MACpB;AACA,UAAI,OAAO,YAAY,UAAU;AAC/B,kBAAUA,QAAO,KAAK,OAAO;AAAA,MAC/B;AACA,UAAI,WAAW,QAAQ,SAAS,QAAQ;AACxC,UAAI,OAAO,SAAS;AACpB,UAAI,OAAO,SAAS;AACpB,UAAI,SAAS;AACb,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,kBAAQ,KAAK,YAAY,OAAO,MAAM,KAAK,EAAE,eAAe;AAAA;AAAA,QAE9D,KAAK;AACH,cAAI,CAAC,OAAO;AACV,oBAAQ,KAAK,UAAU,OAAO,MAAM,KAAK;AAAA,UAC3C;AACA,oBAAU,MAAM,UAAU,UAAU,KAAK,GAAG;AAC5C,kBAAQ,SAAS;AAAA,YACf,KAAK;AACH,qBAAO,KAAK,aAAa,OAAO,MAAM,iBAAiB,MAAM,KAAK;AAAA,YACpE,KAAK;AACH,oBAAM,oBAAoB,MAAM;AAChC,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF,KAAK;AACH,oBAAM,UAAU,OAAO,UAAU,KAAK,SAAS,OAAO,MAAM,iBAAiB,MAAM,KAAK;AACxF,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,MAAM,MAAM,UAAU;AAAA,cACxB;AAAA,YACF;AACE,oBAAM,IAAI,MAAM,oBAAoB,OAAO;AAAA,UAC/C;AAAA;AAAA,QAEF,KAAK;AACH,iBAAO,KAAK,oBAAoB,OAAO,MAAM,KAAK;AAClD,iBAAO,QAAQ,MAAM,QAAQ;AAAA;AAAA,QAE/B,KAAK;AACH,kBAAQ,KAAK,WAAW,OAAO,MAAM,KAAK;AAC1C,oBAAU,MAAM,UAAU,UAAU,KAAK,GAAG;AAC5C,kBAAQ,SAAS;AAAA,YACf,KAAK;AACH,qBAAO,KAAK,cAAc,OAAO,MAAM,mBAAmB,KAAK;AAAA,YACjE,KAAK;AACH,qBAAO;AAAA,gBACL,OAAO,MAAM,UAAU;AAAA,gBACvB,YAAY,KAAK,aAAa,OAAO,MAAM,mBAAmB,KAAK,EAAE;AAAA,cACvE;AAAA,YACF,KAAK;AACH,oBAAM,UAAU,OAAO,WAAW,KAAK,SAAS,OAAO,MAAM,mBAAmB,KAAK;AACrF,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,QAAQ,MAAM,UAAU;AAAA,cAC1B;AAAA,YACF;AACE,oBAAM,IAAI,MAAM,oBAAoB,OAAO;AAAA,UAC/C;AAAA;AAAA,QAEF,KAAK;AACH,iBAAO,KAAK,aAAa,OAAO,MAAM,KAAK;AAAA,QAC7C,KAAK;AACH,iBAAO,KAAK,cAAc,OAAO,MAAM,KAAK;AAAA,QAC9C,KAAK;AACH,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,QAAQ,KAAK,cAAc,OAAO,MAAM,KAAK;AAAA,UAC/C;AAAA,QACF,KAAK;AACH,iBAAO,KAAK,aAAa,OAAO,MAAM,KAAK;AAC3C,iBAAO;AAAA,YACL,OAAO,KAAK,WAAW;AAAA,YACvB,YAAY,KAAK;AAAA,UACnB;AAAA,QACF;AACE,gBAAM,IAAI,MAAM,sBAAsB,IAAI;AAAA,MAC9C;AAAA,IACF;AACA,cAAU,YAAY,KAAK;AAC3B,IAAAiT,cAAa;AACb,WAAOA;AAAA,EACT;AAWA,WAASC,UAAS;AAChB,QAAIC,aAAa,QAAOC;AACxB,IAAAD,eAAc;AACd,QAAInT,UAASQ,QAAO,EAAE;AACtB,QAAI,cAAc,OAAO;AACzB,QAAI,MAAM,MAAM;AAChB,QAAI,KAAK,MAAM,EAAE;AACjB,QAAI,KAAK,OAAO;AAChB,QAAI,YAAYuS,QAAO;AACvB,QAAI,SAAS;AACb,QAAI,oBAAoB;AACxB,aAASrD,MAAK,MAAM,KAAK,UAAU,UAAU,KAAK;AAChD,UAAI,OAAO,UAAU,GAAG;AACxB,UAAI,KAAK,OAAO;AACd,YAAI,aAAa,WAAW,aAAa,aAAa;AACpD,gBAAM,IAAI,MAAM,wBAAwB;AAAA,QAC1C;AACA,eAAO,OAAO,MAAM,IAAI;AAAA,MAC1B,WAAW,KAAK,SAAS,OAAO;AAC9B,YAAI,aAAa,OAAO;AACtB,gBAAM,IAAI,MAAM,wBAAwB;AAAA,QAC1C;AACA,eAAO,QAAQ,MAAM,MAAM,QAAQ;AAAA,MACrC;AACA,UAAI,aAAa,SAAS,aAAa,aAAa;AAClD,cAAM,IAAI,MAAM,wBAAwB;AAAA,MAC1C;AACA,UAAI,IAAI,YAAY,UAAU,IAAI,YAAY,mBAAmB;AAC/D,cAAM,IAAI,MAAM,qCAAqC;AAAA,MACvD;AACA,aAAO1P,QAAO,OAAO,CAAC,KAAK,IAAI,CAAC;AAChC,UAAI,MAAM,KAAK,QAAQ,WAAW;AAClC,UAAI,MAAM,CAAC,GAAG,CAAC;AACf,aAAO,KAAK,SAAS,IAAI,SAAS,IAAI,KAAK;AACzC,YAAI,KAAK,GAAG;AAAA,MACd;AACA,UAAI,KAAK,CAAC;AACV,UAAI,KAAK;AACT,aAAO,EAAE,KAAK,KAAK,QAAQ;AACzB,YAAI,KAAK,KAAK,EAAE,CAAC;AAAA,MACnB;AACA,UAAI,MAAM,IAAI,KAAK,IAAI;AACvB,aAAO;AAAA,IACT;AACA,aAAS,OAAO,MAAM,MAAM;AAC1B,UAAI,UAAU,OAAO,KAAK,MAAM,KAAK,GAAG,CAAC;AACzC,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI,MAAM,mBAAmB,KAAK,MAAM,KAAK,GAAG,CAAC;AAAA,MACzD;AACA,UAAI,QAAQ,IAAI,GAAG,OAAO;AAC1B,UAAI,MAAM,MAAM,eAAe,KAAK,UAAU;AAC9C,UAAI,MAAM,IAAI,KAAK,IAAI;AACvB,aAAOA,QAAO,KAAK,IAAI,MAAM,CAAC;AAAA,IAChC;AACA,aAAS,QAAQ,MAAM,MAAM,MAAM;AACjC,UAAI,KAAK,KAAK,OAAO;AACrB,UAAI,KAAK,KAAK,OAAO;AACrB,UAAI,KAAK,KAAK,OAAO;AACrB,UAAI,KAAK,KAAK,OAAO;AACrB,UAAI,KAAK,IAAI,GAAG,CAAC;AACjB,UAAI;AACJ,UAAI0L,MAAK,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE;AAClC,UAAI,KAAK;AACT,UAAI,KAAK,OAAO,IAAI,IAAI,MAAM,IAAI;AAClC,aAAO,OAAO,OAAO;AACnB,aAAK,QAAQ,IAAI,IAAI,IAAI;AACzB,aAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACzB,aAAK,GAAG,KAAK,EAAE,EAAE,KAAKA,IAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE;AAChD,YAAI,GAAG,KAAK,CAAC,MAAM,GAAG;AACpB,eAAK;AACL,eAAK,IAAI,GAAG,CAAC;AAAA,QACf;AAAA,MACF;AACA,aAAO,MAAM,IAAI,EAAE;AAAA,IACrB;AACA,aAAS,MAAM,IAAI,IAAI;AACrB,WAAK,GAAG,QAAQ;AAChB,WAAK,GAAG,QAAQ;AAChB,UAAI,GAAG,CAAC,IAAI,KAAK;AACf,aAAK,CAAC,CAAC,EAAE,OAAO,EAAE;AAAA,MACpB;AACA,UAAI,GAAG,CAAC,IAAI,KAAK;AACf,aAAK,CAAC,CAAC,EAAE,OAAO,EAAE;AAAA,MACpB;AACA,UAAI,QAAQ,GAAG,SAAS,GAAG,SAAS;AACpC,UAAI,MAAM,CAAC,IAAI,OAAO,GAAG,GAAG,MAAM;AAClC,YAAM,IAAI,OAAO,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,EAAE;AACvC,aAAO1L,QAAO,KAAK,GAAG;AAAA,IACxB;AACA,aAAS,OAAO,IAAI,IAAI,MAAM,MAAM;AAClC,WAAKA,QAAO,KAAK,GAAG,QAAQ,CAAC;AAC7B,UAAI,GAAG,SAAS,GAAG,WAAW,GAAG;AAC/B,YAAI,QAAQA,QAAO,MAAM,GAAG,WAAW,IAAI,GAAG,MAAM;AACpD,aAAKA,QAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAAA,MAChC;AACA,UAAI,OAAO,KAAK;AAChB,UAAI,QAAQ,YAAY,MAAM,EAAE;AAChC,UAAI,KAAKA,QAAO,MAAM,IAAI;AAC1B,SAAG,KAAK,CAAC;AACT,UAAI,KAAKA,QAAO,MAAM,IAAI;AAC1B,WAAK,YAAY,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAOA,QAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,KAAK,EAAE,OAAO;AAC/F,WAAK,YAAY,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO;AAC7C,WAAK,YAAY,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAOA,QAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,KAAK,EAAE,OAAO;AAC/F,WAAK,YAAY,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO;AAC7C,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AACA,aAAS,SAAS,OAAO,IAAI;AAC3B,UAAI,OAAO,IAAI,GAAG,KAAK;AACvB,UAAI,SAAS,MAAM,UAAU,KAAK,GAAG,UAAU;AAC/C,UAAI,QAAQ,GAAG;AACb,aAAK,MAAM,KAAK;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AACA,aAAS,YAAY,MAAM,IAAI;AAC7B,aAAO,SAAS,MAAM,EAAE;AACxB,aAAO,KAAK,IAAI,EAAE;AAClB,UAAI,MAAMA,QAAO,KAAK,KAAK,QAAQ,CAAC;AACpC,UAAI,IAAI,SAAS,GAAG,WAAW,GAAG;AAChC,YAAI,QAAQA,QAAO,MAAM,GAAG,WAAW,IAAI,IAAI,MAAM;AACrD,cAAMA,QAAO,OAAO,CAAC,OAAO,GAAG,CAAC;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AACA,aAAS,QAAQ,IAAI,IAAI,MAAM;AAC7B,UAAI;AACJ,UAAI;AACJ,SAAG;AACD,aAAKA,QAAO,MAAM,CAAC;AACnB,eAAO,GAAG,SAAS,IAAI,GAAG,UAAU,GAAG;AACrC,aAAG,IAAI,YAAY,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO;AACnD,eAAKA,QAAO,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;AAAA,QAC/B;AACA,aAAK,SAAS,IAAI,EAAE;AACpB,WAAG,IAAI,YAAY,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAOA,QAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO;AAC5E,WAAG,IAAI,YAAY,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO;AAAA,MACrD,SAAS,GAAG,IAAI,EAAE,MAAM;AACxB,aAAO;AAAA,IACT;AACA,aAAS,MAAM,IAAI,IAAI,IAAI,IAAI;AAC7B,aAAO,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;AAAA,IAC1D;AACA,IAAAoT,cAAa1D;AACb,IAAA0D,YAAW,SAAS;AACpB,IAAAA,YAAW,UAAU;AACrB,WAAOA;AAAA,EACT;AAGA,WAASC,UAAS;AAChB,QAAIC,aAAa,QAAOC;AACxB,IAAAD,eAAc;AACd,QAAItT,UAASQ,QAAO,EAAE;AACtB,QAAI,KAAK,OAAO;AAChB,QAAI,KAAK,MAAM,EAAE;AACjB,QAAI,YAAYuS,QAAO;AACvB,QAAI,SAAS;AACb,aAAS,OAAO,KAAK,MAAM,KAAK,UAAU,KAAK;AAC7C,UAAI,MAAM,UAAU,GAAG;AACvB,UAAI,IAAI,SAAS,MAAM;AACrB,YAAI,aAAa,WAAW,aAAa,aAAa;AACpD,gBAAM,IAAI,MAAM,uBAAuB;AAAA,QACzC;AACA,eAAO,SAAS,KAAK,MAAM,GAAG;AAAA,MAChC,WAAW,IAAI,SAAS,OAAO;AAC7B,YAAI,aAAa,OAAO;AACtB,gBAAM,IAAI,MAAM,uBAAuB;AAAA,QACzC;AACA,eAAO,UAAU,KAAK,MAAM,GAAG;AAAA,MACjC;AACA,UAAI,aAAa,SAAS,aAAa,aAAa;AAClD,cAAM,IAAI,MAAM,uBAAuB;AAAA,MACzC;AACA,aAAO/S,QAAO,OAAO,CAAC,KAAK,IAAI,CAAC;AAChC,UAAI,MAAM,IAAI,QAAQ,WAAW;AACjC,UAAI,MAAM,CAAC,CAAC;AACZ,UAAI,SAAS;AACb,aAAO,KAAK,SAAS,IAAI,SAAS,IAAI,KAAK;AACzC,YAAI,KAAK,GAAG;AACZ,kBAAU;AAAA,MACZ;AACA,UAAI,KAAK,CAAC;AACV,UAAI,KAAK;AACT,aAAO,EAAE,KAAK,KAAK,QAAQ;AACzB,YAAI,KAAK,KAAK,EAAE,CAAC;AAAA,MACnB;AACA,YAAMA,QAAO,KAAK,GAAG;AACrB,UAAI,MAAM,GAAG,KAAK,IAAI,OAAO;AAC7B,YAAM,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG;AAC3B,YAAM,IAAI,OAAO,IAAI,GAAG,IAAI,cAAc,CAAC;AAC3C,YAAMA,QAAO,KAAK,IAAI,QAAQ,EAAE,QAAQ,CAAC;AACzC,UAAI,MAAM,SAAS,IAAI,IAAI;AAC3B,YAAM,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM;AACrC,UAAI,IAAI,WAAW,IAAI,QAAQ;AAC7B,cAAM;AAAA,MACR;AACA,WAAK;AACL,aAAO,EAAE,KAAK,KAAK;AACjB,eAAO,IAAI,EAAE,IAAI,IAAI,EAAE;AAAA,MACzB;AACA,aAAO,QAAQ;AAAA,IACjB;AACA,aAAS,SAAS,KAAK,MAAM,KAAK;AAChC,UAAI,UAAU,OAAO,IAAI,KAAK,UAAU,MAAM,KAAK,GAAG,CAAC;AACvD,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI,MAAM,mBAAmB,IAAI,KAAK,UAAU,MAAM,KAAK,GAAG,CAAC;AAAA,MACvE;AACA,UAAI,QAAQ,IAAI,GAAG,OAAO;AAC1B,UAAI,SAAS,IAAI,KAAK,kBAAkB;AACxC,aAAO,MAAM,OAAO,MAAM,KAAK,MAAM;AAAA,IACvC;AACA,aAAS,UAAU,KAAK,MAAM,KAAK;AACjC,UAAI,KAAK,IAAI,KAAK;AAClB,UAAI,KAAK,IAAI,KAAK;AAClB,UAAI,KAAK,IAAI,KAAK;AAClB,UAAI,KAAK,IAAI,KAAK;AAClB,UAAI,WAAW,UAAU,UAAU,OAAO,KAAK,KAAK;AACpD,UAAI,KAAK,SAAS;AAClB,UAAI,KAAK,SAAS;AAClB,iBAAW,IAAI,EAAE;AACjB,iBAAW,IAAI,EAAE;AACjB,UAAI,QAAQ,GAAG,KAAK,EAAE;AACtB,UAAI,KAAK,GAAG,KAAK,EAAE;AACnB,UAAI,KAAK,GAAG,MAAM,KAAK,EAAE,OAAO,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,MAAM,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AAChJ,aAAO,GAAG,IAAI,EAAE,MAAM;AAAA,IACxB;AACA,aAAS,WAAW,IAAI,IAAI;AAC1B,UAAI,GAAG,KAAK,CAAC,KAAK,GAAG;AACnB,cAAM,IAAI,MAAM,aAAa;AAAA,MAC/B;AACA,UAAI,GAAG,IAAI,EAAE,KAAK,GAAG;AACnB,cAAM,IAAI,MAAM,aAAa;AAAA,MAC/B;AAAA,IACF;AACA,IAAAuT,cAAa;AACb,WAAOA;AAAA,EACT;AAGA,WAASC,UAAS;AAChB,QAAIC,aAAa,QAAOC;AACxB,IAAAD,eAAc;AACd,QAAIzT,UAASQ,QAAO,EAAE;AACtB,QAAI,cAAc,OAAO;AACzB,QAAI,UAAU,OAAO;AACrB,QAAIgC,YAAWH,MAAK;AACpB,QAAIqN,QAAOwD,QAAO;AAClB,QAAI,SAASG,QAAO;AACpB,QAAI,aAAa;AACjB,WAAO,KAAK,UAAU,EAAE,QAAQ,SAAS,KAAK;AAC5C,iBAAW,GAAG,EAAE,KAAKrT,QAAO,KAAK,WAAW,GAAG,EAAE,IAAI,KAAK;AAC1D,iBAAW,IAAI,YAAY,CAAC,IAAI,WAAW,GAAG;AAAA,IAChD,CAAC;AACD,aAAS,MAAM,WAAW;AACxB,cAAQ,SAAS,KAAK,IAAI;AAC1B,UAAI,OAAO,WAAW,SAAS;AAC/B,UAAI,CAAC,MAAM;AACT,cAAM,IAAI,MAAM,wBAAwB;AAAA,MAC1C;AACA,WAAK,YAAY,KAAK;AACtB,WAAK,QAAQ,YAAY,KAAK,IAAI;AAClC,WAAK,OAAO,KAAK;AACjB,WAAK,YAAY,KAAK;AAAA,IACxB;AACA,IAAAwC,UAAS,OAAO,QAAQ,QAAQ;AAChC,UAAM,UAAU,SAAS,SAAS,OAAO,MAAMoF,KAAI,MAAM;AACvD,WAAK,MAAM,OAAO,IAAI;AACtB,WAAK;AAAA,IACP;AACA,UAAM,UAAU,SAAS,SAAS,OAAO,MAAM,KAAK;AAClD,WAAK,MAAM,OAAO,OAAO,SAAS,WAAW5H,QAAO,KAAK,MAAM,GAAG,IAAI,IAAI;AAC1E,aAAO;AAAA,IACT;AACA,UAAM,UAAU,OAAO,SAAS,WAAW,KAAK,KAAK;AACnD,WAAK,IAAI;AACT,UAAI,OAAO,KAAK,MAAM,OAAO;AAC7B,UAAI,MAAM0P,MAAK,MAAM,KAAK,KAAK,WAAW,KAAK,WAAW,KAAK,IAAI;AACnE,aAAO,MAAM,IAAI,SAAS,GAAG,IAAI;AAAA,IACnC;AACA,aAAS,QAAQ,WAAW;AAC1B,cAAQ,SAAS,KAAK,IAAI;AAC1B,UAAI,OAAO,WAAW,SAAS;AAC/B,UAAI,CAAC,MAAM;AACT,cAAM,IAAI,MAAM,wBAAwB;AAAA,MAC1C;AACA,WAAK,QAAQ,YAAY,KAAK,IAAI;AAClC,WAAK,OAAO,KAAK;AACjB,WAAK,YAAY,KAAK;AAAA,IACxB;AACA,IAAAlN,UAAS,SAAS,QAAQ,QAAQ;AAClC,YAAQ,UAAU,SAAS,SAAS,OAAO,MAAMoF,KAAI,MAAM;AACzD,WAAK,MAAM,OAAO,IAAI;AACtB,WAAK;AAAA,IACP;AACA,YAAQ,UAAU,SAAS,SAAS,OAAO,MAAM,KAAK;AACpD,WAAK,MAAM,OAAO,OAAO,SAAS,WAAW5H,QAAO,KAAK,MAAM,GAAG,IAAI,IAAI;AAC1E,aAAO;AAAA,IACT;AACA,YAAQ,UAAU,SAAS,SAAS,aAAa,KAAK,KAAK,KAAK;AAC9D,UAAI,YAAY,OAAO,QAAQ,WAAWA,QAAO,KAAK,KAAK,GAAG,IAAI;AAClE,WAAK,IAAI;AACT,UAAI,OAAO,KAAK,MAAM,OAAO;AAC7B,aAAO,OAAO,WAAW,MAAM,KAAK,KAAK,WAAW,KAAK,IAAI;AAAA,IAC/D;AACA,aAAS,YAAY,WAAW;AAC9B,aAAO,IAAI,MAAM,SAAS;AAAA,IAC5B;AACA,aAAS,cAAc,WAAW;AAChC,aAAO,IAAI,QAAQ,SAAS;AAAA,IAC9B;AACA,IAAA0T,cAAa;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB;AACA,WAAOA;AAAA,EACT;AAOA,WAASC,UAAS;AAChB,QAAIC,aAAa,QAAO,SAAS;AACjC,IAAAA,eAAc;AACd,KAAC,SAAS7G,UAAS,WAAW;AAC5B,eAASjB,SAAQ,KAAK,KAAK;AACzB,YAAI,CAAC,IAAK,OAAM,IAAI,MAAM,OAAO,kBAAkB;AAAA,MACrD;AACA,eAAStJ,UAAS,MAAM,WAAW;AACjC,aAAK,SAAS;AACd,YAAI,WAAW,WAAW;AAAA,QAC1B;AACA,iBAAS,YAAY,UAAU;AAC/B,aAAK,YAAY,IAAI,SAAS;AAC9B,aAAK,UAAU,cAAc;AAAA,MAC/B;AACA,eAAS,GAAG,QAAQ,MAAM,QAAQ;AAChC,YAAI,GAAG,KAAK,MAAM,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,SAAC,QAAQ,WAAW,WAAW;AAC/B,SAAC,QAAQ,WAAW,QAAQ;AAC5B,SAAC,QAAQ,WAAW,SAAS;AAC7B,SAAC,QAAQ,WAAW,MAAM;AAC1B,YAAI,WAAW,MAAM;AACnB,cAAI,SAAS,QAAQ,SAAS,MAAM;AAClC,qBAAS;AACT,mBAAO;AAAA,UACT;AACA,eAAK,MAAM,UAAU,GAAG,QAAQ,IAAI,UAAU,IAAI;AAAA,QACpD;AAAA,MACF;AACA,UAAI,OAAOuK,aAAY,UAAU;AAC/B,QAAAA,SAAQ,UAAU;AAAA,MACpB,OAAO;AACL,kBAAU,KAAK;AAAA,MACjB;AACA,SAAG,KAAK;AACR,SAAG,WAAW;AACd,UAAI/M;AACJ,UAAI;AACF,YAAI,OAAO,WAAW,eAAe,OAAO,OAAO,WAAW,aAAa;AACzE,UAAAA,UAAS,OAAO;AAAA,QAClB,OAAO;AACL,UAAAA,UAASH,KAAI,EAAE;AAAA,QACjB;AAAA,MACF,SAAS,IAAI;AAAA,MACb;AACA,SAAG,OAAO,SAAS,KAAK,KAAK;AAC3B,YAAI,eAAe,IAAI;AACrB,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,IAAI,YAAY,aAAa,GAAG,YAAY,MAAM,QAAQ,IAAI,KAAK;AAAA,MACvH;AACA,SAAG,MAAM,SAAS,IAAI,MAAM,OAAO;AACjC,YAAI,KAAK,IAAI,KAAK,IAAI,EAAG,QAAO;AAChC,eAAO;AAAA,MACT;AACA,SAAG,MAAM,SAAS,IAAI,MAAM,OAAO;AACjC,YAAI,KAAK,IAAI,KAAK,IAAI,EAAG,QAAO;AAChC,eAAO;AAAA,MACT;AACA,SAAG,UAAU,QAAQ,SAAS,KAAK,QAAQ,MAAM,QAAQ;AACvD,YAAI,OAAO,WAAW,UAAU;AAC9B,iBAAO,KAAK,YAAY,QAAQ,MAAM,MAAM;AAAA,QAC9C;AACA,YAAI,OAAO,WAAW,UAAU;AAC9B,iBAAO,KAAK,WAAW,QAAQ,MAAM,MAAM;AAAA,QAC7C;AACA,YAAI,SAAS,OAAO;AAClB,iBAAO;AAAA,QACT;AACA,QAAAiM,SAAQ,UAAU,OAAO,MAAM,QAAQ,KAAK,QAAQ,EAAE;AACtD,iBAAS,OAAO,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAC7C,YAAItM,SAAQ;AACZ,YAAI,OAAO,CAAC,MAAM,KAAK;AACrB,UAAAA;AACA,WAAC,QAAQ,WAAW,WAAW;AAAA,QACjC;AACA,YAAIA,SAAQ,OAAO,QAAQ;AACzB,cAAI,SAAS,IAAI;AACf,iBAAK,UAAU,QAAQA,QAAO,MAAM;AAAA,UACtC,OAAO;AACL,iBAAK,WAAW,QAAQ,MAAMA,MAAK;AACnC,gBAAI,WAAW,MAAM;AACnB,mBAAK,WAAW,KAAK,QAAQ,GAAG,MAAM,MAAM;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,SAAG,UAAU,cAAc,SAAS,YAAY,QAAQ,MAAM,QAAQ;AACpE,YAAI,SAAS,GAAG;AACd,WAAC,QAAQ,WAAW,WAAW;AAC/B,mBAAS,CAAC;AAAA,QACZ;AACA,YAAI,SAAS,UAAU;AACrB,WAAC,QAAQ,WAAW,QAAQ,CAAC,SAAS,QAAQ;AAC9C,WAAC,QAAQ,WAAW,SAAS;AAAA,QAC/B,WAAW,SAAS,kBAAkB;AACpC,WAAC,QAAQ,WAAW,QAAQ,CAAC,SAAS,UAAU,SAAS,WAAW,QAAQ;AAC5E,WAAC,QAAQ,WAAW,SAAS;AAAA,QAC/B,OAAO;AACL,UAAAsM,SAAQ,SAAS,gBAAgB;AACjC,WAAC,QAAQ,WAAW,QAAQ,CAAC,SAAS,UAAU,SAAS,WAAW,UAAU,CAAC;AAC/E,WAAC,QAAQ,WAAW,SAAS;AAAA,QAC/B;AACA,YAAI,WAAW,KAAM;AACrB,aAAK,WAAW,KAAK,QAAQ,GAAG,MAAM,MAAM;AAAA,MAC9C;AACA,SAAG,UAAU,aAAa,SAAS,WAAW,QAAQ,MAAM,QAAQ;AAClE,QAAAA,SAAQ,OAAO,OAAO,WAAW,QAAQ;AACzC,YAAI,OAAO,UAAU,GAAG;AACtB,WAAC,QAAQ,WAAW,QAAQ,CAAC,CAAC;AAC9B,WAAC,QAAQ,WAAW,SAAS;AAC7B,iBAAO,QAAQ;AAAA,QACjB;AACA,SAAC,QAAQ,WAAW,SAAS,KAAK,KAAK,OAAO,SAAS,CAAC;AACxD,SAAC,QAAQ,WAAW,QAAQ,IAAI,OAAO,QAAQ,WAAW,MAAM;AAChE,iBAAS,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AACtD,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI;AAAA,QAClC;AACA,YAAI,IAAI;AACR,YAAID,QAAO;AACX,YAAI,WAAW,MAAM;AACnB,eAAK,KAAK,OAAO,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG;AACrD,iBAAK,OAAO,EAAE,IAAI,OAAO,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK;AAC1D,aAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,MAAMA,QAAO;AAC9C,aAAC,QAAQ,WAAW,MAAM,KAAK,CAAC,IAAI,OAAO,KAAKA,QAAO;AACvD,YAAAA,SAAQ;AACR,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAW,WAAW,MAAM;AAC1B,eAAK,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,QAAQ,MAAM,GAAG;AAChD,iBAAK,OAAO,EAAE,IAAI,OAAO,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK;AAC1D,aAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,MAAMA,QAAO;AAC9C,aAAC,QAAQ,WAAW,MAAM,KAAK,CAAC,IAAI,OAAO,KAAKA,QAAO;AACvD,YAAAA,SAAQ;AACR,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,eAAS,cAAc,QAAQnB,QAAO;AACpC,YAAI,KAAK,OAAO,WAAWA,MAAK;AAChC,YAAI,MAAM,MAAM,MAAM,IAAI;AACxB,iBAAO,KAAK;AAAA,QACd,WAAW,MAAM,MAAM,MAAM,KAAK;AAChC,iBAAO,KAAK;AAAA,QACd,OAAO;AACL,iBAAO,KAAK,KAAK;AAAA,QACnB;AAAA,MACF;AACA,eAAS,aAAa,QAAQ,YAAYA,QAAO;AAC/C,YAAI,KAAK,cAAc,QAAQA,MAAK;AACpC,YAAIA,SAAQ,KAAK,YAAY;AAC3B,gBAAM,cAAc,QAAQA,SAAQ,CAAC,KAAK;AAAA,QAC5C;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,YAAY,SAAS,UAAU,QAAQlL,QAAO,QAAQ;AACjE,SAAC,QAAQ,WAAW,SAAS,KAAK,MAAM,OAAO,SAASA,UAAS,CAAC;AAClE,SAAC,QAAQ,WAAW,QAAQ,IAAI,OAAO,QAAQ,WAAW,MAAM;AAChE,iBAAS,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AACtD,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI;AAAA,QAClC;AACA,YAAIqM,QAAO;AACX,YAAI,KAAK;AACT,YAAI;AACJ,YAAI,WAAW,MAAM;AACnB,eAAK,KAAK,OAAO,SAAS,GAAG,MAAMrM,QAAO,MAAM,GAAG;AACjD,iBAAK,aAAa,QAAQA,QAAO,EAAE,KAAKqM;AACxC,aAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,KAAK;AACtC,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR,oBAAM;AACN,eAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,OAAO;AAAA,YAC1C,OAAO;AACL,cAAAA,SAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF,OAAO;AACL,cAAI,cAAc,OAAO,SAASrM;AAClC,eAAK,KAAK,cAAc,MAAM,IAAIA,SAAQ,IAAIA,QAAO,KAAK,OAAO,QAAQ,MAAM,GAAG;AAChF,iBAAK,aAAa,QAAQA,QAAO,EAAE,KAAKqM;AACxC,aAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,KAAK;AACtC,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR,oBAAM;AACN,eAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,OAAO;AAAA,YAC1C,OAAO;AACL,cAAAA,SAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AACA,aAAK,MAAM;AAAA,MACb;AACA,eAAS,UAAU,KAAKrM,QAAO,KAAK,KAAK;AACvC,YAAI,KAAK;AACT,YAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,GAAG;AAClC,iBAAS,KAAKA,QAAO,KAAK,KAAK,MAAM;AACnC,cAAI,KAAK,IAAI,WAAW,EAAE,IAAI;AAC9B,gBAAM;AACN,cAAI,MAAM,IAAI;AACZ,kBAAM,KAAK,KAAK;AAAA,UAClB,WAAW,MAAM,IAAI;AACnB,kBAAM,KAAK,KAAK;AAAA,UAClB,OAAO;AACL,kBAAM;AAAA,UACR;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,aAAa,SAAS,WAAW,QAAQ,MAAMA,QAAO;AACjE,SAAC,QAAQ,WAAW,QAAQ,CAAC,CAAC;AAC9B,SAAC,QAAQ,WAAW,SAAS;AAC7B,iBAAS,UAAU,GAAG,UAAU,GAAG,WAAW,UAAU,WAAW,MAAM;AACvE;AAAA,QACF;AACA;AACA,kBAAU,UAAU,OAAO;AAC3B,YAAI,QAAQ,OAAO,SAASA;AAC5B,YAAIwN,OAAM,QAAQ;AAClB,YAAI,MAAM,KAAK,IAAI,OAAO,QAAQA,IAAG,IAAIxN;AACzC,YAAI,OAAO;AACX,iBAAS,KAAKA,QAAO,KAAK,KAAK,MAAM,SAAS;AAC5C,iBAAO,UAAU,QAAQ,IAAI,KAAK,SAAS,IAAI;AAC/C,eAAK,MAAM,OAAO;AAClB,eAAK,QAAQ,WAAW,MAAM,CAAC,IAAI,OAAO,UAAU;AAClD,aAAC,QAAQ,WAAW,MAAM,CAAC,KAAK;AAAA,UAClC,OAAO;AACL,iBAAK,OAAO,IAAI;AAAA,UAClB;AAAA,QACF;AACA,YAAIwN,SAAQ,GAAG;AACb,cAAI,MAAM;AACV,iBAAO,UAAU,QAAQ,IAAI,OAAO,QAAQ,IAAI;AAChD,eAAK,KAAK,GAAG,KAAKA,MAAK,MAAM;AAC3B,mBAAO;AAAA,UACT;AACA,eAAK,MAAM,GAAG;AACd,eAAK,QAAQ,WAAW,MAAM,CAAC,IAAI,OAAO,UAAU;AAClD,aAAC,QAAQ,WAAW,MAAM,CAAC,KAAK;AAAA,UAClC,OAAO;AACL,iBAAK,OAAO,IAAI;AAAA,UAClB;AAAA,QACF;AACA,aAAK,MAAM;AAAA,MACb;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,MAAM;AACtC,aAAK,QAAQ,IAAI,OAAO,QAAQ,WAAW,MAAM;AACjD,iBAAS,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AACtD,eAAK,MAAM,EAAE,KAAK,QAAQ,WAAW,MAAM,EAAE;AAAA,QAC/C;AACA,aAAK,UAAU,QAAQ,WAAW;AAClC,aAAK,YAAY,QAAQ,WAAW;AACpC,aAAK,OAAO,QAAQ,WAAW;AAAA,MACjC;AACA,SAAG,UAAU,QAAQ,SAASC,SAAQ;AACpC,YAAI,KAAK,IAAI,GAAG,IAAI;AACpB,aAAK,KAAK,EAAE;AACZ,eAAO;AAAA,MACT;AACA,SAAG,UAAU,UAAU,SAAS,QAAQ,MAAM;AAC5C,gBAAQ,QAAQ,WAAW,SAAS,MAAM;AACxC,WAAC,QAAQ,WAAW,OAAO,QAAQ,WAAW,QAAQ,IAAI;AAAA,QAC5D;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,QAAQ,SAAS,QAAQ;AACpC,gBAAQ,QAAQ,WAAW,SAAS,MAAM,QAAQ,WAAW,OAAO,QAAQ,WAAW,SAAS,CAAC,MAAM,GAAG;AACxG,WAAC,QAAQ,WAAW;AAAA,QACtB;AACA,eAAO,KAAK,UAAU;AAAA,MACxB;AACA,SAAG,UAAU,YAAY,SAAS,YAAY;AAC5C,aAAK,QAAQ,WAAW,WAAW,MAAM,QAAQ,WAAW,MAAM,CAAC,MAAM,GAAG;AAC1E,WAAC,QAAQ,WAAW,WAAW;AAAA,QACjC;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,UAAU,SAAS3M,WAAU;AACxC,iBAAS,QAAQ,WAAW,MAAM,YAAY,WAAW,KAAK,SAAS,EAAE,IAAI;AAAA,MAC/E;AACA,UAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,OAAO,QAAQ,SAAS,UAAU,WAAW,YAAY,aAAa,cAAc,eAAe,gBAAgB,iBAAiB,kBAAkB,mBAAmB,oBAAoB,qBAAqB,sBAAsB,uBAAuB,wBAAwB,yBAAyB,0BAA0B,2BAA2B,4BAA4B,2BAA2B;AACxb,UAAI,aAAa,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACpI,UAAI,aAAa,CAAC,GAAG,GAAG,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,KAAK,UAAU,UAAU,UAAU,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,MAAM,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,OAAO,UAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAClW,SAAG,UAAU,WAAW,SAAS,SAAS,MAAM,SAAS;AACvD,eAAO,QAAQ;AACf,kBAAU,UAAU,KAAK;AACzB,YAAI;AACJ,YAAI,SAAS,MAAM,SAAS,OAAO;AACjC,gBAAM;AACN,cAAIuL,QAAO;AACX,cAAI,QAAQ;AACZ,mBAAS,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AACtD,gBAAI,MAAM,QAAQ,WAAW,MAAM,EAAE;AACrC,gBAAI,SAAS,MAAMA,QAAO,SAAS,UAAU,SAAS,EAAE;AACxD,oBAAQ,OAAO,KAAKA,QAAO;AAC3B,gBAAI,UAAU,KAAK,QAAQ,QAAQ,WAAW,SAAS,GAAG;AACxD,oBAAM,MAAM,IAAI,KAAK,MAAM,IAAI,OAAO;AAAA,YACxC,OAAO;AACL,oBAAM,OAAO;AAAA,YACf;AACA,YAAAA,SAAQ;AACR,gBAAIA,SAAQ,IAAI;AACd,cAAAA,SAAQ;AACR;AAAA,YACF;AAAA,UACF;AACA,cAAI,UAAU,GAAG;AACf,kBAAM,MAAM,SAAS,EAAE,IAAI;AAAA,UAC7B;AACA,iBAAO,IAAI,SAAS,YAAY,GAAG;AACjC,kBAAM,MAAM;AAAA,UACd;AACA,eAAK,QAAQ,WAAW,aAAa,GAAG;AACtC,kBAAM,MAAM;AAAA,UACd;AACA,iBAAO;AAAA,QACT;AACA,YAAI,UAAU,OAAO,MAAM,QAAQ,KAAK,QAAQ,IAAI;AAClD,cAAI,YAAY,WAAW,IAAI;AAC/B,cAAI,YAAY,WAAW,IAAI;AAC/B,gBAAM;AACN,cAAI,KAAK,KAAK,MAAM;AACpB,aAAG,WAAW;AACd,iBAAO,CAAC,GAAG,OAAO,GAAG;AACnB,gBAAI,KAAK,GAAG,KAAK,SAAS,EAAE,SAAS,IAAI;AACzC,iBAAK,GAAG,MAAM,SAAS;AACvB,gBAAI,CAAC,GAAG,OAAO,GAAG;AAChB,oBAAM,MAAM,YAAY,GAAG,MAAM,IAAI,KAAK;AAAA,YAC5C,OAAO;AACL,oBAAM,KAAK;AAAA,YACb;AAAA,UACF;AACA,cAAI,KAAK,OAAO,GAAG;AACjB,kBAAM,MAAM;AAAA,UACd;AACA,iBAAO,IAAI,SAAS,YAAY,GAAG;AACjC,kBAAM,MAAM;AAAA,UACd;AACA,eAAK,QAAQ,WAAW,aAAa,GAAG;AACtC,kBAAM,MAAM;AAAA,UACd;AACA,iBAAO;AAAA,QACT;AACA,QAAAC,SAAQ,OAAO,iCAAiC;AAAA,MAClD;AACA,SAAG,UAAU,WAAW,SAAS,WAAW;AAC1C,YAAI,OAAO,QAAQ,WAAW,MAAM,CAAC;AACrC,aAAK,QAAQ,WAAW,WAAW,GAAG;AACpC,kBAAQ,QAAQ,WAAW,MAAM,CAAC,IAAI;AAAA,QACxC,YAAY,QAAQ,WAAW,WAAW,MAAM,QAAQ,WAAW,MAAM,CAAC,MAAM,GAAG;AACjF,iBAAO,oBAAoB,QAAQ,WAAW,MAAM,CAAC,IAAI;AAAA,QAC3D,YAAY,QAAQ,WAAW,SAAS,GAAG;AACzC,UAAAA,SAAQ,OAAO,4CAA4C;AAAA,QAC7D;AACA,gBAAQ,QAAQ,WAAW,aAAa,IAAI,CAAC,MAAM;AAAA,MACrD;AACA,SAAG,UAAU,SAAS,SAAS,SAAS;AACtC,eAAO,KAAK,SAAS,EAAE;AAAA,MACzB;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,QAAQ,QAAQ;AACxD,QAAAA,SAAQ,OAAO9L,YAAW,WAAW;AACrC,eAAO,KAAK,YAAYA,SAAQ,QAAQ,MAAM;AAAA,MAChD;AACA,SAAG,UAAU,UAAU,SAAS8M,SAAQ,QAAQ,QAAQ;AACtD,eAAO,KAAK,YAAY,OAAO,QAAQ,MAAM;AAAA,MAC/C;AACA,SAAG,UAAU,cAAc,SAAS,YAAY,WAAW,QAAQ,QAAQ;AACzE,YAAI,aAAa,KAAK,WAAW;AACjC,YAAI,YAAY,UAAU,KAAK,IAAI,GAAG,UAAU;AAChD,QAAAhB,SAAQ,cAAc,WAAW,uCAAuC;AACxE,QAAAA,SAAQ,YAAY,GAAG,6BAA6B;AACpD,aAAK,MAAM;AACX,YAAI,eAAe,WAAW;AAC9B,YAAI,MAAM,IAAI,UAAU,SAAS;AACjC,YAAI,IAAI;AACR,YAAI,KAAK,KAAK,MAAM;AACpB,YAAI,CAAC,cAAc;AACjB,eAAK,KAAK,GAAG,KAAK,YAAY,YAAY,MAAM;AAC9C,gBAAI,EAAE,IAAI;AAAA,UACZ;AACA,eAAK,KAAK,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM;AAC/B,iBAAK,GAAG,MAAM,GAAG;AACjB,eAAG,OAAO,CAAC;AACX,gBAAI,YAAY,KAAK,CAAC,IAAI;AAAA,UAC5B;AAAA,QACF,OAAO;AACL,eAAK,KAAK,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM;AAC/B,iBAAK,GAAG,MAAM,GAAG;AACjB,eAAG,OAAO,CAAC;AACX,gBAAI,EAAE,IAAI;AAAA,UACZ;AACA,iBAAO,KAAK,WAAW,MAAM;AAC3B,gBAAI,EAAE,IAAI;AAAA,UACZ;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,UAAI,KAAK,OAAO;AACd,WAAG,UAAU,aAAa,SAAS,WAAW,IAAI;AAChD,iBAAO,KAAK,KAAK,MAAM,EAAE;AAAA,QAC3B;AAAA,MACF,OAAO;AACL,WAAG,UAAU,aAAa,SAAS,WAAW,IAAI;AAChD,cAAI,KAAK;AACT,cAAI,KAAK;AACT,cAAI,MAAM,MAAM;AACd,kBAAM;AACN,oBAAQ;AAAA,UACV;AACA,cAAI,MAAM,IAAI;AACZ,kBAAM;AACN,oBAAQ;AAAA,UACV;AACA,cAAI,MAAM,GAAG;AACX,kBAAM;AACN,oBAAQ;AAAA,UACV;AACA,cAAI,MAAM,GAAG;AACX,kBAAM;AACN,oBAAQ;AAAA,UACV;AACA,iBAAO,KAAK;AAAA,QACd;AAAA,MACF;AACA,SAAG,UAAU,YAAY,SAAS,UAAU,IAAI;AAC9C,YAAI,OAAO,EAAG,QAAO;AACrB,YAAI,KAAK;AACT,YAAI,KAAK;AACT,aAAK,KAAK,UAAU,GAAG;AACrB,gBAAM;AACN,kBAAQ;AAAA,QACV;AACA,aAAK,KAAK,SAAS,GAAG;AACpB,gBAAM;AACN,kBAAQ;AAAA,QACV;AACA,aAAK,KAAK,QAAQ,GAAG;AACnB,gBAAM;AACN,kBAAQ;AAAA,QACV;AACA,aAAK,KAAK,OAAO,GAAG;AAClB,gBAAM;AACN,kBAAQ;AAAA,QACV;AACA,aAAK,KAAK,OAAO,GAAG;AAClB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,YAAY,SAAS,YAAY;AAC5C,YAAI,MAAM,QAAQ,WAAW,OAAO,QAAQ,WAAW,SAAS,CAAC;AACjE,YAAI,KAAK,KAAK,WAAW,EAAE;AAC3B,iBAAS,QAAQ,WAAW,SAAS,KAAK,KAAK;AAAA,MACjD;AACA,eAAS,WAAW,KAAK;AACvB,YAAI,KAAK,IAAI,MAAM,IAAI,UAAU,CAAC;AAClC,iBAAS,MAAM,GAAG,MAAM,GAAG,QAAQ,OAAO;AACxC,cAAID,QAAO,MAAM,KAAK;AACtB,cAAI,OAAO,MAAM;AACjB,aAAG,GAAG,KAAK,IAAI,MAAMA,KAAI,IAAI,KAAK,UAAU;AAAA,QAC9C;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,WAAW,SAAS,WAAW;AAC1C,YAAI,KAAK,OAAO,EAAG,QAAO;AAC1B,YAAI,KAAK;AACT,iBAAS,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,MAAM;AACtD,cAAI,KAAK,KAAK,WAAW,QAAQ,WAAW,MAAM,EAAE,CAAC;AACrD,gBAAM;AACN,cAAI,OAAO,GAAI;AAAA,QACjB;AACA,eAAO;AAAA,MACT;AACA,SAAG,UAAU,aAAa,SAAS,aAAa;AAC9C,eAAO,KAAK,KAAK,KAAK,UAAU,IAAI,CAAC;AAAA,MACvC;AACA,SAAG,UAAU,SAAS,SAAS,OAAO,OAAO;AAC3C,aAAK,QAAQ,WAAW,aAAa,GAAG;AACtC,iBAAO,KAAK,IAAI,EAAE,MAAM,KAAK,EAAE,MAAM,CAAC;AAAA,QACxC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,WAAW,SAAS,SAAS,OAAO;AAC/C,YAAI,KAAK,MAAM,QAAQ,CAAC,GAAG;AACzB,iBAAO,KAAK,KAAK,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK;AAAA,QACxC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,QAAQ,SAAS,QAAQ;AACpC,gBAAQ,QAAQ,WAAW,aAAa;AAAA,MAC1C;AACA,SAAG,UAAU,MAAM,SAAS,MAAM;AAChC,eAAO,KAAK,MAAM,EAAE,KAAK;AAAA,MAC3B;AACA,SAAG,UAAU,OAAO,SAAS,OAAO;AAClC,YAAI,CAAC,KAAK,OAAO,GAAG;AAClB,WAAC,QAAQ,WAAW,YAAY;AAAA,QAClC;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,gBAAQ,QAAQ,WAAW,SAAS,IAAI,QAAQ;AAC9C,WAAC,QAAQ,WAAW,OAAO,QAAQ,WAAW,QAAQ,IAAI;AAAA,QAC5D;AACA,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM;AACtC,WAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,QAAQ,WAAW,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE;AAAA,QAC9E;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,QAAAC,WAAU,QAAQ,WAAW,WAAW,IAAI,cAAc,CAAC;AAC3D,eAAO,KAAK,KAAK,GAAG;AAAA,MACtB;AACA,SAAG,UAAU,KAAK,SAAS,GAAG,KAAK;AACjC,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,IAAI,GAAG;AACxE,eAAO,IAAI,MAAM,EAAE,IAAI,QAAQ,SAAS;AAAA,MAC1C;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AACzE,eAAO,IAAI,MAAM,EAAE,KAAK,QAAQ,SAAS;AAAA,MAC3C;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,YAAI;AACJ,aAAK,QAAQ,WAAW,SAAS,IAAI,QAAQ;AAC3C,eAAK;AAAA,QACP,OAAO;AACL,eAAK,QAAQ;AAAA,QACf;AACA,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,WAAC,QAAQ,WAAW,MAAM,EAAE,KAAK,QAAQ,WAAW,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE;AAAA,QAC9E;AACA,SAAC,QAAQ,WAAW,SAAS,GAAG;AAChC,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,QAAAA,WAAU,QAAQ,WAAW,WAAW,IAAI,cAAc,CAAC;AAC3D,eAAO,KAAK,MAAM,GAAG;AAAA,MACvB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AACzE,eAAO,IAAI,MAAM,EAAE,KAAK,QAAQ,SAAS;AAAA,MAC3C;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAC1E,eAAO,IAAI,MAAM,EAAE,MAAM,QAAQ,SAAS;AAAA,MAC5C;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,KAAK;AACvC,YAAI;AACJ,YAAI;AACJ,aAAK,QAAQ,WAAW,SAAS,IAAI,QAAQ;AAC3C,eAAK,QAAQ;AACb,eAAK;AAAA,QACP,OAAO;AACL,eAAK;AACL,eAAK,QAAQ;AAAA,QACf;AACA,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE;AAAA,QAC5D;AACA,aAAK,QAAQ,eAAe,IAAI;AAC9B,iBAAO,KAAK,GAAG,QAAQ,MAAM;AAC3B,aAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE;AAAA,UAC7C;AAAA,QACF;AACA,SAAC,QAAQ,WAAW,SAAS,GAAG;AAChC,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,QAAAA,WAAU,QAAQ,WAAW,WAAW,IAAI,cAAc,CAAC;AAC3D,eAAO,KAAK,MAAM,GAAG;AAAA,MACvB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AACzE,eAAO,IAAI,MAAM,EAAE,KAAK,QAAQ,SAAS;AAAA,MAC3C;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAC1E,eAAO,IAAI,MAAM,EAAE,MAAM,QAAQ,SAAS;AAAA,MAC5C;AACA,SAAG,UAAU,QAAQ,SAAS,MAAM,OAAO;AACzC,QAAAA,SAAQ,OAAO,UAAU,YAAY,SAAS,CAAC;AAC/C,YAAI,cAAc,KAAK,KAAK,QAAQ,EAAE,IAAI;AAC1C,YAAI,WAAW,QAAQ;AACvB,aAAK,QAAQ,WAAW;AACxB,YAAI,WAAW,GAAG;AAChB;AAAA,QACF;AACA,iBAAS,KAAK,GAAG,KAAK,aAAa,MAAM;AACvC,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,EAAE,QAAQ,WAAW,MAAM,EAAE,IAAI;AAAA,QACnE;AACA,YAAI,WAAW,GAAG;AAChB,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,EAAE,QAAQ,WAAW,MAAM,EAAE,IAAI,YAAY,KAAK;AAAA,QACpF;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,OAAO;AACvC,eAAO,KAAK,MAAM,EAAE,MAAM,KAAK;AAAA,MACjC;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK,KAAK;AAC1C,QAAAA,SAAQ,OAAO,QAAQ,YAAY,OAAO,CAAC;AAC3C,YAAID,QAAO,MAAM,KAAK;AACtB,YAAI,OAAO,MAAM;AACjB,aAAK,QAAQA,QAAO,CAAC;AACrB,YAAI,KAAK;AACP,WAAC,QAAQ,WAAW,MAAMA,KAAI,KAAK,QAAQ,WAAW,MAAMA,KAAI,IAAI,KAAK;AAAA,QAC3E,OAAO;AACL,WAAC,QAAQ,WAAW,MAAMA,KAAI,KAAK,QAAQ,WAAW,MAAMA,KAAI,IAAI,EAAE,KAAK;AAAA,QAC7E;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,YAAI;AACJ,aAAK,QAAQ,WAAW,aAAa,KAAK,IAAI,aAAa,GAAG;AAC5D,WAAC,QAAQ,WAAW,WAAW;AAC/B,eAAK,KAAK,KAAK,GAAG;AAClB,WAAC,QAAQ,WAAW,YAAY;AAChC,iBAAO,KAAK,UAAU;AAAA,QACxB,YAAY,QAAQ,WAAW,aAAa,KAAK,IAAI,aAAa,GAAG;AACnE,cAAI,WAAW;AACf,eAAK,KAAK,KAAK,GAAG;AAClB,cAAI,WAAW;AACf,iBAAO,GAAG,UAAU;AAAA,QACtB;AACA,YAAI,IAAI;AACR,aAAK,QAAQ,WAAW,SAAS,IAAI,QAAQ;AAC3C,eAAK,QAAQ;AACb,eAAK;AAAA,QACP,OAAO;AACL,eAAK;AACL,eAAK,QAAQ;AAAA,QACf;AACA,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,gBAAM,GAAG,MAAM,EAAE,IAAI,MAAM,GAAG,MAAM,EAAE,IAAI,KAAK;AAC/C,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AACrC,kBAAQ,OAAO;AAAA,QACjB;AACA,eAAO,UAAU,KAAK,KAAK,GAAG,QAAQ,MAAM;AAC1C,gBAAM,GAAG,MAAM,EAAE,IAAI,KAAK;AAC1B,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AACrC,kBAAQ,OAAO;AAAA,QACjB;AACA,SAAC,QAAQ,WAAW,SAAS,GAAG;AAChC,YAAI,UAAU,GAAG;AACf,WAAC,QAAQ,WAAW,OAAO,QAAQ,WAAW,MAAM,IAAI;AACxD,WAAC,QAAQ,WAAW;AAAA,QACtB,WAAW,QAAQ,QAAQ,YAAY;AACrC,iBAAO,KAAK,GAAG,QAAQ,MAAM;AAC3B,aAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE;AAAA,UAC7C;AAAA,QACF;AACA,eAAO,QAAQ;AAAA,MACjB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,YAAI;AACJ,YAAI,IAAI,aAAa,MAAM,QAAQ,WAAW,aAAa,GAAG;AAC5D,cAAI,WAAW;AACf,gBAAM,KAAK,IAAI,GAAG;AAClB,cAAI,YAAY;AAChB,iBAAO;AAAA,QACT,WAAW,IAAI,aAAa,MAAM,QAAQ,WAAW,aAAa,GAAG;AACnE,WAAC,QAAQ,WAAW,WAAW;AAC/B,gBAAM,IAAI,IAAI,QAAQ,SAAS;AAC/B,WAAC,QAAQ,WAAW,WAAW;AAC/B,iBAAO;AAAA,QACT;AACA,aAAK,QAAQ,WAAW,SAAS,IAAI,OAAQ,QAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AACzE,eAAO,IAAI,MAAM,EAAE,KAAK,QAAQ,SAAS;AAAA,MAC3C;AACA,SAAG,UAAU,OAAO,SAAS,KAAK,KAAK;AACrC,YAAI,IAAI,aAAa,GAAG;AACtB,cAAI,WAAW;AACf,cAAI,KAAK,KAAK,KAAK,GAAG;AACtB,cAAI,WAAW;AACf,iBAAO,GAAG,UAAU;AAAA,QACtB,YAAY,QAAQ,WAAW,aAAa,GAAG;AAC7C,WAAC,QAAQ,WAAW,WAAW;AAC/B,eAAK,KAAK,GAAG;AACb,WAAC,QAAQ,WAAW,WAAW;AAC/B,iBAAO,KAAK,UAAU;AAAA,QACxB;AACA,YAAI,MAAM,KAAK,IAAI,GAAG;AACtB,YAAI,QAAQ,GAAG;AACb,WAAC,QAAQ,WAAW,WAAW;AAC/B,WAAC,QAAQ,WAAW,SAAS;AAC7B,WAAC,QAAQ,WAAW,MAAM,CAAC,IAAI;AAC/B,iBAAO,QAAQ;AAAA,QACjB;AACA,YAAI,IAAI;AACR,YAAI,MAAM,GAAG;AACX,eAAK,QAAQ;AACb,eAAK;AAAA,QACP,OAAO;AACL,eAAK;AACL,eAAK,QAAQ;AAAA,QACf;AACA,YAAI,QAAQ;AACZ,iBAAS,KAAK,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrC,gBAAM,GAAG,MAAM,EAAE,IAAI,MAAM,GAAG,MAAM,EAAE,IAAI,KAAK;AAC/C,kBAAQ,MAAM;AACd,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AAAA,QACvC;AACA,eAAO,UAAU,KAAK,KAAK,GAAG,QAAQ,MAAM;AAC1C,gBAAM,GAAG,MAAM,EAAE,IAAI,KAAK;AAC1B,kBAAQ,MAAM;AACd,WAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,KAAK;AAAA,QACvC;AACA,YAAI,UAAU,KAAK,KAAK,GAAG,UAAU,QAAQ,QAAQ,YAAY;AAC/D,iBAAO,KAAK,GAAG,QAAQ,MAAM;AAC3B,aAAC,QAAQ,WAAW,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE;AAAA,UAC7C;AAAA,QACF;AACA,SAAC,QAAQ,WAAW,SAAS,KAAK,KAAK,QAAQ,WAAW,QAAQ,EAAE;AACpE,YAAI,QAAQ,QAAQ,YAAY;AAC9B,WAAC,QAAQ,WAAW,WAAW;AAAA,QACjC;AACA,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,SAAG,UAAU,MAAM,SAAS,IAAI,KAAK;AACnC,eAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AAAA,MAC9B;AACA,eAAS,WAAW,OAAO,KAAK,KAAK;AACnC,YAAI,WAAW,IAAI,WAAW,MAAM;AACpC,YAAI,MAAM,MAAM,SAAS,IAAI,SAAS;AACtC,YAAI,SAAS;AACb,cAAM,MAAM,IAAI;AAChB,YAAI,KAAK,MAAM,MAAM,CAAC,IAAI;AAC1B,YAAI,KAAK,IAAI,MAAM,CAAC,IAAI;AACxB,YAAI,KAAK,KAAK;AACd,YAAI,KAAK,KAAK;AACd,YAAI,QAAQ,KAAK,WAAW;AAC5B,YAAI,MAAM,CAAC,IAAI;AACf,iBAAS,KAAK,GAAG,KAAK,KAAK,MAAM;AAC/B,cAAI,SAAS,UAAU;AACvB,cAAI,QAAQ,QAAQ;AACpB,cAAI,OAAO,KAAK,IAAI,IAAI,IAAI,SAAS,CAAC;AACtC,mBAAS,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC,GAAG,MAAM,MAAM,MAAM;AAClE,gBAAI,KAAK,KAAK,KAAK;AACnB,iBAAK,MAAM,MAAM,EAAE,IAAI;AACvB,iBAAK,IAAI,MAAM,EAAE,IAAI;AACrB,iBAAK,KAAK,KAAK;AACf,sBAAU,KAAK,WAAW;AAC1B,oBAAQ,KAAK;AAAA,UACf;AACA,cAAI,MAAM,EAAE,IAAI,QAAQ;AACxB,kBAAQ,SAAS;AAAA,QACnB;AACA,YAAI,UAAU,GAAG;AACf,cAAI,MAAM,EAAE,IAAI,QAAQ;AAAA,QAC1B,OAAO;AACL,cAAI;AAAA,QACN;AACA,eAAO,IAAI,MAAM;AAAA,MACnB;AACA,UAAI,cAAc,SAAS,aAAa,OAAO,KAAK,KAAK;AACvD,YAAI,KAAK,MAAM;AACf,YAAI,KAAK,IAAI;AACb,YAAI,KAAK,IAAI;AACb,YAAI,KAAK;AACT,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAIqB,OAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAMA,OAAM;AAChB,YAAI,MAAMA,SAAQ;AAClB,YAAIC,OAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAMA,OAAM;AAChB,YAAI,MAAMA,SAAQ;AAClB,YAAI,MAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAM,MAAM;AAChB,YAAI,MAAM,QAAQ;AAClB,YAAI,MAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAM,MAAM;AAChB,YAAI,MAAM,QAAQ;AAClB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAIC,OAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAMA,OAAM;AAChB,YAAI,MAAMA,SAAQ;AAClB,YAAI,MAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAM,MAAM;AAChB,YAAI,MAAM,QAAQ;AAClB,YAAI,MAAM,GAAG,CAAC,IAAI;AAClB,YAAI,MAAM,MAAM;AAChB,YAAI,MAAM,QAAQ;AAClB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,KAAK,GAAG,CAAC,IAAI;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,MAAM,OAAO;AACjB,YAAI,WAAW,MAAM,WAAW,IAAI;AACpC,YAAI,SAAS;AACb,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAIC,QAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAMA,SAAQ,MAAM;AAC9C,QAAAA,QAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,OAAO,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AACjD,cAAM,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC9C,eAAO;AACP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,YAAI,MAAM,KAAK,KAAK,OAAO,MAAM,SAAS,MAAM;AAChD,cAAM,MAAM,QAAQ,MAAM,MAAM,OAAO,MAAM;AAC7C,cAAM;AACN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,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M,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI;AAChC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,cAAM,MAAM,KAAK,KAAK,KAAK,GAAG,IAAI;AAClC,aAAK,KAAK,KAAK,KAAK,KAAK,GAAG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A,IAKA,KAoIA,IAeA,IA8FAC,YAIAnV,WACAD,YACAG,UAkKAsD,WAyCA,MACA,MACA,MACA,MACA,MACA,MACA,MAYA,OAgBA,OACA,OACA,MACA,OAiiBA,IA0DA9B,KAOA,IACA,IACA,IAqBA,IACA,MACAK,KACA,IA0IA,aACA,cA8FA,aACA,cAmFAI,YACAD,aA8/CA,QAIAI,YACAD,aAgCAI,YACAD,aAOAK,YACAD,aA4OAW,YACAD,aAyFAM,YACAD,aAmGAI,YACAD,aAwBAI,YACAD,aACAK,YAqCAG,YACAD,aACAE,YA8cAK,YACAD,aA4FAK,YACAD,aAwFAM,YACAD,aA6KAK,YACAD,aASAG,YACAD,aACAE,WA2tBAM,aACAD,cAgGAI,aACAD,cAgBA,UACA,WA2GA6O,aAMA,YACA,WACA,UA6EA,UACA,UAsBA,UACA,WAiBA,UACA,WACA,UAuCA,YACA,WACA,UA2HA,UAKA,SACAC,gBACA,cACA,WACA,cACA,iBACA,kBAGA,YACA,aACA,YAsCA,YACA,aA6EA,YACA,aAgIA,YACA,aAiHA,YACA,aACA,YA8DA,YACA,aACA,YAsEA,YACA,aACA,YAyEA,YACA,aACA,YA4FA,YACA,aACA,YAwCA,YACA,aACA,YAqLA,YACA,aACA,YAmDA,YACA,aACA,UAoBA,YACA,aACA,YA2FA,YACA,aA4BA,YACA,aAwCA,YACA,aAUA,YACA,aAwDA,eAwJA,YACA,aAOA,YACA,aAqBA,YACA,aACA,YAiBA,YACA,aAkBA,YACA,aACA,YA2FA,YACA,aACA,YAmHA,YACA,aAQA,YACA,aAyNA,YACA,aAaA,YACA,aA6FA,YACA,aAyGA,YACA,aAiDA,YACA,aAyDA,YACA,aAWA,YACA,aACA3N,aAuDA,YACA,aAYA,YACA,aAeA,YACA,aAkBA,YACA,aAkCA,YACA,aAsBA,YACA,aAyCA,YACA,aAoBA,YACAE,cAqBAG,aACAD,cA+BA,SA+LAE,aACA,aAqBA,YACA,aACA,YA8KA,YACA,aACA,YAwEA,YACA,aACA,WAsGA,YACA,aACA,WA2BA,YACA,aA6CA,YACA,aACA,WAgGA,YACA,aACA,WA6GA,YACA,aAiBA,YACA,aA8BA,YACA,aAsEA,YACA,aACA,UAGA,WAonFA,YACA,aACA,UAGA,WAonFA,YACA,aAyDA,YACA,aACA,WAsCA,YACA,aA0DA,YACA,aA6EA,YACA,aAgIA,YACA,aAiHA,YACA,aACA,WA8DA,YACA,aACA,WAsEA,YACA,aACA,WAyEA,YACA,aACA,WA4FA,YACA,aACA,WAwCA,YACA,aACA,WAqLA,YACA,aACA,WAmDA,YACA,aACA,UAoBA,aACA,cAgCA,aACA,cAOA,aACA,cA4OA,aACA,cAyFA,aACA,cAmGA,aACA,cAwBA,aACA,cACA,aAqCA,aACA,cACA,aA8cA,aACA,cA4FA,aACA,cAwFA,aACA,cA6KA,aACA,cASA,aACA,cACA,WA2tBA,aACA,cAgGA,aACA,cAgBA,YACA,aAkFA,YACA,aACA,WA6EA,QAaA,YACA,aACA,WA2FA,YACA,aA4BA,YACA,aAwCA,YACA,aAUA,YACA,aAwDA,eAwJA,YACA,aAOA,YACA,aAqBA,YACA,aACA,WAiBA,YACA,aAkBA,YACA,aACA,WA2FA,YACA,aACA,WAmHA,YACA,aAQA,YACA,aAyNA,YACA,aAaA,YACA,aA4FA,YACA,aAmGA,YACA,aAiDA,YACA,aAyDA,YACA,aAWA,YACA,aACA,WAuDA,YACA,aAYA,YACA,aAeA,YACA,aAkBA,YACA,aAkCA,YACA,aAsBA,YACA,aAyCA,YACA,aAoBA,YACA,aAqBA,YACA,aA+BA,SA+LA,YACA,aAqBA,YACA,aACA,WA8KA,YACA,aACA,WAwEA,YACAmB,cACA,WAsGAG,cACAD,eACA,WA2BAE,cACA,aA6CA,YACA,aACA,WAgGA,YACA,aACA,WA6GA,YACA,aAiBA,YACA,aA8BA,YACA,aAsEA,YACA,aACA,UAGA,WAonFA,YACA,aACA,UAGA,WAonFA,YACA,aAeA,YACA,aA0DA,YACA,aACA,WAsCA,YACA,aA6EA,YACA,aAgIA,YACA,aAiHA,YACA,aACA,WA8DA,YACA,aACA,WAsEA,YACA,aACA,WAyEA,YACA,aACA,WA4FA,YACA,aACA,WAwCA,YACA,aACA,WAqLA,YACA,aACA,WAmDA,YACA,aACA,UAoBA,KACA,QACA,KAyCA,OAGA,OAUA,OA8BA,KACA,KACA,KACA,KAqEA,KAUA,KAWA,KACA,KAUA,KAGA,KACA,KAgCA,KAIA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAcA,KAEA,KAqCA,KAcA,KACA,KACA,KA6PA,KACA,KACA,KAsKA,KACA,KAsCA,OACA,OAGA,QAmDA,OACA,OACA,OACA,OAqEA,OAUA,OAWA,OACA,OACA,OAUA,OAIA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OAcA,OAEA,OAqCA,OAcA,OACA,OACA,OA6PA,OACA,OACA,OAsKA,OACA,OAsCA,OACA,OACA,OAEA,KACA,KACA,KACA,KACA,OACA,OA4CA,OACA,QAEA,OAQA,OACA,OACA,OACA,OACA,OAkCA,OAYA,KACA,KAEA,KA4BA,KASA,YACA,aACA,WA2FA,YACA,aA4BA,YACA,aAwCA,YACA,aAUA,YACA,aAwDA,aAwJA,YACA,aAOA,YACA,aAqBA,YACA,aACA,WAiBA,YACA,aAkBA,YACA,aACA,WA2FA,YACA,aACA,WAmHA,YACA,aAQA,YACA,aAyNA,YACA,aAaA,YACA,aA4FA,YACA,aAmGA,YACA,aAiDA,YACA,aAyDA,YACA,aAWA,YACA,aACA,WAuDA,YACA,aAYA,YACA,aAeA,YACA,aAkBA,YACA,aAkCA,cACA,eAsBA,cACA,eAyCA,cACA,eAoBA,cACA,eAqBA,cACA,eA+BA,OA+LA,cACA,eAqBA,cACA,eACA,aA8KA,cACA,eACA,aAwEA,cACA,eACA,aAsGA,cACA,eACA,aA2BA,cACA,eA6CA,cACA,eACA,aAgGA,cACA,eACA,aA6GA,cACA,eAiBA,cACA,eA8BA,cACA,eAsEA,cACA,eACA,UAGA,aAonFA,cACA,eACA,UAGA,aAonFA,aACA,cACA,UAKA,cAMA,UAIA,aAWA,UAIA,SAiDA,IACA,IACA,IACA,IACA,IAYA,IACA,MA4CA,MACA+L,KACA,IACA,IACA,MA4BA,IACA,MACA,KACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MAmCA,IACA,MACA,KA0BA,KACA,KACA,MACA,KACA,KACA,MACA,KAiCA,KACA,KACA,KACA,KACA,KACA,KACA,KAwBA,KACA,KACA,KACA,KACA,KACA,IACA,IA2BA,IACA3L,KACA,IACA,IACA,IACA,IACAC,KAUA,IACA,KACA,IACA,IACA,IACA2L,KACA1L,KAsDA,IACAK,KACA,IACA,IACAC,KACA,IACA,IAaA,IACA,IACA,IAOA,IACA,KACA,KACA,KACA,KAwCA,KACA,MACA,KACA,KACA,KASA,KAGA,KACA,KAGA,KACA,KACA,KACA,KAYA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAcA,KAGA,KACA,KACA,KAIA,KACA,KAMA,KAEA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAkBA,KACA,KAcA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAQA,KAqCA,KAEA,KAOA,KACA,KAiCA,IAYA,KAUA,KASA,KACA,KAuCA,KACA,KACA,KACA,KACA,KAYA,KAmCA,KACA,KACA,KACA,KACA,KAgCA,KACA,KACA,KACA,KAiBA,KACA,KAEA,KACA,MACA,KACA,KACA,KACA,KACA,KAeA,KACA,KACA,KAIA,MASA,KAKA,KACA,KAUA,MACA,KACA,KAeA,KACA,KASA,KACA,KAcA,KACA,KACA,KASA,KACA,KACA,KACA,KAeA,KACA,KACA,KAEA,KACA,KACA,KACA,KACA,KAaA,KACA,KAqCA,KACA,KACA,KAuBA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KA4CA,KACA,KACA,KACA,KACA,KASA,KACA,MACA,KACA,KAiBA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAgDA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAUA,KAkCA,MACA,KACA,KACA,KAIA,KAEA,KACA,KACA,KACA,KACA,KACA,KAgCA,KACA,KACA,KACA,KA+0BA,KACA,KACA,KACA,KACA,KA6BA,KACA,KACA,KACA,KACA,KACA,KAkDA,KACA,KACA,KAEA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KA8BA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAQA,KA8CA,KACA,KACA,KACA,KACA,KACA,KACA,KAOA,KACA,KACA,KACA,KAeA,KACA,KACA,KA2BA,KACA,KACA,KACA,KACA,KA+BA,KACA,KACA,KACA,KA4CA,KACA,KACA,KACA,KAsFA,KACA,KACA,KAuBA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAyEA,KACA,KACA,KAqBA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAiBA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAiBA,KACA,KACA,KACA,KAQA,KACA,KACA,KACA,KAQA,KACA,KAEA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAuBA,KACA,KACA,KACA,KACA,KACA,KACA,KAgBA,KACA,KACA,KAEA,KACA,KACA,KACA,KA0BA,KACA,KACA,KACA,KACA,KACA,KACA,KAmHA,KACA,KACA,KACA,KACA,KACA,KAsPA,KACA,KACA,KACA,KACA,KACA,KAgDA,KACA,KACA,KACA,KACA,KACA,KAoGA,KACA,KACA,KAEA,KACA,KACA,KACA,KACA,KACA,KACA,KAiBA,KACA,KACA,KA6BA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KAiEA,KACA,KACA,KACA,KACA,KAgCA,KACA,KACA,KACA,KACA,IACA,KAiBA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KAoCA,KACA,IACA,KAEA,KACA,KACA,KACA,KACA,KACA,KAgDA,KACA,KACA,KA2CA,KACA,KACA,KACA,KACA,KAyNA,KACA,KACA,KACA,KAmBA,KACA,KACA,KAgIA,KACA,KACA,KACA,KACA,KAiCA,KACA,KACA,KA4GA,KACA,KACA,KACA,KACA,KAkBA,KACA,KAqCA,KACA,KACA,KAGA,KAGA,KAGA,KAGA,KAGA,KAGA,KAGA,KAGA,KAGA,KAGA,KAGA,KACA,KAEA,KAIA,KAIA,KAIA,KAGA,KAIA,KAIA,KAMA,KAIA,KAMA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAWA,KACA,KACA,KAgDA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAiEA,KACA,KACA,KACA,KACA,KACA,KAKA,KAgCA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAsCA,KACA,KACA,KACA,KACA,KACA,KAIA,KA6BA,KACA,KACA,KAKA,KAIA,KAIA,KACA,KACA,KAGA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KA0BA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAuCA,KAMA,KACA,KACA,KAIA,KACA,KACA,KACA,KACA,KACA,KAmCA,KAEA,KACA,KACA,KAIA,KAEA,KAEA,KAEA,KAEA,KAEA,KAIA,cACA,eACA,aAoDA,aACA,cACA,aAgFA,aACA,cA2FA,WAkCA,aACA,cACA,aAmJA,aACA,cAwCA,aACA,cACA,YAGA,aAujFA,aACA,cAyCA,YAwFA,aACA,cACA,YAGA,aAonFA,aACA,cA8CA,aACA,cAyFA,aACA,cA4RA,aACA,cAmoBA,aACA,cA2HA,aACA,cAsQA,aACA,cAWA,aACA,cAiOA,aACA,cAuEA,aACA,cAMA,aACA,cAsFA,aACA,cAmCA,aACA,cAkBA,aACA,cAgBA,aACA,cAoJA,aACA,cAmFA,aACA,cA8FA,aACA,cA2IA,aACA,cAiKA,aACA,cAwEA,aACA,cA6CA,aACA,cAqFA,aACA,cAcA,aACA,cACA,YAGA,aAonFA,aACA,cAoEA,aACA,cAkGA,aACA,cA4GA,aACA,cA8YA,aACA,cAsDA,aACA,cAwLA,aACA,cAsBA,aACA,cASA,aACA,cAuOA,aACA,cAwCA,aACA,cASA,aACA,cA8CA,aACA,cAWA,aACA,cAiBA,aACA,cAaA,aACA,cA8CA,aACA,cAkDA,UAcA,aACA,cAoCA,aACA,cAiHA,WAQA,aACA,cAkIA,aACA,cA0EA,aACA,cACA,aA8EA,aACA,cACA,YAGA,aAonFA,aACA,cACA,aAuHA,aACA,cAuBA,aACA,cAcA,aACA,cACA,UAGA,aAonFA,aACA,cAYA,aACA,cA4FA,aACA,cA0GA,cACA,eAcA,cACA,eACA,WAsGA,YACA,aAqEA8B,SAwCA,cACA,eACA,aAoDA,cACA,eACA,aAgFA,cACA,cA2FA,WAkCA,aACA,cACA,aAmJA,aACA,cAwCA,aACA,cA0DA,aACA,cACA,YAGA,aAujFA,aACA,cAyCA,YAwDA,aACA,cACA,YAGA,aAonFA,aACA,cA8CA,aACA,cAyFA,aACA,cA4RA,aACA,cAmoBA,aACA,cA2HA,aACA,cAsQA,aACA,cAWA,aACA,cAiOA,aACA,cAuEA,aACA,cAMA,aACA,cAsFA,aACA,cAmCA,aACA,cAkBA,aACA,cAgBA,aACA,cAoJA,aACA,cAmFA,aACA,cA8FA,aACA,cA2IA,aACA,cAiKA,aACA,cAwEA,aACA,cA6CA,aACA,cAqFA,aACA,cAcA,aACA,cACA,YAGA,aAonFA,aACA,cAoEA,aACA,cAkGA,aACA,cA4GA,aACA,cA8YA,aACA,cAsDA,aACA,cAwLA,aACA,cAsBA,aACA,cASA,aACA,cAuOA,aACA,cAwCA,aACA,cASA,aACA,cA8CA,aACA,cAWA,aACA,cAiBA,aACA,cAaA,aACA,cA8CA,aACA,cAkDA,UAcA,aACA,cAoCA,aACA,cAiHA,WAQA,aACA,cAkIA,aACA,cA0EA,aACA,cACA,aA8EA,aACA,cACA,YAGA,aAonFA,aACA,cACA,aAuHA,aACA,cAuBA,aACA,cAcA,aACA,cACA,UAGA,aAonFA,aACA,cAYA,aACA,cA4FA,aACA,cA0GA,aACA,cAcA,aACA,cACA,WAsGA,aACA,aAqEA,YAiFA,YACA,aACA,WAoDA,YACA,aACA,WAgFA,YACA,aA2FA,SAkCA,YACA,aACA,WAmJA,YACA,aAwCA,YACA,aA+CA,YACA,aAUA,YACA,aAOA,YACA,aAyDA,YACA,aAsEA,YACA,aAqFA,YACA,aAoEA,YACA,aACA,WAwbA,YACA,aAyEA,aACA,aACA,WAkrBA,aACAgB,eAmGAG,cACAD,eAkBAE,cACA,aAaA,YACA,aACA,UAGA,WAujFA,YACA,YAyCA,UAwDA,WACA,YACA,UAGA,WAonFA,WACA,YA8CA,WACA,YA4FA,WACA,YA4RA,WACA,YAmoBA,WACA,YA2HA,WACA,YAsQA,WACA,YAWA,WACA,YAiOA,WACA,YAuEA,WACA,YA0CA,WACA,YAuDA,WACA,YAwEA,WACA,YAuBA,WACA,YA4MA,WACA,YAuBA,WACA,YAWA,WACA,YAsFA,WACA,YAmCA,WACA,YAkBA,WACA,YAgBA,WACA,YAoJA,WACA,YAmFA,WACA,YA8FA,WACA,YAoJA,WACA,YAiKA,WACA,YAwEA,WACA,YA8CA,WACA,YAwFA,WACA,YAcA,WACA,YACA,UAGA,WAonFA,WACA,YACA,WAiDA,WACA,YACA,WAkGA,WACA,YACA,WA8FA,WACA,YACA,WA0YA,WACA,YAWA,WACA,YA8CA,WACA,YAiBA,WACA,YACA,WA8NA,WACA,YACA,WAwCA,WACA,YASA,WACA,YACA,WAyLA,WACAG,aACA,WAsBAG,YACAD,aASAG,YACAD,aAaAI,YACAD,aA8CAI,YACAD,cAkDA,QAcAI,aACAD,cAoCAI,aACAD,cAiHA,SAQAI,aACAD,cAuJAI,aACAD,cAyFAI,aACAD,cAgFAI,aACAD,cACA,UAGA,WAonFAI,aACAD,cACAE,aAuHAG,aACAD,cAuBAI,aACAD,cAcAK,aACAF,cACAC,SAGA,aAonFAI,aACAD,cAYAI,aACAD,cA4FAE,aACA,cA0GA,aACA,cAcA,aACA,cACA,UAsGA,aACA,YAqEA,WA2DA,QACA,UACA,UACA,YACA,eACA,oBACA,MACA,MACA,MACA,QACA,WACA,cACA,gBACA,mBACA,gBACA,kBACA,qBACA,0BACA,YACA,YACA,YACA,YACA,cACA,YACA,kBACA,WACA,aACA,QACA,YACA,gBACA,gBACA,MACA,mBACA,eACA,eACA,aACA,YACA,gBACA,KACA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G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE;AACxR,MAAI,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE;AACxR,MAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,I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,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG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C,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,gEAAgE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,kEAAkE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,mEAAmE,kEAAkE,GAAG,CAAC,oEAAoE,iEAAiE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE,kEAAkE,GAAG,CAAC,oEAAoE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U;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACvE,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACvE,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACxD,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACxD,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACxD,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACvE,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACvE,UAAU;AAAA,UAAM,UAAU;AAAA,UAC1B,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACvE,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACvE,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACxD,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACxD,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACxD,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACxD,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACtF,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UAAK,UAAU;AAAA,UACtF,UAAU;AAAA,UAAM,UAAU;AAAA,UAC1B,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAAK,UAAU;AAAA,UACzC,UAAU;AAAA,UAAM,UAAU;AAAA,UAC1B,UAAU;AAAA,UAAM,UAAU;AAAA,UAC1B,UAAU;AAAA,UAAM,UAAU;AAAA,QAC5B;AAGA,YAAI,cAAc;AAAA,UAChB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP;AAGA,YAAI,gBAAgB;AAAA,UAClB,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,SAAS;AAAA,QACX;AAGA,YAAI,gBAAgB;AAAA,UAClB,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,UACV,UAAU;AAAA,QACZ;AAGA,YAAI,iBAAiB,YACjB,eAAe;AAGnB,YAAI,aAAa,OAAO,cAAU,YAAY,cAAU,WAAO,WAAW,UAAU;AAGpF,YAAI,WAAW,OAAO,QAAQ,YAAY,QAAQ,KAAK,WAAW,UAAU;AAG5E,YAAI,OAAO,cAAc,YAAY,SAAS,aAAa,EAAE;AAG7D,YAAI,cAAc,OAAON,aAAW,YAAYA,aAAW,CAACA,UAAQ,YAAYA;AAGhF,YAAI,aAAa,eAAe,OAAOC,WAAU,YAAYA,WAAU,CAACA,QAAO,YAAYA;AAG3F,YAAI,gBAAgB,cAAc,WAAW,YAAY;AAGzD,YAAI,cAAc,iBAAiB,WAAW;AAG9C,YAAI,YAAY,WAAW;AACzB,cAAI;AAEF,gBAAIM,SAAQ,cAAc,WAAW,WAAW,WAAW,QAAQ,MAAM,EAAE;AAE3E,gBAAIA,QAAO;AACT,qBAAOA;AAAA,YACT;AAGA,mBAAO,eAAe,YAAY,WAAW,YAAY,QAAQ,MAAM;AAAA,UACzE,SAASC,IAAG;AAAA,UAAC;AAAA,QACf,GAAE;AAGF,YAAI,oBAAoB,YAAY,SAAS,eACzC,aAAa,YAAY,SAAS,QAClC,YAAY,YAAY,SAAS,OACjC,eAAe,YAAY,SAAS,UACpC,YAAY,YAAY,SAAS,OACjC,mBAAmB,YAAY,SAAS;AAc5C,iBAAS,MAAM,MAAM,SAAS,MAAM;AAClC,kBAAQ,KAAK,QAAQ;AAAA,YACnB,KAAK;AAAG,qBAAO,KAAK,KAAK,OAAO;AAAA,YAChC,KAAK;AAAG,qBAAO,KAAK,KAAK,SAAS,KAAK,CAAC,CAAC;AAAA,YACzC,KAAK;AAAG,qBAAO,KAAK,KAAK,SAAS,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,YAClD,KAAK;AAAG,qBAAO,KAAK,KAAK,SAAS,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,UAC7D;AACA,iBAAO,KAAK,MAAM,SAAS,IAAI;AAAA,QACjC;AAYA,iBAAS,gBAAgB,OAAO,QAAQ,UAAU,aAAa;AAC7D,cAAIC,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,QAAQ,MAAMA,MAAK;AACvB,mBAAO,aAAa,OAAO,SAAS,KAAK,GAAG,KAAK;AAAA,UACnD;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,UAAU,OAAO,UAAU;AAClC,cAAIA,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,SAAS,MAAMA,MAAK,GAAGA,QAAO,KAAK,MAAM,OAAO;AAClD;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,eAAe,OAAO,UAAU;AACvC,cAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,iBAAO,UAAU;AACf,gBAAI,SAAS,MAAM,MAAM,GAAG,QAAQ,KAAK,MAAM,OAAO;AACpD;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAYA,iBAAS,WAAW,OAAO,WAAW;AACpC,cAAIA,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,CAAC,UAAU,MAAMA,MAAK,GAAGA,QAAO,KAAK,GAAG;AAC1C,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,YAAY,OAAO,WAAW;AACrC,cAAIA,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM,QACnC,WAAW,GACX,SAAS,CAAC;AAEd,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,QAAQ,MAAMA,MAAK;AACvB,gBAAI,UAAU,OAAOA,QAAO,KAAK,GAAG;AAClC,qBAAO,UAAU,IAAI;AAAA,YACvB;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,cAAc,OAAO,OAAO;AACnC,cAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,iBAAO,CAAC,CAAC,UAAU,YAAY,OAAO,OAAO,CAAC,IAAI;AAAA,QACpD;AAWA,iBAAS,kBAAkB,OAAO,OAAO,YAAY;AACnD,cAAIA,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,WAAW,OAAO,MAAMA,MAAK,CAAC,GAAG;AACnC,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,SAAS,OAAO,UAAU;AACjC,cAAIA,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM,QACnC,SAAS,MAAM,MAAM;AAEzB,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,mBAAOA,MAAK,IAAI,SAAS,MAAMA,MAAK,GAAGA,QAAO,KAAK;AAAA,UACrD;AACA,iBAAO;AAAA,QACT;AAUA,iBAAS,UAAU,OAAO,QAAQ;AAChC,cAAIA,SAAQ,IACR,SAAS,OAAO,QAChB,SAAS,MAAM;AAEnB,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAM,SAASA,MAAK,IAAI,OAAOA,MAAK;AAAA,UACtC;AACA,iBAAO;AAAA,QACT;AAcA,iBAAS,YAAY,OAAO,UAAU,aAAa,WAAW;AAC5D,cAAIA,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,cAAI,aAAa,QAAQ;AACvB,0BAAc,MAAM,EAAEA,MAAK;AAAA,UAC7B;AACA,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,0BAAc,SAAS,aAAa,MAAMA,MAAK,GAAGA,QAAO,KAAK;AAAA,UAChE;AACA,iBAAO;AAAA,QACT;AAcA,iBAAS,iBAAiB,OAAO,UAAU,aAAa,WAAW;AACjE,cAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,cAAI,aAAa,QAAQ;AACvB,0BAAc,MAAM,EAAE,MAAM;AAAA,UAC9B;AACA,iBAAO,UAAU;AACf,0BAAc,SAAS,aAAa,MAAM,MAAM,GAAG,QAAQ,KAAK;AAAA,UAClE;AACA,iBAAO;AAAA,QACT;AAYA,iBAAS,UAAU,OAAO,WAAW;AACnC,cAAIA,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM;AAEvC,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,UAAU,MAAMA,MAAK,GAAGA,QAAO,KAAK,GAAG;AACzC,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AASA,YAAI,YAAY,aAAa,QAAQ;AASrC,iBAAS,aAAa,QAAQ;AAC5B,iBAAO,OAAO,MAAM,EAAE;AAAA,QACxB;AASA,iBAAS,WAAW,QAAQ;AAC1B,iBAAO,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,QACvC;AAaA,iBAAS,YAAY,YAAY,WAAW,UAAU;AACpD,cAAI;AACJ,mBAAS,YAAY,SAAS,OAAO,KAAKC,aAAY;AACpD,gBAAI,UAAU,OAAO,KAAKA,WAAU,GAAG;AACrC,uBAAS;AACT,qBAAO;AAAA,YACT;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AAaA,iBAAS,cAAc,OAAO,WAAW,WAAW,WAAW;AAC7D,cAAI,SAAS,MAAM,QACfD,SAAQ,aAAa,YAAY,IAAI;AAEzC,iBAAQ,YAAYA,WAAU,EAAEA,SAAQ,QAAS;AAC/C,gBAAI,UAAU,MAAMA,MAAK,GAAGA,QAAO,KAAK,GAAG;AACzC,qBAAOA;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,YAAY,OAAO,OAAO,WAAW;AAC5C,iBAAO,UAAU,QACb,cAAc,OAAO,OAAO,SAAS,IACrC,cAAc,OAAO,WAAW,SAAS;AAAA,QAC/C;AAYA,iBAAS,gBAAgB,OAAO,OAAO,WAAW,YAAY;AAC5D,cAAIA,SAAQ,YAAY,GACpB,SAAS,MAAM;AAEnB,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,WAAW,MAAMA,MAAK,GAAG,KAAK,GAAG;AACnC,qBAAOA;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AASA,iBAAS,UAAU,OAAO;AACxB,iBAAO,UAAU;AAAA,QACnB;AAWA,iBAAS,SAAS,OAAO,UAAU;AACjC,cAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,iBAAO,SAAU,QAAQ,OAAO,QAAQ,IAAI,SAAU;AAAA,QACxD;AASA,iBAAS,aAAa,KAAK;AACzB,iBAAO,SAAS,QAAQ;AACtB,mBAAO,UAAU,OAAOP,aAAY,OAAO,GAAG;AAAA,UAChD;AAAA,QACF;AASA,iBAAS,eAAe,QAAQ;AAC9B,iBAAO,SAAS,KAAK;AACnB,mBAAO,UAAU,OAAOA,aAAY,OAAO,GAAG;AAAA,UAChD;AAAA,QACF;AAeA,iBAAS,WAAW,YAAY,UAAU,aAAa,WAAW,UAAU;AAC1E,mBAAS,YAAY,SAAS,OAAOO,QAAOC,aAAY;AACtD,0BAAc,aACT,YAAY,OAAO,SACpB,SAAS,aAAa,OAAOD,QAAOC,WAAU;AAAA,UACpD,CAAC;AACD,iBAAO;AAAA,QACT;AAYA,iBAAS,WAAW,OAAO,UAAU;AACnC,cAAI,SAAS,MAAM;AAEnB,gBAAM,KAAK,QAAQ;AACnB,iBAAO,UAAU;AACf,kBAAM,MAAM,IAAI,MAAM,MAAM,EAAE;AAAA,UAChC;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,QAAQ,OAAO,UAAU;AAChC,cAAI,QACAD,SAAQ,IACR,SAAS,MAAM;AAEnB,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,UAAU,SAAS,MAAMA,MAAK,CAAC;AACnC,gBAAI,YAAYP,YAAW;AACzB,uBAAS,WAAWA,aAAY,UAAW,SAAS;AAAA,YACtD;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,UAAUS,IAAG,UAAU;AAC9B,cAAIF,SAAQ,IACR,SAAS,MAAME,EAAC;AAEpB,iBAAO,EAAEF,SAAQE,IAAG;AAClB,mBAAOF,MAAK,IAAI,SAASA,MAAK;AAAA,UAChC;AACA,iBAAO;AAAA,QACT;AAWA,iBAAS,YAAY,QAAQ,OAAO;AAClC,iBAAO,SAAS,OAAO,SAAS,KAAK;AACnC,mBAAO,CAAC,KAAK,OAAO,GAAG,CAAC;AAAA,UAC1B,CAAC;AAAA,QACH;AASA,iBAAS,SAAS,QAAQ;AACxB,iBAAO,SACH,OAAO,MAAM,GAAG,gBAAgB,MAAM,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE,IACpE;AAAA,QACN;AASA,iBAAS,UAAU,MAAM;AACvB,iBAAO,SAAS,OAAO;AACrB,mBAAO,KAAK,KAAK;AAAA,UACnB;AAAA,QACF;AAYA,iBAAS,WAAW,QAAQ,OAAO;AACjC,iBAAO,SAAS,OAAO,SAAS,KAAK;AACnC,mBAAO,OAAO,GAAG;AAAA,UACnB,CAAC;AAAA,QACH;AAUA,iBAAS,SAASG,QAAO,KAAK;AAC5B,iBAAOA,OAAM,IAAI,GAAG;AAAA,QACtB;AAWA,iBAAS,gBAAgB,YAAY,YAAY;AAC/C,cAAIH,SAAQ,IACR,SAAS,WAAW;AAExB,iBAAO,EAAEA,SAAQ,UAAU,YAAY,YAAY,WAAWA,MAAK,GAAG,CAAC,IAAI,IAAI;AAAA,UAAC;AAChF,iBAAOA;AAAA,QACT;AAWA,iBAAS,cAAc,YAAY,YAAY;AAC7C,cAAIA,SAAQ,WAAW;AAEvB,iBAAOA,YAAW,YAAY,YAAY,WAAWA,MAAK,GAAG,CAAC,IAAI,IAAI;AAAA,UAAC;AACvE,iBAAOA;AAAA,QACT;AAUA,iBAAS,aAAa,OAAO,aAAa;AACxC,cAAI,SAAS,MAAM,QACf,SAAS;AAEb,iBAAO,UAAU;AACf,gBAAI,MAAM,MAAM,MAAM,aAAa;AACjC,gBAAE;AAAA,YACJ;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAUA,YAAI,eAAe,eAAe,eAAe;AASjD,YAAI,iBAAiB,eAAe,WAAW;AAS/C,iBAAS,iBAAiB,KAAK;AAC7B,iBAAO,OAAO,cAAc,GAAG;AAAA,QACjC;AAUA,iBAAS,SAAS,QAAQ,KAAK;AAC7B,iBAAO,UAAU,OAAOP,aAAY,OAAO,GAAG;AAAA,QAChD;AASA,iBAAS,WAAW,QAAQ;AAC1B,iBAAO,aAAa,KAAK,MAAM;AAAA,QACjC;AASA,iBAAS,eAAe,QAAQ;AAC9B,iBAAO,iBAAiB,KAAK,MAAM;AAAA,QACrC;AASA,iBAAS,gBAAgB,UAAU;AACjC,cAAI,MACA,SAAS,CAAC;AAEd,iBAAO,EAAE,OAAO,SAAS,KAAK,GAAG,MAAM;AACrC,mBAAO,KAAK,KAAK,KAAK;AAAA,UACxB;AACA,iBAAO;AAAA,QACT;AASA,iBAAS,WAAWW,MAAK;AACvB,cAAIJ,SAAQ,IACR,SAAS,MAAMI,KAAI,IAAI;AAE3B,UAAAA,KAAI,QAAQ,SAAS,OAAO,KAAK;AAC/B,mBAAO,EAAEJ,MAAK,IAAI,CAAC,KAAK,KAAK;AAAA,UAC/B,CAAC;AACD,iBAAO;AAAA,QACT;AAUA,iBAAS,QAAQ,MAAM,WAAW;AAChC,iBAAO,SAAS,KAAK;AACnB,mBAAO,KAAK,UAAU,GAAG,CAAC;AAAA,UAC5B;AAAA,QACF;AAWA,iBAAS,eAAe,OAAO,aAAa;AAC1C,cAAIA,SAAQ,IACR,SAAS,MAAM,QACf,WAAW,GACX,SAAS,CAAC;AAEd,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,QAAQ,MAAMA,MAAK;AACvB,gBAAI,UAAU,eAAe,UAAU,aAAa;AAClD,oBAAMA,MAAK,IAAI;AACf,qBAAO,UAAU,IAAIA;AAAA,YACvB;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AASA,iBAAS,WAAWK,MAAK;AACvB,cAAIL,SAAQ,IACR,SAAS,MAAMK,KAAI,IAAI;AAE3B,UAAAA,KAAI,QAAQ,SAAS,OAAO;AAC1B,mBAAO,EAAEL,MAAK,IAAI;AAAA,UACpB,CAAC;AACD,iBAAO;AAAA,QACT;AASA,iBAAS,WAAWK,MAAK;AACvB,cAAIL,SAAQ,IACR,SAAS,MAAMK,KAAI,IAAI;AAE3B,UAAAA,KAAI,QAAQ,SAAS,OAAO;AAC1B,mBAAO,EAAEL,MAAK,IAAI,CAAC,OAAO,KAAK;AAAA,UACjC,CAAC;AACD,iBAAO;AAAA,QACT;AAYA,iBAAS,cAAc,OAAO,OAAO,WAAW;AAC9C,cAAIA,SAAQ,YAAY,GACpB,SAAS,MAAM;AAEnB,iBAAO,EAAEA,SAAQ,QAAQ;AACvB,gBAAI,MAAMA,MAAK,MAAM,OAAO;AAC1B,qBAAOA;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAYA,iBAAS,kBAAkB,OAAO,OAAO,WAAW;AAClD,cAAIA,SAAQ,YAAY;AACxB,iBAAOA,UAAS;AACd,gBAAI,MAAMA,MAAK,MAAM,OAAO;AAC1B,qBAAOA;AAAA,YACT;AAAA,UACF;AACA,iBAAOA;AAAA,QACT;AASA,iBAAS,WAAW,QAAQ;AAC1B,iBAAO,WAAW,MAAM,IACpB,YAAY,MAAM,IAClB,UAAU,MAAM;AAAA,QACtB;AASA,iBAAS,cAAc,QAAQ;AAC7B,iBAAO,WAAW,MAAM,IACpB,eAAe,MAAM,IACrB,aAAa,MAAM;AAAA,QACzB;AAUA,iBAAS,gBAAgB,QAAQ;AAC/B,cAAIA,SAAQ,OAAO;AAEnB,iBAAOA,YAAW,aAAa,KAAK,OAAO,OAAOA,MAAK,CAAC,GAAG;AAAA,UAAC;AAC5D,iBAAOA;AAAA,QACT;AASA,YAAI,mBAAmB,eAAe,aAAa;AASnD,iBAAS,YAAY,QAAQ;AAC3B,cAAI,SAAS,UAAU,YAAY;AACnC,iBAAO,UAAU,KAAK,MAAM,GAAG;AAC7B,cAAE;AAAA,UACJ;AACA,iBAAO;AAAA,QACT;AASA,iBAAS,eAAe,QAAQ;AAC9B,iBAAO,OAAO,MAAM,SAAS,KAAK,CAAC;AAAA,QACrC;AASA,iBAAS,aAAa,QAAQ;AAC5B,iBAAO,OAAO,MAAM,aAAa,KAAK,CAAC;AAAA,QACzC;AAiCA,YAAIM,iBAAgB,SAASA,cAAa,SAAS;AACjD,oBAAU,WAAW,OAAO,OAAOC,IAAE,SAAS,KAAK,OAAO,GAAG,SAASA,IAAE,KAAK,MAAM,YAAY,CAAC;AAGhG,cAAIC,SAAQ,QAAQ,OAChBC,QAAO,QAAQ,MACfC,SAAQ,QAAQ,OAChBC,YAAW,QAAQ,UACnBC,QAAO,QAAQ,MACfC,UAAS,QAAQ,QACjBC,UAAS,QAAQ,QACjBC,UAAS,QAAQ,QACjBC,aAAY,QAAQ;AAGxB,cAAI,aAAaR,OAAM,WACnB,YAAYG,UAAS,WACrB,cAAcE,QAAO;AAGzB,cAAI,aAAa,QAAQ,oBAAoB;AAG7C,cAAI,eAAe,UAAU;AAG7B,cAAI,iBAAiB,YAAY;AAGjC,cAAI,YAAY;AAGhB,cAAI,cAAc,WAAW;AAC3B,gBAAII,OAAM,SAAS,KAAK,cAAc,WAAW,QAAQ,WAAW,KAAK,YAAY,EAAE;AACvF,mBAAOA,OAAO,mBAAmBA,OAAO;AAAA,UAC1C,GAAE;AAOF,cAAI,uBAAuB,YAAY;AAGvC,cAAI,mBAAmB,aAAa,KAAKJ,OAAM;AAG/C,cAAI,UAAU,KAAK;AAGnB,cAAI,aAAaC;AAAA,YAAO,MACtB,aAAa,KAAK,cAAc,EAAE,QAAQ,cAAc,MAAM,EAC7D,QAAQ,0DAA0D,OAAO,IAAI;AAAA,UAChF;AAGA,cAAII,UAAS,gBAAgB,QAAQ,SAASzB,YAC1C0B,UAAS,QAAQ,QACjBC,cAAa,QAAQ,YACrB,cAAcF,UAASA,QAAO,cAAczB,YAC5C,eAAe,QAAQoB,QAAO,gBAAgBA,OAAM,GACpD,eAAeA,QAAO,QACtB,uBAAuB,YAAY,sBACnC,SAAS,WAAW,QACpB,mBAAmBM,UAASA,QAAO,qBAAqB1B,YACxD,cAAc0B,UAASA,QAAO,WAAW1B,YACzC,iBAAiB0B,UAASA,QAAO,cAAc1B;AAEnD,cAAI,kBAAkB,WAAW;AAC/B,gBAAI;AACF,kBAAI,OAAO,UAAUoB,SAAQ,gBAAgB;AAC7C,mBAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACf,qBAAO;AAAA,YACT,SAASd,IAAG;AAAA,YAAC;AAAA,UACf,GAAE;AAGF,cAAI,kBAAkB,QAAQ,iBAAiB,KAAK,gBAAgB,QAAQ,cACxE,SAASU,SAAQA,MAAK,QAAQ,KAAK,KAAK,OAAOA,MAAK,KACpD,gBAAgB,QAAQ,eAAe,KAAK,cAAc,QAAQ;AAGtE,cAAI,aAAaG,MAAK,MAClB,cAAcA,MAAK,OACnB,mBAAmBC,QAAO,uBAC1B,iBAAiBK,UAASA,QAAO,WAAWzB,YAC5C,iBAAiB,QAAQ,UACzB,aAAa,WAAW,MACxB,aAAa,QAAQoB,QAAO,MAAMA,OAAM,GACxC,YAAYD,MAAK,KACjB,YAAYA,MAAK,KACjB,YAAYH,MAAK,KACjB,iBAAiB,QAAQ,UACzB,eAAeG,MAAK,QACpB,gBAAgB,WAAW;AAG/B,cAAIS,YAAW,UAAU,SAAS,UAAU,GACxCC,OAAM,UAAU,SAAS,KAAK,GAC9BC,WAAU,UAAU,SAAS,SAAS,GACtCC,OAAM,UAAU,SAAS,KAAK,GAC9BC,WAAU,UAAU,SAAS,SAAS,GACtC,eAAe,UAAUZ,SAAQ,QAAQ;AAG7C,cAAI,UAAUY,YAAW,IAAIA;AAG7B,cAAI,YAAY,CAAC;AAGjB,cAAI,qBAAqB,SAASJ,SAAQ,GACtC,gBAAgB,SAASC,IAAG,GAC5B,oBAAoB,SAASC,QAAO,GACpC,gBAAgB,SAASC,IAAG,GAC5B,oBAAoB,SAASC,QAAO;AAGxC,cAAI,cAAcN,UAASA,QAAO,YAAY1B,YAC1C,gBAAgB,cAAc,YAAY,UAAUA,YACpD,iBAAiB,cAAc,YAAY,WAAWA;AAyH1D,mBAAS,OAAO,OAAO;AACrB,gBAAI,aAAa,KAAK,KAAK,CAACiC,SAAQ,KAAK,KAAK,EAAE,iBAAiB,cAAc;AAC7E,kBAAI,iBAAiB,eAAe;AAClC,uBAAO;AAAA,cACT;AACA,kBAAI,eAAe,KAAK,OAAO,aAAa,GAAG;AAC7C,uBAAO,aAAa,KAAK;AAAA,cAC3B;AAAA,YACF;AACA,mBAAO,IAAI,cAAc,KAAK;AAAA,UAChC;AAUA,cAAI,aAAc,4BAAW;AAC3B,qBAAS,SAAS;AAAA,YAAC;AACnB,mBAAO,SAAS,OAAO;AACrB,kBAAI,CAACC,UAAS,KAAK,GAAG;AACpB,uBAAO,CAAC;AAAA,cACV;AACA,kBAAI,cAAc;AAChB,uBAAO,aAAa,KAAK;AAAA,cAC3B;AACA,qBAAO,YAAY;AACnB,kBAAIC,UAAS,IAAI;AACjB,qBAAO,YAAYnC;AACnB,qBAAOmC;AAAA,YACT;AAAA,UACF,GAAE;AAOF,mBAAS,aAAa;AAAA,UAEtB;AASA,mBAAS,cAAc,OAAO,UAAU;AACtC,iBAAK,cAAc;AACnB,iBAAK,cAAc,CAAC;AACpB,iBAAK,YAAY,CAAC,CAAC;AACnB,iBAAK,YAAY;AACjB,iBAAK,aAAanC;AAAA,UACpB;AAWA,iBAAO,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQxB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQV,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQZ,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQf,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQZ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQT,KAAK;AAAA,YACP;AAAA,UACF;AAGA,iBAAO,YAAY,WAAW;AAC9B,iBAAO,UAAU,cAAc;AAE/B,wBAAc,YAAY,WAAW,WAAW,SAAS;AACzD,wBAAc,UAAU,cAAc;AAWtC,mBAAS,YAAY,OAAO;AAC1B,iBAAK,cAAc;AACnB,iBAAK,cAAc,CAAC;AACpB,iBAAK,UAAU;AACf,iBAAK,eAAe;AACpB,iBAAK,gBAAgB,CAAC;AACtB,iBAAK,gBAAgB;AACrB,iBAAK,YAAY,CAAC;AAAA,UACpB;AAUA,mBAAS,YAAY;AACnB,gBAAImC,UAAS,IAAI,YAAY,KAAK,WAAW;AAC7C,YAAAA,QAAO,cAAc,UAAU,KAAK,WAAW;AAC/C,YAAAA,QAAO,UAAU,KAAK;AACtB,YAAAA,QAAO,eAAe,KAAK;AAC3B,YAAAA,QAAO,gBAAgB,UAAU,KAAK,aAAa;AACnD,YAAAA,QAAO,gBAAgB,KAAK;AAC5B,YAAAA,QAAO,YAAY,UAAU,KAAK,SAAS;AAC3C,mBAAOA;AAAA,UACT;AAUA,mBAAS,cAAc;AACrB,gBAAI,KAAK,cAAc;AACrB,kBAAIA,UAAS,IAAI,YAAY,IAAI;AACjC,cAAAA,QAAO,UAAU;AACjB,cAAAA,QAAO,eAAe;AAAA,YACxB,OAAO;AACL,cAAAA,UAAS,KAAK,MAAM;AACpB,cAAAA,QAAO,WAAW;AAAA,YACpB;AACA,mBAAOA;AAAA,UACT;AAUA,mBAAS,YAAY;AACnB,gBAAI,QAAQ,KAAK,YAAY,MAAM,GAC/B,MAAM,KAAK,SACX,QAAQF,SAAQ,KAAK,GACrB,UAAU,MAAM,GAChB,YAAY,QAAQ,MAAM,SAAS,GACnC,OAAO,QAAQ,GAAG,WAAW,KAAK,SAAS,GAC3CG,SAAQ,KAAK,OACb,MAAM,KAAK,KACX,SAAS,MAAMA,QACf7B,SAAQ,UAAU,MAAO6B,SAAQ,GACjC,YAAY,KAAK,eACjB,aAAa,UAAU,QACvB,WAAW,GACX,YAAY,UAAU,QAAQ,KAAK,aAAa;AAEpD,gBAAI,CAAC,SAAU,CAAC,WAAW,aAAa,UAAU,aAAa,QAAS;AACtE,qBAAO,iBAAiB,OAAO,KAAK,WAAW;AAAA,YACjD;AACA,gBAAID,UAAS,CAAC;AAEd;AACA,qBAAO,YAAY,WAAW,WAAW;AACvC,gBAAA5B,UAAS;AAET,oBAAI,YAAY,IACZ,QAAQ,MAAMA,MAAK;AAEvB,uBAAO,EAAE,YAAY,YAAY;AAC/B,sBAAI,OAAO,UAAU,SAAS,GAC1B8B,YAAW,KAAK,UAChB,OAAO,KAAK,MACZ,WAAWA,UAAS,KAAK;AAE7B,sBAAI,QAAQ,eAAe;AACzB,4BAAQ;AAAA,kBACV,WAAW,CAAC,UAAU;AACpB,wBAAI,QAAQ,kBAAkB;AAC5B,+BAAS;AAAA,oBACX,OAAO;AACL,4BAAM;AAAA,oBACR;AAAA,kBACF;AAAA,gBACF;AACA,gBAAAF,QAAO,UAAU,IAAI;AAAA,cACvB;AACA,mBAAOA;AAAA,UACT;AAGA,sBAAY,YAAY,WAAW,WAAW,SAAS;AACvD,sBAAY,UAAU,cAAc;AAWpC,mBAASG,MAAK,SAAS;AACrB,gBAAI/B,SAAQ,IACR,SAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,iBAAK,MAAM;AACX,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,QAAQA,MAAK;AACzB,mBAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,YAC7B;AAAA,UACF;AASA,mBAAS,YAAY;AACnB,iBAAK,WAAW,eAAe,aAAa,IAAI,IAAI,CAAC;AACrD,iBAAK,OAAO;AAAA,UACd;AAYA,mBAAS,WAAW,KAAK;AACvB,gBAAI4B,UAAS,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,SAAS,GAAG;AACtD,iBAAK,QAAQA,UAAS,IAAI;AAC1B,mBAAOA;AAAA,UACT;AAWA,mBAAS,QAAQ,KAAK;AACpB,gBAAI,OAAO,KAAK;AAChB,gBAAI,cAAc;AAChB,kBAAIA,UAAS,KAAK,GAAG;AACrB,qBAAOA,YAAW,iBAAiBnC,aAAYmC;AAAA,YACjD;AACA,mBAAO,eAAe,KAAK,MAAM,GAAG,IAAI,KAAK,GAAG,IAAInC;AAAA,UACtD;AAWA,mBAAS,QAAQ,KAAK;AACpB,gBAAI,OAAO,KAAK;AAChB,mBAAO,eAAgB,KAAK,GAAG,MAAMA,aAAa,eAAe,KAAK,MAAM,GAAG;AAAA,UACjF;AAYA,mBAAS,QAAQ,KAAK,OAAO;AAC3B,gBAAI,OAAO,KAAK;AAChB,iBAAK,QAAQ,KAAK,IAAI,GAAG,IAAI,IAAI;AACjC,iBAAK,GAAG,IAAK,gBAAgB,UAAUA,aAAa,iBAAiB;AACrE,mBAAO;AAAA,UACT;AAGA,UAAAsC,MAAK,UAAU,QAAQ;AACvB,UAAAA,MAAK,UAAU,QAAQ,IAAI;AAC3B,UAAAA,MAAK,UAAU,MAAM;AACrB,UAAAA,MAAK,UAAU,MAAM;AACrB,UAAAA,MAAK,UAAU,MAAM;AAWrB,mBAAS,UAAU,SAAS;AAC1B,gBAAI/B,SAAQ,IACR,SAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,iBAAK,MAAM;AACX,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,QAAQA,MAAK;AACzB,mBAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,YAC7B;AAAA,UACF;AASA,mBAAS,iBAAiB;AACxB,iBAAK,WAAW,CAAC;AACjB,iBAAK,OAAO;AAAA,UACd;AAWA,mBAAS,gBAAgB,KAAK;AAC5B,gBAAI,OAAO,KAAK,UACZA,SAAQ,aAAa,MAAM,GAAG;AAElC,gBAAIA,SAAQ,GAAG;AACb,qBAAO;AAAA,YACT;AACA,gBAAI,YAAY,KAAK,SAAS;AAC9B,gBAAIA,UAAS,WAAW;AACtB,mBAAK,IAAI;AAAA,YACX,OAAO;AACL,qBAAO,KAAK,MAAMA,QAAO,CAAC;AAAA,YAC5B;AACA,cAAE,KAAK;AACP,mBAAO;AAAA,UACT;AAWA,mBAAS,aAAa,KAAK;AACzB,gBAAI,OAAO,KAAK,UACZA,SAAQ,aAAa,MAAM,GAAG;AAElC,mBAAOA,SAAQ,IAAIP,aAAY,KAAKO,MAAK,EAAE,CAAC;AAAA,UAC9C;AAWA,mBAAS,aAAa,KAAK;AACzB,mBAAO,aAAa,KAAK,UAAU,GAAG,IAAI;AAAA,UAC5C;AAYA,mBAAS,aAAa,KAAK,OAAO;AAChC,gBAAI,OAAO,KAAK,UACZA,SAAQ,aAAa,MAAM,GAAG;AAElC,gBAAIA,SAAQ,GAAG;AACb,gBAAE,KAAK;AACP,mBAAK,KAAK,CAAC,KAAK,KAAK,CAAC;AAAA,YACxB,OAAO;AACL,mBAAKA,MAAK,EAAE,CAAC,IAAI;AAAA,YACnB;AACA,mBAAO;AAAA,UACT;AAGA,oBAAU,UAAU,QAAQ;AAC5B,oBAAU,UAAU,QAAQ,IAAI;AAChC,oBAAU,UAAU,MAAM;AAC1B,oBAAU,UAAU,MAAM;AAC1B,oBAAU,UAAU,MAAM;AAW1B,mBAAS,SAAS,SAAS;AACzB,gBAAIA,SAAQ,IACR,SAAS,WAAW,OAAO,IAAI,QAAQ;AAE3C,iBAAK,MAAM;AACX,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,QAAQA,MAAK;AACzB,mBAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,YAC7B;AAAA,UACF;AASA,mBAAS,gBAAgB;AACvB,iBAAK,OAAO;AACZ,iBAAK,WAAW;AAAA,cACd,QAAQ,IAAI+B;AAAA,cACZ,OAAO,KAAKT,QAAO;AAAA,cACnB,UAAU,IAAIS;AAAA,YAChB;AAAA,UACF;AAWA,mBAAS,eAAe,KAAK;AAC3B,gBAAIH,UAAS,WAAW,MAAM,GAAG,EAAE,QAAQ,EAAE,GAAG;AAChD,iBAAK,QAAQA,UAAS,IAAI;AAC1B,mBAAOA;AAAA,UACT;AAWA,mBAAS,YAAY,KAAK;AACxB,mBAAO,WAAW,MAAM,GAAG,EAAE,IAAI,GAAG;AAAA,UACtC;AAWA,mBAAS,YAAY,KAAK;AACxB,mBAAO,WAAW,MAAM,GAAG,EAAE,IAAI,GAAG;AAAA,UACtC;AAYA,mBAAS,YAAY,KAAK,OAAO;AAC/B,gBAAI,OAAO,WAAW,MAAM,GAAG,GAC3BI,QAAO,KAAK;AAEhB,iBAAK,IAAI,KAAK,KAAK;AACnB,iBAAK,QAAQ,KAAK,QAAQA,QAAO,IAAI;AACrC,mBAAO;AAAA,UACT;AAGA,mBAAS,UAAU,QAAQ;AAC3B,mBAAS,UAAU,QAAQ,IAAI;AAC/B,mBAAS,UAAU,MAAM;AACzB,mBAAS,UAAU,MAAM;AACzB,mBAAS,UAAU,MAAM;AAYzB,mBAAS,SAASC,SAAQ;AACxB,gBAAIjC,SAAQ,IACR,SAASiC,WAAU,OAAO,IAAIA,QAAO;AAEzC,iBAAK,WAAW,IAAI;AACpB,mBAAO,EAAEjC,SAAQ,QAAQ;AACvB,mBAAK,IAAIiC,QAAOjC,MAAK,CAAC;AAAA,YACxB;AAAA,UACF;AAYA,mBAAS,YAAY,OAAO;AAC1B,iBAAK,SAAS,IAAI,OAAO,cAAc;AACvC,mBAAO;AAAA,UACT;AAWA,mBAAS,YAAY,OAAO;AAC1B,mBAAO,KAAK,SAAS,IAAI,KAAK;AAAA,UAChC;AAGA,mBAAS,UAAU,MAAM,SAAS,UAAU,OAAO;AACnD,mBAAS,UAAU,MAAM;AAWzB,mBAAS,MAAM,SAAS;AACtB,gBAAI,OAAO,KAAK,WAAW,IAAI,UAAU,OAAO;AAChD,iBAAK,OAAO,KAAK;AAAA,UACnB;AASA,mBAAS,aAAa;AACpB,iBAAK,WAAW,IAAI;AACpB,iBAAK,OAAO;AAAA,UACd;AAWA,mBAAS,YAAY,KAAK;AACxB,gBAAI,OAAO,KAAK,UACZ4B,UAAS,KAAK,QAAQ,EAAE,GAAG;AAE/B,iBAAK,OAAO,KAAK;AACjB,mBAAOA;AAAA,UACT;AAWA,mBAAS,SAAS,KAAK;AACrB,mBAAO,KAAK,SAAS,IAAI,GAAG;AAAA,UAC9B;AAWA,mBAAS,SAAS,KAAK;AACrB,mBAAO,KAAK,SAAS,IAAI,GAAG;AAAA,UAC9B;AAYA,mBAAS,SAAS,KAAK,OAAO;AAC5B,gBAAI,OAAO,KAAK;AAChB,gBAAI,gBAAgB,WAAW;AAC7B,kBAAI,QAAQ,KAAK;AACjB,kBAAI,CAACN,QAAQ,MAAM,SAAS,mBAAmB,GAAI;AACjD,sBAAM,KAAK,CAAC,KAAK,KAAK,CAAC;AACvB,qBAAK,OAAO,EAAE,KAAK;AACnB,uBAAO;AAAA,cACT;AACA,qBAAO,KAAK,WAAW,IAAI,SAAS,KAAK;AAAA,YAC3C;AACA,iBAAK,IAAI,KAAK,KAAK;AACnB,iBAAK,OAAO,KAAK;AACjB,mBAAO;AAAA,UACT;AAGA,gBAAM,UAAU,QAAQ;AACxB,gBAAM,UAAU,QAAQ,IAAI;AAC5B,gBAAM,UAAU,MAAM;AACtB,gBAAM,UAAU,MAAM;AACtB,gBAAM,UAAU,MAAM;AAYtB,mBAAS,cAAc,OAAO,WAAW;AACvC,gBAAI,QAAQI,SAAQ,KAAK,GACrB,QAAQ,CAAC,SAAS,YAAY,KAAK,GACnC,SAAS,CAAC,SAAS,CAAC,SAASQ,UAAS,KAAK,GAC3C,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,aAAa,KAAK,GAC1D,cAAc,SAAS,SAAS,UAAU,QAC1CN,UAAS,cAAc,UAAU,MAAM,QAAQb,OAAM,IAAI,CAAC,GAC1D,SAASa,QAAO;AAEpB,qBAAS,OAAO,OAAO;AACrB,mBAAK,aAAa,eAAe,KAAK,OAAO,GAAG,MAC5C,EAAE;AAAA,eAEC,OAAO;AAAA,cAEN,WAAW,OAAO,YAAY,OAAO;AAAA,cAErC,WAAW,OAAO,YAAY,OAAO,gBAAgB,OAAO;AAAA,cAE7D,QAAQ,KAAK,MAAM,KAClB;AACN,gBAAAA,QAAO,KAAK,GAAG;AAAA,cACjB;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AASA,mBAAS,YAAY,OAAO;AAC1B,gBAAI,SAAS,MAAM;AACnB,mBAAO,SAAS,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,IAAInC;AAAA,UACrD;AAUA,mBAAS,gBAAgB,OAAOS,IAAG;AACjC,mBAAO,YAAY,UAAU,KAAK,GAAG,UAAUA,IAAG,GAAG,MAAM,MAAM,CAAC;AAAA,UACpE;AASA,mBAAS,aAAa,OAAO;AAC3B,mBAAO,YAAY,UAAU,KAAK,CAAC;AAAA,UACrC;AAWA,mBAAS,iBAAiB,QAAQ,KAAK,OAAO;AAC5C,gBAAK,UAAUT,cAAa,CAAC0C,IAAG,OAAO,GAAG,GAAG,KAAK,KAC7C,UAAU1C,cAAa,EAAE,OAAO,SAAU;AAC7C,8BAAgB,QAAQ,KAAK,KAAK;AAAA,YACpC;AAAA,UACF;AAYA,mBAAS,YAAY,QAAQ,KAAK,OAAO;AACvC,gBAAI,WAAW,OAAO,GAAG;AACzB,gBAAI,EAAE,eAAe,KAAK,QAAQ,GAAG,KAAK0C,IAAG,UAAU,KAAK,MACvD,UAAU1C,cAAa,EAAE,OAAO,SAAU;AAC7C,8BAAgB,QAAQ,KAAK,KAAK;AAAA,YACpC;AAAA,UACF;AAUA,mBAAS,aAAa,OAAO,KAAK;AAChC,gBAAI,SAAS,MAAM;AACnB,mBAAO,UAAU;AACf,kBAAI0C,IAAG,MAAM,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG;AAC7B,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAaA,mBAAS,eAAe,YAAY,QAAQL,WAAU,aAAa;AACjE,qBAAS,YAAY,SAAS,OAAO,KAAK7B,aAAY;AACpD,qBAAO,aAAa,OAAO6B,UAAS,KAAK,GAAG7B,WAAU;AAAA,YACxD,CAAC;AACD,mBAAO;AAAA,UACT;AAWA,mBAAS,WAAW,QAAQ,QAAQ;AAClC,mBAAO,UAAU,WAAW,QAAQ,KAAK,MAAM,GAAG,MAAM;AAAA,UAC1D;AAWA,mBAAS,aAAa,QAAQ,QAAQ;AACpC,mBAAO,UAAU,WAAW,QAAQ,OAAO,MAAM,GAAG,MAAM;AAAA,UAC5D;AAWA,mBAAS,gBAAgB,QAAQ,KAAK,OAAO;AAC3C,gBAAI,OAAO,eAAe,gBAAgB;AACxC,6BAAe,QAAQ,KAAK;AAAA,gBAC1B,gBAAgB;AAAA,gBAChB,cAAc;AAAA,gBACd,SAAS;AAAA,gBACT,YAAY;AAAA,cACd,CAAC;AAAA,YACH,OAAO;AACL,qBAAO,GAAG,IAAI;AAAA,YAChB;AAAA,UACF;AAUA,mBAAS,OAAO,QAAQ,OAAO;AAC7B,gBAAID,SAAQ,IACR,SAAS,MAAM,QACf4B,UAASpB,OAAM,MAAM,GACrB4B,QAAO,UAAU;AAErB,mBAAO,EAAEpC,SAAQ,QAAQ;AACvB,cAAA4B,QAAO5B,MAAK,IAAIoC,QAAO3C,aAAY4C,KAAI,QAAQ,MAAMrC,MAAK,CAAC;AAAA,YAC7D;AACA,mBAAO4B;AAAA,UACT;AAWA,mBAAS,UAAU,QAAQ,OAAO,OAAO;AACvC,gBAAI,WAAW,QAAQ;AACrB,kBAAI,UAAUnC,YAAW;AACvB,yBAAS,UAAU,QAAQ,SAAS;AAAA,cACtC;AACA,kBAAI,UAAUA,YAAW;AACvB,yBAAS,UAAU,QAAQ,SAAS;AAAA,cACtC;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAkBA,mBAAS,UAAU,OAAO,SAAS,YAAY,KAAK,QAAQ,OAAO;AACjE,gBAAImC,SACA,SAAS,UAAU,iBACnB,SAAS,UAAU,iBACnB,SAAS,UAAU;AAEvB,gBAAI,YAAY;AACd,cAAAA,UAAS,SAAS,WAAW,OAAO,KAAK,QAAQ,KAAK,IAAI,WAAW,KAAK;AAAA,YAC5E;AACA,gBAAIA,YAAWnC,YAAW;AACxB,qBAAOmC;AAAA,YACT;AACA,gBAAI,CAACD,UAAS,KAAK,GAAG;AACpB,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQD,SAAQ,KAAK;AACzB,gBAAI,OAAO;AACT,cAAAE,UAAS,eAAe,KAAK;AAC7B,kBAAI,CAAC,QAAQ;AACX,uBAAO,UAAU,OAAOA,OAAM;AAAA,cAChC;AAAA,YACF,OAAO;AACL,kBAAI,MAAM,OAAO,KAAK,GAClB,SAAS,OAAO,WAAW,OAAO;AAEtC,kBAAIM,UAAS,KAAK,GAAG;AACnB,uBAAO,YAAY,OAAO,MAAM;AAAA,cAClC;AACA,kBAAI,OAAO,aAAa,OAAO,WAAY,UAAU,CAAC,QAAS;AAC7D,gBAAAN,UAAU,UAAU,SAAU,CAAC,IAAI,gBAAgB,KAAK;AACxD,oBAAI,CAAC,QAAQ;AACX,yBAAO,SACH,cAAc,OAAO,aAAaA,SAAQ,KAAK,CAAC,IAChD,YAAY,OAAO,WAAWA,SAAQ,KAAK,CAAC;AAAA,gBAClD;AAAA,cACF,OAAO;AACL,oBAAI,CAAC,cAAc,GAAG,GAAG;AACvB,yBAAO,SAAS,QAAQ,CAAC;AAAA,gBAC3B;AACA,gBAAAA,UAAS,eAAe,OAAO,KAAK,MAAM;AAAA,cAC5C;AAAA,YACF;AAEA,sBAAU,QAAQ,IAAI;AACtB,gBAAI,UAAU,MAAM,IAAI,KAAK;AAC7B,gBAAI,SAAS;AACX,qBAAO;AAAA,YACT;AACA,kBAAM,IAAI,OAAOA,OAAM;AAEvB,gBAAI,MAAM,KAAK,GAAG;AAChB,oBAAM,QAAQ,SAAS,UAAU;AAC/B,gBAAAA,QAAO,IAAI,UAAU,UAAU,SAAS,YAAY,UAAU,OAAO,KAAK,CAAC;AAAA,cAC7E,CAAC;AAAA,YACH,WAAW,MAAM,KAAK,GAAG;AACvB,oBAAM,QAAQ,SAAS,UAAUU,MAAK;AACpC,gBAAAV,QAAO,IAAIU,MAAK,UAAU,UAAU,SAAS,YAAYA,MAAK,OAAO,KAAK,CAAC;AAAA,cAC7E,CAAC;AAAA,YACH;AAEA,gBAAI,WAAW,SACV,SAAS,eAAe,aACxB,SAAS,SAAS;AAEvB,gBAAI,QAAQ,QAAQ7C,aAAY,SAAS,KAAK;AAC9C,sBAAU,SAAS,OAAO,SAAS,UAAU6C,MAAK;AAChD,kBAAI,OAAO;AACT,gBAAAA,OAAM;AACN,2BAAW,MAAMA,IAAG;AAAA,cACtB;AAEA,0BAAYV,SAAQU,MAAK,UAAU,UAAU,SAAS,YAAYA,MAAK,OAAO,KAAK,CAAC;AAAA,YACtF,CAAC;AACD,mBAAOV;AAAA,UACT;AASA,mBAAS,aAAa,QAAQ;AAC5B,gBAAI,QAAQ,KAAK,MAAM;AACvB,mBAAO,SAAS,QAAQ;AACtB,qBAAO,eAAe,QAAQ,QAAQ,KAAK;AAAA,YAC7C;AAAA,UACF;AAUA,mBAAS,eAAe,QAAQ,QAAQ,OAAO;AAC7C,gBAAI,SAAS,MAAM;AACnB,gBAAI,UAAU,MAAM;AAClB,qBAAO,CAAC;AAAA,YACV;AACA,qBAASf,QAAO,MAAM;AACtB,mBAAO,UAAU;AACf,kBAAI,MAAM,MAAM,MAAM,GAClB,YAAY,OAAO,GAAG,GACtB,QAAQ,OAAO,GAAG;AAEtB,kBAAK,UAAUpB,cAAa,EAAE,OAAO,WAAY,CAAC,UAAU,KAAK,GAAG;AAClE,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAYA,mBAAS,UAAU,MAAM,MAAM,MAAM;AACnC,gBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAM,IAAIuB,WAAU,eAAe;AAAA,YACrC;AACA,mBAAOuB,YAAW,WAAW;AAAE,mBAAK,MAAM9C,YAAW,IAAI;AAAA,YAAG,GAAG,IAAI;AAAA,UACrE;AAaA,mBAAS,eAAe,OAAOwC,SAAQH,WAAU,YAAY;AAC3D,gBAAI9B,SAAQ,IACRwC,YAAW,eACX,WAAW,MACX,SAAS,MAAM,QACfZ,UAAS,CAAC,GACV,eAAeK,QAAO;AAE1B,gBAAI,CAAC,QAAQ;AACX,qBAAOL;AAAA,YACT;AACA,gBAAIE,WAAU;AACZ,cAAAG,UAAS,SAASA,SAAQ,UAAUH,SAAQ,CAAC;AAAA,YAC/C;AACA,gBAAI,YAAY;AACd,cAAAU,YAAW;AACX,yBAAW;AAAA,YACb,WACSP,QAAO,UAAU,kBAAkB;AAC1C,cAAAO,YAAW;AACX,yBAAW;AACX,cAAAP,UAAS,IAAI,SAASA,OAAM;AAAA,YAC9B;AACA;AACA,qBAAO,EAAEjC,SAAQ,QAAQ;AACvB,oBAAI,QAAQ,MAAMA,MAAK,GACnB,WAAW8B,aAAY,OAAO,QAAQA,UAAS,KAAK;AAExD,wBAAS,cAAc,UAAU,IAAK,QAAQ;AAC9C,oBAAI,YAAY,aAAa,UAAU;AACrC,sBAAI,cAAc;AAClB,yBAAO,eAAe;AACpB,wBAAIG,QAAO,WAAW,MAAM,UAAU;AACpC,+BAAS;AAAA,oBACX;AAAA,kBACF;AACA,kBAAAL,QAAO,KAAK,KAAK;AAAA,gBACnB,WACS,CAACY,UAASP,SAAQ,UAAU,UAAU,GAAG;AAChD,kBAAAL,QAAO,KAAK,KAAK;AAAA,gBACnB;AAAA,cACF;AACA,mBAAOA;AAAA,UACT;AAUA,cAAI,WAAW,eAAe,UAAU;AAUxC,cAAI,gBAAgB,eAAe,iBAAiB,IAAI;AAWxD,mBAAS,UAAU,YAAY,WAAW;AACxC,gBAAIA,UAAS;AACb,qBAAS,YAAY,SAAS,OAAO5B,QAAOC,aAAY;AACtD,cAAA2B,UAAS,CAAC,CAAC,UAAU,OAAO5B,QAAOC,WAAU;AAC7C,qBAAO2B;AAAA,YACT,CAAC;AACD,mBAAOA;AAAA,UACT;AAYA,mBAAS,aAAa,OAAOE,WAAU,YAAY;AACjD,gBAAI9B,SAAQ,IACR,SAAS,MAAM;AAEnB,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,MAAMA,MAAK,GACnB,UAAU8B,UAAS,KAAK;AAE5B,kBAAI,WAAW,SAAS,aAAarC,aAC5B,YAAY,WAAW,CAACgD,UAAS,OAAO,IACzC,WAAW,SAAS,QAAQ,IAC7B;AACL,oBAAI,WAAW,SACXb,UAAS;AAAA,cACf;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AAYA,mBAAS,SAAS,OAAO,OAAOC,QAAO,KAAK;AAC1C,gBAAI,SAAS,MAAM;AAEnB,YAAAA,SAAQa,WAAUb,MAAK;AACvB,gBAAIA,SAAQ,GAAG;AACb,cAAAA,SAAQ,CAACA,SAAQ,SAAS,IAAK,SAASA;AAAA,YAC1C;AACA,kBAAO,QAAQpC,cAAa,MAAM,SAAU,SAASiD,WAAU,GAAG;AAClE,gBAAI,MAAM,GAAG;AACX,qBAAO;AAAA,YACT;AACA,kBAAMb,SAAQ,MAAM,IAAI,SAAS,GAAG;AACpC,mBAAOA,SAAQ,KAAK;AAClB,oBAAMA,QAAO,IAAI;AAAA,YACnB;AACA,mBAAO;AAAA,UACT;AAUA,mBAAS,WAAW,YAAY,WAAW;AACzC,gBAAID,UAAS,CAAC;AACd,qBAAS,YAAY,SAAS,OAAO5B,QAAOC,aAAY;AACtD,kBAAI,UAAU,OAAOD,QAAOC,WAAU,GAAG;AACvC,gBAAA2B,QAAO,KAAK,KAAK;AAAA,cACnB;AAAA,YACF,CAAC;AACD,mBAAOA;AAAA,UACT;AAaA,mBAAS,YAAY,OAAO,OAAO,WAAW,UAAUA,SAAQ;AAC9D,gBAAI5B,SAAQ,IACR,SAAS,MAAM;AAEnB,0BAAc,YAAY;AAC1B,YAAA4B,YAAWA,UAAS,CAAC;AAErB,mBAAO,EAAE5B,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,MAAMA,MAAK;AACvB,kBAAI,QAAQ,KAAK,UAAU,KAAK,GAAG;AACjC,oBAAI,QAAQ,GAAG;AAEb,8BAAY,OAAO,QAAQ,GAAG,WAAW,UAAU4B,OAAM;AAAA,gBAC3D,OAAO;AACL,4BAAUA,SAAQ,KAAK;AAAA,gBACzB;AAAA,cACF,WAAW,CAAC,UAAU;AACpB,gBAAAA,QAAOA,QAAO,MAAM,IAAI;AAAA,cAC1B;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AAaA,cAAI,UAAU,cAAc;AAY5B,cAAI,eAAe,cAAc,IAAI;AAUrC,mBAAS,WAAW,QAAQE,WAAU;AACpC,mBAAO,UAAU,QAAQ,QAAQA,WAAU,IAAI;AAAA,UACjD;AAUA,mBAAS,gBAAgB,QAAQA,WAAU;AACzC,mBAAO,UAAU,aAAa,QAAQA,WAAU,IAAI;AAAA,UACtD;AAWA,mBAAS,cAAc,QAAQ,OAAO;AACpC,mBAAO,YAAY,OAAO,SAAS,KAAK;AACtC,qBAAOa,YAAW,OAAO,GAAG,CAAC;AAAA,YAC/B,CAAC;AAAA,UACH;AAUA,mBAAS,QAAQ,QAAQ,MAAM;AAC7B,mBAAO,SAAS,MAAM,MAAM;AAE5B,gBAAI3C,SAAQ,GACR,SAAS,KAAK;AAElB,mBAAO,UAAU,QAAQA,SAAQ,QAAQ;AACvC,uBAAS,OAAO,MAAM,KAAKA,QAAO,CAAC,CAAC;AAAA,YACtC;AACA,mBAAQA,UAASA,UAAS,SAAU,SAASP;AAAA,UAC/C;AAaA,mBAAS,eAAe,QAAQ,UAAU,aAAa;AACrD,gBAAImC,UAAS,SAAS,MAAM;AAC5B,mBAAOF,SAAQ,MAAM,IAAIE,UAAS,UAAUA,SAAQ,YAAY,MAAM,CAAC;AAAA,UACzE;AASA,mBAAS,WAAW,OAAO;AACzB,gBAAI,SAAS,MAAM;AACjB,qBAAO,UAAUnC,aAAY,eAAe;AAAA,YAC9C;AACA,mBAAQ,kBAAkB,kBAAkBoB,QAAO,KAAK,IACpD,UAAU,KAAK,IACf,eAAe,KAAK;AAAA,UAC1B;AAWA,mBAAS,OAAO,OAAO,OAAO;AAC5B,mBAAO,QAAQ;AAAA,UACjB;AAUA,mBAAS,QAAQ,QAAQ,KAAK;AAC5B,mBAAO,UAAU,QAAQ,eAAe,KAAK,QAAQ,GAAG;AAAA,UAC1D;AAUA,mBAAS,UAAU,QAAQ,KAAK;AAC9B,mBAAO,UAAU,QAAQ,OAAOA,QAAO,MAAM;AAAA,UAC/C;AAWA,mBAAS,YAAY,QAAQgB,QAAO,KAAK;AACvC,mBAAO,UAAU,UAAUA,QAAO,GAAG,KAAK,SAAS,UAAUA,QAAO,GAAG;AAAA,UACzE;AAYA,mBAAS,iBAAiB,QAAQC,WAAU,YAAY;AACtD,gBAAIU,YAAW,aAAa,oBAAoB,eAC5C,SAAS,OAAO,CAAC,EAAE,QACnB,YAAY,OAAO,QACnB,WAAW,WACX,SAAShC,OAAM,SAAS,GACxB,YAAY,UACZoB,UAAS,CAAC;AAEd,mBAAO,YAAY;AACjB,kBAAI,QAAQ,OAAO,QAAQ;AAC3B,kBAAI,YAAYE,WAAU;AACxB,wBAAQ,SAAS,OAAO,UAAUA,SAAQ,CAAC;AAAA,cAC7C;AACA,0BAAY,UAAU,MAAM,QAAQ,SAAS;AAC7C,qBAAO,QAAQ,IAAI,CAAC,eAAeA,aAAa,UAAU,OAAO,MAAM,UAAU,OAC7E,IAAI,SAAS,YAAY,KAAK,IAC9BrC;AAAA,YACN;AACA,oBAAQ,OAAO,CAAC;AAEhB,gBAAIO,SAAQ,IACR,OAAO,OAAO,CAAC;AAEnB;AACA,qBAAO,EAAEA,SAAQ,UAAU4B,QAAO,SAAS,WAAW;AACpD,oBAAI,QAAQ,MAAM5B,MAAK,GACnB,WAAW8B,YAAWA,UAAS,KAAK,IAAI;AAE5C,wBAAS,cAAc,UAAU,IAAK,QAAQ;AAC9C,oBAAI,EAAE,OACE,SAAS,MAAM,QAAQ,IACvBU,UAASZ,SAAQ,UAAU,UAAU,IACtC;AACL,6BAAW;AACX,yBAAO,EAAE,UAAU;AACjB,wBAAIzB,SAAQ,OAAO,QAAQ;AAC3B,wBAAI,EAAEA,SACE,SAASA,QAAO,QAAQ,IACxBqC,UAAS,OAAO,QAAQ,GAAG,UAAU,UAAU,IACjD;AACJ,+BAAS;AAAA,oBACX;AAAA,kBACF;AACA,sBAAI,MAAM;AACR,yBAAK,KAAK,QAAQ;AAAA,kBACpB;AACA,kBAAAZ,QAAO,KAAK,KAAK;AAAA,gBACnB;AAAA,cACF;AACA,mBAAOA;AAAA,UACT;AAaA,mBAAS,aAAa,QAAQ,QAAQE,WAAU,aAAa;AAC3D,uBAAW,QAAQ,SAAS,OAAO,KAAKc,SAAQ;AAC9C,qBAAO,aAAad,UAAS,KAAK,GAAG,KAAKc,OAAM;AAAA,YAClD,CAAC;AACD,mBAAO;AAAA,UACT;AAYA,mBAAS,WAAW,QAAQ,MAAM,MAAM;AACtC,mBAAO,SAAS,MAAM,MAAM;AAC5B,qBAAS,OAAO,QAAQ,IAAI;AAC5B,gBAAI,OAAO,UAAU,OAAO,SAAS,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC;AAC7D,mBAAO,QAAQ,OAAOnD,aAAY,MAAM,MAAM,QAAQ,IAAI;AAAA,UAC5D;AASA,mBAAS,gBAAgB,OAAO;AAC9B,mBAAO,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACrD;AASA,mBAAS,kBAAkB,OAAO;AAChC,mBAAO,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACrD;AASA,mBAAS,WAAW,OAAO;AACzB,mBAAO,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACrD;AAgBA,mBAAS,YAAY,OAAO,OAAO,SAAS,YAAY,OAAO;AAC7D,gBAAI,UAAU,OAAO;AACnB,qBAAO;AAAA,YACT;AACA,gBAAI,SAAS,QAAQ,SAAS,QAAS,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,KAAK,GAAI;AACpF,qBAAO,UAAU,SAAS,UAAU;AAAA,YACtC;AACA,mBAAO,gBAAgB,OAAO,OAAO,SAAS,YAAY,aAAa,KAAK;AAAA,UAC9E;AAgBA,mBAAS,gBAAgB,QAAQ,OAAO,SAAS,YAAY,WAAW,OAAO;AAC7E,gBAAI,WAAWiC,SAAQ,MAAM,GACzB,WAAWA,SAAQ,KAAK,GACxB,SAAS,WAAW,WAAW,OAAO,MAAM,GAC5C,SAAS,WAAW,WAAW,OAAO,KAAK;AAE/C,qBAAS,UAAU,UAAU,YAAY;AACzC,qBAAS,UAAU,UAAU,YAAY;AAEzC,gBAAI,WAAW,UAAU,WACrB,WAAW,UAAU,WACrB,YAAY,UAAU;AAE1B,gBAAI,aAAaQ,UAAS,MAAM,GAAG;AACjC,kBAAI,CAACA,UAAS,KAAK,GAAG;AACpB,uBAAO;AAAA,cACT;AACA,yBAAW;AACX,yBAAW;AAAA,YACb;AACA,gBAAI,aAAa,CAAC,UAAU;AAC1B,wBAAU,QAAQ,IAAI;AACtB,qBAAQ,YAAY,aAAa,MAAM,IACnC,YAAY,QAAQ,OAAO,SAAS,YAAY,WAAW,KAAK,IAChE,WAAW,QAAQ,OAAO,QAAQ,SAAS,YAAY,WAAW,KAAK;AAAA,YAC7E;AACA,gBAAI,EAAE,UAAU,uBAAuB;AACrC,kBAAI,eAAe,YAAY,eAAe,KAAK,QAAQ,aAAa,GACpE,eAAe,YAAY,eAAe,KAAK,OAAO,aAAa;AAEvE,kBAAI,gBAAgB,cAAc;AAChC,oBAAI,eAAe,eAAe,OAAO,MAAM,IAAI,QAC/C,eAAe,eAAe,MAAM,MAAM,IAAI;AAElD,0BAAU,QAAQ,IAAI;AACtB,uBAAO,UAAU,cAAc,cAAc,SAAS,YAAY,KAAK;AAAA,cACzE;AAAA,YACF;AACA,gBAAI,CAAC,WAAW;AACd,qBAAO;AAAA,YACT;AACA,sBAAU,QAAQ,IAAI;AACtB,mBAAO,aAAa,QAAQ,OAAO,SAAS,YAAY,WAAW,KAAK;AAAA,UAC1E;AASA,mBAAS,UAAU,OAAO;AACxB,mBAAO,aAAa,KAAK,KAAK,OAAO,KAAK,KAAK;AAAA,UACjD;AAYA,mBAAS,YAAY,QAAQ,QAAQ,WAAW,YAAY;AAC1D,gBAAIlC,SAAQ,UAAU,QAClB,SAASA,QACT,eAAe,CAAC;AAEpB,gBAAI,UAAU,MAAM;AAClB,qBAAO,CAAC;AAAA,YACV;AACA,qBAASa,QAAO,MAAM;AACtB,mBAAOb,UAAS;AACd,kBAAI,OAAO,UAAUA,MAAK;AAC1B,kBAAK,gBAAgB,KAAK,CAAC,IACnB,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,CAAC,IAC1B,EAAE,KAAK,CAAC,KAAK,SACf;AACJ,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,qBAAO,UAAUA,MAAK;AACtB,kBAAI,MAAM,KAAK,CAAC,GACZ,WAAW,OAAO,GAAG,GACrB,WAAW,KAAK,CAAC;AAErB,kBAAI,gBAAgB,KAAK,CAAC,GAAG;AAC3B,oBAAI,aAAaP,cAAa,EAAE,OAAO,SAAS;AAC9C,yBAAO;AAAA,gBACT;AAAA,cACF,OAAO;AACL,oBAAI,QAAQ,IAAI;AAChB,oBAAI,YAAY;AACd,sBAAImC,UAAS,WAAW,UAAU,UAAU,KAAK,QAAQ,QAAQ,KAAK;AAAA,gBACxE;AACA,oBAAI,EAAEA,YAAWnC,aACT,YAAY,UAAU,UAAU,uBAAuB,wBAAwB,YAAY,KAAK,IAChGmC,UACD;AACL,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAUA,mBAAS,aAAa,OAAO;AAC3B,gBAAI,CAACD,UAAS,KAAK,KAAK,SAAS,KAAK,GAAG;AACvC,qBAAO;AAAA,YACT;AACA,gBAAI,UAAUgB,YAAW,KAAK,IAAI,aAAa;AAC/C,mBAAO,QAAQ,KAAK,SAAS,KAAK,CAAC;AAAA,UACrC;AASA,mBAAS,aAAa,OAAO;AAC3B,mBAAO,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACrD;AASA,mBAAS,UAAU,OAAO;AACxB,mBAAO,aAAa,KAAK,KAAK,OAAO,KAAK,KAAK;AAAA,UACjD;AASA,mBAAS,iBAAiB,OAAO;AAC/B,mBAAO,aAAa,KAAK,KACvB,SAAS,MAAM,MAAM,KAAK,CAAC,CAAC,eAAe,WAAW,KAAK,CAAC;AAAA,UAChE;AASA,mBAAS,aAAa,OAAO;AAG3B,gBAAI,OAAO,SAAS,YAAY;AAC9B,qBAAO;AAAA,YACT;AACA,gBAAI,SAAS,MAAM;AACjB,qBAAOE;AAAA,YACT;AACA,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAOnB,SAAQ,KAAK,IAChB,oBAAoB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IACtC,YAAY,KAAK;AAAA,YACvB;AACA,mBAAO,SAAS,KAAK;AAAA,UACvB;AASA,mBAAS,SAAS,QAAQ;AACxB,gBAAI,CAAC,YAAY,MAAM,GAAG;AACxB,qBAAO,WAAW,MAAM;AAAA,YAC1B;AACA,gBAAIE,UAAS,CAAC;AACd,qBAAS,OAAOf,QAAO,MAAM,GAAG;AAC9B,kBAAI,eAAe,KAAK,QAAQ,GAAG,KAAK,OAAO,eAAe;AAC5D,gBAAAe,QAAO,KAAK,GAAG;AAAA,cACjB;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AASA,mBAAS,WAAW,QAAQ;AAC1B,gBAAI,CAACD,UAAS,MAAM,GAAG;AACrB,qBAAO,aAAa,MAAM;AAAA,YAC5B;AACA,gBAAI,UAAU,YAAY,MAAM,GAC5BC,UAAS,CAAC;AAEd,qBAAS,OAAO,QAAQ;AACtB,kBAAI,EAAE,OAAO,kBAAkB,WAAW,CAAC,eAAe,KAAK,QAAQ,GAAG,KAAK;AAC7E,gBAAAA,QAAO,KAAK,GAAG;AAAA,cACjB;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AAWA,mBAAS,OAAO,OAAO,OAAO;AAC5B,mBAAO,QAAQ;AAAA,UACjB;AAUA,mBAAS,QAAQ,YAAYE,WAAU;AACrC,gBAAI9B,SAAQ,IACR4B,UAAS,YAAY,UAAU,IAAIpB,OAAM,WAAW,MAAM,IAAI,CAAC;AAEnE,qBAAS,YAAY,SAAS,OAAO,KAAKP,aAAY;AACpD,cAAA2B,QAAO,EAAE5B,MAAK,IAAI8B,UAAS,OAAO,KAAK7B,WAAU;AAAA,YACnD,CAAC;AACD,mBAAO2B;AAAA,UACT;AASA,mBAAS,YAAY,QAAQ;AAC3B,gBAAI,YAAY,aAAa,MAAM;AACnC,gBAAI,UAAU,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC,GAAG;AAC5C,qBAAO,wBAAwB,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;AAAA,YACjE;AACA,mBAAO,SAAS,QAAQ;AACtB,qBAAO,WAAW,UAAU,YAAY,QAAQ,QAAQ,SAAS;AAAA,YACnE;AAAA,UACF;AAUA,mBAAS,oBAAoB,MAAM,UAAU;AAC3C,gBAAI,MAAM,IAAI,KAAK,mBAAmB,QAAQ,GAAG;AAC/C,qBAAO,wBAAwB,MAAM,IAAI,GAAG,QAAQ;AAAA,YACtD;AACA,mBAAO,SAAS,QAAQ;AACtB,kBAAI,WAAWS,KAAI,QAAQ,IAAI;AAC/B,qBAAQ,aAAa5C,cAAa,aAAa,WAC3C,MAAM,QAAQ,IAAI,IAClB,YAAY,UAAU,UAAU,uBAAuB,sBAAsB;AAAA,YACnF;AAAA,UACF;AAaA,mBAAS,UAAU,QAAQ,QAAQ,UAAU,YAAY,OAAO;AAC9D,gBAAI,WAAW,QAAQ;AACrB;AAAA,YACF;AACA,oBAAQ,QAAQ,SAAS,UAAU,KAAK;AACtC,wBAAU,QAAQ,IAAI;AACtB,kBAAIkC,UAAS,QAAQ,GAAG;AACtB,8BAAc,QAAQ,QAAQ,KAAK,UAAU,WAAW,YAAY,KAAK;AAAA,cAC3E,OACK;AACH,oBAAI,WAAW,aACX,WAAW,QAAQ,QAAQ,GAAG,GAAG,UAAW,MAAM,IAAK,QAAQ,QAAQ,KAAK,IAC5ElC;AAEJ,oBAAI,aAAaA,YAAW;AAC1B,6BAAW;AAAA,gBACb;AACA,iCAAiB,QAAQ,KAAK,QAAQ;AAAA,cACxC;AAAA,YACF,GAAG,MAAM;AAAA,UACX;AAiBA,mBAAS,cAAc,QAAQ,QAAQ,KAAK,UAAU,WAAW,YAAY,OAAO;AAClF,gBAAI,WAAW,QAAQ,QAAQ,GAAG,GAC9B,WAAW,QAAQ,QAAQ,GAAG,GAC9B,UAAU,MAAM,IAAI,QAAQ;AAEhC,gBAAI,SAAS;AACX,+BAAiB,QAAQ,KAAK,OAAO;AACrC;AAAA,YACF;AACA,gBAAI,WAAW,aACX,WAAW,UAAU,UAAW,MAAM,IAAK,QAAQ,QAAQ,KAAK,IAChEA;AAEJ,gBAAI,WAAW,aAAaA;AAE5B,gBAAI,UAAU;AACZ,kBAAI,QAAQiC,SAAQ,QAAQ,GACxB,SAAS,CAAC,SAASQ,UAAS,QAAQ,GACpC,UAAU,CAAC,SAAS,CAAC,UAAU,aAAa,QAAQ;AAExD,yBAAW;AACX,kBAAI,SAAS,UAAU,SAAS;AAC9B,oBAAIR,SAAQ,QAAQ,GAAG;AACrB,6BAAW;AAAA,gBACb,WACS,kBAAkB,QAAQ,GAAG;AACpC,6BAAW,UAAU,QAAQ;AAAA,gBAC/B,WACS,QAAQ;AACf,6BAAW;AACX,6BAAW,YAAY,UAAU,IAAI;AAAA,gBACvC,WACS,SAAS;AAChB,6BAAW;AACX,6BAAW,gBAAgB,UAAU,IAAI;AAAA,gBAC3C,OACK;AACH,6BAAW,CAAC;AAAA,gBACd;AAAA,cACF,WACSoB,eAAc,QAAQ,KAAK,YAAY,QAAQ,GAAG;AACzD,2BAAW;AACX,oBAAI,YAAY,QAAQ,GAAG;AACzB,6BAAW,cAAc,QAAQ;AAAA,gBACnC,WACS,CAACnB,UAAS,QAAQ,KAAKgB,YAAW,QAAQ,GAAG;AACpD,6BAAW,gBAAgB,QAAQ;AAAA,gBACrC;AAAA,cACF,OACK;AACH,2BAAW;AAAA,cACb;AAAA,YACF;AACA,gBAAI,UAAU;AAEZ,oBAAM,IAAI,UAAU,QAAQ;AAC5B,wBAAU,UAAU,UAAU,UAAU,YAAY,KAAK;AACzD,oBAAM,QAAQ,EAAE,QAAQ;AAAA,YAC1B;AACA,6BAAiB,QAAQ,KAAK,QAAQ;AAAA,UACxC;AAUA,mBAAS,QAAQ,OAAOzC,IAAG;AACzB,gBAAI,SAAS,MAAM;AACnB,gBAAI,CAAC,QAAQ;AACX;AAAA,YACF;AACA,YAAAA,MAAKA,KAAI,IAAI,SAAS;AACtB,mBAAO,QAAQA,IAAG,MAAM,IAAI,MAAMA,EAAC,IAAIT;AAAA,UACzC;AAWA,mBAAS,YAAY,YAAY,WAAW,QAAQ;AAClD,gBAAI,UAAU,QAAQ;AACpB,0BAAY,SAAS,WAAW,SAASqC,WAAU;AACjD,oBAAIJ,SAAQI,SAAQ,GAAG;AACrB,yBAAO,SAAS,OAAO;AACrB,2BAAO,QAAQ,OAAOA,UAAS,WAAW,IAAIA,UAAS,CAAC,IAAIA,SAAQ;AAAA,kBACtE;AAAA,gBACF;AACA,uBAAOA;AAAA,cACT,CAAC;AAAA,YACH,OAAO;AACL,0BAAY,CAACe,SAAQ;AAAA,YACvB;AAEA,gBAAI7C,SAAQ;AACZ,wBAAY,SAAS,WAAW,UAAU,YAAY,CAAC,CAAC;AAExD,gBAAI4B,UAAS,QAAQ,YAAY,SAAS,OAAO,KAAK3B,aAAY;AAChE,kBAAI,WAAW,SAAS,WAAW,SAAS6B,WAAU;AACpD,uBAAOA,UAAS,KAAK;AAAA,cACvB,CAAC;AACD,qBAAO,EAAE,YAAY,UAAU,SAAS,EAAE9B,QAAO,SAAS,MAAM;AAAA,YAClE,CAAC;AAED,mBAAO,WAAW4B,SAAQ,SAAS,QAAQ,OAAO;AAChD,qBAAO,gBAAgB,QAAQ,OAAO,MAAM;AAAA,YAC9C,CAAC;AAAA,UACH;AAWA,mBAAS,SAAS,QAAQ,OAAO;AAC/B,mBAAO,WAAW,QAAQ,OAAO,SAAS,OAAO,MAAM;AACrD,qBAAO,MAAM,QAAQ,IAAI;AAAA,YAC3B,CAAC;AAAA,UACH;AAWA,mBAAS,WAAW,QAAQ,OAAO,WAAW;AAC5C,gBAAI5B,SAAQ,IACR,SAAS,MAAM,QACf4B,UAAS,CAAC;AAEd,mBAAO,EAAE5B,SAAQ,QAAQ;AACvB,kBAAI,OAAO,MAAMA,MAAK,GAClB,QAAQ,QAAQ,QAAQ,IAAI;AAEhC,kBAAI,UAAU,OAAO,IAAI,GAAG;AAC1B,wBAAQ4B,SAAQ,SAAS,MAAM,MAAM,GAAG,KAAK;AAAA,cAC/C;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AASA,mBAAS,iBAAiB,MAAM;AAC9B,mBAAO,SAAS,QAAQ;AACtB,qBAAO,QAAQ,QAAQ,IAAI;AAAA,YAC7B;AAAA,UACF;AAaA,mBAAS,YAAY,OAAOK,SAAQH,WAAU,YAAY;AACxD,gBAAIiB,WAAU,aAAa,kBAAkB,aACzC/C,SAAQ,IACR,SAASiC,QAAO,QAChB,OAAO;AAEX,gBAAI,UAAUA,SAAQ;AACpB,cAAAA,UAAS,UAAUA,OAAM;AAAA,YAC3B;AACA,gBAAIH,WAAU;AACZ,qBAAO,SAAS,OAAO,UAAUA,SAAQ,CAAC;AAAA,YAC5C;AACA,mBAAO,EAAE9B,SAAQ,QAAQ;AACvB,kBAAI,YAAY,GACZ,QAAQiC,QAAOjC,MAAK,GACpB,WAAW8B,YAAWA,UAAS,KAAK,IAAI;AAE5C,sBAAQ,YAAYiB,SAAQ,MAAM,UAAU,WAAW,UAAU,KAAK,IAAI;AACxE,oBAAI,SAAS,OAAO;AAClB,yBAAO,KAAK,MAAM,WAAW,CAAC;AAAA,gBAChC;AACA,uBAAO,KAAK,OAAO,WAAW,CAAC;AAAA,cACjC;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAWA,mBAAS,WAAW,OAAO,SAAS;AAClC,gBAAI,SAAS,QAAQ,QAAQ,SAAS,GAClC,YAAY,SAAS;AAEzB,mBAAO,UAAU;AACf,kBAAI/C,SAAQ,QAAQ,MAAM;AAC1B,kBAAI,UAAU,aAAaA,WAAU,UAAU;AAC7C,oBAAI,WAAWA;AACf,oBAAI,QAAQA,MAAK,GAAG;AAClB,yBAAO,KAAK,OAAOA,QAAO,CAAC;AAAA,gBAC7B,OAAO;AACL,4BAAU,OAAOA,MAAK;AAAA,gBACxB;AAAA,cACF;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAWA,mBAAS,WAAW,OAAO,OAAO;AAChC,mBAAO,QAAQ,YAAY,aAAa,KAAK,QAAQ,QAAQ,EAAE;AAAA,UACjE;AAaA,mBAAS,UAAU6B,QAAO,KAAK,MAAM,WAAW;AAC9C,gBAAI7B,SAAQ,IACR,SAAS,UAAU,YAAY,MAAM6B,WAAU,QAAQ,EAAE,GAAG,CAAC,GAC7DD,UAASpB,OAAM,MAAM;AAEzB,mBAAO,UAAU;AACf,cAAAoB,QAAO,YAAY,SAAS,EAAE5B,MAAK,IAAI6B;AACvC,cAAAA,UAAS;AAAA,YACX;AACA,mBAAOD;AAAA,UACT;AAUA,mBAAS,WAAW,QAAQ1B,IAAG;AAC7B,gBAAI0B,UAAS;AACb,gBAAI,CAAC,UAAU1B,KAAI,KAAKA,KAAI,kBAAkB;AAC5C,qBAAO0B;AAAA,YACT;AAGA,eAAG;AACD,kBAAI1B,KAAI,GAAG;AACT,gBAAA0B,WAAU;AAAA,cACZ;AACA,cAAA1B,KAAI,YAAYA,KAAI,CAAC;AACrB,kBAAIA,IAAG;AACL,0BAAU;AAAA,cACZ;AAAA,YACF,SAASA;AAET,mBAAO0B;AAAA,UACT;AAUA,mBAAS,SAAS,MAAMC,QAAO;AAC7B,mBAAO,YAAY,SAAS,MAAMA,QAAOgB,SAAQ,GAAG,OAAO,EAAE;AAAA,UAC/D;AASA,mBAAS,WAAW,YAAY;AAC9B,mBAAO,YAAY,OAAO,UAAU,CAAC;AAAA,UACvC;AAUA,mBAAS,eAAe,YAAY3C,IAAG;AACrC,gBAAI,QAAQ,OAAO,UAAU;AAC7B,mBAAO,YAAY,OAAO,UAAUA,IAAG,GAAG,MAAM,MAAM,CAAC;AAAA,UACzD;AAYA,mBAAS,QAAQ,QAAQ,MAAM,OAAO,YAAY;AAChD,gBAAI,CAACyB,UAAS,MAAM,GAAG;AACrB,qBAAO;AAAA,YACT;AACA,mBAAO,SAAS,MAAM,MAAM;AAE5B,gBAAI3B,SAAQ,IACR,SAAS,KAAK,QACd,YAAY,SAAS,GACrB,SAAS;AAEb,mBAAO,UAAU,QAAQ,EAAEA,SAAQ,QAAQ;AACzC,kBAAI,MAAM,MAAM,KAAKA,MAAK,CAAC,GACvB,WAAW;AAEf,kBAAI,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ,aAAa;AACvE,uBAAO;AAAA,cACT;AAEA,kBAAIA,UAAS,WAAW;AACtB,oBAAI,WAAW,OAAO,GAAG;AACzB,2BAAW,aAAa,WAAW,UAAU,KAAK,MAAM,IAAIP;AAC5D,oBAAI,aAAaA,YAAW;AAC1B,6BAAWkC,UAAS,QAAQ,IACxB,WACC,QAAQ,KAAK3B,SAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,gBACxC;AAAA,cACF;AACA,0BAAY,QAAQ,KAAK,QAAQ;AACjC,uBAAS,OAAO,GAAG;AAAA,YACrB;AACA,mBAAO;AAAA,UACT;AAUA,cAAI,cAAc,CAAC,UAAU6C,YAAW,SAAS,MAAM,MAAM;AAC3D,oBAAQ,IAAI,MAAM,IAAI;AACtB,mBAAO;AAAA,UACT;AAUA,cAAI,kBAAkB,CAAC,iBAAiBA,YAAW,SAAS,MAAM,QAAQ;AACxE,mBAAO,eAAe,MAAM,YAAY;AAAA,cACtC,gBAAgB;AAAA,cAChB,cAAc;AAAA,cACd,SAAS,SAAS,MAAM;AAAA,cACxB,YAAY;AAAA,YACd,CAAC;AAAA,UACH;AASA,mBAAS,YAAY,YAAY;AAC/B,mBAAO,YAAY,OAAO,UAAU,CAAC;AAAA,UACvC;AAWA,mBAAS,UAAU,OAAOhB,QAAO,KAAK;AACpC,gBAAI7B,SAAQ,IACR,SAAS,MAAM;AAEnB,gBAAI6B,SAAQ,GAAG;AACb,cAAAA,SAAQ,CAACA,SAAQ,SAAS,IAAK,SAASA;AAAA,YAC1C;AACA,kBAAM,MAAM,SAAS,SAAS;AAC9B,gBAAI,MAAM,GAAG;AACX,qBAAO;AAAA,YACT;AACA,qBAASA,SAAQ,MAAM,IAAM,MAAMA,WAAW;AAC9C,YAAAA,YAAW;AAEX,gBAAID,UAASpB,OAAM,MAAM;AACzB,mBAAO,EAAER,SAAQ,QAAQ;AACvB,cAAA4B,QAAO5B,MAAK,IAAI,MAAMA,SAAQ6B,MAAK;AAAA,YACrC;AACA,mBAAOD;AAAA,UACT;AAWA,mBAAS,SAAS,YAAY,WAAW;AACvC,gBAAIA;AAEJ,qBAAS,YAAY,SAAS,OAAO5B,QAAOC,aAAY;AACtD,cAAA2B,UAAS,UAAU,OAAO5B,QAAOC,WAAU;AAC3C,qBAAO,CAAC2B;AAAA,YACV,CAAC;AACD,mBAAO,CAAC,CAACA;AAAA,UACX;AAcA,mBAAS,gBAAgB,OAAO,OAAO,YAAY;AACjD,gBAAI,MAAM,GACN,OAAO,SAAS,OAAO,MAAM,MAAM;AAEvC,gBAAI,OAAO,SAAS,YAAY,UAAU,SAAS,QAAQ,uBAAuB;AAChF,qBAAO,MAAM,MAAM;AACjB,oBAAI,MAAO,MAAM,SAAU,GACvB,WAAW,MAAM,GAAG;AAExB,oBAAI,aAAa,QAAQ,CAACa,UAAS,QAAQ,MACtC,aAAc,YAAY,QAAU,WAAW,QAAS;AAC3D,wBAAM,MAAM;AAAA,gBACd,OAAO;AACL,yBAAO;AAAA,gBACT;AAAA,cACF;AACA,qBAAO;AAAA,YACT;AACA,mBAAO,kBAAkB,OAAO,OAAOI,WAAU,UAAU;AAAA,UAC7D;AAeA,mBAAS,kBAAkB,OAAO,OAAOf,WAAU,YAAY;AAC7D,gBAAI,MAAM,GACN,OAAO,SAAS,OAAO,IAAI,MAAM;AACrC,gBAAI,SAAS,GAAG;AACd,qBAAO;AAAA,YACT;AAEA,oBAAQA,UAAS,KAAK;AACtB,gBAAI,WAAW,UAAU,OACrB,YAAY,UAAU,MACtB,cAAcW,UAAS,KAAK,GAC5B,iBAAiB,UAAUhD;AAE/B,mBAAO,MAAM,MAAM;AACjB,kBAAI,MAAM,aAAa,MAAM,QAAQ,CAAC,GAClC,WAAWqC,UAAS,MAAM,GAAG,CAAC,GAC9B,eAAe,aAAarC,YAC5B,YAAY,aAAa,MACzB,iBAAiB,aAAa,UAC9B,cAAcgD,UAAS,QAAQ;AAEnC,kBAAI,UAAU;AACZ,oBAAI,SAAS,cAAc;AAAA,cAC7B,WAAW,gBAAgB;AACzB,yBAAS,mBAAmB,cAAc;AAAA,cAC5C,WAAW,WAAW;AACpB,yBAAS,kBAAkB,iBAAiB,cAAc,CAAC;AAAA,cAC7D,WAAW,aAAa;AACtB,yBAAS,kBAAkB,gBAAgB,CAAC,cAAc,cAAc,CAAC;AAAA,cAC3E,WAAW,aAAa,aAAa;AACnC,yBAAS;AAAA,cACX,OAAO;AACL,yBAAS,aAAc,YAAY,QAAU,WAAW;AAAA,cAC1D;AACA,kBAAI,QAAQ;AACV,sBAAM,MAAM;AAAA,cACd,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO,UAAU,MAAM,eAAe;AAAA,UACxC;AAWA,mBAAS,eAAe,OAAOX,WAAU;AACvC,gBAAI9B,SAAQ,IACR,SAAS,MAAM,QACf,WAAW,GACX4B,UAAS,CAAC;AAEd,mBAAO,EAAE5B,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,MAAMA,MAAK,GACnB,WAAW8B,YAAWA,UAAS,KAAK,IAAI;AAE5C,kBAAI,CAAC9B,UAAS,CAACmC,IAAG,UAAU,IAAI,GAAG;AACjC,oBAAI,OAAO;AACX,gBAAAP,QAAO,UAAU,IAAI,UAAU,IAAI,IAAI;AAAA,cACzC;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AAUA,mBAAS,aAAa,OAAO;AAC3B,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO;AAAA,YACT;AACA,gBAAIa,UAAS,KAAK,GAAG;AACnB,qBAAO;AAAA,YACT;AACA,mBAAO,CAAC;AAAA,UACV;AAUA,mBAAS,aAAa,OAAO;AAE3B,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO;AAAA,YACT;AACA,gBAAIf,SAAQ,KAAK,GAAG;AAElB,qBAAO,SAAS,OAAO,YAAY,IAAI;AAAA,YACzC;AACA,gBAAIe,UAAS,KAAK,GAAG;AACnB,qBAAO,iBAAiB,eAAe,KAAK,KAAK,IAAI;AAAA,YACvD;AACA,gBAAIb,UAAU,QAAQ;AACtB,mBAAQA,WAAU,OAAQ,IAAI,SAAU,CAACjC,YAAY,OAAOiC;AAAA,UAC9D;AAWA,mBAAS,SAAS,OAAOE,WAAU,YAAY;AAC7C,gBAAI9B,SAAQ,IACRwC,YAAW,eACX,SAAS,MAAM,QACf,WAAW,MACXZ,UAAS,CAAC,GACV,OAAOA;AAEX,gBAAI,YAAY;AACd,yBAAW;AACX,cAAAY,YAAW;AAAA,YACb,WACS,UAAU,kBAAkB;AACnC,kBAAInC,OAAMyB,YAAW,OAAO,UAAU,KAAK;AAC3C,kBAAIzB,MAAK;AACP,uBAAO,WAAWA,IAAG;AAAA,cACvB;AACA,yBAAW;AACX,cAAAmC,YAAW;AACX,qBAAO,IAAI;AAAA,YACb,OACK;AACH,qBAAOV,YAAW,CAAC,IAAIF;AAAA,YACzB;AACA;AACA,qBAAO,EAAE5B,SAAQ,QAAQ;AACvB,oBAAI,QAAQ,MAAMA,MAAK,GACnB,WAAW8B,YAAWA,UAAS,KAAK,IAAI;AAE5C,wBAAS,cAAc,UAAU,IAAK,QAAQ;AAC9C,oBAAI,YAAY,aAAa,UAAU;AACrC,sBAAI,YAAY,KAAK;AACrB,yBAAO,aAAa;AAClB,wBAAI,KAAK,SAAS,MAAM,UAAU;AAChC,+BAAS;AAAA,oBACX;AAAA,kBACF;AACA,sBAAIA,WAAU;AACZ,yBAAK,KAAK,QAAQ;AAAA,kBACpB;AACA,kBAAAF,QAAO,KAAK,KAAK;AAAA,gBACnB,WACS,CAACY,UAAS,MAAM,UAAU,UAAU,GAAG;AAC9C,sBAAI,SAASZ,SAAQ;AACnB,yBAAK,KAAK,QAAQ;AAAA,kBACpB;AACA,kBAAAA,QAAO,KAAK,KAAK;AAAA,gBACnB;AAAA,cACF;AACA,mBAAOA;AAAA,UACT;AAUA,mBAAS,UAAU,QAAQ,MAAM;AAC/B,mBAAO,SAAS,MAAM,MAAM;AAC5B,qBAAS,OAAO,QAAQ,IAAI;AAC5B,mBAAO,UAAU,QAAQ,OAAO,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC;AAAA,UAC1D;AAYA,mBAAS,WAAW,QAAQ,MAAM,SAAS,YAAY;AACrD,mBAAO,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,IAAI,CAAC,GAAG,UAAU;AAAA,UACzE;AAaA,mBAAS,UAAU,OAAO,WAAW,QAAQ,WAAW;AACtD,gBAAI,SAAS,MAAM,QACf5B,SAAQ,YAAY,SAAS;AAEjC,oBAAQ,YAAYA,WAAU,EAAEA,SAAQ,WACtC,UAAU,MAAMA,MAAK,GAAGA,QAAO,KAAK,GAAG;AAAA,YAAC;AAE1C,mBAAO,SACH,UAAU,OAAQ,YAAY,IAAIA,QAAS,YAAYA,SAAQ,IAAI,MAAO,IAC1E,UAAU,OAAQ,YAAYA,SAAQ,IAAI,GAAK,YAAY,SAASA,MAAM;AAAA,UAChF;AAYA,mBAAS,iBAAiB,OAAO,SAAS;AACxC,gBAAI4B,UAAS;AACb,gBAAIA,mBAAkB,aAAa;AACjC,cAAAA,UAASA,QAAO,MAAM;AAAA,YACxB;AACA,mBAAO,YAAY,SAAS,SAASA,SAAQ,QAAQ;AACnD,qBAAO,OAAO,KAAK,MAAM,OAAO,SAAS,UAAU,CAACA,OAAM,GAAG,OAAO,IAAI,CAAC;AAAA,YAC3E,GAAGA,OAAM;AAAA,UACX;AAYA,mBAAS,QAAQ,QAAQE,WAAU,YAAY;AAC7C,gBAAI,SAAS,OAAO;AACpB,gBAAI,SAAS,GAAG;AACd,qBAAO,SAAS,SAAS,OAAO,CAAC,CAAC,IAAI,CAAC;AAAA,YACzC;AACA,gBAAI9B,SAAQ,IACR4B,UAASpB,OAAM,MAAM;AAEzB,mBAAO,EAAER,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,OAAOA,MAAK,GACpB,WAAW;AAEf,qBAAO,EAAE,WAAW,QAAQ;AAC1B,oBAAI,YAAYA,QAAO;AACrB,kBAAA4B,QAAO5B,MAAK,IAAI,eAAe4B,QAAO5B,MAAK,KAAK,OAAO,OAAO,QAAQ,GAAG8B,WAAU,UAAU;AAAA,gBAC/F;AAAA,cACF;AAAA,YACF;AACA,mBAAO,SAAS,YAAYF,SAAQ,CAAC,GAAGE,WAAU,UAAU;AAAA,UAC9D;AAWA,mBAAS,cAAc,OAAOG,SAAQ,YAAY;AAChD,gBAAIjC,SAAQ,IACR,SAAS,MAAM,QACf,aAAaiC,QAAO,QACpBL,UAAS,CAAC;AAEd,mBAAO,EAAE5B,SAAQ,QAAQ;AACvB,kBAAI,QAAQA,SAAQ,aAAaiC,QAAOjC,MAAK,IAAIP;AACjD,yBAAWmC,SAAQ,MAAM5B,MAAK,GAAG,KAAK;AAAA,YACxC;AACA,mBAAO4B;AAAA,UACT;AASA,mBAAS,oBAAoB,OAAO;AAClC,mBAAO,kBAAkB,KAAK,IAAI,QAAQ,CAAC;AAAA,UAC7C;AASA,mBAAS,aAAa,OAAO;AAC3B,mBAAO,OAAO,SAAS,aAAa,QAAQiB;AAAA,UAC9C;AAUA,mBAAS,SAAS,OAAO,QAAQ;AAC/B,gBAAInB,SAAQ,KAAK,GAAG;AAClB,qBAAO;AAAA,YACT;AACA,mBAAO,MAAM,OAAO,MAAM,IAAI,CAAC,KAAK,IAAI,aAAa,SAAS,KAAK,CAAC;AAAA,UACtE;AAWA,cAAI,WAAW;AAWf,mBAAS,UAAU,OAAOG,QAAO,KAAK;AACpC,gBAAI,SAAS,MAAM;AACnB,kBAAM,QAAQpC,aAAY,SAAS;AACnC,mBAAQ,CAACoC,UAAS,OAAO,SAAU,QAAQ,UAAU,OAAOA,QAAO,GAAG;AAAA,UACxE;AAQA,cAAImB,gBAAe,mBAAmB,SAAS,IAAI;AACjD,mBAAO,KAAK,aAAa,EAAE;AAAA,UAC7B;AAUA,mBAAS,YAAYC,SAAQ,QAAQ;AACnC,gBAAI,QAAQ;AACV,qBAAOA,QAAO,MAAM;AAAA,YACtB;AACA,gBAAI,SAASA,QAAO,QAChBrB,UAAS,cAAc,YAAY,MAAM,IAAI,IAAIqB,QAAO,YAAY,MAAM;AAE9E,YAAAA,QAAO,KAAKrB,OAAM;AAClB,mBAAOA;AAAA,UACT;AASA,mBAAS,iBAAiB,aAAa;AACrC,gBAAIA,UAAS,IAAI,YAAY,YAAY,YAAY,UAAU;AAC/D,gBAAIR,YAAWQ,OAAM,EAAE,IAAI,IAAIR,YAAW,WAAW,CAAC;AACtD,mBAAOQ;AAAA,UACT;AAUA,mBAAS,cAAc,UAAU,QAAQ;AACvC,gBAAIqB,UAAS,SAAS,iBAAiB,SAAS,MAAM,IAAI,SAAS;AACnE,mBAAO,IAAI,SAAS,YAAYA,SAAQ,SAAS,YAAY,SAAS,UAAU;AAAA,UAClF;AASA,mBAAS,YAAY,QAAQ;AAC3B,gBAAIrB,UAAS,IAAI,OAAO,YAAY,OAAO,QAAQ,QAAQ,KAAK,MAAM,CAAC;AACvE,YAAAA,QAAO,YAAY,OAAO;AAC1B,mBAAOA;AAAA,UACT;AASA,mBAAS,YAAY,QAAQ;AAC3B,mBAAO,gBAAgBf,QAAO,cAAc,KAAK,MAAM,CAAC,IAAI,CAAC;AAAA,UAC/D;AAUA,mBAAS,gBAAgB,YAAY,QAAQ;AAC3C,gBAAIoC,UAAS,SAAS,iBAAiB,WAAW,MAAM,IAAI,WAAW;AACvE,mBAAO,IAAI,WAAW,YAAYA,SAAQ,WAAW,YAAY,WAAW,MAAM;AAAA,UACpF;AAUA,mBAAS,iBAAiB,OAAO,OAAO;AACtC,gBAAI,UAAU,OAAO;AACnB,kBAAI,eAAe,UAAUxD,YACzB,YAAY,UAAU,MACtB,iBAAiB,UAAU,OAC3B,cAAcgD,UAAS,KAAK;AAEhC,kBAAI,eAAe,UAAUhD,YACzB,YAAY,UAAU,MACtB,iBAAiB,UAAU,OAC3B,cAAcgD,UAAS,KAAK;AAEhC,kBAAK,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,QAAQ,SACtD,eAAe,gBAAgB,kBAAkB,CAAC,aAAa,CAAC,eAChE,aAAa,gBAAgB,kBAC7B,CAAC,gBAAgB,kBAClB,CAAC,gBAAgB;AACnB,uBAAO;AAAA,cACT;AACA,kBAAK,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,QAAQ,SACtD,eAAe,gBAAgB,kBAAkB,CAAC,aAAa,CAAC,eAChE,aAAa,gBAAgB,kBAC7B,CAAC,gBAAgB,kBAClB,CAAC,gBAAgB;AACnB,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAgBA,mBAAS,gBAAgB,QAAQ,OAAO,QAAQ;AAC9C,gBAAIzC,SAAQ,IACR,cAAc,OAAO,UACrB,cAAc,MAAM,UACpB,SAAS,YAAY,QACrB,eAAe,OAAO;AAE1B,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI4B,UAAS,iBAAiB,YAAY5B,MAAK,GAAG,YAAYA,MAAK,CAAC;AACpE,kBAAI4B,SAAQ;AACV,oBAAI5B,UAAS,cAAc;AACzB,yBAAO4B;AAAA,gBACT;AACA,oBAAI,QAAQ,OAAO5B,MAAK;AACxB,uBAAO4B,WAAU,SAAS,SAAS,KAAK;AAAA,cAC1C;AAAA,YACF;AAQA,mBAAO,OAAO,QAAQ,MAAM;AAAA,UAC9B;AAaA,mBAAS,YAAY,MAAM,UAAU,SAAS,WAAW;AACvD,gBAAI,YAAY,IACZ,aAAa,KAAK,QAClB,gBAAgB,QAAQ,QACxB,YAAY,IACZ,aAAa,SAAS,QACtB,cAAc,UAAU,aAAa,eAAe,CAAC,GACrDA,UAASpB,OAAM,aAAa,WAAW,GACvC,cAAc,CAAC;AAEnB,mBAAO,EAAE,YAAY,YAAY;AAC/B,cAAAoB,QAAO,SAAS,IAAI,SAAS,SAAS;AAAA,YACxC;AACA,mBAAO,EAAE,YAAY,eAAe;AAClC,kBAAI,eAAe,YAAY,YAAY;AACzC,gBAAAA,QAAO,QAAQ,SAAS,CAAC,IAAI,KAAK,SAAS;AAAA,cAC7C;AAAA,YACF;AACA,mBAAO,eAAe;AACpB,cAAAA,QAAO,WAAW,IAAI,KAAK,WAAW;AAAA,YACxC;AACA,mBAAOA;AAAA,UACT;AAaA,mBAAS,iBAAiB,MAAM,UAAU,SAAS,WAAW;AAC5D,gBAAI,YAAY,IACZ,aAAa,KAAK,QAClB,eAAe,IACf,gBAAgB,QAAQ,QACxB,aAAa,IACb,cAAc,SAAS,QACvB,cAAc,UAAU,aAAa,eAAe,CAAC,GACrDA,UAASpB,OAAM,cAAc,WAAW,GACxC,cAAc,CAAC;AAEnB,mBAAO,EAAE,YAAY,aAAa;AAChC,cAAAoB,QAAO,SAAS,IAAI,KAAK,SAAS;AAAA,YACpC;AACA,gBAAI,SAAS;AACb,mBAAO,EAAE,aAAa,aAAa;AACjC,cAAAA,QAAO,SAAS,UAAU,IAAI,SAAS,UAAU;AAAA,YACnD;AACA,mBAAO,EAAE,eAAe,eAAe;AACrC,kBAAI,eAAe,YAAY,YAAY;AACzC,gBAAAA,QAAO,SAAS,QAAQ,YAAY,CAAC,IAAI,KAAK,WAAW;AAAA,cAC3D;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AAUA,mBAAS,UAAU,QAAQ,OAAO;AAChC,gBAAI5B,SAAQ,IACR,SAAS,OAAO;AAEpB,sBAAU,QAAQQ,OAAM,MAAM;AAC9B,mBAAO,EAAER,SAAQ,QAAQ;AACvB,oBAAMA,MAAK,IAAI,OAAOA,MAAK;AAAA,YAC7B;AACA,mBAAO;AAAA,UACT;AAYA,mBAAS,WAAW,QAAQ,OAAO,QAAQ,YAAY;AACrD,gBAAI,QAAQ,CAAC;AACb,uBAAW,SAAS,CAAC;AAErB,gBAAIA,SAAQ,IACR,SAAS,MAAM;AAEnB,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI,MAAM,MAAMA,MAAK;AAErB,kBAAI,WAAW,aACX,WAAW,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,KAAK,QAAQ,MAAM,IACxDP;AAEJ,kBAAI,aAAaA,YAAW;AAC1B,2BAAW,OAAO,GAAG;AAAA,cACvB;AACA,kBAAI,OAAO;AACT,gCAAgB,QAAQ,KAAK,QAAQ;AAAA,cACvC,OAAO;AACL,4BAAY,QAAQ,KAAK,QAAQ;AAAA,cACnC;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAUA,mBAAS,YAAY,QAAQ,QAAQ;AACnC,mBAAO,WAAW,QAAQ,WAAW,MAAM,GAAG,MAAM;AAAA,UACtD;AAUA,mBAAS,cAAc,QAAQ,QAAQ;AACrC,mBAAO,WAAW,QAAQ,aAAa,MAAM,GAAG,MAAM;AAAA,UACxD;AAUA,mBAAS,iBAAiB,QAAQ,aAAa;AAC7C,mBAAO,SAAS,YAAYqC,WAAU;AACpC,kBAAI,OAAOJ,SAAQ,UAAU,IAAI,kBAAkB,gBAC/C,cAAc,cAAc,YAAY,IAAI,CAAC;AAEjD,qBAAO,KAAK,YAAY,QAAQ,YAAYI,WAAU,CAAC,GAAG,WAAW;AAAA,YACvE;AAAA,UACF;AASA,mBAAS,eAAe,UAAU;AAChC,mBAAO,SAAS,SAAS,QAAQ,SAAS;AACxC,kBAAI9B,SAAQ,IACR,SAAS,QAAQ,QACjB,aAAa,SAAS,IAAI,QAAQ,SAAS,CAAC,IAAIP,YAChD,QAAQ,SAAS,IAAI,QAAQ,CAAC,IAAIA;AAEtC,2BAAc,SAAS,SAAS,KAAK,OAAO,cAAc,cACrD,UAAU,cACXA;AAEJ,kBAAI,SAAS,eAAe,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,KAAK,GAAG;AAC1D,6BAAa,SAAS,IAAIA,aAAY;AACtC,yBAAS;AAAA,cACX;AACA,uBAASoB,QAAO,MAAM;AACtB,qBAAO,EAAEb,SAAQ,QAAQ;AACvB,oBAAI,SAAS,QAAQA,MAAK;AAC1B,oBAAI,QAAQ;AACV,2BAAS,QAAQ,QAAQA,QAAO,UAAU;AAAA,gBAC5C;AAAA,cACF;AACA,qBAAO;AAAA,YACT,CAAC;AAAA,UACH;AAUA,mBAAS,eAAe,UAAU,WAAW;AAC3C,mBAAO,SAAS,YAAY8B,WAAU;AACpC,kBAAI,cAAc,MAAM;AACtB,uBAAO;AAAA,cACT;AACA,kBAAI,CAAC,YAAY,UAAU,GAAG;AAC5B,uBAAO,SAAS,YAAYA,SAAQ;AAAA,cACtC;AACA,kBAAI,SAAS,WAAW,QACpB9B,SAAQ,YAAY,SAAS,IAC7B,WAAWa,QAAO,UAAU;AAEhC,qBAAQ,YAAYb,WAAU,EAAEA,SAAQ,QAAS;AAC/C,oBAAI8B,UAAS,SAAS9B,MAAK,GAAGA,QAAO,QAAQ,MAAM,OAAO;AACxD;AAAA,gBACF;AAAA,cACF;AACA,qBAAO;AAAA,YACT;AAAA,UACF;AASA,mBAAS,cAAc,WAAW;AAChC,mBAAO,SAAS,QAAQ8B,WAAU,UAAU;AAC1C,kBAAI9B,SAAQ,IACR,WAAWa,QAAO,MAAM,GACxB,QAAQ,SAAS,MAAM,GACvB,SAAS,MAAM;AAEnB,qBAAO,UAAU;AACf,oBAAI,MAAM,MAAM,YAAY,SAAS,EAAEb,MAAK;AAC5C,oBAAI8B,UAAS,SAAS,GAAG,GAAG,KAAK,QAAQ,MAAM,OAAO;AACpD;AAAA,gBACF;AAAA,cACF;AACA,qBAAO;AAAA,YACT;AAAA,UACF;AAYA,mBAAS,WAAW,MAAM,SAAS,SAAS;AAC1C,gBAAI,SAAS,UAAU,gBACnB,OAAO,WAAW,IAAI;AAE1B,qBAAS,UAAU;AACjB,kBAAI,KAAM,QAAQ,SAAS,QAAQ,gBAAgB,UAAW,OAAO;AACrE,qBAAO,GAAG,MAAM,SAAS,UAAU,MAAM,SAAS;AAAA,YACpD;AACA,mBAAO;AAAA,UACT;AASA,mBAAS,gBAAgB,YAAY;AACnC,mBAAO,SAAS,QAAQ;AACtB,uBAAS,SAAS,MAAM;AAExB,kBAAI,aAAa,WAAW,MAAM,IAC9B,cAAc,MAAM,IACpBrC;AAEJ,kBAAI,MAAM,aACN,WAAW,CAAC,IACZ,OAAO,OAAO,CAAC;AAEnB,kBAAI,WAAW,aACX,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,IAChC,OAAO,MAAM,CAAC;AAElB,qBAAO,IAAI,UAAU,EAAE,IAAI;AAAA,YAC7B;AAAA,UACF;AASA,mBAAS,iBAAiByD,WAAU;AAClC,mBAAO,SAAS,QAAQ;AACtB,qBAAO,YAAY,MAAM,OAAO,MAAM,EAAE,QAAQ,QAAQ,EAAE,CAAC,GAAGA,WAAU,EAAE;AAAA,YAC5E;AAAA,UACF;AAUA,mBAAS,WAAW,MAAM;AACxB,mBAAO,WAAW;AAIhB,kBAAI,OAAO;AACX,sBAAQ,KAAK,QAAQ;AAAA,gBACnB,KAAK;AAAG,yBAAO,IAAI;AAAA,gBACnB,KAAK;AAAG,yBAAO,IAAI,KAAK,KAAK,CAAC,CAAC;AAAA,gBAC/B,KAAK;AAAG,yBAAO,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,gBACxC,KAAK;AAAG,yBAAO,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,gBACjD,KAAK;AAAG,yBAAO,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,gBAC1D,KAAK;AAAG,yBAAO,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,gBACnE,KAAK;AAAG,yBAAO,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,gBAC5E,KAAK;AAAG,yBAAO,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,cACvF;AACA,kBAAI,cAAc,WAAW,KAAK,SAAS,GACvCtB,UAAS,KAAK,MAAM,aAAa,IAAI;AAIzC,qBAAOD,UAASC,OAAM,IAAIA,UAAS;AAAA,YACrC;AAAA,UACF;AAWA,mBAAS,YAAY,MAAM,SAAS,OAAO;AACzC,gBAAI,OAAO,WAAW,IAAI;AAE1B,qBAAS,UAAU;AACjB,kBAAI,SAAS,UAAU,QACnB,OAAOpB,OAAM,MAAM,GACnBR,SAAQ,QACR,cAAc,UAAU,OAAO;AAEnC,qBAAOA,UAAS;AACd,qBAAKA,MAAK,IAAI,UAAUA,MAAK;AAAA,cAC/B;AACA,kBAAI,UAAW,SAAS,KAAK,KAAK,CAAC,MAAM,eAAe,KAAK,SAAS,CAAC,MAAM,cACzE,CAAC,IACD,eAAe,MAAM,WAAW;AAEpC,wBAAU,QAAQ;AAClB,kBAAI,SAAS,OAAO;AAClB,uBAAO;AAAA,kBACL;AAAA,kBAAM;AAAA,kBAAS;AAAA,kBAAc,QAAQ;AAAA,kBAAaP;AAAA,kBAClD;AAAA,kBAAM;AAAA,kBAASA;AAAA,kBAAWA;AAAA,kBAAW,QAAQ;AAAA,gBAAM;AAAA,cACvD;AACA,kBAAI,KAAM,QAAQ,SAAS,QAAQ,gBAAgB,UAAW,OAAO;AACrE,qBAAO,MAAM,IAAI,MAAM,IAAI;AAAA,YAC7B;AACA,mBAAO;AAAA,UACT;AASA,mBAAS,WAAW,eAAe;AACjC,mBAAO,SAAS,YAAY,WAAW,WAAW;AAChD,kBAAI,WAAWoB,QAAO,UAAU;AAChC,kBAAI,CAAC,YAAY,UAAU,GAAG;AAC5B,oBAAIiB,YAAW,YAAY,WAAW,CAAC;AACvC,6BAAa,KAAK,UAAU;AAC5B,4BAAY,SAAS,KAAK;AAAE,yBAAOA,UAAS,SAAS,GAAG,GAAG,KAAK,QAAQ;AAAA,gBAAG;AAAA,cAC7E;AACA,kBAAI9B,SAAQ,cAAc,YAAY,WAAW,SAAS;AAC1D,qBAAOA,SAAQ,KAAK,SAAS8B,YAAW,WAAW9B,MAAK,IAAIA,MAAK,IAAIP;AAAA,YACvE;AAAA,UACF;AASA,mBAAS,WAAW,WAAW;AAC7B,mBAAO,SAAS,SAAS,OAAO;AAC9B,kBAAI,SAAS,MAAM,QACfO,SAAQ,QACR,SAAS,cAAc,UAAU;AAErC,kBAAI,WAAW;AACb,sBAAM,QAAQ;AAAA,cAChB;AACA,qBAAOA,UAAS;AACd,oBAAI,OAAO,MAAMA,MAAK;AACtB,oBAAI,OAAO,QAAQ,YAAY;AAC7B,wBAAM,IAAIgB,WAAU,eAAe;AAAA,gBACrC;AACA,oBAAI,UAAU,CAAC,WAAW,YAAY,IAAI,KAAK,WAAW;AACxD,sBAAI,UAAU,IAAI,cAAc,CAAC,GAAG,IAAI;AAAA,gBAC1C;AAAA,cACF;AACA,cAAAhB,SAAQ,UAAUA,SAAQ;AAC1B,qBAAO,EAAEA,SAAQ,QAAQ;AACvB,uBAAO,MAAMA,MAAK;AAElB,oBAAI,WAAW,YAAY,IAAI,GAC3B,OAAO,YAAY,YAAYmD,SAAQ,IAAI,IAAI1D;AAEnD,oBAAI,QAAQ,WAAW,KAAK,CAAC,CAAC,KACxB,KAAK,CAAC,MAAM,gBAAgB,kBAAkB,oBAAoB,oBAClE,CAAC,KAAK,CAAC,EAAE,UAAU,KAAK,CAAC,KAAK,GAC9B;AACJ,4BAAU,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,gBAChE,OAAO;AACL,4BAAW,KAAK,UAAU,KAAK,WAAW,IAAI,IAC1C,QAAQ,QAAQ,EAAE,IAClB,QAAQ,KAAK,IAAI;AAAA,gBACvB;AAAA,cACF;AACA,qBAAO,WAAW;AAChB,oBAAI,OAAO,WACP,QAAQ,KAAK,CAAC;AAElB,oBAAI,WAAW,KAAK,UAAU,KAAKiC,SAAQ,KAAK,GAAG;AACjD,yBAAO,QAAQ,MAAM,KAAK,EAAE,MAAM;AAAA,gBACpC;AACA,oBAAI1B,SAAQ,GACR4B,UAAS,SAAS,MAAM5B,MAAK,EAAE,MAAM,MAAM,IAAI,IAAI;AAEvD,uBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAA4B,UAAS,MAAM5B,MAAK,EAAE,KAAK,MAAM4B,OAAM;AAAA,gBACzC;AACA,uBAAOA;AAAA,cACT;AAAA,YACF,CAAC;AAAA,UACH;AAqBA,mBAAS,aAAa,MAAM,SAAS,SAAS,UAAU,SAAS,eAAe,cAAc,QAAQwB,MAAK,OAAO;AAChH,gBAAI,QAAQ,UAAU,eAClB,SAAS,UAAU,gBACnB,YAAY,UAAU,oBACtB,YAAY,WAAW,kBAAkB,wBACzC,SAAS,UAAU,gBACnB,OAAO,YAAY3D,aAAY,WAAW,IAAI;AAElD,qBAAS,UAAU;AACjB,kBAAI,SAAS,UAAU,QACnB,OAAOe,OAAM,MAAM,GACnBR,SAAQ;AAEZ,qBAAOA,UAAS;AACd,qBAAKA,MAAK,IAAI,UAAUA,MAAK;AAAA,cAC/B;AACA,kBAAI,WAAW;AACb,oBAAI,cAAc,UAAU,OAAO,GAC/B,eAAe,aAAa,MAAM,WAAW;AAAA,cACnD;AACA,kBAAI,UAAU;AACZ,uBAAO,YAAY,MAAM,UAAU,SAAS,SAAS;AAAA,cACvD;AACA,kBAAI,eAAe;AACjB,uBAAO,iBAAiB,MAAM,eAAe,cAAc,SAAS;AAAA,cACtE;AACA,wBAAU;AACV,kBAAI,aAAa,SAAS,OAAO;AAC/B,oBAAI,aAAa,eAAe,MAAM,WAAW;AACjD,uBAAO;AAAA,kBACL;AAAA,kBAAM;AAAA,kBAAS;AAAA,kBAAc,QAAQ;AAAA,kBAAa;AAAA,kBAClD;AAAA,kBAAM;AAAA,kBAAY;AAAA,kBAAQoD;AAAA,kBAAK,QAAQ;AAAA,gBACzC;AAAA,cACF;AACA,kBAAI,cAAc,SAAS,UAAU,MACjC,KAAK,YAAY,YAAY,IAAI,IAAI;AAEzC,uBAAS,KAAK;AACd,kBAAI,QAAQ;AACV,uBAAO,QAAQ,MAAM,MAAM;AAAA,cAC7B,WAAW,UAAU,SAAS,GAAG;AAC/B,qBAAK,QAAQ;AAAA,cACf;AACA,kBAAI,SAASA,OAAM,QAAQ;AACzB,qBAAK,SAASA;AAAA,cAChB;AACA,kBAAI,QAAQ,SAAS,QAAQ,gBAAgB,SAAS;AACpD,qBAAK,QAAQ,WAAW,EAAE;AAAA,cAC5B;AACA,qBAAO,GAAG,MAAM,aAAa,IAAI;AAAA,YACnC;AACA,mBAAO;AAAA,UACT;AAUA,mBAAS,eAAe,QAAQ,YAAY;AAC1C,mBAAO,SAAS,QAAQtB,WAAU;AAChC,qBAAO,aAAa,QAAQ,QAAQ,WAAWA,SAAQ,GAAG,CAAC,CAAC;AAAA,YAC9D;AAAA,UACF;AAUA,mBAAS,oBAAoB,UAAU,cAAc;AACnD,mBAAO,SAAS,OAAO,OAAO;AAC5B,kBAAIF;AACJ,kBAAI,UAAUnC,cAAa,UAAUA,YAAW;AAC9C,uBAAO;AAAA,cACT;AACA,kBAAI,UAAUA,YAAW;AACvB,gBAAAmC,UAAS;AAAA,cACX;AACA,kBAAI,UAAUnC,YAAW;AACvB,oBAAImC,YAAWnC,YAAW;AACxB,yBAAO;AAAA,gBACT;AACA,oBAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;AACxD,0BAAQ,aAAa,KAAK;AAC1B,0BAAQ,aAAa,KAAK;AAAA,gBAC5B,OAAO;AACL,0BAAQ,aAAa,KAAK;AAC1B,0BAAQ,aAAa,KAAK;AAAA,gBAC5B;AACA,gBAAAmC,UAAS,SAAS,OAAO,KAAK;AAAA,cAChC;AACA,qBAAOA;AAAA,YACT;AAAA,UACF;AASA,mBAAS,WAAW,WAAW;AAC7B,mBAAO,SAAS,SAAS,WAAW;AAClC,0BAAY,SAAS,WAAW,UAAU,YAAY,CAAC,CAAC;AACxD,qBAAO,SAAS,SAAS,MAAM;AAC7B,oBAAI,UAAU;AACd,uBAAO,UAAU,WAAW,SAASE,WAAU;AAC7C,yBAAO,MAAMA,WAAU,SAAS,IAAI;AAAA,gBACtC,CAAC;AAAA,cACH,CAAC;AAAA,YACH,CAAC;AAAA,UACH;AAWA,mBAAS,cAAc,QAAQ,OAAO;AACpC,oBAAQ,UAAUrC,aAAY,MAAM,aAAa,KAAK;AAEtD,gBAAI,cAAc,MAAM;AACxB,gBAAI,cAAc,GAAG;AACnB,qBAAO,cAAc,WAAW,OAAO,MAAM,IAAI;AAAA,YACnD;AACA,gBAAImC,UAAS,WAAW,OAAO,WAAW,SAAS,WAAW,KAAK,CAAC,CAAC;AACrE,mBAAO,WAAW,KAAK,IACnB,UAAU,cAAcA,OAAM,GAAG,GAAG,MAAM,EAAE,KAAK,EAAE,IACnDA,QAAO,MAAM,GAAG,MAAM;AAAA,UAC5B;AAcA,mBAAS,cAAc,MAAM,SAAS,SAAS,UAAU;AACvD,gBAAI,SAAS,UAAU,gBACnB,OAAO,WAAW,IAAI;AAE1B,qBAAS,UAAU;AACjB,kBAAI,YAAY,IACZ,aAAa,UAAU,QACvB,YAAY,IACZ,aAAa,SAAS,QACtB,OAAOpB,OAAM,aAAa,UAAU,GACpC,KAAM,QAAQ,SAAS,QAAQ,gBAAgB,UAAW,OAAO;AAErE,qBAAO,EAAE,YAAY,YAAY;AAC/B,qBAAK,SAAS,IAAI,SAAS,SAAS;AAAA,cACtC;AACA,qBAAO,cAAc;AACnB,qBAAK,WAAW,IAAI,UAAU,EAAE,SAAS;AAAA,cAC3C;AACA,qBAAO,MAAM,IAAI,SAAS,UAAU,MAAM,IAAI;AAAA,YAChD;AACA,mBAAO;AAAA,UACT;AASA,mBAAS,YAAY,WAAW;AAC9B,mBAAO,SAASqB,QAAO,KAAK,MAAM;AAChC,kBAAI,QAAQ,OAAO,QAAQ,YAAY,eAAeA,QAAO,KAAK,IAAI,GAAG;AACvE,sBAAM,OAAOpC;AAAA,cACf;AAEA,cAAAoC,SAAQ,SAASA,MAAK;AACtB,kBAAI,QAAQpC,YAAW;AACrB,sBAAMoC;AACN,gBAAAA,SAAQ;AAAA,cACV,OAAO;AACL,sBAAM,SAAS,GAAG;AAAA,cACpB;AACA,qBAAO,SAASpC,aAAaoC,SAAQ,MAAM,IAAI,KAAM,SAAS,IAAI;AAClE,qBAAO,UAAUA,QAAO,KAAK,MAAM,SAAS;AAAA,YAC9C;AAAA,UACF;AASA,mBAAS,0BAA0B,UAAU;AAC3C,mBAAO,SAAS,OAAO,OAAO;AAC5B,kBAAI,EAAE,OAAO,SAAS,YAAY,OAAO,SAAS,WAAW;AAC3D,wBAAQ,SAAS,KAAK;AACtB,wBAAQ,SAAS,KAAK;AAAA,cACxB;AACA,qBAAO,SAAS,OAAO,KAAK;AAAA,YAC9B;AAAA,UACF;AAmBA,mBAAS,cAAc,MAAM,SAAS,UAAU,aAAa,SAAS,UAAU,SAAS,QAAQuB,MAAK,OAAO;AAC3G,gBAAI,UAAU,UAAU,iBACpB,aAAa,UAAU,UAAU3D,YACjC,kBAAkB,UAAUA,aAAY,SACxC,cAAc,UAAU,WAAWA,YACnC,mBAAmB,UAAUA,aAAY;AAE7C,uBAAY,UAAU,oBAAoB;AAC1C,uBAAW,EAAE,UAAU,0BAA0B;AAEjD,gBAAI,EAAE,UAAU,wBAAwB;AACtC,yBAAW,EAAE,iBAAiB;AAAA,YAChC;AACA,gBAAI,UAAU;AAAA,cACZ;AAAA,cAAM;AAAA,cAAS;AAAA,cAAS;AAAA,cAAa;AAAA,cAAY;AAAA,cACjD;AAAA,cAAiB;AAAA,cAAQ2D;AAAA,cAAK;AAAA,YAChC;AAEA,gBAAIxB,UAAS,SAAS,MAAMnC,YAAW,OAAO;AAC9C,gBAAI,WAAW,IAAI,GAAG;AACpB,cAAA4D,SAAQzB,SAAQ,OAAO;AAAA,YACzB;AACA,YAAAA,QAAO,cAAc;AACrB,mBAAO,gBAAgBA,SAAQ,MAAM,OAAO;AAAA,UAC9C;AASA,mBAAS,YAAY,YAAY;AAC/B,gBAAI,OAAOhB,MAAK,UAAU;AAC1B,mBAAO,SAAS,QAAQ,WAAW;AACjC,uBAAS,SAAS,MAAM;AACxB,0BAAY,aAAa,OAAO,IAAI,UAAU8B,WAAU,SAAS,GAAG,GAAG;AACvE,kBAAI,aAAa,eAAe,MAAM,GAAG;AAGvC,oBAAI,QAAQ,SAAS,MAAM,IAAI,KAAK,MAAM,GAAG,GACzC,QAAQ,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU;AAEvD,wBAAQ,SAAS,KAAK,IAAI,KAAK,MAAM,GAAG;AACxC,uBAAO,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI;AAAA,cACvC;AACA,qBAAO,KAAK,MAAM;AAAA,YACpB;AAAA,UACF;AASA,cAAI,YAAY,EAAElB,QAAQ,IAAI,WAAW,IAAIA,KAAI,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAM7B,aAAY2D,QAAO,SAASrB,SAAQ;AAClG,mBAAO,IAAIT,KAAIS,OAAM;AAAA,UACvB;AASA,mBAAS,cAAc,UAAU;AAC/B,mBAAO,SAAS,QAAQ;AACtB,kBAAI,MAAM,OAAO,MAAM;AACvB,kBAAI,OAAO,QAAQ;AACjB,uBAAO,WAAW,MAAM;AAAA,cAC1B;AACA,kBAAI,OAAO,QAAQ;AACjB,uBAAO,WAAW,MAAM;AAAA,cAC1B;AACA,qBAAO,YAAY,QAAQ,SAAS,MAAM,CAAC;AAAA,YAC7C;AAAA,UACF;AA2BA,mBAAS,WAAW,MAAM,SAAS,SAAS,UAAU,SAAS,QAAQmB,MAAK,OAAO;AACjF,gBAAI,YAAY,UAAU;AAC1B,gBAAI,CAAC,aAAa,OAAO,QAAQ,YAAY;AAC3C,oBAAM,IAAIpC,WAAU,eAAe;AAAA,YACrC;AACA,gBAAI,SAAS,WAAW,SAAS,SAAS;AAC1C,gBAAI,CAAC,QAAQ;AACX,yBAAW,EAAE,oBAAoB;AACjC,yBAAW,UAAUvB;AAAA,YACvB;AACA,YAAA2D,OAAMA,SAAQ3D,aAAY2D,OAAM,UAAUV,WAAUU,IAAG,GAAG,CAAC;AAC3D,oBAAQ,UAAU3D,aAAY,QAAQiD,WAAU,KAAK;AACrD,sBAAU,UAAU,QAAQ,SAAS;AAErC,gBAAI,UAAU,yBAAyB;AACrC,kBAAI,gBAAgB,UAChB,eAAe;AAEnB,yBAAW,UAAUjD;AAAA,YACvB;AACA,gBAAI,OAAO,YAAYA,aAAY0D,SAAQ,IAAI;AAE/C,gBAAI,UAAU;AAAA,cACZ;AAAA,cAAM;AAAA,cAAS;AAAA,cAAS;AAAA,cAAU;AAAA,cAAS;AAAA,cAAe;AAAA,cAC1D;AAAA,cAAQC;AAAA,cAAK;AAAA,YACf;AAEA,gBAAI,MAAM;AACR,wBAAU,SAAS,IAAI;AAAA,YACzB;AACA,mBAAO,QAAQ,CAAC;AAChB,sBAAU,QAAQ,CAAC;AACnB,sBAAU,QAAQ,CAAC;AACnB,uBAAW,QAAQ,CAAC;AACpB,sBAAU,QAAQ,CAAC;AACnB,oBAAQ,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM3D,aAC/B,YAAY,IAAI,KAAK,SACtB,UAAU,QAAQ,CAAC,IAAI,QAAQ,CAAC;AAEpC,gBAAI,CAAC,SAAS,WAAW,kBAAkB,wBAAwB;AACjE,yBAAW,EAAE,kBAAkB;AAAA,YACjC;AACA,gBAAI,CAAC,WAAW,WAAW,gBAAgB;AACzC,kBAAImC,UAAS,WAAW,MAAM,SAAS,OAAO;AAAA,YAChD,WAAW,WAAW,mBAAmB,WAAW,uBAAuB;AACzE,cAAAA,UAAS,YAAY,MAAM,SAAS,KAAK;AAAA,YAC3C,YAAY,WAAW,qBAAqB,YAAY,iBAAiB,uBAAuB,CAAC,QAAQ,QAAQ;AAC/G,cAAAA,UAAS,cAAc,MAAM,SAAS,SAAS,QAAQ;AAAA,YACzD,OAAO;AACL,cAAAA,UAAS,aAAa,MAAMnC,YAAW,OAAO;AAAA,YAChD;AACA,gBAAI,SAAS,OAAO,cAAc4D;AAClC,mBAAO,gBAAgB,OAAOzB,SAAQ,OAAO,GAAG,MAAM,OAAO;AAAA,UAC/D;AAcA,mBAAS,uBAAuB,UAAU,UAAU,KAAK,QAAQ;AAC/D,gBAAI,aAAanC,cACZ0C,IAAG,UAAU,YAAY,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,QAAQ,GAAG,GAAI;AACzE,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAgBA,mBAAS,oBAAoB,UAAU,UAAU,KAAK,QAAQ,QAAQ,OAAO;AAC3E,gBAAIR,UAAS,QAAQ,KAAKA,UAAS,QAAQ,GAAG;AAE5C,oBAAM,IAAI,UAAU,QAAQ;AAC5B,wBAAU,UAAU,UAAUlC,YAAW,qBAAqB,KAAK;AACnE,oBAAM,QAAQ,EAAE,QAAQ;AAAA,YAC1B;AACA,mBAAO;AAAA,UACT;AAWA,mBAAS,gBAAgB,OAAO;AAC9B,mBAAOqD,eAAc,KAAK,IAAIrD,aAAY;AAAA,UAC5C;AAeA,mBAAS,YAAY,OAAO,OAAO,SAAS,YAAY,WAAW,OAAO;AACxE,gBAAI,YAAY,UAAU,sBACtB,YAAY,MAAM,QAClB,YAAY,MAAM;AAEtB,gBAAI,aAAa,aAAa,EAAE,aAAa,YAAY,YAAY;AACnE,qBAAO;AAAA,YACT;AAEA,gBAAI,aAAa,MAAM,IAAI,KAAK;AAChC,gBAAI,aAAa,MAAM,IAAI,KAAK;AAChC,gBAAI,cAAc,YAAY;AAC5B,qBAAO,cAAc,SAAS,cAAc;AAAA,YAC9C;AACA,gBAAIO,SAAQ,IACR4B,UAAS,MACT,OAAQ,UAAU,yBAA0B,IAAI,aAAWnC;AAE/D,kBAAM,IAAI,OAAO,KAAK;AACtB,kBAAM,IAAI,OAAO,KAAK;AAGtB,mBAAO,EAAEO,SAAQ,WAAW;AAC1B,kBAAI,WAAW,MAAMA,MAAK,GACtB,WAAW,MAAMA,MAAK;AAE1B,kBAAI,YAAY;AACd,oBAAI,WAAW,YACX,WAAW,UAAU,UAAUA,QAAO,OAAO,OAAO,KAAK,IACzD,WAAW,UAAU,UAAUA,QAAO,OAAO,OAAO,KAAK;AAAA,cAC/D;AACA,kBAAI,aAAaP,YAAW;AAC1B,oBAAI,UAAU;AACZ;AAAA,gBACF;AACA,gBAAAmC,UAAS;AACT;AAAA,cACF;AAEA,kBAAI,MAAM;AACR,oBAAI,CAAC,UAAU,OAAO,SAAS2B,WAAU,UAAU;AAC7C,sBAAI,CAAC,SAAS,MAAM,QAAQ,MACvB,aAAaA,aAAY,UAAU,UAAUA,WAAU,SAAS,YAAY,KAAK,IAAI;AACxF,2BAAO,KAAK,KAAK,QAAQ;AAAA,kBAC3B;AAAA,gBACF,CAAC,GAAG;AACN,kBAAA3B,UAAS;AACT;AAAA,gBACF;AAAA,cACF,WAAW,EACL,aAAa,YACX,UAAU,UAAU,UAAU,SAAS,YAAY,KAAK,IACzD;AACL,gBAAAA,UAAS;AACT;AAAA,cACF;AAAA,YACF;AACA,kBAAM,QAAQ,EAAE,KAAK;AACrB,kBAAM,QAAQ,EAAE,KAAK;AACrB,mBAAOA;AAAA,UACT;AAmBA,mBAAS,WAAW,QAAQ,OAAO,KAAK,SAAS,YAAY,WAAW,OAAO;AAC7E,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH,oBAAK,OAAO,cAAc,MAAM,cAC3B,OAAO,cAAc,MAAM,YAAa;AAC3C,yBAAO;AAAA,gBACT;AACA,yBAAS,OAAO;AAChB,wBAAQ,MAAM;AAAA,cAEhB,KAAK;AACH,oBAAK,OAAO,cAAc,MAAM,cAC5B,CAAC,UAAU,IAAIR,YAAW,MAAM,GAAG,IAAIA,YAAW,KAAK,CAAC,GAAG;AAC7D,yBAAO;AAAA,gBACT;AACA,uBAAO;AAAA,cAET,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAGH,uBAAOe,IAAG,CAAC,QAAQ,CAAC,KAAK;AAAA,cAE3B,KAAK;AACH,uBAAO,OAAO,QAAQ,MAAM,QAAQ,OAAO,WAAW,MAAM;AAAA,cAE9D,KAAK;AAAA,cACL,KAAK;AAIH,uBAAO,UAAW,QAAQ;AAAA,cAE5B,KAAK;AACH,oBAAI,UAAU;AAAA,cAEhB,KAAK;AACH,oBAAI,YAAY,UAAU;AAC1B,4BAAY,UAAU;AAEtB,oBAAI,OAAO,QAAQ,MAAM,QAAQ,CAAC,WAAW;AAC3C,yBAAO;AAAA,gBACT;AAEA,oBAAI,UAAU,MAAM,IAAI,MAAM;AAC9B,oBAAI,SAAS;AACX,yBAAO,WAAW;AAAA,gBACpB;AACA,2BAAW;AAGX,sBAAM,IAAI,QAAQ,KAAK;AACvB,oBAAIP,UAAS,YAAY,QAAQ,MAAM,GAAG,QAAQ,KAAK,GAAG,SAAS,YAAY,WAAW,KAAK;AAC/F,sBAAM,QAAQ,EAAE,MAAM;AACtB,uBAAOA;AAAA,cAET,KAAK;AACH,oBAAI,eAAe;AACjB,yBAAO,cAAc,KAAK,MAAM,KAAK,cAAc,KAAK,KAAK;AAAA,gBAC/D;AAAA,YACJ;AACA,mBAAO;AAAA,UACT;AAeA,mBAAS,aAAa,QAAQ,OAAO,SAAS,YAAY,WAAW,OAAO;AAC1E,gBAAI,YAAY,UAAU,sBACtB,WAAW,WAAW,MAAM,GAC5B,YAAY,SAAS,QACrB,WAAW,WAAW,KAAK,GAC3B,YAAY,SAAS;AAEzB,gBAAI,aAAa,aAAa,CAAC,WAAW;AACxC,qBAAO;AAAA,YACT;AACA,gBAAI5B,SAAQ;AACZ,mBAAOA,UAAS;AACd,kBAAI,MAAM,SAASA,MAAK;AACxB,kBAAI,EAAE,YAAY,OAAO,QAAQ,eAAe,KAAK,OAAO,GAAG,IAAI;AACjE,uBAAO;AAAA,cACT;AAAA,YACF;AAEA,gBAAI,aAAa,MAAM,IAAI,MAAM;AACjC,gBAAI,aAAa,MAAM,IAAI,KAAK;AAChC,gBAAI,cAAc,YAAY;AAC5B,qBAAO,cAAc,SAAS,cAAc;AAAA,YAC9C;AACA,gBAAI4B,UAAS;AACb,kBAAM,IAAI,QAAQ,KAAK;AACvB,kBAAM,IAAI,OAAO,MAAM;AAEvB,gBAAI,WAAW;AACf,mBAAO,EAAE5B,SAAQ,WAAW;AAC1B,oBAAM,SAASA,MAAK;AACpB,kBAAI,WAAW,OAAO,GAAG,GACrB,WAAW,MAAM,GAAG;AAExB,kBAAI,YAAY;AACd,oBAAI,WAAW,YACX,WAAW,UAAU,UAAU,KAAK,OAAO,QAAQ,KAAK,IACxD,WAAW,UAAU,UAAU,KAAK,QAAQ,OAAO,KAAK;AAAA,cAC9D;AAEA,kBAAI,EAAE,aAAaP,aACV,aAAa,YAAY,UAAU,UAAU,UAAU,SAAS,YAAY,KAAK,IAClF,WACD;AACL,gBAAAmC,UAAS;AACT;AAAA,cACF;AACA,2BAAa,WAAW,OAAO;AAAA,YACjC;AACA,gBAAIA,WAAU,CAAC,UAAU;AACvB,kBAAI,UAAU,OAAO,aACjB,UAAU,MAAM;AAGpB,kBAAI,WAAW,YACV,iBAAiB,UAAU,iBAAiB,UAC7C,EAAE,OAAO,WAAW,cAAc,mBAAmB,WACnD,OAAO,WAAW,cAAc,mBAAmB,UAAU;AACjE,gBAAAA,UAAS;AAAA,cACX;AAAA,YACF;AACA,kBAAM,QAAQ,EAAE,MAAM;AACtB,kBAAM,QAAQ,EAAE,KAAK;AACrB,mBAAOA;AAAA,UACT;AASA,mBAAS,SAAS,MAAM;AACtB,mBAAO,YAAY,SAAS,MAAMnC,YAAW,OAAO,GAAG,OAAO,EAAE;AAAA,UAClE;AASA,mBAAS,WAAW,QAAQ;AAC1B,mBAAO,eAAe,QAAQ,MAAM,UAAU;AAAA,UAChD;AAUA,mBAAS,aAAa,QAAQ;AAC5B,mBAAO,eAAe,QAAQ,QAAQ,YAAY;AAAA,UACpD;AASA,cAAI0D,WAAU,CAAC,UAAUG,QAAO,SAAS,MAAM;AAC7C,mBAAO,QAAQ,IAAI,IAAI;AAAA,UACzB;AASA,mBAAS,YAAY,MAAM;AACzB,gBAAI1B,UAAU,KAAK,OAAO,IACtB,QAAQ,UAAUA,OAAM,GACxB,SAAS,eAAe,KAAK,WAAWA,OAAM,IAAI,MAAM,SAAS;AAErE,mBAAO,UAAU;AACf,kBAAI,OAAO,MAAM,MAAM,GACnB,YAAY,KAAK;AACrB,kBAAI,aAAa,QAAQ,aAAa,MAAM;AAC1C,uBAAO,KAAK;AAAA,cACd;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AASA,mBAAS,UAAU,MAAM;AACvB,gBAAI,SAAS,eAAe,KAAK,QAAQ,aAAa,IAAI,SAAS;AACnE,mBAAO,OAAO;AAAA,UAChB;AAaA,mBAAS,cAAc;AACrB,gBAAIA,UAAS,OAAO,YAAY;AAChC,YAAAA,UAASA,YAAW,WAAW,eAAeA;AAC9C,mBAAO,UAAU,SAASA,QAAO,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,IAAIA;AAAA,UACjE;AAUA,mBAAS,WAAWxB,MAAK,KAAK;AAC5B,gBAAI,OAAOA,KAAI;AACf,mBAAO,UAAU,GAAG,IAChB,KAAK,OAAO,OAAO,WAAW,WAAW,MAAM,IAC/C,KAAK;AAAA,UACX;AASA,mBAAS,aAAa,QAAQ;AAC5B,gBAAIwB,UAAS,KAAK,MAAM,GACpB,SAASA,QAAO;AAEpB,mBAAO,UAAU;AACf,kBAAI,MAAMA,QAAO,MAAM,GACnB,QAAQ,OAAO,GAAG;AAEtB,cAAAA,QAAO,MAAM,IAAI,CAAC,KAAK,OAAO,mBAAmB,KAAK,CAAC;AAAA,YACzD;AACA,mBAAOA;AAAA,UACT;AAUA,mBAAS,UAAU,QAAQ,KAAK;AAC9B,gBAAI,QAAQ,SAAS,QAAQ,GAAG;AAChC,mBAAO,aAAa,KAAK,IAAI,QAAQnC;AAAA,UACvC;AASA,mBAAS,UAAU,OAAO;AACxB,gBAAI,QAAQ,eAAe,KAAK,OAAO,cAAc,GACjD,MAAM,MAAM,cAAc;AAE9B,gBAAI;AACF,oBAAM,cAAc,IAAIA;AACxB,kBAAI,WAAW;AAAA,YACjB,SAASM,IAAG;AAAA,YAAC;AAEb,gBAAI6B,UAAS,qBAAqB,KAAK,KAAK;AAC5C,gBAAI,UAAU;AACZ,kBAAI,OAAO;AACT,sBAAM,cAAc,IAAI;AAAA,cAC1B,OAAO;AACL,uBAAO,MAAM,cAAc;AAAA,cAC7B;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AASA,cAAI,aAAa,CAAC,mBAAmB,YAAY,SAAS,QAAQ;AAChE,gBAAI,UAAU,MAAM;AAClB,qBAAO,CAAC;AAAA,YACV;AACA,qBAASf,QAAO,MAAM;AACtB,mBAAO,YAAY,iBAAiB,MAAM,GAAG,SAAS,QAAQ;AAC5D,qBAAO,qBAAqB,KAAK,QAAQ,MAAM;AAAA,YACjD,CAAC;AAAA,UACH;AASA,cAAI,eAAe,CAAC,mBAAmB,YAAY,SAAS,QAAQ;AAClE,gBAAIe,UAAS,CAAC;AACd,mBAAO,QAAQ;AACb,wBAAUA,SAAQ,WAAW,MAAM,CAAC;AACpC,uBAAS,aAAa,MAAM;AAAA,YAC9B;AACA,mBAAOA;AAAA,UACT;AASA,cAAI,SAAS;AAGb,cAAKP,aAAY,OAAO,IAAIA,UAAS,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,eACxDC,QAAO,OAAO,IAAIA,MAAG,KAAK,UAC1BC,YAAW,OAAOA,SAAQ,QAAQ,CAAC,KAAK,cACxCC,QAAO,OAAO,IAAIA,MAAG,KAAK,UAC1BC,YAAW,OAAO,IAAIA,UAAO,KAAK,YAAa;AAClD,qBAAS,SAAS,OAAO;AACvB,kBAAIG,UAAS,WAAW,KAAK,GACzB,OAAOA,WAAU,YAAY,MAAM,cAAcnC,YACjD,aAAa,OAAO,SAAS,IAAI,IAAI;AAEzC,kBAAI,YAAY;AACd,wBAAQ,YAAY;AAAA,kBAClB,KAAK;AAAoB,2BAAO;AAAA,kBAChC,KAAK;AAAe,2BAAO;AAAA,kBAC3B,KAAK;AAAmB,2BAAO;AAAA,kBAC/B,KAAK;AAAe,2BAAO;AAAA,kBAC3B,KAAK;AAAmB,2BAAO;AAAA,gBACjC;AAAA,cACF;AACA,qBAAOmC;AAAA,YACT;AAAA,UACF;AAYA,mBAAS,QAAQC,QAAO,KAAK,YAAY;AACvC,gBAAI7B,SAAQ,IACR,SAAS,WAAW;AAExB,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI,OAAO,WAAWA,MAAK,GACvBgC,QAAO,KAAK;AAEhB,sBAAQ,KAAK,MAAM;AAAA,gBACjB,KAAK;AAAa,kBAAAH,UAASG;AAAM;AAAA,gBACjC,KAAK;AAAa,yBAAOA;AAAM;AAAA,gBAC/B,KAAK;AAAa,wBAAM,UAAU,KAAKH,SAAQG,KAAI;AAAG;AAAA,gBACtD,KAAK;AAAa,kBAAAH,SAAQ,UAAUA,QAAO,MAAMG,KAAI;AAAG;AAAA,cAC1D;AAAA,YACF;AACA,mBAAO,EAAE,SAASH,QAAO,OAAO,IAAI;AAAA,UACtC;AASA,mBAAS,eAAe,QAAQ;AAC9B,gBAAI2B,SAAQ,OAAO,MAAM,aAAa;AACtC,mBAAOA,SAAQA,OAAM,CAAC,EAAE,MAAM,cAAc,IAAI,CAAC;AAAA,UACnD;AAWA,mBAAS,QAAQ,QAAQ,MAAM,SAAS;AACtC,mBAAO,SAAS,MAAM,MAAM;AAE5B,gBAAIxD,SAAQ,IACR,SAAS,KAAK,QACd4B,UAAS;AAEb,mBAAO,EAAE5B,SAAQ,QAAQ;AACvB,kBAAI,MAAM,MAAM,KAAKA,MAAK,CAAC;AAC3B,kBAAI,EAAE4B,UAAS,UAAU,QAAQ,QAAQ,QAAQ,GAAG,IAAI;AACtD;AAAA,cACF;AACA,uBAAS,OAAO,GAAG;AAAA,YACrB;AACA,gBAAIA,WAAU,EAAE5B,UAAS,QAAQ;AAC/B,qBAAO4B;AAAA,YACT;AACA,qBAAS,UAAU,OAAO,IAAI,OAAO;AACrC,mBAAO,CAAC,CAAC,UAAU,SAAS,MAAM,KAAK,QAAQ,KAAK,MAAM,MACvDF,SAAQ,MAAM,KAAK,YAAY,MAAM;AAAA,UAC1C;AASA,mBAAS,eAAe,OAAO;AAC7B,gBAAI,SAAS,MAAM,QACfE,UAAS,IAAI,MAAM,YAAY,MAAM;AAGzC,gBAAI,UAAU,OAAO,MAAM,CAAC,KAAK,YAAY,eAAe,KAAK,OAAO,OAAO,GAAG;AAChF,cAAAA,QAAO,QAAQ,MAAM;AACrB,cAAAA,QAAO,QAAQ,MAAM;AAAA,YACvB;AACA,mBAAOA;AAAA,UACT;AASA,mBAAS,gBAAgB,QAAQ;AAC/B,mBAAQ,OAAO,OAAO,eAAe,cAAc,CAAC,YAAY,MAAM,IAClE,WAAW,aAAa,MAAM,CAAC,IAC/B,CAAC;AAAA,UACP;AAcA,mBAAS,eAAe,QAAQ,KAAK,QAAQ;AAC3C,gBAAI,OAAO,OAAO;AAClB,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH,uBAAO,iBAAiB,MAAM;AAAA,cAEhC,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,IAAI,KAAK,CAAC,MAAM;AAAA,cAEzB,KAAK;AACH,uBAAO,cAAc,QAAQ,MAAM;AAAA,cAErC,KAAK;AAAA,cAAY,KAAK;AAAA,cACtB,KAAK;AAAA,cAAS,KAAK;AAAA,cAAU,KAAK;AAAA,cAClC,KAAK;AAAA,cAAU,KAAK;AAAA,cAAiB,KAAK;AAAA,cAAW,KAAK;AACxD,uBAAO,gBAAgB,QAAQ,MAAM;AAAA,cAEvC,KAAK;AACH,uBAAO,IAAI;AAAA,cAEb,KAAK;AAAA,cACL,KAAK;AACH,uBAAO,IAAI,KAAK,MAAM;AAAA,cAExB,KAAK;AACH,uBAAO,YAAY,MAAM;AAAA,cAE3B,KAAK;AACH,uBAAO,IAAI;AAAA,cAEb,KAAK;AACH,uBAAO,YAAY,MAAM;AAAA,YAC7B;AAAA,UACF;AAUA,mBAAS,kBAAkB,QAAQ,SAAS;AAC1C,gBAAI,SAAS,QAAQ;AACrB,gBAAI,CAAC,QAAQ;AACX,qBAAO;AAAA,YACT;AACA,gBAAI,YAAY,SAAS;AACzB,oBAAQ,SAAS,KAAK,SAAS,IAAI,OAAO,MAAM,QAAQ,SAAS;AACjE,sBAAU,QAAQ,KAAK,SAAS,IAAI,OAAO,GAAG;AAC9C,mBAAO,OAAO,QAAQ,eAAe,yBAAyB,UAAU,QAAQ;AAAA,UAClF;AASA,mBAAS,cAAc,OAAO;AAC5B,mBAAOF,SAAQ,KAAK,KAAK,YAAY,KAAK,KACxC,CAAC,EAAE,oBAAoB,SAAS,MAAM,gBAAgB;AAAA,UAC1D;AAUA,mBAAS,QAAQ,OAAO,QAAQ;AAC9B,gBAAI,OAAO,OAAO;AAClB,qBAAS,UAAU,OAAO,mBAAmB;AAE7C,mBAAO,CAAC,CAAC,WACN,QAAQ,YACN,QAAQ,YAAY,SAAS,KAAK,KAAK,OACrC,QAAQ,MAAM,QAAQ,KAAK,KAAK,QAAQ;AAAA,UACjD;AAYA,mBAAS,eAAe,OAAO1B,QAAO,QAAQ;AAC5C,gBAAI,CAAC2B,UAAS,MAAM,GAAG;AACrB,qBAAO;AAAA,YACT;AACA,gBAAI,OAAO,OAAO3B;AAClB,gBAAI,QAAQ,WACH,YAAY,MAAM,KAAK,QAAQA,QAAO,OAAO,MAAM,IACnD,QAAQ,YAAYA,UAAS,QAChC;AACJ,qBAAOmC,IAAG,OAAOnC,MAAK,GAAG,KAAK;AAAA,YAChC;AACA,mBAAO;AAAA,UACT;AAUA,mBAAS,MAAM,OAAO,QAAQ;AAC5B,gBAAI0B,SAAQ,KAAK,GAAG;AAClB,qBAAO;AAAA,YACT;AACA,gBAAI,OAAO,OAAO;AAClB,gBAAI,QAAQ,YAAY,QAAQ,YAAY,QAAQ,aAChD,SAAS,QAAQe,UAAS,KAAK,GAAG;AACpC,qBAAO;AAAA,YACT;AACA,mBAAO,cAAc,KAAK,KAAK,KAAK,CAAC,aAAa,KAAK,KAAK,KACzD,UAAU,QAAQ,SAAS5B,QAAO,MAAM;AAAA,UAC7C;AASA,mBAAS,UAAU,OAAO;AACxB,gBAAI,OAAO,OAAO;AAClB,mBAAQ,QAAQ,YAAY,QAAQ,YAAY,QAAQ,YAAY,QAAQ,YACvE,UAAU,cACV,UAAU;AAAA,UACjB;AAUA,mBAAS,WAAW,MAAM;AACxB,gBAAI,WAAW,YAAY,IAAI,GAC3B,QAAQ,OAAO,QAAQ;AAE3B,gBAAI,OAAO,SAAS,cAAc,EAAE,YAAY,YAAY,YAAY;AACtE,qBAAO;AAAA,YACT;AACA,gBAAI,SAAS,OAAO;AAClB,qBAAO;AAAA,YACT;AACA,gBAAI,OAAOsC,SAAQ,KAAK;AACxB,mBAAO,CAAC,CAAC,QAAQ,SAAS,KAAK,CAAC;AAAA,UAClC;AASA,mBAAS,SAAS,MAAM;AACtB,mBAAO,CAAC,CAAC,cAAe,cAAc;AAAA,UACxC;AASA,cAAI,aAAa,aAAaR,cAAa;AAS3C,mBAAS,YAAY,OAAO;AAC1B,gBAAI,OAAO,SAAS,MAAM,aACtB,QAAS,OAAO,QAAQ,cAAc,KAAK,aAAc;AAE7D,mBAAO,UAAU;AAAA,UACnB;AAUA,mBAAS,mBAAmB,OAAO;AACjC,mBAAO,UAAU,SAAS,CAAChB,UAAS,KAAK;AAAA,UAC3C;AAWA,mBAAS,wBAAwB,KAAK,UAAU;AAC9C,mBAAO,SAAS,QAAQ;AACtB,kBAAI,UAAU,MAAM;AAClB,uBAAO;AAAA,cACT;AACA,qBAAO,OAAO,GAAG,MAAM,aACpB,aAAalC,cAAc,OAAOoB,QAAO,MAAM;AAAA,YACpD;AAAA,UACF;AAUA,mBAAS,cAAc,MAAM;AAC3B,gBAAIe,UAAS6B,SAAQ,MAAM,SAAS,KAAK;AACvC,kBAAItD,OAAM,SAAS,kBAAkB;AACnC,gBAAAA,OAAM,MAAM;AAAA,cACd;AACA,qBAAO;AAAA,YACT,CAAC;AAED,gBAAIA,SAAQyB,QAAO;AACnB,mBAAOA;AAAA,UACT;AAkBA,mBAAS,UAAU,MAAM,QAAQ;AAC/B,gBAAI,UAAU,KAAK,CAAC,GAChB,aAAa,OAAO,CAAC,GACrB,aAAa,UAAU,YACvB,WAAW,cAAc,iBAAiB,qBAAqB;AAEnE,gBAAI,UACA,cAAc,iBAAmB,WAAW,mBAC5C,cAAc,iBAAmB,WAAW,mBAAqB,KAAK,CAAC,EAAE,UAAU,OAAO,CAAC,KAC3F,eAAe,gBAAgB,oBAAsB,OAAO,CAAC,EAAE,UAAU,OAAO,CAAC,KAAO,WAAW;AAGvG,gBAAI,EAAE,YAAY,UAAU;AAC1B,qBAAO;AAAA,YACT;AAEA,gBAAI,aAAa,gBAAgB;AAC/B,mBAAK,CAAC,IAAI,OAAO,CAAC;AAElB,4BAAc,UAAU,iBAAiB,IAAI;AAAA,YAC/C;AAEA,gBAAI,QAAQ,OAAO,CAAC;AACpB,gBAAI,OAAO;AACT,kBAAI,WAAW,KAAK,CAAC;AACrB,mBAAK,CAAC,IAAI,WAAW,YAAY,UAAU,OAAO,OAAO,CAAC,CAAC,IAAI;AAC/D,mBAAK,CAAC,IAAI,WAAW,eAAe,KAAK,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC;AAAA,YACtE;AAEA,oBAAQ,OAAO,CAAC;AAChB,gBAAI,OAAO;AACT,yBAAW,KAAK,CAAC;AACjB,mBAAK,CAAC,IAAI,WAAW,iBAAiB,UAAU,OAAO,OAAO,CAAC,CAAC,IAAI;AACpE,mBAAK,CAAC,IAAI,WAAW,eAAe,KAAK,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC;AAAA,YACtE;AAEA,oBAAQ,OAAO,CAAC;AAChB,gBAAI,OAAO;AACT,mBAAK,CAAC,IAAI;AAAA,YACZ;AAEA,gBAAI,aAAa,eAAe;AAC9B,mBAAK,CAAC,IAAI,KAAK,CAAC,KAAK,OAAO,OAAO,CAAC,IAAI,UAAU,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,YACtE;AAEA,gBAAI,KAAK,CAAC,KAAK,MAAM;AACnB,mBAAK,CAAC,IAAI,OAAO,CAAC;AAAA,YACpB;AAEA,iBAAK,CAAC,IAAI,OAAO,CAAC;AAClB,iBAAK,CAAC,IAAI;AAEV,mBAAO;AAAA,UACT;AAWA,mBAAS,aAAa,QAAQ;AAC5B,gBAAIA,UAAS,CAAC;AACd,gBAAI,UAAU,MAAM;AAClB,uBAAS,OAAOf,QAAO,MAAM,GAAG;AAC9B,gBAAAe,QAAO,KAAK,GAAG;AAAA,cACjB;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AASA,mBAAS,eAAe,OAAO;AAC7B,mBAAO,qBAAqB,KAAK,KAAK;AAAA,UACxC;AAWA,mBAAS,SAAS,MAAMC,QAAO6B,YAAW;AACxC,YAAA7B,SAAQ,UAAUA,WAAUpC,aAAa,KAAK,SAAS,IAAKoC,QAAO,CAAC;AACpE,mBAAO,WAAW;AAChB,kBAAI,OAAO,WACP7B,SAAQ,IACR,SAAS,UAAU,KAAK,SAAS6B,QAAO,CAAC,GACzC,QAAQrB,OAAM,MAAM;AAExB,qBAAO,EAAER,SAAQ,QAAQ;AACvB,sBAAMA,MAAK,IAAI,KAAK6B,SAAQ7B,MAAK;AAAA,cACnC;AACA,cAAAA,SAAQ;AACR,kBAAI,YAAYQ,OAAMqB,SAAQ,CAAC;AAC/B,qBAAO,EAAE7B,SAAQ6B,QAAO;AACtB,0BAAU7B,MAAK,IAAI,KAAKA,MAAK;AAAA,cAC/B;AACA,wBAAU6B,MAAK,IAAI6B,WAAU,KAAK;AAClC,qBAAO,MAAM,MAAM,MAAM,SAAS;AAAA,YACpC;AAAA,UACF;AAUA,mBAAS,OAAO,QAAQ,MAAM;AAC5B,mBAAO,KAAK,SAAS,IAAI,SAAS,QAAQ,QAAQ,UAAU,MAAM,GAAG,EAAE,CAAC;AAAA,UAC1E;AAYA,mBAAS,QAAQ,OAAO,SAAS;AAC/B,gBAAI,YAAY,MAAM,QAClB,SAAS,UAAU,QAAQ,QAAQ,SAAS,GAC5C,WAAW,UAAU,KAAK;AAE9B,mBAAO,UAAU;AACf,kBAAI1D,SAAQ,QAAQ,MAAM;AAC1B,oBAAM,MAAM,IAAI,QAAQA,QAAO,SAAS,IAAI,SAASA,MAAK,IAAIP;AAAA,YAChE;AACA,mBAAO;AAAA,UACT;AAUA,mBAAS,QAAQ,QAAQ,KAAK;AAC5B,gBAAI,QAAQ,iBAAiB,OAAO,OAAO,GAAG,MAAM,YAAY;AAC9D;AAAA,YACF;AAEA,gBAAI,OAAO,aAAa;AACtB;AAAA,YACF;AAEA,mBAAO,OAAO,GAAG;AAAA,UACnB;AAgBA,cAAI4D,WAAU,SAAS,WAAW;AAUlC,cAAId,cAAa,iBAAiB,SAAS,MAAM,MAAM;AACrD,mBAAO,KAAK,WAAW,MAAM,IAAI;AAAA,UACnC;AAUA,cAAI,cAAc,SAAS,eAAe;AAY1C,mBAAS,gBAAgB,SAAS,WAAW,SAAS;AACpD,gBAAI,SAAU,YAAY;AAC1B,mBAAO,YAAY,SAAS,kBAAkB,QAAQ,kBAAkB,eAAe,MAAM,GAAG,OAAO,CAAC,CAAC;AAAA,UAC3G;AAWA,mBAAS,SAAS,MAAM;AACtB,gBAAI,QAAQ,GACR,aAAa;AAEjB,mBAAO,WAAW;AAChB,kBAAI,QAAQ,UAAU,GAClB,YAAY,YAAY,QAAQ;AAEpC,2BAAa;AACb,kBAAI,YAAY,GAAG;AACjB,oBAAI,EAAE,SAAS,WAAW;AACxB,yBAAO,UAAU,CAAC;AAAA,gBACpB;AAAA,cACF,OAAO;AACL,wBAAQ;AAAA,cACV;AACA,qBAAO,KAAK,MAAM9C,YAAW,SAAS;AAAA,YACxC;AAAA,UACF;AAUA,mBAAS,YAAY,OAAOuC,OAAM;AAChC,gBAAIhC,SAAQ,IACR,SAAS,MAAM,QACf,YAAY,SAAS;AAEzB,YAAAgC,QAAOA,UAASvC,aAAY,SAASuC;AACrC,mBAAO,EAAEhC,SAAQgC,OAAM;AACrB,kBAAI,OAAO,WAAWhC,QAAO,SAAS,GAClC,QAAQ,MAAM,IAAI;AAEtB,oBAAM,IAAI,IAAI,MAAMA,MAAK;AACzB,oBAAMA,MAAK,IAAI;AAAA,YACjB;AACA,kBAAM,SAASgC;AACf,mBAAO;AAAA,UACT;AASA,cAAI,eAAe,cAAc,SAAS,QAAQ;AAChD,gBAAIJ,UAAS,CAAC;AACd,gBAAI,OAAO,WAAW,CAAC,MAAM,IAAY;AACvC,cAAAA,QAAO,KAAK,EAAE;AAAA,YAChB;AACA,mBAAO,QAAQ,YAAY,SAAS4B,QAAO,QAAQ,OAAO,WAAW;AACnE,cAAA5B,QAAO,KAAK,QAAQ,UAAU,QAAQ,cAAc,IAAI,IAAK,UAAU4B,MAAM;AAAA,YAC/E,CAAC;AACD,mBAAO5B;AAAA,UACT,CAAC;AASD,mBAAS,MAAM,OAAO;AACpB,gBAAI,OAAO,SAAS,YAAYa,UAAS,KAAK,GAAG;AAC/C,qBAAO;AAAA,YACT;AACA,gBAAIb,UAAU,QAAQ;AACtB,mBAAQA,WAAU,OAAQ,IAAI,SAAU,CAACjC,YAAY,OAAOiC;AAAA,UAC9D;AASA,mBAAS,SAAS,MAAM;AACtB,gBAAI,QAAQ,MAAM;AAChB,kBAAI;AACF,uBAAO,aAAa,KAAK,IAAI;AAAA,cAC/B,SAAS7B,IAAG;AAAA,cAAC;AACb,kBAAI;AACF,uBAAQ,OAAO;AAAA,cACjB,SAASA,IAAG;AAAA,cAAC;AAAA,YACf;AACA,mBAAO;AAAA,UACT;AAUA,mBAAS,kBAAkB,SAAS,SAAS;AAC3C,sBAAU,WAAW,SAAS,MAAM;AAClC,kBAAI,QAAQ,OAAO,KAAK,CAAC;AACzB,kBAAK,UAAU,KAAK,CAAC,KAAM,CAAC,cAAc,SAAS,KAAK,GAAG;AACzD,wBAAQ,KAAK,KAAK;AAAA,cACpB;AAAA,YACF,CAAC;AACD,mBAAO,QAAQ,KAAK;AAAA,UACtB;AASA,mBAAS,aAAa,SAAS;AAC7B,gBAAI,mBAAmB,aAAa;AAClC,qBAAO,QAAQ,MAAM;AAAA,YACvB;AACA,gBAAI6B,UAAS,IAAI,cAAc,QAAQ,aAAa,QAAQ,SAAS;AACrE,YAAAA,QAAO,cAAc,UAAU,QAAQ,WAAW;AAClD,YAAAA,QAAO,YAAa,QAAQ;AAC5B,YAAAA,QAAO,aAAa,QAAQ;AAC5B,mBAAOA;AAAA,UACT;AAyBA,mBAAS,MAAM,OAAOI,OAAM,OAAO;AACjC,gBAAK,QAAQ,eAAe,OAAOA,OAAM,KAAK,IAAIA,UAASvC,YAAY;AACrE,cAAAuC,QAAO;AAAA,YACT,OAAO;AACL,cAAAA,QAAO,UAAUU,WAAUV,KAAI,GAAG,CAAC;AAAA,YACrC;AACA,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,UAAUA,QAAO,GAAG;AACvB,qBAAO,CAAC;AAAA,YACV;AACA,gBAAIhC,SAAQ,GACR,WAAW,GACX4B,UAASpB,OAAM,WAAW,SAASwB,KAAI,CAAC;AAE5C,mBAAOhC,SAAQ,QAAQ;AACrB,cAAA4B,QAAO,UAAU,IAAI,UAAU,OAAO5B,QAAQA,UAASgC,KAAK;AAAA,YAC9D;AACA,mBAAOJ;AAAA,UACT;AAiBA,mBAAS+B,SAAQ,OAAO;AACtB,gBAAI3D,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM,QACnC,WAAW,GACX4B,UAAS,CAAC;AAEd,mBAAO,EAAE5B,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,MAAMA,MAAK;AACvB,kBAAI,OAAO;AACT,gBAAA4B,QAAO,UAAU,IAAI;AAAA,cACvB;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AAwBA,mBAAS,SAAS;AAChB,gBAAI,SAAS,UAAU;AACvB,gBAAI,CAAC,QAAQ;AACX,qBAAO,CAAC;AAAA,YACV;AACA,gBAAI,OAAOpB,OAAM,SAAS,CAAC,GACvB,QAAQ,UAAU,CAAC,GACnBR,SAAQ;AAEZ,mBAAOA,UAAS;AACd,mBAAKA,SAAQ,CAAC,IAAI,UAAUA,MAAK;AAAA,YACnC;AACA,mBAAO,UAAU0B,SAAQ,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC,KAAK,GAAG,YAAY,MAAM,CAAC,CAAC;AAAA,UACpF;AAuBA,cAAI,aAAa,SAAS,SAAS,OAAOO,SAAQ;AAChD,mBAAO,kBAAkB,KAAK,IAC1B,eAAe,OAAO,YAAYA,SAAQ,GAAG,mBAAmB,IAAI,CAAC,IACrE,CAAC;AAAA,UACP,CAAC;AA4BD,cAAI,eAAe,SAAS,SAAS,OAAOA,SAAQ;AAClD,gBAAIH,YAAW,KAAKG,OAAM;AAC1B,gBAAI,kBAAkBH,SAAQ,GAAG;AAC/B,cAAAA,YAAWrC;AAAA,YACb;AACA,mBAAO,kBAAkB,KAAK,IAC1B,eAAe,OAAO,YAAYwC,SAAQ,GAAG,mBAAmB,IAAI,GAAG,YAAYH,WAAU,CAAC,CAAC,IAC/F,CAAC;AAAA,UACP,CAAC;AAyBD,cAAI,iBAAiB,SAAS,SAAS,OAAOG,SAAQ;AACpD,gBAAI,aAAa,KAAKA,OAAM;AAC5B,gBAAI,kBAAkB,UAAU,GAAG;AACjC,2BAAaxC;AAAA,YACf;AACA,mBAAO,kBAAkB,KAAK,IAC1B,eAAe,OAAO,YAAYwC,SAAQ,GAAG,mBAAmB,IAAI,GAAGxC,YAAW,UAAU,IAC5F,CAAC;AAAA,UACP,CAAC;AA2BD,mBAASmE,MAAK,OAAO1D,IAAG,OAAO;AAC7B,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO,CAAC;AAAA,YACV;AACA,YAAAA,KAAK,SAASA,OAAMT,aAAa,IAAIiD,WAAUxC,EAAC;AAChD,mBAAO,UAAU,OAAOA,KAAI,IAAI,IAAIA,IAAG,MAAM;AAAA,UAC/C;AA2BA,mBAAS,UAAU,OAAOA,IAAG,OAAO;AAClC,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO,CAAC;AAAA,YACV;AACA,YAAAA,KAAK,SAASA,OAAMT,aAAa,IAAIiD,WAAUxC,EAAC;AAChD,YAAAA,KAAI,SAASA;AACb,mBAAO,UAAU,OAAO,GAAGA,KAAI,IAAI,IAAIA,EAAC;AAAA,UAC1C;AAqCA,mBAAS,eAAe,OAAO,WAAW;AACxC,mBAAQ,SAAS,MAAM,SACnB,UAAU,OAAO,YAAY,WAAW,CAAC,GAAG,MAAM,IAAI,IACtD,CAAC;AAAA,UACP;AAqCA,mBAAS,UAAU,OAAO,WAAW;AACnC,mBAAQ,SAAS,MAAM,SACnB,UAAU,OAAO,YAAY,WAAW,CAAC,GAAG,IAAI,IAChD,CAAC;AAAA,UACP;AA+BA,mBAAS2D,MAAK,OAAO,OAAOhC,QAAO,KAAK;AACtC,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO,CAAC;AAAA,YACV;AACA,gBAAIA,UAAS,OAAOA,UAAS,YAAY,eAAe,OAAO,OAAOA,MAAK,GAAG;AAC5E,cAAAA,SAAQ;AACR,oBAAM;AAAA,YACR;AACA,mBAAO,SAAS,OAAO,OAAOA,QAAO,GAAG;AAAA,UAC1C;AAqCA,mBAASiC,WAAU,OAAO,WAAW,WAAW;AAC9C,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO;AAAA,YACT;AACA,gBAAI9D,SAAQ,aAAa,OAAO,IAAI0C,WAAU,SAAS;AACvD,gBAAI1C,SAAQ,GAAG;AACb,cAAAA,SAAQ,UAAU,SAASA,QAAO,CAAC;AAAA,YACrC;AACA,mBAAO,cAAc,OAAO,YAAY,WAAW,CAAC,GAAGA,MAAK;AAAA,UAC9D;AAqCA,mBAAS,cAAc,OAAO,WAAW,WAAW;AAClD,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO;AAAA,YACT;AACA,gBAAIA,SAAQ,SAAS;AACrB,gBAAI,cAAcP,YAAW;AAC3B,cAAAO,SAAQ0C,WAAU,SAAS;AAC3B,cAAA1C,SAAQ,YAAY,IAChB,UAAU,SAASA,QAAO,CAAC,IAC3B,UAAUA,QAAO,SAAS,CAAC;AAAA,YACjC;AACA,mBAAO,cAAc,OAAO,YAAY,WAAW,CAAC,GAAGA,QAAO,IAAI;AAAA,UACpE;AAgBA,mBAAS,QAAQ,OAAO;AACtB,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,mBAAO,SAAS,YAAY,OAAO,CAAC,IAAI,CAAC;AAAA,UAC3C;AAgBA,mBAAS,YAAY,OAAO;AAC1B,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,mBAAO,SAAS,YAAY,OAAOL,SAAQ,IAAI,CAAC;AAAA,UAClD;AAsBA,mBAAS,aAAa,OAAO,OAAO;AAClC,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO,CAAC;AAAA,YACV;AACA,oBAAQ,UAAUF,aAAY,IAAIiD,WAAU,KAAK;AACjD,mBAAO,YAAY,OAAO,KAAK;AAAA,UACjC;AAiBA,mBAAS,UAAU,OAAO;AACxB,gBAAI1C,SAAQ,IACR,SAAS,SAAS,OAAO,IAAI,MAAM,QACnC4B,UAAS,CAAC;AAEd,mBAAO,EAAE5B,SAAQ,QAAQ;AACvB,kBAAI,OAAO,MAAMA,MAAK;AACtB,cAAA4B,QAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;AAAA,YAC1B;AACA,mBAAOA;AAAA,UACT;AAoBA,mBAAS,KAAK,OAAO;AACnB,mBAAQ,SAAS,MAAM,SAAU,MAAM,CAAC,IAAInC;AAAA,UAC9C;AAyBA,mBAASsD,SAAQ,OAAO,OAAO,WAAW;AACxC,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO;AAAA,YACT;AACA,gBAAI/C,SAAQ,aAAa,OAAO,IAAI0C,WAAU,SAAS;AACvD,gBAAI1C,SAAQ,GAAG;AACb,cAAAA,SAAQ,UAAU,SAASA,QAAO,CAAC;AAAA,YACrC;AACA,mBAAO,YAAY,OAAO,OAAOA,MAAK;AAAA,UACxC;AAgBA,mBAAS,QAAQ,OAAO;AACtB,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,mBAAO,SAAS,UAAU,OAAO,GAAG,EAAE,IAAI,CAAC;AAAA,UAC7C;AAmBA,cAAI,eAAe,SAAS,SAAS,QAAQ;AAC3C,gBAAI,SAAS,SAAS,QAAQ,mBAAmB;AACjD,mBAAQ,OAAO,UAAU,OAAO,CAAC,MAAM,OAAO,CAAC,IAC3C,iBAAiB,MAAM,IACvB,CAAC;AAAA,UACP,CAAC;AAyBD,cAAI,iBAAiB,SAAS,SAAS,QAAQ;AAC7C,gBAAI8B,YAAW,KAAK,MAAM,GACtB,SAAS,SAAS,QAAQ,mBAAmB;AAEjD,gBAAIA,cAAa,KAAK,MAAM,GAAG;AAC7B,cAAAA,YAAWrC;AAAA,YACb,OAAO;AACL,qBAAO,IAAI;AAAA,YACb;AACA,mBAAQ,OAAO,UAAU,OAAO,CAAC,MAAM,OAAO,CAAC,IAC3C,iBAAiB,QAAQ,YAAYqC,WAAU,CAAC,CAAC,IACjD,CAAC;AAAA,UACP,CAAC;AAuBD,cAAI,mBAAmB,SAAS,SAAS,QAAQ;AAC/C,gBAAI,aAAa,KAAK,MAAM,GACxB,SAAS,SAAS,QAAQ,mBAAmB;AAEjD,yBAAa,OAAO,cAAc,aAAa,aAAarC;AAC5D,gBAAI,YAAY;AACd,qBAAO,IAAI;AAAA,YACb;AACA,mBAAQ,OAAO,UAAU,OAAO,CAAC,MAAM,OAAO,CAAC,IAC3C,iBAAiB,QAAQA,YAAW,UAAU,IAC9C,CAAC;AAAA,UACP,CAAC;AAiBD,mBAAS,KAAK,OAAO,WAAW;AAC9B,mBAAO,SAAS,OAAO,KAAK,WAAW,KAAK,OAAO,SAAS;AAAA,UAC9D;AAgBA,mBAAS,KAAK,OAAO;AACnB,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,mBAAO,SAAS,MAAM,SAAS,CAAC,IAAIA;AAAA,UACtC;AAuBA,mBAAS,YAAY,OAAO,OAAO,WAAW;AAC5C,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO;AAAA,YACT;AACA,gBAAIO,SAAQ;AACZ,gBAAI,cAAcP,YAAW;AAC3B,cAAAO,SAAQ0C,WAAU,SAAS;AAC3B,cAAA1C,SAAQA,SAAQ,IAAI,UAAU,SAASA,QAAO,CAAC,IAAI,UAAUA,QAAO,SAAS,CAAC;AAAA,YAChF;AACA,mBAAO,UAAU,QACb,kBAAkB,OAAO,OAAOA,MAAK,IACrC,cAAc,OAAO,WAAWA,QAAO,IAAI;AAAA,UACjD;AAuBA,mBAAS,IAAI,OAAOE,IAAG;AACrB,mBAAQ,SAAS,MAAM,SAAU,QAAQ,OAAOwC,WAAUxC,EAAC,CAAC,IAAIT;AAAA,UAClE;AAyBA,cAAI,OAAO,SAAS,OAAO;AAsB3B,mBAAS,QAAQ,OAAOwC,SAAQ;AAC9B,mBAAQ,SAAS,MAAM,UAAUA,WAAUA,QAAO,SAC9C,YAAY,OAAOA,OAAM,IACzB;AAAA,UACN;AAyBA,mBAAS,UAAU,OAAOA,SAAQH,WAAU;AAC1C,mBAAQ,SAAS,MAAM,UAAUG,WAAUA,QAAO,SAC9C,YAAY,OAAOA,SAAQ,YAAYH,WAAU,CAAC,CAAC,IACnD;AAAA,UACN;AAyBA,mBAAS,YAAY,OAAOG,SAAQ,YAAY;AAC9C,mBAAQ,SAAS,MAAM,UAAUA,WAAUA,QAAO,SAC9C,YAAY,OAAOA,SAAQxC,YAAW,UAAU,IAChD;AAAA,UACN;AA0BA,cAAI,SAAS,SAAS,SAAS,OAAO,SAAS;AAC7C,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM,QACnCmC,UAAS,OAAO,OAAO,OAAO;AAElC,uBAAW,OAAO,SAAS,SAAS,SAAS5B,QAAO;AAClD,qBAAO,QAAQA,QAAO,MAAM,IAAI,CAACA,SAAQA;AAAA,YAC3C,CAAC,EAAE,KAAK,gBAAgB,CAAC;AAEzB,mBAAO4B;AAAA,UACT,CAAC;AA8BD,mBAAS,OAAO,OAAO,WAAW;AAChC,gBAAIA,UAAS,CAAC;AACd,gBAAI,EAAE,SAAS,MAAM,SAAS;AAC5B,qBAAOA;AAAA,YACT;AACA,gBAAI5B,SAAQ,IACR,UAAU,CAAC,GACX,SAAS,MAAM;AAEnB,wBAAY,YAAY,WAAW,CAAC;AACpC,mBAAO,EAAEA,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,MAAMA,MAAK;AACvB,kBAAI,UAAU,OAAOA,QAAO,KAAK,GAAG;AAClC,gBAAA4B,QAAO,KAAK,KAAK;AACjB,wBAAQ,KAAK5B,MAAK;AAAA,cACpB;AAAA,YACF;AACA,uBAAW,OAAO,OAAO;AACzB,mBAAO4B;AAAA,UACT;AAyBA,mBAAS,QAAQ,OAAO;AACtB,mBAAO,SAAS,OAAO,QAAQ,cAAc,KAAK,KAAK;AAAA,UACzD;AAkBA,mBAAS,MAAM,OAAOC,QAAO,KAAK;AAChC,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO,CAAC;AAAA,YACV;AACA,gBAAI,OAAO,OAAO,OAAO,YAAY,eAAe,OAAOA,QAAO,GAAG,GAAG;AACtE,cAAAA,SAAQ;AACR,oBAAM;AAAA,YACR,OACK;AACH,cAAAA,SAAQA,UAAS,OAAO,IAAIa,WAAUb,MAAK;AAC3C,oBAAM,QAAQpC,aAAY,SAASiD,WAAU,GAAG;AAAA,YAClD;AACA,mBAAO,UAAU,OAAOb,QAAO,GAAG;AAAA,UACpC;AAmBA,mBAAS,YAAY,OAAO,OAAO;AACjC,mBAAO,gBAAgB,OAAO,KAAK;AAAA,UACrC;AA2BA,mBAAS,cAAc,OAAO,OAAOC,WAAU;AAC7C,mBAAO,kBAAkB,OAAO,OAAO,YAAYA,WAAU,CAAC,CAAC;AAAA,UACjE;AAkBA,mBAAS,cAAc,OAAO,OAAO;AACnC,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,QAAQ;AACV,kBAAI9B,SAAQ,gBAAgB,OAAO,KAAK;AACxC,kBAAIA,SAAQ,UAAUmC,IAAG,MAAMnC,MAAK,GAAG,KAAK,GAAG;AAC7C,uBAAOA;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAoBA,mBAAS,gBAAgB,OAAO,OAAO;AACrC,mBAAO,gBAAgB,OAAO,OAAO,IAAI;AAAA,UAC3C;AA2BA,mBAAS,kBAAkB,OAAO,OAAO8B,WAAU;AACjD,mBAAO,kBAAkB,OAAO,OAAO,YAAYA,WAAU,CAAC,GAAG,IAAI;AAAA,UACvE;AAkBA,mBAAS,kBAAkB,OAAO,OAAO;AACvC,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,QAAQ;AACV,kBAAI9B,SAAQ,gBAAgB,OAAO,OAAO,IAAI,IAAI;AAClD,kBAAImC,IAAG,MAAMnC,MAAK,GAAG,KAAK,GAAG;AAC3B,uBAAOA;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAiBA,mBAAS,WAAW,OAAO;AACzB,mBAAQ,SAAS,MAAM,SACnB,eAAe,KAAK,IACpB,CAAC;AAAA,UACP;AAkBA,mBAAS,aAAa,OAAO8B,WAAU;AACrC,mBAAQ,SAAS,MAAM,SACnB,eAAe,OAAO,YAAYA,WAAU,CAAC,CAAC,IAC9C,CAAC;AAAA,UACP;AAgBA,mBAAS,KAAK,OAAO;AACnB,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,mBAAO,SAAS,UAAU,OAAO,GAAG,MAAM,IAAI,CAAC;AAAA,UACjD;AA2BA,mBAAS,KAAK,OAAO5B,IAAG,OAAO;AAC7B,gBAAI,EAAE,SAAS,MAAM,SAAS;AAC5B,qBAAO,CAAC;AAAA,YACV;AACA,YAAAA,KAAK,SAASA,OAAMT,aAAa,IAAIiD,WAAUxC,EAAC;AAChD,mBAAO,UAAU,OAAO,GAAGA,KAAI,IAAI,IAAIA,EAAC;AAAA,UAC1C;AA2BA,mBAAS,UAAU,OAAOA,IAAG,OAAO;AAClC,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM;AACvC,gBAAI,CAAC,QAAQ;AACX,qBAAO,CAAC;AAAA,YACV;AACA,YAAAA,KAAK,SAASA,OAAMT,aAAa,IAAIiD,WAAUxC,EAAC;AAChD,YAAAA,KAAI,SAASA;AACb,mBAAO,UAAU,OAAOA,KAAI,IAAI,IAAIA,IAAG,MAAM;AAAA,UAC/C;AAqCA,mBAAS,eAAe,OAAO,WAAW;AACxC,mBAAQ,SAAS,MAAM,SACnB,UAAU,OAAO,YAAY,WAAW,CAAC,GAAG,OAAO,IAAI,IACvD,CAAC;AAAA,UACP;AAqCA,mBAAS,UAAU,OAAO,WAAW;AACnC,mBAAQ,SAAS,MAAM,SACnB,UAAU,OAAO,YAAY,WAAW,CAAC,CAAC,IAC1C,CAAC;AAAA,UACP;AAkBA,cAAI,QAAQ,SAAS,SAAS,QAAQ;AACpC,mBAAO,SAAS,YAAY,QAAQ,GAAG,mBAAmB,IAAI,CAAC;AAAA,UACjE,CAAC;AAyBD,cAAI,UAAU,SAAS,SAAS,QAAQ;AACtC,gBAAI4B,YAAW,KAAK,MAAM;AAC1B,gBAAI,kBAAkBA,SAAQ,GAAG;AAC/B,cAAAA,YAAWrC;AAAA,YACb;AACA,mBAAO,SAAS,YAAY,QAAQ,GAAG,mBAAmB,IAAI,GAAG,YAAYqC,WAAU,CAAC,CAAC;AAAA,UAC3F,CAAC;AAuBD,cAAI,YAAY,SAAS,SAAS,QAAQ;AACxC,gBAAI,aAAa,KAAK,MAAM;AAC5B,yBAAa,OAAO,cAAc,aAAa,aAAarC;AAC5D,mBAAO,SAAS,YAAY,QAAQ,GAAG,mBAAmB,IAAI,GAAGA,YAAW,UAAU;AAAA,UACxF,CAAC;AAoBD,mBAAS,KAAK,OAAO;AACnB,mBAAQ,SAAS,MAAM,SAAU,SAAS,KAAK,IAAI,CAAC;AAAA,UACtD;AAyBA,mBAAS,OAAO,OAAOqC,WAAU;AAC/B,mBAAQ,SAAS,MAAM,SAAU,SAAS,OAAO,YAAYA,WAAU,CAAC,CAAC,IAAI,CAAC;AAAA,UAChF;AAsBA,mBAAS,SAAS,OAAO,YAAY;AACnC,yBAAa,OAAO,cAAc,aAAa,aAAarC;AAC5D,mBAAQ,SAAS,MAAM,SAAU,SAAS,OAAOA,YAAW,UAAU,IAAI,CAAC;AAAA,UAC7E;AAqBA,mBAAS,MAAM,OAAO;AACpB,gBAAI,EAAE,SAAS,MAAM,SAAS;AAC5B,qBAAO,CAAC;AAAA,YACV;AACA,gBAAI,SAAS;AACb,oBAAQ,YAAY,OAAO,SAAS,OAAO;AACzC,kBAAI,kBAAkB,KAAK,GAAG;AAC5B,yBAAS,UAAU,MAAM,QAAQ,MAAM;AACvC,uBAAO;AAAA,cACT;AAAA,YACF,CAAC;AACD,mBAAO,UAAU,QAAQ,SAASO,QAAO;AACvC,qBAAO,SAAS,OAAO,aAAaA,MAAK,CAAC;AAAA,YAC5C,CAAC;AAAA,UACH;AAuBA,mBAAS,UAAU,OAAO8B,WAAU;AAClC,gBAAI,EAAE,SAAS,MAAM,SAAS;AAC5B,qBAAO,CAAC;AAAA,YACV;AACA,gBAAIF,UAAS,MAAM,KAAK;AACxB,gBAAIE,aAAY,MAAM;AACpB,qBAAOF;AAAA,YACT;AACA,mBAAO,SAASA,SAAQ,SAAS,OAAO;AACtC,qBAAO,MAAME,WAAUrC,YAAW,KAAK;AAAA,YACzC,CAAC;AAAA,UACH;AAsBA,cAAI,UAAU,SAAS,SAAS,OAAOwC,SAAQ;AAC7C,mBAAO,kBAAkB,KAAK,IAC1B,eAAe,OAAOA,OAAM,IAC5B,CAAC;AAAA,UACP,CAAC;AAoBD,cAAI,MAAM,SAAS,SAAS,QAAQ;AAClC,mBAAO,QAAQ,YAAY,QAAQ,iBAAiB,CAAC;AAAA,UACvD,CAAC;AAyBD,cAAI,QAAQ,SAAS,SAAS,QAAQ;AACpC,gBAAIH,YAAW,KAAK,MAAM;AAC1B,gBAAI,kBAAkBA,SAAQ,GAAG;AAC/B,cAAAA,YAAWrC;AAAA,YACb;AACA,mBAAO,QAAQ,YAAY,QAAQ,iBAAiB,GAAG,YAAYqC,WAAU,CAAC,CAAC;AAAA,UACjF,CAAC;AAuBD,cAAI,UAAU,SAAS,SAAS,QAAQ;AACtC,gBAAI,aAAa,KAAK,MAAM;AAC5B,yBAAa,OAAO,cAAc,aAAa,aAAarC;AAC5D,mBAAO,QAAQ,YAAY,QAAQ,iBAAiB,GAAGA,YAAW,UAAU;AAAA,UAC9E,CAAC;AAkBD,cAAI,MAAM,SAAS,KAAK;AAkBxB,mBAAS,UAAU,OAAOwC,SAAQ;AAChC,mBAAO,cAAc,SAAS,CAAC,GAAGA,WAAU,CAAC,GAAG,WAAW;AAAA,UAC7D;AAiBA,mBAAS,cAAc,OAAOA,SAAQ;AACpC,mBAAO,cAAc,SAAS,CAAC,GAAGA,WAAU,CAAC,GAAG,OAAO;AAAA,UACzD;AAsBA,cAAI,UAAU,SAAS,SAAS,QAAQ;AACtC,gBAAI,SAAS,OAAO,QAChBH,YAAW,SAAS,IAAI,OAAO,SAAS,CAAC,IAAIrC;AAEjD,YAAAqC,YAAW,OAAOA,aAAY,cAAc,OAAO,IAAI,GAAGA,aAAYrC;AACtE,mBAAO,UAAU,QAAQqC,SAAQ;AAAA,UACnC,CAAC;AAiCD,mBAAS,MAAM,OAAO;AACpB,gBAAIF,UAAS,OAAO,KAAK;AACzB,YAAAA,QAAO,YAAY;AACnB,mBAAOA;AAAA,UACT;AAyBA,mBAAS,IAAI,OAAO,aAAa;AAC/B,wBAAY,KAAK;AACjB,mBAAO;AAAA,UACT;AAyBA,mBAAS,KAAK,OAAO,aAAa;AAChC,mBAAO,YAAY,KAAK;AAAA,UAC1B;AAkBA,cAAI,YAAY,SAAS,SAAS,OAAO;AACvC,gBAAI,SAAS,MAAM,QACfC,SAAQ,SAAS,MAAM,CAAC,IAAI,GAC5B,QAAQ,KAAK,aACb,cAAc,SAAS,QAAQ;AAAE,qBAAO,OAAO,QAAQ,KAAK;AAAA,YAAG;AAEnE,gBAAI,SAAS,KAAK,KAAK,YAAY,UAC/B,EAAE,iBAAiB,gBAAgB,CAAC,QAAQA,MAAK,GAAG;AACtD,qBAAO,KAAK,KAAK,WAAW;AAAA,YAC9B;AACA,oBAAQ,MAAM,MAAMA,QAAO,CAACA,UAAS,SAAS,IAAI,EAAE;AACpD,kBAAM,YAAY,KAAK;AAAA,cACrB,QAAQ;AAAA,cACR,QAAQ,CAAC,WAAW;AAAA,cACpB,WAAWpC;AAAA,YACb,CAAC;AACD,mBAAO,IAAI,cAAc,OAAO,KAAK,SAAS,EAAE,KAAK,SAAS,OAAO;AACnE,kBAAI,UAAU,CAAC,MAAM,QAAQ;AAC3B,sBAAM,KAAKA,UAAS;AAAA,cACtB;AACA,qBAAO;AAAA,YACT,CAAC;AAAA,UACH,CAAC;AA6BD,mBAAS,eAAe;AACtB,mBAAO,MAAM,IAAI;AAAA,UACnB;AA4BA,mBAAS,gBAAgB;AACvB,mBAAO,IAAI,cAAc,KAAK,MAAM,GAAG,KAAK,SAAS;AAAA,UACvD;AAwBA,mBAAS,cAAc;AACrB,gBAAI,KAAK,eAAeA,YAAW;AACjC,mBAAK,aAAasE,SAAQ,KAAK,MAAM,CAAC;AAAA,YACxC;AACA,gBAAI,OAAO,KAAK,aAAa,KAAK,WAAW,QACzC,QAAQ,OAAOtE,aAAY,KAAK,WAAW,KAAK,WAAW;AAE/D,mBAAO,EAAE,QAAQ,MAAM,SAAS,MAAM;AAAA,UACxC;AAoBA,mBAAS,oBAAoB;AAC3B,mBAAO;AAAA,UACT;AA0BA,mBAAS,aAAa,OAAO;AAC3B,gBAAImC,SACAoC,UAAS;AAEb,mBAAOA,mBAAkB,YAAY;AACnC,kBAAIC,SAAQ,aAAaD,OAAM;AAC/B,cAAAC,OAAM,YAAY;AAClB,cAAAA,OAAM,aAAaxE;AACnB,kBAAImC,SAAQ;AACV,yBAAS,cAAcqC;AAAA,cACzB,OAAO;AACL,gBAAArC,UAASqC;AAAA,cACX;AACA,kBAAI,WAAWA;AACf,cAAAD,UAASA,QAAO;AAAA,YAClB;AACA,qBAAS,cAAc;AACvB,mBAAOpC;AAAA,UACT;AAsBA,mBAAS,iBAAiB;AACxB,gBAAI,QAAQ,KAAK;AACjB,gBAAI,iBAAiB,aAAa;AAChC,kBAAI,UAAU;AACd,kBAAI,KAAK,YAAY,QAAQ;AAC3B,0BAAU,IAAI,YAAY,IAAI;AAAA,cAChC;AACA,wBAAU,QAAQ,QAAQ;AAC1B,sBAAQ,YAAY,KAAK;AAAA,gBACvB,QAAQ;AAAA,gBACR,QAAQ,CAAC,OAAO;AAAA,gBAChB,WAAWnC;AAAA,cACb,CAAC;AACD,qBAAO,IAAI,cAAc,SAAS,KAAK,SAAS;AAAA,YAClD;AACA,mBAAO,KAAK,KAAK,OAAO;AAAA,UAC1B;AAgBA,mBAAS,eAAe;AACtB,mBAAO,iBAAiB,KAAK,aAAa,KAAK,WAAW;AAAA,UAC5D;AA0BA,cAAI,UAAU,iBAAiB,SAASmC,SAAQ,OAAO,KAAK;AAC1D,gBAAI,eAAe,KAAKA,SAAQ,GAAG,GAAG;AACpC,gBAAEA,QAAO,GAAG;AAAA,YACd,OAAO;AACL,8BAAgBA,SAAQ,KAAK,CAAC;AAAA,YAChC;AAAA,UACF,CAAC;AA2CD,mBAASsC,OAAM,YAAY,WAAW,OAAO;AAC3C,gBAAI,OAAOxC,SAAQ,UAAU,IAAI,aAAa;AAC9C,gBAAI,SAAS,eAAe,YAAY,WAAW,KAAK,GAAG;AACzD,0BAAYjC;AAAA,YACd;AACA,mBAAO,KAAK,YAAY,YAAY,WAAW,CAAC,CAAC;AAAA,UACnD;AA2CA,mBAAS,OAAO,YAAY,WAAW;AACrC,gBAAI,OAAOiC,SAAQ,UAAU,IAAI,cAAc;AAC/C,mBAAO,KAAK,YAAY,YAAY,WAAW,CAAC,CAAC;AAAA,UACnD;AAsCA,cAAIyC,QAAO,WAAWL,UAAS;AAqB/B,cAAI,WAAW,WAAW,aAAa;AAuBvC,mBAAS,QAAQ,YAAYhC,WAAU;AACrC,mBAAO,YAAY1B,KAAI,YAAY0B,SAAQ,GAAG,CAAC;AAAA,UACjD;AAsBA,mBAAS,YAAY,YAAYA,WAAU;AACzC,mBAAO,YAAY1B,KAAI,YAAY0B,SAAQ,GAAGnC,SAAQ;AAAA,UACxD;AAuBA,mBAAS,aAAa,YAAYmC,WAAU,OAAO;AACjD,oBAAQ,UAAUrC,aAAY,IAAIiD,WAAU,KAAK;AACjD,mBAAO,YAAYtC,KAAI,YAAY0B,SAAQ,GAAG,KAAK;AAAA,UACrD;AAgCA,mBAASsC,SAAQ,YAAYtC,WAAU;AACrC,gBAAI,OAAOJ,SAAQ,UAAU,IAAI,YAAY;AAC7C,mBAAO,KAAK,YAAY,YAAYI,WAAU,CAAC,CAAC;AAAA,UAClD;AAsBA,mBAAS,aAAa,YAAYA,WAAU;AAC1C,gBAAI,OAAOJ,SAAQ,UAAU,IAAI,iBAAiB;AAClD,mBAAO,KAAK,YAAY,YAAYI,WAAU,CAAC,CAAC;AAAA,UAClD;AAyBA,cAAI,UAAU,iBAAiB,SAASF,SAAQ,OAAO,KAAK;AAC1D,gBAAI,eAAe,KAAKA,SAAQ,GAAG,GAAG;AACpC,cAAAA,QAAO,GAAG,EAAE,KAAK,KAAK;AAAA,YACxB,OAAO;AACL,8BAAgBA,SAAQ,KAAK,CAAC,KAAK,CAAC;AAAA,YACtC;AAAA,UACF,CAAC;AAgCD,mBAAS,SAAS,YAAY,OAAO,WAAW,OAAO;AACrD,yBAAa,YAAY,UAAU,IAAI,aAAa,OAAO,UAAU;AACrE,wBAAa,aAAa,CAAC,QAASc,WAAU,SAAS,IAAI;AAE3D,gBAAI,SAAS,WAAW;AACxB,gBAAI,YAAY,GAAG;AACjB,0BAAY,UAAU,SAAS,WAAW,CAAC;AAAA,YAC7C;AACA,mBAAO2B,UAAS,UAAU,IACrB,aAAa,UAAU,WAAW,QAAQ,OAAO,SAAS,IAAI,KAC9D,CAAC,CAAC,UAAU,YAAY,YAAY,OAAO,SAAS,IAAI;AAAA,UAC/D;AAyBA,cAAI,YAAY,SAAS,SAAS,YAAY,MAAM,MAAM;AACxD,gBAAIrE,SAAQ,IACR,SAAS,OAAO,QAAQ,YACxB4B,UAAS,YAAY,UAAU,IAAIpB,OAAM,WAAW,MAAM,IAAI,CAAC;AAEnE,qBAAS,YAAY,SAAS,OAAO;AACnC,cAAAoB,QAAO,EAAE5B,MAAK,IAAI,SAAS,MAAM,MAAM,OAAO,IAAI,IAAI,WAAW,OAAO,MAAM,IAAI;AAAA,YACpF,CAAC;AACD,mBAAO4B;AAAA,UACT,CAAC;AA8BD,cAAI,QAAQ,iBAAiB,SAASA,SAAQ,OAAO,KAAK;AACxD,4BAAgBA,SAAQ,KAAK,KAAK;AAAA,UACpC,CAAC;AA4CD,mBAASxB,KAAI,YAAY0B,WAAU;AACjC,gBAAI,OAAOJ,SAAQ,UAAU,IAAI,WAAW;AAC5C,mBAAO,KAAK,YAAY,YAAYI,WAAU,CAAC,CAAC;AAAA,UAClD;AA+BA,mBAAS,QAAQ,YAAY,WAAW,QAAQ,OAAO;AACrD,gBAAI,cAAc,MAAM;AACtB,qBAAO,CAAC;AAAA,YACV;AACA,gBAAI,CAACJ,SAAQ,SAAS,GAAG;AACvB,0BAAY,aAAa,OAAO,CAAC,IAAI,CAAC,SAAS;AAAA,YACjD;AACA,qBAAS,QAAQjC,aAAY;AAC7B,gBAAI,CAACiC,SAAQ,MAAM,GAAG;AACpB,uBAAS,UAAU,OAAO,CAAC,IAAI,CAAC,MAAM;AAAA,YACxC;AACA,mBAAO,YAAY,YAAY,WAAW,MAAM;AAAA,UAClD;AAsCA,cAAI,YAAY,iBAAiB,SAASE,SAAQ,OAAO,KAAK;AAC5D,YAAAA,QAAO,MAAM,IAAI,CAAC,EAAE,KAAK,KAAK;AAAA,UAChC,GAAG,WAAW;AAAE,mBAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,UAAG,CAAC;AAuClC,mBAAS,OAAO,YAAYE,WAAU,aAAa;AACjD,gBAAI,OAAOJ,SAAQ,UAAU,IAAI,cAAc,YAC3C,YAAY,UAAU,SAAS;AAEnC,mBAAO,KAAK,YAAY,YAAYI,WAAU,CAAC,GAAG,aAAa,WAAW,QAAQ;AAAA,UACpF;AAwBA,mBAAS,YAAY,YAAYA,WAAU,aAAa;AACtD,gBAAI,OAAOJ,SAAQ,UAAU,IAAI,mBAAmB,YAChD,YAAY,UAAU,SAAS;AAEnC,mBAAO,KAAK,YAAY,YAAYI,WAAU,CAAC,GAAG,aAAa,WAAW,aAAa;AAAA,UACzF;AAoCA,mBAAS,OAAO,YAAY,WAAW;AACrC,gBAAI,OAAOJ,SAAQ,UAAU,IAAI,cAAc;AAC/C,mBAAO,KAAK,YAAY,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC;AAAA,UAC3D;AAgBA,mBAAS4C,QAAO,YAAY;AAC1B,gBAAI,OAAO5C,SAAQ,UAAU,IAAI,cAAc;AAC/C,mBAAO,KAAK,UAAU;AAAA,UACxB;AAsBA,mBAAS,WAAW,YAAYxB,IAAG,OAAO;AACxC,gBAAK,QAAQ,eAAe,YAAYA,IAAG,KAAK,IAAIA,OAAMT,YAAY;AACpE,cAAAS,KAAI;AAAA,YACN,OAAO;AACL,cAAAA,KAAIwC,WAAUxC,EAAC;AAAA,YACjB;AACA,gBAAI,OAAOwB,SAAQ,UAAU,IAAI,kBAAkB;AACnD,mBAAO,KAAK,YAAYxB,EAAC;AAAA,UAC3B;AAiBA,mBAAS,QAAQ,YAAY;AAC3B,gBAAI,OAAOwB,SAAQ,UAAU,IAAI,eAAe;AAChD,mBAAO,KAAK,UAAU;AAAA,UACxB;AAuBA,mBAAS,KAAK,YAAY;AACxB,gBAAI,cAAc,MAAM;AACtB,qBAAO;AAAA,YACT;AACA,gBAAI,YAAY,UAAU,GAAG;AAC3B,qBAAO2C,UAAS,UAAU,IAAI,WAAW,UAAU,IAAI,WAAW;AAAA,YACpE;AACA,gBAAI,MAAM,OAAO,UAAU;AAC3B,gBAAI,OAAO,UAAU,OAAO,QAAQ;AAClC,qBAAO,WAAW;AAAA,YACpB;AACA,mBAAO,SAAS,UAAU,EAAE;AAAA,UAC9B;AAsCA,mBAAS,KAAK,YAAY,WAAW,OAAO;AAC1C,gBAAI,OAAO3C,SAAQ,UAAU,IAAI,YAAY;AAC7C,gBAAI,SAAS,eAAe,YAAY,WAAW,KAAK,GAAG;AACzD,0BAAYjC;AAAA,YACd;AACA,mBAAO,KAAK,YAAY,YAAY,WAAW,CAAC,CAAC;AAAA,UACnD;AA+BA,cAAI,SAAS,SAAS,SAAS,YAAY,WAAW;AACpD,gBAAI,cAAc,MAAM;AACtB,qBAAO,CAAC;AAAA,YACV;AACA,gBAAI,SAAS,UAAU;AACvB,gBAAI,SAAS,KAAK,eAAe,YAAY,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG;AACxE,0BAAY,CAAC;AAAA,YACf,WAAW,SAAS,KAAK,eAAe,UAAU,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG;AACjF,0BAAY,CAAC,UAAU,CAAC,CAAC;AAAA,YAC3B;AACA,mBAAO,YAAY,YAAY,YAAY,WAAW,CAAC,GAAG,CAAC,CAAC;AAAA,UAC9D,CAAC;AAoBD,cAAI8E,OAAM,UAAU,WAAW;AAC7B,mBAAO,KAAK,KAAK,IAAI;AAAA,UACvB;AA4BA,mBAAS,MAAMrE,IAAG,MAAM;AACtB,gBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAM,IAAIc,WAAU,eAAe;AAAA,YACrC;AACA,YAAAd,KAAIwC,WAAUxC,EAAC;AACf,mBAAO,WAAW;AAChB,kBAAI,EAAEA,KAAI,GAAG;AACX,uBAAO,KAAK,MAAM,MAAM,SAAS;AAAA,cACnC;AAAA,YACF;AAAA,UACF;AAmBA,mBAAS,IAAI,MAAMA,IAAG,OAAO;AAC3B,YAAAA,KAAI,QAAQT,aAAYS;AACxB,YAAAA,KAAK,QAAQA,MAAK,OAAQ,KAAK,SAASA;AACxC,mBAAO,WAAW,MAAM,eAAeT,YAAWA,YAAWA,YAAWA,YAAWS,EAAC;AAAA,UACtF;AAmBA,mBAAS,OAAOA,IAAG,MAAM;AACvB,gBAAI0B;AACJ,gBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAM,IAAIZ,WAAU,eAAe;AAAA,YACrC;AACA,YAAAd,KAAIwC,WAAUxC,EAAC;AACf,mBAAO,WAAW;AAChB,kBAAI,EAAEA,KAAI,GAAG;AACX,gBAAA0B,UAAS,KAAK,MAAM,MAAM,SAAS;AAAA,cACrC;AACA,kBAAI1B,MAAK,GAAG;AACV,uBAAOT;AAAA,cACT;AACA,qBAAOmC;AAAA,YACT;AAAA,UACF;AAqCA,cAAI,OAAO,SAAS,SAAS,MAAM,SAAS,UAAU;AACpD,gBAAI,UAAU;AACd,gBAAI,SAAS,QAAQ;AACnB,kBAAI,UAAU,eAAe,UAAU,UAAU,IAAI,CAAC;AACtD,yBAAW;AAAA,YACb;AACA,mBAAO,WAAW,MAAM,SAAS,SAAS,UAAU,OAAO;AAAA,UAC7D,CAAC;AA+CD,cAAI,UAAU,SAAS,SAAS,QAAQ,KAAK,UAAU;AACrD,gBAAI,UAAU,iBAAiB;AAC/B,gBAAI,SAAS,QAAQ;AACnB,kBAAI,UAAU,eAAe,UAAU,UAAU,OAAO,CAAC;AACzD,yBAAW;AAAA,YACb;AACA,mBAAO,WAAW,KAAK,SAAS,QAAQ,UAAU,OAAO;AAAA,UAC3D,CAAC;AA2CD,mBAAS,MAAM,MAAM,OAAO,OAAO;AACjC,oBAAQ,QAAQnC,aAAY;AAC5B,gBAAImC,UAAS,WAAW,MAAM,iBAAiBnC,YAAWA,YAAWA,YAAWA,YAAWA,YAAW,KAAK;AAC3G,YAAAmC,QAAO,cAAc,MAAM;AAC3B,mBAAOA;AAAA,UACT;AAwCA,mBAAS,WAAW,MAAM,OAAO,OAAO;AACtC,oBAAQ,QAAQnC,aAAY;AAC5B,gBAAImC,UAAS,WAAW,MAAM,uBAAuBnC,YAAWA,YAAWA,YAAWA,YAAWA,YAAW,KAAK;AACjH,YAAAmC,QAAO,cAAc,WAAW;AAChC,mBAAOA;AAAA,UACT;AAwDA,mBAAS4C,UAAS,MAAM,MAAM,SAAS;AACrC,gBAAI,UACA,UACA,SACA5C,SACA,SACA,cACA,iBAAiB,GACjB,UAAU,OACV,SAAS,OACT,WAAW;AAEf,gBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAM,IAAIZ,WAAU,eAAe;AAAA,YACrC;AACA,mBAAO,SAAS,IAAI,KAAK;AACzB,gBAAIW,UAAS,OAAO,GAAG;AACrB,wBAAU,CAAC,CAAC,QAAQ;AACpB,uBAAS,aAAa;AACtB,wBAAU,SAAS,UAAU,SAAS,QAAQ,OAAO,KAAK,GAAG,IAAI,IAAI;AACrE,yBAAW,cAAc,UAAU,CAAC,CAAC,QAAQ,WAAW;AAAA,YAC1D;AAEA,qBAAS,WAAW,MAAM;AACxB,kBAAI,OAAO,UACP,UAAU;AAEd,yBAAW,WAAWlC;AACtB,+BAAiB;AACjB,cAAAmC,UAAS,KAAK,MAAM,SAAS,IAAI;AACjC,qBAAOA;AAAA,YACT;AAEA,qBAAS,YAAY,MAAM;AAEzB,+BAAiB;AAEjB,wBAAUW,YAAW,cAAc,IAAI;AAEvC,qBAAO,UAAU,WAAW,IAAI,IAAIX;AAAA,YACtC;AAEA,qBAAS,cAAc,MAAM;AAC3B,kBAAI,oBAAoB,OAAO,cAC3B,sBAAsB,OAAO,gBAC7B,cAAc,OAAO;AAEzB,qBAAO,SACH,UAAU,aAAa,UAAU,mBAAmB,IACpD;AAAA,YACN;AAEA,qBAAS,aAAa,MAAM;AAC1B,kBAAI,oBAAoB,OAAO,cAC3B,sBAAsB,OAAO;AAKjC,qBAAQ,iBAAiBnC,cAAc,qBAAqB,QACzD,oBAAoB,KAAO,UAAU,uBAAuB;AAAA,YACjE;AAEA,qBAAS,eAAe;AACtB,kBAAI,OAAO8E,KAAI;AACf,kBAAI,aAAa,IAAI,GAAG;AACtB,uBAAO,aAAa,IAAI;AAAA,cAC1B;AAEA,wBAAUhC,YAAW,cAAc,cAAc,IAAI,CAAC;AAAA,YACxD;AAEA,qBAAS,aAAa,MAAM;AAC1B,wBAAU9C;AAIV,kBAAI,YAAY,UAAU;AACxB,uBAAO,WAAW,IAAI;AAAA,cACxB;AACA,yBAAW,WAAWA;AACtB,qBAAOmC;AAAA,YACT;AAEA,qBAAS,SAAS;AAChB,kBAAI,YAAYnC,YAAW;AACzB,gBAAAuD,cAAa,OAAO;AAAA,cACtB;AACA,+BAAiB;AACjB,yBAAW,eAAe,WAAW,UAAUvD;AAAA,YACjD;AAEA,qBAAS,QAAQ;AACf,qBAAO,YAAYA,aAAYmC,UAAS,aAAa2C,KAAI,CAAC;AAAA,YAC5D;AAEA,qBAAS,YAAY;AACnB,kBAAI,OAAOA,KAAI,GACX,aAAa,aAAa,IAAI;AAElC,yBAAW;AACX,yBAAW;AACX,6BAAe;AAEf,kBAAI,YAAY;AACd,oBAAI,YAAY9E,YAAW;AACzB,yBAAO,YAAY,YAAY;AAAA,gBACjC;AACA,oBAAI,QAAQ;AAEV,kBAAAuD,cAAa,OAAO;AACpB,4BAAUT,YAAW,cAAc,IAAI;AACvC,yBAAO,WAAW,YAAY;AAAA,gBAChC;AAAA,cACF;AACA,kBAAI,YAAY9C,YAAW;AACzB,0BAAU8C,YAAW,cAAc,IAAI;AAAA,cACzC;AACA,qBAAOX;AAAA,YACT;AACA,sBAAU,SAAS;AACnB,sBAAU,QAAQ;AAClB,mBAAO;AAAA,UACT;AAoBA,cAAI,QAAQ,SAAS,SAAS,MAAM,MAAM;AACxC,mBAAO,UAAU,MAAM,GAAG,IAAI;AAAA,UAChC,CAAC;AAqBD,cAAI,QAAQ,SAAS,SAAS,MAAM,MAAM,MAAM;AAC9C,mBAAO,UAAU,MAAM,SAAS,IAAI,KAAK,GAAG,IAAI;AAAA,UAClD,CAAC;AAoBD,mBAAS,KAAK,MAAM;AAClB,mBAAO,WAAW,MAAM,cAAc;AAAA,UACxC;AA8CA,mBAAS6B,SAAQ,MAAM,UAAU;AAC/B,gBAAI,OAAO,QAAQ,cAAe,YAAY,QAAQ,OAAO,YAAY,YAAa;AACpF,oBAAM,IAAIzC,WAAU,eAAe;AAAA,YACrC;AACA,gBAAI,WAAW,WAAW;AACxB,kBAAI,OAAO,WACP,MAAM,WAAW,SAAS,MAAM,MAAM,IAAI,IAAI,KAAK,CAAC,GACpDb,SAAQ,SAAS;AAErB,kBAAIA,OAAM,IAAI,GAAG,GAAG;AAClB,uBAAOA,OAAM,IAAI,GAAG;AAAA,cACtB;AACA,kBAAIyB,UAAS,KAAK,MAAM,MAAM,IAAI;AAClC,uBAAS,QAAQzB,OAAM,IAAI,KAAKyB,OAAM,KAAKzB;AAC3C,qBAAOyB;AAAA,YACT;AACA,qBAAS,QAAQ,KAAK6B,SAAQ,SAAS;AACvC,mBAAO;AAAA,UACT;AAGA,UAAAA,SAAQ,QAAQ;AAsBhB,mBAAS,OAAO,WAAW;AACzB,gBAAI,OAAO,aAAa,YAAY;AAClC,oBAAM,IAAIzC,WAAU,eAAe;AAAA,YACrC;AACA,mBAAO,WAAW;AAChB,kBAAI,OAAO;AACX,sBAAQ,KAAK,QAAQ;AAAA,gBACnB,KAAK;AAAG,yBAAO,CAAC,UAAU,KAAK,IAAI;AAAA,gBACnC,KAAK;AAAG,yBAAO,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC,CAAC;AAAA,gBAC5C,KAAK;AAAG,yBAAO,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,gBACrD,KAAK;AAAG,yBAAO,CAAC,UAAU,KAAK,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,cAChE;AACA,qBAAO,CAAC,UAAU,MAAM,MAAM,IAAI;AAAA,YACpC;AAAA,UACF;AAoBA,mBAASyD,MAAK,MAAM;AAClB,mBAAO,OAAO,GAAG,IAAI;AAAA,UACvB;AAiCA,cAAI,WAAW,SAAS,SAAS,MAAM,YAAY;AACjD,yBAAc,WAAW,UAAU,KAAK/C,SAAQ,WAAW,CAAC,CAAC,IACzD,SAAS,WAAW,CAAC,GAAG,UAAU,YAAY,CAAC,CAAC,IAChD,SAAS,YAAY,YAAY,CAAC,GAAG,UAAU,YAAY,CAAC,CAAC;AAEjE,gBAAI,cAAc,WAAW;AAC7B,mBAAO,SAAS,SAAS,MAAM;AAC7B,kBAAI1B,SAAQ,IACR,SAAS,UAAU,KAAK,QAAQ,WAAW;AAE/C,qBAAO,EAAEA,SAAQ,QAAQ;AACvB,qBAAKA,MAAK,IAAI,WAAWA,MAAK,EAAE,KAAK,MAAM,KAAKA,MAAK,CAAC;AAAA,cACxD;AACA,qBAAO,MAAM,MAAM,MAAM,IAAI;AAAA,YAC/B,CAAC;AAAA,UACH,CAAC;AAmCD,cAAI,UAAU,SAAS,SAAS,MAAM,UAAU;AAC9C,gBAAI,UAAU,eAAe,UAAU,UAAU,OAAO,CAAC;AACzD,mBAAO,WAAW,MAAM,mBAAmBP,YAAW,UAAU,OAAO;AAAA,UACzE,CAAC;AAkCD,cAAI,eAAe,SAAS,SAAS,MAAM,UAAU;AACnD,gBAAI,UAAU,eAAe,UAAU,UAAU,YAAY,CAAC;AAC9D,mBAAO,WAAW,MAAM,yBAAyBA,YAAW,UAAU,OAAO;AAAA,UAC/E,CAAC;AAwBD,cAAI,QAAQ,SAAS,SAAS,MAAM,SAAS;AAC3C,mBAAO,WAAW,MAAM,iBAAiBA,YAAWA,YAAWA,YAAW,OAAO;AAAA,UACnF,CAAC;AA2BD,mBAAS,KAAK,MAAMoC,QAAO;AACzB,gBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAM,IAAIb,WAAU,eAAe;AAAA,YACrC;AACA,YAAAa,SAAQA,WAAUpC,aAAYoC,SAAQa,WAAUb,MAAK;AACrD,mBAAO,SAAS,MAAMA,MAAK;AAAA,UAC7B;AAoCA,mBAAS,OAAO,MAAMA,QAAO;AAC3B,gBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAM,IAAIb,WAAU,eAAe;AAAA,YACrC;AACA,YAAAa,SAAQA,UAAS,OAAO,IAAI,UAAUa,WAAUb,MAAK,GAAG,CAAC;AACzD,mBAAO,SAAS,SAAS,MAAM;AAC7B,kBAAI,QAAQ,KAAKA,MAAK,GAClB,YAAY,UAAU,MAAM,GAAGA,MAAK;AAExC,kBAAI,OAAO;AACT,0BAAU,WAAW,KAAK;AAAA,cAC5B;AACA,qBAAO,MAAM,MAAM,MAAM,SAAS;AAAA,YACpC,CAAC;AAAA,UACH;AA8CA,mBAAS6C,UAAS,MAAM,MAAM,SAAS;AACrC,gBAAI,UAAU,MACV,WAAW;AAEf,gBAAI,OAAO,QAAQ,YAAY;AAC7B,oBAAM,IAAI1D,WAAU,eAAe;AAAA,YACrC;AACA,gBAAIW,UAAS,OAAO,GAAG;AACrB,wBAAU,aAAa,UAAU,CAAC,CAAC,QAAQ,UAAU;AACrD,yBAAW,cAAc,UAAU,CAAC,CAAC,QAAQ,WAAW;AAAA,YAC1D;AACA,mBAAO6C,UAAS,MAAM,MAAM;AAAA,cAC1B,WAAW;AAAA,cACX,WAAW;AAAA,cACX,YAAY;AAAA,YACd,CAAC;AAAA,UACH;AAiBA,mBAAS,MAAM,MAAM;AACnB,mBAAO,IAAI,MAAM,CAAC;AAAA,UACpB;AAwBA,mBAAS,KAAK,OAAO,SAAS;AAC5B,mBAAO,QAAQ,aAAa,OAAO,GAAG,KAAK;AAAA,UAC7C;AAqCA,mBAAS,YAAY;AACnB,gBAAI,CAAC,UAAU,QAAQ;AACrB,qBAAO,CAAC;AAAA,YACV;AACA,gBAAI,QAAQ,UAAU,CAAC;AACvB,mBAAO9C,SAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,UACxC;AA4BA,mBAASuC,OAAM,OAAO;AACpB,mBAAO,UAAU,OAAO,kBAAkB;AAAA,UAC5C;AAiCA,mBAAS,UAAU,OAAO,YAAY;AACpC,yBAAa,OAAO,cAAc,aAAa,aAAaxE;AAC5D,mBAAO,UAAU,OAAO,oBAAoB,UAAU;AAAA,UACxD;AAoBA,mBAAS,UAAU,OAAO;AACxB,mBAAO,UAAU,OAAO,kBAAkB,kBAAkB;AAAA,UAC9D;AA8BA,mBAAS,cAAc,OAAO,YAAY;AACxC,yBAAa,OAAO,cAAc,aAAa,aAAaA;AAC5D,mBAAO,UAAU,OAAO,kBAAkB,oBAAoB,UAAU;AAAA,UAC1E;AA0BA,mBAAS,WAAW,QAAQ,QAAQ;AAClC,mBAAO,UAAU,QAAQ,eAAe,QAAQ,QAAQ,KAAK,MAAM,CAAC;AAAA,UACtE;AAkCA,mBAAS0C,IAAG,OAAO,OAAO;AACxB,mBAAO,UAAU,SAAU,UAAU,SAAS,UAAU;AAAA,UAC1D;AAyBA,cAAI,KAAK,0BAA0B,MAAM;AAyBzC,cAAI,MAAM,0BAA0B,SAAS,OAAO,OAAO;AACzD,mBAAO,SAAS;AAAA,UAClB,CAAC;AAoBD,cAAI,cAAc,gBAAgB,4BAAW;AAAE,mBAAO;AAAA,UAAW,GAAE,CAAC,IAAI,kBAAkB,SAAS,OAAO;AACxG,mBAAO,aAAa,KAAK,KAAK,eAAe,KAAK,OAAO,QAAQ,KAC/D,CAAC,qBAAqB,KAAK,OAAO,QAAQ;AAAA,UAC9C;AAyBA,cAAIT,WAAUlB,OAAM;AAmBpB,cAAI,gBAAgB,oBAAoB,UAAU,iBAAiB,IAAI;AA2BvE,mBAAS,YAAY,OAAO;AAC1B,mBAAO,SAAS,QAAQ,SAAS,MAAM,MAAM,KAAK,CAACmC,YAAW,KAAK;AAAA,UACrE;AA2BA,mBAAS,kBAAkB,OAAO;AAChC,mBAAO,aAAa,KAAK,KAAK,YAAY,KAAK;AAAA,UACjD;AAmBA,mBAASgC,WAAU,OAAO;AACxB,mBAAO,UAAU,QAAQ,UAAU,SAChC,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACjD;AAmBA,cAAIzC,YAAW,kBAAkB;AAmBjC,cAAI0C,UAAS,aAAa,UAAU,UAAU,IAAI;AAmBlD,mBAAS,UAAU,OAAO;AACxB,mBAAO,aAAa,KAAK,KAAK,MAAM,aAAa,KAAK,CAAC9B,eAAc,KAAK;AAAA,UAC5E;AAmCA,mBAAS,QAAQ,OAAO;AACtB,gBAAI,SAAS,MAAM;AACjB,qBAAO;AAAA,YACT;AACA,gBAAI,YAAY,KAAK,MAChBpB,SAAQ,KAAK,KAAK,OAAO,SAAS,YAAY,OAAO,MAAM,UAAU,cACpEQ,UAAS,KAAK,KAAK,aAAa,KAAK,KAAK,YAAY,KAAK,IAAI;AACnE,qBAAO,CAAC,MAAM;AAAA,YAChB;AACA,gBAAI,MAAM,OAAO,KAAK;AACtB,gBAAI,OAAO,UAAU,OAAO,QAAQ;AAClC,qBAAO,CAAC,MAAM;AAAA,YAChB;AACA,gBAAI,YAAY,KAAK,GAAG;AACtB,qBAAO,CAAC,SAAS,KAAK,EAAE;AAAA,YAC1B;AACA,qBAAS,OAAO,OAAO;AACrB,kBAAI,eAAe,KAAK,OAAO,GAAG,GAAG;AACnC,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AA8BA,mBAAS,QAAQ,OAAO,OAAO;AAC7B,mBAAO,YAAY,OAAO,KAAK;AAAA,UACjC;AAkCA,mBAAS,YAAY,OAAO,OAAO,YAAY;AAC7C,yBAAa,OAAO,cAAc,aAAa,aAAazC;AAC5D,gBAAImC,UAAS,aAAa,WAAW,OAAO,KAAK,IAAInC;AACrD,mBAAOmC,YAAWnC,aAAY,YAAY,OAAO,OAAOA,YAAW,UAAU,IAAI,CAAC,CAACmC;AAAA,UACrF;AAoBA,mBAASiD,SAAQ,OAAO;AACtB,gBAAI,CAAC,aAAa,KAAK,GAAG;AACxB,qBAAO;AAAA,YACT;AACA,gBAAI,MAAM,WAAW,KAAK;AAC1B,mBAAO,OAAO,YAAY,OAAO,aAC9B,OAAO,MAAM,WAAW,YAAY,OAAO,MAAM,QAAQ,YAAY,CAAC/B,eAAc,KAAK;AAAA,UAC9F;AA4BA,mBAASgC,UAAS,OAAO;AACvB,mBAAO,OAAO,SAAS,YAAY,eAAe,KAAK;AAAA,UACzD;AAmBA,mBAASnC,YAAW,OAAO;AACzB,gBAAI,CAAChB,UAAS,KAAK,GAAG;AACpB,qBAAO;AAAA,YACT;AAGA,gBAAI,MAAM,WAAW,KAAK;AAC1B,mBAAO,OAAO,WAAW,OAAO,UAAU,OAAO,YAAY,OAAO;AAAA,UACtE;AA4BA,mBAAS,UAAU,OAAO;AACxB,mBAAO,OAAO,SAAS,YAAY,SAASe,WAAU,KAAK;AAAA,UAC7D;AA4BA,mBAAS,SAAS,OAAO;AACvB,mBAAO,OAAO,SAAS,YACrB,QAAQ,MAAM,QAAQ,KAAK,KAAK,SAAS;AAAA,UAC7C;AA2BA,mBAASf,UAAS,OAAO;AACvB,gBAAI,OAAO,OAAO;AAClB,mBAAO,SAAS,SAAS,QAAQ,YAAY,QAAQ;AAAA,UACvD;AA0BA,mBAAS,aAAa,OAAO;AAC3B,mBAAO,SAAS,QAAQ,OAAO,SAAS;AAAA,UAC1C;AAmBA,cAAI,QAAQ,YAAY,UAAU,SAAS,IAAI;AA8B/C,mBAAS,QAAQ,QAAQ,QAAQ;AAC/B,mBAAO,WAAW,UAAU,YAAY,QAAQ,QAAQ,aAAa,MAAM,CAAC;AAAA,UAC9E;AAkCA,mBAAS,YAAY,QAAQ,QAAQ,YAAY;AAC/C,yBAAa,OAAO,cAAc,aAAa,aAAalC;AAC5D,mBAAO,YAAY,QAAQ,QAAQ,aAAa,MAAM,GAAG,UAAU;AAAA,UACrE;AA8BA,mBAASsF,OAAM,OAAO;AAIpB,mBAAOC,UAAS,KAAK,KAAK,SAAS,CAAC;AAAA,UACtC;AA4BA,mBAAS,SAAS,OAAO;AACvB,gBAAI,WAAW,KAAK,GAAG;AACrB,oBAAM,IAAItE,OAAM,eAAe;AAAA,YACjC;AACA,mBAAO,aAAa,KAAK;AAAA,UAC3B;AAmBA,mBAASuE,QAAO,OAAO;AACrB,mBAAO,UAAU;AAAA,UACnB;AAsBA,mBAAS,MAAM,OAAO;AACpB,mBAAO,SAAS;AAAA,UAClB;AA4BA,mBAASD,UAAS,OAAO;AACvB,mBAAO,OAAO,SAAS,YACpB,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACjD;AA8BA,mBAASlC,eAAc,OAAO;AAC5B,gBAAI,CAAC,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK,WAAW;AAC1D,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ,aAAa,KAAK;AAC9B,gBAAI,UAAU,MAAM;AAClB,qBAAO;AAAA,YACT;AACA,gBAAI,OAAO,eAAe,KAAK,OAAO,aAAa,KAAK,MAAM;AAC9D,mBAAO,OAAO,QAAQ,cAAc,gBAAgB,QAClD,aAAa,KAAK,IAAI,KAAK;AAAA,UAC/B;AAmBA,cAAIoC,YAAW,eAAe,UAAU,YAAY,IAAI;AA6BxD,mBAAS,cAAc,OAAO;AAC5B,mBAAO,UAAU,KAAK,KAAK,SAAS,CAAC,oBAAoB,SAAS;AAAA,UACpE;AAmBA,cAAI,QAAQ,YAAY,UAAU,SAAS,IAAI;AAmB/C,mBAASb,UAAS,OAAO;AACvB,mBAAO,OAAO,SAAS,YACpB,CAAC3C,SAAQ,KAAK,KAAK,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACpE;AAmBA,mBAASe,UAAS,OAAO;AACvB,mBAAO,OAAO,SAAS,YACpB,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACjD;AAmBA,cAAI,eAAe,mBAAmB,UAAU,gBAAgB,IAAI;AAmBpE,mBAAS0C,aAAY,OAAO;AAC1B,mBAAO,UAAU1F;AAAA,UACnB;AAmBA,mBAAS,UAAU,OAAO;AACxB,mBAAO,aAAa,KAAK,KAAK,OAAO,KAAK,KAAK;AAAA,UACjD;AAmBA,mBAAS,UAAU,OAAO;AACxB,mBAAO,aAAa,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,UACrD;AAyBA,cAAI2F,MAAK,0BAA0B,MAAM;AAyBzC,cAAI,MAAM,0BAA0B,SAAS,OAAO,OAAO;AACzD,mBAAO,SAAS;AAAA,UAClB,CAAC;AAyBD,mBAASrB,SAAQ,OAAO;AACtB,gBAAI,CAAC,OAAO;AACV,qBAAO,CAAC;AAAA,YACV;AACA,gBAAI,YAAY,KAAK,GAAG;AACtB,qBAAOM,UAAS,KAAK,IAAI,cAAc,KAAK,IAAI,UAAU,KAAK;AAAA,YACjE;AACA,gBAAI,eAAe,MAAM,WAAW,GAAG;AACrC,qBAAO,gBAAgB,MAAM,WAAW,EAAE,CAAC;AAAA,YAC7C;AACA,gBAAI,MAAM,OAAO,KAAK,GAClB,OAAO,OAAO,SAAS,aAAc,OAAO,SAAS,aAAa;AAEtE,mBAAO,KAAK,KAAK;AAAA,UACnB;AAyBA,mBAAS,SAAS,OAAO;AACvB,gBAAI,CAAC,OAAO;AACV,qBAAO,UAAU,IAAI,QAAQ;AAAA,YAC/B;AACA,oBAAQ,SAAS,KAAK;AACtB,gBAAI,UAAU1E,aAAY,UAAU,CAACA,WAAU;AAC7C,kBAAI0F,QAAQ,QAAQ,IAAI,KAAK;AAC7B,qBAAOA,QAAOzF;AAAA,YAChB;AACA,mBAAO,UAAU,QAAQ,QAAQ;AAAA,UACnC;AA4BA,mBAAS8C,WAAU,OAAO;AACxB,gBAAId,UAAS,SAAS,KAAK,GACvB,YAAYA,UAAS;AAEzB,mBAAOA,YAAWA,UAAU,YAAYA,UAAS,YAAYA,UAAU;AAAA,UACzE;AA6BA,mBAAS,SAAS,OAAO;AACvB,mBAAO,QAAQ,UAAUc,WAAU,KAAK,GAAG,GAAG,gBAAgB,IAAI;AAAA,UACpE;AAyBA,mBAAS,SAAS,OAAO;AACvB,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO;AAAA,YACT;AACA,gBAAID,UAAS,KAAK,GAAG;AACnB,qBAAO;AAAA,YACT;AACA,gBAAId,UAAS,KAAK,GAAG;AACnB,kBAAI,QAAQ,OAAO,MAAM,WAAW,aAAa,MAAM,QAAQ,IAAI;AACnE,sBAAQA,UAAS,KAAK,IAAK,QAAQ,KAAM;AAAA,YAC3C;AACA,gBAAI,OAAO,SAAS,UAAU;AAC5B,qBAAO,UAAU,IAAI,QAAQ,CAAC;AAAA,YAChC;AACA,oBAAQ,SAAS,KAAK;AACtB,gBAAI,WAAW,WAAW,KAAK,KAAK;AACpC,mBAAQ,YAAY,UAAU,KAAK,KAAK,IACpC,aAAa,MAAM,MAAM,CAAC,GAAG,WAAW,IAAI,CAAC,IAC5C,WAAW,KAAK,KAAK,IAAI,MAAM,CAAC;AAAA,UACvC;AA0BA,mBAAS,cAAc,OAAO;AAC5B,mBAAO,WAAW,OAAO,OAAO,KAAK,CAAC;AAAA,UACxC;AA0BA,mBAAS,cAAc,OAAO;AAC5B,mBAAO,QACH,UAAUe,WAAU,KAAK,GAAG,CAAC,kBAAkB,gBAAgB,IAC9D,UAAU,IAAI,QAAQ;AAAA,UAC7B;AAuBA,mBAAS,SAAS,OAAO;AACvB,mBAAO,SAAS,OAAO,KAAK,aAAa,KAAK;AAAA,UAChD;AAoCA,cAAI4C,UAAS,eAAe,SAAS,QAAQ,QAAQ;AACnD,gBAAI,YAAY,MAAM,KAAK,YAAY,MAAM,GAAG;AAC9C,yBAAW,QAAQ,KAAK,MAAM,GAAG,MAAM;AACvC;AAAA,YACF;AACA,qBAAS,OAAO,QAAQ;AACtB,kBAAI,eAAe,KAAK,QAAQ,GAAG,GAAG;AACpC,4BAAY,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,cACtC;AAAA,YACF;AAAA,UACF,CAAC;AAiCD,cAAI,WAAW,eAAe,SAAS,QAAQ,QAAQ;AACrD,uBAAW,QAAQ,OAAO,MAAM,GAAG,MAAM;AAAA,UAC3C,CAAC;AA+BD,cAAI,eAAe,eAAe,SAAS,QAAQ,QAAQ,UAAU,YAAY;AAC/E,uBAAW,QAAQ,OAAO,MAAM,GAAG,QAAQ,UAAU;AAAA,UACvD,CAAC;AA8BD,cAAI,aAAa,eAAe,SAAS,QAAQ,QAAQ,UAAU,YAAY;AAC7E,uBAAW,QAAQ,KAAK,MAAM,GAAG,QAAQ,UAAU;AAAA,UACrD,CAAC;AAmBD,cAAI,KAAK,SAAS,MAAM;AAoCxB,mBAASC,QAAO,WAAW,YAAY;AACrC,gBAAI3D,UAAS,WAAW,SAAS;AACjC,mBAAO,cAAc,OAAOA,UAAS,WAAWA,SAAQ,UAAU;AAAA,UACpE;AAuBA,cAAI4D,YAAW,SAAS,SAAS,QAAQ,SAAS;AAChD,qBAAS3E,QAAO,MAAM;AAEtB,gBAAIb,SAAQ;AACZ,gBAAI,SAAS,QAAQ;AACrB,gBAAI,QAAQ,SAAS,IAAI,QAAQ,CAAC,IAAIP;AAEtC,gBAAI,SAAS,eAAe,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,KAAK,GAAG;AAC1D,uBAAS;AAAA,YACX;AAEA,mBAAO,EAAEO,SAAQ,QAAQ;AACvB,kBAAI,SAAS,QAAQA,MAAK;AAC1B,kBAAI,QAAQ,OAAO,MAAM;AACzB,kBAAI,aAAa;AACjB,kBAAI,cAAc,MAAM;AAExB,qBAAO,EAAE,aAAa,aAAa;AACjC,oBAAI,MAAM,MAAM,UAAU;AAC1B,oBAAI,QAAQ,OAAO,GAAG;AAEtB,oBAAI,UAAUP,cACT0C,IAAG,OAAO,YAAY,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,QAAQ,GAAG,GAAI;AACtE,yBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,gBAC1B;AAAA,cACF;AAAA,YACF;AAEA,mBAAO;AAAA,UACT,CAAC;AAqBD,cAAI,eAAe,SAAS,SAAS,MAAM;AACzC,iBAAK,KAAK1C,YAAW,mBAAmB;AACxC,mBAAO,MAAM,WAAWA,YAAW,IAAI;AAAA,UACzC,CAAC;AAqCD,mBAASgG,SAAQ,QAAQ,WAAW;AAClC,mBAAO,YAAY,QAAQ,YAAY,WAAW,CAAC,GAAG,UAAU;AAAA,UAClE;AAqCA,mBAAS,YAAY,QAAQ,WAAW;AACtC,mBAAO,YAAY,QAAQ,YAAY,WAAW,CAAC,GAAG,eAAe;AAAA,UACvE;AA8BA,mBAAS,MAAM,QAAQ3D,WAAU;AAC/B,mBAAO,UAAU,OACb,SACA,QAAQ,QAAQ,YAAYA,WAAU,CAAC,GAAG,MAAM;AAAA,UACtD;AA4BA,mBAAS,WAAW,QAAQA,WAAU;AACpC,mBAAO,UAAU,OACb,SACA,aAAa,QAAQ,YAAYA,WAAU,CAAC,GAAG,MAAM;AAAA,UAC3D;AA8BA,mBAAS,OAAO,QAAQA,WAAU;AAChC,mBAAO,UAAU,WAAW,QAAQ,YAAYA,WAAU,CAAC,CAAC;AAAA,UAC9D;AA4BA,mBAAS,YAAY,QAAQA,WAAU;AACrC,mBAAO,UAAU,gBAAgB,QAAQ,YAAYA,WAAU,CAAC,CAAC;AAAA,UACnE;AAyBA,mBAAS,UAAU,QAAQ;AACzB,mBAAO,UAAU,OAAO,CAAC,IAAI,cAAc,QAAQ,KAAK,MAAM,CAAC;AAAA,UACjE;AAyBA,mBAAS,YAAY,QAAQ;AAC3B,mBAAO,UAAU,OAAO,CAAC,IAAI,cAAc,QAAQ,OAAO,MAAM,CAAC;AAAA,UACnE;AA2BA,mBAASO,KAAI,QAAQ,MAAM,cAAc;AACvC,gBAAIT,UAAS,UAAU,OAAOnC,aAAY,QAAQ,QAAQ,IAAI;AAC9D,mBAAOmC,YAAWnC,aAAY,eAAemC;AAAA,UAC/C;AA6BA,mBAAS,IAAI,QAAQ,MAAM;AACzB,mBAAO,UAAU,QAAQ,QAAQ,QAAQ,MAAM,OAAO;AAAA,UACxD;AA4BA,mBAAS,MAAM,QAAQ,MAAM;AAC3B,mBAAO,UAAU,QAAQ,QAAQ,QAAQ,MAAM,SAAS;AAAA,UAC1D;AAoBA,cAAI,SAAS,eAAe,SAASA,SAAQ,OAAO,KAAK;AACvD,gBAAI,SAAS,QACT,OAAO,MAAM,YAAY,YAAY;AACvC,sBAAQ,qBAAqB,KAAK,KAAK;AAAA,YACzC;AAEA,YAAAA,QAAO,KAAK,IAAI;AAAA,UAClB,GAAG,SAASiB,SAAQ,CAAC;AA4BrB,cAAI,WAAW,eAAe,SAASjB,SAAQ,OAAO,KAAK;AACzD,gBAAI,SAAS,QACT,OAAO,MAAM,YAAY,YAAY;AACvC,sBAAQ,qBAAqB,KAAK,KAAK;AAAA,YACzC;AAEA,gBAAI,eAAe,KAAKA,SAAQ,KAAK,GAAG;AACtC,cAAAA,QAAO,KAAK,EAAE,KAAK,GAAG;AAAA,YACxB,OAAO;AACL,cAAAA,QAAO,KAAK,IAAI,CAAC,GAAG;AAAA,YACtB;AAAA,UACF,GAAG,WAAW;AAoBd,cAAI,SAAS,SAAS,UAAU;AA8BhC,mBAAS,KAAK,QAAQ;AACpB,mBAAO,YAAY,MAAM,IAAI,cAAc,MAAM,IAAI,SAAS,MAAM;AAAA,UACtE;AAyBA,mBAAS,OAAO,QAAQ;AACtB,mBAAO,YAAY,MAAM,IAAI,cAAc,QAAQ,IAAI,IAAI,WAAW,MAAM;AAAA,UAC9E;AAuBA,mBAAS,QAAQ,QAAQE,WAAU;AACjC,gBAAIF,UAAS,CAAC;AACd,YAAAE,YAAW,YAAYA,WAAU,CAAC;AAElC,uBAAW,QAAQ,SAAS,OAAO,KAAKc,SAAQ;AAC9C,8BAAgBhB,SAAQE,UAAS,OAAO,KAAKc,OAAM,GAAG,KAAK;AAAA,YAC7D,CAAC;AACD,mBAAOhB;AAAA,UACT;AA8BA,mBAAS,UAAU,QAAQE,WAAU;AACnC,gBAAIF,UAAS,CAAC;AACd,YAAAE,YAAW,YAAYA,WAAU,CAAC;AAElC,uBAAW,QAAQ,SAAS,OAAO,KAAKc,SAAQ;AAC9C,8BAAgBhB,SAAQ,KAAKE,UAAS,OAAO,KAAKc,OAAM,CAAC;AAAA,YAC3D,CAAC;AACD,mBAAOhB;AAAA,UACT;AAiCA,cAAI8D,SAAQ,eAAe,SAAS,QAAQ,QAAQ,UAAU;AAC5D,sBAAU,QAAQ,QAAQ,QAAQ;AAAA,UACpC,CAAC;AAiCD,cAAI,YAAY,eAAe,SAAS,QAAQ,QAAQ,UAAU,YAAY;AAC5E,sBAAU,QAAQ,QAAQ,UAAU,UAAU;AAAA,UAChD,CAAC;AAsBD,cAAI,OAAO,SAAS,SAAS,QAAQ,OAAO;AAC1C,gBAAI9D,UAAS,CAAC;AACd,gBAAI,UAAU,MAAM;AAClB,qBAAOA;AAAA,YACT;AACA,gBAAI,SAAS;AACb,oBAAQ,SAAS,OAAO,SAAS,MAAM;AACrC,qBAAO,SAAS,MAAM,MAAM;AAC5B,yBAAW,SAAS,KAAK,SAAS;AAClC,qBAAO;AAAA,YACT,CAAC;AACD,uBAAW,QAAQ,aAAa,MAAM,GAAGA,OAAM;AAC/C,gBAAI,QAAQ;AACV,cAAAA,UAAS,UAAUA,SAAQ,kBAAkB,kBAAkB,oBAAoB,eAAe;AAAA,YACpG;AACA,gBAAI,SAAS,MAAM;AACnB,mBAAO,UAAU;AACf,wBAAUA,SAAQ,MAAM,MAAM,CAAC;AAAA,YACjC;AACA,mBAAOA;AAAA,UACT,CAAC;AAsBD,mBAAS,OAAO,QAAQ,WAAW;AACjC,mBAAO,OAAO,QAAQ,OAAO,YAAY,SAAS,CAAC,CAAC;AAAA,UACtD;AAmBA,cAAI,OAAO,SAAS,SAAS,QAAQ,OAAO;AAC1C,mBAAO,UAAU,OAAO,CAAC,IAAI,SAAS,QAAQ,KAAK;AAAA,UACrD,CAAC;AAoBD,mBAAS,OAAO,QAAQ,WAAW;AACjC,gBAAI,UAAU,MAAM;AAClB,qBAAO,CAAC;AAAA,YACV;AACA,gBAAI,QAAQ,SAAS,aAAa,MAAM,GAAG,SAAS,MAAM;AACxD,qBAAO,CAAC,IAAI;AAAA,YACd,CAAC;AACD,wBAAY,YAAY,SAAS;AACjC,mBAAO,WAAW,QAAQ,OAAO,SAAS,OAAO,MAAM;AACrD,qBAAO,UAAU,OAAO,KAAK,CAAC,CAAC;AAAA,YACjC,CAAC;AAAA,UACH;AA+BA,mBAAS,OAAO,QAAQ,MAAM,cAAc;AAC1C,mBAAO,SAAS,MAAM,MAAM;AAE5B,gBAAI5B,SAAQ,IACR,SAAS,KAAK;AAGlB,gBAAI,CAAC,QAAQ;AACX,uBAAS;AACT,uBAASP;AAAA,YACX;AACA,mBAAO,EAAEO,SAAQ,QAAQ;AACvB,kBAAI,QAAQ,UAAU,OAAOP,aAAY,OAAO,MAAM,KAAKO,MAAK,CAAC,CAAC;AAClE,kBAAI,UAAUP,YAAW;AACvB,gBAAAO,SAAQ;AACR,wBAAQ;AAAA,cACV;AACA,uBAAS2C,YAAW,KAAK,IAAI,MAAM,KAAK,MAAM,IAAI;AAAA,YACpD;AACA,mBAAO;AAAA,UACT;AA8BA,mBAAStC,KAAI,QAAQ,MAAM,OAAO;AAChC,mBAAO,UAAU,OAAO,SAAS,QAAQ,QAAQ,MAAM,KAAK;AAAA,UAC9D;AA0BA,mBAAS,QAAQ,QAAQ,MAAM,OAAO,YAAY;AAChD,yBAAa,OAAO,cAAc,aAAa,aAAaZ;AAC5D,mBAAO,UAAU,OAAO,SAAS,QAAQ,QAAQ,MAAM,OAAO,UAAU;AAAA,UAC1E;AA0BA,cAAI,UAAU,cAAc,IAAI;AA0BhC,cAAI,YAAY,cAAc,MAAM;AAgCpC,mBAAS,UAAU,QAAQqC,WAAU,aAAa;AAChD,gBAAI,QAAQJ,SAAQ,MAAM,GACtB,YAAY,SAASQ,UAAS,MAAM,KAAK,aAAa,MAAM;AAEhE,YAAAJ,YAAW,YAAYA,WAAU,CAAC;AAClC,gBAAI,eAAe,MAAM;AACvB,kBAAI,OAAO,UAAU,OAAO;AAC5B,kBAAI,WAAW;AACb,8BAAc,QAAQ,IAAI,SAAO,CAAC;AAAA,cACpC,WACSH,UAAS,MAAM,GAAG;AACzB,8BAAcgB,YAAW,IAAI,IAAI,WAAW,aAAa,MAAM,CAAC,IAAI,CAAC;AAAA,cACvE,OACK;AACH,8BAAc,CAAC;AAAA,cACjB;AAAA,YACF;AACA,aAAC,YAAY,YAAY,YAAY,QAAQ,SAAS,OAAO3C,QAAO4C,SAAQ;AAC1E,qBAAOd,UAAS,aAAa,OAAO9B,QAAO4C,OAAM;AAAA,YACnD,CAAC;AACD,mBAAO;AAAA,UACT;AA6BA,mBAAS,MAAM,QAAQ,MAAM;AAC3B,mBAAO,UAAU,OAAO,OAAO,UAAU,QAAQ,IAAI;AAAA,UACvD;AA6BA,mBAAS,OAAO,QAAQ,MAAM,SAAS;AACrC,mBAAO,UAAU,OAAO,SAAS,WAAW,QAAQ,MAAM,aAAa,OAAO,CAAC;AAAA,UACjF;AA0BA,mBAAS,WAAW,QAAQ,MAAM,SAAS,YAAY;AACrD,yBAAa,OAAO,cAAc,aAAa,aAAanD;AAC5D,mBAAO,UAAU,OAAO,SAAS,WAAW,QAAQ,MAAM,aAAa,OAAO,GAAG,UAAU;AAAA,UAC7F;AA4BA,mBAAS,OAAO,QAAQ;AACtB,mBAAO,UAAU,OAAO,CAAC,IAAI,WAAW,QAAQ,KAAK,MAAM,CAAC;AAAA,UAC9D;AA0BA,mBAAS,SAAS,QAAQ;AACxB,mBAAO,UAAU,OAAO,CAAC,IAAI,WAAW,QAAQ,OAAO,MAAM,CAAC;AAAA,UAChE;AAuBA,mBAASkG,OAAM,QAAQ,OAAO,OAAO;AACnC,gBAAI,UAAUlG,YAAW;AACvB,sBAAQ;AACR,sBAAQA;AAAA,YACV;AACA,gBAAI,UAAUA,YAAW;AACvB,sBAAQ,SAAS,KAAK;AACtB,sBAAQ,UAAU,QAAQ,QAAQ;AAAA,YACpC;AACA,gBAAI,UAAUA,YAAW;AACvB,sBAAQ,SAAS,KAAK;AACtB,sBAAQ,UAAU,QAAQ,QAAQ;AAAA,YACpC;AACA,mBAAO,UAAU,SAAS,MAAM,GAAG,OAAO,KAAK;AAAA,UACjD;AAwCA,mBAASmG,SAAQ,QAAQ/D,QAAO,KAAK;AACnC,YAAAA,SAAQ,SAASA,MAAK;AACtB,gBAAI,QAAQpC,YAAW;AACrB,oBAAMoC;AACN,cAAAA,SAAQ;AAAA,YACV,OAAO;AACL,oBAAM,SAAS,GAAG;AAAA,YACpB;AACA,qBAAS,SAAS,MAAM;AACxB,mBAAO,YAAY,QAAQA,QAAO,GAAG;AAAA,UACvC;AAiCA,mBAAS,OAAO,OAAO,OAAO,UAAU;AACtC,gBAAI,YAAY,OAAO,YAAY,aAAa,eAAe,OAAO,OAAO,QAAQ,GAAG;AACtF,sBAAQ,WAAWpC;AAAA,YACrB;AACA,gBAAI,aAAaA,YAAW;AAC1B,kBAAI,OAAO,SAAS,WAAW;AAC7B,2BAAW;AACX,wBAAQA;AAAA,cACV,WACS,OAAO,SAAS,WAAW;AAClC,2BAAW;AACX,wBAAQA;AAAA,cACV;AAAA,YACF;AACA,gBAAI,UAAUA,cAAa,UAAUA,YAAW;AAC9C,sBAAQ;AACR,sBAAQ;AAAA,YACV,OACK;AACH,sBAAQ,SAAS,KAAK;AACtB,kBAAI,UAAUA,YAAW;AACvB,wBAAQ;AACR,wBAAQ;AAAA,cACV,OAAO;AACL,wBAAQ,SAAS,KAAK;AAAA,cACxB;AAAA,YACF;AACA,gBAAI,QAAQ,OAAO;AACjB,kBAAI,OAAO;AACX,sBAAQ;AACR,sBAAQ;AAAA,YACV;AACA,gBAAI,YAAY,QAAQ,KAAK,QAAQ,GAAG;AACtC,kBAAI,OAAO,aAAa;AACxB,qBAAO,UAAU,QAAS,QAAQ,QAAQ,QAAQ,eAAe,UAAU,OAAO,IAAI,SAAS,EAAE,IAAK,KAAK;AAAA,YAC7G;AACA,mBAAO,WAAW,OAAO,KAAK;AAAA,UAChC;AAwBA,cAAI,YAAY,iBAAiB,SAASmC,SAAQ,MAAM5B,QAAO;AAC7D,mBAAO,KAAK,YAAY;AACxB,mBAAO4B,WAAU5B,SAAQ,WAAW,IAAI,IAAI;AAAA,UAC9C,CAAC;AAiBD,mBAAS,WAAW,QAAQ;AAC1B,mBAAO,WAAW,SAAS,MAAM,EAAE,YAAY,CAAC;AAAA,UAClD;AAoBA,mBAAS,OAAO,QAAQ;AACtB,qBAAS,SAAS,MAAM;AACxB,mBAAO,UAAU,OAAO,QAAQ,SAAS,YAAY,EAAE,QAAQ,aAAa,EAAE;AAAA,UAChF;AAyBA,mBAAS,SAAS,QAAQ,QAAQ,UAAU;AAC1C,qBAAS,SAAS,MAAM;AACxB,qBAAS,aAAa,MAAM;AAE5B,gBAAI,SAAS,OAAO;AACpB,uBAAW,aAAaP,aACpB,SACA,UAAUiD,WAAU,QAAQ,GAAG,GAAG,MAAM;AAE5C,gBAAI,MAAM;AACV,wBAAY,OAAO;AACnB,mBAAO,YAAY,KAAK,OAAO,MAAM,UAAU,GAAG,KAAK;AAAA,UACzD;AA8BA,mBAASmD,QAAO,QAAQ;AACtB,qBAAS,SAAS,MAAM;AACxB,mBAAQ,UAAU,mBAAmB,KAAK,MAAM,IAC5C,OAAO,QAAQhG,kBAAiB,cAAc,IAC9C;AAAA,UACN;AAiBA,mBAAS,aAAa,QAAQ;AAC5B,qBAAS,SAAS,MAAM;AACxB,mBAAQ,UAAU,gBAAgB,KAAK,MAAM,IACzC,OAAO,QAAQ,cAAc,MAAM,IACnC;AAAA,UACN;AAuBA,cAAIiG,aAAY,iBAAiB,SAASlE,SAAQ,MAAM5B,QAAO;AAC7D,mBAAO4B,WAAU5B,SAAQ,MAAM,MAAM,KAAK,YAAY;AAAA,UACxD,CAAC;AAsBD,cAAI,YAAY,iBAAiB,SAAS4B,SAAQ,MAAM5B,QAAO;AAC7D,mBAAO4B,WAAU5B,SAAQ,MAAM,MAAM,KAAK,YAAY;AAAA,UACxD,CAAC;AAmBD,cAAI,aAAa,gBAAgB,aAAa;AAyB9C,mBAAS,IAAI,QAAQ,QAAQ,OAAO;AAClC,qBAAS,SAAS,MAAM;AACxB,qBAAS0C,WAAU,MAAM;AAEzB,gBAAI,YAAY,SAAS,WAAW,MAAM,IAAI;AAC9C,gBAAI,CAAC,UAAU,aAAa,QAAQ;AAClC,qBAAO;AAAA,YACT;AACA,gBAAI,OAAO,SAAS,aAAa;AACjC,mBACE,cAAc,YAAY,GAAG,GAAG,KAAK,IACrC,SACA,cAAc,WAAW,GAAG,GAAG,KAAK;AAAA,UAExC;AAyBA,mBAAS,OAAO,QAAQ,QAAQ,OAAO;AACrC,qBAAS,SAAS,MAAM;AACxB,qBAASA,WAAU,MAAM;AAEzB,gBAAI,YAAY,SAAS,WAAW,MAAM,IAAI;AAC9C,mBAAQ,UAAU,YAAY,SACzB,SAAS,cAAc,SAAS,WAAW,KAAK,IACjD;AAAA,UACN;AAyBA,mBAAS,SAAS,QAAQ,QAAQ,OAAO;AACvC,qBAAS,SAAS,MAAM;AACxB,qBAASA,WAAU,MAAM;AAEzB,gBAAI,YAAY,SAAS,WAAW,MAAM,IAAI;AAC9C,mBAAQ,UAAU,YAAY,SACzB,cAAc,SAAS,WAAW,KAAK,IAAI,SAC5C;AAAA,UACN;AA0BA,mBAASqD,UAAS,QAAQ,OAAO,OAAO;AACtC,gBAAI,SAAS,SAAS,MAAM;AAC1B,sBAAQ;AAAA,YACV,WAAW,OAAO;AAChB,sBAAQ,CAAC;AAAA,YACX;AACA,mBAAO,eAAe,SAAS,MAAM,EAAE,QAAQ,aAAa,EAAE,GAAG,SAAS,CAAC;AAAA,UAC7E;AAwBA,mBAAS,OAAO,QAAQ7F,IAAG,OAAO;AAChC,gBAAK,QAAQ,eAAe,QAAQA,IAAG,KAAK,IAAIA,OAAMT,YAAY;AAChE,cAAAS,KAAI;AAAA,YACN,OAAO;AACL,cAAAA,KAAIwC,WAAUxC,EAAC;AAAA,YACjB;AACA,mBAAO,WAAW,SAAS,MAAM,GAAGA,EAAC;AAAA,UACvC;AAqBA,mBAAS,UAAU;AACjB,gBAAI,OAAO,WACP,SAAS,SAAS,KAAK,CAAC,CAAC;AAE7B,mBAAO,KAAK,SAAS,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,UACnE;AAuBA,cAAI,YAAY,iBAAiB,SAAS0B,SAAQ,MAAM5B,QAAO;AAC7D,mBAAO4B,WAAU5B,SAAQ,MAAM,MAAM,KAAK,YAAY;AAAA,UACxD,CAAC;AAqBD,mBAAS,MAAM,QAAQ,WAAW,OAAO;AACvC,gBAAI,SAAS,OAAO,SAAS,YAAY,eAAe,QAAQ,WAAW,KAAK,GAAG;AACjF,0BAAY,QAAQP;AAAA,YACtB;AACA,oBAAQ,UAAUA,aAAY,mBAAmB,UAAU;AAC3D,gBAAI,CAAC,OAAO;AACV,qBAAO,CAAC;AAAA,YACV;AACA,qBAAS,SAAS,MAAM;AACxB,gBAAI,WACE,OAAO,aAAa,YACnB,aAAa,QAAQ,CAACyF,UAAS,SAAS,IACxC;AACL,0BAAY,aAAa,SAAS;AAClC,kBAAI,CAAC,aAAa,WAAW,MAAM,GAAG;AACpC,uBAAO,UAAU,cAAc,MAAM,GAAG,GAAG,KAAK;AAAA,cAClD;AAAA,YACF;AACA,mBAAO,OAAO,MAAM,WAAW,KAAK;AAAA,UACtC;AAuBA,cAAI,YAAY,iBAAiB,SAAStD,SAAQ,MAAM5B,QAAO;AAC7D,mBAAO4B,WAAU5B,SAAQ,MAAM,MAAM,WAAW,IAAI;AAAA,UACtD,CAAC;AAyBD,mBAAS,WAAW,QAAQ,QAAQ,UAAU;AAC5C,qBAAS,SAAS,MAAM;AACxB,uBAAW,YAAY,OACnB,IACA,UAAU0C,WAAU,QAAQ,GAAG,GAAG,OAAO,MAAM;AAEnD,qBAAS,aAAa,MAAM;AAC5B,mBAAO,OAAO,MAAM,UAAU,WAAW,OAAO,MAAM,KAAK;AAAA,UAC7D;AA0GA,mBAAS,SAAS,QAAQ,SAAS,OAAO;AAIxC,gBAAI,WAAW,OAAO;AAEtB,gBAAI,SAAS,eAAe,QAAQ,SAAS,KAAK,GAAG;AACnD,wBAAUjD;AAAA,YACZ;AACA,qBAAS,SAAS,MAAM;AACxB,sBAAU,aAAa,CAAC,GAAG,SAAS,UAAU,sBAAsB;AAEpE,gBAAI,UAAU,aAAa,CAAC,GAAG,QAAQ,SAAS,SAAS,SAAS,sBAAsB,GACpF,cAAc,KAAK,OAAO,GAC1B,gBAAgB,WAAW,SAAS,WAAW;AAEnD,gBAAI,YACA,cACAO,SAAQ,GACRgG,eAAc,QAAQ,eAAe,WACrC,SAAS;AAGb,gBAAI,eAAelF;AAAA,eAChB,QAAQ,UAAU,WAAW,SAAS,MACvCkF,aAAY,SAAS,OACpBA,iBAAgB,gBAAgB,eAAe,WAAW,SAAS,OACnE,QAAQ,YAAY,WAAW,SAAS;AAAA,cACzC;AAAA,YAAG;AAML,gBAAI,YAAY,oBACb,eAAe,KAAK,SAAS,WAAW,KACpC,QAAQ,YAAY,IAAI,QAAQ,OAAO,GAAG,IAC1C,4BAA6B,EAAE,kBAAmB,OACnD;AAEN,mBAAO,QAAQ,cAAc,SAASxC,QAAO,aAAa,kBAAkB,iBAAiB,eAAe,QAAQ;AAClH,mCAAqB,mBAAmB;AAGxC,wBAAU,OAAO,MAAMxD,QAAO,MAAM,EAAE,QAAQ,mBAAmB,gBAAgB;AAGjF,kBAAI,aAAa;AACf,6BAAa;AACb,0BAAU,cAAc,cAAc;AAAA,cACxC;AACA,kBAAI,eAAe;AACjB,+BAAe;AACf,0BAAU,SAAS,gBAAgB;AAAA,cACrC;AACA,kBAAI,kBAAkB;AACpB,0BAAU,mBAAmB,mBAAmB;AAAA,cAClD;AACA,cAAAA,SAAQ,SAASwD,OAAM;AAIvB,qBAAOA;AAAA,YACT,CAAC;AAED,sBAAU;AAIV,gBAAI,WAAW,eAAe,KAAK,SAAS,UAAU,KAAK,QAAQ;AACnE,gBAAI,CAAC,UAAU;AACb,uBAAS,mBAAmB,SAAS;AAAA,YACvC,WAGS,2BAA2B,KAAK,QAAQ,GAAG;AAClD,oBAAM,IAAI9C,OAAM,4BAA4B;AAAA,YAC9C;AAGA,sBAAU,eAAe,OAAO,QAAQ,sBAAsB,EAAE,IAAI,QACjE,QAAQ,qBAAqB,IAAI,EACjC,QAAQ,uBAAuB,KAAK;AAGvC,qBAAS,eAAe,YAAY,SAAS,WAC1C,WACG,KACA,0BAEJ,uBACC,aACI,qBACA,OAEJ,eACG,yFAEA,SAEJ,SACA;AAEF,gBAAIkB,UAAS,QAAQ,WAAW;AAC9B,qBAAOjB,UAAS,aAAa,YAAY,YAAY,MAAM,EACxD,MAAMlB,YAAW,aAAa;AAAA,YACnC,CAAC;AAID,YAAAmC,QAAO,SAAS;AAChB,gBAAIiD,SAAQjD,OAAM,GAAG;AACnB,oBAAMA;AAAA,YACR;AACA,mBAAOA;AAAA,UACT;AAuBA,mBAAS,QAAQ,OAAO;AACtB,mBAAO,SAAS,KAAK,EAAE,YAAY;AAAA,UACrC;AAuBA,mBAAS,QAAQ,OAAO;AACtB,mBAAO,SAAS,KAAK,EAAE,YAAY;AAAA,UACrC;AAwBA,mBAAS,KAAK,QAAQ,OAAO,OAAO;AAClC,qBAAS,SAAS,MAAM;AACxB,gBAAI,WAAW,SAAS,UAAUnC,aAAY;AAC5C,qBAAO,SAAS,MAAM;AAAA,YACxB;AACA,gBAAI,CAAC,UAAU,EAAE,QAAQ,aAAa,KAAK,IAAI;AAC7C,qBAAO;AAAA,YACT;AACA,gBAAI,aAAa,cAAc,MAAM,GACjC,aAAa,cAAc,KAAK,GAChCoC,SAAQ,gBAAgB,YAAY,UAAU,GAC9C,MAAM,cAAc,YAAY,UAAU,IAAI;AAElD,mBAAO,UAAU,YAAYA,QAAO,GAAG,EAAE,KAAK,EAAE;AAAA,UAClD;AAqBA,mBAAS,QAAQ,QAAQ,OAAO,OAAO;AACrC,qBAAS,SAAS,MAAM;AACxB,gBAAI,WAAW,SAAS,UAAUpC,aAAY;AAC5C,qBAAO,OAAO,MAAM,GAAG,gBAAgB,MAAM,IAAI,CAAC;AAAA,YACpD;AACA,gBAAI,CAAC,UAAU,EAAE,QAAQ,aAAa,KAAK,IAAI;AAC7C,qBAAO;AAAA,YACT;AACA,gBAAI,aAAa,cAAc,MAAM,GACjC,MAAM,cAAc,YAAY,cAAc,KAAK,CAAC,IAAI;AAE5D,mBAAO,UAAU,YAAY,GAAG,GAAG,EAAE,KAAK,EAAE;AAAA,UAC9C;AAqBA,mBAAS,UAAU,QAAQ,OAAO,OAAO;AACvC,qBAAS,SAAS,MAAM;AACxB,gBAAI,WAAW,SAAS,UAAUA,aAAY;AAC5C,qBAAO,OAAO,QAAQ,aAAa,EAAE;AAAA,YACvC;AACA,gBAAI,CAAC,UAAU,EAAE,QAAQ,aAAa,KAAK,IAAI;AAC7C,qBAAO;AAAA,YACT;AACA,gBAAI,aAAa,cAAc,MAAM,GACjCoC,SAAQ,gBAAgB,YAAY,cAAc,KAAK,CAAC;AAE5D,mBAAO,UAAU,YAAYA,MAAK,EAAE,KAAK,EAAE;AAAA,UAC7C;AAuCA,mBAAS,SAAS,QAAQ,SAAS;AACjC,gBAAI,SAAS,sBACT,WAAW;AAEf,gBAAIF,UAAS,OAAO,GAAG;AACrB,kBAAI,YAAY,eAAe,UAAU,QAAQ,YAAY;AAC7D,uBAAS,YAAY,UAAUe,WAAU,QAAQ,MAAM,IAAI;AAC3D,yBAAW,cAAc,UAAU,aAAa,QAAQ,QAAQ,IAAI;AAAA,YACtE;AACA,qBAAS,SAAS,MAAM;AAExB,gBAAI,YAAY,OAAO;AACvB,gBAAI,WAAW,MAAM,GAAG;AACtB,kBAAI,aAAa,cAAc,MAAM;AACrC,0BAAY,WAAW;AAAA,YACzB;AACA,gBAAI,UAAU,WAAW;AACvB,qBAAO;AAAA,YACT;AACA,gBAAI,MAAM,SAAS,WAAW,QAAQ;AACtC,gBAAI,MAAM,GAAG;AACX,qBAAO;AAAA,YACT;AACA,gBAAId,UAAS,aACT,UAAU,YAAY,GAAG,GAAG,EAAE,KAAK,EAAE,IACrC,OAAO,MAAM,GAAG,GAAG;AAEvB,gBAAI,cAAcnC,YAAW;AAC3B,qBAAOmC,UAAS;AAAA,YAClB;AACA,gBAAI,YAAY;AACd,qBAAQA,QAAO,SAAS;AAAA,YAC1B;AACA,gBAAIsD,UAAS,SAAS,GAAG;AACvB,kBAAI,OAAO,MAAM,GAAG,EAAE,OAAO,SAAS,GAAG;AACvC,oBAAI1B,QACA,YAAY5B;AAEhB,oBAAI,CAAC,UAAU,QAAQ;AACrB,8BAAYd,QAAO,UAAU,QAAQ,SAAS,QAAQ,KAAK,SAAS,CAAC,IAAI,GAAG;AAAA,gBAC9E;AACA,0BAAU,YAAY;AACtB,uBAAQ0C,SAAQ,UAAU,KAAK,SAAS,GAAI;AAC1C,sBAAI,SAASA,OAAM;AAAA,gBACrB;AACA,gBAAA5B,UAASA,QAAO,MAAM,GAAG,WAAWnC,aAAY,MAAM,MAAM;AAAA,cAC9D;AAAA,YACF,WAAW,OAAO,QAAQ,aAAa,SAAS,GAAG,GAAG,KAAK,KAAK;AAC9D,kBAAIO,SAAQ4B,QAAO,YAAY,SAAS;AACxC,kBAAI5B,SAAQ,IAAI;AACd,gBAAA4B,UAASA,QAAO,MAAM,GAAG5B,MAAK;AAAA,cAChC;AAAA,YACF;AACA,mBAAO4B,UAAS;AAAA,UAClB;AAqBA,mBAASqE,UAAS,QAAQ;AACxB,qBAAS,SAAS,MAAM;AACxB,mBAAQ,UAAU,iBAAiB,KAAK,MAAM,IAC1C,OAAO,QAAQ,eAAe,gBAAgB,IAC9C;AAAA,UACN;AAsBA,cAAI,YAAY,iBAAiB,SAASrE,SAAQ,MAAM5B,QAAO;AAC7D,mBAAO4B,WAAU5B,SAAQ,MAAM,MAAM,KAAK,YAAY;AAAA,UACxD,CAAC;AAmBD,cAAI,aAAa,gBAAgB,aAAa;AAqB9C,mBAAS,MAAM,QAAQ,SAAS,OAAO;AACrC,qBAAS,SAAS,MAAM;AACxB,sBAAU,QAAQP,aAAY;AAE9B,gBAAI,YAAYA,YAAW;AACzB,qBAAO,eAAe,MAAM,IAAI,aAAa,MAAM,IAAI,WAAW,MAAM;AAAA,YAC1E;AACA,mBAAO,OAAO,MAAM,OAAO,KAAK,CAAC;AAAA,UACnC;AA0BA,cAAI,UAAU,SAAS,SAAS,MAAM,MAAM;AAC1C,gBAAI;AACF,qBAAO,MAAM,MAAMA,YAAW,IAAI;AAAA,YACpC,SAASM,IAAG;AACV,qBAAO8E,SAAQ9E,EAAC,IAAIA,KAAI,IAAIW,OAAMX,EAAC;AAAA,YACrC;AAAA,UACF,CAAC;AA4BD,cAAI,UAAU,SAAS,SAAS,QAAQ,aAAa;AACnD,sBAAU,aAAa,SAAS,KAAK;AACnC,oBAAM,MAAM,GAAG;AACf,8BAAgB,QAAQ,KAAK,KAAK,OAAO,GAAG,GAAG,MAAM,CAAC;AAAA,YACxD,CAAC;AACD,mBAAO;AAAA,UACT,CAAC;AA+BD,mBAAS,KAAK,OAAO;AACnB,gBAAI,SAAS,SAAS,OAAO,IAAI,MAAM,QACnC,aAAa,YAAY;AAE7B,oBAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,OAAO,SAAS,MAAM;AACpD,kBAAI,OAAO,KAAK,CAAC,KAAK,YAAY;AAChC,sBAAM,IAAIiB,WAAU,eAAe;AAAA,cACrC;AACA,qBAAO,CAAC,WAAW,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,YACtC,CAAC;AAED,mBAAO,SAAS,SAAS,MAAM;AAC7B,kBAAIhB,SAAQ;AACZ,qBAAO,EAAEA,SAAQ,QAAQ;AACvB,oBAAI,OAAO,MAAMA,MAAK;AACtB,oBAAI,MAAM,KAAK,CAAC,GAAG,MAAM,IAAI,GAAG;AAC9B,yBAAO,MAAM,KAAK,CAAC,GAAG,MAAM,IAAI;AAAA,gBAClC;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AA0BA,mBAAS,SAAS,QAAQ;AACxB,mBAAO,aAAa,UAAU,QAAQ,eAAe,CAAC;AAAA,UACxD;AAqBA,mBAAS,SAAS,OAAO;AACvB,mBAAO,WAAW;AAChB,qBAAO;AAAA,YACT;AAAA,UACF;AAsBA,mBAAS,UAAU,OAAO,cAAc;AACtC,mBAAQ,SAAS,QAAQ,UAAU,QAAS,eAAe;AAAA,UAC7D;AAwBA,cAAI,OAAO,WAAW;AAuBtB,cAAI,YAAY,WAAW,IAAI;AAkB/B,mBAAS6C,UAAS,OAAO;AACvB,mBAAO;AAAA,UACT;AA4CA,mBAAS,SAAS,MAAM;AACtB,mBAAO,aAAa,OAAO,QAAQ,aAAa,OAAO,UAAU,MAAM,eAAe,CAAC;AAAA,UACzF;AAqCA,mBAASqD,SAAQ,QAAQ;AACvB,mBAAO,YAAY,UAAU,QAAQ,eAAe,CAAC;AAAA,UACvD;AAmCA,mBAAS,gBAAgB,MAAM,UAAU;AACvC,mBAAO,oBAAoB,MAAM,UAAU,UAAU,eAAe,CAAC;AAAA,UACvE;AA0BA,cAAI,SAAS,SAAS,SAAS,MAAM,MAAM;AACzC,mBAAO,SAAS,QAAQ;AACtB,qBAAO,WAAW,QAAQ,MAAM,IAAI;AAAA,YACtC;AAAA,UACF,CAAC;AAyBD,cAAI,WAAW,SAAS,SAAS,QAAQ,MAAM;AAC7C,mBAAO,SAAS,MAAM;AACpB,qBAAO,WAAW,QAAQ,MAAM,IAAI;AAAA,YACtC;AAAA,UACF,CAAC;AAsCD,mBAAS,MAAM,QAAQ,QAAQ,SAAS;AACtC,gBAAI,QAAQ,KAAK,MAAM,GACnB,cAAc,cAAc,QAAQ,KAAK;AAE7C,gBAAI,WAAW,QACX,EAAEvE,UAAS,MAAM,MAAM,YAAY,UAAU,CAAC,MAAM,UAAU;AAChE,wBAAU;AACV,uBAAS;AACT,uBAAS;AACT,4BAAc,cAAc,QAAQ,KAAK,MAAM,CAAC;AAAA,YAClD;AACA,gBAAIwE,SAAQ,EAAExE,UAAS,OAAO,KAAK,WAAW,YAAY,CAAC,CAAC,QAAQ,OAChE,SAASgB,YAAW,MAAM;AAE9B,sBAAU,aAAa,SAAS,YAAY;AAC1C,kBAAI,OAAO,OAAO,UAAU;AAC5B,qBAAO,UAAU,IAAI;AACrB,kBAAI,QAAQ;AACV,uBAAO,UAAU,UAAU,IAAI,WAAW;AACxC,sBAAI,WAAW,KAAK;AACpB,sBAAIwD,UAAS,UAAU;AACrB,wBAAIvE,UAAS,OAAO,KAAK,WAAW,GAChC,UAAUA,QAAO,cAAc,UAAU,KAAK,WAAW;AAE7D,4BAAQ,KAAK,EAAE,QAAQ,MAAM,QAAQ,WAAW,WAAW,OAAO,CAAC;AACnE,oBAAAA,QAAO,YAAY;AACnB,2BAAOA;AAAA,kBACT;AACA,yBAAO,KAAK,MAAM,QAAQ,UAAU,CAAC,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;AAAA,gBAChE;AAAA,cACF;AAAA,YACF,CAAC;AAED,mBAAO;AAAA,UACT;AAeA,mBAAS,aAAa;AACpB,gBAAI,KAAK,MAAM,MAAM;AACnB,mBAAK,IAAI;AAAA,YACX;AACA,mBAAO;AAAA,UACT;AAcA,mBAAS0B,QAAO;AAAA,UAEhB;AAsBA,mBAAS,OAAOpD,IAAG;AACjB,YAAAA,KAAIwC,WAAUxC,EAAC;AACf,mBAAO,SAAS,SAAS,MAAM;AAC7B,qBAAO,QAAQ,MAAMA,EAAC;AAAA,YACxB,CAAC;AAAA,UACH;AAoBA,cAAI,OAAO,WAAW,QAAQ;AA8B9B,cAAI,YAAY,WAAW,UAAU;AAiCrC,cAAI,WAAW,WAAW,SAAS;AAwBnC,mBAAS,SAAS,MAAM;AACtB,mBAAO,MAAM,IAAI,IAAI,aAAa,MAAM,IAAI,CAAC,IAAI,iBAAiB,IAAI;AAAA,UACxE;AAuBA,mBAAS,WAAW,QAAQ;AAC1B,mBAAO,SAAS,MAAM;AACpB,qBAAO,UAAU,OAAOT,aAAY,QAAQ,QAAQ,IAAI;AAAA,YAC1D;AAAA,UACF;AA2CA,cAAI,QAAQ,YAAY;AAsCxB,cAAI,aAAa,YAAY,IAAI;AAoBjC,mBAAS,YAAY;AACnB,mBAAO,CAAC;AAAA,UACV;AAeA,mBAAS,YAAY;AACnB,mBAAO;AAAA,UACT;AAoBA,mBAAS,aAAa;AACpB,mBAAO,CAAC;AAAA,UACV;AAeA,mBAAS,aAAa;AACpB,mBAAO;AAAA,UACT;AAeA,mBAAS,WAAW;AAClB,mBAAO;AAAA,UACT;AAqBA,mBAAS,MAAMS,IAAG4B,WAAU;AAC1B,YAAA5B,KAAIwC,WAAUxC,EAAC;AACf,gBAAIA,KAAI,KAAKA,KAAI,kBAAkB;AACjC,qBAAO,CAAC;AAAA,YACV;AACA,gBAAIF,SAAQ,kBACR,SAAS,UAAUE,IAAG,gBAAgB;AAE1C,YAAA4B,YAAW,YAAYA,SAAQ;AAC/B,YAAA5B,MAAK;AAEL,gBAAI0B,UAAS,UAAU,QAAQE,SAAQ;AACvC,mBAAO,EAAE9B,SAAQE,IAAG;AAClB,cAAA4B,UAAS9B,MAAK;AAAA,YAChB;AACA,mBAAO4B;AAAA,UACT;AAmBA,mBAAS,OAAO,OAAO;AACrB,gBAAIF,SAAQ,KAAK,GAAG;AAClB,qBAAO,SAAS,OAAO,KAAK;AAAA,YAC9B;AACA,mBAAOe,UAAS,KAAK,IAAI,CAAC,KAAK,IAAI,UAAU,aAAa,SAAS,KAAK,CAAC,CAAC;AAAA,UAC5E;AAmBA,mBAAS,SAAS,QAAQ;AACxB,gBAAI,KAAK,EAAE;AACX,mBAAO,SAAS,MAAM,IAAI;AAAA,UAC5B;AAmBA,cAAI,MAAM,oBAAoB,SAAS,QAAQ,QAAQ;AACrD,mBAAO,SAAS;AAAA,UAClB,GAAG,CAAC;AAuBJ,cAAI2D,QAAO,YAAY,MAAM;AAiB7B,cAAI,SAAS,oBAAoB,SAAS,UAAU,SAAS;AAC3D,mBAAO,WAAW;AAAA,UACpB,GAAG,CAAC;AAuBJ,cAAIC,SAAQ,YAAY,OAAO;AAoB/B,mBAAS,IAAI,OAAO;AAClB,mBAAQ,SAAS,MAAM,SACnB,aAAa,OAAOxD,WAAU,MAAM,IACpCpD;AAAA,UACN;AAyBA,mBAAS,MAAM,OAAOqC,WAAU;AAC9B,mBAAQ,SAAS,MAAM,SACnB,aAAa,OAAO,YAAYA,WAAU,CAAC,GAAG,MAAM,IACpDrC;AAAA,UACN;AAgBA,mBAAS,KAAK,OAAO;AACnB,mBAAO,SAAS,OAAOoD,SAAQ;AAAA,UACjC;AAyBA,mBAAS,OAAO,OAAOf,WAAU;AAC/B,mBAAO,SAAS,OAAO,YAAYA,WAAU,CAAC,CAAC;AAAA,UACjD;AAoBA,mBAAS,IAAI,OAAO;AAClB,mBAAQ,SAAS,MAAM,SACnB,aAAa,OAAOe,WAAU,MAAM,IACpCpD;AAAA,UACN;AAyBA,mBAAS,MAAM,OAAOqC,WAAU;AAC9B,mBAAQ,SAAS,MAAM,SACnB,aAAa,OAAO,YAAYA,WAAU,CAAC,GAAG,MAAM,IACpDrC;AAAA,UACN;AAiBA,cAAI,WAAW,oBAAoB,SAAS,YAAY,cAAc;AACpE,mBAAO,aAAa;AAAA,UACtB,GAAG,CAAC;AAuBJ,cAAI6G,SAAQ,YAAY,OAAO;AAiB/B,cAAI,WAAW,oBAAoB,SAAS,SAAS,YAAY;AAC/D,mBAAO,UAAU;AAAA,UACnB,GAAG,CAAC;AAgBJ,mBAAS,IAAI,OAAO;AAClB,mBAAQ,SAAS,MAAM,SACnB,QAAQ,OAAOzD,SAAQ,IACvB;AAAA,UACN;AAyBA,mBAAS,MAAM,OAAOf,WAAU;AAC9B,mBAAQ,SAAS,MAAM,SACnB,QAAQ,OAAO,YAAYA,WAAU,CAAC,CAAC,IACvC;AAAA,UACN;AAKA,iBAAO,QAAQ;AACf,iBAAO,MAAM;AACb,iBAAO,SAASwD;AAChB,iBAAO,WAAW;AAClB,iBAAO,eAAe;AACtB,iBAAO,aAAa;AACpB,iBAAO,KAAK;AACZ,iBAAO,SAAS;AAChB,iBAAO,OAAO;AACd,iBAAO,UAAU;AACjB,iBAAO,UAAU;AACjB,iBAAO,YAAY;AACnB,iBAAO,QAAQ;AACf,iBAAO,QAAQ;AACf,iBAAO,UAAU3B;AACjB,iBAAO,SAAS;AAChB,iBAAO,OAAO;AACd,iBAAO,WAAW;AAClB,iBAAO,WAAW;AAClB,iBAAO,UAAU;AACjB,iBAAO,SAAS4B;AAChB,iBAAO,QAAQ;AACf,iBAAO,aAAa;AACpB,iBAAO,WAAWf;AAClB,iBAAO,WAAWgB;AAClB,iBAAO,eAAe;AACtB,iBAAO,QAAQ;AACf,iBAAO,QAAQ;AACf,iBAAO,aAAa;AACpB,iBAAO,eAAe;AACtB,iBAAO,iBAAiB;AACxB,iBAAO,OAAO5B;AACd,iBAAO,YAAY;AACnB,iBAAO,iBAAiB;AACxB,iBAAO,YAAY;AACnB,iBAAO,OAAOC;AACd,iBAAO,SAAS;AAChB,iBAAO,UAAU;AACjB,iBAAO,cAAc;AACrB,iBAAO,eAAe;AACtB,iBAAO,UAAU;AACjB,iBAAO,cAAc;AACrB,iBAAO,eAAe;AACtB,iBAAO,OAAO;AACd,iBAAO,OAAO;AACd,iBAAO,YAAY;AACnB,iBAAO,YAAY;AACnB,iBAAO,YAAY;AACnB,iBAAO,cAAc;AACrB,iBAAO,UAAU;AACjB,iBAAO,UAAU;AACjB,iBAAO,eAAe;AACtB,iBAAO,iBAAiB;AACxB,iBAAO,mBAAmB;AAC1B,iBAAO,SAAS;AAChB,iBAAO,WAAW;AAClB,iBAAO,YAAY;AACnB,iBAAO,WAAW;AAClB,iBAAO,QAAQ;AACf,iBAAO,OAAO;AACd,iBAAO,SAAS;AAChB,iBAAO,MAAMzD;AACb,iBAAO,UAAU;AACjB,iBAAO,YAAY;AACnB,iBAAO,UAAU8F;AACjB,iBAAO,kBAAkB;AACzB,iBAAO,UAAUzC;AACjB,iBAAO,QAAQiC;AACf,iBAAO,YAAY;AACnB,iBAAO,SAAS;AAChB,iBAAO,WAAW;AAClB,iBAAO,QAAQ;AACf,iBAAO,SAAS;AAChB,iBAAO,SAAS;AAChB,iBAAO,OAAO;AACd,iBAAO,SAAS;AAChB,iBAAO,OAAOjB;AACd,iBAAO,UAAU;AACjB,iBAAO,OAAO;AACd,iBAAO,WAAW;AAClB,iBAAO,YAAY;AACnB,iBAAO,WAAW;AAClB,iBAAO,UAAU;AACjB,iBAAO,eAAe;AACtB,iBAAO,YAAY;AACnB,iBAAO,OAAO;AACd,iBAAO,SAAS;AAChB,iBAAO,WAAW;AAClB,iBAAO,aAAa;AACpB,iBAAO,OAAO;AACd,iBAAO,UAAU;AACjB,iBAAO,YAAY;AACnB,iBAAO,cAAc;AACrB,iBAAO,SAAS;AAChB,iBAAO,QAAQ;AACf,iBAAO,aAAa;AACpB,iBAAO,QAAQ;AACf,iBAAO,SAAS;AAChB,iBAAO,SAAS;AAChB,iBAAO,OAAO;AACd,iBAAO,UAAU;AACjB,iBAAO,aAAa;AACpB,iBAAO,MAAMpE;AACb,iBAAO,UAAU;AACjB,iBAAO,UAAU;AACjB,iBAAO,QAAQ;AACf,iBAAO,SAAS;AAChB,iBAAO,aAAa;AACpB,iBAAO,eAAe;AACtB,iBAAO,QAAQ;AACf,iBAAO,SAAS;AAChB,iBAAO,OAAO;AACd,iBAAO,OAAO;AACd,iBAAO,YAAY;AACnB,iBAAO,iBAAiB;AACxB,iBAAO,YAAY;AACnB,iBAAO,MAAM;AACb,iBAAO,WAAWqE;AAClB,iBAAO,OAAO;AACd,iBAAO,UAAUX;AACjB,iBAAO,UAAU;AACjB,iBAAO,YAAY;AACnB,iBAAO,SAAS;AAChB,iBAAO,gBAAgB;AACvB,iBAAO,YAAY;AACnB,iBAAO,QAAQ;AACf,iBAAO,QAAQ;AACf,iBAAO,UAAU;AACjB,iBAAO,YAAY;AACnB,iBAAO,OAAO;AACd,iBAAO,SAAS;AAChB,iBAAO,WAAW;AAClB,iBAAO,QAAQ;AACf,iBAAO,QAAQ;AACf,iBAAO,YAAY;AACnB,iBAAO,SAAS;AAChB,iBAAO,aAAa;AACpB,iBAAO,SAAS;AAChB,iBAAO,WAAW;AAClB,iBAAO,UAAU;AACjB,iBAAO,QAAQ;AACf,iBAAO,OAAO;AACd,iBAAO,MAAM;AACb,iBAAO,QAAQ;AACf,iBAAO,UAAU;AACjB,iBAAO,MAAM;AACb,iBAAO,YAAY;AACnB,iBAAO,gBAAgB;AACvB,iBAAO,UAAU;AAGjB,iBAAO,UAAU;AACjB,iBAAO,YAAY;AACnB,iBAAO,SAAS;AAChB,iBAAO,aAAa;AAGpB,gBAAM,QAAQ,MAAM;AAKpB,iBAAO,MAAM;AACb,iBAAO,UAAU;AACjB,iBAAO,YAAY;AACnB,iBAAO,aAAa;AACpB,iBAAO,OAAOqC;AACd,iBAAO,QAAQT;AACf,iBAAO,QAAQ1B;AACf,iBAAO,YAAY;AACnB,iBAAO,gBAAgB;AACvB,iBAAO,YAAY;AACnB,iBAAO,aAAa;AACpB,iBAAO,SAAS;AAChB,iBAAO,YAAY;AACnB,iBAAO,SAAS;AAChB,iBAAO,WAAW;AAClB,iBAAO,KAAK9B;AACZ,iBAAO,SAAS0D;AAChB,iBAAO,eAAe;AACtB,iBAAO,QAAQ3B;AACf,iBAAO,OAAOC;AACd,iBAAO,YAAYL;AACnB,iBAAO,UAAU2B;AACjB,iBAAO,WAAW;AAClB,iBAAO,gBAAgB;AACvB,iBAAO,cAAc;AACrB,iBAAO,QAAQY;AACf,iBAAO,UAAUjC;AACjB,iBAAO,eAAe;AACtB,iBAAO,QAAQ;AACf,iBAAO,aAAa;AACpB,iBAAO,SAAS;AAChB,iBAAO,cAAc;AACrB,iBAAO,MAAM/B;AACb,iBAAO,KAAK;AACZ,iBAAO,MAAM;AACb,iBAAO,MAAM;AACb,iBAAO,QAAQ;AACf,iBAAO,OAAO;AACd,iBAAO,WAAWQ;AAClB,iBAAO,WAAW;AAClB,iBAAO,UAAUE;AACjB,iBAAO,UAAU6C;AACjB,iBAAO,SAAS;AAChB,iBAAO,cAAc;AACrB,iBAAO,UAAUlE;AACjB,iBAAO,gBAAgB;AACvB,iBAAO,cAAc;AACrB,iBAAO,oBAAoB;AAC3B,iBAAO,YAAYiD;AACnB,iBAAO,WAAWzC;AAClB,iBAAO,SAAS0C;AAChB,iBAAO,YAAY;AACnB,iBAAO,UAAU;AACjB,iBAAO,UAAU;AACjB,iBAAO,cAAc;AACrB,iBAAO,UAAUC;AACjB,iBAAO,WAAWC;AAClB,iBAAO,aAAanC;AACpB,iBAAO,YAAY;AACnB,iBAAO,WAAW;AAClB,iBAAO,QAAQ;AACf,iBAAO,UAAU;AACjB,iBAAO,cAAc;AACrB,iBAAO,QAAQoC;AACf,iBAAO,WAAW;AAClB,iBAAO,QAAQ;AACf,iBAAO,SAASE;AAChB,iBAAO,WAAWD;AAClB,iBAAO,WAAWrD;AAClB,iBAAO,eAAe;AACtB,iBAAO,gBAAgBmB;AACvB,iBAAO,WAAWoC;AAClB,iBAAO,gBAAgB;AACvB,iBAAO,QAAQ;AACf,iBAAO,WAAWb;AAClB,iBAAO,WAAW5B;AAClB,iBAAO,eAAe;AACtB,iBAAO,cAAc0C;AACrB,iBAAO,YAAY;AACnB,iBAAO,YAAY;AACnB,iBAAO,OAAO;AACd,iBAAO,YAAYW;AACnB,iBAAO,OAAO;AACd,iBAAO,cAAc;AACrB,iBAAO,YAAY;AACnB,iBAAO,aAAa;AACpB,iBAAO,KAAKV;AACZ,iBAAO,MAAM;AACb,iBAAO,MAAM;AACb,iBAAO,QAAQ;AACf,iBAAO,OAAO;AACd,iBAAO,SAAS;AAChB,iBAAO,MAAM;AACb,iBAAO,QAAQ;AACf,iBAAO,YAAY;AACnB,iBAAO,YAAY;AACnB,iBAAO,aAAa;AACpB,iBAAO,aAAa;AACpB,iBAAO,WAAW;AAClB,iBAAO,WAAW;AAClB,iBAAO,MAAM;AACb,iBAAO,aAAa;AACpB,iBAAO,OAAO9B;AACd,iBAAO,MAAMiB;AACb,iBAAO,MAAM;AACb,iBAAO,SAAS;AAChB,iBAAO,WAAW;AAClB,iBAAO,WAAWwB;AAClB,iBAAO,SAAS;AAChB,iBAAO,SAAS;AAChB,iBAAO,cAAc;AACrB,iBAAO,SAAS;AAChB,iBAAO,UAAU;AACjB,iBAAO,SAAS;AAChB,iBAAO,QAAQO;AACf,iBAAO,eAAehG;AACtB,iBAAO,SAASgE;AAChB,iBAAO,OAAO;AACd,iBAAO,YAAY;AACnB,iBAAO,OAAO;AACd,iBAAO,cAAc;AACrB,iBAAO,gBAAgB;AACvB,iBAAO,gBAAgB;AACvB,iBAAO,kBAAkB;AACzB,iBAAO,oBAAoB;AAC3B,iBAAO,oBAAoB;AAC3B,iBAAO,YAAY;AACnB,iBAAO,aAAa;AACpB,iBAAO,WAAW;AAClB,iBAAO,MAAM;AACb,iBAAO,QAAQ;AACf,iBAAO,WAAW;AAClB,iBAAO,QAAQ;AACf,iBAAO,WAAW;AAClB,iBAAO,YAAY5B;AACnB,iBAAO,WAAW;AAClB,iBAAO,UAAU;AACjB,iBAAO,WAAW;AAClB,iBAAO,gBAAgB;AACvB,iBAAO,WAAW;AAClB,iBAAO,UAAU;AACjB,iBAAO,OAAO;AACd,iBAAO,UAAU;AACjB,iBAAO,YAAY;AACnB,iBAAO,WAAW;AAClB,iBAAO,WAAWuD;AAClB,iBAAO,WAAW;AAClB,iBAAO,YAAY;AACnB,iBAAO,aAAa;AAGpB,iBAAO,OAAO7B;AACd,iBAAO,YAAY;AACnB,iBAAO,QAAQ;AAEf,gBAAM,SAAS,WAAW;AACxB,gBAAI,SAAS,CAAC;AACd,uBAAW,QAAQ,SAAS,MAAM,YAAY;AAC5C,kBAAI,CAAC,eAAe,KAAK,OAAO,WAAW,UAAU,GAAG;AACtD,uBAAO,UAAU,IAAI;AAAA,cACvB;AAAA,YACF,CAAC;AACD,mBAAO;AAAA,UACT,GAAE,GAAI,EAAE,SAAS,MAAM,CAAC;AAWxB,iBAAO,UAAU1E;AAGjB,oBAAU,CAAC,QAAQ,WAAW,SAAS,cAAc,WAAW,cAAc,GAAG,SAAS,YAAY;AACpG,mBAAO,UAAU,EAAE,cAAc;AAAA,UACnC,CAAC;AAGD,oBAAU,CAAC,QAAQ,MAAM,GAAG,SAAS,YAAYM,QAAO;AACtD,wBAAY,UAAU,UAAU,IAAI,SAASE,IAAG;AAC9C,cAAAA,KAAIA,OAAMT,aAAY,IAAI,UAAUiD,WAAUxC,EAAC,GAAG,CAAC;AAEnD,kBAAI0B,UAAU,KAAK,gBAAgB,CAAC5B,SAChC,IAAI,YAAY,IAAI,IACpB,KAAK,MAAM;AAEf,kBAAI4B,QAAO,cAAc;AACvB,gBAAAA,QAAO,gBAAgB,UAAU1B,IAAG0B,QAAO,aAAa;AAAA,cAC1D,OAAO;AACL,gBAAAA,QAAO,UAAU,KAAK;AAAA,kBACpB,QAAQ,UAAU1B,IAAG,gBAAgB;AAAA,kBACrC,QAAQ,cAAc0B,QAAO,UAAU,IAAI,UAAU;AAAA,gBACvD,CAAC;AAAA,cACH;AACA,qBAAOA;AAAA,YACT;AAEA,wBAAY,UAAU,aAAa,OAAO,IAAI,SAAS1B,IAAG;AACxD,qBAAO,KAAK,QAAQ,EAAE,UAAU,EAAEA,EAAC,EAAE,QAAQ;AAAA,YAC/C;AAAA,UACF,CAAC;AAGD,oBAAU,CAAC,UAAU,OAAO,WAAW,GAAG,SAAS,YAAYF,QAAO;AACpE,gBAAI,OAAOA,SAAQ,GACf,WAAW,QAAQ,oBAAoB,QAAQ;AAEnD,wBAAY,UAAU,UAAU,IAAI,SAAS8B,WAAU;AACrD,kBAAIF,UAAS,KAAK,MAAM;AACxB,cAAAA,QAAO,cAAc,KAAK;AAAA,gBACxB,YAAY,YAAYE,WAAU,CAAC;AAAA,gBACnC,QAAQ;AAAA,cACV,CAAC;AACD,cAAAF,QAAO,eAAeA,QAAO,gBAAgB;AAC7C,qBAAOA;AAAA,YACT;AAAA,UACF,CAAC;AAGD,oBAAU,CAAC,QAAQ,MAAM,GAAG,SAAS,YAAY5B,QAAO;AACtD,gBAAI,WAAW,UAAUA,SAAQ,UAAU;AAE3C,wBAAY,UAAU,UAAU,IAAI,WAAW;AAC7C,qBAAO,KAAK,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAAA,YACpC;AAAA,UACF,CAAC;AAGD,oBAAU,CAAC,WAAW,MAAM,GAAG,SAAS,YAAYA,QAAO;AACzD,gBAAI,WAAW,UAAUA,SAAQ,KAAK;AAEtC,wBAAY,UAAU,UAAU,IAAI,WAAW;AAC7C,qBAAO,KAAK,eAAe,IAAI,YAAY,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;AAAA,YACrE;AAAA,UACF,CAAC;AAED,sBAAY,UAAU,UAAU,WAAW;AACzC,mBAAO,KAAK,OAAO6C,SAAQ;AAAA,UAC7B;AAEA,sBAAY,UAAU,OAAO,SAAS,WAAW;AAC/C,mBAAO,KAAK,OAAO,SAAS,EAAE,KAAK;AAAA,UACrC;AAEA,sBAAY,UAAU,WAAW,SAAS,WAAW;AACnD,mBAAO,KAAK,QAAQ,EAAE,KAAK,SAAS;AAAA,UACtC;AAEA,sBAAY,UAAU,YAAY,SAAS,SAAS,MAAM,MAAM;AAC9D,gBAAI,OAAO,QAAQ,YAAY;AAC7B,qBAAO,IAAI,YAAY,IAAI;AAAA,YAC7B;AACA,mBAAO,KAAK,IAAI,SAAS,OAAO;AAC9B,qBAAO,WAAW,OAAO,MAAM,IAAI;AAAA,YACrC,CAAC;AAAA,UACH,CAAC;AAED,sBAAY,UAAU,SAAS,SAAS,WAAW;AACjD,mBAAO,KAAK,OAAO,OAAO,YAAY,SAAS,CAAC,CAAC;AAAA,UACnD;AAEA,sBAAY,UAAU,QAAQ,SAAShB,QAAO,KAAK;AACjD,YAAAA,SAAQa,WAAUb,MAAK;AAEvB,gBAAID,UAAS;AACb,gBAAIA,QAAO,iBAAiBC,SAAQ,KAAK,MAAM,IAAI;AACjD,qBAAO,IAAI,YAAYD,OAAM;AAAA,YAC/B;AACA,gBAAIC,SAAQ,GAAG;AACb,cAAAD,UAASA,QAAO,UAAU,CAACC,MAAK;AAAA,YAClC,WAAWA,QAAO;AAChB,cAAAD,UAASA,QAAO,KAAKC,MAAK;AAAA,YAC5B;AACA,gBAAI,QAAQpC,YAAW;AACrB,oBAAMiD,WAAU,GAAG;AACnB,cAAAd,UAAS,MAAM,IAAIA,QAAO,UAAU,CAAC,GAAG,IAAIA,QAAO,KAAK,MAAMC,MAAK;AAAA,YACrE;AACA,mBAAOD;AAAA,UACT;AAEA,sBAAY,UAAU,iBAAiB,SAAS,WAAW;AACzD,mBAAO,KAAK,QAAQ,EAAE,UAAU,SAAS,EAAE,QAAQ;AAAA,UACrD;AAEA,sBAAY,UAAU,UAAU,WAAW;AACzC,mBAAO,KAAK,KAAK,gBAAgB;AAAA,UACnC;AAGA,qBAAW,YAAY,WAAW,SAAS,MAAM,YAAY;AAC3D,gBAAI,gBAAgB,qCAAqC,KAAK,UAAU,GACpE,UAAU,kBAAkB,KAAK,UAAU,GAC3C,aAAa,OAAO,UAAW,UAAU,cAAc,SAAS,UAAU,MAAO,UAAU,GAC3F,eAAe,WAAW,QAAQ,KAAK,UAAU;AAErD,gBAAI,CAAC,YAAY;AACf;AAAA,YACF;AACA,mBAAO,UAAU,UAAU,IAAI,WAAW;AACxC,kBAAI,QAAQ,KAAK,aACb,OAAO,UAAU,CAAC,CAAC,IAAI,WACvB,SAAS,iBAAiB,aAC1BE,YAAW,KAAK,CAAC,GACjB,UAAU,UAAUJ,SAAQ,KAAK;AAErC,kBAAI,cAAc,SAAS6E,QAAO;AAChC,oBAAI3E,UAAS,WAAW,MAAM,QAAQ,UAAU,CAAC2E,MAAK,GAAG,IAAI,CAAC;AAC9D,uBAAQ,WAAW,WAAY3E,QAAO,CAAC,IAAIA;AAAA,cAC7C;AAEA,kBAAI,WAAW,iBAAiB,OAAOE,aAAY,cAAcA,UAAS,UAAU,GAAG;AAErF,yBAAS,UAAU;AAAA,cACrB;AACA,kBAAI,WAAW,KAAK,WAChB,WAAW,CAAC,CAAC,KAAK,YAAY,QAC9B,cAAc,gBAAgB,CAAC,UAC/B,WAAW,UAAU,CAAC;AAE1B,kBAAI,CAAC,gBAAgB,SAAS;AAC5B,wBAAQ,WAAW,QAAQ,IAAI,YAAY,IAAI;AAC/C,oBAAIF,UAAS,KAAK,MAAM,OAAO,IAAI;AACnC,gBAAAA,QAAO,YAAY,KAAK,EAAE,QAAQ,MAAM,QAAQ,CAAC,WAAW,GAAG,WAAWnC,WAAU,CAAC;AACrF,uBAAO,IAAI,cAAcmC,SAAQ,QAAQ;AAAA,cAC3C;AACA,kBAAI,eAAe,UAAU;AAC3B,uBAAO,KAAK,MAAM,MAAM,IAAI;AAAA,cAC9B;AACA,cAAAA,UAAS,KAAK,KAAK,WAAW;AAC9B,qBAAO,cAAe,UAAUA,QAAO,MAAM,EAAE,CAAC,IAAIA,QAAO,MAAM,IAAKA;AAAA,YACxE;AAAA,UACF,CAAC;AAGD,oBAAU,CAAC,OAAO,QAAQ,SAAS,QAAQ,UAAU,SAAS,GAAG,SAAS,YAAY;AACpF,gBAAI,OAAO,WAAW,UAAU,GAC5B,YAAY,0BAA0B,KAAK,UAAU,IAAI,QAAQ,QACjE,eAAe,kBAAkB,KAAK,UAAU;AAEpD,mBAAO,UAAU,UAAU,IAAI,WAAW;AACxC,kBAAI,OAAO;AACX,kBAAI,gBAAgB,CAAC,KAAK,WAAW;AACnC,oBAAI,QAAQ,KAAK,MAAM;AACvB,uBAAO,KAAK,MAAMF,SAAQ,KAAK,IAAI,QAAQ,CAAC,GAAG,IAAI;AAAA,cACrD;AACA,qBAAO,KAAK,SAAS,EAAE,SAAS6E,QAAO;AACrC,uBAAO,KAAK,MAAM7E,SAAQ6E,MAAK,IAAIA,SAAQ,CAAC,GAAG,IAAI;AAAA,cACrD,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAGD,qBAAW,YAAY,WAAW,SAAS,MAAM,YAAY;AAC3D,gBAAI,aAAa,OAAO,UAAU;AAClC,gBAAI,YAAY;AACd,kBAAI,MAAM,WAAW,OAAO;AAC5B,kBAAI,CAAC,eAAe,KAAK,WAAW,GAAG,GAAG;AACxC,0BAAU,GAAG,IAAI,CAAC;AAAA,cACpB;AACA,wBAAU,GAAG,EAAE,KAAK,EAAE,QAAQ,YAAY,QAAQ,WAAW,CAAC;AAAA,YAChE;AAAA,UACF,CAAC;AAED,oBAAU,aAAa9G,YAAW,kBAAkB,EAAE,IAAI,IAAI,CAAC;AAAA,YAC7D,QAAQ;AAAA,YACR,QAAQA;AAAA,UACV,CAAC;AAGD,sBAAY,UAAU,QAAQ;AAC9B,sBAAY,UAAU,UAAU;AAChC,sBAAY,UAAU,QAAQ;AAG9B,iBAAO,UAAU,KAAK;AACtB,iBAAO,UAAU,QAAQ;AACzB,iBAAO,UAAU,SAAS;AAC1B,iBAAO,UAAU,OAAO;AACxB,iBAAO,UAAU,QAAQ;AACzB,iBAAO,UAAU,UAAU;AAC3B,iBAAO,UAAU,SAAS,OAAO,UAAU,UAAU,OAAO,UAAU,QAAQ;AAG9E,iBAAO,UAAU,QAAQ,OAAO,UAAU;AAE1C,cAAI,aAAa;AACf,mBAAO,UAAU,WAAW,IAAI;AAAA,UAClC;AACA,iBAAO;AAAA,QACT;AAKA,YAAIc,MAAID,cAAa;AAGrB,YAAI,OAAO,UAAU,cAAc,OAAO,OAAO,OAAO,YAAY,OAAO,KAAK;AAK9E,eAAK,IAAIC;AAIT,iBAAO,WAAW;AAChB,mBAAOA;AAAA,UACT,CAAC;AAAA,QACH,WAES,YAAY;AAEnB,WAAC,WAAW,UAAUA,KAAG,IAAIA;AAE7B,sBAAY,IAAIA;AAAA,QAClB,OACK;AAEH,eAAK,IAAIA;AAAA,QACX;AAAA,MACF,GAAE,KAAKhB,SAAI;AAAA;AAAA;;;ACxzhBX;AAAA;AAAA;AAAA;AAAA,sBAAc;AAEd,OAAC,WAAY;AACX,cAAM,yBAAyB,WAAY;AACzC,iBAAO;AAAA,YACL,eAAe;AAAA,YACf,UAAU;AAAA,YACV,2BAA2B;AAAA,YAC3B,YAAY,SAAS,eAAe;AAClC,mBAAK,gBAAgB;AACrB,mBAAK,0BAA0B;AAAA,YACjC;AAAA,YACA,QAAQ,WAAW;AACjB,mBAAK,WAAW,CAAC,KAAK;AAAA,YACxB;AAAA,YACA,2BAA2B,WAAW;AACpC,mBAAK,gCACH,cAAAiH,SAAE,KAAK,cAAc,iBAAiB,eAAe,CAAC,EACrD,OAAO,QAAO,GAAG,QAAQ,WAAW,MAAO,EAC3C,IAAI,QAAQ,GAAG,QAAQ,GAAG,EAAI,EAC9B,KAAK,EACL,MAAM,EACN;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,yBAAyB;AAAA,QAClC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AChCH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,gBAAgB,SAAU,IAAI,WAAW,KAAK;AAClD,iBAAO;AAAA,YACL,aAAa,WAAY;AACvB,kBAAI,OAAO,SAAS,eAAe,EAAE;AAErC,uBAAS,qBAAqB,MAAM,EAAE,CAAC,EAAE,WAAW;AACpD,mBAAK,iBAAiB,mBAAmB,EAAE,CAAC,EAAE,UAAU,IAAI,QAAQ;AAEpE,uBAAS,WAAW;AAClB,oBAAI,oBAAoB,SAAUC,WAAU;AAC1C,2BAASC,KAAI,GAAGA,KAAID,UAAS,QAAQ,EAAEC,IAAG;AACxC,oBAAAD,UAASC,EAAC,EAAE,UAAU,OAAO,QAAQ;AAAA,kBACvC;AAAA,gBACF;AACA,oBAAI,UAAU,KAAK,iBAAiB,mBAAmB;AACvD,oBAAI,qBAAqB;AAEzB,yBAASA,KAAI,GAAGA,KAAI,QAAQ,QAAQ,EAAEA,IAAG;AACvC,sBAAI,oBAAoB,SAAS,eAAe,QAAQA,EAAC,EAAE,aAAa,iBAAiB,CAAC;AAC1F,sBAAI,uBAAuB,kBAAkB,sBAAsB,EAAE;AAErE,sBAAI,wBAAwB,UAAU;AACpC,yCAAqB,QAAQA,EAAC;AAE9B,wBAAIA,MAAK,QAAQ,SAAS,GAAG;AAC3B,wCAAkB,OAAO;AACzB,8BAAQA,EAAC,EAAE,UAAU,IAAI,QAAQ;AAAA,oBACnC;AAAA,kBACF,OAAO;AACL,sCAAkB,OAAO;AAEzB,uCAAmB,UAAU,IAAI,QAAQ;AAEzC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,gBAAgB;AAAA,QACzB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC/CH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,eAAe,WAAY;AAC/B,iBAAO;AAAA,YACL,QAAQ,OAAO,SAAS,MAAM,MAAM,CAAC;AAAA,YACrC,iBAAiB,WAAY;AAC3B,oBAAM,SAAS,KAAK;AAEpB,kBAAI,CAAC,OAAQ;AAEb,oBAAM,YAAY,OAAO,MAAM,GAAG,EAAE,CAAC;AAErC,kBAAI,cAAc,MAAO,MAAK,UAAU,MAAM;AAAA,YAChD;AAAA,YACA,WAAW,SAAU,QAAQ;AAC3B,oBAAM,CAAC,OAAO,GAAG,IAAI,KAAK,WAAW,MAAM;AAE3C,uBACG,cAAc,oBAAoB,KAAK,IAAI,GAC1C,cAAc,mBAAmB,GAAG,IAAI,GACxC,MAAM;AAAA,YACZ;AAAA,YACA,YAAY,SAAU,QAAQ,EAAE,SAAS,IAAI,CAAC,GAAG;AAC/C,kBAAI,CAAC,OAAQ,QAAO,CAAC,MAAM,QAAQ;AAEnC,oBAAM,cAAc,OAAO,MAAM,GAAG,EAAE,CAAC;AAEvC,kBAAI,aAAa;AACf,uBAAO,YAAY,MAAM,GAAG;AAAA,cAC9B,OAAO;AACL,uBAAO,CAAC,MAAM,QAAQ;AAAA,cACxB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,eAAe;AAAA,QACxB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACxCH;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAAC;AAAA;AAAA,MAAAC,gBAEMD,iBASA,kBAYA,YAIA;AA3BN;AAAA;AAAA,MAAAC,iBAAc;AAEd,MAAMD,kBAAiB,CAAC,QAAQ;AAC9B,eAAO,IACJ,QAAQ,oBAAoB,EAAE,EAC9B,QAAQ,WAAW,GAAG,EACtB,QAAQ,UAAU,SAAUE,IAAG;AAC9B,iBAAOA,GAAE,YAAY;AAAA,QACvB,CAAC;AAAA,MACL;AAEA,MAAM,mBAAmB,CAAC,QAAQ;AAChC,YAAI,CAAC,IAAK,QAAO;AAEjB,YAAI,SAAS,IAAI,OAAO,CAAC,EAAE,YAAY;AAEvC,iBAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,MAAM,GAAG;AACzC,oBAAU,IAAI,OAAO,EAAE,EAAE,YAAY;AAAA,QACvC;AAEA,eAAO;AAAA,MACT;AAEA,MAAM,aAAa,CAAC,KAAK,cAAc;AACrC,eAAO,OAAO,YAAY,OAAO,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,UAAU,KAAK,CAAC,CAAC;AAAA,MAC3F;AAEA,MAAM,eAAe,CAAC,QAAQ;AAC5B,eAAO,eAAAC,QAAE,UAAU,KAAK,CAAC,KAAK,OAAO,KAAK,WAAW;AACnD,gBAAM,WAAW,eAAAA,QAAE,QAAQ,MAAM,IAAI,MAAM,eAAAA,QAAE,UAAU,GAAG;AAE1D,cAAI,QAAQ,IAAI,eAAAA,QAAE,SAAS,KAAK,IAAI,aAAa,KAAK,IAAI;AAAA,QAC5D,CAAC;AAAA,MACH;AAEA,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,iBAAiBH;AAAA,MAC1B;AAAA;AAAA;;;ACrCA;AAAA,MACAI;AADA;AAAA;AAAA;AACA,MAAAA,iBAAc;AAEd,OAAC,WAAY;AACX,iBAASC,eAAc,UAAU,MAAM,WAAW;AAChD,cAAI,QAAQ,OAAO,SAAS,YACtB,EAAE,gBAAgB,SAClB,EAAE,gBAAgB,SAClB,EAAE,gBAAgB,OAAO;AAC7B,mBAAO,KAAK,IAAI,EAAE,QAAQ,SAAO;AAC/B,cAAAA,eAAc,UAAU,KAAK,GAAG,GAAG,YAAY,GAAG,SAAS,IAAI,GAAG,MAAM,GAAG;AAAA,YAC7E,CAAC;AAAA,UACH,OAAO;AACL,kBAAM,QAAQ,QAAQ,OAAO,KAAK;AAElC,qBAAS,OAAO,WAAW,KAAK;AAAA,UAClC;AAAA,QACF;AAEA,cAAM,uBAAuB,SAC3B,YACA,MACA,cAAc,MACd,SAAS,CAAC,GACV,mBAAmB,CAAC,GACpB,kBAAkB,CAAC,GACnB,iBAAiB,MACjB,cAAc,MACd;AACA,cAAI;AAEJ,iBAAO;AAAA,YACL,MAAM,SAAUC,WAAU;AACxB,0BAAYA;AAAA,YACd;AAAA,YACA,gBAAgB;AAAA,YAChB,SAAS;AAAA,YACT,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,wBAAwB;AAAA,YACxB,gBAAgB;AAAA,YAChB,sBAAsB;AAAA,YACtB,eAAe;AAAA,YACf,aAAa;AAAA,YACb,QAAQ,CAAC;AAAA,YACT,SAAS,CAAC,UAAU,UAAU,QAAQ,EAAE,OAAO,CAACC,OAAMA,OAAM,IAAI,EAAE,CAAC,KAAK;AAAA,YACxE,cAAc;AAAA,YACd,YAAY,WAAY;AAAE,qBAAO,KAAK,cAAc,CAAC,KAAK;AAAA,YAAY;AAAA,YACtE,kBAAkB,WAAY;AAAE,qBAAO,KAAK,cAAc,QAAQ;AAAA,YAAG;AAAA,YACrE,cAAc,WAAY;AAAE,qBAAO,KAAK,OAAO,OAAO,WAAS,CAAC,MAAM,MAAM;AAAA,YAAE;AAAA,YAC9E,SAAS,WAAY;AAAE,qBAAO,CAAC,KAAK;AAAA,YAAa;AAAA,YACjD,QAAQ,SAAU,OAAO;AACvB,oBAAM,SAAS;AACf,oBAAM,WAAW,CAAC,MAAM;AACxB,mBAAK,cAAc;AAAA,YACrB;AAAA,YACA,QAAQ,SAAU,OAAO;AACvB,oBAAM,SAAS,CAAC,MAAM;AACtB,oBAAM,WAAW;AACjB,mBAAK,cAAc;AAAA,YACrB;AAAA,YACA,aAAa,SAAU,OAAO;AAC5B,oBAAM,SAAS,CAAC,MAAM;AACtB,oBAAM,UAAU,MAAM;AACtB,mBAAK,cAAc;AAAA,YACrB;AAAA,YACA,eAAe,WAAY;AACzB,mBAAK,kBAAkB,EAAE,SAAS,CAAC,KAAK,aAAa,EAAE,OAAO,CAAC;AAAA,YACjE;AAAA,YACA,YAAY,SAAU,MAAM,MAAM;AAChC,oBAAM,SAAS;AAEf,mBAAK,eAAe;AACpB,mBAAK,SAAS,CAAC;AAEf,kBAAI,KAAK,SAAS,YAAY;AAC5B,uBAAO,kBAAkB,EAAE,SAAS,KAAK,CAAC;AAE1C;AAAA,cACF;AAEA,mBAAK,eAAe,MAAM,IAAI,EAC3B,KAAK,MAAM;AACV,uBAAO,kBAAkB,EAAE,SAAS,CAAC,OAAO,aAAa,EAAE,OAAO,CAAC;AAAA,cACrE,CAAC;AAAA,YACL;AAAA,YACA,mBAAmB,SAAU,EAAE,QAAQ,GAAG;AACxC,kBAAI,kBAAkB;AAEtB,kBAAI,KAAK,WAAW,CAAC,SAAS;AAC5B;AAAA,cACF,WAAW,CAAC,KAAK,WAAW,SAAS;AACnC;AAAA,cACF;AAEA,mBAAK,UAAU;AAEf,wBAAU,gBAAgB,EAAE,YAAY,gBAAgB,CAAC;AAAA,YAC3D;AAAA,YACA,gBAAgB,SAAS,WAAW,MAAM;AACxC,oBAAM,SAAS;AACf,oBAAM,cAAc;AAEpB,oBAAM,OAAO;AAAA,gBACX,aAAa,iBAAiB,EAAE,GAAG,YAAY,iBAAiB,eAAe,IAAI;AAAA,gBACnF;AAAA,gBACA;AAAA,cACF;AACA,oBAAM,WAAW,IAAI,SAAS;AAC9B,cAAAF,eAAc,UAAU,IAAI;AAE5B,mBAAK,UAAU;AAEf,qBAAO,MAAM,8BAA8B,EAAE,QAAQ,QAAQ,MAAM,SAAS,CAAC,EAC1E,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,CAAAG,YAAU;AACd,gBAAAA,UAAS,aAAaA,OAAM;AAE5B,uBAAO,UAAU;AAEjB,oBAAI,CAACA,QAAO,OAAO;AACjB,yBAAO,SAASA;AAAA,gBAClB,OAAO;AACL,yBAAO,SAAS,CAACA,QAAO,OAAO,GAAG,OAAO,MAAM;AAAA,gBACjD;AAEA,4BAAY,oBAAoB,CAAC,CAAC;AAAA,cACpC,CAAC;AAAA,YACL;AAAA,YACA,YAAY,WAAY;AACtB,qBAAO,KAAK,OAAO,SAAS;AAAA,YAC9B;AAAA,YACA,cAAc,SAAU,OAAO,CAAC,GAAG,SAAS,OAAO;AACjD,oBAAM,UAAU;AAAA,gBACd;AAAA,gBACA,SAAS,EAAE,MAAM,QAAQ,KAAK,OAAO;AAAA,gBACrC,iBAAiB,KAAK;AAAA,gBACtB,iBAAiB,KAAK;AAAA,gBACtB,wBAAwB,KAAK;AAAA,gBAC7B,aAAa,KAAK,mBAAmB;AAAA,cACvC;AACA,kBAAI,CAAC,eAAAC,QAAE,MAAM,KAAK,WAAW,KAAK,GAAG,KAAK,WAAW,GAAG,KAAK,MAAM,IAAI;AACrE,wBAAQ,eAAe,KAAK;AAAA,cAC9B;AACA,oBAAM,OAAO,KAAK,UAAU,OAAO;AAEnC,qBAAO,IAAI;AAAA,gBAAa;AAAA,gBACtB,gBAAgB,WAAW;AAAA,gBAC3B,EAAE,MAAM,cAAc,gBAAgB,aAAa,mBAAmB;AAAA,cAAC,EAAE,QAAQ;AAAA,YACrF;AAAA,YACA,oBAAoB,WAAY;AAC9B,qBAAO,MAAM,KAAK,SAAS,iBAAiB,8CAA8C,CAAC,EACxF,IAAI,CAAC,OAAO,GAAG,KAAK;AAAA,YACzB;AAAA,YACA,0BAA0B,WAAY;AACpC,qBAAO,MAAM,KAAK,SAAS,iBAAiB,4DAA4D,CAAC,EACtG,IAAI,CAAC,OAAO,GAAG,QAAQ,oBAAoB,CAAC,EAC5C,OAAO,CAAC,OAAO,MAAM,GAAG,QAAQ,gBAAgB,SAAS;AAAA,YAC9D;AAAA,YACA,6BAA6B,WAAY;AACvC,qBAAO,KAAK,yBAAyB,EAAE,SAAS;AAAA,YAClD;AAAA,YACA,oBAAoB,SAAU,aAAa;AACzC,oBAAM,WAAW,KAAK,mBAAmB;AACzC,oBAAM,QAAQ,IAAI,gBAAgB;AAElC,uBAAS,QAAQ,CAAC,OAAO;AACvB,sBAAM,OAAO,iBAAiB,EAAE;AAAA,cAClC,CAAC;AAED,qBAAO,MAAM,GAAG,WAAW,IAAI,MAAM,SAAS,CAAC,IAAI;AAAA,gBACjD,SAAS,EAAE,QAAQ,mBAAmB;AAAA,cACxC,CAAC,EACE,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,YAAY;AACjB,qBAAK,uBAAuB,QAAQ,0BAA0B;AAAA,cAChE,CAAC;AAAA,YACL;AAAA,YACA,mBAAmB,WAAY;AAC7B,mBAAK,iBAAiB,KAAK,OAAO,IAAI,WAAS;AAC7C,uBAAO,MAAM;AAAA,cACf,CAAC,EAAE,OAAO,CAACC,OAAMA,EAAC,EAAE,KAAK,IAAI;AAAA,YAC/B;AAAA,YACA,mBAAmB,SAAU,YAAY;AACvC,kBAAI,CAAC,YAAY;AACf,qBAAK,iBAAiB;AAAA,cACxB,OAAO;AACL,sBAAM,WAAW,KAAK,gBAAgB,KAAK,CAACC,OAAMA,GAAE,OAAO,UAAU;AAErE,qBAAK,iBAAiB,GAAG,KAAK,kBAAkB,EAAE;AAAA,EAAK,SAAS,YAAY,EAAE,GAAG,KAAK;AAAA,cACxF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,uBAAuB;AAAA,QAChC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC7MH;AAAA,MACAC;AADA;AAAA;AAAA;AACA,MAAAA,iBAAc;AAEd,OAAC,WAAY;AACX,cAAM,gBAAgB,MAAM;AAC1B,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,aAAa;AAAA,YACb,iBAAiB,CAAC;AAAA,YAClB,iBAAiB;AAAA,YACjB,gBAAgB;AAAA,YAChB,2BAA2B;AAAA,YAC3B,mBAAmB;AAAA,cACjB,OAAO;AAAA,cACP,cAAc;AAAA,cACd,WAAW;AAAA,cACX,WAAW;AAAA,cACX,aAAa;AAAA,YACf;AAAA,YACA,aAAa;AAAA,YACb,SAAS,CAAC;AAAA,YACV,UAAU,CAAC;AAAA,YACX,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,oBAAoB;AAAA,YACpB,YAAY;AAAA,YACZ,SAAS;AAAA,YACT,mBAAmB,IAAI,KAAK,aAAa,SAAS;AAAA,cAChD,OAAO;AAAA,cACP,UAAU;AAAA,YACZ,CAAC;AAAA,YACD,gBAAgB;AAAA,YAChB,gBAAgB;AAAA,YAChB;AAAA,YACA,mBAAmB,WAAY;AAC7B,oBAAM,YAAY,KAAK,QAAQ,IAAI,YAAU,OAAO,EAAE;AAEtD,kBAAI,KAAK,aAAa;AACpB,qBAAK,kBAAkB;AAAA,kBACrB,GAAG,KAAK,gBAAgB,OAAO,YAAU,CAAC,UAAU,SAAS,OAAO,EAAE,CAAC;AAAA,gBACzE;AAEA,qBAAK,cAAc;AAAA,cACrB,OAAO;AACL,qBAAK,kBAAkB,CAAC,GAAG,KAAK,iBAAiB,GAAG,KAAK,OAAO;AAChE,qBAAK,cAAc;AAAA,cACrB;AAAA,YACF;AAAA,YACA,kBAAkB,SAAS,QAAQ;AACjC,qBAAO,KAAK,gBAAgB,KAAK,SAAO,IAAI,OAAO,OAAO,EAAE;AAAA,YAC9D;AAAA,YACA,cAAc,SAAU,QAAQ;AAC9B,kBAAIC,SAAQ,KAAK,gBAAgB,UAAU,SAAO,IAAI,OAAO,OAAO,EAAE;AAEtE,kBAAIA,WAAU,IAAI;AAChB,qBAAK,gBAAgB,KAAK,MAAM;AAAA,cAClC,OAAO;AACL,qBAAK,gBAAgB,OAAOA,QAAO,CAAC;AAAA,cACtC;AAAA,YACF;AAAA,YACA,QAAQ,SAAU,SAAS,CAAC,GAAG,WAAW,IAAI,cAAc,eAAe,OAAO,GAAG;AACnF,oBAAM,CAAC,aAAa,GAAG,YAAY,IAAI;AACvC,kBAAI,eAAe,CAAC;AAEpB,kBAAI,aAAa;AACf,+BAAe;AAAA,kBACb,oBAAoB;AAAA,gBACtB;AAAA,cACF;AAEA,oBAAMC,KAAI,KAAK,QAAQ,YAAY;AAEnC,kBAAI,MACF,mCAAmC,QAAQ,iBAAiB,WAAW,SAAS,IAAI;AAEtF,kBAAIA,GAAG,QAAO,IAAIA,EAAC;AAEnB,kBAAI,aAAa,OAAO,CAACC,OAAM,QAAQA,EAAC,CAAC,EAAE,QAAQ;AACjD,sBAAM,aAAa,aAAa,OAAO,CAACA,OAAM,QAAQA,EAAC,CAAC,EAAE,KAAK,GAAG;AAElE,uBAAO,aAAa,UAAU;AAAA,cAChC;AAEA,qBAAO;AAAA,YACT;AAAA,YACA,cAAc,SAAU,QAAQ,UAAU,aAAa,OAAO,GAAG;AAC/D,kBAAI,SAAS;AAEb,mBAAK,cAAc;AACnB,mBAAK,UAAU;AAEf,qBAAO,MAAM,KAAK,OAAO,QAAQ,UAAU,aAAa,IAAI,CAAC,EAC1D,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,WAAW;AAChB,uBAAO,UAAU,OAAO;AACxB,uBAAO,kBAAkB,OAAO;AAChC,uBAAO,iBAAiB,OAAO;AAC/B,uBAAO,4BAA4B,OAAO;AAC1C,uBAAO,oBAAoB,OAAO;AAClC,uBAAO,UAAU;AACjB,uBAAO,gBAAgB;AACvB,uBAAO,mBAAmB;AAC1B,uBAAO,iBAAiB,OAAO,YAAY;AAE3C,sBAAM,YAAY,OAAO,QAAQ,IAAI,YAAU,OAAO,EAAE;AACxD,sBAAM,oBAAoB,OAAO,gBAAgB,IAAI,YAAU,OAAO,EAAE;AAExE,uBAAO,cAAc,UAAU,SAAS,KACtC,UAAU,MAAM,YAAU,kBAAkB,SAAS,MAAM,CAAC;AAAA,cAChE,CAAC;AAAA,YACL;AAAA,YACA,kBAAkB,SAAU,UAAU,aAAa;AACjD,kBAAI,SAAS;AACb,kBAAI,MAAM,qBAAqB,QAAQ;AAEvC,kBAAI,aAAa;AAAE,sBAAM,MAAM,iBAAiB,WAAW;AAAA,cAAG;AAAC;AAE/D,qBAAO,MAAM,GAAG;AAAA,YAClB;AAAA,YACA,SAAS,SAASF,QAAO,WAAW;AAClC,kBAAI,OAAO,SAAS,eAAe,qBAAqB,EAAE;AAE1D,kBAAI,cAAc,MAAM;AACtB,oBAAIA,UAAS,GAAG;AACd,mBAAC,KAAK,gBAAgBA,MAAK,GAAG,KAAK,gBAAgBA,SAAQ,CAAC,CAAC,IAC3D,CAAC,KAAK,gBAAgBA,SAAQ,CAAC,GAAG,KAAK,gBAAgBA,MAAK,CAAC;AAAA,gBACjE;AAAA,cACF;AAEA,kBAAI,cAAc,QAAQ;AACxB,oBAAIA,SAAQ,KAAK,SAAQ,GAAG;AAC1B,mBAAC,KAAK,gBAAgBA,SAAQ,CAAC,GAAG,KAAK,gBAAgBA,MAAK,CAAC,IAC3D,CAAC,KAAK,gBAAgBA,MAAK,GAAG,KAAK,gBAAgBA,SAAQ,CAAC,CAAC;AAAA,gBACjE;AAAA,cACF;AAAA,YACF;AAAA,YACA,OAAO,SAAU,QAAQ;AACvB,qBAAO,QAAQ,CAAC,UAAU;AACxB,sBAAM,UAAU;AAAA,cAClB,CAAC;AAED,mBAAK,yBAAyB,MAAM;AAAA,YACtC;AAAA,YACA,WAAW,SAAU,QAAQ;AAC3B,qBAAO,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,UAAU;AAChC,wBAAQ,MAAM,MAAM;AAAA,kBAClB,KAAK;AACH,2BAAO,MAAM,UAAU,MAAM,QAAQ;AAAA,kBAEvC;AACE,2BAAO,MAAM,QAAQ,MAAM,QAAQ;AAAA,gBACvC;AAAA,cACF,CAAC;AAAA,YACH;AAAA,YACA,kBAAkB,SAAU,QAAQ;AAClC,oBAAM,UAAU,OAAO,OAAO,CAAC,UAAU,MAAM,OAAO;AAEtD,kBAAI,CAAC,QAAQ,OAAQ,QAAQ,KAAK,aAAa;AAE/C,oBAAM,OAAO,QACV,IAAI,CAAC,WAAWG,gBAAe,OAAO,IAAI,CAAC,EAC3C,KAAK,IAAI;AAEZ,kBAAI,KAAK,SAAS,IAAI;AACpB,qBAAK,aAAa,KAAK,UAAU,GAAG,EAAE,IAAI;AAAA,cAC5C,OAAO;AACL,qBAAK,aAAa;AAAA,cACpB;AAAA,YACF;AAAA,YACA,0BAA0B,SAAU,QAAQ;AAC1C,oBAAM,UAAU,CAAC,GAAG,MAAM,EACvB,IAAI,CAAC,UAAU,MAAM,OAAO,EAC5B,KAAK,CAACC,OAAMA,OAAM,IAAI;AAEzB,kBAAI,SAAS;AACX,qBAAK,qBAAqB;AAAA,cAC5B,OAAO;AACL,qBAAK,qBAAqB;AAAA,cAC5B;AAAA,YACF;AAAA,YACA,SAAS,SAAU,MAAM;AACvB,qBAAO,OAAO,KAAK,IAAI,EACpB,IAAI,CAAC,QAAQ,KAAK,GAAG,KAAK,KAAK,GAAG,CAAC,EAAE,EACrC,KAAK,GAAG;AAAA,YACb;AAAA,YACA,0BAA0B,SAAU,QAAQ;AAC1C,qBAAO,CAAC,OAAO,cAAc,CAAC,OAAO,qBAAqB,KAAK;AAAA,YACjE;AAAA,YACA,wBAAwB,SAAU,QAAQ;AACxC,qBAAO,WAAW,OAAO,kBAAkB,IAAI,WAAW,OAAO,0BAA0B;AAAA,YAC7F;AAAA,YACA,aAAa,SAAU,UAAU;AAC/B,kBAAI,CAAC,KAAK,eAAgB,QAAO;AAEjC,kBAAI,KAAK,mBAAmB,eAAe;AACzC,uBAAO,SAAS,OAAO,CAAC,MAAM,YAAY;AACxC,uBAAK,KAAK,WAAW,QAAQ,GAAG,CAAC;AAAG,yBAAO;AAAA,gBAC7C,GAAG,CAAC,CAAC,EAAE,SAAS,CAAI;AAAA,cACtB;AAEA,kBAAI,KAAK,mBAAmB,WAAW;AACrC,oBAAI,CAAC,KAAK,eAAgB,QAAO;AAEjC,sBAAM,eAAe,IAAI,KAAK,KAAK,cAAc;AACjD,sBAAMC,OAAM,oBAAI,KAAK;AAErB,uBAAO,eAAeA;AAAA,cACxB;AAEA,qBAAO;AAAA,YACT;AAAA,YACA,gCAAgC,WAAY;AAC1C,mBAAK,SAAS,QAAQ,CAAC,YAAY;AACjC,wBAAQ,MAAM,KAAK,iBAAiB,QAAQ,EAAE;AAAA,cAChD,CAAC;AAAA,YACH;AAAA,YACA,kBAAkB,SAAU,WAAW;AACrC,oBAAM,4BAA4B,KAAK,gBAAgB,IAAI,CAACC,OAAMA,GAAE,iBAAiB;AACrF,oBAAM,OAAO,eAAAC,QAAE,QAAQ,CAAC,GAAG,yBAAyB,EAAE,KAAK,CAAC;AAE5D,qBAAO,KAAK,KAAK,CAAC,QAAQ,IAAI,eAAe,SAAS,GAAG,OAAO;AAAA,YAClE;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,mBAAmB;AAAA,QAC5B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACtOH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,yBAAyB,SAC7B,eACA,sBACA;AACA,gBAAM,mBAAmB,cAAc;AAEvC,iBAAO;AAAA,YACL,mBAAmB,cAAc;AAAA,YACjC,yBAAyB,iBAAiB;AAAA,YAC1C,oBAAoB,iBAAiB;AAAA,YACrC,kBAAkB,CAAC;AAAA,YACnB,QAAQ;AAAA,YACR,cAAc;AAAA,YACd,wBAAwB,WAAY;AAClC;AAAA,gBACE,qBAAqB,cAAc,UAAU,YAAY,cAAc,SAAS;AAAA,cAClF,EACG,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,aAAc,KAAK,mBAAmB,QAAS,EACrD,KAAK,CAACC,QAAO,KAAK,eAAe,IAAK;AAAA,YAC3C;AAAA,YACA,gBAAgB,WAAY;AAC1B,kBAAI,SAAS,CAAC;AAEd,kBAAI,CAAC,KAAK,kBAAmB,QAAO;AAEpC,kBAAI,KAAK,2BAA2B,CAAC,sBAAsB;AACzD,uBAAO,KAAK,mBAAmB;AAAA,cACjC;AAEA,qBAAO;AAAA,YACT;AAAA,YACA,cAAc,WAAY;AACxB,kBAAI,SAAS,CAAC;AAEd,kBAAI,CAAC,KAAK,kBAAmB,QAAO;AAEpC,kBAAI,CAAC,KAAK,iBAAiB,sBAAsB;AAC/C,uBAAO,KAAK,qBAAqB;AAAA,cACnC;AACA,kBACE,CAAC,KAAK,iBAAiB,aAAa;AAAA,gBAAO,CAAC,WAC1C,QAAQ,WAAW,MAAM,CAAC;AAAA,cAC5B,EAAE,QACF;AACA,uBAAO,KAAK,qBAAqB;AAAA,cACnC;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,yBAAyB;AAAA,QAClC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC3DH;AAAA,MAAAC;AAAA;AAAA;AAAA,MAAAA,iBAAc;AAEd,OAAC,WAAY;AACX,cAAM,kBAAkB,SAAU,kBAAkB,cAAc,UAAU,CAAC,GAAG;AAC9E,iBAAO;AAAA,YACL;AAAA,YACA,aAAa,CAAC;AAAA,YACd,SAAS,QAAQ,WAAW;AAAA,YAC5B,mBAAmB;AAAA,YACnB,YAAY,SAAS,OAAO,WAAW;AACrC,mBAAK,oBAAoB;AACzB,mBAAK,YAAY;AAAA,YACnB;AAAA,YACA,YAAY,SAAS,IAAI;AACvB,qBAAO,GAAG,KAAK,OAAO,GAAG,EAAE;AAAA,YAC7B;AAAA,YACA,eAAe,SAAS,IAAI;AAC1B,qBAAO,GAAG,QAAQ,KAAK,SAAS,EAAE;AAAA,YACpC;AAAA,YACA,iBAAiB,SAAS,SAAS;AACjC,mBAAK,kBAAkB,UAAU;AAAA,YACnC;AAAA,YACA,mBAAmB,SAASC,QAAO;AACjC,oBAAM,YAAY,KAAK,cAAcA,OAAM,OAAO,EAAE;AACpD,oBAAMC,SAAQ,KAAK,YAAY,QAAQ,SAAS;AAEhD,kBAAIA,UAAS,GAAG;AACd,qBAAK,cAAc,KAAK,YAAY,OAAO,gBAAc,cAAc,SAAS;AAAA,cAClF,OAAO;AACL,qBAAK,cAAc,CAAC,GAAG,KAAK,aAAa,SAAS;AAAA,cACpD;AAEA,mBAAK,gBAAgB,eAAAC,QAAE,QAAQ,KAAK,YAAY,KAAK,GAAG,KAAK,aAAa,KAAK,CAAC,CAAC;AAEjF,mBAAK,eAAe;AAAA,YACtB;AAAA,YACA,iBAAiB,WAAW;AAC1B,oBAAM,UAAU,KAAK,kBAAkB;AAEvC,mBAAK,cAAe,UAAW,KAAK,aAAa,MAAM,CAAC,IAAI,CAAC;AAC7D,mBAAK,aAAa,QAAQ,CAAC,OAAO;AAChC,yBAAS,eAAe,KAAK,WAAW,EAAE,CAAC,EAAE,UAAU;AAAA,cACzD,CAAC;AAED,mBAAK,eAAe;AAAA,YACtB;AAAA,YACA,gBAAgB,WAAY;AAC1B,mBAAK,UAAU,0BAA0B,EAAE,MAAM,kBAAkB,aAAa,KAAK,YAAY,CAAC;AAAA,YACpG;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,kBAAkB;AAAA,QAC3B;AAEA,cAAM,wBAAwB,SAAU,kBAAkB;AACxD,iBAAO;AAAA,YACL,aAAa,CAAC;AAAA,YACd,YAAY,SAAS,KAAK,OAAO;AAC/B,oBAAM,SAAS,KAAK,YACD,IAAI,QAAM,GAAG,KAAK,MAAM,EAAE,EAAE,EAC5B,KAAK,GAAG;AAE3B,qBAAO,GAAG,GAAG,IAAI,MAAM;AAAA,YACzB;AAAA,YACA,SAAS,SAAU,aAAa;AAC9B,kBAAI,YAAY,SAAS,iBAAkB;AAE3C,mBAAK,cAAc,YAAY;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,wBAAwB;AAAA,QACjC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC/EH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,UAAU,WAAY;AAC1B,iBAAO;AAAA,YACL,MAAM,CAAC,EAAC,KAAK,GAAG,mBAAmB,IAAI,UAAU,GAAE,CAAC;AAAA,YACpD,QAAQ,WAAY;AAClB,mBAAK,KAAK,KAAK,EAAC,KAAK,GAAG,mBAAmB,IAAI,UAAU,GAAE,CAAC;AAC5D,yBAAW,MAAM;AAAE,qBAAK,aAAa;AAAA,cAAG,GAAG,EAAE;AAAA,YAC/C;AAAA,YACA,WAAW,SAAUC,QAAO;AAC1B,mBAAK,KAAK,OAAOA,QAAO,CAAC;AAAA,YAC3B;AAAA,YACA,WAAW,WAAW;AACpB,qBAAQ,KAAK,KAAK,WAAW,KACrB,KAAK,KAAK,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,IAAI,qBAAqB,EAAE;AAAA,YAC7E;AAAA,YACA,cAAc,WAAY;AACxB,kBAAI,cAAc,SAAS,uBAAuB,aAAa;AAC/D,wBAAU,EAAE,oBAAoB,MAAM,OAAO,YAAY,gBAAgB,IAAI,CAAC,EAAE,KAAK,WAAW;AAAA,YAClG;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,UAAU;AAAA,QACnB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC3BH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,0BAA0B,SAAUC,OAAM;AAC9C,iBAAO,SAAU,QAAQ,WAAW;AAClC,mBAAO,GAAG,UAAU,SAAUC,IAAG;AAC/B,wBAAU,uBAAuB;AAAA,gBAC/B,YAAYA,GAAE,OAAO,OAAO,MAAM,IAAI,CAAC,QAAQ,IAAI,EAAE;AAAA,gBACrD,MAAAD;AAAA,cACF,CAAC;AAAA,YACH,CAAC;AAED,mBAAO,GAAG,UAAU,SAAUC,IAAG;AAC/B,oBAAM,aAAaA,GAAE,OAAO;AAE5B,wBAAU,eAAe;AAAA,gBACvB;AAAA,gBAAwB,MAAAD;AAAA,cAC1B,CAAC;AAAA,YACH,CAAC;AAAA,UACH;AAAA,QACF;AAEA,cAAM,iBAAiB,WAAY;AACjC,iBAAO;AAAA,YACL,SAAS;AAAA,cACP,QAAQ;AAAA,cACR,WAAW;AAAA,YACb;AAAA,YACA,YAAY;AAAA,cACV,QAAQ;AAAA,YACV;AAAA,YACA,MAAM,CAAC;AAAA,YACP,OAAO,CAAC;AAAA,YACR,QAAQ,SAAUC,IAAG,YAAY;AAC/B,oBAAM,SAAS;AAEf,mBAAK,QAAQ,WAAW,QAAQ,IAAI,IAAI;AACxC,mBAAKA,GAAE,OAAO,IAAI,IAAIA,GAAE,OAAO;AAE/B,oBAAM,MAAM,WAAW,QAAQ;AAC/B,oBAAM,QAAQ,KAAK,KAChB,IAAI,CAAC,OAAO,iBAAiB,EAAE,EAAE,EACjC,KAAK,GAAG;AACX,oBAAM,UAAU,GAAG,GAAG,IAAI,KAAK;AAE/B,yBAAW,aAAa,OAAO,OAAO;AAAA,YACxC;AAAA,YACA,iBAAiB,WAAW;AAC1B,oBAAM,cAAc,KAAK,MAAM;AAE/B,kBAAI,aAAa;AACf,sBAAM,gBAAgB,YAAY,cAAc,mBAAmB;AAEnE,qBAAK,WAAW,SAAS,iBAAiB,cAAc,SAAS,SAAS;AAAA,cAC5E;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,cAAM,mBAAmB,SAAU,eAAe,iBAAiB,kBAAkB;AACnF,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,kBAAkB,oBAAoB,CAAC;AAAA,YAEvC,MAAM,WAAW;AACf,mBAAK,wBAAwB;AAC7B,mBAAK,8BAA8B;AAAA,YACrC;AAAA,YAEA,yBAAyB,WAAW;AAClC,qBAAO,iBAAiB,eAAe,CAACC,WAAU;AAChD,oBAAIA,OAAM,OAAO,WAAW,OAAO,KAAK,cAAe,MAAK,iBAAiB;AAAA,cAC/E,CAAC;AAAA,YACH;AAAA,YAEA,+BAA+B,WAAW;AACxC,oBAAM,kBAAkB,SAAS,cAAc,8BAA8B;AAE7E,8BAAgB,iBAAiB,UAAU,CAACA,WAAU;AACpD,oBAAI,CAACA,OAAM,OAAO,QAAS,MAAK,gCAAgC;AAAA,cAClE,CAAC;AAAA,YACH;AAAA,YAEA,iCAAiC,WAAW;AAC1C,oBAAM,yBAAyB,KAAK,iBAAiB;AAAA,gBAAK,aACxD,QAAQ,SAAS,QAAQ,QAAQ,OAAO,KAAK;AAAA,cAC/C;AAEA,kBAAI,CAAC,uBAAwB,MAAK,iBAAiB;AAAA,YACrD;AAAA,YAEA,kBAAkB,WAAW;AAC3B,oBAAM,aAAa,SAAS,cAAc,sDAAsD;AAEhG,yBAAW,UAAU;AAErB,oBAAM,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,KAAK,CAAC;AACzD,yBAAW,cAAc,WAAW;AAAA,YACtC;AAAA,YAEA,uBAAuB,SAAUA,QAAO;AACtC,oBAAM,mBAAmBA,OAAM,OAAO,UAAU,UAAUA,OAAM,OAAO;AAEvE,kBAAI,iBAAkB,MAAK,gCAAgC;AAE3D,yBAAW,MAAM;AACf,sBAAM,mBAAmB,SAAS,cAAc,0BAA0B;AAE1E,oBAAI,CAAC,oBAAoB,CAAC,KAAK,cAAe;AAE9C,mCACE,KAAK,uBAAuB,gBAAgB,IAC5C,KAAK,4BAA4B,gBAAgB;AAAA,cACrD,GAAG,GAAG;AAAA,YACR;AAAA,YAEA,iCAAiC,WAAW;AAC1C,oBAAM,kBAAkB,SAAS,cAAc,8BAA8B;AAE7E,kBAAI,mBAAmB,CAAC,gBAAgB,SAAS;AAC/C,gCAAgB,UAAU;AAE1B,sBAAM,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,KAAK,CAAC;AACzD,gCAAgB,cAAc,WAAW;AAEzC,sBAAM,aAAa,IAAI,MAAM,SAAS,EAAE,SAAS,KAAK,CAAC;AACvD,gCAAgB,cAAc,UAAU;AAAA,cAC1C;AAAA,YACF;AAAA,YAEA,wBAAwB,SAAU,kBAAkB;AAClD,oBAAM,iBAAiB;AAAA,gBACrB,OAAO,KAAK;AAAA,gBACZ,IAAI,KAAK;AAAA,cACX;AAEA,+BAAiB,SAAS,QAAQ,CAAC,cAAc,CAAC;AAAA,YACpD;AAAA,YAEA,6BAA6B,SAAU,kBAAkB;AACvD,oBAAM,eAAe,KAAK,MAAM,iBAAiB,eAAe,IAAI;AACpE,oBAAM,iBAAiB,aAAa,KAAK,SAAO,IAAI,OAAO,KAAK,aAAa;AAE7E,+BAAiB,SAAS,WAAW,eAAe,KAAK;AAAA,YAC3D;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,0BAA0B;AACjC,iBAAO,iBAAiB;AACxB,iBAAO,mBAAmB;AAAA,QAC5B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC1JH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,oBAAoB,oBAAI,IAAI;AAElC,iBAAS,oCAAoC,UAAU;AACrD,cAAI,SAAS,QAAQ,aAAa,OAAQ,QAAO;AAEjD,gBAAM,MAAM,SAAS,QAAQ,oBAAoB;AACjD,cAAI,CAAC,IAAK,QAAO;AAEjB,iBAAO,IAAI,QAAQ,gBAAgB;AAAA,QACrC;AAEA,iBAAS,sBAAsB;AAC7B,mBAAS,iBAAiB,sCAAsC,EAAE,QAAQ,CAAC,aAAa;AACtF,kBAAM,uBAAuB,oCAAoC,QAAQ;AAEzE,gBAAI,yBAAyB,MAAM;AACjC,uBAAS,UAAU,kBAAkB,IAAI,SAAS,KAAK,KAAK,SAAS,aAAa,SAAS;AAAA,YAC7F,OAAO;AACL,uBAAS,UAAU;AAAA,YACrB;AAEA,gBAAI,SAAS,SAAS;AACpB,uBAAS,aAAa,WAAW,SAAS;AAAA,YAC5C,OAAO;AACL,uBAAS,gBAAgB,SAAS;AAAA,YACpC;AAEA,gBAAI,SAAS,WAAW,CAAC,SAAS,UAAU;AAC1C,gCAAkB,IAAI,SAAS,KAAK;AAAA,YACtC,OAAO;AACL,gCAAkB,OAAO,SAAS,KAAK;AAAA,YACzC;AAAA,UACF,CAAC;AAAA,QACH;AAEA,iBAAS,8BAA8B;AACrC,iBAAO;AAAA,YACL,eAAe;AAAA,YACf,wBAAwB;AAAA,YACxB,gBAAgB;AAAA,YAChB,iBAAiB,CAAC;AAAA,YAClB,oBAAoB;AAAA,YAAC;AAAA,YACrB,oBAAoB;AAAA,YAAC;AAAA,UACvB;AAAA,QACF;AAEA,iBAAS,iBAAiB,SAAS;AACjC,gBAAM,aAAa,OAAO,WAAW,EAAE;AACvC,cAAI,CAAC,WAAW,KAAK,EAAG,QAAO;AAE/B,gBAAM,SAAS,IAAI,UAAU;AAC7B,gBAAM,iBAAiB,OAAO,gBAAgB,YAAY,WAAW;AACrE,gBAAM,OAAO,eAAe;AAE5B,cAAI,CAAC,KAAM,QAAO;AAElB,eAAK,iBAAiB,gCAAgC,EAAE,QAAQ,CAAC,SAAS;AACxE,iBAAK,OAAO;AAAA,UACd,CAAC;AAED,iBAAO,KAAK;AAAA,QACd;AAEA,eAAO,6BAA6B,SAAU;AAAA,UAC5C,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,kBAAkB;AAAA,UAClB,UAAU;AAAA,UACV,YAAY;AAAA,QACd,IAAI,CAAC,GAAG;AACN,gBAAM,2BAA2B,OAAO,kBAAkB,EAAE;AAE5D,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,QAAQ,QAAQ,eAAe;AAAA,YAC/B,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,cAAc;AAAA,YACd,wBAAwB;AAAA,YACxB,kBAAkB;AAAA,YAClB,cAAc;AAAA,YACd,YAAY,OAAO,cAAc,EAAE;AAAA,YACnC,iBAAiB,OAAO,mBAAmB,EAAE;AAAA,YAC7C,SAAS,OAAO,WAAW,EAAE;AAAA,YAC7B,WAAW,OAAO,aAAa,EAAE;AAAA,YACjC,oBAAoB;AAClB,oBAAM,iBAAiB,SAAS,eAAe,8BAA8B;AAC7E,kBAAI,eAAgB,QAAO;AAE3B,oBAAM,YAAY,SAAS,eAAe,gCAAgC;AAC1E,qBAAO,WAAW,cAAc,aAAa,KAAK;AAAA,YACpD;AAAA,YACA,8BAA8B;AAC5B,oBAAM,gBAAgB,SAAS,eAAe,6BAA6B;AAC3E,kBAAI,cAAe,QAAO;AAE1B,oBAAM,aAAa,KAAK,sBAAsB;AAC9C,kBAAI,WAAY,QAAO;AAEvB,oBAAM,YAAY,SAAS,eAAe,gCAAgC;AAC1E,qBAAO,WAAW,cAAc,0CAA0C,KAAK;AAAA,YACjF;AAAA,YACA,wBAAwB;AACtB,oBAAM,SAAS,KAAK,kBAAkB;AACtC,oBAAM,UAAU,QAAQ,aAAa,OAAO;AAE5C,kBAAI,CAAC,QAAS,QAAO;AAErB,qBAAO,SAAS,eAAe,OAAO;AAAA,YACxC;AAAA,YACA,sBAAsB,SAAS;AAC7B,oBAAM,oBAAoB,OAAO,WAAW,EAAE;AAC9C,oBAAM,gBAAgB,KAAK,kBAAkB;AAC7C,kBAAI,CAAC,iBAAiB,CAAC,cAAc,OAAQ;AAE7C,kBAAI,OAAO,cAAc,SAAS,EAAE,MAAM,kBAAmB;AAE7D,4BAAc,OAAO,SAAS,iBAAiB;AAE/C,oBAAM,cAAc,KAAK,4BAA4B;AACrD,kBAAI,aAAa;AACf,4BAAY,QAAQ;AACpB,4BAAY,cAAc,IAAI,MAAM,SAAS,EAAE,SAAS,KAAK,CAAC,CAAC;AAAA,cACjE;AAAA,YACF;AAAA,YACA,uBAAuB;AACrB,oBAAM,cAAc,KAAK,4BAA4B;AACrD,oBAAM,gBAAgB,OAAO,aAAa,SAAS,EAAE;AACrD,oBAAM,gBAAgB,KAAK,kBAAkB;AAC7C,oBAAM,gBACJ,iBAAiB,OAAO,cAAc,UAAU,WAAW,OAAO,cAAc,SAAS,EAAE,IAAI;AAEjG,kBAAI,cAAc,KAAK,EAAE,SAAS,EAAG,QAAO;AAC5C,kBAAI,cAAc,KAAK,EAAE,SAAS,EAAG,QAAO;AAE5C,qBAAO;AAAA,YACT;AAAA,YACA,kBAAkB,SAAS;AACzB,oBAAM,mBAAmB,iBAAiB,OAAO;AACjD,kBAAI,CAAC,iBAAiB,KAAK,EAAG,QAAO;AAErC,oBAAM,SAAS,IAAI,UAAU;AAC7B,oBAAM,iBAAiB,OAAO,gBAAgB,kBAAkB,WAAW;AAC3E,qBAAO,OAAO,eAAe,MAAM,eAAe,EAAE,EAAE,QAAQ,WAAW,GAAG,EAAE,KAAK;AAAA,YACrF;AAAA,YACA,aAAa;AACX,mBAAK,eAAe;AACpB,mBAAK,eAAe,KAAK;AACzB,mBAAK,UAAU;AACf,mBAAK,UAAU,MAAM;AACnB,qBAAK,sBAAsB,KAAK,gBAAgB;AAAA,cAClD,CAAC;AAAA,YACH;AAAA,YACA,aAAa;AACX,mBAAK,eAAe;AACpB,mBAAK,eAAe,KAAK;AACzB,mBAAK,UAAU;AACf,mBAAK,UAAU,MAAM;AACnB,qBAAK,sBAAsB,KAAK,gBAAgB;AAAA,cAClD,CAAC;AAAA,YACH;AAAA,YACA,iCAAiC;AAC/B,kBAAI,KAAK,uBAAwB;AAEjC,mBAAK,yBAAyB,CAACC,WAAU;AACvC,oBAAIA,QAAO,QAAQ,SAAS,4BAA6B;AAEzD,sBAAM,kBAAkB,OAAOA,OAAM,OAAO,WAAW,EAAE,EAAE,KAAK;AAChE,oBAAI,CAAC,gBAAiB;AAEtB,sBAAM,cAAc,KAAK,4BAA4B;AACrD,sBAAM,gBAAgB,OAAO,aAAa,SAAS,EAAE;AACrD,sBAAM,gBAAgB,KAAK,kBAAkB;AAC7C,sBAAM,gBAAgB,OAAO,eAAe,SAAS,EAAE;AACvD,sBAAM,iBAAiB,cAAc,KAAK,EAAE,SACxC,gBACA,cAAc,KAAK,EAAE,SACnB,gBACE;AACR,sBAAM,cAAc,CAAC,gBAAgB,eAAe,EAAE,OAAO,OAAO,EAAE,KAAK,MAAM;AAEjF,oBAAI,iBAAiB,cAAc,QAAQ;AACzC,gCAAc,OAAO,SAAS,WAAW;AAAA,gBAC3C;AAEA,oBAAI,aAAa;AACf,8BAAY,QAAQ;AACpB,8BAAY,cAAc,IAAI,MAAM,SAAS,EAAE,SAAS,KAAK,CAAC,CAAC;AAAA,gBACjE;AAEA,qBAAK,eAAe;AAAA,cACtB;AAEA,qBAAO,iBAAiB,4BAA4B,KAAK,sBAAsB;AAAA,YACjF;AAAA,YACA,YAAY;AACV,kBAAI,KAAK,aAAa,KAAK,UAAU,KAAK,EAAE,SAAS,GAAG;AACtD,uBAAO,KAAK,KAAK,WAAW,UAAU,UAAU;AAChD;AAAA,cACF;AAEA,oBAAM,eAAe,OAAO,KAAK,IAAI,QAAQ;AAC7C,kBAAI,CAAC,gBAAgB,CAAC,aAAa,SAAU;AAE7C,oBAAM,cAAc,CAAC,WAAW,KAAK,YAAY,KAAK,eAAe,EAClE,OAAO,CAAC,UAAU,SAAS,MAAM,KAAK,EAAE,SAAS,CAAC,EAClD,KAAK,IAAI;AACZ,oBAAM,mBAAmB,iBAAiB,KAAK,gBAAgB;AAC/D,oBAAM,MAAM,aAAa;AAEzB,kBAAI,KAAK;AACT,kBAAI,MAAM,meAAme;AAC7e,kBAAI,MAAM;AAEV,oBAAM,iBAAiB,IAAI,eAAe,mBAAmB;AAC7D,kBAAI,gBAAgB;AAClB,+BAAe,cAAc;AAC7B,+BAAe,MAAM,UAAU,YAAY,KAAK,EAAE,SAAS,IAAI,UAAU;AAAA,cAC3E;AAEA,oBAAM,iBAAiB,IAAI,eAAe,mBAAmB;AAC7D,kBAAI,eAAgB,gBAAe,YAAY;AAE/C,yBAAW,MAAM;AACf,6BAAa,MAAM;AACnB,6BAAa,MAAM;AAAA,cACrB,GAAG,CAAC;AAAA,YACN;AAAA,YACA,MAAM,YAAY;AAChB,kBAAI,KAAK,UAAU,KAAK,SAAU;AAClC,oBAAM,mBAAmB,KAAK,qBAAqB;AACnD,oBAAM,gBAAgB,KAAK,kBAAkB;AAC7C,oBAAM,kBAAkB,eAAe,QAAQ,cAAc,EAAE,WAAW,EAAE,QAAQ,WAAW,GAAG,EAAE,KAAK;AACzG,oBAAM,oBAAoB,KAAK,kBAAkB,gBAAgB;AACjE,oBAAM,YAAY,OAAO,mBAAmB,qBAAqB,EAAE,EAAE,KAAK;AAE1E,kBAAI,CAAC,WAAW;AACd,qBAAK,eAAe;AACpB;AAAA,cACF;AAEA,mBAAK,SAAS;AACd,mBAAK,eAAe;AAEpB,kBAAI;AACF,sBAAMC,aAAY,SAAS,cAAc,uBAAuB,GAAG;AACnE,sBAAM,UAAU;AAAA,kBACd,gBAAgB;AAAA,kBAChB,QAAQ;AAAA,gBACV;AACA,oBAAIA,WAAW,SAAQ,cAAc,IAAIA;AAEzC,sBAAM,WAAW,MAAM,MAAM,KAAK,SAAS;AAAA,kBACzC,QAAQ;AAAA,kBACR;AAAA,kBACA,MAAM,IAAI,gBAAgB;AAAA,oBACxB,uCAAuC;AAAA,kBACzC,CAAC,EAAE,SAAS;AAAA,gBACd,CAAC;AAED,oBAAI,CAAC,SAAS,IAAI;AAChB,sBAAI,SAAS,WAAW,KAAK;AAC3B,yBAAK,eAAe;AACpB;AAAA,kBACF;AAEA,wBAAM,IAAI,MAAM,aAAa;AAAA,gBAC/B;AAEA,qBAAK,mBAAmB;AACxB,qBAAK,eAAe;AACpB,qBAAK,SAAS;AACd,qBAAK,UAAU;AACf,qBAAK,UAAU,MAAM;AACnB,uBAAK,sBAAsB,gBAAgB;AAAA,gBAC7C,CAAC;AAAA,cACH,SAASC,SAAQ;AACf,qBAAK,eAAe;AAAA,cACtB,UAAE;AACA,qBAAK,SAAS;AAAA,cAChB;AAAA,YACF;AAAA,YACA,MAAM,eAAe;AACnB,kBAAI,KAAK,UAAU,KAAK,SAAU;AAElC,kBAAI,CAAC,OAAO,QAAQ,kDAAkD,EAAG;AAEzE,mBAAK,WAAW;AAChB,mBAAK,eAAe;AAEpB,kBAAI;AACF,sBAAMD,aAAY,SAAS,cAAc,uBAAuB,GAAG;AACnE,sBAAM,UAAU,EAAE,QAAQ,6BAA6B;AACvD,oBAAIA,WAAW,SAAQ,cAAc,IAAIA;AAEzC,sBAAM,WAAW,MAAM,MAAM,KAAK,SAAS;AAAA,kBACzC,QAAQ;AAAA,kBACR;AAAA,gBACF,CAAC;AAED,oBAAI,CAAC,SAAS,IAAI;AAChB,sBAAI,SAAS,WAAW,KAAK;AAC3B,yBAAK,eAAe;AACpB;AAAA,kBACF;AAEA,wBAAM,IAAI,MAAM,eAAe;AAAA,gBACjC;AAEA,qBAAK,mBAAmB;AACxB,qBAAK,eAAe;AACpB,qBAAK,SAAS;AACd,qBAAK,UAAU;AACf,qBAAK,UAAU,MAAM;AACnB,uBAAK,sBAAsB,EAAE;AAAA,gBAC/B,CAAC;AAAA,cACH,SAASC,SAAQ;AACf,qBAAK,eAAe;AAAA,cACtB,UAAE;AACA,qBAAK,WAAW;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,eAAO,0BAA0B,SAAU,wBAAwB;AACjE,iBAAO;AAAA,YACL,mBAAmB,0BAA0B,4BAA4B;AAAA,YACzE,eAAe;AAAA,YACf,aAAa;AAAA,YACb,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,OAAO;AACL,uBAAS,iBAAiB,8CAA8C,EAAE,QAAQ,CAAC,aAAa;AAC9F,kCAAkB,IAAI,SAAS,KAAK;AAAA,cACtC,CAAC;AACD,mBAAK,QAAQ;AACb,uBAAS,iBAAiB,UAAU,CAACF,WAAU;AAC7C,oBAAI,CAACA,OAAM,OAAO,UAAU,SAAS,qCAAqC,EAAG;AAE7E,oBAAIA,OAAM,OAAO,SAAS;AACxB,kBAAAA,OAAM,OAAO,aAAa,WAAW,SAAS;AAC9C,oCAAkB,IAAIA,OAAM,OAAO,KAAK;AAAA,gBAC1C,OAAO;AACL,kBAAAA,OAAM,OAAO,gBAAgB,SAAS;AACtC,oCAAkB,OAAOA,OAAM,OAAO,KAAK;AAAA,gBAC7C;AACA,qBAAK,QAAQ;AAAA,cACf,CAAC;AACD,qBAAO,iBAAiB,+BAA+B,MAAM;AAC3D,oCAAoB;AACpB,oBAAI,CAAC,KAAK,mBAAmB,EAAE,OAAQ,MAAK,cAAc;AAC1D,qBAAK,QAAQ;AAAA,cACf,CAAC;AACD,uBAAS,iBAAiB,gBAAgB,MAAM;AAC9C,oCAAoB;AACpB,oBAAI,CAAC,KAAK,mBAAmB,EAAE,OAAQ,MAAK,cAAc;AAC1D,qBAAK,QAAQ;AAAA,cACf,CAAC;AAAA,YACH;AAAA,YACA,UAAU;AACR,mBAAK,gBAAgB,SAAS,iBAAiB,8CAA8C,EAAE;AAAA,YACjG;AAAA,YACA,qBAAqB;AACnB,qBAAO,MAAM,KAAK,SAAS,iBAAiB,4DAA4D,CAAC,EACtG,IAAI,CAAC,OAAO,GAAG,QAAQ,oBAAoB,CAAC,EAC5C,OAAO,CAAC,OAAO,MAAM,GAAG,QAAQ,gBAAgB,SAAS,EACzD,IAAI,CAAC,OAAO,GAAG,EAAE;AAAA,YACtB;AAAA,YACA,kBAAkB;AAChB,mBAAK,kBAAkB;AAAA,YACzB;AAAA,YACA,mBAAmB;AACjB,mBAAK,kBAAkB;AAAA,YACzB;AAAA,YACA,mBAAmB,KAAK,aAAa,MAAM;AACzC,kBAAI,aAAa,QAAQ,KAAK;AAAA,gBAC5B,MAAM,IAAI,gBAAgB,EAAE,aAAa,KAAK,CAAC;AAAA,gBAC/C,cAAc;AAAA,cAChB,CAAC,EAAE,QAAQ;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF,GAAG;AAAA;AAAA;;;ACjYH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,qBAAqB,SAASG,OAAM,gBAAgB,cAAc;AACtE,iBAAO;AAAA,YACL,MAAMA;AAAA,YACN;AAAA,YACA;AAAA,YACA,UAAU;AAAA,YACV,iBAAiB,CAAC;AAAA,YAClB,wBAAwB;AAAA,YAExB,MAAM,SAAS,WAAW;AACxB,mBAAK,WAAW;AAChB,oBAAM,SAAS;AAEf,oBAAM,4BAA4B,KAAK,cAAc,wCAAwC,KAAK,YAAY,EAAE,EAC7G,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,SAAS;AACd,uBAAO,kBAAkB;AAAA,cAC3B,CAAC;AAAA,YACL;AAAA,YAEA,mBAAmB,SAAS,YAAY;AACtC,kBAAI,UAAU;AAEd,kBAAI,YAAY;AACd,sBAAM,uBAAuB,OAAO,UAAU;AAC9C,sBAAM,WAAW,KAAK,gBAAgB,KAAK,CAACC,OAAM,OAAOA,GAAE,EAAE,MAAM,oBAAoB;AACvF,0BAAU,UAAU,iBAAiB,UAAU,YAAY;AAAA,cAC7D;AACA,mBAAK,SAAS,4BAA4B,EAAE,MAAM,KAAK,MAAM,QAAQ,CAAC;AACtE,mBAAK,yBAAyB;AAAA,YAChC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,qBAAqB;AAAA,QAC9B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACxCH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,wBAAwB,SAAU,iBAAiB,CAAC,GAAG;AAC3D,gBAAM,mBAAmB,CAAC,YAAY;AAEpC,kBAAM,SAAS,OAAO,OAAO,OAAO,EAAE,OAAO,CAACC,OAAM,QAAQA,EAAC,CAAC;AAE9D,gBAAI,CAAC,OAAO,OAAQ,QAAO;AAE3B,kBAAM,cAAc,QAAQ,eACxB,QAAQ,eACR,GAAG,QAAQ,MAAM,KAAK,QAAQ,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,GAAG;AAExE,mBAAO;AAAA,UACT;AAEA,iBAAO;AAAA,YACL,aAAa,iBAAiB,cAAc;AAAA,YAC5C,cAAc,eAAe;AAAA,YAC7B,QAAQ,eAAe;AAAA,YACvB,UAAU,eAAe;AAAA,YACzB,WAAW,eAAe;AAAA,YAC1B,oBAAoB,SAAU,SAAS;AACrC,oBAAM,cAAc,iBAAiB,OAAO;AAE5C,mBAAK,cAAc;AACnB,mBAAK,eAAe,QAAQ;AAC5B,mBAAK,WAAW,QAAQ;AACxB,mBAAK,YAAY,QAAQ;AAAA,YAC3B;AAAA,YACA,qCAAqC,WAAY;AAC/C,oBAAM,WAAW,IAAI,OAAO,KAAK,SAAS;AAC1C,oBAAM,SAAS,EAAE,KAAK,KAAK,UAAU,KAAK,KAAK,UAAU;AACzD,oBAAM,wBAAwB,SAAS;AAAA,gBACrC;AAAA,cACF;AAEA,uBACG,QAAQ,EAAE,UAAU,OAAO,CAAC,EAC5B,KAAK,CAAC,aAAa;AAClB,sBAAM,SAAS,SAAS,QAAQ,CAAC,EAAE;AAEnC,oBAAI,OAAQ,uBAAsB,QAAQ;AAAA,cAC5C,CAAC,EACA,MAAM,CAACC,OAAM,QAAQ,IAAI,2BAA2BA,EAAC,EAAE,CAAC;AAAA,YAC7D;AAAA,YACA,WAAW,SAAU,aAAa;AAChC,mBAAK,WAAW,YAAY;AAC5B,mBAAK,YAAY,YAAY;AAAA,YAC/B;AAAA,YACA,WAAW,SAAU,aAAa;AAChC,mBAAK,SAAS;AAAA,YAChB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,wBAAwB;AAAA,QACjC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC5DH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,uBAAuB,SAC3B,gBACA,gBACA,mBAAmB,MACnB;AACA,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,YAAY;AAAA,YACZ,cAAc,SAAU,SAAS;AAC/B,oBAAM,sBAAsB,OAAO,sBAAsB;AAAA,gBACvD,SAAS;AAAA,kBACP,QAAQ;AAAA,kBACR,gBAAgB;AAAA,gBAClB;AAAA,cACF,CAAC,EACE,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAAA,YAC1C;AAAA,YACA,kBAAkB,SAChB,UACA,YAAY,MACZ,EAAE,aAAa,IAAI,EAAE,cAAc,MAAM,GACzC;AACA,mBAAK,kBAAkB;AAEvB,oBAAM,eAAe,SAAS,eAAe,cAAc;AAC3D,oBAAM,cAAc;AAEpB,oBAAM,cAAc,IAAI,OAAO,OAAO,cAAc;AAAA,gBAClD,WAAW,aAAa;AAAA,gBACxB,kBAAkB;AAAA,gBAClB;AAAA,gBACA,UAAU;AAAA,kBACR,WAAW;AAAA,kBACX,SAAS;AAAA,kBACT,UAAU;AAAA,kBACV,UAAU;AAAA,kBACV,eAAe;AAAA,gBACjB;AAAA,cACF,CAAC;AAED,0BAAY,IAAI,MAAM,iBAAiB,aAAa,CAACC,OAAM;AACzD,oBAAI,CAACA,GAAE,OAAO,QAAQ,cAAc,EAAG,aAAY,IAAI,MAAM,MAAM;AAAA,cACrE,CAAC;AAED,mBAAK,aAAa;AAElB,kBAAI,aAAc,MAAK,WAAW,QAAQ,QAAQ;AAAA,YACpD;AAAA,YACA,sBAAsB,SAAU,OAAO;AACrC,mBAAK,iBAAiB;AACtB,mBAAK,iBAAiB;AAAA,YACxB;AAAA,YACA,mBAAmB,WAAY;AAC7B,mBAAK,iBAAiB;AACtB,mBAAK,YAAY,QAAQ;AAAA,YAC3B;AAAA,YACA,kBAAkB,WAAY;AAC5B,mBAAK,YAAY,cAAc;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,uBAAuB;AAAA,QAChC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACtEH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,0BAA0B,SAAU,SAAS,kBAAkB,iBAAiB,qBAAqB;AACzG,iBAAO;AAAA,YACL,mBAAmB,iBAAiB;AAAA,YACpC,yBAAyB,iBAAiB;AAAA,YAC1C,qBAAqB,iBAAiB;AAAA,YACtC,uBAAuB,gBAAgB;AAAA,YACvC,2BAA2B,oBAAoB;AAAA,YAC/C,kBAAkB,CAAC;AAAA,YACnB,QAAQ;AAAA,YACR,cAAc;AAAA,YACd,wBAAwB,WAAY;AAClC;AAAA,gBACE,qBAAqB,QAAQ,EAAE,YAAY,iBAAiB,SAAS;AAAA,cACvE,EACG,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,aAAc,KAAK,mBAAmB,QAAS,EACrD,KAAK,CAACC,QAAO,KAAK,eAAe,IAAK;AAAA,YAC3C;AAAA,YACA,gBAAgB,WAAY;AAC1B,kBAAI,SAAS,CAAC;AAEd,kBAAI,CAAC,KAAK,kBAAmB,QAAO;AAEpC,kBAAI,CAAC,KAAK,yBAAyB;AACjC,uBAAO,KAAK,mBAAmB;AAAA,cACjC;AAEA,kBAAI,CAAC,KAAK,qBAAqB;AAC7B,uBAAO,KAAK,wBAAwB;AAAA,cACtC;AAEA,qBAAO;AAAA,YACT;AAAA,YACA,cAAc,WAAY;AACxB,kBAAI,SAAS,CAAC;AAEd,kBAAI,CAAC,KAAK,kBAAmB,QAAO;AAEpC,kBAAI,CAAC,KAAK,iBAAiB,sBAAsB;AAC/C,uBAAO,KAAK,qBAAqB;AAAA,cACnC;AACA,kBACE,CAAC,KAAK,iBAAiB,aAAa;AAAA,gBAAO,CAAC,WAC1C,QAAQ,WAAW,MAAM,CAAC;AAAA,cAC5B,EAAE,QACF;AACA,uBAAO,KAAK,qBAAqB;AAAA,cACnC;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,0BAA0B;AAAA,QACnC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC5DH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,kBAAkB,SAAU,UAAU,EAAE,QAAQ,GAAG;AACvD,iBAAO;AAAA,YACL,QAAQ;AAAA,YACR,MAAM,WAAY;AAChB,mBAAK,SAAS;AAAA,YAChB;AAAA,YACA,OAAO,WAAY;AACjB,mBAAK,SAAS;AAAA,YAChB;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ,SAAUC,QAAO;AACvB,mBAAK,WAAWA;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,kBAAkB;AAAA,QAC3B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACvBH;AAAA;AAAC,OAAC,WAAY;AACZ,aAAK,OAAO,eAAe,YAAY,EAAE,SAAS,KAAK,aAAa,KAAK;AAEzE,iBAAS,iBAAiB,mBAAmB,SAAUC,IAAG;AACxD,gBAAM,UAAUA,GAAE;AAClB,gBAAM,SAAS,QAAQ;AACvB,gBAAM,iBAAiB,QAAQ;AAC/B,gBAAM,eAAe,eAAe;AAAA,YAClC;AAAA,UACF;AAEA,uBAAa;AAAA,YACX;AAAA,YACA;AAAA;AAAA;AAAA;AAAA;AAAA,UAKF;AAEA,cAAI,qBAAqB,oBAAI,IAAI;AAEjC,mBAAS,2BAA2B;AAClC,iCAAqB,oBAAI,IAAI;AAE7B,kBAAM,eAAe,CAAC,cAAc,mBAAmB,IAAI,SAAS;AAEpE,gBAAI,gBAAgB,OAAO,iBAAiB;AAE5C,gBAAI,cAAc,CAAC,MAAM,cAAc,CAAC,EAAG,eAAc,CAAC;AAE1D,mBACG,YAAY,EACZ,mBAAmB,aAAa,EAChC,UAAU,EACV,QAAQ,SAAU,OAAO;AACxB,qBAAO,KAAK,MAAM,cAAc,CAAC,EAAE,QAAQ,YAAY;AAAA,YACzD,CAAC;AAAA,UACL;AAEA,mCAAyB;AAEzB,kBAAQ,iBAAiB,yBAAyB,wBAAwB;AAE1E,cAAI,QAAQ,QAAQ,QAAS,QAAO,WAAW,QAAQ,QAAQ,OAAO;AAAA,QACxE,CAAC;AAAA,MACH,GAAG;AAAA;AAAA;;;ACxCH,WAAS,QAAQ,QAAQ,gBAAgB;AACvC,QAAI,OAAO,OAAO,KAAK,MAAM;AAC7B,QAAI,OAAO,uBAAuB;AAChC,UAAI,UAAU,OAAO,sBAAsB,MAAM;AACjD,UAAI,gBAAgB;AAClB,kBAAU,QAAQ,OAAO,SAAU,KAAK;AACtC,iBAAO,OAAO,yBAAyB,QAAQ,GAAG,EAAE;AAAA,QACtD,CAAC;AAAA,MACH;AACA,WAAK,KAAK,MAAM,MAAM,OAAO;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AACA,WAAS,eAAe,QAAQ;AAC9B,aAASC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,UAAI,SAAS,UAAUA,EAAC,KAAK,OAAO,UAAUA,EAAC,IAAI,CAAC;AACpD,UAAIA,KAAI,GAAG;AACT,gBAAQ,OAAO,MAAM,GAAG,IAAI,EAAE,QAAQ,SAAU,KAAK;AACnD,UAAAC,iBAAgB,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,QAC1C,CAAC;AAAA,MACH,WAAW,OAAO,2BAA2B;AAC3C,eAAO,iBAAiB,QAAQ,OAAO,0BAA0B,MAAM,CAAC;AAAA,MAC1E,OAAO;AACL,gBAAQ,OAAO,MAAM,CAAC,EAAE,QAAQ,SAAU,KAAK;AAC7C,iBAAO,eAAe,QAAQ,KAAK,OAAO,yBAAyB,QAAQ,GAAG,CAAC;AAAA,QACjF,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,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;AACA,WAAOD,SAAQ,GAAG;AAAA,EACpB;AACA,WAASD,iBAAgB,KAAK,KAAK,OAAO;AACxC,QAAI,OAAO,KAAK;AACd,aAAO,eAAe,KAAK,KAAK;AAAA,QAC9B;AAAA,QACA,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,UAAU;AAAA,MACZ,CAAC;AAAA,IACH,OAAO;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACA,WAAS,WAAW;AAClB,eAAW,OAAO,UAAU,SAAU,QAAQ;AAC5C,eAASD,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,YAAI,SAAS,UAAUA,EAAC;AACxB,iBAAS,OAAO,QAAQ;AACtB,cAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrD,mBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,WAAO,SAAS,MAAM,MAAM,SAAS;AAAA,EACvC;AACA,WAAS,8BAA8B,QAAQ,UAAU;AACvD,QAAI,UAAU,KAAM,QAAO,CAAC;AAC5B,QAAI,SAAS,CAAC;AACd,QAAI,aAAa,OAAO,KAAK,MAAM;AACnC,QAAI,KAAKA;AACT,SAAKA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACtC,YAAM,WAAWA,EAAC;AAClB,UAAI,SAAS,QAAQ,GAAG,KAAK,EAAG;AAChC,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AACA,WAAS,yBAAyB,QAAQ,UAAU;AAClD,QAAI,UAAU,KAAM,QAAO,CAAC;AAC5B,QAAI,SAAS,8BAA8B,QAAQ,QAAQ;AAC3D,QAAI,KAAKA;AACT,QAAI,OAAO,uBAAuB;AAChC,UAAI,mBAAmB,OAAO,sBAAsB,MAAM;AAC1D,WAAKA,KAAI,GAAGA,KAAI,iBAAiB,QAAQA,MAAK;AAC5C,cAAM,iBAAiBA,EAAC;AACxB,YAAI,SAAS,QAAQ,GAAG,KAAK,EAAG;AAChC,YAAI,CAAC,OAAO,UAAU,qBAAqB,KAAK,QAAQ,GAAG,EAAG;AAC9D,eAAO,GAAG,IAAI,OAAO,GAAG;AAAA,MAC1B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AA6BA,WAAS,UAAU,SAAS;AAC1B,QAAI,OAAO,WAAW,eAAe,OAAO,WAAW;AACrD,aAAO,CAAC,CAAe,0BAAU,UAAU,MAAM,OAAO;AAAA,IAC1D;AAAA,EACF;AAYA,WAASI,IAAG,IAAIC,QAAO,IAAI;AACzB,OAAG,iBAAiBA,QAAO,IAAI,CAAC,cAAc,WAAW;AAAA,EAC3D;AACA,WAASC,KAAI,IAAID,QAAO,IAAI;AAC1B,OAAG,oBAAoBA,QAAO,IAAI,CAAC,cAAc,WAAW;AAAA,EAC9D;AACA,WAASE,SAAyB,IAAe,UAAU;AACzD,QAAI,CAAC,SAAU;AACf,aAAS,CAAC,MAAM,QAAQ,WAAW,SAAS,UAAU,CAAC;AACvD,QAAI,IAAI;AACN,UAAI;AACF,YAAI,GAAG,SAAS;AACd,iBAAO,GAAG,QAAQ,QAAQ;AAAA,QAC5B,WAAW,GAAG,mBAAmB;AAC/B,iBAAO,GAAG,kBAAkB,QAAQ;AAAA,QACtC,WAAW,GAAG,uBAAuB;AACnC,iBAAO,GAAG,sBAAsB,QAAQ;AAAA,QAC1C;AAAA,MACF,SAASC,KAAG;AACV,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,gBAAgB,IAAI;AAC3B,WAAO,GAAG,QAAQ,OAAO,YAAY,GAAG,KAAK,WAAW,GAAG,OAAO,GAAG;AAAA,EACvE;AACA,WAAS,QAAyB,IAAe,UAA0B,KAAK,YAAY;AAC1F,QAAI,IAAI;AACN,YAAM,OAAO;AACb,SAAG;AACD,YAAI,YAAY,SAAS,SAAS,CAAC,MAAM,MAAM,GAAG,eAAe,OAAOD,SAAQ,IAAI,QAAQ,IAAIA,SAAQ,IAAI,QAAQ,MAAM,cAAc,OAAO,KAAK;AAClJ,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,IAAK;AAAA,MAElB,SAAS,KAAK,gBAAgB,EAAE;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AAEA,WAAS,YAAY,IAAIE,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,YAAI,YAAY,IAAI,IAAI,WAAW;AACnC,YAAI,aAAa,cAAc,QAAQ;AACrC,8BAAoB,YAAY,MAAM;AAAA,QACxC;AAAA,MAEF,SAAS,CAAC,aAAa,KAAK,GAAG;AAAA,IACjC;AACA,QAAI,WAAW,OAAO,aAAa,OAAO,mBAAmB,OAAO,aAAa,OAAO;AAExF,WAAO,YAAY,IAAI,SAAS,iBAAiB;AAAA,EACnD;AACA,WAAS,KAAK,KAAK,SAAS,UAAU;AACpC,QAAI,KAAK;AACP,UAAI,OAAO,IAAI,qBAAqB,OAAO,GACzCT,KAAI,GACJU,KAAI,KAAK;AACX,UAAI,UAAU;AACZ,eAAOV,KAAIU,IAAGV,MAAK;AACjB,mBAAS,KAAKA,EAAC,GAAGA,EAAC;AAAA,QACrB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,WAAO,CAAC;AAAA,EACV;AACA,WAAS,4BAA4B;AACnC,QAAI,mBAAmB,SAAS;AAChC,QAAI,kBAAkB;AACpB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAWA,WAAS,QAAQ,IAAI,2BAA2B,2BAA2B,WAAW,WAAW;AAC/F,QAAI,CAAC,GAAG,yBAAyB,OAAO,OAAQ;AAChD,QAAI,QAAQ,KAAK,MAAM,QAAQ,OAAO,QAAQ;AAC9C,QAAI,OAAO,UAAU,GAAG,cAAc,OAAO,0BAA0B,GAAG;AACxE,eAAS,GAAG,sBAAsB;AAClC,YAAM,OAAO;AACb,aAAO,OAAO;AACd,eAAS,OAAO;AAChB,cAAQ,OAAO;AACf,eAAS,OAAO;AAChB,cAAQ,OAAO;AAAA,IACjB,OAAO;AACL,YAAM;AACN,aAAO;AACP,eAAS,OAAO;AAChB,cAAQ,OAAO;AACf,eAAS,OAAO;AAChB,cAAQ,OAAO;AAAA,IACjB;AACA,SAAK,6BAA6B,8BAA8B,OAAO,QAAQ;AAE7E,kBAAY,aAAa,GAAG;AAI5B,UAAI,CAAC,YAAY;AACf,WAAG;AACD,cAAI,aAAa,UAAU,0BAA0B,IAAI,WAAW,WAAW,MAAM,UAAU,6BAA6B,IAAI,WAAW,UAAU,MAAM,WAAW;AACpK,gBAAI,gBAAgB,UAAU,sBAAsB;AAGpD,mBAAO,cAAc,MAAM,SAAS,IAAI,WAAW,kBAAkB,CAAC;AACtE,oBAAQ,cAAc,OAAO,SAAS,IAAI,WAAW,mBAAmB,CAAC;AACzE,qBAAS,MAAM,OAAO;AACtB,oBAAQ,OAAO,OAAO;AACtB;AAAA,UACF;AAAA,QAEF,SAAS,YAAY,UAAU;AAAA,MACjC;AAAA,IACF;AACA,QAAI,aAAa,OAAO,QAAQ;AAE9B,UAAI,WAAW,OAAO,aAAa,EAAE,GACnC,SAAS,YAAY,SAAS,GAC9B,SAAS,YAAY,SAAS;AAChC,UAAI,UAAU;AACZ,eAAO;AACP,gBAAQ;AACR,iBAAS;AACT,kBAAU;AACV,iBAAS,MAAM;AACf,gBAAQ,OAAO;AAAA,MACjB;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AASA,WAAS,eAAe,IAAI,QAAQ,YAAY;AAC9C,QAAI,SAAS,2BAA2B,IAAI,IAAI,GAC9C,YAAY,QAAQ,EAAE,EAAE,MAAM;AAGhC,WAAO,QAAQ;AACb,UAAI,gBAAgB,QAAQ,MAAM,EAAE,UAAU,GAC5C,UAAU;AACZ,UAAI,eAAe,SAAS,eAAe,QAAQ;AACjD,kBAAU,aAAa;AAAA,MACzB,OAAO;AACL,kBAAU,aAAa;AAAA,MACzB;AACA,UAAI,CAAC,QAAS,QAAO;AACrB,UAAI,WAAW,0BAA0B,EAAG;AAC5C,eAAS,2BAA2B,QAAQ,KAAK;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAUA,WAAS,SAAS,IAAI,UAAU,SAAS,eAAe;AACtD,QAAI,eAAe,GACjBA,KAAI,GACJ,WAAW,GAAG;AAChB,WAAOA,KAAI,SAAS,QAAQ;AAC1B,UAAI,SAASA,EAAC,EAAE,MAAM,YAAY,UAAU,SAASA,EAAC,MAAM,SAAS,UAAU,iBAAiB,SAASA,EAAC,MAAM,SAAS,YAAY,QAAQ,SAASA,EAAC,GAAG,QAAQ,WAAW,IAAI,KAAK,GAAG;AACvL,YAAI,iBAAiB,UAAU;AAC7B,iBAAO,SAASA,EAAC;AAAA,QACnB;AACA;AAAA,MACF;AACA,MAAAA;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAQA,WAAS,UAAU,IAAI,UAAU;AAC/B,QAAI,OAAO,GAAG;AACd,WAAO,SAAS,SAAS,SAAS,SAAS,IAAI,MAAM,SAAS,MAAM,UAAU,YAAY,CAACO,SAAQ,MAAM,QAAQ,IAAI;AACnH,aAAO,KAAK;AAAA,IACd;AACA,WAAO,QAAQ;AAAA,EACjB;AASA,WAASI,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,YAAYJ,SAAQ,IAAI,QAAQ,IAAI;AAC7G,QAAAI;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,aAASX,MAAK,KAAK;AACjB,UAAI,CAAC,IAAI,eAAeA,EAAC,EAAG;AAC5B,eAAS,OAAO,KAAK;AACnB,YAAI,IAAI,eAAe,GAAG,KAAK,IAAI,GAAG,MAAM,IAAIA,EAAC,EAAE,GAAG,EAAG,QAAO,OAAOA,EAAC;AAAA,MAC1E;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,2BAA2B,IAAI,aAAa;AAEnD,QAAI,CAAC,MAAM,CAAC,GAAG,sBAAuB,QAAO,0BAA0B;AACvE,QAAI,OAAO;AACX,QAAI,UAAU;AACd,OAAG;AAED,UAAI,KAAK,cAAc,KAAK,eAAe,KAAK,eAAe,KAAK,cAAc;AAChF,YAAI,UAAU,IAAI,IAAI;AACtB,YAAI,KAAK,cAAc,KAAK,gBAAgB,QAAQ,aAAa,UAAU,QAAQ,aAAa,aAAa,KAAK,eAAe,KAAK,iBAAiB,QAAQ,aAAa,UAAU,QAAQ,aAAa,WAAW;AACpN,cAAI,CAAC,KAAK,yBAAyB,SAAS,SAAS,KAAM,QAAO,0BAA0B;AAC5F,cAAI,WAAW,YAAa,QAAO;AACnC,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,IAEF,SAAS,OAAO,KAAK;AACrB,WAAO,0BAA0B;AAAA,EACnC;AACA,WAASY,QAAO,KAAK,KAAK;AACxB,QAAI,OAAO,KAAK;AACd,eAAS,OAAO,KAAK;AACnB,YAAI,IAAI,eAAe,GAAG,GAAG;AAC3B,cAAI,GAAG,IAAI,IAAI,GAAG;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,YAAY,OAAO,OAAO;AACjC,WAAO,KAAK,MAAM,MAAM,GAAG,MAAM,KAAK,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,IAAI,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,KAAK;AAAA,EAC5N;AAEA,WAAS,SAASC,WAAU,IAAI;AAC9B,WAAO,WAAY;AACjB,UAAI,CAAC,kBAAkB;AACrB,YAAI,OAAO,WACT,QAAQ;AACV,YAAI,KAAK,WAAW,GAAG;AACrB,UAAAA,UAAS,KAAK,OAAO,KAAK,CAAC,CAAC;AAAA,QAC9B,OAAO;AACL,UAAAA,UAAS,MAAM,OAAO,IAAI;AAAA,QAC5B;AACA,2BAAmB,WAAW,WAAY;AACxC,6BAAmB;AAAA,QACrB,GAAG,EAAE;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,WAAS,iBAAiB;AACxB,iBAAa,gBAAgB;AAC7B,uBAAmB;AAAA,EACrB;AACA,WAAS,SAAS,IAAIC,IAAGC,IAAG;AAC1B,OAAG,cAAcD;AACjB,OAAG,aAAaC;AAAA,EAClB;AACA,WAASC,OAAM,IAAI;AACjB,QAAI,UAAU,OAAO;AACrB,QAAIC,KAAI,OAAO,UAAU,OAAO;AAChC,QAAI,WAAW,QAAQ,KAAK;AAC1B,aAAO,QAAQ,IAAI,EAAE,EAAE,UAAU,IAAI;AAAA,IACvC,WAAWA,IAAG;AACZ,aAAOA,GAAE,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC;AAAA,IAC5B,OAAO;AACL,aAAO,GAAG,UAAU,IAAI;AAAA,IAC1B;AAAA,EACF;AAeA,WAAS,kCAAkC,WAAW,SAASC,UAAS;AACtE,QAAI,OAAO,CAAC;AACZ,UAAM,KAAK,UAAU,QAAQ,EAAE,QAAQ,SAAU,OAAO;AACtD,UAAI,YAAY,WAAW,aAAa;AACxC,UAAI,CAAC,QAAQ,OAAO,QAAQ,WAAW,WAAW,KAAK,KAAK,MAAM,YAAY,UAAUA,SAAS;AACjG,UAAI,YAAY,QAAQ,KAAK;AAC7B,WAAK,OAAO,KAAK,KAAK,aAAa,KAAK,UAAU,QAAQ,eAAe,SAAS,aAAa,UAAU,UAAU,IAAI;AACvH,WAAK,MAAM,KAAK,KAAK,YAAY,KAAK,SAAS,QAAQ,cAAc,SAAS,YAAY,UAAU,UAAU,GAAG;AACjH,WAAK,QAAQ,KAAK,KAAK,cAAc,KAAK,WAAW,QAAQ,gBAAgB,SAAS,cAAc,WAAW,UAAU,KAAK;AAC9H,WAAK,SAAS,KAAK,KAAK,eAAe,KAAK,YAAY,QAAQ,iBAAiB,SAAS,eAAe,WAAW,UAAU,MAAM;AAAA,IACtI,CAAC;AACD,SAAK,QAAQ,KAAK,QAAQ,KAAK;AAC/B,SAAK,SAAS,KAAK,SAAS,KAAK;AACjC,SAAK,IAAI,KAAK;AACd,SAAK,IAAI,KAAK;AACd,WAAO;AAAA,EACT;AAGA,WAAS,wBAAwB;AAC/B,QAAI,kBAAkB,CAAC,GACrB;AACF,WAAO;AAAA,MACL,uBAAuB,SAAS,wBAAwB;AACtD,0BAAkB,CAAC;AACnB,YAAI,CAAC,KAAK,QAAQ,UAAW;AAC7B,YAAI,WAAW,CAAC,EAAE,MAAM,KAAK,KAAK,GAAG,QAAQ;AAC7C,iBAAS,QAAQ,SAAU,OAAO;AAChC,cAAI,IAAI,OAAO,SAAS,MAAM,UAAU,UAAU,SAAS,MAAO;AAClE,0BAAgB,KAAK;AAAA,YACnB,QAAQ;AAAA,YACR,MAAM,QAAQ,KAAK;AAAA,UACrB,CAAC;AACD,cAAI,WAAW,eAAe,CAAC,GAAG,gBAAgB,gBAAgB,SAAS,CAAC,EAAE,IAAI;AAGlF,cAAI,MAAM,uBAAuB;AAC/B,gBAAI,cAAc,OAAO,OAAO,IAAI;AACpC,gBAAI,aAAa;AACf,uBAAS,OAAO,YAAY;AAC5B,uBAAS,QAAQ,YAAY;AAAA,YAC/B;AAAA,UACF;AACA,gBAAM,WAAW;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,MACA,mBAAmB,SAAS,kBAAkB,OAAO;AACnD,wBAAgB,KAAK,KAAK;AAAA,MAC5B;AAAA,MACA,sBAAsB,SAAS,qBAAqB,QAAQ;AAC1D,wBAAgB,OAAO,cAAc,iBAAiB;AAAA,UACpD;AAAA,QACF,CAAC,GAAG,CAAC;AAAA,MACP;AAAA,MACA,YAAY,SAAS,WAAWL,WAAU;AACxC,YAAI,QAAQ;AACZ,YAAI,CAAC,KAAK,QAAQ,WAAW;AAC3B,uBAAa,mBAAmB;AAChC,cAAI,OAAOA,cAAa,WAAY,CAAAA,UAAS;AAC7C;AAAA,QACF;AACA,YAAI,YAAY,OACd,gBAAgB;AAClB,wBAAgB,QAAQ,SAAU,OAAO;AACvC,cAAI,OAAO,GACT,SAAS,MAAM,QACf,WAAW,OAAO,UAClB,SAAS,QAAQ,MAAM,GACvB,eAAe,OAAO,cACtB,aAAa,OAAO,YACpB,gBAAgB,MAAM,MACtB,eAAe,OAAO,QAAQ,IAAI;AACpC,cAAI,cAAc;AAEhB,mBAAO,OAAO,aAAa;AAC3B,mBAAO,QAAQ,aAAa;AAAA,UAC9B;AACA,iBAAO,SAAS;AAChB,cAAI,OAAO,uBAAuB;AAEhC,gBAAI,YAAY,cAAc,MAAM,KAAK,CAAC,YAAY,UAAU,MAAM;AAAA,aAErE,cAAc,MAAM,OAAO,QAAQ,cAAc,OAAO,OAAO,WAAW,SAAS,MAAM,OAAO,QAAQ,SAAS,OAAO,OAAO,OAAO;AAErI,qBAAO,kBAAkB,eAAe,cAAc,YAAY,MAAM,OAAO;AAAA,YACjF;AAAA,UACF;AAGA,cAAI,CAAC,YAAY,QAAQ,QAAQ,GAAG;AAClC,mBAAO,eAAe;AACtB,mBAAO,aAAa;AACpB,gBAAI,CAAC,MAAM;AACT,qBAAO,MAAM,QAAQ;AAAA,YACvB;AACA,kBAAM,QAAQ,QAAQ,eAAe,QAAQ,IAAI;AAAA,UACnD;AACA,cAAI,MAAM;AACR,wBAAY;AACZ,4BAAgB,KAAK,IAAI,eAAe,IAAI;AAC5C,yBAAa,OAAO,mBAAmB;AACvC,mBAAO,sBAAsB,WAAW,WAAY;AAClD,qBAAO,gBAAgB;AACvB,qBAAO,eAAe;AACtB,qBAAO,WAAW;AAClB,qBAAO,aAAa;AACpB,qBAAO,wBAAwB;AAAA,YACjC,GAAG,IAAI;AACP,mBAAO,wBAAwB;AAAA,UACjC;AAAA,QACF,CAAC;AACD,qBAAa,mBAAmB;AAChC,YAAI,CAAC,WAAW;AACd,cAAI,OAAOA,cAAa,WAAY,CAAAA,UAAS;AAAA,QAC/C,OAAO;AACL,gCAAsB,WAAW,WAAY;AAC3C,gBAAI,OAAOA,cAAa,WAAY,CAAAA,UAAS;AAAA,UAC/C,GAAG,aAAa;AAAA,QAClB;AACA,0BAAkB,CAAC;AAAA,MACrB;AAAA,MACA,SAAS,SAAS,QAAQ,QAAQ,aAAa,QAAQ,UAAU;AAC/D,YAAI,UAAU;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,eAAe,WAAW,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,GAAG,QAAQ;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS,QAAQ,QAAQ;AACvB,WAAO,OAAO;AAAA,EAChB;AACA,WAAS,kBAAkB,eAAe,UAAU,QAAQ,SAAS;AACnE,WAAO,KAAK,KAAK,KAAK,IAAI,SAAS,MAAM,cAAc,KAAK,CAAC,IAAI,KAAK,IAAI,SAAS,OAAO,cAAc,MAAM,CAAC,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,SAAS,MAAM,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,SAAS,OAAO,OAAO,MAAM,CAAC,CAAC,IAAI,QAAQ;AAAA,EAC7N;AAyFA,WAASM,eAAc,MAAM;AAC3B,QAAI,WAAW,KAAK,UAClBC,UAAS,KAAK,QACdX,QAAO,KAAK,MACZ,WAAW,KAAK,UAChBY,WAAU,KAAK,SACf,OAAO,KAAK,MACZ,SAAS,KAAK,QACdC,YAAW,KAAK,UAChBC,YAAW,KAAK,UAChBC,qBAAoB,KAAK,mBACzBC,qBAAoB,KAAK,mBACzB,gBAAgB,KAAK,eACrBC,eAAc,KAAK,aACnB,uBAAuB,KAAK;AAC9B,eAAW,YAAYN,WAAUA,QAAO,OAAO;AAC/C,QAAI,CAAC,SAAU;AACf,QAAI,KACF,UAAU,SAAS,SACnB,SAAS,OAAOX,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,QAAQW;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,mBAAmBjB,OAAM,QAAQ,CAAC;AAClI,aAASkB,WAAU,oBAAoB;AACrC,UAAIA,OAAM,IAAI,mBAAmBA,OAAM;AAAA,IACzC;AACA,QAAIP,SAAQ;AACV,MAAAA,QAAO,cAAc,GAAG;AAAA,IAC1B;AACA,QAAI,QAAQ,MAAM,GAAG;AACnB,cAAQ,MAAM,EAAE,KAAK,UAAU,GAAG;AAAA,IACpC;AAAA,EACF;AAyCA,WAAS,eAAeQ,OAAM;AAC5B,IAAAT,eAAc,eAAe;AAAA,MAC3B;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,GAAGS,KAAI,CAAC;AAAA,EACV;AA8LA,WAAS,SAAS,IAAI,SAAS;AAC7B,QAAI,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,IAAI;AAC7C,YAAM,8CAA8C,OAAO,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC;AAAA,IACjF;AACA,SAAK,KAAK;AACV,SAAK,UAAU,UAAU,SAAS,CAAC,GAAG,OAAO;AAG7C,OAAG,OAAO,IAAI;AACd,QAAIC,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,SAASC,SAAQ,cAAcC,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,IAAIF,SAAQ;AAGlD,aAASpB,SAAQoB,WAAU;AACzB,QAAEpB,SAAQ,aAAa,QAAQA,KAAI,IAAIoB,UAASpB,KAAI;AAAA,IACtD;AACA,kBAAc,OAAO;AAGrB,aAAS,MAAM,MAAM;AACnB,UAAI,GAAG,OAAO,CAAC,MAAM,OAAO,OAAO,KAAK,EAAE,MAAM,YAAY;AAC1D,aAAK,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK,IAAI;AAAA,MAC/B;AAAA,IACF;AAGA,SAAK,kBAAkB,QAAQ,gBAAgB,QAAQ;AACvD,QAAI,KAAK,iBAAiB;AAExB,WAAK,QAAQ,sBAAsB;AAAA,IACrC;AAGA,QAAI,QAAQ,gBAAgB;AAC1B,MAAAL,IAAG,IAAI,eAAe,KAAK,WAAW;AAAA,IACxC,OAAO;AACL,MAAAA,IAAG,IAAI,aAAa,KAAK,WAAW;AACpC,MAAAA,IAAG,IAAI,cAAc,KAAK,WAAW;AAAA,IACvC;AACA,QAAI,KAAK,iBAAiB;AACxB,MAAAA,IAAG,IAAI,YAAY,IAAI;AACvB,MAAAA,IAAG,IAAI,aAAa,IAAI;AAAA,IAC1B;AACA,cAAU,KAAK,KAAK,EAAE;AAGtB,YAAQ,SAAS,QAAQ,MAAM,OAAO,KAAK,KAAK,QAAQ,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC;AAG7E,aAAS,MAAM,sBAAsB,CAAC;AAAA,EACxC;AA2hCA,WAAS,gBAA2B,KAAK;AACvC,QAAI,IAAI,cAAc;AACpB,UAAI,aAAa,aAAa;AAAA,IAChC;AACA,QAAI,cAAc,IAAI,eAAe;AAAA,EACvC;AACA,WAAS,QAAQ,QAAQ,MAAM2B,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,QAAIpB,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,aAC1DX,KAAI,IAAI,QACR,MAAM;AACR,WAAOA,MAAK;AACV,aAAO,IAAI,WAAWA,EAAC;AAAA,IACzB;AACA,WAAO,IAAI,SAAS,EAAE;AAAA,EACxB;AACA,WAAS,uBAAuB,MAAM;AACpC,sBAAkB,SAAS;AAC3B,QAAI,SAAS,KAAK,qBAAqB,OAAO;AAC9C,QAAI,MAAM,OAAO;AACjB,WAAO,OAAO;AACZ,UAAI,KAAK,OAAO,GAAG;AACnB,SAAG,WAAW,kBAAkB,KAAK,EAAE;AAAA,IACzC;AAAA,EACF;AACA,WAAS,UAAU,IAAI;AACrB,WAAO,WAAW,IAAI,CAAC;AAAA,EACzB;AACA,WAAS,gBAAgB,IAAI;AAC3B,WAAO,aAAa,EAAE;AAAA,EACxB;AAgFA,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,eAAS,MAAM,MAAM;AACnB,YAAI,GAAG,OAAO,CAAC,MAAM,OAAO,OAAO,KAAK,EAAE,MAAM,YAAY;AAC1D,eAAK,EAAE,IAAI,KAAK,EAAE,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,UAAAI,IAAG,UAAU,YAAY,KAAK,iBAAiB;AAAA,QACjD,OAAO;AACL,cAAI,KAAK,QAAQ,gBAAgB;AAC/B,YAAAA,IAAG,UAAU,eAAe,KAAK,yBAAyB;AAAA,UAC5D,WAAW,cAAc,SAAS;AAChC,YAAAA,IAAG,UAAU,aAAa,KAAK,yBAAyB;AAAA,UAC1D,OAAO;AACL,YAAAA,IAAG,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,SAAS4B,QAAO;AACpB,YAAI,KAAK,SAAS,iBAAiB;AACjC,UAAA1B,KAAI,UAAU,YAAY,KAAK,iBAAiB;AAAA,QAClD,OAAO;AACL,UAAAA,KAAI,UAAU,eAAe,KAAK,yBAAyB;AAC3D,UAAAA,KAAI,UAAU,aAAa,KAAK,yBAAyB;AACzD,UAAAA,KAAI,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,YAAIQ,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,SAAUkB,aAAY;AACxC,oBAAcA,YAAW,GAAG;AAAA,IAC9B,CAAC;AACD,kBAAc,CAAC;AAAA,EACjB;AACA,WAAS,kCAAkC;AACzC,kBAAc,0BAA0B;AAAA,EAC1C;AA6GA,WAAS,SAAS;AAAA,EAAC;AA8BnB,WAAS,SAAS;AAAA,EAAC;AA7nFnB,MAkIIC,UAOA,YACA,MACA,SACA,QACA,KACA,kBAEA,aA4CA,SA2SA,kBAmEA,SA2IAC,UACAN,WAGA,eAuIA,WACAO,cAkDA,QACF,UACA,SACA,QACA,QACA,YACA,SACA,aACA,UACA,UACA,mBACA,mBACA,aACA,aACA,qBACA,iBACA,WACA,QACA,UACA,QACA,QACA,iBACA,gBACA,OACA,YACA,eACA,uBACA,wBACA,oBAEA,qBACA,kCAGA,SACA,mBAGE,gBACF,yBACA,kBAEA,kBACA,yBAUA,kBAqBA,oBAeA,6BAcA,eAiCA,qBAKA,uBAkBE,+BAmBA,uBAs1CA,aACF,UACA,cACA,WACA,iBACA,iBACA,YACA,4BAiHE,YAsFA,MAuuBG;AAhzGP;AAAA;AAkIA,MAAIF,WAAU;AAOd,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,QAChB,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAyCA,MAAI,UAAU;AA8Wd,MAAI,UAAU,cAAa,oBAAI,KAAK,GAAE,QAAQ;AA2I9C,MAAIC,WAAU,CAAC;AACf,MAAIN,YAAW;AAAA,QACb,qBAAqB;AAAA,MACvB;AACA,MAAI,gBAAgB;AAAA,QAClB,OAAO,SAAS,MAAMQ,SAAQ;AAE5B,mBAASV,WAAUE,WAAU;AAC3B,gBAAIA,UAAS,eAAeF,OAAM,KAAK,EAAEA,WAAUU,UAAS;AAC1D,cAAAA,QAAOV,OAAM,IAAIE,UAASF,OAAM;AAAA,YAClC;AAAA,UACF;AACA,UAAAQ,SAAQ,QAAQ,SAAUG,IAAG;AAC3B,gBAAIA,GAAE,eAAeD,QAAO,YAAY;AACtC,oBAAM,iCAAiC,OAAOA,QAAO,YAAY,iBAAiB;AAAA,YACpF;AAAA,UACF,CAAC;AACD,UAAAF,SAAQ,KAAKE,OAAM;AAAA,QACrB;AAAA,QACA,aAAa,SAAS,YAAY,WAAW,UAAU,KAAK;AAC1D,cAAI,QAAQ;AACZ,eAAK,gBAAgB;AACrB,cAAI,SAAS,WAAY;AACvB,kBAAM,gBAAgB;AAAA,UACxB;AACA,cAAI,kBAAkB,YAAY;AAClC,UAAAF,SAAQ,QAAQ,SAAUE,SAAQ;AAChC,gBAAI,CAAC,SAASA,QAAO,UAAU,EAAG;AAElC,gBAAI,SAASA,QAAO,UAAU,EAAE,eAAe,GAAG;AAChD,uBAASA,QAAO,UAAU,EAAE,eAAe,EAAE,eAAe;AAAA,gBAC1D;AAAA,cACF,GAAG,GAAG,CAAC;AAAA,YACT;AAIA,gBAAI,SAAS,QAAQA,QAAO,UAAU,KAAK,SAASA,QAAO,UAAU,EAAE,SAAS,GAAG;AACjF,uBAASA,QAAO,UAAU,EAAE,SAAS,EAAE,eAAe;AAAA,gBACpD;AAAA,cACF,GAAG,GAAG,CAAC;AAAA,YACT;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,mBAAmB,SAAS,kBAAkB,UAAU,IAAIR,WAAU,SAAS;AAC7E,UAAAM,SAAQ,QAAQ,SAAUE,SAAQ;AAChC,gBAAI,aAAaA,QAAO;AACxB,gBAAI,CAAC,SAAS,QAAQ,UAAU,KAAK,CAACA,QAAO,oBAAqB;AAClE,gBAAI,cAAc,IAAIA,QAAO,UAAU,IAAI,SAAS,OAAO;AAC3D,wBAAY,WAAW;AACvB,wBAAY,UAAU,SAAS;AAC/B,qBAAS,UAAU,IAAI;AAGvB,qBAASR,WAAU,YAAY,QAAQ;AAAA,UACzC,CAAC;AACD,mBAASF,WAAU,SAAS,SAAS;AACnC,gBAAI,CAAC,SAAS,QAAQ,eAAeA,OAAM,EAAG;AAC9C,gBAAI,WAAW,KAAK,aAAa,UAAUA,SAAQ,SAAS,QAAQA,OAAM,CAAC;AAC3E,gBAAI,OAAO,aAAa,aAAa;AACnC,uBAAS,QAAQA,OAAM,IAAI;AAAA,YAC7B;AAAA,UACF;AAAA,QACF;AAAA,QACA,oBAAoB,SAAS,mBAAmBlB,OAAM,UAAU;AAC9D,cAAI,kBAAkB,CAAC;AACvB,UAAA0B,SAAQ,QAAQ,SAAUE,SAAQ;AAChC,gBAAI,OAAOA,QAAO,oBAAoB,WAAY;AAClD,qBAAS,iBAAiBA,QAAO,gBAAgB,KAAK,SAASA,QAAO,UAAU,GAAG5B,KAAI,CAAC;AAAA,UAC1F,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,QACA,cAAc,SAAS,aAAa,UAAUA,OAAM,OAAO;AACzD,cAAI;AACJ,UAAA0B,SAAQ,QAAQ,SAAUE,SAAQ;AAEhC,gBAAI,CAAC,SAASA,QAAO,UAAU,EAAG;AAGlC,gBAAIA,QAAO,mBAAmB,OAAOA,QAAO,gBAAgB5B,KAAI,MAAM,YAAY;AAChF,8BAAgB4B,QAAO,gBAAgB5B,KAAI,EAAE,KAAK,SAAS4B,QAAO,UAAU,GAAG,KAAK;AAAA,YACtF;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,MACF;AAsDA,MAAI,YAAY,CAAC,KAAK;AACtB,MAAID,eAAc,SAASA,aAAY,WAAW,UAAU;AAC1D,YAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC9E,gBAAgB,KAAK,KACrB,OAAO,yBAAyB,MAAM,SAAS;AACjD,sBAAc,YAAY,KAAK,QAAQ,EAAE,WAAW,UAAU,eAAe;AAAA,UAC3E;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,aAAa;AAAA,UACb;AAAA,UACA,gBAAgB,SAAS;AAAA,UACzB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,oBAAoB;AAAA,UACpB,sBAAsB;AAAA,UACtB,gBAAgB,SAAS,iBAAiB;AACxC,0BAAc;AAAA,UAChB;AAAA,UACA,eAAe,SAAS,gBAAgB;AACtC,0BAAc;AAAA,UAChB;AAAA,UACA,uBAAuB,SAAS,sBAAsB3B,OAAM;AAC1D,2BAAe;AAAA,cACb;AAAA,cACA,MAAMA;AAAA,cACN;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,GAAG,IAAI,CAAC;AAAA,MACV;AAaA,MAcE,sBAAsB;AAdxB,MAeE,kBAAkB;AAfpB,MAgBE,YAAY,CAAC;AAhBf,MA0BE,wBAAwB;AA1B1B,MA2BE,yBAAyB;AA3B3B,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,2BAA0B,WAAY;AACpC,YAAI,CAAC,eAAgB;AAErB,YAAI,YAAY;AACd,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,SAAS,cAAc,GAAG;AACnC,WAAG,MAAM,UAAU;AACnB,eAAO,GAAG,MAAM,kBAAkB;AAAA,MACpC,GAAE;AAdJ,MAeE,mBAAmB,SAAS8B,kBAAiB,IAAI,SAAS;AACxD,YAAI,QAAQ,IAAI,EAAE,GAChB,UAAU,SAAS,MAAM,KAAK,IAAI,SAAS,MAAM,WAAW,IAAI,SAAS,MAAM,YAAY,IAAI,SAAS,MAAM,eAAe,IAAI,SAAS,MAAM,gBAAgB,GAChK,SAAS,SAAS,IAAI,GAAG,OAAO,GAChC,SAAS,SAAS,IAAI,GAAG,OAAO,GAChC,gBAAgB,UAAU,IAAI,MAAM,GACpC,iBAAiB,UAAU,IAAI,MAAM,GACrC,kBAAkB,iBAAiB,SAAS,cAAc,UAAU,IAAI,SAAS,cAAc,WAAW,IAAI,QAAQ,MAAM,EAAE,OAC9H,mBAAmB,kBAAkB,SAAS,eAAe,UAAU,IAAI,SAAS,eAAe,WAAW,IAAI,QAAQ,MAAM,EAAE;AACpI,YAAI,MAAM,YAAY,QAAQ;AAC5B,iBAAO,MAAM,kBAAkB,YAAY,MAAM,kBAAkB,mBAAmB,aAAa;AAAA,QACrG;AACA,YAAI,MAAM,YAAY,QAAQ;AAC5B,iBAAO,MAAM,oBAAoB,MAAM,GAAG,EAAE,UAAU,IAAI,aAAa;AAAA,QACzE;AACA,YAAI,UAAU,cAAc,OAAO,KAAK,cAAc,OAAO,MAAM,QAAQ;AACzE,cAAI,qBAAqB,cAAc,OAAO,MAAM,SAAS,SAAS;AACtE,iBAAO,WAAW,eAAe,UAAU,UAAU,eAAe,UAAU,sBAAsB,aAAa;AAAA,QACnH;AACA,eAAO,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,MACvV;AAnCF,MAoCE,qBAAqB,SAASC,oBAAmB,UAAU,YAAY,UAAU;AAC/E,YAAI,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,eAAO,gBAAgB,eAAe,gBAAgB,eAAe,cAAc,kBAAkB,MAAM,cAAc,kBAAkB;AAAA,MAC7I;AA5CF,MAmDE,8BAA8B,SAASC,6BAA4B3B,IAAGC,IAAG;AACvE,YAAI;AACJ,kBAAU,KAAK,SAAU,UAAU;AACjC,cAAI,YAAY,SAAS,OAAO,EAAE,QAAQ;AAC1C,cAAI,CAAC,aAAa,UAAU,QAAQ,EAAG;AACvC,cAAI,OAAO,QAAQ,QAAQ,GACzB,qBAAqBD,MAAK,KAAK,OAAO,aAAaA,MAAK,KAAK,QAAQ,WACrE,mBAAmBC,MAAK,KAAK,MAAM,aAAaA,MAAK,KAAK,SAAS;AACrE,cAAI,sBAAsB,kBAAkB;AAC1C,mBAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AACD,eAAO;AAAA,MACT;AAhEF,MAiEE,gBAAgB,SAAS2B,eAAc,SAAS;AAC9C,iBAAS,KAAK,OAAO,MAAM;AACzB,iBAAO,SAAUC,KAAIC,OAAMb,SAAQ,KAAK;AACtC,gBAAI,YAAYY,IAAG,QAAQ,MAAM,QAAQC,MAAK,QAAQ,MAAM,QAAQD,IAAG,QAAQ,MAAM,SAASC,MAAK,QAAQ,MAAM;AACjH,gBAAI,SAAS,SAAS,QAAQ,YAAY;AAGxC,qBAAO;AAAA,YACT,WAAW,SAAS,QAAQ,UAAU,OAAO;AAC3C,qBAAO;AAAA,YACT,WAAW,QAAQ,UAAU,SAAS;AACpC,qBAAO;AAAA,YACT,WAAW,OAAO,UAAU,YAAY;AACtC,qBAAO,KAAK,MAAMD,KAAIC,OAAMb,SAAQ,GAAG,GAAG,IAAI,EAAEY,KAAIC,OAAMb,SAAQ,GAAG;AAAA,YACvE,OAAO;AACL,kBAAI,cAAc,OAAOY,MAAKC,OAAM,QAAQ,MAAM;AAClD,qBAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,UAAU,cAAc,MAAM,QAAQ,MAAM,QAAQ,UAAU,IAAI;AAAA,YAC1H;AAAA,UACF;AAAA,QACF;AACA,YAAI,QAAQ,CAAC;AACb,YAAI,gBAAgB,QAAQ;AAC5B,YAAI,CAAC,iBAAiB1C,SAAQ,aAAa,KAAK,UAAU;AACxD,0BAAgB;AAAA,YACd,MAAM;AAAA,UACR;AAAA,QACF;AACA,cAAM,OAAO,cAAc;AAC3B,cAAM,YAAY,KAAK,cAAc,MAAM,IAAI;AAC/C,cAAM,WAAW,KAAK,cAAc,GAAG;AACvC,cAAM,cAAc,cAAc;AAClC,gBAAQ,QAAQ;AAAA,MAClB;AAjGF,MAkGE,sBAAsB,SAAS2C,uBAAsB;AACnD,YAAI,CAAC,2BAA2B,SAAS;AACvC,cAAI,SAAS,WAAW,MAAM;AAAA,QAChC;AAAA,MACF;AAtGF,MAuGE,wBAAwB,SAASC,yBAAwB;AACvD,YAAI,CAAC,2BAA2B,SAAS;AACvC,cAAI,SAAS,WAAW,EAAE;AAAA,QAC5B;AAAA,MACF;AAGF,UAAI,kBAAkB,CAAC,kBAAkB;AACvC,iBAAS,iBAAiB,SAAS,SAAU,KAAK;AAChD,cAAI,iBAAiB;AACnB,gBAAI,eAAe;AACnB,gBAAI,mBAAmB,IAAI,gBAAgB;AAC3C,gBAAI,4BAA4B,IAAI,yBAAyB;AAC7D,8BAAkB;AAClB,mBAAO;AAAA,UACT;AAAA,QACF,GAAG,IAAI;AAAA,MACT;AACA,MAAI,gCAAgC,SAASC,+BAA8B,KAAK;AAC9E,YAAI,QAAQ;AACV,gBAAM,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI;AACrC,cAAI,UAAU,4BAA4B,IAAI,SAAS,IAAI,OAAO;AAClE,cAAI,SAAS;AAEX,gBAAI1C,SAAQ,CAAC;AACb,qBAASL,MAAK,KAAK;AACjB,kBAAI,IAAI,eAAeA,EAAC,GAAG;AACzB,gBAAAK,OAAML,EAAC,IAAI,IAAIA,EAAC;AAAA,cAClB;AAAA,YACF;AACA,YAAAK,OAAM,SAASA,OAAM,SAAS;AAC9B,YAAAA,OAAM,iBAAiB;AACvB,YAAAA,OAAM,kBAAkB;AACxB,oBAAQ,OAAO,EAAE,YAAYA,MAAK;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AACA,MAAI,wBAAwB,SAAS2C,uBAAsB,KAAK;AAC9D,YAAI,QAAQ;AACV,iBAAO,WAAW,OAAO,EAAE,iBAAiB,IAAI,MAAM;AAAA,QACxD;AAAA,MACF;AAuGA,eAAS;AAAA,MAA4C;AAAA,QACnD,aAAa;AAAA,QACb,kBAAkB,SAAS,iBAAiB,QAAQ;AAClD,cAAI,CAAC,KAAK,GAAG,SAAS,MAAM,KAAK,WAAW,KAAK,IAAI;AACnD,yBAAa;AAAA,UACf;AAAA,QACF;AAAA,QACA,eAAe,SAAS,cAAc,KAAK,QAAQ;AACjD,iBAAO,OAAO,KAAK,QAAQ,cAAc,aAAa,KAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,QAAQ,MAAM,IAAI,KAAK,QAAQ;AAAA,QAC9H;AAAA,QACA,aAAa,SAAS,YAAoC,KAAK;AAC7D,cAAI,CAAC,IAAI,WAAY;AACrB,cAAI,QAAQ,MACV,KAAK,KAAK,IACV,UAAU,KAAK,SACf,kBAAkB,QAAQ,iBAC1B,OAAO,IAAI,MACX,QAAQ,IAAI,WAAW,IAAI,QAAQ,CAAC,KAAK,IAAI,eAAe,IAAI,gBAAgB,WAAW,KAC3F,UAAU,SAAS,KAAK,QACxB,iBAAiB,IAAI,OAAO,eAAe,IAAI,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,gBAAgB,IAAI,aAAa,EAAE,CAAC,MAAM,QACpH,SAAS,QAAQ;AACnB,iCAAuB,EAAE;AAGzB,cAAI,QAAQ;AACV;AAAA,UACF;AACA,cAAI,wBAAwB,KAAK,IAAI,KAAK,IAAI,WAAW,KAAK,QAAQ,UAAU;AAC9E;AAAA,UACF;AAGA,cAAI,eAAe,mBAAmB;AACpC;AAAA,UACF;AAGA,cAAI,CAAC,KAAK,mBAAmB,UAAU,UAAU,OAAO,QAAQ,YAAY,MAAM,UAAU;AAC1F;AAAA,UACF;AACA,mBAAS,QAAQ,QAAQ,QAAQ,WAAW,IAAI,KAAK;AACrD,cAAI,UAAU,OAAO,UAAU;AAC7B;AAAA,UACF;AACA,cAAI,eAAe,QAAQ;AAEzB;AAAA,UACF;AAGA,qBAAWrC,OAAM,MAAM;AACvB,8BAAoBA,OAAM,QAAQ,QAAQ,SAAS;AAGnD,cAAI,OAAO,WAAW,YAAY;AAChC,gBAAI,OAAO,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAG;AACxC,6BAAe;AAAA,gBACb,UAAU;AAAA,gBACV,QAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,UAAU;AAAA,gBACV,MAAM;AAAA,gBACN,QAAQ;AAAA,cACV,CAAC;AACD,cAAAyB,aAAY,UAAU,OAAO;AAAA,gBAC3B;AAAA,cACF,CAAC;AACD,iCAAmB,IAAI,eAAe;AACtC;AAAA,YACF;AAAA,UACF,WAAW,QAAQ;AACjB,qBAAS,OAAO,MAAM,GAAG,EAAE,KAAK,SAAU,UAAU;AAClD,yBAAW,QAAQ,gBAAgB,SAAS,KAAK,GAAG,IAAI,KAAK;AAC7D,kBAAI,UAAU;AACZ,+BAAe;AAAA,kBACb,UAAU;AAAA,kBACV,QAAQ;AAAA,kBACR,MAAM;AAAA,kBACN,UAAU;AAAA,kBACV,QAAQ;AAAA,kBACR,MAAM;AAAA,gBACR,CAAC;AACD,gBAAAA,aAAY,UAAU,OAAO;AAAA,kBAC3B;AAAA,gBACF,CAAC;AACD,uBAAO;AAAA,cACT;AAAA,YACF,CAAC;AACD,gBAAI,QAAQ;AACV,iCAAmB,IAAI,eAAe;AACtC;AAAA,YACF;AAAA,UACF;AACA,cAAI,QAAQ,UAAU,CAAC,QAAQ,gBAAgB,QAAQ,QAAQ,IAAI,KAAK,GAAG;AACzE;AAAA,UACF;AAGA,eAAK,kBAAkB,KAAK,OAAO,MAAM;AAAA,QAC3C;AAAA,QACA,mBAAmB,SAAS,kBAA+B,KAAiB,OAAyB,QAAQ;AAC3G,cAAI,QAAQ,MACV,KAAK,MAAM,IACX,UAAU,MAAM,SAChB,gBAAgB,GAAG,eACnB;AACF,cAAI,UAAU,CAAC,UAAU,OAAO,eAAe,IAAI;AACjD,gBAAI,WAAW,QAAQ,MAAM;AAC7B,qBAAS;AACT,qBAAS;AACT,uBAAW,OAAO;AAClB,qBAAS,OAAO;AAChB,yBAAa;AACb,0BAAc,QAAQ;AACtB,qBAAS,UAAU;AACnB,qBAAS;AAAA,cACP,QAAQ;AAAA,cACR,UAAU,SAAS,KAAK;AAAA,cACxB,UAAU,SAAS,KAAK;AAAA,YAC1B;AACA,8BAAkB,OAAO,UAAU,SAAS;AAC5C,6BAAiB,OAAO,UAAU,SAAS;AAC3C,iBAAK,UAAU,SAAS,KAAK;AAC7B,iBAAK,UAAU,SAAS,KAAK;AAC7B,mBAAO,MAAM,aAAa,IAAI;AAC9B,0BAAc,SAASa,eAAc;AACnC,cAAAb,aAAY,cAAc,OAAO;AAAA,gBAC/B;AAAA,cACF,CAAC;AACD,kBAAI,SAAS,eAAe;AAC1B,sBAAM,QAAQ;AACd;AAAA,cACF;AAGA,oBAAM,0BAA0B;AAChC,kBAAI,CAAC,WAAW,MAAM,iBAAiB;AACrC,uBAAO,YAAY;AAAA,cACrB;AAGA,oBAAM,kBAAkB,KAAK,KAAK;AAGlC,6BAAe;AAAA,gBACb,UAAU;AAAA,gBACV,MAAM;AAAA,gBACN,eAAe;AAAA,cACjB,CAAC;AAGD,0BAAY,QAAQ,QAAQ,aAAa,IAAI;AAAA,YAC/C;AAGA,oBAAQ,OAAO,MAAM,GAAG,EAAE,QAAQ,SAAU,UAAU;AACpD,mBAAK,QAAQ,SAAS,KAAK,GAAG,iBAAiB;AAAA,YACjD,CAAC;AACD,YAAAhC,IAAG,eAAe,YAAY,6BAA6B;AAC3D,YAAAA,IAAG,eAAe,aAAa,6BAA6B;AAC5D,YAAAA,IAAG,eAAe,aAAa,6BAA6B;AAC5D,gBAAI,QAAQ,gBAAgB;AAC1B,cAAAA,IAAG,eAAe,aAAa,MAAM,OAAO;AAE5C,eAAC,KAAK,mBAAmBA,IAAG,eAAe,iBAAiB,MAAM,OAAO;AAAA,YAC3E,OAAO;AACL,cAAAA,IAAG,eAAe,WAAW,MAAM,OAAO;AAC1C,cAAAA,IAAG,eAAe,YAAY,MAAM,OAAO;AAC3C,cAAAA,IAAG,eAAe,eAAe,MAAM,OAAO;AAAA,YAChD;AAGA,gBAAI,WAAW,KAAK,iBAAiB;AACnC,mBAAK,QAAQ,sBAAsB;AACnC,qBAAO,YAAY;AAAA,YACrB;AACA,YAAAgC,aAAY,cAAc,MAAM;AAAA,cAC9B;AAAA,YACF,CAAC;AAGD,gBAAI,QAAQ,UAAU,CAAC,QAAQ,oBAAoB,WAAW,CAAC,KAAK,mBAAmB,EAAE,QAAQ,cAAc;AAC7G,kBAAI,SAAS,eAAe;AAC1B,qBAAK,QAAQ;AACb;AAAA,cACF;AAIA,kBAAI,QAAQ,gBAAgB;AAC1B,gBAAAhC,IAAG,eAAe,aAAa,MAAM,mBAAmB;AACxD,gBAAAA,IAAG,eAAe,iBAAiB,MAAM,mBAAmB;AAAA,cAC9D,OAAO;AACL,gBAAAA,IAAG,eAAe,WAAW,MAAM,mBAAmB;AACtD,gBAAAA,IAAG,eAAe,YAAY,MAAM,mBAAmB;AACvD,gBAAAA,IAAG,eAAe,eAAe,MAAM,mBAAmB;AAAA,cAC5D;AACA,cAAAA,IAAG,eAAe,aAAa,MAAM,4BAA4B;AACjE,cAAAA,IAAG,eAAe,aAAa,MAAM,4BAA4B;AACjE,sBAAQ,kBAAkBA,IAAG,eAAe,eAAe,MAAM,4BAA4B;AAC7F,oBAAM,kBAAkB,WAAW,aAAa,QAAQ,KAAK;AAAA,YAC/D,OAAO;AACL,0BAAY;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,QACA,8BAA8B,SAAS,6BAA6D8C,IAAG;AACrG,cAAI,QAAQA,GAAE,UAAUA,GAAE,QAAQ,CAAC,IAAIA;AACvC,cAAI,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,iBAAK,oBAAoB;AAAA,UAC3B;AAAA,QACF;AAAA,QACA,qBAAqB,SAAS,sBAAsB;AAClD,oBAAU,kBAAkB,MAAM;AAClC,uBAAa,KAAK,eAAe;AACjC,eAAK,0BAA0B;AAAA,QACjC;AAAA,QACA,2BAA2B,SAAS,4BAA4B;AAC9D,cAAI,gBAAgB,KAAK,GAAG;AAC5B,UAAA5C,KAAI,eAAe,WAAW,KAAK,mBAAmB;AACtD,UAAAA,KAAI,eAAe,YAAY,KAAK,mBAAmB;AACvD,UAAAA,KAAI,eAAe,eAAe,KAAK,mBAAmB;AAC1D,UAAAA,KAAI,eAAe,aAAa,KAAK,mBAAmB;AACxD,UAAAA,KAAI,eAAe,iBAAiB,KAAK,mBAAmB;AAC5D,UAAAA,KAAI,eAAe,aAAa,KAAK,4BAA4B;AACjE,UAAAA,KAAI,eAAe,aAAa,KAAK,4BAA4B;AACjE,UAAAA,KAAI,eAAe,eAAe,KAAK,4BAA4B;AAAA,QACrE;AAAA,QACA,mBAAmB,SAAS,kBAA+B,KAAiB,OAAO;AACjF,kBAAQ,SAAS,IAAI,eAAe,WAAW;AAC/C,cAAI,CAAC,KAAK,mBAAmB,OAAO;AAClC,gBAAI,KAAK,QAAQ,gBAAgB;AAC/B,cAAAF,IAAG,UAAU,eAAe,KAAK,YAAY;AAAA,YAC/C,WAAW,OAAO;AAChB,cAAAA,IAAG,UAAU,aAAa,KAAK,YAAY;AAAA,YAC7C,OAAO;AACL,cAAAA,IAAG,UAAU,aAAa,KAAK,YAAY;AAAA,YAC7C;AAAA,UACF,OAAO;AACL,YAAAA,IAAG,QAAQ,WAAW,IAAI;AAC1B,YAAAA,IAAG,QAAQ,aAAa,KAAK,YAAY;AAAA,UAC3C;AACA,cAAI;AACF,gBAAI,SAAS,WAAW;AACtB,wBAAU,WAAY;AACpB,yBAAS,UAAU,MAAM;AAAA,cAC3B,CAAC;AAAA,YACH,OAAO;AACL,qBAAO,aAAa,EAAE,gBAAgB;AAAA,YACxC;AAAA,UACF,SAAS,KAAK;AAAA,UAAC;AAAA,QACjB;AAAA,QACA,cAAc,SAAS,aAAa,UAAU,KAAK;AACjD,gCAAsB;AACtB,cAAI,UAAU,QAAQ;AACpB,YAAAgC,aAAY,eAAe,MAAM;AAAA,cAC/B;AAAA,YACF,CAAC;AACD,gBAAI,KAAK,iBAAiB;AACxB,cAAAhC,IAAG,UAAU,YAAY,qBAAqB;AAAA,YAChD;AACA,gBAAI,UAAU,KAAK;AAGnB,aAAC,YAAY,YAAY,QAAQ,QAAQ,WAAW,KAAK;AACzD,wBAAY,QAAQ,QAAQ,YAAY,IAAI;AAC5C,qBAAS,SAAS;AAClB,wBAAY,KAAK,aAAa;AAG9B,2BAAe;AAAA,cACb,UAAU;AAAA,cACV,MAAM;AAAA,cACN,eAAe;AAAA,YACjB,CAAC;AAAA,UACH,OAAO;AACL,iBAAK,SAAS;AAAA,UAChB;AAAA,QACF;AAAA,QACA,kBAAkB,SAAS,mBAAmB;AAC5C,cAAI,UAAU;AACZ,iBAAK,SAAS,SAAS;AACvB,iBAAK,SAAS,SAAS;AACvB,gCAAoB;AACpB,gBAAI,SAAS,SAAS,iBAAiB,SAAS,SAAS,SAAS,OAAO;AACzE,gBAAI,SAAS;AACb,mBAAO,UAAU,OAAO,YAAY;AAClC,uBAAS,OAAO,WAAW,iBAAiB,SAAS,SAAS,SAAS,OAAO;AAC9E,kBAAI,WAAW,OAAQ;AACvB,uBAAS;AAAA,YACX;AACA,mBAAO,WAAW,OAAO,EAAE,iBAAiB,MAAM;AAClD,gBAAI,QAAQ;AACV,iBAAG;AACD,oBAAI,OAAO,OAAO,GAAG;AACnB,sBAAI,WAAW;AACf,6BAAW,OAAO,OAAO,EAAE,YAAY;AAAA,oBACrC,SAAS,SAAS;AAAA,oBAClB,SAAS,SAAS;AAAA,oBAClB;AAAA,oBACA,QAAQ;AAAA,kBACV,CAAC;AACD,sBAAI,YAAY,CAAC,KAAK,QAAQ,gBAAgB;AAC5C;AAAA,kBACF;AAAA,gBACF;AACA,yBAAS;AAAA,cACX,SAC8B,SAAS,gBAAgB,MAAM;AAAA,YAC/D;AACA,kCAAsB;AAAA,UACxB;AAAA,QACF;AAAA,QACA,cAAc,SAAS,aAA6B,KAAK;AACvD,cAAI,QAAQ;AACV,gBAAI,UAAU,KAAK,SACjB,oBAAoB,QAAQ,mBAC5B,iBAAiB,QAAQ,gBACzB,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KACvC,cAAc,WAAW,OAAO,SAAS,IAAI,GAC7C,SAAS,WAAW,eAAe,YAAY,GAC/C,SAAS,WAAW,eAAe,YAAY,GAC/C,uBAAuB,2BAA2B,uBAAuB,wBAAwB,mBAAmB,GACpH,MAAM,MAAM,UAAU,OAAO,UAAU,eAAe,MAAM,UAAU,MAAM,uBAAuB,qBAAqB,CAAC,IAAI,iCAAiC,CAAC,IAAI,MAAM,UAAU,IACnL,MAAM,MAAM,UAAU,OAAO,UAAU,eAAe,MAAM,UAAU,MAAM,uBAAuB,qBAAqB,CAAC,IAAI,iCAAiC,CAAC,IAAI,MAAM,UAAU;AAGrL,gBAAI,CAAC,SAAS,UAAU,CAAC,qBAAqB;AAC5C,kBAAI,qBAAqB,KAAK,IAAI,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,GAAG,KAAK,IAAI,MAAM,UAAU,KAAK,MAAM,CAAC,IAAI,mBAAmB;AACnI;AAAA,cACF;AACA,mBAAK,aAAa,KAAK,IAAI;AAAA,YAC7B;AACA,gBAAI,SAAS;AACX,kBAAI,aAAa;AACf,4BAAY,KAAK,MAAM,UAAU;AACjC,4BAAY,KAAK,MAAM,UAAU;AAAA,cACnC,OAAO;AACL,8BAAc;AAAA,kBACZ,GAAG;AAAA,kBACH,GAAG;AAAA,kBACH,GAAG;AAAA,kBACH,GAAG;AAAA,kBACH,GAAG;AAAA,kBACH,GAAG;AAAA,gBACL;AAAA,cACF;AACA,kBAAI,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,kBAAI,SAAS,mBAAmB,SAAS;AACzC,kBAAI,SAAS,gBAAgB,SAAS;AACtC,kBAAI,SAAS,eAAe,SAAS;AACrC,kBAAI,SAAS,aAAa,SAAS;AACnC,uBAAS;AACT,uBAAS;AACT,yBAAW;AAAA,YACb;AACA,gBAAI,cAAc,IAAI,eAAe;AAAA,UACvC;AAAA,QACF;AAAA,QACA,cAAc,SAAS,eAAe;AAGpC,cAAI,CAAC,SAAS;AACZ,gBAAI,YAAY,KAAK,QAAQ,iBAAiB,SAAS,OAAO,QAC5D,OAAO,QAAQ,QAAQ,MAAM,yBAAyB,MAAM,SAAS,GACrE,UAAU,KAAK;AAGjB,gBAAI,yBAAyB;AAE3B,oCAAsB;AACtB,qBAAO,IAAI,qBAAqB,UAAU,MAAM,YAAY,IAAI,qBAAqB,WAAW,MAAM,UAAU,wBAAwB,UAAU;AAChJ,sCAAsB,oBAAoB;AAAA,cAC5C;AACA,kBAAI,wBAAwB,SAAS,QAAQ,wBAAwB,SAAS,iBAAiB;AAC7F,oBAAI,wBAAwB,SAAU,uBAAsB,0BAA0B;AACtF,qBAAK,OAAO,oBAAoB;AAChC,qBAAK,QAAQ,oBAAoB;AAAA,cACnC,OAAO;AACL,sCAAsB,0BAA0B;AAAA,cAClD;AACA,iDAAmC,wBAAwB,mBAAmB;AAAA,YAChF;AACA,sBAAU,OAAO,UAAU,IAAI;AAC/B,wBAAY,SAAS,QAAQ,YAAY,KAAK;AAC9C,wBAAY,SAAS,QAAQ,eAAe,IAAI;AAChD,wBAAY,SAAS,QAAQ,WAAW,IAAI;AAC5C,gBAAI,SAAS,cAAc,EAAE;AAC7B,gBAAI,SAAS,aAAa,EAAE;AAC5B,gBAAI,SAAS,cAAc,YAAY;AACvC,gBAAI,SAAS,UAAU,CAAC;AACxB,gBAAI,SAAS,OAAO,KAAK,GAAG;AAC5B,gBAAI,SAAS,QAAQ,KAAK,IAAI;AAC9B,gBAAI,SAAS,SAAS,KAAK,KAAK;AAChC,gBAAI,SAAS,UAAU,KAAK,MAAM;AAClC,gBAAI,SAAS,WAAW,KAAK;AAC7B,gBAAI,SAAS,YAAY,0BAA0B,aAAa,OAAO;AACvE,gBAAI,SAAS,UAAU,QAAQ;AAC/B,gBAAI,SAAS,iBAAiB,MAAM;AACpC,qBAAS,QAAQ;AACjB,sBAAU,YAAY,OAAO;AAG7B,gBAAI,SAAS,oBAAoB,kBAAkB,SAAS,QAAQ,MAAM,KAAK,IAAI,MAAM,OAAO,iBAAiB,SAAS,QAAQ,MAAM,MAAM,IAAI,MAAM,GAAG;AAAA,UAC7J;AAAA,QACF;AAAA,QACA,cAAc,SAAS,aAAwB,KAAiB,UAAU;AACxE,cAAI,QAAQ;AACZ,cAAI,eAAe,IAAI;AACvB,cAAI,UAAU,MAAM;AACpB,UAAAgC,aAAY,aAAa,MAAM;AAAA,YAC7B;AAAA,UACF,CAAC;AACD,cAAI,SAAS,eAAe;AAC1B,iBAAK,QAAQ;AACb;AAAA,UACF;AACA,UAAAA,aAAY,cAAc,IAAI;AAC9B,cAAI,CAAC,SAAS,eAAe;AAC3B,sBAAUpB,OAAM,MAAM;AACtB,oBAAQ,gBAAgB,IAAI;AAC5B,oBAAQ,YAAY;AACpB,oBAAQ,MAAM,aAAa,IAAI;AAC/B,iBAAK,WAAW;AAChB,wBAAY,SAAS,KAAK,QAAQ,aAAa,KAAK;AACpD,qBAAS,QAAQ;AAAA,UACnB;AAGA,gBAAM,UAAU,UAAU,WAAY;AACpC,YAAAoB,aAAY,SAAS,KAAK;AAC1B,gBAAI,SAAS,cAAe;AAC5B,gBAAI,CAAC,MAAM,QAAQ,mBAAmB;AACpC,qBAAO,aAAa,SAAS,MAAM;AAAA,YACrC;AACA,kBAAM,WAAW;AACjB,2BAAe;AAAA,cACb,UAAU;AAAA,cACV,MAAM;AAAA,YACR,CAAC;AAAA,UACH,CAAC;AACD,WAAC,YAAY,YAAY,QAAQ,QAAQ,WAAW,IAAI;AAGxD,cAAI,UAAU;AACZ,8BAAkB;AAClB,kBAAM,UAAU,YAAY,MAAM,kBAAkB,EAAE;AAAA,UACxD,OAAO;AAEL,YAAA9B,KAAI,UAAU,WAAW,MAAM,OAAO;AACtC,YAAAA,KAAI,UAAU,YAAY,MAAM,OAAO;AACvC,YAAAA,KAAI,UAAU,eAAe,MAAM,OAAO;AAC1C,gBAAI,cAAc;AAChB,2BAAa,gBAAgB;AAC7B,sBAAQ,WAAW,QAAQ,QAAQ,KAAK,OAAO,cAAc,MAAM;AAAA,YACrE;AACA,YAAAF,IAAG,UAAU,QAAQ,KAAK;AAG1B,gBAAI,QAAQ,aAAa,eAAe;AAAA,UAC1C;AACA,gCAAsB;AACtB,gBAAM,eAAe,UAAU,MAAM,aAAa,KAAK,OAAO,UAAU,GAAG,CAAC;AAC5E,UAAAA,IAAG,UAAU,eAAe,KAAK;AACjC,kBAAQ;AACR,iBAAO,aAAa,EAAE,gBAAgB;AACtC,cAAI,QAAQ;AACV,gBAAI,SAAS,MAAM,eAAe,MAAM;AAAA,UAC1C;AAAA,QACF;AAAA;AAAA,QAEA,aAAa,SAAS,YAAuB,KAAK;AAChD,cAAI,KAAK,KAAK,IACZ,SAAS,IAAI,QACb,UACA,YACA,QACA,UAAU,KAAK,SACf,QAAQ,QAAQ,OAChB,iBAAiB,SAAS,QAC1B,UAAU,gBAAgB,OAC1B,UAAU,QAAQ,MAClB,eAAe,eAAe,gBAC9B,UACA,QAAQ,MACR,iBAAiB;AACnB,cAAI,QAAS;AACb,mBAAS,cAAcK,OAAM,OAAO;AAClC,YAAA2B,aAAY3B,OAAM,OAAO,eAAe;AAAA,cACtC;AAAA,cACA;AAAA,cACA,MAAM,WAAW,aAAa;AAAA,cAC9B;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,QAAQ,SAAS,OAAO0C,SAAQC,QAAO;AACrC,uBAAO,QAAQ,QAAQ,IAAI,QAAQ,UAAUD,SAAQ,QAAQA,OAAM,GAAG,KAAKC,MAAK;AAAA,cAClF;AAAA,cACA;AAAA,YACF,GAAG,KAAK,CAAC;AAAA,UACX;AAGA,mBAAS,UAAU;AACjB,0BAAc,0BAA0B;AACxC,kBAAM,sBAAsB;AAC5B,gBAAI,UAAU,cAAc;AAC1B,2BAAa,sBAAsB;AAAA,YACrC;AAAA,UACF;AAGA,mBAAS,UAAU,WAAW;AAC5B,0BAAc,qBAAqB;AAAA,cACjC;AAAA,YACF,CAAC;AACD,gBAAI,WAAW;AAEb,kBAAI,SAAS;AACX,+BAAe,WAAW;AAAA,cAC5B,OAAO;AACL,+BAAe,WAAW,KAAK;AAAA,cACjC;AACA,kBAAI,UAAU,cAAc;AAE1B,4BAAY,QAAQ,cAAc,YAAY,QAAQ,aAAa,eAAe,QAAQ,YAAY,KAAK;AAC3G,4BAAY,QAAQ,QAAQ,YAAY,IAAI;AAAA,cAC9C;AACA,kBAAI,gBAAgB,SAAS,UAAU,SAAS,QAAQ;AACtD,8BAAc;AAAA,cAChB,WAAW,UAAU,SAAS,UAAU,aAAa;AACnD,8BAAc;AAAA,cAChB;AAGA,kBAAI,iBAAiB,OAAO;AAC1B,sBAAM,wBAAwB;AAAA,cAChC;AACA,oBAAM,WAAW,WAAY;AAC3B,8BAAc,2BAA2B;AACzC,sBAAM,wBAAwB;AAAA,cAChC,CAAC;AACD,kBAAI,UAAU,cAAc;AAC1B,6BAAa,WAAW;AACxB,6BAAa,wBAAwB;AAAA,cACvC;AAAA,YACF;AAGA,gBAAI,WAAW,UAAU,CAAC,OAAO,YAAY,WAAW,MAAM,CAAC,OAAO,UAAU;AAC9E,2BAAa;AAAA,YACf;AAGA,gBAAI,CAAC,QAAQ,kBAAkB,CAAC,IAAI,UAAU,WAAW,UAAU;AACjE,qBAAO,WAAW,OAAO,EAAE,iBAAiB,IAAI,MAAM;AAGtD,eAAC,aAAa,8BAA8B,GAAG;AAAA,YACjD;AACA,aAAC,QAAQ,kBAAkB,IAAI,mBAAmB,IAAI,gBAAgB;AACtE,mBAAO,iBAAiB;AAAA,UAC1B;AAGA,mBAAS,UAAU;AACjB,uBAAWzC,OAAM,MAAM;AACvB,gCAAoBA,OAAM,QAAQ,QAAQ,SAAS;AACnD,2BAAe;AAAA,cACb,UAAU;AAAA,cACV,MAAM;AAAA,cACN,MAAM;AAAA,cACN;AAAA,cACA;AAAA,cACA,eAAe;AAAA,YACjB,CAAC;AAAA,UACH;AACA,cAAI,IAAI,mBAAmB,QAAQ;AACjC,gBAAI,cAAc,IAAI,eAAe;AAAA,UACvC;AACA,mBAAS,QAAQ,QAAQ,QAAQ,WAAW,IAAI,IAAI;AACpD,wBAAc,UAAU;AACxB,cAAI,SAAS,cAAe,QAAO;AACnC,cAAI,OAAO,SAAS,IAAI,MAAM,KAAK,OAAO,YAAY,OAAO,cAAc,OAAO,cAAc,MAAM,0BAA0B,QAAQ;AACtI,mBAAO,UAAU,KAAK;AAAA,UACxB;AACA,4BAAkB;AAClB,cAAI,kBAAkB,CAAC,QAAQ,aAAa,UAAU,YAAY,SAAS,aAAa,UACtF,gBAAgB,SAAS,KAAK,cAAc,YAAY,UAAU,MAAM,gBAAgB,QAAQ,GAAG,MAAM,MAAM,SAAS,MAAM,gBAAgB,QAAQ,GAAG,IAAI;AAC7J,uBAAW,KAAK,cAAc,KAAK,MAAM,MAAM;AAC/C,uBAAW,QAAQ,MAAM;AACzB,0BAAc,eAAe;AAC7B,gBAAI,SAAS,cAAe,QAAO;AACnC,gBAAI,QAAQ;AACV,yBAAW;AACX,sBAAQ;AACR,mBAAK,WAAW;AAChB,4BAAc,QAAQ;AACtB,kBAAI,CAAC,SAAS,eAAe;AAC3B,oBAAI,QAAQ;AACV,yBAAO,aAAa,QAAQ,MAAM;AAAA,gBACpC,OAAO;AACL,yBAAO,YAAY,MAAM;AAAA,gBAC3B;AAAA,cACF;AACA,qBAAO,UAAU,IAAI;AAAA,YACvB;AACA,gBAAI,cAAc,UAAU,IAAI,QAAQ,SAAS;AACjD,gBAAI,CAAC,eAAe,aAAa,KAAK,UAAU,IAAI,KAAK,CAAC,YAAY,UAAU;AAI9E,kBAAI,gBAAgB,QAAQ;AAC1B,uBAAO,UAAU,KAAK;AAAA,cACxB;AAGA,kBAAI,eAAe,OAAO,IAAI,QAAQ;AACpC,yBAAS;AAAA,cACX;AACA,kBAAI,QAAQ;AACV,6BAAa,QAAQ,MAAM;AAAA,cAC7B;AACA,kBAAI,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ,YAAY,KAAK,CAAC,CAAC,MAAM,MAAM,OAAO;AACtF,wBAAQ;AACR,oBAAI,eAAe,YAAY,aAAa;AAE1C,qBAAG,aAAa,QAAQ,YAAY,WAAW;AAAA,gBACjD,OAAO;AACL,qBAAG,YAAY,MAAM;AAAA,gBACvB;AACA,2BAAW;AAEX,wBAAQ;AACR,uBAAO,UAAU,IAAI;AAAA,cACvB;AAAA,YACF,WAAW,eAAe,cAAc,KAAK,UAAU,IAAI,GAAG;AAE5D,kBAAI,aAAa,SAAS,IAAI,GAAG,SAAS,IAAI;AAC9C,kBAAI,eAAe,QAAQ;AACzB,uBAAO,UAAU,KAAK;AAAA,cACxB;AACA,uBAAS;AACT,2BAAa,QAAQ,MAAM;AAC3B,kBAAI,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ,YAAY,KAAK,KAAK,MAAM,OAAO;AACnF,wBAAQ;AACR,mBAAG,aAAa,QAAQ,UAAU;AAClC,2BAAW;AAEX,wBAAQ;AACR,uBAAO,UAAU,IAAI;AAAA,cACvB;AAAA,YACF,WAAW,OAAO,eAAe,IAAI;AACnC,2BAAa,QAAQ,MAAM;AAC3B,kBAAI,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,kBAAI,eAAe,QAAQ;AACzB,wCAAwB,WAAW,KAAK;AACxC,wCAAwB;AACxB,yCAAyB,CAAC,mBAAmB,QAAQ,cAAc;AAAA,cACrE;AACA,0BAAY,kBAAkB,KAAK,QAAQ,YAAY,UAAU,kBAAkB,IAAI,QAAQ,eAAe,QAAQ,yBAAyB,OAAO,QAAQ,gBAAgB,QAAQ,uBAAuB,wBAAwB,eAAe,MAAM;AAC1P,kBAAI;AACJ,kBAAI,cAAc,GAAG;AAEnB,oBAAI,YAAYA,OAAM,MAAM;AAC5B,mBAAG;AACD,+BAAa;AACb,4BAAU,SAAS,SAAS,SAAS;AAAA,gBACvC,SAAS,YAAY,IAAI,SAAS,SAAS,MAAM,UAAU,YAAY;AAAA,cACzE;AAEA,kBAAI,cAAc,KAAK,YAAY,QAAQ;AACzC,uBAAO,UAAU,KAAK;AAAA,cACxB;AACA,2BAAa;AACb,8BAAgB;AAChB,kBAAI,cAAc,OAAO,oBACvB,QAAQ;AACV,sBAAQ,cAAc;AACtB,kBAAI,aAAa,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ,YAAY,KAAK,KAAK;AACrF,kBAAI,eAAe,OAAO;AACxB,oBAAI,eAAe,KAAK,eAAe,IAAI;AACzC,0BAAQ,eAAe;AAAA,gBACzB;AACA,0BAAU;AACV,2BAAW,WAAW,EAAE;AACxB,wBAAQ;AACR,oBAAI,SAAS,CAAC,aAAa;AACzB,qBAAG,YAAY,MAAM;AAAA,gBACvB,OAAO;AACL,yBAAO,WAAW,aAAa,QAAQ,QAAQ,cAAc,MAAM;AAAA,gBACrE;AAGA,oBAAI,iBAAiB;AACnB,2BAAS,iBAAiB,GAAG,eAAe,gBAAgB,SAAS;AAAA,gBACvE;AACA,2BAAW,OAAO;AAGlB,oBAAI,0BAA0B,UAAa,CAAC,wBAAwB;AAClE,uCAAqB,KAAK,IAAI,wBAAwB,QAAQ,MAAM,EAAE,KAAK,CAAC;AAAA,gBAC9E;AACA,wBAAQ;AACR,uBAAO,UAAU,IAAI;AAAA,cACvB;AAAA,YACF;AACA,gBAAI,GAAG,SAAS,MAAM,GAAG;AACvB,qBAAO,UAAU,KAAK;AAAA,YACxB;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,QACA,uBAAuB;AAAA,QACvB,gBAAgB,SAAS,iBAAiB;AACxC,UAAAL,KAAI,UAAU,aAAa,KAAK,YAAY;AAC5C,UAAAA,KAAI,UAAU,aAAa,KAAK,YAAY;AAC5C,UAAAA,KAAI,UAAU,eAAe,KAAK,YAAY;AAC9C,UAAAA,KAAI,UAAU,YAAY,6BAA6B;AACvD,UAAAA,KAAI,UAAU,aAAa,6BAA6B;AACxD,UAAAA,KAAI,UAAU,aAAa,6BAA6B;AAAA,QAC1D;AAAA,QACA,cAAc,SAAS,eAAe;AACpC,cAAI,gBAAgB,KAAK,GAAG;AAC5B,UAAAA,KAAI,eAAe,WAAW,KAAK,OAAO;AAC1C,UAAAA,KAAI,eAAe,YAAY,KAAK,OAAO;AAC3C,UAAAA,KAAI,eAAe,aAAa,KAAK,OAAO;AAC5C,UAAAA,KAAI,eAAe,iBAAiB,KAAK,OAAO;AAChD,UAAAA,KAAI,eAAe,eAAe,KAAK,OAAO;AAC9C,UAAAA,KAAI,UAAU,eAAe,IAAI;AAAA,QACnC;AAAA,QACA,SAAS,SAAS,QAAmB,KAAK;AACxC,cAAI,KAAK,KAAK,IACZ,UAAU,KAAK;AAGjB,qBAAWK,OAAM,MAAM;AACvB,8BAAoBA,OAAM,QAAQ,QAAQ,SAAS;AACnD,UAAAyB,aAAY,QAAQ,MAAM;AAAA,YACxB;AAAA,UACF,CAAC;AACD,qBAAW,UAAU,OAAO;AAG5B,qBAAWzB,OAAM,MAAM;AACvB,8BAAoBA,OAAM,QAAQ,QAAQ,SAAS;AACnD,cAAI,SAAS,eAAe;AAC1B,iBAAK,SAAS;AACd;AAAA,UACF;AACA,gCAAsB;AACtB,mCAAyB;AACzB,kCAAwB;AACxB,wBAAc,KAAK,OAAO;AAC1B,uBAAa,KAAK,eAAe;AACjC,0BAAgB,KAAK,OAAO;AAC5B,0BAAgB,KAAK,YAAY;AAGjC,cAAI,KAAK,iBAAiB;AACxB,YAAAL,KAAI,UAAU,QAAQ,IAAI;AAC1B,YAAAA,KAAI,IAAI,aAAa,KAAK,YAAY;AAAA,UACxC;AACA,eAAK,eAAe;AACpB,eAAK,aAAa;AAClB,cAAI,QAAQ;AACV,gBAAI,SAAS,MAAM,eAAe,EAAE;AAAA,UACtC;AACA,cAAI,QAAQ,aAAa,EAAE;AAC3B,cAAI,KAAK;AACP,gBAAI,OAAO;AACT,kBAAI,cAAc,IAAI,eAAe;AACrC,eAAC,QAAQ,cAAc,IAAI,gBAAgB;AAAA,YAC7C;AACA,uBAAW,QAAQ,cAAc,QAAQ,WAAW,YAAY,OAAO;AACvE,gBAAI,WAAW,YAAY,eAAe,YAAY,gBAAgB,SAAS;AAE7E,yBAAW,QAAQ,cAAc,QAAQ,WAAW,YAAY,OAAO;AAAA,YACzE;AACA,gBAAI,QAAQ;AACV,kBAAI,KAAK,iBAAiB;AACxB,gBAAAA,KAAI,QAAQ,WAAW,IAAI;AAAA,cAC7B;AACA,gCAAkB,MAAM;AACxB,qBAAO,MAAM,aAAa,IAAI;AAI9B,kBAAI,SAAS,CAAC,qBAAqB;AACjC,4BAAY,QAAQ,cAAc,YAAY,QAAQ,aAAa,KAAK,QAAQ,YAAY,KAAK;AAAA,cACnG;AACA,0BAAY,QAAQ,KAAK,QAAQ,aAAa,KAAK;AAGnD,6BAAe;AAAA,gBACb,UAAU;AAAA,gBACV,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,UAAU;AAAA,gBACV,mBAAmB;AAAA,gBACnB,eAAe;AAAA,cACjB,CAAC;AACD,kBAAI,WAAW,UAAU;AACvB,oBAAI,YAAY,GAAG;AAEjB,iCAAe;AAAA,oBACb,QAAQ;AAAA,oBACR,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,QAAQ;AAAA,oBACR,eAAe;AAAA,kBACjB,CAAC;AAGD,iCAAe;AAAA,oBACb,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,eAAe;AAAA,kBACjB,CAAC;AAGD,iCAAe;AAAA,oBACb,QAAQ;AAAA,oBACR,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,QAAQ;AAAA,oBACR,eAAe;AAAA,kBACjB,CAAC;AACD,iCAAe;AAAA,oBACb,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,eAAe;AAAA,kBACjB,CAAC;AAAA,gBACH;AACA,+BAAe,YAAY,KAAK;AAAA,cAClC,OAAO;AACL,oBAAI,aAAa,UAAU;AACzB,sBAAI,YAAY,GAAG;AAEjB,mCAAe;AAAA,sBACb,UAAU;AAAA,sBACV,MAAM;AAAA,sBACN,MAAM;AAAA,sBACN,eAAe;AAAA,oBACjB,CAAC;AACD,mCAAe;AAAA,sBACb,UAAU;AAAA,sBACV,MAAM;AAAA,sBACN,MAAM;AAAA,sBACN,eAAe;AAAA,oBACjB,CAAC;AAAA,kBACH;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,SAAS,QAAQ;AAEnB,oBAAI,YAAY,QAAQ,aAAa,IAAI;AACvC,6BAAW;AACX,sCAAoB;AAAA,gBACtB;AACA,+BAAe;AAAA,kBACb,UAAU;AAAA,kBACV,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN,eAAe;AAAA,gBACjB,CAAC;AAGD,qBAAK,KAAK;AAAA,cACZ;AAAA,YACF;AAAA,UACF;AACA,eAAK,SAAS;AAAA,QAChB;AAAA,QACA,UAAU,SAAS,WAAW;AAC5B,UAAA8B,aAAY,WAAW,IAAI;AAC3B,mBAAS,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,4BAAkB,QAAQ,SAAU,IAAI;AACtC,eAAG,UAAU;AAAA,UACf,CAAC;AACD,4BAAkB,SAAS,SAAS,SAAS;AAAA,QAC/C;AAAA,QACA,aAAa,SAAS,YAAuB,KAAK;AAChD,kBAAQ,IAAI,MAAM;AAAA,YAChB,KAAK;AAAA,YACL,KAAK;AACH,mBAAK,QAAQ,GAAG;AAChB;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACH,kBAAI,QAAQ;AACV,qBAAK,YAAY,GAAG;AACpB,gCAAgB,GAAG;AAAA,cACrB;AACA;AAAA,YACF,KAAK;AACH,kBAAI,eAAe;AACnB;AAAA,UACJ;AAAA,QACF;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA,SAAS,SAASiB,WAAU;AAC1B,cAAI,QAAQ,CAAC,GACX,IACA,WAAW,KAAK,GAAG,UACnBrD,KAAI,GACJU,KAAI,SAAS,QACb,UAAU,KAAK;AACjB,iBAAOV,KAAIU,IAAGV,MAAK;AACjB,iBAAK,SAASA,EAAC;AACf,gBAAI,QAAQ,IAAI,QAAQ,WAAW,KAAK,IAAI,KAAK,GAAG;AAClD,oBAAM,KAAK,GAAG,aAAa,QAAQ,UAAU,KAAK,YAAY,EAAE,CAAC;AAAA,YACnE;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA,MAAM,SAAS,KAAK,OAAO,cAAc;AACvC,cAAI,QAAQ,CAAC,GACXoB,UAAS,KAAK;AAChB,eAAK,QAAQ,EAAE,QAAQ,SAAU,IAAIpB,IAAG;AACtC,gBAAI,KAAKoB,QAAO,SAASpB,EAAC;AAC1B,gBAAI,QAAQ,IAAI,KAAK,QAAQ,WAAWoB,SAAQ,KAAK,GAAG;AACtD,oBAAM,EAAE,IAAI;AAAA,YACd;AAAA,UACF,GAAG,IAAI;AACP,0BAAgB,KAAK,sBAAsB;AAC3C,gBAAM,QAAQ,SAAU,IAAI;AAC1B,gBAAI,MAAM,EAAE,GAAG;AACb,cAAAA,QAAO,YAAY,MAAM,EAAE,CAAC;AAC5B,cAAAA,QAAO,YAAY,MAAM,EAAE,CAAC;AAAA,YAC9B;AAAA,UACF,CAAC;AACD,0BAAgB,KAAK,WAAW;AAAA,QAClC;AAAA;AAAA;AAAA;AAAA,QAIA,MAAM,SAAS,OAAO;AACpB,cAAI,QAAQ,KAAK,QAAQ;AACzB,mBAAS,MAAM,OAAO,MAAM,IAAI,IAAI;AAAA,QACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA,SAAS,SAAS,UAAU,IAAI,UAAU;AACxC,iBAAO,QAAQ,IAAI,YAAY,KAAK,QAAQ,WAAW,KAAK,IAAI,KAAK;AAAA,QACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA,QAAQ,SAASO,QAAOlB,OAAM,OAAO;AACnC,cAAI,UAAU,KAAK;AACnB,cAAI,UAAU,QAAQ;AACpB,mBAAO,QAAQA,KAAI;AAAA,UACrB,OAAO;AACL,gBAAI,gBAAgB,cAAc,aAAa,MAAMA,OAAM,KAAK;AAChE,gBAAI,OAAO,kBAAkB,aAAa;AACxC,sBAAQA,KAAI,IAAI;AAAA,YAClB,OAAO;AACL,sBAAQA,KAAI,IAAI;AAAA,YAClB;AACA,gBAAIA,UAAS,SAAS;AACpB,4BAAc,OAAO;AAAA,YACvB;AAAA,UACF;AAAA,QACF;AAAA;AAAA;AAAA;AAAA,QAIA,SAAS,SAAS6C,WAAU;AAC1B,UAAAlB,aAAY,WAAW,IAAI;AAC3B,cAAI,KAAK,KAAK;AACd,aAAG,OAAO,IAAI;AACd,UAAA9B,KAAI,IAAI,aAAa,KAAK,WAAW;AACrC,UAAAA,KAAI,IAAI,cAAc,KAAK,WAAW;AACtC,UAAAA,KAAI,IAAI,eAAe,KAAK,WAAW;AACvC,cAAI,KAAK,iBAAiB;AACxB,YAAAA,KAAI,IAAI,YAAY,IAAI;AACxB,YAAAA,KAAI,IAAI,aAAa,IAAI;AAAA,UAC3B;AAEA,gBAAM,UAAU,QAAQ,KAAK,GAAG,iBAAiB,aAAa,GAAG,SAAUiD,KAAI;AAC7E,YAAAA,IAAG,gBAAgB,WAAW;AAAA,UAChC,CAAC;AACD,eAAK,QAAQ;AACb,eAAK,0BAA0B;AAC/B,oBAAU,OAAO,UAAU,QAAQ,KAAK,EAAE,GAAG,CAAC;AAC9C,eAAK,KAAK,KAAK;AAAA,QACjB;AAAA,QACA,YAAY,SAAS,aAAa;AAChC,cAAI,CAAC,aAAa;AAChB,YAAAnB,aAAY,aAAa,IAAI;AAC7B,gBAAI,SAAS,cAAe;AAC5B,gBAAI,SAAS,WAAW,MAAM;AAC9B,gBAAI,KAAK,QAAQ,qBAAqB,QAAQ,YAAY;AACxD,sBAAQ,WAAW,YAAY,OAAO;AAAA,YACxC;AACA,0BAAc;AAAA,UAChB;AAAA,QACF;AAAA,QACA,YAAY,SAAS,WAAWV,cAAa;AAC3C,cAAIA,aAAY,gBAAgB,SAAS;AACvC,iBAAK,WAAW;AAChB;AAAA,UACF;AACA,cAAI,aAAa;AACf,YAAAU,aAAY,aAAa,IAAI;AAC7B,gBAAI,SAAS,cAAe;AAG5B,gBAAI,OAAO,cAAc,UAAU,CAAC,KAAK,QAAQ,MAAM,aAAa;AAClE,qBAAO,aAAa,SAAS,MAAM;AAAA,YACrC,WAAW,QAAQ;AACjB,qBAAO,aAAa,SAAS,MAAM;AAAA,YACrC,OAAO;AACL,qBAAO,YAAY,OAAO;AAAA,YAC5B;AACA,gBAAI,KAAK,QAAQ,MAAM,aAAa;AAClC,mBAAK,QAAQ,QAAQ,OAAO;AAAA,YAC9B;AACA,gBAAI,SAAS,WAAW,EAAE;AAC1B,0BAAc;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AA6IA,UAAI,gBAAgB;AAClB,QAAAhC,IAAG,UAAU,aAAa,SAAU,KAAK;AACvC,eAAK,SAAS,UAAU,wBAAwB,IAAI,YAAY;AAC9D,gBAAI,eAAe;AAAA,UACrB;AAAA,QACF,CAAC;AAAA,MACH;AAGA,eAAS,QAAQ;AAAA,QACf,IAAIA;AAAA,QACJ,KAAKE;AAAA,QACL;AAAA,QACA;AAAA,QACA,IAAI,SAAS,GAAG,IAAI,UAAU;AAC5B,iBAAO,CAAC,CAAC,QAAQ,IAAI,UAAU,IAAI,KAAK;AAAA,QAC1C;AAAA,QACA,QAAQM;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAOI;AAAA,QACP,OAAOL;AAAA,QACP,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AAOA,eAAS,MAAM,SAAU,SAAS;AAChC,eAAO,QAAQ,OAAO;AAAA,MACxB;AAMA,eAAS,QAAQ,WAAY;AAC3B,iBAAS,OAAO,UAAU,QAAQwB,WAAU,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AAC1F,UAAAA,SAAQ,IAAI,IAAI,UAAU,IAAI;AAAA,QAChC;AACA,YAAIA,SAAQ,CAAC,EAAE,gBAAgB,MAAO,CAAAA,WAAUA,SAAQ,CAAC;AACzD,QAAAA,SAAQ,QAAQ,SAAUE,SAAQ;AAChC,cAAI,CAACA,QAAO,aAAa,CAACA,QAAO,UAAU,aAAa;AACtD,kBAAM,gEAAgE,OAAO,CAAC,EAAE,SAAS,KAAKA,OAAM,CAAC;AAAA,UACvG;AACA,cAAIA,QAAO,MAAO,UAAS,QAAQ,eAAe,eAAe,CAAC,GAAG,SAAS,KAAK,GAAGA,QAAO,KAAK;AAClG,wBAAc,MAAMA,OAAM;AAAA,QAC5B,CAAC;AAAA,MACH;AAOA,eAAS,SAAS,SAAU,IAAI,SAAS;AACvC,eAAO,IAAI,SAAS,IAAI,OAAO;AAAA,MACjC;AAGA,eAAS,UAAUH;AAEnB,MAAI,cAAc,CAAC;AAAnB,MAGE,YAAY;AAqHd,MAAI,aAAa,SAAS,SAAU,KAAK,SAASd,SAAQ,YAAY;AAEpE,YAAI,CAAC,QAAQ,OAAQ;AACrB,YAAIN,MAAK,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SAC3CC,MAAK,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,SACzC,OAAO,QAAQ,mBACf,QAAQ,QAAQ,aAChB,cAAc,0BAA0B;AAC1C,YAAI,qBAAqB,OACvB;AAGF,YAAI,iBAAiBK,SAAQ;AAC3B,yBAAeA;AACf,2BAAiB;AACjB,qBAAW,QAAQ;AACnB,2BAAiB,QAAQ;AACzB,cAAI,aAAa,MAAM;AACrB,uBAAW,2BAA2BA,SAAQ,IAAI;AAAA,UACpD;AAAA,QACF;AACA,YAAI,YAAY;AAChB,YAAI,gBAAgB;AACpB,WAAG;AACD,cAAI,KAAK,eACP,OAAO,QAAQ,EAAE,GACjB,MAAM,KAAK,KACX,SAAS,KAAK,QACd,OAAO,KAAK,MACZ,QAAQ,KAAK,OACb,QAAQ,KAAK,OACb,SAAS,KAAK,QACd,aAAa,QACb,aAAa,QACb,cAAc,GAAG,aACjB,eAAe,GAAG,cAClB,QAAQ,IAAI,EAAE,GACd,aAAa,GAAG,YAChB,aAAa,GAAG;AAClB,cAAI,OAAO,aAAa;AACtB,yBAAa,QAAQ,gBAAgB,MAAM,cAAc,UAAU,MAAM,cAAc,YAAY,MAAM,cAAc;AACvH,yBAAa,SAAS,iBAAiB,MAAM,cAAc,UAAU,MAAM,cAAc,YAAY,MAAM,cAAc;AAAA,UAC3H,OAAO;AACL,yBAAa,QAAQ,gBAAgB,MAAM,cAAc,UAAU,MAAM,cAAc;AACvF,yBAAa,SAAS,iBAAiB,MAAM,cAAc,UAAU,MAAM,cAAc;AAAA,UAC3F;AACA,cAAI,KAAK,eAAe,KAAK,IAAI,QAAQN,EAAC,KAAK,QAAQ,aAAa,QAAQ,gBAAgB,KAAK,IAAI,OAAOA,EAAC,KAAK,QAAQ,CAAC,CAAC;AAC5H,cAAI,KAAK,eAAe,KAAK,IAAI,SAASC,EAAC,KAAK,QAAQ,aAAa,SAAS,iBAAiB,KAAK,IAAI,MAAMA,EAAC,KAAK,QAAQ,CAAC,CAAC;AAC9H,cAAI,CAAC,YAAY,SAAS,GAAG;AAC3B,qBAASf,KAAI,GAAGA,MAAK,WAAWA,MAAK;AACnC,kBAAI,CAAC,YAAYA,EAAC,GAAG;AACnB,4BAAYA,EAAC,IAAI,CAAC;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AACA,cAAI,YAAY,SAAS,EAAE,MAAM,MAAM,YAAY,SAAS,EAAE,MAAM,MAAM,YAAY,SAAS,EAAE,OAAO,IAAI;AAC1G,wBAAY,SAAS,EAAE,KAAK;AAC5B,wBAAY,SAAS,EAAE,KAAK;AAC5B,wBAAY,SAAS,EAAE,KAAK;AAC5B,0BAAc,YAAY,SAAS,EAAE,GAAG;AACxC,gBAAI,MAAM,KAAK,MAAM,GAAG;AACtB,mCAAqB;AAErB,0BAAY,SAAS,EAAE,MAAM,YAAY,WAAY;AAEnD,oBAAI,cAAc,KAAK,UAAU,GAAG;AAClC,2BAAS,OAAO,aAAa,UAAU;AAAA,gBACzC;AACA,oBAAI,gBAAgB,YAAY,KAAK,KAAK,EAAE,KAAK,YAAY,KAAK,KAAK,EAAE,KAAK,QAAQ;AACtF,oBAAI,gBAAgB,YAAY,KAAK,KAAK,EAAE,KAAK,YAAY,KAAK,KAAK,EAAE,KAAK,QAAQ;AACtF,oBAAI,OAAO,mBAAmB,YAAY;AACxC,sBAAI,eAAe,KAAK,SAAS,QAAQ,WAAW,OAAO,GAAG,eAAe,eAAe,KAAK,YAAY,YAAY,KAAK,KAAK,EAAE,EAAE,MAAM,YAAY;AACvJ;AAAA,kBACF;AAAA,gBACF;AACA,yBAAS,YAAY,KAAK,KAAK,EAAE,IAAI,eAAe,aAAa;AAAA,cACnE,EAAE,KAAK;AAAA,gBACL,OAAO;AAAA,cACT,CAAC,GAAG,EAAE;AAAA,YACR;AAAA,UACF;AACA;AAAA,QACF,SAAS,QAAQ,gBAAgB,kBAAkB,gBAAgB,gBAAgB,2BAA2B,eAAe,KAAK;AAClI,oBAAY;AAAA,MACd,GAAG,EAAE;AAEL,MAAI,OAAO,SAASgC,MAAK,MAAM;AAC7B,YAAI,gBAAgB,KAAK,eACvBN,eAAc,KAAK,aACnBK,UAAS,KAAK,QACd,iBAAiB,KAAK,gBACtB,wBAAwB,KAAK,uBAC7B,qBAAqB,KAAK,oBAC1B,uBAAuB,KAAK;AAC9B,YAAI,CAAC,cAAe;AACpB,YAAI,aAAaL,gBAAe;AAChC,2BAAmB;AACnB,YAAI,QAAQ,cAAc,kBAAkB,cAAc,eAAe,SAAS,cAAc,eAAe,CAAC,IAAI;AACpH,YAAI,SAAS,SAAS,iBAAiB,MAAM,SAAS,MAAM,OAAO;AACnE,6BAAqB;AACrB,YAAI,cAAc,CAAC,WAAW,GAAG,SAAS,MAAM,GAAG;AACjD,gCAAsB,OAAO;AAC7B,eAAK,QAAQ;AAAA,YACX,QAAQK;AAAA,YACR,aAAaL;AAAA,UACf,CAAC;AAAA,QACH;AAAA,MACF;AAEA,aAAO,YAAY;AAAA,QACjB,YAAY;AAAA,QACZ,WAAW,SAAS,UAAU,OAAO;AACnC,cAAIF,qBAAoB,MAAM;AAC9B,eAAK,aAAaA;AAAA,QACpB;AAAA,QACA,SAAS,SAAS,QAAQ,OAAO;AAC/B,cAAIO,UAAS,MAAM,QACjBL,eAAc,MAAM;AACtB,eAAK,SAAS,sBAAsB;AACpC,cAAIA,cAAa;AACf,YAAAA,aAAY,sBAAsB;AAAA,UACpC;AACA,cAAI,cAAc,SAAS,KAAK,SAAS,IAAI,KAAK,YAAY,KAAK,OAAO;AAC1E,cAAI,aAAa;AACf,iBAAK,SAAS,GAAG,aAAaK,SAAQ,WAAW;AAAA,UACnD,OAAO;AACL,iBAAK,SAAS,GAAG,YAAYA,OAAM;AAAA,UACrC;AACA,eAAK,SAAS,WAAW;AACzB,cAAIL,cAAa;AACf,YAAAA,aAAY,WAAW;AAAA,UACzB;AAAA,QACF;AAAA,QACA;AAAA,MACF;AACA,eAAS,QAAQ;AAAA,QACf,YAAY;AAAA,MACd,CAAC;AAED,aAAO,YAAY;AAAA,QACjB,SAAS,SAAS8B,SAAQ,OAAO;AAC/B,cAAIzB,UAAS,MAAM,QACjBL,eAAc,MAAM;AACtB,cAAI,iBAAiBA,gBAAe,KAAK;AACzC,yBAAe,sBAAsB;AACrC,UAAAK,QAAO,cAAcA,QAAO,WAAW,YAAYA,OAAM;AACzD,yBAAe,WAAW;AAAA,QAC5B;AAAA,QACA;AAAA,MACF;AACA,eAAS,QAAQ;AAAA,QACf,YAAY;AAAA,MACd,CAAC;AAkqBD,eAAS,MAAM,IAAI,iBAAiB,CAAC;AACrC,eAAS,MAAM,QAAQ,MAAM;AAE7B,MAAO,uBAAQ;AAAA;AAAA;;;AChzGf;AAAA;AAAA;AAAA;AAEC,OAAC,WAAY;AACZ,cAAM,eAAe,SACnB,EAAE,QAAQ,OAAO,IAAI,EAAE,QAAQ,MAAM,QAAQ,KAAK,GAClD;AACA,iBAAO;AAAA,YACL,MAAM,SAAU,SAAS0B,WAAU;AACjC,mBAAK,WAAW,qBAAS,OAAO,SAAS;AAAA,gBACvC,OAAOA;AAAA,gBACP,WAAW;AAAA,gBACX;AAAA,gBACA;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,eAAe;AAAA,QACxB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACvBH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,oBAAoB,SAAS,wBAAwB;AACzD,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB,UAAU;AAAA,YACV,gBAAgB;AAAA,YAChB,YAAY;AAAA,YACZ,iBAAiB;AAAA,cACf,OAAO;AAAA,cACP,MAAM;AAAA,YACR;AAAA,YACA,MAAM,WAAW;AACf,mBAAK,oBAAoB;AACzB,mBAAK,gBAAgB;AAAA,YACvB;AAAA,YACA,oBAAoB,WAAW;AAC7B,mBAAK,aACH,CAAC,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI,KAAK,IAAI,KAAK,UAAU,IAAI;AAAA,YACtF;AAAA,YACA,0BAA0B,WAAW;AACnC,mBAAK,kBAAkB,KAAK,aAAa,KAAK,gBAAgB,KAAK,cAAc;AAAA,YACnF;AAAA,YACA,qBAAqB,WAAW;AAC9B,kBAAI,KAAK,mBAAmB,MAAM,KAAK,kBAAkB,OAAO,GAAG;AACjE,qBAAK,iBAAiB;AAAA,cACxB,OAAO;AACL,qBAAK,iBAAiB;AAAA,cACxB;AAAA,YACF;AAAA,YACA,iBAAiB,WAAW;AAC1B,kBAAI,KAAK,oBAAoB,GAAG;AAC9B,qBAAK,aAAa;AAAA,cACpB,OAAO;AACL,qBAAK,aAAa,KAAK,kBAAkB,KAAK,gBAAgB,KAAK,cAAc;AAAA,cACnF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,oBAAoB;AAAA,QAC7B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC5CH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,qBAAqB,WAAY;AACrC,iBAAO;AAAA,YACL,qBAAqB,SAAU,SAASC,QAAO;AAC7C,kBAAI,WAAW,QAAQ;AACvB,kBAAI,SAAS,QAAQ;AAErB,0BAAY,SAASA,QAAO,UAAU,MAAM;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,YAAY,SAASA,QAAO,UAAU,QAAQ;AACrD,gBAAM,UAAU,QAAQ;AACxB,gBAAM,sBAAsBA,OAAM,OAAO;AAEzC,UAAAA,OAAM,OAAO,QAAQ;AAErB,kBAAQ,QAAQ,QAAQ,UAAU,GAAG,QAAQ,IAC7B,sBACA,QAAQ,UAAU,QAAQ,QAAQ,MAAM;AAAA,QAC1D;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,qBAAqB;AAAA,QAC9B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC5BH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,eAAe,SAAU,eAAe,eAAe;AAC3D,iBAAO;AAAA,YACL,aAAa,SAAS,eAAe,aAAa;AAAA,YAClD,mBAAmB,SAAUC,IAAG,WAAW;AACzC,oBAAM,QAAQA,GAAE,OAAO;AAEvB,kBAAI,WAAW;AAEf,kBAAI,MAAM,UAAU,GAAG;AACrB,2BAAW,MAAM,CAAC,EAAE;AACpB,2BACE,SAAS,UAAU,gBACf,WACA,SAAS,MAAM,GAAG,gBAAgB,EAAE,IACpC,QACA,SAAS,MAAM,SAAS,SAAS,IAAI,SAAS,MAAM;AAAA,cAC5D,OAAO;AACL,2BAAW,GAAG,MAAM,MAAM;AAAA,cAC5B;AAEA,mBAAK,YAAY,YAAY;AAE7B,wBAAU,iBAAiB,QAAQ;AAAA,YACrC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,eAAe;AAAA,QACxB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACjCH;AAAA;AAAA,OAAC,WAAY;AACX,iBAAS,UAAU,MAAM,SAAS;AAChC,gBAAMC,SAAQ,IAAI;AAAA,YAChB;AAAA,YACA,EAAE,SAAS,MAAM,QAAQ,EAAE,MAAM,QAAQ,EAAE;AAAA,UAC7C;AAEA,mBAAS,KAAK,cAAcA,MAAK;AAAA,QACnC;AAEA,cAAM,kBAAkB,SAAU,gBAAgB,CAAC,GAAG;AACpD,gBAAM,YAAY;AAElB,gBAAM,oBAAoB,mBAAiB;AAAA,YACzC,MAAM,aAAa,CAAC;AAAA,YACpB,SAAS,aAAa,CAAC;AAAA,YACvB,MAAM;AAAA,UACR;AAEA,iBAAO;AAAA,YACL,eAAe,CAAC;AAAA,YAChB,iBAAiB,SAAU,MAAM,SAAS;AACxC,mBAAK,cAAc,KAAK,kBAAkB,CAAC,MAAM,OAAO,CAAC,CAAC;AAC1D,oBAAM,SAAS;AACf,oBAAM,SAAS,KAAK,cAAc,SAAS;AAC3C,yBAAW,MAAM,OAAO,iBAAiB,MAAM,GAAG,SAAS;AAAA,YAC7D;AAAA,YACA,kBAAkB,SAAUC,QAAO;AACjC,mBAAK,cAAcA,MAAK,EAAE,OAAO;AAAA,YACnC;AAAA,YACA,mBAAmB,WAAY;AAC7B,oBAAM,SAAS;AAEf,4BAAc,QAAQ,kBAAgB;AACpC,uBAAO,gBAAgB,aAAa,CAAC,GAAG,aAAa,CAAC,CAAC;AAAA,cACzD,CAAC;AAED,uBAAS,KAAK,iBAAiB,gBAAgB,CAAAD,WAAS;AACtD,sBAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAIA;AAE3B,oBAAI,KAAK,OAAQ,QAAO,gBAAgB,KAAK,QAAQ,KAAK,OAAO;AAAA,cACnE,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,kBAAkB;AACzB,iBAAO,YAAY;AAAA,QACrB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACpDH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,eAAe,SAAUE,SAAQ;AACrC,iBAAO;AAAA,YACL,aAAaA,QAAO;AAAA,YACpB,mBAAmBA,QAAO;AAAA,YAC1B,YAAYA,QAAO;AAAA,YACnB,cAAcA,QAAO;AAAA,YACrB,QAAQA,QAAO;AAAA,YACf,SAASA,QAAO;AAAA,YAChB,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,cAAc;AAAA,YACd,OAAO;AAAA,YAEP,OAAO;AACL,kBAAI,CAAC,KAAK,YAAY;AACpB,wBAAQ,KAAK,0DAA0D;AACvE;AAAA,cACF;AACA,mBAAK,oBAAoB,EACtB,KAAK,MAAM,KAAK,0BAA0B,CAAC,EAC3C,KAAK,MAAM,KAAK,kBAAkB,CAAC,EACnC,MAAM,CAAC,UAAU;AAChB,qBAAK,QACH,uGACmB,MAAM,OAAO;AAAA,cACpC,CAAC;AAAA,YACL;AAAA,YAEA,sBAAsB;AACpB,qBAAO,IAAI,QAAQ,CAACC,UAAS,WAAW;AACtC,oBAAI,OAAO,UAAU,OAAO,OAAO,UAAU;AAC3C,kBAAAA,SAAQ;AACR;AAAA,gBACF;AAEA,sBAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,uBAAO,MAAM;AACb,uBAAO,QAAQ;AACf,uBAAO,SAASA;AAChB,uBAAO,UAAU,MAAM;AACrB,yBAAO,IAAI,MAAM,kCAAkC,CAAC;AAAA,gBACtD;AACA,yBAAS,KAAK,YAAY,MAAM;AAAA,cAClC,CAAC;AAAA,YACH;AAAA,YAEA,4BAA4B;AAC1B,mBAAK,kBAAkB,IAAI,OAAO,SAAS,IAAI,eAAe;AAAA,gBAC5D,aAAa,KAAK;AAAA,cACpB,CAAC;AAAA,YACH;AAAA,YAEA,2BAA2B;AACzB,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,YAAY;AAAA,kBACV,oBAAoB,CAAC,YAAY,gBAAgB;AAAA,kBACjD,qBAAqB,CAAC,QAAQ,YAAY,cAAc,MAAM;AAAA,gBAChE;AAAA,cACF;AAAA,YACF;AAAA,YAEA,+BAA+B;AAC7B,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,YAAY;AAAA,kBACV,SAAS;AAAA,kBACT,mBAAmB,KAAK;AAAA,gBAC1B;AAAA,cACF;AAAA,YACF;AAAA,YAEA,uBAAuB;AACrB,qBAAO,OAAO,OAAO,CAAC,GAAG,KAAK,yBAAyB,GAAG;AAAA,gBACxD,2BAA2B,KAAK,6BAA6B;AAAA,cAC/D,CAAC;AAAA,YACH;AAAA,YAEA,oBAAoB;AAClB,oBAAM,sBAAsB;AAAA,gBAC1B,YAAY;AAAA,gBACZ,iBAAiB;AAAA,gBACjB,uBAAuB,CAAC,KAAK,yBAAyB,CAAC;AAAA,cACzD;AAEA,qBAAO,KAAK,gBACT,aAAa,mBAAmB,EAChC,KAAK,CAAC,aAAa;AAClB,oBAAI,SAAS,QAAQ;AACnB,uBAAK,UAAU;AACf,uBAAK,UAAU,MAAM;AACnB,yBAAK,mBAAmB;AAAA,kBAC1B,CAAC;AAAA,gBACH;AAAA,cACF,CAAC,EACA,MAAM,MAAM;AACX,wBAAQ,IAAI,iCAAiC;AAAA,cAC/C,CAAC;AAAA,YACL;AAAA,YAEA,qBAAqB;AACnB,oBAAM,kBAAkB,KAAK,MAAM;AAEnC,kBAAI,CAAC,gBAAiB;AAEtB,oBAAM,SAAS,KAAK,gBAAgB,aAAa;AAAA,gBAC/C,SAAS,MAAM,KAAK,6BAA6B;AAAA,gBACjD,aAAa;AAAA,gBACb,YAAY;AAAA,gBACZ,gBAAgB;AAAA,cAClB,CAAC;AAED,8BAAgB,YAAY,MAAM;AAAA,YACpC;AAAA,YAEA,wBAAwB;AACtB,oBAAM,qBAAqB;AAAA,gBACzB,YAAY;AAAA,gBACZ,iBAAiB;AAAA,gBACjB,uBAAuB,CAAC,KAAK,qBAAqB,CAAC;AAAA,gBACnD,iBAAiB;AAAA,kBACf,kBAAkB;AAAA,kBAClB,YAAY,KAAK;AAAA,kBACjB,cAAc;AAAA,kBACd,aAAa;AAAA,gBACf;AAAA,gBACA,cAAc;AAAA,kBACZ,cAAc,KAAK;AAAA,gBACrB;AAAA,cACF;AAEA,kBAAI,KAAK,gBAAgB,gBAAgB,KAAK,YAAY;AACxD,mCAAmB,aAAa,aAAa,KAAK;AAAA,cACpD;AAEA,qBAAO;AAAA,YACT;AAAA,YAEA,+BAA+B;AAC7B,oBAAM,qBAAqB,KAAK,sBAAsB;AAEtD,mBAAK,gBACF,gBAAgB,kBAAkB,EAClC,KAAK,CAAC,gBAAgB,KAAK,eAAe,WAAW,CAAC,EACtD,MAAM,CAAC,UAAU;AAChB,oBAAI,MAAM,eAAe,YAAY;AACnC,uBAAK,QAAQ;AAAA,gBACf;AAAA,cACF,CAAC;AAAA,YACL;AAAA,YAEA,eAAe,aAAa;AAC1B,mBAAK,eAAe;AACpB,mBAAK,QAAQ;AAEb,kBAAI;AAGF,sBAAM,iBAAiB,YAAY,kBAAkB,iBAAiB;AAGtE,qBAAK,MAAM,cAAc;AAEzB,sBAAM,WAAW,IAAI,SAAS;AAC9B,yBAAS,OAAO,oBAAoB,cAAc;AAElD,sBAAM,eAAe,2BAA2B,KAAK,OAAO;AAE5D,sBAAM,UAAU,IAAI,aAAa,QAAQ,cAAc;AAAA,kBACrD,MAAM;AAAA,kBACN,cAAc;AAAA,gBAChB,CAAC;AAED,wBACG,QAAQ,EACR,KAAK,CAAC,aAAa;AAClB,sBAAI,CAAC,SAAS,IAAI;AAChB,yBAAK,QAAQ;AACb,yBAAK,eAAe;AAAA,kBACtB;AAAA,gBACF,CAAC,EACA,MAAM,MAAM;AACX,uBAAK,QAAQ;AACb,uBAAK,eAAe;AAAA,gBACtB,CAAC;AAAA,cACL,SAAS,OAAO;AACd,qBAAK,QACH,sFACmB,MAAM,OAAO;AAClC,qBAAK,eAAe;AAAA,cACtB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,eAAe;AAAA,QACxB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACzMH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAMC,2BAA0B;AAAA,UAC9B,WAAW,CAAC;AAAA,UAEZ,SAASC,OAAM,eAAe;AAC5B,iBAAK,UAAUA,KAAI,IAAI;AACvB,oBAAQ,IAAI,uCAAkCA,KAAI,EAAE;AAAA,UACtD;AAAA,UAEA,OAAOA,OAAMC,SAAQ;AACnB,kBAAM,gBAAgB,KAAK,UAAUD,KAAI;AACzC,gBAAI,CAAC,eAAe;AAClB,oBAAM,IAAI,MAAM,qBAAqBA,KAAI,aAAa;AAAA,YACxD;AACA,mBAAO,IAAI,cAAcC,OAAM;AAAA,UACjC;AAAA,UAEA,YAAYD,OAAM;AAChB,mBAAO,CAAC,CAAC,KAAK,UAAUA,KAAI;AAAA,UAC9B;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,0BAA0BD;AAAA,QACnC;AAEA,eAAOA;AAAA,MACT,GAAG;AAAA;AAAA;;;AC3BH;AAAA;AAAC,OAAC,WAAY;AACZ,YAAI,uBAAuB;AAC3B,YAAI,oBAAoB;AAExB,cAAM,kBAAkB,SAAUG,SAAQ;AACxC,iBAAO;AAAA,YACL,WAAW,CAAC;AAAA,YACZ,gBAAgB;AAAA,YAChB,OAAOA,QAAO,SAAS;AAAA,YACvB,SAAS;AAAA,YACT,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,YAMd,oBAAoB,cAAc,cAAc,iBAAiB;AAC/D,oBAAM,yBAAyB,kBAAkB,YAAY,KAAK,CAAC;AACnE,qBAAO;AAAA,gBACL,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YAEA,MAAM,OAAO;AACX,kCAAoB;AAEpB,kBAAIA,QAAO,iBAAiB;AAC1B,qBAAK,kBAAkBA,QAAO;AAAA,cAChC;AAEA,kBAAI,CAAC,sBAAsB;AACzB,uBAAO,iBAAiB,sBAAsB,MAAM;AAClD,sBAAI,mBAAmB;AACrB,sCAAkB,eAAe;AACjC,sCAAkB,YAAY,MAAM;AAAA,oBAAC,CAAC;AAAA,kBACxC;AAAA,gBACF,CAAC;AAED,uBAAO,iBAAiB,qBAAqB,MAAM;AACjD,sBAAI,mBAAmB;AACrB,sCAAkB,eAAe;AACjC,sCAAkB,YAAY,MAAM;AAAA,oBAAC,CAAC;AAAA,kBACxC;AAAA,gBACF,CAAC;AAED,uBAAO,iBAAiB,iBAAiB,CAACC,OAAM;AAC9C,sBAAI,mBAAmB;AACrB,sCAAkB,eAAe;AACjC,sCAAkB,QAAQA,GAAE,QAAQ,SAAS;AAC7C,sCAAkB,YAAY,MAAM;AAAA,oBAAC,CAAC;AAAA,kBACxC;AAAA,gBACF,CAAC;AAED,uCAAuB;AAAA,cACzB;AAEA,kBAAI;AACF,oBAAI,MAAM,QAAQD,QAAO,SAAS,GAAG;AACnC,wBAAM,KAAK;AAAA,oBACTA,QAAO;AAAA,oBACPA,QAAO,gBAAgB,CAAC;AAAA,oBACxBA,QAAO,mBAAmB,CAAC;AAAA,kBAC7B;AAAA,gBACF,OAAO;AACL,wBAAM,KAAK,yBAAyBA,QAAO,UAAUA,QAAO,MAAM;AAAA,gBACpE;AAAA,cACF,SAAS,OAAO;AACd,qBAAK,QAAQ,MAAM;AAAA,cACrB;AAAA,YACF;AAAA;AAAA;AAAA;AAAA,YAKA,sBAAsB,cAAc,cAAc;AAEhD,kBAAI,iBAAiB,gBAAgB,CAAC,aAAa,YAAY;AAC7D,wBAAQ,KAAK,aAAa,YAAY,iDAAiD;AACvF,uBAAO;AAAA,cACT;AAEA,kBAAI,iBAAiB,eAAe,CAAC,aAAa,oBAAoB;AACpE,wBAAQ;AAAA,kBACN,aAAa,YAAY;AAAA,gBAC3B;AACA,uBAAO;AAAA,cACT;AACA,qBAAO;AAAA,YACT;AAAA,YAEA,MAAM,4BAA4B,eAAe,cAAc,iBAAiB;AAC9E,oBAAM,WAAW,cAAc,IAAI,OAAO,iBAAiB;AACzD,oBAAI;AACF,wBAAM,oBAAoB,CAAC,WAAW,UAAU;AAC9C,yBAAK,UAAU,YAAY,EAAE,SAAS,IAAI;AAC1C,yBAAK,SAAS,IAAI;AAAA,kBACpB;AAGA,wBAAM,eAAe,KAAK;AAAA,oBACxB;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF;AAGA,sBAAI,CAAC,KAAK,sBAAsB,cAAc,YAAY,GAAG;AAC3D,yBAAK,UAAU,YAAY,IAAI;AAAA,sBAC7B,UAAU;AAAA,sBACV,SAAS;AAAA,sBACT,OAAO,aAAa,YAAY;AAAA,oBAClC;AACA;AAAA,kBACF;AAEA,wBAAM,WAAW,wBAAwB,OAAO,cAAc;AAAA,oBAC5D,GAAG;AAAA,oBACH;AAAA,oBACA,UAAUA,QAAO;AAAA,oBACjB,iBAAiBA,QAAO;AAAA,kBAC1B,CAAC;AACD,wBAAM,SAAS,KAAK;AACpB,uBAAK,UAAU,YAAY,IAAI;AAAA,oBAC7B,UAAU;AAAA,oBACV,SAAS,SAAS;AAAA,oBAClB,cAAc;AAAA,oBACd,OAAO;AAAA,kBACT;AAAA,gBACF,SAAS,OAAO;AACd,0BAAQ,MAAM,wBAAwB,YAAY,KAAK,KAAK;AAC5D,uBAAK,UAAU,YAAY,IAAI;AAAA,oBAC7B,UAAU;AAAA,oBACV,SAAS;AAAA,oBACT,OAAO,MAAM;AAAA,kBACf;AAAA,gBACF;AAAA,cACF,CAAC;AAED,oBAAM,QAAQ,IAAI,QAAQ;AAC1B,mBAAK,UAAU,OAAO,OAAO,KAAK,SAAS,EAAE,KAAK,CAACE,OAAMA,GAAE,OAAO;AAElE,kBAAI,KAAK,WAAW;AAClB,qBAAK,UAAU,MAAM;AACnB,uBAAK,aAAa;AAAA,gBACpB,CAAC;AAAA,cACH,OAAO;AACL,2BAAW,MAAM,KAAK,aAAa,GAAG,CAAC;AAAA,cACzC;AAAA,YACF;AAAA,YAEA,MAAM,yBAAyB,cAAcF,SAAQ;AACnD,oBAAM,oBAAoB,CAAC,WAAW,UAAU;AAC9C,qBAAK,UAAU,YAAY,EAAE,SAAS,IAAI;AAC1C,qBAAK,SAAS,IAAI;AAAA,cACpB;AAEA,oBAAM,WAAW,wBAAwB,OAAO,cAAc;AAAA,gBAC5D,GAAGA;AAAA,gBACH,MAAM;AAAA,gBACN;AAAA,gBACA,UAAUA,QAAO,YAAY;AAAA,gBAC7B,iBAAiBA,QAAO;AAAA,cAC1B,CAAC;AACD,oBAAM,SAAS,KAAK;AACpB,mBAAK,UAAU,YAAY,IAAI;AAAA,gBAC7B,UAAU;AAAA,gBACV,SAAS,SAAS;AAAA,gBAClB,cAAc;AAAA,gBACd,OAAO;AAAA,cACT;AACA,mBAAK,iBAAiB;AACtB,mBAAK,UAAU,SAAS;AAExB,kBAAI,KAAK,WAAW;AAClB,qBAAK,UAAU,MAAM;AACnB,uBAAK,aAAa;AAAA,gBACpB,CAAC;AAAA,cACH,OAAO;AACL,2BAAW,MAAM,KAAK,aAAa,GAAG,CAAC;AAAA,cACzC;AAAA,YACF;AAAA,YAEA,kBAAkB,cAAc;AAC9B,kBAAI,KAAK,UAAU,YAAY,GAAG;AAChC,qBAAK,iBAAiB;AAAA,cACxB;AAAA,YACF;AAAA,YAEA,oBAAoB;AAClB,qBAAO,KAAK,UAAU,KAAK,cAAc,GAAG;AAAA,YAC9C;AAAA,YAEA,cAAc,OAAO;AACnB,mBAAK,eAAe;AAAA,YACtB;AAAA,YAEA,eAAe;AACb,kBAAI,KAAK,UAAU,YAAY,WAAW,KAAK,UAAU,YAAY,UAAU;AAC7E,sBAAM,YAAY,SAAS,cAAc,2BAA2B;AACpE,oBAAI,aAAa,CAAC,UAAU,cAAc,QAAQ,GAAG;AACnD,wBAAMG,QAAO;AACb,uBAAK,UAAU,WAAW,SAAS,aAAa,WAAW,iBAAkB;AAC3E,0BAAM,KAAK,uBAAuB;AAAA,kBACpC,CAAC;AAAA,gBACH;AAAA,cACF;AAGA,kBAAI,KAAK,UAAU,WAAW,WAAW,KAAK,UAAU,WAAW,UAAU;AAC3E,sBAAM,YAAY,SAAS,cAAc,0BAA0B;AACnE,oBAAI,aAAa,CAAC,UAAU,cAAc,QAAQ,GAAG;AACnD,wBAAMA,QAAO;AACb,uBAAK,UAAU,UAAU,SAAS,aAAa,WAAW,iBAAkB;AAC1E,0BAAM,KAAK,uBAAuB;AAAA,kBACpC,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YASF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,kBAAkB;AAAA,QAC3B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC5OH;AAAA;AAAC,OAAC,WAAY;AAAA,QACZ,MAAMC,cAAa;AAAA,UACjB,YAAYC,SAAQ;AAClB,gBAAIA,QAAO,aAAa,YAAY,CAACA,QAAO,YAAY;AACtD,oBAAM,IAAI,MAAM,6CAA6C;AAAA,YAC/D;AAEA,iBAAK,OAAOA,QAAO;AACnB,iBAAK,cAAcA,QAAO;AAC1B,iBAAK,eAAeA,QAAO;AAC3B,iBAAK,SAASA,QAAO;AACrB,iBAAK,UAAUA,QAAO;AACtB,iBAAK,aAAaA,QAAO;AACzB,iBAAK,UAAU;AACf,iBAAK,eAAe;AACpB,iBAAK,QAAQ;AACb,iBAAK,WAAWA,QAAO,YAAY;AACnC,iBAAK,kBAAkBA,QAAO,mBAAmB;AAGjD,iBAAK,oBAAoBA,QAAO,sBAAsB,MAAM;AAAA,YAAC;AAAA,UAC/D;AAAA,UAEA,MAAM,OAAO;AACX,kBAAM,IAAI,MAAM,wCAAwC;AAAA,UAC1D;AAAA,UAEA,MAAM,eAAe,aAAa;AAChC,kBAAM,IAAI,MAAM,kDAAkD;AAAA,UACpE;AAAA,UAEA,MAAM,cAAc,OAAO;AACzB,gBAAI;AACF,mBAAK,eAAe;AACpB,mBAAK,QAAQ;AAGb,mBAAK,kBAAkB,gBAAgB,IAAI;AAG3C,qBAAO;AAAA,gBACL,IAAI,YAAY,sBAAsB,EAAE,QAAQ,EAAE,UAAU,KAAK,KAAK,EAAE,CAAC;AAAA,cAC3E;AAEA,oBAAM,WAAW,IAAI,SAAS;AAC9B,uBAAS,OAAO,SAAS,KAAK;AAE9B,oBAAM,MAAM,GAAG,KAAK,UAAU,aAAa,KAAK,IAAI;AAEpD,oBAAM,UAAU,IAAI,aAAa,QAAQ,KAAK;AAAA,gBAC5C,MAAM;AAAA,gBACN,cAAc;AAAA,cAChB,CAAC;AAED,oBAAM,WAAW,MAAM,QAAQ,QAAQ;AAEvC,kBAAI,CAAC,SAAS,IAAI;AAChB,qBAAK,QAAQ;AACb,qBAAK,eAAe;AACpB,qBAAK,kBAAkB,gBAAgB,KAAK;AAC5C,uBAAO;AAAA,kBACL,IAAI,YAAY,iBAAiB,EAAE,QAAQ,EAAE,UAAU,KAAK,MAAM,OAAO,KAAK,MAAM,EAAE,CAAC;AAAA,gBACzF;AACA,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT,SAAS,OAAO;AACd,mBAAK,QACH,sFACmB,MAAM,OAAO;AAClC,mBAAK,eAAe;AACpB,mBAAK,kBAAkB,gBAAgB,KAAK;AAC5C,qBAAO;AAAA,gBACL,IAAI,YAAY,iBAAiB,EAAE,QAAQ,EAAE,UAAU,KAAK,MAAM,OAAO,KAAK,MAAM,EAAE,CAAC;AAAA,cACzF;AACA,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,eAAeD;AAAA,QACxB;AAEA,eAAOA;AAAA,MACT,GAAG;AAAA;AAAA;;;ACtFH;AAAA;AAAC,OAAC,WAAY;AAAA,QACZ,MAAME,2BAA0B,aAAa;AAAA,UAC3C,YAAYC,SAAQ;AAClB,kBAAMA,OAAM;AACZ,iBAAK,oBAAoBA,QAAO;AAChC,iBAAK,aAAaA,QAAO;AACzB,iBAAK,kBAAkB;AAAA,UACzB;AAAA,UAEA,MAAM,OAAO;AACX,gBAAI;AACF,oBAAM,KAAK,oBAAoB;AAC/B,mBAAK,0BAA0B;AAC/B,oBAAM,KAAK,kBAAkB;AAAA,YAC/B,SAAS,OAAO;AACd,mBAAK,QACH,wGACmB,MAAM,OAAO;AAClC,oBAAM;AAAA,YACR;AAAA,UACF;AAAA,UAEA,sBAAsB;AACpB,mBAAO,IAAI,QAAQ,CAACC,UAAS,WAAW;AACtC,kBAAI,OAAO,UAAU,OAAO,OAAO,UAAU;AAC3C,gBAAAA,SAAQ;AACR;AAAA,cACF;AAEA,oBAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,qBAAO,MAAM;AACb,qBAAO,QAAQ;AACf,qBAAO,SAASA;AAChB,qBAAO,UAAU,MAAM;AACrB,uBAAO,IAAI,MAAM,kCAAkC,CAAC;AAAA,cACtD;AACA,uBAAS,KAAK,YAAY,MAAM;AAAA,YAClC,CAAC;AAAA,UACH;AAAA,UAEA,4BAA4B;AAC1B,iBAAK,kBAAkB,IAAI,OAAO,SAAS,IAAI,eAAe;AAAA,cAC5D,aAAa,KAAK;AAAA,YACpB,CAAC;AAAA,UACH;AAAA,UAEA,2BAA2B;AACzB,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,YAAY;AAAA,gBACV,oBAAoB,CAAC,YAAY,gBAAgB;AAAA,gBACjD,qBAAqB,CAAC,QAAQ,YAAY,cAAc,MAAM;AAAA,cAChE;AAAA,YACF;AAAA,UACF;AAAA,UAEA,+BAA+B;AAC7B,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,YAAY;AAAA,gBACV,SAAS;AAAA,gBACT,mBAAmB,KAAK;AAAA,cAC1B;AAAA,YACF;AAAA,UACF;AAAA,UAEA,uBAAuB;AACrB,mBAAO,OAAO,OAAO,CAAC,GAAG,KAAK,yBAAyB,GAAG;AAAA,cACxD,2BAA2B,KAAK,6BAA6B;AAAA,YAC/D,CAAC;AAAA,UACH;AAAA,UAEA,MAAM,oBAAoB;AACxB,kBAAM,sBAAsB;AAAA,cAC1B,YAAY;AAAA,cACZ,iBAAiB;AAAA,cACjB,uBAAuB,CAAC,KAAK,yBAAyB,CAAC;AAAA,YACzD;AAEA,gBAAI;AACF,oBAAM,WAAW,MAAM,KAAK,gBAAgB,aAAa,mBAAmB;AAC5E,kBAAI,SAAS,QAAQ;AACnB,qBAAK,UAAU;AAAA,cACjB;AAAA,YACF,SAAS,OAAO;AAAA,YAEhB;AAAA,UACF;AAAA,UAEA,wBAAwB;AACtB,kBAAM,qBAAqB;AAAA,cACzB,YAAY;AAAA,cACZ,iBAAiB;AAAA,cACjB,uBAAuB,CAAC,KAAK,qBAAqB,CAAC;AAAA,cACnD,iBAAiB;AAAA,gBACf,kBAAkB;AAAA,gBAClB,YAAY,KAAK;AAAA,gBACjB,cAAc;AAAA,gBACd,aAAa;AAAA,cACf;AAAA,cACA,cAAc;AAAA,gBACZ,cAAc,KAAK;AAAA,cACrB;AAAA,YACF;AAEA,gBAAI,KAAK,gBAAgB,gBAAgB,KAAK,YAAY;AACxD,iCAAmB,aAAa,aAAa,KAAK;AAAA,YACpD;AAEA,mBAAO;AAAA,UACT;AAAA,UAEA,MAAM,yBAAyB;AAC7B,kBAAM,qBAAqB,KAAK,sBAAsB;AAEtD,gBAAI;AACF,oBAAM,cAAc,MAAM,KAAK,gBAAgB,gBAAgB,kBAAkB;AACjF,oBAAM,KAAK,eAAe,WAAW;AAAA,YACvC,SAAS,OAAO;AACd,kBAAI,MAAM,eAAe,YAAY;AACnC,qBAAK,QAAQ;AAAA,cACf;AAAA,YACF;AAAA,UACF;AAAA,UAEA,MAAM,eAAe,aAAa;AAChC,gBAAI;AACF,oBAAM,iBAAiB,YAAY,kBAAkB,iBAAiB;AAGtE,mBAAK,MAAM,cAAc;AAEzB,kBAAI,KAAK,aAAa,UAAU,KAAK,iBAAiB;AACpD,qBAAK,gBAAgB,gBAAgB,KAAK,IAAI;AAAA,cAChD,OAAO;AACL,sBAAM,KAAK,cAAc,cAAc;AAAA,cACzC;AAAA,YACF,SAAS,OAAO;AACd,mBAAK,QACH,sFACmB,MAAM,OAAO;AAClC,mBAAK,eAAe;AAAA,YACtB;AAAA,UACF;AAAA,UAEA,aAAa,WAAW,SAAS;AAC/B,gBAAI,CAAC,aAAa,CAAC,KAAK,gBAAiB;AAEzC,kBAAMC,QAAO;AACb,kBAAM,SAAS,KAAK,gBAAgB,aAAa;AAAA,cAC/C,SAAS,YAAY;AACnB,sBAAM,SAAS,KAAKA,KAAI;AAAA,cAC1B;AAAA,cACA,aAAa;AAAA,cACb,YAAY;AAAA,cACZ,gBAAgB;AAAA,YAClB,CAAC;AAGD,mBAAO,MAAM,QAAQ;AACrB,mBAAO,MAAM,SAAS;AACtB,mBAAO,MAAM,YAAY;AAEzB,sBAAU,YAAY,MAAM;AAAA,UAC9B;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,oBAAoBH;AAAA,QAC7B;AAEA,eAAOA;AAAA,MACT,GAAG;AAAA;AAAA;;;AC5KH;AAAA;AAAC,OAAC,WAAY;AAAA,QACZ,MAAMI,0BAAyB,aAAa;AAAA,UAC1C,YAAYC,SAAQ;AAClB,kBAAMA,OAAM;AACZ,iBAAK,qBAAqBA,QAAO;AACjC,iBAAK,wBAAwBA,QAAO;AACpC,iBAAK,cAAcA,QAAO,eAAe;AACzC,iBAAK,eAAeA,QAAO,gBAAgB;AAC3C,iBAAK,oBAAoBA,QAAO,qBAAqB;AAAA,cACnD;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AACA,iBAAK,uBAAuBA,QAAO,wBAAwB,CAAC,aAAa;AAAA,UAC3E;AAAA,UAEA,MAAM,OAAO;AACX,kBAAM,KAAK,0BAA0B;AAAA,UACvC;AAAA,UAEA,MAAM,4BAA4B;AAChC,gBAAI,CAAC,OAAO,iBAAiB;AAC3B,mBAAK,UAAU;AACf,mBAAK,QAAQ;AACb;AAAA,YACF;AAEA,gBAAI;AACF,kBAAI,CAAC,gBAAgB,gBAAgB,GAAG;AACtC,qBAAK,UAAU;AACf,qBAAK,QAAQ;AACb;AAAA,cACF;AAEA,mBAAK,UAAU;AAAA,YACjB,SAAS,OAAO;AACd,mBAAK,UAAU;AAEf,kBAAI,MAAM,SAAS,sBAAsB;AACvC,qBAAK,QAAQ;AAAA,cACf,OAAO;AACL,qBAAK,QAAQ,+BAA+B,MAAM,OAAO;AAAA,cAC3D;AAAA,YACF;AAAA,UACF;AAAA,UAEA,oBAAoB;AAClB,mBAAO;AAAA,cACL,aAAa,KAAK;AAAA,cAClB,cAAc,KAAK;AAAA,cACnB,mBAAmB,KAAK;AAAA,cACxB,sBAAsB,KAAK;AAAA,cAC3B,OAAO;AAAA,gBACL,OAAO,KAAK;AAAA,gBACZ,QAAQ,KAAK;AAAA,gBACb,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,UAEA,MAAM,yBAAyB;AAC7B,gBAAI;AACF,oBAAM,iBAAiB,KAAK,kBAAkB;AAC9C,oBAAMC,WAAU,IAAI,gBAAgB,GAAG,cAAc;AAErD,cAAAA,SAAQ,qBAAqB,OAAOC,WAAU;AAC5C,oBAAI;AAEF,wBAAM,kBAAkB,MAAM,KAAK,iBAAiBA,OAAM,aAAa;AACvE,kBAAAD,SAAQ,2BAA2B,eAAe;AAAA,gBACpD,SAAS,OAAO;AACd,0BAAQ,MAAM,+BAA+B,KAAK;AAClD,kBAAAA,SAAQ,MAAM;AACd,uBAAK,QAAQ;AAAA,gBACf;AAAA,cACF;AAEA,cAAAA,SAAQ,sBAAsB,OAAOC,WAAU;AAC7C,oBAAI;AACF,wBAAM,UAAU,MAAM,KAAK,eAAeA,OAAM,OAAO;AAEvD,sBAAI,SAAS;AACX,oBAAAD,SAAQ,gBAAgB,gBAAgB,cAAc;AAAA,kBACxD,OAAO;AACL,oBAAAA,SAAQ,gBAAgB,gBAAgB,cAAc;AAAA,kBACxD;AAAA,gBACF,SAAS,OAAO;AACd,0BAAQ,MAAM,8BAA8B,KAAK;AACjD,kBAAAA,SAAQ,gBAAgB,gBAAgB,cAAc;AACtD,uBAAK,QAAQ;AAAA,gBACf;AAAA,cACF;AAEA,cAAAA,SAAQ,WAAW,MAAM;AAEvB,qBAAK,eAAe;AACpB,qBAAK,kBAAkB,gBAAgB,KAAK;AAAA,cAC9C;AAEA,cAAAA,SAAQ,MAAM;AAAA,YAChB,SAAS,OAAO;AACd,mBAAK,QAAQ;AACb,sBAAQ,MAAM,oBAAoB,KAAK;AAAA,YACzC;AAAA,UACF;AAAA,UAEA,MAAM,iBAAiB,eAAe;AAGpC,gBAAI,CAAC,KAAK,uBAAuB;AAC/B,oBAAM,IAAI,MAAM,mDAAmD;AAAA,YACrE;AAEA,gBAAI;AACF,oBAAM,WAAW,IAAI,SAAS;AAC9B,uBAAS,OAAO,kBAAkB,aAAa;AAC/C,uBAAS,OAAO,uBAAuB,KAAK,kBAAkB;AAE9D,oBAAM,MAAM,KAAK;AAEjB,oBAAM,UAAU,IAAI,aAAa,QAAQ,KAAK;AAAA,gBAC5C,MAAM;AAAA,gBACN,cAAc;AAAA,cAChB,CAAC;AAED,oBAAM,WAAW,MAAM,QAAQ,QAAQ;AAEvC,kBAAI,CAAC,SAAS,IAAI;AAChB,sBAAM,IAAI,MAAM,4BAA4B;AAAA,cAC9C;AAEA,qBAAO,SAAS;AAAA,YAClB,SAAS,OAAO;AACd,sBAAQ,MAAM,8BAA8B,KAAK;AACjD,oBAAM;AAAA,YACR;AAAA,UACF;AAAA,UAEA,MAAM,eAAe,SAAS;AAC5B,gBAAI;AAEF,oBAAM,cAAc,QAAQ,MAAM;AAGlC,oBAAM,oBAAoB,KAAK,UAAU,WAAW;AACpD,oBAAM,oBAAoB,KAAK,iBAAiB;AAIhD,oBAAM,aAAa;AAAA,gBACjB,gBAAgB;AAAA,gBAChB,WAAW;AAAA,cACb;AAEA,oBAAM,QAAQ,KAAK,UAAU,UAAU;AAEvC,kBAAI,KAAK,aAAa,UAAU,KAAK,iBAAiB;AACpD,qBAAK,gBAAgB,OAAO,KAAK,IAAI;AACrC,uBAAO;AAAA,cACT,OAAO;AACL,uBAAO,MAAM,KAAK,cAAc,KAAK;AAAA,cACvC;AAAA,YACF,SAAS,OAAO;AACd,mBAAK,QACH,sFACmB,MAAM,OAAO;AAClC,mBAAK,eAAe;AACpB,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,UAEA,aAAa,WAAW,SAAS;AAC/B,gBAAI,CAAC,aAAa,CAAC,KAAK,QAAS;AAEjC,kBAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,mBAAO,YAAY;AACnB,mBAAO,OAAO;AACd,mBAAO,OAAO;AAGd,mBAAO,MAAM,QAAQ;AACrB,mBAAO,MAAM,SAAS;AACtB,mBAAO,MAAM,YAAY;AAGzB,mBAAO,MAAM,YAAY,2BAA2B,eAAe;AACnE,mBAAO,MAAM,YAAY,oBAAoB,QAAQ,WAAW;AAChE,mBAAO,MAAM,YAAY,UAAU,kBAAkB,WAAW;AAEhE,kBAAME,QAAO;AACb,mBAAO,iBAAiB,SAAS,YAAY;AAC3C,oBAAM,SAAS,KAAKA,KAAI;AAAA,YAC1B,CAAC;AAED,sBAAU,YAAY,MAAM;AAAA,UAC9B;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,mBAAmBJ;AAAA,QAC5B;AAEA,eAAOA;AAAA,MACT,GAAG;AAAA;AAAA;;;AC5MH;AAAA;AAAC,OAAC,WAAY;AAEZ,YAAI,OAAO,WAAW,eAAe,OAAO,yBAAyB;AAEnE,cAAI,OAAO,mBAAmB;AAC5B,oCAAwB,SAAS,cAAc,iBAAiB;AAAA,UAClE;AAGA,cAAI,OAAO,kBAAkB;AAC3B,oCAAwB,SAAS,aAAa,gBAAgB;AAAA,UAChE;AAAA,QAIF;AAAA,MACF,GAAG;AAAA;AAAA;;;AChBH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,wBAAwB,WAAY;AACxC,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,kBAAkB;AAAA,YAClB,gBAAgB;AAAA,YAChB,MAAM,KAAK,SAAS;AAClB,mBAAK,mBAAmB,MAAM,sBAAsB,OAAO;AAC3D,mBAAK,iBAAiB,MAAM,oBAAoB,OAAO;AAEvD,mBAAK,OAAO,KAAK,oBAAoB,KAAK;AAAA,YAC5C;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,sBAAsB,SAAS;AACtC,iBAAO,MAAM,wBAAwB,OAAO,iBAAiB;AAAA,YAC3D,QAAQ;AAAA,UACV,CAAC,EAAE,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,UAAQ;AAAE,mBAAO,KAAK;AAAA,UAAkB,CAAC;AAAA,QACnD;AAEA,iBAAS,oBAAoB,SAAS;AACpC,iBAAO,MAAM,qBAAqB,OAAO,iBAAiB;AAAA,YACxD,QAAQ;AAAA,UACV,CAAC,EAAE,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,UAAQ;AAAE,mBAAO,KAAK;AAAA,UAAkB,CAAC;AAAA,QACnD;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,wBAAwB;AAAA,QACjC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AClCH;AAAA;AAAA,aAAO,4BAA4B,WAAW;AAC5C,eAAO;AAAA,UACL,kBAAkB;AAAA,UAClB,WAAW;AAAA,UACX,WAAW;AAAA,UACX,kBAAkB;AAAA,UAClB,YAAY;AAAA,UAEZ,IAAI,qBAAqB;AACvB,gBAAI,CAAC,KAAK,oBAAoB,CAAC,KAAK,WAAY,QAAO,CAAC;AAExD,kBAAM,QAAQ,oBAAI,KAAK;AACvB,kBAAM,aAAa,CAAC,SAAS,KAAK,mBAAmB,SAAS,EAAE,KAAK,WAAW,OAAO,QAAQ,CAAC;AAEhG,gBAAI,KAAK,cAAc,cAAc,KAAK,kBAAkB;AAC1D,qBAAO,KAAK,kBAAkB,OAAO,UAAU;AAAA,YACjD,WAAW,KAAK,cAAc,aAAa,KAAK,YAAY;AAC1D,qBAAO,KAAK,iBAAiB,OAAO,UAAU;AAAA,YAChD;AAEA,mBAAO,CAAC;AAAA,UACV;AAAA,UAEA,kBAAkB,OAAO,YAAY;AACnC,kBAAM,eAAe,MAAM,SAAS;AACpC,kBAAM,cAAc,MAAM,YAAY;AACtC,kBAAM,YAAY,eAAe;AACjC,kBAAM,WAAW,YAAY,KAAK,cAAc,IAAI;AACpD,kBAAM,oBAAoB,YAAY,KAAK,IAAI;AAE/C,kBAAM,wBAAwB,IAAI,KAAK,aAAa,eAAe,GAAG,CAAC,EAAE,QAAQ;AACjF,kBAAM,qBAAqB,IAAI,KAAK,UAAU,oBAAoB,GAAG,CAAC,EAAE,QAAQ;AAEhF,kBAAM,WAAW,SAAS,KAAK,kBAAkB,EAAE;AACnD,kBAAM,YAAY,WAAW;AAE7B,gBAAI,WAAW;AACf,kBAAM,WAAW,MAAM,QAAQ;AAE/B,gBAAI,WAAW,UAAU;AACvB,0BAAY,IAAI,KAAK,aAAa,cAAc,QAAQ;AAExD,kBAAI,YAAY,uBAAuB;AACrC,sBAAM,oBAAoB,YAAY;AACtC,6BAAa,IAAI,KAAK,UAAU,mBAAmB,iBAAiB;AAAA,cACtE,OAAO;AACL,6BAAa,IAAI,KAAK,aAAa,cAAc,SAAS;AAAA,cAC5D;AAAA,YACF,WACS,WAAW,aAAa,YAAY,uBAAuB;AAClE,kBAAI,YAAY,uBAAuB;AACrC,sBAAM,oBAAoB,YAAY;AACtC,4BAAY,IAAI,KAAK,UAAU,mBAAmB,iBAAiB;AACnE,6BAAa,IAAI,KAAK,UAAU,mBAAmB,QAAQ;AAAA,cAC7D,OAAO;AACL,4BAAY,IAAI,KAAK,aAAa,cAAc,SAAS;AACzD,6BAAa,IAAI,KAAK,UAAU,mBAAmB,QAAQ;AAAA,cAC7D;AAAA,YACF,OACK;AACH,0BAAY,IAAI,KAAK,UAAU,mBAAmB,QAAQ;AAC1D,oBAAM,gBAAgB,WAAW;AAEjC,kBAAI,gBAAgB,oBAAoB;AACtC,sBAAM,wBAAwB,gBAAgB;AAC9C,6BAAa,IAAI,KAAK,UAAU,oBAAoB,IAAI,KAAK,IAAI,oBAAoB,GAAG,qBAAqB;AAAA,cAC/G,OAAO;AACL,6BAAa,IAAI,KAAK,UAAU,mBAAmB,aAAa;AAAA,cAClE;AAAA,YACF;AAEA,iBAAK,wBAAwB,SAAS;AACtC,iBAAK,wBAAwB,UAAU;AAEvC,mBAAO,CAAC,WAAW,SAAS,GAAG,WAAW,UAAU,CAAC;AAAA,UACvD;AAAA,UAEA,iBAAiB,OAAO,YAAY;AAClC,kBAAM,eAAe,MAAM,SAAS;AACpC,kBAAM,cAAc,MAAM,YAAY;AACtC,kBAAM,YAAY,eAAe;AACjC,kBAAM,WAAW,YAAY,KAAK,cAAc,IAAI;AACpD,kBAAM,oBAAoB,YAAY,KAAK,IAAI;AAE/C,kBAAM,aAAa,SAAS,KAAK,YAAY,EAAE;AAE/C,gBAAI,YAAY,IAAI,KAAK,aAAa,cAAc,UAAU;AAC9D,gBAAI;AAEJ,gBAAI,YAAY,OAAO;AACrB,0BAAY,IAAI,KAAK,UAAU,mBAAmB,UAAU;AAC5D,oBAAM,cAAc,oBAAoB,IAAI,KAAK,IAAI,oBAAoB;AACzE,oBAAM,aAAa,gBAAgB,KAAK,sBAAsB,KAAK,WAAW,IAAI;AAClF,2BAAa,IAAI,KAAK,YAAY,aAAa,UAAU;AAAA,YAC3D,OAAO;AACL,2BAAa,IAAI,KAAK,UAAU,mBAAmB,UAAU;AAAA,YAC/D;AAEA,iBAAK,wBAAwB,SAAS;AACtC,iBAAK,wBAAwB,UAAU;AAEvC,mBAAO,CAAC,WAAW,SAAS,GAAG,WAAW,UAAU,CAAC;AAAA,UACvD;AAAA,UAEA,wBAAwB,MAAM;AAC5B,kBAAM,UAAU,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,QAAQ;AAC7E,gBAAI,KAAK,QAAQ,IAAI,SAAS;AAC5B,mBAAK,QAAQ,OAAO;AAAA,YACtB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA;;;AC/GA;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,aAAa,SAAUK,UAAS,CAAC,GAAG;AACxC,iBAAO;AAAA,YACL,GAAGA;AAAA,YACH,mBAAmB;AAAA,YACnB,UAAU;AAAA,YACV,SAAS;AAAA,YACT,kBAAkB;AAAA,YAClB,sBAAsB;AAAA,YACtB,mBAAmB;AAAA,YACnB,YAAY;AAAA,YAEZ,MAAM,SAAU,OAAO;AACrB,oBAAM,SAAS;AACf,kBAAI,OAAO,iBAAiB,GAAG;AAAE,uBAAO,MAAM,cAAc,MAAM;AAAA,cAAE;AAEpE,oBAAM,OAAO,WAAW,EACrB,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,SAAS;AACd,oBAAI,KAAK,WAAW,QAAQ,OAAO,aAAa,SAAS,gBAAgB,GAAG;AAC1E,yBAAO,mBAAmB;AAC1B,yBAAO,uBAAuB;AAAA,gBAChC,OAAO;AACL,yBAAO,mBAAmB;AAC1B,yBAAO,aAAa;AAAA,gBACtB;AAEA,uBAAO,UAAU;AAAA,cACnB,CAAC;AAEH,qBAAO,aAAa,KAAK;AAAA,YAC3B;AAAA,YAEA,cAAc,eAAgB,OAAO;AACnC,oBAAM,EAAE,KAAAC,KAAI,IAAI,MAAM,OAAO,KAAK,cAAc,MAAM;AACtD,oBAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,KAAK,cAAc,QAAQ;AAE1E,mBAAK,oBAAoB,MAAM;AAE/B,mBAAK,WAAW,IAAIA,KAAI,KAAK,kBAAkB,cAAc,YAAY,GAAG;AAAA,gBAC1E,QAAQ,KAAK,UAAU;AAAA,gBACvB,MAAM,KAAK;AAAA,gBACX,OAAO;AAAA,gBACP,WAAW,KAAK;AAAA,gBAChB,mBAAmB;AAAA,gBACnB,mBAAmB;AAAA,gBACnB,0BAA0B;AAAA,kBACxB,UAAU,OAAO,KAAK,gBAAgB;AAAA,gBACxC;AAAA,gBACA,aAAa;AAAA,gBACb,oBAAoB;AAAA,kBAClB,UAAU,OAAO,KAAK,gBAAgB;AAAA,gBACxC;AAAA,gBACA,eAAe;AAAA,cACjB,CAAC;AAED,kBAAI,sBAAsB;AAAA,gBACxB,KAAK,KAAK;AAAA,gBACV,UAAU,KAAK,UAAU;AAAA,gBACzB,OAAO,KAAK,eAAe,KAAK;AAAA,cAClC,CAAC;AAED,mBAAK,kBAAkB,iBAAiB,qBAAqB,EAAE,QAAQ,CAAC,WAAW;AACjF,sBAAMC,SAAQ,OAAO,QAAQ;AAC7B,sBAAM,WAAW;AAAA,kBACf,KAAK,WAAW,OAAO,QAAQ,GAAG;AAAA,kBAClC,KAAK,WAAW,OAAO,QAAQ,GAAG;AAAA,gBACpC;AAEA,oBAAI,OAAO,KAAK,OAAO,sBAAsB;AAAA,kBAC3C,KAAK,KAAK;AAAA,kBACV;AAAA,kBACA,OAAAA;AAAA,kBACA,SAAS;AAAA,gBACX,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,YAEA,WAAW,WAAY;AACrB,kBAAI,KAAK,YAAY,KAAK,WAAW;AACnC,uBAAO,EAAE,KAAK,WAAW,KAAK,QAAQ,GAAG,KAAK,WAAW,KAAK,SAAS,EAAE;AAAA,cAC3E,OAAO;AACL,uBAAO,EAAE,GAAG,KAAK,YAAY;AAAA,cAC/B;AAAA,YACF;AAAA,YAEA,UAAU,SAAU,QAAQ;AAC1B,mBAAK,UAAU;AACf,mBAAK,WAAW;AAEhB,sBAAQ,QAAQ;AAAA,gBACd,KAAK;AACH,uBAAK,aAAa;AAClB;AAAA,gBACF,KAAK;AACH,uBAAK,oBAAoB;AACzB;AAAA,gBACF;AACE,uBAAK,uBAAuB;AAAA,cAChC;AAEA,mBAAK,UAAU;AAAA,YACjB;AAAA,YAEA,YAAY,WAAY;AACtB,mBAAK,aAAa;AAClB,mBAAK,oBAAoB;AACzB,mBAAK,uBAAuB;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,aAAa;AAAA,QACtB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACrHH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,iBAAiB,WAAY;AACjC,iBAAO;AAAA,YACL,gBAAgB,SAAU,SAASC,QAAO;AACxC,sBAAQ,OAAO,aAAaA,OAAM,OAAO,KAAK;AAC9C,cAAAA,OAAM,OAAO,QAAQ;AAAA,YACvB;AAAA,YACA,YAAY,SAAU,SAASA,QAAO;AACpC,kBAAI,WAAW,QAAQ;AACvB,kBAAI,SAAS,QAAQ;AAErB,0BAAY,SAASA,QAAO,UAAU,MAAM;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,YAAY,SAASA,QAAO,UAAU,QAAQ;AACrD,gBAAM,UAAU,QAAQ;AACxB,gBAAM,kBAAkBA,OAAM,OAAO;AAErC,UAAAA,OAAM,OAAO,QAAQ;AAErB,kBAAQ,QAAQ,QAAQ,UAAU,GAAG,QAAQ,IAC7B,kBACA,QAAQ,UAAU,QAAQ,QAAQ,MAAM;AAAA,QAC1D;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,iBAAiB;AAAA,QAC1B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AChCH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,WAAW,SAAU,eAAe,gBAAgB;AACxD,iBAAO;AAAA,YACL,QAAQ;AAAA,YACR,iBAAiB;AAAA,YACjB,WAAW;AAAA,YACX,oBAAoB;AAAA,YACpB,uBAAuB,SAAUC,QAAO;AACtC,oBAAMC,eAAc,SAAS,eAAe,aAAa;AAEzD,mBAAK,kBAAkBD,OAAM,OAAO;AACpC,mBAAK,qBAAqBA,OAAM,OAAO,UAAU;AACjD,cAAAC,aAAY,YAAY,SAAS,eAAe,cAAc,EAAE;AAChE,mBAAK,SAAS;AAAA,YAChB;AAAA,YACA,WAAW,SAAU,OAAO;AAC1B,oBAAM,cAAc,SAAS,eAAe,aAAa;AAEzD,kBAAI,MAAM,OAAO,UAAU;AACzB,4BAAY,YAAY,SAAS,eAAe,MAAM,OAAO,QAAQ,EAAE;AAAA,cACzE;AAEA,kBAAI,OAAO,MAAM,OAAO,aAAa,YAAY;AAC/C,sBAAM,OAAO,SAAS;AAAA,cACxB,WAAW,OAAO,MAAM,OAAO,aAAa,UAAU;AACpD,qBAAK,MAAM,OAAO,QAAQ;AAAA,cAC5B;AAEA,mBAAK,SAAS;AACd,mBAAK,YAAY,CAAC,MAAM,OAAO;AAAA,YACjC;AAAA,YACA,SAAS,WAAY;AACnB,mBAAK,SAAS;AACd,uBAAS,eAAe,WAAW,GAAG,gBAAgB,KAAK;AAAA,YAC7D;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,WAAW;AAAA,QACpB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC3CH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,oBAAoB,SAAU,YAAY;AAC9C,iBAAO;AAAA,YACL,QAAQ,CAAC;AAAA,YACT,cAAc;AACZ,mBAAK,OAAO,KAAK,WAAW,UAAU,CAAC;AAAA,YACzC;AAAA,YACA,YAAYC,QAAO;AACjB,mBAAK,OAAOA,MAAK,EAAE,UAAU;AAAA,YAC/B;AAAA,YACA,OAAOA,QAAO;AACZ,qBAAO,KAAK,OAAO,UAAUA,WAAU;AAAA,YACzC;AAAA,YACA,yBAAyB,YAAY,aAAa,OAAO;AACvD,kBAAI,cAAc,aAAa;AAC7B,uBAAO,GAAG,WAAW,YAAY,CAAC,IAAI,YAAY,QAAQ,MAAM,GAAG,CAAC;AAAA,cACtE,OAAO;AACL,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,WAAW,YAAY;AAC9B,iBAAO,WAAW,OAAO,CAAC,MAAM,eAAe,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC;AAAA,QAClF;AAEA,YAAI,OAAO,WAAW,YAAa,QAAO,oBAAoB;AAE9D,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC9BH;AAAA;AAAA;AAAA;AAAA,kBAAe;AAEf,OAAC,WAAY;AACX,cAAM,gBAAgB,SAAU,UAAU,YAAY,UAAU,iBAAiB,mBAAmB,CAAC,GAAG;AACtG,mBAAS,iBAAiB,IAAI;AAC5B,mBAAO,GAAG,KAAK,MAAM,gCAAgC;AAAA,UACvD;AAEA,iBAAO;AAAA,YACL;AAAA,YACA,YAAY,SAAS,IAAI,CAAAC,OAAKA,GAAE,EAAE;AAAA,YAClC,qBAAqB,iBAAiB,SAAS,mBAAmB,UAAU,IAAI,CAAAA,OAAKA,GAAE,EAAE;AAAA,YACzF;AAAA,YACA;AAAA,YACA,qBAAqB,CAAC;AAAA,YACtB,aAAa;AAAA,YACb,SAAS,CAAC;AAAA,YACV,OAAO,WAAY;AACjB,qBAAO,OAAO,OAAO,KAAK,OAAO,EAAE,SAAS,IAAI;AAAA,YAClD;AAAA,YACA,OAAO,WAAY;AACjB,qBAAO,KAAK,SAAS,OAAO,CAAC,KAAK,YAAY;AAC5C,oBAAI,KAAK,mBAAmB,SAAS,QAAQ,EAAE,GAAG;AAChD,yBAAO,MAAM,WAAW,QAAQ,OAAO;AAAA,gBACzC,OAAO;AACL,yBAAO;AAAA,gBACT;AAAA,cACF,GAAG,CAAC,EAAE,eAAe,SAAS,EAAE,OAAO,YAAY,UAAU,MAAM,CAAC;AAAA,YACtE;AAAA,YACA,QAAQ,SAAU,WAAW;AAC3B,oBAAM,SAAS,EAAE,GAAG,CAAC,EAAE;AAEvB,uBAAS,iBAAiB,eAAe,EAAE,QAAQ,QAAM;AACvD,sBAAM,UAAU,iBAAiB,EAAE;AACnC,oBAAI,WAAW,QAAQ,CAAC,KAAK,GAAG,SAAS,GAAG,UAAU,IAAI;AACxD,yBAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,GAAG;AAAA,gBAC5B;AAAA,cACF,CAAC;AAED,oBAAM,QAAQ,UAAAC,QAAG,UAAU,MAAM;AAEjC,qBAAO,SAAS,OAAO,GAAG,UAAU,IAAI,KAAK;AAM7C,wBAAU,uBAAuB;AAAA,YACnC;AAAA,YACA,cAAc,SAAU,WAAW;AACjC,uBAAS,iBAAiB,eAAe,EAAE,QAAQ,QAAM;AACvD,oBAAI,CAAC,iBAAiB,EAAE,EAAG;AAE3B,mBAAG,QAAQ;AACX,qBAAK,QAAQ,GAAG,IAAI,IAAI;AAAA,cAC1B,CAAC;AAED,qBAAO,SAAS,OAAO;AAAA,YAGzB;AAAA,YACA,sBAAsB,SAAU,WAAW;AACzC,oBAAM,mBAAmB,QAAQ,oDAAoD,eAAe,eAAe,SAAS,EAAE,EAC3H,KAAK,CAAAC,OAAKA,GAAE,KAAK,CAAC,EAClB,KAAK,UAAQ;AACZ,oBAAI,KAAK,QAAQ;AACf,uBAAK,sBAAsB;AAAA,oBACzB,GAAG,KAAK;AAAA,oBACR,CAAC,SAAS,GAAG,GAAG,KAAK,WAAW;AAAA,kBAClC;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACL;AAAA,YACA,iBAAiB,SAAUC,IAAG;AAC5B,oBAAM,YAAYA,GAAE,OAAO,QAAQ;AAEnC,kBAAIA,GAAE,OAAO,SAAS;AACpB,qBAAK,qBAAqB,CAAC,GAAG,KAAK,oBAAoB,SAAS;AAChE,qBAAK,qBAAqB,SAAS;AAAA,cACrC,OAAO;AACL,qBAAK,qBAAqB,KAAK,mBAAmB,OAAO,QAAM,OAAO,SAAS;AAC/E,sBAAM,EAAE,CAAC,SAAS,GAAGC,KAAG,GAAG,KAAK,IAAI,KAAK;AACzC,qBAAK,sBAAsB;AAAA,cAC7B;AAEA,kBAAI,KAAK,mBAAmB,WAAW,KAAK,WAAW,QAAQ;AAC7D,yBAAS,cAAc,aAAa,EAAE,UAAU;AAAA,cAClD,OAAO;AACL,yBAAS,cAAc,aAAa,EAAE,UAAU;AAAA,cAClD;AAAA,YACF;AAAA,YACA,oBAAoB,SAAUD,IAAG;AAC/B,kBAAIA,GAAE,OAAO,SAAS;AACpB,qBAAK,qBAAqB,CAAC,GAAG,KAAK,UAAU;AAC7C,yBAAS,iBAAiB,mBAAmB,EAAE,QAAQ,QAAM,GAAG,UAAU,IAAI;AAC9E,qBAAK,WAAW,QAAQ,QAAM,KAAK,qBAAqB,EAAE,CAAC;AAAA,cAC7D,OAAO;AACL,qBAAK,qBAAqB,CAAC;AAC3B,qBAAK,sBAAsB,CAAC;AAC5B,yBAAS,iBAAiB,mBAAmB,EAAE,QAAQ,QAAM,GAAG,UAAU,KAAK;AAAA,cACjF;AAAA,YACF;AAAA,YACA,MAAM,SAAU,MAAM,WAAW;AAC/B,mBAAK,iBAAiB,gBAAgB,EAAE,QAAQ,QAAM;AACpD,qBAAK,QAAQ,GAAG,IAAI,IAAI,GAAG,QAAQ,WAAW;AAAA,cAChD,CAAC;AAED,mBAAK,iBAAiB,0BAA0B,EAAE,QAAQ,QAAM;AAC9D,mBAAG,iBAAiB,WAAW,CAACA,OAAM;AACpC,sBAAIA,GAAE,QAAQ,SAAS;AACrB,oBAAAA,GAAE,eAAe;AACjB,yBAAK,OAAO,SAAS;AAAA,kBACvB;AAAA,gBACF,CAAC;AAED,oBAAI,CAAC,iBAAiB,EAAE,KAAK,GAAG,QAAQ,UAAW;AAEnD,mBAAG,iBAAiB,UAAU,MAAM;AAClC,sBAAI,GAAG,UAAU,IAAI;AACnB,yBAAK,QAAQ,GAAG,IAAI,IAAI;AAAA,kBAC1B,OAAO;AACL,yBAAK,QAAQ,GAAG,IAAI,IAAI;AAAA,kBAC1B;AAAA,gBACF,CAAC;AAAA,cACH,CAAC;AAED,yBAAW,MAAM;AACf,yBAAS,iBAAiB,mBAAmB,EAAE,QAAQ,CAAC,OAAO;AAC7D,sBAAI,KAAK,mBAAmB,SAAS,GAAG,QAAQ,EAAE,GAAG;AACnD,uBAAG,UAAU;AACb,yBAAK,qBAAqB,GAAG,QAAQ,EAAE;AAAA,kBACzC;AAAA,gBACF,CAAC;AAAA,cACH,GAAG,GAAG;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,gBAAgB;AAAA,QACzB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC/IH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,aAAa,SAAU,iBAAiB,CAAC,GAAG;AAChD,mBAAS,eAAe,gBAAgB,UAAU;AAChD,kBAAM,MAAM,WAAW,gBAAgB;AACvC,kBAAM,WAAW,eAAe,cAAc,GAAG;AACjD,kBAAM,aAAa,eAAe,cAAc,IAAI,GAAG,KAAK,YAAY;AAExE,gBAAI,CAAC,WAAW,SAAS,EAAG;AAE5B,qBAAS,eAAe,cAAc,EAAE,QAAQ;AAAA,UAClD;AAEA,iBAAO;AAAA,YACL,cAAc;AAAA,YACd,aAAa;AAAA,YACb,UAAU;AAAA,YACV,gBAAgB;AAAA,YAChB,UAAU;AAAA,YACV,yBAAyB,SAAUE,QAAO;AACxC,mBAAK,iBAAiBA,OAAM,OAAO;AAEnC,6BAAe,KAAK,gBAAgB,KAAK,QAAQ;AAAA,YACnD;AAAA,YACA,gBAAgB,SAAUA,QAAO;AAC/B,oBAAM,QAAQA,OAAM,OAAO;AAE3B,mBAAK,WAAW;AAChB,mBAAK,cAAc,CAAC,UAAU,WAAW,EAAE,SAAS,KAAK;AACzD,mBAAK,WAAW,SAAS;AAEzB,6BAAe,KAAK,gBAAgB,KAAK,QAAQ;AAAA,YACnD;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,aAAa;AAAA,QACtB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACxCH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,gBAAgB,SAAU,uBAAuB,YAAY,iBAAiB;AAClF,mBAAS,iBAAiB,IAAI;AAC5B,mBAAO,GAAG,KAAK,MAAM,qBAAqB;AAAA,UAC5C;AAEA,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,uBAAuB,CAAC;AAAA,YACxB,0BAA0B,sBAAsB,OAAO,CAAC,KAAK,YAAY;AACvE,kBAAI,QAAQ,EAAE,IAAI;AAClB,qBAAO;AAAA,YACT,GAAG,CAAC,CAAC;AAAA,YACL,yBAAyB,sBAAsB,IAAI,CAAAC,OAAKA,GAAE,EAAE;AAAA,YAC5D,iCAAiC,sBAAsB,IAAI,CAAAA,OAAKA,GAAE,EAAE;AAAA,YACpE,aAAa;AAAA,YACb,cAAc,SAAU,IAAI;AAC1B,qBAAO,KAAK,yBAAyB,EAAE,EAAE;AAAA,YAC3C;AAAA,YACA,UAAU,SAAU,IAAI;AACtB,kBAAI,cAAc,WAAW,KAAK,yBAAyB,EAAE,EAAE,KAAK,KAAK;AACzE,kBAAI,kBAAkB,WAAW,KAAK,yBAAyB,EAAE,EAAE,UAAU,KAAK;AAClF,kBAAI,KAAK,yBAAyB,EAAE,EAAE,YAAY,QAAW;AAC3D,qBAAK,yBAAyB,EAAE,EAAE,UAAU,cAAc;AAAA,cAC5D;AACA,qBAAO,KAAK,yBAAyB,EAAE,EAAE;AAAA,YAC3C;AAAA,YACA,UAAU,SAAU,IAAI,OAAO;AAC7B,kBAAI,UAAU,KAAK,sBAAsB,KAAK,CAAAA,OAAKA,GAAE,OAAO,EAAE;AAC9D,sBAAQ,UAAU,WAAW,KAAK,KAAK;AAAA,YACzC;AAAA,YACA,OAAO,WAAY;AACjB,qBAAO,KAAK,sBAAsB,OAAO,CAAC,KAAK,YAAY;AACzD,oBAAI,KAAK,gCAAgC,SAAS,QAAQ,EAAE,GAAG;AAC7D,yBAAO,MAAM,WAAW,QAAQ,SAAS,CAAC;AAAA,gBAC5C,OAAO;AACL,yBAAO;AAAA,gBACT;AAAA,cACF,GAAG,CAAC,EAAE,eAAe,SAAS,EAAE,OAAO,YAAY,UAAU,MAAM,CAAC;AAAA,YACtE;AAAA,YACA,SAAS,CAAC;AAAA,YACV,OAAO,WAAY;AACjB,qBAAO,OAAO,OAAO,KAAK,OAAO,EAAE,SAAS,IAAI;AAAA,YAClD;AAAA,YACA,QAAQ,SAAU,WAAW;AAC3B,oBAAM,SAAS,EAAE,GAAG,CAAC,EAAE;AAEvB,uBAAS,iBAAiB,eAAe,EAAE,QAAQ,QAAM;AACvD,sBAAM,UAAU,iBAAiB,EAAE;AACnC,oBAAI,WAAW,QAAQ,CAAC,KAAK,GAAG,SAAS,GAAG,UAAU,IAAI;AACxD,yBAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,GAAG;AAAA,gBAC5B;AAAA,cACF,CAAC;AAED,oBAAM,QAAQ,GAAG,UAAU,MAAM;AAEjC,uBACG,eAAe,+BAA+B,EAC9C,aAAa,OAAO,GAAG,UAAU,IAAI,KAAK,EAAE;AAE/C,wBAAU,uBAAuB;AAAA,YACnC;AAAA,YACA,wBAAwB,SAAU,IAAI;AACpC,oBAAM,YAAY,KAAK,aAAa,EAAE;AACtC,oBAAM,2BAA2B,eAAe,+CAA+C,SAAS,EAAE,EACvG,KAAK,CAAAC,OAAKA,GAAE,KAAK,CAAC,EAClB,KAAK,UAAQ;AACZ,oBAAI,KAAK,kBAAkB;AACzB,uBAAK,wBAAwB;AAAA,oBAC3B,GAAG,KAAK;AAAA,oBACR,CAAC,EAAE,GAAG,GAAG,KAAK,WAAW;AAAA,kBAC3B;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACL;AAAA,YACA,cAAc,SAAU,WAAW;AACjC,uBAAS,iBAAiB,eAAe,EAAE,QAAQ,QAAM;AACvD,oBAAI,CAAC,iBAAiB,EAAE,EAAG;AAE3B,mBAAG,QAAQ;AACX,qBAAK,QAAQ,GAAG,IAAI,IAAI;AAAA,cAC1B,CAAC;AAED,mBAAK,OAAO,SAAS;AAAA,YACvB;AAAA,YACA,iBAAiB,SAAUC,IAAG;AAC5B,oBAAM,YAAYA,GAAE,OAAO,QAAQ;AAEnC,kBAAIA,GAAE,OAAO,SAAS;AACpB,qBAAK,kCAAkC,CAAC,GAAG,KAAK,iCAAiC,SAAS;AAC1F,qBAAK,uBAAuB,SAAS;AAAA,cACvC,OAAO;AACL,qBAAK,kCACH,KAAK,gCAAgC,OAAO,QAAM,OAAO,SAAS;AACpE,sBAAM,EAAE,CAAC,SAAS,GAAGC,KAAG,GAAG,KAAK,IAAI,KAAK;AACzC,qBAAK,wBAAwB;AAAA,cAC/B;AAEA,kBAAI,KAAK,gCAAgC,WAAW,KAAK,wBAAwB,QAAQ;AACvF,yBAAS,cAAc,aAAa,EAAE,UAAU;AAAA,cAClD,OAAO;AACL,yBAAS,cAAc,aAAa,EAAE,UAAU;AAAA,cAClD;AAAA,YACF;AAAA,YACA,oBAAoB,SAAUD,IAAG;AAC/B,kBAAIA,GAAE,OAAO,SAAS;AACpB,qBAAK,kCAAkC,CAAC,GAAG,KAAK,uBAAuB;AACvE,yBAAS,iBAAiB,mBAAmB,EAAE,QAAQ,QAAM,GAAG,UAAU,IAAI;AAC9E,qBAAK,wBAAwB,QAAQ,QAAM,KAAK,uBAAuB,EAAE,CAAC;AAAA,cAC5E,OAAO;AACL,qBAAK,kCAAkC,CAAC;AACxC,qBAAK,wBAAwB,CAAC;AAC9B,yBAAS,iBAAiB,mBAAmB,EAAE,QAAQ,QAAM,GAAG,UAAU,KAAK;AAAA,cACjF;AAAA,YACF;AAAA,YACA,MAAM,SAAU,MAAM,WAAW;AAC/B,mBAAK,iBAAiB,0BAA0B,EAAE,QAAQ,QAAM;AAC9D,mBAAG,iBAAiB,WAAW,CAACA,OAAM;AACpC,sBAAIA,GAAE,QAAQ,SAAS;AACrB,oBAAAA,GAAE,eAAe;AACjB,yBAAK,OAAO,SAAS;AAAA,kBACvB;AAAA,gBACF,CAAC;AAED,oBAAI,CAAC,iBAAiB,EAAE,KAAK,GAAG,QAAQ,UAAW;AAEnD,mBAAG,iBAAiB,UAAU,MAAM;AAClC,sBAAI,GAAG,UAAU,IAAI;AACnB,yBAAK,QAAQ,GAAG,IAAI,IAAI;AAAA,kBAC1B,OAAO;AACL,yBAAK,QAAQ,GAAG,IAAI,IAAI;AAAA,kBAC1B;AAAA,gBACF,CAAC;AAAA,cACH,CAAC;AAED,yBAAW,MAAM;AACf,yBAAS,iBAAiB,4BAA4B,EAAE,QAAQ,QAAM;AACpE,qBAAG,UAAU;AACb,uBAAK,uBAAuB,GAAG,QAAQ,EAAE;AAAA,gBAC3C,CAAC;AAAA,cACH,GAAG,GAAG;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,gBAAgB;AAAA,QACzB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC8UH,WAASE,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,KAAKC,UAAS,oBAAoB;AAC7E,WAAO,IAAIC,UAAS,GAAG;AAAA,EACzB;AAEA,WAASF,WAAUG,OAAM;AACvB,UAAM,UAAU,SAAS,KAAK,cAAc,2BAA2BA,KAAI,IAAI;AAC/E,QAAI,SAAS;AACX,aAAO,QAAQ,aAAa,SAAS;AAAA,IACvC;AAAA,EACF;AA7fA,MAAIC,WAKA,QASEC,MAEAC,eAEAC,oBA+FFN,WAkBkBO,gBAA0BC,YAE1CC,qBAEAC,UAEAC,aA4KAC,SAUAC,eAsBAC,wBAqCAC,gBA4EAd;AAtcN;AAAA;AAAA,MAAIE,YAAW;AAAA,QACb,QAAQ,OAAO,YAAY,cAAc,UAAU;AAAA,QACnD,WAAW,OAAO,cAAc,cAAc,YAAY;AAAA,MAC5D;AAEA,MAAI,SAAS;AAAA,QACX,OAAO,UAAU;AACf,cAAI,KAAK,SAAS;AAChB,qBAAS,KAAK,KAAK,IAAI,CAAC;AACxB,YAAAA,UAAS,OAAO,IAAI,iBAAiB,GAAG,QAAQ;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAEA,MAAMC,OAAM,OAAO,oBAAI,QAAM,QAAQ;AAErC,MAAMC,gBAAe,WAASD,KAAI,IAAI,QAAQ;AAE9C,MAAME,qBAAN,MAAwB;AAAA,QACtB,YAAY,YAAY;AACtB,eAAK,sBAAsB,KAAK,oBAAoB,KAAK,IAAI;AAC7D,eAAK,aAAa;AAClB,eAAK,oBAAoB;AAAA,QAC3B;AAAA,QACA,QAAQ;AACN,cAAI,CAAC,KAAK,UAAU,GAAG;AACrB,iBAAK,YAAYF,KAAI;AACrB,mBAAO,KAAK;AACZ,iBAAK,aAAa;AAClB,6BAAiB,oBAAoB,KAAK,mBAAmB;AAC7D,mBAAO,IAAI,gDAAgD,KAAK,YAAY,cAAc,IAAI;AAAA,UAChG;AAAA,QACF;AAAA,QACA,OAAO;AACL,cAAI,KAAK,UAAU,GAAG;AACpB,iBAAK,YAAYA,KAAI;AACrB,iBAAK,YAAY;AACjB,gCAAoB,oBAAoB,KAAK,mBAAmB;AAChE,mBAAO,IAAI,2BAA2B;AAAA,UACxC;AAAA,QACF;AAAA,QACA,YAAY;AACV,iBAAO,KAAK,aAAa,CAAC,KAAK;AAAA,QACjC;AAAA,QACA,gBAAgB;AACd,eAAK,WAAWA,KAAI;AAAA,QACtB;AAAA,QACA,gBAAgB;AACd,eAAK,oBAAoB;AACzB,iBAAO,KAAK;AACZ,iBAAO,IAAI,oCAAoC;AAAA,QACjD;AAAA,QACA,mBAAmB;AACjB,eAAK,iBAAiBA,KAAI;AAC1B,iBAAO,IAAI,uCAAuC;AAAA,QACpD;AAAA,QACA,eAAe;AACb,eAAK,YAAY;AACjB,eAAK,KAAK;AAAA,QACZ;AAAA,QACA,cAAc;AACZ,uBAAa,KAAK,WAAW;AAAA,QAC/B;AAAA,QACA,OAAO;AACL,eAAK,cAAc,YAAY,MAAM;AACnC,iBAAK,iBAAiB;AACtB,iBAAK,KAAK;AAAA,UACZ,IAAI,KAAK,gBAAgB,CAAC;AAAA,QAC5B;AAAA,QACA,kBAAkB;AAChB,gBAAM,EAAC,gBAAgC,wBAAgD,IAAI,KAAK;AAChG,gBAAM,UAAU,KAAK,IAAI,IAAI,yBAAyB,KAAK,IAAI,KAAK,mBAAmB,EAAE,CAAC;AAC1F,gBAAM,YAAY,KAAK,sBAAsB,IAAI,IAAI;AACrD,gBAAM,SAAS,YAAY,KAAK,OAAO;AACvC,iBAAO,iBAAiB,MAAM,WAAW,IAAI;AAAA,QAC/C;AAAA,QACA,mBAAmB;AACjB,cAAI,KAAK,kBAAkB,GAAG;AAC5B,mBAAO,IAAI,oEAAoE,KAAK,iBAAiB,kBAAkBC,cAAa,KAAK,WAAW,CAAC,yBAAyB,KAAK,YAAY,cAAc,IAAI;AACjN,iBAAK;AACL,gBAAI,KAAK,qBAAqB,GAAG;AAC/B,qBAAO,IAAI,+EAA+EA,cAAa,KAAK,cAAc,CAAC,IAAI;AAAA,YACjI,OAAO;AACL,qBAAO,IAAI,6BAA6B;AACxC,mBAAK,WAAW,OAAO;AAAA,YACzB;AAAA,UACF;AAAA,QACF;AAAA,QACA,IAAI,cAAc;AAChB,iBAAO,KAAK,WAAW,KAAK,WAAW,KAAK;AAAA,QAC9C;AAAA,QACA,oBAAoB;AAClB,iBAAOA,cAAa,KAAK,WAAW,IAAI,KAAK,YAAY;AAAA,QAC3D;AAAA,QACA,uBAAuB;AACrB,iBAAO,KAAK,kBAAkBA,cAAa,KAAK,cAAc,IAAI,KAAK,YAAY;AAAA,QACrF;AAAA,QACA,sBAAsB;AACpB,cAAI,SAAS,oBAAoB,WAAW;AAC1C,wBAAY,MAAM;AAChB,kBAAI,KAAK,kBAAkB,KAAK,CAAC,KAAK,WAAW,OAAO,GAAG;AACzD,uBAAO,IAAI,uFAAuF,SAAS,eAAe,EAAE;AAC5H,qBAAK,WAAW,OAAO;AAAA,cACzB;AAAA,YACF,IAAI,GAAG;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAEA,MAAAC,mBAAkB,iBAAiB;AAEnC,MAAAA,mBAAkB,0BAA0B;AAE5C,MAAIN,YAAW;AAAA,QACb,eAAe;AAAA,UACb,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,cAAc;AAAA,UACd,WAAW;AAAA,QACb;AAAA,QACA,oBAAoB;AAAA,UAClB,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,QAAQ;AAAA,QACV;AAAA,QACA,oBAAoB;AAAA,QACpB,WAAW,CAAE,uBAAuB,yBAA0B;AAAA,MAChE;AAEA,OAAM,EAAC,eAAeO,gBAAe,WAAWC,eAAaR;AAE7D,MAAMS,sBAAqBD,WAAU,MAAM,GAAGA,WAAU,SAAS,CAAC;AAElE,MAAME,WAAU,CAAC,EAAE;AAEnB,MAAMC,cAAN,MAAiB;AAAA,QACf,YAAYK,WAAU;AACpB,eAAK,OAAO,KAAK,KAAK,KAAK,IAAI;AAC/B,eAAK,WAAWA;AAChB,eAAK,gBAAgB,KAAK,SAAS;AACnC,eAAK,UAAU,IAAIV,mBAAkB,IAAI;AACzC,eAAK,eAAe;AAAA,QACtB;AAAA,QACA,KAAK,MAAM;AACT,cAAI,KAAK,OAAO,GAAG;AACjB,iBAAK,UAAU,KAAK,KAAK,UAAU,IAAI,CAAC;AACxC,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,OAAO;AACL,cAAI,KAAK,SAAS,GAAG;AACnB,mBAAO,IAAI,uDAAuD,KAAK,SAAS,CAAC,EAAE;AACnF,mBAAO;AAAA,UACT,OAAO;AACL,kBAAM,kBAAkB,CAAE,GAAGE,YAAW,GAAG,KAAK,SAAS,gBAAgB,CAAC,CAAE;AAC5E,mBAAO,IAAI,uCAAuC,KAAK,SAAS,CAAC,mBAAmB,eAAe,EAAE;AACrG,gBAAI,KAAK,WAAW;AAClB,mBAAK,uBAAuB;AAAA,YAC9B;AACA,iBAAK,YAAY,IAAIL,UAAS,UAAU,KAAK,SAAS,KAAK,eAAe;AAC1E,iBAAK,qBAAqB;AAC1B,iBAAK,QAAQ,MAAM;AACnB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,MAAM,EAAC,eAA8B,IAAI;AAAA,UACvC,gBAAgB;AAAA,QAClB,GAAG;AACD,cAAI,CAAC,gBAAgB;AACnB,iBAAK,QAAQ,KAAK;AAAA,UACpB;AACA,cAAI,KAAK,OAAO,GAAG;AACjB,mBAAO,KAAK,UAAU,MAAM;AAAA,UAC9B;AAAA,QACF;AAAA,QACA,SAAS;AACP,iBAAO,IAAI,yCAAyC,KAAK,SAAS,CAAC,EAAE;AACrE,cAAI,KAAK,SAAS,GAAG;AACnB,gBAAI;AACF,qBAAO,KAAK,MAAM;AAAA,YACpB,SAAS,OAAO;AACd,qBAAO,IAAI,8BAA8B,KAAK;AAAA,YAChD,UAAE;AACA,qBAAO,IAAI,0BAA0B,KAAK,YAAY,WAAW,IAAI;AACrE,yBAAW,KAAK,MAAM,KAAK,YAAY,WAAW;AAAA,YACpD;AAAA,UACF,OAAO;AACL,mBAAO,KAAK,KAAK;AAAA,UACnB;AAAA,QACF;AAAA,QACA,cAAc;AACZ,cAAI,KAAK,WAAW;AAClB,mBAAO,KAAK,UAAU;AAAA,UACxB;AAAA,QACF;AAAA,QACA,SAAS;AACP,iBAAO,KAAK,QAAQ,MAAM;AAAA,QAC5B;AAAA,QACA,WAAW;AACT,iBAAO,KAAK,QAAQ,QAAQ,YAAY;AAAA,QAC1C;AAAA,QACA,mBAAmB;AACjB,iBAAO,KAAK,QAAQ,oBAAoB;AAAA,QAC1C;AAAA,QACA,sBAAsB;AACpB,iBAAOO,SAAQ,KAAKD,qBAAoB,KAAK,YAAY,CAAC,KAAK;AAAA,QACjE;AAAA,QACA,WAAW,QAAQ;AACjB,iBAAOC,SAAQ,KAAK,QAAQ,KAAK,SAAS,CAAC,KAAK;AAAA,QAClD;AAAA,QACA,WAAW;AACT,cAAI,KAAK,WAAW;AAClB,qBAAS,SAASP,UAAS,WAAW;AACpC,kBAAIA,UAAS,UAAU,KAAK,MAAM,KAAK,UAAU,YAAY;AAC3D,uBAAO,MAAM,YAAY;AAAA,cAC3B;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,QACA,uBAAuB;AACrB,mBAAS,aAAa,KAAK,QAAQ;AACjC,kBAAM,UAAU,KAAK,OAAO,SAAS,EAAE,KAAK,IAAI;AAChD,iBAAK,UAAU,KAAK,SAAS,EAAE,IAAI;AAAA,UACrC;AAAA,QACF;AAAA,QACA,yBAAyB;AACvB,mBAAS,aAAa,KAAK,QAAQ;AACjC,iBAAK,UAAU,KAAK,SAAS,EAAE,IAAI,WAAW;AAAA,YAAC;AAAA,UACjD;AAAA,QACF;AAAA,MACF;AAEA,MAAAQ,YAAW,cAAc;AAEzB,MAAAA,YAAW,UAAU,SAAS;AAAA,QAC5B,QAAQM,QAAO;AACb,cAAI,CAAC,KAAK,oBAAoB,GAAG;AAC/B;AAAA,UACF;AACA,gBAAM,EAAC,YAAwB,SAAkB,QAAgB,WAAsB,KAAU,IAAI,KAAK,MAAMA,OAAM,IAAI;AAC1H,eAAK,QAAQ,cAAc;AAC3B,kBAAQ,MAAM;AAAA,YACb,KAAKV,eAAc;AAClB,kBAAI,KAAK,iBAAiB,GAAG;AAC3B,qBAAK,qBAAqB;AAAA,cAC5B;AACA,mBAAK,QAAQ,cAAc;AAC3B,qBAAO,KAAK,cAAc,OAAO;AAAA,YAElC,KAAKA,eAAc;AAClB,qBAAO,IAAI,0BAA0B,MAAM,EAAE;AAC7C,qBAAO,KAAK,MAAM;AAAA,gBAChB,gBAAgB;AAAA,cAClB,CAAC;AAAA,YAEF,KAAKA,eAAc;AAClB,qBAAO;AAAA,YAER,KAAKA,eAAc;AAClB,mBAAK,cAAc,oBAAoB,UAAU;AACjD,kBAAI,KAAK,oBAAoB;AAC3B,qBAAK,qBAAqB;AAC1B,uBAAO,KAAK,cAAc,OAAO,YAAY,aAAa;AAAA,kBACxD,aAAa;AAAA,gBACf,CAAC;AAAA,cACH,OAAO;AACL,uBAAO,KAAK,cAAc,OAAO,YAAY,aAAa;AAAA,kBACxD,aAAa;AAAA,gBACf,CAAC;AAAA,cACH;AAAA,YAED,KAAKA,eAAc;AAClB,qBAAO,KAAK,cAAc,OAAO,UAAU;AAAA,YAE5C;AACC,qBAAO,KAAK,cAAc,OAAO,YAAY,YAAY,OAAO;AAAA,UAClE;AAAA,QACF;AAAA,QACA,OAAO;AACL,iBAAO,IAAI,kCAAkC,KAAK,YAAY,CAAC,eAAe;AAC9E,eAAK,eAAe;AACpB,cAAI,CAAC,KAAK,oBAAoB,GAAG;AAC/B,mBAAO,IAAI,8DAA8D;AACzE,mBAAO,KAAK,MAAM;AAAA,cAChB,gBAAgB;AAAA,YAClB,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,MAAMU,QAAO;AACX,iBAAO,IAAI,yBAAyB;AACpC,cAAI,KAAK,cAAc;AACrB;AAAA,UACF;AACA,eAAK,eAAe;AACpB,eAAK,QAAQ,iBAAiB;AAC9B,iBAAO,KAAK,cAAc,UAAU,gBAAgB;AAAA,YAClD,sBAAsB,KAAK,QAAQ,UAAU;AAAA,UAC/C,CAAC;AAAA,QACH;AAAA,QACA,QAAQ;AACN,iBAAO,IAAI,yBAAyB;AAAA,QACtC;AAAA,MACF;AAEA,MAAML,UAAS,SAAS,QAAQ,YAAY;AAC1C,YAAI,cAAc,MAAM;AACtB,mBAAS,OAAO,YAAY;AAC1B,kBAAM,QAAQ,WAAW,GAAG;AAC5B,mBAAO,GAAG,IAAI;AAAA,UAChB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,MAAMC,gBAAN,MAAmB;AAAA,QACjB,YAAYG,WAAU,SAAS,CAAC,GAAG,OAAO;AACxC,eAAK,WAAWA;AAChB,eAAK,aAAa,KAAK,UAAU,MAAM;AACvC,UAAAJ,QAAO,MAAM,KAAK;AAAA,QACpB;AAAA,QACA,QAAQ,QAAQ,OAAO,CAAC,GAAG;AACzB,eAAK,SAAS;AACd,iBAAO,KAAK,KAAK,IAAI;AAAA,QACvB;AAAA,QACA,KAAK,MAAM;AACT,iBAAO,KAAK,SAAS,KAAK;AAAA,YACxB,SAAS;AAAA,YACT,YAAY,KAAK;AAAA,YACjB,MAAM,KAAK,UAAU,IAAI;AAAA,UAC3B,CAAC;AAAA,QACH;AAAA,QACA,cAAc;AACZ,iBAAO,KAAK,SAAS,cAAc,OAAO,IAAI;AAAA,QAChD;AAAA,MACF;AAEA,MAAME,yBAAN,MAA4B;AAAA,QAC1B,YAAY,eAAe;AACzB,eAAK,gBAAgB;AACrB,eAAK,uBAAuB,CAAC;AAAA,QAC/B;AAAA,QACA,UAAU,cAAc;AACtB,cAAI,KAAK,qBAAqB,QAAQ,YAAY,KAAK,IAAI;AACzD,mBAAO,IAAI,sCAAsC,aAAa,UAAU,EAAE;AAC1E,iBAAK,qBAAqB,KAAK,YAAY;AAAA,UAC7C,OAAO;AACL,mBAAO,IAAI,8CAA8C,aAAa,UAAU,EAAE;AAAA,UACpF;AACA,eAAK,kBAAkB;AAAA,QACzB;AAAA,QACA,OAAO,cAAc;AACnB,iBAAO,IAAI,oCAAoC,aAAa,UAAU,EAAE;AACxE,eAAK,uBAAuB,KAAK,qBAAqB,QAAQ,CAAAI,OAAKA,OAAM,aAAa;AAAA,QACxF;AAAA,QACA,oBAAoB;AAClB,eAAK,iBAAiB;AACtB,eAAK,iBAAiB;AAAA,QACxB;AAAA,QACA,mBAAmB;AACjB,uBAAa,KAAK,YAAY;AAAA,QAChC;AAAA,QACA,mBAAmB;AACjB,eAAK,eAAe,YAAY,MAAM;AACpC,gBAAI,KAAK,iBAAiB,OAAO,KAAK,cAAc,cAAc,YAAY;AAC5E,mBAAK,qBAAqB,KAAK,kBAAgB;AAC7C,uBAAO,IAAI,uCAAuC,aAAa,UAAU,EAAE;AAC3E,qBAAK,cAAc,UAAU,YAAY;AAAA,cAC3C,EAAE;AAAA,YACJ;AAAA,UACF,IAAI,GAAG;AAAA,QACT;AAAA,MACF;AAEA,MAAMH,iBAAN,MAAoB;AAAA,QAClB,YAAYC,WAAU;AACpB,eAAK,WAAWA;AAChB,eAAK,YAAY,IAAIF,uBAAsB,IAAI;AAC/C,eAAK,gBAAgB,CAAC;AAAA,QACxB;AAAA,QACA,OAAO,aAAa,OAAO;AACzB,gBAAM,UAAU;AAChB,gBAAM,SAAS,OAAO,YAAY,WAAW,UAAU;AAAA,YACrD;AAAA,UACF;AACA,gBAAM,eAAe,IAAID,cAAa,KAAK,UAAU,QAAQ,KAAK;AAClE,iBAAO,KAAK,IAAI,YAAY;AAAA,QAC9B;AAAA,QACA,IAAI,cAAc;AAChB,eAAK,cAAc,KAAK,YAAY;AACpC,eAAK,SAAS,uBAAuB;AACrC,eAAK,OAAO,cAAc,aAAa;AACvC,eAAK,UAAU,YAAY;AAC3B,iBAAO;AAAA,QACT;AAAA,QACA,OAAO,cAAc;AACnB,eAAK,OAAO,YAAY;AACxB,cAAI,CAAC,KAAK,QAAQ,aAAa,UAAU,EAAE,QAAQ;AACjD,iBAAK,YAAY,cAAc,aAAa;AAAA,UAC9C;AACA,iBAAO;AAAA,QACT;AAAA,QACA,OAAO,YAAY;AACjB,iBAAO,KAAK,QAAQ,UAAU,EAAE,KAAK,kBAAgB;AACnD,iBAAK,OAAO,YAAY;AACxB,iBAAK,OAAO,cAAc,UAAU;AACpC,mBAAO;AAAA,UACT,EAAE;AAAA,QACJ;AAAA,QACA,OAAO,cAAc;AACnB,eAAK,UAAU,OAAO,YAAY;AAClC,eAAK,gBAAgB,KAAK,cAAc,QAAQ,CAAAK,OAAKA,OAAM,aAAa;AACxE,iBAAO;AAAA,QACT;AAAA,QACA,QAAQ,YAAY;AAClB,iBAAO,KAAK,cAAc,QAAQ,CAAAA,OAAKA,GAAE,eAAe,WAAW;AAAA,QACrE;AAAA,QACA,SAAS;AACP,iBAAO,KAAK,cAAc,KAAK,kBAAgB,KAAK,UAAU,YAAY,EAAE;AAAA,QAC9E;AAAA,QACA,UAAU,iBAAiB,MAAM;AAC/B,iBAAO,KAAK,cAAc,KAAK,kBAAgB,KAAK,OAAO,cAAc,cAAc,GAAG,IAAI,EAAE;AAAA,QAClG;AAAA,QACA,OAAO,cAAc,iBAAiB,MAAM;AAC1C,cAAI;AACJ,cAAI,OAAO,iBAAiB,UAAU;AACpC,4BAAgB,KAAK,QAAQ,YAAY;AAAA,UAC3C,OAAO;AACL,4BAAgB,CAAE,YAAa;AAAA,UACjC;AACA,iBAAO,cAAc,KAAK,CAAAC,kBAAgB,OAAOA,cAAa,YAAY,MAAM,aAAaA,cAAa,YAAY,EAAE,GAAG,IAAI,IAAI,OAAU;AAAA,QAC/I;AAAA,QACA,UAAU,cAAc;AACtB,cAAI,KAAK,YAAY,cAAc,WAAW,GAAG;AAC/C,iBAAK,UAAU,UAAU,YAAY;AAAA,UACvC;AAAA,QACF;AAAA,QACA,oBAAoB,YAAY;AAC9B,iBAAO,IAAI,0BAA0B,UAAU,EAAE;AACjD,eAAK,QAAQ,UAAU,EAAE,KAAK,kBAAgB,KAAK,UAAU,OAAO,YAAY,EAAE;AAAA,QACpF;AAAA,QACA,YAAY,cAAc,SAAS;AACjC,gBAAM,EAAC,WAAsB,IAAI;AACjC,iBAAO,KAAK,SAAS,KAAK;AAAA,YACxB;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAEA,MAAMlB,YAAN,MAAe;AAAA,QACb,YAAY,KAAK;AACf,eAAK,OAAO;AACZ,eAAK,gBAAgB,IAAIc,eAAc,IAAI;AAC3C,eAAK,aAAa,IAAIJ,YAAW,IAAI;AACrC,eAAK,eAAe,CAAC;AAAA,QACvB;AAAA,QACA,IAAI,MAAM;AACR,iBAAOf,oBAAmB,KAAK,IAAI;AAAA,QACrC;AAAA,QACA,KAAK,MAAM;AACT,iBAAO,KAAK,WAAW,KAAK,IAAI;AAAA,QAClC;AAAA,QACA,UAAU;AACR,iBAAO,KAAK,WAAW,KAAK;AAAA,QAC9B;AAAA,QACA,aAAa;AACX,iBAAO,KAAK,WAAW,MAAM;AAAA,YAC3B,gBAAgB;AAAA,UAClB,CAAC;AAAA,QACH;AAAA,QACA,yBAAyB;AACvB,cAAI,CAAC,KAAK,WAAW,SAAS,GAAG;AAC/B,mBAAO,KAAK,WAAW,KAAK;AAAA,UAC9B;AAAA,QACF;AAAA,QACA,eAAe,aAAa;AAC1B,eAAK,eAAe,CAAE,GAAG,KAAK,cAAc,WAAY;AAAA,QAC1D;AAAA,MACF;AAAA;AAAA;;;ACneA,MAKO;AALP,MAAAwB,iBAAA;AAAA;AAGA;AAEA,MAAO,mBAAQC,gBAAe;AAAA;AAAA;;;ACOvB,WAASC,mBAAmB;AACjC,WAAOC;EACT;AAEO,WAASC,iBAAiBC,SAAQ;AACvCF,oBAAgBE;EAClB;AAMO,WAASC,cAAcD,SAAQ;AACrC,WAAOE,YAAYF,OAAM;EAC1B;AAOO,WAASG,cAAcC,YAAY;AACxC,QAAI,CAACA,YAAY;AACf,YAAM,IAAIC,MAAM,uBAAuB;IACzC;AAGAH,gBAAYE,WAAWJ,MAAM,IAAII;AACjCE,0BAAsBF,WAAWJ,OAAOO,YAAY,CAAC,IAAIH,WAAWJ;EACtE;AAQO,WAASQ,cAAcR,SAAQ;AACrC,QAAIE,YAAYF,OAAM,GAAG;AACxB,aAAOA;IACR;AACA,QAAIM,sBAAsBN,QAAOO,YAAY,CAAC,GAAG;AAChD,aAAOD,sBAAsBN,QAAOO,YAAY,CAAC;IAClD;EACD;AAxDA,MAEIT,eAIEI,aAIAI;AAVN;;AAEA,MAAIR,gBAAgB;AAIpB,MAAMI,cAAc,CAAC;AAIrB,MAAMI,wBAAwB,CAAC;;;;;ACMhB,WAAfG,eAAsCC,SAAsB;AAAA,QAAdC,UAAOC,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAG,CAAC;AACvD,QAAMG,gBAAgBJ,QAAQI,iBAAiB;AAC/C,YAAQA,eAAa;MACnB,KAAK;AACH,eAAOC,oBAAoBN,OAAM;;;MAGnC,KAAK;AAEH,eAAOM,oBAAoBN,OAAM;MACnC;AACE,cAAM,IAAIO,WAAU,mCAAAC,OAAoCH,aAAa,CAAE;IAC3E;EACF;AAgBO,WAASC,oBAAoBN,SAAQ;AAC1C,QAAMS,iBAAiBC,cAAqBV,OAAM;AAClD,QAAIS,gBAAgB;AAClB,aAAOA;IACT;AAEA,QAAME,QAAQX,QAAOY,MAAM,GAAG;AAC9B,WAAOZ,QAAOG,SAAS,GAAG;AACxBQ,YAAME,IAAI;AACVb,MAAAA,UAASW,MAAMG,KAAK,GAAG;AACvB,UAAML,kBAAiBC,cAAqBV,OAAM;AAClD,UAAIS,iBAAgB;AAClB,eAAOA;MACT;IACF;EACF;AA5DA;;;;;;;ACAA,MAUIM,IA2RJ;AArSA;;AAUA,MAAIA,KAAI;QACPC,IAAI,SAAAA,GAACC,IAAC;AAAA,iBAAKA,MAAK,IAAI,QAAQ;QAAO;QACnCC,IAAI,SAAAA,GAACD,IAAC;AAAA,iBAAMA,MAAK,KAAKA,MAAK,IAAK,QAAQ;QAAO;QAC/CE,IAAI,SAAAA,GAACF,IAAC;AAAA,iBAAKA,MAAK,KAAKA,MAAK,IAAI,QAAQ;QAAO;QAC7CG,IAAI,SAAAA,GAACH,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGC,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ,IAAGS,OAAOF,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE;AAClF,iBAAOV,MAAK,IAAI,SACbA,MAAK,IAAI,QACTA,MAAK,IAAI,QACRS,QAAQ,KAAKA,QAAQ,KAAM,QAC3BA,QAAQ,MAAMA,QAAQ,KAAM,SAC7B;QACJ;QACAE,KAAK,SAAAA,IAACX,IAAM;AACX,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGM,KAAK,CAACR,GAAE,CAAC;AACzC,iBAAOJ,MAAK,KAAKY,KAAK,QAAQ;QAC/B;QACAC,IAAI,SAAAA,IAACb,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGC,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ,IAAGc,MAAMP,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE,GAAGD,OAAOF,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE;AAC9G,iBAAOI,OAAO,KAAKL,QAAQ,KAAK,QAC5BK,OAAO,KAAKA,OAAO,MAAOL,OAAO,MAAMA,OAAO,MAAM,QACrDF,MAAMO,OAAO,KAAMA,OAAO,KAAKA,OAAO,KAAOL,QAAQ,MAAMA,QAAQ,KAAM,SACzE;QACJ;QACAM,KAAK,SAAAA,IAACf,IAAC;AAAA,iBAAKA,MAAK,IAAI,SACjBA,MAAK,IAAI,QACT;QAAO;QACXgB,IAAI,SAAAA,GAAChB,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGC,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ,IAAGc,MAAMP,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE,GAAGD,OAAOF,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE,GAAGO,WAAWV,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE;AAC/I,iBAAOI,OAAO,KAAKL,QAAQ,MAAMA,QAAQ,MAAMA,QAAQ,KAAK,QACzDK,OAAO,KAAKL,QAAQ,MAAMA,QAAQ,MAAMA,QAAQ,KAAK,SACnDK,OAAO,KAAKA,OAAO,KAAMA,OAAO,OAAOL,OAAO,MAAMA,OAAO,QAAQA,OAAO,MAAMA,OAAO,QAAQA,OAAO,MAAMA,OAAO,MAAM,QAC3HT,MAAK,KAAKO,MAAMU,YAAY,IAAI,SAChC;QACJ;QACAC,IAAI,SAAAA,GAAClB,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGgB,KAAIhB,GAAE,CAAC,KAAK,IAAIQ,KAAK,CAACR,GAAE,CAAC,GAAGiB,MAAMF,GAAET,MAAM,EAAE,GAAGY,OAAOH,GAAET,MAAM,EAAE,GAAGa,MAAMH,GAAEV,MAAM,EAAE,GAAGc,OAAOJ,GAAEV,MAAM,EAAE;AACjJ,iBAAOE,MAAMS,OAAO,KAAKC,QAAQ,MAAMC,OAAO,KAAKC,QAAQ,KAAK,QAC7DZ,MAAOS,OAAO,KAAKA,OAAO,MAAOC,OAAO,MAAMA,OAAO,OAAQC,OAAO,KAAKA,OAAO,MAAOC,OAAO,MAAMA,OAAO,MAAM,QACjH;QACJ;QACAC,IAAI,SAAAA,GAACzB,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC,GAAGsB,WAAWP,GAAET,MAAM,EAAE;AAC3E,iBAAOV,MAAK,KAAKY,KAAK,QACnBO,MAAK,KAAKO,YAAY,KAAKd,KAAK,SAChC;QACJ;QACAe,KAAK,SAAAA,IAAC3B,IAAM;AACX,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGgB,KAAIhB,GAAE,CAAC,KAAK,IAAIQ,KAAK,CAACR,GAAE,CAAC,GAAGiB,MAAMF,GAAET,MAAM,EAAE,GAAGa,MAAMH,GAAEV,MAAM,EAAE;AACzG,iBAAOE,OAAOO,MAAK,KAAKA,MAAK,KAAKA,MAAK,MAAMP,MAAMS,OAAO,KAAKA,OAAO,KAAKA,OAAO,KAAK,CAACT,MAAMW,OAAO,KAAKA,OAAO,KAAKA,OAAO,IAAI,QAAQ;QAC1I;QACAK,IAAI,SAAAA,GAAC5B,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC;AACnD,iBAAOJ,MAAK,KAAKY,KAAK,QAClBO,MAAK,KAAKA,MAAK,KAAMP,KAAK,QAC3B,CAACA,KAAK,SACN;QACJ;QACAiB,IAAI,SAAAA,GAAC7B,IAAC;AAAA,iBAAKA,MAAK,IAAI,SAChBA,MAAK,IAAI,QACTA,MAAK,IAAI,QACTA,MAAK,IAAI,QACTA,MAAK,IAAI,SACT;QAAO;QACX8B,IAAI,SAAAA,GAAC9B,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGG,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ;AAC/D,iBAAOA,MAAK,KAAK,CAACO,OAAOY,MAAK,KAAKA,MAAK,KAAK,QAAQ;QACtD;QACAY,KAAK,SAAAA,IAAC/B,IAAM;AACX,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGgB,KAAIhB,GAAE,CAAC,KAAK,IAAIQ,KAAK,CAACR,GAAE,CAAC,GAAGkB,OAAOH,GAAET,MAAM,EAAE,GAAGc,OAAOJ,GAAEV,MAAM,EAAE;AAC3G,iBAAOE,MAAMU,QAAQ,KAAKE,QAAQ,IAAI,QACnCZ,MAAMU,QAAQ,KAAKE,QAAQ,IAAI,QAC/BZ,OAAOU,QAAQ,KAAKA,QAAQ,MAAOE,QAAQ,KAAKA,QAAQ,IAAK,QAC7D;QACJ;QACAQ,IAAI,SAAAA,GAAChC,IAAC;AAAA,iBAAK;QAAO;QAClBiC,IAAI,SAAAA,GAACjC,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC,GAAGsB,WAAWP,GAAET,MAAM,EAAE;AAC3E,iBAAOV,MAAK,IAAI,QACbmB,MAAK,KAAKO,YAAY,KAAKd,KAAK,SAChC;QACJ;QACAsB,IAAI,SAAAA,GAAClC,IAAC;AAAA,iBAAKA,MAAK,KAAKA,KAAI,IAAI,QAAQ;QAAO;QAC5CmC,IAAI,SAAAA,GAACnC,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC,GAAGsB,WAAWP,GAAET,MAAM,EAAE;AAC3E,iBAAOV,MAAK,KAAKA,KAAI,IAAI,QACtBmB,MAAK,KAAKO,YAAY,KAAKd,KAAK,SAChC;QACJ;QACAwB,IAAI,SAAAA,GAACpC,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGC,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ;AACrD,iBAAOA,MAAK,IAAI,QACbA,MAAK,IAAI,QACRO,MAAMP,MAAK,KAAKA,MAAK,IAAK,QAC1BO,MAAMP,MAAK,KAAKA,MAAK,KAAM,SAC5B;QACJ;QACAqC,IAAI,SAAAA,GAACrC,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGC,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ;AACrD,iBAAQA,MAAK,KAAKA,MAAK,KAAM,QACzBA,MAAK,KAAKA,MAAK,KAAM,QACpBO,MAAMP,MAAK,KAAKA,MAAK,MAAQO,MAAMP,MAAK,MAAMA,MAAK,KAAO,QAC5D;QACJ;QACAsC,IAAI,SAAAA,IAACtC,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC;AACnD,iBAAOe,MAAK,KAAKP,MAAMO,MAAK,KAAK,CAACP,KAAK,QACpCO,MAAK,KAAKP,KAAK,QACf;QACJ;QACA2B,IAAI,SAAAA,IAACvC,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGoC,MAAKpC,GAAE,CAAC,KAAK,IAAIqC,QAAQ,OAAO,EAAE,GAAGlC,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ,IAAGqB,MAAMF,GAAET,MAAM,EAAE,GAAGY,OAAOH,GAAET,MAAM,EAAE;AAC3I,iBAAOH,MAAMc,OAAO,KAAKC,QAAQ,MAAMkB,KAAI,MAAM,KAAKA,KAAI,OAAO,KAAK,QAAQ;QAC/E;QACAE,IAAI,SAAAA,GAAC1C,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGc,KAAIhB,GAAE,CAAC,KAAK,IAAIG,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ,IAAGc,MAAMP,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE,GAAGD,OAAOF,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE;AAC9H,iBAAOI,OAAO,MAAML,OAAO,MAAMA,OAAO,MAAM,QAC1CK,OAAO,KAAKA,OAAO,MAAOL,OAAO,MAAMA,OAAO,MAAM,QACrDW,MAAK,IAAI,SACT;QACJ;QACAuB,IAAI,SAAAA,GAAC3C,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGc,KAAIhB,GAAE,CAAC,KAAK,IAAIwC,KAAIxB,GAAEyB,QAAQtC,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ,IAAGc,MAAMP,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE,GAAGD,OAAOF,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE,GAAGc,OAAOJ,GAAEV,MAAM,EAAE,GAAGa,MAAMH,GAAEV,MAAM,EAAE;AACnL,iBAAOH,MAAMO,OAAO,KAAML,QAAQ,MAAMA,QAAQ,MAAOmC,MAAK,KAAMpB,QAAQ,MAAMA,QAAQ,KAAM,SAC3FV,OAAO,KAAKL,QAAQ,MAAMmC,MAAK,KAAKrB,OAAO,KAAKC,QAAQ,MAAMoB,MAAK,KAAKrB,OAAO,IAAI,QACnF;QACJ;QACAuB,IAAI,SAAAA,GAAC9C,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGgB,KAAIhB,GAAE,CAAC,KAAK,IAAIQ,KAAK,CAACR,GAAE,CAAC,GAAGiB,MAAMF,GAAET,MAAM,EAAE,GAAGY,OAAOH,GAAET,MAAM,EAAE,GAAGa,MAAMH,GAAEV,MAAM,EAAE,GAAGc,OAAOJ,GAAEV,MAAM,EAAE;AACjJ,iBAAOE,MAAMS,OAAO,KAAKC,QAAQ,MAAMC,OAAO,KAAKC,QAAQ,KAAK,QAAQ;QACzE;QACAuB,IAAI,SAAAA,GAAC/C,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGC,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ,IAAGS,OAAOF,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE;AAClF,iBAAOV,MAAK,IAAI,QACbA,MAAK,IAAI,QACTA,MAAK,KAAMS,QAAQ,KAAKA,QAAQ,KAAM,QACrCA,QAAQ,MAAMA,QAAQ,KAAM,SAC7B;QACJ;QACAuC,IAAI,SAAAA,GAAChD,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC,GAAGiB,MAAMF,GAAET,MAAM,EAAE,GAAGY,OAAOH,GAAET,MAAM,EAAE;AAC1F,iBAAOV,MAAK,KAAKY,KAAK,QACnBA,MAAOS,OAAO,KAAKA,OAAO,MAAOC,OAAO,MAAMA,OAAO,MAAM,QAC3DV,MAAMO,MAAK,MAAME,OAAO,KAAKA,OAAO,MAAMT,MAAOS,OAAO,KAAKA,OAAO,KAAMT,MAAOU,QAAQ,MAAMA,QAAQ,KAAM,SAC7G;QACJ;QACA2B,IAAI,SAAAA,GAACjD,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC,GAAGsB,WAAWP,GAAET,MAAM,EAAE;AAC3E,iBAAQS,MAAK,KAAKA,MAAK,IAAK,QACzBA,MAAK,KAAKO,YAAY,KAAKd,KAAK,SAChC;QACJ;QACAsC,IAAI,SAAAA,GAAClD,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGM,KAAK,CAACR,GAAE,CAAC,GAAGG,KAAKC,OAAOJ,GAAE,CAAC,CAAC,KAAKJ,IAAGS,OAAOF,MAAMH,GAAE,CAAC,EAAEM,MAAM,EAAE;AAC9F,iBAAOV,MAAK,KAAKY,KAAK,QACnB,CAACA,MAAMZ,MAAK,KAAKA,MAAK,KAAMS,QAAQ,KAAKA,QAAQ,KAAM,QACvD;QACJ;QACA0C,IAAI,SAAAA,GAACnD,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC,GAAGiB,MAAMF,GAAET,MAAM,EAAE,GAAGY,OAAOH,GAAET,MAAM,EAAE;AAC1F,iBAAOE,MAAMS,OAAO,KAAKC,QAAQ,KAAK,QACnCV,MAAOS,OAAO,KAAKA,OAAO,MAAOC,OAAO,MAAMA,OAAO,MAAM,QAC3DV,MAAMS,OAAO,KAAKT,MAAOS,OAAO,KAAKA,OAAO,KAAMT,MAAOU,QAAQ,MAAMA,QAAQ,KAAM,SACrF;QACJ;QACA8B,IAAI,SAAAA,IAACpD,IAAC;AAAA,iBAAKA,MAAK,IAAI,QAChBA,MAAK,IAAI,QACT;QAAO;QACXqD,IAAI,SAAAA,GAACrD,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGgB,KAAIhB,GAAE,CAAC,KAAK;AACtD,iBAAQJ,MAAK,KAAKA,MAAK,KAAMmB,MAAK,KAAKC,MAAK,IAAI,QAAQ;QACzD;QACAkC,IAAI,SAAAA,GAACtD,IAAM;AACV,cAAMI,KAAIC,OAAOL,EAAC,EAAEM,MAAM,GAAG,GAAGa,KAAIf,GAAE,CAAC,GAAGQ,KAAK,CAACR,GAAE,CAAC,GAAGkB,OAAOH,GAAET,MAAM,EAAE;AACvE,iBAAOE,MAAMU,QAAQ,IAAI,QACtBV,MAAMU,QAAQ,IAAI,QAClBV,OAAOU,QAAQ,KAAKA,QAAQ,MAAM,CAACV,KAAK,QACxC;QACJ;MACD;AAEAd,MAAAA,GAAEyD,KAAKzD,GAAEI;AACTJ,MAAAA,GAAE0D,KAAK1D,GAAEC;AACTD,MAAAA,GAAE2D,MAAM3D,GAAEC;AACVD,MAAAA,GAAE4D,KAAK5D,GAAEC;AACTD,MAAAA,GAAE6D,KAAK7D,GAAEI;AACTJ,MAAAA,GAAE8D,MAAM9D,GAAEC;AACVD,MAAAA,GAAE+D,KAAK/D,GAAEC;AACTD,MAAAA,GAAEgE,MAAMhE,GAAEC;AACVD,MAAAA,GAAEiE,KAAKjE,GAAEa;AACTb,MAAAA,GAAEkE,MAAMlE,GAAEI;AACVJ,MAAAA,GAAEmE,KAAKnE,GAAEC;AACTD,MAAAA,GAAEoE,KAAKpE,GAAEC;AACTD,MAAAA,GAAEqE,KAAKrE,GAAEa;AACTb,MAAAA,GAAEsE,KAAKtE,GAAEa;AACTb,MAAAA,GAAEuE,KAAKvE,GAAEC;AACTD,MAAAA,GAAEwE,KAAKxE,GAAEI;AACTJ,MAAAA,GAAEyE,KAAKzE,GAAEa;AACTb,MAAAA,GAAE0E,MAAM1E,GAAE6B;AACV7B,MAAAA,GAAE2E,KAAK3E,GAAEC;AACTD,MAAAA,GAAE4E,MAAM5E,GAAEC;AACVD,MAAAA,GAAE6E,KAAK7E,GAAEa;AACTb,MAAAA,GAAE8E,KAAK9E,GAAEa;AACTb,MAAAA,GAAE+E,KAAK/E,GAAEI;AACTJ,MAAAA,GAAEgF,KAAKhF,GAAEC;AACTD,MAAAA,GAAEiF,KAAKjF,GAAEI;AACTJ,MAAAA,GAAEkF,KAAKlF,GAAEoB;AACTpB,MAAAA,GAAEmF,MAAMnF,GAAEiC;AACVjC,MAAAA,GAAEoF,KAAKpF,GAAEC;AACTD,MAAAA,GAAEqF,KAAKrF,GAAEoC;AACTpC,MAAAA,GAAEsF,KAAKtF,GAAEa;AACTb,MAAAA,GAAEuF,KAAKvF,GAAEkC;AACTlC,MAAAA,GAAEwF,KAAKxF,GAAEkC;AACTlC,MAAAA,GAAEyF,KAAKzF,GAAEkC;AACTlC,MAAAA,GAAE0F,KAAK1F,GAAE2B;AACT3B,MAAAA,GAAE2F,KAAK3F,GAAEkC;AACTlC,MAAAA,GAAE4F,MAAM5F,GAAEC;AACVD,MAAAA,GAAE6F,KAAK7F,GAAEkC;AACTlC,MAAAA,GAAE8F,KAAK9F,GAAEC;AACTD,MAAAA,GAAE+F,MAAM/F,GAAEkC;AACVlC,MAAAA,GAAEgG,KAAKhG,GAAEC;AACTD,MAAAA,GAAEiG,KAAKjG,GAAEC;AACTD,MAAAA,GAAEkG,KAAKlG,GAAEkC;AACTlC,MAAAA,GAAEmG,KAAKnG,GAAEI;AACTJ,MAAAA,GAAEoG,KAAKpG,GAAEkC;AACTlC,MAAAA,GAAEqG,KAAKrG,GAAEC;AACTD,MAAAA,GAAEsG,MAAMtG,GAAEiB;AACVjB,MAAAA,GAAEuG,KAAKvG,GAAEC;AACTD,MAAAA,GAAEwG,KAAKxG,GAAEC;AACTD,MAAAA,GAAEyG,KAAKzG,GAAEC;AACTD,MAAAA,GAAE0G,MAAM1G,GAAEkC;AACVlC,MAAAA,GAAE2G,KAAK3G,GAAEkC;AACTlC,MAAAA,GAAE4G,KAAK5G,GAAEC;AACTD,MAAAA,GAAE6G,KAAK7G,GAAEC;AACTD,MAAAA,GAAE8G,KAAK9G,GAAEC;AACTD,MAAAA,GAAE+G,KAAK/G,GAAEkC;AACTlC,MAAAA,GAAEgH,KAAKhH,GAAEkC;AACTlC,MAAAA,GAAEiH,KAAKjH,GAAEC;AACTD,MAAAA,GAAEkH,KAAKlH,GAAEC;AACTD,MAAAA,GAAEmH,KAAKnH,GAAEa;AACTb,MAAAA,GAAEoH,KAAKpH,GAAEC;AACTD,MAAAA,GAAEqH,KAAKrH,GAAEC;AACTD,MAAAA,GAAEsH,MAAMtH,GAAEkC;AACVlC,MAAAA,GAAEuH,KAAKvH,GAAEC;AACTD,MAAAA,GAAEwH,KAAKxH,GAAEC;AACTD,MAAAA,GAAEyH,KAAKzH,GAAEG;AACTH,MAAAA,GAAE0H,MAAM1H,GAAEI;AACVJ,MAAAA,GAAE2H,KAAK3H,GAAEC;AACTD,MAAAA,GAAE4H,KAAK5H,GAAEC;AACTD,MAAAA,GAAE6H,MAAM7H,GAAEkC;AACVlC,MAAAA,GAAE8H,KAAK9H,GAAEa;AACTb,MAAAA,GAAE+H,KAAK/H,GAAEC;AACTD,MAAAA,GAAEgI,KAAKhI,GAAE8B;AACT9B,MAAAA,GAAEiI,KAAKjI,GAAEC;AACTD,MAAAA,GAAEkI,KAAKlI,GAAEC;AACTD,MAAAA,GAAEmI,KAAKnI,GAAEoB;AACTpB,MAAAA,GAAEoI,KAAKpI,GAAEkC;AACTlC,MAAAA,GAAEqI,KAAKrI,GAAEa;AACTb,MAAAA,GAAEsI,KAAKtI,GAAEa;AACTb,MAAAA,GAAEuI,MAAMvI,GAAEC;AACVD,MAAAA,GAAEwI,KAAKxI,GAAEC;AACTD,MAAAA,GAAEyI,KAAKzI,GAAEC;AACTD,MAAAA,GAAE0I,KAAK1I,GAAEkC;AACTlC,MAAAA,GAAE2I,KAAK3I,GAAEG;AACTH,MAAAA,GAAE4I,KAAK5I,GAAEC;AACTD,MAAAA,GAAE6I,KAAK7I,GAAEC;AACTD,MAAAA,GAAE8I,KAAK9I,GAAEkC;AACTlC,MAAAA,GAAE+I,KAAK/I,GAAEC;AACTD,MAAAA,GAAEgJ,KAAKhJ,GAAEC;AACTD,MAAAA,GAAEiJ,KAAKjJ,GAAEqD;AACTrD,MAAAA,GAAEkJ,KAAKlJ,GAAEa;AACTb,MAAAA,GAAEmJ,KAAKnJ,GAAEC;AACTD,MAAAA,GAAEoJ,MAAMpJ,GAAE2B;AACV3B,MAAAA,GAAEqJ,KAAKrJ,GAAEkC;AACTlC,MAAAA,GAAEsJ,MAAMtJ,GAAEC;AACVD,MAAAA,GAAEuJ,KAAKvJ,GAAEkC;AACTlC,MAAAA,GAAEwJ,KAAKxJ,GAAEC;AACTD,MAAAA,GAAEyJ,KAAKzJ,GAAEa;AACTb,MAAAA,GAAE0J,KAAK1J,GAAEkC;AACTlC,MAAAA,GAAE2J,MAAM3J,GAAEkC;AACVlC,MAAAA,GAAE4J,KAAK5J,GAAEkC;AACTlC,MAAAA,GAAE6J,KAAK7J,GAAEI;AAET,MAAA,8BAAeJ;;;;;AC9RA,WAAf,qBAA6C8J,SAAQ;AAKpD,QAAIA,YAAW,SAAS;AACvB,aAAOA;IACR;AACA,WAAOC,2BAA2BD,OAAM;EACzC;AAaA,WAASC,2BAA2BC,aAAa;AAChD,QAAMC,SAAQD,YAAYC,MAAMC,gBAAgB;AAChD,QAAI,CAACD,QAAO;AACX,YAAM,IAAIE,UAAS,mBAAAC,OAAoBJ,WAAW,CAAE;IACrD;AACA,WAAOC,OAAM,CAAC;EACf;AAnCA,MA4BMC;AA5BN;;AA4BA,MAAMA,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCjBJG;;;AAPrB;AACA;AAEA,MAIqBA,cAAW,4BAAA;AAC/B,iBAAAA,aAAYC,SAAQC,SAAS;AAAAC,UAAAA,iBAAA,MAAAH,YAAA;AAC5B,cAAMI,UAAUJ,aAAYK,mBAAmBJ,OAAM;AACrD,cAAIG,QAAQE,WAAW,GAAG;AACzB,kBAAM,IAAIC,WAAW,yBAAyBN,OAAM;UACrD;AACA,cAAIC,WAAWA,QAAQM,SAAS,YAAY;AAC3C,kBAAM,IAAID,WAAW,qCAAyC;UAC/D;AACA,eAAKE,IAAIC,4BAAoBC,qBAAqBP,QAAQ,CAAC,CAAC,CAAC;QAC9D;AAACQ,QAAAA,cAAAZ,cAAA,CAAA;UAAAa,KAAA;UAAAC,OACD,SAAAC,OAAOC,QAAQ;AACd,mBAAO,KAAKP,EAAEO,MAAM;UACrB;QAAC,CAAA,GAAA,CAAA;UAAAH,KAAA;UAAAC,OACD,SAAAT,mBAA0BD,SAAS;AAClC,gBAAI,OAAOA,YAAY,UAAU;AAChCA,wBAAU,CAACA,OAAO;YACnB;AACA,mBAAOA,QAAQa,OAAO,SAAAhB,SAAM;AAAA,qBAAIS,4BAAoBC,qBAAqBV,OAAM,CAAC;YAAC,CAAA;UAClF;QAAC,CAAA,CAAA;AAAA,eAAAD;MAAA,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACiVF,WAASkB,UAAUC,MAAM;AACvB,QAAIC,SAAOD,IAAI,MAAK,UAAU;AAC5B,YAAM,IAAIE,UAAUC,UAAU;IAChC;AACA,QAAI,OAAOH,SAAS,UAAU;AAC5B,YAAM,IAAII,WAAU,GAAAC,OAAIF,YAAU,IAAA,EAAAE,OAAKL,IAAI,CAAE;IAC/C;AACA,QAAIA,KAAKA,KAAKM,SAAS,CAAC,MAAM,KAAK;AACjCN,aAAOA,KAAKO,MAAM,GAAGP,KAAKM,SAAS,CAAC;IACtC;AACA,QAAIE,OAAMC,QAAQT,IAAI,IAAI,GAAG;AAC3B,YAAM,IAAII,WAAU,GAAAC,OAAIF,YAAU,IAAA,EAAAE,OAAKL,IAAI,CAAE;IAC/C;AACA,WAAOA;EACT;AAOA,WAASU,YAAYC,OAAO;AAC1BA,YAAQC,OAAOD,KAAK;AACpB,QAAIC,OAAOC,UAAU;AACnB,UAAI,CAACD,OAAOC,SAASF,KAAK,GAAG;AAC3B,cAAM,IAAIP,WAAU,GAAAC,OAAIS,cAAY,IAAA,EAAAT,OAAKM,KAAK,CAAE;MAClD;IACF;AACA,WAAOA;EACT;AAWA,WAASI,eAAeC,QAAQ;AAC9B,WAAO,IAAIA,WAAW;EACxB;AAEA,WAASC,WAAWD,QAAQ;AAC1B,WAAOA,SAAS,KAAKA,WAAW,KAAKD,eAAeC,MAAM;EAC5D;AAEA,WAASE,gBAAgBC,MAAM;AAC7B,QAAIA,KAAKb,SAAS,GAAG;AACnB,YAAM,IAAIJ,UAAS,6BAA8B;IACnD;AACA,WAAO,CACLQ,YAAYS,KAAK,CAAC,CAAC,GACnBpB,UAAUoB,KAAK,CAAC,CAAC,CAAC;EAEtB;MAzZaX,QAYPY,gBAMAC,cAOAC,uBAUeC,oBA6TfpB,YAqBAW;;;AAnYN;AAOA;AACA;AAMO,MAAMN,SAAQ,CACnB,UACA,UACA,QACA,OACA,QACA,SACA,WACA,MAAM;AAIR,MAAMY,iBAAiB,CACrB,QACA,QAAQ;AAIV,MAAMC,eAAe,CACnB,QACA,SACA,QAAQ;AAIV,MAAMC,wBAAwB,CAC5B,UACA,UAAU;AAGZ,MAKqBC,qBAAkB,4BAAA;AAQrC,iBAAAA,sBAAwC;AAAA,cAA5BC,UAAOC,UAAAnB,SAAA,KAAAmB,UAAA,CAAA,MAAAC,SAAAD,UAAA,CAAA,IAAG,CAAA;AAAE,cAAEE,UAAOF,UAAAnB,SAAA,KAAAmB,UAAA,CAAA,MAAAC,SAAAD,UAAA,CAAA,IAAG,CAAC;AAACG,UAAAA,iBAAA,MAAAL,mBAAA;AACpC,cACEM,UAGEF,QAHFE,SACAC,QAEEH,QAFFG,OACAC,gBACEJ,QADFI;AAGF,eAAKF,UAAU;AACf,eAAKC,QAAQ;AACb,eAAKC,gBAAgB;AAGrB,cAAIF,YAAYH,QAAW;AACzB,gBAAIN,eAAeX,QAAQoB,OAAO,IAAI,GAAG;AACvC,oBAAM,IAAIzB,WAAU,6BAAAC,OAA8BwB,OAAO,CAAE;YAC7D;AACA,iBAAKA,UAAUA;UACjB;AAGA,cAAIC,UAAUJ,QAAW;AACvB,gBAAIL,aAAaZ,QAAQqB,KAAK,IAAI,GAAG;AACnC,oBAAM,IAAI1B,WAAU,2BAAAC,OAA4ByB,KAAK,CAAE;YACzD;AACA,iBAAKA,QAAQA;UACf;AAGA,cAAIC,kBAAkBL,QAAW;AAC/B,gBAAIJ,sBAAsBb,QAAQsB,aAAa,IAAI,GAAG;AACpD,oBAAM,IAAI3B,WAAU,mCAAAC,OAAoC0B,aAAa,CAAE;YACzE;AACA,iBAAKA,gBAAgBA;UACvB;AAIA,cAAI,OAAOP,YAAY,UAAU;AAC/BA,sBAAU,CAACA,OAAO;UACpB;AAEAA,kBAAQQ,KAAKC,iBAAiB,CAAC;AAE/B,eAAKC,SAASX,oBAAmBY,mBAAmBX,SAAS;YAC3DO,eAAe,KAAKA;UACtB,CAAC,EAAE,CAAC;AACJ,cAAI,CAAC,KAAKG,QAAQ;AAChB,kBAAM,IAAIE,MAAM,+BAA+B;UACjD;AAGA,cAAIC,YAAYF,mBAAmB,KAAKD,MAAM,EAAE5B,SAAS,GAAG;AAC1D,iBAAKgC,cAAc,IAAID,YAAY,KAAKH,MAAM;UAChD,OAAO;AACLK,oBAAQC,KAAI,IAAAnC,OAAK,KAAK6B,QAAM,2BAAA,CAA2B;UACzD;AAGA,cAAI,OAAOO,SAAS,eAAeA,KAAKC,cAAc;AACpD,iBAAKC,eAAe,IAAIF,KAAKC,aAAa,KAAKR,MAAM;AACrD,iBAAKU,kBAAkB,KAAKD,aAAaE,gBAAgB,EAAED;UAC7D,OAAO;AACL,iBAAKA,kBAAkB;UACzB;AAEA,eAAKV,SAASY,eAAc,KAAKZ,QAAQ;YACvCH,eAAe,KAAKA;UACtB,CAAC;QACH;AAEAgB,QAAAA,cAAAxB,qBAAA,CAAA;UAAAyB,KAAA;UAAArC,OAYA,SAAAsC,UAAS;AACP,gBAAAC,mBAAuBhC,gBAAgBO,SAAS,GAAC0B,oBAAAC,eAAAF,kBAAA,CAAA,GAA1ClC,SAAMmC,kBAAA,CAAA,GAAEnD,OAAImD,kBAAA,CAAA;AACnB,mBAAO,KAAKE,QAAQrC,QAAQhB,IAAI,EAAEsD,QAAQ,OAAO,KAAKC,aAAaC,KAAKC,IAAIzC,MAAM,CAAC,CAAC;UACtF;;;;;;;;;;;;;;;;;;;;;;;;QAEA,GAAA;UAAAgC,KAAA;UAAArC,OAuBA,SAAA+C,gBAAgB;AACd,gBAAAC,oBAAuBzC,gBAAgBO,SAAS,GAACmC,oBAAAR,eAAAO,mBAAA,CAAA,GAA1C3C,SAAM4C,kBAAA,CAAA,GAAE5D,OAAI4D,kBAAA,CAAA;AACnB,gBAAMC,OAAO,KAAKR,QAAQrC,QAAQhB,IAAI;AACtC,gBAAM8D,aAAaD,KAAKpD,QAAQ,KAAK;AAErC,gBAAIqD,aAAa,GAAG;AAClB,qBAAO,CAAC;gBACNC,MAAM;gBACNpD,OAAOkD;cACT,CAAC;YACH;AACA,gBAAIG,QAAQ,CAAA;AACZ,gBAAIF,aAAa,GAAG;AAClBE,oBAAMhC,KAAK;gBACT+B,MAAM;gBACNpD,OAAOkD,KAAKtD,MAAM,GAAGuD,UAAU;cACjC,CAAC;YACH;AACAE,oBAAQA,MAAM3D,OACZ,KAAK4D,oBAAoBT,KAAKC,IAAIzC,MAAM,CAAC,EACtCkD,IAAI,SAAAC,MAAI;AAAA,qBAAAC,cAAAA,cAAA,CAAA,GAAUD,IAAI,GAAA,CAAA,GAAA;gBAAEnE;cAAI,CAAA;YAAA,CAAG,CACpC;AACA,gBAAI8D,aAAa,MAAMxD,SAASuD,KAAKvD,SAAS,GAAG;AAC/C0D,oBAAMhC,KAAK;gBACT+B,MAAM;gBACNpD,OAAOkD,KAAKtD,MAAMuD,aAAa,MAAMxD,MAAM;cAC7C,CAAC;YACH;AACA,mBAAO0D;UACT;;;;;;;;;;;QAEA,GAAA;UAAAhB,KAAA;UAAArC,OAUA,SAAA0C,QAAQ1C,OAAOX,MAAM;AAmBnB,gBAAMqE,eAAeC,cAAc,KAAKpC,MAAM,EAAE,KAAKJ,KAAK,EAAE9B,IAAI;AAGhE,gBAAI,OAAOqE,iBAAiB,UAAU;AACpC,qBAAOA;YACT;AAEA,gBAAI,KAAKxC,YAAY,QAAQ;AAE3B,kBAAIlB,UAAU,MAAMA,UAAU,IAAI;AAChC,oBAAM4D,UAAUF,aAAY,WAAAhE,OAAYM,UAAU,KAAK,KAAK,MAAM6C,KAAKC,IAAI9C,KAAK,CAAC,CAAA;AACjF,oBAAI4D,SAAS;AACX,yBAAOA;gBACT;cACF,WAES5D,UAAU,KAAKA,UAAU,GAAG;AACnC,oBAAM4D,WAAUF,aAAY,OAAAhE,OAAQM,UAAU,IAAI,KAAK,MAAM6C,KAAKC,IAAI9C,KAAK,CAAC,CAAA;AAC5E,oBAAI4D,UAAS;AACX,yBAAOA;gBACT;cACF,WAES5D,UAAU,GAAG;AACpB,oBAAI0D,aAAaG,SAAS;AACxB,yBAAOH,aAAaG;gBACtB;cACF;YACF;AAIA,gBAAMC,qBAAqBJ,aAAapD,WAAWN,KAAK,IAAI,SAAS,QAAQ;AAG7E,gBAAI,OAAO8D,uBAAuB,UAAU;AAC1C,qBAAOA;YACT;AAIA,gBAAMC,aAAa,KAAKpC,eAAe,KAAKA,YAAYqC,OAAOnB,KAAKC,IAAI9C,KAAK,CAAC,KAAK;AAGnF,mBAAO8D,mBAAmBC,UAAU,KAAKD,mBAAmBG;UAC9D;;;;;;;QAEA,GAAA;UAAA5B,KAAA;UAAArC,OAMA,SAAA4C,cAAavC,QAAQ;AACnB,mBAAO,KAAK2B,eAAe,KAAKA,aAAaM,OAAOjC,MAAM,IAAI6D,OAAO7D,MAAM;UAC7E;;;;;;;QAEA,GAAA;UAAAgC,KAAA;UAAArC,OAMA,SAAAsD,oBAAoBjD,QAAQ;AAG1B,mBAAO,KAAK2B,gBAAgB,KAAKA,aAAae,gBAC5C,KAAKf,aAAae,cAAc1C,MAAM,IACtC,CAAC;cACC+C,MAAM;cACNpD,OAAO,KAAK4C,aAAavC,MAAM;YACjC,CAAC;UACL;;;;;;QAEA,GAAA;UAAAgC,KAAA;UAAArC,OAKA,SAAAkC,kBAAkB;AAChB,mBAAO;cACLX,QAAQ,KAAKA;cACbJ,OAAO,KAAKA;cACZD,SAAS,KAAKA;cACde,iBAAiB,KAAKA;YACxB;UACF;QAAC,CAAA,CAAA;AAAA,eAAArB;MAAA,GAAA;AAiBHA,yBAAmBY,qBAAqB,SAASX,SAAuB;AAAA,YAAdG,UAAOF,UAAAnB,SAAA,KAAAmB,UAAA,CAAA,MAAAC,SAAAD,UAAA,CAAA,IAAG,CAAC;AAEnE,YAAI,OAAOD,YAAY,UAAU;AAC/BA,oBAAU,CAACA,OAAO;QACpB,WAAW,CAACsD,MAAMC,QAAQvD,OAAO,GAAG;AAClC,gBAAM,IAAItB,UAAU,4BAA4B;QAClD;AACA,eAAOsB,QAAQwD,OAAO,SAAA9C,SAAM;AAAA,iBAAIY,eAAcZ,SAAQP,OAAO;QAAC,CAAA;MAChE;AAMAJ,yBAAmB0D,YAAYC;AAM/B3D,yBAAmB4D,mBAAmBA;AAMtC5D,yBAAmBU,mBAAmBA;AAKtCV,yBAAmBc,cAAcA;AAKjC,MAAMlC,aAAa;AAqBnB,MAAMW,eAAe;;;;;ACnYrB;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCOqBsE;;;AAPrB,MAOqBA,SAAK,4BAAA;AACzB,iBAAAA,SAAc;AAAAC,UAAAA,iBAAA,MAAAD,MAAA;AACb,eAAKE,QAAQ,CAAC;QACf;AAACC,QAAAA,cAAAH,QAAA,CAAA;UAAAI,KAAA;UAAAC,OAED,SAAAC,OAAa;AACZ,gBAAIJ,SAAQ,KAAKA;AAAK,qBAAAK,OAAAC,UAAAC,QADhBC,OAAI,IAAAC,MAAAJ,IAAA,GAAAK,OAAA,GAAAA,OAAAL,MAAAK,QAAA;AAAJF,mBAAIE,IAAA,IAAAJ,UAAAI,IAAA;YAAA;AAEV,qBAAAC,KAAA,GAAAC,QAAkBJ,MAAIG,KAAAC,MAAAL,QAAAI,MAAE;AAAnB,kBAAMT,MAAGU,MAAAD,EAAA;AACb,kBAAIE,SAAOb,MAAK,MAAK,UAAU;AAC9B;cACD;AACAA,cAAAA,SAAQA,OAAME,GAAG;YAClB;AACA,mBAAOF;UACR;QAAC,GAAA;UAAAE,KAAA;UAAAC,OAED,SAAAW,OAAa;AAAA,qBAAAC,QAAAT,UAAAC,QAANC,OAAI,IAAAC,MAAAM,KAAA,GAAAC,QAAA,GAAAA,QAAAD,OAAAC,SAAA;AAAJR,mBAAIQ,KAAA,IAAAV,UAAAU,KAAA;YAAA;AACV,gBAAMb,QAAQK,KAAKS,IAAI;AACvB,gBAAMC,UAAUV,KAAKS,IAAI;AACzB,gBAAIjB,SAAQ,KAAKA;AACjB,qBAAAmB,MAAA,GAAAC,SAAkBZ,MAAIW,MAAAC,OAAAb,QAAAY,OAAE;AAAnB,kBAAMjB,MAAGkB,OAAAD,GAAA;AACb,kBAAIN,SAAOb,OAAME,GAAG,CAAC,MAAK,UAAU;AACnCF,gBAAAA,OAAME,GAAG,IAAI,CAAC;cACf;AACAF,cAAAA,SAAQA,OAAME,GAAG;YAClB;AACA,mBAAOF,OAAMkB,OAAO,IAAIf;UACzB;QAAC,CAAA,CAAA;AAAA,eAAAL;MAAA,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBa,WAAf,aAAqCuB,SAASC,uBAAuB;AAIpE,aAAAC,YAAAC,gCAAmBH,OAAO,GAAAI,OAAA,EAAAA,QAAAF,UAAA,GAAAG,QAAE;AAAA,UAAnBC,UAAMF,MAAAG;AACd,UAAIN,sBAAsBK,OAAM,GAAG;AAClC,eAAOA;MACR;AACA,UAAME,QAAQF,QAAOG,MAAM,GAAG;AAC9B,aAAOD,MAAME,SAAS,GAAG;AACxBF,cAAMG,IAAI;AACVL,QAAAA,UAASE,MAAMI,KAAK,GAAG;AACvB,YAAIX,sBAAsBK,OAAM,GAAG;AAClC,iBAAOA;QACR;MACD;IACD;AAEA,UAAM,IAAIO,MAAK,8DAAAC,OAA+Dd,QAAQY,KAAK,IAAI,CAAC,CAAE;EACnG;AAmBO,WAASG,8BAA8B;AAI7C,QAAMC,mBAAkB,OAAOC,SAAI,cAAA,cAAAC,SAAJD,IAAI,OAAK;AACxC,WAAOD,mBAAmB,OAAOC,KAAKE,mBAAmB;EAC1D;;;;;;;;;;;;;;;AC1De,WAAf,cAAsCC,QAAQ;AAC7C,WAAOC,UAASD,MAAM,MACrBE,MAAMC,QAAQH,OAAOI,KAAK;IAE1BF,MAAMC,QAAQH,OAAOK,SAAS;IAE9BH,MAAMC,QAAQH,OAAOM,OAAO,KAC5B,OAAON,OAAOM,YAAY,YAC1BJ,MAAMC,QAAQH,OAAOO,MAAM,KAC3B,OAAOP,OAAOO,WAAW;IAEzBL,MAAMC,QAAQH,OAAOQ,KAAK;IAE1B,OAAOR,OAAOS,WAAW;EAE3B;AAGA,WAASR,UAASD,QAAQ;AACzB,WAAOU,SAAOV,MAAM,MAAKW,UAAaX,WAAW,QAAQA,OAAOY,gBAAgBC;EACjF;MAHMA;;;AAAN,MAAMA,qBAAqB,CAAC,EAAED;;;;;ACHvB,WAASE,iBAAiBC,MAAM;AACtC,YAAQA,MAAI;MACX,KAAK;AACJ,eAAO;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;IACT;EACD;AA/BA,MAAaL,QAEAC,MAEAC,KAEAC,MAGAC,OAGAC;AAZb;;AAAO,MAAML,SAAS;AAEf,MAAMC,OAAO,KAAKD;AAElB,MAAME,MAAM,KAAKD;AAEjB,MAAME,OAAO,IAAID;AAGjB,MAAME,QAAQ,QAAQF;AAGtB,MAAMG,OAAQ,SAAS,MAAOH;;;;;ACVtB,WAAf,mBAA2CI,MAAM;AAEhD,QAAIA,KAAKC,WAAWC,QAAW;AAC9B,aAAOF,KAAKC;IACb;AAEA,WAAOE,iBAAiBH,KAAKI,QAAQJ,KAAKK,QAAQ,KAAK;EACxD;AATA;;;;;;;ACAO,WAASC,iBAAiBC,QAAO;AACvC,YAAQA,QAAK;MACZ,KAAK;AACJ,eAAOC,KAAKC;MACb;AACC,eAAOD,KAAKD;IACd;EACD;AAGO,WAASG,gCAAgCH,QAAO;AACtD,YAAQA,QAAK;MACZ,KAAK;AAGJ,eAAO;MACR;AAGC,eAAO;IACT;EACD;AArBA;;;;;;;;;;;;;;ACGe,WAAf,eAAuCI,MAAIC,MAOxC;AAAA,QANFC,WAAQD,KAARC,UACAC,YAASF,KAATE,WAEAC,OAAGH,KAAHG,KACAC,SAAMJ,KAANI,QACAC,SAAKL,KAALK;AAEA,QAAIC;AAEJ,QAAIL,UAAU;AACb,UAAIA,SAASM,MAAMN,SAASO,MAAM;AACjCF,QAAAA,WAAUP,KAAI,iBAAAU,OAAkBR,SAASM,MAAMN,SAASO,IAAI,CAAA;MAC7D;IACD;AACA,QAAIF,aAAYI,QAAW;AAE1B,UAAIX,KAAKY,cAAcD,QAAW;AAEjCJ,QAAAA,WAAUP,KAAKY;AAEf,YAAI,OAAOL,aAAY,YAAY;AAClCA,UAAAA,WAAUA,SAAQH,MAAKC,MAAM;QAC9B;MACD;IACD;AACA,QAAIE,aAAYI,QAAW;AAC1BJ,MAAAA,WAAUP,KAAKO;IAChB;AAGA,QAAIM,SAAON,QAAO,MAAK,UAAU;AAChC,UAAIL,YAAYA,SAASM,MAAMD,SAAQL,SAASM,EAAE,MAAMG,QAAW;AAClEJ,QAAAA,WAAUA,SAAQL,SAASM,EAAE;MAC9B,OAAO;AACND,QAAAA,WAAUA,SAAO,SAAA;MAClB;IACD;AACA,QAAI,OAAOA,aAAY,YAAY;AAClCA,MAAAA,WAAUA,SAAQJ,WAAW;QAC5BE;QACAS,mBAAiB,SAAAA,kBAACC,QAAQC,UAAU;AACnC,iBAAOF,mBACNC,QACAC,YAAYd,YAAYA,SAASe,UACjC;YAAEX,OAAAA;UAAM,CACT;QACD;MACD,CAAC;IACF;AAGA,QAAIC,aAAYI,QAAW;AAC1B,UAAIX,KAAKkB,MAAM;AACd,YAAIlB,KAAKkB,KAAKf,WAAW;UACxBC,KAAAA;UACAC;QACD,CAAC,GAAG;AAEHE,UAAAA,WAAU;QACX,OAAO;AAENA,UAAAA,WAAU;QACX;MACD;IACD;AACA,QAAIA,aAAYI,QAAW;AAC1B,UAAIT,UAAU;AACb,YAAIF,KAAKiB,YAAYf,SAASe,UAAU;AACvCV,UAAAA,WAAUO,mBAAkBd,KAAKiB,UAAUf,SAASe,UAAU;YAAEX,OAAAA;UAAM,CAAC;QACxE;MACD,OAAO;AAENC,QAAAA,WAAU;MACX;IACD;AAEA,QAAIA,aAAYI,QAAW;AAC1BQ,cAAQC,KAAK,6DAA6DC,KAAKC,UAAUtB,MAAM,MAAM,CAAC,CAAC;IACxG;AACA,WAAOO;EACR;AAEA,WAASO,mBAAkBC,QAAQC,UAAQO,OAAa;AAAA,QAATjB,SAAKiB,MAALjB;AAC9C,QAAMkB,eAAeC,iBAAiBV,MAAM;AAO5C,QAAIW;AACJ,QAAIV,aAAa,OAAO;AACvBU,uBAAiBD,iBAAiBV,MAAM;IACzC,OAAO;AACNW,uBAAiBD,iBAAiBT,QAAQ;IAC3C;AACA,QAAIQ,iBAAiBb,UAAae,mBAAmBf,QAAW;AAC/D,aAAOa,eAAeE,kBAAkB,IAAIC,gCAAgCrB,MAAK;IAClF;EACD;;;AAvGA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACyBe,WAAf,QAAgCsB,QAAOC,eAAaC,MAA8C;AAAA,QAA1CC,OAAGD,KAAHC,KAAKC,SAAMF,KAANE,QAAQC,SAAKH,KAALG,OAAOC,QAAKJ,KAALI,OAAOC,cAAWL,KAAXK;AAElFP,IAAAA,SAAQQ,mBAAmBR,QAAOM,KAAK;AACvC,QAAMG,OAAOC,SAASV,QAAOC,eAAe;MAAEE,KAAAA;MAAKC;MAAQC,OAAAA;IAAM,CAAC;AAClE,QAAIE,aAAa;AAChB,UAAIE,MAAM;AACT,YAAME,WAAWX,OAAMA,OAAMY,QAAQH,IAAI,IAAI,CAAC;AAC9C,YAAMI,WAAWb,OAAMA,OAAMY,QAAQH,IAAI,IAAI,CAAC;AAC9C,eAAO,CAACE,UAAUF,MAAMI,QAAQ;MACjC;AACA,aAAO,CAACC,QAAWA,QAAWd,OAAM,CAAC,CAAC;IACvC;AACA,WAAOS;EACR;AAEA,WAASC,SAASV,QAAOC,eAAac,OAA0B;AAAA,QAAtBZ,OAAGY,MAAHZ,KAAKC,SAAMW,MAANX,QAAQC,SAAKU,MAALV;AAEtD,QAAIL,OAAMgB,WAAW,GAAG;AACvB;IACD;AAGA,QAAMC,KAAIC,aAAalB,QAAOC,eAAe;MAC5CE,KAAAA;MACAC,QAAQA,UAAUH,gBAAgB;MAClCI,OAAAA;IACD,CAAC;AAGD,QAAIY,OAAM,IAAI;AACb;IACD;AAEA,QAAMR,OAAOT,OAAMiB,EAAC;AAMpB,QAAIR,KAAKU,aAAa;AAErB,UAAMC,wBAAwBC,iBAAiBhB,MAAK,EAAGiB,KAAKC,IAAItB,aAAa,IAAIuB,mBAAmBf,IAAI,IAAKA,KAAKU,WAAW,IAAIV,KAAKU;AAItI,UAAIC,0BAA0B,KAAKH,KAAI,GAAG;AACzC,eAAOjB,OAAMiB,KAAI,CAAC;MACnB;IACD;AAEA,WAAOR;EACR;AAWA,WAASS,aAAalB,QAAOC,eAAewB,SAAgB;AAAA,QAAPR,KAACS,UAAAV,SAAA,KAAAU,UAAA,CAAA,MAAAZ,SAAAY,UAAA,CAAA,IAAG;AACxD,QAAMC,WAAUC,eAAe5B,OAAMiB,EAAC,GAACY,eAAA;MACtClB,UAAUX,OAAMiB,KAAI,CAAC;MACrBa,WAAWL,QAAQtB,MAAMF,gBAAgB;IAAI,GAC1CwB,OAAO,CACV;AAED,QAAIE,aAAYb,QAAW;AAC1B,aAAOG,KAAI;IACZ;AAGA,QAAIK,KAAKC,IAAItB,aAAa,IAAI0B,UAAS;AACtC,aAAOV,KAAI;IACZ;AAEA,QAAIA,OAAMjB,OAAMgB,SAAS,GAAG;AAC3B,aAAOC;IACR;AAEA,WAAOC,aAAalB,QAAOC,eAAewB,SAASR,KAAI,CAAC;EACzD;AAQA,WAAST,mBAAmBR,QAAOM,OAAO;AACzC,WAAON,OAAM+B,OAAO,SAAAC,OAAwB;AAAA,UAArBC,OAAID,MAAJC,MAAMC,WAAQF,MAARE;AAE5BD,aAAOA,QAAQC;AAGf,UAAID,MAAM;AACT,eAAO3B,MAAMM,QAAQqB,IAAI,KAAK;MAC/B;AAIA,aAAO;IACR,CAAC;EACF;;;AAnIA;AACA;AACA;;;;;ACSe,WAAf,2BAAmDE,MAAMC,WAASC,MAAkB;AAAA,QAAdC,OAAGD,KAAHC,KAAKC,SAAKF,KAALE;AAE1E,QAAI,CAACC,iBAAiBL,IAAI,GAAG;AAG5B;IACD;AACA,QAAMM,kBAAkBD,iBAAiBL,IAAI,IAAI;AACjD,QAAMO,SAASN,YAAYE;AAC3B,QAAMK,gBAAgBC,KAAKC,IAAIT,YAAYE,IAAG;AAC9C,QAAMQ,gBAAgBC,iBAAiBR,MAAK,EAAEI,gBAAgBF,eAAe,IAAIA;AACjF,QAAIC,QAAQ;AACX,UAAII,gBAAgB,GAAG;AAEtB,eAAQH,gBAAgBG,gBACvBE,+BAA+BT,QAAOE,eAAe;MACvD,OAAO;AAGN,eAAQE,gBAAgBG,gBAAiB;MAC1C;IACD;AAEA,WAAO,EAAEH,gBAAgBG,iBAAiBG,2BAA2BV,QAAOE,eAAe;EAC5F;AAEA,WAASQ,2BAA2BV,QAAOE,iBAAiB;AAC3D,WAAOS,gCAAgCX,MAAK,IAAIE;EACjD;AAEA,WAASO,+BAA+BT,QAAOE,iBAAiB;AAC/D,YAAQ,IAAIS,gCAAgCX,MAAK,KAAKE,kBAAkB;EACzE;AA3CA;;;AACA;;;;;ACkBe,WAAf,oBAA4CU,MAAMC,MAAIC,MAA8C;AAAA,QAA1CC,WAAQD,KAARC,UAAUC,WAAQF,KAARE,UAAUC,OAAGH,KAAHG,KAAKC,SAAMJ,KAANI,QAAQC,SAAKL,KAALK;AAC1F,QAAMC,YAAYR,KAAKS,UAAUT,KAAKS,QAAQ,IAAIT;AAElD,QAAMU,8BAA6B,SAA7BA,4BAA8BC,OAAI;AAAA,aAAKC,2BAA4BD,OAAMH,WAAW;QAAEH,KAAAA;QAAKE,OAAAA;MAAM,CAAC;IAAC;AAgBzG,QAAMM,mBAAmBC,oBAAoBR,SAASL,OAAOG,UAAUI,WAAW;MACjFF;MACAD,KAAAA;MACAE,OAAAA;MACAJ,UAAUG,SAASH,WAAWF;;IAE/B,CAAC;AAED,QAAIY,qBAAqBE,QAAW;AAGnC;IACD;AAEA,QAAIC;AAEJ,QAAIf,MAAM;AACT,UAAIA,KAAKgB,qBAAqB;AAC7BD,2BAAmBf,KAAKgB,oBAAoBT,WAAW;UACtDE,4BAAAA;UACAQ;UACAb,KAAAA;UACAC;UACAC,OAAAA;QACD,CAAC;MACF;AAEA,UAAIS,qBAAqBD,QAAW;AAEnC,YAAMJ,OAAOV,KAAKU,QAAQV,KAAKkB;AAC/B,YAAIR,MAAM;AAKTK,6BAAmBN,4BAA2BC,IAAI;QACnD;MACD;IACD;AAEA,QAAIK,qBAAqBD,QAAW;AACnC,aAAOF;IACR;AAEA,WAAOO,KAAKC,IAAIL,kBAAkBH,gBAAgB;EACnD;AAEO,WAASS,iBAAiBC,mBAAmBf,WAASgB,OAAoC;AAAA,QAAhCnB,OAAGmB,MAAHnB,KAAKC,SAAMkB,MAANlB,QAAQC,SAAKiB,MAALjB,OAAOJ,WAAQqB,MAARrB;AAMpF,QAAMsB,WAAUC,eAAeH,mBAAmB;MAAEf;MAAWH,KAAAA;MAAKC;MAAQC,OAAAA;MAAOJ;IAAS,CAAC;AAC7F,QAAIsB,aAAYV,QAAW;AAC1B;IACD;AACA,QAAIT,QAAQ;AAMX,aAAOE,YAAYiB,WAAU,MAAO;IACrC,OAAO;AAQN,UAAIA,aAAY,KAAKjB,cAAcH,MAAK;AACvC,eAAOsB;MACR;AAEA,aAAOnB,YAAYiB,WAAU;IAC9B;EACD;AAEO,WAASX,oBAAoBb,MAAMO,WAASoB,OAKhD;AAAA,QAJFvB,OAAGuB,MAAHvB,KACAC,SAAMsB,MAANtB,QACAC,SAAKqB,MAALrB,OACAJ,WAAQyB,MAARzB;AAEA,QAAIF,MAAM;AACT,UAAM4B,gBAAgBP,iBAAiBrB,MAAMO,WAAW;QACvDH,KAAAA;QACAC;QACAC,OAAAA;QACAJ;MACD,CAAC;AACD,UAAI0B,kBAAkBd,QAAW;AAChC;MACD;AACA,aAAOc,gBAAgBxB;IACxB,OAAO;AACN,UAAIC,QAAQ;AAGX,eAAOE,YAAYH,OAAM;MAC1B,OAAO;AAEN,eAAOsB;MACR;IACD;EACD;AAjJA,MAKMG,MACOH;AANb;;;AACA;AACA;AAGA,MAAMG,OAAO,MAAM,KAAK,KAAK,KAAK;AAC3B,MAAMH,YAAW,MAAOG;;;;;ACFxB,WAASC,eAAcC,SAAQ;AACrC,WAAOC,aAAYD,OAAM;EAC1B;AAEO,WAASE,eAAcC,YAAY;AACzC,QAAI,CAACA,YAAY;AAChB,YAAM,IAAIC,MAAM,8CAA8C;IAC/D;AAGAH,IAAAA,aAAYE,WAAWH,MAAM,IAAIG;EAClC;AAfA,MAEMF;AAFN,MAAAI,wBAAA;;AAEA,MAAMJ,eAAc,CAAC;;;;;ACFrB,MA4BA;AA5BA,MAAAK,cAAA;;AA4BA,MAAA,gBAAe,CACd;QACCC,UAAU;MACX,GACA;QACCA,UAAU;MACX,GACA;QACCA,UAAU;MACX,GACA;QACCA,UAAU;MACX,GACA;QACCA,UAAU;MACX,GACA;QACCA,UAAU;MACX,GACA;QACCA,UAAU;MACX,GACA;QACCA,UAAU;MACX,CAAC;;;;;ACpDF,MAmCAC;AAnCA,MAAAC,cAAA;;MAAAA;AAmCA,MAAAD,iBAAe;QACdE,OAAOC;QACPC,QAAQ;MACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCPA;;;AA/BA,MAAAC;AA+BA,MAAA,sBAAAC,eAAAA,eAAA,CAAA,GACIC,cAAK,GAAA,CAAA,GAAA;;QAERC,OAAOD,eAAMC,MAAMC,OAAO,SAAAC,MAAI;AAAA,iBAAIA,KAAKC,aAAa;QAAQ,CAAA;MAAC,CAAA;;;;;AClC9D,MAoCA;AApCA;;;AAoCA,MAAA,sBAAe,CACd;;;QAGCC,QAAQ;;QAERC,MAAM;MACP,GACA;;;QAGCC,WAAW;;QAEXC,mBAAmB;;;QAGnBH,QAAQ;;QAERC,MAAM;MACP,GACA;;QAECC,WAAW;;;QAGXF,QAAQI;;QAERH,MAAM;MACP,GACA;;QAECC,WAAW,MAAME;;;;;;;QAOjBC,aAAa;;;QAGbL,QAAQI;;QAERH,MAAM;MACP,GACA;;QAECC,WAAW,OAAOE;;;QAGlBJ,QAAQ,MAAMM;;;QAGdL,MAAM;MACP,GACA;;QAECC,WAAW,OAAOE;QAClBG,sBAAsB,OAAOH;;;QAG7BJ,QAAQM;;QAERL,MAAM;MACP,GACA;;QAECC,WAAY,OAAO,KAAMM;;;QAGzBR,QAAQQ;;QAERP,MAAM;MACP,GACA;;QAECC,WAAW,MAAMM;;;QAGjBR,QAAQS;;QAERR,MAAM;MACP,GACA;;QAECC,WAAW,MAAMO;;;QAGjBT,QAAQU;;QAERT,MAAM;MACP,GACA;;QAECC,WAAW,OAAOQ;;;QAGlBV,QAAQW;;QAERV,MAAM;MACP,CAAC;;;;;ACxIF,MAcAW;AAdA,MAAAC,oBAAA;;;AAcA,MAAAD,uBAAe;QACdE,WAAWC;QACXC,SAAS;QACTC,OAAO,CACN,OACA,UACA,QACA,OACA,QACA,SACA,MAAM;MAER;;;;;AC1BA,MAqCA;AArCA;;;AAqCA,MAAA,0BAAe;QACdC,WAAWC;QACXC,SAAS;QACTC,OAAO,CACN,OACA,UACA,QACA,OACA,QACA,SACA,MAAM;MAER;;;;;AC5BO,WAASC,QAAQC,OAAO;AAC9B,WAAOA,iBAAiBC,OAAOD,QAAQ,IAAIC,KAAKD,KAAK;EACtD;AAvBA,MAAAE,gBAAA;;;;;;ACAA;;AAeA,MAAAC;;;;;ACfA,MAYMC,QAcAC,aAGAC,aA2BAC,iBAqEN;AA7HA;;;AACA;AAWA,MAAMH,SAAQ,CACb;QACCI,UAAU;MACX,GACA;QACCA,UAAU;MACX,GACA;QACCA,UAAU;MACX,CAAC;AAKF,MAAMH,cAAa,CAAC;AAGpB,MAAMC,cAAc;QACnBG,SAAO,SAAAA,SAACC,WAASC,MAAiC;AAAA,cAA7BC,SAAMD,KAANC,QAAQC,oBAAiBF,KAAjBE;AAG5B,iBAAOA,kBAAkB,KAAK;QAC/B;QACAC,QAAM,SAAAA,QAACC,OAAOC,SAAQ;AAErB,cAAI,CAACX,YAAWW,OAAM,GAAG;AACxBX,YAAAA,YAAWW,OAAM,IAAI,CAAC;UACvB;AAEA,cAAI,CAACX,YAAWW,OAAM,EAAEC,UAAU;AAEjCZ,YAAAA,YAAWW,OAAM,EAAEC,WAAW,IAAIC,KAAKC,eAAeH,SAAQ;cAC7DI,OAAO;cACPC,KAAK;YACN,CAAC;UACF;AAEA,iBAAOhB,YAAWW,OAAM,EAAEC,SAASH,OAAOQ,QAAQP,KAAK,CAAC;QACzD;MACD;AAKA,MAAMR,kBAAkB;QACvBE,SAAO,SAAAA,SAACC,WAASa,OAAc;AAAA,cAAVX,SAAMW,MAANX;AACpB,cAAIA,QAAQ;AAQX,gBAAMY,gBAAgB,IAAIC,KAAK,IAAIA,KAAKf,SAAS,EAAEgB,YAAY,GAAG,CAAC,EAAEC,QAAQ,IAAI;AAEjF,oBAAQjB,YAAYc,iBAAiB;UACtC,OAAO;AAMN,gBAAMI,gBAAgB,IAAIH,KAAK,IAAIA,KAAKf,SAAS,EAAEgB,YAAY,IAAI,GAAG,CAAC,EAAEC,QAAQ;AAEjF,oBAAQC,gBAAgBlB,aAAa;UACtC;QACD;QACAI,QAAM,SAAAA,QAACC,OAAOC,SAAQ;AAErB,cAAI,CAACX,YAAWW,OAAM,GAAG;AACxBX,YAAAA,YAAWW,OAAM,IAAI,CAAC;UACvB;AAEA,cAAI,CAACX,YAAWW,OAAM,EAAEa,cAAc;AAErCxB,YAAAA,YAAWW,OAAM,EAAEa,eAAe,IAAIX,KAAKC,eAAeH,SAAQ;cACjEc,MAAM;cACNV,OAAO;cACPC,KAAK;YACN,CAAC;UACF;AAEA,iBAAOhB,YAAWW,OAAM,EAAEa,aAAaf,OAAOQ,QAAQP,KAAK,CAAC;QAC7D;MACD;AAKA,UAAIgB,4BAA4B,GAAG;AAClC3B,QAAAA,OAAM4B,KAAK1B,aAAaC,eAAe;MACxC,OAIK;AACJH,QAAAA,OAAM4B,KACL;UACCxB,UAAU;QACX,GACA;UACCA,UAAU;QACX,GACA;UACCA,UAAU;QACX,GACA;UACCA,UAAU;QACX,CACD;MACD;AAEA,MAAA,kBAAe;QACdJ,OAAAA;QACA6B,QAAQ;;UAEP;;UAEA;;;;;;;UAOA;;;UAGA;QAAO;MAET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MC7IA;;;AAFA;AAEA,MAAA,qBAAAC,eAAAA,eAAA,CAAA,GACIC,eAAO,GAAA,CAAA,GAAA;;QAEVC,OAAO,CAAC;UAAEC,UAAU;QAAM,CAAC,EAAEC,OAAOH,gBAAQC,KAAK;MAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCHnD;;;AAFA;AAEA,MAAA,wBAAAG,eAAAA,eAAA,CAAA,GACIC,eAAO,GAAA,CAAA,GAAA;;QAEVC,OAAOD,gBAAQC,MAAMC,OAAO,SAAAC,MAAI;AAAA,iBAAIA,KAAKC,aAAa;QAAQ,CAAA;MAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCHhE;;;AAFA;AAEA,MAAA,2BAAAC,eAAAA,eAAA,CAAA,GACIC,qBAAa,GAAA,CAAA,GAAA;;QAEhBC,OAAO,CAAC;UAAEC,UAAU;QAAM,CAAC,EAAEC,OAAOH,sBAAcC,KAAK;MAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCFzD;;;AAHA;AACA;AAEA,MAAA,6BAAAG,eAAAA,eAAA,CAAA,GACIC,eAAO,GAAA,CAAA,GAAA;;QAEVC,OAAOD,gBAAQC,MAAMC,OAAO,SAAAC,MAAI;AAAA,iBAAIA,KAAKC,aAAa;QAAQ,CAAA,EAE5DC,IAAI,SAAAF,MAAI;AAAA,iBAAIA,KAAKC,aAAa,WAAQL,eAAAA,eAAA,CAAA,GAAQI,IAAI,GAAA,CAAA,GAAA;YAAEG,SAASC;UAAM,CAAA,IAAKJ;QAAI,CAAA;MAAC,CAAA;;;;;ACRhF,MAAA;AAAA;;MAAA,eAAe;QACdK,OAAO,CACN;UACCC,UAAU;QACX,GACA;UACCA,UAAU;QACX,GACA;UACCA,UAAU;QACX,GACA;UACCA,UAAU;QACX,GACA;UACCA,UAAU;QACX,GACA;UACCA,UAAU;QACX,CAAC;QAEFC,QAAQ;;UAEP;;UAEA;;;;;;;UAOA;;;UAGA;QAAO;MAET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCnCA;;;AAFA;AAEA,MAAA,kBAAAC,eAAAA,eAAA,CAAA,GACIC,YAAI,GAAA,CAAA,GAAA;;QAEPC,OAAO,CAAC;UAAEC,UAAU;QAAM,CAAC,EAAEC,OAAOH,aAAKC,KAAK;MAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCHhD;;;AAFA;AAEA,MAAA,qBAAAG,gBAAAA,gBAAA,CAAA,GACIC,YAAI,GAAA,CAAA,GAAA;;QAEPC,OAAOD,aAAKC,MAAMC,OAAO,SAAAC,MAAI;AAAA,iBAAIA,KAAKC,aAAa;QAAQ,CAAA;MAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCH7D;;;AAFA;AAEA,MAAA,wBAAAC,gBAAAA,gBAAA,CAAA,GACIC,kBAAU,GAAA,CAAA,GAAA;;QAEbC,OAAO,CAAC;UAAEC,UAAU;QAAM,CAAC,EAAEC,OAAOH,mBAAWC,KAAK;MAAC,CAAA;;;;;ACWvC,WAAf,eAAuCG,OAAO;AAC7C,YAAQA,OAAK;;MAEZ,KAAK;MACL,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;;MAER,KAAK;MACL,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR,KAAK;AACJ,eAAOC;MACR;AAEC,eAAOV;IACT;EACD;AApDA;;MAAAW;AACA;AAEA,MAAAC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACwfA,WAASC,aAAaC,OAAO;AAC5B,QAAIA,MAAMC,gBAAgBC,QAAQC,aAAaH,KAAK,GAAG;AACtD,aAAOA,MAAMI,QAAQ;IACtB;AAEA,QAAI,OAAOJ,UAAU,UAAU;AAC9B,aAAOA;IACR;AAIA,UAAM,IAAIK,MAAK,8CAAAC,OAAAC,UAAsDP,KAAK,GAAA,IAAA,EAAAM,OAAKN,KAAK,CAAE;EACvF;AAIA,WAASG,aAAaK,QAAQ;AAC7B,WAAOD,UAAOC,MAAM,MAAK,YAAY,OAAOA,OAAOJ,YAAY;EAChE;AAGA,WAASK,gCAAgCC,cAAcC,QAAQC,UAAU;AAGxE,QAAIC,QAAQC,OAAOC,KAAKJ,MAAM;AAM9B,QAAIC,UAAU;AACbC,YAAMG,KAAK,KAAK;IACjB;AAIA,QAAIN,cAAc;AACjBG,cAAQH,aAAaO,OAAO,SAAAC,MAAI;AAAA,eAAIA,SAAS,SAASL,MAAMM,QAAQD,IAAI,KAAK;MAAC,CAAA;IAC/E;AAEA,WAAOL;EACR;AAEA,WAASO,YAAYT,QAAQU,WAAWC,YAAYC,QAAQ;AAC3D,QAAMX,WAAWD,OAAOa,OAAQH,aAAaA,UAAUG;AAEvD,QAAIZ,UAAU;AAEb,UAAI,OAAOA,aAAa,UAAU;AACjC,eAAOA;MACR;AAMA,UAAIW,QAAQ;AACX,eAAOX,SAASW;MACjB,OAAO;AACN,eAAOX,SAASa;MACjB;IACD;AAEA,QAAIH,cAAcA,WAAWI,UAAUJ,WAAWI,OAAOC,SAAS;AACjE,aAAOL,WAAWI,OAAOC;IAC1B;EACD;AAEA,WAASC,QAAQC,UAAU;AAC1B,WAAO,OAAOA,aAAa,YAAYC,cAAcD,QAAQ;EAC9D;MA1iBqBE,SAmajBC,gBA2BAC;;;AAheJ;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA,MAAAC;AAKA;AACA;AAEA;AAcC,MAEoBH,UAAO,4BAAA;AAK3B,iBAAAA,WAA6C;AAAA,cAAjCI,UAAOC,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAG,CAAA;AAAE,cAAAG,OAAAH,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAiB,CAAC,GAAdI,WAAQD,KAARC;AAAQC,UAAAA,iBAAA,MAAAV,QAAA;AAEnC,cAAI,OAAOI,YAAY,UAAU;AAChCA,sBAAU,CAACA,OAAO;UACnB;AAKA,eAAKO,SAASC,aACbR,QAAQ7B,OAAOyB,SAAQa,iBAAiB,CAAC,GACzCC,cACD;AAEA,cAAI,OAAOC,SAAS,aAAa;AAEhC,gBAAIA,KAAKC,cAAc;AACtB,mBAAKC,eAAe,IAAIF,KAAKC,aAAa,KAAKL,MAAM;YACtD;UACD;AAMA,cAAIF,aAAa,OAAO;AACvB,iBAAKS,yBAAyBH,KAAKI;AACnC,iBAAKC,kBAAkBL,KAAKM;UAC7B,OAAO;AACN,iBAAKH,yBAAyBI;AAC9B,iBAAKF,kBAAkBE,mBAA2BD;UACnD;AAGA,eAAKE,0BAA0B,IAAIC,OAAM;AAGzC,eAAKC,mBAAmB,IAAID,OAAM;QACnC;AAEAE,QAAAA,cAAA1B,UAAA,CAAA;UAAA2B,KAAA;UAAAC,OAqBA,SAAAC,QAAO5D,OAAO6D,OAAOC,SAAS;AAC7B,gBAAI,CAACA,SAAS;AACb,kBAAID,SAAS,CAACjC,QAAQiC,KAAK,GAAG;AAC7BC,0BAAUD;AACVA,wBAAQvB;cACT,OAAO;AACNwB,0BAAU,CAAC;cACZ;YACD;AAEA,gBAAI,CAACD,OAAO;AACXA,sBAAQE;YACT;AAEA,gBAAI,OAAOF,UAAU,UAAU;AAC9BA,sBAAQG,eAAeH,KAAK;YAC7B;AAEA,gBAAMI,YAAYlE,aAAaC,KAAK;AAIpC,gBAAAkE,kBAA+B,KAAKC,UAAUN,MAAMO,WAAWP,MAAMlD,MAAM,GAAnEA,SAAMuD,gBAANvD,QAAQ0D,aAAUH,gBAAVG;AAEhB,gBAAI7C;AAKJ,gBAAIqC,MAAMrC,QAAQc,QAAW;AAC5Bd,cAAAA,OAAMqC,MAAMrC;YACb;AAEA,gBAAIA,SAAQc,UAAawB,QAAQtC,QAAQc,QAAW;AACnDd,cAAAA,OAAMsC,QAAQtC;YACf;AACA,gBAAIA,SAAQc,QAAW;AACtBd,cAAAA,OAAMtB,KAAKsB,IAAI;YAChB;AAGA,gBAAM8C,iBAAiB9C,OAAMyC,aAAa;AAE1C,gBAAM1C,SAASuC,QAAQvC,UAAU+C,gBAAgB;AAEjD,gBAAM1D,WAAWQ,YAChBT,QACAkC,eAAc,KAAKH,MAAM,EAAElB,KAC3BqB,eAAc,KAAKH,MAAM,EAAC,MAAA,GAC1BnB,MACD;AAcA,gBAAIsC,MAAMU,QAAQ;AACjB,kBAAMA,SAASV,MAAMU,OAAO;gBAC3B/C,KAAAA;gBACAgD,MAAM,IAAItE,KAAK+D,SAAS;gBACxBQ,MAAMR;gBACNS,SAASJ;gBACT5B,QAAQ,KAAKA;cACd,CAAC;AACD,kBAAI6B,WAAWjC,QAAW;AAGzB,uBAAOiC;cACR;YACD;AAGA,gBAAM1D,QAAQJ;;;cAGboD,MAAMhD;cACNF;cACAC;YACD;AAQA,gBAAM+D,SAAQb,QAAQa,SAASd,MAAMc;AAIrC,gBAAAC,YAAmCC;;;;cAIlChB,MAAMiB,aAAajB,MAAMkB,SAAShB,oBAAagB;cAC/CT;cACA;gBAAE9C,KAAAA;gBAAKX;gBAAO8D,OAAAA;gBAAOpD;gBAAQyD,aAAa;cAAK;YAChD,GAACC,aAAAC,gBAAAN,WAAA,CAAA,GAPMO,WAAQF,WAAA,CAAA,GAAEG,OAAIH,WAAA,CAAA,GAAEI,WAAQJ,WAAA,CAAA;AAS/B,gBAAMK,gBAAgB,KAAKC,kBAAkBtB,WAAWmB,MAAMd,eAAe;cAC5E3D;cACA0D;cACAzD;cACAY,KAAAA;cACAD;cACAoD,OAAAA;YACD,CAAC,KAAK;AAEN,gBAAIb,QAAQ0B,qBAAqB;AAChC,kBAAMC,mBAAmBD,oBAAoBvB,WAAWmB,MAAM;gBAC7DC;gBACAF;gBACA3D,KAAAA;gBACAD;gBACAoD,OAAAA;cACD,CAAC;AACD,qBAAO,CAACW,eAAeG,gBAAgB;YACxC;AAEA,mBAAOH;UACR;QAAC,GAAA;UAAA5B,KAAA;UAAAC,OAED,SAAA4B,kBAAkBtB,WAAWmB,MAAMd,eAAaoB,OAO7C;AAAA,gBAAAC,QAAA;AAAA,gBANFhF,SAAM+E,MAAN/E,QACA0D,aAAUqB,MAAVrB,YACAzD,WAAQ8E,MAAR9E,UACAY,OAAGkE,MAAHlE,KACAD,SAAMmE,MAANnE,QACAoD,SAAKe,MAALf;AAGA,gBAAI,CAACS,MAAM;AACV;YACD;AAEA,gBAAIA,KAAKxB,QAAQ;AAChB,qBAAOwB,KAAKxB,OAAOK,WAAW,KAAKvB,QAAQ;gBAC1CkD,UAAU,SAAAA,SAAC1E,OAAMyC,OAAU;AAE1B,yBAAOgC,MAAKE,YAAYlC,OAAOzC,OAAM;oBACpCP;oBACAY;kBACD,CAAC;gBACF;gBACAC,KAAAA;gBACAD;cACD,CAAC;YACF;AAGA,gBAAML,OAAOkE,KAAKlE,QAAQkE,KAAKQ;AAE/B,gBAAI,CAAC1E,MAAM;AACV,oBAAM,IAAIb,MAAK,sFAAAC,OAA2FwF,KAAKC,UAAUX,IAAI,CAAC,CAAE;YACjI;AAIA,gBAAIlE,SAAS,OAAO;AACnB,qBAAON;YACR;AAGA,gBAAIoF,SAASC,KAAKC,IAAI5B,aAAa,IAAI6B,mBAAmBf,IAAI;AAa9D,gBAAIA,KAAKgB,aAAa;AAErBJ,uBAASK,iBAAiB1B,MAAK,EAAEqB,SAASZ,KAAKgB,WAAW,IAAIhB,KAAKgB;YACpE;AAEA,gBAAIE,qBAAqB,KAAKL,KAAKM,KAAKjC,aAAa,IAAI+B,iBAAiB1B,MAAK,EAAEqB,MAAM;AAQvF,gBAAIM,uBAAuB,GAAG;AAC7B,kBAAI/E,QAAQ;AACX+E,qCAAqB;cACtB,OAAO;AACNA,qCAAqB;cACtB;YACD;AAEA,oBAAQjC,YAAU;cACjB,KAAK;cACL,KAAK;cACL,KAAK;AAEJ,uBAAO,KAAKmC,aAAanC,UAAU,EAAET,OAAO0C,oBAAoBpF,IAAI;cACrE;AAGC,uBAAO,KAAK2E,YAAYS,oBAAoBpF,MAAM;kBACjDP;kBACAY;gBACD,CAAC;YACH;UACD;;;;;;;;;QAEA,GAAA;UAAAmC,KAAA;UAAAC,OAQA,SAAAkC,aAAYlC,OAAOzC,MAAIuF,OAAsB;AAAA,gBAAlB9F,SAAM8F,MAAN9F,QAAQY,SAAMkF,MAANlF;AAClC,mBAAO,KAAKmF,kBAAkB/F,QAAQO,MAAMyC,OAAO;cAAEpC;YAAO,CAAC,EAC3DoF,QAAQ,OAAO,KAAKC,aAAaX,KAAKC,IAAIvC,KAAK,CAAC,CAAC;UACpD;;;;;;;;;;;;QAEA,GAAA;UAAAD,KAAA;UAAAC,OAWA,SAAA+C,kBAAkBG,iBAAiB3F,MAAMyC,OAAKmD,OAAc;AAAA,gBAAVvF,SAAMuF,MAANvF;AAGjD,gBAAMmB,UAAS,KAAKA;AACpBmE,8BAAkBA,gBAAgB3F,IAAI;AAKtC,gBAAI,OAAO2F,oBAAoB,UAAU;AACxC,qBAAOA;YACR;AAIA,gBAAME,eAAepD,UAAU,IAAKpC,SAAS,WAAW,SAAWoC,QAAQ,IAAI,SAAS;AACxF,gBAAMqD,kBAAkBH,gBAAgBE,YAAY,KAAKF;AAEzD,gBAAI,OAAOG,oBAAoB,UAAU;AACxC,qBAAOA;YACR;AAEA,gBAAMC,aAAa,KAAKC,eAAe,EAAEC,OAAOlB,KAAKC,IAAIvC,KAAK,CAAC;AAG/D,mBAAOqD,gBAAgBC,UAAU,KAAKD,gBAAgBI;UACvD;;;;;;;QAEA,GAAA;UAAA1D,KAAA;UAAAC,OAMA,SAAAiD,cAAaS,QAAQ;AACpB,mBAAO,KAAKrE,eAAe,KAAKA,aAAaY,OAAOyD,MAAM,IAAIC,OAAOD,MAAM;UAC5E;;;;;;QAEA,GAAA;UAAA3D,KAAA;UAAAC,OAKA,SAAA6C,aAAanC,YAAY;AAGxB,mBAAO,KAAKf,wBAAwBiE,IAAI,KAAK7E,QAAQ2B,UAAU,KAC9D,KAAKf,wBAAwBkE,IAAI,KAAK9E,QAAQ2B,YAAY,IAAI,KAAKpB,uBAAuB,KAAKP,QAAQ;cAAEmB,OAAOQ;YAAW,CAAC,CAAC;UAC/H;;;;;QAEA,GAAA;UAAAX,KAAA;UAAAC,OAIA,SAAAuD,iBAAiB;AAGhB,mBAAO,KAAK1D,iBAAiB+D,IAAI,KAAK7E,MAAM,KAC3C,KAAKc,iBAAiBgE,IAAI,KAAK9E,QAAQ,IAAI,KAAKS,gBAAgB,KAAKT,MAAM,CAAC;UAC9E;;;;;;;;;;QAGA,GAAA;UAAAgB,KAAA;UAAAC,OASA,SAAAQ,YAA2B;AAAA,gBAAjBE,aAAUjC,UAAAC,SAAA,KAAAD,UAAA,CAAA,MAAAE,SAAAF,UAAA,CAAA,IAAG,CAAA;AAEtB,gBAAI,OAAOiC,eAAe,UAAU;AACnCA,2BAAa,CAACA,UAAU;YACzB;AAGAA,yBAAaA,WAAWoD,IAAI,SAACpD,aAAe;AAC3C,sBAAQA,aAAU;gBACjB,KAAK;gBACL,KAAK;AACJ,yBAAO;gBACR;AACC,yBAAOA;cACT;YACD,CAAC;AAIDA,yBAAaA,WAAW/D,OAAO,MAAM;AAGrC,gBAAMoH,aAAa7E,eAAc,KAAKH,MAAM;AAC5C,qBAAAiF,YAAAC,iCAA0BvD,UAAU,GAAAwD,OAAA,EAAAA,QAAAF,UAAA,GAAAG,QAAE;AAAA,kBAA3BC,cAAWF,MAAAlE;AACrB,kBAAI+D,WAAWK,WAAW,GAAG;AAC5B,uBAAO;kBACN1D,YAAY0D;kBACZpH,QAAQ+G,WAAWK,WAAW;gBAC/B;cACD;YACD;UACD;QAAC,CAAA,CAAA;AAAA,eAAAhG;MAAA,GAAA;AAMF,MAAIC,iBAAgB;AAMpBD,cAAQa,mBAAmB,WAAA;AAAA,eAAMZ;MAAa;AAM9CD,cAAQiG,mBAAmB,SAACtF,SAAM;AAAA,eAAKV,iBAAgBU;MAAM;AAM7DX,cAAQkG,mBAAmB,SAASP,YAAY;AAC/C,YAAIzF,+BAA+B;AAClC,iBAAOiG,QAAQC,MAAM,8HAA8H;QACpJ;AACAlG,wCAAgC;AAChCF,gBAAQiG,iBAAiBN,WAAWhF,MAAM;AAC1CX,gBAAQqG,UAAUV,UAAU;MAC7B;AAQA3F,cAAQqG,YAAY,SAASV,YAAY;AACxCW,QAAAA,eAAcX,UAAU;AACxBrE,2BAA2B+E,UAAUV,UAAU;MAChD;AAQA3F,cAAQW,SAASX,QAAQqG;AAQzBrG,cAAQuG,YAAY,SAAC5F,SAAQ6F,OAAM5H,QAAW;AAC7C,YAAI+G,aAAa7E,eAAcH,OAAM;AACrC,YAAI,CAACgF,YAAY;AAChBW,UAAAA,eAAc;YACb3F,QAAAA;UACD,CAAC;AACDgF,uBAAa7E,eAAcH,OAAM;QAElC;AACAgF,mBAAWa,KAAI,IAAI5H;MACpB;;;;;ACngBA;AAAA;AAAA;AAAA;AAAA;;;ACAA,MAAO;AAAP;AAAA;AAAA,MAAO,kBAAQ;AAAA,QACd,UAAU;AAAA,QACV,QAAQ;AAAA,UACP,QAAQ;AAAA,YACP,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,WAAW;AAAA,YACV,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,SAAS;AAAA,YACR,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,QAAQ;AAAA,YACP,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,OAAO;AAAA,YACN,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,QAAQ;AAAA,YACP,WAAW;AAAA,YACX,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,UAAU;AAAA,YACT,WAAW;AAAA,YACX,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,UAAU;AAAA,YACT,WAAW;AAAA,YACX,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,QACD;AAAA,QACA,SAAS;AAAA,UACR,QAAQ;AAAA,YACP,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,WAAW;AAAA,YACV,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,SAAS;AAAA,YACR,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,QAAQ;AAAA,YACP,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,OAAO;AAAA,YACN,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,YACA,UAAU;AAAA,cACT,OAAO;AAAA,cACP,SAAS;AAAA,YACV;AAAA,UACD;AAAA,UACA,QAAQ;AAAA,YACP,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,UAAU;AAAA,YACT,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,UAAU;AAAA,YACT,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,QACD;AAAA,QACA,UAAU;AAAA,UACT,QAAQ;AAAA,YACP,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,WAAW;AAAA,YACV,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,SAAS;AAAA,YACR,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,QAAQ;AAAA,YACP,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,OAAO;AAAA,YACN,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,QAAQ;AAAA,YACP,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,UAAU;AAAA,YACT,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,UACA,UAAU;AAAA,YACT,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,UAAU;AAAA,UACX;AAAA,QACD;AAAA,QACA,OAAO;AAAA,UACN,OAAO;AAAA,YACN,WAAW;AAAA,YACX,UAAU;AAAA,YACV,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,QACA,QAAQ;AAAA,UACP,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,UAAU;AAAA,UACV,OAAO;AAAA,QACR;AAAA,QACA,cAAc;AAAA,UACb,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,OAAO;AAAA,YACN,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,UACA,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,UAAU;AAAA,QACX;AAAA,QACA,aAAa;AAAA,UACZ,QAAQ;AAAA,YACP,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,UACA,SAAS;AAAA,YACR,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,UACA,QAAQ;AAAA,YACP,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,UACA,OAAO;AAAA,YACN,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,UACA,QAAQ;AAAA,YACP,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,UACA,UAAU;AAAA,YACT,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,UACA,UAAU;AAAA,YACT,OAAO;AAAA,YACP,SAAS;AAAA,UACV;AAAA,QACD;AAAA,MACD;AAAA;AAAA;;;ACrRA;AAAA;AAAA;AAAA,MAAA6H;AACA;AACA;AAEA,OAAC,WAAY;AACX,cAAM,mBAAmB,SAAU,eAAe,eAAe,aAAa;AAC5E,cAAI,gBAAgB,CAAC;AAErB,gBAAM,QAAQ,IAAI,MAAM,gCAAgC;AAExD,mBAAS,UAAU,WAAW;AAC5B,0BAAc,QAAQ,CAAC,iBAAiB;AACtC,4BAAc,YAAY,IAAI,mBAAmB,WAAW,YAAY;AAAA,YAC1E,CAAC;AAAA,UACH;AAEA,mBAAS,mBAAmB,WAAW,cAAc;AACnD,kBAAM,eACJ,iBACG,cACA,OAAO,EAAE,SAAS,uCAAuC,eAAe,aAAa,GAAG;AAAA,cACvF,SAAS,MAAM;AACb,0BAAU,cAAc,QAAQ,KAAK,OAAO;AAC5C,0BAAU,cAAc,KAAK;AAC7B,sBAAM,KAAK;AAAA,cACb;AAAA,YACF,CAAC;AAEL,mBAAO;AAAA,UACT;AAEA,kBAAQ,UAAU,eAAE;AACpB,gBAAM,UAAU,IAAI,QAAQ,OAAO;AAEnC,iBAAO;AAAA,YACL,MAAM,SAAS,OAAO;AACpB,kBAAI,OAAO;AAAE,sBAAM,uBAAuB,MAAM,SAAS,GAAG,OAAO,cAAc,GAAG;AAAA,cAAK;AACzF,wBAAU,IAAI;AAAA,YAChB;AAAA,YACA,MAAM;AAAA,YACN,KAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA,qBAAqB,SAAU,cAAc;AAC3C,oBAAM,eAAe,cAAc,aAAa,WAAW,EAAE;AAC7D,2BAAa,QAAQ,gBAAgB,EAAE,YAAY,aAAa,GAAG,CAAC;AACpE,2BAAa,UAAU,oBAAI,KAAK;AAChC,mBAAK,eAAe;AAEpB,kBAAI,CAAC,aAAa,kBAAkB,KAAM;AAE1C,yBAAW,MAAM;AACf,sBAAM,MAAM,aAAa,kBAAkB,IAAI;AAAA,cACjD,GAAG,GAAG;AAAA,YACR;AAAA,YACA,eAAe,WAAY;AACzB,qBAAO,OAAO,aAAa,EAAE,QAAQ,CAAC,iBAAiB;AACrD,6BAAa,QAAQ,kBAAkB;AAAA,cACzC,CAAC;AAED,mBAAK,cAAc,QAAQ,CAAC,iBAAiB;AAC3C,6BAAa,UAAU,oBAAI,KAAK;AAAA,cAClC,CAAC;AAED,mBAAK,cAAc;AAAA,YACrB;AAAA,YACA,SAAS,SAAU,MAAM;AACvB,qBAAO,QAAQ,OAAO,IAAI,KAAK,IAAI,CAAC;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,mBAAmB;AAAA,QAC5B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC7EH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,qBAAqB;AAC3B,cAAM,sBAAsB;AAC5B,cAAM,sBAAsB;AAC5B,cAAM,4BAA4B;AAClC,cAAM,sBAAsB;AAC5B,cAAM,2BAA2B;AACjC,cAAM,2BAA2B;AAEjC,cAAM,aAAa,CAAC,UAClB,OAAO,SAAS,EAAE,EACf,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,OAAO;AAE1B,cAAM,QAAQ,CAAC,OAAO,YACpB,oFAAoF,OAAO,KAAK,WAAW,KAAK,CAAC;AAEnH,cAAM,iBAAiB,CAACC,WAAU,OAAOA,UAAS,EAAE,EAAE,QAAQ,sBAAsB,EAAE;AAEtF,cAAM,iBAAiB,CAAC,QAAQ;AAC9B,gBAAMC,QAAO,WAAW,KAAK,IAAI;AACjC,gBAAMD,SAAQ,eAAe,KAAK,KAAK;AAEvC,cAAI,CAACC,MAAM,QAAO;AAElB,iBAAO,wFAAwFD,MAAK,KAAKC,KAAI;AAAA,QAC/G;AAGA,cAAM,OAAO,CAAC,OAAO,UACnB,6DAA6D,KAAK,KAAK,WAAW,KAAK,CAAC;AAE1F,cAAM,gBAAgB,CAAC,OAAOC,WAAU;AACtC,cAAI,CAAC,MAAM,QAAQA,MAAK,KAAK,CAACA,OAAM,OAAQ,QAAO;AAEnD,iBAAO;AAAA,2CACgC,WAAW,KAAK,CAAC;AAAA,qBACvC,WAAWA,OAAM,KAAK,IAAI,CAAC,CAAC;AAAA;AAAA,QAE/C;AAEA,cAAM,cAAc,CAAC,MAAMC,WAAU;AACnC,gBAAM,aAAa,SAAS,QAAQ,iBAAiB;AAErD,iBAAO,qCAAqC,UAAU,YAAY,WAAWA,MAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,QAKrF;AAEA,cAAM,cAAc,CAAC,UAAU;AAC7B,cAAI,SAAS,QAAQ,OAAO,MAAM,OAAO,KAAK,CAAC,EAAG,QAAO;AAEzD,iBAAO,IAAI,OAAO,KAAK,EAAE,eAAe,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAAA,QAChF;AAEA,cAAM,gBAAgB,CAAC,UAAU;AAC/B,cAAI,SAAS,QAAQ,OAAO,MAAM,OAAO,KAAK,CAAC,EAAG,QAAO;AAEzD,iBAAO,GAAG,OAAO,KAAK,EAAE,eAAe,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAAA,QAC/E;AAEA,cAAM,aAAa,CAAC,UAAU;AAC5B,cAAI,SAAS,QAAQ,OAAO,MAAM,OAAO,KAAK,CAAC,EAAG,QAAO;AAEzD,iBAAO,GAAG,OAAO,KAAK,EAAE,eAAe,SAAS;AAAA,YAC9C,uBAAuB;AAAA,YACvB,uBAAuB;AAAA,UACzB,CAAC,CAAC;AAAA,QACJ;AAGA,cAAM,sBAAsB,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,iBAAiB;AAC5E,cAAI,UAAU,QAAQ,UAAU,KAAM,QAAO;AAC7C,cAAI,UAAU,KAAM,QAAO,eAAe,KAAK;AAC/C,cAAI,UAAU,KAAM,QAAO,eAAe,IAAI;AAE9C,iBAAO,SAAS;AAAA,QAClB;AAEA,cAAM,kBAAkB;AAAA,UACtB,gBAAgB,CAAC,WAAW,WAAW,OAAO,KAAK,KAAK;AAAA,UACxD,YAAY;AAAA,QACd;AAEA,cAAM,eAAe;AAAA,UACnB,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,cAAc,CAAC,WAAW;AACxB,kBAAM,MAAM,SAAS,cAAc,KAAK;AAExC,gBAAI,YAAY,OAAO,OAAO,cAAc,OAAO,IAAI,IAAI;AAC3D,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,cAAM,gBAAgB,CAAC,QAAQ;AAC7B,gBAAM,QAAQ,OAAO,IAAI,KAAK;AAE9B,cAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AAEpC,gBAAM,QAAQ,SAAS,KAAK,SAAS,SAAS,KAAK,QAAQ;AAC3D,gBAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,GAAG,CAAC;AAC9C,gBAAM,UAAU,IAAI,iBAAiB;AACrC,gBAAM,UAAU,IAAI,kBAAkB;AACtC,gBAAM,aAAa,IAAI,oBAAoB;AAC3C,gBAAM,YAAY,IAAI,0BAA0B;AAChD,gBAAMA,SAAQ,WAAW,OAAO,kBAAe,OAAO,oBAAiB,UAAU,SAAM,SAAS;AAEhG,iBAAO,8DAA8D,KAAK,YAAY,WAAWA,MAAK,CAAC;AAAA,0DACjD,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC;AAAA;AAAA,0EAER,KAAK;AAAA;AAAA;AAAA,QAG7E;AAEA,cAAM,4BAA4B,CAAC,SAAS,YAAY,MAAM,UAAU,CAAC,OAAO;AAAA,UAC9E,SAAS,OAAO,OAAO;AAAA,UACvB,QAAQ,4BAA4B,OAAO;AAAA,UAC3C,WAAW,aAAa,OAAO,OAAO,OAAO,SAAS;AAAA,UACtD,cAAc,QAAQ,gBAAgB;AAAA,UACtC,gBAAgB,QAAQ,kBAAkB;AAAA,UAC1C,iBAAiB,OAAO,QAAQ,eAAe,KAAK;AAAA,UACpD,iBAAiB,OAAO,QAAQ,eAAe,KAAK;AAAA,UACpD,WAAW,QAAQ,aAAa;AAAA,UAChC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,UAAU,MAAM,QAAQ,QAAQ,QAAQ,IACpC,QAAQ,SAAS,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,KAAK,OAAO,QAAQ,GAAG,KAAK,EAAE,EAAE,IACjF,CAAC;AAAA,UACL,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,eAAe;AAAA,UACf,aAAa,CAAC;AAAA,UACd,UAAU;AAAA,UACV,sBAAsB,CAAC;AAAA,UACvB,aAAa;AAAA,UACb,kBAAkB;AAAA,UAClB,SAAS,CAAC;AAAA,UACV,iBAAiB,CAAC;AAAA,UAClB,uBAAuB,CAAC;AAAA,UACxB,cAAc,CAAC;AAAA,UACf,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,YAAY,EAAE,OAAO,GAAG,cAAc,GAAG,WAAW,MAAM,WAAW,MAAM,UAAU,GAAG;AAAA,UACxF,aAAa;AAAA,UAEb,OAAO;AACL,iBAAK,eAAe,EAAE,KAAK,MAAM;AAC/B,mBAAK,mBAAmB;AACxB,mBAAK,aAAa;AAAA,YACpB,CAAC;AAAA,UACH;AAAA,UAEA,gBAAgB;AACd,mBAAO,KAAK,gBAAgB;AAAA,UAC9B;AAAA,UAEA,oBAAoB;AAClB,mBAAO,KAAK,gBAAgB,IAAI,CAAC,WAAW,OAAO,OAAO,EAAE,CAAC;AAAA,UAC/D;AAAA,UAEA,aAAa,UAAU;AACrB,mBAAO,KAAK,gBAAgB,KAAK,CAAC,WAAW,OAAO,OAAO,EAAE,MAAM,OAAO,QAAQ,CAAC;AAAA,UACrF;AAAA,UAEA,WAAW,UAAU;AACnB,mBACE,KAAK,QAAQ,KAAK,CAAC,WAAW,OAAO,OAAO,EAAE,MAAM,OAAO,QAAQ,CAAC,KACpE,KAAK,aAAa,QAAQ;AAAA,UAE9B;AAAA,UAEA,eAAe,QAAQ;AACrB,kBAAM,QAAQ,QAAQ;AAEtB,gBAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,OAAQ,QAAO;AAEnD,kBAAM,QAAQ,MAAM,OAAO,CAAC,KAAK,QAAQ,OAAO,OAAO,IAAI,GAAG,KAAK,IAAI,CAAC;AAExE,mBAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAAA,UAC1C;AAAA,UAEA,eAAe,QAAQ;AACrB,mBAAO,YAAY,KAAK,eAAe,MAAM,CAAC;AAAA,UAChD;AAAA,UAEA,aAAa,QAAQ;AACnB,kBAAM,MAAM,KAAK,eAAe,MAAM;AAEtC,gBAAI,OAAO,QAAQ,KAAK,aAAa,QAAQ,OAAO,MAAM,KAAK,SAAS,EAAG,QAAO;AAElF,mBAAO,KAAK,YAAY;AAAA,UAC1B;AAAA,UAEA,kBAAkB,QAAQ;AACxB,mBAAO,YAAY,KAAK,aAAa,MAAM,CAAC,KAAK;AAAA,UACnD;AAAA,UAEA,oBAAoB,QAAQ;AAC1B,gBAAI,UAAU,KAAM,QAAO;AAE3B,gBAAI,QAAQ;AACZ,gBAAI,UAAU,KAAK,gBAAiB,SAAQ;AAAA,qBACnC,UAAU,KAAK,kBAAkB,EAAG,SAAQ;AAErD,mBAAO,KAAK,OAAO,YAAY,MAAM,CAAC;AAAA,UACxC;AAAA,UAEA,uBAAuB;AACrB,kBAAM,QAAQ,CAAC;AACf,kBAAM,YAAY,KAAK,gBAAgB;AAAA,cACrC,CAAC,WAAW,OAAO,oBAAoB,OAAO;AAAA,YAChD,EAAE;AACF,kBAAM,gBAAgB,KAAK,gBAAgB,OAAO,CAAC,WAAW,OAAO,WAAW,EAAE;AAClF,kBAAM,WAAW,KAAK,gBAAgB,OAAO,CAAC,WAAW,OAAO,UAAU,EAAE;AAC5E,kBAAM,aAAa,KAAK,gBAAgB;AAAA,cACtC,CAAC,WAAW,OAAO,OAAO,cAAc,KAAK;AAAA,YAC/C,EAAE;AACF,kBAAM,QAAQ,KAAK,gBAAgB,IAAI,CAAC,WAAW,OAAO,cAAc,EAAE,OAAO,OAAO;AACxF,kBAAM,iBAAiB,CAAC,GAAG,IAAI,IAAI,MAAM,OAAO,CAAC,MAAMC,WAAU,MAAM,QAAQ,IAAI,MAAMA,MAAK,CAAC,CAAC;AAChG,kBAAM,UAAU,KAAK,gBAClB,IAAI,CAAC,WAAW,KAAK,aAAa,MAAM,CAAC,EACzC,OAAO,CAAC,WAAW,UAAU,IAAI;AAEpC,gBAAI,QAAQ,QAAQ;AAClB,oBAAM,MAAM,KAAK,IAAI,GAAG,OAAO;AAC/B,oBAAM,MAAM,KAAK,IAAI,GAAG,OAAO;AAC/B,oBAAM,QACJ,QAAQ,MACJ,UAAU,YAAY,GAAG,CAAC,KAC1B,UAAU,YAAY,GAAG,CAAC,SAAI,YAAY,GAAG,CAAC;AAEpD,oBAAM,KAAK,EAAE,OAAO,MAAM,UAAU,CAAC;AAAA,YACvC;AAEA,gBAAI,YAAY,EAAG,OAAM,KAAK,EAAE,OAAO,GAAG,SAAS,cAAc,MAAM,UAAU,CAAC;AAClF,gBAAI,aAAa,EAAG,OAAM,KAAK,EAAE,OAAO,GAAG,UAAU,eAAe,MAAM,OAAO,CAAC;AAClF,gBAAI,gBAAgB,EAAG,OAAM,KAAK,EAAE,OAAO,GAAG,aAAa,gBAAgB,MAAM,OAAO,CAAC;AACzF,gBAAI,WAAW,EAAG,OAAM,KAAK,EAAE,OAAO,GAAG,QAAQ,QAAQ,MAAM,OAAO,CAAC;AAEvE,2BAAe,QAAQ,CAAC,SAAS;AAC/B,oBAAM,YAAY,MAAM,OAAO,CAAC,SAAS,SAAS,IAAI,EAAE;AACxD,oBAAM,KAAK,EAAE,OAAO,GAAG,SAAS,SAAS,IAAI,IAAI,MAAM,OAAO,CAAC;AAAA,YACjE,CAAC;AAED,iBAAK,wBAAwB;AAC7B,iBAAK,oBAAoB;AAAA,UAC3B;AAAA,UAEA,sBAAsB;AACpB,kBAAM,WAAW,CAAC;AAClB,kBAAM,QAAQ,CAAC;AAEf,iBAAK,gBAAgB,QAAQ,CAAC,WAAW;AACvC,kBAAI,OAAO,WAAY,UAAS,KAAK,GAAG,OAAO,IAAI,gCAAgC;AACnF,kBAAI,OAAO,YAAa,UAAS,KAAK,GAAG,OAAO,IAAI,yBAAyB;AAE7E,oBAAM,SAAS,OAAO,OAAO,cAAc;AAC3C,kBAAI,OAAO,SAAS,MAAM,KAAK,UAAU,2BAA2B;AAClE,yBAAS,KAAK,GAAG,OAAO,IAAI,4BAA4B,MAAM,UAAU;AAAA,cAC1E;AAEA,oBAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,WAAW;AACrD,kBAAI,OAAO,SAAS,IAAI,KAAK,QAAQ,qBAAqB;AACxD,yBAAS,KAAK,GAAG,OAAO,IAAI,yBAAyB,IAAI,GAAG;AAAA,cAC9D;AAEA,oBAAM,SAAS,OAAO,OAAO,gBAAgB;AAC7C,kBAAI,OAAO,SAAS,MAAM,KAAK,UAAU,0BAA0B;AACjE,yBAAS,KAAK,GAAG,OAAO,IAAI,4BAA4B,cAAc,MAAM,CAAC,GAAG;AAAA,cAClF;AAEA,oBAAM,OAAO,OAAO;AACpB,kBAAI,KAAM,OAAM,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK;AAAA,YAC/C,CAAC;AAED,mBAAO,QAAQ,KAAK,EACjB,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,QAAQ,CAAC,EAC/B,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC1B,uBAAS;AAAA,gBACP,GAAG,KAAK,iBAAiB,IAAI,4CAAuC,KAAK;AAAA,cAC3E;AAAA,YACF,CAAC;AAEH,iBAAK,eAAe;AAAA,UACtB;AAAA,UAEA,oBAAoB,QAAQ;AAC1B,mBAAO,MAAM,QAAQ,OAAO,uBAAuB,KAAK,OAAO,wBAAwB,SAAS;AAAA,UAClG;AAAA,UAEA,qBAAqB,QAAQ;AAC3B,mBAAO,MAAM,QAAQ,OAAO,wBAAwB,KAAK,OAAO,yBAAyB,SAAS;AAAA,UACpG;AAAA,UAEA,qBAAqB,QAAQ;AAC3B,kBAAM,WAAW,OAAO,WAAW,OAAO,kBAAkB;AAC5D,kBAAM,UAAU,OAAO,WAAW,OAAO,0BAA0B;AAEnE,mBAAO,OAAO,SAAS,QAAQ,KAAK,OAAO,SAAS,OAAO,KAAK,WAAW;AAAA,UAC7E;AAAA,UAEA,eAAe,QAAQ;AACrB,mBAAO;AAAA,cACL,OAAO,cACL,KAAK,oBAAoB,MAAM,KAC/B,KAAK,qBAAqB,MAAM,KAChC,OAAO,sBAAsB;AAAA,YACjC;AAAA,UACF;AAAA,UAEA,gBAAgB,QAAQ;AACtB,mBAAO,KAAK,qBAAqB,MAAM;AAAA,UACzC;AAAA,UAEA,kBAAkB,QAAQ;AACxB,kBAAM,UAAU,CAAC;AAEjB,gBAAI,OAAO,WAAY,SAAQ,KAAK,8BAA8B;AAClE,gBAAI,KAAK,oBAAoB,MAAM,GAAG;AACpC,sBAAQ,KAAK,eAAe,OAAO,wBAAwB,KAAK,IAAI,CAAC,EAAE;AAAA,YACzE;AACA,gBAAI,KAAK,qBAAqB,MAAM,GAAG;AACrC,sBAAQ,KAAK,gBAAgB,OAAO,yBAAyB,KAAK,IAAI,CAAC,EAAE;AAAA,YAC3E;AACA,gBAAI,OAAO,YAAa,SAAQ,KAAK,uBAAuB;AAC5D,gBAAI,OAAO,sBAAsB,OAAO;AACtC,sBAAQ,KAAK,8CAA8C;AAAA,YAC7D;AACA,gBAAI,KAAK,qBAAqB,MAAM,GAAG;AACrC,sBAAQ,KAAK,wCAAwC;AAAA,YACvD;AAEA,kBAAM,SAAS,OAAO,OAAO,cAAc;AAC3C,gBAAI,OAAO,SAAS,MAAM,KAAK,UAAU,2BAA2B;AAClE,sBAAQ,KAAK,0BAA0B,MAAM,UAAU;AAAA,YACzD;AAEA,kBAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,WAAW;AACrD,gBAAI,OAAO,SAAS,IAAI,KAAK,QAAQ,qBAAqB;AACxD,sBAAQ,KAAK,uBAAuB,IAAI,GAAG;AAAA,YAC7C;AAEA,kBAAM,SAAS,OAAO,OAAO,gBAAgB;AAC7C,gBAAI,OAAO,SAAS,MAAM,KAAK,UAAU,0BAA0B;AACjE,sBAAQ,KAAK,0BAA0B,cAAc,MAAM,CAAC,GAAG;AAAA,YACjE;AAEA,mBAAO;AAAA,UACT;AAAA,UAEA,cAAc,QAAQ;AACpB,mBAAO,KAAK,kBAAkB,MAAM,EAAE,SAAS;AAAA,UACjD;AAAA,UAEA,gBAAgB,QAAQ;AACtB,mBAAO,KAAK,kBAAkB,MAAM,EAAE,KAAK,UAAK;AAAA,UAClD;AAAA,UAEA,eAAe,QAAQ;AACrB,gBAAI,KAAK,eAAe,MAAM,EAAG,QAAO;AAExC,mBAAO;AAAA,UACT;AAAA,UAEA,iBAAiB,WAAW;AAC1B,kBAAM,OAAO,KAAK,gBAAgB,QAAQ,CAAC,WAAW,OAAO,qBAAqB,CAAC,CAAC,EAAE,OAAO,OAAO;AAEpG,mBAAO,OAAO,KAAK,KAAK,CAAC,QAAQ,OAAO,IAAI,UAAU,MAAM,OAAO,SAAS,CAAC,GAAG,GAAG,KAAK;AAAA,UAC1F;AAAA,UAEA,uBAAuB;AACrB,iBAAK,WAAW,KAAK,SAAS,IAAI,CAAC,aAAa;AAAA,cAC9C,GAAG;AAAA,cACH,KAAK,KAAK,iBAAiB,QAAQ,EAAE;AAAA,YACvC,EAAE;AAAA,UACJ;AAAA,UAEA,iBAAiB;AACf,gBAAI,KAAK,mBAAmB,eAAe;AACzC,qBAAO,KAAK,SAAS,KAAK,CAAC,YAAY,CAAC,OAAO,QAAQ,GAAG,CAAC;AAAA,YAC7D;AAEA,gBAAI,KAAK,mBAAmB,WAAW;AACrC,kBAAI,CAAC,KAAK,eAAgB,QAAO;AAEjC,oBAAM,SAAS,IAAI,KAAK,OAAO,KAAK,cAAc,EAAE,QAAQ,KAAK,GAAG,CAAC;AAErE,qBAAO,OAAO,MAAM,OAAO,QAAQ,CAAC,KAAK,SAAS,oBAAI,KAAK;AAAA,YAC7D;AAEA,mBAAO;AAAA,UACT;AAAA,UAEA,sBAAsB;AACpB,gBAAI,KAAK,cAAc,KAAK,EAAG,QAAO;AAEtC,mBAAO,KAAK,mBAAmB,YAAY,YAAY;AAAA,UACzD;AAAA,UAEA,kBAAkB,QAAQ;AACxB,kBAAM,QAAQ,CAAC;AAEf,gBAAI,QAAQ,MAAO,OAAM,KAAK,OAAO,KAAK;AAC1C,gBAAI,QAAQ,MAAO,OAAM,KAAK,OAAO,KAAK;AAC1C,gBAAI,QAAQ,SAAS,KAAM,OAAM,KAAK,GAAG,OAAO,KAAK,KAAK;AAE1D,mBAAO,MAAM,KAAK,QAAK,KAAK;AAAA,UAC9B;AAAA,UAEA,sBAAsB,QAAQ;AAC5B,mBAAO,KAAK,eAAe,MAAM;AAAA,UACnC;AAAA,UAEA,yBAAyB,QAAQ;AAC/B,mBAAO,KAAK,aAAa,MAAM,KAAK,OAAO,KAAK,kBAAkB,MAAM,IAAI;AAAA,UAC9E;AAAA,UAEA,kBAAkB,MAAMH,OAAM,OAAO;AACnC,kBAAM,QAAQ,SAAS,cAAc,OAAO;AAE5C,kBAAM,OAAO;AACb,kBAAM,OAAOA;AACb,kBAAM,QAAQ,SAAS,OAAO,KAAK,OAAO,KAAK;AAC/C,iBAAK,YAAY,KAAK;AAAA,UACxB;AAAA,UAEA,mBAAmB;AACjB,gBAAI,KAAK,cAAc,KAAK,eAAe,KAAK,CAAC,KAAK,UAAW;AAEjE,iBAAK,aAAa;AAElB,kBAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,kBAAMI,aAAY,SAAS,cAAc,yBAAyB,GAAG;AAErE,iBAAK,SAAS;AACd,iBAAK,SAAS,KAAK;AACnB,iBAAK,MAAM,UAAU;AAErB,iBAAK,kBAAkB,MAAM,WAAW,KAAK;AAC7C,gBAAIA,WAAW,MAAK,kBAAkB,MAAM,sBAAsBA,UAAS;AAC3E,iBAAK,kBAAkB,MAAM,mBAAmB,KAAK,cAAc;AAEnE,iBAAK,gBAAgB,QAAQ,CAAC,WAAW;AACvC,mBAAK,kBAAkB,MAAM,uBAAuB,OAAO,EAAE;AAAA,YAC/D,CAAC;AAED,gBAAI,KAAK,mBAAmB,WAAW;AACrC,mBAAK,kBAAkB,MAAM,mBAAmB,KAAK,cAAc;AACnE,mBAAK,kBAAkB,MAAM,yBAAyB,KAAK,iBAAiB,EAAE;AAAA,YAChF,OAAO;AACL,mBAAK,kBAAkB,MAAM,4BAA4B,KAAK,mBAAmB,CAAC;AAClF,mBAAK,SAAS,QAAQ,CAAC,YAAY;AACjC,qBAAK,kBAAkB,MAAM,6BAA6B,QAAQ,EAAE;AACpE,qBAAK,kBAAkB,MAAM,sBAAsB,QAAQ,GAAG;AAAA,cAChE,CAAC;AAAA,YACH;AAEA,qBAAS,KAAK,YAAY,IAAI;AAC9B,iBAAK,OAAO;AAAA,UACd;AAAA,UAEA,qBAAqB;AACnB,kBAAM,QAAQ,KAAK,cAAc;AACjC,kBAAM,QAAQ,OAAO,KAAK,eAAe,KAAK;AAE9C,gBAAI,CAAC,MAAO,QAAO;AAEnB,mBAAO,IAAI,QAAQ,KAAK;AAAA,UAC1B;AAAA,UAEA,iBAAiB,KAAK;AACpB,kBAAM,QAAQ,OAAO,GAAG;AAExB,gBAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AAEpC,mBAAO,IAAI,MAAM,eAAe,SAAS,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,CAAC,CAAC;AAAA,UAClG;AAAA,UAEA,wBAAwB;AACtB,kBAAM,QAAQ,KAAK,SAAS,OAAO,CAAC,KAAK,YAAY,OAAO,OAAO,QAAQ,GAAG,KAAK,IAAI,CAAC;AAExF,mBAAO,KAAK,iBAAiB,KAAK;AAAA,UACpC;AAAA,UAEA,oBAAoB;AAClB,mBAAO,WAAW,MAAM;AACtB,oBAAM,QAAQ,KAAK,OAAO,KAAK,IAAI,cAAc,qCAAqC;AAEtF,kBAAI,CAAC,SAAS,OAAO,OAAO,cAAc,WAAY;AACtD,kBAAI,MAAM,WAAY;AAEtB,qBAAO,UAAU,OAAO;AAAA,gBACtB,YAAY;AAAA,gBACZ,YAAY;AAAA,gBACZ,WAAW;AAAA,gBACX,UAAU;AAAA,gBACV,eAAe;AAAA,gBACf,aAAa,KAAK,kBAAkB;AAAA,gBACpC,UAAU,SAAS;AAAA,gBACnB,UAAU,CAAC,QAAQ,YAAY;AAC7B,uBAAK,iBAAiB;AAAA,gBACxB;AAAA,cACF,CAAC;AAAA,YACH,GAAG,EAAE;AAAA,UACP;AAAA,UAEA,gBAAgB;AACd,gBAAI,CAAC,KAAK,cAAc,EAAG;AAE3B,gBAAI,KAAK,cAAc,MAAM,EAAG,MAAK,iBAAiB;AAEtD,iBAAK,qBAAqB;AAC1B,iBAAK,cAAc;AAEnB,gBAAI,KAAK,mBAAmB,UAAW,MAAK,kBAAkB;AAAA,UAChE;AAAA,UAEA,aAAa;AACX,iBAAK,cAAc;AAAA,UACrB;AAAA,UAEA,cAAc;AACZ,gBAAI,KAAK,eAAe,EAAG;AAE3B,iBAAK,cAAc;AAAA,UACrB;AAAA,UAEA,WAAWD,QAAO,WAAW;AAC3B,kBAAM,YAAYA,SAAQ;AAE1B,gBAAI,YAAY,KAAK,aAAa,KAAK,gBAAgB,OAAQ;AAE/D,kBAAM,OAAO,CAAC,GAAG,KAAK,eAAe;AACrC,kBAAM,CAAC,MAAM,IAAI,KAAK,OAAOA,QAAO,CAAC;AAErC,iBAAK,OAAO,WAAW,GAAG,MAAM;AAChC,iBAAK,kBAAkB;AACvB,iBAAK,qBAAqB;AAAA,UAC5B;AAAA,UAEA,gBAAgB,QAAQ;AACtB,mBAAO,cAAc,IAAI,YAAY,iCAAiC;AAAA,cACpE,QAAQ;AAAA,gBACN,SAAS,KAAK,mBAAmB,MAAM;AAAA,gBACvC,WAAW,MAAM,KAAK,YAAY,MAAM;AAAA,cAC1C;AAAA,YACF,CAAC,CAAC;AAAA,UACJ;AAAA,UAEA,mBAAmB,QAAQ;AACzB,kBAAM,QAAQ,CAAC;AAEf,gBAAI,KAAK,qBAAqB,MAAM,GAAG;AACrC,oBAAM,KAAK,wBAAwB,OAAO,yBAAyB,KAAK,IAAI,CAAC,GAAG;AAAA,YAClF;AACA,gBAAI,KAAK,oBAAoB,MAAM,GAAG;AACpC,oBAAM,KAAK,uBAAuB,OAAO,wBAAwB,KAAK,IAAI,CAAC,GAAG;AAAA,YAChF;AACA,gBAAI,CAAC,MAAM,UAAU,OAAO,YAAY;AACtC,oBAAM,KAAK,iBAAiB;AAAA,YAC9B;AAEA,gBAAI,OAAO,YAAa,OAAM,KAAK,aAAa;AAEhD,mBAAO,GAAG,OAAO,IAAI,OAAO,MAAM,KAAK,OAAO,CAAC;AAAA,UACjD;AAAA,UAEA,mBAAmB;AACjB,kBAAM,QAAQ,KAAK,WAAW;AAE9B,mBAAO,GAAG,KAAK,aAAa,UAAU,IAAI,KAAK,GAAG;AAAA,UACpD;AAAA,UAEA,kBAAkB;AAChB,kBAAM,EAAE,OAAO,UAAU,SAAS,cAAc,YAAY,IAAI,KAAK;AAErE,gBAAI,UAAU,EAAG,QAAO;AAExB,kBAAME,SAAQ,cAAc,KAAK,UAAU;AAC3C,kBAAMC,MAAK,KAAK,IAAI,cAAc,SAAS,KAAK;AAEhD,mBAAO,cAAcD,KAAI,cAAcC,GAAE,cAAc,KAAK;AAAA,UAC9D;AAAA,UAEA,gBAAgB;AACd,mBAAO;AAAA,cACL,KAAK,UACH,KAAK,gBACL,KAAK,iBACL,KAAK,YAAY,UACjB,KAAK,YACL,KAAK,qBAAqB,UAC1B,KAAK,eACL,KAAK,oBACL,KAAK,cAAc;AAAA,YACvB;AAAA,UACF;AAAA,UAEA,cAAc;AACZ,mBAAO,SAAS,eAAe,KAAK,MAAM;AAAA,UAC5C;AAAA,UAEA,UAAU;AACR,mBAAO,KAAK,YAAY,GAAG,cAAc;AAAA,UAC3C;AAAA,UAEA,mBAAmB,KAAK;AACtB,gBAAI,CAAC,KAAK,iBAAiB,IAAI,8BAA+B;AAE9D,gBAAI,cAAc,eAAe,CAAC,WAAW;AAC3C,oBAAM,OAAO,OAAO,MAAM;AAC1B,kBAAI,SAAS,SAAU,QAAO;AAC9B,kBAAI,SAAS,UAAW,QAAO;AAC/B,qBAAO;AAAA,YACT,CAAC;AAED,gBAAI,cAAc,gBAAgB,CAAC,WAAW;AAC5C,kBAAI,OAAO,MAAM,SAAU,QAAO;AAClC,qBAAO;AAAA,YACT,CAAC;AAED,gBAAI,gCAAgC;AAAA,UACtC;AAAA,UAEA,oBAAoB,KAAK;AACvB,gBAAI,CAAC,KAAK,iBAAiB,IAAI,yBAA0B;AAEzD,kBAAM,OAAO,IAAI,gBAAgB;AAEjC,gBAAI,CAAC,MAAM,QAAQ,IAAI,EAAG;AAE1B,kBAAM,cAAc,IAAI,iBAAiB,KAAK,CAAC;AAE/C,kBAAM,oBAAoB;AAAA,cACxB,cAAc,CAAC,WAAW;AACxB,sBAAM,MAAM,SAAS,cAAc,KAAK;AAExC,oBAAI,YAAY,KAAK,oBAAoB,OAAO,KAAK;AACrD,uBAAO;AAAA,cACT;AAAA,cACA,YAAY;AAAA,YACd;AAEA,gBAAI;AAAA,cACF;AAAA,cACA,KAAK,IAAI,CAAC,QAAQ;AAChB,oBAAI,IAAI,UAAU,WAAY,QAAO,EAAE,GAAG,KAAK,GAAG,gBAAgB;AAClE,oBAAI,IAAI,UAAU,QAAS,QAAO,EAAE,GAAG,KAAK,GAAG,aAAa;AAC5D,oBAAI,IAAI,UAAU,eAAgB,QAAO,EAAE,GAAG,KAAK,GAAG,kBAAkB;AAExE,uBAAO;AAAA,cACT,CAAC;AAAA,YACH;AAEA,gBAAI,YAAY,UAAU,IAAI,kBAAkB;AAC9C,kBAAI,iBAAiB,EAAE,OAAO,aAAa,YAAY,KAAK,CAAC;AAAA,YAC/D;AAEA,gBAAI,mBAAmB;AAAA,cACrB,OAAO,CAAC,EAAE,OAAO,SAAS,MAAM,OAAO,CAAC;AAAA,cACxC,cAAc,EAAE,MAAM,KAAK;AAAA,YAC7B,CAAC;AAED,gBAAI,2BAA2B;AAAA,UACjC;AAAA,UAEA,eAAe,UAAU,GAAG;AAC1B,kBAAM,MAAM,KAAK,QAAQ;AAEzB,gBAAI,KAAK;AACP,mBAAK,mBAAmB,GAAG;AAC3B,mBAAK,oBAAoB,GAAG;AAC5B,qBAAO,QAAQ,QAAQ,GAAG;AAAA,YAC5B;AACA,gBAAI,WAAW,oBAAqB,QAAO,QAAQ,QAAQ,IAAI;AAE/D,mBAAO,IAAI,QAAQ,CAACC,aAAY;AAC9B,yBAAW,MAAMA,SAAQ,KAAK,eAAe,UAAU,CAAC,CAAC,GAAG,mBAAmB;AAAA,YACjF,CAAC;AAAA,UACH;AAAA,UAEA,uBAAuB;AACrB,kBAAM,QAAQ,KAAK,YAAY;AAE/B,gBAAI,CAAC,MAAO,QAAO;AAEnB,kBAAM,UAAU,IAAI,uBAAuB;AAE3C,gBAAI,UAAU,MAAM,cAAc,mCAAmC;AAErE,gBAAI,QAAS,QAAO;AAEpB,sBAAU,SAAS,cAAc,KAAK;AACtC,oBAAQ,YAAY;AACpB,oBAAQ,MAAM,SAAS;AACvB,oBAAQ,aAAa,eAAe,MAAM;AAC1C,oBAAQ,SAAS;AAEjB,kBAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,oBAAQ,YAAY;AACpB,oBAAQ,aAAa,QAAQ,QAAQ;AACrC,oBAAQ,aAAa,cAAc,SAAS;AAC5C,oBAAQ,YAAY,OAAO;AAC3B,kBAAM,YAAY,OAAO;AAEzB,mBAAO;AAAA,UACT;AAAA,UAEA,qBAAqB;AACnB,kBAAM,UAAU,KAAK,qBAAqB;AAC1C,kBAAM,MAAM,KAAK,QAAQ;AAEzB,gBAAI,KAAK,eAAe;AACtB,kBAAI,cAAc,yBAAyB,IAAI;AAAA,YACjD;AAEA,gBAAI,OAAO,KAAK,gBAAgB,YAAY;AAC1C,kBAAI,YAAY;AAAA,YAClB;AAEA,gBAAI,CAAC,QAAS;AAEd,oBAAQ,SAAS;AACjB,oBAAQ,aAAa,eAAe,OAAO;AAAA,UAC7C;AAAA,UAEA,qBAAqB;AACnB,kBAAM,UAAU,KAAK,YAAY,GAAG,cAAc,mCAAmC;AAErF,gBAAI,CAAC,QAAS;AAEd,oBAAQ,SAAS;AACjB,oBAAQ,aAAa,eAAe,MAAM;AAAA,UAC5C;AAAA,UAEA,WAAW,UAAU;AACnB,mBAAO,QAAQ,KAAK,aAAa,QAAQ,CAAC;AAAA,UAC5C;AAAA,UAEA,eAAe,QAAQ;AACrB,kBAAM,WAAW,KAAK,WAAW,OAAO,EAAE;AAC1C,kBAAM,UAAU,WACZ,6CACA;AACJ,kBAAM,OAAO,WAAW,YAAY;AAEpC,mBAAO;AAAA,6FACgF,OAAO;AAAA,iEACnC,KAAK,OAAO,OAAO,OAAO,EAAE,OAAO,IAAI;AAAA,UACpG;AAAA,UAEA,kBAAkB,QAAQ;AACxB,kBAAMP,QAAO,WAAW,OAAO,IAAI;AACnC,kBAAM,OAAO,WAAW,OAAO,kBAAkB,EAAE;AACnD,kBAAMQ,QAAO,WAAW,OAAO,eAAe,GAAG;AACjD,kBAAM,WAAW,KAAK,cAAc,MAAM,IACtC,YAAY,KAAK,eAAe,MAAM,GAAG,KAAK,gBAAgB,MAAM,CAAC,IACrE;AACJ,kBAAM,aAAa,KAAK,wBAAwB,MAAM;AAEtD,mBAAO;AAAA;AAAA,6BAEgBA,KAAI,kCAAkCR,KAAI;AAAA,oBACnD,QAAQ;AAAA;AAAA,mDAEuB,IAAI;AAAA,kBACrC,UAAU;AAAA;AAAA,UAExB;AAAA,UAEA,gBAAgB,QAAQ;AACtB,kBAAM,QAAQ,WAAW,OAAO,SAAS,EAAE;AAC3C,kBAAM,QAAQ,WAAW,OAAO,SAAS,EAAE;AAE3C,gBAAI,CAAC,SAAS,CAAC,MAAO,QAAO;AAE7B,mBAAO;AAAA,kBACK,QAAQ,oCAAoC,KAAK,SAAS,EAAE;AAAA,kBAC5D,QAAQ,oCAAoC,KAAK,SAAS,EAAE;AAAA;AAAA,UAE1E;AAAA,UAEA,wBAAwB,QAAQ;AAC9B,gBAAI,CAAC,MAAM,QAAQ,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,OAAQ,QAAO;AAE/D,kBAAM,OAAO,OAAO,KAAK,IAAI,cAAc,EAAE,OAAO,OAAO,EAAE,KAAK,EAAE;AAEpE,gBAAI,CAAC,KAAM,QAAO;AAElB,mBAAO,4CAA4C,IAAI;AAAA,UACzD;AAAA,UAEA,cAAc,QAAQ;AACpB,kBAAM,SAAS,CAAC;AAEhB,gBAAI,OAAO,iBAAkB,QAAO,KAAK,MAAM,oBAAoB,6BAA6B,CAAC;AACjG,gBAAI,OAAO,kBAAmB,QAAO,KAAK,MAAM,qBAAqB,6BAA6B,CAAC;AACnG,gBAAI,OAAO,YAAa,QAAO,KAAK,MAAM,eAAe,+BAA+B,CAAC;AAEzF,kBAAM,YAAY,cAAc,cAAc,OAAO,uBAAuB;AAC5E,kBAAM,aAAa,cAAc,eAAe,OAAO,wBAAwB;AAC/E,gBAAI,UAAW,QAAO,KAAK,SAAS;AACpC,gBAAI,WAAY,QAAO,KAAK,UAAU;AAEtC,gBAAI,CAAC,OAAO,OAAQ,QAAO;AAE3B,mBAAO,iDAAiD,OAAO,KAAK,EAAE,CAAC;AAAA,UACzE;AAAA,UAEA,iBAAiB,QAAQ;AACvB,gBAAI,OAAO,kBAAkB,KAAM,QAAO;AAE1C,kBAAM,gBAAgB,OAAO,OAAO,cAAc;AAElD,gBAAI,CAAC,OAAO,SAAS,aAAa,EAAG,QAAO;AAE5C,kBAAM,UAAU,OAAO,OAAO,QAAQ,OAAO,WAAW;AACxD,kBAAM,aAAa,OAAO,SAAS,OAAO,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI;AACrE,kBAAM,eAAe,KAAK,IAAI,gBAAgB,YAAY,CAAC;AAC3D,kBAAM,QAAQ,eAAe;AAE7B,gBAAI,QAAQ;AACZ,gBAAI,QAAQ;AACZ,gBAAI,SAAS,2BAA2B;AACtC,sBAAQ;AACR,sBAAQ;AAAA,YACV,WAAW,SAAS,GAAG;AACrB,sBAAQ;AACR,sBAAQ;AAAA,YACV;AAEA,kBAAM,aAAa,KAAK,IAAK,QAAQ,4BAA6B,KAAK,GAAG;AAC1E,kBAAME,SAAQ,WAAW,YAAY,eAAY,UAAU;AAE3D,mBAAO,oEAAoE,KAAK;AAAA,4BAC1D,WAAWA,MAAK,CAAC;AAAA;AAAA,+EAEkC,UAAU;AAAA;AAAA;AAAA,oBAGrE,KAAK,iBAAc,YAAY,6BAA6B,UAAU;AAAA;AAAA;AAAA,UAGtF;AAAA,UAEA,gBAAgB;AACd,mBAAO,KAAK,QAAQ,IAAI,CAAC,WAAW,KAAK,YAAY,MAAM,CAAC;AAAA,UAC9D;AAAA,UAEA,YAAY,QAAQ;AAClB,kBAAM,gBAAgB,MAAM,QAAQ,OAAO,IAAI,KAAK,OAAO,KAAK,SAAS;AACzE,kBAAM,UACJ,KAAK,oBAAoB,MAAM,KAAK,KAAK,qBAAqB,MAAM,KAAK;AAC3E,gBAAI,UAAU;AACd,gBAAI,KAAK,eAAe,MAAM,EAAG,WAAU;AAAA,qBAClC,KAAK,gBAAgB,MAAM,EAAG,WAAU;AAEjD,mBAAO;AAAA,cACL,IAAI,OAAO;AAAA,cACX,QAAQ,KAAK,eAAe,MAAM;AAAA,cAClC,WAAW,KAAK,kBAAkB,MAAM;AAAA,cACxC,SAAS,KAAK,gBAAgB,MAAM;AAAA,cACpC,OAAO,KAAK,cAAc,MAAM;AAAA,cAChC,OAAO,OAAO,eAAe,OAAO,OAAO,OAAO,OAAO,WAAW;AAAA,cACpE,eAAe,OAAO;AAAA,cACtB,gBAAgB,OAAO;AAAA,cACvB,kBAAkB,OAAO;AAAA,cACzB,wBAAwB,OAAO;AAAA,cAC/B,UAAU,OAAO,iBAAiB,OAAO,OAAO,OAAO,OAAO,aAAa;AAAA,cAC3E,UAAU,KAAK,iBAAiB,MAAM;AAAA,cACtC,KAAK,KAAK,eAAe,MAAM,KAAK;AAAA,cACpC,cAAc,KAAK,aAAa,MAAM;AAAA,cACtC,UAAU,OAAO,SAAS,OAAO,GAAG,OAAO,KAAK,QAAQ;AAAA,cACxD,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,UAEA,WAAW;AACT,mBAAO,KAAK,eAAe,EAAE,KAAK,CAAC,QAAQ;AACzC,kBAAI,CAAC,IAAK;AAEV,oBAAM,OAAO,KAAK,cAAc;AAEhC,kBAAI,OAAO,IAAI,kBAAkB,YAAY;AAC3C,oBAAI,cAAc,yBAAyB,KAAK;AAChD,oBAAI,cAAc,WAAW,IAAI;AAAA,cACnC,WAAW,OAAO,IAAI,eAAe,YAAY;AAC/C,oBAAI,WAAW,IAAI;AAAA,cACrB;AAEA,kBAAI,OAAO,IAAI,oBAAoB,WAAY,KAAI,gBAAgB;AAAA,YACrE,CAAC;AAAA,UACH;AAAA,UAEA,kBAAkB,WAAW;AAC3B,kBAAM,MAAM,KAAK,QAAQ;AAEzB,gBAAI,CAAC,KAAK;AACR,mBAAK,SAAS;AACd;AAAA,YACF;AAEA,iBAAK,mBAAmB,GAAG;AAE3B,kBAAM,OAAO,UACV,IAAI,CAAC,OAAO,KAAK,QAAQ,KAAK,CAAC,WAAW,OAAO,OAAO,EAAE,MAAM,OAAO,EAAE,CAAC,CAAC,EAC3E,OAAO,OAAO,EACd,IAAI,CAAC,WAAW,KAAK,YAAY,MAAM,CAAC;AAE3C,gBAAI,CAAC,KAAK,OAAQ;AAElB,gBAAI,OAAO,IAAI,qBAAqB,YAAY;AAC9C,kBAAI,iBAAiB,EAAE,QAAQ,KAAK,CAAC;AACrC;AAAA,YACF;AAEA,iBAAK,SAAS;AAAA,UAChB;AAAA,UAEA,gBAAgB;AACd,kBAAM,aAAa,CAAC;AACpB,kBAAM,iBAAiB;AAAA,cACrB,mBAAmB;AAAA,cACnB,2BAA2B;AAAA,cAC3B,aAAa;AAAA,cACb,UAAU;AAAA,YACZ;AAEA,gBAAI,KAAK,aAAc,YAAW,KAAK,eAAe;AACtD,gBAAI,KAAK,cAAe,YAAW,KAAK,iBAAiB;AACzD,iBAAK,YAAY,QAAQ,CAAC,WAAW;AACnC,kBAAI,eAAe,MAAM,EAAG,YAAW,KAAK,eAAe,MAAM,CAAC;AAAA,YACpE,CAAC;AACD,gBAAI,KAAK,SAAU,YAAW,KAAK,eAAe;AAElD,mBAAO,WAAW,KAAK,GAAG;AAAA,UAC5B;AAAA,UAEA,SAAS,MAAM;AACb,kBAAM,SAAS,IAAI,gBAAgB;AAAA,cACjC,UAAU,KAAK;AAAA,cACf,cAAc,KAAK;AAAA,cACnB,MAAM,OAAO,IAAI;AAAA,cACjB,OAAO,OAAO,KAAK,WAAW,QAAQ;AAAA,YACxC,CAAC;AAED,gBAAI,KAAK,OAAO,KAAK,EAAG,QAAO,IAAI,yBAAyB,KAAK,OAAO,KAAK,CAAC;AAC9E,iBAAK,qBAAqB,QAAQ,CAAC,SAAS;AAC1C,qBAAO,OAAO,4BAA4B,IAAI;AAAA,YAChD,CAAC;AACD,gBAAI,KAAK,YAAa,QAAO,IAAI,gBAAgB,KAAK,WAAW;AACjE,gBAAI,KAAK,qBAAqB,OAAO;AACnC,qBAAO,IAAI,iCAAiC,uBAAuB;AAAA,YACrE,WAAW,KAAK,qBAAqB,MAAM;AACzC,qBAAO,IAAI,qCAAqC,uBAAuB;AAAA,YACzE;AACA,gBAAI,KAAK,cAAc,MAAO,QAAO,IAAI,cAAc,KAAK,SAAS;AAErE,kBAAM,WAAW,KAAK,cAAc;AAEpC,gBAAI,SAAU,QAAO,IAAI,YAAY,QAAQ;AAE7C,mBAAO,0BAA0B,OAAO,SAAS,CAAC;AAAA,UACpD;AAAA,UAEA,aAAa,OAAO,GAAG;AACrB,iBAAK,mBAAmB;AAExB,mBAAO,MAAM,KAAK,SAAS,IAAI,CAAC,EAC7B,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,WAAW;AAChB,mBAAK,UAAU,OAAO,WAAW,CAAC;AAClC,mBAAK,iBAAiB,OAAO,oBAAoB;AACjD,mBAAK,kBAAkB,OAAO,qBAAqB;AACnD,mBAAK,aAAa,OAAO,cAAc,KAAK;AAE5C,qBAAO,KAAK,SAAS;AAAA,YACvB,CAAC,EACA,MAAM,MAAM;AACX,mBAAK,UAAU,CAAC;AAChB,mBAAK,iBAAiB;AACtB,mBAAK,kBAAkB;AACvB,mBAAK,aAAa,EAAE,GAAG,KAAK,YAAY,OAAO,GAAG,WAAW,MAAM,WAAW,KAAK;AAEnF,qBAAO,KAAK,SAAS;AAAA,YACvB,CAAC,EACA,QAAQ,MAAM;AACb,mBAAK,mBAAmB;AAAA,YAC1B,CAAC;AAAA,UACL;AAAA,UAEA,SAAS,OAAO;AACd,gBAAI,KAAK,gBAAgB,MAAO;AAEhC,iBAAK,cAAc;AACnB,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,aAAa,MAAM;AACjB,gBAAI,KAAK,cAAc,KAAM;AAE7B,iBAAK,YAAY;AACjB,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,gBAAgB;AACd,yBAAa,KAAK,WAAW;AAE7B,iBAAK,cAAc,WAAW,MAAM,KAAK,aAAa,GAAG,kBAAkB;AAAA,UAC7E;AAAA,UAEA,qBAAqBO,QAAO;AAC1B,iBAAK,eAAe,QAAQA,OAAM,OAAO,OAAO;AAChD,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,sBAAsBA,QAAO;AAC3B,iBAAK,gBAAgB,QAAQA,OAAM,OAAO,OAAO;AACjD,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,cAAc,OAAO;AACnB,iBAAK,cAAc,QAAQ,CAAC,KAAK,IAAI,CAAC;AACtC,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,iBAAiB,OAAO;AACtB,kBAAMN,SAAQ,KAAK,YAAY,QAAQ,KAAK;AAE5C,gBAAIA,UAAS,EAAG,MAAK,YAAY,OAAOA,QAAO,CAAC;AAAA,gBAC3C,MAAK,YAAY,KAAK,KAAK;AAEhC,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,YAAY,OAAO;AACjB,iBAAK,WAAW;AAChB,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,uBAAuB,OAAO;AAC5B,iBAAK,uBAAuB,QAAQ,CAAC,KAAK,IAAI,CAAC;AAC/C,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,0BAA0B,OAAO;AAC/B,kBAAMA,SAAQ,KAAK,qBAAqB,QAAQ,KAAK;AAErD,gBAAIA,UAAS,EAAG,MAAK,qBAAqB,OAAOA,QAAO,CAAC;AAAA,gBACpD,MAAK,qBAAqB,KAAK,KAAK;AAEzC,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,eAAe,OAAO;AACpB,iBAAK,cAAc;AACnB,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,oBAAoB,OAAO;AACzB,iBAAK,mBAAmB;AACxB,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,eAAe;AACb,iBAAK,SAAS;AACd,iBAAK,eAAe;AACpB,iBAAK,gBAAgB;AACrB,iBAAK,cAAc,CAAC;AACpB,iBAAK,WAAW;AAChB,iBAAK,uBAAuB,CAAC;AAC7B,iBAAK,cAAc;AACnB,iBAAK,mBAAmB;AACxB,iBAAK,YAAY;AAEjB,kBAAM,mBAAmB,SAAS,eAAe,eAAe;AAEhE,gBAAI,iBAAkB,kBAAiB,UAAU;AAEjD,iBAAK,aAAa;AAAA,UACpB;AAAA,UAEA,SAAS,MAAM;AACb,gBAAI,CAAC,KAAM;AAEX,iBAAK,aAAa,IAAI;AAAA,UACxB;AAAA,UAEA,aAAa,UAAU;AACrB,gBAAI,KAAK,WAAW,QAAQ,GAAG;AAC7B,mBAAK,eAAe,QAAQ;AAC5B;AAAA,YACF;AAEA,kBAAM,SAAS,KAAK,WAAW,QAAQ;AAEvC,gBAAI,CAAC,OAAQ;AAEb,gBACE,OAAO,cACP,OAAO,eACP,KAAK,oBAAoB,MAAM,KAC/B,KAAK,qBAAqB,MAAM,GAChC;AACA,mBAAK,gBAAgB,MAAM;AAC3B;AAAA,YACF;AAEA,iBAAK,YAAY,MAAM;AAAA,UACzB;AAAA,UAEA,YAAY,QAAQ;AAClB,gBAAI,CAAC,UAAU,KAAK,WAAW,OAAO,EAAE,EAAG;AAE3C,iBAAK,kBAAkB;AAAA,cACrB,GAAG,KAAK;AAAA,cACR,EAAE,GAAG,QAAQ,UAAU,KAAK,eAAe,MAAM,EAAE;AAAA,YACrD;AACA,iBAAK,qBAAqB;AAC1B,iBAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;AAAA,UACpC;AAAA,UAEA,eAAe,UAAU;AACvB,gBAAI,CAAC,KAAK,WAAW,QAAQ,EAAG;AAEhC,iBAAK,kBAAkB,KAAK,gBAAgB;AAAA,cAC1C,CAAC,WAAW,OAAO,OAAO,EAAE,MAAM,OAAO,QAAQ;AAAA,YACnD;AACA,iBAAK,qBAAqB;AAC1B,iBAAK,kBAAkB,CAAC,QAAQ,CAAC;AAEjC,gBAAI,CAAC,KAAK,cAAc,KAAK,KAAK,gBAAgB,UAAU;AAC1D,mBAAK,WAAW;AAAA,YAClB;AAAA,UACF;AAAA,UAEA,iBAAiB;AACf,kBAAM,qBAAqB,KAAK,kBAAkB;AAClD,iBAAK,kBAAkB,CAAC;AACxB,iBAAK,qBAAqB;AAC1B,iBAAK,kBAAkB,kBAAkB;AAAA,UAC3C;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,4BAA4B;AAGnC,iBAAO,gCAAgC,CAAC,SAAS,aAAa;AAC5D,kBAAM,OAAO,SAAS,cAAc,mCAAmC,OAAO,IAAI;AAClF,kBAAM,OAAO,QAAQ,KAAK,OAAO,KAAK,IAAI;AAE1C,gBAAI,QAAQ,OAAO,KAAK,iBAAiB,YAAY;AACnD,mBAAK,aAAa,QAAQ;AAAA,YAC5B;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACppCH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,aAAa,CAAC,YAAY,oBAAoB,OAAO;AAE3D,cAAM,WAAW,CAAC,YAAY,eAAe,QAAQ,WAAW,OAAO,CAAC,MAAM;AAE9E,cAAM,cAAc,CAAC,SAAS,SAAS;AACrC,yBAAe,QAAQ,WAAW,OAAO,GAAG,OAAO,IAAI,CAAC;AAAA,QAC1D;AAEA,cAAM,sBAAsB,CAAC,aAAa;AAAA,UACxC,SAAS,OAAO,OAAO;AAAA,UACvB,MAAM,SAAS,OAAO;AAAA,UAEtB,QAAQ,MAAM;AACZ,iBAAK,OAAO;AACZ,wBAAY,KAAK,SAAS,IAAI;AAC9B,mBAAO;AAAA,cACL,IAAI,YAAY,6BAA6B;AAAA,gBAC3C,QAAQ,EAAE,SAAS,KAAK,SAAS,KAAK;AAAA,cACxC,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UAEA,oBAAoBO,QAAO;AACzB,gBAAI,OAAOA,OAAM,OAAO,OAAO,MAAM,KAAK,QAAS;AAEnD,iBAAK,QAAQA,OAAM,OAAO,IAAI;AAAA,UAChC;AAAA,QACF;AAEA,cAAM,4BAA4B,CAAC,aAAa;AAAA,UAC9C,SAAS,OAAO,OAAO;AAAA,UACvB,MAAM,SAAS,OAAO;AAAA,UAEtB,KAAKA,QAAO;AACV,gBAAI,OAAOA,OAAM,OAAO,OAAO,MAAM,KAAK,QAAS;AAEnD,iBAAK,OAAOA,OAAM,OAAO;AAAA,UAC3B;AAAA,UAEA,gBAAgB;AACd,kBAAM,OAAO,CAAC,KAAK;AACnB,iBAAK,OAAO;AACZ,mBAAO;AAAA,cACL,IAAI,YAAY,sCAAsC;AAAA,gBACpD,QAAQ,EAAE,SAAS,KAAK,SAAS,KAAK;AAAA,cACxC,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,sBAAsB;AAC7B,iBAAO,4BAA4B;AAAA,QACrC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACpDI,WAAS,gBAAgB,KAAK,SAAS,GAAG;AAC7C,YAAQ,UAAU,IAAI,SAAS,CAAC,CAAC,IAC7B,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,MACA,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,MACA,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,MACA,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,MACA,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,GAAG,YAAY;AAAA,EACjD;AA1BA,MACM;AADN;AAAA;AACA,MAAM,YAAY,CAAC;AACnB,eAASC,KAAI,GAAGA,KAAI,KAAK,EAAEA,IAAG;AAC1B,kBAAU,MAAMA,KAAI,KAAO,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAAA,MACpD;AAAA;AAAA;;;ACFe,WAARC,OAAuB;AAC1B,QAAI,CAACC,kBAAiB;AAClB,UAAI,OAAO,WAAW,eAAe,CAAC,OAAO,iBAAiB;AAC1D,cAAM,IAAI,MAAM,0GAA0G;AAAA,MAC9H;AACA,MAAAA,mBAAkB,OAAO,gBAAgB,KAAK,MAAM;AAAA,IACxD;AACA,WAAOA,iBAAgB,KAAK;AAAA,EAChC;AAVA,MAAIA,kBACE;AADN;AAAA;AACA,MAAM,QAAQ,IAAI,WAAW,EAAE;AAAA;AAAA;;;ACD/B,MAAMC,aACC;AADP;AAAA;AAAA,MAAMA,cAAa,OAAO,WAAW,eAAe,OAAO,cAAc,OAAO,WAAW,KAAK,MAAM;AACtG,MAAO,iBAAQ,EAAE,YAAAA,YAAW;AAAA;AAAA;;;ACE5B,WAAS,IAAI,SAAS,KAAK,QAAQ;AAC/B,cAAU,WAAW,CAAC;AACtB,UAAM,OAAO,QAAQ,UAAU,QAAQ,MAAM,KAAKC,KAAI;AACtD,QAAI,KAAK,SAAS,IAAI;AAClB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACvD;AACA,SAAK,CAAC,IAAK,KAAK,CAAC,IAAI,KAAQ;AAC7B,SAAK,CAAC,IAAK,KAAK,CAAC,IAAI,KAAQ;AAC7B,QAAI,KAAK;AACL,eAAS,UAAU;AACnB,UAAI,SAAS,KAAK,SAAS,KAAK,IAAI,QAAQ;AACxC,cAAM,IAAI,WAAW,mBAAmB,MAAM,IAAI,SAAS,EAAE,0BAA0B;AAAA,MAC3F;AACA,eAASC,KAAI,GAAGA,KAAI,IAAI,EAAEA,IAAG;AACzB,YAAI,SAASA,EAAC,IAAI,KAAKA,EAAC;AAAA,MAC5B;AACA,aAAO;AAAA,IACX;AACA,WAAO,gBAAgB,IAAI;AAAA,EAC/B;AACA,WAASC,IAAG,SAAS,KAAK,QAAQ;AAC9B,QAAI,eAAO,cAAc,CAAC,OAAO,CAAC,SAAS;AACvC,aAAO,eAAO,WAAW;AAAA,IAC7B;AACA,WAAO,IAAI,SAAS,KAAK,MAAM;AAAA,EACnC;AA5BA,MA6BO;AA7BP;AAAA;AAAA;AACA;AACA;AA2BA,MAAO,aAAQA;AAAA;AAAA;;;AC7Bf;AAAA;AAOA;AAAA;AAAA;;;ACPA;AAAA;AAAA;AAAA,MAAAC;AACA;AAEA,OAAC,WAAY;AACX,cAAM,uBAAuB,SAAU,SAAS,cAAc;AAC5D,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,cAAc;AAAA,YACd,QAAQ,WAAO;AAAA,YACf,WAAW,SAAUC,IAAG;AACtB,mBAAK,eAAe,iBAAS,cAAc,OAAO;AAAA,gBAChD,SAAS;AAAA,gBACT,UAAU,KAAK;AAAA,gBACf,eAAe,KAAK;AAAA,gBACpB,SAAS,KAAK;AAAA,cAChB,CAAC;AAAA,YACH;AAAA,YACA,aAAa,SAAUA,IAAG;AACxB,kBAAI,KAAK,cAAc;AAAE,qBAAK,aAAa,YAAY;AAAA,cAAE;AAAA,YAC3D;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,uBAAuB;AAAA,QAChC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC7BH;AAAA;AAAA;AAAA;AACA;AACC,OAAC,WAAY;AACZ,iBAAS,qBAAqB,SAAS,qBAAqB;AAC1D,gBAAM,QAAQ,SAAS,eAAe,OAAO;AAE7C,cAAI,CAAC,OAAO;AACV,mBAAO;AAAA,cACL,SAAS;AAAA,cACT,qBAAqB;AAAA,cACrB,gBAAgBC;AAAA,YAClB;AAAA,UACF;AAEA,gBAAM,WAAW,kBAAkB,KAAK;AACxC,gBAAM,eAAe,OAAO,wBAAwB,IAAI,QAAQ,KAAK,CAAC;AACtE,gBAAM,UAAU,OAAO;AAAA,YACrB,WAAW,cAAc,CAACC,OAAMA,GAAE,OAAO;AAAA,UAC3C,EAAE,IAAI,CAACA,OAAMA,GAAE,MAAM;AAErB,iBAAO;AAAA,YACL,SAAS,KAAK,UAAU,OAAO;AAAA,YAC/B,qBAAqB,QAAQ;AAAA,cAAO,CAACA,OACnC,oBAAoB,SAASA,EAAC;AAAA,YAChC;AAAA,YACA,gBAAgBD;AAAA,UAClB;AAAA,QACF;AAEA,YAAI,OAAO,WAAW;AACpB,iBAAO,uBAAuB;AAEhC,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACjCH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,yBAAyB,SAC7B,aACA,UACA,iBACA,EAAE,QAAQ,GACV;AACA,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,mBAAmB,SAAU,MAAM,KAAK,gBAAgB,MAAM;AAC5D,qBAAO,MAAM,IAAI,EACd,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,SAAS;AACd,oBAAI,YAAY;AAChB,oBAAI,eAAe;AACjB,wBAAM,KAAK,IAAI,OAAO,EAAE,QAAQ,CAAAE,YAAU;AACxC,oBAAAA,QAAO,WAAWA,QAAO,UAAU;AAAA,kBACrC,CAAC;AAAA,gBACH;AAAA,cACF,CAAC;AAAA,YACL;AAAA,YACA,iBAAiB,SAAU,OAAO;AAChC,wBAAU;AAAA,gBACR,OAAO;AAAA,gBACP,gBAAgB;AAAA,gBAChB,oBAAoB;AAAA,cACtB,CAAC,EAAE,KAAK,KAAK;AAAA,YACf;AAAA,YACA,iBAAiB,SAAUC,eAAc,MAAM;AAC7C,qBAAO,KAAK,YAAY,cAAcA,YAAW;AAAA,YACnD;AAAA,YACA,qBAAqB,SAAUA,eAAc,MAAM;AACjD,qBAAO,KAAK,YAAY,kBAAkBA,YAAW;AAAA,YACvD;AAAA,YACA,wBAAwB,SAAUA,eAAc,MAAM;AACpD,qBAAO,KAAK,YAAY,qBAAqBA,YAAW;AAAA,YAC1D;AAAA,YACA,aAAa,SAAU,UAAUA,eAAc,MAAM;AACnD,oBAAM,OAAO,oBAAoB,KAAK,OAAO,IAAI,QAAQ;AAEzD,qBAAOA,eAAc,GAAG,IAAI,iBAAiBA,YAAW,KAAK;AAAA,YAC/D;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,yBAAyB;AAAA,QAClC;AAAA,MACF,GAAG;AAAA;AAAA;;;ACnDH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,SAAS,CAAC;AAChB,cAAM,mBAAmB,oBAAI,QAAQ;AAErC,cAAM,oBAAoB,SAAU,SAAS;AAC3C,gBAAM,eAAe,QAAQ,eAAe,QAAQ;AAEpD,cAAI,gBAAgB,EAAG,QAAO;AAE9B,iBAAO,QAAQ,YAAY;AAAA,QAC7B;AAEA,cAAM,sBAAsB,SAAU,SAAS,UAAU;AACvD,gBAAM,eAAe,QAAQ,eAAe,QAAQ;AAEpD,kBAAQ,YAAY,gBAAgB,IAAI,IAAI,eAAe;AAAA,QAC7D;AAEA,cAAM,+BAA+B,SAAU,EAAE,OAAO,QAAQ,IAAI,CAAC,GAAG;AACtE,cAAI,CAAC,SAAS,CAAC,QAAS,QAAO,WAAY;AAAA,UAAC;AAE5C,gBAAM,UAAU,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC;AACnD,gBAAM,QAAQ,EAAE,OAAO,SAAS,0BAA0B,MAAM;AAEhE,kBAAQ,KAAK,KAAK;AAClB,2BAAiB,IAAI,SAAS,KAAK;AAEnC,gBAAM,WAAW,WAAY;AAC3B,gBAAI,MAAM,0BAA0B;AAClC,oBAAM,2BAA2B;AACjC;AAAA,YACF;AAEA,kBAAM,WAAW,kBAAkB,OAAO;AAE1C,oBAAQ,QAAQ,CAAC,SAAS;AACxB,kBAAI,SAAS,MAAO;AAEpB,mBAAK,2BAA2B;AAChC,kCAAoB,KAAK,SAAS,QAAQ;AAAA,YAC5C,CAAC;AAAA,UACH;AAEA,kBAAQ,iBAAiB,UAAU,UAAU,EAAE,SAAS,KAAK,CAAC;AAE9D,iBAAO,SAAS,aAAa;AAC3B,oBAAQ,oBAAoB,UAAU,QAAQ;AAE9C,kBAAMC,SAAQ,QAAQ,QAAQ,KAAK;AACnC,gBAAIA,SAAQ,GAAI,SAAQ,OAAOA,QAAO,CAAC;AAEvC,6BAAiB,OAAO,OAAO;AAE/B,gBAAI,QAAQ,WAAW,EAAG,QAAO,OAAO,KAAK;AAAA,UAC/C;AAAA,QACF;AAEA,cAAM,2BAA2B,SAAU,SAAS;AAClD,gBAAM,QAAQ,iBAAiB,IAAI,OAAO;AAC1C,cAAI,CAAC,MAAO;AAEZ,gBAAM,UAAU,OAAO,MAAM,KAAK;AAClC,cAAI,CAAC,QAAS;AAEd,gBAAM,WAAW,kBAAkB,OAAO;AAE1C,kBAAQ,QAAQ,CAAC,SAAS;AACxB,gBAAI,SAAS,MAAO;AAEpB,iBAAK,2BAA2B;AAChC,gCAAoB,KAAK,SAAS,QAAQ;AAAA,UAC5C,CAAC;AAAA,QACH;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,+BAA+B;AACtC,iBAAO,2BAA2B;AAAA,QACpC;AAAA,MACF,GAAG;AAAA;AAAA;;;AC9EH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAMC,QAAO,WAAY;AAAA,QAAC;AAE1B,cAAM,eAAe,SAAU,aAAa,QAAQ,UAAU,CAAC,GAAG;AAChE,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,iBAAiB;AAAA,YACjB,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,OAAO,QAAQ,SAAS;AAAA,YACxB,MAAM,QAAQ,QAAQ;AAAA,YACtB,UAAU;AAAA,YACV,WAAW,QAAQ,aAAa;AAAA,YAChC,aAAa,QAAQ,eAAe;AAAA,YACpC,0BAA0B;AAAA,YAC1B,wBAAwBA;AAAA,YACxB,sBAAsBA;AAAA,YACtB,YAAY,QAAQ,SAAS;AAAA,YAC7B,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,gBAAgB;AAAA,YAChB,eAAe;AAAA,YAEf,MAAM,WAAY;AAChB,mBAAK,YAAY,SAAS,cAAc,IAAI,KAAK,WAAW,EAAE;AAC9D,mBAAK,kBAAkB,KAAK,MAAM,mBAAmB,KAAK;AAC1D,mBAAK,SAAS,SAAS,YAAY,KAAK,MAAM;AAE9C,kBAAI,KAAK,aAAa,OAAO,OAAO,iCAAiC,YAAY;AAC/E,qBAAK,yBAAyB,OAAO,6BAA6B;AAAA,kBAChE,OAAO,KAAK;AAAA,kBACZ,SAAS,KAAK;AAAA,gBAChB,CAAC;AAAA,cACH;AAEA,mBAAK,kBAAkB;AAEvB,kBAAI,KAAK,YAAY;AACnB,qBAAK,OAAO;AAAA,cACd,OAAO;AACL,qBAAK,WAAW;AAAA,cAClB;AAAA,YACF;AAAA,YAEA,SAAS,WAAY;AACnB,mBAAK,uBAAuB;AAC5B,mBAAK,qBAAqB;AAAA,YAC5B;AAAA,YAEA,mBAAmB,SAAU,YAAY,SAAS;AAChD,kBACE,CAAC,KAAK,aACN,CAAC,KAAK,eACN,KAAK,0BACL;AACA,qBAAK,2BAA2B;AAChC;AAAA,cACF;AAEA,oBAAMC,aAAY,gBAAgB,KAAK,SAAS;AAChD,cAAAA,WAAU,QAAQ,CAAC,aAAa;AAC9B,oBAAI,aAAa,QAAQ,OAAO,SAAS,UAAU,MAAM,WAAY;AAErE,yBAAS,2BAA2B;AACpC,yBAAS,UAAU,EAAE,OAAO;AAAA,cAC9B,CAAC;AAAA,YACH;AAAA,YAEA,uBAAuB,WAAY;AACjC,kBAAI,CAAC,KAAK,aAAa,CAAC,KAAK,YAAa;AAE1C,oBAAMA,aAAY,gBAAgB,KAAK,SAAS;AAChD,kBAAI,CAACA,WAAU,SAAS,IAAI,EAAG,CAAAA,WAAU,KAAK,IAAI;AAElD,mBAAK,uBAAuB,WAAY;AACtC,sBAAMC,SAAQD,WAAU,QAAQ,IAAI;AACpC,oBAAIC,SAAQ,GAAI,CAAAD,WAAU,OAAOC,QAAO,CAAC;AAAA,cAC3C,EAAE,KAAK,IAAI;AAAA,YACb;AAAA,YAEA,mBAAmB,WAAY;AAC7B,oBAAM,SAAS;AAEf,qBAAO,OAAO,QAAQ,KAAK,CAAC,QAAQ;AAClC,uBAAO,WAAW,IAAI;AAAA,cACxB,CAAC;AAAA,YACH;AAAA,YAEA,YAAY,WAAY;AACtB,oBAAM,SAAS;AACf,oBAAM,iBAAiB,OAAO,UAAU;AAExC,qBAAO,OAAO,QAAQ,KAAK,CAAC,QAAQ;AAClC,oBAAI,QAAQ,OAAO,IAAI,EAAE,KAAK,CAAC,SAAS;AACtC,wBAAM,WAAW,KAAK,YAAY,EAAE,OAAO,EAAE,CAAC;AAC9C,yBAAO,QACL,KAAK,MAAO,iBAAiB,SAAS,QAAS,CAAC,IAAI,IAAI;AAC1D,yBAAO,OAAO;AAAA,gBAChB,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,YAEA,QAAQ,SAAU,MAAM;AACtB,mBAAK,OAAO,SAAS,IAAI,KAAK;AAC9B,mBAAK,OAAO,KAAK,OAAO,IAAI,IAAI,KAAK;AACrC,mBAAK,OAAO,KAAK,OAAO,KAAK,WAAW,KAAK,WAAW,KAAK;AAE7D,mBAAK,OAAO;AACZ,mBAAK,kBAAkB,UAAU,KAAK,IAAI;AAAA,YAC5C;AAAA,YAEA,QAAQ,WAAY;AAClB,mBAAK,QAAQ,KAAK,QAAQ;AAC1B,mBAAK,OAAO;AACZ,mBAAK,kBAAkB,YAAY,KAAK,KAAK;AAAA,YAC/C;AAAA,YAEA,SAAS,WAAY;AACnB,mBAAK,QAAQ,KAAK,QAAQ;AAC1B,mBAAK,OAAO;AACZ,mBAAK,kBAAkB,YAAY,KAAK,KAAK;AAAA,YAC/C;AAAA,YAEA,UAAU,SAAU,OAAO;AACzB,mBAAK,QAAQ;AACb,mBAAK,OAAO;AAAA,YACd;AAAA,YAEA,aAAa,WAAY;AACvB,kBAAI,CAAC,KAAK,gBAAiB,QAAO;AAElC,qBAAO,KAAK,gBAAgB,cAAc,KAAK,gBAAgB,eAC7D,KAAK,gBAAgB,eAAe,KAAK,gBAAgB;AAAA,YAC7D;AAAA,YAEA,WAAW,SAAUC,QAAO;AAC1B,kBAAI,CAAC,KAAK,YAAY,EAAG;AAEzB,cAAAA,OAAM,eAAe;AACrB,mBAAK,WAAW;AAChB,mBAAK,aAAaA,OAAM;AACxB,mBAAK,aAAaA,OAAM;AACxB,mBAAK,iBAAiB,KAAK,gBAAgB;AAC3C,mBAAK,gBAAgB,KAAK,gBAAgB;AAAA,YAC5C;AAAA,YAEA,MAAM,SAAUA,QAAO;AACrB,kBAAI,CAAC,KAAK,SAAU;AAEpB,cAAAA,OAAM,eAAe;AACrB,mBAAK,gBAAgB,aAAa,KAAK,kBAAkBA,OAAM,UAAU,KAAK;AAC9E,mBAAK,gBAAgB,YAAY,KAAK,iBAAiBA,OAAM,UAAU,KAAK;AAAA,YAC9E;AAAA,YAEA,SAAS,WAAY;AACnB,mBAAK,WAAW;AAAA,YAClB;AAAA,YAEA,QAAQ,WAAY;AAClB,oBAAM,SAAS;AAEf,qBAAO,UAAU,YAAY;AAC7B,qBAAO,OAAO,QAAQ,KAAK,SAAU,KAAK;AACxC,oBAAI,QAAQ,OAAO,IAAI,EAAE,KAAK,SAAU,MAAM;AAC5C,sBAAI,WAAW,KAAK,YAAY,EAAE,OAAO,OAAO,MAAM,CAAC;AAEvD,sBAAI,SAAS,SAAS,cAAc,QAAQ;AAC5C,yBAAO,UAAU,IAAI,WAAW,WAAW;AAC3C,sBAAI,UAAU,OAAO,WAAW,IAAI;AACpC,yBAAO,SAAS,SAAS;AACzB,yBAAO,QAAQ,SAAS;AAExB,sBAAI,gBAAgB;AAAA,oBAClB,eAAe;AAAA,oBACf;AAAA,kBACF;AAEA,uBAAK,OAAO,aAAa,EAAE,QAAQ,KAAK,WAAY;AAClD,2BAAO,UAAU,YAAY,MAAM;AACnC,2BAAO,sBAAsB;AAE7B,wBACE,OAAO,aACP,OAAO,OAAO,6BAA6B,YAC3C;AACA,6BAAO,yBAAyB,OAAO,eAAe;AAAA,oBACxD;AAEA,2BAAO,UAAU;AAAA,kBACnB,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,cAAM,kBAAkB,SAAU,OAAO;AACvC,cAAI,OAAO,WAAW,YAAa,QAAO,CAAC;AAE3C,cAAI,CAAC,OAAO,yBAAyB;AACnC,mBAAO,0BAA0B,CAAC;AAAA,UACpC;AAEA,cAAI,CAAC,OAAO,wBAAwB,KAAK,GAAG;AAC1C,mBAAO,wBAAwB,KAAK,IAAI,CAAC;AAAA,UAC3C;AAEA,iBAAO,OAAO,wBAAwB,KAAK;AAAA,QAC7C;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,eAAe;AAAA,QACxB;AAAA,MACF,GAAG;AAAA;AAAA;;;ACxNH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,cAAc,WAAS,UAAQ;AACnC,gBAAM,YAAY,MAAM,mBAAmB,OAAO,UAAQ,KAAK,MAAM,CAAC,MAAM,IAAI;AAEhF,iBAAQ,aAAa,UAAU,CAAC,KAAK,UAAU,CAAC,EAAE,cAAe;AAAA,QACnE;AAEA,cAAM,gBAAgB,SAAU,cAAc,UAAU,CAAC,GAAG;AAC1D,cAAI;AACJ,gBAAM,aAAa,SAAS,eAAe,YAAY;AAEvD,gBAAM,eAAe,IAAI,OAAO,KAAK,OAAO,aAAa,YAAY;AAAA,YACnE,MAAM,CAAC,SAAS;AAAA,UAClB,CAAC;AAED,uBAAa,YAAY,iBAAiB,MAAM;AAC9C,kBAAM,QAAQ,aAAa,SAAS;AAEpC,kBAAM,WAAW,MAAM,SAAS,SAAS,IAAI;AAC7C,kBAAM,YAAY,MAAM,SAAS,SAAS,IAAI;AAE9C,kBAAM,kBAAkB,YAAY,KAAK;AAEzC,kBAAM,eAAe,gBAAgB,eAAe;AACpD,kBAAM,QAAQ,gBAAgB,OAAO;AACrC,kBAAM,SAAS,gBAAgB,QAAQ,GAAG,YAAY,IAAI,KAAK,KAAK;AACpE,kBAAM,OAAO,gBAAgB,UAAU,KAAK,gBAAgB,6BAA6B;AACzF,kBAAM,SACJ,gBAAgB,qBAAqB,KAAK,gBAAgB,6BAA6B;AACzF,kBAAM,QAAQ,gBAAgB,6BAA6B;AAC3D,kBAAM,MAAM,gBAAgB,aAAa;AACzC,kBAAM,UAAU,gBAAgB,SAAS,KAAK;AAC9C,kBAAM,aAAa,gBAAgB,YAAY;AAE/C;AAAA,cAAU;AAAA,cACA,EAAE,QAAQ,MAAM,QAAQ,OAAO,KAAK,SAAS,UAAU,WAAW,WAAU;AAAA,YAAC;AAAA,UACzF,CAAC;AAED,iBAAO;AAAA,YACL;AAAA,YACA,aAAa,WAAW;AACtB,kBAAIC,WAAU,KAAK;AAEnB,qBAAO,KAAKA,QAAO,EAAE,QAAQ,SAAS,KAAK;AACzC,oBAAI,CAACA,SAAQ,GAAG,GAAG;AAAE,kBAAAA,SAAQ,GAAG,IAAI;AAAA,gBAAG;AAEvC,gBAAAA,SAAQ,GAAG,IAAI,IAAI,OAAOA,SAAQ,GAAG,CAAC,EAAE,QAAQ,KAAK,GAAG,EAAE,QAAQ,QAAO,GAAG,EAAE,KAAK;AAAA,cACrF,CAAC;AAED,oBAAM,EAAE,QAAQ,MAAM,QAAQ,OAAO,KAAK,QAAQ,IAAIA;AAEtD,kBAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAK,QAAO;AAE1D,qBAAO,GAAG,MAAM,KAAK,IAAI,KAAK,MAAM,KAAK,KAAK,IAAI,GAAG,KAAK,WAAW,IAAI;AAAA,YAC3E;AAAA,YACA,aAAa,SAAUC,WAAU,OAAO,MAAM;AAC5C,kBAAG,KAAM,MAAK,OAAO;AACrB,0BAAYA;AAAA,YACd;AAAA,YACA,eAAe,SAAUD,UAAS;AAChC,kBAAI,KAAK,MAAM;AACb,oBAAI,UAAU;AACd,2BAAW,OAAO,KAAK,KAAK,aAAa,SAAS;AAChD,sBAAG,KAAK,KAAK,aAAa,QAAQ,GAAG,GAAG,SAASA,SAAQ,OAAO;AAC9D,8BAAU,KAAK,KAAK,aAAa,QAAQ,GAAG,EAAE;AAAA,kBAChD;AAAA,gBACF;AACA,qBAAK,KAAK,aAAa,QAAQ;AAAA,cACjC;AACA,mBAAK,UAAUA;AAAA,YACjB;AAAA,YACA,cAAc,WAAY;AACxB,mBAAK,UAAU,CAAC;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,gBAAgB;AAAA,QACzB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AClFH;AAAA;AAAA,UAAM,EAAE,KAAAE,MAAK,KAAK,IAAI;AAErB,OAAC,WAAY;AACZ,cAAM,iBAAiB,SAAU,QAAQ;AACvC,eAAK,SAAS;AAEd,iBAAO;AAAA,YACL;AAAA,YAEA,MAAM,SAAU,QAAQ;AACtB,oBAAM,SAAS;AAEf,qBAAO,UAAU,MAAM;AAAE,uBAAO,mBAAmB;AAAA,cAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AACtE,qBAAO,mBAAmB;AAAA,YAC5B;AAAA,YAEA,oBAAoB,WAAY;AAC9B,yBAAW,MAAM;AACf,sBAAM,YAAY,SAAS,cAAc,+CAA+C;AAExF,oBAAI,aAAa,UAAU,UAAU,IAAI;AACvC,4BAAU,MAAM;AAAA,gBAClB;AAAA,cACF,GAAG,GAAG;AAAA,YACR;AAAA,YAEA,UAAU,WAAY;AACpB,mBAAK,OAAO,KAAK,EAAE,IAAI,MAAM,cAAc,MAAM,YAAY,MAAM,UAAU,KAAK,CAAC;AAAA,YACrF;AAAA,YAEA,aAAa,SAAUC,QAAO;AAC5B,kBAAI,KAAK,OAAOA,MAAK,EAAE,IAAI;AACzB,qBAAK,OAAOA,MAAK,EAAE,WAAW;AAAA,cAChC,OAAO;AACL,qBAAK,OAAO,OAAOA,QAAO,CAAC;AAAA,cAC7B;AAAA,YACF;AAAA,YAEA,cAAc,SAAU,OAAO;AAC7B,wBAAU,EAAE,MAAM,iBAAiB,CAAC,EAAE,KAAK,KAAK;AAChD,oBAAM,OAAO;AAAA,YACf;AAAA,YAEA,qBAAqB,WAAY;AAC/B,qBAAO,KAAK,OAAO,OAAO,CAAC,UAAU,MAAM,aAAa,CAAC,EAAE,SAAS;AAAA,YACtE;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,iBAAiB;AAAA,QAC1B;AAEF,eAAO;AAAA,MAEP,GAAG;AAAA;AAAA;;;ACvDH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,YAAY,SAAU,SAAS;AACnC,iBAAO;AAAA,YACL,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,SAAS,WAAW;AAClB,mBAAK,SAAS;AAAA,YAChB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,YAAa,QAAO,YAAY;AAEtD,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACdH;AAAA;AAAA,OAAC,WAAY;AACX,YAAI,aAAa;AAEjB,iBAAS,eAAe,MAAM;AAC5B,gBAAM,OAAO,IAAI,SAAS,IAAI;AAC9B,gBAAM,eAAe,KAAK,IAAI,wDAAwD;AACtF,gBAAM,cAAc,KAAK,IAAI,sDAAsD,KAAK,IAAI,KAAK;AACjG,gBAAM,QAAQ,KAAK,IAAI,+CAA+C,KAAK,IAAI,KAAK;AAEpF,cAAI,iBAAiB,YAAa,QAAO,eAAe,MAAM,SAAS;AACvE,cAAI,iBAAiB,cAAe,QAAO,SAAS;AAEpD,iBAAO;AAAA,QACT;AAEA,eAAO,qCAAqC,SAAU,qBAAqB,YAAY;AACrF,iBAAO;AAAA,YACL;AAAA,YACA,eAAe;AAAA,YACf;AAAA,YACA,OAAO;AACL,mBAAK,QAAQ;AACb,qBAAO,iBAAiB,4BAA4B,MAAM,KAAK,QAAQ,CAAC;AAAA,YAC1E;AAAA,YACA,UAAU;AACR,oBAAM,gBAAgB,MAAM,KAAK,SAAS,iBAAiB,2BAA2B,CAAC;AAEvF,mBAAK,gBAAgB,cAAc,OAAO,cAAc,EAAE;AAAA,YAC5D;AAAA,YACA,MAAM,SAAS;AACb,2BAAa;AACb,mBAAK,aAAa;AAElB,kBAAI,KAAK,eAAe,GAAG;AACzB,yBAAS,eAAe,oBAAoB,GAAG,OAAO;AACtD;AAAA,cACF;AAEA,oBAAMC,SAAQ,MAAM,KAAK,SAAS,iBAAiB,2BAA2B,CAAC;AAE/E,oBAAM,QAAQ,IAAIA,OAAM,IAAI,CAAC,SAC3B,IAAI,aAAa,QAAQ,KAAK,QAAQ;AAAA,gBACpC,MAAM,IAAI,SAAS,IAAI;AAAA,gBACvB,cAAc;AAAA,cAChB,CAAC,EAAE,QAAQ,CACZ,CAAC;AAEF,uBAAS,eAAe,oBAAoB,GAAG,OAAO;AAAA,YACxD;AAAA,UACF;AAAA,QACF;AAAA,MACF,GAAG;AAAA;AAAA;;;ACnDH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,mBAAmB,SACvB,WACA,WACA,EAAE,QAAQ,UAAU,UAAU,GAC9B;AACA,iBAAO;AAAA,YACL,MAAM,WAAY;AAChB,mBAAK,WAAW;AAChB,mBAAK,SAAS,EAAE,KAAK,WAAW,QAAQ,GAAG,KAAK,WAAW,SAAS,EAAE;AACtE,mBAAK,UAAU,SAAS,eAAe,SAAS;AAChD,mBAAK,MAAM,IAAI,OAAO,KAAK,IAAI,KAAK,SAAS;AAAA,gBAC3C,QAAQ,KAAK;AAAA,gBACb,MAAM,KAAK,WAAW;AAAA,cACxB,CAAC;AACD,mBAAK,SAAS,KAAK,UAAU,KAAK,MAAM;AACxC,mBAAK,SAAS,IAAI,OAAO,KAAK,OAAO;AAAA,gBACnC,aAAa;AAAA,gBACb,eAAe;AAAA,gBACf,cAAc;AAAA,gBACd,WAAW;AAAA,gBACX,aAAa;AAAA,gBACb,KAAK,KAAK;AAAA,gBACV,QAAQ,KAAK;AAAA,gBACb,QAAQ,KAAK,SAAS,MAAM;AAAA,gBAC5B,UAAU;AAAA,cACZ,CAAC;AAED,qBAAO,KAAK,MAAM;AAAA,gBAChB,KAAK;AAAA,gBACL;AAAA,gBACA,KAAK,gBAAgB,KAAK,IAAI;AAAA,cAChC;AAEA,qBAAO,KAAK,MAAM;AAAA,gBAChB,KAAK;AAAA,gBACL;AAAA,gBACA,KAAK,gBAAgB,KAAK,IAAI;AAAA,cAChC;AAAA,YACF;AAAA,YACA,iBAAiB,WAAY;AAC3B,oBAAM,YAAY,KAAK,OAAO,UAAU;AACxC,oBAAM,YAAY,EAAE,KAAK,UAAU,IAAI,GAAG,KAAK,UAAU,IAAI,EAAE;AAE/D,mBAAK,OAAO,OAAO,IAAI;AACvB,mBAAK,SAAS,KAAK,UAAU,SAAS;AACtC,mBAAK,SAAS,kBAAkB,SAAS;AAAA,YAC3C;AAAA,YACA,iBAAiB,WAAY;AAC3B,oBAAM,YAAY,KAAK,OAAO,UAAU;AAExC,mBAAK,SAAS,kBAAkB,KAAK,QAAQ,SAAS,CAAC;AAAA,YACzD;AAAA,YACA,WAAW,SAAU,UAAUC,SAAQ,gBAAgB;AACrD,qBAAO,IAAI,OAAO,KAAK,OAAO,EAAE,KAAK,KAAK,KAAK,UAAU,OAAAA,OAAM,CAAC;AAAA,YAClE;AAAA,YACA,YAAY,MAAM;AAChB,oBAAM,WAAW,EAAE,OAAO,IAAI,QAAQ,IAAI,KAAK,GAAG,SAAS,EAAE;AAE7D,kBAAI,SAAS,EAAG,QAAO,SAAS;AAChC,kBAAI,SAAS,GAAI,QAAO,SAAS;AACjC,kBAAI,SAAS,GAAI,QAAO,SAAS;AAEjC,qBAAO,SAAS;AAAA,YAClB;AAAA,YACA,UAAU,CAAC,UAAU,WAAW,KAAK,IAAI;AAAA,YACzC,SAAS,CAAC,YAAY,WAAW,MAAM,IAAI,SAAS,QAAQ,CAAC;AAAA,UAC/D;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,mBAAmB;AAAA,QAC5B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC3EH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,qBAAqB,SAAU,UAAU,CAAC,GAAG;AACjD,cAAI;AAEJ,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB,WAAW;AAAA,YACX,WAAW;AAAA,YACX,SAAS,EAAE,WAAW,SAAS,UAAU,MAAM,GAAG,QAAQ;AAAA,YAC1D,OAAO,WAAY;AACjB,iBAAG,MAAM;AAAA,YACX;AAAA,YACA,YAAY,SAAU,iBAAiB,WAAW,WAAW;AAC3D,oBAAM,SAAS;AAEf,qBAAO,kBAAkB;AACzB,qBAAO,YAAY;AACnB,qBAAO,YAAY;AAEnB,mBAAK,UAAU,iBAAiB;AAAA,gBAC9B,GAAG,OAAO;AAAA,gBACV,MAAM;AAAA,gBACN,aAAa,CAAC,OAAO,UAAU,OAAO,OAAO,UAAU,KAAK;AAAA,gBAC5D,UAAU,SAAU,eAAe;AACjC,wBAAM,UAAU,cAAc,IAAI,CAAC,SAAS,KAAK,WAAW,MAAM,OAAO,CAAC;AAE1E,sBAAI,CAAC,QAAQ,QAAQ;AACnB,2BAAO,UAAU,QAAQ;AACzB,2BAAO,UAAU,QAAQ;AACzB;AAAA,kBACF;AAEA,yBAAO,UAAU,QAAQ,QAAQ,CAAC;AAClC,yBAAO,UAAU,QAAQ,QAAQ,CAAC;AAAA,gBACpC;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,qBAAqB;AAAA,QAC9B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC7CH;AAAA,MAAAC;AAAA;AAAA;AAAA,MAAAA,cAAgB;AAEhB,OAAC,WAAY;AACX,iBAASC,iBAAiB,OAAOC,WAAU;AACzC,gBACG,iBAAiB,IAAI,EACrB,QAAQ,CAAC,IAAIC,WAAU;AACtB,gBAAI,CAAC,GAAG,QAAQ,aAAc;AAE9B,YAAAD,UAAS,IAAIC,MAAK;AAAA,UACpB,CAAC;AAAA,QACL;AAEA,iBAASC,mBAAmB,OAAO;AACjC,cAAIC,QAAO,MAAM,QAAQ;AAEzB,UAAAJ,iBAAgB,OAAO,SAAU,IAAIE,QAAO;AAC1C,YAAAE,SAAQ,MAAMF,SAAQ,MAAM,GAAG,QAAQ;AAAA,UACzC,CAAC;AAED,qBAAO,YAAAG,SAAID,KAAI,EAAE,SAAS;AAAA,QAC5B;AAEA,iBAASE,uBAAuB,OAAO;AACrC,gBAAM,UAAU,CAAC;AAEjB,UAAAN,iBAAgB,OAAO,SAAU,IAAIE,QAAO;AAC1C,oBAAQ,GAAG,QAAQ,YAAY,IAAI,EAAE,OAAAA,QAAO,QAAQ,GAAG,QAAQ,cAAc,SAAS,KAAK;AAAA,UAC7F,CAAC;AAED,iBAAO;AAAA,QACT;AAEA,iBAASK,WAAU,OAAO,SAAS;AACjC,oBAAU,OAAO,OAAO,OAAO;AAE/B,kBAAQ,QAAQ,SAAU,EAAE,OAAAL,QAAO,QAAQ,GAAG;AAC5C,gBAAI,QAAS;AAEb,kBACG,iBAAiB,mBAAmBA,SAAQ,KAAK,sBAAsBA,SAAQ,KAAK,GAAG,EACvF,QAAQ,CAAC,OAAO;AACf,iBAAG,MAAM,UAAU;AAAA,YACrB,CAAC;AAAA,UACL,CAAC;AAAA,QACH;AAEA,cAAM,yBAAyB,SAAU,OAAO;AAC9C,gBAAM,WAAWC,mBAAkB,KAAK;AACxC,gBAAM,UAAU,OAAO,wBAAwB,IAAI,QAAQ,KAAKG,uBAAsB,KAAK;AAC3F,UAAAC,WAAU,OAAO,OAAO;AAExB,iBAAO;AAAA,YACL,SAAS,OAAO,OAAO,OAAO;AAAA,YAC9B,UAAU,SAAU,KAAK;AACvB,qBAAO,IACJ,QAAQ,oBAAoB,EAAE,EAC9B,QAAQ,YAAY,GAAG,EACvB,QAAQ,UAAU,CAACC,OAAMA,GAAE,YAAY,CAAC;AAAA,YAC7C;AAAA,YACA,MAAM;AAAA,YACN,aAAa,SAAU,QAAQ;AAC7B,qBAAO,QAAQ,MAAM,EAAE;AAAA,YACzB;AAAA,YACA,QAAQ,SAAU,QAAQ;AACxB,sBAAQ,MAAM,EAAE,UAAU,CAAC,QAAQ,MAAM,EAAE;AAE3C,qBAAO,wBAAwB,IAAI,UAAU,OAAO;AAEpD,oBACG,iBAAiB,mBAAmB,QAAQ,MAAM,EAAE,QAAQ,KAAK,sBAAsB,QAAQ,MAAM,EAAE,QAAQ,KAAK,GAAG,EACvH,QAAQ,CAAC,OAAO;AACf,mBAAG,MAAM,UAAU,QAAQ,MAAM,EAAE,UAAU,KAAK;AAAA,cACpD,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,yBAAyB;AAAA,QAClC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACnFH;AAAA,MAAAC;AAAA;AAAA;AAAA,MAAAA,iBAAc;AAEd,OAAC,WAAY;AACX,cAAM,wBAAwB,SAAU,UAAU,CAAC,GAAG;AACpD,gBAAM,aAAa,SAAS,cAAc,WACpC,eAAe,SAAS,gBAAgB,IACxC,MAAM,SAAS,KACf,eAAe,UAAU,SAAS,gBAAgB,CAAC,CAAC,GACpD,YAAY,SAAS,WACrB,WAAW,SAAS,YAAY,IAChC,kBAAkB,SAAS,iBAC3B,iBAAiB,SAAS,gBAC1B,OAAO,SAAS,QAAQ,MACxB,gBAAgB,SAAS,iBAAiB,OAC1C,eAAe,SAAS,gBAAgB,OACxC,cAAc,SAAS,eAAe;AAE5C,mBAAS,UAAW,YAAY;AAC9B,mBAAO,WAAW,IAAI,YAAU,EAAE,GAAG,OAAO,OAAO,MAAM,GAAG,EAAE;AAAA,UAChE;AAEA,mBAAS,qBAAqB,SAAS;AACrC,mBAAO,QAAQ;AAEf,mBAAO;AAAA,eACE,KAAK,cAAc,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,iDAKO,QAAQ,UAAU,CAAC;AAAA,YAExD,gBACA,+CAA+C,QAAQ,YAAY,KAAK,KAAK,SAC/E;AAAA;AAAA;AAAA,UAGN;AAEA,iBAAO;AAAA,YACL,YAAY,SAAS,mBAAmB;AACtC,oBAAM,QAAQ;AAEd,kBAAI,kBAAkB,QAAQ;AAC5B,kCAAkB,OAAO,QAAQ;AACjC,kCAAkB,SAAS;AAAA,cAC7B;AAEA,mBAAK,SAAS,IAAI,OAAO,mBAAmB;AAAA,gBAC1C,aAAa;AAAA,gBACb,kBAAkB;AAAA,gBAClB,aAAa;AAAA,gBACb,UAAU;AAAA,kBACR;AAAA,kBACA,SAAS;AAAA,kBACT;AAAA,kBACA,YAAY,CAAC,YAAY,YAAY;AAAA,gBACvC;AAAA,gBACA,WAAW;AAAA,kBACT,cAAc;AAAA,gBAChB;AAAA,gBACA,WAAW;AAAA,gBACX;AAAA,cACF,CAAC;AAED,mBAAK,OAAO,QAAQ,YAAY;AAChC,mBAAK,OAAO,GAAG,SAAS,eAAAC,QAAE,SAAS,KAAK,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC;AAEhE,kBAAI,cAAc;AAChB,qBAAK,OAAO,GAAG,SAAS,MAAM;AAC5B,sBAAI,KAAK,OAAO,SAAS,UAAU,UAAU,aAAa,QAAQ;AAChE,yBAAK,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,CAAC;AAAA,kBACxC,OAAO;AACL,yBAAK,OAAO,SAAS,KAAK,KAAK,KAAK,MAAM;AAAA,kBAC5C;AAAA,gBACF,CAAC;AAAA,cACH;AAEA,kBAAI,iBAAiB;AAErB,oBAAM,aAAa,MAAM;AACvB,sBAAM,OAAO,kBAAkB,QAAQ,MAAM;AAC7C,oBAAI,QAAQ,KAAK,OAAO,cAAc;AACpC,uBAAK,cAAc;AAAA,gBACrB;AAAA,cACF;AAEA,mBAAK,OAAO,GAAG,OAAO,SAASC,IAAG;AAChC,oBAAI,CAAC,gBAAgB;AACnB,wBAAM,WAAWA,GAAE,OAAO;AAC1B,sBAAI,YAAY,CAAC,SAAS,MAAM,SAAS,OAAO;AAC9C,6BAAS,KAAK,SAAS;AAAA,kBACzB;AACA,6BAAW,MAAM,WAAW,GAAG,GAAG;AAAA,gBACpC;AAAA,cACF,CAAC;AAED,mBAAK,OAAO,GAAG,UAAU,UAAU;AAEnC,kBAAI,aAAa;AACf,qBAAK,OAAO,IAAI,MAAM,iBAAiB,SAAS,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,cACzE;AAEA,yBAAW,MAAM;AAAE,iCAAiB;AAAA,cAAO,GAAG,GAAG;AAAA,YACnD;AAAA,YACA,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAa,SAAS,YAAYC,OAAM;AACtC,kBAAI,KAAK,SAAS,UAAU;AAC1B,uBAAO,GAAG,UAAU,IAAIA,KAAI;AAAA,cAC9B,WAAW,KAAK,iBAAiB;AAC/B,uBAAO,GAAG,UAAU,IAAIA,KAAI,IAAI,KAAK,cAAc;AAAA,cACrD,OAAO;AACL,uBAAO,GAAG,UAAU,IAAIA,KAAI;AAAA,cAC9B;AAAA,YACF;AAAA,YACA,SAAS,SAASD,IAAG;AACnB,kBAAI,SAAS,KAAK;AAElB,qBAAO,QAAQ,IAAI;AAEnB,kBAAI,eAAe,IAAI,QAAQ,WAAWA,GAAE,OAAO,KAAK;AAExD,oBAAM,cAAc,EAAE,QAAQ,MAAM,CAAC,EAClC,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,eAAa;AACjB,oBAAI,WAAW;AAAE,8BAAY,UAAU,SAAS;AAAA,gBAAE;AAElD,uBAAO,SAAS,YAAY,CAAC,GAAG,UAAU,SAAS,GAAG,GAAG,OAAO,KAAK;AACrE,uBAAO,QAAQ,KAAK,EAAE,SAAS,KAAK,KAAK,QAAQA,GAAE,OAAO,KAAK;AAAA,cACjE,CAAC;AAAA,YACL;AAAA,YACA,SAAS,eAAeA,IAAG;AACzB,oBAAM,iBAAiBA,GAAE,iBAAiB,OAAO,gBAAgB,QAAQ,MAAM,KAAK;AACpF,oBAAM,SAAS,KAAK,kBAAkB,aAAa;AAEnD,kBAAI,CAAC,OAAO,OAAQ;AAEpB,cAAAA,GAAE,eAAe;AACjB,oBAAM,KAAK,gBAAgB,MAAM;AAAA,YACnC;AAAA,YACA,mBAAmB,SAAS,MAAM;AAChC,qBAAO,CAAC,GAAG,IAAI;AAAA,gBACb,KACG,MAAM,aAAa,EACnB,IAAI,WAAS,MAAM,KAAK,CAAC,EACzB,OAAO,OAAO;AAAA,cACnB,CAAC;AAAA,YACH;AAAA,YACA,iBAAiB,eAAe,QAAQ;AACtC,oBAAME,WAAU,MAAM,QAAQ,IAAI,OAAO,IAAI,WAAS,KAAK,gBAAgB,KAAK,CAAC,CAAC;AAClF,oBAAM,YAAYA,SAAQ,OAAO,OAAO;AAExC,kBAAI,CAAC,UAAU,OAAQ;AAEvB,oBAAM,cAAc,IAAI,IAAI,KAAK,OAAO,MAAM,IAAI,SAAO,OAAO,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC;AACrF,oBAAM,kBAAkB,UAAU,OAAO,SAAO,CAAC,YAAY,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC;AAE7F,kBAAI,CAAC,gBAAgB,OAAQ;AAE7B,mBAAK,OAAO,SAAS,YAAY,CAAC,GAAG,KAAK,OAAO,SAAS,WAAW,GAAG,eAAe;AACvF,mBAAK,OAAO,QAAQ,eAAe;AAAA,YACrC;AAAA,YACA,iBAAiB,eAAe,OAAO;AACrC,oBAAM,eAAe,IAAI,QAAQ,WAAW,mBAAmB,KAAK,CAAC;AAErE,kBAAI;AACF,sBAAM,WAAW,MAAM,MAAM,cAAc,EAAE,QAAQ,MAAM,CAAC;AAC5D,oBAAI,CAAC,SAAS,GAAI,QAAO;AAEzB,oBAAI,YAAY,MAAM,SAAS,KAAK;AACpC,oBAAI,UAAW,aAAY,UAAU,SAAS;AAE9C,sBAAM,aAAa,UAAU,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,CAAC;AACtE,sBAAM,iBAAiB,MAAM,YAAY;AAEzC,uBAAO,WAAW,KAAK,WAAS;AAC9B,wBAAM,UAAU,OAAO,QAAQ,UAAU,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY;AACrE,wBAAM,KAAK,OAAO,OAAO,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY;AAEtD,yBAAO,YAAY,kBAAkB,OAAO;AAAA,gBAC9C,CAAC,KAAK;AAAA,cACR,SAASC,SAAQ;AACf,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,wBAAwB;AAAA,QACjC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACvMH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,gBAAgB,SAAU,EAAE,WAAW,eAAe,SAAS,wBAAwB,GAAG;AAC9F,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,YACA,iBAAiB;AAAA,YACjB,sBAAsB;AAAA,YACtB,mBAAmB;AAAA,YACnB,eAAe;AAAA,YAEf,iBAAiB,EAAE,WAAW,GAAG;AAC/B,kBAAI,eAAe,MAAM,KAAK,mBAAmB,GAAG;AAClD,qBAAK,kBAAkB;AAAA,cACzB,OAAO;AACL,qBAAK,mBAAmB;AAAA,cAC1B;AAAA,YACF;AAAA,YAEA,MAAM,cAAc,MAAM,SAAS;AACjC,mBAAK,uBAAuB;AAC5B,mBAAK,oBAAoB,QAAQ;AACjC,kBAAI,CAAC,QAAQ,KAAK,SAAS,cAAc,CAAC,KAAK,kBAAmB;AAElE,oBAAM,WAAW,IAAI,SAAS;AAC9B,uBAAS,OAAO,QAAQ,IAAI;AAC5B,uBAAS,OAAO,YAAY,OAAO;AACnC,uBAAS,OAAO,cAAc,QAAQ,EAAE;AACxC,uBAAS,OAAO,sBAAsB,SAAS,cAAc,uBAAuB,EAAE,OAAO;AAE7F,oBAAM,WAAW,MAAM,MAAM,yBAAyB,EAAE,QAAQ,QAAQ,MAAM,SAAS,CAAC;AACxF,oBAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,mBAAK,uBAAuB,KAAK;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,gBAAgB;AAAA,QACzB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC1CH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,eAAe,SAAU,cAAc,UAAU,CAAC,GAAG;AACzD,iBAAO;AAAA,YACL,cAAc;AAAA,YACd,cAAc;AAAA,YACd,QAAQ;AAAA,cACN,KAAK,QAAQ;AAAA,cACb,IAAI;AAAA,gBACF,OAAO,QAAQ,YAAY;AAAA,gBAC3B,OAAO,QAAQ,YAAY;AAAA,cAC7B;AAAA,cACA,KAAK;AAAA,gBACH,OAAO,QAAQ,aAAa;AAAA,gBAC5B,OAAO,QAAQ,aAAa;AAAA,cAC9B;AAAA,YACF;AAAA,YACA,UAAU,QAAQ,YAAY;AAAA,YAC9B,QAAQ,SAAUC,WAAU;AAC1B,kBAAI,KAAK,SAAU;AAEnB,mBAAK,eAAe,KAAK,UAAU,IAAI,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,GAAG;AAC9E,mBAAK,gBAAgB;AAErB,kBAAI,KAAK,OAAO,KAAK;AACnB,sBAAM,OAAO,KAAK,UAAU,EAAE,OAAO,KAAK,aAAa,CAAC;AAExD,oBAAI,aAAa,SAAS,KAAK,OAAO,KAAK;AAAA,kBACzC;AAAA,kBACA,cAAc;AAAA,gBAChB,CAAC,EAAE,QAAQ;AAAA,cACb;AAEA,cAAAA,UAAS,0BAA0B,EAAE,SAAS,KAAK,UAAU,GAAG,MAAM,QAAQ,KAAK,CAAC;AAAA,YACtF;AAAA,YACA,WAAW,WAAY;AACrB,qBAAO,KAAK,iBAAiB,KAAK,OAAO,GAAG;AAAA,YAC9C;AAAA,YACA,YAAY,WAAY;AACtB,qBAAO,CAAC,KAAK,UAAU;AAAA,YACzB;AAAA,YACA,SAAS,WAAW;AAClB,qBAAO;AAAA,gBACL,CAAC,KAAK,OAAO,IAAI,KAAK,GAAG,KAAK,WAAW;AAAA,gBACzC,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,UAAU;AAAA,cACzC;AAAA,YACF;AAAA,YACA,eAAe,WAAW;AACxB,qBAAO;AAAA,gBACL,qCAAqC,KAAK,WAAW;AAAA,gBACrD,oCAAoC,KAAK,UAAU;AAAA,cACrD;AAAA,YACF;AAAA,YACA,iBAAiB,WAAY;AAC3B,kBAAI,KAAK,iBAAiB,KAAK,OAAO,GAAG,OAAO;AAC9C,qBAAK,eAAe,QAAQ;AAAA,cAC9B,OAAO;AACL,qBAAK,eAAe,QAAQ;AAAA,cAC9B;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,eAAe;AAAA,QACxB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACnEH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,SAAS,WAAY;AACzB,iBAAO;AAAA,YACL,SAAS;AAAA,YACT,UAAU;AAAA,YACV,aAAa;AAAA,YACb,QAAQ,SAAU,OAAO,WAAW,MAAMC,SAAQ,MAAM;AACtD,kBAAI,KAAK,aAAa,SAASA,WAAU,KAAM,CAAAA,OAAM,eAAe;AAEpE,kBAAI,KAAK,aAAa,MAAO,MAAK,UAAU;AAE5C,mBAAK,cAAc;AACnB,mBAAK,WAAW;AAEhB,kBAAI,aAAa,MAAM;AACrB,2BAAW,MAAM,SAAS,eAAe,GAAG,QAAQ,SAAS,EAAE,eAAe,EAAE,UAAU,SAAS,CAAC,GAAG,GAAG;AAE1G;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,SAAS;AAAA,QAClB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC5BH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,eAAe,SAAU,SAAS;AACtC,iBAAO;AAAA,YACL;AAAA,YACA,UAAUC,QAAO;AACf,kBAAIA,WAAU,KAAK,QAAQ,SAAS,GAAG;AAAE;AAAA,cAAO;AAEhD,mBAAK,QAAQ,KAAK,CAAC,CAAC;AAAA,YACtB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,YAAa,QAAO,eAAe;AAEzD,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACfH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,UAAU,SAAU,iBAAiB;AACzC,iBAAO;AAAA,YACL,UAAU;AAAA,YACV,QAAQ,SAAU,KAAK;AAAE,mBAAK,WAAW;AAAA,YAAI;AAAA,UAC/C;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,UAAU;AAAA,QACnB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACbH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,eAAe,SACnB,aACA,eACAC,QAAO,MACP,UAAU,CAAC,GACX;AACA,iBAAO;AAAA,YACL,QAAQ;AAAA,YACR,YAAY,SACV,cACA,UAAU,MACVC,WAAU,CAAC,GACX,YAAY,MACZ,YAAY,OACZ;AACA,oBAAM,SAAS;AAEf,kBAAI,KAAK,QAAQ;AACf,qBAAK,OAAO,QAAQ;AACpB,qBAAK,SAAS;AAAA,cAChB;AAEA,oBAAM,eAAe,CAAC,QAAQ;AAC5B,oBAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAC3C,yBAAO;AAAA,oBACL,GAAG;AAAA,oBACH,OAAO,OAAO,IAAI,MAAM,IAAI,SAAS,EAAE;AAAA,oBACvC,MAAM,IAAI,QAAQ,IAAI,SAAS,OAAO,IAAI,MAAM,EAAE;AAAA,kBACpD;AAAA,gBACF;AAEA,uBAAO;AAAA,kBACL,OAAO,OAAO,GAAG;AAAA,kBACjB,MAAM,OAAO,GAAG;AAAA,gBAClB;AAAA,cACF;AAEA,oBAAM,sBAAsB,cAAc,IAAI,YAAY;AAC1D,oBAAM,oBAAoB,YAAY,IAAI,YAAY;AAEtD,mBAAK,SAAS,IAAI,OAAO,cAAc;AAAA,gBACrC,WAAWD,QAAO,KAAK,WAAW,mBAAmB,IAAI;AAAA,gBACzD,aAAa,QAAQ,eAAe;AAAA,gBACpC,kBAAkB;AAAA,gBAClB,SAAS,QAAQ;AAAA,gBACjB,UAAU,CAAC,YAAY;AACrB,sBAAI,QAAQ,SAAS;AACnB,0BAAM,eAAe,IAAI,OAAO,QAAQ,OAAO;AAC/C,2BAAO,aAAa,KAAK,QAAQ,KAAK;AAAA,kBACxC;AACA,yBAAO;AAAA,gBACT;AAAA,gBACA,UAAU;AAAA,kBACR,UAAU;AAAA,kBACV,WAAW,QAAQ,qBAAqB;AAAA,kBACxC,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,YAAY,CAAC,MAAM;AAAA,gBACrB;AAAA,gBACA,WAAW;AAAA,kBACT,cAAc,SAAU,SAAS;AAC/B,2BAAO,QAAQ,KAAK,cAAc,OAAO,CAAC,WAAW,KAAK,SAAS,WAAW,YAAY;AAAA,kBACtF,QAAQ,QAAQ,QAAQ,KAAK;AAAA;AAAA,kBAEnC;AAAA,kBACA,gBAAgB,WAAY;AAC1B,2BAAO,4DACL,KAAK,SAAS,WAAW,YAC3B;AAAA,kBACI,SAAS,YAAY,kBAAkB,EAAE;AAAA;AAAA,kBAE/C;AAAA,gBACF;AAAA,gBACA,GAAG;AAAA,cACL,CAAC;AAED,mBAAK,OAAO,QAAQA,QAAO,KAAK,WAAW,iBAAiB,IAAI,iBAAiB;AACjF,mBAAK,OAAO,GAAG,mBAAmB,CAACE,OAAM;AACvC,oBAAIA,GAAE,OAAO,IAAI,QAAQ,aAAa,6BAA6B;AACjE,6BAAW,MAAM,KAAK,OAAO,SAAS,KAAK,GAAG,GAAG;AAAA,gBACnD;AAAA,cACF,CAAC;AAED,mBAAK,OAAO,IAAI,MAAM,iBAAiB,aAAa,CAACA,OAAM;AACzD,oBAAIA,GAAE,OAAO,QAAQ,cAAc,EAAG;AAEtC,gBAAAA,GAAE,eAAe;AACjB,qBAAK,OAAO,IAAI,MAAM,MAAM;AAAA,cAC9B,CAAC;AAED,kBAAI,WAAW;AACb,oBAASC,aAAT,SAAmB,UAAU;AAC3B,wBAAMC,KAAI,IAAI,OAAO,YAAY;AACjC,kBAAAA,GAAE,qBAAqB;AAAA,gBACzB;AAHS,gCAAAD;AAKT,oBAAI,SAAS,KAAK,OAAO,IAAI,OAAO;AAAA,kBAClC,UAAU,MAAM,KAAK,OAAO,SAAS,WAAW;AAAA,kBAChD,WAAW,EAAE,SAASA,WAAU;AAAA,gBAClC,CAAC;AAAA,cACH;AAEA,cAAAF,SAAQ,QAAQ,CAACI,YAAWA,QAAO,KAAK,QAAQ,SAAS,CAAC;AAAA,YAC5D;AAAA,YACA,YAAY,SAAU,MAAM;AAC1B,kBAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAC/B,uBAAO,KAAK,KAAK,CAACC,IAAGC,OAAM;AACzB,wBAAM,UAAUD,GAAE,QAAQA,GAAE,SAAS,IAAI,SAAS;AAClD,wBAAM,UAAUC,GAAE,QAAQA,GAAE,SAAS,IAAI,SAAS;AAClD,yBAAO,OAAO,cAAc,MAAM;AAAA,gBACpC,CAAC;AAAA,cACH,OAAO;AACL,uBAAO,KAAK,KAAK;AAAA,cACnB;AAAA,YACF;AAAA,YACA,cAAc;AAAA,UAChB;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,eAAe;AAAA,QACxB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC7HH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,uBAAuB,WAAY;AACvC,iBAAO;AAAA,YACL,mBAAmB,SAAU,OAAO;AAClC,kBAAI,UAAU,SAAS,cAAc,gCAAgC;AAErE,kBAAI,CAAC,SAAS;AACZ,0BAAU,SAAS,cAAc,yCAAyC;AAAA,cAC5E;AAEA,kBAAI,CAAC,SAAS;AACZ,0BAAU,SAAS,cAAc,0CAA0C;AAAA,cAC7E;AAEA,kBAAI,CAAC,SAAS;AACZ,sBAAM,SAAS,SAAS,iBAAiB,oBAAoB;AAC7D,0BAAU,OAAO,OAAO,SAAS,CAAC;AAAA,cACpC;AAEA,kBAAI,WAAW,QAAQ,kBAAkB;AACvC,sBAAM,cAAc,QAAQ,iBAAiB,SAAS,CAAC;AAEvD,oBAAI,CAAC,YAAY,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,GAAG;AAChD,0BAAQ,iBAAiB,QAAQ,CAAC,EAAE,IAAI,OAAO,OAAO,MAAM,CAAC,CAAC;AAAA,gBAChE;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,uBAAuB;AAAA,QAChC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACnCH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,cAAc,WAAY;AAC9B,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB,eAAe;AAAA,YACf,eAAe,SAAU,MAAM;AAC7B,mBAAK,kBAAkB;AAEvB,yBAAW,WAAY;AACrB,qBAAK,YAAY,MAAM;AAAA,cACzB,GAAG,GAAG;AAAA,YACR;AAAA,YACA,kBAAkB,WAAW;AAC3B,mBAAK,kBAAkB;AAAA,YACzB;AAAA,YACA,eAAe,WAAW;AACxB,mBAAK,gBAAgB;AAAA,YACvB;AAAA,YACA,aAAa,WAAW;AACtB,mBAAK,gBAAgB;AAAA,YACvB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,cAAc;AAAA,QACvB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC7BH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,mBAAmB,SAAU,SAAS;AAC1C,iBAAO;AAAA,YACL,QAAQ,QAAQ,QAAQ;AAAA,YACxB,iBAAiB;AAAA,cACf,WAAW,QAAQ,cAAc,QAAQ;AAAA,cACzC,UAAU,QAAQ,aAAa,QAAQ;AAAA,cACvC,aAAa,QAAQ,gBAAgB,QAAQ;AAAA,cAC7C,WAAW,QAAQ,cAAc,QAAQ;AAAA,cACzC,eAAe,QAAQ,kBAAkB,QAAQ;AAAA,YACnD;AAAA,YACA,SAAS;AAAA,YACT,OAAO;AAAA,YACP,cAAc,SAAS,YAAY,oBAAoB;AACrD,kBAAI,SAAS;AACb,kBAAI,QAAQ,WAAW,QAAQ,WAAW,aAAa,EAAE,QAAQ;AACjE,kBAAI,gBAAgB,mBAAmB;AACvC,kBAAI,MAAM,iBAAiB,KAAK,IAAI,aAAa;AAEjD,mBAAK,UAAU;AACf,mBAAK,QAAQ;AACb,mBAAK,kBAAkB,EAAE,OAAO,cAAc;AAE9C,qBAAO,MAAM,GAAG,EACb,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,YAAU;AACd,uBAAO,SAAS;AAEhB,uBAAO,kBAAkB;AAAA,kBACvB,GAAG,OAAO;AAAA,kBACV,aAAa,OAAO;AAAA,kBACpB,WAAW,OAAO;AAAA,kBAClB,UAAU,OAAO;AAAA,kBACjB,WAAW,OAAO;AAAA,kBAClB,eAAe,IAAI,KAAK,OAAO,UAAU,EAAE,YAAY;AAAA,gBACzD;AAEA,2BAAW,MAAM;AACf,wBAAM,YAAY,SAAS,cAAc,wDAAwD;AAEjG,sBAAI,aAAa,UAAU,cAAc,OAAO,iBAAiB;AAC/D,8BAAU,WAAW,QAAQ,OAAO,iBAAiB,IAAI;AAAA,kBAC3D;AAAA,gBACF,GAAG,GAAG;AAAA,cACR,CAAC,EACA,MAAM,WAAS;AACd,uBAAO,SAAS;AAChB,uBAAO,QAAQ;AAAA,cACjB,CAAC,EACA,QAAQ,MAAM;AAAE,uBAAO,UAAU;AAAA,cAAM,CAAC;AAAA,YAC7C;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,mBAAmB;AAAA,QAC5B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC3DH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,2BAA2B,SAAU,UAAU,mBAAmB;AACtE,iBAAO;AAAA,YACL,iBAAiB,CAAC;AAAA,YAClB,cAAc,WAAY;AACxB,oBAAM,SAAS,KAAK,8BAA8B;AAClD,oBAAM,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,OAAO,EAAE;AACtE,oBAAM,OAAO,mBAAmB,QAAQ,uBAAuB,iBAAiB;AAEhF,kBAAI,aAAa,SAAS,MAAM;AAAA,gBAC9B;AAAA,gBACA,cAAc;AAAA,cAChB,CAAC,EAAE,QAAQ;AAAA,YACb;AAAA,YACA,+BAA+B,WAAY;AACzC,qBAAO,OAAO,OAAO,KAAK,eAAe,EAAE,IAAI,CAAC,YAAY;AAC1D,sBAAM,YAAY,WAAW,QAAQ,SAAS;AAE9C,uBAAO;AAAA,kBACL,IAAI,QAAQ;AAAA,kBACZ,YAAY,QAAQ;AAAA,kBACpB,YAAY;AAAA,kBACZ,UAAU,cAAc;AAAA,gBAC1B;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,2BAA2B;AAAA,QACpC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AClCH;AAAA;AAAC,OAAC,WAAY;AACZ,cAAM,4BAA4B,SAAU,UAAU,mBAAmB;AACvE,gBAAM,aAAa,CAAC,GAAG,iBAAiB;AAExC,iBAAO;AAAA,YACL;AAAA,YACA,aAAa,SAAU,IAAI;AACzB,oBAAM,YAAY,GAAG;AACrB,kBAAI,SAAS;AAEb,kBAAI,GAAG,SAAS;AACd,uBAAO,aAAa,CAAC,GAAG,OAAO,YAAY,SAAS;AAAA,cACtD,OAAO;AACL,uBAAO,aAAa,OAAO,WAAW,OAAO,CAAC,OAAO,OAAO,SAAS;AAAA,cACvE;AAAA,YACF;AAAA,YACA,cAAc,WAAY;AACxB,oBAAM,OAAO;AAAA,gBACX,oBAAoB,EAAE,yBAAyB,KAAK,WAAW;AAAA,cACjE;AACA,oBAAM,OAAO,qBAAqB,QAAQ;AAE1C,kBAAI,aAAa,SAAS,MAAM;AAAA,gBAC9B;AAAA,gBACA,cAAc;AAAA,cAChB,CAAC,EAAE,QAAQ;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,4BAA4B;AAAA,QACrC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACnCH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,eAAe,MAAM;AACzB,iBAAO;AAAA,YACL,aAAa;AAAA,YACb,UAAU;AAAA,YACV,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,SAAS,CAAC;AAAA,YACV,aAAa,CAAC;AAAA,YACd,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,eAAe;AAAA,YACf,cAAc,SAAU,UAAU,OAAO;AACvC,oBAAM,QAAQ;AACd,mBAAK,WAAW;AAAA,YAClB;AAAA,YACA,QAAQ,SAAU,QAAQ,IAAI,WAAW,IAAI;AAC3C,kBAAI,MAAM,yCAAyC,QACzC,eAAe;AAEzB,kBAAI,KAAK,aAAa;AACpB,uBAAO,eAAe,KAAK;AAAA,cAC7B;AAEA,kBAAI,KAAK,QAAQ;AACf,uBAAO,aAAa,KAAK;AAAA,cAC3B;AAEA,qBAAO;AAAA,YACT;AAAA,YACA,cAAc,SAAU,OAAO,UAAU;AACvC,kBAAI,SAAS;AAEb,mBAAK,cAAc;AAEnB,qBAAO,MAAM,KAAK,OAAO,OAAO,QAAQ,CAAC,EACtC,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,YAAU;AACd,uBAAO,UAAU,OAAO;AACxB,uBAAO,QAAQ,OAAO,WAAW;AAAA,cACnC,CAAC;AAAA,YACL;AAAA,YACA,kBAAkB,SAAU,UAAU,cAAc,MAAM;AACxD,kBAAI,SAAS;AACb,kBAAI,MAAM,uBAAuB,WAAW;AAE5C,kBAAI,aAAa;AAAE,sBAAM,MAAM,mBAAmB;AAAA,cAAY;AAAC;AAE/D,qBAAO,MAAM,GAAG,EACb,KAAK,cAAY,SAAS,KAAK,CAAC,EAChC,KAAK,YAAU;AACd,uBAAO,cAAc,OAAO;AAE5B,uBAAO,kBAAmB,OAAO,YAAY,SAAS;AAAA,cACxD,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,yBAAyB;AAAA,QAClC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACjEH;AAAA;AAAA,OAAC,WAAY;AACX,cAAM,oBAAoB,CAAC,MAAM,WAAW;AAC1C,iBAAO;AAAA,YACL;AAAA,YACA,MAAM;AAAA,YACN;AAAA,YACA,cAAc,WAAY;AACxB,qBAAO,KAAK,QAAQ,KAAK;AAAA,YAC3B;AAAA,YACA,YAAY,WAAY;AACtB,mBAAK,OAAO,CAAC,KAAK;AAAA,YACpB;AAAA,YACA,OAAO,SAAU,QAAQ;AACvB,mBAAK,OAAO;AACZ,mBAAK,SAAS;AACd,mBAAK,OAAO;AAEZ,qBAAO,QAAQ,CAAC,UAAU;AACxB,uBAAQ,MAAM,QAAQ;AAAA,cACxB,CAAC;AAAA,YACH;AAAA,YACA,YAAY,SAAU,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG;AAClD,qBAAO,MAAM,MAAM,KAAK,EACrB,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,SAAS;AACd,sBAAM,YACJ,oBAAoB,KAAK,cACzB,KAAK,QAAQ,8BAA8B,EAAE;AAAA,cACjD,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,oBAAoB;AAAA,QAC7B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACtCH,MAKOC;AALP;AAAA;AAAA;AAIA;AAFA,MAAAC,OAAM,SAAS,GAAGC,cAAa;AAG/B,MAAOF,gBAAQC;AAAA;AAAA;;;ACLf;AAAA;AAAA;AAAA;AACC,OAAC,WAAY;AACZ,cAAM,sBAAsB,CAAC,cAAc;AACzC,mBAASE,WAAU,MAAM;AACvB,mBAAO,IAAIC,cAAM,SAAS,eAAe,mBAAmB,GAAG;AAAA,cAC7D,MAAM;AAAA,cACN,MAAM;AAAA,gBACJ,QAAQ,CAAC,EAAE;AAAA,gBACX,UAAU,KAAK,WAAW,IAAI,CAAC,SAAS;AACtC,yBAAO;AAAA,oBACL,OAAO,KAAK;AAAA,oBACZ,MAAM,CAAC,KAAK,KAAK;AAAA,oBACjB,iBAAiB,KAAK;AAAA,oBACtB,cAAc;AAAA,oBACd,YAAY;AAAA,sBACV,WAAW,SAAU,OAAO;AAC1B,+BAAO,GAAG,KAAK;AAAA,sBACjB;AAAA,sBACA,QAAQ;AAAA,sBACR,OAAO;AAAA,sBACP,OAAO;AAAA,oBACT;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,cACA,SAAS,CAAC,eAAe;AAAA,cACzB,SAAS;AAAA,gBACP,SAAS;AAAA,kBACP,QAAQ;AAAA,oBACN,UAAU;AAAA,oBACV,QAAQ;AAAA,sBACN,eAAe;AAAA,sBACf,WAAW;AAAA,sBACX,YAAY;AAAA,oBACd;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,QAAQ;AAAA,kBACN,GAAG;AAAA,oBACD,OAAO;AAAA,sBACL,KAAK;AAAA,sBACL,KAAK;AAAA,sBACL,UAAU;AAAA,sBACV,UAAU,CAAC,UAAU;AACnB,+BAAO,QAAQ;AAAA,sBACjB;AAAA,oBACF;AAAA,oBACA,MAAM;AAAA,sBACJ,YAAY;AAAA,sBACZ,WAAW;AAAA,oBACb;AAAA,kBACF;AAAA,kBACA,GAAG;AAAA,oBACD,MAAM;AAAA,sBACJ,iBAAiB;AAAA,sBACjB,YAAY;AAAA,sBACZ,WAAW;AAAA,oBACb;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAC;AAAA,UACH;AACA,iBAAO;AAAA,YACL,OAAO;AAAA,YACP,kBAAkB;AAAA,YAClB,eAAe;AAAA,YACf,SAAS;AAAA,YACT,eAAe,SAAU,YAAY,MAAM,UAAU,MAAM;AACzD,kBAAI,cAAc;AAElB,mBAAK,UAAU;AAEf,kBAAI,aAAa,cAAc,MAAM,WAAW,YAAY,IAAI;AAC9D,8BAAc,eAAe,SAAS,aAAa,OAAO;AAAA,cAC5D;AAEA,oBAAM,qBAAqB,SAAS,sBAAsB,WAAW,EAAE,EACpE,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,WAAW;AAChB,oBAAI,KAAK,SAAS,KAAM,MAAK,MAAM,QAAQ;AAC3C,qBAAK,mBAAmB,OAAO;AAC/B,qBAAK,gBAAgB,OAAO;AAC5B,qBAAK,QAAQD,WAAU,MAAM;AAC7B,qBAAK,UAAU;AAAA,cACjB,CAAC,EACA,MAAM,MAAM;AACX,qBAAK,UAAU;AAAA,cACjB,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,sBAAsB;AAAA,QAC/B;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AClGH;AAAA,mDAAAE,WAAAC,SAAA;AAQA,OAAC,SAASC,SAAQ,SAAS;AACvB,eAAOF,cAAY,YAAY,OAAOC,YAAW,cAC3C,QAAQD,SAAO,IACf,OAAO,WAAW,cAAc,OAAO,MACvC,OAAO,CAAC,SAAS,GAAG,OAAO,KACzBE,UAASA,WAAU,MAAO,QAASA,QAAO,WAAW,CAAC,CAAE;AAAA,MACpE,GAAGF,WAAM,SAASA,WAAS;AACvB;AAEA,YAAI,SAAS,SAASG,QAAO,OAAO;AAChC,iBAAO,iBAAiB;AAAA,QAC5B;AAEA,YAAI,cAAc,SAASC,aAAY,cAAc;AACjD,cAAIC,WAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAIC,WAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAEnF,cAAIC,SAAQ,OAAO,OAAO,CAAC,GAAG,YAAY;AAG1C,cAAI,cAAc,CAAC;AACnB,cAAI,gBAAgB,CAAC;AAGrB,cAAIC,YAAW,SAASA,YAAW;AAC/B,mBAAO,OAAO,OAAO,CAAC,GAAGD,MAAK;AAAA,UAClC;AAGA,cAAI,qBAAqB,SAASE,sBAAqB;AAEnD,gBAAIC,SAAQ,CAAC,EAAE,OAAO,WAAW;AAGjC,wBAAY,SAAS;AAErB,mBAAOA;AAAA,UACX;AAGA,cAAI,uBAAuB,SAASC,wBAAuB;AAEvD,gBAAID,SAAQ,CAAC,EAAE,OAAO,aAAa;AAGnC,0BAAc,SAAS;AAGvB,YAAAA,OAAM,QAAQ,SAAS,MAAM;AACzB,kBAAI,OAAO,KAAK,MACZE,QAAO,KAAK;AAChB,cAAAC,UAAS,MAAMD,KAAI;AAAA,YACvB,CAAC;AAAA,UACL;AAGA,cAAIC,YAAW,SAASA,UAAS,MAAMD,OAAM,YAAY;AAErD,gBAAI,cAAc,CAAC,SAAS,QAAQ;AAChC,4BAAc,KAAK,EAAE,MAAY,MAAMA,MAAK,CAAC;AAC7C;AAAA,YACJ;AAGA,gBAAI,eAAe,IAAI,GAAG;AACtB,6BAAe,IAAI,EAAEA,KAAI;AAAA,YAC7B;AAGA,wBAAY,KAAK;AAAA,cACb;AAAA,cACA,MAAMA;AAAA,YACV,CAAC;AAAA,UACL;AAEA,cAAI,QAAQ,SAASE,OAAM,KAAK;AAC5B,gBAAI;AACJ,qBACQ,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GAC/E,OAAO,MACP,QACF;AACE,mBAAK,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,YACnC;AACA,mBAAO,aAAa,GAAG,KAChB,gBAAgB,cAAc,GAAG,EAAE,MAAM,eAAe,IAAI,IAC7D;AAAA,UACV;AAEA,cAAI,MAAM;AAAA,YACN,UAAUN;AAAA,YACV;AAAA,YACA;AAAA,YACA,UAAUK;AAAA,YACV;AAAA,UACJ;AAEA,cAAI,eAAe,CAAC;AACpB,UAAAR,SAAQ,QAAQ,SAASS,QAAO;AAC5B,2BAAe,OAAO,OAAO,CAAC,GAAGA,OAAMP,MAAK,GAAG,CAAC,GAAG,YAAY;AAAA,UACnE,CAAC;AAED,cAAI,iBAAiB,CAAC;AACtB,UAAAD,SAAQ,QAAQ,SAAS,QAAQ;AAC7B,6BAAiB,OAAO,OAAO,CAAC,GAAG,OAAOO,WAAU,OAAON,MAAK,GAAG,CAAC,GAAG,cAAc;AAAA,UACzF,CAAC;AAED,iBAAO;AAAA,QACX;AAEA,YAAI,iBAAiB,SAASQ,gBAAe,KAAK,UAAU,YAAY;AACpE,cAAI,OAAO,eAAe,YAAY;AAClC,gBAAI,QAAQ,IAAI;AAChB;AAAA,UACJ;AACA,iBAAO,eAAe,KAAK,UAAU,OAAO,OAAO,CAAC,GAAG,UAAU,CAAC;AAAA,QACtE;AAEA,YAAI,QAAQ,SAASC,OAAM,KAAK,IAAI;AAChC,mBAAS,OAAO,KAAK;AACjB,gBAAI,CAAC,IAAI,eAAe,GAAG,GAAG;AAC1B;AAAA,YACJ;AAEA,eAAG,KAAK,IAAI,GAAG,CAAC;AAAA,UACpB;AAAA,QACJ;AAEA,YAAI,eAAe,SAASC,cAAa,YAAY;AACjD,cAAI,MAAM,CAAC;AACX,gBAAM,YAAY,SAAS,UAAU;AACjC,2BAAe,KAAK,UAAU,WAAW,QAAQ,CAAC;AAAA,UACtD,CAAC;AACD,iBAAO;AAAA,QACX;AAEA,YAAI,OAAO,SAASC,MAAK,MAAMC,OAAM;AACjC,cAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAChF,cAAI,UAAU,MAAM;AAChB,mBAAO,KAAK,aAAaA,KAAI,KAAK,KAAK,aAAaA,KAAI;AAAA,UAC5D;AACA,eAAK,aAAaA,OAAM,KAAK;AAAA,QACjC;AAEA,YAAI,KAAK;AACT,YAAI,cAAc,CAAC,OAAO,MAAM;AAEhC,YAAI,eAAe,SAASC,cAAa,KAAK;AAC1C,iBAAO,YAAY,SAAS,GAAG;AAAA,QACnC;AAEA,YAAI,gBAAgB,SAASC,eAAc,KAAK,WAAW;AACvD,cAAI,aAAa,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACtF,cAAI,OAAO,cAAc,UAAU;AAC/B,yBAAa;AACb,wBAAY;AAAA,UAChB;AACA,cAAI,UAAU,aAAa,GAAG,IACxB,SAAS,gBAAgB,IAAI,GAAG,IAChC,SAAS,cAAc,GAAG;AAChC,cAAI,WAAW;AACX,gBAAI,aAAa,GAAG,GAAG;AACnB,mBAAK,SAAS,SAAS,SAAS;AAAA,YACpC,OAAO;AACH,sBAAQ,YAAY;AAAA,YACxB;AAAA,UACJ;AACA,gBAAM,YAAY,SAASF,OAAM,OAAO;AACpC,iBAAK,SAASA,OAAM,KAAK;AAAA,UAC7B,CAAC;AACD,iBAAO;AAAA,QACX;AAEA,YAAI,cAAc,SAASG,aAAY,QAAQ;AAC3C,iBAAO,SAAS,OAAOC,QAAO;AAC1B,gBAAI,OAAOA,WAAU,eAAe,OAAO,SAASA,MAAK,GAAG;AACxD,qBAAO,aAAa,OAAO,OAAO,SAASA,MAAK,CAAC;AAAA,YACrD,OAAO;AACH,qBAAO,YAAY,KAAK;AAAA,YAC5B;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,kBAAkB,SAASC,iBAAgB,QAAQ,YAAY;AAC/D,iBAAO,SAAS,MAAMD,QAAO;AACzB,gBAAI,OAAOA,WAAU,aAAa;AAC9B,yBAAW,OAAOA,QAAO,GAAG,IAAI;AAAA,YACpC,OAAO;AACH,yBAAW,KAAK,IAAI;AAAA,YACxB;AAEA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,kBAAkB,SAASE,iBAAgB,QAAQ,YAAY;AAC/D,iBAAO,SAAS,MAAM;AAElB,uBAAW,OAAO,WAAW,QAAQ,IAAI,GAAG,CAAC;AAG7C,gBAAI,KAAK,QAAQ,YAAY;AACzB,qBAAO,YAAY,KAAK,OAAO;AAAA,YACnC;AAEA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,cAAc,WAAW;AACzB,iBAAO,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAAA,QACvE,GAAG;AACH,YAAI,YAAY,SAASC,aAAY;AACjC,iBAAO;AAAA,QACX;AAEA,YAAI,cAAc,UAAU,IAAI,cAAc,KAAK,IAAI,CAAC;AACxD,YAAI,gBACA,cAAc,cACR,SAAS,IAAI;AACT,iBAAO,GAAG,SAAS;AAAA,QACvB,IACA,SAAS,IAAI;AACT,iBAAO,GAAG,WAAW;AAAA,QACzB;AAEV,YAAI,cAAc,SAASC,aAAY,aAAa,YAAY,QAAQ,OAAO;AAC3E,cAAI,OAAO,OAAO,CAAC,KAAK,YAAY;AACpC,cAAI,MAAM,OAAO,CAAC,KAAK,YAAY;AACnC,cAAI,QAAQ,OAAO,YAAY;AAC/B,cAAI,SAAS,MAAM,YAAY,UAAU,MAAM,CAAC,KAAK;AAErD,cAAI,OAAO;AAAA;AAAA,YAEP,SAAS,OAAO,OAAO,CAAC,GAAG,WAAW;AAAA;AAAA,YAGtC,OAAO;AAAA,cACH,MAAM,YAAY;AAAA,cAClB,KAAK,YAAY;AAAA,cACjB,OAAO,YAAY;AAAA,cACnB,QAAQ,YAAY;AAAA,YACxB;AAAA;AAAA;AAAA,YAIA,OAAO;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,UACJ;AAGA,qBACK,OAAO,SAAS,WAAW;AACxB,mBAAO,CAAC,UAAU,cAAc;AAAA,UACpC,CAAC,EACA,IAAI,SAAS,WAAW;AACrB,mBAAO,UAAU;AAAA,UACrB,CAAC,EACA,QAAQ,SAAS,eAAe;AAC7B,uBAAW,KAAK,OAAO,OAAO,OAAO,CAAC,GAAG,cAAc,KAAK,CAAC;AAC7D,uBAAW,KAAK,OAAO,OAAO,OAAO,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,UACjE,CAAC;AAGL,4BAAkB,KAAK,KAAK;AAG5B,eAAK,MAAM,UAAU,KAAK,QAAQ;AAClC,eAAK,MAAM,SAAS,KAAK,QAAQ;AAGjC,4BAAkB,KAAK,KAAK;AAE5B,iBAAO;AAAA,QACX;AAEA,YAAI,aAAa,SAASC,YAAW,QAAQ,OAAO;AAEhD,gBAAM,OAAO,OAAO;AACpB,gBAAM,SAAS,OAAO;AACtB,gBAAM,UAAU,OAAO;AACvB,gBAAM,QAAQ,OAAO;AAErB,cAAI,MAAM,SAAS,OAAO,QAAQ;AAC9B,mBAAO,SAAS,MAAM;AAAA,UAC1B;AAEA,cAAI,MAAM,QAAQ,OAAO,OAAO;AAC5B,mBAAO,QAAQ,MAAM;AAAA,UACzB;AAAA,QACJ;AAEA,YAAI,oBAAoB,SAASC,mBAAkB,MAAM;AACrD,eAAK,QAAQ,KAAK,QAAQ,KAAK;AAC/B,eAAK,SAAS,KAAK,SAAS,KAAK;AAAA,QACrC;AAEA,YAAIC,YAAW,SAASA,UAAS,OAAO;AACpC,iBAAO,OAAO,UAAU;AAAA,QAC5B;AAUA,YAAI,WAAW,SAASC,UAAS,UAAU,aAAa,UAAU;AAC9D,cAAI,cAAc,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACtF,iBAAO,KAAK,IAAI,WAAW,WAAW,IAAI,eAAe,KAAK,IAAI,QAAQ,IAAI;AAAA,QAClF;AAKA,YAAI;AAAA;AAAA,UAEA,SAASC,UACT;AACI,gBAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC5E,iBAAiB,KAAK,WACtB,YAAY,mBAAmB,SAAS,MAAM,gBAC9C,eAAe,KAAK,SACpB,UAAU,iBAAiB,SAAS,OAAO,cAC3C,YAAY,KAAK,MACjB,OAAO,cAAc,SAAS,KAAK;AACvC,gBAAI,SAAS;AACb,gBAAI,WAAW;AACf,gBAAI,WAAW;AACf,gBAAI,UAAU;AAGd,gBAAIC,eAAc,SAASA,aAAY,IAAI,gBAAgB;AAEvD,kBAAI,QAAS;AAGb,kBAAI,EAAEH,UAAS,MAAM,KAAKA,UAAS,QAAQ,IAAI;AAC3C,0BAAU;AACV,2BAAW;AACX;AAAA,cACJ;AAGA,kBAAII,KAAI,EAAE,WAAW,UAAU;AAG/B,0BAAYA,KAAI;AAGhB,0BAAY;AAGZ,0BAAY;AAGZ,kBAAI,SAAS,UAAU,QAAQ,QAAQ,KAAK,gBAAgB;AACxD,2BAAW;AACX,2BAAW;AACX,0BAAU;AAGV,oBAAI,SAAS,QAAQ;AACrB,oBAAI,WAAW,QAAQ;AAAA,cAC3B,OAAO;AAEH,oBAAI,SAAS,QAAQ;AAAA,cACzB;AAAA,YACJ;AAMA,gBAAI,YAAY,SAASC,WAAU,OAAO;AAEtC,kBAAIL,UAAS,KAAK,KAAK,CAACA,UAAS,QAAQ,GAAG;AACxC,2BAAW;AAAA,cACf;AAGA,kBAAI,WAAW,MAAM;AACjB,yBAAS;AACT,2BAAW;AAAA,cACf;AAGA,uBAAS;AAGT,kBAAI,aAAa,UAAU,OAAO,WAAW,aAAa;AAEtD,0BAAU;AACV,2BAAW;AAGX,oBAAI,SAAS,QAAQ;AACrB,oBAAI,WAAW,QAAQ;AAEvB;AAAA,cACJ;AAEA,wBAAU;AAAA,YACd;AAGA,gBAAI,MAAM,aAAa;AAAA,cACnB,aAAaG;AAAA,cACb,QAAQ;AAAA,gBACJ,KAAK;AAAA,gBACL,KAAK,SAASG,OAAM;AAChB,yBAAO;AAAA,gBACX;AAAA,cACJ;AAAA,cAEA,SAAS;AAAA,gBACL,KAAK,SAASA,OAAM;AAChB,yBAAO;AAAA,gBACX;AAAA,cACJ;AAAA,cAEA,UAAU,SAAS,SAAS,OAAO;AAAA,cAAC;AAAA,cACpC,YAAY,SAAS,WAAW,OAAO;AAAA,cAAC;AAAA,YAC5C,CAAC;AAED,mBAAO;AAAA,UACX;AAAA;AAEJ,YAAI,aAAa,SAASC,YAAWC,IAAG;AACpC,iBAAOA;AAAA,QACX;AACA,YAAI,gBAAgB,SAASC,eAAcD,IAAG;AAC1C,iBAAOA,KAAI,MAAM,IAAIA,KAAIA,KAAI,MAAM,IAAI,IAAIA,MAAKA;AAAA,QACpD;AAEA,YAAI;AAAA;AAAA,UAEA,SAASE,SACT;AACI,gBAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC5E,gBAAgB,KAAK,UACrB,WAAW,kBAAkB,SAAS,MAAM,eAC5C,cAAc,KAAK,QACnB,SAAS,gBAAgB,SAAS,gBAAgB,aAClD,aAAa,KAAK,OAClB,QAAQ,eAAe,SAAS,IAAI;AACxC,gBAAIC,SAAQ;AACZ,gBAAIH;AACJ,gBAAII;AACJ,gBAAI,UAAU;AACd,gBAAI,UAAU;AACd,gBAAI,SAAS;AAEb,gBAAIT,eAAc,SAASA,aAAY,IAAI,gBAAgB;AACvD,kBAAI,WAAW,WAAW,KAAM;AAEhC,kBAAIQ,WAAU,MAAM;AAChB,gBAAAA,SAAQ;AAAA,cACZ;AAEA,kBAAI,KAAKA,SAAQ,MAAO;AAExB,cAAAH,KAAI,KAAKG,SAAQ;AAEjB,kBAAIH,MAAK,YAAY,gBAAgB;AACjC,gBAAAA,KAAI;AACJ,gBAAAI,KAAI,UAAU,IAAI;AAClB,oBAAI,SAASA,KAAI,MAAM;AACvB,oBAAI,WAAWA,KAAI,MAAM;AACzB,0BAAU;AAAA,cACd,OAAO;AACH,gBAAAA,KAAIJ,KAAI;AACR,oBAAI,UAAUA,MAAK,IAAI,OAAO,UAAU,IAAII,KAAIA,EAAC,IAAI,KAAK,MAAM;AAAA,cACpE;AAAA,YACJ;AAGA,gBAAI,MAAM,aAAa;AAAA,cACnB,aAAaT;AAAA,cACb,QAAQ;AAAA,gBACJ,KAAK,SAASG,OAAM;AAChB,yBAAO,UAAU,IAAI;AAAA,gBACzB;AAAA,gBACA,KAAK,SAASO,KAAI,OAAO;AAErB,sBAAI,WAAW,MAAM;AACjB,6BAAS;AACT,wBAAI,SAAS,KAAK;AAClB,wBAAI,WAAW,KAAK;AACpB;AAAA,kBACJ;AAGA,sBAAI,QAAQ,QAAQ;AAChB,6BAAS;AACT,8BAAU;AAAA,kBACd,OAAO;AAEH,8BAAU;AACV,6BAAS;AAAA,kBACb;AAGA,4BAAU;AACV,kBAAAF,SAAQ;AAAA,gBACZ;AAAA,cACJ;AAAA,cAEA,SAAS;AAAA,gBACL,KAAK,SAASL,OAAM;AAChB,yBAAO;AAAA,gBACX;AAAA,cACJ;AAAA,cAEA,UAAU,SAAS,SAAS,OAAO;AAAA,cAAC;AAAA,cACpC,YAAY,SAAS,WAAW,OAAO;AAAA,cAAC;AAAA,YAC5C,CAAC;AAED,mBAAO;AAAA,UACX;AAAA;AAEJ,YAAIQ,YAAW;AAAA,UACX;AAAA,UACA;AAAA,QACJ;AAOA,YAAI,iBAAiB,SAASC,gBAAe,YAAY,UAAU,UAAU;AAGzE,cAAI,MACA,WAAW,QAAQ,KAAK,OAAO,WAAW,QAAQ,EAAE,QAAQ,MAAM,WAC5D,WAAW,QAAQ,EAAE,QAAQ,IAC7B,WAAW,QAAQ,KAAK;AAElC,cAAI,OAAO,OAAO,QAAQ,WAAW,MAAM,IAAI;AAC/C,cAAI,QAAQ,OAAO,QAAQ,WAAW,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;AAEhE,iBAAOD,UAAS,IAAI,IAAIA,UAAS,IAAI,EAAE,KAAK,IAAI;AAAA,QACpD;AAEA,YAAI,YAAY,SAASE,WAAU,MAAM,KAAK,OAAO;AACjD,cAAI,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACpF,gBAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AACrC,cAAI,QAAQ,SAASC,IAAG;AACpB,iBAAK,QAAQ,SAAS,KAAK;AACvB,kBAAI5B,QAAO;AACX,kBAAI,SAAS,SAAS6B,UAAS;AAC3B,uBAAO,MAAM,GAAG;AAAA,cACpB;AACA,kBAAI,SAAS,SAASC,QAAO,OAAO;AAChC,uBAAQ,MAAM,GAAG,IAAI;AAAA,cACzB;AAEA,kBAAI,OAAO,QAAQ,UAAU;AACzB,gBAAA9B,QAAO,IAAI;AACX,yBAAS,IAAI,UAAU;AACvB,yBAAS,IAAI,UAAU;AAAA,cAC3B;AAEA,kBAAI4B,GAAE5B,KAAI,KAAK,CAAC,WAAW;AACvB;AAAA,cACJ;AAEA,cAAA4B,GAAE5B,KAAI,IAAI;AAAA,gBACN,KAAK;AAAA,gBACL,KAAK;AAAA,cACT;AAAA,YACJ,CAAC;AAAA,UACL,CAAC;AAAA,QACL;AAMA,YAAI,aAAa,SAAS+B,YAAW,MAAM;AACvC,cAAI,cAAc,KAAK,aACnB,YAAY,KAAK,WACjB,kBAAkB,KAAK,iBACvB,kBAAkB,KAAK;AAE3B,cAAI,eAAe,OAAO,OAAO,CAAC,GAAG,SAAS;AAG9C,cAAIA,cAAa,CAAC;AAGlB,gBAAM,aAAa,SAAS,UAAU,WAAW;AAC7C,gBAAIN,YAAW,eAAe,SAAS;AACvC,gBAAI,CAACA,WAAU;AACX;AAAA,YACJ;AAGA,YAAAA,UAAS,WAAW,SAAS,OAAO;AAChC,wBAAU,QAAQ,IAAI;AAAA,YAC1B;AAGA,YAAAA,UAAS,SAAS,aAAa,QAAQ;AAGvC,gBAAI,OAAO;AAAA,cACP,KAAK;AAAA,cACL,QAAQ,SAAS,OAAO,OAAO;AAE3B,oBAAIA,UAAS,WAAW,OAAO;AAC3B;AAAA,gBACJ;AAEA,gBAAAA,UAAS,SAAS;AAAA,cACtB;AAAA,cACA,QAAQ,SAAS,SAAS;AACtB,uBAAO,UAAU,QAAQ;AAAA,cAC7B;AAAA,YACJ;AAGA,sBAAU,CAAC,IAAI,GAAG,CAAC,iBAAiB,eAAe,GAAG,WAAW,IAAI;AAGrE,YAAAM,YAAW,KAAKN,SAAQ;AAAA,UAC5B,CAAC;AAGD,iBAAO;AAAA,YACH,OAAO,SAASO,OAAM,IAAI;AACtB,kBAAI,iBAAiB,SAAS;AAC9B,kBAAI,UAAU;AACd,cAAAD,YAAW,QAAQ,SAAS,WAAW;AACnC,oBAAI,CAAC,UAAU,QAAS,WAAU;AAClC,0BAAU,YAAY,IAAI,cAAc;AAAA,cAC5C,CAAC;AACD,qBAAO;AAAA,YACX;AAAA,YACA,SAAS,SAASE,WAAU;AAAA,YAAC;AAAA,UACjC;AAAA,QACJ;AAEA,YAAI,WAAW,SAASC,UAAS,SAAS;AACtC,iBAAO,SAAS,MAAMC,KAAI;AACtB,oBAAQ,iBAAiB,MAAMA,GAAE;AAAA,UACrC;AAAA,QACJ;AAEA,YAAI,cAAc,SAASC,aAAY,SAAS;AAC5C,iBAAO,SAAS,MAAMD,KAAI;AACtB,oBAAQ,oBAAoB,MAAMA,GAAE;AAAA,UACxC;AAAA,QACJ;AAGA,YAAIE,aAAY,SAASA,WAAU,MAAM;AACrC,cAAI,cAAc,KAAK,aACnB,YAAY,KAAK,WACjB,kBAAkB,KAAK,iBACvB,kBAAkB,KAAK,iBACvB,YAAY,KAAK,WACjB,OAAO,KAAK;AAChB,cAAI,SAAS,CAAC;AAEd,cAAI,MAAM,SAAS,KAAK,OAAO;AAC/B,cAAI,SAAS,YAAY,KAAK,OAAO;AAErC,0BAAgB,KAAK,SAAS,MAAMF,KAAI;AACpC,mBAAO,KAAK;AAAA,cACR;AAAA,cACA,IAAIA;AAAA,YACR,CAAC;AAED,gBAAI,MAAMA,GAAE;AAAA,UAChB;AAEA,0BAAgB,MAAM,SAAS,MAAMA,KAAI;AACrC,mBAAO;AAAA,cACH,OAAO,UAAU,SAASG,QAAO;AAC7B,uBAAOA,OAAM,SAAS,QAAQA,OAAM,OAAOH;AAAA,cAC/C,CAAC;AAAA,cACD;AAAA,YACJ;AAEA,mBAAO,MAAMA,GAAE;AAAA,UACnB;AAEA,iBAAO;AAAA,YACH,OAAO,SAASH,SAAQ;AAEpB,qBAAO;AAAA,YACX;AAAA,YACA,SAAS,SAASC,WAAU;AACxB,qBAAO,QAAQ,SAASK,QAAO;AAC3B,uBAAOA,OAAM,MAAMA,OAAM,EAAE;AAAA,cAC/B,CAAC;AAAA,YACL;AAAA,UACJ;AAAA,QACJ;AAIA,YAAI,OAAO,SAASC,MAAK,MAAM;AAC3B,cAAI,cAAc,KAAK,aACnB,YAAY,KAAK,WACjB,kBAAkB,KAAK;AAC3B,oBAAU,aAAa,iBAAiB,SAAS;AAAA,QACrD;AAEA,YAAI,YAAY,SAASC,WAAU,OAAO;AACtC,iBAAO,SAAS;AAAA,QACpB;AAOA,YAAIC,YAAW;AAAA,UACX,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,QACb;AAEA,YAAI,SAAS,SAASC,QAAO,MAAM;AAC/B,cAAI,cAAc,KAAK,aACnB,YAAY,KAAK,WACjB,kBAAkB,KAAK,iBACvB,kBAAkB,KAAK,iBACvB,OAAO,KAAK;AAEhB,cAAI,eAAe,OAAO,OAAO,CAAC,GAAG,SAAS;AAG9C,cAAI,eAAe,CAAC;AAGpB,oBAAU,aAAa,CAAC,iBAAiB,eAAe,GAAG,SAAS;AAGpE,cAAI,YAAY,SAASC,aAAY;AACjC,mBAAO,CAAC,UAAU,YAAY,KAAK,GAAG,UAAU,YAAY,KAAK,CAAC;AAAA,UACtE;AAEA,cAAI,WAAW,SAASC,YAAW;AAC/B,mBAAO,CAAC,UAAU,QAAQ,KAAK,GAAG,UAAU,QAAQ,KAAK,CAAC;AAAA,UAC9D;AACA,cAAIC,WAAU,SAASA,WAAU;AAC7B,mBAAO,KAAK,OACN,YAAY,KAAK,MAAM,KAAK,YAAY,UAAU,GAAG,SAAS,CAAC,IAC/D;AAAA,UACV;AACA,0BAAgB,OAAO,EAAE,KAAKA,SAAQ;AACtC,0BAAgB,OAAO,EAAE,KAAKA,SAAQ;AAGtC,sBAAY,QAAQ,SAAS,KAAK;AAC9B,sBAAU,GAAG,IACT,OAAO,aAAa,GAAG,MAAM,cAAcJ,UAAS,GAAG,IAAI,aAAa,GAAG;AAAA,UACnF,CAAC;AAGD,iBAAO;AAAA,YACH,OAAO,SAAST,SAAQ;AAEpB,kBAAI,CAAC,iBAAiB,cAAc,SAAS,GAAG;AAC5C;AAAA,cACJ;AAGA,0BAAY,KAAK,SAAS,SAAS;AAGnC,qBAAO,OAAO,cAAc,OAAO,OAAO,CAAC,GAAG,SAAS,CAAC;AAGxD,qBAAO;AAAA,YACX;AAAA,YACA,SAAS,SAASC,WAAU;AAAA,YAAC;AAAA,UACjC;AAAA,QACJ;AAEA,YAAI,mBAAmB,SAASa,kBAAiB,cAAc,UAAU;AAErE,cAAI,OAAO,KAAK,YAAY,EAAE,WAAW,OAAO,KAAK,QAAQ,EAAE,QAAQ;AACnE,mBAAO;AAAA,UACX;AAGA,mBAAS,QAAQ,UAAU;AACvB,gBAAI,SAAS,IAAI,MAAM,aAAa,IAAI,GAAG;AACvC,qBAAO;AAAA,YACX;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,YAAI,cAAc,SAASC,aAAY,SAAS,OAAO;AACnD,cAAI,UAAU,MAAM,SAChB,cAAc,MAAM,aACpB,aAAa,MAAM,YACnB,aAAa,MAAM,YACnB,SAAS,MAAM,QACf,SAAS,MAAM,QACf,UAAU,MAAM,SAChB,UAAU,MAAM,SAChB,UAAU,MAAM,SAChB,UAAU,MAAM,SAChB,UAAU,MAAM,SAChB,QAAQ,MAAM,OACd,SAAS,MAAM;AAEnB,cAAI,aAAa;AACjB,cAAIL,UAAS;AAGb,cAAI,UAAU,OAAO,KAAK,UAAU,OAAO,GAAG;AAC1C,YAAAA,WAAU,wBAAwB,WAAW,KAAK,SAAS,WAAW,KAAK;AAAA,UAC/E;AAIA,cAAI,UAAU,WAAW,GAAG;AACxB,0BAAc,iBAAiB,cAAc;AAAA,UACjD;AAGA,cAAI,UAAU,UAAU,KAAK,UAAU,UAAU,GAAG;AAChD,0BACI,kBAAkB,cAAc,KAAK,UAAU,cAAc,KAAK;AAAA,UAC1E;AAGA,cAAI,UAAU,MAAM,KAAK,UAAU,MAAM,GAAG;AACxC,0BACI,cACC,UAAU,MAAM,IAAI,SAAS,KAC9B,QACC,UAAU,MAAM,IAAI,SAAS,KAC9B;AAAA,UACR;AAGA,cAAI,UAAU,OAAO,GAAG;AACpB,0BAAc,aAAa,UAAU;AAAA,UACzC;AAEA,cAAI,UAAU,OAAO,GAAG;AACpB,0BAAc,aAAa,UAAU;AAAA,UACzC;AAEA,cAAI,UAAU,OAAO,GAAG;AACpB,0BAAc,aAAa,UAAU;AAAA,UACzC;AAGA,cAAI,WAAW,QAAQ;AACnB,YAAAA,WAAU,eAAe,aAAa;AAAA,UAC1C;AAGA,cAAI,UAAU,OAAO,GAAG;AACpB,YAAAA,WAAU,aAAa,UAAU;AAGjC,gBAAI,YAAY,GAAG;AACf,cAAAA,WAAU;AAAA,YACd;AAGA,gBAAI,UAAU,GAAG;AACb,cAAAA,WAAU;AAAA,YACd;AAAA,UACJ;AAGA,cAAI,UAAU,MAAM,GAAG;AACnB,YAAAA,WAAU,YAAY,SAAS;AAAA,UACnC;AAGA,cAAI,UAAU,KAAK,GAAG;AAClB,YAAAA,WAAU,WAAW,QAAQ;AAAA,UACjC;AAGA,cAAI,sBAAsB,QAAQ,uBAAuB;AAGzD,cAAIA,QAAO,WAAW,oBAAoB,UAAUA,YAAW,qBAAqB;AAChF,oBAAQ,MAAM,UAAUA;AAGxB,oBAAQ,sBAAsBA;AAAA,UAClC;AAAA,QACJ;AAEA,YAAI,SAAS;AAAA,UACT;AAAA,UACA,WAAWL;AAAA,UACX;AAAA,UACA;AAAA,QACJ;AAEA,YAAI,aAAa,SAASW,cAAa;AACnC,cAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAChF,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAEjF,cAAI,CAAC,QAAQ,kBAAkB;AAC3B,iBAAK,aAAa,SAAS,MAAM,YAAY,EAAE,KAAK;AACpD,iBAAK,YAAY,SAAS,MAAM,WAAW,EAAE,KAAK;AAClD,iBAAK,cAAc,SAAS,MAAM,aAAa,EAAE,KAAK;AACtD,iBAAK,eAAe,SAAS,MAAM,cAAc,EAAE,KAAK;AACxD,iBAAK,aAAa,SAAS,MAAM,YAAY,EAAE,KAAK;AACpD,oBAAQ,mBAAmB;AAAA,UAC/B;AAEA,eAAK,OAAO,QAAQ,cAAc;AAClC,eAAK,MAAM,QAAQ,aAAa;AAChC,eAAK,QAAQ,QAAQ,eAAe;AACpC,eAAK,SAAS,QAAQ,gBAAgB;AAEtC,eAAK,QAAQ,KAAK,OAAO,KAAK;AAC9B,eAAK,SAAS,KAAK,MAAM,KAAK;AAE9B,eAAK,YAAY,QAAQ;AAEzB,eAAK,SAAS,QAAQ,iBAAiB;AAEvC,iBAAO;AAAA,QACX;AAEA,YAAI;AAAA;AAAA,UAEA,SAASC,cAAa;AAClB,gBAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC5E,WAAW,KAAK,KAChB,MAAM,aAAa,SAAS,QAAQ,UACpC,YAAY,KAAK,MACjBjD,QAAO,cAAc,SAAS,OAAO,WACrC,kBAAkB,KAAK,YACvB,aAAa,oBAAoB,SAAS,CAAC,IAAI,iBAC/C,YAAY,KAAK,MACjB,OAAO,cAAc,SAAS,WAAW;AAAA,YAAC,IAAI,WAC9C,aAAa,KAAK,OAClBgC,SAAQ,eAAe,SAAS,WAAW;AAAA,YAAC,IAAI,YAChD,cAAc,KAAK,QACnBkB,UAAS,gBAAgB,SAAS,WAAW;AAAA,YAAC,IAAI,aAClD,eAAe,KAAK,SACpBjB,WAAU,iBAAiB,SAAS,WAAW;AAAA,YAAC,IAAI,cACpD,wBAAwB,KAAK,4BAC7B,6BACI,0BAA0B,SACpB,SAAS,OAAO9C,UAAS;AACrB,qBAAOA;AAAA,YACX,IACA,uBACV,qBAAqB,KAAK,eAC1B,gBAAgB,uBAAuB,SAAS,WAAW;AAAA,YAAC,IAAI,oBAChE,oBAAoB,KAAK,cACzB,eAAe,sBAAsB,SAAS,WAAW;AAAA,YAAC,IAAI,mBAC9D,kBAAkB,KAAK,YACvB,aAAa,oBAAoB,SAAS,QAAQ,iBAClD,wBAAwB,KAAK,kBAC7B,mBAAmB,0BAA0B,SAAS,QAAQ,uBAC9D,cAAc,KAAK,QACnB,SAAS,gBAAgB,SAAS,CAAC,IAAI;AAC3C,mBAAO,SAEH,OACF;AACE,kBAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAEjF,kBAAI,UAAU,cAAc,KAAK,eAAea,OAAM,UAAU;AAGhE,kBAAI,QAAQ,OAAO,iBAAiB,SAAS,IAAI;AAGjD,kBAAI,OAAO,WAAW;AACtB,kBAAI,YAAY;AAGhB,kBAAI,YAAY;AAGhB,kBAAI,aAAa,CAAC;AAGlB,kBAAI,eAAe,CAAC;AAGpB,kBAAI,MAAM,CAAC;AAGX,kBAAIZ,SAAQ,CAAC;AAGb,kBAAI,UAAU;AAAA,gBACV4C;AAAA;AAAA,cACJ;AAEA,kBAAI,UAAU;AAAA,gBACV;AAAA;AAAA,cACJ;AAEA,kBAAI,aAAa;AAAA,gBACbC;AAAA;AAAA,cACJ;AAGA,kBAAIkB,cAAa,SAASA,cAAa;AACnC,uBAAO;AAAA,cACX;AACA,kBAAI,gBAAgB,SAASC,iBAAgB;AACzC,uBAAO,WAAW,OAAO;AAAA,cAC7B;AACA,kBAAI,eAAe,SAASC,gBAAe;AACvC,uBAAO;AAAA,cACX;AACA,kBAAI,kBAAkB,SAASC,iBAAgBC,QAAO;AAClD,uBAAO,SAAS,MAAMC,QAAO;AACzB,yBAAO,KAAKD,QAAOC,MAAK;AAAA,gBAC5B;AAAA,cACJ;AACA,kBAAIX,WAAU,SAASA,WAAU;AAC7B,oBAAI,WAAW;AACX,yBAAO;AAAA,gBACX;AACA,4BAAY,YAAY,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD,uBAAO;AAAA,cACX;AACA,kBAAIY,YAAW,SAASA,YAAW;AAC/B,uBAAO;AAAA,cACX;AAMA,kBAAI,QAAQ,SAASC,SAAQ;AACzB,4BAAY;AAGZ,2BAAW,QAAQ,SAAS,OAAO;AAC/B,yBAAO,MAAM,MAAM;AAAA,gBACvB,CAAC;AAED,oBAAI,eAAe,EAAE,oBAAoB,KAAK,SAAS,KAAK;AAC5D,oBAAI,cAAc;AACd,6BAAW,MAAM,SAAS,KAAK;AAAA,gBACnC;AAGA,oBAAI,MAAM,EAAE,MAAM,aAAa,OAAc,KAAW;AACxD,wBAAQ,QAAQ,SAAS,QAAQ;AAC7B,yBAAO,OAAO,GAAG;AAAA,gBACrB,CAAC;AAAA,cACL;AAMA,kBAAI,SAAS,SAASC,QAAO,IAAI,cAAc,gBAAgB;AAE3D,oBAAI,UAAU,aAAa,WAAW;AAGtC,wBAAQ,QAAQ,SAAS,QAAQ;AAC7B,sBAAI,gBAAgB,OAAO;AAAA,oBACvB;AAAA,oBACA,MAAM;AAAA,oBACN,SAAS;AAAA,oBACT,WAAW;AAAA,oBACX;AAAA,kBACJ,CAAC;AAED,sBAAI,kBAAkB,OAAO;AACzB,8BAAU;AAAA,kBACd;AAAA,gBACJ,CAAC;AAGD,6BAAa,QAAQ,SAAS,OAAO;AAEjC,sBAAI,eAAe,MAAM,MAAM,EAAE;AACjC,sBAAI,iBAAiB,OAAO;AACxB,8BAAU;AAAA,kBACd;AAAA,gBACJ,CAAC;AAGD,2BACK,OAAO,SAAS,OAAO;AACpB,yBAAO,CAAC,CAAC,MAAM,QAAQ;AAAA,gBAC3B,CAAC,EACA,QAAQ,SAAS,OAAO;AAErB,sBAAI,eAAe,MAAM;AAAA,oBACrB;AAAA,oBACA,2BAA2B,OAAO,YAAY;AAAA,oBAC9C;AAAA,kBACJ;AAEA,sBAAI,CAAC,cAAc;AACf,8BAAU;AAAA,kBACd;AAAA,gBACJ,CAAC;AAGL,2BAEK,QAAQ,SAAS,OAAOvD,QAAO;AAE5B,sBAAI,MAAM,QAAQ,YAAY;AAC1B;AAAA,kBACJ;AAGA,8BAAY,YAAY,MAAM,SAASA,MAAK;AAG5C,wBAAM,MAAM;AAGZ,wBAAM;AAAA,oBACF;AAAA,oBACA,2BAA2B,OAAO,YAAY;AAAA,oBAC9C;AAAA,kBACJ;AAGA,4BAAU;AAAA,gBACd,CAAC;AAGL,4BAAY;AAEZ,6BAAa;AAAA,kBACT;AAAA,kBACA,MAAM;AAAA,kBACN,SAAS;AAAA,kBACT,WAAW;AAAA,gBACf,CAAC;AAGD,uBAAO;AAAA,cACX;AAEA,kBAAI,WAAW,SAASwD,YAAW;AAC/B,6BAAa,QAAQ,SAAS,OAAO;AACjC,yBAAO,MAAM,QAAQ;AAAA,gBACzB,CAAC;AACD,2BAAW,QAAQ,SAAS,WAAW;AACnC,4BAAU,EAAE,MAAM,aAAa,MAAa,CAAC;AAAA,gBACjD,CAAC;AACD,2BAAW,QAAQ,SAAS,OAAO;AAC/B,yBAAO,MAAM,SAAS;AAAA,gBAC1B,CAAC;AAAA,cACL;AAGA,kBAAI,sBAAsB;AAAA,gBACtB,SAAS;AAAA,kBACL,KAAKT;AAAA,gBACT;AAAA,gBAEA,OAAO;AAAA,kBACH,KAAKM;AAAA,gBACT;AAAA,gBAEA,YAAY;AAAA,kBACR,KAAK;AAAA,gBACT;AAAA,cACJ;AAGA,kBAAI,wBAAwB,OAAO,OAAO,CAAC,GAAG,qBAAqB;AAAA,gBAC/D,MAAM;AAAA,kBACF,KAAKZ;AAAA,gBACT;AAAA;AAAA,gBAGA,KAAK;AAAA,kBACD,KAAK;AAAA,gBACT;AAAA;AAAA,gBAGA,IAAI,SAASgB,IAAG,QAAQ;AACpB,yBAAO7D,UAAS;AAAA,gBACpB;AAAA,gBACA,aAAa,YAAY,OAAO;AAAA,gBAChC,iBAAiB,gBAAgB,KAAK;AAAA,gBACtC,UAAU,SAAS,SAAS,MAAM;AAC9B,6BAAW,KAAK,IAAI;AACpB,yBAAO;AAAA,gBACX;AAAA,gBACA,YAAY,SAAS,WAAW,MAAM;AAClC,6BAAW,OAAO,WAAW,QAAQ,IAAI,GAAG,CAAC;AAAA,gBACjD;AAAA,gBACA,iBAAiB,gBAAgB,SAAS,UAAU;AAAA,gBACpD,iBAAiB,gBAAgB,SAAS,UAAU;AAAA,gBACpD,gBAAgB,SAAS,eAAe,QAAQ;AAC5C,yBAAO,QAAQ,KAAK,MAAM;AAAA,gBAC9B;AAAA,gBACA,gBAAgB,SAAS,eAAe,QAAQ;AAC5C,yBAAO,QAAQ,KAAK,MAAM;AAAA,gBAC9B;AAAA,gBACA,mBAAmB,SAAS,kBAAkB,WAAW;AACrD,yBAAO,WAAW,KAAK,SAAS;AAAA,gBACpC;AAAA,gBACA,kBAAkB,SAAS,mBAAmB;AAC1C,yBAAQ,QAAQ,mBAAmB;AAAA,gBACvC;AAAA;AAAA,gBAGA,UAAU,MAAM;AAAA,gBAChB,OAAO,MAAM;AAAA,cACjB,CAAC;AAGD,kBAAI,wBAAwB;AAAA,gBACxB,SAAS;AAAA,kBACL,KAAKmD;AAAA,gBACT;AAAA,gBAEA,YAAY;AAAA,kBACR,KAAK;AAAA,gBACT;AAAA,gBAEA,MAAM;AAAA,kBACF,KAAKN;AAAA,gBACT;AAAA,gBAEA,SAAS;AAAA,kBACL,KAAK,SAAS5B,OAAM;AAChB,2BAAO;AAAA,kBACX;AAAA,gBACJ;AAAA,gBAEA,eAAe,SAAS,gBAAgB;AACpC,yBAAO;AAAA,gBACX;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ;AAGA,kBAAI,qBAAqB,OAAO,OAAO,CAAC,GAAG,qBAAqB;AAAA,gBAC5D,MAAM;AAAA,kBACF,KAAK,SAASA,OAAM;AAChB,2BAAO;AAAA,kBACX;AAAA,gBACJ;AAAA,cACJ,CAAC;AAGD,qBAAO,KAAK,MAAM,EACb,KAAK,SAAS6C,IAAGC,IAAG;AAEjB,oBAAID,OAAM,UAAU;AAChB,yBAAO;AAAA,gBACX,WAAWC,OAAM,UAAU;AACvB,yBAAO;AAAA,gBACX;AACA,uBAAO;AAAA,cACX,CAAC,EACA,QAAQ,SAAS,KAAK;AACnB,oBAAI,WAAW,OAAO,GAAG,EAAE;AAAA,kBACvB,aAAa,OAAO,GAAG;AAAA,kBACvB,WAAW;AAAA,kBACX,WAAW3E;AAAA,kBACX,iBAAiB;AAAA,kBACjB,iBAAiB;AAAA,kBACjB,MAAM,aAAa,kBAAkB;AAAA,gBACzC,CAAC;AAED,oBAAI,UAAU;AACV,+BAAa,KAAK,QAAQ;AAAA,gBAC9B;AAAA,cACJ,CAAC;AAGL,kBAAI,cAAc,aAAa,qBAAqB;AAGpD,cAAA8D,QAAO;AAAA,gBACH,MAAM;AAAA,gBACN;AAAA,cACJ,CAAC;AAGD,kBAAI,aAAa,cAAc,OAAO;AACtC,yBAAW,QAAQ,SAAS,OAAO9C,QAAO;AACtC,4BAAY,YAAY,MAAM,SAAS,aAAaA,MAAK;AAAA,cAC7D,CAAC;AAGD,4BAAc,WAAW;AAGzB,qBAAO,aAAa,qBAAqB;AAAA,YAC7C;AAAA,UACJ;AAAA;AAEJ,YAAI,gBAAgB,SAAS4D,eAAc,MAAMhC,QAAO;AACpD,cAAI,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAE9E,cAAIhC,QAAO;AAGX,cAAI,OAAOA,KAAI,GAAG;AACd,mBAAOA,KAAI,EAAE,QAAQ,KAAK,IAAI;AAC9B,mBAAOA,KAAI,EAAE,QAAQ,KAAKgC,MAAK;AAC/B;AAAA,UACJ;AAEA,iBAAOhC,KAAI,IAAI;AAAA,YACX,SAAS,CAAC,IAAI;AAAA,YACd,SAAS,CAACgC,MAAK;AAAA,UACnB;AAEA,cAAI,UAAU,OAAOhC,KAAI;AAEzB,cAAI,WAAW,MAAO;AACtB,cAAI,OAAO;AACX,cAAIiE,MAAK;AACT,cAAI,cAAc;AAClB,cAAI,aAAa;AAEjB,cAAI,eAAe,SAASC,gBAAe;AACvC,gBAAI,SAAS,QAAQ;AACjB,4BAAc,SAASC,eAAc;AACjC,uBAAO,OAAO,WAAW,WAAW;AAChC,yBAAO,KAAK,YAAY,IAAI,CAAC;AAAA,gBACjC,GAAG,QAAQ;AAAA,cACf;AACA,2BAAa,SAASC,cAAa;AAC/B,uBAAO,OAAO,aAAaH,GAAE;AAAA,cACjC;AAAA,YACJ,OAAO;AACH,4BAAc,SAASE,eAAc;AACjC,uBAAO,OAAO,sBAAsB,IAAI;AAAA,cAC5C;AACA,2BAAa,SAASC,cAAa;AAC/B,uBAAO,OAAO,qBAAqBH,GAAE;AAAA,cACzC;AAAA,YACJ;AAAA,UACJ;AAEA,mBAAS,iBAAiB,oBAAoB,WAAW;AACrD,gBAAI,WAAY,YAAW;AAC3B,yBAAa;AACb,iBAAK,YAAY,IAAI,CAAC;AAAA,UAC1B,CAAC;AAED,cAAI,OAAO,SAASI,MAAK,IAAI;AAEzB,YAAAJ,MAAK,YAAYI,KAAI;AAGrB,gBAAI,CAAC,MAAM;AACP,qBAAO;AAAA,YACX;AAEA,gBAAI,QAAQ,KAAK;AAEjB,gBAAI,SAAS,UAAU;AAEnB;AAAA,YACJ;AAGA,mBAAO,KAAM,QAAQ;AAGrB,oBAAQ,QAAQ,QAAQ,SAASC,OAAM;AACnC,qBAAOA,MAAK;AAAA,YAChB,CAAC;AACD,oBAAQ,QAAQ,QAAQ,SAAStC,QAAO;AACpC,qBAAOA,OAAM,EAAE;AAAA,YACnB,CAAC;AAAA,UACL;AAEA,uBAAa;AACb,eAAK,YAAY,IAAI,CAAC;AAEtB,iBAAO;AAAA,YACH,OAAO,SAAS,QAAQ;AACpB,yBAAWiC,GAAE;AAAA,YACjB;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,cAAc,SAASM,aAAY,QAAQpC,KAAI;AAC/C,iBAAO,SAAS,MAAM;AAClB,gBAAIqC,QAAO,KAAK,MACZ,QAAQ,KAAK,OACb,eAAe,KAAK,SACpBrF,WAAU,iBAAiB,SAAS,CAAC,IAAI,cACzC,YAAY,KAAK,WACjB,iBAAiB,KAAK;AAC1B,YAAAA,SACK,OAAO,SAAS,QAAQ;AACrB,qBAAO,OAAO,OAAO,IAAI;AAAA,YAC7B,CAAC,EACA,QAAQ,SAAS,QAAQ;AACtB,qBAAO,OAAO,OAAO,IAAI,EAAE;AAAA,gBACvB,MAAMqF;AAAA,gBACN;AAAA,gBACA,QAAQ,OAAO;AAAA,gBACf;AAAA,gBACA;AAAA,cACJ,CAAC;AAAA,YACL,CAAC;AAEL,gBAAIrC,KAAI;AACJ,cAAAA,IAAG;AAAA,gBACC,MAAMqC;AAAA,gBACN;AAAA,gBACA,SAASrF;AAAA,gBACT;AAAA,gBACA;AAAA,cACJ,CAAC;AAAA,YACL;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,eAAe,SAASsF,cAAa,SAAS,eAAe;AAC7D,iBAAO,cAAc,WAAW,aAAa,SAAS,aAAa;AAAA,QACvE;AAEA,YAAI,cAAc,SAASC,aAAY,SAAS,eAAe;AAC3D,iBAAO,cAAc,WAAW,aAAa,SAAS,cAAc,WAAW;AAAA,QACnF;AAEA,YAAIC,WAAU,SAASA,SAAQ,OAAO;AAClC,iBAAO,MAAM,QAAQ,KAAK;AAAA,QAC9B;AAEA,YAAI,UAAU,SAASC,SAAQ,OAAO;AAClC,iBAAO,SAAS;AAAA,QACpB;AAEA,YAAI,OAAO,SAASC,MAAK,KAAK;AAC1B,iBAAO,IAAI,KAAK;AAAA,QACpB;AAEA,YAAI,WAAW,SAASC,UAAS,OAAO;AACpC,iBAAO,KAAK;AAAA,QAChB;AAEA,YAAIC,WAAU,SAASA,SAAQ,OAAO;AAClC,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACnF,cAAI,QAAQ,KAAK,GAAG;AAChB,mBAAO,CAAC;AAAA,UACZ;AACA,cAAIJ,SAAQ,KAAK,GAAG;AAChB,mBAAO;AAAA,UACX;AACA,iBAAO,SAAS,KAAK,EAChB,MAAM,QAAQ,EACd,IAAI,IAAI,EACR,OAAO,SAAS,KAAK;AAClB,mBAAO,IAAI;AAAA,UACf,CAAC;AAAA,QACT;AAEA,YAAIK,aAAY,SAASA,WAAU,OAAO;AACtC,iBAAO,OAAO,UAAU;AAAA,QAC5B;AAEA,YAAI,YAAY,SAASC,WAAU,OAAO;AACtC,iBAAOD,WAAU,KAAK,IAAI,QAAQ,UAAU;AAAA,QAChD;AAEA,YAAIE,YAAW,SAASA,UAAS,OAAO;AACpC,iBAAO,OAAO,UAAU;AAAA,QAC5B;AAEA,YAAI,WAAW,SAASC,UAAS,OAAO;AACpC,iBAAOxE,UAAS,KAAK,IACf,QACAuE,UAAS,KAAK,IACd,SAAS,KAAK,EAAE,QAAQ,YAAY,EAAE,IACtC;AAAA,QACV;AAEA,YAAI,QAAQ,SAASE,OAAM,OAAO;AAC9B,iBAAO,SAAS,SAAS,KAAK,GAAG,EAAE;AAAA,QACvC;AAEA,YAAIC,WAAU,SAASA,SAAQ,OAAO;AAClC,iBAAO,WAAW,SAAS,KAAK,CAAC;AAAA,QACrC;AAEA,YAAI,QAAQ,SAASC,OAAM,OAAO;AAC9B,iBAAO3E,UAAS,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM;AAAA,QACvE;AAEA,YAAI,UAAU,SAAS4E,SAAQ,OAAO;AAClC,cAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAE/E,cAAI,MAAM,KAAK,GAAG;AACd,mBAAO;AAAA,UACX;AAGA,cAAI,kBAAkB,SAAS,KAAK,EAAE,KAAK;AAG3C,cAAI,OAAO,KAAK,eAAe,GAAG;AAC9B,8BAAkB,gBAAgB,QAAQ,QAAQ,EAAE,EAAE,KAAK;AAC3D,mBAAO,MAAM,eAAe,IAAI,OAAO;AAAA,UAC3C;AAGA,cAAI,MAAM,KAAK,eAAe,GAAG;AAC7B,8BAAkB,gBAAgB,QAAQ,QAAQ,EAAE,EAAE,KAAK;AAC3D,mBAAO,MAAM,eAAe,IAAI;AAAA,UACpC;AAEA,iBAAO,MAAM,eAAe;AAAA,QAChC;AAEA,YAAIC,cAAa,SAASA,YAAW,OAAO;AACxC,iBAAO,OAAO,UAAU;AAAA,QAC5B;AAEA,YAAI,sBAAsB,SAASC,qBAAoB,QAAQ;AAC3D,cAAI,MAAM;AACV,cAAI,SAAS,OAAO,MAAM,GAAG;AAC7B,cAAI,QAAQ;AACZ,iBAAQ,QAAQ,OAAO,MAAM,GAAI;AAC7B,kBAAM,IAAI,KAAK;AACf,gBAAI,CAAC,KAAK;AACN,qBAAO;AAAA,YACX;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,UAAU;AAAA,UACV,SAAS;AAAA,UACT,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,SAAS;AAAA,UACT,MAAM;AAAA,QACV;AAEA,YAAI,kBAAkB,SAASC,iBAAgB,SAAS;AACpD,cAAI,MAAM,CAAC;AAEX,cAAI,MAAMR,UAAS,OAAO,IAAI,UAAU,QAAQ,OAAO;AACvD,cAAI,UAAU,QAAQ,UAAU,SAAS,QAAQ,SAAS,EAAE,IAAI;AAChE,cAAI,UAAU,QAAQ,UAAU,QAAQ,UAAU,CAAC;AAEnD,gBAAM,SAAS,SAAS,KAAK;AACzB,gBAAI,GAAG,IAAI,aAAa,KAAK,QAAQ,GAAG,GAAG,QAAQ,GAAG,GAAG,IAAI,SAAS,IAAI,OAAO;AAAA,UACrF,CAAC;AAGD,cAAI,UAAU,QAAQ,WAAWA,UAAS,OAAO,KAAK,QAAQ,MAAM,IAAI,UAAU;AAGlF,cAAI,SAAS,QAAQ,UAAU;AAG/B,iBAAO,IAAI;AAEX,iBAAO;AAAA,QACX;AAEA,YAAI,eAAe,SAASS,cAAa3F,OAAM,SAAS,QAAQ,SAAS,SAAS;AAE9E,cAAI,YAAY,MAAM;AAClB,mBAAO;AAAA,UACX;AAGA,cAAI,OAAO,YAAY,YAAY;AAC/B,mBAAO;AAAA,UACX;AAGA,cAAI,SAAS;AAAA,YACT,KAAK,WAAW,SAAS,WAAW,UAAU,MAAMA,QAAO,MAAM;AAAA,YACjE;AAAA,YACA;AAAA,YACA,iBAAiB;AAAA,YACjB;AAAA,YACA,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,SAAS;AAAA,UACb;AAGA,cAAIkF,UAAS,OAAO,GAAG;AACnB,mBAAO,MAAM;AACb,mBAAO;AAAA,UACX;AAGA,iBAAO,OAAO,QAAQ,OAAO;AAG7B,cAAIA,UAAS,OAAO,OAAO,GAAG;AAC1B,gBAAI,QAAQ,OAAO,QAAQ,MAAM,OAAO;AACxC,mBAAO,UAAU;AAAA,cACb,QAAQ,MAAM,CAAC;AAAA,cACf,OAAO,MAAM,CAAC;AAAA,YAClB;AAAA,UACJ;AAGA,iBAAO,kBAAkB,UAAU,OAAO,eAAe;AAEzD,iBAAO;AAAA,QACX;AAEA,YAAI,cAAc,SAASU,aAAY,OAAO;AAC1C,iBAAO,gBAAgB,KAAK;AAAA,QAChC;AAEA,YAAIC,UAAS,SAASA,QAAO,OAAO;AAChC,iBAAO,UAAU;AAAA,QACrB;AAEA,YAAIC,YAAW,SAASA,UAAS,OAAO;AACpC,iBAAO,OAAO,UAAU,YAAY,UAAU;AAAA,QAClD;AAEA,YAAI,QAAQ,SAASC,OAAM,OAAO;AAC9B,iBACID,UAAS,KAAK,KACdZ,UAAS,MAAM,GAAG,KAClBY,UAAS,MAAM,OAAO,KACtBA,UAAS,MAAM,MAAM,KACrBA,UAAS,MAAM,OAAO,KACtBA,UAAS,MAAM,KAAK;AAAA,QAE5B;AAEA,YAAI,UAAU,SAASE,SAAQ,OAAO;AAClC,cAAIrB,SAAQ,KAAK,GAAG;AAChB,mBAAO;AAAA,UACX;AAEA,cAAIkB,QAAO,KAAK,GAAG;AACf,mBAAO;AAAA,UACX;AAEA,cAAI,MAAM,KAAK,GAAG;AACd,mBAAO;AAAA,UACX;AAEA,cAAI,2BAA2B,KAAK,KAAK,GAAG;AACxC,mBAAO;AAAA,UACX;AAEA,cAAI,MAAM,KAAK,GAAG;AACd,mBAAO;AAAA,UACX;AAEA,iBAAO,OAAO;AAAA,QAClB;AAEA,YAAI,sBAAsB,SAASI,qBAAoB,KAAK;AACxD,iBAAO,IACF,QAAQ,UAAU,IAAI,EACtB,QAAQ,UAAU,IAAI,EACtB,QAAQ,UAAU,IAAI,EACtB,QAAQ,UAAU,IAAI,EACtB,QAAQ,UAAU,IAAI,EACtB,QAAQ,UAAU,IAAI;AAAA,QAC/B;AAEA,YAAI,kBAAkB;AAAA,UAClB,OAAOlB;AAAA,UACP,SAAS;AAAA,UACT,KAAK,SAAS,IAAI,OAAO;AACrB,mBAAO,QAAQ,KAAK,MAAM,UAAU,QAAQ,KAAK,IAAI,MAAM,KAAK;AAAA,UACpE;AAAA,UACA,QAAQM;AAAA,UACR,OAAOA;AAAA,UACP,OAAO;AAAA,UACP,QAAQ,SAAS,OAAO,OAAO;AAC3B,mBAAOG,YAAW,KAAK,IAAI,QAAQ,SAAS,KAAK;AAAA,UACrD;AAAA,UACA,UAAU,SAAS,UAAU,OAAO;AAChC,mBAAO,oBAAoB,KAAK;AAAA,UACpC;AAAA,UACA,WAAW;AAAA,UACX,QAAQ,SAAS,OAAO,OAAO;AAC3B,gBAAI;AACA,qBAAO,KAAK,MAAM,oBAAoB,KAAK,CAAC;AAAA,YAChD,SAASU,IAAG;AACR,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,YAAY,SAASC,WAAU,OAAO,MAAM;AAC5C,iBAAO,gBAAgB,IAAI,EAAE,KAAK;AAAA,QACtC;AAEA,YAAI,iBAAiB,SAASC,gBAAe,UAAU,cAAc,WAAW;AAE5E,cAAI,aAAa,cAAc;AAC3B,mBAAO;AAAA,UACX;AAGA,cAAI,eAAe,QAAQ,QAAQ;AAGnC,cAAI,iBAAiB,WAAW;AAE5B,gBAAI,iBAAiB,UAAU,UAAU,SAAS;AAGlD,2BAAe,QAAQ,cAAc;AAGrC,gBAAI,mBAAmB,MAAM;AACzB,oBAAM,oDACF,SACA,uBACA,YACA;AAAA,YACR,OAAO;AACH,yBAAW;AAAA,YACf;AAAA,UACJ;AAGA,iBAAO;AAAA,QACX;AAEA,YAAI,eAAe,SAASC,cAAa,cAAc,WAAW;AAC9D,cAAI,eAAe;AACnB,iBAAO;AAAA,YACH,YAAY;AAAA,YACZ,KAAK,SAASpF,OAAM;AAChB,qBAAO;AAAA,YACX;AAAA,YACA,KAAK,SAASO,KAAI,UAAU;AACxB,6BAAe,eAAe,UAAU,cAAc,SAAS;AAAA,YACnE;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,gBAAgB,SAAS8E,eAAc,SAAS;AAChD,cAAI,MAAM,CAAC;AACX,gBAAM,SAAS,SAAS,MAAM;AAC1B,gBAAI,mBAAmB,QAAQ,IAAI;AACnC,gBAAI,IAAI,IAAI,aAAa,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,CAAC;AAAA,UACrE,CAAC;AACD,iBAAO,aAAa,GAAG;AAAA,QAC3B;AAEA,YAAI,qBAAqB,SAASC,oBAAmB,SAAS;AAC1D,iBAAO;AAAA;AAAA,YAEH,OAAO,CAAC;AAAA;AAAA,YAGR,mBAAmB;AAAA;AAAA,YAGnB,mBAAmB;AAAA;AAAA,YAGnB,iBAAiB,CAAC;AAAA;AAAA,YAGlB,SAAS,cAAc,OAAO;AAAA,UAClC;AAAA,QACJ;AAEA,YAAI,aAAa,SAASC,YAAW,QAAQ;AACzC,cAAI,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACpF,iBAAO,OACF,MAAM,WAAW,EACjB,IAAI,SAAS,MAAM;AAChB,mBAAO,KAAK,YAAY;AAAA,UAC5B,CAAC,EACA,KAAK,SAAS;AAAA,QACvB;AAEA,YAAI,kBAAkB,SAASC,iBAAgB,OAAO,SAAS;AAC3D,cAAI,MAAM,CAAC;AACX,gBAAM,SAAS,SAAS,KAAK;AACzB,gBAAI,GAAG,IAAI;AAAA,cACP,KAAK,SAASxF,OAAM;AAChB,uBAAO,MAAM,SAAS,EAAE,QAAQ,GAAG;AAAA,cACvC;AAAA,cACA,KAAK,SAASO,KAAI,OAAO;AACrB,sBAAM,SAAS,SAAS,WAAW,KAAK,GAAG,EAAE,YAAY,GAAG;AAAA,kBACxD;AAAA,gBACJ,CAAC;AAAA,cACL;AAAA,YACJ;AAAA,UACJ,CAAC;AACD,iBAAO;AAAA,QACX;AAEA,YAAI,sBAAsB,SAASkF,qBAAoB,SAAS;AAC5D,iBAAO,SAAShH,WAAU,OAAON,QAAO;AACpC,gBAAI,MAAM,CAAC;AACX,kBAAM,SAAS,SAAS,KAAK;AACzB,kBAAIY,QAAO,WAAW,KAAK,GAAG,EAAE,YAAY;AAE5C,kBAAI,SAASA,KAAI,IAAI,SAAS,QAAQ;AAClC,oBAAI;AACA,kBAAAZ,OAAM,QAAQ,GAAG,IAAI,OAAO;AAAA,gBAChC,SAAS8G,IAAG;AAAA,gBAAC;AAGb,gBAAAxG,UAAS,aAAaM,OAAM,EAAE,OAAOZ,OAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,cAC7D;AAAA,YACJ,CAAC;AACD,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,sBAAsB,SAASuH,qBAAoB,SAAS;AAC5D,iBAAO,SAASvH,QAAO;AACnB,gBAAI,MAAM,CAAC;AACX,kBAAM,SAAS,SAAS,KAAK;AACzB,kBAAI,SAAS,WAAW,KAAK,GAAG,EAAE,YAAY,CAAC,IAAI,SAAS,QAAQ;AAChE,uBAAOA,OAAM,QAAQ,GAAG;AAAA,cAC5B;AAAA,YACJ,CAAC;AACD,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,oBAAoB;AAAA,UACpB,KAAK;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,MAAM;AAAA,QACV;AAEA,YAAI,cAAc,SAASwH,eAAc;AACrC,iBAAO,KAAK,OAAO,EACd,SAAS,EAAE,EACX,UAAU,GAAG,EAAE;AAAA,QACxB;AAEA,iBAASC,UAAQ,KAAK;AAClB,cAAI,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,UAAU;AACrE,YAAAA,YAAU,SAASC,MAAK;AACpB,qBAAO,OAAOA;AAAA,YAClB;AAAA,UACJ,OAAO;AACH,YAAAD,YAAU,SAASC,MAAK;AACpB,qBAAOA,QACH,OAAO,WAAW,cAClBA,KAAI,gBAAgB,UACpBA,SAAQ,OAAO,YACb,WACA,OAAOA;AAAA,YACjB;AAAA,UACJ;AAEA,iBAAOD,UAAQ,GAAG;AAAA,QACtB;AAEA,YAAI;AAEJ,iBAAS,KAAK,MAAM,OAAO,KAAK,UAAU;AACtC,cAAI,CAAC,oBAAoB;AACrB,iCACK,OAAO,WAAW,cAAc,OAAO,KAAK,KAAK,OAAO,KAAK,EAAE,eAAe,KAC/E;AAAA,UACR;AAEA,cAAI,eAAe,QAAQ,KAAK;AAChC,cAAI,iBAAiB,UAAU,SAAS;AAExC,cAAI,CAAC,SAAS,mBAAmB,GAAG;AAChC,oBAAQ;AAAA,cACJ,UAAU;AAAA,YACd;AAAA,UACJ;AAEA,cAAI,SAAS,cAAc;AACvB,qBAAS,YAAY,cAAc;AAC/B,kBAAI,MAAM,QAAQ,MAAM,QAAQ;AAC5B,sBAAM,QAAQ,IAAI,aAAa,QAAQ;AAAA,cAC3C;AAAA,YACJ;AAAA,UACJ,WAAW,CAAC,OAAO;AACf,oBAAQ,gBAAgB,CAAC;AAAA,UAC7B;AAEA,cAAI,mBAAmB,GAAG;AACtB,kBAAM,WAAW;AAAA,UACrB,WAAW,iBAAiB,GAAG;AAC3B,gBAAI,aAAa,IAAI,MAAM,cAAc;AAEzC,qBAASE,KAAI,GAAGA,KAAI,gBAAgBA,MAAK;AACrC,yBAAWA,EAAC,IAAI,UAAUA,KAAI,CAAC;AAAA,YACnC;AAEA,kBAAM,WAAW;AAAA,UACrB;AAEA,iBAAO;AAAA,YACH,UAAU;AAAA,YACV;AAAA,YACA,KAAK,QAAQ,SAAY,OAAO,KAAK;AAAA,YACrC,KAAK;AAAA,YACL;AAAA,YACA,QAAQ;AAAA,UACZ;AAAA,QACJ;AAEA,iBAAS,eAAe,UAAU;AAC9B,cAAI;AAEJ,cAAI,OAAO,WAAW,aAAa;AAC/B,gBAAI,OAAO,eAAe;AACtB,uBAAS,SAAS,OAAO,aAAa;AACtC,kBAAI,UAAU,KAAM,QAAO,OAAO,KAAK,QAAQ;AAAA,YACnD;AAEA,gBAAI,OAAO,UAAU;AACjB,uBAAS,SAAS,OAAO,QAAQ;AACjC,kBAAI,UAAU,KAAM,QAAO,OAAO,KAAK,QAAQ;AAAA,YACnD;AAAA,UACJ;AAEA,gBAAM,IAAI,UAAU,8BAA8B;AAAA,QACtD;AAEA,iBAAS,YAAY,OAAO;AACxB,eAAK,UAAU;AAAA,QACnB;AAEA,iBAAS,gBAAgB,KAAK;AAC1B,cAAI,OAAO;AAEX,mBAAS,KAAK,KAAK,KAAK;AACpB,mBAAO,IAAI,QAAQ,SAASC,UAAS,QAAQ;AACzC,kBAAI,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA,SAASA;AAAA,gBACT;AAAA,gBACA,MAAM;AAAA,cACV;AAEA,kBAAI,MAAM;AACN,uBAAO,KAAK,OAAO;AAAA,cACvB,OAAO;AACH,wBAAQ,OAAO;AACf,uBAAO,KAAK,GAAG;AAAA,cACnB;AAAA,YACJ,CAAC;AAAA,UACL;AAEA,mBAAS,OAAO,KAAK,KAAK;AACtB,gBAAI;AACA,kBAAI,SAAS,IAAI,GAAG,EAAE,GAAG;AACzB,kBAAI,QAAQ,OAAO;AACnB,kBAAI,eAAe,iBAAiB;AACpC,sBAAQ,QAAQ,eAAe,MAAM,UAAU,KAAK,EAAE;AAAA,gBAClD,SAASC,MAAK;AACV,sBAAI,cAAc;AACd,2BAAO,QAAQA,IAAG;AAClB;AAAA,kBACJ;AAEA,yBAAO,OAAO,OAAO,WAAW,UAAUA,IAAG;AAAA,gBACjD;AAAA,gBACA,SAAS,KAAK;AACV,yBAAO,SAAS,GAAG;AAAA,gBACvB;AAAA,cACJ;AAAA,YACJ,SAAS,KAAK;AACV,qBAAO,SAAS,GAAG;AAAA,YACvB;AAAA,UACJ;AAEA,mBAAS,OAAO,MAAM,OAAO;AACzB,oBAAQ,MAAM;AAAA,cACV,KAAK;AACD,sBAAM,QAAQ;AAAA,kBACV;AAAA,kBACA,MAAM;AAAA,gBACV,CAAC;AACD;AAAA,cAEJ,KAAK;AACD,sBAAM,OAAO,KAAK;AAClB;AAAA,cAEJ;AACI,sBAAM,QAAQ;AAAA,kBACV;AAAA,kBACA,MAAM;AAAA,gBACV,CAAC;AACD;AAAA,YACR;AAEA,oBAAQ,MAAM;AAEd,gBAAI,OAAO;AACP,qBAAO,MAAM,KAAK,MAAM,GAAG;AAAA,YAC/B,OAAO;AACH,qBAAO;AAAA,YACX;AAAA,UACJ;AAEA,eAAK,UAAU;AAEf,cAAI,OAAO,IAAI,WAAW,YAAY;AAClC,iBAAK,SAAS;AAAA,UAClB;AAAA,QACJ;AAEA,YAAI,OAAO,WAAW,cAAc,OAAO,eAAe;AACtD,0BAAgB,UAAU,OAAO,aAAa,IAAI,WAAW;AACzD,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,wBAAgB,UAAU,OAAO,SAAS,KAAK;AAC3C,iBAAO,KAAK,QAAQ,QAAQ,GAAG;AAAA,QACnC;AAEA,wBAAgB,UAAU,QAAQ,SAAS,KAAK;AAC5C,iBAAO,KAAK,QAAQ,SAAS,GAAG;AAAA,QACpC;AAEA,wBAAgB,UAAU,SAAS,SAAS,KAAK;AAC7C,iBAAO,KAAK,QAAQ,UAAU,GAAG;AAAA,QACrC;AAEA,iBAAS,oBAAoB9E,KAAI;AAC7B,iBAAO,WAAW;AACd,mBAAO,IAAI,gBAAgBA,IAAG,MAAM,MAAM,SAAS,CAAC;AAAA,UACxD;AAAA,QACJ;AAEA,iBAAS,qBAAqB,OAAO;AACjC,iBAAO,IAAI,YAAY,KAAK;AAAA,QAChC;AAEA,iBAAS,wBAAwB,OAAO,WAAW;AAC/C,cAAI,OAAO,CAAC,GACR,UAAU;AAEd,mBAAS,KAAK,KAAK,OAAO;AACtB,sBAAU;AACV,oBAAQ,IAAI,QAAQ,SAAS6E,UAAS;AAClC,cAAAA,SAAQ,MAAM,GAAG,EAAE,KAAK,CAAC;AAAA,YAC7B,CAAC;AACD,mBAAO;AAAA,cACH,MAAM;AAAA,cACN,OAAO,UAAU,KAAK;AAAA,YAC1B;AAAA,UACJ;AAEA,cAAI,OAAO,WAAW,cAAc,OAAO,UAAU;AACjD,iBAAK,OAAO,QAAQ,IAAI,WAAW;AAC/B,qBAAO;AAAA,YACX;AAAA,UACJ;AAEA,eAAK,OAAO,SAAS,OAAO;AACxB,gBAAI,SAAS;AACT,wBAAU;AACV,qBAAO;AAAA,YACX;AAEA,mBAAO,KAAK,QAAQ,KAAK;AAAA,UAC7B;AAEA,cAAI,OAAO,MAAM,UAAU,YAAY;AACnC,iBAAK,QAAQ,SAAS,OAAO;AACzB,kBAAI,SAAS;AACT,0BAAU;AACV,sBAAM;AAAA,cACV;AAEA,qBAAO,KAAK,SAAS,KAAK;AAAA,YAC9B;AAAA,UACJ;AAEA,cAAI,OAAO,MAAM,WAAW,YAAY;AACpC,iBAAK,SAAS,SAAS,OAAO;AAC1B,qBAAO,KAAK,UAAU,KAAK;AAAA,YAC/B;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,mBAAmB,KAAKA,UAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACvE,cAAI;AACA,gBAAIE,QAAO,IAAI,GAAG,EAAE,GAAG;AACvB,gBAAI,QAAQA,MAAK;AAAA,UACrB,SAASC,QAAO;AACZ,mBAAOA,MAAK;AACZ;AAAA,UACJ;AAEA,cAAID,MAAK,MAAM;AACX,YAAAF,SAAQ,KAAK;AAAA,UACjB,OAAO;AACH,oBAAQ,QAAQ,KAAK,EAAE,KAAK,OAAO,MAAM;AAAA,UAC7C;AAAA,QACJ;AAEA,iBAAS,kBAAkB7E,KAAI;AAC3B,iBAAO,WAAW;AACd,gBAAIiF,QAAO,MACP,OAAO;AACX,mBAAO,IAAI,QAAQ,SAASJ,UAAS,QAAQ;AACzC,kBAAI,MAAM7E,IAAG,MAAMiF,OAAM,IAAI;AAE7B,uBAAS,MAAM,OAAO;AAClB,mCAAmB,KAAKJ,UAAS,QAAQ,OAAO,QAAQ,QAAQ,KAAK;AAAA,cACzE;AAEA,uBAAS,OAAO,KAAK;AACjB,mCAAmB,KAAKA,UAAS,QAAQ,OAAO,QAAQ,SAAS,GAAG;AAAA,cACxE;AAEA,oBAAM,MAAS;AAAA,YACnB,CAAC;AAAA,UACL;AAAA,QACJ;AAEA,iBAASK,iBAAgB,UAAU,aAAa;AAC5C,cAAI,EAAE,oBAAoB,cAAc;AACpC,kBAAM,IAAI,UAAU,mCAAmC;AAAA,UAC3D;AAAA,QACJ;AAEA,iBAASC,mBAAkB,QAAQ,OAAO;AACtC,mBAASP,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACnC,gBAAI,aAAa,MAAMA,EAAC;AACxB,uBAAW,aAAa,WAAW,cAAc;AACjD,uBAAW,eAAe;AAC1B,gBAAI,WAAW,WAAY,YAAW,WAAW;AACjD,mBAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,UAC5D;AAAA,QACJ;AAEA,iBAASQ,cAAa,aAAa,YAAY,aAAa;AACxD,cAAI,WAAY,CAAAD,mBAAkB,YAAY,WAAW,UAAU;AACnE,cAAI,YAAa,CAAAA,mBAAkB,aAAa,WAAW;AAC3D,iBAAO;AAAA,QACX;AAEA,iBAAS,4BAA4B,KAAK,OAAO;AAC7C,mBAAS,OAAO,OAAO;AACnB,gBAAI,OAAO,MAAM,GAAG;AACpB,iBAAK,eAAe,KAAK,aAAa;AACtC,gBAAI,WAAW,KAAM,MAAK,WAAW;AACrC,mBAAO,eAAe,KAAK,KAAK,IAAI;AAAA,UACxC;AAEA,cAAI,OAAO,uBAAuB;AAC9B,gBAAI,gBAAgB,OAAO,sBAAsB,KAAK;AAEtD,qBAASP,KAAI,GAAGA,KAAI,cAAc,QAAQA,MAAK;AAC3C,kBAAI,MAAM,cAAcA,EAAC;AACzB,kBAAI,OAAO,MAAM,GAAG;AACpB,mBAAK,eAAe,KAAK,aAAa;AACtC,kBAAI,WAAW,KAAM,MAAK,WAAW;AACrC,qBAAO,eAAe,KAAK,KAAK,IAAI;AAAA,YACxC;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,UAAU,KAAKtE,WAAU;AAC9B,cAAI,OAAO,OAAO,oBAAoBA,SAAQ;AAE9C,mBAASsE,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAClC,gBAAI,MAAM,KAAKA,EAAC;AAChB,gBAAI,QAAQ,OAAO,yBAAyBtE,WAAU,GAAG;AAEzD,gBAAI,SAAS,MAAM,gBAAgB,IAAI,GAAG,MAAM,QAAW;AACvD,qBAAO,eAAe,KAAK,KAAK,KAAK;AAAA,YACzC;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS+E,kBAAgB,KAAK,KAAK,OAAO;AACtC,cAAI,OAAO,KAAK;AACZ,mBAAO,eAAe,KAAK,KAAK;AAAA,cAC5B;AAAA,cACA,YAAY;AAAA,cACZ,cAAc;AAAA,cACd,UAAU;AAAA,YACd,CAAC;AAAA,UACL,OAAO;AACH,gBAAI,GAAG,IAAI;AAAA,UACf;AAEA,iBAAO;AAAA,QACX;AAEA,iBAASC,YAAW;AAChB,UAAAA,YACI,OAAO,UACP,SAAS,QAAQ;AACb,qBAASV,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACvC,kBAAI,SAAS,UAAUA,EAAC;AAExB,uBAAS,OAAO,QAAQ;AACpB,oBAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACnD,yBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,gBAC5B;AAAA,cACJ;AAAA,YACJ;AAEA,mBAAO;AAAA,UACX;AAEJ,iBAAOU,UAAS,MAAM,MAAM,SAAS;AAAA,QACzC;AAEA,iBAASC,gBAAc,QAAQ;AAC3B,mBAASX,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACvC,gBAAI,SAAS,UAAUA,EAAC,KAAK,OAAO,UAAUA,EAAC,IAAI,CAAC;AACpD,gBAAIY,YAAU,OAAO,KAAK,MAAM;AAEhC,gBAAI,OAAO,OAAO,0BAA0B,YAAY;AACpD,cAAAA,YAAUA,UAAQ;AAAA,gBACd,OAAO,sBAAsB,MAAM,EAAE,OAAO,SAAS,KAAK;AACtD,yBAAO,OAAO,yBAAyB,QAAQ,GAAG,EAAE;AAAA,gBACxD,CAAC;AAAA,cACL;AAAA,YACJ;AAEA,YAAAA,UAAQ,QAAQ,SAAS,KAAK;AAC1B,cAAAH,kBAAgB,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,YAC5C,CAAC;AAAA,UACL;AAEA,iBAAO;AAAA,QACX;AAEA,iBAASG,UAAQ,QAAQ,gBAAgB;AACrC,cAAI,OAAO,OAAO,KAAK,MAAM;AAE7B,cAAI,OAAO,uBAAuB;AAC9B,gBAAI,UAAU,OAAO,sBAAsB,MAAM;AACjD,gBAAI;AACA,wBAAU,QAAQ,OAAO,SAAS,KAAK;AACnC,uBAAO,OAAO,yBAAyB,QAAQ,GAAG,EAAE;AAAA,cACxD,CAAC;AACL,iBAAK,KAAK,MAAM,MAAM,OAAO;AAAA,UACjC;AAEA,iBAAO;AAAA,QACX;AAEA,iBAASC,gBAAe,QAAQ;AAC5B,mBAASb,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACvC,gBAAI,SAAS,UAAUA,EAAC,KAAK,OAAO,UAAUA,EAAC,IAAI,CAAC;AAEpD,gBAAIA,KAAI,GAAG;AACP,cAAAY,UAAQ,QAAQ,IAAI,EAAE,QAAQ,SAAS,KAAK;AACxC,gBAAAH,kBAAgB,QAAQ,KAAK,OAAO,GAAG,CAAC;AAAA,cAC5C,CAAC;AAAA,YACL,WAAW,OAAO,2BAA2B;AACzC,qBAAO,iBAAiB,QAAQ,OAAO,0BAA0B,MAAM,CAAC;AAAA,YAC5E,OAAO;AACH,cAAAG,UAAQ,MAAM,EAAE,QAAQ,SAAS,KAAK;AAClC,uBAAO;AAAA,kBACH;AAAA,kBACA;AAAA,kBACA,OAAO,yBAAyB,QAAQ,GAAG;AAAA,gBAC/C;AAAA,cACJ,CAAC;AAAA,YACL;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAASE,WAAU,UAAU,YAAY;AACrC,cAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AACzD,kBAAM,IAAI,UAAU,oDAAoD;AAAA,UAC5E;AAEA,mBAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW;AAAA,YACnE,aAAa;AAAA,cACT,OAAO;AAAA,cACP,UAAU;AAAA,cACV,cAAc;AAAA,YAClB;AAAA,UACJ,CAAC;AACD,cAAI,WAAY,CAAAC,iBAAgB,UAAU,UAAU;AAAA,QACxD;AAEA,iBAAS,eAAe,UAAU,YAAY;AAC1C,mBAAS,YAAY,OAAO,OAAO,WAAW,SAAS;AACvD,mBAAS,UAAU,cAAc;AACjC,mBAAS,YAAY;AAAA,QACzB;AAEA,iBAASC,iBAAgBnG,IAAG;AACxB,UAAAmG,mBAAkB,OAAO,iBACnB,OAAO,iBACP,SAASA,iBAAgBnG,IAAG;AACxB,mBAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,UACjD;AACN,iBAAOmG,iBAAgBnG,EAAC;AAAA,QAC5B;AAEA,iBAASkG,iBAAgBlG,IAAGL,IAAG;AAC3B,UAAAuG,mBACI,OAAO,kBACP,SAASA,iBAAgBlG,IAAGL,IAAG;AAC3B,YAAAK,GAAE,YAAYL;AACd,mBAAOK;AAAA,UACX;AAEJ,iBAAOkG,iBAAgBlG,IAAGL,EAAC;AAAA,QAC/B;AAEA,iBAAS,2BAA2B;AAChC,cAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,UAAW,QAAO;AACjE,cAAI,QAAQ,UAAU,KAAM,QAAO;AACnC,cAAI,OAAO,UAAU,WAAY,QAAO;AAExC,cAAI;AACA,iBAAK,UAAU,SAAS,KAAK,QAAQ,UAAU,MAAM,CAAC,GAAG,WAAW;AAAA,YAAC,CAAC,CAAC;AACvE,mBAAO;AAAA,UACX,SAAS2E,IAAG;AACR,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,WAAW,QAAQ,MAAM,OAAO;AACrC,cAAI,yBAAyB,GAAG;AAC5B,yBAAa,QAAQ;AAAA,UACzB,OAAO;AACH,yBAAa,SAAS8B,YAAWC,SAAQC,OAAMC,QAAO;AAClD,kBAAIrE,KAAI,CAAC,IAAI;AACb,cAAAA,GAAE,KAAK,MAAMA,IAAGoE,KAAI;AACpB,kBAAI,cAAc,SAAS,KAAK,MAAMD,SAAQnE,EAAC;AAC/C,kBAAI,WAAW,IAAI,YAAY;AAC/B,kBAAIqE,OAAO,CAAAL,iBAAgB,UAAUK,OAAM,SAAS;AACpD,qBAAO;AAAA,YACX;AAAA,UACJ;AAEA,iBAAO,WAAW,MAAM,MAAM,SAAS;AAAA,QAC3C;AAEA,iBAAS,kBAAkBhG,KAAI;AAC3B,iBAAO,SAAS,SAAS,KAAKA,GAAE,EAAE,QAAQ,eAAe,MAAM;AAAA,QACnE;AAEA,iBAAS,iBAAiB,OAAO;AAC7B,cAAI,SAAS,OAAO,QAAQ,aAAa,oBAAI,IAAI,IAAI;AAErD,6BAAmB,SAASiG,kBAAiBD,QAAO;AAChD,gBAAIA,WAAU,QAAQ,CAAC,kBAAkBA,MAAK,EAAG,QAAOA;AAExD,gBAAI,OAAOA,WAAU,YAAY;AAC7B,oBAAM,IAAI,UAAU,oDAAoD;AAAA,YAC5E;AAEA,gBAAI,OAAO,WAAW,aAAa;AAC/B,kBAAI,OAAO,IAAIA,MAAK,EAAG,QAAO,OAAO,IAAIA,MAAK;AAE9C,qBAAO,IAAIA,QAAO,OAAO;AAAA,YAC7B;AAEA,qBAAS,UAAU;AACf,qBAAO,WAAWA,QAAO,WAAWJ,iBAAgB,IAAI,EAAE,WAAW;AAAA,YACzE;AAEA,oBAAQ,YAAY,OAAO,OAAOI,OAAM,WAAW;AAAA,cAC/C,aAAa;AAAA,gBACT,OAAO;AAAA,gBACP,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,cAAc;AAAA,cAClB;AAAA,YACJ,CAAC;AACD,mBAAOL,iBAAgB,SAASK,MAAK;AAAA,UACzC;AAEA,iBAAO,iBAAiB,KAAK;AAAA,QACjC;AAEA,iBAAS,YAAY,MAAM,OAAO;AAC9B,cAAI,SAAS,QAAQ,OAAO,WAAW,eAAe,MAAM,OAAO,WAAW,GAAG;AAC7E,mBAAO,CAAC,CAAC,MAAM,OAAO,WAAW,EAAE,IAAI;AAAA,UAC3C,OAAO;AACH,mBAAO,gBAAgB;AAAA,UAC3B;AAAA,QACJ;AAEA,iBAAS,uBAAuB,KAAK;AACjC,iBAAO,OAAO,IAAI,aACZ,MACA;AAAA,YACI,SAAS;AAAA,UACb;AAAA,QACV;AAEA,iBAAS,wBAAwB,KAAK;AAClC,cAAI,OAAO,IAAI,YAAY;AACvB,mBAAO;AAAA,UACX,OAAO;AACH,gBAAI,SAAS,CAAC;AAEd,gBAAI,OAAO,MAAM;AACb,uBAAS,OAAO,KAAK;AACjB,oBAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAChD,sBAAI,OACA,OAAO,kBAAkB,OAAO,2BAC1B,OAAO,yBAAyB,KAAK,GAAG,IACxC,CAAC;AAEX,sBAAI,KAAK,OAAO,KAAK,KAAK;AACtB,2BAAO,eAAe,QAAQ,KAAK,IAAI;AAAA,kBAC3C,OAAO;AACH,2BAAO,GAAG,IAAI,IAAI,GAAG;AAAA,kBACzB;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAEA,mBAAO,UAAU;AACjB,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,eAAe,WAAW,WAAW;AAC1C,cAAI,cAAc,WAAW;AACzB,kBAAM,IAAI,UAAU,sCAAsC;AAAA,UAC9D;AAAA,QACJ;AAEA,iBAAS,0BAA0B,KAAK;AACpC,cAAI,OAAO,KAAM,OAAM,IAAI,UAAU,8BAA8B;AAAA,QACvE;AAEA,iBAASE,+BAA8B,QAAQ,UAAU;AACrD,cAAI,UAAU,KAAM,QAAO,CAAC;AAC5B,cAAI,SAAS,CAAC;AACd,cAAI,aAAa,OAAO,KAAK,MAAM;AACnC,cAAI,KAAKtB;AAET,eAAKA,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACpC,kBAAM,WAAWA,EAAC;AAClB,gBAAI,SAAS,QAAQ,GAAG,KAAK,EAAG;AAChC,mBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,UAC5B;AAEA,iBAAO;AAAA,QACX;AAEA,iBAASuB,0BAAyB,QAAQ,UAAU;AAChD,cAAI,UAAU,KAAM,QAAO,CAAC;AAE5B,cAAI,SAASD,+BAA8B,QAAQ,QAAQ;AAE3D,cAAI,KAAKtB;AAET,cAAI,OAAO,uBAAuB;AAC9B,gBAAI,mBAAmB,OAAO,sBAAsB,MAAM;AAE1D,iBAAKA,KAAI,GAAGA,KAAI,iBAAiB,QAAQA,MAAK;AAC1C,oBAAM,iBAAiBA,EAAC;AACxB,kBAAI,SAAS,QAAQ,GAAG,KAAK,EAAG;AAChC,kBAAI,CAAC,OAAO,UAAU,qBAAqB,KAAK,QAAQ,GAAG,EAAG;AAC9D,qBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,YAC5B;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAASwB,wBAAuBnB,OAAM;AAClC,cAAIA,UAAS,QAAQ;AACjB,kBAAM,IAAI,eAAe,2DAA2D;AAAA,UACxF;AAEA,iBAAOA;AAAA,QACX;AAEA,iBAASoB,4BAA2BpB,OAAM,MAAM;AAC5C,cAAI,SAAS,OAAO,SAAS,YAAY,OAAO,SAAS,aAAa;AAClE,mBAAO;AAAA,UACX;AAEA,iBAAOmB,wBAAuBnB,KAAI;AAAA,QACtC;AAEA,iBAAS,eAAe,QAAQ,UAAU;AACtC,iBAAO,CAAC,OAAO,UAAU,eAAe,KAAK,QAAQ,QAAQ,GAAG;AAC5D,qBAASW,iBAAgB,MAAM;AAC/B,gBAAI,WAAW,KAAM;AAAA,UACzB;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,KAAK,QAAQ,UAAU,UAAU;AACtC,cAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;AAC/C,mBAAO,QAAQ;AAAA,UACnB,OAAO;AACH,mBAAO,SAASU,MAAKC,SAAQC,WAAUC,WAAU;AAC7C,kBAAI,OAAO,eAAeF,SAAQC,SAAQ;AAE1C,kBAAI,CAAC,KAAM;AACX,kBAAI,OAAO,OAAO,yBAAyB,MAAMA,SAAQ;AAEzD,kBAAI,KAAK,KAAK;AACV,uBAAO,KAAK,IAAI,KAAKC,SAAQ;AAAA,cACjC;AAEA,qBAAO,KAAK;AAAA,YAChB;AAAA,UACJ;AAEA,iBAAO,KAAK,QAAQ,UAAU,YAAY,MAAM;AAAA,QACpD;AAEA,iBAASpH,KAAI,QAAQ,UAAU,OAAO,UAAU;AAC5C,cAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;AAC/C,YAAAA,OAAM,QAAQ;AAAA,UAClB,OAAO;AACH,YAAAA,OAAM,SAASA,KAAIkH,SAAQC,WAAUE,QAAOD,WAAU;AAClD,kBAAI,OAAO,eAAeF,SAAQC,SAAQ;AAE1C,kBAAI;AAEJ,kBAAI,MAAM;AACN,uBAAO,OAAO,yBAAyB,MAAMA,SAAQ;AAErD,oBAAI,KAAK,KAAK;AACV,uBAAK,IAAI,KAAKC,WAAUC,MAAK;AAC7B,yBAAO;AAAA,gBACX,WAAW,CAAC,KAAK,UAAU;AACvB,yBAAO;AAAA,gBACX;AAAA,cACJ;AAEA,qBAAO,OAAO,yBAAyBD,WAAUD,SAAQ;AAEzD,kBAAI,MAAM;AACN,oBAAI,CAAC,KAAK,UAAU;AAChB,yBAAO;AAAA,gBACX;AAEA,qBAAK,QAAQE;AACb,uBAAO,eAAeD,WAAUD,WAAU,IAAI;AAAA,cAClD,OAAO;AACH,gBAAAnB,kBAAgBoB,WAAUD,WAAUE,MAAK;AAAA,cAC7C;AAEA,qBAAO;AAAA,YACX;AAAA,UACJ;AAEA,iBAAOrH,KAAI,QAAQ,UAAU,OAAO,QAAQ;AAAA,QAChD;AAEA,iBAAS,KAAK,QAAQ,UAAU,OAAO,UAAU,UAAU;AACvD,cAAIsH,KAAItH,KAAI,QAAQ,UAAU,OAAO,YAAY,MAAM;AAEvD,cAAI,CAACsH,MAAK,UAAU;AAChB,kBAAM,IAAI,MAAM,wBAAwB;AAAA,UAC5C;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,uBAAuB,SAAS,KAAK;AAC1C,cAAI,CAAC,KAAK;AACN,kBAAM,QAAQ,MAAM,CAAC;AAAA,UACzB;AAEA,iBAAO,OAAO;AAAA,YACV,OAAO,iBAAiB,SAAS;AAAA,cAC7B,KAAK;AAAA,gBACD,OAAO,OAAO,OAAO,GAAG;AAAA,cAC5B;AAAA,YACJ,CAAC;AAAA,UACL;AAAA,QACJ;AAEA,iBAAS,4BAA4B,SAAS,KAAK;AAC/C,cAAI,CAAC,KAAK;AACN,kBAAM,QAAQ,MAAM,CAAC;AAAA,UACzB;AAEA,kBAAQ,MAAM;AACd,iBAAO;AAAA,QACX;AAEA,iBAAS,aAAa,KAAK9I,OAAM;AAC7B,cAAI,QAAQ,oBAAoB;AAC5B,kBAAM,IAAI,eAAeA,QAAO,sCAAsC;AAAA,UAC1E,OAAO;AACH,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,eAAeA,OAAM;AAC1B,gBAAM,IAAI,MAAM,MAAMA,QAAO,gBAAgB;AAAA,QACjD;AAEA,iBAAS,mBAAmBA,OAAM;AAC9B,gBAAM,IAAI,MAAM,YAAYA,QAAO,mDAAmD;AAAA,QAC1F;AAEA,YAAI,qBAAqB,CAAC;AAE1B,iBAAS+I,gBAAe,KAAKhC,IAAG;AAC5B,iBAAOiC,iBAAgB,GAAG,KAAKC,uBAAsB,KAAKlC,EAAC,KAAKmC,kBAAiB;AAAA,QACrF;AAEA,iBAAS,oBAAoB,KAAKnC,IAAG;AACjC,iBAAOiC,iBAAgB,GAAG,KAAK,2BAA2B,KAAKjC,EAAC,KAAKmC,kBAAiB;AAAA,QAC1F;AAEA,iBAAS,SAAS,KAAK;AACnB,iBAAOF,iBAAgB,GAAG,KAAK,iBAAiB,GAAG,KAAKE,kBAAiB;AAAA,QAC7E;AAEA,iBAAS,mBAAmB,KAAK;AAC7B,iBAAO,mBAAmB,GAAG,KAAK,iBAAiB,GAAG,KAAK,mBAAmB;AAAA,QAClF;AAEA,iBAAS,mBAAmB,KAAK;AAC7B,cAAI,MAAM,QAAQ,GAAG,GAAG;AACpB,qBAASnC,KAAI,GAAG,OAAO,IAAI,MAAM,IAAI,MAAM,GAAGA,KAAI,IAAI,QAAQA,KAAK,MAAKA,EAAC,IAAI,IAAIA,EAAC;AAElF,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAASiC,iBAAgB,KAAK;AAC1B,cAAI,MAAM,QAAQ,GAAG,EAAG,QAAO;AAAA,QACnC;AAEA,iBAAS,iBAAiB,MAAM;AAC5B,cACI,OAAO,YAAY,OAAO,IAAI,KAC9B,OAAO,UAAU,SAAS,KAAK,IAAI,MAAM;AAEzC,mBAAO,MAAM,KAAK,IAAI;AAAA,QAC9B;AAEA,iBAASC,uBAAsB,KAAKlC,IAAG;AACnC,cAAI,OAAO,CAAC;AACZ,cAAI,KAAK;AACT,cAAI,KAAK;AACT,cAAIoC,MAAK;AAET,cAAI;AACA,qBAAS,KAAK,IAAI,OAAO,QAAQ,EAAE,GAAG,IAAI,EAAE,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,MAAM;AAChF,mBAAK,KAAK,GAAG,KAAK;AAElB,kBAAIpC,MAAK,KAAK,WAAWA,GAAG;AAAA,YAChC;AAAA,UACJ,SAAS,KAAK;AACV,iBAAK;AACL,YAAAoC,MAAK;AAAA,UACT,UAAE;AACE,gBAAI;AACA,kBAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,KAAM,IAAG,QAAQ,EAAE;AAAA,YAClD,UAAE;AACE,kBAAI,GAAI,OAAMA;AAAA,YAClB;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,2BAA2B,KAAKpC,IAAG;AACxC,cAAI,OAAO,CAAC;AAEZ,mBAAS,YAAY,IAAI,OAAO,QAAQ,EAAE,GAAG,OAAO,EAAE,QAAQ,UAAU,KAAK,GAAG,QAAQ;AACpF,iBAAK,KAAK,MAAM,KAAK;AAErB,gBAAIA,MAAK,KAAK,WAAWA,GAAG;AAAA,UAChC;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,qBAAqB;AAC1B,gBAAM,IAAI,UAAU,iDAAiD;AAAA,QACzE;AAEA,iBAASmC,oBAAmB;AACxB,gBAAM,IAAI,UAAU,sDAAsD;AAAA,QAC9E;AAEA,iBAAS,wBAAwB/G,KAAI;AACjC,iBAAO,WAAW;AACd,gBAAIiH,MAAKjH,IAAG,MAAM,MAAM,SAAS;AACjC,YAAAiH,IAAG,KAAK;AACR,mBAAOA;AAAA,UACX;AAAA,QACJ;AAEA,iBAASC,eAAa,OAAO,MAAM;AAC/B,cAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,cAAI,OAAO,MAAM,OAAO,WAAW;AAEnC,cAAI,SAAS,QAAW;AACpB,gBAAIC,OAAM,KAAK,KAAK,OAAO,QAAQ,SAAS;AAC5C,gBAAI,OAAOA,SAAQ,SAAU,QAAOA;AACpC,kBAAM,IAAI,UAAU,8CAA8C;AAAA,UACtE;AAEA,kBAAQ,SAAS,WAAW,SAAS,QAAQ,KAAK;AAAA,QACtD;AAEA,iBAASC,iBAAe,KAAK;AACzB,cAAI,MAAMF,eAAa,KAAK,QAAQ;AAEpC,iBAAO,OAAO,QAAQ,WAAW,MAAM,OAAO,GAAG;AAAA,QACrD;AAEA,iBAAS,0BAA0B,YAAY,SAAS;AACpD,gBAAM,IAAI;AAAA,YACN;AAAA,UAIJ;AAAA,QACJ;AAEA,iBAAS,2BAA2B,QAAQ,UAAU,YAAY,SAAS;AACvE,cAAI,CAAC,WAAY;AACjB,iBAAO,eAAe,QAAQ,UAAU;AAAA,YACpC,YAAY,WAAW;AAAA,YACvB,cAAc,WAAW;AAAA,YACzB,UAAU,WAAW;AAAA,YACrB,OAAO,WAAW,cAAc,WAAW,YAAY,KAAK,OAAO,IAAI;AAAA,UAC3E,CAAC;AAAA,QACL;AAEA,iBAAS,0BAA0B,QAAQ,UAAU,YAAY,YAAY,SAAS;AAClF,cAAI,OAAO,CAAC;AACZ,iBAAO,KAAK,UAAU,EAAE,QAAQ,SAAS,KAAK;AAC1C,iBAAK,GAAG,IAAI,WAAW,GAAG;AAAA,UAC9B,CAAC;AACD,eAAK,aAAa,CAAC,CAAC,KAAK;AACzB,eAAK,eAAe,CAAC,CAAC,KAAK;AAE3B,cAAI,WAAW,QAAQ,KAAK,aAAa;AACrC,iBAAK,WAAW;AAAA,UACpB;AAEA,iBAAO,WACF,MAAM,EACN,QAAQ,EACR,OAAO,SAASG,OAAM,WAAW;AAC9B,mBAAO,UAAU,QAAQ,UAAUA,KAAI,KAAKA;AAAA,UAChD,GAAG,IAAI;AAEX,cAAI,WAAW,KAAK,gBAAgB,QAAQ;AACxC,iBAAK,QAAQ,KAAK,cAAc,KAAK,YAAY,KAAK,OAAO,IAAI;AACjE,iBAAK,cAAc;AAAA,UACvB;AAEA,cAAI,KAAK,gBAAgB,QAAQ;AAC7B,mBAAO,eAAe,QAAQ,UAAU,IAAI;AAC5C,mBAAO;AAAA,UACX;AAEA,iBAAO;AAAA,QACX;AAEA,YAAI,KAAK;AAET,iBAAS,2BAA2BxJ,OAAM;AACtC,iBAAO,eAAe,OAAO,MAAMA;AAAA,QACvC;AAEA,iBAAS,4BAA4B,UAAU,YAAY;AACvD,cAAI,CAAC,OAAO,UAAU,eAAe,KAAK,UAAU,UAAU,GAAG;AAC7D,kBAAM,IAAI,UAAU,gDAAgD;AAAA,UACxE;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,sBAAsB,UAAU,YAAY;AACjD,cAAI,aAAa,WAAW,IAAI,QAAQ;AAExC,cAAI,CAAC,YAAY;AACb,kBAAM,IAAI,UAAU,gDAAgD;AAAA,UACxE;AAEA,cAAI,WAAW,KAAK;AAChB,mBAAO,WAAW,IAAI,KAAK,QAAQ;AAAA,UACvC;AAEA,iBAAO,WAAW;AAAA,QACtB;AAEA,iBAAS,sBAAsB,UAAU,YAAY,OAAO;AACxD,cAAI,aAAa,WAAW,IAAI,QAAQ;AAExC,cAAI,CAAC,YAAY;AACb,kBAAM,IAAI,UAAU,gDAAgD;AAAA,UACxE;AAEA,cAAI,WAAW,KAAK;AAChB,uBAAW,IAAI,KAAK,UAAU,KAAK;AAAA,UACvC,OAAO;AACH,gBAAI,CAAC,WAAW,UAAU;AACtB,oBAAM,IAAI,UAAU,0CAA0C;AAAA,YAClE;AAEA,uBAAW,QAAQ;AAAA,UACvB;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,iCAAiC,UAAU,YAAY;AAC5D,cAAI,CAAC,WAAW,IAAI,QAAQ,GAAG;AAC3B,kBAAM,IAAI,UAAU,gDAAgD;AAAA,UACxE;AAEA,cAAI,aAAa,WAAW,IAAI,QAAQ;AAExC,cAAI,WAAW,KAAK;AAChB,gBAAI,EAAE,gBAAgB,aAAa;AAC/B,yBAAW,aAAa;AAAA,gBACpB,IAAI,MAAMyJ,IAAG;AACT,6BAAW,IAAI,KAAK,UAAUA,EAAC;AAAA,gBACnC;AAAA,cACJ;AAAA,YACJ;AAEA,mBAAO,WAAW;AAAA,UACtB,OAAO;AACH,gBAAI,CAAC,WAAW,UAAU;AACtB,oBAAM,IAAI,UAAU,0CAA0C;AAAA,YAClE;AAEA,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,iBAAS,gCAAgC,UAAU,kBAAkB,YAAY;AAC7E,cAAI,aAAa,kBAAkB;AAC/B,kBAAM,IAAI,UAAU,2CAA2C;AAAA,UACnE;AAEA,iBAAO,WAAW;AAAA,QACtB;AAEA,iBAAS,gCAAgC,UAAU,kBAAkB,YAAY,OAAO;AACpF,cAAI,aAAa,kBAAkB;AAC/B,kBAAM,IAAI,UAAU,2CAA2C;AAAA,UACnE;AAEA,cAAI,CAAC,WAAW,UAAU;AACtB,kBAAM,IAAI,UAAU,0CAA0C;AAAA,UAClE;AAEA,qBAAW,QAAQ;AACnB,iBAAO;AAAA,QACX;AAEA,iBAAS,6BAA6B,UAAU,kBAAkB,QAAQ;AACtE,cAAI,aAAa,kBAAkB;AAC/B,kBAAM,IAAI,UAAU,2CAA2C;AAAA,UACnE;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,+BAA+B;AACpC,gBAAM,IAAI,UAAU,iDAAiD;AAAA,QACzE;AAEA,iBAAS,UAAU,YAAY,SAAS,YAAY,QAAQ;AACxD,cAAI,MAAM,kBAAkB;AAE5B,cAAI,QAAQ;AACR,qBAAS1C,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACpC,oBAAM,OAAOA,EAAC,EAAE,GAAG;AAAA,YACvB;AAAA,UACJ;AAEA,cAAI2C,KAAI,QAAQ,SAAS,WAAWC,IAAG;AACnC,gBAAI,2BAA2BA,IAAG,UAAU,QAAQ;AAAA,UACxD,GAAG,UAAU;AACb,cAAI,YAAY,IAAI;AAAA,YAChB,uBAAuBD,GAAE,EAAE,IAAI,wBAAwB,CAAC;AAAA,YACxD;AAAA,UACJ;AACA,cAAI,wBAAwBA,GAAE,GAAG,UAAU,QAAQ;AACnD,iBAAO,IAAI,kBAAkBA,GAAE,GAAG,UAAU,SAAS;AAAA,QACzD;AAEA,iBAAS,oBAAoB;AACzB,8BAAoB,WAAW;AAC3B,mBAAO;AAAA,UACX;AAEA,cAAI,MAAM;AAAA,YACN,yBAAyB,CAAC,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC;AAAA,YAC/C,4BAA4B,SAASC,IAAGC,WAAU;AAC9C,eAAC,UAAU,OAAO,EAAE,QAAQ,SAAS,MAAM;AACvC,gBAAAA,UAAS,QAAQ,SAAS,SAAS;AAC/B,sBAAI,QAAQ,SAAS,QAAQ,QAAQ,cAAc,OAAO;AACtD,yBAAK,mBAAmBD,IAAG,OAAO;AAAA,kBACtC;AAAA,gBACJ,GAAG,IAAI;AAAA,cACX,GAAG,IAAI;AAAA,YACX;AAAA,YACA,yBAAyB,SAASE,IAAGD,WAAU;AAC3C,kBAAI,QAAQC,GAAE;AACd,eAAC,UAAU,OAAO,EAAE,QAAQ,SAAS,MAAM;AACvC,gBAAAD,UAAS,QAAQ,SAAS,SAAS;AAC/B,sBAAI,YAAY,QAAQ;AAExB,sBACI,QAAQ,SAAS,SAChB,cAAc,YAAY,cAAc,cAC3C;AACE,wBAAI,WAAW,cAAc,WAAWC,KAAI;AAC5C,yBAAK,mBAAmB,UAAU,OAAO;AAAA,kBAC7C;AAAA,gBACJ,GAAG,IAAI;AAAA,cACX,GAAG,IAAI;AAAA,YACX;AAAA,YACA,oBAAoB,SAAS,UAAU,SAAS;AAC5C,kBAAI,aAAa,QAAQ;AAEzB,kBAAI,QAAQ,SAAS,SAAS;AAC1B,oBAAI,cAAc,QAAQ;AAC1B,6BAAa;AAAA,kBACT,YAAY,WAAW;AAAA,kBACvB,UAAU,WAAW;AAAA,kBACrB,cAAc,WAAW;AAAA,kBACzB,OAAO,gBAAgB,SAAS,SAAS,YAAY,KAAK,QAAQ;AAAA,gBACtE;AAAA,cACJ;AAEA,qBAAO,eAAe,UAAU,QAAQ,KAAK,UAAU;AAAA,YAC3D;AAAA,YACA,eAAe,SAASD,WAAU,YAAY;AAC1C,kBAAI,cAAc,CAAC;AACnB,kBAAI,YAAY,CAAC;AACjB,kBAAI,aAAa;AAAA,gBACb,QAAQ,CAAC;AAAA,gBACT,WAAW,CAAC;AAAA,gBACZ,KAAK,CAAC;AAAA,cACV;AACA,cAAAA,UAAS,QAAQ,SAAS,SAAS;AAC/B,qBAAK,oBAAoB,SAAS,UAAU;AAAA,cAChD,GAAG,IAAI;AACP,cAAAA,UAAS,QAAQ,SAAS,SAAS;AAC/B,oBAAI,CAAC,eAAe,OAAO,EAAG,QAAO,YAAY,KAAK,OAAO;AAC7D,oBAAI,yBAAyB,KAAK,gBAAgB,SAAS,UAAU;AACrE,4BAAY,KAAK,uBAAuB,OAAO;AAC/C,4BAAY,KAAK,MAAM,aAAa,uBAAuB,MAAM;AACjE,0BAAU,KAAK,MAAM,WAAW,uBAAuB,SAAS;AAAA,cACpE,GAAG,IAAI;AAEP,kBAAI,CAAC,YAAY;AACb,uBAAO;AAAA,kBACH,UAAU;AAAA,kBACV;AAAA,gBACJ;AAAA,cACJ;AAEA,kBAAI,SAAS,KAAK,oBAAoB,aAAa,UAAU;AAC7D,wBAAU,KAAK,MAAM,WAAW,OAAO,SAAS;AAChD,qBAAO,YAAY;AACnB,qBAAO;AAAA,YACX;AAAA,YACA,qBAAqB,SAAS,SAAS,YAAY,QAAQ;AACvD,kBAAI,OAAO,WAAW,QAAQ,SAAS;AAEvC,kBAAI,CAAC,UAAU,KAAK,QAAQ,QAAQ,GAAG,MAAM,IAAI;AAC7C,sBAAM,IAAI,UAAU,yBAAyB,QAAQ,MAAM,GAAG;AAAA,cAClE;AAEA,mBAAK,KAAK,QAAQ,GAAG;AAAA,YACzB;AAAA,YACA,iBAAiB,SAAS,SAAS,YAAY;AAC3C,kBAAI,SAAS,CAAC;AACd,kBAAI,YAAY,CAAC;AAEjB,uBAAS,aAAa,QAAQ,YAAY7C,KAAI,WAAW,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAC9E,oBAAI,OAAO,WAAW,QAAQ,SAAS;AACvC,qBAAK,OAAO,KAAK,QAAQ,QAAQ,GAAG,GAAG,CAAC;AACxC,oBAAI,gBAAgB,KAAK,sBAAsB,OAAO;AACtD,oBAAI,wBAAwB,KAAK;AAAA,mBAC5B,GAAG,WAAWA,EAAC,GAAG,aAAa,KAAK;AAAA,gBACzC;AACA,0BAAU,sBAAsB;AAChC,qBAAK,oBAAoB,SAAS,UAAU;AAE5C,oBAAI,sBAAsB,UAAU;AAChC,4BAAU,KAAK,sBAAsB,QAAQ;AAAA,gBACjD;AAEA,oBAAI,YAAY,sBAAsB;AAEtC,oBAAI,WAAW;AACX,2BAAS+C,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACvC,yBAAK,oBAAoB,UAAUA,EAAC,GAAG,UAAU;AAAA,kBACrD;AAEA,yBAAO,KAAK,MAAM,QAAQ,SAAS;AAAA,gBACvC;AAAA,cACJ;AAEA,qBAAO;AAAA,gBACH;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAqB,SAASF,WAAU,YAAY;AAChD,kBAAI,YAAY,CAAC;AAEjB,uBAAS7C,KAAI,WAAW,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAC7C,oBAAI,MAAM,KAAK,oBAAoB6C,SAAQ;AAC3C,oBAAI,sBAAsB,KAAK;AAAA,mBAC1B,GAAG,WAAW7C,EAAC,GAAG,GAAG,KAAK;AAAA,gBAC/B;AAEA,oBAAI,oBAAoB,aAAa,QAAW;AAC5C,4BAAU,KAAK,oBAAoB,QAAQ;AAAA,gBAC/C;AAEA,oBAAI,oBAAoB,aAAa,QAAW;AAC5C,kBAAA6C,YAAW,oBAAoB;AAE/B,2BAASE,KAAI,GAAGA,KAAIF,UAAS,SAAS,GAAGE,MAAK;AAC1C,6BAASC,KAAID,KAAI,GAAGC,KAAIH,UAAS,QAAQG,MAAK;AAC1C,0BACIH,UAASE,EAAC,EAAE,QAAQF,UAASG,EAAC,EAAE,OAChCH,UAASE,EAAC,EAAE,cAAcF,UAASG,EAAC,EAAE,WACxC;AACE,8BAAM,IAAI;AAAA,0BACN,yBAAyBH,UAASE,EAAC,EAAE,MAAM;AAAA,wBAC/C;AAAA,sBACJ;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAEA,qBAAO;AAAA,gBACH,UAAUF;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,uBAAuB,SAAS,SAAS;AACrC,kBAAI,MAAM;AAAA,gBACN,MAAM,QAAQ;AAAA,gBACd,KAAK,QAAQ;AAAA,gBACb,WAAW,QAAQ;AAAA,gBACnB,YAAY,QAAQ;AAAA,cACxB;AACA,kBAAI,OAAO;AAAA,gBACP,OAAO;AAAA,gBACP,cAAc;AAAA,cAClB;AACA,qBAAO,eAAe,KAAK,OAAO,aAAa,IAAI;AACnD,kBAAI,QAAQ,SAAS,QAAS,KAAI,cAAc,QAAQ;AACxD,qBAAO;AAAA,YACX;AAAA,YACA,sBAAsB,SAAS,gBAAgB;AAC3C,kBAAI,mBAAmB,OAAW;AAClC,qBAAO,SAAS,cAAc,EAAE,IAAI,SAAS,eAAe;AACxD,oBAAI,UAAU,KAAK,oBAAoB,aAAa;AACpD,qBAAK,iBAAiB,eAAe,YAAY,uBAAuB;AACxE,qBAAK,iBAAiB,eAAe,UAAU,uBAAuB;AACtE,uBAAO;AAAA,cACX,GAAG,IAAI;AAAA,YACX;AAAA,YACA,qBAAqB,SAAS,eAAe;AACzC,kBAAI,OAAO,OAAO,cAAc,IAAI;AAEpC,kBAAI,SAAS,YAAY,SAAS,SAAS;AACvC,sBAAM,IAAI;AAAA,kBACN,0IAGI,OACA;AAAA,gBACR;AAAA,cACJ;AAEA,kBAAI,MAAML,iBAAe,cAAc,GAAG;AAE1C,kBAAI,YAAY,OAAO,cAAc,SAAS;AAE9C,kBAAI,cAAc,YAAY,cAAc,eAAe,cAAc,OAAO;AAC5E,sBAAM,IAAI;AAAA,kBACN,+JAGI,YACA;AAAA,gBACR;AAAA,cACJ;AAEA,kBAAI,aAAa,cAAc;AAC/B,mBAAK,iBAAiB,eAAe,YAAY,uBAAuB;AACxE,kBAAI,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,YAAY,OAAO,OAAO,CAAC,GAAG,UAAU;AAAA,cAC5C;AAEA,kBAAI,SAAS,SAAS;AAClB,qBAAK,iBAAiB,eAAe,eAAe,qBAAqB;AAAA,cAC7E,OAAO;AACH,qBAAK;AAAA,kBACD;AAAA,kBACA;AAAA,kBACA;AAAA,gBACJ;AACA,qBAAK;AAAA,kBACD;AAAA,kBACA;AAAA,kBACA;AAAA,gBACJ;AACA,qBAAK;AAAA,kBACD;AAAA,kBACA;AAAA,kBACA;AAAA,gBACJ;AACA,wBAAQ,cAAc,cAAc;AAAA,cACxC;AAEA,qBAAO;AAAA,YACX;AAAA,YACA,yBAAyB,SAAS,eAAe;AAC7C,kBAAI,UAAU,KAAK,oBAAoB,aAAa;AAEpD,kBAAI,WAAW,0BAA0B,eAAe,UAAU;AAElE,kBAAI,SAAS,KAAK,qBAAqB,cAAc,MAAM;AAC3D,qBAAO;AAAA,gBACH;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAqB,SAASK,WAAU;AACpC,kBAAI,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,UAAUA,UAAS,IAAI,KAAK,uBAAuB,IAAI;AAAA,cAC3D;AACA,kBAAI,OAAO;AAAA,gBACP,OAAO;AAAA,gBACP,cAAc;AAAA,cAClB;AACA,qBAAO,eAAe,KAAK,OAAO,aAAa,IAAI;AACnD,qBAAO;AAAA,YACX;AAAA,YACA,mBAAmB,SAAS,KAAK;AAC7B,kBAAI,OAAO,OAAO,IAAI,IAAI;AAE1B,kBAAI,SAAS,SAAS;AAClB,sBAAM,IAAI;AAAA,kBACN,iHAEI,OACA;AAAA,gBACR;AAAA,cACJ;AAEA,mBAAK,iBAAiB,KAAK,OAAO,oBAAoB;AACtD,mBAAK,iBAAiB,KAAK,aAAa,oBAAoB;AAC5D,mBAAK,iBAAiB,KAAK,cAAc,oBAAoB;AAC7D,mBAAK,iBAAiB,KAAK,eAAe,oBAAoB;AAC9D,mBAAK,iBAAiB,KAAK,UAAU,oBAAoB;AAEzD,kBAAI,WAAW,0BAA0B,KAAK,UAAU;AAExD,kBAAIA,YAAW,KAAK,qBAAqB,IAAI,QAAQ;AACrD,qBAAO;AAAA,gBACH,UAAUA;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,mBAAmB,SAAS,aAAa,WAAW;AAChD,uBAAS7C,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACvC,oBAAI,kBAAkB,GAAG,UAAUA,EAAC,GAAG,WAAW;AAElD,oBAAI,mBAAmB,QAAW;AAC9B,sBAAI,OAAO,mBAAmB,YAAY;AACtC,0BAAM,IAAI,UAAU,sCAAsC;AAAA,kBAC9D;AAEA,gCAAc;AAAA,gBAClB;AAAA,cACJ;AAEA,qBAAO;AAAA,YACX;AAAA,YACA,kBAAkB,SAAS,KAAK/G,OAAM,YAAY;AAC9C,kBAAI,IAAIA,KAAI,MAAM,QAAW;AACzB,sBAAM,IAAI,UAAU,aAAa,oBAAoBA,QAAO,YAAY;AAAA,cAC5E;AAAA,YACJ;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,iBAAS,yBAAyB,KAAK;AACnC,cAAI,MAAMuJ,iBAAe,IAAI,GAAG;AAEhC,cAAI;AAEJ,cAAI,IAAI,SAAS,UAAU;AACvB,yBAAa;AAAA,cACT,OAAO,IAAI;AAAA,cACX,UAAU;AAAA,cACV,cAAc;AAAA,cACd,YAAY;AAAA,YAChB;AAAA,UACJ,WAAW,IAAI,SAAS,OAAO;AAC3B,yBAAa;AAAA,cACT,KAAK,IAAI;AAAA,cACT,cAAc;AAAA,cACd,YAAY;AAAA,YAChB;AAAA,UACJ,WAAW,IAAI,SAAS,OAAO;AAC3B,yBAAa;AAAA,cACT,KAAK,IAAI;AAAA,cACT,cAAc;AAAA,cACd,YAAY;AAAA,YAChB;AAAA,UACJ,WAAW,IAAI,SAAS,SAAS;AAC7B,yBAAa;AAAA,cACT,cAAc;AAAA,cACd,UAAU;AAAA,cACV,YAAY;AAAA,YAChB;AAAA,UACJ;AAEA,cAAI,UAAU;AAAA,YACV,MAAM,IAAI,SAAS,UAAU,UAAU;AAAA,YACvC;AAAA,YACA,WAAW,IAAI,SAAS,WAAW,IAAI,SAAS,UAAU,QAAQ;AAAA,YAClE;AAAA,UACJ;AACA,cAAI,IAAI,WAAY,SAAQ,aAAa,IAAI;AAC7C,cAAI,IAAI,SAAS,QAAS,SAAQ,cAAc,IAAI;AACpD,iBAAO;AAAA,QACX;AAEA,iBAAS,sBAAsB,SAAS,OAAO;AAC3C,cAAI,QAAQ,WAAW,QAAQ,QAAW;AACtC,kBAAM,WAAW,MAAM,QAAQ,WAAW;AAAA,UAC9C,OAAO;AACH,kBAAM,WAAW,MAAM,QAAQ,WAAW;AAAA,UAC9C;AAAA,QACJ;AAEA,iBAAS,uBAAuBK,WAAU;AACtC,cAAI,cAAc,CAAC;AAEnB,cAAI,gBAAgB,SAASI,QAAO;AAChC,mBACIA,OAAM,SAAS,YACfA,OAAM,QAAQ,QAAQ,OACtBA,OAAM,cAAc,QAAQ;AAAA,UAEpC;AAEA,mBAASjD,KAAI,GAAGA,KAAI6C,UAAS,QAAQ7C,MAAK;AACtC,gBAAI,UAAU6C,UAAS7C,EAAC;AACxB,gBAAI;AAEJ,gBAAI,QAAQ,SAAS,aAAa,QAAQ,YAAY,KAAK,aAAa,IAAI;AACxE,kBAAI,kBAAkB,QAAQ,UAAU,KAAK,kBAAkB,MAAM,UAAU,GAAG;AAC9E,oBAAI,eAAe,OAAO,KAAK,eAAe,KAAK,GAAG;AAClD,wBAAM,IAAI;AAAA,oBACN,yBAAyB,QAAQ,MAAM;AAAA,kBAC3C;AAAA,gBACJ;AAEA,sBAAM,aAAa,QAAQ;AAAA,cAC/B,OAAO;AACH,oBAAI,eAAe,OAAO,GAAG;AACzB,sBAAI,eAAe,KAAK,GAAG;AACvB,0BAAM,IAAI;AAAA,sBACN,mFAEI,QAAQ,MACR;AAAA,oBACR;AAAA,kBACJ;AAEA,wBAAM,aAAa,QAAQ;AAAA,gBAC/B;AAEA,sCAAsB,SAAS,KAAK;AAAA,cACxC;AAAA,YACJ,OAAO;AACH,0BAAY,KAAK,OAAO;AAAA,YAC5B;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,eAAe,SAAS;AAC7B,iBAAO,QAAQ,cAAc,QAAQ,WAAW;AAAA,QACpD;AAEA,iBAAS,kBAAkB,MAAM;AAC7B,iBAAO,SAAS,UAAa,EAAE,KAAK,UAAU,UAAa,KAAK,aAAa;AAAA,QACjF;AAEA,iBAAS,0BAA0B,KAAK/G,OAAM;AAC1C,cAAI,QAAQ,IAAIA,KAAI;AAEpB,cAAI,UAAU,UAAa,OAAO,UAAU,YAAY;AACpD,kBAAM,IAAI,UAAU,eAAeA,QAAO,oBAAoB;AAAA,UAClE;AAEA,iBAAO;AAAA,QACX;AAEA,iBAAS,uBAAuB,UAAU,YAAYmC,KAAI;AACtD,cAAI,CAAC,WAAW,IAAI,QAAQ,GAAG;AAC3B,kBAAM,IAAI,UAAU,gDAAgD;AAAA,UACxE;AAEA,iBAAOA;AAAA,QACX;AAEA,iBAAS,yBAAyB;AAC9B,gBAAM,IAAI,UAAU,sCAAsC;AAAA,QAC9D;AAEA,iBAAS,YAAY8H,KAAI,QAAQ;AAC7B,wBAAc,SAASA,KAAIC,SAAQ;AAC/B,mBAAO,IAAI,YAAYD,KAAIC,OAAM;AAAA,UACrC;AAEA,cAAI,UAAU,iBAAiB,MAAM;AAErC,cAAI,SAAS,OAAO;AAEpB,cAAI,UAAU,oBAAI,QAAQ;AAE1B,mBAAS,YAAYD,KAAIC,SAAQ;AAC7B,gBAAI,QAAQ,QAAQ,KAAK,MAAMD,GAAE;AAEjC,oBAAQ,IAAI,OAAOC,OAAM;AAEzB,mBAAO;AAAA,UACX;AAEA,UAAArC,WAAU,aAAa,OAAO;AAE9B,sBAAY,UAAU,OAAO,SAAS,KAAK;AACvC,gBAAI,SAAS,OAAO,KAAK,KAAK,MAAM,GAAG;AAEvC,gBAAI,OAAQ,QAAO,SAAS,YAAY,QAAQ,IAAI;AACpD,mBAAO;AAAA,UACX;AAEA,sBAAY,UAAU,OAAO,OAAO,IAAI,SAAS,KAAK,cAAc;AAChE,gBAAI,OAAO,iBAAiB,UAAU;AAClC,kBAAIqC,UAAS,QAAQ,IAAI,IAAI;AAE7B,qBAAO,OAAO,OAAO,OAAO,EAAE;AAAA,gBAC1B;AAAA,gBACA;AAAA,gBACA,aAAa,QAAQ,gBAAgB,SAASC,KAAGnK,OAAM;AACnD,yBAAO,MAAMkK,QAAOlK,KAAI;AAAA,gBAC5B,CAAC;AAAA,cACL;AAAA,YACJ,WAAW,OAAO,iBAAiB,YAAY;AAC3C,kBAAI,QAAQ;AAEZ,qBAAO,OAAO,OAAO,OAAO,EAAE,KAAK,MAAM,KAAK,WAAW;AACrD,oBAAI,OAAO,CAAC;AACZ,qBAAK,KAAK,MAAM,MAAM,SAAS;AAE/B,oBAAI,OAAO,KAAK,KAAK,SAAS,CAAC,MAAM,UAAU;AAC3C,uBAAK,KAAK,YAAY,MAAM,KAAK,CAAC;AAAA,gBACtC;AAEA,uBAAO,aAAa,MAAM,MAAM,IAAI;AAAA,cACxC,CAAC;AAAA,YACL,OAAO;AACH,qBAAO,OAAO,OAAO,OAAO,EAAE,KAAK,MAAM,KAAK,YAAY;AAAA,YAC9D;AAAA,UACJ;AAEA,mBAAS,YAAY,QAAQiK,KAAI;AAC7B,gBAAIG,KAAI,QAAQ,IAAIH,GAAE;AAEtB,mBAAO,OAAO,KAAKG,EAAC,EAAE,OAAO,SAASF,SAAQlK,OAAM;AAChD,cAAAkK,QAAOlK,KAAI,IAAI,OAAOoK,GAAEpK,KAAI,CAAC;AAC7B,qBAAOkK;AAAA,YACX,GAAG,uBAAO,OAAO,IAAI,CAAC;AAAA,UAC1B;AAEA,iBAAO,YAAY,MAAM,MAAM,SAAS;AAAA,QAC5C;AAEA,YAAI,cAAc,SAASG,aAAY,KAAKjK,QAAO;AAC/C,iBAAO,IAAI,OAAOA,QAAO,CAAC;AAAA,QAC9B;AAEA,YAAI,MAAM,SAASkK,KAAI,IAAI,MAAM;AAC7B,cAAI,MAAM;AACN,eAAG;AAAA,UACP,WAAW,SAAS,QAAQ;AACxB,oBAAQ,QAAQ,CAAC,EAAE,KAAK,EAAE;AAAA,UAC9B,OAAO;AACH,uBAAW,IAAI,CAAC;AAAA,UACpB;AAAA,QACJ;AAEA,YAAIC,MAAK,SAASA,MAAK;AACnB,cAAIlI,aAAY,CAAC;AACjB,cAAImI,OAAM,SAASA,KAAIlI,QAAO,IAAI;AAC9B;AAAA,cACID;AAAA,cACAA,WAAU,UAAU,SAAS,UAAU;AACnC,uBAAO,SAAS,UAAUC,WAAU,SAAS,OAAO,MAAM,CAAC;AAAA,cAC/D,CAAC;AAAA,YACL;AAAA,UACJ;AACA,cAAI,QAAQ,SAASmI,MAAKnI,QAAO,MAAM,MAAM;AACzC,YAAAD,WACK,OAAO,SAAS,UAAU;AACvB,qBAAO,SAAS,UAAUC;AAAA,YAC9B,CAAC,EACA,IAAI,SAAS,UAAU;AACpB,qBAAO,SAAS;AAAA,YACpB,CAAC,EACA,QAAQ,SAAS,IAAI;AAClB,qBAAO,IAAI,WAAW;AAClB,uBAAO,GAAG,MAAM,QAAQ,mBAAmB,IAAI,CAAC;AAAA,cACpD,GAAG,IAAI;AAAA,YACX,CAAC;AAAA,UACT;AACA,iBAAO;AAAA,YACH,UAAU,SAAS,SAASA,QAAO;AAC/B,uBACQ,OAAO,UAAU,QACjB,OAAO,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GACxC,OAAO,GACX,OAAO,MACP,QACF;AACE,qBAAK,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,cACnC;AACA,oBAAMA,QAAO,MAAM,IAAI;AAAA,YAC3B;AAAA,YACA,MAAM,SAASmI,MAAKnI,QAAO;AACvB,uBACQ,QAAQ,UAAU,QAClB,OAAO,IAAI,MAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,GAC1C,QAAQ,GACZ,QAAQ,OACR,SACF;AACE,qBAAK,QAAQ,CAAC,IAAI,UAAU,KAAK;AAAA,cACrC;AACA,oBAAMA,QAAO,MAAM,KAAK;AAAA,YAC5B;AAAA,YACA,IAAI,SAASiI,IAAGjI,QAAO,IAAI;AACvB,cAAAD,WAAU,KAAK,EAAE,OAAOC,QAAO,GAAO,CAAC;AAAA,YAC3C;AAAA,YACA,QAAQ,SAAS,OAAOA,QAAO,KAAK;AAChC,cAAAD,WAAU,KAAK;AAAA,gBACX,OAAOC;AAAA,gBACP,IAAI,SAAS,KAAK;AACd,kBAAAkI,KAAIlI,QAAO,GAAG;AACd,sBAAI,MAAM,QAAQ,SAAS;AAAA,gBAC/B;AAAA,cACJ,CAAC;AAAA,YACL;AAAA,YACA,KAAKkI;AAAA,UACT;AAAA,QACJ;AAEA,YAAI,+BAA+B,SAASE,8BACxC,KACA,QACA,UACF;AACE,iBAAO,oBAAoB,GAAG,EACzB,OAAO,SAAS,UAAU;AACvB,mBAAO,CAAC,SAAS,SAAS,QAAQ;AAAA,UACtC,CAAC,EACA,QAAQ,SAAS,KAAK;AACnB,mBAAO,OAAO;AAAA,cACV;AAAA,cACA;AAAA,cACA,OAAO,yBAAyB,KAAK,GAAG;AAAA,YAC5C;AAAA,UACJ,CAAC;AAAA,QACT;AAEA,YAAI,UAAU;AAAA,UACV;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,UACA;AAAA,UACA;AAAA,QACJ;AAEA,YAAI,gBAAgB,SAASC,eAAcC,OAAM;AAC7C,cAAI,MAAM,CAAC;AACX,uCAA6BA,OAAM,KAAK,OAAO;AAC/C,iBAAO;AAAA,QACX;AAEA,YAAI,sBAAsB,SAASC,qBAAoB,OAAO;AAC1D,gBAAM,QAAQ,SAASD,OAAMxK,QAAO;AAChC,gBAAIwK,MAAK,UAAU;AACf,0BAAY,OAAOxK,MAAK;AAAA,YAC5B;AAAA,UACJ,CAAC;AAAA,QACL;AAEA,YAAI,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,mBAAmB;AAAA,UACnB,YAAY;AAAA,UACZ,qBAAqB;AAAA,UACrB,kBAAkB;AAAA,UAClB,yBAAyB;AAAA,UACzB,SAAS;AAAA,UACT,YAAY;AAAA,QAChB;AAEA,YAAI,aAAa;AAAA,UACb,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,QACX;AAEA,YAAI,gBAAgB,SAAS0K,eAAc,KAAK;AAC5C,iBAAO,UAAU,KAAK,GAAG;AAAA,QAC7B;AAEA,YAAI,sBAAsB,SAASC,uBAAsB;AACrD,iBAAO,cAAe,IAAK,eAAe,CAAC,EAAE,CAAC;AAAA,QAClD;AAEA,YAAI,wBAAwB,SAASC,yBAAwB;AAGzD,cAAI,mBAAmB,oBAAoB;AAC3C,cAAI,+BAAgC,IAAQ,eAAe;AAC3D,cAAI,kCAAmC,IAAQ,SAAS;AACxD,cAAI,iCAAiC,iCAAiC;AAClE,mBAAO,cAAc,4BAA4B,EAAE,CAAC;AAAA,UACxD;AACA,iBAAO,qBAAqB,MAAM,MAAM;AAAA,QAC5C;AAEA,YAAI,OAAO;AAAA,UACP,SAAS;AAAA,UACT,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,OAAO;AAAA,QACX;AAGA,YAAI,UAAU,CAAC;AAGf,YAAI,mBAAmB,SAASC,kBAAiB,KAAK,OAAOC,QAAO;AAChE,iBAAO,IAAI,QAAQ,SAASlE,UAAS,QAAQ;AAEzC,gBAAI,kBAAkB,QACjB,OAAO,SAASjG,IAAG;AAChB,qBAAOA,GAAE,QAAQ;AAAA,YACrB,CAAC,EACA,IAAI,SAASA,IAAG;AACb,qBAAOA,GAAE;AAAA,YACb,CAAC;AAGL,gBAAI,gBAAgB,WAAW,GAAG;AAC9B,cAAAiG,SAAQ,KAAK;AACb;AAAA,YACJ;AAGA,gBAAI,gBAAgB,gBAAgB,MAAM;AAG1C,4BACK;AAAA;AAAA,cAEG,SAAS,SAAS,MAAM;AACpB,uBAAO,QAAQ,KAAK,SAAS6B,QAAO;AAChC,yBAAO,KAAKA,QAAOqC,MAAK;AAAA,gBAC5B,CAAC;AAAA,cACL;AAAA;AAAA,cAGA,cAAc,OAAOA,MAAK;AAAA;AAAA,YAG9B,EACC,KAAK,SAASrC,QAAO;AAClB,qBAAO7B,SAAQ6B,MAAK;AAAA,YACxB,CAAC,EACA,MAAM,SAAS1B,QAAO;AACnB,qBAAO,OAAOA,MAAK;AAAA,YACvB,CAAC;AAAA,UACT,CAAC;AAAA,QACL;AAEA,YAAI,eAAe,SAASgE,cAAa,KAAK,OAAOD,QAAO;AACxD,iBAAO,QACF,OAAO,SAASnK,IAAG;AAChB,mBAAOA,GAAE,QAAQ;AAAA,UACrB,CAAC,EACA,IAAI,SAASA,IAAG;AACb,mBAAOA,GAAE,GAAG,OAAOmK,MAAK;AAAA,UAC5B,CAAC;AAAA,QACT;AAGA,YAAI,YAAY,SAASE,WAAU,KAAK,IAAI;AACxC,iBAAO,QAAQ,KAAK,EAAE,KAAU,GAAO,CAAC;AAAA,QAC5C;AAEA,YAAI,uBAAuB,SAASC,sBAAqB,mBAAmB;AACxE,iBAAO,OAAO,OAAOC,iBAAgB,iBAAiB;AAAA,QAC1D;AAEA,YAAIC,cAAa,SAASA,cAAa;AACnC,iBAAO,OAAO,OAAO,CAAC,GAAGD,eAAc;AAAA,QAC3C;AAEA,YAAIE,cAAa,SAASA,YAAW,MAAM;AACvC,gBAAM,MAAM,SAAS,KAAK,OAAO;AAE7B,gBAAI,CAACF,gBAAe,GAAG,GAAG;AACtB;AAAA,YACJ;AACA,YAAAA,gBAAe,GAAG,EAAE,CAAC,IAAI;AAAA,cACrB;AAAA,cACAA,gBAAe,GAAG,EAAE,CAAC;AAAA,cACrBA,gBAAe,GAAG,EAAE,CAAC;AAAA,YACzB;AAAA,UACJ,CAAC;AAAA,QACL;AAGA,YAAIA,kBAAiB;AAAA;AAAA,UAEjB,IAAI,CAAC,MAAM,KAAK,MAAM;AAAA;AAAA,UAGtB,MAAM,CAAC,YAAY,KAAK,MAAM;AAAA;AAAA,UAG9B,UAAU,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UAG9B,WAAW,CAAC,MAAM,KAAK,MAAM;AAAA;AAAA,UAG7B,UAAU,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UAG9B,eAAe,CAAC,MAAM,KAAK,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,UAMjC,0BAA0B,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAG7C,WAAW,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAC9B,aAAa,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAChC,YAAY,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAC/B,eAAe,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UACnC,cAAc,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UACjC,aAAa,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAChC,aAAa,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAChC,cAAc,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UACjC,cAAc,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UAClC,sBAAsB,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA;AAAA,UAG1C,aAAa,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UAGjC,aAAa,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA;AAAA,UAGjC,UAAU,CAAC,MAAM,KAAK,GAAG;AAAA;AAAA,UACzB,eAAe,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA;AAAA,UAGnC,2BAA2B,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAC9C,oBAAoB,CAAC,UAAU,KAAK,MAAM;AAAA;AAAA,UAC1C,oBAAoB,CAAC,IAAI,KAAK,GAAG;AAAA;AAAA,UAGjC,YAAY,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UAChC,eAAe,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAClC,gBAAgB,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UACpC,cAAc,CAAC,CAAC,aAAa,aAAa,aAAa,GAAG,KAAK,KAAK;AAAA;AAAA,UAGpE,eAAe,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA,UAClC,oBAAoB,CAAC,GAAG,KAAK,GAAG;AAAA;AAAA,UAChC,4BAA4B,CAAC,MAAM,KAAK,OAAO;AAAA;AAAA;AAAA,UAG/C,cAAc,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UAClC,YAAY,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UAChC,WAAW,CAAC,KAAS,KAAK,GAAG;AAAA;AAAA,UAC7B,kBAAkB,CAAC,CAAC,KAAK,KAAM,GAAI,GAAG,KAAK,KAAK;AAAA;AAAA;AAAA,UAGhD,QAAQ,CAAC,MAAM,KAAK,UAAU;AAAA;AAAA,UAG9B,cAAc,CAAC,KAAM,KAAK,GAAG;AAAA;AAAA,UAG7B,oBAAoB,CAAC,SAAS,KAAK,MAAM;AAAA,UACzC,wBAAwB,CAAC,MAAM,KAAK,MAAM;AAAA,UAC1C,wBAAwB,CAAC,MAAM,KAAK,MAAM;AAAA,UAC1C,wBAAwB,CAAC,MAAM,KAAK,MAAM;AAAA,UAE1C,uBAAuB,CAAC,oBAAoB,GAAG,KAAK,MAAM;AAAA;AAAA,UAC1D,yBAAyB,CAAC,sBAAsB,GAAG,KAAK,MAAM;AAAA;AAAA,UAE9D,WAAW;AAAA,YACP;AAAA,YACA,KAAK;AAAA,UACT;AAAA,UAEA,mBAAmB,CAAC,gCAAgC,KAAK,MAAM;AAAA,UAC/D,yBAAyB,CAAC,oBAAoB,KAAK,MAAM;AAAA,UACzD,2BAA2B,CAAC,sBAAsB,KAAK,MAAM;AAAA,UAC7D,wBAAwB,CAAC,gBAAgB,KAAK,MAAM;AAAA,UACpD,sBAAsB,CAAC,iBAAiB,KAAK,MAAM;AAAA,UACnD,kBAAkB,CAAC,WAAW,KAAK,MAAM;AAAA,UACzC,gBAAgB,CAAC,SAAS,KAAK,MAAM;AAAA;AAAA,UACrC,oBAAoB,CAAC,qBAAqB,KAAK,MAAM;AAAA,UACrD,kBAAkB,CAAC,WAAW,KAAK,MAAM;AAAA;AAAA,UACzC,sBAAsB,CAAC,uBAAuB,KAAK,MAAM;AAAA,UACzD,qBAAqB,CAAC,aAAa,KAAK,MAAM;AAAA,UAC9C,6BAA6B,CAAC,mBAAmB,KAAK,MAAM;AAAA,UAC5D,4BAA4B,CAAC,oBAAoB,KAAK,MAAM;AAAA,UAC5D,0BAA0B,CAAC,uBAAuB,KAAK,MAAM;AAAA,UAC7D,gCAAgC,CAAC,uBAAuB,KAAK,MAAM;AAAA,UAEnE,kBAAkB,CAAC,iBAAiB,KAAK,MAAM;AAAA,UAC/C,iBAAiB,CAAC,gBAAgB,KAAK,MAAM;AAAA,UAC7C,gBAAgB,CAAC,eAAe,KAAK,MAAM;AAAA,UAE3C,uBAAuB,CAAC,UAAU,KAAK,MAAM;AAAA,UAC7C,0BAA0B,CAAC,SAAS,KAAK,MAAM;AAAA,UAC/C,0BAA0B,CAAC,SAAS,KAAK,MAAM;AAAA,UAC/C,gCAAgC,CAAC,UAAU,KAAK,MAAM;AAAA,UACtD,+BAA+B,CAAC,QAAQ,KAAK,MAAM;AAAA,UACnD,gCAAgC,CAAC,SAAS,KAAK,MAAM;AAAA,UACrD,wBAAwB,CAAC,UAAU,KAAK,MAAM;AAAA;AAAA,UAG9C,YAAY;AAAA,YACR;AAAA,YACA,KAAK;AAAA,UACT;AAAA,UAEA,aAAa;AAAA,YACT;AAAA,YACA,KAAK;AAAA,UACT;AAAA,UAEA,WAAW;AAAA,YACP;AAAA,YACA,KAAK;AAAA,UACT;AAAA,UAEA,UAAU;AAAA,YACN;AAAA,YACA,KAAK;AAAA,UACT;AAAA,UAEA,UAAU;AAAA,YACN;AAAA,YACA,KAAK;AAAA,UACT;AAAA;AAAA,UAGA,QAAQ,CAAC,MAAM,KAAK,QAAQ;AAAA,UAC5B,WAAW,CAAC,MAAM,KAAK,QAAQ;AAAA,UAC/B,SAAS,CAAC,MAAM,KAAK,QAAQ;AAAA,UAC7B,gBAAgB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACpC,YAAY,CAAC,MAAM,KAAK,QAAQ;AAAA,UAChC,gBAAgB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACpC,mBAAmB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACvC,WAAW,CAAC,MAAM,KAAK,QAAQ;AAAA,UAC/B,oBAAoB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACxC,uBAAuB,CAAC,MAAM,KAAK,QAAQ;AAAA,UAC3C,oBAAoB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACxC,qBAAqB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACzC,eAAe,CAAC,MAAM,KAAK,QAAQ;AAAA,UACnC,gBAAgB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACpC,cAAc,CAAC,MAAM,KAAK,QAAQ;AAAA,UAClC,eAAe,CAAC,MAAM,KAAK,QAAQ;AAAA,UACnC,eAAe,CAAC,MAAM,KAAK,QAAQ;AAAA,UACnC,gBAAgB,CAAC,MAAM,KAAK,QAAQ;AAAA;AAAA,UAGpC,gBAAgB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACpC,eAAe,CAAC,MAAM,KAAK,QAAQ;AAAA,UACnC,kBAAkB,CAAC,MAAM,KAAK,QAAQ;AAAA,UACtC,mBAAmB,CAAC,MAAM,KAAK,QAAQ;AAAA;AAAA,UAGvC,kBAAkB,CAAC,MAAM,KAAK,MAAM;AAAA;AAAA,UACpC,uBAAuB,CAAC,MAAM,KAAK,MAAM;AAAA;AAAA,UACzC,2BAA2B,CAAC,MAAM,KAAK,MAAM;AAAA,UAC7C,+BAA+B,CAAC,QAAQ,KAAK,MAAM;AAAA,UACnD,gCAAgC,CAAC,SAAS,KAAK,MAAM;AAAA,UACrD,4BAA4B,CAAC,SAAS,KAAK,MAAM;AAAA,UACjD,gCAAgC,CAAC,SAAS,KAAK,MAAM;AAAA,UACrD,4BAA4B,CAAC,OAAO,KAAK,OAAO;AAAA;AAAA,UAGhD,OAAO,CAAC,CAAC,GAAG,KAAK,KAAK;AAAA;AAAA,UAGtB,SAAS,CAAC,CAAC,qBAAqB,kBAAkB,GAAG,KAAK,KAAK;AAAA,QACnE;AAEA,YAAI,iBAAiB,SAASG,gBAAe,OAAO,OAAO;AAEvD,cAAI,QAAQ,KAAK,GAAG;AAChB,mBAAO,MAAM,CAAC,KAAK;AAAA,UACvB;AAGA,cAAI,MAAM,KAAK,GAAG;AACd,mBAAO,MAAM,KAAK,KAAK;AAAA,UAC3B;AAGA,cAAI,OAAO,UAAU,UAAU;AAC3B,oBAAQ,MAAM;AAAA,UAClB;AAGA,iBACI,MAAM,KAAK,SAASb,OAAM;AACtB,mBAAOA,MAAK,OAAO;AAAA,UACvB,CAAC,KAAK;AAAA,QAEd;AAEA,YAAI,kCAAkC,SAASc,iCAAgC,aAAa;AACxF,cAAI,QAAQ,WAAW,GAAG;AACtB,mBAAO;AAAA,UACX;AACA,cAAI,IAAI,KAAK,WAAW,GAAG;AACvB,gBAAI,QAAQ,YAAY,MAAM,GAAG;AACjC,mBAAO,MAAM,CAAC,IAAI,MAAM,CAAC;AAAA,UAC7B;AACA,iBAAO,WAAW,WAAW;AAAA,QACjC;AAEA,YAAI,iBAAiB,SAASC,gBAAe,OAAO;AAChD,iBAAO,MAAM,OAAO,SAASf,OAAM;AAC/B,mBAAO,CAACA,MAAK;AAAA,UACjB,CAAC;AAAA,QACL;AAEA,YAAI,SAAS;AAAA,UACT,OAAO;AAAA,UACP,MAAM;AAAA;AAAA,UACN,OAAO;AAAA;AAAA,UACP,MAAM;AAAA;AAAA,UACN,OAAO;AAAA;AAAA,QACX;AAEA,YAAI,MAAM;AACV,YAAI,qBAAqB,SAASgB,sBAAqB;AACnD,cAAI,QAAQ,MAAM;AACd,gBAAI;AACA,kBAAI,eAAe,IAAI,aAAa;AACpC,2BAAa,MAAM,IAAI,IAAI,KAAK,CAAC,aAAa,GAAG,gBAAgB,CAAC;AAClE,kBAAI,KAAK,SAAS,cAAc,OAAO;AACvC,iBAAG,aAAa,QAAQ,MAAM;AAC9B,iBAAG,QAAQ,aAAa;AACxB,oBAAM,GAAG,MAAM,WAAW;AAAA,YAC9B,SAAS,KAAK;AACV,oBAAM;AAAA,YACV;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,aAAa;AAAA,UACb,WAAW;AAAA,UACX,WAAW;AAAA,UACX,WAAW;AAAA,QACf;AAEA,YAAI,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,WAAW;AAAA,UACX,WAAW;AAAA,UACX,WAAW;AAAA,QACf;AAEA,YAAI,aAAa,CAAC,WAAW,mBAAmB;AAEhD,YAAI,qBAAqB,SAASC,oBAAmBjB,OAAM;AACvD,iBAAO,WAAW,SAASA,MAAK,MAAM;AAAA,QAC1C;AACA,YAAI,oBAAoB,SAASkB,mBAAkBlB,OAAM;AACrD,iBAAO,UAAU,SAASA,MAAK,MAAM;AAAA,QACzC;AACA,YAAI,qBAAqB,SAASmB,oBAAmBnB,OAAM;AACvD,iBAAO,WAAW,SAASA,MAAK,MAAM;AAAA,QAC1C;AAEA,YAAI,UAAU,SAASoB,SAAQ5M,QAAO;AAClC,iBACI0G,UAAS1G,OAAM,QAAQ,MAAM,MAC5B0G,UAAS1G,OAAM,QAAQ,OAAO,OAAO,KAAKoG,YAAWpG,OAAM,QAAQ,OAAO,OAAO;AAAA,QAE1F;AAEA,YAAI,UAAU,SAASF,SAAQE,QAAO;AAClC,iBAAO;AAAA,YACH,YAAY,SAAS,aAAa;AAC9B,kBAAI,QAAQ,eAAeA,OAAM,KAAK;AACtC,kBAAI,QAAQ,OAAO,OACf,QAAQ,OAAO,OACf,OAAO,OAAO,MACd,OAAO,OAAO,MACd,QAAQ,OAAO;AAEnB,kBAAI,MAAM,WAAW,EAAG,QAAO;AAE/B,kBAAI,MAAM,KAAK,kBAAkB,EAAG,QAAO;AAE3C,kBAAI,MAAM,KAAK,iBAAiB,EAAG,QAAO;AAE1C,kBAAI,MAAM,KAAK,kBAAkB,EAAG,QAAO;AAE3C,qBAAO;AAAA,YACX;AAAA,YAEA,UAAU,SAAS,SAAS,OAAO;AAC/B,qBAAO,eAAeA,OAAM,OAAO,KAAK;AAAA,YAC5C;AAAA,YAEA,iBAAiB,SAAS,gBAAgB,OAAO;AAC7C,qBAAO,eAAe,eAAeA,OAAM,KAAK,GAAG,KAAK;AAAA,YAC5D;AAAA,YAEA,kBAAkB,SAAS,mBAAmB;AAC1C,qBAAO,eAAeA,OAAM,KAAK;AAAA,YACrC;AAAA,YAEA,WAAW,SAAS,YAAY;AAC5B,qBAAOA,OAAM;AAAA,YACjB;AAAA,YAEA,eAAe,SAAS,cAAc,OAAO;AACzC,kBAAIwL,QAAO,eAAexL,OAAM,OAAO,KAAK;AAC5C,qBAAOwL,QAAOA,MAAK,WAAW;AAAA,YAClC;AAAA,YAEA,eAAe,SAAS,cAAc,OAAO;AACzC,kBAAIA,QAAO,eAAexL,OAAM,OAAO,KAAK;AAC5C,qBAAOwL,QAAOA,MAAK,WAAW;AAAA,YAClC;AAAA,YAEA,YAAY,SAAS,aAAa;AAC9B,qBAAO,OAAO,KAAKxL,OAAM,OAAO,EAC3B,OAAO,SAAS,KAAK;AAClB,uBAAO,SAAS,KAAK,GAAG;AAAA,cAC5B,CAAC,EACA,IAAI,SAAS6M,SAAQ;AAClB,uBAAO;AAAA,kBACH,MAAMA;AAAA,kBACN,OAAO7M,OAAM,QAAQ6M,OAAM;AAAA,gBAC/B;AAAA,cACJ,CAAC;AAAA,YACT;AAAA,YAEA,wBAAwB,SAAS,yBAAyB;AACtD,kBAAI,gBAAgB,SAAS,KAAK7M,OAAM,QAAQ,gBAAgB;AAChE,kBAAI,cAAc,gBACZ,IACA,gCAAgCA,OAAM,QAAQ,qBAAqB;AACzE,qBAAO;AAAA,YACX;AAAA,YAEA,6BAA6B,SAAS,8BAA8B;AAChE,qBAAOA,OAAM,QAAQ;AAAA,YACzB;AAAA,YAEA,qBAAqB,SAAS,oBAAoB,QAAQ;AACtD,qBAAO,eAAeA,OAAM,KAAK,EAAE,OAAO,SAASwL,OAAM;AACrD,uBAAOA,MAAK,WAAW;AAAA,cAC3B,CAAC;AAAA,YACL;AAAA,YAEA,iBAAiB,SAAS,kBAAkB;AACxC,qBAAO,eAAexL,OAAM,KAAK,EAAE;AAAA,YACvC;AAAA,YAEA,0BAA0B,SAAS,2BAA2B;AAC1D,qBAAOA,OAAM,QAAQ,eAAe,mBAAmB,KAAK,CAAC,QAAQA,MAAK;AAAA,YAC9E;AAAA,YAEA,UAAU,SAAS,WAAW;AAC1B,qBAAO,QAAQA,MAAK;AAAA,YACxB;AAAA,YAEA,sBAAsB,SAAS,qBAAqB,OAAO;AACvD,qBAAO;AAAA,gBACH,YAAY,MAAM,2BAA2B,KAAK;AAAA,gBAClD,gBAAgB,MAAM,+BAA+B,KAAK;AAAA,gBAC1D,gBAAgB,MAAM,+BAA+B,KAAK;AAAA,gBAC1D,gBAAgB,MAAM,+BAA+B,KAAK;AAAA,cAC9D;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,iBAAiB,SAAS8M,gBAAe9M,QAAO;AAChD,cAAI,QAAQ,eAAeA,OAAM,KAAK,EAAE;AAGxC,cAAI,CAACA,OAAM,QAAQ,eAAe;AAC9B,mBAAO,UAAU;AAAA,UACrB;AAGA,cAAI,eAAeA,OAAM,QAAQ;AACjC,cAAI,iBAAiB,MAAM;AACvB,mBAAO;AAAA,UACX;AAGA,cAAI,QAAQ,cAAc;AACtB,mBAAO;AAAA,UACX;AAGA,iBAAO;AAAA,QACX;AAEA,YAAI,QAAQ,SAAS+M,OAAM,OAAO,KAAK,KAAK;AACxC,iBAAO,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,GAAG;AAAA,QAC7C;AAEA,YAAI,cAAc,SAASC,aAAY,KAAKhM,QAAOwK,OAAM;AACrD,iBAAO,IAAI,OAAOxK,QAAO,GAAGwK,KAAI;AAAA,QACpC;AAEA,YAAI,aAAa,SAASyB,YAAW,OAAOzB,OAAMxK,QAAO;AACrD,cAAI,QAAQwK,KAAI,GAAG;AACf,mBAAO;AAAA,UACX;AAGA,cAAI,OAAOxK,WAAU,aAAa;AAC9B,kBAAM,KAAKwK,KAAI;AACf,mBAAOA;AAAA,UACX;AAGA,UAAAxK,SAAQ,MAAMA,QAAO,GAAG,MAAM,MAAM;AAGpC,sBAAY,OAAOA,QAAOwK,KAAI;AAG9B,iBAAOA;AAAA,QACX;AAEA,YAAI,kBAAkB,SAAS0B,iBAAgB,KAAK;AAChD,iBAAO,4GAA4G;AAAA,YAC/G;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,qBAAqB,SAASC,oBAAmB,KAAK;AACtD,kBAAQ,KAAK,KACR,MAAM,GAAG,EACT,IAAI,EACJ,MAAM,GAAG,EACT,MAAM;AAAA,QACf;AAEA,YAAI,2BAA2B,SAASC,0BAAyBxM,OAAM;AACnE,iBAAOA,MAAK,MAAM,GAAG,EAAE,IAAI;AAAA,QAC/B;AAEA,YAAI,uBAAuB,SAASyM,sBAAqB,MAAM;AAE3D,cAAI,OAAO,SAAS,UAAU;AAC1B,mBAAO;AAAA,UACX;AAGA,cAAI,UAAU,KAAK,MAAM,GAAG,EAAE,IAAI;AAGlC,cAAI,MAAM,KAAK,OAAO,GAAG;AACrB,mBAAO;AAAA,UACX;AAEA,cAAI,iBAAiB,KAAK,OAAO,GAAG;AAChC,mBAAO;AAAA,UACX;AAEA,cAAI,QAAQ,KAAK,OAAO,GAAG;AACvB,mBAAO;AAAA,UACX;AAEA,cAAI,SAAS,KAAK,OAAO,GAAG;AACxB,mBAAO;AAAA,UACX;AAGA,cAAI,SAAS,KAAK,OAAO,GAAG;AAExB,gBAAI,YAAY,QAAQ;AACpB,qBAAO;AAAA,YACX;AAGA,mBAAO;AAAA,UACX;AAEA,iBAAO;AAAA,QACX;AAEA,YAAI,UAAU,SAASC,SAAQ,OAAO;AAClC,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,kBAAQ,UAAU,OAAO,MAAM,CAAC,QAAQ,MAAM;AAAA,QAClD;AAEA,YAAI,gBAAgB,SAASC,iBAAgB;AACzC,cAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,oBAAI,KAAK;AACxF,iBACI,KAAK,YAAY,IACjB,MACA,QAAQ,KAAK,SAAS,IAAI,GAAG,IAAI,IACjC,MACA,QAAQ,KAAK,QAAQ,GAAG,IAAI,IAC5B,MACA,QAAQ,KAAK,SAAS,GAAG,IAAI,IAC7B,MACA,QAAQ,KAAK,WAAW,GAAG,IAAI,IAC/B,MACA,QAAQ,KAAK,WAAW,GAAG,IAAI;AAAA,QAEvC;AAEA,YAAI,kBAAkB,SAASC,iBAAgBC,OAAM,UAAU;AAC3D,cAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC/E,cAAI,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACpF,cAAIC,QACA,OAAO,SAAS,WACVD,MAAK,MAAM,GAAGA,MAAK,MAAM,IAAI,IAC7BA,MAAK,MAAM,GAAGA,MAAK,MAAMA,MAAK,IAAI;AAC5C,UAAAC,MAAK,mBAAmB,oBAAI,KAAK;AAGjC,cAAID,MAAK,cAAe,CAAAC,MAAK,gBAAgBD,MAAK;AAGlD,cAAI,CAAC3H,UAAS,QAAQ,GAAG;AACrB,uBAAW,cAAc;AAAA,UAC7B;AAGA,cAAI,YAAY,cAAc,QAAQ,yBAAyB,QAAQ,GAAG;AACtE,YAAA4H,MAAK,OAAO;AAAA,UAChB,OAAO;AACH,wBAAY,aAAa,qBAAqBA,MAAK,IAAI;AACvD,YAAAA,MAAK,OAAO,YAAY,YAAY,MAAM,YAAY;AAAA,UAC1D;AAEA,iBAAOA;AAAA,QACX;AAEA,YAAI,iBAAiB,SAASC,kBAAiB;AAC3C,iBAAQ,OAAO,cACX,OAAO,eACP,OAAO,qBACP,OAAO,kBACP,OAAO;AAAA,QACf;AAEA,YAAI,aAAa,SAASC,YAAW,aAAa,UAAU;AACxD,cAAI,KAAK,eAAe;AAExB,cAAI,IAAI;AACJ,gBAAI,KAAK,IAAI,GAAG;AAChB,eAAG,OAAO,WAAW;AACrB,mBAAO,GAAG,QAAQ,QAAQ;AAAA,UAC9B;AAEA,iBAAO,IAAI,KAAK,CAAC,WAAW,GAAG;AAAA,YAC3B,MAAM;AAAA,UACV,CAAC;AAAA,QACL;AAEA,YAAI,oCAAoC,SAASC,mCAC7C,YACA,UACF;AACE,cAAI,KAAK,IAAI,YAAY,WAAW,MAAM;AAC1C,cAAI,KAAK,IAAI,WAAW,EAAE;AAE1B,mBAASlG,KAAI,GAAGA,KAAI,WAAW,QAAQA,MAAK;AACxC,eAAGA,EAAC,IAAI,WAAW,WAAWA,EAAC;AAAA,UACnC;AAEA,iBAAO,WAAW,IAAI,QAAQ;AAAA,QAClC;AAEA,YAAI,+BAA+B,SAASmG,8BAA6B,SAAS;AAC9E,kBAAQ,cAAc,KAAK,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK;AAAA,QACrD;AAEA,YAAI,iCAAiC,SAASC,gCAA+B,SAAS;AAElF,cAAI1N,QAAO,QAAQ,MAAM,GAAG,EAAE,CAAC;AAG/B,iBAAOA,MAAK,QAAQ,OAAO,EAAE;AAAA,QACjC;AAEA,YAAI,iCAAiC,SAAS2N,gCAA+B,SAAS;AAClF,iBAAO,KAAK,+BAA+B,OAAO,CAAC;AAAA,QACvD;AAEA,YAAI,2BAA2B,SAASC,0BAAyB,SAAS;AACtE,cAAI,WAAW,6BAA6B,OAAO;AACnD,cAAI,aAAa,+BAA+B,OAAO;AAEvD,iBAAO,kCAAkC,YAAY,QAAQ;AAAA,QACjE;AAEA,YAAI,2BAA2B,SAASC,0BAAyB,SAAS,UAAU,WAAW;AAC3F,iBAAO,gBAAgB,yBAAyB,OAAO,GAAG,UAAU,MAAM,SAAS;AAAA,QACvF;AAEA,YAAI,wBAAwB,SAASC,uBAAsB,QAAQ;AAE/D,cAAI,CAAC,yBAAyB,KAAK,MAAM,EAAG,QAAO;AAGnD,cAAIC,WAAU,OACT,MAAM,2BAA2B,EACjC,OAAO,CAAC,EACR,IAAI,SAASxN,OAAM;AAChB,mBAAOA,MAAK,KAAK,EAAE,QAAQ,sBAAsB,EAAE;AAAA,UACvD,CAAC,EACA,OAAO,SAASA,OAAM;AACnB,mBAAOA,MAAK;AAAA,UAChB,CAAC;AAEL,iBAAOwN,SAAQ,SAAS,UAAUA,SAAQA,SAAQ,SAAS,CAAC,CAAC,IAAI;AAAA,QACrE;AAEA,YAAI,wBAAwB,SAASC,uBAAsB,QAAQ;AAC/D,cAAI,mBAAmB,KAAK,MAAM,GAAG;AACjC,gBAAI,OAAO,OAAO,MAAM,QAAQ,EAAE,CAAC;AACnC,mBAAO,OAAO,SAAS,MAAM,EAAE,IAAI;AAAA,UACvC;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,0BAA0B,SAASC,yBAAwB,QAAQ;AACnE,cAAI,0BAA0B,KAAK,MAAM,GAAG;AACxC,gBAAIzJ,OAAM,OAAO,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,KAAK;AAC3C,mBAAOA,OAAM;AAAA,UACjB;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,yBAAyB,SAAS0J,wBAAuB,SAAS;AAClE,cAAIzG,QAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,MAAM;AAAA,UACV;AAEA,cAAI,OAAO,QAAQ,MAAM,IAAI;AAC7B,cAAI,4BAA4B;AAChC,cAAI,oBAAoB;AACxB,cAAI,iBAAiB;AACrB,cAAI;AACA,qBACQ,YAAY,KAAK,OAAO,QAAQ,EAAE,GAAG,OACzC,EAAE,6BAA6B,QAAQ,UAAU,KAAK,GAAG,OACzD,4BAA4B,MAC9B;AACE,kBAAI,SAAS,MAAM;AAEnB,kBAAIlH,QAAO,sBAAsB,MAAM;AACvC,kBAAIA,OAAM;AACN,gBAAAkH,MAAK,OAAOlH;AACZ;AAAA,cACJ;AAEA,kBAAI,OAAO,sBAAsB,MAAM;AACvC,kBAAI,MAAM;AACN,gBAAAkH,MAAK,OAAO;AACZ;AAAA,cACJ;AAEA,kBAAI,SAAS,wBAAwB,MAAM;AAC3C,kBAAI,QAAQ;AACR,gBAAAA,MAAK,SAAS;AACd;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ,SAAS,KAAK;AACV,gCAAoB;AACpB,6BAAiB;AAAA,UACrB,UAAE;AACE,gBAAI;AACA,kBAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;AACxD,0BAAU,OAAO;AAAA,cACrB;AAAA,YACJ,UAAE;AACE,kBAAI,mBAAmB;AACnB,sBAAM;AAAA,cACV;AAAA,YACJ;AAAA,UACJ;AAEA,iBAAOA;AAAA,QACX;AAEA,YAAI,mBAAmB,SAAS0G,kBAAiB,SAAS;AACtD,cAAIxO,SAAQ;AAAA,YACR,QAAQ;AAAA,YACR,UAAU;AAAA,YACV,UAAU;AAAA,YACV,MAAM;AAAA,YACN,WAAW;AAAA,YACX,UAAU;AAAA,YACV,SAAS;AAAA,UACb;AAEA,cAAI,cAAc,SAASyO,eAAc;AACrC,mBAAOzO,OAAM;AAAA,UACjB;AACA,cAAI0O,SAAQ,SAASA,SAAQ;AACzB,gBAAI1O,OAAM,WAAWA,OAAM,QAAQ,OAAO;AACtC,cAAAA,OAAM,QAAQ,MAAM;AAAA,YACxB;AAAA,UACJ;AAGA,cAAI,OAAO,SAAS2O,QAAO;AAEvB,gBAAI,SAAS3O,OAAM;AAEnB,gBAAI,KAAK,QAAQ,MAAM;AAGvB,gBAAI,kBAAkB,MAAM;AACxB,kBAAI,KAAK,QAAQ,MAAM;AAAA,YAC3B,WAAW,kBAAkB,MAAM;AAE/B,kBAAI,KAAK,QAAQ,gBAAgB,QAAQ,OAAO,IAAI,CAAC;AAAA,YACzD,WAAW,gBAAgB,MAAM,GAAG;AAEhC,kBAAI,KAAK,QAAQ,yBAAyB,MAAM,CAAC;AAAA,YACrD,OAAO;AAEH,sBAAQ,MAAM;AAAA,YAClB;AAAA,UACJ;AAGA,cAAI,UAAU,SAAS4O,SAAQ,KAAK;AAEhC,gBAAI,CAAC,SAAS;AACV,kBAAI,KAAK,SAAS;AAAA,gBACd,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,MAAM;AAAA,cACV,CAAC;AAED;AAAA,YACJ;AAGA,YAAA5O,OAAM,YAAY,KAAK,IAAI;AAG3B,YAAAA,OAAM,UAAU;AAAA,cACZ;AAAA,cACA,SAAS,UAAU;AAEf,gBAAAA,OAAM,WAAW,KAAK,IAAI,IAAIA,OAAM;AAGpC,gBAAAA,OAAM,WAAW;AAGjB,oBAAI,oBAAoB,MAAM;AAC1B,6BAAW;AAAA,oBACP;AAAA,oBACA,SAAS,QAAQ,mBAAmB,GAAG;AAAA,kBAC3C;AAAA,gBACJ;AAEA,oBAAI;AAAA,kBACA;AAAA;AAAA,kBAEA,oBAAoB,OAAO,WAAW,WAAW,SAAS,OAAO;AAAA,gBACrE;AAAA,cACJ;AAAA,cACA,SAAS+H,QAAO;AACZ,oBAAI;AAAA,kBACA;AAAA,kBACA,OAAOA,WAAU,WACX;AAAA,oBACI,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,MAAMA;AAAA,kBACV,IACAA;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,SAAS,YAAY,SAAS,OAAO;AAEjC,oBAAI,OAAO;AACP,kBAAA/H,OAAM,OAAO;AAAA,gBACjB;AAGA,gBAAAA,OAAM,WAAW,KAAK,IAAI,IAAIA,OAAM;AAGpC,oBAAI,CAAC,YAAY;AACb,kBAAAA,OAAM,WAAW;AACjB;AAAA,gBACJ;AAGA,gBAAAA,OAAM,WAAW,UAAU;AAG3B,oBAAI,KAAK,YAAYA,OAAM,QAAQ;AAAA,cACvC;AAAA,cACA,WAAW;AACP,oBAAI,KAAK,OAAO;AAAA,cACpB;AAAA,cACA,SAAS,UAAU;AACf,oBAAI,WAAW;AAAA,kBACX,OAAO,aAAa,WAAW,WAAW,SAAS;AAAA,gBACvD;AACA,oBAAI,KAAK,QAAQ;AAAA,kBACb,MAAMA,OAAM,QAAQ,SAAS;AAAA,kBAC7B,UAAU,SAAS;AAAA,kBACnB,QAAQ,SAAS;AAAA,gBACrB,CAAC;AAAA,cACL;AAAA,YACJ;AAAA,UACJ;AAEA,cAAI,MAAM,OAAO,OAAO,CAAC,GAAGmL,IAAG,GAAG;AAAA,YAC9B,WAAW,SAAS,UAAU,QAAQ;AAClC,qBAAQnL,OAAM,SAAS;AAAA,YAC3B;AAAA,YACA;AAAA;AAAA,YACA,OAAO0O;AAAA;AAAA,YACP;AAAA;AAAA,UACJ,CAAC;AAED,iBAAO;AAAA,QACX;AAEA,YAAI,QAAQ,SAASG,OAAM,QAAQ;AAC/B,iBAAO,WAAW,KAAK,MAAM;AAAA,QACjC;AAEA,YAAI,cAAc,SAASC,aAAYzO,OAAM,KAAK,SAAS;AACvD,cAAI,MAAM;AAAA,YACN,WAAW,SAAS,YAAY;AAAA,YAAC;AAAA,YACjC,YAAY,SAAS,aAAa;AAAA,YAAC;AAAA,YACnC,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,YAC3B,WAAW,SAAS,YAAY;AAAA,YAAC;AAAA,YACjC,SAAS,SAAS,UAAU;AAAA,YAAC;AAAA,YAC7B,SAAS,SAAS,UAAU;AAAA,YAAC;AAAA,YAC7B,OAAO,SAASqO,SAAQ;AACpB,wBAAU;AACV,kBAAI,MAAM;AAAA,YACd;AAAA,UACJ;AAGA,cAAI,UAAU;AACd,cAAI,kBAAkB;AAGtB,oBAAU,OAAO;AAAA,YACb;AAAA,cACI,QAAQ;AAAA,cACR,SAAS,CAAC;AAAA,cACV,iBAAiB;AAAA,YACrB;AAAA,YACA;AAAA,UACJ;AAGA,gBAAM,UAAU,GAAG;AAInB,cAAI,MAAM,QAAQ,MAAM,KAAKrO,OAAM;AAC/B,kBACI,KACA,MACA,mBAAmB,OAAOA,UAAS,WAAWA,QAAO,KAAK,UAAUA,KAAI,CAAC;AAAA,UACjF;AAGA,cAAI,MAAM,IAAI,eAAe;AAG7B,cAAI0O,WAAU,MAAM,QAAQ,MAAM,IAAI,MAAM,IAAI;AAChD,UAAAA,SAAQ,aAAa,SAASjI,IAAG;AAE7B,gBAAI,SAAS;AACT;AAAA,YACJ;AAEA,gBAAI,WAAWA,GAAE,kBAAkBA,GAAE,QAAQA,GAAE,KAAK;AAAA,UACxD;AAGA,cAAI,qBAAqB,WAAW;AAEhC,gBAAI,IAAI,aAAa,GAAG;AACpB;AAAA,YACJ;AAGA,gBAAI,IAAI,eAAe,KAAK,IAAI,WAAW,GAAG;AAC1C;AAAA,YACJ;AAEA,gBAAI,iBAAiB;AACjB;AAAA,YACJ;AAEA,8BAAkB;AAGlB,gBAAI,UAAU,GAAG;AAAA,UACrB;AAGA,cAAI,SAAS,WAAW;AAEpB,gBAAI,IAAI,UAAU,OAAO,IAAI,SAAS,KAAK;AACvC,kBAAI,OAAO,GAAG;AAAA,YAClB,OAAO;AACH,kBAAI,QAAQ,GAAG;AAAA,YACnB;AAAA,UACJ;AAGA,cAAI,UAAU,WAAW;AACrB,mBAAO,IAAI,QAAQ,GAAG;AAAA,UAC1B;AAGA,cAAI,UAAU,WAAW;AACrB,sBAAU;AACV,gBAAI,QAAQ;AAAA,UAChB;AAGA,cAAI,YAAY,WAAW;AACvB,mBAAO,IAAI,UAAU,GAAG;AAAA,UAC5B;AAGA,cAAI,KAAK,QAAQ,QAAQ,KAAK,IAAI;AAGlC,cAAI,MAAM,QAAQ,OAAO,GAAG;AACxB,gBAAI,UAAU,QAAQ;AAAA,UAC1B;AAGA,iBAAO,KAAK,QAAQ,OAAO,EAAE,QAAQ,SAAS,KAAK;AAC/C,gBAAI,QAAQ,SAAS,mBAAmB,QAAQ,QAAQ,GAAG,CAAC,CAAC;AAC7D,gBAAI,iBAAiB,KAAK,KAAK;AAAA,UACnC,CAAC;AAGD,cAAI,QAAQ,cAAc;AACtB,gBAAI,eAAe,QAAQ;AAAA,UAC/B;AAGA,cAAI,QAAQ,iBAAiB;AACzB,gBAAI,kBAAkB;AAAA,UAC1B;AAGA,cAAI,KAAKzG,KAAI;AAEb,iBAAO;AAAA,QACX;AAEA,YAAI,iBAAiB,SAAS2O,gBAAe,MAAM,MAAM,MAAM,SAAS;AACpE,iBAAO;AAAA,YACH;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,wBAAwB,SAASC,uBAAsB,IAAI;AAC3D,iBAAO,SAAS,KAAK;AACjB,eAAG,eAAe,SAAS,GAAG,WAAW,IAAI,sBAAsB,CAAC,CAAC;AAAA,UACzE;AAAA,QACJ;AAEA,YAAI,QAAQ,SAASC,OAAM,KAAK;AAC5B,iBAAO,KAAK,KAAK,GAAG;AAAA,QACxB;AACA,YAAI,WAAW,SAASC,YAAW;AAC/B,cAAI,MAAM;AACV,mBAAS,OAAO,UAAU,QAAQ,QAAQ,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACtF,kBAAM,IAAI,IAAI,UAAU,IAAI;AAAA,UAChC;AACA,gBAAM,QAAQ,SAAS,MAAM;AACzB,mBAAO,MAAM,GAAG,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,MAAM,GAAG,IAAI;AAAA,UACjE,CAAC;AACD,iBAAO;AAAA,QACX;AAEA,YAAI,sBAAsB,SAASC,uBAAsB;AACrD,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACjF,cAAI,SAAS,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AAEnD,cAAI,OAAO,WAAW,YAAY;AAC9B,mBAAO;AAAA,UACX;AAGA,cAAI,CAAC,UAAU,CAACtJ,UAAS,OAAO,GAAG,GAAG;AAClC,mBAAO;AAAA,UACX;AAGA,cAAI,SACA,OAAO,UACP,SAASoE,MAAK;AACV,mBAAOA;AAAA,UACX;AACJ,cAAI,UACA,OAAO,WACP,SAASA,MAAK;AACV,mBAAO;AAAA,UACX;AAGJ,iBAAO,SAAS,KAAK,MAAMnC,QAAO,UAAU2G,QAAO,SAAS;AAExD,gBAAI,UAAU;AAAA,cACV;AAAA,cACA,SAAS,QAAQ,OAAO,GAAG;AAAA,cAC3B,OAAO,OAAO,CAAC,GAAG,QAAQ;AAAA,gBACtB,cAAc;AAAA,cAClB,CAAC;AAAA,YACL;AAEA,oBAAQ,SAAS,SAAS,KAAK;AAE3B,kBAAIW,WAAU,IAAI,sBAAsB;AAGxC,kBAAI,WAAW,uBAAuBA,QAAO,EAAE,QAAQ,mBAAmB,GAAG;AAG7E;AAAA,gBACI;AAAA,kBACI;AAAA,kBACA,IAAI;AAAA,kBACJ,OAAO,WAAW,SACZ,OACA,gBAAgB,OAAO,IAAI,QAAQ,GAAG,QAAQ;AAAA,kBACpDA;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,UAAU,SAAS,KAAK;AAC5B,cAAAtH;AAAA,gBACI;AAAA,kBACI;AAAA,kBACA,IAAI;AAAA,kBACJ,QAAQ,IAAI,QAAQ,KAAK,IAAI;AAAA,kBAC7B,IAAI,sBAAsB;AAAA,gBAC9B;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,YAAY,SAAS,KAAK;AAC9B,sBAAQ,eAAe,WAAW,IAAI,QAAQ,MAAM,IAAI,sBAAsB,CAAC,CAAC;AAAA,YACpF;AAEA,oBAAQ,YAAY,sBAAsBA,MAAK;AAC/C,oBAAQ,aAAa;AACrB,oBAAQ,UAAU2G;AAGlB,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,OAAO;AAAA,UACP,SAAS;AAAA,QACb;AAYA,YAAI,qBAAqB,SAASY,oBAC9B,QACA,QACA1O,OACA8M,OACA,UACA,MACA3F,QACA,UACA2G,QACA,UACA,SACF;AAEE,cAAI,SAAS,CAAC;AACd,cAAI,kBAAkB,QAAQ,iBAC1B,cAAc,QAAQ,aACtB,YAAY,QAAQ,WACpB,mBAAmB,QAAQ;AAG/B,cAAI1O,SAAQ;AAAA,YACR,UAAU;AAAA,YACV,SAAS;AAAA,UACb;AAGA,cAAI,SACA,OAAO,UACP,SAAS,IAAI;AACT,mBAAO;AAAA,UACX;AACJ,cAAI,SACA,OAAO,UACP,SAAS,KAAK,QAAQ;AAClB,mBAAO,WAAW,SAAS,IAAI,kBAAkB,eAAe,IAAI,IAAI;AAAA,UAC5E;AACJ,cAAI,UACA,OAAO,WACP,SAASkK,MAAK;AACV,mBAAO;AAAA,UACX;AAGJ,cAAI,oBAAoB,SAASqF,mBAAkB,IAAI;AACnD,gBAAI,WAAW,IAAI,SAAS;AAG5B,gBAAI7I,UAAS,QAAQ,EAAG,UAAS,OAAO9F,OAAM,KAAK,UAAU,QAAQ,CAAC;AAEtE,gBAAI,UACA,OAAO,OAAO,YAAY,aACpB,OAAO,QAAQ8M,OAAM,QAAQ,IAC7B,OAAO;AAAA,cACH,CAAC;AAAA,cAED,OAAO;AAAA,cACP;AAAA,gBACI,iBAAiBA,MAAK;AAAA,cAC1B;AAAA,YACJ;AAEV,gBAAI,gBAAgB,OAAO,OAAO,CAAC,GAAG,QAAQ;AAAA,cAC1C;AAAA,YACJ,CAAC;AAGD,gBAAI,UAAU;AAAA,cACV,OAAO,QAAQ;AAAA,cACf,SAAS,QAAQ,OAAO,GAAG;AAAA,cAC3B;AAAA,YACJ;AAEA,oBAAQ,SAAS,SAAS,KAAK;AAC3B,qBAAO,GAAG,OAAO,KAAK,cAAc,MAAM,CAAC;AAAA,YAC/C;AAEA,oBAAQ,UAAU,SAAS,KAAK;AAC5B,qBAAO3F;AAAA,gBACH;AAAA,kBACI;AAAA,kBACA,IAAI;AAAA,kBACJ,QAAQ,IAAI,QAAQ,KAAK,IAAI;AAAA,kBAC7B,IAAI,sBAAsB;AAAA,gBAC9B;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,YAAY,sBAAsBA,MAAK;AAAA,UACnD;AAEA,cAAI,wBAAwB,SAASyH,uBAAsB,IAAI;AAC3D,gBAAI,aAAa,SAAS,QAAQ,YAAY,KAAKxP,OAAM,QAAQ;AAEjE,gBAAI,UACA,OAAO,OAAO,YAAY,aACpB,OAAO,QAAQA,OAAM,QAAQ,IAC7B,OAAO;AAAA,cACH,CAAC;AAAA,cAED,OAAO;AAAA,YACX;AAEV,gBAAI,gBAAgB;AAAA,cAChB;AAAA,cACA,QAAQ;AAAA,YACZ;AAEA,gBAAI,UAAU,YAAY,MAAM,YAAY,aAAa;AAEzD,oBAAQ,SAAS,SAAS,KAAK;AAC3B,qBAAO,GAAG,OAAO,KAAK,cAAc,MAAM,CAAC;AAAA,YAC/C;AAEA,oBAAQ,UAAU,SAAS,KAAK;AAC5B,qBAAO+H;AAAA,gBACH;AAAA,kBACI;AAAA,kBACA,IAAI;AAAA,kBACJ,QAAQ,IAAI,QAAQ,KAAK,IAAI;AAAA,kBAC7B,IAAI,sBAAsB;AAAA,gBAC9B;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,YAAY,sBAAsBA,MAAK;AAAA,UACnD;AAGA,cAAI,iBAAiB,KAAK,MAAM2F,MAAK,OAAO,SAAS;AACrD,mBAAS/F,KAAI,GAAGA,MAAK,gBAAgBA,MAAK;AACtC,gBAAI,SAASA,KAAI;AACjB,gBAAItH,QAAOqN,MAAK,MAAM,QAAQ,SAAS,WAAW,iCAAiC;AACnF,mBAAO/F,EAAC,IAAI;AAAA,cACR,OAAOA;AAAA,cACP,MAAMtH,MAAK;AAAA,cACX;AAAA,cACA,MAAMA;AAAA,cACN,MAAMqN;AAAA,cACN,UAAU;AAAA,cACV,SAAS,mBAAmB,gBAAgB;AAAA,cAC5C,QAAQ,YAAY;AAAA,cACpB,OAAO;AAAA,cACP,SAAS;AAAA,cACT,SAAS;AAAA,YACb;AAAA,UACJ;AAEA,cAAI,2BAA2B,SAAS+B,4BAA2B;AAC/D,mBAAO,KAAKzP,OAAM,QAAQ;AAAA,UAC9B;AAEA,cAAI,kBAAkB,SAAS0P,iBAAgB,OAAO;AAClD,mBAAO,MAAM,WAAW,YAAY,UAAU,MAAM,WAAW,YAAY;AAAA,UAC/E;AAEA,cAAI,eAAe,SAASC,cAAa,OAAO;AAE5C,gBAAI3P,OAAM,QAAS;AAGnB,oBAAQ,SAAS,OAAO,KAAK,eAAe;AAG5C,gBAAI,CAAC,OAAO;AAER,kBACI,OAAO,MAAM,SAAS4P,QAAO;AACzB,uBAAOA,OAAM,WAAW,YAAY;AAAA,cACxC,CAAC,GACH;AACE,yCAAyB;AAAA,cAC7B;AAGA;AAAA,YACJ;AAGA,kBAAM,SAAS,YAAY;AAC3B,kBAAM,WAAW;AAGjB,gBAAIC,UACA,YAAY,UACZ,SAAS,IAAI;AACT,qBAAO;AAAA,YACX;AACJ,gBAAIC,WACA,YAAY,WACZ,SAAS5F,MAAK;AACV,qBAAO;AAAA,YACX;AACJ,gBAAI6F,UAAS,YAAY,UAAU,WAAW;AAAA,YAAC;AAG/C,gBAAI,aAAa,SAAS,QAAQ,YAAY,KAAK/P,OAAM,QAAQ;AAEjE,gBAAI,UACA,OAAO,YAAY,YAAY,aACzB,YAAY,QAAQ,KAAK,IACzB,OAAO;AAAA,cACH,CAAC;AAAA,cAED,YAAY;AAAA,cACZ;AAAA,gBACI,gBAAgB;AAAA,gBAChB,iBAAiB,MAAM;AAAA,gBACvB,iBAAiB0N,MAAK;AAAA,gBACtB,eAAeA,MAAK;AAAA,cACxB;AAAA,YACJ;AAEV,gBAAI,UAAW,MAAM,UAAU;AAAA,cAC3BmC,QAAO,MAAM,IAAI;AAAA,cACjB;AAAA,cACA,OAAO,OAAO,CAAC,GAAG,aAAa;AAAA,gBAC3B;AAAA,cACJ,CAAC;AAAA,YACL;AAEA,oBAAQ,SAAS,SAAS,KAAK;AAE3B,cAAAE,QAAO,KAAK,MAAM,OAAO,OAAO,MAAM;AAGtC,oBAAM,SAAS,YAAY;AAG3B,oBAAM,UAAU;AAGhB,4BAAc;AAAA,YAClB;AAEA,oBAAQ,aAAa,SAAS,kBAAkBC,SAAQ,OAAO;AAC3D,oBAAM,WAAW,mBAAmBA,UAAS;AAC7C,kCAAoB;AAAA,YACxB;AAEA,oBAAQ,UAAU,SAAS,KAAK;AAC5B,oBAAM,SAAS,YAAY;AAC3B,oBAAM,UAAU;AAChB,oBAAM,QAAQF,SAAQ,IAAI,QAAQ,KAAK,IAAI;AAC3C,kBAAI,CAAC,kBAAkB,KAAK,GAAG;AAC3B,gBAAA/H;AAAA,kBACI;AAAA,oBACI;AAAA,oBACA,IAAI;AAAA,oBACJ+H,SAAQ,IAAI,QAAQ,KAAK,IAAI;AAAA,oBAC7B,IAAI,sBAAsB;AAAA,kBAC9B;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,YAAY,SAAS,KAAK;AAC9B,oBAAM,SAAS,YAAY;AAC3B,oBAAM,UAAU;AAChB,kBAAI,CAAC,kBAAkB,KAAK,GAAG;AAC3B,sCAAsB/H,MAAK,EAAE,GAAG;AAAA,cACpC;AAAA,YACJ;AAEA,oBAAQ,UAAU,WAAW;AACzB,oBAAM,SAAS,YAAY;AAC3B,oBAAM,UAAU;AAChB,cAAA2G,OAAM;AAAA,YACV;AAAA,UACJ;AAEA,cAAI,oBAAoB,SAASuB,mBAAkB,OAAO;AAEtD,gBAAI,MAAM,QAAQ,WAAW,EAAG,QAAO;AAGvC,kBAAM,SAAS,YAAY;AAC3B,yBAAa,MAAM,OAAO;AAC1B,kBAAM,UAAU,WAAW,WAAW;AAClC,2BAAa,KAAK;AAAA,YACtB,GAAG,MAAM,QAAQ,MAAM,CAAC;AAGxB,mBAAO;AAAA,UACX;AAEA,cAAI,sBAAsB,SAASC,uBAAsB;AAErD,gBAAI,uBAAuB,OAAO,OAAO,SAAS/N,IAAG,OAAO;AACxD,kBAAIA,OAAM,QAAQ,MAAM,aAAa,KAAM,QAAO;AAClD,qBAAOA,KAAI,MAAM;AAAA,YACrB,GAAG,CAAC;AAGJ,gBAAI,yBAAyB,KAAM,QAAO,SAAS,OAAO,GAAG,CAAC;AAG9D,gBAAI,YAAY,OAAO,OAAO,SAAS,OAAO,OAAO;AACjD,qBAAO,QAAQ,MAAM;AAAA,YACzB,GAAG,CAAC;AAGJ,qBAAS,MAAM,sBAAsB,SAAS;AAAA,UAClD;AAGA,cAAI,gBAAgB,SAASgO,iBAAgB;AACzC,gBAAI,kBAAkB,OAAO,OAAO,SAAS,OAAO;AAChD,qBAAO,MAAM,WAAW,YAAY;AAAA,YACxC,CAAC,EAAE;AACH,gBAAI,mBAAmB,EAAG;AAC1B,yBAAa;AAAA,UACjB;AAEA,cAAI,cAAc,SAASC,eAAc;AACrC,mBAAO,QAAQ,SAAS,OAAO;AAC3B,2BAAa,MAAM,OAAO;AAC1B,kBAAI,MAAM,SAAS;AACf,sBAAM,QAAQ,MAAM;AAAA,cACxB;AAAA,YACJ,CAAC;AAAA,UACL;AAGA,cAAI,CAACpQ,OAAM,UAAU;AACjB,8BAAkB,SAAS,UAAU;AAEjC,kBAAIA,OAAM,QAAS;AAGnB,uBAAS,QAAQ;AAGjB,cAAAA,OAAM,WAAW;AACjB,4BAAc;AAAA,YAClB,CAAC;AAAA,UACL,OAAO;AACH,kCAAsB,SAASqQ,SAAQ;AAEnC,kBAAIrQ,OAAM,QAAS;AAGnB,qBACK,OAAO,SAAS,OAAO;AACpB,uBAAO,MAAM,SAASqQ;AAAA,cAC1B,CAAC,EACA,QAAQ,SAAS,OAAO;AACrB,sBAAM,SAAS,YAAY;AAC3B,sBAAM,WAAW,MAAM;AAAA,cAC3B,CAAC;AAGL,4BAAc;AAAA,YAClB,CAAC;AAAA,UACL;AAEA,iBAAO;AAAA,YACH,OAAO,SAAS3B,SAAQ;AACpB,cAAA1O,OAAM,UAAU;AAChB,0BAAY;AAAA,YAChB;AAAA,UACJ;AAAA,QACJ;AAUA,YAAI,8BAA8B,SAASsQ,6BACvC,QACA,QACA1P,OACA,SACF;AACE,iBAAO,SAAS8M,OAAM,UAAU,MAAM3F,QAAO,UAAU2G,QAAO,UAAU;AAEpE,gBAAI,CAAChB,MAAM;AAGX,gBAAI,iBAAiB,QAAQ;AAC7B,gBAAI,oBAAoB,kBAAkBA,MAAK,OAAO,QAAQ;AAC9D,gBAAI,kBAAkB,mBAAmB,qBAAqB,QAAQ;AACtE,gBAAIA,iBAAgB,QAAQ;AACxB,qBAAO;AAAA,gBACH;AAAA,gBACA;AAAA,gBACA9M;AAAA,gBACA8M;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA3F;AAAA,gBACA;AAAA,gBACA2G;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ;AAGJ,gBAAI,SACA,OAAO,UACP,SAAS,IAAI;AACT,qBAAO;AAAA,YACX;AACJ,gBAAI,SACA,OAAO,UACP,SAASxE,MAAK;AACV,qBAAOA;AAAA,YACX;AACJ,gBAAI,UACA,OAAO,WACP,SAASA,MAAK;AACV,qBAAO;AAAA,YACX;AAEJ,gBAAI,UACA,OAAO,OAAO,YAAY,aACpB,OAAO,QAAQwD,OAAM,QAAQ,KAAK,CAAC,IACnC,OAAO;AAAA,cACH,CAAC;AAAA,cAED,OAAO;AAAA,YACX;AAEV,gBAAI,gBAAgB,OAAO,OAAO,CAAC,GAAG,QAAQ;AAAA,cAC1C;AAAA,YACJ,CAAC;AAGD,gBAAI,WAAW,IAAI,SAAS;AAG5B,gBAAIhH,UAAS,QAAQ,GAAG;AACpB,uBAAS,OAAO9F,OAAM,KAAK,UAAU,QAAQ,CAAC;AAAA,YAClD;AAGA,aAAC8M,iBAAgB,OAAO,CAAC,EAAE,MAAM,MAAM,MAAMA,MAAK,CAAC,IAAIA,OAAM,QAAQ,SAASlC,OAAM;AAChF,uBAAS;AAAA,gBACL5K;AAAA,gBACA4K,MAAK;AAAA,gBACLA,MAAK,SAAS,OAAOA,MAAK,KAAK,OAAO,KAAKA,MAAK,OAAOA,MAAK,KAAK;AAAA,cACrE;AAAA,YACJ,CAAC;AAGD,gBAAI,UAAU;AAAA,cACV,OAAO,QAAQ;AAAA,cACf,SAAS,QAAQ,OAAO,GAAG;AAAA,cAC3B;AAAA,YACJ;AACA,oBAAQ,SAAS,SAAS,KAAK;AAC3B;AAAA,gBACI;AAAA,kBACI;AAAA,kBACA,IAAI;AAAA,kBACJ,OAAO,IAAI,QAAQ;AAAA,kBACnB,IAAI,sBAAsB;AAAA,gBAC9B;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,UAAU,SAAS,KAAK;AAC5B,cAAAzD;AAAA,gBACI;AAAA,kBACI;AAAA,kBACA,IAAI;AAAA,kBACJ,QAAQ,IAAI,QAAQ,KAAK,IAAI;AAAA,kBAC7B,IAAI,sBAAsB;AAAA,gBAC9B;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,YAAY,sBAAsBA,MAAK;AAC/C,oBAAQ,aAAa;AACrB,oBAAQ,UAAU2G;AAGlB,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,0BAA0B,SAAS6B,2BAA0B;AAC7D,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACjF,cAAI,SAAS,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AACnD,cAAI3P,QAAO,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AACjD,cAAI,UAAU,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AAGpD,cAAI,OAAO,WAAW;AAClB,mBAAO,WAAW;AACd,uBACQ,OAAO,UAAU,QAAQ,SAAS,IAAI,MAAM,IAAI,GAAG,OAAO,GAC9D,OAAO,MACP,QACF;AACE,uBAAO,IAAI,IAAI,UAAU,IAAI;AAAA,cACjC;AACA,qBAAO,OAAO,MAAM,QAAQ,CAACA,KAAI,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;AAAA,YAChE;AAGJ,cAAI,CAAC,UAAU,CAACkF,UAAS,OAAO,GAAG,EAAG,QAAO;AAG7C,iBAAO,4BAA4B,QAAQ,QAAQlF,OAAM,OAAO;AAAA,QACpE;AAMA,YAAI,uBAAuB,SAAS4P,wBAAuB;AACvD,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACjF,cAAI,SAAS,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AAEnD,cAAI,OAAO,WAAW,YAAY;AAC9B,mBAAO;AAAA,UACX;AAGA,cAAI,CAAC,UAAU,CAAC1K,UAAS,OAAO,GAAG,GAAG;AAClC,mBAAO,SAAS,cAAc,MAAM;AAChC,qBAAO,KAAK;AAAA,YAChB;AAAA,UACJ;AAGA,cAAI,SACA,OAAO,UACP,SAASoE,MAAK;AACV,mBAAOA;AAAA,UACX;AACJ,cAAI,UACA,OAAO,WACP,SAASA,MAAK;AACV,mBAAO;AAAA,UACX;AAGJ,iBAAO,SAAS,cAAc,MAAMnC,QAAO;AACvC,gBAAI,UAAU;AAAA,cACV;AAAA,cACA,SAAS,OAAO;AAAA,cAChB;AAAA;AAAA,YACJ;AACA,oBAAQ,SAAS,SAAS,KAAK;AAC3B;AAAA,gBACI;AAAA,kBACI;AAAA,kBACA,IAAI;AAAA,kBACJ,OAAO,IAAI,QAAQ;AAAA,kBACnB,IAAI,sBAAsB;AAAA,gBAC9B;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,UAAU,SAAS,KAAK;AAC5B,cAAAA;AAAA,gBACI;AAAA,kBACI;AAAA,kBACA,IAAI;AAAA,kBACJ,QAAQ,IAAI,QAAQ,KAAK,IAAI;AAAA,kBAC7B,IAAI,sBAAsB;AAAA,gBAC9B;AAAA,cACJ;AAAA,YACJ;AAEA,oBAAQ,YAAY,sBAAsBA,MAAK;AAE/C,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,kBAAkB,SAAS0I,mBAAkB;AAC7C,cAAI,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC9E,cAAI,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC9E,iBAAO,MAAM,KAAK,OAAO,KAAK,MAAM;AAAA,QACxC;AAEA,YAAI,oCAAoC,SAASC,mCAAkC,IAAI;AACnF,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACnF,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACjF,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,cAAI,UAAU;AACd,cAAIxO,SAAQ,KAAK,IAAI;AAErB,cAAI,OAAO,SAAS+C,QAAO;AACvB,gBAAI,UAAU,KAAK,IAAI,IAAI/C;AAC3B,gBAAI,QAAQ,gBAAgB,SAAS,OAAO;AAE5C,gBAAI,UAAU,QAAQ,UAAU;AAC5B,sBAAQ,UAAU,QAAQ;AAAA,YAC9B;AAEA,gBAAI,WAAW,UAAU;AACzB,gBAAI,YAAY,KAAK,SAAS,QAAQ;AAClC,iBAAG,CAAC;AACJ;AAAA,YACJ;AAEA,eAAG,QAAQ;AAEX,sBAAU,WAAW+C,OAAM,KAAK;AAAA,UACpC;AAEA,cAAI,WAAW,EAAG,MAAK;AAEvB,iBAAO;AAAA,YACH,OAAO,SAAS0L,SAAQ;AACpB,2BAAa,OAAO;AAAA,YACxB;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,sBAAsB,SAASC,qBAAoB,WAAW,SAAS;AACvE,cAAI5Q,SAAQ;AAAA,YACR,UAAU;AAAA,YACV,mBAAmB;AAAA,YACnB,6BAA6B;AAAA,YAC7B,UAAU;AAAA,YACV,WAAW;AAAA,YACX,mBAAmB;AAAA,YACnB,UAAU;AAAA,YACV,SAAS;AAAA,YACT,UAAU;AAAA,UACd;AACA,cAAI,6BAA6B,QAAQ;AAEzC,cAAI+O,WAAU,SAASA,SAAQrB,OAAM,UAAU;AAC3C,gBAAI,aAAa,SAASmD,cAAa;AAInC,kBAAI7Q,OAAM,aAAa,KAAKA,OAAM,aAAa,KAAM;AAGrD,kBAAI,KAAK,YAAY,IAAI,YAAY,CAAC;AAAA,YAC1C;AAEA,gBAAI,aAAa,SAAS8Q,cAAa;AACnC,cAAA9Q,OAAM,WAAW;AACjB,kBAAI,KAAK,kBAAkBA,OAAM,SAAS,IAAI;AAAA,YAClD;AAGA,gBAAI,KAAK,OAAO;AAGhB,YAAAA,OAAM,YAAY,KAAK,IAAI;AAG3B,YAAAA,OAAM,8BAA8B;AAAA,cAChC,SAAS,UAAU;AACf,gBAAAA,OAAM,oBAAoB;AAC1B,gBAAAA,OAAM,oBAAoB,KAAK,IAAI,IAAIA,OAAM;AAE7C,2BAAW;AAIX,oBAAIA,OAAM,YAAYA,OAAM,sBAAsB,KAAK,CAACA,OAAM,UAAU;AAEpE,6BAAW;AAAA,gBACf;AAAA,cACJ;AAAA;AAAA;AAAA,cAGA,6BAA6B,gBAAgB,KAAK,IAAI,IAAI;AAAA,YAC9D;AAGA,YAAAA,OAAM,UAAU;AAAA;AAAA,cAEZ0N;AAAA;AAAA,cAGA;AAAA;AAAA;AAAA;AAAA,cAKA,SAAS,UAAU;AAGf,gBAAA1N,OAAM,WAAW0G,UAAS,QAAQ,IAC5B,WACA;AAAA,kBACI,MAAM;AAAA,kBACN,MAAM;AAAA,kBACN,MAAM,KAAK;AAAA,kBACX,SAAS,CAAC;AAAA,gBACd;AAGN,gBAAA1G,OAAM,WAAW,KAAK,IAAI,IAAIA,OAAM;AAGpC,gBAAAA,OAAM,WAAW;AAGjB,oBAAI,KAAK,QAAQA,OAAM,SAAS,IAAI;AAKpC,oBACI,CAAC,8BACA,8BAA8BA,OAAM,sBAAsB,GAC7D;AACE,6BAAW;AAAA,gBACf;AAAA,cACJ;AAAA;AAAA,cAGA,SAAS+H,QAAO;AAEZ,gBAAA/H,OAAM,4BAA4B,MAAM;AAGxC,oBAAI;AAAA,kBACA;AAAA,kBACA0G,UAASqB,MAAK,IACRA,SACA;AAAA,oBACI,MAAM;AAAA,oBACN,MAAM;AAAA,oBACN,MAAM,KAAKA;AAAA,kBACf;AAAA,gBACV;AAAA,cACJ;AAAA;AAAA,cAGA,SAAS,YAAY,SAAS,OAAO;AAEjC,gBAAA/H,OAAM,WAAW,KAAK,IAAI,IAAIA,OAAM;AAGpC,gBAAAA,OAAM,WAAW,aAAa,UAAU,QAAQ;AAEhD,2BAAW;AAAA,cACf;AAAA;AAAA,cAGA,WAAW;AAEP,gBAAAA,OAAM,4BAA4B,MAAM;AAGxC,oBAAI,KAAK,SAASA,OAAM,WAAWA,OAAM,SAAS,OAAO,IAAI;AAAA,cACjE;AAAA;AAAA,cAGA,SAAS,YAAY;AACjB,oBAAI,KAAK,YAAY,UAAU;AAAA,cACnC;AAAA,YACJ;AAAA,UACJ;AAEA,cAAI0O,SAAQ,SAASA,SAAQ;AAEzB,gBAAI,CAAC1O,OAAM,QAAS;AAGpB,YAAAA,OAAM,4BAA4B,MAAM;AAGxC,gBAAIA,OAAM,QAAQ,MAAO,CAAAA,OAAM,QAAQ,MAAM;AAG7C,YAAAA,OAAM,WAAW;AAAA,UACrB;AAEA,cAAI,QAAQ,SAAS+Q,SAAQ;AACzB,YAAArC,OAAM;AACN,YAAA1O,OAAM,WAAW;AACjB,YAAAA,OAAM,oBAAoB;AAC1B,YAAAA,OAAM,WAAW;AACjB,YAAAA,OAAM,YAAY;AAClB,YAAAA,OAAM,oBAAoB;AAC1B,YAAAA,OAAM,WAAW;AACjB,YAAAA,OAAM,UAAU;AAChB,YAAAA,OAAM,WAAW;AAAA,UACrB;AAEA,cAAI,cAAc,6BACZ,WAAW;AACP,mBAAOA,OAAM,WAAW,KAAK,IAAIA,OAAM,UAAUA,OAAM,iBAAiB,IAAI;AAAA,UAChF,IACA,WAAW;AACP,mBAAOA,OAAM,YAAY;AAAA,UAC7B;AAEN,cAAI,cAAc,6BACZ,WAAW;AACP,mBAAO,KAAK,IAAIA,OAAM,UAAUA,OAAM,iBAAiB;AAAA,UAC3D,IACA,WAAW;AACP,mBAAOA,OAAM;AAAA,UACjB;AAEN,cAAI,MAAM,OAAO,OAAO,CAAC,GAAGmL,IAAG,GAAG;AAAA,YAC9B,SAAS4D;AAAA;AAAA,YACT,OAAOL;AAAA;AAAA,YACP;AAAA,YACA;AAAA,YACA;AAAA,UACJ,CAAC;AAED,iBAAO;AAAA,QACX;AAEA,YAAI,8BAA8B,SAASsC,6BAA4BpQ,OAAM;AACzE,iBAAOA,MAAK,UAAU,GAAGA,MAAK,YAAY,GAAG,CAAC,KAAKA;AAAA,QACvD;AAEA,YAAI,iBAAiB,SAASqQ,gBAAe,QAAQ;AACjD,cAAI5Q,QAAO,CAAC,OAAO,MAAM,OAAO,MAAM,OAAO,IAAI;AAGjD,cAAI,kBAAkB,QAAQ,gBAAgB,MAAM,GAAG;AACnD,YAAAA,MAAK,CAAC,IAAI,OAAO,QAAQ,cAAc;AAAA,UAC3C,WAAW,gBAAgB,MAAM,GAAG;AAEhC,YAAAA,MAAK,CAAC,IAAI,OAAO;AACjB,YAAAA,MAAK,CAAC,IAAI,6BAA6B,MAAM;AAAA,UACjD,WAAWyF,UAAS,MAAM,GAAG;AAEzB,YAAAzF,MAAK,CAAC,IAAI,mBAAmB,MAAM;AACnC,YAAAA,MAAK,CAAC,IAAI;AACV,YAAAA,MAAK,CAAC,IAAI;AAAA,UACd;AAEA,iBAAO;AAAA,YACH,MAAMA,MAAK,CAAC;AAAA,YACZ,MAAMA,MAAK,CAAC;AAAA,YACZ,MAAMA,MAAK,CAAC;AAAA,UAChB;AAAA,QACJ;AAEA,YAAI,SAAS,SAAS6Q,QAAO,OAAO;AAChC,iBAAO,CAAC,EAAE,iBAAiB,QAAS,iBAAiB,QAAQ,MAAM;AAAA,QACvE;AAEA,YAAI,kBAAkB,SAASC,iBAAgB,KAAK;AAChD,cAAI,CAACzK,UAAS,GAAG,EAAG,QAAO;AAC3B,cAAI,SAASnB,SAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AAClC,mBAAS,OAAO,KAAK;AACjB,gBAAI,CAAC,IAAI,eAAe,GAAG,EAAG;AAC9B,gBAAI8E,KAAI,IAAI,GAAG;AACf,mBAAO,GAAG,IAAIA,MAAK3D,UAAS2D,EAAC,IAAI8G,iBAAgB9G,EAAC,IAAIA;AAAA,UAC1D;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,aAAa,SAAS+G,cAAa;AACnC,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACjF,cAAI,sBACA,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACxE,cAAI1D,QAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAE/E,cAAI7I,MAAK,YAAY;AAKrB,cAAI7E,SAAQ;AAAA;AAAA,YAER,UAAU;AAAA;AAAA,YAGV,QAAQ;AAAA;AAAA,YAGR,UAAU;AAAA;AAAA,YAGV,QAAQ;AAAA;AAAA,YAGR,MAAM0N;AAAA;AAAA,YAGN;AAAA;AAAA,YAGA,YAAY;AAAA;AAAA,YAGZ,mBAAmB;AAAA;AAAA,YAGnB,QAAQ,sBAAsB,WAAW,sBAAsB,WAAW;AAAA;AAAA,YAG1E,cAAc;AAAA,YACd,iBAAiB;AAAA,UACrB;AAGA,cAAI,iCAAiC;AAKrC,cAAI,WAAW,CAAC;AAGhB,cAAI,YAAY,SAAS2D,WAAU,QAAQ;AACvC,mBAAQrR,OAAM,SAAS;AAAA,UAC3B;AAGA,cAAIqL,QAAO,SAASA,MAAKnI,QAAO;AAC5B,gBAAIlD,OAAM,YAAYA,OAAM,OAAQ;AACpC,qBACQ,OAAO,UAAU,QAAQ,SAAS,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GACjF,OAAO,MACP,QACF;AACE,qBAAO,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,YACrC;AACA,gBAAI,KAAK,MAAM,KAAK,CAACkD,MAAK,EAAE,OAAO,MAAM,CAAC;AAAA,UAC9C;AAGA,cAAI,mBAAmB,SAASoO,oBAAmB;AAC/C,mBAAO,yBAAyBtR,OAAM,KAAK,IAAI;AAAA,UACnD;AACA,cAAI,cAAc,SAASuR,eAAc;AACrC,mBAAOvR,OAAM,KAAK;AAAA,UACtB;AACA,cAAI,cAAc,SAASwR,eAAc;AACrC,mBAAOxR,OAAM,KAAK;AAAA,UACtB;AACA,cAAI,UAAU,SAASyR,WAAU;AAC7B,mBAAOzR,OAAM;AAAA,UACjB;AAKA,cAAI,OAAO,SAAS2O,MAAK,QAAQ,QAAQ,QAAQ;AAE7C,YAAA3O,OAAM,SAAS;AAGf,gBAAI,SAAS,MAAM;AAGnB,gBAAIA,OAAM,MAAM;AACZ,kBAAI,SAAS,WAAW;AACxB;AAAA,YACJ;AAGA,YAAAA,OAAM,OAAO,eAAe,MAAM;AAGlC,mBAAO,GAAG,QAAQ,WAAW;AACzB,cAAAqL,MAAK,WAAW;AAAA,YACpB,CAAC;AAGD,mBAAO,GAAG,QAAQ,SAAS,MAAM;AAE7B,cAAArL,OAAM,KAAK,OAAO,KAAK;AAGvB,cAAAA,OAAM,KAAK,WAAW,KAAK;AAG3B,kBAAI,KAAK,QAAQ;AACb,yBAAS,WAAW;AACpB,gBAAAA,OAAM,sBAAsB,KAAK;AACjC,gBAAAA,OAAM,SAAS,WAAW;AAAA,cAC9B;AAGA,cAAAqL,MAAK,WAAW;AAAA,YACpB,CAAC;AAGD,mBAAO,GAAG,YAAY,SAAS,UAAU;AACrC,wBAAU,WAAW,OAAO;AAE5B,cAAAA,MAAK,iBAAiB,QAAQ;AAAA,YAClC,CAAC;AAGD,mBAAO,GAAG,SAAS,SAAStD,QAAO;AAC/B,wBAAU,WAAW,UAAU;AAE/B,cAAAsD,MAAK,sBAAsBtD,MAAK;AAAA,YACpC,CAAC;AAGD,mBAAO,GAAG,SAAS,WAAW;AAC1B,wBAAU,WAAW,IAAI;AACzB,cAAAsD,MAAK,YAAY;AAAA,YACrB,CAAC;AAGD,mBAAO,GAAG,QAAQ,SAASqC,OAAM;AAE7B,cAAA1N,OAAM,eAAe;AAGrB,kBAAI,UAAU,SAAS0R,SAAQ,QAAQ;AAEnC,gBAAA1R,OAAM,OAAO,OAAO,MAAM,IAAI,SAASA,OAAM;AAG7C,oBAAI,WAAW,WAAW,SAASA,OAAM,qBAAqB;AAC1D,4BAAU,WAAW,mBAAmB;AAAA,gBAC5C,OAAO;AACH,4BAAU,WAAW,IAAI;AAAA,gBAC7B;AAEA,gBAAAqL,MAAK,MAAM;AAAA,cACf;AAEA,kBAAItD,SAAQ,SAASA,OAAM,QAAQ;AAE/B,gBAAA/H,OAAM,OAAO0N;AACb,gBAAArC,MAAK,WAAW;AAEhB,0BAAU,WAAW,UAAU;AAC/B,gBAAAA,MAAK,mBAAmB,MAAM;AAAA,cAClC;AAGA,kBAAIrL,OAAM,qBAAqB;AAC3B,wBAAQ0N,KAAI;AACZ;AAAA,cACJ;AAGA,qBAAOA,OAAM,SAAS3F,MAAK;AAAA,YAC/B,CAAC;AAGD,mBAAO,UAAU,MAAM;AAGvB,YAAA/H,OAAM,eAAe;AAGrB,mBAAO,KAAK;AAAA,UAChB;AAEA,cAAI,YAAY,SAAS2R,aAAY;AACjC,gBAAI,CAAC3R,OAAM,cAAc;AACrB;AAAA,YACJ;AACA,YAAAA,OAAM,aAAa,KAAK;AAAA,UAC5B;AAEA,cAAI,YAAY,SAAS4R,aAAY;AACjC,gBAAI5R,OAAM,cAAc;AACpB,cAAAA,OAAM,aAAa,MAAM;AACzB;AAAA,YACJ;AACA,sBAAU,WAAW,IAAI;AACzB,YAAAqL,MAAK,YAAY;AAAA,UACrB;AAKA,cAAI0D,WAAU,SAASA,SAAQ,WAAW,WAAW;AAEjD,gBAAI/O,OAAM,mBAAmB;AACzB,cAAAA,OAAM,oBAAoB;AAC1B;AAAA,YACJ;AAGA,sBAAU,WAAW,UAAU;AAG/B,6CAAiC;AAGjC,gBAAI,EAAEA,OAAM,gBAAgB,OAAO;AAC/B,kBAAI,GAAG,QAAQ,WAAW;AACtB,gBAAA+O,SAAQ,WAAW,SAAS;AAAA,cAChC,CAAC;AACD;AAAA,YACJ;AAGA,sBAAU,GAAG,QAAQ,SAAS8C,sBAAqB;AAE/C,cAAA7R,OAAM,aAAa;AACnB,cAAAA,OAAM,sBAAsB6R;AAAA,YAChC,CAAC;AAGD,sBAAU,GAAG,YAAY,SAAS,YAAY;AAE1C,cAAA7R,OAAM,aAAa;AAAA,YACvB,CAAC;AAED,sBAAU,GAAG,kBAAkB,SAAS6R,sBAAqB;AAEzD,cAAA7R,OAAM,kBAAkB;AAGxB,cAAAA,OAAM,aAAa;AACnB,cAAAA,OAAM,sBAAsB6R;AAE5B,wBAAU,WAAW,mBAAmB;AACxC,cAAAxG,MAAK,oBAAoBwG,oBAAmB;AAAA,YAChD,CAAC;AAED,sBAAU,GAAG,SAAS,WAAW;AAC7B,cAAAxG,MAAK,eAAe;AAAA,YACxB,CAAC;AAED,sBAAU,GAAG,SAAS,SAAStD,QAAO;AAClC,cAAA/H,OAAM,kBAAkB;AACxB,wBAAU,WAAW,gBAAgB;AACrC,cAAAqL,MAAK,iBAAiBtD,MAAK;AAAA,YAC/B,CAAC;AAED,sBAAU,GAAG,SAAS,SAAS8J,sBAAqB;AAChD,cAAA7R,OAAM,kBAAkB;AAGxB,cAAAA,OAAM,sBAAsB6R;AAE5B,wBAAU,WAAW,IAAI;AACzB,cAAAxG,MAAK,eAAe;AAGpB,kBAAI,gCAAgC;AAChC,+CAA+B;AAAA,cACnC;AAAA,YACJ,CAAC;AAED,sBAAU,GAAG,YAAY,SAAS,UAAU;AACxC,cAAAA,MAAK,oBAAoB,QAAQ;AAAA,YACrC,CAAC;AAGD,gBAAI,UAAU,SAASqG,SAAQhE,OAAM;AAEjC,kBAAI1N,OAAM,SAAU;AAGpB,wBAAU,QAAQ0N,OAAM,OAAO,OAAO,CAAC,GAAG,QAAQ,CAAC;AAAA,YACvD;AAGA,gBAAI3F,SAAQ,QAAQ;AAGpB,sBAAU/H,OAAM,MAAM,SAAS+H,MAAK;AAGpC,YAAA/H,OAAM,kBAAkB;AAAA,UAC5B;AAEA,cAAI,oBAAoB,SAAS8R,qBAAoB;AACjD,YAAA9R,OAAM,oBAAoB;AAC1B,sBAAU,WAAW,iBAAiB;AAAA,UAC1C;AAEA,cAAI,kBAAkB,SAAS+R,mBAAkB;AAC7C,mBAAO,IAAI,QAAQ,SAASnK,UAAS;AACjC,kBAAI,CAAC5H,OAAM,iBAAiB;AACxB,gBAAAA,OAAM,oBAAoB;AAE1B,0BAAU,WAAW,IAAI;AACzB,gBAAAqL,MAAK,eAAe;AAEpB,gBAAAzD,SAAQ;AACR;AAAA,cACJ;AAEA,+CAAiC,SAASoK,kCAAiC;AACvE,gBAAApK,SAAQ;AAAA,cACZ;AAEA,cAAA5H,OAAM,gBAAgB,MAAM;AAAA,YAChC,CAAC;AAAA,UACL;AAKA,cAAI,SAAS,SAASiS,QAAO,kBAAkB,aAAa;AACxD,mBAAO,IAAI,QAAQ,SAASrK,UAAS,QAAQ;AAGzC,kBAAI,mBACA5H,OAAM,wBAAwB,OACxBA,OAAM,sBACNA,OAAM;AAGhB,kBAAI,qBAAqB,MAAM;AAC3B,gBAAA4H,SAAQ;AACR;AAAA,cACJ;AAGA;AAAA,gBACI;AAAA,gBACA,WAAW;AAEP,kBAAA5H,OAAM,sBAAsB;AAC5B,kBAAAA,OAAM,aAAa;AACnB,kBAAA4H,SAAQ;AAAA,gBACZ;AAAA,gBACA,SAASG,QAAO;AAEZ,sBAAI,CAAC,aAAa;AACd,oBAAAH,SAAQ;AACR;AAAA,kBACJ;AAGA,4BAAU,WAAW,uBAAuB;AAC5C,kBAAAyD,MAAK,sBAAsB;AAC3B,yBAAOtD,MAAK;AAAA,gBAChB;AAAA,cACJ;AAGA,wBAAU,WAAW,IAAI;AACzB,cAAAsD,MAAK,gBAAgB;AAAA,YACzB,CAAC;AAAA,UACL;AAGA,cAAI,eAAe,SAAS,YAAY,KAAK,OAAO,QAAQ;AACxD,gBAAI,OAAO,IAAI,MAAM,GAAG;AACxB,gBAAIjG,QAAO,KAAK,CAAC;AACjB,gBAAI,OAAO,KAAK,IAAI;AACpB,gBAAI/E,QAAO;AACX,iBAAK,QAAQ,SAAS6R,MAAK;AACvB,qBAAQ7R,QAAOA,MAAK6R,IAAG;AAAA,YAC3B,CAAC;AAGD,gBAAI,KAAK,UAAU7R,MAAK,IAAI,CAAC,MAAM,KAAK,UAAU,KAAK,EAAG;AAG1D,YAAAA,MAAK,IAAI,IAAI;AAGb,YAAAgL,MAAK,mBAAmB;AAAA,cACpB,KAAKjG;AAAA,cACL,OAAO,SAASA,KAAI;AAAA,cACpB;AAAA,YACJ,CAAC;AAAA,UACL;AAEA,cAAI,cAAc,SAAS+M,aAAY,KAAK;AACxC,mBAAO,gBAAgB,MAAM,SAAS,GAAG,IAAI,QAAQ;AAAA,UACzD;AAEA,cAAI,MAAM,OAAO;AAAA,YACb;AAAA,cACI,IAAI;AAAA,gBACA,KAAK,SAAStQ,OAAM;AAChB,yBAAOgD;AAAA,gBACX;AAAA,cACJ;AAAA,cACA,QAAQ;AAAA,gBACJ,KAAK,SAAShD,OAAM;AAChB,yBAAO;AAAA,gBACX;AAAA,gBACA,KAAK,SAASO,KAAI,OAAO;AACrB,yBAAQ,SAAS;AAAA,gBACrB;AAAA,cACJ;AAAA,cACA,UAAU;AAAA,gBACN,KAAK,SAASP,OAAM;AAChB,yBAAO7B,OAAM;AAAA,gBACjB;AAAA,cACJ;AAAA,cACA,YAAY;AAAA,gBACR,KAAK,SAAS6B,OAAM;AAChB,yBAAO7B,OAAM;AAAA,gBACjB;AAAA,cACJ;AAAA,cACA,QAAQ;AAAA,gBACJ,KAAK,SAAS6B,OAAM;AAChB,yBAAO7B,OAAM;AAAA,gBACjB;AAAA,cACJ;AAAA,cACA,UAAU;AAAA,gBACN,KAAK,SAAS6B,OAAM;AAChB,yBAAO7B,OAAM,KAAK;AAAA,gBACtB;AAAA,cACJ;AAAA,cACA,0BAA0B;AAAA,gBACtB,KAAK,SAAS6B,OAAM;AAChB,yBAAO,4BAA4B7B,OAAM,KAAK,IAAI;AAAA,gBACtD;AAAA,cACJ;AAAA,cACA,eAAe,EAAE,KAAK,iBAAiB;AAAA,cACvC,UAAU,EAAE,KAAK,YAAY;AAAA,cAC7B,UAAU,EAAE,KAAK,YAAY;AAAA,cAC7B,MAAM,EAAE,KAAK,QAAQ;AAAA,cACrB,cAAc;AAAA,gBACV,KAAK,SAAS6B,OAAM;AAChB,yBAAO7B,OAAM,KAAK;AAAA,gBACtB;AAAA,cACJ;AAAA,cAEA,QAAQ;AAAA,gBACJ,KAAK,SAAS6B,OAAM;AAChB,yBAAO7B,OAAM;AAAA,gBACjB;AAAA,cACJ;AAAA,cAEA;AAAA,cACA,aAAa,SAAS,YAAY,KAAK,OAAO,QAAQ;AAClD,oBAAI0G,UAAS,GAAG,GAAG;AACf,sBAAIrG,QAAO;AACX,yBAAO,KAAKA,KAAI,EAAE,QAAQ,SAAS6R,MAAK;AACpC,iCAAaA,MAAK7R,MAAK6R,IAAG,GAAG,KAAK;AAAA,kBACtC,CAAC;AACD,yBAAO;AAAA,gBACX;AACA,6BAAa,KAAK,OAAO,MAAM;AAC/B,uBAAO;AAAA,cACX;AAAA,cAEA,QAAQ,SAASE,QAAOxR,OAAM,SAAS;AACnC,uBAAQ,QAAQA,KAAI,IAAI;AAAA,cAC5B;AAAA,cAEA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cAEA;AAAA,cACA,SAASmO;AAAA,cACT;AAAA,YACJ;AAAA,YAEA5D,IAAG;AAAA,YACH;AAAA,cACI,QAAQ,SAAS,SAAS;AACtB,uBAAQnL,OAAM,SAAS;AAAA,cAC3B;AAAA,cAEA,SAAS,SAASqS,WAAU;AACxB,uBAAQrS,OAAM,WAAW;AAAA,cAC7B;AAAA,cACA,UAAU;AAAA,gBACN,KAAK,SAAS6B,OAAM;AAChB,yBAAO7B,OAAM;AAAA,gBACjB;AAAA,cACJ;AAAA,cAEA,SAAS,SAAS,UAAU;AACxB,uBAAQA,OAAM,WAAW;AAAA,cAC7B;AAAA,cACA,UAAU;AAAA,gBACN,KAAK,SAAS6B,OAAM;AAChB,yBAAO7B,OAAM;AAAA,gBACjB;AAAA,cACJ;AAAA;AAAA,cAGA,SAAS,SAAS,QAAQ0N,OAAM;AAC5B,uBAAQ1N,OAAM,OAAO0N;AAAA,cACzB;AAAA,YACJ;AAAA,UACJ;AAGA,cAAI,UAAU,aAAa,GAAG;AAE9B,iBAAO;AAAA,QACX;AAEA,YAAI,sBAAsB,SAAS4E,qBAAoB,OAAO,OAAO;AAEjE,cAAI,QAAQ,KAAK,GAAG;AAChB,mBAAO;AAAA,UACX;AAGA,cAAI,CAACxM,UAAS,KAAK,GAAG;AAClB,mBAAO;AAAA,UACX;AAGA,iBAAO,MAAM,UAAU,SAAS0F,OAAM;AAClC,mBAAOA,MAAK,OAAO;AAAA,UACvB,CAAC;AAAA,QACL;AAEA,YAAI,cAAc,SAAS+G,aAAY,OAAO,QAAQ;AAClD,cAAIvR,SAAQ,oBAAoB,OAAO,MAAM;AAC7C,cAAIA,SAAQ,GAAG;AACX;AAAA,UACJ;AACA,iBAAO,MAAMA,MAAK,KAAK;AAAA,QAC3B;AAEA,YAAI,YAAY,SAASwR,WAAU,KAAK,MAAMzK,QAAO,UAAU2G,QAAO,SAAS;AAC3E,cAAI,UAAU,YAAY,MAAM,KAAK;AAAA,YACjC,QAAQ;AAAA,YACR,cAAc;AAAA,UAClB,CAAC;AAED,kBAAQ,SAAS,SAAS,KAAK;AAE3B,gBAAIW,WAAU,IAAI,sBAAsB;AAGxC,gBAAI,WAAW,uBAAuBA,QAAO,EAAE,QAAQ,mBAAmB,GAAG;AAG7E;AAAA,cACI,eAAe,QAAQ,IAAI,QAAQ,gBAAgB,IAAI,UAAU,QAAQ,GAAGA,QAAO;AAAA,YACvF;AAAA,UACJ;AAEA,kBAAQ,UAAU,SAAS,KAAK;AAC5B,YAAAtH,OAAM,eAAe,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,sBAAsB,CAAC,CAAC;AAAA,UAC1F;AAEA,kBAAQ,YAAY,SAAS,KAAK;AAC9B,oBAAQ,eAAe,WAAW,IAAI,QAAQ,MAAM,IAAI,sBAAsB,CAAC,CAAC;AAAA,UACpF;AAEA,kBAAQ,YAAY,sBAAsBA,MAAK;AAC/C,kBAAQ,aAAa;AACrB,kBAAQ,UAAU2G;AAGlB,iBAAO;AAAA,QACX;AAEA,YAAI,mBAAmB,SAAS+D,kBAAiB,KAAK;AAClD,cAAI,IAAI,QAAQ,IAAI,MAAM,GAAG;AACzB,kBAAM,SAAS,WAAW;AAAA,UAC9B;AACA,iBAAO,IACF,YAAY,EACZ,QAAQ,SAAS,EAAE,EACnB,QAAQ,iBAAiB,IAAI,EAC7B,MAAM,GAAG,EAAE,CAAC;AAAA,QACrB;AAEA,YAAI,gBAAgB,SAASC,eAAc,KAAK;AAC5C,kBACK,IAAI,QAAQ,GAAG,IAAI,MAAM,IAAI,QAAQ,IAAI,IAAI,OAC9C,iBAAiB,SAAS,IAAI,MAAM,iBAAiB,GAAG;AAAA,QAEhE;AAEA,YAAI,eAAe,SAASC,cAAa,OAAO;AAC5C,iBAAO,WAAW;AACd,mBAAOvM,YAAW,KAAK,IAAI,MAAM,MAAM,QAAQ,SAAS,IAAI;AAAA,UAChE;AAAA,QACJ;AAEA,YAAI,aAAa,SAASwM,YAAWpH,OAAM;AACvC,iBAAO,CAAC,OAAOA,MAAK,IAAI;AAAA,QAC5B;AAEA,YAAI,cAAc,SAASqH,aAAYvS,WAAUN,QAAO;AACpD,uBAAaA,OAAM,iBAAiB;AACpC,UAAAA,OAAM,oBAAoB,WAAW,WAAW;AAC5C,YAAAM,UAAS,oBAAoB,EAAE,OAAO,eAAeN,OAAM,KAAK,EAAE,CAAC;AAAA,UACvE,GAAG,CAAC;AAAA,QACR;AAEA,YAAI,kBAAkB,SAAS8S,iBAAgB/P,KAAI;AAC/C,mBACQ,OAAO,UAAU,QAAQ,SAAS,IAAI,MAAM,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,OAAO,GACjF,OAAO,MACP,QACF;AACE,mBAAO,OAAO,CAAC,IAAI,UAAU,IAAI;AAAA,UACrC;AACA,iBAAO,IAAI,QAAQ,SAAS6E,UAAS;AACjC,gBAAI,CAAC7E,KAAI;AACL,qBAAO6E,SAAQ,IAAI;AAAA,YACvB;AAEA,gBAAI,SAAS7E,IAAG,MAAM,QAAQ,MAAM;AAEpC,gBAAI,UAAU,MAAM;AAChB,qBAAO6E,SAAQ,IAAI;AAAA,YACvB;AAEA,gBAAI,OAAO,WAAW,WAAW;AAC7B,qBAAOA,SAAQ,MAAM;AAAA,YACzB;AAEA,gBAAI,OAAO,OAAO,SAAS,YAAY;AACnC,qBAAO,KAAKA,QAAO;AAAA,YACvB;AAAA,UACJ,CAAC;AAAA,QACL;AAEA,YAAI,YAAY,SAASmL,WAAU/S,QAAO,SAAS;AAC/C,UAAAA,OAAM,MAAM,KAAK,SAAS0E,IAAGC,IAAG;AAC5B,mBAAO,QAAQ,cAAcD,EAAC,GAAG,cAAcC,EAAC,CAAC;AAAA,UACrD,CAAC;AAAA,QACL;AAGA,YAAI,0BAA0B,SAASqO,yBAAwBhT,QAAO,aAAa;AAC/E,iBAAO,WAAW;AACd,gBAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAChF,gBAAI,QAAQ,KAAK,OACb,eAAe,KAAK,SACpB,UAAU,iBAAiB,SAAS,WAAW;AAAA,YAAC,IAAI,cACpD,eAAe,KAAK,SACpB,UAAU,iBAAiB,SAAS,WAAW;AAAA,YAAC,IAAI,cACpD,UAAUkJ,0BAAyB,MAAM,CAAC,SAAS,WAAW,SAAS,CAAC;AAC5E,gBAAIsC,QAAO,eAAexL,OAAM,OAAO,KAAK;AAC5C,gBAAI,CAACwL,OAAM;AACP,sBAAQ;AAAA,gBACJ,OAAO,eAAe,SAAS,GAAG,gBAAgB;AAAA,gBAClD,MAAM;AAAA,cACV,CAAC;AAED;AAAA,YACJ;AACA,wBAAYA,OAAM,SAAS,SAAS,WAAW,CAAC,CAAC;AAAA,UACrD;AAAA,QACJ;AAEA,YAAI,UAAU,SAASzL,SAAQO,WAAU,OAAON,QAAO;AACnD,iBAAO;AAAA;AAAA;AAAA;AAAA,YAIH,WAAW,SAAS,YAAY;AAC5B,6BAAeA,OAAM,KAAK,EAAE,QAAQ,SAASwL,OAAM;AAC/C,gBAAAA,MAAK,OAAO;AACZ,gBAAAA,MAAK,UAAU;AACf,gBAAAA,MAAK,gBAAgB;AAAA,cACzB,CAAC;AAAA,YACL;AAAA;AAAA;AAAA;AAAA,YAKA,eAAe,SAAS,cAAc,OAAO;AACzC,kBAAI,cAAc,MAAM,OACpB,QAAQ,gBAAgB,SAAS,CAAC,IAAI;AAE1C,kBAAI,QAAQ,MAAM,IAAI,SAASkC,OAAM;AACjC,uBAAO;AAAA,kBACH,QAAQA,MAAK,SAASA,MAAK,SAASA;AAAA,kBACpC,SAASA,MAAK;AAAA,gBAClB;AAAA,cACJ,CAAC;AAID,kBAAI,cAAc,eAAe1N,OAAM,KAAK;AAE5C,0BAAY,QAAQ,SAASwL,OAAM;AAE/B,oBACI,CAAC,MAAM,KAAK,SAASkC,OAAM;AACvB,yBAAOA,MAAK,WAAWlC,MAAK,UAAUkC,MAAK,WAAWlC,MAAK;AAAA,gBAC/D,CAAC,GACH;AACE,kBAAAlL,UAAS,eAAe,EAAE,OAAOkL,OAAM,QAAQ,MAAM,CAAC;AAAA,gBAC1D;AAAA,cACJ,CAAC;AAGD,4BAAc,eAAexL,OAAM,KAAK;AACxC,oBAAM,QAAQ,SAAS0N,OAAM1M,QAAO;AAEhC,oBACI,YAAY,KAAK,SAASwK,OAAM;AAC5B,yBAAOA,MAAK,WAAWkC,MAAK,UAAUlC,MAAK,SAASkC,MAAK;AAAA,gBAC7D,CAAC;AAED;AAGJ,gBAAApN;AAAA,kBACI;AAAA,kBACA,OAAO,OAAO,CAAC,GAAGoN,OAAM;AAAA,oBACpB,mBAAmB,kBAAkB;AAAA,oBACrC,OAAO1M;AAAA,kBACX,CAAC;AAAA,gBACL;AAAA,cACJ,CAAC;AAAA,YACL;AAAA,YAEA,0BAA0B,SAAS,yBAAyB,OAAO;AAC/D,kBAAI6D,MAAK,MAAM,IACX,SAAS,MAAM,QACf,SAAS,MAAM;AAEnB,kBAAI,OAAO,OAAQ;AAGnB,2BAAa7E,OAAM,iBAAiB;AACpC,cAAAA,OAAM,oBAAoB,WAAW,WAAW;AAC5C,oBAAIwL,QAAO,YAAYxL,OAAM,OAAO6E,GAAE;AAGtC,oBAAI,CAAC,MAAM,UAAU,GAAG;AAEpB,mCAAiB,yBAAyB,OAAO;AAAA,oBAC7C,MAAM2G;AAAA,oBACN;AAAA,oBACA;AAAA,oBACA;AAAA,kBACJ,CAAC,EAAE,KAAK,SAAS,qBAAqB;AAElC,wBAAI,oBAAoB,MAAM,yBAAyB;AACvD,wBAAI;AACA,4CAAsB,kBAAkBA,OAAM,mBAAmB;AAErE,wBAAI,CAAC,oBAAqB;AAE1B,oBAAAlL;AAAA,sBACI;AAAA,sBACA;AAAA,wBACI,OAAOuE;AAAA,wBACP,MAAM2G;AAAA,wBACN,SAAS,SAAS,QAAQkC,OAAM;AAC5B,0BAAApN,UAAS,sBAAsB,EAAE,IAAIuE,KAAI,MAAM6I,MAAK,CAAC;AAAA,wBACzD;AAAA,sBACJ;AAAA,sBAEA;AAAA,oBACJ;AAAA,kBACJ,CAAC;AAED;AAAA,gBACJ;AAGA,oBAAIlC,MAAK,WAAW,WAAW,OAAO;AAClC,kBAAAlL,UAAS,iBAAiB;AAAA,oBACtB,IAAIkL,MAAK;AAAA,oBACT,OAAO;AAAA,oBACP,qBAAqBA,MAAK;AAAA,kBAC9B,CAAC;AAAA,gBACL;AAGA,oBAAI,SAAS,SAASyH,UAAS;AAE3B,6BAAW,WAAW;AAClB,oBAAA3S,UAAS,2BAA2B,EAAE,OAAOuE,IAAG,CAAC;AAAA,kBACrD,GAAG,EAAE;AAAA,gBACT;AAEA,oBAAI,SAAS,SAASoN,QAAO,UAAU;AACnC,kBAAAzG,MAAK;AAAA,oBACD;AAAA,sBACIxL,OAAM,QAAQ,OAAO;AAAA,sBACrBA,OAAM,QAAQ,OAAO;AAAA,oBACzB;AAAA,oBACA,MAAM,kBAAkB;AAAA,kBAC5B,EACK,KAAK,WAAW,SAAS,WAAW;AAAA,kBAAC,CAAC,EACtC,MAAM,WAAW;AAAA,kBAAC,CAAC;AAAA,gBAC5B;AAEA,oBAAI0O,SAAQ,SAASA,OAAM,UAAU;AACjC,kBAAAlD,MAAK,gBAAgB,EAAE,KAAK,WAAW,SAAS,WAAW;AAAA,kBAAC,CAAC;AAAA,gBACjE;AAGA,oBAAIA,MAAK,WAAW,WAAW,qBAAqB;AAChD,yBAAO,OAAOxL,OAAM,QAAQ,aAAa;AAAA,gBAC7C;AAGA,oBAAIwL,MAAK,WAAW,WAAW,YAAY;AACvC,yBAAOkD,OAAM1O,OAAM,QAAQ,aAAa;AAAA,gBAC5C;AAEA,oBAAIA,OAAM,QAAQ,eAAe;AAC7B,yBAAO;AAAA,gBACX;AAAA,cACJ,GAAG,CAAC;AAAA,YACR;AAAA,YAEA,WAAW,SAAS,UAAU,OAAO;AACjC,kBAAIO,SAAQ,MAAM,OACdS,SAAQ,MAAM;AAClB,kBAAIwK,QAAO,eAAexL,OAAM,OAAOO,MAAK;AAC5C,kBAAI,CAACiL,MAAM;AACX,kBAAI,eAAexL,OAAM,MAAM,QAAQwL,KAAI;AAC3C,cAAAxK,SAAQ,MAAMA,QAAO,GAAGhB,OAAM,MAAM,SAAS,CAAC;AAC9C,kBAAI,iBAAiBgB,OAAO;AAC5B,cAAAhB,OAAM,MAAM,OAAOgB,QAAO,GAAGhB,OAAM,MAAM,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC;AAAA,YACvE;AAAA,YAEA,MAAM,SAAS,KAAK,OAAO;AACvB,kBAAI,UAAU,MAAM;AACpB,wBAAUA,QAAO,OAAO;AACxB,cAAAM,UAAS,kBAAkB;AAAA,gBACvB,OAAO,MAAM,kBAAkB;AAAA,cACnC,CAAC;AAAA,YACL;AAAA,YAEA,WAAW,SAAS,UAAU,OAAO;AACjC,kBAAI,QAAQ,MAAM,OACdU,SAAQ,MAAM,OACd,oBAAoB,MAAM,mBAC1B,gBAAgB,MAAM,SACtB,UAAU,kBAAkB,SAAS,WAAW;AAAA,cAAC,IAAI,eACrD,gBAAgB,MAAM,SACtB,UAAU,kBAAkB,SAAS,WAAW;AAAA,cAAC,IAAI;AACzD,kBAAI,eAAeA;AAEnB,kBAAIA,WAAU,MAAM,OAAOA,WAAU,aAAa;AAC9C,oBAAI,iBAAiB,MAAM,0BAA0B;AACrD,oBAAI,aAAa,MAAM,iBAAiB;AACxC,+BAAe,mBAAmB,WAAW,IAAI;AAAA,cACrD;AAEA,kBAAI,eAAe,MAAM,mBAAmB;AAC5C,kBAAI,cAAc,SAASkS,aAAY,QAAQ;AAC3C,uBAAO,OAAO,MAAM,IACd,CAAC,aAAa,SAAS,OAAO,KAAK,YAAY,CAAC,IAChD,CAAC,QAAQ,MAAM;AAAA,cACzB;AACA,kBAAI,aAAa,MAAM,OAAO,WAAW;AAEzC,kBAAI,WAAW,WAAW,IAAI,SAAS,QAAQ;AAC3C,uBAAO,IAAI,QAAQ,SAAStL,UAAS,QAAQ;AACzC,kBAAAtH,UAAS,YAAY;AAAA,oBACjB;AAAA,oBACA,QAAQ,OAAO,UAAU;AAAA,oBACzB,SAASsH;AAAA,oBACT,SAAS;AAAA,oBACT,OAAO;AAAA,oBACP,SAAS,OAAO,WAAW,CAAC;AAAA,kBAChC,CAAC;AAAA,gBACL,CAAC;AAAA,cACL,CAAC;AAED,sBAAQ,IAAI,QAAQ,EACf,KAAK,OAAO,EACZ,MAAM,OAAO;AAAA,YACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOA,UAAU,SAAS,SAAS,OAAO;AAC/B,kBAAI,SAAS,MAAM,QACf,cAAc,MAAM,OACpB5G,SAAQ,gBAAgB,SAAS,KAAK,aACtC,oBAAoB,MAAM,mBAC1B,gBAAgB,MAAM,SACtB,UAAU,kBAAkB,SAAS,WAAW;AAAA,cAAC,IAAI,eACrD,gBAAgB,MAAM,SACtB,UAAU,kBAAkB,SAAS,WAAW;AAAA,cAAC,IAAI,eACrD,gBAAgB,MAAM,SACtB,UAAU,kBAAkB,SAAS,CAAC,IAAI;AAE9C,kBAAI,QAAQ,MAAM,GAAG;AACjB,wBAAQ;AAAA,kBACJ,OAAO,eAAe,SAAS,GAAG,WAAW;AAAA,kBAC7C,MAAM;AAAA,gBACV,CAAC;AAED;AAAA,cACJ;AAGA,kBACI,OAAO,MAAM,KACbhB,OAAM,QAAQ,aAAa,SAAS,OAAO,KAAK,YAAY,CAAC,GAC/D;AAEE;AAAA,cACJ;AAGA,kBAAI,CAAC,eAAeA,MAAK,GAAG;AAGxB,oBACIA,OAAM,QAAQ,iBACb,CAACA,OAAM,QAAQ,iBAAiB,CAACA,OAAM,QAAQ,cAClD;AACE,sBAAI+H,SAAQ,eAAe,WAAW,GAAG,WAAW;AAEpD,kBAAAzH,UAAS,uBAAuB;AAAA,oBAC5B;AAAA,oBACA,OAAOyH;AAAA,kBACX,CAAC;AAED,0BAAQ,EAAE,OAAOA,QAAO,MAAM,KAAK,CAAC;AAEpC;AAAA,gBACJ;AAIA,oBAAI,QAAQ,eAAe/H,OAAM,KAAK,EAAE,CAAC;AAGzC,oBACI,MAAM,WAAW,WAAW,uBAC5B,MAAM,WAAW,WAAW,yBAC9B;AACE,sBAAI,cAAc,MAAM,kBAAkB;AAC1C,wBACK;AAAA,oBACG;AAAA,sBACIA,OAAM,QAAQ,OAAO;AAAA,sBACrBA,OAAM,QAAQ,OAAO;AAAA,oBACzB;AAAA,oBACA;AAAA,kBACJ,EACC,KAAK,WAAW;AACb,wBAAI,CAAC,YAAa;AAGlB,oBAAAM,UAAS,YAAY;AAAA,sBACjB;AAAA,sBACA,OAAOU;AAAA,sBACP;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACJ,CAAC;AAAA,kBACL,CAAC,EACA,MAAM,WAAW;AAAA,kBAAC,CAAC;AAExB,sBAAI,YAAa;AAAA,gBACrB;AAGA,gBAAAV,UAAS,eAAe,EAAE,OAAO,MAAM,GAAG,CAAC;AAAA,cAC/C;AAGA,kBAAI,SACA,QAAQ,SAAS,UACX,WAAW,QACX,QAAQ,SAAS,UACjB,WAAW,QACX,WAAW;AAGrB,kBAAIkL,QAAO;AAAA;AAAA,gBAEP;AAAA;AAAA,gBAGA,WAAW,WAAW,QAAQ,OAAO;AAAA;AAAA,gBAGrC,QAAQ;AAAA,cACZ;AAGA,qBAAO,KAAK,QAAQ,YAAY,CAAC,CAAC,EAAE,QAAQ,SAAS,KAAK;AACtD,gBAAAA,MAAK,YAAY,KAAK,QAAQ,SAAS,GAAG,CAAC;AAAA,cAC/C,CAAC;AAGD,2BAAa,mBAAmBA,OAAM,EAAE,OAAc,UAAUlL,UAAS,CAAC;AAG1E,kBAAI,qBAAqB,MAAM,0BAA0B;AAGzD,kBAAI,CAACN,OAAM,QAAQ,2BAA2B;AAC1C,gBAAAgB,SAAQ,uBAAuB,WAAW,KAAKhB,OAAM,MAAM;AAAA,cAC/D;AAGA,yBAAWA,OAAM,OAAOwL,OAAMxK,MAAK;AAGnC,kBAAIoF,YAAW,kBAAkB,KAAK,QAAQ;AAC1C,0BAAUpG,QAAO,kBAAkB;AAAA,cACvC;AAGA,kBAAI6E,MAAK2G,MAAK;AAGd,cAAAA,MAAK,GAAG,QAAQ,WAAW;AACvB,gBAAAlL,UAAS,iBAAiB,EAAE,IAAIuE,IAAG,CAAC;AAAA,cACxC,CAAC;AAED,cAAA2G,MAAK,GAAG,aAAa,WAAW;AAC5B,gBAAAlL,UAAS,uBAAuB,EAAE,IAAIuE,IAAG,CAAC;AAAA,cAC9C,CAAC;AAED,cAAA2G,MAAK,GAAG,aAAa,WAAW;AAC5B,gBAAAlL,UAAS,wBAAwB,EAAE,IAAIuE,IAAG,CAAC;AAAA,cAC/C,CAAC;AAED,cAAA2G,MAAK,GAAG,iBAAiB,SAAS,UAAU;AACxC,gBAAAlL,UAAS,iCAAiC,EAAE,IAAIuE,KAAI,SAAmB,CAAC;AAAA,cAC5E,CAAC;AAED,cAAA2G,MAAK,GAAG,sBAAsB,SAASzD,QAAO;AAC1C,oBAAI,aAAa,aAAa/H,OAAM,QAAQ,kBAAkB,EAAE+H,MAAK;AAGrE,oBAAIA,OAAM,QAAQ,OAAOA,OAAM,OAAO,KAAK;AACvC,kBAAAzH,UAAS,0BAA0B;AAAA,oBAC/B,IAAIuE;AAAA,oBACJ,OAAOkD;AAAA,oBACP,QAAQ;AAAA,sBACJ,MAAM;AAAA,sBACN,KAAKA,OAAM,OAAO,OAAOA,OAAM,OAAO;AAAA,oBAC1C;AAAA,kBACJ,CAAC;AAGD,0BAAQ,EAAE,OAAOA,QAAO,MAAM,cAAcyD,KAAI,EAAE,CAAC;AACnD;AAAA,gBACJ;AAGA,gBAAAlL,UAAS,6BAA6B;AAAA,kBAClC,IAAIuE;AAAA,kBACJ,OAAOkD;AAAA,kBACP,QAAQ;AAAA,oBACJ,MAAM;AAAA,oBACN,KAAK/H,OAAM,QAAQ;AAAA,kBACvB;AAAA,gBACJ,CAAC;AAAA,cACL,CAAC;AAED,cAAAwL,MAAK,GAAG,mBAAmB,SAASzD,QAAO;AACvC,gBAAAzH,UAAS,0BAA0B;AAAA,kBAC/B,IAAIuE;AAAA,kBACJ,OAAOkD,OAAM;AAAA,kBACb,QAAQA,OAAM;AAAA,gBAClB,CAAC;AAED,wBAAQ,EAAE,OAAOA,OAAM,QAAQ,MAAM,cAAcyD,KAAI,EAAE,CAAC;AAAA,cAC9D,CAAC;AAED,cAAAA,MAAK,GAAG,cAAc,WAAW;AAC7B,gBAAAlL,UAAS,eAAe,EAAE,OAAOuE,IAAG,CAAC;AAAA,cACzC,CAAC;AAED,cAAA2G,MAAK,GAAG,aAAa,WAAW;AAC5B,gBAAAA,MAAK,GAAG,mBAAmB,SAAS,QAAQ;AACxC,sBAAI,CAAC,OAAOA,MAAK,IAAI,EAAG;AACxB,kBAAAlL,UAAS,4BAA4B,EAAE,IAAIuE,KAAI,OAAe,CAAC;AAAA,gBACnE,CAAC;AAED,gBAAAvE,UAAS,sBAAsB;AAAA,kBAC3B,OAAOuE;AAAA,kBACP,MAAM2G;AAAA,kBACN,MAAM;AAAA,oBACF;AAAA,oBACA;AAAA,kBACJ;AAAA,gBACJ,CAAC;AAAA,cACL,CAAC;AAED,cAAAA,MAAK,GAAG,QAAQ,WAAW;AACvB,oBAAI,YAAY,SAAS2H,WAAU,WAAW;AAE1C,sBAAI,CAAC,WAAW;AACZ,oBAAA7S,UAAS,eAAe;AAAA,sBACpB,OAAOuE;AAAA,oBACX,CAAC;AAED;AAAA,kBACJ;AAGA,kBAAA2G,MAAK,GAAG,mBAAmB,SAAS,QAAQ;AACxC,oBAAAlL,UAAS,4BAA4B,EAAE,IAAIuE,KAAI,OAAe,CAAC;AAAA,kBACnE,CAAC;AAID,mCAAiB,yBAAyB,OAAO;AAAA,oBAC7C,MAAM2G;AAAA,oBACN;AAAA,kBACJ,CAAC,EAAE,KAAK,SAAS,qBAAqB;AAElC,wBAAI,oBAAoB,MAAM,yBAAyB;AACvD,wBAAI;AACA,4CAAsB,kBAAkBA,OAAM,mBAAmB;AAErE,wBAAI,eAAe,SAAS4H,gBAAe;AACvC,sBAAA9S,UAAS,sBAAsB;AAAA,wBAC3B,OAAOuE;AAAA,wBACP,MAAM2G;AAAA,wBACN,MAAM;AAAA,0BACF;AAAA,0BACA;AAAA,wBACJ;AAAA,sBACJ,CAAC;AAED,kCAAYlL,WAAUN,MAAK;AAAA,oBAC/B;AAGA,wBAAI,qBAAqB;AAErB,sBAAAM;AAAA,wBACI;AAAA,wBACA;AAAA,0BACI,OAAOuE;AAAA,0BACP,MAAM2G;AAAA,0BACN,SAAS,SAASkG,SAAQhE,OAAM;AAC5B,4BAAApN,UAAS,sBAAsB,EAAE,IAAIuE,KAAI,MAAM6I,MAAK,CAAC;AACrD,yCAAa;AAAA,0BACjB;AAAA,wBACJ;AAAA,wBAEA;AAAA,sBACJ;AAEA;AAAA,oBACJ;AAEA,iCAAa;AAAA,kBACjB,CAAC;AAAA,gBACL;AAKA,iCAAiB,iBAAiBlC,OAAM,EAAE,OAAc,UAAUlL,UAAS,CAAC,EACvE,KAAK,WAAW;AACb,kCAAgB,MAAM,qBAAqB,GAAG,cAAckL,KAAI,CAAC,EAAE;AAAA,oBAC/D;AAAA,kBACJ;AAAA,gBACJ,CAAC,EACA,MAAM,SAAS1E,IAAG;AACf,sBAAI,CAACA,MAAK,CAACA,GAAE,SAAS,CAACA,GAAE,OAAQ,QAAO,UAAU,KAAK;AACvD,kBAAAxG,UAAS,0BAA0B;AAAA,oBAC/B,IAAIuE;AAAA,oBACJ,OAAOiC,GAAE;AAAA,oBACT,QAAQA,GAAE;AAAA,kBACd,CAAC;AAAA,gBACL,CAAC;AAAA,cACT,CAAC;AAED,cAAA0E,MAAK,GAAG,iBAAiB,WAAW;AAChC,gBAAAlL,UAAS,6BAA6B,EAAE,IAAIuE,IAAG,CAAC;AAAA,cACpD,CAAC;AAED,cAAA2G,MAAK,GAAG,oBAAoB,SAAS,UAAU;AAC3C,gBAAAlL,UAAS,oCAAoC,EAAE,IAAIuE,KAAI,SAAmB,CAAC;AAAA,cAC/E,CAAC;AAED,cAAA2G,MAAK,GAAG,iBAAiB,SAASzD,QAAO;AACrC,gBAAAzH,UAAS,mCAAmC;AAAA,kBACxC,IAAIuE;AAAA,kBACJ,OAAOkD;AAAA,kBACP,QAAQ;AAAA,oBACJ,MAAM,aAAa/H,OAAM,QAAQ,wBAAwB,EAAE+H,MAAK;AAAA,oBAChE,KAAK/H,OAAM,QAAQ;AAAA,kBACvB;AAAA,gBACJ,CAAC;AAAA,cACL,CAAC;AAED,cAAAwL,MAAK,GAAG,wBAAwB,SAASzD,QAAO;AAC5C,gBAAAzH,UAAS,0CAA0C;AAAA,kBAC/C,IAAIuE;AAAA,kBACJ,OAAOkD;AAAA,kBACP,QAAQ;AAAA,oBACJ,MAAM,aAAa/H,OAAM,QAAQ,8BAA8B,EAAE+H,MAAK;AAAA,oBACtE,KAAK/H,OAAM,QAAQ;AAAA,kBACvB;AAAA,gBACJ,CAAC;AAAA,cACL,CAAC;AAED,cAAAwL,MAAK,GAAG,oBAAoB,SAAS,qBAAqB;AACtD,gBAAAlL,UAAS,gCAAgC;AAAA,kBACrC,IAAIuE;AAAA,kBACJ,OAAO;AAAA,kBACP;AAAA,gBACJ,CAAC;AAED,gBAAAvE,UAAS,oBAAoB,EAAE,IAAIuE,KAAI,OAAO,oBAAoB,CAAC;AAAA,cACvE,CAAC;AAED,cAAA2G,MAAK,GAAG,iBAAiB,WAAW;AAChC,gBAAAlL,UAAS,6BAA6B,EAAE,IAAIuE,IAAG,CAAC;AAAA,cACpD,CAAC;AAED,cAAA2G,MAAK,GAAG,kBAAkB,WAAW;AACjC,gBAAAlL,UAAS,8BAA8B,EAAE,IAAIuE,IAAG,CAAC;AACjD,gBAAAvE,UAAS,oBAAoB,EAAE,IAAIuE,KAAI,OAAO,KAAK,CAAC;AAAA,cACxD,CAAC;AAGD,cAAAvE,UAAS,gBAAgB;AAAA,gBACrB,IAAIuE;AAAA,gBACJ,OAAO7D;AAAA,gBACP;AAAA,cACJ,CAAC;AAED,0BAAYV,WAAUN,MAAK;AAG3B,kBAAI,QAAQA,OAAM,QAAQ,UAAU,CAAC,GACjC,MAAM,MAAM,KACZ,OAAO,MAAM,MACb,UAAU,MAAM,SAChBqT,SAAQ,MAAM;AAElB,cAAA7H,MAAK;AAAA,gBACD;AAAA;AAAA,gBAGA;AAAA,kBACI,WAAW,WAAW;AAAA;AAAA,oBAEhB1F,UAAS,MAAM,KAAK,cAAc,MAAM,IACpCuN,SACI,oBAAoB,KAAKA,MAAK,IAC9B,YACJ;AAAA;AAAA;AAAA,oBAEN,WAAW,WAAW,QACpB,oBAAoB,KAAK,OAAO,IAChC,oBAAoB,KAAK,IAAI;AAAA;AAAA;AAAA,gBACvC;AAAA;AAAA,gBAGA,SAAS3F,OAAMgE,UAAS3J,QAAO;AAE3B,mCAAiB,aAAa2F,OAAM,EAAE,MAAa,CAAC,EAC/C,KAAKgE,QAAO,EACZ,MAAM3J,MAAK;AAAA,gBACpB;AAAA,cACJ;AAAA,YACJ;AAAA,YAEA,wBAAwB,SAAS,uBAAuB,OAAO;AAC3D,kBAAIyD,QAAO,MAAM,MACb,UAAU,MAAM,SAChB,gBAAgB,MAAM,SACtB,UAAU,kBAAkB,SAAS,WAAW;AAAA,cAAC,IAAI;AAEzD,kBAAI,MAAM;AAAA,gBACN,OAAO,eAAe,SAAS,GAAG,gBAAgB;AAAA,gBAClD,MAAM;AAAA,cACV;AAGA,kBAAIA,MAAK,SAAU,QAAO,QAAQ,GAAG;AAGrC,+BAAiB,kBAAkBA,MAAK,MAAM,EAAE,OAAc,MAAMA,MAAK,CAAC,EAAE;AAAA,gBACxE,SAAS,QAAQ;AACb,mCAAiB,2BAA2B,QAAQ;AAAA,oBAChD;AAAA,oBACA,MAAMA;AAAA,kBACV,CAAC,EAAE,KAAK,SAAS8H,SAAQ;AAErB,wBAAI9H,MAAK,SAAU,QAAO,QAAQ,GAAG;AAGrC,4BAAQ8H,OAAM;AAAA,kBAClB,CAAC;AAAA,gBACL;AAAA,cACJ;AAAA,YACJ;AAAA,YAEA,oBAAoB,SAAS,mBAAmB,QAAQ;AACpD,kBAAI9H,QAAO,OAAO,MACdnL,QAAO,OAAO;AAClB,kBAAI,UAAUA,MAAK,SACf,SAASA,MAAK;AAGlB,kBAAI,qBAAqB,MAAM,0BAA0B;AACzD,kBAAI+F,YAAW,kBAAkB,KAAK,QAAQ;AAC1C,0BAAUpG,QAAO,kBAAkB;AAAA,cACvC;AAGA,cAAAM,UAAS,iBAAiB;AAAA,gBACtB,IAAIkL,MAAK;AAAA,gBACT,OAAO;AAAA,gBACP,qBAAqBA,MAAK,WAAW,WAAW,QAAQ,OAAO;AAAA,cACnE,CAAC;AAID,sBAAQ,cAAcA,KAAI,CAAC;AAG3B,kBAAIA,MAAK,WAAW,WAAW,OAAO;AAClC,gBAAAlL,UAAS,uBAAuB,EAAE,IAAIkL,MAAK,GAAG,CAAC;AAC/C;AAAA,cACJ;AAGA,kBAAIA,MAAK,WAAW,WAAW,OAAO;AAClC,gBAAAlL,UAAS,gCAAgC;AAAA,kBACrC,IAAIkL,MAAK;AAAA,kBACT,OAAO;AAAA,kBACP,qBAAqB;AAAA,gBACzB,CAAC;AAED,gBAAAlL,UAAS,oBAAoB;AAAA,kBACzB,IAAIkL,MAAK;AAAA,kBACT,OAAOA,MAAK,YAAY;AAAA,gBAC5B,CAAC;AAED;AAAA,cACJ;AAGA,kBAAI,MAAM,UAAU,KAAKxL,OAAM,QAAQ,eAAe;AAClD,gBAAAM,UAAS,2BAA2B,EAAE,OAAOkL,MAAK,GAAG,CAAC;AAAA,cAC1D;AAAA,YACJ;AAAA,YAEA,iBAAiB,wBAAwBxL,QAAO,SAASwL,OAAM;AAE3D,cAAAA,MAAK,UAAU;AAAA,YACnB,CAAC;AAAA,YAED,sBAAsB,wBAAwBxL,QAAO,SAASwL,OAAM,UAAU,SAAS;AACnF,cAAAlL;AAAA,gBACI;AAAA,gBACA;AAAA,kBACI,OAAOkL,MAAK;AAAA,kBACZ,MAAMA;AAAA,kBACN,SAAS,SAAS,QAAQkC,OAAM;AAC5B,oBAAApN,UAAS,sBAAsB,EAAE,IAAIkL,MAAK,IAAI,MAAMkC,MAAK,CAAC;AAC1D,6BAAS;AAAA,sBACL,MAAMlC;AAAA,sBACN,QAAQkC;AAAA,oBACZ,CAAC;AAAA,kBACL;AAAA,kBACA;AAAA,gBACJ;AAAA,gBAEA;AAAA,cACJ;AAAA,YACJ,CAAC;AAAA,YAED,yBAAyB,wBAAwB1N,QAAO,SACpDwL,OACA,SACA,SACF;AAEE,kBAAI;AAAA;AAAA,gBAEAA,MAAK,WAAW,WAAW;AAAA,gBAE3BA,MAAK,WAAW,WAAW;AAAA;AAG/B,kBAAI,CAAC,8BAA8B;AAC/B,oBAAI,aAAa,SAAS+H,cAAa;AACnC,yBAAOjT,UAAS,2BAA2B;AAAA,oBACvC,OAAOkL;AAAA,oBACP;AAAA,oBACA;AAAA,kBACJ,CAAC;AAAA,gBACL;AAEA,oBAAIuD,WAAU,SAASA,WAAU;AAC7B,yBAAO,SAAS,SAAS,WAAW,IAAI,WAAW,YAAY,EAAE;AAAA,gBACrE;AAGA,oBACIvD,MAAK,WAAW,WAAW,uBAC3BA,MAAK,WAAW,WAAW,yBAC7B;AACE,kBAAAA,MAAK;AAAA,oBACD;AAAA,sBACIxL,OAAM,QAAQ,OAAO;AAAA,sBACrBA,OAAM,QAAQ,OAAO;AAAA,oBACzB;AAAA,oBACA,MAAM,kBAAkB;AAAA,kBAC5B,EACK,KAAK+O,QAAO,EACZ,MAAM,WAAW;AAAA,kBAAC,CAAC;AAAA,gBAC5B,WAAWvD,MAAK,WAAW,WAAW,YAAY;AAC9C,kBAAAA,MAAK,gBAAgB,EAAE,KAAKuD,QAAO;AAAA,gBACvC;AAEA;AAAA,cACJ;AAGA,kBAAIvD,MAAK,WAAW,WAAW,kBAAmB;AAElD,cAAAA,MAAK,kBAAkB;AAEvB,cAAAlL,UAAS,+BAA+B,EAAE,IAAIkL,MAAK,GAAG,CAAC;AAEvD,cAAAlL,UAAS,gBAAgB,EAAE,OAAOkL,OAAM,SAAkB,QAAiB,GAAG,IAAI;AAAA,YACtF,CAAC;AAAA,YAED,cAAc,wBAAwBxL,QAAO,SAASwL,OAAM,SAAS,SAAS;AAC1E,kBAAI,qBAAqB,MAAM,0BAA0B;AACzD,kBAAI,sBAAsB,MAAM,uBAAuB,WAAW,UAAU,EACvE;AAGL,kBAAI,wBAAwB,oBAAoB;AAE5C,gBAAAxL,OAAM,gBAAgB,KAAK;AAAA,kBACvB,IAAIwL,MAAK;AAAA,kBACT;AAAA,kBACA;AAAA,gBACJ,CAAC;AAGD;AAAA,cACJ;AAGA,kBAAIA,MAAK,WAAW,WAAW,WAAY;AAE3C,kBAAI,cAAc,SAASgI,eAAc;AAErC,oBAAI,aAAaxT,OAAM,gBAAgB,MAAM;AAG7C,oBAAI,CAAC,WAAY;AAGjB,oBAAI6E,MAAK,WAAW,IAChB6M,WAAU,WAAW,SACrB+B,WAAU,WAAW;AACzB,oBAAI,gBAAgB,eAAezT,OAAM,OAAO6E,GAAE;AAGlD,oBAAI,CAAC,iBAAiB,cAAc,UAAU;AAC1C,kBAAA2O,aAAY;AACZ;AAAA,gBACJ;AAGA,gBAAAlT;AAAA,kBACI;AAAA,kBACA,EAAE,OAAOuE,KAAI,SAAS6M,UAAS,SAAS+B,SAAQ;AAAA,kBAChD;AAAA,gBACJ;AAAA,cACJ;AAGA,cAAAjI,MAAK,OAAO,oBAAoB,WAAW;AACvC,wBAAQ,cAAcA,KAAI,CAAC;AAC3B,4BAAY;AAIZ,oBAAI,SAASxL,OAAM,QAAQ;AAC3B,oBAAI,gBAAgBA,OAAM,QAAQ;AAClC,oBACI,iBACAwL,MAAK,WAAW,WAAW,SAC3BpF,YAAW,OAAO,MAAM,GAC1B;AACE,sBAAIsN,QAAO,SAASA,QAAO;AAAA,kBAAC;AAC5B,kBAAAlI,MAAK,SAAS,WAAW;AACzB,kBAAAxL,OAAM,QAAQ,OAAO,OAAOwL,MAAK,QAAQkI,OAAMA,KAAI;AAAA,gBACvD;AAGA,oBAAI,oBACA,MAAM,uBAAuB,WAAW,mBAAmB,EAAE,WAC7D1T,OAAM,MAAM;AAChB,oBAAI,mBAAmB;AACnB,kBAAAM,UAAS,kCAAkC;AAAA,gBAC/C;AAAA,cACJ,CAAC;AAGD,cAAAkL,MAAK,OAAO,iBAAiB,SAASzD,QAAO;AACzC,wBAAQ,EAAE,OAAOA,QAAO,MAAM,cAAcyD,KAAI,EAAE,CAAC;AACnD,4BAAY;AAAA,cAChB,CAAC;AAGD,kBAAI,UAAUxL,OAAM;AACpB,cAAAwL,MAAK;AAAA,gBACD;AAAA,kBACI;AAAA,oBACI,QAAQ,OAAO;AAAA,oBACf,QAAQ,OAAO;AAAA,oBACf,QAAQ;AAAA,oBACR;AAAA,sBACI,iBAAiBA,MAAK;AAAA,sBACtB,aAAa,QAAQ,OAAO;AAAA,sBAC5B,cAAc,QAAQ;AAAA,sBACtB,YAAY,QAAQ;AAAA,sBACpB,WAAW,QAAQ;AAAA,sBACnB,kBAAkB,QAAQ;AAAA,oBAC9B;AAAA,kBACJ;AAAA,kBAEA;AAAA,oBACI,4BAA4B,MAAM,mCAAmC;AAAA,kBACzE;AAAA,gBACJ;AAAA;AAAA,gBAGA,SAASkC,OAAMgE,UAAS3J,QAAO;AAE3B,mCAAiB,kBAAkB2F,OAAM,EAAE,OAAc,MAAMlC,MAAK,CAAC,EAChE,KAAK,SAASkC,OAAM;AACjB,oBAAApN,UAAS,sBAAsB,EAAE,IAAIkL,MAAK,IAAI,MAAMkC,MAAK,CAAC;AAE1D,oBAAAgE,SAAQhE,KAAI;AAAA,kBAChB,CAAC,EACA,MAAM3F,MAAK;AAAA,gBACpB;AAAA,cACJ;AAAA,YACJ,CAAC;AAAA,YAED,uBAAuB,wBAAwB/H,QAAO,SAASwL,OAAM;AACjE,cAAAlL,UAAS,2BAA2B,EAAE,OAAOkL,MAAK,CAAC;AAAA,YACvD,CAAC;AAAA,YAED,qBAAqB,wBAAwBxL,QAAO,SAASwL,OAAM;AAC/D,8BAAgB,MAAM,wBAAwB,GAAG,cAAcA,KAAI,CAAC,EAAE,KAAK,SACvE,cACF;AACE,oBAAI,CAAC,cAAc;AACf;AAAA,gBACJ;AACA,gBAAAlL,UAAS,eAAe,EAAE,OAAOkL,MAAK,CAAC;AAAA,cAC3C,CAAC;AAAA,YACL,CAAC;AAAA,YAED,cAAc,wBAAwBxL,QAAO,SAASwL,OAAM;AACxD,cAAAA,MAAK,QAAQ;AAAA,YACjB,CAAC;AAAA,YAED,aAAa,wBAAwBxL,QAAO,SAASwL,OAAM,SAAS,SAAS,SAAS;AAClF,kBAAI,iBAAiB,SAASmI,kBAAiB;AAE3C,oBAAI9O,MAAK2G,MAAK;AAGd,4BAAYxL,OAAM,OAAO6E,GAAE,EAAE,QAAQ;AAGrC,gBAAAvE,UAAS,mBAAmB,EAAE,OAAO,MAAM,IAAIuE,KAAI,MAAM2G,MAAK,CAAC;AAG/D,4BAAYlL,WAAUN,MAAK;AAG3B,wBAAQ,cAAcwL,KAAI,CAAC;AAAA,cAC/B;AAIA,kBAAI,SAASxL,OAAM,QAAQ;AAC3B,kBACIwL,MAAK,WAAW,WAAW,SAC3B,UACApF,YAAW,OAAO,MAAM,KACxB,QAAQ,WAAW,OACrB;AACE,gBAAA9F,UAAS,yBAAyB,EAAE,IAAIkL,MAAK,GAAG,CAAC;AAEjD,uBAAO;AAAA,kBACHA,MAAK;AAAA,kBACL,WAAW;AACP,2BAAO,eAAe;AAAA,kBAC1B;AAAA,kBACA,SAAS,QAAQ;AACb,oBAAAlL,UAAS,+BAA+B;AAAA,sBACpC,IAAIkL,MAAK;AAAA,sBACT,OAAO,eAAe,SAAS,GAAG,QAAQ,IAAI;AAAA,sBAC9C,QAAQ;AAAA,wBACJ,MAAM,aAAaxL,OAAM,QAAQ,oBAAoB,EAAE,MAAM;AAAA,wBAC7D,KAAKA,OAAM,QAAQ;AAAA,sBACvB;AAAA,oBACJ,CAAC;AAAA,kBACL;AAAA,gBACJ;AAAA,cACJ,OAAO;AAEH,oBACK,QAAQ,UACLwL,MAAK,WAAW,WAAW,SAC3BA,MAAK,aAAa;AAAA;AAAA;AAAA,gBAIrBxL,OAAM,QAAQ,gBAAgBwL,MAAK,KAAK,OAAOxL,OAAM,QAAQ,aAC7DA,OAAM,QAAQ,gBAAgBA,OAAM,QAAQ,YAC/C;AACE,kBAAAwL,MAAK;AAAA,oBACD;AAAA,sBACIxL,OAAM,QAAQ,OAAO;AAAA,sBACrBA,OAAM,QAAQ,OAAO;AAAA,oBACzB;AAAA,oBACA,MAAM,kBAAkB;AAAA,kBAC5B;AAAA,gBACJ;AAGA,+BAAe;AAAA,cACnB;AAAA,YACJ,CAAC;AAAA,YAED,iBAAiB,wBAAwBA,QAAO,SAASwL,OAAM;AAC3D,cAAAA,MAAK,UAAU;AAAA,YACnB,CAAC;AAAA,YAED,uBAAuB,wBAAwBxL,QAAO,SAASwL,OAAM;AAEjE,kBAAIA,MAAK,UAAU;AACf,gBAAAlL,UAAS,0BAA0B,EAAE,IAAIkL,MAAK,GAAG,CAAC;AAClD;AAAA,cACJ;AAGA,cAAAA,MAAK,gBAAgB,EAAE,KAAK,WAAW;AACnC,oBAAI,eAAexL,OAAM,QAAQ;AACjC,oBAAI,cAAc;AACd,kBAAAM,UAAS,eAAe,EAAE,OAAOkL,MAAK,GAAG,CAAC;AAAA,gBAC9C;AAAA,cACJ,CAAC;AAAA,YACL,CAAC;AAAA,YAED,gCAAgC,wBAAwBxL,QAAO,SAASwL,OAAM;AAE1E,kBAAI,CAACxL,OAAM,QAAQ,eAAe;AAC9B,gBAAAM,UAAS,0BAA0B,EAAE,OAAOkL,MAAK,CAAC;AAClD;AAAA,cACJ;AAIA,kBAAI,eAAe,SAASoI,cAAa,cAAc;AACnD,oBAAI,CAAC,aAAc;AACnB,gBAAAtT,UAAS,0BAA0B,EAAE,OAAOkL,MAAK,CAAC;AAAA,cACtD;AAEA,kBAAIzI,MAAK,MAAM,wBAAwB;AACvC,kBAAI,CAACA,KAAI;AACL,uBAAO,aAAa,IAAI;AAAA,cAC5B;AAEA,kBAAI,sBAAsBA,IAAG,cAAcyI,KAAI,CAAC;AAChD,kBAAI,uBAAuB,MAAM;AAE7B,uBAAO,aAAa,IAAI;AAAA,cAC5B;AAEA,kBAAI,OAAO,wBAAwB,WAAW;AAC1C,uBAAO,aAAa,mBAAmB;AAAA,cAC3C;AAEA,kBAAI,OAAO,oBAAoB,SAAS,YAAY;AAChD,oCAAoB,KAAK,YAAY;AAAA,cACzC;AAAA,YACJ,CAAC;AAAA,YAED,wBAAwB,wBAAwBxL,QAAO,SAASwL,OAAM;AAClE,cAAAA,MAAK;AAAA,gBACD,qBAAqBxL,OAAM,QAAQ,OAAO,KAAKA,OAAM,QAAQ,OAAO,MAAM;AAAA,gBAC1E,MAAM,kBAAkB;AAAA,cAC5B,EACK,KAAK,WAAW;AACb,oBAAI,eAAeA,OAAM,QAAQ,iBAAiB,WAAWwL,KAAI;AACjE,oBAAI,cAAc;AACd,kBAAAlL,UAAS,eAAe,EAAE,OAAOkL,MAAK,GAAG,CAAC;AAAA,gBAC9C;AAAA,cACJ,CAAC,EACA,MAAM,WAAW;AAAA,cAAC,CAAC;AAAA,YAC5B,CAAC;AAAA,YAED,aAAa,SAAS,YAAY,QAAQ;AACtC,kBAAI,UAAU,OAAO;AAErB,kBAAI,aAAa,OAAO,KAAK,OAAO;AAGpC,kBAAI,wBAAwB,mBAAmB,OAAO,SAAS,KAAK;AAChE,uBAAO,WAAW,SAAS,GAAG;AAAA,cAClC,CAAC;AAGD,kBAAI,oBAAoB,CAAC,EAAE;AAAA,gBACvB,mBAAmB,qBAAqB;AAAA,gBACxC;AAAA,kBACI,OAAO,KAAK,OAAO,EAAE,OAAO,SAAS,KAAK;AACtC,2BAAO,CAAC,sBAAsB,SAAS,GAAG;AAAA,kBAC9C,CAAC;AAAA,gBACL;AAAA,cACJ;AAGA,gCAAkB,QAAQ,SAAS,KAAK;AACpC,gBAAAlL,UAAS,SAAS,WAAW,KAAK,GAAG,EAAE,YAAY,GAAG;AAAA,kBAClD,OAAO,QAAQ,GAAG;AAAA,gBACtB,CAAC;AAAA,cACL,CAAC;AAAA,YACL;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,qBAAqB,CAAC,QAAQ;AAElC,YAAI,iBAAiB,SAASuT,gBAAejT,OAAM;AAC/C,iBAAOA;AAAA,QACX;AAEA,YAAI,kBAAkB,SAASE,eAAc,SAAS;AAClD,iBAAO,SAAS,cAAc,OAAO;AAAA,QACzC;AAEA,YAAI,OAAO,SAASgT,MAAK,MAAM,OAAO;AAClC,cAAI,WAAW,KAAK,WAAW,CAAC;AAChC,cAAI,CAAC,UAAU;AACX,uBAAW,SAAS,eAAe,KAAK;AACxC,iBAAK,YAAY,QAAQ;AAAA,UAC7B,WAAW,UAAU,SAAS,WAAW;AACrC,qBAAS,YAAY;AAAA,UACzB;AAAA,QACJ;AAEA,YAAI,mBAAmB,SAASC,kBAAiB,SAAS,SAAS,QAAQ,gBAAgB;AACvF,cAAI,kBAAoB,iBAAiB,MAAO,MAAM,KAAK,KAAM;AACjE,iBAAO;AAAA,YACH,GAAG,UAAU,SAAS,KAAK,IAAI,cAAc;AAAA,YAC7C,GAAG,UAAU,SAAS,KAAK,IAAI,cAAc;AAAA,UACjD;AAAA,QACJ;AAEA,YAAI,cAAc,SAASC,aAAYC,IAAGC,IAAG,QAAQ,YAAY,UAAU,UAAU;AACjF,cAAIhS,SAAQ,iBAAiB+R,IAAGC,IAAG,QAAQ,QAAQ;AACnD,cAAI,MAAM,iBAAiBD,IAAGC,IAAG,QAAQ,UAAU;AACnD,iBAAO,CAAC,KAAKhS,OAAM,GAAGA,OAAM,GAAG,KAAK,QAAQ,QAAQ,GAAG,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,KAAK,GAAG;AAAA,QAC9F;AAEA,YAAI,gBAAgB,SAASiS,eAAcF,IAAGC,IAAG,QAAQE,OAAMC,KAAI;AAC/D,cAAI,WAAW;AACf,cAAIA,MAAKD,SAAQC,MAAKD,SAAQ,KAAK;AAC/B,uBAAW;AAAA,UACf;AACA,cAAIA,QAAOC,OAAMD,QAAOC,OAAM,KAAK;AAC/B,uBAAW;AAAA,UACf;AACA,iBAAO;AAAA,YACHJ;AAAA,YACAC;AAAA,YACA;AAAA,YACA,KAAK,IAAI,QAAQE,KAAI,IAAI;AAAA,YACzB,KAAK,IAAI,QAAQC,GAAE,IAAI;AAAA,YACvB;AAAA,UACJ;AAAA,QACJ;AAEA,YAAIvQ,UAAS,SAASA,QAAO,MAAM;AAC/B,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AAEjB,gBAAM,OAAO;AACb,gBAAM,WAAW;AACjB,gBAAM,UAAU;AAGhB,cAAI,MAAM,cAAc,KAAK;AAC7B,UAAAA,MAAK,IAAI,OAAO,cAAc,QAAQ;AAAA,YAClC,gBAAgB;AAAA,YAChB,kBAAkB;AAAA,UACtB,CAAC;AAED,cAAI,YAAYA,MAAK,IAAI,IAAI;AAE7B,UAAAA,MAAK,IAAI,MAAM;AAEf,UAAAA,MAAK,YAAY,GAAG;AAAA,QACxB;AAEA,YAAI,QAAQ,SAASxC,OAAM,OAAO;AAC9B,cAAIwC,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,cAAI,MAAM,YAAY,GAAG;AACrB;AAAA,UACJ;AAEA,cAAI,MAAM,OAAO;AACb,YAAAA,MAAK,QAAQ,QAAQ,QAAQ,MAAM;AAAA,UACvC;AAGA,cAAI,kBAAkB,SAAS,KAAKA,MAAK,IAAI,MAAM,cAAc,GAAG,EAAE;AAGtE,cAAI,OAAOA,MAAK,KAAK,QAAQ,QAAQ;AAGrC,cAAI,WAAW;AACf,cAAI,SAAS;AAGb,cAAI,MAAM,MAAM;AACZ,uBAAW;AACX,qBAAS;AAAA,UACb,OAAO;AACH,uBAAW;AACX,qBAAS,MAAM;AAAA,UACnB;AAGA,cAAIkP,eAAc,cAAc,MAAM,MAAM,OAAO,iBAAiB,UAAU,MAAM;AAGpF,eAAKlP,MAAK,IAAI,MAAM,KAAKkP,YAAW;AAGpC,eAAKlP,MAAK,IAAI,MAAM,kBAAkB,MAAM,QAAQ,MAAM,WAAW,IAAI,IAAI,CAAC;AAAA,QAClF;AAEA,YAAI,oBAAoB,WAAW;AAAA,UAC/B,KAAK;AAAA,UACL,MAAM;AAAA,UACN,kBAAkB;AAAA,UAClB,YAAY;AAAA,UACZ,QAAQtB;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,YACJ,MAAM,CAAC,YAAY,QAAQ,OAAO;AAAA,YAClC,QAAQ,CAAC,SAAS;AAAA,YAClB,YAAY;AAAA,cACR,SAAS,EAAE,MAAM,SAAS,UAAU,IAAI;AAAA,cACxC,UAAU;AAAA,gBACN,MAAM;AAAA,gBACN,WAAW;AAAA,gBACX,SAAS;AAAA,gBACT,MAAM;AAAA,cACV;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,YAAI,WAAW,SAASA,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AACjB,UAAAA,MAAK,QAAQ,aAAa,MAAM,QAAQ,OAAO,WAAW,MAAM,QAAQ;AAExE,gBAAM,aAAa;AAAA,QACvB;AAEA,YAAI,UAAU,SAASxC,OAAM,OAAO;AAChC,cAAIwC,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,cAAI,aAAa,MAAM;AACvB,cAAI,gBAAgBA,MAAK,MAAM,cAAc,KAAK,MAAM,YAAY;AAEpE,cAAI,iBAAiB,CAAC,YAAY;AAC9B,kBAAM,aAAa;AACnB,iBAAKA,MAAK,SAAS,YAAY,UAAU;AAAA,UAC7C,WAAW,CAAC,iBAAiB,YAAY;AACrC,kBAAM,aAAa;AACnB,YAAAA,MAAK,QAAQ,gBAAgB,UAAU;AAAA,UAC3C;AAAA,QACJ;AAEA,YAAI,mBAAmB,WAAW;AAAA,UAC9B,KAAK;AAAA,UACL,YAAY;AAAA,YACR,MAAM;AAAA,UACV;AAAA,UAEA,YAAY;AAAA,UACZ,kBAAkB;AAAA,UAClB,MAAM;AAAA,UACN,QAAQ;AAAA,YACJ,MAAM,CAAC,OAAO;AAAA,YACd,QAAQ,CAAC,cAAc,cAAc,UAAU,UAAU,SAAS;AAAA,YAClE,YAAY;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,SAAS,EAAE,MAAM,SAAS,UAAU,IAAI;AAAA,YAC5C;AAAA,YAEA,WAAW;AAAA,UACf;AAAA,UAEA,QAAQ;AAAA,UACR,OAAO;AAAA,QACX,CAAC;AAED,YAAI,oBAAoB,SAASmP,mBAAkB,OAAO;AACtD,cAAI,mBACA,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACxE,cAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC/E,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,sBAAsB,QAAQ,YAC9B,aAAa,wBAAwB,SAAS,UAAU,qBACxD,wBAAwB,QAAQ,gBAChC,iBAAiB,0BAA0B,SAAS,OAAO,uBAC3D,wBAAwB,QAAQ,gBAChC,iBAAiB,0BAA0B,SAAS,OAAO,uBAC3D,wBAAwB,QAAQ,gBAChC,iBAAiB,0BAA0B,SAAS,OAAO;AAG/D,kBAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC;AAElC,cAAI,KAAK;AACT,cAAI,KAAK,OAAO;AAChB,cAAI,KAAK,OAAO,OAAO;AAGvB,cAAI,QAAQ,IAAI;AACZ,mBAAO,QAAQ,MAAM;AAAA,UACzB;AAGA,cAAI,QAAQ,IAAI;AACZ,mBAAO,KAAK,MAAM,QAAQ,EAAE,IAAI,MAAM;AAAA,UAC1C;AAGA,cAAI,QAAQ,IAAI;AACZ,mBAAO,uBAAuB,QAAQ,IAAI,GAAG,gBAAgB,IAAI,MAAM;AAAA,UAC3E;AAGA,iBAAO,uBAAuB,QAAQ,IAAI,GAAG,gBAAgB,IAAI,MAAM;AAAA,QAC3E;AAEA,YAAI,yBAAyB,SAASC,wBAAuB,OAAO,cAAc,WAAW;AACzF,iBAAO,MACF,QAAQ,YAAY,EACpB,MAAM,GAAG,EACT,OAAO,SAAS,MAAM;AACnB,mBAAO,SAAS;AAAA,UACpB,CAAC,EACA,KAAK,SAAS;AAAA,QACvB;AAEA,YAAI,WAAW,SAAS1Q,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AAEjB,cAAI,WAAW,gBAAgB,MAAM;AACrC,mBAAS,YAAY;AAIrB,eAAK,UAAU,eAAe,MAAM;AACpC,UAAAA,MAAK,YAAY,QAAQ;AACzB,UAAAA,MAAK,IAAI,WAAW;AAGpB,cAAI,WAAW,gBAAgB,MAAM;AACrC,mBAAS,YAAY;AACrB,UAAAA,MAAK,YAAY,QAAQ;AACzB,UAAAA,MAAK,IAAI,WAAW;AAGpB,eAAK,UAAUA,MAAK,MAAM,iCAAiC,CAAC;AAC5D,eAAK,UAAU,eAAeA,MAAK,MAAM,iBAAiB,MAAM,EAAE,CAAC,CAAC;AAAA,QACxE;AAEA,YAAI,aAAa,SAASqP,YAAW,OAAO;AACxC,cAAIrP,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB;AAAA,YACIA,MAAK,IAAI;AAAA,YACT;AAAA,cACIA,MAAK,MAAM,iBAAiB,MAAM,EAAE;AAAA,cACpC;AAAA,cACAA,MAAK,MAAM,oBAAoB;AAAA,cAC/BA,MAAK,MAAM,wBAAwBA,MAAK,KAAK;AAAA,YACjD;AAAA,UACJ;AAEA,eAAKA,MAAK,IAAI,UAAU,eAAeA,MAAK,MAAM,iBAAiB,MAAM,EAAE,CAAC,CAAC;AAAA,QACjF;AAEA,YAAI,wBAAwB,SAASsP,uBAAsB,OAAO;AAC9D,cAAItP,QAAO,MAAM,MACb,QAAQ,MAAM;AAElB,cAAI,MAAMA,MAAK,MAAM,iBAAiB,MAAM,EAAE,CAAC,GAAG;AAC9C,uBAAW,EAAE,MAAMA,OAAM,MAAa,CAAC;AACvC;AAAA,UACJ;AAEA,eAAKA,MAAK,IAAI,UAAUA,MAAK,MAAM,mCAAmC,CAAC;AAAA,QAC3E;AAEA,YAAI,WAAW,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,kBAAkB;AAAA,UAClB,OAAO,YAAY;AAAA,YACf,eAAe;AAAA,YACf,sBAAsB;AAAA,YACtB,2BAA2B;AAAA,YAC3B,wBAAwB;AAAA,UAC5B,CAAC;AAAA,UAED,eAAe,SAAS,cAAcA,OAAM;AACxC,yBAAa,eAAe,OAAO,OAAO,CAAC,GAAGA,OAAM,EAAE,MAAMA,MAAK,CAAC,CAAC;AAAA,UACvE;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ;AAAA,YACJ,QAAQ,CAAC,cAAc,YAAY;AAAA,YACnC,YAAY;AAAA,cACR,YAAY;AAAA,cACZ,YAAY;AAAA,YAChB;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,YAAIuP,gBAAe,SAASA,cAAa,OAAO;AAC5C,iBAAO,KAAK,MAAM,QAAQ,GAAG;AAAA,QACjC;AAEA,YAAI,WAAW,SAAS7Q,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK;AAGhB,cAAI,OAAO,gBAAgB,MAAM;AACjC,eAAK,YAAY;AACjB,UAAAA,MAAK,YAAY,IAAI;AACrB,UAAAA,MAAK,IAAI,OAAO;AAGhB,cAAI,MAAM,gBAAgB,MAAM;AAChC,cAAI,YAAY;AAChB,UAAAA,MAAK,YAAY,GAAG;AACpB,UAAAA,MAAK,IAAI,MAAM;AAEf,iCAAuB,EAAE,MAAMA,OAAM,QAAQ,EAAE,UAAU,KAAK,EAAE,CAAC;AAAA,QACrE;AAEA,YAAI,yBAAyB,SAASwP,wBAAuB,OAAO;AAChE,cAAIxP,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAIyP,SACA,OAAO,aAAa,OACdzP,MAAK,MAAM,wBAAwB,IACnCA,MAAK,MAAM,wBAAwB,IAAI,MAAMuP,cAAa,OAAO,QAAQ,IAAI;AAEvF,eAAKvP,MAAK,IAAI,MAAMyP,MAAK;AACzB,eAAKzP,MAAK,IAAI,KAAKA,MAAK,MAAM,yBAAyB,CAAC;AAAA,QAC5D;AAEA,YAAI,4BAA4B,SAAS0P,2BAA0B,OAAO;AACtE,cAAI1P,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAIyP,SACA,OAAO,aAAa,OACdzP,MAAK,MAAM,2BAA2B,IACtCA,MAAK,MAAM,2BAA2B,IACtC,MACAuP,cAAa,OAAO,QAAQ,IAC5B;AAEV,eAAKvP,MAAK,IAAI,MAAMyP,MAAK;AACzB,eAAKzP,MAAK,IAAI,KAAKA,MAAK,MAAM,yBAAyB,CAAC;AAAA,QAC5D;AAEA,YAAI,2BAA2B,SAAS2P,0BAAyB,OAAO;AACpE,cAAI3P,QAAO,MAAM;AACjB,eAAKA,MAAK,IAAI,MAAMA,MAAK,MAAM,2BAA2B,CAAC;AAC3D,eAAKA,MAAK,IAAI,KAAKA,MAAK,MAAM,yBAAyB,CAAC;AAAA,QAC5D;AAEA,YAAI,yBAAyB,SAAS4P,wBAAuB,OAAO;AAChE,cAAI5P,QAAO,MAAM;AACjB,eAAKA,MAAK,IAAI,MAAMA,MAAK,MAAM,mCAAmC,CAAC;AACnE,eAAKA,MAAK,IAAI,KAAKA,MAAK,MAAM,wBAAwB,CAAC;AAAA,QAC3D;AAEA,YAAI,4BAA4B,SAAS6P,2BAA0B,OAAO;AACtE,cAAI7P,QAAO,MAAM;AACjB,eAAKA,MAAK,IAAI,MAAMA,MAAK,MAAM,oCAAoC,CAAC;AACpE,eAAKA,MAAK,IAAI,KAAKA,MAAK,MAAM,uBAAuB,CAAC;AAAA,QAC1D;AAEA,YAAI,QAAQ,SAASuL,OAAM,OAAO;AAC9B,cAAIvL,QAAO,MAAM;AACjB,eAAKA,MAAK,IAAI,MAAM,EAAE;AACtB,eAAKA,MAAK,IAAI,KAAK,EAAE;AAAA,QACzB;AAEA,YAAI,QAAQ,SAAS2C,OAAM,OAAO;AAC9B,cAAI3C,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,eAAKA,MAAK,IAAI,MAAM,OAAO,OAAO,IAAI;AACtC,eAAKA,MAAK,IAAI,KAAK,OAAO,OAAO,GAAG;AAAA,QACxC;AAEA,YAAI,aAAa,WAAW;AAAA,UACxB,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,kBAAkB;AAAA,UAClB,OAAO,YAAY;AAAA,YACf,eAAe;AAAA,YACf,4BAA4B;AAAA,YAC5B,6BAA6B;AAAA,YAC7B,2BAA2B;AAAA,YAC3B,8BAA8B;AAAA,YAC9B,kCAAkC;AAAA,YAClC,+BAA+B;AAAA,YAC/B,2BAA2B;AAAA,YAC3B,wBAAwB;AAAA,YACxB,iCAAiC;AAAA,YACjC,wCAAwC;AAAA,YACxC,6BAA6B;AAAA,UACjC,CAAC;AAAA,UAED,eAAe,SAAS,cAAcA,OAAM;AACxC,yBAAa,eAAe,OAAO,OAAO,CAAC,GAAGA,OAAM,EAAE,MAAMA,MAAK,CAAC,CAAC;AAAA,UACvE;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ;AAAA,YACJ,QAAQ,CAAC,cAAc,cAAc,SAAS;AAAA,YAC9C,YAAY;AAAA,cACR,SAAS,EAAE,MAAM,SAAS,UAAU,IAAI;AAAA,cACxC,YAAY;AAAA,cACZ,YAAY;AAAA,YAChB;AAAA,UACJ;AAAA,QACJ,CAAC;AAMD,YAAI,UAAU;AAAA,UACV,eAAe;AAAA,YACX,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,UACX;AAAA,UACA,eAAe;AAAA,YACX,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,UACX;AAAA,UACA,YAAY;AAAA,YACR,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,UACX;AAAA,UACA,aAAa;AAAA,YACT,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,UACX;AAAA,UACA,qBAAqB;AAAA,YACjB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,UACX;AAAA,UACA,qBAAqB;AAAA,YACjB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,UACX;AAAA,UACA,sBAAsB;AAAA,YAClB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO;AAAA;AAAA,UACX;AAAA,QACJ;AAGA,YAAI,aAAa,CAAC;AAClB,cAAM,SAAS,SAAS,KAAK;AACzB,qBAAW,KAAK,GAAG;AAAA,QACvB,CAAC;AAED,YAAI,0BAA0B,SAAS8P,yBAAwB9P,OAAM;AACjE,cAAI,2BAA2BA,KAAI,MAAM,QAAS,QAAO;AACzD,cAAI,aAAaA,MAAK,IAAI,iBAAiB,KAAK;AAChD,iBAAO,WAAW,SAAS,OAAO,WAAW,QAAQ,WAAW;AAAA,QACpE;AAEA,YAAI,uBAAuB,SAAS+P,sBAAqB/P,OAAM;AAC3D,cAAI,aAAaA,MAAK,IAAI,oBAAoB,KAAK;AACnD,iBAAO,WAAW;AAAA,QACtB;AAGA,YAAI,oCAAoC,SAASgQ,mCAAkChQ,OAAM;AACrF,iBAAO,KAAK,MAAMA,MAAK,IAAI,iBAAiB,KAAK,QAAQ,SAAS,CAAC;AAAA,QACvE;AACA,YAAI,sCAAsC,SAASiQ,qCAAoCjQ,OAAM;AACzF,iBAAO,KAAK,MAAMA,MAAK,IAAI,iBAAiB,KAAK,QAAQ,OAAO,CAAC;AAAA,QACrE;AAEA,YAAI,4BAA4B,SAASkQ,2BAA0BlQ,OAAM;AACrE,iBAAOA,MAAK,MAAM,mCAAmC;AAAA,QACzD;AACA,YAAI,+BAA+B,SAASmQ,8BAA6BnQ,OAAM;AAC3E,iBAAOA,MAAK,MAAM,uCAAuC;AAAA,QAC7D;AACA,YAAI,6BAA6B,SAASoQ,4BAA2BpQ,OAAM;AACvE,iBAAOA,MAAK,MAAM,uCAAuC;AAAA,QAC7D;AAEA,YAAI,eAAe;AAAA,UACf,qBAAqB,EAAE,SAAS,EAAE;AAAA,UAClC,qBAAqB,EAAE,SAAS,EAAE;AAAA,UAClC,kBAAkB,EAAE,SAAS,EAAE;AAAA,UAC/B,mBAAmB,EAAE,SAAS,EAAE;AAAA,UAChC,2BAA2B,EAAE,SAAS,EAAE;AAAA,UACxC,2BAA2B,EAAE,SAAS,EAAE;AAAA,UACxC,4BAA4B,EAAE,SAAS,EAAE;AAAA,UACzC,uBAAuB,EAAE,SAAS,GAAG,OAAO,0BAA0B;AAAA,UACtE,0BAA0B,EAAE,SAAS,GAAG,OAAO,6BAA6B;AAAA,UAC5E,6BAA6B,EAAE,SAAS,GAAG,QAAQ,MAAM,QAAQ,KAAK;AAAA,UACtE,MAAM,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS,EAAE;AAAA,UACjD,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS,EAAE;AAAA,QACvD;AAEA,YAAI,YAAY;AAAA,UACZ,kBAAkB,EAAE,SAAS,EAAE;AAAA,UAC/B,mBAAmB,EAAE,SAAS,EAAE;AAAA,UAChC,MAAM,EAAE,YAAY,wBAAwB;AAAA,UAC5C,QAAQ,EAAE,YAAY,wBAAwB;AAAA,QAClD;AAEA,YAAI,kBAAkB;AAAA,UAClB,2BAA2B,EAAE,SAAS,EAAE;AAAA,UACxC,0BAA0B,EAAE,SAAS,EAAE;AAAA,UACvC,QAAQ,EAAE,SAAS,EAAE;AAAA,QACzB;AAEA,YAAI,WAAW;AAAA,UACX,wBAAwB;AAAA,YACpB,kBAAkB,EAAE,SAAS,EAAE;AAAA,YAC/B,MAAM,EAAE,YAAY,wBAAwB;AAAA,YAC5C,QAAQ,EAAE,YAAY,yBAAyB,SAAS,EAAE;AAAA,UAC9D;AAAA,UAEA,qBAAqB;AAAA,YACjB,qBAAqB,EAAE,SAAS,EAAE;AAAA,YAClC,uBAAuB,EAAE,SAAS,EAAE;AAAA,YACpC,QAAQ,EAAE,SAAS,EAAE;AAAA,UACzB;AAAA,UAEA,2BAA2B;AAAA,YACvB,qBAAqB,EAAE,SAAS,EAAE;AAAA,YAClC,kBAAkB,EAAE,SAAS,EAAE;AAAA,YAC/B,MAAM,EAAE,YAAY,wBAAwB;AAAA,YAC5C,QAAQ,EAAE,SAAS,EAAE;AAAA,UACzB;AAAA,UAEA,uBAAuB;AAAA,YACnB,0BAA0B,EAAE,SAAS,GAAG,OAAO,2BAA2B;AAAA,YAC1E,MAAM,EAAE,YAAY,wBAAwB;AAAA,YAC5C,QAAQ,EAAE,SAAS,EAAE;AAAA,UACzB;AAAA,UAEA,6BAA6B;AAAA,YACzB,0BAA0B,EAAE,SAAS,GAAG,OAAO,2BAA2B;AAAA,YAC1E,kBAAkB,EAAE,SAAS,EAAE;AAAA,YAC/B,MAAM,EAAE,YAAY,wBAAwB;AAAA,YAC5C,QAAQ,EAAE,SAAS,GAAG,YAAY,wBAAwB;AAAA,UAC9D;AAAA,UAEA,eAAe;AAAA,UACf,qBAAqB;AAAA,YACjB,kBAAkB,EAAE,SAAS,EAAE;AAAA,YAC/B,MAAM,EAAE,YAAY,wBAAwB;AAAA,YAC5C,QAAQ,EAAE,YAAY,wBAAwB;AAAA,UAClD;AAAA,UAEA,2BAA2B;AAAA,UAC3B,6BAA6B;AAAA,UAC7B,kCAAkC;AAAA,UAClC,8BAA8B;AAAA,YAC1B,4BAA4B,EAAE,SAAS,EAAE;AAAA,YACzC,MAAM,EAAE,SAAS,EAAE;AAAA,YACnB,QAAQ,EAAE,SAAS,EAAE;AAAA,UACzB;AAAA,UAEA,iCAAiC;AAAA,YAC7B,kBAAkB,EAAE,SAAS,EAAE;AAAA,YAC/B,2BAA2B,EAAE,SAAS,EAAE;AAAA,YACxC,QAAQ,EAAE,SAAS,EAAE;AAAA,YACrB,MAAM,EAAE,YAAY,wBAAwB;AAAA,UAChD;AAAA,UAEA,wCAAwC;AAAA,YACpC,4BAA4B,EAAE,SAAS,EAAE;AAAA,YACzC,QAAQ,EAAE,SAAS,EAAE;AAAA,YACrB,MAAM,EAAE,SAAS,EAAE;AAAA,UACvB;AAAA,UAEA,2BAA2B;AAAA,YACvB,kBAAkB,EAAE,SAAS,EAAE;AAAA,YAC/B,mBAAmB,EAAE,SAAS,EAAE;AAAA,YAChC,MAAM,EAAE,YAAY,wBAAwB;AAAA,YAC5C,QAAQ,EAAE,SAAS,EAAE;AAAA,UACzB;AAAA,UAEA,4BAA4B;AAAA,QAChC;AAGA,YAAI,kCAAkC,WAAW;AAAA,UAC7C,QAAQ,SAAStB,QAAO,MAAM;AAC1B,gBAAIsB,QAAO,KAAK;AAChB,YAAAA,MAAK,QAAQ,YAAYA,MAAK,MAAM,eAAe;AAAA,UACvD;AAAA,UACA,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,QAAQ;AAAA,YACJ,QAAQ,CAAC,UAAU,UAAU,SAAS;AAAA,YACtC,YAAY;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,SAAS,EAAE,MAAM,SAAS,UAAU,IAAI;AAAA,YAC5C;AAAA,UACJ;AAAA,QACJ,CAAC;AAKD,YAAI,WAAW,SAAStB,QAAO,OAAO;AAClC,cAAIsB,QAAO,MAAM,MACb,QAAQ,MAAM;AAElB,cAAI,eAAe,OAAO,KAAK,OAAO,EAAE,OAAO,SAAS,MAAM,MAAM;AAChE,iBAAK,IAAI,IAAI,OAAO,OAAO,CAAC,GAAG,QAAQ,IAAI,CAAC;AAC5C,mBAAO;AAAA,UACX,GAAG,CAAC,CAAC;AACL,cAAIP,MAAK,MAAM;AAGf,cAAI,cAAcO,MAAK,MAAM,kBAAkB;AAG/C,cAAI,cAAcA,MAAK,MAAM,kBAAkB;AAG/C,cAAI,eAAeA,MAAK,MAAM,mBAAmB;AAGjD,cAAI,gBAAgBA,MAAK,MAAM,oBAAoB;AAGnD,cAAIwH,WAAUxH,MAAK,MAAM,UAAU;AAGnC,cAAI,wBAAwBA,MAAK,MAAM,oCAAoC;AAG3E,cAAI;AACJ,cAAIwH,UAAS;AACT,gBAAI,gBAAgB,CAAC,aAAa;AAE9B,6BAAe,SAAS6I,cAAa,KAAK;AACtC,uBAAO,CAAC,uBAAuB,KAAK,GAAG;AAAA,cAC3C;AAAA,YACJ,WAAW,CAAC,gBAAgB,aAAa;AAErC,6BAAe,SAASA,cAAa,KAAK;AACtC,uBAAO,CAAC,sDAAsD,KAAK,GAAG;AAAA,cAC1E;AAAA,YACJ,WAAW,CAAC,gBAAgB,CAAC,aAAa;AAEtC,6BAAe,SAASA,cAAa,KAAK;AACtC,uBAAO,CAAC,UAAU,KAAK,GAAG;AAAA,cAC9B;AAAA,YACJ;AAAA,UACJ,OAAO;AAEH,2BAAe,SAASA,cAAa,KAAK;AACtC,qBAAO,CAAC,UAAU,KAAK,GAAG;AAAA,YAC9B;AAAA,UACJ;AAEA,cAAI,iBAAiB,eAAe,WAAW,OAAO,YAAY,IAAI,WAAW,OAAO;AAGxF,cAAI,iBAAiB,aAAa;AAC9B,yBAAa,sBAAsB,EAAE,QAAQ;AAC7C,yBAAa,sBAAsB,EAAE,OAAO;AAAA,UAChD;AAGA,cAAI7I,YAAW,CAAC,aAAa;AACzB,gBAAI8I,OAAM,SAAS,8BAA8B;AACjD,YAAAA,KAAI,KAAK,aAAa;AACtB,YAAAA,KAAI,KAAK,aAAa;AACtB,YAAAA,KAAI,OAAO,aAAa;AACxB,YAAAA,KAAI,8BAA8B,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,EAAE;AAAA,UACzE;AAGA,cAAI9I,YAAW,CAAC,cAAc;AAC1B;AAAA,cACI;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ,EAAE,QAAQ,SAAS,KAAK;AACpB,uBAAS,GAAG,EAAE,OAAO,aAAa;AAAA,YACtC,CAAC;AACD,qBAAS,iCAAiC,EAAE,OAAO,aAAa;AAAA,UACpE;AAGA,cAAI,yBAAyB,aAAa;AACtC,yBAAa,sBAAsB,EAAE,QAAQ;AAC7C,gBAAI,OAAO,SAAS,8BAA8B;AAClD,iBAAK,KAAK,aAAa;AACvB,iBAAK,OAAO,aAAa;AACzB,iBAAK,8BAA8B,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,EAAE;AAAA,UAC1E;AAGA,cAAI,CAAC,aAAa;AACd,yBAAa,YAAY,EAAE,WAAW;AAAA,UAC1C;AAGA,gBAAM,cAAc,SAAS,KAAK,YAAY;AAE1C,gBAAI,aAAaxH,MAAK,gBAAgB,kBAAkB;AAAA,cACpD,OAAOA,MAAK,MAAM,WAAW,KAAK;AAAA,cAClC,MAAMA,MAAK,MAAM,WAAW,IAAI;AAAA,cAChC,SAAS;AAAA,YACb,CAAC;AAGD,gBAAI,eAAe,SAAS,GAAG,GAAG;AAC9B,cAAAA,MAAK,gBAAgB,UAAU;AAAA,YACnC;AAGA,gBAAI,WAAW,UAAU;AACrB,yBAAW,QAAQ,aAAa,YAAY,UAAU;AACtD,yBAAW,QAAQ,aAAa,UAAU,QAAQ;AAAA,YACtD;AAGA,uBAAW,QAAQ,QAAQ,QAAQA,MAAK,MAAM,eAAe,WAAW,KAAK;AAG7E,uBAAW,QAAQ,UAAU,IAAI,WAAW,SAAS;AAGrD,uBAAW,GAAG,SAAS,SAAS0B,IAAG;AAC/B,cAAAA,GAAE,gBAAgB;AAClB,kBAAI,WAAW,SAAU;AACzB,cAAA1B,MAAK,SAAS,WAAW,QAAQ,EAAE,OAAOP,IAAG,CAAC;AAAA,YAClD,CAAC;AAGD,YAAAO,MAAK,IAAI,WAAW,GAAG,IAAI;AAAA,UAC/B,CAAC;AAGD,UAAAA,MAAK,IAAI,8BAA8BA,MAAK;AAAA,YACxCA,MAAK,gBAAgB,+BAA+B;AAAA,UACxD;AAEA,UAAAA,MAAK,IAAI,4BAA4B,QAAQ,QAAQ,QAAQA,MAAK;AAAA,YAC9D;AAAA,UACJ;AAGA,UAAAA,MAAK,IAAI,OAAOA,MAAK,gBAAgBA,MAAK,gBAAgB,UAAU,EAAE,IAAIP,IAAG,CAAC,CAAC;AAG/E,UAAAO,MAAK,IAAI,SAASA,MAAK,gBAAgBA,MAAK,gBAAgB,YAAY,EAAE,IAAIP,IAAG,CAAC,CAAC;AAGnF,cAAI,oBAAoBO,MAAK;AAAA,YACzBA,MAAK,gBAAgB,mBAAmB;AAAA,cACpC,SAAS;AAAA,cACT,OAAOA,MAAK,MAAM,mCAAmC;AAAA,YACzD,CAAC;AAAA,UACL;AAEA,4BAAkB,QAAQ,UAAU,IAAI,0BAA0B;AAClE,UAAAA,MAAK,IAAI,wBAAwB;AAEjC,cAAI,wBAAwBA,MAAK;AAAA,YAC7BA,MAAK,gBAAgB,mBAAmB;AAAA,cACpC,SAAS;AAAA,cACT,OAAOA,MAAK,MAAM,uCAAuC;AAAA,YAC7D,CAAC;AAAA,UACL;AAEA,gCAAsB,QAAQ,UAAU,IAAI,6BAA6B;AACzE,UAAAA,MAAK,IAAI,2BAA2B;AAGpC,UAAAA,MAAK,IAAI,eAAe,CAAC;AAAA,QAC7B;AAEA,YAAI,UAAU,SAASxC,OAAM,OAAO;AAChC,cAAIwC,QAAO,MAAM,MACbrF,WAAU,MAAM,SAChB,QAAQ,MAAM;AAElB,gBAAM,EAAE,MAAMqF,OAAM,SAASrF,UAAS,MAAa,CAAC;AAGpD,cAAI,SAASA,SACR,OAAO,EACP,OAAO,SAAS4V,SAAQ;AACrB,mBAAO,QAAQ,KAAKA,QAAO,IAAI;AAAA,UACnC,CAAC,EACA,QAAQ,EACR,KAAK,SAASA,SAAQ;AACnB,mBAAO,SAASA,QAAO,IAAI;AAAA,UAC/B,CAAC;AAGL,cAAI,QAAQ;AAER,YAAAvQ,MAAK,IAAI,eAAe,CAAC;AAEzB,gBAAI,gBAAgB,SAAS,OAAO,IAAI;AACxC,kBAAM,cAAc,SAASxE,OAAM,eAAe;AAE9C,kBAAI,UAAUwE,MAAK,IAAIxE,KAAI;AAG3B,oBAAM,eAAe,SAAS,KAAK,cAAc;AAC7C,oBAAI,QACA,cAAcA,KAAI,KAAK,OAAO,cAAcA,KAAI,EAAE,GAAG,MAAM,cACrD,cAAcA,KAAI,EAAE,GAAG,IACvB;AACV,gBAAAwE,MAAK,IAAI,aAAa,KAAK,EAAE,SAAkB,KAAU,MAAa,CAAC;AAAA,cAC3E,CAAC;AAAA,YACL,CAAC;AAAA,UACL;AAGA,UAAAA,MAAK,IAAI,aAAa,QAAQ,SAAS,OAAO;AAC1C,gBAAI,UAAU,MAAM,SAChB,MAAM,MAAM,KACZ,QAAQ,MAAM;AAClB,oBAAQ,GAAG,IAAI,OAAO,UAAU,aAAa,MAAMA,KAAI,IAAI;AAAA,UAC/D,CAAC;AAAA,QACL;AAEA,YAAI,QAAQ,YAAY;AAAA,UACpB,4CAA4C,SAAS,2CACjD,OACF;AACE,gBAAIA,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,YAAAA,MAAK,IAAI,0BAA0B,QAAQ,OAAO;AAAA,UACtD;AAAA,UACA,sCAAsC,SAAS,qCAAqC,OAAO;AACvF,gBAAIA,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,YAAAA,MAAK,IAAI,oBAAoB,QAAQ,OAAO;AAAA,UAChD;AAAA,UACA,yCAAyC,SAAS,wCAC9C,OACF;AACE,gBAAIA,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,YAAAA,MAAK,IAAI,uBAAuB,QAAQ,OAAO;AAAA,UACnD;AAAA,UACA,6BAA6B,SAAS,4BAA4B,OAAO;AACrE,gBAAIA,QAAO,MAAM;AACjB,YAAAA,MAAK,IAAI,yBAAyB,OAAO;AACzC,YAAAA,MAAK,IAAI,yBAAyB,WAAW;AAAA,UACjD;AAAA,UACA,qBAAqB,SAAS,oBAAoB,OAAO;AACrD,gBAAIA,QAAO,MAAM;AACjB,YAAAA,MAAK,IAAI,sBAAsB,OAAO;AACtC,YAAAA,MAAK,IAAI,sBAAsB,WAAW;AAAA,UAC9C;AAAA,UACA,uBAAuB,SAAS,sBAAsB,QAAQ;AAC1D,gBAAIA,QAAO,OAAO;AAClB,YAAAA,MAAK,IAAI,yBAAyB,OAAO;AACzC,YAAAA,MAAK,IAAI,yBAAyB,WAAW;AAAA,UACjD;AAAA,UACA,+BAA+B,SAAS,8BAA8B,QAAQ;AAC1E,gBAAIA,QAAO,OAAO,MACd,SAAS,OAAO;AACpB,YAAAA,MAAK,IAAI,sBAAsB,OAAO;AACtC,YAAAA,MAAK,IAAI,sBAAsB,WAAW,OAAO;AAAA,UACrD;AAAA,UACA,kCAAkC,SAAS,iCAAiC,QAAQ;AAChF,gBAAIA,QAAO,OAAO,MACd,SAAS,OAAO;AACpB,YAAAA,MAAK,IAAI,yBAAyB,OAAO;AACzC,YAAAA,MAAK,IAAI,yBAAyB,WAAW,OAAO;AAAA,UACxD;AAAA,QACJ,CAAC;AAED,YAAI,OAAO,WAAW;AAAA,UAClB,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,eAAe,SAAS,cAAcA,OAAM;AACxC,yBAAa,eAAe,OAAO,OAAO,CAAC,GAAGA,OAAM,EAAE,MAAMA,MAAK,CAAC,CAAC;AAAA,UACvE;AAAA,UACA,MAAM;AAAA,QACV,CAAC;AAKD,YAAI,WAAW,SAAStB,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AAGjB,UAAAA,MAAK,IAAI,WAAW,gBAAgB,QAAQ;AAC5C,UAAAA,MAAK,YAAYA,MAAK,IAAI,QAAQ;AAGlC,UAAAA,MAAK,IAAI,OAAOA,MAAK,gBAAgBA,MAAK,gBAAgB,MAAM,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC;AAGjF,UAAAA,MAAK,IAAI,OAAO;AAAA,QACpB;AAKA,YAAI,cAAc,SAASwQ,aAAY,OAAO;AAC1C,cAAIxQ,QAAO,MAAM,MACb,QAAQ,MAAM;AAElB,eAAKA,MAAK,IAAI,UAAU,eAAeA,MAAK,MAAM,iBAAiB,MAAM,EAAE,CAAC,CAAC;AAAA,QACjF;AAEA,YAAI,cAAc,WAAW;AAAA,UACzB,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,OAAO,YAAY;AAAA,YACf,eAAe;AAAA,UACnB,CAAC;AAAA,UAED,eAAe,SAAS,cAAcA,OAAM;AACxC,yBAAa,eAAe,OAAO,OAAO,CAAC,GAAGA,OAAM,EAAE,MAAMA,MAAK,CAAC,CAAC;AAAA,UACvE;AAAA,UACA,KAAK;AAAA,UACL,MAAM;AAAA,QACV,CAAC;AAED,YAAI,qBAAqB,EAAE,MAAM,UAAU,SAAS,KAAK,MAAM,EAAE;AAEjE,YAAI,WAAW,SAAStB,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AACjB;AAAA,YACI;AAAA,cACI,MAAM;AAAA,YACV;AAAA,YAEA;AAAA,cACI,MAAM;AAAA,cACN,OAAO;AAAA,gBACH,YAAY;AAAA,gBACZ,QAAQ;AAAA,cACZ;AAAA,cAEA,QAAQ;AAAA,gBACJ,YAAY;AAAA,kBACR,QAAQ;AAAA,gBACZ;AAAA,gBAEA,QAAQ,CAAC,cAAc,QAAQ;AAAA,cACnC;AAAA,YACJ;AAAA,YAEA;AAAA,cACI,MAAM;AAAA,cACN,OAAO;AAAA,gBACH,YAAY;AAAA,cAChB;AAAA,cAEA,QAAQ;AAAA,gBACJ,YAAY;AAAA,kBACR,YAAY;AAAA,gBAChB;AAAA,gBAEA,QAAQ,CAAC,YAAY;AAAA,cACzB;AAAA,YACJ;AAAA,UACJ,EAAE,QAAQ,SAAS,SAAS;AACxB,0BAAcA,OAAM,SAAS,MAAM,IAAI;AAAA,UAC3C,CAAC;AAED,UAAAA,MAAK,QAAQ,UAAU,IAAI,eAAe,MAAM,IAAI;AAEpD,UAAAA,MAAK,IAAI,WAAW;AAAA,QACxB;AAEA,YAAI,gBAAgB,SAASyQ,eAAczQ,OAAM,SAAS,WAAW;AACjE,cAAI,kBAAkB,WAAW;AAAA,YAC7B,MAAM,WAAW,QAAQ,OAAO,gBAAgB;AAAA,YAChD,QAAQ,QAAQ;AAAA,YAChB,kBAAkB;AAAA,UACtB,CAAC;AAED,cAAI,OAAOA,MAAK,gBAAgB,iBAAiB,QAAQ,KAAK;AAE9D,UAAAA,MAAK,IAAI,QAAQ,IAAI,IAAIA,MAAK,gBAAgB,IAAI;AAAA,QACtD;AAEA,YAAI,UAAU,SAASxC,OAAM,OAAO;AAChC,cAAIwC,QAAO,MAAM,MACb,QAAQ,MAAM;AAGlB,cAAIA,MAAK,IAAI,aAAa,QAAQ,MAAM,aAAaA,MAAK,IAAI,UAAU;AACpE,YAAAA,MAAK,IAAI,WAAWQ,WAAU,MAAM,QAAQ,IAAI,MAAM,WAAW;AACjE,YAAAR,MAAK,QAAQ,QAAQ,WAAWA,MAAK,IAAI;AAAA,UAC7C;AAGA,cAAI,CAAC,MAAM,OAAQ;AAGnB,cAAI,UAAUA,MAAK,IAAI,IAAI,KAAK;AAChC,cAAI,aAAaA,MAAK,IAAI,OAAO,KAAK;AAGtC,cAAI,SAAS,KAAK,IAAI,QAAQ,SAAS,WAAW,QAAQ,MAAM,MAAM;AAGtE,UAAAA,MAAK,IAAI,OAAO,aAAa,QAAQ;AAIrC,UAAAA,MAAK,IAAI,OAAO,UAAU,SAAS,QAAQ,SAAS,WAAW,UAAU;AAGzE,UAAAA,MAAK,IAAI,OAAO,aAAa,SAAS,WAAW;AAAA,QACrD;AAEA,YAAI,QAAQ,WAAW;AAAA,UACnB,MAAM;AAAA,UACN,MAAM,SAAS,KAAK,OAAO;AACvB,gBAAIA,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,mBAAQ,MAAM,gBAAgBA,MAAK,IAAI,OAAO;AAAA,UAClD;AAAA,UACA,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,QAAQ;AAAA,YACJ,MAAM,CAAC,UAAU,iBAAiB,UAAU;AAAA,UAChD;AAAA,QACJ,CAAC;AAED,YAAI,mBAAmB,SAAS0Q,kBAAiB,OAAO;AACpD,cAAI,UAAU,MAAM,IAAI,SAAStK,OAAM;AACnC,mBAAOA,MAAK;AAAA,UAChB,CAAC;AACD,cAAI,YAAY;AAChB,iBAAO;AAAA,YACH,UAAU,SAAS,SAASxK,QAAO;AAC/B,0BAAYA;AAAA,YAChB;AAAA,YACA,UAAU,SAAS,WAAW;AAC1B,qBAAO;AAAA,YACX;AAAA,YACA,cAAc,SAAS,aAAawK,OAAM;AACtC,qBAAO,QAAQ,QAAQA,MAAK,EAAE;AAAA,YAClC;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,wBAAwB;AAAA,UACxB,MAAM;AAAA,UACN,WAAW;AAAA,UACX,SAAS;AAAA,UACT,MAAM;AAAA,QACV;AAEA,YAAI,oBAAoB;AAExB,YAAI,WAAW;AAAA,UACX,qBAAqB;AAAA,UACrB,+BAA+B;AAAA,UAC/B,wBAAwB;AAAA,UACxB,2BAA2B;AAAA,UAC3B,eAAe;AAAA,UACf,6BAA6B;AAAA,UAC7B,uBAAuB;AAAA,UACvB,2BAA2B;AAAA,UAC3B,6BAA6B;AAAA,UAC7B,kCAAkC;AAAA,UAClC,8BAA8B;AAAA,UAC9B,iCAAiC;AAAA,UACjC,wCAAwC;AAAA,UACxC,2BAA2B;AAAA,UAC3B,4BAA4B;AAAA,QAChC;AAKA,YAAI,WAAW,SAAS1H,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AAEjB,UAAAA,MAAK,IAAI,cAAc,SAAS0B,IAAG;AAC/B,mBAAO1B,MAAK,SAAS,qBAAqB,EAAE,IAAI,MAAM,GAAG,CAAC;AAAA,UAC9D;AAGA,UAAAA,MAAK,QAAQ,KAAK,oBAAoB,MAAM;AAC5C,UAAAA,MAAK,QAAQ,iBAAiB,SAASA,MAAK,IAAI,WAAW;AAG3D,UAAAA,MAAK,IAAI,YAAYA,MAAK;AAAA,YACtBA,MAAK,gBAAgB,aAAa,EAAE,IAAI,MAAM,GAAG,CAAC;AAAA,UACtD;AAGA,UAAAA,MAAK,IAAI,QAAQA,MAAK,gBAAgBA,MAAK,gBAAgB,OAAO,EAAE,MAAM,aAAa,CAAC,CAAC;AAGzF,UAAAA,MAAK,IAAI,MAAM,SAAS;AAGxB,gBAAM,mBAAmB;AAGzB,cAAI,CAACA,MAAK,MAAM,mBAAmB,EAAG;AAGtC,UAAAA,MAAK,QAAQ,QAAQ,YAAY;AAEjC,cAAI,OAAO,SAAS2Q,MAAKjP,IAAG;AACxB,gBAAI,CAACA,GAAE,UAAW;AAElB,gBAAI,0BAA0B;AAE9B,gBAAI,SAAS;AAAA,cACT,GAAGA,GAAE;AAAA,cACL,GAAGA,GAAE;AAAA,YACT;AAEA,kBAAM,aAAa;AAAA,cACf,GAAG1B,MAAK;AAAA,cACR,GAAGA,MAAK;AAAA,YACZ;AAEA,kBAAM,aAAa;AAAA,cACf,GAAG0B,GAAE;AAAA,cACL,GAAGA,GAAE;AAAA,YACT;AAEA,gBAAI,YAAY,iBAAiB1B,MAAK,MAAM,kBAAkB,CAAC;AAE/D,YAAAA,MAAK,SAAS,iBAAiB,EAAE,IAAI,MAAM,IAAI,UAAqB,CAAC;AAErE,gBAAI,OAAO,SAAS4Q,MAAKlP,IAAG;AACxB,kBAAI,CAACA,GAAE,UAAW;AAElB,cAAAA,GAAE,gBAAgB;AAClB,cAAAA,GAAE,eAAe;AAEjB,oBAAM,aAAa;AAAA,gBACf,GAAGA,GAAE,QAAQ,OAAO;AAAA,gBACpB,GAAGA,GAAE,QAAQ,OAAO;AAAA,cACxB;AAGA,kBAAI,OACA,MAAM,WAAW,IAAI,MAAM,WAAW,IACtC,MAAM,WAAW,IAAI,MAAM,WAAW;AAC1C,kBAAI,OAAO,MAAM,CAAC,yBAAyB;AACvC,0CAA0B;AAC1B,gBAAA1B,MAAK,QAAQ,oBAAoB,SAASA,MAAK,IAAI,WAAW;AAAA,cAClE;AAEA,cAAAA,MAAK,SAAS,iBAAiB,EAAE,IAAI,MAAM,IAAI,UAAqB,CAAC;AAAA,YACzE;AAEA,gBAAI6Q,QAAO,SAASA,MAAKnP,IAAG;AACxB,kBAAI,CAACA,GAAE,UAAW;AAElB,oBAAM,aAAa;AAAA,gBACf,GAAGA,GAAE,QAAQ,OAAO;AAAA,gBACpB,GAAGA,GAAE,QAAQ,OAAO;AAAA,cACxB;AAEA,oBAAM;AAAA,YACV;AAEA,gBAAI,SAAS,SAASoP,UAAS;AAC3B,oBAAM;AAAA,YACV;AAEA,gBAAI,QAAQ,SAASnF,SAAQ;AACzB,uBAAS,oBAAoB,iBAAiB,MAAM;AACpD,uBAAS,oBAAoB,eAAe,IAAI;AAChD,uBAAS,oBAAoB,aAAakF,KAAI;AAE9C,cAAA7Q,MAAK,SAAS,iBAAiB,EAAE,IAAI,MAAM,IAAI,UAAqB,CAAC;AAGrE,kBAAI,yBAAyB;AACzB,2BAAW,WAAW;AAClB,yBAAOA,MAAK,QAAQ,iBAAiB,SAASA,MAAK,IAAI,WAAW;AAAA,gBACtE,GAAG,CAAC;AAAA,cACR;AAAA,YACJ;AAEA,qBAAS,iBAAiB,iBAAiB,MAAM;AACjD,qBAAS,iBAAiB,eAAe,IAAI;AAC7C,qBAAS,iBAAiB,aAAa6Q,KAAI;AAAA,UAC/C;AAEA,UAAA7Q,MAAK,QAAQ,iBAAiB,eAAe,IAAI;AAAA,QACrD;AAEA,YAAI,UAAU,YAAY;AAAA,UACtB,yBAAyB,SAAS,wBAAwB,OAAO;AAC7D,gBAAIA,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,YAAAA,MAAK,SAAS,OAAO;AAAA,UACzB;AAAA,QACJ,CAAC;AAED,YAAI,UAAU;AAAA,UACV;AAAA,YACI,eAAe,SAAS,cAAc,OAAO;AACzC,kBAAIA,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,oBAAM,aAAa;AAAA,gBACf,GAAGA,MAAK;AAAA,gBACR,GAAGA,MAAK;AAAA,cACZ;AAAA,YACJ;AAAA,YACA,eAAe,SAAS,cAAc,OAAO;AACzC,kBAAIA,QAAO,MAAM;AACjB,cAAAA,MAAK,QAAQ,QAAQ,YAAY;AAAA,YACrC;AAAA,YACA,eAAe,SAAS,cAAc,OAAO;AACzC,kBAAIA,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,oBAAM,aAAa;AACnB,oBAAM,aAAa;AACnB,cAAAA,MAAK,QAAQ,QAAQ,YAAY;AAAA,YACrC;AAAA,UACJ;AAAA,UAEA,SAAS,OAAO;AACZ,gBAAIA,QAAO,MAAM,MACbrF,WAAU,MAAM,SAChB,QAAQ,MAAM,OACd,iBAAiB,MAAM;AAC3B,gBAAIqF,MAAK,QAAQ,QAAQ,cAAc,QAAQ;AAC3C,kBAAIA,MAAK,UAAU,GAAG;AAClB,gBAAAA,MAAK,QAAQ,QAAQ,YAAY;AAAA,cACrC;AAAA,YACJ;AAGA,gBAAI,SAASrF,SACR,OAAO,EACP,OAAO,SAAS4V,SAAQ;AACrB,qBAAO,QAAQ,KAAKA,QAAO,IAAI;AAAA,YACnC,CAAC,EACA,QAAQ,EACR,KAAK,SAASA,SAAQ;AACnB,qBAAO,SAASA,QAAO,IAAI;AAAA,YAC/B,CAAC;AAGL,gBAAI,UAAU,OAAO,SAAS,MAAM,cAAc;AAE9C,oBAAM,eAAe,OAAO;AAG5B,cAAAvQ,MAAK,QAAQ,QAAQ,oBAAoB,SAAS,MAAM,YAAY,KAAK;AAAA,YAC7E;AAGA,gBAAI,cACAA,MAAK,MAAM,6BAA6B,KAAKA,MAAK,MAAM,wBAAwB;AACpF,gBAAI,CAAC,aAAa;AACd,sBAAQ,EAAE,MAAMA,OAAM,SAASrF,UAAS,MAAa,CAAC;AACtD,kBAAI,CAACqF,MAAK,UAAUA,MAAK,IAAI,UAAU,KAAK,QAAQ,SAAS,GAAG;AAC5D,gBAAAA,MAAK,SAASA,MAAK,IAAI,UAAU,KAAK,QAAQ;AAAA,cAClD;AAAA,YACJ,WAAW,CAAC,gBAAgB;AACxB,cAAAA,MAAK,SAASA,MAAK,KAAK,QAAQ,QAAQ;AAAA,YAC5C;AAGA,gBAAI,gBAAgB;AAChB,cAAAA,MAAK,IAAI,MAAM,SAAS;AAAA,YAC5B;AAEA,YAAAA,MAAK,IAAI,MAAM,SAASA,MAAK;AAAA,UACjC;AAAA,QACJ;AAEA,YAAI,OAAO,WAAW;AAAA,UAClB,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,SAAS,SAASvC,SAAQ,OAAO;AAC7B,gBAAIuC,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,YAAAA,MAAK,QAAQ,oBAAoB,SAASA,MAAK,IAAI,WAAW;AAC9D,YAAAA,MAAK,SAAS,gBAAgB,EAAE,OAAO,MAAM,GAAG,CAAC;AAAA,UACrD;AAAA,UACA,KAAK;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,YACJ,MAAM;AAAA,cACF;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,YAEA,QAAQ,CAAC,cAAc,cAAc,UAAU,UAAU,WAAW,QAAQ;AAAA,YAC5E,YAAY;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,SAAS,EAAE,MAAM,SAAS,UAAU,IAAI;AAAA,YAC5C;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,YAAI,iBAAiB,SAAS,iBAAiB,WAAW;AAGtD,iBAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kBAAkB,KAAK,SAAS,CAAC;AAAA,QACpE;AAEA,YAAI,yBAAyB,SAAS+Q,wBAAuB,MAAM,UAAU,gBAAgB;AACzF,cAAI,CAAC,eAAgB;AAErB,cAAI,kBAAkB,KAAK,KAAK,QAAQ;AAExC,cAAIC,KAAI,SAAS;AACjB,cAAI,OAAO;AAGX,cAAIA,OAAM,KAAK,eAAe,MAAM,SAAS,CAAC,EAAE,KAAK,QAAQ,IAAK,QAAO;AAGzE,cAAI5K,QAAO,SAAS,CAAC;AACrB,cAAI,WAAWA,MAAK,KAAK;AACzB,cAAI,uBAAuB,SAAS,aAAa,SAAS;AAC1D,cAAI,YAAY,SAAS,QAAQ;AACjC,cAAI,cAAc,eAAe,iBAAiB,SAAS;AAG3D,cAAI,gBAAgB,GAAG;AACnB,qBAASxK,SAAQ,GAAGA,SAAQoV,IAAGpV,UAAS;AACpC,kBAAI,QAAQ,SAASA,MAAK;AAC1B,kBAAI,WAAW,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,QAAQ,SAAS;AAClE,kBAAI,eAAe,MAAM,UAAU;AAC/B,uBAAOA;AAAA,cACX;AAAA,YACJ;AACA,mBAAOoV;AAAA,UACX;AAGA,cAAI,qBAAqB,SAAS,YAAY,SAAS;AACvD,cAAI,aAAa,SAAS,SAAS;AACnC,mBAAS,SAAS,GAAG,SAASA,IAAG,UAAU;AACvC,gBAAI,SAAS,SAAS;AACtB,gBAAI,SAAS,KAAK,MAAM,SAAS,WAAW;AAE5C,gBAAI,UAAU,SAAS;AACvB,gBAAI,UAAU,SAAS;AAEvB,gBAAI,UAAU,UAAU,SAAS;AACjC,gBAAI,YAAY,UAAU;AAC1B,gBAAI,aAAa,UAAU,aAAa,SAAS;AAEjD,gBAAI,eAAe,MAAM,cAAc,eAAe,MAAM,SAAS;AACjE,kBAAI,eAAe,OAAO,WAAW;AACjC,uBAAO;AAAA,cACX,WAAW,WAAWA,KAAI,GAAG;AACzB,uBAAO;AAAA,cACX,OAAO;AACH,uBAAO;AAAA,cACX;AAAA,YACJ;AAAA,UACJ;AAEA,cAAI,SAAS,MAAM;AACf,mBAAO;AAAA,UACX;AAEA,iBAAOA;AAAA,QACX;AAEA,YAAI,qBAAqB;AAAA,UACrB,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,IAAI,YAAY;AACZ,mBAAO,KAAK;AAAA,UAChB;AAAA,UACA,IAAI,UAAU,KAAK;AACf,gBAAI,KAAK,WAAW,KAAK,QAAQ,EAAG,MAAK,SAAS;AAAA,UACtD;AAAA,UACA,IAAI,WAAW;AACX,mBAAO,KAAK;AAAA,UAChB;AAAA,UACA,IAAI,SAAS,KAAK;AACd,gBAAI,KAAK,UAAU,KAAK,QAAQ,EAAG,MAAK,QAAQ;AAAA,UACpD;AAAA,UACA,eAAe,SAAS,cAAc,QAAQ,OAAO;AACjD,gBAAI,KAAK,WAAW,KAAK,WAAW,EAAG,MAAK,SAAS;AACrD,gBAAI,KAAK,UAAU,KAAK,UAAU,EAAG,MAAK,QAAQ;AAAA,UACtD;AAAA,QACJ;AAEA,YAAI,WAAW,SAAStS,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK;AAEhB,eAAKA,MAAK,SAAS,QAAQ,MAAM;AAEjC,UAAAA,MAAK,IAAI,oBAAoB,KAAK,IAAI;AAAA,QAC1C;AAOA,YAAI,cAAc,SAASiR,aAAY,OAAO;AAC1C,cAAIjR,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAIP,MAAK,OAAO,IACZ7D,SAAQ,OAAO,OACf,oBAAoB,OAAO;AAE/B,UAAAoE,MAAK,IAAI,WAAWpE;AAEpB,cAAIsV,OAAM,KAAK,IAAI;AACnB,cAAI,YAAYA;AAChB,cAAI,UAAU;AAEd,cAAI,sBAAsB,kBAAkB,MAAM;AAC9C,sBAAU;AACV,gBAAI,WAAWlR,MAAK,MAAM,0BAA0B;AACpD,gBAAI,OAAOkR,OAAMlR,MAAK,IAAI;AAC1B,wBAAY,OAAO,WAAWkR,QAAO,WAAW,QAAQA;AAAA,UAC5D;AAEA,UAAAlR,MAAK,IAAI,oBAAoB;AAE7B,UAAAA,MAAK;AAAA,YACDA,MAAK;AAAA;AAAA,cAED;AAAA;AAAA,cAGA;AAAA,gBACI;AAAA,gBACA,IAAIP;AAAA,gBACJ;AAAA,gBACA;AAAA,cACJ;AAAA,YACJ;AAAA,YAEA7D;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,WAAW,SAASuV,UAAS/K,OAAMyI,IAAGC,IAAG;AACzC,cAAI,KAAK,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC7E,cAAI,KAAK,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAE7E,cAAI1I,MAAK,YAAY;AACjB,YAAAA,MAAK,aAAa;AAClB,YAAAA,MAAK,aAAa;AAClB,YAAAA,MAAK,aAAaA,MAAK,WAAW,IAAIA,MAAK,WAAW;AACtD,YAAAA,MAAK,aAAaA,MAAK,WAAW,IAAIA,MAAK,WAAW;AACtD,YAAAA,MAAK,SAAS;AACd,YAAAA,MAAK,SAAS;AAAA,UAClB,OAAO;AACH,YAAAA,MAAK,aAAayI;AAClB,YAAAzI,MAAK,aAAa0I;AAElB,gBAAI,KAAK,IAAI,IAAI1I,MAAK,WAAW;AAE7B,kBAAIA,MAAK,YAAY,GAAG;AACpB,8BAAcA,OAAMyI,IAAGC,IAAG,IAAI,EAAE;AAAA,cACpC;AAGA,cAAA1I,MAAK,SAAS;AACd,cAAAA,MAAK,SAAS;AACd,cAAAA,MAAK,UAAU;AAAA,YACnB;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,gBAAgB,SAASgL,eAAchL,OAAMyI,IAAGC,IAAG,IAAI,IAAI;AAC3D,cAAI1I,MAAK,sBAAsB,kBAAkB,MAAM;AACnD,YAAAA,MAAK,aAAa;AAClB,YAAAA,MAAK,aAAayI;AAClB,YAAAzI,MAAK,aAAa;AAClB,YAAAA,MAAK,aAAa0I;AAAA,UACtB,WAAW1I,MAAK,sBAAsB,kBAAkB,MAAM;AAC1D,YAAAA,MAAK,aAAa;AAClB,YAAAA,MAAK,aAAayI,KAAI,KAAK;AAE3B,YAAAzI,MAAK,aAAa;AAClB,YAAAA,MAAK,aAAa0I,KAAI,KAAK;AAE3B,YAAA1I,MAAK,SAAS;AACd,YAAAA,MAAK,SAAS;AAAA,UAClB,WAAWA,MAAK,sBAAsB,kBAAkB,QAAQ;AAC5D,YAAAA,MAAK,aAAa;AAClB,YAAAA,MAAK,aAAa0I,KAAI;AAAA,UAC1B,WAAW1I,MAAK,sBAAsB,kBAAkB,KAAK;AACzD,YAAAA,MAAK,aAAa;AAClB,YAAAA,MAAK,aAAayI,KAAI;AACtB,YAAAzI,MAAK,aAAa;AAAA,UACtB;AAAA,QACJ;AAOA,YAAI,iBAAiB,SAASiL,gBAAe,OAAO;AAChD,cAAIrR,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAIP,MAAK,OAAO;AAGhB,cAAI,OAAOO,MAAK,WAAW,KAAK,SAAS,OAAO;AAC5C,mBAAO,MAAM,OAAOP;AAAA,UACxB,CAAC;AAGD,cAAI,CAAC,MAAM;AACP;AAAA,UACJ;AAGA,eAAK,SAAS;AACd,eAAK,SAAS;AACd,eAAK,UAAU;AAGf,eAAK,mBAAmB;AAAA,QAC5B;AAEA,YAAI,gBAAgB,SAAS6R,eAAc,OAAO;AAC9C,iBACI,MAAM,KAAK,QAAQ,SACnB,MAAM,KAAK,QAAQ,eACnB,MAAM,KAAK,QAAQ;AAAA,QAE3B;AACA,YAAI,eAAe,SAASC,cAAa,OAAO;AAC5C,iBACI,MAAM,KAAK,QAAQ,QACnB,MAAM,KAAK,QAAQ,aAAa,MAChC,MAAM,KAAK,QAAQ,cAAc;AAAA,QAEzC;AAEA,YAAI,WAAW,SAASC,UAAS,OAAO;AACpC,cAAIxR,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAIP,MAAK,OAAO,IACZ,YAAY,OAAO;AAGvB,cAAI2G,QAAOpG,MAAK,MAAM,YAAY,EAAE,IAAIP,IAAG,CAAC;AAG5C,cAAI,OAAOO,MAAK,WAAW,KAAK,SAAS,OAAO;AAC5C,mBAAO,MAAM,OAAOP;AAAA,UACxB,CAAC;AAED,cAAI,WAAWO,MAAK,WAAW;AAC/B,cAAIyR,YAAW,UAAU,aAAarL,KAAI;AAG1C,cAAI,CAAC,KAAM;AAEX,cAAI,eAAe;AAAA,YACf,GAAG,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI,KAAK,WAAW;AAAA,YAC3D,GAAG,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI,KAAK,WAAW;AAAA,UAC/D;AAGA,cAAI,aAAa,cAAc,IAAI;AACnC,cAAI,YAAY,aAAa,IAAI;AAGjC,cAAI,OAAO,KAAK,MAAMpG,MAAK,KAAK,MAAM,QAAQ,SAAS;AACvD,cAAI,OAAO,SAAU,QAAO;AAG5B,cAAI,OAAO,KAAK,MAAM,WAAW,OAAO,CAAC;AAEzC,6BAAmB,YAAY,aAAa;AAC5C,6BAAmB,WAAW,YAAY;AAG1C,cAAI0R,YAAW;AAAA,YACX,GAAG,KAAK,MAAM,aAAa,IAAI,UAAU;AAAA,YACzC,GAAG,KAAK,MAAM,aAAa,IAAI,SAAS;AAAA,YACxC,cAAc,SAAS,eAAe;AAClC,kBACI,aAAa,IAAI,mBAAmB,aACpC,aAAa,IAAI,KACjB,aAAa,IAAI,mBAAmB,YACpC,aAAa,IAAI;AAEjB,uBAAOD;AACX,qBAAO,KAAK,IAAI,OAAO,KAAK;AAAA,YAChC;AAAA,YACA,aAAa,SAAS,cAAc;AAChC,kBAAI,QAAQzR,MAAK,MAAM,kBAAkB;AACzC,kBAAI,kBAAkBA,MAAK,WAAW,OAAO,SAAS,OAAO;AACzD,uBAAO,MAAM,KAAK,QAAQ;AAAA,cAC9B,CAAC;AACD,kBAAI,WAAW,MAAM,IAAI,SAASoG,OAAM;AACpC,uBAAO,gBAAgB,KAAK,SAAS,WAAW;AAC5C,yBAAO,UAAU,OAAOA,MAAK;AAAA,gBACjC,CAAC;AAAA,cACL,CAAC;AAED,kBAAIuL,gBAAe,SAAS,UAAU,SAAS,OAAO;AAClD,uBAAO,UAAU;AAAA,cACrB,CAAC;AACD,kBAAIC,cAAa,cAAc,IAAI;AACnC,kBAAIZ,KAAI,SAAS;AACjB,kBAAI,MAAMA;AACV,kBAAI,cAAc;AAClB,kBAAI,cAAc;AAClB,kBAAI,WAAW;AACf,uBAASzO,KAAI,GAAGA,KAAIyO,IAAGzO,MAAK;AACxB,8BAAc,cAAc,SAASA,EAAC,CAAC;AACvC,2BAAW;AACX,8BAAc,WAAW;AACzB,oBAAI,aAAa,IAAI,aAAa;AAC9B,sBAAIoP,gBAAepP,IAAG;AAClB,wBAAI,aAAa,IAAI,WAAWqP,aAAY;AACxC,4BAAMrP;AACN;AAAA,oBACJ;AACA;AAAA,kBACJ;AACA,wBAAMA;AACN;AAAA,gBACJ;AAAA,cACJ;AACA,qBAAO;AAAA,YACX;AAAA,UACJ;AAGA,cAAI3G,SAAQ,OAAO,IAAI8V,UAAS,aAAa,IAAIA,UAAS,YAAY;AACtE,UAAA1R,MAAK,SAAS,aAAa,EAAE,OAAO,MAAM,OAAOpE,OAAM,CAAC;AAGxD,cAAI,eAAe,UAAU,SAAS;AAEtC,cAAI,iBAAiB,UAAa,iBAAiBA,QAAO;AACtD,sBAAU,SAASA,MAAK;AAExB,gBAAI,iBAAiB,OAAW;AAEhC,YAAAoE,MAAK,SAAS,qBAAqB;AAAA,cAC/B,OAAOA,MAAK,MAAM,kBAAkB;AAAA,cACpC,QAAQyR;AAAA,cACR,QAAQ7V;AAAA,YACZ,CAAC;AAAA,UACL;AAAA,QACJ;AAKA,YAAI,UAAU,YAAY;AAAA,UACtB,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,eAAe;AAAA,QACnB,CAAC;AAQD,YAAI,UAAU,SAAS4B,OAAM,OAAO;AAChC,cAAIwC,QAAO,MAAM,MACb,QAAQ,MAAM,OACdrF,WAAU,MAAM,SAChB,iBAAiB,MAAM;AAE3B,kBAAQ,EAAE,MAAMqF,OAAM,OAAc,SAASrF,SAAQ,CAAC;AACtD,cAAI,kBAAkB,MAAM;AAG5B,cAAI,kBAAkBqF,MAAK,KAAK,QAAQ;AAGxC,cAAI,kBAAkBA,MAAK,WAAW,OAAO,SAAS,OAAO;AACzD,mBAAO,MAAM,KAAK,QAAQ;AAAA,UAC9B,CAAC;AAGD,cAAI,WAAWA,MACV,MAAM,kBAAkB,EACxB,IAAI,SAASoG,OAAM;AAChB,mBAAO,gBAAgB,KAAK,SAAS,OAAO;AACxC,qBAAO,MAAM,OAAOA,MAAK;AAAA,YAC7B,CAAC;AAAA,UACL,CAAC,EACA,OAAO,SAASA,OAAM;AACnB,mBAAOA;AAAA,UACX,CAAC;AAGL,cAAI,YAAY,kBACV,uBAAuBpG,OAAM,UAAU,eAAe,IACtD;AAGN,cAAI,WAAWA,MAAK,IAAI,YAAY;AAGpC,UAAAA,MAAK,IAAI,WAAW;AAEpB,cAAI,kBAAkB;AACtB,cAAI,oBAAoB;AACxB,cAAI,iBAAiB;AAErB,cAAI,SAAS,WAAW,EAAG;AAE3B,cAAI,YAAY,SAAS,CAAC,EAAE,KAAK;AACjC,cAAI,qBAAqB,UAAU,YAAY,UAAU;AACzD,cAAI,uBAAuB,UAAU,aAAa,UAAU;AAC5D,cAAI,YAAY,UAAU,QAAQ;AAClC,cAAI,aAAa,UAAU,SAAS;AACpC,cAAI,cAAc,eAAe,iBAAiB,SAAS;AAG3D,cAAI,gBAAgB,GAAG;AACnB,gBAAI,UAAU;AACd,gBAAI,aAAa;AAEjB,qBAAS,QAAQ,SAAS,OAAOpE,QAAO;AACpC,kBAAI,WAAW;AACX,oBAAI,OAAOA,SAAQ;AACnB,oBAAI,SAAS,IAAI;AACb,+BAAa,CAAC,qBAAqB;AAAA,gBACvC,WAAW,SAAS,IAAI;AACpB,+BAAa,CAAC,qBAAqB;AAAA,gBACvC,WAAW,SAAS,GAAG;AACnB,+BAAa,qBAAqB;AAAA,gBACtC,WAAW,SAAS,GAAG;AACnB,+BAAa,qBAAqB;AAAA,gBACtC,OAAO;AACH,+BAAa;AAAA,gBACjB;AAAA,cACJ;AAEA,kBAAI,gBAAgB;AAChB,sBAAM,aAAa;AACnB,sBAAM,aAAa;AAAA,cACvB;AAEA,kBAAI,CAAC,MAAM,kBAAkB;AACzB,yBAAS,OAAO,GAAG,UAAU,UAAU;AAAA,cAC3C;AAEA,kBAAIiW,cAAa,MAAM,KAAK,QAAQ,SAAS;AAE7C,kBAAI,eAAeA,eAAc,MAAM,mBAAmB,MAAM,UAAU;AAE1E,yBAAW;AAAA,YACf,CAAC;AAAA,UACL,OAEK;AACD,gBAAI,QAAQ;AACZ,gBAAI,QAAQ;AAEZ,qBAAS,QAAQ,SAAS,OAAOjW,QAAO;AACpC,kBAAIA,WAAU,WAAW;AACrB,kCAAkB;AAAA,cACtB;AAEA,kBAAIA,WAAU,UAAU;AACpB,kCAAkB;AAAA,cACtB;AAEA,kBAAI,MAAM,oBAAoB,MAAM,UAAU,KAAK;AAC/C,qCAAqB;AAAA,cACzB;AAEA,kBAAI,cAAcA,SAAQ,iBAAiB,kBAAkB;AAE7D,kBAAI,SAAS,cAAc;AAC3B,kBAAI,SAAS,KAAK,MAAM,cAAc,WAAW;AAEjD,kBAAI,UAAU,SAAS;AACvB,kBAAIkW,WAAU,SAAS;AAEvB,kBAAI,UAAU,KAAK,KAAK,UAAU,KAAK;AACvC,kBAAI,UAAU,KAAK,KAAKA,WAAU,KAAK;AAEvC,sBAAQ;AACR,sBAAQA;AAER,kBAAI,MAAM,iBAAkB;AAE5B,kBAAI,gBAAgB;AAChB,sBAAM,aAAa;AACnB,sBAAM,aAAa;AAAA,cACvB;AAEA,uBAAS,OAAO,SAASA,UAAS,SAAS,OAAO;AAAA,YACtD,CAAC;AAAA,UACL;AAAA,QACJ;AAOA,YAAI,uBAAuB,SAASC,sBAAqB,OAAOpX,UAAS;AACrE,iBAAOA,SAAQ,OAAO,SAAS,QAAQ;AAEnC,gBAAI,OAAO,QAAQ,OAAO,KAAK,IAAI;AAC/B,qBAAO,MAAM,OAAO,OAAO,KAAK;AAAA,YACpC;AAGA,mBAAO;AAAA,UACX,CAAC;AAAA,QACL;AAEA,YAAI,OAAO,WAAW;AAAA,UAClB,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,KAAK;AAAA,UACL,MAAM;AAAA,UACN,cAAc,SAAS,aAAa,OAAO;AACvC,gBAAIqF,QAAO,MAAM;AACjB,YAAAA,MAAK,WACA,OAAO,SAAS,MAAM;AACnB,qBAAO,KAAK,oBAAoB,KAAK,YAAY,KAAK,KAAK;AAAA,YAC/D,CAAC,EACA,QAAQ,SAAS,MAAM;AACpB,mBAAK,SAAS;AACd,cAAAA,MAAK,gBAAgB,IAAI;AAAA,YAC7B,CAAC;AAAA,UACT;AAAA,UACA,4BAA4B;AAAA,UAC5B,QAAQ;AAAA,YACJ,MAAM,CAAC,iBAAiB;AAAA,UAC5B;AAAA,QACJ,CAAC;AAED,YAAI,WAAW,SAAStB,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AACjB,UAAAA,MAAK,IAAI,OAAOA,MAAK,gBAAgBA,MAAK,gBAAgB,IAAI,CAAC;AAC/D,gBAAM,kBAAkB;AACxB,gBAAM,cAAc;AAAA,QACxB;AAEA,YAAI,uBAAuB,SAASgS,sBAAqB,OAAO;AAC5D,cAAIhS,QAAO,MAAM,MACb,QAAQ,MAAM,OACd,SAAS,MAAM;AACnB,cAAI,CAACA,MAAK,MAAM,kCAAkC,EAAG;AACrD,gBAAM,kBAAkB;AAAA,YACpB,MAAM,OAAO,SAAS,YAAYA,MAAK,IAAI,KAAK,KAAK,QAAQ;AAAA,YAC7D,KACI,OAAO,SAAS,YACfA,MAAK,KAAK,MAAM,MAAMA,MAAK,KAAK,QAAQ,YAAYA,MAAK,KAAK,QAAQ;AAAA,UAC/E;AAAA,QACJ;AAEA,YAAI,uBAAuB,SAASiS,sBAAqB,OAAO;AAC5D,cAAI,QAAQ,MAAM;AAClB,gBAAM,kBAAkB;AAAA,QAC5B;AAEA,YAAI,UAAU,YAAY;AAAA,UACtB,UAAU;AAAA,UACV,cAAc;AAAA,QAClB,CAAC;AAED,YAAI,UAAU,SAASzU,OAAM,OAAO;AAChC,cAAIwC,QAAO,MAAM,MACb,QAAQ,MAAM,OACdrF,WAAU,MAAM;AAGpB,kBAAQ,EAAE,MAAMqF,OAAM,OAAc,SAASrF,SAAQ,CAAC;AAGtD,UAAAqF,MAAK,IAAI,KAAK,kBAAkB,MAAM;AAGtC,cAAI,MAAM,eAAe,CAAC,MAAM,UAAU;AACtC,kBAAM,cAAc;AAGpB,YAAAA,MAAK,QAAQ,QAAQ,QAAQ;AAC7B,YAAAA,MAAK,SAAS;AAAA,UAClB;AAGA,cAAI,MAAM,UAAU;AAChB,gBAAI,YAAY,KAAK,MAAM,MAAM,QAAQ;AACzC,gBAAI,cAAcA,MAAK,QAAQ;AAC3B,oBAAM,cAAc;AACpB,cAAAA,MAAK,QAAQ,QAAQ,QAAQ;AAC7B,cAAAA,MAAK,SAAS;AAAA,YAClB;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,eAAe,WAAW;AAAA,UAC1B,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,YACJ,MAAM,CAAC,YAAY,iBAAiB;AAAA,YACpC,QAAQ,CAAC,UAAU,YAAY;AAAA,YAC/B,YAAY;AAAA,cACR,YAAY;AAAA,YAChB;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,YAAI,aAAa,SAASkS,YAAW,SAAS1W,OAAMZ,QAAO;AACvD,cAAI,eAAe,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACvF,cAAIA,QAAO;AACP,iBAAK,SAASY,OAAM,YAAY;AAAA,UACpC,OAAO;AACH,oBAAQ,gBAAgBA,KAAI;AAAA,UAChC;AAAA,QACJ;AAEA,YAAI,iBAAiB,SAAS2W,gBAAe,OAAO;AAEhD,cAAI,CAAC,SAAS,MAAM,UAAU,IAAI;AAC9B;AAAA,UACJ;AAEA,cAAI;AAEA,kBAAM,QAAQ;AAAA,UAClB,SAAS,KAAK;AAAA,UAAC;AAGf,cAAI,MAAM,OAAO;AAEb,gBAAI,OAAO,gBAAgB,MAAM;AACjC,gBAAI,aAAa,MAAM;AACvB,gBAAI,MAAM,MAAM;AAChB,iBAAK,YAAY,KAAK;AACtB,iBAAK,MAAM;AAGX,gBAAI,KAAK;AACL,yBAAW,aAAa,OAAO,GAAG;AAAA,YACtC,OAAO;AACH,yBAAW,YAAY,KAAK;AAAA,YAChC;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,WAAW,SAASzT,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AAEjB,UAAAA,MAAK,QAAQ,KAAK,uBAAuB,MAAM;AAG/C,eAAKA,MAAK,SAAS,QAAQA,MAAK,MAAM,UAAU,CAAC;AAGjD,eAAKA,MAAK,SAAS,iBAAiB,yBAAyB,MAAM,EAAE;AAGrE,eAAKA,MAAK,SAAS,mBAAmB,0BAA0B,MAAM,EAAE;AAGxE,+BAAqB;AAAA,YACjB,MAAMA;AAAA,YACN,QAAQ,EAAE,OAAOA,MAAK,MAAM,yBAAyB,EAAE;AAAA,UAC3D,CAAC;AACD,8BAAoB,EAAE,MAAMA,OAAM,QAAQ,EAAE,OAAOA,MAAK,MAAM,oBAAoB,EAAE,EAAE,CAAC;AACvF,gCAAsB;AAAA,YAClB,MAAMA;AAAA,YACN,QAAQ,EAAE,OAAOA,MAAK,MAAM,4BAA4B,EAAE;AAAA,UAC9D,CAAC;AACD,yBAAe,EAAE,MAAMA,MAAK,CAAC;AAC7B,yBAAe,EAAE,MAAMA,OAAM,QAAQ,EAAE,OAAOA,MAAK,MAAM,cAAc,EAAE,EAAE,CAAC;AAC5E,2BAAiB,EAAE,MAAMA,OAAM,QAAQ,EAAE,OAAOA,MAAK,MAAM,oBAAoB,EAAE,EAAE,CAAC;AAGpF,UAAAA,MAAK,IAAI,eAAe,SAAS0B,IAAG;AAChC,gBAAI,CAAC1B,MAAK,QAAQ,OAAO;AACrB;AAAA,YACJ;AAGA,gBAAI,QAAQ,MAAM,KAAKA,MAAK,QAAQ,KAAK,EAAE,IAAI,SAASsI,OAAM;AAC1D,cAAAA,MAAK,gBAAgBA,MAAK;AAC1B,qBAAOA;AAAA,YACX,CAAC;AAGD,uBAAW,WAAW;AAElB,oBAAM,OAAO,KAAK;AAGlB,6BAAetI,MAAK,OAAO;AAAA,YAC/B,GAAG,GAAG;AAAA,UACV;AAEA,UAAAA,MAAK,QAAQ,iBAAiB,UAAUA,MAAK,IAAI,YAAY;AAAA,QACjE;AAEA,YAAI,uBAAuB,SAASoS,sBAAqB,OAAO;AAC5D,cAAIpS,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAI,CAACA,MAAK,MAAM,iCAAiC,EAAG;AACpD;AAAA,YACIA,MAAK;AAAA,YACL;AAAA,YACA,CAAC,CAAC,OAAO;AAAA,YACT,OAAO,QAAQ,OAAO,MAAM,KAAK,GAAG,IAAI;AAAA,UAC5C;AAAA,QACJ;AAEA,YAAI,sBAAsB,SAASqS,qBAAoB,OAAO;AAC1D,cAAIrS,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,qBAAWA,MAAK,SAAS,YAAY,OAAO,KAAK;AAAA,QACrD;AAEA,YAAI,wBAAwB,SAASsS,uBAAsB,OAAO;AAC9D,cAAItS,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,qBAAWA,MAAK,SAAS,mBAAmB,OAAO,KAAK;AAAA,QAC5D;AAEA,YAAI,iBAAiB,SAASuS,gBAAe,OAAO;AAChD,cAAIvS,QAAO,MAAM;AACjB,cAAI,aAAaA,MAAK,MAAM,cAAc;AAC1C,cAAI,kBAAkBA,MAAK,MAAM,kBAAkB;AACnD,cAAI,eAAe,cAAc,CAAC;AAClC,qBAAWA,MAAK,SAAS,YAAY,YAAY;AAAA,QACrD;AAEA,YAAI,iBAAiB,SAASwS,gBAAe,OAAO;AAChD,cAAIxS,QAAO,MAAM,MACb,SAAS,MAAM;AAEnB,cAAI,CAAC,OAAO,OAAO;AACf,uBAAWA,MAAK,SAAS,YAAY,KAAK;AAAA,UAC9C,WAESA,MAAK,MAAM,iBAAiB,MAAM,GAAG;AAC1C,uBAAWA,MAAK,SAAS,YAAY,IAAI;AAAA,UAC7C;AAAA,QACJ;AAEA,YAAI,mBAAmB,SAASyS,kBAAiB,OAAO;AACpD,cAAIzS,QAAO,MAAM,MACb,SAAS,MAAM;AACnB;AAAA,YACIA,MAAK;AAAA,YACL;AAAA,YACA,CAAC,CAAC,OAAO;AAAA,YACT,OAAO,UAAU,OAAO,KAAK,OAAO;AAAA,UACxC;AAAA,QACJ;AAEA,YAAI,uBAAuB,SAAS0S,sBAAqB,OAAO;AAC5D,cAAI1S,QAAO,MAAM;AACjB,cAAI,UAAUA,MAAK;AAEnB,cAAIA,MAAK,MAAM,iBAAiB,IAAI,GAAG;AACnC,uBAAW,SAAS,YAAY,KAAK;AACrC,uBAAW,SAAS,QAAQ,KAAK;AAGjC,gBAAI,cAAcA,MAAK,MAAM,kBAAkB;AAC/C,gBAAI,kBAAkB;AACtB,qBAASuC,KAAI,GAAGA,KAAI,YAAY,QAAQA,MAAK;AACzC,kBAAI,YAAYA,EAAC,EAAE,WAAW,WAAW,YAAY;AACjD,kCAAkB;AAAA,cACtB;AAAA,YACJ;AAEA,YAAAvC,MAAK,QAAQ;AAAA,cACT,kBAAkBA,MAAK,MAAM,yBAAyB,IAAI;AAAA,YAC9D;AAAA,UACJ,OAAO;AAEH,uBAAW,SAAS,QAAQ,MAAMA,MAAK,MAAM,UAAU,CAAC;AAGxD,gBAAI,sBAAsBA,MAAK,MAAM,oBAAoB;AACzD,gBAAI,qBAAqB;AACrB,sBAAQ,kBAAkB,EAAE;AAAA,YAChC;AAGA,gBAAIA,MAAK,MAAM,cAAc,GAAG;AAC5B,yBAAW,SAAS,YAAY,IAAI;AAAA,YACxC;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,4BAA4B,SAAS2S,2BAA0B,OAAO;AACtE,cAAI3S,QAAO,MAAM;AACjB,cAAI,sBAAsBA,MAAK,MAAM,oBAAoB;AACzD,cAAI,CAAC,oBAAqB;AAC1B,UAAAA,MAAK,QAAQ,kBAAkBA,MAAK,MAAM,yBAAyB,CAAC;AAAA,QACxE;AAEA,YAAI,UAAU,WAAW;AAAA,UACrB,KAAK;AAAA,UACL,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,kBAAkB;AAAA,UAClB,YAAY;AAAA,YACR,MAAM;AAAA,UACV;AAAA,UAEA,QAAQ;AAAA,UACR,SAAS,SAASvC,SAAQ,QAAQ;AAC9B,gBAAIuC,QAAO,OAAO;AAClB,YAAAA,MAAK,QAAQ,oBAAoB,UAAUA,MAAK,IAAI,YAAY;AAAA,UACpE;AAAA,UACA,OAAO,YAAY;AAAA,YACf,eAAe;AAAA,YACf,iBAAiB;AAAA,YACjB,wBAAwB;AAAA,YAExB,kBAAkB;AAAA,YAClB,sBAAsB;AAAA,YACtB,gCAAgC;AAAA,YAChC,wBAAwB;AAAA,YACxB,6BAA6B;AAAA,YAC7B,wBAAwB;AAAA,YACxB,kBAAkB;AAAA,UACtB,CAAC;AAAA,QACL,CAAC;AAED,YAAI,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QACX;AAEA,YAAI,WAAW,SAAStB,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AAEjB,cAAI,QAAQ,gBAAgB,OAAO;AACnC,eAAK,OAAO,OAAO,uBAAuB,MAAM,EAAE;AAGlD,eAAK,OAAO,MAAM,0BAA0B,MAAM,EAAE;AAGpD,UAAAA,MAAK,IAAI,gBAAgB,SAAS0B,IAAG;AACjC,gBAAI,kBAAkBA,GAAE,YAAY,IAAI,SAASA,GAAE,YAAY,IAAI;AACnE,gBAAI,CAAC,gBAAiB;AAEtB,YAAAA,GAAE,eAAe;AAGjB,YAAA1B,MAAK,IAAI,MAAM,MAAM;AAAA,UACzB;AAEA,UAAAA,MAAK,IAAI,cAAc,SAAS0B,IAAG;AAC/B,gBAAI,eAAeA,GAAE,WAAW,SAAS,MAAM,SAASA,GAAE,MAAM;AAGhE,gBAAI,aAAc;AAGlB,YAAA1B,MAAK,IAAI,MAAM,MAAM;AAAA,UACzB;AAGA,gBAAM,iBAAiB,WAAWA,MAAK,IAAI,aAAa;AACxD,UAAAA,MAAK,QAAQ,iBAAiB,SAASA,MAAK,IAAI,WAAW;AAG3D,2BAAiB,OAAO,MAAM,OAAO;AAGrC,UAAAA,MAAK,YAAY,KAAK;AACtB,UAAAA,MAAK,IAAI,QAAQ;AAAA,QACrB;AAEA,YAAI,mBAAmB,SAAS4S,kBAAiB,OAAO,OAAO;AAC3D,gBAAM,YAAY;AAClB,cAAI,YAAY,MAAM,cAAc,yBAAyB;AAC7D,cAAI,WAAW;AACX,iBAAK,WAAW,YAAY,GAAG;AAAA,UACnC;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS,SAASnV,SAAQ,OAAO;AAC7B,gBAAIuC,QAAO,MAAM;AACjB,YAAAA,MAAK,IAAI,MAAM,iBAAiB,WAAWA,MAAK,IAAI,aAAa;AACjE,YAAAA,MAAK,QAAQ,oBAAoB,SAASA,MAAK,IAAI,WAAW;AAAA,UAClE;AAAA,UACA,OAAO,YAAY;AAAA,YACf,oBAAoB,SAAS,mBAAmB,OAAO;AACnD,kBAAIA,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,+BAAiBA,MAAK,IAAI,OAAO,OAAO,KAAK;AAAA,YACjD;AAAA,UACJ,CAAC;AAAA,UAED,QAAQ;AAAA,YACJ,QAAQ,CAAC,WAAW,cAAc,YAAY;AAAA,YAC9C,YAAY;AAAA,cACR,SAAS,EAAE,MAAM,SAAS,UAAU,IAAI;AAAA,cACxC,YAAY;AAAA,cACZ,YAAY;AAAA,YAChB;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,YAAI,OAAO,WAAW;AAAA,UAClB,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,QAAQ;AAAA,YACJ,QAAQ,CAAC,cAAc,cAAc,UAAU,UAAU,SAAS;AAAA,YAClE,YAAY;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,SAAS,EAAE,MAAM,SAAS,UAAU,IAAI;AAAA,YAC5C;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,YAAI,UAAU,SAAS6S,SAAQ,MAAM;AACjC,cAAI7S,QAAO,KAAK;AAChB,cAAI,UAAUA,MAAK,KAAK,QAAQ,QAAQ;AACxC,cAAI,UAAUA,MAAK,KAAK,QAAQ,SAAS;AAEzC,UAAAA,MAAK,IAAI,OAAOA,MAAK;AAAA,YACjBA,MAAK,gBAAgB,MAAM;AAAA,cACvB,SAAS;AAAA,cACT,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,YAAY;AAAA,cACZ,YAAY;AAAA,YAChB,CAAC;AAAA,UACL;AAAA,QACJ;AAEA,YAAI,WAAW,SAAS8S,UAAS,OAAO;AACpC,cAAI9S,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAI,CAACA,MAAK,IAAI,MAAM;AAChB,oBAAQ,EAAE,MAAMA,MAAK,CAAC;AACtB;AAAA,UACJ;AAEA,UAAAA,MAAK,IAAI,KAAK,aAAa,OAAO,SAAS;AAC3C,UAAAA,MAAK,IAAI,KAAK,aAAa,OAAO,SAAS;AAC3C,UAAAA,MAAK,IAAI,KAAK,SAAS;AACvB,UAAAA,MAAK,IAAI,KAAK,SAAS;AACvB,UAAAA,MAAK,IAAI,KAAK,UAAU;AAAA,QAC5B;AAEA,YAAI,WAAW,SAAS+S,UAAS,OAAO;AACpC,cAAI/S,QAAO,MAAM;AACjB,cAAI,CAACA,MAAK,IAAI,MAAM;AAChB;AAAA,UACJ;AACA,UAAAA,MAAK,IAAI,KAAK,UAAU;AAAA,QAC5B;AAEA,YAAI,cAAc,SAASgT,aAAY,OAAO;AAC1C,cAAIhT,QAAO,MAAM;AACjB,cAAI,CAACA,MAAK,IAAI,MAAM;AAChB;AAAA,UACJ;AACA,UAAAA,MAAK,IAAI,KAAK,SAAS;AACvB,UAAAA,MAAK,IAAI,KAAK,SAAS;AACvB,UAAAA,MAAK,IAAI,KAAK,UAAU;AAAA,QAC5B;AAEA,YAAI,UAAU,SAASxC,OAAM,OAAO;AAChC,cAAIwC,QAAO,MAAM,MACb,QAAQ,MAAM,OACdrF,WAAU,MAAM;AACpB,kBAAQ,EAAE,MAAMqF,OAAM,OAAc,SAASrF,SAAQ,CAAC;AACtD,cAAI0N,QAAOrI,MAAK,IAAI;AAEpB,cAAIrF,SAAQ,WAAW,KAAK0N,SAAQA,MAAK,YAAY,GAAG;AACpD,YAAArI,MAAK,gBAAgBqI,KAAI;AACzB,YAAArI,MAAK,IAAI,OAAO;AAAA,UACpB;AAAA,QACJ;AAEA,YAAI,UAAU,YAAY;AAAA,UACtB,UAAU;AAAA,UACV,UAAU;AAAA,UACV,cAAc;AAAA,QAClB,CAAC;AAED,YAAI,OAAO,WAAW;AAAA,UAClB,YAAY;AAAA,UACZ,kBAAkB;AAAA,UAClB,MAAM;AAAA,UACN,OAAO;AAAA,QACX,CAAC;AAED,YAAI,gBAAgB,SAASiT,eAAc,SAAS,OAAO;AACvD,cAAI;AAEA,gBAAI,eAAe,IAAI,aAAa;AACpC,kBAAM,QAAQ,SAAS3K,OAAM;AACzB,kBAAIA,iBAAgB,MAAM;AACtB,6BAAa,MAAM,IAAIA,KAAI;AAAA,cAC/B,OAAO;AACH,6BAAa,MAAM;AAAA,kBACf,IAAI,KAAK,CAACA,KAAI,GAAGA,MAAK,MAAM;AAAA,oBACxB,MAAMA,MAAK;AAAA,kBACf,CAAC;AAAA,gBACL;AAAA,cACJ;AAAA,YACJ,CAAC;AAGD,oBAAQ,QAAQ,aAAa;AAAA,UACjC,SAAS,KAAK;AACV,mBAAO;AAAA,UACX;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,WAAW,SAAS5J,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK;AAChB,UAAAA,MAAK,IAAI,SAAS,CAAC;AACnB,cAAI,SAAS,SAAS,cAAc,QAAQ;AAC5C,iBAAO,cAAc;AACrB,UAAAA,MAAK,QAAQ,YAAY,MAAM;AAAA,QACnC;AAEA,YAAI,WAAW,SAASkT,UAASlT,OAAMP,KAAI;AACvC,iBAAOO,MAAK,IAAI,OAAOP,GAAE;AAAA,QAC7B;AAEA,YAAI,8BAA8B,SAAS0T,6BAA4BnT,OAAM;AACzE,UAAAA,MAAK,MAAM,kBAAkB,EAAE,QAAQ,SAASoG,OAAM;AAClD,gBAAI,CAACpG,MAAK,IAAI,OAAOoG,MAAK,EAAE,EAAG;AAC/B,YAAApG,MAAK,QAAQ,YAAYA,MAAK,IAAI,OAAOoG,MAAK,EAAE,CAAC;AAAA,UACrD,CAAC;AAAA,QACL;AAEA,YAAI,kBAAkB,SAASgN,iBAAgB,OAAO;AAClD,cAAIpT,QAAO,MAAM;AACjB,iBAAO,4BAA4BA,KAAI;AAAA,QAC3C;AAEA,YAAI,aAAa,SAASqT,YAAW,OAAO;AACxC,cAAIrT,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAI,WAAWA,MAAK,MAAM,YAAY,OAAO,EAAE;AAC/C,cAAI,cAAc,SAAS,WAAW,WAAW;AACjD,cAAI,qBAAqB,CAAC,eAAeA,MAAK,MAAM,0BAA0B;AAC9E,cAAI,gBAAgB,gBAAgB,OAAO;AAC3C,wBAAc,OAAO,qBAAqB,SAAS;AACnD,wBAAc,OAAOA,MAAK,MAAM,UAAU;AAC1C,UAAAA,MAAK,IAAI,OAAO,OAAO,EAAE,IAAI;AAC7B,sCAA4BA,KAAI;AAAA,QACpC;AAEA,YAAI,gBAAgB,SAASwQ,aAAY,OAAO;AAC5C,cAAIxQ,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAI,QAAQ,SAASA,OAAM,OAAO,EAAE;AACpC,cAAI,CAAC,MAAO;AAGZ,cAAI,OAAO,wBAAwB,KAAM,OAAM,QAAQ,OAAO;AAG9D,cAAI,CAACA,MAAK,MAAM,0BAA0B,EAAG;AAE7C,cAAI,WAAWA,MAAK,MAAM,YAAY,OAAO,EAAE;AAC/C,wBAAc,OAAO,CAAC,SAAS,IAAI,CAAC;AAAA,QACxC;AAEA,YAAI,mBAAmB,SAASsT,kBAAiB,OAAO;AACpD,cAAItT,QAAO,MAAM,MACb,SAAS,MAAM;AAEnB,cAAI,CAACA,MAAK,MAAM,0BAA0B,EAAG;AAC7C,qBAAW,WAAW;AAClB,gBAAI,QAAQ,SAASA,OAAM,OAAO,EAAE;AACpC,gBAAI,CAAC,MAAO;AACZ,0BAAc,OAAO,CAAC,OAAO,IAAI,CAAC;AAAA,UACtC,GAAG,CAAC;AAAA,QACR;AAEA,YAAI,iBAAiB,SAASuT,gBAAe,OAAO;AAChD,cAAIvT,QAAO,MAAM;AACjB,UAAAA,MAAK,QAAQ,WAAWA,MAAK,MAAM,cAAc;AAAA,QACrD;AAEA,YAAI,gBAAgB,SAASwT,eAAc,OAAO;AAC9C,cAAIxT,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAI,QAAQ,SAASA,OAAM,OAAO,EAAE;AACpC,cAAI,CAAC,MAAO;AACZ,cAAI,MAAM,WAAY,OAAM,WAAW,YAAY,KAAK;AACxD,iBAAOA,MAAK,IAAI,OAAO,OAAO,EAAE;AAAA,QACpC;AAIA,YAAI,iBAAiB,SAASyT,gBAAe,OAAO;AAChD,cAAIzT,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAI,QAAQ,SAASA,OAAM,OAAO,EAAE;AACpC,cAAI,CAAC,MAAO;AACZ,cAAI,OAAO,UAAU,MAAM;AAEvB,kBAAM,gBAAgB,OAAO;AAAA,UACjC,OAAO;AAEH,gBAAI,MAAM,QAAQ,QAAQ;AACtB,oBAAM,QAAQ,OAAO;AAAA,YACzB;AAAA,UACJ;AACA,sCAA4BA,KAAI;AAAA,QACpC;AAEA,YAAI,UAAU,YAAY;AAAA,UACtB,kBAAkB;AAAA,UAClB,cAAc;AAAA,UACd,eAAe;AAAA,UACf,iBAAiB;AAAA,UACjB,kBAAkB;AAAA,UAClB,oBAAoB;AAAA,UACpB,mBAAmB;AAAA,UACnB,gBAAgB;AAAA,QACpB,CAAC;AAED,YAAI,OAAO,WAAW;AAAA,UAClB,KAAK;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,YAAY;AAAA,QAChB,CAAC;AAED,YAAI,cAAc,SAAS0T,aAAY,SAAS;AAC5C,iBAAO,iBAAiB,UAAU,QAAQ,YAAY,IAAI;AAAA,QAC9D;AAEA,YAAI,SAAS,CAAC,OAAO,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,MAAM;AACvE,YAAI,SAAS,CAAC,OAAO,OAAO,QAAQ,KAAK;AACzC,YAAIpD,OAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,QACV;AAEA,YAAI,sBAAsB,SAASqD,uBAAsB;AACrD,cAAI,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACpF,sBAAY,UAAU,YAAY;AAClC,cAAI,OAAO,SAAS,SAAS,GAAG;AAC5B,mBACI,YACC,cAAc,QAAQ,SAAS,cAAc,QAAQ,YAAY;AAAA,UAE1E;AACA,cAAI,OAAO,SAAS,SAAS,GAAG;AAC5B,mBAAO,UAAU;AAAA,UACrB;AAEA,iBAAOrD,KAAI,SAAS,KAAK;AAAA,QAC7B;AAEA,YAAI,2BAA2B,SAASsD,0BAAyB,cAAc;AAC3E,iBAAO,IAAI,QAAQ,SAASpR,UAAS,QAAQ;AAEzC,gBAAI,QAAQ,SAAS,YAAY;AACjC,gBAAI,MAAM,UAAU,CAAC,SAAS,YAAY,GAAG;AACzC,qBAAOA,SAAQ,KAAK;AAAA,YACxB;AAEA,qBAAS,YAAY,EAAE,KAAKA,QAAO;AAAA,UACvC,CAAC;AAAA,QACL;AAKA,YAAI,WAAW,SAASqR,UAAS,cAAc;AAC3C,cAAI,aAAa,MAAO,QAAO,aAAa,MAAM,SAAS;AAC3D,iBAAO;AAAA,QACX;AAKA,YAAI,WAAW,SAASC,UAAS,cAAc;AAC3C,iBAAO,IAAI,QAAQ,SAAStR,UAAS,QAAQ;AAEzC,gBAAI,iBAAiB,aAAa,QAAQ,MAAM,KAAK,aAAa,KAAK,IAAI,CAAC,GAEvE,OAAO,SAAS4D,OAAM;AACnB,qBAAO,iBAAiBA,KAAI;AAAA,YAChC,CAAC,EAGA,IAAI,SAASA,OAAM;AAChB,qBAAO,iBAAiBA,KAAI;AAAA,YAChC,CAAC;AAGL,gBAAI,CAAC,cAAc,QAAQ;AAGvB,cAAA5D,SAAQ,aAAa,QAAQ,MAAM,KAAK,aAAa,KAAK,IAAI,CAAC,CAAC;AAChE;AAAA,YACJ;AAGA,oBAAQ,IAAI,aAAa,EACpB,KAAK,SAAS,oBAAoB;AAE/B,kBAAI,QAAQ,CAAC;AACb,iCAAmB,QAAQ,SAAS,OAAO;AACvC,sBAAM,KAAK,MAAM,OAAO,KAAK;AAAA,cACjC,CAAC;AAGD,cAAAA;AAAA,gBACI,MACK,OAAO,SAAS8F,OAAM;AACnB,yBAAOA;AAAA,gBACX,CAAC,EACA,IAAI,SAASA,OAAM;AAChB,sBAAI,CAACA,MAAK;AACN,oBAAAA,MAAK,gBAAgBA,MAAK;AAC9B,yBAAOA;AAAA,gBACX,CAAC;AAAA,cACT;AAAA,YACJ,CAAC,EACA,MAAM,QAAQ,KAAK;AAAA,UAC5B,CAAC;AAAA,QACL;AAEA,YAAI,mBAAmB,SAASyL,kBAAiB3N,OAAM;AACnD,cAAI,QAAQA,KAAI,GAAG;AACf,gBAAI,QAAQ,WAAWA,KAAI;AAC3B,gBAAI,OAAO;AACP,qBAAO,MAAM,UAAU,MAAM;AAAA,YACjC;AAAA,UACJ;AACA,iBAAOA,MAAK,SAAS;AAAA,QACzB;AAEA,YAAI,mBAAmB,SAAS4N,kBAAiB5N,OAAM;AACnD,iBAAO,IAAI,QAAQ,SAAS5D,UAAS,QAAQ;AACzC,gBAAI,iBAAiB4D,KAAI,GAAG;AACxB,kCAAoB,WAAWA,KAAI,CAAC,EAC/B,KAAK5D,QAAO,EACZ,MAAM,MAAM;AACjB;AAAA,YACJ;AAEA,YAAAA,SAAQ,CAAC4D,MAAK,UAAU,CAAC,CAAC;AAAA,UAC9B,CAAC;AAAA,QACL;AAEA,YAAI,sBAAsB,SAAS6N,qBAAoB,OAAO;AAC1D,iBAAO,IAAI,QAAQ,SAASzR,UAAS,QAAQ;AACzC,gBAAI,QAAQ,CAAC;AAGb,gBAAI,aAAa;AACjB,gBAAI,cAAc;AAElB,gBAAI,gBAAgB,SAAS0R,iBAAgB;AACzC,kBAAI,gBAAgB,KAAK,eAAe,GAAG;AACvC,gBAAA1R,SAAQ,KAAK;AAAA,cACjB;AAAA,YACJ;AAGA,gBAAI,cAAc,SAAS2R,aAAY,UAAU;AAC7C;AAEA,kBAAI,kBAAkB,SAAS,aAAa;AAG5C,kBAAI,YAAY,SAASC,aAAY;AACjC,gCAAgB,YAAY,SAAS,SAAS;AAC1C,sBAAI,QAAQ,WAAW,GAAG;AACtB;AACA,kCAAc;AACd;AAAA,kBACJ;AAEA,0BAAQ,QAAQ,SAASC,QAAO;AAE5B,wBAAIA,OAAM,aAAa;AACnB,sBAAAF,aAAYE,MAAK;AAAA,oBACrB,OAAO;AAEH;AAEA,sBAAAA,OAAM,KAAK,SAAS/L,OAAM;AACtB,4BAAI,gBAAgB,uBAAuBA,KAAI;AAC/C,4BAAI+L,OAAM;AACN,wCAAc,gBAAgBA,OAAM;AACxC,8BAAM,KAAK,aAAa;AACxB;AACA,sCAAc;AAAA,sBAClB,CAAC;AAAA,oBACL;AAAA,kBACJ,CAAC;AAGD,kBAAAD,WAAU;AAAA,gBACd,GAAG,MAAM;AAAA,cACb;AAGA,wBAAU;AAAA,YACd;AAGA,wBAAY,KAAK;AAAA,UACrB,CAAC;AAAA,QACL;AAEA,YAAI,yBAAyB,SAASE,wBAAuBhM,OAAM;AAC/D,cAAIA,MAAK,KAAK,OAAQ,QAAOA;AAC7B,cAAI,OAAOA,MAAK;AAChB,cAAI9M,QAAO8M,MAAK;AAChB,cAAI,OAAO,oBAAoB,yBAAyBA,MAAK,IAAI,CAAC;AAClE,cAAI,CAAC,KAAK,OAAQ,QAAOA;AACzB,UAAAA,QAAOA,MAAK,MAAM,GAAGA,MAAK,MAAM,IAAI;AACpC,UAAAA,MAAK,OAAO9M;AACZ,UAAA8M,MAAK,mBAAmB;AACxB,iBAAOA;AAAA,QACX;AAEA,YAAI,mBAAmB,SAASiM,kBAAiBnO,OAAM;AACnD,iBAAO,QAAQA,KAAI,MAAM,WAAWA,KAAI,KAAK,CAAC,GAAG;AAAA,QACrD;AAEA,YAAI,UAAU,SAASoO,SAAQpO,OAAM;AACjC,iBAAO,sBAAsBA;AAAA,QACjC;AAEA,YAAI,aAAa,SAASqO,YAAWrO,OAAM;AACvC,iBAAOA,MAAK,iBAAiB;AAAA,QACjC;AAKA,YAAI,WAAW,SAASsO,UAAS,cAAc;AAC3C,cAAI,QAAQ,CAAC;AACb,cAAI;AAEA,oBAAQ,6BAA6B,YAAY;AACjD,gBAAI,MAAM,QAAQ;AACd,qBAAO;AAAA,YACX;AACA,oBAAQ,4BAA4B,YAAY;AAAA,UACpD,SAAShT,IAAG;AAAA,UAEZ;AACA,iBAAO;AAAA,QACX;AAEA,YAAI,8BAA8B,SAASiT,6BAA4B,cAAc;AACjF,cAAI1Z,QAAO,aAAa,QAAQ,KAAK;AACrC,cAAI,OAAOA,UAAS,YAAYA,MAAK,QAAQ;AACzC,mBAAO,CAACA,KAAI;AAAA,UAChB;AACA,iBAAO,CAAC;AAAA,QACZ;AAEA,YAAI,+BAA+B,SAAS2Z,8BAA6B,cAAc;AACnF,cAAI3Z,QAAO,aAAa,QAAQ,WAAW;AAC3C,cAAI,OAAOA,UAAS,YAAYA,MAAK,QAAQ;AACzC,gBAAI+N,WAAU/N,MAAK,MAAM,mBAAmB;AAC5C,gBAAI+N,UAAS;AACT,qBAAO,CAACA,SAAQ,CAAC,CAAC;AAAA,YACtB;AAAA,UACJ;AACA,iBAAO,CAAC;AAAA,QACZ;AAEA,YAAI,qBAAqB,CAAC;AAE1B,YAAI,gBAAgB,SAAS6L,eAAcnT,IAAG;AAC1C,iBAAO;AAAA,YACH,UAAUA,GAAE;AAAA,YACZ,SAASA,GAAE;AAAA,YACX,WAAWA,GAAE,WAAWA,GAAE;AAAA,YAC1B,UAAUA,GAAE,WAAWA,GAAE;AAAA,UAC7B;AAAA,QACJ;AAEA,YAAI,wBAAwB,SAASoT,uBACjC,SACA,gBACA,eACF;AACE,cAAI,WAAW,qBAAqB,cAAc;AAElD,cAAI,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,YAC3B,SAAS,SAAS,UAAU;AAAA,YAAC;AAAA,YAC7B,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,YAC3B,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,YAC3B,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,YAC3B,WAAW,SAAS,YAAY;AAAA,YAAC;AAAA,UACrC;AAEA,iBAAO,UAAU,SAAS,YAAY,MAAM;AAE5C,iBAAO;AAAA,QACX;AAEA,YAAI,uBAAuB,SAASC,sBAAqB,SAAS;AAE9D,cAAI,WAAW,mBAAmB,KAAK,SAAS3O,OAAM;AAClD,mBAAOA,MAAK,YAAY;AAAA,UAC5B,CAAC;AACD,cAAI,UAAU;AACV,mBAAO;AAAA,UACX;AAGA,cAAI,cAAc,wBAAwB,OAAO;AACjD,6BAAmB,KAAK,WAAW;AACnC,iBAAO;AAAA,QACX;AAEA,YAAI,0BAA0B,SAAS4O,yBAAwB,SAAS;AACpE,cAAI,UAAU,CAAC;AAEf,cAAI,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA,MAAMnE;AAAA,UACV;AAEA,cAAI,WAAW,CAAC;AAEhB,gBAAM,QAAQ,SAAS/S,QAAO,eAAe;AACzC,qBAASA,MAAK,IAAI,cAAc,SAAS,OAAO;AAChD,oBAAQ,iBAAiBA,QAAO,SAASA,MAAK,GAAG,KAAK;AAAA,UAC1D,CAAC;AAED,cAAI,WAAW;AAAA,YACX;AAAA,YACA,aAAa,SAASmX,aAAY,QAAQ;AAEtC,sBAAQ,KAAK,MAAM;AAGnB,qBAAO,WAAW;AAEd,wBAAQ,OAAO,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAGzC,oBAAI,QAAQ,WAAW,GAAG;AACtB,qCAAmB,OAAO,mBAAmB,QAAQ,QAAQ,GAAG,CAAC;AAEjE,wBAAM,QAAQ,SAASnX,QAAO;AAC1B,4BAAQ,oBAAoBA,QAAO,SAASA,MAAK,GAAG,KAAK;AAAA,kBAC7D,CAAC;AAAA,gBACL;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,YAAI,mBAAmB,SAASoX,kBAAiBlV,OAAM,OAAO;AAC1D,cAAI,EAAE,sBAAsBA,QAAO;AAC/B,YAAAA,QAAO;AAAA,UACX;AACA,iBAAOA,MAAK,iBAAiB,MAAM,GAAG,MAAM,CAAC;AAAA,QACjD;AAEA,YAAI,gBAAgB,SAASmV,eAAczT,IAAG,QAAQ;AAElD,cAAI1B,QAAO,YAAY,MAAM;AAI7B,cAAI,oBAAoB,iBAAiBA,OAAM;AAAA,YAC3C,GAAG0B,GAAE,QAAQ,OAAO;AAAA,YACpB,GAAGA,GAAE,QAAQ,OAAO;AAAA,UACxB,CAAC;AAGD,iBAAO,sBAAsB,UAAU,OAAO,SAAS,iBAAiB;AAAA,QAC5E;AAEA,YAAI,gBAAgB;AAEpB,YAAI,gBAAgB,SAAS0T,eAAc,cAAc,QAAQ;AAE7D,cAAI;AACA,yBAAa,aAAa;AAAA,UAC9B,SAAS1T,IAAG;AAAA,UAAC;AAAA,QACjB;AAEA,YAAI,YAAY,SAAS2T,WAAUrV,OAAM,SAAS;AAC9C,iBAAO,SAAS0B,IAAG;AACf,YAAAA,GAAE,eAAe;AAEjB,4BAAgBA,GAAE;AAElB,oBAAQ,QAAQ,SAAS,QAAQ;AAC7B,kBAAI,UAAU,OAAO,SACjB,UAAU,OAAO;AAErB,kBAAI,cAAcA,IAAG,OAAO,GAAG;AAC3B,uBAAO,QAAQ;AAGf,wBAAQ,cAAcA,EAAC,CAAC;AAAA,cAC5B;AAAA,YACJ,CAAC;AAAA,UACL;AAAA,QACJ;AAEA,YAAI,WAAW,SAAS4T,UAAStV,OAAM,SAAS;AAC5C,iBAAO,SAAS0B,IAAG;AACf,YAAAA,GAAE,eAAe;AAEjB,gBAAI,eAAeA,GAAE;AAErB,qCAAyB,YAAY,EAAE,KAAK,SAAS,OAAO;AACxD,kBAAI,iBAAiB;AAErB,sBAAQ,KAAK,SAAS,QAAQ;AAC1B,oBAAI,gBAAgB,OAAO,eACvB,UAAU,OAAO,SACjB,UAAU,OAAO,SACjB,SAAS,OAAO,QAChB,SAAS,OAAO,QAChB,YAAY,OAAO;AAGvB,8BAAc,cAAc,MAAM;AAGlC,oBAAI,iBAAiB,UAAU,KAAK;AAGpC,oBAAI,CAAC,gBAAgB;AACjB,gCAAc,cAAc,MAAM;AAClC;AAAA,gBACJ;AAGA,oBAAI,cAAcA,IAAG,OAAO,GAAG;AAC3B,mCAAiB;AAGjB,sBAAI,OAAO,UAAU,MAAM;AACvB,2BAAO,QAAQ;AACf,4BAAQ,cAAcA,EAAC,CAAC;AACxB;AAAA,kBACJ;AAGA,yBAAO,QAAQ;AAGf,sBAAI,iBAAiB,CAAC,gBAAgB;AAClC,kCAAc,cAAc,MAAM;AAClC;AAAA,kBACJ;AAGA,yBAAO,cAAcA,EAAC,CAAC;AAAA,gBAC3B,OAAO;AAEH,sBAAI,iBAAiB,CAAC,gBAAgB;AAClC,kCAAc,cAAc,MAAM;AAAA,kBACtC;AAGA,sBAAI,OAAO,OAAO;AACd,2BAAO,QAAQ;AACf,2BAAO,cAAcA,EAAC,CAAC;AAAA,kBAC3B;AAAA,gBACJ;AAAA,cACJ,CAAC;AAAA,YACL,CAAC;AAAA,UACL;AAAA,QACJ;AAEA,YAAImP,QAAO,SAASA,MAAK7Q,OAAM,SAAS;AACpC,iBAAO,SAAS0B,IAAG;AACf,YAAAA,GAAE,eAAe;AAEjB,gBAAI,eAAeA,GAAE;AAErB,qCAAyB,YAAY,EAAE,KAAK,SAAS,OAAO;AACxD,sBAAQ,QAAQ,SAAS,QAAQ;AAC7B,oBAAI,gBAAgB,OAAO,eACvB,UAAU,OAAO,SACjB,SAAS,OAAO,QAChB,SAAS,OAAO,QAChB,YAAY,OAAO;AAEvB,uBAAO,QAAQ;AAGf,oBAAI,iBAAiB,CAAC,cAAcA,IAAG,OAAO,EAAG;AAGjD,oBAAI,CAAC,UAAU,KAAK,EAAG,QAAO,OAAO,cAAcA,EAAC,CAAC;AAGrD,uBAAO,cAAcA,EAAC,GAAG,KAAK;AAAA,cAClC,CAAC;AAAA,YACL,CAAC;AAAA,UACL;AAAA,QACJ;AAEA,YAAI,YAAY,SAAS6T,WAAUvV,OAAM,SAAS;AAC9C,iBAAO,SAAS0B,IAAG;AACf,gBAAI,kBAAkBA,GAAE,QAAQ;AAC5B;AAAA,YACJ;AAEA,oBAAQ,QAAQ,SAAS,QAAQ;AAC7B,kBAAI,SAAS,OAAO;AAEpB,qBAAO,QAAQ;AAEf,qBAAO,cAAcA,EAAC,CAAC;AAAA,YAC3B,CAAC;AAAA,UACL;AAAA,QACJ;AAEA,YAAI,eAAe,SAAS8T,cAAa,OAAO,eAAe,SAAS;AAEpE,gBAAM,UAAU,IAAI,kBAAkB;AAGtC,cAAI,qBAAqB,QAAQ,oBAC7B,wBAAwB,QAAQ,uBAChC,uBAAuB,QAAQ,aAC/B,cACI,yBAAyB,SACnB,SAAS,OAAO;AACZ,mBAAO;AAAA,UACX,IACA;AAGd,cAAI,SAAS;AAAA,YACT;AAAA,YACA,qBAAqB,SAAS,kBAAkB;AAAA,YAChD;AAAA,UACJ;AAGA,cAAI,YAAY;AAChB,cAAI,eAAe;AAGnB,iBAAO,YAAY,SAAS,OAAO;AAG/B,mBAAO,cAAc,YAAY,KAAK,CAAC;AAAA,UAC3C;AAEA,iBAAO,SAAS,SAAS,UAAU,OAAO;AACtC,gBAAI,gBAAgB,YAAY,KAAK;AAErC,gBAAI,CAAC,cAAc,aAAa,GAAG;AAC/B,kBAAI,UAAU,QAAQ;AACtB;AAAA,YACJ;AAEA,2BAAe;AAEf,gBAAI,OAAO,eAAe,QAAQ;AAAA,UACtC;AAEA,iBAAO,SAAS,SAAS,UAAU;AAC/B,gBAAI,OAAO,QAAQ;AAAA,UACvB;AAEA,iBAAO,UAAU,SAAS,UAAU;AAChC,2BAAe;AAEf,gBAAI,YAAY,QAAQ;AAAA,UAC5B;AAEA,iBAAO,SAAS,SAAS,UAAU;AAC/B,2BAAe;AAEf,gBAAI,UAAU,QAAQ;AAAA,UAC1B;AAEA,cAAI,MAAM;AAAA,YACN,mBAAmB,SAAS,oBAAoB;AAC5C,kBAAI,cAAc,cAAc;AAC5B,sBAAM,QAAQ,cAAc;AAC5B,4BAAY;AAAA,cAChB;AAAA,YACJ;AAAA,YACA,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,YAC3B,aAAa,SAAS,cAAc;AAAA,YAAC;AAAA,YACrC,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,YAC3B,WAAW,SAAS,YAAY;AAAA,YAAC;AAAA,YACjC,SAAS,SAAS/X,WAAU;AAExB,qBAAO,QAAQ;AAAA,YACnB;AAAA,UACJ;AAEA,iBAAO;AAAA,QACX;AAEA,YAAI,YAAY;AAChB,YAAI,cAAc,CAAC;AAEnB,YAAI,cAAc,SAASgY,aAAY/T,IAAG;AAEtC,cAAI,WAAW,SAAS;AACxB,cAAI,0BACA,aACC,kBAAkB,KAAK,SAAS,QAAQ,KACrC,SAAS,aAAa,iBAAiB,MAAM,UAC7C,SAAS,aAAa,iBAAiB,MAAM;AAErD,cAAI,yBAAyB;AAEzB,gBAAI,UAAU;AACd,gBAAI,UAAU;AACd,mBAAO,YAAY,SAAS,MAAM;AAC9B,kBAAI,QAAQ,UAAU,SAAS,gBAAgB,GAAG;AAC9C,0BAAU;AACV;AAAA,cACJ;AACA,wBAAU,QAAQ;AAAA,YACtB;AAEA,gBAAI,CAAC,QAAS;AAAA,UAClB;AAEA,mCAAyBA,GAAE,aAAa,EAAE,KAAK,SAAS,OAAO;AAE3D,gBAAI,CAAC,MAAM,QAAQ;AACf;AAAA,YACJ;AAGA,wBAAY,QAAQ,SAAS,UAAU;AACnC,qBAAO,SAAS,KAAK;AAAA,YACzB,CAAC;AAAA,UACL,CAAC;AAAA,QACL;AAEA,YAAI,SAAS,SAASgU,QAAO,IAAI;AAE7B,cAAI,YAAY,SAAS,EAAE,GAAG;AAC1B;AAAA,UACJ;AAGA,sBAAY,KAAK,EAAE;AAGnB,cAAI,WAAW;AACX;AAAA,UACJ;AAEA,sBAAY;AACZ,mBAAS,iBAAiB,SAAS,WAAW;AAAA,QAClD;AAEA,YAAI,WAAW,SAASC,UAAS,UAAU;AACvC,sBAAY,aAAa,YAAY,QAAQ,QAAQ,CAAC;AAGtD,cAAI,YAAY,WAAW,GAAG;AAC1B,qBAAS,oBAAoB,SAAS,WAAW;AACjD,wBAAY;AAAA,UAChB;AAAA,QACJ;AAEA,YAAI,eAAe,SAASC,gBAAe;AACvC,cAAI,KAAK,SAASC,IAAG,OAAO;AACxB,gBAAI,OAAO,KAAK;AAAA,UACpB;AAEA,cAAI,MAAM;AAAA,YACN,SAAS,SAASpY,WAAU;AACxB,uBAAS,EAAE;AAAA,YACf;AAAA,YACA,QAAQ,SAAS,SAAS;AAAA,YAAC;AAAA,UAC/B;AAEA,iBAAO,EAAE;AAET,iBAAO;AAAA,QACX;AAKA,YAAI,WAAW,SAASiB,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AACjB,UAAAA,MAAK,QAAQ,KAAK,yBAAyB,MAAM;AACjD,eAAKA,MAAK,SAAS,QAAQ,OAAO;AAClC,eAAKA,MAAK,SAAS,aAAa,QAAQ;AACxC,eAAKA,MAAK,SAAS,iBAAiB,WAAW;AAAA,QACnD;AAEA,YAAI,8BAA8B;AAClC,YAAI,2BAA2B;AAE/B,YAAI,YAAY,CAAC;AAEjB,YAAI,SAAS,SAAS8V,QAAO9V,OAAM,SAAS;AACxC,UAAAA,MAAK,QAAQ,cAAc;AAAA,QAC/B;AAEA,YAAI,UAAU,SAASuL,OAAMvL,OAAM;AAC/B,UAAAA,MAAK,QAAQ,cAAc;AAAA,QAC/B;AAEA,YAAI,eAAe,SAAS+V,cAAa/V,OAAM,UAAU,OAAO;AAC5D,cAAI,QAAQA,MAAK,MAAM,iBAAiB;AACxC;AAAA,YACIA;AAAA,YACA,QACI,MACA,WACA,OACA,QACA,OACC,UAAU,IACLA,MAAK,MAAM,+BAA+B,IAC1CA,MAAK,MAAM,6BAA6B;AAAA,UACtD;AAGA,uBAAa,wBAAwB;AACrC,qCAA2B,WAAW,WAAW;AAC7C,oBAAQA,KAAI;AAAA,UAChB,GAAG,IAAI;AAAA,QACX;AAEA,YAAI,kBAAkB,SAASgW,iBAAgBhW,OAAM;AACjD,iBAAOA,MAAK,QAAQ,WAAW,SAAS,SAAS,aAAa;AAAA,QAClE;AAEA,YAAI,YAAY,SAASiW,WAAU,OAAO;AACtC,cAAIjW,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAI,CAAC,gBAAgBA,KAAI,GAAG;AACxB;AAAA,UACJ;AAEA,UAAAA,MAAK,QAAQ,cAAc;AAC3B,cAAIoG,QAAOpG,MAAK,MAAM,YAAY,OAAO,EAAE;AAC3C,oBAAU,KAAKoG,MAAK,QAAQ;AAE5B,uBAAa,2BAA2B;AACxC,wCAA8B,WAAW,WAAW;AAChD,yBAAapG,OAAM,UAAU,KAAK,IAAI,GAAGA,MAAK,MAAM,sBAAsB,CAAC;AAC3E,sBAAU,SAAS;AAAA,UACvB,GAAG,GAAG;AAAA,QACV;AAEA,YAAI,cAAc,SAASkW,aAAY,OAAO;AAC1C,cAAIlW,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAI,CAAC,gBAAgBA,KAAI,GAAG;AACxB;AAAA,UACJ;AAEA,cAAIoG,QAAO,OAAO;AAClB,uBAAapG,OAAMoG,MAAK,UAAUpG,MAAK,MAAM,wBAAwB,CAAC;AAAA,QAC1E;AAEA,YAAI,gBAAgB,SAASmW,eAAc,OAAO;AAC9C,cAAInW,QAAO,MAAM,MACb,SAAS,MAAM;AAGnB,cAAIoG,QAAOpG,MAAK,MAAM,YAAY,OAAO,EAAE;AAC3C,cAAI,WAAWoG,MAAK;AACpB,cAAI,QAAQpG,MAAK,MAAM,oCAAoC;AAE3D,iBAAOA,OAAM,WAAW,MAAM,KAAK;AAAA,QACvC;AAEA,YAAI,oBAAoB,SAASoW,mBAAkB,OAAO;AACtD,cAAIpW,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAIoG,QAAOpG,MAAK,MAAM,YAAY,OAAO,EAAE;AAC3C,cAAI,WAAWoG,MAAK;AACpB,cAAI,QAAQpG,MAAK,MAAM,mCAAmC;AAE1D,iBAAOA,OAAM,WAAW,MAAM,KAAK;AAAA,QACvC;AAEA,YAAI,YAAY,SAASqW,WAAU,OAAO;AACtC,cAAIrW,QAAO,MAAM,MACb,SAAS,MAAM;AACnB,cAAIoG,QAAOpG,MAAK,MAAM,YAAY,OAAO,EAAE;AAC3C,cAAI,WAAWoG,MAAK;AAIpB,iBAAOpG,OAAM,OAAO,OAAO,OAAO,MAAM,WAAW,MAAM,OAAO,OAAO,GAAG;AAAA,QAC9E;AAEA,YAAI,YAAY,WAAW;AAAA,UACvB,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,kBAAkB;AAAA,UAClB,OAAO,YAAY;AAAA,YACf,eAAe;AAAA,YACf,iBAAiB;AAAA,YACjB,8BAA8B;AAAA,YAE9B,2BAA2B;AAAA,YAC3B,4BAA4B;AAAA,YAE5B,6BAA6B;AAAA,YAC7B,2BAA2B;AAAA,YAC3B,wBAAwB;AAAA,YACxB,iCAAiC;AAAA,UACrC,CAAC;AAAA,UAED,KAAK;AAAA,UACL,MAAM;AAAA,QACV,CAAC;AAED,YAAI,WAAW,SAASsW,UAAS,QAAQ;AACrC,cAAI,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACpF,iBAAO,OAAO,QAAQ,IAAI,OAAO,YAAY,KAAK,GAAG,GAAG,SAAS,KAAK;AAClE,mBAAO,IAAI,OAAO,CAAC,EAAE,YAAY;AAAA,UACrC,CAAC;AAAA,QACL;AAEA,YAAIC,YAAW,SAASA,UAAS,MAAM;AACnC,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACnF,cAAI,gBACA,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACxE,cAAI,OAAO,KAAK,IAAI;AACpB,cAAI,UAAU;AAEd,iBAAO,WAAW;AACd,qBACQ,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAC5D,OAAO,MACP,QACF;AACE,mBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,YAC/B;AACA,yBAAa,OAAO;AAEpB,gBAAI,OAAO,KAAK,IAAI,IAAI;AAExB,gBAAI5Y,MAAK,SAASA,MAAK;AACnB,qBAAO,KAAK,IAAI;AAChB,mBAAK,MAAM,QAAQ,IAAI;AAAA,YAC3B;AAEA,gBAAI,OAAO,UAAU;AAIjB,kBAAI,CAAC,eAAe;AAChB,0BAAU,WAAWA,KAAI,WAAW,IAAI;AAAA,cAC5C;AAAA,YACJ,OAAO;AAEH,cAAAA,IAAG;AAAA,YACP;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,kBAAkB;AAEtB,YAAI,UAAU,SAAS6Y,SAAQ9U,IAAG;AAC9B,iBAAOA,GAAE,eAAe;AAAA,QAC5B;AAEA,YAAI,WAAW,SAAShD,QAAO,MAAM;AACjC,cAAIsB,QAAO,KAAK,MACZ,QAAQ,KAAK;AAEjB,cAAIP,MAAKO,MAAK,MAAM,QAAQ;AAC5B,cAAIP,KAAI;AACJ,YAAAO,MAAK,QAAQ,KAAKP;AAAA,UACtB;AAGA,cAAI,YAAYO,MAAK,MAAM,gBAAgB;AAC3C,cAAI,WAAW;AACX,sBACK,MAAM,GAAG,EACT,OAAO,SAASxE,OAAM;AACnB,qBAAOA,MAAK;AAAA,YAChB,CAAC,EACA,QAAQ,SAASA,OAAM;AACpB,cAAAwE,MAAK,QAAQ,UAAU,IAAIxE,KAAI;AAAA,YACnC,CAAC;AAAA,UACT;AAGA,UAAAwE,MAAK,IAAI,QAAQA,MAAK;AAAA,YAClBA,MAAK;AAAA,cACD;AAAA,cACA,OAAO,OAAO,CAAC,GAAG,OAAO;AAAA,gBACrB,YAAY;AAAA,gBACZ,SAASA,MAAK,MAAM,gBAAgB;AAAA,cACxC,CAAC;AAAA,YACL;AAAA,UACJ;AAGA,UAAAA,MAAK,IAAI,OAAOA,MAAK;AAAA,YACjBA,MAAK,gBAAgB,cAAc,EAAE,YAAY,KAAK,CAAC;AAAA,UAC3D;AAGA,UAAAA,MAAK,IAAI,QAAQA,MAAK,gBAAgBA,MAAK,gBAAgB,OAAO,EAAE,MAAM,aAAa,CAAC,CAAC;AAGzF,UAAAA,MAAK,IAAI,YAAYA,MAAK;AAAA,YACtBA,MAAK,gBAAgB,WAAW,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;AAAA,UAC5D;AAGA,UAAAA,MAAK,IAAI,OAAOA,MAAK,gBAAgBA,MAAK,gBAAgB,MAAM,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AAIzF,UAAAA,MAAK,IAAI,UAAU,gBAAgB,KAAK;AACxC,UAAAA,MAAK,IAAI,QAAQ,MAAM,SAAS;AAChC,UAAAA,MAAK,QAAQ,YAAYA,MAAK,IAAI,OAAO;AAGzC,UAAAA,MAAK,IAAI,SAAS;AAGlB,UAAAA,MAAK,MAAM,YAAY,EAClB,OAAO,SAAS,OAAO;AACpB,mBAAO,CAAC,QAAQ,MAAM,KAAK;AAAA,UAC/B,CAAC,EACA,IAAI,SAAS,OAAO;AACjB,gBAAIxE,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,YAAAwE,MAAK,QAAQ,QAAQxE,KAAI,IAAI;AAAA,UACjC,CAAC;AAGL,UAAAwE,MAAK,IAAI,gBAAgB;AACzB,UAAAA,MAAK,IAAI,eAAeuW,UAAS,WAAW;AACxC,YAAAvW,MAAK,IAAI,gBAAgB,CAAC;AAC1B,YAAAA,MAAK,SAAS,iBAAiB;AAAA,UACnC,GAAG,GAAG;AAGN,UAAAA,MAAK,IAAI,sBAAsB;AAC/B,UAAAA,MAAK,IAAI,gBAAgB,CAAC;AAG1B,cAAI,WAAW,OAAO,WAAW,oCAAoC,EAAE;AACvE,cAAI,mBAAmB,kBAAkB;AACzC,cAAIA,MAAK,MAAM,mBAAmB,KAAK,oBAAoB,CAAC,UAAU;AAClE,YAAAA,MAAK,QAAQ,iBAAiB,aAAa,SAAS,EAAE,SAAS,MAAM,CAAC;AACtE,YAAAA,MAAK,QAAQ,iBAAiB,gBAAgB,OAAO;AAAA,UACzD;AAGA,cAAI,UAAUA,MAAK,MAAM,aAAa;AACtC,cAAI,aAAa,QAAQ,WAAW;AACpC,cAAI,YAAY;AACZ,gBAAI,OAAO,SAAS,cAAc,GAAG;AACrC,iBAAK,YAAY;AACjB,iBAAK,OAAO,QAAQ,CAAC;AACrB,iBAAK,WAAW;AAChB,iBAAK,SAAS;AACd,iBAAK,MAAM;AACX,iBAAK,cAAc,QAAQ,CAAC;AAC5B,YAAAA,MAAK,QAAQ,YAAY,IAAI;AAC7B,YAAAA,MAAK,IAAI,UAAU;AAAA,UACvB;AAAA,QACJ;AAEA,YAAI,UAAU,SAASxC,OAAM,OAAO;AAChC,cAAIwC,QAAO,MAAM,MACb,QAAQ,MAAM,OACdrF,WAAU,MAAM;AAEpB,kBAAQ,EAAE,MAAMqF,OAAM,OAAc,SAASrF,SAAQ,CAAC;AAGtD,UAAAA,SACK,OAAO,SAAS,QAAQ;AACrB,mBAAO,kBAAkB,KAAK,OAAO,IAAI;AAAA,UAC7C,CAAC,EACA,OAAO,SAAS,QAAQ;AACrB,mBAAO,CAAC,QAAQ,OAAO,KAAK,KAAK;AAAA,UACrC,CAAC,EACA,IAAI,SAAS,OAAO;AACjB,gBAAI,OAAO,MAAM,MACbM,QAAO,MAAM;AACjB,gBAAIO,QAAO,SAAS,KAAK,UAAU,CAAC,EAAE,YAAY,GAAG,GAAG;AACxD,YAAAwE,MAAK,QAAQ,QAAQxE,KAAI,IAAIP,MAAK;AAClC,YAAA+E,MAAK,iBAAiB;AAAA,UAC1B,CAAC;AAEL,cAAIA,MAAK,KAAK,QAAQ,OAAQ;AAE9B,cAAIA,MAAK,KAAK,QAAQ,UAAUA,MAAK,IAAI,eAAe;AACpD,YAAAA,MAAK,IAAI,gBAAgBA,MAAK,KAAK,QAAQ;AAC3C,YAAAA,MAAK,IAAI,aAAa;AAAA,UAC1B;AAGA,cAAI,SAASA,MAAK,IAAI;AACtB,cAAI,CAAC,QAAQ;AACT,qBAASA,MAAK,IAAI,SAAS,+BAA+BA,KAAI;AAG9D,YAAAA,MAAK,QAAQ,YAAYA,MAAK,IAAI,OAAO;AACzC,YAAAA,MAAK,IAAI,UAAU;AAAA,UACvB;AAGA,cAAI,YAAYA,MAAK,KACjB,SAAS,UAAU,QACnB,QAAQ,UAAU,OAClByW,QAAO,UAAU,MACjBC,SAAQ,UAAU;AAGtB,cAAI,QAAQ;AACR,mBAAO,kBAAkB;AAAA,UAC7B;AAGA,cAAI,cAAc1W,MAAK,MAAM,wBAAwB;AACrD,cAAI,cAAcA,MAAK,MAAM,oBAAoB;AACjD,cAAI,aAAaA,MAAK,MAAM,iBAAiB;AAC7C,cAAI,WAAW,cAAcA,MAAK,MAAM,eAAe,KAAK,kBAAkB;AAC9E,cAAI,gBAAgB,eAAe;AAGnC,cAAI,YAAYrF,SAAQ,KAAK,SAAS,QAAQ;AAC1C,mBAAO,OAAO,SAAS;AAAA,UAC3B,CAAC;AAGD,cAAI,iBAAiB,WAAW;AAE5B,gBAAI,oBAAoB,UAAU,KAAK;AAGvC,kBAAM,UAAU;AAEhB,gBAAI,aAAa;AACb,oBAAM,aAAa;AAAA,YACvB,OAAO;AACH,kBAAI,sBAAsB,kBAAkB,KAAK;AAC7C,sBAAM,aAAa;AAAA,cACvB,WAAW,sBAAsB,kBAAkB,QAAQ;AACvD,sBAAM,aAAa;AAAA,cACvB,OAAO;AACH,sBAAM,aAAa;AAAA,cACvB;AAAA,YACJ;AAAA,UACJ,WAAW,CAAC,eAAe;AACvB,kBAAM,UAAU;AAChB,kBAAM,aAAa;AACnB,kBAAM,aAAa;AAAA,UACvB;AAEA,cAAI,iBAAiB,wBAAwBqF,KAAI;AAEjD,cAAI,aAAa,oBAAoBA,KAAI;AAEzC,cAAI,cAAc,MAAM,KAAK,QAAQ;AACrC,cAAI,qBAAqB,CAAC,eAAe,gBAAgB,IAAI;AAE7D,cAAI,gBAAgB,gBAAgByW,MAAK,KAAK,QAAQ,YAAY;AAClE,cAAI,mBAAmB,eAAe,IAAI,IAAIA,MAAK,KAAK,QAAQ;AAEhE,cAAI,eACA,qBAAqB,gBAAgB,WAAW,SAAS;AAC7D,cAAI,eACA,qBAAqB,gBAAgB,WAAW,SAAS;AAG7D,UAAAA,MAAK,aACD,KAAK,IAAI,GAAG,qBAAqBA,MAAK,KAAK,QAAQ,SAAS,IAAI,eAAe;AAEnF,cAAI,aAAa;AAIb,gBAAI,QAAQzW,MAAK,KAAK,QAAQ;AAC9B,gBAAI,SAAS,QAAQ;AAGrB,gBAAI,gBAAgBA,MAAK,IAAI,qBAAqB;AAC9C,cAAAA,MAAK,IAAI,sBAAsB;AAC/B,cAAAA,MAAK,IAAI,gBAAgB,CAAC;AAAA,YAC9B;AAGA,gBAAI2W,WAAU3W,MAAK,IAAI;AACvB,YAAA2W,SAAQ,KAAK,KAAK;AAElB,gBAAI,cAAc;AAClB,gBAAIA,SAAQ,SAAS,cAAc,GAAG;AAClC,kBAAI3F,KAAI2F,SAAQ;AAChB,kBAAI,SAAS3F,KAAI;AACjB,kBAAI,UAAU;AACd,uBAASzO,KAAIyO,IAAGzO,MAAK,QAAQA,MAAK;AAC9B,oBAAIoU,SAAQpU,EAAC,MAAMoU,SAAQpU,KAAI,CAAC,GAAG;AAC/B;AAAA,gBACJ;AAEA,oBAAI,WAAW,aAAa;AAExB;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAGA,YAAAmU,OAAM,WAAW;AACjB,YAAAA,OAAM,SAAS;AAGf,gBAAI;AAAA;AAAA,cAEA,SACA;AAAA,eAEC,mBAAmB,eAAe;AAAA,eAElC,gBAAgB,gBAAgB;AAAA;AAErC,gBAAI,WAAW,SAAS,qBAAqB;AACzC,cAAAD,MAAK,WAAW;AAAA,YACpB,OAAO;AACH,cAAAA,MAAK,WAAW;AAAA,YACpB;AAGA,YAAAzW,MAAK,SAAS;AAAA,UAClB,WAAW,OAAO,aAAa;AAI3B,YAAA0W,OAAM,WAAW;AAGjB,gBAAI;AAAA;AAAA,cAEA,OAAO,cACP;AAAA,eAEC,mBAAmB,eAAe;AAAA,eAElC,gBAAgB,gBAAgB;AAAA;AAGrC,gBAAI,WAAW,SAAS,sBAAsB;AAC1C,cAAAD,MAAK,WAAW;AAAA,YACpB,OAAO;AACH,cAAAA,MAAK,WAAW;AAAA,YACpB;AAAA,UAGJ,WAAW,OAAO,cAAc;AAI5B,gBAAI,iBAAiB,gBAAgB,OAAO;AAC5C,gBAAI,cAAc,KAAK,IAAI,OAAO,cAAc,YAAY;AAC5D,YAAAC,OAAM,WAAW;AACjB,YAAAA,OAAM,SAAS,iBACT,cACA,cAAc,eAAe,MAAM,eAAe;AAGxD,gBAAI;AAAA;AAAA,cAEA,cACA;AAAA,eAEC,mBAAmB,eAAe;AAAA,eAElC,gBAAgB,gBAAgB;AAAA;AAGrC,gBAAI,eAAe,OAAO,gBAAgB,WAAW,SAAS,uBAAuB;AACjF,cAAAD,MAAK,WAAW;AAAA,YACpB,OAAO;AACH,cAAAA,MAAK,WAAW;AAAA,YACpB;AAGA,YAAAzW,MAAK,SAAS,KAAK;AAAA,cACf,OAAO;AAAA,cACP,eAAe,eAAe,MAAM,eAAe;AAAA,YACvD;AAAA,UACJ,OAAO;AAIH,gBAAI,aAAa,aAAa,IAAI,eAAe,MAAM,eAAe,SAAS;AAC/E,YAAA0W,OAAM,WAAW;AACjB,YAAAA,OAAM,SAAS,KAAK,IAAI,aAAa,eAAe,UAAU;AAG9D,YAAA1W,MAAK,SAAS,KAAK,IAAI,aAAa,eAAe,UAAU;AAAA,UACjE;AAGA,cAAIA,MAAK,IAAI,WAAW0W,OAAM;AAC1B,YAAA1W,MAAK,IAAI,QAAQ,MAAM,YAAY,gBAAgB0W,OAAM,gBAAgB;AAAA,QACjF;AAEA,YAAI,0BAA0B,SAASE,yBAAwB5W,OAAM;AACjE,cAAIoG,QAAOpG,MAAK,IAAI,KAAK,WAAW,CAAC,EAAE,WAAW,CAAC;AACnD,iBAAOoG,QACD;AAAA,YACI,KAAKA,MAAK,KAAK,QAAQ;AAAA,YACvB,QAAQA,MAAK,KAAK,QAAQ;AAAA,UAC9B,IACA;AAAA,YACI,KAAK;AAAA,YACL,QAAQ;AAAA,UACZ;AAAA,QACV;AAEA,YAAI,sBAAsB,SAASyQ,qBAAoB7W,OAAM;AACzD,cAAI,SAAS;AACb,cAAI,SAAS;AAGb,cAAI,aAAaA,MAAK,IAAI;AAC1B,cAAI,WAAW,WAAW,WAAW,CAAC;AACtC,cAAI,kBAAkB,SAAS,WAAW,OAAO,SAAS,OAAO;AAC7D,mBAAO,MAAM,KAAK,QAAQ;AAAA,UAC9B,CAAC;AACD,cAAI,WAAWA,MACV,MAAM,kBAAkB,EACxB,IAAI,SAASoG,OAAM;AAChB,mBAAO,gBAAgB,KAAK,SAAS,OAAO;AACxC,qBAAO,MAAM,OAAOA,MAAK;AAAA,YAC7B,CAAC;AAAA,UACL,CAAC,EACA,OAAO,SAASA,OAAM;AACnB,mBAAOA;AAAA,UACX,CAAC;AAGL,cAAI,SAAS,WAAW,EAAG,QAAO,EAAE,QAAgB,OAAe;AAEnE,cAAI,kBAAkB,SAAS,KAAK,QAAQ;AAC5C,cAAI,YAAY,uBAAuB,UAAU,UAAU,WAAW,eAAe;AAErF,cAAI,YAAY,SAAS,CAAC,EAAE,KAAK;AAEjC,cAAI,qBAAqB,UAAU,YAAY,UAAU;AACzD,cAAI,uBAAuB,UAAU,aAAa,UAAU;AAE5D,cAAI,YAAY,UAAU,QAAQ;AAClC,cAAI,aAAa,UAAU,SAAS;AAEpC,cAAI,UAAU,OAAO,cAAc,eAAe,aAAa,IAAI,IAAI;AACvE,cAAI,cAAc,SAAS,KAAK,SAAS,OAAO;AAC5C,mBAAO,MAAM,oBAAoB,MAAM,UAAU;AAAA,UACrD,CAAC,IACK,KACA;AACN,cAAI,oBAAoB,SAAS,SAAS,UAAU;AACpD,cAAI,cAAc,eAAe,iBAAiB,SAAS;AAG3D,cAAI,gBAAgB,GAAG;AACnB,qBAAS,QAAQ,SAASA,OAAM;AAC5B,kBAAI,SAASA,MAAK,KAAK,QAAQ,SAAS;AACxC,wBAAU;AACV,wBAAU,SAASA,MAAK;AAAA,YAC5B,CAAC;AAAA,UACL,OAEK;AACD,qBAAS,KAAK,KAAK,oBAAoB,WAAW,IAAI;AACtD,qBAAS;AAAA,UACb;AAEA,iBAAO,EAAE,QAAgB,OAAe;AAAA,QAC5C;AAEA,YAAI,iCAAiC,SAAS0Q,gCAA+B9W,OAAM;AAC/E,cAAI,SAASA,MAAK,IAAI,iBAAiB;AACvC,cAAI,eAAe,SAASA,MAAK,MAAM,WAAW,EAAE,KAAK;AACzD,cAAI,cAAc,WAAW,IAAI,OAAO;AAExC,iBAAO;AAAA,YACH;AAAA,YACA;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,kBAAkB,SAAS+W,iBAAgB/W,OAAM,OAAO;AACxD,cAAI,eAAeA,MAAK,MAAM,mBAAmB;AACjD,cAAI,gBAAgBA,MAAK,MAAM,oBAAoB;AACnD,cAAI,aAAaA,MAAK,MAAM,iBAAiB;AAC7C,cAAI,WAAWA,MAAK,MAAM,eAAe;AAGzC,cAAI,mBAAmB,MAAM;AAG7B,cAAI,CAAC,iBAAiB,mBAAmB,GAAG;AACxC,YAAAA,MAAK,SAAS,uBAAuB;AAAA,cACjC,QAAQ;AAAA,cACR,OAAO,eAAe,WAAW,GAAG,WAAW;AAAA,YACnD,CAAC;AAED,mBAAO;AAAA,UACX;AAGA,qBAAW,gBAAgB,WAAW;AAEtC,cAAI,CAAC,iBAAiB,cAAc;AAEhC,mBAAO;AAAA,UACX;AAGA,cAAI,cAAc,MAAM,QAAQ;AAChC,cAAI,eAAe,aAAa,mBAAmB,UAAU;AACzD,YAAAA,MAAK,SAAS,uBAAuB;AAAA,cACjC,QAAQ;AAAA,cACR,OAAO,eAAe,WAAW,GAAG,WAAW;AAAA,YACnD,CAAC;AAED,mBAAO;AAAA,UACX;AAEA,iBAAO;AAAA,QACX;AAEA,YAAI,eAAe,SAASgX,cAAaP,OAAM,UAAU,UAAU;AAC/D,cAAI,WAAWA,MAAK,WAAW,CAAC;AAChC,iBAAO,uBAAuB,UAAU,UAAU;AAAA,YAC9C,MAAM,SAAS,YAAY,SAAS,KAAK,QAAQ;AAAA,YACjD,KACI,SAAS,YACRA,MAAK,KAAK,MAAM,MAAMA,MAAK,KAAK,QAAQ,YAAYA,MAAK,KAAK,QAAQ;AAAA,UAC/E,CAAC;AAAA,QACL;AAKA,YAAI,aAAa,SAASQ,YAAWjX,OAAM;AACvC,cAAI,YAAYA,MAAK,MAAM,gBAAgB;AAC3C,cAAI,aAAaA,MAAK,MAAM,cAAc;AAC1C,cAAI,UAAU,aAAa,CAAC;AAC5B,cAAI,WAAW,CAACA,MAAK,IAAI,QAAQ;AAC7B,gBAAI,SAAS;AAAA,cACTA,MAAK;AAAA,cACL,SAAS,OAAO;AAEZ,oBAAI,iBACAA,MAAK,MAAM,sBAAsB,KACjC,WAAW;AACP,yBAAO;AAAA,gBACX;AAGJ,oBAAI,iBAAiBA,MAAK,MAAM,qBAAqB;AACrD,uBAAO,iBACD,MAAM,MAAM,SAASoG,OAAM;AACvB,yBACI,aAAa,qBAAqBA,OAAM;AAAA,oBACpC,OAAOpG,MAAK;AAAA,kBAChB,CAAC,EAAE,MAAM,SAAS,QAAQ;AACtB,2BAAO,WAAW;AAAA,kBACtB,CAAC,KAAK,eAAeoG,KAAI;AAAA,gBAEjC,CAAC,IACD;AAAA,cACV;AAAA,cACA;AAAA,gBACI,aAAa,SAAS,YAAY,OAAO;AACrC,sBAAI,eAAepG,MAAK,MAAM,mBAAmB;AACjD,yBAAO,MAAM,OAAO,SAASoG,OAAM;AAC/B,wBAAI,OAAOA,KAAI,GAAG;AACd,6BAAO,CAAC,aAAa,SAASA,MAAK,KAAK,YAAY,CAAC;AAAA,oBACzD;AACA,2BAAO;AAAA,kBACX,CAAC;AAAA,gBACL;AAAA,gBACA,oBAAoBpG,MAAK,MAAM,kBAAkB;AAAA,gBACjD,uBAAuBA,MAAK,MAAM,qBAAqB;AAAA,cAC3D;AAAA,YACJ;AAEA,mBAAO,SAAS,SAAS,OAAO,UAAU;AAEtC,kBAAIyW,QAAOzW,MAAK,IAAI,KAAK,WAAW,CAAC;AACrC,kBAAI,kBAAkByW,MAAK,WAAW,OAAO,SAAS,OAAO;AACzD,uBAAO,MAAM,KAAK,QAAQ;AAAA,cAC9B,CAAC;AACD,kBAAI,WAAWzW,MACV,MAAM,kBAAkB,EACxB,IAAI,SAASoG,OAAM;AAChB,uBAAO,gBAAgB,KAAK,SAAS,OAAO;AACxC,yBAAO,MAAM,OAAOA,MAAK;AAAA,gBAC7B,CAAC;AAAA,cACL,CAAC,EACA,OAAO,SAASA,OAAM;AACnB,uBAAOA;AAAA,cACX,CAAC;AAEL,+BAAiB,aAAa,OAAO,EAAE,UAAUpG,MAAK,SAAS,CAAC,EAAE,KAAK,SACnEjF,QACF;AAEE,oBAAI,gBAAgBiF,OAAMjF,MAAK,EAAG,QAAO;AAGzC,gBAAAiF,MAAK,SAAS,aAAa;AAAA,kBACvB,OAAOjF;AAAA,kBACP,OAAO,aAAaiF,MAAK,IAAI,MAAM,UAAU,QAAQ;AAAA,kBACrD,mBAAmB,kBAAkB;AAAA,gBACzC,CAAC;AAAA,cACL,CAAC;AAED,cAAAA,MAAK,SAAS,YAAY,EAAE,SAAmB,CAAC;AAEhD,cAAAA,MAAK,SAAS,gBAAgB,EAAE,SAAmB,CAAC;AAAA,YACxD;AAEA,mBAAO,cAAc,SAAS,UAAU;AACpC,cAAAA,MAAK,SAAS,kBAAkB,EAAE,SAAmB,CAAC;AAAA,YAC1D;AAEA,mBAAO,SAASuW,UAAS,SAAS,UAAU;AACxC,cAAAvW,MAAK,SAAS,YAAY,EAAE,SAAmB,CAAC;AAAA,YACpD,CAAC;AAED,mBAAO,YAAY,SAAS,UAAU;AAClC,cAAAA,MAAK,SAAS,gBAAgB,EAAE,SAAmB,CAAC;AAAA,YACxD;AAEA,YAAAA,MAAK,IAAI,SAAS;AAElB,YAAAA,MAAK,IAAI,OAAOA,MAAK,gBAAgBA,MAAK,gBAAgB,IAAI,CAAC;AAAA,UACnE,WAAW,CAAC,WAAWA,MAAK,IAAI,QAAQ;AACpC,YAAAA,MAAK,IAAI,OAAO,QAAQ;AACxB,YAAAA,MAAK,IAAI,SAAS;AAClB,YAAAA,MAAK,gBAAgBA,MAAK,IAAI,IAAI;AAAA,UACtC;AAAA,QACJ;AAKA,YAAI,eAAe,SAASkX,cAAalX,OAAM,OAAO;AAClD,cAAI,YAAYA,MAAK,MAAM,kBAAkB;AAC7C,cAAI,aAAaA,MAAK,MAAM,cAAc;AAC1C,cAAI,UAAU,aAAa,CAAC;AAC5B,cAAI,WAAW,CAACA,MAAK,IAAI,SAAS;AAC9B,YAAAA,MAAK,IAAI,UAAUA,MAAK;AAAA,cACpBA,MAAK;AAAA,gBACD;AAAA,gBACA,OAAO,OAAO,CAAC,GAAG,OAAO;AAAA,kBACrB,QAAQ,SAAS,OAAO,OAAO;AAC3B,qCAAiB,aAAa,OAAO;AAAA,sBACjC,UAAUA,MAAK;AAAA,oBACnB,CAAC,EAAE,KAAK,SAASjF,QAAO;AAEpB,0BAAI,gBAAgBiF,OAAMjF,MAAK,EAAG,QAAO;AAGzC,sBAAAiF,MAAK,SAAS,aAAa;AAAA,wBACvB,OAAOjF;AAAA,wBACP,OAAO;AAAA,wBACP,mBAAmB,kBAAkB;AAAA,sBACzC,CAAC;AAAA,oBACL,CAAC;AAAA,kBACL;AAAA,gBACJ,CAAC;AAAA,cACL;AAAA,cAEA;AAAA,YACJ;AAAA,UACJ,WAAW,CAAC,WAAWiF,MAAK,IAAI,SAAS;AACrC,YAAAA,MAAK,gBAAgBA,MAAK,IAAI,OAAO;AACrC,YAAAA,MAAK,IAAI,UAAU;AAAA,UACvB;AAAA,QACJ;AAKA,YAAI,cAAc,SAASmX,aAAYnX,OAAM;AACzC,cAAI,YAAYA,MAAK,MAAM,iBAAiB;AAC5C,cAAI,aAAaA,MAAK,MAAM,cAAc;AAC1C,cAAI,UAAU,aAAa,CAAC;AAC5B,cAAI,WAAW,CAACA,MAAK,IAAI,QAAQ;AAC7B,YAAAA,MAAK,IAAI,SAAS,aAAa;AAC/B,YAAAA,MAAK,IAAI,OAAO,SAAS,SAAS,OAAO;AACrC,+BAAiB,aAAa,OAAO,EAAE,UAAUA,MAAK,SAAS,CAAC,EAAE,KAAK,SACnEjF,QACF;AAEE,oBAAI,gBAAgBiF,OAAMjF,MAAK,EAAG,QAAO;AAGzC,gBAAAiF,MAAK,SAAS,aAAa;AAAA,kBACvB,OAAOjF;AAAA,kBACP,OAAO;AAAA,kBACP,mBAAmB,kBAAkB;AAAA,gBACzC,CAAC;AAAA,cACL,CAAC;AAAA,YACL;AAAA,UACJ,WAAW,CAAC,WAAWiF,MAAK,IAAI,QAAQ;AACpC,YAAAA,MAAK,IAAI,OAAO,QAAQ;AACxB,YAAAA,MAAK,IAAI,SAAS;AAAA,UACtB;AAAA,QACJ;AAKA,YAAI,UAAU,YAAY;AAAA,UACtB,sBAAsB,SAAS,qBAAqB,OAAO;AACvD,gBAAIA,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,yBAAaA,OAAM,KAAK;AAAA,UAC5B;AAAA,UACA,oBAAoB,SAAS,mBAAmB,OAAO;AACnD,gBAAIA,QAAO,MAAM;AACjB,uBAAWA,KAAI;AAAA,UACnB;AAAA,UACA,qBAAqB,SAAS,oBAAoB,OAAO;AACrD,gBAAIA,QAAO,MAAM;AACjB,wBAAYA,KAAI;AAAA,UACpB;AAAA,UACA,kBAAkB,SAAS,iBAAiB,OAAO;AAC/C,gBAAIA,QAAO,MAAM,MACb,QAAQ,MAAM;AAClB,uBAAWA,KAAI;AACf,wBAAYA,KAAI;AAChB,yBAAaA,OAAM,KAAK;AACxB,gBAAI,aAAaA,MAAK,MAAM,cAAc;AAC1C,gBAAI,YAAY;AACZ,cAAAA,MAAK,QAAQ,QAAQ,WAAW;AAAA,YACpC,OAAO;AAEH,cAAAA,MAAK,QAAQ,gBAAgB,eAAe;AAAA,YAChD;AAAA,UACJ;AAAA,QACJ,CAAC;AAED,YAAI,OAAO,WAAW;AAAA,UAClB,MAAM;AAAA,UACN,MAAM,SAAS,KAAK,OAAO;AACvB,gBAAIA,QAAO,MAAM;AACjB,gBAAIA,MAAK,IAAI,SAAS;AAClB,cAAAA,MAAK,IAAI,gBAAgBA,MAAK,IAAI,QAAQ;AAAA,YAC9C;AAAA,UACJ;AAAA,UACA,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,SAAS,SAASvC,SAAQ,QAAQ;AAC9B,gBAAIuC,QAAO,OAAO;AAClB,gBAAIA,MAAK,IAAI,QAAQ;AACjB,cAAAA,MAAK,IAAI,OAAO,QAAQ;AAAA,YAC5B;AACA,gBAAIA,MAAK,IAAI,QAAQ;AACjB,cAAAA,MAAK,IAAI,OAAO,QAAQ;AAAA,YAC5B;AACA,YAAAA,MAAK,QAAQ,oBAAoB,aAAa,OAAO;AACrD,YAAAA,MAAK,QAAQ,oBAAoB,gBAAgB,OAAO;AAAA,UAC5D;AAAA,UACA,QAAQ;AAAA,YACJ,QAAQ,CAAC,QAAQ;AAAA,UACrB;AAAA,QACJ,CAAC;AAGD,YAAI,YAAY,SAASoX,aAAY;AACjC,cAAI,iBAAiB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAE1F,cAAI,kBAAkB;AAGtB,cAAItQ,kBAAiBC,YAAW;AAGhC,cAAI,QAAQ;AAAA;AAAA,YAER,mBAAmBD,eAAc;AAAA;AAAA,YAGjC,CAAC,SAAS,oBAAoBA,eAAc,CAAC;AAAA;AAAA,YAG7C,CAAC,SAAS,oBAAoBA,eAAc,CAAC;AAAA,UACjD;AAGA,gBAAM,SAAS,eAAe,EAAE,SAAS,eAAe,CAAC;AAGzD,cAAI,oBAAoB,SAASuQ,qBAAoB;AACjD,gBAAI,SAAS,OAAQ;AACrB,kBAAM,SAAS,MAAM;AAAA,UACzB;AACA,mBAAS,iBAAiB,oBAAoB,iBAAiB;AAG/D,cAAI,kBAAkB;AACtB,cAAI,aAAa;AACjB,cAAI,yBAAyB;AAC7B,cAAI,qBAAqB;AACzB,cAAI,qBAAqB;AACzB,cAAI,gBAAgB,SAASC,iBAAgB;AACzC,gBAAI,CAAC,YAAY;AACb,2BAAa;AAAA,YACjB;AACA,yBAAa,eAAe;AAC5B,8BAAkB,WAAW,WAAW;AACpC,2BAAa;AACb,mCAAqB;AACrB,mCAAqB;AACrB,kBAAI,wBAAwB;AACxB,yCAAyB;AACzB,sBAAM,SAAS,iBAAiB;AAAA,cACpC;AAAA,YACJ,GAAG,GAAG;AAAA,UACV;AACA,iBAAO,iBAAiB,UAAU,aAAa;AAG/C,cAAI,OAAO,KAAK,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC;AAK5C,cAAI,YAAY;AAChB,cAAI,WAAW;AAEf,cAAI,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOf,OAAO,SAAS,QAAQ;AAGpB,kBAAI,YAAY;AACZ,qCAAqB,OAAO;AAC5B,oBAAI,CAAC,oBAAoB;AACrB,uCAAqB;AAAA,gBACzB;AAEA,oBAAI,CAAC,0BAA0B,uBAAuB,oBAAoB;AACtE,wBAAM,SAAS,kBAAkB;AACjC,2CAAyB;AAAA,gBAC7B;AAAA,cACJ;AAEA,kBAAI,YAAY,WAAW;AAEvB,4BAAY,KAAK,QAAQ,iBAAiB;AAAA,cAC9C;AAGA,kBAAI,UAAW;AAGf,mBAAK,MAAM;AAGX,yBAAW,KAAK,KAAK,QAAQ;AAAA,YACjC;AAAA;AAAA;AAAA;AAAA;AAAA,YAMA,QAAQ,SAAS,OAAO,IAAI;AAExB,kBAAI3c,WAAU,MACT,mBAAmB,EAGnB,OAAO,SAAS,QAAQ;AACrB,uBAAO,CAAC,QAAQ,KAAK,OAAO,IAAI;AAAA,cACpC,CAAC;AAGL,kBAAI,aAAa,CAACA,SAAQ,OAAQ;AAGlC,mCAAqBA,QAAO;AAG5B,0BAAY,KAAK,OAAO,IAAIA,UAAS,sBAAsB;AAG3D,kCAAoB,MAAM,MAAM,WAAW,CAAC;AAG5C,kBAAI,WAAW;AACX,sBAAM,qBAAqB;AAAA,cAC/B;AAAA,YACJ;AAAA,UACJ;AAKA,cAAI,cAAc,SAAS4c,aAAY/b,OAAM;AACzC,mBAAO,SAASP,OAAM;AAElB,kBAAI6C,SAAQ;AAAA,gBACR,MAAMtC;AAAA,cACV;AAGA,kBAAI,CAACP,OAAM;AACP,uBAAO6C;AAAA,cACX;AAGA,kBAAI7C,MAAK,eAAe,OAAO,GAAG;AAC9B,gBAAA6C,OAAM,QAAQ7C,MAAK,QAAQ,OAAO,OAAO,CAAC,GAAGA,MAAK,KAAK,IAAI;AAAA,cAC/D;AAEA,kBAAIA,MAAK,QAAQ;AACb,gBAAA6C,OAAM,SAAS,OAAO,OAAO,CAAC,GAAG7C,MAAK,MAAM;AAAA,cAChD;AAEA,kBAAIA,MAAK,MAAM;AACX,gBAAA6C,OAAM,SAAS7C,MAAK;AAAA,cACxB;AAGA,kBAAIA,MAAK,QAAQ;AACb,gBAAA6C,OAAM,OAAO7C,MAAK;AAAA,cACtB,WAAWA,MAAK,QAAQA,MAAK,IAAI;AAC7B,oBAAImL,QAAOnL,MAAK,OAAOA,MAAK,OAAO,MAAM,MAAM,YAAYA,MAAK,EAAE;AAClE,gBAAA6C,OAAM,OAAOsI,QAAO,cAAcA,KAAI,IAAI;AAAA,cAC9C;AAGA,kBAAInL,MAAK,OAAO;AACZ,gBAAA6C,OAAM,QAAQ7C,MAAK,MAAM,IAAI,aAAa;AAAA,cAC9C;AAGA,kBAAI,WAAW,KAAKO,KAAI,GAAG;AACvB,gBAAAsC,OAAM,WAAW7C,MAAK;AAAA,cAC1B;AAGA,kBAAIA,MAAK,eAAe,QAAQ,KAAKA,MAAK,eAAe,QAAQ,GAAG;AAChE,gBAAA6C,OAAM,SAAS7C,MAAK;AACpB,gBAAA6C,OAAM,SAAS7C,MAAK;AAAA,cACxB;AAEA,qBAAO6C;AAAA,YACX;AAAA,UACJ;AAEA,cAAI,cAAc;AAAA,YACd,aAAa,YAAY,SAAS;AAAA,YAElC,UAAU,YAAY,MAAM;AAAA,YAE5B,qBAAqB,YAAY,SAAS;AAAA,YAE1C,eAAe,YAAY,UAAU;AAAA,YACrC,qBAAqB,YAAY,cAAc;AAAA,YAC/C,+BAA+B,YAAY,iBAAiB;AAAA,YAC5D,eAAe,YAAY,SAAS;AAAA,YAEpC,wBAAwB,CAAC,YAAY,OAAO,GAAG,YAAY,SAAS,CAAC;AAAA,YAErE,2BAA2B,CAAC,YAAY,OAAO,GAAG,YAAY,SAAS,CAAC;AAAA,YAExE,6BAA6B,CAAC,YAAY,OAAO,GAAG,YAAY,YAAY,CAAC;AAAA,YAE7E,oBAAoB,YAAY,aAAa;AAAA,YAE7C,2BAA2B,YAAY,kBAAkB;AAAA,YACzD,kCAAkC,YAAY,qBAAqB;AAAA,YACnE,2BAA2B,YAAY,kBAAkB;AAAA,YACzD,8BAA8B,YAAY,aAAa;AAAA,YACvD,kCAAkC,YAAY,cAAc;AAAA,YAC5D,4BAA4B,YAAY,mBAAmB;AAAA,YAE3D,iCAAiC,CAAC,YAAY,OAAO,GAAG,YAAY,aAAa,CAAC;AAAA,YAElF,iBAAiB,YAAY,YAAY;AAAA,YAEzC,kBAAkB,YAAY,aAAa;AAAA,YAE3C,mBAAmB,YAAY,cAAc;AAAA,YAE7C,mBAAmB,YAAY,cAAc;AAAA,UACjD;AAEA,cAAI,cAAc,SAAS0Z,aAAY1Z,QAAO;AAE1C,gBAAI,SAAS,OAAO,OAAO,EAAE,MAAMzD,UAAQ,GAAGyD,MAAK;AACnD,mBAAO,OAAO;AACd,iBAAK,QAAQ;AAAA,cACT,IAAI,YAAY,cAAcA,OAAM,MAAM;AAAA;AAAA,gBAEtC;AAAA;AAAA,gBAGA,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,UAAU;AAAA;AAAA,cACd,CAAC;AAAA,YACL;AAGA,gBAAI,SAAS,CAAC;AAGd,gBAAIA,OAAM,eAAe,OAAO,GAAG;AAC/B,qBAAO,KAAKA,OAAM,KAAK;AAAA,YAC3B;AAGA,gBAAIA,OAAM,eAAe,MAAM,GAAG;AAC9B,qBAAO,KAAKA,OAAM,IAAI;AAAA,YAC1B;AAGA,gBAAI,WAAW,CAAC,QAAQ,SAAS,MAAM;AACvC,mBAAO,KAAKA,MAAK,EACZ,OAAO,SAAS,KAAK;AAClB,qBAAO,CAAC,SAAS,SAAS,GAAG;AAAA,YACjC,CAAC,EACA,QAAQ,SAAS,KAAK;AACnB,qBAAO,OAAO,KAAKA,OAAM,GAAG,CAAC;AAAA,YACjC,CAAC;AAGL,YAAAzD,UAAQ,KAAK,MAAMA,WAAS,CAACyD,OAAM,IAAI,EAAE,OAAO,MAAM,CAAC;AAGvD,gBAAI,UAAU,MAAM,MAAM,WAAWA,OAAM,KAAK,YAAY,CAAC;AAC7D,gBAAI,SAAS;AACT,sBAAQ,MAAM,QAAQ,MAAM;AAAA,YAChC;AAAA,UACJ;AAEA,cAAI,uBAAuB,SAAS2Z,sBAAqB9c,UAAS;AAC9D,gBAAI,CAACA,SAAQ,OAAQ;AACrB,YAAAA,SACK,OAAO,SAAS,QAAQ;AACrB,qBAAO,YAAY,OAAO,IAAI;AAAA,YAClC,CAAC,EACA,QAAQ,SAAS,QAAQ;AACtB,kBAAI,SAAS,YAAY,OAAO,IAAI;AACpC,eAAC,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,QAAQ,SAAS+c,QAAO;AAEhE,oBAAI,OAAO,SAAS,iBAAiB;AACjC,8BAAYA,OAAM,OAAO,IAAI,CAAC;AAAA,gBAClC,OAAO;AACH,6BAAW,WAAW;AAClB,gCAAYA,OAAM,OAAO,IAAI,CAAC;AAAA,kBAClC,GAAG,CAAC;AAAA,gBACR;AAAA,cACJ,CAAC;AAAA,YACL,CAAC;AAAA,UACT;AAKA,cAAI1Q,cAAa,SAASA,YAAW,SAAS;AAC1C,mBAAO,MAAM,SAAS,eAAe,EAAE,QAAiB,CAAC;AAAA,UAC7D;AAEA,cAAI,UAAU,SAASqF,SAAQ,OAAO;AAClC,mBAAO,MAAM,MAAM,mBAAmB,KAAK;AAAA,UAC/C;AAEA,cAAI,cAAc,SAASsL,aAAY,OAAO;AAC1C,mBAAO,IAAI,QAAQ,SAASnV,UAAS,QAAQ;AACzC,oBAAM,SAAS,wBAAwB;AAAA,gBACnC;AAAA,gBACA,SAAS,SAAS,QAAQ4D,OAAM;AAC5B,kBAAA5D,SAAQ4D,KAAI;AAAA,gBAChB;AAAA,gBACA,SAAS,SAAS,QAAQzD,QAAO;AAC7B,yBAAOA,MAAK;AAAA,gBAChB;AAAA,cACJ,CAAC;AAAA,YACL,CAAC;AAAA,UACL;AAEA,cAAI,UAAU,SAASiV,SAAQ,QAAQ;AACnC,gBAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,mBAAO,IAAI,QAAQ,SAASpV,UAAS,QAAQ;AACzC,uBAAS,CAAC,EAAE,QAAgB,QAAiB,CAAC,GAAG,EAAE,OAAO,QAAQ,MAAM,CAAC,EACpE,KAAK,SAAS,OAAO;AAClB,uBAAOA,SAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,cACpC,CAAC,EACA,MAAM,MAAM;AAAA,YACrB,CAAC;AAAA,UACL;AAEA,cAAI,iBAAiB,SAASqV,gBAAe,KAAK;AAC9C,mBAAO,IAAI,QAAQ,IAAI;AAAA,UAC3B;AAEA,cAAI,aAAa,SAASC,YAAW,OAAO,SAAS;AAEjD,gBAAI,OAAO,UAAU,YAAY,CAAC,eAAe,KAAK,KAAK,CAAC,SAAS;AACjE,wBAAU;AACV,sBAAQ;AAAA,YACZ;AAGA,kBAAM,SAAS,eAAe,OAAO,OAAO,CAAC,GAAG,SAAS,EAAE,MAAa,CAAC,CAAC;AAG1E,mBAAO,MAAM,MAAM,mBAAmB,KAAK,MAAM;AAAA,UACrD;AAEA,cAAI,WAAW,SAASC,YAAW;AAC/B,qBACQ,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAC5D,OAAO,MACP,QACF;AACE,mBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,YAC/B;AACA,mBAAO,IAAI,QAAQ,SAASvV,UAAS,QAAQ;AACzC,kBAAI,UAAU,CAAC;AACf,kBAAI,UAAU,CAAC;AAGf,kBAAIrC,SAAQ,KAAK,CAAC,CAAC,GAAG;AAClB,wBAAQ,KAAK,MAAM,SAAS,KAAK,CAAC,CAAC;AACnC,uBAAO,OAAO,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC;AAAA,cACxC,OAAO;AAEH,oBAAI,eAAe,KAAK,KAAK,SAAS,CAAC;AACvC,oBAAI,OAAO,iBAAiB,YAAY,EAAE,wBAAwB,OAAO;AACrE,yBAAO,OAAO,SAAS,KAAK,IAAI,CAAC;AAAA,gBACrC;AAGA,wBAAQ,KAAK,MAAM,SAAS,IAAI;AAAA,cACpC;AAEA,oBAAM,SAAS,aAAa;AAAA,gBACxB,OAAO;AAAA,gBACP,OAAO,QAAQ;AAAA,gBACf,mBAAmB,kBAAkB;AAAA,gBACrC,SAASqC;AAAA,gBACT,SAAS;AAAA,cACb,CAAC;AAAA,YACL,CAAC;AAAA,UACL;AAEA,cAAIsR,YAAW,SAASA,YAAW;AAC/B,mBAAO,MAAM,MAAM,kBAAkB;AAAA,UACzC;AAEA,cAAI,cAAc,SAASkE,aAAY,OAAO;AAC1C,mBAAO,IAAI,QAAQ,SAASxV,UAAS,QAAQ;AACzC,oBAAM,SAAS,2BAA2B;AAAA,gBACtC;AAAA,gBACA,SAAS,SAAS,QAAQ4D,OAAM;AAC5B,kBAAA5D,SAAQ4D,KAAI;AAAA,gBAChB;AAAA,gBACA,SAAS,SAAS,QAAQzD,QAAO;AAC7B,yBAAOA,MAAK;AAAA,gBAChB;AAAA,cACJ,CAAC;AAAA,YACL,CAAC;AAAA,UACL;AAEA,cAAI,eAAe,SAASsV,gBAAe;AACvC,qBACQ,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAC/D,QAAQ,OACR,SACF;AACE,mBAAK,KAAK,IAAI,UAAU,KAAK;AAAA,YACjC;AACA,gBAAIvd,WAAU,MAAM,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI;AACjD,gBAAI,QAAQA,SAAQ,SAASA,WAAUoZ,UAAS;AAChD,mBAAO,QAAQ,IAAI,MAAM,IAAI,WAAW,CAAC;AAAA,UAC7C;AAEA,cAAI,eAAe,SAASoE,gBAAe;AACvC,qBACQ,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAC/D,QAAQ,OACR,SACF;AACE,mBAAK,KAAK,IAAI,UAAU,KAAK;AAAA,YACjC;AACA,gBAAIxd,WAAU,MAAM,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI;AACjD,gBAAI,CAACA,SAAQ,QAAQ;AACjB,kBAAI,QAAQoZ,UAAS,EAAE,OAAO,SAAS1N,OAAM;AACzC,uBACI,EAAEA,MAAK,WAAW,WAAW,QAAQA,MAAK,WAAW,WAAW,UAChEA,MAAK,WAAW,WAAW,cAC3BA,MAAK,WAAW,WAAW,uBAC3BA,MAAK,WAAW,WAAW;AAAA,cAEnC,CAAC;AAED,qBAAO,QAAQ,IAAI,MAAM,IAAI,WAAW,CAAC;AAAA,YAC7C;AACA,mBAAO,QAAQ,IAAI1L,SAAQ,IAAI,WAAW,CAAC;AAAA,UAC/C;AAEA,cAAI,cAAc,SAASyd,eAAc;AACrC,qBACQ,QAAQ,UAAU,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAC/D,QAAQ,OACR,SACF;AACE,mBAAK,KAAK,IAAI,UAAU,KAAK;AAAA,YACjC;AAEA,gBAAIzd,WAAU,MAAM,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI;AAEjD,gBAAI;AACJ,gBAAI,OAAOA,SAAQA,SAAQ,SAAS,CAAC,MAAM,UAAU;AACjD,wBAAUA,SAAQ,IAAI;AAAA,YAC1B,WAAW,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AAC/B,wBAAU,KAAK,CAAC;AAAA,YACpB;AAEA,gBAAI,QAAQoZ,UAAS;AAErB,gBAAI,CAACpZ,SAAQ;AACT,qBAAO,QAAQ;AAAA,gBACX,MAAM,IAAI,SAAS4N,OAAM;AACrB,yBAAO,WAAWA,OAAM,OAAO;AAAA,gBACnC,CAAC;AAAA,cACL;AAGJ,gBAAI,gBAAgB5N,SACf,IAAI,SAAS,OAAO;AACjB,qBAAOyB,UAAS,KAAK,IAAK,MAAM,KAAK,IAAI,MAAM,KAAK,EAAE,KAAK,OAAQ;AAAA,YACvE,CAAC,EACA,OAAO,SAAS,OAAO;AACpB,qBAAO;AAAA,YACX,CAAC;AAEL,mBAAO,cAAc,IAAI,SAASic,IAAG;AACjC,qBAAO,WAAWA,IAAG,OAAO;AAAA,YAChC,CAAC;AAAA,UACL;AAEA,cAAI/d,YAAU,OAAO;AAAA,YACjB,CAAC;AAAA,YAED0L,IAAG;AAAA,YACH,CAAC;AAAA,YAED;AAAA,YACA,CAAC;AAAA,YAED,gBAAgB,OAAOe,eAAc;AAAA,YACrC;AAAA;AAAA;AAAA;AAAA;AAAA,cAKI,YAAYE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMA;AAAA;AAAA;AAAA;AAAA,cAKA,UAAU,SAAS,SAAS,OAAOpL,QAAO;AACtC,uBAAO,MAAM,SAAS,aAAa,EAAE,OAAc,OAAOA,OAAM,CAAC;AAAA,cACrE;AAAA;AAAA;AAAA;AAAA,cAKA,UAAUkY;AAAA;AAAA;AAAA;AAAA,cAKV;AAAA;AAAA;AAAA;AAAA,cAKA;AAAA;AAAA;AAAA;AAAA,cAKA;AAAA;AAAA;AAAA;AAAA,cAKA,MAAM,SAASuE,MAAK,SAAS;AACzB,uBAAO,MAAM,SAAS,QAAQ,EAAE,QAAiB,CAAC;AAAA,cACtD;AAAA;AAAA;AAAA;AAAA,cAKA,QAAQ,SAAS,SAAS;AAEtB,oBAAI,QAAQ,KAAK,QAAQ,cAAc,kBAAkB;AACzD,oBAAI,OAAO;AACP,wBAAM,MAAM;AAAA,gBAChB;AAAA,cACJ;AAAA;AAAA;AAAA;AAAA,cAKA,SAAS,SAAS5a,WAAU;AAExB,gBAAApD,UAAQ,KAAK,WAAW,KAAK,OAAO;AAIpC,sBAAM,SAAS,WAAW;AAG1B,qBAAK,SAAS;AAGd,uBAAO,oBAAoB,UAAU,aAAa;AAGlD,yBAAS,oBAAoB,oBAAoB,iBAAiB;AAGlE,sBAAM,SAAS,aAAa;AAAA,cAChC;AAAA;AAAA;AAAA;AAAA,cAKA,cAAc,SAAS,eAAe,SAAS;AAC3C,uBAAO,aAAa,KAAK,SAAS,OAAO;AAAA,cAC7C;AAAA;AAAA;AAAA;AAAA,cAKA,aAAa,SAAS,cAAc,SAAS;AACzC,uBAAO,YAAY,KAAK,SAAS,OAAO;AAAA,cAC5C;AAAA;AAAA;AAAA;AAAA,cAKA,UAAU,SAAS,SAAS,SAAS;AACjC,uBAAO,QAAQ,YAAY,KAAK,OAAO;AAAA,cAC3C;AAAA;AAAA;AAAA;AAAA,cAKA,gBAAgB,SAAS,eAAe,SAAS;AAE7C,6BAAa,KAAK,SAAS,OAAO;AAGlC,wBAAQ,WAAW,YAAY,OAAO;AAGtC,kCAAkB;AAAA,cACtB;AAAA;AAAA;AAAA;AAAA,cAKA,gBAAgB,SAAS,iBAAiB;AACtC,oBAAI,CAAC,iBAAiB;AAClB;AAAA,gBACJ;AAGA,4BAAY,iBAAiB,KAAK,OAAO;AAGzC,qBAAK,QAAQ,WAAW,YAAY,KAAK,OAAO;AAGhD,kCAAkB;AAAA,cACtB;AAAA;AAAA;AAAA;AAAA;AAAA,cAMA,cAAc,SAAS,aAAa,SAAS;AACzC,uBAAO,KAAK,YAAY,WAAW,oBAAoB;AAAA,cAC3D;AAAA;AAAA;AAAA;AAAA,cAKA,SAAS;AAAA,gBACL,KAAK,SAASoC,OAAM;AAChB,yBAAO,KAAK;AAAA,gBAChB;AAAA,cACJ;AAAA;AAAA;AAAA;AAAA,cAKA,QAAQ;AAAA,gBACJ,KAAK,SAASA,OAAM;AAChB,yBAAO,MAAM,MAAM,YAAY;AAAA,gBACnC;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAGA,gBAAM,SAAS,UAAU;AAGzB,iBAAO,aAAapC,SAAO;AAAA,QAC/B;AAEA,YAAI,kBAAkB,SAASie,mBAAkB;AAC7C,cAAI,gBAAgB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAEzF,cAAIxR,kBAAiB,CAAC;AACtB,gBAAMC,YAAW,GAAG,SAAS,KAAK,OAAO;AACrC,YAAAD,gBAAe,GAAG,IAAI,MAAM,CAAC;AAAA,UACjC,CAAC;AAGD,cAAI,MAAM;AAAA,YACN,OAAO;AAAA,cACH,CAAC;AAAA,cAEDA;AAAA,cACA,CAAC;AAAA,cAED;AAAA,YACJ;AAAA,UACJ;AAGA,iBAAO;AAAA,QACX;AAEA,YAAI,uBAAuB,SAASyR,sBAAqB,QAAQ;AAC7D,iBAAO,OAAO,OAAO,CAAC,EAAE,YAAY,IAAI,OAAO,MAAM,CAAC;AAAA,QAC1D;AAEA,YAAI,8BAA8B,SAASC,6BAA4B,eAAe;AAClF,iBAAO,SAAS,cAAc,QAAQ,UAAU,EAAE,CAAC;AAAA,QACvD;AAEA,YAAI,YAAY,SAASC,WAAU,QAAQ,aAAa;AAEpD,gBAAM,aAAa,SAAS,UAAU,SAAS;AAC3C,kBAAM,QAAQ,SAAS,UAAU,OAAO;AAEpC,kBAAI,iBAAiB,IAAI,OAAO,QAAQ;AAGxC,kBAAIzP,WAAU,eAAe,KAAK,QAAQ;AAG1C,kBAAI,CAACA,UAAS;AACV;AAAA,cACJ;AAGA,qBAAO,OAAO,QAAQ;AAGtB,kBAAI,YAAY,OAAO;AACnB;AAAA,cACJ;AAGA,kBAAItI,UAAS,OAAO,GAAG;AACnB,uBAAO,OAAO,IAAI;AAClB;AAAA,cACJ;AAGA,kBAAI,QAAQ,QAAQ;AACpB,kBAAIY,UAAS,OAAO,KAAK,CAAC,OAAO,KAAK,GAAG;AACrC,uBAAO,KAAK,IAAI,CAAC;AAAA,cACrB;AAEA,qBAAO,KAAK,EAAE,qBAAqB,SAAS,QAAQ,gBAAgB,EAAE,CAAC,CAAC,IAAI;AAAA,YAChF,CAAC;AAGD,gBAAI,QAAQ,SAAS;AACjB,cAAAmX,WAAU,OAAO,QAAQ,KAAK,GAAG,QAAQ,OAAO;AAAA,YACpD;AAAA,UACJ,CAAC;AAAA,QACL;AAEA,YAAI,wBAAwB,SAASC,uBAAsB,MAAM;AAC7D,cAAI,mBACA,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAEzE,cAAI,aAAa,CAAC;AAClB,gBAAM,KAAK,YAAY,SAAS9c,QAAO;AACnC,uBAAW,KAAK,KAAK,WAAWA,MAAK,CAAC;AAAA,UAC1C,CAAC;AAED,cAAI,SAAS,WACR,OAAO,SAAS,WAAW;AACxB,mBAAO,UAAU;AAAA,UACrB,CAAC,EACA,OAAO,SAAS,KAAK,WAAW;AAC7B,gBAAI,QAAQ,KAAK,MAAM,UAAU,IAAI;AAErC,gBAAI,4BAA4B,UAAU,IAAI,CAAC,IAC3C,UAAU,UAAU,OAAO,OAAO;AACtC,mBAAO;AAAA,UACX,GAAG,CAAC,CAAC;AAGT,oBAAU,QAAQ,gBAAgB;AAElC,iBAAO;AAAA,QACX;AAEA,YAAI,qBAAqB,SAAS+c,oBAAmB,SAAS;AAC1D,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAGnF,cAAI,mBAAmB;AAAA;AAAA,YAEnB,WAAW;AAAA,YACX,cAAc;AAAA,YACd,aAAa;AAAA,YACb,qBAAqB;AAAA;AAAA,YAGrB,WAAW;AAAA,cACP,OAAO;AAAA,cACP,SAAS;AAAA,gBACL,YAAY;AAAA,kBACR,OAAO;AAAA,gBACX;AAAA,gBAEA,WAAW;AAAA,kBACP,OAAO;AAAA,gBACX;AAAA,gBAEA,UAAU;AAAA,kBACN,OAAO;AAAA,gBACX;AAAA,gBAEA,YAAY;AAAA,kBACR,OAAO;AAAA,gBACX;AAAA,gBAEA,SAAS;AAAA,kBACL,OAAO;AAAA,gBACX;AAAA,cACJ;AAAA,YACJ;AAAA;AAAA,YAGA,UAAU;AAAA,YACV,WAAW;AAAA,UACf;AAGA,uBAAa,+BAA+B,gBAAgB;AAG5D,cAAI,gBAAgB,OAAO,OAAO,CAAC,GAAG,OAAO;AAE7C,cAAI,mBAAmB;AAAA,YACnB,QAAQ,aAAa,aAAa,QAAQ,cAAc,kBAAkB,IAAI;AAAA,YAC9E;AAAA,UACJ;AAGA,iBAAO,KAAK,gBAAgB,EAAE,QAAQ,SAAS,KAAK;AAChD,gBAAIrX,UAAS,iBAAiB,GAAG,CAAC,GAAG;AACjC,kBAAI,CAACA,UAAS,cAAc,GAAG,CAAC,GAAG;AAC/B,8BAAc,GAAG,IAAI,CAAC;AAAA,cAC1B;AACA,qBAAO,OAAO,cAAc,GAAG,GAAG,iBAAiB,GAAG,CAAC;AAAA,YAC3D,OAAO;AACH,4BAAc,GAAG,IAAI,iBAAiB,GAAG;AAAA,YAC7C;AAAA,UACJ,CAAC;AAID,wBAAc,SAAS,QAAQ,SAAS,CAAC,GAAG;AAAA,YACxC,MAAM,KAAK,QAAQ,iBAAiB,wBAAwB,CAAC,EAAE,IAAI,SAAS,OAAO;AAC/E,qBAAO;AAAA,gBACH,QAAQ,MAAM;AAAA,gBACd,SAAS;AAAA,kBACL,MAAM,MAAM,QAAQ;AAAA,gBACxB;AAAA,cACJ;AAAA,YACJ,CAAC;AAAA,UACL;AAGA,cAAI,MAAM,gBAAgB,aAAa;AAGvC,cAAI,QAAQ,OAAO;AACf,kBAAM,KAAK,QAAQ,KAAK,EAAE,QAAQ,SAASgH,OAAM;AAC7C,kBAAI,QAAQA,KAAI;AAAA,YACpB,CAAC;AAAA,UACL;AAGA,cAAI,eAAe,OAAO;AAG1B,iBAAO;AAAA,QACX;AAGA,YAAI,cAAc,SAAS8O,aAAY;AACnC,iBAAO,OAAO,UAAU,UAAU,IAAI,SAAY,UAAU,CAAC,CAAC,IACxD,mBAAmB,MAAM,QAAQ,SAAS,IAC1C,gBAAgB,MAAM,QAAQ,SAAS;AAAA,QACjD;AAEA,YAAI,kBAAkB,CAAC,QAAQ,SAAS,QAAQ;AAEhD,YAAI,eAAe,SAASwB,cAAa,KAAK;AAC1C,cAAI,MAAM,CAAC;AAEX,uCAA6B,KAAK,KAAK,eAAe;AAEtD,iBAAO;AAAA,QACX;AAOA,YAAI,kBAAkB,SAASC,iBAAgB,QAAQ,cAAc;AACjE,iBAAO,OAAO,QAAQ,sBAAsB,SAASC,QAAO,OAAO;AAC/D,mBAAO,aAAa,KAAK;AAAA,UAC7B,CAAC;AAAA,QACL;AAEA,YAAI,eAAe,SAASC,cAAapb,KAAI;AACzC,cAAI,aAAa,IAAI,KAAK,CAAC,KAAKA,IAAG,SAAS,GAAG,KAAK,GAAG;AAAA,YACnD,MAAM;AAAA,UACV,CAAC;AAED,cAAI,YAAY,IAAI,gBAAgB,UAAU;AAC9C,cAAI,SAAS,IAAI,OAAO,SAAS;AAEjC,iBAAO;AAAA,YACH,UAAU,SAAS,SAAS,SAAS,IAAI;AAAA,YAAC;AAAA,YAC1C,MAAM,SAASqb,MAAK,SAAS,IAAI,cAAc;AAC3C,kBAAIvZ,MAAK,YAAY;AAErB,qBAAO,YAAY,SAASiC,IAAG;AAC3B,oBAAIA,GAAE,KAAK,OAAOjC,KAAI;AAClB,qBAAGiC,GAAE,KAAK,OAAO;AAAA,gBACrB;AAAA,cACJ;AAEA,qBAAO;AAAA,gBACH;AAAA,kBACI,IAAIjC;AAAA,kBACJ;AAAA,gBACJ;AAAA,gBAEA;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,WAAW,SAAS,YAAY;AAC5B,qBAAO,UAAU;AACjB,kBAAI,gBAAgB,SAAS;AAAA,YACjC;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,YAAY,SAASwZ,WAAU,KAAK;AACpC,iBAAO,IAAI,QAAQ,SAASzW,UAAS,QAAQ;AACzC,gBAAI,MAAM,IAAI,MAAM;AACpB,gBAAI,SAAS,WAAW;AACpB,cAAAA,SAAQ,GAAG;AAAA,YACf;AACA,gBAAI,UAAU,SAASd,IAAG;AACtB,qBAAOA,EAAC;AAAA,YACZ;AACA,gBAAI,MAAM;AAAA,UACd,CAAC;AAAA,QACL;AAEA,YAAI,aAAa,SAASwX,YAAW5Q,OAAM9M,OAAM;AAC7C,cAAI,cAAc8M,MAAK,MAAM,GAAGA,MAAK,MAAMA,MAAK,IAAI;AACpD,sBAAY,mBAAmBA,MAAK;AACpC,sBAAY,OAAO9M;AACnB,iBAAO;AAAA,QACX;AAEA,YAAI,WAAW,SAAS2d,UAAS7Q,OAAM;AACnC,iBAAO,WAAWA,OAAMA,MAAK,IAAI;AAAA,QACrC;AAGA,YAAI,oBAAoB,CAAC;AAGzB,YAAI,kBAAkB,SAAS8Q,iBAAgBC,SAAQ;AAEnD,cAAI,kBAAkB,SAASA,OAAM,GAAG;AACpC;AAAA,UACJ;AAGA,4BAAkB,KAAKA,OAAM;AAG7B,cAAI,gBAAgBA,QAAO;AAAA,YACvB;AAAA,YACA,OAAO;AAAA,cACH;AAAA,cACA;AAAA,cACA,UAAU3Y;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,YAEA,OAAO;AAAA,cACH;AAAA,YACJ;AAAA,UACJ,CAAC;AAGD,+BAAqB,cAAc,OAAO;AAAA,QAC9C;AAGA,YAAI,cAAc,SAAS4Y,eAAc;AACrC,iBAAO,OAAO,UAAU,SAAS,KAAK,OAAO,SAAS,MAAM;AAAA,QAChE;AACA,YAAI,cAAc,SAASC,eAAc;AACrC,iBAAO,aAAa;AAAA,QACxB;AACA,YAAI,eAAe,SAASC,gBAAe;AACvC,iBAAO,WAAW,KAAK;AAAA,QAC3B;AACA,YAAI,qBAAqB,SAASC,sBAAqB;AACnD,iBAAO,SAAS,UAAU,qBAAqB,OAAO;AAAA,QAC1D;AACA,YAAI,gBAAgB,SAASC,iBAAgB;AACzC,iBAAO,qBAAqB;AAAA,QAChC;AACA,YAAI,YAAY,SAASC,aAAY;AACjC,iBAAO,iBAAiB;AAAA,QAC5B;AACA,YAAI,iBAAiB,SAASC,kBAAiB;AAC3C,iBAAO,eAAe,OAAO,OAAO,CAAC;AAAA,QACzC;AACA,YAAI,SAAS,SAASC,UAAS;AAC3B,iBAAO,eAAe,KAAK,OAAO,UAAU,SAAS;AAAA,QACzD;AAEA,YAAI,aAAa,WAAW;AAExB,cAAI;AAAA;AAAA,YAEA,UAAU;AAAA,YAEV,CAAC,YAAY;AAAA,YAEb,cAAc,KACd,YAAY,KACZ,aAAa,KACb,mBAAmB,KACnB,UAAU;AAAA,aAET,eAAe,KAAK,OAAO;AAAA;AAEhC,iBAAO,WAAW;AACd,mBAAO;AAAA,UACX;AAAA,QACJ,GAAG;AAKH,YAAI,QAAQ;AAAA;AAAA,UAER,MAAM,CAAC;AAAA,QACX;AAGA,YAAIre,QAAO;AAKX,YAAI,KAAK,SAASmC,MAAK;AAAA,QAAC;AACxB,QAAAtD,UAAQ,SAAS,CAAC;AAClB,QAAAA,UAAQ,aAAa,CAAC;AACtB,QAAAA,UAAQ,aAAa,CAAC;AACtB,QAAAA,UAAQ,cAAc,CAAC;AACvB,QAAAA,UAAQ,SAAS;AACjB,QAAAA,UAAQ,UAAU;AAClB,QAAAA,UAAQ,QAAQ;AAChB,QAAAA,UAAQ,OAAO;AACf,QAAAA,UAAQ,iBAAiB;AACzB,QAAAA,UAAQ,aAAa;AACrB,QAAAA,UAAQ,aAAa;AAGrB,YAAI,UAAU,GAAG;AAEb;AAAA,YACI,WAAW;AACP,oBAAM,KAAK,QAAQ,SAAS,KAAK;AAC7B,uBAAO,IAAI,MAAM;AAAA,cACrB,CAAC;AAAA,YACL;AAAA,YACA,SAAS,IAAI;AACT,oBAAM,KAAK,QAAQ,SAAS,KAAK;AAC7B,uBAAO,IAAI,OAAO,EAAE;AAAA,cACxB,CAAC;AAAA,YACL;AAAA,UACJ;AAGA,cAAIa,YAAW,SAASA,YAAW;AAE/B,qBAAS;AAAA,cACL,IAAI,YAAY,mBAAmB;AAAA,gBAC/B,QAAQ;AAAA,kBACJ;AAAA,kBACA,QAAQb,UAAQ;AAAA,kBAChB,SAASA,UAAQ;AAAA,kBACjB,OAAOA,UAAQ;AAAA,kBACf,MAAMA,UAAQ;AAAA,kBACd,gBAAgBA,UAAQ;AAAA,kBACxB,YAAYA,UAAQ;AAAA,gBACxB;AAAA,cACJ,CAAC;AAAA,YACL;AAGA,qBAAS,oBAAoB,oBAAoBa,SAAQ;AAAA,UAC7D;AAEA,cAAI,SAAS,eAAe,WAAW;AAEnC,uBAAW,WAAW;AAClB,qBAAOA,UAAS;AAAA,YACpB,GAAG,CAAC;AAAA,UACR,OAAO;AACH,qBAAS,iBAAiB,oBAAoBA,SAAQ;AAAA,UAC1D;AAGA,cAAI,oBAAoB,SAAS4e,qBAAoB;AACjD,mBAAO,MAAM/S,YAAW,GAAG,SAAS,KAAK,OAAO;AAC5C,cAAA1M,UAAQ,YAAY,GAAG,IAAI,MAAM,CAAC;AAAA,YACtC,CAAC;AAAA,UACL;AAEA,UAAAA,UAAQ,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM;AACzC,UAAAA,UAAQ,aAAa,OAAO,OAAO,CAAC,GAAG,UAAU;AACjD,UAAAA,UAAQ,aAAa,OAAO,OAAO,CAAC,GAAG,UAAU;AAEjD,UAAAA,UAAQ,cAAc,CAAC;AACvB,4BAAkB;AAGlB,UAAAA,UAAQ,SAAS,SAASqE,UAAS;AAC/B,gBAAI,MAAM,YAAY,MAAM,QAAQ,SAAS;AAC7C,gBAAI,GAAG,WAAWrE,UAAQ,OAAO;AACjC,kBAAM,KAAK,KAAK,GAAG;AACnB,mBAAO,aAAa,GAAG;AAAA,UAC3B;AAGA,UAAAA,UAAQ,UAAU,SAASoD,SAAQ,MAAM;AAErC,gBAAI,gBAAgB,MAAM,KAAK,UAAU,SAASsc,MAAK;AACnD,qBAAOA,KAAI,aAAa,IAAI;AAAA,YAChC,CAAC;AACD,gBAAI,iBAAiB,GAAG;AAEpB,kBAAI,MAAM,MAAM,KAAK,OAAO,eAAe,CAAC,EAAE,CAAC;AAG/C,kBAAI,eAAe;AAEnB,qBAAO;AAAA,YACX;AAEA,mBAAO;AAAA,UACX;AAGA,UAAA1f,UAAQ,QAAQ,SAAS2f,OAAM,SAAS;AAEpC,gBAAI,eAAe,MAAM,KAAK,QAAQ,iBAAiB,MAAMxe,KAAI,CAAC;AAGlE,gBAAI,WAAW,aAAa,OAAO,SAAS,SAAS;AACjD,qBAAO,CAAC,MAAM,KAAK,KAAK,SAAS,KAAK;AAClC,uBAAO,IAAI,aAAa,OAAO;AAAA,cACnC,CAAC;AAAA,YACL,CAAC;AAGD,mBAAO,SAAS,IAAI,SAAS,MAAM;AAC/B,qBAAOnB,UAAQ,OAAO,IAAI;AAAA,YAC9B,CAAC;AAAA,UACL;AAGA,UAAAA,UAAQ,OAAO,SAAS4f,MAAK,MAAM;AAC/B,gBAAI,MAAM,MAAM,KAAK,KAAK,SAASF,MAAK;AACpC,qBAAOA,KAAI,aAAa,IAAI;AAAA,YAChC,CAAC;AACD,gBAAI,CAAC,KAAK;AACN,qBAAO;AAAA,YACX;AACA,mBAAO,aAAa,GAAG;AAAA,UAC3B;AAGA,UAAA1f,UAAQ,iBAAiB,SAAS,iBAAiB;AAC/C,qBACQ,OAAO,UAAU,QAAQ6f,WAAU,IAAI,MAAM,IAAI,GAAG,OAAO,GAC/D,OAAO,MACP,QACF;AACE,cAAAA,SAAQ,IAAI,IAAI,UAAU,IAAI;AAAA,YAClC;AAGA,YAAAA,SAAQ,QAAQ,eAAe;AAG/B,8BAAkB;AAAA,UACtB;AAEA,UAAA7f,UAAQ,aAAa,SAAS,eAAe;AACzC,gBAAI,OAAO,CAAC;AACZ,kBAAM0M,YAAW,GAAG,SAAS,KAAK,OAAO;AACrC,mBAAK,GAAG,IAAI,MAAM,CAAC;AAAA,YACvB,CAAC;AACD,mBAAO;AAAA,UACX;AAEA,UAAA1M,UAAQ,aAAa,SAAS,aAAa,MAAM;AAC7C,gBAAIiH,UAAS,IAAI,GAAG;AAEhB,oBAAM,KAAK,QAAQ,SAAS,KAAK;AAC7B,oBAAI,WAAW,IAAI;AAAA,cACvB,CAAC;AAGD,cAAA0F,YAAW,IAAI;AAAA,YACnB;AAGA,mBAAO3M,UAAQ,WAAW;AAAA,UAC9B;AAAA,QACJ;AAEA,QAAAA,UAAQ,YAAY;AAEpB,eAAO,eAAeA,WAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,MAChE,CAAC;AAAA;AAAA;;;AC7+YD;AA2DA,WAAS,0BAA0B,WAAW,MAAM,UAAU,MAAM,OAAO,UAAU8f,QAAO;AAC1F,QAAI,KAAK,OAAO,MAAM,OAAO,MAAM;AACjC,YAAM,gBAAgB;AACtB;AAAA,IACF;AAEA,UAAM,WAAW,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC;AACxD,kBAAc,IAAI,QAAQ;AAC1B,qBAAiB,IAAI,UAAU,KAAK,IAAI,CAAC;AAEzC,UAAM,SAAS,IAAI,kCAAa,MAAM,wCAAwC;AAAA,MAC5E,kCAAkC,CAAC,QAAQ;AACzC,cAAM,aAAa,IAAI,gBAAgB;AAEvC,YAAI,OAAO,iBAAiB,YAAY,CAAAC,WAAS;AAC/C,cAAIA,OAAM,kBAAkB;AAC1B,qBAASA,OAAM,kBAAkBA,OAAM,QAAQA,OAAM,KAAK;AAAA,UAC5D;AAAA,QACF,GAAG,EAAE,QAAQ,WAAW,OAAO,CAAC;AAEhC,eAAO,EAAE,OAAO,MAAM,WAAW,MAAM,EAAE;AAAA,MAC3C;AAAA,IACF,CAAC;AAED,WAAO,OAAO,CAAC,KAAK,SAAS;AAC3B,UAAI,KAAK;AACP,sBAAc,OAAO,QAAQ;AAC7B,yBAAiB,OAAO,QAAQ;AAChC,cAAM,GAAG;AACT;AAAA,MACF;AAEA,4BAAsB,MAAM;AAC1B,cAAM,QAAQ,SAAS,cAAc,eAAe,SAAS,IAAI;AACjE,YAAI,CAAC,OAAO;AACV,wBAAc,OAAO,QAAQ;AAC7B,2BAAiB,OAAO,QAAQ;AAChC,gBAAM,iBAAiB;AACvB;AAAA,QACF;AAEA,cAAM,OAAO,MAAM,QAAQ,MAAM;AACjC,YAAI,CAAC,MAAM;AACT,wBAAc,OAAO,QAAQ;AAC7B,2BAAiB,OAAO,QAAQ;AAChC,gBAAM,gBAAgB;AACtB;AAAA,QACF;AAEA,8BAAsB,MAAM,WAAW,KAAK,SAAS;AACrD,YAAI,CAAC,KAAK,0BAA0B;AAClC,kCAAwB,IAAI;AAAA,QAC9B;AACA,kCAA0B,IAAI;AAC9B,aAAK,KAAK,SAAS;AAEnB,sBAAc,OAAO,QAAQ;AAC7B,yBAAiB,OAAO,QAAQ;AAEhC,4BAAoB,2BAA2B;AAAA,UAC7C;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ,KAAK;AAAA,UACb,cAAc,cAAc,SAAS;AAAA,QACvC,CAAC;AAED,YAAI,yBAAyB,QAAQ;AACnC,8BAAoB,MAAM,iBAAiB,MAAM,MAAM,WAAW,IAAI,CAAC;AAAA,QACzE,OAAO;AACL,qBAAW,MAAM,iBAAiB,MAAM,MAAM,WAAW,IAAI,GAAG,GAAI;AAAA,QACtE;AAEA,YAAI,cAAc,SAAS,GAAG;AAC5B,mCAAyB,IAAI;AAAA,QAC/B,OAAO;AACL,8BAAoB,MAAM,GAAG;AAAA,QAC/B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,WAAO,EAAE,OAAO,MAAMD,OAAM,EAAE;AAAA,EAChC;AAEA,WAAS,kBAAkB,cAAc,MAAM,OAAO;AACpD,UAAME,SAAQ,SAAS,iBAAiB,MAAM;AAE9C,IAAAA,OAAM,QAAQ,CAAC,SAAS;AACtB,YAAM,cAAc,KAAK,cAAc,+BAA+B,YAAY,IAAI;AACtF,UAAI,aAAa;AACf,+BAAuB,MAAM,YAAY;AAAA,MAC3C;AAAA,IACF,CAAC;AAED,wBAAoB,wBAAwB,EAAE,aAAa,CAAC;AAE5D,IAAAA,OAAM,QAAQ,UAAQ;AACpB,0BAAoB,MAAM,EAAE;AAAA,IAC9B,CAAC;AAED,SAAK;AAAA,EACP;AAEA,WAAS,sBAAsB,MAAM,WAAW,OAAO;AACrD,UAAM,iBAAiB,KAAK,iBAAiB,8BAA8B,SAAS,aAAa,KAAK,IAAI;AAC1G,QAAI,eAAe,SAAS,GAAG;AAC7B;AAAA,IACF;AAEA,UAAM,cAAc,SAAS,cAAc,OAAO;AAClD,gBAAY,OAAO;AACnB,gBAAY,OAAO;AACnB,gBAAY,QAAQ;AACpB,gBAAY,aAAa,gBAAgB,KAAK;AAC9C,SAAK,YAAY,WAAW;AAAA,EAC9B;AAEA,WAAS,wBAAwB,MAAM;AACrC,QAAI,KAAK,0BAA0B;AACjC;AAAA,IACF;AAEA,QAAI,KAAK,wBAAwB;AAC/B;AAAA,IACF;AAEA,SAAK,yBAAyB;AAC9B,SAAK,iBAAiB,UAAU,gBAAgB;AAAA,EAClD;AAEA,WAAS,iBAAiB,MAAM,MAAM,WAAW,MAAM;AACrD,wBAAoB,sBAAsB,EAAE,MAAM,MAAM,UAAU,CAAC;AAEnE,wBAAoB,IAAI;AAExB,wBAAoB,IAAI;AAAA,EAC1B;AAEA,WAAS,oBAAoB,MAAM;AACjC,UAAM,gBAAgB,KAAK;AAAA,MACzB;AAAA,IACF;AAEA,kBAAc,QAAQ,YAAU;AAC9B,aAAO,UAAU,OAAO,WAAW,YAAY,cAAc,oBAAoB;AACjF,aAAO,WAAW;AAClB,aAAO,gBAAgB,UAAU;AACjC,aAAO,gBAAgB,eAAe;AAAA,IACxC,CAAC;AAAA,EACH;AAEA,WAAS,oBAAoB,MAAM;AACjC,UAAM,kBAAkB,KAAK,iBAAiB,mDAAmD;AAEjG,oBAAgB,QAAQ,aAAW;AACjC,cAAQ,MAAM,UAAU;AACxB,cAAQ,UAAU,IAAI,QAAQ;AAAA,IAChC,CAAC;AAAA,EACH;AAEA,WAAS,uBAAuB,MAAM,cAAc;AAClD,UAAM,cAAc,KAAK,cAAc,+BAA+B,YAAY,IAAI;AACtF,QAAI,aAAa;AACf,kBAAY,OAAO;AAAA,IACrB;AAEA,UAAM,sBAAsB,KAAK,cAAc,sCAAsC,YAAY,IAAI;AACrG,QAAI,qBAAqB;AACvB,0BAAoB,OAAO;AAAA,IAC7B;AAEA,UAAM,oBAAoB,KAAK,iBAAiB,sCAAsC,YAAY,IAAI;AACtG,sBAAkB,QAAQ,WAAS;AACjC,YAAM,OAAO;AAAA,IACf,CAAC;AAED,UAAM,mBAAmB,wBAAwB,IAAI;AACrD,qBAAiB,QAAQ,WAAS;AAChC,UAAI,MAAM,UAAU,cAAc;AAChC,cAAM,OAAO;AAAA,MACf;AAAA,IACF,CAAC;AAED,UAAM,mBAAmB,KAAK,iBAAiB,6CAA6C;AAC5F,qBAAiB,QAAQ,WAAS;AAChC,UAAI,MAAM,aAAa,cAAc,MAAM,cAAc;AACvD,cAAM,OAAO;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,qBAAqB;AAC5B,UAAM,SAAS,SAAS,iBAAiB,gBAAgB;AACzD,WAAO,QAAQ,WAAS;AACtB,UAAI,MAAM,SAAU;AAEpB,UAAI;AACF,cAAM,cAAc,CAAC;AAErB,YAAI,MAAM,UAAU,MAAM,OAAO,KAAK,MAAM,IAAI;AAC9C,sBAAY,oBAAoB,MAAM,OAAO,MAAM,GAAG,EAAE,IAAI,CAAAC,OAAKA,GAAE,KAAK,CAAC;AAAA,QAC3E;AAEA,cAAM,OAAgB,gBAAO,OAAO,WAAW;AAC/C,cAAM,WAAW;AAEjB,mBAAW,MAAM;AACf,gBAAM,kBAAkB,KAAK,QAAQ,cAAc,oBAAoB;AACvE,cAAI,mBAAmB,MAAM,QAAQ;AACnC,4BAAgB,aAAa,UAAU,MAAM,MAAM;AAAA,UACrD;AAAA,QACF,GAAG,GAAG;AAEN,gCAAwB,IAAI;AAE5B,YAAI,OAAO,yBAAyB,OAAO,sBAAsB,SAAS,GAAG;AAC3E,iBAAO,sBAAsB,QAAQ,UAAQ;AAC3C,gBAAI;AACF,mBAAK,QAAQ,IAAI;AAAA,YACnB,SAAS,OAAO;AAAA,YAChB;AAAA,UACF,CAAC;AAED,iBAAO,wBAAwB,CAAC;AAAA,QAClC;AAAA,MAEF,SAAS,OAAO;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,wBAAwB,MAAM;AACrC,SAAK,GAAG,WAAW,CAAC,OAAO,SAAS;AAClC,UAAI,CAAC,OAAO;AACV,8BAAsB,MAAM;AAC1B,8BAAoB,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAAA,QAC1D,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,SAAK,GAAG,cAAc,CAAC,OAAO,SAAS;AACrC,UAAI,CAAC,OAAO;AACV,8BAAsB,MAAM;AAC1B,8BAAoB,wBAAwB,EAAE,MAAM,KAAK,CAAC;AAE1D,gBAAMD,SAAQ,SAAS,iBAAiB,MAAM;AAC9C,UAAAA,OAAM,QAAQ,UAAQ;AACpB,gCAAoB,MAAM,EAAE;AAAA,UAC9B,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,2BAA2B,MAAM;AACxC,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AAEA,UAAM,UAAU,KAAK,iBAAiB,mBAAmB;AAEzD,QAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,IACF;AAEA,iCAA6B,IAAI;AAEjC,UAAM,mBAAmB,oBAAI,IAAI;AACjC,UAAM,WAAW,SAAS,uBAAuB;AAEjD,YAAQ,QAAQ,CAAC,WAAW;AAC1B,YAAM,EAAE,QAAQ,UAAU,MAAM,IAAI,kBAAkB,MAAM;AAE5D,UAAI,CAAC,kBAAkB,QAAQ,UAAU,KAAK,GAAG;AAC/C;AAAA,MACF;AAEA,UAAI,iBAAiB,IAAI,MAAM,GAAG;AAChC;AAAA,MACF;AAEA,uBAAiB,IAAI,MAAM;AAC3B,YAAM,cAAc,kBAAkB,MAAM,QAAQ,UAAU,KAAK;AACnE,eAAS,YAAY,WAAW;AAAA,IAClC,CAAC;AAED,SAAK,YAAY,QAAQ;AAAA,EAC3B;AAEA,WAAS,kBAAkB,QAAQ;AACjC,WAAO;AAAA,MACL,QAAQ,OAAO,QAAQ;AAAA,MACvB,UAAU,OAAO,QAAQ;AAAA,MACzB,OAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,kBAAkB,QAAQ,UAAU,OAAO;AAClD,QAAI,CAAC,UAAU,CAAC,UAAU;AACxB,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,SAAS,MAAM,KAAK,MAAM,IAAI;AACjC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAGA,WAAS,kBAAkB,MAAM,QAAQ,UAAU,OAAO;AACxD,UAAM,cAAc,SAAS,cAAc,OAAO;AAClD,gBAAY,OAAO;AACnB,gBAAY,KAAK,aAAa,MAAM;AACpC,gBAAY,OAAO;AACnB,gBAAY,QAAQ;AACpB,gBAAY,aAAa,iBAAiB,QAAQ;AAClD,gBAAY,aAAa,gBAAgB,MAAM;AAE/C,WAAO;AAAA,EACT;AAEA,WAAS,oBAAoB,MAAM;AACjC,UAAM,gBAAgB,oBAAI,IAAI;AAC9B,UAAM,iBAAiB,KAAK,iBAAiB,gBAAgB;AAE7D,mBAAe,QAAQ,CAAC,UAAU;AAChC,UAAI,MAAM,UAAU;AAClB,cAAM,QAAQ,MAAM,SAAS,SAAS;AACtC,cAAM,QAAQ,CAAC,SAAS;AACtB,cAAI,KAAK,UAAU;AACjB,0BAAc,IAAI,KAAK,QAAQ;AAAA,UACjC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,UAAM,mBAAmB,wBAAwB,IAAI;AACrD,qBAAiB,QAAQ,CAAC,UAAU;AAClC,UAAI,MAAM,SAAS,CAAC,cAAc,IAAI,MAAM,KAAK,GAAG;AAClD,cAAM,OAAO;AAAA,MACf;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,KAAK,iBAAiB,wCAAwC;AACrF,mBAAe,QAAQ,CAAC,UAAU;AAChC,YAAM,SAAS,MAAM,GAAG,QAAQ,cAAc,EAAE;AAChD,UAAI,CAAC,cAAc,IAAI,MAAM,GAAG;AAC9B,cAAM,OAAO;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,6BAA6B,MAAM;AAC1C,UAAM,iBAAiB;AAAA,MACrB,GAAG,KAAK,iBAAiB,wCAAwC;AAAA,MACjE,GAAG,KAAK,iBAAiB,6CAA6C;AAAA,IACxE;AAEA,mBAAe,QAAQ,WAAS,MAAM,OAAO,CAAC;AAE9C,UAAM,sBAAsB,KAAK,iBAAiB,2CAA2C;AAC7F,UAAM,4BAA4B,KAAK,iBAAiB,wDAAwD;AAEhH,QAAI,oBAAoB,SAAS,0BAA0B,QAAQ;AACjE,WAAK,iBAAiB,4CAA4C,EAAE,QAAQ,WAAS,MAAM,OAAO,CAAC;AAAA,IACrG;AAAA,EACF;AAEA,WAAS,wBAAwB,eAAe;AAC9C,UAAM,EAAE,QAAQ,UAAU,MAAM,IAAI,kBAAkB,aAAa;AAEnE,QAAI,CAAC,kBAAkB,QAAQ,UAAU,KAAK,EAAG;AAEjD,QAAI,cAAc,SAAS,eAAe,aAAa,MAAM,EAAE;AAC/D,QAAI,CAAC,aAAa;AAChB,YAAME,QAAO,cAAc,QAAQ,MAAM;AACzC,UAAI,CAACA,MAAM;AAEX,oBAAc,kBAAkBA,OAAM,QAAQ,UAAU,KAAK;AAC7D,MAAAA,MAAK,YAAY,WAAW;AAAA,IAC9B,OAAO;AACL,kBAAY,QAAQ;AAAA,IACtB;AAEA,UAAM,OAAO,cAAc,QAAQ,MAAM;AACzC,QAAI,MAAM;AACR,gCAA0B,IAAI;AAC9B,0BAAoB,MAAM,EAAE;AAAA,IAC9B;AAAA,EACF;AAIA,WAAS,oBAAoB,WAAW,QAAQ;AAC9C,UAAMH,SAAQ,IAAI,YAAY,WAAW,EAAE,OAAO,CAAC;AACnD,aAAS,cAAcA,MAAK;AAAA,EAC9B;AAUA,WAAS,kBAAkB,UAAU;AACnC,UAAM,YAAY,SAAS,cAAc,qBAAqB;AAC9D,QAAI,CAAC,UAAW;AAEhB,cAAU,iBAAiB,yBAAyB,EAAE,QAAQ,CAAAI,OAAKA,GAAE,OAAO,CAAC;AAE7E,UAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,YAAQ,YAAY;AACpB,YAAQ,YAAY;AAAA;AAAA;AAAA;AAAA,6DAIuC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAOnE,YAAQ,cAAc,gCAAgC,EAAE,iBAAiB,SAAS,MAAM,QAAQ,OAAO,CAAC;AAExG,cAAU,YAAY,OAAO;AAE7B,eAAW,MAAM;AACf,cAAQ,UAAU,IAAI,kCAAkC;AACxD,iBAAW,MAAM,QAAQ,OAAO,GAAG,GAAG;AAAA,IACxC,GAAG,GAAI;AAAA,EACT;AAEA,WAAS,oBAAoB,MAAM,QAAQ,IAAI;AAC7C,UAAM,SAAS,KAAK,MAAM,KAAK,UAAU,UAAU,GAAG,GAAG;AAEzD,QAAI,mBAAmB,IAAI,MAAM,GAAG;AAClC,mBAAa,mBAAmB,IAAI,MAAM,CAAC;AAAA,IAC7C;AAEA,UAAM,YAAY,WAAW,MAAM;AACjC,+BAAyB,IAAI;AAC7B,yBAAmB,OAAO,MAAM;AAAA,IAClC,GAAG,KAAK;AAER,uBAAmB,IAAI,QAAQ,SAAS;AAAA,EAC1C;AAEA,WAAS,0BAA0B,MAAM;AACvC,UAAM,SAAS,KAAK,MAAM,KAAK,UAAU,UAAU,GAAG,GAAG;AAEzD,QAAI,oBAAoB,IAAI,MAAM,GAAG;AACnC;AAAA,IACF;AAEA,wBAAoB,IAAI,MAAM;AAE9B,UAAM,aAAa,YAAY,MAAM;AACnC,UAAI,CAAC,SAAS,SAAS,IAAI,GAAG;AAC5B,iCAAyB,IAAI;AAC7B;AAAA,MACF;AAEA,UAAI,yBAAyB,QAAQ;AACnC,4BAAoB,MAAM,yBAAyB,IAAI,GAAG,EAAE,SAAS,IAAI,CAAC;AAAA,MAC5E,OAAO;AACL,iCAAyB,IAAI;AAAA,MAC/B;AAAA,IACF,GAAG,GAAG;AAEN,wBAAoB,IAAI,QAAQ,UAAU;AAAA,EAC5C;AAEA,WAAS,yBAAyB,MAAM;AACtC,UAAM,SAAS,KAAK,MAAM,KAAK,UAAU,UAAU,GAAG,GAAG;AAEzD,QAAI,oBAAoB,IAAI,MAAM,GAAG;AACnC,oBAAc,oBAAoB,IAAI,MAAM,CAAC;AAC7C,0BAAoB,OAAO,MAAM;AAAA,IACnC;AAEA,wBAAoB,OAAO,MAAM;AAAA,EACnC;AAEA,WAAS,2BAA2B;AAClC,UAAM,oBAAoB,SAAS,iBAAiB,MAAM;AAE1D,sBAAkB,QAAQ,UAAQ;AAChC,YAAM,cAAc,KAAK,cAAc,8CAA8C;AACrF,UAAI,aAAa;AACf,iCAAyB,IAAI;AAC7B,kCAA0B,IAAI;AAAA,MAChC;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,wBAAwB,MAAM;AACrC,WAAO,KAAK,iBAAiB,2CAA2C;AAAA,EAC1E;AAEA,WAAS,yBAAyB,MAAM;AACtC,UAAM,kBAAkB,KAAK,iBAAiB,mBAAmB;AACjE,UAAM,mBAAmB,wBAAwB,IAAI;AAErD,UAAM,yBAAyB,oBAAI,IAAI;AACvC,UAAM,yBAAyB,CAAC;AAEhC,eAAW,SAAS,kBAAkB;AACpC,UAAI,MAAM,SAAS,MAAM,MAAM,KAAK,MAAM,MAAM,CAAC,uBAAuB,IAAI,MAAM,KAAK,GAAG;AACxF,+BAAuB,IAAI,MAAM,KAAK;AACtC,+BAAuB,KAAK,KAAK;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,aAAa,uBAAuB;AAC1C,QAAI,yBAAyB;AAE7B,eAAW,UAAU,iBAAiB;AACpC,UAAI,OAAO,SAAS,OAAO,MAAM,KAAK,MAAM,IAAI;AAC9C;AAAA,MACF;AAAA,IACF;AAEA,UAAM,oBAAoB,aAAa,KAAK,eAAe;AAE3D,UAAM,mBAAmB,cAAc,OAAO;AAE9C,QAAI,uBAAuB;AAC3B,QAAI,CAAC,kBAAkB;AACrB,YAAM,gBAAgB,KAAK,iBAAiB,iBAAiB;AAC7D,iBAAW,QAAQ,eAAe;AAChC,YAAI,KAAK,UAAU,SAAS,2BAA2B,KACnD,KAAK,UAAU,SAAS,wBAAwB,GAAG;AACrD,iCAAuB;AACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,oBAAoB,KAAK,cAAc,qBAAqB;AAClE,UAAM,kBAAkB,mBAAmB,SAAS,oBAAoB;AAExE,UAAM,kBAAkB,kBACnB,eAAe,KAAM,qBAAqB,CAAC,uBAC3C,qBAAqB,CAAC,wBAAwB,aAAa;AAEhE,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,oBAAoB,cAAc;AAAA,MAClC;AAAA,IACF;AAEA,4BAAwB,MAAM,WAAW,eAAe;AAExD,wBAAoB,yBAAyB,UAAU;AAEvD,WAAO;AAAA,EACT;AAEA,WAAS,wBAAwB,MAAM,iBAAiB;AACtD,QAAI,eAAe,KAAK,cAAc,sBAAsB;AAE5D,QAAI,CAAC,cAAc;AACjB,qBAAe,KAAK,cAAc,uBAAuB;AAAA,IAC3D;AAEA,QAAI,CAAC,cAAc;AACjB,qBAAe,KAAK,cAAc,sBAAsB;AAAA,IAC1D;AAEA,QAAI,CAAC,cAAc;AACjB,qBAAe,KAAK,cAAc,QAAQ;AAAA,IAC5C;AAEA,QAAI,CAAC,cAAc;AACjB,YAAM,aAAa,KAAK,QAAQ,KAAK;AACrC,UAAI,YAAY;AACd,uBAAe,WAAW,cAAc,2EAA2E;AAAA,MACrH;AAAA,IACF;AAEA,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AAEA,UAAM,gBAAgB,CAAC;AAEvB,iBAAa,WAAW;AAExB,QAAI,eAAe;AACjB,mBAAa,UAAU,IAAI,cAAc,oBAAoB;AAC7D,mBAAa,UAAU,OAAO,mBAAmB;AAAA,IACnD,OAAO;AACL,mBAAa,UAAU,OAAO,cAAc,oBAAoB;AAChE,mBAAa,UAAU,IAAI,mBAAmB;AAAA,IAChD;AAEA,iBAAa,QAAQ,gBACnB,oDACA;AAAA,EACJ;AAEA,WAAS,iBAAiBJ,QAAO;AAC/B,UAAM,OAAOA,OAAM;AAEnB,QAAI,KAAK,0BAA0B;AACjC;AAAA,IACF;AAEA,UAAM,cAAc,KAAK,cAAc,gBAAgB;AAEvD,QAAI,aAAa;AACf,0BAAoB,IAAI;AACxB,mCAA6B,IAAI;AACjC,iCAA2B,IAAI;AAAA,IACjC;AAAA,EACF;AAEA,WAAS,wBAAwB;AAC/B,UAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACnD,gBAAU,QAAQ,CAAC,aAAa;AAC9B,YAAI,SAAS,SAAS,aAAa;AACjC,gBAAM,oBAAoB,MAAM,KAAK,SAAS,UAAU,EAAE,KAAK,UAAQ;AACrE,gBAAI,KAAK,aAAa,KAAK,cAAc;AACvC,qBAAO,KAAK,iBAAiB,KAAK,cAAc,gBAAgB;AAAA,YAClE;AACA,mBAAO;AAAA,UACT,CAAC;AAED,cAAI,mBAAmB;AACrB,uBAAW,oBAAoB,GAAG;AAAA,UACpC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,aAAS,QAAQ,SAAS,MAAM;AAAA,MAC9B,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,WAAS,sBAAsB;AAC7B,QAAI,SAAS,eAAe,WAAW;AACrC,yBAAmB;AAAA,IACrB;AACA,aAAS,iBAAiB,oBAAoB,kBAAkB;AAChE,aAAS,iBAAiB,cAAc,kBAAkB;AAC1D,aAAS,iBAAiB,gBAAgB,kBAAkB;AAC5D,aAAS,iBAAiB,oBAAoB,kBAAkB;AAChE,aAAS,iBAAiB,sBAAsB,kBAAkB;AAClE,WAAO,iBAAiB,QAAQ,kBAAkB;AAClD,0BAAsB;AAAA,EACxB;AAuMA,WAAS,+BAA+B;AACtC,UAAM,aAAa,SAAS,iBAAiB,qBAAqB;AAElE,QAAI,WAAW,WAAW,GAAG;AAC3B,iBAAW,8BAA8B,GAAG;AAC5C;AAAA,IACF;AAEA,eAAW,QAAQ,CAAC,WAAWK,WAAU;AACvC,YAAM,cAAc,UAAU,QAAQ;AACtC,UAAI,eAAe,CAAC,UAAU,QAAQ,aAAa;AACjD,kBAAU,QAAQ,cAAc;AAChC,YAAI,oBAAoB,WAAW,EAAE,KAAK;AAAA,MAC5C;AAAA,IACF,CAAC;AAED,aAAS,iBAAiB,MAAM,EAAE,QAAQ,UAAQ;AAChD,UAAI,KAAK,cAAc,qBAAqB,KAAK,CAAC,KAAK,QAAQ,wBAAwB;AACrF,aAAK,QAAQ,yBAAyB;AACtC,wBAAgB,IAAI;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,gBAAgB,MAAM;AAC7B,QAAI,KAAK,0BAA0B;AACjC;AAAA,IACF;AACA,SAAK,2BAA2B;AAEhC,QAAI,eAAe;AAEnB,SAAK,iBAAiB,UAAU,SAASC,IAAG;AAC1C,UAAI,cAAc;AAChB,QAAAA,GAAE,eAAe;AACjB,QAAAA,GAAE,gBAAgB;AAClB,QAAAA,GAAE,yBAAyB;AAC3B,eAAO;AAAA,MACT;AAEA,MAAAA,GAAE,eAAe;AACjB,MAAAA,GAAE,gBAAgB;AAElB,qBAAe;AAEf,YAAM,eAAe,KAAK,cAAc,6CAA6C;AACrF,UAAI,cAAc;AAChB,qBAAa,WAAW;AACxB,qBAAa,UAAU,IAAI,cAAc,oBAAoB;AAAA,MAC/D;AAEA,aAAO,2BAA2B,IAAI;AAEtC,iBAAW,MAAM;AACf,wBAAgB,UAAU,OAAO,KAAK,IAAI;AAAA,MAC5C,GAAG,GAAG;AAAA,IACR,CAAC;AAAA,EACH;AAkCA,WAAS,4BAA4B;AACnC,UAAM,aAAa,SAAS,iBAAiB,qBAAqB;AAElE,eAAW,QAAQ,eAAa;AAC9B,YAAM,eAAe,UAAU,cAAc,iBAAiB;AAC9D,YAAM,YAAY,UAAU,cAAc,uBAAuB;AACjE,YAAM,QAAQ,UAAU,iBAAiB,iBAAiB;AAE1D,UAAI,CAAC,gBAAgB,CAAC,UAAW;AAEjC,YAAM,WAAW,MAAM,SAAS;AAEhC,UAAI,UAAU;AACZ,kBAAU,MAAM,UAAU;AAC1B,kBAAU,MAAM,UAAU;AAC1B,kBAAU,MAAM,aAAa;AAAA,MAC/B,OAAO;AACL,kBAAU,MAAM,UAAU;AAC1B,kBAAU,MAAM,UAAU;AAC1B,kBAAU,MAAM,aAAa;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,EACH;AAcA,WAAS,wBAAwB;AAC/B,UAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACnD,UAAI,eAAe;AAEnB,gBAAU,QAAQ,CAAC,aAAa;AAC9B,YAAI,SAAS,SAAS,aAAa;AACjC,mBAAS,WAAW,QAAQ,CAAC,SAAS;AACpC,gBAAI,KAAK,WAAW,SAAS,gBAAgB,GAAG;AAC9C,6BAAe;AAAA,YACjB;AAAA,UACF,CAAC;AAED,mBAAS,aAAa,QAAQ,CAAC,SAAS;AACtC,gBAAI,KAAK,WAAW,SAAS,gBAAgB,GAAG;AAC9C,6BAAe;AAEf,oBAAML,SAAQ,SAAS,iBAAiB,MAAM;AAC9C,cAAAA,OAAM,QAAQ,UAAQ;AACpB,oCAAoB,MAAM,EAAE;AAAA,cAC9B,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAED,UAAI,cAAc;AAChB,8BAAsB,yBAAyB;AAAA,MACjD;AAAA,IACF,CAAC;AAED,UAAM,aAAa,SAAS,iBAAiB,qBAAqB;AAClE,eAAW,QAAQ,eAAa;AAC9B,eAAS,QAAQ,WAAW;AAAA,QAC1B,WAAW;AAAA,QACX,SAAS;AAAA,MACX,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,WAAS,oBAAoB;AAC3B,uBAAmB;AACnB,8BAA0B;AAC1B,0BAAsB;AACtB,eAAW,8BAA8B,EAAE;AAC3C,eAAW,0BAA0B,GAAG;AAAA,EAC1C;AAGA,WAAS,wBAAwB;AAC/B,iBAAa,iBAAiB;AAC9B,wBAAoB,WAAW,mBAAmB,EAAE;AAAA,EACtD;AAxkCA,gBACA,sBAycI,oBAEA,eACA,kBAEA,qBACA,qBAuQE,qBA6WF,mBAsCE;AA1mCN;AAAA;AAAA,iBAA0B;AAC1B,6BAA6B;AAE7B,MAAS,oBAAW;AAAA,QAClB,QAAQ;AAAA,UACN,SAAS;AAAA,UACT,QAAQ;AAAA,QACV;AAAA,QACA,eAAe;AAAA,QACf,eAAe;AAAA,QACf,UAAU;AAAA,QACV,cAAc;AAAA,QACd,WAAW,OAAO;AAAA,QAClB,iBAAiB;AAAA,QAEjB,WAAW;AAAA,QACX,aAAa;AAAA,QACb,YAAY;AAAA,QAEZ,eAAe,CAAC,SAAS;AACvB,gBAAM,oBAAoB;AAAA,YACxB;AAAA,YAAQ;AAAA,YAAS;AAAA,YAAQ;AAAA,YAAQ;AAAA,YAAQ;AAAA,YAAQ;AAAA,YAAS;AAAA,YAAQ;AAAA,YAAS;AAAA,YAC3E;AAAA,YAAQ;AAAA,YAAQ;AAAA,YAAS;AAAA,YAAQ;AAAA,YAAS;AAAA,YAAQ;AAAA,YAAQ;AAAA,UAC5D;AAEA,gBAAM,WAAW,KAAK,KAAK,KAAK,YAAY;AAC5C,gBAAM,qBAAqB,kBAAkB,KAAK,SAAO,SAAS,SAAS,GAAG,CAAC;AAE/E,cAAI,mBAAoB,QAAO;AAE/B,qBAAW,MAAM,kBAAkB,KAAK,KAAK,IAAI,GAAG,EAAE;AACtD,iBAAO;AAAA,QACT;AAAA,QAEA,4BAA4B,CAAC,QAAQ,SACnC,IAAI,QAAQ,CAACM,UAAS,WAAW;AAC/B,UAAAA,SAAQ,IAAI;AAAA,QACd,CAAC;AAAA,QAEH,WAAW,CAAC,OAAO,SAAS;AAC1B,cAAI,CAAC,OAAO;AACV,kCAAsB,MAAM;AAC1B,kCAAoB,sBAAsB,EAAE,KAAK,CAAC;AAClD,yBAAW,MAAM;AACf,sBAAMP,SAAQ,IAAI,YAAY,sBAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACxE,yBAAS,cAAcA,MAAK;AAAA,cAC9B,GAAG,GAAG;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,cAAc,CAAC,OAAO,SAAS;AAC7B,cAAI,CAAC,OAAO;AACV,kCAAsB,MAAM;AAC1B,kCAAoB,wBAAwB,EAAE,KAAK,CAAC;AAAA,YACtD,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,CAAC;AAiZD,MAAI,qBAAqB,oBAAI,IAAI;AAEjC,MAAI,gBAAgB,oBAAI,IAAI;AAC5B,MAAI,mBAAmB,oBAAI,IAAI;AAE/B,MAAI,sBAAsB,oBAAI,IAAI;AAClC,MAAI,sBAAsB,oBAAI,IAAI;AAiQlC,0BAAoB;AAEpB,aAAO,6BAA6B;AACpC,aAAO,0BAA0B;AACjC,aAAO,2BAA2B;AAElC,MAAM,sBAAN,MAA0B;AAAA,QACxB,YAAY,aAAa;AACvB,eAAK,cAAc;AACnB,eAAK,YAAY;AACjB,eAAK,mBAAmB;AACxB,eAAK,cAAc;AAAA,QACrB;AAAA,QAEA,OAAO;AACL,eAAK,iBAAiB;AAAA,QACxB;AAAA,QAEA,mBAAmB;AACjB,eAAK,YAAY,SAAS,cAAc,0CAA0C,KAAK,WAAW,IAAI;AAEtG,cAAI,CAAC,KAAK,WAAW;AACnB,uBAAW,MAAM,KAAK,iBAAiB,GAAG,GAAG;AAC7C;AAAA,UACF;AACA,eAAK,gBAAgB;AAAA,QACvB;AAAA,QAEA,kBAAkB;AAChB,gBAAM,eAAe,KAAK,UAAU,cAAc,iBAAiB;AACnE,cAAI,CAAC,cAAc;AACjB,uBAAW,MAAM,KAAK,gBAAgB,GAAG,GAAG;AAC5C;AAAA,UACF;AAEA,gBAAM,YAAY,aAAa,iBAAiB,iBAAiB;AAEjE,cAAI,UAAU,SAAS,GAAG;AACxB,iBAAK,YAAY;AAAA,UACnB,OAAO;AACL,iBAAK,aAAa;AAAA,UACpB;AAAA,QACF;AAAA,QAEA,eAAe;AACb,gBAAM,YAAY,KAAK,UAAU,iBAAiB,iBAAiB;AAEnE,cAAI,UAAU,WAAW,GAAG;AAC1B,uBAAW,MAAM,KAAK,aAAa,GAAG,GAAG;AACzC;AAAA,UACF;AACA,eAAK,YAAY;AAAA,QACnB;AAAA,QAEA,cAAc;AACZ,cAAI,KAAK,aAAa;AACpB;AAAA,UACF;AACA,eAAK,cAAc;AAEnB,eAAK,2BAA2B;AAEhC,mBAAS,iBAAiB,sBAAsB,CAACA,WAAU;AACzD,kBAAM,EAAE,KAAK,IAAIA,OAAM;AACvB,uBAAW,MAAM,KAAK,kBAAkB,IAAI,GAAG,GAAG;AAAA,UACpD,CAAC;AAED,eAAK,iBAAiB;AAAA,QACxB;AAAA,QAEA,6BAA6B;AAC3B,gBAAM,YAAY,KAAK,UAAU,iBAAiB,iBAAiB;AAEnE,oBAAU,QAAQ,CAAC,MAAMK,WAAU;AACjC,uBAAW,MAAM;AACf,mBAAK,kBAAkB,MAAMA,MAAK;AAAA,YACpC,GAAGA,SAAQ,GAAG;AAAA,UAChB,CAAC;AAAA,QACH;AAAA,QAEA,kBAAkB,MAAM;AACtB,gBAAM,WAAW,KAAK,aAAa,IAAI;AACvC,cAAI,YAAY,CAAC,SAAS,cAAc,0BAA0B,GAAG;AACnE,iBAAK,kBAAkB,UAAU,MAAM,IAAI;AAAA,UAC7C;AAAA,QACF;AAAA,QAEA,kBAAkB,UAAUA,QAAO,OAAO,MAAM;AAC9C,cAAI,SAAS,cAAc,0BAA0B,GAAG;AACtD;AAAA,UACF;AAEA,cAAI,CAAC,MAAM;AACT,kBAAM,WAAW,SAAS,cAAc,2BAA2B,GAAG;AACtE,gBAAI,UAAU;AACZ,qBAAO,EAAE,UAAU,UAAU,IAAIA,OAAM;AAAA,YACzC;AAAA,UACF;AAEA,cAAI,MAAM;AACR,iBAAK,cAAc,UAAU,IAAI;AAAA,UACnC;AAAA,QACF;AAAA,QAEA,aAAa,MAAM;AACjB,gBAAM,aAAa;AAAA,YACjB,MAAM,SAAS,iBAAiB,4BAA4B;AAAA,YAC5D,MAAM,SAAS,iBAAiB,iBAAiB;AAAA,YACjD,MAAM,MAAM,KAAK,SAAS,iBAAiB,GAAG,CAAC,EAAE;AAAA,cAAO,QACtD,GAAG,aAAa,SAAS,KAAK,QAAQ,MACrC,GAAG,QAAQ,iBAAiB,KAAK,GAAG,UAAU,SAAS,gBAAgB;AAAA,YAC1E;AAAA,UACF;AAEA,qBAAW,YAAY,YAAY;AACjC,kBAAM,QAAQ,SAAS;AACvB,uBAAW,QAAQ,OAAO;AACxB,oBAAM,WAAW,KAAK,cAAc,2BAA2B;AAC/D,kBAAI,UAAU,gBAAgB,KAAK,UAAU;AAC3C,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,QAEA,mBAAmB;AACjB,gBAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACnD,sBAAU,QAAQ,CAAC,aAAa;AAC9B,uBAAS,WAAW,QAAQ,CAAC,SAAS;AACpC,oBAAI,KAAK,aAAa,KAAK,gBACvB,KAAK,WAAW,SAAS,gBAAgB,GAAG;AAC9C,6BAAW,MAAM,KAAK,kBAAkB,IAAI,GAAG,GAAG;AAAA,gBACpD;AAAA,cACF,CAAC;AAAA,YACH,CAAC;AAAA,UACH,CAAC;AAED,gBAAM,eAAe,KAAK,UAAU,cAAc,iBAAiB;AACnE,cAAI,cAAc;AAChB,qBAAS,QAAQ,cAAc,EAAE,WAAW,MAAM,SAAS,KAAK,CAAC;AAAA,UACnE;AAAA,QACF;AAAA,QAEA,cAAc,UAAU,MAAM;AAC5B,gBAAM,iBAAiB,KAAK,sBAAsB;AAClD,gBAAM,kBAAkB,KAAK,iBAAiB,MAAM,cAAc;AAElE,gBAAM,WAAW,SAAS,cAAc,sBAAsB;AAC9D,cAAI,UAAU,YAAY;AACxB,qBAAS,WAAW,aAAa,iBAAiB,SAAS,WAAW;AAAA,UACxE,OAAO;AACL,qBAAS,YAAY,eAAe;AAAA,UACtC;AAAA,QACF;AAAA,QAEA,wBAAwB;AACtB,cAAI;AACF,kBAAMG,SAAQ,KAAK,MAAM,KAAK,UAAU,QAAQ,sBAAsB,IAAI;AAC1E,mBAAOA,OAAM,SAAS,IAAIA,SAAQ,CAAC;AAAA,UACrC,SAASF,IAAG;AACV,mBAAO,CAAC;AAAA,UACV;AAAA,QACF;AAAA,QAEA,iBAAiB,MAAM,gBAAgB;AACrC,gBAAM,aAAa,KAAK,UAAU,QAAQ,eAAe;AACzD,gBAAM,SAAS,KAAK,MAAM,KAAK,YAAY,KAAK,IAAI;AACpD,gBAAM,WAAW,KAAK,YAAY,KAAK,QAAQ;AAC/C,gBAAM,YAAY,SAAS,MAAM,GAAG,EAAE,IAAI,GAAG,YAAY,KAAK;AAE9D,gBAAM,gBAAgB,eACnB,IAAI,UAAQ,kBAAkB,KAAK,EAAE,KAAK,KAAK,IAAI,WAAW,EAC9D,KAAK,EAAE;AAEV,gBAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,oBAAU,YAAY;AACtB,oBAAU,YAAY;AAAA;AAAA;AAAA;AAAA,kCAIQ,MAAM,oBAAoB,QAAQ;AAAA;AAAA,+BAErC,UAAU;AAAA,cAC3B,aAAa;AAAA;AAAA;AAAA,cAGb,SAAS;AAAA;AAAA;AAAA;AAAA;AAMjB,iBAAO;AAAA,QACX;AAAA,MACF;AA8DA,eAAS,iBAAiB,oBAAoB,MAAM;AAClD,mBAAW,8BAA8B,GAAG;AAC5C,mBAAW,0BAA0B,GAAG;AAAA,MAC1C,CAAC;AAED,UAAI,SAAS,eAAe,WAAW;AACrC,mBAAW,8BAA8B,GAAG;AAC5C,mBAAW,0BAA0B,GAAG;AAAA,MAC1C;AAEA,UAAI,iBAAiB,CAAC,cAAc;AAClC,cAAM,iBAAiB,UAAU;AAAA,UAAK,cACpC,MAAM,KAAK,SAAS,UAAU,EAAE,KAAK,UAAQ;AAC3C,gBAAI,KAAK,aAAa,KAAK,cAAc;AACvC,qBAAO,KAAK,WAAW,SAAS,oBAAoB,KAC7C,KAAK,gBAAgB,qBAAqB;AAAA,YACnD;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAEA,YAAI,gBAAgB;AAClB,qBAAW,MAAM;AACf,qBAAS,iBAAiB,qBAAqB,EAAE,QAAQ,eAAa;AACpE,qBAAO,UAAU,QAAQ;AAAA,YAC3B,CAAC;AACD,yCAA6B;AAAA,UAC/B,GAAG,GAAG;AAAA,QACR;AAAA,MACF,CAAC,EAAE,QAAQ,SAAS,MAAM,EAAE,WAAW,MAAM,SAAS,KAAK,CAAC;AA2F5D,OAAC,cAAc,oBAAoB,oBAAoB,EAAE,QAAQ,CAAAN,WAAS;AACxE,iBAAS,iBAAiBA,QAAO,qBAAqB;AAAA,MACxD,CAAC;AAED,eAAS,iBAAiB,SAAS,CAACA,WAAU;AAC5C,cAAM,SAASA,OAAM;AAErB,YAAI,OAAO,QAAQ,sFAAsF,GAAG;AAC1G,gBAAMC,SAAQ,SAAS,iBAAiB,MAAM;AAC9C,UAAAA,OAAM,QAAQ,UAAQ,oBAAoB,MAAM,EAAE,CAAC;AACnD;AAAA,QACF;AAEA,YAAI,OAAO,QAAQ,6JAA6J,GAAG;AACjL,qBAAW,MAAM;AACf,qBAAS,iBAAiB,qBAAqB,EAAE,QAAQ,eAAa;AACpE,qBAAO,UAAU,QAAQ;AAAA,YAC3B,CAAC;AAAA,UACH,GAAG,GAAG;AAAA,QACR;AAAA,MACF,GAAG,EAAE,SAAS,KAAK,CAAC;AAEpB,eAAS,iBAAiB,WAAW,CAACD,WAAU;AAC9C,YAAIA,OAAM,QAAQ,UAAU;AAC1B,gCAAsB,MAAM;AAC1B,qBAAS,iBAAiB,qBAAqB,EAAE,QAAQ,eAAa;AACpE,qBAAO,UAAU,QAAQ;AAAA,YAC3B,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF,GAAG,EAAE,SAAS,KAAK,CAAC;AAEpB,MAAM,gBAAgB,IAAI,iBAAiB,CAAC,cAAc;AACxD,kBAAU,QAAQ,CAAC,aAAa;AAC9B,cAAI,SAAS,SAAS,iBACjB,SAAS,kBAAkB,WAAW,SAAS,kBAAkB,UAAU;AAC9E,kBAAM,SAAS,SAAS;AACxB,gBAAI,OAAO,WAAW,SAAS,OAAO,KAAK,OAAO,WAAW,SAAS,OAAO,GAAG;AAC9E,oBAAM,YAAY,CAAC,OAAO,UAAU,SAAS,QAAQ,KACpC,OAAO,MAAM,YAAY,UACzB,OAAO,MAAM,eAAe;AAE7C,kBAAI,WAAW;AACb,2BAAW,MAAM;AACf,2BAAS,iBAAiB,qBAAqB,EAAE,QAAQ,eAAa;AACpE,2BAAO,UAAU,QAAQ;AAAA,kBAC3B,CAAC;AACD,+CAA6B;AAAA,gBAC/B,GAAG,GAAG;AAAA,cACR,OAAO;AACL,2BAAW,MAAM;AACf,2BAAS,iBAAiB,qBAAqB,EAAE,QAAQ,eAAa;AACpE,2BAAO,UAAU,QAAQ;AAAA,kBAC3B,CAAC;AAAA,gBACH,GAAG,GAAG;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAED,oBAAc,QAAQ,SAAS,MAAM;AAAA,QACnC,YAAY;AAAA,QACZ,iBAAiB,CAAC,SAAS,OAAO;AAAA,QAClC,SAAS;AAAA,MACX,CAAC;AAED,aAAO,eAAe,WAAW;AAC/B,cAAM,kBAAkB,SAAS,cAAc,oBAAoB;AAEnE,YAAI,iBAAiB;AACnB,0BAAgB,MAAM;AAAA,QACxB,OAAO;AACL,gBAAM,aAAa,SAAS,iBAAiB,oBAAoB;AAEjE,gBAAM,mBAAmB,MAAM,KAAK,UAAU,EAAE,KAAK,WAAS,CAAC,MAAM,UAAU,SAAS,QAAQ,CAAC;AAEjG,cAAI,kBAAkB;AACpB,6BAAiB,MAAM;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA;AAAA;;;AC3pCA;AAAA;AAAC,OAAC,WAAY;AACZ,YAAI,aAAa;AACjB,YAAI,iBAAiB;AAErB,cAAM,WAAW,CAACS,UAChBA,MAAK,UAAU,KAAKA,QAAOA,MAAK,MAAM,GAAG,EAAE,IAAI,QAAQA,MAAK,MAAMA,MAAK,SAAS,IAAIA,MAAK,MAAM;AAEjG,eAAO,eAAe,SAAU,2BAA2B;AACzD,iBAAO;AAAA,YACL;AAAA,YACA,aAAaC,IAAG;AACd,oBAAM,OAAOA,GAAE,OAAO,MAAM,CAAC;AAC7B,kBAAI,CAAC,KAAM;AACX,2BAAa;AACb,+BAAiB,KAAK;AACtB,mBAAK,MAAM,UAAU,YAAY,SAAS,KAAK,IAAI;AAAA,YACrD;AAAA,UACF;AAAA,QACF;AAGA,eAAO,gBAAgB,SAAU,KAAK,OAAO;AAC3C,cAAI,gBAAgB;AAClB,kBAAM,UAAU,YAAY,SAAS,cAAc;AAAA,UACrD;AAEA,cAAI,iBAAiB,sBAAsB,CAACA,OAAM;AAChD,kBAAM,YAAY,IAAI,cAAc,oBAAoB;AACxD,gBAAI,cAAc,aAAa,CAAC,UAAU,MAAM,QAAQ;AACtD,cAAAA,GAAE,OAAO,eAAe,aAAa,KAAK,OAAO,gBAAgB,YAAY,cAAc;AAAA,YAC7F;AAAA,UACF,CAAC;AAAA,QACH;AAEA,eAAO,sBAAsB,WAAY;AACvC,uBAAa;AACb,2BAAiB;AAAA,QACnB;AAAA,MACF,GAAG;AAAA;AAAA;;;ACtCH;AAAA;AAAA,OAAC,WAAY;AACX,eAAO,wBAAwB,OAAO,yBAAyB,CAAC;AAEhE,cAAM,cAAc,WAAY;AAC9B,iBAAO;AAAA,YACL,mBAAmB;AAAA,cACjB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEA,mBAAmB;AACjB,mBAAK,MAAM,UAAU,SAAS,KAAK,kBAAkB,KAAK,GAAG;AAC7D,mBAAK,MAAM,UAAU,MAAM;AAAA,YAC7B;AAAA,YAEA,oBAAoBC,QAAO;AACzB,oBAAM,QAAQ,MAAM,KAAKA,OAAM,OAAO,KAAK;AAE3C,kBAAI,MAAM,WAAW,EAAG;AAExB,oBAAM,aAAa,KAAK,kBAAkB,KAAK;AAE/C,kBAAI,WAAW,WAAW,GAAG;AAC3B,sBAAM,+BAA+B;AACrC;AAAA,cACF;AAEA,qBAAO,wBAAwB;AAC/B,mBAAK,gBAAgB;AAAA,YACvB;AAAA,YAEA,kBAAkB,OAAO;AACvB,qBAAO,MAAM,OAAO,UAAQ;AAC1B,uBAAO,KAAK,kBAAkB,KAAK,UAAQ;AACzC,sBAAI,KAAK,SAAS,IAAI,GAAG;AACvB,2BAAO,KAAK,KAAK,WAAW,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,kBAC/C;AACA,yBAAO,KAAK,SAAS;AAAA,gBACvB,CAAC;AAAA,cACH,CAAC;AAAA,YACH;AAAA,YAEA,kBAAkB;AAChB,oBAAM,cAAc,SAAS,eAAe,kBAAkB;AAE9D,kBAAI,aAAa;AACf,sBAAM,UAAU,KAAK,kBAAkB;AAEvC,oBAAI,SAAS;AACX,wBAAM,MAAM,WAAW,OAAO;AAC9B,8BAAY,MAAM;AAAA,gBACpB;AAAA,cACF;AAAA,YACF;AAAA,YAEA,oBAAoB;AAClB,oBAAM,OAAO,OAAO,SAAS;AAC7B,oBAAMC,SAAQ,KAAK,MAAM,oBAAoB;AAC7C,qBAAOA,SAAQA,OAAM,CAAC,IAAI;AAAA,YAC5B;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,cAAc;AAAA,QACvB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AC7EH;AAAA;AAAA;AAAA;AAEA,OAAC,WAAY;AACX,cAAM,0BAA0B,MAAM;AACpC,mBAASC,WAAU,MAAM;AACvB,gBAAI,KAAK,gBAAgB,KAAK,aAAa,SAAS,GAAG;AACrD,qBAAO,iBAAiB,KAAK,YAAY;AAAA,YAC3C,OAAO;AACL,qBAAO,gBAAgB,KAAK,UAAU;AAAA,YACxC;AAAA,UACF;AAEA,mBAAS,iBAAiB,aAAa;AACrC,kBAAM,SAAS,YAAY,IAAI,UAAQ,KAAK,KAAK;AACjD,kBAAM,eAAe,YAAY,IAAI,UAAQ,KAAK,aAAa;AAC/D,kBAAM,UAAU,YAAY,IAAI,UAAQ,KAAK,OAAO;AAEpD,mBAAO,IAAIC;AAAA,cACT,SAAS,eAAe,sBAAsB;AAAA,cAC9C;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,QAAQ;AAAA,kBACR,UAAU;AAAA,oBACR;AAAA,sBACE,OAAO;AAAA,sBACP,MAAM;AAAA,sBACN,iBAAiB;AAAA,sBACjB,cAAc;AAAA,oBAChB;AAAA,oBACA;AAAA,sBACE,OAAO;AAAA,sBACP,MAAM;AAAA,sBACN,iBAAiB;AAAA,sBACjB,cAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,SAAS;AAAA,kBACP,YAAY;AAAA,kBACZ,qBAAqB;AAAA,kBACrB,SAAS;AAAA,oBACP,QAAQ;AAAA,sBACN,UAAU;AAAA,sBACV,QAAQ;AAAA,wBACN,eAAe;AAAA,wBACf,WAAW;AAAA,wBACX,YAAY;AAAA,sBACd;AAAA,oBACF;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,GAAG;AAAA,sBACD,aAAa;AAAA,sBACb,OAAO;AAAA,wBACL,UAAU,SAAS,OAAO;AACxB,iCAAO,OAAO,QAAQ,KAAM,QAAQ,CAAC,IAAI;AAAA,wBAC3C;AAAA,wBACA,eAAe;AAAA,sBACjB;AAAA,sBACA,MAAM;AAAA,wBACJ,YAAY;AAAA,wBACZ,WAAW;AAAA,sBACb;AAAA,oBACF;AAAA,oBACA,GAAG;AAAA,sBACD,MAAM;AAAA,wBACJ,iBAAiB;AAAA,wBACjB,YAAY;AAAA,wBACZ,WAAW;AAAA,sBACb;AAAA,sBACA,oBAAoB;AAAA,sBACpB,eAAe;AAAA,oBACjB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gBAAgB,YAAY;AACnC,mBAAO,IAAIA;AAAA,cACT,SAAS,eAAe,sBAAsB;AAAA,cAC9C;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,QAAQ,CAAC,EAAE;AAAA,kBACX,UAAU,WAAW,IAAI,CAAC,SAAS;AACjC,2BAAO;AAAA,sBACL,OAAO,KAAK;AAAA,sBACZ,MAAM,CAAC,KAAK,KAAK;AAAA,sBACjB,iBAAiB,KAAK;AAAA,sBACtB,cAAc;AAAA,oBAChB;AAAA,kBACF,CAAC;AAAA,gBACH;AAAA,gBACA,SAAS;AAAA,kBACP,YAAY;AAAA,kBACZ,qBAAqB;AAAA,kBACrB,SAAS;AAAA,oBACP,QAAQ;AAAA,sBACN,UAAU;AAAA,sBACV,QAAQ;AAAA,wBACN,eAAe;AAAA,wBACf,WAAW;AAAA,wBACX,YAAY;AAAA,sBACd;AAAA,oBACF;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,GAAG;AAAA,sBACD,aAAa;AAAA,sBACb,OAAO;AAAA,wBACL,UAAU,SAAS,OAAO;AACxB,iCAAO,OAAO,QAAQ,KAAM,QAAQ,CAAC,IAAI;AAAA,wBAC3C;AAAA,wBACA,eAAe;AAAA,sBACjB;AAAA,sBACA,MAAM;AAAA,wBACJ,YAAY;AAAA,wBACZ,WAAW;AAAA,sBACb;AAAA,oBACF;AAAA,oBACA,GAAG;AAAA,sBACD,MAAM;AAAA,wBACJ,iBAAiB;AAAA,wBACjB,YAAY;AAAA,wBACZ,WAAW;AAAA,sBACb;AAAA,sBACA,oBAAoB;AAAA,sBACpB,eAAe;AAAA,oBACjB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,iBAAO;AAAA,YACL,OAAO;AAAA,YACP,cAAc;AAAA,YACd,cAAc;AAAA,YACd,YAAY,CAAC;AAAA,YAEb,eAAe,SAAU,YAAY,MAAM,UAAU,MAAM;AACzD,kBAAI,cAAc;AAElB,kBAAI,aAAa,QAAQ,WAAW,MAAM;AACxC,8BAAc,eAAe,SAAS,aAAa,OAAO;AAAA,cAC5D;AAEA,oBAAM,qCAAqC,WAAW,EAAE,EACrD,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,WAAW;AAChB,oBAAI,KAAK,SAAS,KAAM,MAAK,MAAM,QAAQ;AAE3C,oBAAI,OAAO,YAAY;AACrB,wBAAM,eAAe,OAAO,WAAW,KAAK,CAAAC,OAAKA,GAAE,UAAU,eAAe;AAC5E,wBAAM,UAAU,OAAO,WAAW,KAAK,CAAAA,OAAKA,GAAE,UAAU,SAAS;AAEjE,uBAAK,eAAe,eAAe,KAAK,eAAe,aAAa,KAAK,IAAI;AAC7E,uBAAK,eAAe,UAAU,KAAK,eAAe,QAAQ,KAAK,IAAI;AAAA,gBACrE;AAEA,oBAAI,OAAO,aAAa;AACtB,uBAAK,aAAa,OAAO;AAAA,gBAC3B,OAAO;AACL,uBAAK,aAAa,CAAC;AAAA,gBACrB;AAEA,qBAAK,QAAQF,WAAU,MAAM;AAAA,cAC/B,CAAC;AAAA,YACL;AAAA,YAEA,eAAe,OAAO;AACpB,kBAAI,CAAC,SAAS,MAAM,KAAK,EAAG,QAAO;AAEnC,oBAAM,MAAM,WAAW,KAAK;AAE5B,qBAAO,MAAM,IAAI,eAAe,SAAS;AAAA,gBACvC,uBAAuB;AAAA,gBACvB,uBAAuB;AAAA,cACzB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,0BAA0B;AAAA,QACnC;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;AChMH;AAAA;AAAA;AAAA;AAEA,OAAC,WAAY;AACX,cAAM,YAAY,MAAM;AACtB,mBAASG,WAAU,MAAM;AACvB,gBAAI,KAAK,gBAAgB,KAAK,aAAa,SAAS,GAAG;AACrD,qBAAO,iBAAiB,KAAK,YAAY;AAAA,YAC3C,OAAO;AACL,qBAAO,gBAAgB,KAAK,UAAU;AAAA,YACxC;AAAA,UACF;AAEA,mBAAS,iBAAiB,aAAa;AACrC,kBAAM,SAAS,YAAY,IAAI,UAAQ,KAAK,KAAK;AACjD,kBAAM,eAAe,YAAY,IAAI,UAAQ,KAAK,aAAa;AAC/D,kBAAM,UAAU,YAAY,IAAI,UAAQ,KAAK,OAAO;AAEpD,mBAAO,IAAIC;AAAA,cACT,SAAS,eAAe,oBAAoB;AAAA,cAC5C;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,QAAQ;AAAA,kBACR,UAAU;AAAA,oBACR;AAAA,sBACE,OAAO;AAAA,sBACP,MAAM;AAAA,sBACN,iBAAiB;AAAA,sBACjB,cAAc;AAAA,oBAChB;AAAA,oBACA;AAAA,sBACE,OAAO;AAAA,sBACP,MAAM;AAAA,sBACN,iBAAiB;AAAA,sBACjB,cAAc;AAAA,oBAChB;AAAA,kBACF;AAAA,gBACF;AAAA,gBACA,SAAS;AAAA,kBACP,YAAY;AAAA,kBACZ,qBAAqB;AAAA,kBACrB,SAAS;AAAA,oBACP,QAAQ;AAAA,sBACN,UAAU;AAAA,sBACV,QAAQ;AAAA,wBACN,eAAe;AAAA,wBACf,WAAW;AAAA,wBACX,YAAY;AAAA,sBACd;AAAA,oBACF;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,GAAG;AAAA,sBACD,aAAa;AAAA,sBACb,OAAO;AAAA,wBACL,UAAU,SAAS,OAAO;AACxB,iCAAO,OAAO,QAAQ,KAAM,QAAQ,CAAC,IAAI;AAAA,wBAC3C;AAAA,wBACA,eAAe;AAAA,sBACjB;AAAA,sBACA,MAAM;AAAA,wBACJ,YAAY;AAAA,wBACZ,WAAW;AAAA,sBACb;AAAA,oBACF;AAAA,oBACA,GAAG;AAAA,sBACD,MAAM;AAAA,wBACJ,iBAAiB;AAAA,wBACjB,YAAY;AAAA,wBACZ,WAAW;AAAA,sBACb;AAAA,sBACA,oBAAoB;AAAA,sBACpB,eAAe;AAAA,oBACjB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,mBAAS,gBAAgB,YAAY;AACnC,mBAAO,IAAIA;AAAA,cACT,SAAS,eAAe,oBAAoB;AAAA,cAC5C;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,QAAQ,CAAC,EAAE;AAAA,kBACX,UAAU,WAAW,IAAI,CAAC,SAAS;AACjC,2BAAO;AAAA,sBACL,OAAO,KAAK;AAAA,sBACZ,MAAM,CAAC,KAAK,KAAK;AAAA,sBACjB,iBAAiB,KAAK;AAAA,sBACtB,cAAc;AAAA,oBAChB;AAAA,kBACF,CAAC;AAAA,gBACH;AAAA,gBACA,SAAS;AAAA,kBACP,YAAY;AAAA,kBACZ,qBAAqB;AAAA,kBACrB,SAAS;AAAA,oBACP,QAAQ;AAAA,sBACN,UAAU;AAAA,sBACV,QAAQ;AAAA,wBACN,eAAe;AAAA,wBACf,WAAW;AAAA,wBACX,YAAY;AAAA,sBACd;AAAA,oBACF;AAAA,kBACF;AAAA,kBACA,QAAQ;AAAA,oBACN,GAAG;AAAA,sBACD,aAAa;AAAA,sBACb,OAAO;AAAA,wBACL,UAAU,SAAS,OAAO;AACxB,iCAAO,OAAO,QAAQ,KAAM,QAAQ,CAAC,IAAI;AAAA,wBAC3C;AAAA,wBACA,eAAe;AAAA,sBACjB;AAAA,sBACA,MAAM;AAAA,wBACJ,YAAY;AAAA,wBACZ,WAAW;AAAA,sBACb;AAAA,oBACF;AAAA,oBACA,GAAG;AAAA,sBACD,MAAM;AAAA,wBACJ,iBAAiB;AAAA,wBACjB,YAAY;AAAA,wBACZ,WAAW;AAAA,sBACb;AAAA,sBACA,oBAAoB;AAAA,sBACpB,eAAe;AAAA,oBACjB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,iBAAO;AAAA,YACL,OAAO;AAAA,YACP,qBAAqB;AAAA,YACrB,mBAAmB;AAAA,YACnB,iBAAiB;AAAA,YACjB,0BAA0B;AAAA,YAC1B,6BAA6B;AAAA,YAC7B,YAAY,CAAC;AAAA,YAEb,eAAe,SAAU,YAAY,MAAM,UAAU,MAAM;AACzD,kBAAI,cAAc;AAElB,kBAAI,aAAa,QAAQ,WAAW,MAAM;AACxC,8BAAc,eAAe,SAAS,aAAa,OAAO;AAAA,cAC5D;AAEA,oBAAM,sCAAsC,WAAW,EAAE,EACtD,KAAK,CAAC,aAAa,SAAS,KAAK,CAAC,EAClC,KAAK,CAAC,WAAW;AAChB,oBAAI,KAAK,SAAS,KAAM,MAAK,MAAM,QAAQ;AAE3C,qBAAK,sBAAsB,KAAK,eAAe,OAAO,0BAA0B,CAAC;AACjF,qBAAK,oBAAoB,OAAO,uBAAuB;AACvD,qBAAK,kBAAkB,OAAO,qBAAqB;AACnD,qBAAK,2BAA2B,KAAK,eAAe,OAAO,+BAA+B,CAAC;AAC3F,qBAAK,8BAA8B,KAAK,eAAe,OAAO,kCAAkC,CAAC;AAEjG,oBAAI,OAAO,aAAa;AACtB,uBAAK,aAAa,OAAO;AAAA,gBAC3B,OAAO;AACL,uBAAK,aAAa,CAAC;AAAA,gBACrB;AAEA,qBAAK,QAAQD,WAAU,MAAM;AAAA,cAC/B,CAAC;AAAA,YACL;AAAA,YAEA,eAAe,OAAO;AACpB,kBAAI,CAAC,SAAS,MAAM,KAAK,EAAG,QAAO;AAEnC,oBAAM,MAAM,WAAW,KAAK;AAE5B,qBAAO,MAAM,IAAI,eAAe,SAAS;AAAA,gBACvC,uBAAuB;AAAA,gBACvB,uBAAuB;AAAA,cACzB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,YAAY;AAAA,QACrB;AAEA,eAAO;AAAA,MACT,GAAG;AAAA;AAAA;;;ACjMH;AAAA,qDAAAE,WAAAC,SAAA;AAMA,OAAC,SAAS,iCAAiC,MAAM,SAAS;AACzD,YAAG,OAAOD,cAAY,YAAY,OAAOC,YAAW;AACnD,UAAAA,QAAO,UAAU,QAAQ;AAAA,iBAClB,OAAO,WAAW,cAAc,OAAO;AAC9C,iBAAO,CAAC,GAAG,OAAO;AAAA,iBACX,OAAOD,cAAY;AAC1B,UAAAA,UAAQ,aAAa,IAAI,QAAQ;AAAA;AAEjC,eAAK,aAAa,IAAI,QAAQ;AAAA,MAChC,GAAGA,WAAM,WAAW;AACpB;AAAA;AAAA,WAAiB,WAAW;AAClB,gBAAI,sBAAuB;AAAA;AAAA,cAE/B;AAAA;AAAA,iBACC,SAAS,yBAAyB,qBAAqBE,sBAAqB;AAEnF;AAGA,kBAAAA,qBAAoB,EAAE,qBAAqB;AAAA,oBACzC,WAAW,WAAW;AAAE;AAAA;AAAA,wBAAqB;AAAA;AAAA,oBAAW;AAAA,kBAC1D,CAAC;AAGD,sBAAI,eAAeA,qBAAoB,GAAG;AAC1C,sBAAI,uBAAoC,gBAAAA,qBAAoB,EAAE,YAAY;AAE1E,sBAAI,SAASA,qBAAoB,GAAG;AACpC,sBAAI,iBAA8B,gBAAAA,qBAAoB,EAAE,MAAM;AAE9D,sBAAI,aAAaA,qBAAoB,GAAG;AACxC,sBAAI,iBAA8B,gBAAAA,qBAAoB,EAAE,UAAU;AAClE;AAMA,2BAAS,QAAQ,MAAM;AACrB,wBAAI;AACF,6BAAO,SAAS,YAAY,IAAI;AAAA,oBAClC,SAAS,KAAK;AACZ,6BAAO;AAAA,oBACT;AAAA,kBACF;AACA;AASA,sBAAI,qBAAqB,SAASC,oBAAmB,QAAQ;AAC3D,wBAAI,eAAe,eAAe,EAAE,MAAM;AAC1C,4BAAQ,KAAK;AACb,2BAAO;AAAA,kBACT;AAE6B,sBAAI,cAAe;AAChD;AAMA,2BAAS,kBAAkB,OAAO;AAChC,wBAAI,QAAQ,SAAS,gBAAgB,aAAa,KAAK,MAAM;AAC7D,wBAAI,cAAc,SAAS,cAAc,UAAU;AAEnD,gCAAY,MAAM,WAAW;AAE7B,gCAAY,MAAM,SAAS;AAC3B,gCAAY,MAAM,UAAU;AAC5B,gCAAY,MAAM,SAAS;AAE3B,gCAAY,MAAM,WAAW;AAC7B,gCAAY,MAAM,QAAQ,UAAU,MAAM,IAAI;AAE9C,wBAAI,YAAY,OAAO,eAAe,SAAS,gBAAgB;AAC/D,gCAAY,MAAM,MAAM,GAAG,OAAO,WAAW,IAAI;AACjD,gCAAY,aAAa,YAAY,EAAE;AACvC,gCAAY,QAAQ;AACpB,2BAAO;AAAA,kBACT;AACA;AAWA,sBAAI,iBAAiB,SAASC,gBAAe,OAAO,SAAS;AAC3D,wBAAI,cAAc,kBAAkB,KAAK;AACzC,4BAAQ,UAAU,YAAY,WAAW;AACzC,wBAAI,eAAe,eAAe,EAAE,WAAW;AAC/C,4BAAQ,MAAM;AACd,gCAAY,OAAO;AACnB,2BAAO;AAAA,kBACT;AASA,sBAAI,sBAAsB,SAASC,qBAAoB,QAAQ;AAC7D,wBAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAAA,sBAChF,WAAW,SAAS;AAAA,oBACtB;AACA,wBAAI,eAAe;AAEnB,wBAAI,OAAO,WAAW,UAAU;AAC9B,qCAAe,eAAe,QAAQ,OAAO;AAAA,oBAC/C,WAAW,kBAAkB,oBAAoB,CAAC,CAAC,QAAQ,UAAU,OAAO,OAAO,UAAU,EAAE,SAAS,WAAW,QAAQ,WAAW,SAAS,SAAS,OAAO,IAAI,GAAG;AAEpK,qCAAe,eAAe,OAAO,OAAO,OAAO;AAAA,oBACrD,OAAO;AACL,qCAAe,eAAe,EAAE,MAAM;AACtC,8BAAQ,MAAM;AAAA,oBAChB;AAEA,2BAAO;AAAA,kBACT;AAE6B,sBAAI,eAAgB;AACjD;AACA,2BAASC,UAAQ,KAAK;AAAE;AAA2B,wBAAI,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,UAAU;AAAE,sBAAAA,YAAU,SAASA,UAAQC,MAAK;AAAE,+BAAO,OAAOA;AAAA,sBAAK;AAAA,oBAAG,OAAO;AAAE,sBAAAD,YAAU,SAASA,UAAQC,MAAK;AAAE,+BAAOA,QAAO,OAAO,WAAW,cAAcA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;AAAA,sBAAK;AAAA,oBAAG;AAAE,2BAAOD,UAAQ,GAAG;AAAA,kBAAG;AAUzX,sBAAI,yBAAyB,SAASE,0BAAyB;AAC7D,wBAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAEnF,wBAAI,kBAAkB,QAAQ,QAC1B,SAAS,oBAAoB,SAAS,SAAS,iBAC/C,YAAY,QAAQ,WACpB,SAAS,QAAQ,QACjB,OAAO,QAAQ;AAEnB,wBAAI,WAAW,UAAU,WAAW,OAAO;AACzC,4BAAM,IAAI,MAAM,oDAAoD;AAAA,oBACtE;AAGA,wBAAI,WAAW,QAAW;AACxB,0BAAI,UAAUF,UAAQ,MAAM,MAAM,YAAY,OAAO,aAAa,GAAG;AACnE,4BAAI,WAAW,UAAU,OAAO,aAAa,UAAU,GAAG;AACxD,gCAAM,IAAI,MAAM,mFAAmF;AAAA,wBACrG;AAEA,4BAAI,WAAW,UAAU,OAAO,aAAa,UAAU,KAAK,OAAO,aAAa,UAAU,IAAI;AAC5F,gCAAM,IAAI,MAAM,uGAAwG;AAAA,wBAC1H;AAAA,sBACF,OAAO;AACL,8BAAM,IAAI,MAAM,6CAA6C;AAAA,sBAC/D;AAAA,oBACF;AAGA,wBAAI,MAAM;AACR,6BAAO,aAAa,MAAM;AAAA,wBACxB;AAAA,sBACF,CAAC;AAAA,oBACH;AAGA,wBAAI,QAAQ;AACV,6BAAO,WAAW,QAAQ,YAAY,MAAM,IAAI,aAAa,QAAQ;AAAA,wBACnE;AAAA,sBACF,CAAC;AAAA,oBACH;AAAA,kBACF;AAE6B,sBAAI,kBAAmB;AACpD;AACA,2BAAS,iBAAiB,KAAK;AAAE;AAA2B,wBAAI,OAAO,WAAW,cAAc,OAAO,OAAO,aAAa,UAAU;AAAE,yCAAmB,SAASA,UAAQC,MAAK;AAAE,+BAAO,OAAOA;AAAA,sBAAK;AAAA,oBAAG,OAAO;AAAE,yCAAmB,SAASD,UAAQC,MAAK;AAAE,+BAAOA,QAAO,OAAO,WAAW,cAAcA,KAAI,gBAAgB,UAAUA,SAAQ,OAAO,YAAY,WAAW,OAAOA;AAAA,sBAAK;AAAA,oBAAG;AAAE,2BAAO,iBAAiB,GAAG;AAAA,kBAAG;AAE7Z,2BAASE,iBAAgB,UAAU,aAAa;AAAE,wBAAI,EAAE,oBAAoB,cAAc;AAAE,4BAAM,IAAI,UAAU,mCAAmC;AAAA,oBAAG;AAAA,kBAAE;AAExJ,2BAASC,mBAAkB,QAAQ,OAAO;AAAE,6BAASC,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AAAE,0BAAI,aAAa,MAAMA,EAAC;AAAG,iCAAW,aAAa,WAAW,cAAc;AAAO,iCAAW,eAAe;AAAM,0BAAI,WAAW,WAAY,YAAW,WAAW;AAAM,6BAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,oBAAG;AAAA,kBAAE;AAE5T,2BAASC,cAAa,aAAa,YAAY,aAAa;AAAE,wBAAI,WAAY,CAAAF,mBAAkB,YAAY,WAAW,UAAU;AAAG,wBAAI,YAAa,CAAAA,mBAAkB,aAAa,WAAW;AAAG,2BAAO;AAAA,kBAAa;AAEtN,2BAASG,WAAU,UAAU,YAAY;AAAE,wBAAI,OAAO,eAAe,cAAc,eAAe,MAAM;AAAE,4BAAM,IAAI,UAAU,oDAAoD;AAAA,oBAAG;AAAE,6BAAS,YAAY,OAAO,OAAO,cAAc,WAAW,WAAW,EAAE,aAAa,EAAE,OAAO,UAAU,UAAU,MAAM,cAAc,KAAK,EAAE,CAAC;AAAG,wBAAI,WAAY,CAAAC,iBAAgB,UAAU,UAAU;AAAA,kBAAG;AAEhY,2BAASA,iBAAgBC,IAAGC,IAAG;AAAE,oBAAAF,mBAAkB,OAAO,kBAAkB,SAASA,iBAAgBC,IAAGC,IAAG;AAAE,sBAAAD,GAAE,YAAYC;AAAG,6BAAOD;AAAA,oBAAG;AAAG,2BAAOD,iBAAgBC,IAAGC,EAAC;AAAA,kBAAG;AAEzK,2BAASC,cAAa,SAAS;AAAE,wBAAI,4BAA4BC,2BAA0B;AAAG,2BAAO,SAAS,uBAAuB;AAAE,0BAAI,QAAQC,iBAAgB,OAAO,GAAG;AAAQ,0BAAI,2BAA2B;AAAE,4BAAI,YAAYA,iBAAgB,IAAI,EAAE;AAAa,iCAAS,QAAQ,UAAU,OAAO,WAAW,SAAS;AAAA,sBAAG,OAAO;AAAE,iCAAS,MAAM,MAAM,MAAM,SAAS;AAAA,sBAAG;AAAE,6BAAOC,4BAA2B,MAAM,MAAM;AAAA,oBAAG;AAAA,kBAAG;AAExa,2BAASA,4BAA2BC,OAAM,MAAM;AAAE,wBAAI,SAAS,iBAAiB,IAAI,MAAM,YAAY,OAAO,SAAS,aAAa;AAAE,6BAAO;AAAA,oBAAM;AAAE,2BAAOC,wBAAuBD,KAAI;AAAA,kBAAG;AAEzL,2BAASC,wBAAuBD,OAAM;AAAE,wBAAIA,UAAS,QAAQ;AAAE,4BAAM,IAAI,eAAe,2DAA2D;AAAA,oBAAG;AAAE,2BAAOA;AAAA,kBAAM;AAErK,2BAASH,6BAA4B;AAAE,wBAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,UAAW,QAAO;AAAO,wBAAI,QAAQ,UAAU,KAAM,QAAO;AAAO,wBAAI,OAAO,UAAU,WAAY,QAAO;AAAM,wBAAI;AAAE,2BAAK,UAAU,SAAS,KAAK,QAAQ,UAAU,MAAM,CAAC,GAAG,WAAY;AAAA,sBAAC,CAAC,CAAC;AAAG,6BAAO;AAAA,oBAAM,SAASK,IAAG;AAAE,6BAAO;AAAA,oBAAO;AAAA,kBAAE;AAEnU,2BAASJ,iBAAgBJ,IAAG;AAAE,oBAAAI,mBAAkB,OAAO,iBAAiB,OAAO,iBAAiB,SAASA,iBAAgBJ,IAAG;AAAE,6BAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,oBAAG;AAAG,2BAAOI,iBAAgBJ,EAAC;AAAA,kBAAG;AAa5M,2BAAS,kBAAkB,QAAQ,SAAS;AAC1C,wBAAI,YAAY,kBAAkB,OAAO,MAAM;AAE/C,wBAAI,CAAC,QAAQ,aAAa,SAAS,GAAG;AACpC;AAAA,oBACF;AAEA,2BAAO,QAAQ,aAAa,SAAS;AAAA,kBACvC;AAOA,sBAAI,YAAyB,0BAAU,UAAU;AAC/C,oBAAAF,WAAUW,YAAW,QAAQ;AAE7B,wBAAI,SAASP,cAAaO,UAAS;AAMnC,6BAASA,WAAU,SAAS,SAAS;AACnC,0BAAI;AAEJ,sBAAAf,iBAAgB,MAAMe,UAAS;AAE/B,8BAAQ,OAAO,KAAK,IAAI;AAExB,4BAAM,eAAe,OAAO;AAE5B,4BAAM,YAAY,OAAO;AAEzB,6BAAO;AAAA,oBACT;AAQA,oBAAAZ,cAAaY,YAAW,CAAC;AAAA,sBACvB,KAAK;AAAA,sBACL,OAAO,SAAS,iBAAiB;AAC/B,4BAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,6BAAK,SAAS,OAAO,QAAQ,WAAW,aAAa,QAAQ,SAAS,KAAK;AAC3E,6BAAK,SAAS,OAAO,QAAQ,WAAW,aAAa,QAAQ,SAAS,KAAK;AAC3E,6BAAK,OAAO,OAAO,QAAQ,SAAS,aAAa,QAAQ,OAAO,KAAK;AACrE,6BAAK,YAAY,iBAAiB,QAAQ,SAAS,MAAM,WAAW,QAAQ,YAAY,SAAS;AAAA,sBACnG;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMF,GAAG;AAAA,sBACD,KAAK;AAAA,sBACL,OAAO,SAAS,YAAY,SAAS;AACnC,4BAAI,SAAS;AAEb,6BAAK,WAAW,eAAe,EAAE,SAAS,SAAS,SAAUD,IAAG;AAC9D,iCAAO,OAAO,QAAQA,EAAC;AAAA,wBACzB,CAAC;AAAA,sBACH;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMF,GAAG;AAAA,sBACD,KAAK;AAAA,sBACL,OAAO,SAAS,QAAQA,IAAG;AACzB,4BAAI,UAAUA,GAAE,kBAAkBA,GAAE;AACpC,4BAAI,SAAS,KAAK,OAAO,OAAO,KAAK;AACrC,4BAAI,OAAO,gBAAgB;AAAA,0BACzB;AAAA,0BACA,WAAW,KAAK;AAAA,0BAChB,QAAQ,KAAK,OAAO,OAAO;AAAA,0BAC3B,MAAM,KAAK,KAAK,OAAO;AAAA,wBACzB,CAAC;AAED,6BAAK,KAAK,OAAO,YAAY,SAAS;AAAA,0BACpC;AAAA,0BACA;AAAA,0BACA;AAAA,0BACA,gBAAgB,SAAS,iBAAiB;AACxC,gCAAI,SAAS;AACX,sCAAQ,MAAM;AAAA,4BAChB;AAEA,mCAAO,aAAa,EAAE,gBAAgB;AAAA,0BACxC;AAAA,wBACF,CAAC;AAAA,sBACH;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMF,GAAG;AAAA,sBACD,KAAK;AAAA,sBACL,OAAO,SAAS,cAAc,SAAS;AACrC,+BAAO,kBAAkB,UAAU,OAAO;AAAA,sBAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMF,GAAG;AAAA,sBACD,KAAK;AAAA,sBACL,OAAO,SAAS,cAAc,SAAS;AACrC,4BAAI,WAAW,kBAAkB,UAAU,OAAO;AAElD,4BAAI,UAAU;AACZ,iCAAO,SAAS,cAAc,QAAQ;AAAA,wBACxC;AAAA,sBACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAQF,GAAG;AAAA,sBACD,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,sBAML,OAAO,SAAS,YAAY,SAAS;AACnC,+BAAO,kBAAkB,QAAQ,OAAO;AAAA,sBAC1C;AAAA;AAAA;AAAA;AAAA,oBAKF,GAAG;AAAA,sBACD,KAAK;AAAA,sBACL,OAAO,SAASE,WAAU;AACxB,6BAAK,SAAS,QAAQ;AAAA,sBACxB;AAAA,oBACF,CAAC,GAAG,CAAC;AAAA,sBACH,KAAK;AAAA,sBACL,OAAO,SAAS,KAAK,QAAQ;AAC3B,4BAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAAA,0BAChF,WAAW,SAAS;AAAA,wBACtB;AACA,+BAAO,aAAa,QAAQ,OAAO;AAAA,sBACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOF,GAAG;AAAA,sBACD,KAAK;AAAA,sBACL,OAAO,SAAS,IAAI,QAAQ;AAC1B,+BAAO,YAAY,MAAM;AAAA,sBAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOF,GAAG;AAAA,sBACD,KAAK;AAAA,sBACL,OAAO,SAAS,cAAc;AAC5B,4BAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,QAAQ,KAAK;AAC/F,4BAAI,UAAU,OAAO,WAAW,WAAW,CAAC,MAAM,IAAI;AACtD,4BAAI,UAAU,CAAC,CAAC,SAAS;AACzB,gCAAQ,QAAQ,SAAUC,SAAQ;AAChC,oCAAU,WAAW,CAAC,CAAC,SAAS,sBAAsBA,OAAM;AAAA,wBAC9D,CAAC;AACD,+BAAO;AAAA,sBACT;AAAA,oBACF,CAAC,CAAC;AAEF,2BAAOF;AAAA,kBACT,GAAG,qBAAqB,CAAE;AAEG,sBAAI,YAAa;AAAA,gBAExC;AAAA;AAAA;AAAA,cAEA;AAAA;AAAA,iBACC,SAASvB,SAAQ;AAExB,sBAAI,qBAAqB;AAKzB,sBAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,UAAU,SAAS;AAC9D,wBAAI,QAAQ,QAAQ;AAEpB,0BAAM,UAAU,MAAM,mBACN,MAAM,sBACN,MAAM,qBACN,MAAM,oBACN,MAAM;AAAA,kBAC1B;AASA,2BAAS0B,SAAS,SAAS,UAAU;AACjC,2BAAO,WAAW,QAAQ,aAAa,oBAAoB;AACvD,0BAAI,OAAO,QAAQ,YAAY,cAC3B,QAAQ,QAAQ,QAAQ,GAAG;AAC7B,+BAAO;AAAA,sBACT;AACA,gCAAU,QAAQ;AAAA,oBACtB;AAAA,kBACJ;AAEA,kBAAA1B,QAAO,UAAU0B;AAAA,gBAGX;AAAA;AAAA;AAAA,cAEA;AAAA;AAAA,iBACC,SAAS1B,SAAQ,0BAA0BC,sBAAqB;AAEvE,sBAAIyB,WAAUzB,qBAAoB,GAAG;AAYrC,2BAAS,UAAU,SAAS,UAAU,MAAM0B,WAAU,YAAY;AAC9D,wBAAI,aAAa,SAAS,MAAM,MAAM,SAAS;AAE/C,4BAAQ,iBAAiB,MAAM,YAAY,UAAU;AAErD,2BAAO;AAAA,sBACH,SAAS,WAAW;AAChB,gCAAQ,oBAAoB,MAAM,YAAY,UAAU;AAAA,sBAC5D;AAAA,oBACJ;AAAA,kBACJ;AAYA,2BAASC,UAASC,WAAU,UAAU,MAAMF,WAAU,YAAY;AAE9D,wBAAI,OAAOE,UAAS,qBAAqB,YAAY;AACjD,6BAAO,UAAU,MAAM,MAAM,SAAS;AAAA,oBAC1C;AAGA,wBAAI,OAAO,SAAS,YAAY;AAG5B,6BAAO,UAAU,KAAK,MAAM,QAAQ,EAAE,MAAM,MAAM,SAAS;AAAA,oBAC/D;AAGA,wBAAI,OAAOA,cAAa,UAAU;AAC9B,sBAAAA,YAAW,SAAS,iBAAiBA,SAAQ;AAAA,oBACjD;AAGA,2BAAO,MAAM,UAAU,IAAI,KAAKA,WAAU,SAAU,SAAS;AACzD,6BAAO,UAAU,SAAS,UAAU,MAAMF,WAAU,UAAU;AAAA,oBAClE,CAAC;AAAA,kBACL;AAWA,2BAAS,SAAS,SAAS,UAAU,MAAMA,WAAU;AACjD,2BAAO,SAASL,IAAG;AACf,sBAAAA,GAAE,iBAAiBI,SAAQJ,GAAE,QAAQ,QAAQ;AAE7C,0BAAIA,GAAE,gBAAgB;AAClB,wBAAAK,UAAS,KAAK,SAASL,EAAC;AAAA,sBAC5B;AAAA,oBACJ;AAAA,kBACJ;AAEA,kBAAAtB,QAAO,UAAU4B;AAAA,gBAGX;AAAA;AAAA;AAAA,cAEA;AAAA;AAAA,iBACC,SAAS,yBAAyB7B,WAAS;AAQlD,kBAAAA,UAAQ,OAAO,SAAS,OAAO;AAC3B,2BAAO,UAAU,UACV,iBAAiB,eACjB,MAAM,aAAa;AAAA,kBAC9B;AAQA,kBAAAA,UAAQ,WAAW,SAAS,OAAO;AAC/B,wBAAI,OAAO,OAAO,UAAU,SAAS,KAAK,KAAK;AAE/C,2BAAO,UAAU,WACT,SAAS,uBAAuB,SAAS,8BACzC,YAAY,UACZ,MAAM,WAAW,KAAKA,UAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,kBACvD;AAQA,kBAAAA,UAAQ,SAAS,SAAS,OAAO;AAC7B,2BAAO,OAAO,UAAU,YACjB,iBAAiB;AAAA,kBAC5B;AAQA,kBAAAA,UAAQ,KAAK,SAAS,OAAO;AACzB,wBAAI,OAAO,OAAO,UAAU,SAAS,KAAK,KAAK;AAE/C,2BAAO,SAAS;AAAA,kBACpB;AAAA,gBAGM;AAAA;AAAA;AAAA,cAEA;AAAA;AAAA,iBACC,SAASC,SAAQ,0BAA0BC,sBAAqB;AAEvE,sBAAI6B,MAAK7B,qBAAoB,GAAG;AAChC,sBAAI2B,YAAW3B,qBAAoB,GAAG;AAWtC,2BAAS,OAAO,QAAQ,MAAM0B,WAAU;AACpC,wBAAI,CAAC,UAAU,CAAC,QAAQ,CAACA,WAAU;AAC/B,4BAAM,IAAI,MAAM,4BAA4B;AAAA,oBAChD;AAEA,wBAAI,CAACG,IAAG,OAAO,IAAI,GAAG;AAClB,4BAAM,IAAI,UAAU,kCAAkC;AAAA,oBAC1D;AAEA,wBAAI,CAACA,IAAG,GAAGH,SAAQ,GAAG;AAClB,4BAAM,IAAI,UAAU,mCAAmC;AAAA,oBAC3D;AAEA,wBAAIG,IAAG,KAAK,MAAM,GAAG;AACjB,6BAAO,WAAW,QAAQ,MAAMH,SAAQ;AAAA,oBAC5C,WACSG,IAAG,SAAS,MAAM,GAAG;AAC1B,6BAAO,eAAe,QAAQ,MAAMH,SAAQ;AAAA,oBAChD,WACSG,IAAG,OAAO,MAAM,GAAG;AACxB,6BAAO,eAAe,QAAQ,MAAMH,SAAQ;AAAA,oBAChD,OACK;AACD,4BAAM,IAAI,UAAU,2EAA2E;AAAA,oBACnG;AAAA,kBACJ;AAWA,2BAAS,WAAW,MAAM,MAAMA,WAAU;AACtC,yBAAK,iBAAiB,MAAMA,SAAQ;AAEpC,2BAAO;AAAA,sBACH,SAAS,WAAW;AAChB,6BAAK,oBAAoB,MAAMA,SAAQ;AAAA,sBAC3C;AAAA,oBACJ;AAAA,kBACJ;AAWA,2BAAS,eAAe,UAAU,MAAMA,WAAU;AAC9C,0BAAM,UAAU,QAAQ,KAAK,UAAU,SAAS,MAAM;AAClD,2BAAK,iBAAiB,MAAMA,SAAQ;AAAA,oBACxC,CAAC;AAED,2BAAO;AAAA,sBACH,SAAS,WAAW;AAChB,8BAAM,UAAU,QAAQ,KAAK,UAAU,SAAS,MAAM;AAClD,+BAAK,oBAAoB,MAAMA,SAAQ;AAAA,wBAC3C,CAAC;AAAA,sBACL;AAAA,oBACJ;AAAA,kBACJ;AAWA,2BAAS,eAAe,UAAU,MAAMA,WAAU;AAC9C,2BAAOC,UAAS,SAAS,MAAM,UAAU,MAAMD,SAAQ;AAAA,kBAC3D;AAEA,kBAAA3B,QAAO,UAAU;AAAA,gBAGX;AAAA;AAAA;AAAA,cAEA;AAAA;AAAA,iBACC,SAASA,SAAQ;AAExB,2BAAS,OAAO,SAAS;AACrB,wBAAI;AAEJ,wBAAI,QAAQ,aAAa,UAAU;AAC/B,8BAAQ,MAAM;AAEd,qCAAe,QAAQ;AAAA,oBAC3B,WACS,QAAQ,aAAa,WAAW,QAAQ,aAAa,YAAY;AACtE,0BAAI,aAAa,QAAQ,aAAa,UAAU;AAEhD,0BAAI,CAAC,YAAY;AACb,gCAAQ,aAAa,YAAY,EAAE;AAAA,sBACvC;AAEA,8BAAQ,OAAO;AACf,8BAAQ,kBAAkB,GAAG,QAAQ,MAAM,MAAM;AAEjD,0BAAI,CAAC,YAAY;AACb,gCAAQ,gBAAgB,UAAU;AAAA,sBACtC;AAEA,qCAAe,QAAQ;AAAA,oBAC3B,OACK;AACD,0BAAI,QAAQ,aAAa,iBAAiB,GAAG;AACzC,gCAAQ,MAAM;AAAA,sBAClB;AAEA,0BAAI,YAAY,OAAO,aAAa;AACpC,0BAAI,QAAQ,SAAS,YAAY;AAEjC,4BAAM,mBAAmB,OAAO;AAChC,gCAAU,gBAAgB;AAC1B,gCAAU,SAAS,KAAK;AAExB,qCAAe,UAAU,SAAS;AAAA,oBACtC;AAEA,2BAAO;AAAA,kBACX;AAEA,kBAAAA,QAAO,UAAU;AAAA,gBAGX;AAAA;AAAA;AAAA,cAEA;AAAA;AAAA,iBACC,SAASA,SAAQ;AAExB,2BAAS+B,KAAK;AAAA,kBAGd;AAEA,kBAAAA,GAAE,YAAY;AAAA,oBACZ,IAAI,SAAUC,OAAML,WAAU,KAAK;AACjC,0BAAIL,KAAI,KAAK,MAAM,KAAK,IAAI,CAAC;AAE7B,uBAACA,GAAEU,KAAI,MAAMV,GAAEU,KAAI,IAAI,CAAC,IAAI,KAAK;AAAA,wBAC/B,IAAIL;AAAA,wBACJ;AAAA,sBACF,CAAC;AAED,6BAAO;AAAA,oBACT;AAAA,oBAEA,MAAM,SAAUK,OAAML,WAAU,KAAK;AACnC,0BAAIP,QAAO;AACX,+BAAS,WAAY;AACnB,wBAAAA,MAAK,IAAIY,OAAM,QAAQ;AACvB,wBAAAL,UAAS,MAAM,KAAK,SAAS;AAAA,sBAC/B;AAAC;AAED,+BAAS,IAAIA;AACb,6BAAO,KAAK,GAAGK,OAAM,UAAU,GAAG;AAAA,oBACpC;AAAA,oBAEA,MAAM,SAAUA,OAAM;AACpB,0BAAI,OAAO,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;AACrC,0BAAI,WAAW,KAAK,MAAM,KAAK,IAAI,CAAC,IAAIA,KAAI,KAAK,CAAC,GAAG,MAAM;AAC3D,0BAAItB,KAAI;AACR,0BAAI,MAAM,OAAO;AAEjB,2BAAKA,IAAGA,KAAI,KAAKA,MAAK;AACpB,+BAAOA,EAAC,EAAE,GAAG,MAAM,OAAOA,EAAC,EAAE,KAAK,IAAI;AAAA,sBACxC;AAEA,6BAAO;AAAA,oBACT;AAAA,oBAEA,KAAK,SAAUsB,OAAML,WAAU;AAC7B,0BAAIL,KAAI,KAAK,MAAM,KAAK,IAAI,CAAC;AAC7B,0BAAI,OAAOA,GAAEU,KAAI;AACjB,0BAAI,aAAa,CAAC;AAElB,0BAAI,QAAQL,WAAU;AACpB,iCAASjB,KAAI,GAAG,MAAM,KAAK,QAAQA,KAAI,KAAKA,MAAK;AAC/C,8BAAI,KAAKA,EAAC,EAAE,OAAOiB,aAAY,KAAKjB,EAAC,EAAE,GAAG,MAAMiB;AAC9C,uCAAW,KAAK,KAAKjB,EAAC,CAAC;AAAA,wBAC3B;AAAA,sBACF;AAMA,sBAAC,WAAW,SACRY,GAAEU,KAAI,IAAI,aACV,OAAOV,GAAEU,KAAI;AAEjB,6BAAO;AAAA,oBACT;AAAA,kBACF;AAEA,kBAAAhC,QAAO,UAAU+B;AACjB,kBAAA/B,QAAO,QAAQ,cAAc+B;AAAA,gBAGvB;AAAA;AAAA;AAAA,YAEI;AAGA,gBAAI,2BAA2B,CAAC;AAGhC,qBAAS9B,qBAAoB,UAAU;AAEtC,kBAAG,yBAAyB,QAAQ,GAAG;AACtC,uBAAO,yBAAyB,QAAQ,EAAE;AAAA,cAC3C;AAEA,kBAAID,UAAS,yBAAyB,QAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAGjD,SAAS,CAAC;AAAA;AAAA,cACX;AAGA,kCAAoB,QAAQ,EAAEA,SAAQA,QAAO,SAASC,oBAAmB;AAGzE,qBAAOD,QAAO;AAAA,YACf;AAIA,cAAC,WAAW;AAEX,cAAAC,qBAAoB,IAAI,SAASD,SAAQ;AACxC,oBAAI,SAASA,WAAUA,QAAO;AAAA;AAAA,kBAC7B,WAAW;AAAE,2BAAOA,QAAO,SAAS;AAAA,kBAAG;AAAA;AAAA;AAAA,kBACvC,WAAW;AAAE,2BAAOA;AAAA,kBAAQ;AAAA;AAC7B,gBAAAC,qBAAoB,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AAC3C,uBAAO;AAAA,cACR;AAAA,YACD,GAAE;AAGF,cAAC,WAAW;AAEX,cAAAA,qBAAoB,IAAI,SAASF,WAAS,YAAY;AACrD,yBAAQ,OAAO,YAAY;AAC1B,sBAAGE,qBAAoB,EAAE,YAAY,GAAG,KAAK,CAACA,qBAAoB,EAAEF,WAAS,GAAG,GAAG;AAClF,2BAAO,eAAeA,WAAS,KAAK,EAAE,YAAY,MAAM,KAAK,WAAW,GAAG,EAAE,CAAC;AAAA,kBAC/E;AAAA,gBACD;AAAA,cACD;AAAA,YACD,GAAE;AAGF,cAAC,WAAW;AACX,cAAAE,qBAAoB,IAAI,SAAS,KAAK,MAAM;AAAE,uBAAO,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI;AAAA,cAAG;AAAA,YACvG,GAAE;AAMF,mBAAOA,qBAAoB,GAAG;AAAA,UAC/B,GAAG,EACX;AAAA;AAAA,MACD,CAAC;AAAA;AAAA;;;ACz3BD;AAAA,2EAAAgC,WAAAC,SAAA;AAAA,OAAC,SAAUC,SAAQ,SAAS;AACxB,eAAOF,cAAY,YAAY,OAAOC,YAAW,cAAcA,QAAO,UAAU,QAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,OAAO,KAC1DC,UAAS,OAAO,eAAe,cAAc,aAAaA,WAAU,MAAMA,QAAO,oBAAoB,QAAQ;AAAA,MAClH,GAAEF,YAAO,WAAY;AAAE;AAiBnB,YAAI,WAAW,WAAW;AACtB,qBAAW,OAAO,UAAU,SAASG,UAASC,IAAG;AAC7C,qBAASC,IAAGC,KAAI,GAAGC,KAAI,UAAU,QAAQD,KAAIC,IAAGD,MAAK;AACjD,cAAAD,KAAI,UAAUC,EAAC;AACf,uBAASE,MAAKH,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAGG,EAAC,EAAG,CAAAJ,GAAEI,EAAC,IAAIH,GAAEG,EAAC;AAAA,YAC/E;AACA,mBAAOJ;AAAA,UACX;AACA,iBAAO,SAAS,MAAM,MAAM,SAAS;AAAA,QACzC;AAEA,iBAAS,eAAeK,QAAO;AAC3B,cAAI;AACA,gBAAI,OAAOA,OAAM,iBAAiB,YAAY;AAC1C,kBAAI,OAAOA,OAAM,aAAa;AAC9B,qBAAO,KAAK,CAAC;AAAA,YACjB;AACA,mBAAOA,OAAM;AAAA,UACjB,SACO,OAAO;AACV,mBAAOA,OAAM;AAAA,UACjB;AAAA,QACJ;AAEA,YAAI,gBAAgB;AAAA,UAChB,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY;AAAA,UACZ,OAAO;AAAA,QACX;AACA,iBAAS,kBAAkB,cAAc;AACrC,cAAIC,UAAS,SAAS,SAAS,CAAC,GAAG,aAAa,GAAG,YAAY;AAC/D,cAAI;AACJ,cAAI,wBAAwB;AAC5B,iBAAO,SAAU,IAAI;AACjB,gBAAI,GAAG,OAAO,cAAc,GAAG;AAC3B,qBAAO,CAAC;AACZ,mBAAO,SAAS;AAAA,cAAE,WAAW,SAAUC,KAAG,IAAI,KAAKC,IAAG;AAC9C,oBAAI,cAAc,eAAeA,EAAC;AAClC,oBAAI,+BAAgC,CAAC,GAAG,OAAO,aAAa,gBAAgB,GAAG,QAC1E,GAAG,OAAO,cACL,GAAG,OAAO,iBAAiB,gBAAgB,GAAG,iBAC3C,CAAC,GAAG,OAAO,iBAAiB,gBAAgB,GAAG;AAC5D,oBAAI,GAAG,OAAO,cACVA,GAAE,QAAQ,SACV,8BAA8B;AAC9B,kBAAAA,GAAE,eAAe;AACjB,mCAAiB,MAAM;AAAA,gBAC3B,WACSA,GAAE,QAAQ,WAAW,gBAAgB;AAC1C,qBAAG,MAAM;AAAA,cACjB;AAAA,cACA,SAAS,WAAY;AACjB,mCAAmB,GAAG,eAAe,OAAO,wBAAwB,OAAOF,QAAO,aAAa,YAAY,MAAM,MAAMA,QAAO,QAAQ,SAASA,QAAO,WAAW;AACjK,iCAAiB,WAAW;AAC5B,iCAAiB,aAAaA,QAAO;AACrC,iCAAiB,iBAAiB,SAAS,GAAG,KAAK;AACnD,mBAAG,kBAAkB,YAAY,gBAAgB;AACjD,mBAAG,cAAc,KAAK,aAAa;AAAA,cACvC;AAAA,YAAE,GAAI,CAACA,QAAO,aACZ;AAAA,cACE,UAAU,SAAUC,KAAG,SAAS;AAC5B,oBAAI,gBAAgB,GAAG,OAAO,cAC1B,GAAG,OAAO,SAAS,cACnB,GAAG,cAAc,QAAQ,aAAa,MAAM;AAChD,oBAAI,wBAAwB,GAAG,kBAAkB,cAAc,MAAM,qBAAqB;AAC1F,oBAAI,CAAC;AACD;AACJ,oBAAI,WACA,CAAC,GAAG,OAAO,UACX,iBACA;AACA,yBAAO,sBAAsB,UAAU,IAAI,SAAS;AACxD,sCAAsB,UAAU,OAAO,SAAS;AAAA,cACpD;AAAA,YACJ,IACE,CAAC,CAAE;AAAA,UACb;AAAA,QACJ;AAEA,eAAO;AAAA,MAEX,EAAE;AAAA;AAAA;;;ACvGF;AAAA,2DAAAE,WAAAC,SAAA;AAAA,QAAC,SAASC,IAAEC,IAAE;AAAC,YAAIC,KAAEA,MAAG,CAAC;AAAE,sBAAY,OAAOA,MAAGA,GAAE,MAAIA,GAAE,CAAC,GAAED,EAAC,IAAE,YAAU,OAAOH,aAAS,YAAU,OAAOC,UAAOA,QAAO,UAAQE,GAAE,IAAE,YAAU,OAAOH,YAAQA,UAAQ,WAASG,GAAE,IAAED,GAAE,WAASC,GAAE;AAAA,MAAC,GAAEH,YAAM,WAAU;AAAC,YAAIE,IAAEC,KAAE,GAAEC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEC,MAAGJ,KAAE,OAAO,oBAAkB,OAAO,wBAAuB,SAASC,IAAEC,IAAE;AAAC,UAAAD,MAAG,MAAIA,GAAE,aAAWD,KAAE,IAAIA,IAAG,SAASA,IAAEC,IAAE;AAAC,YAAAC,GAAEF,EAAC;AAAA,UAAC,EAAE,EAAE,QAAQC,IAAE,EAAC,WAAU,MAAG,SAAQ,MAAE,CAAC,IAAE,OAAO,oBAAkBA,GAAE,iBAAiB,mBAAkBC,IAAE,KAAE;AAAA,QAAE;AAAG,iBAASG,GAAEL,IAAEC,IAAE;AAAC,cAAG,CAACD,GAAE,QAAO;AAAK,UAAAC,KAAEA,MAAG,CAAC,GAAE,KAAK,YAAUD,IAAE,KAAK,MAAIC,GAAE,KAAI,KAAK,WAAS,EAAC,UAAS,KAAI,WAAU,CAAC,EAAC,GAAE,OAAO,OAAO,KAAK,UAASA,EAAC,GAAE,KAAK,MAAM,GAAEG,GAAE,KAAK,WAAU,KAAK,MAAM,KAAK,IAAI,CAAC,GAAE,KAAK,WAAW;AAAA,QAAC;AAAC,eAAOC,GAAE,YAAU,EAAC,WAAU,YAAW,QAAO;AAAC,WAAC,GAAG,KAAK,UAAU,UAAU,EAAE,SAAS,CAAAL,OAAG;AAAC,gBAAG,KAAGA,GAAE,SAAS,QAAOA,GAAE,WAAW,YAAYA,EAAC;AAAE,YAAAA,GAAE,QAAQ,KAAK,SAAS,QAAQ,MAAIA,GAAE,YAAU;AAAA,UAAG,EAAE,GAAE,KAAK,MAAI,KAAK,YAAY,KAAK,UAAU,iBAAiB;AAAA,QAAC,GAAE,SAASA,IAAEC,IAAE;AAAC,cAAIC,KAAE,OAAGC,KAAE;AAAK,iBAAO,SAASC,IAAE;AAAC,YAAAF,OAAIF,GAAE,KAAKG,IAAEC,EAAC,GAAEF,KAAE,MAAG,YAAY,MAAIA,KAAE,QAAID,EAAC;AAAA,UAAE;AAAA,QAAC,GAAE,gBAAgBD,IAAE;AAAC,cAAG,CAACA,GAAE,QAAQ,QAAO;AAAK,cAAIC,KAAED,GAAE,QAAQ,oBAAoB;AAAE,iBAAO,KAAK,OAAKE,GAAE,MAAID,KAAE;AAAA,QAAI,GAAE,UAAUD,IAAEC,IAAE;AAAC,UAAAC,KAAE;AAAK,cAAIC,IAAEC,KAAE,KAAK,gBAAgBH,EAAC;AAAE,UAAAG,MAAG,KAAK,kBAAkB,GAAE,KAAK,SAAO,KAAK,gBAAgB,GAAE,KAAK,SAAO,KAAK,gBAAgB,GAAED,KAAEC,GAAE,sBAAsB,GAAE,KAAK,OAAO,MAAIA,IAAE,KAAK,OAAO,MAAI,KAAK,aAAaA,EAAC,GAAE,KAAK,OAAO,KAAK,QAAMD,GAAE,OAAM,KAAK,OAAO,KAAK,SAAOA,GAAE,QAAOH,GAAE,aAAa,gBAAc,QAAO,KAAK,SAAS,UAAU,aAAW,KAAK,SAAS,UAAU,UAAU,KAAK,OAAO,KAAIA,EAAC,GAAE,WAAW,KAAK,eAAe,KAAK,IAAI,CAAC,KAAGE,KAAE,CAAC;AAAA,QAAC,GAAE,iBAAgB;AAAC,cAAIF,KAAE,cAAY,KAAK,SAAS,OAAK,WAAS;AAAQ,eAAK,UAAU,UAAU,IAAI,GAAG,KAAK,SAAS,aAAa,GAAE,KAAK,OAAO,IAAI,MAAMA,EAAC,IAAE,KAAK,OAAO,KAAKA,EAAC,IAAE,MAAK,KAAK,OAAO,IAAI,UAAU,IAAI,GAAG,KAAK,SAAS,YAAY;AAAA,QAAC,GAAE,SAASA,IAAE;AAAC,UAAAA,GAAE,eAAe,GAAEA,GAAE,gBAAgB;AAAE,cAAIC,KAAED,GAAE;AAAO,eAAIC,KAAE,KAAK,gBAAgBA,EAAC,MAAI,KAAK,QAAO;AAAC,gBAAIC,KAAE,KAAK,OAAO,KAAIC,KAAE,KAAK,OAAO;AAAe,YAAAH,GAAE,aAAa,aAAW,QAAO,KAAK,OAAO,iBAAe,KAAK,mBAAmBA,EAAC,GAAEE,MAAGD,MAAGE,MAAG,KAAK,OAAO,kBAAgB,KAAK,wBAAwBH,IAAEC,EAAC;AAAA,UAAC;AAAA,QAAC,GAAE,UAAUD,IAAEC,IAAE;AAAC,WAACA,KAAE,KAAK,gBAAgBA,EAAC,MAAI,KAAK,UAAQ,KAAK,WAAWA,EAAC,KAAG,KAAK,OAAO,OAAKA,MAAG,KAAK,OAAO,QAAM,KAAK,OAAO,WAASA,GAAE,sBAAsB;AAAA,QAAE,GAAE,wBAAwBD,IAAEC,IAAE;AAAC,cAAIC;AAAE,UAAAF,GAAE,eAAe,GAAEA,GAAE,gBAAgB,GAAEA,GAAE,aAAa,aAAW,QAAO,KAAK,WAAWC,EAAC,KAAG,KAAK,OAAO,OAAKA,MAAG,KAAK,OAAO,QAAMD,GAAE,aAAa,aAAW,QAAO,KAAK,kBAAkB,GAAE,KAAK,OAAO,MAAIC,IAAE,KAAK,OAAO,MAAI,KAAK,aAAaA,EAAC,GAAEA,GAAE,UAAU,IAAI,MAAM,GAAEC,KAAE,KAAK,IAAI,KAAK,OAAO,MAAI,KAAK,OAAO,GAAG,GAAE,KAAK,OAAO,IAAI,UAAU,OAAO,GAAG,KAAK,SAAS,UAASA,KAAE,CAAC,GAAE,cAAY,KAAK,SAAS,OAAK,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,iBAAe,iBAAe,WAAW,IAAE,KAAK,OAAO,KAAK,SAAO,KAAK,MAAI,OAAK,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,iBAAe,gBAAc,YAAY,IAAE,KAAK,OAAO,KAAK,QAAM,KAAK,MAAI;AAAA,QAAK,GAAE,QAAQF,IAAE;AAAC,cAAG,aAAa,KAAK,eAAe,GAAE,KAAK,kBAAgB,MAAK,KAAK,UAAU,UAAU,OAAO,GAAG,KAAK,SAAS,aAAa,GAAE,CAAC,KAAK,WAAW,KAAK,OAAO,GAAG,EAAE,QAAO,KAAK,QAAQ;AAAE,cAAIC,KAAE,KAAK,OAAO,iBAAe,KAAK,OAAO,IAAI,qBAAmB,KAAK,OAAO;AAAI,iBAAO,KAAK,OAAO,OAAK,KAAK,OAAO,OAAK,KAAK,OAAO,QAAM,KAAK,OAAO,IAAI,UAAU,IAAI,GAAG,KAAK,SAAS,UAAU,GAAE,KAAK,QAAQ,GAAE,KAAK,UAAU,aAAa,KAAK,OAAO,KAAIA,EAAC,IAAG,KAAK,OAAO,OAAK,KAAK,OAAO,IAAI,UAAU,OAAO,GAAG,KAAK,SAAS,cAAa,GAAG,KAAK,SAAS,QAAQ,GAAE,KAAK,SAAS,UAAU,WAAS,KAAK,SAAS,UAAU,QAAQ,KAAK,OAAO,GAAG,GAAE;AAAA,QAAI,GAAE,oBAAmB;AAAC,iBAAO,KAAK,UAAU,oBAAkB,KAAK,OAAO;AAAA,QAAG,GAAE,mBAAmBD,IAAE;AAAC,cAAG,KAAK,OAAO,SAAS,QAAM,cAAY,KAAK,SAAS,OAAKA,GAAE,QAAM,KAAK,OAAO,SAAS,MAAI,KAAK,OAAO,SAAS,SAAO,IAAE,IAAE,IAAEA,GAAE,QAAM,KAAK,OAAO,SAAS,OAAK,KAAK,OAAO,SAAS,QAAM,IAAE,IAAE;AAAA,QAAC,GAAE,aAAaA,IAAE;AAAC,mBAAQC,KAAE,GAAED,KAAEA,GAAE,kBAAiB,MAAGA,GAAE,YAAU,QAAQ,KAAKA,GAAE,IAAI,KAAGC;AAAI,iBAAOA;AAAA,QAAC,GAAE,WAAWD,IAAE;AAAC,iBAAOA,MAAGA,GAAE,YAAUA,GAAE,cAAY,KAAK;AAAA,QAAS,GAAE,oBAAmB;AAAC,WAAC,GAAG,KAAK,UAAU,QAAQ,EAAE,SAAS,CAAAA,OAAG;AAAC,YAAAA,GAAE,aAAa,0BAAyBA,GAAE,aAAa,OAAO,CAAC;AAAA,UAAC,EAAE;AAAA,QAAC,GAAE,UAAS;AAAC,UAAAE,KAAE,CAAC,GAAE,CAAC,GAAG,KAAK,UAAU,QAAQ,EAAE,SAAS,CAAAF,OAAG;AAAC,YAAAA,GAAE,QAAMA,GAAE,aAAa,wBAAwB,GAAEA,GAAE,gBAAgB,wBAAwB,GAAE,YAAY,MAAI;AAAC,cAAAA,GAAE,UAAU,OAAO,GAAG,KAAK,SAAS,UAAS,GAAG,KAAK,SAAS,YAAW,GAAG,KAAK,SAAS,YAAY;AAAA,YAAC,IAAG,EAAE;AAAA,UAAC,EAAE;AAAA,QAAC,GAAE,oBAAmB;AAAC,gBAAK,EAAC,KAAIA,GAAC,IAAE,KAAK;AAAO,UAAAA,OAAIA,GAAE,UAAU,OAAO,GAAG,KAAK,SAAS,UAAS,GAAG,KAAK,SAAS,QAAQ,GAAEA,GAAE,QAAMA,GAAE,aAAa,wBAAwB;AAAA,QAAE,GAAE,iBAAgB,OAAK,EAAC,KAAI,MAAK,MAAK,CAAC,EAAC,IAAG,YAAYA,IAAE;AAAC,cAAIC,KAAE,iBAAiBD,EAAC,GAAEE,KAAE,iBAAiBF,GAAE,UAAU,GAAEG,KAAE,cAAY,KAAK,SAAS,MAAKC,KAAE,SAASF,GAAE,GAAG,KAAG;AAAE,iBAAO,SAASD,GAAE,YAAUE,KAAE,QAAM,OAAO,CAAC,IAAE,SAASF,GAAE,YAAUE,KAAE,WAAS,QAAQ,CAAC,IAAEC;AAAA,QAAC,GAAE,WAAWJ,IAAE;AAAC,mBAAQC,MAAK,KAAK,YAAU,KAAK,aAAW,EAAC,WAAU,CAAAD,OAAG,KAAK,UAAUA,IAAEA,GAAE,MAAM,GAAE,WAAU,CAAAA,OAAG,KAAK,UAAUA,IAAEA,GAAE,MAAM,GAAE,SAAQ,CAAAA,OAAG,KAAK,QAAQA,IAAEA,GAAE,MAAM,GAAE,UAAS,KAAK,SAAS,KAAK,UAAS,GAAG,EAAC,GAAE,KAAK,UAAU,MAAK,UAAUA,KAAE,wBAAsB,kBAAkB,EAAEC,IAAE,KAAK,UAAUA,EAAC,CAAC;AAAA,QAAC,GAAE,UAAS;AAAC,eAAK,QAAQ,GAAE,KAAK,WAAW,IAAE,GAAE,OAAOE,GAAE,KAAK,GAAG;AAAA,QAAC,EAAC,GAAE,SAASH,IAAEE,IAAE;AAAC,iBAAOC,GAAE,EAAEF,EAAC,IAAED,GAAE,WAASG,GAAEH,GAAE,QAAQ,IAAE,IAAIK,GAAEL,IAAE,EAAC,GAAGE,IAAE,KAAID,GAAC,CAAC,GAAED,GAAE,WAASC,IAAEE,GAAEF,EAAC;AAAA,QAAC;AAAA,MAAC,EAAE;AAAA;AAAA;;;;;;;;;ACAv1K,YAACK;;WAAoC,WAAY;AAChD,qBAASA,sBAAqB;YAClC;AACI,YAAAA,oBAAmB,mBAAmB;AACtC,YAAAA,oBAAmB,UAAU;cACzB,OAAO;cACP,SAAS;cACT,iBAAiB;cACjB,QAAQ;cACR,eAAe;cACf,gBAAgB;YACxB;AACI,YAAAA,oBAAmB,aAAa;cAC5B,eAAe;cACf,oBAAoB;YAC5B;AACI,YAAAA,oBAAmB,OAAO;cACtB,WAAW;cACX,gBAAgB;YACxB;AACI,YAAAA,oBAAmB,SAAS;cACxB,aAAa,CAAC,aAAa,YAAY;cACvC,aAAa,CAAC,aAAa,WAAW;cACtC,WAAW,CAAC,WAAW,UAAU;cACjC,cAAc,CAAC,QAAQ;cACvB,kBAAkB;cAClB,aAAa;cACb,iBAAiB;YACzB;AACI,mBAAOA;UACX,GAAC;;AC9BE,YAACC;;UAA4B,4BAAY;AACxC,qBAASA,cAAa;AAClB,mBAAK,SAAS;AACd,mBAAK,QAAQ;YACrB;AACI,mBAAOA;UACX,GAAC;;AAEE,YAACC;;UAA6B,4BAAY;AACzC,qBAASA,eAAc;AACnB,mBAAK,IAAI;AACT,mBAAK,gBAAgB;YAC7B;AACI,mBAAOA;UACX,GAAC;;AAEE,YAACC;;UAAoC,4BAAY;AAChD,qBAASA,oBAAmB,QAAQ,aAAa;AAC7C,mBAAK,UAAU,IAAID,aAAW;AAC9B,mBAAK,iBAAiB,IAAID,YAAU;AACpC,mBAAK,YAAY,IAAIA,YAAU;AAC/B,mBAAK,SAAS;AACd,mBAAK,cAAc;YAC3B;AACI,mBAAOE;UACX,GAAC;;ACzBE,YAACC;;WAA2B,WAAY;AACvC,qBAASA,aAAY;YACzB;AACI,YAAAA,WAAU,uBAAuB,SAAU,KAAK;AAC5C,qBAAO,IAAI,QAAQA,WAAU,gBAAgB,SAAUC,IAAG;AAAE,uBAAOA,GAAE,CAAC,EAAE,YAAW;cAAG,CAAE;YAChG;AACI,YAAAD,WAAU,oBAAoB,SAAU,KAAK;AACzC,kBAAI,IAAI,UAAU,KAAKA,WAAU,eAAe,KAAK,GAAG;AACpD,uBAAO;AACX,kBAAIA,WAAU,UAAU,KAAK,GAAG;AAC5B,uBAAO;AACX,kBAAIA,WAAU,WAAW,KAAK,GAAG;AAC7B,uBAAO;AACX,kBAAIA,WAAU,qBAAqB,KAAK,GAAG,GAAG;AAC1C,oBAAI,OAAO,CAAC;AACZ,oBAAI,CAAC,MAAM,IAAI;AACX,yBAAO;cACvB;AACQ,qBAAO;YACf;AACI,YAAAA,WAAU,mBAAmB;AAC7B,YAAAA,WAAU,iBAAiB;AAC3B,YAAAA,WAAU,YAAY;AACtB,YAAAA,WAAU,aAAa;AACvB,YAAAA,WAAU,iBAAiB;AAC3B,YAAAA,WAAU,uBAAuB;AACjC,mBAAOA;UACX,GAAC;;AC1BE,YAACE;;WAA8B,WAAY;AAC1C,qBAASA,gBAAe;YAC5B;AACI,YAAAA,cAAa,0BAA0B,SAAU,IAAI;AACjD,kBAAI,CAAC;AACD,uBAAO;AACX,kBAAI,cAAc,CAAA;AAClB,kBAAI,GAAG,SAAS;AACZ,yBAAS,QAAQ,GAAG,SAAS;AACzB,sBAAI,GAAG,QAAQ,eAAe,IAAI,GAAG;AACjC,gCAAY,IAAI,IAAIF,WAAU,kBAAkB,GAAG,QAAQ,IAAI,KAAK,EAAE;kBAC1F;gBACA;cACA,OACa;AACD,yBAASG,KAAI,GAAGA,KAAI,GAAG,WAAW,QAAQA,MAAK;AAC3C,sBAAI,CAAC,UAAU,KAAK,GAAG,WAAWA,EAAC,EAAE,IAAI;AACrC;AACJ,sBAAI,SAASH,WAAU,qBAAqB,GAAG,WAAWG,EAAC,EAAE,KAAK,QAAQ,SAAS,EAAE,CAAC;AACtF,8BAAY,MAAM,IAAIH,WAAU,kBAAkB,GAAG,WAAWG,EAAC,EAAE,KAAK;gBACxF;cACA;AACQ,qBAAO;YACf;AACI,mBAAOD;UACX,GAAC;;ACzBE,YAACE;;WAAkC,WAAY;AAC9C,qBAASA,kBAAiB,SAAS,SAAS;AACxC,kBAAI,YAAY,QAAQ;AAAE,0BAAU;cAAK;AACzC,kBAAI,YAAY,QAAQ;AAAE,0BAAU;cAAK;AACzC,mBAAK,iBAAiB;AACtB,mBAAK,WAAW;AAChB,mBAAK,WAAW;AAChB,mBAAK,mBAAmB;AACxB,mBAAK,sBAAsB;AAC3B,mBAAK,QAAQ;AACb,mBAAK,eAAe,OAAO;AAC3B,mBAAK,0BAA0B,OAAO;YAC9C;AACI,YAAAA,kBAAiB,UAAU,iBAAiB,SAAU,SAAS;AAC3D,kBAAI,YAAY,QAAQ;AAAE,0BAAU;cAAK;AACzC,kBAAI,CAAC;AACD;AACJ,uBAAS,QAAQ,SAAS;AACtB,oBAAI,KAAK,eAAe,IAAI,GAAG;AAC3B,uBAAK,IAAI,IAAI,QAAQ,IAAI;gBACzC;cACA;YACA;AACI,YAAAA,kBAAiB,UAAU,4BAA4B,SAAU,SAAS;AACtE,kBAAI,YAAY,QAAQ;AAAE,0BAAU;cAAK;AACzC,kBAAI,CAAC;AACD;AACJ,kBAAI,iBAAiBF,cAAa,wBAAwB,OAAO;AACjE,mBAAK,eAAe,cAAc;YAC1C;AACI,mBAAOE;UACX,GAAC;;AC7BE,YAACC;;WAAuC,WAAY;AACnD,qBAASA,uBAAsB,OAAO,SAAS;AAC3C,kBAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,SAAQ,MAAO;AACpE,sBAAM;AACV,kBAAI,OAAO,MAAMT,oBAAmB,gBAAgB,MAAM;AACtD,sBAAM,aAAc,OAAOA,oBAAmB,kBAAkB;8BAA6C,EAAE,OAAOA,oBAAmB,kBAAkB,oBAAoB;AACnL,mBAAK,KAAKS,uBAAsB,cAAa;AAC7C,mBAAK,QAAQ;AACb,mBAAK,UAAU,IAAID,kBAAiB,SAAS,KAAK;AAClD,mBAAK,UAAU;AACf,mBAAK,gBAAgB,MAAM;AAC3B,mBAAK,eAAe,CAAA;AACpB,mBAAK,uBAAuB;AAC5B,mBAAK,iBAAiB,CAAA;AACtB,mBAAK,YAAY;AACjB,mBAAK,kBAAkB;AACvB,mBAAK,KAAI;AACT,mBAAK,MAAMR,oBAAmB,gBAAgB,IAAI;YAC1D;AACI,YAAAS,uBAAsB,UAAU,OAAO,WAAY;AAC/C,mBAAK,eAAc;AACnB,mBAAK,wBAAuB;AAC5B,mBAAK,UAAS;AACd,mBAAK,mBAAkB;AACvB,mBAAK,oBAAmB;AACxB,mBAAK,gBAAe;AACpB,mBAAK,kBAAiB;AACtB,mBAAK,oBAAmB;AACxB,mBAAK,gBAAe;AACpB,mBAAK,iBAAgB;AACrB,mBAAK,4BAA2B;YACxC;AACI,YAAAA,uBAAsB,UAAU,UAAU,WAAY;AAClD,mBAAK,mBAAkB;AACvB,mBAAK,sBAAqB;AAC1B,mBAAK,YAAW;AAChB,mBAAK,mBAAmB;AACxB,mBAAK,mBAAmB;AACxB,mBAAK,iBAAiB;AACtB,mBAAK,MAAMT,oBAAmB,gBAAgB,IAAI;YAC1D;AACI,YAAAS,uBAAsB,UAAU,iBAAiB,WAAY;AACzD,kBAAI,aAAa;AACjB,kBAAI,aAAa;AACjB,kBAAI,QAAQ;AACZ,uBAASC,SAAQ,GAAGA,SAAQ,KAAK,MAAM,WAAW,QAAQA,UAAS;AAC/D,oBAAI,UAAU,KAAK,MAAM,WAAWA,MAAK;AACzC,oBAAI,QAAQ,aAAa,SAAS;AAC9B;AACA,0BAAQ;gBACxB,WACqB,QAAQ,aAAa,SAAS;AACnC;gBAChB;cACA;AACQ,kBAAI,UAAU,QAAQ,eAAe;AACjC,sBAAM,wIAAwI,OAAO,UAAU;AACnK,kBAAI,eAAe;AACf,sBAAM,wIAAwI,OAAO,UAAU;AACnK,kBAAI,gBAAgB;AACpB,kBAAI,WAAW;AACf,uBAASA,SAAQ,GAAGA,SAAQ,MAAM,WAAW,QAAQA,UAAS;AAC1D,oBAAI,UAAU,MAAM,WAAWA,MAAK;AACpC,oBAAI,QAAQ,aAAa,MAAM;AAC3B;AACA,sBAAI,aAAa,MAAM;AACnB,+BAAW;kBAC/B;gBACA;cACA;AACQ,kBAAI,aAAa,QAAQ,gBAAgB;AACrC,sBAAM,yJAAyJ,OAAO,aAAa;AACvL,kBAAI,mBAAmB;AACvB,kBAAI,0BAA0B;AAC9B,uBAASA,SAAQ,GAAGA,SAAQ,SAAS,WAAW,QAAQA,UAAS;AAC7D,oBAAI,UAAU,SAAS,WAAWA,MAAK;AACvC,oBAAI,QAAQ,aAAa,MAAM;AAC3B;gBAChB,WACqB,QAAQ,aAAa,MAAM;AAChC;gBAChB;cACA;AACQ,kBAAI,mBAAmB;AACnB,sBAAM,yLAAyL,OAAO,gBAAgB;AAC1N,kBAAI,4BAA4B;AAC5B,sBAAM,yKAAyK,OAAO,uBAAuB;YACzN;AACI,YAAAD,uBAAsB,UAAU,YAAY,WAAY;AACpD,kBAAI,KAAK;AACL;AACJ,mBAAK,UAAU,KAAK,cAAc,cAAc,KAAK;AACrD,mBAAK,QAAQ,UAAU,IAAIT,oBAAmB,QAAQ,OAAO;AAC7D,kBAAI,sBAAsB,KAAK,MAAM;AACrC,kCAAoB,aAAa,KAAK,SAAS,KAAK,KAAK;AACzD,kCAAoB,YAAY,KAAK,KAAK;AAC1C,mBAAK,QAAQ,YAAY,KAAK,KAAK;AACnC,mBAAK,MAAM,UAAU,IAAIA,oBAAmB,QAAQ,KAAK;YACjE;AACI,YAAAS,uBAAsB,UAAU,cAAc,WAAY;AACtD,mBAAK,MAAM,UAAU,OAAOT,oBAAmB,QAAQ,KAAK;AAC5D,kBAAI,CAAC,KAAK;AACN;AACJ,kBAAI,sBAAsB,KAAK,QAAQ;AACvC,kCAAoB,aAAa,KAAK,OAAO,KAAK,OAAO;AACzD,kCAAoB,YAAY,KAAK,OAAO;AAC5C,mBAAK,UAAU;YACvB;AACI,YAAAS,uBAAsB,UAAU,qBAAqB,WAAY;AAC7D,kBAAI;AACJ,kBAAI;AACJ,uBAASC,SAAQ,GAAGA,SAAQ,KAAK,MAAM,WAAW,QAAQA,UAAS;AAC/D,oBAAI,UAAU,KAAK,MAAM,WAAWA,MAAK;AACzC,oBAAI,QAAQ,aAAa,SAAS;AAC9B,gCAAc;AACd;gBAChB;cACA;AACQ,kBAAI,CAAC;AACD;AACJ,uBAASA,SAAQ,GAAGA,SAAQ,YAAY,WAAW,QAAQA,UAAS;AAChE,oBAAI,UAAU,YAAY,WAAWA,MAAK;AAC1C,oBAAI,QAAQ,aAAa,MAAM;AAC3B,kCAAgB;AAChB;gBAChB;cACA;AACQ,kBAAI,CAAC;AACD;AACJ,uBAASA,SAAQ,GAAGA,SAAQ,cAAc,WAAW,QAAQA,UAAS;AAClE,oBAAI,UAAU,cAAc,WAAWA,MAAK;AAC5C,oBAAI,QAAQ,aAAa,MAAM;AAC3B,uBAAK,aAAa,KAAK,OAAO;gBAC9C;cACA;YACA;AACI,YAAAD,uBAAsB,UAAU,sBAAsB,WAAY;AAC9D,kBAAI,QAAQ;AACZ,mBAAK,aACA,QAAQ,SAAU,IAAI;AACvB,sBAAM,eAAe,KAAK;kBACtB;kBACA,QAAQ,GAAG,MAAM;gBACjC,CAAa;cACb,CAAS;AACD,mBAAK,eAAe,KAAK;gBACrB,IAAI,KAAK;gBACT,QAAQ,KAAK,MAAM,MAAM;cACrC,CAAS;YACT;AACI,YAAAA,uBAAsB,UAAU,wBAAwB,WAAY;AAChE,mBAAK,eACA,QAAQ,SAAU,KAAK;AACxB,oBAAI,GAAG,MAAM,QAAQ,IAAI;cACrC,CAAS;YACT;AACI,YAAAA,uBAAsB,UAAU,kBAAkB,WAAY;AAC1D,kBAAI,QAAQ;AACZ,mBAAK,aACA,QAAQ,SAAU,IAAI;AACvB,oBAAI,QAAQ,GAAG;AACf,oBAAI,mBAAmB,MAAM,eAAe,IAAI,KAAK;AACrD,oBAAI,OAAO,MAAM,QAAQ,wBAAwB,UAAU;AACvD,qCAAmB,KAAK,IAAI,kBAAkB,MAAM,QAAQ,mBAAmB;gBAC/F;AACY,sBAAM,YAAY,IAAI,kBAAkB,MAAM,KAAK;cAC/D,CAAS;YACT;AACI,YAAAA,uBAAsB,UAAU,iBAAiB,SAAU,IAAI,OAAO;AAClE,kBAAI,SAAS;AACb,uBAAS,KAAK,IAAI,QAAQ,KAAK,QAAQ,YAAY,SAAS;AAC5D,uBAAS,KAAK,IAAI,QAAQ,KAAK,QAAQ,YAAY,QAAS;AAC5D,qBAAO;YACf;AACI,YAAAA,uBAAsB,UAAU,oBAAoB,WAAY;AAC5D,kBAAI,QAAQ;AACZ,kBAAIE;AACJ,kBAAI,KAAK,wBAAwB;AAC7B,sBAAM;AACV,mBAAK,uBAAuB,KAAK,cAAc,cAAc,KAAK;AAClE,eAACA,MAAK,KAAK,aAAa,QAAQA,QAAO,SAAS,SAASA,IAAG,aAAa,KAAK,sBAAsB,KAAK,KAAK;AAC9G,mBAAK,qBAAqB,UAAU,IAAIX,oBAAmB,QAAQ,eAAe;AAClF,mBAAK,oBAAmB,EACnB,QAAQ,WAAY;AACrB,oBAAIW;AACJ,oBAAI,UAAU,MAAM,cAAc,cAAc,KAAK;AACrD,wBAAQ,UAAU,IAAIX,oBAAmB,QAAQ,MAAM;AACvD,iBAACW,MAAK,MAAM,0BAA0B,QAAQA,QAAO,SAAS,SAASA,IAAG,YAAY,OAAO;cACzG,CAAS;AACD,cAAAX,oBAAmB,OAAO,YACrB,QAAQ,SAAU,KAAK,QAAQ;AAChC,oBAAIW;AACJ,iBAACA,MAAK,MAAM,0BAA0B,QAAQA,QAAO,SAAS,SAASA,IAAG,iBAAiB,KAAK,MAAM,kBAAkB,KAAK;cACzI,CAAS;YACT;AACI,YAAAF,uBAAsB,UAAU,qBAAqB,WAAY;AAC7D,kBAAI,QAAQ;AACZ,kBAAIE,KAAI;AACR,kBAAI,KAAK,yBAAyB,MAAM;AACpC,gBAAAX,oBAAmB,OAAO,YACrB,QAAQ,SAAU,KAAK,QAAQ;AAChC,sBAAIW;AACJ,mBAACA,MAAK,MAAM,0BAA0B,QAAQA,QAAO,SAAS,SAASA,IAAG,oBAAoB,KAAK,MAAM,kBAAkB,KAAK;gBAChJ,CAAa;AACD,iBAAC,MAAMA,MAAK,KAAK,0BAA0B,QAAQA,QAAO,SAAS,SAASA,IAAG,mBAAmB,QAAQ,OAAO,SAAS,SAAS,GAAG,YAAY,KAAK,oBAAoB;cACvL;YACA;AACI,YAAAF,uBAAsB,UAAU,kBAAkB,WAAY;AAC1D,kBAAI,QAAQ,KAAK,wBAAwB,OACnC,OACA,KAAK,qBAAqB,iBAAiB,IAAI,OAAOT,oBAAmB,QAAQ,MAAM,CAAC;AAC9F,qBAAO,QACD,MAAM,UAAU,MAAM,KAAK,KAAK,EAAE,OAAO,SAAU,IAAI;AAAE,uBAAO,GAAG,aAAa;cAAM,CAAE,IACxF,IAAI,MAAK;YACvB;AACI,YAAAS,uBAAsB,UAAU,sBAAsB,WAAY;AAC9D,kBAAI,CAAC,KAAK,QAAQ;AACd;AACJ,kBAAI,UAAUA,uBAAsB,gBAAgB,KAAK,KAAK;AAC9D,kBAAI,QAAQ,WAAW;AACnB;AACJ,kBAAI,OAAO,KAAK,QAAQ,MAAM,IAAI,OAAO;AACzC,kBAAI,CAAC;AACD;AACJ,mBAAK,oBAAmB,EACnB,QAAQ,SAAU,IAAI;AACvB,oBAAI,QAAQ,KAAK,QAAQA,uBAAsB,iBAAiB,EAAE,CAAC;AACnE,oBAAI,OAAO,UAAU,aAAa;AAC9B,kBAAAA,uBAAsB,SAAS,IAAI,KAAK;gBACxD;cACA,CAAS;AACD,kBAAI,OAAO,KAAK,UAAU,aAAa;AACnC,gBAAAA,uBAAsB,SAAS,KAAK,OAAO,KAAK,KAAK;cACjE;YACA;AACI,YAAAA,uBAAsB,UAAU,kBAAkB,WAAY;AAC1D,kBAAIE;AACJ,kBAAI,eAAe,KAAK,QAAQ;AAChC,kBAAI,aAAa,KAAK,MAAM;AAC5B,kBAAI,aAAa,eAAe;AAChC,kBAAI,cAAc;AACd;AACJ,kBAAI,iBAAiB;AACrB,kBAAI,aAAa;AACjB,kBAAI,iBAAiB,CAAA;AACrB,mBAAK,aACA,QAAQ,SAAU,IAAI,KAAK;AAC5B,oBAAI,GAAG,aAAaX,oBAAmB,WAAW,aAAa,GAAG;AAC9D,sBAAI,SAAS;oBACT;oBACA,QAAQ,GAAG;kBAC/B;AACgB,iCAAe,KAAK,MAAM;AAC1B,oCAAkB,OAAO;gBACzC;cACA,CAAS;AACD,kBAAI,YAAY;AAChB,kBAAI,oBAAoB;AACxB,kBAAI;AACJ,qBAAQ,gBAAgB,eAAe,MAAK,GAAK;AAC7C,4BAAY,aAAa;AACzB,oCAAoB,cAAc;AAClC,oBAAI,aAAa,KAAK,MAAO,cAAc,SAAS,iBAAkB,UAAU;AAChF,6BAAa,KAAK,IAAI,YAAY,SAAS;AAC3C,oBAAI,WAAW,KAAK,YAAY,cAAc,IAAI,cAAc,SAAS,YAAY,OAAO,IAAI;AAChG,8BAAe,WAAW,cAAc;AACxC,oBAAI,cAAc;AACd;cAChB;AACQ,0BAAY,aAAa;AACzB,kBAAI,YAAY,GAAG;AACf,oBAAI,aAAaW,MAAK,eAAe,CAAC,OAAO,QAAQA,QAAO,SAAS,SAASA,IAAG,OAAO,qBAAqB,KAAK,aAAa,KAAK,aAAa,SAAS,CAAC;AAC3J,oBAAI,gBAAgB,SAAS;AAC7B,qBAAK,YAAY,UAAU,eAAe,MAAM,IAAI;cAChE;AACQ,cAAAF,uBAAsB,SAAS,KAAK,OAAO,YAAY;YAC/D;AACI,YAAAA,uBAAsB,UAAU,mBAAmB,WAAY;AAC3D,kBAAI,QAAQ;AACZ,kBAAI,aAAa,KAAK,MAAM;AAC5B,cAAAA,uBAAsB,SAAS,KAAK,sBAAsB,UAAU;AACpE,mBAAK,qBAAqB,MAAM,WAAW,GAAG,OAAO,YAAY,IAAI;AACrE,kBAAI,UAAU,KAAK,oBAAmB;AACtC,mBAAK,gBAAe,EACf,QAAQ,SAAU,IAAI,KAAK;AAC5B,oBAAI,UAAU,MAAM,QAAQ,iBAAiB,MAAM,QAAQ,MAAM,MAAM,OAAO;AAC9E,oBAAI,MAAM,QAAQ,QAAQ;AACtB,sBAAI,KAAK,QAAQ,GAAG;AACpB,sBAAI,OAAO,GAAG;AACd,0BAAQA,uBAAsB,UAAU,EAAE,EAAE;AAC5C,0BAAQA,uBAAsB,UAAU,MAAM,oBAAoB,EAAE;AACpE,qBAAG,MAAM,OAAO,GAAG,OAAO,MAAM,IAAI;AACpC,qBAAG,MAAM,SAAS,GAAG,OAAO,QAAQ,IAAI;gBACxD;cACA,CAAS;YACT;AACI,YAAAA,uBAAsB,UAAU,sBAAsB,WAAY;AAC9D,qBAAO,KAAK,aACP,OAAO,SAAU,IAAI,KAAK;AAC3B,uBAAO,GAAG,aAAaT,oBAAmB,WAAW,aAAa;cAC9E,CAAS;YACT;AACI,YAAAS,uBAAsB,UAAU,oBAAoB,SAAUG,QAAO;AACjE,mBAAK,gBAAe;AACpB,kBAAI,SAASA,SAAQA,OAAM,SAAS;AACpC,kBAAI,UAAU;AACV;AACJ,kBAAI,OAAO,aAAa,SAAS,CAAC,OAAO,UAAU,SAASZ,oBAAmB,QAAQ,MAAM;AACzF;AACJ,kBAAI,OAAOY,OAAM,WAAW,YAAYA,OAAM,WAAW;AACrD;AACJ,kBAAI,cAAc;AAClB,kBAAI,YAAY,KAAK,gBAAe,EAAG,QAAQ,WAAW;AAC1D,kBAAI,mBAAmB,KAAK,oBAAmB;AAC/C,kBAAI,aAAa,iBAAiB;AAC9B;AACJ,kBAAI,mBAAmB,oBAAI,KAAI,GAAI,QAAO;AAC1C,kBAAI,gBAAiB,kBAAkB,KAAK,kBAAmB,KAAK,QAAQ;AAC5E,kBAAI,SAAS,iBAAiB,SAAS;AACvC,kBAAI,cAAc,OAAO;AACzB,kBAAI,SAAS;gBACT,QAAQ;gBACR,OAAO,KAAK,MAAM;cAC9B;AACQ,kBAAI,YAAY,IAAIT,oBAAmB,QAAQ,WAAW;AAC1D,wBAAU,UAAU;gBAChB,GAAGM,uBAAsB,YAAYG,MAAK;gBAC1C;cACZ;AACQ,wBAAU,iBAAiB;AAC3B,wBAAU,YAAY;AACtB,mBAAK,eAAc;AACnB,mBAAK,eAAc;AACnB,mBAAK,MAAM,UAAU,IAAIZ,oBAAmB,QAAQ,aAAa;AACjE,mBAAK,QAAQ,UAAU,IAAIA,oBAAmB,QAAQ,aAAa;AACnE,0BAAY,UAAU,IAAIA,oBAAmB,QAAQ,cAAc;AACnE,qBAAO,UAAU,IAAIA,oBAAmB,QAAQ,cAAc;AAC9D,mBAAK,kBAAkB;AACvB,mBAAK,YAAY;AACjB,kBAAI,kBAAkB,IAAI,YAAYA,oBAAmB,OAAO,kBAAkB;gBAC9E,QAAQ;kBACJ;kBACA;kBACA,OAAO,KAAK;kBACZ,YAAY,KAAK,MAAM;gBACvC;cACA,CAAS;AACD,mBAAK,MAAM,cAAc,eAAe;AACxC,cAAAY,OAAM,eAAc;YAC5B;AACI,YAAAH,uBAAsB,UAAU,oBAAoB,SAAUG,QAAO;AACjE,kBAAI,CAAC,KAAK,aAAa,CAACA;AACpB;AACJ,kBAAI,cAAcH,uBAAsB,YAAYG,MAAK,KAAK,MAAM,KAAK,UAAU,QAAQ,KAAK;AAChG,kBAAI,eAAe,GAAG;AAClB;cACZ;AACQ,kBAAI,aAAa,KAAK,UAAU,eAAe,QAAQ;AACvD,kBAAI,cAAc,KAAK,eAAe,KAAK,UAAU,QAAQ,KAAK,UAAU,eAAe,SAAS,UAAU;AAC9G,cAAAH,uBAAsB,SAAS,KAAK,OAAO,UAAU;AACrD,cAAAA,uBAAsB,SAAS,KAAK,UAAU,QAAQ,WAAW;AACjE,mBAAK,UAAU,YAAY;gBACvB,QAAQ;gBACR,OAAO;cACnB;AACQ,kBAAI,kBAAkB,IAAI,YAAYT,oBAAmB,OAAO,aAAa;gBACzE,QAAQ;kBACJ,QAAQ,KAAK,UAAU;kBACvB;kBACA,OAAO,KAAK;kBACZ;gBAChB;cACA,CAAS;AACD,mBAAK,MAAM,cAAc,eAAe;YAChD;AACI,YAAAS,uBAAsB,UAAU,kBAAkB,WAAY;AAC1D,mBAAK,eAAc;AACnB,kBAAI,CAAC,KAAK;AACN;AACJ,kBAAI,KAAK,UAAU,QAAQ,eAAe;AACtC,qBAAK,kBAAiB;cAClC;AACQ,mBAAK,MAAM,UAAU,OAAOT,oBAAmB,QAAQ,aAAa;AACpE,mBAAK,QAAQ,UAAU,OAAOA,oBAAmB,QAAQ,aAAa;AACtE,mBAAK,UAAU,YAAY,UAAU,OAAOA,oBAAmB,QAAQ,cAAc;AACrF,mBAAK,UAAU,OAAO,UAAU,OAAOA,oBAAmB,QAAQ,cAAc;AAChF,mBAAK,gBAAe;AACpB,mBAAK,iBAAgB;AACrB,mBAAK,oBAAmB;AACxB,mBAAK,iBAAgB;AACrB,kBAAI,SAAS,KAAK,UAAU,aAAa,KAAK,UAAU;AACxD,kBAAI,kBAAkB,IAAI,YAAYA,oBAAmB,OAAO,iBAAiB;gBAC7E,QAAQ;kBACJ,QAAQ,KAAK,UAAU;kBACvB,aAAa,OAAO;kBACpB,OAAO,KAAK;kBACZ,YAAY,OAAO;gBACnC;cACA,CAAS;AACD,mBAAK,MAAM,cAAc,eAAe;AACxC,mBAAK,YAAY;YACzB;AACI,YAAAS,uBAAsB,UAAU,oBAAoB,WAAY;AAC5D,kBAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UAAU;AACnC;AACJ,kBAAI,SAAS,KAAK,UAAU;AAC5B,kBAAI,WAAW,KAAK,aAAa,QAAQ,MAAM;AAC/C,kBAAI,WAAW;AACf,kBAAI,gBAAgB,CAAA;AACpB,mBAAK,aACA,QAAQ,SAAU,IAAI,KAAK;AAC5B,oBAAI,CAAC,GAAG,aAAaT,oBAAmB,WAAW,aAAa,GAAG;AAC/D,gCAAc,KAAK,GAAG;gBACtC;cACA,CAAS;AACD,kBAAI,OAAO,KAAK,cAAc,cAAc,MAAM;AAClD,mBAAK,MAAM,WAAW;AACtB,mBAAK,MAAM,OAAO;AAClB,mBAAK,MAAM,MAAM;AACjB,mBAAK,MAAM,aAAa;AACxB,mBAAK,cAAc,KAAK,YAAY,IAAI;AACxC,kBAAI,OAAO,KAAK,MAAM,iBAAiB,IAAI;AAC3C,uBAAS,WAAW,GAAG,WAAW,KAAK,QAAQ,YAAY;AACvD,oBAAI,UAAU,KAAK,QAAQ;AAC3B,oBAAI,QAAQ,QAAQ,iBAAiB,QAAQ;AAC7C,oBAAI,eAAe;AACnB,yBAAS,YAAY,GAAG,YAAY,MAAM,QAAQ,aAAa;AAC3D,sBAAI,OAAO,MAAM,SAAS;AAC1B,sBAAI,UAAU;AACd,sBAAI,KAAK,aAAa,SAAS,GAAG;AAC9B,wBAAI,gBAAgB,KAAK,aAAa,SAAS,KAAK;AACpD,wBAAI,SAAS,SAAS,aAAa;AACnC,wBAAI,CAAC,MAAM,MAAM,GAAG;AAChB,gCAAU;oBAClC,OACyB;AACD,gCAAU;oBAClC;kBACA;AACgB,sBAAI,cAAc,QAAQ,SAAS,MAAM,MAClC,YAAY,KACZ,iBAAiB,UAAU;AAC9B,+BAAW,KAAK,IAAI,UAAUS,uBAAsB,aAAa,MAAM,IAAI,CAAC;AAC5E;kBACpB;AACgB,kCAAgB;gBAChC;cACA;AACQ,mBAAK,cAAc,KAAK,YAAY,IAAI;AACxC,kBAAI,aAAa,WAAW,OAAO;AACnC,kBAAI,eAAe,GAAG;AAClB;cACZ;AACQ,kBAAI,aAAa,KAAK,UAAU,eAAe,QAAQ;AACvD,kBAAI,cAAc,KAAK,eAAe,KAAK,UAAU,QAAQ,KAAK,UAAU,eAAe,SAAS,UAAU;AAC9G,cAAAA,uBAAsB,SAAS,KAAK,OAAO,UAAU;AACrD,cAAAA,uBAAsB,SAAS,KAAK,UAAU,QAAQ,WAAW;AACjE,mBAAK,UAAU,YAAY;gBACvB,QAAQ;gBACR,OAAO;cACnB;AACQ,kBAAI,kBAAkB,IAAI,YAAYT,oBAAmB,OAAO,aAAa;gBACzE,QAAQ;kBACJ,QAAQ,KAAK,UAAU;kBACvB;kBACA,OAAO,KAAK;kBACZ;gBAChB;cACA,CAAS;AACD,mBAAK,MAAM,cAAc,eAAe;AACxC,mBAAK,gBAAe;AACpB,mBAAK,iBAAgB;AACrB,mBAAK,iBAAgB;YAC7B;AACI,YAAAS,uBAAsB,UAAU,iBAAiB,WAAY;AACzD,kBAAI,QAAQ;AACZ,cAAAT,oBAAmB,OAAO,YACrB,QAAQ,SAAU,KAAK,QAAQ;AAChC,sBAAM,cAAc,iBAAiB,KAAK,MAAM,kBAAkB,KAAK;cACnF,CAAS;AACD,cAAAA,oBAAmB,OAAO,UACrB,QAAQ,SAAU,KAAK,QAAQ;AAChC,sBAAM,cAAc,iBAAiB,KAAK,MAAM,gBAAgB,KAAK;cACjF,CAAS;YACT;AACI,YAAAS,uBAAsB,UAAU,iBAAiB,WAAY;AACzD,kBAAI,QAAQ;AACZ,cAAAT,oBAAmB,OAAO,YACrB,QAAQ,SAAU,KAAK,QAAQ;AAChC,sBAAM,cAAc,oBAAoB,KAAK,MAAM,kBAAkB,KAAK;cACtF,CAAS;AACD,cAAAA,oBAAmB,OAAO,UACrB,QAAQ,SAAU,KAAK,QAAQ;AAChC,sBAAM,cAAc,oBAAoB,KAAK,MAAM,gBAAgB,KAAK;cACpF,CAAS;YACT;AACI,YAAAS,uBAAsB,UAAU,sBAAsB,WAAY;AAC9D,kBAAI,KAAK,WAAW;AAChB;AACJ,kBAAI,WAAW,KAAK,QAAQ,MAAM;AAClC,mBAAK,QAAQ,MAAM,YAAY;AAC/B,mBAAK,QAAQ,MAAM,YAAY;YACvC;AACI,YAAAA,uBAAsB,UAAU,mBAAmB,WAAY;AAC3D,kBAAI,CAAC,KAAK,QAAQ;AACd;AACJ,kBAAI,UAAUA,uBAAsB,gBAAgB,KAAK,KAAK;AAC9D,kBAAI,QAAQ,WAAW;AACnB;AACJ,kBAAI,OAAO;gBACP,OAAO,KAAK,MAAM;gBAClB,SAAS,CAAA;cACrB;AACQ,mBAAK,oBAAmB,EACnB,QAAQ,SAAU,IAAI;AACvB,qBAAK,QAAQA,uBAAsB,iBAAiB,EAAE,CAAC,IAAI,GAAG;cAC1E,CAAS;AACD,mBAAK,QAAQ,MAAM,IAAI,SAAS,IAAI;YAC5C;AACI,YAAAA,uBAAsB,UAAU,0BAA0B,WAAY;AAClE,kBAAI,QAAQ;AACZ,kBAAI,CAAC,KAAK,kBAAkB;AACxB,qBAAK,mBAAmBA,uBAAsB,SAAS,SAAU,KAAK;AAClE,wBAAM,kBAAkB,GAAG;gBAC3C,GAAe,KAAK,IAAI;cACxB;AACQ,kBAAI,CAAC,KAAK,kBAAkB;AACxB,qBAAK,mBAAmBA,uBAAsB,SAAS,SAAU,KAAK;AAClE,wBAAM,kBAAkB,GAAG;gBAC3C,GAAe,GAAG,KAAK;cACvB;AACQ,kBAAI,CAAC,KAAK,gBAAgB;AACtB,qBAAK,iBAAiBA,uBAAsB,SAAS,SAAU,KAAK;AAChE,wBAAM,gBAAe;gBACrC,GAAe,KAAK,IAAI;cACxB;YACA;AACI,YAAAA,uBAAsB,UAAU,8BAA8B,WAAY;AACtE,kBAAI,MAAM,KAAK,cAAc;AAC7B,kBAAIA,uBAAsB;AACtB;AACJ,cAAAA,uBAAsB,yBAAyBA,uBAAsB,SAASA,uBAAsB,gBAAgB,IAAI,KAAK;AAC7H,cAAAT,oBAAmB,OAAO,aACrB,QAAQ,SAAU,KAAK,KAAK;AAC7B,wBAAQ,QAAQ,QAAQ,SAAS,SAAS,IAAI,iBAAiB,KAAKS,uBAAsB,wBAAwB,KAAK;cACnI,CAAS;YACT;AACI,YAAAA,uBAAsB,UAAU,qBAAqB,WAAY;AAC7D,mBAAK,gBAAe;AACpB,mBAAK,iBAAgB;AACrB,mBAAK,iBAAgB;YAC7B;AACI,YAAAA,uBAAsB,UAAU,cAAc,SAAU,MAAM,gBAAgB,oBAAoB,iBAAiB;AAC/G,kBAAI,oBAAoB,KAAK;AAC7B,kBAAI,cAAc,qBACZ,iBACA,KAAK,eAAe,MAAM,cAAc;AAC9C,cAAAA,uBAAsB,SAAS,MAAM,WAAW;AAChD,kBAAI,CAAC,iBAAiB;AAClB,oBAAI,aAAa,cAAc;AAC/B,oBAAI,aAAa,KAAK,MAAM,cAAc;AAC1C,gBAAAA,uBAAsB,SAAS,KAAK,OAAO,UAAU;cACjE;AACQ,qBAAO;YACf;AACI,YAAAA,uBAAsB,iBAAiB,SAAUG,QAAO;AACpD,kBAAI,MAAMA,SAAQA,OAAM,SAAS;AACjC,kBAAI,OAAO;AACP;AACJ,kBAAI,SAAS,IAAI,SAAS,iBAAiB,IAAI,OAAOZ,oBAAmB,QAAQ,KAAK,CAAC;AACvF,uBAASU,SAAQ,GAAGA,SAAQ,OAAO,QAAQA,UAAS;AAChD,oBAAI,QAAQ,OAAOA,MAAK;AACxB,oBAAI,OAAO,MAAMV,oBAAmB,gBAAgB,MAAM;AACtD;AACJ,sBAAMA,oBAAmB,gBAAgB,EAAE,mBAAkB;cACzE;YACA;AACI,YAAAS,uBAAsB,mBAAmB,SAAU,IAAI;AACnD,kBAAI,YAAY,GAAG,aAAaT,oBAAmB,WAAW,aAAa,KAAK,IAC3E,KAAI,EACJ,QAAQ,OAAO,GAAG;AACvB,qBAAO;YACf;AACI,YAAAS,uBAAsB,kBAAkB,SAAU,OAAO;AACrD,kBAAI,WAAW,MAAM,aAAaT,oBAAmB,WAAW,kBAAkB,KAAK,IAClF,KAAI,EACJ,QAAQ,OAAO,GAAG;AACvB,qBAAO,QAAQ,SACT,OAAO,OAAO,OAAO,IACrB;YACd;AACI,YAAAS,uBAAsB,WAAW,SAAU,SAAS,OAAO;AACvD,kBAAI,WAAW,MAAM,QAAQ,CAAC;AAC9B,yBAAW,QAAQ,IAAI,WAAW;AAClC,sBAAQ,MAAM,QAAQ,GAAG,OAAO,UAAU,IAAI;YACtD;AACI,YAAAA,uBAAsB,gBAAgB,WAAY;AAC9C,qBAAOA,uBAAsB;YACrC;AACI,YAAAA,uBAAsB,cAAc,SAAUG,QAAO;AACjD,kBAAIA,OAAM,KAAK,QAAQ,OAAO,MAAM,GAAG;AACnC,oBAAI,SAASA;AACb,oBAAI,OAAO,WAAW,OAAO,QAAQ,QAAQ;AACzC,yBAAO,OAAO,QAAQ,CAAC,EAAE;gBACzC;AACY,oBAAI,OAAO,kBAAkB,OAAO,eAAe,QAAQ;AACvD,yBAAO,OAAO,eAAe,CAAC,EAAE;gBAChD;cACA;AACQ,qBAAOA,OAAM;YACrB;AACI,YAAAH,uBAAsB,eAAe,SAAU,gBAAgB,oBAAoB;AAC/E,kBAAIE,KAAI;AACR,kBAAI,CAAC,kBAAkB,CAAC;AACpB,uBAAO;AACX,kBAAI,SAASA,MAAK,eAAe,iBAAiB,QAAQA,QAAO,SAAS,SAASA,IAAG,KAAI,EAAG,QAAQ,OAAO,QAAQ,KAAK;AACzH,kBAAI,UAAU,KAAK,eAAe,cAAc,iBAAiB,QAAQ,OAAO,SAAS,SAAS,GAAG,iBAAiB,cAAc;AACpI,eAAC,cAAc,YAAY,cAAc,WAAW,UAAU,WAAW,EACpE,QAAQ,SAAU,MAAM;AACzB,mCAAmB,MAAM,IAAI,IAAI,OAAO,IAAI;cACxD,CAAS;AACD,iCAAmB,YAAY;AAC/B,qBAAO,mBAAmB;YAClC;AACI,YAAAF,uBAAsB,YAAY,SAAU,IAAI;AAC5C,kBAAI,CAAC;AACD,uBAAO,EAAE,KAAK,GAAG,MAAM,EAAC;AAC5B,kBAAI,OAAO,GAAG,sBAAqB;AACnC,qBAAO;gBACH,KAAK,KAAK,MAAM,GAAG,cAAc,KAAK;gBACtC,MAAM,KAAK,OAAO,GAAG,cAAc,KAAK;cACpD;YACA;AACI,YAAAA,uBAAsB,iBAAiB;AACvC,YAAAA,uBAAsB,yBAAyB;AAC/C,YAAAA,uBAAsB,WAAW,SAAU,MAAM,MAAM,WAAW;AAC9D,kBAAI,UAAU;AACd,kBAAI,YAAY,WAAY;AACxB,oBAAI,OAAO,CAAA;AACX,yBAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM;AAC1C,uBAAK,EAAE,IAAI,UAAU,EAAE;gBACvC;AACY,oBAAI,QAAQ,WAAY;AACpB,4BAAU;AACV,sBAAI,CAAC,WAAW;AACZ,yBAAK,MAAM,QAAQ,IAAI;kBAC3C;gBACA;AACY,oBAAI,UAAU,aAAa,CAAC;AAC5B,oBAAI,SAAS;AACT,+BAAa,OAAO;gBACpC;AACY,0BAAU,WAAW,OAAO,IAAI;AAChC,oBAAI,SAAS;AACT,uBAAK,MAAM,QAAQ,IAAI;gBACvC;cACA;AACQ,qBAAO;YACf;AACI,mBAAOA;UACX,GAAC;;;;;;;;;;;;;;;;;;;;;ACvpBM,YACII,KAA2B;AAAA,iBAAAC,GAAAC,IAAAD,IAAA;AAAA,WAAA,QAAAA,MAAAA,KAAAC,GAAA,YAAAD,KAAAC,GAAA;AAAA,mBAAAC,KAAA,GAAAC,KAAA,IAAA,MAAAH,EAAA,GAAAE,KAAAF,IAAAE,KAAA,CAAAC,GAAAD,EAAA,IAAAD,GAAAC,EAAA;AAAA,iBAAAC;QAAA;AAAA,iBAAAD,GAAAD,IAAA;AAAA,kBAAA,SAAAA,IAAA;AAAA,gBAAA,MAAA,QAAAA,EAAA,EAAA,QAAAD,GAAAC,EAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAA;AAAA,gBAAA,eAAA,OAAA,UAAA,QAAAA,GAAA,OAAA,QAAA,KAAA,QAAAA,GAAA,YAAA,EAAA,QAAA,MAAA,KAAAA,EAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAAC,IAAA;AAAA,gBAAA,CAAAD,GAAA;AAAA,gBAAA,YAAA,OAAAA,GAAA,QAAAD,GAAAC,IAAAC,EAAA;AAAA,gBAAAC,KAAA,OAAA,UAAA,SAAA,KAAAF,EAAA,EAAA,MAAA,GAAA,EAAA;AAAA,yBAAAE,MAAAF,GAAA,gBAAAE,KAAAF,GAAA,YAAA;AAAA,gBAAA,UAAAE,MAAA,UAAAA,GAAA,QAAA,MAAA,KAAAA,EAAA;AAAA,gBAAA,gBAAAA,MAAA,2CAAA,KAAAA,EAAA,EAAA,QAAAH,GAAAC,IAAAC,EAAA;UAAA,GAAAD,EAAA,MAAA,WAAA;AAAA,kBAAA,IAAA,UAAA,uIAAA;UAAA,GAAA;QAAA;ACC/B,YAAMG,KAAS,EAClBC,WAAAA,WAAqBC;AAAAA,cAAAA;AAAP,iBAA0B,UAAnBA,KAAAA,OAAOC,iBAAAA,WAAPD,MAAAA;QAA2B,GAChDE,KAAAA,WAAI;AAAA,mBAAAC,KAAAC,UAAAC,QAAGC,KAAH,IAAAC,MAAAJ,EAAAA,GAAAK,KAAA,GAAAA,KAAAL,IAAAK,KAAGF,CAAAA,GAAHE,EAAAJ,IAAAA,UAAAI,EAAAA;AAA8BC,cAAAA;AAApBC,eAAKX,UAAAA,MAAeU,KAAAA,SAAQP,IAARO,MAAAA,IAAAA,CAAY,WAAZA,EAAAA,OAAyBE,GAAGL,EAAM,CAAA,CAAA;QAAA,GACpEM,MAAAA,WAAK;AAAA,mBAAAT,KAAAC,UAAAC,QAAGC,KAAH,IAAAC,MAAAJ,EAAAK,GAAAA,KAAA,GAAAA,KAAAL,IAAAK,KAAGF,CAAAA,GAAHE,EAAAJ,IAAAA,UAAAI,EAAAA;AAA+BC,cAAAA;AAApBC,eAAKX,UAAeU,MAAAA,KAAAA,SAAQG,KAARH,MAAAA,IAAAA,CAAa,WAAA,EAAbA,OAA0BE,GAAGL,EAAAA,CAAAA,CAAAA;QAAM,EAAA,GAS9DO,KAAU,SAACC,IAAIC,IAAIC,IAAeC,IAAAA;AAU3C,iBARAH,KAAK,KAAGA,IACRC,KAAK,KAAGA,IAEJE,OACAH,KAAKA,GAAGG,KACRF,GAAAA,KAAKA,GAAGE,KAGLD,IAAAA,KACDF,MAAMC,KACND,GAAGI,YAAAA,KAAiBH,GAAGG,YAAAA;QACjC,GAIaC,KAAuB,SAACC,IAAYC,IAAAA;AAAkBD,iBAAAA,MAAcb,MAAMe,QAAQF,EAAAA,KAAeA,GAAWG,KAAIC,SAAAA,IAAKC;AAAAA,mBAAAA,GAAKD,IAAGH,EAAAA;UAAAA,EAAe;QAAA;AAElJ,iBAASI,GAAKC,IAAKC,IAAAA;AACtB,cAAiBC,IAAbC,KAAS,CAAID;AACjB,eAAKA,MAAKF,GACFC,CAAAA,GAAMG,QAAQF,EAAK,IAAA,MACnBC,GAAOD,EAAKF,IAAAA,GAAIE,EAAAA;AACxB,iBAAOC;QACX;AAgBO,iBAASE,GAAWC,IAAAA;AAIvB,iBAHa,IAAIC,YACGC,gBAAgBF,GAAEf,KAAQ,GAAA,WAAA,EAElCkB,KAAKC;QACrB;AAwBO,iBAASC,GAAkBC,IAAKC,IAEnC;AAAA,eADAA,KAASA,MAAU,YACXD,KAAMA,GAAIC,KAAS,SAAA,IAAA,KACH,KAAhBD,GAAIE,SACJ,QAAOF;QACnB;AAMO,iBAASG,GAAYT,IACxB;AAAA,iBAAmB,YAALA,OAAAA,KAAgBA,GACzBU,QAAQ,MAAM,OAAA,EACdA,QAAQ,MAAM,MAAA,EACdA,QAAQ,MAAM,MAAA,EACdA,QAAQ,MAAM,QAAA,EACdA,QAAQ,QAAQ,QAAA,IACfV;QACV;AAKO,iBAASW,GAASjB,IAAAA;AACrB,cAAIkB,KAAOC,OAAOC,UAAUC,SAASC,KAAKtB,EAAAA,EAAKuB,MAAM,GAAK,EAAA,CAAA,EAAGC,MAAM,GAAI,EAAA;AACvE,iBAAOxB,OAAQmB,OAAOnB,EAAAA,KAAgB,WAARkB,MAA2B,cAARA,MAA8B,YAARA,MAA4B,wBAARA;QAC/F;AAMO,iBAASO,GAAQC,IAAGC,IAAIC,IAAAA;AAAAA,cAAAA,IAAAA;AAO3B,mBAASC,GAAKC,IAAEC,IAEZ;AAAA,qBAASC,MAAOD,GACZ,KAAIA,GAAEE,eAAeD,EAAAA,GAAM;AACvB,kBAAIf,GAASc,GAAEC,EAAAA,CAAAA,GAAO;AACbf,gBAAAA,GAASa,GAAEE,EAAAA,CAAAA,IAGZH,GAAKC,GAAEE,EAAAA,GAAMD,GAAEC,EAFfF,CAAAA,IAAAA,GAAEE,EAAAA,IAAOb,OAAOe,OAAO,CAAA,GAAIH,GAAEC,EAAAA,CAAAA;AAIjC;cACJ;AAEA,kBAAInD,MAAMe,QAAQmC,GAAEC,EAAO,CAAA,GAAA;AACvBF,gBAAAA,GAAEE,EAAAA,IAAOb,OAAOe,OAAO,CAAA,GAAIH,GAAEC,EAAAA,CAAAA;AAC7B;cACJ;AAEAF,cAAAA,GAAEE,EAAAA,IAAOD,GAAEC,EAAAA;YACf;UACR;AAEA,iBAAA7D,KA5BMuD,KAAAA,SAAAA,KAAaP,WAAAA,eAAAA,OAAAA,UAAAA,GAAAA,OAAAA,WAAAA,IAAAA,GAAAA,OAAAA,WAAAA,EAAAA,EAAAA,IAAAA,cAAAA,QAAUO,KAAI,CAAA,IAEjCG,GAAKH,IAAGC,EAAAA,GACJC,MACAC,GAAKH,IAAGE,EAAAA,GAwBLF;QACX;AAMO,iBAASS,KACZ;AAAA,cAAMC,KAAS,CACXC,GAAAA,KAAc,CAAA,GAEbC,KAAA,MAAAC,KAAAA,OAAAC,KAAAA;AAAAC,cAAL;AAAA,qBAAKC,IAAAC,KAAWjE,UAAXkE,OAAAC,QAAAA,EAAAA,GAAAA,EAAAP,MAAAI,KAAAC,GAAAA,KAAAA,GAAAA,OAAAL,KAAAA,MAAuB;AAAvB,kBAAIQ,KAAJJ,GAAAK,OACIC,KAAAA,MAAAC,KAAA,OAAAC,KAAAA;AAAAT,kBAAAA;AAAL,yBAAKU,IAAAC,KAAYN,GAAZF,OAAAC,QAAAA,EAAAA,GAAAA,EAAAG,MAAAG,KAAAC,GAAAA,KAAAA,GAAAA,OAAAJ,KAAAA,MAAkB;AAAlB,sBAAIK,KAAJF,GAAAJ;AAEG9B,kBAAAA,GAASoC,EACJhB,IAAAA,GAAYgB,GAAKN,KAClBX,MAAAA,GAAOkB,KAAKD,EACZhB,GAAAA,GAAYgB,GAAKN,KAAS,IAAA,KAKxBX,GAAOmB,SAASF,EAAAA,KACtBjB,GAAOkB,KAAKD,EAAAA;gBACpB;cAAA,SAAApF,IAZKgF;AAAAA,gBAAAA,KAAAA,MAAAC,KAAAM;cAAAA,UAAAA;AAAAA,oBAAAA;AAAAR,kBAAAA,MAAA,QAAAI,GAAAK,UAAAL,GAAAK,OAAAA;gBAAAA,UAAAA;AAAA,sBAAAR,GAAA,OAAAC;gBAAAA;cAAAA;YAaT;UAAA,SAAAjF,IAAA;AAdKsE,YAAAA,KAAA,MAAAC,KAAAgB;UAAAA,UAAAA;AAAAA,gBAAAA;AAAAlB,cAAAA,MAAA,QAAAK,GAAAc,UAAAd,GAAAc,OAAAA;YAAAA,UAAAA;AAAA,kBAAAlB,GAAA,OAAAC;YAAAA;UAAAA;AAgBL,iBAAOJ;QACX;AAMO,iBAASsB,GAAUpD,IAAAA;AAItB,iBAAKqD,OAAOvC,UAAUwC,YAGJ,YAAA,OAAPtD,KACAA,GAAEsD,UAAU,KAAA,EAAO5C,QAAQ,oBAAoB,EAAA,IAAA,SAH/CV;QAIf;AAgBO,YAAIuD,KAAyB,WAAA;AAAA,iBAAM,6BAA6BC,KAAKC,UAAUC,SAAAA;QAAU;AAEzF,iBAASC,KACZ;AAAA,kBAAQ,4BAAsB,OAAMjD,QAAQ,WAAUkD,SAAAA,IAAAA;AAClD,oBAACA,KAAIC,OAAOC,gBAAgB,IAAIC,WAAW,CAAI,CAAA,EAAA,CAAA,IAAK,MAAMH,KAAI,GAAG7C,SAAS,EAAA;UAAA,EAElF;QAAA;AAEO,iBAASiD,GAAUC,IAAAA;AAERA,cAAAA,IADRC,KAAUC,GAAkCnD,KAAKtC,MAAMuF,EACvDG,GAAAA,KAAQH,QAAAA,MAAAA,UAAAA,KAAAA,GAAMI,cAAAA,WAANJ,KAAAA,SAAAA,GAAiBK,SAAS5F,KAAK6F,SAASC,WAAWC,GACjE;AAAA,iBAAOP,MAAWE;QACtB;AAEO,iBAASM,GAAgBT,IAAAA;AAC5B,iBAAOE,GAAkCnD,KAAKtC,MAAMuF,EAASA,MAAAA,QAAAA,KAAAA,SAAAA,GAAMU,QAAQjG,KAAK6F,SAASC,WAAWI,WAAAA;QACxG;AAEA,iBAAST,GAAkCF,IAAAA;AACfA,cAAAA;AACxB,kBADwBA,QAAAA,MAAAA,UAAAA,KAAAA,GAAMU,YAAAA,WAANV,KAAAA,SAAAA,GAAAA,KAAAA,IAAgBvF,KAAK6F,SAASC,WAAWK,iBAAAA,OACpCnG,KAAKoG,IAAIC;QAC1C;AAqCO,iBAASC,GAAcC,IAASC,IACnC;AAAA,cAAIC,KAAYnH,OAAOoH,aAAAA;AAWvB,iBAVAF,KAAQA,MAASC,GAAUE,WAAW,CAAA,GAEhB,YAAA,OAAXJ,OACPA,KAAUK,SAASC,eAAeN,EAAAA,IAElCC,OACAA,GAAMM,eAAAA,GACNN,GAAMO,WAAWR,EAAAA,IAGdA;QACX;AAOO,iBAASS,GAAcC,IAAQC,IAAMC,IAAAA;AACxC,iBAAKF,MAKDC,OACAD,GAAOG,kBAAkBD,KACnBD,KACAzE,GAAO,CAAA,GAAIwE,GAAOG,mBAAmB,CAAIF,GAAAA,EAE5CD,IAAAA,GAAOG,oBATVhI,GAAOc,KAAK,6BAA4B,EAAC+G,QAAAA,IAAQC,MAAAA,GAC1CA,CAAAA,GAAAA;QASf;AAEO,iBAASG,GAAqB9B,IAAAA;AACjC,cAAKA,MAASA,GAAK+B,YAAnB;AAEA,gBAAIC,KAAchC,IACdiC,KAAMlI,OAAOoH,aAAAA,GACbF,KAAQgB,GAAIb,WAAW,CAEvBa;AAAAA,YAAAA,GAAIC,eACJjB,GAAMkB,cAAcH,EACpBf,GAAAA,GAAMmB,SAAAA,IAENH,GAAAA,GAAII,gBAAAA,GACJJ,GAAIK,SAASrB,EAAAA;UAXe;QAapC;AAQO,iBAASsB,GAAoBC,IAAMC,IAAAA;AACtCD,UAAAA,GAAKE,SAAQlC,SAAAA,IACT;AAAA,gBAAIiB,GAAcjB,GAAImC,eAAqBnC,KAAAA,CAAAA,GAAImC,iBAAkB;AAC7D,kBAAIC,KAAWvB,SAASC,eDlUP,QAAA;ACmUjBd,cAAAA,GAAIqC,OAAOD,EAAAA,GACXH,MAAmBX,GAAoBc,EAAAA;YAC3C;UACJ,EAAA;QACJ;ACvUe,YAAAE,KAAA,EACXC,YAAsB,KACtBC,SAAsB,MACtBC,aAAsB,SACtBC,SAAsBC,IACtBC,GAAAA,WAAsB,CAAC,GACvBC,cAAAA,MACAC,UAAsB,CAAC,QAAQ,OAAO,OAAA,GACtCC,mBAAAA,MACAC,YAAAA,OACAC,WAAsB,CAAA,GACtBC,WAAsB,CACtBC,GAAAA,kBAAAA,OACAC,WAAAA,MACAC,WAAAA,MACAC,oBAAsB,MACtBC,iBAAAA,OACAC,mBAAAA,MACAC,qBAAsB,cACtBC,qBAAsB,CAAC,MAAM,IAAA,GAC7BC,WAAsB,MACtBC,aAAAA,OACAC,aAAAA,MAEAC,UAAsB,EAClBC,QAAc,GACdC,aAAc,KAAA,GAElBC,cAAsB,WAAK;QAAA,GAC3BzJ,MAAAA,MACA0J,MAAM,EACFC,eAAe,MAAA,GAGnBC,SAAS,EACLC,gBAAkB,OAAA,GAGtBC,cAAc,EACVC,SAAAA,MACAC,UAAAA,OACAC,QAAQ,MAAA,GAGZ1E,YAAY,EACR2E,WAAuB,UACvBN,SAAuB,eACvBO,YAAuB,kBACvBC,OAAuB,iBACvBC,OAAuB,iBACvBC,gBAAuB,kBACvBC,YAAuB,mBACvBC,eAAuB,sBACvBC,cAAuB,mBACvBC,YAAuB,sBACvBC,WAAuB,kBACvBC,OAAuB,iBACvBC,cAAuB,0BACvBC,UAAuB,oBACvBC,iBAAuB,6BACvBC,gBAAuB,4BACvBC,gBAAuB,4BACvBC,cAAuB,0BACvBC,oBAAuB,kCACvBC,oBAAuB,kCACvBC,sBAAuB,oCACvBC,gBAAuB,6BACvB9F,KAAuB,eACvB+F,SAAuB,oBACvBC,MAAuB,0BACvBC,YAAuB,wBACvBC,YAAuB,yBACvBC,UAAuB,sBACvBC,SAAuB,oBAI3Bd,GAAAA,UAAU,EACNe,WAAqB,IACrB9B,SAAqB,GACrB+B,UAAqB,IACrBC,YAAqB,CAAC,SAAS,UAC/BC,GAAAA,aAAAA,MACAjM,eAAqB,OACrBkM,gBAAqB,MACrBC,qBAAqB,OACrB1K,YAAAA,MACA2K,gBAAAA,MACAC,eAAqB,MACrBC,eAAAA,MACAC,UAAqB,OACrBC,cAAqB,KAAA,GAGzBC,OAAO,EACHC,iBAAiB,WAAA;AAAMC,iBAAAA,QAAQC,QAAAA;QAAAA,GAC/BC,aAAa,WAAMF;AAAAA,iBAAAA,QAAQC,QAAAA;QAAAA,GAC3BE,iBAAiB,WAAA;AAAMH,iBAAAA,QAAQC,QAAAA;QAAAA,GAC/BG,eAAe,WAAA;AAAMJ,iBAAAA,QAAQC,QAAAA;QAAAA,EAAAA,EAAAA;AAAAA,iBAAAA,GAAAA,IAAAA,IAAAA,IAAAA;AAAAA,iBAAAA,MAAAA,KAAAA,OAAAA,eAAAA,IAAAA,IAAAA,EAAAA,OAAAA,IAAAA,YAAAA,MAAAA,cAAAA,MAAAA,UAAAA,KAAAA,CAAAA,IAAAA,GAAAA,EAAAA,IAAAA,IAAAA;QAAAA;AAAAA,iBAAAA,GAAAA,IAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,UAAAA,QAAAA,MAAAA;AAAAA,gBAAAA,KAAAA,QAAAA,UAAAA,EAAAA,IAAAA,UAAAA,EAAAA,IAAAA,CAAAA,GAAAA,KAAAA,OAAAA,KAAAA,EAAAA;AAAAA,0BAAAA,OAAAA,OAAAA,0BAAAA,KAAAA,GAAAA,OAAAA,OAAAA,sBAAAA,EAAAA,EAAAA,QAAAA,SAAAA,IAAAA;AAAAA,qBAAAA,OAAAA,yBAAAA,IAAAA,EAAAA,EAAAA;YAAAA,EAAAA,CAAAA,IAAAA,GAAAA,SAAAA,SAAAA,IAAAA;AAAAA,cAAAA,GAAAA,IAAAA,IAAAA,GAAAA,EAAAA,CAAAA;YAAAA,EAAAA;UAAAA;AAAAA,iBAAAA;QAAAA;AAAAA,iBAAAA,GAAAA,IAAAA,IAAAA;AAAAA,iBAAAA,KAAAA,QAAAA,KAAAA,KAAAA,CAAAA,GAAAA,OAAAA,4BAAAA,OAAAA,iBAAAA,IAAAA,OAAAA,0BAAAA,EAAAA,CAAAA,KAAAA,SAAAA,IAAAA,IAAAA;AAAAA,gBAAAA,KAAAA,OAAAA,KAAAA,EAAAA;AAAAA,gBAAAA,OAAAA,uBAAAA;AAAAA,kBAAAA,KAAAA,OAAAA,sBAAAA,EAAAA;AAAAA,cAAAA,OAAAA,KAAAA,GAAAA,QAAAA,SAAAA,KAAAA;AAAAA,uBAAAA,OAAAA,yBAAAA,IAAAA,GAAAA,EAAAA;cAAAA,EAAAA,IAAAA,GAAAA,KAAAA,MAAAA,IAAAA,EAAAA;YAAAA;AAAAA,mBAAAA;UAAAA,GAAAA,OAAAA,EAAAA,CAAAA,EAAAA,SAAAA,SAAAA,IAAAA;AAAAA,mBAAAA,eAAAA,IAAAA,IAAAA,OAAAA,yBAAAA,IAAAA,EAAAA,CAAAA;UAAAA,EAAAA,GAAAA;QAAAA;AC3FrC,YAAeI,KAAA,EACXC,QAAS,EAMLC,SAAAA,WAASC;AAAAA,cAAAA,KAAAA,EAAAA,UAAa9N,SAAA,KAAA,WAAAD,UAAA,CAAA,MAAAA,UAAA,CAAA,GAEdgO,KAAM1N,KAAKqL,SAASkC,OAAO5E,WAE3BgF,KAAQ3N,KAAK4N,UAAUvC,WAAWrL,KAAK4N,UAAUvC,YAAY,EACzDwB,UAAoB7M,KAAKqL,SAASwB,SAASgB,KAAK7N,MAAM,IAAA,GACtD8N,WAAoBJ,GAAII,UAAUD,KAAK7N,IAAAA,GACvC+N,aAAoBL,GAAIK,YAAYF,KAAK7N,IACzCgO,GAAAA,cAAoBN,GAAIM,aAAaH,KAAK7N,IAC1CiO,GAAAA,SAAoBP,GAAIO,QAAQJ,KAAK7N,IACrCkO,GAAAA,UAAoBR,GAAIQ,SAASL,KAAK7N,IAAAA,EAAAA,GAE1C6B,KAAS4L,KAAa,qBAAqB;AAER,sBAAnCzN,KAAK6F,SAASwF,SAASwB,aACvBjG,SAAS/E,EAAAA,EAAQ,UAAU8L,GAAKd,UAAAA,IAChCvN,GAAAA,OAAOuC,EAAQ,EAAA,UAAU8L,GAAKd,QAC9BvN,GAAAA,OAAOuC,EAAAA,EAAQ,WAAW8L,GAAKG,SAAAA,IAGnC9N,KAAKoG,IAAIiF,SAASxJ,EAAQ,EAAA,aAAa8L,GAAKI,WAC5C/N,GAAAA,KAAKoG,IAAIiF,SAASxJ,EAAAA,EAAQ,cAAc8L,GAAKK,YAAAA,GAC7ChO,KAAKoG,IAAIiF,SAASxJ,EAAAA,EAAQ,aAAa8L,GAAKM,OAAAA,GAC5CjO,KAAKoG,IAAIiF,SAAS9E,QAAQ1E,EAAQ,EAAA,UAAU8L,GAAKO,QACrD;QAAA,GAEAvF,WAAY,EACRmF,WAAAA,SAAU9O,IAAAA;AAAAA,cAAAA,KAAAA;AAEN,cAAKgB,KAAKmO,MAAMC,YAAYpO,CAAAA,KAAKmO,MAAME,WAAvC;AAIA,gBAAIC,KAAKtO,KAAK6F,UACV4G,KAAsB6B,GAAGjD,SAASoB,qBAClC8B,KAAcvO,KAAKoG,IAAIiF,SAASmD,cAAcF,GAAGxI,WAAW2I,0BAAAA,GAC5DC,KAAkB1O,KAAKqL,SAASsD,wBAAwBJ,EACxDK,GAAAA,KAAuB,SAAXN,GAAGO,MACfC,KAA0B,YAAXR,GAAGO;AAEtBP,YAAAA,GAAGvB,MAAMM,cAAcrO,IAAG,EAAC+P,QAAO/O,KAAAA,CAAAA,EAC7BgP,MAAKC,SAAAA,IAAAA;AACF,sBAAQjQ,GAAEgE,KAAAA;gBACN,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;AACDhE,kBAAAA,GAAEkQ,eAAAA;AACF,sBAAIC,KAAgBC,GAAK/D,SAASgE,sBAAAA,GAC9BC,KAAoB,aAATtQ,GAAEgE,OAA6B,QAAThE,GAAEgE;AAEnCuL,kBAAAA,OACAA,KAAca,GAAK/D,SAASkE,oBAAoBhB,IAAce,CAAAA,EAAAA,IAI7Df,MAAgBA,GAAYiB,QAAQlB,GAAGxI,WAAW2J,oBAAAA,MACnDlB,KAAcY,GAAcG,KAAWH,GAAcxP,SAAS,IAAI,CAGtEyP,IAAAA,GAAK/D,SAASqE,gBAAgBnB,IAAAA,IAAa;AAE3C;gBAEJ,KAAK;gBACL,KAAK;AAGwEY,sBAAAA;AAFzEnQ,kBAAAA,GAAEkQ,eAAAA;AACF,sBAAMC,KAAgBC,GAAK/D,SAASgE,sBAC9BM,GAAAA,KAAeC,KAAKC,MAAMT,GAAKhJ,IAAIiF,SAAS9E,QAAQuJ,gBAAeX,UAAAA,KAAAA,GAAc,CAAdA,MAAAA,WAAAA,KAAAA,SAAAA,GAAkBY,aAAiB,KAAA,GACtGC,KAAqB,aAAVhR,GAAEgE;AAEnB,sBAAIuL,IAAa;AACb,wBAAM0B,KAAed,GAAc/N,QAAQmN,EACrC2B,GAAAA,KAAcF,KACdJ,KAAKO,IAAI,GAAGF,KAAeN,EAAAA,IAC3BC,KAAKQ,IAAIjB,GAAcxP,SAAS,GAAGsQ,KAAeN,EAAAA;AACxDpB,oBAAAA,KAAcY,GAAce,EAAAA;kBAAAA,MAE5B3B,CAAAA,KAAcY,GAAc,CAGhCC;AAAAA,kBAAAA,GAAK/D,SAASqE,gBAAgBnB,IAAAA,IAAa;AAC3C;gBAEJ,KAAK;gBACL,KAAK;AACDvP,kBAAAA,GAAEkQ,eACF;AAAA,sBAAMC,KAAgBC,GAAK/D,SAASgE,sBACpCd;AAAAA,kBAAAA,KAAcY,GAAwB,WAAVnQ,GAAEgE,MAAiB,IAAImM,GAAcxP,SAAS,CAAA,GAC1EyP,GAAK/D,SAASqE,gBAAgBnB,IAAAA,IAC9B;AAAA;gBAEJ,KAAK;gBACL,KAAK;AACDa,kBAAAA,GAAK/D,SAASgF,KAAAA;AACd;gBAEJ,KAAK;AAGD,sBAAIjB,GAAKjB,MAAMmC,QAAQC,aAAajC,GAAGjE,aAAaE,SAChD;gBACR,KAAK;AACD,sBAAIiG,KAAAA,CAA2BlC,GAAGjE,aAAaE,YAAAA,CAAa+D,GAAGjE,aAAaG;AAG5E,sBAAKoE,CAAAA,MAAAA,CAAcE,MAAgBP,MAAeiC,MAAAA,CAA4BpB,GAAKjB,MAAMsC,WAAW/B,IAAiB;AACjH1P,oBAAAA,GAAEkQ,eAAAA;AACF,wBAAInL,KAAQqL,GAAK/D,SAASqF,eAAehC,EAAAA;AAIzC,2BAFAU,GAAKjB,MAAMwC,mBAAmBjC,IAC9BU,GAAKzE,MAAMiG,aAAaC,IAAIvO,KAAWyB,IAAAA,EAChC,GAAA;kBACX;AACA,yBAAA;gBAEJ,KAAK;AACD/E,kBAAAA,GAAEkQ,eAAAA,GAIFE,GAAKjB,MAAMmC,QAAQQ,eAAAA,MACnBC,YAAW,WAAA;AAAK,2BAAA3B,GAAKjB,MAAMmC,QAAQQ,eAAAA;kBAAsB,IAAA,GAAA,GAEzDxC,GAAGvB,MAAMK,gBAAgBpO,IAAG,EAAC+P,QAAMK,IAAO4B,SAAQtC,IAAiBuC,eAAc1C,GAAAA,CAAAA,EAC5ES,MAAK,WAAA;AACF,wBAAIT,IAAJ;AACI,0BAAI2C,KAAmBzE,KAAsB8B,KAAca,GAAK/D,SAASkE,oBAAoBhB,IAAce,CAAAA,EAAAA;AAE3GF,sBAAAA,GAAK/D,SAASyF,aAAavC,IAAavP,KAAG,WAEvC;AAAA,4BAAGkS,IAAkB;AACjB,8BAAIC,KAAwBD,GAAiBE,aAAa,OAAA;AAC1DF,0BAAAA,KAAmB9B,GAAK/D,SAASgG,yBAAyBF,EAAAA,GAC1D/B,GAAK/D,SAASqE,gBAAgBwB,EAAAA;wBAClC;sBACJ,EAAA;oBAKkB,MAAlB9B,CAAAA,GAAK/D,SAASgF,KAEbzB,GAAAA,MACDQ,GAAKkC,QAAQlC,GAAKjB,MAAMoD,UAAUhR,KAAAA,GAAAA,IAAQ;kBAAA,EAAA,EAEjDiR,OAAMhN,SAAAA,IAAAA;AAAOpF,2BAAAA,GAAOc,KAAKsE,EAAAA;kBAAAA,EAE9B;AAAA;gBAEJ,KAAK;AACD,sBAAIoK,MAAaQ,GAAKjB,MAAMsC,QAAQpK,MAAQ;AAE5C,sBAAMtC,KAAQqL,GAAKzE,MAAM8G,IAAInP,KAAI8M,EAAAA;AAEpB,wBAATrL,MAAsC,QAAvBA,GAAM2N,WAAW,CAAA,MAAA,SAC5BpD,GAAG5E,YACH0F,GAAKuC,WACgB,IAAA,UAAhBrD,GAAG5E,aACRqH,WAAW3B,GAAKwC,QAAQ/D,KAAYuB,EAAAA,GAAA,CAAA;cAAA;YAIxD,EArIA;UAAA;QAsIR,GAEArB,aAAAA,SAAY/O,IAAAA;AACR,cAAI6S,KAAS7S,GAAE8S,OAAO7L,QAAQjG,KAAK6F,SAASC,WAAW2J,oBAAAA;AAEvDzP,eAAKqL,SAASqE,gBAAgBmC,EAClC;QAAA,GAEA7D,cAAAA,SAAahP,IAETgB;AAAAA,eAAKqL,SAASqE,gBAClB;QAAA,GAEAzB,SAAAA,SAAQjP,IAAAA;AAAAA,cAAAA,KAAAA;AACJ,cAAgB,KAAZA,GAAE+S,UAAe/S,GAAE8S,UAAU9R,KAAKoG,IAAIiF,YAAYrM,GAAE8S,UAAU9R,KAAKoG,IAAIiF,SAAS9E,SAApF;AAEA,gBAAIgI,KAAcvP,GAAE8S,OAAO7L,QAAQjG,KAAK6F,SAASC,WAAW2J,oBAAAA,GACxDf,KAAkB1O,KAAKqL,SAASsD,wBAAwBJ,EAAAA;AAI5DvO,iBAAKmO,MAAMmC,QAAQQ,eAAe,MAClCC,YAAW,WAAK;AAAA,qBAAA3B,GAAKjB,MAAMmC,QAAQQ,eAAAA;YAAsB,IAAA,GAAA,GAEzD9Q,KAAK6F,SAASkH,MAAMK,gBAAgBpO,IAAG,EAAC+P,QAAO/O,MAAMgR,SAAQtC,IAAiBuC,eAAc1C,GAAAA,CAAAA,EACvFS,MAAK,WACET;AAAAA,cAAAA,KACAa,GAAK/D,SAASyF,aAAavC,IAAavP,EAAAA,IAExCoQ,GAAK/D,SAASgF,KAAAA;YAAAA,EAErBmB,EAAAA,OAAMhN,SAAAA,IAAOpF;AAAAA,qBAAAA,GAAOc,KAAKsE,EAAAA;YAAAA,EAAAA;UAjBgE;QAkBlG,GAEA0J,UAAAA,SAASlP,IAAAA;AACL,cAAI4C,KAAM5C,GAAE8S,QACRE,KAAMpQ,GAAIqQ,aAAarQ,GAAIsQ,eAAetQ,GAAI0F,WAAWwI,gBAAgB;AAE7E9P,eAAKmS,QAAQ,mBAAmB,EAACC,YAAWxC,KAAKyC,MAAML,EAC3D,EAAA,CAAA;QAAA,EAAA,EAAA,GAQRM,UAAAA,SAAUvO,IAAAA;AACNA,UAAAA,KAAQA,MAAS/D,KAAKmO,MAAM9C,SAASkH,SAAS,IAC9CvS,KAAKwS,qBAAqBxS,KAAKqL,SAASoH,gBAAgB1O,EAAAA,GAExD/D,KAAKqL,SAASqH,KAAAA,GAET1S,KAAKwS,mBAAmB7S,UACzBK,KAAKqL,SAASgF,KAElBrQ,GAAAA,KAAKmS,QAAQ,oBAAoBnS,KAAKoG,IAAIiF,QAC9C;QAAA,GAOAsD,yBAAAA,SAAyB1H,IAAAA;AAGrB,mBAFI5C,IAAMN,KAAQkD,MAAUA,GAAOmK,aAAa,OAAA,GAExClS,KAAIc,KAAKwS,mBAAmB7S,QAAQT,QAAO;AAE/C,gBAAI+C,GADJoC,KAAOrE,KAAKwS,mBAAmBtT,EAAAA,CAAAA,KACTmF,GAAKN,SAASA,GAAQ,QAAOM;AAE9C,gBAAIA,MAAQN,GAAQ,QAAO,EAACA,OAAOM,GAAAA;UAC5C;QACJ,GAEAgN,0BAAAA,SAA0BtN,IAEtB;AAAA,iBADoB/D,KAAKqL,SAASgE,sBAAAA,EACbsD,MAAKtO,SAAAA,IAAAA;AAAAA,mBAAQA,GAAK+M,aAAa,OAAA,MAAarN;UAAAA,EAAAA;QACrE,GAEAwL,qBAAAA,SAAoBqD,IAAAA;AAAUC,cAAAA,KAAAA,EAAAA,UAAOlT,SAAA,KAAA,WAAAD,UAAA,CAAAA,MAAAA,UAAA,CAAA,GAC7ByP,KAAgBnP,KAAKqL,SAASgE,sBAC9ByD,GAAAA,KAAc3D,GAAc4D,WAAU1O,SAAAA,IAAAA;AAAAA,mBAAQA,OAASuO;UAAAA,EAAAA;AAE3D,iBAAOC,KAAO1D,GAAc2D,KAAc,CAAA,IAAK3D,GAAc2D,KAAc,CAAA;QAC/E,GAOApD,iBAAAA,SAAiB9N,IAAKoR,IAAAA;AAClB,cACIC,IADAC,KAAYlT,KAAK6F,SAASC,WAAW4F;AAYzC,cALI1L,KAAKmO,MAAMgF,cACXnT,KAAKmO,MAAMgF,UAAUxN,UAAUyN,OAAOF,EACtClT,GAAAA,KAAKmO,MAAMgF,UAAUE,gBAAgB,eAAA,IAAA,CAGpCzR,GAID,QAHA5B,KAAKmO,MAAMmF,aAAa,MACxBtT,KAAKmO,MAAMgF,YAAY,MACvBnT,KAAAA,KAAK2K,MAAMiG,aAAa2C,QAAQjR,KAAKtC,IAAAA;AAIzCiT,UAAAA,KAAWjT,KAAKqL,SAASsD,wBAAwB/M,EAAAA,GACjD5B,KAAKmO,MAAMmF,aAAaL,IACxBjT,KAAKmO,MAAMgF,YAAYvR,IAGvBA,GAAI+D,UAAU6N,IAAIN,EAAAA,GAClBtR,GAAI6R,aAAa,iBAAA,IAAiB,GAE9BT,OACApR,GAAI0F,WAAW2K,YAAYrQ,GAAIkO,eAAelO,GAAI8R,YAAY9R,GAAI0F,WAAWwI,eAG7E9P,KAAK6F,SAASwE,iBACdrK,KAAK2K,MAAMiG,aAAa2C,QAAQjR,KAAKtC,MAAMiT,EAAAA,GAC3CjT,KAAKqL,SAASwB,SAAAA;QAEtB,GAOAiE,cAAAA,SAAclP,IAAK+R,IAAOC,IAAAA;AAAAA,cAAAA,KAAAA,MAClBtF,KAAKtO,KAAK6F,UACV4G,KAAsB6B,GAAGjD,SAASoB,qBACD6B,KAAAA,GAAGjD,UAAnCuB,KAAgC0B,GAAhC1B,eAAeD,KAAiB2B,GAAjB3B;AAEpB,cAAA,CAAK/K,GAGD,QAFA5B,KAAKsR,QAAQtR,KAAKmO,MAAMoD,WAAAA,IACxB5E,GAAAA,MAAAA,MAAiB3M,KAAKqL,SAASgF,KAAAA;AAInCsD,UAAAA,KAAQA,MAAS,CAAA;AAKjB,cAAI5P,KAAQnC,GAAIwP,aAAa,OAAA,GACzByC,KAAqB,aAAT9P,IACZ6K,KAAuB,SAAXN,GAAGO,MACfmC,KAAUhR,KAAKwS,mBAAmBG,MAAKtO,SAAAA,IAAAA;AAASA,gBAAAA;AAAAA,oBAAAA,UAAAA,KAAAA,GAAKN,UAAAA,WAALM,KAAAA,KAAcA,OAASN;UAAI,EAAA;AAK/E,cAFA/D,KAAKmS,QAAQ,mBAAmB,EAACjL,MAAK8J,IAASpP,KAAAA,IAAK+R,OAAAA,GAE/C3C,CAAAA,GAAAA,MAAY6C,IAAjB;AAKA,gBAAI7T,KAAKmO,MAAMsC,SAAU;AACrB,kBAAIqD,KAAoB9T,KAAK+T,cAAc,CAAC/C,EAAAA,CAAAA,EAAU,CACtDA;AAAAA,cAAAA,KAAU1C,GAAGtE,aAAa1H,KAAKtC,MAAM8T,EAAAA,KAAsBA,IAG3D9T,KAAKgU,cAAc,MAAMvR,GAAO,EAACwR,WAAW,KAAA,GAAOjD,EAAAA,CAAAA;YAAAA,MAInDhR,MAAK4O,KAAY,eAAe,SAAW,EAAA,CAACoC,MAAWhR,KAAK2K,MAAM8G,IAAInP,KAAKtC,IAAAA,CAAAA,GAAQ4M,EAAAA;AAAAA,aAGlFgC,MAAc5O,KAAKoG,IAAIuE,MAAMrD,gBAGlCyJ,YAAW,WAAA;AACP3B,cAAAA,GAAKhJ,IAAIuE,MAAMC,MACfwE,GAAAA,GAAK8E,iBAAAA,IACT;YAAA,EAAA,GAEAvH,MAAiBoE,WAAW/Q,KAAKqL,SAASgF,KAAKxC,KAAK7N,IAAAA,CAAAA,GAGjDyM,KACCmH,MAAYA,GAAAA,KAKZhS,GAAIuS,iBAAiB,kBAAiB,WAAA;AAClC/E,cAAAA,GAAK/D,SAAS+I,iBAAAA,GAEdrD,YAAW,WAAA;AACPnP,gBAAAA,GAAIwR,OACJhE,GAAAA,GAAK/D,SAASiH,SACdsB,GAAAA,MAAYA,GAAAA;cACb,IAAA,GAAA;YAAA,IACJ,EAACS,MAAAA,KAAM,CAAA,GAGVzS,GAAI+D,UAAU6N,IAAIxT,KAAK6F,SAASC,WAAW6F,kBAAAA;UA1C/C,MAFIgB,CAAAA,MAAiBoE,WAAW/Q,KAAKqL,SAASgF,KAAKxC,KAAK7N,IAAAA,CAAAA;QA8C5D,GAIAsU,WAAAA,SAAWC,IAAAA;AAGPvU,eAAKwS,mBAAmB7S,SAAS,GACjCK,KAAKqL,SAASgF,KAEdrQ,GAAAA,KAAKqL,SAASoH,gBAAgB,EAAA;AAE9B,cAAI+B,KAAYxU,KAAKqL,SAASoH,gBAAgB,EAQ9C;AAAA,iBANK8B,OACDC,KAAYxU,KAAKmO,MAAM9C,SAASoJ,cAIpCzU,KAAKsR,QAAQkD,IAAW,IAAA,GACjBxU;QACX,GASAyS,iBAAAA,SAAiB1O,IAAO2Q,IAAAA;AAAAA,cAAAA,IAWhBC,IACAC,IACAC,IACAC,IACAC,IAAAA,KAAAA,WA+BA;AAAA,gBAAA9V,IAAA+V,IAAIC,KAAAA,QAAiBC,KAAAA;AAAAA,YAAAA,KAELlM,GAAU9J,EAAAA,GAA1ByV,MAAAA,SAAAA,KAAwCxS,WAAAA,eAAAA,OAAAA,UAAAA,GAAAA,OAAAA,WAAAA,IAAAA,GAAAA,OAAAA,WAAAA,EAAAA,EAAAA,IAAAA,cAAAA,MAAS6G,GAAU9J,EAAAA,IAAK,EAAE6E,OAAMiF,GAAU9J,EAElF,EAAA;AAAA,gBATkBoC,IAUd6T,KADyBhT,CAAAA,OAAOiT,KAAKT,EAAeU,EAAAA,MAAKC,SAAAA,IAAKhJ;AAAAA,qBAAAA,GAAW/H,SAAS+Q,EAAAA;YAClFH,EAAsC,IAAA,CAAC,OAAW7I,IAAAA;AAElDiJ,YAAAA,GAAIhJ,eAAgBmI,CAAAA,GAAQc,SAC5BX,KAAWM,GAAYM,QAAO,SAACC,IAAQJ,IAAAA;AAAMI,qBAAAA,KAAS,OAAOf,GAAcW,EAAAA,KAAI;YAAA,IAAK,EAAA,EAAI9U,YAAAA,EAAcD,KAElGgV,GAAAA,GAAI/I,mBACJqI,KAAWnQ,GAASmQ,EAAAA,GACpBE,KAASrQ,GAASqQ,EAAAA,IAGtBE,KAA8C,KAA5BJ,GAASzT,QAAQ2T,EACnCG,GAAAA,KAAaL,OAAaE,IArBZzT,KAsBoBuT,IAAlCD,KAA4CG,GArBnCvU,YAAAA,EAAc+B,MAAM,GAAKoT,EAAAA,OAAMC,SAAAA,IAAAA;AAAAA,qBAAKtU,GAAEiD,SAASqR,GAAEpV,YAAAA,CAAAA;YAAAA,EAAAA,MAyB1DyU,KAAkB,MAClBL,KAAqBO,GAAYE,MAAKC,SAAAA,IAClC;AAAA,kBAAIxU,KAAI,MAAM6T,GAAcW,EAAAA,KAAM;AAYlC,qBAVIC,GAAI/I,mBACJ1L,KAAI4D,GAAS5D,EACbiU,GAAAA,KAASrQ,GAASqQ,EAAAA,IAGjBQ,GAAIjV,kBACLQ,KAAIA,GAAEN,YAAAA,IAEV0U,KAAapU,OAAMiU,IAEZL,GAAQc,QACT1U,OAAMiU,KACe,KAArBjU,GAAEM,QAAQ2T,EACpB;YAAA,EAAA,IAGJD,KAAAA,CAAeS,GAAI9I,uBAAuB2C,GAAKyG,eAAgB5T,GAAS0S,EAAiBA,IAAAA,GAAc5Q,QAAQ4Q,EAAAA,GAG3GC,MAAAA,CAAuBE,OACnBI,MAAcD,KACda,GAAiBxR,KAAKqQ,EAAAA,IACH,gBAAdY,GAAIQ,UAA0Bd,KACnCe,GAAKC,QAAQtB,EAEbqB,IAAAA,GAAK1R,KAAKqQ,EACtB;UAAA,GAAAuB,KAAA,MAhGI5H,KAAKtO,KAAK6F,UACV0P,KAAMjH,GAAGjD,UAET2K,MADAtB,KAAUA,MAAW,CACrBsB,GAAO,CAAA,IACPF,KAAmB,CAAA,GACnB9M,KAAYsF,GAAGtF,WACfmN,KAAmBZ,GAAIlJ,YAAY,IAAIkJ,GAAIlJ,WAAW3D,IAAAA,GACtD+D,KAAsB8I,GAAI9I,qBAC1B2J,KAAqC,cAAdb,OAAAA,GAAIQ,QAC3BzJ,KAAaiJ,GAAIjJ,YAMjBpN,KAAI;AAMR,cAAA,EAJA6E,KAAoB,YAAXuK,GAAGO,QAAoB7O,KAAK+D,MAAMpE,UAAUK,KAAK+D,MAAM,CAAGuK,EAAAA,GAAG9F,WAAAA,KAAgBzE,KAChF,KACAA,OAESuI,CAAAA,GAAW3M,QAAQ;AAC9BqW,YAAAA,KAAOvJ,KACDzD,KACAA,GAAUqN,QAAOhS,SAAAA,IAAAA;AAAQ,qBAACiS,CAAAA,GAAKT,eAAgB5T,GAASoC,EAAAA,IAAQA,GAAKN,QAAQM,EAAAA;YAAAA,EAAAA;AAEnF,gBAAIkS,KAAeH,KACbb,GAAIQ,OAAOC,IAAMjB,EAAAA,IACjBiB,GAAKxT,MAAM,GAAG2T,EAIpB;AAAA,mBAFAnW,KAAKmO,MAAM9C,SAASoJ,cAAc8B,IAE3BA;UACX;AAWA,eATAxB,KAASQ,GAAIjV,gBACP,KAAGyD,MACF,KAAGA,IAAOvD,YAAAA,GAOVtB,KAAI8J,GAAUrJ,QAAQT,KAAAA,CAAAA,KAAAA,MAAAA,GAAAA;AAsD7Bc,eAAKmO,MAAM9C,SAASoJ,cAAcqB,GAAiBU,OAAOR,EAGtDO;AAAAA,UAAAA,KAAeH,KACbb,GAAIQ,OAAOD,GAAiBU,OAAOR,EAAOjB,GAAAA,EAAAA,IAC1Ce,GAAiBU,OAAOR,EAAAA,EAAMxT,MAAM,GAAG2T,EAAAA;AAG7C,iBADAnW,KAAKmO,MAAM9C,SAASoJ,cAAc8B,IAC3BA;QACX,GAOA7F,gBAAAA,SAAeM,IAAAA;AACX,cAAIyF,KAAazW,KAAK6F,SAASwF,SAASoL;AAKxC,iBAJaA,KACkB,cAAA,OAAdA,KAA2BA,GAAWzF,EAAAA,IAAYA,GAAQyF,EAAAA,KAAezF,GAAQjN,QACxFiN,GAAQjN;QAGtB,GAOA2S,gBAAAA,SAAgBC,IAAAA;AAAAA,cAAAA,KAAAA;AACZ,iBAAOlU,GAAO,CAAA,GAAIkU,EAAiB9V,EAAAA,KAAI,SAAC+V,IAAYC,IAAAA;AACvB,wBAAA,OAAdD,MAA+C,YAAA,OAAdA,OACxCA,KAAa,EAAC7S,OAAM6S,GAAAA;AAExB,gBAAIE,KAAc1H,GAAK/D,SAASqF,eAAekG,EAAAA;AAM/C,mBAJAE,KAAqC,YAAA,OAAfA,MAA2B1H,GAAKvJ,SAASwF,SAAStJ,aAClEA,GAAW+U,EACXA,IAAAA,IAEC1H,GAAKvJ,SAASkR,UAAUtL,aAAauL,MAAY5H,IAAA,CAAC6H,GAAIL,GAAAA,CAAAA,GAAAA,EAAAA,GAAAA,EAAYE,aAAAA,GAAAA,CAAAA,GAAAA,EAAAA,CAAAA;UAC7E,EAAA,EAAGI,KAAK,EAAA;QACZ,EAAA;AAAA,iBAAAC,GAAAlY,IAAAD,IAAA;AAAA,WAAA,QAAAA,MAAAA,KAAAC,GAAA,YAAAD,KAAAC,GAAA;AAAA,mBAAAC,KAAA,GAAAC,KAAA,IAAA,MAAAH,EAAA,GAAAE,KAAAF,IAAAE,KAAA,CAAAC,GAAAD,EAAA,IAAAD,GAAAC,EAAA;AAAA,iBAAAC;QAAA;AAAA,iBAAAiY,GAAAnY,IAAAD,IAAAE,IAAA;AAAA,iBAAAF,MAAAC,KAAA,OAAA,eAAAA,IAAAD,IAAA,EAAA,OAAAE,IAAA,YAAA,MAAA,cAAA,MAAA,UAAA,KAAA,CAAA,IAAAD,GAAAD,EAAA,IAAAE,IAAAD;QAAA;AAAA,iBAAAoY,GAAApY,IAAA;AAAA,kBAAA,SAAAA,IAAA;AAAA,gBAAA,MAAA,QAAAA,EAAA,EAAA,QAAAkY,GAAAlY,EAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAA;AAAA,gBAAA,eAAA,OAAA,UAAA,QAAAA,GAAA,OAAA,QAAA,KAAA,QAAAA,GAAA,YAAA,EAAA,QAAA,MAAA,KAAAA,EAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAAD,IAAA;AAAA,gBAAA,CAAAC,GAAA;AAAA,gBAAA,YAAA,OAAAA,GAAA,QAAAkY,GAAAlY,IAAAD,EAAA;AAAA,gBAAAE,KAAA,OAAA,UAAA,SAAA,KAAAD,EAAA,EAAA,MAAA,GAAA,EAAA;AAAA,yBAAAC,MAAAD,GAAA,gBAAAC,KAAAD,GAAA,YAAA;AAAA,gBAAA,UAAAC,MAAA,UAAAA,GAAA,QAAA,MAAA,KAAAA,EAAA;AAAA,gBAAA,gBAAAA,MAAA,2CAAA,KAAAA,EAAA,EAAA,QAAAiY,GAAAlY,IAAAD,EAAA;UAAA,GAAAC,EAAA,MAAA,WAAA;AAAA,kBAAA,IAAA,UAAA,uIAAA;UAAA,GAAA;QAAA;ACziBG,iBAASqY,MAAAA;AAIZ,mBAASpW,MAHTlB,KAAKqL,WAAW,CAAA,GAGFrL,KAAKuX,UACfvX,MAAKqL,SAASnK,EAAkC,IAAA,cAAA,OAAtBlB,KAAKuX,UAAUrW,EAAAA,IACnClB,KAAKuX,UAAUrW,EAAAA,EAAG2M,KAAK7N,IACvBA,IAAAA,KAAKuX,UAAUrW,EAEzBlB;AAAAA,eAAKqL,SAASmM,KACdxX,GAAAA,KAAKoG,IAAIiF,SAASoM,WAAWzX;QACjC;AAEeiX,YAAAA,IAAAA,IAAAA,MAAAA,MAAAA,SAAAA,IAAAA;AAAAA,mBAAAA,KAAAA,GAAAA,KAAAA,UAAAA,QAAAA,MAAAA;AAAAA,gBAAAA,KAAAA,QAAAA,UAAAA,EAAAA,IAAAA,UAAAA,EAAAA,IAAAA,CAAAA,GAAAA,KAAAA,OAAAA,KAAAA,EAAAA;AAAAA,0BAAAA,OAAAA,OAAAA,0BAAAA,KAAAA,GAAAA,OAAAA,OAAAA,sBAAAA,EAAAA,EAAAA,QAAAA,SAAAA,IAAAA;AAAAA,qBAAAA,OAAAA,yBAAAA,IAAAA,EAAAA,EAAAA;YAAAA,EAAAA,CAAAA,IAAAA,GAAAA,SAAAA,SAAAA,IAAAA;AAAAA,cAAAA,GAAAA,IAAAA,IAAAA,GAAAA,EAAAA,CAAAA;YAAAA,EAAAA;UAAAA;AAAAA,iBAAAA;QAAAA,GACR3J,CAAAA,GAAAA,EAAAA,GAAAA,KAAAA,SAAAA,KAAAA,EAEHkK,MAAAA,WACIxX;AAAAA,eAAKoG,IAAIiF,WAAWrL,KAAK0X,cAAc,YAAY,CAAC1X,KAAK6F,QAAAA,CAAAA,GACzD7F,KAAKoG,IAAIiF,SAAS9E,UAAUvG,KAAKoG,IAAIiF,SAASmD,cAAc,8CAAA;QAChE,GAEAmJ,cAAAA,WAAAA;AACI,iBAAO3X,KAAKoG,IAAIiF,SAASmD,cAAc,6CAAA;QAC3C,GAEAoJ,cAAAA,WACI;AAAA,iBAAO5X,KAAKoG,IAAIiF,SAASmD,cAAc,6CAAA;QAC3C,GAEAa,uBAAAA,WAAAA;AACI,iBAAQpP,GAAGD,KAAKoG,IAAIiF,SAAS9E,QAAQsR,iBAAiB7X,KAAK6F,SAASC,WAAW2J,oBAAAA,CAAAA;QACnF,GAMAqI,MAAAA,SAAM/T,IAAAA;AAAAA,cAEEgU,IACAC,IAGAC,IAAAA,KAAAA,MALA3J,KAAKtO,KAAK6F,UAGVqS,KAA0B,SAAX5J,GAAGO,QAAkBP,CAAAA,GAAGpF,kBACvCiP,KAAgB7J,CAAAA,GAAGtF,aAAAA,CAAcsF,GAAGtF,UAAUrJ,QAE9CyY,KAAmC,YAAxB9J,GAAGjD,SAASwB;AAS3B,cANA9I,KAAAA,WAAQA,KAAsB/D,KAAKmO,MAAMoD,YAAYxN,IAAAA,EAMhDoU,MAAgBD,CAAAA,MAAAA,CAAiB5J,GAAGyI,UAAUsB,uBAAAA,UAC5C/J,GAAGjD,SAASf,WACZtK,KAAKmO,MAAMmK,aACXtY,KAAK6F,SAAS0S,WAHrB;AAsBA,gBAhBAC,aAAaxY,KAAKyY,+BAIlBzY,GAAAA,KAAKwS,qBAAqBxS,KAAKqL,SAASoH,gBAAgB1O,EAGpDA,GAAAA,MAAAA,CAAU/D,KAAKwS,mBAAmB7S,WAClCK,KAAKmS,QAAQ,oBAAoBpO,EAAAA,GAE7BuK,GAAGyI,UAAUsB,wBACbJ,KAAkB3J,GAAGyI,UAAUsB,oBAAoB/V,KAAKtC,MAAM,EAAC+D,OAAAA,GAAAA,CAAAA,KAAAA,CAKlEkU,IAAiB;AAGlB,kBAAIjY,KAAKwS,mBAAmB7S,OACpBoE,CAAAA,MAAamU,MAAqBlY,CAAAA,KAAKmO,MAAMsC,QAAQpK,SAAYlG,CAAAA,GAAQH,KAAKwS,mBAAmB,CAAA,EAAGzO,OAAOA,EAC3G/D,KAAAA,KAAKwS,mBAAmByD,QAAQ,EAAClS,OAAAA,GAAAA,CAAAA;mBAErC;AACA,oBAAA,CAAIA,MAAAA,CAAamU,MAAmBlY,KAAKmO,MAAMsC,QAAQpK,MAOnD,QAFArG,KAAK2K,MAAMiG,aAAa2C,QAAQjR,KAAKtC,IAAAA,GAAAA,KACrCA,KAAKqL,SAASgF,KAAAA;AALdrQ,qBAAKwS,qBAAqB,CAAC,EAACzO,OAAAA,GAQpC,CAAA;cAAA;AAGAiU,cAAAA,KAAqB,MAAI/V,GADzB8V,KAAiB/X,KAAKwS,mBAAmB,CACUuF,CAAAA,IAAAA,GAAchU,QAAQgU,KAErEzJ,GAAGjE,gBAAgB2N,MAEsB,KAArCA,GAAmB5W,QAAQ2C,EAAAA,KAC3B/D,KAAK2K,MAAMiG,aAAa2C,QAAQjR,KAAKtC,MAAM+X,EAEvD;YAAA;AAEA/X,iBAAKqL,SAASqH,KAAKuF,EAEf3J,GAAAA,GAAGjD,SAASqB,kBACZ1M,KAAKqL,SAASqE,gBAAgB1P,KAAKoG,IAAIiF,SAAS9E,QAAQiI,cAAcF,GAAGxI,WAAW2J,oBAAAA,CAAAA,GAMnFzP,KAAKmO,MAAM9C,SAASqN,WAGrB3H,WAAW/Q,KAAKqL,SAASkC,OAAOC,QAAQK,KAAK7N,IAIjDA,CAAAA,GAAAA,KAAKmO,MAAM9C,SAASqN,UAAU3U,MAAAA,MAC9B/D,KAAKmO,MAAM9C,SAASkH,QAAQxO,IAE5B/D,KAAK2Y,kBAGAP,GAAAA,MAGDrH,YAAW,WACP3B;AAAAA,cAAAA,GAAK/D,SAASwB,SACduC,GAAAA,GAAK/D,SAASuN,OAAAA;YAClB,EAKJ7H,GAAAA,YAAW,WAAA;AACP3B,cAAAA,GAAK+C,QAAQ,iBAAiB/C,GAAKhJ,IAAIiF,QAAAA;YAC3C,EAlFI;UAAA;QAmFR,GAMAgF,MAAAA,SAAMwI,IAAAA;AAAAA,cAAAA,KAAAA,MACsBC,KAAA9Y,KAAKoG,KAAxBC,KAAmByS,GAAnBzS,OAAOgF,KAAYyN,GAAZzN,UACR+M,KAA8C,YAAnCpY,KAAK6F,SAASwF,SAASwB,YAAAA,CAAyBgM;AAG/D,cAAKxN,MAAazE,SAASnF,KAAKmE,SAASyF,EAAAA,KAAAA,CAAa+M,GAkCtD,QAhCA9Y,OAAOyZ,oBAAoB,UAAU/Y,KAAKqL,SAASwB,QAAAA,GACnD7M,KAAKqL,SAASkC,OAAOC,QAAQlL,KAAKtC,MAAM,KAAA,GASxCqG,GAAMoN,aAAa,iBAAA,KAAiB,GACpCpI,GAAS/D,WAAW0R,YAAY3N,EAIhC0F,GAAAA,YAAW,WAAA;AACP3B,YAAAA,GAAKjB,MAAM9C,SAASqN,UAAU;UAC/B,IAAA,GAEH1Y,GAAAA,KAAKmO,MAAM9C,SAASkH,QACpBvS,KAAKmO,MAAMmF,aACXtT,KAAKmO,MAAMgF,YACXnT,KAAKmO,MAAM1H,YAAY,MAInBzG,KAAKmO,MAAMpI,OAAO/F,KAAKmO,MAAMpI,IAAIhC,MAAMpE,WACvCK,KAAKmO,MAAM8K,YAAYjZ,KAAKmO,MAAMpI,IAAImT,UAAclZ,IAAAA,KAAKmO,MAAMpI,MAGnE/F,KAAKmS,QAAQ,iBAAiB9G,EAAAA,GAEvBrL;QACX,GAMAmZ,QAAAA,SAAOrB,IACH9X;AAAAA,eAAKqL,SAASrL,KAAKmO,MAAM9C,SAASqN,WAAYZ,CAAAA,KAAO,SAAS,MAClE,EAAA;QAAA,GAEAsB,iBAAAA,WAAAA;AACI,cAAI7D,KAAMvV,KAAK6F,SAASwF;AACxB,iBAAmC,cAArBkK,OAAAA,GAAIzI,eAA8ByI,GAAIzI,aAAAA,IAAiByI,GAAIzI;QAC7E,GAEA8L,QAAAA,WAAAA;AAAAA,cHR2BrT,IACvB8T,IAAQC,IAAAA,KAAAA,MGUJC,MHXmBhU,KGWMvF,KAAKoG,IAAIiF,WHV9BiO,KAAQ/T,GAAKiU,UAAAA,IAAU,GAC7BC,MAAMC,UAAU,0CACtB9S,SAASnF,KAAKkY,YAAYL,EAC1BD,GAAAA,KAASC,GAAMxJ,cACfwJ,GAAMhS,WAAW0R,YAAYM,EAAAA,GACtBD,KGMC/K,KAAKtO,KAAK6F,UACViH,KAAe9M,KAAKqL,SAAS+N,gBAAAA;AAEjC,iBAA4B,UAAxB9K,GAAGjD,SAASf,YAEhBtK,KAAKoG,IAAIC,MAAMoN,aAAa,iBAAA,IAIvB7M,GAAAA,SAASnF,KAAKmE,SAAS5F,KAAKoG,IAAIiF,QACjCrL,MAAAA,KAAKoG,IAAIiF,SAAS1F,UAAU6N,IAAKlF,GAAGxI,WAAW+F,cAAAA,GAC/C7L,KAAKqL,SAASwB,SAAS0M,EAAAA,GACvBzM,GAAa6M,YAAY3Z,KAAKoG,IAAIiF,QAAAA,GAElC0F,YAAW,WAAA;AAAA,mBACP3B,GAAKhJ,IAAIiF,SAAS1F,UAAUyN,OAAQ9E,GAAGxI,WAAW+F,cAAAA;UAAAA,EAAAA,KAZf7L;QAiB/C,GAMA0S,MAAAA,SAAMkH,IAAAA;AACFA,UAAAA,KAAoC,YAAA,OAAfA,KACfA,KACA5Z,KAAKqL,SAASqL,eAAekD,MAAe5Z,KAAKwS,kBAEvD;AAAA,cH7KgBlR,IG6KZuY,KAAkB7Z,KAAK6F,SAASkR,UAAU8C,gBAAgBvX,KAAKtC,MAAM4Z,EAAAA;AAEzE5Z,eAAKoG,IAAIiF,SAAS9E,QAAQuT,aH/KVxY,KG+K6BuY,MH9KtCvY,GACNU,QAAQ,iBAAiB,IAAA,EACzBO,MAAM,OAAA,EAAS2U,KAAK,IAAM3W,EAAAA,KAAAA,IACzB;QG4KN,GAQA6T,kBAAAA,WAAAA;AACI,cAAIK,KAAczU,KAAKqL,SAASoH,gBAAgBzS,KAAKmO,MAAM9C,SAASkH,KAAAA,GAChEwH,KAAgB/Z,KAAK0X,cAAc,kBAAkB,CAACjD,EAAAA,CAAAA,GACtDuF,KAAgBha,KAAK0X,cAAc,kBAAkB,CAACjD,EACtDwF,CAAAA,GAAAA,KAAYja,KAAKqL,SAASsM,aAAAA,GAC1BuC,KAAYla,KAAKqL,SAASuM,aAAAA;AAE9BmC,UAAAA,OAAiBE,QAAAA,MAAAA,GAAW3S,WAAW6S,aAAaJ,IAAeE,EAAAA,IACnED,OAAiBE,QAAAA,MAAAA,GAAW5S,WAAW6S,aAAaH,IAAeE,EACvE;QAAA,GAMArN,UAAAA,SAAU0M,IAAAA;AACN,cAAIhE,KAAMvV,KAAK6F,SAASwF,UACpByB,KAAe9M,KAAKqL,SAAS+N,gBAAAA;AAEjC,cAAoB,YAAhB7D,GAAI1I,YAAyBC,IAAjC;AAEA,gBAAIsN,IAAMC,IAAKC,IAAQC,IAAMC,IAAOC,IAChCC,IAAeC,IACfC,IAAQC,IACRC,KAAQ9a,KAAKoG,IAAIiF,UACjB0P,KAAQxF,GAAIyF,KACZC,KAAwBnO,OAAiBlG,SAASnF,MAClDyZ,KAAiBpO,OAAiB9M,KAAKoG,IAAIC,OAC3C8U,KAAwBF,KAAwB3b,OAAO8b,cAActO,GAAamF,WAClFoJ,KAAOzU,SAAS0U,qBAAqB1U,SAAS2U,2BAA2B3U,SAAS4U,iBAClFC,KAAiBJ,GAAKvL,cACtB4L,KAAgB9L,KAAKO,IAAIkL,GAAKM,eAAe,GAAGrc,OAAOsc,cAAc,CAAA,GACrEC,KAAaH,KAAgB,MAAMnG,GAAI1I,WAAW,OAClDiP,KAAW9b,KAAKoG,IAAkB,WAAdyV,KAAwB,UAAU,OAAA;AAgC1D,gBA7BAtC,KAAWA,MAAYuB,GAAMhL,cA6BxB9P,KAAKmO,MAAM9C,SAASqN,SAAzB;AAoBA,kBAlBkB,UAAdmD,MAEAvB,MADAF,MHpFL,WAAA;AACJ,oBAAM5S,KAAMZ,SAASF,aAErB;AAAA,oBAAIc,GAAIC,YAAY;AAChB,sBAGI2S,IAAO2B,IAHLC,KAAIxU,GAAIb,WAAW,CACnBpB,GAAAA,KAAOyW,GAAEC,gBACTC,KAASF,GAAEG;AAGjB,sBAAID,KAAS,EAKT,SAJAH,KAAKnV,SAASwV,YAAAA,GACXC,SAAS9W,IAAM2W,KAAS,CAC3BH,GAAAA,GAAGO,OAAO/W,IAAM2W,EAAAA,GAET,EAAC3B,OADRH,KAAO2B,GAAGQ,sBAAAA,GACQC,OAAOnC,KAAID,GAAKC,KAAKC,QAAOF,GAAKE,OAGvD;AAAA,sBAAI/U,GAAKgX,sBACL,QAAOhX,GAAKgX,sBACpB;gBAAA;AAEA,uBAAO,EAAChC,MAAAA,OAAYF,KAAK,MAAA;cAC5B,GG+D0BC,GAAAA,QACdD,KAASD,GAAKC,KACdE,KAASH,GAAKG,MACdC,KAAS,WAITC,MAtCJ,SAA6BvZ,IAAAA;AACzB,oBAAImZ,KAAM,GAAGE,KAAO;AAKpB,qBAHArZ,KAAIA,GAAEoG,YAGApG,MAAKA,MAAKma,KACZhB,CAAAA,MAAOnZ,GAAEwS,aAAa,GACtB6G,MAAQrZ,GAAEub,cAAc,GACxBvb,KAAIA,GAAEoG;AAGV,uBAAO,EAAC+S,KAAAA,IAAKE,MAAAA,GACjB;cAAA,GAyB2CzN,EACvCsN,GAAAA,KAAS0B,GAASS,sBAClBlC,GAAAA,KAASa,KAAAA,KAAsBd,GAAKC,MAAMI,GAAiBJ,KAC3DC,MAAUY,KAAiBd,GAAKf,SAASe,GAAKE,SAASG,GAAiBJ,OAAO,GAC/EE,KAASW,KAAAA,KAAsBd,GAAKG,OAAOE,GAAiBF,MAC5DC,KAASJ,GAAKI,QAAQ,OAAA,CAIrBS,IAAwB;AACzB,oBAAIyB,MAjCR,WAII;AAAA,2BAHIzK,KAAY,GACZ/Q,KAAIqU,GAAIzI,aAAaxF,YAEnBpG,KACF+Q,CAAAA,MAAa/Q,GAAE+Q,aAAa,GAC5B/Q,KAAIA,GAAEoG;AAGV,yBAAO2K;gBACX,GAuBwC0K;AACpCtC,gBAAAA,MAAOqC,IACPpC,MAAUoC;cACd;AAKgBnH,kBAAAA;AAHhB8E,cAAAA,KAAMzK,KAAKC,MAAMwK,EACjBC,GAAAA,KAAS1K,KAAKgN,KAAKtC,EAAAA,GAGnBK,KAAkBe,KAAgBnB,KA7DM,KAgExCK,OAJAF,KAA8B,UAAdnF,KAAAA,GAAIsH,eAAAA,WAAJtH,KAAAA,KAAkBkG,KAAiBrB,GAAKE,SAASf,MAIvCc,KAAMC,MAAUa,IAG1CN,KAAWN,MAAQQ,MAASX,GAAKI,SAAc,KAAKlb,OAAOwd,aAKvDjC,KADc,UAAdgB,MAAwBlB,KACb,cAGA,SAAgBnE,OAARqE,IAAQ,KAI/BC,GAAAA,GAAMrB,MAAMC,UAAU,GAAmBkB,OAAhBC,IAAQ,QAAgCL,EAAAA,OAAxBI,IAAO,iBAAsCJ,EAAAA,OAArBA,IAAM,eAAqBhE,EAAAA,OAANgE,EAAAA,GAEtFM,GAAMrH,aAAa,aAAaiH,KAAgB,QAAQ,QAAA,GACxDI,GAAMrH,aAAa,YAAYoI,EAnDI;YAAA;UA9CY;QAkGnD,EAAA,KAAAvG,KAAA,CAAA,GAAA,OAAA,4BAAA,OAAA,iBAAAyH,IAAA,OAAA,0BAAAzH,EAAA,CAAA,KAAA,SAAArW,IAAAD,IAAA;AAAA,cAAAE,KAAA,OAAA,KAAAD,EAAA;AAAA,cAAA,OAAA,uBAAA;AAAA,gBAAAE,KAAA,OAAA,sBAAAF,EAAA;AAAA,YAAAD,OAAAG,KAAAA,GAAA,QAAA,SAAAH,IAAA;AAAA,qBAAA,OAAA,yBAAAC,IAAAD,EAAA,EAAA;YAAA,EAAA,IAAAE,GAAA,KAAA,MAAAA,IAAAC,EAAA;UAAA;AAAA,iBAAAD;QAAA,GAAA,OAAAoW,EAAA,CAAA,EAAA,SAAA,SAAArW,IAAA;AAAA,iBAAA,eAAA8d,IAAA9d,IAAA,OAAA,yBAAAqW,IAAArW,EAAA,CAAA;QAAA,EAAA,GAAA8d,KC9WEC,KAAY,mBCDHC,KAAA,EACX9R,OAAa,SACb+R,QAAa,2BACb3U,SAAa,oBACb4U,WAAa,kBACbC,YAAa,cCHFrG,GAAAA,KAAA,EAMXsG,SAAAA,SAAQ1S,IAAO2D,IACX;AAAA,iBAAO,gBAA2CA,OAA3BA,GAAGxI,WAAW2E,WAAU,GAAA,EAA0DE,OAAvD2D,GAAGO,OAAQ,GAAkC2H,OAAhClI,GAAGxI,WAAWwI,GAAGO,OAAO,MAAA,CAAA,IAAY,IAAG,GACxFP,EAAAA,OAD2F3D,GAAMuI,WAAU,yBAAA,EAE3G5E,OADAA,GAAGiK,WAAW,aAAa,IAAG,wBAAA,EAE9BjK,OADAA,GAAGgP,WAAW,aAAa,IAAG,wBAAA,EAE9BhP,OADAA,GAAGiP,WAAW,aAAa,IAAG,wBAG9B/G,EAAAA,OAFY,aAAZlI,GAAGO,OAAoB,uBAAuB,IAAG,4DAAA,EAGrD9P,OADIiB,KAAK6F,SAASkR,UAAUpM,MAAMrI,KAAKtC,IAAAA,GAAM,oBAAA,EACrBwW,OAAxBzX,IAAwB,mBAAA;QAEtC,GAEA4L,OAAAA,WAAAA;AACI,cAAI2D,KAAKtO,KAAK6F,UACV2X,KAAclP,GAAGkP,eAAeze;AAEpC,iBAAO,SAAmHye,OAAzGlP,CAAAA,GAAGiK,YAAYjK,GAAGnF,YAAY,oBAAoB,IAAG,oDAAA,EAAsFmF,OAAlCkP,IAAY,sBAAA,EACjHlP,OADuIA,GAAGkP,eAAe,IAAG,gCAMnJlP,EAAAA,OALTA,GAAGxI,WAAW6E,OAAM,8MAAA,EAKe6L,OAAjB,SAATlI,GAAGO,MAAuB,WAC5D;QAAA,GAEA9I,KAAAA,SAAIiL,IAASyM,IAAAA;AAAC5X,cAAUyI,KAAXmP,GAAC5X;AACV,iBAAO,eAEiByI,OAFD0C,GAAQ0M,SAAS1M,GAAQjN,OAAO;;+BAGlCuK,EAAAA,OADGA,GAAGrE,KAAKC,gBAAgB,IAAK,IAAE,gCAAA,EACb8G,OAArB1C,GAAGxI,WAAWC,KAAI,GAAA,EACzByQ,OAD4BxF,GAAQ2M,SAAS,IAAG,yBAElCrP,EAAAA,OADdtO,KAAK4d,cAAc5M,EAAAA,GAAS;mCAAA,EAC4B1C,OAA1CA,GAAGrE,KAAKC,gBAAgB,IAAK,IAAE,WAAA,EAE3CoE,OAFsDA,GAAGxI,WAAWiG,MAAK;;uBAAA,EAEkEuC,OAA/H,aAAZA,GAAGO,QAAqBP,GAAGnF,YAAY,2BAA2B,IAAG,sEAAA,EAAgG6H,OAA1B1C,GAAGxI,WAAWgG,SAAQ,IAA6C0K,EAAAA,OAAzCxF,GAAQ1C,GAAG9F,WAAgBwI,KAAAA,GAAQjN,OAAM,6CAGlO;QAAA,GAEAsH,UAAAA,SAASxF,IAAAA;AACL,cAAI0P,KAAM1P,GAASwF,UACf+M,KAA2B,YAAhB7C,GAAI1I;AAEnB,iBAAO,eAAgE0I,OAAjD6C,KAAW,KAAKvS,GAASC,WAAWuF,UAAU,GAAA,EAAoEkK,OAAjEA,GAAInJ,WAAU,mDAChBvG,EAAAA,OADmE0P,GAAIyF,MAAM,QAAQ,IAAG;4EACpDxE,EAAAA,OAApC3Q,GAASC,WAAWwF,iBAAgB,kCAAA;QAE7G,GAEAuO,iBAAAA,SAAgBD,IACZ;AAAA,cAAIiE,KAAK7d,KAAK6F,SAASkR,WACnBtC,KAAczU,KAAKmO,MAAM9C,SAASoJ;AAEtC,iBAAQ,iBAEFmF,OADAiE,GAAGtS,eAAejJ,KAAKtC,MAAMyU,EAAAA,GAAa,gBAE1CoJ,EAAAA,OADAjE,IAAY,gBAC8BpD,EAAAA,OAA1CqH,GAAGrS,eAAelJ,KAAKtC,MAAMyU,EAAa,GAAA,YAAA;QAEpD,GAEAhJ,cAAAA,SAAapH,IAAAA;AACT,iBAAQ,QACamS,OADNxW,KAAK4d,cAAcvZ,EAAAA,GAAM,+BAAA,EACsBmS,OAAzCxW,KAAK6F,SAASC,WAAW2F,cAAa,GAAA,EAA0FpH,OAAvFrE,KAAK6V,eAAexR,GAAKN,KAAS/D,IAAAA,KAAK6F,SAASC,WAAW8F,uBAAsB,IAAG,GAAA,EAEtHvH,OAFyHA,GAAKsZ,SAAS,IAAG;;mCAAA,EAE3GnH,OAA/BnS,GAAKyS,eAAezS,GAAKN,OAAM,QAAA;QAC/D,GAKAwH,gBAAAA,SAAekJ,IAAAA;AACX,iBAAQ,4DAAmG+B,OAAxCxW,KAAK6F,SAASC,WAAWyF,gBAAe,aAAA;QAC/G,GAEAC,gBAAAA,SAAeiJ,IAAAA;AACX,cAAIqJ,KAAUrJ,GAAY9U,SAASK,KAAK6F,SAASwF,SAASgB;AAE1D,iBAAOyR,KAAU,IACV,4DACGA,OADwD9d,KAAK6F,SAASC,WAAW0F,gBAAe,sBAAA,EACxFgL,OAARsH,IAAQ,yDAAA,IAEZ;QACV,GAEAzF,qBAAqB,KAAA;AAAA,iBAAA0F,GAAA9e,IAAAD,IAAA;AAAA,WAAA,QAAAA,MAAAA,KAAAC,GAAA,YAAAD,KAAAC,GAAA;AAAA,mBAAAC,KAAA,GAAAC,KAAA,IAAA,MAAAH,EAAA,GAAAE,KAAAF,IAAAE,KAAA,CAAAC,GAAAD,EAAA,IAAAD,GAAAC,EAAA;AAAA,iBAAAC;QAAA;AAAA,iBAAA6e,GAAA/e,IAAAD,IAAA;AAAA,iBAAA,QAAAA,MAAA,eAAA,OAAA,UAAAA,GAAA,OAAA,WAAA,IAAA,CAAA,CAAAA,GAAA,OAAA,WAAA,EAAAC,EAAA,IAAAA,cAAAD;QAAA;AAAA,iBAAAif,GAAAhf,IAAAD,IAAA;AAAA,kBAAA,SAAAC,IAAA;AAAA,gBAAA,MAAA,QAAAA,EAAA,EAAA,QAAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAAD,IAAA;AAAA,gBAAAE,KAAA,QAAAD,KAAA,OAAA,eAAA,OAAA,UAAAA,GAAA,OAAA,QAAA,KAAAA,GAAA,YAAA;AAAA,gBAAA,QAAAC,IAAA;AAAA,kBAAAC,IAAAmC,IAAAwB,KAAA,CAAA,GAAAJ,KAAA,MAAAsZ,KAAA;AAAA,kBAAA;AAAA,qBAAA9c,KAAAA,GAAA,KAAAD,EAAA,GAAA,EAAAyD,MAAAvD,KAAAD,GAAA,KAAA,GAAA,UAAA4D,GAAA,KAAA3D,GAAA,KAAA,GAAA,CAAAH,MAAA8D,GAAA,WAAA9D,KAAA0D,KAAA,KAAA;cAAA,SAAAzD,IAAA;AAAA,gBAAA+c,KAAA,MAAA1a,KAAArC;cAAA,UAAA;AAAA,oBAAA;AAAA,kBAAAyD,MAAA,QAAAxD,GAAA,UAAAA,GAAA,OAAA;gBAAA,UAAA;AAAA,sBAAA8c,GAAA,OAAA1a;gBAAA;cAAA;AAAA,qBAAAwB;YAAA;UAAA,GAAA7D,IAAAD,EAAA,MAAA,SAAAC,IAAAD,IAAA;AAAA,gBAAA,CAAAC,GAAA;AAAA,gBAAA,YAAA,OAAAA,GAAA,QAAA8e,GAAA9e,IAAAD,EAAA;AAAA,gBAAAE,KAAA,OAAA,UAAA,SAAA,KAAAD,EAAA,EAAA,MAAA,GAAA,EAAA;AAAA,yBAAAC,MAAAD,GAAA,gBAAAC,KAAAD,GAAA,YAAA;AAAA,gBAAA,UAAAC,MAAA,UAAAA,GAAA,QAAA,MAAA,KAAAA,EAAA;AAAA,gBAAA,gBAAAA,MAAA,2CAAA,KAAAA,EAAA,EAAA,QAAA6e,GAAA9e,IAAAD,EAAA;UAAA,GAAAC,IAAAD,EAAA,MAAA,WAAA;AAAA,kBAAA,IAAA,UAAA,4IAAA;UAAA,GAAA;QAAA;AAAA,iBAAAkf,GAAAjf,IAAAD,IAAA;AAAA,WAAA,QAAAA,MAAAA,KAAAC,GAAA,YAAAD,KAAAC,GAAA;AAAA,mBAAAC,KAAA,GAAAC,KAAA,IAAA,MAAAH,EAAA,GAAAE,KAAAF,IAAAE,KAAA,CAAAC,GAAAD,EAAA,IAAAD,GAAAC,EAAA;AAAA,iBAAAC;QAAA;AAAA,iBAAAgf,GAAAlf,IAAAD,IAAAE,IAAA;AAAA,iBAAAF,MAAAC,KAAA,OAAA,eAAAA,IAAAD,IAAA,EAAA,OAAAE,IAAA,YAAA,MAAA,cAAA,MAAA,UAAA,KAAA,CAAA,IAAAD,GAAAD,EAAA,IAAAE,IAAAD;QAAA;AAAA,iBAAA2W,GAAA3W,IAAAD,IAAA;AAAA,iBAAA,QAAAA,MAAA,eAAA,OAAA,UAAAA,GAAA,OAAA,WAAA,IAAA,CAAA,CAAAA,GAAA,OAAA,WAAA,EAAAC,EAAA,IAAAA,cAAAD;QAAA;AAAA,iBAAAof,GAAAnf,IAAAD,IAAA;AAAA,iBAAAA,KAAA,QAAAA,KAAAA,KAAA,CAAA,GAAA,OAAA,4BAAA,OAAA,iBAAAC,IAAA,OAAA,0BAAAD,EAAA,CAAA,KAAA,SAAAC,IAAAD,IAAA;AAAA,gBAAAE,KAAA,OAAA,KAAAD,EAAA;AAAA,gBAAA,OAAA,uBAAA;AAAA,kBAAAE,KAAA,OAAA,sBAAAF,EAAA;AAAA,cAAAD,OAAAG,KAAAA,GAAA,QAAA,SAAAH,KAAA;AAAA,uBAAA,OAAA,yBAAAC,IAAAD,GAAA,EAAA;cAAA,EAAA,IAAAE,GAAA,KAAA,MAAAA,IAAAC,EAAA;YAAA;AAAA,mBAAAD;UAAA,GAAA,OAAAF,EAAA,CAAA,EAAA,SAAA,SAAAE,IAAA;AAAA,mBAAA,eAAAD,IAAAC,IAAA,OAAA,yBAAAF,IAAAE,EAAA,CAAA;UAAA,EAAA,GAAAD;QAAA;AAAA,iBAAAof,GAAApf,IAAA;AAAA,kBAAA,SAAAA,IAAA;AAAA,gBAAA,MAAA,QAAAA,EAAA,EAAA,QAAAif,GAAAjf,EAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAA;AAAA,gBAAA,eAAA,OAAA,UAAA,QAAAA,GAAA,OAAA,QAAA,KAAA,QAAAA,GAAA,YAAA,EAAA,QAAA,MAAA,KAAAA,EAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAAD,IAAA;AAAA,gBAAA,CAAAC,GAAA;AAAA,gBAAA,YAAA,OAAAA,GAAA,QAAAif,GAAAjf,IAAAD,EAAA;AAAA,gBAAAE,KAAA,OAAA,UAAA,SAAA,KAAAD,EAAA,EAAA,MAAA,GAAA,EAAA;AAAA,yBAAAC,MAAAD,GAAA,gBAAAC,KAAAD,GAAA,YAAA;AAAA,gBAAA,UAAAC,MAAA,UAAAA,GAAA,QAAA,MAAA,KAAAA,EAAA;AAAA,gBAAA,gBAAAA,MAAA,2CAAA,KAAAA,EAAA,EAAA,QAAAgf,GAAAjf,IAAAD,EAAA;UAAA,GAAAC,EAAA,MAAA,WAAA;AAAA,kBAAA,IAAA,UAAA,uIAAA;UAAA,GAAA;QAAA;AC7DV,YAAAsO,KAAA,EAEX+Q,eAAAA,WAAAA;AAAAA,cAAAA,KAAAA;AACIte,eAAKue,iBAAiBtW,SAAQuW,SAAAA,IAAAA;AAC1BpP,YAAAA,GAAKqP,GAAGD,IAAMpP,GAAKvJ,SAAS8C,UAAU6V,EAAAA,CAAAA;UAC1C,EACJ;QAAA,GAEAhR,SAAAA,WAAAA;AAASC,cAGDE,IAHCF,KAAAA,EAAAA,UAAa9N,SAAA,KAAA,WAAAD,UAAA,CAAA,MAAAA,UAAA,CAAA,GACd4O,KAAKtO,KAAK6F,UACV6H,KAAM1N,KAAKuN,OAAO5E,WAElB9G,KAAS4L,KAAa,qBAAqB;AAG/C,cAAA,EAAIzN,KAAMmO,MAAMuQ,cAAcjR,MAAgBa,GAAGgP,YAAYhP,GAAGiK,WAAhE;AA0BA,qBAASoG,MArBT3e,KAAKmO,MAAMuQ,aAAajR,IAGpBA,MAAAA,CAAezN,KAAK4N,UAAUgR,SAC9B5e,KAAKuN,OAAOsR,WAAWvc,KAAKtC,IAAAA,GAExBA,KAAK6F,SAASiZ,kBACdC,OAAO/e,KAAKoG,IAAI4Y,aAAAA,EAAeP,GAAG,wBAAwBze,KAAKif,cAAcpR,KAAK7N,IAAAA,CAAAA,IAI1F2N,KAAQ3N,KAAK4N,UAAUgR,OAAO5e,KAAK4N,UAAUgR,QAAQ,EACjDM,SAAmB,CAAC,SAASxR,GAAIyR,UAAUtR,KAAK7N,IAAAA,CAAAA,GAChDof,OAAmB,CAAC,SAAS1R,GAAI2R,aAAaxR,KAAK7N,IACnDsf,CAAAA,GAAAA,UAA8B,YAAXhR,GAAGO,QAAoB,CAAC,SAASnB,GAAI6R,mBAAmB1R,KAAK7N,IAAAA,CAAAA,GAChFwf,OAAmB,CAAC,SAAS9R,GAAI+R,QAAQ5R,KAAK7N,IAC9C0f,CAAAA,GAAAA,MAAmB,CAAC,SAAShS,GAAIiS,OAAO9R,KAAK7N,IAAAA,CAAAA,GAC7C4f,kBAAmB,CAAC,SAASlS,GAAImS,mBAAmBhS,KAAK7N,IACzD8f,CAAAA,GAAAA,gBAAmB,CAAC,SAASpS,GAAIqS,iBAAiBlS,KAAK7N,IAAAA,CAAAA,EAAAA,EAIvD2N,CAAAA,GAAKgR,EAAc3e,KAAAA,KAAKoG,IAAIuH,GAAKgR,EAAW,EAAA,CAAA,CAAA,EAAI9c,EAAAA,EAAQ8c,IAAWhR,GAAKgR,EAAAA,EAAW,CAIvF,CAAA;AAAA,gBAAIqB,KAAwBhgB,KAAK4N,UAAUgR,KAAKoB,yBAAyB,IAAIC,iBAAiBvS,GAAIwS,iBAAiBrS,KAAK7N,IAGxHggB,CAAAA;AAAAA,YAAAA,GAAsBG,WAAAA,GAGP,SAAX7R,GAAGO,QACHmR,GAAsBI,QAAQpgB,KAAKoG,IAAIuE,OAAO,EAAC0V,WAAAA,KAGnDrgB,CAAAA,GAAAA,KAAKuN,OAAO+S,yBAAyBhe,KAAKtC,IAAAA,GAEtCyN,OACAzN,KAAK4N,UAAUgR,OAAOnb;UA3CtB;QA6CR,GAEA6c,0BAAAA,SAAyBC,IACrB;AAAA,cAAMC,MAASD,MAAO,KAAK;AAEvBvgB,eAAK4N,UAAUgR,SAGnB6B,cAAczgB,KAAK4N,UAAUgR,KAAK8B,kCAClC1gB,GAAAA,KAAK4N,UAAUgR,KAAK8B,qCAAqCC,YAAY3gB,KAAKuN,OAAO5E,UAAUiY,0BAA0B/S,KAAK7N,IAAAA,GAAOwgB,EACrI;QAAA,GAEA3B,YAAAA,SAAYgC,IACR;AAAA,cAEI7hB,IAFA0O,KAAM1N,KAAKuN,OAAO5E,WAClB9G,KAASgf,KAAS,wBAAwB;AAG9C,cAAK7gB,KAAK4N,cAAeiT,MAAAA,CAAW7gB,KAAK4N,UAAUkT,SAAnD;AAGA9gB,iBAAK4N,UAAUkT,SAAS9gB,KAAK4N,UAAUkT,UAAU,CAC7C,EACI5e,MAAMlC,KAAK+gB,OAAO,YAAY,SAC9BjP,QAAQ9R,KAAKoG,IAAIuE,OACjBqW,IAAItT,GAAI1N,KAAK+gB,OAAO,cAAc,SAAA,EAAWlT,KAAK7N,IAEtD,EAAA,GAAA,EACIkC,MAAM,WACN4P,QAAQxS,QACR0hB,IAAItT,GAAIuT,gBAAgBpT,KAAK7N,IAEjC,EAAA,GAAA,EACIkC,MAAM,WACN4P,QAAQ9R,KAAKoG,IAAIC,OACjB2a,IAAItT,GAAIwT,YAAYrT,KAAK7N,IAAAA,EAAAA,GAE7B,EACIkC,MAAM,YACN4P,QAAQ9R,KAAKoG,IAAIC,OACjB2a,IAAItT,GAAIwT,YAAYrT,KAAK7N,IAAAA,EAAAA,GAE7B,EACIkC,MAAM,SACN4P,QAAQlL,UACRoa,IAAItT,GAAIyT,gBAAgBtT,KAAK7N,IAAAA,GAC7BohB,YAAY,KAAA,CAAA;AAIfpiB,gBAAAA,KAAAA,MAAAA,KAAAA,OAAAA,KAAAA;AAAAA,gBAAL;AAAA,uBAAKA,IAAAA,KAAKgB,KAAK4N,UAAUkT,OAApB9hB,OAAAA,QAAAA,EAAAA,GAAAA,EAAAA,MAAAA,KAAAA,GAAAA,KAAAA,GAAAA,OAAAA,KAAAA,KAAAA,EAAAA,KAAAA,GAAAA,OACC8S,OAAOjQ,EAAAA,EAAQ7C,GAAEkD,MAAMlD,GAAEgiB,IAAMhiB,CAAAA,CAAAA,GAAEoiB,UAAAA;YAAAA,SAAAA,IAAAA;AADlCpiB,cAAAA,KAAAA,MAAAA,KAAAA;YAAAA,UAAAA;AAAAA,kBAAAA;AAAAA,gBAAAA,MAAAA,QAAAA,GAAAA,UAAAA,GAAAA,OAAAA;cAAAA,UAAAA;AAAAA,oBAAAA,GAAAA,OAAAA;cAAAA;YAAAA;AAGD6hB,YAAAA,OACA7gB,KAAK4N,UAAUkT,SAAAA;UAASrd;QAEhC,GAEA4d,cAAAA,WACIrhB;AAAAA,eAAKuN,OAAOsR,WAAWvc,KAAKtC,MAAM,IAAA;QACtC,GAKA2I,WAAY,EACRuY,aAAAA,SAAYliB,IAAAA;AAAAA,cA2BkBsiB,IAAAC,IAzBtBjT,KAAKtO,KAAK6F,UACV2b,KAAUxb,GAAgB1D,KAAKtC,MAAMhB,GAAEyiB,aAAAA,GACvCC,KAAkBpc,GAAUhD,KAAKtC,MAAMhB,GAAE8S,MAAAA,GACzC6P,KAAe3iB,GAAE8S,OAAOnM,UAAUC,SAAS0I,GAAGxI,WAAWiG,IACzD6V,GAAAA,KAAsB,aAAV5iB,GAAEkD,MACd2f,KAAsB,cAAV7iB,GAAEkD;AAMfyf,UAAAA,MAA2B,SAAXrT,GAAGO,QAAiBP,GAAGjF,sBACtCrJ,KAAKoG,IAAIuE,MAAMC,MAAAA,GAGf4W,MAAWI,MAAAA,CAAeF,MAAAA,CAAqBC,MAC/C3hB,KAAKkU,iBAAiBlU,KAAKmO,MAAMC,WAAAA,CAAY,oBAAI0T,MAAAA;AAQrD,cAAIC,KAAO/iB,GAAE8S,SAAS9R,KAAKO,KAAKP,KAAKoG,IAAIuE,MAAMqX,WAAAA,IAAe,IAC1DC,KAAsB,UAAAV,KAAAvhB,KAAK+D,UAAAA,WAALwd,MAAA,UAAAD,KAAAC,GAAa,CAAA,MAAA,WAAbD,KAAA,SAAAA,GAAkBhT,GAAG9F,WAC3C0Z,GAAAA,KAAY5T,GAAGjD,SAASf,WAAW,GACnC6X,KAAY,EAACV,eAAcziB,GAAEyiB,cAAAA,GAC7BW,KAAuBpiB,KAAKmO,MAAMmC,QAAQQ,iBAAiBoR,MAAc5T,CAAAA,GAAGjD,SAASsB,gBACrF0V,KAAoBriB,KAAKmO,MAAMmC,QAAQgS,UAAUJ;AAGrD,cAAIL,IAAW;AACX,gBAAI7iB,GAAEyiB,kBAAkBzhB,KAAKoG,IAAIC,MAG7B,QAFArG,KAAKqL,SAASgF,KACdrQ,GAAAA,KAAAA,KAAKoG,IAAIuE,MAAMC,MAAAA;AAInB5K,iBAAKuiB,WACLjU,GAAAA,GAAGxF,qBAAqB9I,KAAKwiB,mBAAAA;UACjC;AAEA,cAAA,EAAIJ,MAAwBC,MAAqBV,IAcjD,KARI3hB,KAAKmO,MAAMC,WADXwT,EAAAA,CAAAA,MAAAA,CAAaJ,OAAAA,CACU,oBAAIM,QAM/B9hB,KAAKkU,iBAAiBlU,KAAKmO,MAAMC,QAElB,GAAA,SAAXE,GAAGO,MAAP;AAiBA,gBAAI+S,IAAW;AACX,kBAAKtT,CAAAA,GAAGlF,UAAY;AAMpB,kBAAIqZ,KAA6C,MAAxBnU,GAAGjD,SAASf,WAAAA,CAAkBtK,KAAKmO,MAAM9C,SAASqN,SACvE5M,KAAU9L,KAAKoG,IAAIC,MAAMmI,cAAcxO,KAAK6F,SAASC,WAAW4c,eAAAA;AAYpE,qBAVA1iB,KAAKmS,QAAQ,SAASgQ,EAElBM,GAAAA,MAAAA,MAAAA,CAAuBf,OACvB1hB,KAAKqL,SAASyM,KAAK9X,KAAK+D,MAAMpE,SAAS,KAAK8D,MAAAA,GAE7B,aAAZ6K,GAAGO,QACF7O,KAAK2iB,mBAAmB,OAAO7W,EAAAA;YAK3C;AAEK,gBAAI+V,IAAW;AAMhB,kBALA7hB,KAAKmS,QAAQ,QAAQgQ,EAAAA,GACrBniB,KAAK4iB,QAAQ,KAAA,GAIE,YAAXtU,GAAGO,MAAmB;AACtB,oBAAI7O,KAAK+D,MAAMpE,QAAS;AACpB,sBAAIkjB,KAAe7iB,KAAK8iB,WAAAA,EAAa,CACrCf;AAAAA,kBAAAA,KAAO/hB,KAAKO,KAAKsiB,GAAab,WAClC;gBAAA;AAGIC,gBAAAA,OAAwBF,OACxBA,KAAO;cACf;AAEgBA,cAAAA,MAAAA,CAAS/hB,KAAKmO,MAAMmC,QAAQQ,gBAAgBxC,GAAG1F,gBAAgB0F,GAAGzF,SAAStE,SAAS,MAEnFvE,KAAAA,KAAKsR,QAAQyQ,IAAM,IAAA;YACxC;AAGMP,YAAAA,OACFxhB,KAAKoG,IAAIuE,MAAM0I,gBAAgB,OAAA,GAC/BrT,KAAKqL,SAASgF,KAAAA;UAlDlB,MAdQuR,CAAAA,KACA5hB,KAAKmS,QAAQ,SAASgQ,EAAAA,IAGjBN,OACL7hB,KAAKmS,QAAQ,QAAQgQ,EACrBniB,GAAAA,KAAK4iB,QAAAA,KACL5iB,GAAAA,KAAKqL,SAASgF,KAEdrQ,GAAAA,KAAKmO,MAAM9C,SAASqN,UAAUjV,QAC9BzD,KAAK2Y,kBAwDjB;QAAA,GAEAkH,oBAAAA,SAAmB7gB,IAAAA;AACfgB,eAAKmO,MAAME,YAAAA;QACf,GAEA0R,kBAAAA,SAAiB/gB,IAAAA;AACbgB,eAAKmO,MAAME,YAAAA;QACf,GAEA4S,iBAAAA,SAAgBjiB,IAAAA;AACZ,cAQI+jB,IARAzU,KAAKtO,KAAK6F,UACVmd,KAAapc,SAASqc,eAEtBC,KADYld,GAAgB1D,KAAKtC,MAAMgjB,EAAAA,KACfhjB,KAAKoG,IAAIC,MAAMT,SAASod,EAChDG,GAAAA,KAAcH,OAAehjB,KAAKoG,IAAIuE,OACtCyY,KAAiBF,MAAYF,GAAWK,aAAa,UACrDvX,GAAAA,KAAU9L,KAAKoG,IAAIC,MAAMmI,cAAcxO,KAAK6F,SAASC,WAAW4c,eAChEY,GAAAA,KAAoBtjB,KAAKmO,MAAM9C,SAASqN;AAG5C,eAAgB,UAAV1Z,GAAEgE,OAAiBsgB,MAAuBtjB,KAAKmO,MAAMC,YAAc8U,MAAYE,CAAAA,OAAAA,CAAmBD,IAAxG;AAEAJ,YAAAA,KAAUC,GAAWO;AAErB,gBAAIC,KAAoBxkB,GAAE8S,OAAOnM,UAAUC,SAAS0I,GAAGxI,WAAWiG,IAAAA;AAElE,oBAAQ/M,GAAEgE,KAAAA;cAEN,KAAK;AACIsL,gBAAAA,GAAGiK,YAAavY,KAAKmO,MAAMsC,YAC5BzQ,KAAK2R,WAAWqR,EAAAA,IACfD,MAAoB/iB,KAAKoG,IAAIuE,OAAOC,MAGzC;AAAA;cAGJ,KAAK;AACD,oBAAI4Y,GAEA,QAAA,KADAxjB,KAAK2R,WAAY3S,GAAE8S,OAAOxK,UAAAA;AAI1BgH,gBAAAA,GAAGrE,KAAKC,iBAAiB5E,GAAUhD,KAAKtC,MAAMgjB,EAC9CjS,KAAAA,WAAW/Q,KAAK4R,QAAQ/D,KAAK7N,IAAO,GAAA,GAAGgjB,EAAAA;AAE3C;cAGJ,KAAK;AAEIhjB,qBAAKmO,MAAM9C,SAASqN,WAAsB,SAAXpK,GAAGO,QACnC7O,KAAKqL,SAASyM,KAClB;AAAA;cAGJ,KAAK;AACDhM,wBAAAA,MAAAA,GAASlB,MAAAA;YAAAA;UArCqG;QAyC1H,GAEAuU,WAAAA,SAAUngB,IAAAA;AAAAA,cAAAA,KAAAA,MACFsP,KAAKtO,KAAK6F;AAGd,cAAA,CAAI7F,KAAKmO,MAAME,aAAcC,GAAGnF,WAAhC;AAGe,wBAAXmF,GAAGO,QAAoBP,GAAGpF,oBAAoBlJ,KAAK+D,MAAMpE,UAAmB,SAATX,GAAEgE,OACrEhE,GAAEkQ,eAAAA;AAGN,gBAAI5N,KAAItB,KAAKO,KAAKvB,GAAE8S,OAAOkQ,WAE3BhiB;AAAAA,iBAAKmS,QAAQ,WAAW,EAACwB,OAAM3U,GAE/BsP,CAAAA,GAAAA,GAAGvB,MAAMM,cAAcrO,IAAG,EAAC+P,QAAO/O,KAC7BgP,CAAAA,EAAAA,MAAKC,SAAAA,IAIF;AAAA,kBAAe,SAAXX,GAAGO,MAAe;AAClB,wBAAQ7P,GAAEgE,KACN;kBAAA,KAAK;kBACL,KAAK;AAGDoM,oBAAAA,GAAKjB,MAAMmC,QAAQC,YAAY;AAC/B;kBAGJ,KAAK;kBACL,KAAK;AACD,wBAAInB,GAAKjB,MAAMsC,QAAU;AAEzB,wBAAIjJ,KAAMZ,SAASF,aAAAA,GACf+c,KAAgC,YAATzkB,GAAEgE,OAAmBwE,GAAIkc,iBAAiBlc,GAAImc,WAAWhkB,UAAU,IAC1FikB,KAAoBpc,GAAImc,WAAWzb,iBACnC2b,KAA6C,KAA3Brc,GAAImc,WAAW7hB,YAAAA,CAAkB0F,GAAIkc,gBAAgBE,MAAmD,KAA9BA,GAAkB9hB,YAAiB0F,GAAImc,WAAWzb;AAAAA,sBPrV3K,SAAiB5G,IAAAA;AACpB,0BAAIwiB,KAAKld,SAASmd,cAAc,KACzBziB;AAAAA,sBAAAA,GAAEU,QAAQ,qBAAoB,SAASgiB,IAE1C;AAAA,+BADAF,GAAGhK,YAAYkK,IACRF,GAAGG;sBACd,EAAA;oBACJ,GOgV4D7U,GAAKhJ,IAAIuE,MAAMmP,SAAAA;AACvCoK,wBAGAC,IACAC,IACAC,IALAH,KAAe9U,GAAK0T,WACpBwB,GAAAA,KAAkC,MAA1B9c,GAAImc,WAAWhkB,UAAgB6H,GAAImc,WAAWY,aAAa5f,OAAO6f,aAAa,IAAA;AAM3F,wBAAoB,UAAhBlW,GAAG5E,aAAuBma,GAI1B,QAHAM,KAA4C,KAA3B3c,GAAImc,WAAW7hB,WAAgB,OAAO0F,GAAImc,WAAWc,wBACtE1T,WAAW3B,GAAKwC,QAAQ/D,KAAYuB,EAAAA,GAAA,GAAG+U,EAAAA,GAAAA,KACvCnlB,GAAEkQ,eAIN;AAAA,wBAAIrK,GAAAA,KAA2C6f,GAAfb,IAA2Bc,OAAAA,EAevD,QAdAN,KAAyB1iB,GAAiBkiB,EAErCA,GAAAA,GAAgBR,aAAa,UAC9BQ,KAAAA,GAAgBzQ,OAAAA,GAIpBhE,GAAKhJ,IAAIuE,MAAMC,MACfmG,GAAAA,KAAAA,YAAW,WACP1J;AAAAA,sBAAAA,GAAoBgd,EACpBjV,GAAAA,GAAKhJ,IAAIuE,MAAMyU,MAAAA;oBAEnB,EAAA;AAKJ,wBAA+B,QAA3B5X,GAAImc,WAAWiB,SACf;AAyBJ,yBAvBKnB,MAAwBI,OAA+C,KAA3Brc,GAAImc,WAAW7hB,WAExDsiB,KADoB,KAApB5c,GAAIkc,eACgBD,KACdS,GAAa,CACb,IAAA,OAEcA,GAAatU,KAAKQ,IAAI8T,GAAavkB,QAAQ6H,GAAIkc,YAAAA,IAAgB,CAGlFD,IAAAA,KACLW,KAAoB5c,GAAImc,WAAWJ,qBAE9BM,GAAAA,IAA2Bc,OAAAA,MAChCP,KAAoBP,KAGO,KAA3Brc,GAAImc,WAAW7hB,YACd0F,CAAAA,GAAImc,WAAWY,aAChB/c,GAAImc,WAAWc,0BACfzlB,GAAEkQ,eAID2U,IAAAA,MAAmBJ,OAAAA,CAA0BnV,GAAG5E,UAEjD,QADA1K,KAAAA,GAAEkQ,eAIN;AAAA,wBAAgB,WAAZ1H,GAAItF,QAAAA,CAAoBsF,GAAIkc,gBAAgBlc,GAAImc,cAAcvU,GAAKhJ,IAAIuE,SAAkB,YAAT3L,GAAEgE,IAElF,QAAA,KADAhE,GAAEkQ,eAAAA;AAIN,wBAAgB,WAAZ1H,GAAItF,QAAmBkiB,MAAqBA,GAAkBf,aAAa,UAK3E,EAAA,QAAA,KADAhc,GAAqB1F,GAAiByiB,EAAAA,CAAAA;AAI5B,gCAATplB,GAAEgE,OAAmBshB,MAAStd,GAAcQ,GAAImc,WAAWpc,WAAAA,KAC5D6H,GAAKuC,WAAWnK,GAAImc,WAAWpc,WAAAA;AAiBnC;kBAGJ,KAAK;AAGD,wBAFAvI,GAAEkQ,eAAAA,GAECE,GAAKjB,MAAMpI,IAAK;AAEnB,wBAAIU,KAAYnH,OAAOoH,aACXD;AAAAA,oBAAAA,GAAUE,WAAW,CAC3BI,EAAAA,WAAWH,SAASmd,cAAc,IACxCtd,CAAAA,GAAAA,GAAUoe,cAAAA;gBAAAA;AAIlB,uBAAO;cACX;AAEA,kBAAIC,KAA2C,YAAxBxW,GAAGjD,SAASwB;AAEnC,sBAAQ7N,GAAEgE,KAAAA;gBACN,KAAK;AACc,8BAAXsL,GAAGO,QAAoBP,GAAGpF,oBAAoBkG,GAAKrL,MAAMpE,SACzDyP,GAAKuC,WAAAA,IAECvC,GAAKjB,MAAM9C,SAASqN,WAAmC,YAAxBpK,GAAGjD,SAASwB,YACrB,MAAxB7N,GAAE8S,OAAOkQ,eAAwC,QAAnB1gB,GAAEoQ,WAAW,CAAA,MAAA,SACvCpD,GAAG5E,YACH0F,GAAKuC,WACgB,IAAA,UAAhBrD,GAAG5E,aACRqH,WAAW3B,GAAKwC,QAAQ/D,KAAYuB,EAAAA,GAAA,CAAA;AAGhD;gBAEJ,KAAK;gBACL,KAAK;AACD,sBAAIA,GAAKjB,MAAM9C,SAASqN,QAAU;AAClC1Z,kBAAAA,GAAE8S,OAAOiT,KAAAA;AACT;gBAEJ,KAAK;gBACL,KAAK;AAEI3V,kBAAAA,GAAKjB,MAAM9C,SAASqN,WACrBtJ,GAAK/D,SAASyM,KAClB;AAAA;gBAEJ,KAAK;AACD,sBAAI9G,KAAU5B,GAAKjB,MAAM6W,mBAAmB5V,GAAKjB,MAAMmF;AACvD,sBAAItC,MAAW1C,GAAGjE,aAAaE,SAE3B,QADA6E,KAAAA,GAAKkC,QAAQ,CAACN,EAAAA,GAAAA,IAGlB;AAAA;gBAGJ,KAAK;AAED,sBAAA,CADqB1C,GAAGzF,SAAStE,SAASvF,GAAEgE,IAAIxC,YAAAA,CAAAA,EAE5C;gBAIR,KAAK;AAED,sBAAI4O,GAAKjB,MAAM9C,SAASqN,WAAYoM,CAAAA,GAAmB;AAEvD,sBAAIG,KAAa7V,GAAKjB,MAAMwC,oBAAoBrP;AAGhD,sBAAA,CAAI2jB,MAAwB,UAAVjmB,GAAEgE,IAAe,QAAA;AAEnChE,kBAAAA,GAAEkQ,eAOF6B,GAAAA,YAAW,WAAA;AACD3B,oBAAAA,GAAKjB,MAAM9C,SAASqN,WAAWoM,CAAAA,MAAsB1V,GAAKjB,MAAMmC,QAAQQ,gBAAgBxC,CAAAA,GAAGzF,SAAStE,SAASvF,GAAEgE,IAAIxC,YAAAA,CAAAA,MACrH4O,GAAKkC,QAAQ,CAAC2T,EAAAA,GAAAA,IACd7V,GAAAA,GAAKjB,MAAMwC,mBAAmB;kBAEtC,EAAA;cAAA;YAAA,EAIXa,EAAAA,OAAMhN,SAAAA,IAAOA;AAAAA,qBAAAA;YAAAA,EAzNd;UAAA;QA0NR,GAEA0gB,SAAAA,SAAQlmB,IAAAA;AACJgB,eAAKuiB,WAEL;AAAA,cAAIjU,KAAKtO,KAAK6F;AAEd,cAAe,SAAXyI,GAAGO,KACH,QAAO7O,KAAKuN,OAAO5E,UAAUwc,eAAe7iB,KAAKtC,MAAMhB,EAAAA;AAE3D,cAAI+E,KAAQ/D,KAAK2K,MAAM/F,UAAUtC,KAAKtC,MAAAA,QAAiB,EAACO,MAAAA,MAAM,CAAA,GAC1D6kB,KAAkBrhB,GAAMpE,UAAU2O,GAAGjD,SAASf,SAC9C6X,KAAY,EAACpe,OAAAA,IAAOshB,UAASrlB,KAAKoG,IAAIuE,MAAAA,GACtC2a,KAAatlB,KAAKulB,YAAY,EAACxhB,OAAAA,GAEpB,CAAA;AAAA,sBAAXuK,GAAGO,QACH7O,KAAKwlB,sBAAsBF,EAG/BnD,GAAAA,GAAUsD,UAAUH,IAIhBtlB,KAAKmO,MAAMoD,aAAaxN,OAG5B/D,KAAK2K,MAAMkG,IAAIvO,KAAKtC,MAAM+D,IAAAA,KAAO,GAAA,MAI7BA,GAAM2hB,OAAOpX,GAAGhG,UACZtI,IAAAA,KAAKsR,QAASvN,EACd/D,KAAAA,KAAK2K,MAAMkG,IAAIvO,KAAKtC,IAAAA,IAInBsO,GAAGjD,SAASf,WAAW,KAC5BtK,KAAKqL,SAAS+Z,KAAkB,SAAS,MAAA,EAAQrhB,EAGrD/D,GAAAA,KAAKmS,QAAQ,SAASgQ,EAAAA;QAC1B,GAEAgD,gBAAAA,SAAgBnmB,IAAAA;AAAAA,cACR2mB,IAAWC,IAAOC,IAAqB9f,IAAKqf,IAAiB3e,IAG7Dqf,IACAC,IAAAA,KAAAA,MAHAzX,KAAKtO,KAAK6F,UACVmgB,KAAgBhmB,KAAK+D,MAAMpE,QAG3BsmB,KAAYjmB,KAAK8iB,WAAAA,GACjBoD,KAAWtf,SAASuf,uBACpB3f,GAAAA,KAAQlH,OAAOoH,aAAeC,EAAAA,WAAW,CAAA,GACzCyf,KAAsB,CAAA,EAAGvlB,IAAIyB,KAAK2jB,KAAW1gB,SAAAA,IAAQyB;AAAAA,mBAAAA,GAAczB,EAAMxB,EAAAA;UAAAA,EAAAA;AA2B7E,cAvBmB,2BAAf/E,GAAEqnB,aAAwCxhB,GAAAA,KAC1C7E,KAAKuN,OAAO5E,UAAUwW,UAAU7c,KAAKtC,MAAM,EACvC8R,QAAQ9S,GAAE8S,QACV9O,KAAK,YAMb8E,CAAAA,GAAAA,GAAoB9H,KAAK8iB,WAAAA,CAAAA,GAGzB9iB,KAAK+D,MAAMvB,MAAAA,EAAQyF,SAAQ5D,SAAAA,IAAAA;AACnBA,YAAAA,GAAKkU,YAAAA,CAAa6N,GAAoB7hB,SAASF,GAAKN,KACpDmiB,KAAAA,GAASvM,YAAavK,GAAKkX,cAAcjiB,EACjD,CAAA;UAAA,EAAA,GAEI6hB,GAASK,WAAW5mB,WACpB6G,GAAMO,WAAWmf,EAAAA,GACjBlmB,KAAK2iB,mBAAmB,OAAOuD,GAASM,SAIxCP,IAAAA,GAAUtmB,UAAUqmB,GAGpB,QAFAhmB,KAAK+D,QAAQ,CAAA,EAAGlD,IAAIyB,KAAKtC,KAAK8iB,WAAAA,IAAcvd,SAAAA,IAAAA;AAAAA,mBAAQyB,GAAczB,EAAAA;UAAAA,EAAAA,GAAAA,KAClEvF,KAAKymB,OAAO,EAAEC,oBAAAA,KAIlB,CAAA;AAAA,cAAI1mB,KAAKiL,WACL,EAAA,QAAA;AAEJ,cAAI3L,OAAOoH,iBACPD,KAAYnH,OAAOoH,aAGLe,GAAAA,aAAa,KAAsC,KAAjChB,GAAUkd,WAAW7hB,UAAe;AAehE,iBAdA0E,KAAQC,GAAUE,WAAW,CAAA,EAAGggB,WAAAA,GAC1Bhf,SAAS,IAAA,GACfnB,GAAM6V,SAAS5V,GAAUmgB,WAAW,CAIpCf,GAAAA,MAFAF,KAAYnf,GAAMnE,SAAAA,EAAWG,MAAM,GAAGgE,GAAMqgB,SAAAA,GAEZtkB,MAAM+L,GAAG/F,OAAAA,EAAS5I,SAAS,IAE3DimB,KAAQD,GAAUC,MAAOtX,GAAG/F,OAIxBxC,OAAAA,KAAM4f,GAAUnjB,MAAOmjB,GAAUmB,YAAYlB,GAAMA,GAAMjmB,SAAO,CAAA,CAAA,CAAA,IAEhEoG,IAAK;AAUL,kBATA/F,KAAKmO,MAAMmC,QAAQC,YAAAA,OACnBvQ,KAAKmO,MAAMpI,MAAM,EACbghB,QAAShhB,GAAI6f,MAAMtX,GAAG/F,OAAAA,EAAS,CAC/BxE,GAAAA,OAASgC,GAAI/D,QAAQsM,GAAG/F,SAAS,EAErCvI,EAAAA,GAAAA,KAAKmO,MAAMpI,IAAImT,aAAazS,GAAUyS,aAAalZ,KAAKmO,MAAMpI,IAAIhC,MAAMpE,QAExEomB,KAAkB/lB,KAAKmO,MAAMpI,IAAIhC,MAAM6hB,MAAMtX,GAAGhG,UAO5C,EAAA,QAJAtI,KAAKmO,MAAMpI,IAAIhC,QAAQ/D,KAAKmO,MAAMpI,IAAIhC,MAAM/B,QAAQsM,GAAGhG,YAAY,EACnEtI,GAAAA,KAAKmO,MAAMpI,IAAIuC,aAAayd,GAAgB,CAC5C/lB,GAAAA,KAAKsR,QAAQtR,KAAKmO,MAAMpI,IAAIhC,OAAOuK,GAAGjD,SAASuB,aAC/C5M,GAAAA,KAAAA,KAAKqL,SAASgF,KAIlB+U;AAAAA,cAAAA,KAAkBplB,KAAKmO,MAAMpI,IAAIhC,MAAMpE,UAAU2O,GAAGjD,SAASf;AAU7D,kBAEIwb;AAAAA,gBAAAA,MADAA,KAAkB9lB,KAAKmO,MAAM8K,YAAYjZ,KAAKmO,MAAMpI,IAAImT,UAAAA,GACtB6N,UAAY/mB,KAAKmO,MAAMpI,IAAIghB,UAC3CjB,GAAgB/hB,MAAM,CAAA,KAAM/D,KAAKmO,MAAMpI,IAAIhC,MAAM,CAAA,GAG/D/D,KAAKmO,MAAM8K,YAAYjZ,KAAKmO,MAAMpI,IAAImT,UAAgBlZ,KAAAA,CAAAA,KAAKmO,MAAMpI,IAAIhC,SAAAA,OAC9D/D,KAAKmO,MAAM8K,YAAYjZ,KAAKmO,MAAMpI,IAAImT,UAAAA;cAAAA,SAE/C1U,IAAAA;cAAK;AAKPshB,eAAAA,MAAmBD,KAAsB7lB,KAAKmO,MAAMhE,QAAQ0b,yBAC5DT,KAAkB;YAAA,MAItBplB,MAAKmO,MAAM8K,cAAc,CAAA;AAG7BjZ,iBAAKmO,MAAMhE,QAAQ0b,sBAAsBA;UAC7C;AAOJ9U,sBAAW,WACP3B;AAAAA,YAAAA,GAAKqX,OAAO,EAACC,oBAAAA,KACbtX,CAAAA,GAAAA,GAAK+C,QAAQ,SAAS1P,GAAO,CAAA,GAAI2M,GAAKjB,MAAMpI,KAAK,EAACic,aAAY5S,GAAKhJ,IAAIuE,MAAMqX,YAAAA,CAAAA,CAAAA,GAEzE5S,GAAKjB,MAAMpI,OACXqJ,GAAK/D,SAAS+Z,KAAkB,SAAS,MAAQhW,EAAAA,GAAKjB,MAAMpI,IAAIhC,KACrE;UAAA,IAAA,EAAA;QACP,GAEAijB,WAAAA,SAAUhoB,IACN;AAAA,cAAIoQ,KAAQpP;AAEZ+Q,sBAAW,WAAA;AACP3B,YAAAA,GAAM7B,OAAO5E,UAAUuc,QAAQ5iB,KAAK8M,IAAOpQ,EAC/C;UAAA,EAAA;QACJ,GAEA4hB,2BAAAA,WAAAA;AAGS5gB,eAAKoG,IAAI4Y,cAAc1X,cAAatH,KAAKinB,QAG1CjnB,GAAAA,KAAKoG,IAAI4Y,cAAcjb,SAAS/D,KAAKoG,IAAI4Y,cAAckI,eACvDlnB,KAAKmnB,mBAAAA;QACb,GAEAhG,iBAAAA,SAAgBniB,IAAAA;AACZ,cAAIA,GAAE8S,UAAU9R,KAAKoG,IAAIC,SAAUrG,CAAAA,KAAKoG,IAAIC,MAAMT,SAAS5G,GAAE8S,MAAAA,GAAS;AAClE9R,iBAAKkU,iBAAAA,KAAiB,GACtBlU,KAAKmO,MAAMC,WAAAA;AAEX,gBAAIgZ,KAA4BpoB,GAAE8S,OAAO7L,QAAQjG,KAAK6F,SAASC,WAAWuhB,gBAGtED;AAAAA,aAAAA,QAAAA,KAAAA,SAAAA,GAA2B3P,aAAYzX,QACvCA,KAAKqL,SAASgF,KAAAA;UACtB;QACJ,GAEAgP,cAAAA,SAAargB,IACT;AAAA,cAAIsP,KAAKtO,KAAK6F,UACVoB,KAASjI,GAAE8S,OAAO7L,QAAQ,MAAMqI,GAAGxI,WAAWC,GACpC/G;AAAAA,UAAAA,GAAE8S,QAAW9R,KAAKoG,IAAIC;AAAK,cACrCihB,KAAiB,CAAA,oBAAIxF,SAAS9hB,KAAKmO,MAAMC;AAE7C,cAAIpP,CAAAA,GAAE8S,OAAOnM,UAAUC,SAAS0I,GAAGxI,WAAWiG,IAKzC,EAAA,QAAI9E,MAAAA,CAAWjH,KAAKmO,MAAMsC,WAC3BzQ,KAAKmS,QAAQ,SAAS,EAAEpM,KAAIkB,IAAQsgB,OAAMvnB,KAAKwnB,aAAavgB,EAAAA,GAASC,MAAKF,GAAcC,EAAAA,GAAS0M,OAAM3U,GAAAA,CAAAA,GAAAA,MAEnF,MAAhBsP,GAAGzE,YAAyC,MAAvByE,GAAGzE,SAASC,UAA2B,YAAXwE,GAAGO,QACpD7O,KAAKuN,OAAO5E,UAAU4W,mBAAmBjd,KAAKtC,MAAMhB,EAAAA,MAAAA,MAMnDA,GAAE8S,UAAU9R,KAAKoG,IAAIuE,UACX,SAAX2D,GAAGO,QAGH7O,KAAKynB,yBAGLH,GAAAA,KAAgB,OAAA,CAAQhZ,GAAGlF,aACvBpJ,KAAKmO,MAAM9C,SAASqN,UACpB1Y,KAAKqL,SAASgF,KACe,IAAA,MAAxB/B,GAAGjD,SAASf,WAA4B,SAAXgE,GAAGO,QACrC7O,KAAKqL,SAASyM,KAAK9X,KAAK+D,MAAMpE,SAAS,KAAK8D,MAAAA,IAKzC,YAAX6K,GAAGO,QAA4C,MAAxBP,GAAGjD,SAASf,WAAkBtK,KAAKmO,MAAM9C,SAASqN,YACzE1Y,KAAKuN,OAAO5E,UAAU4W,mBAAmBjd,KAAKtC,MAAMiX,IAAAA,SAAAA,IAAAA;AAAAA,qBAAAA,KAAAA,GAAAA,KAAAA,UAAAA,QAAAA,MAAAA;AAAAA,kBAAAA,KAAAA,QAAAA,UAAAA,EAAAA,IAAAA,UAAAA,EAAAA,IAAAA,CAAAA,GAAAA,KAAAA,OAAAA,KAAAA,EAAAA;AAAAA,4BAAAA,OAAAA,OAAAA,0BAAAA,KAAAA,GAAAA,OAAAA,OAAAA,sBAAAA,EAAAA,EAAAA,QAAAA,SAAAA,IAAAA;AAAAA,uBAAAA,OAAAA,yBAAAA,IAAAA,EAAAA,EAAAA;cAAAA,EAAAA,CAAAA,IAAAA,GAAAA,SAAAA,SAAAA,KAAAA;AAAAA,gBAAAA,GAAAA,IAAAA,KAAAA,GAAAA,GAAAA,CAAAA;cAAAA,EAAAA;YAAAA;AAAAA,mBAAAA;UAAAA,GAAIjY,CAAAA,GAAAA,EAAAA,GAAAA,EAAG8S,QAAQ9R,KAAK8iB,WAAAA,EAAa,CAEpFxU,EAAAA,CAAAA,CAAAA,GAAAA,CAAAA,GAAGnF,aAAanJ,KAAKqL,SAASyM,KAAAA;AAjC/B9X,eAAK2R,WAAY3S,GAAE8S,OAAOxK,UAmClC;QAAA,GAGAmY,SAAAA,SAAQzgB,IAAAA;AAAAA,cAAAA,KAAAA;AACJA,UAAAA,GAAEkQ,eAEF;AAAA,cAAI+W,IAOAyB,IAAeC,IANfrZ,KAAKtO,KAAK6F;AAEd,cAAKyI,CAAAA,GAAGnF,UACJ,QAAA;AAKAmF,UAAAA,GAAGiK,aAGPmP,KAAgB1oB,GAAE0oB,iBAAiBpoB,OAAOooB,eAC1CC,KAAaD,GAAcE,QAAQ,MAEnCtZ,GAAAA,GAAGvB,MAAMI,YAAYnO,IAAG,EAAC+P,QAAO/O,MAAM2nB,YAAAA,IAAYD,eAAAA,GAC7C1Y,CAAAA,EAAAA,MAAKC,SAAAA,IAAAA;AAAAA,uBACEA,OACAA,KAAS0Y,KAET1Y,OACAG,GAAK9I,cAAc2I,IAAQ3P,OAAOoH,aAAAA,EAAeC,WAAW,CAAA,CAAA,GAElC,SAAtByI,GAAKvJ,SAASgJ,OACdO,GAAK7B,OAAO5E,UAAUwc,eAAe7iB,KAAWtD,IAAAA,EAAAA,IAG3CoQ,GAAKvJ,SAAS+D,cACnBqc,KAAY7W,GAAKkC,QAAQlC,GAAKjB,MAAMoD,YAAYtC,IAAQ,IAAA,KAIxDG,GAAKjB,MAAMoD,YAAYtC,IACvBG,GAAK/D,SAASyM,KAAK7I,EAI3BG,KAAAA,GAAK+C,QAAQ,SAAS,EAACwB,OAAO3U,IAAG2oB,YAAAA,IAAYD,eAAAA,IAAezB,WAAAA,GAAAA,CAAAA;UAAAA,EAE/DzU,EAAAA,OAAMhN,SAAAA,IAAOA;AAAAA,mBAAAA;UAAAA,EACtB;QAAA,GAEAmb,QAAAA,SAAO3gB,IAAAA;AACHA,UAAAA,GAAEkQ,eACN;QAAA,GAEA2Y,gBAAAA,SAAgBC,IAAa9oB,IAKA;AAAA,cAAA+oB,IAJrB9gB,KAAS6gB,GAAY7hB,QAAQ,MAAMjG,KAAK6F,SAASC,WAAWC,GAAAA,GAC5DiiB,KAAYhoB,KAAKwnB,aAAavgB,EAC9B+J,GAAAA,KAAUhK,GAAcC,EACxBghB,GAAAA,KAAYjoB,KAAK2K,MAAM/F,UAAUtC,KAAKtC,MAAM8nB,EAAAA,GAC5CI,MAAsBC,GAADJ,KAAA,CAAA,GAAE/nB,KAAK6F,SAAS2C,aAAcyf,EAAWG,GAAAA,GAAzCL,IAAyCK,WAASpX,GAAQoX,OAAAA,GAA1DL,KACrBtC,KAAUzlB,KAAKulB,YAAY2C,EAAAA;AACdloB,eAAKqoB,sBAAsB5lB,GAAOuO,IAASkX,EAGT,CAAA,KAAA,SAAhCJ,GAAYQ,oBAC3B7C,KAAU,OAEdxe,GAAOtB,UAAUwT,OAAOnZ,KAAK6F,SAASC,WAAWgF,YAAAA,SAAY2a,EAAAA,GAC7DzU,GAAQiD,YAAYwR,IAEpBxe,GAAOyW,QAAoB,SAAZ+H,KACTzU,GAAQ0M,SAAS1M,GAAQjN,QACzB0hB,IAGFwC,GAAUtoB,UAAUK,KAAK6F,SAASwF,SAASf,YAGvCtK,KAAKmO,MAAMsC,YACXzQ,KAAKmO,MAAMsC,QAAQ1M,QAAQkkB,KAC/BjoB,KAAKqL,SAASyM,KAAKmQ,EAGvBjoB,IAAAA,KAAKmS,QAAQ,cAAc,EACvBpM,KAAOkB,IACPsgB,OAAOS,IACP9gB,MAAOzE,GAAO,CAAI,GAAAzC,KAAK+D,MAAMikB,EAAAA,GAAY,EAACO,UAASN,GAAAA,CAAAA,GACnDtU,OAAO3U,GAAAA,CAAAA;QAEf,GAEAwpB,gBAAAA,SAAgBvhB,IAAQjI,IAAAA;AAEpB,cACI2oB,MADgB3oB,GAAE0oB,iBAAiBpoB,OAAOooB,eACfE,QAAQ,MAAA;AAEvC5oB,UAAAA,GAAEkQ,eAAAA;AAEF,cAAIuZ,KAAUniB,GAAcqhB,EAC5B3nB;AAAAA,eAAK2iB,mBAAAA,OAA0B8F,EAAAA;QACnC,GAEAC,gBAAAA,SAAgBzhB,IAAQjI,IACpBgB;AAAAA,eAAKuN,OAAO5E,UAAU0W,aAAa/c,KAAKtC,MAAMhB,EAAAA;QAClD,GAEA2pB,gBAAAA,SAAgB1hB,IACZjH;AAAAA,eAAKmO,MAAMsC,UAAU,EACjBpK,OAAOY,IACP0D,OAAO1D,GAAOuH,cAAc,mBAAA,EAAA;QAEpC,GAEAoa,eAAAA,SAAed,IAAa9oB,IAAAA;AAExB,cAAI6pB,KAAyBvjB,GAAUhD,KAAKtC,MAAMhB,GAAEyiB,aAAAA;AAIpD,cAA0B,YAAtBzhB,KAAK6F,SAASgJ,QAAoBga,MAA0B7pB,GAAEyiB,cAAc7b,SAAS5G,GAAE8S,MACvF9R,EAAAA,MAAKqL,SAASgF,KAMlB;mBAAKrQ,KAAKmO,MAAMsC,YAGXzQ,KAAKmO,MAAMC,YACZpO,KAAKkU,iBAELlU,GAAAA,KAAKoG,IAAIC,MAAMT,SAASgB,SAASqc,aAAAA,KACjCjjB,KAAKmS,QAAQ,QAAQ,CAAA,CAAA,GAMpBnS,KAAKoG,IAAIC,MAAMT,SAASkiB,EAA7B,IAAA;AAMyB,gBAAAC,IAIrB9c,IACA6d,IATAxa,KAAetO,KAAK6F,UACpBoB,KAAe6gB,GAAY7hB,QAAQ,MAAMqI,GAAGxI,WAAWC,GACvDiL,GAAAA,KAAehK,GAAcC,EAAAA,GAC7BghB,KAAejoB,KAAK2K,MAAM/F,UAAUtC,KAAKtC,MAAM8nB,EAAAA,GAC/CI,MAAsBC,GAADJ,KAAC,CAAA,GAACzZ,GAAG9F,aAAcyf,EAAAA,GAAWG,GAA9BL,IAA8BK,WAASpX,GAAQoX,OAA/CL,GAAAA,KACrBgB,KAAe/X,GAAQgY,gBACvBC,KAAejpB,KAAKqoB,sBAAsB5lB,GAAOuO,IAASkX,EAC1DzC,CAAAA,GAAAA,KAAezlB,KAAKulB,YAAY2C,EAAAA;AAIpC,gBAAKD,GAML,KAAKgB,IAAL;AAaI,kBAAAC;AAgBJ,kBArBAje,KAAajL,KAAKiL,WAElB6d,GAAAA,KAAarmB,GACT,CAAA,GACAsmB,KAEIZ,GADJe,KACI,CAAA,GAAC5a,GAAG9F,aAAcxI,KAAKO,KAAK0nB,EAAAA,CAAAA,GAC5BhU,GAFJiV,IAEIjV,aAAWwR,EAAAA,GAFfyD,GAOJ5a,GAAAA,GAAGtE,aAAa1H,KAAKtC,MAAM8oB,IAAYC,EASvB,GAAA,UAFhBtD,MAAYxa,CAAAA,MAAAA,SAAc8d,GAAa9U,cAAuBjU,KAAKulB,YAAYuD,EAAAA,IAEzD;AAIlB,oBAHA9oB,KAAKmS,QAAQ,WAAW,EAAEjL,MAAK4hB,IAAY/iB,KAAIkB,IAAQkiB,SAAQ1D,GAAAA,CAAAA,GAG3DnX,GAAGzE,SAASE,YAAc;AAE1BuE,gBAAAA,GAAGhF,kBACHwf,GAAW7U,YAAYwR,KAGvBqD,KAAaC;cAAAA,MAGZza,CAAAA,GAAGhF,oBAAAA,OAEDwf,GAAWpL,OAAAA,OACXoL,GAAW,cACXA,GAAAA,OAAAA,GAAWnL;AAKtB3d,mBAAKgU,cAAc/M,IAAQ6hB,EAhD3B;YAAA,MAFI9oB,MAAKgU,cAAc/M,IAAQ8hB,EAAAA;gBAN3B/oB,MAAKgU,cAAc/M,EAdqB;UAAA;QAuEhD,GAEAmiB,kBAAAA,SAAiBpqB,IAAGiI,IAAAA;AAEhB,cAAA,CAAIjH,KAAKmO,MAAME,UAKf,SAFArO,KAAKmS,QAAQ,gBAAgB,EAACwB,OAAM3U,GAE5BA,CAAAA,GAAAA,GAAEgE,KAAAA;YACN,KAAK;YACL,KAAK;AACDhD,mBAAKmO,MAAMsC,UAAAA,OACgBxJ,CAAAA,CAAAA,GAAOG,gBAAgB4hB,eAAejlB,QAK7DkD,GAAOK,WAAW6S,aAAalT,GAAOG,gBAAgBiiB,gBAAgBpiB,EAAAA,IAEtEA,GAAOmM,OAAAA;AAEX;YAEJ,KAAK;YACL,KAAK;AACDpU,cAAAA,GAAEkQ,eAAAA;AAOF6B,0BAAW,WAAA;AAAA,uBAAM/R,GAAE8S,OAAOiT,KAAAA;cAAQuE,IALN,CAQxC;UAAA;QAAA,GAEA/J,oBAAAA,SAAmBvgB,IAAAA;AACf,cAAIiI,KAASjI,GAAE8S,OAAO7L,QAAQ,MAAMjG,KAAK6F,SAASC,WAAWC,GAAAA;AAE7D,cAAKkB,IAAL;AAEA,gBAEIsiB,IACAnG,IAHApS,KAAUhK,GAAcC,EAAAA,GACxBqH,KAAKtO,KAAK6F;AAAAA,uBAIVmL,QAAAA,KAAAA,SAAAA,GAASwY,cAEbD,KAAetiB,GAAOtB,UAAUC,SAAS5F,KAAK6F,SAASC,WAAWmG,UAAAA,GAClEmX,KAAiBnc,GAAOoc,aAAa,UAEhC/U,GAAAA,GAAGiK,YAAagR,MAAiBnG,MAAkBpjB,CAAAA,KAAK6F,SAASgE,YAAYyE,CAAAA,GAAGnF,cACjFnJ,KAAKuN,OAAO5E,UAAUggB,eAAermB,KAAKtC,MAAMiH,EAChDjH,GAAAA,KAAK4R,QAAQ3K,EAGjBjH,IAAAA,KAAKkU,iBAAAA,IAEU,GAAA,YAAX5F,GAAGO,QACH7O,KAAKmS,QAAQ,YAAY,EAAEpM,KAAIkB,IAAQsgB,OAAMvnB,KAAKwnB,aAAavgB,EAASC,GAAAA,MAAKF,GAAcC,EApBjF,EAAA,CAAA;UAAA;QAqBlB,GAMAiZ,kBAAAA,SAAiBuJ,IAAAA;AAAAA,cAAAA,KAAAA;AAEbA,UAAAA,GAAExhB,SAAQyhB,SAAAA,IAENA;AAAAA,YAAAA,GAAOC,WAAW1hB,SAAQ2hB,SAAAA,IAAAA;AAEtB,kBAA2B,qBAAvBA,GAAUC,UACVD,CAAAA,GAAUE,YAAYljB,SAASmd,cAAc,IAAA,CAAA;uBAIlB,KAAtB6F,GAAU9nB,YAAiB8nB,GAAUpb,cAAcY,GAAKvJ,SAASC,WAAWI,WAAAA,GAAc;AAAA,oBAQ/F0jB,IAPIG,KAAcnjB,SAASC,eAAe,EAAA;AAEF,qBAApC+iB,GAAUrD,WAAW,CAAA,EAAGzkB,YAAuD,QAAtC8nB,GAAU1hB,gBAAgB0c,aACnEmF,KAAenjB,SAASC,eAAe,IAAA,KAI3C+iB,KAAAA,IAAUE,YAAVF,MAAAA,IAAsB3pB,GAAG,CAAC8pB,EAAAA,EAADvT,OAAcvW,GAAIA,GAAG2pB,GAAUrD,UAAAA,EAAY/jB,MAAM,GAAA,EAAG,CAAA,CAAA,CAAA,CAAA,GAC7E6E,GAAoB0iB,EAAAA;cACxB,WAGSzkB,GAAUhD,KAAI8M,IAAOwa,EAAAA,GAAY;AAClCA,oBAAAA;AAIJ,oBAJ2C,MAAvCA,UAAAA,KAAAA,GAAU1hB,oBAAAA,WAAV0hB,KAAAA,SAAAA,GAA2B9nB,aAAkB8nB,GAAU1hB,gBAAgB8Z,eACvE4H,GAAU1hB,gBAAgBkL,OAAAA,GAG1BwW,GAAU1hB,mBAAyD,QAAtC0hB,GAAU1hB,gBAAgB0c,UAAkB;AAEzEgF,kBAAAA,GAAU1hB,gBAAgB4hB,YAAY,UAAA;AAItC,2BAFIE,KAAWJ,GAAUriB,aAAa0iB,KAAoB,IAEnDD,KACHC,CAAAA,MAAqBD,GAAShI,aAC9BgI,KAAWA,GAASziB;AAIxB0iB,kBAAAA,GAAkB1pB,KAAAA,KAAU8G,GAAoBuiB,GAAU1hB,eAAAA;gBAAAA,MAKpD0hB,CAAAA,GAAU1hB,mBAAmBlB,CAAAA,GAAc4iB,GAAU1hB,eAC3D0hB,KAAAA,GAAUxhB,ORlnCT,QQonCT;cAAA;YACJ,EAEAshB,GAAAA,GAAOQ,aAAajiB,SAAQkiB,SAAAA,IAEpBA;AAAAA,cAAAA,MAAuC,QAAxBA,GAAYvF,YAAoBtf,GAAUhD,KAAAA,IAAW8nB,EAAAA,MACpEhb,GAAKuC,WAAWyY,EAAAA,GAChBhb,GAAKqY,yBAAAA;YAEb,EAAA;UACJ,EAOA;AAAA,cAAI2C,KAAiBpqB,KAAKoG,IAAIuE,MAAM6b;AAEhC4D,UAAAA,MAA8C,MAA5BA,GAAe7F,aACjC6F,GAAehX,OAAAA,GAGdgX,MAA6C,QAA3BA,GAAexF,YAClC5kB,KAAKoG,IAAIuE,MAAMgP,YAAY/S,SAASmd,cAAc,IAAA,CAAA;QAE1D,EAAA,EAAA;AAAA,iBAAAsG,GAAAprB,IAAAD,IAAA;AAAA,WAAA,QAAAA,MAAAA,KAAAC,GAAA,YAAAD,KAAAC,GAAA;AAAA,mBAAAC,KAAA,GAAAC,KAAA,IAAA,MAAAH,EAAA,GAAAE,KAAAF,IAAAE,KAAA,CAAAC,GAAAD,EAAA,IAAAD,GAAAC,EAAA;AAAA,iBAAAC;QAAA;AAAA,iBAAAmrB,GAAArrB,IAAAD,IAAAE,IAAA;AAAA,iBAAAF,MAAAC,KAAA,OAAA,eAAAA,IAAAD,IAAA,EAAA,OAAAE,IAAA,YAAA,MAAA,cAAA,MAAA,UAAA,KAAA,CAAA,IAAAD,GAAAD,EAAA,IAAAE,IAAAD;QAAA;AAAA,iBAAAsrB,GAAAtrB,IAAAD,IAAA;AAAA,iBAAA,QAAAA,MAAA,eAAA,OAAA,UAAAA,GAAA,OAAA,WAAA,IAAA,CAAA,CAAAA,GAAA,OAAA,WAAA,EAAAC,EAAA,IAAAA,cAAAD;QAAA;AAAA,iBAAAwrB,GAAAvrB,IAAA;AAAA,mBAAAD,KAAA,GAAAA,KAAA,UAAA,QAAAA,MAAA;AAAA,gBAAAE,KAAA,QAAA,UAAAF,EAAA,IAAA,UAAAA,EAAA,IAAA,CAAA,GAAAG,KAAA,OAAA,KAAAD,EAAA;AAAA,0BAAA,OAAA,OAAA,0BAAAC,KAAAA,GAAA,OAAA,OAAA,sBAAAD,EAAA,EAAA,QAAA,SAAAD,IAAA;AAAA,qBAAA,OAAA,yBAAAC,IAAAD,EAAA,EAAA;YAAA,EAAA,CAAA,IAAAE,GAAA,SAAA,SAAAH,IAAA;AAAA,cAAAsrB,GAAArrB,IAAAD,IAAAE,GAAAF,EAAA,CAAA;YAAA,EAAA;UAAA;AAAA,iBAAAC;QAAA;AAAA,iBAAAwrB,GAAAxrB,IAAA;AAAA,kBAAA,SAAAA,IAAA;AAAA,gBAAA,MAAA,QAAAA,EAAA,EAAA,QAAAorB,GAAAprB,EAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAA;AAAA,gBAAA,eAAA,OAAA,UAAA,QAAAA,GAAA,OAAA,QAAA,KAAA,QAAAA,GAAA,YAAA,EAAA,QAAA,MAAA,KAAAA,EAAA;UAAA,GAAAA,EAAA,MAAA,SAAAA,IAAAD,IAAA;AAAA,gBAAA,CAAAC,GAAA;AAAA,gBAAA,YAAA,OAAAA,GAAA,QAAAorB,GAAAprB,IAAAD,EAAA;AAAA,gBAAAE,KAAA,OAAA,UAAA,SAAA,KAAAD,EAAA,EAAA,MAAA,GAAA,EAAA;AAAA,yBAAAC,MAAAD,GAAA,gBAAAC,KAAAD,GAAA,YAAA;AAAA,gBAAA,UAAAC,MAAA,UAAAA,GAAA,QAAA,MAAA,KAAAA,EAAA;AAAA,gBAAA,gBAAAA,MAAA,2CAAA,KAAAA,EAAA,EAAA,QAAAmrB,GAAAprB,IAAAD,EAAA;UAAA,GAAAC,EAAA,MAAA,WAAA;AAAA,kBAAA,IAAA,UAAA,uIAAA;UAAA,GAAA;QAAA;AC/nCR,iBAASyrB,GAAQ/f,IAAO9E,IAAAA;AACpB,cAAK8E,CAAAA,IAAO;AACRvL,YAAAA,GAAOc,KAAK,2BAA2ByK,EAGvC;AAAA,gBAAMggB,KAAe,IAAIC,MAAM5qB,MAAM,EAAE6qB,KAAAA,WAAAA;AAAO,qBAAO,WAAMF;AAAAA,uBAAAA;cAAAA;YAAa,EAAA,CAAA;AACxE,mBAAOA;UACX;AAEA,cAAIhgB,GAAM8M,SAEN,QADArY,GAAOc,KAAK,kEAAkEyK,EAAAA,GACvEA,GAAM8M;AJvBWqT,cAAAA;AI0B5BroB,UAAAA,GAAOzC,OC3BI,SAA0B+qB,IAAAA;AAErC,gBAAIjZ,KAASlL,SAASC,eAAe,EAEjCmkB,GAAAA,KAAmB,CAAA;AAEvB,qBAASC,GAAUC,IAAI3d,IAAQyT,IAAAA;AACvBA,cAAAA,MACAzT,GAAOhL,MAAM,MAAA,EAAQ0F,SAAQkjB,SAAAA,IAAAA;AAAMrZ,uBAAAA,GAAOoZ,KAAK,eAAiB5oB,EAAAA,KAAKwP,IAAQqZ,IAAInK,EAAAA;cAAAA,EAAAA;YACzF;AAGA,mBAAO,EAEHoK,0BAAAA,WAAAA;AACIjpB,qBAAOkpB,QAAQL,EAAkB/iB,EAAAA,SAAQ,SAAAwV,IAAAA;AAAAA,oBAAAA,MAAAA,GAAAA,IAAAA,CAAAA,GAAE0N,KAAIG,IAAAA,CAAAA;AAAAA,gBAAAA,IAAAA,CAAAA,EACrCrjB,SAAQ+Y,SAAAA,IAAAA;AAAMiK,yBAAAA,GAAU,UAAUE,IAAInK,EAAAA;gBAAAA,EAAAA;cAChD,EAEAgK,GAAAA,KAAmB,CAAA;YACvB,GAEAO,KAAAA,SAAIhe,IAAQyT,KAYR;AAAA,qBAXIzT,OACIyT,MACAiK,GAAU,UAAU1d,IAAQyT,GAG5BzT,IAAAA,GAAOhL,MAAM,MAAQ0F,EAAAA,SAAQkjB,SAAAA,IACzBH;AAAAA,oBAAAA;AAAoB,0BAApBA,MAAAA,GAAiBG,EAAAA,MAAAA,WAAjBH,OAAAA,IAAsB/iB,SAAQ+Y,SAAAA,KAAAA;AAAMiK,yBAAAA,GAAU,UAAUE,IAAInK,GAAAA;gBAAAA,EAAAA,GAAAA,OACrDgK,GAAiBG,EAAAA;cAC5B,EAAA,IAGDnrB;YACX,GAEAye,IAAAA,SAAGlR,IAAQyT,KAAAA;AAaP,qBAZGA,OAAmB,cAANA,OAAAA,QAEZzT,GAAOhL,MAAM,MAAA,EAAQ0F,SAAQkjB,SAAAA,IAAAA;AACrBtrB,sBAAMe,QAAQoqB,GAAiBG,EAC/BH,CAAAA,IAAAA,GAAiBG,EAAAA,EAAI7mB,KAAK0c,GAAAA,IAE1BgK,GAAiBG,EAAM,IAAA,CAACnK,GAAAA;cAChC,EAEAiK,GAAAA,GAAU,OAAO1d,IAAQyT,GAAAA,IAGtBhhB;YACX,GAEAmS,SAAAA,SAAQwM,IAAWzX,IAAMskB,IAAAA;AACrB,kBAAIxsB;AAMJ,kBAJAwsB,KAAOA,MAAQ,EACXC,WAAAA,KAGC9M,GAAAA,GAEL,KAAIoM,GAASllB,SAASiZ,eACD,aAAbH,OAAwBA,KAAY,cACxCI,OAAOgM,GAAS3kB,IAAI4Y,aAAe0M,EAAAA,eAAe/M,IAAW,CAACzX,EAAAA,CAAAA;mBAE9D;AACA,oBACI;AAAA,sBAAIib,KAA4B,YAATjb,OAAAA,KACjBA,KACA,EAACnD,OAAMmD,GAAAA;AASb,uBAPAib,KAAYqJ,GAAKC,YAAYhpB,GAAO,CAAA,GAAI0f,EAAaA,IAAAA,IAC3CpT,SAAS/O,MAEfkH,GAAKyM,UACLwO,GAAUxO,QAAQ3T,KAAK2rB,WAAWzkB,GAAKyM,KAAAA,IAGnC+Q,GAAJxd,IAAgB/E,MAAAA,EAChB,UAASypB,MAAQ1kB,GACAwd,CAAAA,GAAVxd,GAAK0kB,EAAAA,GAAiBC,WACrB1J,MAAAA,GAAUyJ,EAAAA,IAAQ1kB,GAAK0kB,EAAAA;AAEnC5sB,kBAAAA,KAAI,IAAI8sB,YAAYnN,IAAW,EAACoN,QAAS5J,GAAAA,CAAAA;gBAC7C,SACM3d,IAAAA;AAAMpF,kBAAAA,GAAOc,KAAKsE,EAAAA;gBAAK;AAE7BsN,gBAAAA,GAAOka,cAAchtB,EAAAA;cACzB;YACJ,EAAA;UAER,GDjEiCgB,IAAAA,CAAAA,GAC7BA,KAAKisB,YAAY,iBAAmBnnB,KAAKC,UAAUC,SAAe,KAAA,CAAA,aAAeF,KAAKC,UAAUC,SAAAA,GAChGhF,KAAK+gB,OAAOzhB,OAAOsH,SAASslB,cAE5BrmB,KAAWA,MAAY,CAAA,GACvB7F,KAAKmsB,oBJ/BuBrB,KI+BajlB,GAASilB,IJ/BhB9nB,SAAAA,IAAAA;AAMNopB,gBAAAA;AAL5B,gBAAKtB,IAAL;AAGA,kBACIuB,IADAC,KAAY,MAAItpB;AAIpB,kBAXY,OASgBopB,UAAAA,KAAAA,iBAAAA,WAAAA,KAAAA,SAAAA,GAAcG,QAAQvP,KAAY8N,KAAK,IAG/D,GAAA,KAAA;AAAKuB,gBAAAA,KAAgBG,KAAKC,MAAML,aAAapP,KAAY8N,KAAKwB,EAAAA,CAAAA;cAAAA,SACxD9nB,IAAAA;cAAK;AAGf,qBAAO6nB;YAZG;UAad,IIkBIrsB,KAAK0sB,oBJhBuB5B,SAAAA,IAAAA;AAAAA,gBAI5BsB;AAHA,mBAAKtB,MAAAA,UAGLsB,KAAAA,iBAAAA,WAAAA,MAAAA,GAAcO,QAAQ3P,KAAY8N,KAAK,MAvB3B,CAyBL,GAAA,SAAC5jB,KAAMlE,IACV;AAAA,kBAIIopB,IAJAE,KAAY,MAAItpB,IAChBqpB,KAAgBG,KAAKI,UAAU1lB,GAE/BA;AAAAA,cAAAA,OAAQlE,OAAAA,UACRopB,KAAAA,iBAAAA,WAAAA,MAAAA,GAAcO,QAAQ3P,KAAY8N,KAAKwB,IAAWD,EAClDL,GAAAA,cAAe,IAAIa,MAAM,SAAA,CAAA;YAEjC,KAbiB,WAAA;YAAA;UAcrB,GIC6ChnB,GAASilB,EAAAA,GAClD9qB,KAAK8sB,qBJAyBhC,0BAAAA,IAAAA;AAAAA,mBAAM9nB,SAAAA,IACpC;AAAA,kBAAM+pB,KAAO/P,KAAY,MAAM8N,KAAK;AAGpC,kBAAI9nB,GACAopB,cAAaY,WAAWD,KAAO/pB,EAAAA;kBAI/B,UAAQsS,MAAK8W,aACL9W,CAAAA,GAAE/Q,SAASwoB,EAAAA,KACXX,aAAaY,WAAW1X,EAAAA;YAExC;UAAC,GIbgDzP,GAASilB,EAAAA,GACtD9qB,KAAKitB,cAActiB,IAAO9E,EAAAA,GAE1B7F,KAAKmO,QAAQ,EACToD,WAAW,IACXd,SAAAA,OACApC,WAAW,OACXiC,SAAU,CAAC,GACXnG,SAAU,CAAC,GACXkB,UAAU,CAAC,GACX4N,aAAa,CAAA,EAAA,GAGjBjZ,KAAK+D,QAAQ,CAGb/D,GAAAA,KAAK4N,YAAY,CAAA,GAEjB5N,KAAKoG,MAAM,CAAA,GAEXpG,KAAKktB,MAAMviB,EAAAA,GACX2M,IAAahV,KAAKtC,IAAAA,GAElBA,KAAKmtB,WAAAA,GACLntB,KAAKmnB,mBAELnnB,GAAAA,KAAKuN,OAAO+Q,cAAchc,KAAKtC,IAC/BA,GAAAA,KAAKuN,OAAOC,QAAQlL,KAAKtC,IACzB2K,GAAAA,GAAMyiB,aAAaptB,KAAKoG,IAAIuE,MAAMC,MAClCD,GAAAA,GAAM8M,WAAWzX;QACrB;AAAA,eAEA0qB,GAAOtoB,YAAY,EACfmV,WAAAA,IACAlQ,qBAAAA,IACAL,eAAAA,IACAqmB,SAAS,EAACltB,SAAAA,IAASM,sBAAAA,IAAsBM,MAAAA,IAAMkB,UAAAA,IAAUZ,WAAAA,IAAWU,YAAAA,IAAYU,QAAAA,IAAQU,mBAAAA,IAAmB8B,QAAAA,IAAQK,WAAAA,GAAAA,GAEnHiZ,kBAAmB,CAAC,UAAU,OAAO,UAAU,WAAW,SAAS,SAAS,SAAS,WAAW,SAAS,QAAQ,cAAc,qBAAqB,gBAAgB,cAAc,gBAAgB,iBAAiB,iBAAiB,mBAAmB,oBAAoB,oBAAoB,iBAAA,GAC/R+O,WAAW,CAAC,aAAa,aAAa,kBAAkB,kBAAkB,SAAA,GAE1E/sB,MAAAA,SAAKwhB,IAAAA;AACD,iBAAO/hB,KAAK6F,SAAStF,QAAQwhB,MAAuB,YAAA,OAARA,KAAmBA,GAAKxhB,KAAAA,IAASwhB;QACjF,GAGA1gB,WAAAA,IAEA0V,WAAAA,IAEAW,eAAAA,SAAc6V,IAAUrmB,IAEpB;AAAA,iBAAO7F,IADPksB,KAAWvtB,KAAK6F,SAASkR,UAAUwW,EAAaA,KAAAA,IACrBvW,MAAMhX,MAAMkH,EAAAA,CAAAA;QAC3C,GAEA,IAAI8B,UAAWlF,IAAAA;AACX,cAAMlD,KAAUkD,MAAOjE,MAAMe,QAAQkD,EAAAA;AACrC9D,eAAK6F,SAASmD,YAAYpI,KAAUkD,KAAM,CAC1C9D,GAAAA,KAAK0sB,iBAAiB9rB,KAAUkD,KAAM,CAAI,GAAA,WAAA;QAC9C,GAEA,IAAIkF,YAAAA;AACA,iBAAOhJ,KAAK6F,SAASmD;QACzB,GAEA,IAAIG,UAAWgF,IAAAA;AACXnO,eAAK6F,SAASsD,YAAAA,CAAAA,CAAcgF,IAC5BnO,KAAKwtB,mBAAAA,CAAAA,CAAqBrf,EAC9B;QAAA,GAEA,IAAIhF,YAAAA;AACA,iBAAOnJ,KAAK6F,SAASsD;QACzB,GAEAskB,wBAAAA,SAAuB3nB,IAAAA;AAAAA,cAAAA,KAAAA,SAAAA,IAAAA;AAEf,gBAAI4nB,KAAclP;AAClBrc,mBAAOwrB,eAAe7nB,IAAY4nB,KAAc,YAAa,EACzD7C,KAAAA,WAAAA;AAAO,qBAAO,MAAM7qB,KAAK0tB,EAAAA,EAAanrB,MAAM,GAAK,EAAA,CAAA;YAAG,EAAA,CAAA;UAE5D;AALA,mBAASic,MAAQ1Y,GAAAA,CAAAA,GAAAA,EAMrB;QAAA,GAEAmnB,eAAAA,SAAetiB,IAAO9E,IAAAA;AAAAA,cAuEWA,IASFA;AA/E3BwC,UAAAA,GAAS0O,YAAY/W,KAAK+W;AAE1B,cAMI6W,KAAiBnrB,GAAO,CAAA,GAAI4F,IAA4B,SAAjBxC,GAASgJ,OAN9B,EAClBxD,UAAU,EACNwB,UAAU,OAAA,EAAA,IAIoE,CAAA,CAClFyB,GAAAA,KAAKtO,KAAK6F,WAAWpD,GAAO,CAAA,GAAImrB,IAAgB/nB,EAuCpD;AAAA,cArCAyI,GAAGgP,WAAW3S,GAAM0Y,aAAa,UAAA,GACjC/U,GAAGiK,WAAWjK,GAAGiK,YAAY5N,GAAM0Y,aAAa,UAAA,GAChD/U,GAAGkP,cAAczb,GAAW4I,GAAMyG,aAAa,aAAA,KAAkB9C,GAAGkP,eAAe,EAAA,GACnFlP,GAAGiP,WAAW5S,GAAM0Y,aAAa,UAEjCrjB,GAAAA,KAAKytB,uBAAuBnf,GAAGxI,UAAAA,GAE3B9F,KAAK+gB,SACLzS,GAAGjE,eAAAA,QAEP,CAAC,aAAa,WAAapC,EAAAA,SAAQuW,SAAAA,IAC/B;AAAA,gBAAIqP,KAAUljB,GAAMyG,aAAa,UAAUoN,EACvCqP;AAAAA,YAAAA,MAEIA,GADJA,KAAUA,GAAQtrB,MAAM+L,GAAGhG,UACJzI,GAAAA,KAAAA,MACnByO,GAAGkQ,EAAQqP,IAAAA;UAEvB,EAAA,GAGI,kBAAkBhoB,MAAAA,CAAa5D,GAAS4D,GAASwE,YAAAA,MACjDiE,GAAGjE,eAAehC,GAASgC,cAC3BiE,GAAGjE,aAAaC,UAAUzE,GAASwE,eAGxB,SAAXiE,GAAGO,SACHP,GAAG/F,UAAU+F,GAAG/F,WAAW,KAC3B+F,GAAGjE,aAAaE,WAAAA,MAChB+D,GAAGhG,aAAazC,GAASyC,cAAc,MAKnCgG,GAAG9F,eAAAA,CAAgB8F,GAAGjD,SAASiB,WAAW/H,SAAS+J,GAAG9F,WAAAA,KACtD8F,GAAGjD,SAASiB,WAAWhI,KAAKgK,GAAG9F,WAGnCmC,IAAAA,GAAMpC,QACN,KAAM+F;AAAAA,YAAAA,GAAG/F,UAAU,IAAIulB,OAAOnjB,GAAMpC,OAAAA;UAAAA,SAC9BvJ,IAAAA;UAAG;AAGb,cAAIsP,GAAGhG,YAAY;AACfgG,YAAAA,GAAGyf,cAAczf,GAAGhG;AACpB,gBAAA;AAAMgG,cAAAA,GAAGhG,aAAa,IAAIwlB,OAAO9tB,KAAK6F,SAASyC,YAAY,GAAA;YAAA,SACrDtJ,IAAAA;YAAG;UACb;AAEIsP,WAAAA,GAAGgP,YAAYhP,GAAGiK,cAClBjK,GAAGnF,YAAY,QAEnBnJ,KAAKid,QAAQ+Q,GAAA,CAAA,GAAI/Q,IAAW3O,GAAG2f,SAAS,CAAA,CAAA,GAGzB,YAAX3f,GAAGO,SACHP,GAAGjD,SAASoB,sBAAAA,QAIA,YAAZ6B,GAAIO,SAAsC,UAAjBhJ,KAAAA,GAASwF,aAAAA,WAATxF,KAAAA,SAAAA,GAAmByE,aAAagE,GAAGnF,cAC5DmF,GAAGjD,SAASf,UAAU,IAItBgE,GAAGgP,aACHhP,GAAGjD,SAASf,UAAU,QAG1BgE,GAAGjD,SAASyB,gBAAgC,UAAjBjH,KAAAA,GAASwF,aAAAA,WAATxF,KAAAA,SAAAA,GAAmBiH,iBAAgBlG,SAASnF,MAAAA,WAElE6M,GAAGjD,SAASoB,wBACb6B,GAAGjD,SAASoB,sBAAsB6B,GAAGvF;AAGzC,cAAImlB,KAAqBluB,KAAKmsB,iBAAiB,WAE3CtsB;AAAAA,gBAAMe,QAAQstB,EACdluB,MAAAA,KAAKgJ,YAAYnJ,MAAMe,QAAQ0N,GAAGtF,SAC5B7F,IAAAA,GAAkBmL,GAAGtF,WAAWklB,EAChCA,IAAAA;QACd,GAMAtQ,eAAAA,SAAe1W,IAAAA;AACX,cAAoDoO,IAAhD6Y,KAAQnuB,KAAKouB,oBAAoBlnB,EAAAA,GAAO5F,KAAI;AAEhD,eAAKgU,MAAK6Y,GACN7sB,CAAAA,MAAK,MAAMgU,MAAAA,WAAKpO,GAAKoO,EAAAA,IAAoB,KAAakB,OAAT2X,GAAM7Y,EAAAA,GAAG,GAAA,IAAK;AAE/D,iBAAOhU;QACX,GAKA8sB,qBAAAA,SAAqBlnB,IAEjB;AAAA,cAAA,CAAKjF,GAASiF,EACV,EAAA,QAAO;AAEX,cAAiBmnB,IAAbC,KAAS,CAAID;AAEjB,eAAKA,MAAYnnB,GACc,SAAvBmnB,GAAS7rB,MAAM,GAAE,CAAA,KAA0B,WAAZ6rB,MAAuBnnB,GAAKjE,eAAeorB,EAAAA,KAAAA,WAAannB,GAAKmnB,EAAAA,MAC5FC,GAAOD,EAAYtsB,IAAAA,GAAWmF,GAAKmnB,EAE3C,CAAA;AAAA,iBAAOC;QACX,GAEA3V,mBAAAA,WAAAA;AACI,cAAIlS,KAAYnH,OAAOoH,aAAAA,GAGnBc,KAAM,EACNkc,cAAcjd,GAAUid,cACxBC,YAAcld,GAAUkd,YACxBnd,OAAcC,GAAUE,cAAcF,GAAUgB,cAAchB,GAAUE,WAAW,CAAA,EAAA;AAIvF,iBADA3G,KAAKmO,MAAM1H,YAAYe,IAChBA;QACX,GAMA2lB,YAAAA,WACI;AAAA,cAawB1P,IAAE1Z,IAXVya,IAFZ+P,KAAYC,iBAAiBxuB,KAAKoG,IAAIC,OAAO,IAAA;AAYjDrG,eAAKyuB,UAAU,EACXC,oBAAoBjR,MATxB,SAA8B3a,IAC1B;AAAA,gBAAA,CAAKA,GAAI,QAAO,CAAA;AAEhB,gBAAI6rB,MADJ7rB,KAAIA,GAAEvC,KAAOgC,EAAAA,MAAM,GAAA,EAAK,CACVA,GAAAA,MAAM,MAAA,EAAQ8T,QAAOlX,SAAAA,IAAAA;AAAGA,qBAAAA;YAAAA,EAAAA,EAAGyvB,IAAMruB,EAAAA,KAAAA;AAE/C,mBAAO,EAACwD,OAAAA,CADKjB,GAAEP,MAAMosB,EAAAA,EAAMtY,QAAOlX,SAAAA,IAAAA;AAAGA,qBAAAA;YAAAA,EAAG,EAAA,CAAA,EAAGoB,KAAAA,GAC5BouB,MAAAA,GAAAA;UACnB,IARgBnQ,KAW0F,uBAXlF+P,GAAUM,iBAAiB,OAAKrQ,EAW9Bza,EAAAA,GAAAA,KAAAA,GAAAA,OAAuB,OAAhB4qB,GAAAA,OAA8B,MAAR5qB,KAAeA,IAE1E;QAAA,GAMAmpB,OAAAA,SAAOviB,IACH;AAAA,cAAIvE,KAAOpG,KAAKoG,KACZ0oB,KAAenkB,GAAM1E,QAAQ,OAAA;AAE7BjG,eAAK6F,SAASsE,QAAQ4kB,cACtB3oB,GAAI4Y,gBAAgB,MACpB5Y,GAAIC,QAAQsE,IACZvE,GAAIuE,QAAQA,OAIZvE,GAAI4Y,gBAAgBrU,IACpBvE,GAAI4oB,yBAAyBrkB,GAAMskB,UACnC7oB,GAAIC,QAAQrG,KAAK0X,cAAc,WAAW,CAAC/M,IAAO3K,KAAK6F,QACvDO,CAAAA,GAAAA,GAAIuE,QAAQvE,GAAIC,MAAMmI,cAAcxO,KAAK6F,SAASC,WAAWopB,aAC7DvkB,GAAAA,GAAMrD,WAAW6nB,aAAa/oB,GAAIC,OAAOsE,EAAAA,GACzCA,GAAMskB,WAAAA,KAINH,MACAA,GAAarb,aAAa,OAAO,EAAA;QACzC,GAKAwT,SAAAA,WAAAA;AAEI,cAAAmI,IAMcC,IAAAC;AAPdtvB,eAAKuN,OAAO8T,aAAa/e,KAAKtC,IAAAA,GACL,UAAzBovB,KAAApvB,KAAKoG,IAAIC,MAAMiB,eAAf,WAAA8nB,MAAAA,GAA2BpW,YAAYhZ,KAAKoG,IAAIC,KAAAA,GAChDrG,KAAKoG,IAAI4Y,cAAciQ,WAAWjvB,KAAKoG,IAAI4oB,wBAAAA,OACpChvB,KAAKoG,IAAI4Y,cAAcvH,UAC9BzX,KAAKqL,SAASgF,KAAAA,IACdrQ,GAAAA,KAAKorB,yBAAAA,GACL5S,aAAaxY,KAAKyY,+BAAAA,GAClBgI,cAAc,UAAA6O,KAAAtvB,KAAK4N,cAAAA,WAAL0hB,MAAoB,UAApBD,KAAAC,GAAgB1Q,SAAhB,WAAAyQ,KAAAA,SAAAA,GAAsB3O,kCAAAA;QACxC,GAKAyG,oBAAAA,SAAoBpjB,IAAAA;AAChB,cAAIyiB,IACAlY,KAAKtO,KAAK6F;AAMd,cAFA7F,KAAKmO,MAAMohB,mBAAAA,MAEG9rB,WAAVM,IAAqB;AACrB,gBAAMyrB,KAAyBxvB,KAAKmsB,iBAAiB,OAAA;AAKjDpoB,YAAAA,KADAyrB,MAAAA,CAA2BxvB,KAAKoG,IAAI4Y,cAAcjb,QAC1CyrB,KAEAlhB,GAAGnE,QAAQ4kB,aAAa/uB,KAAKoG,IAAIuE,MAAMqX,cAAchiB,KAAKoG,IAAI4Y,cAAcjb;UAC5F;AAIA,cAFA/D,KAAKif,cAAAA,GAEDlb,GACA,KAAe,SAAXuK,GAAGO,KACH7O,MAAKyvB,aAAa1rB,EAAAA,IAElByiB,KAAYxmB,KAAKoG,IAAIuE,MAAM6b,cAGY,QAArBA,GAAUkJ,WACxB1vB,KAAKoG,IAAIuE,MAAMglB,mBAAmB,aAAa,MAAA;eAGnD;AACA,gBAAA;AACyBjL,cAAAA,GAAjB8H,KAAKC,MAAM1oB,EAAAA,GAAkBlE,KAC7BkE,MAAAA,KAAQyoB,KAAKC,MAAM1oB,EAAAA;YAAAA,SAErBS,IAAK;YAAA;AACXxE,iBAAKsR,QAAQvN,IAAAA,IAAO,EAAMkE,SAAQlC,SAAAA,IAAAA;AAAAA,qBAAOA,MAAOA,GAAIJ,UAAU6N,IAAIlF,GAAGxI,WAAW+E,cAAAA;YAAAA,EAAAA;UACpF;cAIA7K,MAAKuiB,WAAAA;AAETviB,eAAKmO,MAAMyhB,4BAA4BthB,GAAGnE,QAAQ4kB,aAAa,KAAK/uB,KAAKoG,IAAI4Y,cAAcjb;QAC/F,GAEA4nB,YAAAA,SAAW3sB,IACP;AAAA,cAAI6wB,KAAc,CAAA;AAClB,mBAAS/uB,MAAK9B,GACD,WAAL8B,OACA+uB,GAAY/uB,EAAK9B,IAAAA,GAAE8B,EAC3B;AAAA,iBAAO+uB;QACX,GAOAjN,SAAAA,SAAStK,IAAAA;AAIL,iBAHAtY,KAAKmO,MAAMmK,YAAYA,IAEvBtY,KAAKoG,IAAIC,MAAMV,UAAU2S,KAAY,QAAQ,QAAA,EAAUtY,KAAK6F,SAASC,WAAWkF,YAAAA,GACzEhL;QACX,GAMAgM,YAAAA,SAAY/E,IAAQqR,IAAAA;AAIhB,iBAHIrR,MAEAA,GAAOtB,UAAU2S,KAAY,QAAQ,QAAA,EAAUtY,KAAK6F,SAASC,WAAWkG,UACrEhM,GAAAA;QACX,GAOA8vB,aAAAA,SAAa5c,IAAW6c,IACI;AAAA,sBAAA,OAAb7c,MACPlT,KAAKoG,IAAIC,MAAMV,UAAUwT,OAAOjG,IAAW6c,EAAAA;QACnD,GAEAvK,uBAAAA,SAAuBF,IACnB;AAAA,cAAIG,KAAAA,SAAUH,MAAAA,WAAuBA;AAAAA,WAEhCtlB,KAAK6F,SAAS0X,YAAY+H,MAAcA,OAAetlB,KAAKid,MAAM9R,UACnEsa,KAAAA,OAEJzlB,KAAK8vB,YAAY9vB,KAAK6F,SAASC,WAAWgF,YAAAA,CAAa2a,EACvDzlB,GAAAA,KAAKoG,IAAIC,MAAMqX,QAAQ+H,KAAU,KAAKH;QAC1C,GAEApR,kBAAAA,SAAkB6b,IAAAA;AACd/vB,eAAK8vB,YAAY9vB,KAAK6F,SAASC,WAAW8E,OAAAA,CAAAA,CAASmlB,EACvD;QAAA,GAMAC,gBAAAA,SAAeC,IAAAA;AAAAA,cAAAA,KAAAA;AACX,WAAC,QAAQ,MAAQhoB,EAAAA,SAAQ/G,SAAAA,IAAAA;AAAAA,mBAAKkO,GAAKhJ,IAAIuE,MAAM8I,aAAa,GAAK+C,OAAFtV,IAAE,cAAe+uB,GAAAA,EAAAA;UAAAA,EAAAA;QAClF,GAEAzN,oBDhbG,WACH;AAAA,cAAA,CAAIxiB,KAAK6F,SAASsE,QAAQ4kB,YAA1B;AAEA,gBAAI1J,KAAWrlB,KAAKoG,IAAI4Y,eACpBkR,KAAUlwB,KAAKmO,MAAMyhB,8BAA8BvK,GAASthB,OAC5D4P,KAAQ,IAAImY,YAAY,UAAU,EAACqE,SAAS,KAAA,CAAA;AAE3CD,YAAAA,OAGLlwB,KAAKmO,MAAMyhB,4BAA4BvK,GAASthB,OAGhD4P,GAAMyc,YAAAA,MACF/K,GAASgL,iBACThL,GAASgL,cAAcC,SAAS1gB,KAAK2gB,OAAAA,CAAAA,GAEzClL,GAAS2G,cAAcrY,EAAAA,GAGvB3T,KAAKmS,QAAQ,UAAUnS,KAAKmO,MAAMyhB,yBAAAA,GAGlCvK,GAASthB,QAAQ/D,KAAKmO,MAAMyhB;UAtBW;QAuB3C,GC0ZIriB,QAAAA,IAEAka,0BAAAA,WAAAA;QASA,GAMA9E,oBAAAA,SAAoB6N,IAAOjrB,IAAAA;AACvB,cAAKA,IAAL;AAEAirB,YAAAA,KAAwB,YAATA,OAAAA,KAAoBA,KAAAA,CAAAA,CAAUA,IAC7CjrB,KAAOA,GAAKihB,aAAajhB;AACzB,gBAAIiC,KAAMZ,SAASF,aAAAA;AAGnB,gBAAIc,GAAAA,GAAIof,WAAqBjC,OAAY3kB,KAAAA,CAAAA,KAAKoG,IAAIuE,MAAM/E,SAAS4B,GAAIof,SACjE,EAAA,QAAA;AAGJ,gBACQpf;AAAAA,cAAAA,GAAIC,cAAc,KAClB,CAAC,SAAS,KAAA,EAAOQ,SAAQ+J,SAAAA,IAAAA;AAAAA,uBACrBxK,GAAIb,WAAW,CAAG,EAAA,QAAQqL,EAAAA,EAAKzM,IAAMirB,MAAgBjrB,GAAK5F,MAAAA;cAAAA,EAAAA;YAGtE,SAAQ6E,IAAAA;AACJzE,sBAAQG,KAAKsE,EAAAA;YACjB;UAnBY;QAoBhB,GAEA4F,gBAAAA,SAAgBnD,IAAQwhB,IAAAA;AAGpB,cAFAA,KAAUA,MAAWzoB,KAAK6F,SAASsE,QAAQC,gBAEtCnD,MAAWA,GAAOK,cAAemhB,GAOtC,QALAA,KAA4B,YAAA,OAAXA,KACX7hB,SAASC,eAAe4hB,EACxBA,IAAAA,IAENxhB,GAAOK,WAAW6nB,aAAa1G,IAASxhB,GAAOM,WACxCkhB,GAAAA;QACX,GAIAJ,uBAAAA,SAAsBrX,IAAAA;AAClB,cAAI+X,KAAe/X,GAAQgY;AAE3B,mBAAS4C,MAAQ7C,GACb,KAAA,CAAK/oB,KAAKstB,UAAU/oB,SAASqnB,EAAS5a,KAAAA,GAAQ4a,EAAAA,KAAS7C,GAAa6C,EAAAA,EAChE,QAAO;AAEf,iBAAO;QACX,GAGA6E,gBAAAA,SAAexpB,IAAAA;AACX,iBAAOA,GAAOuH,cAAcxO,KAAK6F,SAASC,WAAW4c,eACzD;QAAA,GAGAgO,gBAAAA,SAAezpB,IAAQ0pB,IAAAA;AACnB3wB,eAAKywB,eAAexpB,EAAAA,EAAQ6S,YAAY/X,GAAW4uB,EACvD;QAAA,GAMA/e,SAAAA,SAAS3K,IAAQukB,IAAAA;AAAAA,cAAAA,KAAAA;AACbvkB,UAAAA,KAASA,MAAUjH,KAAK4wB,WAAAA,GACxBpF,KAAOA,MAAQ,CAAA;AAEf,cAAIld,KAAKtO,KAAK6F,UACViiB,KAAc9nB,KAAKywB,eAAexpB,EAAAA,GAClC4pB,KAAS7wB,KAAKwnB,aAAavgB,EAAAA,GAC3B+J,KAAUhK,GAAcC,EAAAA,GACxByG,KAAM1N,KAAKuN,OAAO5E,WAClB8c,KAAU,MACV3W,KAA0B,YAAXR,GAAGO;AAMtB,cAAA,CAFCC,MAAgB9O,KAAKqL,SAASgF,KAE1ByX,GAAAA,IAAAA;AAKL,gBAAA,CAAWpD,GAAP1T,IAAmB7O,MAAU,KAAA,EAAA,cAAc6O,OAAYA,GAAQwY,SAsCnE,QAlCAxY,KAAUhK,GAAcC,IAAQ,EAC5B+hB,gBAAgBvmB,GAAO,CAAIuO,GAAAA,EAC3BqY,GAAAA,gBAAgBpiB,GAAOuS,UAAU,IAAA,EAAA,CAAA,GAGrCxS,GAAcgK,GAAQqY,gBAAgBrY,GAAQgY,cAE9ClB,GAAAA,GAAYrU,aAAa,mBAAA,IACzBxM,GAAAA,GAAOtB,UAAU6N,IAAKlF,GAAGxI,WAAWmG,UAGpCjM,GAAAA,KAAKuN,OAAO5E,UAAUggB,eAAermB,KAAKtC,MAAMiH,EAAAA,GAEhD6gB,GAAY3T,iBAAiB,SAAqBzG,GAAIgb,eAAe7a,KAAK7N,MAAMiH,EAChF6gB,CAAAA,GAAAA,GAAY3T,iBAAiB,QAAqBzG,GAAIkb,cAAc/a,KAAK7N,MAAMA,KAAKywB,eAAexpB,EACnG6gB,CAAAA,CAAAA,GAAAA,GAAY3T,iBAAiB,SAAqBzG,GAAIma,eAAeha,KAAK7N,MAAM8nB,EAAAA,CAAAA,GAChFA,GAAY3T,iBAAiB,SAAqBzG,GAAI8a,eAAe3a,KAAK7N,MAAM8nB,EAAAA,CAAAA,GAChFA,GAAY3T,iBAAiB,YAAqBnV,SAAAA,IAAAA;AAAK0O,qBAAAA,GAAI0b,iBAAiB9mB,KAAI8M,IAAOpQ,IAAGiI,EAAAA;YAAAA,EAAAA,GAC1F6gB,GAAY3T,iBAAiB,oBAAqBzG,GAAImS,mBAAmBhS,KAAK7N,IAAAA,CAAAA,GAC9E8nB,GAAY3T,iBAAiB,kBAAqBzG,GAAIqS,iBAAiBlS,KAAK7N,IAEvEwrB,CAAAA,GAAAA,GAAKsF,mBACNrL,KAAUzlB,KAAK+wB,sBAAsB9pB,EAAAA,IAEzC6gB,GAAYQ,kBAAkB7C,IAE9BzlB,KAAKmS,QAAQ,cAAc,EAAEpM,KAAIkB,IAAQsgB,OAAMsJ,IAAQ3pB,MAAK8J,IAASyU,SAAAA,GAAAA,CAAAA,GAErEqC,GAAYld,MACXkE,GAAAA,CAAAA,MAAgB9O,KAAK2iB,mBAAAA,OAA0BmF,EAAAA,GAExB,MAAxBxZ,GAAGjD,SAASf,WAAAA,CAAkBwE,MAAgB9O,KAAKqL,SAASyM,KAC5D9X,GAAAA,KAAKmO,MAAMC,WAAW,MAEfpO;UAAAA,MA1CHZ,CAAAA,GAAOc,KAAK,0CAA0CoO,GAAGxI,WAAW4c,eAAAA;QA2C5E,GAQAqO,uBAAAA,SAAuB9pB,IAAQ+J,IAC3B;AAAA,cACIyU;AAEJ,cAHIzU,KAAUA,MAAWhK,GAAcC,EAAAA,EAqBvC,SAbAwe,KAAY,EAAA,eAAezU,OAAAA,SAAYA,GAAQiD,cAG3CjU,KAAKgxB,oBAAoB/pB,EAAAA,GAG7BjH,KAAKymB,OAAAA,GAILxf,GAAOtB,UAAUwT,OAAOnZ,KAAK6F,SAASC,WAAWiF,eAAAA,CAAgB0a,EAAAA,GACjEzU,GAAQiD,YAAYwR,IAEbzU,GAAQiD;AAjBX7U,UAAAA,GAAOc,KAAK,qBAAqB+G,IAAQ+J,EAkBjD;QAAA,GAEAgD,eAAAA,SAAc/M,IAAQ+J,IAAAA;AAClB/J,UAAAA,KAASA,MAAUjH,KAAKmO,MAAMsC,QAAQpK,OACtC2K,KAAUA,MAAW,CAAA;AAErB,cAwBiBxI,IALTA,IAnBJ8F,KAAKtO,KAAK6F,UACVsc,KAAY,EACRpc,KAAckB,IACdsgB,OAAcvnB,KAAKwnB,aAAavgB,EAAAA,GAChCgqB,cAAcjqB,GAAcC,EAAAA,GAC5BC,MAAc8J,GAGtBhR;AAAAA,eAAKmS,QAAQ,qBAAqBgQ,IAAW,EAACsJ,WAAAA,MAE9CzrB,CAAAA,GAAAA,KAAKmO,MAAMsC,UAAU,OAAA,OAEdO,GAAQgY,gBACRhY,OAAAA,GAAQqY,gBAkBXpiB,MAAUA,GAAOK,gBAAAA,YAZbkB,KAAcwI,GAAQ1C,GAAG9F,WAAAA,KAKA,UAAhBA,MADTA,MAAe,IACMjI,SAAAA,WAAZiI,KAAAA,SAAAA,GAAAA,KAAAA,EAAAA,IAGP8F,GAAG9F,eAAewI,KAAAA,SACXA,GAAQjN,UAKjBkD,KAASjH,KAAKkxB,WAAWjqB,IAAQ+J,EAAAA,GACjChR,KAAK+wB,sBAAsB9pB,IAAQ+J,EAAAA,GAE/B1C,GAAGrE,KAAKC,gBACRjD,GAAO2D,MACS,IAAA,YAAX0D,GAAGO,QAERxH,GAAoBJ,EAAAA,KAIxBjH,KAAK2R,WAAW1K,EAAAA,IAGxBjH,KAAKmS,QAAQ,gBAAgBgQ,EAAAA,GAC7B7T,GAAGjD,SAASsB,iBAAiB3M,KAAKqL,SAASgF,KAAAA,GAGvCrQ,KAAK6F,SAASyD,mBACdtJ,KAAKmxB,mBAAAA;QACb,GAOAD,YAAAA,SAAWjqB,IAAQ+J,IAAAA;AACVA,UAAAA,MAA6B,OAAlBA,GAAQjN,SAAkCN,WAAlBuN,GAAQjN,UAC5CiN,KAAU/J,GAAOG,kBAGjB4J,GAAQiD,aAAkC,KAArBjD,GAAQiD,aAC7BxR,GAAQuO,IAAShR,KAAKoxB,mBAAmBpgB,IAASA,GAAQiD,SAAAA,CAAAA;AAE9D,cAAIod,KAAYrxB,KAAKsmB,cAActV,EAAAA;AAKnC,iBAFA/J,GAAOK,WAAW6S,aAAakX,IAAWpqB,EAAAA,GAC1CjH,KAAKsxB,qBACED,GAAAA;QACX,GAKAC,sBAAAA,WAAAA;AAAAA,cAAAA,KAAAA;AACItxB,eAAK+D,MAAMpE,SAAS;AAEpB,cAAI4xB,KAAWvxB,KAAK6F,SAASC,YAEzB0rB,KAA0B,CADDD,GAASxmB,cAAcxI,MAAM,GAAK,EAAA,CAAA,GACRgvB,GAASplB,OAEhE;AAAA,WAAA,EAAGlE,QAAQ3F,KAAKtC,KAAK8iB,WAAAA,IAAcvd,SAAAA,IAAAA;AAC3BtF,YAAAA,GAAIsF,GAAKI,SAAAA,EAAW0P,MAAKoc,SAAAA,IAAOD;AAAAA,qBAAAA,GAAwBjtB,SAASktB,EAAAA;YAAO,EAAA,KAC5EriB,GAAKrL,MAAMO,KAAM0C,GAAczB,EAAAA,CAAAA;UACnC,EAEAvF,GAAAA,KAAKymB,OACLzmB,GAAAA,KAAKqL,SAASiH,SAClB;QAAA,GAOAhM,eAAAA,SAAeorB,IAAclrB,IAAAA;AACR,cAAAmrB;AAKjB,cALAnrB,KAAQA,OAA6B,UAApBmrB,KAAA3xB,KAAKmO,MAAM1H,cAAAA,WAAXkrB,KAAAA,SAAAA,GAAsBnrB,QAEX,YAAA,OAAjBkrB,OACPA,KAAe9qB,SAASC,eAAe6qB,EAAAA,IAAAA,CAEtCA,GACD,QAAO1xB;AAEX,cACM4xB,KADyB,OACTF,GAAa5vB,WAC7BjC,MAAMuC,UAAUI,MAAMF,KAAKovB,GAAanL,UAAAA,IACxC,CAACmL,EAAAA;AAEP,cAAA,CAAKE,GAAcjyB,OACf,QAAOK;AAEX,cAAA,CAAKwG,GAED,QADAxG,KAAK6xB,cAAcH,EACZ1xB,GAAAA;AAKX,cAAA,CAF8BA,KAAKoG,IAAIC,MAAMT,SAASY,QAAAA,KAAAA,SAAAA,GAAOyV,cAGzD,EAAA,QAAOjc;AAEXsG,UAAAA,GAAcorB,IAAclrB,EAAAA;AAE5B,cAAMsrB,KAAcF,GAAcA,GAAcjyB,SAAS,CAAA,KAAM+xB;AAU/D,kBARII,QAAAA,KAAAA,SAAAA,GAAaxqB,eACbD,GAAoByqB,EAAAA,GAExB9xB,KAAK2Y,kBAAAA,GAEL3Y,KAAKsxB,qBAAAA,GACLtxB,KAAKymB,OAEEzmB,GAAAA;QACX,GAMA2K,OAAQ,EACJkG,KAAAA,WAAAA;AAAAA,cAAK9M,KAAAA,UAAAA,SAAAA,KAAAA,WAAAA,UAAAA,CAAAA,IAAAA,UAAAA,CAAQ,IAAA,IAAIguB,KAAAA,EAAAA,UAAYpyB,SAAA,KAAA,WAAAD,UAAA,CAAA,MAAAA,UAAA,CACrB4O,GAAAA,KAAKtO,KAAK6F,UACVmsB,KAAe1jB,GAAGjD,SAASsB;AAE/B3M,eAAKmO,MAAMoD,YAAYxN,IAEnBguB,OACA/xB,KAAKoG,IAAIuE,MAAMmP,YAAY/X,GAAW,KAAGgC,EAAAA,GACzCA,MAAS/D,KAAK8vB,YAAYxhB,GAAGxI,WAAWqF,OAAQnL,CAAAA,KAAKoG,IAAIuE,MAAMmP,SAAAA,IAAAA,CAG9D/V,MAASiuB,MACVhyB,KAAKqL,SAASgF,KAAKxC,KAAK7N,IAAAA,GAE5BA,KAAK2K,MAAMiG,aAAa2C,QAAQjR,KAAKtC,IAAAA,GACrCA,KAAK2K,MAAMsnB,SAAS3vB,KAAKtC,IAE7B;QAAA,GAEAyR,KAAAA,WACI;AAAA,iBAAOzR,KAAKoG,IAAIuE,MAAMqX;QAC1B,GAKAiQ,UAAAA,WAAAA;AACI,cAAIxM,KAAAA,CAAWzlB,KAAKmO,MAAMoD,aAAAA,SAAavR,KAAKulB,YAAY,EAACxhB,OAAM/D,KAAKmO,MAAMoD,UAAAA,CAAAA;AAI1E,iBAFAvR,KAAKoG,IAAIuE,MAAMhF,UAAUwT,OAAOnZ,KAAK6F,SAASC,WAAWsF,cAAeqa,CAAAA,EAAAA,GAEjEA;QACX,GAGA7gB,WAAAA,SAAWW,IAAMmP,IAAAA;AACb,cAAI4E,KAAQ/T,MAAQvF,KAAKoG,IAAIuE,OACzB7J,KAAI,CAAA;AAIRwY,UAAAA,GAAMiN,WAAWte,SAAQ9I,SAAAA,IAAAA;AAAKA,mBAAY,KAAZA,GAAE2C,YAAehB,GAAEwD,KAAKnF,GAAEolB,SAAAA;UAAAA,EAAAA,GACxDzjB,KAAIA,GAAEoW,KAAK,IAAA;AAEX,cAEIpW;AAAAA,YAAAA,KAAIA,GAAEkB,QAAQ,mBAAmBhC,KAAK6F,SAASyC,WAAW4pB,OAAOC,OAAO,CAAA,CAAA;UAAA,SAEtE3tB,IAAK;UAAA;AAIX,iBAFA1D,KAAIA,GAAEkB,QAAQ,OAAO,GAAA,IAEd0S,QAAAA,KAAAA,SAAAA,GAASnU,QAAOP,KAAKO,KAAKO,EAAAA,IAAKA;QAC1C,GAMA8P,cAAe,EACX2C,SAAAA,SAASrM,IAAAA;AACL,cAAKlH,KAAK6F,SAASwE,aAAaC,SAAhC;AAGoB,wBADpBpD,QAAAA,KAAOA,MAAQ,EAACnD,OAAM,GAAA,OACQmD,KAAO,EAAEnD,OAAOmD,GAE9C;AAAA,gBAAIkrB,KAAgBpyB,KAAKqL,SAASqF,eAAexJ,EAAAA;AAEjD,gBAA6B,YAAA,OAAlBkrB,IAAX;AAEA,kBAAI7gB,KAAYvR,KAAKmO,MAAMoD,UAAU/Q,YACjC6xB,GAAAA,KAAkBD,GAAcE,OAAO,GAAGtyB,KAAKmO,MAAMoD,UAAU5R,MAAAA,EAAQa,YAAAA,GACvE+xB,KAAoBH,GAAcI,UAAUxyB,KAAKmO,MAAMoD,UAAU5R,MAAAA;AAEhEyyB,cAAAA,MAAkBpyB,KAAKmO,MAAMoD,aAAa8gB,MAAmB9gB,MAK9DvR,KAAKoG,IAAIuE,MAAM8I,aAAa,gBAAgB8e,EAAAA,GAC5CvyB,KAAKmO,MAAM6W,kBAAkB9d,OAL7BlH,KAAKoG,IAAIuE,MAAM0I,gBAAgB,cAAA,GAAA,OACxBrT,KAAKmO,MAAM6W;YARkB;UAPE;QAqB9C,GAMAnU,KAAAA,SAAKvP,IAAAA;AACD,cAAImxB,KAAczyB,KAAKoG,IAAIuE,MAAMyG,aAAa,cAAA,GAC1CwF,KAAatV,OAAMmxB,KAAczyB,KAAKmO,MAAMoD,YAAYkhB,KAAc;AAE1E,iBAAA,CAAA,CAAI7b,OAC0B,SAAtB5W,KAAK6F,SAASgJ,OACd7O,KAAK0yB,oBAAqB9rB,SAASC,eAAe7G,KAAKmO,MAAMpI,IAAIghB,SAASnQ,EAG1E5W,CAAAA,KAAAA,KAAK2K,MAAMkG,IAAIvO,KAAKtC,MAAM4W,EAC1B5W,GAAAA,KAAK2iB,mBAAAA,OAA0B3iB,KAAKoG,IAAIuE,KAG5C3K,IAAAA,KAAK2K,MAAMiG,aAAa2C,QAAQjR,KAAKtC,IAAAA,GACrCA,KAAKqL,SAASgF,KAAAA,GAAAA;QAMtB,EAAA,EAAA,GASRsiB,WAAAA,SAAW3hB,IAAAA;AACP,iBAAOhR,KAAK+D,MAAMgP,WAAU1O,SAAAA,IAAAA;AAAAA,mBAAQA,GAAK+jB,YAAYpX,MAAS,CAAA,GAAIoX;UAAAA,EACtE;QAAA,GAEAZ,cAAAA,SAAcjiB,IAAAA;AACV,cAAIgiB,KAAQ;AAEZ,cAAIhiB,GACA,QAAQA,KAAOA,GAAKkf,yBAChB8C,CAAAA;AAER,iBAAOA;QACX,GAEAzE,YAAAA,WAAAA;AAAY,mBAAArjB,KAAAC,UAAAC,QAAGizB,KAAH,IAAA/yB,MAAAJ,EAAAA,GAAAK,KAAA,GAAAA,KAAAL,IAAAK,KAAG8yB,CAAAA,GAAH9yB,EAAAA,IAAAJ,UAAAI,EAAAA;AACR,cAAIsM,KAAY,MAAOnM,GAAGD,KAAK6F,SAASC,WAAWC,IAAIxD,MAAM,GAAA,CAAA,EAAA,OAAMtC,GAAG2yB,EAAU1b,CAAAA,EAAAA,KAAK,GACrF;AAAA,iBAAO,CAAA,EAAG1U,MAAMF,KAAKtC,KAAKoG,IAAIC,MAAMwR,iBAAiBzL,EACzD,CAAA;QAAA,GAKAwkB,YAAAA,WACI;AAAA,cAAIiC,KAAM7yB,KAAK6F,SAASC,YACpBgtB,KAAW9yB,KAAKoG,IAAIC,MAAMwR,iBAAiB,GAA2Bgb,OAAxBA,GAAI3sB,aAAY,QAAA,EAAoBsQ,OAAZqc,GAAI1mB,SAAQ,mBACtF,CAAA;AAAA,iBAAO2mB,GAASA,GAASnzB,SAAS,CACtC;QAAA,GAQAkW,gBAAAA,SAAgB9R,IAAOzD,IAAeyyB,IAAAA;AAClC,cAAIC,KAAY,GAEX1vB,KAAAA,MAAAC,KAAAA,OAAAC,KAAAA;AAAAC,cAAAA;AAAL,qBAAKC,IAAAC,KAAY3D,KAAK+D,MAAAA,OAAAA,QAAjBT,EAAAA,GAAAA,EAAAA,MAAAI,KAAAC,GAAAkP,KAAAA,GAAAogB,OAAA3vB,KAAyB,MAAA;AAAzB,kBAAIe,KAAJX,GAAAK;AACe5D,cAAAA,GAASH,KAAKO,KAAK,KAAGwD,EAAAA,GAAQM,GAAKN,OAAOzD,EAAAA,KACzCyyB,MAAS1uB,GAAK+jB,WAC3B4K;YACR;UAAA,SAAA/zB,IAJKsE;AAAAA,YAAAA,KAAAA,MAAAC,KAAAgB;UAAAA,UAAAA;AAAAA,gBAAAA;AAAAlB,cAAAA,MAAA,QAAAK,GAAAc,UAAAd,GAAAc,OAAAA;YAAAA,UAAAA;AAAA,kBAAAlB,GAAA,OAAAC;YAAAA;UAAAA;AAML,iBAAOwvB;QACX,GAEAE,oBAAAA,SAAoBnvB,IAAAA;AAAAA,cAAAA,KAAAA,MACZovB,KAAU,CAAA,GACVC,KAAkBpzB,KAAK6F,SAASwF,SAAS/K;AAO7C,iBALAN,KAAK8iB,WAAAA,EAAa7a,SAAQ,SAAChB,IAAQ/H,IAC1B+H;AAAAA,YAAAA,GAAOG,mBAAmBjH,GAASiP,GAAK7O,KAAK0G,GAAOG,gBAAgBrD,KAAAA,GAAQA,IAAOqvB,EAAAA,KACpFD,GAAQ7uB,KAAKpF,EAAAA;UACrB,EAAA,GAEOi0B;QACX,GAEAE,kBAAAA,SAAkBtvB,IACd;AAAA,cAAI8sB,KAAS7wB,KAAKkzB,mBAAmBnvB,EAAAA,EAAO,CAC5C;AAAA,iBAAO/D,KAAK8iB,WAAa+N,EAAAA,EAAAA;QAC7B,GAMAyC,UAAAA,SAAUrsB,IAAAA;AAAAA,cAAAA,KAAAA;AACFA,UAAAA,OACAA,GAAOtB,UAAU6N,IAAIxT,KAAK6F,SAASC,WAAWoG,QAC9C6E,GAAAA,YAAW,WAAA;AAAQ9J,YAAAA,GAAOtB,UAAUyN,OAAOhE,GAAKvJ,SAASC,WAAWoG,QAAa;UAAA,IAAA,GAAA;QAEzF,GAKAqnB,kBAAAA,SAAkBzyB,IAEd;AAAA,iBADAA,KAAId,KAAKO,KAAKO,GAAEN,YACTR,CAAAA,GAAAA,KAAK6F,SAASoD,UAAUoN,QAAOmd,SAAAA,IAAAA;AAAK,oBAAC,KAAGA,IAAGhzB,YAAiBM,KAAAA;UAAAA,EAAAA,EAAGnB;QAC1E,GAKA8zB,kBAAAA,SAAkB3yB,IAAAA;AACd,iBAAA,CAAA,CAASd,KAAK0zB,iBAAiB5yB,EAAAA;QAQnC,GAMA4yB,kBAAAA,SAAkB3vB,IAAO6nB,IAAM5iB,IAEvB4iB;AAAAA,UAAAA,KAAOA,MAAQ;AADnB,cAAI3c,IAEAX,KAAKtO,KAAK6F;AAqBd,kBApBImD,KAAYA,MAAasF,GAAGtF,WAEtBqM,MAAKse,SAAAA,IAAAA;AAEX,gBAAIC,KAAqB,YAAA,OAAPD,KAAmBA,GAAI/H,EAAAA,KAAS+H,GAAI5vB,QAAS4vB;AAG/D,gBAFgBxzB,GAAQyzB,IAAM7vB,IAAOuK,GAAGjD,SAAS/K,eAAegO,GAAG/N,IAI/D,EAAA,QADA0O,KAAuB,YAAP0kB,OAAAA,KAAkBA,KAAM,EAAC5vB,OAAM4vB,GAAAA,GAAAA;UAGvD,EAAA,GAIK1kB,MAAkB,WAAR2c,MAAqC,WAAlBtd,GAAG9F,gBAEjCyG,KAASjP,KAAK0zB,iBAAiB3vB,IAAOuK,GAAG9F,aAAaQ,EAAAA,IAGnDiG;QACX,GAQAsW,aAAAA,SAAavU,IACT;AAAA,cAAI1C,KAAKtO,KAAK6F,UAEV+lB,KAAO,WAAW5a,KAAU,UAAU1C,GAAG9F,aACzC1H,KAAId,KAAKO,KAAKyQ,GAAQ4a,EAAAA,IAAQ,EAGlC;AAAA,kBAAM5a,GAAQ4a,EAAM,IAAA,IAAIrrB,KAAAA,IAIT,SAAX+N,GAAGO,QAAiBP,GAAG/F,WAAqBmc,GAAVpW,GAAG/F,SAAmBulB,MAAAA,KAAAA,CAAYxf,GAAG/F,QAAQzD,KAAKhE,EAC7Ed,IAAAA,KAAKid,MAAM1U,UAGjB+F,CAAAA,GAAGvF,cAAc/I,KAAK6V,eAAe/U,IAAGwN,GAAGjD,SAAS/K,eAAe0Q,GAAQoX,OACrEpoB,IAAAA,KAAKid,MAAME,YAElBnd,KAAKuzB,iBAAiBzyB,EAAAA,KAAOwN,GAAGpF,oBAAAA,CAAqBlJ,KAAKyzB,iBAAiB3yB,EAAAA,IACpEd,KAAKid,MAAMG,aAAAA,CAElB9O,GAAG2jB,YACI3jB,GAAG2jB,SAASjhB,EAAAA,IAdZhR,KAAKid,MAAM9R;QAiB1B,GAEAimB,oBAAAA,SAAmBpgB,IAASsU,IAAAA;AACxB,iBAAO,EACH,gBAAA,MACA3H,OAAS,GAA0BnH,OAAvBxF,GAAQ2M,SAAS,IAAG,GAA0CnH,EAAAA,OAAvCxW,KAAK6F,SAASC,WAAWiF,aAAgBxK,EAAAA,KAAAA,GAC5Emd,OAAS4H,GAAAA;QAEjB,GAEAra,YAAAA,WAAAA;AACI,iBAAOjL,KAAK+D,MAAMpE,UAAUK,KAAK6F,SAAS4C,WACpCzI,KAAKid,MAAMC;QAErB,GAEA2W,aAAAA,SAAa1a,IAAQ2a,IAAAA;AACjB,cAAIxlB,KAAKtO,KAAK6F;AAEd7F,eAAKoG,IAAIC,MAAMT,SAASgB,SAASqc,aAAAA,KAAkBrc,SAASqc,cAAc8B,KAAAA,GAC1EzW,GAAGwlB,MAAc,UAAA,IAAc3a,IAC/BnZ,KAAKoG,IAAIC,OAAO8S,KAAS,QAAQ,YAAY,WAAa2a,EAAAA,MAAc,YAAA,IAExE9zB,GAAAA,KAAK6F,SAASsD,YAAAA,MACdnJ,KAAKwtB,mBAAAA,CAAoBrU,EAEpBA,GAAAA,OAEDnZ,KAAKuN,OAAOC,QAAQlL,KAAKtC,MAAM,IAAA,GAE/BA,KAAKuN,OAAOC,QAAQlL,KAAKtC,IAAAA;QAEjC,GAEAwtB,oBAAAA,SAAmBrf,IACfnO;AAAAA,eAAKoG,IAAIC,MAAMwR,iBAAiB,qBAAuB5P,EAAAA,SAAQrG,SAAAA,IAAAA;AAC3DA,YAAAA,GAAImyB,kBAAkB5lB,IACtBvM,GAAIqtB,WAAa9gB,KAAQ,IAAA;UAC7B,EAAA;QACJ,GAEA6lB,aAAAA,SAAaC,IAAAA;AACTj0B,eAAK6zB,YAAYI,IAAY,UACjC;QAAA,GAOAlgB,eAAAA,SAAemgB,IAAAA;AAAAA,cAAAA,KAAAA,MACsCC,KAAAn0B,KAAK6F,UAAjDmD,KAA4CmrB,GAA5CnrB,WAAWV,KAAiC6rB,GAAjC7rB,YAAYuG,KAAqBslB,GAArBtlB,MAAMrG,KAAe2rB,GAAf3rB,aAC9B4rB,KAAmB,CAAA,GACnBC,KAAqBrrB,CAAAA,CAAAA,MAAwB0b,GAAZ1b,GAAU,CAAA,GAAc7G,MAEzDvB,GAAAA,KAAUf,MAAMe,QAAQszB,EAAAA,GACxBI,KAAe1zB,MAAWszB,GAAU,CAAGnwB,EAAAA,OACvCwwB,KAAwBjzB,SAAAA,IAAAA;AAAAA,oBAAMA,KAAE,IAAIiB,MAAM+F,EAAYmN,EAAAA,QAAO,SAAC+e,IAAK1zB,IAAAA;AAC/D,kBACoBinB,IADd0M,KAAUrlB,GAAK7O,KAAKO,EAE1B;AAAA,qBADA2zB,MAAWD,GAAIlwB,MAAO6jB,GAAFJ,KAAE,CAAA,GAACvf,IAAaisB,EAAAA,GAAS1wB,GAAzBgkB,IAAyBhkB,SAAM0wB,EAAAA,GAA/B1M,GACbyM,GAAAA;YACX,IAAG,CAAA,CAAA;UAAA;AAMP,cAJwB,YAAbN,OAAAA,OACPA,KAAYA,GAAU7xB,SAGF,IAAA,YAAA,OAAb6xB,IAAuB;AAC9B,gBAAA,CAAKA,GAAU3zB,KAAS,EAAA,QAAO,CAAA;AAG/B2zB,YAAAA,KAAYK,GAAsBL,EAAAA;UACtC,MAGStzB,CAAAA,OAELszB,KAAYA,GAAUze,QAAO,SAAC+e,IAAKnwB,IAAAA;AAC/B,gBAAIpC,GAASoC,EAAAA,GAAQ;AACjB,kBAAIqwB,KAAWjyB,GAAO,CAAI4B,GAAAA,EAAAA;AAGrBmE,cAAAA,MAAeksB,OAChBlsB,KAAc,UAElBksB,GAASlsB,EAAAA,IAAe4G,GAAK7O,KAAKm0B,GAASlsB,EAAAA,CAAAA,IAGvCksB,GAASlsB,EAAAA,KAA0C,MAA1BksB,GAASlsB,EAAAA,MAClCgsB,GAAIlwB,KAAKowB,EAAAA;YACjB,WAEgB,QAARrwB,MAAyB,OAATA,MAAwBZ,WAATY,IAAoB;AACvDmwB,kBAAAA;AAAAA,eAAAA,KAAAA,IAAIlwB,KAAJkwB,MAAAA,IAAUv0B,GAAGs0B,GAAsBlwB,EAAAA,CAAAA,CAAAA;YACvC;AAEA,mBAAOmwB;UACX,IAAG,CAsCP,CAAA;AAAA,iBAhCIH,MAAuBC,CAAAA,OACvBJ,GAAUjsB,SAAQ5D,SAAAA,IACd;AAAA,gBAAIswB,KAAyBP,GAAiBvzB,KAAIiC,SAAAA,IAAGA;AAAAA,qBAAAA,GAAEiB;YAAAA,EAInDwS,GAAAA,KAAenH,GAAK/D,SAASoH,gBAAgBnQ,KAAW+B,IAAAA,GAAKmE,EAAAA,GAAc,EAAEgN,OAAAA,KAE5EpG,CAAAA;AAAAA,YAAAA,GAAKvJ,SAASkD,eAEfwN,KAAeA,GAAaF,QAAOue,SAAAA,IAAgB;AAAA,qBAAA,CAACD,GAAuBpwB,SAASqwB,GAAa7wB,KAAAA;YAAAA,EAIrG;AAAA,gBAAI8wB,KAAWte,GAAa5W,SAAS,IAC/ByP,GAAKskB,iBAAiBrvB,GAAKmE,EAAcA,GAAAA,IAAa+N,EACtDA,IAAAA,GAAa,CAEfse;AAAAA,YAAAA,MAAoBnQ,GAARmQ,IAAoB1yB,MAAAA,IAChCiyB,GAAiB9vB,KAAMuwB,EAAAA,IAEV,SAARhmB,OACapL,QAAdY,GAAKN,UACLM,GAAKN,QAAQM,GAAKmE,EAAAA,IACtB4rB,GAAiB9vB,KAAKD,EAAAA;UAE9B,EAAA,GAEI+vB,GAAiBz0B,WACjBu0B,KAAYE,MAGbF;QACX,GAOAzE,cAAAA,SAAcnuB,IAAAA;AAAAA,cAAAA,KAAAA,MACoF6yB,KAAAn0B,KAAK6F,UAA9F4D,KAAyF0qB,GAAzF1qB,qBAAqBV,KAAoEorB,GAApEprB,YAAYiB,KAAwDmqB,GAAxDnqB,cAAcd,KAA0CirB,GAA1CjrB,kBAAkBT,KAAwB0rB,GAAxB1rB,SAASD,KAAe2rB,GAAf3rB,aAC3EssB,KAAc,CAAA;AAElBxzB,UAAAA,KAAIA,GAAEiB,MAAMkH,GAAoB,CAAA,CAAA,EAAI5I,KAAI,SAACT,IAAIlB,IAAAA;AACzC,gBAGI61B,IACA/jB,IACA/J,IALA5G,KAAKD,GAAGmC,MAAMkH,GAAoB,CAAA,CAAA,GAClCurB,KAAkB30B,GAAG,CACrB40B,GAAAA,KAAiBH,GAAYn1B,UAAU8I;AAK3C,gBAAA;AAEI,kBAAIusB,MAAAA,CAAoBA,GACpB,OAAME;AACVlkB,cAAAA,KAAUwb,KAAKC,MAAMuI,EAAAA;YACzB,SAAQxwB,IAAAA;AACJwM,cAAAA,KAAU5B,GAAK2E,cAAcihB,EAAiB,EAAA,CAAA,KAAM,EAACjxB,OAAMixB,GAC/D;YAAA;AAIA,gBAFAhrB,GAAa1H,KAAW0O,IAAAA,EAEnBikB,GAAAA,MAAAA,EACD50B,GAAGV,SAAS,MACVuJ,MAAAA,CAAoBkG,GAAKqkB,iBAAiBziB,GAAQjN,KACjDgF,KAAAA,CAAAA,MAAcqG,GAAKyG,eAAe7E,GAAQjN,KAAAA,GAAAA;AAa5C,kBAAG3D,GACJ,QAAOlB,KAAIuK,GAAoB,CAAA,IAAKrJ,KAAKA;YAVzC4Q,MAAAA,CAAAA,GADA+jB,KAAW/jB,GAAQxI,EAAAA,IAAeA,KAAc,OAC5B4G,IAAAA,GAAK7O,KAAKyQ,GAAQ+jB,EAAAA,CAAAA,GAEtC9tB,KAASmI,GAAKkX,cAActV,EAAAA,GAC5B8jB,GAAYxwB,KAAM0M,EAAAA,GAClB/J,GAAOtB,UAAU6N,IAAIpE,GAAKvJ,SAASC,WAAW+E,cAAAA,GAE9CxK,GAAG,CAAA,IAAK4G,GAAO4iB,WACfza,GAAKrL,MAAMO,KAAK0M,EAAAA;AAKpB,mBAAO3Q,GAAG6W,KAAK,EAAA;UACnB,EAAA,EAAGA,KAAK,EAAA,GAERlX,KAAKoG,IAAIuE,MAAMmP,YAAYxY,IAC3BtB,KAAKoG,IAAIuE,MAAMgP,YAAY/S,SAASC,eAAe,EACnD7G,CAAAA,GAAAA,KAAKoG,IAAIuE,MAAM/F,UAAAA;AAEf,cAAIkuB,KAAW9yB,KAAK8iB,WAAAA;AAMpB,iBAJAgQ,GAAS7qB,SAAQ,SAACrG,IAAKiV,IAAAA;AAAAA,mBAAQ7P,GAAcpF,IAAMkzB,GAAYje,EAAAA,CAAAA;UAAAA,EAC/D7W,GAAAA,KAAKymB,OAAO,EAACC,oBAAAA,KAEb5e,CAAAA,GAAAA,GAAoBgrB,IAAU9yB,KAAKmO,MAAMC,QAAAA,GAClC9M;QACX,GAMAoxB,qBAAAA,SAAqByC,IAAgBC,IAAAA;AACjC,cAAKp1B,KAAKmO,MAAMpI,OAAQqvB,IAAxB;AAEAA,YAAAA,KAAeA,MAAgBp1B,KAAKmO,MAAMpI,IAAIghB,SAAS/mB,KAAKmO,MAAMpI,IAAIhC;AACtE,gBAAI8S,IAAKwe,IACL5uB,KAAYzG,KAAKmO,MAAM1H,aAAanH,OAAOoH,aAAAA,GAC3C4uB,KAAc7uB,GAAUkd,YACxB4R,KAAmBv1B,KAAKmO,MAAMpI,IAAIuC,aAAatI,KAAKmO,MAAMpI,IAAIuC,WAAW3I,SAAS;AActF,mBARA21B,GAAYE,UAAU/uB,GAAUid,eAAe6R,EAQnC,GAAA,OAFZ1e,KAAMye,GAAY/Q,UAAUuC,YAAYsO,EAEjB,KAAA,QAEvBC,KAAgBC,GAAYE,UAAU3e,EAAAA,GAKtCse,MAAkBG,GAAYhuB,WAAW6S,aAAagb,IAAgBE,EAAAA,GAAAA;UA3B/B;QAkC3C,GAQAI,mBAAAA,SAAkBzkB,IAAS0D,IAAAA;AACvBA,UAAAA,KAAUA,MAAW,CAAA;AAErB,cACIpG,KAAKtO,KAAK6F,UACV6vB,KAAyB,CACzBC,GAAAA,KAAe,CAAA,GACf5M,KAAe5mB,OAAOe,OAAO,CAAA,GAAI8N,IAAS,EAACjN,OAAMiN,GAAQjN,QAAM,GAAA,CAAA;AAQnE,cALAiN,KAAU7O,OAAOe,OAAO,CAAI6lB,GAAAA,EAAAA,GAC5Bza,GAAGtE,aAAa1H,KAAKtC,MAAMgR,EAAAA,GAE3BA,GAAQiD,YAAYjU,KAAKiL,WAAgBjL,KAAAA,KAAKulB,YAAYvU,EAAAA,GAAAA,SAEtDA,GAAQiD,WAAoB;AAC5B,gBAAIS,GAAQ/K,YACR;AAUJ,gBANAlH,GAAOkzB,IAAc31B,KAAKoxB,mBAAmBpgB,IAASA,GAAQiD,SAAAA,GAAY,EAAC2hB,kBAAiB7M,GAAAA,CAAAA,GAExF/X,GAAQiD,aAAajU,KAAKid,MAAME,aAEhCnd,KAAKszB,SAAUtzB,KAAKqzB,iBAAiBriB,GAAQjN,KAE5CuK,CAAAA,GAAAA,CAAAA,GAAG/E,kBAEJ,QADAmsB,KAAAA,GAAuBpxB,KAAK0M,GAAQjN,KAG5C;UAAA;AAaA,iBAXI,cAAciN,OACVA,GAAQuH,WACRod,GAAa,eAAA,IAAA,OAGN3kB,OAAAA,GAAQuH,WAMhB,EAACtR,QAFCjH,KAAKsmB,cAActV,IAAS2kB,EAAAA,GAErB3kB,SAAAA,IAAS0kB,wBAAAA,GAAAA;QAC7B,GAOAG,uBAAAA,SAAsB5uB,IAAQ+J,IAAAA;AAAAA,cAAAA,KAAAA,MACtB1C,KAAKtO,KAAK6F,UACV4f,KAAUzU,GAAQiD;AAElBwR,UAAAA,MAAuB,SAAZA,KAEXzlB,KAAK+D,MAAMO,KAAK0M,EAAAA,KAGhBhR,KAAKmS,QAAQ,WAAW,EAACjL,MAAK8J,IAASuW,OAAMvnB,KAAK+D,MAAMpE,QAAQoG,KAAIkB,IAAQkiB,SAAQ1D,GAC/EnX,CAAAA,GAAAA,GAAGhF,mBAEJyH,YAAW,WAAA;AAAA,mBAAM3B,GAAKuC,WAAW1K,IAAAA,IAAQ;UAAO,IAAA,GAAA,IAGxDjH,KAAKqL,SAASwB,SAAAA;QAClB,GAOAipB,WAAAA,SAAW7uB,IAAQ+J,IAAAA;AAAAA,cAAAA,KAAAA;AAGf,cAAA,CAFShR,KAAK6F,SAEPqD,oBAAqBlJ,KAAKyzB,iBAAiBziB,GAAQjN,KAA1D,GAAA;AAMI/D,iBAAKmO,MAAMmC,QAAQQ,gBACnBC,YAAW,WAAA;AAAM,qBAAA3B,GAAKuT,mBAAAA,OAA0BvT,GAAKhJ,IAAIuE,KAAAA;YAAAA,EAE7D;AAAA,gBAAIorB,KAAa/1B,KAAK4wB,WAAAA;AActB,mBAZImF,KACA/1B,KAAKkxB,WAAW6E,IAAY/kB,EAAAA,IAE5BhR,KAAKg2B,UAAU/uB,EAKnBjH,GAAAA,KAAK+D,MAAM,CAAKiN,IAAAA,IAChBhR,KAAKymB,OACLzmB,GAAAA,KAAKmS,QAAQ,OAAO,EAAEpM,KAAIkB,IAAQC,MAAK8J,GAAAA,CAAAA,GAEhC,CAAC/J,EAAAA;UAtBJ;QAuBR,GAKAgvB,aAAAA,SAAaC,IACT;AAAA,cAAIllB,KAAUvO,GAAO,EAAEsB,OAAM,GAAA,GAAMmyB,MAAe,CAAA,CAAA,GAC9CjvB,KAASjH,KAAKsmB,cAActV,EAEhChK;AAAAA,UAAAA,GAAcC,IAAQ+J,EAGtBhR,GAAAA,KAAKg2B,UAAU/uB,EACfjH,GAAAA,KAAK4R,QAAQ3K,IAAQ,EAAC6pB,gBAAAA,KACtB9wB,CAAAA,GAAAA,KAAKkU,iBAAiB,IAAA;QAC1B,GASA5C,SAAAA,SAAS4iB,IAAWiC,IAAYxsB,IAAAA;AAAAA,cAAAA,KAAAA,MACxBysB,KAAW,CAAA,GACX9nB,KAAKtO,KAAK6F,UACV6vB,KAAyB,CACzBW,GAAAA,KAAOzvB,SAASuf,uBAChBmQ,GAAAA,KAAY,CAAA;AAEhB,cAAKpC,CAAAA,MAAiC,KAApBA,GAAUv0B,OACxB,QAAOy2B;AAMX,kBAFAlC,KAAYl0B,KAAK+T,cAAcmgB,EAAAA,GAEvB5lB,GAAGO,MACP;YAAA,KAAK;AAAO,qBAAO7O,KAAKu2B,WAAWrC,EAAAA;YACnC,KAAK;AACDiC,cAAAA,KAAAA,OACAn2B,KAAKif,cAAAA;UAAAA;AA8Cb,iBA1CAjf,KAAKoG,IAAIuE,MAAM0I,gBAAgB,OAAA,GAE/B6gB,GAAUjsB,SAAQ+I,SAAAA,IAAAA;AACd,gBAAMwlB,KAAapnB,GAAKqmB,kBAAkBzkB,IAAS,EAACrH,aAAaA,MAAe2E,GAAG3E,YAEnF,CAAA;AAAA,gBAAK6sB,IAAL;AAEA,kBAAMvvB,KAASuvB,GAAWvvB;AAQ1B,kBANA+J,KAAUwlB,GAAWxlB,SACrB0kB,KAAyBc,GAAWd,wBAEpCU,GAAS9xB,KAAK2C,EAAAA,GAGC,YAAXqH,GAAGO,KACH,QAAOO,GAAK0mB,UAAU7uB,IAAQ+J,EAKlCqlB;AAAAA,cAAAA,GAAK1c,YAAY1S,EACjBmI,GAAAA,GAAKymB,sBAAsB5uB,IAAQ+J,EAAAA,GACnCslB,GAAUhyB,KAAK,EAAC2C,QAAAA,IAAQ+J,SAAAA,GAAAA,CAAAA;YAlBP;UAmBrB,EAEAhR,GAAAA,KAAKg2B,UAAUK,EAEfC,GAAAA,GAAUruB,SAAQ,SAAAwV,IAAAA;AAAExW,gBAAAA,KAAAA,GAAAA,QAAQ+J,KAAAA,GAAAA;AAAAA,mBACxB5B,GAAK+C,QAAQ,OAAO,EAACpM,KAAIkB,IAAQsgB,OAAMnY,GAAKujB,UAAU3hB,EAAU9J,GAAAA,MAAK8J,GAAAA,CAAAA;UAAAA,EAGzEhR,GAAAA,KAAKymB,OAAAA,GAGDyN,GAAUv0B,UAAUw2B,OACpBn2B,KAAK2K,MAAMkG,IAAIvO,KAAKtC,MAAMsO,GAAG/E,oBAAoB,KAAKmsB,GAAuBxe,KAAK5I,GAAGyf,WAAAA,CAAAA,GACrF/tB,KAAK2iB,mBAAmB,OAAO3iB,KAAKoG,IAAIuE,KAAAA,IAI5C3K,KAAKqL,SAASiH,SAAAA,GACP8jB;QACX,GAMAG,YAAAA,SAAYE,IAAAA;AAAAA,cAAAA,KAAAA;AAIR,eAHAA,KAAWz2B,KAAK+T,cAAc0iB,EAGjB,GAAA,CAAA,EAAG1P,UAAU/mB,KAAKmO,MAAMpI,IACjC,QAAO/F,KAAK02B,kBAAkBD,GAAS,CAAA,CAAA;AAG3C,cAAIJ,KAAOzvB,SAASuf,uBAChBmQ,GAAAA,KAAY,CAAA;AAYhB,iBAVAG,GAASxuB,SAAQ+I,SAAAA,IAAAA;AACb,gBAAMwlB,KAAapnB,GAAKqmB,kBAAkBzkB,EAAAA;AAC1CqlB,YAAAA,GAAK1c,YAAY6c,GAAWvvB,MAC5BmI,GAAAA,GAAKhF,eAAeosB,GAAWvvB,MAAAA,GAC/BmI,GAAKymB,sBAAsBW,GAAWvvB,QAAQuvB,GAAWxlB,OAAAA,GACzDslB,GAAUhyB,KAAK,EAAC2C,QAAQuvB,GAAWvvB,QAAQ+J,SAASwlB,GAAWxlB,QAAAA,CAAAA;UACnE,EAEAhR,GAAAA,KAAK6xB,cAAcwE,IAAMC,EAAAA,GAElBD,GAAKM;QAChB,GAEA9E,eAAAA,SAAetsB,IAAM+wB,IAEE;AAAA,cAAA3E,IAAbiF,KAAiC,UAApBjF,KAAA3xB,KAAKmO,MAAM1H,cAAAA,WAAXkrB,KAAA,SAAAA,GAAsBnrB,OACnCqwB,KAAAA,CAAAA,CAAsBD,MAAc52B,KAAKoG,IAAIC,MAAMT,SAASgxB,GAAW3a,cAAAA,GACvE2V,KAAgBrsB,KAHS,OAIxBA,GAAKzD,WAAsCjC,MAAMuC,UAAUI,MAAMF,KAAKiD,GAAKghB,UAAc,IAAA,CAAChhB,EAAAA,IAC3F,CAEN;AAAA,cAAIsxB,GACA72B,MAAKsG,cAAcf,EAEnB;eAAA;AACAvF,iBAAKoG,IAAIuE,MAAMC,MACf;AAAA,gBAAMnE,KAAYzG,KAAK2Y,kBAAAA;AAAAA,aAEnBlS,QAAAA,KAAAA,SAAAA,GAAWD,WACXC,GAAUD,MAAM6V,SAASrc,KAAKoG,IAAIuE,OAAOlE,GAAUD,MAAMqgB,SAAAA,GACzDpgB,GAAUD,MAAM8V,OAAOtc,KAAKoG,IAAIuE,OAAOlE,GAAUD,MAAMqgB,SAAAA,IAG3D7mB,KAAKoG,IAAIuE,MAAMgP,YAAYpU,EAE3BvF,GAAAA,KAAKsxB,qBAAAA,GACLtxB,KAAKymB,OAAAA;AAEL,gBAAMqL,KAAcF,GAAcA,GAAcjyB,SAAS,CAAA;AAAA,aAErDmyB,QAAAA,KAAAA,SAAAA,GAAaxqB,eACbD,GAAoByqB,EAExB9xB,GAAAA,KAAK2Y,kBAAAA;UACT;AAEA,cAAMme,MAAcR,QAAAA,KAAAA,SAAAA,GAAW32B,UACzB22B,KACA1E,GAAcvb,QAAO9Q,SAAAA,IAAAA;AAAQA,mBAAkB,MAAlBA,GAAKzD;UAAAA,EAEpCg1B;AAAAA,WAAAA,QAAAA,KAAAA,SAAAA,GAAan3B,WACbK,KAAKmS,QAAQ,OAAO,EAACpK,MAAM+uB,GACnC,CAAA;QAAA,GAMAJ,mBAAAA,SAAmB1lB,IAAAA;AAAAA,cAIa+lB,IAFxB9vB,IACA+vB,IAAAA,KAAAA,MAFA1oB,KAAKtO,KAAK6F,UAGVoxB,KAAwB,UAAAF,KAAA/2B,KAAKmO,MAAMpI,QAAAA,WAAXgxB,KAAAA,SAAAA,GAAgBzuB;AAiB5C,cAfA0I,GAAQ+V,SAAS/V,GAAQ+V,UAAU/mB,KAAKmO,MAAMpI,MAAM/F,KAAKmO,MAAMpI,IAAIghB,UAAUzY,GAAG/F,QAAQ2pB,UAAQ5jB,GAAG/F,SAAS,CAAA,GAE5GyuB,KAASh3B,KAAKy1B,kBAAkBzkB,EAAAA,GAChC/J,KAAS+vB,GAAO/vB,QAIXjH,KAAK0yB,oBAAoBzrB,EAAAA,KAC1BjH,KAAKoG,IAAIuE,MAAMgP,YAAY1S,EAAAA,GAG/B8J,YAAW,WAAA;AAAA,mBAAK9J,GAAOtB,UAAU6N,IAAIpE,GAAKvJ,SAASC,WAAW+E,cAAAA;UAAiB,IAAA,GAAA,GAE/E7K,KAAKymB,OAAAA,GAAAA,CAEAwQ,IAAwB;AACzB,gBAAIr1B,KAAM5B,KAAKoK,eAAenD,EAAWA,KAAAA;AAIzC8J,uBAAW1J,IAAqB,GAAGzF,EACvC;UAAA;AAQA,iBANA5B,KAAKmO,MAAMpI,MAAM,MAEjB/F,KAAK61B,sBAAsB5uB,IAAQ+vB,GAAOhmB,OAE1ChR,GAAAA,KAAKmS,QAAQ,OAAO,EAACpM,KAAKixB,IAAQ9vB,MAAK8J,GAAAA,CAAAA,GAEhC/J;QACX,GAKA+uB,WAAAA,SAAU/uB,IACN;AAAA,cAAIb,KAAMpG,KAAKoG,KACX8wB,KAAmB9wB,GAAIuE;AAGvBvE,UAAAA,GAAIC,MAAM8oB,aAAaloB,IAAQiwB,EAGvC;QAAA,GAQA5Q,eAAAA,SAAetV,IAASmmB,IAAAA;AACpBnmB,UAAAA,GAAQoX,UAAUnjB,GAAAA;AAElB,cAAIgC,IACAmwB,KAAe30B,GAAO,CAAA,GAAIuO,IAASgd,GAAA,EAAEjqB,OAAMhC,GAAWiP,GAAQjN,QAAM,EAAQozB,EAAAA,GAAAA,EAAAA,CAAAA;AAchF,kBR/gDD,SAA+Bv1B,IAAAA;AAKlC,qBAHIy1B,IADAC,KAAO1wB,SAAS2wB,mBAAmB31B,IAAK41B,WAAWC,WAAW,MAAA,KAAM,GAIjEJ,KAAWC,GAAKtN,SAAAA,IACdqN,CAAAA,GAASrV,YAAYzhB,KAAAA,KACtB82B,GAAS/vB,WAAW0R,YAAYqe,EAE5C;UAAA,GQ6/CQpwB,KAASjH,KAAK0X,cAAc,OAAO,CAAC0f,IAAcp3B,IAAAA,CAAAA,CAAAA,GAQlDgH,GAAcC,IAAQ+J,EAAAA,GACf/J;QACX,GAMAkqB,oBAAAA,WAAAA;AAAAA,cAAAA,KAAAA,MACQ7iB,KAAKtO,KAAK6F;AAEd7F,eAAK8iB,WAAWxU,GAAGxI,WAAWiF,aAAAA,EAAe9C,SAAQ,SAAChB,IAAQ/H,IAAAA;AAC1D,gBAAI8R,KAAUhK,GAAcC,EACxBgE,GAAAA,KAAamE,GAAKnE,WAClBysB,GAAAA,KAAgBtoB,GAAKmW,YAAYvU,EAAAA,GACjCyU,KAAAA,SAAUiS,MAAAA,CAA2BzsB;AAMzC,gBAJe,YAAXqD,GAAGO,QACHO,GAAKoW,sBAAsBkS,EAG3BjS,GAAAA,GAKA,QAJAzU,KAAUA,GAAQ4kB,mBACZ5kB,GAAQ4kB,mBACR,EAAE7xB,OAAMiN,GAAQjN,MAAAA,GAEfqL,GAAK8hB,WAAWjqB,IAAQ+J,EAAAA;AAInC/J,YAAAA,GAAOyW,QAAQzS,MAAcysB;UACjC,EAAA;QACJ,GASA/lB,YAAAA,SAAYgmB,IAASC,IAAQC,IAAAA;AAAAA,cACrBC,IAAAA,KAAAA,MACAxpB,KAAKtO,KAAK6F;AA+Cd,cA7CA8xB,KAAUA,MAAkBjT,GAAPiT,IAAmB9L,WAAAA,IAClC,CAAC8L,EACDA,IAAAA,GAAAA,IAAmB93B,KACf83B,IAAAA,KACAA,KACI,CAACA,EAAAA,IACD,CAAC33B,KAAK4wB,WAAAA,CAAAA,EAAcva,QAAOlX,SAAAA,IAAKA;AAAAA,mBAAAA;UAAAA,EAO9C24B,GAAAA,KAAeH,GAAQliB,QAAO,SAACsiB,IAAM9wB,IAC7BA;AAAAA,YAAAA,MAA2B,YAAVA,OAAAA,OACjBA,KAASmI,GAAKikB,iBAAiBpsB,EAEnC;AAAA,gBAAI+J,KAAUhK,GAAcC,EAAAA;AAW5B,mBATIA,MAAU+J,MAAAA,CAAYA,GAAQuH,YAG9Bwf,GAAKzzB,KAAK,EACNiB,MAAM0B,IACN4P,KAAKzH,GAAKujB,UAAU3hB,EAAAA,GACpB9J,MAAMF,GAAcC,IAAQ,EAAC+wB,WAAAA,KAAY,CAAA,EAAA,CAAA,GAG1CD;UACX,IAAG,CAAA,CAAA,GAEHF,KAAsC,YAAA,OAAhBA,KAA2BA,KAAe73B,KAAKyuB,QAAQC,mBAE9D,YAAXpgB,GAAGO,SACHgpB,KAAe,GACf73B,KAAK2K,MAAMkG,IAAIvO,KAAKtC,IAKG,IAAA,KAAvB83B,GAAan4B,UAA0B,YAAX2O,GAAGO,QAC3BipB,GAAa,CAAA,EAAGvyB,KAAKI,UAAUC,SAAS0I,GAAGxI,WAAWiF,aACtD6sB,MAAAA,KAAAA,OAGHE,GAAan4B,OAGlB,QAAO2O,GAAGvB,MAAMC,gBAAgB8qB,IAAc,EAAC/oB,QAAO/O,KAAAA,CAAAA,EACjDgP,MAAK,WAAA;AAAA,gBACOipB,KAAT,SAAqBlyB,IAAAA;AACZA,cAAAA,GAAIR,KAAK+B,eAEdvB,GAAIR,KAAK+B,WAAW0R,YAAYjT,GAAIR,IAE/BqyB,GAAAA,KAgBItpB,GAAGhF,mBACJtJ,KAAKmS,QAAQ,UAAU,EAAEpM,KAAIA,GAAIR,MAAMgiB,OAAMxhB,GAAI8Q,IAfrD7W,CAAAA,KAAAA,KAAKqL,SAASiH,SACdtS,GAAAA,KAAKqL,SAASwB,SACd7M,GAAAA,KAAKoG,IAAIuE,MAAM/F,UAAAA,GAGX0J,GAAGhF,mBACHtJ,KAAKmxB,mBAAAA,GAMLnxB,KAAKmS,QAAQ,UAAU,EAAEpM,KAAIA,GAAIR,MAAMgiB,OAAMxhB,GAAI8Q,KAAK3P,MAAKnB,GAAImB,KAAAA,CAAAA;YAI3E;AAYK0wB,YAAAA,OACDxoB,GAAK4hB,oBAAoB8G,GAAaj3B,KAAIkF,SAAAA,IAAAA;AAAOA,qBAAAA,GAAIR;YAAAA,EAAAA,CAAAA,GACrD6J,GAAKqX,OAEU,GAAA,YAAXnY,GAAGO,QAAoBP,GAAGnF,aAC1BiG,GAAKoe,mBAAAA,IAAmB,IAK5BqK,MAAgBA,KAAe,MAA6B,KAAvBC,GAAan4B,SApBtD,SAAoBoG,IAAAA;AAChBA,cAAAA,GAAIR,KAAKkU,MAAMe,QAAQ0d,WAAW54B,OAAOkvB,iBAAiBzoB,GAAIR,IAAMiV,EAAAA,KAAAA,IAAS,MAC7E5T,SAASnF,KAAK02B,WACdpyB,GAAIR,KAAKI,UAAU6N,IAAIlF,GAAGxI,WAAWqG,OAGrC4E,GAAAA,WAAWknB,GAAWpqB,KAAK7N,IAAAA,GAAO63B,IAAc9xB,EACpD;YAAA,EAcczD,KAAI8M,IAAO0oB,GAAa,CAAA,CAAA,IAElCA,GAAa7vB,QAAQgwB,GAAWpqB,KAAIuB,EAE3CoC,CAAAA;UAAAA,EAAAA,EAAAA,OAAM4mB,SAAAA,IAAAA;UAAW,EAC1B;QAAA,GAEAC,mBAAAA,WAAAA;AACIr4B,eAAK8iB,WAAa7a,EAAAA,SAAQ1C,SAAAA,IAAQA;AAAAA,mBAAAA,GAAK6N,OAAAA;UAAAA,EAAAA;QAC3C,GAKA4d,qBAAAA,SAAqBjpB,IAAAA;AAAAA,cAAAA,KAAAA;AAAAA,WACjBA,KAAOlI,MAAMe,QAAQmH,EAAAA,IAAQA,KAAO,CAACA,EAAAA,GAEhCE,SAAQlC,SAAAA,IAAAA;AACT,gBAAIiL,KAAUhK,GAAcjB,EACxB8qB,GAAAA,KAASzhB,GAAKujB,UAAU3hB,EAAAA;AAIxB6f,YAAAA,KAAU,MACVzhB,GAAKrL,MAAMu0B,OAAOzH,IAAQ,CAAA;UAClC,EAAA;QACJ,GAEA5R,eAAAA,SAAeuM,IAAAA;AAAAA,cAAAA,KAAAA;AACXA,UAAAA,KAAOA,MAAQ,CAAA,GACfxrB,KAAK+D,QAAQ,CAAA,GAEa,SAAtB/D,KAAK6F,SAASgJ,OACd7O,KAAKoG,IAAIuE,MAAMmP,YAAY,KAE3B9Z,KAAKq4B,kBAAAA,GAETr4B,KAAKqL,SAASiH,SAAAA,GACdtS,KAAKqL,SAASwB,SAAAA,GAEV7M,KAAKmO,MAAM9C,SAASqN,WACpB3H,YAAW,WAAA;AACP3B,YAAAA,GAAKhJ,IAAIuE,MAAMC,MACnB;UAAA,EAAA,GAEsB,YAAtB5K,KAAK6F,SAASgJ,SACd7O,KAAK2K,MAAMkG,IAAIvO,KAAKtC,IACpBA,GAAAA,KAAK6F,SAASsD,aAAanJ,KAAKwtB,mBAAAA,IAGpC;AAAA,cAAM+K,KAAiBv4B,KAAKmO,MAAMohB,mBAAAA,SAA+B,WAAA;AAAA,aAC5DngB,GAAKjB,MAAMohB,oBAAoBngB,GAAK+C,QAAQ,UAAU,CAAA,CAAA;UAC3D;AAIAnS,eAAKymB,OAAO+E,IAAM+M,EAAAA;QAEtB,GAEAhW,YAAAA,WAAAA;AACIviB,eAAKmO,MAAMohB,mBAAAA;AAEX,cAc+BjO,IAAAC,IAd3BjT,KAAKtO,KAAK6F,UACVC,KAAawI,GAAGxI,YAChB0yB,KAAsB,SAAXlqB,GAAGO,OACRP,GAAGnE,QAAQ4kB,aACP/uB,KAAKoG,IAAIuE,MAAMqX,cACfhiB,KAAKoG,IAAI4Y,cAAcjb,MAAMxD,KAAAA,IACjCP,KAAK+D,MAAMpE,SAASK,KAAK2K,MAAM8G,IAAInP,KAAKtC,IAAAA,EAAML;AAExDK,WAAAA,KAAK8vB,YAAYhqB,GAAWmF,YAAYjL,KAAK+D,MAAMpE,UAAU2O,GAAG7F,OAAAA,GAChEzI,KAAK8vB,YAAYhqB,GAAWoF,WAAAA,CAAYlL,KAAK+D,MAAMpE,MAAAA,GACnDK,KAAK8vB,YAAYhqB,GAAWqF,OAAQqtB,CAAAA,EAAAA,GAGrB,YAAXlqB,GAAGO,SACH7O,KAAKwlB,sBAAgC,UAAVjE,KAAAvhB,KAAK+D,UAAL,WAAAwd,MAAA,UAAAD,KAAAC,GAAa,CAAb,MAAA,WAAAD,KAAA,SAAAA,GAAiBrN,SAAAA;QAEpD,GAEAwkB,uBAAAA,SAAuB33B,IAAAA;AACnB,cAAIukB,KAAWrlB,KAAKoG,IAAI4Y;AAEnBhf,eAAK6F,SAASsE,QAAQ4kB,eACvB1J,GAASthB,QAAQjD,IACjBukB,GAAS6B,cAAc7B,GAASthB;QAExC,GAOA0iB,QAAAA,SAAQ7mB,IAAMohB,IAAAA;AACVxI,uBAAaxY,KAAK04B,sBAAAA,GAClB14B,KAAK04B,yBAAyB3nB,WAM9B,WAAA;AACI/Q,iBAAK0sB,iBAAiBiM,IAAY,OAAA,GAE5B34B,KAAK6F,SAASiD,sBAAuBlJ,MAAM,CAAA,GAAI8mB,sBAAwB1mB,KAAKmO,MAAMohB,oBACpFvvB,KAAKwiB,mBAAAA;AAETxiB,iBAAKuiB,WAAAA,GAELvB,QAAAA,MAAAA,GACJ;UAAA,EAfsDnT,KAAK7N,ITn0DvC,GAAA,GAAA,GSo0DpBA,KAAKuN,OAAO+S,yBAAyBhe,KAAKtC,MTp0DtB,GSs0DpB;AAAA,cAAI24B,KAAa34B,KAAK44B,cAAAA;AACtB54B,eAAKy4B,sBAAsBE,EAAAA;QAY/B,GAEAC,eAAAA,WAAAA;AACI,cAAI70B,KAAQ/D,KAAK64B,cAAAA;AAEjB,iBAA6B,SAAtB74B,KAAK6F,SAASgJ,OACf7O,KAAK84B,qBAAqB/0B,EAAAA,IAC1BA,GAAMpE,SACFK,KAAK6F,SAASkzB,2BACV/4B,KAAK6F,SAASkzB,yBAAyBh1B,EACvCyoB,IAAAA,KAAKI,UAAU7oB,EACnB,IAAA;QACd,GAKA80B,eAAAA,SAAc/3B,IAAAA;AACV,iBAAOL,GAAqBK,MAAKd,KAAK+D,OAAO/D,KAAKstB,SAAAA;QACtD,GAEAwL,sBAAAA,WACI;AAAA,cAAI7pB,KAAS,IACT+pB,KAAOh5B,MACPsO,KAAKtO,KAAK6F,UACVkzB,KAA2BzqB,GAAGyqB,4BAA4BvM,KAAKI,WAC/DqM,KAAgB3qB,GAAG7E;AAkCvB,kBAhCA,SAASyvB,GAAgBC,IACrBA;AAAAA,YAAAA,GAAS5S,WAAWte,SAAQ,SAAC1C,IACzB;AAAA,kBAAqB,KAAjBA,GAAKzD,UAAe;AACpB,oBAAMkP,KAAUhK,GAAczB,EAAAA;AAM9B,oBAJoB,QAAhBA,GAAKmqB,YACLzgB,MAAU,SAGV+B,MAAW1L,GAAUhD,KAAK02B,IAAMzzB,EAAO,GAAA;AACvC,sBAAIyL,GAAQgnB,UACR;AAEA/oB,kBAAAA,MAAUgqB,GAAc,CAAA,IAAKF,GAA0Bh4B,GAAKiQ,IAASgoB,GAAK1L,SAAe2L,CAAAA,IAAAA,GAAc,CAAA;gBAC/G,MACS1zB,CAAAA,GAAK6L,aAAa,OAAY,KAAA,CAAC,KAAK,KAAK,GAAA,EAAK7M,SAASgB,GAAKmqB,OAAAA,IACjEzgB,MAAU1J,GAAKyc,cAEM,SAAhBzc,GAAKmqB,WAAoC,OAAhBnqB,GAAKmqB,YACnCzgB,MAAU,QAGViqB,GAAgB3zB,EAAAA;cAAAA,MAIpB0J,CAAAA,MAAU1J,GAAKyc;YACvB,EAAA;UACJ,GAEgBhiB,KAAKoG,IAAIuE,KAAAA,GAElBsE;QACX,EAIJyb,GAAAA,GAAOtoB,UAAUg3B,YAAY1O,GAAOtoB,UAAUuP,YAAAA;MAAAA,EAAAA;;;;;AEj5D9C,MAAM,oBAAoB;AAE1B,MAAM,sBAAsB;AAAA,IAC1B,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AAEA,MAAM,sBAAsB;AAE5B,MAAM,qBAAqB;AAE3B,MAAM,yBAAyB;AAE/B,MAAM,sBAAsB;AAE5B,MAAM,qBAAqB;AAE3B,MAAM,oBAAoB;AAE1B,MAAM,sBAAsB;AAE5B,MAAM,wBAAwB;AAE9B,MAAI,QAAQ;AAEZ,MAAM,eAAe,MAAM;AACzB,UAAM,UAAU,SAAS,cAAc,sBAAsB;AAC7D,WAAO,QAAQ,WAAW,QAAQ;AAAA,EACpC;AAEA,MAAM,WAAW,MAAM,SAAS,aAAa;AAE7C,MAAM,IAAI,QAAQ,UAAU,WAAW,QAAQ,UAAU,mBAAmB,QAAQ,UAAU,sBAAsB,QAAQ,UAAU,qBAAqB,QAAQ,UAAU,oBAAoB,QAAQ,UAAU;AAEnN,MAAM,UAAU,SAAS,SAAS,UAAU;AAC1C,QAAI,SAAS,SAAS;AACpB,aAAO,EAAE,KAAK,SAAS,SAAS,QAAQ,KAAK,CAAC,EAAE,KAAK,SAAS,SAAS,OAAO;AAAA,IAChF,OAAO;AACL,aAAO,EAAE,KAAK,SAAS,QAAQ;AAAA,IACjC;AAAA,EACF;AAEA,MAAM,UAAU;AAEhB,MAAM,UAAU,CAAC,SAAS,QAAQ,QAAQ,OAAO,IAAI,QAAQ,OAAO,EAAE,GAAG,IAAI;AAE7E,MAAM,UAAU,SAAS,SAAS,KAAK,OAAO;AAC5C,QAAI,CAAC,QAAQ,OAAO,GAAG;AACrB,cAAQ,OAAO,IAAI,CAAC;AAAA,IACtB;AACA,WAAO,QAAQ,OAAO,EAAE,GAAG,IAAI;AAAA,EACjC;AAEA,MAAM,IAAI,cAAY,MAAM,UAAU,MAAM,KAAK,SAAS,iBAAiB,QAAQ,CAAC;AAEpF,MAAM,oBAAoB,SAAS,SAAS;AAC1C,QAAI,aAAa;AACjB,OAAG;AACD,UAAI,QAAQ,mBAAmB;AAC7B,qBAAa;AACb;AAAA,MACF;AACA,gBAAU,QAAQ;AAAA,IACpB,SAAS;AACT,WAAO;AAAA,EACT;AAEA,MAAM,YAAY,MAAM;AACtB,UAAM,OAAO,SAAS,cAAc,uBAAuB;AAC3D,WAAO,QAAQ,KAAK;AAAA,EACtB;AAEA,MAAM,YAAY,MAAM;AACtB,UAAM,OAAO,SAAS,cAAc,uBAAuB;AAC3D,WAAO,QAAQ,KAAK;AAAA,EACtB;AAEA,MAAM,iBAAiB,SAAO;AAC5B,UAAM,QAAQ,UAAU;AACxB,QAAI,OAAO;AACT,aAAO,IAAI,iBAAiB,gBAAgB,KAAK;AAAA,IACnD;AAAA,EACF;AAEA,MAAM,oBAAoB,MAAM;AAC9B,UAAM,QAAQ,UAAU;AACxB,UAAM,QAAQ,UAAU;AACxB,QAAI,SAAS,OAAO;AAClB,aAAO,EAAE,sBAAsB,QAAQ,IAAI,EAAE,SAAS,WAAS,MAAM,QAAQ,MAAM;AAAA,IACrF;AAAA,EACF;AAEA,MAAM,gBAAgB;AAAA,IACpB,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAEA,MAAM,OAAO,aAAW;AACtB,cAAU,eAAe,OAAO;AAChC,QAAI,MAAM,UAAU,UAAU,WAAW;AACvC,YAAM,WAAW,gBAAgB,IAAI,YAAY,OAAO,IAAI,WAAW,IAAI,cAAc,IAAI,kBAAkB,cAAc,CAAC;AAC9H,UAAI,KAAK,MAAM,IAAI,SAAS,GAAG,MAAM,GAAG;AACtC,YAAI,OAAO,QAAQ,YAAY,YAAY;AACzC,kBAAQ,QAAQ,UAAU,IAAI,YAAY,GAAG;AAAA,QAC/C;AAAA,MACF,OAAO;AACL,YAAI,OAAO,QAAQ,UAAU,YAAY;AACvC,kBAAQ,MAAM,UAAU,IAAI,YAAY,GAAG;AAAA,QAC7C;AAAA,MACF;AACA,aAAO,OAAO,QAAQ,aAAa,aAAa,QAAQ,SAAS,KAAK,IAAI,UAAU,IAAI;AAAA,IAC1F,EAAE;AACF,QAAI,QAAQ,cAAc,CAAC,QAAQ,WAAW,KAAK,OAAO,GAAG;AAC3D,aAAO;AAAA,IACT;AACA,QAAI,IAAI,eAAe,eAAe,QAAQ;AAC5C,aAAO,IAAI,KAAK,QAAQ,IAAI;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,iBAAiB,SAAS,SAAS;AACrC,YAAQ,MAAM,QAAQ,OAAO,SAAS;AACtC,YAAQ,OAAO,QAAQ,KAAK,YAAY;AACxC,QAAI,QAAQ,SAAS,SAAS,QAAQ,MAAM;AAC1C,UAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,GAAG;AAChC,gBAAQ,OAAO,MAAM,QAAQ;AAAA,MAC/B,OAAO;AACL,gBAAQ,OAAO,MAAM,QAAQ;AAAA,MAC/B;AAAA,IACF;AACA,QAAI,EAAE,QAAQ,YAAY,gBAAgB;AACxC,cAAQ,WAAW;AAAA,IACrB;AACA,YAAQ,SAAS,cAAc,QAAQ,QAAQ;AAC/C,QAAI,QAAQ,aAAa,KAAK;AAC5B,cAAQ,UAAU;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,SAAS,SAAS,MAAM;AACtC,UAAM,MAAM,IAAI;AAChB,QAAI,KAAK,QAAQ,MAAM,QAAQ,KAAK,IAAI;AACxC,QAAI,iBAAiB,UAAU,QAAQ,MAAM;AAC7C,QAAI,OAAO,QAAQ,SAAS,UAAU;AACpC,UAAI,iBAAiB,gBAAgB,kDAAkD;AAAA,IACzF;AACA,QAAI,CAAC,QAAQ,aAAa;AACxB,UAAI,iBAAiB,oBAAoB,gBAAgB;AACzD,qBAAe,GAAG;AAAA,IACpB;AACA,QAAI,kBAAkB,CAAC,CAAC,QAAQ;AAChC,QAAI,qBAAqB,WAAW;AAClC,UAAI,IAAI,eAAe,eAAe,MAAM;AAC1C,eAAO,KAAK,GAAG;AAAA,MACjB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,kBAAkB,SAAS,UAAU,MAAM;AAC7C,QAAI,OAAO,aAAa,YAAY,OAAO,SAAS,UAAU;AAC5D,UAAI,KAAK,MAAM,UAAU,GAAG;AAC1B,YAAI;AACF,qBAAW,KAAK,MAAM,QAAQ;AAAA,QAChC,SAAS,OAAO;AAAA,QAAC;AAAA,MACnB,WAAW,KAAK,MAAM,yBAAyB,GAAG;AAChD,cAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,aAAa,SAAS,SAAS,CAAC;AACvC,eAAO,OAAO;AACd,iBAAS,KAAK,YAAY,MAAM,EAAE,WAAW,YAAY,MAAM;AAAA,MACjE,WAAW,KAAK,MAAM,oBAAoB,GAAG;AAC3C,cAAM,SAAS,IAAI;AACnB,eAAO,KAAK,QAAQ,OAAO,EAAE;AAC7B,YAAI;AACF,qBAAW,OAAO,gBAAgB,UAAU,IAAI;AAAA,QAClD,SAAS,QAAQ;AAAA,QAAC;AAAA,MACpB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAM,OAAO,aAAW,QAAQ;AAEhC,MAAM,gBAAgB,SAAS,KAAK;AAClC,UAAM,eAAe,SAAS,cAAc,GAAG;AAC/C,iBAAa,OAAO,SAAS;AAC7B,UAAM,YAAY,SAAS,cAAc,GAAG;AAC5C,QAAI;AACF,gBAAU,OAAO;AACjB,aAAO,GAAG,CAAC,UAAU,YAAY,UAAU,aAAa,QAAQ,CAAC,UAAU,QAAQ,aAAa,WAAW,OAAO,aAAa,SAAS,UAAU,WAAW,OAAO,UAAU;AAAA,IAChL,SAAS0nB,IAAG;AACV,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI;AAEJ,MAAI,EAAC,aAAaC,aAAW,IAAI;AAEjC,MAAI,OAAOA,iBAAgB,YAAY;AACrC,IAAAA,eAAc,SAASC,QAAO,QAAQ;AACpC,YAAM,MAAM,SAAS,YAAY,aAAa;AAC9C,UAAI,gBAAgBA,QAAO,OAAO,SAAS,OAAO,YAAY,OAAO,MAAM;AAC3E,aAAO;AAAA,IACT;AACA,IAAAD,aAAY,YAAY,OAAO,MAAM;AACrC,KAAC,EAAC,eAA8B,IAAIA,aAAY;AAChD,IAAAA,aAAY,UAAU,iBAAiB,WAAW;AAChD,YAAM,SAAS,eAAe,KAAK,IAAI;AACvC,UAAI,KAAK,cAAc,CAAC,KAAK,kBAAkB;AAC7C,eAAO,eAAe,MAAM,oBAAoB;AAAA,UAC9C,MAAM;AACJ,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,OAAO,CAAC,KAAKE,OAAM,SAAS;AAChC,UAAMD,SAAQ,IAAID,aAAYE,OAAM;AAAA,MAClC,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ;AAAA,IACV,CAAC;AACD,QAAI,cAAcD,MAAK;AACvB,WAAO,CAACA,OAAM;AAAA,EAChB;AAEA,MAAM,iBAAiB,CAAAF,OAAK;AAC1B,SAAKA,GAAE,QAAQ,uBAAuB;AACtC,IAAAA,GAAE,eAAe;AACjB,IAAAA,GAAE,gBAAgB;AAClB,IAAAA,GAAE,yBAAyB;AAAA,EAC7B;AAEA,MAAM,WAAW,CAAC,SAAS,UAAU,WAAW,YAAY,QAAQ,iBAAiB,YAAY,SAASA,IAAG;AAC3G,QAAI,EAAC,OAAc,IAAIA;AACvB,WAAO,CAAC,EAAE,kBAAkB,YAAY,CAAC,QAAQ,QAAQ,QAAQ,GAAG;AAClE,eAAS,OAAO;AAAA,IAClB;AACA,QAAI,kBAAkB,WAAW,QAAQ,KAAK,QAAQA,EAAC,MAAM,OAAO;AAClE,MAAAA,GAAE,eAAe;AACjB,MAAAA,GAAE,gBAAgB;AAAA,IACpB;AAAA,EACF,EAAE;AAEF,MAAM,UAAU,CAAAA,OAAK,MAAM,UAAU,MAAM,KAAKA,EAAC;AAEjD,MAAM,mBAAmB,CAAC,SAAS,oBAAoB;AACrD,QAAI,SAAS,CAAE,OAAQ;AACvB,QAAI,QAAQ,SAAS,MAAM,GAAG;AAC5B,eAAS,QAAQ,QAAQ,QAAQ;AAAA,IACnC;AACA,UAAM,SAAS,CAAC;AAChB,WAAO,SAAS,SAAS,OAAO;AAC9B,UAAI,CAAC,MAAM,QAAQ,MAAM,UAAU;AACjC;AAAA,MACF;AACA,UAAI,QAAQ,OAAO,sBAAsB,GAAG;AAC1C;AAAA,MACF;AACA,UAAI,QAAQ,OAAO,QAAQ,GAAG;AAC5B,gBAAQ,MAAM,OAAO,EAAE,SAAS,SAASI,SAAQ;AAC/C,cAAIA,QAAO,UAAU;AACnB,mBAAO,KAAK;AAAA,cACV,MAAM,MAAM;AAAA,cACZ,OAAOA,QAAO;AAAA,YAChB,CAAC;AAAA,UACH;AAAA,QACF,EAAE;AAAA,MACJ,WAAW,MAAM,WAAW,CAAE,SAAS,YAAY,QAAS,EAAE,QAAQ,MAAM,IAAI,MAAM,IAAI;AACxF,eAAO,KAAK;AAAA,UACV,MAAM,MAAM;AAAA,UACZ,OAAO,MAAM;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF,EAAE;AACF,QAAI,iBAAiB;AACnB,aAAO,KAAK,eAAe;AAAA,IAC7B;AACA,WAAO,OAAO,KAAK,SAAS,OAAO;AACjC,UAAI,MAAM,MAAM;AACd,eAAO,GAAG,mBAAmB,MAAM,IAAI,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,MAC7E,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,EAAE,EAAE,KAAK,GAAG;AAAA,EACd;AAEA,MAAM,eAAe,CAAC,MAAM,aAAa;AACvC,QAAI,QAAQ,MAAM,MAAM,GAAG;AACzB,aAAO,QAAQ,KAAK,QAAQ,EAAE,QAAQ,QAAM,QAAQ,IAAI,QAAQ,EAAE;AAAA,IACpE,OAAO;AACL,aAAO,QAAQ,KAAK,iBAAiB,QAAQ,CAAC;AAAA,IAChD;AAAA,EACF;AAEA,MAAM,yBAAyB,WAAS,SAASJ,IAAG;AAClD,QAAI,CAAC,YAAY,MAAM,KAAK,GAAG;AAC7B,qBAAeA,EAAC;AAAA,IAClB;AAAA,EACF;AAEA,MAAMK,WAAU,CAAC,SAAS,YAAY,OAAO,QAAQ,OAAO;AAE5D,MAAI,cAAc,SAAS,SAAS,OAAO;AACzC,QAAIC;AACJ,UAAM,UAAU,QAAQ,aAAa,cAAc;AACnD,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,QAAI,SAAS;AACb,QAAI,KAAK,SAAS,SAAS,GAAG;AAC5B,UAAI;AACF,iBAAS,MAAM,QAAQ,SAAS,OAAO;AAAA,MACzC,SAAS,OAAO;AAAA,MAAC;AACjB,MAAAA,YAAW,KAAK,SAAS,oBAAoB,CAAE,MAAO,CAAC;AAAA,IACzD;AACA,WAAO,UAAUA;AAAA,EACnB;AAEA,MAAM,wBAAwB,SAASN,IAAG;AACxC,UAAM,UAAU;AAChB,QAAI,QAAQ,UAAU;AACpB,qBAAeA,EAAC;AAAA,IAClB;AAAA,EACF;AAEA,MAAM,gBAAgB,CAAAA,OAAK;AACzB,QAAI;AACJ,QAAIA,cAAa,OAAO;AACtB,UAAI,cAAcA,EAAC,GAAG;AACpB;AAAA,MACF;AACA,gBAAUA,GAAE;AAAA,IACd,OAAO;AACL,gBAAUA;AAAA,IACZ;AACA,QAAI,kBAAkB,OAAO,GAAG;AAC9B;AAAA,IACF;AACA,QAAI,QAAQ,SAAS,mBAAmB,GAAG;AACzC,aAAO,kBAAkB,OAAO;AAAA,IAClC,WAAW,QAAQ,SAAS,qBAAqB,KAAK,QAAQ,SAAS,kBAAkB,GAAG;AAC1F,aAAO,kBAAkB,OAAO;AAAA,IAClC,WAAW,QAAQ,SAAS,kBAAkB,GAAG;AAC/C,aAAO,mBAAmB,OAAO;AAAA,IACnC;AAAA,EACF;AAEA,MAAM,iBAAiB,CAAAA,OAAK;AAC1B,UAAM,UAAUA,cAAa,QAAQA,GAAE,SAASA;AAChD,QAAI,kBAAkB,OAAO,GAAG;AAC9B;AAAA,IACF;AACA,QAAI,QAAQ,SAAS,mBAAmB,GAAG;AACzC,aAAO,mBAAmB,OAAO;AAAA,IACnC,WAAW,QAAQ,SAAS,qBAAqB,KAAK,QAAQ,SAAS,mBAAmB,GAAG;AAC3F,aAAO,mBAAmB,OAAO;AAAA,IACnC,WAAW,QAAQ,SAAS,kBAAkB,GAAG;AAC/C,aAAO,oBAAoB,OAAO;AAAA,IACpC;AAAA,EACF;AAEA,MAAI,qBAAqB,SAAS,SAAS;AACzC,QAAI,QAAQ,SAAS,cAAc,GAAG;AACpC;AAAA,IACF;AACA,UAAM,cAAc,QAAQ,aAAa,mBAAmB;AAC5D,QAAI,eAAe,MAAM;AACvB,cAAQ,SAAS,mBAAmB,QAAQ,SAAS;AACrD,cAAQ,YAAY;AAAA,IACtB;AACA,YAAQ,iBAAiB,SAAS,cAAc;AAChD,WAAO,QAAQ,SAAS,gBAAgB,IAAI;AAAA,EAC9C;AAEA,MAAI,oBAAoB,SAAS,SAAS;AACxC,UAAM,eAAe,QAAQ,SAAS,iBAAiB;AACvD,QAAI,gBAAgB,MAAM;AACxB,cAAQ,YAAY;AACpB,cAAQ,SAAS,mBAAmB,IAAI;AAAA,IAC1C;AACA,YAAQ,oBAAoB,SAAS,cAAc;AACnD,WAAO,QAAQ,SAAS,gBAAgB,IAAI;AAAA,EAC9C;AAEA,MAAI,sBAAsB,UAAQ,aAAa,MAAM,mBAAmB,EAAE,QAAQ,kBAAkB;AAEpG,MAAI,qBAAqB,SAAS,SAAS;AACzC,QAAI,QAAQ,SAAS,cAAc,GAAG;AACpC;AAAA,IACF;AACA,UAAM,cAAc,QAAQ,aAAa,mBAAmB;AAC5D,QAAI,eAAe,MAAM;AACvB,UAAI,QAAQ,SAAS,QAAQ,GAAG;AAC9B,gBAAQ,SAAS,mBAAmB,QAAQ,SAAS;AACrD,gBAAQ,YAAY;AAAA,MACtB,OAAO;AACL,gBAAQ,SAAS,mBAAmB,QAAQ,KAAK;AACjD,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IACF;AACA,YAAQ,WAAW;AACnB,WAAO,QAAQ,SAAS,gBAAgB,IAAI;AAAA,EAC9C;AAEA,MAAI,qBAAqB,UAAQ,aAAa,MAAM,kBAAkB,EAAE,SAAS,aAAW,kBAAkB,OAAO,EAAE;AAEvH,MAAI,oBAAoB,SAAS,SAAS;AACxC,UAAM,eAAe,QAAQ,SAAS,iBAAiB;AACvD,QAAI,gBAAgB,MAAM;AACxB,UAAI,QAAQ,SAAS,QAAQ,GAAG;AAC9B,gBAAQ,YAAY;AAAA,MACtB,OAAO;AACL,gBAAQ,QAAQ;AAAA,MAClB;AACA,cAAQ,SAAS,mBAAmB,IAAI;AAAA,IAC1C;AACA,YAAQ,WAAW;AACnB,WAAO,QAAQ,SAAS,gBAAgB,IAAI;AAAA,EAC9C;AAEA,MAAI,gBAAgB,SAASE,QAAO;AAClC,UAAM,MAAMA,OAAM,SAASA,OAAM,OAAO,CAAC,IAAI;AAC7C,WAAO,OAAO,IAAI,kBAAkB,gBAAgB;AAAA,EACtD;AAEA,MAAM,wBAAwB,WAAS,SAASF,IAAG;AACjD,UAAM,OAAO;AACb,UAAM,SAAS,KAAK,aAAa,aAAa;AAC9C,QAAI,CAAC,QAAQ;AACX;AAAA,IACF;AACA,QAAI,kBAAkB,IAAI,GAAG;AAC3B;AAAA,IACF;AACA,UAAMO,QAAO,MAAM,KAAK,IAAI;AAC5B,UAAM,cAAc,UAAU;AAC9B,UAAM,cAAc,UAAU;AAC9B,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,QAAI,cAAc,gCAAgC,MAAM;AACxD,QAAI,eAAe,eAAe,CAAC,cAAcA,KAAI,GAAG;AACtD,qBAAe,gBAAgB,WAAW,YAAY,WAAW;AAAA,IACnE;AACA,mBAAe;AACf,SAAK,SAAS;AACd,SAAK,SAASA;AACd,SAAK,SAAS,KAAK;AACnB,SAAK,YAAY;AACjB,SAAK,MAAM,UAAU;AACrB,aAAS,KAAK,YAAY,IAAI;AAC9B,SAAK,cAAc,iBAAiB,EAAE,MAAM;AAC5C,mBAAeP,EAAC;AAAA,EAClB;AAEA,MAAM,WAAW,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ,aAAa,aAAa;AAChD,WAAO,SAAS,QAAQ,UAAU;AAAA,EACpC;AAEA,MAAM,wBAAwB,WAAS,SAASA,IAAG;AACjD,QAAI,MAAM,QAAQ;AAClB,UAAM,UAAU;AAChB,QAAI,CAAC,SAAS,OAAO,GAAG;AACtB,aAAO;AAAA,IACT;AACA,QAAI,CAAC,KAAK,SAAS,aAAa,GAAG;AACjC,WAAK,SAAS,cAAc;AAC5B,aAAO;AAAA,IACT;AACA,QAAI,kBAAkB,OAAO,GAAG;AAC9B,WAAK,SAAS,cAAc;AAC5B,aAAO;AAAA,IACT;AACA,UAAM,kBAAkB,QAAQ,aAAa,uBAAuB;AACpE,UAAM,WAAW,QAAQ,aAAa,WAAW,KAAK;AACtD,QAAI,QAAQ,SAAS,kBAAkB,GAAG;AACxC,YAAM,SAAS,QAAQ,SAAS,mBAAmB;AACnD,eAAS,QAAQ,SAAS,8BAA8B,KAAK,QAAQ,aAAa,QAAQ,KAAK;AAC/F,YAAM,QAAQ,SAAS,8BAA8B,KAAK,QAAQ,aAAa,QAAQ,KAAK,SAAS;AACrG,UAAI,OAAO,YAAY,MAAM,OAAO;AAClC,cAAM,IAAI,QAAQ,SAAS,EAAE;AAAA,MAC/B;AACA,UAAI,QAAQ,YAAY,uBAAuB;AAC7C,eAAO,IAAI,SAAS,OAAO;AAC3B,YAAI,UAAU,MAAM;AAClB,eAAK,OAAO,OAAO,MAAM,OAAO,KAAK;AAAA,QACvC;AAAA,MACF,OAAO;AACL,eAAO,iBAAiB,SAAS,MAAM;AAAA,MACzC;AACA,cAAQ,SAAS,qBAAqB,IAAI;AAC1C,cAAQ,SAAS,gCAAgC,IAAI;AACrD,cAAQ,SAAS,gCAAgC,IAAI;AAAA,IACvD,WAAW,QAAQ,SAAS,mBAAmB,KAAK,QAAQ,SAAS,mBAAmB,GAAG;AACzF,eAAS,QAAQ,aAAa,aAAa;AAC3C,YAAM,QAAQ,aAAa,UAAU;AACrC,aAAO,iBAAiB,SAAS,QAAQ,aAAa,aAAa,CAAC;AAAA,IACtE,OAAO;AACL,eAAS,QAAQ,aAAa,aAAa;AAC3C,YAAM,MAAM,KAAK,OAAO;AACxB,aAAO,QAAQ,aAAa,aAAa;AAAA,IAC3C;AACA,SAAK;AAAA,MACH,MAAM,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,KAAK,SAAS;AACvB,YAAI,KAAK,SAAS,mBAAmB,CAAE,KAAK,OAAQ,CAAC,GAAG;AACtD,iBAAO,KAAK,SAAS,aAAa,CAAE,GAAI,CAAC;AAAA,QAC3C,OAAO;AACL,eAAK,SAAS,cAAc;AAC5B,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,WAAW,MAAM;AACf,eAAO,KAAK,SAAS,gBAAgB,IAAI;AAAA,MAC3C;AAAA,MACA,SAAS,MAAM;AACb,eAAO,KAAK,SAAS,cAAc,IAAI;AAAA,MACzC;AAAA,MACA,YAAY,MAAM;AAChB,eAAO,KAAK,SAAS,iBAAiB,IAAI;AAAA,MAC5C;AAAA,MACA,aAAa,cAAc,GAAG;AAAA,MAC9B,iBAAiB,mBAAmB,QAAQ,oBAAoB;AAAA,IAClE,CAAC;AACD,mBAAeA,EAAC;AAAA,EAClB;AAEA,MAAM,wBAAwB,SAASA,IAAG;AACxC,UAAM,SAAS;AACf,UAAM,EAAC,KAAU,IAAI;AACrB,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AACA,QAAI,OAAO,MAAM;AACf,cAAQ,MAAM,qBAAqB;AAAA,QACjC,MAAM,OAAO;AAAA,QACb,OAAO,OAAO;AAAA,MAChB,CAAC;AAAA,IACH;AACA,YAAQ,MAAM,6BAA6B,OAAO,cAAc;AAChE,YAAQ,MAAM,gCAAgC,OAAO,aAAa,YAAY,CAAC;AAC/E,WAAO,QAAQ,MAAM,gCAAgC,OAAO,aAAa,YAAY,CAAC;AAAA,EACxF;AAEA,MAAM,4BAA4B,SAASA,IAAG;AAC5C,UAAM,OAAO;AACb,UAAM,UAAU,KAAK,aAAa,aAAa,KAAK,OAAO,YAAY;AACvE,UAAM,OAAO,KAAK,aAAa,aAAa;AAC5C,UAAM,YAAYA,GAAE,WAAWA,GAAE;AACjC,UAAM,yBAAyB,aAAa,WAAW,SAAS,CAAC;AACjE,UAAM,uBAAuBA,GAAE,UAAU,QAAQA,GAAE,WAAW;AAC9D,QAAI,wBAAwB,wBAAwB;AAClD,MAAAA,GAAE,yBAAyB;AAAA,IAC7B;AAAA,EACF;AAEA,MAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAASK;AAAA,IACT;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,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAM,gBAAgB,uBAAuB,KAAK;AAElD,QAAM,gBAAgB;AAEtB,MAAM,eAAe,sBAAsB,KAAK;AAEhD,QAAM,eAAe;AAErB,MAAM,eAAe,sBAAsB,KAAK;AAEhD,QAAM,eAAe;AAErB,MAAM,QAAQ,WAAW;AACvB,QAAI,OAAO,eAAe;AACxB,YAAM,IAAI,MAAM,oCAAoC;AAAA,IACtD;AACA,WAAO,iBAAiB,aAAa,WAAW;AAC9C,QAAE,kBAAkB,EAAE,SAAS,SAAS,IAAI;AAC1C,YAAI,QAAQ,IAAI,cAAc,GAAG;AAC/B,wBAAc,EAAE;AAAA,QAClB;AAAA,MACF,EAAE;AACF,QAAE,mBAAmB,EAAE,SAAS,SAAS,IAAI;AAC3C,YAAI,QAAQ,IAAI,cAAc,GAAG;AAC/B,wBAAc,EAAE;AAAA,QAClB;AAAA,MACF,EAAE;AAAA,IACJ,EAAE;AACF,aAAS,UAAU,qBAAqB,iBAAiB,aAAa;AACtE,aAAS,UAAU,qBAAqB,gBAAgB,aAAa;AACrE,aAAS,UAAU,uBAAuB,iBAAiB,aAAa;AACxE,aAAS,UAAU,uBAAuB,gBAAgB,aAAa;AACvE,aAAS,UAAU,mBAAmB,SAAS,yBAAyB;AACxE,aAAS,UAAU,mBAAmB,SAAS,qBAAqB;AACpE,aAAS,UAAU,mBAAmB,SAAS,aAAa;AAC5D,aAAS,UAAU,mBAAmB,SAAS,cAAc;AAC7D,aAAS,UAAU,mBAAmB,SAAS,YAAY;AAC3D,aAAS,UAAU,mBAAmB,SAAS,YAAY;AAC3D,aAAS,UAAU,qBAAqB,SAAS,yBAAyB;AAC1E,aAAS,UAAU,qBAAqB,SAAS,qBAAqB;AACtE,aAAS,UAAU,qBAAqB,SAAS,aAAa;AAC9D,aAAS,UAAU,qBAAqB,SAAS,cAAc;AAC/D,aAAS,UAAU,qBAAqB,SAAS,YAAY;AAC7D,aAAS,UAAU,qBAAqB,UAAU,qBAAqB;AACvE,aAAS,UAAU,qBAAqB,UAAU,aAAa;AAC/D,aAAS,UAAU,qBAAqB,UAAU,YAAY;AAC9D,aAAS,UAAU,oBAAoB,UAAU,qBAAqB;AACtE,aAAS,UAAU,oBAAoB,UAAU,aAAa;AAC9D,aAAS,UAAU,oBAAoB,UAAU,YAAY;AAC7D,aAAS,UAAU,oBAAoB,WAAW,CAAAL,OAAK,YAAY,MAAM,eAAeA,EAAC,IAAI,EAAE,EAAE;AACjG,aAAS,UAAU,oBAAoB,aAAa,cAAc;AAClE,aAAS,UAAU,oBAAoB,iBAAiB,aAAa;AACrE,aAAS,UAAU,wBAAwB,SAAS,yBAAyB;AAC7E,aAAS,UAAU,wBAAwB,SAAS,qBAAqB;AACzE,aAAS,UAAU,wBAAwB,SAAS,aAAa;AACjE,aAAS,UAAU,wBAAwB,SAAS,qBAAqB;AACzE,aAAS,iBAAiB,oBAAoB,iBAAiB;AAC/D,aAAS,iBAAiB,oBAAoB,YAAY;AAC1D,WAAO,OAAO,gBAAgB;AAAA,EAChC;AAEA,QAAM,QAAQ;AAEd,MAAI,OAAO,WAAW,eAAe,UAAU,OAAO,MAAM;AAC1D,QAAI,OAAO,OAAO;AAChB,YAAM,IAAI,MAAM,gEAAgE;AAAA,IAClF;AACA,WAAO,QAAQ;AACf,WAAO,eAAe,SAAS,SAAS,iBAAiB,KAAK;AAC5D,UAAI,CAAC,QAAQ,aAAa;AACxB,eAAO,eAAe,GAAG;AAAA,MAC3B;AAAA,IACF,EAAE;AAAA,EACJ;;;AC3qBA;AAAA;AAAA;AAAA;AAAA,wBAAAQ;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAAC;AAAA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA,IAAA;AAAA;AAIA,MAAM,oBAAoB;AAAA,IACxB,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAkBA,MAAM,eAAN,MAAM,sBAAqB,YAAY;AAAA,IACrC,OAAO,sBAAsB;AAAA,IAE7B,SAAS,QAAQ,QAAQ;AAAA,IAEzB,WAAW,qBAAqB;AAC9B,aAAO,CAAC,YAAY,WAAW,KAAK;AAAA,IACtC;AAAA,IAEA,cAAc;AACZ,YAAM;AACN,WAAK,WAAW,IAAI,cAAa,oBAAoB,IAAI;AAAA,IAC3D;AAAA,IAEA,oBAAoB;AAClB,WAAK,SAAS,QAAQ;AAAA,IACxB;AAAA,IAEA,uBAAuB;AACrB,WAAK,SAAS,WAAW;AAAA,IAC3B;AAAA,IAEA,SAAS;AACP,aAAO,KAAK,SAAS,kBAAkB;AAAA,IACzC;AAAA,IAEA,yBAAyBC,OAAM;AAC7B,UAAIA,SAAQ,WAAW;AACrB,aAAK,SAAS,oBAAoB;AAAA,MACpC,WAAWA,SAAQ,OAAO;AACxB,aAAK,SAAS,iBAAiB;AAAA,MACjC,WAAWA,SAAQ,YAAY;AAC7B,aAAK,SAAS,gBAAgB;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,MAAM;AACR,aAAO,KAAK,aAAa,KAAK;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,IAAI,OAAO;AACb,UAAI,OAAO;AACT,aAAK,aAAa,OAAO,KAAK;AAAA,MAChC,OAAO;AACL,aAAK,gBAAgB,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,UAAU;AACZ,aAAO,KAAK,aAAa,SAAS;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,QAAQ,OAAO;AACjB,UAAI,OAAO;AACT,aAAK,aAAa,WAAW,KAAK;AAAA,MACpC,OAAO;AACL,aAAK,gBAAgB,SAAS;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,IAAI,wBAAwB;AAC1B,aAAO,KAAK,OAAO,KAAK,YAAY;AAAA,IACtC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,UAAU;AACZ,aAAO,4BAA4B,KAAK,aAAa,SAAS,KAAK,EAAE;AAAA,IACvE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,QAAQ,OAAO;AACjB,UAAI,OAAO;AACT,aAAK,aAAa,WAAW,KAAK;AAAA,MACpC,OAAO;AACL,aAAK,gBAAgB,SAAS;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,IAAI,WAAW;AACb,aAAO,KAAK,aAAa,UAAU;AAAA,IACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,IAAI,SAAS,OAAO;AAClB,UAAI,OAAO;AACT,aAAK,aAAa,YAAY,EAAE;AAAA,MAClC,OAAO;AACL,aAAK,gBAAgB,UAAU;AAAA,MACjC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,IAAI,aAAa;AACf,aAAO,KAAK,aAAa,YAAY;AAAA,IACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,IAAI,WAAW,OAAO;AACpB,UAAI,OAAO;AACT,aAAK,aAAa,cAAc,EAAE;AAAA,MACpC,OAAO;AACL,aAAK,gBAAgB,YAAY;AAAA,MACnC;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,WAAW;AACb,aAAO,CAAC,KAAK,SAAS;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,IAAI,WAAW;AACb,aAAO,KAAK,kBAAkB,YAAY,CAAC,KAAK;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,IAAI,YAAY;AACd,aAAO,KAAK,eAAe,iBAAiB,aAAa,oBAAoB;AAAA,IAC/E;AAAA,EACF;AAEA,WAAS,4BAA4B,OAAO;AAC1C,YAAQ,MAAM,YAAY,GAAG;AAAA,MAC3B,KAAK;AACH,eAAO,kBAAkB;AAAA,MAC3B;AACE,eAAO,kBAAkB;AAAA,IAC7B;AAAA,EACF;AAEA,MAAM,QAAQ;AAAA,IACZ,SAAS;AAAA,IACT,kBAAkB;AAAA,IAClB,uBAAuB,oBAAI;AAAA,MACzB;AAAA,QACE;AAAA,QAAO;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAC/E;AAAA,QAAS;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAO;AAAA,QAAS;AAAA,QAAS;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAS;AAAA,QAC3E;AAAA,QAAO;AAAA,QAAS;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAS;AAAA,QAAQ;AAAA,QACzE;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAS;AAAA,QAAQ;AAAA,QACjE;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAS;AAAA,QAAQ;AAAA,QAAQ;AAAA,QAAS;AAAA,QAAS;AAAA,QAAQ;AAAA,QAC3E;AAAA,QAAQ;AAAA,QAAS;AAAA,QAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAEA,WAAS,sBAAsB,SAAS;AACtC,QAAI,QAAQ,aAAa,iBAAiB,KAAK,SAAS;AACtD,aAAO;AAAA,IACT,OAAO;AACL,YAAM,uBAAuB,SAAS,cAAc,QAAQ;AAC5D,YAAMC,YAAW,YAAY;AAC7B,UAAIA,WAAU;AACZ,6BAAqB,QAAQA;AAAA,MAC/B;AACA,2BAAqB,cAAc,QAAQ;AAC3C,2BAAqB,QAAQ;AAC7B,4BAAsB,sBAAsB,OAAO;AACnD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,sBAAsB,oBAAoB,eAAe;AAChE,eAAW,EAAE,MAAAD,OAAM,MAAM,KAAK,cAAc,YAAY;AACtD,yBAAmB,aAAaA,OAAM,KAAK;AAAA,IAC7C;AAAA,EACF;AAEA,WAAS,uBAAuB,MAAM;AACpC,UAAM,WAAW,SAAS,cAAc,UAAU;AAClD,aAAS,YAAY;AACrB,WAAO,SAAS;AAAA,EAClB;AAEA,WAAS,SAAS,WAAW,EAAE,QAAQ,YAAY,OAAO,IAAI,CAAC,GAAG;AAChE,UAAME,SAAQ,IAAI,YAAY,WAAW;AAAA,MACvC;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,MACV;AAAA,IACF,CAAC;AAED,QAAI,UAAU,OAAO,aAAa;AAChC,aAAO,cAAcA,MAAK;AAAA,IAC5B,OAAO;AACL,eAAS,gBAAgB,cAAcA,MAAK;AAAA,IAC9C;AAEA,WAAOA;AAAA,EACT;AAEA,WAAS,YAAYA,QAAO;AAC1B,IAAAA,OAAM,eAAe;AACrB,IAAAA,OAAM,yBAAyB;AAAA,EACjC;AAEA,WAAS,cAAc;AACrB,QAAI,SAAS,oBAAoB,UAAU;AACzC,aAAO,kBAAkB;AAAA,IAC3B,OAAO;AACL,aAAO,mBAAmB;AAAA,IAC5B;AAAA,EACF;AAEA,WAAS,qBAAqB;AAC5B,WAAO,IAAI,QAAQ,CAACC,aAAY,sBAAsB,MAAMA,SAAQ,CAAC,CAAC;AAAA,EACxE;AAEA,WAAS,oBAAoB;AAC3B,WAAO,IAAI,QAAQ,CAACA,aAAY,WAAW,MAAMA,SAAQ,GAAG,CAAC,CAAC;AAAA,EAChE;AAEA,WAAS,kBAAkB,OAAO,IAAI;AACpC,WAAO,IAAI,UAAU,EAAE,gBAAgB,MAAM,WAAW;AAAA,EAC1D;AAEA,WAAS,SAAS,YAAY,QAAQ;AACpC,UAAM,QAAQ,YAAY,SAAS,MAAM,EAAE,QAAQ,OAAO,EAAE,EAAE,MAAM,IAAI;AACxE,UAAMC,SAAQ,MAAM,CAAC,EAAE,MAAM,MAAM;AACnC,UAAM,SAASA,SAAQA,OAAM,CAAC,EAAE,SAAS;AACzC,WAAO,MAAM,IAAI,CAAC,SAAS,KAAK,MAAM,MAAM,CAAC,EAAE,KAAK,IAAI;AAAA,EAC1D;AAEA,WAAS,YAAY,SAAS,QAAQ;AACpC,WAAO,QAAQ,OAAO,CAAC,QAAQ,QAAQC,OAAM;AAC3C,YAAM,QAAQ,OAAOA,EAAC,KAAK,SAAY,KAAK,OAAOA,EAAC;AACpD,aAAO,SAAS,SAAS;AAAA,IAC3B,GAAG,EAAE;AAAA,EACP;AAEA,WAAS,OAAO;AACd,WAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,EAC7B,IAAI,CAACC,KAAGD,OAAM;AACb,UAAIA,MAAK,KAAKA,MAAK,MAAMA,MAAK,MAAMA,MAAK,IAAI;AAC3C,eAAO;AAAA,MACT,WAAWA,MAAK,IAAI;AAClB,eAAO;AAAA,MACT,WAAWA,MAAK,IAAI;AAClB,gBAAQ,KAAK,MAAM,KAAK,OAAO,IAAI,CAAC,IAAI,GAAG,SAAS,EAAE;AAAA,MACxD,OAAO;AACL,eAAO,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE;AAAA,MACnD;AAAA,IACF,CAAC,EACA,KAAK,EAAE;AAAA,EACZ;AAEA,WAAS,aAAa,kBAAkBE,WAAU;AAChD,eAAW,SAASA,UAAS,IAAI,CAAC,YAAY,SAAS,aAAa,aAAa,CAAC,GAAG;AACnF,UAAI,OAAO,SAAS,SAAU,QAAO;AAAA,IACvC;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,aAAa,kBAAkBA,WAAU;AAChD,WAAOA,UAAS,KAAK,CAAC,YAAY,WAAW,QAAQ,aAAa,aAAa,CAAC;AAAA,EAClF;AAEA,WAAS,cAAcA,WAAU;AAC/B,eAAW,WAAWA,WAAU;AAC9B,UAAI,QAAQ,aAAa,eAAe;AACtC,gBAAQ,aAAa,QAAQ,EAAE;AAAA,MACjC;AACA,cAAQ,aAAa,aAAa,MAAM;AAAA,IAC1C;AAAA,EACF;AAEA,WAAS,kBAAkBA,WAAU;AACnC,eAAW,WAAWA,WAAU;AAC9B,UAAI,QAAQ,aAAa,eAAe;AACtC,gBAAQ,gBAAgB,MAAM;AAAA,MAChC;AAEA,cAAQ,gBAAgB,WAAW;AAAA,IACrC;AAAA,EACF;AAEA,WAAS,YAAY,SAAS,wBAAwB,KAAM;AAC1D,WAAO,IAAI,QAAQ,CAACJ,aAAY;AAC9B,YAAM,aAAa,MAAM;AACvB,gBAAQ,oBAAoB,SAAS,UAAU;AAC/C,gBAAQ,oBAAoB,QAAQ,UAAU;AAC9C,QAAAA,SAAQ;AAAA,MACV;AAEA,cAAQ,iBAAiB,QAAQ,YAAY,EAAE,MAAM,KAAK,CAAC;AAC3D,cAAQ,iBAAiB,SAAS,YAAY,EAAE,MAAM,KAAK,CAAC;AAC5D,iBAAWA,UAAS,qBAAqB;AAAA,IAC3C,CAAC;AAAA,EACH;AAEA,WAAS,0BAA0B,QAAQ;AACzC,YAAQ,QAAQ;AAAA,MACd,KAAK;AACH,eAAO,QAAQ;AAAA,MACjB,KAAK;AAAA,MACL,KAAK;AACH,eAAO,QAAQ;AAAA,IACnB;AAAA,EACF;AAEA,WAAS,SAAS,QAAQ;AACxB,WAAO,UAAU,aAAa,UAAU,aAAa,UAAU;AAAA,EACjE;AAEA,WAAS,kBAAkBI,WAAU;AACnC,UAAM,SAAS,aAAa,qBAAqB,GAAGA,SAAQ;AAE5D,WAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EACrC;AAEA,WAAS,eAAeP,OAAM;AAC5B,WAAO,SAAS,cAAc,cAAcA,KAAI,IAAI;AAAA,EACtD;AAEA,WAAS,eAAeA,OAAM;AAC5B,UAAM,UAAU,eAAeA,KAAI;AACnC,WAAO,WAAW,QAAQ;AAAA,EAC5B;AAEA,WAAS,cAAc;AACrB,UAAM,UAAU,eAAe,WAAW;AAE1C,QAAI,SAAS;AACX,YAAM,EAAE,OAAAQ,QAAO,QAAQ,IAAI;AAC3B,aAAOA,UAAS,KAAK,UAAUA;AAAA,IACjC;AAAA,EACF;AAEA,WAAS,eAAeR,OAAM,SAAS;AACrC,QAAI,UAAU,eAAeA,KAAI;AAEjC,QAAI,CAAC,SAAS;AACZ,gBAAU,SAAS,cAAc,MAAM;AACvC,cAAQ,aAAa,QAAQA,KAAI;AAEjC,eAAS,KAAK,YAAY,OAAO;AAAA,IACnC;AAEA,YAAQ,aAAa,WAAW,OAAO;AAEvC,WAAO;AAAA,EACT;AAEA,WAAS,uBAAuB,SAAS,UAAU;AACjD,QAAI,mBAAmB,SAAS;AAC9B,aACE,QAAQ,QAAQ,QAAQ,KAAK,uBAAuB,QAAQ,gBAAgB,QAAQ,YAAY,GAAG,MAAM,QAAQ;AAAA,IAErH;AAAA,EACF;AAEA,WAAS,mBAAmB,SAAS;AACnC,UAAM,wBAAwB;AAE9B,WAAO,CAAC,CAAC,WAAW,QAAQ,QAAQ,qBAAqB,KAAK,QAAQ,OAAO,QAAQ,SAAS;AAAA,EAChG;AAEA,WAAS,0BAA0B,2BAA2B;AAC5D,WAAO,MAAM,KAAK,0BAA0B,iBAAiB,aAAa,CAAC,EAAE,KAAK,kBAAkB;AAAA,EACtG;AAEA,iBAAe,OAAOS,WAAU,QAAQ;AACtC,UAAM,SAAS,OAAO;AAEtB,IAAAA,UAAS;AAET,UAAM,mBAAmB;AAEzB,UAAM,QAAQ,OAAO;AAErB,WAAO,CAAC,QAAQ,KAAK;AAAA,EACvB;AAEA,WAAS,oBAAoBT,OAAM;AACjC,QAAIA,UAAS,UAAU;AACrB,aAAO;AAAA,IACT,WAAWA,OAAM;AACf,iBAAW,WAAW,SAAS,kBAAkBA,KAAI,GAAG;AACtD,YAAI,mBAAmB,kBAAmB,QAAO;AAAA,MACnD;AAEA,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,wBAAwB,QAAQ;AACvC,UAAM,OAAO,uBAAuB,QAAQ,0BAA0B;AAEtE,QAAI,CAAC,KAAM,QAAO;AAClB,QAAI,KAAK,KAAK,WAAW,GAAG,EAAG,QAAO;AACtC,QAAI,KAAK,aAAa,UAAU,EAAG,QAAO;AAE1C,UAAM,aAAa,KAAK,aAAa,QAAQ;AAC7C,QAAI,cAAc,eAAe,QAAS,QAAO;AAEjD,WAAO;AAAA,EACT;AAEA,WAAS,SAAS,IAAI,OAAO;AAC3B,QAAI,YAAY;AAEhB,WAAO,IAAI,SAAS;AAClB,YAAMS,YAAW,MAAM,GAAG,MAAM,MAAM,IAAI;AAC1C,mBAAa,SAAS;AACtB,kBAAY,WAAWA,WAAU,KAAK;AAAA,IACxC;AAAA,EACF;AAEA,MAAM,YAAY;AAAA,IAChB,iBAAiB;AAAA,MACf,cAAc,CAAAC,eAAa;AACzB,QAAAA,WAAU,aAAa,iBAAiB,MAAM;AAC9C,QAAAA,WAAU,iBAAiB,SAAS,WAAW;AAAA,MACjD;AAAA,MAEA,aAAa,CAAAA,eAAa;AACxB,QAAAA,WAAU,gBAAgB,eAAe;AACzC,QAAAA,WAAU,oBAAoB,SAAS,WAAW;AAAA,MACpD;AAAA,IACF;AAAA,IAEA,YAAY;AAAA,MACV,cAAc,CAAAA,eAAaA,WAAU,WAAW;AAAA,MAChD,aAAa,CAAAA,eAAaA,WAAU,WAAW;AAAA,IACjD;AAAA,EACF;AAEA,MAAM,SAAN,MAAa;AAAA,IACX,aAAa;AAAA,IAEb,YAAYC,SAAQ;AAClB,aAAO,OAAO,MAAMA,OAAM;AAAA,IAC5B;AAAA,IAEA,IAAI,YAAY;AACd,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,IAAI,UAAU,OAAO;AACnB,WAAK,aAAa,UAAU,KAAK,KAAK;AAAA,IACxC;AAAA,EACF;AAEA,MAAM,QAAQ,IAAI,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,WAAW;AAAA,EACb,CAAC;AAED,MAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,EACF;AAEA,WAAS,UAAU,WAAW;AAC5B,WAAO,IAAI,IAAI,UAAU,SAAS,GAAG,SAAS,OAAO;AAAA,EACvD;AAEA,WAAS,UAAU,KAAK;AACtB,QAAI;AACJ,QAAI,IAAI,MAAM;AACZ,aAAO,IAAI,KAAK,MAAM,CAAC;AAAA,IAEzB,WAAY,cAAc,IAAI,KAAK,MAAM,QAAQ,GAAI;AACnD,aAAO,YAAY,CAAC;AAAA,IACtB;AAAA,EACF;AAEA,WAAS,YAAY,MAAMD,YAAW;AACpC,UAAM,SAASA,YAAW,aAAa,YAAY,KAAK,KAAK,aAAa,QAAQ,KAAK,KAAK;AAE5F,WAAO,UAAU,MAAM;AAAA,EACzB;AAEA,WAAS,aAAa,KAAK;AACzB,YAAQ,qBAAqB,GAAG,EAAE,MAAM,UAAU,KAAK,CAAC,GAAG,CAAC,KAAK;AAAA,EACnE;AAEA,WAAS,aAAa,SAAS,KAAK;AAClC,UAAM,SAAS,iBAAiB,IAAI,SAAS,IAAI,QAAQ;AACzD,WAAO,iBAAiB,QAAQ,IAAI,MAAM,UAAU,QAAQ,KAAK,WAAW,MAAM;AAAA,EACpF;AAEA,WAAS,oBAAoBE,WAAU,cAAc;AACnD,WAAO,aAAaA,WAAU,YAAY,KAAK,CAAC,OAAO,MAAM,sBAAsB,IAAI,aAAaA,SAAQ,CAAC;AAAA,EAC/G;AAEA,WAAS,mBAAmB,MAAM;AAChC,WAAO,UAAU,KAAK,aAAa,MAAM,KAAK,EAAE;AAAA,EAClD;AAEA,WAAS,cAAc,KAAK;AAC1B,UAAM,SAAS,UAAU,GAAG;AAC5B,WAAO,UAAU,OAAO,IAAI,KAAK,MAAM,GAAG,EAAE,OAAO,SAAS,EAAE,IAAI,IAAI;AAAA,EACxE;AAEA,WAAS,WAAW,KAAK;AACvB,WAAO,cAAc,GAAG;AAAA,EAC1B;AAEA,WAAS,aAAa,MAAM,OAAO;AACjC,WAAO,UAAU,IAAI,EAAE,QAAQ,UAAU,KAAK,EAAE;AAAA,EAClD;AAEA,WAAS,kBAAkB,KAAK;AAC9B,WAAO,IAAI,SAAS,MAAM,GAAG,EAAE,MAAM,CAAC;AAAA,EACxC;AAEA,WAAS,qBAAqB,KAAK;AACjC,WAAO,kBAAkB,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;AAAA,EAC3C;AAEA,WAAS,iBAAiB,OAAO;AAC/B,WAAO,MAAM,SAAS,GAAG,IAAI,QAAQ,QAAQ;AAAA,EAC/C;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAClB,YAAY,UAAU;AACpB,WAAK,WAAW;AAAA,IAClB;AAAA,IAEA,IAAI,YAAY;AACd,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,CAAC,KAAK;AAAA,IACf;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,cAAc,OAAO,KAAK,cAAc;AAAA,IACtD;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,cAAc,OAAO,KAAK,cAAc;AAAA,IACtD;AAAA,IAEA,IAAI,aAAa;AACf,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,UAAU,KAAK,SAAS,GAAG;AAAA,IACpC;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,KAAK,eAAe,KAAK,YAAY,MAAM,wDAAwD;AAAA,IAC5G;AAAA,IAEA,IAAI,aAAa;AACf,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,OAAO,cAAc;AAAA,IACnC;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO,KAAK,SAAS,MAAM,EAAE,KAAK;AAAA,IACpC;AAAA,IAEA,IAAI,eAAe;AACjB,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK,SAAS,MAAM,EAAE,KAAK;AAAA,MACpC,OAAO;AACL,eAAO,QAAQ,QAAQ,MAAS;AAAA,MAClC;AAAA,IACF;AAAA,IAEA,OAAOZ,OAAM;AACX,aAAO,KAAK,SAAS,QAAQ,IAAIA,KAAI;AAAA,IACvC;AAAA,EACF;AAEA,MAAM,aAAN,cAAyB,IAAI;AAAA,IAC3B,YAAY,SAAS;AACnB,YAAM;AACN,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,IAAI,OAAO;AACT,UAAI,KAAK,QAAQ,KAAK,SAAS;AAC7B,cAAM,WAAW,KAAK,OAAO;AAC7B,cAAM,cAAc,SAAS,KAAK,EAAE;AACpC,aAAK,OAAO,WAAW;AAAA,MACzB;AACA,YAAM,IAAI,KAAK;AAAA,IACjB;AAAA,EACF;AAEA,MAAM,iBAAiB,IAAI,WAAW,EAAE;AAExC,WAAS,sBAAsB,KAAK,UAAU,CAAC,GAAG;AAChD,UAAM,kBAAkB,IAAI,QAAQ,QAAQ,WAAW,CAAC,CAAC;AACzD,UAAM,aAAa,KAAK;AACxB,mBAAe,IAAI,UAAU;AAC7B,oBAAgB,OAAO,sBAAsB,UAAU;AAEvD,WAAO,OAAO,MAAM,KAAK;AAAA,MACvB,GAAG;AAAA,MACH,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,WAAS,sBAAsB,QAAQ;AACrC,YAAQ,OAAO,YAAY,GAAG;AAAA,MAC5B,KAAK;AACH,eAAO,YAAY;AAAA,MACrB,KAAK;AACH,eAAO,YAAY;AAAA,MACrB,KAAK;AACH,eAAO,YAAY;AAAA,MACrB,KAAK;AACH,eAAO,YAAY;AAAA,MACrB,KAAK;AACH,eAAO,YAAY;AAAA,IACvB;AAAA,EACF;AAEA,MAAM,cAAc;AAAA,IAClB,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAEA,WAAS,uBAAuB,UAAU;AACxC,YAAQ,SAAS,YAAY,GAAG;AAAA,MAC9B,KAAK,aAAa;AAChB,eAAO,aAAa;AAAA,MACtB,KAAK,aAAa;AAChB,eAAO,aAAa;AAAA,MACtB;AACE,eAAO,aAAa;AAAA,IACxB;AAAA,EACF;AAEA,MAAM,eAAe;AAAA,IACnB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,OAAO;AAAA,EACT;AAEA,MAAMH,gBAAN,MAAmB;AAAA,IACjB,kBAAkB,IAAI,gBAAgB;AAAA,IACtC,yBAAyB,CAAC,WAAW;AAAA,IAAC;AAAA,IAEtC,YAAYgB,WAAU,QAAQD,WAAU,cAAc,IAAI,gBAAgB,GAAG,SAAS,MAAM,UAAU,aAAa,YAAY;AAC7H,YAAM,CAAC,KAAK,IAAI,IAAI,qBAAqB,UAAUA,SAAQ,GAAG,QAAQ,aAAa,OAAO;AAE1F,WAAK,WAAWC;AAChB,WAAK,MAAM;AACX,WAAK,SAAS;AACd,WAAK,eAAe;AAAA,QAClB,aAAa;AAAA,QACb,UAAU;AAAA,QACV,QAAQ,OAAO,YAAY;AAAA,QAC3B,SAAS,EAAE,GAAG,KAAK,eAAe;AAAA,QAClC;AAAA,QACA,QAAQ,KAAK;AAAA,QACb,UAAU,KAAK,SAAS,UAAU;AAAA,MACpC;AACA,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,IAEA,IAAI,OAAO,OAAO;AAChB,YAAM,YAAY,KAAK,SAAS,KAAK,IAAI,eAAe,KAAK,aAAa,QAAQ,IAAI,SAAS;AAC/F,YAAM,cAAc,sBAAsB,KAAK,KAAK,YAAY;AAEhE,WAAK,IAAI,SAAS;AAElB,YAAM,CAAC,KAAK,IAAI,IAAI,qBAAqB,KAAK,KAAK,aAAa,WAAW,KAAK,OAAO;AAEvF,WAAK,MAAM;AACX,WAAK,aAAa,OAAO;AACzB,WAAK,aAAa,SAAS,YAAY,YAAY;AAAA,IACrD;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,IAEA,IAAI,QAAQ,OAAO;AACjB,WAAK,aAAa,UAAU;AAAA,IAC9B;AAAA,IAEA,IAAI,OAAO;AACT,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK,IAAI;AAAA,MAClB,OAAO;AACL,eAAO,KAAK,aAAa;AAAA,MAC3B;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,OAAO;AACd,WAAK,aAAa,OAAO;AAAA,IAC3B;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,KAAK,OAAO,MAAM,KAAK,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC;AAAA,IACxD;AAAA,IAEA,SAAS;AACP,WAAK,gBAAgB,MAAM;AAAA,IAC7B;AAAA,IAEA,MAAM,UAAU;AACd,YAAM,EAAE,aAAa,IAAI;AACzB,WAAK,SAAS,eAAe,IAAI;AACjC,YAAMX,SAAQ,MAAM,KAAK,6BAA6B,YAAY;AAClE,UAAI;AACF,aAAK,SAAS,eAAe,IAAI;AAEjC,YAAIA,OAAM,OAAO,cAAc;AAC7B,eAAK,WAAWA,OAAM,OAAO,aAAa;AAAA,QAC5C,OAAO;AACL,eAAK,WAAW,sBAAsB,KAAK,IAAI,MAAM,YAAY;AAAA,QACnE;AAEA,cAAM,WAAW,MAAM,KAAK;AAC5B,eAAO,MAAM,KAAK,QAAQ,QAAQ;AAAA,MACpC,SAAS,OAAO;AACd,YAAI,MAAM,SAAS,cAAc;AAC/B,cAAI,KAAK,2BAA2B,KAAK,GAAG;AAC1C,iBAAK,SAAS,eAAe,MAAM,KAAK;AAAA,UAC1C;AACA,gBAAM;AAAA,QACR;AAAA,MACF,UAAE;AACA,aAAK,SAAS,gBAAgB,IAAI;AAAA,MACpC;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,UAAU;AACtB,YAAM,gBAAgB,IAAI,cAAc,QAAQ;AAChD,YAAMA,SAAQ,SAAS,+BAA+B;AAAA,QACpD,YAAY;AAAA,QACZ,QAAQ,EAAE,cAAc;AAAA,QACxB,QAAQ,KAAK;AAAA,MACf,CAAC;AACD,UAAIA,OAAM,kBAAkB;AAC1B,aAAK,SAAS,iCAAiC,MAAM,aAAa;AAAA,MACpE,WAAW,cAAc,WAAW;AAClC,aAAK,SAAS,6BAA6B,MAAM,aAAa;AAAA,MAChE,OAAO;AACL,aAAK,SAAS,0BAA0B,MAAM,aAAa;AAAA,MAC7D;AACA,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,iBAAiB;AACnB,aAAO;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,OAAO,KAAK,MAAM;AAAA,IAC3B;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,gBAAgB;AAAA,IAC9B;AAAA,IAEA,mBAAmB,UAAU;AAC3B,WAAK,QAAQ,QAAQ,IAAI,CAAC,UAAU,KAAK,QAAQ,QAAQ,CAAC,EAAE,KAAK,IAAI;AAAA,IACvE;AAAA,IAEA,MAAM,6BAA6B,cAAc;AAC/C,YAAM,sBAAsB,IAAI,QAAQ,CAACC,aAAa,KAAK,yBAAyBA,QAAQ;AAC5F,YAAMD,SAAQ,SAAS,8BAA8B;AAAA,QACnD,YAAY;AAAA,QACZ,QAAQ;AAAA,UACN;AAAA,UACA,KAAK,KAAK;AAAA,UACV,QAAQ,KAAK;AAAA,QACf;AAAA,QACA,QAAQ,KAAK;AAAA,MACf,CAAC;AACD,WAAK,MAAMA,OAAM,OAAO;AACxB,UAAIA,OAAM,iBAAkB,OAAM;AAElC,aAAOA;AAAA,IACT;AAAA,IAEA,2BAA2B,OAAO;AAChC,YAAMA,SAAQ,SAAS,6BAA6B;AAAA,QAClD,QAAQ,KAAK;AAAA,QACb,YAAY;AAAA,QACZ,QAAQ,EAAE,SAAS,MAAM,MAAa;AAAA,MACxC,CAAC;AAED,aAAO,CAACA,OAAM;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,OAAO,aAAa;AAC3B,WAAO,sBAAsB,WAAW,KAAK,YAAY;AAAA,EAC3D;AAEA,WAAS,qBAAqB,UAAU,QAAQ,aAAa,SAAS;AACpE,UAAM,eACJ,MAAM,KAAK,WAAW,EAAE,SAAS,IAAI,IAAI,gBAAgB,sBAAsB,WAAW,CAAC,IAAI,SAAS;AAE1G,QAAI,OAAO,MAAM,GAAG;AAClB,aAAO,CAAC,yBAAyB,UAAU,YAAY,GAAG,IAAI;AAAA,IAChE,WAAW,WAAW,aAAa,YAAY;AAC7C,aAAO,CAAC,UAAU,YAAY;AAAA,IAChC,OAAO;AACL,aAAO,CAAC,UAAU,WAAW;AAAA,IAC/B;AAAA,EACF;AAEA,WAAS,sBAAsB,aAAa;AAC1C,UAAM,UAAU,CAAC;AAEjB,eAAW,CAACF,OAAM,KAAK,KAAK,aAAa;AACvC,UAAI,iBAAiB,KAAM;AAAA,UACtB,SAAQ,KAAK,CAACA,OAAM,KAAK,CAAC;AAAA,IACjC;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,yBAAyB,KAAK,aAAa;AAClD,UAAM,eAAe,IAAI,gBAAgB,sBAAsB,WAAW,CAAC;AAE3E,QAAI,SAAS,aAAa,SAAS;AAEnC,WAAO;AAAA,EACT;AAEA,MAAM,qBAAN,MAAyB;AAAA,IACvB,UAAU;AAAA,IAEV,YAAYa,WAAU,SAAS;AAC7B,WAAK,WAAWA;AAChB,WAAK,UAAU;AACf,WAAK,uBAAuB,IAAI,qBAAqB,KAAK,SAAS;AAAA,IACrE;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,UAAU;AACf,aAAK,qBAAqB,QAAQ,KAAK,OAAO;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,aAAK,UAAU;AACf,aAAK,qBAAqB,UAAU,KAAK,OAAO;AAAA,MAClD;AAAA,IACF;AAAA,IAEA,YAAY,CAAC,YAAY;AACvB,YAAM,YAAY,QAAQ,MAAM,EAAE,EAAE,CAAC;AACrC,UAAI,WAAW,gBAAgB;AAC7B,aAAK,SAAS,0BAA0B,KAAK,OAAO;AAAA,MACtD;AAAA,IACF;AAAA,EACF;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAClB,OAAO,cAAc;AAAA,IAErB,OAAO,KAAK,SAAS;AACnB,UAAI,OAAO,WAAW,UAAU;AAC9B,eAAO,IAAI,KAAK,uBAAuB,OAAO,CAAC;AAAA,MACjD,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,YAAY,UAAU;AACpB,WAAK,WAAW,qBAAqB,QAAQ;AAAA,IAC/C;AAAA,EACF;AAEA,WAAS,qBAAqB,UAAU;AACtC,eAAW,WAAW,SAAS,iBAAiB,cAAc,GAAG;AAC/D,YAAM,gBAAgB,SAAS,WAAW,SAAS,IAAI;AAEvD,iBAAW,sBAAsB,cAAc,gBAAgB,QAAQ,iBAAiB,QAAQ,GAAG;AACjG,2BAAmB,YAAY,sBAAsB,kBAAkB,CAAC;AAAA,MAC1E;AAEA,cAAQ,YAAY,aAAa;AAAA,IACnC;AAEA,WAAO;AAAA,EACT;AAEA,MAAM,WAAW,SAAO;AAExB,MAAM,WAAN,MAAe;AAAA,IACb,OAAO,CAAC;AAAA,IACR,UAAU,CAAC;AAAA,IACX;AAAA,IAEA,YAAY,MAAMC,cAAa,UAAU;AACvC,WAAK,OAAO;AACZ,WAAK,cAAcA;AAAA,IACrB;AAAA,IAEA,IAAI,KAAK;AACP,aAAO,KAAK,YAAY,GAAG,KAAK,KAAK;AAAA,IACvC;AAAA,IAEA,IAAI,KAAK;AACP,UAAI,KAAK,IAAI,GAAG,GAAG;AACjB,cAAM,QAAQ,KAAK,KAAK,GAAG;AAC3B,aAAK,MAAM,GAAG;AACd,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,OAAO;AACd,WAAK,MAAM,KAAK,KAAK;AACrB,WAAK,MAAM,GAAG;AACd,aAAO;AAAA,IACT;AAAA,IAEA,QAAQ;AACN,iBAAW,OAAO,OAAO,KAAK,KAAK,OAAO,GAAG;AAC3C,aAAK,MAAM,GAAG;AAAA,MAChB;AAAA,IACF;AAAA;AAAA,IAIA,KAAK,KAAK;AACR,aAAO,KAAK,QAAQ,KAAK,YAAY,GAAG,CAAC;AAAA,IAC3C;AAAA,IAEA,MAAM,KAAK,OAAO;AAChB,WAAK,QAAQ,KAAK,YAAY,GAAG,CAAC,IAAI;AAAA,IACxC;AAAA,IAEA,MAAM,KAAK;AACT,YAAM,KAAK,YAAY,GAAG;AAC1B,YAAMC,SAAQ,KAAK,KAAK,QAAQ,GAAG;AACnC,UAAIA,SAAQ,GAAI,MAAK,KAAK,OAAOA,QAAO,CAAC;AACzC,WAAK,KAAK,QAAQ,GAAG;AACrB,WAAK,KAAK;AAAA,IACZ;AAAA,IAEA,OAAO;AACL,iBAAW,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI,GAAG;AAC7C,aAAK,MAAM,GAAG;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,MAAM,KAAK;AACT,aAAO,KAAK,QAAQ,GAAG;AAAA,IACzB;AAAA,EACF;AAEA,MAAM,iBAAiB;AAEvB,MAAM,gBAAN,cAA4B,SAAS;AAAA,IACnC,mBAAmB;AAAA,IACnB,WAAW,CAAC;AAAA,IAEZ,YAAY,OAAO,GAAG,gBAAgB,gBAAgB;AACpD,YAAM,MAAM,UAAU;AACtB,WAAK,gBAAgB;AAAA,IACvB;AAAA,IAEA,SAAS,KAAK,SAAS,KAAK;AAC1B,WAAK,mBAAmB,WAAW,MAAM;AACvC,gBAAQ,QAAQ;AAChB,aAAK,IAAI,KAAK,SAAS,GAAG;AAC1B,aAAK,mBAAmB;AAAA,MAC1B,GAAG,KAAK,aAAa;AAAA,IACvB;AAAA,IAEA,IAAI,KAAK,SAAS,MAAM,UAAU;AAChC,YAAM,IAAI,KAAK,OAAO;AACtB,WAAK,SAAS,WAAW,GAAG,CAAC,IAAI,IAAI,MAAK,oBAAI,KAAK,GAAE,QAAQ,IAAI,GAAG;AAAA,IACtE;AAAA,IAEA,QAAQ;AACN,YAAM,MAAM;AACZ,UAAI,KAAK,iBAAkB,cAAa,KAAK,gBAAgB;AAAA,IAC/D;AAAA,IAEA,MAAM,KAAK;AACT,YAAM,MAAM,GAAG;AACf,aAAO,KAAK,SAAS,GAAG;AAAA,IAC1B;AAAA,IAEA,IAAI,KAAK;AACP,UAAI,MAAM,IAAI,GAAG,GAAG;AAClB,cAAM,SAAS,KAAK,SAAS,WAAW,GAAG,CAAC;AAE5C,eAAO,UAAU,SAAS,KAAK,IAAI;AAAA,MACrC,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,MAAM,WAAW,KAAK;AACtB,MAAM,gBAAgB,IAAI,cAAc;AAExC,MAAM,sBAAsB;AAAA,IAC1B,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AAEA,MAAM,iBAAN,MAAM,gBAAe;AAAA,IACnB,QAAQ,oBAAoB;AAAA,IAE5B,OAAO,cAAc,SAAS;AAC5B,aAAO,QAAQ,QAAQ,QAAQ,OAAO,CAAC;AAAA,IACzC;AAAA,IAEA,YAAYF,WAAU,aAAaH,YAAW,eAAe,OAAO;AAClE,YAAM,SAAS,UAAU,aAAaA,UAAS;AAC/C,YAAM,SAAS,UAAU,cAAc,aAAaA,UAAS,GAAG,MAAM;AACtE,YAAM,OAAO,cAAc,aAAaA,UAAS;AACjD,YAAM,UAAU,WAAW,aAAaA,UAAS;AAEjD,WAAK,WAAWG;AAChB,WAAK,cAAc;AACnB,WAAK,YAAYH;AACjB,WAAK,eAAe,IAAIb,cAAa,MAAM,QAAQ,QAAQ,MAAM,aAAa,OAAO;AACrF,WAAK,eAAe;AAAA,IACtB;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,IAEA,IAAI,OAAO,OAAO;AAChB,WAAK,aAAa,SAAS;AAAA,IAC7B;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,KAAK,aAAa,IAAI,SAAS;AAAA,IACxC;AAAA,IAEA,IAAI,OAAO,OAAO;AAChB,WAAK,aAAa,MAAM,UAAU,KAAK;AAAA,IACzC;AAAA,IAEA,IAAI,OAAO;AACT,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,IAEA,IAAI,SAAS;AACX,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA;AAAA,IAIA,MAAM,QAAQ;AACZ,YAAM,EAAE,aAAa,WAAW,IAAI;AACpC,YAAM,sBAAsB,aAAa,sBAAsB,KAAK,WAAW,KAAK,WAAW;AAE/F,UAAI,OAAO,wBAAwB,UAAU;AAC3C,cAAM,gBAAgB,OAAO,OAAO,MAAM,YAAY,aACpD,OAAO,MAAM,UACb,gBAAe;AAEjB,cAAM,SAAS,MAAM,cAAc,qBAAqB,KAAK,aAAa,KAAK,SAAS;AACxF,YAAI,CAAC,QAAQ;AACX;AAAA,QACF;AAAA,MACF;AAEA,UAAI,KAAK,SAAS,aAAa;AAC7B,aAAK,QAAQ;AACb,eAAO,KAAK,aAAa,QAAQ;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,OAAO;AACL,YAAM,EAAE,UAAU,QAAQ,IAAI;AAC9B,UAAI,KAAK,SAAS,YAAY,KAAK,SAAS,SAAS;AACnD,aAAK,QAAQ;AACb,aAAK,aAAa,OAAO;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA,IAIA,eAAe,SAAS;AACtB,UAAI,CAAC,QAAQ,QAAQ;AACnB,cAAM,QAAQ,eAAe,eAAe,YAAY,CAAC,KAAK,eAAe,YAAY;AACzF,YAAI,OAAO;AACT,kBAAQ,QAAQ,cAAc,IAAI;AAAA,QACpC;AAAA,MACF;AAEA,UAAI,KAAK,kCAAkC,OAAO,GAAG;AACnD,gBAAQ,mBAAmB,cAAc,WAAW;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,eAAe,UAAU;AACvB,WAAK,QAAQ,oBAAoB;AACjC,UAAI,KAAK,UAAW,QAAO,MAAM,UAAU,aAAa,KAAK,SAAS;AACtE,WAAK,eAAe;AACpB,iBAAW,KAAK,WAAW;AAC3B,eAAS,sBAAsB;AAAA,QAC7B,QAAQ,KAAK;AAAA,QACb,QAAQ,EAAE,gBAAgB,KAAK;AAAA,MACjC,CAAC;AACD,WAAK,SAAS,sBAAsB,IAAI;AAAA,IAC1C;AAAA,IAEA,iCAAiC,SAAS,UAAU;AAClD,oBAAc,MAAM;AAEpB,WAAK,SAAS,EAAE,SAAS,SAAS,WAAW,eAAe,SAAS;AAAA,IACvE;AAAA,IAEA,6BAA6B,SAAS,UAAU;AAC9C,UAAI,SAAS,eAAe,SAAS,aAAa;AAChD,aAAK,SAAS,iCAAiC,MAAM,QAAQ;AAC7D;AAAA,MACF;AAEA,oBAAc,MAAM;AAEpB,UAAI,KAAK,oBAAoB,OAAO,KAAK,iCAAiC,QAAQ,GAAG;AACnF,cAAM,QAAQ,IAAI,MAAM,kDAAkD;AAC1E,aAAK,SAAS,sBAAsB,MAAM,KAAK;AAAA,MACjD,OAAO;AACL,aAAK,QAAQ,oBAAoB;AACjC,aAAK,SAAS,EAAE,SAAS,MAAM,eAAe,SAAS;AACvD,aAAK,SAAS,oCAAoC,MAAM,QAAQ;AAAA,MAClE;AAAA,IACF;AAAA,IAEA,0BAA0B,SAAS,UAAU;AAC3C,WAAK,SAAS,EAAE,SAAS,OAAO,eAAe,SAAS;AACxD,WAAK,SAAS,iCAAiC,MAAM,QAAQ;AAAA,IAC/D;AAAA,IAEA,eAAe,SAAS,OAAO;AAC7B,WAAK,SAAS,EAAE,SAAS,OAAO,MAAM;AACtC,WAAK,SAAS,sBAAsB,MAAM,KAAK;AAAA,IACjD;AAAA,IAEA,gBAAgB,UAAU;AACxB,WAAK,QAAQ,oBAAoB;AACjC,UAAI,KAAK,UAAW,QAAO,MAAM,UAAU,YAAY,KAAK,SAAS;AACrE,WAAK,mBAAmB;AACxB,qBAAe,KAAK,WAAW;AAC/B,eAAS,oBAAoB;AAAA,QAC3B,QAAQ,KAAK;AAAA,QACb,QAAQ,EAAE,gBAAgB,MAAM,GAAG,KAAK,OAAO;AAAA,MACjD,CAAC;AACD,WAAK,SAAS,uBAAuB,IAAI;AAAA,IAC3C;AAAA;AAAA,IAIA,iBAAiB;AACf,UAAI,CAAC,KAAK,aAAa,CAAC,KAAK,YAAa;AAE1C,UAAI,KAAK,UAAU,QAAQ,QAAQ,GAAG;AACpC,aAAK,qBAAqB,KAAK,UAAU;AACzC,aAAK,UAAU,YAAY,KAAK;AAAA,MAClC,WAAW,KAAK,UAAU,QAAQ,OAAO,GAAG;AAC1C,cAAM,QAAQ,KAAK;AACnB,aAAK,qBAAqB,MAAM;AAChC,cAAM,QAAQ,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,qBAAqB;AACnB,UAAI,CAAC,KAAK,aAAa,CAAC,KAAK,mBAAoB;AAEjD,UAAI,KAAK,UAAU,QAAQ,QAAQ,GAAG;AACpC,aAAK,UAAU,YAAY,KAAK;AAAA,MAClC,WAAW,KAAK,UAAU,QAAQ,OAAO,GAAG;AAC1C,cAAM,QAAQ,KAAK;AACnB,cAAM,QAAQ,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,oBAAoB,SAAS;AAC3B,aAAO,CAAC,QAAQ,UAAU,KAAK;AAAA,IACjC;AAAA,IAEA,kCAAkC,SAAS;AACzC,aAAO,CAAC,QAAQ,UAAU,aAAa,qBAAqB,KAAK,WAAW,KAAK,WAAW;AAAA,IAC9F;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,WAAW,aAAa,yBAAyB;AAAA,IAC/D;AAAA,EACF;AAEA,WAAS,cAAc,aAAaa,YAAW;AAC7C,UAAM,WAAW,IAAI,SAAS,WAAW;AACzC,UAAMV,QAAOU,YAAW,aAAa,MAAM;AAC3C,UAAM,QAAQA,YAAW,aAAa,OAAO;AAE7C,QAAIV,OAAM;AACR,eAAS,OAAOA,OAAM,SAAS,EAAE;AAAA,IACnC;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,eAAe,YAAY;AAClC,QAAI,cAAc,MAAM;AACtB,YAAM,UAAU,SAAS,SAAS,SAAS,OAAO,MAAM,IAAI,IAAI,CAAC;AACjE,YAAM,SAAS,QAAQ,KAAK,CAACgB,YAAWA,QAAO,WAAW,UAAU,CAAC;AACrE,UAAI,QAAQ;AACV,cAAM,QAAQ,OAAO,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG;AACjD,eAAO,QAAQ,mBAAmB,KAAK,IAAI;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAEA,WAAS,iCAAiC,UAAU;AAClD,WAAO,SAAS,cAAc,OAAO,CAAC,SAAS;AAAA,EACjD;AAEA,WAAS,cAAc,aAAaN,YAAW;AAC7C,UAAM,oBAAoB,OAAO,YAAY,WAAW,WAAW,YAAY,SAAS;AAExF,QAAIA,YAAW,aAAa,YAAY,GAAG;AACzC,aAAOA,WAAU,aAAa,YAAY,KAAK;AAAA,IACjD,OAAO;AACL,aAAO,YAAY,aAAa,QAAQ,KAAK,qBAAqB;AAAA,IACpE;AAAA,EACF;AAEA,WAAS,UAAU,YAAY,aAAa;AAC1C,UAAM,SAAS,UAAU,UAAU;AAEnC,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO,SAAS;AAAA,IAClB;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,aAAaA,YAAW;AACzC,UAAM,SAASA,YAAW,aAAa,YAAY,KAAK,YAAY,aAAa,QAAQ,KAAK;AAC9F,WAAO,sBAAsB,OAAO,YAAY,CAAC,KAAK,YAAY;AAAA,EACpE;AAEA,WAAS,WAAW,aAAaA,YAAW;AAC1C,WAAO,uBAAuBA,YAAW,aAAa,aAAa,KAAK,YAAY,OAAO;AAAA,EAC7F;AAEA,MAAM,WAAN,MAAe;AAAA,IACb,YAAY,SAAS;AACnB,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,IAAI,gBAAgB;AAClB,aAAO,KAAK,QAAQ,cAAc;AAAA,IACpC;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,CAAC,GAAG,KAAK,QAAQ,QAAQ;AAAA,IAClC;AAAA,IAEA,UAAU,QAAQ;AAChB,aAAO,KAAK,oBAAoB,MAAM,KAAK;AAAA,IAC7C;AAAA,IAEA,oBAAoB,QAAQ;AAC1B,aAAO,SAAS,KAAK,QAAQ,cAAc,QAAQ,MAAM,eAAe,MAAM,IAAI,IAAI;AAAA,IACxF;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,4BAA4B;AAC9B,aAAO,0BAA0B,KAAK,OAAO;AAAA,IAC/C;AAAA,IAEA,IAAI,oBAAoB;AACtB,aAAO,0BAA0B,KAAK,OAAO;AAAA,IAC/C;AAAA,IAEA,wBAAwB,IAAI;AAC1B,aAAO,wBAAwB,KAAK,SAAS,EAAE;AAAA,IACjD;AAAA,IAEA,kCAAkC,UAAU;AAC1C,YAAM,sBAAsB,CAAC;AAE7B,iBAAW,2BAA2B,KAAK,mBAAmB;AAC5D,cAAM,EAAE,GAAG,IAAI;AACf,cAAM,sBAAsB,SAAS,wBAAwB,EAAE;AAC/D,YAAI,qBAAqB;AACvB,8BAAoB,EAAE,IAAI,CAAC,yBAAyB,mBAAmB;AAAA,QACzE;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,wBAAwB,MAAM,IAAI;AACzC,WAAO,KAAK,cAAc,IAAI,EAAE,wBAAwB;AAAA,EAC1D;AAEA,WAAS,0BAA0B,MAAM;AACvC,WAAO,KAAK,iBAAiB,4BAA4B;AAAA,EAC3D;AAEA,MAAM,qBAAN,MAAyB;AAAA,IACvB,UAAU;AAAA,IAEV,YAAYG,WAAU,aAAa;AACjC,WAAK,WAAWA;AAChB,WAAK,cAAc;AAAA,IACrB;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,YAAY,iBAAiB,UAAU,KAAK,gBAAgB,IAAI;AACrE,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,aAAK,YAAY,oBAAoB,UAAU,KAAK,gBAAgB,IAAI;AACxE,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,iBAAiB,MAAM;AACrB,WAAK,YAAY,oBAAoB,UAAU,KAAK,eAAe,KAAK;AACxE,WAAK,YAAY,iBAAiB,UAAU,KAAK,eAAe,KAAK;AAAA,IACvE;AAAA,IAEA,gBAAgB,CAACX,WAAU;AACzB,UAAI,CAACA,OAAM,kBAAkB;AAC3B,cAAM,OAAOA,OAAM,kBAAkB,kBAAkBA,OAAM,SAAS;AACtE,cAAMQ,aAAYR,OAAM,aAAa;AAErC,YACE,QACA,+BAA+B,MAAMQ,UAAS,KAC9C,8BAA8B,MAAMA,UAAS,KAC7C,KAAK,SAAS,eAAe,MAAMA,UAAS,GAC5C;AACA,UAAAR,OAAM,eAAe;AACrB,UAAAA,OAAM,yBAAyB;AAC/B,eAAK,SAAS,cAAc,MAAMQ,UAAS;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,+BAA+B,MAAMA,YAAW;AACvD,UAAM,SAASA,YAAW,aAAa,YAAY,KAAK,KAAK,aAAa,QAAQ;AAElF,WAAO,UAAU;AAAA,EACnB;AAEA,WAAS,8BAA8B,MAAMA,YAAW;AACtD,UAAM,SAASA,YAAW,aAAa,YAAY,KAAK,KAAK,aAAa,QAAQ;AAElF,WAAO,oBAAoB,MAAM;AAAA,EACnC;AAEA,MAAM,OAAN,MAAW;AAAA,IACT,wBAAwB,CAAC,WAAW;AAAA,IAAC;AAAA,IACrC,8BAA8B,CAAC,WAAW;AAAA,IAAC;AAAA,IAE3C,YAAYG,WAAU,SAAS;AAC7B,WAAK,WAAWA;AAChB,WAAK,UAAU;AAAA,IACjB;AAAA;AAAA,IAIA,eAAe,QAAQ;AACrB,YAAM,UAAU,KAAK,SAAS,oBAAoB,MAAM;AACxD,UAAI,SAAS;AACX,aAAK,aAAa,OAAO;AACzB,aAAK,gBAAgB,OAAO;AAAA,MAC9B,OAAO;AACL,aAAK,iBAAiB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,2BAA2BD,WAAU;AACnC,WAAK,eAAe,UAAUA,SAAQ,CAAC;AAAA,IACzC;AAAA,IAEA,gBAAgB,SAAS;AACvB,cAAQ,eAAe;AAAA,IACzB;AAAA,IAEA,aAAa,SAAS;AACpB,UAAI,mBAAmB,aAAa;AAClC,YAAI,QAAQ,aAAa,UAAU,GAAG;AACpC,kBAAQ,MAAM;AAAA,QAChB,OAAO;AACL,kBAAQ,aAAa,YAAY,IAAI;AACrC,kBAAQ,MAAM;AACd,kBAAQ,gBAAgB,UAAU;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,iBAAiB,EAAE,GAAAK,IAAG,GAAAC,GAAE,GAAG;AACzB,WAAK,WAAW,SAASD,IAAGC,EAAC;AAAA,IAC/B;AAAA,IAEA,cAAc;AACZ,WAAK,iBAAiB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAAA,IACtC;AAAA,IAEA,IAAI,aAAa;AACf,aAAO;AAAA,IACT;AAAA;AAAA,IAIA,MAAM,OAAO,UAAU;AACrB,YAAM,EAAE,WAAW,cAAc,YAAY,aAAa,SAAS,IAAI;AAIvE,YAAM,mBAAmB;AAEzB,UAAI,cAAc;AAChB,YAAI;AACF,eAAK,gBAAgB,IAAI,QAAQ,CAACf,aAAa,KAAK,wBAAwBA,QAAQ;AACpF,eAAK,WAAW;AAChB,gBAAM,KAAK,wBAAwB,QAAQ;AAE3C,gBAAM,qBAAqB,IAAI,QAAQ,CAACA,aAAa,KAAK,8BAA8BA,QAAQ;AAChG,gBAAM,UAAU,EAAE,QAAQ,KAAK,6BAA6B,QAAQ,KAAK,SAAS,eAAe,cAAc,KAAK,SAAS,aAAa;AAC1I,gBAAM,kBAAkB,KAAK,SAAS,sBAAsB,UAAU,OAAO;AAC7E,cAAI,CAAC,gBAAiB,OAAM;AAE5B,gBAAM,KAAK,eAAe,QAAQ;AAClC,eAAK,SAAS,qBAAqB,UAAU,WAAW,KAAK,SAAS,YAAY;AAClF,eAAK,SAAS,0BAA0B,KAAK,OAAO;AACpD,eAAK,wBAAwB,QAAQ;AAAA,QACvC,UAAE;AACA,iBAAO,KAAK;AACZ,eAAK,sBAAsB,MAAS;AACpC,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,WAAW,kBAAkB;AAC3B,aAAK,WAAW,SAAS,YAAY;AAAA,MACvC;AAAA,IACF;AAAA,IAEA,WAAW,QAAQ;AACjB,WAAK,SAAS,gBAAgB,MAAM;AAAA,IACtC;AAAA,IAEA,MAAM,wBAAwB,UAAU;AACtC,WAAK,cAAc,SAAS,SAAS;AACrC,YAAM,SAAS,gBAAgB;AAAA,IACjC;AAAA,IAEA,cAAc,WAAW;AACvB,UAAI,WAAW;AACb,aAAK,QAAQ,aAAa,sBAAsB,EAAE;AAAA,MACpD,OAAO;AACL,aAAK,QAAQ,gBAAgB,oBAAoB;AAAA,MACnD;AAAA,IACF;AAAA,IAEA,mBAAmB,WAAW;AAC5B,WAAK,QAAQ,aAAa,8BAA8B,SAAS;AAAA,IACnE;AAAA,IAEA,uBAAuB;AACrB,WAAK,QAAQ,gBAAgB,4BAA4B;AAAA,IAC3D;AAAA,IAEA,MAAM,eAAe,UAAU;AAC7B,YAAM,SAAS,OAAO;AAAA,IACxB;AAAA,IAEA,wBAAwB,UAAU;AAChC,eAAS,gBAAgB;AAAA,IAC3B;AAAA,EACF;AAEA,MAAM,YAAN,cAAwB,KAAK;AAAA,IAC3B,UAAU;AACR,WAAK,QAAQ,YAAY;AAAA,IAC3B;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,IAAI,SAAS,KAAK,OAAO;AAAA,IAClC;AAAA,EACF;AAEA,MAAM,kBAAN,MAAsB;AAAA,IACpB,YAAYU,WAAU,SAAS;AAC7B,WAAK,WAAWA;AAChB,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,QAAQ;AACN,WAAK,QAAQ,iBAAiB,SAAS,KAAK,YAAY;AACxD,eAAS,iBAAiB,eAAe,KAAK,WAAW;AACzD,eAAS,iBAAiB,sBAAsB,KAAK,SAAS;AAAA,IAChE;AAAA,IAEA,OAAO;AACL,WAAK,QAAQ,oBAAoB,SAAS,KAAK,YAAY;AAC3D,eAAS,oBAAoB,eAAe,KAAK,WAAW;AAC5D,eAAS,oBAAoB,sBAAsB,KAAK,SAAS;AAAA,IACnE;AAAA,IAEA,eAAe,CAACX,WAAU;AACxB,UAAI,KAAK,wBAAwBA,MAAK,GAAG;AACvC,aAAK,aAAaA;AAAA,MACpB,OAAO;AACL,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,IAEA,cAAc,CAACA,WAAU;AACvB,UAAI,KAAK,cAAc,KAAK,wBAAwBA,MAAK,GAAG;AAC1D,YAAI,KAAK,SAAS,yBAAyBA,OAAM,QAAQA,OAAM,OAAO,KAAKA,OAAM,OAAO,aAAa,GAAG;AACtG,eAAK,WAAW,eAAe;AAC/B,UAAAA,OAAM,eAAe;AACrB,eAAK,SAAS,qBAAqBA,OAAM,QAAQA,OAAM,OAAO,KAAKA,OAAM,OAAO,aAAa;AAAA,QAC/F;AAAA,MACF;AACA,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,YAAY,CAAC,WAAW;AACtB,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,wBAAwBA,QAAO;AAC7B,YAAM,SAASA,OAAM,WAAWA,OAAM,QAAQ,gBAAgBA,OAAM;AACpE,YAAM,UAAU,wBAAwB,MAAM,KAAK;AAEnD,aAAO,mBAAmB,WAAW,QAAQ,QAAQ,mBAAmB,KAAK,KAAK;AAAA,IACpF;AAAA,EACF;AAEA,MAAM,oBAAN,MAAwB;AAAA,IACtB,UAAU;AAAA,IAEV,YAAYW,WAAU,aAAa;AACjC,WAAK,WAAWA;AAChB,WAAK,cAAc;AAAA,IACrB;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,YAAY,iBAAiB,SAAS,KAAK,eAAe,IAAI;AACnE,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,aAAK,YAAY,oBAAoB,SAAS,KAAK,eAAe,IAAI;AACtE,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,gBAAgB,MAAM;AACpB,WAAK,YAAY,oBAAoB,SAAS,KAAK,cAAc,KAAK;AACtE,WAAK,YAAY,iBAAiB,SAAS,KAAK,cAAc,KAAK;AAAA,IACrE;AAAA,IAEA,eAAe,CAACX,WAAU;AACxB,UAAIA,kBAAiB,cAAc,KAAK,wBAAwBA,MAAK,GAAG;AACtE,cAAM,SAAUA,OAAM,gBAAgBA,OAAM,aAAa,EAAE,CAAC,KAAMA,OAAM;AACxE,cAAM,OAAO,wBAAwB,MAAM;AAC3C,YAAI,QAAQ,oBAAoB,KAAK,MAAM,GAAG;AAC5C,gBAAMU,YAAW,mBAAmB,IAAI;AACxC,cAAI,KAAK,SAAS,yBAAyB,MAAMA,WAAUV,MAAK,GAAG;AACjE,YAAAA,OAAM,eAAe;AACrB,iBAAK,SAAS,uBAAuB,MAAMU,SAAQ;AAAA,UACrD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,wBAAwBV,QAAO;AAC7B,aAAO,EACJA,OAAM,UAAUA,OAAM,OAAO,qBAC9BA,OAAM,oBACNA,OAAM,QAAQ,KACdA,OAAM,UACNA,OAAM,WACNA,OAAM,WACNA,OAAM;AAAA,IAEV;AAAA,EACF;AAEA,MAAM,wBAAN,MAA4B;AAAA,IAC1B,YAAYW,WAAU,SAAS;AAC7B,WAAK,WAAWA;AAChB,WAAK,kBAAkB,IAAI,kBAAkB,MAAM,OAAO;AAAA,IAC5D;AAAA,IAEA,QAAQ;AACN,WAAK,gBAAgB,MAAM;AAAA,IAC7B;AAAA,IAEA,OAAO;AACL,WAAK,gBAAgB,KAAK;AAAA,IAC5B;AAAA;AAAA,IAIA,6BAA6B,MAAMD,WAAU;AAC3C,aAAO;AAAA,IACT;AAAA,IAEA,kCAAkC,MAAMA,WAAU;AAChD;AAAA,IACF;AAAA;AAAA,IAIA,yBAAyB,MAAMA,WAAU,eAAe;AACtD,aACE,KAAK,SAAS,6BAA6B,MAAMA,WAAU,aAAa,MACvE,KAAK,aAAa,mBAAmB,KAAK,KAAK,aAAa,mBAAmB;AAAA,IAEpF;AAAA,IAEA,uBAAuB,MAAMA,WAAU;AACrC,YAAM,OAAO,SAAS,cAAc,MAAM;AAE1C,YAAM,OAAO;AACb,iBAAW,CAACZ,OAAM,KAAK,KAAKY,UAAS,cAAc;AACjD,aAAK,OAAO,OAAO,OAAO,SAAS,cAAc,OAAO,GAAG,EAAE,MAAM,MAAAZ,OAAM,MAAM,CAAC,CAAC;AAAA,MACnF;AAEA,YAAM,SAAS,OAAO,OAAOY,WAAU,EAAE,QAAQ,GAAG,CAAC;AACrD,WAAK,aAAa,cAAc,MAAM;AACtC,WAAK,aAAa,UAAU,OAAO,IAAI;AACvC,WAAK,aAAa,UAAU,EAAE;AAE9B,YAAM,SAAS,KAAK,aAAa,mBAAmB;AACpD,UAAI,OAAQ,MAAK,aAAa,UAAU,MAAM;AAE9C,YAAM,aAAa,KAAK,aAAa,kBAAkB;AACvD,UAAI,WAAY,MAAK,aAAa,oBAAoB,UAAU;AAEhE,YAAM,cAAc,eAAe,IAAI;AACvC,UAAI,YAAa,MAAK,aAAa,qBAAqB,WAAW;AAEnE,YAAM,eAAe,KAAK,aAAa,oBAAoB;AAC3D,UAAI,aAAc,MAAK,aAAa,sBAAsB,YAAY;AAEtE,YAAM,cAAc,KAAK,aAAa,mBAAmB;AACzD,UAAI,YAAa,MAAK,aAAa,qBAAqB,EAAE;AAE1D,WAAK,SAAS,4BAA4B,MAAMA,WAAU,IAAI;AAE9D,eAAS,KAAK,YAAY,IAAI;AAC9B,WAAK,iBAAiB,oBAAoB,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,KAAK,CAAC;AAC7E,4BAAsB,MAAM,KAAK,cAAc,CAAC;AAAA,IAClD;AAAA,EACF;AAEA,MAAM,QAAN,MAAY;AAAA,IACV,aAAa,4BAA4BC,WAAU,qBAAqBJ,WAAU;AAChF,YAAM,QAAQ,IAAI,KAAKI,WAAU,mBAAmB;AACpD,YAAM,MAAM;AACZ,YAAMJ,UAAS;AACf,YAAM,MAAM;AAAA,IACd;AAAA,IAEA,YAAYI,WAAU,qBAAqB;AACzC,WAAK,WAAWA;AAChB,WAAK,sBAAsB;AAAA,IAC7B;AAAA,IAEA,QAAQ;AACN,iBAAW,MAAM,KAAK,qBAAqB;AACzC,cAAM,CAAC,yBAAyB,mBAAmB,IAAI,KAAK,oBAAoB,EAAE;AAClF,aAAK,SAAS,cAAc,yBAAyB,mBAAmB;AACxE,aAAK,0CAA0C,mBAAmB;AAAA,MACpE;AAAA,IACF;AAAA,IAEA,QAAQ;AACN,iBAAW,MAAM,KAAK,qBAAqB;AACzC,cAAM,CAAC,uBAAuB,IAAI,KAAK,oBAAoB,EAAE;AAC7D,aAAK,wCAAwC,uBAAuB;AACpE,aAAK,uCAAuC,uBAAuB;AACnE,aAAK,SAAS,aAAa,uBAAuB;AAAA,MACpD;AAAA,IACF;AAAA,IAEA,0CAA0C,kBAAkB;AAC1D,YAAM,cAAc,qCAAqC,gBAAgB;AACzE,uBAAiB,YAAY,WAAW;AAAA,IAC1C;AAAA,IAEA,wCAAwC,kBAAkB;AACxD,YAAMM,SAAQ,iBAAiB,UAAU,IAAI;AAC7C,uBAAiB,YAAYA,MAAK;AAAA,IACpC;AAAA,IAEA,uCAAuC,kBAAkB;AACvD,YAAM,cAAc,KAAK,mBAAmB,iBAAiB,EAAE;AAC/D,mBAAa,YAAY,gBAAgB;AAAA,IAC3C;AAAA,IAEA,mBAAmB,IAAI;AACrB,aAAO,KAAK,aAAa,KAAK,CAAC,YAAY,QAAQ,WAAW,EAAE;AAAA,IAClE;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO,CAAC,GAAG,SAAS,iBAAiB,iDAAiD,CAAC;AAAA,IACzF;AAAA,EACF;AAEA,WAAS,qCAAqC,kBAAkB;AAC9D,UAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,YAAQ,aAAa,QAAQ,6BAA6B;AAC1D,YAAQ,aAAa,WAAW,iBAAiB,EAAE;AACnD,WAAO;AAAA,EACT;AAEA,MAAM,WAAN,MAAe;AAAA,IACb,iBAAiB;AAAA,IAEjB,OAAO,cAAc,gBAAgB,YAAY;AAAA,IAEjD;AAAA,IAEA,YAAY,iBAAiB,aAAa,WAAW,aAAa,MAAM;AACtE,WAAK,kBAAkB;AACvB,WAAK,cAAc;AACnB,WAAK,YAAY;AACjB,WAAK,aAAa;AAClB,WAAK,gBAAgB,KAAK,YAAY;AACtC,WAAK,UAAU,IAAI,QAAQ,CAAChB,UAAS,WAAY,KAAK,qBAAqB,EAAE,SAAAA,UAAS,OAAO,CAAE;AAAA,IACjG;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,kBAAkB;AACpB,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,eAAe;AACjB;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,IAET;AAAA,IAEA,kBAAkB;AAChB,UAAI,KAAK,oBAAoB;AAC3B,aAAK,mBAAmB,QAAQ;AAChC,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,IAEA,MAAM,4BAA4BM,WAAU;AAC1C,YAAM,MAAM,4BAA4B,MAAM,KAAK,qBAAqBA,SAAQ;AAAA,IAClF;AAAA,IAEA,iCAAiC;AAC/B,UAAI,KAAK,iBAAiB;AACxB,cAAM,UAAU,KAAK,kBAAkB;AACvC,YAAI,SAAS;AACX,kBAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAIA,cAAc,yBAAyB;AACrC,UAAI,KAAK,eAAgB;AAEzB,UAAI,wBAAwB,SAAS,KAAK,gBAAgB,aAAa,GAAG;AACxE,aAAK,iBAAiB,KAAK,gBAAgB;AAAA,MAC7C;AAAA,IACF;AAAA,IAEA,aAAa,yBAAyB;AACpC,UAAI,wBAAwB,SAAS,KAAK,cAAc,KAAK,KAAK,0BAA0B,aAAa;AACvG,aAAK,eAAe,MAAM;AAE1B,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,IAAI,oBAAoB;AACtB,aAAO,KAAK,YAAY,cAAc,KAAK,cAAc,KAAK;AAAA,IAChE;AAAA,IAEA,IAAI,iBAAiB;AACnB,aAAO,KAAK,gBAAgB;AAAA,IAC9B;AAAA,IAEA,IAAI,aAAa;AACf,aAAO,KAAK,YAAY;AAAA,IAC1B;AAAA,IAEA,IAAI,sBAAsB;AACxB,aAAO,KAAK,gBAAgB,kCAAkC,KAAK,WAAW;AAAA,IAChF;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,gBAAN,cAA4B,SAAS;AAAA,IACnC,OAAO,cAAc,gBAAgB,YAAY;AAC/C,YAAM,mBAAmB,SAAS,YAAY;AAC9C,uBAAiB,mBAAmB,cAAc;AAClD,uBAAiB,eAAe;AAEhC,YAAM,eAAe;AACrB,YAAM,cAAc,aAAa,eAAe,YAAY;AAC5D,UAAI,aAAa;AACf,oBAAY,mBAAmB,YAAY;AAC3C,uBAAe,YAAY,YAAY,gBAAgB,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IAEA,YAAYI,WAAU,iBAAiB,aAAa,eAAe,WAAW,aAAa,MAAM;AAC/F,YAAM,iBAAiB,aAAa,eAAe,WAAW,UAAU;AACxE,WAAK,WAAWA;AAAA,IAClB;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,SAAS;AACb,YAAM,YAAY;AAClB,WAAK,4BAA4B,MAAM;AACrC,aAAK,iBAAiB;AAAA,MACxB,CAAC;AACD,WAAK,oBAAoB;AACzB,YAAM,YAAY;AAClB,WAAK,+BAA+B;AACpC,YAAM,YAAY;AAClB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,mBAAmB;AACjB,WAAK,SAAS,gBAAgB,KAAK,gBAAgB,KAAK,UAAU;AAClE,WAAK,cAAc,KAAK,gBAAgB,KAAK,UAAU;AAAA,IACzD;AAAA,IAEA,sBAAsB;AACpB,UAAI,KAAK,eAAe,cAAc,KAAK,WAAW,YAAY;AAChE,cAAM,UAAU,KAAK,eAAe;AACpC,cAAM,QAAQ,0BAA0B,KAAK,eAAe,aAAa,uBAAuB,GAAG,KAAK;AACxG,cAAM,WAAW,mBAAmB,KAAK,eAAe,aAAa,0BAA0B,GAAG,MAAM;AAExG,YAAI,SAAS;AACX,kBAAQ,eAAe,EAAE,OAAO,SAAS,CAAC;AAC1C,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IAEA,yBAAyB;AACvB,iBAAW,sBAAsB,KAAK,mBAAmB;AACvD,cAAM,yBAAyB,sBAAsB,kBAAkB;AACvE,2BAAmB,YAAY,sBAAsB;AAAA,MACvD;AAAA,IACF;AAAA,IAEA,IAAI,oBAAoB;AACtB,aAAO,KAAK,eAAe,iBAAiB,QAAQ;AAAA,IACtD;AAAA,EACF;AAEA,WAAS,0BAA0B,OAAO,cAAc;AACtD,QAAI,SAAS,SAAS,SAAS,WAAW,SAAS,YAAY,SAAS,WAAW;AACjF,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,mBAAmB,OAAO,cAAc;AAC/C,QAAI,SAAS,UAAU,SAAS,UAAU;AACxC,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAkGA,MAAI,aAAa,WAAY;AAwB3B,UAAM,OAAO,MAAM;AAAA,IAAC;AAKpB,UAAMO,YAAW;AAAA,MACf,YAAY;AAAA,MACZ,WAAW;AAAA,QACT,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,wBAAwB;AAAA,MAC1B;AAAA,MACA,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,gBAAgB,CAAC,QAAQ,IAAI,aAAa,aAAa,MAAM;AAAA,QAC7D,gBAAgB,CAAC,QAAQ,IAAI,aAAa,cAAc,MAAM;AAAA,QAC9D,cAAc;AAAA,QACd,kBAAkB;AAAA,MACpB;AAAA,MACA,cAAc;AAAA,IAChB;AAUA,aAAS,MAAM,SAAS,YAAYT,UAAS,CAAC,GAAG;AAC/C,gBAAU,iBAAiB,OAAO;AAClC,YAAM,UAAU,gBAAgB,UAAU;AAC1C,YAAM,MAAM,mBAAmB,SAAS,SAASA,OAAM;AAEvD,YAAM,eAAe,oBAAoB,KAAK,MAAM;AAClD,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA;AAAA,UACiC,CAACU,SAAQ;AACxC,gBAAIA,KAAI,eAAe,aAAa;AAClC,cAAAC,eAAcD,MAAK,SAAS,OAAO;AACnC,qBAAO,MAAM,KAAK,QAAQ,UAAU;AAAA,YACtC,OAAO;AACL,qBAAO,eAAeA,MAAK,SAAS,OAAO;AAAA,YAC7C;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAI,OAAO,OAAO;AAClB,aAAO;AAAA,IACT;AAUA,aAAS,eAAe,KAAK,SAAS,SAAS;AAC7C,YAAM,YAAY,gBAAgB,OAAO;AACzC,MAAAC;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA;AAAA,QACA,QAAQ;AAAA;AAAA,MACV;AAEA,aAAO,MAAM,KAAK,UAAU,UAAU;AAAA,IACxC;AAOA,aAAS,oBAAoB,KAAK,IAAI;AACpC,UAAI,CAAC,IAAI,OAAO,aAAc,QAAO,GAAG;AACxC,UAAI;AAAA;AAAA,QAEA,SAAS;AAAA;AAIb,UACE,EACE,yBAAyB,oBACzB,yBAAyB,sBAE3B;AACA,eAAO,GAAG;AAAA,MACZ;AAEA,YAAM,EAAE,IAAI,iBAAiB,gBAAgB,aAAa,IAAI;AAE9D,YAAM,UAAU,GAAG;AAEnB,UACE,mBACA,oBAAoB,SAAS,eAAe,aAAa,IAAI,GAC7D;AACA,wBAAgB,IAAI,OAAO,cAAc,QAAQ,eAAe,IAAI;AACpE,uBAAe,MAAM;AAAA,MACvB;AACA,UAAI,iBAAiB,CAAC,cAAc,gBAAgB,cAAc;AAChE,sBAAc,kBAAkB,gBAAgB,YAAY;AAAA,MAC9D;AAEA,aAAO;AAAA,IACT;AAEA,UAAMA,iBAAiB,4BAAY;AA2BjC,eAASA,eACP,KACA,WACA,WACA,iBAAiB,MACjB,WAAW,MACX;AAEA,YACE,qBAAqB,uBACrB,qBAAqB,qBACrB;AAEA,sBAAY,UAAU;AAEtB,sBAAY,UAAU;AAAA,QACxB;AACA,2BAAmB,UAAU;AAG7B,mBAAW,YAAY,UAAU,YAAY;AAE3C,cAAI,kBAAkB,kBAAkB,UAAU;AAChD,kBAAM,YAAY;AAAA,cAChB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AACA,gBAAI,WAAW;AAEb,kBAAI,cAAc,gBAAgB;AAChC,mCAAmB,KAAK,gBAAgB,SAAS;AAAA,cACnD;AACA,wBAAU,WAAW,UAAU,GAAG;AAClC,+BAAiB,UAAU;AAC3B;AAAA,YACF;AAAA,UACF;AAGA,cAAI,oBAAoB,SAAS;AAE/B,kBAAM;AAAA;AAAA,cACJ,SAAS,aAAa,IAAI;AAAA;AAE5B,gBAAI,IAAI,cAAc,IAAI,UAAU,GAAG;AAErC,oBAAM,aAAa;AAAA,gBACjB;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF;AACA,wBAAU,YAAY,UAAU,GAAG;AACnC,+BAAiB,WAAW;AAC5B;AAAA,YACF;AAAA,UACF;AAGA,gBAAM,eAAe;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAEA,cAAI,cAAc;AAChB,6BAAiB,aAAa;AAAA,UAChC;AAAA,QACF;AAGA,eAAO,kBAAkB,kBAAkB,UAAU;AACnD,gBAAM,WAAW;AACjB,2BAAiB,eAAe;AAChC,qBAAW,KAAK,QAAQ;AAAA,QAC1B;AAAA,MACF;AAYA,eAAS,WAAW,WAAW,UAAU,gBAAgB,KAAK;AAC5D,YAAI,IAAI,UAAU,gBAAgB,QAAQ,MAAM,MAAO,QAAO;AAC9D,YAAI,IAAI,MAAM,IAAI,QAAQ,GAAG;AAE3B,gBAAM,gBAAgB,SAAS;AAAA;AAAA,YACL,SAAU;AAAA,UACpC;AACA,oBAAU,aAAa,eAAe,cAAc;AACpD,oBAAU,eAAe,UAAU,GAAG;AACtC,cAAI,UAAU,eAAe,aAAa;AAC1C,iBAAO;AAAA,QACT,OAAO;AAEL,gBAAM,iBAAiB,SAAS,WAAW,UAAU,IAAI;AACzD,oBAAU,aAAa,gBAAgB,cAAc;AACrD,cAAI,UAAU,eAAe,cAAc;AAC3C,iBAAO;AAAA,QACT;AAAA,MACF;AAKA,YAAM,gBAAiB,4BAAY;AAWjC,iBAASC,eAAc,KAAK,MAAM,YAAY,UAAU;AACtD,cAAI,YAAY;AAChB,cAAI,cAAc,KAAK;AACvB,cAAI,wBAAwB;AAE5B,cAAI,SAAS;AACb,iBAAO,UAAU,UAAU,UAAU;AAEnC,gBAAI,YAAY,QAAQ,IAAI,GAAG;AAC7B,kBAAI,aAAa,KAAK,QAAQ,IAAI,GAAG;AACnC,uBAAO;AAAA,cACT;AAGA,kBAAI,cAAc,MAAM;AAEtB,oBAAI,CAAC,IAAI,MAAM,IAAI,MAAM,GAAG;AAE1B,8BAAY;AAAA,gBACd;AAAA,cACF;AAAA,YACF;AACA,gBACE,cAAc,QACd,eACA,YAAY,QAAQ,WAAW,GAC/B;AAGA;AACA,4BAAc,YAAY;AAK1B,kBAAI,yBAAyB,GAAG;AAC9B,4BAAY;AAAA,cACd;AAAA,YACF;AAKA,gBAAI,IAAI,wBAAwB,SAAS,MAAM,EAAG;AAElD,qBAAS,OAAO;AAAA,UAClB;AAEA,iBAAO,aAAa;AAAA,QACtB;AASA,iBAAS,aAAa,KAAK,SAAS,SAAS;AAC3C,cAAI,SAAS,IAAI,MAAM,IAAI,OAAO;AAClC,cAAI,SAAS,IAAI,MAAM,IAAI,OAAO;AAElC,cAAI,CAAC,UAAU,CAAC,OAAQ,QAAO;AAE/B,qBAAW,MAAM,QAAQ;AAKvB,gBAAI,OAAO,IAAI,EAAE,GAAG;AAClB,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAQA,iBAAS,YAAY,SAAS,SAAS;AAErC,gBAAM;AAAA;AAAA,YAAiC;AAAA;AACvC,gBAAM;AAAA;AAAA,YAAiC;AAAA;AAEvC,iBACE,OAAO,aAAa,OAAO,YAC3B,OAAO,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA,WAKzB,CAAC,OAAO,eAAe,IAAI,KAC1B,OAAO,eAAe,IAAI,MAAM,OAAO,eAAe,IAAI;AAAA,QAEhE;AAEA,eAAOA;AAAA,MACT,GAAG;AAaH,eAAS,WAAW,KAAK,MAAM;AAE7B,YAAI,IAAI,MAAM,IAAI,IAAI,GAAG;AAEvB,qBAAW,IAAI,QAAQ,MAAM,IAAI;AAAA,QACnC,OAAO;AAEL,cAAI,IAAI,UAAU,kBAAkB,IAAI,MAAM,MAAO;AACrD,eAAK,YAAY,YAAY,IAAI;AACjC,cAAI,UAAU,iBAAiB,IAAI;AAAA,QACrC;AAAA,MACF;AASA,eAAS,mBAAmB,KAAK,gBAAgB,cAAc;AAE7D,YAAI,SAAS;AAEb,eAAO,UAAU,WAAW,cAAc;AACxC,cAAI;AAAA;AAAA,YAAgC;AAAA;AACpC,mBAAS,OAAO;AAChB,qBAAW,KAAK,QAAQ;AAAA,QAC1B;AACA,eAAO;AAAA,MACT;AAYA,eAAS,eAAe,YAAY,IAAI,OAAO,KAAK;AAClD,cAAM;AAAA;AAAA;AAAA;AAAA,UAKD,IAAI,OAAO,eAAe,IAAI,MAAM,MAAM,IAAI,UAC7C,IAAI,OAAO,cAAc,QAAQ,EAAE,IAAI,KACvC,IAAI,OAAO,cAAc,QAAQ,EAAE,IAAI;AAAA;AAE7C,yCAAiC,QAAQ,GAAG;AAC5C,mBAAW,YAAY,QAAQ,KAAK;AACpC,eAAO;AAAA,MACT;AAUA,eAAS,iCAAiC,SAAS,KAAK;AAEtD,cAAM;AAAA;AAAA,UAA4B,QAAQ,aAAa,IAAI;AAAA;AAE3D,eAAQ,UAAU,QAAQ,YAAa;AACrC,cAAI,QAAQ,IAAI,MAAM,IAAI,OAAO;AACjC,cAAI,OAAO;AACT,kBAAM,OAAO,EAAE;AACf,gBAAI,CAAC,MAAM,MAAM;AACf,kBAAI,MAAM,OAAO,OAAO;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAYA,eAAS,WAAW,YAAY,SAAS,OAAO;AAE9C,YAAI,WAAW,YAAY;AACzB,cAAI;AAEF,uBAAW,WAAW,SAAS,KAAK;AAAA,UACtC,SAASC,IAAG;AAEV,uBAAW,aAAa,SAAS,KAAK;AAAA,UACxC;AAAA,QACF,OAAO;AACL,qBAAW,aAAa,SAAS,KAAK;AAAA,QACxC;AAAA,MACF;AAEA,aAAOF;AAAA,IACT,GAAG;AAKH,UAAM,YAAa,4BAAY;AAO7B,eAASG,WAAU,SAAS,YAAY,KAAK;AAC3C,YAAI,IAAI,gBAAgB,YAAY,SAAS,eAAe;AAE1D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,UAAU,kBAAkB,SAAS,UAAU,MAAM,OAAO;AAClE,iBAAO;AAAA,QACT;AAEA,YAAI,mBAAmB,mBAAmB,IAAI,KAAK,OAAQ;AAAA,iBACzD,mBAAmB,mBACnB,IAAI,KAAK,UAAU,SACnB;AAEA;AAAA,YACE;AAAA;AAAA,YACgC;AAAA,YAChC;AAAA,UACF;AAAA,QACF,OAAO;AACL,0BAAgB,SAAS,YAAY,GAAG;AACxC,cAAI,CAAC,2BAA2B,SAAS,GAAG,GAAG;AAE7C,YAAAH,eAAc,KAAK,SAAS,UAAU;AAAA,UACxC;AAAA,QACF;AACA,YAAI,UAAU,iBAAiB,SAAS,UAAU;AAClD,eAAO;AAAA,MACT;AAUA,eAAS,gBAAgB,SAAS,SAAS,KAAK;AAC9C,YAAI,OAAO,QAAQ;AAInB,YAAI,SAAS,GAAsB;AACjC,gBAAM;AAAA;AAAA,YAAiC;AAAA;AACvC,gBAAM;AAAA;AAAA,YAAiC;AAAA;AAEvC,gBAAM,gBAAgB,OAAO;AAC7B,gBAAM,gBAAgB,OAAO;AAC7B,qBAAW,gBAAgB,eAAe;AACxC,gBAAI,gBAAgB,aAAa,MAAM,QAAQ,UAAU,GAAG,GAAG;AAC7D;AAAA,YACF;AACA,gBAAI,OAAO,aAAa,aAAa,IAAI,MAAM,aAAa,OAAO;AACjE,qBAAO,aAAa,aAAa,MAAM,aAAa,KAAK;AAAA,YAC3D;AAAA,UACF;AAEA,mBAASjB,KAAI,cAAc,SAAS,GAAG,KAAKA,IAAGA,MAAK;AAClD,kBAAM,eAAe,cAAcA,EAAC;AAIpC,gBAAI,CAAC,aAAc;AAEnB,gBAAI,CAAC,OAAO,aAAa,aAAa,IAAI,GAAG;AAC3C,kBAAI,gBAAgB,aAAa,MAAM,QAAQ,UAAU,GAAG,GAAG;AAC7D;AAAA,cACF;AACA,qBAAO,gBAAgB,aAAa,IAAI;AAAA,YAC1C;AAAA,UACF;AAEA,cAAI,CAAC,2BAA2B,QAAQ,GAAG,GAAG;AAC5C,2BAAe,QAAQ,QAAQ,GAAG;AAAA,UACpC;AAAA,QACF;AAGA,YAAI,SAAS,KAAmB,SAAS,GAAc;AACrD,cAAI,QAAQ,cAAc,QAAQ,WAAW;AAC3C,oBAAQ,YAAY,QAAQ;AAAA,UAC9B;AAAA,QACF;AAAA,MACF;AAYA,eAAS,eAAe,YAAY,YAAY,KAAK;AACnD,YACE,sBAAsB,oBACtB,sBAAsB,oBACtB,WAAW,SAAS,QACpB;AACA,cAAI,WAAW,WAAW;AAC1B,cAAI,WAAW,WAAW;AAG1B,+BAAqB,YAAY,YAAY,WAAW,GAAG;AAC3D,+BAAqB,YAAY,YAAY,YAAY,GAAG;AAE5D,cAAI,CAAC,WAAW,aAAa,OAAO,GAAG;AACrC,gBAAI,CAAC,gBAAgB,SAAS,YAAY,UAAU,GAAG,GAAG;AACxD,yBAAW,QAAQ;AACnB,yBAAW,gBAAgB,OAAO;AAAA,YACpC;AAAA,UACF,WAAW,aAAa,UAAU;AAChC,gBAAI,CAAC,gBAAgB,SAAS,YAAY,UAAU,GAAG,GAAG;AACxD,yBAAW,aAAa,SAAS,QAAQ;AACzC,yBAAW,QAAQ;AAAA,YACrB;AAAA,UACF;AAAA,QAGF,WACE,sBAAsB,qBACtB,sBAAsB,mBACtB;AACA,+BAAqB,YAAY,YAAY,YAAY,GAAG;AAAA,QAC9D,WACE,sBAAsB,uBACtB,sBAAsB,qBACtB;AACA,cAAI,WAAW,WAAW;AAC1B,cAAI,WAAW,WAAW;AAC1B,cAAI,gBAAgB,SAAS,YAAY,UAAU,GAAG,GAAG;AACvD;AAAA,UACF;AACA,cAAI,aAAa,UAAU;AACzB,uBAAW,QAAQ;AAAA,UACrB;AACA,cACE,WAAW,cACX,WAAW,WAAW,cAAc,UACpC;AACA,uBAAW,WAAW,YAAY;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAQA,eAAS,qBAAqB,YAAY,YAAY,eAAe,KAAK;AAExE,cAAM,eAAe,WAAW,aAAa,GAE3C,eAAe,WAAW,aAAa;AACzC,YAAI,iBAAiB,cAAc;AACjC,gBAAM,eAAe;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,cAAI,CAAC,cAAc;AAGjB,uBAAW,aAAa,IAAI,WAAW,aAAa;AAAA,UACtD;AACA,cAAI,cAAc;AAChB,gBAAI,CAAC,cAAc;AAGjB,yBAAW,aAAa,eAAe,EAAE;AAAA,YAC3C;AAAA,UACF,OAAO;AACL,gBAAI,CAAC,gBAAgB,eAAe,YAAY,UAAU,GAAG,GAAG;AAC9D,yBAAW,gBAAgB,aAAa;AAAA,YAC1C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AASA,eAAS,gBAAgB,MAAM,SAAS,YAAY,KAAK;AACvD,YACE,SAAS,WACT,IAAI,qBACJ,YAAY,SAAS,eACrB;AACA,iBAAO;AAAA,QACT;AACA,eACE,IAAI,UAAU,uBAAuB,MAAM,SAAS,UAAU,MAC9D;AAAA,MAEJ;AAOA,eAAS,2BAA2B,uBAAuB,KAAK;AAC9D,eACE,CAAC,CAAC,IAAI,qBACN,0BAA0B,SAAS,iBACnC,0BAA0B,SAAS;AAAA,MAEvC;AAEA,aAAOoB;AAAA,IACT,GAAG;AAYH,aAAS,iBAAiB,KAAK,SAAS,SAAShB,WAAU;AACzD,UAAI,IAAI,KAAK,OAAO;AAClB,cAAM,UAAU,QAAQ,cAAc,MAAM;AAC5C,cAAM,UAAU,QAAQ,cAAc,MAAM;AAC5C,YAAI,WAAW,SAAS;AACtB,gBAAM,WAAW,kBAAkB,SAAS,SAAS,GAAG;AAExD,iBAAO,QAAQ,IAAI,QAAQ,EAAE,KAAK,MAAM;AACtC,kBAAM,SAAS,OAAO,OAAO,KAAK;AAAA,cAChC,MAAM;AAAA,gBACJ,OAAO;AAAA,gBACP,QAAQ;AAAA,cACV;AAAA,YACF,CAAC;AACD,mBAAOA,UAAS,MAAM;AAAA,UACxB,CAAC;AAAA,QACH;AAAA,MACF;AAEA,aAAOA,UAAS,GAAG;AAAA,IACrB;AAUA,aAAS,kBAAkB,SAAS,SAAS,KAAK;AAChD,UAAI,QAAQ,CAAC;AACb,UAAI,UAAU,CAAC;AACf,UAAI,YAAY,CAAC;AACjB,UAAI,gBAAgB,CAAC;AAGrB,UAAI,oBAAoB,oBAAI,IAAI;AAChC,iBAAW,gBAAgB,QAAQ,UAAU;AAC3C,0BAAkB,IAAI,aAAa,WAAW,YAAY;AAAA,MAC5D;AAGA,iBAAW,kBAAkB,QAAQ,UAAU;AAE7C,YAAI,eAAe,kBAAkB,IAAI,eAAe,SAAS;AACjE,YAAI,eAAe,IAAI,KAAK,eAAe,cAAc;AACzD,YAAI,cAAc,IAAI,KAAK,eAAe,cAAc;AACxD,YAAI,gBAAgB,aAAa;AAC/B,cAAI,cAAc;AAEhB,oBAAQ,KAAK,cAAc;AAAA,UAC7B,OAAO;AAGL,8BAAkB,OAAO,eAAe,SAAS;AACjD,sBAAU,KAAK,cAAc;AAAA,UAC/B;AAAA,QACF,OAAO;AACL,cAAI,IAAI,KAAK,UAAU,UAAU;AAG/B,gBAAI,cAAc;AAChB,sBAAQ,KAAK,cAAc;AAC3B,4BAAc,KAAK,cAAc;AAAA,YACnC;AAAA,UACF,OAAO;AAEL,gBAAI,IAAI,KAAK,aAAa,cAAc,MAAM,OAAO;AACnD,sBAAQ,KAAK,cAAc;AAAA,YAC7B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAIA,oBAAc,KAAK,GAAG,kBAAkB,OAAO,CAAC;AAEhD,UAAI,WAAW,CAAC;AAChB,iBAAW,WAAW,eAAe;AAEnC,YAAI;AAAA;AAAA,UACF,SAAS,YAAY,EAAE,yBAAyB,QAAQ,SAAS,EAC9D;AAAA;AAEL,YAAI,IAAI,UAAU,gBAAgB,MAAM,MAAM,OAAO;AACnD,cACG,UAAU,UAAU,OAAO,QAC3B,SAAS,UAAU,OAAO,KAC3B;AACsC,gBAAIN;AAC1C,gBAAI,UAAU,IAAI,QAAQ,SAAUuB,WAAU;AAC5C,cAAAvB,WAAUuB;AAAA,YACZ,CAAC;AACD,mBAAO,iBAAiB,QAAQ,WAAY;AAC1C,cAAAvB,SAAQ;AAAA,YACV,CAAC;AACD,qBAAS,KAAK,OAAO;AAAA,UACvB;AACA,kBAAQ,YAAY,MAAM;AAC1B,cAAI,UAAU,eAAe,MAAM;AACnC,gBAAM,KAAK,MAAM;AAAA,QACnB;AAAA,MACF;AAIA,iBAAW,kBAAkB,SAAS;AACpC,YAAI,IAAI,UAAU,kBAAkB,cAAc,MAAM,OAAO;AAC7D,kBAAQ,YAAY,cAAc;AAClC,cAAI,UAAU,iBAAiB,cAAc;AAAA,QAC/C;AAAA,MACF;AAEA,UAAI,KAAK,iBAAiB,SAAS;AAAA,QACjC;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAKA,UAAM,qBAAsB,4BAAY;AAQtC,eAASwB,oBAAmB,SAAS,YAAYhB,SAAQ;AACvD,cAAM,EAAE,eAAe,MAAM,IAAI,aAAa,SAAS,UAAU;AAEjE,cAAM,eAAe,cAAcA,OAAM;AACzC,cAAM,aAAa,aAAa,cAAc;AAC9C,YAAI,CAAC,CAAC,aAAa,WAAW,EAAE,SAAS,UAAU,GAAG;AACpD,gBAAM,wCAAwC,UAAU;AAAA,QAC1D;AAEA,eAAO;AAAA,UACL,QAAQ;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,UACR;AAAA,UACA,cAAc,aAAa;AAAA,UAC3B,mBAAmB,aAAa;AAAA,UAChC,cAAc,aAAa;AAAA,UAC3B;AAAA,UACA;AAAA,UACA,QAAQ,aAAa;AAAA,UACrB,yBAAyB,8BAA8B,OAAO;AAAA,UAC9D,WAAW,aAAa;AAAA,UACxB,MAAM,aAAa;AAAA,QACrB;AAAA,MACF;AAQA,eAAS,cAAcA,SAAQ;AAC7B,YAAI,cAAc,OAAO,OAAO,CAAC,GAAGS,SAAQ;AAG5C,eAAO,OAAO,aAAaT,OAAM;AAGjC,oBAAY,YAAY,OAAO;AAAA,UAC7B,CAAC;AAAA,UACDS,UAAS;AAAA,UACTT,QAAO;AAAA,QACT;AAGA,oBAAY,OAAO,OAAO,OAAO,CAAC,GAAGS,UAAS,MAAMT,QAAO,IAAI;AAE/D,eAAO;AAAA,MACT;AAKA,eAAS,eAAe;AACtB,cAAM,SAAS,SAAS,cAAc,KAAK;AAC3C,eAAO,SAAS;AAChB,iBAAS,KAAK,sBAAsB,YAAY,MAAM;AACtD,eAAO;AAAA,MACT;AAMA,eAAS,8BAA8B,SAAS;AAE9C,YAAI,0BAA0B,CAAC;AAC/B,YAAI,MAAM,SAAS;AACnB,YAAI,KAAK,YAAY,UAAU,QAAQ,SAAS,GAAG,GAAG;AACpD,iBAAO,KAAK;AACV,oCAAwB,KAAK,GAAG;AAChC,gBAAI,QAAQ,QAAS;AACrB,kBAAM,IAAI;AAAA,UACZ;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAQA,eAAS,eAAe,MAAM;AAC5B,YAAIJ,YAAW,MAAM,KAAK,KAAK,iBAAiB,MAAM,CAAC;AAEvD,YAAI,KAAK,eAAe,IAAI,GAAG;AAC7B,UAAAA,UAAS,KAAK,IAAI;AAAA,QACpB;AACA,eAAOA;AAAA,MACT;AAaA,eAAS,sBAAsB,OAAO,eAAe,MAAMA,WAAU;AACnE,mBAAW,OAAOA,WAAU;AAE1B,gBAAM;AAAA;AAAA,YAA4B,IAAI,aAAa,IAAI;AAAA;AACvD,cAAI,cAAc,IAAI,EAAE,GAAG;AAEzB,gBAAI,UAAU;AAGd,mBAAO,SAAS;AACd,kBAAI,QAAQ,MAAM,IAAI,OAAO;AAE7B,kBAAI,SAAS,MAAM;AACjB,wBAAQ,oBAAI,IAAI;AAChB,sBAAM,IAAI,SAAS,KAAK;AAAA,cAC1B;AACA,oBAAM,IAAI,EAAE;AAEZ,kBAAI,YAAY,KAAM;AACtB,wBAAU,QAAQ;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAYA,eAAS,aAAa,YAAY,YAAY;AAC5C,cAAM,gBAAgB,eAAe,UAAU;AAC/C,cAAM,gBAAgB,eAAe,UAAU;AAE/C,cAAM,gBAAgB,oBAAoB,eAAe,aAAa;AAGtE,YAAI,QAAQ,oBAAI,IAAI;AACpB,8BAAsB,OAAO,eAAe,YAAY,aAAa;AAGrE,cAAM,UAAU,WAAW,mBAAmB;AAC9C,8BAAsB,OAAO,eAAe,SAAS,aAAa;AAElE,eAAO,EAAE,eAAe,MAAM;AAAA,MAChC;AASA,eAAS,oBAAoB,eAAe,eAAe;AACzD,YAAI,eAAe,oBAAI,IAAI;AAG3B,YAAI,kBAAkB,oBAAI,IAAI;AAC9B,mBAAW,EAAE,IAAI,QAAQ,KAAK,eAAe;AAC3C,cAAI,gBAAgB,IAAI,EAAE,GAAG;AAC3B,yBAAa,IAAI,EAAE;AAAA,UACrB,OAAO;AACL,4BAAgB,IAAI,IAAI,OAAO;AAAA,UACjC;AAAA,QACF;AAEA,YAAI,gBAAgB,oBAAI,IAAI;AAC5B,mBAAW,EAAE,IAAI,QAAQ,KAAK,eAAe;AAC3C,cAAI,cAAc,IAAI,EAAE,GAAG;AACzB,yBAAa,IAAI,EAAE;AAAA,UACrB,WAAW,gBAAgB,IAAI,EAAE,MAAM,SAAS;AAC9C,0BAAc,IAAI,EAAE;AAAA,UACtB;AAAA,QAEF;AAEA,mBAAW,MAAM,cAAc;AAC7B,wBAAc,OAAO,EAAE;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AAEA,aAAOoB;AAAA,IACT,GAAG;AAKH,UAAM,EAAE,kBAAkB,gBAAgB,IAAK,4BAAY;AAEzD,YAAM,uBAAuB,oBAAI,QAAQ;AAOzC,eAASC,kBAAiB,SAAS;AACjC,YAAI,mBAAmB,UAAU;AAC/B,iBAAO,QAAQ;AAAA,QACjB,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAOA,eAASC,iBAAgB,YAAY;AACnC,YAAI,cAAc,MAAM;AACtB,iBAAO,SAAS,cAAc,KAAK;AAAA,QACrC,WAAW,OAAO,eAAe,UAAU;AACzC,iBAAOA,iBAAgB,aAAa,UAAU,CAAC;AAAA,QACjD,WACE,qBAAqB;AAAA;AAAA,UAA4B;AAAA,QAAW,GAC5D;AAEA;AAAA;AAAA,YAA+B;AAAA;AAAA,QACjC,WAAW,sBAAsB,MAAM;AACrC,cAAI,WAAW,YAAY;AAKzB;AAAA;AAAA,cAA2B,IAAI,iBAAiB,UAAU;AAAA;AAAA,UAC5D,OAAO;AAEL,kBAAM,cAAc,SAAS,cAAc,KAAK;AAChD,wBAAY,OAAO,UAAU;AAC7B,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AAGL,gBAAM,cAAc,SAAS,cAAc,KAAK;AAChD,qBAAW,OAAO,CAAC,GAAG,UAAU,GAAG;AACjC,wBAAY,OAAO,GAAG;AAAA,UACxB;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MASA,MAAM,iBAAiB;AAAA;AAAA,QAErB,YAAY,MAAM;AAChB,eAAK,eAAe;AACpB,eAAK;AAAA,UAAyC,KAAK;AACnD,eAAK,kBAAkB,KAAK;AAC5B,eAAK,cAAc,KAAK;AAAA,QAC1B;AAAA;AAAA,QAGA,IAAI,aAAa;AAEf,gBAAM,QAAQ,CAAC;AACf,cAAI,SAAS,KAAK,kBACd,KAAK,gBAAgB,cACrB,KAAK,eAAe;AACxB,iBAAO,UAAU,UAAU,KAAK,aAAa;AAC3C,kBAAM,KAAK,MAAM;AACjB,qBAAS,OAAO;AAAA,UAClB;AACA,iBAAO;AAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,iBAAiB,UAAU;AACzB,iBAAO,KAAK,WAAW;AAAA,YAAO,CAAC,SAAS,SAAS;AAC/C,kBAAI,gBAAgB,SAAS;AAC3B,oBAAI,KAAK,QAAQ,QAAQ,EAAG,SAAQ,KAAK,IAAI;AAC7C,sBAAM,WAAW,KAAK,iBAAiB,QAAQ;AAC/C,yBAASxB,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,0BAAQ,KAAK,SAASA,EAAC,CAAC;AAAA,gBAC1B;AAAA,cACF;AACA,qBAAO;AAAA,YACT;AAAA;AAAA,YAA6B,CAAC;AAAA,UAAE;AAAA,QAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA,aAAa,MAAM,eAAe;AAChC,iBAAO,KAAK,eAAe,aAAa,MAAM,aAAa;AAAA,QAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA,WAAW,MAAM,eAAe;AAE9B,iBAAO,KAAK,eAAe,WAAW,MAAM,aAAa;AAAA,QAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,IAAI,kBAAkB;AACpB,iBAAO,KAAK;AAAA,QACd;AAAA,MACF;AAOA,eAAS,aAAa,YAAY;AAChC,YAAI,SAAS,IAAI,UAAU;AAG3B,YAAI,yBAAyB,WAAW;AAAA,UACtC;AAAA,UACA;AAAA,QACF;AAGA,YACE,uBAAuB,MAAM,UAAU,KACvC,uBAAuB,MAAM,UAAU,KACvC,uBAAuB,MAAM,UAAU,GACvC;AACA,cAAI,UAAU,OAAO,gBAAgB,YAAY,WAAW;AAE5D,cAAI,uBAAuB,MAAM,UAAU,GAAG;AAC5C,iCAAqB,IAAI,OAAO;AAChC,mBAAO;AAAA,UACT,OAAO;AAEL,gBAAI,cAAc,QAAQ;AAC1B,gBAAI,aAAa;AACf,mCAAqB,IAAI,WAAW;AAAA,YACtC;AACA,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AAGL,cAAI,cAAc,OAAO;AAAA,YACvB,qBAAqB,aAAa;AAAA,YAClC;AAAA,UACF;AACA,cAAI;AAAA;AAAA,YACF,YAAY,KAAK,cAAc,UAAU,EACzC;AAAA;AACF,+BAAqB,IAAI,OAAO;AAChC,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO,EAAE,kBAAAuB,mBAAkB,iBAAAC,iBAAgB;AAAA,IAC7C,GAAG;AAKH,WAAO;AAAA,MACL;AAAA,MACA,UAAAT;AAAA,IACF;AAAA,EACF,GAAG;AAUH,WAAS,cAAc,gBAAgB,YAAY,EAAE,WAAAU,YAAW,GAAG,QAAQ,IAAI,CAAC,GAAG;AACjF,cAAU,MAAM,gBAAgB,YAAY;AAAA,MAC1C,GAAG;AAAA,MACH,WAAW,IAAI,0BAA0BA,UAAS;AAAA,IACpD,CAAC;AAAA,EACH;AAUA,WAAS,cAAc,gBAAgB,YAAY,UAAU,CAAC,GAAG;AAC/D,kBAAc,gBAAgB,WAAW,YAAY;AAAA,MACnD,GAAG;AAAA,MACH,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAEA,WAAS,+BAA+B,cAAc,UAAU;AAC9D,WAAO,wBAAwB,gBAC7B,aAAa,0BAA0B,CAAC,YAAY,iCAAiC,cAAc,QAAQ,MAC3G,CAAC,aAAa,QAAQ,wBAAwB;AAAA,EAClD;AAEA,WAAS,iCAAiC,cAAc,UAAU;AAIhE,WAAO,oBAAoB,WAAW,SAAS,aAAa,iBAAiB,aAAa,OAAO,SAAS,OACzG,CAAC,SAAS,aAAa,KAAK,KAAK,aAAa,aAAa,KAAK,SAAS,aAAa,KAAK,CAAC;AAAA,EAC/F;AAEA,WAAS,mCAAmC,MAAM;AAChD,WAAO,KAAK,cAAc,QAAQ,iCAAiC;AAAA,EACrE;AAEA,MAAM,4BAAN,MAAgC;AAAA,IAC9B;AAAA,IAEA,YAAY,EAAE,kBAAkB,IAAI,CAAC,GAAG;AACtC,WAAK,qBAAqB,sBAAsB,MAAM;AAAA,IACxD;AAAA,IAEA,kBAAkB,CAAC,SAAS;AAC1B,aAAO,EAAE,KAAK,MAAM,KAAK,aAAa,sBAAsB,KAAK,SAAS,eAAe,KAAK,EAAE;AAAA,IAClG;AAAA,IAEA,oBAAoB,CAAC,gBAAgB,eAAe;AAClD,UAAI,0BAA0B,SAAS;AACrC,YAAI,CAAC,eAAe,aAAa,sBAAsB,KAAK,KAAK,mBAAmB,gBAAgB,UAAU,GAAG;AAC/G,gBAAM5B,SAAQ,SAAS,8BAA8B;AAAA,YACnD,YAAY;AAAA,YACZ,QAAQ;AAAA,YACR,QAAQ,EAAE,gBAAgB,WAAW;AAAA,UACvC,CAAC;AAED,iBAAO,CAACA,OAAM;AAAA,QAChB,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IAEA,yBAAyB,CAAC,eAAe,QAAQ,iBAAiB;AAChE,YAAMA,SAAQ,SAAS,gCAAgC;AAAA,QACrD,YAAY;AAAA,QACZ;AAAA,QACA,QAAQ,EAAE,eAAe,aAAa;AAAA,MACxC,CAAC;AAED,aAAO,CAACA,OAAM;AAAA,IAChB;AAAA,IAEA,oBAAoB,CAAC,SAAS;AAC5B,aAAO,KAAK,kBAAkB,IAAI;AAAA,IACpC;AAAA,IAEA,mBAAmB,CAAC,gBAAgB,eAAe;AACjD,UAAI,0BAA0B,SAAS;AACrC,iBAAS,uBAAuB;AAAA,UAC9B,QAAQ;AAAA,UACR,QAAQ,EAAE,gBAAgB,WAAW;AAAA,QACvC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,MAAM,wBAAN,cAAoC,cAAc;AAAA,IAChD,OAAO,cAAc,gBAAgB,YAAY;AAC/C,eAAS,4BAA4B;AAAA,QACnC,QAAQ;AAAA,QACR,QAAQ,EAAE,gBAAgB,WAAW;AAAA,MACvC,CAAC;AAED,oBAAc,gBAAgB,YAAY;AAAA,QACxC,WAAW;AAAA,UACT,mBAAmB,CAAC,MAAM,YAAY;AACpC,gBACE,+BAA+B,MAAM,OAAO,KAC1C,mCAAmC,IAAI,MAAM,gBAC/C;AACA,mBAAK,OAAO;AACZ,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,4BAA4BO,WAAU;AAC1C,aAAO,MAAMA,UAAS;AAAA,IACxB;AAAA,EACF;AAEA,MAAM,cAAN,MAAM,aAAY;AAAA,IAChB,OAAO,oBAAoB;AAAA;AAAA,IAE3B,WAAW,aAAa;AACtB,aAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAUO,aAAY,iBAAiB;AAAA,oBAC3B,aAAY,oBAAoB,CAAC,MAAM,aAAY,oBAAoB,CAAC;AAAA;AAAA;AAAA;AAAA,IAI1F;AAAA,IAEA,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU;AAAA,IAEV,cAAc;AACZ,WAAK,oBAAoB,KAAK,wBAAwB;AACtD,WAAK,kBAAkB,KAAK,sBAAsB;AAClD,WAAK,yBAAyB;AAC9B,WAAK,SAAS,CAAC;AAAA,IACjB;AAAA,IAEA,OAAO;AACL,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,UAAU;AACf,aAAK,uBAAuB;AAC5B,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,WAAW,CAAC,KAAK,QAAQ;AAChC,aAAK,SAAS;AACd,aAAK,oBAAoB,MAAM;AAC7B,eAAK,yBAAyB;AAC9B,eAAK,cAAc;AACnB,eAAK,UAAU;AACf,eAAK,SAAS;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,SAAS,OAAO;AACd,WAAK,QAAQ;AACb,WAAK,QAAQ;AAAA,IACf;AAAA;AAAA,IAIA,2BAA2B;AACzB,eAAS,KAAK,aAAa,KAAK,mBAAmB,SAAS,KAAK,UAAU;AAAA,IAC7E;AAAA,IAEA,yBAAyB;AACvB,WAAK,gBAAgB,MAAM,QAAQ;AACnC,WAAK,gBAAgB,MAAM,UAAU;AACrC,eAAS,gBAAgB,aAAa,KAAK,iBAAiB,SAAS,IAAI;AACzE,WAAK,QAAQ;AAAA,IACf;AAAA,IAEA,oBAAoBA,WAAU;AAC5B,WAAK,gBAAgB,MAAM,UAAU;AACrC,iBAAWA,WAAU,aAAY,oBAAoB,GAAG;AAAA,IAC1D;AAAA,IAEA,2BAA2B;AACzB,UAAI,KAAK,gBAAgB,YAAY;AACnC,iBAAS,gBAAgB,YAAY,KAAK,eAAe;AAAA,MAC3D;AAAA,IACF;AAAA,IAEA,iBAAiB;AACf,UAAI,CAAC,KAAK,iBAAiB;AACzB,aAAK,kBAAkB,OAAO,YAAY,KAAK,SAAS,aAAY,iBAAiB;AAAA,MACvF;AAAA,IACF;AAAA,IAEA,gBAAgB;AACd,aAAO,cAAc,KAAK,eAAe;AACzC,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,UAAU,MAAM;AACd,WAAK,SAAS,KAAK,QAAQ,KAAK,OAAO,IAAI,GAAG;AAAA,IAChD;AAAA,IAEA,UAAU;AACR,4BAAsB,MAAM;AAC1B,aAAK,gBAAgB,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,EAAE;AAAA,MAC5D,CAAC;AAAA,IACH;AAAA,IAEA,0BAA0B;AACxB,YAAM,UAAU,SAAS,cAAc,OAAO;AAC9C,cAAQ,OAAO;AACf,cAAQ,cAAc,aAAY;AAClC,YAAMR,YAAW,YAAY;AAC7B,UAAIA,WAAU;AACZ,gBAAQ,QAAQA;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAAA,IAEA,wBAAwB;AACtB,YAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,cAAQ,YAAY;AACpB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,eAAN,cAA2B,SAAS;AAAA,IAClC,qBAAqB,KAAK,SACvB,OAAO,CAAC,YAAY,CAAC,kBAAkB,OAAO,CAAC,EAC/C,IAAI,CAAC,YAAY,oBAAoB,OAAO,CAAC,EAC7C,OAAO,CAAC,QAAQ,YAAY;AAC3B,YAAM,EAAE,UAAU,IAAI;AACtB,YAAM,UACJ,aAAa,SACT,OAAO,SAAS,IAChB;AAAA,QACE,MAAM,YAAY,OAAO;AAAA,QACzB,SAAS,iBAAiB,OAAO;AAAA,QACjC,UAAU,CAAC;AAAA,MACb;AACN,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,SAAS,GAAG;AAAA,UACX,GAAG;AAAA,UACH,UAAU,CAAC,GAAG,QAAQ,UAAU,OAAO;AAAA,QACzC;AAAA,MACF;AAAA,IACF,GAAG,CAAC,CAAC;AAAA,IAEP,IAAI,0BAA0B;AAC5B,aAAO,OAAO,KAAK,KAAK,kBAAkB,EACvC,OAAO,CAAC,cAAc,KAAK,mBAAmB,SAAS,EAAE,OAAO,EAChE,KAAK,EAAE;AAAA,IACZ;AAAA,IAEA,+BAA+B,UAAU;AACvC,aAAO,KAAK,qCAAqC,UAAU,QAAQ;AAAA,IACrE;AAAA,IAEA,mCAAmC,UAAU;AAC3C,aAAO,KAAK,qCAAqC,cAAc,QAAQ;AAAA,IACzE;AAAA,IAEA,qCAAqC,aAAa,UAAU;AAC1D,aAAO,OAAO,KAAK,KAAK,kBAAkB,EACvC,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,IAC7C;AAAA,IAEA,IAAI,sBAAsB;AACxB,aAAO,OAAO,KAAK,KAAK,kBAAkB,EAAE,OAAO,CAAC,QAAQ,cAAc;AACxE,cAAM,EAAE,MAAM,SAAS,UAAAM,UAAS,IAAI,KAAK,mBAAmB,SAAS;AACrE,YAAI,QAAQ,QAAQ,CAAC,SAAS;AAC5B,iBAAO,CAAC,GAAG,QAAQ,GAAGA,SAAQ;AAAA,QAChC,WAAWA,UAAS,SAAS,GAAG;AAC9B,iBAAO,CAAC,GAAG,QAAQ,GAAGA,UAAS,MAAM,CAAC,CAAC;AAAA,QACzC,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,IAEA,aAAaP,OAAM;AACjB,YAAM,UAAU,KAAK,sBAAsBA,KAAI;AAC/C,aAAO,UAAU,QAAQ,aAAa,SAAS,IAAI;AAAA,IACrD;AAAA,IAEA,sBAAsBA,OAAM;AAC1B,aAAO,OAAO,KAAK,KAAK,kBAAkB,EAAE,OAAO,CAAC,QAAQ,cAAc;AACxE,cAAM;AAAA,UACJ,UAAU,CAAC,OAAO;AAAA,QACpB,IAAI,KAAK,mBAAmB,SAAS;AACrC,eAAO,6BAA6B,SAASA,KAAI,IAAI,UAAU;AAAA,MACjE,GAAG,SAAY,MAAS;AAAA,IAC1B;AAAA,EACF;AAEA,WAAS,YAAY,SAAS;AAC5B,QAAI,gBAAgB,OAAO,GAAG;AAC5B,aAAO;AAAA,IACT,WAAW,oBAAoB,OAAO,GAAG;AACvC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,iBAAiB,SAAS;AACjC,WAAO,QAAQ,aAAa,kBAAkB,KAAK;AAAA,EACrD;AAEA,WAAS,gBAAgB,SAAS;AAChC,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW;AAAA,EACpB;AAEA,WAAS,kBAAkB,SAAS;AAClC,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW;AAAA,EACpB;AAEA,WAAS,oBAAoB,SAAS;AACpC,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW,WAAY,WAAW,UAAU,QAAQ,aAAa,KAAK,KAAK;AAAA,EACpF;AAEA,WAAS,6BAA6B,SAASA,OAAM;AACnD,UAAM,UAAU,QAAQ;AACxB,WAAO,WAAW,UAAU,QAAQ,aAAa,MAAM,KAAKA;AAAA,EAC9D;AAEA,WAAS,oBAAoB,SAAS;AACpC,QAAI,QAAQ,aAAa,OAAO,GAAG;AACjC,cAAQ,aAAa,SAAS,EAAE;AAAA,IAClC;AAEA,WAAO;AAAA,EACT;AAEA,MAAM,eAAN,MAAM,sBAAqB,SAAS;AAAA,IAClC,OAAO,eAAe,OAAO,IAAI;AAC/B,aAAO,KAAK,aAAa,kBAAkB,IAAI,CAAC;AAAA,IAClD;AAAA,IAEA,OAAO,YAAY,SAAS;AAC1B,aAAO,KAAK,aAAa,QAAQ,aAAa;AAAA,IAChD;AAAA,IAEA,OAAO,aAAa,EAAE,iBAAiB,MAAM,KAAK,GAAG;AACnD,aAAO,IAAI,KAAK,iBAAiB,MAAM,IAAI,aAAa,IAAI,CAAC;AAAA,IAC/D;AAAA,IAEA,YAAY,iBAAiB,MAAM,cAAc;AAC/C,YAAM,IAAI;AACV,WAAK,kBAAkB;AACvB,WAAK,eAAe;AAAA,IACtB;AAAA,IAEA,QAAQ;AACN,YAAM,gBAAgB,KAAK,QAAQ,UAAU,IAAI;AAEjD,YAAM,iBAAiB,KAAK,QAAQ,iBAAiB,QAAQ;AAC7D,YAAM,uBAAuB,cAAc,iBAAiB,QAAQ;AAEpE,iBAAW,CAACe,QAAO,MAAM,KAAK,eAAe,QAAQ,GAAG;AACtD,cAAMI,SAAQ,qBAAqBJ,MAAK;AACxC,mBAAWgB,WAAUZ,OAAM,gBAAiB,CAAAY,QAAO,WAAW;AAC9D,mBAAWA,WAAU,OAAO,gBAAiB,CAAAZ,OAAM,QAAQY,QAAO,KAAK,EAAE,WAAW;AAAA,MACtF;AAEA,iBAAW,uBAAuB,cAAc,iBAAiB,wBAAwB,GAAG;AAC1F,4BAAoB,QAAQ;AAAA,MAC9B;AAEA,iBAAW,yBAAyB,cAAc,iBAAiB,UAAU,GAAG;AAC9E,8BAAsB,OAAO;AAAA,MAC/B;AAEA,aAAO,IAAI,cAAa,KAAK,iBAAiB,eAAe,KAAK,YAAY;AAAA,IAChF;AAAA,IAEA,IAAI,OAAO;AACT,aAAO,KAAK,gBAAgB,aAAa,MAAM;AAAA,IACjD;AAAA,IAEA,IAAI,MAAM;AACR,aAAO,KAAK,gBAAgB,aAAa,KAAK;AAAA,IAChD;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,aAAa;AAAA,IAC3B;AAAA,IAEA,IAAI,eAAe;AACjB,YAAM,OAAO,KAAK,WAAW,MAAM,KAAK;AACxC,aAAO,UAAU,IAAI;AAAA,IACvB;AAAA,IAEA,IAAI,oBAAoB;AACtB,aAAO,KAAK,WAAW,eAAe;AAAA,IACxC;AAAA,IAEA,IAAI,gBAAgB;AAClB,aAAO,KAAK,qBAAqB;AAAA,IACnC;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,qBAAqB;AAAA,IACnC;AAAA,IAEA,IAAI,cAAc;AAChB,aAAO,KAAK,WAAW,eAAe,KAAK;AAAA,IAC7C;AAAA,IAEA,IAAI,yBAAyB;AAC3B,YAAM,wBAAwB,KAAK,WAAW,iBAAiB,MAAM,UAAU,KAAK,aAAa,aAAa,iBAAiB,MAAM;AACrI,aAAO,yBAAyB,CAAC,OAAO,WAAW,kCAAkC,EAAE;AAAA,IACzF;AAAA,IAEA,IAAI,gBAAgB;AAClB,aAAO,KAAK,WAAW,gBAAgB;AAAA,IACzC;AAAA,IAEA,IAAI,gBAAgB;AAClB,aAAO,KAAK,WAAW,gBAAgB;AAAA,IACzC;AAAA;AAAA,IAIA,WAAW/B,OAAM;AACf,aAAO,KAAK,aAAa,aAAa,SAASA,KAAI,EAAE;AAAA,IACvD;AAAA,EACF;AAEA,MAAM,mBAAN,MAAuB;AAAA,IACrB,yBAAyB;AAAA,IACzB,iBAAiB,QAAQ,QAAQ;AAAA,IAEjC,aAAa,mBAAmB,QAAQ;AACtC,UAAI,qBAAqB,KAAK,4BAA4B,CAAC,KAAK,wBAAwB;AACtF,aAAK,yBAAyB;AAC9B,aAAK,iBAAiB,KAAK,eAAe,KAAK,YAAY;AACzD,gBAAM,SAAS,oBAAoB,MAAM,EAAE;AAAA,QAC7C,CAAC;AAAA,MACH,OAAO;AACL,aAAK,iBAAiB,KAAK,eAAe,KAAK,MAAM;AAAA,MACvD;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,IAAI,2BAA2B;AAC7B,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAEA,MAAM,iBAAiB;AAAA,IACrB,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,qBAAqB,MAAM;AAAA,IAAC;AAAA,IAC5B,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,qBAAqB;AAAA,IACrB,uBAAuB;AAAA,IACvB,SAAS,CAAC;AAAA,EACZ;AAEA,MAAM,eAAe;AAAA,IACnB,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAEA,MAAM,aAAa;AAAA,IACjB,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,WAAW;AAAA,EACb;AAEA,MAAM,mBAAmB;AAAA,IACvB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,EACvB;AAEA,MAAM,YAAY;AAAA,IAChB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAEA,MAAM,QAAN,MAAY;AAAA,IACV,aAAa,KAAK;AAAA;AAAA,IAClB,gBAAgB,CAAC;AAAA,IAEjB,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,IACxB,iBAAiB;AAAA,IACjB,QAAQ,WAAW;AAAA,IACnB,mBAAmB,IAAI,iBAAiB;AAAA,IAExC,YAAYa,WAAUD,WAAU,uBAAuB,UAAU,CAAC,GAAG;AACnE,WAAK,WAAWC;AAChB,WAAK,WAAWD;AAChB,WAAK,wBAAwB,yBAAyB,KAAK;AAE3D,YAAM;AAAA,QACJ;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,MACF,IAAI;AAAA,QACF,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AACA,WAAK,SAAS;AACd,WAAK,iBAAiB;AACtB,WAAK,WAAW;AAChB,WAAK,WAAW;AAChB,WAAK,eAAe;AACpB,WAAK,WAAW;AAChB,WAAK,gBAAgB,KAAK,KAAK,cAAc,IAAI;AACjD,WAAK,sBAAsB;AAC3B,WAAK,aAAa;AAClB,WAAK,gBAAgB;AACrB,WAAK,WAAW,CAAC;AACjB,WAAK,sBAAsB;AAC3B,WAAK,wBAAwB;AAC7B,WAAK,YAAY,aAAa,UAAU,MAAM;AAC9C,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,OAAO;AACT,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,kBAAkB;AACpB,aAAO,KAAK,QAAQ,gCAAgC,KAAK,qBAAqB;AAAA,IAChF;AAAA,IAEA,QAAQ;AACN,UAAI,KAAK,SAAS,WAAW,aAAa;AACxC,aAAK,mBAAmB,aAAa,UAAU;AAC/C,aAAK,QAAQ,WAAW;AACxB,aAAK,QAAQ,aAAa,IAAI;AAC9B,aAAK,SAAS,aAAa,IAAI;AAAA,MACjC;AAAA,IACF;AAAA,IAEA,SAAS;AACP,UAAI,KAAK,SAAS,WAAW,SAAS;AACpC,YAAI,KAAK,SAAS;AAChB,eAAK,QAAQ,OAAO;AAAA,QACtB;AACA,aAAK,aAAa;AAClB,aAAK,QAAQ,WAAW;AAAA,MAC1B;AAAA,IACF;AAAA,IAEA,WAAW;AACT,UAAI,KAAK,SAAS,WAAW,SAAS;AACpC,aAAK,mBAAmB,aAAa,QAAQ;AAC7C,aAAK,QAAQ,eAAe,IAAI;AAChC,aAAK,QAAQ,WAAW;AACxB,aAAK,eAAe;AAEpB,YAAI,CAAC,KAAK,kBAAkB;AAC1B,eAAK,SAAS,eAAe,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS,WAAW,SAAS;AACpC,aAAK,QAAQ,WAAW;AACxB,aAAK,QAAQ,YAAY,IAAI;AAC7B,aAAK,SAAS,eAAe,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,gBAAgB;AACd,UAAI,CAAC,KAAK,kBAAkB,KAAK,eAAe;AAC9C,cAAM,mBAAmB,KAAK,SAAS,SAAS,KAAK,UAAU,OAAO,YAAY,KAAK;AACvF,cAAM,SAAS,0BAA0B,gBAAgB;AACzD,aAAK,QAAQ,OAAO,QAAQ,KAAK,UAAU,KAAK,qBAAqB;AACrE,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,eAAe;AACb,UAAI,KAAK,qBAAqB,GAAG;AAC/B,aAAK,gBAAgB;AAAA,MACvB,WAAW,KAAK,mBAAmB,KAAK,CAAC,KAAK,SAAS;AACrD,aAAK,UAAU,IAAIf,cAAa,MAAM,YAAY,KAAK,KAAK,QAAQ;AACpE,aAAK,QAAQ,QAAQ;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB,UAAI,KAAK,UAAU;AACjB,aAAK,aAAa;AAClB,aAAK,eAAe;AACpB,aAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,eAAe;AACb,WAAK,mBAAmB,aAAa,YAAY;AACjD,WAAK,QAAQ,oBAAoB,IAAI;AAAA,IACvC;AAAA,IAEA,eAAe,WAAW,KAAK,UAAU;AACvC,WAAK,WAAW;AAChB,UAAI,UAAU;AACZ,cAAM,EAAE,WAAW,IAAI;AACvB,YAAI,aAAa,UAAU,GAAG;AAC5B,eAAK,QAAQ,sBAAsB,IAAI;AAAA,QACzC,OAAO;AACL,eAAK,QAAQ,iCAAiC,MAAM,UAAU;AAAA,QAChE;AAAA,MACF;AAAA,IACF;AAAA,IAEA,gBAAgB;AACd,WAAK,mBAAmB,aAAa,UAAU;AAC/C,WAAK,QAAQ,qBAAqB,IAAI;AAAA,IACxC;AAAA,IAEA,eAAe;AACb,UAAI,KAAK,UAAU;AACjB,cAAM,EAAE,YAAY,aAAa,IAAI,KAAK;AAC1C,aAAK,OAAO,YAAY;AACtB,cAAI,KAAK,oBAAqB,MAAK,cAAc;AACjD,cAAI,KAAK,KAAK,cAAe,OAAM,KAAK,KAAK;AAE7C,cAAI,aAAa,UAAU,KAAK,gBAAgB,MAAM;AACpD,kBAAM,WAAW,aAAa,eAAe,YAAY;AACzD,kBAAM,KAAK,mBAAmB,UAAU,KAAK;AAE7C,iBAAK,QAAQ,cAAc,IAAI;AAC/B,iBAAK,SAAS;AAAA,UAChB,OAAO;AACL,kBAAM,KAAK,KAAK,YAAY,aAAa,eAAe,YAAY,GAAG,IAAI;AAC3E,iBAAK,QAAQ,cAAc,IAAI;AAC/B,iBAAK,KAAK;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,YAAM,WAAW,KAAK,KAAK,6BAA6B,KAAK,QAAQ,KAAK,KAAK,qBAAqB;AAEpG,UAAI,aAAa,CAAC,UAAU,KAAK,QAAQ,KAAK,SAAS,UAAU,UAAU,KAAK,QAAQ,CAAC,IAAI;AAC3F,YAAI,KAAK,UAAU,aAAa,SAAS,eAAe;AACtD,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IAEA,uBAAuB;AACrB,UAAI,KAAK,cAAc;AACrB,eAAO,aAAa,eAAe,KAAK,YAAY;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,aAAO,KAAK,kBAAkB,KAAK;AAAA,IACrC;AAAA,IAEA,qBAAqB;AACnB,YAAM,WAAW,KAAK,kBAAkB;AACxC,UAAI,UAAU;AACZ,cAAM,YAAY,KAAK,mBAAmB;AAC1C,aAAK,OAAO,YAAY;AACtB,eAAK,cAAc;AACnB,cAAI,KAAK,eAAe;AACtB,iBAAK,QAAQ,cAAc,IAAI;AAAA,UACjC,OAAO;AACL,gBAAI,KAAK,KAAK,cAAe,OAAM,KAAK,KAAK;AAE7C,kBAAM,KAAK,mBAAmB,UAAU,SAAS;AAEjD,iBAAK,QAAQ,cAAc,IAAI;AAC/B,gBAAI,CAAC,WAAW;AACd,mBAAK,SAAS;AAAA,YAChB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,iBAAiB;AACf,UAAI,KAAK,wBAAwB,CAAC,KAAK,oBAAoB,KAAK,UAAU,YAAY;AACpF,aAAK,QAAQ,wBAAwB,KAAK,sBAAsB;AAAA,UAC9D,QAAQ;AAAA,UACR,UAAU,KAAK;AAAA,UACf,qBAAqB;AAAA,UACrB,YAAY;AAAA,QACd,CAAC;AACD,aAAK,mBAAmB;AAAA,MAC1B;AAAA,IACF;AAAA;AAAA,IAIA,eAAe,SAAS;AACtB,UAAI,KAAK,uBAAuB;AAC9B,gBAAQ,mBAAmB,cAAc,WAAW;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,iBAAiB;AACf,WAAK,aAAa;AAAA,IACpB;AAAA,IAEA,iCAAiC,UAAU,WAAW;AAAA,IAAC;AAAA,IAEvD,MAAM,6BAA6B,SAAS,UAAU;AACpD,YAAM,eAAe,MAAM,SAAS;AACpC,YAAM,EAAE,YAAY,WAAW,IAAI;AACnC,UAAI,gBAAgB,QAAW;AAC7B,aAAK,eAAe;AAAA,UAClB,YAAY,iBAAiB;AAAA,UAC7B;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,aAAK,uBAAuB,SAAS,aAAa,SAAS,WAAW;AACtE,aAAK,eAAe,EAAE,YAAwB,cAAc,WAAW,CAAC;AAAA,MAC1E;AAAA,IACF;AAAA,IAEA,MAAM,0BAA0B,SAAS,UAAU;AACjD,YAAM,eAAe,MAAM,SAAS;AACpC,YAAM,EAAE,YAAY,WAAW,IAAI;AACnC,UAAI,gBAAgB,QAAW;AAC7B,aAAK,eAAe;AAAA,UAClB,YAAY,iBAAiB;AAAA,UAC7B;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,aAAK,eAAe,EAAE,YAAwB,cAAc,WAAW,CAAC;AAAA,MAC1E;AAAA,IACF;AAAA,IAEA,eAAe,UAAUmC,SAAQ;AAC/B,WAAK,eAAe;AAAA,QAClB,YAAY,iBAAiB;AAAA,QAC7B,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB;AAChB,WAAK,cAAc;AAAA,IACrB;AAAA;AAAA,IAIA,gBAAgB;AACd,UAAI,CAAC,KAAK,YAAY,CAAC,KAAK,KAAK,iBAAiB,CAAC,KAAK,KAAK,6BAA6B,IAAI,GAAG;AAC/F,YAAI,KAAK,UAAU,WAAW;AAC5B,eAAK,yBAAyB,KAAK,KAAK,eAAe,KAAK,KAAK,KAAK,YAAY;AAAA,QACpF,OAAO;AACL,eAAK,eAAe,KAAK,KAAK,KAAK,YAAY;AAAA,QACjD;AAEA,aAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAAA,IAEA,2BAA2B;AACzB,YAAM,EAAE,eAAe,IAAI,KAAK;AAChC,UAAI,gBAAgB;AAClB,aAAK,KAAK,iBAAiB,cAAc;AACzC,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,iBAAiB;AACf,YAAM,SAAS,UAAU,KAAK,QAAQ;AACtC,UAAI,UAAU,MAAM;AAClB,aAAK,KAAK,eAAe,MAAM;AAC/B,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA,IAIA,mBAAmB,QAAQ;AACzB,WAAK,cAAc,MAAM,KAAI,oBAAI,KAAK,GAAE,QAAQ;AAAA,IAClD;AAAA,IAEA,mBAAmB;AACjB,aAAO,EAAE,GAAG,KAAK,cAAc;AAAA,IACjC;AAAA;AAAA,IAIA,uBAAuB;AACrB,aAAO,OAAO,KAAK,YAAY;AAAA,IACjC;AAAA,IAEA,qBAAqB;AACnB,UAAI,KAAK,UAAU,WAAW;AAC5B,eAAO,CAAC,KAAK,kBAAkB;AAAA,MACjC,OAAO;AACL,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,IAEA,gBAAgB;AACd,UAAI,CAAC,KAAK,gBAAgB;AACxB,aAAK,KAAK,cAAc,KAAK,QAAQ,EAAE,KAAK,CAAC,aAAa,YAAY,KAAK,oBAAoB,QAAQ,CAAC;AACxG,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,MAAM,OAAOvB,WAAU;AACrB,WAAK,aAAa;AAClB,YAAM,IAAI,QAAQ,CAACN,aAAY;AAC7B,aAAK,QACH,SAAS,oBAAoB,WAAW,WAAW,MAAMA,SAAQ,GAAG,CAAC,IAAI,sBAAsB,MAAMA,SAAQ,CAAC;AAAA,MAClH,CAAC;AACD,YAAMM,UAAS;AACf,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,MAAM,mBAAmB,UAAU,WAAW;AAC5C,YAAM,KAAK,iBAAiB,aAAa,KAAK,KAAK,mBAAmB,QAAQ,GAAG,YAAY;AAC3F,cAAM,KAAK,KAAK,WAAW,UAAU,WAAW,KAAK,YAAY,IAAI;AACrE,aAAK,cAAc;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,IAEA,eAAe;AACb,UAAI,KAAK,OAAO;AACd,6BAAqB,KAAK,KAAK;AAC/B,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,WAAS,aAAa,YAAY;AAChC,WAAO,cAAc,OAAO,aAAa;AAAA,EAC3C;AAEA,MAAM,iBAAN,MAAqB;AAAA,IACnB,cAAc,IAAI,YAAY;AAAA,IAE9B,YAAYwB,UAAS;AACnB,WAAK,UAAUA;AAAA,IACjB;AAAA,IAEA,wBAAwBrB,WAAU,SAAS;AACzC,UAAI,oBAAoBA,WAAU,KAAK,UAAU,YAAY,GAAG;AAC9D,aAAK,UAAU,WAAWA,WAAU,SAAS,yBAAyB,KAAK,GAAG,OAAO;AAAA,MACvF,OAAO;AACL,eAAO,SAAS,OAAOA,UAAS,SAAS;AAAA,MAC3C;AAAA,IACF;AAAA,IAEA,aAAasB,QAAO;AAClB,WAAK,WAAWA,OAAM;AACtB,WAAK,uBAAuB;AAE5B,MAAAA,OAAM,mBAAmB;AACzB,MAAAA,OAAM,aAAa;AAAA,IACrB;AAAA,IAEA,oBAAoBA,QAAO;AACzB,WAAK,YAAY,SAAS,CAAC;AAC3B,UAAIA,OAAM,kBAAkB,KAAKA,OAAM,UAAU,WAAW;AAC1D,aAAK,+BAA+B;AAAA,MACtC,OAAO;AACL,aAAK,gBAAgB;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,sBAAsBA,QAAO;AAC3B,MAAAA,OAAM,aAAa;AAEnB,UAAIA,OAAM,SAAS,YAAY;AAC7B,aAAK,uBAAuBA,OAAM;AAAA,MACpC;AAAA,IACF;AAAA,IAEA,iCAAiCA,QAAO,YAAY;AAClD,cAAQ,YAAY;AAAA,QAClB,KAAK,iBAAiB;AAAA,QACtB,KAAK,iBAAiB;AAAA,QACtB,KAAK,iBAAiB;AACpB,iBAAO,KAAK,OAAO;AAAA,YACjB,QAAQ;AAAA,YACR,SAAS;AAAA,cACP;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AACE,iBAAOA,OAAM,aAAa;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,qBAAqB,QAAQ;AAAA,IAAC;AAAA,IAE9B,eAAe,QAAQ;AACrB,WAAK,YAAY,SAAS,CAAC;AAC3B,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,gBAAgB,QAAQ;AACtB,WAAK,OAAO,MAAM;AAAA,IACpB;AAAA,IAEA,YAAY,QAAQ;AAClB,WAAK,YAAY,SAAS,CAAC;AAC3B,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,cAAc,QAAQ;AAAA,IAAC;AAAA;AAAA,IAIvB,oCAAoCtB,WAAU;AAC5C,aAAO;AAAA,IACT;AAAA;AAAA,IAIA,sBAAsB,iBAAiB;AACrC,WAAK,YAAY,SAAS,CAAC;AAC3B,WAAK,8BAA8B;AAAA,IACrC;AAAA,IAEA,uBAAuB,iBAAiB;AACtC,WAAK,YAAY,SAAS,CAAC;AAC3B,WAAK,oBAAoB;AAAA,IAC3B;AAAA;AAAA,IAIA,iCAAiC;AAC/B,WAAK,0BAA0B,OAAO,WAAW,KAAK,iBAAiB,KAAK,QAAQ,gBAAgB;AAAA,IACtG;AAAA,IAEA,uBAAuB;AACrB,WAAK,YAAY,KAAK;AACtB,UAAI,KAAK,2BAA2B,MAAM;AACxC,eAAO,aAAa,KAAK,uBAAuB;AAChD,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,IAEA,gCAAgC;AAC9B,UAAI,KAAK,0BAA0B,MAAM;AACvC,aAAK,yBAAyB,OAAO,WAAW,KAAK,iBAAiB,KAAK,QAAQ,gBAAgB;AAAA,MACrG;AAAA,IACF;AAAA,IAEA,sBAAsB;AACpB,WAAK,YAAY,KAAK;AACtB,UAAI,KAAK,0BAA0B,MAAM;AACvC,eAAO,aAAa,KAAK,sBAAsB;AAC/C,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,IAEA,kBAAkB,MAAM;AACtB,WAAK,YAAY,KAAK;AAAA,IACxB;AAAA,IAEA,OAAO,QAAQ;AACb,eAAS,gBAAgB,EAAE,QAAQ,OAAO,CAAC;AAE3C,aAAO,SAAS,QAAQ,KAAK,wBAAwB,KAAK,WAAW,SAAS,KAAK,OAAO,SAAS;AAAA,IACrG;AAAA,IAEA,IAAI,YAAY;AACd,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,EACF;AAEA,MAAM,gBAAN,MAAoB;AAAA,IAClB,WAAW;AAAA,IAEX,UAAU;AAAA,IAEV,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,UAAU;AACf,yBAAiB,sBAAsB,KAAK,yBAAyB,KAAK;AAAA,MAC5E;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,aAAK,UAAU;AACf,4BAAoB,sBAAsB,KAAK,yBAAyB,KAAK;AAAA,MAC/E;AAAA,IACF;AAAA,IAEA,0BAA0B,CAAC,WAAW;AACpC,iBAAW,WAAW,KAAK,mBAAmB;AAC5C,gBAAQ,OAAO;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,IAAI,oBAAoB;AACtB,aAAO,CAAC,GAAG,SAAS,iBAAiB,KAAK,QAAQ,CAAC;AAAA,IACrD;AAAA,EACF;AAEA,MAAM,kBAAN,MAAsB;AAAA,IACpB,YAAYqB,UAAS,SAAS;AAC5B,WAAK,UAAUA;AACf,WAAK,UAAU;AACf,WAAK,kBAAkB,IAAI,gBAAgB,MAAM,OAAO;AACxD,WAAK,qBAAqB,IAAI,mBAAmB,MAAM,OAAO;AAAA,IAChE;AAAA,IAEA,QAAQ;AACN,WAAK,gBAAgB,MAAM;AAC3B,WAAK,mBAAmB,MAAM;AAAA,IAChC;AAAA,IAEA,OAAO;AACL,WAAK,gBAAgB,KAAK;AAC1B,WAAK,mBAAmB,KAAK;AAAA,IAC/B;AAAA;AAAA,IAIA,yBAAyB,SAAS,WAAW,QAAQ;AACnD,aAAO,KAAK,gBAAgB,OAAO;AAAA,IACrC;AAAA,IAEA,qBAAqB,SAAS,KAAK/B,QAAO;AACxC,YAAM,QAAQ,KAAK,kBAAkB,OAAO;AAC5C,UAAI,OAAO;AACT,cAAM,SAAS,qBAAqB,SAAS,KAAKA,MAAK;AAAA,MACzD;AAAA,IACF;AAAA;AAAA,IAIA,eAAe,SAASQ,YAAW;AACjC,aACE,QAAQ,QAAQ,aAAa,KAAK,QAClC,KAAK,cAAc,SAASA,UAAS,KACrC,KAAK,gBAAgB,SAASA,UAAS;AAAA,IAE3C;AAAA,IAEA,cAAc,SAASA,YAAW;AAChC,YAAM,QAAQ,KAAK,kBAAkB,SAASA,UAAS;AACvD,UAAI,OAAO;AACT,cAAM,SAAS,cAAc,SAASA,UAAS;AAAA,MACjD;AAAA,IACF;AAAA,IAEA,cAAc,MAAMA,YAAW;AAC7B,YAAM,SAAS,YAAY,MAAMA,UAAS;AAC1C,YAAM,OAAO,KAAK,QAAQ,cAAc,cAAc,yBAAyB;AAC/E,YAAM,eAAe,UAAU,MAAM,WAAW,GAAG;AAEnD,aAAO,KAAK,gBAAgB,MAAMA,UAAS,KAAK,oBAAoB,QAAQ,YAAY;AAAA,IAC1F;AAAA,IAEA,gBAAgB,SAASA,YAAW;AAClC,YAAM,gBACJ,mBAAmB,kBACf,KAAK,QAAQ,wBAAwB,SAASA,UAAS,IACvD,KAAK,QAAQ,qBAAqB,OAAO;AAE/C,UAAI,eAAe;AACjB,cAAM,QAAQ,KAAK,kBAAkB,SAASA,UAAS;AACvD,eAAO,QAAQ,SAAS,QAAQ,QAAQ,aAAa,IAAI;AAAA,MAC3D,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,kBAAkB,SAASA,YAAW;AACpC,YAAM,KAAKA,YAAW,aAAa,kBAAkB,KAAK,QAAQ,aAAa,kBAAkB;AACjG,UAAI,MAAM,MAAM,QAAQ;AACtB,cAAM,QAAQ,KAAK,QAAQ,cAAc,IAAI,EAAE,kBAAkB;AACjE,YAAI,iBAAiB,cAAc;AACjC,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAM,UAAN,MAAc;AAAA,IACZ;AAAA,IACA,wBAAwB,KAAK;AAAA,IAC7B,kBAAkB,CAAC;AAAA,IACnB,UAAU;AAAA,IACV,eAAe;AAAA,IAEf,YAAYG,WAAU;AACpB,WAAK,WAAWA;AAAA,IAClB;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,yBAAiB,YAAY,KAAK,YAAY,KAAK;AACnD,aAAK,eAAe,QAAQ,OAAO,OAAO,oBAAoB;AAC9D,aAAK,UAAU;AACf,aAAK,QAAQ,IAAI,IAAI,OAAO,SAAS,IAAI,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,4BAAoB,YAAY,KAAK,YAAY,KAAK;AACtD,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,KAAKD,WAAU,uBAAuB;AACpC,WAAK,OAAO,QAAQ,WAAWA,WAAU,qBAAqB;AAAA,IAChE;AAAA,IAEA,QAAQA,WAAU,uBAAuB;AACvC,WAAK,OAAO,QAAQ,cAAcA,WAAU,qBAAqB;AAAA,IACnE;AAAA,IAEA,OAAO,QAAQA,WAAU,wBAAwB,KAAK,GAAG;AACvD,UAAI,WAAW,QAAQ,UAAW,GAAE,KAAK;AAEzC,YAAM,QAAQ,EAAE,OAAO,EAAE,uBAAuB,kBAAkB,KAAK,aAAa,EAAE;AACtF,aAAO,KAAK,SAAS,OAAO,IAAIA,UAAS,IAAI;AAC7C,WAAK,WAAWA;AAChB,WAAK,wBAAwB;AAAA,IAC/B;AAAA;AAAA,IAIA,gCAAgC,uBAAuB;AACrD,aAAO,KAAK,gBAAgB,qBAAqB,KAAK,CAAC;AAAA,IACzD;AAAA,IAEA,sBAAsB,gBAAgB;AACpC,YAAM,EAAE,sBAAsB,IAAI;AAClC,YAAM,kBAAkB,KAAK,gBAAgB,qBAAqB;AAClE,WAAK,gBAAgB,qBAAqB,IAAI;AAAA,QAC5C,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAIA,mCAAmC;AACjC,UAAI,CAAC,KAAK,2BAA2B;AACnC,aAAK,4BAA4B,QAAQ,qBAAqB;AAC9D,gBAAQ,oBAAoB;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,uCAAuC;AACrC,UAAI,KAAK,2BAA2B;AAClC,gBAAQ,oBAAoB,KAAK;AACjC,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA;AAAA,IAIA,aAAa,CAACV,WAAU;AACtB,YAAM,EAAE,MAAM,IAAIA,OAAM,SAAS,CAAC;AAClC,WAAK,WAAW,IAAI,IAAI,OAAO,SAAS,IAAI;AAE5C,UAAI,OAAO;AACT,cAAM,EAAE,uBAAuB,iBAAiB,IAAI;AACpD,aAAK,wBAAwB;AAC7B,cAAM,YAAY,mBAAmB,KAAK,eAAe,YAAY;AACrE,aAAK,SAAS,6DAA6D,KAAK,UAAU,uBAAuB,SAAS;AAC1H,aAAK,eAAe;AAAA,MACtB,OAAO;AACL,aAAK;AACL,aAAK,SAAS,4BAA4B,KAAK,QAAQ;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAEA,MAAM,uBAAN,MAA2B;AAAA,IACzB,UAAU;AAAA,IACV,kBAAkB;AAAA,IAElB,YAAYW,WAAU,aAAa;AACjC,WAAK,WAAWA;AAChB,WAAK,cAAc;AAAA,IACrB;AAAA,IAEA,QAAQ;AACN,UAAI,KAAK,QAAS;AAElB,UAAI,KAAK,YAAY,eAAe,WAAW;AAC7C,aAAK,YAAY,iBAAiB,oBAAoB,KAAK,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,MACpF,OAAO;AACL,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,CAAC,KAAK,QAAS;AAEnB,WAAK,YAAY,oBAAoB,cAAc,KAAK,uBAAuB;AAAA,QAC7E,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AACD,WAAK,YAAY,oBAAoB,cAAc,KAAK,0BAA0B;AAAA,QAChF,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAED,WAAK,YAAY,oBAAoB,8BAA8B,KAAK,4BAA4B,IAAI;AACxG,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,UAAU,MAAM;AACd,WAAK,YAAY,iBAAiB,cAAc,KAAK,uBAAuB;AAAA,QAC1E,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AACD,WAAK,YAAY,iBAAiB,cAAc,KAAK,0BAA0B;AAAA,QAC7E,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAED,WAAK,YAAY,iBAAiB,8BAA8B,KAAK,4BAA4B,IAAI;AACrG,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,wBAAwB,CAACX,WAAU;AACjC,UAAI,eAAe,gBAAgB,MAAM,QAAS;AAElD,YAAM,SAASA,OAAM;AACrB,YAAM,SAAS,OAAO,WAAW,OAAO,QAAQ,0CAA0C;AAE1F,UAAI,UAAU,KAAK,gBAAgB,MAAM,GAAG;AAC1C,cAAM,OAAO;AACb,cAAMU,YAAW,mBAAmB,IAAI;AAExC,YAAI,KAAK,SAAS,6BAA6B,MAAMA,SAAQ,GAAG;AAC9D,eAAK,kBAAkB;AAEvB,gBAAM,eAAe,IAAIf;AAAA,YACvB;AAAA,YACA,YAAY;AAAA,YACZe;AAAA,YACA,IAAI,gBAAgB;AAAA,YACpB;AAAA,UACF;AAEA,uBAAa,aAAa,WAAW;AAErC,wBAAc,SAASA,WAAU,cAAc,KAAK,SAAS;AAAA,QAC/D;AAAA,MACF;AAAA,IACF;AAAA,IAEA,2BAA2B,CAACV,WAAU;AACpC,UAAIA,OAAM,WAAW,KAAK,gBAAiB,MAAK,uBAAuB;AAAA,IACzE;AAAA,IAEA,yBAAyB,MAAM;AAC7B,oBAAc,MAAM;AACpB,WAAK,kBAAkB;AAAA,IACzB;AAAA,IAEA,6BAA6B,CAACA,WAAU;AACtC,UAAIA,OAAM,OAAO,YAAY,UAAUA,OAAM,OAAO,aAAa,WAAW,OAAO;AACjF,cAAM,SAAS,cAAc,IAAIA,OAAM,OAAO,GAAG;AAEjD,YAAI,QAAQ;AAEV,UAAAA,OAAM,OAAO,eAAe;AAAA,QAC9B;AAEA,sBAAc,MAAM;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,eAAe,SAAS;AACtB,YAAM,OAAO,QAAQ;AAErB,cAAQ,QAAQ,eAAe,IAAI;AAEnC,YAAM,aAAa,KAAK,QAAQ,aAAa;AAC7C,YAAM,mBAAmB,KAAK,aAAa,kBAAkB,KAAK,YAAY,aAAa,QAAQ,KAAK,YAAY;AAEpH,UAAI,oBAAoB,qBAAqB,QAAQ;AACnD,gBAAQ,QAAQ,aAAa,IAAI;AAAA,MACnC;AAAA,IACF;AAAA;AAAA,IAIA,+BAA+B;AAAA,IAAC;AAAA,IAEhC,eAAe,cAAc;AAAA,IAAC;AAAA,IAE9B,eAAe,cAAc;AAAA,IAAC;AAAA,IAE9B,gBAAgB,cAAc;AAAA,IAAC;AAAA,IAE/B,iCAAiC,cAAc,eAAe;AAAA,IAAC;AAAA,IAE/D,0BAA0B,cAAc,eAAe;AAAA,IAAC;AAAA,IAExD,IAAI,YAAY;AACd,aAAO,OAAO,eAAe,2BAA2B,CAAC,KAAK;AAAA,IAChE;AAAA,IAEA,gBAAgB,MAAM;AACpB,YAAMiC,QAAO,KAAK,aAAa,MAAM;AAErC,UAAI,CAACA,MAAM,QAAO;AAElB,UAAI,gBAAgB,IAAI,EAAG,QAAO;AAClC,UAAI,kBAAkB,IAAI,EAAG,QAAO;AACpC,UAAI,YAAY,IAAI,EAAG,QAAO;AAC9B,UAAI,YAAY,IAAI,EAAG,QAAO;AAC9B,UAAI,eAAe,IAAI,EAAG,QAAO;AAEjC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,kBAAkB,CAAC,SAAS;AAChC,WAAO,KAAK,WAAW,SAAS,SAAS,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,SAAS,KAAK,QAAQ,KAAK,KAAK,aAAa,QAAQ;AAAA,EAC/H;AAEA,MAAM,oBAAoB,CAAC,SAAS;AAClC,WAAQ,KAAK,WAAW,KAAK,WAAW,SAAS,SAAS,WAAW,SAAS,SAAS,UAAW,KAAK,KAAK,WAAW,GAAG;AAAA,EAC5H;AAEA,MAAM,cAAc,CAAC,SAAS;AAC5B,QAAI,KAAK,aAAa,qBAAqB,MAAM,QAAS,QAAO;AACjE,QAAI,KAAK,aAAa,YAAY,MAAM,QAAS,QAAO;AAExD,UAAM,sBAAsB,uBAAuB,MAAM,uBAAuB;AAChF,QAAI,uBAAuB,oBAAoB,aAAa,qBAAqB,MAAM,QAAS,QAAO;AAEvG,WAAO;AAAA,EACT;AAEA,MAAM,cAAc,CAAC,SAAS;AAC5B,UAAM,cAAc,KAAK,aAAa,mBAAmB;AACzD,QAAI,eAAe,YAAY,YAAY,MAAM,MAAO,QAAO;AAE/D,QAAI,MAAM,IAAI,EAAG,QAAO;AACxB,QAAI,KAAK,aAAa,oBAAoB,EAAG,QAAO;AACpD,QAAI,KAAK,aAAa,mBAAmB,EAAG,QAAO;AAEnD,WAAO;AAAA,EACT;AAEA,MAAM,QAAQ,CAAC,SAAS;AACtB,WAAO,KAAK,aAAa,aAAa,KAAK,KAAK,aAAa,eAAe,KAAK,KAAK,aAAa,cAAc,KAAK,KAAK,aAAa,aAAa;AAAA,EACvJ;AAEA,MAAM,iBAAiB,CAAC,SAAS;AAC/B,UAAMjC,SAAQ,SAAS,yBAAyB,EAAE,QAAQ,MAAM,YAAY,KAAK,CAAC;AAClF,WAAOA,OAAM;AAAA,EACf;AAEA,MAAM,YAAN,MAAgB;AAAA,IACd,YAAYW,WAAU;AACpB,WAAK,WAAWA;AAAA,IAClB;AAAA,IAEA,aAAaD,WAAU,UAAU,CAAC,GAAG;AACnC,UAAI,KAAK,SAAS,iCAAiCA,WAAU,QAAQ,MAAM,GAAG;AAC5E,aAAK,SAAS,wBAAwBA,WAAU,OAAO;AAAA,MACzD;AAAA,IACF;AAAA,IAEA,WAAW,WAAW,uBAAuB,UAAU,CAAC,GAAG;AACzD,WAAK,KAAK;AACV,WAAK,eAAe,IAAI,MAAM,MAAM,UAAU,SAAS,GAAG,uBAAuB;AAAA,QAC/E,UAAU,KAAK;AAAA,QACf,GAAG;AAAA,MACL,CAAC;AACD,WAAK,aAAa,MAAM;AAAA,IAC1B;AAAA,IAEA,WAAW,MAAMF,YAAW;AAC1B,WAAK,KAAK;AACV,WAAK,iBAAiB,IAAI,eAAe,MAAM,MAAMA,YAAW,IAAI;AAEpE,WAAK,eAAe,MAAM;AAAA,IAC5B;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,gBAAgB;AACvB,aAAK,eAAe,KAAK;AACzB,eAAO,KAAK;AAAA,MACd;AAEA,UAAI,KAAK,cAAc;AACrB,aAAK,aAAa,OAAO;AACzB,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,OAAO;AACT,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO,KAAK,KAAK,SAAS;AAAA,IAC5B;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA;AAAA,IAIA,sBAAsB,gBAAgB;AAEpC,UAAI,OAAO,KAAK,QAAQ,0BAA0B,YAAY;AAC5D,aAAK,QAAQ,sBAAsB,cAAc;AAAA,MACnD;AAAA,IACF;AAAA,IAEA,MAAM,oCAAoC,gBAAgB,eAAe;AACvE,UAAI,kBAAkB,KAAK,gBAAgB;AACzC,cAAM,eAAe,MAAM,cAAc;AACzC,YAAI,cAAc;AAChB,gBAAM,sBAAsB,eAAe;AAC3C,cAAI,CAAC,qBAAqB;AACxB,iBAAK,KAAK,mBAAmB;AAAA,UAC/B;AAEA,gBAAM,EAAE,YAAY,WAAW,IAAI;AACnC,gBAAM,SAAS,KAAK,4BAA4B,gBAAgB,aAAa;AAC7E,gBAAM,eAAe;AAAA,YACnB;AAAA,YACA;AAAA,YACA,UAAU,EAAE,YAAY,cAAc,WAAW;AAAA,UACnD;AACA,eAAK,aAAa,cAAc,UAAU,YAAY;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,iCAAiC,gBAAgB,eAAe;AACpE,YAAM,eAAe,MAAM,cAAc;AAEzC,UAAI,cAAc;AAChB,cAAM,WAAW,aAAa,eAAe,YAAY;AACzD,YAAI,cAAc,aAAa;AAC7B,gBAAM,KAAK,KAAK,YAAY,UAAU,KAAK,YAAY;AAAA,QACzD,OAAO;AACL,gBAAM,KAAK,KAAK,WAAW,UAAU,OAAO,MAAM,KAAK,YAAY;AAAA,QACrE;AACA,YAAI,SAAS,kBAAkB,YAAY;AACzC,eAAK,KAAK,YAAY;AAAA,QACxB;AACA,aAAK,KAAK,mBAAmB;AAAA,MAC/B;AAAA,IACF;AAAA,IAEA,sBAAsB,gBAAgB,OAAO;AAC3C,cAAQ,MAAM,KAAK;AAAA,IACrB;AAAA,IAEA,uBAAuB,gBAAgB;AAErC,UAAI,OAAO,KAAK,QAAQ,2BAA2B,YAAY;AAC7D,aAAK,QAAQ,uBAAuB,cAAc;AAAA,MACpD;AAAA,IACF;AAAA;AAAA,IAIA,oCAAoCE,WAAU;AAE5C,UAAI,OAAO,KAAK,QAAQ,wCAAwC,YAAY;AAC1E,eAAO,KAAK,QAAQ,oCAAoCA,SAAQ;AAAA,MAClE;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAIA,aAAasB,QAAO;AAClB,WAAK,SAAS,aAAaA,MAAK;AAAA,IAClC;AAAA,IAEA,eAAeA,QAAO;AACpB,WAAK,SAAS,eAAeA,MAAK;AAClC,aAAO,KAAK;AAAA,IACd;AAAA;AAAA;AAAA,IAIA,6BAA6BtB,WAAU,QAAQ;AAC7C,aAAO;AAAA,IACT;AAAA;AAAA,IAIA,IAAI,WAAW;AACb,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,wBAAwB;AAC1B,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,4BAA4B,gBAAgB,eAAe;AACzD,YAAM,EAAE,WAAAF,YAAW,YAAY,IAAI;AACnC,aAAO,eAAeA,YAAW,WAAW,KAAK,KAAK,kBAAkB,aAAa;AAAA,IACvF;AAAA,IAEA,kBAAkB,eAAe;AAC/B,YAAM,uBAAuB,cAAc,cAAc,cAAc,SAAS,SAAS,KAAK,UAAU;AACxG,aAAO,uBAAuB,YAAY;AAAA,IAC5C;AAAA,EACF;AAEA,MAAM,YAAY;AAAA,IAChB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAEA,MAAM,eAAN,MAAmB;AAAA,IACjB,QAAQ,UAAU;AAAA,IAClB,UAAU;AAAA,IAEV,YAAYG,WAAU;AACpB,WAAK,WAAWA;AAAA,IAClB;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,YAAI,KAAK,SAAS,UAAU,SAAS;AACnC,eAAK,QAAQ,UAAU;AAAA,QACzB;AACA,iBAAS,iBAAiB,oBAAoB,KAAK,qBAAqB,KAAK;AAC7E,yBAAiB,YAAY,KAAK,gBAAgB,KAAK;AACvD,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,iBAAS,oBAAoB,oBAAoB,KAAK,qBAAqB,KAAK;AAChF,4BAAoB,YAAY,KAAK,gBAAgB,KAAK;AAC1D,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,sBAAsB,MAAM;AAC1B,YAAM,EAAE,WAAW,IAAI;AACvB,UAAI,cAAc,eAAe;AAC/B,aAAK,kBAAkB;AAAA,MACzB,WAAW,cAAc,YAAY;AACnC,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,UAAI,KAAK,SAAS,UAAU,SAAS;AACnC,aAAK,QAAQ,UAAU;AACvB,aAAK,SAAS,sBAAsB;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,iBAAiB;AACf,WAAK,kBAAkB;AACvB,UAAI,KAAK,SAAS,UAAU,aAAa;AACvC,aAAK,QAAQ,UAAU;AACvB,aAAK,SAAS,WAAW;AAAA,MAC3B;AAAA,IACF;AAAA,IAEA,iBAAiB,MAAM;AACrB,WAAK,SAAS,eAAe;AAAA,IAC/B;AAAA,IAEA,IAAI,aAAa;AACf,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAEA,MAAM,iBAAN,MAAqB;AAAA,IACnB,UAAU;AAAA,IAEV,YAAYA,WAAU;AACpB,WAAK,WAAWA;AAAA,IAClB;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,yBAAiB,UAAU,KAAK,UAAU,KAAK;AAC/C,aAAK,SAAS;AACd,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,4BAAoB,UAAU,KAAK,UAAU,KAAK;AAClD,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,WAAW,MAAM;AACf,WAAK,eAAe,EAAE,GAAG,OAAO,aAAa,GAAG,OAAO,YAAY,CAAC;AAAA,IACtE;AAAA;AAAA,IAIA,eAAe,UAAU;AACvB,WAAK,SAAS,sBAAsB,QAAQ;AAAA,IAC9C;AAAA,EACF;AAEA,MAAM,wBAAN,MAA4B;AAAA,IAC1B,OAAO,EAAE,SAAS,GAAG;AACnB,YAAM,4BAA4B,MAAM,kCAAkC,QAAQ,GAAG,MAAM;AACzF,kCAA0B,UAAU,MAAM;AACxC,6BAAmB,MAAM;AACvB,qBAAS,gBAAgB,YAAY,QAAQ;AAAA,UAC/C,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA;AAAA,IAIA,cAAc,yBAAyB,qBAAqB;AAC1D,0BAAoB,YAAY,wBAAwB,UAAU,IAAI,CAAC;AAAA,IACzE;AAAA,IAEA,eAAe;AAAA,IAAC;AAAA,EAClB;AAEA,WAAS,kCAAkC,UAAU;AACnD,UAAM,8BAA8B,0BAA0B,SAAS,eAAe;AACtF,UAAM,sBAAsB,CAAC;AAC7B,eAAW,8BAA8B,6BAA6B;AACpE,YAAM,EAAE,GAAG,IAAI;AAEf,iBAAW,iBAAiB,SAAS,iBAAiB,cAAc,GAAG;AACrE,cAAM,kBAAkB,wBAAwB,cAAc,gBAAgB,SAAS,EAAE;AAEzF,YAAI,iBAAiB;AACnB,8BAAoB,EAAE,IAAI,CAAC,4BAA4B,eAAe;AAAA,QACxE;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,iBAAe,0BAA0B,UAAUJ,WAAU;AAC3D,UAAM,cAAc,0BAA0B,KAAK,CAAC;AACpD,UAAM,eAAe,SAAS,iBAAiB,cAAc;AAC7D,UAAM,uBAAuB,mCAAmC,YAAY;AAC5E,QAAI,kBAAkB;AAEtB,QAAI,sBAAsB;AACxB,UAAI,qBAAqB,IAAI;AAC3B,0BAAkB,qBAAqB;AAAA,MACzC,OAAO;AACL,0BAAkB;AAAA,MACpB;AAEA,2BAAqB,KAAK;AAAA,IAC5B;AAEA,IAAAA,UAAS;AACT,UAAM,YAAY;AAElB,UAAM,qBAAqB,SAAS,iBAAiB,QAAQ,SAAS,iBAAiB,SAAS;AAEhG,QAAI,sBAAsB,iBAAiB;AACzC,YAAM,qBAAqB,SAAS,eAAe,eAAe;AAElE,UAAI,mBAAmB,kBAAkB,GAAG;AAC1C,2BAAmB,MAAM;AAAA,MAC3B;AACA,UAAI,sBAAsB,mBAAmB,MAAM,aAAa;AAC9D,2BAAmB,gBAAgB,IAAI;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,iBAAe,mBAAmBA,WAAU;AAC1C,UAAM,CAAC,2BAA2B,wBAAwB,IAAI,MAAM,OAAOA,WAAU,MAAM,SAAS,aAAa;AAEjH,UAAM,iBAAiB,6BAA6B,0BAA0B;AAE9E,QAAI,gBAAgB;AAClB,YAAM,iBAAiB,SAAS,eAAe,cAAc;AAE7D,UAAI,mBAAmB,cAAc,KAAK,kBAAkB,0BAA0B;AACpF,uBAAe,MAAM;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,WAAS,mCAAmC,0BAA0B;AACpE,eAAW,iBAAiB,0BAA0B;AACpD,YAAM,uBAAuB,0BAA0B,cAAc,gBAAgB,OAAO;AAE5F,UAAI,qBAAsB,QAAO;AAAA,IACnC;AAEA,WAAO;AAAA,EACT;AAEA,MAAM,iBAAN,MAAqB;AAAA,IACnB,UAAU,oBAAI,IAAI;AAAA,IAClB,WAAW;AAAA,IAEX,YAAYI,WAAU;AACpB,WAAK,WAAWA;AAAA,IAClB;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,UAAU;AAClB,aAAK,WAAW;AAChB,yBAAiB,+BAA+B,KAAK,sBAAsB,KAAK;AAAA,MAClF;AAAA,IACF;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,UAAU;AACjB,aAAK,WAAW;AAChB,4BAAoB,+BAA+B,KAAK,sBAAsB,KAAK;AAAA,MACrF;AAAA,IACF;AAAA,IAEA,oBAAoB,QAAQ;AAC1B,UAAI,CAAC,KAAK,wBAAwB,MAAM,GAAG;AACzC,aAAK,QAAQ,IAAI,MAAM;AACvB,eAAO,iBAAiB,WAAW,KAAK,qBAAqB,KAAK;AAAA,MACpE;AAAA,IACF;AAAA,IAEA,uBAAuB,QAAQ;AAC7B,UAAI,KAAK,wBAAwB,MAAM,GAAG;AACxC,aAAK,QAAQ,OAAO,MAAM;AAC1B,eAAO,oBAAoB,WAAW,KAAK,qBAAqB,KAAK;AAAA,MACvE;AAAA,IACF;AAAA,IAEA,wBAAwB,QAAQ;AAC9B,aAAO,KAAK,QAAQ,IAAI,MAAM;AAAA,IAChC;AAAA,IAEA,uBAAuB,CAACX,WAAU;AAChC,YAAM,WAAW,uBAAuBA,MAAK;AAC7C,UAAI,YAAY,sBAAsB,QAAQ,GAAG;AAC/C,QAAAA,OAAM,eAAe;AACrB,aAAK,uBAAuB,QAAQ;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,sBAAsB,CAACA,WAAU;AAC/B,UAAI,KAAK,YAAY,OAAOA,OAAM,QAAQ,UAAU;AAClD,aAAK,mBAAmBA,OAAM,IAAI;AAAA,MACpC;AAAA,IACF;AAAA,IAEA,MAAM,uBAAuB,UAAU;AACrC,YAAM,OAAO,MAAM,SAAS;AAC5B,UAAI,MAAM;AACR,aAAK,mBAAmB,IAAI;AAAA,MAC9B;AAAA,IACF;AAAA,IAEA,mBAAmB,MAAM;AACvB,WAAK,SAAS,0BAA0B,cAAc,KAAK,IAAI,CAAC;AAAA,IAClE;AAAA,EACF;AAEA,WAAS,uBAAuBA,QAAO;AACrC,UAAM,gBAAgBA,OAAM,QAAQ;AACpC,QAAI,yBAAyB,eAAe;AAC1C,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,sBAAsB,UAAU;AACvC,UAAM,cAAc,SAAS,eAAe;AAC5C,WAAO,YAAY,WAAW,cAAc,WAAW;AAAA,EACzD;AAEA,MAAM,gBAAN,cAA4B,SAAS;AAAA,IACnC,OAAO,cAAc,gBAAgB,YAAY;AAC/C,YAAM,EAAE,iBAAiB,KAAK,IAAI;AAElC,sBAAgB,aAAa,YAAY,IAAI;AAAA,IAC/C;AAAA,IAEA,MAAM,SAAS;AACb,WAAK,mBAAmB;AACxB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,qBAAqB;AACnB,YAAM,EAAE,iBAAiB,KAAK,IAAI;AAClC,sBAAgB,aAAa,KAAK,SAAS,IAAI;AAC/C,WAAK,cAAc,KAAK,gBAAgB,KAAK,UAAU;AAAA,IACzD;AAAA,IAEA,yBAAyB;AACvB,iBAAW,sBAAsB,KAAK,gBAAgB;AACpD,cAAM,aAAa,mBAAmB;AACtC,YAAI,YAAY;AACd,gBAAM,UAAU,sBAAsB,kBAAkB;AACxD,qBAAW,aAAa,SAAS,kBAAkB;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,KAAK,YAAY,aAAa;AAAA,IACvC;AAAA,IAEA,IAAI,iBAAiB;AACnB,aAAO,SAAS,gBAAgB,iBAAiB,QAAQ;AAAA,IAC3D;AAAA,EACF;AAEA,MAAM,eAAN,cAA2B,SAAS;AAAA,IAClC,OAAO,cAAc,gBAAgB,YAAY;AAC/C,UAAI,SAAS,QAAQ,sBAAsB,iBAAiB;AAC1D,iBAAS,KAAK,YAAY,UAAU;AAAA,MACtC,OAAO;AACL,iBAAS,gBAAgB,YAAY,UAAU;AAAA,MACjD;AAAA,IACF;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO,KAAK,YAAY,eAAe,KAAK;AAAA,IAC9C;AAAA,IAEA,IAAI,eAAe;AACjB,UAAI,CAAC,KAAK,YAAY,aAAa;AACjC,eAAO;AAAA,UACL,QAAQ;AAAA,QACV;AAAA,MACF;AAEA,UAAI,CAAC,KAAK,6BAA6B;AACrC,eAAO;AAAA,UACL,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,kBAAkB;AACtB,WAAK,aAAa;AAClB,YAAM,KAAK,UAAU;AAAA,IACvB;AAAA,IAEA,MAAM,SAAS;AACb,UAAI,KAAK,YAAY;AACnB,cAAM,KAAK,YAAY;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB,YAAM,gBAAgB;AACtB,UAAI,CAAC,KAAK,WAAW;AACnB,aAAK,+BAA+B;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,IAAI,sBAAsB;AACxB,aAAO,KAAK,gBAAgB;AAAA,IAC9B;AAAA,IAEA,IAAI,kBAAkB;AACpB,aAAO,KAAK,YAAY;AAAA,IAC1B;AAAA,IAEA,IAAI,aAAa;AACf,aAAO,KAAK,YAAY;AAAA,IAC1B;AAAA,IAEA,eAAe;AACb,YAAM,EAAE,gBAAgB,IAAI,KAAK;AACjC,YAAM,EAAE,KAAK,KAAK,IAAI,KAAK;AAE3B,UAAI,MAAM;AACR,wBAAgB,aAAa,QAAQ,IAAI;AAAA,MAC3C,OAAO;AACL,wBAAgB,gBAAgB,MAAM;AAAA,MACxC;AACA,UAAI,KAAK;AACP,wBAAgB,aAAa,OAAO,GAAG;AAAA,MACzC,OAAO;AACL,wBAAgB,gBAAgB,KAAK;AAAA,MACvC;AAAA,IACF;AAAA,IAEA,MAAM,YAAY;AAChB,YAAM,qBAAqB,KAAK,yBAAyB;AACzD,YAAM,wBAAwB,KAAK,8BAA8B;AACjE,WAAK,0BAA0B;AAE/B,YAAM;AACN,YAAM;AAEN,UAAI,KAAK,YAAY;AACnB,aAAK,sCAAsC;AAAA,MAC7C;AAAA,IACF;AAAA,IAEA,MAAM,cAAc;AAClB,YAAM,KAAK,4BAA4B,YAAY;AACjD,aAAK,gBAAgB;AACrB,cAAM,KAAK,cAAc;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,8BAA8B;AAChC,aAAO,KAAK,oBAAoB,2BAA2B,KAAK,gBAAgB;AAAA,IAClF;AAAA,IAEA,MAAM,gCAAgC;AACpC,YAAM,kBAAkB,CAAC;AAEzB,iBAAW,WAAW,KAAK,2BAA2B;AACpD,wBAAgB,KAAK,YAAY,OAAO,CAAC;AAEzC,iBAAS,KAAK,YAAY,OAAO;AAAA,MACnC;AAEA,YAAM,QAAQ,IAAI,eAAe;AAAA,IACnC;AAAA,IAEA,4BAA4B;AAC1B,iBAAW,WAAW,KAAK,uBAAuB;AAChD,iBAAS,KAAK,YAAY,sBAAsB,OAAO,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IAEA,wCAAwC;AACtC,iBAAW,WAAW,KAAK,iCAAiC;AAC1D,iBAAS,KAAK,YAAY,OAAO;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,MAAM,2BAA2B;AAC/B,YAAM,kBAAkB,CAAC,GAAG,KAAK,0BAA0B;AAE3D,iBAAW,WAAW,KAAK,gCAAgC;AACzD,YAAI,CAAC,KAAK,8BAA8B,SAAS,eAAe,GAAG;AACjE,mBAAS,KAAK,YAAY,OAAO;AAAA,QACnC;AAAA,MACF;AAEA,iBAAW,WAAW,iBAAiB;AACrC,iBAAS,KAAK,YAAY,OAAO;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,8BAA8B,SAAS,aAAa;AAClD,iBAAW,CAACa,QAAO,UAAU,KAAK,YAAY,QAAQ,GAAG;AAEvD,YAAI,QAAQ,WAAW,SAAS;AAC9B,cAAI,WAAW,WAAW,SAAS;AACjC;AAAA,UACF;AACA,cAAI,QAAQ,aAAa,WAAW,WAAW;AAC7C,wBAAY,OAAOA,QAAO,CAAC;AAC3B,mBAAO;AAAA,UACT;AAAA,QACF;AAGA,YAAI,WAAW,YAAY,OAAO,GAAG;AACnC,sBAAY,OAAOA,QAAO,CAAC;AAC3B,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,uCAAuC;AACrC,iBAAW,WAAW,KAAK,gCAAgC;AACzD,iBAAS,KAAK,YAAY,OAAO;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,iCAAiC;AAC/B,iBAAW,WAAW,KAAK,4BAA4B;AACrD,iBAAS,KAAK,YAAY,OAAO;AAAA,MACnC;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB,eAAS,UAAU,KAAK,UAAU;AAClC,WAAK,uBAAuB;AAC5B,WAAK,8BAA8B;AAAA,IACrC;AAAA,IAEA,yBAAyB;AACvB,iBAAW,mBAAmB,KAAK,WAAW,iBAAiB,UAAU,GAAG;AAC1E,wBAAgB,OAAO;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,gCAAgC;AAC9B,iBAAW,sBAAsB,KAAK,uBAAuB;AAC3D,cAAM,yBAAyB,sBAAsB,kBAAkB;AACvE,2BAAmB,YAAY,sBAAsB;AAAA,MACvD;AAAA,IACF;AAAA,IAEA,MAAM,gBAAgB;AACpB,YAAM,KAAK,cAAc,KAAK,gBAAgB,KAAK,UAAU;AAAA,IAC/D;AAAA,IAEA,IAAI,kCAAkC;AACpC,aAAO,KAAK,0BAA0B,OAAO,CAAC,YAAY;AACxD,eAAO,QAAQ,aAAa,kBAAkB,MAAM;AAAA,MACtD,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,4BAA4B;AAC9B,aAAO,KAAK,oBAAoB,mCAAmC,KAAK,eAAe;AAAA,IACzF;AAAA,IAEA,IAAI,4BAA4B;AAC9B,aAAO,KAAK,gBAAgB,mCAAmC,KAAK,mBAAmB;AAAA,IACzF;AAAA,IAEA,IAAI,wBAAwB;AAC1B,aAAO,KAAK,gBAAgB,+BAA+B,KAAK,mBAAmB;AAAA,IACrF;AAAA,IAEA,IAAI,iCAAiC;AACnC,aAAO,KAAK,oBAAoB;AAAA,IAClC;AAAA,IAEA,IAAI,6BAA6B;AAC/B,aAAO,KAAK,gBAAgB;AAAA,IAC9B;AAAA,IAEA,IAAI,wBAAwB;AAC1B,aAAO,KAAK,WAAW,iBAAiB,QAAQ;AAAA,IAClD;AAAA,EACF;AAEA,MAAM,uBAAN,cAAmC,aAAa;AAAA,IAC9C,OAAO,cAAc,gBAAgB,YAAY;AAC/C,oBAAc,gBAAgB,YAAY;AAAA,QACxC,WAAW;AAAA,UACT,mBAAmB,CAAC,MAAM,YAAY;AACpC,gBACE,+BAA+B,MAAM,OAAO,KAC1C,CAAC,mCAAmC,IAAI,GAC1C;AACA,mBAAK,OAAO;AACZ,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AAED,eAAS,eAAe,EAAE,QAAQ,EAAE,gBAAgB,WAAW,EAAE,CAAC;AAAA,IACpE;AAAA,IAEA,MAAM,4BAA4BN,WAAU;AAC1C,aAAO,MAAMA,UAAS;AAAA,IACxB;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,kBAAkB;AACpB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAM,gBAAN,cAA4B,SAAS;AAAA,IACnC,YAAY,MAAM;AAChB,YAAM,MAAM,UAAU;AAAA,IACxB;AAAA,IAEA,IAAI,YAAY;AACd,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAEA,MAAM,WAAN,cAAuB,KAAK;AAAA,IAC1B,gBAAgB,IAAI,cAAc,EAAE;AAAA,IACpC,uBAAuB,IAAI,IAAI,SAAS,IAAI;AAAA,IAC5C,gBAAgB;AAAA,IAEhB,mBAAmB,aAAa;AAC9B,aAAO,KAAK,SAAS,0BAA0B,YAAY;AAAA,IAC7D;AAAA,IAEA,WAAW,UAAU,YAAY,OAAO,aAAa,MAAMyB,QAAO;AAChE,YAAM,kBAAkB,KAAK,cAAcA,MAAK,MAAMA,QAAO,SAAS,UAAU,KAAK,SAAS,mBAAmB;AACjH,YAAM,gBAAgB,kBAAkB,uBAAuB;AAE/D,YAAM,WAAW,IAAI,cAAc,KAAK,UAAU,UAAU,WAAW,UAAU;AAEjF,UAAI,CAAC,SAAS,cAAc;AAC1B,aAAK,gBAAgB;AAAA,MACvB,OAAO;AACL,QAAAA,QAAO,cAAc;AAAA,MACvB;AAEA,aAAO,KAAK,OAAO,QAAQ;AAAA,IAC7B;AAAA,IAEA,YAAY,UAAUA,QAAO;AAC3B,MAAAA,QAAO,cAAc;AACrB,YAAM,WAAW,IAAI,cAAc,KAAK,UAAU,UAAU,KAAK;AACjE,aAAO,KAAK,OAAO,QAAQ;AAAA,IAC7B;AAAA,IAEA,qBAAqB;AACnB,WAAK,cAAc,MAAM;AAAA,IAC3B;AAAA,IAEA,MAAM,cAAc,WAAW,KAAK,UAAU;AAC5C,UAAI,SAAS,aAAa;AACxB,aAAK,SAAS,sBAAsB;AACpC,cAAM,EAAE,sBAAsBtB,UAAS,IAAI;AAC3C,cAAM,kBAAkB;AACxB,cAAM,iBAAiB,SAAS,MAAM;AACtC,aAAK,cAAc,IAAIA,WAAU,cAAc;AAC/C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,6BAA6BA,WAAU;AACrC,aAAO,KAAK,cAAc,IAAIA,SAAQ;AAAA,IACxC;AAAA,IAEA,cAAcsB,QAAO;AACnB,aAAO,CAACA,UAAU,KAAK,qBAAqB,aAAaA,OAAM,SAAS,YAAYA,OAAM,WAAW;AAAA,IACvG;AAAA,IAEA,6BAA6BA,QAAO;AAClC,aAAO,KAAK,cAAcA,MAAK,MAAMA,QAAO,SAAS,UAAU,KAAK,SAAS,mBAAmB;AAAA,IAClG;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,aAAa,YAAY,KAAK,OAAO;AAAA,IAC9C;AAAA,EACF;AAEA,MAAM,YAAN,MAAgB;AAAA,IACd,WAAW;AAAA,IAEX,YAAYrB,WAAU,eAAe;AACnC,WAAK,WAAWA;AAChB,WAAK,gBAAgB;AAAA,IACvB;AAAA,IAEA,QAAQ;AACN,UAAI,SAAS,eAAe,WAAW;AACrC,iBAAS,iBAAiB,oBAAoB,KAAK,WAAW;AAAA,MAChE,OAAO;AACL,aAAK,0BAA0B,SAAS,IAAI;AAAA,MAC9C;AAAA,IACF;AAAA,IAEA,OAAO;AACL,eAAS,oBAAoB,oBAAoB,KAAK,WAAW;AAAA,IACnE;AAAA,IAEA,0BAA0B,SAAS;AACjC,iBAAW,QAAQ,QAAQ,iBAAiB,KAAK,QAAQ,GAAG;AAC1D,YAAI,KAAK,SAAS,kBAAkB,IAAI,GAAG;AACzC,eAAK,WAAW,IAAI;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,MAAM;AACrB,YAAMD,YAAW,IAAI,IAAI,KAAK,IAAI;AAElC,UAAI,KAAK,cAAc,IAAIA,SAAQ,GAAG;AACpC;AAAA,MACF;AAEA,YAAM,eAAe,IAAIf,cAAa,MAAM,YAAY,KAAKe,WAAU,IAAI,gBAAgB,GAAG,IAAI;AAClG,YAAM,aAAa,QAAQ;AAAA,IAC7B;AAAA;AAAA,IAIA,eAAe,cAAc;AAC3B,mBAAa,QAAQ,eAAe,IAAI;AAAA,IAC1C;AAAA,IAEA,MAAM,6BAA6B,cAAc,eAAe;AAC9D,UAAI;AACF,cAAM,eAAe,MAAM,cAAc;AACzC,cAAM,WAAW,aAAa,eAAe,YAAY;AAEzD,aAAK,cAAc,IAAI,aAAa,KAAK,QAAQ;AAAA,MACnD,SAASN,KAAG;AAAA,MAEZ;AAAA,IACF;AAAA,IAEA,eAAe,cAAc;AAAA,IAAC;AAAA,IAE9B,eAAe,cAAc;AAAA,IAAC;AAAA,IAE9B,gBAAgB,cAAc;AAAA,IAAC;AAAA,IAE/B,iCAAiC,cAAc,eAAe;AAAA,IAAC;AAAA,IAE/D,0BAA0B,cAAc,eAAe;AAAA,IAAC;AAAA,IAExD,cAAc,MAAM;AAClB,WAAK,0BAA0B,SAAS,IAAI;AAAA,IAC9C;AAAA,EACF;AAEA,MAAM,QAAN,MAAY;AAAA,IACV,YAAY2B,UAAS;AACnB,WAAK,UAAUA;AAAA,IACjB;AAAA,IAEA,QAAQ;AACN,WAAK,QAAQ,WAAW;AAAA,IAC1B;AAAA,IAEA,oBAAoB;AAClB,WAAK,iBAAiB,EAAE;AAAA,IAC1B;AAAA,IAEA,sBAAsB;AACpB,WAAK,iBAAiB,UAAU;AAAA,IAClC;AAAA,IAEA,wBAAwB;AACtB,WAAK,iBAAiB,YAAY;AAAA,IACpC;AAAA,IAEA,iBAAiB,OAAO;AACtB,qBAAe,uBAAuB,KAAK;AAAA,IAC7C;AAAA,EACF;AAEA,MAAM,UAAN,MAAc;AAAA,IACZ,YAAY,IAAI,UAAU,IAAI;AAAA,IAC9B,UAAU,IAAI,QAAQ,IAAI;AAAA,IAC1B,OAAO,IAAI,SAAS,MAAM,SAAS,eAAe;AAAA,IAClD,UAAU,IAAI,eAAe,IAAI;AAAA,IAEjC,eAAe,IAAI,aAAa,IAAI;AAAA,IACpC,gBAAgB,IAAI,cAAc;AAAA,IAClC,uBAAuB,IAAI,qBAAqB,MAAM,QAAQ;AAAA,IAC9D,oBAAoB,IAAI,kBAAkB,MAAM,MAAM;AAAA,IACtD,qBAAqB,IAAI,mBAAmB,MAAM,QAAQ;AAAA,IAC1D,iBAAiB,IAAI,eAAe,IAAI;AAAA,IACxC,iBAAiB,IAAI,eAAe,IAAI;AAAA,IACxC,wBAAwB,IAAI,sBAAsB,MAAM,SAAS,eAAe;AAAA,IAChF,kBAAkB,IAAI,gBAAgB,MAAM,SAAS,eAAe;AAAA,IACpE,wBAAwB,IAAI,sBAAsB;AAAA,IAClD,QAAQ,IAAI,MAAM,IAAI;AAAA,IAEtB,UAAU;AAAA,IACV,UAAU;AAAA,IACV,6BAA6B;AAAA,IAE7B,YAAYG,iBAAgB;AAC1B,WAAK,iBAAiBA;AACtB,WAAK,YAAY,IAAI,UAAU,MAAM,KAAK,KAAK,aAAa;AAC5D,WAAK,mBAAmB,KAAK;AAC7B,WAAK,4BAA4B,KAAK;AAAA,IACxC;AAAA,IAEA,QAAQ;AACN,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,aAAa,MAAM;AACxB,aAAK,cAAc,MAAM;AACzB,aAAK,qBAAqB,MAAM;AAChC,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,MACjB;AAAA,IACF;AAAA,IAEA,UAAU;AACR,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,OAAO;AACL,UAAI,KAAK,SAAS;AAChB,aAAK,aAAa,KAAK;AACvB,aAAK,cAAc,KAAK;AACxB,aAAK,qBAAqB,KAAK;AAC/B,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,KAAK;AACpB,aAAK,UAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,gBAAgB,SAAS;AACvB,WAAK,UAAU;AAAA,IACjB;AAAA,IAEA,MAAMxB,WAAU,UAAU,CAAC,GAAG;AAC5B,YAAM,eAAe,QAAQ,QAAQ,SAAS,eAAe,QAAQ,KAAK,IAAI;AAE9E,UAAI,wBAAwB,cAAc;AACxC,cAAM,SAAS,QAAQ,UAAU,eAAe,YAAY;AAE5D,qBAAa,SAAS,kCAAkC,cAAc,MAAM;AAC5E,qBAAa,MAAMA,UAAS,SAAS;AAAA,MACvC,OAAO;AACL,aAAK,UAAU,aAAa,UAAUA,SAAQ,GAAG,OAAO;AAAA,MAC1D;AAAA,IACF;AAAA,IAEA,QAAQ,KAAK,UAAU,CAAC,GAAG;AACzB,gBAAU,OAAO,YAAY,WAAW,EAAE,WAAW,QAAQ,IAAI;AAEjE,YAAM,EAAE,QAAQ,WAAW,OAAO,IAAI;AACtC,YAAM,kBAAkB,aAAa,KAAK,eAAe,IAAI,SAAS;AACtE,YAAM,eAAe,QAAQ,SAAS;AACtC,UAAI,CAAC,mBAAmB,CAAC,KAAK,UAAU,gBAAgB,cAAc;AACpE,aAAK,MAAM,KAAK,EAAE,QAAQ,WAAW,qBAAqB,OAAO,SAAS,EAAE,QAAQ,OAAO,EAAE,CAAC;AAAA,MAChG;AAAA,IACF;AAAA,IAEA,oBAAoB,QAAQ;AAC1B,WAAK,eAAe,oBAAoB,MAAM;AAAA,IAChD;AAAA,IAEA,uBAAuB,QAAQ;AAC7B,WAAK,eAAe,uBAAuB,MAAM;AAAA,IACnD;AAAA,IAEA,oBAAoB,SAAS;AAC3B,WAAK,sBAAsB,OAAO,cAAc,KAAK,OAAO,CAAC;AAAA,IAC/D;AAAA,IAEA,aAAa;AACX,WAAK,KAAK,mBAAmB;AAAA,IAC/B;AAAA,IAEA,oBAAoB,OAAO;AACzB,cAAQ;AAAA,QACN;AAAA,MACF;AAEA,WAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,IAAI,iBAAiB,OAAO;AAC1B,aAAO,MAAM,mBAAmB;AAAA,IAClC;AAAA,IAEA,IAAI,mBAAmB;AACrB,aAAO,OAAO,MAAM;AAAA,IACtB;AAAA,IAEA,IAAI,MAAM,OAAO;AACf,aAAO,MAAM,UAAU;AAAA,IACzB;AAAA,IAEA,IAAI,QAAQ;AACV,aAAO,OAAO,MAAM;AAAA,IACtB;AAAA,IAEA,IAAI,SAAS,OAAO;AAClB,aAAO,MAAM,OAAO;AAAA,IACtB;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,OAAO,MAAM;AAAA,IACtB;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,wBAAwB;AAC1B,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,4BAA4B;AAC9B,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,IAAI,0BAA0B,OAAO;AACnC,WAAK,UAAU,SAAS,KAAK,iBAAiB,KAAK,IAAI,GAAG,KAAK;AAC/D,WAAK,6BAA6B;AAAA,IACpC;AAAA;AAAA,IAIA,kBAAkB,SAAS;AACzB,YAAM,WAAW,QAAQ,aAAa,mBAAmB;AACzD,YAAM,WAAW,QAAQ,aAAa,mBAAmB;AACzD,YAAM,cAAc,QAAQ,aAAa,kBAAkB;AAC3D,YAAM,QAAQ,eAAe,SAC3B,OACA,SAAS,eAAe,WAAW,KAAK,uBAAuB,SAAS,6BAA6B;AAEvG,UAAI,YAAY,YAAY,iBAAiB,cAAc;AACzD,eAAO;AAAA,MACT,OAAO;AACL,cAAMA,YAAW,IAAI,IAAI,QAAQ,IAAI;AAErC,eAAO,KAAK,qBAAqB,OAAO,KAAK,oBAAoBA,WAAU,KAAK,SAAS,YAAY;AAAA,MACvG;AAAA,IACF;AAAA;AAAA,IAIA,6DAA6DA,WAAU,uBAAuB,WAAW;AACvG,UAAI,KAAK,SAAS;AAChB,aAAK,UAAU,WAAWA,WAAU,uBAAuB;AAAA,UACzD,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,aAAK,QAAQ,gBAAgB;AAAA,UAC3B,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA,4BAA4BA,WAAU;AACpC,WAAK,QAAQ,QAAQA,SAAQ;AAC7B,WAAK,KAAK,uBAAuBA;AACjC,WAAK,KAAK,cAAc;AAAA,IAC1B;AAAA;AAAA,IAIA,sBAAsB,UAAU;AAC9B,WAAK,QAAQ,sBAAsB,EAAE,gBAAgB,SAAS,CAAC;AAAA,IACjE;AAAA;AAAA,IAIA,6BAA6B,MAAMA,WAAU;AAC3C,aAAO,KAAK,qBAAqB,IAAI,KAAK,oBAAoBA,WAAU,KAAK,SAAS,YAAY;AAAA,IACpG;AAAA,IAEA,8BAA8B;AAAA,IAAC;AAAA;AAAA,IAI/B,6BAA6B,MAAMA,WAAU;AAC3C,aACE,KAAK,qBAAqB,IAAI,KAC9B,oBAAoBA,WAAU,KAAK,SAAS,YAAY,KACxD,KAAK,UAAU,oCAAoCA,SAAQ;AAAA,IAE/D;AAAA;AAAA,IAIA,yBAAyB,MAAMA,WAAUV,QAAO;AAC9C,aACE,KAAK,qBAAqB,IAAI,KAC9B,oBAAoBU,WAAU,KAAK,SAAS,YAAY,KACxD,KAAK,yCAAyC,MAAMA,WAAUV,MAAK;AAAA,IAEvE;AAAA,IAEA,uBAAuB,MAAMU,WAAU;AACrC,YAAM,SAAS,KAAK,iBAAiB,IAAI;AACzC,YAAM,wBAAwB,KAAK,aAAa,mBAAmB;AAEnE,WAAK,MAAMA,UAAS,MAAM,EAAE,QAAQ,sBAAsB,CAAC;AAAA,IAC7D;AAAA;AAAA,IAIA,iCAAiCA,WAAU,QAAQ;AACjD,aAAO,KAAK,kCAAkCA,SAAQ;AAAA,IACxD;AAAA,IAEA,wBAAwBA,WAAU,SAAS;AACzC,wCAAkCA,SAAQ;AAC1C,WAAK,QAAQ,wBAAwBA,WAAU,OAAO;AAAA,IACxD;AAAA;AAAA,IAIA,aAAasB,QAAO;AAClB,UAAI,CAACA,OAAM,uBAAuB;AAChC,mBAAW,SAAS,eAAe;AACnC,aAAK,KAAK,mBAAmBA,OAAM,SAAS;AAAA,MAC9C;AACA,wCAAkCA,OAAM,QAAQ;AAChD,WAAK,uCAAuCA,OAAM,UAAUA,OAAM,MAAM;AAAA,IAC1E;AAAA,IAEA,eAAeA,QAAO;AACpB,WAAK,KAAK,qBAAqB;AAC/B,qBAAe,SAAS,eAAe;AACvC,WAAK,+BAA+BA,OAAM,iBAAiB,CAAC;AAAA,IAC9D;AAAA;AAAA,IAIA,eAAe,MAAMxB,YAAW;AAC9B,YAAM,SAAS,YAAY,MAAMA,UAAS;AAE1C,aACE,KAAK,wBAAwB,MAAMA,UAAS,KAC5C,oBAAoB,UAAU,MAAM,GAAG,KAAK,SAAS,YAAY;AAAA,IAErE;AAAA,IAEA,cAAc,MAAMA,YAAW;AAC7B,WAAK,UAAU,WAAW,MAAMA,UAAS;AAAA,IAC3C;AAAA;AAAA,IAIA,wBAAwB;AACtB,WAAK,KAAK,uBAAuB,KAAK;AACtC,WAAK,+BAA+B;AAAA,IACtC;AAAA,IAEA,aAAa;AACX,WAAK,QAAQ,iCAAiC;AAAA,IAChD;AAAA,IAEA,iBAAiB;AACf,WAAK,QAAQ,qCAAqC;AAAA,IACpD;AAAA;AAAA,IAIA,0BAA0B,SAAS;AACjC,WAAK,oBAAoB,OAAO;AAAA,IAClC;AAAA;AAAA,IAIA,wBAAwB;AACtB,WAAK,uCAAuC;AAAA,IAC9C;AAAA,IAEA,sBAAsB,EAAE,QAAQ,GAAG,SAAS;AAC1C,YAAMR,SAAQ,KAAK,8BAA8B,SAAS,OAAO;AACjE,YAAM;AAAA,QACJ;AAAA,QACA,QAAQ,EAAE,OAAO;AAAA,MACnB,IAAIA;AAEJ,UAAI,KAAK,KAAK,YAAY,QAAQ;AAChC,aAAK,KAAK,SAAS,gBAAgB;AAAA,MACrC;AAEA,aAAO,CAAC;AAAA,IACV;AAAA,IAEA,qBAAqB,WAAW,YAAY,cAAc;AACxD,WAAK,KAAK,uBAAuB,KAAK,QAAQ;AAC9C,WAAK,6BAA6B,YAAY;AAAA,IAChD;AAAA,IAEA,0BAA0B,SAAS;AACjC,WAAK,UAAU,0BAA0B,OAAO;AAAA,IAClD;AAAA,IAEA,gBAAgB,QAAQ;AACtB,WAAK,QAAQ,gBAAgB,MAAM;AAAA,IACrC;AAAA;AAAA,IAIA,YAAY,OAAO;AACjB,WAAK,gCAAgC,KAAK;AAAA,IAC5C;AAAA,IAEA,cAAc,eAAe,OAAO;AAClC,WAAK,kCAAkC,eAAe,KAAK;AAAA,IAC7D;AAAA;AAAA,IAIA,yCAAyC,MAAMU,WAAU,IAAI;AAC3D,YAAMV,SAAQ,KAAK,6CAA6C,MAAMU,WAAU,EAAE;AAClF,aAAO,CAACV,OAAM;AAAA,IAChB;AAAA,IAEA,kCAAkCU,WAAU;AAC1C,YAAMV,SAAQ,KAAK,wCAAwCU,SAAQ;AACnE,aAAO,CAACV,OAAM;AAAA,IAChB;AAAA,IAEA,6CAA6C,MAAMU,WAAUV,QAAO;AAClE,aAAO,SAAS,eAAe;AAAA,QAC7B,QAAQ;AAAA,QACR,QAAQ,EAAE,KAAKU,UAAS,MAAM,eAAeV,OAAM;AAAA,QACnD,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IAEA,wCAAwCU,WAAU;AAChD,aAAO,SAAS,sBAAsB;AAAA,QACpC,QAAQ,EAAE,KAAKA,UAAS,KAAK;AAAA,QAC7B,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IAEA,uCAAuCA,WAAU,QAAQ;AACvD,aAAO,SAAS,eAAe,EAAE,QAAQ,EAAE,KAAKA,UAAS,MAAM,OAAO,EAAE,CAAC;AAAA,IAC3E;AAAA,IAEA,yCAAyC;AACvC,aAAO,SAAS,oBAAoB;AAAA,IACtC;AAAA,IAEA,8BAA8B,SAAS,SAAS;AAC9C,aAAO,SAAS,uBAAuB;AAAA,QACrC,QAAQ,EAAE,SAAS,GAAG,QAAQ;AAAA,QAC9B,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IAEA,6BAA6B,cAAc;AACzC,aAAO,SAAS,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AAAA,IAC9D;AAAA,IAEA,+BAA+B,SAAS,CAAC,GAAG;AAC1C,aAAO,SAAS,cAAc;AAAA,QAC5B,QAAQ,EAAE,KAAK,KAAK,SAAS,MAAM,OAAO;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA,IAEA,gCAAgC,OAAO;AACrC,aAAO,SAAS,oBAAoB,EAAE,QAAQ,MAAM,CAAC;AAAA,IACvD;AAAA,IAEA,kCAAkC,eAAe,OAAO;AACtD,aAAO,SAAS,sBAAsB;AAAA,QACpC,QAAQ,EAAE,cAAc;AAAA,QACxB,QAAQ;AAAA,QACR,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA;AAAA,IAIA,wBAAwB,MAAMF,YAAW;AACvC,UAAI,OAAO,MAAM,QAAQ,OAAO;AAC9B,eAAO;AAAA,MACT,OAAO;AACL,cAAM,yBAAyBA,aAAY,KAAK,qBAAqBA,UAAS,IAAI;AAElF,YAAI,OAAO,MAAM,QAAQ,SAAS;AAChC,iBAAO,0BAA0B,KAAK,QAAQ,qBAAqB,KAAK;AAAA,QAC1E,OAAO;AACL,iBAAO,0BAA0B,KAAK,qBAAqB,IAAI;AAAA,QACjE;AAAA,MACF;AAAA,IACF;AAAA,IAEA,qBAAqB,SAAS;AAC5B,YAAM,YAAY,uBAAuB,SAAS,cAAc;AAChE,YAAM,cAAc,uBAAuB,SAAS,aAAa;AAGjE,UAAI,OAAO,MAAM,WAAW,aAAa;AAEvC,YAAI,WAAW;AACb,iBAAO,UAAU,aAAa,YAAY,KAAK;AAAA,QACjD,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AAEL,YAAI,WAAW;AACb,iBAAO,UAAU,aAAa,YAAY,KAAK;AAAA,QACjD,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA;AAAA,IAIA,iBAAiB,MAAM;AACrB,aAAO,eAAe,IAAI,KAAK;AAAA,IACjC;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AAaA,WAAS,kCAAkC,KAAK;AAC9C,WAAO,iBAAiB,KAAK,qCAAqC;AAAA,EACpE;AAEA,MAAM,wCAAwC;AAAA,IAC5C,aAAa;AAAA,MACX,MAAM;AACJ,eAAO,KAAK,SAAS;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,MAAM,UAAU,IAAI,QAAQ,cAAc;AAC1C,MAAM,EAAE,OAAO,WAAAZ,WAAU,IAAI;AAO7B,WAASC,SAAQ;AACf,YAAQ,MAAM;AAAA,EAChB;AAOA,WAAS,gBAAgB,SAAS;AAChC,YAAQ,gBAAgB,OAAO;AAAA,EACjC;AAgBA,WAAS,MAAMa,WAAU,SAAS;AAChC,YAAQ,MAAMA,WAAU,OAAO;AAAA,EACjC;AAOA,WAAS,oBAAoB,QAAQ;AACnC,YAAQ,oBAAoB,MAAM;AAAA,EACpC;AAOA,WAAS,uBAAuB,QAAQ;AACtC,YAAQ,uBAAuB,MAAM;AAAA,EACvC;AAQA,WAAS,oBAAoB,SAAS;AACpC,YAAQ,oBAAoB,OAAO;AAAA,EACrC;AAYA,WAAS,oBAAoB,OAAO;AAClC,YAAQ;AAAA,MACN;AAAA,IACF;AACA,WAAO,MAAM,mBAAmB;AAAA,EAClC;AAEA,WAAS,iBAAiB,eAAe;AACvC,YAAQ;AAAA,MACN;AAAA,IACF;AACA,WAAO,MAAM,UAAU;AAAA,EACzB;AAEA,WAAS,YAAY,MAAM;AACzB,YAAQ;AAAA,MACN;AAAA,IACF;AACA,WAAO,MAAM,OAAO;AAAA,EACtB;AAWA,WAAS,kBAAkB,aAAa,SAAS;AAC/C,yBAAqB,cAAc,aAAa,OAAO;AAAA,EACzD;AAWA,WAAS,wBAAwB,cAAc,UAAU;AACvD,0BAAsB,cAAc,cAAc,QAAQ;AAAA,EAC5D;AAEA,MAAIyB,SAAqB,uBAAO,OAAO;AAAA,IACrC,WAAW;AAAA,IACX,WAAWvC;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,OAAOC;AAAA,IACP;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;AAED,MAAM,yBAAN,cAAqC,MAAM;AAAA,EAAC;AAE5C,MAAM,kBAAN,MAAsB;AAAA,IACpB,sBAAsB,CAAC,mBAAmB,QAAQ,QAAQ;AAAA,IAC1D,uBAAuB;AAAA,IACvB,uBAAuB,MAAM;AAAA,IAAC;AAAA,IAC9B,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,qBAAqB,oBAAI,IAAI;AAAA,IAC7B,oBAAoB;AAAA,IACpB,SAAS;AAAA,IAET,YAAY,SAAS;AACnB,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,IACrE;AAAA;AAAA,IAIA,UAAU;AACR,UAAI,CAAC,KAAK,YAAY;AACpB,aAAK,aAAa;AAClB,YAAI,KAAK,gBAAgB,kBAAkB,MAAM;AAC/C,eAAK,mBAAmB,MAAM;AAAA,QAChC,OAAO;AACL,eAAK,eAAe;AAAA,QACtB;AACA,aAAK,sBAAsB,MAAM;AACjC,aAAK,gBAAgB,MAAM;AAC3B,aAAK,mBAAmB,MAAM;AAAA,MAChC;AAAA,IACF;AAAA,IAEA,aAAa;AACX,UAAI,KAAK,YAAY;AACnB,aAAK,aAAa;AAClB,aAAK,mBAAmB,KAAK;AAC7B,aAAK,sBAAsB,KAAK;AAChC,aAAK,gBAAgB,KAAK;AAC1B,aAAK,mBAAmB,KAAK;AAE7B,YAAI,CAAC,KAAK,QAAQ,aAAa,SAAS,GAAG;AACzC,eAAK,sBAAsB,OAAO;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,kBAAkB;AAChB,UAAI,KAAK,UAAU;AACjB,aAAK,sBAAsB,OAAO;AAAA,MACpC,WAAW,KAAK,gBAAgB,kBAAkB,OAAO;AACvD,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,mBAAmB;AACjB,UAAI,KAAK,qBAAqB,KAAK,EAAG;AAEtC,UAAI,CAAC,KAAK,WAAW;AACnB,aAAK,sBAAsB,OAAO;AAAA,MACpC;AAEA,UAAI,KAAK,QAAQ,aAAa;AAC5B,aAAK,WAAW;AAAA,MAClB;AAEA,UAAI,KAAK,gBAAgB,kBAAkB,SAAS,KAAK,gBAAgB;AACvE,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,oBAAoB;AAClB,YAAM,EAAE,SAAS,IAAI,IAAI,KAAK;AAE9B,WAAK,oBAAoB,OAAO,YAAY;AAE5C,WAAK,QAAQ,gBAAgB,UAAU;AACvC,WAAK,QAAQ,MAAM;AACnB,WAAK,QAAQ,MAAM;AACnB,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,sBAAsB;AACpB,UAAI,KAAK,gBAAgB,kBAAkB,MAAM;AAC/C,aAAK,mBAAmB,MAAM;AAAA,MAChC,OAAO;AACL,aAAK,mBAAmB,KAAK;AAC7B,aAAK,eAAe;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB;AACrB,UAAI,KAAK,WAAW,KAAK,YAAY,CAAC,KAAK,YAAY,KAAK,WAAW;AACrE,aAAK,QAAQ,SAAS,KAAK,OAAO,UAAU,KAAK,SAAS,CAAC;AAC3D,aAAK,mBAAmB,KAAK;AAC7B,cAAM,KAAK,QAAQ;AACnB,aAAK,iBAAiB;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,eAAe;AAChC,UAAI,cAAc,cAAe,cAAc,aAAa,cAAc,QAAS;AACjF,aAAK,YAAY,cAAc,SAAS;AAAA,MAC1C;AAEA,UAAI;AACF,cAAM,OAAO,MAAM,cAAc;AACjC,YAAI,MAAM;AACR,gBAAMuC,YAAW,kBAAkB,IAAI;AACvC,gBAAM,eAAe,aAAa,aAAaA,SAAQ;AAEvD,cAAI,aAAa,aAAa;AAC5B,kBAAM,KAAK,mBAAmB,eAAeA,SAAQ;AAAA,UACvD,OAAO;AACL,kBAAM,KAAK,gCAAgC,aAAa;AAAA,UAC1D;AAAA,QACF;AAAA,MACF,UAAE;AACA,aAAK,oBAAoB;AACzB,aAAK,sBAAsB,MAAM,QAAQ,QAAQ;AAAA,MACnD;AAAA,IACF;AAAA;AAAA,IAIA,0BAA0B,SAAS;AACjC,WAAK,kCAAkC,SAAS,eAAe,OAAO,CAAC;AACvE,WAAK,eAAe;AAAA,IACtB;AAAA;AAAA,IAIA,6BAA6B,MAAM;AACjC,aAAO,KAAK,2BAA2B,IAAI;AAAA,IAC7C;AAAA,IAEA,4BAA4B,MAAM,WAAW,MAAM;AACjD,YAAM,QAAQ,KAAK,kBAAkB,IAAI;AACzC,UAAI,MAAO,MAAK,aAAa,oBAAoB,MAAM,EAAE;AAAA,IAC3D;AAAA;AAAA,IAIA,yBAAyB,SAAS,WAAW,QAAQ;AACnD,aAAO,KAAK,2BAA2B,OAAO;AAAA,IAChD;AAAA,IAEA,qBAAqB,SAAS1B,WAAU;AACtC,WAAK,eAAe,SAASA,SAAQ;AAAA,IACvC;AAAA;AAAA,IAIA,eAAe,SAASF,YAAW;AACjC,aAAO,QAAQ,QAAQ,aAAa,KAAK,KAAK,WAAW,KAAK,2BAA2B,SAASA,UAAS;AAAA,IAC7G;AAAA,IAEA,cAAc,SAASA,YAAW;AAChC,UAAI,KAAK,gBAAgB;AACvB,aAAK,eAAe,KAAK;AAAA,MAC3B;AAEA,WAAK,iBAAiB,IAAI,eAAe,MAAM,SAASA,UAAS;AAEjE,YAAM,EAAE,aAAa,IAAI,KAAK;AAC9B,YAAM,QAAQ,KAAK,kBAAkB,SAASA,UAAS;AAEvD,WAAK,eAAe,cAAc,KAAK;AACvC,WAAK,eAAe,MAAM;AAAA,IAC5B;AAAA;AAAA,IAIA,eAAe,SAAS,QAAQ,MAAM;AACpC,cAAQ,QAAQ,aAAa,IAAI,MAAM;AAEvC,UAAI,KAAK,0BAA0B,aAAa,mBAAmB,GAAG;AACpE,gBAAQ,mBAAmB,cAAc,WAAW;AAAA,MACtD;AAAA,IACF;AAAA,IAEA,eAAe,UAAU;AACvB,iBAAW,KAAK,OAAO;AAAA,IACzB;AAAA,IAEA,iCAAiC,UAAU,WAAW;AACpD,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,MAAM,6BAA6B,SAAS,UAAU;AACpD,YAAM,KAAK,aAAa,QAAQ;AAChC,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,MAAM,0BAA0B,SAAS,UAAU;AACjD,YAAM,KAAK,aAAa,QAAQ;AAChC,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,eAAe,SAAS,OAAO;AAC7B,cAAQ,MAAM,KAAK;AACnB,WAAK,qBAAqB;AAAA,IAC5B;AAAA,IAEA,gBAAgB,UAAU;AACxB,qBAAe,KAAK,OAAO;AAAA,IAC7B;AAAA;AAAA,IAIA,sBAAsB,EAAE,YAAY,GAAG;AACrC,iBAAW,aAAa,KAAK,kBAAkB,WAAW,CAAC;AAAA,IAC7D;AAAA,IAEA,oCAAoC,gBAAgB,UAAU;AAC5D,YAAM,QAAQ,KAAK,kBAAkB,eAAe,aAAa,eAAe,SAAS;AAEzF,YAAM,SAAS,kCAAkC,OAAO,eAAe,eAAe,WAAW,eAAe,aAAa,KAAK,CAAC;AACnI,YAAM,SAAS,aAAa,QAAQ;AAEpC,UAAI,CAAC,eAAe,QAAQ;AAC1B,gBAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,iCAAiC,gBAAgB,eAAe;AAC9D,WAAK,QAAQ,SAAS,aAAa,aAAa;AAChD,cAAQ,WAAW;AAAA,IACrB;AAAA,IAEA,sBAAsB,gBAAgB,OAAO;AAC3C,cAAQ,MAAM,KAAK;AAAA,IACrB;AAAA,IAEA,uBAAuB,EAAE,YAAY,GAAG;AACtC,qBAAe,aAAa,KAAK,kBAAkB,WAAW,CAAC;AAAA,IACjE;AAAA;AAAA,IAIA,sBAAsB,EAAE,SAAS,SAAS,GAAG,SAAS;AACpD,YAAMR,SAAQ,SAAS,6BAA6B;AAAA,QAClD,QAAQ,KAAK;AAAA,QACb,QAAQ,EAAE,UAAU,GAAG,QAAQ;AAAA,QAC/B,YAAY;AAAA,MACd,CAAC;AAED,YAAM;AAAA,QACJ;AAAA,QACA,QAAQ,EAAE,OAAO;AAAA,MACnB,IAAIA;AAEJ,UAAI,KAAK,KAAK,YAAY,QAAQ;AAChC,aAAK,KAAK,SAAS,gBAAgB;AAAA,MACrC;AAEA,aAAO,CAAC;AAAA,IACV;AAAA,IAEA,qBAAqB,WAAW,YAAY,eAAe;AAAA,IAAC;AAAA,IAE5D,0BAA0B,SAAS;AACjC,cAAQ,0BAA0B,OAAO;AAAA,IAC3C;AAAA,IAEA,kBAAkB;AAAA,IAAC;AAAA;AAAA,IAInB,gBAAgB,gBAAgB,aAAa;AAC3C,WAAK,uBAAuB,eAAe,UAAU,IAAI;AAAA,IAC3D;AAAA,IAEA,sBAAsB,CAAC,EAAE,QAAQ,MAAM;AACrC,YAAM,QAAQ,QAAQ,cAAc,MAAM,KAAK,QAAQ,EAAE;AAEzD,UAAI,SAAS,KAAK,sBAAsB;AACtC,cAAM,gBAAgB,GAAG,KAAK,qBAAqB,QAAQ;AAAA,MAC7D;AAEA,aAAO,KAAK;AAAA,IACd;AAAA;AAAA,IAIA,MAAM,mBAAmB,eAAeoC,WAAU;AAChD,YAAM,kBAAkB,MAAM,KAAK,2BAA2BA,UAAS,IAAI;AAC3E,YAAM,gBAAgB,KAAK,oBAAoB,wBAAwB;AAEvE,UAAI,iBAAiB;AACnB,cAAM,WAAW,IAAI,SAAS,eAAe;AAC7C,cAAM,WAAW,IAAI,cAAc,MAAM,KAAK,KAAK,UAAU,UAAU,OAAO,KAAK;AACnF,YAAI,KAAK,KAAK,cAAe,OAAM,KAAK,KAAK;AAC7C,aAAK,cAAc;AAEnB,cAAM,KAAK,KAAK,OAAO,QAAQ;AAC/B,aAAK,WAAW;AAChB,gBAAQ,cAAc,eAAe,KAAK,OAAO;AACjD,gBAAQ,YAAY,KAAK,OAAO;AAChC,cAAM,KAAK,oBAAoB,aAAa;AAAA,MAC9C,WAAW,KAAK,oCAAoC,aAAa,GAAG;AAClE,aAAK,gCAAgC,aAAa;AAAA,MACpD;AAAA,IACF;AAAA,IAEA,MAAM,OAAO,KAAK;AAChB,YAAM,UAAU,IAAIzC,cAAa,MAAM,YAAY,KAAK,KAAK,IAAI,gBAAgB,GAAG,KAAK,OAAO;AAEhG,WAAK,sBAAsB,OAAO;AAClC,WAAK,uBAAuB;AAE5B,aAAO,IAAI,QAAQ,CAACM,aAAY;AAC9B,aAAK,uBAAuB,MAAM;AAChC,eAAK,uBAAuB,MAAM;AAAA,UAAC;AACnC,eAAK,uBAAuB;AAC5B,UAAAA,SAAQ;AAAA,QACV;AACA,gBAAQ,QAAQ;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,IAEA,eAAe,SAAS,KAAKO,YAAW;AACtC,YAAM,QAAQ,KAAK,kBAAkB,SAASA,UAAS;AAEvD,YAAM,SAAS,kCAAkC,OAAO,eAAeA,YAAW,SAAS,KAAK,CAAC;AAEjG,WAAK,8BAA8B,SAAS,MAAM;AAChD,cAAM,MAAM;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IAEA,kCAAkC,OAAO,SAAS,MAAM;AACtD,WAAK,SAAS;AAEd,UAAI,KAAK,QAAQ;AACf,cAAM,eAAe,aAAa,YAAY,KAAK,EAAE,MAAM;AAC3D,cAAM,EAAE,oBAAoB,IAAI,MAAM;AAEtC,cAAM,SAAS,sBAAsB,OAAO,kBAAkB;AAC5D,cAAI,MAAM,KAAK;AACb,kBAAM,EAAE,YAAY,WAAW,IAAI;AACnC,kBAAM,eAAe,MAAM,cAAc;AACzC,kBAAM,WAAW,EAAE,YAAY,YAAY,aAAa;AACxD,kBAAM,UAAU;AAAA,cACd;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,uBAAuB,KAAK;AAAA,cAC5B,UAAU;AAAA,YACZ;AAEA,gBAAI,KAAK,OAAQ,SAAQ,SAAS,KAAK;AAEvC,oBAAQ,MAAM,MAAM,KAAK,OAAO;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,gBAAgB;AACd,UAAI,KAAK,QAAQ;AACf,cAAM,SAAS,0BAA0B,KAAK,MAAM;AACpD,gBAAQ,QAAQ,OAAO,QAAQ,UAAU,KAAK,QAAQ,OAAO,EAAE,GAAG,KAAK,qBAAqB;AAAA,MAC9F;AAAA,IACF;AAAA,IAEA,MAAM,gCAAgC,eAAe;AACnD,cAAQ;AAAA,QACN,iBAAiB,cAAc,UAAU,2BAA2B,KAAK,QAAQ,EAAE;AAAA,MACrF;AAEA,YAAM,KAAK,eAAe,cAAc,QAAQ;AAAA,IAClD;AAAA,IAEA,oCAAoC,eAAe;AACjD,WAAK,QAAQ,aAAa,YAAY,EAAE;AAExC,YAAM,WAAW,cAAc;AAC/B,YAAMwB,SAAQ,OAAO,KAAK,YAAY;AACpC,YAAI,eAAe,UAAU;AAC3B,eAAK,eAAe,GAAG;AAAA,QACzB,OAAO;AACL,kBAAQ,MAAM,KAAK,OAAO;AAAA,QAC5B;AAAA,MACF;AAEA,YAAMhC,SAAQ,SAAS,uBAAuB;AAAA,QAC5C,QAAQ,KAAK;AAAA,QACb,QAAQ,EAAE,UAAU,OAAAgC,OAAM;AAAA,QAC1B,YAAY;AAAA,MACd,CAAC;AAED,aAAO,CAAChC,OAAM;AAAA,IAChB;AAAA,IAEA,gCAAgC,eAAe;AAC7C,WAAK,KAAK,QAAQ;AAClB,WAAK,wBAAwB,aAAa;AAAA,IAC5C;AAAA,IAEA,wBAAwB,eAAe;AACrC,YAAM,UAAU,iBAAiB,cAAc,UAAU,mDAAmD,KAAK,QAAQ,EAAE;AAC3H,YAAM,IAAI,uBAAuB,OAAO;AAAA,IAC1C;AAAA,IAEA,MAAM,eAAe,UAAU;AAC7B,YAAM,UAAU,IAAI,cAAc,QAAQ;AAC1C,YAAM,eAAe,MAAM,QAAQ;AACnC,YAAM,EAAE,UAAAU,WAAU,YAAY,WAAW,IAAI;AAE7C,aAAO,QAAQ,MAAMA,WAAU,EAAE,UAAU,EAAE,YAAY,YAAY,aAAa,EAAE,CAAC;AAAA,IACvF;AAAA,IAEA,kBAAkB,SAASF,YAAW;AACpC,YAAM,KAAK,aAAa,oBAAoBA,YAAW,OAAO,KAAK,KAAK,QAAQ,aAAa,QAAQ;AACrG,YAAM,SAAS,KAAK,qBAAqB,EAAE;AAE3C,aAAO,kBAAkB,eAAe,SAAS,KAAK;AAAA,IACxD;AAAA,IAEA,MAAM,2BAA2B,WAAW;AAC1C,UAAI;AACJ,YAAM,KAAK,IAAI,OAAO,KAAK,EAAE;AAE7B,UAAI;AACF,kBAAU,gBAAgB,UAAU,cAAc,eAAe,EAAE,EAAE,GAAG,KAAK,SAAS;AACtF,YAAI,SAAS;AACX,iBAAO;AAAA,QACT;AAEA,kBAAU,gBAAgB,UAAU,cAAc,6BAA6B,EAAE,GAAG,GAAG,KAAK,SAAS;AACrG,YAAI,SAAS;AACX,gBAAM,QAAQ;AACd,iBAAO,MAAM,KAAK,2BAA2B,OAAO;AAAA,QACtD;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,KAAK;AACnB,eAAO,IAAI,aAAa;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,uBAAuB,MAAMA,YAAW;AACtC,YAAM,SAAS,YAAY,MAAMA,UAAS;AAE1C,aAAO,oBAAoB,UAAU,MAAM,GAAG,KAAK,YAAY;AAAA,IACjE;AAAA,IAEA,2BAA2B,SAASA,YAAW;AAC7C,YAAM,KAAK,aAAa,oBAAoBA,YAAW,OAAO,KAAK,KAAK,QAAQ,aAAa,QAAQ;AAErG,UAAI,mBAAmB,mBAAmB,CAAC,KAAK,uBAAuB,SAASA,UAAS,GAAG;AAC1F,eAAO;AAAA,MACT;AAEA,UAAI,CAAC,KAAK,WAAW,MAAM,QAAQ;AACjC,eAAO;AAAA,MACT;AAEA,UAAI,IAAI;AACN,cAAM,eAAe,KAAK,qBAAqB,EAAE;AACjD,YAAI,cAAc;AAChB,iBAAO,CAAC,aAAa;AAAA,QACvB,WAAW,MAAM,WAAW;AAC1B,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAI,CAAC,QAAQ,qBAAqB,OAAO,GAAG;AAC1C,eAAO;AAAA,MACT;AAEA,UAAIA,cAAa,CAAC,QAAQ,qBAAqBA,UAAS,GAAG;AACzD,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,IAIA,IAAI,KAAK;AACP,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,UAAU;AACZ,aAAO,CAAC,KAAK;AAAA,IACf;AAAA,IAEA,IAAI,YAAY;AACd,UAAI,KAAK,QAAQ,KAAK;AACpB,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,IAAI,UAAU,WAAW;AACvB,WAAK,4BAA4B,OAAO,MAAM;AAC5C,aAAK,QAAQ,MAAM,aAAa;AAAA,MAClC,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,eAAe;AACjB,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,YAAY;AACd,aAAO,KAAK,mBAAmB,UAAa,KAAK,qBAAqB,MAAM;AAAA,IAC9E;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,KAAK,QAAQ,aAAa,UAAU;AAAA,IAC7C;AAAA,IAEA,IAAI,SAAS,OAAO;AAClB,UAAI,OAAO;AACT,aAAK,QAAQ,aAAa,YAAY,EAAE;AAAA,MAC1C,OAAO;AACL,aAAK,QAAQ,gBAAgB,UAAU;AAAA,MACzC;AAAA,IACF;AAAA,IAEA,IAAI,WAAW;AACb,aAAO,KAAK,QAAQ,YAAY,KAAK;AAAA,IACvC;AAAA,IAEA,IAAI,eAAe;AACjB,YAAM,OAAO,KAAK,QAAQ,cAAc,cAAc,yBAAyB;AAC/E,YAAM,OAAO,MAAM,WAAW;AAC9B,aAAO,UAAU,IAAI;AAAA,IACvB;AAAA,IAEA,qBAAqB,eAAe;AAClC,aAAO,KAAK,mBAAmB,IAAI,aAAa;AAAA,IAClD;AAAA,IAEA,4BAA4B,eAAeD,WAAU;AACnD,WAAK,mBAAmB,IAAI,aAAa;AACzC,MAAAA,UAAS;AACT,WAAK,mBAAmB,OAAO,aAAa;AAAA,IAC9C;AAAA,IAEA,8BAA8B,SAASA,WAAU;AAC/C,WAAK,2BAA2B;AAChC,MAAAA,UAAS;AACT,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,qBAAqB,IAAI;AACvB,UAAI,MAAM,MAAM;AACd,cAAM,UAAU,OAAO,YACrB,KAAK,QAAQ,cAAc,QAAQ,aAAa,IAChD,SAAS,eAAe,EAAE;AAC5B,YAAI,mBAAmB,cAAc;AACnC,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,gBAAgB,SAAS,YAAY;AAC5C,QAAI,SAAS;AACX,YAAM,MAAM,QAAQ,aAAa,KAAK;AACtC,UAAI,OAAO,QAAQ,cAAc,QAAQ,aAAa,KAAK,UAAU,GAAG;AACtE,cAAM,IAAI,MAAM,6BAA6B,QAAQ,EAAE,qDAAqD;AAAA,MAC9G;AACA,UAAI,QAAQ,kBAAkB,UAAU;AACtC,kBAAU,SAAS,WAAW,SAAS,IAAI;AAAA,MAC7C;AAEA,UAAI,mBAAmB,cAAc;AACnC,gBAAQ,kBAAkB;AAC1B,gBAAQ,qBAAqB;AAC7B,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,MAAM,gBAAgB;AAAA,IACpB,QAAQ;AACN,WAAK,8BAA8B;AACnC,WAAK,eAAe,QAAQ,CAACe,OAAMA,GAAE,eAAe,aAAa,KAAK,iBAAiBA,GAAE,WAAW,CAAC;AAAA,IACvG;AAAA,IAEA,SAAS;AACP,WAAK,8BAA8B;AACnC,WAAK,eAAe,QAAQ,CAACA,OAAMA,GAAE,OAAO,KAAK,eAAe,CAAC;AAAA,IACnE;AAAA,IAEA,SAAS;AACP,WAAK,8BAA8B;AACnC,WAAK,eAAe,QAAQ,CAACA,OAAMA,GAAE,eAAe,aAAa,KAAK,iBAAiBA,EAAC,CAAC;AAAA,IAC3F;AAAA,IAEA,UAAU;AACR,WAAK,8BAA8B;AACnC,WAAK,eAAe,QAAQ,CAACA,OAAMA,GAAE,QAAQ,KAAK,eAAe,CAAC;AAAA,IACpE;AAAA,IAEA,SAAS;AACP,WAAK,eAAe,QAAQ,CAACA,OAAMA,GAAE,OAAO,CAAC;AAAA,IAC/C;AAAA,IAEA,UAAU;AACR,YAAM,SAAS,KAAK,aAAa,QAAQ;AAEzC,WAAK,eAAe,QAAQ,CAAC,kBAAkB;AAC7C,YAAI,WAAW,SAAS;AACtB,wBAAc,eAAe,KAAK,eAAe;AAAA,QACnD,OAAO;AACL,wBAAc,YAAY,KAAK,eAAe;AAAA,QAChD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,SAAS;AACP,YAAM,SAAS,KAAK,aAAa,QAAQ;AAEzC,WAAK,eAAe,QAAQ,CAAC,kBAAkB;AAC7C,YAAI,WAAW,SAAS;AACtB,wBAAc,eAAe,KAAK,eAAe;AAAA,QACnD,OAAO;AACL,wBAAc,YAAY;AAC1B,wBAAc,OAAO,KAAK,eAAe;AAAA,QAC3C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,UAAU;AACR,YAAM,SAAS,KAAK,aAAa,QAAQ;AACzC,YAAM,YAAY,KAAK;AACvB,YAAM,SAAS,KAAK,aAAa,QAAQ;AAEzC,cAAQ,QAAQ,KAAK,SAAS,EAAE,QAAQ,WAAW,OAAO,CAAC;AAAA,IAC7D;AAAA,EACF;AA0BA,MAAM,gBAAN,MAAM,uBAAsB,YAAY;AAAA,IACtC,aAAa,cAAc,YAAY;AACrC,YAAM,WAAW,cAAc;AAAA,IACjC;AAAA,IAEA,MAAM,oBAAoB;AACxB,UAAI;AACF,cAAM,KAAK,OAAO;AAAA,MACpB,SAAS,OAAO;AACd,gBAAQ,MAAM,KAAK;AAAA,MACrB,UAAE;AACA,aAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAAA,IAEA,MAAM,SAAS;AACb,aAAQ,KAAK,mBAAmB,YAAY;AAC1C,cAAMtB,SAAQ,KAAK;AAEnB,YAAI,KAAK,cAAcA,MAAK,GAAG;AAC7B,gBAAM,YAAY;AAClB,gBAAMA,OAAM,OAAO,OAAO,IAAI;AAAA,QAChC;AAAA,MACF,GAAG;AAAA,IACL;AAAA,IAEA,aAAa;AACX,UAAI;AACF,aAAK,OAAO;AAAA,MAEd,QAAQ;AAAA,MAAC;AAAA,IACX;AAAA;AAAA;AAAA;AAAA,IAKA,gCAAgC;AAC9B,WAAK,kBAAkB,QAAQ,CAACqC,OAAMA,GAAE,OAAO,CAAC;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,oBAAoB;AACtB,YAAM,mBAAmB,KAAK,eAAe,QAAQ,CAACf,OAAM,CAAC,GAAGA,GAAE,QAAQ,CAAC,EAAE,OAAO,CAACe,OAAM,CAAC,CAACA,GAAE,aAAa,IAAI,CAAC;AACjH,YAAM,iBAAiB,CAAC,GAAI,KAAK,iBAAiB,YAAY,CAAC,CAAE,EAAE,OAAO,CAACA,OAAM,CAAC,CAACA,GAAE,aAAa,IAAI,CAAC,EAAE,IAAI,CAACA,OAAMA,GAAE,aAAa,IAAI,CAAC;AAExI,aAAO,iBAAiB,OAAO,CAACA,OAAM,eAAe,SAASA,GAAE,aAAa,IAAI,CAAC,CAAC;AAAA,IACrF;AAAA;AAAA;AAAA;AAAA,IAKA,gCAAgC;AAC9B,WAAK,kBAAkB,QAAQ,CAACA,OAAMA,GAAE,OAAO,CAAC;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,oBAAoB;AACtB,YAAM,mBAAmB,KAAK,eAAe,QAAQ,CAACf,OAAM,CAAC,GAAGA,GAAE,cAAc,QAAQ,CAAC,EAAE,OAAO,CAACe,OAAM,CAAC,CAACA,GAAE,EAAE;AAC/G,YAAM,iBAAiB,CAAC,GAAI,KAAK,iBAAiB,YAAY,CAAC,CAAE,EAAE,OAAO,CAACA,OAAM,CAAC,CAACA,GAAE,EAAE,EAAE,IAAI,CAACA,OAAMA,GAAE,EAAE;AAExG,aAAO,iBAAiB,OAAO,CAACA,OAAM,eAAe,SAASA,GAAE,EAAE,CAAC;AAAA,IACrE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,gBAAgB;AAClB,UAAI,KAAK,QAAQ;AACf,cAAM,iBAAiB,cAAc,KAAK,MAAM;AAChD,YAAI,gBAAgB;AAClB,iBAAO;AAAA,QACT;AACA,aAAK,OAAO,gBAAgB;AAAA,MAC9B;AACA,WAAK,OAAO,6BAA6B;AAAA,IAC3C;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,iBAAiB;AACnB,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK;AAAA,MACd,WAAW,KAAK,SAAS;AACvB,eAAO,KAAK;AAAA,MACd,OAAO;AACL,aAAK,OAAO,wCAAwC;AAAA,MACtD;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,kBAAkB;AACpB,aAAO,KAAK,gBAAgB,QAAQ,UAAU,IAAI;AAAA,IACpD;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,kBAAkB;AACpB,UAAI,KAAK,sBAAsB,MAAM;AACnC,cAAM,WAAW,KAAK,cAAc,cAAc,UAAU;AAC5D,aAAK,YAAY,QAAQ;AACzB,eAAO;AAAA,MACT,WAAW,KAAK,6BAA6B,qBAAqB;AAChE,eAAO,KAAK;AAAA,MACd;AACA,WAAK,OAAO,kDAAkD;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,SAAS;AACX,aAAO,KAAK,aAAa,QAAQ;AAAA,IACnC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,IAAI,SAAS;AACX,aAAO,KAAK,aAAa,QAAQ;AAAA,IACnC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,UAAU;AACZ,aAAO,KAAK,aAAa,SAAS;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA,IAKA,IAAI,YAAY;AACd,aAAO,KAAK,aAAa,YAAY;AAAA,IACvC;AAAA,IAEA,OAAO,SAAS;AACd,YAAM,IAAI,MAAM,GAAG,KAAK,WAAW,KAAK,OAAO,EAAE;AAAA,IACnD;AAAA,IAEA,IAAI,cAAc;AAChB,cAAQ,KAAK,UAAU,MAAM,SAAS,KAAK,CAAC,GAAG,CAAC,KAAK;AAAA,IACvD;AAAA,IAEA,IAAI,oBAAoB;AACtB,aAAO,IAAI,YAAY,8BAA8B;AAAA,QACnD,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ,EAAE,WAAW,MAAM,QAAQ,eAAc,cAAc;AAAA,MACjE,CAAC;AAAA,IACH;AAAA,IAEA,IAAI,qBAAqB;AACvB,YAAM,UAAU,KAAK,eAAe,eAAe,KAAK,MAAM;AAE9D,UAAI,YAAY,MAAM;AACpB,eAAO,CAAC,OAAO;AAAA,MACjB,OAAO;AACL,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,IAAI,wBAAwB;AAC1B,YAAMhC,YAAW,KAAK,eAAe,iBAAiB,KAAK,OAAO;AAElE,UAAIA,UAAS,WAAW,GAAG;AACzB,eAAO,MAAM,UAAU,MAAM,KAAKA,SAAQ;AAAA,MAC5C,OAAO;AACL,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAEA,MAAM,sBAAN,cAAkC,YAAY;AAAA,IAC5C,eAAe;AAAA,IAEf,oBAAoB;AAClB,WAAK,eAAe,KAAK,IAAI,MAAM,WAAW,IAAI,IAAI,UAAU,KAAK,GAAG,IAAI,IAAI,YAAY,KAAK,GAAG;AAEpG,0BAAoB,KAAK,YAAY;AAAA,IACvC;AAAA,IAEA,uBAAuB;AACrB,UAAI,KAAK,cAAc;AACrB,aAAK,aAAa,MAAM;AAExB,+BAAuB,KAAK,YAAY;AAAA,MAC1C;AAAA,IACF;AAAA,IAEA,IAAI,MAAM;AACR,aAAO,KAAK,aAAa,KAAK,KAAK;AAAA,IACrC;AAAA,EACF;AAEA,eAAa,sBAAsB;AAEnC,MAAI,eAAe,IAAI,aAAa,MAAM,QAAW;AACnD,mBAAe,OAAO,eAAe,YAAY;AAAA,EACnD;AAEA,MAAI,eAAe,IAAI,cAAc,MAAM,QAAW;AACpD,mBAAe,OAAO,gBAAgB,aAAa;AAAA,EACrD;AAEA,MAAI,eAAe,IAAI,qBAAqB,MAAM,QAAW;AAC3D,mBAAe,OAAO,uBAAuB,mBAAmB;AAAA,EAClE;AAEA,GAAC,MAAM;AACL,UAAM,gBAAgB,SAAS;AAC/B,QAAI,CAAC,cAAe;AACpB,QAAI,cAAc,aAAa,6BAA6B,EAAG;AAE/D,QAAI,UAAU,cAAc;AAC5B,WAAO,SAAS;AACd,UAAI,WAAW,SAAS,MAAM;AAC5B,eAAO,QAAQ;AAAA,UACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUA,cAAc;AAAA,QAChB;AAAA,MACF;AAEA,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF,GAAG;AAEH,SAAO,QAAQ,EAAE,GAAG8B,QAAO,cAAc;AACzC,EAAAtC,OAAM;;;ACnlON,MAAI;AAEJ,iBAAsB,cAAc;AAClC,WAAO,YAAY,YAAYyC,gBAAe,EAAE,KAAK,WAAW,CAAC;AAAA,EACnE;AAEO,WAAS,YAAY,aAAa;AACvC,WAAO,WAAW;AAAA,EACpB;AAEA,iBAAsBA,kBAAiB;AACrC,UAAM,EAAE,gBAAAA,gBAAe,IAAI,MAAM;AACjC,WAAOA,gBAAe;AAAA,EACxB;AAEA,iBAAsB,YAAY,SAAS,OAAO;AAChD,UAAM,EAAE,cAAc,IAAI,MAAM,YAAY;AAC5C,WAAO,cAAc,OAAO,SAAS,KAAK;AAAA,EAC5C;;;ACCe,WAAR,KAAuB,KAAK;AAC/B,QAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,QAAI,eAAe,QAAQ,eAAe,OAAQ,QAAO;AACzD,QAAI,MAAM,QAAQ,GAAG,EAAG,QAAO,IAAI,IAAI,IAAI;AAC3C,WAAO,OAAO,KAAK,GAAG,EAAE,OAAO,SAAU,KAAK,KAAK;AAC/C,UAAI,QAAQ,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC,EAAE,QAAQ,aAAa,SAAUC,IAAGC,IAAG;AACjF,eAAO,MAAMA,GAAE,YAAY;AAAA,MAC/B,CAAC;AACD,UAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;AAC1B,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;;;AC1BA,MAAM,gCAAN,cAA4C,YAAY;AAAA,IACtD,OAAO,qBAAqB,CAAC,WAAW,oBAAoB;AAAA,IAE5D,MAAM,oBAAoB;AACxB,0BAAoB,IAAI;AACxB,WAAK,eAAe,MAAM,YAAY,KAAK,SAAS;AAAA,QAClD,UAAU,KAAK,qBAAqB,KAAK,IAAI;AAAA,QAC7C,WAAW,KAAK,sBAAsB,KAAK,IAAI;AAAA,QAC/C,cAAc,KAAK,yBAAyB,KAAK,IAAI;AAAA,MACvD,CAAC;AAAA,IACH;AAAA,IAEA,uBAAuB;AACrB,6BAAuB,IAAI;AAC3B,UAAI,KAAK,aAAc,MAAK,aAAa,YAAY;AACrD,WAAK,yBAAyB;AAAA,IAChC;AAAA,IAEA,2BAA2B;AACzB,UAAI,KAAK,cAAc;AACrB,aAAK,qBAAqB;AAC1B,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,qBAAqB,MAAM;AACzB,YAAMC,SAAQ,IAAI,aAAa,WAAW,EAAE,KAAK,CAAC;AAClD,aAAO,KAAK,cAAcA,MAAK;AAAA,IACjC;AAAA,IAEA,wBAAwB;AACtB,WAAK,aAAa,aAAa,EAAE;AAAA,IACnC;AAAA,IAEA,2BAA2B;AACzB,WAAK,gBAAgB,WAAW;AAAA,IAClC;AAAA,IAEA,IAAI,UAAU;AACZ,YAAM,UAAU,KAAK,aAAa,SAAS;AAC3C,YAAM,qBAAqB,KAAK,aAAa,oBAAoB;AACjE,aAAO,EAAE,SAAS,oBAAoB,GAAG,KAAS,EAAE,GAAG,KAAK,QAAQ,CAAC,EAAE;AAAA,IACzE;AAAA,EACF;AAGA,MAAI,eAAe,IAAI,2BAA2B,MAAM,QAAW;AACjE,mBAAe,OAAO,6BAA6B,6BAA6B;AAAA,EAClF;;;ACpDO,WAAS,4BAA4BC,QAAO;AACjD,QAAIA,OAAM,kBAAkB,iBAAiB;AAC3C,YAAM,EAAE,QAAQ,MAAM,QAAQ,EAAE,aAAa,EAAE,IAAIA;AAEnD,WAAK,iBAAiB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAAC,WAAU,EAAE,EAAE,MAAM;AAC7F,cAAM,OAAO,WAAW,aAAa,IAAI,IAAI,aAAa,OAAO,IAAI,gBAAgB;AACrF,cAAM,SAAS,qBAAqBA,YAAW,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,qBAAqBA,YAAW,MAAM,MAAM;AACnD,UAAM,aAAa,oBAAoBA,UAAS;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,oBAAoBA,YAAW;AACtC,QAAIA,sBAAqB,qBAAqBA,sBAAqB,kBAAkB;AAQnF,UAAIA,WAAU,SAAS,WAAW;AAChC,eAAOA,WAAU;AAAA,MACnB,WAAWA,WAAU,aAAa,YAAY,GAAG;AAC/C,eAAOA,WAAU;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;;;AChDA,SAAO,QAAQ;AAEf,mBAAiB,8BAA8B,2BAA2B;;;ACZnE,MAAMC,iBAAN,MAAoB;AAAA,IACzB,YAAa,UAAU;AACrB,WAAK,WAAW;AAAA,IAClB;AAAA,IAEA,IAAI,aAAc;AAChB,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,aAAc;AAChB,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,KAAM;AACR,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,kBAAmB;AACrB,aAAO,KAAK,eAAe;AAAA,IAC7B;AAAA,IAEA,IAAI,sBAAuB;AACzB,aAAO,KAAK,eAAe;AAAA,IAC7B;AAAA,IAEA,IAAI,oBAAqB;AACvB,aAAO,KAAK,SAAS,QAAQ,IAAI,kBAAkB;AAAA,IACrD;AAAA,IAEA,IAAI,cAAe;AACjB,YAAM,cAAc,KAAK,SAAS,QAAQ,IAAI,cAAc,KAAK;AAEjE,aAAO,YAAY,QAAQ,QAAQ,EAAE;AAAA,IACvC;AAAA,IAEA,IAAI,UAAW;AACb,aAAO,KAAK,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI,OAAQ;AACV,UAAI,KAAK,YAAY,MAAM,yCAAyC,GAAG;AACrE,eAAO,KAAK;AAAA,MACd;AAEA,aAAO,QAAQ,OAAO,IAAI,MAAM,sCAAsC,KAAK,WAAW,WAAW,CAAC;AAAA,IACpG;AAAA,IAEA,IAAI,OAAQ;AACV,UAAI,KAAK,YAAY,MAAM,uBAAuB,GAAG;AACnD,eAAO,KAAK,iBAAiB,KAAK,eAAe,KAAK,SAAS,KAAK;AAAA,MACtE;AAEA,aAAO,QAAQ,OAAO,IAAI,MAAM,qCAAqC,KAAK,WAAW,WAAW,CAAC;AAAA,IACnG;AAAA,IAEA,IAAI,OAAQ;AACV,aAAO,KAAK,iBAAiB,KAAK,eAAe,KAAK,SAAS,KAAK;AAAA,IACtE;AAAA,IAEA,IAAI,gBAAiB;AACnB,aAAO,KAAK,YAAY,MAAM,gCAAgC;AAAA,IAChE;AAAA,IAEA,IAAI,WAAY;AACd,aAAO,KAAK,YAAY,MAAM,yBAAyB;AAAA,IACzD;AAAA,IAEA,MAAM,oBAAqB;AACzB,UAAI,KAAK,eAAe;AACtB,YAAI,OAAO,OAAO;AAChB,gBAAM,OAAO,MAAM,oBAAoB,MAAM,KAAK,IAAI;AAAA,QACxD,OAAO;AACL,kBAAQ,KAAK,kGAAkG;AAAA,QACjH;AAAA,MACF,OAAO;AACL,eAAO,QAAQ,OAAO,IAAI,MAAM,6CAA6C,KAAK,WAAW,WAAW,CAAC;AAAA,MAC3G;AAAA,IACF;AAAA,IAEA,MAAM,eAAgB;AACpB,UAAI,KAAK,UAAU;AACjB,cAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,cAAM,UAAU,SAAS,cAAc,sBAAsB;AAC7D,YAAI,SAAS;AACX,gBAAMC,SAAQ,QAAQ,UAAU,KAAK,QAAQ,UAAU,QAAQ;AAC/D,cAAIA,QAAO;AAAE,mBAAO,aAAa,SAASA,MAAK;AAAA,UAAE;AAAA,QACnD;AACA,eAAO,YAAY,MAAM,KAAK;AAC9B,iBAAS,KAAK,YAAY,MAAM;AAAA,MAClC,OAAO;AACL,eAAO,QAAQ,OAAO,IAAI,MAAM,uCAAuC,KAAK,WAAW,WAAW,CAAC;AAAA,MACrG;AAAA,IACF;AAAA,EACF;;;AC7FO,MAAM,qBAAN,MAAyB;AAAA,IAC9B,OAAO,SAAU,aAAa;AAC5B,WAAK,cAAc;AAAA,IACrB;AAAA,IAEA,OAAO,MAAO;AACZ,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,OAAO,QAAS;AACd,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;;;ACZO,WAAS,UAAWC,OAAM;AAC/B,UAAM,UAAU,SAAS,SAAS,SAAS,OAAO,MAAM,IAAI,IAAI,CAAC;AACjE,UAAM,SAAS,GAAG,mBAAmBA,KAAI,CAAC;AAC1C,UAAM,SAAS,QAAQ,KAAK,CAAAC,YAAUA,QAAO,WAAW,MAAM,CAAC;AAE/D,QAAI,QAAQ;AACV,YAAM,QAAQ,OAAO,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG;AAEjD,UAAI,OAAO;AACT,eAAO,mBAAmB,KAAK;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAEO,WAAS,QAAS,QAAQ;AAC/B,UAAM,SAAS,CAAC;AAEhB,eAAW,OAAO,QAAQ;AACxB,YAAM,QAAQ,OAAO,GAAG;AACxB,UAAI,UAAU,QAAW;AACvB,eAAO,GAAG,IAAI;AAAA,MAChB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEO,WAAS,YAAaD,OAAM;AACjC,UAAM,UAAU,SAAS,KAAK,cAAc,cAAcA,KAAI,IAAI;AAClE,WAAO,WAAW,QAAQ;AAAA,EAC5B;AAEO,WAAS,0BAA2B,UAAU;AACnD,WAAO,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,SAAS,CAACA,OAAM,KAAK,MAAM;AACtD,aAAO,QAAQ,OAAO,OAAO,UAAU,WAAW,CAAC,CAACA,OAAM,KAAK,CAAC,IAAI,CAAC,CAAC;AAAA,IACxE,GAAG,CAAC,CAAC;AAAA,EACP;AAEO,WAAS,aAAc,cAAc,SAAS;AACnD,eAAW,CAACA,OAAM,KAAK,KAAK,SAAS;AACnC,UAAI,iBAAiB,OAAO,KAAM;AAElC,UAAI,aAAa,IAAIA,KAAI,KAAK,CAACA,MAAK,SAAS,IAAI,GAAG;AAClD,qBAAa,OAAOA,KAAI;AACxB,qBAAa,IAAIA,OAAM,KAAK;AAAA,MAC9B,OAAO;AACL,qBAAa,OAAOA,OAAM,KAAK;AAAA,MACjC;AAAA,IACF;AAAA,EACF;;;AC7CO,MAAME,gBAAN,MAAmB;AAAA,IACxB,YAAa,QAAQ,KAAK,UAAU,CAAC,GAAG;AACtC,WAAK,SAAS;AACd,WAAK,UAAU;AACf,WAAK,cAAc,IAAI,SAAS;AAAA,IAClC;AAAA,IAEA,MAAM,UAAW;AACf,UAAI;AACF,cAAM,qBAAqB,mBAAmB,IAAI;AAClD,YAAI,oBAAoB;AACtB,gBAAM,mBAAmB,IAAI;AAAA,QAC/B;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAEA,YAAMC,SAAQ,OAAO,QAAQ,OAAO,MAAM,QAAQ,OAAO;AACzD,YAAM,WAAW,IAAIC,eAAc,MAAMD,OAAM,KAAK,KAAK,KAAK,YAAY,CAAC;AAE3E,UAAI,SAAS,mBAAmB,SAAS,mBAAmB;AAC1D,eAAO,QAAQ,OAAO,OAAO,SAAS,OAAO,SAAS,iBAAiB;AAAA,MACzE;AAEA,UAAI,SAAS,UAAU;AACrB,cAAM,SAAS,aAAa;AAAA,MAC9B;AAEA,YAAM,kCAAkC,SAAS,MAAM,SAAS;AAEhE,UAAI,mCAAmC,SAAS,eAAe;AAC7D,cAAM,SAAS,kBAAkB;AAAA,MACnC;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,UAAW,KAAK,OAAO;AACrB,YAAM,UAAU,KAAK;AACrB,cAAQ,GAAG,IAAI;AACf,WAAK,QAAQ,UAAU;AAAA,IACzB;AAAA,IAEA,eAAgB;AACd,UAAI,CAAC,KAAK,YAAY,WAAW,OAAO,KAAK,CAAC,KAAK,YAAY,WAAW,QAAQ,GAAG;AACnF,eAAO;AAAA,MACT;AAEA,UAAI;AACF,eAAO,IAAI,IAAI,KAAK,WAAW,EAAE,aAAa,OAAO,SAAS;AAAA,MAChE,SAASE,KAAG;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,IAAI,eAAgB;AAClB,aAAO;AAAA,QACL,QAAQ,KAAK,OAAO,YAAY;AAAA,QAChC,SAAS,KAAK;AAAA,QACd,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK;AAAA,QACb,aAAa,KAAK;AAAA,QAClB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAAA,IAEA,IAAI,UAAW;AACb,YAAM,cAAc;AAAA,QAClB,oBAAoB;AAAA,QACpB,gBAAgB,KAAK;AAAA,QACrB,QAAQ,KAAK;AAAA,MACf;AAEA,UAAI,KAAK,aAAa,GAAG;AACvB,oBAAY,cAAc,IAAI,KAAK;AAAA,MACrC;AAEA,aAAO;AAAA,QACL,OAAO,OAAO,aAAa,KAAK,iBAAiB;AAAA,MACnD;AAAA,IACF;AAAA,IAEA,IAAI,YAAa;AACf,aAAO,UAAU,YAAY,YAAY,CAAC,KAAK,YAAY,YAAY;AAAA,IACzE;AAAA,IAEA,IAAI,cAAe;AACjB,UAAI,KAAK,QAAQ,aAAa;AAC5B,eAAO,KAAK,QAAQ;AAAA,MACtB,WAAW,KAAK,QAAQ,QAAQ,KAAK,gBAAgB,OAAO,UAAU;AACpE,eAAO;AAAA,MACT,WAAW,KAAK,gBAAgB,OAAO,MAAM;AAC3C,eAAO,KAAK,KAAK;AAAA,MACnB;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,IAAI,SAAU;AACZ,cAAQ,KAAK,cAAc;AAAA,QACzB,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,IAEA,IAAI,OAAQ;AACV,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,QAAS;AACX,YAAM,iBAAiB,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC;AACzE,YAAM,SAAS,IAAI,gBAAgB,aAAa;AAEhD,UAAI,eAAe,KAAK,QAAQ;AAChC,UAAI,wBAAwB,OAAO,UAAU;AAC3C,uBAAe,0BAA0B,YAAY;AAAA,MACvD,WAAW,wBAAwB,OAAO,iBAAiB;AACzD,uBAAe,aAAa,QAAQ;AAAA,MACtC,OAAO;AACL,uBAAe,OAAO,QAAQ,gBAAgB,CAAC,CAAC;AAAA,MAClD;AAEA,mBAAa,QAAQ,YAAY;AAEjC,YAAM,QAAQ,OAAO,SAAS;AAC9B,aAAQ,MAAM,SAAS,IAAI,IAAI,KAAK,KAAK;AAAA,IAC3C;AAAA,IAEA,IAAI,MAAO;AACT,aAAQ,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,EAAG,MAAM,GAAG,EAAE,CAAC,IAAI,KAAK;AAAA,IAC/D;AAAA,IAEA,IAAI,eAAgB;AAClB,aAAO,KAAK,QAAQ,gBAAgB;AAAA,IACtC;AAAA,IAEA,IAAI,SAAU;AACZ,aAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IAEA,IAAI,WAAY;AACd,aAAO,KAAK,QAAQ,YAAY;AAAA,IAClC;AAAA,IAEA,IAAI,cAAe;AACjB,aAAO,KAAK,QAAQ,eAAe;AAAA,IACrC;AAAA,IAEA,IAAI,YAAa;AACf,aAAO,KAAK,QAAQ,aAAa;AAAA,IACnC;AAAA,IAEA,IAAI,oBAAqB;AACvB,aAAO,KAAK,QAAQ,WAAW,CAAC;AAAA,IAClC;AAAA,IAEA,IAAI,gBAAiB;AACnB,YAAM,gBAAgB,OAAO,UAAU,SAAS,KAAK,KAAK,IAAI,MAAM;AACpE,YAAM,oBAAoB,KAAK,QAAQ,cAAc,MAAM;AAE3D,UAAI,qBAAqB,CAAC,eAAe;AACvC,eAAO,KAAK,UAAU,KAAK,IAAI;AAAA,MACjC;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,EACF;;;AC7KA,MAAAC,aAAmB;;;ACCnB,WAASC,SAAQ,UAAU;AACzB,WAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,MAAM;AAAA,EACtD;AAEA,WAASC,YAAW,UAAU;AAC5B,WAAO,oBAAoB;AAAA,EAC7B;AAEA,WAAS,cAAc,UAAU;AAE/B,WAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,MAAM,qBAAqB,CAACA,YAAW,QAAQ,KAAK,oBAAoB;AAAA,EACxH;AAGA,WAASC,QAAO,QAAQ,QAAQ;AAC9B,aAAS,OAAO,QAAQ;AAEtB,UAAI,QAAQ,aAAa;AAAE;AAAA,MAAU;AAErC,UAAI,cAAc,OAAO,GAAG,CAAC,KAAKF,SAAQ,OAAO,GAAG,CAAC,GAAG;AACtD,YAAI,cAAc,OAAO,GAAG,CAAC,KAAK,CAAC,cAAc,OAAO,GAAG,CAAC,GAAG;AAC7D,iBAAO,GAAG,IAAI,CAAC;AAAA,QACjB;AACA,YAAIA,SAAQ,OAAO,GAAG,CAAC,KAAK,CAACA,SAAQ,OAAO,GAAG,CAAC,GAAG;AACjD,iBAAO,GAAG,IAAI,CAAC;AAAA,QACjB;AACA,QAAAE,QAAO,OAAO,GAAG,GAAG,OAAO,GAAG,CAAC;AAAA,MACjC,WAAW,OAAO,GAAG,MAAM,QAAW;AACpC,eAAO,GAAG,IAAI,OAAO,GAAG;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAEA,WAAS,MAAM,MAAM,MAAM;AACzB,QAAI,SAAS,CAAC;AACd,IAAAA,QAAO,QAAQ,IAAI;AACnB,IAAAA,QAAO,QAAQ,IAAI;AACnB,WAAO;AAAA,EACT;AAEA,MAAI,eAAe;AAEnB,WAAS,eAAe,QAAQ;AAC9B,aAASC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,OAAO,OAAOA,EAAC,EAAE;AACrB,eAASC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAI,KAAKA,EAAC,EAAE,CAAC,IAAI,GAAG;AAClB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,MAAM,KAAK;AAClB,WAAO,KAAK;AAAA,EACd;AAEA,WAAS,QAAQ,KAAK;AACpB,WAAO,WAAW,GAAG;AAAA,EACvB;AAEA,WAAS,OAAO,KAAK;AACnB,QAAI,eAAe,MAAM;AACvB,aAAO;AAAA,IACT,WAAW,OAAO,QAAQ,UAAU;AAClC,aAAO,IAAI,KAAK,MAAM,GAAI;AAAA,IAC5B,OAAO;AACL,UAAIC,KAAI,MAAM,GAAG;AACjB,UAAIC,WAAUD,GAAE,MAAM,YAAY;AAClC,UAAIC,UAAS;AACX,YAAIC,QAAO,SAASD,SAAQ,CAAC,GAAG,EAAE;AAClC,YAAIE,SAAQ,SAASF,SAAQ,CAAC,GAAG,EAAE,IAAI;AACvC,YAAIG,OAAM,SAASH,SAAQ,CAAC,GAAG,EAAE;AACjC,eAAO,IAAI,KAAKC,OAAMC,QAAOC,IAAG;AAAA,MAClC,OAAO;AAGL,YAAI,MAAMJ,GAAE,QAAQ,KAAK,GAAG,EAAE,QAAQ,KAAK,EAAE,EAAE,QAAQ,OAAO,GAAG;AAEjE,eAAO,IAAI,KAAK,KAAK,MAAM,GAAG,KAAKA,EAAC;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,WAAS,MAAM,KAAK;AAClB,QAAIL,SAAQ,GAAG,GAAG;AAChB,aAAO;AAAA,IACT,OAAO;AACL,UAAI,MAAM,CAAC;AACX,eAASG,MAAK,KAAK;AACjB,YAAI,OAAO,UAAU,eAAe,KAAK,KAAKA,EAAC,GAAG;AAChD,cAAI,KAAK,CAACA,IAAG,IAAIA,EAAC,CAAC,CAAC;AAAA,QACtB;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,cAAcO,iBAAgBC,aAAYC,WAAUC,SAAQC,SAAQC,aAAYC,YAAWC,YAAW;AAC7G,WAAO,SAAU,OAAO,MAAM,cAAc;AAC1C,UAAI,SAAS,MAAM;AACnB,UAAI,UAAU,MAAM,CAAC,GAAGP,eAAc;AACtC,gBAAU,MAAM,SAAS,gBAAgB,CAAC,CAAC;AAE3C,UAAI,MAAM,sBAAsB,YAAY,MAAM;AAChD,QAAAC,YAAW,SAAS,KAAK,QAAQ,MAAM,kBAAkB;AAAA,MAC3D;AAEA,UAAI,KAAK,OAAO;AACd,QAAAC,UAAS,SAAS,KAAK,KAAK;AAAA,MAC9B;AAGA,UAAI,SAAS,MAAM;AACjB,QAAAC,QAAO,SAAS,KAAK,GAAG;AAAA,MAC1B,WAAW,CAAC,eAAe,MAAM,GAAG;AAClC,QAAAA,QAAO,SAAS,CAAC;AAAA,MACnB;AAGA,UAAI,KAAK,KAAK;AACZ,QAAAC,QAAO,SAAS,KAAK,GAAG;AAAA,MAC1B;AAEA,UAAI,aAAa,MAAM;AACrB,QAAAC,YAAW,SAAS,KAAK,OAAO;AAAA,MAClC;AAEA,UAAI,KAAK,QAAQ;AACf,gBAAQ,SAAS,KAAK;AAAA,MACxB;AAEA,UAAI,KAAK,QAAQ;AACf,QAAAC,WAAU,SAAS,KAAK,MAAM;AAAA,MAChC;AAEA,UAAI,KAAK,QAAQ;AACf,QAAAC,WAAU,SAAS,KAAK,MAAM;AAAA,MAChC;AAGA,gBAAU,MAAM,SAAS,KAAK,WAAW,CAAC,CAAC;AAE3C,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,WAAWC,IAAGC,IAAG;AACxB,WAAOD,GAAE,CAAC,EAAE,QAAQ,IAAIC,GAAE,CAAC,EAAE,QAAQ;AAAA,EACvC;AAEA,WAAS,mBAAmBD,IAAGC,IAAG;AAChC,WAAOD,GAAE,CAAC,IAAIC,GAAE,CAAC;AAAA,EACnB;AAGA,WAAS,aAAaD,IAAGC,IAAG;AAC1B,WAAOD,KAAIC;AAAA,EACb;AAEA,WAAS,MAAM,QAAQ,IAAI;AACzB,aAAShB,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,CAAC,GAAG,OAAOA,EAAC,CAAC,GAAG;AAClB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,MAAM,UAAU;AACvB,WAAO,aAAa,SAAS,aAAa,UAAU,aAAa,WAAW,aAAa;AAAA,EAC3F;AAEA,WAAS,kBAAkB,QAAQ,QAAQ;AACzC,QAAK,WAAW,OAAS,UAAS;AAElC,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO;AAAA,IACT;AAEA,QAAIiB,UAAS,MAAM,QAAQ,SAAUC,IAAG;AAAE,aAAOA,GAAE,gBAAgB,MAAM,KAAKA,GAAE,WAAW,MAAM;AAAA,IAAG,CAAC;AACrG,QAAI,CAACD,SAAQ;AACX,aAAO;AAAA,IACT;AAEA,QAAIE,QAAO,MAAM,QAAQ,SAAUD,IAAG;AAAE,aAAOA,GAAE,WAAW,MAAM;AAAA,IAAG,CAAC;AACtE,QAAI,CAACC,OAAM;AACT,aAAO;AAAA,IACT;AAEA,QAAIb,OAAM,MAAM,QAAQ,SAAUY,IAAG;AAAE,aAAOA,GAAE,SAAS,MAAM;AAAA,IAAG,CAAC;AACnE,QAAI,CAACZ,MAAK;AACR,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAEA,QAAID,SAAQ,MAAM,QAAQ,SAAUa,IAAG;AAAE,aAAOA,GAAE,QAAQ,MAAM;AAAA,IAAG,CAAC;AACpE,QAAI,CAACb,QAAO;AACV,UAAI,YAAY,OAAO,CAAC,EAAE,OAAO;AACjC,UAAIe,QAAO,MAAM,QAAQ,SAAUF,IAAG;AAAE,eAAOA,GAAE,OAAO,MAAM;AAAA,MAAW,CAAC;AAC1E,aAAQE,QAAO,SAAS;AAAA,IAC1B;AAEA,QAAIhB,QAAO,MAAM,QAAQ,SAAUc,IAAG;AAAE,aAAOA,GAAE,SAAS,MAAM;AAAA,IAAG,CAAC;AACpE,QAAI,CAACd,OAAM;AACT,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,WAASiB,QAAO,KAAK;AACnB,WAAO,CAAC,MAAM,OAAO,GAAG,CAAC,KAAK,MAAM,GAAG,EAAE,UAAU;AAAA,EACrD;AAEA,WAASC,UAAS,KAAK;AACrB,WAAO,OAAO,QAAQ;AAAA,EACxB;AAEA,MAAI,eAAe,CAAC,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAE/D,WAAS,YAAY,KAAK,OAAO,SAAS,MAAM;AAC9C,UAAM,OAAO;AACb,QAAI,QAAQ,QAAQ;AAClB,UAAI,QAAQ,GAAG;AACb,gBAAQ,QAAQ;AAChB,eAAO;AAAA,MACT;AACA,aAAO,QAAQ;AAAA,IACjB;AAEA,QAAI,SAAS,QAAQ,UAAU;AAC/B,QAAI,YAAY,QAAQ;AACxB,QAAIC,SAAQ,QAAQ;AAEpB,QAAI,QAAQ,WAAW;AACrB,UAAI,WAAW,SAAS;AACxB,UAAI,CAAC,UAAU;AACb,iBAAS;AAAA,MACX;AAEA,UAAI,YAAY,OAAO,QAAQ,YAAY;AAE3C,UAAI;AACJ,UAAI,aAAa,oBAAqB;AACpC,iBAAS;AACT,oBAAY;AAAA,MACd,WAAW,aAAa,kBAAkB;AACxC,iBAAS;AACT,oBAAY;AAAA,MACd,WAAW,aAAa,eAAe;AACrC,iBAAS;AACT,oBAAY;AAAA,MACd,WAAW,aAAa,YAAY;AAClC,iBAAS;AACT,oBAAY;AAAA,MACd,WAAW,aAAa,SAAS;AAC/B,iBAAS;AACT,oBAAY;AAAA,MACd,WAAW,aAAa,MAAM;AAC5B,iBAAS;AACT,oBAAY;AAAA,MACd,OAAO;AACL,oBAAY;AAAA,MACd;AAGA,UAAI,cAAc,UAAaA,WAAU,QAAW;AAClD,YAAI,SAAS,QAAQ;AACnB,cAAI,YAAY,aAAa,SAAS,GAAG;AACvC,oBAAQ;AACR,yBAAa;AAAA,UACf;AAAA,QACF;AACA,oBAAY,SAAS,MAAO,IAAI;AAAA,MAClC;AACA,eAAS,MAAM,aAAa,SAAS;AAGrC,UAAI,CAAC,UAAU;AACb,iBAAS;AAAA,MACX;AAAA,IACF;AAEA,QAAI,cAAc,UAAaA,WAAU,QAAW;AAClD,YAAM,MAAM,yCAAyC;AAAA,IACvD;AAEA,QAAI,CAAC,MAAM;AACT,UAAI,cAAc,QAAW;AAC3B,gBAAQ,MAAM,YAAY,SAAS;AACnC,YAAI,CAAC,QAAQ,OAAO;AAClB,kBAAQ,WAAW,KAAK;AAAA,QAC1B;AAAA,MACF;AAEA,UAAIA,WAAU,QAAW;AACvB,YAAIA,SAAQ,GAAG;AACb,cAAI,MAAM,KAAK,IAAI,IAAI,KAAKA,MAAK;AACjC,kBAAQ,UAAU,IAAM,QAAQ,KAAK,QAAQ,CAAC,CAAC,IAAI;AAAA,QACrD,OAAO;AACL,kBAAQ,MAAM,QAAQA,MAAK;AAC3B,cAAI,CAAC,QAAQ,OAAO;AAClB,oBAAQ,WAAW,KAAK;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,QAAQ,aAAa,QAAQ,SAAS;AACxC,cAAQ,MAAM,KAAK;AACnB,UAAI,QAAQ,MAAM,MAAM,GAAG;AAC3B,cAAQ,MAAM,CAAC;AACf,UAAI,QAAQ,WAAW;AACrB,gBAAQ,MAAM,QAAQ,yBAAyB,QAAQ,SAAS;AAAA,MAClE;AACA,UAAI,MAAM,SAAS,GAAG;AACpB,kBAAU,QAAQ,WAAW,OAAO,MAAM,CAAC;AAAA,MAC7C;AAAA,IACF;AAEA,WAAO,MAAM,QAAQ;AAAA,EACvB;AAEA,WAAS,aAAa,OAAO,QAAQC,SAAQ;AAC3C,QAAIA,WAAU,QAAQ;AACpB,aAAO,OAAOA,OAAM;AAAA,IACtB,WAAWA,WAAU,MAAM,SAAS;AAClC,aAAO,MAAM,QAAQA,OAAM;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AAEA,MAAI,cAAc;AAAA,IAChB,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,SAAS;AAAA,MACP,QAAQ,CAAC;AAAA,MACT,SAAS;AAAA,QACP,eAAe;AAAA,QACf,WAAW,CAAC;AAAA,MACd;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,UACJ,MAAM;AAAA,QACR;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,aAAa,CAAC;AAAA,EAChB;AAEA,MAAI,mBAAmB;AAAA,IACrB,QAAQ;AAAA,MACN,GAAG;AAAA,QACD,OAAO;AAAA,UACL,eAAe;AAAA,QACjB;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,YACJ,MAAM;AAAA,UACR;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA,MAAM,CAAC;AAAA,MACT;AAAA,MACA,GAAG;AAAA,QACD,MAAM;AAAA,UACJ,iBAAiB;AAAA,QACnB;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,YACJ,MAAM;AAAA,UACR;AAAA,UACA,OAAO;AAAA,QACT;AAAA,QACA,MAAM,CAAC;AAAA,QACP,OAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAGA,MAAI,gBAAgB;AAAA,IAClB;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAClE;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAClE;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA,EACzD;AAEA,WAAS,aAAa,SAAS,QAAQhB,aAAY;AACjD,QAAI,WAAW,QAAW;AACxB,cAAQ,QAAQ,OAAO,UAAU,CAAC,CAAC;AACnC,UAAI,UAAU,WAAW,MAAM;AAC7B,gBAAQ,QAAQ,OAAO,WAAW;AAAA,MACpC;AAAA,IACF,WAAWA,aAAY;AACrB,cAAQ,QAAQ,OAAO,UAAU;AAAA,IACnC;AAAA,EACF;AAEA,WAAS,WAAW,SAASiB,QAAO;AAClC,YAAQ,QAAQ,MAAM,UAAU;AAChC,YAAQ,QAAQ,MAAM,OAAOA;AAAA,EAC/B;AAEA,WAAS,SAAS,SAAS,KAAK;AAC9B,QAAI,QAAQ,MAAM;AAChB,cAAQ,OAAO,EAAE,MAAM,QAAQ,GAAG;AAAA,IACpC;AAAA,EACF;AAEA,WAAS,SAAS,SAAS,KAAK;AAC9B,YAAQ,OAAO,EAAE,MAAM,QAAQ,GAAG;AAAA,EACpC;AAEA,WAAS,YAAY,SAAS,KAAK;AACjC,QAAI,QAAQ,MAAM;AAChB,cAAQ,OAAO,EAAE,MAAM,QAAQ,GAAG;AAAA,IACpC;AAAA,EACF;AAEA,WAAS,YAAY,SAAS,KAAK;AACjC,YAAQ,OAAO,EAAE,MAAM,QAAQ,GAAG;AAAA,EACpC;AAEA,WAAS,aAAa,SAAS,SAAS;AACtC,YAAQ,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7B,YAAQ,OAAO,EAAE,UAAU,CAAC,CAAC;AAAA,EAC/B;AAEA,WAAS,YAAY,SAASA,QAAO;AACnC,YAAQ,OAAO,EAAE,MAAM,UAAU;AACjC,YAAQ,OAAO,EAAE,MAAM,OAAOA;AAAA,EAChC;AAEA,WAAS,YAAY,SAASA,QAAO;AACnC,YAAQ,OAAO,EAAE,MAAM,UAAU;AACjC,YAAQ,OAAO,EAAE,MAAM,OAAOA;AAAA,EAChC;AAGA,WAAS,WAAWC,MAAK,SAAS;AAChC,QAAI,SAAS,4CAA4C,KAAKA,IAAG;AACjE,WAAO,SAAS,UAAU,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,OAAO,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,OAAO,UAAU,MAAMA;AAAA,EAC/I;AAEA,WAAS,QAAQC,IAAG;AAClB,WAAOA,OAAM,QAAQA,OAAM;AAAA,EAC7B;AAEA,WAAS,aAAa,OAAO,MAAM,SAAS;AAC1C,QAAI,eAAe,KAAK,KAAK,MAAM,QAAQ,cAAc,IAAM,KAAK,OAAO,MAAM;AACjF,QAAI,eAAe,IAAI;AACrB,qBAAe;AAAA,IACjB,WAAW,eAAe,IAAI;AAC5B,qBAAe;AAAA,IACjB;AACA,QAAI,CAAC,QAAQ,OAAO,EAAE,MAAM,UAAU;AACpC,cAAQ,OAAO,EAAE,MAAM,WAAW,SAAU,OAAO;AACjD,gBAAQ,MAAM,KAAK,iBAAiB,KAAK,CAAC;AAC1C,YAAI,MAAM,SAAS,cAAc;AAC/B,iBAAO,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI;AAAA,QAChD,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,eAAe,QAAQ;AAC9B,QAAI,QAAQ;AACZ,QAAI,MAAM,QAAQ,MAAM;AACxB,WAAO,OAAO,MAAM;AAClB,eAAS;AACT,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,WAAS,mBAAmB,OAAO,SAAS,WAAW;AAErD,QAAI,iBAAiB;AAAA,MACnB,WAAW,MAAM,QAAQ;AAAA,MACzB,SAAS,MAAM,QAAQ;AAAA,IACzB;AAGA,QAAI,gBAAgB,MAAM;AAAA,MACxB,QAAQ,MAAM,QAAQ;AAAA,MACtB,QAAQ,MAAM,QAAQ;AAAA,MACtB,WAAW,MAAM,QAAQ;AAAA,MACzB,OAAO,MAAM,QAAQ;AAAA,MACrB,OAAO,MAAM,QAAQ;AAAA,IACvB,GAAG,cAAc;AAEjB,QAAI,MAAM,QAAQ,OAAO;AACvB,UAAI,SAAS,MAAM;AACnB,UAAI,cAAc,OAAO;AACvB,iBAAS,CAAC,EAAC,MAAM,OAAM,CAAC;AAAA,MAC1B;AAGA,oBAAc,YAAY,eAAe,MAAM;AAAA,IACjD;AAEA,QAAI,cAAc,OAAO;AACvB,UAAI,OAAO,QAAQ,OAAO;AAC1B,UAAI,cAAc,OAAO;AACvB,eAAO,QAAQ,OAAO;AAAA,MACxB;AAEA,UAAI,cAAc,WAAW;AAC3B,YAAI,CAAC,KAAK,MAAM,UAAU;AACxB,eAAK,MAAM,WAAW,cAAc,YAAY;AAAA,QAClD;AACA,YAAI,CAAC,KAAK,MAAM,eAAe;AAC7B,eAAK,MAAM,gBAAgB;AAAA,QAC7B;AAAA,MACF;AAEA,UAAI,CAAC,KAAK,MAAM,UAAU;AACxB,aAAK,MAAM,WAAW,SAAU,OAAO;AACrC,iBAAO,YAAY,IAAI,OAAO,eAAe,IAAI;AAAA,QACnD;AAAA,MACF;AAEA,WAAK,cAAc,aAAa,cAAc,aAAa,CAAC,QAAQ,OAAO,EAAE,MAAM,UAAU;AAC3F,gBAAQ,OAAO,EAAE,MAAM,WAAW,SAAU,OAAO;AACjD,iBAAO,YAAY,IAAI,OAAO,gBAAgB,IAAI;AAAA,QACpD;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ,QAAQ,QAAQ,UAAU,OAAO;AAC5C,UAAI,cAAc,WAAW;AAC3B,gBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAC3D,cAAI,QAAQ,QAAQ,QAAQ,SAAS;AACrC,cAAI,OAAO;AACT,qBAAS;AAAA,UACX;AAEA,cAAI,YAAY,QAAQ;AACxB,iBAAO,QAAQ,MAAM,YAAY,IAAI,UAAU,GAAG,cAAc,IAAI,OAAO,YAAY,IAAI,UAAU,GAAG,aAAa,IAAI;AAAA,QAC3H;AAAA,MACF,WAAW,cAAc,UAAU;AACjC,gBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAC3D,cAAI,QAAQ,QAAQ,QAAQ,SAAS;AACrC,cAAI,OAAO;AACT,qBAAS;AAAA,UACX;AACA,cAAI,YAAY,QAAQ;AACxB,iBAAO,QAAQ,MAAM,YAAY,IAAI,UAAU,GAAG,cAAc,IAAI,OAAO,YAAY,IAAI,UAAU,GAAG,aAAa,IAAI,OAAO,YAAY,IAAI,UAAU,GAAG,cAAc,IAAI;AAAA,QACjL;AAAA,MACF,WAAW,cAAc,OAAO;AAE9B,gBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAC3D,iBAAO,YAAY,IAAI,QAAQ,QAAQ,aAAa;AAAA,QACtD;AAAA,MACF,OAAO;AACL,YAAI,aAAa,cAAc,QAAQ,MAAM;AAC7C,gBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAE3D,cAAI,QAAQ,OAAO,UAAU,MAAM,MAAM;AACvC;AAAA,UACF;AAEA,cAAI,QAAQ,QAAQ,QAAQ,SAAS;AACrC,cAAI,OAAO;AACT,qBAAS;AAAA,UACX;AACA,iBAAO,YAAY,OAAO,QAAQ,OAAO,UAAU,GAAG,aAAa;AAAA,QACrE;AAAA,MACF;AAAA,IACF;AAIA,SAAK,cAAc,UAAU,cAAc,WAAW,MAAM,UAAU,UAAU;AAC9E,UAAI,CAAC,QAAQ,OAAO,EAAE,MAAM,UAAU;AACpC,gBAAQ,OAAO,EAAE,MAAM,WAAW,SAAU,OAAO;AACjD,iBAAO,MAAM,KAAK;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,CAAC,QAAQ,QAAQ,QAAQ,UAAU,OAAO;AAC5C,gBAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAU,SAAS;AAC3D,iBAAO,MAAM,QAAQ,CAAC,EAAE,OAAO,CAAC;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,QAAQ,QAAQ;AACvB,QAAI,MAAM;AACV,aAAS3B,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,OAAO,OAAOA,EAAC,EAAE;AACrB,eAASC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAI2B,KAAI,KAAK,IAAI,KAAK3B,EAAC,EAAE,CAAC,CAAC;AAC3B,YAAI2B,KAAI,KAAK;AACX,gBAAMA;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS,KAAK,QAAQ;AAEpB,QAAI,MAAM;AACV,aAAS5B,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,OAAO,OAAOA,EAAC,EAAE;AACrB,eAASC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAI2B,KAAI,KAAK3B,EAAC,EAAE,CAAC;AACjB,YAAI2B,KAAI,KAAK;AACX,gBAAMA;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,cAAc,MAAM,aAAa,gBAAgB,GAAG,cAAc,YAAY,UAAU,UAAU,cAAc,aAAa,WAAW;AAE1J,WAAS,mBAAmB,OAAO;AACjC,QAAI,SAAS,MAAM;AACnB,QAAI,OAAO,CAAC;AACZ,QAAI,OAAO,CAAC;AACZ,QAAI,SAAS,CAAC;AACd,QAAI,SAAS,CAAC;AAEd,aAAS5B,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,OAAO,OAAOA,EAAC,EAAE;AAErB,eAASC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAIiB,KAAI,KAAKjB,EAAC;AACd,YAAI,MAAM,MAAM,UAAU,aAAaiB,GAAE,CAAC,EAAE,QAAQ,IAAIA,GAAE,CAAC;AAC3D,YAAI,CAAC,KAAK,GAAG,GAAG;AACd,eAAK,GAAG,IAAI,IAAI,MAAM,OAAO,MAAM;AACnC,eAAK,KAAK,GAAG;AAAA,QACf;AACA,aAAK,GAAG,EAAElB,EAAC,IAAIkB,GAAE,CAAC;AAAA,MACpB;AAAA,IACF;AAEA,QAAI,MAAM,UAAU,cAAc,MAAM,UAAU,UAAU;AAC1D,WAAK,KAAK,YAAY;AAAA,IACxB;AAEA,aAASW,OAAM,GAAGA,OAAM,OAAO,QAAQA,QAAO;AAC5C,aAAO,KAAK,CAAC,CAAC;AAAA,IAChB;AAEA,aAASC,OAAM,GAAGA,OAAM,KAAK,QAAQA,QAAO;AAC1C,UAAI,QAAQ,KAAKA,IAAG;AAEpB,UAAI,QAAQ,MAAM,UAAU,aAAa,IAAI,KAAK,KAAK,IAAI;AAC3D,aAAO,KAAK,KAAK;AAEjB,UAAI,MAAM,KAAK,KAAK;AACpB,eAASC,OAAM,GAAGA,OAAM,OAAO,QAAQA,QAAO;AAC5C,YAAIH,KAAI,IAAIG,IAAG;AAEf,eAAOA,IAAG,EAAE,KAAKH,OAAM,SAAY,OAAOA,EAAC;AAAA,MAC7C;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,WAAS,kBAAkB,OAAO;AAChC,QAAI,SAAS,MAAM;AACnB,QAAI,SAAS,CAAC;AACd,QAAI,MAAM,KAAK,MAAM;AAErB,aAAS5B,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,OAAO,OAAOA,EAAC,EAAE;AACrB,UAAI,SAAS,CAAC;AACd,eAASC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAI2B,KAAI,KAAK3B,EAAC;AACd,eAAO,KAAK;AAAA,UACV,GAAG2B,GAAE,CAAC;AAAA,UACN,GAAGA,GAAE,CAAC;AAAA,UACN,GAAGA,GAAE,CAAC,IAAI,KAAK;AAAA;AAAA,UAEf,GAAGA,GAAE,CAAC;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,KAAK,MAAM;AAAA,IACpB;AAEA,WAAO;AAAA,MACL,QAAQ,CAAC;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAGA,WAAS,kBAAkB,OAAO;AAChC,QAAI,SAAS,MAAM;AACnB,QAAI,SAAS,CAAC;AAEd,aAAS5B,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,OAAO,OAAOA,EAAC,EAAE;AAErB,WAAK,KAAK,kBAAkB;AAE5B,UAAI,SAAS,CAAC;AACd,eAASC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAI2B,KAAI,KAAK3B,EAAC;AACd,eAAO,KAAK;AAAA,UACV,GAAG2B,GAAE,CAAC;AAAA,UACN,GAAGA,GAAE,CAAC;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,KAAK,MAAM;AAAA,IACpB;AAEA,WAAO;AAAA,MACL,QAAQ,CAAC;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,WAAS,YAAY,OAAO,WAAW;AACrC,QAAI,cAAc,UAAU;AAC1B,aAAO,kBAAkB,KAAK;AAAA,IAChC,WAAW,MAAM,UAAU,YAAY,cAAc,SAAS,cAAc,UAAU;AACpF,aAAO,kBAAkB,KAAK;AAAA,IAChC,OAAO;AACL,aAAO,mBAAmB,KAAK;AAAA,IACjC;AAAA,EACF;AAEA,WAAS,gBAAgB,OAAO,SAAS,WAAW;AAClD,QAAI,MAAM,YAAY,OAAO,SAAS;AACtC,QAAI,SAAS,IAAI;AACjB,QAAI,SAAS,IAAI;AAEjB,QAAI,SAAS,MAAM;AACnB,QAAI,WAAW,CAAC;AAChB,QAAII,UAAS,MAAM,QAAQ,UAAU;AACrC,aAAShC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAIE,KAAI,OAAOF,EAAC;AAGhB,UAAIiC,SAAS;AACb,UAAIC,mBAAmB;AACvB,UAAI,MAAM,QAAQ,UAAU,MAAM,uBAAuB,cAAc,SAAS,cAAc,aAAa,CAAChC,GAAE,SAASL,SAAQ,MAAM,QAAQ,MAAM,KAAK,CAACA,SAAQ,MAAM,QAAQ,OAAO,CAAC,CAAC,GAAG;AACzL,QAAAoC,SAAQD;AACR,QAAAE,mBAAkB,CAAC;AACnB,iBAASjC,KAAI,GAAGA,KAAI+B,QAAO,QAAQ/B,MAAK;AACtC,UAAAiC,iBAAgBjC,EAAC,IAAI,WAAWgC,OAAMhC,EAAC,GAAG,GAAG;AAAA,QAC/C;AAAA,MACF,OAAO;AACL,QAAAgC,SAAQ/B,GAAE,SAAS8B,QAAOhC,EAAC;AAC3B,QAAAkC,mBAAkB,cAAc,SAAS,WAAWD,QAAO,GAAG,IAAIA;AAAA,MACpE;AAEA,UAAI,UAAU;AAAA,QACZ,OAAO/B,GAAE,QAAQ;AAAA,QACjB,MAAM,OAAOF,EAAC;AAAA,QACd,MAAM,cAAc;AAAA,QACpB,aAAaiC;AAAA,QACb,iBAAiBC;AAAA,QACjB,aAAa;AAAA,MACf;AAEA,UAAI,aAAa,cAAc,UAAU,cAAc,UAAU,cAAc,aAAa,cAAc;AAC1G,UAAI,YAAY;AACd,gBAAQ,uBAAuBD;AAC/B,gBAAQ,4BAA4BA;AACpC,gBAAQ,iBAAiB;AAAA,MAC3B;AAEA,UAAI,cAAc,UAAU;AAC1B,gBAAQ,uBAAuBC;AAC/B,gBAAQ,4BAA4BA;AACpC,gBAAQ,wBAAwB;AAAA,MAClC;AAEA,UAAIhC,GAAE,OAAO;AACX,gBAAQ,QAAQA,GAAE;AAAA,MACpB;AAEA,UAAI,QAAQ,aAAa,OAAOA,IAAG,OAAO;AAC1C,UAAI,UAAU,OAAO;AACnB,gBAAQ,UAAU;AAAA,MACpB,WAAW,YAAY;AACrB,gBAAQ,UAAU;AAAA,MACpB;AAEA,UAAI,SAAS,aAAa,OAAOA,IAAG,QAAQ;AAC5C,UAAI,WAAW,OAAO;AACpB,gBAAQ,cAAc;AACtB,gBAAQ,mBAAmB;AAAA,MAC7B;AAEA,gBAAU,MAAM,SAAS,MAAM,QAAQ,WAAW,CAAC,CAAC;AACpD,gBAAU,MAAM,SAASA,GAAE,WAAW,CAAC,CAAC;AACxC,gBAAU,MAAM,SAASA,GAAE,WAAW,CAAC,CAAC;AAExC,eAAS,KAAK,OAAO;AAAA,IACvB;AAEA,QAAI,OAAO,MAAM,QAAQ;AACzB,QAAI,OAAO,MAAM,QAAQ;AAEzB,QAAI,MAAM,UAAU,YAAY;AAC9B,UAAI,QAAQ,IAAI,GAAG;AACjB,gBAAQ,OAAO,EAAE,MAAM,OAAO,IAAI,EAAE,QAAQ;AAAA,MAC9C;AACA,UAAI,QAAQ,IAAI,GAAG;AACjB,gBAAQ,OAAO,EAAE,MAAM,OAAO,IAAI,EAAE,QAAQ;AAAA,MAC9C;AAAA,IACF,WAAW,MAAM,UAAU,UAAU;AACnC,UAAI,QAAQ,IAAI,GAAG;AACjB,gBAAQ,OAAO,EAAE,MAAM;AAAA,MACzB;AACA,UAAI,QAAQ,IAAI,GAAG;AACjB,gBAAQ,OAAO,EAAE,MAAM;AAAA,MACzB;AAAA,IACF;AAEA,QAAI,MAAM,UAAU,YAAY;AAC9B,UAAI,WAAW,kBAAkB,MAAM;AAGvC,UAAI,OAAO,WAAW,GAAG;AACvB,YAAI,QAAQ,IAAI,GAAG;AACjB,iBAAO,KAAK,OAAO,IAAI,CAAC;AAAA,QAC1B;AACA,YAAI,QAAQ,IAAI,GAAG;AACjB,iBAAO,KAAK,OAAO,IAAI,CAAC;AAAA,QAC1B;AAAA,MACF;AAEA,UAAI,OAAO,SAAS,GAAG;AACrB,YAAIiC,YAAW,QAAQ,IAAI,IAAI,OAAO,IAAI,IAAI,OAAO,CAAC,GAAG,QAAQ;AACjE,YAAIC,YAAW,QAAQ,IAAI,IAAI,OAAO,IAAI,IAAI,OAAO,CAAC,GAAG,QAAQ;AAEjE,iBAASP,OAAM,GAAGA,OAAM,OAAO,QAAQA,QAAO;AAC5C,cAAI,QAAQ,OAAOA,IAAG,EAAE,QAAQ;AAChC,cAAI,QAAQM,UAAS;AACnB,YAAAA,WAAU;AAAA,UACZ;AACA,cAAI,QAAQC,UAAS;AACnB,YAAAA,WAAU;AAAA,UACZ;AAAA,QACF;AAEA,YAAI,YAAYA,WAAUD,aAAY,QAAQ;AAE9C,YAAI,CAAC,QAAQ,OAAO,EAAE,KAAK,MAAM;AAC/B,cAAI;AACJ,cAAI,aAAa,UAAU,WAAW,MAAM,IAAI;AAC9C,oBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,mBAAO;AAAA,UACT,WAAW,aAAa,WAAW,WAAW,KAAK,IAAI;AACrD,oBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,mBAAO;AAAA,UACT,WAAW,aAAa,UAAU,aAAa,SAAS,WAAW,IAAI;AACrE,oBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,mBAAO;AAAA,UACT,WAAW,aAAa,UAAU,WAAW,KAAK;AAChD,oBAAQ,OAAO,EAAE,KAAK,iBAAiB,EAAC,MAAM,aAAY;AAC1D,oBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,mBAAO,IAAI;AAAA,UACb,WAAW,aAAa,UAAU;AAChC,oBAAQ,OAAO,EAAE,KAAK,iBAAiB,EAAC,QAAQ,SAAQ;AACxD,oBAAQ,OAAO,EAAE,KAAK,OAAO;AAC7B,mBAAO,IAAI,KAAO;AAAA,UACpB;AAEA,cAAI,QAAQ,WAAW,GAAG;AAExB,gBAAI,QAAQ,MAAM,QAAQ;AAC1B,gBAAI,QAAQ,GAAG;AACb,kBAAI,eAAe,KAAK,KAAK,WAAW,QAAQ,QAAQ,IAAM;AAC9D,kBAAI,aAAa,UAAU,SAAS,GAAG;AACrC,+BAAe,KAAK,KAAK,eAAe,CAAG,IAAI;AAAA,cACjD;AACA,sBAAQ,OAAO,EAAE,MAAM,WAAW;AAAA,YACpC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAAC,QAAQ,OAAO,EAAE,KAAK,eAAe;AACxC,cAAI,aAAa,QAAQ;AACvB,oBAAQ,OAAO,EAAE,KAAK,gBAAgB;AAAA,UACxC,WAAW,aAAa,SAAS;AAC/B,oBAAQ,OAAO,EAAE,KAAK,gBAAgB;AAAA,UACxC,WAAW,aAAa,UAAU,aAAa,OAAO;AACpD,oBAAQ,OAAO,EAAE,KAAK,gBAAgB;AAAA,UACxC,WAAW,aAAa,QAAQ;AAC9B,oBAAQ,OAAO,EAAE,KAAK,gBAAgB;AAAA,UACxC,WAAW,aAAa,UAAU;AAChC,oBAAQ,OAAO,EAAE,KAAK,gBAAgB;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,kBAAkB,SAAS,cAAc,SAAS;AACpD,SAAK,OAAO;AACZ,SAAK,UAAU;AAAA,EACjB;AAEA,kBAAgB,UAAU,kBAAkB,SAAS,gBAAiB,OAAO,WAAW;AACtF,QAAI,CAAC,WAAW;AACd,kBAAY;AAAA,IACd;AAEA,QAAI,eAAe,CAAC;AAEpB,QAAI,UAAU,YAAY,OAAO,MAAM,cAAc,MAAM,OAAO,CAAC;AACnE,uBAAmB,OAAO,SAAS,SAAS;AAE5C,QAAI,OAAO,gBAAgB,OAAO,SAAS,SAAS;AAEpD,QAAI,MAAM,UAAU,UAAU;AAC5B,cAAQ,OAAO,EAAE,OAAO,QAAQ,OAAO,EAAE,QAAQ;AACjD,cAAQ,OAAO,EAAE,WAAW,QAAQ,OAAO,EAAE,YAAY;AAAA,IAC3D,OAAO;AACL,cAAQ,OAAO,EAAE,OAAO,MAAM,UAAU,WAAW,aAAa;AAAA,IAClE;AAEA,SAAK,UAAU,OAAO,QAAQ,MAAM,OAAO;AAAA,EAC7C;AAEA,kBAAgB,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACzE,QAAI,UAAU,MAAM,CAAC,GAAG,WAAW;AACnC,QAAI,MAAM,QAAQ,OAAO;AACvB,cAAQ,SAAS;AAAA,IACnB;AAEA,QAAI,YAAY,MAAM,SAAS;AAC7B,mBAAa,SAAS,MAAM,QAAQ,MAAM;AAAA,IAC5C;AAEA,QAAI,MAAM,QAAQ,OAAO;AACvB,iBAAW,SAAS,MAAM,QAAQ,KAAK;AAAA,IACzC;AAEA,cAAU,MAAM,SAAS,MAAM,QAAQ,WAAW,CAAC,CAAC;AACpD,uBAAmB,OAAO,SAAS,KAAK;AAExC,QAAI,SAAS,CAAC;AACd,QAAI,SAAS,CAAC;AACd,aAASnC,KAAI,GAAGA,KAAI,MAAM,KAAK,QAAQA,MAAK;AAC1C,UAAI,QAAQ,MAAM,KAAKA,EAAC;AACxB,aAAO,KAAK,MAAM,CAAC,CAAC;AACpB,aAAO,KAAK,MAAM,CAAC,CAAC;AAAA,IACtB;AAEA,QAAI,UAAU;AAAA,MACZ,MAAM;AAAA,MACN,iBAAiB,MAAM,QAAQ,UAAU;AAAA,IAC3C;AACA,cAAU,MAAM,SAAS,MAAM,QAAQ,WAAW,CAAC,CAAC;AAEpD,QAAI,OAAO;AAAA,MACT;AAAA,MACA,UAAU,CAAC,OAAO;AAAA,IACpB;AAEA,SAAK,UAAU,OAAO,OAAO,MAAM,OAAO;AAAA,EAC5C;AAEA,kBAAgB,UAAU,oBAAoB,SAAS,kBAAmB,OAAO,WAAW;AAC1F,QAAI;AACJ,QAAI,cAAc,OAAO;AACvB,UAAI,aAAa,MAAM,aAAa,gBAAgB;AACpD,iBAAW,YAAY;AAGvB,iBAAW,OAAO,EAAE,KAAK,kBAAkB;AAC3C,iBAAW,OAAO,EAAE,KAAK,kBAAkB;AAC3C,aAAO,WAAW,OAAO,EAAE,MAAM;AAEjC,gBAAU,cAAc,YAAY,cAAc,YAAY,aAAa,aAAa,cAAc,aAAa,WAAW,EAAE,OAAO,MAAM,OAAO;AAAA,IACtJ,OAAO;AACL,gBAAU,YAAY,OAAO,MAAM,OAAO;AAAA,IAC5C;AACA,uBAAmB,OAAO,SAAS,SAAS;AAC5C,QAAI,OAAO,gBAAgB,OAAO,SAAS,QAAQ;AACnD,QAAI,cAAc,OAAO;AACvB,mBAAa,OAAO,MAAM,OAAO;AAAA,IACnC;AACA,QAAI,EAAE,UAAU,QAAQ,cAAc;AACpC,cAAQ,YAAY,OAAO;AAAA,IAC7B;AACA,SAAK,UAAU,OAAO,OAAO,MAAM,OAAO;AAAA,EAC5C;AAEA,kBAAgB,UAAU,kBAAkB,SAAS,gBAAiB,OAAO;AAC3E,SAAK,gBAAgB,OAAO,MAAM;AAAA,EACpC;AAEA,kBAAgB,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACzE,SAAK,kBAAkB,OAAO,KAAK;AAAA,EACrC;AAEA,kBAAgB,UAAU,qBAAqB,SAAS,mBAAoB,OAAO,WAAW;AAC5F,gBAAY,aAAa;AAEzB,QAAI,UAAU,YAAY,OAAO,MAAM,OAAO;AAC9C,uBAAmB,OAAO,SAAS,SAAS;AAE5C,QAAI,EAAE,cAAc,UAAU;AAC5B,cAAQ,WAAW;AAAA,IACrB;AAEA,QAAI,OAAO,gBAAgB,OAAO,SAAS,SAAS;AAEpD,YAAQ,OAAO,EAAE,OAAO,QAAQ,OAAO,EAAE,QAAQ;AACjD,YAAQ,OAAO,EAAE,WAAW,QAAQ,OAAO,EAAE,YAAY;AAGzD,QAAI,EAAE,UAAU,QAAQ,cAAc;AACpC,cAAQ,YAAY,OAAO;AAAA,IAC7B;AAEA,SAAK,UAAU,OAAO,WAAW,MAAM,OAAO;AAAA,EAChD;AAEA,kBAAgB,UAAU,oBAAoB,SAAS,kBAAmB,OAAO;AAC/E,SAAK,mBAAmB,OAAO,QAAQ;AAAA,EACzC;AAEA,kBAAgB,UAAU,UAAU,SAASqC,SAAS,OAAO;AAC3D,QAAI,MAAM,OAAO;AACf,YAAM,MAAM,QAAQ;AAAA,IACtB;AAAA,EACF;AAEA,kBAAgB,UAAU,YAAY,SAAS,UAAW,OAAO,MAAM,MAAM,SAAS;AACpF,SAAK,QAAQ,KAAK;AAClB,QAAI,MAAM,WAAW;AAAE;AAAA,IAAQ;AAE/B,QAAI,eAAe;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,MAAM;AACtB,aAAO,QAAQ,IAAI,oBAAoB,KAAK,UAAU,YAAY,IAAI,IAAI;AAAA,IAC5E;AAEA,UAAM,QAAQ,YAAY;AAC1B,QAAI,MAAM,MAAM,QAAQ,qBAAqB,QAAQ,EAAE,CAAC;AACxD,UAAM,QAAQ,IAAI,KAAK,QAAQ,KAAK,YAAY;AAAA,EAClD;AAEA,MAAI,mBAAmB;AAAA,IACrB,OAAO,CAAC;AAAA,IACR,OAAO;AAAA,MACL,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,OAAO;AAAA,UACL,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,OAAO;AAAA,UACL,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,SAAS;AAAA,MACP,OAAO;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX,YAAY,CAAC;AAAA,MACb,MAAM,CAAC;AAAA,MACP,QAAQ;AAAA,QACN,QAAQ,CAAC;AAAA,MACX;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,WAAS,aAAa,SAAS,QAAQ7B,aAAY;AACjD,QAAI,WAAW,QAAW;AACxB,cAAQ,OAAO,UAAU,CAAC,CAAC;AAC3B,UAAI,UAAU,WAAW,MAAM;AAC7B,YAAI,WAAW,SAAS,WAAW,UAAU;AAC3C,kBAAQ,OAAO,gBAAgB;AAAA,QACjC,OAAO;AACL,kBAAQ,OAAO,SAAS;AACxB,kBAAQ,OAAO,gBAAgB;AAC/B,kBAAQ,OAAO,QAAQ;AAAA,QACzB;AAAA,MACF;AAAA,IACF,WAAWA,aAAY;AACrB,cAAQ,OAAO,UAAU;AAAA,IAC3B;AAAA,EACF;AAEA,WAAS,WAAW,SAASiB,QAAO;AAClC,YAAQ,MAAM,OAAOA;AAAA,EACvB;AAEA,WAAS,SAAS,SAAS,KAAK;AAC9B,YAAQ,MAAM,MAAM;AAAA,EACtB;AAEA,WAAS,SAAS,SAAS,KAAK;AAC9B,YAAQ,MAAM,MAAM;AAAA,EACtB;AAEA,WAAS,aAAa,SAAS,SAAS;AACtC,QAAI,eAAe,UAAW,YAAY,OAAO,WAAW,UAAW;AACvE,YAAQ,YAAY,OAAO,WAAW;AACtC,YAAQ,YAAY,KAAK,WAAW;AACpC,YAAQ,YAAY,WAAW,WAAW;AAAA,EAC5C;AAEA,WAAS,YAAY,SAASA,QAAO;AACnC,YAAQ,MAAM,MAAM,OAAOA;AAAA,EAC7B;AAEA,WAAS,YAAY,SAASA,QAAO;AACnC,YAAQ,MAAM,MAAM,OAAOA;AAAA,EAC7B;AAEA,MAAI,cAAc,cAAc,kBAAkB,cAAc,YAAY,UAAU,UAAU,cAAc,aAAa,WAAW;AAEtI,WAAS,iBAAiB,OAAO,SAAS,WAAW;AACnD,QAAI,gBAAgB;AAAA,MAClB,QAAQ,MAAM,QAAQ;AAAA,MACtB,QAAQ,MAAM,QAAQ;AAAA,MACtB,WAAW,MAAM,QAAQ;AAAA,MACzB,SAAS,MAAM,QAAQ;AAAA,MACvB,WAAW,MAAM,QAAQ;AAAA,MACzB,OAAO,MAAM,QAAQ;AAAA,MACrB,OAAO,MAAM,QAAQ;AAAA,IACvB;AAGA,QAAI,cAAc,SAAS,CAAC5B,SAAQ,QAAQ,KAAK,KAAK,CAAC,QAAQ,MAAM,OAAO,WAAW;AACrF,cAAQ,MAAM,OAAO,YAAY,WAAY;AAC3C,eAAO,YAAY,IAAI,KAAK,OAAO,aAAa;AAAA,MAClD;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ,QAAQ,kBAAkB,CAAC,QAAQ,QAAQ,aAAa;AACnE,cAAQ,QAAQ,iBAAiB,WAAY;AAC3C,eAAO,wBAAwB,KAAK,QAAQ,qBAAqB,YAAY,KAAK,OAAO,OAAO,SAAS,KAAK,GAAG,aAAa,IAAI;AAAA,MACpI;AAAA,IACF;AAAA,EACF;AAEA,MAAI,kBAAkB,SAASyC,eAAc,SAAS;AACpD,SAAK,OAAO;AACZ,SAAK,UAAU;AAAA,EACjB;AAEA,kBAAgB,UAAU,kBAAkB,SAASC,iBAAiB,OAAO,WAAW;AACtF,gBAAY,aAAa;AACzB,QAAI,eAAe,CAAC;AACpB,QAAI,cAAc,cAAc;AAC9B,qBAAe;AAAA,QACb,aAAa;AAAA,UACX,YAAY;AAAA,YACV,UAAU;AAAA,UACZ;AAAA,UACA,MAAM;AAAA,YACJ,UAAU;AAAA,UACZ;AAAA,UACA,QAAQ;AAAA,YACN,QAAQ;AAAA,cACN,SAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,UAAU,OAAO;AACjC,UAAI,cAAc,cAAc;AAC9B,oBAAY;AAAA,MACd,WAAW,cAAc,UAAU;AACjC,oBAAY;AAAA,MACd;AAAA,IACF;AAEA,QAAI,UAAU,YAAY,OAAO,MAAM,SAAS,YAAY;AAC5D,QAAI,MAAM,UAAU,UAAU;AAC5B,cAAQ,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAAA,IAC7C,OAAO;AACL,cAAQ,MAAM,OAAO,MAAM,UAAU,WAAW,aAAa;AAAA,IAC/D;AACA,QAAI,CAAC,QAAQ,MAAM,MAAM;AACvB,cAAQ,MAAM,OAAO;AAAA,IACvB;AACA,qBAAiB,OAAO,SAAS,SAAS;AAE1C,QAAI,SAAS,MAAM;AACnB,aAASvC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,aAAOA,EAAC,EAAE,OAAO,OAAOA,EAAC,EAAE,QAAQ;AACnC,UAAI,OAAO,OAAOA,EAAC,EAAE;AACrB,UAAI,MAAM,UAAU,YAAY;AAC9B,iBAASC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,eAAKA,EAAC,EAAE,CAAC,IAAI,KAAKA,EAAC,EAAE,CAAC,EAAE,QAAQ;AAAA,QAClC;AAAA,MACF,WAAW,MAAM,UAAU,UAAU;AACnC,aAAK,KAAK,kBAAkB;AAAA,MAC9B;AACA,aAAOD,EAAC,EAAE,SAAS,EAAC,QAAQ,SAAQ;AACpC,UAAI,MAAM,QAAQ,WAAW,OAAO;AAClC,eAAOA,EAAC,EAAE,OAAO,UAAU;AAAA,MAC7B;AAAA,IACF;AAEA,SAAK,UAAU,OAAO,QAAQ,OAAO;AAAA,EACvC;AAEA,kBAAgB,UAAU,qBAAqB,SAASwC,oBAAoB,OAAO;AACjF,QAAI,UAAU,YAAY,OAAO,MAAM,SAAS,CAAC,CAAC;AAClD,YAAQ,MAAM,OAAO;AACrB,SAAK,UAAU,OAAO,MAAM,MAAM,OAAO;AAAA,EAC3C;AAEA,kBAAgB,UAAU,iBAAiB,SAASC,gBAAgB,OAAO;AACzE,QAAI,eAAe,MAAM,kBAAkB,CAAC,CAAC;AAE7C,QAAI,MAAM,QAAQ,QAAQ;AACxB,mBAAa,SAAS,MAAM,QAAQ;AAAA,IACtC;AACA,QAAI,MAAM,QAAQ,OAAO;AACvB,mBAAa,cAAc,EAAC,KAAK,EAAC,WAAW,MAAK,EAAC;AAAA,IACrD;AAEA,QAAI,YAAY,MAAM,SAAS;AAC7B,mBAAa,cAAc,MAAM,QAAQ,MAAM;AAAA,IACjD;AAEA,QAAI,MAAM,QAAQ,OAAO;AACvB,iBAAW,cAAc,MAAM,QAAQ,KAAK;AAAA,IAC9C;AAEA,QAAI,UAAU,MAAM,cAAc,MAAM,QAAQ,WAAW,CAAC,CAAC;AAC7D,qBAAiB,OAAO,SAAS,KAAK;AACtC,QAAI,SAAS,CAAC;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,MAAM,QAAQ,SAAS;AAAA,MAC7B,MAAM,MAAM;AAAA,IACd,CAAC;AAED,SAAK,UAAU,OAAO,QAAQ,OAAO;AAAA,EACvC;AAEA,kBAAgB,UAAU,oBAAoB,SAASC,mBAAmB,OAAO,WAAW;AAC1F,gBAAY,aAAa;AACzB,QAAI,SAAS,MAAM;AACnB,QAAI,UAAU,YAAY,OAAO,MAAM,OAAO;AAC9C,QAAI,OAAO,CAAC;AACZ,QAAI,aAAa,CAAC;AAClB,YAAQ,MAAM,OAAO;AACrB,qBAAiB,OAAO,SAAS,SAAS;AAE1C,aAAS1C,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAIE,KAAI,OAAOF,EAAC;AAEhB,eAASC,KAAI,GAAGA,KAAIC,GAAE,KAAK,QAAQD,MAAK;AACtC,YAAIiB,KAAIhB,GAAE,KAAKD,EAAC;AAChB,YAAI,CAAC,KAAKiB,GAAE,CAAC,CAAC,GAAG;AACf,eAAKA,GAAE,CAAC,CAAC,IAAI,IAAI,MAAM,OAAO,MAAM;AACpC,qBAAW,KAAKA,GAAE,CAAC,CAAC;AAAA,QACtB;AACA,aAAKA,GAAE,CAAC,CAAC,EAAElB,EAAC,IAAIkB,GAAE,CAAC;AAAA,MACrB;AAAA,IACF;AAEA,QAAI,MAAM,UAAU,UAAU;AAC5B,iBAAW,KAAK,YAAY;AAAA,IAC9B;AAEA,YAAQ,MAAM,aAAa;AAE3B,QAAI,YAAY,CAAC;AACjB,aAASW,OAAM,GAAGA,OAAM,OAAO,QAAQA,QAAO;AAC5C,UAAIc,OAAM,CAAC;AACX,eAASZ,OAAM,GAAGA,OAAM,WAAW,QAAQA,QAAO;AAChD,QAAAY,KAAI,KAAK,KAAK,WAAWZ,IAAG,CAAC,EAAEF,IAAG,KAAK,CAAC;AAAA,MAC1C;AAEA,UAAIe,MAAK;AAAA,QACP,MAAM,OAAOf,IAAG,EAAE,QAAQ;AAAA,QAC1B,MAAMc;AAAA,MACR;AACA,UAAI,OAAOd,IAAG,EAAE,OAAO;AACrB,QAAAe,IAAG,QAAQ,OAAOf,IAAG,EAAE;AAAA,MACzB;AAEA,gBAAU,KAAKe,GAAE;AAAA,IACnB;AAEA,SAAK,UAAU,OAAO,WAAW,OAAO;AAAA,EAC1C;AAEA,kBAAgB,UAAU,iBAAiB,SAASC,gBAAgB,OAAO;AACzE,SAAK,kBAAkB,OAAO,KAAK;AAAA,EACrC;AAEA,kBAAgB,UAAU,kBAAkB,SAASC,iBAAiB,OAAO;AAC3E,SAAK,gBAAgB,OAAO,YAAY;AAAA,EAC1C;AAEA,kBAAgB,UAAU,UAAU,SAAST,SAAS,OAAO;AAC3D,QAAI,MAAM,OAAO;AACf,YAAM,MAAM,QAAQ;AAAA,IACtB;AAAA,EACF;AAEA,kBAAgB,UAAU,YAAY,SAASU,WAAW,OAAO,MAAM,SAAS;AAC9E,SAAK,QAAQ,KAAK;AAClB,QAAI,MAAM,WAAW;AAAE;AAAA,IAAQ;AAE/B,YAAQ,MAAM,WAAW,MAAM,QAAQ;AACvC,YAAQ,SAAS;AAEjB,QAAI,MAAM,QAAQ,MAAM;AACtB,aAAO,QAAQ,IAAI,0BAA0B,KAAK,UAAU,OAAO,IAAI,IAAI;AAAA,IAC7E;AAEA,UAAM,QAAQ,IAAI,KAAK,QAAQ,MAAM,OAAO;AAAA,EAC9C;AAEA,MAAI,SAAS,CAAC;AACd,MAAI,YAAY,CAAC;AAGjB,MAAIxC,kBAAiB;AAAA,IACnB,WAAW,CAAC;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,WAAW;AAAA,QACT,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,IACZ;AAAA,IACA,WAAW;AAAA,IACX,OAAO;AAAA,MACL,WAAW;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB,WAAW;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA,eAAe;AAAA,MACf,YAAY,CAAC;AAAA,IACf;AAAA,IACA,OAAO;AAAA,MACL,WAAW;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB,eAAe;AAAA,MACf,YAAY,CAAC;AAAA,IACf;AAAA,IACA,SAAS;AAAA,MACP,WAAW;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAEA,WAAS,WAAW,SAAS,QAAQC,aAAY;AAC/C,QAAI,WAAW,QAAW;AACxB,UAAI;AACJ,UAAI,CAAC,QAAQ;AACX,mBAAW;AAAA,MACb,WAAW,WAAW,MAAM;AAC1B,mBAAW;AAAA,MACb,OAAO;AACL,mBAAW;AAAA,MACb;AACA,cAAQ,OAAO,WAAW;AAAA,IAC5B,WAAWA,aAAY;AACrB,cAAQ,OAAO,WAAW;AAAA,IAC5B;AAAA,EACF;AAEA,WAAS,SAAS,SAASiB,QAAO;AAChC,YAAQ,QAAQA;AAChB,YAAQ,iBAAiB,EAAC,OAAO,QAAQ,UAAU,OAAM;AAAA,EAC3D;AAEA,WAAS,OAAO,SAAS,KAAK;AAC5B,YAAQ,MAAM,WAAW,MAAM;AAAA,EACjC;AAEA,WAAS,OAAO,SAAS,KAAK;AAC5B,YAAQ,MAAM,WAAW,MAAM;AAAA,EACjC;AAEA,WAAS,UAAU,SAAS,KAAK;AAC/B,YAAQ,MAAM,WAAW,MAAM;AAAA,EACjC;AAEA,WAAS,UAAU,SAAS,KAAK;AAC/B,YAAQ,MAAM,WAAW,MAAM;AAAA,EACjC;AAEA,WAAS,WAAW,SAAS,SAAS;AACpC,YAAQ,YAAY,WAAW;AAAA,EACjC;AAEA,WAAS,UAAU,SAASA,QAAO;AACjC,YAAQ,MAAM,QAAQA;AACtB,YAAQ,MAAM,eAAe,SAAS;AAAA,EACxC;AAEA,WAAS,UAAU,SAASA,QAAO;AACjC,YAAQ,MAAM,QAAQA;AACtB,YAAQ,MAAM,eAAe,SAAS;AAAA,EACxC;AAEA,MAAI,YAAY,cAAclB,iBAAgB,YAAY,UAAU,QAAQ,QAAQ,YAAY,WAAW,SAAS;AAEpH,WAAS,OAAOyC,WAAU;AACxB,QAAI,OAAO,aAAa;AACtB,aAAO,YAAY,YAAYA,SAAQ;AAAA,IACzC,WAAW,OAAO,kBAAkB;AAClC,aAAO,iBAAiB,UAAUA,WAAU,IAAI;AAAA,IAClD;AACA,IAAAA,UAAS;AAAA,EACX;AAEA,MAAIV,iBAAgB,SAASA,eAAc,SAAS;AAClD,SAAK,OAAO;AACZ,SAAK,UAAU;AAAA,EACjB;AAEA,EAAAA,eAAc,UAAU,kBAAkB,SAASC,iBAAiB,OAAO;AACvE,QAAI,WAAW;AAEjB,SAAK,cAAc,OAAO,WAAY;AACpC,UAAI,eAAe,CAAC;AAEpB,UAAI,MAAM,QAAQ,UAAU,OAAO;AACjC,qBAAa,YAAY;AAAA,MAC3B;AAEA,UAAI,MAAM,QAAQ,WAAW,OAAO;AAClC,qBAAa,YAAY;AAAA,MAC3B;AAEA,UAAI,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY;AAC1D,UAAI,OAAO,SAAS,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAE3D,eAAS,UAAU,OAAO,aAAa,MAAM,OAAO;AAAA,IACtD,CAAC;AAAA,EACH;AAEA,EAAAD,eAAc,UAAU,iBAAiB,SAASG,gBAAgB,OAAO;AACrE,QAAI,WAAW;AAEjB,SAAK,cAAc,OAAO,WAAY;AACpC,UAAI,eAAe;AAAA,QACjB,WAAW;AAAA,UACT,KAAK;AAAA,UACL,QAAQ;AAAA,QACV;AAAA,QACA,QAAQ,CAAC;AAAA,MACX;AACA,UAAI,MAAM,QAAQ,QAAQ;AACxB,qBAAa,SAAS,MAAM,QAAQ;AAAA,MACtC;AACA,UAAI,MAAM,QAAQ,OAAO;AACvB,qBAAa,UAAU;AAAA,MACzB;AACA,UAAI,YAAY,MAAM,SAAS;AAC7B,mBAAW,cAAc,MAAM,QAAQ,MAAM;AAAA,MAC/C;AACA,UAAI,MAAM,QAAQ,OAAO;AACvB,iBAAS,cAAc,MAAM,QAAQ,KAAK;AAAA,MAC5C;AACA,UAAI,UAAU,MAAM,MAAMlC,iBAAgB,YAAY,GAAG,MAAM,QAAQ,WAAW,CAAC,CAAC;AAEpF,UAAI,OAAO,IAAI,SAAS,QAAQ,cAAc,UAAU;AACxD,WAAK,UAAU,UAAU,EAAE;AAC3B,WAAK,UAAU,UAAU,OAAO;AAChC,WAAK,QAAQ,MAAM,IAAI;AAEvB,eAAS,UAAU,OAAO,YAAY,MAAM,OAAO;AAAA,IACrD,CAAC;AAAA,EACH;AAEA,EAAA+B,eAAc,UAAU,oBAAoB,SAASI,mBAAmB,OAAO;AAC3E,QAAI,WAAW;AAEjB,SAAK,cAAc,OAAO,WAAY;AACpC,UAAI,UAAU,UAAU,OAAO,MAAM,OAAO;AAC5C,UAAI,OAAO,SAAS,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAE3D,eAAS,UAAU,OAAO,eAAe,MAAM,OAAO;AAAA,IACxD,CAAC;AAAA,EACH;AAEA,EAAAJ,eAAc,UAAU,iBAAiB,SAASO,gBAAgB,OAAO;AACrE,QAAI,WAAW;AAEjB,SAAK,cAAc,OAAO,WAAY;AACpC,UAAI,eAAe;AAAA,QACjB,OAAO;AAAA,UACL,WAAW;AAAA,YACT,OAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,UAAI,UAAU,cAActC,iBAAgB,YAAY,UAAU,WAAW,WAAW,YAAY,WAAW,SAAS,EAAE,OAAO,MAAM,SAAS,YAAY;AAC5J,UAAI,OAAO,SAAS,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAE3D,eAAS,UAAU,OAAO,YAAY,MAAM,OAAO;AAAA,IACrD,CAAC;AAAA,EACH;AAEA,EAAA+B,eAAc,UAAU,kBAAkB,SAASQ,iBAAiB,OAAO;AACvE,QAAI,WAAW;AAEjB,SAAK,cAAc,OAAO,WAAY;AACpC,UAAI,eAAe;AAAA,QACjB,WAAW;AAAA,QACX,WAAW;AAAA,QACX,aAAa;AAAA,MACf;AAEA,UAAI,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY;AAC1D,UAAI,OAAO,SAAS,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAE3D,eAAS,UAAU,OAAO,aAAa,MAAM,OAAO;AAAA,IACtD,CAAC;AAAA,EACH;AAEA,EAAAR,eAAc,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACrE,QAAI,WAAW;AAEjB,SAAK,cAAc,OAAO,YAAY,WAAY;AAChD,UAAI,eAAe;AAAA,QACjB,QAAQ;AAAA,QACR,WAAW;AAAA,UACT,QAAQ,MAAM,QAAQ,UAAU,CAAC,WAAW,SAAS;AAAA,QACvD;AAAA,MACF;AACA,UAAI,UAAU,MAAM,MAAM/B,iBAAgB,YAAY,GAAG,MAAM,QAAQ,WAAW,CAAC,CAAC;AAEpF,UAAI,OAAO,IAAI,SAAS,QAAQ,cAAc,UAAU;AACxD,WAAK,UAAU,UAAU,EAAE;AAC3B,WAAK,UAAU,UAAU,MAAM,QAAQ,SAAS,OAAO;AACvD,WAAK,QAAQ,MAAM,IAAI;AAEvB,eAAS,UAAU,OAAO,YAAY,MAAM,OAAO;AAAA,IACrD,CAAC;AAAA,EACH;AAEA,EAAA+B,eAAc,UAAU,qBAAqB,SAASE,oBAAoB,OAAO;AAC7E,QAAI,WAAW;AAEjB,SAAK,cAAc,OAAO,WAAY;AACpC,UAAI,eAAe,CAAC;AACpB,UAAI,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY;AAE1D,UAAI,SAAS,MAAM;AACnB,UAAI,QAAQ,CAAC;AACb,eAASxC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,eAAOA,EAAC,EAAE,OAAO,OAAOA,EAAC,EAAE,QAAQ;AACnC,YAAIkB,KAAI,OAAOlB,EAAC,EAAE;AAClB,iBAASC,KAAI,GAAGA,KAAIiB,GAAE,QAAQjB,MAAK;AACjC,cAAI,MAAM,IAAI,MAAM,OAAO,SAAS,CAAC;AACrC,cAAI,CAAC,IAAIiB,GAAEjB,EAAC,EAAE,CAAC;AACf,cAAID,KAAI,CAAC,IAAIkB,GAAEjB,EAAC,EAAE,CAAC;AACnB,gBAAM,KAAK,GAAG;AAAA,QAChB;AAAA,MACF;AAEA,UAAI,OAAO,IAAI,SAAS,QAAQ,cAAc,UAAU;AACxD,WAAK,UAAU,UAAU,EAAE;AAC3B,eAAS4B,OAAM,GAAGA,OAAM,OAAO,QAAQA,QAAO;AAC5C,aAAK,UAAU,UAAU,OAAOA,IAAG,EAAE,IAAI;AAAA,MAC3C;AACA,WAAK,QAAQ,KAAK;AAElB,eAAS,UAAU,OAAO,gBAAgB,MAAM,OAAO;AAAA,IACzD,CAAC;AAAA,EACH;AAEA,EAAAS,eAAc,UAAU,iBAAiB,SAAS,eAAgB,OAAO;AACrE,QAAI,WAAW;AAEjB,SAAK,cAAc,OAAO,YAAY,WAAY;AAChD,UAAI,eAAe;AAAA,QACjB,QAAQ;AAAA,MACV;AAEA,UAAI,MAAM,QAAQ,QAAQ;AACxB,qBAAa,SAAS,MAAM,QAAQ;AAAA,MACtC;AACA,UAAI,UAAU,MAAM,MAAM/B,iBAAgB,YAAY,GAAG,MAAM,QAAQ,WAAW,CAAC,CAAC;AAEpF,UAAI,OAAO,IAAI,SAAS,QAAQ,cAAc,UAAU;AACxD,WAAK,UAAU,EAAC,MAAM,UAAU,IAAI,OAAM,CAAC;AAC3C,WAAK,UAAU,EAAC,MAAM,QAAQ,IAAI,QAAO,CAAC;AAC1C,WAAK,UAAU,EAAC,MAAM,QAAQ,IAAI,MAAK,CAAC;AACxC,WAAK,QAAQ,MAAM,IAAI;AAEvB,YAAM,QAAQ,MAAM,aAAa;AAEjC,eAAS,UAAU,OAAO,YAAY,MAAM,OAAO;AAAA,IACrD,CAAC;AAAA,EACH;AAGA,EAAA+B,eAAc,UAAU,UAAU,SAASD,SAAS,OAAO;AACzD,QAAI,MAAM,OAAO;AACf,YAAM,MAAM,WAAW;AAAA,IACzB;AAAA,EACF;AAEA,EAAAC,eAAc,UAAU,YAAY,SAASS,WAAW,OAAO,MAAM,MAAM,SAAS;AAClF,SAAK,QAAQ,KAAK;AAClB,QAAI,MAAM,WAAW;AAAE;AAAA,IAAQ;AAE/B,QAAI,MAAM,QAAQ,MAAM;AACtB,aAAO,QAAQ,IAAI,mDAAmD,KAAK,OAAO,IAAI,8CAA8C,OAAO,kCAAkC,KAAK,UAAU,OAAO,IAAI,IAAI;AAAA,IAC7M;AAEA,UAAM,QAAQ,IAAI,KAAK,QAAQ,cAAc,IAAI,EAAE,MAAM,OAAO;AAChE,WAAO,WAAY;AACjB,YAAM,MAAM,KAAK,MAAM,OAAO;AAAA,IAChC,CAAC;AAAA,EACH;AAEA,EAAAT,eAAc,UAAU,gBAAgB,SAAS,cAAe,OAAO,MAAMU,WAAU;AACnF,QAAI,WAAW;AAEjB,QAAI,CAACA,WAAU;AACb,MAAAA,YAAW;AACX,aAAO;AAAA,IACT;AAEA,cAAU,KAAK,EAAC,MAAY,UAAUA,UAAQ,CAAC;AAE/C,QAAI,OAAO,IAAI,GAAG;AAChB,WAAK,aAAa;AAAA,IACpB,OAAO;AACL,aAAO,IAAI,IAAI;AAGf,UAAI,cAAc;AAAA,QAChB,UAAU,CAAC,IAAI;AAAA,QACf,UAAU,WAAY;AAAE,mBAAS,aAAa;AAAA,QAAG;AAAA,MACnD;AACA,UAAIC,UAAS,MAAM,SAAS;AAC5B,UAAIA,QAAO,UAAU;AACnB,oBAAY,WAAWA,QAAO;AAAA,MAChC;AACA,UAAI,SAAS,cAAcA,QAAO,YAAY;AAC5C,oBAAY,aAAaA,QAAO;AAAA,MAClC;AAEA,WAAK,QAAQ,OAAO,KAAK,WAAW,WAAW;AAAA,IACjD;AAAA,EACF;AAEA,EAAAX,eAAc,UAAU,eAAe,SAAS,eAAgB;AAC9D,aAAStC,KAAI,GAAGA,KAAI,UAAU,QAAQA,MAAK;AACzC,UAAI,KAAK,UAAUA,EAAC;AACpB,UAAI,OAAO,KAAK,QAAQ,kBAAmB,GAAG,SAAS,eAAe,KAAK,QAAQ,cAAc,aAAe,GAAG,SAAS,cAAc,KAAK,QAAQ,cAAc,YAAc,GAAG,SAAS,cAAc,KAAK,QAAQ,cAAc;AACxO,UAAI,MAAM;AACR,WAAG,SAAS;AACZ,kBAAU,OAAOA,IAAG,CAAC;AACrB,QAAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,EAAAsC,eAAc,UAAU,kBAAkB,SAASY,iBAAiB,QAAQ,YAAY;AACtF,QAAI,OAAO,CAAC;AACZ,QAAI,eAAe,CAAC;AACpB,aAASlD,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAIE,KAAI,OAAOF,EAAC;AAChB,aAAOA,EAAC,EAAE,OAAO,OAAOA,EAAC,EAAE,QAAQ;AAEnC,eAASC,KAAI,GAAGA,KAAIC,GAAE,KAAK,QAAQD,MAAK;AACtC,YAAIiB,KAAIhB,GAAE,KAAKD,EAAC;AAChB,YAAI,MAAM,eAAe,aAAaiB,GAAE,CAAC,EAAE,QAAQ,IAAIA,GAAE,CAAC;AAC1D,YAAI,CAAC,KAAK,GAAG,GAAG;AACd,eAAK,GAAG,IAAI,IAAI,MAAM,OAAO,MAAM;AACnC,uBAAa,KAAK,GAAG;AAAA,QACvB;AACA,aAAK,GAAG,EAAElB,EAAC,IAAIkB,GAAE,CAAC;AAAA,MACpB;AAAA,IACF;AAEA,QAAI,QAAQ,CAAC;AACb,QAAI,SAAS,CAAC;AACd,aAASa,OAAM,GAAGA,OAAM,aAAa,QAAQA,QAAO;AAClD,UAAIF,OAAM,aAAaE,IAAG;AAC1B,UAAI,QAAS;AACb,UAAI,eAAe,YAAY;AAC7B,gBAAQ,IAAI,KAAKF,IAAG;AACpB,eAAO,KAAK,KAAK;AAAA,MACnB,OAAO;AACL,gBAAQA;AAAA,MACV;AACA,YAAM,KAAK,CAAC,KAAK,EAAE,OAAO,KAAKA,IAAG,CAAC,CAAC;AAAA,IACtC;AAEA,QAAIvB,OAAM;AACV,QAAI,eAAe,YAAY;AAC7B,YAAM,KAAK,UAAU;AAErB,UAAI,WAAW,kBAAkB,QAAQ,IAAI;AAC7C,MAAAA,OAAM,MAAM,QAAQ;AAAA,IACtB,WAAW,eAAe,UAAU;AAClC,YAAM,KAAK,kBAAkB;AAE7B,eAASwB,OAAM,GAAGA,OAAM,MAAM,QAAQA,QAAO;AAC3C,cAAMA,IAAG,EAAE,CAAC,IAAI,MAAM,MAAMA,IAAG,EAAE,CAAC,CAAC;AAAA,MACrC;AAEA,mBAAa;AAAA,IACf;AAGA,QAAI,OAAO,IAAI,KAAK,QAAQ,cAAc,UAAU;AACpD,iBAAa,eAAe,cAAcxB,OAAM,SAAS;AACzD,SAAK,UAAU,YAAY,EAAE;AAC7B,aAAS6C,OAAM,GAAGA,OAAM,OAAO,QAAQA,QAAO;AAC5C,WAAK,UAAU,UAAU,OAAOA,IAAG,EAAE,IAAI;AAAA,IAC3C;AACA,SAAK,QAAQ,KAAK;AAElB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,CAAC;AAEhB,WAAS,eAAe,SAAS;AAC/B,QAAI,SAAS;AACX,UAAI,QAAQ,YAAY,cAAc;AACpC,eAAO;AAAA,MACT,WAAW,QAAQ,QAAQ;AACzB,eAAOb;AAAA,MACT,WAAWxC,YAAW,OAAO,GAAG;AAC9B,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,IAAI,MAAM,iBAAiB;AAAA,EACnC;AAEA,WAAS,WAAW,SAAS;AAC3B,QAAI,cAAc,eAAe,OAAO;AAExC,aAASE,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,UAAI,SAASA,EAAC,EAAE,YAAY,SAAS;AACnC;AAAA,MACF;AAAA,IACF;AAEA,aAAS,KAAK,IAAI,YAAY,OAAO,CAAC;AAAA,EACxC;AAEA,WAAS,eAAe;AACtB,QAAI,WAAW,QAAQ;AACrB,iBAAW,OAAO,KAAK;AAAA,IACzB;AAEA,QAAI,gBAAgB,QAAQ;AAC1B,iBAAW,OAAO,UAAU;AAAA,IAC9B;AAEA,QAAI,OAAO,UAAU,OAAO,OAAO,QAAQ;AACzC,iBAAW,OAAO,MAAM;AAAA,IAC1B;AAAA,EACF;AAIA,WAAS,YAAY,WAAW,OAAO;AACrC,QAAI,SAAS,WAAW;AACxB,QAAI,cAAc,MAAM,QAAQ;AAEhC,iBAAa;AAEb,aAASA,KAAI,GAAGA,KAAI,SAAS,QAAQA,MAAK;AACxC,UAAI,UAAU,SAASA,EAAC;AACxB,WAAK,CAAC,eAAe,gBAAgB,QAAQ,SAASF,YAAW,QAAQ,MAAM,CAAC,GAAG;AACjF,cAAM,UAAU,QAAQ;AACxB,cAAM,kBAAkB;AACxB,eAAO,QAAQ,MAAM,EAAE,KAAK;AAAA,MAC9B;AAAA,IACF;AAEA,QAAI,SAAS,SAAS,GAAG;AACvB,YAAM,IAAI,MAAM,mCAAmC,SAAS;AAAA,IAC9D,OAAO;AACL,YAAM,IAAI,MAAM,yEAAyE;AAAA,IAC3F;AAAA,EACF;AAEA,MAAI,YAAY;AAAA,IACd,QAAQ,CAAC;AAAA,IACT,WAAW,SAAU,SAAS;AAC5B,eAAS,OAAO,SAAS;AACvB,YAAI,OAAO,UAAU,eAAe,KAAK,SAAS,GAAG,GAAG;AACtD,oBAAU,OAAO,GAAG,IAAI,QAAQ,GAAG;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAAA,IACA,mBAAmB,SAAU,MAAM;AACjC,gBAAU,UAAU;AAAA,IACtB;AAAA,IACA,WAAW,SAAUkD,WAAU;AAC7B,eAAS,WAAW,UAAU,QAAQ;AACpC,YAAI,OAAO,UAAU,eAAe,KAAK,UAAU,QAAQ,OAAO,GAAG;AACnE,UAAAA,UAAS,UAAU,OAAO,OAAO,CAAC;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAAA,IACA,YAAY,WAAY;AACtB,eAAS,WAAW,UAAU,QAAQ;AACpC,YAAI,OAAO,UAAU,eAAe,KAAK,UAAU,QAAQ,OAAO,GAAG;AACnE,oBAAU,OAAO,OAAO,EAAE,QAAQ;AAClC,iBAAO,UAAU,OAAO,OAAO;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,IACV;AAAA,IACA;AAAA,IACA,KAAK,SAAU,SAAS;AACtB,iBAAW,OAAO;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,mBAAmB,MAAM;AAChC,QAAII,KAAI,CAAC;AACT,aAASpD,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,MAAAoD,GAAE,KAAK,CAAC,QAAQ,KAAKpD,EAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,KAAKA,EAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,KAAKA,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAAA,IACxE;AACA,WAAOoD;AAAA,EACT;AAIA,WAAS,iBAAiB,MAAM,SAAS;AACvC,QAAI,YAAY,UAAU;AACxB,aAAO,mBAAmB,IAAI;AAAA,IAChC;AAEA,QAAI;AACJ,QAAI,YAAY,UAAU;AACxB,gBAAU;AAAA,IACZ,WAAW,YAAY,YAAY;AACjC,gBAAU;AAAA,IACZ,OAAO;AACL,gBAAU;AAAA,IACZ;AAEA,QAAIA,KAAI,CAAC;AACT,aAASpD,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,MAAAoD,GAAE,KAAK,CAAC,QAAQ,KAAKpD,EAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,KAAKA,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAAA,IACnD;AACA,WAAOoD;AAAA,EACT;AAEA,WAAS,YAAY,QAAQ,YAAY,SAAS;AAChD,QAAI,UAAU,MAAM,GAAG;AACrB,WAAK,QAAQ,QAAQ,QAAQ,UAAU,CAAC,QAAQ,QAAQ/B,QAAO,QAAQ,IAAI,OAAO,CAAC,QAAQ,QAAQA,QAAO,QAAQ,IAAI,IAAI;AACxH,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,WAAW,wBAAwB,QAAQC,SAAQ,GAAG;AACpD,aAAO;AAAA,IACT,WAAW,CAAC,cAAc,wBAAwB,QAAQD,OAAM,GAAG;AACjE,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,wBAAwB,QAAQ,MAAM;AAC7C,aAASrB,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,OAAO,MAAM,OAAOA,EAAC,EAAE,IAAI;AAC/B,eAASC,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAI,CAAC,KAAK,KAAKA,EAAC,EAAE,CAAC,CAAC,GAAG;AACrB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAIA,WAAS,WAAW,QAAQ;AAC1B,QAAI,YAAY,CAAC;AACjB,aAASD,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,OAAO,CAAC;AACZ,eAASC,MAAK,OAAOD,EAAC,GAAG;AACvB,YAAI,OAAO,UAAU,eAAe,KAAK,OAAOA,EAAC,GAAGC,EAAC,GAAG;AACtD,eAAKA,EAAC,IAAI,OAAOD,EAAC,EAAEC,EAAC;AAAA,QACvB;AAAA,MACF;AACA,gBAAU,KAAK,IAAI;AAAA,IACrB;AACA,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,OAAO,SAAS,YAAY;AACjD,QAAI,OAAO,MAAM;AACjB,QAAI,SAAS,MAAM;AAGnB,UAAM,qBAAqB,CAACJ,SAAQ,MAAM,KAAK,CAAC,cAAc,OAAO,CAAC,CAAC;AACvE,QAAI,MAAM,oBAAoB;AAC5B,eAAS,CAAC,EAAC,MAAM,KAAK,OAAO,MAAM,OAAM,CAAC;AAAA,IAC5C;AAIA,aAAS,WAAW,MAAM;AAC1B,aAASG,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,aAAOA,EAAC,EAAE,OAAO,MAAM,OAAOA,EAAC,EAAE,IAAI;AAAA,IACvC;AAEA,UAAM,QAAQ,YAAY,KAAK,WAAW,WAAW,YAAY,QAAQ,YAAY,IAAI;AAGzF,aAAS6B,OAAM,GAAGA,OAAM,OAAO,QAAQA,QAAO;AAC5C,aAAOA,IAAG,EAAE,OAAO,iBAAiB,OAAOA,IAAG,EAAE,MAAM,MAAM,KAAK;AAAA,IACnE;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,OAAO;AAC5B,QAAI,cAAc,MAAM,MAAM,OAAO;AACrC,aAAS7B,KAAI,GAAGA,KAAI,YAAY,QAAQA,MAAK;AAC3C,kBAAYA,EAAC,IAAI,CAAC,MAAM,YAAYA,EAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,YAAYA,EAAC,EAAE,CAAC,CAAC,CAAC;AAAA,IACxE;AACA,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,MAAM,WAAW;AAClC,QAAI,cAAc,cAAc,cAAc,cAAc,cAAc,YAAY;AACpF,aAAO,KAAK,WAAW;AAAA,IACzB,OAAO;AACL,eAASA,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,YAAI,KAAKA,EAAC,EAAE,KAAK,SAAS,GAAG;AAC3B,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,kBAAkB,OAAO;AAChC,QAAI,WAAW,MAAM,QAAQ;AAC7B,QAAI,aAAa,MAAM;AACrB,iBAAW,CAAC;AAAA,IACd,WAAW,OAAO,aAAa,UAAU;AACvC,iBAAW,EAAC,UAAU,SAAQ;AAAA,IAChC;AAEA,QAAI,OAAO,SAAS,cAAc,GAAG;AACrC,SAAK,WAAW,SAAS,YAAY;AACrC,SAAK,MAAM,WAAW;AACtB,SAAK,MAAM,MAAM;AACjB,SAAK,MAAM,QAAQ;AACnB,SAAK,MAAM,SAAS;AACpB,SAAK,MAAM,aAAa;AACxB,SAAK,SAAS;AAEd,QAAI,QAAQ,SAAS,cAAc,KAAK;AAExC,QAAI,MAAM;AACV,UAAM,MAAM,6BAA8B,mBAAmB,GAAG;AAChE,UAAM,MAAM;AACZ,UAAM,MAAM,QAAQ;AACpB,UAAM,MAAM,SAAS;AACrB,UAAM,MAAM,SAAS;AACrB,SAAK,YAAY,KAAK;AAEtB,QAAI,UAAU,MAAM;AACpB,YAAQ,MAAM,WAAW;AAEzB,UAAM,qBAAqB;AAG3B,UAAM,eAAe,QAAQ,iBAAiB,aAAa,SAAUqD,IAAG;AACtE,UAAI,UAAUA,GAAE;AAEhB,WAAK,CAAC,WAAY,YAAY,QAAQ,CAAC,KAAK,SAAS,OAAO,MAAO,MAAM,QAAQ,UAAU;AACzF,aAAK,OAAO,MAAM,QAAQ,QAAQ;AAClC,gBAAQ,YAAY,IAAI;AAAA,MAC1B;AAAA,IACF,CAAC;AAGD,UAAM,eAAe,QAAQ,iBAAiB,YAAY,SAAUA,IAAG;AACrE,UAAI,UAAUA,GAAE;AAChB,UAAI,CAAC,WAAY,YAAY,QAAQ,CAAC,KAAK,SAAS,OAAO,GAAI;AAC7D,YAAI,KAAK,YAAY;AACnB,eAAK,WAAW,YAAY,IAAI;AAAA,QAClC;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,kBAAkB,CAAC;AACvB,MAAI,kBAAkB;AACtB,MAAI,cAAc;AAElB,WAAS,YAAY,KAAK,SAAS,OAAO;AACxC,oBAAgB,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC;AAC1C,YAAQ;AAAA,EACV;AAEA,WAAS,UAAU;AACjB,QAAI,kBAAkB,aAAa;AACjC,UAAI,UAAU,gBAAgB,MAAM;AACpC,UAAI,SAAS;AACX;AACA,gBAAQ,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC1C,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAEA,WAAS,kBAAkB;AACzB;AACA,YAAQ;AAAA,EACV;AAEA,WAAS,QAAQ,KAAK,SAAS,OAAO;AACpC,QAAI,MAAM,IAAI,eAAe;AAC7B,QAAI,KAAK,OAAO,KAAK,IAAI;AACzB,QAAI,iBAAiB,gBAAgB,kBAAkB;AACvD,QAAI,SAAS,WAAY;AACvB,sBAAgB;AAChB,UAAI,IAAI,WAAW,KAAK;AACtB,gBAAQ,KAAK,MAAM,IAAI,YAAY,CAAC;AAAA,MACtC,OAAO;AACL,cAAM,IAAI,UAAU;AAAA,MACtB;AAAA,IACF;AACA,QAAI,KAAK;AAAA,EACX;AAIA,WAAS,QAAQ,SAAS,MAAM;AAC9B,YAAQ,cAAc;AAAA,EACxB;AAGA,WAAS,WAAW,SAAS,SAAS,UAAU;AAC9C,QAAI,CAAC,UAAU;AACb,gBAAU,0BAA0B;AAAA,IACtC;AACA,YAAQ,SAAS,OAAO;AACxB,YAAQ,MAAM,QAAQ;AAAA,EACxB;AAEA,WAAS,aAAa,OAAO;AAC3B,QAAI;AACF,YAAM,SAAS;AAAA,IACjB,SAAS,KAAK;AACZ,iBAAW,MAAM,SAAS,IAAI,OAAO;AACrC,YAAM;AAAA,IACR;AAAA,EACF;AAEA,WAAS,gBAAgB,OAAO,YAAY,aAAa;AAEvD,QAAI,eAAe,MAAM,QAAQ,YAAY,OAAO,eAAe,YAAY,OAAO,eAAe,aAAa;AAChH,cAAQ,MAAM,SAAS,MAAM,QAAQ,OAAO;AAAA,IAC9C;AAEA,QAAI,OAAO,eAAe,UAAU;AAClC,kBAAY,YAAY,SAAU,MAAM;AACtC,cAAM,UAAU;AAChB,qBAAa,KAAK;AAAA,MACpB,GAAG,SAAU,SAAS;AACpB,mBAAW,MAAM,SAAS,OAAO;AAAA,MACnC,CAAC;AAAA,IACH,WAAW,OAAO,eAAe,YAAY;AAC3C,UAAI;AACF,mBAAW,SAAU,MAAM;AACzB,gBAAM,UAAU;AAChB,uBAAa,KAAK;AAAA,QACpB,GAAG,SAAU,SAAS;AACpB,qBAAW,MAAM,SAAS,SAAS,IAAI;AAAA,QACzC,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,mBAAW,MAAM,SAAS,KAAK,IAAI;AAAA,MACrC;AAAA,IACF,OAAO;AACL,YAAM,UAAU;AAChB,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF;AAEA,WAAS,YAAY,WAAW,OAAO;AACrC,QAAI,UAAU,MAAM,MAAM,SAAS,GAAG;AACpC,UAAI,UAAU,MAAM,QAAQ,SAAU,MAAM,QAAQ,YAAY,MAAM,QAAQ,SAAS,SAAU;AACjG,cAAQ,MAAM,SAAS,OAAO;AAAA,IAChC,OAAO;AACL,kBAAY,WAAW,KAAK;AAE5B,UAAI,MAAM,QAAQ,YAAY,CAAC,MAAM,sBAAsB,MAAM,YAAY,WAAW;AACtF,0BAAkB,KAAK;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,WAAS,WAAW,SAAS;AAC3B,QAAI,OAAO,YAAY,UAAU;AAC/B,UAAI,YAAY;AAChB,gBAAU,SAAS,eAAe,OAAO;AACzC,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI,MAAM,wBAAwB,SAAS;AAAA,MACnD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAIA,MAAI,QAAQ,SAASC,OAAM,SAAS,YAAY,SAAS;AACvD,SAAK,UAAU,WAAW,OAAO;AACjC,SAAK,UAAU,MAAM,UAAU,SAAS,WAAW,CAAC,CAAC;AACrD,SAAK,aAAa;AAGlB,QAAI,KAAK,QAAQ,IAAI;AACnB,gBAAU,OAAO,KAAK,QAAQ,EAAE,IAAI;AAAA,IACtC;AAEA,oBAAgB,MAAM,YAAY,IAAI;AAEtC,QAAI,KAAK,QAAQ,SAAS;AACxB,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,UAAU,aAAa,SAASC,cAAc;AAClD,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,UAAU,gBAAgB,SAAS,gBAAiB;AACxD,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,UAAU,UAAU,SAASC,WAAW;AAC5C,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,UAAU,aAAa,SAAS,aAAc;AAClD,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,UAAU,iBAAiB,SAAS,iBAAkB;AAC1D,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,UAAU,aAAa,SAAS,aAAc;AAClD,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,UAAU,aAAa,SAAS,WAAY,YAAY,SAAS;AACrE,SAAK,aAAa;AAClB,QAAI,SAAS;AACX,WAAK,gBAAgB,OAAO;AAAA,IAC9B;AACA,oBAAgB,MAAM,YAAY,IAAI;AAAA,EACxC;AAEA,QAAM,UAAU,aAAa,SAAS,WAAY,SAAS;AACzD,SAAK,gBAAgB,OAAO;AAC5B,SAAK,OAAO;AAAA,EACd;AAEA,QAAM,UAAU,SAAS,SAAS,SAAU;AAC1C,oBAAgB,MAAM,KAAK,OAAO;AAAA,EACpC;AAEA,QAAM,UAAU,cAAc,SAAS,cAAe;AACpD,QAAI,OAAO,KAAK,eAAe,UAAU;AAEvC,UAAI,MAAM,KAAK,WAAW,QAAQ,GAAG,MAAM,KAAK,MAAM;AACtD,UAAI,MAAM,KAAK,aAAa,MAAM,QAAQ,oBAAI,KAAK,GAAG,QAAQ;AAC9D,sBAAgB,MAAM,GAAG;AAAA,IAC3B,WAAW,OAAO,KAAK,eAAe,YAAY;AAChD,sBAAgB,MAAM,KAAK,UAAU;AAAA,IACvC;AAAA,EACF;AAEA,QAAM,UAAU,eAAe,SAAS,eAAgB;AACpD,QAAI,WAAW;AAEjB,QAAI,UAAU,KAAK,QAAQ;AAE3B,QAAI,WAAW,OAAO,KAAK,eAAe,YAAY,OAAO,KAAK,eAAe,YAAY;AAC3F,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AAEA,QAAI,CAAC,KAAK,YAAY;AACpB,UAAI,SAAS;AACX,aAAK,aAAa,YAAY,WAAY;AACxC,mBAAS,YAAY;AAAA,QACvB,GAAG,UAAU,GAAI;AAAA,MACnB,OAAO;AACL,cAAM,IAAI,MAAM,qBAAqB;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,cAAc,SAAS,cAAe;AACpD,QAAI,KAAK,YAAY;AACnB,oBAAc,KAAK,UAAU;AAC7B,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,UAAU,UAAU,SAAS,QAAS,UAAU;AAEpD,QAAI,KAAK,YAAY,WAAW;AAC9B,UAAI,YAAY,SAAS,cAAc,SAAS,eAAe,eAAe;AAE5E,YAAI,SAAS,KAAK,MAAM;AACxB,YAAI,MAAM,KAAK,MAAM;AACrB,YAAI,YAAY,SAAS,cAAc,QAAQ;AAC/C,YAAI,SAAS,UAAU,WAAW,IAAI;AACtC,kBAAU,QAAQ,IAAI,OAAO;AAC7B,kBAAU,SAAS,IAAI,OAAO;AAC9B,eAAO,YAAY,SAAS;AAC5B,eAAO,SAAS,GAAG,GAAG,UAAU,OAAO,UAAU,MAAM;AACvD,eAAO,UAAU,QAAQ,GAAG,CAAC;AAC7B,eAAO,UAAU,UAAU,WAAW;AAAA,MACxC,OAAO;AACL,eAAO,KAAK,MAAM,cAAc;AAAA,MAClC;AAAA,IACF,OAAO;AACL,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAAA,EACF;AAEA,QAAM,UAAU,UAAU,SAASnB,WAAW;AAC5C,SAAK,YAAY;AACjB,SAAK,YAAY;AAEjB,QAAI,KAAK,iBAAiB;AACxB,WAAK,gBAAgB,QAAQ,IAAI;AAAA,IACnC;AAEA,QAAI,KAAK,cAAc;AACrB,WAAK,QAAQ,oBAAoB,aAAa,KAAK,YAAY;AAAA,IACjE;AAEA,QAAI,KAAK,cAAc;AACrB,WAAK,QAAQ,oBAAoB,YAAY,KAAK,YAAY;AAAA,IAChE;AAAA,EACF;AAEA,QAAM,UAAU,kBAAkB,SAAS,gBAAiB,SAAS;AACnE,QAAI,gBAAgB,QAAQ,WAAW,QAAQ,YAAY,KAAK,QAAQ;AACxE,SAAK,UAAU,MAAM,UAAU,SAAS,OAAO;AAC/C,QAAI,eAAe;AACjB,WAAK,YAAY;AACjB,WAAK,aAAa;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,UAAU,WAAW,SAAS,WAAY;AAC9C,SAAK,OAAO,KAAK,cAAc;AAC/B,gBAAY,KAAK,YAAY,GAAG,IAAI;AAAA,EACtC;AAEA,QAAM,UAAU,WAAW,SAAS,WAAY;AAC9C,WAAO,UAAU;AAAA,EACnB;AAEA,MAAI,YAA0B,0BAAUiB,QAAO;AAC7C,aAASG,aAAa;AACpB,MAAAH,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAG,WAAU,YAAYH;AACnC,IAAAG,WAAU,YAAY,OAAO,OAAQH,UAASA,OAAM,SAAU;AAC9D,IAAAG,WAAU,UAAU,cAAcA;AAElC,IAAAA,WAAU,UAAU,gBAAgB,SAAS,gBAAiB;AAC5D,aAAO,cAAc,IAAI;AAAA,IAC3B;AAEA,IAAAA,WAAU,UAAU,cAAc,SAAS,cAAe;AACxD,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,MAAI,WAAyB,0BAAUH,QAAO;AAC5C,aAASI,YAAY;AACnB,MAAAJ,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAI,UAAS,YAAYJ;AAClC,IAAAI,UAAS,YAAY,OAAO,OAAQJ,UAASA,OAAM,SAAU;AAC7D,IAAAI,UAAS,UAAU,cAAcA;AAEjC,IAAAA,UAAS,UAAU,gBAAgB,SAAS,gBAAiB;AAC3D,aAAO,cAAc,IAAI;AAAA,IAC3B;AAEA,IAAAA,UAAS,UAAU,cAAc,SAAS,cAAe;AACvD,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,MAAI,cAA4B,0BAAUJ,QAAO;AAC/C,aAASK,eAAe;AACtB,MAAAL,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAK,aAAY,YAAYL;AACrC,IAAAK,aAAY,YAAY,OAAO,OAAQL,UAASA,OAAM,SAAU;AAChE,IAAAK,aAAY,UAAU,cAAcA;AAEpC,IAAAA,aAAY,UAAU,gBAAgB,SAAS,gBAAiB;AAC9D,aAAO,cAAc,MAAM,MAAM,IAAI;AAAA,IACvC;AAEA,IAAAA,aAAY,UAAU,cAAc,SAAS,cAAe;AAC1D,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,MAAI,WAAyB,0BAAUL,QAAO;AAC5C,aAASM,YAAY;AACnB,MAAAN,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAM,UAAS,YAAYN;AAClC,IAAAM,UAAS,YAAY,OAAO,OAAQN,UAASA,OAAM,SAAU;AAC7D,IAAAM,UAAS,UAAU,cAAcA;AAEjC,IAAAA,UAAS,UAAU,gBAAgB,SAAS,gBAAiB;AAC3D,aAAO,cAAc,MAAM,MAAM,IAAI;AAAA,IACvC;AAEA,IAAAA,UAAS,UAAU,cAAc,SAAS,cAAe;AACvD,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,MAAI,YAA0B,0BAAUN,QAAO;AAC7C,aAASO,aAAa;AACpB,MAAAP,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAO,WAAU,YAAYP;AACnC,IAAAO,WAAU,YAAY,OAAO,OAAQP,UAASA,OAAM,SAAU;AAC9D,IAAAO,WAAU,UAAU,cAAcA;AAElC,IAAAA,WAAU,UAAU,gBAAgB,SAAS,gBAAiB;AAC5D,aAAO,cAAc,IAAI;AAAA,IAC3B;AAEA,IAAAA,WAAU,UAAU,cAAc,SAAS,cAAe;AACxD,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,MAAI,WAAyB,0BAAUP,QAAO;AAC5C,aAASQ,YAAY;AACnB,MAAAR,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAQ,UAAS,YAAYR;AAClC,IAAAQ,UAAS,YAAY,OAAO,OAAQR,UAASA,OAAM,SAAU;AAC7D,IAAAQ,UAAS,UAAU,cAAcA;AAEjC,IAAAA,UAAS,UAAU,gBAAgB,SAAS,gBAAiB;AAC3D,aAAO,cAAc,IAAI;AAAA,IAC3B;AAEA,IAAAA,UAAS,UAAU,cAAc,SAAS,cAAe;AACvD,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,MAAI,eAA6B,0BAAUR,QAAO;AAChD,aAASS,gBAAgB;AACvB,MAAAT,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAS,cAAa,YAAYT;AACtC,IAAAS,cAAa,YAAY,OAAO,OAAQT,UAASA,OAAM,SAAU;AACjE,IAAAS,cAAa,UAAU,cAAcA;AAErC,IAAAA,cAAa,UAAU,gBAAgB,SAAS,gBAAiB;AAC/D,aAAO,cAAc,MAAM,QAAQ;AAAA,IACrC;AAEA,IAAAA,cAAa,UAAU,cAAc,SAAS,cAAe;AAC3D,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,MAAI,cAA4B,0BAAUT,QAAO;AAC/C,aAASU,eAAe;AACtB,MAAAV,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAU,aAAY,YAAYV;AACrC,IAAAU,aAAY,YAAY,OAAO,OAAQV,UAASA,OAAM,SAAU;AAChE,IAAAU,aAAY,UAAU,cAAcA;AAEpC,IAAAA,aAAY,UAAU,gBAAgB,SAAS,gBAAiB;AAC9D,aAAO,cAAc,MAAM,QAAQ;AAAA,IACrC;AAEA,IAAAA,aAAY,UAAU,cAAc,SAAS,cAAe;AAC1D,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,MAAI,WAAyB,0BAAUV,QAAO;AAC5C,aAASW,YAAY;AACnB,MAAAX,OAAM,MAAM,MAAM,SAAS;AAAA,IAC7B;AAEA,QAAKA,OAAQ,CAAAW,UAAS,YAAYX;AAClC,IAAAW,UAAS,YAAY,OAAO,OAAQX,UAASA,OAAM,SAAU;AAC7D,IAAAW,UAAS,UAAU,cAAcA;AAEjC,IAAAA,UAAS,UAAU,gBAAgB,SAAS,gBAAiB;AAC3D,UAAI,OAAO,KAAK;AAChB,eAASjE,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,aAAKA,EAAC,EAAE,CAAC,IAAI,OAAO,KAAKA,EAAC,EAAE,CAAC,CAAC;AAC9B,aAAKA,EAAC,EAAE,CAAC,IAAI,OAAO,KAAKA,EAAC,EAAE,CAAC,CAAC;AAAA,MAChC;AACA,aAAO;AAAA,IACT;AAEA,IAAAiE,UAAS,UAAU,cAAc,SAAS,cAAe;AACvD,aAAO;AAAA,IACT;AAEA,WAAOA;AAAA,EACT,GAAE,KAAK;AAEP,YAAU,YAAY;AACtB,YAAU,WAAW;AACrB,YAAU,cAAc;AACxB,YAAU,WAAW;AACrB,YAAU,YAAY;AACtB,YAAU,WAAW;AACrB,YAAU,eAAe;AACzB,YAAU,cAAc;AACxB,YAAU,WAAW;AAGrB,MAAI,OAAO,WAAW,eAAe,CAAC,OAAO,WAAW;AACtD,WAAO,YAAY;AAGnB,aAAS,iBAAiB,4BAA4B,WAAY;AAChE,UAAI,UAAU,OAAO,gBAAgB,OAAO;AAC1C,kBAAU,WAAW;AAAA,MACvB;AAAA,IACF,CAAC;AAGD,aAAS,iBAAiB,uBAAuB,WAAY;AAC3D,UAAI,UAAU,OAAO,gBAAgB,OAAO;AAC1C,kBAAU,WAAW;AAAA,MACvB;AAAA,IACF,CAAC;AAGD,eAAW,WAAY;AACrB,aAAO,cAAc,IAAI,MAAM,gBAAgB,CAAC;AAAA,IAClD,GAAG,CAAC;AAAA,EACN;AAGA,YAAU,UAAU;;;;ACr/Eb,WAASC,QAAO;EACrB;AAMK,MAAMC,MAAO,uBAAM;AACxB,QAAIC,KAAK;AACT,WAAO,MAAMA;EACf,GAAA;AAOO,WAASC,cAAcC,OAA2C;AACvE,WAAOA,UAAU,QAAQA,UAAUC;EACrC;AAOO,WAASC,SAAqBF,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,UAASV,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,IACAC,MACAC,SACe;AACf,QAAIF,MAAM,OAAOA,GAAGf,SAAS,YAAY;AACvC,aAAOe,GAAGG,MAAMD,SAASD,IAAAA;;EAE7B;AAuBO,WAASG,KACdC,UACAL,IACAE,SACAI,SACA;AACA,QAAIC,IAAWC,KAAaC;AAC5B,QAAI9B,SAAQ0B,QAAW,GAAA;AACrBG,YAAMH,SAASK;AACf,UAAIJ,SAAS;AACX,aAAKC,KAAIC,MAAM,GAAGD,MAAK,GAAGA,MAAK;AAC7BP,aAAGf,KAAKiB,SAASG,SAASE,EAAAA,GAAIA,EAAAA;QAChC;aACK;AACL,aAAKA,KAAI,GAAGA,KAAIC,KAAKD,MAAK;AACxBP,aAAGf,KAAKiB,SAASG,SAASE,EAAAA,GAAIA,EAAAA;QAChC;;eAEOpB,UAASkB,QAAW,GAAA;AAC7BI,aAAO3B,OAAO2B,KAAKJ,QAAAA;AACnBG,YAAMC,KAAKC;AACX,WAAKH,KAAI,GAAGA,KAAIC,KAAKD,MAAK;AACxBP,WAAGf,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,SAAQyC,MAAS,GAAA;AACnB,aAAOA,OAAOC,IAAIF,MAAAA;;AAGpB,QAAIhC,UAASiC,MAAS,GAAA;AACpB,YAAME,SAASxC,uBAAOyC,OAAO,IAAI;AACjC,YAAMd,OAAO3B,OAAO2B,KAAKW,MAAAA;AACzB,YAAMI,OAAOf,KAAKC;AAClB,UAAIe,KAAI;AAER,aAAOA,KAAID,MAAM,EAAEC,IAAG;AACpBH,eAAOb,KAAKgB,EAAAA,CAAE,IAAIN,OAAMC,OAAOX,KAAKgB,EAAAA,CAAE,CAAC;MACzC;AAEA,aAAOH;;AAGT,WAAOF;EACT;AAEA,WAASM,WAAWC,KAAa;AAC/B,WAAO;MAAC;MAAa;MAAa;MAAeC,QAAQD,GAAAA,MAAS;EACpE;AAOO,WAASE,QAAQF,KAAaL,QAAmBF,QAAmBU,SAAoB;AAC7F,QAAI,CAACJ,WAAWC,GAAM,GAAA;AACpB;;AAGF,UAAMI,OAAOT,OAAOK,GAAI;AACxB,UAAMK,OAAOZ,OAAOO,GAAI;AAExB,QAAIxC,UAAS4C,IAAS5C,KAAAA,UAAS6C,IAAO,GAAA;AAEpCC,MAAAA,OAAMF,MAAMC,MAAMF,OAAAA;WACb;AACLR,aAAOK,GAAI,IAAGR,OAAMa,IAAAA;;EAExB;AA0BO,WAASC,OAASX,QAAWF,QAAqBU,SAAmC;AAC1F,UAAMI,UAAUvD,SAAQyC,MAAAA,IAAUA,SAAS;MAACA;IAAO;AACnD,UAAMN,OAAOoB,QAAQxB;AAErB,QAAI,CAACvB,UAASmC,MAAS,GAAA;AACrB,aAAOA;;AAGTQ,cAAUA,WAAW,CAAA;AACrB,UAAMK,SAASL,QAAQK,UAAUN;AACjC,QAAIO;AAEJ,aAAS7B,KAAI,GAAGA,KAAIO,MAAM,EAAEP,IAAG;AAC7B6B,gBAAUF,QAAQ3B,EAAE;AACpB,UAAI,CAACpB,UAASiD,OAAU,GAAA;AACtB;;AAGF,YAAM3B,OAAO3B,OAAO2B,KAAK2B,OAAAA;AACzB,eAASX,KAAI,GAAGD,OAAOf,KAAKC,QAAQe,KAAID,MAAM,EAAEC,IAAG;AACjDU,eAAO1B,KAAKgB,EAAE,GAAEH,QAAQc,SAASN,OAAAA;MACnC;IACF;AAEA,WAAOR;EACT;AAgBO,WAASe,QAAWf,QAAWF,QAAgC;AAEpE,WAAOa,OAASX,QAAQF,QAAQ;MAACe,QAAQG;IAAS,CAAA;EACpD;AAMO,WAASA,UAAUX,KAAaL,QAAmBF,QAAmB;AAC3E,QAAI,CAACM,WAAWC,GAAM,GAAA;AACpB;;AAGF,UAAMI,OAAOT,OAAOK,GAAI;AACxB,UAAMK,OAAOZ,OAAOO,GAAI;AAExB,QAAIxC,UAAS4C,IAAS5C,KAAAA,UAAS6C,IAAO,GAAA;AACpCK,cAAQN,MAAMC,IAAAA;eACL,CAAClD,OAAOC,UAAUwD,eAAetD,KAAKqC,QAAQK,GAAM,GAAA;AAC7DL,aAAOK,GAAI,IAAGR,OAAMa,IAAAA;;EAExB;AAaA,MAAMQ,eAAe;;IAEnB,IAAIC,CAAAA,OAAKA;;IAETC,GAAGC,CAAAA,OAAKA,GAAED;IACVE,GAAGD,CAAAA,OAAKA,GAAEC;EACZ;AAKO,WAASC,UAAUC,KAAa;AACrC,UAAMC,QAAQD,IAAIE,MAAM,GAAA;AACxB,UAAMC,OAAiB,CAAA;AACvB,QAAIC,MAAM;AACV,eAAWC,QAAQJ,OAAO;AACxBG,aAAOC;AACP,UAAID,IAAIE,SAAS,IAAO,GAAA;AACtBF,cAAMA,IAAIG,MAAM,GAAG,EAAM,IAAA;aACpB;AACLJ,aAAKK,KAAKJ,GAAAA;AACVA,cAAM;;IAEV;AACA,WAAOD;EACT;AAEA,WAASM,gBAAgBT,KAAa;AACpC,UAAMG,OAAOJ,UAAUC,GAAAA;AACvB,WAAOU,CAAAA,QAAO;AACZ,iBAAWC,MAAKR,MAAM;AACpB,YAAIQ,OAAM,IAAI;AAGZ;;AAEFD,cAAMA,OAAOA,IAAIC,EAAE;MACrB;AACA,aAAOD;IACT;EACF;AAEO,WAASE,iBAAiBF,KAAgBV,KAAkB;AACjE,UAAMa,WAAWnB,aAAaM,GAAI,MAAKN,aAAaM,GAAAA,IAAOS,gBAAgBT,GAAG;AAC9E,WAAOa,SAASH,GAAAA;EAClB;AAKO,WAASI,YAAYC,KAAa;AACvC,WAAOA,IAAIC,OAAO,CAAA,EAAGC,YAAW,IAAKF,IAAIR,MAAM,CAAA;EACjD;MAGaW,UAAU,CAACC,UAAmB,OAAOA,UAAU;MAE/CC,cAAa,CAACD,UAAqD,OAAOA,UAAU;AAGpFE,MAAAA,YAAY,CAAIC,IAAWC,OAAc;AACpD,QAAID,GAAEE,SAASD,GAAEC,MAAM;AACrB,aAAO;;AAGT,eAAWC,QAAQH,IAAG;AACpB,UAAI,CAACC,GAAEG,IAAID,IAAO,GAAA;AAChB,eAAO;;IAEX;AAEA,WAAO;EACT;AAMO,WAASE,cAAcC,IAAe;AAC3C,WAAOA,GAAEC,SAAS,aAAaD,GAAEC,SAAS,WAAWD,GAAEC,SAAS;EAClE;ACvZO,MAAMC,KAAKC,KAAKD;AAChB,MAAME,MAAM,IAAIF;AAChB,MAAMG,QAAQD,MAAMF;AACdI,MAAAA,WAAWC,OAAOC;AACxB,MAAMC,cAAcP,KAAK;AACzB,MAAMQ,UAAUR,KAAK;AACrB,MAAMS,aAAaT,KAAK;AAClBU,MAAAA,gBAAgBV,KAAK,IAAI;AAEzBW,MAAAA,QAAQV,KAAKU;AACbC,MAAAA,OAAOX,KAAKW;AAElB,WAASC,aAAa/C,IAAWE,IAAW8C,SAAiB;AAClE,WAAOb,KAAKc,IAAIjD,KAAIE,EAAK8C,IAAAA;EAC3B;AAKO,WAASE,QAAQC,OAAe;AACrC,UAAMC,eAAejB,KAAKkB,MAAMF,KAAAA;AAChCA,YAAQJ,aAAaI,OAAOC,cAAcD,QAAQ,GAAA,IAAQC,eAAeD;AACzE,UAAMG,YAAYnB,KAAKoB,IAAI,IAAIpB,KAAKqB,MAAMX,MAAMM,KAAAA,CAAAA,CAAAA;AAChD,UAAMM,WAAWN,QAAQG;AACzB,UAAMI,eAAeD,YAAY,IAAI,IAAIA,YAAY,IAAI,IAAIA,YAAY,IAAI,IAAI;AACjF,WAAOC,eAAeJ;EACxB;AAMO,WAASK,WAAWpC,OAAe;AACxC,UAAMqC,SAAmB,CAAA;AACzB,UAAMC,OAAO1B,KAAK0B,KAAKtC,KAAAA;AACvB,QAAIuC;AAEJ,SAAKA,KAAI,GAAGA,KAAID,MAAMC,MAAK;AACzB,UAAIvC,QAAQuC,OAAM,GAAG;AACnBF,eAAOhD,KAAKkD,EAAAA;AACZF,eAAOhD,KAAKW,QAAQuC,EAAAA;;IAExB;AACA,QAAID,UAAUA,OAAO,IAAI;AACvBD,aAAOhD,KAAKiD,IAAAA;;AAGdD,WAAOG,KAAK,CAACrC,IAAGC,OAAMD,KAAIC,EAAAA,EAAGqC,IAAG;AAChC,WAAOJ;EACT;AAKA,WAASK,eAAeC,IAAY;AAClC,WAAO,OAAOA,OAAM,YAAa,OAAOA,OAAM,YAAYA,OAAM,QAAQ,EAAEC,OAAOC,eAAeF,MAAK,cAAcA,MAAK,aAAaA;EACvI;AAEO,WAASG,UAASH,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,OACAC,QACAC,UACA;AACA,QAAIhB,IAAWiB,MAAcxD;AAE7B,SAAKuC,KAAI,GAAGiB,OAAOH,MAAMI,QAAQlB,KAAIiB,MAAMjB,MAAK;AAC9CvC,cAAQqD,MAAMd,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,SAAiB;AACzC,WAAOA,WAAW,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,KAAaC,uBAAiC;AACxG,UAAMjF,KAAI6E,gBAAgBP,KAAAA;AAC1B,UAAMY,KAAIL,gBAAgBE,MAAAA;AAC1B,UAAMzE,KAAIuE,gBAAgBG,GAAAA;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,KAAaC,KAAa;AACnE,WAAO/C,KAAK+C,IAAID,KAAK9C,KAAK8C,IAAIC,KAAK3D,KAAAA,CAAAA;EACrC;AAMO,WAAS2F,YAAY3F,OAAe;AACzC,WAAO0F,YAAY1F,OAAO,QAAQ,KAAA;EACpC;AASO,WAAS4F,WAAW5F,OAAekF,QAAeC,KAAa1D,UAAU,MAAM;AACpF,WAAOzB,SAASY,KAAK8C,IAAIwB,QAAOC,GAAAA,IAAO1D,WAAWzB,SAASY,KAAK+C,IAAIuB,QAAOC,GAAO1D,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,KACAmB,OACAqG,SAEAR,QAAQC,OAAO9F,OAAOqG,OAClBL,CAAAA,WAAS;AACT,UAAMM,KAAKR,MAAME,MAAAA,EAAOnH,GAAI;AAC5B,WAAOyH,KAAKtG,SAASsG,OAAOtG,SAAS8F,MAAME,SAAQ,CAAA,EAAGnH,GAAAA,MAASmB;MAE/DgG,CAAAA,WAASF,MAAME,MAAAA,EAAOnH,GAAAA,IAAOmB,KAAK;AAS3BuG,MAAAA,gBAAgB,CAC3BT,OACAjH,KACAmB,UAEA6F,QAAQC,OAAO9F,OAAOgG,CAAAA,WAASF,MAAME,MAAAA,EAAOnH,GAAAA,KAAQmB,KAAO;AAStD,WAASwG,eAAeC,QAAkB/C,KAAaC,KAAa;AACzE,QAAIuB,SAAQ;AACZ,QAAIC,MAAMsB,OAAOhD;AAEjB,WAAOyB,SAAQC,OAAOsB,OAAOvB,MAAAA,IAASxB,KAAK;AACzCwB,MAAAA;IACF;AACA,WAAOC,MAAMD,UAASuB,OAAOtB,MAAM,CAAA,IAAKxB,KAAK;AAC3CwB;IACF;AAEA,WAAOD,SAAQ,KAAKC,MAAMsB,OAAOhD,SAC7BgD,OAAOrH,MAAM8F,QAAOC,GAAAA,IACpBsB;EACN;AAEA,MAAMC,cAAc;IAAC;IAAQ;IAAO;IAAS;IAAU;EAAU;AAgB1D,WAASC,kBAAkBtD,OAAOuD,UAAU;AACjD,QAAIvD,MAAMwD,UAAU;AAClBxD,YAAMwD,SAASC,UAAUzH,KAAKuH,QAAAA;AAC9B;;AAGFG,WAAOC,eAAe3D,OAAO,YAAY;MACvC4D,cAAc;MACdC,YAAY;MACZlH,OAAO;QACL8G,WAAW;UAACF;QAAS;MACvB;IACF,CAAA;AAEAF,gBAAYS,QAAQ,CAACtI,QAAQ;AAC3B,YAAMuI,SAAS,YAAYzH,YAAYd,GAAAA;AACvC,YAAMwI,OAAOhE,MAAMxE,GAAI;AAEvBkI,aAAOC,eAAe3D,OAAOxE,KAAK;QAChCoI,cAAc;QACdC,YAAY;QACZlH,SAASsH,MAAM;AACb,gBAAMC,MAAMF,KAAKG,MAAM,MAAMF,IAAAA;AAE7BjE,gBAAMwD,SAASC,UAAUK,QAAQ,CAACM,WAAW;AAC3C,gBAAI,OAAOA,OAAOL,MAAAA,MAAY,YAAY;AACxCK,qBAAOL,MAAAA,EAAWE,GAAAA,IAAAA;;UAEtB,CAAA;AAEA,iBAAOC;QACT;MACF,CAAA;IACF,CAAA;EACF;AAQO,WAASG,oBAAoBrE,OAAOuD,UAAU;AACnD,UAAMe,OAAOtE,MAAMwD;AACnB,QAAI,CAACc,MAAM;AACT;;AAGF,UAAMb,aAAYa,KAAKb;AACvB,UAAMd,SAAQc,WAAUc,QAAQhB,QAAAA;AAChC,QAAIZ,WAAU,IAAI;AAChBc,MAAAA,WAAUe,OAAO7B,QAAO,CAAA;;AAG1B,QAAIc,WAAUrD,SAAS,GAAG;AACxB;;AAGFiD,gBAAYS,QAAQ,CAACtI,QAAQ;AAC3B,aAAOwE,MAAMxE,GAAI;IACnB,CAAA;AAEA,WAAOwE,MAAMwD;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,oBAAoB,WAAW;AAC1C,QAAI,OAAOC,WAAW,aAAa;AACjC,aAAO,SAASC,WAAU;AACxB,eAAOA,UAAAA;MACT;;AAEF,WAAOD,OAAOE;EAChB,GAAK;AAME,WAASC,UACdC,IACAC,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,aAAGM,MAAML,SAASC,SAAAA;QACpB,CAAA;;IAEJ;EACF;AAKO,WAASK,UAAmCP,IAA8BQ,OAAe;AAC9F,QAAIC;AACJ,WAAO,YAAYL,MAAa;AAC9B,UAAII,OAAO;AACTE,qBAAaD,OAAAA;AACbA,kBAAUE,WAAWX,IAAIQ,OAAOJ,IAAAA;aAC3B;AACLJ,WAAGM,MAAM,MAAMF,IAAAA;;AAEjB,aAAOI;IACT;EACF;AAMO,MAAMI,qBAAqB,CAACC,UAAsCA,UAAU,UAAU,SAASA,UAAU,QAAQ,UAAU;AAMrHC,MAAAA,iBAAiB,CAACD,OAAmCE,QAAeC,QAAgBH,UAAU,UAAUE,SAAQF,UAAU,QAAQG,OAAOD,SAAQC,OAAO;AAMxJC,MAAAA,SAAS,CAACJ,OAAoCK,MAAcC,OAAeC,QAAiB;AACvG,UAAMC,QAAQD,MAAM,SAAS;AAC7B,WAAOP,UAAUQ,QAAQF,QAAQN,UAAU,YAAYK,OAAOC,SAAS,IAAID;EAC7E;AAMO,WAASI,iCAAiCC,MAAqCC,QAAwBC,oBAA6B;AACzI,UAAMC,aAAaF,OAAOG;AAE1B,QAAIZ,SAAQ;AACZ,QAAIa,QAAQF;AAEZ,QAAIH,KAAKM,SAAS;AAChB,YAAM,EAACC,QAAQC,QAAQC,QAAAA,IAAWT;AAClC,YAAMU,WAAWV,KAAKW,UAAUX,KAAKW,QAAQC,UAAUZ,KAAKW,QAAQC,QAAQF,WAAW,OAAO;AAC9F,YAAMG,OAAON,OAAOM;AACpB,YAAM,EAACC,KAAKC,KAAKC,YAAYC,WAAU,IAAIV,OAAOW,cAAa;AAE/D,UAAIF,YAAY;AACdxB,QAAAA,SAAQ2B,KAAKL;;UAEXM,aAAaX,SAASI,MAAMC,GAAKO,EAAAA;;UAEjCnB,qBAAqBC,aAAaiB,aAAanB,QAAQY,MAAMN,OAAOe,iBAAiBR,GAAAA,CAAAA,EAAMO;QAAE;AAC/F,YAAIX,UAAU;AACZ,gBAAMa,sBAAuBd,QAC1Be,MAAM,GAAGhC,SAAQ,CAAA,EACjBiC,QAAO,EACPC,UACCC,CAAAA,UAAS,CAACC,cAAcD,MAAMnB,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,MAAM0B,KAAKJ;;UAEbK,aAAaX,SAASF,OAAOM,MAAME,KAAK,IAAI,EAAEe,KAAK;;UAEnD5B,qBAAqB,IAAIkB,aAAanB,QAAQY,MAAMN,OAAOe,iBAAiBP,GAAAA,GAAM,IAAI,EAAEe,KAAK;QAAC;AAChG,YAAIpB,UAAU;AACZ,gBAAMqB,sBAAuBtB,QAC1Be,MAAM/B,MAAM,CAAA,EACZiC,UACCC,CAAAA,UAAS,CAACC,cAAcD,MAAMnB,OAAOK,IAAI,CAAC,CAAA;AAC9CpB,iBAAO0B,KAAKJ,IAAI,GAAGgB,mBAAAA;;AAErB1B,gBAAQwB,YAAYpC,KAAKD,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,SAAgB1H,SAAoC;AAC3EA,cAAUA,WAAW,CAAA;AACrB,UAAM2H,WAAWD,UAASE,KAAKC,UAAU7H,OAAAA;AACzC,QAAI8H,aAAYP,UAAUQ,IAAIJ,QAAAA;AAC9B,QAAI,CAACG,YAAW;AACdA,MAAAA,aAAY,IAAIE,KAAKC,aAAaP,SAAQ1H,OAAAA;AAC1CuH,gBAAU1B,IAAI8B,UAAUG,UAAAA;;AAE1B,WAAOA;EACT;AAEO,WAASI,aAAaC,KAAaT,SAAgB1H,SAAoC;AAC5F,WAAOyH,gBAAgBC,SAAQ1H,OAASoI,EAAAA,OAAOD,GAAAA;EACjD;ACRA,MAAME,aAAa;IAOjBC,OAAOtD,OAAO;AACZ,aAAOuD,SAAQvD,KAAS,IAAyBA,QAAS,KAAKA;IACjE;IAUAwD,QAAQC,WAAWC,QAAOC,OAAO;AAC/B,UAAIF,cAAc,GAAG;AACnB,eAAO;;AAGT,YAAMf,UAAS,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,UAAU;QAAC6I;QAAUU,uBAAuBH;QAAYI,uBAAuBJ;MAAU;AAC/FtH,aAAOC,OAAO/B,SAAS,KAAKA,QAAQ2I,MAAMP,MAAM;AAEhD,aAAOF,aAAaO,WAAWf,SAAQ1H,OAAAA;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,YAAYA,QAAQqK;QACtCM,WAAW,CAACD,MAAM1K,YAAYA,QAAQmF;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,KAAK;AAC3B,QAAI,CAACA,KAAK;AACR,aAAOD;;AAET,UAAME,OAAOD,IAAIE,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,MAAMC,OAAOzE,QAAQ;AAChC,QAAI,OAAOyE,UAAU,UAAU;AAC7B,aAAOC,OAAMV,WAASQ,MAAMC,KAAQzE,GAAAA,MAAAA;;AAEtC,WAAO0E,OAAMV,WAASQ,MAAM,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,YAAYqF,cAAcrF,QAAQqN,eAAe;AACnF,WAAKkB,mBAAmB,CAACD,KAAKtO,YAAYqF,cAAcrF,QAAQsN,WAAW;AAC3E,WAAKkB,aAAa,CAACF,KAAKtO,YAAYqF,cAAcrF,QAAQmF,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,UAASF,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,MACAC,IACAC,SACAC,QACA;AACA,QAAIC,YAAYJ,KAAKG,MAAO;AAC5B,QAAI,CAACC,WAAW;AACdA,kBAAYJ,KAAKG,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,OAAOS,OAAMT,OAAOS,OAAMT,QAAQ,CAAA;AACtC,QAAIC,KAAKQ,OAAMC,iBAAiBD,OAAMC,kBAAkB,CAAA;AAExD,QAAID,OAAMpD,SAASA,MAAM;AACvB2C,aAAOS,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,SAAQiJ,KAAQ,GAAA;AAC5Db,kBAAUH,aAAalC,KAAKmC,MAAMC,IAAIC,SAASa,KAAAA;iBACtCjJ,SAAQiJ,KAAQ,GAAA;AAGzB,aAAKF,KAAI,GAAGC,OAAOC,MAAMhS,QAAQ8R,KAAIC,MAAMD,MAAK;AAC9CG,wBAAcD,MAAMF,EAAE;AAEtB,cAAIG,gBAAgB3L,UAAa2L,gBAAgB,QAAQ,CAAClJ,SAAQkJ,WAAc,GAAA;AAC9Ed,sBAAUH,aAAalC,KAAKmC,MAAMC,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,KAAKC,GAAG/D,EAAAA,CAAE;MACnB;AACA+D,SAAGkB,OAAO,GAAGD,KAAAA;;AAEf,WAAOhB;EACT;AAUO,WAASkB,YAAYjJ,OAAckJ,OAAe/G,OAAe;AACtE,UAAMyC,oBAAmB5E,MAAMmJ;AAC/B,UAAMC,YAAYjH,UAAU,IAAIxK,KAAKJ,IAAI4K,QAAQ,GAAG,GAAA,IAAO;AAC3D,WAAOxK,KAAK0R,OAAOH,QAAQE,aAAaxE,iBAAAA,IAAoBA,oBAAmBwE;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,SACAyS,IACAC,IACA;AAEAC,oBAAgBrE,KAAKtO,SAASyS,IAAGC,IAAG,IAAI;EAC1C;AAGO,WAASC,gBACdrE,KACAtO,SACAyS,IACAC,IACAE,IACA;AACA,QAAI3N,MAAc4N,SAAiBC,SAAiB9E,MAAc+E,cAAsBhI,OAAeiI,UAAkBC;AACzH,UAAMhF,QAAQjO,QAAQkT;AACtB,UAAMC,WAAWnT,QAAQmT;AACzB,UAAMC,SAASpT,QAAQoT;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,gBAAQ6H,KAAIA,KAAI,IAAIQ;AACpB9E,YAAIwF,OAAOrB,KAAIlS,KAAK+B,IAAI+Q,GAAOtI,IAAAA,OAAO2H,KAAInS,KAAKiD,IAAI6P,GAAOD,IAAAA,MAAAA;AAC1DC,eAAOU;AACPzF,YAAI0F,OAAOvB,KAAIlS,KAAK+B,IAAI+Q,GAAOtI,IAAAA,OAAO2H,KAAInS,KAAKiD,IAAI6P,GAAOD,IAAAA,MAAAA;AAC1DC,eAAOU;AACPzF,YAAI0F,OAAOvB,KAAIlS,KAAK+B,IAAI+Q,GAAOtI,IAAAA,OAAO2H,KAAInS,KAAKiD,IAAI6P,GAAOD,IAAAA,MAAAA;AAC1D9E,YAAIuF,UAAS;AACb;MACF,KAAK;AAQHd,uBAAeK,SAAS;AACxBpF,eAAOoF,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,iBAAOzN,KAAK2T,UAAUd;AACtBrI,kBAAQ6H,KAAIA,KAAI,IAAI5E;AACpBM,cAAI6F,KAAK1B,KAAI1H,OAAO2H,KAAI1E,MAAM,IAAIjD,OAAO,IAAIiD,IAAAA;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,QAAQqU,cAAc,GAAG;AAC3B/F,UAAIgG,OAAM;;EAEd;AASO,WAASC,eACdxT,OACAyT,MACAC,QACA;AACAA,aAASA,UAAU;AAEnB,WAAO,CAACD,QAASzT,SAASA,MAAM0R,IAAI+B,KAAKzV,OAAO0V,UAAU1T,MAAM0R,IAAI+B,KAAKxV,QAAQyV,UACjF1T,MAAM2R,IAAI8B,KAAKnN,MAAMoN,UAAU1T,MAAM2R,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,MACAnG,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,MAAM;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,MACA;AACA,QAAI,CAACD,UAAU;AACb,aAAOvG,IAAI0F,OAAO9D,OAAOuC,GAAGvC,OAAOwC,CAAC;;AAEtCpE,QAAI2G,cACFH,OAAOD,SAASK,OAAOL,SAASM,MAChCL,OAAOD,SAASO,OAAOP,SAASQ,MAChCP,OAAO5E,OAAOiF,OAAOjF,OAAOgF,MAC5BJ,OAAO5E,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,OAAO0T,KAAIuD,QAAQC;AACzB,YAAMjX,QAAQyT,KAAIuD,QAAQE;AAC1B,YAAM7O,MAAMqL,KAAIsD,QAAQG;AACxB,YAAM7O,SAASoL,KAAIsD,QAAQI;AAC3B,YAAMC,cAAcd,KAAKO,iBAAiBzO,MAAMC,UAAU,IAAIA;AAE9DgH,UAAIgI,cAAchI,IAAImH;AACtBnH,UAAIoF,UAAS;AACbpF,UAAIjE,YAAYkL,KAAKgB,mBAAmB;AACxCjI,UAAIwF,OAAO/U,MAAMsX,WAAAA;AACjB/H,UAAI0F,OAAOhV,OAAOqX,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,SAAQ0C,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,MAAsB;AACzE,UAAM6J,YAAW,KAAK7S,OAAO8S,MAAMJ,WAAAA;AACnC,QAAI,CAACG,YAAWA,SAAQ,CAAA,MAAO,UAAU;AACvC,aAAO7J,OAAO;;AAGhBhJ,YAAQ,CAAC6S,SAAQ,CAAE;AAEnB,YAAQA,SAAQ,CAAE,GAAA;MAChB,KAAK;AACH,eAAO7S;MACT,KAAK;AACHA,iBAAS;AACT;IAGJ;AAEA,WAAOgJ,OAAOhJ;EAChB;AAEA,MAAM+S,eAAe,CAAC9Q,OAAe,CAACA,MAAK;AAQpC,WAAS+Q,kBAAkBhT,OAAwCiT,OAA0C;AAClH,UAAMC,MAAM,CAAA;AACZ,UAAMC,WAAWhI,UAAS8H,KAAAA;AAC1B,UAAMxL,OAAO0L,WAAWrW,OAAO2K,KAAKwL,KAAAA,IAASA;AAC7C,UAAMG,OAAOjI,UAASnL,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,KAAKC,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,SAA4B2Y,UAA8B;AAC/E3Y,cAAUA,WAAW,CAAA;AACrB2Y,eAAWA,YAAY/S,SAASkI;AAEhC,QAAIE,OAAOoC,eAAepQ,QAAQgO,MAAM2K,SAAS3K,IAAI;AAErD,QAAI,OAAOA,SAAS,UAAU;AAC5BA,aAAO4K,SAAS5K,MAAM,EAAA;;AAExB,QAAIC,QAAQmC,eAAepQ,QAAQiO,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,QAAQ+N,QAAQ4K,SAAS5K,MAAM;MACtDG,YAAY0J,aAAaxH,eAAepQ,QAAQkO,YAAYyK,SAASzK,UAAU,GAAGF,IAAAA;MAClFA;MACAC;MACAE,QAAQiC,eAAepQ,QAAQmO,QAAQwK,SAASxK,MAAM;MACtDyC,QAAQ;IACV;AAEA9C,SAAK8C,SAASL,aAAazC,IAAAA;AAC3B,WAAOA;EACT;AAaO,WAASiL,QAAQC,QAAwBvL,SAAkB/E,QAAgBuQ,OAA+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,SAAQvD,KAAQ,GAAA;AACzCA,gBAAQA,MAAM0D,SAAQ1D,MAAMxF,MAAM;AAClC0Z,oBAAY;;AAEd,UAAIlU,UAAUc,QAAW;AACvB,YAAImT,SAAQ,CAACC,WAAW;AACtBD,UAAAA,MAAKC,YAAY;;AAEnB,eAAOlU;;IAEX;EACF;AAQO,WAASmU,UAAUC,QAAuCjP,OAAwBH,aAAsB;AAC7G,UAAM,EAAC9J,KAAKC,IAAAA,IAAOiZ;AACnB,UAAMC,SAASC,YAAYnP,QAAQhK,MAAMD,OAAO,CAAA;AAChD,UAAMqZ,WAAW,CAACvU,OAAewU,QAAgBxP,eAAehF,UAAU,IAAI,IAAIA,QAAQwU;AAC1F,WAAO;MACLtZ,KAAKqZ,SAASrZ,KAAK,CAACK,KAAKyI,IAAIqQ,MAAAA,CAAAA;MAC7BlZ,KAAKoZ,SAASpZ,KAAKkZ,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,YAAWhW,WAAAA,IAAeA,cAAc,MAAMA;MAC5DiW,aAAaD,YAAWjW,UAAAA,IAAcA,aAAa,MAAMA;IAC3D;EACF;AAEA,MAAMmW,UAAU,CAACC,QAAgBlW,UAAiBkW,SAASA,SAASC,YAAYnW,KAAAA,IAAQA;AACxF,MAAMoW,mBAAmB,CAACvE,MAAcrT,UAAmBmL,UAASnL,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,YAAWvX,KAAAA,KAAUqH,aAAYiQ,aAAajE,IAAO,GAAA;AACvDrT,cAAQ+X,mBAAmB1E,MAAMrT,OAAOkL,QAAQ6L,QAAAA;;AAElD,QAAIxT,SAAQvD,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,UAASnL,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,YAAW5D,QAAAA,IAAYA,SAASN,MAAMrT,KAAAA,IAAS2T;EACxD;AAEA,MAAMrM,WAAW,CAACE,KAAwBoR,WAAsBpR,QAAQ,OAAOoR,SAC3E,OAAOpR,QAAQ,WAAWqR,iBAAiBD,QAAQpR,GAAAA,IAAO1G;AAE9D,WAASgY,UACPjY,MACAkY,cACAvR,KACAwR,gBACAhZ,OACA;AACA,eAAW4Y,UAAUG,cAAc;AACjC,YAAMhR,QAAQT,SAASE,KAAKoR,MAAAA;AAC5B,UAAI7Q,OAAO;AACTlH,QAAAA,KAAI2T,IAAIzM,KAAAA;AACR,cAAM4L,WAAWgF,gBAAgB5Q,MAAM1G,WAAWmG,KAAKxH,KAAAA;AACvD,YAAI,OAAO2T,aAAa,eAAeA,aAAanM,OAAOmM,aAAaqF,gBAAgB;AAGtF,iBAAOrF;;iBAEA5L,UAAU,SAAS,OAAOiR,mBAAmB,eAAexR,QAAQwR,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,MAAM0R,iBAAiBrY,MAAKoY,WAAW5F,MAAMM,YAAYN,MAAMrT,KAAAA;AACnE,QAAIwH,QAAQ,MAAM;AAChB,aAAO;;AAET,QAAI,OAAOmM,aAAa,eAAeA,aAAaN,MAAM;AACxD7L,YAAM0R,iBAAiBrY,MAAKoY,WAAWtF,UAAUnM,KAAKxH,KAAAA;AACtD,UAAIwH,QAAQ,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,KACAmM,UACA8E,MACA;AACA,WAAOjR,KAAK;AACVA,YAAMsR,UAAUjY,MAAKoY,WAAWzR,KAAKmM,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,SAAQ2H,MAAWC,KAAAA,UAASnL,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,KAAaoN,QAAqB;AAClD,eAAW7M,SAAS6M,QAAQ;AAC1B,UAAI,CAAC7M,OAAO;AACV;;AAEF,YAAM/H,QAAQ+H,MAAMP,GAAI;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,OAAO1K,OAAO2K,KAAKM,KAAOyQ,EAAAA,OAAO3Q,CAAAA,OAAK,CAACA,GAAEX,WAAW,GAAO,CAAA,GAAA;AACpErG,QAAAA,KAAI2T,IAAIhN,GAAAA;MACV;IACF;AACA,WAAO2Q,MAAMlX,KAAKJ,IAAAA;EACpB;AAEO,WAASwY,4BACdjf,MACAqR,MACA7R,QACAa,OACA;AACA,UAAM,EAACE,OAAM,IAAIP;AACjB,UAAM,EAACoN,MAAM,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,KAAK/H,MAAM;AAClB6V,aAAO5R,EAAAA,IAAK;QACV6R,GAAG7e,OAAO8e,MAAMZ,iBAAiBJ,MAAMjR,GAAM9D,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,OAAOF,WAAWL,OAAOI,cAAcC;AAC7C,UAAMG,MAAMC,sBAAsBH,SAASrK,QAAAA;AAC3C,UAAMyK,MAAMD,sBAAsBF,MAAMD,OAAAA;AAExC,QAAIK,MAAMH,OAAOA,MAAME;AACvB,QAAIE,MAAMF,OAAOF,MAAME;AAGvBC,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,KAAK1M,IAAIoC,SAASpC;QACvCC,GAAGwM,QAAQxM,IAAI+M,MAAMN,KAAKzM,IAAImC,SAASnC;MACzC;MACAyM,MAAM;QACJ1M,GAAGyM,QAAQzM,IAAIiN,MAAMP,KAAK1M,IAAIoC,SAASpC;QACvCC,GAAGwM,QAAQxM,IAAIgN,MAAMP,KAAKzM,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,SAAAA,EAAW,IAAIgS,SAAS3X;AAC3CqX,qBAAa,MAAMI,SAAU,EAAC,IAAIG,SAAS5X,QAAQ+W,GAAGlT,EAAE;;AAE1D,UAAIyT,YAAY;AACdtX,iBAASsX,WAAW3R,SAAU,IAAGgS,UAAU;AAC3CN,qBAAa,MAAM1R,SAAAA,EAAW,IAAIgS,SAAS3X;AAC3CqX,qBAAa,MAAMI,SAAU,EAAC,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,KAAY7gB,KAAaC,KAAa;AAC7D,WAAOI,KAAKJ,IAAII,KAAKL,IAAI6gB,KAAI5gB,GAAMD,GAAAA,GAAAA;EACrC;AAEA,WAAS8gB,gBAAgB3hB,QAAuBmV,MAAiB;AAC/D,QAAI7H,IAAG0E,MAAMtQ,OAAOkgB,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,cAAQ1B,OAAOsN,EAAE;AACjB,UAAIuU,YAAY;AACdngB,cAAMmU,OAAO4L,gBAAgB/f,MAAMmU,MAAMV,KAAKzV,MAAMyV,KAAKxV,KAAK;AAC9D+B,cAAMqU,OAAO0L,gBAAgB/f,MAAMqU,MAAMZ,KAAKnN,KAAKmN,KAAKlN,MAAM;;AAEhE,UAAI6Z,YAAY;AACdpgB,cAAMoU,OAAO2L,gBAAgB/f,MAAMoU,MAAMX,KAAKzV,MAAMyV,KAAKxV,KAAK;AAC9D+B,cAAMsU,OAAOyL,gBAAgB/f,MAAMsU,MAAMb,KAAKnN,KAAKmN,KAAKlN,MAAM;;IAElE;EACF;AAKO,WAAS8Z,2BACd/hB,QACAW,SACAwU,MACAtO,MACAuI,WACA;AACA,QAAI9B,IAAW0E,MAActQ,OAAoBsgB;AAGjD,QAAIrhB,QAAQF,UAAU;AACpBT,eAASA,OAAOme,OAAO,CAACuD,QAAO,CAACA,IAAGnC,IAAI;;AAGzC,QAAI5e,QAAQshB,2BAA2B,YAAY;AACjDX,0BAAoBthB,QAAQoP,SAAAA;WACvB;AACL,UAAI8S,OAAOrb,OAAO7G,OAAOA,OAAOG,SAAS,CAAE,IAAGH,OAAO,CAAE;AACvD,WAAKsN,KAAI,GAAG0E,OAAOhS,OAAOG,QAAQmN,KAAI0E,MAAM,EAAE1E,IAAG;AAC/C5L,gBAAQ1B,OAAOsN,EAAE;AACjB0U,wBAAgBvC,YACdyC,MACAxgB,OACA1B,OAAOkB,KAAKL,IAAIyM,KAAI,GAAG0E,QAAQnL,OAAO,IAAI,EAAA,IAAMmL,IAAK,GACrDrR,QAAQwhB,OAAO;AAEjBzgB,cAAMmU,OAAOmM,cAAcxM,SAASpC;AACpC1R,cAAMqU,OAAOiM,cAAcxM,SAASnC;AACpC3R,cAAMoU,OAAOkM,cAAclC,KAAK1M;AAChC1R,cAAMsU,OAAOgM,cAAclC,KAAKzM;AAChC6O,eAAOxgB;MACT;;AAGF,QAAIf,QAAQghB,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,UAAUD,GAAkBC;AAClC,UAAMC,SAAUD,WAAWA,QAAQ/jB,SAAS+jB,QAAQ,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,QACApb,OAC0B;AAC1B,QAAI,YAAYob,QAAO;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,QAAO7R,MAAAA;AAC7C,UAAMU,UAAUsR,SAASplB,QAAQ4kB,OAAOS,QAAQrlB;AAChD,UAAM+T,UAAUqR,SAAS9c,OAAOsc,OAAOS,QAAQ/c;AAE/C,QAAI,EAAC0D,OAAOwH,OAAAA,IAAU3J;AACtB,QAAIqb,WAAW;AACblZ,eAASoZ,SAASpZ,QAAQqZ,QAAQrZ;AAClCwH,gBAAU4R,SAAS5R,SAAS6R,QAAQ7R;;AAEtC,WAAO;MACLE,GAAGlS,KAAK0R,OAAOQ,KAAII,WAAW9H,QAAQoH,OAAOpH,QAAQgH,uBAAAA;MACrDW,GAAGnS,KAAK0R,OAAOS,KAAII,WAAWP,SAASJ,OAAOI,SAASR,uBAAAA;IACzD;EACF;AAEA,WAASsS,iBAAiBlS,QAA2BpH,OAAewH,QAAgC;AAClG,QAAI0E,UAAkBqN;AAEtB,QAAIvZ,UAAUjF,UAAayM,WAAWzM,QAAW;AAC/C,YAAMye,YAAYpS,UAAUwP,eAAexP,MAAAA;AAC3C,UAAI,CAACoS,WAAW;AACdxZ,gBAAQoH,OAAOqS;AACfjS,iBAASJ,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,gBAAQoJ,KAAKpJ,QAAQ6Z,iBAAiB7Z,QAAQ4Z,gBAAgB5Z;AAC9DwH,iBAAS4B,KAAK5B,SAASqS,iBAAiBrS,SAASoS,gBAAgBpS;AACjE0E,mBAAW8K,cAAc2C,eAAezN,UAAUsN,WAAW,aAAA;AAC7DD,oBAAYvC,cAAc2C,eAAeJ,WAAWC,WAAW,cAAA;;;AAGnE,WAAO;MACLxZ;MACAwH;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,OAAOwH,OAAAA,IAAU6S;AAEtB,QAAInX,MAAMiW,cAAc,eAAe;AACrC,YAAME,UAAUvB,mBAAmB5U,OAAO,UAAU,OAAA;AACpD,YAAMkW,WAAWtB,mBAAmB5U,OAAO,SAAA;AAC3ClD,eAASoZ,SAASpZ,QAAQqZ,QAAQrZ;AAClCwH,gBAAU4R,SAAS5R,SAAS6R,QAAQ7R;;AAEtCxH,YAAQxK,KAAKJ,IAAI,GAAG4K,QAAQoa,QAAQpa,KAAK;AACzCwH,aAAShS,KAAKJ,IAAI,GAAG+kB,cAAcna,QAAQma,cAAc3S,SAAS4S,QAAQ5S,MAAM;AAChFxH,YAAQ+Z,OAAOvkB,KAAKL,IAAI6K,OAAOkM,UAAUmO,cAAcnO,QAAQ,CAAA;AAC/D1E,aAASuS,OAAOvkB,KAAKL,IAAIqS,QAAQ+R,WAAWc,cAAcd,SAAS,CAAA;AACnE,QAAIvZ,SAAS,CAACwH,QAAQ;AAGpBA,eAASuS,OAAO/Z,QAAQ,CAAA;;AAG1B,UAAMsa,iBAAiBL,YAAYlf,UAAamf,aAAanf;AAE7D,QAAIuf,kBAAkBH,eAAeE,cAAc7S,UAAUA,SAAS6S,cAAc7S,QAAQ;AAC1FA,eAAS6S,cAAc7S;AACvBxH,cAAQ+Z,OAAOvkB,KAAK+I,MAAMiJ,SAAS2S,WAAAA,CAAAA;;AAGrC,WAAO;MAACna;MAAOwH;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,MAAM;AACrCJ,aAAOlE,MAAMlD,QAAQ,GAAGnC,MAAMmC,KAAK;;AAGrC,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,gCAAgC,WAAW;AACtD,QAAIC,mBAAmB;AACvB,QAAI;AACF,YAAM9lB,UAAU;QACd,IAAI+lB,UAAU;AACZD,6BAAmB;AACnB,iBAAO;QACT;MACF;AAEA,UAAIrE,gBAAmB,GAAA;AACrBhkB,eAAOuoB,iBAAiB,QAAQ,MAAMhmB,OAAAA;AACtCvC,eAAOwoB,oBAAoB,QAAQ,MAAMjmB,OAAAA;;IAE7C,SAASsjB,IAAG;IAEZ;AACA,WAAOwC;EACT,GAAK;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,OAA2B;AAC/E,WAAO;MACL0H,EAAEA,IAAG;AACH,eAAOqU,QAAQA,QAAQ/b,QAAQ0H;MACjC;MACAsU,SAASnU,IAAG;AACV7H,gBAAQ6H;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,OAAe;AACxE,WAAO9L,MAAM4nB,sBAAsBC,OAAO/b,KAAAA,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,KAAKY,OAAOyG,MAAM+H,MAAK,GAAG;AAC1D,WAAO;MACLrP,OAAOA,SAAQa;MACfZ,KAAKA,MAAMY;MACXyG,MAAMA,SAASrH,MAAMD,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,KAAKqH,KAAAA,IAAQqiB;AACzB,QAAI5b,IAAG0E;AAEP,QAAInL,MAAM;AACRtH,MAAAA,UAASa;AACTZ,aAAOY;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;MACF;AACAD,MAAAA,UAASa;AACTZ,aAAOY;;AAGT,QAAIZ,MAAMD,QAAO;AACfC,aAAOY;;AAET,WAAO;MAACb,OAAAA;MAAOC;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,SAASF,SAASI,UAAS,IAAIL,WAAWnF,QAAAA;AACjD,UAAM,EAAC9jB,OAAAA,QAAOC,KAAKqH,MAAM+H,MAAAA,IAASqa,WAAWC,SAASlpB,QAAQ4K,MAAAA;AAE9D,UAAM+Y,SAAS,CAAA;AACf,QAAI2F,SAAS;AACb,QAAIC,WAAW;AACf,QAAI5jB,OAAOjE,OAAO8nB;AAElB,UAAMC,gBAAgB,MAAMhB,QAAQU,YAAYK,WAAW7jB,KAAUgjB,KAAAA,QAAQQ,YAAYK,SAAe,MAAA;AACxG,UAAME,cAAc,MAAMf,QAAQS,UAAUzjB,KAAAA,MAAW,KAAK8iB,QAAQW,UAAUI,WAAW7jB,KAAAA;AACzF,UAAMgkB,cAAc,MAAML,UAAUG,cAAAA;AACpC,UAAMG,aAAa,MAAM,CAACN,UAAUI,YAAAA;AAEpC,aAASpc,KAAI/N,QAAO2iB,OAAO3iB,QAAO+N,MAAK9N,KAAK,EAAE8N,IAAG;AAC/C5L,cAAQ1B,OAAOsN,KAAIlN,KAAM;AAEzB,UAAIsB,MAAM6d,MAAM;AACd;;AAGF5Z,cAAQkjB,UAAUnnB,MAAM2hB,QAAS,CAAA;AAEjC,UAAI1d,UAAU6jB,WAAW;AACvB;;AAGFF,eAASb,QAAQ9iB,OAAOwjB,YAAYC,QAAAA;AAEpC,UAAIG,aAAa,QAAQI,YAAe,GAAA;AACtCJ,mBAAWZ,QAAQhjB,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,aAAO5U;AACPkc,kBAAY7jB;IACd;AAEA,QAAI4jB,aAAa,MAAM;AACrB5F,aAAOjS,KAAKsX,iBAAiB;QAACzpB,OAAOgqB;QAAU/pB;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,MAAMY,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,aAAOD;;AAGT,WAAOC,MAAMD,UAASS,OAAOR,MAAMY,KAAM,EAACmf,MAAM;AAC9C/f;IACF;AAGAA,WAAOY;AAEP,WAAO;MAACb,OAAAA;MAAOC;IAAG;EACpB;AASA,WAASyqB,cAAcjqB,QAAQT,QAAOuB,KAAK+F,MAAM;AAC/C,UAAMzG,QAAQJ,OAAOG;AACrB,UAAMwjB,SAAS,CAAA;AACf,QAAIuG,OAAO3qB;AACX,QAAI2iB,OAAOliB,OAAOT,MAAM;AACxB,QAAIC;AAEJ,SAAKA,MAAMD,SAAQ,GAAGC,OAAOsB,KAAK,EAAEtB,KAAK;AACvC,YAAM2qB,MAAMnqB,OAAOR,MAAMY,KAAM;AAC/B,UAAI+pB,IAAI5K,QAAQ4K,IAAIC,MAAM;AACxB,YAAI,CAAClI,KAAK3C,MAAM;AACd1Y,iBAAO;AACP8c,iBAAOjS,KAAK;YAACnS,OAAOA,SAAQa;YAAOZ,MAAMA,MAAM,KAAKY;YAAOyG;UAAI,CAAA;AAE/DtH,UAAAA,SAAQ2qB,OAAOC,IAAIC,OAAO5qB,MAAM;;aAE7B;AACL0qB,eAAO1qB;AACP,YAAI0iB,KAAK3C,MAAM;AACbhgB,UAAAA,SAAQC;;;AAGZ0iB,aAAOiI;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,IAAAA,IAAOwqB,gBAAgBhqB,QAAQI,OAAOyG,MAAMpG,QAAAA;AAE1D,QAAIA,aAAa,MAAM;AACrB,aAAO+pB,cAAchU,MAAM;QAAC;UAACjX,OAAAA;UAAOC;UAAKqH;QAAI;MAAE,GAAE7G,QAAQsqB,cAAAA;;AAG3D,UAAMxpB,MAAMtB,MAAMD,SAAQC,MAAMY,QAAQZ;AACxC,UAAMirB,eAAe,CAAC,CAACjU,KAAKkU,aAAanrB,WAAU,KAAKC,QAAQY,QAAQ;AACxE,WAAOoqB,cAAchU,MAAMyT,cAAcjqB,QAAQT,QAAOuB,KAAK2pB,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,KAAI;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,OAAOliB,OAAOT,SAAQa,KAAM;AAChC,UAAIwO;AACJ,WAAKtB,KAAI/N,SAAQ,GAAG+N,MAAK4b,QAAQ1pB,KAAK8N,MAAK;AACzC,cAAMoU,MAAK1hB,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,eAAOR;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,SAAS;AAC1B,WAAO;MACLqN,iBAAiBrN,QAAQqN;MACzB2d,gBAAgBhrB,QAAQgrB;MACxBC,YAAYjrB,QAAQirB;MACpBC,kBAAkBlrB,QAAQkrB;MAC1BC,iBAAiBnrB,QAAQmrB;MACzB9W,aAAarU,QAAQqU;MACrB/G,aAAatN,QAAQsN;IACvB;EACF;AAEA,WAASyd,aAAa9c,OAAOsc,WAAW;AACtC,QAAI,CAACA,WAAW;AACd,aAAO;;AAET,UAAMrZ,SAAQ,CAAA;AACd,UAAMka,WAAW,SAAS5e,KAAKxH,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;ACzWA,WAASC,eAAejc,OAAckc,WAAsBC,OAAwB;AAClF,WAAOnc,MAAMpP,QAAQkK,OAAOkF,MAAMmc,KAAM,IAAGD,UAAUC,KAAM;EAC7D;AAEA,WAASC,eAAepsB,MAAiBksB,WAA4B;AACnE,UAAM,EAACjqB,QAAQC,OAAAA,IAAUlC;AACzB,QAAIiC,UAAUC,QAAQ;AACpB,aAAO;QACLvC,MAAMssB,eAAehqB,QAAQiqB,WAAW,MAAA;QACxCtsB,OAAOqsB,eAAehqB,QAAQiqB,WAAW,OAAA;QACzCjkB,KAAKgkB,eAAe/pB,QAAQgqB,WAAW,KAAA;QACvChkB,QAAQ+jB,eAAe/pB,QAAQgqB,WAAW,QAAA;MAC5C;;AAEF,WAAOA;EACT;AAEO,WAASG,mBAAmB7iB,OAAcxJ,MAA+B;AAC9E,UAAM8K,OAAO9K,KAAKssB;AAClB,QAAIxhB,KAAKyhB,UAAU;AACjB,aAAO;;AAET,UAAMnX,OAAOgX,eAAepsB,MAAMwJ,MAAM0iB,SAAS;AAEjD,WAAO;MACLvsB,MAAMmL,KAAKnL,SAAS,QAAQ,IAAIyV,KAAKzV,QAAQmL,KAAKnL,SAAS,OAAO,IAAImL,KAAKnL;MAC3EC,OAAOkL,KAAKlL,UAAU,QAAQ4J,MAAMmC,QAAQyJ,KAAKxV,SAASkL,KAAKlL,UAAU,OAAO,IAAIkL,KAAKlL;MACzFqI,KAAK6C,KAAK7C,QAAQ,QAAQ,IAAImN,KAAKnN,OAAO6C,KAAK7C,QAAQ,OAAO,IAAI6C,KAAK7C;MACvEC,QAAQ4C,KAAK5C,WAAW,QAAQsB,MAAM2J,SAASiC,KAAKlN,UAAU4C,KAAK5C,WAAW,OAAO,IAAI4C,KAAK5C;IAChG;EACF;;;ACrBO,MAAMskB,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,aAAYH,MAAMI,UAAUF,IAAK;AACvC,YAAMG,WAAWL,MAAMM;AAEvBH,MAAAA,WAAUI,QAAQC,CAAAA,OAAMA,GAAG;QACzBT;QACAU,SAAST,MAAMS;QACfJ;QACAK,aAAaC,KAAKC,IAAIX,OAAOD,MAAMa,OAAOR,QAAAA;MAC5C,CAAA,CAAA;IACF;IAKAS,WAAW;AACT,UAAI,KAAKtB,UAAU;AACjB;;AAEF,WAAKG,WAAW;AAEhB,WAAKH,WAAWuB,iBAAiBC,KAAKC,QAAQ,MAAM;AAClD,aAAKC,QAAO;AACZ,aAAK1B,WAAW;AAEhB,YAAI,KAAKG,UAAU;AACjB,eAAKmB,SAAQ;;MAEjB,CAAA;IACF;IAKAI,QAAQjB,OAAOkB,KAAKC,IAAG,GAAI;AACzB,UAAIC,YAAY;AAEhB,WAAK5B,QAAQc,QAAQ,CAACP,OAAOD,UAAU;AACrC,YAAI,CAACC,MAAMsB,WAAW,CAACtB,MAAMuB,MAAMC,QAAQ;AACzC;;AAEF,cAAMD,QAAQvB,MAAMuB;AACpB,YAAIE,KAAIF,MAAMC,SAAS;AACvB,YAAIE,QAAO;AACX,YAAIC;AAEJ,eAAOF,MAAK,GAAG,EAAEA,IAAG;AAClBE,iBAAOJ,MAAME,EAAE;AAEf,cAAIE,KAAKC,SAAS;AAChB,gBAAID,KAAKE,SAAS7B,MAAMM,UAAU;AAGhCN,oBAAMM,WAAWqB,KAAKE;;AAExBF,iBAAKG,KAAK7B,IAAAA;AACVyB,YAAAA,QAAO;iBACF;AAGLH,kBAAME,EAAAA,IAAKF,MAAMA,MAAMC,SAAS,CAAE;AAClCD,kBAAMQ,IAAG;;QAEb;AAEA,YAAIL,OAAM;AACR3B,gBAAM2B,KAAI;AACV,eAAK5B,QAAQC,OAAOC,OAAOC,MAAM,UAAA;;AAGnC,YAAI,CAACsB,MAAMC,QAAQ;AACjBxB,gBAAMsB,UAAU;AAChB,eAAKxB,QAAQC,OAAOC,OAAOC,MAAM,UAAA;AACjCD,gBAAMS,UAAU;;AAGlBY,qBAAaE,MAAMC;MACrB,CAAA;AAEA,WAAK5B,YAAYK;AAEjB,UAAIoB,cAAc,GAAG;AACnB,aAAK1B,WAAW;;IAEpB;IAKAqC,UAAUjC,OAAO;AACf,YAAMkC,SAAS,KAAKxC;AACpB,UAAIO,QAAQiC,OAAOC,IAAInC,KAAAA;AACvB,UAAI,CAACC,OAAO;AACVA,gBAAQ;UACNsB,SAAS;UACTb,SAAS;UACTc,OAAO,CAAA;UACPnB,WAAW;YACT+B,UAAU,CAAA;YACVC,UAAU,CAAA;UACZ;QACF;AACAH,eAAOI,IAAItC,OAAOC,KAAAA;;AAEpB,aAAOA;IACT;IAOAsC,OAAOvC,OAAOwC,QAAOC,IAAI;AACvB,WAAKR,UAAUjC,KAAAA,EAAOK,UAAUmC,MAAAA,EAAOE,KAAKD,EAAAA;IAC9C;IAOAE,IAAI3C,OAAOwB,OAAO;AAChB,UAAI,CAACA,SAAS,CAACA,MAAMC,QAAQ;AAC3B;;AAEF,WAAKQ,UAAUjC,KAAAA,EAAOwB,MAAMkB,KAAQlB,GAAAA,KAAAA;IACtC;IAMAoB,IAAI5C,OAAO;AACT,aAAO,KAAKiC,UAAUjC,KAAAA,EAAOwB,MAAMC,SAAS;IAC9C;IAMAX,MAAMd,OAAO;AACX,YAAMC,QAAQ,KAAKP,QAAQyC,IAAInC,KAAAA;AAC/B,UAAI,CAACC,OAAO;AACV;;AAEFA,YAAMsB,UAAU;AAChBtB,YAAMa,QAAQM,KAAKC,IAAG;AACtBpB,YAAMM,WAAWN,MAAMuB,MAAMqB,OAAO,CAACC,KAAKC,QAAQnC,KAAKoC,IAAIF,KAAKC,IAAIE,SAAS,GAAG,CAAA;AAChF,WAAKlC,SAAQ;IACf;IAEAQ,QAAQvB,OAAO;AACb,UAAI,CAAC,KAAKJ,UAAU;AAClB,eAAO;;AAET,YAAMK,QAAQ,KAAKP,QAAQyC,IAAInC,KAAAA;AAC/B,UAAI,CAACC,SAAS,CAACA,MAAMsB,WAAW,CAACtB,MAAMuB,MAAMC,QAAQ;AACnD,eAAO;;AAET,aAAO;IACT;IAMAyB,KAAKlD,OAAO;AACV,YAAMC,QAAQ,KAAKP,QAAQyC,IAAInC,KAAAA;AAC/B,UAAI,CAACC,SAAS,CAACA,MAAMuB,MAAMC,QAAQ;AACjC;;AAEF,YAAMD,QAAQvB,MAAMuB;AACpB,UAAIE,KAAIF,MAAMC,SAAS;AAEvB,aAAOC,MAAK,GAAG,EAAEA,IAAG;AAClBF,cAAME,EAAE,EAACyB,OAAM;MACjB;AACAlD,YAAMuB,QAAQ,CAAA;AACd,WAAKzB,QAAQC,OAAOC,OAAOmB,KAAKC,IAAG,GAAI,UAAA;IACzC;IAMA+B,OAAOpD,OAAO;AACZ,aAAO,KAAKN,QAAQ2D,OAAOrD,KAAAA;IAC7B;EACF;AAGA,MAAA,WAA+B,oBAAIT,SAAW;ACjN9C,MAAM+D,cAAc;AACpB,MAAMC,gBAAgB;IACpBC,QAAQC,OAAMC,KAAIC,QAAQ;AACxB,aAAOA,SAAS,MAAMD,MAAKD;IAC7B;IAMAG,MAAMH,OAAMC,KAAIC,QAAQ;AACtB,YAAME,KAAKC,MAAaL,SAAQH,WAAAA;AAChC,YAAMS,KAAKF,GAAGG,SAASF,MAAaJ,OAAMJ,WAAAA;AAC1C,aAAOS,MAAMA,GAAGC,QACZD,GAAGE,IAAIJ,IAAIF,MAAAA,EAAQO,UAAS,IAC5BR;IACN;IACAS,OAAOV,OAAMC,KAAIC,QAAQ;AACvB,aAAOF,SAAQC,MAAKD,SAAQE;IAC9B;EACF;AAEe,MAAMS,YAAN,MAAMA;IACnB5E,YAAY6E,KAAKC,QAAQC,MAAMb,KAAI;AACjC,YAAMc,eAAeF,OAAOC,IAAK;AAEjCb,MAAAA,MAAKe,QAAQ;QAACJ,IAAIX;QAAIA;QAAIc;QAAcH,IAAIZ;MAAK,CAAA;AACjD,YAAMA,QAAOgB,QAAQ;QAACJ,IAAIZ;QAAMe;QAAcd;MAAG,CAAA;AAEjD,WAAK7B,UAAU;AACf,WAAK6C,MAAML,IAAI5D,MAAM8C,cAAcc,IAAIlE,QAAQ,OAAOsD,KAAK;AAC3D,WAAKkB,UAAUC,QAAQP,IAAIQ,MAAM,KAAKD,QAAQE;AAC9C,WAAKC,SAASnE,KAAKoE,MAAM5D,KAAKC,IAAG,KAAMgD,IAAIY,SAAS,EAAA;AACpD,WAAKhC,YAAY,KAAKnB,SAASlB,KAAKoE,MAAMX,IAAI9D,QAAQ;AACtD,WAAK2E,QAAQ,CAAC,CAACb,IAAIc;AACnB,WAAKC,UAAUd;AACf,WAAKe,QAAQd;AACb,WAAKe,QAAQ7B;AACb,WAAK8B,MAAM7B;AACX,WAAK8B,YAAY1F;IACnB;IAEA2F,SAAS;AACP,aAAO,KAAK5D;IACd;IAEA6D,OAAOrB,KAAKX,KAAIxD,MAAM;AACpB,UAAI,KAAK2B,SAAS;AAChB,aAAK9B,QAAQ,KAAK;AAElB,cAAMyE,eAAe,KAAKY,QAAQ,KAAKC,KAAK;AAC5C,cAAMM,UAAUzF,OAAO,KAAK6E;AAC5B,cAAMa,SAAS,KAAK3C,YAAY0C;AAChC,aAAKZ,SAAS7E;AACd,aAAK+C,YAAYrC,KAAKoE,MAAMpE,KAAKoC,IAAI4C,QAAQvB,IAAI9D,QAAQ,CAAA;AACzD,aAAKuB,UAAU6D;AACf,aAAKT,QAAQ,CAAC,CAACb,IAAIc;AACnB,aAAKI,MAAMd,QAAQ;UAACJ,IAAIX;UAAIA;UAAIc;UAAcH,IAAIZ;QAAK,CAAA;AACvD,aAAK6B,QAAQb,QAAQ;UAACJ,IAAIZ;UAAMe;UAAcd;QAAG,CAAA;;IAErD;IAEAP,SAAS;AACP,UAAI,KAAKtB,SAAS;AAEhB,aAAKE,KAAKX,KAAKC,IAAG,CAAA;AAClB,aAAKQ,UAAU;AACf,aAAK9B,QAAQ,KAAK;;IAEtB;IAEAgC,KAAK7B,MAAM;AACT,YAAMyF,UAAUzF,OAAO,KAAK6E;AAC5B,YAAMxE,WAAW,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,WAAY;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,UAASJ,OAAS,GAAA;AACrB;;AAGF,YAAMK,mBAAmBC,OAAOC,KAAKC,SAASC,SAAS;AACvD,YAAMC,gBAAgB,KAAKR;AAE3BI,aAAOK,oBAAoBX,OAAAA,EAAQ7F,QAAQyG,CAAAA,QAAO;AAChD,cAAM5C,MAAMgC,QAAOY,GAAI;AACvB,YAAI,CAACR,UAASpC,GAAM,GAAA;AAClB;;AAEF,cAAM6B,WAAW,CAAA;AACjB,mBAAWgB,WAAUR,kBAAkB;AACrCR,mBAASgB,OAAAA,IAAU7C,IAAI6C,OAAO;QAChC;AAECC,SAAAA,SAAQ9C,IAAI+C,UAAU,KAAK/C,IAAI+C,cAAc;UAACH;QAAI,GAAEzG,QAAQ,CAAC+D,SAAS;AACrE,cAAIA,SAAS0C,OAAO,CAACF,cAAcnE,IAAI2B,IAAO,GAAA;AAC5CwC,0BAAczE,IAAIiC,MAAM2B,QAAAA;;QAE5B,CAAA;MACF,CAAA;IACF;IAMAmB,gBAAgB/C,QAAQgD,QAAQ;AAC9B,YAAMC,aAAaD,OAAOE;AAC1B,YAAMA,UAAUC,qBAAqBnD,QAAQiD,UAAAA;AAC7C,UAAI,CAACC,SAAS;AACZ,eAAO,CAAA;;AAGT,YAAME,aAAa,KAAKC,kBAAkBH,SAASD,UAAAA;AACnD,UAAIA,WAAWK,SAAS;AAItBC,iBAASvD,OAAOkD,QAAQM,aAAaP,UAAYQ,EAAAA,KAAK,MAAM;AAC1DzD,iBAAOkD,UAAUD;QACnB,GAAG,MAAM;QAET,CAAA;;AAGF,aAAOG;IACT;IAKAC,kBAAkBrD,QAAQgD,QAAQ;AAChC,YAAMP,gBAAgB,KAAKR;AAC3B,YAAMmB,aAAa,CAAA;AACnB,YAAMnG,UAAU+C,OAAOwD,gBAAgBxD,OAAOwD,cAAc,CAAA;AAC5D,YAAME,QAAQrB,OAAOC,KAAKU,MAAAA;AAC1B,YAAMpH,OAAOkB,KAAKC,IAAG;AACrB,UAAIK;AAEJ,WAAKA,KAAIsG,MAAMvG,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AACtC,cAAM6C,OAAOyD,MAAMtG,EAAE;AACrB,YAAI6C,KAAK0D,OAAO,CAAA,MAAO,KAAK;AAC1B;;AAGF,YAAI1D,SAAS,WAAW;AACtBmD,qBAAWhF,KAAQ,GAAA,KAAK2E,gBAAgB/C,QAAQgD,MAAAA,CAAAA;AAChD;;AAEF,cAAMY,QAAQZ,OAAO/C,IAAK;AAC1B,YAAIuC,YAAYvF,QAAQgD,IAAK;AAC7B,cAAMF,MAAM0C,cAAc5E,IAAIoC,IAAAA;AAE9B,YAAIuC,WAAW;AACb,cAAIzC,OAAOyC,UAAUrB,OAAM,GAAI;AAE7BqB,sBAAUpB,OAAOrB,KAAK6D,OAAOhI,IAAAA;AAC7B;iBACK;AACL4G,sBAAU3D,OAAM;;;AAGpB,YAAI,CAACkB,OAAO,CAACA,IAAI9D,UAAU;AAEzB+D,iBAAOC,IAAAA,IAAQ2D;AACf;;AAGF3G,gBAAQgD,IAAAA,IAAQuC,YAAY,IAAI1C,UAAUC,KAAKC,QAAQC,MAAM2D,KAAAA;AAC7DR,mBAAWhF,KAAKoE,SAAAA;MAClB;AACA,aAAOY;IACT;IASAhC,OAAOpB,QAAQgD,QAAQ;AACrB,UAAI,KAAKf,YAAY4B,SAAS,GAAG;AAE/BxB,eAAOyB,OAAO9D,QAAQgD,MAAAA;AACtB;;AAGF,YAAMI,aAAa,KAAKC,kBAAkBrD,QAAQgD,MAAAA;AAElD,UAAII,WAAWjG,QAAQ;AACrB4G,iBAAS1F,IAAI,KAAK2D,QAAQoB,UAAAA;AAC1B,eAAO;;IAEX;EACF;AAEA,WAASG,SAASH,YAAYN,YAAY;AACxC,UAAM7F,UAAU,CAAA;AAChB,UAAMqF,OAAOD,OAAOC,KAAKQ,UAAAA;AACzB,aAAS1F,KAAI,GAAGA,KAAIkF,KAAKnF,QAAQC,MAAK;AACpC,YAAM4G,OAAOZ,WAAWd,KAAKlF,EAAAA,CAAE;AAC/B,UAAI4G,QAAQA,KAAK7C,OAAM,GAAI;AACzBlE,gBAAQmB,KAAK4F,KAAKzC,KAAI,CAAA;;IAE1B;AAEA,WAAOE,QAAQwC,IAAIhH,OAAAA;EACrB;AAEA,WAASkG,qBAAqBnD,QAAQiD,YAAY;AAChD,QAAI,CAACA,YAAY;AACf;;AAEF,QAAIC,UAAUlD,OAAOkD;AACrB,QAAI,CAACA,SAAS;AACZlD,aAAOkD,UAAUD;AACjB;;AAEF,QAAIC,QAAQI,SAAS;AAGnBtD,aAAOkD,UAAUA,UAAUb,OAAOyB,OAAO,CAAA,GAAIZ,SAAS;QAACI,SAAS;QAAOE,aAAa,CAAA;MAAE,CAAA;;AAExF,WAAON;EACT;ACtJA,WAASgB,UAAUC,OAAOC,iBAAiB;AACzC,UAAMC,OAAOF,SAASA,MAAMjB,WAAW,CAAA;AACvC,UAAMoB,UAAUD,KAAKC;AACrB,UAAM/H,MAAM8H,KAAK9H,QAAQf,SAAY4I,kBAAkB;AACvD,UAAM1F,MAAM2F,KAAK3F,QAAQlD,SAAY4I,kBAAkB;AACvD,WAAO;MACL5H,OAAO8H,UAAU5F,MAAMnC;MACvBgI,KAAKD,UAAU/H,MAAMmC;IACvB;EACF;AAEA,WAAS8F,YAAYC,QAAQC,QAAQN,iBAAiB;AACpD,QAAIA,oBAAoB,OAAO;AAC7B,aAAO;;AAET,UAAMO,KAAIT,UAAUO,QAAQL,eAAAA;AAC5B,UAAMQ,KAAIV,UAAUQ,QAAQN,eAAAA;AAE5B,WAAO;MACLS,KAAKD,GAAEL;MACPO,OAAOH,GAAEJ;MACTQ,QAAQH,GAAEpI;MACVwI,MAAML,GAAEnI;IACV;EACF;AAEA,WAASyI,OAAOrB,OAAO;AACrB,QAAIsB,IAAGC,IAAGC,IAAGC;AAEb,QAAIlD,UAASyB,KAAQ,GAAA;AACnBsB,MAAAA,KAAItB,MAAMiB;AACVM,MAAAA,KAAIvB,MAAMkB;AACVM,MAAAA,KAAIxB,MAAMmB;AACVM,MAAAA,KAAIzB,MAAMoB;WACL;AACLE,MAAAA,KAAIC,KAAIC,KAAIC,KAAIzB;;AAGlB,WAAO;MACLiB,KAAKK;MACLJ,OAAOK;MACPJ,QAAQK;MACRJ,MAAMK;MACNC,UAAU1B,UAAU;IACtB;EACF;AAEA,WAAS2B,wBAAwB7J,OAAO8J,eAAe;AACrD,UAAMlD,OAAO,CAAA;AACb,UAAMmD,WAAW/J,MAAMgK,uBAAuBF,aAAAA;AAC9C,QAAIpI,IAAGuI;AAEP,SAAKvI,KAAI,GAAGuI,OAAOF,SAAStI,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjDkF,WAAKlE,KAAKqH,SAASrI,EAAAA,EAAGwI,KAAK;IAC7B;AACA,WAAOtD;EACT;AAEA,WAASuD,WAAWC,OAAOlC,OAAOmC,SAAS7C,UAAU,CAAA,GAAI;AACvD,UAAMZ,OAAOwD,MAAMxD;AACnB,UAAM0D,aAAa9C,QAAQ+C,SAAS;AACpC,QAAI7I,IAAGuI,MAAMO,cAAcC;AAE3B,QAAIvC,UAAU,MAAM;AAClB;;AAGF,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,QAAQe,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,QAAQe,KAAK;AAC1B,aAAO;;AAGT,WAAOL;EACT;AAEA,WAAS2C,yBAAyBC,MAAMC,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,IAAAA;AACzB,UAAMO,QAAQ,IAAIC,MAAM1E,KAAKnF,MAAM;AACnC,QAAIC,IAAGuI,MAAMhD;AACb,SAAKvF,KAAI,GAAGuI,OAAOrD,KAAKnF,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7CuF,YAAML,KAAKlF,EAAE;AACb2J,YAAM3J,EAAAA,IAAK;QACT,CAACwJ,QAAAA,GAAWjE;QACZ,CAACmE,QAAS,GAAEN,KAAK7D,GAAI;MACvB;IACF;AACA,WAAOoE;EACT;AAEA,WAASE,UAAU9C,OAAOsC,MAAM;AAC9B,UAAMS,UAAU/C,SAASA,MAAMjB,QAAQgE;AACvC,WAAOA,WAAYA,YAAY1L,UAAaiL,KAAKX,UAAUtK;EAC7D;AAEA,WAAS2L,YAAYC,YAAYC,YAAYZ,MAAM;AACjD,WAAO,GAAGW,WAAWE,EAAE,IAAID,WAAWC,EAAE,IAAIb,KAAKX,SAASW,KAAK5K,IAAI;EACrE;AAEA,WAAS0L,cAAcpD,OAAO;AAC5B,UAAM,EAAC5H,KAAKmC,KAAK8I,YAAYC,WAAU,IAAItD,MAAMoD,cAAa;AAC9D,WAAO;MACLhL,KAAKiL,aAAajL,MAAMmL,OAAOC;MAC/BjJ,KAAK+I,aAAa/I,MAAMgJ,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,MAAMwE,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,KAAKiD,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,QAAOuG,QAAOvG,GAAI,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;IAKnB,OAAOhI,WAAW,CAAA;IAKlB,OAAOiI,qBAAqB;IAK5B,OAAOC,kBAAkB;IAMzBvP,YAAYQ,OAAOwK,cAAc;AAC/B,WAAKxK,QAAQA;AACb,WAAKgP,OAAOhP,MAAMiP;AAClB,WAAK/E,QAAQM;AACb,WAAK0E,kBAAkB,CAAA;AACvB,WAAKpC,cAAc,KAAKqC,QAAO;AAC/B,WAAKC,QAAQ,KAAKtC,YAAY3M;AAC9B,WAAKqH,UAAU1H;AAEf,WAAKuP,WAAW;AAChB,WAAKC,QAAQxP;AACb,WAAKyP,cAAczP;AACnB,WAAK0P,iBAAiB1P;AACtB,WAAK2P,aAAa3P;AAClB,WAAK4P,aAAa5P;AAClB,WAAK6P,sBAAsB;AAC3B,WAAKC,qBAAqB;AAC1B,WAAKC,WAAW/P;AAChB,WAAKgQ,YAAY,CAAA;AACjB,WAAKhB,qBAAqB,WAAWA;AACrC,WAAKC,kBAAkB,WAAWA;AAElC,WAAKgB,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;IAEAiF,UAAU;AACR,aAAO,KAAKnP,MAAMwR,eAAe,KAAKtH,KAAK;IAC7C;IAMAmH,cAAcI,SAAS;AACrB,aAAO,KAAKzR,MAAMwN,OAAOiE,OAAQ;IACnC;IAKAC,eAAejJ,OAAO;AACpB,YAAMsC,OAAO,KAAK+B;AAClB,aAAOrE,UAAUsC,KAAKC,SAClBD,KAAKE,SACLF,KAAKC;IACX;IAEA2G,QAAQ;AACN,WAAKxQ,QAAQ,OAAA;IACf;IAKAyQ,WAAW;AACT,YAAM7G,OAAO,KAAK+B;AAClB,UAAI,KAAKwC,OAAO;AACduC,4BAAoB,KAAKvC,OAAO,IAAI;;AAEtC,UAAIvE,KAAK6D,UAAU;AACjBT,oBAAYpD,IAAAA;;IAEhB;IAKA+G,aAAa;AACX,YAAMhE,UAAU,KAAKyC,WAAU;AAC/B,YAAMzF,OAAOgD,QAAQhD,SAASgD,QAAQhD,OAAO,CAAA;AAC7C,YAAMwE,QAAQ,KAAKA;AAMnB,UAAI7I,UAASqE,IAAO,GAAA;AAClB,cAAMC,OAAO,KAAK+B;AAClB,aAAKwC,QAAQzE,yBAAyBC,MAAMC,IAAAA;iBACnCuE,UAAUxE,MAAM;AACzB,YAAIwE,OAAO;AAETuC,8BAAoBvC,OAAO,IAAI;AAE/B,gBAAMvE,OAAO,KAAK+B;AAClBqB,sBAAYpD,IAAAA;AACZA,eAAKqD,UAAU,CAAA;;AAEjB,YAAItD,QAAQnE,OAAOoL,aAAajH,IAAO,GAAA;AACrCkH,4BAAkBlH,MAAM,IAAI;;AAE9B,aAAKgF,YAAY,CAAA;AACjB,aAAKR,QAAQxE;;IAEjB;IAEAmF,cAAc;AACZ,YAAMlF,OAAO,KAAK+B;AAElB,WAAKgF,WAAU;AAEf,UAAI,KAAKhD,oBAAoB;AAC3B/D,aAAK+C,UAAU,IAAI,KAAKgB,mBAAkB;;IAE9C;IAEAmD,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,KAAKnD,KAAK;AACpD,YAAMoD,SAASnM,QAAOoM,gBAAgB,KAAKlC,WAAU,GAAI+B,WAAW,IAAI;AACxE,WAAK9K,UAAUnB,QAAOqM,eAAeF,QAAQ,KAAKG,WAAU,CAAA;AAC5D,WAAKtD,WAAW,KAAK7H,QAAQoL;AAC7B,WAAK1D,kBAAkB,CAAA;IACzB;IAMA2D,MAAM/R,QAAOgS,OAAO;AAClB,YAAM,EAAChG,aAAa/B,MAAMuE,OAAOxE,KAAI,IAAI;AACzC,YAAM,EAACE,QAAQ4D,SAAAA,IAAY7D;AAC3B,YAAMiC,QAAQhC,OAAOG;AAErB,UAAI4H,SAASjS,WAAU,KAAKgS,UAAUhI,KAAKrJ,SAAS,OAAOsJ,KAAKiI;AAChE,UAAIC,OAAOnS,SAAQ,KAAKiK,KAAKqD,QAAQtN,SAAQ,CAAE;AAC/C,UAAIY,IAAGqB,KAAK8J;AAEZ,UAAI,KAAKwC,aAAa,OAAO;AAC3BtE,aAAKqD,UAAUtD;AACfC,aAAKiI,UAAU;AACfnG,iBAAS/B;aACJ;AACL,YAAI3D,SAAQ2D,KAAKhK,MAAAA,CAAM,GAAG;AACxB+L,mBAAS,KAAKqG,eAAenI,MAAMD,MAAMhK,QAAOgS,KAAAA;QAClD,WAAWrM,UAASqE,KAAKhK,MAAAA,CAAM,GAAG;AAChC+L,mBAAS,KAAKsG,gBAAgBpI,MAAMD,MAAMhK,QAAOgS,KAAAA;eAC5C;AACLjG,mBAAS,KAAKuG,mBAAmBrI,MAAMD,MAAMhK,QAAOgS,KAAAA;;AAGtD,cAAMO,6BAA6B,MAAMtQ,IAAIiK,KAAAA,MAAW,QAASiG,QAAQlQ,IAAIiK,KAAAA,IAASiG,KAAKjG,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,mBAAOlQ;;QAEX;AACAgI,aAAKiI,UAAUD;;AAGjB,UAAInE,UAAU;AACZjC,qBAAa,MAAME,MAAAA;;IAEvB;IAaAuG,mBAAmBrI,MAAMD,MAAMhK,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,KAAKZ,MAAAA,GAAQA,MAAAA;QACrC;MACF;AACA,aAAO2C;IACT;IAaAqG,eAAenI,MAAMD,MAAMhK,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,KAAKZ,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,MAAMhK,QAAOgS,OAAO;AACxC,YAAM,EAAC/J,QAAQC,OAAAA,IAAU+B;AACzB,YAAM,EAAC0I,WAAW,KAAKC,WAAW,IAAA,IAAO,KAAKrE;AAC9C,YAAMxC,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,KAAKZ,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,OAAOoE,QAAQtC,MAAM;AAC9B,YAAMvK,QAAQ,KAAKA;AACnB,YAAM+K,OAAO,KAAK+B;AAClB,YAAM5E,QAAQ2E,OAAOpE,MAAM0C,IAAI;AAC/B,YAAMf,QAAQ;QACZxD,MAAMiD,wBAAwB7J,OAAO,IAAI;QACzCsH,QAAQuF,OAAOE,QAAQtE,MAAM0C,IAAI,EAAEmC;MACrC;AACA,aAAOnD,WAAWC,OAAOlC,OAAO6C,KAAKb,OAAO;QAACK;MAAI,CAAA;IACnD;IAKAuJ,sBAAsBC,OAAOtL,OAAOoE,QAAQzC,OAAO;AACjD,YAAM4J,cAAcnH,OAAOpE,MAAM0C,IAAI;AACrC,UAAIjD,QAAQ8L,gBAAgB,OAAOC,MAAMD;AACzC,YAAM1M,SAAS8C,SAASyC,OAAOE,QAAQtE,MAAM0C,IAAI;AACjD,UAAIf,SAAS9C,QAAQ;AACnB8C,cAAM9C,SAASA;AACfY,gBAAQiC,WAAWC,OAAO4J,aAAa,KAAKlH,YAAY5C,KAAK;;AAE/D6J,YAAMlT,MAAMD,KAAKC,IAAIkT,MAAMlT,KAAKqH,KAAAA;AAChC6L,YAAM/Q,MAAMpC,KAAKoC,IAAI+Q,MAAM/Q,KAAKkF,KAAAA;IAClC;IAKAgM,UAAUzL,OAAOiG,UAAU;AACzB,YAAM3D,OAAO,KAAK+B;AAClB,YAAMsB,UAAUrD,KAAKqD;AACrB,YAAM2E,SAAShI,KAAKiI,WAAWvK,UAAUsC,KAAKC;AAC9C,YAAMf,OAAOmE,QAAQ3M;AACrB,YAAM0S,aAAa,KAAKzC,eAAejJ,KAAAA;AACvC,YAAM2B,QAAQqE,YAAYC,UAAU3D,MAAM,KAAK/K,KAAK;AACpD,YAAM+T,QAAQ;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,MAAM0C,IAAI,CAAC,KAAKiJ,WAAW3J,cAAc4J,WAAW5J;MAC9E;AAEA,WAAK/I,KAAI,GAAGA,KAAIuI,MAAM,EAAEvI,IAAG;AACzB,YAAI4S,MAAS,GAAA;AACX;;AAEF,aAAKR,sBAAsBC,OAAOtL,OAAOoE,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,OAAOtL,OAAOoE,QAAQzC,KAAAA;AACjD;QACF;;AAEF,aAAO2J;IACT;IAEAQ,mBAAmB9L,OAAO;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,MAAM0C,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,YAAMsN,MAAM,KAAKD;AACjB,YAAMhP,QAAQ,KAAKA;AACnB,YAAM+K,OAAO,KAAK+B;AAClB,YAAMgI,YAAW/J,KAAKD,QAAQ,CAAA;AAC9B,YAAMiK,OAAO/U,MAAMgV;AACnB,YAAMvP,SAAS,CAAA;AACf,YAAM3E,SAAQ,KAAK2O,cAAc;AACjC,YAAMqD,QAAQ,KAAKpD,cAAeoF,UAASrT,SAASX;AACpD,YAAMmU,0BAA0B,KAAKzN,QAAQyN;AAC7C,UAAIvT;AAEJ,UAAIqJ,KAAK+C,SAAS;AAChB/C,aAAK+C,QAAQnM,KAAKsN,KAAK8F,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,iBAAO/C,KAAKsL,OAAAA;eACP;AACLA,kBAAQrM,KAAKsN,KAAK8F,IAAAA;;MAEtB;AAEA,WAAKrT,KAAI,GAAGA,KAAI+D,OAAOhE,QAAQ,EAAEC,IAAG;AAClC+D,eAAO/D,EAAAA,EAAGC,KAAKsN,KAAK8F,IAAAA;MACtB;IACF;IASAG,SAAShL,QAAOzE,QAAQ;AACtB,YAAM8E,OAAO9E,SAAS,WAAW;AACjC,aAAOyE,WAAUpK,UAAa,KAAKgN,YAAYgB,UAC3C,KAAKqH,6BAA6B5K,IAAAA,IAClC,KAAK6K,0BAA0BlL,UAAS,GAAGK,IAAK;IACtD;IAKAoI,WAAWzI,QAAOzE,QAAQ8E,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,QAAQ6B,aACf7B,QAAQ6B,WAAW9B,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,KAAKxF,aACZ,KAAKA,WAAWlC,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,KAAKxG,mBAAmBlD,IAAIrB,IAAAA;IACjE;IAOA6K,0BAA0BlL,QAAOK,MAAM;AACrC,aAAO,KAAK+K,uBAAuB,KAAKvG,gBAAgBnD,IAAIrB,MAAML,MAAAA;IACpE;IAKAoL,uBAAuBC,cAAahL,OAAO,WAAWL,QAAO;AAC3D,YAAMzE,SAAS8E,SAAS;AACxB,YAAMiL,SAAQ,KAAKtG;AACnB,YAAMuG,WAAWF,eAAc,MAAMhL;AACrC,YAAMgE,SAASiH,OAAMC,QAAS;AAC9B,YAAMC,UAAU,KAAK/F,uBAAuBgG,QAAQzL,MAAAA;AACpD,UAAIqE,QAAQ;AACV,eAAOD,iBAAiBC,QAAQmH,OAAAA;;AAElC,YAAMrP,UAAS,KAAKrG,MAAMqG;AAC1B,YAAMiM,YAAYjM,QAAOuP,wBAAwB,KAAKxG,OAAOmG,YAAAA;AAC7D,YAAMM,WAAWpQ,SAAS;QAAC,GAAG8P,YAAY;QAAQ;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,QAAQ8E,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,QAAQ;AAC5C,YAAMzF,QAAQ,KAAKA;AACnB,YAAMwV,SAAQ,KAAKtG;AACnB,YAAMuG,WAAW,aAAaS,UAAAA;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,KAAK/G,OAAO8G,UAAAA;AAC/D,cAAM1D,SAASnM,QAAOoM,gBAAgB,KAAKlC,WAAU,GAAI+B,SAAAA;AACzD9K,kBAAUnB,QAAOqM,eAAeF,QAAQ,KAAKG,WAAWzI,QAAOzE,QAAQyQ,UAAAA,CAAAA;;AAEzE,YAAMxO,aAAa,IAAItB,WAAWpG,OAAOwH,WAAWA,QAAQE,UAAU;AACtE,UAAIF,WAAWA,QAAQ4O,YAAY;AACjCZ,QAAAA,OAAMC,QAAAA,IAAY9O,OAAOqP,OAAOtO,UAAAA;;AAElC,aAAOA;IACT;IAMA2O,iBAAiB7O,SAAS;AACxB,UAAI,CAACA,QAAQI,SAAS;AACpB;;AAEF,aAAO,KAAK4H,mBAAmB,KAAKA,iBAAiB7I,OAAOyB,OAAO,CAAA,GAAIZ,OAAO;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,KAAKnH;AACrC,YAAM+G,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,QAAQ;AACtCuI,cAAQvI,SAASA;AACjB,YAAM+B,UAAU,KAAK0N,SAAShL,QAAOzE,MAAAA;AACrC,WAAKwQ,mBAAmB/L,QAAOK,MAAM9E,MAAQC,EAAAA,OAAOsI,SAAS;QAG3DxG,SAAS,CAAE/B,UAAU,KAAK4Q,iBAAiB7O,OAAaA,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,OAAO,KAAKwE;AAClB,YAAMwF,YAAW,KAAKhI,YAAYhC;AAGlC,iBAAW,CAAC3E,QAAQgR,MAAMC,IAAAA,KAAS,KAAKtH,WAAW;AACjD,aAAK3J,MAAO,EAACgR,MAAMC,IAAAA;MACrB;AACA,WAAKtH,YAAY,CAAA;AAEjB,YAAMuH,UAAUvC,UAASrT;AACzB,YAAM6V,UAAUxM,KAAKrJ;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,OAAOC,KAAKD;AAClB,YAAMjC,MAAM/H,SAAQgS;AACpB,UAAIpR;AAEJ,YAAM+V,OAAO,CAACC,QAAQ;AACpBA,YAAIjW,UAAUqR;AACd,aAAKpR,KAAIgW,IAAIjW,SAAS,GAAGC,MAAKmH,KAAKnH,MAAK;AACtCgW,cAAIhW,EAAE,IAAGgW,IAAIhW,KAAIoR,KAAM;QACzB;MACF;AACA2E,WAAK3M,IAAAA;AAEL,WAAKpJ,KAAIZ,QAAOY,KAAImH,KAAK,EAAEnH,IAAG;AAC5BoJ,aAAKpJ,EAAE,IAAG,IAAI,KAAKqN,gBAAe;MACpC;AAEA,UAAI,KAAKM,UAAU;AACjBoI,aAAK1M,KAAKqD,OAAO;;AAEnB,WAAKyE,MAAM/R,QAAOgS,KAAAA;AAElB,UAAIZ,kBAAkB;AACpB,aAAKyF,eAAe7M,MAAMhK,QAAOgS,OAAO,OAAA;;IAE5C;IAEA6E,eAAe3J,SAASlN,QAAOgS,OAAOvI,MAAM;IAAA;IAK5CiN,gBAAgB1W,QAAOgS,OAAO;AAC5B,YAAM/H,OAAO,KAAK+B;AAClB,UAAI,KAAKuC,UAAU;AACjB,cAAMuI,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,KAAK1I,UAAU;AACjB,aAAKS,UAAUpN,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;AC9iCA,WAAS+W,kBAAkB/P,OAAOtI,MAAM;AACtC,QAAI,CAACsI,MAAMgQ,OAAOC,MAAM;AACtB,YAAMC,eAAelQ,MAAMiE,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,KAAAA,CAAAA;MACvE;AACAA,YAAMgQ,OAAOC,OAAOG,aAAavR,OAAOwR,KAAK,CAACC,IAAGrP,OAAMqP,KAAIrP,EAAAA,CAAAA;;AAE7D,WAAOjB,MAAMgQ,OAAOC;EACtB;AAMA,WAASM,qBAAqBjO,MAAM;AAClC,UAAMtC,QAAQsC,KAAKC;AACnB,UAAM1D,SAASkR,kBAAkB/P,OAAOsC,KAAK5K,IAAI;AACjD,QAAIU,MAAM4H,MAAMwQ;AAChB,QAAIvX,IAAGuI,MAAMiP,MAAMjG;AACnB,UAAMkG,mBAAmB,MAAM;AAC7B,UAAID,SAAS,SAASA,SAAS,QAAQ;AAErC;;AAEF,UAAIvD,QAAQ1C,IAAO,GAAA;AAEjBpS,cAAMD,KAAKC,IAAIA,KAAKD,KAAKwY,IAAIF,OAAOjG,IAASpS,KAAAA,GAAAA;;AAE/CoS,aAAOiG;IACT;AAEA,SAAKxX,KAAI,GAAGuI,OAAO3C,OAAO7F,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/CwX,aAAOzQ,MAAM4Q,iBAAiB/R,OAAO5F,EAAE,CAAA;AACvCyX,uBAAAA;IACF;AAEAlG,WAAOnT;AACP,SAAK4B,KAAI,GAAGuI,OAAOxB,MAAM6Q,MAAM7X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACpDwX,aAAOzQ,MAAM8Q,gBAAgB7X,EAAAA;AAC7ByX,uBAAAA;IACF;AAEA,WAAOtY;EACT;AAQA,WAAS2Y,yBAAyBtP,QAAOuP,OAAOjS,SAASkS,YAAY;AACnE,UAAMC,YAAYnS,QAAQoS;AAC1B,QAAIzR,MAAM0R;AAEV,QAAIC,cAAcH,SAAY,GAAA;AAC5BxR,aAAOsR,MAAM5Y,MAAM2G,QAAQuS;AAC3BF,cAAQrS,QAAQwS;WACX;AAIL7R,aAAOwR,YAAYD;AACnBG,cAAQ;;AAGV,WAAO;MACLI,OAAO9R,OAAOuR;MACdG;MACA/Y,OAAO2Y,MAAMS,OAAOhQ,MAAAA,IAAU/B,OAAO;IACvC;EACF;AAQA,WAASgS,0BAA0BjQ,QAAOuP,OAAOjS,SAASkS,YAAY;AACpE,UAAMQ,SAAST,MAAMS;AACrB,UAAMhB,OAAOgB,OAAOhQ,MAAM;AAC1B,QAAI+I,OAAO/I,SAAQ,IAAIgQ,OAAOhQ,SAAQ,CAAA,IAAK;AAC3C,QAAIkQ,OAAOlQ,SAAQgQ,OAAOzY,SAAS,IAAIyY,OAAOhQ,SAAQ,CAAE,IAAG;AAC3D,UAAMmQ,UAAU7S,QAAQuS;AAExB,QAAI9G,SAAS,MAAM;AAGjBA,aAAOiG,QAAQkB,SAAS,OAAOX,MAAM5Q,MAAM4Q,MAAM3Y,QAAQsZ,OAAOlB;;AAGlE,QAAIkB,SAAS,MAAM;AAEjBA,aAAOlB,OAAOA,OAAOjG;;AAGvB,UAAMnS,SAAQoY,QAAQA,OAAOtY,KAAKC,IAAIoS,MAAMmH,IAAI,KAAK,IAAIC;AACzD,UAAMlS,OAAOvH,KAAKwY,IAAIgB,OAAOnH,IAAAA,IAAQ,IAAIoH;AAEzC,WAAO;MACLJ,OAAO9R,OAAOuR;MACdG,OAAOrS,QAAQwS;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,MAAMD,KAAKC,IAAI2Z,YAAYC,QAAAA;AACjC,UAAMzX,MAAMpC,KAAKoC,IAAIwX,YAAYC,QAAAA;AACjC,QAAIC,WAAW7Z;AACf,QAAI8Z,SAAS3X;AAEb,QAAIpC,KAAKwY,IAAIvY,GAAAA,IAAOD,KAAKwY,IAAIpW,GAAM,GAAA;AACjC0X,iBAAW1X;AACX2X,eAAS9Z;;AAKXe,SAAKqJ,OAAOE,IAAI,IAAIwP;AAEpB/Y,SAAKgZ,UAAU;MACbF;MACAC;MACA7Z,OAAO0Z;MACP3R,KAAK4R;MACL5Z;MACAmC;IACF;EACF;AAEA,WAAS6X,WAAWN,OAAO3Y,MAAMqJ,QAAQvJ,IAAG;AAC1C,QAAIyF,SAAQoT,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,MAAMhK,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,KAAKpJ,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,MAAM8C,QAAQiQ,YAAY;AACzC,QAAI/S,SAAS,GAAG;AACd,aAAOyC,KAAKzC,IAAAA;;AAEd,YAAQ8C,OAAOkQ,aAAY,IAAK,IAAI,OAAOlQ,OAAOpK,OAAOqa,aAAa,IAAI;EAC5E;AAEA,WAASE,YAAYhU,YAAY;AAC/B,QAAIwB,SAAS9H,QAAO+H,KAAKM,KAAKE;AAC9B,QAAIjC,WAAWiU,YAAY;AACzBzS,gBAAUxB,WAAWkU,OAAOlU,WAAW6B;AACvCnI,MAAAA,SAAQ;AACR+H,YAAM;WACD;AACLD,gBAAUxB,WAAWkU,OAAOlU,WAAW8B;AACvCpI,MAAAA,SAAQ;AACR+H,YAAM;;AAER,QAAID,SAAS;AACXO,YAAM;AACNE,eAAS;WACJ;AACLF,YAAM;AACNE,eAAS;;AAEX,WAAO;MAACvI,OAAAA;MAAO+H;MAAKD;MAASO;MAAKE;IAAM;EAC1C;AAEA,WAASkS,iBAAiBnU,YAAYI,SAAS4C,OAAOF,QAAO;AAC3D,QAAIsR,OAAOhU,QAAQiU;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,KAAKD,SAASO,KAAKE,OAAAA,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,QAAQvI,QAAO+H,KAAKD,OAAAA,CAAAA,IAAY;AAC9C4S,eAAOrS;;;AAIXnD,QAAI2V,UAAUH,MAAM1a,QAAO+H,KAAKD,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,KAAK;AAC/B,WAAOoT,OAAM,UAAUnb,SAAQmb,OAAM,QAAQpT,MAAMoT;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;IAEzC,OAAOjD,KAAK;IAKZ,OAAO/E,WAAW;MAChBiI,oBAAoB;MACpBC,iBAAiB;MAEjBgL,oBAAoB;MACpBC,eAAe;MACfqC,SAAS;MAET3U,YAAY;QACV4U,SAAS;UACPnc,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAQ;YAAS;UAAS;QACnD;MACF;;IAMF,OAAOmV,YAAY;MACjB/O,QAAQ;QACNgP,SAAS;UACPrc,MAAM;UACNsc,QAAQ;UACRC,MAAM;YACJD,QAAQ;UACV;QACF;QACAE,SAAS;UACPxc,MAAM;UACNyc,aAAa;QACf;MACF;;IASFxJ,mBAAmBrI,MAAMD,MAAMhK,QAAOgS,OAAO;AAC3C,aAAOgI,sBAAsB/P,MAAMD,MAAMhK,QAAOgS,KAAAA;IAClD;IAOAI,eAAenI,MAAMD,MAAMhK,QAAOgS,OAAO;AACvC,aAAOgI,sBAAsB/P,MAAMD,MAAMhK,QAAOgS,KAAAA;IAClD;IAOAK,gBAAgBpI,MAAMD,MAAMhK,QAAOgS,OAAO;AACxC,YAAM,EAAC9H,QAAQC,OAAAA,IAAUF;AACzB,YAAM,EAAC0I,WAAW,KAAKC,WAAW,IAAA,IAAO,KAAKrE;AAC9C,YAAMnE,WAAWF,OAAOG,SAAS,MAAMsI,WAAWC;AAClD,YAAMtI,WAAWH,OAAOE,SAAS,MAAMsI,WAAWC;AAClD,YAAM7G,SAAS,CAAA;AACf,UAAInL,IAAGuI,MAAMrI,MAAMib;AACnB,WAAKnb,KAAIZ,QAAOmJ,OAAOnJ,SAAQgS,OAAOpR,KAAIuI,MAAM,EAAEvI,IAAG;AACnDmb,cAAM/R,KAAKpJ,EAAE;AACbE,eAAO,CAAA;AACPA,aAAKoJ,OAAOG,IAAI,IAAIH,OAAO6H,MAAMc,iBAAiBkJ,KAAK3R,QAAWxJ,GAAAA,EAAAA;AAClEmL,eAAOnK,KAAKmY,WAAWlH,iBAAiBkJ,KAAKzR,QAAAA,GAAWxJ,MAAMqJ,QAAQvJ,EAAAA,CAAAA;MACxE;AACA,aAAOmL;IACT;IAKAiH,sBAAsBC,OAAOtL,OAAOoE,QAAQzC,OAAO;AACjD,YAAM0J,sBAAsBC,OAAOtL,OAAOoE,QAAQzC,KAAAA;AAClD,YAAM4Q,SAASnO,OAAO+N;AACtB,UAAII,UAAUvS,UAAU,KAAKqE,YAAY7B,QAAQ;AAE/C8I,cAAMlT,MAAMD,KAAKC,IAAIkT,MAAMlT,KAAKma,OAAOna,GAAG;AAC1CkT,cAAM/Q,MAAMpC,KAAKoC,IAAI+Q,MAAM/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,WAAKJ,sBAAsB;AAE3B,YAAMI,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,eAAemF,MAAMhc,QAAOgS,OAAOvI,MAAM;AACvC,YAAMoH,QAAQpH,SAAS;AACvB,YAAM,EAACL,OAAAA,QAAO4C,aAAa,EAAC7B,OAAAA,EAAO,IAAI;AACvC,YAAMqQ,OAAOrQ,OAAO8R,aAAY;AAChC,YAAM1B,aAAapQ,OAAOkQ,aAAY;AACtC,YAAM1B,QAAQ,KAAKuD,UAAS;AAC5B,YAAM,EAACzG,eAAeD,eAAc,IAAI,KAAKG,kBAAkB3V,QAAOyJ,IAAAA;AAEtE,eAAS7I,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAOpR,MAAK;AAC1C,cAAMmL,SAAS,KAAK+G,UAAUlS,EAAAA;AAC9B,cAAMub,UAAUtL,SAASmI,cAAcjN,OAAO5B,OAAOE,IAAI,CAAC,IAAI;UAACmQ;UAAM4B,MAAM5B;QAAI,IAAI,KAAK6B,yBAAyBzb,EAAE;AACnH,cAAM0b,UAAU,KAAKC,yBAAyB3b,IAAG+X,KAAAA;AACjD,cAAMrP,SAASyC,OAAOE,WAAW,CAAA,GAAI9B,OAAOE,IAAI;AAEhD,cAAM/D,aAAa;UACjBiU;UACAC,MAAM2B,QAAQ3B;UACdI,oBAAoB,CAACtR,SAAS2Q,WAAWlO,OAAO+N,OAAO,KAAM1Q,WAAUE,MAAM+C,QAAQjD,WAAUE,MAAMgD;UACrGnE,GAAGoS,aAAa4B,QAAQC,OAAOE,QAAQE;UACvCpU,GAAGmS,aAAa+B,QAAQE,SAASL,QAAQC;UACzCK,QAAQlC,aAAa+B,QAAQjV,OAAOvH,KAAKwY,IAAI6D,QAAQ9U,IAAI;UACzDqV,OAAOnC,aAAaza,KAAKwY,IAAI6D,QAAQ9U,IAAI,IAAIiV,QAAQjV;QACvD;AAEA,YAAImO,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAGob,KAAKpb,EAAE,EAAC+D,SAAS,WAAW8E,IAAI;;AAE1G,cAAM/C,UAAUJ,WAAWI,WAAWsV,KAAKpb,EAAAA,EAAG8F;AAC9C+T,yBAAiBnU,YAAYI,SAAS4C,OAAOF,MAAAA;AAC7CgS,yBAAiB9U,YAAYI,SAASiS,MAAMI,KAAK;AACjD,aAAKhD,cAAciG,KAAKpb,EAAE,GAAEA,IAAG0F,YAAYmD,IAAAA;MAC7C;IACF;IASAkT,WAAWC,MAAMzP,WAAW;AAC1B,YAAM,EAACjD,OAAM,IAAI,KAAK8B;AACtB,YAAM/C,WAAWiB,OAAO0B,wBAAwB,KAAK0C,KAAK,EACvD3B,OAAO1C,CAAAA,SAAQA,KAAK6B,WAAWpF,QAAQ6U,OAAO;AACjD,YAAM7Q,UAAUR,OAAOxD,QAAQgE;AAC/B,YAAMY,SAAS,CAAA;AACf,YAAMuR,gBAAgB,KAAK7Q,YAAYF,WAAWgH,UAAU3F,SAAAA;AAC5D,YAAM2P,cAAcD,iBAAiBA,cAAc3S,OAAOG,IAAI;AAE9D,YAAM0S,WAAW,CAAC9S,SAAS;AACzB,cAAM8B,SAAS9B,KAAKqD,QAAQ0P,KAAKlc,CAAAA,SAAQA,KAAKoJ,OAAOG,IAAI,MAAMyS,WAAAA;AAC/D,cAAMG,MAAMlR,UAAUA,OAAO9B,KAAKE,OAAOE,IAAI;AAE7C,YAAI2O,cAAciE,GAAQC,KAAAA,MAAMD,GAAM,GAAA;AACpC,iBAAO;;MAEX;AAEA,iBAAWhT,QAAQhB,UAAU;AAC3B,YAAIkE,cAAcnO,UAAa+d,SAAS9S,IAAO,GAAA;AAC7C;;AAQF,YAAIS,YAAY,SAASY,OAAO6R,QAAQlT,KAAKX,KAAK,MAAM,MACzDoB,YAAY1L,UAAaiL,KAAKX,UAAUtK,QAAY;AACjDsM,iBAAO1J,KAAKqI,KAAKX,KAAK;;AAExB,YAAIW,KAAKb,UAAUwT,MAAM;AACvB;;MAEJ;AAKA,UAAI,CAACtR,OAAO3K,QAAQ;AAClB2K,eAAO1J,KAAK5C,MAAAA;;AAGd,aAAOsM;IACT;IAMA8R,eAAehU,QAAO;AACpB,aAAO,KAAKuT,WAAW3d,QAAWoK,MAAAA,EAAOzI;IAC3C;IAEA0c,gBAAgB;AACd,aAAO,KAAKC,SAAQ,EAAG3c;IACzB;IAEA4c,8BAA8B;AAC5B,YAAM7Q,UAAS,KAAKxN,MAAMwN;AAC1B,YAAM8Q,eAAe,KAAKte,MAAMwH,QAAQwJ;AACxC,aAAOrK,OAAOC,KAAK4G,OAAAA,EAAQC,OAAOxG,CAAAA,QAAOuG,QAAOvG,GAAI,EAACkE,SAASmT,YAAAA,EAAc5Q,MAAK;IACnF;IAEA0Q,WAAW;AACT,YAAMjT,OAAO,CAAA;AACb,YAAMoT,mBAAmB,KAAKF,4BAA2B;AACzD,iBAAWvQ,WAAW,KAAK9N,MAAM8K,KAAKyG,UAAU;AAC9CpG,aAAKwF,eACH,KAAK3Q,MAAMwH,QAAQwJ,cAAc,MAAMlD,QAAQ4C,UAAU5C,QAAQ+C,SAAS0N,gBAAAA,CAAAA,IACvE;MACP;AACA,aAAO5X,OAAOC,KAAKuE,IAAAA;IACrB;IAUAqT,eAAehU,cAAciU,OAAMxQ,WAAW;AAC5C,YAAM7B,SAAS,KAAKqR,WAAWjT,cAAcyD,SAAAA;AAC7C,YAAM/D,SAAQuU,UAAU3e,SACpBsM,OAAO6R,QAAQQ,KACf,IAAA;AAEJ,aAAQvU,WAAU,KACdkC,OAAO3K,SAAS,IAChByI;IACN;IAKA8S,YAAY;AACV,YAAMrU,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,MAAM+Y,gBAAgBZ,qBAAqBjO,IAAAA;AAEjD,aAAO;QACLlK;QACAqZ;QACApZ,OAAOkK,OAAO0T;QACd7V,KAAKmC,OAAO2T;QACZjF,YAAY,KAAKwE,eAAc;QAC/BzV,OAAOuC;QACPqR,SAAS1T,KAAK0T;QAEdxC,OAAOD,eAAe,IAAIjR,KAAKoR,qBAAqBpR,KAAKqR;MAC3D;IACF;IAMAmD,yBAAyBjT,QAAO;AAC9B,YAAM,EAAC4C,aAAa,EAAC7B,QAAQ2D,UAAU1E,OAAOM,aAAAA,GAAehD,SAAS,EAAC8T,MAAMsD,WAAWC,aAAAA,EAAa,IAAI;AACzG,YAAM3D,aAAa0D,aAAa;AAChC,YAAM/R,SAAS,KAAK+G,UAAU1J,MAAAA;AAC9B,YAAM8Q,SAASnO,OAAO+N;AACtB,YAAMkE,WAAW/D,WAAWC,MAAAA;AAC5B,UAAI9S,QAAQ2E,OAAO5B,OAAOE,IAAI;AAC9B,UAAIrK,SAAQ;AACZ,UAAIW,SAASmN,WAAW,KAAKzE,WAAWc,QAAQ4B,QAAQ+B,QAAAA,IAAY1G;AACpE,UAAIgV,MAAM/U;AAEV,UAAI1G,WAAWyG,OAAO;AACpBpH,QAAAA,SAAQW,SAASyG;AACjBzG,iBAASyG;;AAGX,UAAI4W,UAAU;AACZ5W,gBAAQ8S,OAAON;AACfjZ,iBAASuZ,OAAOL,SAASK,OAAON;AAEhC,YAAIxS,UAAU,KAAK0C,KAAK1C,KAAAA,MAAW0C,KAAKoQ,OAAOL,MAAM,GAAG;AACtD7Z,UAAAA,SAAQ;;AAEVA,QAAAA,UAASoH;;AAGX,YAAMsS,aAAa,CAACV,cAAc8E,SAAAA,KAAc,CAACE,WAAWF,YAAY9d;AACxE,UAAIwa,OAAOrQ,OAAOoO,iBAAiBmB,UAAAA;AAEnC,UAAI,KAAKxa,MAAM+e,kBAAkB7U,MAAQ,GAAA;AACvCgT,eAAOjS,OAAOoO,iBAAiBvY,SAAQW,MAAAA;aAClC;AAELyb,eAAO5B;;AAGTnT,aAAO+U,OAAO5B;AAEd,UAAI1a,KAAKwY,IAAIjR,IAAAA,IAAQ0W,cAAc;AACjC1W,eAAO8S,QAAQ9S,MAAM8C,QAAQiQ,UAAc2D,IAAAA;AAC3C,YAAI3W,UAAUgT,YAAY;AACxBI,kBAAQnT,OAAO;;AAEjB,cAAM6W,aAAa/T,OAAOgU,mBAAmB,CAAA;AAC7C,cAAMC,WAAWjU,OAAOgU,mBAAmB,CAAA;AAC3C,cAAMpe,MAAMD,KAAKC,IAAIme,YAAYE,QAAAA;AACjC,cAAMlc,MAAMpC,KAAKoC,IAAIgc,YAAYE,QAAAA;AACjC5D,eAAO1a,KAAKoC,IAAIpC,KAAKC,IAAIya,MAAMtY,GAAMnC,GAAAA,GAAAA;AACrCqc,eAAO5B,OAAOnT;AAEd,YAAIyG,YAAY,CAACkQ,UAAU;AAEzBjS,iBAAOE,QAAQ9B,OAAOE,IAAI,EAAEmC,cAAc9C,YAAa,IAAGS,OAAOkU,iBAAiBjC,IAAQjS,IAAAA,OAAOkU,iBAAiB7D,IAAAA;;;AAItH,UAAIA,SAASrQ,OAAOoO,iBAAiB6B,UAAa,GAAA;AAChD,cAAMkE,WAAWxU,KAAKzC,IAAAA,IAAQ8C,OAAOoU,qBAAqBnE,UAAc,IAAA;AACxEI,gBAAQ8D;AACRjX,gBAAQiX;;AAGV,aAAO;QACLjX;QACAmT;QACA4B;QACAI,QAAQJ,OAAO/U,OAAO;MACxB;IACF;IAKAkV,yBAAyBnT,QAAOuP,OAAO;AACrC,YAAMhR,QAAQgR,MAAMhR;AACpB,YAAMjB,UAAU,KAAKA;AACrB,YAAMqW,WAAWrW,QAAQqW;AACzB,YAAMyB,kBAAkB3O,eAAenJ,QAAQ8X,iBAAiBC,QAAAA;AAChE,UAAIjC,QAAQnV;AACZ,YAAMqX,YAAY,KAAKrB,cAAa;AACpC,UAAI1E,MAAM4C,SAAS;AACjB,cAAM3C,aAAamE,WAAW,KAAKK,eAAehU,MAAAA,IAASuP,MAAMC;AACjE,cAAM3F,QAAQvM,QAAQoS,iBAAiB,SACnCO,0BAA0BjQ,QAAOuP,OAAOjS,SAASkS,aAAa8F,SAAAA,IAC9DhG,yBAAyBtP,QAAOuP,OAAOjS,SAASkS,aAAa8F,SAAU;AAC3E,cAAMC,SAAS,KAAKzf,MAAMwH,QAAQwJ,cAAc,MAAM,KAAKT,WAAU,EAAGG,UAAU,KAAKH,WAAU,EAAGM;AACpG,cAAM6O,aAAa,KAAKtB,SAAQ,EAAGH,QAAQtN,eAAe8O,QAAQ,KAAKpB,4BAA2B,CAAA,CAAA;AAClG,cAAMsB,aAAa,KAAKnB,eAAe,KAAKtU,OAAO,KAAK4C,YAAY1C,OAAOyT,WAAW3T,SAAQpK,MAAS,IAAI4f;AAC3GpC,iBAASvJ,MAAMjT,QAASiT,MAAMkG,QAAQ0F,aAAe5L,MAAMkG,QAAQ;AACnE9R,eAAOvH,KAAKC,IAAIye,iBAAiBvL,MAAMkG,QAAQlG,MAAM8F,KAAK;aACrD;AAELyD,iBAAS7U,MAAM4Q,iBAAiB,KAAKzF,UAAU1J,MAAAA,EAAOzB,MAAM0C,IAAI,GAAGjB,MAAAA;AACnE/B,eAAOvH,KAAKC,IAAIye,iBAAiB7F,MAAM5Y,MAAM4Y,MAAMI,KAAK;;AAI1D,aAAO;QACLyB,MAAMgC,SAASnV,OAAO;QACtB+U,MAAMI,SAASnV,OAAO;QACtBmV;QACAnV;MACF;IACF;IAEAxG,OAAO;AACL,YAAMoJ,OAAO,KAAK+B;AAClB,YAAM7B,SAASF,KAAKE;AACpB,YAAM2U,QAAQ7U,KAAKD;AACnB,YAAMb,OAAO2V,MAAMne;AACnB,UAAIC,KAAI;AAER,aAAOA,KAAIuI,MAAM,EAAEvI,IAAG;AACpB,YAAI,KAAKkS,UAAUlS,EAAE,EAACuJ,OAAOE,IAAI,MAAM,QAAQ,CAACyU,MAAMle,EAAE,EAACiN,QAAQ;AAC/DiR,gBAAMle,EAAE,EAACC,KAAK,KAAKqN,IAAI;;MAE3B;IACF;EAEF;ACtqBe,MAAM6Q,mBAAN,cAA+BhR,kBAAAA;IAE5C,OAAOjD,KAAK;IAKZ,OAAO/E,WAAW;MAChBiI,oBAAoB;MACpBC,iBAAiB;MAEjBrH,YAAY;QACV4U,SAAS;UACPnc,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAe;UAAS;QACjD;MACF;;IAMF,OAAOmV,YAAY;MACjB/O,QAAQ;QACNvE,GAAG;UACD9I,MAAM;QACR;QACA+I,GAAG;UACD/I,MAAM;QACR;MACF;;IAGF4P,aAAa;AACX,WAAKJ,sBAAsB;AAC3B,YAAMI,WAAU;IAClB;IAMAqD,mBAAmBrI,MAAMD,MAAMhK,QAAOgS,OAAO;AAC3C,YAAMjG,SAAS,MAAMuG,mBAAmBrI,MAAMD,MAAMhK,QAAOgS,KAAAA;AAC3D,eAASpR,KAAI,GAAGA,KAAImL,OAAOpL,QAAQC,MAAK;AACtCmL,eAAOnL,EAAE,EAACkZ,UAAU,KAAKxF,0BAA0B1T,KAAIZ,MAAAA,EAAOgf;MAChE;AACA,aAAOjT;IACT;IAMAqG,eAAenI,MAAMD,MAAMhK,QAAOgS,OAAO;AACvC,YAAMjG,SAAS,MAAMqG,eAAenI,MAAMD,MAAMhK,QAAOgS,KAAAA;AACvD,eAASpR,KAAI,GAAGA,KAAImL,OAAOpL,QAAQC,MAAK;AACtC,cAAME,OAAOkJ,KAAKhK,SAAQY,EAAE;AAC5BmL,eAAOnL,EAAE,EAACkZ,UAAUjK,eAAe/O,KAAK,CAAE,GAAE,KAAKwT,0BAA0B1T,KAAIZ,MAAAA,EAAOgf,MAAM;MAC9F;AACA,aAAOjT;IACT;IAMAsG,gBAAgBpI,MAAMD,MAAMhK,QAAOgS,OAAO;AACxC,YAAMjG,SAAS,MAAMsG,gBAAgBpI,MAAMD,MAAMhK,QAAOgS,KAAAA;AACxD,eAASpR,KAAI,GAAGA,KAAImL,OAAOpL,QAAQC,MAAK;AACtC,cAAME,OAAOkJ,KAAKhK,SAAQY,EAAE;AAC5BmL,eAAOnL,EAAAA,EAAGkZ,UAAUjK,eAAe/O,QAAQA,KAAK6H,KAAK,CAAC7H,KAAK6H,GAAG,KAAK2L,0BAA0B1T,KAAIZ,MAAAA,EAAOgf,MAAM;MAChH;AACA,aAAOjT;IACT;IAKA2H,iBAAiB;AACf,YAAM1J,OAAO,KAAKgC,YAAYhC;AAE9B,UAAI9H,MAAM;AACV,eAAStB,KAAIoJ,KAAKrJ,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AACzCsB,cAAMpC,KAAKoC,IAAIA,KAAK8H,KAAKpJ,EAAAA,EAAGyG,KAAK,KAAKiN,0BAA0B1T,EAAM,CAAA,IAAA,CAAA;MACxE;AACA,aAAOsB,MAAM,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,YAAMwV,SAAS,KAAKjT,YAAYhC;AAGhC,WAAK6M,eAAeoI,QAAQ,GAAGA,OAAOte,QAAQ8I,IAAAA;IAChD;IAEAoN,eAAeoI,QAAQjf,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,cAAMse,QAAQD,OAAOre,EAAE;AACvB,cAAMmL,SAAS,CAAC8E,SAAS,KAAKiC,UAAUlS,EAAAA;AACxC,cAAM0F,aAAa,CAAA;AACnB,cAAM6Y,SAAS7Y,WAAW4F,KAAM,IAAG2E,QAAQ3G,OAAOiU,mBAAmB,GAAA,IAAOjU,OAAOqO,iBAAiBxM,OAAOG,KAAAA,CAAM;AACjH,cAAMkT,SAAS9Y,WAAW6F,KAAAA,IAAS0E,QAAQ1G,OAAO8R,aAAY,IAAK9R,OAAOoO,iBAAiBxM,OAAOI,KAAAA,CAAM;AAExG7F,mBAAW+Y,OAAOnC,MAAMiC,MAAAA,KAAWjC,MAAMkC,MAAAA;AAEzC,YAAI5J,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAGse,MAAMva,SAAS,WAAW8E,IAAI;AAEtG,cAAIoH,OAAO;AACTvK,uBAAWI,QAAQsY,SAAS;;;AAIhC,aAAKjJ,cAAcmJ,OAAOte,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,YAAMkY,SAASxY,OAAOwY;AACtB,UAAIvV,SAAS,UAAU;AACrBjD,eAAOwY,SAAS;;AAElBxY,aAAOwY,UAAUnP,eAAe9D,UAAUA,OAAO+N,SAASkF,MAAAA;AAE1D,aAAOxY;IACT;EACF;AC/JA,WAAS8Y,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,SAASngB,KAAKogB,IAAIH,UAAAA;AACxB,YAAMI,SAASrgB,KAAKsgB,IAAIL,UAAAA;AACxB,YAAMM,OAAOvgB,KAAKogB,IAAIF,QAAAA;AACtB,YAAMM,OAAOxgB,KAAKsgB,IAAIJ,QAAAA;AACtB,YAAMO,UAAU,CAACC,OAAOvI,IAAGrP,OAAM6X,cAAcD,OAAOT,YAAYC,UAAU,IAAI,IAAI,IAAIlgB,KAAKoC,IAAI+V,IAAGA,KAAIwH,QAAQ7W,IAAGA,KAAI6W,MAAO;AAC9H,YAAMiB,UAAU,CAACF,OAAOvI,IAAGrP,OAAM6X,cAAcD,OAAOT,YAAYC,UAAU,IAAI,IAAI,KAAKlgB,KAAKC,IAAIkY,IAAGA,KAAIwH,QAAQ7W,IAAGA,KAAI6W,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,cAAiClT,kBAAAA;IAE9C,OAAOjD,KAAK;IAKZ,OAAO/E,WAAW;MAChBiI,oBAAoB;MACpBC,iBAAiB;MACjBjI,WAAW;QAETkb,eAAe;QAEfC,cAAc;MAChB;MACAva,YAAY;QACV4U,SAAS;UACPnc,MAAM;UACNiH,YAAY;YAAC;YAAiB;YAAY;YAAe;YAAe;YAAc;YAAK;YAAK;YAAU;YAAe;UAAU;QACrI;MACF;MAEAmZ,QAAQ;MAGRF,UAAU;MAGVC,eAAe;MAGfR,QAAQ;MAGRoC,SAAS;MAETlR,WAAW;;IAGb,OAAOmR,cAAc;MACnBC,aAAa,CAAC3D,UAASA,UAAS;MAChC4D,YAAY,CAAC5D,UAASA,UAAS,aAAa,CAACA,MAAK6D,WAAW,YAAiB,KAAA,CAAC7D,MAAK6D,WAAW,iBAAA;;IAMjG,OAAO/F,YAAY;MACjBgG,aAAa;MAGbC,SAAS;QACPC,QAAQ;UACNnP,QAAQ;YACNoP,eAAe1iB,OAAO;AACpB,oBAAM8K,OAAO9K,MAAM8K;AACnB,kBAAIA,KAAKwI,OAAO7R,UAAUqJ,KAAKyG,SAAS9P,QAAQ;AAC9C,sBAAM,EAAC6R,QAAQ,EAACqP,YAAY/e,OAAAA,OAAAA,EAAM,IAAI5D,MAAMyiB,OAAOjb;AAEnD,uBAAOsD,KAAKwI,OAAOsP,IAAI,CAAClO,OAAOhT,OAAM;AACnC,wBAAMqJ,OAAO/K,MAAMwR,eAAe,CAAA;AAClC,wBAAMqR,QAAQ9X,KAAK6B,WAAWsI,SAASxT,EAAAA;AAEvC,yBAAO;oBACLohB,MAAMpO;oBACNqO,WAAWF,MAAMG;oBACjBC,aAAaJ,MAAMK;oBACnBC,WAAWvf;oBACXwf,WAAWP,MAAMQ;oBACjBV;oBACAhU,QAAQ,CAAC3O,MAAM+e,kBAAkBrd,EAAAA;oBAGjCwI,OAAOxI;kBACT;gBACF,CAAA;;AAEF,qBAAO,CAAA;YACT;UACF;UAEA4hB,QAAQC,IAAGC,YAAYf,QAAQ;AAC7BA,mBAAOziB,MAAMyjB,qBAAqBD,WAAWtZ,KAAK;AAClDuY,mBAAOziB,MAAM0F,OAAM;UACrB;QACF;MACF;;IAGFlG,YAAYQ,OAAOwK,cAAc;AAC/B,YAAMxK,OAAOwK,YAAAA;AAEb,WAAKmF,sBAAsB;AAC3B,WAAK+T,cAAc5jB;AACnB,WAAK6jB,cAAc7jB;AACnB,WAAK4gB,UAAU5gB;AACf,WAAK6gB,UAAU7gB;IACjB;IAEAkQ,aAAa;IAAA;IAKb6C,MAAM/R,QAAOgS,OAAO;AAClB,YAAMhI,OAAO,KAAKyF,WAAU,EAAGzF;AAC/B,YAAMC,OAAO,KAAK+B;AAElB,UAAI,KAAKuC,aAAa,OAAO;AAC3BtE,aAAKqD,UAAUtD;aACV;AACL,YAAI8Y,SAAS,CAACliB,OAAM,CAACoJ,KAAKpJ,EAAE;AAE5B,YAAI+E,UAASqE,KAAKhK,MAAAA,CAAM,GAAG;AACzB,gBAAM,EAACmG,MAAM,QAAA,IAAW,KAAKoI;AAC7BuU,mBAAS,CAACliB,OAAM,CAACiS,iBAAiB7I,KAAKpJ,EAAAA,GAAIuF,GAAAA;;AAG7C,YAAIvF,IAAGuI;AACP,aAAKvI,KAAIZ,QAAOmJ,OAAOnJ,SAAQgS,OAAOpR,KAAIuI,MAAM,EAAEvI,IAAG;AACnDqJ,eAAKqD,QAAQ1M,EAAE,IAAGkiB,OAAOliB,EAAAA;QAC3B;;IAEJ;IAKAmiB,eAAe;AACb,aAAOC,UAAU,KAAKtc,QAAQ6Y,WAAW,EAAA;IAC3C;IAKA0D,oBAAoB;AAClB,aAAOD,UAAU,KAAKtc,QAAQ8Y,aAAa;IAC7C;IAMA0D,sBAAsB;AACpB,UAAInjB,MAAM+f;AACV,UAAI5d,MAAM,CAAC4d;AAEX,eAASlf,KAAI,GAAGA,KAAI,KAAK1B,MAAM8K,KAAKyG,SAAS9P,QAAQ,EAAEC,IAAG;AACxD,YAAI,KAAK1B,MAAMikB,iBAAiBviB,EAAAA,KAAM,KAAK1B,MAAMwR,eAAe9P,EAAGvB,EAAAA,SAAS,KAAKiP,OAAO;AACtF,gBAAMxC,aAAa,KAAK5M,MAAMwR,eAAe9P,EAAAA,EAAGkL;AAChD,gBAAMyT,WAAWzT,WAAWiX,aAAY;AACxC,gBAAMvD,gBAAgB1T,WAAWmX,kBAAiB;AAElDljB,gBAAMD,KAAKC,IAAIA,KAAKwf,QAAAA;AACpBrd,gBAAMpC,KAAKoC,IAAIA,KAAKqd,WAAWC,aAAAA;;MAEnC;AAEA,aAAO;QACLD,UAAUxf;QACVyf,eAAetd,MAAMnC;MACvB;IACF;IAKA6E,OAAO6E,MAAM;AACX,YAAMvK,QAAQ,KAAKA;AACnB,YAAM,EAACgV,UAAS,IAAIhV;AACpB,YAAM+K,OAAO,KAAK+B;AAClB,YAAMoX,OAAOnZ,KAAKD;AAClB,YAAMoX,UAAU,KAAKiC,kBAAiB,IAAK,KAAKC,aAAaF,IAAQ,IAAA,KAAK1c,QAAQ0a;AAClF,YAAMmC,UAAUzjB,KAAKoC,KAAKpC,KAAKC,IAAImU,UAAUwI,OAAOxI,UAAUuI,MAAM,IAAI2E,WAAW,GAAG,CAAA;AACtF,YAAM3B,SAAS3f,KAAKC,IAAIyjB,aAAa,KAAK9c,QAAQ+Y,QAAQ8D,OAAU,GAAA,CAAA;AACpE,YAAME,cAAc,KAAKC,eAAe,KAAKta,KAAK;AAKlD,YAAM,EAACoW,eAAeD,SAAAA,IAAY,KAAK2D,oBAAmB;AAC1D,YAAM,EAACxD,QAAQC,QAAQC,SAASC,QAAAA,IAAWP,kBAAkBC,UAAUC,eAAeC,MAAAA;AACtF,YAAMkE,YAAYzP,UAAUwI,QAAQ0E,WAAW1B;AAC/C,YAAMkE,aAAa1P,UAAUuI,SAAS2E,WAAWzB;AACjD,YAAMkE,YAAY/jB,KAAKoC,IAAIpC,KAAKC,IAAI4jB,UAAUC,SAAAA,IAAa,GAAG,CAAA;AAC9D,YAAMf,cAAciB,YAAY,KAAKpd,QAAQsY,QAAQ6E,SAAAA;AACrD,YAAMjB,cAAc9iB,KAAKoC,IAAI2gB,cAAcpD,QAAQ,CAAA;AACnD,YAAMsE,gBAAgBlB,cAAcD,eAAe,KAAKoB,8BAA6B;AACrF,WAAKpE,UAAUA,UAAUiD;AACzB,WAAKhD,UAAUA,UAAUgD;AAEzB5Y,WAAKga,QAAQ,KAAKC,eAAc;AAEhC,WAAKrB,cAAcA,cAAckB,eAAe,KAAKI,qBAAqB,KAAK/a,KAAK;AACpF,WAAKwZ,cAAc9iB,KAAKoC,IAAI,KAAK2gB,cAAckB,eAAeN,aAAa,CAAA;AAE3E,WAAK5M,eAAeuM,MAAM,GAAGA,KAAKziB,QAAQ8I,IAAAA;IAC5C;IAKA2a,eAAexjB,IAAGiQ,OAAO;AACvB,YAAMhJ,OAAO,KAAKnB;AAClB,YAAMuD,OAAO,KAAK+B;AAClB,YAAMwT,gBAAgB,KAAKyD,kBAAiB;AAC5C,UAAI,SAAUpb,KAAK7B,UAAUkb,iBAAkB,CAAC,KAAKhiB,MAAM+e,kBAAkBrd,EAAMqJ,KAAAA,KAAKqD,QAAQ1M,EAAE,MAAK,QAAQqJ,KAAKD,KAAKpJ,EAAAA,EAAGiN,QAAQ;AAClI,eAAO;;AAET,aAAO,KAAKwW,uBAAuBpa,KAAKqD,QAAQ1M,EAAE,IAAG4e,gBAAgBM,GAAAA;IACvE;IAEAjJ,eAAeuM,MAAMpjB,QAAOgS,OAAOvI,MAAM;AACvC,YAAMoH,QAAQpH,SAAS;AACvB,YAAMvK,QAAQ,KAAKA;AACnB,YAAMgV,YAAYhV,MAAMgV;AACxB,YAAMrM,OAAO3I,MAAMwH;AACnB,YAAM4d,gBAAgBzc,KAAK7B;AAC3B,YAAMue,WAAWrQ,UAAU1L,OAAO0L,UAAU5L,SAAS;AACrD,YAAMkc,WAAWtQ,UAAU7L,MAAM6L,UAAU3L,UAAU;AACrD,YAAM4Y,eAAetQ,SAASyT,cAAcnD;AAC5C,YAAMyB,cAAczB,eAAe,IAAI,KAAKyB;AAC5C,YAAMC,cAAc1B,eAAe,IAAI,KAAK0B;AAC5C,YAAM,EAACpN,eAAeD,eAAc,IAAI,KAAKG,kBAAkB3V,QAAOyJ,IAAAA;AACtE,UAAIsW,aAAa,KAAKgD,aAAY;AAClC,UAAIniB;AAEJ,WAAKA,KAAI,GAAGA,KAAIZ,QAAO,EAAEY,IAAG;AAC1Bmf,sBAAc,KAAKqE,eAAexjB,IAAGiQ,KAAAA;MACvC;AAEA,WAAKjQ,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAO,EAAEpR,IAAG;AACtC,cAAM4e,gBAAgB,KAAK4E,eAAexjB,IAAGiQ,KAAAA;AAC7C,cAAM4T,MAAMrB,KAAKxiB,EAAE;AACnB,cAAM0F,aAAa;UACjB6B,GAAGoc,UAAU,KAAK3E;UAClBxX,GAAGoc,UAAU,KAAK3E;UAClBE;UACAC,UAAUD,aAAaP;UACvBA;UACAqD;UACAD;QACF;AACA,YAAIpN,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAG6jB,IAAI9f,SAAS,WAAW8E,IAAI;;AAEtGsW,sBAAcP;AAEd,aAAKzJ,cAAc0O,KAAK7jB,IAAG0F,YAAYmD,IAAAA;MACzC;IACF;IAEAya,iBAAiB;AACf,YAAMja,OAAO,KAAK+B;AAClB,YAAM0Y,WAAWza,KAAKD;AACtB,UAAIia,QAAQ;AACZ,UAAIrjB;AAEJ,WAAKA,KAAI,GAAGA,KAAI8jB,SAAS/jB,QAAQC,MAAK;AACpC,cAAMwG,QAAQ6C,KAAKqD,QAAQ1M,EAAE;AAC7B,YAAIwG,UAAU,QAAQ,CAAC8V,MAAM9V,KAAAA,KAAU,KAAKlI,MAAM+e,kBAAkBrd,EAAAA,KAAM,CAAC8jB,SAAS9jB,EAAE,EAACiN,QAAQ;AAC7FoW,mBAASnkB,KAAKwY,IAAIlR,KAAAA;;MAEtB;AAEA,aAAO6c;IACT;IAEAI,uBAAuBjd,OAAO;AAC5B,YAAM6c,QAAQ,KAAKjY,YAAYiY;AAC/B,UAAIA,QAAQ,KAAK,CAAC/G,MAAM9V,KAAQ,GAAA;AAC9B,eAAO0Y,OAAOhgB,KAAKwY,IAAIlR,KAAAA,IAAS6c;;AAElC,aAAO;IACT;IAEAtQ,iBAAiBvK,QAAO;AACtB,YAAMa,OAAO,KAAK+B;AAClB,YAAM9M,QAAQ,KAAKA;AACnB,YAAMsT,SAAStT,MAAM8K,KAAKwI,UAAU,CAAA;AACpC,YAAMpL,QAAQud,aAAa1a,KAAKqD,QAAQlE,MAAAA,GAAQlK,MAAMwH,QAAQke,MAAM;AAEpE,aAAO;QACLhR,OAAOpB,OAAOpJ,MAAAA,KAAU;QACxBhC;MACF;IACF;IAEAic,kBAAkBD,MAAM;AACtB,UAAIlhB,MAAM;AACV,YAAMhD,QAAQ,KAAKA;AACnB,UAAI0B,IAAGuI,MAAMc,MAAM6B,YAAYpF;AAE/B,UAAI,CAAC0c,MAAM;AAET,aAAKxiB,KAAI,GAAGuI,OAAOjK,MAAM8K,KAAKyG,SAAS9P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC5D,cAAI1B,MAAMikB,iBAAiBviB,EAAI,GAAA;AAC7BqJ,mBAAO/K,MAAMwR,eAAe9P,EAAAA;AAC5BwiB,mBAAOnZ,KAAKD;AACZ8B,yBAAa7B,KAAK6B;AAClB;;QAEJ;;AAGF,UAAI,CAACsX,MAAM;AACT,eAAO;;AAGT,WAAKxiB,KAAI,GAAGuI,OAAOia,KAAKziB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7C8F,kBAAUoF,WAAWwI,0BAA0B1T,EAAAA;AAC/C,YAAI8F,QAAQme,gBAAgB,SAAS;AACnC3iB,gBAAMpC,KAAKoC,IAAIA,KAAKwE,QAAQ6b,eAAe,GAAG7b,QAAQoe,oBAAoB,CAAA;;MAE9E;AACA,aAAO5iB;IACT;IAEAohB,aAAaF,MAAM;AACjB,UAAIlhB,MAAM;AAEV,eAAStB,KAAI,GAAGuI,OAAOia,KAAKziB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAM8F,UAAU,KAAK4N,0BAA0B1T,EAAAA;AAC/CsB,cAAMpC,KAAKoC,IAAIA,KAAKwE,QAAQiV,UAAU,GAAGjV,QAAQqe,eAAe,CAAA;MAClE;AACA,aAAO7iB;IACT;IAMAiiB,qBAAqBza,cAAc;AACjC,UAAIsb,mBAAmB;AAEvB,eAASpkB,KAAI,GAAGA,KAAI8I,cAAc,EAAE9I,IAAG;AACrC,YAAI,KAAK1B,MAAMikB,iBAAiBviB,EAAI,GAAA;AAClCokB,8BAAoB,KAAKtB,eAAe9iB,EAAAA;;MAE5C;AAEA,aAAOokB;IACT;IAKAtB,eAAeha,cAAc;AAC3B,aAAO5J,KAAKoC,IAAI2N,eAAe,KAAK3Q,MAAM8K,KAAKyG,SAAS/G,YAAAA,EAAcub,QAAQ,CAAI,GAAA,CAAA;IACpF;IAMAjB,gCAAgC;AAC9B,aAAO,KAAKG,qBAAqB,KAAKjlB,MAAM8K,KAAKyG,SAAS9P,MAAM,KAAK;IACvE;EACF;ACtYe,MAAMukB,iBAAN,cAA6BnX,kBAAAA;IAE1C,OAAOjD,KAAK;IAKZ,OAAO/E,WAAW;MAChBiI,oBAAoB;MACpBC,iBAAiB;MAEjBkX,UAAU;MACVC,UAAU;;IAMZ,OAAO3J,YAAY;MACjB/O,QAAQ;QACNgP,SAAS;UACPrc,MAAM;QACR;QACAwc,SAAS;UACPxc,MAAM;QACR;MACF;;IAGF4P,aAAa;AACX,WAAKJ,sBAAsB;AAC3B,WAAKC,qBAAqB;AAC1B,YAAMG,WAAU;IAClB;IAEArK,OAAO6E,MAAM;AACX,YAAMQ,OAAO,KAAK+B;AAClB,YAAM,EAACgB,SAASqY,MAAMrb,MAAMiV,SAAS,CAAA,GAAIqG,SAAQ,IAAIrb;AAErD,YAAMsb,qBAAqB,KAAKrmB,MAAMwW;AACtC,UAAI,EAAC1V,OAAAA,QAAOgS,MAAAA,IAASwT,iCAAiCvb,MAAMgV,QAAQsG,kBAAAA;AAEpE,WAAK5W,aAAa3O;AAClB,WAAK4O,aAAaoD;AAElB,UAAIyT,oBAAoBxb,IAAO,GAAA;AAC7BjK,QAAAA,SAAQ;AACRgS,gBAAQiN,OAAOte;;AAIjB0kB,WAAK7f,SAAS,KAAKtG;AACnBmmB,WAAKK,gBAAgB,KAAKtc;AAC1Bic,WAAKM,aAAa,CAAC,CAACL,SAASK;AAC7BN,WAAKpG,SAASA;AAEd,YAAMvY,UAAU,KAAK2N,6BAA6B5K,IAAAA;AAClD,UAAI,CAAC,KAAK/C,QAAQye,UAAU;AAC1Bze,gBAAQ6b,cAAc;;AAExB7b,cAAQkf,UAAU,KAAKlf,QAAQkf;AAC/B,WAAK7P,cAAcsP,MAAMrmB,QAAW;QAClC6mB,UAAU,CAACN;QACX7e;SACC+C,IAAAA;AAGH,WAAKoN,eAAeoI,QAAQjf,QAAOgS,OAAOvI,IAAAA;IAC5C;IAEAoN,eAAeoI,QAAQjf,QAAOgS,OAAOvI,MAAM;AACzC,YAAMoH,QAAQpH,SAAS;AACvB,YAAM,EAACS,QAAQC,QAAQ2D,UAAUwX,SAAAA,IAAY,KAAKtZ;AAClD,YAAM,EAACyJ,eAAeD,eAAc,IAAI,KAAKG,kBAAkB3V,QAAOyJ,IAAAA;AACtE,YAAMyC,QAAQhC,OAAOG;AACrB,YAAM8B,QAAQhC,OAAOE;AACrB,YAAM,EAAC+a,UAAUQ,QAAAA,IAAW,KAAKlf;AACjC,YAAMof,eAAeC,UAASX,QAAYA,IAAAA,WAAWla,OAAOE;AAC5D,YAAM4a,eAAe,KAAK9mB,MAAMwW,uBAAuB7E,SAASpH,SAAS;AACzE,YAAM1B,MAAM/H,SAAQgS;AACpB,YAAMiU,cAAchH,OAAOte;AAC3B,UAAIulB,aAAalmB,SAAQ,KAAK,KAAK8S,UAAU9S,SAAQ,CAAA;AAErD,eAASY,KAAI,GAAGA,KAAIqlB,aAAa,EAAErlB,IAAG;AACpC,cAAMse,QAAQD,OAAOre,EAAE;AACvB,cAAM0F,aAAa0f,eAAe9G,QAAQ,CAAA;AAE1C,YAAIte,KAAIZ,UAASY,MAAKmH,KAAK;AACzBzB,qBAAW+Y,OAAO;AAClB;;AAGF,cAAMtT,SAAS,KAAK+G,UAAUlS,EAAAA;AAC9B,cAAMulB,WAAWnN,cAAcjN,OAAOI,KAAM,CAAA;AAC5C,cAAMgT,SAAS7Y,WAAW4F,KAAM,IAAGhC,OAAOqO,iBAAiBxM,OAAOG,KAAAA,GAAQtL,EAAAA;AAC1E,cAAMwe,SAAS9Y,WAAW6F,KAAM,IAAG0E,SAASsV,WAAWhc,OAAO8R,aAAY,IAAK9R,OAAOoO,iBAAiBzK,WAAW,KAAKzE,WAAWc,QAAQ4B,QAAQ+B,QAAAA,IAAY/B,OAAOI,KAAM,GAAEvL,EAAE;AAE/K0F,mBAAW+Y,OAAOnC,MAAMiC,MAAAA,KAAWjC,MAAMkC,MAAW+G,KAAAA;AACpD7f,mBAAWlE,OAAOxB,KAAI,KAAK,KAAM0X,IAAIvM,OAAOG,KAAM,IAAGga,WAAWha,KAAAA,CAAM,IAAK4Z;AAC3E,YAAIF,SAAS;AACXtf,qBAAWyF,SAASA;AACpBzF,qBAAW8G,MAAMkY,SAAStb,KAAKpJ,EAAE;;AAGnC,YAAI4U,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAGse,MAAMva,SAAS,WAAW8E,IAAI;;AAGxG,YAAI,CAACuc,cAAc;AACjB,eAAKjQ,cAAcmJ,OAAOte,IAAG0F,YAAYmD,IAAAA;;AAG3Cyc,qBAAana;MACf;IACF;IAKA2H,iBAAiB;AACf,YAAMzJ,OAAO,KAAK+B;AAClB,YAAMgB,UAAU/C,KAAK+C;AACrB,YAAMoZ,SAASpZ,QAAQtG,WAAWsG,QAAQtG,QAAQ6b,eAAe;AACjE,YAAMvY,OAAOC,KAAKD,QAAQ,CAAA;AAC1B,UAAI,CAACA,KAAKrJ,QAAQ;AAChB,eAAOylB;;AAET,YAAMC,aAAarc,KAAK,CAAE,EAAC3C,KAAK,KAAKiN,0BAA0B,CAAA,CAAA;AAC/D,YAAMgS,YAAYtc,KAAKA,KAAKrJ,SAAS,CAAE,EAAC0G,KAAK,KAAKiN,0BAA0BtK,KAAKrJ,SAAS,CAAA,CAAA;AAC1F,aAAOb,KAAKoC,IAAIkkB,QAAQC,YAAYC,SAAa,IAAA;IACnD;IAEAzlB,OAAO;AACL,YAAMoJ,OAAO,KAAK+B;AAClB/B,WAAK+C,QAAQuZ,oBAAoB,KAAKrnB,MAAMgV,WAAWjK,KAAKC,OAAOG,IAAI;AACvE,YAAMxJ,KAAI;IACZ;EACF;AC3Ie,MAAM2lB,sBAAN,cAAkCzY,kBAAAA;IAE/C,OAAOjD,KAAK;IAKZ,OAAO/E,WAAW;MAChBkI,iBAAiB;MACjBjI,WAAW;QACTkb,eAAe;QACfC,cAAc;MAChB;MACAva,YAAY;QACV4U,SAAS;UACPnc,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAc;YAAY;YAAe;UAAc;QAChF;MACF;MACA4J,WAAW;MACX6P,YAAY;;IAMd,OAAOtE,YAAY;MACjBgG,aAAa;MAEbC,SAAS;QACPC,QAAQ;UACNnP,QAAQ;YACNoP,eAAe1iB,OAAO;AACpB,oBAAM8K,OAAO9K,MAAM8K;AACnB,kBAAIA,KAAKwI,OAAO7R,UAAUqJ,KAAKyG,SAAS9P,QAAQ;AAC9C,sBAAM,EAAC6R,QAAQ,EAACqP,YAAY/e,OAAAA,OAAAA,EAAM,IAAI5D,MAAMyiB,OAAOjb;AAEnD,uBAAOsD,KAAKwI,OAAOsP,IAAI,CAAClO,OAAOhT,OAAM;AACnC,wBAAMqJ,OAAO/K,MAAMwR,eAAe,CAAA;AAClC,wBAAMqR,QAAQ9X,KAAK6B,WAAWsI,SAASxT,EAAAA;AAEvC,yBAAO;oBACLohB,MAAMpO;oBACNqO,WAAWF,MAAMG;oBACjBC,aAAaJ,MAAMK;oBACnBC,WAAWvf;oBACXwf,WAAWP,MAAMQ;oBACjBV;oBACAhU,QAAQ,CAAC3O,MAAM+e,kBAAkBrd,EAAAA;oBAGjCwI,OAAOxI;kBACT;gBACF,CAAA;;AAEF,qBAAO,CAAA;YACT;UACF;UAEA4hB,QAAQC,IAAGC,YAAYf,QAAQ;AAC7BA,mBAAOziB,MAAMyjB,qBAAqBD,WAAWtZ,KAAK;AAClDuY,mBAAOziB,MAAM0F,OAAM;UACrB;QACF;MACF;MAEA8H,QAAQ;QACN/D,GAAG;UACDtJ,MAAM;UACNonB,YAAY;YACVC,SAAS;UACX;UACA5K,aAAa;UACbF,MAAM;YACJ+K,UAAU;UACZ;UACAC,aAAa;YACXF,SAAS;UACX;UACA3G,YAAY;QACd;MACF;;IAGFrhB,YAAYQ,OAAOwK,cAAc;AAC/B,YAAMxK,OAAOwK,YAAAA;AAEb,WAAKkZ,cAAc5jB;AACnB,WAAK6jB,cAAc7jB;IACrB;IAEA2U,iBAAiBvK,QAAO;AACtB,YAAMa,OAAO,KAAK+B;AAClB,YAAM9M,QAAQ,KAAKA;AACnB,YAAMsT,SAAStT,MAAM8K,KAAKwI,UAAU,CAAA;AACpC,YAAMpL,QAAQud,aAAa1a,KAAKqD,QAAQlE,MAAAA,EAAOT,GAAGzJ,MAAMwH,QAAQke,MAAM;AAEtE,aAAO;QACLhR,OAAOpB,OAAOpJ,MAAAA,KAAU;QACxBhC;MACF;IACF;IAEAiL,gBAAgBpI,MAAMD,MAAMhK,QAAOgS,OAAO;AACxC,aAAO6U,4BAA4BC,KAAK,IAAI,EAAE7c,MAAMD,MAAMhK,QAAOgS,KAAAA;IACnE;IAEApN,OAAO6E,MAAM;AACX,YAAM2Z,OAAO,KAAKpX,YAAYhC;AAE9B,WAAK+c,cAAa;AAClB,WAAKlQ,eAAeuM,MAAM,GAAGA,KAAKziB,QAAQ8I,IAAAA;IAC5C;IAKA2J,YAAY;AACV,YAAMnJ,OAAO,KAAK+B;AAClB,YAAMiH,QAAQ;QAAClT,KAAKmL,OAAOE;QAAmBlJ,KAAKgJ,OAAOC;MAAiB;AAE3ElB,WAAKD,KAAKtK,QAAQ,CAACwN,SAAS9D,WAAU;AACpC,cAAM2C,SAAS,KAAK+G,UAAU1J,MAAAA,EAAOT;AAErC,YAAI,CAACuU,MAAMnR,MAAW,KAAA,KAAK7M,MAAM+e,kBAAkB7U,MAAQ,GAAA;AACzD,cAAI2C,SAASkH,MAAMlT,KAAK;AACtBkT,kBAAMlT,MAAMgM;;AAGd,cAAIA,SAASkH,MAAM/Q,KAAK;AACtB+Q,kBAAM/Q,MAAM6J;;;MAGlB,CAAA;AAEA,aAAOkH;IACT;IAKA8T,gBAAgB;AACd,YAAM7nB,QAAQ,KAAKA;AACnB,YAAMgV,YAAYhV,MAAMgV;AACxB,YAAMrM,OAAO3I,MAAMwH;AACnB,YAAMsgB,UAAUlnB,KAAKC,IAAImU,UAAU5L,QAAQ4L,UAAU1L,MAAM0L,UAAU3L,SAAS2L,UAAU7L,GAAG;AAE3F,YAAMwa,cAAc/iB,KAAKoC,IAAI8kB,UAAU,GAAG,CAAA;AAC1C,YAAMpE,cAAc9iB,KAAKoC,IAAI2F,KAAKof,mBAAmB,cAAe,MAAQpf,KAAKof,mBAAoB,GAAG,CAAA;AACxG,YAAMlD,gBAAgBlB,cAAcD,eAAe1jB,MAAMgoB,uBAAsB;AAE/E,WAAKrE,cAAcA,cAAekB,eAAe,KAAK3a;AACtD,WAAKwZ,cAAc,KAAKC,cAAckB;IACxC;IAEAlN,eAAeuM,MAAMpjB,QAAOgS,OAAOvI,MAAM;AACvC,YAAMoH,QAAQpH,SAAS;AACvB,YAAMvK,QAAQ,KAAKA;AACnB,YAAM2I,OAAO3I,MAAMwH;AACnB,YAAM4d,gBAAgBzc,KAAK7B;AAC3B,YAAM2B,QAAQ,KAAKqE,YAAYwE;AAC/B,YAAM+T,UAAU5c,MAAMwf;AACtB,YAAM3C,UAAU7c,MAAMyf;AACtB,YAAMC,oBAAoB1f,MAAM2f,cAAc,CAAA,IAAK,MAAMvG;AACzD,UAAIP,QAAQ6G;AACZ,UAAIzmB;AAEJ,YAAM2mB,eAAe,MAAM,KAAKC,qBAAoB;AAEpD,WAAK5mB,KAAI,GAAGA,KAAIZ,QAAO,EAAEY,IAAG;AAC1B4f,iBAAS,KAAKiH,cAAc7mB,IAAG6I,MAAM8d,YAAAA;MACvC;AACA,WAAK3mB,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAOpR,MAAK;AACtC,cAAM6jB,MAAMrB,KAAKxiB,EAAE;AACnB,YAAImf,aAAaS;AACjB,YAAIR,WAAWQ,QAAQ,KAAKiH,cAAc7mB,IAAG6I,MAAM8d,YAAAA;AACnD,YAAI1E,cAAc3jB,MAAM+e,kBAAkBrd,EAAAA,IAAK+G,MAAM+f,8BAA8B,KAAK5U,UAAUlS,EAAG+H,EAAAA,CAAC,IAAI;AAC1G6X,gBAAQR;AAER,YAAInP,OAAO;AACT,cAAIyT,cAAcnD,cAAc;AAC9B0B,0BAAc;;AAEhB,cAAIyB,cAAcpD,eAAe;AAC/BnB,yBAAaC,WAAWqH;;;AAI5B,cAAM/gB,aAAa;UACjB6B,GAAGoc;UACHnc,GAAGoc;UACH5B,aAAa;UACbC;UACA9C;UACAC;UACAtZ,SAAS,KAAK4N,0BAA0B1T,IAAG6jB,IAAI9f,SAAS,WAAW8E,IAAI;QACzE;AAEA,aAAKsM,cAAc0O,KAAK7jB,IAAG0F,YAAYmD,IAAAA;MACzC;IACF;IAEA+d,uBAAuB;AACrB,YAAMvd,OAAO,KAAK+B;AAClB,UAAIgG,QAAQ;AAEZ/H,WAAKD,KAAKtK,QAAQ,CAACwN,SAAS9D,WAAU;AACpC,YAAI,CAAC8T,MAAM,KAAKpK,UAAU1J,MAAAA,EAAOT,CAAC,KAAK,KAAKzJ,MAAM+e,kBAAkB7U,MAAQ,GAAA;AAC1E4I;;MAEJ,CAAA;AAEA,aAAOA;IACT;IAKAyV,cAAcre,QAAOK,MAAM8d,cAAc;AACvC,aAAO,KAAKroB,MAAM+e,kBAAkB7U,MAChC4Z,IAAAA,UAAU,KAAK1O,0BAA0BlL,QAAOK,IAAAA,EAAM+W,SAAS+G,YAAAA,IAC/D;IACN;EACF;AC/Ne,MAAMI,gBAAN,cAA4B1G,mBAAAA;IAEzC,OAAOnW,KAAK;IAKZ,OAAO/E,WAAW;MAEhB0Z,QAAQ;MAGRF,UAAU;MAGVC,eAAe;MAGfR,QAAQ;;EAEZ;ACpBe,MAAM4I,kBAAN,cAA8B7Z,kBAAAA;IAE3C,OAAOjD,KAAK;IAKZ,OAAO/E,WAAW;MAChBiI,oBAAoB;MACpBC,iBAAiB;MACjBiC,WAAW;MACXiV,UAAU;MACVnR,UAAU;QACRqR,MAAM;UACJjW,MAAM;QACR;MACF;;IAMF,OAAOqM,YAAY;MACjBgG,aAAa;MAEb/U,QAAQ;QACN/D,GAAG;UACDtJ,MAAM;QACR;MACF;;IAMFsU,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,MAAMhK,QAAOgS,OAAO;AACxC,aAAO6U,4BAA4BC,KAAK,IAAI,EAAE7c,MAAMD,MAAMhK,QAAOgS,KAAAA;IACnE;IAEApN,OAAO6E,MAAM;AACX,YAAMQ,OAAO,KAAK+B;AAClB,YAAMqZ,OAAOpb,KAAK+C;AAClB,YAAMiS,SAAShV,KAAKD,QAAQ,CAAA;AAC5B,YAAMwI,SAASvI,KAAKC,OAAOuI,UAAS;AAGpC4S,WAAKpG,SAASA;AAEd,UAAIxV,SAAS,UAAU;AACrB,cAAM/C,UAAU,KAAK2N,6BAA6B5K,IAAAA;AAClD,YAAI,CAAC,KAAK/C,QAAQye,UAAU;AAC1Bze,kBAAQ6b,cAAc;;AAGxB,cAAMjc,aAAa;UACjBlC,OAAO;UACPyjB,WAAWrV,OAAO7R,WAAWse,OAAOte;UACpC+F;QACF;AAEA,aAAKqP,cAAcsP,MAAMrmB,QAAWsH,YAAYmD,IAAAA;;AAIlD,WAAKoN,eAAeoI,QAAQ,GAAGA,OAAOte,QAAQ8I,IAAAA;IAChD;IAEAoN,eAAeoI,QAAQjf,QAAOgS,OAAOvI,MAAM;AACzC,YAAM9B,QAAQ,KAAKqE,YAAYwE;AAC/B,YAAMK,QAAQpH,SAAS;AAEvB,eAAS7I,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAOpR,MAAK;AAC1C,cAAMse,QAAQD,OAAOre,EAAE;AACvB,cAAM8F,UAAU,KAAK4N,0BAA0B1T,IAAGse,MAAMva,SAAS,WAAW8E,IAAI;AAChF,cAAMqe,gBAAgBngB,MAAMogB,yBAAyBnnB,IAAG,KAAKkS,UAAUlS,EAAAA,EAAG+H,CAAC;AAE3E,cAAMR,KAAI0I,QAAQlJ,MAAMwf,UAAUW,cAAc3f;AAChD,cAAMC,KAAIyI,QAAQlJ,MAAMyf,UAAUU,cAAc1f;AAEhD,cAAM9B,aAAa;UACjB6B,GAAAA;UACAC,GAAAA;UACAoY,OAAOsH,cAActH;UACrBnB,MAAMnC,MAAM/U,EAAAA,KAAM+U,MAAM9U,EAAAA;UACxB1B;QACF;AAEA,aAAKqP,cAAcmJ,OAAOte,IAAG0F,YAAYmD,IAAAA;MAC3C;IACF;EACF;AClGe,MAAMue,oBAAN,cAAgCja,kBAAAA;IAE7C,OAAOjD,KAAK;IAKZ,OAAO/E,WAAW;MAChBiI,oBAAoB;MACpBC,iBAAiB;MACjBkX,UAAU;MACV/V,MAAM;;IAMR,OAAOqM,YAAY;MAEjBwM,aAAa;QACXxe,MAAM;MACR;MAEAiD,QAAQ;QACNvE,GAAG;UACD9I,MAAM;QACR;QACA+I,GAAG;UACD/I,MAAM;QACR;MACF;;IAMFsU,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,MAAMiV,SAAS,CAAA,EAAE,IAAIhV;AAE5B,YAAMsb,qBAAqB,KAAKrmB,MAAMwW;AACtC,UAAI,EAAC1V,OAAAA,QAAOgS,MAAAA,IAASwT,iCAAiCvb,MAAMgV,QAAQsG,kBAAAA;AAEpE,WAAK5W,aAAa3O;AAClB,WAAK4O,aAAaoD;AAElB,UAAIyT,oBAAoBxb,IAAO,GAAA;AAC7BjK,QAAAA,SAAQ;AACRgS,gBAAQiN,OAAOte;;AAGjB,UAAI,KAAK+F,QAAQye,UAAU;AAGzB,YAAI,CAAC,KAAKnX,oBAAoB;AAC5B,eAAKmB,YAAW;;AAElB,cAAM,EAACnC,SAASqY,MAAMC,SAAAA,IAAYrb;AAGlCob,aAAK7f,SAAS,KAAKtG;AACnBmmB,aAAKK,gBAAgB,KAAKtc;AAC1Bic,aAAKM,aAAa,CAAC,CAACL,SAASK;AAC7BN,aAAKpG,SAASA;AAEd,cAAMvY,UAAU,KAAK2N,6BAA6B5K,IAAAA;AAClD/C,gBAAQkf,UAAU,KAAKlf,QAAQkf;AAC/B,aAAK7P,cAAcsP,MAAMrmB,QAAW;UAClC6mB,UAAU,CAACN;UACX7e;WACC+C,IAAAA;MACL,WAAW,KAAKuE,oBAAoB;AAElC,eAAO/D,KAAK+C;AACZ,aAAKgB,qBAAqB;;AAI5B,WAAK6I,eAAeoI,QAAQjf,QAAOgS,OAAOvI,IAAAA;IAC5C;IAEA0F,cAAc;AACZ,YAAM,EAACgW,SAAQ,IAAI,KAAKze;AAExB,UAAI,CAAC,KAAKsH,sBAAsBmX,UAAU;AACxC,aAAKnX,qBAAqB,KAAK9O,MAAMgpB,SAASC,WAAW,MAAA;;AAG3D,YAAMhZ,YAAW;IACnB;IAEA0H,eAAeoI,QAAQjf,QAAOgS,OAAOvI,MAAM;AACzC,YAAMoH,QAAQpH,SAAS;AACvB,YAAM,EAACS,QAAQC,QAAQ2D,UAAUwX,SAAAA,IAAY,KAAKtZ;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,EAAC+a,UAAUQ,QAAAA,IAAW,KAAKlf;AACjC,YAAMof,eAAeC,UAASX,QAAYA,IAAAA,WAAWla,OAAOE;AAC5D,YAAM4a,eAAe,KAAK9mB,MAAMwW,uBAAuB7E,SAASpH,SAAS;AACzE,UAAIyc,aAAalmB,SAAQ,KAAK,KAAK8S,UAAU9S,SAAQ,CAAA;AAErD,eAASY,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAO,EAAEpR,IAAG;AAC1C,cAAMse,QAAQD,OAAOre,EAAE;AACvB,cAAMmL,SAAS,KAAK+G,UAAUlS,EAAAA;AAC9B,cAAM0F,aAAa0f,eAAe9G,QAAQ,CAAA;AAC1C,cAAMiH,WAAWnN,cAAcjN,OAAOI,KAAM,CAAA;AAC5C,cAAMgT,SAAS7Y,WAAW4F,KAAM,IAAGhC,OAAOqO,iBAAiBxM,OAAOG,KAAAA,GAAQtL,EAAAA;AAC1E,cAAMwe,SAAS9Y,WAAW6F,KAAM,IAAG0E,SAASsV,WAAWhc,OAAO8R,aAAY,IAAK9R,OAAOoO,iBAAiBzK,WAAW,KAAKzE,WAAWc,QAAQ4B,QAAQ+B,QAAAA,IAAY/B,OAAOI,KAAM,GAAEvL,EAAE;AAE/K0F,mBAAW+Y,OAAOnC,MAAMiC,MAAAA,KAAWjC,MAAMkC,MAAW+G,KAAAA;AACpD7f,mBAAWlE,OAAOxB,KAAI,KAAK,KAAM0X,IAAIvM,OAAOG,KAAM,IAAGga,WAAWha,KAAAA,CAAM,IAAK4Z;AAC3E,YAAIF,SAAS;AACXtf,qBAAWyF,SAASA;AACpBzF,qBAAW8G,MAAMkY,SAAStb,KAAKpJ,EAAE;;AAGnC,YAAI4U,gBAAgB;AAClBlP,qBAAWI,UAAU+O,iBAAiB,KAAKnB,0BAA0B1T,IAAGse,MAAMva,SAAS,WAAW8E,IAAI;;AAGxG,YAAI,CAACuc,cAAc;AACjB,eAAKjQ,cAAcmJ,OAAOte,IAAG0F,YAAYmD,IAAAA;;AAG3Cyc,qBAAana;MACf;AAEA,WAAK+J,oBAAoBL,eAAehM,MAAMmM,SAAAA;IAChD;IAKAlC,iBAAiB;AACf,YAAMzJ,OAAO,KAAK+B;AAClB,YAAMhC,OAAOC,KAAKD,QAAQ,CAAA;AAE1B,UAAI,CAAC,KAAKtD,QAAQye,UAAU;AAC1B,YAAIjjB,MAAM;AACV,iBAAStB,KAAIoJ,KAAKrJ,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AACzCsB,gBAAMpC,KAAKoC,IAAIA,KAAK8H,KAAKpJ,EAAAA,EAAGyG,KAAK,KAAKiN,0BAA0B1T,EAAM,CAAA,IAAA,CAAA;QACxE;AACA,eAAOsB,MAAM,KAAKA;;AAGpB,YAAM8K,UAAU/C,KAAK+C;AACrB,YAAMoZ,SAASpZ,QAAQtG,WAAWsG,QAAQtG,QAAQ6b,eAAe;AAEjE,UAAI,CAACvY,KAAKrJ,QAAQ;AAChB,eAAOylB;;AAGT,YAAMC,aAAarc,KAAK,CAAE,EAAC3C,KAAK,KAAKiN,0BAA0B,CAAA,CAAA;AAC/D,YAAMgS,YAAYtc,KAAKA,KAAKrJ,SAAS,CAAE,EAAC0G,KAAK,KAAKiN,0BAA0BtK,KAAKrJ,SAAS,CAAA,CAAA;AAC1F,aAAOb,KAAKoC,IAAIkkB,QAAQC,YAAYC,SAAa,IAAA;IACnD;EACF;;;;;;;;;;;;AClHA,WAAS8B,WAAwB;AAC/B,UAAM,IAAIC,MAAM,iFAAmF;EACrG;AAQA,MAAMC,kBAAN,MAAMA,iBAAAA;;;;;;;;;;;IAYJ,OAAOC,SACLC,SACA;AACA3iB,aAAOyB,OAAOghB,iBAAgBG,WAAWD,OAAAA;IAC3C;IAES9hB;IAEThI,YAAYgI,SAAqB;AAC/B,WAAKA,UAAUA,WAAW,CAAA;IAC5B;;IAGAgiB,OAAO;IAAA;IAEPC,UAAiD;AAC/C,aAAOP,SAAAA;IACT;IAEArW,QAAuB;AACrB,aAAOqW,SAAAA;IACT;IAEAQ,SAAiB;AACf,aAAOR,SAAAA;IACT;IAEAvmB,MAAc;AACZ,aAAOumB,SAAAA;IACT;IAEAS,OAAe;AACb,aAAOT,SAAAA;IACT;IAEAU,UAAkB;AAChB,aAAOV,SAAAA;IACT;IAEAW,QAAgB;AACd,aAAOX,SAAAA;IACT;EACF;AAEA,MAAAY,YAAe;IACbC,OAAOX;EAMT;ACpHA,WAASY,aAAaC,SAAS9e,MAAMjD,OAAOgiB,WAAW;AACrD,UAAM,EAACtd,YAAY9B,MAAMkI,QAAAA,IAAWiX;AACpC,UAAMjf,SAAS4B,WAAWE,YAAY9B;AACtC,UAAMkb,WAAW+D,QAAQnc,UAAUmc,QAAQnc,QAAQtG,UAAUyiB,QAAQnc,QAAQtG,QAAQ0e,WAAW,OAAO;AAEvG,QAAIlb,UAAUG,SAASH,OAAOG,QAAQA,SAAS,OAAO6H,WAAWlI,KAAKrJ,QAAQ;AAC5E,YAAM0oB,eAAenf,OAAOof,iBAAiBC,gBAAgBC;AAC7D,UAAI,CAACJ,WAAW;AACd,cAAMK,SAASJ,aAAarf,MAAMK,MAAMjD,KAAAA;AACxC,YAAIge,UAAU;AACZ,gBAAM,EAACjb,OAAAA,IAAU2B,WAAWE;AAC5B,gBAAM,EAACsB,QAAO,IAAI6b;AAElB,gBAAMO,sBAAuBpc,QAC1Bqc,MAAM,GAAGF,OAAOG,KAAK,CACrB9hB,EAAAA,QAAO,EACP+hB,UACC3K,CAAAA,UAAS,CAAClG,cAAckG,MAAM/U,OAAOE,IAAI,CAAC,CAAA;AAC9Cof,iBAAOG,MAAM9pB,KAAKoC,IAAI,GAAGwnB,mBAAAA;AAEzB,gBAAMI,sBAAuBxc,QAC1Bqc,MAAMF,OAAOM,EAAE,EACfF,UACC3K,CAAAA,UAAS,CAAClG,cAAckG,MAAM/U,OAAOE,IAAI,CAAC,CAAA;AAC9Cof,iBAAOM,MAAMjqB,KAAKoC,IAAI,GAAG4nB,mBAAAA;;AAE3B,eAAOL;iBACE3d,WAAW4C,gBAAgB;AAIpC,cAAMsb,KAAKhgB,KAAK,CAAE;AAClB,cAAMiJ,QAAQ,OAAO+W,GAAGC,aAAa,cAAcD,GAAGC,SAAS5f,IAAAA;AAC/D,YAAI4I,OAAO;AACT,gBAAMjT,SAAQqpB,aAAarf,MAAMK,MAAMjD,QAAQ6L,KAAAA;AAC/C,gBAAMlL,MAAMshB,aAAarf,MAAMK,MAAMjD,QAAQ6L,KAAAA;AAC7C,iBAAO;YAAC2W,IAAI5pB,OAAM4pB;YAAIG,IAAIhiB,IAAIgiB;UAAE;;;;AAKtC,WAAO;MAACH,IAAI;MAAGG,IAAI/f,KAAKrJ,SAAS;IAAC;EACpC;AAUA,WAASupB,yBAAyBhrB,OAAOmL,MAAM8f,UAAUC,SAAShB,WAAW;AAC3E,UAAMngB,WAAW/J,MAAMmrB,6BAA4B;AACnD,UAAMjjB,QAAQ+iB,SAAS9f,IAAK;AAC5B,aAASzJ,KAAI,GAAGuI,OAAOF,SAAStI,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACrD,YAAM,EAACwI,OAAAA,QAAOY,KAAAA,IAAQf,SAASrI,EAAE;AACjC,YAAM,EAACgpB,IAAIG,GAAAA,IAAMb,aAAajgB,SAASrI,EAAAA,GAAIyJ,MAAMjD,OAAOgiB,SAAAA;AACxD,eAASkB,KAAIV,IAAIU,MAAKP,IAAI,EAAEO,IAAG;AAC7B,cAAMpd,UAAUlD,KAAKsgB,EAAE;AACvB,YAAI,CAACpd,QAAQmS,MAAM;AACjB+K,kBAAQld,SAAS9D,QAAOkhB,EAAAA;;MAE5B;IACF;EACF;AAOA,WAASC,yBAAyBlgB,MAAM;AACtC,UAAMmgB,OAAOngB,KAAK8S,QAAQ,GAAA,MAAS;AACnC,UAAMsN,OAAOpgB,KAAK8S,QAAQ,GAAA,MAAS;AAEnC,WAAO,SAASuN,KAAKC,KAAK;AACxB,YAAMC,SAASJ,OAAO1qB,KAAKwY,IAAIoS,IAAIviB,IAAIwiB,IAAIxiB,CAAC,IAAI;AAChD,YAAM0iB,SAASJ,OAAO3qB,KAAKwY,IAAIoS,IAAItiB,IAAIuiB,IAAIviB,CAAC,IAAI;AAChD,aAAOtI,KAAKgrB,KAAKhrB,KAAKirB,IAAIH,QAAQ,CAAK9qB,IAAAA,KAAKirB,IAAIF,QAAQ,CAAA,CAAA;IAC1D;EACF;AAWA,WAASG,kBAAkB9rB,OAAOirB,UAAU9f,MAAM4gB,kBAAkBC,kBAAkB;AACpF,UAAMxqB,QAAQ,CAAA;AAEd,QAAI,CAACwqB,oBAAoB,CAAChsB,MAAMisB,cAAchB,QAAW,GAAA;AACvD,aAAOzpB;;AAGT,UAAM0qB,iBAAiB,SAASle,SAASxD,cAAcN,QAAO;AAC5D,UAAI,CAAC8hB,oBAAoB,CAACG,eAAene,SAAShO,MAAMgV,WAAW,CAAI,GAAA;AACrE;;AAEF,UAAIhH,QAAQoe,QAAQnB,SAAShiB,GAAGgiB,SAAS/hB,GAAG6iB,gBAAmB,GAAA;AAC7DvqB,cAAMkB,KAAK;UAACsL;UAASxD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEA8gB,6BAAyBhrB,OAAOmL,MAAM8f,UAAUiB,gBAAgB,IAAI;AACpE,WAAO1qB;EACT;AAUA,WAAS6qB,sBAAsBrsB,OAAOirB,UAAU9f,MAAM4gB,kBAAkB;AACtE,QAAIvqB,QAAQ,CAAA;AAEZ,aAAS0qB,eAAele,SAASxD,cAAcN,QAAO;AACpD,YAAM,EAAC2W,YAAYC,SAAAA,IAAY9S,QAAQse,SAAS;QAAC;QAAc;SAAaP,gBAAAA;AAC5E,YAAM,EAACzK,MAAAA,IAASiL,kBAAkBve,SAAS;QAAC/E,GAAGgiB,SAAShiB;QAAGC,GAAG+hB,SAAS/hB;MAAC,CAAA;AAExE,UAAIqY,cAAcD,OAAOT,YAAYC,QAAW,GAAA;AAC9Ctf,cAAMkB,KAAK;UAACsL;UAASxD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEA8gB,6BAAyBhrB,OAAOmL,MAAM8f,UAAUiB,cAAAA;AAChD,WAAO1qB;EACT;AAYA,WAASgrB,yBAAyBxsB,OAAOirB,UAAU9f,MAAM+e,WAAW6B,kBAAkBC,kBAAkB;AACtG,QAAIxqB,QAAQ,CAAA;AACZ,UAAMirB,iBAAiBpB,yBAAyBlgB,IAAAA;AAChD,QAAIuhB,cAAc1gB,OAAOE;AAEzB,aAASggB,eAAele,SAASxD,cAAcN,QAAO;AACpD,YAAMkiB,WAAUpe,QAAQoe,QAAQnB,SAAShiB,GAAGgiB,SAAS/hB,GAAG6iB,gBAAAA;AACxD,UAAI7B,aAAa,CAACkC,UAAS;AACzB;;AAGF,YAAM9O,SAAStP,QAAQ2e,eAAeZ,gBAAAA;AACtC,YAAMa,cAAc,CAAC,CAACZ,oBAAoBhsB,MAAMisB,cAAc3O,MAAAA;AAC9D,UAAI,CAACsP,eAAe,CAACR,UAAS;AAC5B;;AAGF,YAAMS,WAAWJ,eAAexB,UAAU3N,MAAAA;AAC1C,UAAIuP,WAAWH,aAAa;AAC1BlrB,gBAAQ;UAAC;YAACwM;YAASxD;YAAcN,OAAAA;UAAK;QAAE;AACxCwiB,sBAAcG;iBACLA,aAAaH,aAAa;AAEnClrB,cAAMkB,KAAK;UAACsL;UAASxD;UAAcN,OAAAA;QAAK,CAAA;;IAE5C;AAEA8gB,6BAAyBhrB,OAAOmL,MAAM8f,UAAUiB,cAAAA;AAChD,WAAO1qB;EACT;AAYA,WAASsrB,gBAAgB9sB,OAAOirB,UAAU9f,MAAM+e,WAAW6B,kBAAkBC,kBAAkB;AAC7F,QAAI,CAACA,oBAAoB,CAAChsB,MAAMisB,cAAchB,QAAW,GAAA;AACvD,aAAO,CAAA;;AAGT,WAAO9f,SAAS,OAAO,CAAC+e,YACpBmC,sBAAsBrsB,OAAOirB,UAAU9f,MAAM4gB,gBAAAA,IAC7CS,yBAAyBxsB,OAAOirB,UAAU9f,MAAM+e,WAAW6B,kBAAkBC,gBAAiB;EACpG;AAWA,WAASe,aAAa/sB,OAAOirB,UAAU9f,MAAM+e,WAAW6B,kBAAkB;AACxE,UAAMvqB,QAAQ,CAAA;AACd,UAAMwrB,cAAc7hB,SAAS,MAAM,aAAa;AAChD,QAAI8hB,iBAAiB;AAErBjC,6BAAyBhrB,OAAOmL,MAAM8f,UAAU,CAACjd,SAASxD,cAAcN,WAAU;AAChF,UAAI8D,QAAQgf,WAAY,KAAIhf,QAAQgf,WAAY,EAAC/B,SAAS9f,IAAK,GAAE4gB,gBAAmB,GAAA;AAClFvqB,cAAMkB,KAAK;UAACsL;UAASxD;UAAcN,OAAAA;QAAK,CAAA;AACxC+iB,yBAAiBA,kBAAkBjf,QAAQoe,QAAQnB,SAAShiB,GAAGgiB,SAAS/hB,GAAG6iB,gBAAAA;;IAE/E,CAAA;AAIA,QAAI7B,aAAa,CAAC+C,gBAAgB;AAChC,aAAO,CAAA;;AAET,WAAOzrB;EACT;AAMA,MAAA,cAAe;IAEbwpB;IAGAkC,OAAO;MAYLhjB,MAAMlK,OAAOujB,IAAG/b,SAASukB,kBAAkB;AACzC,cAAMd,WAAWkC,oBAAoB5J,IAAGvjB,KAAAA;AAExC,cAAMmL,OAAO3D,QAAQ2D,QAAQ;AAC7B,cAAM6gB,mBAAmBxkB,QAAQwkB,oBAAoB;AACrD,cAAMxqB,QAAQgG,QAAQ0iB,YAClB4B,kBAAkB9rB,OAAOirB,UAAU9f,MAAM4gB,kBAAkBC,gBAAAA,IAC3Dc,gBAAgB9sB,OAAOirB,UAAU9f,MAAM,OAAO4gB,kBAAkBC,gBAAiB;AACrF,cAAMlX,YAAW,CAAA;AAEjB,YAAI,CAACtT,MAAMC,QAAQ;AACjB,iBAAO,CAAA;;AAGTzB,cAAMmrB,6BAA4B,EAAG3qB,QAAQ,CAACuK,SAAS;AACrD,gBAAMb,SAAQ1I,MAAM,CAAA,EAAG0I;AACvB,gBAAM8D,UAAUjD,KAAKD,KAAKZ,MAAM;AAGhC,cAAI8D,WAAW,CAACA,QAAQmS,MAAM;AAC5BrL,YAAAA,UAASpS,KAAK;cAACsL;cAASxD,cAAcO,KAAKb;cAAOA,OAAAA;YAAK,CAAA;;QAE3D,CAAA;AAEA,eAAO4K;MACT;MAYAhH,QAAQ9N,OAAOujB,IAAG/b,SAASukB,kBAAkB;AAC3C,cAAMd,WAAWkC,oBAAoB5J,IAAGvjB,KAAAA;AACxC,cAAMmL,OAAO3D,QAAQ2D,QAAQ;AAC7B,cAAM6gB,mBAAmBxkB,QAAQwkB,oBAAoB;AACrD,YAAIxqB,QAAQgG,QAAQ0iB,YAChB4B,kBAAkB9rB,OAAOirB,UAAU9f,MAAM4gB,kBAAkBC,gBAAAA,IAC7Dc,gBAAgB9sB,OAAOirB,UAAU9f,MAAM,OAAO4gB,kBAAkBC,gBAAiB;AAEnF,YAAIxqB,MAAMC,SAAS,GAAG;AACpB,gBAAM+I,eAAehJ,MAAM,CAAA,EAAGgJ;AAC9B,gBAAMM,OAAO9K,MAAMwR,eAAehH,YAAAA,EAAcM;AAChDtJ,kBAAQ,CAAA;AACR,mBAASE,KAAI,GAAGA,KAAIoJ,KAAKrJ,QAAQ,EAAEC,IAAG;AACpCF,kBAAMkB,KAAK;cAACsL,SAASlD,KAAKpJ,EAAE;cAAE8I;cAAcN,OAAOxI;YAAC,CAAA;UACtD;;AAGF,eAAOF;MACT;MAYAwe,MAAMhgB,OAAOujB,IAAG/b,SAASukB,kBAAkB;AACzC,cAAMd,WAAWkC,oBAAoB5J,IAAGvjB,KAAAA;AACxC,cAAMmL,OAAO3D,QAAQ2D,QAAQ;AAC7B,cAAM6gB,mBAAmBxkB,QAAQwkB,oBAAoB;AACrD,eAAOF,kBAAkB9rB,OAAOirB,UAAU9f,MAAM4gB,kBAAkBC,gBAAAA;MACpE;MAWAoB,QAAQptB,OAAOujB,IAAG/b,SAASukB,kBAAkB;AAC3C,cAAMd,WAAWkC,oBAAoB5J,IAAGvjB,KAAAA;AACxC,cAAMmL,OAAO3D,QAAQ2D,QAAQ;AAC7B,cAAM6gB,mBAAmBxkB,QAAQwkB,oBAAoB;AACrD,eAAOc,gBAAgB9sB,OAAOirB,UAAU9f,MAAM3D,QAAQ0iB,WAAW6B,kBAAkBC,gBAAAA;MACrF;MAWA/iB,EAAEjJ,OAAOujB,IAAG/b,SAASukB,kBAAkB;AACrC,cAAMd,WAAWkC,oBAAoB5J,IAAGvjB,KAAAA;AACxC,eAAO+sB,aAAa/sB,OAAOirB,UAAU,KAAKzjB,QAAQ0iB,WAAW6B,gBAAAA;MAC/D;MAWA7iB,EAAElJ,OAAOujB,IAAG/b,SAASukB,kBAAkB;AACrC,cAAMd,WAAWkC,oBAAoB5J,IAAGvjB,KAAAA;AACxC,eAAO+sB,aAAa/sB,OAAOirB,UAAU,KAAKzjB,QAAQ0iB,WAAW6B,gBAAAA;MAC/D;IACF;EACF;AC3XA,MAAMsB,mBAAmB;IAAC;IAAQ;IAAO;IAAS;EAAS;AAE3D,WAASC,iBAAiBC,OAAOtC,UAAU;AACzC,WAAOsC,MAAM9f,OAAOwO,CAAAA,OAAKA,GAAEuR,QAAQvC,QAAAA;EACrC;AAEA,WAASwC,4BAA4BF,OAAOpiB,MAAM;AAChD,WAAOoiB,MAAM9f,OAAOwO,CAAAA,OAAKoR,iBAAiBpP,QAAQhC,GAAEuR,GAAG,MAAM,MAAMvR,GAAEyR,IAAIviB,SAASA,IAAAA;EACpF;AAEA,WAASwiB,aAAaJ,OAAO3kB,SAAS;AACpC,WAAO2kB,MAAMzU,KAAK,CAACC,IAAGrP,OAAM;AAC1B,YAAMkkB,KAAKhlB,UAAUc,KAAIqP;AACzB,YAAMgD,KAAKnT,UAAUmQ,KAAIrP;AACzB,aAAOkkB,GAAG7H,WAAWhK,GAAGgK,SACtB6H,GAAG1jB,QAAQ6R,GAAG7R,QACd0jB,GAAG7H,SAAShK,GAAGgK;IACnB,CAAA;EACF;AAEA,WAAS8H,UAAUC,OAAO;AACxB,UAAMC,cAAc,CAAA;AACpB,QAAIrsB,IAAGuI,MAAMyjB,KAAKF,KAAKpjB,OAAO4jB;AAE9B,SAAKtsB,KAAI,GAAGuI,QAAQ6jB,SAAS,CAAA,GAAIrsB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACtDgsB,YAAMI,MAAMpsB,EAAE;AACb,OAAA,EAACupB,UAAUuC,KAAKhmB,SAAS,EAAC4C,OAAO4jB,cAAc,EAAC,EAAC,IAAIN;AACtDK,kBAAYrrB,KAAK;QACfwH,OAAOxI;QACPgsB;QACAF;QACAnS,YAAYqS,IAAIvS,aAAY;QAC5B4K,QAAQ2H,IAAI3H;QACZ3b,OAAOA,SAAUojB,MAAMpjB;QACvB4jB;MACF,CAAA;IACF;AACA,WAAOD;EACT;AAEA,WAASE,YAAYC,UAAS;AAC5B,UAAM9hB,SAAS,CAAA;AACf,eAAW+hB,QAAQD,UAAS;AAC1B,YAAM,EAAC9jB,OAAOojB,KAAKQ,YAAAA,IAAeG;AAClC,UAAI,CAAC/jB,SAAS,CAACijB,iBAAiBe,SAASZ,GAAM,GAAA;AAC7C;;AAEF,YAAMa,SAASjiB,OAAOhC,KAAAA,MAAWgC,OAAOhC,KAAAA,IAAS;QAAC0I,OAAO;QAAGwb,QAAQ;QAAGvI,QAAQ;QAAG5d,MAAM;;AACxFkmB,aAAOvb;AACPub,aAAOtI,UAAUiI;IACnB;AACA,WAAO5hB;EACT;AAKA,WAASmiB,cAAcL,UAASM,QAAQ;AACtC,UAAMpiB,SAAS6hB,YAAYC,QAAAA;AAC3B,UAAM,EAACO,cAAcC,cAAAA,IAAiBF;AACtC,QAAI9sB,IAAGuI,MAAM0kB;AACb,SAAKjtB,KAAI,GAAGuI,OAAOikB,SAAQzsB,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAChDitB,MAAAA,UAAST,SAAQxsB,EAAE;AACnB,YAAM,EAACktB,SAAAA,IAAYD,QAAOjB;AAC1B,YAAMtjB,QAAQgC,OAAOuiB,QAAOvkB,KAAK;AACjC,YAAMzG,SAASyG,SAASukB,QAAOX,cAAc5jB,MAAM2b;AACnD,UAAI4I,QAAOtT,YAAY;AACrBsT,QAAAA,QAAOnR,QAAQ7Z,SAASA,SAAS8qB,eAAeG,YAAYJ,OAAOK;AACnEF,QAAAA,QAAOpR,SAASmR;aACX;AACLC,QAAAA,QAAOnR,QAAQiR;AACfE,QAAAA,QAAOpR,SAAS5Z,SAASA,SAAS+qB,gBAAgBE,YAAYJ,OAAOM;;IAEzE;AACA,WAAO1iB;EACT;AAEA,WAAS2iB,iBAAiBjB,OAAO;AAC/B,UAAMC,cAAcF,UAAUC,KAAAA;AAC9B,UAAMc,WAAWjB,aAAaI,YAAYtgB,OAAO0gB,CAAAA,SAAQA,KAAKT,IAAIkB,QAAQ,GAAG,IAAI;AACjF,UAAMtlB,OAAOqkB,aAAaL,iBAAiBS,aAAa,MAAA,GAAS,IAAI;AACrE,UAAM3kB,QAAQukB,aAAaL,iBAAiBS,aAAa,OAAA,CAAA;AACzD,UAAM5kB,MAAMwkB,aAAaL,iBAAiBS,aAAa,KAAA,GAAQ,IAAI;AACnE,UAAM1kB,SAASskB,aAAaL,iBAAiBS,aAAa,QAAA,CAAA;AAC1D,UAAMiB,mBAAmBvB,4BAA4BM,aAAa,GAAA;AAClE,UAAMkB,iBAAiBxB,4BAA4BM,aAAa,GAAA;AAEhE,WAAO;MACLa;MACAM,YAAY5lB,KAAKsP,OAAOzP,GAAAA;MACxBgmB,gBAAgB/lB,MAAMwP,OAAOqW,cAAAA,EAAgBrW,OAAOvP,MAAAA,EAAQuP,OAAOoW,gBAAAA;MACnEha,WAAWsY,iBAAiBS,aAAa,WAAA;MACzCqB,UAAU9lB,KAAKsP,OAAOxP,KAAAA,EAAOwP,OAAOqW,cAAAA;MACpC5T,YAAYlS,IAAIyP,OAAOvP,MAAAA,EAAQuP,OAAOoW,gBAAAA;IACxC;EACF;AAEA,WAASK,eAAeC,YAAYta,WAAW+D,IAAGrP,IAAG;AACnD,WAAO9I,KAAKoC,IAAIssB,WAAWvW,EAAE,GAAE/D,UAAU+D,EAAAA,CAAE,IAAInY,KAAKoC,IAAIssB,WAAW5lB,EAAAA,GAAIsL,UAAUtL,EAAE,CAAA;EACrF;AAEA,WAAS6lB,iBAAiBD,YAAYE,YAAY;AAChDF,eAAWnmB,MAAMvI,KAAKoC,IAAIssB,WAAWnmB,KAAKqmB,WAAWrmB,GAAG;AACxDmmB,eAAWhmB,OAAO1I,KAAKoC,IAAIssB,WAAWhmB,MAAMkmB,WAAWlmB,IAAI;AAC3DgmB,eAAWjmB,SAASzI,KAAKoC,IAAIssB,WAAWjmB,QAAQmmB,WAAWnmB,MAAM;AACjEimB,eAAWlmB,QAAQxI,KAAKoC,IAAIssB,WAAWlmB,OAAOomB,WAAWpmB,KAAK;EAChE;AAEA,WAASqmB,WAAWza,WAAWwZ,QAAQG,SAAQviB,QAAQ;AACrD,UAAM,EAACohB,KAAKE,IAAAA,IAAOiB;AACnB,UAAMW,aAAata,UAAUsa;AAG7B,QAAI,CAAC7oB,UAAS+mB,GAAM,GAAA;AAClB,UAAImB,QAAOxmB,MAAM;AAEf6M,kBAAUwY,GAAAA,KAAQmB,QAAOxmB;;AAE3B,YAAMiC,QAAQgC,OAAOuiB,QAAOvkB,KAAK,KAAK;QAACjC,MAAM;QAAG2K,OAAO;MAAC;AACxD1I,YAAMjC,OAAOvH,KAAKoC,IAAIoH,MAAMjC,MAAMwmB,QAAOtT,aAAaqS,IAAInQ,SAASmQ,IAAIlQ,KAAK;AAC5EmR,MAAAA,QAAOxmB,OAAOiC,MAAMjC,OAAOiC,MAAM0I;AACjCkC,gBAAUwY,GAAAA,KAAQmB,QAAOxmB;;AAG3B,QAAIulB,IAAIgC,YAAY;AAClBH,uBAAiBD,YAAY5B,IAAIgC,WAAU,CAAA;;AAG7C,UAAMC,WAAW/uB,KAAKoC,IAAI,GAAGwrB,OAAOoB,aAAaP,eAAeC,YAAYta,WAAW,QAAQ,OAAA,CAAA;AAC/F,UAAM6a,YAAYjvB,KAAKoC,IAAI,GAAGwrB,OAAOsB,cAAcT,eAAeC,YAAYta,WAAW,OAAO,QAAA,CAAA;AAChG,UAAM+a,eAAeJ,aAAa3a,UAAUgb;AAC5C,UAAMC,gBAAgBJ,cAAc7a,UAAUkb;AAC9Clb,cAAUgb,IAAIL;AACd3a,cAAUkb,IAAIL;AAGd,WAAOlB,QAAOtT,aACV;MAAC8U,MAAMJ;MAAcK,OAAOH;QAC5B;MAACE,MAAMF;MAAeG,OAAOL;;EACnC;AAEA,WAASM,iBAAiBrb,WAAW;AACnC,UAAMsa,aAAata,UAAUsa;AAE7B,aAASgB,UAAU9C,KAAK;AACtB,YAAM+C,SAAS3vB,KAAKoC,IAAIssB,WAAW9B,GAAAA,IAAOxY,UAAUwY,GAAAA,GAAM,CAAA;AAC1DxY,gBAAUwY,GAAAA,KAAQ+C;AAClB,aAAOA;IACT;AACAvb,cAAU9L,KAAKonB,UAAU,KAAA;AACzBtb,cAAU/L,KAAKqnB,UAAU,MAAA;AACzBA,cAAU,OAAA;AACVA,cAAU,QAAA;EACZ;AAEA,WAASE,WAAWnV,YAAYrG,WAAW;AACzC,UAAMsa,aAAata,UAAUsa;AAE7B,aAASmB,mBAAmBC,YAAW;AACrC,YAAMC,SAAS;QAACrnB,MAAM;QAAGH,KAAK;QAAGC,OAAO;QAAGC,QAAQ;MAAC;AACpDqnB,MAAAA,WAAUlwB,QAAQ,CAACgtB,QAAQ;AACzBmD,eAAOnD,GAAAA,IAAO5sB,KAAKoC,IAAIgS,UAAUwY,GAAI,GAAE8B,WAAW9B,GAAI,CAAA;MACxD,CAAA;AACA,aAAOmD;IACT;AAEA,WAAOtV,aACHoV,mBAAmB;MAAC;MAAQ;IAAQ,CAAA,IACpCA,mBAAmB;MAAC;MAAO;KAAS;EAC1C;AAEA,WAASG,SAAS9C,OAAO9Y,WAAWwZ,QAAQpiB,QAAQ;AAClD,UAAMykB,aAAa,CAAA;AACnB,QAAInvB,IAAGuI,MAAM0kB,SAAQjB,KAAKoD,OAAOC;AAEjC,SAAKrvB,KAAI,GAAGuI,OAAO6jB,MAAMrsB,QAAQqvB,QAAQ,GAAGpvB,KAAIuI,MAAM,EAAEvI,IAAG;AACzDitB,MAAAA,UAASb,MAAMpsB,EAAE;AACjBgsB,YAAMiB,QAAOjB;AAEbA,UAAIhoB,OACFipB,QAAOnR,SAASxI,UAAUgb,GAC1BrB,QAAOpR,UAAUvI,UAAUkb,GAC3BM,WAAW7B,QAAOtT,YAAYrG,SAAAA,CAAAA;AAEhC,YAAM,EAACmb,MAAMC,MAAAA,IAASX,WAAWza,WAAWwZ,QAAQG,SAAQviB,MAAAA;AAI5D0kB,eAASX,QAAQU,WAAWpvB;AAG5BsvB,gBAAUA,WAAWX;AAErB,UAAI,CAAC1C,IAAIkB,UAAU;AACjBiC,mBAAWnuB,KAAKisB,OAAAA;;IAEpB;AAEA,WAAOmC,SAASF,SAASC,YAAY7b,WAAWwZ,QAAQpiB,MAAW2kB,KAAAA;EACrE;AAEA,WAASC,WAAWtD,KAAKpkB,MAAMH,KAAKqU,OAAOD,QAAQ;AACjDmQ,QAAIvkB,MAAMA;AACVukB,QAAIpkB,OAAOA;AACXokB,QAAItkB,QAAQE,OAAOkU;AACnBkQ,QAAIrkB,SAASF,MAAMoU;AACnBmQ,QAAIlQ,QAAQA;AACZkQ,QAAInQ,SAASA;EACf;AAEA,WAAS0T,WAAWnD,OAAO9Y,WAAWwZ,QAAQpiB,QAAQ;AACpD,UAAM8kB,cAAc1C,OAAO2C;AAC3B,QAAI,EAACloB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK8L;AAEb,eAAW2Z,WAAUb,OAAO;AAC1B,YAAMJ,MAAMiB,QAAOjB;AACnB,YAAMtjB,QAAQgC,OAAOuiB,QAAOvkB,KAAK,KAAK;QAAC0I,OAAO;QAAGwb,QAAQ;QAAGvI,QAAQ;MAAC;AACrE,YAAMA,SAAS4I,QAAQX,cAAc5jB,MAAM2b,UAAW;AACtD,UAAI4I,QAAOtT,YAAY;AACrB,cAAMmC,QAAQxI,UAAUgb,IAAIjK;AAC5B,cAAMxI,SAASnT,MAAMjC,QAAQulB,IAAInQ;AACjC,YAAI5H,QAAQvL,MAAMtJ,KAAK,GAAG;AACxBoI,UAAAA,KAAIkB,MAAMtJ;;AAEZ,YAAI4sB,IAAIkB,UAAU;AAChBoC,qBAAWtD,KAAKwD,YAAY5nB,MAAMJ,IAAGslB,OAAOoB,aAAasB,YAAY9nB,QAAQ8nB,YAAY5nB,MAAMiU,MAAAA;eAC1F;AACLyT,qBAAWtD,KAAK1Y,UAAU1L,OAAOc,MAAMkkB,QAAQplB,IAAGsU,OAAOD,MAAAA;;AAE3DnT,cAAMtJ,QAAQoI;AACdkB,cAAMkkB,UAAU9Q;AAChBtU,QAAAA,KAAIwkB,IAAIrkB;aACH;AACL,cAAMkU,SAASvI,UAAUkb,IAAInK;AAC7B,cAAMvI,QAAQpT,MAAMjC,QAAQulB,IAAIlQ;AAChC,YAAI7H,QAAQvL,MAAMtJ,KAAK,GAAG;AACxBmI,UAAAA,KAAImB,MAAMtJ;;AAEZ,YAAI4sB,IAAIkB,UAAU;AAChBoC,qBAAWtD,KAAKzkB,IAAGioB,YAAY/nB,KAAKqU,OAAOgR,OAAOsB,cAAcoB,YAAY7nB,SAAS6nB,YAAY/nB,GAAG;eAC/F;AACL6nB,qBAAWtD,KAAKzkB,IAAG+L,UAAU7L,MAAMiB,MAAMkkB,QAAQ9Q,OAAOD,MAAAA;;AAE1DnT,cAAMtJ,QAAQmI;AACdmB,cAAMkkB,UAAU/Q;AAChBtU,QAAAA,KAAIykB,IAAItkB;;IAEZ;AAEA4L,cAAU/L,IAAIA;AACd+L,cAAU9L,IAAIA;EAChB;AAwBA,MAAA,UAAe;IAQbkoB,OAAOpxB,OAAO4B,MAAM;AAClB,UAAI,CAAC5B,MAAM8tB,OAAO;AAChB9tB,cAAM8tB,QAAQ,CAAA;;AAIhBlsB,WAAKgtB,WAAWhtB,KAAKgtB,YAAY;AACjChtB,WAAKqpB,WAAWrpB,KAAKqpB,YAAY;AACjCrpB,WAAKmkB,SAASnkB,KAAKmkB,UAAU;AAE7BnkB,WAAKyvB,UAAUzvB,KAAKyvB,WAAW,WAAW;AACxC,eAAO;UAAC;YACNC,GAAG;YACH3vB,KAAKqT,WAAW;AACdpT,mBAAKD,KAAKqT,SAAAA;YACZ;UACF;QAAE;MACJ;AAEAhV,YAAM8tB,MAAMprB,KAAKd,IAAAA;IACnB;IAOA2vB,UAAUvxB,OAAOwxB,YAAY;AAC3B,YAAMtnB,SAAQlK,MAAM8tB,QAAQ9tB,MAAM8tB,MAAM7P,QAAQuT,UAAc,IAAA;AAC9D,UAAItnB,WAAU,IAAI;AAChBlK,cAAM8tB,MAAMjW,OAAO3N,QAAO,CAAA;;IAE9B;IAQA1D,UAAUxG,OAAO4B,MAAM4F,SAAS;AAC9B5F,WAAKgtB,WAAWpnB,QAAQonB;AACxBhtB,WAAKqpB,WAAWzjB,QAAQyjB;AACxBrpB,WAAKmkB,SAASve,QAAQue;IACxB;IAUArgB,OAAO1F,OAAOwd,OAAOD,QAAQkU,YAAY;AACvC,UAAI,CAACzxB,OAAO;AACV;;AAGF,YAAMmxB,UAAUO,UAAU1xB,MAAMwH,QAAQmnB,OAAOwC,OAAO;AACtD,YAAMtC,iBAAiBjuB,KAAKoC,IAAIwa,QAAQ2T,QAAQ3T,OAAO,CAAA;AACvD,YAAMsR,kBAAkBluB,KAAKoC,IAAIua,SAAS4T,QAAQ5T,QAAQ,CAAA;AAC1D,YAAMuQ,QAAQiB,iBAAiB/uB,MAAM8tB,KAAK;AAC1C,YAAM6D,gBAAgB7D,MAAMsB;AAC5B,YAAMwC,kBAAkB9D,MAAMzS;AAI9BwW,WAAK7xB,MAAM8tB,OAAOJ,CAAAA,QAAO;AACvB,YAAI,OAAOA,IAAIoE,iBAAiB,YAAY;AAC1CpE,cAAIoE,aAAY;;MAEpB,CAAA;AA6BA,YAAMC,0BAA0BJ,cAAc9uB,OAAO,CAACkiB,OAAOoJ,SAC3DA,KAAKT,IAAIlmB,WAAW2mB,KAAKT,IAAIlmB,QAAQggB,YAAY,QAAQzC,QAAQA,QAAQ,GAAG,CAAM,KAAA;AAEpF,YAAMyJ,SAAS7nB,OAAOqP,OAAO;QAC3B4Z,YAAYpS;QACZsS,aAAavS;QACb4T;QACAtC;QACAC;QACAL,cAAcI,iBAAiB,IAAIkD;QACnCrD,eAAeI,kBAAkB;MACnC,CAAA;AACA,YAAMQ,aAAa3oB,OAAOyB,OAAO,CAAA,GAAI+oB,OAAAA;AACrC5B,uBAAiBD,YAAYoC,UAAUD,UAAAA,CAAAA;AACvC,YAAMzc,YAAYrO,OAAOyB,OAAO;QAC9BknB;QACAU,GAAGnB;QACHqB,GAAGpB;QACH7lB,GAAGkoB,QAAQ7nB;QACXJ,GAAGioB,QAAQhoB;SACVgoB,OAAAA;AAEH,YAAM/kB,SAASmiB,cAAcoD,cAAc/Y,OAAOgZ,eAAkBpD,GAAAA,MAAAA;AAGpEoC,eAAS9C,MAAMc,UAAU5Z,WAAWwZ,QAAQpiB,MAAAA;AAG5CwkB,eAASe,eAAe3c,WAAWwZ,QAAQpiB,MAAAA;AAG3C,UAAIwkB,SAASgB,iBAAiB5c,WAAWwZ,QAAQpiB,MAAS,GAAA;AAExDwkB,iBAASe,eAAe3c,WAAWwZ,QAAQpiB,MAAAA;;AAG7CikB,uBAAiBrb,SAAAA;AAGjBic,iBAAWnD,MAAMoB,YAAYla,WAAWwZ,QAAQpiB,MAAAA;AAGhD4I,gBAAU/L,KAAK+L,UAAUgb;AACzBhb,gBAAU9L,KAAK8L,UAAUkb;AAEzBe,iBAAWnD,MAAMqB,gBAAgBna,WAAWwZ,QAAQpiB,MAAAA;AAEpDpM,YAAMgV,YAAY;QAChB1L,MAAM0L,UAAU1L;QAChBH,KAAK6L,UAAU7L;QACfC,OAAO4L,UAAU1L,OAAO0L,UAAUgb;QAClC3mB,QAAQ2L,UAAU7L,MAAM6L,UAAUkb;QAClC3S,QAAQvI,UAAUkb;QAClB1S,OAAOxI,UAAUgb;MACnB;AAGA6B,WAAK/D,MAAM9Y,WAAW,CAAC2Z,YAAW;AAChC,cAAMjB,MAAMiB,QAAOjB;AACnB/mB,eAAOyB,OAAOslB,KAAK1tB,MAAMgV,SAAS;AAClC0Y,YAAIhoB,OAAOsP,UAAUgb,GAAGhb,UAAUkb,GAAG;UAAC5mB,MAAM;UAAGH,KAAK;UAAGC,OAAO;UAAGC,QAAQ;QAAC,CAAA;MAC5E,CAAA;IACF;EACF;AC9be,MAAM2oB,eAAN,MAAMA;IAOnBC,eAAeC,QAAQ3P,aAAa;IAAA;IAQpC4P,eAAe9c,SAAS;AACtB,aAAO;IACT;IASA+c,iBAAiBpyB,OAAOG,MAAMkyB,UAAU;IAAA;IAQxCC,oBAAoBtyB,OAAOG,MAAMkyB,UAAU;IAAA;IAK3CE,sBAAsB;AACpB,aAAO;IACT;IASAC,eAAexkB,SAASwP,OAAOD,QAAQgF,aAAa;AAClD/E,cAAQ5c,KAAKoC,IAAI,GAAGwa,SAASxP,QAAQwP,KAAK;AAC1CD,eAASA,UAAUvP,QAAQuP;AAC3B,aAAO;QACLC;QACAD,QAAQ3c,KAAKoC,IAAI,GAAGuf,cAAc3hB,KAAKoE,MAAMwY,QAAQ+E,WAAAA,IAAehF,MAAM;MAC5E;IACF;IAMAkV,WAAWP,QAAQ;AACjB,aAAO;IACT;IAMAQ,aAAarsB,SAAQ;IAErB;EACF;ACtEe,MAAMssB,gBAAN,cAA4BX,aAAAA;IACzCC,eAAerwB,MAAM;AAInB,aAAOA,QAAQA,KAAK+Q,cAAc/Q,KAAK+Q,WAAW,IAAA,KAAS;IAC7D;IACA+f,aAAarsB,SAAQ;AACnBA,MAAAA,QAAOmB,QAAQV,YAAY;IAC7B;EACF;ACTA,MAAM8rB,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,gBAAgBrrB,CAAAA,UAASA,UAAU,QAAQA,UAAU;AAQ3D,WAASsrB,WAAWtB,QAAQ3P,aAAa;AACvC,UAAMM,QAAQqP,OAAOrP;AAIrB,UAAM4Q,eAAevB,OAAOwB,aAAa,QAAA;AACzC,UAAMC,cAAczB,OAAOwB,aAAa,OAAA;AAGxCxB,WAAOU,WAAAA,IAAe;MACpBlyB,SAAS;QACP6c,QAAQkW;QACRjW,OAAOmW;QACP9Q,OAAO;UACL2E,SAAS3E,MAAM2E;UACfjK,QAAQsF,MAAMtF;UACdC,OAAOqF,MAAMrF;QACf;MACF;IACF;AAKAqF,UAAM2E,UAAU3E,MAAM2E,WAAW;AAEjC3E,UAAM+Q,YAAY/Q,MAAM+Q,aAAa;AAErC,QAAIL,cAAcI,WAAc,GAAA;AAC9B,YAAME,eAAeC,aAAa5B,QAAQ,OAAA;AAC1C,UAAI2B,iBAAiB/zB,QAAW;AAC9BoyB,eAAO1U,QAAQqW;;;AAInB,QAAIN,cAAcE,YAAe,GAAA;AAC/B,UAAIvB,OAAOrP,MAAMtF,WAAW,IAAI;AAI9B2U,eAAO3U,SAAS2U,OAAO1U,SAAS+E,eAAe;aAC1C;AACL,cAAMwR,gBAAgBD,aAAa5B,QAAQ,QAAA;AAC3C,YAAI6B,kBAAkBj0B,QAAW;AAC/BoyB,iBAAO3U,SAASwW;;;;AAKtB,WAAO7B;EACT;AAIA,MAAM8B,uBAAuBC,+BAA+B;IAACC,SAAS;EAAI,IAAI;AAE9E,WAASC,aAAYC,MAAMj0B,MAAMkyB,UAAU;AACzC,QAAI+B,MAAM;AACRA,WAAKhC,iBAAiBjyB,MAAMkyB,UAAU2B,oBAAAA;;EAE1C;AAEA,WAASK,gBAAer0B,OAAOG,MAAMkyB,UAAU;AAC7C,QAAIryB,SAASA,MAAMkyB,QAAQ;AACzBlyB,YAAMkyB,OAAOI,oBAAoBnyB,MAAMkyB,UAAU2B,oBAAAA;;EAErD;AAEA,WAASM,gBAAgB9xB,QAAOxC,OAAO;AACrC,UAAMG,OAAO0yB,YAAYrwB,OAAMrC,IAAI,KAAKqC,OAAMrC;AAC9C,UAAM,EAAC8I,GAAAA,IAAGC,GAAAA,GAAAA,IAAKikB,oBAAoB3qB,QAAOxC,KAAAA;AAC1C,WAAO;MACLG;MACAH;MACAu0B,QAAQ/xB;MACRyG,GAAGA,OAAMnJ,SAAYmJ,KAAI;MACzBC,GAAGA,OAAMpJ,SAAYoJ,KAAI;IAC3B;EACF;AAEA,WAASsrB,iBAAiBC,UAAUvC,QAAQ;AAC1C,eAAWkC,QAAQK,UAAU;AAC3B,UAAIL,SAASlC,UAAUkC,KAAKM,SAASxC,MAAS,GAAA;AAC5C,eAAO;;IAEX;EACF;AAEA,WAASyC,qBAAqB30B,OAAOG,MAAMkyB,UAAU;AACnD,UAAMH,SAASlyB,MAAMkyB;AACrB,UAAM0C,WAAW,IAAIC,iBAAiBC,CAAAA,YAAW;AAC/C,UAAIC,UAAU;AACd,iBAAWxa,SAASua,SAAS;AAC3BC,kBAAUA,WAAWP,iBAAiBja,MAAMya,YAAY9C,MAAAA;AACxD6C,kBAAUA,WAAW,CAACP,iBAAiBja,MAAM0a,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,qBAAqBt1B,OAAOG,MAAMkyB,UAAU;AACnD,UAAMH,SAASlyB,MAAMkyB;AACrB,UAAM0C,WAAW,IAAIC,iBAAiBC,CAAAA,YAAW;AAC/C,UAAIC,UAAU;AACd,iBAAWxa,SAASua,SAAS;AAC3BC,kBAAUA,WAAWP,iBAAiBja,MAAM0a,cAAc/C,MAAAA;AAC1D6C,kBAAUA,WAAW,CAACP,iBAAiBja,MAAMya,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,oBAAI51B,IAAAA;AAC/B,MAAI61B,sBAAsB;AAE1B,WAASC,iBAAiB;AACxB,UAAMC,MAAMx0B,OAAOy0B;AACnB,QAAID,QAAQF,qBAAqB;AAC/B;;AAEFA,0BAAsBE;AACtBH,uBAAmB/0B,QAAQ,CAACo1B,SAAQ51B,UAAU;AAC5C,UAAIA,MAAM61B,4BAA4BH,KAAK;AACzCE,QAAAA,QAAAA;;IAEJ,CAAA;EACF;AAEA,WAASE,8BAA8B91B,OAAO41B,SAAQ;AACpD,QAAI,CAACL,mBAAmBptB,MAAM;AAC5BjH,aAAOkxB,iBAAiB,UAAUqD,cAAAA;;AAEpCF,uBAAmBjzB,IAAItC,OAAO41B,OAAAA;EAChC;AAEA,WAASG,gCAAgC/1B,OAAO;AAC9Cu1B,uBAAmBlyB,OAAOrD,KAAAA;AAC1B,QAAI,CAACu1B,mBAAmBptB,MAAM;AAC5BjH,aAAOoxB,oBAAoB,UAAUmD,cAAAA;;EAEzC;AAEA,WAASO,qBAAqBh2B,OAAOG,MAAMkyB,UAAU;AACnD,UAAMH,SAASlyB,MAAMkyB;AACrB,UAAM+D,YAAY/D,UAAUgE,eAAehE,MAAAA;AAC3C,QAAI,CAAC+D,WAAW;AACd;;AAEF,UAAML,UAASO,UAAU,CAAC3Y,OAAOD,WAAW;AAC1C,YAAMyS,KAAIiG,UAAUG;AACpB/D,eAAS7U,OAAOD,MAAAA;AAChB,UAAIyS,KAAIiG,UAAUG,aAAa;AAQ7B/D,iBAAAA;;OAEDnxB,MAAAA;AAGH,UAAM0zB,WAAW,IAAIyB,eAAevB,CAAAA,YAAW;AAC7C,YAAMva,QAAQua,QAAQ,CAAE;AACxB,YAAMtX,QAAQjD,MAAM+b,YAAY9Y;AAChC,YAAMD,SAAShD,MAAM+b,YAAY/Y;AAIjC,UAAIC,UAAU,KAAKD,WAAW,GAAG;AAC/B;;AAEFqY,MAAAA,QAAOpY,OAAOD,MAAAA;IAChB,CAAA;AACAqX,aAASM,QAAQe,SAAAA;AACjBH,kCAA8B91B,OAAO41B,OAAAA;AAErC,WAAOhB;EACT;AAEA,WAAS2B,gBAAgBv2B,OAAOG,MAAMy0B,UAAU;AAC9C,QAAIA,UAAU;AACZA,eAAS4B,WAAU;;AAErB,QAAIr2B,SAAS,UAAU;AACrB41B,sCAAgC/1B,KAAAA;;EAEpC;AAEA,WAASy2B,qBAAqBz2B,OAAOG,MAAMkyB,UAAU;AACnD,UAAMH,SAASlyB,MAAMkyB;AACrB,UAAMwE,QAAQP,UAAU,CAAC3zB,WAAU;AAIjC,UAAIxC,MAAMiP,QAAQ,MAAM;AACtBojB,iBAASiC,gBAAgB9xB,QAAOxC,KAAAA,CAAAA;;OAEjCA,KAAAA;AAEHm0B,IAAAA,aAAYjC,QAAQ/xB,MAAMu2B,KAAAA;AAE1B,WAAOA;EACT;AAMe,MAAMC,cAAN,cAA0B3E,aAAAA;IAOvCC,eAAeC,QAAQ3P,aAAa;AAIlC,YAAMlN,UAAU6c,UAAUA,OAAOvf,cAAcuf,OAAOvf,WAAW,IAAA;AASjE,UAAI0C,WAAWA,QAAQ6c,WAAWA,QAAQ;AAGxCsB,mBAAWtB,QAAQ3P,WAAAA;AACnB,eAAOlN;;AAGT,aAAO;IACT;IAKA8c,eAAe9c,SAAS;AACtB,YAAM6c,SAAS7c,QAAQ6c;AACvB,UAAI,CAACA,OAAOU,WAAAA,GAAc;AACxB,eAAO;;AAGT,YAAMlyB,UAAUwxB,OAAOU,WAAAA,EAAalyB;AACpC;QAAC;QAAU;QAASF,QAAQ,CAAC+D,SAAS;AACpC,cAAM2D,QAAQxH,QAAQ6D,IAAK;AAC3B,YAAIuV,cAAc5R,KAAQ,GAAA;AACxBgqB,iBAAO0E,gBAAgBryB,IAAAA;eAClB;AACL2tB,iBAAO2E,aAAatyB,MAAM2D,KAAAA;;MAE9B,CAAA;AAEA,YAAM2a,QAAQniB,QAAQmiB,SAAS,CAAA;AAC/Blc,aAAOC,KAAKic,KAAAA,EAAOriB,QAAQ,CAACyG,QAAQ;AAClCirB,eAAOrP,MAAM5b,GAAAA,IAAO4b,MAAM5b,GAAI;MAChC,CAAA;AAOAirB,aAAO1U,QAAQ0U,OAAO1U;AAEtB,aAAO0U,OAAOU,WAAY;AAC1B,aAAO;IACT;IAQAR,iBAAiBpyB,OAAOG,MAAMkyB,UAAU;AAEtC,WAAKC,oBAAoBtyB,OAAOG,IAAAA;AAEhC,YAAM22B,UAAU92B,MAAM+2B,aAAa/2B,MAAM+2B,WAAW,CAAA;AACpD,YAAMC,WAAW;QACfC,QAAQtC;QACRuC,QAAQ5B;QACRM,QAAQI;MACV;AACA,YAAM9K,UAAU8L,SAAS72B,IAAAA,KAASs2B;AAClCK,cAAQ32B,IAAAA,IAAQ+qB,QAAQlrB,OAAOG,MAAMkyB,QAAAA;IACvC;IAOAC,oBAAoBtyB,OAAOG,MAAM;AAC/B,YAAM22B,UAAU92B,MAAM+2B,aAAa/2B,MAAM+2B,WAAW,CAAA;AACpD,YAAML,QAAQI,QAAQ32B,IAAK;AAE3B,UAAI,CAACu2B,OAAO;AACV;;AAGF,YAAMM,WAAW;QACfC,QAAQV;QACRW,QAAQX;QACRX,QAAQW;MACV;AACA,YAAMrL,UAAU8L,SAAS72B,IAAAA,KAASk0B;AAClCnJ,cAAQlrB,OAAOG,MAAMu2B,KAAAA;AACrBI,cAAQ32B,IAAAA,IAAQL;IAClB;IAEAyyB,sBAAsB;AACpB,aAAOrxB,OAAOy0B;IAChB;IAQAnD,eAAeN,QAAQ1U,OAAOD,QAAQgF,aAAa;AACjD,aAAOiQ,eAAeN,QAAQ1U,OAAOD,QAAQgF,WAAAA;IAC/C;IAKAkQ,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;IAEnB,OAAO1wB,WAAW,CAAA;IAClB,OAAO2wB,gBAAgB13B;IAEvBmJ;IACAC;IACAzD,SAAS;IACT+B;IACAM;IAEA2vB,gBAAgB1L,kBAAkC;AAChD,YAAM,EAAC9iB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAKojB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAAO;QAAC9iB,GAAAA;QAAGC,GAAAA;MAAC;IACd;IAEAwuB,WAAW;AACT,aAAO7Q,UAAS,KAAK5d,CAAC,KAAK4d,UAAS,KAAK3d,CAAC;IAC5C;IASAojB,SAAStkB,OAAiB2vB,OAAmD;AAC3E,YAAM13B,QAAQ,KAAK6H;AACnB,UAAI,CAAC6vB,SAAS,CAAC13B,OAAO;AAEpB,eAAO;;AAET,YAAM23B,MAA+B,CAAA;AACrC5vB,YAAMxH,QAAQ,CAAC+D,SAAS;AACtBqzB,YAAIrzB,IAAAA,IAAQtE,MAAMsE,IAAK,KAAItE,MAAMsE,IAAAA,EAAMkB,OAAM,IAAKxF,MAAMsE,IAAAA,EAAMgB,MAAM,KAAKhB,IAAe;MAC1F,CAAA;AACA,aAAOqzB;IACT;EACF;AC5BO,WAASC,SAASpvB,OAAO6Q,OAAO;AACrC,UAAMwe,WAAWrvB,MAAMjB,QAAQ8R;AAC/B,UAAMye,qBAAqBC,kBAAkBvvB,KAAAA;AAC7C,UAAMwvB,aAAar3B,KAAKC,IAAIi3B,SAASI,iBAAiBH,oBAAoBA,kBAAAA;AAC1E,UAAMI,eAAeL,SAASM,MAAMC,UAAUC,gBAAgBhf,KAAAA,IAAS,CAAA;AACvE,UAAMif,kBAAkBJ,aAAa12B;AACrC,UAAM+2B,QAAQL,aAAa,CAAE;AAC7B,UAAMza,OAAOya,aAAaI,kBAAkB,CAAE;AAC9C,UAAME,WAAW,CAAA;AAGjB,QAAIF,kBAAkBN,YAAY;AAChCS,iBAAWpf,OAAOmf,UAAUN,cAAcI,kBAAkBN,UAAAA;AAC5D,aAAOQ;;AAGT,UAAMvW,UAAUyW,iBAAiBR,cAAc7e,OAAO2e,UAAAA;AAEtD,QAAIM,kBAAkB,GAAG;AACvB,UAAI72B,IAAGuI;AACP,YAAM2uB,kBAAkBL,kBAAkB,IAAI33B,KAAKi4B,OAAOnb,OAAO8a,UAAUD,kBAAkB,EAAA,IAAM;AACnGpY,WAAK7G,OAAOmf,UAAUvW,SAASpI,cAAc8e,eAAAA,IAAmB,IAAIJ,QAAQI,iBAAiBJ,KAAAA;AAC7F,WAAK92B,KAAI,GAAGuI,OAAOsuB,kBAAkB,GAAG72B,KAAIuI,MAAMvI,MAAK;AACrDye,aAAK7G,OAAOmf,UAAUvW,SAASiW,aAAaz2B,EAAAA,GAAIy2B,aAAaz2B,KAAI,CAAE,CAAA;MACrE;AACAye,WAAK7G,OAAOmf,UAAUvW,SAASxE,MAAM5D,cAAc8e,eAAAA,IAAmBtf,MAAM7X,SAASic,OAAOkb,eAAe;AAC3G,aAAOH;;AAETtY,SAAK7G,OAAOmf,UAAUvW,OAAAA;AACtB,WAAOuW;EACT;AAEA,WAAST,kBAAkBvvB,OAAO;AAChC,UAAMgU,SAAShU,MAAMjB,QAAQiV;AAC7B,UAAMqc,aAAarwB,MAAMswB,UAAS;AAClC,UAAMC,WAAWvwB,MAAMwQ,UAAU6f,cAAcrc,SAAS,IAAI;AAC5D,UAAMwc,WAAWxwB,MAAMywB,aAAaJ;AACpC,WAAOl4B,KAAKoE,MAAMpE,KAAKC,IAAIm4B,UAAUC,QAAAA,CAAAA;EACvC;AAOA,WAASN,iBAAiBR,cAAc7e,OAAO2e,YAAY;AACzD,UAAMkB,mBAAmBC,eAAejB,YAAAA;AACxC,UAAMjW,UAAU5I,MAAM7X,SAASw2B;AAI/B,QAAI,CAACkB,kBAAkB;AACrB,aAAOv4B,KAAKoC,IAAIkf,SAAS,CAAA;;AAG3B,UAAMmX,UAAUC,WAAWH,gBAAAA;AAC3B,aAASz3B,KAAI,GAAGuI,OAAOovB,QAAQ53B,SAAS,GAAGC,KAAIuI,MAAMvI,MAAK;AACxD,YAAMiC,SAAS01B,QAAQ33B,EAAE;AACzB,UAAIiC,SAASue,SAAS;AACpB,eAAOve;;IAEX;AACA,WAAO/C,KAAKoC,IAAIkf,SAAS,CAAA;EAC3B;AAKA,WAASoW,gBAAgBhf,OAAO;AAC9B,UAAMiR,SAAS,CAAA;AACf,QAAI7oB,IAAGuI;AACP,SAAKvI,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAMvI,MAAK;AAC9C,UAAI4X,MAAM5X,EAAE,EAAC02B,OAAO;AAClB7N,eAAO7nB,KAAKhB,EAAAA;;IAEhB;AACA,WAAO6oB;EACT;AAQA,WAASmO,WAAWpf,OAAOmf,UAAUN,cAAcjW,SAAS;AAC1D,QAAIpP,QAAQ;AACZ,QAAIsH,OAAO+d,aAAa,CAAE;AAC1B,QAAIz2B;AAEJwgB,cAAUthB,KAAK24B,KAAKrX,OAAAA;AACpB,SAAKxgB,KAAI,GAAGA,KAAI4X,MAAM7X,QAAQC,MAAK;AACjC,UAAIA,OAAM0Y,MAAM;AACdqe,iBAAS/1B,KAAK4W,MAAM5X,EAAE,CAAA;AACtBoR;AACAsH,eAAO+d,aAAarlB,QAAQoP,OAAQ;;IAExC;EACF;AASA,WAAS/B,KAAK7G,OAAOmf,UAAUvW,SAASsX,YAAYC,UAAU;AAC5D,UAAM34B,SAAQ6P,eAAe6oB,YAAY,CAAA;AACzC,UAAM3wB,MAAMjI,KAAKC,IAAI8P,eAAe8oB,UAAUngB,MAAM7X,MAAM,GAAG6X,MAAM7X,MAAM;AACzE,QAAIqR,QAAQ;AACZ,QAAIrR,QAAQC,IAAG0Y;AAEf8H,cAAUthB,KAAK24B,KAAKrX,OAAAA;AACpB,QAAIuX,UAAU;AACZh4B,eAASg4B,WAAWD;AACpBtX,gBAAUzgB,SAASb,KAAKoE,MAAMvD,SAASygB,OAAAA;;AAGzC9H,WAAOtZ;AAEP,WAAOsZ,OAAO,GAAG;AACftH;AACAsH,aAAOxZ,KAAKi4B,MAAM/3B,SAAQgS,QAAQoP,OAAAA;IACpC;AAEA,SAAKxgB,KAAId,KAAKoC,IAAIlC,QAAO,CAAIY,GAAAA,KAAImH,KAAKnH,MAAK;AACzC,UAAIA,OAAM0Y,MAAM;AACdqe,iBAAS/1B,KAAK4W,MAAM5X,EAAE,CAAA;AACtBoR;AACAsH,eAAOxZ,KAAKi4B,MAAM/3B,SAAQgS,QAAQoP,OAAAA;;IAEtC;EACF;AAMA,WAASkX,eAAe1hB,KAAK;AAC3B,UAAMgiB,MAAMhiB,IAAIjW;AAChB,QAAIC,IAAGioB;AAEP,QAAI+P,MAAM,GAAG;AACX,aAAO;;AAGT,SAAK/P,OAAOjS,IAAI,CAAE,GAAEhW,KAAI,GAAGA,KAAIg4B,KAAK,EAAEh4B,IAAG;AACvC,UAAIgW,IAAIhW,EAAE,IAAGgW,IAAIhW,KAAI,CAAE,MAAKioB,MAAM;AAChC,eAAO;;IAEX;AACA,WAAOA;EACT;ACjKA,MAAMgQ,eAAe,CAACC,UAAUA,UAAU,SAAS,UAAUA,UAAU,UAAU,SAASA;AAC1F,MAAMC,iBAAiB,CAACpxB,OAAO+S,MAAMiB,WAAWjB,SAAS,SAASA,SAAS,SAAS/S,MAAM+S,IAAAA,IAAQiB,SAAShU,MAAM+S,IAAAA,IAAQiB;AACzH,MAAMqd,gBAAgB,CAACC,aAAa7B,kBAAkBt3B,KAAKC,IAAIq3B,iBAAiB6B,aAAaA,WAAAA;AAY7F,WAASC,OAAOtiB,KAAKuiB,UAAU;AAC7B,UAAM1P,SAAS,CAAA;AACf,UAAM2P,YAAYxiB,IAAIjW,SAASw4B;AAC/B,UAAMP,MAAMhiB,IAAIjW;AAChB,QAAIC,KAAI;AAER,WAAOA,KAAIg4B,KAAKh4B,MAAKw4B,WAAW;AAC9B3P,aAAO7nB,KAAKgV,IAAI9W,KAAKoE,MAAMtD,EAAG,CAAA,CAAA;IAChC;AACA,WAAO6oB;EACT;AAOA,WAAS4P,oBAAoB1xB,OAAOyB,QAAOkwB,iBAAiB;AAC1D,UAAM34B,SAASgH,MAAM6Q,MAAM7X;AAC3B,UAAM44B,cAAaz5B,KAAKC,IAAIqJ,QAAOzI,SAAS,CAAA;AAC5C,UAAMX,SAAQ2H,MAAMiW;AACpB,UAAM7V,MAAMJ,MAAMkW;AAClB,UAAM2b,UAAU;AAChB,QAAIC,YAAY9xB,MAAM8Q,gBAAgB8gB,WAAAA;AACtC,QAAI5d;AAEJ,QAAI2d,iBAAiB;AACnB,UAAI34B,WAAW,GAAG;AAChBgb,iBAAS7b,KAAKoC,IAAIu3B,YAAYz5B,QAAO+H,MAAM0xB,SAAAA;iBAClCrwB,WAAU,GAAG;AACtBuS,kBAAUhU,MAAM8Q,gBAAgB,CAAA,IAAKghB,aAAa;aAC7C;AACL9d,kBAAU8d,YAAY9xB,MAAM8Q,gBAAgB8gB,cAAa,CAAA,KAAM;;AAEjEE,mBAAaF,cAAanwB,SAAQuS,SAAS,CAACA;AAG5C,UAAI8d,YAAYz5B,SAAQw5B,WAAWC,YAAY1xB,MAAMyxB,SAAS;AAC5D;;;AAGJ,WAAOC;EACT;AAMA,WAASC,eAAeC,QAAQh5B,QAAQ;AACtCowB,SAAK4I,QAAQ,CAACjlB,WAAU;AACtB,YAAMklB,KAAKllB,OAAMklB;AACjB,YAAMC,QAAQD,GAAGj5B,SAAS;AAC1B,UAAIC;AACJ,UAAIi5B,QAAQl5B,QAAQ;AAClB,aAAKC,KAAI,GAAGA,KAAIi5B,OAAO,EAAEj5B,IAAG;AAC1B,iBAAO8T,OAAM1K,KAAK4vB,GAAGh5B,EAAAA,CAAE;QACzB;AACAg5B,WAAG7iB,OAAO,GAAG8iB,KAAAA;;IAEjB,CAAA;EACF;AAKA,WAASC,kBAAkBpzB,SAAS;AAClC,WAAOA,QAAQqzB,YAAYrzB,QAAQsxB,aAAa;EAClD;AAKA,WAASgC,eAAetzB,SAASuzB,UAAU;AACzC,QAAI,CAACvzB,QAAQggB,SAAS;AACpB,aAAO;;AAGT,UAAMwT,OAAOC,OAAOzzB,QAAQwzB,MAAMD,QAAAA;AAClC,UAAM5J,UAAUO,UAAUlqB,QAAQ2pB,OAAO;AACzC,UAAM+J,QAAQ/zB,SAAQK,QAAQsb,IAAI,IAAItb,QAAQsb,KAAKrhB,SAAS;AAE5D,WAAO,QAASu5B,KAAKG,aAAchK,QAAQ5T;EAC7C;AAEA,WAAS6d,mBAAmBxtB,QAAQnF,OAAO;AACzC,WAAOoF,cAAcD,QAAQ;MAC3BnF;MACAtI,MAAM;IACR,CAAA;EACF;AAEA,WAASk7B,kBAAkBztB,QAAQ1D,QAAOnI,MAAM;AAC9C,WAAO8L,cAAcD,QAAQ;MAC3B7L;MACAmI,OAAAA;MACA/J,MAAM;IACR,CAAA;EACF;AAEA,WAASm7B,WAAW1B,OAAO3O,UAAUriB,SAAS;AAE5C,QAAIgvB,MAAM2D,mBAAmB3B,KAAAA;AAC7B,QAAI,WAAY3O,aAAa,WAAa,CAACriB,WAAWqiB,aAAa,SAAU;AAC3E2M,YAAM+B,aAAa/B,GAAAA;;AAErB,WAAOA;EACT;AAEA,WAAS4D,UAAU/yB,OAAOgU,QAAQwO,UAAU2O,OAAO;AACjD,UAAM,EAACzwB,KAAKG,MAAMD,QAAQD,OAAOpJ,MAAK,IAAIyI;AAC1C,UAAM,EAACuM,WAAWxH,QAAAA,QAAAA,IAAUxN;AAC5B,QAAIqgB,WAAW;AACf,QAAIoE,UAAUgX,QAAQC;AACtB,UAAMne,SAASlU,SAASF;AACxB,UAAMqU,QAAQpU,QAAQE;AAEtB,QAAIb,MAAM0S,aAAY,GAAI;AACxBsgB,eAASE,eAAe/B,OAAOtwB,MAAMF,KAAAA;AAErC,UAAI3C,UAASwkB,QAAW,GAAA;AACtB,cAAM2Q,iBAAiBj1B,OAAOC,KAAKqkB,QAAAA,EAAU,CAAE;AAC/C,cAAM/iB,QAAQ+iB,SAAS2Q,cAAe;AACtCF,iBAASluB,QAAOouB,cAAAA,EAAgBviB,iBAAiBnR,KAAAA,IAASqV,SAASd;iBAC1DwO,aAAa,UAAU;AAChCyQ,kBAAU1mB,UAAU3L,SAAS2L,UAAU7L,OAAO,IAAIoU,SAASd;aACtD;AACLif,iBAAS7B,eAAepxB,OAAOwiB,UAAUxO,MAAAA;;AAE3CgI,iBAAWrb,QAAQE;WACd;AACL,UAAI7C,UAASwkB,QAAW,GAAA;AACtB,cAAM2Q,iBAAiBj1B,OAAOC,KAAKqkB,QAAAA,EAAU,CAAE;AAC/C,cAAM/iB,QAAQ+iB,SAAS2Q,cAAe;AACtCH,iBAASjuB,QAAOouB,cAAAA,EAAgBviB,iBAAiBnR,KAAAA,IAASsV,QAAQf;iBACzDwO,aAAa,UAAU;AAChCwQ,kBAAUzmB,UAAU1L,OAAO0L,UAAU5L,SAAS,IAAIoU,QAAQf;aACrD;AACLgf,iBAAS5B,eAAepxB,OAAOwiB,UAAUxO,MAAAA;;AAE3Cif,eAASC,eAAe/B,OAAOvwB,QAAQF,GAAAA;AACvCkX,iBAAW4K,aAAa,SAAS,CAACtJ,UAAUA;;AAE9C,WAAO;MAAC8Z;MAAQC;MAAQjX;MAAUpE;IAAQ;EAC5C;AAEe,MAAMwb,QAAN,MAAMA,eAActE,SAAAA;IAGjC/3B,YAAY6E,KAAK;AACf,YAAK;AAGL,WAAKuH,KAAKvH,IAAIuH;AAEd,WAAKzL,OAAOkE,IAAIlE;AAEhB,WAAKqH,UAAU1H;AAEf,WAAKmP,MAAM5K,IAAI4K;AAEf,WAAKjP,QAAQqE,IAAIrE;AAIjB,WAAKmJ,MAAMrJ;AAEX,WAAKuJ,SAASvJ;AAEd,WAAKwJ,OAAOxJ;AAEZ,WAAKsJ,QAAQtJ;AAEb,WAAK0d,QAAQ1d;AAEb,WAAKyd,SAASzd;AACd,WAAKg8B,WAAW;QACdxyB,MAAM;QACNF,OAAO;QACPD,KAAK;QACLE,QAAQ;MACV;AAEA,WAAKob,WAAW3kB;AAEhB,WAAK4kB,YAAY5kB;AAEjB,WAAKi8B,aAAaj8B;AAElB,WAAKk8B,gBAAgBl8B;AAErB,WAAKm8B,cAAcn8B;AAEnB,WAAKo8B,eAAep8B;AAIpB,WAAKqL,OAAOrL;AAEZ,WAAKq8B,gBAAgBr8B;AACrB,WAAKe,MAAMf;AACX,WAAKkD,MAAMlD;AACX,WAAKs8B,SAASt8B;AAEd,WAAKwZ,QAAQ,CAAA;AAEb,WAAK+iB,iBAAiB;AAEtB,WAAKC,cAAc;AAEnB,WAAKC,cAAc;AACnB,WAAKtjB,UAAU;AACf,WAAKigB,aAAa;AAClB,WAAKsD,oBAAoB,CAAA;AAEzB,WAAK9d,cAAc5e;AAEnB,WAAK6e,YAAY7e;AACjB,WAAKsqB,iBAAiB;AACtB,WAAKqS,WAAW38B;AAChB,WAAK48B,WAAW58B;AAChB,WAAK68B,gBAAgB78B;AACrB,WAAK88B,gBAAgB98B;AACrB,WAAK+8B,eAAe;AACpB,WAAKC,eAAe;AACpB,WAAKrkB,SAAS,CAAA;AACd,WAAKskB,oBAAoB;AACzB,WAAKltB,WAAW/P;IAClB;IAMA0pB,KAAKhiB,SAAS;AACZ,WAAKA,UAAUA,QAAQw1B,WAAW,KAAKrqB,WAAU,CAAA;AAEjD,WAAKxH,OAAO3D,QAAQ2D;AAGpB,WAAKuxB,WAAW,KAAK7pB,MAAMrL,QAAQ3G,GAAG;AACtC,WAAK47B,WAAW,KAAK5pB,MAAMrL,QAAQxE,GAAG;AACtC,WAAK45B,gBAAgB,KAAK/pB,MAAMrL,QAAQy1B,YAAY;AACpD,WAAKN,gBAAgB,KAAK9pB,MAAMrL,QAAQ01B,YAAY;IACtD;IAQArqB,MAAM3E,KAAKhE,QAAO;AAChB,aAAOgE;IACT;IAOArC,gBAAgB;AACd,UAAI,EAAC6wB,UAAUD,UAAUG,eAAeD,cAAAA,IAAiB;AACzDD,iBAAWS,gBAAgBT,UAAU1wB,OAAOE,iBAAiB;AAC7DuwB,iBAAWU,gBAAgBV,UAAUzwB,OAAOC,iBAAiB;AAC7D2wB,sBAAgBO,gBAAgBP,eAAe5wB,OAAOE,iBAAiB;AACvEywB,sBAAgBQ,gBAAgBR,eAAe3wB,OAAOC,iBAAiB;AACvE,aAAO;QACLpL,KAAKs8B,gBAAgBT,UAAUE,aAAAA;QAC/B55B,KAAKm6B,gBAAgBV,UAAUE,aAAAA;QAC/B7wB,YAAYnB,eAAS+xB,QAAAA;QACrB3wB,YAAYpB,eAAS8xB,QAAAA;MACvB;IACF;IAQAvoB,UAAUxF,UAAU;AAClB,UAAI,EAAC7N,KAAKmC,KAAK8I,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AAC3D,UAAIkI;AAEJ,UAAIjI,cAAcC,YAAY;AAC5B,eAAO;UAAClL;UAAKmC;QAAG;;AAGlB,YAAMo6B,QAAQ,KAAK1wB,wBAAuB;AAC1C,eAAShL,KAAI,GAAGuI,OAAOmzB,MAAM37B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAClDqS,gBAAQqpB,MAAM17B,EAAE,EAACkL,WAAWsH,UAAU,MAAMxF,QAAAA;AAC5C,YAAI,CAAC5C,YAAY;AACfjL,gBAAMD,KAAKC,IAAIA,KAAKkT,MAAMlT,GAAG;;AAE/B,YAAI,CAACkL,YAAY;AACf/I,gBAAMpC,KAAKoC,IAAIA,KAAK+Q,MAAM/Q,GAAG;;MAEjC;AAGAnC,YAAMkL,cAAclL,MAAMmC,MAAMA,MAAMnC;AACtCmC,YAAM8I,cAAcjL,MAAMmC,MAAMnC,MAAMmC;AAEtC,aAAO;QACLnC,KAAKs8B,gBAAgBt8B,KAAKs8B,gBAAgBn6B,KAAKnC,GAAAA,CAAAA;QAC/CmC,KAAKm6B,gBAAgBn6B,KAAKm6B,gBAAgBt8B,KAAKmC,GAAAA,CAAAA;MACjD;IACF;IAOA0sB,aAAa;AACX,aAAO;QACLpmB,MAAM,KAAK2yB,eAAe;QAC1B9yB,KAAK,KAAK4yB,cAAc;QACxB3yB,OAAO,KAAK8yB,gBAAgB;QAC5B7yB,QAAQ,KAAK2yB,iBAAiB;MAChC;IACF;IAOAqB,WAAW;AACT,aAAO,KAAK/jB;IACd;IAKA/F,YAAY;AACV,YAAMzI,OAAO,KAAK9K,MAAM8K;AACxB,aAAO,KAAKtD,QAAQ8L,WAAW,KAAK6H,aAAY,IAAKrQ,KAAKwyB,UAAUxyB,KAAKyyB,YAAYzyB,KAAKwI,UAAU,CAAA;IACtG;IAKAkqB,cAAcxoB,YAAY,KAAKhV,MAAMgV,WAAW;AAC9C,YAAMxT,QAAQ,KAAK86B,gBAAgB,KAAKA,cAAc,KAAKmB,mBAAmBzoB,SAAS;AACvF,aAAOxT;IACT;IAGAswB,eAAe;AACb,WAAKrZ,SAAS,CAAA;AACd,WAAKskB,oBAAoB;IAC3B;IAMAW,eAAe;AACbz8B,eAAK,KAAKuG,QAAQk2B,cAAc;QAAC;MAAK,CAAA;IACxC;IAUAh4B,OAAO+e,UAAUC,WAAWiZ,SAAS;AACnC,YAAM,EAAC/gB,aAAaghB,OAAOtkB,OAAOwe,SAAAA,IAAY,KAAKtwB;AACnD,YAAMq2B,aAAa/F,SAAS+F;AAG5B,WAAKH,aAAY;AAGjB,WAAKjZ,WAAWA;AAChB,WAAKC,YAAYA;AACjB,WAAKoX,WAAW6B,UAAUh3B,OAAOyB,OAAO;QACtCkB,MAAM;QACNF,OAAO;QACPD,KAAK;QACLE,QAAQ;SACPs0B,OAAAA;AAEH,WAAKrkB,QAAQ;AACb,WAAKijB,cAAc;AACnB,WAAKF,iBAAiB;AACtB,WAAKC,cAAc;AAGnB,WAAKwB,oBAAmB;AACxB,WAAKC,cAAa;AAClB,WAAKC,mBAAkB;AAEvB,WAAK9E,aAAa,KAAK/d,aAAY,IAC/B,KAAKqC,QAAQmgB,QAAQr0B,OAAOq0B,QAAQv0B,QACpC,KAAKmU,SAASogB,QAAQx0B,MAAMw0B,QAAQt0B;AAGxC,UAAI,CAAC,KAAK0zB,mBAAmB;AAC3B,aAAKkB,iBAAgB;AACrB,aAAKC,oBAAmB;AACxB,aAAKC,gBAAe;AACpB,aAAK/B,SAASgC,UAAU,MAAMR,OAAOhhB,WAAAA;AACrC,aAAKmgB,oBAAoB;;AAG3B,WAAKsB,iBAAgB;AAErB,WAAK/kB,QAAQ,KAAKglB,WAAU,KAAM,CAAA;AAGlC,WAAKC,gBAAe;AAIpB,YAAMC,kBAAkBX,aAAa,KAAKvkB,MAAM7X;AAChD,WAAKg9B,sBAAsBD,kBAAkBxE,OAAO,KAAK1gB,OAAOukB,UAAAA,IAAc,KAAKvkB,KAAK;AAMxF,WAAK9S,UAAS;AAGd,WAAKk4B,6BAA4B;AACjC,WAAKC,uBAAsB;AAC3B,WAAKC,4BAA2B;AAGhC,UAAI9G,SAAStQ,YAAYsQ,SAASD,YAAYC,SAAS+G,WAAW,SAAS;AACzE,aAAKvlB,QAAQue,SAAS,MAAM,KAAKve,KAAK;AACtC,aAAKijB,cAAc;AACnB,aAAKuC,cAAa;;AAGpB,UAAIN,iBAAiB;AAEnB,aAAKC,sBAAsB,KAAKnlB,KAAK;;AAGvC,WAAKylB,UAAS;AACd,WAAKC,IAAG;AACR,WAAKC,SAAQ;AAIb,WAAKC,YAAW;IAClB;IAKA14B,YAAY;AACV,UAAI24B,gBAAgB,KAAK33B,QAAQoB;AACjC,UAAIoW,YAAYE;AAEhB,UAAI,KAAK/D,aAAY,GAAI;AACvB6D,qBAAa,KAAK1V;AAClB4V,mBAAW,KAAK9V;aACX;AACL4V,qBAAa,KAAK7V;AAClB+V,mBAAW,KAAK7V;AAEhB81B,wBAAgB,CAACA;;AAEnB,WAAKzgB,cAAcM;AACnB,WAAKL,YAAYO;AACjB,WAAKkL,iBAAiB+U;AACtB,WAAKlmB,UAAUiG,WAAWF;AAC1B,WAAKogB,iBAAiB,KAAK53B,QAAQ63B;IACrC;IAEAH,cAAc;AACZj+B,eAAK,KAAKuG,QAAQ03B,aAAa;QAAC;MAAK,CAAA;IACvC;IAIApB,sBAAsB;AACpB78B,eAAK,KAAKuG,QAAQs2B,qBAAqB;QAAC;MAAK,CAAA;IAC/C;IACAC,gBAAgB;AAEd,UAAI,KAAK5iB,aAAY,GAAI;AAEvB,aAAKqC,QAAQ,KAAKiH;AAClB,aAAKnb,OAAO;AACZ,aAAKF,QAAQ,KAAKoU;aACb;AACL,aAAKD,SAAS,KAAKmH;AAGnB,aAAKvb,MAAM;AACX,aAAKE,SAAS,KAAKkU;;AAIrB,WAAK0e,cAAc;AACnB,WAAKF,aAAa;AAClB,WAAKG,eAAe;AACpB,WAAKF,gBAAgB;IACvB;IACAgC,qBAAqB;AACnB/8B,eAAK,KAAKuG,QAAQw2B,oBAAoB;QAAC;MAAK,CAAA;IAC9C;IAEAsB,WAAW7gB,OAAM;AACf,WAAKze,MAAMu/B,cAAc9gB,OAAM,KAAK9L,WAAU,CAAA;AAC9C1R,eAAK,KAAKuG,QAAQiX,KAAAA,GAAO;QAAC;MAAK,CAAA;IACjC;IAGAwf,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;AAC5Bv+B,eAAK,KAAKuG,QAAQg4B,6BAA6B;QAAC;MAAK,CAAA;IACvD;IAKAC,mBAAmBnmB,OAAO;AACxB,YAAMwe,WAAW,KAAKtwB,QAAQ8R;AAC9B,UAAI5X,IAAGuI,MAAMlI;AACb,WAAKL,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAMvI,MAAK;AAC9CK,eAAOuX,MAAM5X,EAAE;AACfK,aAAK2S,QAAQzT,SAAK62B,SAAS4H,UAAU;UAAC39B,KAAKmG;UAAOxG;UAAG4X;QAAM,GAAE,IAAI;MACnE;IACF;IACAqmB,6BAA6B;AAC3B1+B,eAAK,KAAKuG,QAAQm4B,4BAA4B;QAAC;MAAK,CAAA;IACtD;IAIAjB,+BAA+B;AAC7Bz9B,eAAK,KAAKuG,QAAQk3B,8BAA8B;QAAC;MAAK,CAAA;IACxD;IACAC,yBAAyB;AACvB,YAAMn3B,UAAU,KAAKA;AACrB,YAAMswB,WAAWtwB,QAAQ8R;AACzB,YAAMsmB,WAAW9F,cAAc,KAAKxgB,MAAM7X,QAAQ+F,QAAQ8R,MAAM4e,aAAa;AAC7E,YAAM2H,cAAc/H,SAAS+H,eAAe;AAC5C,YAAMC,cAAchI,SAASgI;AAC7B,UAAI3D,gBAAgB0D;AACpB,UAAIE,WAAWrb,WAAWsb;AAE1B,UAAI,CAAC,KAAKC,WAAU,KAAM,CAACnI,SAAStQ,WAAWqY,eAAeC,eAAeF,YAAY,KAAK,CAAC,KAAKzkB,aAAY,GAAI;AAClH,aAAKghB,gBAAgB0D;AACrB;;AAGF,YAAMK,aAAa,KAAKC,eAAc;AACtC,YAAMC,gBAAgBF,WAAWG,OAAO7iB;AACxC,YAAM8iB,iBAAiBJ,WAAWK,QAAQhjB;AAI1C,YAAMkH,WAAW+b,YAAY,KAAKxgC,MAAMwd,QAAQ4iB,eAAe,GAAG,KAAK3b,QAAQ;AAC/Esb,kBAAYv4B,QAAQiV,SAAS,KAAKgI,WAAWmb,WAAWnb,YAAYmb,WAAW;AAG/E,UAAIQ,gBAAgB,IAAIL,WAAW;AACjCA,oBAAYtb,YAAYmb,YAAYp4B,QAAQiV,SAAS,MAAM;AAC3DiI,oBAAY,KAAKA,YAAYkW,kBAAkBpzB,QAAQkV,IAAI,IAC3Dob,SAAS3G,UAAU2J,eAAetzB,QAAQi5B,OAAO,KAAKzgC,MAAMwH,QAAQwzB,IAAI;AACxEgF,2BAAmBp/B,KAAKgrB,KAAKwU,gBAAgBA,gBAAgBE,iBAAiBA,cAAAA;AAC9EnE,wBAAgBuE,UAAU9/B,KAAKC,IAC7BD,KAAK+/B,KAAKH,aAAaN,WAAWK,QAAQhjB,SAAS,KAAKwiB,WAAW,IAAI,CAAA,CAAA,GACvEn/B,KAAK+/B,KAAKH,YAAY9b,YAAYsb,kBAAkB,IAAI,CAAA,CAAA,IAAMp/B,KAAK+/B,KAAKH,YAAYF,iBAAiBN,kBAAkB,IAAI,CAAA,CAAA,CAAA,CAAA;AAE7H7D,wBAAgBv7B,KAAKoC,IAAI68B,aAAaj/B,KAAKC,IAAIi/B,aAAa3D,aAAAA,CAAAA;;AAG9D,WAAKA,gBAAgBA;IACvB;IACAyC,8BAA8B;AAC5B39B,eAAK,KAAKuG,QAAQo3B,6BAA6B;QAAC;MAAK,CAAA;IACvD;IACAE,gBAAgB;IAAA;IAIhBC,YAAY;AACV99B,eAAK,KAAKuG,QAAQu3B,WAAW;QAAC;MAAK,CAAA;IACrC;IACAC,MAAM;AAEJ,YAAMlX,UAAU;QACdtK,OAAO;QACPD,QAAQ;MACV;AAEA,YAAM,EAACvd,OAAOwH,SAAS,EAAC8R,OAAOwe,UAAU2I,OAAOG,WAAWlkB,MAAMmkB,SAAAA,EAAS,IAAI;AAC9E,YAAMrZ,UAAU,KAAKyY,WAAU;AAC/B,YAAM9kB,eAAe,KAAKA,aAAY;AAEtC,UAAIqM,SAAS;AACX,cAAMsZ,cAAchG,eAAe8F,WAAW5gC,MAAMwH,QAAQwzB,IAAI;AAChE,YAAI7f,cAAc;AAChB2M,kBAAQtK,QAAQ,KAAKiH;AACrBqD,kBAAQvK,SAASqd,kBAAkBiG,QAAYC,IAAAA;eAC1C;AACLhZ,kBAAQvK,SAAS,KAAKmH;AACtBoD,kBAAQtK,QAAQod,kBAAkBiG,QAAYC,IAAAA;;AAIhD,YAAIhJ,SAAStQ,WAAW,KAAKlO,MAAM7X,QAAQ;AACzC,gBAAM,EAAC+2B,OAAO9a,MAAM2iB,QAAQE,QAAAA,IAAW,KAAKJ,eAAc;AAC1D,gBAAMY,cAAcjJ,SAAS3G,UAAU;AACvC,gBAAM6P,eAAeld,UAAU,KAAKqY,aAAa;AACjD,gBAAMnb,MAAMpgB,KAAKogB,IAAIggB,YAAAA;AACrB,gBAAM9f,MAAMtgB,KAAKsgB,IAAI8f,YAAAA;AAErB,cAAI7lB,cAAc;AAEhB,kBAAM8lB,cAAcnJ,SAASoJ,SAAS,IAAIhgB,MAAMmf,OAAO7iB,QAAQwD,MAAMuf,QAAQhjB;AAC7EuK,oBAAQvK,SAAS3c,KAAKC,IAAI,KAAK6jB,WAAWoD,QAAQvK,SAAS0jB,cAAcF,WAAAA;iBACpE;AAGL,kBAAMI,aAAarJ,SAASoJ,SAAS,IAAIlgB,MAAMqf,OAAO7iB,QAAQ0D,MAAMqf,QAAQhjB;AAE5EuK,oBAAQtK,QAAQ5c,KAAKC,IAAI,KAAK4jB,UAAUqD,QAAQtK,QAAQ2jB,aAAaJ,WAAAA;;AAEvE,eAAKK,kBAAkB5I,OAAO9a,MAAMwD,KAAKF,GAAAA;;;AAI7C,WAAKqgB,eAAc;AAEnB,UAAIlmB,cAAc;AAChB,aAAKqC,QAAQ,KAAKvE,UAAUjZ,MAAMwd,QAAQ,KAAKse,SAASxyB,OAAO,KAAKwyB,SAAS1yB;AAC7E,aAAKmU,SAASuK,QAAQvK;aACjB;AACL,aAAKC,QAAQsK,QAAQtK;AACrB,aAAKD,SAAS,KAAKtE,UAAUjZ,MAAMud,SAAS,KAAKue,SAAS3yB,MAAM,KAAK2yB,SAASzyB;;IAElF;IAEA+3B,kBAAkB5I,OAAO9a,MAAMwD,KAAKF,KAAK;AACvC,YAAM,EAAC1H,OAAO,EAACsgB,OAAOzI,QAAO,GAAGlG,SAAQ,IAAI,KAAKzjB;AACjD,YAAM85B,YAAY,KAAKnF,kBAAkB;AACzC,YAAMoF,mBAAmBtW,aAAa,SAAS,KAAK9f,SAAS;AAE7D,UAAI,KAAKgQ,aAAY,GAAI;AACvB,cAAMqmB,aAAa,KAAKjoB,gBAAgB,CAAK,IAAA,KAAKjQ;AAClD,cAAMm4B,cAAc,KAAKr4B,QAAQ,KAAKmQ,gBAAgB,KAAKD,MAAM7X,SAAS,CAAA;AAC1E,YAAIw6B,cAAc;AAClB,YAAIC,eAAe;AAInB,YAAIoF,WAAW;AACb,cAAIC,kBAAkB;AACpBtF,0BAAcjb,MAAMwX,MAAMhb;AAC1B0e,2BAAehb,MAAMxD,KAAKH;iBACrB;AACL0e,0BAAc/a,MAAMsX,MAAMjb;AAC1B2e,2BAAelb,MAAMtD,KAAKF;;mBAEnBoc,UAAU,SAAS;AAC5BsC,yBAAexe,KAAKF;mBACXoc,UAAU,OAAO;AAC1BqC,wBAAczD,MAAMhb;mBACXoc,UAAU,SAAS;AAC5BqC,wBAAczD,MAAMhb,QAAQ;AAC5B0e,yBAAexe,KAAKF,QAAQ;;AAI9B,aAAKye,cAAcr7B,KAAKoC,KAAKi5B,cAAcuF,aAAarQ,WAAW,KAAK3T,SAAS,KAAKA,QAAQgkB,aAAa,CAAA;AAC3G,aAAKtF,eAAet7B,KAAKoC,KAAKk5B,eAAeuF,cAActQ,WAAW,KAAK3T,SAAS,KAAKA,QAAQikB,cAAc,CAAA;aAC1G;AACL,YAAI1F,aAAare,KAAKH,SAAS;AAC/B,YAAIye,gBAAgBxD,MAAMjb,SAAS;AAEnC,YAAIqc,UAAU,SAAS;AACrBmC,uBAAa;AACbC,0BAAgBxD,MAAMjb;mBACbqc,UAAU,OAAO;AAC1BmC,uBAAare,KAAKH;AAClBye,0BAAgB;;AAGlB,aAAKD,aAAaA,aAAa5K;AAC/B,aAAK6K,gBAAgBA,gBAAgB7K;;IAEzC;IAMAkQ,iBAAiB;AACf,UAAI,KAAKvF,UAAU;AACjB,aAAKA,SAASxyB,OAAO1I,KAAKoC,IAAI,KAAKi5B,aAAa,KAAKH,SAASxyB,IAAI;AAClE,aAAKwyB,SAAS3yB,MAAMvI,KAAKoC,IAAI,KAAK+4B,YAAY,KAAKD,SAAS3yB,GAAG;AAC/D,aAAK2yB,SAAS1yB,QAAQxI,KAAKoC,IAAI,KAAKk5B,cAAc,KAAKJ,SAAS1yB,KAAK;AACrE,aAAK0yB,SAASzyB,SAASzI,KAAKoC,IAAI,KAAKg5B,eAAe,KAAKF,SAASzyB,MAAM;;IAE5E;IAEA41B,WAAW;AACTh+B,eAAK,KAAKuG,QAAQy3B,UAAU;QAAC;MAAK,CAAA;IACpC;IAMA9jB,eAAe;AACb,YAAM,EAAChQ,MAAM8f,SAAAA,IAAY,KAAKzjB;AAC9B,aAAOyjB,aAAa,SAASA,aAAa,YAAY9f,SAAS;IACjE;IAIAu2B,aAAa;AACX,aAAO,KAAKl6B,QAAQonB;IACtB;IAMA6P,sBAAsBnlB,OAAO;AAC3B,WAAKkmB,4BAA2B;AAEhC,WAAKC,mBAAmBnmB,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,WAAKi+B,2BAA0B;IACjC;IAMAQ,iBAAiB;AACf,UAAID,aAAa,KAAK3D;AAEtB,UAAI,CAAC2D,YAAY;AACf,cAAMrC,aAAa,KAAKr2B,QAAQ8R,MAAMukB;AACtC,YAAIvkB,QAAQ,KAAKA;AACjB,YAAIukB,aAAavkB,MAAM7X,QAAQ;AAC7B6X,kBAAQ0gB,OAAO1gB,OAAOukB,UAAAA;;AAGxB,aAAKtB,cAAc2D,aAAa,KAAKyB,mBAAmBroB,OAAOA,MAAM7X,QAAQ,KAAK+F,QAAQ8R,MAAM4e,aAAa;;AAG/G,aAAOgI;IACT;IAQAyB,mBAAmBroB,OAAO7X,QAAQy2B,eAAe;AAC/C,YAAM,EAACjpB,KAAKutB,mBAAmB/B,OAAM,IAAI;AACzC,YAAMmH,SAAS,CAAA;AACf,YAAMC,UAAU,CAAA;AAChB,YAAM3H,YAAYt5B,KAAKoE,MAAMvD,SAASq4B,cAAcr4B,QAAQy2B,aAAAA,CAAAA;AAC5D,UAAI4J,kBAAkB;AACtB,UAAIC,mBAAmB;AACvB,UAAIrgC,IAAG0pB,IAAG4W,MAAMttB,OAAOutB,UAAUC,aAAY1sB,QAAO2lB,YAAY3d,OAAOD,QAAQ4kB;AAE/E,WAAKzgC,KAAI,GAAGA,KAAID,QAAQC,MAAKw4B,WAAW;AACtCxlB,gBAAQ4E,MAAM5X,EAAE,EAACgT;AACjButB,mBAAW,KAAKG,wBAAwB1gC,EAAAA;AACxCuN,YAAI+rB,OAAOkH,cAAaD,SAASI;AACjC7sB,QAAAA,SAAQilB,OAAOyH,WAAAA,IAAczH,OAAOyH,WAAAA,KAAe;UAACp3B,MAAM,CAAA;UAAI4vB,IAAI,CAAA;QAAE;AACpES,qBAAa8G,SAAS9G;AACtB3d,gBAAQD,SAAS;AAEjB,YAAI,CAACzD,cAAcpF,KAAU,KAAA,CAACvN,SAAQuN,KAAQ,GAAA;AAC5C8I,kBAAQ8kB,aAAarzB,KAAKuG,OAAM1K,MAAM0K,OAAMklB,IAAIld,OAAO9I,KAAAA;AACvD6I,mBAAS4d;mBACAh0B,SAAQuN,KAAQ,GAAA;AAEzB,eAAK0W,KAAI,GAAG4W,OAAOttB,MAAMjT,QAAQ2pB,KAAI4W,MAAM,EAAE5W,IAAG;AAC9C+W,0BAAqCztB,MAAM0W,EAAE;AAE7C,gBAAI,CAACtR,cAAcqoB,WAAgB,KAAA,CAACh7B,SAAQg7B,WAAc,GAAA;AACxD3kB,sBAAQ8kB,aAAarzB,KAAKuG,OAAM1K,MAAM0K,OAAMklB,IAAIld,OAAO2kB,WAAAA;AACvD5kB,wBAAU4d;;UAEd;;AAEFyG,eAAOl/B,KAAK8a,KAAAA;AACZqkB,gBAAQn/B,KAAK6a,MAAAA;AACbukB,0BAAkBlhC,KAAKoC,IAAIwa,OAAOskB,eAAAA;AAClCC,2BAAmBnhC,KAAKoC,IAAIua,QAAQwkB,gBAAAA;MACtC;AACAvH,qBAAeC,QAAQh5B,MAAAA;AAEvB,YAAM4+B,SAASuB,OAAO3jB,QAAQ6jB,eAAAA;AAC9B,YAAMvB,UAAUsB,QAAQ5jB,QAAQ8jB,gBAAAA;AAEhC,YAAMQ,UAAU,CAACC,SAAS;QAAChlB,OAAOokB,OAAOY,GAAAA,KAAQ;QAAGjlB,QAAQskB,QAAQW,GAAAA,KAAQ;;AAE5E,aAAO;QACLhK,OAAO+J,QAAQ,CAAA;QACf7kB,MAAM6kB,QAAQ9gC,SAAS,CAAA;QACvB4+B,QAAQkC,QAAQlC,MAAAA;QAChBE,SAASgC,QAAQhC,OAAAA;QACjBqB;QACAC;MACF;IACF;IAOAltB,iBAAiBzM,OAAO;AACtB,aAAOA;IACT;IASAmR,iBAAiBnR,OAAOgC,QAAO;AAC7B,aAAO+J;IACT;IAQAkL,iBAAiBsjB,OAAO;IAAA;IAQxBlpB,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;IAQA+W,mBAAmByjB,SAAS;AAC1B,UAAI,KAAKtY,gBAAgB;AACvBsY,kBAAU,IAAIA;;AAGhB,YAAMD,QAAQ,KAAK/jB,cAAcgkB,UAAU,KAAKzpB;AAChD,aAAO0pB,YAAY,KAAKvD,iBAAiBwD,YAAY,KAAK5iC,OAAOyiC,OAAO,CAAA,IAAKA,KAAK;IACpF;IAMAI,mBAAmBJ,OAAO;AACxB,YAAMC,WAAWD,QAAQ,KAAK/jB,eAAe,KAAKzF;AAClD,aAAO,KAAKmR,iBAAiB,IAAIsY,UAAUA;IAC7C;IAOA3lB,eAAe;AACb,aAAO,KAAK1D,iBAAiB,KAAKypB,aAAY,CAAA;IAChD;IAKAA,eAAe;AACb,YAAM,EAACjiC,KAAKmC,IAAG,IAAI;AAEnB,aAAOnC,MAAM,KAAKmC,MAAM,IAAIA,MAC1BnC,MAAM,KAAKmC,MAAM,IAAInC,MACrB;IACJ;IAKA8R,WAAWzI,QAAO;AAChB,YAAMoP,QAAQ,KAAKA,SAAS,CAAA;AAE5B,UAAIpP,UAAS,KAAKA,SAAQoP,MAAM7X,QAAQ;AACtC,cAAMM,OAAOuX,MAAMpP,MAAM;AACzB,eAAOnI,KAAK8N,aACb9N,KAAK8N,WAAWwrB,kBAAkB,KAAK1oB,WAAU,GAAIzI,QAAOnI,IAAI;;AAEjE,aAAO,KAAK8N,aACZ,KAAKA,WAAWurB,mBAAmB,KAAKp7B,MAAM2S,WAAU,GAAI,IAAI;IAClE;IAMAomB,YAAY;AACV,YAAMgK,cAAc,KAAKv7B,QAAQ8R;AAGjC,YAAM0pB,MAAMlf,UAAU,KAAKqY,aAAa;AACxC,YAAMnb,MAAMpgB,KAAKwY,IAAIxY,KAAKogB,IAAIgiB,GAAAA,CAAAA;AAC9B,YAAM9hB,MAAMtgB,KAAKwY,IAAIxY,KAAKsgB,IAAI8hB,GAAAA,CAAAA;AAE9B,YAAM9C,aAAa,KAAKC,eAAc;AACtC,YAAMhP,UAAU4R,YAAYE,mBAAmB;AAC/C,YAAMjT,KAAIkQ,aAAaA,WAAWG,OAAO7iB,QAAQ2T,UAAU;AAC3D,YAAMjB,KAAIgQ,aAAaA,WAAWK,QAAQhjB,SAAS4T,UAAU;AAG7D,aAAO,KAAKhW,aAAY,IACpB+U,KAAIlP,MAAMgP,KAAI9O,MAAM8O,KAAIhP,MAAMkP,KAAIhP,MAClCgP,KAAIhP,MAAM8O,KAAIhP,MAAMkP,KAAIlP,MAAMgP,KAAI9O;IACxC;IAMA+e,aAAa;AACX,YAAMzY,UAAU,KAAKhgB,QAAQggB;AAE7B,UAAIA,YAAY,QAAQ;AACtB,eAAO,CAAC,CAACA;;AAGX,aAAO,KAAK9a,wBAAuB,EAAGjL,SAAS;IACjD;IAKAyhC,sBAAsBluB,WAAW;AAC/B,YAAM7J,OAAO,KAAKA;AAClB,YAAMnL,QAAQ,KAAKA;AACnB,YAAMwH,UAAU,KAAKA;AACrB,YAAM,EAACkV,MAAMuO,UAAU/D,OAAAA,IAAU1f;AACjC,YAAMiV,SAASC,KAAKD;AACpB,YAAMtB,eAAe,KAAKA,aAAY;AACtC,YAAM7B,QAAQ,KAAKA;AACnB,YAAMygB,cAAczgB,MAAM7X,UAAUgb,SAAS,IAAI;AACjD,YAAM0mB,KAAKvI,kBAAkBle,IAAAA;AAC7B,YAAMlb,QAAQ,CAAA;AAEd,YAAM4hC,aAAalc,OAAO8V,WAAW,KAAKrqB,WAAU,CAAA;AACpD,YAAM0wB,YAAYD,WAAW5b,UAAU4b,WAAW5lB,QAAQ;AAC1D,YAAM8lB,gBAAgBD,YAAY;AAClC,YAAME,mBAAmB,SAASd,OAAO;AACvC,eAAOG,YAAY5iC,OAAOyiC,OAAOY,SAAAA;MACnC;AACA,UAAIG,aAAa9hC,IAAG64B,WAAWkJ;AAC/B,UAAIC,KAAKC,KAAKC,KAAKC,KAAKC,IAAIC,IAAIC,KAAIC;AAEpC,UAAIhZ,aAAa,OAAO;AACtBuY,sBAAcD,iBAAiB,KAAKl6B,MAAM;AAC1Cs6B,cAAM,KAAKt6B,SAAS85B;AACpBU,cAAML,cAAcF;AACpBS,aAAKR,iBAAiBvuB,UAAU7L,GAAG,IAAIm6B;AACvCW,QAAAA,MAAKjvB,UAAU3L;iBACN4hB,aAAa,UAAU;AAChCuY,sBAAcD,iBAAiB,KAAKp6B,GAAG;AACvC46B,aAAK/uB,UAAU7L;AACf86B,QAAAA,MAAKV,iBAAiBvuB,UAAU3L,MAAM,IAAIi6B;AAC1CK,cAAMH,cAAcF;AACpBO,cAAM,KAAK16B,MAAMg6B;iBACRlY,aAAa,QAAQ;AAC9BuY,sBAAcD,iBAAiB,KAAKn6B,KAAK;AACzCs6B,cAAM,KAAKt6B,QAAQ+5B;AACnBS,cAAMJ,cAAcF;AACpBQ,aAAKP,iBAAiBvuB,UAAU1L,IAAI,IAAIg6B;AACxCU,QAAAA,MAAKhvB,UAAU5L;iBACN6hB,aAAa,SAAS;AAC/BuY,sBAAcD,iBAAiB,KAAKj6B,IAAI;AACxCw6B,aAAK9uB,UAAU1L;AACf06B,QAAAA,MAAKT,iBAAiBvuB,UAAU5L,KAAK,IAAIk6B;AACzCI,cAAMF,cAAcF;AACpBM,cAAM,KAAKt6B,OAAO65B;iBACTh4B,SAAS,KAAK;AACvB,YAAI8f,aAAa,UAAU;AACzBuY,wBAAcD,kBAAkBvuB,UAAU7L,MAAM6L,UAAU3L,UAAU,IAAI,GAAA;mBAC/D5C,UAASwkB,QAAW,GAAA;AAC7B,gBAAM2Q,iBAAiBj1B,OAAOC,KAAKqkB,QAAAA,EAAU,CAAE;AAC/C,gBAAM/iB,QAAQ+iB,SAAS2Q,cAAe;AACtC4H,wBAAcD,iBAAiB,KAAKvjC,MAAMwN,OAAOouB,cAAAA,EAAgBviB,iBAAiBnR,KAAAA,CAAAA;;AAGpF67B,aAAK/uB,UAAU7L;AACf86B,QAAAA,MAAKjvB,UAAU3L;AACfs6B,cAAMH,cAAcF;AACpBO,cAAMF,MAAMR;iBACHh4B,SAAS,KAAK;AACvB,YAAI8f,aAAa,UAAU;AACzBuY,wBAAcD,kBAAkBvuB,UAAU1L,OAAO0L,UAAU5L,SAAS,CAAA;mBAC3D3C,UAASwkB,QAAW,GAAA;AAC7B,gBAAM2Q,iBAAiBj1B,OAAOC,KAAKqkB,QAAAA,EAAU,CAAE;AAC/C,gBAAM/iB,QAAQ+iB,SAAS2Q,cAAe;AACtC4H,wBAAcD,iBAAiB,KAAKvjC,MAAMwN,OAAOouB,cAAAA,EAAgBviB,iBAAiBnR,KAAAA,CAAAA;;AAGpFw7B,cAAMF,cAAcF;AACpBM,cAAMF,MAAMP;AACZW,aAAK9uB,UAAU1L;AACf06B,QAAAA,MAAKhvB,UAAU5L;;AAGjB,YAAM86B,QAAQvzB,eAAenJ,QAAQ8R,MAAM4e,eAAe6B,WAAAA;AAC1D,YAAMoK,OAAOvjC,KAAKoC,IAAI,GAAGpC,KAAK24B,KAAKQ,cAAcmK,KAAAA,CAAAA;AACjD,WAAKxiC,KAAI,GAAGA,KAAIq4B,aAAar4B,MAAKyiC,MAAM;AACtC,cAAM9uB,UAAU,KAAK1C,WAAWjR,EAAAA;AAChC,cAAM0iC,cAAc1nB,KAAKsgB,WAAW3nB,OAAAA;AACpC,cAAMgvB,oBAAoBnd,OAAO8V,WAAW3nB,OAAAA;AAE5C,cAAM+N,YAAYghB,YAAYhhB;AAC9B,cAAMkhB,YAAYF,YAAYxgC;AAC9B,cAAM2gC,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,MAAMz4B,IAAG+a,MAAAA;AAGzC,YAAI8d,cAAcz6B,QAAW;AAC3B;;AAGF2jC,2BAAmBb,YAAY5iC,OAAOu6B,WAAWnX,SAAAA;AAEjD,YAAIjI,cAAc;AAChBuoB,gBAAME,MAAME,KAAKE,MAAKP;eACjB;AACLE,gBAAME,MAAME,KAAKE,MAAKR;;AAGxBjiC,cAAMkB,KAAK;UACTghC;UACAC;UACAC;UACAC;UACAC;UACAC;UACAC,IAAAA;UACAC,IAAAA;UACAzmB,OAAO4F;UACPxf,OAAO0gC;UACPC;UACAE;UACA1E;UACA4E;UACAC;UACAC;QACF,CAAA;MACF;AAEA,WAAKhI,eAAe9C;AACpB,WAAK+C,eAAe0G;AAEpB,aAAOhiC;IACT;IAKAi8B,mBAAmBzoB,WAAW;AAC5B,YAAM7J,OAAO,KAAKA;AAClB,YAAM3D,UAAU,KAAKA;AACrB,YAAM,EAACyjB,UAAU3R,OAAOypB,YAAAA,IAAev7B;AACvC,YAAM2T,eAAe,KAAKA,aAAY;AACtC,YAAM7B,QAAQ,KAAKA;AACnB,YAAM,EAACsgB,OAAOkL,YAAY3T,SAAS+P,OAAM,IAAI6B;AAC7C,YAAMI,KAAKvI,kBAAkBpzB,QAAQkV,IAAI;AACzC,YAAMqoB,iBAAiB5B,KAAKhS;AAC5B,YAAM6T,kBAAkB9D,SAAS,CAAC/P,UAAU4T;AAC5C,YAAM1kB,WAAW,CAACyD,UAAU,KAAKqY,aAAa;AAC9C,YAAM36B,QAAQ,CAAA;AACd,UAAIE,IAAGuI,MAAMlI,MAAM2S,OAAOzL,IAAGC,IAAG+7B,WAAWxC,OAAOzH,MAAMG,YAAY+J,WAAWC;AAC/E,UAAIC,eAAe;AAEnB,UAAIna,aAAa,OAAO;AACtB/hB,QAAAA,KAAI,KAAKG,SAAS27B;AAClBC,oBAAY,KAAKI,wBAAuB;iBAC/Bpa,aAAa,UAAU;AAChC/hB,QAAAA,KAAI,KAAKC,MAAM67B;AACfC,oBAAY,KAAKI,wBAAuB;iBAC/Bpa,aAAa,QAAQ;AAC9B,cAAM2M,MAAM,KAAK0N,wBAAwBnC,EAAAA;AACzC8B,oBAAYrN,IAAIqN;AAChBh8B,QAAAA,KAAI2uB,IAAI3uB;iBACCgiB,aAAa,SAAS;AAC/B,cAAM2M,MAAM,KAAK0N,wBAAwBnC,EAAAA;AACzC8B,oBAAYrN,IAAIqN;AAChBh8B,QAAAA,KAAI2uB,IAAI3uB;iBACCkC,SAAS,KAAK;AACvB,YAAI8f,aAAa,UAAU;AACzB/hB,UAAAA,MAAM8L,UAAU7L,MAAM6L,UAAU3L,UAAU,IAAK07B;mBACtCt+B,UAASwkB,QAAW,GAAA;AAC7B,gBAAM2Q,iBAAiBj1B,OAAOC,KAAKqkB,QAAAA,EAAU,CAAE;AAC/C,gBAAM/iB,QAAQ+iB,SAAS2Q,cAAe;AACtC1yB,UAAAA,KAAI,KAAKlJ,MAAMwN,OAAOouB,cAAe,EAACviB,iBAAiBnR,KAAS68B,IAAAA;;AAElEE,oBAAY,KAAKI,wBAAuB;iBAC/Bl6B,SAAS,KAAK;AACvB,YAAI8f,aAAa,UAAU;AACzBhiB,UAAAA,MAAM+L,UAAU1L,OAAO0L,UAAU5L,SAAS,IAAK27B;mBACtCt+B,UAASwkB,QAAW,GAAA;AAC7B,gBAAM2Q,iBAAiBj1B,OAAOC,KAAKqkB,QAAAA,EAAU,CAAE;AAC/C,gBAAM/iB,QAAQ+iB,SAAS2Q,cAAe;AACtC3yB,UAAAA,KAAI,KAAKjJ,MAAMwN,OAAOouB,cAAAA,EAAgBviB,iBAAiBnR,KAAAA;;AAEzD+8B,oBAAY,KAAKK,wBAAwBnC,EAAAA,EAAI8B;;AAG/C,UAAI95B,SAAS,KAAK;AAChB,YAAIyuB,UAAU,SAAS;AACrBwL,yBAAe;mBACNxL,UAAU,OAAO;AAC1BwL,yBAAe;;;AAInB,YAAMlF,aAAa,KAAKC,eAAc;AACtC,WAAKz+B,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CK,eAAOuX,MAAM5X,EAAE;AACfgT,gBAAQ3S,KAAK2S;AAEb,cAAM0vB,cAAcrB,YAAY/F,WAAW,KAAKrqB,WAAWjR,EAAAA,CAAAA;AAC3D+gC,gBAAQ,KAAKlpB,gBAAgB7X,EAAAA,IAAKqhC,YAAYwC;AAC9CvK,eAAO,KAAKoH,wBAAwB1gC,EAAAA;AACpCy5B,qBAAaH,KAAKG;AAClB+J,oBAAY/9B,SAAQuN,KAAAA,IAASA,MAAMjT,SAAS;AAC5C,cAAM+jC,YAAYN,YAAY;AAC9B,cAAMthC,SAAQwgC,YAAYxgC;AAC1B,cAAM6hC,cAAcrB,YAAYsB;AAChC,cAAMC,cAAcvB,YAAYwB;AAChC,YAAIC,gBAAgBZ;AAEpB,YAAI9pB,cAAc;AAChBlS,UAAAA,KAAIw5B;AAEJ,cAAIwC,cAAc,SAAS;AACzB,gBAAIvjC,OAAMuI,OAAO,GAAG;AAClB47B,8BAAgB,CAAC,KAAKr+B,QAAQoB,UAAU,UAAU;uBACzClH,OAAM,GAAG;AAClBmkC,8BAAgB,CAAC,KAAKr+B,QAAQoB,UAAU,SAAS;mBAC5C;AACLi9B,8BAAgB;;;AAIpB,cAAI5a,aAAa,OAAO;AACtB,gBAAI6Z,eAAe,UAAUzkB,aAAa,GAAG;AAC3C8kB,2BAAa,CAACD,YAAY/J,aAAaA,aAAa;uBAC3C2J,eAAe,UAAU;AAClCK,2BAAa,CAACjF,WAAWK,QAAQhjB,SAAS,IAAIioB,YAAYrK,aAAaA;mBAClE;AACLgK,2BAAa,CAACjF,WAAWK,QAAQhjB,SAAS4d,aAAa;;iBAEpD;AAEL,gBAAI2J,eAAe,UAAUzkB,aAAa,GAAG;AAC3C8kB,2BAAahK,aAAa;uBACjB2J,eAAe,UAAU;AAClCK,2BAAajF,WAAWK,QAAQhjB,SAAS,IAAIioB,YAAYrK;mBACpD;AACLgK,2BAAajF,WAAWK,QAAQhjB,SAAS2nB,YAAY/J;;;AAGzD,cAAI+F,QAAQ;AACViE,0BAAc;;AAEhB,cAAI9kB,aAAa,KAAK,CAAC+jB,YAAY0B,mBAAmB;AACpD78B,YAAAA,MAAK,aAAc,IAAKrI,KAAKsgB,IAAIb,QAAAA;;eAE9B;AACLnX,UAAAA,KAAIu5B;AACJ0C,wBAAc,IAAID,aAAa/J,aAAa;;AAG9C,YAAI4K;AAEJ,YAAI3B,YAAY0B,mBAAmB;AACjC,gBAAME,eAAetU,UAAU0S,YAAY6B,eAAe;AAC1D,gBAAM1oB,SAAS2iB,WAAW2B,QAAQngC,EAAE;AACpC,gBAAM8b,QAAQ0iB,WAAW0B,OAAOlgC,EAAE;AAElC,cAAIyH,MAAMg8B,aAAaa,aAAa78B;AACpC,cAAIG,OAAO,IAAI08B,aAAa18B;AAE5B,kBAAQ87B,cAAAA;YACR,KAAK;AACHj8B,qBAAOoU,SAAS;AAChB;YACF,KAAK;AACHpU,qBAAOoU;AACP;UAGF;AAEA,kBAAQ0nB,WAAAA;YACR,KAAK;AACH37B,sBAAQkU,QAAQ;AAChB;YACF,KAAK;AACHlU,sBAAQkU;AACR;YACF,KAAK;AACH,kBAAI9b,OAAMuI,OAAO,GAAG;AAClBX,wBAAQkU;yBACC9b,KAAI,GAAG;AAChB4H,wBAAQkU,QAAQ;;AAElB;UAGF;AAEAuoB,qBAAW;YACTz8B;YACAH;YACAqU,OAAOA,QAAQwoB,aAAaxoB;YAC5BD,QAAQA,SAASyoB,aAAazoB;YAE9B3Z,OAAOwgC,YAAY8B;UACrB;;AAGF1kC,cAAMkB,KAAK;UACTgS;UACAsmB;UACAmK;UACA39B,SAAS;YACP6Y;YACAzc,OAAAA;YACA6hC;YACAE;YACAV,WAAWY;YACXT;YACAe,aAAa;cAACl9B;cAAGC;YAAE;YACnB68B;UACF;QACF,CAAA;MACF;AAEA,aAAOvkC;IACT;IAEA6jC,0BAA0B;AACxB,YAAM,EAACpa,UAAU3R,MAAAA,IAAS,KAAK9R;AAC/B,YAAM6Y,WAAW,CAACyD,UAAU,KAAKqY,aAAa;AAE9C,UAAI9b,UAAU;AACZ,eAAO4K,aAAa,QAAQ,SAAS;;AAGvC,UAAI2O,QAAQ;AAEZ,UAAItgB,MAAMsgB,UAAU,SAAS;AAC3BA,gBAAQ;MACV,WAAWtgB,MAAMsgB,UAAU,OAAO;AAChCA,gBAAQ;MACV,WAAWtgB,MAAMsgB,UAAU,SAAS;AAClCA,gBAAQ;;AAGV,aAAOA;IACT;IAEA0L,wBAAwBnC,IAAI;AAC1B,YAAM,EAAClY,UAAU3R,OAAO,EAACwrB,YAAY5D,QAAQ/P,QAAAA,EAAQ,IAAI,KAAK3pB;AAC9D,YAAM04B,aAAa,KAAKC,eAAc;AACtC,YAAM4E,iBAAiB5B,KAAKhS;AAC5B,YAAMkP,SAASH,WAAWG,OAAO7iB;AAEjC,UAAIynB;AACJ,UAAIh8B;AAEJ,UAAIgiB,aAAa,QAAQ;AACvB,YAAIiW,QAAQ;AACVj4B,UAAAA,KAAI,KAAKG,QAAQ+nB;AAEjB,cAAI2T,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZh8B,YAAAA,MAAMo3B,SAAS;iBACV;AACL4E,wBAAY;AACZh8B,YAAAA,MAAKo3B;;eAEF;AACLp3B,UAAAA,KAAI,KAAKG,QAAQ27B;AAEjB,cAAID,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZh8B,YAAAA,MAAMo3B,SAAS;iBACV;AACL4E,wBAAY;AACZh8B,YAAAA,KAAI,KAAKK;;;iBAGJ2hB,aAAa,SAAS;AAC/B,YAAIiW,QAAQ;AACVj4B,UAAAA,KAAI,KAAKK,OAAO6nB;AAEhB,cAAI2T,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZh8B,YAAAA,MAAMo3B,SAAS;iBACV;AACL4E,wBAAY;AACZh8B,YAAAA,MAAKo3B;;eAEF;AACLp3B,UAAAA,KAAI,KAAKK,OAAOy7B;AAEhB,cAAID,eAAe,QAAQ;AACzBG,wBAAY;qBACHH,eAAe,UAAU;AAClCG,wBAAY;AACZh8B,YAAAA,MAAKo3B,SAAS;iBACT;AACL4E,wBAAY;AACZh8B,YAAAA,KAAI,KAAKG;;;aAGR;AACL67B,oBAAY;;AAGd,aAAO;QAACA;QAAWh8B,GAAAA;MAAC;IACtB;IAKAm9B,oBAAoB;AAClB,UAAI,KAAK5+B,QAAQ8R,MAAM4nB,QAAQ;AAC7B;;AAGF,YAAMlhC,QAAQ,KAAKA;AACnB,YAAMirB,WAAW,KAAKzjB,QAAQyjB;AAE9B,UAAIA,aAAa,UAAUA,aAAa,SAAS;AAC/C,eAAO;UAAC9hB,KAAK;UAAGG,MAAM,KAAKA;UAAMD,QAAQrJ,MAAMud;UAAQnU,OAAO,KAAKA;QAAK;;AACxE,UAAI6hB,aAAa,SAASA,aAAa,UAAU;AACjD,eAAO;UAAC9hB,KAAK,KAAKA;UAAKG,MAAM;UAAGD,QAAQ,KAAKA;UAAQD,OAAOpJ,MAAMwd;QAAK;;IAE3E;IAKA6oB,iBAAiB;AACf,YAAM,EAACp3B,KAAKzH,SAAS,EAACwb,iBAAAA,iBAAAA,GAAkB1Z,MAAMH,KAAKqU,OAAOD,OAAM,IAAI;AACpE,UAAIyF,kBAAiB;AACnB/T,YAAIq3B,KAAI;AACRr3B,YAAI8T,YAAYC;AAChB/T,YAAIs3B,SAASj9B,MAAMH,KAAKqU,OAAOD,MAAAA;AAC/BtO,YAAIu3B,QAAO;;IAEf;IAEAnnB,qBAAqBnX,OAAO;AAC1B,YAAMwU,OAAO,KAAKlV,QAAQkV;AAC1B,UAAI,CAAC,KAAKujB,WAAU,KAAM,CAACvjB,KAAK8K,SAAS;AACvC,eAAO;;AAET,YAAMlO,QAAQ,KAAKA;AACnB,YAAMpP,SAAQoP,MAAMqR,UAAUnhB,CAAAA,OAAKA,GAAEtB,UAAUA,KAAAA;AAC/C,UAAIgC,UAAS,GAAG;AACd,cAAMvB,OAAO+T,KAAKsgB,WAAW,KAAKrqB,WAAWzI,MAAAA,CAAAA;AAC7C,eAAOvB,KAAKya;;AAEd,aAAO;IACT;IAKAqjB,SAASzxB,WAAW;AAClB,YAAM0H,OAAO,KAAKlV,QAAQkV;AAC1B,YAAMzN,MAAM,KAAKA;AACjB,YAAMzN,QAAQ,KAAK66B,mBAAmB,KAAKA,iBAAiB,KAAK6G,sBAAsBluB,SAAS;AAChG,UAAItT,IAAGuI;AAEP,YAAMy8B,WAAW,CAACC,IAAIC,KAAI/jB,UAAU;AAClC,YAAI,CAACA,MAAMrF,SAAS,CAACqF,MAAMjf,OAAO;AAChC;;AAEFqL,YAAIq3B,KAAI;AACRr3B,YAAImU,YAAYP,MAAMrF;AACtBvO,YAAIgU,cAAcJ,MAAMjf;AACxBqL,YAAI43B,YAAYhkB,MAAM0hB,cAAc,CAAA,CAAE;AACtCt1B,YAAI63B,iBAAiBjkB,MAAM4hB;AAE3Bx1B,YAAI83B,UAAS;AACb93B,YAAI+3B,OAAOL,GAAG19B,GAAG09B,GAAGz9B,CAAC;AACrB+F,YAAIg4B,OAAOL,IAAG39B,GAAG29B,IAAG19B,CAAC;AACrB+F,YAAIi4B,OAAM;AACVj4B,YAAIu3B,QAAO;MACb;AAEA,UAAI9pB,KAAK8K,SAAS;AAChB,aAAK9lB,KAAI,GAAGuI,OAAOzI,MAAMC,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C,gBAAME,OAAOJ,MAAME,EAAE;AAErB,cAAIgb,KAAKyqB,iBAAiB;AACxBT,qBACE;cAACz9B,GAAGrH,KAAKkiC;cAAI56B,GAAGtH,KAAKmiC;eACrB;cAAC96B,GAAGrH,KAAKoiC;cAAI96B,GAAGtH,KAAKqiC;eACrBriC,IAAAA;;AAIJ,cAAI8a,KAAKme,WAAW;AAClB6L,qBACE;cAACz9B,GAAGrH,KAAK8hC;cAAKx6B,GAAGtH,KAAK+hC;eACtB;cAAC16B,GAAGrH,KAAKgiC;cAAK16B,GAAGtH,KAAKiiC;eACtB;cACEjgC,OAAOhC,KAAK+iC;cACZnnB,OAAO5b,KAAKm+B;cACZwE,YAAY3iC,KAAKgjC;cACjBH,kBAAkB7iC,KAAKijC;YACzB,CAAA;;QAGN;;IAEJ;IAKAuC,aAAa;AACX,YAAM,EAACpnC,OAAOiP,KAAKzH,SAAS,EAAC0f,QAAQxK,KAAI,EAAC,IAAI;AAC9C,YAAM0mB,aAAalc,OAAO8V,WAAW,KAAKrqB,WAAU,CAAA;AACpD,YAAM0wB,YAAYnc,OAAOM,UAAU4b,WAAW5lB,QAAQ;AACtD,UAAI,CAAC6lB,WAAW;AACd;;AAEF,YAAMgE,gBAAgB3qB,KAAKsgB,WAAW,KAAKrqB,WAAW,CAAA,CAAA,EAAIyQ;AAC1D,YAAMogB,cAAc,KAAK1G;AACzB,UAAIgH,IAAIE,KAAID,IAAIE;AAEhB,UAAI,KAAK9oB,aAAY,GAAI;AACvB2oB,aAAKlB,YAAY5iC,OAAO,KAAKsJ,MAAM+5B,SAAAA,IAAaA,YAAY;AAC5DW,QAAAA,MAAKpB,YAAY5iC,OAAO,KAAKoJ,OAAOi+B,aAAAA,IAAiBA,gBAAgB;AACrEtD,aAAKE,MAAKT;aACL;AACLO,aAAKnB,YAAY5iC,OAAO,KAAKmJ,KAAKk6B,SAAAA,IAAaA,YAAY;AAC3DY,QAAAA,MAAKrB,YAAY5iC,OAAO,KAAKqJ,QAAQg+B,aAAAA,IAAiBA,gBAAgB;AACtEvD,aAAKE,MAAKR;;AAEZv0B,UAAIq3B,KAAI;AACRr3B,UAAImU,YAAYggB,WAAW5lB;AAC3BvO,UAAIgU,cAAcmgB,WAAWx/B;AAE7BqL,UAAI83B,UAAS;AACb93B,UAAI+3B,OAAOlD,IAAIC,EAAAA;AACf90B,UAAIg4B,OAAOjD,KAAIC,GAAAA;AACfh1B,UAAIi4B,OAAM;AAEVj4B,UAAIu3B,QAAO;IACb;IAKAc,WAAWtyB,WAAW;AACpB,YAAM+tB,cAAc,KAAKv7B,QAAQ8R;AAEjC,UAAI,CAACypB,YAAYvb,SAAS;AACxB;;AAGF,YAAMvY,MAAM,KAAKA;AAEjB,YAAM8F,OAAO,KAAKqxB,kBAAiB;AACnC,UAAIrxB,MAAM;AACRwyB,iBAASt4B,KAAK8F,IAAAA;;AAGhB,YAAMvT,QAAQ,KAAKg8B,cAAcxoB,SAAAA;AACjC,iBAAWpT,QAAQJ,OAAO;AACxB,cAAMgmC,oBAAoB5lC,KAAK4F;AAC/B,cAAMy6B,WAAWrgC,KAAKo5B;AACtB,cAAMtmB,QAAQ9S,KAAK8S;AACnB,cAAMxL,KAAItH,KAAKujC;AACfsC,mBAAWx4B,KAAKyF,OAAO,GAAGxL,IAAG+4B,UAAUuF,iBAAAA;MACzC;AAEA,UAAIzyB,MAAM;AACR2yB,mBAAWz4B,GAAAA;;IAEf;IAKA04B,YAAY;AACV,YAAM,EAAC14B,KAAKzH,SAAS,EAACyjB,UAAUwV,OAAAA,QAAO73B,QAAO,EAAC,IAAI;AAEnD,UAAI,CAAC63B,OAAMjZ,SAAS;AAClB;;AAGF,YAAMwT,OAAOC,OAAOwF,OAAMzF,IAAI;AAC9B,YAAM7J,UAAUO,UAAU+O,OAAMtP,OAAO;AACvC,YAAMyI,QAAQ6G,OAAM7G;AACpB,UAAInd,SAASue,KAAKG,aAAa;AAE/B,UAAIlQ,aAAa,YAAYA,aAAa,YAAYxkB,UAASwkB,QAAW,GAAA;AACxExO,kBAAU0U,QAAQ9nB;AAClB,YAAIlC,SAAQs5B,OAAM3d,IAAI,GAAG;AACvBrG,oBAAUue,KAAKG,cAAcsF,OAAM3d,KAAKrhB,SAAS;;aAE9C;AACLgb,kBAAU0U,QAAQhoB;;AAGpB,YAAM,EAACsyB,QAAQC,QAAQjX,UAAUpE,SAAQ,IAAImb,UAAU,MAAM/e,QAAQwO,UAAU2O,KAAAA;AAE/E6N,iBAAWx4B,KAAKwxB,OAAM3d,MAAM,GAAG,GAAGkY,MAAM;QACtCp3B,OAAO68B,OAAM78B;QACb6gB;QACApE;QACA4kB,WAAW3J,WAAW1B,OAAO3O,UAAUriB,OAAAA;QACvCw8B,cAAc;QACde,aAAa;UAAC1K;UAAQC;QAAO;MAC/B,CAAA;IACF;IAEA/5B,KAAKqT,WAAW;AACd,UAAI,CAAC,KAAKirB,WAAU,GAAI;AACtB;;AAGF,WAAKoG,eAAc;AACnB,WAAKI,SAASzxB,SAAAA;AACd,WAAKoyB,WAAU;AACf,WAAKO,UAAS;AACd,WAAKL,WAAWtyB,SAAAA;IAClB;IAMAqc,UAAU;AACR,YAAM1oB,OAAO,KAAKnB;AAClB,YAAMogC,KAAKj/B,KAAK2Q,SAAS3Q,KAAK2Q,MAAMgY,KAAK;AACzC,YAAMuW,KAAKl3B,eAAehI,KAAK+T,QAAQ/T,KAAK+T,KAAK4U,GAAG,EAAC;AACrD,YAAMwW,KAAKn3B,eAAehI,KAAKue,UAAUve,KAAKue,OAAOoK,GAAG,CAAA;AAExD,UAAI,CAAC,KAAK2O,WAAU,KAAM,KAAKt+B,SAASk6B,OAAMtS,UAAU5nB,MAAM;AAE5D,eAAO;UAAC;YACN2vB,GAAGsW;YACHjmC,MAAM,CAACqT,cAAc;AACnB,mBAAKrT,KAAKqT,SAAAA;YACZ;UACF;QAAE;;AAGJ,aAAO;QAAC;UACNsc,GAAGuW;UACHlmC,MAAM,CAACqT,cAAc;AACnB,iBAAKqxB,eAAc;AACnB,iBAAKI,SAASzxB,SAAAA;AACd,iBAAK2yB,UAAS;UAChB;QACF;QAAG;UACDrW,GAAGwW;UACHnmC,MAAM,MAAM;AACV,iBAAKylC,WAAU;UACjB;QACF;QAAG;UACD9V,GAAGsW;UACHjmC,MAAM,CAACqT,cAAc;AACnB,iBAAKsyB,WAAWtyB,SAAAA;UAClB;QACF;MAAE;IACJ;IAOAtI,wBAAwBvM,MAAM;AAC5B,YAAMi9B,QAAQ,KAAKp9B,MAAMmrB,6BAA4B;AACrD,YAAM1L,SAAS,KAAKtU,OAAO;AAC3B,YAAMof,SAAS,CAAA;AACf,UAAI7oB,IAAGuI;AAEP,WAAKvI,KAAI,GAAGuI,OAAOmzB,MAAM37B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C,cAAMqJ,OAAOqyB,MAAM17B,EAAE;AACrB,YAAIqJ,KAAK0U,MAAO,MAAK,KAAK7T,OAAO,CAACzL,QAAQ4K,KAAK5K,SAASA,OAAO;AAC7DoqB,iBAAO7nB,KAAKqI,IAAAA;;MAEhB;AACA,aAAOwf;IACT;IAOA6X,wBAAwBl4B,QAAO;AAC7B,YAAMvB,OAAO,KAAKnB,QAAQ8R,MAAM0jB,WAAW,KAAKrqB,WAAWzI,MAAAA,CAAAA;AAC3D,aAAO+wB,OAAOtyB,KAAKqyB,IAAI;IACzB;IAKA+M,aAAa;AACX,YAAMC,WAAW,KAAK5F,wBAAwB,CAAA,EAAGjH;AACjD,cAAQ,KAAKhgB,aAAY,IAAK,KAAKqC,QAAQ,KAAKD,UAAUyqB;IAC5D;EACF;ACtqDe,MAAMC,gBAAN,MAAMA;IACnBzoC,YAAYW,MAAM+nC,OAAO7e,UAAU;AACjC,WAAKlpB,OAAOA;AACZ,WAAK+nC,QAAQA;AACb,WAAK7e,WAAWA;AAChB,WAAK7nB,QAAQmF,uBAAOwhC,OAAO,IAAI;IACjC;IAEAC,UAAUjoC,MAAM;AACd,aAAOwG,OAAO4iB,UAAU8e,cAAcpnC,KAAK,KAAKd,KAAKopB,WAAWppB,KAAKopB,SAAS;IAChF;IAMA+e,SAAS1mC,MAAM;AACb,YAAM2mC,QAAQ5hC,OAAO6hC,eAAe5mC,IAAAA;AACpC,UAAI6mC;AAEJ,UAAIC,kBAAkBH,KAAQ,GAAA;AAE5BE,sBAAc,KAAKH,SAASC,KAAAA;;AAG9B,YAAM/mC,QAAQ,KAAKA;AACnB,YAAMoK,KAAKhK,KAAKgK;AAChB,YAAMs8B,QAAQ,KAAKA,QAAQ,MAAMt8B;AAEjC,UAAI,CAACA,IAAI;AACP,cAAM,IAAIud,MAAM,6BAA6BvnB,IAAM;;AAGrD,UAAIgK,MAAMpK,OAAO;AAEf,eAAO0mC;;AAGT1mC,YAAMoK,EAAAA,IAAMhK;AACZ+mC,uBAAiB/mC,MAAMsmC,OAAOO,WAAAA;AAC9B,UAAI,KAAKpf,UAAU;AACjBxiB,iBAASwiB,SAASznB,KAAKgK,IAAIhK,KAAK2a,SAAS;;AAG3C,aAAO2rB;IACT;IAMA/lC,IAAIyJ,IAAI;AACN,aAAO,KAAKpK,MAAMoK,EAAG;IACvB;IAKAg9B,WAAWhnC,MAAM;AACf,YAAMJ,QAAQ,KAAKA;AACnB,YAAMoK,KAAKhK,KAAKgK;AAChB,YAAMs8B,QAAQ,KAAKA;AAEnB,UAAIt8B,MAAMpK,OAAO;AACf,eAAOA,MAAMoK,EAAG;;AAGlB,UAAIs8B,SAASt8B,MAAM/E,SAASqhC,KAAAA,GAAQ;AAClC,eAAOrhC,SAASqhC,KAAM,EAACt8B,EAAG;AAC1B,YAAI,KAAKyd,UAAU;AACjB,iBAAO9M,UAAU3Q,EAAG;;;IAG1B;EACF;AAEA,WAAS+8B,iBAAiB/mC,MAAMsmC,OAAOO,aAAa;AAElD,UAAMI,eAAeC,OAAMniC,uBAAOwhC,OAAO,IAAI,GAAG;MAC9CM,cAAc5hC,SAAS1E,IAAIsmC,WAAAA,IAAe,CAAA;MAC1C5hC,SAAS1E,IAAI+lC,KAAAA;MACbtmC,KAAKiF;IACN,CAAA;AAEDA,aAASvE,IAAI4lC,OAAOW,YAAAA;AAEpB,QAAIjnC,KAAK41B,eAAe;AACtBuR,oBAAcb,OAAOtmC,KAAK41B,aAAa;;AAGzC,QAAI51B,KAAKugB,aAAa;AACpBtb,eAASmiC,SAASd,OAAOtmC,KAAKugB,WAAW;;EAE7C;AAEA,WAAS4mB,cAAcb,OAAOe,QAAQ;AACpCtiC,WAAOC,KAAKqiC,MAAAA,EAAQzoC,QAAQ0oC,CAAAA,aAAY;AACtC,YAAMC,gBAAgBD,SAASE,MAAM,GAAA;AACrC,YAAMC,aAAaF,cAAcnnC,IAAG;AACpC,YAAMsnC,cAAc;QAACpB;MAAM,EAACtvB,OAAOuwB,aAAeI,EAAAA,KAAK,GAAA;AACvD,YAAMC,QAAQP,OAAOC,QAAS,EAACE,MAAM,GAAA;AACrC,YAAMK,aAAaD,MAAMxnC,IAAG;AAC5B,YAAM0nC,cAAcF,MAAMD,KAAK,GAAA;AAC/B1iC,eAAS8iC,MAAML,aAAaD,YAAYK,aAAaD,UAAAA;IACvD,CAAA;EACF;AAEA,WAASf,kBAAkBH,OAAO;AAChC,WAAO,QAAQA,SAAS,cAAcA;EACxC;AC1GO,MAAMqB,WAAN,MAAMA;IACXpqC,cAAc;AACZ,WAAKqqC,cAAc,IAAI5B,cAAcp5B,mBAAmB,YAAY,IAAI;AACxE,WAAKiG,WAAW,IAAImzB,cAAc1Q,UAAS,UAAA;AAC3C,WAAK/U,UAAU,IAAIylB,cAActhC,QAAQ,SAAA;AACzC,WAAK6G,SAAS,IAAIy6B,cAAcpM,OAAO,QAAA;AAGvC,WAAKiO,mBAAmB;QAAC,KAAKD;QAAa,KAAKr8B;QAAQ,KAAKsH;MAAS;IACxE;IAKAnS,OAAOoV,MAAM;AACX,WAAKgyB,MAAM,YAAYhyB,IAAAA;IACzB;IAEA3U,UAAU2U,MAAM;AACd,WAAKgyB,MAAM,cAAchyB,IAAAA;IAC3B;IAKAiyB,kBAAkBjyB,MAAM;AACtB,WAAKgyB,MAAM,YAAYhyB,MAAM,KAAK8xB,WAAW;IAC/C;IAKA55B,eAAe8H,MAAM;AACnB,WAAKgyB,MAAM,YAAYhyB,MAAM,KAAKjD,QAAQ;IAC5C;IAKAm1B,cAAclyB,MAAM;AAClB,WAAKgyB,MAAM,YAAYhyB,MAAM,KAAKyK,OAAO;IAC3C;IAKA0nB,aAAanyB,MAAM;AACjB,WAAKgyB,MAAM,YAAYhyB,MAAM,KAAKvK,MAAM;IAC1C;IAMA28B,cAAcv+B,IAAI;AAChB,aAAO,KAAKw+B,KAAKx+B,IAAI,KAAKi+B,aAAa,YAAA;IACzC;IAMA5gB,WAAWrd,IAAI;AACb,aAAO,KAAKw+B,KAAKx+B,IAAI,KAAKkJ,UAAU,SAAA;IACtC;IAMAu1B,UAAUz+B,IAAI;AACZ,aAAO,KAAKw+B,KAAKx+B,IAAI,KAAK4W,SAAS,QAAA;IACrC;IAMA8nB,SAAS1+B,IAAI;AACX,aAAO,KAAKw+B,KAAKx+B,IAAI,KAAK4B,QAAQ,OAAA;IACpC;IAKA+8B,qBAAqBxyB,MAAM;AACzB,WAAKgyB,MAAM,cAAchyB,MAAM,KAAK8xB,WAAW;IACjD;IAKAW,kBAAkBzyB,MAAM;AACtB,WAAKgyB,MAAM,cAAchyB,MAAM,KAAKjD,QAAQ;IAC9C;IAKA21B,iBAAiB1yB,MAAM;AACrB,WAAKgyB,MAAM,cAAchyB,MAAM,KAAKyK,OAAO;IAC7C;IAKAkoB,gBAAgB3yB,MAAM;AACpB,WAAKgyB,MAAM,cAAchyB,MAAM,KAAKvK,MAAM;IAC5C;IAKAu8B,MAAM5jC,QAAQ4R,MAAM4yB,eAAe;AACjC;QAAI5yB,GAAAA;QAAMvX,QAAQoqC,CAAAA,QAAO;AACvB,cAAMC,MAAMF,iBAAiB,KAAKG,oBAAoBF,GAAAA;AACtD,YAAID,iBAAiBE,IAAIzC,UAAUwC,GAASC,KAAAA,QAAQ,KAAKroB,WAAWooB,IAAIh/B,IAAK;AAC3E,eAAKm/B,MAAM5kC,QAAQ0kC,KAAKD,GAAAA;eACnB;AAKL/Y,eAAK+Y,KAAKhpC,CAAAA,SAAQ;AAOhB,kBAAMopC,UAAUL,iBAAiB,KAAKG,oBAAoBlpC,IAAAA;AAC1D,iBAAKmpC,MAAM5kC,QAAQ6kC,SAASppC,IAAAA;UAC9B,CAAA;;MAEJ,CAAA;IACF;IAKAmpC,MAAM5kC,QAAQ6iB,WAAUiiB,WAAW;AACjC,YAAMC,cAAcC,YAAYhlC,MAAAA;AAChClF,eAAKgqC,UAAU,WAAWC,WAAAA,GAAc,CAAA,GAAID,SAAAA;AAC5CjiB,MAAAA,UAAS7iB,MAAAA,EAAQ8kC,SAAAA;AACjBhqC,eAAKgqC,UAAU,UAAUC,WAAAA,GAAc,CAAA,GAAID,SAAAA;IAC7C;IAKAH,oBAAoB3qC,MAAM;AACxB,eAASuB,KAAI,GAAGA,KAAI,KAAKooC,iBAAiBroC,QAAQC,MAAK;AACrD,cAAMmpC,MAAM,KAAKf,iBAAiBpoC,EAAE;AACpC,YAAImpC,IAAIzC,UAAUjoC,IAAO,GAAA;AACvB,iBAAO0qC;;MAEX;AAEA,aAAO,KAAKroB;IACd;IAKA4nB,KAAKx+B,IAAI++B,eAAexqC,MAAM;AAC5B,YAAMyB,OAAO+oC,cAAcxoC,IAAIyJ,EAAAA;AAC/B,UAAIhK,SAAS9B,QAAW;AACtB,cAAM,IAAIqpB,MAAM,MAAMvd,KAAK,2BAA2BzL,OAAO,GAAK;;AAEpE,aAAOyB;IACT;EAEF;AAGA,MAAA,WAA+B,oBAAIgoC,SAAW;ACtK/B,MAAMwB,gBAAN,MAAMA;IACnB5rC,cAAc;AACZ,WAAK6rC,QAAQ,CAAA;IACf;IAYAC,OAAOtrC,OAAOurC,MAAMxzB,MAAMtK,QAAQ;AAChC,UAAI89B,SAAS,cAAc;AACzB,aAAKF,QAAQ,KAAKG,mBAAmBxrC,OAAO,IAAI;AAChD,aAAKD,QAAQ,KAAKsrC,OAAOrrC,OAAO,SAAA;;AAGlC,YAAMmiB,eAAc1U,SAAS,KAAKg+B,aAAazrC,KAAAA,EAAOyN,OAAOA,MAAU,IAAA,KAAKg+B,aAAazrC,KAAM;AAC/F,YAAMuqB,SAAS,KAAKxqB,QAAQoiB,cAAaniB,OAAOurC,MAAMxzB,IAAAA;AAEtD,UAAIwzB,SAAS,gBAAgB;AAC3B,aAAKxrC,QAAQoiB,cAAaniB,OAAO,MAAA;AACjC,aAAKD,QAAQ,KAAKsrC,OAAOrrC,OAAO,WAAA;;AAElC,aAAOuqB;IACT;IAKAxqB,QAAQoiB,cAAaniB,OAAOurC,MAAMxzB,MAAM;AACtCA,aAAOA,QAAQ,CAAA;AACf,iBAAW2zB,cAAcvpB,cAAa;AACpC,cAAMwpB,UAASD,WAAWC;AAC1B,cAAMxlC,SAASwlC,QAAOJ,IAAK;AAC3B,cAAM/c,SAAS;UAACxuB;UAAO+X;UAAM2zB,WAAWlkC;QAAQ;AAChD,YAAIokC,SAAazlC,QAAQqoB,QAAQmd,OAAAA,MAAY,SAAS5zB,KAAK8zB,YAAY;AACrE,iBAAO;;MAEX;AAEA,aAAO;IACT;IAEAC,aAAa;AAMX,UAAI,CAAChyB,cAAc,KAAKrB,MAAM,GAAG;AAC/B,aAAKszB,YAAY,KAAKtzB;AACtB,aAAKA,SAAS3Y;;IAElB;IAMA2rC,aAAazrC,OAAO;AAClB,UAAI,KAAKyY,QAAQ;AACf,eAAO,KAAKA;;AAGd,YAAM0J,eAAc,KAAK1J,SAAS,KAAK+yB,mBAAmBxrC,KAAAA;AAE1D,WAAKgsC,oBAAoBhsC,KAAAA;AAEzB,aAAOmiB;IACT;IAEAqpB,mBAAmBxrC,OAAOuI,KAAK;AAC7B,YAAMlC,UAASrG,SAASA,MAAMqG;AAC9B,YAAMmB,UAAUmJ,eAAetK,QAAOmB,WAAWnB,QAAOmB,QAAQgb,SAAS,CAAA,CAAC;AAC1E,YAAMA,WAAUypB,WAAW5lC,OAAAA;AAE3B,aAAOmB,YAAY,SAAS,CAACe,MAAM,CAAA,IAAK2jC,kBAAkBlsC,OAAOwiB,UAAShb,SAASe,GAAI;IACzF;IAMAyjC,oBAAoBhsC,OAAO;AACzB,YAAMmsC,sBAAsB,KAAKJ,aAAa,CAAA;AAC9C,YAAM5pB,eAAc,KAAK1J;AACzB,YAAMkR,OAAO,CAAC5Q,IAAGrP,OAAMqP,GAAEtL,OAAOxE,CAAAA,OAAK,CAACS,GAAE0iC,KAAKljC,CAAAA,OAAKD,GAAE0iC,OAAO//B,OAAO1C,GAAEyiC,OAAO//B,EAAE,CAAA;AAC7E,WAAK7L,QAAQ4pB,KAAKwiB,qBAAqBhqB,YAAAA,GAAcniB,OAAO,MAAA;AAC5D,WAAKD,QAAQ4pB,KAAKxH,cAAagqB,mBAAAA,GAAsBnsC,OAAO,OAAA;IAC9D;EACF;AAKA,WAASisC,WAAW5lC,SAAQ;AAC1B,UAAMgmC,WAAW,CAAA;AACjB,UAAM7pB,WAAU,CAAA;AAChB,UAAM5b,OAAOD,OAAOC,KAAKoiB,SAASxG,QAAQhhB,KAAK;AAC/C,aAASE,KAAI,GAAGA,KAAIkF,KAAKnF,QAAQC,MAAK;AACpC8gB,MAAAA,SAAQ9f,KAAKsmB,SAASqhB,UAAUzjC,KAAKlF,EAAE,CAAA,CAAA;IACzC;AAEA,UAAM4qC,QAAQjmC,QAAOmc,WAAW,CAAA;AAChC,aAAS9gB,KAAI,GAAGA,KAAI4qC,MAAM7qC,QAAQC,MAAK;AACrC,YAAMiqC,UAASW,MAAM5qC,EAAE;AAEvB,UAAI8gB,SAAQvE,QAAQ0tB,OAAAA,MAAY,IAAI;AAClCnpB,QAAAA,SAAQ9f,KAAKipC,OAAAA;AACbU,iBAASV,QAAO//B,EAAE,IAAI;;IAE1B;AAEA,WAAO;MAAC4W,SAAAA;MAAS6pB;IAAQ;EAC3B;AAEA,WAASE,QAAQ/kC,SAASe,KAAK;AAC7B,QAAI,CAACA,OAAOf,YAAY,OAAO;AAC7B,aAAO;;AAET,QAAIA,YAAY,MAAM;AACpB,aAAO,CAAA;;AAET,WAAOA;EACT;AAEA,WAAS0kC,kBAAkBlsC,OAAO,EAACwiB,SAAAA,UAAS6pB,SAAQ,GAAG7kC,SAASe,KAAK;AACnE,UAAMgiB,SAAS,CAAA;AACf,UAAMlV,UAAUrV,MAAM2S,WAAU;AAEhC,eAAWg5B,WAAUnpB,UAAS;AAC5B,YAAM5W,KAAK+/B,QAAO//B;AAClB,YAAMjD,OAAO4jC,QAAQ/kC,QAAQoE,EAAAA,GAAKrD,GAAAA;AAClC,UAAII,SAAS,MAAM;AACjB;;AAEF4hB,aAAO7nB,KAAK;QACVipC,QAAAA;QACAnkC,SAASglC,WAAWxsC,MAAMqG,QAAQ;UAACslC,QAAAA;UAAQW,OAAOD,SAASzgC,EAAG;QAAA,GAAGjD,MAAM0M,OAAAA;MACzE,CAAA;IACF;AAEA,WAAOkV;EACT;AAEA,WAASiiB,WAAWnmC,SAAQ,EAACslC,QAAAA,SAAQW,MAAK,GAAG3jC,MAAM0M,SAAS;AAC1D,UAAMzO,OAAOP,QAAOomC,gBAAgBd,OAAAA;AACpC,UAAMn5B,SAASnM,QAAOoM,gBAAgB9J,MAAM/B,IAAAA;AAC5C,QAAI0lC,SAASX,QAAO9kC,UAAU;AAE5B2L,aAAO9P,KAAKipC,QAAO9kC,QAAQ;;AAE7B,WAAOR,QAAOqM,eAAeF,QAAQ6C,SAAS;MAAC;OAAK;MAElDq3B,YAAY;MACZC,WAAW;MACXC,SAAS;IACX,CAAA;EACF;AClLO,WAASC,aAAa1sC,MAAMqH,SAAS;AAC1C,UAAMslC,kBAAkBjmC,SAAS0K,SAASpR,IAAAA,KAAS,CAAA;AACnD,UAAM4sC,kBAAkBvlC,QAAQ+J,YAAY,CAAA,GAAIpR,IAAK,KAAI,CAAA;AACzD,WAAO4sC,eAAe/7B,aAAaxJ,QAAQwJ,aAAa87B,gBAAgB97B,aAAa;EACvF;AAEA,WAASg8B,0BAA0BphC,IAAIoF,WAAW;AAChD,QAAI7F,OAAOS;AACX,QAAIA,OAAO,WAAW;AACpBT,aAAO6F;eACEpF,OAAO,WAAW;AAC3BT,aAAO6F,cAAc,MAAM,MAAM;;AAEnC,WAAO7F;EACT;AAEA,WAAS8hC,0BAA0B9hC,MAAM6F,WAAW;AAClD,WAAO7F,SAAS6F,YAAY,YAAY;EAC1C;AAEA,WAASk8B,cAActhC,IAAI;AACzB,QAAIA,OAAO,OAAOA,OAAO,OAAOA,OAAO,KAAK;AAC1C,aAAOA;;EAEX;AAEA,WAASuhC,iBAAiBliB,UAAU;AAClC,QAAIA,aAAa,SAASA,aAAa,UAAU;AAC/C,aAAO;;AAET,QAAIA,aAAa,UAAUA,aAAa,SAAS;AAC/C,aAAO;;EAEX;AAEO,WAASmiB,cAAcxhC,OAAOyhC,cAAc;AACjD,QAAIH,cAActhC,EAAK,GAAA;AACrB,aAAOA;;AAET,eAAWjD,QAAQ0kC,cAAc;AAC/B,YAAMliC,OAAOxC,KAAKwC,QACbgiC,iBAAiBxkC,KAAKsiB,QAAQ,KAC9Brf,GAAGnK,SAAS,KAAKyrC,cAActhC,GAAG,CAAA,EAAG0hC,YAAW,CAAA;AACrD,UAAIniC,MAAM;AACR,eAAOA;;IAEX;AACA,UAAM,IAAIge,MAAM,6BAA6Bvd,EAAG,qDAAoD;EACtG;AAEA,WAAS2hC,mBAAmB3hC,IAAIT,MAAM2C,SAAS;AAC7C,QAAIA,QAAQ3C,OAAO,QAAA,MAAcS,IAAI;AACnC,aAAO;QAACT;MAAI;;EAEhB;AAEA,WAASqiC,yBAAyB5hC,IAAIvF,SAAQ;AAC5C,QAAIA,QAAOyE,QAAQzE,QAAOyE,KAAKyG,UAAU;AACvC,YAAMk8B,UAAUpnC,QAAOyE,KAAKyG,SAAS9D,OAAO,CAACigC,OAAMA,GAAEh9B,YAAY9E,MAAM8hC,GAAE78B,YAAYjF,EAAAA;AACrF,UAAI6hC,QAAQhsC,QAAQ;AAClB,eAAO8rC,mBAAmB3hC,IAAI,KAAK6hC,QAAQ,CAAA,CAAE,KAAKF,mBAAmB3hC,IAAI,KAAK6hC,QAAQ,CAAE,CAAA;;;AAG5F,WAAO,CAAA;EACT;AAEA,WAASE,iBAAiBtnC,SAAQmB,SAAS;AACzC,UAAMomC,gBAAgBrxB,UAAUlW,QAAOlG,IAAI,KAAK;MAACqN,QAAQ,CAAA;IAAE;AAC3D,UAAMqgC,eAAermC,QAAQgG,UAAU,CAAA;AACvC,UAAMsgC,iBAAiBjB,aAAaxmC,QAAOlG,MAAMqH,OAAAA;AACjD,UAAMgG,UAAS7G,uBAAOwhC,OAAO,IAAI;AAGjCxhC,WAAOC,KAAKinC,YAAAA,EAAcrtC,QAAQoL,CAAAA,OAAM;AACtC,YAAMmiC,YAAYF,aAAajiC,EAAG;AAClC,UAAI,CAACnF,UAASsnC,SAAY,GAAA;AACxB,eAAO39B,QAAQ49B,MAAM,0CAA0CpiC,EAAAA,EAAI;;AAErE,UAAImiC,UAAUE,QAAQ;AACpB,eAAO79B,QAAQC,KAAK,kDAAkDzE,EAAAA,EAAI;;AAE5E,YAAMT,OAAOiiC,cAAcxhC,IAAImiC,WAAWP,yBAAyB5hC,IAAIvF,OAASQ,GAAAA,SAAS2G,OAAOugC,UAAU5tC,IAAI,CAAC;AAC/G,YAAM+tC,YAAYjB,0BAA0B9hC,MAAM2iC,cAAAA;AAClD,YAAMK,sBAAsBP,cAAcpgC,UAAU,CAAA;AACpDA,MAAAA,QAAO5B,EAAAA,IAAMwiC,QAAQznC,uBAAOwhC,OAAO,IAAI,GAAG;QAAC;UAACh9B;QAAI;QAAG4iC;QAAWI,oBAAoBhjC,IAAK;QAAEgjC,oBAAoBD,SAAU;MAAC,CAAA;IAC1H,CAAA;AAGA7nC,IAAAA,QAAOyE,KAAKyG,SAAS/Q,QAAQsN,CAAAA,YAAW;AACtC,YAAM3N,OAAO2N,QAAQ3N,QAAQkG,QAAOlG;AACpC,YAAM6Q,YAAYlD,QAAQkD,aAAa67B,aAAa1sC,MAAMqH,OAAAA;AAC1D,YAAMslC,kBAAkBvwB,UAAUpc,IAAAA,KAAS,CAAA;AAC3C,YAAMguC,sBAAsBrB,gBAAgBt/B,UAAU,CAAA;AACtD7G,aAAOC,KAAKunC,mBAAAA,EAAqB3tC,QAAQ6tC,CAAAA,cAAa;AACpD,cAAMljC,OAAO6hC,0BAA0BqB,WAAWr9B,SAAAA;AAClD,cAAMpF,KAAKkC,QAAQ3C,OAAO,QAAA,KAAaA;AACvCqC,QAAAA,QAAO5B,EAAG,IAAG4B,QAAO5B,EAAAA,KAAOjF,uBAAOwhC,OAAO,IAAI;AAC7CiG,gBAAQ5gC,QAAO5B,EAAAA,GAAK;UAAC;YAACT;UAAI;UAAG0iC,aAAajiC,EAAG;UAAEuiC,oBAAoBE,SAAU;QAAC,CAAA;MAChF,CAAA;IACF,CAAA;AAGA1nC,WAAOC,KAAK4G,OAAAA,EAAQhN,QAAQyG,CAAAA,QAAO;AACjC,YAAMwB,QAAQ+E,QAAOvG,GAAI;AACzBmnC,cAAQ3lC,OAAO;QAAC5B,SAAS2G,OAAO/E,MAAMtI,IAAI;QAAG0G,SAAS4B;MAAM,CAAA;IAC9D,CAAA;AAEA,WAAO+E;EACT;AAEA,WAAS8gC,YAAYjoC,SAAQ;AAC3B,UAAMmB,UAAUnB,QAAOmB,YAAYnB,QAAOmB,UAAU,CAAA;AAEpDA,YAAQgb,UAAU7R,eAAenJ,QAAQgb,SAAS,CAAA,CAAC;AACnDhb,YAAQgG,SAASmgC,iBAAiBtnC,SAAQmB,OAAAA;EAC5C;AAEA,WAAS+mC,SAASzjC,MAAM;AACtBA,WAAOA,QAAQ,CAAA;AACfA,SAAKyG,WAAWzG,KAAKyG,YAAY,CAAA;AACjCzG,SAAKwI,SAASxI,KAAKwI,UAAU,CAAA;AAC7B,WAAOxI;EACT;AAEA,WAAS0jC,WAAWnoC,SAAQ;AAC1BA,IAAAA,UAASA,WAAU,CAAA;AACnBA,IAAAA,QAAOyE,OAAOyjC,SAASloC,QAAOyE,IAAI;AAElCwjC,gBAAYjoC,OAAAA;AAEZ,WAAOA;EACT;AAEA,MAAMooC,WAAW,oBAAI9uC,IAAAA;AACrB,MAAM+uC,aAAa,oBAAIC,IAAAA;AAEvB,WAASC,WAAWn5B,UAAUo5B,UAAU;AACtC,QAAIjoC,OAAO6nC,SAAStsC,IAAIsT,QAAAA;AACxB,QAAI,CAAC7O,MAAM;AACTA,aAAOioC,SAAAA;AACPJ,eAASnsC,IAAImT,UAAU7O,IAAAA;AACvB8nC,iBAAW/rC,IAAIiE,IAAAA;;AAEjB,WAAOA;EACT;AAEA,MAAMkoC,aAAa,CAACxsC,MAAKua,KAAK5V,QAAQ;AACpC,UAAM0B,OAAOgL,iBAAiBkJ,KAAK5V,GAAAA;AACnC,QAAI0B,SAAS7I,QAAW;AACtBwC,MAAAA,KAAIK,IAAIgG,IAAAA;;EAEZ;AAEe,MAAMomC,UAAN,MAAMA;IACnBvvC,YAAY6G,SAAQ;AAClB,WAAK2oC,UAAUR,WAAWnoC,OAAAA;AAC1B,WAAK4oC,cAAc,oBAAItvC,IAAAA;AACvB,WAAKuvC,iBAAiB,oBAAIvvC,IAAAA;IAC5B;IAEA,IAAIwvC,WAAW;AACb,aAAO,KAAKH,QAAQG;IACtB;IAEA,IAAIhvC,OAAO;AACT,aAAO,KAAK6uC,QAAQ7uC;IACtB;IAEA,IAAIA,KAAKA,MAAM;AACb,WAAK6uC,QAAQ7uC,OAAOA;IACtB;IAEA,IAAI2K,OAAO;AACT,aAAO,KAAKkkC,QAAQlkC;IACtB;IAEA,IAAIA,KAAKA,MAAM;AACb,WAAKkkC,QAAQlkC,OAAOyjC,SAASzjC,IAAAA;IAC/B;IAEA,IAAItD,UAAU;AACZ,aAAO,KAAKwnC,QAAQxnC;IACtB;IAEA,IAAIA,QAAQA,SAAS;AACnB,WAAKwnC,QAAQxnC,UAAUA;IACzB;IAEA,IAAIgb,UAAU;AACZ,aAAO,KAAKwsB,QAAQxsB;IACtB;IAEA9c,SAAS;AACP,YAAMW,UAAS,KAAK2oC;AACpB,WAAKI,WAAU;AACfd,kBAAYjoC,OAAAA;IACd;IAEA+oC,aAAa;AACX,WAAKH,YAAYI,MAAK;AACtB,WAAKH,eAAeG,MAAK;IAC3B;IAQA98B,iBAAiB+8B,aAAa;AAC5B,aAAOV,WAAWU,aAChB,MAAM;QAAC;UACL,YAAYA,WAAAA;UACZ;QACD;MAAC,CAAA;IACN;IASAn5B,0BAA0Bm5B,aAAap5B,YAAY;AACjD,aAAO04B,WAAW,GAAGU,WAAAA,eAA0Bp5B,UAAAA,IAC7C,MAAM;QACJ;UACE,YAAYo5B,WAAAA,gBAA2Bp5B,UAAAA;UACvC,eAAeA,UAAAA;QAChB;QAED;UACE,YAAYo5B,WAAAA;UACZ;QACD;MACF,CAAA;IACL;IAUA15B,wBAAwB05B,aAAa/5B,cAAa;AAChD,aAAOq5B,WAAW,GAAGU,WAAAA,IAAe/5B,YAAAA,IAClC,MAAM;QAAC;UACL,YAAY+5B,WAAAA,aAAwB/5B,YAAAA;UACpC,YAAY+5B,WAAAA;UACZ,YAAY/5B,YAAAA;UACZ;QACD;MAAC,CAAA;IACN;IAOAk3B,gBAAgBd,SAAQ;AACtB,YAAM//B,KAAK+/B,QAAO//B;AAClB,YAAMzL,OAAO,KAAKA;AAClB,aAAOyuC,WAAW,GAAGzuC,IAAAA,WAAeyL,EAAAA,IAClC,MAAM;QAAC;UACL,WAAWA,EAAAA;aACR+/B,QAAO4D,0BAA0B,CAAA;QACrC;MAAC,CAAA;IACN;IAKAC,cAAcC,WAAWC,YAAY;AACnC,YAAMT,cAAc,KAAKA;AACzB,UAAIz5B,SAAQy5B,YAAY9sC,IAAIstC,SAAAA;AAC5B,UAAI,CAACj6B,UAASk6B,YAAY;AACxBl6B,QAAAA,SAAQ,oBAAI7V,IAAAA;AACZsvC,oBAAY3sC,IAAImtC,WAAWj6B,MAAAA;;AAE7B,aAAOA;IACT;IAQA/C,gBAAgBg9B,WAAWE,UAAUD,YAAY;AAC/C,YAAM,EAACloC,SAASrH,KAAI,IAAI;AACxB,YAAMqV,SAAQ,KAAKg6B,cAAcC,WAAWC,UAAAA;AAC5C,YAAMnhC,SAASiH,OAAMrT,IAAIwtC,QAAAA;AACzB,UAAIphC,QAAQ;AACV,eAAOA;;AAGT,YAAMiE,SAAS,oBAAIm8B,IAAAA;AAEnBgB,eAASnvC,QAAQoG,CAAAA,SAAQ;AACvB,YAAI6oC,WAAW;AACbj9B,iBAAO7P,IAAI8sC,SAAAA;AACX7oC,eAAKpG,QAAQyG,CAAAA,QAAO6nC,WAAWt8B,QAAQi9B,WAAWxoC,GAAAA,CAAAA;;AAEpDL,aAAKpG,QAAQyG,CAAAA,QAAO6nC,WAAWt8B,QAAQhL,SAASP,GAAAA,CAAAA;AAChDL,aAAKpG,QAAQyG,CAAAA,QAAO6nC,WAAWt8B,QAAQ+J,UAAUpc,IAAAA,KAAS,CAAA,GAAI8G,GAAAA,CAAAA;AAC9DL,aAAKpG,QAAQyG,CAAAA,QAAO6nC,WAAWt8B,QAAQ3L,UAAUI,GAAAA,CAAAA;AACjDL,aAAKpG,QAAQyG,CAAAA,QAAO6nC,WAAWt8B,QAAQ2P,aAAalb,GAAAA,CAAAA;MACtD,CAAA;AAEA,YAAMsmB,QAAQjiB,MAAM7H,KAAK+O,MAAAA;AACzB,UAAI+a,MAAM9rB,WAAW,GAAG;AACtB8rB,cAAM7qB,KAAKiE,uBAAOwhC,OAAO,IAAI,CAAA;;AAE/B,UAAIuG,WAAW9rC,IAAI+sC,QAAW,GAAA;AAC5Bn6B,QAAAA,OAAMlT,IAAIqtC,UAAUpiB,KAAAA;;AAEtB,aAAOA;IACT;IAMAqiB,oBAAoB;AAClB,YAAM,EAACpoC,SAASrH,KAAI,IAAI;AAExB,aAAO;QACLqH;QACA+U,UAAUpc,IAAK,KAAI,CAAA;QACnB0G,SAAS0K,SAASpR,IAAK,KAAI,CAAA;QAC3B;UAACA;QAAI;QACL0G;QACAsb;MACD;IACH;IASApM,oBAAoBvD,QAAQsD,QAAOT,SAASQ,WAAW;MAAC;OAAK;AAC3D,YAAM0U,SAAS;QAAC3iB,SAAS;MAAI;AAC7B,YAAM,EAACioC,UAAUC,YAAW,IAAIC,YAAY,KAAKb,gBAAgB18B,QAAQqD,QAAAA;AACzE,UAAIrO,UAAUqoC;AACd,UAAIG,YAAYH,UAAU/5B,MAAQ,GAAA;AAChCyU,eAAO3iB,UAAU;AACjByN,kBAAU46B,YAAW56B,OAAWA,IAAAA,QAAAA,IAAYA;AAE5C,cAAM66B,cAAc,KAAKx9B,eAAeF,QAAQ6C,SAASy6B,WAAAA;AACzDtoC,kBAAU2oC,eAAeN,UAAUx6B,SAAS66B,WAAAA;;AAG9C,iBAAW3rC,QAAQuR,QAAO;AACxByU,eAAOhmB,IAAAA,IAAQiD,QAAQjD,IAAK;MAC9B;AACA,aAAOgmB;IACT;IAQA7X,eAAeF,QAAQ6C,SAASQ,WAAW;MAAC;IAAG,GAAEu6B,oBAAoB;AACnE,YAAM,EAACP,SAAAA,IAAYE,YAAY,KAAKb,gBAAgB18B,QAAQqD,QAAAA;AAC5D,aAAOpP,UAAS4O,OACZ86B,IAAAA,eAAeN,UAAUx6B,SAASvV,QAAWswC,kBAAAA,IAC7CP;IACN;EACF;AAEA,WAASE,YAAYM,eAAe79B,QAAQqD,UAAU;AACpD,QAAIL,SAAQ66B,cAAcluC,IAAIqQ,MAAAA;AAC9B,QAAI,CAACgD,QAAO;AACVA,MAAAA,SAAQ,oBAAI7V,IAAAA;AACZ0wC,oBAAc/tC,IAAIkQ,QAAQgD,MAAAA;;AAE5B,UAAMC,WAAWI,SAAS0zB,KAAI;AAC9B,QAAIh7B,SAASiH,OAAMrT,IAAIsT,QAAAA;AACvB,QAAI,CAAClH,QAAQ;AACX,YAAMshC,WAAWS,gBAAgB99B,QAAQqD,QAAAA;AACzCtH,eAAS;QACPshC;QACAC,aAAaj6B,SAASpI,OAAO8iC,CAAAA,OAAK,CAACA,GAAEjD,YAAW,EAAGlf,SAAS,OAAA,CAAA;MAC9D;AACA5Y,MAAAA,OAAMlT,IAAImT,UAAUlH,MAAAA;;AAEtB,WAAOA;EACT;AAEA,MAAMiiC,cAActoC,CAAAA,UAASzB,UAASyB,KAAAA,KACjCvB,OAAOK,oBAAoBkB,KAAOkkC,EAAAA,KAAK,CAACnlC,QAAQgpC,YAAW/nC,MAAMjB,GAAI,CAAA,CAAA;AAE1E,WAAS+oC,YAAYtZ,OAAO5gB,QAAO;AACjC,UAAM,EAAC26B,cAAcC,YAAW,IAAIjF,aAAa/U,KAAAA;AAEjD,eAAWnyB,QAAQuR,QAAO;AACxB,YAAM42B,aAAa+D,aAAalsC,IAAAA;AAChC,YAAMooC,YAAY+D,YAAYnsC,IAAAA;AAC9B,YAAM2D,SAASykC,aAAaD,eAAehW,MAAMnyB,IAAK;AACtD,UAAKmoC,eAAeuD,YAAW/nC,KAAAA,KAAUsoC,YAAYtoC,KAAK,MACpDykC,aAAaxlC,SAAQe,KAAS,GAAA;AAClC,eAAO;;IAEX;AACA,WAAO;EACT;;AC9YA,MAAMyoC,kBAAkB;IAAC;IAAO;IAAU;IAAQ;IAAS;EAAY;AACvE,WAASC,qBAAqB3lB,UAAU9f,MAAM;AAC5C,WAAO8f,aAAa,SAASA,aAAa,YAAa0lB,gBAAgB1yB,QAAQgN,QAAAA,MAAc,MAAM9f,SAAS;EAC9G;AAEA,WAAS0lC,cAAcC,IAAIC,KAAI;AAC7B,WAAO,SAASh4B,IAAGrP,IAAG;AACpB,aAAOqP,GAAE+3B,EAAG,MAAKpnC,GAAEonC,EAAAA,IACf/3B,GAAEg4B,GAAAA,IAAMrnC,GAAEqnC,GAAAA,IACVh4B,GAAE+3B,EAAG,IAAGpnC,GAAEonC,EAAG;IACnB;EACF;AAEA,WAASE,qBAAqB37B,SAAS;AACrC,UAAMrV,QAAQqV,QAAQrV;AACtB,UAAM0G,mBAAmB1G,MAAMwH,QAAQV;AAEvC9G,UAAMu/B,cAAc,aAAA;AACpBqM,aAAallC,oBAAoBA,iBAAiBuqC,YAAY;MAAC57B;OAAUrV,KAAAA;EAC3E;AAEA,WAASkxC,oBAAoB77B,SAAS;AACpC,UAAMrV,QAAQqV,QAAQrV;AACtB,UAAM0G,mBAAmB1G,MAAMwH,QAAQV;AACvC8kC,aAAallC,oBAAoBA,iBAAiByqC,YAAY;MAAC97B;OAAUrV,KAAAA;EAC3E;AAMA,WAASoxC,UAAUxvC,MAAM;AACvB,QAAIy1B,gBAAAA,KAAqB,OAAOz1B,SAAS,UAAU;AACjDA,aAAOuzB,SAASkc,eAAezvC,IAAAA;IACjC,WAAWA,QAAQA,KAAKH,QAAQ;AAE9BG,aAAOA,KAAK,CAAE;;AAGhB,QAAIA,QAAQA,KAAKswB,QAAQ;AAEvBtwB,aAAOA,KAAKswB;;AAEd,WAAOtwB;EACT;AAEA,MAAM0vC,YAAY,CAAA;AAClB,MAAMC,WAAW,CAACtqC,QAAQ;AACxB,UAAMirB,SAASkf,UAAUnqC,GAAAA;AACzB,WAAON,OAAOW,OAAOgqC,SAAAA,EAAW7jC,OAAO,CAAC+jC,OAAMA,GAAEtf,WAAWA,MAAAA,EAAQlwB,IAAG;EACxE;AAEA,WAASyvC,gBAAgB50B,KAAK/b,QAAO2W,MAAM;AACzC,UAAM7Q,OAAOD,OAAOC,KAAKiW,GAAAA;AACzB,eAAW5V,OAAOL,MAAM;AACtB,YAAM8qC,SAAS,CAACzqC;AAChB,UAAIyqC,UAAU5wC,QAAO;AACnB,cAAMoH,QAAQ2U,IAAI5V,GAAI;AACtB,eAAO4V,IAAI5V,GAAI;AACf,YAAIwQ,OAAO,KAAKi6B,SAAS5wC,QAAO;AAC9B+b,cAAI60B,SAASj6B,IAAAA,IAAQvP;;;IAG3B;EACF;AASA,WAASypC,mBAAmBpuB,IAAGquB,WAAWC,aAAaC,SAAS;AAC9D,QAAI,CAACD,eAAetuB,GAAEpjB,SAAS,YAAY;AACzC,aAAO;;AAET,QAAI2xC,SAAS;AACX,aAAOF;;AAET,WAAOruB;EACT;AAEA,MAAMwuB,SAAN,MAAMA;IAEJ,OAAOlrC,WAAWA;IAClB,OAAOyqC,YAAYA;IACnB,OAAO/0B,YAAYA;IACnB,OAAOyM,WAAWA;IAClB,OAAOgpB,UAAUA;IACjB,OAAOT,WAAWA;IAElB,OAAOjJ,YAAY9mC,OAAO;AACxBwnB,eAASrmB,IAAOnB,GAAAA,KAAAA;AAChBywC,wBAAAA;IACF;IAEA,OAAOrJ,cAAcpnC,OAAO;AAC1BwnB,eAAS5lB,OAAU5B,GAAAA,KAAAA;AACnBywC,wBAAAA;IACF;IAGAzyC,YAAYoC,MAAMswC,YAAY;AAC5B,YAAM7rC,UAAS,KAAKA,SAAS,IAAI0oC,QAAOmD,UAAAA;AACxC,YAAMC,gBAAgBf,UAAUxvC,IAAAA;AAChC,YAAMwwC,gBAAgBb,SAASY,aAAAA;AAC/B,UAAIC,eAAe;AACjB,cAAM,IAAIjpB,MACR,8CAA+CipB,cAAcxmC,KAAK,oDAClBwmC,cAAclgB,OAAOtmB,KAAK,kBAC1E;;AAGJ,YAAMpE,UAAUnB,QAAOqM,eAAerM,QAAOupC,kBAAiB,GAAI,KAAKj9B,WAAU,CAAA;AAEjF,WAAKw8B,WAAW,KAAK9oC,QAAO8oC,YAAY/X,gBAAgB+a,aAAa,GAAA;AACrE,WAAKhD,SAASzc,aAAarsB,OAAAA;AAE3B,YAAMgP,UAAU,KAAK85B,SAASld,eAAekgB,eAAe3qC,QAAQ+a,WAAW;AAC/E,YAAM2P,SAAS7c,WAAWA,QAAQ6c;AAClC,YAAM3U,SAAS2U,UAAUA,OAAO3U;AAChC,YAAMC,QAAQ0U,UAAUA,OAAO1U;AAE/B,WAAK5R,KAAKymC,IAAAA;AACV,WAAKpjC,MAAMoG;AACX,WAAK6c,SAASA;AACd,WAAK1U,QAAQA;AACb,WAAKD,SAASA;AACd,WAAK+0B,WAAW9qC;AAIhB,WAAK+qC,eAAe,KAAKhwB;AACzB,WAAK8O,UAAU,CAAA;AACf,WAAKmhB,YAAY,CAAA;AACjB,WAAKzlC,UAAUjN;AACf,WAAKguB,QAAQ,CAAA;AACb,WAAK+H,0BAA0B/1B;AAC/B,WAAKkV,YAAYlV;AACjB,WAAK+B,UAAU,CAAA;AACf,WAAK4wC,aAAa3yC;AAClB,WAAK4yC,aAAa,CAAA;AAElB,WAAKC,uBAAuB7yC;AAC5B,WAAK8yC,kBAAkB,CAAA;AACvB,WAAKplC,SAAS,CAAA;AACd,WAAKqlC,WAAW,IAAIzH,cAAAA;AACpB,WAAKrU,WAAW,CAAA;AAChB,WAAK+b,iBAAiB,CAAA;AACtB,WAAKC,WAAW;AAChB,WAAKv8B,sBAAsB1W;AAC3B,WAAK+P,WAAW/P;AAChB,WAAKkzC,YAAYC,UAAS1oC,CAAAA,SAAQ,KAAK7E,OAAO6E,IAAO/C,GAAAA,QAAQ0rC,eAAe,CAAA;AAC5E,WAAKl7B,eAAe,CAAA;AAGpBs5B,gBAAU,KAAK1lC,EAAE,IAAI;AAErB,UAAI,CAACyJ,WAAW,CAAC6c,QAAQ;AAKvB9hB,gBAAQ49B,MAAM,mEAAA;AACd;;AAGF3lC,eAAS9F,OAAO,MAAM,YAAYyuC,oBAAAA;AAClC3oC,eAAS9F,OAAO,MAAM,YAAY2uC,mBAAAA;AAElC,WAAKiC,YAAW;AAChB,UAAI,KAAKJ,UAAU;AACjB,aAAKrtC,OAAM;;IAEf;IAEA,IAAI6c,cAAc;AAChB,YAAM,EAAC/a,SAAS,EAAC+a,aAAa6wB,oBAAAA,GAAsB51B,OAAOD,QAAQg1B,aAAY,IAAI;AACnF,UAAI,CAACz4B,cAAcyI,WAAc,GAAA;AAE/B,eAAOA;;AAGT,UAAI6wB,uBAAuBb,cAAc;AAEvC,eAAOA;;AAIT,aAAOh1B,SAASC,QAAQD,SAAS;IACnC;IAEA,IAAIzS,OAAO;AACT,aAAO,KAAKzE,OAAOyE;IACrB;IAEA,IAAIA,KAAKA,MAAM;AACb,WAAKzE,OAAOyE,OAAOA;IACrB;IAEA,IAAItD,UAAU;AACZ,aAAO,KAAK8qC;IACd;IAEA,IAAI9qC,QAAQA,SAAS;AACnB,WAAKnB,OAAOmB,UAAUA;IACxB;IAEA,IAAIwhB,WAAW;AACb,aAAOA;IACT;IAKAmqB,cAAc;AAEZ,WAAK5T,cAAc,YAAA;AAEnB,UAAI,KAAK/3B,QAAQ6rC,YAAY;AAC3B,aAAKzd,OAAM;aACN;AACL0d,oBAAY,MAAM,KAAK9rC,QAAQmuB,gBAAgB;;AAGjD,WAAK4d,WAAU;AAGf,WAAKhU,cAAc,WAAA;AAEnB,aAAO;IACT;IAEA8P,QAAQ;AACNmE,kBAAY,KAAKthB,QAAQ,KAAKjjB,GAAG;AACjC,aAAO;IACT;IAEA/L,OAAO;AACLmF,eAASnF,KAAK,IAAI;AAClB,aAAO;IACT;IAOA0yB,OAAOpY,OAAOD,QAAQ;AACpB,UAAI,CAAClV,SAAS9G,QAAQ,IAAI,GAAG;AAC3B,aAAKkyC,QAAQj2B,OAAOD,MAAAA;aACf;AACL,aAAKm2B,oBAAoB;UAACl2B;UAAOD;QAAM;;IAE3C;IAEAk2B,QAAQj2B,OAAOD,QAAQ;AACrB,YAAM/V,UAAU,KAAKA;AACrB,YAAM0qB,SAAS,KAAKA;AACpB,YAAM3P,cAAc/a,QAAQ4rC,uBAAuB,KAAK7wB;AACxD,YAAMoxB,UAAU,KAAKxE,SAAS3c,eAAeN,QAAQ1U,OAAOD,QAAQgF,WAAAA;AACpE,YAAMqxB,WAAWpsC,QAAQmuB,oBAAoB,KAAKwZ,SAAS5c,oBAAmB;AAC9E,YAAMhoB,OAAO,KAAKiT,QAAQ,WAAW;AAErC,WAAKA,QAAQm2B,QAAQn2B;AACrB,WAAKD,SAASo2B,QAAQp2B;AACtB,WAAKg1B,eAAe,KAAKhwB;AACzB,UAAI,CAAC+wB,YAAY,MAAMM,UAAU,IAAI,GAAG;AACtC;;AAGF,WAAKrU,cAAc,UAAU;QAACp3B,MAAMwrC;MAAO,CAAA;AAE3C/H,eAAapkC,QAAQqsC,UAAU;QAAC;QAAMF;MAAQ,GAAE,IAAI;AAEpD,UAAI,KAAKZ,UAAU;AACjB,YAAI,KAAKC,UAAUzoC,IAAO,GAAA;AAExB,eAAKupC,OAAM;;;IAGjB;IAEAC,sBAAsB;AACpB,YAAMvsC,UAAU,KAAKA;AACrB,YAAMwsC,gBAAgBxsC,QAAQgG,UAAU,CAAA;AAExCqkB,WAAKmiB,eAAe,CAACC,aAAax0B,WAAW;AAC3Cw0B,oBAAYroC,KAAK6T;MACnB,CAAA;IACF;IAKAy0B,sBAAsB;AACpB,YAAM1sC,UAAU,KAAKA;AACrB,YAAM2sC,YAAY3sC,QAAQgG;AAC1B,YAAMA,UAAS,KAAKA;AACpB,YAAM4mC,UAAUztC,OAAOC,KAAK4G,OAAAA,EAAQ3K,OAAO,CAACga,KAAKjR,OAAO;AACtDiR,YAAIjR,EAAG,IAAG;AACV,eAAOiR;MACT,GAAG,CAAA,CAAC;AACJ,UAAIrb,QAAQ,CAAA;AAEZ,UAAI2yC,WAAW;AACb3yC,gBAAQA,MAAMoX,OACZjS,OAAOC,KAAKutC,SAAWvxB,EAAAA,IAAI,CAAChX,OAAO;AACjC,gBAAMyhC,eAAe8G,UAAUvoC,EAAG;AAClC,gBAAMT,OAAOiiC,cAAcxhC,IAAIyhC,YAAAA;AAC/B,gBAAMgH,WAAWlpC,SAAS;AAC1B,gBAAMgQ,eAAehQ,SAAS;AAC9B,iBAAO;YACL3D,SAAS6lC;YACTiH,WAAWD,WAAW,cAAcl5B,eAAe,WAAW;YAC9Do5B,OAAOF,WAAW,iBAAiBl5B,eAAe,aAAa;UACjE;QACF,CAAA,CAAA;;AAIJ0W,WAAKrwB,OAAO,CAACI,SAAS;AACpB,cAAMyrC,eAAezrC,KAAK4F;AAC1B,cAAMoE,KAAKyhC,aAAazhC;AACxB,cAAMT,OAAOiiC,cAAcxhC,IAAIyhC,YAAAA;AAC/B,cAAMmH,YAAY7jC,eAAe08B,aAAaltC,MAAMyB,KAAK2yC,KAAK;AAE9D,YAAIlH,aAAapiB,aAAanrB,UAAa8wC,qBAAqBvD,aAAapiB,UAAU9f,IAAUylC,MAAAA,qBAAqBhvC,KAAK0yC,SAAS,GAAG;AACrIjH,uBAAapiB,WAAWrpB,KAAK0yC;;AAG/BF,gBAAQxoC,EAAG,IAAG;AACd,YAAInD,QAAQ;AACZ,YAAImD,MAAM4B,WAAUA,QAAO5B,EAAAA,EAAIzL,SAASq0C,WAAW;AACjD/rC,kBAAQ+E,QAAO5B,EAAG;eACb;AACL,gBAAM6oC,aAAazrB,SAASshB,SAASkK,SAAAA;AACrC/rC,kBAAQ,IAAIgsC,WAAW;YACrB7oC;YACAzL,MAAMq0C;YACNvlC,KAAK,KAAKA;YACVjP,OAAO;UACT,CAAA;AACAwN,UAAAA,QAAO/E,MAAMmD,EAAE,IAAInD;;AAGrBA,cAAM+gB,KAAK6jB,cAAc7lC,OAAAA;MAC3B,CAAA;AAEAqqB,WAAKuiB,SAAS,CAACM,YAAY9oC,OAAO;AAChC,YAAI,CAAC8oC,YAAY;AACf,iBAAOlnC,QAAO5B,EAAG;;MAErB,CAAA;AAEAimB,WAAKrkB,SAAQ,CAAC/E,UAAU;AACtBylB,gBAAQ1nB,UAAU,MAAMiC,OAAOA,MAAMjB,OAAO;AAC5C0mB,gBAAQkD,OAAO,MAAM3oB,KAAAA;MACvB,CAAA;IACF;IAKAksC,kBAAkB;AAChB,YAAM5qC,WAAW,KAAKyoC;AACtB,YAAMl7B,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,eAAKkzC,oBAAoBlzC,EAAAA;QAC3B;AACAqI,iBAAS8N,OAAOP,SAASD,UAAUC,OAAAA;;AAErC,WAAKs7B,kBAAkB7oC,SAAS0gB,MAAM,CAAG3R,EAAAA,KAAK+3B,cAAc,SAAS,OAAA,CAAA;IACvE;IAKAgE,8BAA8B;AAC5B,YAAM,EAACrC,WAAWzoC,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,KAAKqb,QAAQ,EAAE3kB,WAAW,GAAG;AAC1D,eAAKmzC,oBAAoB1qC,MAAAA;;MAE7B,CAAA;IACF;IAEA4qC,2BAA2B;AACzB,YAAMC,iBAAiB,CAAA;AACvB,YAAMxjC,WAAW,KAAKzG,KAAKyG;AAC3B,UAAI7P,IAAGuI;AAEP,WAAK4qC,4BAA2B;AAEhC,WAAKnzC,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,eAAKy0C,oBAAoBlzC,EAAAA;AACzBqJ,iBAAO,KAAKyG,eAAe9P,EAAAA;;AAE7BqJ,aAAK5K,OAAOA;AACZ4K,aAAKiG,YAAYlD,QAAQkD,aAAa67B,aAAa1sC,MAAM,KAAKqH,OAAO;AACrEuD,aAAKiqC,QAAQlnC,QAAQknC,SAAS;AAC9BjqC,aAAKb,QAAQxI;AACbqJ,aAAK2J,QAAQ,KAAK5G,QAAQ4G;AAC1B3J,aAAKkqC,UAAU,KAAKhxB,iBAAiBviB,EAAAA;AAErC,YAAIqJ,KAAK6B,YAAY;AACnB7B,eAAK6B,WAAW0D,YAAY5O,EAAAA;AAC5BqJ,eAAK6B,WAAWoD,WAAU;eACrB;AACL,gBAAMklC,kBAAkBlsB,SAASmhB,cAAchqC,IAAAA;AAC/C,gBAAM,EAAC2O,oBAAoBC,gBAAAA,IAAmBlI,SAAS0K,SAASpR,IAAK;AACrEwG,iBAAOyB,OAAO8sC,iBAAiB;YAC7BnmC,iBAAiBia,SAASC,WAAWla,eAAAA;YACrCD,oBAAoBA,sBAAsBka,SAASC,WAAWna,kBAAAA;UAChE,CAAA;AACA/D,eAAK6B,aAAa,IAAIsoC,gBAAgB,MAAMxzC,EAAAA;AAC5CqzC,yBAAeryC,KAAKqI,KAAK6B,UAAU;;MAEvC;AAEA,WAAK+nC,gBAAe;AACpB,aAAOI;IACT;IAMAI,iBAAiB;AACftjB,WAAK,KAAK/mB,KAAKyG,UAAU,CAACzD,SAAStD,iBAAiB;AAClD,aAAKgH,eAAehH,YAAcoC,EAAAA,WAAW+E,MAAK;MACpD,GAAG,IAAI;IACT;IAKAA,QAAQ;AACN,WAAKwjC,eAAc;AACnB,WAAK5V,cAAc,OAAA;IACrB;IAEA75B,OAAO6E,MAAM;AACX,YAAMlE,UAAS,KAAKA;AAEpBA,MAAAA,QAAOX,OAAM;AACb,YAAM8B,UAAU,KAAK8qC,WAAWjsC,QAAOqM,eAAerM,QAAOupC,kBAAiB,GAAI,KAAKj9B,WAAU,CAAA;AACjG,YAAMyiC,gBAAgB,KAAK5+B,sBAAsB,CAAChP,QAAQV;AAE1D,WAAKuuC,cAAa;AAClB,WAAKC,oBAAmB;AACxB,WAAKC,qBAAoB;AAIzB,WAAK1C,SAAS/G,WAAU;AAExB,UAAI,KAAKvM,cAAc,gBAAgB;QAACh1B;QAAMshC,YAAY;MAAI,CAAA,MAAO,OAAO;AAC1E;;AAIF,YAAMkJ,iBAAiB,KAAKD,yBAAwB;AAEpD,WAAKvV,cAAc,sBAAA;AAGnB,UAAI9N,aAAa;AACjB,eAAS/vB,KAAI,GAAGuI,OAAO,KAAKa,KAAKyG,SAAS9P,QAAQC,KAAIuI,MAAMvI,MAAK;AAC/D,cAAM,EAACkL,WAAU,IAAI,KAAK4E,eAAe9P,EAAAA;AACzC,cAAMiQ,QAAQ,CAACyjC,iBAAiBL,eAAe92B,QAAQrR,UAAAA,MAAgB;AAGvEA,mBAAWqF,sBAAsBN,KAAAA;AACjC8f,qBAAa7wB,KAAKoC,IAAI,CAAC4J,WAAW4H,eAAc,GAAIid,UAAAA;MACtD;AACAA,mBAAa,KAAK+jB,cAAchuC,QAAQmnB,OAAO8mB,cAAchkB,aAAa;AAC1E,WAAKikB,cAAcjkB,UAAAA;AAGnB,UAAI,CAAC2jB,eAAe;AAGlBvjB,aAAKkjB,gBAAgB,CAACnoC,eAAe;AACnCA,qBAAW+E,MAAK;QAClB,CAAA;;AAGF,WAAKgkC,gBAAgBprC,IAAAA;AAGrB,WAAKg1B,cAAc,eAAe;QAACh1B;MAAI,CAAA;AAEvC,WAAK8mB,QAAQvY,KAAK+3B,cAAc,KAAK,MAAA,CAAA;AAGrC,YAAM,EAAChvC,SAAS4wC,WAAU,IAAI;AAC9B,UAAIA,YAAY;AACd,aAAKmD,cAAcnD,YAAY,IAAI;iBAC1B5wC,QAAQJ,QAAQ;AACzB,aAAKo0C,mBAAmBh0C,SAASA,SAAS,IAAI;;AAGhD,WAAKiyC,OAAM;IACb;IAKAuB,gBAAgB;AACdxjB,WAAK,KAAKrkB,QAAQ,CAAC/E,UAAU;AAC3BylB,gBAAQqD,UAAU,MAAM9oB,KAAAA;MAC1B,CAAA;AAEA,WAAKsrC,oBAAmB;AACxB,WAAKG,oBAAmB;IAC1B;IAKAoB,sBAAsB;AACpB,YAAM9tC,UAAU,KAAKA;AACrB,YAAMsuC,iBAAiB,IAAInH,IAAIhoC,OAAOC,KAAK,KAAK8rC,UAAU,CAAA;AAC1D,YAAMqD,YAAY,IAAIpH,IAAInnC,QAAQwuC,MAAM;AAExC,UAAI,CAACC,UAAUH,gBAAgBC,SAAAA,KAAc,CAAC,CAAC,KAAKpD,yBAAyBnrC,QAAQ6rC,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,EAACjwC,QAAQrF,OAAAA,QAAOgS,MAAAA,KAAUqjC,SAAS;AAC5C,cAAM1+B,OAAOtR,WAAW,oBAAoB,CAAC2M,QAAQA;AACrD2+B,wBAAgBqB,gBAAgBhyC,QAAO2W,IAAAA;MACzC;IACF;IAKA2+B,yBAAyB;AACvB,YAAMp+B,eAAe,KAAKA;AAC1B,UAAI,CAACA,gBAAgB,CAACA,aAAavW,QAAQ;AACzC;;AAGF,WAAKuW,eAAe,CAAA;AACpB,YAAMq+B,eAAe,KAAKvrC,KAAKyG,SAAS9P;AACxC,YAAM60C,UAAU,CAAC9T,QAAQ,IAAImM,IAC3B32B,aACGvK,OAAO+jC,CAAAA,OAAKA,GAAE,CAAA,MAAOhP,GAAAA,EACrB5f,IAAI,CAAC4uB,IAAG9vC,OAAMA,KAAI,MAAM8vC,GAAE35B,OAAO,CAAG0xB,EAAAA,KAAK,GAAA,CAAA,CAAA;AAG9C,YAAMgN,YAAYD,QAAQ,CAAA;AAC1B,eAAS50C,KAAI,GAAGA,KAAI20C,cAAc30C,MAAK;AACrC,YAAI,CAACu0C,UAAUM,WAAWD,QAAQ50C,EAAK,CAAA,GAAA;AACrC;;MAEJ;AACA,aAAO4J,MAAM7H,KAAK8yC,SACf3zB,EAAAA,IAAI4uB,CAAAA,OAAKA,GAAEpI,MAAM,GACjBxmB,CAAAA,EAAAA,IAAI7J,CAAAA,QAAM;QAAC5S,QAAQ4S,GAAE,CAAE;QAAEjY,OAAO,CAACiY,GAAE,CAAE;QAAEjG,OAAO,CAACiG,GAAE,CAAE;QAAA;IACxD;IAOA28B,cAAcjkB,YAAY;AACxB,UAAI,KAAK8N,cAAc,gBAAgB;QAACsM,YAAY;MAAI,CAAA,MAAO,OAAO;AACpE;;AAGF3d,cAAQxoB,OAAO,MAAM,KAAK8X,OAAO,KAAKD,QAAQkU,UAAAA;AAE9C,YAAM1c,OAAO,KAAKC;AAClB,YAAMwhC,SAASzhC,KAAKyI,SAAS,KAAKzI,KAAKwI,UAAU;AAEjD,WAAK8T,UAAU,CAAA;AACfQ,WAAK,KAAK/D,OAAO,CAACJ,QAAQ;AACxB,YAAI8oB,UAAU9oB,IAAIzC,aAAa,aAAa;AAE1C;;AAKF,YAAIyC,IAAIlnB,WAAW;AACjBknB,cAAIlnB,UAAS;;AAEf,aAAK6qB,QAAQ3uB,KAAI,GAAIgrB,IAAI2D,QAAO,CAAA;MAClC,GAAG,IAAI;AAEP,WAAKA,QAAQ7wB,QAAQ,CAACoB,MAAMsI,WAAU;AACpCtI,aAAK60C,OAAOvsC;MACd,CAAA;AAEA,WAAKq1B,cAAc,aAAA;IACrB;IAOAoW,gBAAgBprC,MAAM;AACpB,UAAI,KAAKg1B,cAAc,wBAAwB;QAACh1B;QAAMshC,YAAY;MAAI,CAAA,MAAO,OAAO;AAClF;;AAGF,eAASnqC,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,aAAKg1C,eAAeh1C,IAAGuuC,YAAW1lC,IAAAA,IAAQA,KAAK;UAACC,cAAc9I;QAAC,CAAA,IAAK6I,IAAI;MAC1E;AAEA,WAAKg1B,cAAc,uBAAuB;QAACh1B;MAAI,CAAA;IACjD;IAOAmsC,eAAexsC,QAAOK,MAAM;AAC1B,YAAMQ,OAAO,KAAKyG,eAAetH,MAAAA;AACjC,YAAM6N,OAAO;QAAChN;QAAMb,OAAAA;QAAOK;QAAMshC,YAAY;MAAI;AAEjD,UAAI,KAAKtM,cAAc,uBAAuBxnB,IAAAA,MAAU,OAAO;AAC7D;;AAGFhN,WAAK6B,WAAWzL,QAAQoJ,IAAAA;AAExBwN,WAAK8zB,aAAa;AAClB,WAAKtM,cAAc,sBAAsBxnB,IAAAA;IAC3C;IAEA+7B,SAAS;AACP,UAAI,KAAKvU,cAAc,gBAAgB;QAACsM,YAAY;MAAI,CAAA,MAAO,OAAO;AACpE;;AAGF,UAAIxjC,SAASzF,IAAI,IAAI,GAAG;AACtB,YAAI,KAAKmwC,YAAY,CAAC1qC,SAAS9G,QAAQ,IAAI,GAAG;AAC5C8G,mBAASvH,MAAM,IAAI;;aAEhB;AACL,aAAKa,KAAI;AACTqvC,6BAAqB;UAAChxC,OAAO;QAAI,CAAA;;IAErC;IAEA2B,OAAO;AACL,UAAID;AACJ,UAAI,KAAKgyC,mBAAmB;AAC1B,cAAM,EAACl2B,OAAOD,OAAAA,IAAU,KAAKm2B;AAE7B,aAAKA,oBAAoB;AACzB,aAAKD,QAAQj2B,OAAOD,MAAAA;;AAEtB,WAAK8xB,MAAK;AAEV,UAAI,KAAK7xB,SAAS,KAAK,KAAKD,UAAU,GAAG;AACvC;;AAGF,UAAI,KAAKgiB,cAAc,cAAc;QAACsM,YAAY;MAAI,CAAA,MAAO,OAAO;AAClE;;AAMF,YAAM8K,SAAS,KAAKtlB;AACpB,WAAK3vB,KAAI,GAAGA,KAAIi1C,OAAOl1C,UAAUk1C,OAAOj1C,EAAAA,EAAG4vB,KAAK,GAAG,EAAE5vB,IAAG;AACtDi1C,eAAOj1C,EAAE,EAACC,KAAK,KAAKqT,SAAS;MAC/B;AAEA,WAAK4hC,cAAa;AAGlB,aAAOl1C,KAAIi1C,OAAOl1C,QAAQ,EAAEC,IAAG;AAC7Bi1C,eAAOj1C,EAAE,EAACC,KAAK,KAAKqT,SAAS;MAC/B;AAEA,WAAKuqB,cAAc,WAAA;IACrB;IAKAv1B,uBAAuBF,eAAe;AACpC,YAAMC,WAAW,KAAK6oC;AACtB,YAAMroB,SAAS,CAAA;AACf,UAAI7oB,IAAGuI;AAEP,WAAKvI,KAAI,GAAGuI,OAAOF,SAAStI,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAMqJ,OAAOhB,SAASrI,EAAE;AACxB,YAAI,CAACoI,iBAAiBiB,KAAKkqC,SAAS;AAClC1qB,iBAAO7nB,KAAKqI,IAAAA;;MAEhB;AAEA,aAAOwf;IACT;IAMAY,+BAA+B;AAC7B,aAAO,KAAKnhB,uBAAuB,IAAI;IACzC;IAOA4sC,gBAAgB;AACd,UAAI,KAAKrX,cAAc,sBAAsB;QAACsM,YAAY;MAAI,CAAA,MAAO,OAAO;AAC1E;;AAGF,YAAM9hC,WAAW,KAAKohB,6BAA4B;AAClD,eAASzpB,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,aAAKm1C,aAAa9sC,SAASrI,EAAE,CAAA;MAC/B;AAEA,WAAK69B,cAAc,mBAAA;IACrB;IAOAsX,aAAa9rC,MAAM;AACjB,YAAMkE,MAAM,KAAKA;AACjB,YAAM8I,OAAO;QACXhN;QACAb,OAAOa,KAAKb;QACZ2hC,YAAY;MACd;AAEA,YAAMh3B,OAAOiiC,mBAAmB,MAAM/rC,IAAAA;AAEtC,UAAI,KAAKw0B,cAAc,qBAAqBxnB,IAAAA,MAAU,OAAO;AAC3D;;AAGF,UAAIlD,MAAM;AACR0yB,iBAASt4B,KAAK4F,IAAAA;;AAGhB9J,WAAK6B,WAAWjL,KAAI;AAEpB,UAAIkT,MAAM;AACR6yB,mBAAWz4B,GAAAA;;AAGb8I,WAAK8zB,aAAa;AAClB,WAAKtM,cAAc,oBAAoBxnB,IAAAA;IACzC;IAOAkU,cAAcjM,OAAO;AACnB,aAAOmM,eAAenM,OAAO,KAAKhL,WAAW,KAAKwgC,WAAW;IAC/D;IAEAuB,0BAA0BxzB,IAAGhZ,MAAM/C,SAASukB,kBAAkB;AAC5D,YAAM5lB,SAAS6wC,YAAY9pB,MAAM3iB,IAAK;AACtC,UAAI,OAAOpE,WAAW,YAAY;AAChC,eAAOA,OAAO,MAAMod,IAAG/b,SAASukB,gBAAAA;;AAGlC,aAAO,CAAA;IACT;IAEAva,eAAehH,cAAc;AAC3B,YAAMsD,UAAU,KAAKhD,KAAKyG,SAAS/G,YAAa;AAChD,YAAMT,WAAW,KAAKyoC;AACtB,UAAIznC,OAAOhB,SAAS0D,OAAOxE,CAAAA,OAAKA,MAAKA,GAAEmd,aAAatY,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;UACTmkC,OAAOlnC,WAAWA,QAAQknC,SAAS;UACnC9qC,OAAOM;UACP4b,UAAUtY;UACVM,SAAS,CAAA;UACT4E,SAAS;QACX;AACAjJ,iBAASrH,KAAKqI,IAAAA;;AAGhB,aAAOA;IACT;IAEA4H,aAAa;AACX,aAAO,KAAK9C,aAAa,KAAKA,WAAWhC,cAAc,MAAM;QAAC7N,OAAO;QAAMG,MAAM;OAAQ;IAC3F;IAEA6nB,yBAAyB;AACvB,aAAO,KAAKmD,6BAA4B,EAAG1pB;IAC7C;IAEAwiB,iBAAiBzZ,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;IAEAsoC,qBAAqBzsC,cAAcyqC,SAAS;AAC1C,YAAMlqC,OAAO,KAAKyG,eAAehH,YAAAA;AACjCO,WAAK4D,SAAS,CAACsmC;IACjB;IAEAxxB,qBAAqBvZ,QAAO;AAC1B,WAAK4oC,eAAe5oC,MAAM,IAAG,CAAC,KAAK4oC,eAAe5oC,MAAM;IAC1D;IAEA6U,kBAAkB7U,QAAO;AACvB,aAAO,CAAC,KAAK4oC,eAAe5oC,MAAM;IACpC;IAKAgtC,kBAAkB1sC,cAAcyD,WAAWgnC,SAAS;AAClD,YAAM1qC,OAAO0qC,UAAU,SAAS;AAChC,YAAMlqC,OAAO,KAAKyG,eAAehH,YAAAA;AACjC,YAAMvK,QAAQ8K,KAAK6B,WAAWqJ,mBAAmBnW,QAAWyK,IAAAA;AAE5D,UAAIoL,QAAQ1H,SAAY,GAAA;AACtBlD,aAAKD,KAAKmD,SAAAA,EAAWU,SAAS,CAACsmC;AAC/B,aAAKvvC,OAAM;aACN;AACL,aAAKuxC,qBAAqBzsC,cAAcyqC,OAAAA;AAExCh1C,cAAMyF,OAAOqF,MAAM;UAACkqC;QAAO,CAAA;AAC3B,aAAKvvC,OAAO,CAACuJ,QAAQA,IAAIzE,iBAAiBA,eAAeD,OAAOzK,MAAS;;IAE7E;IAEAq3C,KAAK3sC,cAAcyD,WAAW;AAC5B,WAAKipC,kBAAkB1sC,cAAcyD,WAAW,KAAK;IACvD;IAEAmpC,KAAK5sC,cAAcyD,WAAW;AAC5B,WAAKipC,kBAAkB1sC,cAAcyD,WAAW,IAAI;IACtD;IAKA2mC,oBAAoBpqC,cAAc;AAChC,YAAMO,OAAO,KAAKynC,UAAUhoC,YAAa;AACzC,UAAIO,QAAQA,KAAK6B,YAAY;AAC3B7B,aAAK6B,WAAWgF,SAAQ;;AAE1B,aAAO,KAAK4gC,UAAUhoC,YAAa;IACrC;IAEA6sC,QAAQ;AACN,UAAI31C,IAAGuI;AACP,WAAK/G,KAAI;AACTmF,eAASjF,OAAO,IAAI;AAEpB,WAAK1B,KAAI,GAAGuI,OAAO,KAAKa,KAAKyG,SAAS9P,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC3D,aAAKkzC,oBAAoBlzC,EAAAA;MAC3B;IACF;IAEA41C,UAAU;AACR,WAAK/X,cAAc,eAAA;AACnB,YAAM,EAACrN,QAAQjjB,IAAG,IAAI;AAEtB,WAAKooC,MAAK;AACV,WAAKhxC,OAAO+oC,WAAU;AAEtB,UAAIld,QAAQ;AACV,aAAKgkB,aAAY;AACjB1C,oBAAYthB,QAAQjjB,GAAAA;AACpB,aAAKkgC,SAAShd,eAAeljB,GAAAA;AAC7B,aAAKijB,SAAS;AACd,aAAKjjB,MAAM;;AAGb,aAAOqiC,UAAU,KAAK1lC,EAAE;AAExB,WAAK2zB,cAAc,cAAA;IACrB;IAEAgY,iBAAiBx/B,MAAM;AACrB,aAAO,KAAKma,OAAOslB,UAAaz/B,GAAAA,IAAAA;IAClC;IAKAw7B,aAAa;AACX,WAAKkE,eAAc;AACnB,UAAI,KAAKjwC,QAAQ6rC,YAAY;AAC3B,aAAKqE,qBAAoB;aACpB;AACL,aAAK3E,WAAW;;IAEpB;IAKA0E,iBAAiB;AACf,YAAMp3C,aAAY,KAAKqyC;AACvB,YAAMvD,YAAW,KAAKA;AAEtB,YAAMwI,OAAO,CAACx3C,MAAMkyB,cAAa;AAC/B8c,QAAAA,UAAS/c,iBAAiB,MAAMjyB,MAAMkyB,SAAAA;AACtChyB,QAAAA,WAAUF,IAAAA,IAAQkyB;MACpB;AAEA,YAAMA,WAAW,CAAC9O,IAAGta,IAAGC,OAAM;AAC5Bqa,QAAAA,GAAE7C,UAAUzX;AACZsa,QAAAA,GAAE5C,UAAUzX;AACZ,aAAK0sC,cAAcryB,EAAAA;MACrB;AAEAsO,WAAK,KAAKrqB,QAAQwuC,QAAQ,CAAC71C,SAASw3C,KAAKx3C,MAAMkyB,QAAAA,CAAAA;IACjD;IAKAqlB,uBAAuB;AACrB,UAAI,CAAC,KAAK/E,sBAAsB;AAC9B,aAAKA,uBAAuB,CAAA;;AAE9B,YAAMtyC,aAAY,KAAKsyC;AACvB,YAAMxD,YAAW,KAAKA;AAEtB,YAAMwI,OAAO,CAACx3C,MAAMkyB,cAAa;AAC/B8c,QAAAA,UAAS/c,iBAAiB,MAAMjyB,MAAMkyB,SAAAA;AACtChyB,QAAAA,WAAUF,IAAAA,IAAQkyB;MACpB;AACA,YAAMulB,UAAU,CAACz3C,MAAMkyB,cAAa;AAClC,YAAIhyB,WAAUF,IAAAA,GAAO;AACnBgvC,UAAAA,UAAS7c,oBAAoB,MAAMnyB,MAAMkyB,SAAAA;AACzC,iBAAOhyB,WAAUF,IAAK;;MAE1B;AAEA,YAAMkyB,WAAW,CAAC7U,OAAOD,WAAW;AAClC,YAAI,KAAK2U,QAAQ;AACf,eAAK0D,OAAOpY,OAAOD,MAAAA;;MAEvB;AAEA,UAAIs6B;AACJ,YAAM9E,WAAW,MAAM;AACrB6E,gBAAQ,UAAU7E,QAAAA;AAElB,aAAKA,WAAW;AAChB,aAAKnd,OAAM;AAEX+hB,aAAK,UAAUtlB,QAAAA;AACfslB,aAAK,UAAUE,QAAAA;MACjB;AAEAA,iBAAW,MAAM;AACf,aAAK9E,WAAW;AAEhB6E,gBAAQ,UAAUvlB,QAAAA;AAGlB,aAAKglB,MAAK;AACV,aAAK5D,QAAQ,GAAG,CAAA;AAEhBkE,aAAK,UAAU5E,QAAAA;MACjB;AAEA,UAAI5D,UAAS1c,WAAW,KAAKP,MAAM,GAAG;AACpC6gB,iBAAAA;aACK;AACL8E,iBAAAA;;IAEJ;IAKA3B,eAAe;AACbrkB,WAAK,KAAK6gB,YAAY,CAACrgB,UAAUlyB,SAAS;AACxC,aAAKgvC,SAAS7c,oBAAoB,MAAMnyB,MAAMkyB,QAAAA;MAChD,CAAA;AACA,WAAKqgB,aAAa,CAAA;AAElB7gB,WAAK,KAAK8gB,sBAAsB,CAACtgB,UAAUlyB,SAAS;AAClD,aAAKgvC,SAAS7c,oBAAoB,MAAMnyB,MAAMkyB,QAAAA;MAChD,CAAA;AACA,WAAKsgB,uBAAuB7yC;IAC9B;IAEAg4C,iBAAiBt2C,OAAO+I,MAAM8tB,SAAS;AACrC,YAAM0f,SAAS1f,UAAU,QAAQ;AACjC,UAAIttB,MAAMnJ,MAAMF,IAAGuI;AAEnB,UAAIM,SAAS,WAAW;AACtBQ,eAAO,KAAKyG,eAAehQ,MAAM,CAAA,EAAGgJ,YAAY;AAChDO,aAAK6B,WAAW,MAAMmrC,SAAS,mBAAoB,EAAA;;AAGrD,WAAKr2C,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,qBAAWmrC,SAAS,YAAA,EAAcn2C,KAAKoM,SAASpM,KAAK4I,cAAc5I,KAAKsI,KAAK;;MAEjF;IACF;IAMA8tC,oBAAoB;AAClB,aAAO,KAAKn2C,WAAW,CAAA;IACzB;IAMAo2C,kBAAkBC,gBAAgB;AAChC,YAAMC,aAAa,KAAKt2C,WAAW,CAAA;AACnC,YAAM4D,SAASyyC,eAAet1B,IAAI,CAAC,EAACpY,cAAcN,OAAAA,OAAK,MAAM;AAC3D,cAAMa,OAAO,KAAKyG,eAAehH,YAAAA;AACjC,YAAI,CAACO,MAAM;AACT,gBAAM,IAAIoe,MAAM,+BAA+B3e,YAAc;;AAG/D,eAAO;UACLA;UACAwD,SAASjD,KAAKD,KAAKZ,MAAM;UACzBA,OAAAA;QACF;MACF,CAAA;AACA,YAAM6mB,UAAU,CAACqnB,eAAe3yC,QAAQ0yC,UAAAA;AAExC,UAAIpnB,SAAS;AACX,aAAKlvB,UAAU4D;AAEf,aAAKgtC,aAAa;AAClB,aAAKoD,mBAAmBpwC,QAAQ0yC,UAAAA;;IAEpC;IAWA5Y,cAAcgM,MAAMxzB,MAAMtK,QAAQ;AAChC,aAAO,KAAKolC,SAASvH,OAAO,MAAMC,MAAMxzB,MAAMtK,MAAAA;IAChD;IAOA0C,gBAAgBkoC,UAAU;AACxB,aAAO,KAAKxF,SAASp6B,OAAOhL,OAAO8iC,CAAAA,OAAKA,GAAE5E,OAAO//B,OAAOysC,QAAAA,EAAU52C,WAAW;IAC/E;IAKAo0C,mBAAmBpwC,QAAQ0yC,YAAYG,QAAQ;AAC7C,YAAMC,eAAe,KAAK/wC,QAAQgxC;AAClC,YAAM7uB,OAAO,CAAC5Q,IAAGrP,OAAMqP,GAAEtL,OAAOxE,CAAAA,OAAK,CAACS,GAAE0iC,KAAKljC,CAAAA,OAAKD,GAAEuB,iBAAiBtB,GAAEsB,gBAAgBvB,GAAEiB,UAAUhB,GAAEgB,KAAK,CAAA;AAC1G,YAAMuuC,cAAc9uB,KAAKwuB,YAAY1yC,MAAAA;AACrC,YAAMizC,YAAYJ,SAAS7yC,SAASkkB,KAAKlkB,QAAQ0yC,UAAW;AAE5D,UAAIM,YAAYh3C,QAAQ;AACtB,aAAKq2C,iBAAiBW,aAAaF,aAAahuC,MAAM,KAAK;;AAG7D,UAAImuC,UAAUj3C,UAAU82C,aAAahuC,MAAM;AACzC,aAAKutC,iBAAiBY,WAAWH,aAAahuC,MAAM,IAAI;;IAE5D;IAKAqrC,cAAcryB,IAAG+0B,QAAQ;AACvB,YAAMvgC,OAAO;QACXvV,OAAO+gB;QACP+0B;QACAzM,YAAY;QACZgG,aAAa,KAAK5lB,cAAc1I,EAAAA;MAClC;AACA,YAAMo1B,cAAc,CAAChN,aAAYA,QAAOnkC,QAAQwuC,UAAU,KAAKxuC,QAAQwuC,QAAQ5nB,SAAS7K,GAAEgR,OAAOp0B,IAAI;AAErG,UAAI,KAAKo/B,cAAc,eAAexnB,MAAM4gC,WAAAA,MAAiB,OAAO;AAClE;;AAGF,YAAM5nB,UAAU,KAAK6nB,aAAar1B,IAAG+0B,QAAQvgC,KAAK85B,WAAW;AAE7D95B,WAAK8zB,aAAa;AAClB,WAAKtM,cAAc,cAAcxnB,MAAM4gC,WAAAA;AAEvC,UAAI5nB,WAAWhZ,KAAKgZ,SAAS;AAC3B,aAAK+iB,OAAM;;AAGb,aAAO;IACT;IAUA8E,aAAar1B,IAAG+0B,QAAQzG,aAAa;AACnC,YAAM,EAAChwC,SAASs2C,aAAa,CAAA,GAAI3wC,QAAAA,IAAW;AAe5C,YAAMukB,mBAAmBusB;AACzB,YAAM7yC,SAAS,KAAKozC,mBAAmBt1B,IAAG40B,YAAYtG,aAAa9lB,gBAAAA;AACnE,YAAM+lB,UAAUgH,cAAcv1B,EAAAA;AAC9B,YAAMquB,YAAYD,mBAAmBpuB,IAAG,KAAKkvB,YAAYZ,aAAaC,OAAAA;AAEtE,UAAID,aAAa;AAGf,aAAKY,aAAa;AAGlB7G,iBAAapkC,QAAQuxC,SAAS;UAACx1B;UAAG9d;UAAQ;QAAK,GAAE,IAAI;AAErD,YAAIqsC,SAAS;AACXlG,mBAAapkC,QAAQ8b,SAAS;YAACC;YAAG9d;YAAQ;UAAK,GAAE,IAAI;;;AAIzD,YAAMsrB,UAAU,CAACqnB,eAAe3yC,QAAQ0yC,UAAAA;AACxC,UAAIpnB,WAAWunB,QAAQ;AACrB,aAAKz2C,UAAU4D;AACf,aAAKowC,mBAAmBpwC,QAAQ0yC,YAAYG,MAAAA;;AAG9C,WAAK7F,aAAab;AAElB,aAAO7gB;IACT;IAUA8nB,mBAAmBt1B,IAAG40B,YAAYtG,aAAa9lB,kBAAkB;AAC/D,UAAIxI,GAAEpjB,SAAS,YAAY;AACzB,eAAO,CAAA;;AAGT,UAAI,CAAC0xC,aAAa;AAEhB,eAAOsG;;AAGT,YAAMI,eAAe,KAAK/wC,QAAQgxC;AAClC,aAAO,KAAKzB,0BAA0BxzB,IAAGg1B,aAAahuC,MAAMguC,cAAcxsB,gBAAAA;IAC5E;EACF;AAGA,WAASkmB,oBAAoB;AAC3B,WAAOpgB,KAAKkgB,OAAMT,WAAW,CAACtxC,UAAUA,MAAM6yC,SAAS/G,WAAU,CAAA;EACnE;AC5uCA,WAASkN,SAAS/pC,KAA+BjB,SAAqB8S,UAAkB;AACtF,UAAM,EAACD,YAAY5X,GAAAA,IAAGC,GAAAA,IAAGya,aAAaD,aAAalc,QAAAA,IAAWwG;AAC9D,UAAM,EAACqV,aAAa41B,gBAAAA,IAAmBzxC;AACvC,UAAM0xC,iBAAiBt4C,KAAKC,IAAIwiB,cAAcM,aAAaw1B,gBAAgBt4B,aAAaC,QAAAA,CAAAA;AACxF7R,QAAI83B,UAAS;AACb93B,QAAIsW,IAAItc,IAAGC,IAAGya,cAAcN,cAAc,GAAGxC,aAAaq4B,iBAAiB,GAAGp4B,WAAWo4B,iBAAiB,CAAA;AAE1G,QAAIx1B,cAAc,GAAG;AACnB,YAAM01B,iBAAiBx4C,KAAKC,IAAIwiB,cAAcK,aAAay1B,gBAAgBt4B,aAAaC,QAAAA,CAAAA;AACxF7R,UAAIsW,IAAItc,IAAGC,IAAGwa,cAAcL,cAAc,GAAGvC,WAAWs4B,iBAAiB,GAAGv4B,aAAau4B,iBAAiB,GAAG,IAAI;WAC5G;AACL,YAAMC,YAAYz4C,KAAKC,IAAIwiB,cAAc,GAAGM,cAAcw1B,gBAAgBt4B,aAAaC,QAAAA,CAAAA;AAEvF,UAAIm4B,oBAAoB,SAAS;AAC/BhqC,YAAIsW,IAAItc,IAAGC,IAAGmwC,WAAWv4B,WAAWe,KAAK,GAAGhB,aAAagB,KAAK,GAAG,IAAI;iBAC5Do3B,oBAAoB,SAAS;AACtC,cAAMxvC,KAAI,IAAI4vC,YAAYA;AAC1B,cAAMl4B,OAAO,CAAC1X,KAAI7I,KAAKogB,IAAIF,WAAWe,KAAK,CAAK5Y,IAAAA;AAChD,cAAMmY,OAAO,CAAC3X,KAAI7I,KAAKsgB,IAAIJ,WAAWe,KAAK,CAAK3Y,IAAAA;AAChD,cAAM6X,SAAStX,KAAI7I,KAAKogB,IAAIH,aAAagB,KAAK,CAAK5Y,IAAAA;AACnD,cAAMgY,SAASxX,KAAI7I,KAAKsgB,IAAIL,aAAagB,KAAK,CAAK3Y,IAAAA;AACnD+F,YAAIg4B,OAAO9lB,MAAMC,IAAAA;AACjBnS,YAAIg4B,OAAOlmB,QAAQE,MAAAA;;;AAGvBhS,QAAIqqC,UAAS;AAEbrqC,QAAI+3B,OAAO,GAAG,CAAA;AACd/3B,QAAIsqC,KAAK,GAAG,GAAGtqC,IAAIijB,OAAO1U,OAAOvO,IAAIijB,OAAO3U,MAAM;AAElDtO,QAAI4F,KAAK,SAAA;EACX;AAGA,WAAS2kC,QAAQvqC,KAA+BjB,SAAqB8S,UAAkB;AACrF,UAAM,EAACD,YAAY44B,aAAaxwC,GAAAA,IAAGC,GAAAA,IAAGya,aAAaD,YAAAA,IAAe1V;AAClE,QAAI0rC,cAAcD,cAAc91B;AAIhC1U,QAAI83B,UAAS;AACb93B,QAAIsW,IAAItc,IAAGC,IAAGya,aAAa9C,aAAa64B,aAAa54B,WAAW44B,WAAAA;AAChE,QAAIh2B,cAAc+1B,aAAa;AAC7BC,oBAAcD,cAAc/1B;AAC5BzU,UAAIsW,IAAItc,IAAGC,IAAGwa,aAAa5C,WAAW44B,aAAa74B,aAAa64B,aAAa,IAAI;WAC5E;AACLzqC,UAAIsW,IAAItc,IAAGC,IAAGuwC,aAAa34B,WAAWa,SAASd,aAAac,OAAAA;;AAE9D1S,QAAIqqC,UAAS;AACbrqC,QAAI4F,KAAI;EACV;AAEA,WAAS8kC,gBAAgBzxC,OAAO;AAC9B,WAAO0xC,kBAAkB1xC,OAAO;MAAC;MAAc;MAAY;MAAc;IAAW,CAAA;EACtF;AAKA,WAAS2xC,oBAAkBt0B,KAAiB7B,aAAqBC,aAAqBm2B,YAAoB;AACxG,UAAMC,KAAIJ,gBAAgBp0B,IAAI/d,QAAQwyC,YAAY;AAClD,UAAMC,iBAAiBt2B,cAAcD,eAAe;AACpD,UAAMw2B,aAAat5C,KAAKC,IAAIo5C,eAAeH,aAAap2B,cAAc,CAAA;AAStE,UAAMy2B,oBAAoB,CAACp8B,QAAQ;AACjC,YAAMq8B,iBAAiBz2B,cAAc/iB,KAAKC,IAAIo5C,eAAel8B,GAAG,KAAK+7B,aAAa;AAClF,aAAOtZ,YAAYziB,KAAK,GAAGnd,KAAKC,IAAIo5C,eAAeG,aAAAA,CAAAA;IACrD;AAEA,WAAO;MACLC,YAAYF,kBAAkBJ,GAAEM,UAAU;MAC1CC,UAAUH,kBAAkBJ,GAAEO,QAAQ;MACtCC,YAAY/Z,YAAYuZ,GAAEQ,YAAY,GAAGL,UAAAA;MACzCM,UAAUha,YAAYuZ,GAAES,UAAU,GAAGN,UAAAA;IACvC;EACF;AAKA,WAASO,WAAWhxC,IAAWixC,OAAezxC,IAAWC,IAAW;AAClE,WAAO;MACLD,GAAGA,KAAIQ,KAAI7I,KAAKogB,IAAI05B,KAAAA;MACpBxxC,GAAGA,KAAIO,KAAI7I,KAAKsgB,IAAIw5B,KAAAA;IACtB;EACF;AAiBA,WAASC,QACP1rC,KACAjB,SACAyO,QACAyF,SACArZ,KACA4e,UACA;AACA,UAAM,EAACxe,GAAAA,IAAGC,GAAAA,IAAG2X,YAAY/f,QAAO24C,aAAa/1B,aAAak3B,OAAAA,IAAU5sC;AAEpE,UAAM2V,cAAc/iB,KAAKoC,IAAIgL,QAAQ2V,cAAczB,UAAUzF,SAASg9B,aAAa,CAAA;AACnF,UAAM/1B,cAAck3B,SAAS,IAAIA,SAAS14B,UAAUzF,SAASg9B,cAAc;AAE3E,QAAIoB,gBAAgB;AACpB,UAAMC,SAAQjyC,MAAM/H;AAEpB,QAAIohB,SAAS;AAIX,YAAM64B,uBAAuBH,SAAS,IAAIA,SAAS14B,UAAU;AAC7D,YAAM84B,uBAAuBr3B,cAAc,IAAIA,cAAczB,UAAU;AACvE,YAAM+4B,sBAAsBF,uBAAuBC,wBAAwB;AAC3E,YAAME,gBAAgBD,uBAAuB,IAAIH,SAASG,sBAAuBA,qBAAqB/4B,WAAW44B;AACjHD,uBAAiBC,SAAQI,iBAAiB;;AAG5C,UAAMC,OAAOv6C,KAAKoC,IAAI,MAAO83C,SAAQn3B,cAAclH,SAASoF,EAAM8B,IAAAA;AAClE,UAAMy3B,eAAeN,SAAQK,QAAQ;AACrC,UAAMt6B,aAAa/f,SAAQs6C,cAAcP;AACzC,UAAM/5B,WAAWjY,MAAMuyC,cAAcP;AACrC,UAAM,EAACR,YAAYC,UAAUC,YAAYC,SAAQ,IAAIX,oBAAkB7rC,SAAS0V,aAAaC,aAAa7C,WAAWD,UAAAA;AAErH,UAAMw6B,2BAA2B13B,cAAc02B;AAC/C,UAAMiB,yBAAyB33B,cAAc22B;AAC7C,UAAMiB,0BAA0B16B,aAAaw5B,aAAagB;AAC1D,UAAMG,wBAAwB16B,WAAWw5B,WAAWgB;AAEpD,UAAMG,2BAA2B/3B,cAAc62B;AAC/C,UAAMmB,yBAAyBh4B,cAAc82B;AAC7C,UAAMmB,0BAA0B96B,aAAa05B,aAAakB;AAC1D,UAAMG,wBAAwB96B,WAAW05B,WAAWkB;AAEpDzsC,QAAI83B,UAAS;AAEb,QAAItf,UAAU;AAEZ,YAAMo0B,yBAAyBN,0BAA0BC,yBAAyB;AAClFvsC,UAAIsW,IAAItc,IAAGC,IAAGya,aAAa43B,yBAAyBM,qBAAAA;AACpD5sC,UAAIsW,IAAItc,IAAGC,IAAGya,aAAak4B,uBAAuBL,qBAAAA;AAGlD,UAAIlB,WAAW,GAAG;AAChB,cAAMwB,UAAUrB,WAAWa,wBAAwBE,uBAAuBvyC,IAAGC,EAAAA;AAC7E+F,YAAIsW,IAAIu2B,QAAQ7yC,GAAG6yC,QAAQ5yC,GAAGoxC,UAAUkB,uBAAuB16B,WAAWa,OAAAA;;AAI5E,YAAMo6B,MAAKtB,WAAWiB,wBAAwB56B,UAAU7X,IAAGC,EAAAA;AAC3D+F,UAAIg4B,OAAO8U,IAAG9yC,GAAG8yC,IAAG7yC,CAAC;AAGrB,UAAIsxC,WAAW,GAAG;AAChB,cAAMsB,UAAUrB,WAAWiB,wBAAwBE,uBAAuB3yC,IAAGC,EAAAA;AAC7E+F,YAAIsW,IAAIu2B,QAAQ7yC,GAAG6yC,QAAQ5yC,GAAGsxC,UAAU15B,WAAWa,SAASi6B,wBAAwBh7C,KAAKihB,EAAE;;AAI7F,YAAMm6B,yBAA0Bl7B,WAAY05B,WAAW92B,eAAiB7C,aAAc05B,aAAa72B,gBAAiB;AACpHzU,UAAIsW,IAAItc,IAAGC,IAAGwa,aAAa5C,WAAY05B,WAAW92B,aAAcs4B,uBAAuB,IAAI;AAC3F/sC,UAAIsW,IAAItc,IAAGC,IAAGwa,aAAas4B,uBAAuBn7B,aAAc05B,aAAa72B,aAAc,IAAI;AAG/F,UAAI62B,aAAa,GAAG;AAClB,cAAMuB,UAAUrB,WAAWgB,0BAA0BE,yBAAyB1yC,IAAGC,EAAAA;AACjF+F,YAAIsW,IAAIu2B,QAAQ7yC,GAAG6yC,QAAQ5yC,GAAGqxC,YAAYoB,0BAA0B/6C,KAAKihB,IAAIhB,aAAac,OAAAA;;AAI5F,YAAMs6B,KAAKxB,WAAWY,0BAA0Bx6B,YAAY5X,IAAGC,EAAAA;AAC/D+F,UAAIg4B,OAAOgV,GAAGhzC,GAAGgzC,GAAG/yC,CAAC;AAGrB,UAAImxC,aAAa,GAAG;AAClB,cAAMyB,UAAUrB,WAAWY,0BAA0BE,yBAAyBtyC,IAAGC,EAAAA;AACjF+F,YAAIsW,IAAIu2B,QAAQ7yC,GAAG6yC,QAAQ5yC,GAAGmxC,YAAYx5B,aAAac,SAAS45B,uBAAAA;;WAE7D;AACLtsC,UAAI+3B,OAAO/9B,IAAGC,EAAAA;AAEd,YAAMgzC,cAAct7C,KAAKogB,IAAIu6B,uBAAAA,IAA2B53B,cAAc1a;AACtE,YAAMkzC,cAAcv7C,KAAKsgB,IAAIq6B,uBAAAA,IAA2B53B,cAAcza;AACtE+F,UAAIg4B,OAAOiV,aAAaC,WAAAA;AAExB,YAAMC,YAAYx7C,KAAKogB,IAAIw6B,qBAAAA,IAAyB73B,cAAc1a;AAClE,YAAMozC,YAAYz7C,KAAKsgB,IAAIs6B,qBAAAA,IAAyB73B,cAAcza;AAClE+F,UAAIg4B,OAAOmV,WAAWC,SAAAA;;AAGxBptC,QAAIqqC,UAAS;EACf;AAEA,WAASgD,QACPrtC,KACAjB,SACAyO,QACAyF,SACAuF,UACA;AACA,UAAM,EAAC80B,aAAa17B,YAAYP,cAAAA,IAAiBtS;AACjD,QAAI8S,WAAW9S,QAAQ8S;AACvB,QAAIy7B,aAAa;AACf5B,cAAQ1rC,KAAKjB,SAASyO,QAAQyF,SAASpB,UAAU2G,QAAAA;AACjD,eAAS/lB,KAAI,GAAGA,KAAI66C,aAAa,EAAE76C,IAAG;AACpCuN,YAAIiB,KAAI;MACV;AACA,UAAI,CAAC8N,MAAMsC,aAAgB,GAAA;AACzBQ,mBAAWD,cAAcP,gBAAgBM,OAAOA;;;AAGpD+5B,YAAQ1rC,KAAKjB,SAASyO,QAAQyF,SAASpB,UAAU2G,QAAAA;AACjDxY,QAAIiB,KAAI;AACR,WAAO4Q;EACT;AAEA,WAASsmB,WACPn4B,KACAjB,SACAyO,QACAyF,SACAuF,UACA;AACA,UAAM,EAAC80B,aAAa17B,YAAYP,eAAe9Y,QAAO,IAAIwG;AAC1D,UAAM,EAACqV,aAAa41B,iBAAiB1U,YAAYE,kBAAkBuV,aAAY,IAAIxyC;AACnF,UAAMg1C,QAAQh1C,QAAQme,gBAAgB;AAEtC,QAAI,CAACtC,aAAa;AAChB;;AAGFpU,QAAI43B,YAAYtC,cAAc,CAAA,CAAE;AAChCt1B,QAAI63B,iBAAiBrC;AAErB,QAAI+X,OAAO;AACTvtC,UAAImU,YAAYC,cAAc;AAC9BpU,UAAIwtC,WAAWxD,mBAAmB;WAC7B;AACLhqC,UAAImU,YAAYC;AAChBpU,UAAIwtC,WAAWxD,mBAAmB;;AAGpC,QAAIn4B,WAAW9S,QAAQ8S;AACvB,QAAIy7B,aAAa;AACf5B,cAAQ1rC,KAAKjB,SAASyO,QAAQyF,SAASpB,UAAU2G,QAAAA;AACjD,eAAS/lB,KAAI,GAAGA,KAAI66C,aAAa,EAAE76C,IAAG;AACpCuN,YAAIi4B,OAAM;MACZ;AACA,UAAI,CAAClpB,MAAMsC,aAAgB,GAAA;AACzBQ,mBAAWD,cAAcP,gBAAgBM,OAAOA;;;AAIpD,QAAI47B,OAAO;AACThD,cAAQvqC,KAAKjB,SAAS8S,QAAAA;;AAGxB,QAAItZ,QAAQk1C,YAAY57B,WAAWD,cAAcgB,MAAMm4B,iBAAiB,KAAKf,oBAAoB,SAAS;AACxGD,eAAS/pC,KAAKjB,SAAS8S,QAAAA;;AAGzB,QAAI,CAACy7B,aAAa;AAChB5B,cAAQ1rC,KAAKjB,SAASyO,QAAQyF,SAASpB,UAAU2G,QAAAA;AACjDxY,UAAIi4B,OAAM;;EAEd;AAUe,MAAMyV,aAAN,cAAyBplB,SAAAA;IAEtC,OAAO3rB,KAAK;IAEZ,OAAO/E,WAAW;MAChB8e,aAAa;MACbzC,aAAa;MACbqhB,YAAY,CAAA;MACZE,kBAAkB;MAClBwU,iBAAiBn5C;MACjBk6C,cAAc;MACd32B,aAAa;MACb5G,QAAQ;MACRyF,SAAS;MACTZ,OAAOxhB;MACP2nB,UAAU;MACVi1B,UAAU;;IAGZ,OAAOllB,gBAAgB;MACrBxU,iBAAiB;;IAGnB,OAAOb,cAAc;MACnBC,aAAa;MACbC,YAAY,CAAC5D,UAASA,UAAS;;IAGjC6B;IACAQ;IACAy7B;IACA74B;IACAC;IACA81B;IACA54B;IAEArhB,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAKwgB,gBAAgBxgB;AACrB,WAAK+gB,aAAa/gB;AAClB,WAAKghB,WAAWhhB;AAChB,WAAK4jB,cAAc5jB;AACnB,WAAK6jB,cAAc7jB;AACnB,WAAK25C,cAAc;AACnB,WAAK8C,cAAc;AAEnB,UAAIl4C,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEA+nB,QAAQwwB,QAAgBC,QAAgB9wB,kBAA2B;AACjE,YAAM/L,QAAQ,KAAKsM,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACxC,YAAM,EAACzK,OAAOuL,SAAAA,IAAYN,kBAAkBvM,OAAO;QAAC/W,GAAG2zC;QAAQ1zC,GAAG2zC;MAAM,CAAA;AACxE,YAAM,EAACh8B,YAAYC,UAAU4C,aAAaC,aAAarD,cAAAA,IAAiB,KAAKgM,SAAS;QACpF;QACA;QACA;QACA;QACA;SACCP,gBAAAA;AACH,YAAM+wB,WAAW,KAAKt1C,QAAQ0a,UAAU,KAAK1a,QAAQ6b,eAAe;AACpE,YAAM6B,iBAAiBvU,eAAe2P,eAAeQ,WAAWD,UAAAA;AAChE,YAAMk8B,iBAAiBx7B,cAAcD,OAAOT,YAAYC,QAAAA,KAAaD,eAAeC;AACpF,YAAMk8B,gBAAgB93B,kBAAkBtE,OAAOm8B;AAC/C,YAAME,eAAeC,WAAWrwB,UAAUnJ,cAAco5B,SAASn5B,cAAcm5B,OAAAA;AAE/E,aAAQE,iBAAiBC;IAC3B;IAEAtwB,eAAeZ,kBAA2B;AACxC,YAAM,EAAC9iB,GAAAA,IAAGC,GAAAA,IAAG2X,YAAYC,UAAU4C,aAAaC,YAAW,IAAI,KAAK2I,SAAS;QAC3E;QACA;QACA;QACA;QACA;QACA;SACCP,gBAAAA;AACH,YAAM,EAACtP,QAAQyF,QAAAA,IAAW,KAAK1a;AAC/B,YAAM21C,aAAat8B,aAAaC,YAAY;AAC5C,YAAMs8B,cAAc15B,cAAcC,cAAczB,UAAUzF,UAAU;AACpE,aAAO;QACLxT,GAAGA,KAAIrI,KAAKogB,IAAIm8B,SAAaC,IAAAA;QAC7Bl0C,GAAGA,KAAItI,KAAKsgB,IAAIi8B,SAAaC,IAAAA;MAC/B;IACF;IAEA3lB,gBAAgB1L,kBAA2B;AACzC,aAAO,KAAKY,eAAeZ,gBAAAA;IAC7B;IAEApqB,KAAKsN,KAA+B;AAClC,YAAM,EAACzH,SAAS8Y,cAAa,IAAI;AACjC,YAAM7D,UAAUjV,QAAQiV,UAAU,KAAK;AACvC,YAAMyF,WAAW1a,QAAQ0a,WAAW,KAAK;AACzC,YAAMuF,WAAWjgB,QAAQigB;AACzB,WAAKgyB,cAAejyC,QAAQme,gBAAgB,UAAW,OAAO;AAC9D,WAAK42B,cAAcj8B,gBAAgBM,MAAMhgB,KAAKoE,MAAMsb,gBAAgBM,GAAAA,IAAO;AAE3E,UAAIN,kBAAkB,KAAK,KAAKoD,cAAc,KAAK,KAAKC,cAAc,GAAG;AACvE;;AAGF1U,UAAIq3B,KAAI;AAER,YAAM6W,aAAa,KAAKt8B,aAAa,KAAKC,YAAY;AACtD7R,UAAIouC,UAAUz8C,KAAKogB,IAAIm8B,SAAAA,IAAa1gC,QAAQ7b,KAAKsgB,IAAIi8B,SAAa1gC,IAAAA,MAAAA;AAClE,YAAM6gC,MAAM,IAAI18C,KAAKsgB,IAAItgB,KAAKC,IAAIghB,IAAIvB,iBAAiB,CAAA,CAAA;AACvD,YAAMi9B,eAAe9gC,SAAS6gC;AAE9BruC,UAAI8T,YAAYvb,QAAQwb;AACxB/T,UAAIgU,cAAczb,QAAQ0b;AAE1Bo5B,cAAQrtC,KAAK,MAAMsuC,cAAcr7B,SAASuF,QAAAA;AAC1C2f,iBAAWn4B,KAAK,MAAMsuC,cAAcr7B,SAASuF,QAAAA;AAE7CxY,UAAIu3B,QAAO;IACb;EACF;ACzZA,WAASgX,SAASvuC,KAAKzH,SAASqb,QAAQrb,SAAS;AAC/CyH,QAAIwuC,UAAU9sC,eAAekS,MAAM66B,gBAAgBl2C,QAAQk2C,cAAc;AACzEzuC,QAAI43B,YAAYl2B,eAAekS,MAAM0hB,YAAY/8B,QAAQ+8B,UAAU,CAAA;AACnEt1B,QAAI63B,iBAAiBn2B,eAAekS,MAAM4hB,kBAAkBj9B,QAAQi9B,gBAAgB;AACpFx1B,QAAIwtC,WAAW9rC,eAAekS,MAAMo2B,iBAAiBzxC,QAAQyxC,eAAe;AAC5EhqC,QAAImU,YAAYzS,eAAekS,MAAMQ,aAAa7b,QAAQ6b,WAAW;AACrEpU,QAAIgU,cAActS,eAAekS,MAAMK,aAAa1b,QAAQ0b,WAAW;EACzE;AAEA,WAAS+jB,OAAOh4B,KAAK0uC,UAAUr5C,QAAQ;AACrC2K,QAAIg4B,OAAO3iC,OAAO2E,GAAG3E,OAAO4E,CAAC;EAC/B;AAKA,WAAS00C,cAAcp2C,SAAS;AAC9B,QAAIA,QAAQq2C,SAAS;AACnB,aAAOC;;AAGT,QAAIt2C,QAAQu2C,WAAWv2C,QAAQw2C,2BAA2B,YAAY;AACpE,aAAOC;;AAGT,WAAOhX;EACT;AAEA,WAASiX,SAASn+B,QAAQ2G,SAAS8H,SAAS,CAAA,GAAI;AAC9C,UAAM1b,QAAQiN,OAAOte;AACrB,UAAM,EAACX,OAAOq9C,cAAc,GAAGt1C,KAAKu1C,YAAYtrC,QAAQ,EAAC,IAAI0b;AAC7D,UAAM,EAAC1tB,OAAOu9C,cAAcx1C,KAAKy1C,WAAAA,IAAc53B;AAC/C,UAAM5lB,SAAQF,KAAKoC,IAAIm7C,aAAaE,YAAAA;AACpC,UAAMx1C,MAAMjI,KAAKC,IAAIu9C,WAAWE,UAAAA;AAChC,UAAMC,UAAUJ,cAAcE,gBAAgBD,YAAYC,gBAAgBF,cAAcG,cAAcF,YAAYE;AAElH,WAAO;MACLxrC;MACAhS,OAAAA;MACAqE,MAAMuhB,QAAQvhB;MACd8E,MAAMpB,MAAM/H,UAAS,CAACy9C,UAAUzrC,QAAQjK,MAAM/H,SAAQ+H,MAAM/H;IAC9D;EACF;AAiBA,WAAS09C,YAAYvvC,KAAKkX,MAAMO,SAAS8H,QAAQ;AAC/C,UAAM,EAACzO,QAAQvY,QAAAA,IAAW2e;AAC1B,UAAM,EAACrT,OAAOhS,OAAAA,QAAOqE,MAAM8E,KAAAA,IAAQi0C,SAASn+B,QAAQ2G,SAAS8H,MAAAA;AAC7D,UAAMiwB,aAAab,cAAcp2C,OAAAA;AAEjC,QAAI,EAACiQ,OAAO,MAAM7O,QAAO,IAAI4lB,UAAU,CAAA;AACvC,QAAI9sB,IAAGse,OAAO/M;AAEd,SAAKvR,KAAI,GAAGA,MAAKuI,MAAM,EAAEvI,IAAG;AAC1Bse,cAAQD,QAAQjf,UAAS8H,UAAUqB,OAAOvI,KAAIA,OAAMoR,KAAM;AAE1D,UAAIkN,MAAMG,MAAM;AAEd;MACF,WAAW1I,MAAM;AACfxI,YAAI+3B,OAAOhnB,MAAM/W,GAAG+W,MAAM9W,CAAC;AAC3BuO,eAAO;aACF;AACLgnC,mBAAWxvC,KAAKgE,MAAM+M,OAAOpX,SAASpB,QAAQq2C,OAAO;;AAGvD5qC,aAAO+M;IACT;AAEA,QAAI7a,MAAM;AACR6a,cAAQD,QAAQjf,UAAS8H,UAAUqB,OAAO,MAAM6I,KAAM;AACtD2rC,iBAAWxvC,KAAKgE,MAAM+M,OAAOpX,SAASpB,QAAQq2C,OAAO;;AAGvD,WAAO,CAAC,CAAC14C;EACX;AAiBA,WAASu5C,gBAAgBzvC,KAAKkX,MAAMO,SAAS8H,QAAQ;AACnD,UAAMzO,SAASoG,KAAKpG;AACpB,UAAM,EAACjN,OAAOhS,OAAAA,QAAOmJ,KAAAA,IAAQi0C,SAASn+B,QAAQ2G,SAAS8H,MAAAA;AACvD,UAAM,EAAC/W,OAAO,MAAM7O,QAAO,IAAI4lB,UAAU,CAAA;AACzC,QAAImwB,OAAO;AACX,QAAIC,SAAS;AACb,QAAIl9C,IAAGse,OAAO6+B,OAAO/8B,MAAMJ,MAAMo9B;AAEjC,UAAMC,aAAa,CAAC70C,YAAWpJ,UAAS8H,UAAUqB,OAAOC,SAAQA,WAAU4I;AAC3E,UAAMksC,QAAQ,MAAM;AAClB,UAAIl9B,SAASJ,MAAM;AAEjBzS,YAAIg4B,OAAO0X,MAAMj9B,IAAAA;AACjBzS,YAAIg4B,OAAO0X,MAAM78B,IAAAA;AAGjB7S,YAAIg4B,OAAO0X,MAAMG,KAAAA;;IAErB;AAEA,QAAIrnC,MAAM;AACRuI,cAAQD,OAAOg/B,WAAW,CAAG,CAAA;AAC7B9vC,UAAI+3B,OAAOhnB,MAAM/W,GAAG+W,MAAM9W,CAAC;;AAG7B,SAAKxH,KAAI,GAAGA,MAAKuI,MAAM,EAAEvI,IAAG;AAC1Bse,cAAQD,OAAOg/B,WAAWr9C,EAAG,CAAA;AAE7B,UAAIse,MAAMG,MAAM;AAEd;;AAGF,YAAMlX,KAAI+W,MAAM/W;AAChB,YAAMC,KAAI8W,MAAM9W;AAChB,YAAM+1C,SAASh2C,KAAI;AAEnB,UAAIg2C,WAAWJ,OAAO;AAEpB,YAAI31C,KAAI4Y,MAAM;AACZA,iBAAO5Y;mBACEA,KAAIwY,MAAM;AACnBA,iBAAOxY;;AAGTy1C,gBAAQC,SAASD,OAAO11C,MAAK,EAAE21C;aAC1B;AACLI,cAAAA;AAGA/vC,YAAIg4B,OAAOh+B,IAAGC,EAAAA;AAEd21C,gBAAQI;AACRL,iBAAS;AACT98B,eAAOJ,OAAOxY;;AAGhB41C,cAAQ51C;IACV;AACA81C,UAAAA;EACF;AAOA,WAASE,kBAAkB/4B,MAAM;AAC/B,UAAMxd,OAAOwd,KAAK3e;AAClB,UAAM+8B,aAAa57B,KAAK47B,cAAc57B,KAAK47B,WAAW9iC;AACtD,UAAM09C,cAAc,CAACh5B,KAAKM,cAAc,CAACN,KAAKjhB,SAAS,CAACyD,KAAKo1C,WAAWp1C,KAAKq1C,2BAA2B,cAAc,CAACr1C,KAAKk1C,WAAW,CAACtZ;AACxI,WAAO4a,cAAcT,kBAAkBF;EACzC;AAKA,WAASY,wBAAwB53C,SAAS;AACxC,QAAIA,QAAQq2C,SAAS;AACnB,aAAOwB;;AAGT,QAAI73C,QAAQu2C,WAAWv2C,QAAQw2C,2BAA2B,YAAY;AACpE,aAAOsB;;AAGT,WAAOC;EACT;AAEA,WAASC,oBAAoBvwC,KAAKkX,MAAMrlB,QAAOgS,OAAO;AACpD,QAAI2sC,OAAOt5B,KAAKu5B;AAChB,QAAI,CAACD,MAAM;AACTA,aAAOt5B,KAAKu5B,QAAQ,IAAIC,OAAAA;AACxB,UAAIx5B,KAAKs5B,KAAKA,MAAM3+C,QAAOgS,KAAQ,GAAA;AACjC2sC,aAAKnG,UAAS;;;AAGlBkE,aAASvuC,KAAKkX,KAAK3e,OAAO;AAC1ByH,QAAIi4B,OAAOuY,IAAAA;EACb;AAEA,WAASG,iBAAiB3wC,KAAKkX,MAAMrlB,QAAOgS,OAAO;AACjD,UAAM,EAAC+sC,UAAUr4C,QAAAA,IAAW2e;AAC5B,UAAM25B,gBAAgBZ,kBAAkB/4B,IAAAA;AAExC,eAAWO,WAAWm5B,UAAU;AAC9BrC,eAASvuC,KAAKzH,SAASkf,QAAQ7D,KAAK;AACpC5T,UAAI83B,UAAS;AACb,UAAI+Y,cAAc7wC,KAAKkX,MAAMO,SAAS;QAAC5lB,OAAAA;QAAO+H,KAAK/H,SAAQgS,QAAQ;OAAK,GAAA;AACtE7D,YAAIqqC,UAAS;;AAEfrqC,UAAIi4B,OAAM;IACZ;EACF;AAEA,MAAM6Y,YAAY,OAAOJ,WAAW;AAEpC,WAASh+C,KAAKsN,KAAKkX,MAAMrlB,QAAOgS,OAAO;AACrC,QAAIitC,aAAa,CAAC55B,KAAK3e,QAAQkf,SAAS;AACtC84B,0BAAoBvwC,KAAKkX,MAAMrlB,QAAOgS,KAAAA;WACjC;AACL8sC,uBAAiB3wC,KAAKkX,MAAMrlB,QAAOgS,KAAAA;;EAEvC;AAEe,MAAMktC,cAAN,cAA0BzoB,SAAAA;IAEvC,OAAO3rB,KAAK;IAKZ,OAAO/E,WAAW;MAChB62C,gBAAgB;MAChBnZ,YAAY,CAAA;MACZE,kBAAkB;MAClBwU,iBAAiB;MACjB51B,aAAa;MACb48B,iBAAiB;MACjBjC,wBAAwB;MACxB9tC,MAAM;MACNgW,UAAU;MACV23B,SAAS;MACTE,SAAS;;IAMX,OAAOvmB,gBAAgB;MACrBxU,iBAAiB;MACjBE,aAAa;;IAIf,OAAOf,cAAc;MACnBC,aAAa;MACbC,YAAY,CAAC5D,UAASA,UAAS,gBAAgBA,UAAS;;IAI1Djf,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKsiB,WAAW;AAChB,WAAKnf,UAAU1H;AACf,WAAKwG,SAASxG;AACd,WAAKoF,QAAQpF;AACb,WAAK6oB,YAAY7oB;AACjB,WAAK4/C,QAAQ5/C;AACb,WAAKogD,UAAUpgD;AACf,WAAKqgD,YAAYrgD;AACjB,WAAK2mB,aAAa;AAClB,WAAK25B,iBAAiB;AACtB,WAAK55B,gBAAgB1mB;AAErB,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEAgjB,oBAAoBrS,WAAWhE,WAAW;AACxC,YAAMxJ,UAAU,KAAKA;AACrB,WAAKA,QAAQu2C,WAAWv2C,QAAQw2C,2BAA2B,eAAe,CAACx2C,QAAQq2C,WAAW,CAAC,KAAKuC,gBAAgB;AAClH,cAAMj7C,OAAOqC,QAAQ0e,WAAW,KAAKhhB,QAAQ,KAAKyjB;AAClD03B,mCAA2B,KAAKH,SAAS14C,SAASwN,WAAW7P,MAAM6L,SAAAA;AACnE,aAAKovC,iBAAiB;;IAE1B;IAEA,IAAIrgC,OAAOA,QAAQ;AACjB,WAAKmgC,UAAUngC;AACf,aAAO,KAAKogC;AACZ,aAAO,KAAKT;AACZ,WAAKU,iBAAiB;IACxB;IAEA,IAAIrgC,SAAS;AACX,aAAO,KAAKmgC;IACd;IAEA,IAAIL,WAAW;AACb,aAAO,KAAKM,cAAc,KAAKA,YAAYG,iBAAiB,MAAM,KAAK94C,QAAQkf,OAAO;IACxF;IAMA8R,QAAQ;AACN,YAAMqnB,WAAW,KAAKA;AACtB,YAAM9/B,SAAS,KAAKA;AACpB,aAAO8/B,SAASp+C,UAAUse,OAAO8/B,SAAS,CAAA,EAAG/+C,KAAK;IACpD;IAMA4c,OAAO;AACL,YAAMmiC,WAAW,KAAKA;AACtB,YAAM9/B,SAAS,KAAKA;AACpB,YAAMjN,QAAQ+sC,SAASp+C;AACvB,aAAOqR,SAASiN,OAAO8/B,SAAS/sC,QAAQ,CAAA,EAAGjK,GAAG;IAChD;IASA03C,YAAYvgC,OAAOkpB,UAAU;AAC3B,YAAM1hC,UAAU,KAAKA;AACrB,YAAMU,QAAQ8X,MAAMkpB,QAAS;AAC7B,YAAMnpB,SAAS,KAAKA;AACpB,YAAM8/B,WAAWW,eAAe,MAAM;QAACtX;QAAUpoC,OAAOoH;QAAOW,KAAKX;MAAK,CAAA;AAEzE,UAAI,CAAC23C,SAASp+C,QAAQ;AACpB;;AAGF,YAAM8oB,SAAS,CAAA;AACf,YAAMk2B,eAAerB,wBAAwB53C,OAAAA;AAC7C,UAAI9F,IAAGuI;AACP,WAAKvI,KAAI,GAAGuI,OAAO41C,SAASp+C,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACjD,cAAM,EAACZ,OAAAA,QAAO+H,IAAAA,IAAOg3C,SAASn+C,EAAE;AAChC,cAAMilC,KAAK5mB,OAAOjf,MAAM;AACxB,cAAM8lC,MAAK7mB,OAAOlX,GAAI;AACtB,YAAI89B,OAAOC,KAAI;AACbrc,iBAAO7nB,KAAKikC,EAAAA;AACZ;;AAEF,cAAMn9B,KAAI5I,KAAKwY,KAAKlR,QAAQy+B,GAAGuC,QAAAA,MAActC,IAAGsC,QAAAA,IAAYvC,GAAGuC,QAAAA,EAAQ;AACvE,cAAMwX,eAAeD,aAAa9Z,IAAIC,KAAIp9B,IAAGhC,QAAQq2C,OAAO;AAC5D6C,qBAAaxX,QAAAA,IAAYlpB,MAAMkpB,QAAS;AACxC3e,eAAO7nB,KAAKg+C,YAAAA;MACd;AACA,aAAOn2B,OAAO9oB,WAAW,IAAI8oB,OAAO,CAAA,IAAKA;IAC3C;IAgBAi0B,YAAYvvC,KAAKyX,SAAS8H,QAAQ;AAChC,YAAMsxB,gBAAgBZ,kBAAkB,IAAI;AAC5C,aAAOY,cAAc7wC,KAAK,MAAMyX,SAAS8H,MAAAA;IAC3C;IASAixB,KAAKxwC,KAAKnO,QAAOgS,OAAO;AACtB,YAAM+sC,WAAW,KAAKA;AACtB,YAAMC,gBAAgBZ,kBAAkB,IAAI;AAC5C,UAAI/5C,OAAO,KAAKD;AAEhBpE,MAAAA,SAAQA,UAAS;AACjBgS,cAAQA,SAAU,KAAKiN,OAAOte,SAASX;AAEvC,iBAAW4lB,WAAWm5B,UAAU;AAC9B16C,gBAAQ26C,cAAc7wC,KAAK,MAAMyX,SAAS;UAAC5lB,OAAAA;UAAO+H,KAAK/H,SAAQgS,QAAQ;QAAC,CAAA;MAC1E;AACA,aAAO,CAAC,CAAC3N;IACX;IASAxD,KAAKsN,KAAK+F,WAAWlU,QAAOgS,OAAO;AACjC,YAAMtL,UAAU,KAAKA,WAAW,CAAA;AAChC,YAAMuY,SAAS,KAAKA,UAAU,CAAA;AAE9B,UAAIA,OAAOte,UAAU+F,QAAQ6b,aAAa;AACxCpU,YAAIq3B,KAAI;AAER3kC,aAAKsN,KAAK,MAAMnO,QAAOgS,KAAAA;AAEvB7D,YAAIu3B,QAAO;;AAGb,UAAI,KAAK7f,UAAU;AAEjB,aAAKy5B,iBAAiB;AACtB,aAAKV,QAAQ5/C;;IAEjB;EACF;AClbA,WAASssB,UAAQtB,IAAkB0C,KAAariB,MAAiB4gB,kBAA4B;AAC3F,UAAMvkB,UAAUsjB,GAAGtjB;AACnB,UAAM,EAAC,CAAC2D,IAAK,GAAEjD,MAAAA,IAAS4iB,GAAGwB,SAAS;MAACnhB;OAAO4gB,gBAAAA;AAE5C,WAAQnrB,KAAKwY,IAAIoU,MAAMtlB,KAAAA,IAASV,QAAQsY,SAAStY,QAAQm5C;EAC3D;AAIe,MAAMC,eAAN,cAA2BrpB,SAAAA;IAExC,OAAO3rB,KAAK;IAEZiB;IACAsT;IACAjd;;;;IAKA,OAAO2D,WAAW;MAChBwc,aAAa;MACbs9B,WAAW;MACX/6B,kBAAkB;MAClBi7B,aAAa;MACbl+B,YAAY;MACZ7C,QAAQ;MACRO,UAAU;;;;;IAMZ,OAAOmX,gBAAgB;MACrBxU,iBAAiB;MACjBE,aAAa;;IAGf1jB,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAK+M,SAAS/M;AACd,WAAKqgB,OAAOrgB;AACZ,WAAKoD,OAAOpD;AAEZ,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEA+nB,QAAQ00B,QAAgBC,QAAgBh1B,kBAA4B;AAClE,YAAMvkB,UAAU,KAAKA;AACrB,YAAM,EAACyB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAKojB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAASnrB,KAAKirB,IAAIi1B,SAAS73C,IAAG,CAAA,IAAKrI,KAAKirB,IAAIk1B,SAAS73C,IAAG,CAAA,IAAMtI,KAAKirB,IAAIrkB,QAAQm5C,YAAYn5C,QAAQsY,QAAQ,CAAA;IAC7G;IAEAkhC,SAASF,QAAgB/0B,kBAA4B;AACnD,aAAOK,UAAQ,MAAM00B,QAAQ,KAAK/0B,gBAAAA;IACpC;IAEAk1B,SAASF,QAAgBh1B,kBAA4B;AACnD,aAAOK,UAAQ,MAAM20B,QAAQ,KAAKh1B,gBAAAA;IACpC;IAEAY,eAAeZ,kBAA4B;AACzC,YAAM,EAAC9iB,GAAAA,IAAGC,GAAAA,GAAAA,IAAK,KAAKojB,SAAS;QAAC;QAAK;SAAMP,gBAAAA;AACzC,aAAO;QAAC9iB,GAAAA;QAAGC,GAAAA;MAAC;IACd;IAEAf,KAAKX,SAAqD;AACxDA,gBAAUA,WAAW,KAAKA,WAAW,CAAA;AACrC,UAAIsY,SAAStY,QAAQsY,UAAU;AAC/BA,eAASlf,KAAKoC,IAAI8c,QAAQA,UAAUtY,QAAQq5C,eAAe,CAAA;AAC3D,YAAMx9B,cAAcvD,UAAUtY,QAAQ6b,eAAe;AACrD,cAAQvD,SAASuD,eAAe;IAClC;IAEA1hB,KAAKsN,KAA+B8F,MAAiB;AACnD,YAAMvN,UAAU,KAAKA;AAErB,UAAI,KAAK2Y,QAAQ3Y,QAAQsY,SAAS,OAAO,CAACqM,eAAe,MAAMpX,MAAM,KAAK5M,KAAKX,OAAAA,IAAW,CAAI,GAAA;AAC5F;;AAGFyH,UAAIgU,cAAczb,QAAQ0b;AAC1BjU,UAAImU,YAAY5b,QAAQ6b;AACxBpU,UAAI8T,YAAYvb,QAAQwb;AACxBk+B,gBAAUjyC,KAAKzH,SAAS,KAAKyB,GAAG,KAAKC,CAAC;IACxC;IAEA6hB,WAAW;AACT,YAAMvjB,UAAU,KAAKA,WAAW,CAAA;AAEhC,aAAOA,QAAQsY,SAAStY,QAAQm5C;IAClC;EACF;AC5FA,WAASQ,aAAaC,KAAKr1B,kBAAkB;AAC3C,UAAM,EAAC9iB,GAAAA,IAAGC,GAAAA,IAAGoS,MAAMkC,OAAOD,OAAAA,IAAmC6jC,IAAI90B,SAAS;MAAC;MAAK;MAAK;MAAQ;MAAS;OAAWP,gBAAAA;AAEjH,QAAIziB,MAAMF,OAAOD,KAAKE,QAAQg4C;AAE9B,QAAID,IAAI/lC,YAAY;AAClBgmC,aAAO9jC,SAAS;AAChBjU,aAAO1I,KAAKC,IAAIoI,IAAGqS,IAAAA;AACnBlS,cAAQxI,KAAKoC,IAAIiG,IAAGqS,IAAAA;AACpBnS,YAAMD,KAAIm4C;AACVh4C,eAASH,KAAIm4C;WACR;AACLA,aAAO7jC,QAAQ;AACflU,aAAOL,KAAIo4C;AACXj4C,cAAQH,KAAIo4C;AACZl4C,YAAMvI,KAAKC,IAAIqI,IAAGoS,IAAAA;AAClBjS,eAASzI,KAAKoC,IAAIkG,IAAGoS,IAAAA;;AAGvB,WAAO;MAAChS;MAAMH;MAAKC;MAAOC;IAAM;EAClC;AAEA,WAASi4C,YAAYnhC,OAAMjY,OAAOrH,KAAKmC,KAAK;AAC1C,WAAOmd,QAAO,IAAIqgB,YAAYt4B,OAAOrH,KAAKmC,GAAI;EAChD;AAEA,WAASu+C,iBAAiBH,KAAKI,MAAMC,MAAM;AACzC,UAAMv5C,QAAQk5C,IAAI55C,QAAQ6b;AAC1B,UAAMlD,QAAOihC,IAAI3lC;AACjB,UAAMs+B,KAAI2H,OAAOx5C,KAAAA;AAEjB,WAAO;MACLsB,GAAG83C,YAAYnhC,MAAKhX,KAAK4wC,GAAE5wC,KAAK,GAAGs4C,IAAAA;MACnCh4C,GAAG63C,YAAYnhC,MAAK/W,OAAO2wC,GAAE3wC,OAAO,GAAGo4C,IAAAA;MACvC93C,GAAG43C,YAAYnhC,MAAK9W,QAAQ0wC,GAAE1wC,QAAQ,GAAGo4C,IAAAA;MACzC93C,GAAG23C,YAAYnhC,MAAK7W,MAAMywC,GAAEzwC,MAAM,GAAGk4C,IAAAA;IACvC;EACF;AAEA,WAAS3H,kBAAkBuH,KAAKI,MAAMC,MAAM;AAC1C,UAAM,EAAC/lC,mBAAkB,IAAI0lC,IAAI90B,SAAS;MAAC;IAAqB,CAAA;AAChE,UAAMpkB,QAAQk5C,IAAI55C,QAAQwyC;AAC1B,UAAMD,KAAI4H,cAAcz5C,KAAAA;AACxB,UAAM05C,QAAOhhD,KAAKC,IAAI2gD,MAAMC,IAAAA;AAC5B,UAAMthC,QAAOihC,IAAI3lC;AAIjB,UAAMomC,eAAenmC,sBAAsBjV,UAASyB,KAAAA;AAEpD,WAAO;MACL45C,SAASR,YAAY,CAACO,gBAAgB1hC,MAAKhX,OAAOgX,MAAK7W,MAAMywC,GAAE+H,SAAS,GAAGF,KAAAA;MAC3EG,UAAUT,YAAY,CAACO,gBAAgB1hC,MAAKhX,OAAOgX,MAAK/W,OAAO2wC,GAAEgI,UAAU,GAAGH,KAAAA;MAC9EI,YAAYV,YAAY,CAACO,gBAAgB1hC,MAAK9W,UAAU8W,MAAK7W,MAAMywC,GAAEiI,YAAY,GAAGJ,KAAAA;MACpFK,aAAaX,YAAY,CAACO,gBAAgB1hC,MAAK9W,UAAU8W,MAAK/W,OAAO2wC,GAAEkI,aAAa,GAAGL,KAAAA;IACzF;EACF;AAEA,WAASM,cAAcd,KAAK;AAC1B,UAAMe,SAAShB,aAAaC,GAAAA;AAC5B,UAAM5jC,QAAQ2kC,OAAO/4C,QAAQ+4C,OAAO74C;AACpC,UAAMiU,SAAS4kC,OAAO94C,SAAS84C,OAAOh5C;AACtC,UAAM+d,SAASq6B,iBAAiBH,KAAK5jC,QAAQ,GAAGD,SAAS,CAAA;AACzD,UAAMuC,SAAS+5B,kBAAkBuH,KAAK5jC,QAAQ,GAAGD,SAAS,CAAA;AAE1D,WAAO;MACL6kC,OAAO;QACLn5C,GAAGk5C,OAAO74C;QACVJ,GAAGi5C,OAAOh5C;QACV6mB,GAAGxS;QACH0S,GAAG3S;QACHuC;MACF;MACA08B,OAAO;QACLvzC,GAAGk5C,OAAO74C,OAAO4d,OAAOvd;QACxBT,GAAGi5C,OAAOh5C,MAAM+d,OAAO1d;QACvBwmB,GAAGxS,QAAQ0J,OAAOvd,IAAIud,OAAOzd;QAC7BymB,GAAG3S,SAAS2J,OAAO1d,IAAI0d,OAAOxd;QAC9BoW,QAAQ;UACNgiC,SAASlhD,KAAKoC,IAAI,GAAG8c,OAAOgiC,UAAUlhD,KAAKoC,IAAIkkB,OAAO1d,GAAG0d,OAAOvd,CAAC,CAAA;UACjEo4C,UAAUnhD,KAAKoC,IAAI,GAAG8c,OAAOiiC,WAAWnhD,KAAKoC,IAAIkkB,OAAO1d,GAAG0d,OAAOzd,CAAC,CAAA;UACnEu4C,YAAYphD,KAAKoC,IAAI,GAAG8c,OAAOkiC,aAAaphD,KAAKoC,IAAIkkB,OAAOxd,GAAGwd,OAAOvd,CAAC,CAAA;UACvEs4C,aAAarhD,KAAKoC,IAAI,GAAG8c,OAAOmiC,cAAcrhD,KAAKoC,IAAIkkB,OAAOxd,GAAGwd,OAAOzd,CAAC,CAAA;QAC3E;MACF;IACF;EACF;AAEA,WAAS2iB,QAAQg1B,KAAKn4C,IAAGC,IAAG6iB,kBAAkB;AAC5C,UAAMs2B,QAAQp5C,OAAM;AACpB,UAAMq5C,QAAQp5C,OAAM;AACpB,UAAMq5C,WAAWF,SAASC;AAC1B,UAAMH,SAASf,OAAO,CAACmB,YAAYpB,aAAaC,KAAKr1B,gBAAAA;AAErD,WAAOo2B,WACHE,SAASnF,WAAWj0C,IAAGk5C,OAAO74C,MAAM64C,OAAO/4C,KAAK,OAChDk5C,SAASpF,WAAWh0C,IAAGi5C,OAAOh5C,KAAKg5C,OAAO94C,MAAM;EACtD;AAEA,WAASm5C,UAAU1iC,QAAQ;AACzB,WAAOA,OAAOgiC,WAAWhiC,OAAOiiC,YAAYjiC,OAAOkiC,cAAcliC,OAAOmiC;EAC1E;AAOA,WAASQ,kBAAkBxzC,KAAKsqC,MAAM;AACpCtqC,QAAIsqC,KAAKA,KAAKtwC,GAAGswC,KAAKrwC,GAAGqwC,KAAKvpB,GAAGupB,KAAKrpB,CAAC;EACzC;AAEA,WAASwyB,YAAYnJ,MAAMoJ,QAAQC,UAAU,CAAA,GAAI;AAC/C,UAAM35C,KAAIswC,KAAKtwC,MAAM25C,QAAQ35C,IAAI,CAAC05C,SAAS;AAC3C,UAAMz5C,KAAIqwC,KAAKrwC,MAAM05C,QAAQ15C,IAAI,CAACy5C,SAAS;AAC3C,UAAM3yB,MAAKupB,KAAKtwC,IAAIswC,KAAKvpB,MAAM4yB,QAAQ35C,IAAI25C,QAAQ5yB,IAAI2yB,SAAS,KAAK15C;AACrE,UAAMinB,MAAKqpB,KAAKrwC,IAAIqwC,KAAKrpB,MAAM0yB,QAAQ15C,IAAI05C,QAAQ1yB,IAAIyyB,SAAS,KAAKz5C;AACrE,WAAO;MACLD,GAAGswC,KAAKtwC,IAAIA;MACZC,GAAGqwC,KAAKrwC,IAAIA;MACZ8mB,GAAGupB,KAAKvpB,IAAIA;MACZE,GAAGqpB,KAAKrpB,IAAIA;MACZpQ,QAAQy5B,KAAKz5B;IACf;EACF;AAEe,MAAM+iC,aAAN,cAAyBtrB,SAAAA;IAEtC,OAAO3rB,KAAK;IAKZ,OAAO/E,WAAW;MAChB4U,eAAe;MACf4H,aAAa;MACb22B,cAAc;MACd79B,eAAe;MACfwG,YAAY7iB;;IAMd,OAAO03B,gBAAgB;MACrBxU,iBAAiB;MACjBE,aAAa;;IAGf1jB,YAAY6E,KAAK;AACf,YAAK;AAEL,WAAKmD,UAAU1H;AACf,WAAKub,aAAavb;AAClB,WAAKwb,OAAOxb;AACZ,WAAK0d,QAAQ1d;AACb,WAAKyd,SAASzd;AACd,WAAKqc,gBAAgBrc;AAErB,UAAIuE,KAAK;AACPsC,eAAOyB,OAAO,MAAM/D,GAAAA;;IAExB;IAEA1C,KAAKsN,KAAK;AACR,YAAM,EAACkN,eAAe3U,SAAS,EAAC0b,aAAaF,iBAAAA,iBAAAA,EAAgB,IAAI;AACjE,YAAM,EAACw5B,OAAO4F,MAAAA,IAASF,cAAc,IAAI;AACzC,YAAMY,cAAcN,UAAUJ,MAAMtiC,MAAM,IAAIijC,qBAAqBN;AAEnExzC,UAAIq3B,KAAI;AAER,UAAI8b,MAAMpyB,MAAMwsB,MAAMxsB,KAAKoyB,MAAMlyB,MAAMssB,MAAMtsB,GAAG;AAC9CjhB,YAAI83B,UAAS;AACb+b,oBAAY7zC,KAAKyzC,YAAYN,OAAOjmC,eAAeqgC,KAAAA,CAAAA;AACnDvtC,YAAI4F,KAAI;AACRiuC,oBAAY7zC,KAAKyzC,YAAYlG,OAAO,CAACrgC,eAAeimC,KAAAA,CAAAA;AACpDnzC,YAAI8T,YAAYG;AAChBjU,YAAIiB,KAAK,SAAA;;AAGXjB,UAAI83B,UAAS;AACb+b,kBAAY7zC,KAAKyzC,YAAYlG,OAAOrgC,aAAAA,CAAAA;AACpClN,UAAI8T,YAAYC;AAChB/T,UAAIiB,KAAI;AAERjB,UAAIu3B,QAAO;IACb;IAEApa,QAAQ00B,QAAQC,QAAQh1B,kBAAkB;AACxC,aAAOK,QAAQ,MAAM00B,QAAQC,QAAQh1B,gBAAAA;IACvC;IAEAi1B,SAASF,QAAQ/0B,kBAAkB;AACjC,aAAOK,QAAQ,MAAM00B,QAAQ,MAAM/0B,gBAAAA;IACrC;IAEAk1B,SAASF,QAAQh1B,kBAAkB;AACjC,aAAOK,QAAQ,MAAM,MAAM20B,QAAQh1B,gBAAAA;IACrC;IAEAY,eAAeZ,kBAAkB;AAC/B,YAAM,EAAC9iB,GAAAA,IAAGC,GAAAA,IAAGoS,MAAMD,WAAU,IAA6B,KAAKiR,SAAS;QAAC;QAAK;QAAK;QAAQ;SAAeP,gBAAAA;AAC1G,aAAO;QACL9iB,GAAGoS,cAAcpS,KAAIqS,QAAQ,IAAIrS;QACjCC,GAAGmS,aAAanS,MAAKA,KAAIoS,QAAQ;MACnC;IACF;IAEAyP,SAAS5f,MAAM;AACb,aAAOA,SAAS,MAAM,KAAKqS,QAAQ,IAAI,KAAKD,SAAS;IACvD;EACF;;;;;;;;ACpNA,MAAMylC,gBAAgB;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;;EACD;AAGD,MAAMC,oBAAoCD,8BAAcpgC,IAAIhf,CAAAA,WAASA,OAAMs/C,QAAQ,QAAQ,OAASA,EAAAA,QAAQ,KAAK,QAAA,CAAA;AAEjH,WAASC,eAAezhD,IAAW;AACjC,WAAOshD,cAActhD,KAAIshD,cAAcvhD,MAAM;EAC/C;AAEA,WAAS2hD,mBAAmB1hD,IAAW;AACrC,WAAOuhD,kBAAkBvhD,KAAIuhD,kBAAkBxhD,MAAM;EACvD;AAEA,WAAS4hD,uBAAuBv1C,SAAuBpM,IAAW;AAChEoM,YAAQoV,cAAcigC,eAAezhD,EAAAA;AACrCoM,YAAQkV,kBAAkBogC,mBAAmB1hD,EAAAA;AAE7C,WAAO,EAAEA;EACX;AAEA,WAAS4hD,wBAAwBx1C,SAAuBpM,IAAW;AACjEoM,YAAQkV,kBAAkBlV,QAAQhD,KAAK8X,IAAI,MAAMugC,eAAezhD,IAAAA,CAAAA;AAEhE,WAAOA;EACT;AAEA,WAAS6hD,yBAAyBz1C,SAAuBpM,IAAW;AAClEoM,YAAQkV,kBAAkBlV,QAAQhD,KAAK8X,IAAI,MAAMwgC,mBAAmB1hD,IAAAA,CAAAA;AAEpE,WAAOA;EACT;AAEA,WAAS8hD,aAAaxjD,OAAc;AAClC,QAAI0B,KAAI;AAER,WAAO,CAACoM,SAAuBtD,iBAAyB;AACtD,YAAMoC,aAAa5M,MAAMwR,eAAehH,YAAAA,EAAcoC;AAEtD,UAAIA,sBAAsBmV,oBAAoB;AAC5CrgB,QAAAA,KAAI4hD,wBAAwBx1C,SAASpM,EAAAA;iBAC5BkL,sBAAsB0a,qBAAqB;AACpD5lB,QAAAA,KAAI6hD,yBAAyBz1C,SAASpM,EAAAA;MACxC,WAAWkL,YAAY;AACrBlL,QAAAA,KAAI2hD,uBAAuBv1C,SAASpM,EAAAA;;IAExC;EACF;AAEA,WAAS+hD,0BACPthC,cACA;AACA,QAAIuhC;AAEJ,SAAKA,MAAKvhC,cAAa;AACrB,UAAIA,aAAYuhC,EAAAA,EAAGxgC,eAAef,aAAYuhC,EAAAA,EAAG1gC,iBAAiB;AAChE,eAAO;;IAEX;AAEA,WAAO;EACT;AAEA,WAAS2gC,yBACPjY,YACA;AACA,WAAOA,eAAeA,WAAWxoB,eAAewoB,WAAW1oB;EAC7D;AAEA,WAAS4gC,mCAAmC;AAC1C,WAAO/8C,SAASqc,gBAAgB,qBAAqBrc,SAASmc,oBAAoB;EACpF;AAEA,MAAA,gBAAe;IACbpX,IAAI;IAEJ/E,UAAU;MACRwxB,SAAS;MACTwrB,eAAe;IACjB;IAEA/xB,aAAa9xB,OAAc8jD,OAAOt8C,SAA8B;AAC9D,UAAI,CAACA,QAAQ6wB,SAAS;AACpB;;AAGF,YAAM,EACJvtB,MAAM,EAACyG,SAAAA,GACP/J,SAASu8C,aAAY,IACnB/jD,MAAMqG;AACV,YAAM,EAACyO,UAAAA,UAAQ,IAAIivC;AAEnB,YAAMC,0BACJP,0BAA0BlyC,QAAAA,KAC1BoyC,yBAAyBI,YACxBjvC,KAAAA,aAAY2uC,0BAA0B3uC,SACvC8uC,KAAAA,iCAAAA;AAEF,UAAI,CAACp8C,QAAQq8C,iBAAiBG,yBAAyB;AACrD;;AAGF,YAAMC,YAAYT,aAAaxjD,KAAAA;AAE/BuR,eAAS/Q,QAAQyjD,SAAAA;IACnB;EACF;AC5HA,WAASC,eAAep5C,MAAMhK,QAAOgS,OAAO+b,gBAAgBrnB,SAAS;AASnE,UAAM28C,UAAU38C,QAAQ28C,WAAWt1B;AAEnC,QAAIs1B,WAAWrxC,OAAO;AACpB,aAAOhI,KAAK2f,MAAM3pB,QAAOA,SAAQgS,KAAAA;;AAGnC,UAAMsxC,YAAY,CAAA;AAElB,UAAMC,eAAevxC,QAAQ,MAAMqxC,UAAU;AAC7C,QAAIG,eAAe;AACnB,UAAMC,WAAWzjD,SAAQgS,QAAQ;AAEjC,QAAIiG,KAAIjY;AACR,QAAIY,IAAG8iD,cAAcC,SAAS1vC,MAAM2vC;AAEpCN,cAAUE,cAAAA,IAAkBx5C,KAAKiO,EAAE;AAEnC,SAAKrX,KAAI,GAAGA,KAAIyiD,UAAU,GAAGziD,MAAK;AAChC,UAAIi9C,OAAO;AACX,UAAIgG,OAAO;AACX,UAAIv5B;AAGJ,YAAMw5B,gBAAgBhkD,KAAKoE,OAAOtD,KAAI,KAAK2iD,WAAAA,IAAe,IAAIvjD;AAC9D,YAAM+jD,cAAcjkD,KAAKC,IAAID,KAAKoE,OAAOtD,KAAI,KAAK2iD,WAAAA,IAAe,GAAGvxC,KAAShS,IAAAA;AAC7E,YAAMgkD,iBAAiBD,cAAcD;AAErC,WAAKx5B,KAAIw5B,eAAex5B,KAAIy5B,aAAaz5B,MAAK;AAC5CuzB,gBAAQ7zC,KAAKsgB,EAAE,EAACniB;AAChB07C,gBAAQ75C,KAAKsgB,EAAE,EAACliB;MAClB;AAEAy1C,cAAQmG;AACRH,cAAQG;AAGR,YAAMC,YAAYnkD,KAAKoE,MAAMtD,KAAI2iD,WAAAA,IAAe,IAAIvjD;AACpD,YAAMkkD,UAAUpkD,KAAKC,IAAID,KAAKoE,OAAOtD,KAAI,KAAK2iD,WAAAA,IAAe,GAAGvxC,KAAShS,IAAAA;AACzE,YAAM,EAACmI,GAAGg8C,SAAS/7C,GAAGg8C,QAAAA,IAAWp6C,KAAKiO,EAAE;AAOxC0rC,gBAAU1vC,OAAO;AAEjB,WAAKqW,KAAI25B,WAAW35B,KAAI45B,SAAS55B,MAAK;AACpCrW,eAAO,MAAMnU,KAAKwY,KACf6rC,UAAUtG,SAAS7zC,KAAKsgB,EAAAA,EAAGliB,IAAIg8C,YAC/BD,UAAUn6C,KAAKsgB,EAAE,EAACniB,MAAM07C,OAAOO,QAAM;AAGxC,YAAInwC,OAAO0vC,SAAS;AAClBA,oBAAU1vC;AACVyvC,yBAAe15C,KAAKsgB,EAAE;AACtBs5B,kBAAQt5B;;MAEZ;AAEAg5B,gBAAUE,cAAAA,IAAkBE;AAC5BzrC,MAAAA,KAAI2rC;IACN;AAGAN,cAAUE,cAAAA,IAAkBx5C,KAAKy5C,QAAS;AAE1C,WAAOH;EACT;AAEA,WAASe,iBAAiBr6C,MAAMhK,QAAOgS,OAAO+b,gBAAgB;AAC5D,QAAI8vB,OAAO;AACX,QAAIC,SAAS;AACb,QAAIl9C,IAAGse,OAAO/W,IAAGC,IAAG21C,OAAOuG,UAAUC,UAAUC,YAAYxjC,MAAMJ;AACjE,UAAM0iC,YAAY,CAAA;AAClB,UAAMG,WAAWzjD,SAAQgS,QAAQ;AAEjC,UAAMyyC,OAAOz6C,KAAKhK,MAAAA,EAAOmI;AACzB,UAAMu8C,OAAO16C,KAAKy5C,QAAAA,EAAUt7C;AAC5B,UAAMw8C,KAAKD,OAAOD;AAElB,SAAK7jD,KAAIZ,QAAOY,KAAIZ,SAAQgS,OAAO,EAAEpR,IAAG;AACtCse,cAAQlV,KAAKpJ,EAAE;AACfuH,MAAAA,MAAK+W,MAAM/W,IAAIs8C,QAAQE,KAAK52B;AAC5B3lB,MAAAA,KAAI8W,MAAM9W;AACV,YAAM+1C,SAASh2C,KAAI;AAEnB,UAAIg2C,WAAWJ,OAAO;AAEpB,YAAI31C,KAAI4Y,MAAM;AACZA,iBAAO5Y;AACPk8C,qBAAW1jD;mBACFwH,KAAIwY,MAAM;AACnBA,iBAAOxY;AACPm8C,qBAAW3jD;;AAIbi9C,gBAAQC,SAASD,OAAO3+B,MAAM/W,KAAK,EAAE21C;aAChC;AAEL,cAAM8G,YAAYhkD,KAAI;AAEtB,YAAI,CAACoY,cAAcsrC,QAAa,KAAA,CAACtrC,cAAcurC,QAAW,GAAA;AAKxD,gBAAMM,qBAAqB/kD,KAAKC,IAAIukD,UAAUC,QAAAA;AAC9C,gBAAMO,qBAAqBhlD,KAAKoC,IAAIoiD,UAAUC,QAAAA;AAE9C,cAAIM,uBAAuBL,cAAcK,uBAAuBD,WAAW;AACzEtB,sBAAU1hD,KAAK;cACb,GAAGoI,KAAK66C,kBAAmB;cAC3B18C,GAAG01C;YACL,CAAA;;AAEF,cAAIiH,uBAAuBN,cAAcM,uBAAuBF,WAAW;AACzEtB,sBAAU1hD,KAAK;cACb,GAAGoI,KAAK86C,kBAAmB;cAC3B38C,GAAG01C;YACL,CAAA;;;AAMJ,YAAIj9C,KAAI,KAAKgkD,cAAcJ,YAAY;AAErClB,oBAAU1hD,KAAKoI,KAAK46C,SAAU,CAAA;;AAIhCtB,kBAAU1hD,KAAKsd,KAAAA;AACf6+B,gBAAQI;AACRL,iBAAS;AACT98B,eAAOJ,OAAOxY;AACdk8C,mBAAWC,WAAWC,aAAa5jD;;IAEvC;AAEA,WAAO0iD;EACT;AAEA,WAASyB,sBAAsB/3C,SAAS;AACtC,QAAIA,QAAQ2Y,YAAY;AACtB,YAAM3b,OAAOgD,QAAQwB;AACrB,aAAOxB,QAAQ2Y;AACf,aAAO3Y,QAAQwB;AACf3I,aAAOm/C,eAAeh4C,SAAS,QAAQ;QACrCi4C,cAAc;QACdC,YAAY;QACZC,UAAU;QACV/9C,OAAO4C;MACT,CAAA;;EAEJ;AAEA,WAASo7C,mBAAmBlmD,OAAO;AACjCA,UAAM8K,KAAKyG,SAAS/Q,QAAQ,CAACsN,YAAY;AACvC+3C,4BAAsB/3C,OAAAA;IACxB,CAAA;EACF;AAEA,WAASq4C,0CAA0Cp7C,MAAMgV,QAAQ;AAC/D,UAAMqmC,aAAarmC,OAAOte;AAE1B,QAAIX,SAAQ;AACZ,QAAIgS;AAEJ,UAAM,EAAC9H,OAAM,IAAID;AACjB,UAAM,EAAClK,KAAKmC,KAAK8I,YAAYC,WAAU,IAAIf,OAAOa,cAAa;AAE/D,QAAIC,YAAY;AACdhL,MAAAA,SAAQ0/B,YAAYlW,aAAavK,QAAQ/U,OAAOG,MAAMtK,GAAK6pB,EAAAA,IAAI,GAAG07B,aAAa,CAAA;;AAEjF,QAAIr6C,YAAY;AACd+G,cAAQ0tB,YAAYlW,aAAavK,QAAQ/U,OAAOG,MAAMnI,GAAAA,EAAK6nB,KAAK,GAAG/pB,QAAOslD,UAActlD,IAAAA;WACnF;AACLgS,cAAQszC,aAAatlD;;AAGvB,WAAO;MAACA,OAAAA;MAAOgS;IAAK;EACtB;AAEA,MAAA,oBAAe;IACblH,IAAI;IAEJ/E,UAAU;MACRw/C,WAAW;MACXhuB,SAAS;IACX;IAEAiuB,sBAAsB,CAACtmD,OAAO+X,MAAMvQ,YAAY;AAC9C,UAAI,CAACA,QAAQ6wB,SAAS;AAEpB6tB,2BAAmBlmD,KAAAA;AACnB;;AAIF,YAAM6uB,iBAAiB7uB,MAAMwd;AAE7Bxd,YAAM8K,KAAKyG,SAAS/Q,QAAQ,CAACsN,SAAStD,iBAAiB;AACrD,cAAM,EAAC8E,OAAO0B,UAAAA,IAAalD;AAC3B,cAAM/C,OAAO/K,MAAMwR,eAAehH,YAAAA;AAClC,cAAMM,OAAOwE,SAASxB,QAAQhD;AAE9B,YAAIrG,QAAQ;UAACuM;UAAWhR,MAAMwH,QAAQwJ;QAAU,CAAA,MAAM,KAAK;AAEzD;;AAGF,YAAI,CAACjG,KAAK6B,WAAWgD,oBAAoB;AAEvC;;AAGF,cAAM22C,QAAQvmD,MAAMwN,OAAOzC,KAAK2F,OAAO;AACvC,YAAI61C,MAAMpmD,SAAS,YAAYomD,MAAMpmD,SAAS,QAAQ;AAEpD;;AAGF,YAAIH,MAAMwH,QAAQoL,SAAS;AAEzB;;AAGF,YAAI,EAAC9R,OAAAA,QAAOgS,MAAAA,IAASqzC,0CAA0Cp7C,MAAMD,IAAAA;AACrE,cAAM07C,YAAYh/C,QAAQg/C,aAAa,IAAI33B;AAC3C,YAAI/b,SAAS0zC,WAAW;AAEtBX,gCAAsB/3C,OAAAA;AACtB;;AAGF,YAAIgM,cAAcxK,KAAQ,GAAA;AAIxBxB,kBAAQwB,QAAQxE;AAChB,iBAAOgD,QAAQhD;AACfnE,iBAAOm/C,eAAeh4C,SAAS,QAAQ;YACrCi4C,cAAc;YACdC,YAAY;YACZ7jD,KAAK,WAAW;AACd,qBAAO,KAAKskB;YACd;YACAnkB,KAAK,SAASorC,IAAG;AACf,mBAAKp+B,QAAQo+B;YACf;UACF,CAAA;;AAIF,YAAI0W;AACJ,gBAAQ58C,QAAQ6+C,WAAS;UACzB,KAAK;AACHjC,wBAAYF,eAAep5C,MAAMhK,QAAOgS,OAAO+b,gBAAgBrnB,OAAAA;AAC/D;UACF,KAAK;AACH48C,wBAAYe,iBAAiBr6C,MAAMhK,QAAOgS,OAAO+b,cAAAA;AACjD;UACF;AACE,kBAAM,IAAI1F,MAAM,qCAAqC3hB,QAAQ6+C,SAAS,GAAG;QAC3E;AAEAv4C,gBAAQ2Y,aAAa29B;MACvB,CAAA;IACF;IAEA9M,QAAQt3C,OAAO;AACbkmD,yBAAmBlmD,KAAAA;IACrB;EACF;AC5RO,WAASmgD,UAAUh6B,MAAM7hB,QAAQ4kC,UAAU;AAChD,UAAM2W,WAAW15B,KAAK05B;AACtB,UAAM9/B,SAASoG,KAAKpG;AACpB,UAAM0mC,UAAUniD,OAAOyb;AACvB,UAAMypB,QAAQ,CAAA;AAEd,eAAW9iB,WAAWm5B,UAAU;AAC9B,UAAI,EAAC/+C,OAAAA,QAAO+H,IAAAA,IAAO6d;AACnB7d,YAAM69C,gBAAgB5lD,QAAO+H,KAAKkX,MAAAA;AAElC,YAAMoiC,SAASwE,WAAWzd,UAAUnpB,OAAOjf,MAAAA,GAAQif,OAAOlX,GAAAA,GAAM6d,QAAQvhB,IAAI;AAE5E,UAAI,CAACb,OAAOu7C,UAAU;AAGpBrW,cAAM9mC,KAAK;UACTm8B,QAAQnY;UACRpiB,QAAQ69C;UACRrhD,OAAOif,OAAOjf,MAAM;UACpB+H,KAAKkX,OAAOlX,GAAI;QAClB,CAAA;AACA;;AAIF,YAAM+9C,iBAAiBpG,eAAel8C,QAAQ69C,MAAAA;AAE9C,iBAAW0E,OAAOD,gBAAgB;AAChC,cAAME,YAAYH,WAAWzd,UAAUud,QAAQI,IAAI/lD,KAAK,GAAG2lD,QAAQI,IAAIh+C,GAAG,GAAGg+C,IAAI1hD,IAAI;AACrF,cAAM4hD,cAAcC,cAActgC,SAAS3G,QAAQ+mC,SAAAA;AAEnD,mBAAWG,cAAcF,aAAa;AACpCvd,gBAAM9mC,KAAK;YACTm8B,QAAQooB;YACR3iD,QAAQuiD;YACR/lD,OAAO;cACL,CAACooC,QAAAA,GAAWge,SAAS/E,QAAQ2E,WAAW,SAASlmD,KAAKoC,GAAG;YAC3D;YACA6F,KAAK;cACH,CAACqgC,QAAAA,GAAWge,SAAS/E,QAAQ2E,WAAW,OAAOlmD,KAAKC,GAAG;YACzD;UACF,CAAA;QACF;MACF;IACF;AACA,WAAO2oC;EACT;AAEO,WAASmd,WAAWzd,UAAU1Q,OAAO9a,MAAMvY,MAAM;AACtD,QAAIA,MAAM;AACR;;AAEF,QAAIrE,SAAQ03B,MAAM0Q,QAAS;AAC3B,QAAIrgC,MAAM6U,KAAKwrB,QAAS;AAExB,QAAIA,aAAa,SAAS;AACxBpoC,MAAAA,SAAQq4C,gBAAgBr4C,MAAAA;AACxB+H,YAAMswC,gBAAgBtwC,GAAAA;;AAExB,WAAO;MAACqgC;MAAUpoC,OAAAA;MAAO+H;IAAG;EAC9B;AAEO,WAASs+C,oBAAoBC,UAAUjhC,MAAM;AAClD,UAAM,EAACld,GAAAA,KAAI,MAAMC,GAAAA,KAAI,KAAI,IAAIk+C,YAAY,CAAA;AACzC,UAAMC,aAAalhC,KAAKpG;AACxB,UAAMA,SAAS,CAAA;AACfoG,SAAK05B,SAASr/C,QAAQ,CAAC,EAACM,OAAAA,QAAO+H,IAAG,MAAM;AACtCA,YAAM69C,gBAAgB5lD,QAAO+H,KAAKw+C,UAAAA;AAClC,YAAM7uB,QAAQ6uB,WAAWvmD,MAAM;AAC/B,YAAM4c,OAAO2pC,WAAWx+C,GAAI;AAC5B,UAAIK,OAAM,MAAM;AACd6W,eAAOrd,KAAK;UAACuG,GAAGuvB,MAAMvvB;UAAGC,GAAAA;QAAC,CAAA;AAC1B6W,eAAOrd,KAAK;UAACuG,GAAGyU,KAAKzU;UAAGC,GAAAA;QAAC,CAAA;iBAChBD,OAAM,MAAM;AACrB8W,eAAOrd,KAAK;UAACuG,GAAAA;UAAGC,GAAGsvB,MAAMtvB;QAAC,CAAA;AAC1B6W,eAAOrd,KAAK;UAACuG,GAAAA;UAAGC,GAAGwU,KAAKxU;QAAC,CAAA;;IAE7B,CAAA;AACA,WAAO6W;EACT;AAEO,WAAS2mC,gBAAgB5lD,QAAO+H,KAAKkX,QAAQ;AAClD,WAAMlX,MAAM/H,QAAO+H,OAAO;AACxB,YAAMmX,QAAQD,OAAOlX,GAAI;AACzB,UAAI,CAACmV,MAAMgC,MAAM/W,CAAC,KAAK,CAAC+U,MAAMgC,MAAM9W,CAAC,GAAG;AACtC;;IAEJ;AACA,WAAOL;EACT;AAEA,WAASq+C,SAASnuC,IAAGrP,IAAGnF,MAAM9D,IAAI;AAChC,QAAIsY,MAAKrP,IAAG;AACV,aAAOjJ,GAAGsY,GAAExU,IAAAA,GAAOmF,GAAEnF,IAAK,CAAA;;AAE5B,WAAOwU,KAAIA,GAAExU,IAAK,IAAGmF,KAAIA,GAAEnF,IAAK,IAAG;EACrC;ACnFO,WAAS+iD,oBAAoBF,UAAUjhC,MAAM;AAClD,QAAIpG,SAAS,CAAA;AACb,QAAI7a,QAAQ;AAEZ,QAAIiC,SAAQigD,QAAW,GAAA;AACrBliD,cAAQ;AAER6a,eAASqnC;WACJ;AACLrnC,eAASonC,oBAAoBC,UAAUjhC,IAAAA;;AAGzC,WAAOpG,OAAOte,SAAS,IAAIu+C,YAAY;MACrCjgC;MACAvY,SAAS;QAACu2C,SAAS;MAAC;MACpB74C;MACAyjB,WAAWzjB;IACb,CAAA,IAAK;EACP;AAEO,WAASqiD,iBAAiB1oB,QAAQ;AACvC,WAAOA,UAAUA,OAAO3uB,SAAS;EACnC;AC5BO,WAASs3C,eAAeC,SAASv9C,QAAOw9C,WAAW;AACxD,UAAM7oB,SAAS4oB,QAAQv9C,MAAM;AAC7B,QAAIgG,QAAO2uB,OAAO3uB;AAClB,UAAMy3C,UAAU;MAACz9C;IAAM;AACvB,QAAI5F;AAEJ,QAAI,CAACojD,WAAW;AACd,aAAOx3C;;AAGT,WAAOA,UAAS,SAASy3C,QAAQ1pC,QAAQ/N,KAAAA,MAAU,IAAI;AACrD,UAAI,CAACvF,eAASuF,KAAO,GAAA;AACnB,eAAOA;;AAGT5L,eAASmjD,QAAQv3C,KAAK;AACtB,UAAI,CAAC5L,QAAQ;AACX,eAAO;;AAGT,UAAIA,OAAO2wC,SAAS;AAClB,eAAO/kC;;AAGTy3C,cAAQjlD,KAAKwN,KAAAA;AACbA,MAAAA,QAAO5L,OAAO4L;IAChB;AAEA,WAAO;EACT;AAOO,WAAS03C,YAAYzhC,MAAMjc,QAAO4I,OAAO;AAE9C,UAAM5C,QAAO23C,gBAAgB1hC,IAAAA;AAE7B,QAAI1f,UAASyJ,KAAO,GAAA;AAClB,aAAO8N,MAAM9N,MAAKhI,KAAK,IAAI,QAAQgI;;AAGrC,QAAI5L,SAASwjD,WAAW53C,KAAAA;AAExB,QAAIvF,eAASrG,MAAW1D,KAAAA,KAAKoE,MAAMV,MAAAA,MAAYA,QAAQ;AACrD,aAAOyjD,kBAAkB73C,MAAK,CAAE,GAAEhG,QAAO5F,QAAQwO,KAAAA;;AAGnD,WAAO;MAAC;MAAU;MAAS;MAAO;MAAS;MAASmL,QAAQ/N,KAAAA,KAAS,KAAKA;EAC5E;AAEA,WAAS63C,kBAAkBC,SAAS99C,QAAO5F,QAAQwO,OAAO;AACxD,QAAIk1C,YAAY,OAAOA,YAAY,KAAK;AACtC1jD,eAAS4F,SAAQ5F;;AAGnB,QAAIA,WAAW4F,UAAS5F,SAAS,KAAKA,UAAUwO,OAAO;AACrD,aAAO;;AAGT,WAAOxO;EACT;AAOO,WAAS2jD,gBAAgB/3C,OAAMzH,OAAO;AAC3C,QAAIg6B,QAAQ;AACZ,QAAIvyB,UAAS,SAAS;AACpBuyB,cAAQh6B,MAAMY;eACL6G,UAAS,OAAO;AACzBuyB,cAAQh6B,MAAMU;eACL1C,UAASyJ,KAAO,GAAA;AAEzBuyB,cAAQh6B,MAAM4Q,iBAAiBnJ,MAAKhI,KAAK;eAChCO,MAAMsU,cAAc;AAC7B0lB,cAAQh6B,MAAMsU,aAAY;;AAE5B,WAAO0lB;EACT;AAQO,WAASylB,gBAAgBh4C,OAAMzH,OAAO+R,YAAY;AACvD,QAAItS;AAEJ,QAAIgI,UAAS,SAAS;AACpBhI,cAAQsS;eACCtK,UAAS,OAAO;AACzBhI,cAAQO,MAAMjB,QAAQoB,UAAUH,MAAM5H,MAAM4H,MAAMzF;eACzCyD,UAASyJ,KAAO,GAAA;AAEzBhI,cAAQgI,MAAKhI;WACR;AACLA,cAAQO,MAAMq6B,aAAY;;AAE5B,WAAO56B;EACT;AAKA,WAAS2/C,gBAAgB1hC,MAAM;AAC7B,UAAM3e,UAAU2e,KAAK3e;AACrB,UAAM2gD,aAAa3gD,QAAQ0I;AAC3B,QAAIA,QAAOS,eAAew3C,cAAcA,WAAW7jD,QAAQ6jD,UAAAA;AAE3D,QAAIj4C,UAASpQ,QAAW;AACtBoQ,MAAAA,QAAO,CAAC,CAAC1I,QAAQwb;;AAGnB,QAAI9S,UAAS,SAASA,UAAS,MAAM;AACnC,aAAO;;AAGT,QAAIA,UAAS,MAAM;AACjB,aAAO;;AAET,WAAOA;EACT;AC1HO,WAASk4C,gBAAgBvpB,QAAQ;AACtC,UAAM,EAACp2B,OAAOyB,OAAAA,QAAOic,KAAAA,IAAQ0Y;AAC7B,UAAM9e,SAAS,CAAA;AACf,UAAM8/B,WAAW15B,KAAK05B;AACtB,UAAMwI,eAAeliC,KAAKpG;AAC1B,UAAMuoC,aAAaC,cAAc9/C,OAAOyB,MAAAA;AACxCo+C,eAAW5lD,KAAK4kD,oBAAoB;MAACr+C,GAAG;MAAMC,GAAGT,MAAMY;OAAS8c,IAAAA,CAAAA;AAEhE,aAASzkB,KAAI,GAAGA,KAAIm+C,SAASp+C,QAAQC,MAAK;AACxC,YAAMglB,UAAUm5B,SAASn+C,EAAE;AAC3B,eAAS0pB,KAAI1E,QAAQ5lB,OAAOsqB,MAAK1E,QAAQ7d,KAAKuiB,MAAK;AACjDo9B,uBAAezoC,QAAQsoC,aAAaj9B,EAAAA,GAAIk9B,UAAAA;MAC1C;IACF;AACA,WAAO,IAAItI,YAAY;MAACjgC;MAAQvY,SAAS,CAAA;IAAE,CAAA;EAC7C;AAOA,WAAS+gD,cAAc9/C,OAAOyB,QAAO;AACnC,UAAMu+C,QAAQ,CAAA;AACd,UAAMrrB,QAAQ30B,MAAMiE,wBAAwB,MAAA;AAE5C,aAAShL,KAAI,GAAGA,KAAI07B,MAAM37B,QAAQC,MAAK;AACrC,YAAMqJ,OAAOqyB,MAAM17B,EAAE;AACrB,UAAIqJ,KAAKb,UAAUA,QAAO;AACxB;;AAEF,UAAI,CAACa,KAAK4D,QAAQ;AAChB85C,cAAMC,QAAQ39C,KAAK+C,OAAO;;IAE9B;AACA,WAAO26C;EACT;AAOA,WAASD,eAAezoC,QAAQ4oC,aAAaL,YAAY;AACvD,UAAMM,YAAY,CAAA;AAClB,aAASx9B,KAAI,GAAGA,KAAIk9B,WAAW7mD,QAAQ2pB,MAAK;AAC1C,YAAMjF,OAAOmiC,WAAWl9B,EAAE;AAC1B,YAAM,EAACoN,OAAO9a,MAAMsC,MAAAA,IAAS6oC,UAAU1iC,MAAMwiC,aAAa,GAAA;AAE1D,UAAI,CAAC3oC,SAAUwY,SAAS9a,MAAO;AAC7B;;AAEF,UAAI8a,OAAO;AAETowB,kBAAUF,QAAQ1oC,KAAAA;aACb;AACLD,eAAOrd,KAAKsd,KAAAA;AACZ,YAAI,CAACtC,MAAM;AAET;;;IAGN;AACAqC,WAAOrd,KAAQkmD,GAAAA,SAAAA;EACjB;AAQA,WAASC,UAAU1iC,MAAMwiC,aAAazf,UAAU;AAC9C,UAAMlpB,QAAQmG,KAAKo6B,YAAYoI,aAAazf,QAAAA;AAC5C,QAAI,CAAClpB,OAAO;AACV,aAAO,CAAA;;AAGT,UAAM8oC,aAAa9oC,MAAMkpB,QAAS;AAClC,UAAM2W,WAAW15B,KAAK05B;AACtB,UAAMwH,aAAalhC,KAAKpG;AACxB,QAAIyY,QAAQ;AACZ,QAAI9a,OAAO;AACX,aAAShc,KAAI,GAAGA,KAAIm+C,SAASp+C,QAAQC,MAAK;AACxC,YAAMglB,UAAUm5B,SAASn+C,EAAE;AAC3B,YAAMqnD,aAAa1B,WAAW3gC,QAAQ5lB,KAAK,EAAEooC,QAAS;AACtD,YAAM8f,YAAY3B,WAAW3gC,QAAQ7d,GAAG,EAAEqgC,QAAS;AACnD,UAAIgU,WAAW4L,YAAYC,YAAYC,SAAY,GAAA;AACjDxwB,gBAAQswB,eAAeC;AACvBrrC,eAAOorC,eAAeE;AACtB;;IAEJ;AACA,WAAO;MAACxwB;MAAO9a;MAAMsC;IAAK;EAC5B;ACzGO,MAAMipC,YAAN,MAAMA;IACXzpD,YAAYmJ,MAAM;AAChB,WAAKM,IAAIN,KAAKM;AACd,WAAKC,IAAIP,KAAKO;AACd,WAAK4W,SAASnX,KAAKmX;IACrB;IAEA0+B,YAAYvvC,KAAKkzC,QAAQx5C,MAAM;AAC7B,YAAM,EAACM,GAAAA,IAAGC,GAAAA,IAAG4W,OAAM,IAAI;AACvBqiC,eAASA,UAAU;QAACrhD,OAAO;QAAG+H,KAAK+X;MAAG;AACtC3R,UAAIsW,IAAItc,IAAGC,IAAG4W,QAAQqiC,OAAOt5C,KAAKs5C,OAAOrhD,OAAO,IAAI;AACpD,aAAO,CAAC6H,KAAKw5C;IACf;IAEA5B,YAAYvgC,OAAO;AACjB,YAAM,EAAC/W,GAAAA,IAAGC,GAAAA,IAAG4W,OAAM,IAAI;AACvB,YAAMwB,QAAQtB,MAAMsB;AACpB,aAAO;QACLrY,GAAGA,KAAIrI,KAAKogB,IAAIM,KAASxB,IAAAA;QACzB5W,GAAGA,KAAItI,KAAKsgB,IAAII,KAASxB,IAAAA;QACzBwB;MACF;IACF;EACF;ACdO,WAAS4nC,WAAWrqB,QAAQ;AACjC,UAAM,EAAC7+B,OAAOkQ,MAAAA,OAAMiW,KAAAA,IAAQ0Y;AAE5B,QAAIl0B,eAASuF,KAAO,GAAA;AAClB,aAAOi5C,eAAenpD,OAAOkQ,KAAAA;;AAG/B,QAAIA,UAAS,SAAS;AACpB,aAAOk4C,gBAAgBvpB,MAAAA;;AAGzB,QAAI3uB,UAAS,SAAS;AACpB,aAAO;;AAGT,UAAMk3C,WAAWgC,gBAAgBvqB,MAAAA;AAEjC,QAAIuoB,oBAAoB6B,WAAW;AACjC,aAAO7B;;AAGT,WAAOE,oBAAoBF,UAAUjhC,IAAAA;EACvC;AAMA,WAASgjC,eAAenpD,OAAOkK,QAAO;AACpC,UAAMa,OAAO/K,MAAMwR,eAAetH,MAAAA;AAClC,UAAM+qC,UAAUlqC,QAAQ/K,MAAMikB,iBAAiB/Z,MAAAA;AAC/C,WAAO+qC,UAAUlqC,KAAK+C,UAAU;EAClC;AAEA,WAASs7C,gBAAgBvqB,QAAQ;AAC/B,UAAMp2B,QAAQo2B,OAAOp2B,SAAS,CAAA;AAE9B,QAAIA,MAAMogB,0BAA0B;AAClC,aAAOwgC,wBAAwBxqB,MAAAA;;AAEjC,WAAOyqB,sBAAsBzqB,MAAAA;EAC/B;AAGA,WAASyqB,sBAAsBzqB,QAAQ;AACrC,UAAM,EAACp2B,QAAQ,CAAA,GAAIyH,MAAAA,MAAAA,IAAQ2uB;AAC3B,UAAM4D,QAAQwlB,gBAAgB/3C,OAAMzH,KAAAA;AAEpC,QAAIkC,eAAS83B,KAAQ,GAAA;AACnB,YAAMpnB,aAAa5S,MAAM0S,aAAY;AAErC,aAAO;QACLlS,GAAGoS,aAAaonB,QAAQ;QACxBv5B,GAAGmS,aAAa,OAAOonB;MACzB;;AAGF,WAAO;EACT;AAEA,WAAS4mB,wBAAwBxqB,QAAQ;AACvC,UAAM,EAACp2B,OAAOyH,MAAAA,MAAAA,IAAQ2uB;AACtB,UAAMr3B,UAAUiB,MAAMjB;AACtB,UAAM/F,SAASgH,MAAM8K,UAAS,EAAG9R;AACjC,UAAMX,SAAQ0G,QAAQoB,UAAUH,MAAMzF,MAAMyF,MAAM5H;AAClD,UAAMqH,QAAQggD,gBAAgBh4C,OAAMzH,OAAO3H,MAAAA;AAC3C,UAAMwD,SAAS,CAAA;AAEf,QAAIkD,QAAQkV,KAAK+K,UAAU;AACzB,YAAMnK,SAAS7U,MAAMogB,yBAAyB,GAAG/nB,MAAAA;AACjD,aAAO,IAAImoD,UAAU;QACnBhgD,GAAGqU,OAAOrU;QACVC,GAAGoU,OAAOpU;QACV4W,QAAQrX,MAAM+f,8BAA8BtgB,KAAAA;MAC9C,CAAA;;AAGF,aAASxG,KAAI,GAAGA,KAAID,QAAQ,EAAEC,IAAG;AAC/B4C,aAAO5B,KAAK+F,MAAMogB,yBAAyBnnB,IAAGwG,KAAAA,CAAAA;IAChD;AACA,WAAO5D;EACT;ACzFO,WAASilD,UAAUt6C,KAAK4vB,QAAQ9pB,MAAM;AAC3C,UAAMzQ,SAAS4kD,WAAWrqB,MAAAA;AAC1B,UAAM,EAAC7+B,OAAOkK,OAAAA,QAAOic,MAAM1d,OAAO0C,KAAI,IAAI0zB;AAC1C,UAAM2qB,WAAWrjC,KAAK3e;AACtB,UAAM2gD,aAAaqB,SAASt5C;AAC5B,UAAMtM,SAAQ4lD,SAASxmC;AACvB,UAAM,EAACymC,QAAQ7lD,QAAO6kD,QAAQ7kD,OAAK,IAAIukD,cAAc,CAAA;AACrD,UAAMp9C,OAAO/K,MAAMwR,eAAetH,MAAAA;AAClC,UAAM2K,OAAOiiC,mBAAmB92C,OAAO+K,IAAAA;AACvC,QAAIzG,UAAU6hB,KAAKpG,OAAOte,QAAQ;AAChC8lC,eAASt4B,KAAK8F,IAAAA;AACd20C,aAAOz6C,KAAK;QAACkX;QAAM7hB;QAAQmlD;QAAOhB;QAAO1zC;QAAMtM;QAAO0C;QAAM0J;MAAI,CAAA;AAChE6yB,iBAAWz4B,GAAAA;;EAEf;AAEA,WAASy6C,OAAOz6C,KAAK5K,KAAK;AACxB,UAAM,EAAC8hB,MAAM7hB,QAAQmlD,OAAOhB,OAAO1zC,MAAMtM,OAAOoM,KAAAA,IAAQxQ;AACxD,UAAM6kC,WAAW/iB,KAAKjhB,QAAQ,UAAUb,IAAI8G;AAE5C8D,QAAIq3B,KAAI;AAER,QAAIqjB,YAAYlB;AAChB,QAAIA,UAAUgB,OAAO;AACnB,UAAIvgB,aAAa,KAAK;AACpB0gB,qBAAa36C,KAAK3K,QAAQyQ,KAAK5L,GAAG;AAClC+G,aAAKjB,KAAK;UAACkX;UAAM7hB;UAAQV,OAAO6lD;UAAOhhD;UAAOygC;UAAUr0B;QAAI,CAAA;AAC5D5F,YAAIu3B,QAAO;AACXv3B,YAAIq3B,KAAI;AACRsjB,qBAAa36C,KAAK3K,QAAQyQ,KAAK1L,MAAM;iBAC5B6/B,aAAa,KAAK;AAC3B2gB,uBAAe56C,KAAK3K,QAAQyQ,KAAKzL,IAAI;AACrC4G,aAAKjB,KAAK;UAACkX;UAAM7hB;UAAQV,OAAO6kD;UAAOhgD;UAAOygC;UAAUr0B;QAAI,CAAA;AAC5D5F,YAAIu3B,QAAO;AACXv3B,YAAIq3B,KAAI;AACRujB,uBAAe56C,KAAK3K,QAAQyQ,KAAK3L,KAAK;AACtCugD,oBAAYF;;;AAGhBv5C,SAAKjB,KAAK;MAACkX;MAAM7hB;MAAQV,OAAO+lD;MAAWlhD;MAAOygC;MAAUr0B;IAAI,CAAA;AAEhE5F,QAAIu3B,QAAO;EACb;AAEA,WAASojB,aAAa36C,KAAK3K,QAAQwlD,OAAO;AACxC,UAAM,EAACjK,UAAU9/B,OAAAA,IAAUzb;AAC3B,QAAIk0B,QAAQ;AACZ,QAAIuxB,WAAW;AAEf96C,QAAI83B,UAAS;AACb,eAAWrgB,WAAWm5B,UAAU;AAC9B,YAAM,EAAC/+C,OAAAA,QAAO+H,IAAAA,IAAO6d;AACrB,YAAMS,aAAapH,OAAOjf,MAAM;AAChC,YAAMsmB,YAAYrH,OAAO2mC,gBAAgB5lD,QAAO+H,KAAKkX,MAAQ,CAAA;AAC7D,UAAIyY,OAAO;AACTvpB,YAAI+3B,OAAO7f,WAAWle,GAAGke,WAAWje,CAAC;AACrCsvB,gBAAQ;aACH;AACLvpB,YAAIg4B,OAAO9f,WAAWle,GAAG6gD,KAAAA;AACzB76C,YAAIg4B,OAAO9f,WAAWle,GAAGke,WAAWje,CAAC;;AAEvC6gD,iBAAW,CAAC,CAACzlD,OAAOk6C,YAAYvvC,KAAKyX,SAAS;QAACjP,MAAMsyC;MAAQ,CAAA;AAC7D,UAAIA,UAAU;AACZ96C,YAAIqqC,UAAS;aACR;AACLrqC,YAAIg4B,OAAO7f,UAAUne,GAAG6gD,KAAAA;;IAE5B;AAEA76C,QAAIg4B,OAAO3iC,OAAOk0B,MAAK,EAAGvvB,GAAG6gD,KAAAA;AAC7B76C,QAAIqqC,UAAS;AACbrqC,QAAI4F,KAAI;EACV;AAEA,WAASg1C,eAAe56C,KAAK3K,QAAQ0lD,OAAO;AAC1C,UAAM,EAACnK,UAAU9/B,OAAAA,IAAUzb;AAC3B,QAAIk0B,QAAQ;AACZ,QAAIuxB,WAAW;AAEf96C,QAAI83B,UAAS;AACb,eAAWrgB,WAAWm5B,UAAU;AAC9B,YAAM,EAAC/+C,OAAAA,QAAO+H,IAAAA,IAAO6d;AACrB,YAAMS,aAAapH,OAAOjf,MAAM;AAChC,YAAMsmB,YAAYrH,OAAO2mC,gBAAgB5lD,QAAO+H,KAAKkX,MAAQ,CAAA;AAC7D,UAAIyY,OAAO;AACTvpB,YAAI+3B,OAAO7f,WAAWle,GAAGke,WAAWje,CAAC;AACrCsvB,gBAAQ;aACH;AACLvpB,YAAIg4B,OAAO+iB,OAAO7iC,WAAWje,CAAC;AAC9B+F,YAAIg4B,OAAO9f,WAAWle,GAAGke,WAAWje,CAAC;;AAEvC6gD,iBAAW,CAAC,CAACzlD,OAAOk6C,YAAYvvC,KAAKyX,SAAS;QAACjP,MAAMsyC;MAAQ,CAAA;AAC7D,UAAIA,UAAU;AACZ96C,YAAIqqC,UAAS;aACR;AACLrqC,YAAIg4B,OAAO+iB,OAAO5iC,UAAUle,CAAC;;IAEjC;AAEA+F,QAAIg4B,OAAO+iB,OAAO1lD,OAAOk0B,MAAK,EAAGtvB,CAAC;AAClC+F,QAAIqqC,UAAS;AACbrqC,QAAI4F,KAAI;EACV;AAEA,WAAS3E,KAAKjB,KAAK5K,KAAK;AACtB,UAAM,EAAC8hB,MAAM7hB,QAAQ4kC,UAAUtlC,OAAAA,QAAO6E,OAAOoM,KAAAA,IAAQxQ;AACrD,UAAMw7C,WAAWM,UAAUh6B,MAAM7hB,QAAQ4kC,QAAAA;AAEzC,eAAW,EAACrK,QAAQorB,KAAK3lD,QAAQuiD,KAAK/lD,OAAAA,QAAO+H,IAAG,KAAKg3C,UAAU;AAC7D,YAAM,EAACh9B,OAAO,EAACG,iBAAAA,mBAAkBpf,OAAAA,IAAS,CAAA,EAAE,IAAIqmD;AAChD,YAAMC,WAAW5lD,WAAW;AAE5B2K,UAAIq3B,KAAI;AACRr3B,UAAI8T,YAAYC;AAEhBmnC,iBAAWl7C,KAAKxG,OAAOoM,MAAMq1C,YAAYvD,WAAWzd,UAAUpoC,QAAO+H,GAAAA,CAAAA;AAErEoG,UAAI83B,UAAS;AAEb,YAAMgjB,WAAW,CAAC,CAAC5jC,KAAKq4B,YAAYvvC,KAAKg7C,GAAAA;AAEzC,UAAI9kD;AACJ,UAAI+kD,UAAU;AACZ,YAAIH,UAAU;AACZ96C,cAAIqqC,UAAS;eACR;AACL8Q,6BAAmBn7C,KAAK3K,QAAQuE,KAAKqgC,QAAAA;;AAGvC,cAAMmhB,aAAa,CAAC,CAAC/lD,OAAOk6C,YAAYvvC,KAAK43C,KAAK;UAACpvC,MAAMsyC;UAAUnhD,SAAS;QAAI,CAAA;AAChFzD,eAAO4kD,YAAYM;AACnB,YAAI,CAACllD,MAAM;AACTilD,6BAAmBn7C,KAAK3K,QAAQxD,QAAOooC,QAAAA;;;AAI3Cj6B,UAAIqqC,UAAS;AACbrqC,UAAIiB,KAAK/K,OAAO,YAAY,SAAS;AAErC8J,UAAIu3B,QAAO;IACb;EACF;AAEA,WAAS2jB,WAAWl7C,KAAKxG,OAAOoM,MAAMstC,QAAQ;AAC5C,UAAMntC,YAAYvM,MAAMzI,MAAMgV;AAC9B,UAAM,EAACk0B,UAAUpoC,OAAAA,QAAO+H,IAAG,IAAIs5C,UAAU,CAAA;AAEzC,QAAIjZ,aAAa,OAAOA,aAAa,KAAK;AACxC,UAAI5/B,MAAMH,KAAKC,OAAOC;AAEtB,UAAI6/B,aAAa,KAAK;AACpB5/B,eAAOxI;AACPqI,cAAM6L,UAAU7L;AAChBC,gBAAQP;AACRQ,iBAAS2L,UAAU3L;aACd;AACLC,eAAO0L,UAAU1L;AACjBH,cAAMrI;AACNsI,gBAAQ4L,UAAU5L;AAClBC,iBAASR;;AAGXoG,UAAI83B,UAAS;AAEb,UAAIlyB,MAAM;AACRvL,eAAO1I,KAAKoC,IAAIsG,MAAMuL,KAAKvL,IAAI;AAC/BF,gBAAQxI,KAAKC,IAAIuI,OAAOyL,KAAKzL,KAAK;AAClCD,cAAMvI,KAAKoC,IAAImG,KAAK0L,KAAK1L,GAAG;AAC5BE,iBAASzI,KAAKC,IAAIwI,QAAQwL,KAAKxL,MAAM;;AAGvC4F,UAAIsqC,KAAKjwC,MAAMH,KAAKC,QAAQE,MAAMD,SAASF,GAAAA;AAC3C8F,UAAI4F,KAAI;;EAEZ;AAEA,WAASu1C,mBAAmBn7C,KAAK3K,QAAQ0b,OAAOkpB,UAAU;AACxD,UAAMohB,oBAAoBhmD,OAAOi8C,YAAYvgC,OAAOkpB,QAAAA;AACpD,QAAIohB,mBAAmB;AACrBr7C,UAAIg4B,OAAOqjB,kBAAkBrhD,GAAGqhD,kBAAkBphD,CAAC;;EAEvD;AC9KA,MAAA,QAAe;IACb0C,IAAI;IAEJ2+C,oBAAoBvqD,OAAO8jD,OAAOt8C,SAAS;AACzC,YAAMsL,SAAS9S,MAAM8K,KAAKyG,YAAY,CAAA,GAAI9P;AAC1C,YAAMgmD,UAAU,CAAA;AAChB,UAAI18C,MAAMrJ,IAAGykB,MAAM0Y;AAEnB,WAAKn9B,KAAI,GAAGA,KAAIoR,OAAO,EAAEpR,IAAG;AAC1BqJ,eAAO/K,MAAMwR,eAAe9P,EAAAA;AAC5BykB,eAAOpb,KAAK+C;AACZ+wB,iBAAS;AAET,YAAI1Y,QAAQA,KAAK3e,WAAW2e,gBAAgB65B,aAAa;AACvDnhB,mBAAS;YACPoW,SAASj1C,MAAMikB,iBAAiBviB,EAAAA;YAChCwI,OAAOxI;YACPwO,MAAM03C,YAAYzhC,MAAMzkB,IAAGoR,KAAAA;YAC3B9S;YACAmL,MAAMJ,KAAK6B,WAAWpF,QAAQwJ;YAC9BvI,OAAOsC,KAAKE;YACZkb;UACF;;AAGFpb,aAAKy/C,UAAU3rB;AACf4oB,gBAAQ/kD,KAAKm8B,MAAAA;MACf;AAEA,WAAKn9B,KAAI,GAAGA,KAAIoR,OAAO,EAAEpR,IAAG;AAC1Bm9B,iBAAS4oB,QAAQ/lD,EAAE;AACnB,YAAI,CAACm9B,UAAUA,OAAO3uB,SAAS,OAAO;AACpC;;AAGF2uB,eAAO3uB,OAAOs3C,eAAeC,SAAS/lD,IAAG8F,QAAQkgD,SAAS;MAC5D;IACF;IAEA+C,WAAWzqD,OAAO8jD,OAAOt8C,SAAS;AAChC,YAAM7F,QAAO6F,QAAQkjD,aAAa;AAClC,YAAM3gD,WAAW/J,MAAMmrB,6BAA4B;AACnD,YAAMpW,OAAO/U,MAAMgV;AACnB,eAAStT,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,cAAMm9B,SAAS90B,SAASrI,EAAAA,EAAG8oD;AAC3B,YAAI,CAAC3rB,QAAQ;AACX;;AAGFA,eAAO1Y,KAAKkB,oBAAoBtS,MAAM8pB,OAAO1zB,IAAI;AACjD,YAAIxJ,SAAQk9B,OAAO3uB,MAAM;AACvBq5C,oBAAUvpD,MAAMiP,KAAK4vB,QAAQ9pB,IAAAA;;MAEjC;IACF;IAEA41C,mBAAmB3qD,OAAO8jD,OAAOt8C,SAAS;AACxC,UAAIA,QAAQkjD,aAAa,sBAAsB;AAC7C;;AAGF,YAAM3gD,WAAW/J,MAAMmrB,6BAA4B;AACnD,eAASzpB,KAAIqI,SAAStI,SAAS,GAAGC,MAAK,GAAG,EAAEA,IAAG;AAC7C,cAAMm9B,SAAS90B,SAASrI,EAAAA,EAAG8oD;AAE3B,YAAIjD,iBAAiB1oB,MAAS,GAAA;AAC5B0qB,oBAAUvpD,MAAMiP,KAAK4vB,QAAQ7+B,MAAMgV,SAAS;;MAEhD;IACF;IAEA41C,kBAAkB5qD,OAAO+X,MAAMvQ,SAAS;AACtC,YAAMq3B,SAAS9mB,KAAKhN,KAAKy/C;AAEzB,UAAI,CAACjD,iBAAiB1oB,MAAAA,KAAWr3B,QAAQkjD,aAAa,qBAAqB;AACzE;;AAGFnB,gBAAUvpD,MAAMiP,KAAK4vB,QAAQ7+B,MAAMgV,SAAS;IAC9C;IAEAnO,UAAU;MACR6gD,WAAW;MACXgD,UAAU;IACZ;EACF;ACzEA,MAAMG,aAAa,CAACC,WAAW9iB,aAAa;AAC1C,QAAI,EAAC+iB,YAAY/iB,UAAUgjB,WAAWhjB,SAAAA,IAAY8iB;AAElD,QAAIA,UAAUG,eAAe;AAC3BF,kBAAYnqD,KAAKC,IAAIkqD,WAAW/iB,QAAAA;AAChCgjB,iBAAWF,UAAUI,mBAAmBtqD,KAAKC,IAAImqD,UAAUhjB,QAAAA;;AAG7D,WAAO;MACLgjB;MACAD;MACAI,YAAYvqD,KAAKoC,IAAIglC,UAAU+iB,SAAAA;IACjC;EACF;AAEA,MAAMK,aAAa,CAACryC,IAAGrP,OAAMqP,OAAM,QAAQrP,OAAM,QAAQqP,GAAEvO,iBAAiBd,GAAEc,gBAAgBuO,GAAE7O,UAAUR,GAAEQ;AAErG,MAAMmhD,SAAN,cAAqB9zB,SAAAA;IAK1B/3B,YAAY6G,SAAQ;AAClB,YAAK;AAEL,WAAKilD,SAAS;AAGd,WAAKC,iBAAiB,CAAA;AAKtB,WAAKC,eAAe;AAGpB,WAAKC,eAAe;AAEpB,WAAKzrD,QAAQqG,QAAOrG;AACpB,WAAKwH,UAAUnB,QAAOmB;AACtB,WAAKyH,MAAM5I,QAAO4I;AAClB,WAAKy8C,cAAc5rD;AACnB,WAAK6rD,cAAc7rD;AACnB,WAAK8rD,aAAa9rD;AAClB,WAAK4kB,YAAY5kB;AACjB,WAAK2kB,WAAW3kB;AAChB,WAAKqJ,MAAMrJ;AACX,WAAKuJ,SAASvJ;AACd,WAAKwJ,OAAOxJ;AACZ,WAAKsJ,QAAQtJ;AACb,WAAKyd,SAASzd;AACd,WAAK0d,QAAQ1d;AACb,WAAKg8B,WAAWh8B;AAChB,WAAKmrB,WAAWnrB;AAChB,WAAKimB,SAASjmB;AACd,WAAK8uB,WAAW9uB;IAClB;IAEA4F,OAAO+e,UAAUC,WAAWiZ,SAAS;AACnC,WAAKlZ,WAAWA;AAChB,WAAKC,YAAYA;AACjB,WAAKoX,WAAW6B;AAEhB,WAAKI,cAAa;AAClB,WAAK8tB,YAAW;AAChB,WAAK7sB,IAAG;IACV;IAEAjB,gBAAgB;AACd,UAAI,KAAK5iB,aAAY,GAAI;AACvB,aAAKqC,QAAQ,KAAKiH;AAClB,aAAKnb,OAAO,KAAKwyB,SAASxyB;AAC1B,aAAKF,QAAQ,KAAKoU;aACb;AACL,aAAKD,SAAS,KAAKmH;AACnB,aAAKvb,MAAM,KAAK2yB,SAAS3yB;AACzB,aAAKE,SAAS,KAAKkU;;IAEvB;IAEAsuC,cAAc;AACZ,YAAMf,YAAY,KAAKtjD,QAAQ8L,UAAU,CAAA;AACzC,UAAIo4C,cAAczqD,SAAK6pD,UAAUpoC,gBAAgB;QAAC,KAAK1iB;SAAQ,IAAI,KAAK,CAAA;AAExE,UAAI8qD,UAAUr9C,QAAQ;AACpBi+C,sBAAcA,YAAYj+C,OAAO,CAAC7L,SAASkpD,UAAUr9C,OAAO7L,MAAM,KAAK5B,MAAM8K,IAAI,CAAA;;AAGnF,UAAIggD,UAAUhyC,MAAM;AAClB4yC,sBAAcA,YAAY5yC,KAAK,CAACC,IAAGrP,OAAMohD,UAAUhyC,KAAKC,IAAGrP,IAAG,KAAK1J,MAAM8K,IAAI,CAAA;;AAG/E,UAAI,KAAKtD,QAAQoB,SAAS;AACxB8iD,oBAAY9iD,QAAO;;AAGrB,WAAK8iD,cAAcA;IACrB;IAEA1sB,MAAM;AACJ,YAAM,EAACx3B,SAASyH,IAAG,IAAI;AAMvB,UAAI,CAACzH,QAAQggB,SAAS;AACpB,aAAKhK,QAAQ,KAAKD,SAAS;AAC3B;;AAGF,YAAMutC,YAAYtjD,QAAQ8L;AAC1B,YAAMw4C,YAAY7wB,OAAO6vB,UAAU9vB,IAAI;AACvC,YAAMgN,WAAW8jB,UAAU3jD;AAC3B,YAAM24B,cAAc,KAAKirB,oBAAmB;AAC5C,YAAM,EAACf,UAAUG,WAAAA,IAAcN,WAAWC,WAAW9iB,QAAAA;AAErD,UAAIxqB,OAAOD;AAEXtO,UAAI+rB,OAAO8wB,UAAUzpB;AAErB,UAAI,KAAKlnB,aAAY,GAAI;AACvBqC,gBAAQ,KAAKiH;AACblH,iBAAS,KAAKyuC,SAASlrB,aAAakH,UAAUgjB,UAAUG,UAAc,IAAA;aACjE;AACL5tC,iBAAS,KAAKmH;AACdlH,gBAAQ,KAAKyuC,SAASnrB,aAAagrB,WAAWd,UAAUG,UAAc,IAAA;;AAGxE,WAAK3tC,QAAQ5c,KAAKC,IAAI2c,OAAOhW,QAAQid,YAAY,KAAKA,QAAQ;AAC9D,WAAKlH,SAAS3c,KAAKC,IAAI0c,QAAQ/V,QAAQkd,aAAa,KAAKA,SAAS;IACpE;IAKAsnC,SAASlrB,aAAakH,UAAUgjB,UAAUG,YAAY;AACpD,YAAM,EAACl8C,KAAKwV,UAAUjd,SAAS,EAAC8L,QAAQ,EAAC6d,QAAAA,EAAQ,EAAC,IAAI;AACtD,YAAM+6B,WAAW,KAAKX,iBAAiB,CAAA;AAEvC,YAAMK,aAAa,KAAKA,aAAa;QAAC;MAAE;AACxC,YAAMzwB,aAAagwB,aAAah6B;AAChC,UAAIg7B,cAAcrrB;AAElB7xB,UAAIg2B,YAAY;AAChBh2B,UAAIm2B,eAAe;AAEnB,UAAIgnB,MAAM;AACV,UAAIjjD,MAAM,CAACgyB;AACX,WAAKuwB,YAAYlrD,QAAQ,CAACgjB,YAAY9hB,OAAM;AAC1C,cAAM2qD,YAAYrB,WAAYhjB,WAAW,IAAK/4B,IAAIq9C,YAAY9oC,WAAWV,IAAI,EAAEtF;AAE/E,YAAI9b,OAAM,KAAKkqD,WAAWA,WAAWnqD,SAAS,CAAA,IAAK4qD,YAAY,IAAIl7B,UAAU1M,UAAU;AACrF0nC,yBAAehxB;AACfywB,qBAAWA,WAAWnqD,UAAUC,KAAI,IAAI,IAAI,EAAA,IAAM;AAClDyH,iBAAOgyB;AACPixB;;AAGFF,iBAASxqD,EAAAA,IAAK;UAAC4H,MAAM;UAAGH;UAAKijD;UAAK5uC,OAAO6uC;UAAW9uC,QAAQ4tC;QAAU;AAEtES,mBAAWA,WAAWnqD,SAAS,CAAA,KAAM4qD,YAAYl7B;MACnD,CAAA;AAEA,aAAOg7B;IACT;IAEAF,SAASnrB,aAAagrB,WAAWd,UAAUuB,aAAa;AACtD,YAAM,EAACt9C,KAAKyV,WAAWld,SAAS,EAAC8L,QAAQ,EAAC6d,QAAAA,EAAQ,EAAC,IAAI;AACvD,YAAM+6B,WAAW,KAAKX,iBAAiB,CAAA;AACvC,YAAMI,cAAc,KAAKA,cAAc,CAAA;AACvC,YAAMa,cAAc9nC,YAAYoc;AAEhC,UAAI2rB,aAAat7B;AACjB,UAAIu7B,kBAAkB;AACtB,UAAIC,mBAAmB;AAEvB,UAAIrjD,OAAO;AACX,UAAIsjD,MAAM;AAEV,WAAKlB,YAAYlrD,QAAQ,CAACgjB,YAAY9hB,OAAM;AAC1C,cAAM,EAAC2qD,WAAWlB,WAAU,IAAI0B,kBAAkB7B,UAAUc,WAAW78C,KAAKuU,YAAY+oC,WAAAA;AAGxF,YAAI7qD,KAAI,KAAKirD,mBAAmBxB,aAAa,IAAIh6B,UAAUq7B,aAAa;AACtEC,wBAAcC,kBAAkBv7B;AAChCw6B,sBAAYjpD,KAAK;YAAC8a,OAAOkvC;YAAiBnvC,QAAQovC;UAAgB,CAAA;AAClErjD,kBAAQojD,kBAAkBv7B;AAC1By7B;AACAF,4BAAkBC,mBAAmB;;AAIvCT,iBAASxqD,EAAAA,IAAK;UAAC4H;UAAMH,KAAKwjD;UAAkBC;UAAKpvC,OAAO6uC;UAAW9uC,QAAQ4tC;QAAU;AAGrFuB,0BAAkB9rD,KAAKoC,IAAI0pD,iBAAiBL,SAAAA;AAC5CM,4BAAoBxB,aAAah6B;MACnC,CAAA;AAEAs7B,oBAAcC;AACdf,kBAAYjpD,KAAK;QAAC8a,OAAOkvC;QAAiBnvC,QAAQovC;MAAgB,CAAA;AAElE,aAAOF;IACT;IAEAK,iBAAiB;AACf,UAAI,CAAC,KAAKtlD,QAAQggB,SAAS;AACzB;;AAEF,YAAMsZ,cAAc,KAAKirB,oBAAmB;AAC5C,YAAM,EAACR,gBAAgBW,UAAU1kD,SAAS,EAACoyB,OAAOtmB,QAAQ,EAAC6d,QAAO,GAAG47B,IAAAA,EAAI,IAAI;AAC7E,YAAMC,YAAYC,cAAcF,KAAK,KAAKzjD,MAAM,KAAKkU,KAAK;AAC1D,UAAI,KAAKrC,aAAY,GAAI;AACvB,YAAIixC,MAAM;AACV,YAAI9iD,OAAOqyB,eAAe/B,OAAO,KAAKtwB,OAAO6nB,SAAS,KAAK/nB,QAAQ,KAAKwiD,WAAWQ,GAAI,CAAA;AACvF,mBAAWc,UAAUhB,UAAU;AAC7B,cAAIE,QAAQc,OAAOd,KAAK;AACtBA,kBAAMc,OAAOd;AACb9iD,mBAAOqyB,eAAe/B,OAAO,KAAKtwB,OAAO6nB,SAAS,KAAK/nB,QAAQ,KAAKwiD,WAAWQ,GAAI,CAAA;;AAErFc,iBAAO/jD,OAAO,KAAKA,MAAM23B,cAAc3P;AACvC+7B,iBAAO5jD,OAAO0jD,UAAUG,WAAWH,UAAU/jD,EAAEK,IAAO4jD,GAAAA,OAAO1vC,KAAK;AAClElU,kBAAQ4jD,OAAO1vC,QAAQ2T;QACzB;aACK;AACL,YAAIy7B,MAAM;AACV,YAAIzjD,MAAMwyB,eAAe/B,OAAO,KAAKzwB,MAAM23B,cAAc3P,SAAS,KAAK9nB,SAAS,KAAKsiD,YAAYiB,GAAAA,EAAKrvC,MAAM;AAC5G,mBAAW2vC,UAAUhB,UAAU;AAC7B,cAAIgB,OAAON,QAAQA,KAAK;AACtBA,kBAAMM,OAAON;AACbzjD,kBAAMwyB,eAAe/B,OAAO,KAAKzwB,MAAM23B,cAAc3P,SAAS,KAAK9nB,SAAS,KAAKsiD,YAAYiB,GAAAA,EAAKrvC,MAAM;;AAE1G2vC,iBAAO/jD,MAAMA;AACb+jD,iBAAO5jD,QAAQ,KAAKA,OAAO6nB;AAC3B+7B,iBAAO5jD,OAAO0jD,UAAUG,WAAWH,UAAU/jD,EAAEikD,OAAO5jD,IAAI,GAAG4jD,OAAO1vC,KAAK;AACzErU,iBAAO+jD,OAAO3vC,SAAS4T;QACzB;;IAEJ;IAEAhW,eAAe;AACb,aAAO,KAAK3T,QAAQyjB,aAAa,SAAS,KAAKzjB,QAAQyjB,aAAa;IACtE;IAEAtpB,OAAO;AACL,UAAI,KAAK6F,QAAQggB,SAAS;AACxB,cAAMvY,MAAM,KAAKA;AACjBs4B,iBAASt4B,KAAK,IAAI;AAElB,aAAKm+C,MAAK;AAEV1lB,mBAAWz4B,GAAAA;;IAEf;IAKAm+C,QAAQ;AACN,YAAM,EAAC5lD,SAASmB,MAAMgjD,aAAaC,YAAY38C,IAAAA,IAAO;AACtD,YAAM,EAAC2qB,OAAOtmB,QAAQw3C,UAAAA,IAAaniD;AACnC,YAAM0kD,eAAexmD,SAASjD;AAC9B,YAAMopD,YAAYC,cAActkD,KAAKokD,KAAK,KAAKzjD,MAAM,KAAKkU,KAAK;AAC/D,YAAMsuC,YAAY7wB,OAAO6vB,UAAU9vB,IAAI;AACvC,YAAM,EAAC7J,QAAO,IAAI25B;AAClB,YAAM9iB,WAAW8jB,UAAU3jD;AAC3B,YAAMmlD,eAAetlB,WAAW;AAChC,UAAIulB;AAEJ,WAAK5lB,UAAS;AAGd14B,UAAIg2B,YAAY+nB,UAAU/nB,UAAU,MAAA;AACpCh2B,UAAIm2B,eAAe;AACnBn2B,UAAImU,YAAY;AAChBnU,UAAI+rB,OAAO8wB,UAAUzpB;AAErB,YAAM,EAAC2oB,UAAUD,WAAWI,WAAU,IAAIN,WAAWC,WAAW9iB,QAAAA;AAGhE,YAAMwlB,gBAAgB,SAASvkD,IAAGC,IAAGsa,YAAY;AAC/C,YAAIxF,MAAMgtC,QAAaA,KAAAA,YAAY,KAAKhtC,MAAM+sC,SAAAA,KAAcA,YAAY,GAAG;AACzE;;AAIF97C,YAAIq3B,KAAI;AAER,cAAMljB,YAAYzS,eAAe6S,WAAWJ,WAAW,CAAA;AACvDnU,YAAI8T,YAAYpS,eAAe6S,WAAWT,WAAWsqC,YAAAA;AACrDp+C,YAAIwuC,UAAU9sC,eAAe6S,WAAWi6B,SAAS,MAAA;AACjDxuC,YAAI63B,iBAAiBn2B,eAAe6S,WAAWsjB,gBAAgB,CAAA;AAC/D73B,YAAIwtC,WAAW9rC,eAAe6S,WAAWi5B,UAAU,OAAA;AACnDxtC,YAAImU,YAAYA;AAChBnU,YAAIgU,cAActS,eAAe6S,WAAWP,aAAaoqC,YAAAA;AAEzDp+C,YAAI43B,YAAYl2B,eAAe6S,WAAWiqC,UAAU,CAAA,CAAE,CAAA;AAEtD,YAAI3C,UAAUG,eAAe;AAG3B,gBAAMyC,cAAc;YAClB5tC,QAAQirC,YAAYnqD,KAAK+sD,QAAQ;YACjChrC,YAAYa,WAAWb;YACvBtC,UAAUmD,WAAWnD;YACrBgD,aAAaD;UACf;AACA,gBAAMiC,UAAU2nC,UAAUY,MAAM3kD,IAAG+hD,WAAW,CAAA;AAC9C,gBAAM1lC,UAAUpc,KAAIokD;AAGpBO,0BAAgB5+C,KAAKy+C,aAAaroC,SAASC,SAASwlC,UAAUI,mBAAmBF,QAAAA;eAC5E;AAGL,gBAAM8C,UAAU5kD,KAAItI,KAAKoC,KAAKglC,WAAW+iB,aAAa,GAAG,CAAA;AACzD,gBAAMgD,WAAWf,UAAUG,WAAWlkD,IAAG+hD,QAAAA;AACzC,gBAAMhR,eAAe2H,cAAcn+B,WAAWw2B,YAAY;AAE1D/qC,cAAI83B,UAAS;AAEb,cAAIpgC,OAAOW,OAAO0yC,YAAAA,EAAc5N,KAAKnwB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClD8mC,+BAAmB9zC,KAAK;cACtBhG,GAAG8kD;cACH7kD,GAAG4kD;cACH99B,GAAGg7B;cACH96B,GAAG66B;cACHjrC,QAAQk6B;YACV,CAAA;iBACK;AACL/qC,gBAAIsqC,KAAKwU,UAAUD,SAAS9C,UAAUD,SAAAA;;AAGxC97C,cAAIiB,KAAI;AACR,cAAIkT,cAAc,GAAG;AACnBnU,gBAAIi4B,OAAM;;;AAIdj4B,YAAIu3B,QAAO;MACb;AAEA,YAAMwnB,WAAW,SAAS/kD,IAAGC,IAAGsa,YAAY;AAC1CikB,mBAAWx4B,KAAKuU,WAAWV,MAAM7Z,IAAGC,KAAKiiD,aAAa,GAAIW,WAAW;UACnEmC,eAAezqC,WAAW7U;UAC1Bs2B,WAAW+nB,UAAU/nB,UAAUzhB,WAAWyhB,SAAS;QACrD,CAAA;MACF;AAGA,YAAM9pB,eAAe,KAAKA,aAAY;AACtC,YAAM2lB,cAAc,KAAKirB,oBAAmB;AAC5C,UAAI5wC,cAAc;AAChBoyC,iBAAS;UACPtkD,GAAG0yB,eAAe/B,OAAO,KAAKtwB,OAAO6nB,SAAS,KAAK/nB,QAAQwiD,WAAW,CAAE,CAAA;UACxE1iD,GAAG,KAAKC,MAAMgoB,UAAU2P;UACxB3a,MAAM;QACR;aACK;AACLonC,iBAAS;UACPtkD,GAAG,KAAKK,OAAO6nB;UACfjoB,GAAGyyB,eAAe/B,OAAO,KAAKzwB,MAAM23B,cAAc3P,SAAS,KAAK9nB,SAASsiD,YAAY,CAAA,EAAGpuC,MAAM;UAC9F4I,MAAM;QACR;;AAGF+nC,4BAAsB,KAAKj/C,KAAKtG,KAAKwlD,aAAa;AAElD,YAAMhzB,aAAagwB,aAAah6B;AAChC,WAAKu6B,YAAYlrD,QAAQ,CAACgjB,YAAY9hB,OAAM;AAC1CuN,YAAIgU,cAAcO,WAAWL;AAC7BlU,YAAI8T,YAAYS,WAAWL;AAE3B,cAAMirC,YAAYn/C,IAAIq9C,YAAY9oC,WAAWV,IAAI,EAAEtF;AACnD,cAAMynB,YAAY+nB,UAAU/nB,UAAUzhB,WAAWyhB,cAAczhB,WAAWyhB,YAAY6lB,UAAU7lB,UAAQ;AACxG,cAAMznB,QAAQwtC,WAAWsC,eAAec;AACxC,YAAInlD,KAAIskD,OAAOtkD;AACf,YAAIC,KAAIqkD,OAAOrkD;AAEf8jD,kBAAUqB,SAAS,KAAK7wC,KAAK;AAE7B,YAAIrC,cAAc;AAChB,cAAIzZ,KAAI,KAAKuH,KAAIuU,QAAQ2T,UAAU,KAAK/nB,OAAO;AAC7CF,YAAAA,KAAIqkD,OAAOrkD,KAAKiyB;AAChBoyB,mBAAOpnC;AACPld,YAAAA,KAAIskD,OAAOtkD,IAAI0yB,eAAe/B,OAAO,KAAKtwB,OAAO6nB,SAAS,KAAK/nB,QAAQwiD,WAAW2B,OAAOpnC,IAAI,CAAC;;mBAEvFzkB,KAAI,KAAKwH,KAAIiyB,aAAa,KAAK9xB,QAAQ;AAChDJ,UAAAA,KAAIskD,OAAOtkD,IAAIA,KAAI0iD,YAAY4B,OAAOpnC,IAAI,EAAE3I,QAAQ2T;AACpDo8B,iBAAOpnC;AACPjd,UAAAA,KAAIqkD,OAAOrkD,IAAIyyB,eAAe/B,OAAO,KAAKzwB,MAAM23B,cAAc3P,SAAS,KAAK9nB,SAASsiD,YAAY4B,OAAOpnC,IAAI,EAAE5I,MAAM;;AAGtH,cAAM+wC,QAAQtB,UAAU/jD,EAAEA,EAAAA;AAE1BukD,sBAAcc,OAAOplD,IAAGsa,UAAAA;AAExBva,QAAAA,KAAIslD,OAAOtpB,WAAWh8B,KAAI+hD,WAAWsC,cAAcnyC,eAAelS,KAAIuU,QAAQ,KAAKpU,OAAOT,KAAKokD,GAAG;AAGlGiB,iBAAShB,UAAU/jD,EAAEA,EAAAA,GAAIC,IAAGsa,UAAAA;AAE5B,YAAIrI,cAAc;AAChBoyC,iBAAOtkD,KAAKuU,QAAQ2T;QACtB,WAAW,OAAO3N,WAAWV,SAAS,UAAU;AAC9C,gBAAM0rC,iBAAiB1C,UAAU3wB;AACjCoyB,iBAAOrkD,KAAKulD,0BAA0BjrC,YAAYgrC,cAAkBr9B,IAAAA;eAC/D;AACLo8B,iBAAOrkD,KAAKiyB;;MAEhB,CAAA;AAEAuzB,2BAAqB,KAAKz/C,KAAKtG,KAAKwlD,aAAa;IACnD;IAKAxmB,YAAY;AACV,YAAMh/B,OAAO,KAAKnB;AAClB,YAAMo5B,YAAYj4B,KAAK83B;AACvB,YAAMkuB,YAAY1zB,OAAO2F,UAAU5F,IAAI;AACvC,YAAM4zB,eAAel9B,UAAUkP,UAAUzP,OAAO;AAEhD,UAAI,CAACyP,UAAUpZ,SAAS;AACtB;;AAGF,YAAMwlC,YAAYC,cAActkD,KAAKokD,KAAK,KAAKzjD,MAAM,KAAKkU,KAAK;AAC/D,YAAMvO,MAAM,KAAKA;AACjB,YAAMgc,WAAW2V,UAAU3V;AAC3B,YAAMqiC,eAAeqB,UAAUxmD,OAAO;AACtC,YAAM0mD,6BAA6BD,aAAazlD,MAAMmkD;AACtD,UAAIpkD;AAIJ,UAAII,OAAO,KAAKA;AAChB,UAAImb,WAAW,KAAKjH;AAEpB,UAAI,KAAKrC,aAAY,GAAI;AAEvBsJ,mBAAW7jB,KAAKoC,IAAO,GAAA,KAAK4oD,UAAU;AACtC1iD,QAAAA,KAAI,KAAKC,MAAM0lD;AACfvlD,eAAOqyB,eAAehzB,KAAKixB,OAAOtwB,MAAM,KAAKF,QAAQqb,QAAAA;aAChD;AAEL,cAAMC,YAAY,KAAKinC,YAAY9oD,OAAO,CAACC,KAAKqF,SAASvH,KAAKoC,IAAIF,KAAKqF,KAAKoV,MAAM,GAAG,CAAA;AACrFrU,QAAAA,KAAI2lD,6BAA6BlzB,eAAehzB,KAAKixB,OAAO,KAAKzwB,KAAK,KAAKE,SAASqb,YAAY/b,KAAK2K,OAAO6d,UAAU,KAAK46B,oBAAmB,CAAA;;AAKhJ,YAAM9iD,KAAI0yB,eAAe1Q,UAAU3hB,MAAMA,OAAOmb,QAAAA;AAGhDxV,UAAIg2B,YAAY+nB,UAAU/nB,UAAU1J,mBAAmBtQ,QAAAA,CAAAA;AACvDhc,UAAIm2B,eAAe;AACnBn2B,UAAIgU,cAAc2d,UAAUh9B;AAC5BqL,UAAI8T,YAAY6d,UAAUh9B;AAC1BqL,UAAI+rB,OAAO2zB,UAAUtsB;AAErBoF,iBAAWx4B,KAAK2xB,UAAU9d,MAAM7Z,IAAGC,IAAGylD,SAAAA;IACxC;IAKA5C,sBAAsB;AACpB,YAAMnrB,YAAY,KAAKp5B,QAAQi5B;AAC/B,YAAMkuB,YAAY1zB,OAAO2F,UAAU5F,IAAI;AACvC,YAAM4zB,eAAel9B,UAAUkP,UAAUzP,OAAO;AAChD,aAAOyP,UAAUpZ,UAAUmnC,UAAUxzB,aAAayzB,aAAarxC,SAAS;IAC1E;IAKAuxC,iBAAiB7lD,IAAGC,IAAG;AACrB,UAAIxH,IAAGqtD,QAAQC;AAEf,UAAI9R,WAAWj0C,IAAG,KAAKK,MAAM,KAAKF,KAAK,KAClC8zC,WAAWh0C,IAAG,KAAKC,KAAK,KAAKE,MAAM,GAAG;AAEzC2lD,aAAK,KAAKzD;AACV,aAAK7pD,KAAI,GAAGA,KAAIstD,GAAGvtD,QAAQ,EAAEC,IAAG;AAC9BqtD,mBAASC,GAAGttD,EAAE;AAEd,cAAIw7C,WAAWj0C,IAAG8lD,OAAOzlD,MAAMylD,OAAOzlD,OAAOylD,OAAOvxC,KAAK,KACpD0/B,WAAWh0C,IAAG6lD,OAAO5lD,KAAK4lD,OAAO5lD,MAAM4lD,OAAOxxC,MAAM,GAAG;AAE1D,mBAAO,KAAKmuC,YAAYhqD,EAAE;;QAE9B;;AAGF,aAAO;IACT;IAMAutD,YAAY1rC,IAAG;AACb,YAAM5a,OAAO,KAAKnB;AAClB,UAAI,CAAC0nD,WAAW3rC,GAAEpjB,MAAMwI,IAAO,GAAA;AAC7B;;AAIF,YAAMwmD,cAAc,KAAKL,iBAAiBvrC,GAAEta,GAAGsa,GAAEra,CAAC;AAElD,UAAIqa,GAAEpjB,SAAS,eAAeojB,GAAEpjB,SAAS,YAAY;AACnD,cAAMw9C,WAAW,KAAK6N;AACtB,cAAM4D,WAAWhE,WAAWzN,UAAUwR,WAAAA;AACtC,YAAIxR,YAAY,CAACyR,UAAU;AACzBnuD,mBAAK0H,KAAK0mD,SAAS;YAAC9rC;YAAGo6B;YAAU;UAAK,GAAE,IAAI;;AAG9C,aAAK6N,eAAe2D;AAEpB,YAAIA,eAAe,CAACC,UAAU;AAC5BnuD,mBAAK0H,KAAKowC,SAAS;YAACx1B;YAAG4rC;YAAa;UAAK,GAAE,IAAI;;MAEnD,WAAWA,aAAa;AACtBluD,iBAAK0H,KAAK2a,SAAS;UAACC;UAAG4rC;UAAa;QAAK,GAAE,IAAI;;IAEnD;EACF;AAEA,WAAStC,kBAAkB7B,UAAUc,WAAW78C,KAAKuU,YAAY+oC,aAAa;AAC5E,UAAMF,YAAYiD,mBAAmB9rC,YAAYwnC,UAAUc,WAAW78C,GAAAA;AACtE,UAAMk8C,aAAaoE,oBAAoBhD,aAAa/oC,YAAYsoC,UAAU3wB,UAAU;AACpF,WAAO;MAACkxB;MAAWlB;IAAU;EAC/B;AAEA,WAASmE,mBAAmB9rC,YAAYwnC,UAAUc,WAAW78C,KAAK;AAChE,QAAIugD,iBAAiBhsC,WAAWV;AAChC,QAAI0sC,kBAAkB,OAAOA,mBAAmB,UAAU;AACxDA,uBAAiBA,eAAe3sD,OAAO,CAACkW,IAAGrP,OAAMqP,GAAEtX,SAASiI,GAAEjI,SAASsX,KAAIrP,EAAC;;AAE9E,WAAOshD,WAAYc,UAAU3jD,OAAO,IAAK8G,IAAIq9C,YAAYkD,cAAAA,EAAgBhyC;EAC3E;AAEA,WAAS+xC,oBAAoBhD,aAAa/oC,YAAYgrC,gBAAgB;AACpE,QAAIrD,aAAaoB;AACjB,QAAI,OAAO/oC,WAAWV,SAAS,UAAU;AACvCqoC,mBAAasD,0BAA0BjrC,YAAYgrC,cAAAA;;AAErD,WAAOrD;EACT;AAEA,WAASsD,0BAA0BjrC,YAAYgrC,gBAAgB;AAC7D,UAAMvtB,cAAczd,WAAWV,OAAOU,WAAWV,KAAKrhB,SAAS;AAC/D,WAAO+sD,iBAAiBvtB;EAC1B;AAEA,WAASiuB,WAAW/uD,MAAMwI,MAAM;AAC9B,SAAKxI,SAAS,eAAeA,SAAS,gBAAgBwI,KAAKowC,WAAWpwC,KAAK0mD,UAAU;AACnF,aAAO;;AAET,QAAI1mD,KAAK2a,YAAYnjB,SAAS,WAAWA,SAAS,YAAY;AAC5D,aAAO;;AAET,WAAO;EACT;AAEA,MAAA,gBAAe;IACbyL,IAAI;IAMJ6jD,UAAUpE;IAEVvqD,MAAMd,OAAO8jD,OAAOt8C,SAAS;AAC3B,YAAMib,SAASziB,MAAMyiB,SAAS,IAAI4oC,OAAO;QAACp8C,KAAKjP,MAAMiP;QAAKzH;QAASxH;MAAK,CAAA;AACxEkuB,cAAQ1nB,UAAUxG,OAAOyiB,QAAQjb,OAAAA;AACjC0mB,cAAQkD,OAAOpxB,OAAOyiB,MAAAA;IACxB;IAEAvf,KAAKlD,OAAO;AACVkuB,cAAQqD,UAAUvxB,OAAOA,MAAMyiB,MAAM;AACrC,aAAOziB,MAAMyiB;IACf;IAKAib,aAAa19B,OAAO8jD,OAAOt8C,SAAS;AAClC,YAAMib,SAASziB,MAAMyiB;AACrByL,cAAQ1nB,UAAUxG,OAAOyiB,QAAQjb,OAAAA;AACjCib,aAAOjb,UAAUA;IACnB;IAIA03B,YAAYl/B,OAAO;AACjB,YAAMyiB,SAASziB,MAAMyiB;AACrBA,aAAOopC,YAAW;AAClBppC,aAAOqqC,eAAc;IACvB;IAGA4C,WAAW1vD,OAAO+X,MAAM;AACtB,UAAI,CAACA,KAAKugC,QAAQ;AAChBt4C,cAAMyiB,OAAOwsC,YAAYl3C,KAAKvV,KAAK;;IAEvC;IAEAqE,UAAU;MACR2gB,SAAS;MACTyD,UAAU;MACV2O,OAAO;MACPhL,UAAU;MACVhmB,SAAS;MACTmd,QAAQ;MAGRzC,QAAQC,IAAGC,YAAYf,QAAQ;AAC7B,cAAMvY,SAAQsZ,WAAWhZ;AACzB,cAAMmlD,KAAKltC,OAAOziB;AAClB,YAAI2vD,GAAG1rC,iBAAiB/Z,MAAQ,GAAA;AAC9BylD,aAAGxY,KAAKjtC,MAAAA;AACRsZ,qBAAW7U,SAAS;eACf;AACLghD,aAAGvY,KAAKltC,MAAAA;AACRsZ,qBAAW7U,SAAS;;MAExB;MAEAoqC,SAAS;MACTsW,SAAS;MAET/7C,QAAQ;QACN1P,OAAO,CAACqL,QAAQA,IAAIjP,MAAMwH,QAAQ5D;QAClConD,UAAU;QACV75B,SAAS;QAYTzO,eAAe1iB,OAAO;AACpB,gBAAMuR,WAAWvR,MAAM8K,KAAKyG;AAC5B,gBAAM,EAAC+B,QAAQ,EAAC23C,eAAetoC,YAAYsiB,WAAWrhC,OAAAA,QAAOgsD,iBAAiB5V,aAAAA,EAAa,IAAIh6C,MAAMyiB,OAAOjb;AAE5G,iBAAOxH,MAAMgK,uBAAsB,EAAG4Y,IAAI,CAAC7X,SAAS;AAClD,kBAAM8X,QAAQ9X,KAAK6B,WAAWsI,SAAS+1C,gBAAgB,IAAInrD,MAAS;AACpE,kBAAMujB,cAAcqO,UAAU7O,MAAMQ,WAAW;AAE/C,mBAAO;cACLP,MAAMvR,SAASxG,KAAKb,KAAK,EAAEwK;cAC3BqO,WAAWF,MAAMG;cACjBG,WAAWvf;cACX+K,QAAQ,CAAC5D,KAAKkqC;cACdwI,SAAS56B,MAAM66B;cACf+P,UAAU5qC,MAAM0hB;cAChBuC,gBAAgBjkB,MAAM4hB;cACtBgY,UAAU55B,MAAMo2B;cAChB71B,YAAYC,YAAY7F,QAAQ6F,YAAY9F,UAAU;cACtD0F,aAAaJ,MAAMK;cACnBP,YAAYA,cAAcE,MAAMF;cAChCtC,UAAUwC,MAAMxC;cAChB4kB,WAAWA,aAAapiB,MAAMoiB;cAC9B+U,cAAc4V,oBAAoB5V,gBAAgBn3B,MAAMm3B;cAGxDxvC,cAAcO,KAAKb;YACrB;UACF,GAAG,IAAI;QACT;MACF;MAEAu2B,OAAO;QACL78B,OAAO,CAACqL,QAAQA,IAAIjP,MAAMwH,QAAQ5D;QAClC4jB,SAAS;QACTyD,UAAU;QACVnI,MAAM;MACR;IACF;IAEAX,aAAa;MACXC,aAAa,CAAC3D,UAAS,CAACA,MAAK6D,WAAW,IAAA;MACxChP,QAAQ;QACN8O,aAAa,CAAC3D,UAAS,CAAC;UAAC;UAAkB;UAAU;QAAO,EAAC2P,SAAS3P,KAAAA;MACxE;IACF;EACF;ACzsBO,MAAMoxC,QAAN,cAAoBt4B,SAAAA;IAIzB/3B,YAAY6G,SAAQ;AAClB,YAAK;AAEL,WAAKrG,QAAQqG,QAAOrG;AACpB,WAAKwH,UAAUnB,QAAOmB;AACtB,WAAKyH,MAAM5I,QAAO4I;AAClB,WAAK6gD,WAAWhwD;AAChB,WAAKqJ,MAAMrJ;AACX,WAAKuJ,SAASvJ;AACd,WAAKwJ,OAAOxJ;AACZ,WAAKsJ,QAAQtJ;AACb,WAAK0d,QAAQ1d;AACb,WAAKyd,SAASzd;AACd,WAAKmrB,WAAWnrB;AAChB,WAAKimB,SAASjmB;AACd,WAAK8uB,WAAW9uB;IAClB;IAEA4F,OAAO+e,UAAUC,WAAW;AAC1B,YAAM/b,OAAO,KAAKnB;AAElB,WAAK8B,OAAO;AACZ,WAAKH,MAAM;AAEX,UAAI,CAACR,KAAK6e,SAAS;AACjB,aAAKhK,QAAQ,KAAKD,SAAS,KAAKnU,QAAQ,KAAKC,SAAS;AACtD;;AAGF,WAAKmU,QAAQ,KAAKpU,QAAQqb;AAC1B,WAAKlH,SAAS,KAAKlU,SAASqb;AAE5B,YAAMwgB,YAAY/9B,SAAQwB,KAAKma,IAAI,IAAIna,KAAKma,KAAKrhB,SAAS;AAC1D,WAAKquD,WAAWp+B,UAAU/oB,KAAKwoB,OAAO;AACtC,YAAM4+B,WAAW7qB,YAAYjK,OAAOtyB,KAAKqyB,IAAI,EAAEG,aAAa,KAAK20B,SAASvyC;AAE1E,UAAI,KAAKpC,aAAY,GAAI;AACvB,aAAKoC,SAASwyC;aACT;AACL,aAAKvyC,QAAQuyC;;IAEjB;IAEA50C,eAAe;AACb,YAAMqS,MAAM,KAAKhmB,QAAQyjB;AACzB,aAAOuC,QAAQ,SAASA,QAAQ;IAClC;IAEAwiC,UAAUvzC,QAAQ;AAChB,YAAM,EAACtT,KAAKG,MAAMD,QAAQD,OAAO5B,QAAAA,IAAW;AAC5C,YAAMoyB,QAAQpyB,QAAQoyB;AACtB,UAAIvZ,WAAW;AACf,UAAIoE,UAAUgX,QAAQC;AAEtB,UAAI,KAAKvgB,aAAY,GAAI;AACvBsgB,iBAASE,eAAe/B,OAAOtwB,MAAMF,KAAAA;AACrCsyB,iBAASvyB,MAAMsT;AACfgI,mBAAWrb,QAAQE;aACd;AACL,YAAI9B,QAAQyjB,aAAa,QAAQ;AAC/BwQ,mBAASnyB,OAAOmT;AAChBif,mBAASC,eAAe/B,OAAOvwB,QAAQF,GAAAA;AACvCkX,qBAAWwB,KAAK;eACX;AACL4Z,mBAASryB,QAAQqT;AACjBif,mBAASC,eAAe/B,OAAOzwB,KAAKE,MAAAA;AACpCgX,qBAAWwB,KAAK;;AAElB4C,mBAAWpb,SAASF;;AAEtB,aAAO;QAACsyB;QAAQC;QAAQjX;QAAUpE;MAAQ;IAC5C;IAEA1e,OAAO;AACL,YAAMsN,MAAM,KAAKA;AACjB,YAAMtG,OAAO,KAAKnB;AAElB,UAAI,CAACmB,KAAK6e,SAAS;AACjB;;AAGF,YAAMyoC,WAAWh1B,OAAOtyB,KAAKqyB,IAAI;AACjC,YAAMG,aAAa80B,SAAS90B;AAC5B,YAAM1e,SAAS0e,aAAa,IAAI,KAAK20B,SAAS3mD;AAC9C,YAAM,EAACsyB,QAAQC,QAAQjX,UAAUpE,SAAAA,IAAY,KAAK2vC,UAAUvzC,MAAAA;AAE5DgrB,iBAAWx4B,KAAKtG,KAAKma,MAAM,GAAG,GAAGmtC,UAAU;QACzCrsD,OAAO+E,KAAK/E;QACZ6gB;QACApE;QACA4kB,WAAW1J,mBAAmB5yB,KAAKixB,KAAK;QACxCwL,cAAc;QACde,aAAa;UAAC1K;UAAQC;QAAO;MAC/B,CAAA;IACF;EACF;AAEA,WAASw0B,YAAYlwD,OAAO4gC,WAAW;AACrC,UAAMH,SAAQ,IAAIovB,MAAM;MACtB5gD,KAAKjP,MAAMiP;MACXzH,SAASo5B;MACT5gC;IACF,CAAA;AAEAkuB,YAAQ1nB,UAAUxG,OAAOygC,QAAOG,SAAAA;AAChC1S,YAAQkD,OAAOpxB,OAAOygC,MAAAA;AACtBzgC,UAAMmwD,aAAa1vB;EACrB;AAEA,MAAA,eAAe;IACb70B,IAAI;IAMJ6jD,UAAUI;IAEV/uD,MAAMd,OAAO8jD,OAAOt8C,SAAS;AAC3B0oD,kBAAYlwD,OAAOwH,OAAAA;IACrB;IAEAtE,KAAKlD,OAAO;AACV,YAAMmwD,aAAanwD,MAAMmwD;AACzBjiC,cAAQqD,UAAUvxB,OAAOmwD,UAAAA;AACzB,aAAOnwD,MAAMmwD;IACf;IAEAzyB,aAAa19B,OAAO8jD,OAAOt8C,SAAS;AAClC,YAAMi5B,SAAQzgC,MAAMmwD;AACpBjiC,cAAQ1nB,UAAUxG,OAAOygC,QAAOj5B,OAAAA;AAChCi5B,MAAAA,OAAMj5B,UAAUA;IAClB;IAEAX,UAAU;MACR+yB,OAAO;MACPpS,SAAS;MACTwT,MAAM;QACJjV,QAAQ;MACV;MACA6I,UAAU;MACVuC,SAAS;MACTlG,UAAU;MACVnI,MAAM;MACNiD,QAAQ;IACV;IAEAyR,eAAe;MACb5zB,OAAO;IACT;IAEAue,aAAa;MACXC,aAAa;MACbC,YAAY;IACd;EACF;AClKA,MAAMO,OAAM,oBAAIwtC,QAAAA;AAEhB,MAAA,kBAAe;IACbxkD,IAAI;IAEJ9K,MAAMd,OAAO8jD,OAAOt8C,SAAS;AAC3B,YAAMi5B,SAAQ,IAAIovB,MAAM;QACtB5gD,KAAKjP,MAAMiP;QACXzH;QACAxH;MACF,CAAA;AAEAkuB,cAAQ1nB,UAAUxG,OAAOygC,QAAOj5B,OAAAA;AAChC0mB,cAAQkD,OAAOpxB,OAAOygC,MAAAA;AACtB7d,MAAAA,KAAItgB,IAAItC,OAAOygC,MAAAA;IACjB;IAEAv9B,KAAKlD,OAAO;AACVkuB,cAAQqD,UAAUvxB,OAAO4iB,KAAIzgB,IAAInC,KAAAA,CAAAA;AACjC4iB,MAAAA,KAAIvf,OAAOrD,KAAAA;IACb;IAEA09B,aAAa19B,OAAO8jD,OAAOt8C,SAAS;AAClC,YAAMi5B,SAAQ7d,KAAIzgB,IAAInC,KAAAA;AACtBkuB,cAAQ1nB,UAAUxG,OAAOygC,QAAOj5B,OAAAA;AAChCi5B,MAAAA,OAAMj5B,UAAUA;IAClB;IAEAX,UAAU;MACR+yB,OAAO;MACPpS,SAAS;MACTwT,MAAM;QACJjV,QAAQ;MACV;MACA6I,UAAU;MACVuC,SAAS;MACTlG,UAAU;MACVnI,MAAM;MACNiD,QAAQ;IACV;IAEAyR,eAAe;MACb5zB,OAAO;IACT;IAEAue,aAAa;MACXC,aAAa;MACbC,YAAY;IACd;EACF;ACpCA,MAAMguC,cAAc;IAIlBC,QAAQ9uD,OAAO;AACb,UAAI,CAACA,MAAMC,QAAQ;AACjB,eAAO;;AAGT,UAAIC,IAAGg4B;AACP,UAAI62B,OAAO,oBAAI5hB,IAAAA;AACf,UAAIzlC,KAAI;AACR,UAAI4J,QAAQ;AAEZ,WAAKpR,KAAI,GAAGg4B,MAAMl4B,MAAMC,QAAQC,KAAIg4B,KAAK,EAAEh4B,IAAG;AAC5C,cAAMopB,KAAKtpB,MAAME,EAAAA,EAAGsM;AACpB,YAAI8c,MAAMA,GAAG4M,SAAQ,GAAI;AACvB,gBAAMlK,MAAM1C,GAAG2M,gBAAe;AAC9B84B,eAAK5tD,IAAI6qB,IAAIvkB,CAAC;AACdC,UAAAA,MAAKskB,IAAItkB;AACT,YAAE4J;;MAEN;AAGA,UAAIA,UAAU,KAAKy9C,KAAKpoD,SAAS,GAAG;AAClC,eAAO;;AAGT,YAAMqoD,WAAW;QAAID,GAAAA;QAAM1tD,OAAO,CAACkW,IAAGrP,OAAMqP,KAAIrP,EAAAA,IAAK6mD,KAAKpoD;AAE1D,aAAO;QACLc,GAAGunD;QACHtnD,GAAGA,KAAI4J;MACT;IACF;IAKAsa,QAAQ5rB,OAAOivD,eAAe;AAC5B,UAAI,CAACjvD,MAAMC,QAAQ;AACjB,eAAO;;AAGT,UAAIwH,KAAIwnD,cAAcxnD;AACtB,UAAIC,KAAIunD,cAAcvnD;AACtB,UAAIwjB,cAAc1gB,OAAOE;AACzB,UAAIxK,IAAGg4B,KAAKg3B;AAEZ,WAAKhvD,KAAI,GAAGg4B,MAAMl4B,MAAMC,QAAQC,KAAIg4B,KAAK,EAAEh4B,IAAG;AAC5C,cAAMopB,KAAKtpB,MAAME,EAAAA,EAAGsM;AACpB,YAAI8c,MAAMA,GAAG4M,SAAQ,GAAI;AACvB,gBAAMpa,SAASwN,GAAG6B,eAAc;AAChC,gBAAM+gB,KAAIijB,sBAAsBF,eAAenzC,MAAAA;AAE/C,cAAIowB,KAAIhhB,aAAa;AACnBA,0BAAcghB;AACdgjB,6BAAiB5lC;;;MAGvB;AAEA,UAAI4lC,gBAAgB;AAClB,cAAME,KAAKF,eAAej5B,gBAAe;AACzCxuB,QAAAA,KAAI2nD,GAAG3nD;AACPC,QAAAA,KAAI0nD,GAAG1nD;;AAGT,aAAO;QACLD,GAAAA;QACAC,GAAAA;MACF;IACF;EACF;AAGA,WAAS2nD,aAAav1C,MAAMw1C,QAAQ;AAClC,QAAIA,QAAQ;AACV,UAAI3pD,SAAQ2pD,MAAS,GAAA;AAEnBxlD,cAAMie,UAAU7mB,KAAKquD,MAAMz1C,MAAMw1C,MAAAA;aAC5B;AACLx1C,aAAK5Y,KAAKouD,MAAAA;;;AAId,WAAOx1C;EACT;AAQA,WAAS01C,cAAcC,KAAK;AAC1B,SAAK,OAAOA,QAAQ,YAAYA,eAAeC,WAAWD,IAAIhzC,QAAQ,IAAA,IAAQ,IAAI;AAChF,aAAOgzC,IAAI7nB,MAAM,IAAA;;AAEnB,WAAO6nB;EACT;AASA,WAASE,kBAAkBnxD,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;MAClDknD,gBAAgBlpD;MAChB4F,SAASlB,WAAW2D,WAAU;MAC9BtC,WAAW/D;MACXM;MACAwD;IACF;EACF;AAKA,WAASqjD,eAAeC,SAAS9pD,SAAS;AACxC,UAAMyH,MAAMqiD,QAAQtxD,MAAMiP;AAC1B,UAAM,EAACsiD,MAAMC,QAAQ/wB,OAAAA,OAAAA,IAAS6wB;AAC9B,UAAM,EAACtG,UAAUD,UAAAA,IAAavjD;AAC9B,UAAMiqD,WAAWx2B,OAAOzzB,QAAQiqD,QAAQ;AACxC,UAAM9C,YAAY1zB,OAAOzzB,QAAQmnD,SAAS;AAC1C,UAAM+C,aAAaz2B,OAAOzzB,QAAQkqD,UAAU;AAC5C,UAAMC,iBAAiBlxB,OAAMh/B;AAC7B,UAAMmwD,kBAAkBJ,OAAO/vD;AAC/B,UAAMowD,oBAAoBN,KAAK9vD;AAE/B,UAAM0vB,UAAUO,UAAUlqB,QAAQ2pB,OAAO;AACzC,QAAI5T,SAAS4T,QAAQ5T;AACrB,QAAIC,QAAQ;AAGZ,QAAIs0C,qBAAqBP,KAAK1uD,OAAO,CAACiQ,OAAOi/C,aAAaj/C,QAAQi/C,SAASC,OAAOvwD,SAASswD,SAAS72B,MAAMz5B,SAASswD,SAASE,MAAMxwD,QAAQ,CAAA;AAC1IqwD,0BAAsBR,QAAQY,WAAWzwD,SAAS6vD,QAAQa,UAAU1wD;AAEpE,QAAIkwD,gBAAgB;AAClBp0C,gBAAUo0C,iBAAiBhD,UAAUxzB,cACnCw2B,iBAAiB,KAAKnqD,QAAQ4qD,eAC/B5qD,QAAQ6qD;;AAEX,QAAIP,oBAAoB;AAEtB,YAAMQ,iBAAiB9qD,QAAQ+qD,gBAAgB3xD,KAAKoC,IAAI+nD,WAAW0G,SAASt2B,UAAU,IAAIs2B,SAASt2B;AACnG5d,gBAAUs0C,oBAAoBS,kBAC5BR,qBAAqBD,qBAAqBJ,SAASt2B,cACnD22B,qBAAqB,KAAKtqD,QAAQgrD;;AAEtC,QAAIZ,iBAAiB;AACnBr0C,gBAAU/V,QAAQirD,kBACjBb,kBAAkBF,WAAWv2B,cAC5By2B,kBAAkB,KAAKpqD,QAAQkrD;;AAInC,QAAIC,eAAe;AACnB,UAAMC,eAAe,SAASzsC,MAAM;AAClC3I,cAAQ5c,KAAKoC,IAAIwa,OAAOvO,IAAIq9C,YAAYnmC,IAAM3I,EAAAA,QAAQm1C,YAAAA;IACxD;AAEA1jD,QAAIq3B,KAAI;AAERr3B,QAAI+rB,OAAO2zB,UAAUtsB;AACrBxQ,SAAKy/B,QAAQ7wB,OAAOmyB,YAAAA;AAGpB3jD,QAAI+rB,OAAOy2B,SAASpvB;AACpBxQ,SAAKy/B,QAAQY,WAAWt5C,OAAO04C,QAAQa,SAAS,GAAGS,YAAAA;AAGnDD,mBAAenrD,QAAQ+qD,gBAAiBvH,WAAW,IAAIxjD,QAAQgoB,aAAc;AAC7EqC,SAAK0/B,MAAM,CAACQ,aAAa;AACvBlgC,WAAKkgC,SAASC,QAAQY,YAAAA;AACtB/gC,WAAKkgC,SAAS72B,OAAO03B,YAAAA;AACrB/gC,WAAKkgC,SAASE,OAAOW,YAAAA;IACvB,CAAA;AAGAD,mBAAe;AAGf1jD,QAAI+rB,OAAO02B,WAAWrvB;AACtBxQ,SAAKy/B,QAAQE,QAAQoB,YAAAA;AAErB3jD,QAAIu3B,QAAO;AAGXhpB,aAAS2T,QAAQ3T;AAEjB,WAAO;MAACA;MAAOD;IAAM;EACvB;AAEA,WAASs1C,gBAAgB7yD,OAAOmI,MAAM;AACpC,UAAM,EAACe,GAAAA,IAAGqU,OAAAA,IAAUpV;AAEpB,QAAIe,KAAIqU,SAAS,GAAG;AAClB,aAAO;IACT,WAAWrU,KAAKlJ,MAAMud,SAASA,SAAS,GAAI;AAC1C,aAAO;;AAET,WAAO;EACT;AAEA,WAASu1C,oBAAoBC,QAAQ/yD,OAAOwH,SAASW,MAAM;AACzD,UAAM,EAACc,GAAAA,IAAGuU,MAAAA,IAASrV;AACnB,UAAM6qD,QAAQxrD,QAAQyrD,YAAYzrD,QAAQ0rD;AAC1C,QAAIH,WAAW,UAAU9pD,KAAIuU,QAAQw1C,QAAQhzD,MAAMwd,OAAO;AACxD,aAAO;;AAGT,QAAIu1C,WAAW,WAAW9pD,KAAIuU,QAAQw1C,QAAQ,GAAG;AAC/C,aAAO;;EAEX;AAEA,WAASG,gBAAgBnzD,OAAOwH,SAASW,MAAMirD,QAAQ;AACrD,UAAM,EAACnqD,GAAAA,IAAGuU,MAAAA,IAASrV;AACnB,UAAM,EAACqV,OAAO61C,YAAYr+C,WAAW,EAAC1L,MAAMF,MAAK,EAAC,IAAIpJ;AACtD,QAAI+yD,SAAS;AAEb,QAAIK,WAAW,UAAU;AACvBL,eAAS9pD,OAAMK,OAAOF,SAAS,IAAI,SAAS;eACnCH,MAAKuU,QAAQ,GAAG;AACzBu1C,eAAS;IACX,WAAW9pD,MAAKoqD,aAAa71C,QAAQ,GAAG;AACtCu1C,eAAS;;AAGX,QAAID,oBAAoBC,QAAQ/yD,OAAOwH,SAASW,IAAO,GAAA;AACrD4qD,eAAS;;AAGX,WAAOA;EACT;AAKA,WAASO,mBAAmBtzD,OAAOwH,SAASW,MAAM;AAChD,UAAMirD,SAASjrD,KAAKirD,UAAU5rD,QAAQ4rD,UAAUP,gBAAgB7yD,OAAOmI,IAAAA;AAEvE,WAAO;MACL4qD,QAAQ5qD,KAAK4qD,UAAUvrD,QAAQurD,UAAUI,gBAAgBnzD,OAAOwH,SAASW,MAAMirD,MAAAA;MAC/EA;IACF;EACF;AAEA,WAASG,OAAOprD,MAAM4qD,QAAQ;AAC5B,QAAI,EAAC9pD,GAAAA,IAAGuU,MAAAA,IAASrV;AACjB,QAAI4qD,WAAW,SAAS;AACtB9pD,MAAAA,MAAKuU;eACIu1C,WAAW,UAAU;AAC9B9pD,MAAAA,MAAMuU,QAAQ;;AAEhB,WAAOvU;EACT;AAEA,WAASuqD,OAAOrrD,MAAMirD,QAAQK,gBAAgB;AAE5C,QAAI,EAACvqD,GAAAA,IAAGqU,OAAAA,IAAUpV;AAClB,QAAIirD,WAAW,OAAO;AACpBlqD,MAAAA,MAAKuqD;eACIL,WAAW,UAAU;AAC9BlqD,MAAAA,MAAKqU,SAASk2C;WACT;AACLvqD,MAAAA,MAAMqU,SAAS;;AAEjB,WAAOrU;EACT;AAKA,WAASwqD,mBAAmBlsD,SAASW,MAAMwrD,WAAW3zD,OAAO;AAC3D,UAAM,EAACizD,WAAWC,cAAcU,aAAAA,IAAgBpsD;AAChD,UAAM,EAACurD,QAAQK,OAAAA,IAAUO;AACzB,UAAMF,iBAAiBR,YAAYC;AACnC,UAAM,EAACpR,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAciS,YAAAA;AAEnE,QAAI3qD,KAAIsqD,OAAOprD,MAAM4qD,MAAAA;AACrB,UAAM7pD,KAAIsqD,OAAOrrD,MAAMirD,QAAQK,cAAAA;AAE/B,QAAIL,WAAW,UAAU;AACvB,UAAIL,WAAW,QAAQ;AACrB9pD,QAAAA,MAAKwqD;iBACIV,WAAW,SAAS;AAC7B9pD,QAAAA,MAAKwqD;;eAEEV,WAAW,QAAQ;AAC5B9pD,MAAAA,MAAKrI,KAAKoC,IAAI8+C,SAASE,UAAciR,IAAAA;eAC5BF,WAAW,SAAS;AAC7B9pD,MAAAA,MAAKrI,KAAKoC,IAAI++C,UAAUE,WAAegR,IAAAA;;AAGzC,WAAO;MACLhqD,GAAGu3B,YAAYv3B,IAAG,GAAGjJ,MAAMwd,QAAQrV,KAAKqV,KAAK;MAC7CtU,GAAGs3B,YAAYt3B,IAAG,GAAGlJ,MAAMud,SAASpV,KAAKoV,MAAM;IACjD;EACF;AAEA,WAASs2C,YAAYvC,SAAS13B,OAAOpyB,SAAS;AAC5C,UAAM2pB,UAAUO,UAAUlqB,QAAQ2pB,OAAO;AAEzC,WAAOyI,UAAU,WACb03B,QAAQroD,IAAIqoD,QAAQ9zC,QAAQ,IAC5Boc,UAAU,UACR03B,QAAQroD,IAAIqoD,QAAQ9zC,QAAQ2T,QAAQ/nB,QACpCkoD,QAAQroD,IAAIkoB,QAAQ7nB;EAC5B;AAKA,WAASwqD,wBAAwBp0B,WAAU;AACzC,WAAOmxB,aAAa,CAAA,GAAIG,cAActxB,SAAAA,CAAAA;EACxC;AAEA,WAASq0B,qBAAqBnmD,QAAQ0jD,SAAS0C,cAAc;AAC3D,WAAOnmD,cAAcD,QAAQ;MAC3B0jD;MACA0C;MACA7zD,MAAM;IACR,CAAA;EACF;AAEA,WAAS8zD,kBAAkB7zD,YAAWiV,SAAS;AAC7C,UAAMgU,WAAWhU,WAAWA,QAAQvH,WAAWuH,QAAQvH,QAAQwjD,WAAWj8C,QAAQvH,QAAQwjD,QAAQlxD;AAClG,WAAOipB,WAAWjpB,WAAUipB,SAASA,QAAAA,IAAYjpB;EACnD;AAEA,MAAM8zD,mBAAmB;IAEvBC,aAAaC;IACb3zB,MAAMuzB,cAAc;AAClB,UAAIA,aAAavyD,SAAS,GAAG;AAC3B,cAAMG,OAAOoyD,aAAa,CAAE;AAC5B,cAAM1gD,SAAS1R,KAAK5B,MAAM8K,KAAKwI;AAC/B,cAAM+gD,aAAa/gD,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,WAAW2/C,aAAa,KAAKzyD,KAAKqM,YAAYomD,YAAY;AACxD,iBAAO/gD,OAAO1R,KAAKqM,SAAS;;;AAIhC,aAAO;IACT;IACAqmD,YAAYF;IAGZlC,YAAYkC;IAGZG,aAAaH;IACb1/C,MAAM8/C,aAAa;AACjB,UAAI,QAAQ,KAAKhtD,WAAW,KAAKA,QAAQ+C,SAAS,WAAW;AAC3D,eAAOiqD,YAAY9/C,QAAQ,OAAO8/C,YAAYpD,kBAAkBoD,YAAYpD;;AAG9E,UAAI18C,QAAQ8/C,YAAY1mD,QAAQ4G,SAAS;AAEzC,UAAIA,OAAO;AACTA,iBAAS;;AAEX,YAAMxM,QAAQssD,YAAYpD;AAC1B,UAAI,CAACt3C,cAAc5R,KAAQ,GAAA;AACzBwM,iBAASxM;;AAEX,aAAOwM;IACT;IACA+/C,WAAWD,aAAa;AACtB,YAAMzpD,OAAOypD,YAAYx0D,MAAMwR,eAAegjD,YAAYhqD,YAAY;AACtE,YAAMhD,UAAUuD,KAAK6B,WAAWsI,SAASs/C,YAAYvmD,SAAS;AAC9D,aAAO;QACLiV,aAAa1b,QAAQ0b;QACrBF,iBAAiBxb,QAAQwb;QACzBK,aAAa7b,QAAQ6b;QACrBkhB,YAAY/8B,QAAQ+8B;QACpBE,kBAAkBj9B,QAAQi9B;QAC1BuV,cAAc;MAChB;IACF;IACA0a,iBAAiB;AACf,aAAO,KAAKltD,QAAQmtD;IACtB;IACAC,gBAAgBJ,aAAa;AAC3B,YAAMzpD,OAAOypD,YAAYx0D,MAAMwR,eAAegjD,YAAYhqD,YAAY;AACtE,YAAMhD,UAAUuD,KAAK6B,WAAWsI,SAASs/C,YAAYvmD,SAAS;AAC9D,aAAO;QACL0U,YAAYnb,QAAQmb;QACpBtC,UAAU7Y,QAAQ6Y;MACpB;IACF;IACAw0C,YAAYT;IAGZjC,WAAWiC;IAGXU,cAAcV;IACd5C,QAAQ4C;IACRW,aAAaX;EACf;AAWA,WAASY,2BAA2B50D,YAAWqe,OAAMxP,KAAK27B,KAAK;AAC7D,UAAMrgB,SAASnqB,WAAUqe,KAAAA,EAAMxd,KAAKgO,KAAK27B,GAAAA;AAEzC,QAAI,OAAOrgB,WAAW,aAAa;AACjC,aAAO2pC,iBAAiBz1C,KAAAA,EAAMxd,KAAKgO,KAAK27B,GAAAA;;AAG1C,WAAOrgB;EACT;AAEO,MAAM0qC,UAAN,cAAsB19B,SAAAA;IAK3B,OAAO84B,cAAcA;IAErB7wD,YAAY6G,SAAQ;AAClB,YAAK;AAEL,WAAK6uD,UAAU;AACf,WAAKrzD,UAAU,CAAA;AACf,WAAKszD,iBAAiBr1D;AACtB,WAAKs1D,QAAQt1D;AACb,WAAKu1D,oBAAoBv1D;AACzB,WAAKw1D,gBAAgB,CAAA;AACrB,WAAKxtD,cAAchI;AACnB,WAAK+P,WAAW/P;AAChB,WAAKE,QAAQqG,QAAOrG;AACpB,WAAKwH,UAAUnB,QAAOmB;AACtB,WAAK+tD,aAAaz1D;AAClB,WAAK2gC,QAAQ3gC;AACb,WAAKoyD,aAAapyD;AAClB,WAAKyxD,OAAOzxD;AACZ,WAAKqyD,YAAYryD;AACjB,WAAK0xD,SAAS1xD;AACd,WAAKizD,SAASjzD;AACd,WAAKszD,SAAStzD;AACd,WAAKmJ,IAAInJ;AACT,WAAKoJ,IAAIpJ;AACT,WAAKyd,SAASzd;AACd,WAAK0d,QAAQ1d;AACb,WAAK01D,SAAS11D;AACd,WAAK21D,SAAS31D;AAGd,WAAK41D,cAAc51D;AACnB,WAAK61D,mBAAmB71D;AACxB,WAAK81D,kBAAkB91D;IACzB;IAEAiQ,WAAWvI,SAAS;AAClB,WAAKA,UAAUA;AACf,WAAK6tD,oBAAoBv1D;AACzB,WAAK+P,WAAW/P;IAClB;IAKAmW,qBAAqB;AACnB,YAAM1H,SAAS,KAAK8mD;AAEpB,UAAI9mD,QAAQ;AACV,eAAOA;;AAGT,YAAMvO,QAAQ,KAAKA;AACnB,YAAMwH,UAAU,KAAKA,QAAQw1B,WAAW,KAAKrqB,WAAU,CAAA;AACvD,YAAMhK,OAAOnB,QAAQ6wB,WAAWr4B,MAAMwH,QAAQV,aAAaU,QAAQE;AACnE,YAAMA,aAAa,IAAItB,WAAW,KAAKpG,OAAO2I,IAAAA;AAC9C,UAAIA,KAAKyN,YAAY;AACnB,aAAKi/C,oBAAoB1uD,OAAOqP,OAAOtO,UAAAA;;AAGzC,aAAOA;IACT;IAKAiL,aAAa;AACX,aAAO,KAAK9C,aACZ,KAAKA,WAAWkkD,qBAAqB,KAAK/zD,MAAM2S,WAAU,GAAI,MAAM,KAAK2iD,aAAa;IACxF;IAEAO,SAASxgD,SAAS7N,SAAS;AACzB,YAAM,EAACpH,WAAAA,WAAS,IAAIoH;AAEpB,YAAM2sD,cAAca,2BAA2B50D,YAAW,eAAe,MAAMiV,OAAAA;AAC/E,YAAMorB,SAAQu0B,2BAA2B50D,YAAW,SAAS,MAAMiV,OAAAA;AACnE,YAAMi/C,aAAaU,2BAA2B50D,YAAW,cAAc,MAAMiV,OAAAA;AAE7E,UAAI6lB,QAAQ,CAAA;AACZA,cAAQ21B,aAAa31B,OAAO81B,cAAcmD,WAAAA,CAAAA;AAC1Cj5B,cAAQ21B,aAAa31B,OAAO81B,cAAcvwB,MAAAA,CAAAA;AAC1CvF,cAAQ21B,aAAa31B,OAAO81B,cAAcsD,UAAAA,CAAAA;AAE1C,aAAOp5B;IACT;IAEA46B,cAAc9B,cAAcxsD,SAAS;AACnC,aAAOssD,wBACLkB,2BAA2BxtD,QAAQpH,WAAW,cAAc,MAAM4zD,YAAAA,CAAAA;IAEtE;IAEA+B,QAAQ/B,cAAcxsD,SAAS;AAC7B,YAAM,EAACpH,WAAAA,WAAS,IAAIoH;AACpB,YAAMwuD,YAAY,CAAA;AAElBnkC,WAAKmiC,cAAc,CAAC3+C,YAAY;AAC9B,cAAM08C,WAAW;UACfC,QAAQ,CAAA;UACR92B,OAAO,CAAA;UACP+2B,OAAO,CAAA;QACT;AACA,cAAMgE,SAAShC,kBAAkB7zD,YAAWiV,OAAAA;AAC5Cw7C,qBAAakB,SAASC,QAAQhB,cAAcgE,2BAA2BiB,QAAQ,eAAe,MAAM5gD,OAAAA,CAAAA,CAAAA;AACpGw7C,qBAAakB,SAAS72B,OAAO85B,2BAA2BiB,QAAQ,SAAS,MAAM5gD,OAAAA,CAAAA;AAC/Ew7C,qBAAakB,SAASE,OAAOjB,cAAcgE,2BAA2BiB,QAAQ,cAAc,MAAM5gD,OAAAA,CAAAA,CAAAA;AAElG2gD,kBAAUtzD,KAAKqvD,QAAAA;MACjB,CAAA;AAEA,aAAOiE;IACT;IAEAE,aAAalC,cAAcxsD,SAAS;AAClC,aAAOssD,wBACLkB,2BAA2BxtD,QAAQpH,WAAW,aAAa,MAAM4zD,YAAAA,CAAAA;IAErE;IAGAmC,UAAUnC,cAAcxsD,SAAS;AAC/B,YAAM,EAACpH,WAAAA,WAAS,IAAIoH;AAEpB,YAAMstD,eAAeE,2BAA2B50D,YAAW,gBAAgB,MAAM4zD,YAAAA;AACjF,YAAMxC,SAASwD,2BAA2B50D,YAAW,UAAU,MAAM4zD,YAAAA;AACrE,YAAMe,cAAcC,2BAA2B50D,YAAW,eAAe,MAAM4zD,YAAAA;AAE/E,UAAI94B,QAAQ,CAAA;AACZA,cAAQ21B,aAAa31B,OAAO81B,cAAc8D,YAAAA,CAAAA;AAC1C55B,cAAQ21B,aAAa31B,OAAO81B,cAAcQ,MAAAA,CAAAA;AAC1Ct2B,cAAQ21B,aAAa31B,OAAO81B,cAAc+D,WAAAA,CAAAA;AAE1C,aAAO75B;IACT;IAKAk7B,aAAa5uD,SAAS;AACpB,YAAM/B,SAAS,KAAK5D;AACpB,YAAMiJ,OAAO,KAAK9K,MAAM8K;AACxB,YAAM4qD,cAAc,CAAA;AACpB,YAAMC,mBAAmB,CAAA;AACzB,YAAMC,kBAAkB,CAAA;AACxB,UAAI5B,eAAe,CAAA;AACnB,UAAItyD,IAAGg4B;AAEP,WAAKh4B,KAAI,GAAGg4B,MAAMj0B,OAAOhE,QAAQC,KAAIg4B,KAAK,EAAEh4B,IAAG;AAC7CsyD,qBAAatxD,KAAKyuD,kBAAkB,KAAKnxD,OAAOyF,OAAO/D,EAAE,CAAA,CAAA;MAC3D;AAGA,UAAI8F,QAAQiG,QAAQ;AAClBumD,uBAAeA,aAAavmD,OAAO,CAACO,SAAS9D,QAAOqjB,UAAU/lB,QAAQiG,OAAOO,SAAS9D,QAAOqjB,OAAOziB,IAAAA,CAAAA;;AAItG,UAAItD,QAAQ6uD,UAAU;AACpBrC,uBAAeA,aAAal7C,KAAK,CAACC,IAAGrP,OAAMlC,QAAQ6uD,SAASt9C,IAAGrP,IAAGoB,IAAAA,CAAAA;;AAIpE+mB,WAAKmiC,cAAc,CAAC3+C,YAAY;AAC9B,cAAM4gD,SAAShC,kBAAkBzsD,QAAQpH,WAAWiV,OAAAA;AACpDqgD,oBAAYhzD,KAAKsyD,2BAA2BiB,QAAQ,cAAc,MAAM5gD,OAAAA,CAAAA;AACxEsgD,yBAAiBjzD,KAAKsyD,2BAA2BiB,QAAQ,mBAAmB,MAAM5gD,OAAAA,CAAAA;AAClFugD,wBAAgBlzD,KAAKsyD,2BAA2BiB,QAAQ,kBAAkB,MAAM5gD,OAAAA,CAAAA;MAClF,CAAA;AAEA,WAAKqgD,cAAcA;AACnB,WAAKC,mBAAmBA;AACxB,WAAKC,kBAAkBA;AACvB,WAAKL,aAAavB;AAClB,aAAOA;IACT;IAEAtuD,OAAOqrB,SAASunB,QAAQ;AACtB,YAAM9wC,UAAU,KAAKA,QAAQw1B,WAAW,KAAKrqB,WAAU,CAAA;AACvD,YAAMlN,SAAS,KAAK5D;AACpB,UAAIuF;AACJ,UAAI4sD,eAAe,CAAA;AAEnB,UAAI,CAACvuD,OAAOhE,QAAQ;AAClB,YAAI,KAAKyzD,YAAY,GAAG;AACtB9tD,uBAAa;YACX8tD,SAAS;UACX;;aAEG;AACL,cAAMjqC,WAAWolC,YAAY7oD,QAAQyjB,QAAQ,EAAEhqB,KAAK,MAAMwE,QAAQ,KAAK0vD,cAAc;AACrFnB,uBAAe,KAAKoC,aAAa5uD,OAAAA;AAEjC,aAAKi5B,QAAQ,KAAKo1B,SAAS7B,cAAcxsD,OAAAA;AACzC,aAAK0qD,aAAa,KAAK4D,cAAc9B,cAAcxsD,OAAAA;AACnD,aAAK+pD,OAAO,KAAKwE,QAAQ/B,cAAcxsD,OAAAA;AACvC,aAAK2qD,YAAY,KAAK+D,aAAalC,cAAcxsD,OAAAA;AACjD,aAAKgqD,SAAS,KAAK2E,UAAUnC,cAAcxsD,OAAAA;AAE3C,cAAMW,OAAO,KAAKitD,QAAQ/D,eAAe,MAAM7pD,OAAAA;AAC/C,cAAM8uD,kBAAkB3vD,OAAOyB,OAAO,CAAA,GAAI6iB,UAAU9iB,IAAAA;AACpD,cAAMwrD,YAAYL,mBAAmB,KAAKtzD,OAAOwH,SAAS8uD,eAAAA;AAC1D,cAAMC,kBAAkB7C,mBAAmBlsD,SAAS8uD,iBAAiB3C,WAAW,KAAK3zD,KAAK;AAE1F,aAAK+yD,SAASY,UAAUZ;AACxB,aAAKK,SAASO,UAAUP;AAExBhsD,qBAAa;UACX8tD,SAAS;UACTjsD,GAAGstD,gBAAgBttD;UACnBC,GAAGqtD,gBAAgBrtD;UACnBsU,OAAOrV,KAAKqV;UACZD,QAAQpV,KAAKoV;UACbi4C,QAAQvqC,SAAShiB;UACjBwsD,QAAQxqC,SAAS/hB;QACnB;;AAGF,WAAKosD,gBAAgBtB;AACrB,WAAKnkD,WAAW/P;AAEhB,UAAIsH,YAAY;AACd,aAAK6O,mBAAkB,EAAGvQ,OAAO,MAAM0B,UAAAA;;AAGzC,UAAI2pB,WAAWvpB,QAAQgvD,UAAU;AAC/BhvD,gBAAQgvD,SAASv1D,KAAK,MAAM;UAACjB,OAAO,KAAKA;UAAOsxD,SAAS;UAAMhZ;QAAM,CAAA;;IAEzE;IAEAme,UAAUC,cAAcznD,KAAK9G,MAAMX,SAAS;AAC1C,YAAMmvD,gBAAgB,KAAKC,iBAAiBF,cAAcvuD,MAAMX,OAAAA;AAEhEyH,UAAIg4B,OAAO0vB,cAAc7yB,IAAI6yB,cAAc5yB,EAAE;AAC7C90B,UAAIg4B,OAAO0vB,cAAc3yB,IAAI2yB,cAAc1yB,EAAE;AAC7Ch1B,UAAIg4B,OAAO0vB,cAAcE,IAAIF,cAAcG,EAAE;IAC/C;IAEAF,iBAAiBF,cAAcvuD,MAAMX,SAAS;AAC5C,YAAM,EAACurD,QAAQK,OAAM,IAAI;AACzB,YAAM,EAACH,WAAWW,aAAAA,IAAgBpsD;AAClC,YAAM,EAACs6C,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAciS,YAAAA;AACnE,YAAM,EAAC3qD,GAAG8tD,KAAK7tD,GAAG8tD,IAAAA,IAAON;AACzB,YAAM,EAACl5C,OAAOD,OAAAA,IAAUpV;AACxB,UAAI27B,IAAIE,KAAI6yB,KAAI9yB,IAAIE,KAAI6yB;AAExB,UAAI1D,WAAW,UAAU;AACvBnvB,QAAAA,MAAK+yB,MAAOz5C,SAAS;AAErB,YAAIw1C,WAAW,QAAQ;AACrBjvB,eAAKizB;AACL/yB,UAAAA,MAAKF,KAAKmvB;AAGVlvB,eAAKE,MAAKgvB;AACV6D,UAAAA,MAAK7yB,MAAKgvB;eACL;AACLnvB,eAAKizB,MAAMv5C;AACXwmB,UAAAA,MAAKF,KAAKmvB;AAGVlvB,eAAKE,MAAKgvB;AACV6D,UAAAA,MAAK7yB,MAAKgvB;;AAGZ4D,QAAAA,MAAK/yB;aACA;AACL,YAAIivB,WAAW,QAAQ;AACrB/uB,UAAAA,MAAK+yB,MAAMn2D,KAAKoC,IAAI8+C,SAASE,UAAeiR,IAAAA;mBACnCF,WAAW,SAAS;AAC7B/uB,UAAAA,MAAK+yB,MAAMv5C,QAAQ5c,KAAKoC,IAAI++C,UAAUE,WAAegR,IAAAA;eAChD;AACLjvB,UAAAA,MAAK,KAAKwxB;;AAGZ,YAAIpC,WAAW,OAAO;AACpBrvB,eAAKizB;AACL/yB,UAAAA,MAAKF,KAAKkvB;AAGVnvB,eAAKE,MAAKivB;AACV4D,UAAAA,MAAK7yB,MAAKivB;eACL;AACLlvB,eAAKizB,MAAMz5C;AACX0mB,UAAAA,MAAKF,KAAKkvB;AAGVnvB,eAAKE,MAAKivB;AACV4D,UAAAA,MAAK7yB,MAAKivB;;AAEZ6D,QAAAA,MAAK/yB;;AAEP,aAAO;QAACD;QAAIE,IAAAA;QAAI6yB,IAAAA;QAAI9yB;QAAIE,IAAAA;QAAI6yB,IAAAA;MAAE;IAChC;IAEAnvB,UAAUsvB,KAAIhoD,KAAKzH,SAAS;AAC1B,YAAMi5B,SAAQ,KAAKA;AACnB,YAAMh/B,SAASg/B,OAAMh/B;AACrB,UAAIktD,WAAWyD,cAAc1wD;AAE7B,UAAID,QAAQ;AACV,cAAMurD,YAAYC,cAAczlD,QAAQulD,KAAK,KAAK9jD,GAAG,KAAKuU,KAAK;AAE/Dy5C,QAAAA,IAAGhuD,IAAI4qD,YAAY,MAAMrsD,QAAQ8zB,YAAY9zB,OAAAA;AAE7CyH,YAAIg2B,YAAY+nB,UAAU/nB,UAAUz9B,QAAQ8zB,UAAU;AACtDrsB,YAAIm2B,eAAe;AAEnBupB,oBAAY1zB,OAAOzzB,QAAQmnD,SAAS;AACpCyD,uBAAe5qD,QAAQ4qD;AAEvBnjD,YAAI8T,YAAYvb,QAAQ0vD;AACxBjoD,YAAI+rB,OAAO2zB,UAAUtsB;AAErB,aAAK3gC,KAAI,GAAGA,KAAID,QAAQ,EAAEC,IAAG;AAC3BuN,cAAI++C,SAASvtB,OAAM/+B,EAAAA,GAAIsrD,UAAU/jD,EAAEguD,IAAGhuD,CAAC,GAAGguD,IAAG/tD,IAAIylD,UAAUxzB,aAAa,CAAA;AACxE87B,UAAAA,IAAG/tD,KAAKylD,UAAUxzB,aAAai3B;AAE/B,cAAI1wD,KAAI,MAAMD,QAAQ;AACpBw1D,YAAAA,IAAG/tD,KAAK1B,QAAQ6qD,oBAAoBD;;QAExC;;IAEJ;IAKA+E,cAAcloD,KAAKgoD,KAAIv1D,IAAGsrD,WAAWxlD,SAAS;AAC5C,YAAMitD,aAAa,KAAKiB,YAAYh0D,EAAE;AACtC,YAAMkzD,kBAAkB,KAAKe,iBAAiBj0D,EAAE;AAChD,YAAM,EAACqpD,WAAWC,SAAAA,IAAYxjD;AAC9B,YAAMiqD,WAAWx2B,OAAOzzB,QAAQiqD,QAAQ;AACxC,YAAM2F,SAASvD,YAAY,MAAM,QAAQrsD,OAAAA;AACzC,YAAM6vD,YAAYrK,UAAU/jD,EAAEmuD,MAAAA;AAC9B,YAAME,UAAUvM,YAAY0G,SAASt2B,cAAcs2B,SAASt2B,aAAa4vB,aAAa,IAAI;AAC1F,YAAMwM,SAASN,IAAG/tD,IAAIouD;AAEtB,UAAI9vD,QAAQyjD,eAAe;AACzB,cAAMyC,cAAc;UAClB5tC,QAAQlf,KAAKC,IAAImqD,UAAUD,SAAa,IAAA;UACxCpoC,YAAYiyC,gBAAgBjyC;UAC5BtC,UAAUu0C,gBAAgBv0C;UAC1BgD,aAAa;QACf;AAGA,cAAMgC,UAAU2nC,UAAUG,WAAWkK,WAAWrM,QAAAA,IAAYA,WAAW;AACvE,cAAM1lC,UAAUiyC,SAASxM,YAAY;AAGrC97C,YAAIgU,cAAczb,QAAQgwD;AAC1BvoD,YAAI8T,YAAYvb,QAAQgwD;AACxBtW,kBAAUjyC,KAAKy+C,aAAaroC,SAASC,OAAAA;AAGrCrW,YAAIgU,cAAcwxC,WAAWvxC;AAC7BjU,YAAI8T,YAAY0xC,WAAWzxC;AAC3Bk+B,kBAAUjyC,KAAKy+C,aAAaroC,SAASC,OAAAA;aAChC;AAELrW,YAAImU,YAAY3c,UAASguD,WAAWpxC,WAAW,IAAIziB,KAAKoC,IAAO2D,GAAAA,OAAOW,OAAOmtD,WAAWpxC,WAAW,CAAMoxC,IAAAA,WAAWpxC,eAAe;AACnIpU,YAAIgU,cAAcwxC,WAAWvxC;AAC7BjU,YAAI43B,YAAY4tB,WAAWlwB,cAAc,CAAA,CAAE;AAC3Ct1B,YAAI63B,iBAAiB2tB,WAAWhwB,oBAAoB;AAGpD,cAAMgzB,SAASzK,UAAUG,WAAWkK,WAAWrM,QAAAA;AAC/C,cAAM0M,SAAS1K,UAAUG,WAAWH,UAAUY,MAAMyJ,WAAW,CAAA,GAAIrM,WAAW,CAAA;AAC9E,cAAMhR,eAAe2H,cAAc8S,WAAWza,YAAY;AAE1D,YAAIrzC,OAAOW,OAAO0yC,YAAAA,EAAc5N,KAAKnwB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClDhN,cAAI83B,UAAS;AACb93B,cAAI8T,YAAYvb,QAAQgwD;AACxBzU,6BAAmB9zC,KAAK;YACtBhG,GAAGwuD;YACHvuD,GAAGquD;YACHvnC,GAAGg7B;YACH96B,GAAG66B;YACHjrC,QAAQk6B;UACV,CAAA;AACA/qC,cAAIiB,KAAI;AACRjB,cAAIi4B,OAAM;AAGVj4B,cAAI8T,YAAY0xC,WAAWzxC;AAC3B/T,cAAI83B,UAAS;AACbgc,6BAAmB9zC,KAAK;YACtBhG,GAAGyuD;YACHxuD,GAAGquD,SAAS;YACZvnC,GAAGg7B,WAAW;YACd96B,GAAG66B,YAAY;YACfjrC,QAAQk6B;UACV,CAAA;AACA/qC,cAAIiB,KAAI;eACH;AAELjB,cAAI8T,YAAYvb,QAAQgwD;AACxBvoD,cAAIs3B,SAASkxB,QAAQF,QAAQvM,UAAUD,SAAAA;AACvC97C,cAAI0oD,WAAWF,QAAQF,QAAQvM,UAAUD,SAAAA;AAEzC97C,cAAI8T,YAAY0xC,WAAWzxC;AAC3B/T,cAAIs3B,SAASmxB,QAAQH,SAAS,GAAGvM,WAAW,GAAGD,YAAY,CAAA;;;AAK/D97C,UAAI8T,YAAY,KAAK6yC,gBAAgBl0D,EAAE;IACzC;IAEAk2D,SAASX,KAAIhoD,KAAKzH,SAAS;AACzB,YAAM,EAAC+pD,KAAAA,IAAQ;AACf,YAAM,EAACiB,aAAaqF,WAAWtF,eAAexH,WAAWC,UAAUx7B,WAAAA,IAAchoB;AACjF,YAAMiqD,WAAWx2B,OAAOzzB,QAAQiqD,QAAQ;AACxC,UAAIa,iBAAiBb,SAASt2B;AAC9B,UAAI28B,eAAe;AAEnB,YAAM9K,YAAYC,cAAczlD,QAAQulD,KAAK,KAAK9jD,GAAG,KAAKuU,KAAK;AAE/D,YAAMu6C,iBAAiB,SAAS5xC,MAAM;AACpClX,YAAI++C,SAAS7nC,MAAM6mC,UAAU/jD,EAAEguD,IAAGhuD,IAAI6uD,YAAAA,GAAeb,IAAG/tD,IAAIopD,iBAAiB,CAAA;AAC7E2E,QAAAA,IAAG/tD,KAAKopD,iBAAiBE;MAC3B;AAEA,YAAMwF,0BAA0BhL,UAAU/nB,UAAU4yB,SAAAA;AACpD,UAAI9F,UAAUkG,WAAW/8B,OAAOx5B,IAAG0pB,IAAGnhB,MAAM+3B;AAE5C/yB,UAAIg2B,YAAY4yB;AAChB5oD,UAAIm2B,eAAe;AACnBn2B,UAAI+rB,OAAOy2B,SAASpvB;AAEpB40B,MAAAA,IAAGhuD,IAAI4qD,YAAY,MAAMmE,yBAAyBxwD,OAAAA;AAGlDyH,UAAI8T,YAAYvb,QAAQmtD;AACxB9iC,WAAK,KAAKqgC,YAAY6F,cAAAA;AAEtBD,qBAAevF,iBAAiByF,4BAA4B,UACxDH,cAAc,WAAY7M,WAAW,IAAIx7B,aAAew7B,WAAW,IAAIx7B,aACvE;AAGJ,WAAK9tB,KAAI,GAAGuI,OAAOsnD,KAAK9vD,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC7CqwD,mBAAWR,KAAK7vD,EAAE;AAClBu2D,oBAAY,KAAKrC,gBAAgBl0D,EAAE;AAEnCuN,YAAI8T,YAAYk1C;AAChBpmC,aAAKkgC,SAASC,QAAQ+F,cAAAA;AAEtB78B,gBAAQ62B,SAAS72B;AAEjB,YAAIq3B,iBAAiBr3B,MAAMz5B,QAAQ;AACjC,eAAK01D,cAAcloD,KAAKgoD,KAAIv1D,IAAGsrD,WAAWxlD,OAAAA;AAC1C8qD,2BAAiB1xD,KAAKoC,IAAIyuD,SAASt2B,YAAY4vB,SAAAA;;AAGjD,aAAK3/B,KAAI,GAAG4W,OAAO9G,MAAMz5B,QAAQ2pB,KAAI4W,MAAM,EAAE5W,IAAG;AAC9C2sC,yBAAe78B,MAAM9P,EAAE,CAAA;AAEvBknC,2BAAiBb,SAASt2B;QAC5B;AAEAtJ,aAAKkgC,SAASE,OAAO8F,cAAAA;MACvB;AAGAD,qBAAe;AACfxF,uBAAiBb,SAASt2B;AAG1BtJ,WAAK,KAAKsgC,WAAW4F,cAAAA;AACrBd,MAAAA,IAAG/tD,KAAKspD;IACV;IAEA0F,WAAWjB,KAAIhoD,KAAKzH,SAAS;AAC3B,YAAMgqD,SAAS,KAAKA;AACpB,YAAM/vD,SAAS+vD,OAAO/vD;AACtB,UAAIiwD,YAAYhwD;AAEhB,UAAID,QAAQ;AACV,cAAMurD,YAAYC,cAAczlD,QAAQulD,KAAK,KAAK9jD,GAAG,KAAKuU,KAAK;AAE/Dy5C,QAAAA,IAAGhuD,IAAI4qD,YAAY,MAAMrsD,QAAQ2wD,aAAa3wD,OAAAA;AAC9CyvD,QAAAA,IAAG/tD,KAAK1B,QAAQirD;AAEhBxjD,YAAIg2B,YAAY+nB,UAAU/nB,UAAUz9B,QAAQ2wD,WAAW;AACvDlpD,YAAIm2B,eAAe;AAEnBssB,qBAAaz2B,OAAOzzB,QAAQkqD,UAAU;AAEtCziD,YAAI8T,YAAYvb,QAAQ4wD;AACxBnpD,YAAI+rB,OAAO02B,WAAWrvB;AAEtB,aAAK3gC,KAAI,GAAGA,KAAID,QAAQ,EAAEC,IAAG;AAC3BuN,cAAI++C,SAASwD,OAAO9vD,EAAAA,GAAIsrD,UAAU/jD,EAAEguD,IAAGhuD,CAAC,GAAGguD,IAAG/tD,IAAIwoD,WAAWv2B,aAAa,CAAA;AAC1E87B,UAAAA,IAAG/tD,KAAKwoD,WAAWv2B,aAAa3zB,QAAQkrD;QAC1C;;IAEJ;IAEArsB,eAAe4wB,KAAIhoD,KAAKopD,aAAa7wD,SAAS;AAC5C,YAAM,EAACurD,QAAQK,OAAM,IAAI;AACzB,YAAM,EAACnqD,GAAAA,IAAGC,GAAAA,GAAAA,IAAK+tD;AACf,YAAM,EAACz5C,OAAOD,OAAAA,IAAU86C;AACxB,YAAM,EAACvW,SAASC,UAAUC,YAAYC,YAAAA,IAAeN,cAAcn6C,QAAQosD,YAAY;AAEvF3kD,UAAI8T,YAAYvb,QAAQwb;AACxB/T,UAAIgU,cAAczb,QAAQ0b;AAC1BjU,UAAImU,YAAY5b,QAAQ6b;AAExBpU,UAAI83B,UAAS;AACb93B,UAAI+3B,OAAO/9B,KAAI64C,SAAS54C,EAAAA;AACxB,UAAIkqD,WAAW,OAAO;AACpB,aAAKqD,UAAUQ,KAAIhoD,KAAKopD,aAAa7wD,OAAAA;;AAEvCyH,UAAIg4B,OAAOh+B,KAAIuU,QAAQukC,UAAU74C,EAAAA;AACjC+F,UAAIqpD,iBAAiBrvD,KAAIuU,OAAOtU,IAAGD,KAAIuU,OAAOtU,KAAI64C,QAAAA;AAClD,UAAIqR,WAAW,YAAYL,WAAW,SAAS;AAC7C,aAAK0D,UAAUQ,KAAIhoD,KAAKopD,aAAa7wD,OAAAA;;AAEvCyH,UAAIg4B,OAAOh+B,KAAIuU,OAAOtU,KAAIqU,SAAS0kC,WAAAA;AACnChzC,UAAIqpD,iBAAiBrvD,KAAIuU,OAAOtU,KAAIqU,QAAQtU,KAAIuU,QAAQykC,aAAa/4C,KAAIqU,MAAAA;AACzE,UAAI61C,WAAW,UAAU;AACvB,aAAKqD,UAAUQ,KAAIhoD,KAAKopD,aAAa7wD,OAAAA;;AAEvCyH,UAAIg4B,OAAOh+B,KAAI+4C,YAAY94C,KAAIqU,MAAAA;AAC/BtO,UAAIqpD,iBAAiBrvD,IAAGC,KAAIqU,QAAQtU,IAAGC,KAAIqU,SAASykC,UAAAA;AACpD,UAAIoR,WAAW,YAAYL,WAAW,QAAQ;AAC5C,aAAK0D,UAAUQ,KAAIhoD,KAAKopD,aAAa7wD,OAAAA;;AAEvCyH,UAAIg4B,OAAOh+B,IAAGC,KAAI44C,OAAAA;AAClB7yC,UAAIqpD,iBAAiBrvD,IAAGC,IAAGD,KAAI64C,SAAS54C,EAAAA;AACxC+F,UAAIqqC,UAAS;AAEbrqC,UAAIiB,KAAI;AAER,UAAI1I,QAAQ6b,cAAc,GAAG;AAC3BpU,YAAIi4B,OAAM;;IAEd;IAMAqxB,uBAAuB/wD,SAAS;AAC9B,YAAMxH,QAAQ,KAAKA;AACnB,YAAMC,QAAQ,KAAK6H;AACnB,YAAM0wD,QAAQv4D,SAASA,MAAMgJ;AAC7B,YAAMwvD,QAAQx4D,SAASA,MAAMiJ;AAC7B,UAAIsvD,SAASC,OAAO;AAClB,cAAMxtC,WAAWolC,YAAY7oD,QAAQyjB,QAAQ,EAAEhqB,KAAK,MAAM,KAAKY,SAAS,KAAKszD,cAAc;AAC3F,YAAI,CAAClqC,UAAU;AACb;;AAEF,cAAM9iB,OAAO,KAAKitD,QAAQ/D,eAAe,MAAM7pD,OAAAA;AAC/C,cAAM8uD,kBAAkB3vD,OAAOyB,OAAO,CAAA,GAAI6iB,UAAU,KAAKmqC,KAAK;AAC9D,cAAMzB,YAAYL,mBAAmBtzD,OAAOwH,SAAS8uD,eAAAA;AACrD,cAAMt2C,QAAQ0zC,mBAAmBlsD,SAAS8uD,iBAAiB3C,WAAW3zD,KAAAA;AACtE,YAAIw4D,MAAMjzD,QAAQya,MAAM/W,KAAKwvD,MAAMlzD,QAAQya,MAAM9W,GAAG;AAClD,eAAK6pD,SAASY,UAAUZ;AACxB,eAAKK,SAASO,UAAUP;AACxB,eAAK51C,QAAQrV,KAAKqV;AAClB,eAAKD,SAASpV,KAAKoV;AACnB,eAAKi4C,SAASvqC,SAAShiB;AACvB,eAAKwsD,SAASxqC,SAAS/hB;AACvB,eAAK+M,mBAAkB,EAAGvQ,OAAO,MAAMsa,KAAAA;;;IAG7C;IAMA04C,cAAc;AACZ,aAAO,CAAC,CAAC,KAAKxD;IAChB;IAEAvzD,KAAKsN,KAAK;AACR,YAAMzH,UAAU,KAAKA,QAAQw1B,WAAW,KAAKrqB,WAAU,CAAA;AACvD,UAAIuiD,UAAU,KAAKA;AAEnB,UAAI,CAACA,SAAS;AACZ;;AAGF,WAAKqD,uBAAuB/wD,OAAAA;AAE5B,YAAM6wD,cAAc;QAClB76C,OAAO,KAAKA;QACZD,QAAQ,KAAKA;MACf;AACA,YAAM05C,MAAK;QACThuD,GAAG,KAAKA;QACRC,GAAG,KAAKA;MACV;AAGAgsD,gBAAUt0D,KAAKwY,IAAI87C,OAAW,IAAA,OAAO,IAAIA;AAEzC,YAAM/jC,UAAUO,UAAUlqB,QAAQ2pB,OAAO;AAGzC,YAAMwnC,oBAAoB,KAAKl4B,MAAMh/B,UAAU,KAAKywD,WAAWzwD,UAAU,KAAK8vD,KAAK9vD,UAAU,KAAK0wD,UAAU1wD,UAAU,KAAK+vD,OAAO/vD;AAElI,UAAI+F,QAAQ6wB,WAAWsgC,mBAAmB;AACxC1pD,YAAIq3B,KAAI;AACRr3B,YAAI2pD,cAAc1D;AAGlB,aAAK7uB,eAAe4wB,KAAIhoD,KAAKopD,aAAa7wD,OAAAA;AAE1C0mD,8BAAsBj/C,KAAKzH,QAAQ2mD,aAAa;AAEhD8I,QAAAA,IAAG/tD,KAAKioB,QAAQhoB;AAGhB,aAAKw+B,UAAUsvB,KAAIhoD,KAAKzH,OAAAA;AAGxB,aAAKowD,SAASX,KAAIhoD,KAAKzH,OAAAA;AAGvB,aAAK0wD,WAAWjB,KAAIhoD,KAAKzH,OAAAA;AAEzBknD,6BAAqBz/C,KAAKzH,QAAQ2mD,aAAa;AAE/Cl/C,YAAIu3B,QAAO;;IAEf;IAMAwR,oBAAoB;AAClB,aAAO,KAAKn2C,WAAW,CAAA;IACzB;IAOAo2C,kBAAkBC,gBAAgBuY,eAAe;AAC/C,YAAMtY,aAAa,KAAKt2C;AACxB,YAAM4D,SAASyyC,eAAet1B,IAAI,CAAC,EAACpY,cAAcN,OAAAA,OAAK,MAAM;AAC3D,cAAMa,OAAO,KAAK/K,MAAMwR,eAAehH,YAAAA;AAEvC,YAAI,CAACO,MAAM;AACT,gBAAM,IAAIoe,MAAM,oCAAoC3e,YAAc;;AAGpE,eAAO;UACLA;UACAwD,SAASjD,KAAKD,KAAKZ,MAAM;UACzBA,OAAAA;QACF;MACF,CAAA;AACA,YAAM6mB,UAAU,CAACqnB,eAAeD,YAAY1yC,MAAAA;AAC5C,YAAMozD,kBAAkB,KAAKC,iBAAiBrzD,QAAQgrD,aAAAA;AAEtD,UAAI1/B,WAAW8nC,iBAAiB;AAC9B,aAAKh3D,UAAU4D;AACf,aAAK0vD,iBAAiB1E;AACtB,aAAKsI,sBAAsB;AAC3B,aAAKrzD,OAAO,IAAI;;IAEpB;IASAupD,YAAY1rC,IAAG+0B,QAAQzG,cAAc,MAAM;AACzC,UAAIyG,UAAU,KAAKygB,qBAAqB;AACtC,eAAO;;AAET,WAAKA,sBAAsB;AAE3B,YAAMvxD,UAAU,KAAKA;AACrB,YAAM2wC,aAAa,KAAKt2C,WAAW,CAAA;AACnC,YAAM4D,SAAS,KAAKozC,mBAAmBt1B,IAAG40B,YAAYG,QAAQzG,WAAAA;AAK9D,YAAMgnB,kBAAkB,KAAKC,iBAAiBrzD,QAAQ8d,EAAAA;AAGtD,YAAMwN,UAAUunB,UAAU,CAACF,eAAe3yC,QAAQ0yC,UAAe0gB,KAAAA;AAGjE,UAAI9nC,SAAS;AACX,aAAKlvB,UAAU4D;AAEf,YAAI+B,QAAQ6wB,WAAW7wB,QAAQgvD,UAAU;AACvC,eAAKrB,iBAAiB;YACpBlsD,GAAGsa,GAAEta;YACLC,GAAGqa,GAAEra;UACP;AAEA,eAAKxD,OAAO,MAAM4yC,MAAAA;;;AAItB,aAAOvnB;IACT;IAWA8nB,mBAAmBt1B,IAAG40B,YAAYG,QAAQzG,aAAa;AACrD,YAAMrqC,UAAU,KAAKA;AAErB,UAAI+b,GAAEpjB,SAAS,YAAY;AACzB,eAAO,CAAA;;AAGT,UAAI,CAAC0xC,aAAa;AAGhB,eAAOsG,WAAW1qC,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,SAAS,KAAKzF,MAAM+2C,0BAA0BxzB,IAAG/b,QAAQ+C,MAAM/C,SAAS8wC,MAAAA;AAE9E,UAAI9wC,QAAQoB,SAAS;AACnBnD,eAAOmD,QAAO;;AAGhB,aAAOnD;IACT;IASAqzD,iBAAiBrzD,QAAQ8d,IAAG;AAC1B,YAAM,EAACiyC,QAAQC,QAAQjuD,QAAO,IAAI;AAClC,YAAMyjB,WAAWolC,YAAY7oD,QAAQyjB,QAAQ,EAAEhqB,KAAK,MAAMwE,QAAQ8d,EAAAA;AAClE,aAAO0H,aAAa,UAAUuqC,WAAWvqC,SAAShiB,KAAKwsD,WAAWxqC,SAAS/hB;IAC7E;EACF;AAEA,MAAA,iBAAe;IACb0C,IAAI;IACJ6jD,UAAUwF;IACV5E;IAEA2I,UAAUh5D,OAAO8jD,OAAOt8C,SAAS;AAC/B,UAAIA,SAAS;AACXxH,cAAMsxD,UAAU,IAAI2D,QAAQ;UAACj1D;UAAOwH;QAAO,CAAA;;IAE/C;IAEAk2B,aAAa19B,OAAO8jD,OAAOt8C,SAAS;AAClC,UAAIxH,MAAMsxD,SAAS;AACjBtxD,cAAMsxD,QAAQvhD,WAAWvI,OAAAA;;IAE7B;IAEAmK,MAAM3R,OAAO8jD,OAAOt8C,SAAS;AAC3B,UAAIxH,MAAMsxD,SAAS;AACjBtxD,cAAMsxD,QAAQvhD,WAAWvI,OAAAA;;IAE7B;IAEAyxD,UAAUj5D,OAAO;AACf,YAAMsxD,UAAUtxD,MAAMsxD;AAEtB,UAAIA,WAAWA,QAAQoH,YAAW,GAAI;AACpC,cAAM3gD,OAAO;UACXu5C;QACF;AAEA,YAAItxD,MAAMu/B,cAAc,qBAAqB;UAAC,GAAGxnB;UAAM8zB,YAAY;QAAI,CAAA,MAAO,OAAO;AACnF;;AAGFylB,gBAAQ3vD,KAAK3B,MAAMiP,GAAG;AAEtBjP,cAAMu/B,cAAc,oBAAoBxnB,IAAAA;;IAE5C;IAEA23C,WAAW1vD,OAAO+X,MAAM;AACtB,UAAI/X,MAAMsxD,SAAS;AAEjB,cAAMvlC,mBAAmBhU,KAAKugC;AAC9B,YAAIt4C,MAAMsxD,QAAQrC,YAAYl3C,KAAKvV,OAAOupB,kBAAkBhU,KAAK85B,WAAW,GAAG;AAE7E95B,eAAKgZ,UAAU;;;IAGrB;IAEAlqB,UAAU;MACRwxB,SAAS;MACTm+B,UAAU;MACVvrC,UAAU;MACVjI,iBAAiB;MACjBk0C,YAAY;MACZvI,WAAW;QACT5oC,QAAQ;MACV;MACAqsC,cAAc;MACdC,mBAAmB;MACnB/2B,YAAY;MACZq5B,WAAW;MACXnC,aAAa;MACbf,UAAU,CAAA;MAEVoG,WAAW;MACXO,aAAa;MACb1F,eAAe;MACfD,iBAAiB;MACjBf,YAAY;QACV3rC,QAAQ;MACV;MACAoyC,aAAa;MACbhnC,SAAS;MACT+hC,cAAc;MACdD,WAAW;MACXW,cAAc;MACd7I,WAAW,CAAC97C,KAAKtG,SAASA,KAAK8oD,SAAStpD;MACxC6iD,UAAU,CAAC/7C,KAAKtG,SAASA,KAAK8oD,SAAStpD;MACvCqvD,oBAAoB;MACpBjF,eAAe;MACf/iC,YAAY;MACZtM,aAAa;MACbG,aAAa;MACbvc,WAAW;QACTvG,UAAU;QACVsE,QAAQ;MACV;MACA6C,YAAY;QACV4U,SAAS;UACPnc,MAAM;UACNiH,YAAY;YAAC;YAAK;YAAK;YAAS;YAAU;YAAU;UAAS;QAC/D;QACA8tD,SAAS;UACPrwD,QAAQ;UACRtE,UAAU;QACZ;MACF;MACAH,WAAW8zD;IACb;IAEA18B,eAAe;MACbi6B,UAAU;MACVC,YAAY;MACZ/C,WAAW;IACb;IAEAxsC,aAAa;MACXC,aAAa,CAAC3D,UAASA,UAAS,YAAYA,UAAS,cAAcA,UAAS;MAC5E4D,YAAY;MACZjiB,WAAW;QACTgiB,aAAa;QACbC,YAAY;MACd;MACAvb,WAAW;QACToyD,WAAW;MACb;MACAxxD,YAAY;QACVwxD,WAAW;MACb;IACF;IAGA3pB,wBAAwB;MAAC;IAAc;EACzC;;;;;;;;;;;ACl0CA,MAAM4pB,cAAc,CAAC7lD,QAAQpF,KAAKhE,QAAOkvD,gBAAgB;AACvD,QAAI,OAAOlrD,QAAQ,UAAU;AAC3BhE,MAAAA,SAAQoJ,OAAO5Q,KAAKwL,GAAO,IAAA;AAC3BkrD,kBAAY1Q,QAAQ;QAACx+C,OAAAA;QAAOwK,OAAOxG;MAAG,CAAA;eAC7B8P,MAAM9P,GAAM,GAAA;AACrBhE,MAAAA,SAAQ;;AAEV,WAAOA;EACT;AAEA,WAASmvD,eAAe/lD,QAAQpF,KAAKhE,QAAOkvD,aAAa;AACvD,UAAM5gC,QAAQllB,OAAO2K,QAAQ/P,GAAAA;AAC7B,QAAIsqB,UAAU,IAAI;AAChB,aAAO2gC,YAAY7lD,QAAQpF,KAAKhE,QAAOkvD,WAAAA;;AAEzC,UAAM17C,OAAOpK,OAAOgmD,YAAYprD,GAAAA;AAChC,WAAOsqB,UAAU9a,OAAOxT,SAAQsuB;EAClC;AAEA,MAAM6B,aAAa,CAACnwB,QAAOlH,QAAQkH,WAAU,OAAO,OAAOs2B,YAAY5/B,KAAKi4B,MAAM3uB,MAAAA,GAAQ,GAAGlH,GAAI;AAEjG,WAASu2D,kBAAkBrxD,OAAO;AAChC,UAAMoL,SAAS,KAAKC,UAAS;AAE7B,QAAIrL,SAAS,KAAKA,QAAQoL,OAAO7R,QAAQ;AACvC,aAAO6R,OAAOpL,KAAM;;AAEtB,WAAOA;EACT;AAEe,MAAMsxD,gBAAN,cAA4B39B,MAAAA;IAEzC,OAAOjwB,KAAK;IAKZ,OAAO/E,WAAW;MAChByS,OAAO;QACLomB,UAAU65B;MACZ;;IAGF/5D,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKo1D,cAAc35D;AACnB,WAAK45D,cAAc;AACnB,WAAKC,eAAe,CAAA;IACtB;IAEAnwC,KAAK6jB,cAAc;AACjB,YAAMusB,QAAQ,KAAKD;AACnB,UAAIC,MAAMn4D,QAAQ;AAChB,cAAM6R,SAAS,KAAKC,UAAS;AAC7B,mBAAW,EAACrJ,OAAAA,QAAOwK,MAAK,KAAKklD,OAAO;AAClC,cAAItmD,OAAOpJ,MAAM,MAAKwK,OAAO;AAC3BpB,mBAAOuE,OAAO3N,QAAO,CAAA;;QAEzB;AACA,aAAKyvD,eAAe,CAAA;;AAEtB,YAAMnwC,KAAK6jB,YAAAA;IACb;IAEAx6B,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/CmvD,eAAe/lD,QAAQpF,KAAKyC,eAAezG,QAAOgE,GAAAA,GAAM,KAAKyrD,YAAY;AAC7E,aAAOt/B,WAAWnwB,QAAOoJ,OAAO7R,SAAS,CAAA;IAC3C;IAEAy8B,sBAAsB;AACpB,YAAM,EAACpyB,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAI,EAAChL,KAAKmC,IAAG,IAAI,KAAKkR,UAAU,IAAI;AAEpC,UAAI,KAAK1M,QAAQ26C,WAAW,SAAS;AACnC,YAAI,CAACr2C,YAAY;AACfjL,gBAAM;;AAER,YAAI,CAACkL,YAAY;AACf/I,gBAAM,KAAKuQ,UAAS,EAAG9R,SAAS;;;AAIpC,WAAKZ,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEAs7B,aAAa;AACX,YAAMz9B,MAAM,KAAKA;AACjB,YAAMmC,MAAM,KAAKA;AACjB,YAAMyZ,SAAS,KAAKjV,QAAQiV;AAC5B,YAAMnD,QAAQ,CAAA;AACd,UAAIhG,SAAS,KAAKC,UAAS;AAG3BD,eAAS,QAAS,KAAKtQ,QAAQsQ,OAAO7R,SAAS,IAAK6R,SAASA,OAAOmX,MAAM5pB,KAAKmC,MAAM,CAAE;AAEvF,WAAK02D,cAAc94D,KAAKoC,IAAIsQ,OAAO7R,UAAUgb,SAAS,IAAI,IAAI,CAAA;AAC9D,WAAKg9C,cAAc,KAAK54D,OAAO4b,SAAS,MAAM;AAE9C,eAASvU,QAAQrH,KAAKqH,SAASlF,KAAKkF,SAAS;AAC3CoR,cAAM5W,KAAK;UAACwF;QAAK,CAAA;MACnB;AACA,aAAOoR;IACT;IAEA3E,iBAAiBzM,OAAO;AACtB,aAAOqxD,kBAAkBt4D,KAAK,MAAMiH,KAAAA;IACtC;IAKA1B,YAAY;AACV,YAAMA,UAAS;AAEf,UAAI,CAAC,KAAK2U,aAAY,GAAI;AAExB,aAAKiP,iBAAiB,CAAC,KAAKA;;IAEhC;IAGA/Q,iBAAiBnR,OAAO;AACtB,UAAI,OAAOA,UAAU,UAAU;AAC7BA,gBAAQ,KAAK2K,MAAM3K,KAAAA;;AAGrB,aAAOA,UAAU,OAAO+L,MAAM,KAAKgL,oBAAoB/W,QAAQ,KAAKuxD,eAAe,KAAKC,WAAW;IACrG;IAIAngD,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;IAEAiX,iBAAiBsjB,OAAO;AACtB,aAAO7hC,KAAKi4B,MAAM,KAAK4gC,cAAc,KAAK52B,mBAAmBJ,KAAS,IAAA,KAAKi3B,WAAW;IACxF;IAEA38C,eAAe;AACb,aAAO,KAAK1T;IACd;EACF;ACrIA,WAASwwD,gBAAcC,mBAAmBC,WAAW;AACnD,UAAMzgD,QAAQ,CAAA;AAKd,UAAM0gD,cAAc;AACpB,UAAM,EAAC7X,QAAQhe,MAAMtjC,KAAKmC,KAAKi3D,WAAWnnD,OAAOonD,UAAUC,WAAWC,cAAAA,IAAiBN;AACvF,UAAMO,OAAOl2B,QAAQ;AACrB,UAAMm2B,YAAYJ,WAAW;AAC7B,UAAM,EAACr5D,KAAK05D,MAAMv3D,KAAKw3D,KAAAA,IAAQT;AAC/B,UAAMjuD,aAAa,CAACgO,cAAcjZ,GAAAA;AAClC,UAAMkL,aAAa,CAAC+N,cAAc9W,GAAAA;AAClC,UAAMy3D,eAAe,CAAC3gD,cAAchH,KAAAA;AACpC,UAAM4nD,cAAcF,OAAOD,SAASJ,YAAY;AAChD,QAAIj4C,UAAUy4C,SAASH,OAAOD,QAAQD,YAAYD,IAAQA,IAAAA;AAC1D,QAAI12D,QAAQi3D,SAASC,SAASC;AAI9B,QAAI54C,UAAU83C,eAAe,CAACluD,cAAc,CAACC,YAAY;AACvD,aAAO;QAAC;UAAC7D,OAAOqyD;QAAI;QAAG;UAACryD,OAAOsyD;QAAI;MAAE;;AAGvCM,gBAAYl6D,KAAK24B,KAAKihC,OAAOt4C,OAAAA,IAAWthB,KAAKoE,MAAMu1D,OAAOr4C,OAAAA;AAC1D,QAAI44C,YAAYR,WAAW;AAEzBp4C,gBAAUy4C,QAAQG,YAAY54C,UAAUo4C,YAAYD,IAAQA,IAAAA;;AAG9D,QAAI,CAACvgD,cAAcmgD,SAAY,GAAA;AAE7Bt2D,eAAS/C,KAAKirB,IAAI,IAAIouC,SAAAA;AACtB/3C,gBAAUthB,KAAK24B,KAAKrX,UAAUve,MAAUA,IAAAA;;AAG1C,QAAIw+C,WAAW,SAAS;AACtByY,gBAAUh6D,KAAKoE,MAAMu1D,OAAOr4C,OAAWA,IAAAA;AACvC24C,gBAAUj6D,KAAK24B,KAAKihC,OAAOt4C,OAAWA,IAAAA;WACjC;AACL04C,gBAAUL;AACVM,gBAAUL;;AAGZ,QAAI1uD,cAAcC,cAAco4B,QAAQ42B,aAAa/3D,MAAMnC,OAAOsjC,MAAMjiB,UAAU,GAAO,GAAA;AAKvF44C,kBAAYl6D,KAAKi4B,MAAMj4B,KAAKC,KAAKmC,MAAMnC,OAAOqhB,SAASg4C,QAAAA,CAAAA;AACvDh4C,iBAAWlf,MAAMnC,OAAOi6D;AACxBF,gBAAU/5D;AACVg6D,gBAAU73D;IACZ,WAAWy3D,cAAc;AAIvBG,gBAAU9uD,aAAajL,MAAM+5D;AAC7BC,gBAAU9uD,aAAa/I,MAAM63D;AAC7BC,kBAAYhoD,QAAQ;AACpBoP,iBAAW24C,UAAUD,WAAWE;WAC3B;AAELA,mBAAaD,UAAUD,WAAW14C;AAGlC,UAAI84C,aAAaF,WAAWl6D,KAAKi4B,MAAMiiC,SAAAA,GAAY54C,UAAU,GAAO,GAAA;AAClE44C,oBAAYl6D,KAAKi4B,MAAMiiC,SAAAA;aAClB;AACLA,oBAAYl6D,KAAK24B,KAAKuhC,SAAAA;;;AAM1B,UAAMG,gBAAgBr6D,KAAKoC,IACzBk4D,eAAeh5C,OAAAA,GACfg5C,eAAeN,OAAAA,CAAAA;AAEjBj3D,aAAS/C,KAAKirB,IAAI,IAAI/R,cAAcmgD,SAAAA,IAAagB,gBAAgBhB,SAAS;AAC1EW,cAAUh6D,KAAKi4B,MAAM+hC,UAAUj3D,MAAUA,IAAAA;AACzCk3D,cAAUj6D,KAAKi4B,MAAMgiC,UAAUl3D,MAAUA,IAAAA;AAEzC,QAAIynB,KAAI;AACR,QAAItf,YAAY;AACd,UAAIsuD,iBAAiBQ,YAAY/5D,KAAK;AACpCyY,cAAM5W,KAAK;UAACwF,OAAOrH;QAAG,CAAA;AAEtB,YAAI+5D,UAAU/5D,KAAK;AACjBuqB,UAAAA;;AAGF,YAAI4vC,aAAap6D,KAAKi4B,OAAO+hC,UAAUxvC,KAAIlJ,WAAWve,MAAAA,IAAUA,QAAQ9C,KAAKs6D,kBAAkBt6D,KAAK65D,YAAYZ,iBAAqB,CAAA,GAAA;AACnI1uC,UAAAA;;iBAEOwvC,UAAU/5D,KAAK;AACxBuqB,QAAAA;;;AAIJ,WAAOA,KAAI0vC,WAAW,EAAE1vC,IAAG;AACzB,YAAMgwC,YAAYx6D,KAAKi4B,OAAO+hC,UAAUxvC,KAAIlJ,WAAWve,MAAUA,IAAAA;AACjE,UAAIoI,cAAcqvD,YAAYp4D,KAAK;AACjC;;AAEFsW,YAAM5W,KAAK;QAACwF,OAAOkzD;MAAS,CAAA;IAC9B;AAEA,QAAIrvD,cAAcquD,iBAAiBS,YAAY73D,KAAK;AAElD,UAAIsW,MAAM7X,UAAUu5D,aAAa1hD,MAAMA,MAAM7X,SAAS,CAAA,EAAGyG,OAAOlF,KAAKm4D,kBAAkBn4D,KAAK03D,YAAYZ,iBAAqB,CAAA,GAAA;AAC3HxgD,cAAMA,MAAM7X,SAAS,CAAE,EAACyG,QAAQlF;aAC3B;AACLsW,cAAM5W,KAAK;UAACwF,OAAOlF;QAAG,CAAA;;IAE1B,WAAW,CAAC+I,cAAc8uD,YAAY73D,KAAK;AACzCsW,YAAM5W,KAAK;QAACwF,OAAO2yD;MAAO,CAAA;;AAG5B,WAAOvhD;EACT;AAEA,WAAS6hD,kBAAkBjzD,OAAOwyD,YAAY,EAACr/C,YAAYwkB,YAAW,GAAG;AACvE,UAAMw7B,MAAMv3C,UAAU+b,WAAAA;AACtB,UAAMhmB,SAASwB,aAAaza,KAAKsgB,IAAIm6C,GAAAA,IAAOz6D,KAAKogB,IAAIq6C,GAAAA,MAAS;AAC9D,UAAM55D,SAAS,OAAOi5D,cAAc,KAAKxyD,OAAOzG;AAChD,WAAOb,KAAKC,IAAI65D,aAAa7gD,OAAOpY,MAAAA;EACtC;AAEe,MAAM65D,kBAAN,cAA8Bz/B,MAAAA;IAE3Cr8B,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKvD,QAAQhB;AAEb,WAAK+I,MAAM/I;AAEX,WAAK25D,cAAc35D;AAEnB,WAAKy7D,YAAYz7D;AACjB,WAAK45D,cAAc;IACrB;IAEA7mD,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;IAEAstD,yBAAyB;AACvB,YAAM,EAAC5+C,YAAW,IAAI,KAAKpV;AAC3B,YAAM,EAACsE,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAI,EAAChL,KAAKmC,IAAG,IAAI;AAEjB,YAAMy4D,UAASx/C,CAAAA,OAAMpb,MAAMiL,aAAajL,MAAMob;AAC9C,YAAMy/C,UAASz/C,CAAAA,OAAMjZ,MAAM+I,aAAa/I,MAAMiZ;AAE9C,UAAIW,aAAa;AACf,cAAM++C,UAAU/wD,KAAK/J,GAAAA;AACrB,cAAM+6D,UAAUhxD,KAAK5H,GAAAA;AAErB,YAAI24D,UAAU,KAAKC,UAAU,GAAG;AAC9BF,UAAAA,QAAO,CAAA;QACT,WAAWC,UAAU,KAAKC,UAAU,GAAG;AACrCH,UAAAA,QAAO,CAAA;;;AAIX,UAAI56D,QAAQmC,KAAK;AACf,YAAIyZ,SAASzZ,QAAQ,IAAI,IAAIpC,KAAKwY,IAAIpW,MAAM,IAAK;AAEjD04D,QAAAA,QAAO14D,MAAMyZ,MAAAA;AAEb,YAAI,CAACG,aAAa;AAChB6+C,UAAAA,QAAO56D,MAAM4b,MAAAA;;;AAGjB,WAAK5b,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEA64D,eAAe;AACb,YAAM/jC,WAAW,KAAKtwB,QAAQ8R;AAE9B,UAAI,EAAC4e,eAAe4jC,SAAAA,IAAYhkC;AAChC,UAAIoiC;AAEJ,UAAI4B,UAAU;AACZ5B,mBAAWt5D,KAAK24B,KAAK,KAAKv2B,MAAM84D,QAAYl7D,IAAAA,KAAKoE,MAAM,KAAKnE,MAAMi7D,QAAY,IAAA;AAC9E,YAAI5B,WAAW,KAAM;AACnB9pD,kBAAQC,KAAK,UAAU,KAAKzE,EAAE,oBAAoBkwD,QAAS,kCAAiC5B,QAAAA,2BAAmC;AAC/HA,qBAAW;;aAER;AACLA,mBAAW,KAAK6B,iBAAgB;AAChC7jC,wBAAgBA,iBAAiB;;AAGnC,UAAIA,eAAe;AACjBgiC,mBAAWt5D,KAAKC,IAAIq3B,eAAegiC,QAAAA;;AAGrC,aAAOA;IACT;IAKA6B,mBAAmB;AACjB,aAAO/vD,OAAOE;IAChB;IAEAoyB,aAAa;AACX,YAAM31B,OAAO,KAAKnB;AAClB,YAAMswB,WAAWnvB,KAAK2Q;AAMtB,UAAI4gD,WAAW,KAAK2B,aAAY;AAChC3B,iBAAWt5D,KAAKoC,IAAI,GAAGk3D,QAAAA;AAEvB,YAAM8B,0BAA0B;QAC9B9B;QACA/X,QAAQx5C,KAAKw5C;QACbthD,KAAK8H,KAAK9H;QACVmC,KAAK2F,KAAK3F;QACVi3D,WAAWniC,SAASmiC;QACpB91B,MAAMrM,SAASgkC;QACfhpD,OAAOglB,SAAShlB;QAChBqnD,WAAW,KAAKpyB,WAAU;QAC1B1sB,YAAY,KAAKF,aAAY;QAC7B0kB,aAAa/H,SAAS+H,eAAe;QACrCu6B,eAAetiC,SAASsiC,kBAAkB;MAC5C;AACA,YAAML,YAAY,KAAK39B,UAAU;AACjC,YAAM9iB,QAAQugD,gBAAcmC,yBAAyBjC,SAAAA;AAIrD,UAAIpxD,KAAKw5C,WAAW,SAAS;AAC3B8Z,2BAAmB3iD,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,MAAM,KAAK7F;AAEf,YAAMwD,UAAS;AAEf,UAAI,KAAKgB,QAAQiV,UAAUnD,MAAM7X,QAAQ;AACvC,cAAMgb,UAAU5T,MAAM/H,UAASF,KAAKoC,IAAIsW,MAAM7X,SAAS,GAAG,CAAK,IAAA;AAC/DX,QAAAA,UAAS2b;AACT5T,eAAO4T;;AAET,WAAKg9C,cAAc34D;AACnB,WAAKy6D,YAAY1yD;AACjB,WAAK6wD,cAAc7wD,MAAM/H;IAC3B;IAEA6T,iBAAiBzM,OAAO;AACtB,aAAOud,aAAavd,OAAO,KAAKlI,MAAMwH,QAAQke,QAAQ,KAAKle,QAAQ8R,MAAMoQ,MAAM;IACjF;EACF;ACnTe,MAAMwyC,cAAN,cAA0BZ,gBAAAA;IAEvC,OAAO1vD,KAAK;IAKZ,OAAO/E,WAAW;MAChByS,OAAO;QACLomB,UAAUy8B,MAAMC,WAAWC;MAC7B;;IAIFn+B,sBAAsB;AACpB,YAAM,EAACr9B,KAAKmC,IAAG,IAAI,KAAKkR,UAAU,IAAI;AAEtC,WAAKrT,MAAM8J,eAAS9J,GAAAA,IAAOA,MAAM;AACjC,WAAKmC,MAAM2H,eAAS3H,GAAAA,IAAOA,MAAM;AAGjC,WAAKw4D,uBAAsB;IAC7B;IAMAO,mBAAmB;AACjB,YAAM1gD,aAAa,KAAKF,aAAY;AACpC,YAAM1Z,SAAS4Z,aAAa,KAAKmC,QAAQ,KAAKD;AAC9C,YAAMsiB,cAAc/b,UAAU,KAAKtc,QAAQ8R,MAAMumB,WAAW;AAC5D,YAAMhmB,SAASwB,aAAaza,KAAKsgB,IAAI2e,WAAAA,IAAej/B,KAAKogB,IAAI6e,WAAAA,MAAiB;AAC9E,YAAMoC,WAAW,KAAKG,wBAAwB,CAAA;AAC9C,aAAOxhC,KAAK24B,KAAK93B,SAASb,KAAKC,IAAI,IAAIohC,SAAS9G,aAAathB,KAAAA,CAAAA;IAC/D;IAGAR,iBAAiBnR,OAAO;AACtB,aAAOA,UAAU,OAAO+L,MAAM,KAAKgL,oBAAoB/W,QAAQ,KAAKuxD,eAAe,KAAKC,WAAW;IACrG;IAEAv6C,iBAAiBsjB,OAAO;AACtB,aAAO,KAAKg3B,cAAc,KAAK52B,mBAAmBJ,KAAAA,IAAS,KAAKi3B;IAClE;EACF;AC3CA,MAAM4C,aAAargD,CAAAA,OAAKrb,KAAKoE,MAAMu3D,MAAMtgD,EAAAA,CAAAA;AACzC,MAAMugD,iBAAiB,CAACvgD,IAAGwgD,OAAM77D,KAAKirB,IAAI,IAAIywC,WAAWrgD,EAAKwgD,IAAAA,EAAAA;AAE9D,WAASC,QAAQC,SAAS;AACxB,UAAM/2D,SAAS+2D,UAAW/7D,KAAKirB,IAAI,IAAIywC,WAAWK,OAAAA,CAAAA;AAClD,WAAO/2D,WAAW;EACpB;AAEA,WAASg3D,MAAM/7D,KAAKmC,KAAK65D,UAAU;AACjC,UAAMC,YAAYl8D,KAAKirB,IAAI,IAAIgxC,QAAAA;AAC/B,UAAM/7D,SAAQF,KAAKoE,MAAMnE,MAAMi8D,SAAAA;AAC/B,UAAMj0D,MAAMjI,KAAK24B,KAAKv2B,MAAM85D,SAAAA;AAC5B,WAAOj0D,MAAM/H;EACf;AAEA,WAASi8D,SAASl8D,KAAKmC,KAAK;AAC1B,UAAM+Q,QAAQ/Q,MAAMnC;AACpB,QAAIg8D,WAAWP,WAAWvoD,KAAAA;AAC1B,WAAO6oD,MAAM/7D,KAAKmC,KAAK65D,QAAAA,IAAY,IAAI;AACrCA;IACF;AACA,WAAOD,MAAM/7D,KAAKmC,KAAK65D,QAAAA,IAAY,IAAI;AACrCA;IACF;AACA,WAAOj8D,KAAKC,IAAIg8D,UAAUP,WAAWz7D,GAAAA,CAAAA;EACvC;AASA,WAASg5D,cAAcC,mBAAmB,EAACj5D,KAAKmC,IAAG,GAAG;AACpDnC,UAAMs8B,gBAAgB28B,kBAAkBj5D,KAAKA,GAAAA;AAC7C,UAAMyY,QAAQ,CAAA;AACd,UAAM0jD,SAASV,WAAWz7D,GAAAA;AAC1B,QAAIo8D,MAAMF,SAASl8D,KAAKmC,GAAAA;AACxB,QAAIi3D,YAAYgD,MAAM,IAAIr8D,KAAKirB,IAAI,IAAIjrB,KAAKwY,IAAI6jD,GAAAA,CAAAA,IAAQ;AACxD,UAAMnB,WAAWl7D,KAAKirB,IAAI,IAAIoxC,GAAAA;AAC9B,UAAM3hD,OAAO0hD,SAASC,MAAMr8D,KAAKirB,IAAI,IAAImxC,MAAAA,IAAU;AACnD,UAAMl8D,SAAQF,KAAKi4B,OAAOh4B,MAAMya,QAAQ2+C,SAAaA,IAAAA;AACrD,UAAMx9C,SAAS7b,KAAKoE,OAAOnE,MAAMya,QAAQwgD,WAAW,EAAA,IAAMA,WAAW;AACrE,QAAIoB,cAAct8D,KAAKoE,OAAOlE,SAAQ2b,UAAU7b,KAAKirB,IAAI,IAAIoxC,GAAAA,CAAAA;AAC7D,QAAI/0D,QAAQi1B,gBAAgB28B,kBAAkBj5D,KAAKD,KAAKi4B,OAAOvd,OAAOmB,SAASygD,cAAct8D,KAAKirB,IAAI,IAAIoxC,GAAAA,KAAQhD,SAAaA,IAAAA,SAAAA;AAC/H,WAAO/xD,QAAQlF,KAAK;AAClBsW,YAAM5W,KAAK;QAACwF;QAAOkwB,OAAOskC,QAAQx0D,KAAAA;QAAQg1D;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;;AAE7B/xD,cAAQtH,KAAKi4B,OAAOvd,OAAOmB,SAASygD,cAAct8D,KAAKirB,IAAI,IAAIoxC,GAAAA,KAAQhD,SAAaA,IAAAA;IACtF;AACA,UAAMkD,WAAWhgC,gBAAgB28B,kBAAkB92D,KAAKkF,KAAAA;AACxDoR,UAAM5W,KAAK;MAACwF,OAAOi1D;MAAU/kC,OAAOskC,QAAQS,QAAAA;MAAWD;IAAW,CAAA;AAElE,WAAO5jD;EACT;AAEe,MAAM8jD,mBAAN,cAA+BvhC,MAAAA;IAE5C,OAAOjwB,KAAK;IAKZ,OAAO/E,WAAW;MAChByS,OAAO;QACLomB,UAAUy8B,MAAMC,WAAWiB;QAC3BjlC,OAAO;UACLC,SAAS;QACX;MACF;;IAIF74B,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAKvD,QAAQhB;AAEb,WAAK+I,MAAM/I;AAEX,WAAK25D,cAAc35D;AACnB,WAAK45D,cAAc;IACrB;IAEA7mD,MAAM3E,KAAKhE,QAAO;AAChB,YAAMhC,QAAQozD,gBAAgB/xC,UAAU1W,MAAMk+C,MAAM,MAAM;QAAC7iD;QAAKhE;MAAM,CAAA;AACtE,UAAIhC,UAAU,GAAG;AACf,aAAKo1D,QAAQ;AACb,eAAOx9D;;AAET,aAAO6K,eAASzC,KAAAA,KAAUA,QAAQ,IAAIA,QAAQ;IAChD;IAEAg2B,sBAAsB;AACpB,YAAM,EAACr9B,KAAKmC,IAAG,IAAI,KAAKkR,UAAU,IAAI;AAEtC,WAAKrT,MAAM8J,eAAS9J,GAAAA,IAAOD,KAAKoC,IAAI,GAAGnC,GAAAA,IAAO;AAC9C,WAAKmC,MAAM2H,eAAS3H,GAAAA,IAAOpC,KAAKoC,IAAI,GAAGA,GAAAA,IAAO;AAE9C,UAAI,KAAKwE,QAAQoV,aAAa;AAC5B,aAAK0gD,QAAQ;;AAKf,UAAI,KAAKA,SAAS,KAAKz8D,QAAQ,KAAK+7B,iBAAiB,CAACjyB,eAAS,KAAK+xB,QAAQ,GAAG;AAC7E,aAAK77B,MAAMA,QAAQ27D,eAAe,KAAK37D,KAAK,CAAK27D,IAAAA,eAAe,KAAK37D,KAAK,EAAC,IAAK27D,eAAe,KAAK37D,KAAK,CAAE;;AAG7G,WAAK26D,uBAAsB;IAC7B;IAEAA,yBAAyB;AACvB,YAAM,EAAC1vD,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AACnD,UAAIhL,MAAM,KAAKA;AACf,UAAImC,MAAM,KAAKA;AAEf,YAAMy4D,UAASx/C,CAAAA,OAAMpb,MAAMiL,aAAajL,MAAMob;AAC9C,YAAMy/C,UAASz/C,CAAAA,OAAMjZ,MAAM+I,aAAa/I,MAAMiZ;AAE9C,UAAIpb,QAAQmC,KAAK;AACf,YAAInC,OAAO,GAAG;AACZ46D,UAAAA,QAAO,CAAA;AACPC,UAAAA,QAAO,EAAA;eACF;AACLD,UAAAA,QAAOe,eAAe37D,KAAK,EAAC,CAAA;AAC5B66D,UAAAA,QAAOc,eAAex5D,KAAK,CAAC,CAAA;;;AAGhC,UAAInC,OAAO,GAAG;AACZ46D,QAAAA,QAAOe,eAAex5D,KAAK,EAAC,CAAA;;AAE9B,UAAIA,OAAO,GAAG;AAEZ04D,QAAAA,QAAOc,eAAe37D,KAAK,CAAC,CAAA;;AAG9B,WAAKA,MAAMA;AACX,WAAKmC,MAAMA;IACb;IAEAs7B,aAAa;AACX,YAAM31B,OAAO,KAAKnB;AAElB,YAAMsyD,oBAAoB;QACxBj5D,KAAK,KAAK67B;QACV15B,KAAK,KAAKy5B;MACZ;AACA,YAAMnjB,QAAQugD,cAAcC,mBAAmB,IAAI;AAInD,UAAInxD,KAAKw5C,WAAW,SAAS;AAC3B8Z,2BAAmB3iD,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,MACA2lB,aAAavd,OAAO,KAAKlI,MAAMwH,QAAQke,QAAQ,KAAKle,QAAQ8R,MAAMoQ,MAAM;IAC9E;IAKAljB,YAAY;AACV,YAAM1F,SAAQ,KAAKD;AAEnB,YAAM2F,UAAS;AAEf,WAAKizD,cAAc8C,MAAMz7D,MAAAA;AACzB,WAAK44D,cAAc6C,MAAM,KAAKv5D,GAAG,IAAIu5D,MAAMz7D,MAAAA;IAC7C;IAEAuY,iBAAiBnR,OAAO;AACtB,UAAIA,UAAUpI,UAAaoI,UAAU,GAAG;AACtCA,gBAAQ,KAAKrH;;AAEf,UAAIqH,UAAU,QAAQ8V,MAAM9V,KAAQ,GAAA;AAClC,eAAO+L;;AAET,aAAO,KAAKgL,mBAAmB/W,UAAU,KAAKrH,MAC1C,KACC07D,MAAMr0D,KAAAA,IAAS,KAAKuxD,eAAe,KAAKC,WAAW;IAC1D;IAEAv6C,iBAAiBsjB,OAAO;AACtB,YAAMC,UAAU,KAAKG,mBAAmBJ,KAAAA;AACxC,aAAO7hC,KAAKirB,IAAI,IAAI,KAAK4tC,cAAc/2B,UAAU,KAAKg3B,WAAW;IACnE;EACF;ACzNA,WAAS6D,sBAAsB50D,MAAM;AACnC,UAAMmvB,WAAWnvB,KAAK2Q;AAEtB,QAAIwe,SAAStQ,WAAW7e,KAAK6e,SAAS;AACpC,YAAM2J,UAAUO,UAAUoG,SAASmO,eAAe;AAClD,aAAOt1B,eAAemnB,SAASkD,QAAQlD,SAASkD,KAAK7yB,MAAMtB,SAASm0B,KAAK7yB,IAAI,IAAIgpB,QAAQ5T;;AAE3F,WAAO;EACT;AAEA,WAASigD,iBAAiBvuD,KAAK+rB,MAAMtmB,OAAO;AAC1CA,YAAQvN,SAAQuN,KAAAA,IAASA,QAAQ;MAACA;IAAM;AACxC,WAAO;MACLsb,GAAGytC,aAAaxuD,KAAK+rB,KAAKqH,QAAQ3tB,KAAAA;MAClCwb,GAAGxb,MAAMjT,SAASu5B,KAAKG;IACzB;EACF;AAEA,WAASuiC,gBAAgBp8C,OAAOkM,KAAKrlB,MAAMtH,KAAKmC,KAAK;AACnD,QAAIse,UAAUzgB,OAAOygB,UAAUte,KAAK;AAClC,aAAO;QACLlC,OAAO0sB,MAAOrlB,OAAO;QACrBU,KAAK2kB,MAAOrlB,OAAO;MACrB;IACF,WAAWmZ,QAAQzgB,OAAOygB,QAAQte,KAAK;AACrC,aAAO;QACLlC,OAAO0sB,MAAMrlB;QACbU,KAAK2kB;MACP;;AAGF,WAAO;MACL1sB,OAAO0sB;MACP3kB,KAAK2kB,MAAMrlB;IACb;EACF;AAKA,WAASw1D,mBAAmBl1D,OAAO;AA8BjC,UAAMqT,OAAO;MACXnS,GAAGlB,MAAMa,OAAOb,MAAMqnD,SAASxmD;MAC/BG,GAAGhB,MAAMW,QAAQX,MAAMqnD,SAAS1mD;MAChCI,GAAGf,MAAMU,MAAMV,MAAMqnD,SAAS3mD;MAC9BO,GAAGjB,MAAMY,SAASZ,MAAMqnD,SAASzmD;IACnC;AACA,UAAMu0D,SAASj3D,OAAOyB,OAAO,CAAA,GAAI0T,IAAAA;AACjC,UAAMokB,aAAa,CAAA;AACnB,UAAM/O,UAAU,CAAA;AAChB,UAAM0sC,aAAap1D,MAAMq1D,aAAar8D;AACtC,UAAMs8D,iBAAiBt1D,MAAMjB,QAAQkgB;AACrC,UAAMs2C,kBAAkBD,eAAeE,oBAAoBp8C,KAAKg8C,aAAa;AAE7E,aAASn8D,KAAI,GAAGA,KAAIm8D,YAAYn8D,MAAK;AACnC,YAAMiH,OAAOo1D,eAAe/gC,WAAWv0B,MAAMy1D,qBAAqBx8D,EAAAA,CAAAA;AAClEyvB,cAAQzvB,EAAAA,IAAKiH,KAAKwoB;AAClB,YAAMvI,gBAAgBngB,MAAM01D,iBAAiBz8D,IAAG+G,MAAM21D,cAAcjtC,QAAQzvB,EAAAA,GAAIs8D,eAAAA;AAChF,YAAMK,SAASpjC,OAAOtyB,KAAKqyB,IAAI;AAC/B,YAAM+0B,WAAWyN,iBAAiB/0D,MAAMwG,KAAKovD,QAAQ51D,MAAMq1D,aAAap8D,EAAE,CAAA;AAC1Ew+B,iBAAWx+B,EAAAA,IAAKquD;AAEhB,YAAM/uB,eAAemY,gBAAgB1wC,MAAM2f,cAAc1mB,EAAKs8D,IAAAA,eAAAA;AAC9D,YAAM18C,QAAQ1gB,KAAKi4B,MAAM6H,UAAUM,YAAAA,CAAAA;AACnC,YAAMs9B,UAAUZ,gBAAgBp8C,OAAOsH,cAAc3f,GAAG8mD,SAAS//B,GAAG,GAAG,GAAA;AACvE,YAAMuuC,UAAUb,gBAAgBp8C,OAAOsH,cAAc1f,GAAG6mD,SAAS7/B,GAAG,IAAI,GAAA;AACxEsuC,mBAAaZ,QAAQ9hD,MAAMklB,cAAcs9B,SAASC,OAAAA;IACpD;AAEA91D,UAAMg2D,eACJ3iD,KAAKnS,IAAIi0D,OAAOj0D,GAChBi0D,OAAOn0D,IAAIqS,KAAKrS,GAChBqS,KAAKtS,IAAIo0D,OAAOp0D,GAChBo0D,OAAOl0D,IAAIoS,KAAKpS,CAAC;AAInBjB,UAAMi2D,mBAAmBC,qBAAqBl2D,OAAOy3B,YAAY/O,OAAAA;EACnE;AAEA,WAASqtC,aAAaZ,QAAQ9hD,MAAMwF,OAAOg9C,SAASC,SAAS;AAC3D,UAAMr9C,MAAMtgB,KAAKwY,IAAIxY,KAAKsgB,IAAII,KAAAA,CAAAA;AAC9B,UAAMN,MAAMpgB,KAAKwY,IAAIxY,KAAKogB,IAAIM,KAAAA,CAAAA;AAC9B,QAAIrY,KAAI;AACR,QAAIC,KAAI;AACR,QAAIo1D,QAAQx9D,QAAQgb,KAAKnS,GAAG;AAC1BV,MAAAA,MAAK6S,KAAKnS,IAAI20D,QAAQx9D,SAASogB;AAC/B08C,aAAOj0D,IAAI/I,KAAKC,IAAI+8D,OAAOj0D,GAAGmS,KAAKnS,IAAIV,EAAAA;IACzC,WAAWq1D,QAAQz1D,MAAMiT,KAAKrS,GAAG;AAC/BR,MAAAA,MAAKq1D,QAAQz1D,MAAMiT,KAAKrS,KAAKyX;AAC7B08C,aAAOn0D,IAAI7I,KAAKoC,IAAI46D,OAAOn0D,GAAGqS,KAAKrS,IAAIR,EAAAA;;AAEzC,QAAIs1D,QAAQz9D,QAAQgb,KAAKtS,GAAG;AAC1BN,MAAAA,MAAK4S,KAAKtS,IAAI+0D,QAAQz9D,SAASkgB;AAC/B48C,aAAOp0D,IAAI5I,KAAKC,IAAI+8D,OAAOp0D,GAAGsS,KAAKtS,IAAIN,EAAAA;IACzC,WAAWq1D,QAAQ11D,MAAMiT,KAAKpS,GAAG;AAC/BR,MAAAA,MAAKq1D,QAAQ11D,MAAMiT,KAAKpS,KAAKsX;AAC7B48C,aAAOl0D,IAAI9I,KAAKoC,IAAI46D,OAAOl0D,GAAGoS,KAAKpS,IAAIR,EAAAA;;EAE3C;AAEA,WAAS01D,qBAAqBn2D,OAAOyB,QAAO20D,UAAU;AACpD,UAAMC,gBAAgBr2D,MAAM21D;AAC5B,UAAM,EAACW,OAAOf,iBAAiB7sC,SAAShpB,KAAI,IAAI02D;AAChD,UAAMG,qBAAqBv2D,MAAM01D,iBAAiBj0D,QAAO40D,gBAAgBC,QAAQ5tC,SAAS6sC,eAAAA;AAC1F,UAAM18C,QAAQ1gB,KAAKi4B,MAAM6H,UAAUyY,gBAAgB6lB,mBAAmB19C,QAAQK,OAAAA,CAAAA,CAAAA;AAC9E,UAAMzY,KAAI+1D,UAAUD,mBAAmB91D,GAAGf,KAAK+nB,GAAG5O,KAAAA;AAClD,UAAM2jB,YAAYi6B,qBAAqB59C,KAAAA;AACvC,UAAMhY,OAAO61D,iBAAiBH,mBAAmB/1D,GAAGd,KAAK6nB,GAAGiV,SAAAA;AAC5D,WAAO;MAELgQ,SAAS;MAGThsC,GAAG+1D,mBAAmB/1D;MACtBC,GAAAA;MAGA+7B;MAGA37B;MACAH,KAAKD;MACLE,OAAOE,OAAOnB,KAAK6nB;MACnB3mB,QAAQH,KAAIf,KAAK+nB;IACnB;EACF;AAEA,WAASkvC,gBAAgBx9D,MAAMmT,MAAM;AACnC,QAAI,CAACA,MAAM;AACT,aAAO;;AAET,UAAM,EAACzL,MAAMH,KAAKC,OAAOC,OAAM,IAAIzH;AACnC,UAAMy9D,eAAelzC,eAAe;MAACljB,GAAGK;MAAMJ,GAAGC;IAAG,GAAG4L,IAAAA,KAASoX,eAAe;MAACljB,GAAGK;MAAMJ,GAAGG;IAAM,GAAG0L,IAAAA,KACnGoX,eAAe;MAACljB,GAAGG;MAAOF,GAAGC;IAAG,GAAG4L,IAAAA,KAASoX,eAAe;MAACljB,GAAGG;MAAOF,GAAGG;OAAS0L,IAAAA;AACpF,WAAO,CAACsqD;EACV;AAEA,WAASV,qBAAqBl2D,OAAOy3B,YAAY/O,SAAS;AACxD,UAAM3vB,QAAQ,CAAA;AACd,UAAMq8D,aAAap1D,MAAMq1D,aAAar8D;AACtC,UAAMkH,OAAOF,MAAMjB;AACnB,UAAM,EAACy2D,mBAAmBz2C,QAAAA,IAAW7e,KAAK+e;AAC1C,UAAMm3C,WAAW;MACfE,OAAOxB,sBAAsB50D,IAAQ,IAAA;MACrCq1D,iBAAiBC,oBAAoBp8C,KAAKg8C,aAAa;IACzD;AACA,QAAI9oD;AAEJ,aAASrT,KAAI,GAAGA,KAAIm8D,YAAYn8D,MAAK;AACnCm9D,eAAS1tC,UAAUA,QAAQzvB,EAAE;AAC7Bm9D,eAAS12D,OAAO+3B,WAAWx+B,EAAE;AAE7B,YAAME,OAAOg9D,qBAAqBn2D,OAAO/G,IAAGm9D,QAAAA;AAC5Cr9D,YAAMkB,KAAKd,IAAAA;AACX,UAAI4lB,YAAY,QAAQ;AACtB5lB,aAAKqzC,UAAUmqB,gBAAgBx9D,MAAMmT,IAAAA;AACrC,YAAInT,KAAKqzC,SAAS;AAChBlgC,iBAAOnT;;;IAGb;AACA,WAAOJ;EACT;AAEA,WAAS09D,qBAAqB59C,OAAO;AACnC,QAAIA,UAAU,KAAKA,UAAU,KAAK;AAChC,aAAO;eACEA,QAAQ,KAAK;AACtB,aAAO;;AAGT,WAAO;EACT;AAEA,WAAS69C,iBAAiBl2D,IAAG+mB,IAAG4J,OAAO;AACrC,QAAIA,UAAU,SAAS;AACrB3wB,MAAAA,MAAK+mB;eACI4J,UAAU,UAAU;AAC7B3wB,MAAAA,MAAM+mB,KAAI;;AAEZ,WAAO/mB;EACT;AAEA,WAASg2D,UAAU/1D,IAAGgnB,IAAG5O,OAAO;AAC9B,QAAIA,UAAU,MAAMA,UAAU,KAAK;AACjCpY,MAAAA,MAAMgnB,KAAI;IACZ,WAAW5O,QAAQ,OAAOA,QAAQ,IAAI;AACpCpY,MAAAA,MAAKgnB;;AAEP,WAAOhnB;EACT;AAEA,WAASo2D,kBAAkBrwD,KAAKtG,MAAM/G,MAAM;AAC1C,UAAM,EAAC0H,MAAMH,KAAKC,OAAOC,OAAM,IAAIzH;AACnC,UAAM,EAACskC,cAAa,IAAIv9B;AAExB,QAAI,CAACmR,cAAcosB,aAAgB,GAAA;AACjC,YAAM8T,eAAe2H,cAAch5C,KAAKqxC,YAAY;AACpD,YAAM7oB,UAAUO,UAAU/oB,KAAKs9B,eAAe;AAC9Ch3B,UAAI8T,YAAYmjB;AAEhB,YAAMq5B,eAAej2D,OAAO6nB,QAAQ7nB;AACpC,YAAMk2D,cAAcr2D,MAAMgoB,QAAQhoB;AAClC,YAAMs2D,gBAAgBr2D,QAAQE,OAAO6nB,QAAQ3T;AAC7C,YAAMkiD,iBAAiBr2D,SAASF,MAAMgoB,QAAQ5T;AAE9C,UAAI5W,OAAOW,OAAO0yC,YAAAA,EAAc5N,KAAKnwB,CAAAA,OAAKA,OAAM,CAAI,GAAA;AAClDhN,YAAI83B,UAAS;AACbgc,2BAAmB9zC,KAAK;UACtBhG,GAAGs2D;UACHr2D,GAAGs2D;UACHxvC,GAAGyvC;UACHvvC,GAAGwvC;UACH5/C,QAAQk6B;QACV,CAAA;AACA/qC,YAAIiB,KAAI;aACH;AACLjB,YAAIs3B,SAASg5B,cAAcC,aAAaC,eAAeC,cAAAA;;;EAG7D;AAEA,WAASC,gBAAgBl3D,OAAO4rD,YAAY;AAC1C,UAAM,EAACplD,KAAKzH,SAAS,EAACkgB,YAAW,EAAC,IAAIjf;AAEtC,aAAS/G,KAAI2yD,aAAa,GAAG3yD,MAAK,GAAGA,MAAK;AACxC,YAAME,OAAO6G,MAAMi2D,iBAAiBh9D,EAAE;AACtC,UAAI,CAACE,KAAKqzC,SAAS;AAEjB;;AAEF,YAAM7Q,cAAc1c,YAAYsV,WAAWv0B,MAAMy1D,qBAAqBx8D,EAAAA,CAAAA;AACtE49D,wBAAkBrwD,KAAKm1B,aAAaxiC,IAAAA;AACpC,YAAMy8D,SAASpjC,OAAOmJ,YAAYpJ,IAAI;AACtC,YAAM,EAAC/xB,GAAAA,IAAGC,GAAAA,IAAG+7B,UAAAA,IAAarjC;AAE1B6lC,iBACEx4B,KACAxG,MAAMq1D,aAAap8D,EAAE,GACrBuH,IACAC,KAAKm1D,OAAOljC,aAAa,GACzBkjC,QACA;QACEz6D,OAAOwgC,YAAYxgC;QACnBqhC;QACAG,cAAc;MAChB,CAAA;IAEJ;EACF;AAEA,WAASw6B,eAAen3D,OAAOqX,QAAQ2H,UAAU4sC,YAAY;AAC3D,UAAM,EAACplD,IAAG,IAAIxG;AACd,QAAIgf,UAAU;AAEZxY,UAAIsW,IAAI9c,MAAMwf,SAASxf,MAAMyf,SAASpI,QAAQ,GAAGc,GAAAA;WAC5C;AAEL,UAAIgI,gBAAgBngB,MAAM01D,iBAAiB,GAAGr+C,MAAAA;AAC9C7Q,UAAI+3B,OAAOpe,cAAc3f,GAAG2f,cAAc1f,CAAC;AAE3C,eAASxH,KAAI,GAAGA,KAAI2yD,YAAY3yD,MAAK;AACnCknB,wBAAgBngB,MAAM01D,iBAAiBz8D,IAAGoe,MAAAA;AAC1C7Q,YAAIg4B,OAAOre,cAAc3f,GAAG2f,cAAc1f,CAAC;MAC7C;;EAEJ;AAEA,WAAS22D,eAAep3D,OAAOq3D,cAAchgD,QAAQu0C,YAAYjxB,YAAY;AAC3E,UAAMn0B,MAAMxG,MAAMwG;AAClB,UAAMwY,WAAWq4C,aAAar4C;AAE9B,UAAM,EAAC7jB,OAAAA,QAAOwf,UAAAA,IAAa08C;AAE3B,QAAK,CAACr4C,YAAY,CAAC4sC,cAAe,CAACzwD,UAAS,CAACwf,aAAatD,SAAS,GAAG;AACpE;;AAGF7Q,QAAIq3B,KAAI;AACRr3B,QAAIgU,cAAcrf;AAClBqL,QAAImU,YAAYA;AAChBnU,QAAI43B,YAAYzD,WAAWoB,QAAQ,CAAA,CAAE;AACrCv1B,QAAI63B,iBAAiB1D,WAAWsB;AAEhCz1B,QAAI83B,UAAS;AACb64B,mBAAen3D,OAAOqX,QAAQ2H,UAAU4sC,UAAAA;AACxCplD,QAAIqqC,UAAS;AACbrqC,QAAIi4B,OAAM;AACVj4B,QAAIu3B,QAAO;EACb;AAEA,WAASu5B,wBAAwBnyD,QAAQ1D,QAAOwK,OAAO;AACrD,WAAO7G,cAAcD,QAAQ;MAC3B8G;MACAxK,OAAAA;MACA/J,MAAM;IACR,CAAA;EACF;AAEe,MAAM6/D,oBAAN,cAAgC1E,gBAAAA;IAE7C,OAAO1vD,KAAK;IAKZ,OAAO/E,WAAW;MAChB2gB,SAAS;MAGTy4C,SAAS;MACTh1C,UAAU;MAEV1D,YAAY;QACVC,SAAS;QACTpE,WAAW;QACXmhB,YAAY,CAAA;QACZE,kBAAkB;MACpB;MAEA/nB,MAAM;QACJ+K,UAAU;MACZ;MAEA5G,YAAY;MAGZvH,OAAO;QAELwsB,mBAAmB;QAEnBpG,UAAUy8B,MAAMC,WAAWC;MAC7B;MAEA30C,aAAa;QACXwe,eAAepmC;QAGfmmC,iBAAiB;QAGjBze,SAAS;QAGTwT,MAAM;UACJ7yB,MAAM;QACR;QAGAu3B,SAAShrB,OAAO;AACd,iBAAOA;QACT;QAGAyc,SAAS;QAGT8sC,mBAAmB;MACrB;;IAGF,OAAOzmC,gBAAgB;MACrB,oBAAoB;MACpB,qBAAqB;MACrB,eAAe;;IAGjB,OAAOrV,cAAc;MACnBoF,YAAY;QACV2xC,WAAW;MACb;;IAGF15D,YAAY6E,KAAK;AACf,YAAMA,GAAAA;AAGN,WAAK4jB,UAAUnoB;AAEf,WAAKooB,UAAUpoB;AAEf,WAAKs+D,cAAct+D;AAEnB,WAAKg+D,eAAe,CAAA;AACpB,WAAKY,mBAAmB,CAAA;IAC1B;IAEA3gC,gBAAgB;AAEd,YAAM5M,UAAU,KAAK2+B,WAAWp+B,UAAU6rC,sBAAsB,KAAK/1D,OAAO,IAAI,CAAA;AAChF,YAAMwoB,KAAI,KAAKxS,QAAQ,KAAKiH,WAAW0M,QAAQ3T;AAC/C,YAAM0S,KAAI,KAAK3S,SAAS,KAAKmH,YAAYyM,QAAQ5T;AACjD,WAAK0K,UAAUrnB,KAAKoE,MAAM,KAAKsE,OAAO0mB,KAAI,IAAImB,QAAQ7nB,IAAI;AAC1D,WAAK4e,UAAUtnB,KAAKoE,MAAM,KAAKmE,MAAM+mB,KAAI,IAAIiB,QAAQhoB,GAAG;AACxD,WAAKi1D,cAAcx9D,KAAKoE,MAAMpE,KAAKC,IAAImvB,IAAGE,EAAK,IAAA,CAAA;IACjD;IAEAgO,sBAAsB;AACpB,YAAM,EAACr9B,KAAKmC,IAAG,IAAI,KAAKkR,UAAU,KAAK;AAEvC,WAAKrT,MAAM8J,eAAS9J,GAAAA,KAAQ,CAACmd,MAAMnd,GAAOA,IAAAA,MAAM;AAChD,WAAKmC,MAAM2H,eAAS3H,GAAAA,KAAQ,CAACgb,MAAMhb,GAAOA,IAAAA,MAAM;AAGhD,WAAKw4D,uBAAsB;IAC7B;IAMAO,mBAAmB;AACjB,aAAOn7D,KAAK24B,KAAK,KAAK6kC,cAAcb,sBAAsB,KAAK/1D,OAAO,CAAA;IACxE;IAEAi4B,mBAAmBnmB,OAAO;AACxBgiD,sBAAgB/xC,UAAUkW,mBAAmBx+B,KAAK,MAAMqY,KAAAA;AAGxD,WAAKwkD,eAAe,KAAKvqD,UAAS,EAC/BqP,IAAI,CAAC1a,OAAOgC,WAAU;AACrB,cAAMwK,QAAQk3B,SAAa,KAAKpkC,QAAQkgB,YAAYgY,UAAU;UAACx3B;UAAOgC;QAAM,GAAE,IAAI;AAClF,eAAOwK,SAASA,UAAU,IAAIA,QAAQ;OAEvCjH,EAAAA,OAAO,CAACwO,IAAGva,OAAM,KAAK1B,MAAM+e,kBAAkBrd,EAAAA,CAAAA;IACnD;IAEAs9B,MAAM;AACJ,YAAMr2B,OAAO,KAAKnB;AAElB,UAAImB,KAAK6e,WAAW7e,KAAK+e,YAAYF,SAAS;AAC5Cm2C,2BAAmB,IAAI;aAClB;AACL,aAAKc,eAAe,GAAG,GAAG,GAAG,CAAA;;IAEjC;IAEAA,eAAeyB,cAAcC,eAAeC,aAAaC,gBAAgB;AACvE,WAAKp4C,WAAWrnB,KAAKoE,OAAOk7D,eAAeC,iBAAiB,CAAA;AAC5D,WAAKj4C,WAAWtnB,KAAKoE,OAAOo7D,cAAcC,kBAAkB,CAAA;AAC5D,WAAKjC,eAAex9D,KAAKC,IAAI,KAAKu9D,cAAc,GAAGx9D,KAAKoC,IAAIk9D,cAAcC,eAAeC,aAAaC,cAAAA,CAAAA;IACxG;IAEAj4C,cAAcle,QAAO;AACnB,YAAMo2D,kBAAkB1/C,OAAO,KAAKk9C,aAAar8D,UAAU;AAC3D,YAAMof,aAAa,KAAKrZ,QAAQqZ,cAAc;AAE9C,aAAOs4B,gBAAgBjvC,SAAQo2D,kBAAkBx8C,UAAUjD,UAAAA,CAAAA;IAC7D;IAEA2H,8BAA8BtgB,OAAO;AACnC,UAAI4R,cAAc5R,KAAQ,GAAA;AACxB,eAAO+L;;AAIT,YAAMssD,gBAAgB,KAAKnC,eAAe,KAAKp7D,MAAM,KAAKnC;AAC1D,UAAI,KAAK2G,QAAQoB,SAAS;AACxB,gBAAQ,KAAK5F,MAAMkF,SAASq4D;;AAE9B,cAAQr4D,QAAQ,KAAKrH,OAAO0/D;IAC9B;IAEAC,8BAA8B3zC,UAAU;AACtC,UAAI/S,cAAc+S,QAAW,GAAA;AAC3B,eAAO5Y;;AAGT,YAAMwsD,iBAAiB5zC,YAAY,KAAKuxC,eAAe,KAAKp7D,MAAM,KAAKnC;AACvE,aAAO,KAAK2G,QAAQoB,UAAU,KAAK5F,MAAMy9D,iBAAiB,KAAK5/D,MAAM4/D;IACvE;IAEAvC,qBAAqBh0D,QAAO;AAC1B,YAAMwd,cAAc,KAAKo2C,gBAAgB,CAAA;AAEzC,UAAI5zD,UAAS,KAAKA,SAAQwd,YAAYjmB,QAAQ;AAC5C,cAAMi/D,aAAah5C,YAAYxd,MAAM;AACrC,eAAO61D,wBAAwB,KAAKptD,WAAU,GAAIzI,QAAOw2D,UAAAA;;IAE7D;IAEAvC,iBAAiBj0D,QAAOy2D,oBAAoB3C,kBAAkB,GAAG;AAC/D,YAAM18C,QAAQ,KAAK8G,cAAcle,MAAAA,IAASyX,UAAUq8C;AACpD,aAAO;QACL/0D,GAAGrI,KAAKogB,IAAIM,KAAAA,IAASq/C,qBAAqB,KAAK14C;QAC/C/e,GAAGtI,KAAKsgB,IAAII,KAAAA,IAASq/C,qBAAqB,KAAKz4C;QAC/C5G;MACF;IACF;IAEAuH,yBAAyB3e,QAAOhC,OAAO;AACrC,aAAO,KAAKi2D,iBAAiBj0D,QAAO,KAAKse,8BAA8BtgB,KAAAA,CAAAA;IACzE;IAEA04D,gBAAgB12D,QAAO;AACrB,aAAO,KAAK2e,yBAAyB3e,UAAS,GAAG,KAAK44B,aAAY,CAAA;IACpE;IAEA+9B,sBAAsB32D,QAAO;AAC3B,YAAM,EAACZ,MAAMH,KAAKC,OAAOC,OAAM,IAAI,KAAKq1D,iBAAiBx0D,MAAM;AAC/D,aAAO;QACLZ;QACAH;QACAC;QACAC;MACF;IACF;IAKAg9B,iBAAiB;AACf,YAAM,EAACrjB,iBAAAA,kBAAiBtG,MAAM,EAAC+K,SAAAA,EAAS,IAAI,KAAKjgB;AACjD,UAAIwb,kBAAiB;AACnB,cAAM/T,MAAM,KAAKA;AACjBA,YAAIq3B,KAAI;AACRr3B,YAAI83B,UAAS;AACb64B,uBAAe,MAAM,KAAKp3C,8BAA8B,KAAK+yC,SAAS,GAAG9zC,UAAU,KAAKq2C,aAAar8D,MAAM;AAC3GwN,YAAIqqC,UAAS;AACbrqC,YAAI8T,YAAYC;AAChB/T,YAAIiB,KAAI;AACRjB,YAAIu3B,QAAO;;IAEf;IAKAC,WAAW;AACT,YAAMx3B,MAAM,KAAKA;AACjB,YAAMtG,OAAO,KAAKnB;AAClB,YAAM,EAAC+f,YAAY7K,MAAMwK,OAAAA,IAAUve;AACnC,YAAM0rD,aAAa,KAAKyJ,aAAar8D;AAErC,UAAIC,IAAG+a,QAAQwO;AAEf,UAAItiB,KAAK+e,YAAYF,SAAS;AAC5Bm4C,wBAAgB,MAAMtL,UAAAA;;AAGxB,UAAI33C,KAAK8K,SAAS;AAChB,aAAKlO,MAAM9Y,QAAQ,CAACuB,MAAMmI,WAAU;AAClC,cAAIA,WAAU,KAAMA,WAAU,KAAK,KAAKrJ,MAAM,GAAI;AAChD4b,qBAAS,KAAK+L,8BAA8BzmB,KAAKmG,KAAK;AACtD,kBAAMmN,UAAU,KAAK1C,WAAWzI,MAAAA;AAChC,kBAAMk6B,cAAc1nB,KAAKsgB,WAAW3nB,OAAAA;AACpC,kBAAMgvB,oBAAoBnd,OAAO8V,WAAW3nB,OAAAA;AAE5CwqD,2BAAe,MAAMz7B,aAAa3nB,QAAQ43C,YAAYhwB,iBAAAA;;QAE1D,CAAA;;AAGF,UAAI9c,WAAWC,SAAS;AACtBvY,YAAIq3B,KAAI;AAER,aAAK5kC,KAAI2yD,aAAa,GAAG3yD,MAAK,GAAGA,MAAK;AACpC,gBAAM0iC,cAAc7c,WAAWyV,WAAW,KAAKkhC,qBAAqBx8D,EAAAA,CAAAA;AACpE,gBAAM,EAACkC,OAAAA,QAAOwf,UAAAA,IAAaghB;AAE3B,cAAI,CAAChhB,aAAa,CAACxf,QAAO;AACxB;;AAGFqL,cAAImU,YAAYA;AAChBnU,cAAIgU,cAAcrf;AAElBqL,cAAI43B,YAAYzC,YAAYG,UAAU;AACtCt1B,cAAI63B,iBAAiB1C,YAAYK;AAEjChoB,mBAAS,KAAK+L,8BAA8B7f,KAAKC,UAAU,KAAK/H,MAAM,KAAKmC,GAAG;AAC9EioB,qBAAW,KAAKkzC,iBAAiBz8D,IAAG+a,MAAAA;AACpCxN,cAAI83B,UAAS;AACb93B,cAAI+3B,OAAO,KAAK/e,SAAS,KAAKC,OAAO;AACrCjZ,cAAIg4B,OAAOhc,SAAShiB,GAAGgiB,SAAS/hB,CAAC;AACjC+F,cAAIi4B,OAAM;QACZ;AAEAj4B,YAAIu3B,QAAO;;IAEf;IAKAY,aAAa;IAAA;IAKbE,aAAa;AACX,YAAMr4B,MAAM,KAAKA;AACjB,YAAMtG,OAAO,KAAKnB;AAClB,YAAMswB,WAAWnvB,KAAK2Q;AAEtB,UAAI,CAACwe,SAAStQ,SAAS;AACrB;;AAGF,YAAM3G,aAAa,KAAKuH,cAAc,CAAA;AACtC,UAAI3L,QAAQe;AAEZvO,UAAIq3B,KAAI;AACRr3B,UAAIouC,UAAU,KAAKp1B,SAAS,KAAKC,OAAO;AACxCjZ,UAAI6xD,OAAOjgD,UAAAA;AACX5R,UAAIg2B,YAAY;AAChBh2B,UAAIm2B,eAAe;AAEnB,WAAK9rB,MAAM9Y,QAAQ,CAACuB,MAAMmI,WAAU;AAClC,YAAKA,WAAU,KAAK,KAAKrJ,OAAO,KAAM,CAAC8H,KAAKC,SAAS;AACnD;;AAGF,cAAMw7B,cAActM,SAASkF,WAAW,KAAKrqB,WAAWzI,MAAAA,CAAAA;AACxD,cAAM+3B,WAAWhH,OAAOmJ,YAAYpJ,IAAI;AACxCve,iBAAS,KAAK+L,8BAA8B,KAAKlP,MAAMpP,MAAM,EAAChC,KAAK;AAEnE,YAAIk8B,YAAY0B,mBAAmB;AACjC72B,cAAI+rB,OAAOiH,SAASI;AACpB7kB,kBAAQvO,IAAIq9C,YAAYvqD,KAAK2S,KAAK,EAAE8I;AACpCvO,cAAI8T,YAAYqhB,YAAY8B;AAE5B,gBAAM/U,UAAUO,UAAU0S,YAAY6B,eAAe;AACrDh3B,cAAIs3B,SACF,CAAC/oB,QAAQ,IAAI2T,QAAQ7nB,MACrB,CAACmT,SAASwlB,SAAS95B,OAAO,IAAIgpB,QAAQhoB,KACtCqU,QAAQ2T,QAAQ3T,OAChBykB,SAAS95B,OAAOgpB,QAAQ5T,MAAM;;AAIlCkqB,mBAAWx4B,KAAKlN,KAAK2S,OAAO,GAAG,CAAC+H,QAAQwlB,UAAU;UAChDr+B,OAAOwgC,YAAYxgC;UACnB6hC,aAAarB,YAAYsB;UACzBC,aAAavB,YAAYwB;QAC3B,CAAA;MACF,CAAA;AAEA32B,UAAIu3B,QAAO;IACb;IAKAmB,YAAY;IAAA;EACd;AC5pBA,MAAMo5B,YAAY;IAChBC,aAAa;MAACC,QAAQ;MAAM94D,MAAM;MAAGy0D,OAAO;IAAI;IAChDsE,QAAQ;MAACD,QAAQ;MAAM94D,MAAM;MAAMy0D,OAAO;IAAE;IAC5CuE,QAAQ;MAACF,QAAQ;MAAM94D,MAAM;MAAOy0D,OAAO;IAAE;IAC7CwE,MAAM;MAACH,QAAQ;MAAM94D,MAAM;MAASy0D,OAAO;IAAE;IAC7CyE,KAAK;MAACJ,QAAQ;MAAM94D,MAAM;MAAUy0D,OAAO;IAAE;IAC7C0E,MAAM;MAACL,QAAQ;MAAO94D,MAAM;MAAWy0D,OAAO;IAAC;IAC/C2E,OAAO;MAACN,QAAQ;MAAM94D,MAAM;MAASy0D,OAAO;IAAE;IAC9C4E,SAAS;MAACP,QAAQ;MAAO94D,MAAM;MAASy0D,OAAO;IAAC;IAChD6E,MAAM;MAACR,QAAQ;MAAM94D,MAAM;IAAQ;EACrC;AAKA,MAAMu5D,QAA6C/6D,uBAAOC,KAAKm6D,SAAAA;AAM/D,WAASY,OAAO5oD,IAAGrP,IAAG;AACpB,WAAOqP,KAAIrP;EACb;AAOA,WAASmJ,MAAMpK,OAAOm5D,OAAO;AAC3B,QAAI9nD,cAAc8nD,KAAQ,GAAA;AACxB,aAAO;;AAGT,UAAMC,UAAUp5D,MAAMq5D;AACtB,UAAM,EAACC,QAAQlpC,OAAAA,QAAOmpC,WAAU,IAAIv5D,MAAMw5D;AAC1C,QAAI/5D,QAAQ05D;AAEZ,QAAI,OAAOG,WAAW,YAAY;AAChC75D,cAAQ65D,OAAO75D,KAAAA;;AAIjB,QAAI,CAACyC,eAASzC,KAAQ,GAAA;AACpBA,cAAQ,OAAO65D,WAAW,WACtBF,QAAQhvD,MAAM3K,OAAO65D,MACrBF,IAAAA,QAAQhvD,MAAM3K,KAAM;;AAG1B,QAAIA,UAAU,MAAM;AAClB,aAAO;;AAGT,QAAI2wB,QAAO;AACT3wB,cAAQ2wB,WAAU,WAAWhS,UAASm7C,UAAeA,KAAAA,eAAe,QAChEH,QAAQj4C,QAAQ1hB,OAAO,WAAW85D,UAAAA,IAClCH,QAAQj4C,QAAQ1hB,OAAO2wB,MAAM;;AAGnC,WAAO,CAAC3wB;EACV;AAUA,WAASg6D,0BAA0BC,SAASthE,KAAKmC,KAAKo/D,UAAU;AAC9D,UAAMn4D,OAAOy3D,MAAMjgE;AAEnB,aAASC,KAAIggE,MAAMzjD,QAAQkkD,OAAAA,GAAUzgE,KAAIuI,OAAO,GAAG,EAAEvI,IAAG;AACtD,YAAM2gE,WAAWtB,UAAUW,MAAMhgE,EAAAA,CAAE;AACnC,YAAMiC,SAAS0+D,SAASzF,QAAQyF,SAASzF,QAAQ5wD,OAAOs2D;AAExD,UAAID,SAASpB,UAAUrgE,KAAK24B,MAAMv2B,MAAMnC,QAAQ8C,SAAS0+D,SAASl6D,KAAG,KAAOi6D,UAAU;AACpF,eAAOV,MAAMhgE,EAAE;;IAEnB;AAEA,WAAOggE,MAAMz3D,OAAO,CAAE;EACxB;AAWA,WAASs4D,2BAA2B95D,OAAOm3B,UAAUuiC,SAASthE,KAAKmC,KAAK;AACtE,aAAStB,KAAIggE,MAAMjgE,SAAS,GAAGC,MAAKggE,MAAMzjD,QAAQkkD,OAAAA,GAAUzgE,MAAK;AAC/D,YAAM24D,OAAOqH,MAAMhgE,EAAE;AACrB,UAAIq/D,UAAU1G,IAAK,EAAC4G,UAAUx4D,MAAMq5D,SAASn4C,KAAK3mB,KAAKnC,KAAKw5D,IAAAA,KAASz6B,WAAW,GAAG;AACjF,eAAOy6B;;IAEX;AAEA,WAAOqH,MAAMS,UAAUT,MAAMzjD,QAAQkkD,OAAAA,IAAW,CAAC;EACnD;AAMA,WAASK,mBAAmBnI,MAAM;AAChC,aAAS34D,KAAIggE,MAAMzjD,QAAQo8C,IAAQ,IAAA,GAAGpwD,OAAOy3D,MAAMjgE,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACxE,UAAIq/D,UAAUW,MAAMhgE,EAAAA,CAAE,EAAEu/D,QAAQ;AAC9B,eAAOS,MAAMhgE,EAAE;;IAEnB;EACF;AAOA,WAAS+gE,QAAQnpD,OAAOopD,MAAMC,YAAY;AACxC,QAAI,CAACA,YAAY;AACfrpD,YAAMopD,IAAK,IAAG;eACLC,WAAWlhE,QAAQ;AAC5B,YAAM,EAACipB,IAAIG,GAAAA,IAAM+3C,QAAQD,YAAYD,IAAAA;AACrC,YAAMG,YAAYF,WAAWj4C,EAAAA,KAAOg4C,OAAOC,WAAWj4C,EAAG,IAAGi4C,WAAW93C,EAAG;AAC1EvR,YAAMupD,SAAU,IAAG;;EAEvB;AASA,WAASC,cAAcr6D,OAAO6Q,OAAOsJ,MAAKmgD,WAAW;AACnD,UAAMlB,UAAUp5D,MAAMq5D;AACtB,UAAMtpC,QAAQ,CAACqpC,QAAQj4C,QAAQtQ,MAAM,CAAA,EAAGpR,OAAO66D,SAAAA;AAC/C,UAAMrlD,OAAOpE,MAAMA,MAAM7X,SAAS,CAAA,EAAGyG;AACrC,QAAIkwB,OAAOluB;AAEX,SAAKkuB,QAAQI,OAAOJ,SAAS1a,MAAM0a,QAAQ,CAACypC,QAAQl/D,IAAIy1B,OAAO,GAAG2qC,SAAY,GAAA;AAC5E74D,MAAAA,SAAQ0Y,KAAIwV,KAAM;AAClB,UAAIluB,UAAS,GAAG;AACdoP,cAAMpP,MAAAA,EAAOkuB,QAAQ;;IAEzB;AACA,WAAO9e;EACT;AAQA,WAAS0pD,oBAAoBv6D,OAAOnB,QAAQy7D,WAAW;AACrD,UAAMzpD,QAAQ,CAAA;AAEd,UAAMsJ,OAAM,CAAA;AACZ,UAAM3Y,OAAO3C,OAAO7F;AACpB,QAAIC,IAAGwG;AAEP,SAAKxG,KAAI,GAAGA,KAAIuI,MAAM,EAAEvI,IAAG;AACzBwG,cAAQZ,OAAO5F,EAAE;AACjBkhB,MAAAA,KAAI1a,KAAAA,IAASxG;AAEb4X,YAAM5W,KAAK;QACTwF;QACAkwB,OAAO;MACT,CAAA;IACF;AAIA,WAAQnuB,SAAS,KAAK,CAAC84D,YAAazpD,QAAQwpD,cAAcr6D,OAAO6Q,OAAOsJ,MAAKmgD,SAAU;EACzF;AAEe,MAAME,YAAN,cAAwBpnC,MAAAA;IAErC,OAAOjwB,KAAK;IAKZ,OAAO/E,WAAW;MAQhBs7C,QAAQ;MAERr4B,UAAU,CAAA;MACV44C,MAAM;QACJX,QAAQ;QACR1H,MAAM;QACNxhC,OAAO;QACPmpC,YAAY;QACZG,SAAS;QACTe,gBAAgB,CAAA;MAClB;MACA5pD,OAAO;QASLulB,QAAQ;QAERa,UAAU;QAEVtH,OAAO;UACLC,SAAS;QACX;MACF;;IAMF74B,YAAYwI,OAAO;AACjB,YAAMA,KAAAA;AAGN,WAAKyQ,SAAS;QACZ3N,MAAM,CAAA;QACNwI,QAAQ,CAAA;QACR/K,KAAK,CAAA;MACP;AAGA,WAAK46D,QAAQ;AAEb,WAAKC,aAAatjE;AAClB,WAAKujE,WAAW,CAAA;AAChB,WAAKC,cAAc;AACnB,WAAKrB,aAAaniE;IACpB;IAEA0pB,KAAK2qB,WAAWxrC,OAAO,CAAA,GAAI;AACzB,YAAM+5D,OAAOvuB,UAAUuuB,SAASvuB,UAAUuuB,OAAO,CAAA;AAEjD,YAAMb,UAAU,KAAKC,WAAW,IAAIh4C,UAASC,MAAMoqB,UAAUrqB,SAAS5pB,IAAI;AAE1E2hE,cAAQr4C,KAAK7gB,IAAAA;AAMbylC,cAAQs0B,KAAKQ,gBAAgBrB,QAAQp4C,QAAO,CAAA;AAE5C,WAAKw4C,aAAa;QAChBF,QAAQW,KAAKX;QACblpC,OAAO6pC,KAAK7pC;QACZmpC,YAAYU,KAAKV;MACnB;AAEA,YAAMx4C,KAAK2qB,SAAAA;AAEX,WAAKmvB,cAAc36D,KAAK46D;IAC1B;IAOA1wD,MAAM3E,KAAKhE,QAAO;AAChB,UAAIgE,QAAQpO,QAAW;AACrB,eAAO;;AAET,aAAO+S,MAAM,MAAM3E,GAAAA;IACrB;IAEA4jB,eAAe;AACb,YAAMA,aAAY;AAClB,WAAKrZ,SAAS;QACZ3N,MAAM,CAAA;QACNwI,QAAQ,CAAA;QACR/K,KAAK,CAAA;MACP;IACF;IAEA21B,sBAAsB;AACpB,YAAM12B,UAAU,KAAKA;AACrB,YAAMq6D,UAAU,KAAKC;AACrB,YAAMzH,OAAO7yD,QAAQk7D,KAAKrI,QAAQ;AAElC,UAAI,EAACx5D,KAAKmC,KAAK8I,YAAYC,WAAAA,IAAc,KAAKF,cAAa;AAK3D,eAAS23D,aAAarhB,QAAQ;AAC5B,YAAI,CAACr2C,cAAc,CAACkS,MAAMmkC,OAAOthD,GAAG,GAAG;AACrCA,gBAAMD,KAAKC,IAAIA,KAAKshD,OAAOthD,GAAG;;AAEhC,YAAI,CAACkL,cAAc,CAACiS,MAAMmkC,OAAOn/C,GAAG,GAAG;AACrCA,gBAAMpC,KAAKoC,IAAIA,KAAKm/C,OAAOn/C,GAAG;;MAElC;AAGA,UAAI,CAAC8I,cAAc,CAACC,YAAY;AAE9By3D,qBAAa,KAAKC,gBAAe,CAAA;AAIjC,YAAIj8D,QAAQ26C,WAAW,WAAW36C,QAAQ8R,MAAMulB,WAAW,UAAU;AACnE2kC,uBAAa,KAAKtvD,UAAU,KAAK,CAAA;;;AAIrCrT,YAAM8J,eAAS9J,GAAAA,KAAQ,CAACmd,MAAMnd,GAAOA,IAAAA,MAAM,CAACghE,QAAQj4C,QAAQxoB,KAAKC,IAAG,GAAIg5D,IAAK;AAC7Er3D,YAAM2H,eAAS3H,GAAAA,KAAQ,CAACgb,MAAMhb,GAAAA,IAAOA,MAAM,CAAC6+D,QAAQh4C,MAAMzoB,KAAKC,IAAG,GAAIg5D,IAAAA,IAAQ;AAG9E,WAAKx5D,MAAMD,KAAKC,IAAIA,KAAKmC,MAAM,CAAA;AAC/B,WAAKA,MAAMpC,KAAKoC,IAAInC,MAAM,GAAGmC,GAAAA;IAC/B;IAKAygE,kBAAkB;AAChB,YAAM/rD,MAAM,KAAKgsD,mBAAkB;AACnC,UAAI7iE,MAAMmL,OAAOE;AACjB,UAAIlJ,MAAMgJ,OAAOC;AAEjB,UAAIyL,IAAIjW,QAAQ;AACdZ,cAAM6W,IAAI,CAAE;AACZ1U,cAAM0U,IAAIA,IAAIjW,SAAS,CAAE;;AAE3B,aAAO;QAACZ;QAAKmC;MAAG;IAClB;IAKAs7B,aAAa;AACX,YAAM92B,UAAU,KAAKA;AACrB,YAAMm8D,WAAWn8D,QAAQk7D;AACzB,YAAM5qC,WAAWtwB,QAAQ8R;AACzB,YAAMqpD,aAAa7qC,SAAS+G,WAAW,WAAW,KAAK6kC,mBAAkB,IAAK,KAAKE,UAAS;AAE5F,UAAIp8D,QAAQ26C,WAAW,WAAWwgB,WAAWlhE,QAAQ;AACnD,aAAKZ,MAAM,KAAK67B,YAAYimC,WAAW,CAAE;AACzC,aAAK3/D,MAAM,KAAKy5B,YAAYkmC,WAAWA,WAAWlhE,SAAS,CAAE;;AAG/D,YAAMZ,MAAM,KAAKA;AACjB,YAAMmC,MAAM,KAAKA;AAEjB,YAAMsW,QAAQuqD,eAAelB,YAAY9hE,KAAKmC,GAAAA;AAK9C,WAAKmgE,QAAQQ,SAAStJ,SAASviC,SAASD,WACpCqqC,0BAA0ByB,SAASxB,SAAS,KAAKthE,KAAK,KAAKmC,KAAK,KAAK8gE,kBAAkBjjE,GACvF0hE,CAAAA,IAAAA,2BAA2B,MAAMjpD,MAAM7X,QAAQkiE,SAASxB,SAAS,KAAKthE,KAAK,KAAKmC,GAAG;AACvF,WAAKogE,aAAa,CAACtrC,SAASM,MAAMC,WAAW,KAAK8qC,UAAU,SAASrjE,SACjE0iE,mBAAmB,KAAKW,KAAK;AACjC,WAAKY,YAAYpB,UAAAA;AAEjB,UAAIn7D,QAAQoB,SAAS;AACnB0Q,cAAM1Q,QAAO;;AAGf,aAAOo6D,oBAAoB,MAAM1pD,OAAO,KAAK8pD,UAAU;IACzD;IAEAtkC,gBAAgB;AAGd,UAAI,KAAKt3B,QAAQw8D,qBAAqB;AACpC,aAAKD,YAAY,KAAKzqD,MAAMsJ,IAAI7gB,CAAAA,SAAQ,CAACA,KAAKmG,KAAK,CAAA;;IAEvD;IAUA67D,YAAYpB,aAAa,CAAA,GAAI;AAC3B,UAAI7hE,SAAQ;AACZ,UAAI+H,MAAM;AACV,UAAI2vB,OAAO9a;AAEX,UAAI,KAAKlW,QAAQiV,UAAUkmD,WAAWlhE,QAAQ;AAC5C+2B,gBAAQ,KAAKyrC,mBAAmBtB,WAAW,CAAE,CAAA;AAC7C,YAAIA,WAAWlhE,WAAW,GAAG;AAC3BX,UAAAA,SAAQ,IAAI03B;eACP;AACL13B,UAAAA,UAAS,KAAKmjE,mBAAmBtB,WAAW,CAAA,CAAE,IAAInqC,SAAS;;AAE7D9a,eAAO,KAAKumD,mBAAmBtB,WAAWA,WAAWlhE,SAAS,CAAE,CAAA;AAChE,YAAIkhE,WAAWlhE,WAAW,GAAG;AAC3BoH,gBAAM6U;eACD;AACL7U,iBAAO6U,OAAO,KAAKumD,mBAAmBtB,WAAWA,WAAWlhE,SAAS,CAAA,CAAE,KAAK;;;AAGhF,YAAMyiC,QAAQy+B,WAAWlhE,SAAS,IAAI,MAAM;AAC5CX,MAAAA,SAAQ0/B,YAAY1/B,QAAO,GAAGojC,KAAAA;AAC9Br7B,YAAM23B,YAAY33B,KAAK,GAAGq7B,KAAAA;AAE1B,WAAKm/B,WAAW;QAACviE,OAAAA;QAAO+H;QAAKlF,QAAQ,KAAK7C,SAAQ,IAAI+H;MAAI;IAC5D;IASA+6D,YAAY;AACV,YAAM/B,UAAU,KAAKC;AACrB,YAAMjhE,MAAM,KAAKA;AACjB,YAAMmC,MAAM,KAAKA;AACjB,YAAMwE,UAAU,KAAKA;AACrB,YAAMm8D,WAAWn8D,QAAQk7D;AAEzB,YAAMwB,QAAQP,SAAStJ,QAAQ6H,0BAA0ByB,SAASxB,SAASthE,KAAKmC,KAAK,KAAK8gE,kBAAkBjjE,GAAAA,CAAAA;AAC5G,YAAMi7D,WAAWnrD,eAAenJ,QAAQ8R,MAAMwiD,UAAU,CAAA;AACxD,YAAMqI,UAAUD,UAAU,SAASP,SAAS3B,aAAa;AACzD,YAAMoC,aAAav9C,UAASs9C,OAAYA,KAAAA,YAAY;AACpD,YAAM7qD,QAAQ,CAAA;AACd,UAAIkf,QAAQ33B;AACZ,UAAI6hE,MAAM5vD;AAGV,UAAIsxD,YAAY;AACd5rC,gBAAQ,CAACqpC,QAAQj4C,QAAQ4O,OAAO,WAAW2rC,OAAAA;;AAI7C3rC,cAAQ,CAACqpC,QAAQj4C,QAAQ4O,OAAO4rC,aAAa,QAAQF,KAAK;AAG1D,UAAIrC,QAAQl4C,KAAK3mB,KAAKnC,KAAKqjE,KAAAA,IAAS,MAASpI,UAAU;AACrD,cAAM,IAAI3yC,MAAMtoB,MAAM,UAAUmC,MAAM,yCAAyC84D,WAAW,MAAMoI,KAAO;;AAGzG,YAAMvB,aAAan7D,QAAQ8R,MAAMulB,WAAW,UAAU,KAAKwlC,kBAAiB;AAC5E,WAAK3B,OAAOlqC,OAAO1lB,QAAQ,GAAG4vD,OAAO1/D,KAAK0/D,OAAO,CAACb,QAAQl/D,IAAI+/D,MAAM5G,UAAUoI,KAAAA,GAAQpxD,SAAS;AAC7F2vD,gBAAQnpD,OAAOopD,MAAMC,UAAAA;MACvB;AAEA,UAAID,SAAS1/D,OAAOwE,QAAQ26C,WAAW,WAAWrvC,UAAU,GAAG;AAC7D2vD,gBAAQnpD,OAAOopD,MAAMC,UAAAA;;AAIvB,aAAOh8D,OAAOC,KAAK0S,KAAOR,EAAAA,KAAK6oD,MAAAA,EAAQ/+C,IAAI3Z,CAAAA,OAAK,CAACA,EAAAA;IACnD;IAMA0L,iBAAiBzM,OAAO;AACtB,YAAM25D,UAAU,KAAKC;AACrB,YAAM6B,WAAW,KAAKn8D,QAAQk7D;AAE9B,UAAIiB,SAASW,eAAe;AAC1B,eAAOzC,QAAQn4C,OAAOxhB,OAAOy7D,SAASW,aAAa;;AAErD,aAAOzC,QAAQn4C,OAAOxhB,OAAOy7D,SAAST,eAAeqB,QAAQ;IAC/D;IAOA76C,OAAOxhB,OAAOwhB,SAAQ;AACpB,YAAMliB,UAAU,KAAKA;AACrB,YAAMiiB,UAAUjiB,QAAQk7D,KAAKQ;AAC7B,YAAM7I,OAAO,KAAK8I;AAClB,YAAMqB,MAAM96C,WAAUD,QAAQ4wC,IAAK;AACnC,aAAO,KAAKyH,SAASp4C,OAAOxhB,OAAOs8D,GAAAA;IACrC;IAWAC,oBAAoB/B,MAAMx4D,QAAOoP,OAAOoQ,SAAQ;AAC9C,YAAMliB,UAAU,KAAKA;AACrB,YAAMk9D,aAAYl9D,QAAQ8R,MAAMomB;AAEhC,UAAIglC,YAAW;AACb,eAAOzjE,SAAKyjE,YAAW;UAAChC;UAAMx4D;UAAOoP;QAAM,GAAE,IAAI;;AAGnD,YAAMmQ,UAAUjiB,QAAQk7D,KAAKQ;AAC7B,YAAM7I,OAAO,KAAK8I;AAClB,YAAMJ,YAAY,KAAKK;AACvB,YAAMuB,cAActK,QAAQ5wC,QAAQ4wC,IAAK;AACzC,YAAMuK,cAAc7B,aAAat5C,QAAQs5C,SAAU;AACnD,YAAMhhE,OAAOuX,MAAMpP,MAAM;AACzB,YAAMkuB,QAAQ2qC,aAAa6B,eAAe7iE,QAAQA,KAAKq2B;AAEvD,aAAO,KAAK0pC,SAASp4C,OAAOg5C,MAAMh5C,YAAW0O,QAAQwsC,cAAcD,YAAU;IAC/E;IAKAllC,mBAAmBnmB,OAAO;AACxB,UAAI5X,IAAGuI,MAAMlI;AAEb,WAAKL,KAAI,GAAGuI,OAAOqP,MAAM7X,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CK,eAAOuX,MAAM5X,EAAE;AACfK,aAAK2S,QAAQ,KAAK+vD,oBAAoB1iE,KAAKmG,OAAOxG,IAAG4X,KAAAA;MACvD;IACF;IAMA2qD,mBAAmB/7D,OAAO;AACxB,aAAOA,UAAU,OAAO+L,OAAO/L,QAAQ,KAAKrH,QAAQ,KAAKmC,MAAM,KAAKnC;IACtE;IAMAwY,iBAAiBnR,OAAO;AACtB,YAAM28D,UAAU,KAAKxB;AACrB,YAAM71C,MAAM,KAAKy2C,mBAAmB/7D,KAAAA;AACpC,aAAO,KAAK+W,oBAAoB4lD,QAAQ/jE,QAAQ0sB,OAAOq3C,QAAQlhE,MAAM;IACvE;IAMAwb,iBAAiBsjB,OAAO;AACtB,YAAMoiC,UAAU,KAAKxB;AACrB,YAAM71C,MAAM,KAAKqV,mBAAmBJ,KAAAA,IAASoiC,QAAQlhE,SAASkhE,QAAQh8D;AACtE,aAAO,KAAKhI,MAAM2sB,OAAO,KAAKxqB,MAAM,KAAKnC;IAC3C;IAOAikE,cAAcpwD,OAAO;AACnB,YAAMqwD,YAAY,KAAKv9D,QAAQ8R;AAC/B,YAAM0rD,iBAAiB,KAAK/1D,IAAIq9C,YAAY53C,KAAAA,EAAO8I;AACnD,YAAM8D,QAAQwC,UAAU,KAAK3I,aAAY,IAAK4pD,UAAUjlC,cAAcilC,UAAUllC,WAAW;AAC3F,YAAMolC,cAAcrkE,KAAKogB,IAAIM,KAAAA;AAC7B,YAAM4jD,cAActkE,KAAKsgB,IAAII,KAAAA;AAC7B,YAAM6jD,eAAe,KAAK/iC,wBAAwB,CAAA,EAAGj6B;AAErD,aAAO;QACL6nB,GAAIg1C,iBAAiBC,cAAgBE,eAAeD;QACpDh1C,GAAI80C,iBAAiBE,cAAgBC,eAAeF;MACtD;IACF;IAOAnB,kBAAkBsB,aAAa;AAC7B,YAAMzB,WAAW,KAAKn8D,QAAQk7D;AAC9B,YAAMQ,iBAAiBS,SAAST;AAGhC,YAAMx5C,UAASw5C,eAAeS,SAAStJ,IAAI,KAAK6I,eAAelC;AAC/D,YAAMqE,eAAe,KAAKZ,oBAAoBW,aAAa,GAAGpC,oBAAoB,MAAM;QAACoC;SAAc,KAAKhC,UAAU,GAAG15C,OAAAA;AACzH,YAAMvhB,OAAO,KAAK28D,cAAcO,YAAAA;AAGhC,YAAMjD,WAAWxhE,KAAKoE,MAAM,KAAKmW,aAAY,IAAK,KAAKqC,QAAQrV,KAAK6nB,IAAI,KAAKzS,SAASpV,KAAK+nB,CAAC,IAAI;AAChG,aAAOkyC,WAAW,IAAIA,WAAW;IACnC;IAKAiC,oBAAoB;AAClB,UAAI1B,aAAa,KAAKlqD,OAAO3N,QAAQ,CAAA;AACrC,UAAIpJ,IAAGuI;AAEP,UAAI04D,WAAWlhE,QAAQ;AACrB,eAAOkhE;;AAGT,YAAMvlC,QAAQ,KAAK1wB,wBAAuB;AAE1C,UAAI,KAAK42D,eAAelmC,MAAM37B,QAAQ;AACpC,eAAQ,KAAKgX,OAAO3N,OAAOsyB,MAAM,CAAA,EAAGxwB,WAAW2H,mBAAmB,IAAI;;AAGxE,WAAK7S,KAAI,GAAGuI,OAAOmzB,MAAM37B,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9CihE,qBAAaA,WAAW/pD,OAAOwkB,MAAM17B,EAAE,EAACkL,WAAW2H,mBAAmB,IAAI,CAAA;MAC5E;AAEA,aAAQ,KAAKkE,OAAO3N,OAAO,KAAKw6D,UAAU3C,UAAAA;IAC5C;IAKAe,qBAAqB;AACnB,YAAMf,aAAa,KAAKlqD,OAAOnF,UAAU,CAAA;AACzC,UAAI5R,IAAGuI;AAEP,UAAI04D,WAAWlhE,QAAQ;AACrB,eAAOkhE;;AAGT,YAAMrvD,SAAS,KAAKC,UAAS;AAC7B,WAAK7R,KAAI,GAAGuI,OAAOqJ,OAAO7R,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC/CihE,mBAAWjgE,KAAKmQ,MAAM,MAAMS,OAAO5R,EAAE,CAAA,CAAA;MACvC;AAEA,aAAQ,KAAK+W,OAAOnF,SAAS,KAAKgwD,cAAcX,aAAa,KAAK2C,UAAU3C,UAAW;IACzF;IAMA2C,UAAUh+D,QAAQ;AAEhB,aAAOuR,aAAavR,OAAOwR,KAAK6oD,MAAAA,CAAAA;IAClC;EACF;ACvpBA,WAASphB,aAAYglB,OAAOxnD,KAAKnV,SAAS;AACxC,QAAI8hB,KAAK;AACT,QAAIG,KAAK06C,MAAM9jE,SAAS;AACxB,QAAI+jE,YAAYC,YAAYC,YAAYC;AACxC,QAAI/8D,SAAS;AACX,UAAImV,OAAOwnD,MAAM76C,EAAAA,EAAI8C,OAAOzP,OAAOwnD,MAAM16C,EAAG,EAAC2C,KAAK;AAC/C,SAAA,EAAC9C,IAAIG,GAAAA,IAAMP,aAAai7C,OAAO,OAAOxnD,GAAG;;AAE3C,OAAA,EAACyP,KAAKg4C,YAAY9C,MAAMgD,WAAU,IAAIH,MAAM76C,EAAAA;AAC5C,OAAA,EAAC8C,KAAKi4C,YAAY/C,MAAMiD,WAAU,IAAIJ,MAAM16C,EAAAA;WACxC;AACL,UAAI9M,OAAOwnD,MAAM76C,EAAAA,EAAIg4C,QAAQ3kD,OAAOwnD,MAAM16C,EAAG,EAAC63C,MAAM;AACjD,SAAA,EAACh4C,IAAIG,GAAAA,IAAMP,aAAai7C,OAAO,QAAQxnD,GAAG;;AAE5C,OAAA,EAAC2kD,MAAM8C,YAAYh4C,KAAKk4C,WAAU,IAAIH,MAAM76C,EAAAA;AAC5C,OAAA,EAACg4C,MAAM+C,YAAYj4C,KAAKm4C,WAAU,IAAIJ,MAAM16C,EAAAA;;AAG/C,UAAM+6C,OAAOH,aAAaD;AAC1B,WAAOI,OAAOF,cAAcC,aAAaD,eAAe3nD,MAAMynD,cAAcI,OAAOF;EACrF;AAEA,MAAMG,kBAAN,cAA8B5C,UAAAA;IAE5B,OAAOr3D,KAAK;IAKZ,OAAO/E,WAAWo8D,UAAUp8D;IAK5BrH,YAAYwI,OAAO;AACjB,YAAMA,KAAAA;AAGN,WAAK89D,SAAS,CAAA;AAEd,WAAKC,UAAUjmE;AAEf,WAAKkmE,cAAclmE;IACrB;IAKAikE,cAAc;AACZ,YAAMpB,aAAa,KAAKsD,uBAAsB;AAC9C,YAAMV,QAAQ,KAAKO,SAAS,KAAKI,iBAAiBvD,UAAAA;AAClD,WAAKoD,UAAUxlB,aAAYglB,OAAO,KAAK1kE,GAAG;AAC1C,WAAKmlE,cAAczlB,aAAYglB,OAAO,KAAKviE,GAAG,IAAI,KAAK+iE;AACvD,YAAMhC,YAAYpB,UAAAA;IACpB;IAaAuD,iBAAiBvD,YAAY;AAC3B,YAAM,EAAC9hE,KAAKmC,IAAG,IAAI;AACnB,YAAMxB,QAAQ,CAAA;AACd,YAAM+jE,QAAQ,CAAA;AACd,UAAI7jE,IAAGuI,MAAMgJ,MAAMiG,MAAMkB;AAEzB,WAAK1Y,KAAI,GAAGuI,OAAO04D,WAAWlhE,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AACnDwX,eAAOypD,WAAWjhE,EAAE;AACpB,YAAIwX,QAAQrY,OAAOqY,QAAQlW,KAAK;AAC9BxB,gBAAMkB,KAAKwW,IAAAA;;MAEf;AAEA,UAAI1X,MAAMC,SAAS,GAAG;AAEpB,eAAO;UACL;YAACihE,MAAM7hE;YAAK2sB,KAAK;UAAC;UAClB;YAACk1C,MAAM1/D;YAAKwqB,KAAK;UAAC;QACnB;;AAGH,WAAK9rB,KAAI,GAAGuI,OAAOzI,MAAMC,QAAQC,KAAIuI,MAAM,EAAEvI,IAAG;AAC9C0Y,eAAO5Y,MAAME,KAAI,CAAE;AACnBuR,eAAOzR,MAAME,KAAI,CAAE;AACnBwX,eAAO1X,MAAME,EAAE;AAGf,YAAId,KAAKi4B,OAAOze,OAAOnH,QAAQ,CAAA,MAAOiG,MAAM;AAC1CqsD,gBAAM7iE,KAAK;YAACggE,MAAMxpD;YAAMsU,KAAK9rB,MAAKuI,OAAO;UAAE,CAAA;;MAE/C;AACA,aAAOs7D;IACT;IAQA3B,YAAY;AACV,YAAM/iE,MAAM,KAAKA;AACjB,YAAMmC,MAAM,KAAKA;AACjB,UAAI2/D,aAAa,MAAM0B,kBAAiB;AACxC,UAAI,CAAC1B,WAAWv0C,SAASvtB,GAAAA,KAAQ,CAAC8hE,WAAWlhE,QAAQ;AACnDkhE,mBAAW9qD,OAAO,GAAG,GAAGhX,GAAAA;;AAE1B,UAAI,CAAC8hE,WAAWv0C,SAASprB,GAAAA,KAAQ2/D,WAAWlhE,WAAW,GAAG;AACxDkhE,mBAAWjgE,KAAKM,GAAAA;;AAElB,aAAO2/D,WAAW7pD,KAAK,CAACC,IAAGrP,OAAMqP,KAAIrP,EAAAA;IACvC;IAOAu8D,yBAAyB;AACvB,UAAItD,aAAa,KAAKlqD,OAAOlQ,OAAO,CAAA;AAEpC,UAAIo6D,WAAWlhE,QAAQ;AACrB,eAAOkhE;;AAGT,YAAM73D,OAAO,KAAKu5D,kBAAiB;AACnC,YAAM3vD,QAAQ,KAAKgvD,mBAAkB;AACrC,UAAI54D,KAAKrJ,UAAUiT,MAAMjT,QAAQ;AAG/BkhE,qBAAa,KAAK2C,UAAUx6D,KAAK8N,OAAOlE,KAAAA,CAAAA;aACnC;AACLiuD,qBAAa73D,KAAKrJ,SAASqJ,OAAO4J;;AAEpCiuD,mBAAa,KAAKlqD,OAAOlQ,MAAMo6D;AAE/B,aAAOA;IACT;IAMAsB,mBAAmB/7D,OAAO;AACxB,cAAQq4C,aAAY,KAAKulB,QAAQ59D,KAAS,IAAA,KAAK69D,WAAW,KAAKC;IACjE;IAMA7mD,iBAAiBsjB,OAAO;AACtB,YAAMoiC,UAAU,KAAKxB;AACrB,YAAM3gC,UAAU,KAAKG,mBAAmBJ,KAAAA,IAASoiC,QAAQlhE,SAASkhE,QAAQh8D;AAC1E,aAAO03C,aAAY,KAAKulB,QAAQpjC,UAAU,KAAKsjC,cAAc,KAAKD,SAAS,IAAI;IACjF;EACF;;;;;;;;;;MC3JaI,gBAAgB;IAC3Bt8B;IACA/0B;IACA0N;IACAhV;;;;ACrBF,EAAA44D,OAAM,SAAS,GAAG,aAAa;AAG/B,MAAO,eAAQA;;;ACLf,WAAS,QAAQC,IAAG;AAClB;AAEA,WAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUA,IAAG;AAChG,aAAO,OAAOA;AAAA,IAChB,IAAI,SAAUA,IAAG;AACf,aAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,IACpH,GAAG,QAAQA,EAAC;AAAA,EACd;;;ACRe,WAAR,UAA2B,aAAa;AAC7C,QAAI,gBAAgB,QAAQ,gBAAgB,QAAQ,gBAAgB,OAAO;AACzE,aAAO;AAAA,IACT;AACA,QAAI,SAAS,OAAO,WAAW;AAC/B,QAAI,MAAM,MAAM,GAAG;AACjB,aAAO;AAAA,IACT;AACA,WAAO,SAAS,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,MAAM,MAAM;AAAA,EAC3D;;;ACTe,WAAR,aAA8B,UAAU,MAAM;AACnD,QAAI,KAAK,SAAS,UAAU;AAC1B,YAAM,IAAI,UAAU,WAAW,eAAe,WAAW,IAAI,MAAM,MAAM,yBAAyB,KAAK,SAAS,UAAU;AAAA,IAC5H;AAAA,EACF;;;AC4Be,WAARC,QAAwB,UAAU;AACvC,iBAAa,GAAG,SAAS;AACzB,QAAI,SAAS,OAAO,UAAU,SAAS,KAAK,QAAQ;AAGpD,QAAI,oBAAoB,QAAQ,QAAQ,QAAQ,MAAM,YAAY,WAAW,iBAAiB;AAE5F,aAAO,IAAI,KAAK,SAAS,QAAQ,CAAC;AAAA,IACpC,WAAW,OAAO,aAAa,YAAY,WAAW,mBAAmB;AACvE,aAAO,IAAI,KAAK,QAAQ;AAAA,IAC1B,OAAO;AACL,WAAK,OAAO,aAAa,YAAY,WAAW,sBAAsB,OAAO,YAAY,aAAa;AAEpG,gBAAQ,KAAK,oNAAoN;AAEjO,gBAAQ,KAAK,IAAI,MAAM,EAAE,KAAK;AAAA,MAChC;AACA,aAAO,oBAAI,KAAK,GAAG;AAAA,IACrB;AAAA,EACF;;;AC9Be,WAAR,QAAyB,WAAW,aAAa;AACtD,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAI,SAAS,UAAU,WAAW;AAClC,QAAI,MAAM,MAAM,GAAG;AACjB,aAAO,oBAAI,KAAK,GAAG;AAAA,IACrB;AACA,QAAI,CAAC,QAAQ;AAEX,aAAO;AAAA,IACT;AACA,SAAK,QAAQ,KAAK,QAAQ,IAAI,MAAM;AACpC,WAAO;AAAA,EACT;;;ACbe,WAAR,UAA2B,WAAW,aAAa;AACxD,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAI,SAAS,UAAU,WAAW;AAClC,QAAI,MAAM,MAAM,GAAG;AACjB,aAAO,oBAAI,KAAK,GAAG;AAAA,IACrB;AACA,QAAI,CAAC,QAAQ;AAEX,aAAO;AAAA,IACT;AACA,QAAI,aAAa,KAAK,QAAQ;AAU9B,QAAI,oBAAoB,IAAI,KAAK,KAAK,QAAQ,CAAC;AAC/C,sBAAkB,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC;AAC1D,QAAI,cAAc,kBAAkB,QAAQ;AAC5C,QAAI,cAAc,aAAa;AAG7B,aAAO;AAAA,IACT,OAAO;AAQL,WAAK,YAAY,kBAAkB,YAAY,GAAG,kBAAkB,SAAS,GAAG,UAAU;AAC1F,aAAO;AAAA,IACT;AAAA,EACF;;;ACvCe,WAAR,gBAAiC,WAAW,aAAa;AAC9D,iBAAa,GAAG,SAAS;AACzB,QAAI,YAAYC,QAAO,SAAS,EAAE,QAAQ;AAC1C,QAAI,SAAS,UAAU,WAAW;AAClC,WAAO,IAAI,KAAK,YAAY,MAAM;AAAA,EACpC;;;ACvBA,MAAI,uBAAuB;AAoBZ,WAAR,SAA0B,WAAW,aAAa;AACvD,iBAAa,GAAG,SAAS;AACzB,QAAI,SAAS,UAAU,WAAW;AAClC,WAAO,gBAAgB,WAAW,SAAS,oBAAoB;AAAA,EACjE;;;AC3BA,MAAIC,kBAAiB,CAAC;AACf,WAAS,oBAAoB;AAClC,WAAOA;AAAA,EACT;;;AC4Be,WAAR,YAA6B,WAAW,SAAS;AACtD,QAAI,MAAM,OAAO,OAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,iBAAa,GAAG,SAAS;AACzB,QAAIC,kBAAiB,kBAAkB;AACvC,QAAI,eAAe,WAAW,QAAQ,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,kBAAkB,QAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQ,UAAU,SAAS,QAAQA,gBAAe,kBAAkB,QAAQ,UAAU,SAAS,SAAS,wBAAwBA,gBAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQ,SAAS,SAAS,OAAO,CAAC;AAGp4B,QAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,YAAM,IAAI,WAAW,kDAAkD;AAAA,IACzE;AACA,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAIC,OAAM,KAAK,OAAO;AACtB,QAAI,QAAQA,OAAM,eAAe,IAAI,KAAKA,OAAM;AAChD,SAAK,QAAQ,KAAK,QAAQ,IAAI,IAAI;AAClC,SAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,WAAO;AAAA,EACT;;;ACpCe,WAAR,gCAAiD,MAAM;AAC5D,QAAI,UAAU,IAAI,KAAK,KAAK,IAAI,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,GAAG,KAAK,SAAS,GAAG,KAAK,WAAW,GAAG,KAAK,WAAW,GAAG,KAAK,gBAAgB,CAAC,CAAC;AACnK,YAAQ,eAAe,KAAK,YAAY,CAAC;AACzC,WAAO,KAAK,QAAQ,IAAI,QAAQ,QAAQ;AAAA,EAC1C;;;ACKe,WAAR,WAA4B,WAAW;AAC5C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,SAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,WAAO;AAAA,EACT;;;ACtBA,MAAI,sBAAsB;AAgCX,WAAR,yBAA0C,eAAe,gBAAgB;AAC9E,iBAAa,GAAG,SAAS;AACzB,QAAI,iBAAiB,WAAW,aAAa;AAC7C,QAAI,kBAAkB,WAAW,cAAc;AAC/C,QAAI,gBAAgB,eAAe,QAAQ,IAAI,gCAAgC,cAAc;AAC7F,QAAI,iBAAiB,gBAAgB,QAAQ,IAAI,gCAAgC,eAAe;AAKhG,WAAO,KAAK,OAAO,gBAAgB,kBAAkB,mBAAmB;AAAA,EAC1E;;;AC3CA,MAAI,yBAAyB;AAoBd,WAAR,WAA4B,WAAW,aAAa;AACzD,iBAAa,GAAG,SAAS;AACzB,QAAI,SAAS,UAAU,WAAW;AAClC,WAAO,gBAAgB,WAAW,SAAS,sBAAsB;AAAA,EACnE;;;ACNe,WAAR,YAA6B,WAAW,aAAa;AAC1D,iBAAa,GAAG,SAAS;AACzB,QAAI,SAAS,UAAU,WAAW;AAClC,QAAI,SAAS,SAAS;AACtB,WAAO,UAAU,WAAW,MAAM;AAAA,EACpC;;;ACLe,WAAR,WAA4B,WAAW,aAAa;AACzD,iBAAa,GAAG,SAAS;AACzB,QAAI,SAAS,UAAU,WAAW;AAClC,WAAO,gBAAgB,WAAW,SAAS,GAAI;AAAA,EACjD;;;ACJe,WAAR,SAA0B,WAAW,aAAa;AACvD,iBAAa,GAAG,SAAS;AACzB,QAAI,SAAS,UAAU,WAAW;AAClC,QAAI,OAAO,SAAS;AACpB,WAAO,QAAQ,WAAW,IAAI;AAAA,EAChC;;;ACLe,WAAR,SAA0B,WAAW,aAAa;AACvD,iBAAa,GAAG,SAAS;AACzB,QAAI,SAAS,UAAU,WAAW;AAClC,WAAO,UAAU,WAAW,SAAS,EAAE;AAAA,EACzC;;;ACSe,WAAR,WAA4B,eAAe,gBAAgB;AAChE,iBAAa,GAAG,SAAS;AACzB,QAAI,WAAWC,QAAO,aAAa;AACnC,QAAI,YAAYA,QAAO,cAAc;AACrC,QAAI,OAAO,SAAS,QAAQ,IAAI,UAAU,QAAQ;AAClD,QAAI,OAAO,GAAG;AACZ,aAAO;AAAA,IACT,WAAW,OAAO,GAAG;AACnB,aAAO;AAAA,IAET,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;;;ACzBO,MAAI,aAAa;AAUjB,MAAI,UAAU,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,KAAK;AAU/C,MAAI,uBAAuB;AAU3B,MAAI,qBAAqB;AAUzB,MAAI,uBAAuB;AAU3B,MAAI,UAAU,CAAC;AAkDf,MAAI,gBAAgB;AAoBpB,MAAI,eAAe,gBAAgB;AAUnC,MAAI,gBAAgB,eAAe;AAUnC,MAAI,gBAAgB,eAAe;AAUnC,MAAI,iBAAiB,gBAAgB;AAUrC,MAAI,mBAAmB,iBAAiB;;;ACpJhC,WAARC,QAAwB,OAAO;AACpC,iBAAa,GAAG,SAAS;AACzB,WAAO,iBAAiB,QAAQ,QAAQ,KAAK,MAAM,YAAY,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,EAC3G;;;ACHe,WAAR,QAAyB,WAAW;AACzC,iBAAa,GAAG,SAAS;AACzB,QAAI,CAACC,QAAO,SAAS,KAAK,OAAO,cAAc,UAAU;AACvD,aAAO;AAAA,IACT;AACA,QAAI,OAAOC,QAAO,SAAS;AAC3B,WAAO,CAAC,MAAM,OAAO,IAAI,CAAC;AAAA,EAC5B;;;AClBe,WAAR,2BAA4C,eAAe,gBAAgB;AAChF,iBAAa,GAAG,SAAS;AACzB,QAAI,WAAWC,QAAO,aAAa;AACnC,QAAI,YAAYA,QAAO,cAAc;AACrC,QAAI,WAAW,SAAS,YAAY,IAAI,UAAU,YAAY;AAC9D,QAAI,YAAY,SAAS,SAAS,IAAI,UAAU,SAAS;AACzD,WAAO,WAAW,KAAK;AAAA,EACzB;;;ACPe,WAAR,0BAA2C,eAAe,gBAAgB;AAC/E,iBAAa,GAAG,SAAS;AACzB,QAAI,WAAWC,QAAO,aAAa;AACnC,QAAI,YAAYA,QAAO,cAAc;AACrC,WAAO,SAAS,YAAY,IAAI,UAAU,YAAY;AAAA,EACxD;;;ACtBA,WAAS,gBAAgB,UAAU,WAAW;AAC5C,QAAI,OAAO,SAAS,YAAY,IAAI,UAAU,YAAY,KAAK,SAAS,SAAS,IAAI,UAAU,SAAS,KAAK,SAAS,QAAQ,IAAI,UAAU,QAAQ,KAAK,SAAS,SAAS,IAAI,UAAU,SAAS,KAAK,SAAS,WAAW,IAAI,UAAU,WAAW,KAAK,SAAS,WAAW,IAAI,UAAU,WAAW,KAAK,SAAS,gBAAgB,IAAI,UAAU,gBAAgB;AAClW,QAAI,OAAO,GAAG;AACZ,aAAO;AAAA,IACT,WAAW,OAAO,GAAG;AACnB,aAAO;AAAA,IAET,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAmDe,WAAR,iBAAkC,eAAe,gBAAgB;AACtE,iBAAa,GAAG,SAAS;AACzB,QAAI,WAAWC,QAAO,aAAa;AACnC,QAAI,YAAYA,QAAO,cAAc;AACrC,QAAIC,QAAO,gBAAgB,UAAU,SAAS;AAC9C,QAAI,aAAa,KAAK,IAAI,yBAAyB,UAAU,SAAS,CAAC;AACvE,aAAS,QAAQ,SAAS,QAAQ,IAAIA,QAAO,UAAU;AAIvD,QAAI,mBAAmB,OAAO,gBAAgB,UAAU,SAAS,MAAM,CAACA,KAAI;AAC5E,QAAI,SAASA,SAAQ,aAAa;AAElC,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B;;;ACzDe,WAAR,yBAA0C,UAAU,WAAW;AACpE,iBAAa,GAAG,SAAS;AACzB,WAAOC,QAAO,QAAQ,EAAE,QAAQ,IAAIA,QAAO,SAAS,EAAE,QAAQ;AAAA,EAChE;;;AC3BA,MAAI,cAAc;AAAA,IAChB,MAAM,KAAK;AAAA,IACX,OAAO,KAAK;AAAA,IACZ,OAAO,KAAK;AAAA,IACZ,OAAO,SAAS,MAAM,OAAO;AAC3B,aAAO,QAAQ,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,MAAM,KAAK;AAAA,IACxD;AAAA;AAAA,EACF;AAEA,MAAI,wBAAwB;AACrB,WAAS,kBAAkB,QAAQ;AACxC,WAAO,SAAS,YAAY,MAAM,IAAI,YAAY,qBAAqB;AAAA,EACzE;;;ACee,WAAR,kBAAmC,UAAU,WAAW,SAAS;AACtE,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAO,yBAAyB,UAAU,SAAS,IAAI;AAC3D,WAAO,kBAAkB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,EAAE,IAAI;AAAA,EACzG;;;ACIe,WAAR,oBAAqC,UAAU,WAAW,SAAS;AACxE,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAO,yBAAyB,UAAU,SAAS,IAAI;AAC3D,WAAO,kBAAkB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,EAAE,IAAI;AAAA,EACzG;;;ACnBe,WAAR,SAA0B,WAAW;AAC1C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,SAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,WAAO;AAAA,EACT;;;ACLe,WAAR,WAA4B,WAAW;AAC5C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAIC,SAAQ,KAAK,SAAS;AAC1B,SAAK,YAAY,KAAK,YAAY,GAAGA,SAAQ,GAAG,CAAC;AACjD,SAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,WAAO;AAAA,EACT;;;ACNe,WAAR,iBAAkC,WAAW;AAClD,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,WAAO,SAAS,IAAI,EAAE,QAAQ,MAAM,WAAW,IAAI,EAAE,QAAQ;AAAA,EAC/D;;;ACFe,WAAR,mBAAoC,eAAe,gBAAgB;AACxE,iBAAa,GAAG,SAAS;AACzB,QAAI,WAAWC,QAAO,aAAa;AACnC,QAAI,YAAYA,QAAO,cAAc;AACrC,QAAIC,QAAO,WAAW,UAAU,SAAS;AACzC,QAAI,aAAa,KAAK,IAAI,2BAA2B,UAAU,SAAS,CAAC;AACzE,QAAI;AAGJ,QAAI,aAAa,GAAG;AAClB,eAAS;AAAA,IACX,OAAO;AACL,UAAI,SAAS,SAAS,MAAM,KAAK,SAAS,QAAQ,IAAI,IAAI;AAGxD,iBAAS,QAAQ,EAAE;AAAA,MACrB;AACA,eAAS,SAAS,SAAS,SAAS,IAAIA,QAAO,UAAU;AAIzD,UAAI,qBAAqB,WAAW,UAAU,SAAS,MAAM,CAACA;AAG9D,UAAI,iBAAiBD,QAAO,aAAa,CAAC,KAAK,eAAe,KAAK,WAAW,eAAe,SAAS,MAAM,GAAG;AAC7G,6BAAqB;AAAA,MACvB;AACA,eAASC,SAAQ,aAAa,OAAO,kBAAkB;AAAA,IACzD;AAGA,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B;;;AChCe,WAAR,qBAAsC,UAAU,WAAW,SAAS;AACzE,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAO,mBAAmB,UAAU,SAAS,IAAI;AACrD,WAAO,kBAAkB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,EAAE,IAAI;AAAA,EACzG;;;ACAe,WAAR,oBAAqC,UAAU,WAAW,SAAS;AACxE,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAO,yBAAyB,UAAU,SAAS,IAAI;AAC3D,WAAO,kBAAkB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,EAAE,IAAI;AAAA,EACzG;;;ACae,WAAR,kBAAmC,UAAU,WAAW,SAAS;AACtE,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAO,iBAAiB,UAAU,SAAS,IAAI;AACnD,WAAO,kBAAkB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,EAAE,IAAI;AAAA,EACzG;;;AC1Be,WAAR,kBAAmC,eAAe,gBAAgB;AACvE,iBAAa,GAAG,SAAS;AACzB,QAAI,WAAWC,QAAO,aAAa;AACnC,QAAI,YAAYA,QAAO,cAAc;AACrC,QAAIC,QAAO,WAAW,UAAU,SAAS;AACzC,QAAI,aAAa,KAAK,IAAI,0BAA0B,UAAU,SAAS,CAAC;AAIxE,aAAS,YAAY,IAAI;AACzB,cAAU,YAAY,IAAI;AAI1B,QAAI,oBAAoB,WAAW,UAAU,SAAS,MAAM,CAACA;AAC7D,QAAI,SAASA,SAAQ,aAAa,OAAO,iBAAiB;AAE1D,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B;;;ACpBe,WAAR,cAA+B,WAAW;AAC/C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,SAAK,WAAW,GAAG,CAAC;AACpB,WAAO;AAAA,EACT;;;ACLe,WAAR,eAAgC,WAAW;AAChD,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAI,eAAe,KAAK,SAAS;AACjC,QAAIC,SAAQ,eAAe,eAAe;AAC1C,SAAK,SAASA,QAAO,CAAC;AACtB,SAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,WAAO;AAAA,EACT;;;ACRe,WAAR,aAA8B,WAAW;AAC9C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,SAAK,QAAQ,CAAC;AACd,SAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,WAAO;AAAA,EACT;;;ACNe,WAAR,UAA2B,WAAW;AAC3C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAIC,QAAO,KAAK,YAAY;AAC5B,SAAK,YAAYA,QAAO,GAAG,GAAG,CAAC;AAC/B,SAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,WAAO;AAAA,EACT;;;ACPe,WAAR,YAA6B,WAAW;AAC7C,iBAAa,GAAG,SAAS;AACzB,QAAI,YAAYC,QAAO,SAAS;AAChC,QAAI,OAAO,oBAAI,KAAK,CAAC;AACrB,SAAK,YAAY,UAAU,YAAY,GAAG,GAAG,CAAC;AAC9C,SAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AACxB,WAAO;AAAA,EACT;;;ACPe,WAAR,UAA2B,WAAW;AAC3C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,SAAK,WAAW,IAAI,IAAI,GAAG;AAC3B,WAAO;AAAA,EACT;;;ACMe,WAAR,UAA2B,WAAW,SAAS;AACpD,QAAI,MAAM,OAAO,OAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,iBAAa,GAAG,SAAS;AACzB,QAAIC,kBAAiB,kBAAkB;AACvC,QAAI,eAAe,WAAW,QAAQ,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,kBAAkB,QAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQ,UAAU,SAAS,QAAQA,gBAAe,kBAAkB,QAAQ,UAAU,SAAS,SAAS,wBAAwBA,gBAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQ,SAAS,SAAS,OAAO,CAAC;AAGp4B,QAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,YAAM,IAAI,WAAW,kDAAkD;AAAA,IACzE;AACA,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAIC,OAAM,KAAK,OAAO;AACtB,QAAI,QAAQA,OAAM,eAAe,KAAK,KAAK,KAAKA,OAAM;AACtD,SAAK,QAAQ,KAAK,QAAQ,IAAI,IAAI;AAClC,SAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,WAAO;AAAA,EACT;;;AC3Be,WAAR,YAA6B,WAAW;AAC7C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,SAAK,WAAW,IAAI,GAAG;AACvB,WAAO;AAAA,EACT;;;ACLe,WAAR,aAA8B,WAAW;AAC9C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAI,eAAe,KAAK,SAAS;AACjC,QAAIC,SAAQ,eAAe,eAAe,IAAI;AAC9C,SAAK,SAASA,QAAO,CAAC;AACtB,SAAK,SAAS,IAAI,IAAI,IAAI,GAAG;AAC7B,WAAO;AAAA,EACT;;;ACRe,WAAR,YAA6B,WAAW;AAC7C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,SAAK,gBAAgB,GAAG;AACxB,WAAO;AAAA,EACT;;;ACJe,WAAR,gBAAiC,WAAW,aAAa;AAC9D,iBAAa,GAAG,SAAS;AACzB,QAAI,SAAS,UAAU,WAAW;AAClC,WAAO,gBAAgB,WAAW,CAAC,MAAM;AAAA,EAC3C;;;ACvBA,MAAIC,uBAAsB;AACX,WAAR,gBAAiC,WAAW;AACjD,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAI,YAAY,KAAK,QAAQ;AAC7B,SAAK,YAAY,GAAG,CAAC;AACrB,SAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,QAAI,uBAAuB,KAAK,QAAQ;AACxC,QAAI,aAAa,YAAY;AAC7B,WAAO,KAAK,MAAM,aAAaD,oBAAmB,IAAI;AAAA,EACxD;;;ACVe,WAAR,kBAAmC,WAAW;AACnD,iBAAa,GAAG,SAAS;AACzB,QAAI,eAAe;AACnB,QAAI,OAAOE,QAAO,SAAS;AAC3B,QAAIC,OAAM,KAAK,UAAU;AACzB,QAAI,QAAQA,OAAM,eAAe,IAAI,KAAKA,OAAM;AAChD,SAAK,WAAW,KAAK,WAAW,IAAI,IAAI;AACxC,SAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,WAAO;AAAA,EACT;;;ACRe,WAAR,kBAAmC,WAAW;AACnD,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAIC,QAAO,KAAK,eAAe;AAC/B,QAAI,4BAA4B,oBAAI,KAAK,CAAC;AAC1C,8BAA0B,eAAeA,QAAO,GAAG,GAAG,CAAC;AACvD,8BAA0B,YAAY,GAAG,GAAG,GAAG,CAAC;AAChD,QAAI,kBAAkB,kBAAkB,yBAAyB;AACjE,QAAI,4BAA4B,oBAAI,KAAK,CAAC;AAC1C,8BAA0B,eAAeA,OAAM,GAAG,CAAC;AACnD,8BAA0B,YAAY,GAAG,GAAG,GAAG,CAAC;AAChD,QAAI,kBAAkB,kBAAkB,yBAAyB;AACjE,QAAI,KAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AAC/C,aAAOA,QAAO;AAAA,IAChB,WAAW,KAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AACtD,aAAOA;AAAA,IACT,OAAO;AACL,aAAOA,QAAO;AAAA,IAChB;AAAA,EACF;;;ACnBe,WAAR,sBAAuC,WAAW;AACvD,iBAAa,GAAG,SAAS;AACzB,QAAIC,QAAO,kBAAkB,SAAS;AACtC,QAAI,kBAAkB,oBAAI,KAAK,CAAC;AAChC,oBAAgB,eAAeA,OAAM,GAAG,CAAC;AACzC,oBAAgB,YAAY,GAAG,GAAG,GAAG,CAAC;AACtC,QAAI,OAAO,kBAAkB,eAAe;AAC5C,WAAO;AAAA,EACT;;;ACPA,MAAI,uBAAuB;AACZ,WAAR,cAA+B,WAAW;AAC/C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAI,OAAO,kBAAkB,IAAI,EAAE,QAAQ,IAAI,sBAAsB,IAAI,EAAE,QAAQ;AAKnF,WAAO,KAAK,MAAM,OAAO,oBAAoB,IAAI;AAAA,EACnD;;;ACVe,WAAR,eAAgC,WAAW,SAAS;AACzD,QAAI,MAAM,OAAO,OAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,iBAAa,GAAG,SAAS;AACzB,QAAIC,kBAAiB,kBAAkB;AACvC,QAAI,eAAe,WAAW,QAAQ,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,kBAAkB,QAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQ,UAAU,SAAS,QAAQA,gBAAe,kBAAkB,QAAQ,UAAU,SAAS,SAAS,wBAAwBA,gBAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQ,SAAS,SAAS,OAAO,CAAC;AAGp4B,QAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,YAAM,IAAI,WAAW,kDAAkD;AAAA,IACzE;AACA,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAIC,OAAM,KAAK,UAAU;AACzB,QAAI,QAAQA,OAAM,eAAe,IAAI,KAAKA,OAAM;AAChD,SAAK,WAAW,KAAK,WAAW,IAAI,IAAI;AACxC,SAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,WAAO;AAAA,EACT;;;ACfe,WAAR,eAAgC,WAAW,SAAS;AACzD,QAAI,MAAM,OAAO,OAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAIC,QAAO,KAAK,eAAe;AAC/B,QAAIC,kBAAiB,kBAAkB;AACvC,QAAI,wBAAwB,WAAW,QAAQ,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,2BAA2B,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,kBAAkB,QAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,2BAA2B,QAAQ,UAAU,SAAS,QAAQA,gBAAe,2BAA2B,QAAQ,UAAU,SAAS,SAAS,wBAAwBA,gBAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,2BAA2B,QAAQ,SAAS,SAAS,OAAO,CAAC;AAGj7B,QAAI,EAAE,yBAAyB,KAAK,yBAAyB,IAAI;AAC/D,YAAM,IAAI,WAAW,2DAA2D;AAAA,IAClF;AACA,QAAI,sBAAsB,oBAAI,KAAK,CAAC;AACpC,wBAAoB,eAAeD,QAAO,GAAG,GAAG,qBAAqB;AACrE,wBAAoB,YAAY,GAAG,GAAG,GAAG,CAAC;AAC1C,QAAI,kBAAkB,eAAe,qBAAqB,OAAO;AACjE,QAAI,sBAAsB,oBAAI,KAAK,CAAC;AACpC,wBAAoB,eAAeA,OAAM,GAAG,qBAAqB;AACjE,wBAAoB,YAAY,GAAG,GAAG,GAAG,CAAC;AAC1C,QAAI,kBAAkB,eAAe,qBAAqB,OAAO;AACjE,QAAI,KAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AAC/C,aAAOA,QAAO;AAAA,IAChB,WAAW,KAAK,QAAQ,KAAK,gBAAgB,QAAQ,GAAG;AACtD,aAAOA;AAAA,IACT,OAAO;AACL,aAAOA,QAAO;AAAA,IAChB;AAAA,EACF;;;AC3Be,WAAR,mBAAoC,WAAW,SAAS;AAC7D,QAAI,MAAM,OAAO,OAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,iBAAa,GAAG,SAAS;AACzB,QAAIE,kBAAiB,kBAAkB;AACvC,QAAI,wBAAwB,WAAW,QAAQ,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,2BAA2B,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,kBAAkB,QAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,2BAA2B,QAAQ,UAAU,SAAS,QAAQA,gBAAe,2BAA2B,QAAQ,UAAU,SAAS,SAAS,wBAAwBA,gBAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,2BAA2B,QAAQ,SAAS,SAAS,OAAO,CAAC;AACj7B,QAAIC,QAAO,eAAe,WAAW,OAAO;AAC5C,QAAI,YAAY,oBAAI,KAAK,CAAC;AAC1B,cAAU,eAAeA,OAAM,GAAG,qBAAqB;AACvD,cAAU,YAAY,GAAG,GAAG,GAAG,CAAC;AAChC,QAAI,OAAO,eAAe,WAAW,OAAO;AAC5C,WAAO;AAAA,EACT;;;ACZA,MAAIC,wBAAuB;AACZ,WAAR,WAA4B,WAAW,SAAS;AACrD,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAI,OAAO,eAAe,MAAM,OAAO,EAAE,QAAQ,IAAI,mBAAmB,MAAM,OAAO,EAAE,QAAQ;AAK/F,WAAO,KAAK,MAAM,OAAOD,qBAAoB,IAAI;AAAA,EACnD;;;ACde,WAAR,gBAAiC,QAAQ,cAAc;AAC5D,QAAIE,QAAO,SAAS,IAAI,MAAM;AAC9B,QAAI,SAAS,KAAK,IAAI,MAAM,EAAE,SAAS;AACvC,WAAO,OAAO,SAAS,cAAc;AACnC,eAAS,MAAM;AAAA,IACjB;AACA,WAAOA,QAAO;AAAA,EAChB;;;ACMA,MAAIC,cAAa;AAAA;AAAA,IAEf,GAAG,SAAS,EAAE,MAAM,OAAO;AAUzB,UAAI,aAAa,KAAK,eAAe;AAErC,UAAIC,QAAO,aAAa,IAAI,aAAa,IAAI;AAC7C,aAAO,gBAAgB,UAAU,OAAOA,QAAO,MAAMA,OAAM,MAAM,MAAM;AAAA,IACzE;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,UAAIC,SAAQ,KAAK,YAAY;AAC7B,aAAO,UAAU,MAAM,OAAOA,SAAQ,CAAC,IAAI,gBAAgBA,SAAQ,GAAG,CAAC;AAAA,IACzE;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,aAAO,gBAAgB,KAAK,WAAW,GAAG,MAAM,MAAM;AAAA,IACxD;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,UAAI,qBAAqB,KAAK,YAAY,IAAI,MAAM,IAAI,OAAO;AAC/D,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,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,aAAO,gBAAgB,KAAK,YAAY,IAAI,MAAM,IAAI,MAAM,MAAM;AAAA,IACpE;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,aAAO,gBAAgB,KAAK,YAAY,GAAG,MAAM,MAAM;AAAA,IACzD;AAAA;AAAA,IAEA,GAAG,SAASC,GAAE,MAAM,OAAO;AACzB,aAAO,gBAAgB,KAAK,cAAc,GAAG,MAAM,MAAM;AAAA,IAC3D;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,aAAO,gBAAgB,KAAK,cAAc,GAAG,MAAM,MAAM;AAAA,IAC3D;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,UAAI,iBAAiB,MAAM;AAC3B,UAAI,eAAe,KAAK,mBAAmB;AAC3C,UAAI,oBAAoB,KAAK,MAAM,eAAe,KAAK,IAAI,IAAI,iBAAiB,CAAC,CAAC;AAClF,aAAO,gBAAgB,mBAAmB,MAAM,MAAM;AAAA,IACxD;AAAA,EACF;AACA,MAAO,0BAAQH;;;ACxEf,MAAI,gBAAgB;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AA+CA,MAAII,cAAa;AAAA;AAAA,IAEf,GAAG,SAAS,EAAE,MAAM,OAAOC,WAAU;AACnC,UAAI,MAAM,KAAK,eAAe,IAAI,IAAI,IAAI;AAC1C,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,IAAI,KAAK;AAAA,YACvB,OAAO;AAAA,UACT,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,KAAK;AAAA,YACvB,OAAO;AAAA,UACT,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,KAAK;AAAA,YACvB,OAAO;AAAA,UACT,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAASC,GAAE,MAAM,OAAOD,WAAU;AAEnC,UAAI,UAAU,MAAM;AAClB,YAAI,aAAa,KAAK,eAAe;AAErC,YAAIE,QAAO,aAAa,IAAI,aAAa,IAAI;AAC7C,eAAOF,UAAS,cAAcE,OAAM;AAAA,UAClC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,wBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOF,WAAU,SAAS;AAC5C,UAAI,iBAAiB,eAAe,MAAM,OAAO;AAEjD,UAAI,WAAW,iBAAiB,IAAI,iBAAiB,IAAI;AAGzD,UAAI,UAAU,MAAM;AAClB,YAAI,eAAe,WAAW;AAC9B,eAAO,gBAAgB,cAAc,CAAC;AAAA,MACxC;AAGA,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,UAAU;AAAA,UACtC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAGA,aAAO,gBAAgB,UAAU,MAAM,MAAM;AAAA,IAC/C;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,UAAI,cAAc,kBAAkB,IAAI;AAGxC,aAAO,gBAAgB,aAAa,MAAM,MAAM;AAAA,IAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,GAAG,SAAS,EAAE,MAAM,OAAO;AACzB,UAAIE,QAAO,KAAK,eAAe;AAC/B,aAAO,gBAAgBA,OAAM,MAAM,MAAM;AAAA,IAC3C;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOF,WAAU;AACnC,UAAI,UAAU,KAAK,MAAM,KAAK,YAAY,IAAI,KAAK,CAAC;AACpD,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,OAAO;AAAA;AAAA,QAEvB,KAAK;AACH,iBAAO,gBAAgB,SAAS,CAAC;AAAA;AAAA,QAEnC,KAAK;AACH,iBAAOA,UAAS,cAAc,SAAS;AAAA,YACrC,MAAM;AAAA,UACR,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU;AACnC,UAAI,UAAU,KAAK,MAAM,KAAK,YAAY,IAAI,KAAK,CAAC;AACpD,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,OAAO;AAAA;AAAA,QAEvB,KAAK;AACH,iBAAO,gBAAgB,SAAS,CAAC;AAAA;AAAA,QAEnC,KAAK;AACH,iBAAOA,UAAS,cAAc,SAAS;AAAA,YACrC,MAAM;AAAA,UACR,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,QAAQ,SAAS;AAAA,YAC/B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAASG,GAAE,MAAM,OAAOH,WAAU;AACnC,UAAII,SAAQ,KAAK,YAAY;AAC7B,cAAQ,OAAO;AAAA,QACb,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,wBAAgB,EAAE,MAAM,KAAK;AAAA;AAAA,QAEtC,KAAK;AACH,iBAAOJ,UAAS,cAAcI,SAAQ,GAAG;AAAA,YACvC,MAAM;AAAA,UACR,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOJ,UAAS,MAAMI,QAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOJ,UAAS,MAAMI,QAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOJ,UAAS,MAAMI,QAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOJ,WAAU;AACnC,UAAII,SAAQ,KAAK,YAAY;AAC7B,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAOA,SAAQ,CAAC;AAAA;AAAA,QAEzB,KAAK;AACH,iBAAO,gBAAgBA,SAAQ,GAAG,CAAC;AAAA;AAAA,QAErC,KAAK;AACH,iBAAOJ,UAAS,cAAcI,SAAQ,GAAG;AAAA,YACvC,MAAM;AAAA,UACR,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOJ,UAAS,MAAMI,QAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOJ,UAAS,MAAMI,QAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOJ,UAAS,MAAMI,QAAO;AAAA,YAC3B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOJ,WAAU,SAAS;AAC5C,UAAIK,QAAO,WAAW,MAAM,OAAO;AACnC,UAAI,UAAU,MAAM;AAClB,eAAOL,UAAS,cAAcK,OAAM;AAAA,UAClC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,gBAAgBA,OAAM,MAAM,MAAM;AAAA,IAC3C;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOL,WAAU;AACnC,UAAI,UAAU,cAAc,IAAI;AAChC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,SAAS;AAAA,UACrC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,gBAAgB,SAAS,MAAM,MAAM;AAAA,IAC9C;AAAA;AAAA,IAEA,GAAG,SAASM,GAAE,MAAM,OAAON,WAAU;AACnC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,KAAK,WAAW,GAAG;AAAA,UAC/C,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,wBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU;AACnC,UAAI,YAAY,gBAAgB,IAAI;AACpC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,WAAW;AAAA,UACvC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,gBAAgB,WAAW,MAAM,MAAM;AAAA,IAChD;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU;AACnC,UAAI,YAAY,KAAK,UAAU;AAC/B,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU,SAAS;AAC5C,UAAI,YAAY,KAAK,UAAU;AAC/B,UAAI,kBAAkB,YAAY,QAAQ,eAAe,KAAK,KAAK;AACnE,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,cAAc;AAAA;AAAA,QAE9B,KAAK;AACH,iBAAO,gBAAgB,gBAAgB,CAAC;AAAA;AAAA,QAE1C,KAAK;AACH,iBAAOA,UAAS,cAAc,gBAAgB;AAAA,YAC5C,MAAM;AAAA,UACR,CAAC;AAAA,QACH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU,SAAS;AAC5C,UAAI,YAAY,KAAK,UAAU;AAC/B,UAAI,kBAAkB,YAAY,QAAQ,eAAe,KAAK,KAAK;AACnE,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,cAAc;AAAA;AAAA,QAE9B,KAAK;AACH,iBAAO,gBAAgB,gBAAgB,MAAM,MAAM;AAAA;AAAA,QAErD,KAAK;AACH,iBAAOA,UAAS,cAAc,gBAAgB;AAAA,YAC5C,MAAM;AAAA,UACR,CAAC;AAAA,QACH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU;AACnC,UAAI,YAAY,KAAK,UAAU;AAC/B,UAAI,eAAe,cAAc,IAAI,IAAI;AACzC,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,OAAO,YAAY;AAAA;AAAA,QAE5B,KAAK;AACH,iBAAO,gBAAgB,cAAc,MAAM,MAAM;AAAA;AAAA,QAEnD,KAAK;AACH,iBAAOA,UAAS,cAAc,cAAc;AAAA,YAC1C,MAAM;AAAA,UACR,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AACH,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA;AAAA,QAEH,KAAK;AAAA,QACL;AACE,iBAAOA,UAAS,IAAI,WAAW;AAAA,YAC7B,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,MACL;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAASO,GAAE,MAAM,OAAOP,WAAU;AACnC,UAAI,QAAQ,KAAK,YAAY;AAC7B,UAAI,qBAAqB,QAAQ,MAAM,IAAI,OAAO;AAClD,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,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,EAAE,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,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU;AACnC,UAAI,QAAQ,KAAK,YAAY;AAC7B,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;AACA,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,UAAS,UAAU,oBAAoB;AAAA,YAC5C,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC,EAAE,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,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU;AACnC,UAAI,QAAQ,KAAK,YAAY;AAC7B,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;AACA,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,IAEA,GAAG,SAASQ,GAAE,MAAM,OAAOR,WAAU;AACnC,UAAI,UAAU,MAAM;AAClB,YAAI,QAAQ,KAAK,YAAY,IAAI;AACjC,YAAI,UAAU,EAAG,SAAQ;AACzB,eAAOA,UAAS,cAAc,OAAO;AAAA,UACnC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,wBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAEA,GAAG,SAASS,GAAE,MAAM,OAAOT,WAAU;AACnC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,KAAK,YAAY,GAAG;AAAA,UAChD,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,wBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU;AACnC,UAAI,QAAQ,KAAK,YAAY,IAAI;AACjC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,OAAO;AAAA,UACnC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,gBAAgB,OAAO,MAAM,MAAM;AAAA,IAC5C;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAOA,WAAU;AACnC,UAAI,QAAQ,KAAK,YAAY;AAC7B,UAAI,UAAU,EAAG,SAAQ;AACzB,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,OAAO;AAAA,UACnC,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,gBAAgB,OAAO,MAAM,MAAM;AAAA,IAC5C;AAAA;AAAA,IAEA,GAAG,SAASU,GAAE,MAAM,OAAOV,WAAU;AACnC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,KAAK,cAAc,GAAG;AAAA,UAClD,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,wBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAEA,GAAG,SAASW,GAAE,MAAM,OAAOX,WAAU;AACnC,UAAI,UAAU,MAAM;AAClB,eAAOA,UAAS,cAAc,KAAK,cAAc,GAAG;AAAA,UAClD,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO,wBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAEA,GAAG,SAASY,GAAE,MAAM,OAAO;AACzB,aAAO,wBAAgB,EAAE,MAAM,KAAK;AAAA,IACtC;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO,WAAW,SAAS;AAC7C,UAAI,eAAe,QAAQ,iBAAiB;AAC5C,UAAI,iBAAiB,aAAa,kBAAkB;AACpD,UAAI,mBAAmB,GAAG;AACxB,eAAO;AAAA,MACT;AACA,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,kCAAkC,cAAc;AAAA;AAAA;AAAA;AAAA,QAKzD,KAAK;AAAA,QACL,KAAK;AAEH,iBAAO,eAAe,cAAc;AAAA;AAAA;AAAA;AAAA,QAKtC,KAAK;AAAA,QACL,KAAK;AAAA;AAAA,QACL;AACE,iBAAO,eAAe,gBAAgB,GAAG;AAAA,MAC7C;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO,WAAW,SAAS;AAC7C,UAAI,eAAe,QAAQ,iBAAiB;AAC5C,UAAI,iBAAiB,aAAa,kBAAkB;AACpD,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AACH,iBAAO,kCAAkC,cAAc;AAAA;AAAA;AAAA;AAAA,QAKzD,KAAK;AAAA,QACL,KAAK;AAEH,iBAAO,eAAe,cAAc;AAAA;AAAA;AAAA;AAAA,QAKtC,KAAK;AAAA,QACL,KAAK;AAAA;AAAA,QACL;AACE,iBAAO,eAAe,gBAAgB,GAAG;AAAA,MAC7C;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO,WAAW,SAAS;AAC7C,UAAI,eAAe,QAAQ,iBAAiB;AAC5C,UAAI,iBAAiB,aAAa,kBAAkB;AACpD,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,QAAQ,oBAAoB,gBAAgB,GAAG;AAAA;AAAA,QAExD,KAAK;AAAA,QACL;AACE,iBAAO,QAAQ,eAAe,gBAAgB,GAAG;AAAA,MACrD;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO,WAAW,SAAS;AAC7C,UAAI,eAAe,QAAQ,iBAAiB;AAC5C,UAAI,iBAAiB,aAAa,kBAAkB;AACpD,cAAQ,OAAO;AAAA;AAAA,QAEb,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,QAAQ,oBAAoB,gBAAgB,GAAG;AAAA;AAAA,QAExD,KAAK;AAAA,QACL;AACE,iBAAO,QAAQ,eAAe,gBAAgB,GAAG;AAAA,MACrD;AAAA,IACF;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO,WAAW,SAAS;AAC7C,UAAI,eAAe,QAAQ,iBAAiB;AAC5C,UAAI,YAAY,KAAK,MAAM,aAAa,QAAQ,IAAI,GAAI;AACxD,aAAO,gBAAgB,WAAW,MAAM,MAAM;AAAA,IAChD;AAAA;AAAA,IAEA,GAAG,SAAS,EAAE,MAAM,OAAO,WAAW,SAAS;AAC7C,UAAI,eAAe,QAAQ,iBAAiB;AAC5C,UAAI,YAAY,aAAa,QAAQ;AACrC,aAAO,gBAAgB,WAAW,MAAM,MAAM;AAAA,IAChD;AAAA,EACF;AACA,WAAS,oBAAoB,QAAQ,gBAAgB;AACnD,QAAIC,QAAO,SAAS,IAAI,MAAM;AAC9B,QAAI,YAAY,KAAK,IAAI,MAAM;AAC/B,QAAI,QAAQ,KAAK,MAAM,YAAY,EAAE;AACrC,QAAI,UAAU,YAAY;AAC1B,QAAI,YAAY,GAAG;AACjB,aAAOA,QAAO,OAAO,KAAK;AAAA,IAC5B;AACA,QAAI,YAAY,kBAAkB;AAClC,WAAOA,QAAO,OAAO,KAAK,IAAI,YAAY,gBAAgB,SAAS,CAAC;AAAA,EACtE;AACA,WAAS,kCAAkC,QAAQ,gBAAgB;AACjE,QAAI,SAAS,OAAO,GAAG;AACrB,UAAIA,QAAO,SAAS,IAAI,MAAM;AAC9B,aAAOA,QAAO,gBAAgB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,IACxD;AACA,WAAO,eAAe,QAAQ,cAAc;AAAA,EAC9C;AACA,WAAS,eAAe,QAAQ,gBAAgB;AAC9C,QAAI,YAAY,kBAAkB;AAClC,QAAIA,QAAO,SAAS,IAAI,MAAM;AAC9B,QAAI,YAAY,KAAK,IAAI,MAAM;AAC/B,QAAI,QAAQ,gBAAgB,KAAK,MAAM,YAAY,EAAE,GAAG,CAAC;AACzD,QAAI,UAAU,gBAAgB,YAAY,IAAI,CAAC;AAC/C,WAAOA,QAAO,QAAQ,YAAY;AAAA,EACpC;AACA,MAAO,qBAAQd;;;ACnwBf,MAAI,oBAAoB,SAASe,mBAAkB,SAASC,aAAY;AACtE,YAAQ,SAAS;AAAA,MACf,KAAK;AACH,eAAOA,YAAW,KAAK;AAAA,UACrB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,KAAK;AACH,eAAOA,YAAW,KAAK;AAAA,UACrB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,KAAK;AACH,eAAOA,YAAW,KAAK;AAAA,UACrB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,KAAK;AAAA,MACL;AACE,eAAOA,YAAW,KAAK;AAAA,UACrB,OAAO;AAAA,QACT,CAAC;AAAA,IACL;AAAA,EACF;AACA,MAAI,oBAAoB,SAASC,mBAAkB,SAASD,aAAY;AACtE,YAAQ,SAAS;AAAA,MACf,KAAK;AACH,eAAOA,YAAW,KAAK;AAAA,UACrB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,KAAK;AACH,eAAOA,YAAW,KAAK;AAAA,UACrB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,KAAK;AACH,eAAOA,YAAW,KAAK;AAAA,UACrB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,KAAK;AAAA,MACL;AACE,eAAOA,YAAW,KAAK;AAAA,UACrB,OAAO;AAAA,QACT,CAAC;AAAA,IACL;AAAA,EACF;AACA,MAAI,wBAAwB,SAASE,uBAAsB,SAASF,aAAY;AAC9E,QAAI,cAAc,QAAQ,MAAM,WAAW,KAAK,CAAC;AACjD,QAAI,cAAc,YAAY,CAAC;AAC/B,QAAI,cAAc,YAAY,CAAC;AAC/B,QAAI,CAAC,aAAa;AAChB,aAAO,kBAAkB,SAASA,WAAU;AAAA,IAC9C;AACA,QAAI;AACJ,YAAQ,aAAa;AAAA,MACnB,KAAK;AACH,yBAAiBA,YAAW,SAAS;AAAA,UACnC,OAAO;AAAA,QACT,CAAC;AACD;AAAA,MACF,KAAK;AACH,yBAAiBA,YAAW,SAAS;AAAA,UACnC,OAAO;AAAA,QACT,CAAC;AACD;AAAA,MACF,KAAK;AACH,yBAAiBA,YAAW,SAAS;AAAA,UACnC,OAAO;AAAA,QACT,CAAC;AACD;AAAA,MACF,KAAK;AAAA,MACL;AACE,yBAAiBA,YAAW,SAAS;AAAA,UACnC,OAAO;AAAA,QACT,CAAC;AACD;AAAA,IACJ;AACA,WAAO,eAAe,QAAQ,YAAY,kBAAkB,aAAaA,WAAU,CAAC,EAAE,QAAQ,YAAY,kBAAkB,aAAaA,WAAU,CAAC;AAAA,EACtJ;AACA,MAAI,iBAAiB;AAAA,IACnB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACA,MAAO,yBAAQ;;;AC/Ef,MAAI,2BAA2B,CAAC,KAAK,IAAI;AACzC,MAAI,0BAA0B,CAAC,MAAM,MAAM;AACpC,WAAS,0BAA0B,OAAO;AAC/C,WAAO,yBAAyB,QAAQ,KAAK,MAAM;AAAA,EACrD;AACO,WAAS,yBAAyB,OAAO;AAC9C,WAAO,wBAAwB,QAAQ,KAAK,MAAM;AAAA,EACpD;AACO,WAAS,oBAAoB,OAAOG,SAAQ,OAAO;AACxD,QAAI,UAAU,QAAQ;AACpB,YAAM,IAAI,WAAW,qCAAqC,OAAOA,SAAQ,wCAAwC,EAAE,OAAO,OAAO,gFAAgF,CAAC;AAAA,IACpN,WAAW,UAAU,MAAM;AACzB,YAAM,IAAI,WAAW,iCAAiC,OAAOA,SAAQ,wCAAwC,EAAE,OAAO,OAAO,gFAAgF,CAAC;AAAA,IAChN,WAAW,UAAU,KAAK;AACxB,YAAM,IAAI,WAAW,+BAA+B,OAAOA,SAAQ,oDAAoD,EAAE,OAAO,OAAO,gFAAgF,CAAC;AAAA,IAC1N,WAAW,UAAU,MAAM;AACzB,YAAM,IAAI,WAAW,iCAAiC,OAAOA,SAAQ,oDAAoD,EAAE,OAAO,OAAO,gFAAgF,CAAC;AAAA,IAC5N;AAAA,EACF;;;AClBA,MAAI,uBAAuB;AAAA,IACzB,kBAAkB;AAAA,MAChB,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,aAAa;AAAA,IACb,kBAAkB;AAAA,MAChB,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,aAAa;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,aAAa;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,cAAc;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,SAAS;AAAA,MACP,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,aAAa;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,cAAc;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,iBAAiB,SAASC,gBAAe,OAAO,OAAO,SAAS;AAClE,QAAI;AACJ,QAAI,aAAa,qBAAqB,KAAK;AAC3C,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;AACA,QAAI,YAAY,QAAQ,YAAY,UAAU,QAAQ,WAAW;AAC/D,UAAI,QAAQ,cAAc,QAAQ,aAAa,GAAG;AAChD,eAAO,QAAQ;AAAA,MACjB,OAAO;AACL,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,MAAO,yBAAQ;;;AClFA,WAAR,kBAAmC,MAAM;AAC9C,WAAO,WAAY;AACjB,UAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAEnF,UAAI,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI,KAAK;AACzD,UAAIC,UAAS,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,YAAY;AAClE,aAAOA;AAAA,IACT;AAAA,EACF;;;ACPA,MAAI,cAAc;AAAA,IAChB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AACA,MAAI,cAAc;AAAA,IAChB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AACA,MAAI,kBAAkB;AAAA,IACpB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AACA,MAAI,aAAa;AAAA,IACf,MAAM,kBAAkB;AAAA,MACtB,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAAA,IACD,MAAM,kBAAkB;AAAA,MACtB,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAAA,IACD,UAAU,kBAAkB;AAAA,MAC1B,SAAS;AAAA,MACT,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AACA,MAAO,qBAAQ;;;ACjCf,MAAI,uBAAuB;AAAA,IACzB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACA,MAAI,iBAAiB,SAASC,gBAAe,OAAO,OAAO,WAAW,UAAU;AAC9E,WAAO,qBAAqB,KAAK;AAAA,EACnC;AACA,MAAO,yBAAQ;;;ACXA,WAAR,gBAAiC,MAAM;AAC5C,WAAO,SAAU,YAAY,SAAS;AACpC,UAAI,UAAU,YAAY,QAAQ,YAAY,UAAU,QAAQ,UAAU,OAAO,QAAQ,OAAO,IAAI;AACpG,UAAI;AACJ,UAAI,YAAY,gBAAgB,KAAK,kBAAkB;AACrD,YAAI,eAAe,KAAK,0BAA0B,KAAK;AACvD,YAAI,QAAQ,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI;AAC9F,sBAAc,KAAK,iBAAiB,KAAK,KAAK,KAAK,iBAAiB,YAAY;AAAA,MAClF,OAAO;AACL,YAAI,gBAAgB,KAAK;AACzB,YAAI,SAAS,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI,KAAK;AACpG,sBAAc,KAAK,OAAO,MAAM,KAAK,KAAK,OAAO,aAAa;AAAA,MAChE;AACA,UAAIC,SAAQ,KAAK,mBAAmB,KAAK,iBAAiB,UAAU,IAAI;AAExE,aAAO,YAAYA,MAAK;AAAA,IAC1B;AAAA,EACF;;;AChBA,MAAI,YAAY;AAAA,IACd,QAAQ,CAAC,KAAK,GAAG;AAAA,IACjB,aAAa,CAAC,MAAM,IAAI;AAAA,IACxB,MAAM,CAAC,iBAAiB,aAAa;AAAA,EACvC;AACA,MAAI,gBAAgB;AAAA,IAClB,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,MAAI,cAAc;AAAA,IAChB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,IACnE,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IAChG,MAAM,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AAAA,EACjI;AACA,MAAI,YAAY;AAAA,IACd,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,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAAA,EACrF;AACA,MAAI,kBAAkB;AAAA,IACpB,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;AACA,MAAI,4BAA4B;AAAA,IAC9B,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;AACA,MAAI,gBAAgB,SAASC,eAAc,aAAa,UAAU;AAChE,QAAI,SAAS,OAAO,WAAW;AAS/B,QAAI,SAAS,SAAS;AACtB,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;AACA,MAAI,WAAW;AAAA,IACb;AAAA,IACA,KAAK,gBAAgB;AAAA,MACnB,QAAQ;AAAA,MACR,cAAc;AAAA,IAChB,CAAC;AAAA,IACD,SAAS,gBAAgB;AAAA,MACvB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,kBAAkB,SAAS,iBAAiB,SAAS;AACnD,eAAO,UAAU;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,IACD,OAAO,gBAAgB;AAAA,MACrB,QAAQ;AAAA,MACR,cAAc;AAAA,IAChB,CAAC;AAAA,IACD,KAAK,gBAAgB;AAAA,MACnB,QAAQ;AAAA,MACR,cAAc;AAAA,IAChB,CAAC;AAAA,IACD,WAAW,gBAAgB;AAAA,MACzB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,wBAAwB;AAAA,IAC1B,CAAC;AAAA,EACH;AACA,MAAO,mBAAQ;;;AC9IA,WAAR,aAA8B,MAAM;AACzC,WAAO,SAAU,QAAQ;AACvB,UAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,UAAI,QAAQ,QAAQ;AACpB,UAAI,eAAe,SAAS,KAAK,cAAc,KAAK,KAAK,KAAK,cAAc,KAAK,iBAAiB;AAClG,UAAI,cAAc,OAAO,MAAM,YAAY;AAC3C,UAAI,CAAC,aAAa;AAChB,eAAO;AAAA,MACT;AACA,UAAI,gBAAgB,YAAY,CAAC;AACjC,UAAI,gBAAgB,SAAS,KAAK,cAAc,KAAK,KAAK,KAAK,cAAc,KAAK,iBAAiB;AACnG,UAAI,MAAM,MAAM,QAAQ,aAAa,IAAI,UAAU,eAAe,SAAU,SAAS;AACnF,eAAO,QAAQ,KAAK,aAAa;AAAA,MACnC,CAAC,IAAI,QAAQ,eAAe,SAAU,SAAS;AAC7C,eAAO,QAAQ,KAAK,aAAa;AAAA,MACnC,CAAC;AACD,UAAI;AACJ,cAAQ,KAAK,gBAAgB,KAAK,cAAc,GAAG,IAAI;AACvD,cAAQ,QAAQ,gBAAgB,QAAQ,cAAc,KAAK,IAAI;AAC/D,UAAI,OAAO,OAAO,MAAM,cAAc,MAAM;AAC5C,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS,QAAQ,QAAQ,WAAW;AAClC,aAAS,OAAO,QAAQ;AACtB,UAAI,OAAO,eAAe,GAAG,KAAK,UAAU,OAAO,GAAG,CAAC,GAAG;AACxD,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,UAAU,OAAO,WAAW;AACnC,aAAS,MAAM,GAAG,MAAM,MAAM,QAAQ,OAAO;AAC3C,UAAI,UAAU,MAAM,GAAG,CAAC,GAAG;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;;;ACzCe,WAAR,oBAAqC,MAAM;AAChD,WAAO,SAAU,QAAQ;AACvB,UAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,UAAI,cAAc,OAAO,MAAM,KAAK,YAAY;AAChD,UAAI,CAAC,YAAa,QAAO;AACzB,UAAI,gBAAgB,YAAY,CAAC;AACjC,UAAI,cAAc,OAAO,MAAM,KAAK,YAAY;AAChD,UAAI,CAAC,YAAa,QAAO;AACzB,UAAI,QAAQ,KAAK,gBAAgB,KAAK,cAAc,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC;AACnF,cAAQ,QAAQ,gBAAgB,QAAQ,cAAc,KAAK,IAAI;AAC/D,UAAI,OAAO,OAAO,MAAM,cAAc,MAAM;AAC5C,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;;;ACdA,MAAI,4BAA4B;AAChC,MAAI,4BAA4B;AAChC,MAAI,mBAAmB;AAAA,IACrB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACA,MAAI,mBAAmB;AAAA,IACrB,KAAK,CAAC,OAAO,SAAS;AAAA,EACxB;AACA,MAAI,uBAAuB;AAAA,IACzB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACA,MAAI,uBAAuB;AAAA,IACzB,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EAC9B;AACA,MAAI,qBAAqB;AAAA,IACvB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACA,MAAI,qBAAqB;AAAA,IACvB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IAC3F,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,SAAS,SAAS,SAAS,QAAQ,OAAO,OAAO,OAAO,KAAK;AAAA,EACrG;AACA,MAAI,mBAAmB;AAAA,IACrB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EACR;AACA,MAAI,mBAAmB;AAAA,IACrB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACxD,KAAK,CAAC,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,EAC3D;AACA,MAAI,yBAAyB;AAAA,IAC3B,QAAQ;AAAA,IACR,KAAK;AAAA,EACP;AACA,MAAI,yBAAyB;AAAA,IAC3B,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;AACA,MAAI,QAAQ;AAAA,IACV,eAAe,oBAAoB;AAAA,MACjC,cAAc;AAAA,MACd,cAAc;AAAA,MACd,eAAe,SAAS,cAAc,OAAO;AAC3C,eAAO,SAAS,OAAO,EAAE;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,IACD,KAAK,aAAa;AAAA,MAChB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,IACD,SAAS,aAAa;AAAA,MACpB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe,SAASC,eAAcC,QAAO;AAC3C,eAAOA,SAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,IACD,OAAO,aAAa;AAAA,MAClB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,IACD,KAAK,aAAa;AAAA,MAChB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,IACD,WAAW,aAAa;AAAA,MACtB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,EACH;AACA,MAAO,gBAAQ;;;ACnFf,MAAI,SAAS;AAAA,IACX,MAAM;AAAA,IACN,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,MACP,cAAc;AAAA,MACd,uBAAuB;AAAA,IACzB;AAAA,EACF;AACA,MAAO,gBAAQ;;;ACzBf,MAAO,wBAAQ;;;ACoBf,MAAI,yBAAyB;AAI7B,MAAI,6BAA6B;AACjC,MAAI,sBAAsB;AAC1B,MAAI,oBAAoB;AACxB,MAAI,gCAAgC;AAsSrB,WAARC,QAAwB,WAAW,gBAAgB,SAAS;AACjE,QAAI,MAAM,iBAAiB,OAAO,OAAO,OAAO,uBAAuB,kBAAkB,uBAAuB,uBAAuB,wBAAwB,OAAO,OAAO,OAAO,uBAAuB,kBAAkB,uBAAuB,wBAAwB;AAC5Q,iBAAa,GAAG,SAAS;AACzB,QAAI,YAAY,OAAO,cAAc;AACrC,QAAIC,kBAAiB,kBAAkB;AACvC,QAAIC,WAAU,QAAQ,kBAAkB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,YAAY,QAAQ,oBAAoB,SAAS,kBAAkBD,gBAAe,YAAY,QAAQ,SAAS,SAAS,OAAO;AACjO,QAAI,wBAAwB,WAAW,SAAS,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,2BAA2B,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,mBAAmB,QAAQ,YAAY,QAAQ,qBAAqB,SAAS,UAAU,wBAAwB,iBAAiB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,2BAA2B,QAAQ,UAAU,SAAS,QAAQA,gBAAe,2BAA2B,QAAQ,UAAU,SAAS,SAAS,wBAAwBA,gBAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,2BAA2B,QAAQ,UAAU,SAAS,QAAQ,CAAC;AAGv7B,QAAI,EAAE,yBAAyB,KAAK,yBAAyB,IAAI;AAC/D,YAAM,IAAI,WAAW,2DAA2D;AAAA,IAClF;AACA,QAAI,eAAe,WAAW,SAAS,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,mBAAmB,QAAQ,YAAY,QAAQ,qBAAqB,SAAS,UAAU,wBAAwB,iBAAiB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQ,UAAU,SAAS,QAAQA,gBAAe,kBAAkB,QAAQ,UAAU,SAAS,SAAS,yBAAyBA,gBAAe,YAAY,QAAQ,2BAA2B,SAAS,UAAU,yBAAyB,uBAAuB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQ,UAAU,SAAS,QAAQ,CAAC;AAG74B,QAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,YAAM,IAAI,WAAW,kDAAkD;AAAA,IACzE;AACA,QAAI,CAACC,QAAO,UAAU;AACpB,YAAM,IAAI,WAAW,uCAAuC;AAAA,IAC9D;AACA,QAAI,CAACA,QAAO,YAAY;AACtB,YAAM,IAAI,WAAW,yCAAyC;AAAA,IAChE;AACA,QAAI,eAAeC,QAAO,SAAS;AACnC,QAAI,CAAC,QAAQ,YAAY,GAAG;AAC1B,YAAM,IAAI,WAAW,oBAAoB;AAAA,IAC3C;AAKA,QAAI,iBAAiB,gCAAgC,YAAY;AACjE,QAAI,UAAU,gBAAgB,cAAc,cAAc;AAC1D,QAAI,mBAAmB;AAAA,MACrB;AAAA,MACA;AAAA,MACA,QAAQD;AAAA,MACR,eAAe;AAAA,IACjB;AACA,QAAI,SAAS,UAAU,MAAM,0BAA0B,EAAE,IAAI,SAAU,WAAW;AAChF,UAAI,iBAAiB,UAAU,CAAC;AAChC,UAAI,mBAAmB,OAAO,mBAAmB,KAAK;AACpD,YAAI,gBAAgB,uBAAe,cAAc;AACjD,eAAO,cAAc,WAAWA,QAAO,UAAU;AAAA,MACnD;AACA,aAAO;AAAA,IACT,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,EAAE,IAAI,SAAU,WAAW;AAEjE,UAAI,cAAc,MAAM;AACtB,eAAO;AAAA,MACT;AACA,UAAI,iBAAiB,UAAU,CAAC;AAChC,UAAI,mBAAmB,KAAK;AAC1B,eAAO,mBAAmB,SAAS;AAAA,MACrC;AACA,UAAIE,aAAY,mBAAW,cAAc;AACzC,UAAIA,YAAW;AACb,YAAI,EAAE,YAAY,QAAQ,YAAY,UAAU,QAAQ,gCAAgC,yBAAyB,SAAS,GAAG;AAC3H,8BAAoB,WAAW,gBAAgB,OAAO,SAAS,CAAC;AAAA,QAClE;AACA,YAAI,EAAE,YAAY,QAAQ,YAAY,UAAU,QAAQ,iCAAiC,0BAA0B,SAAS,GAAG;AAC7H,8BAAoB,WAAW,gBAAgB,OAAO,SAAS,CAAC;AAAA,QAClE;AACA,eAAOA,WAAU,SAAS,WAAWF,QAAO,UAAU,gBAAgB;AAAA,MACxE;AACA,UAAI,eAAe,MAAM,6BAA6B,GAAG;AACvD,cAAM,IAAI,WAAW,mEAAmE,iBAAiB,GAAG;AAAA,MAC9G;AACA,aAAO;AAAA,IACT,CAAC,EAAE,KAAK,EAAE;AACV,WAAO;AAAA,EACT;AACA,WAAS,mBAAmB,OAAO;AACjC,QAAI,UAAU,MAAM,MAAM,mBAAmB;AAC7C,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,WAAO,QAAQ,CAAC,EAAE,QAAQ,mBAAmB,GAAG;AAAA,EAClD;;;ACjZe,WAAR,OAAwB,QAAQ,QAAQ;AAC7C,QAAI,UAAU,MAAM;AAClB,YAAM,IAAI,UAAU,+DAA+D;AAAA,IACrF;AACA,aAAS,YAAY,QAAQ;AAC3B,UAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,QAAQ,GAAG;AAC1D;AACA,eAAO,QAAQ,IAAI,OAAO,QAAQ;AAAA,MACpC;AAAA,IACF;AACA,WAAO;AAAA,EACT;;;ACXA,WAAS,kBAAkBG,IAAGC,IAAG;AAC/B,KAAC,QAAQA,MAAKA,KAAID,GAAE,YAAYC,KAAID,GAAE;AACtC,aAASE,KAAI,GAAGC,KAAI,MAAMF,EAAC,GAAGC,KAAID,IAAGC,KAAK,CAAAC,GAAED,EAAC,IAAIF,GAAEE,EAAC;AACpD,WAAOC;AAAA,EACT;;;ACHA,WAAS,4BAA4BC,IAAGC,IAAG;AACzC,QAAID,IAAG;AACL,UAAI,YAAY,OAAOA,GAAG,QAAO,kBAAiBA,IAAGC,EAAC;AACtD,UAAIC,KAAI,CAAC,EAAE,SAAS,KAAKF,EAAC,EAAE,MAAM,GAAG,EAAE;AACvC,aAAO,aAAaE,MAAKF,GAAE,gBAAgBE,KAAIF,GAAE,YAAY,OAAO,UAAUE,MAAK,UAAUA,KAAI,MAAM,KAAKF,EAAC,IAAI,gBAAgBE,MAAK,2CAA2C,KAAKA,EAAC,IAAI,kBAAiBF,IAAGC,EAAC,IAAI;AAAA,IACtN;AAAA,EACF;;;ACNA,WAAS,2BAA2BE,IAAGC,IAAG;AACxC,QAAIC,KAAI,eAAe,OAAO,UAAUF,GAAE,OAAO,QAAQ,KAAKA,GAAE,YAAY;AAC5E,QAAI,CAACE,IAAG;AACN,UAAI,MAAM,QAAQF,EAAC,MAAME,KAAI,4BAA2BF,EAAC,MAAMC,MAAKD,MAAK,YAAY,OAAOA,GAAE,QAAQ;AACpG,QAAAE,OAAMF,KAAIE;AACV,YAAI,KAAK,GACPC,KAAI,SAASA,KAAI;AAAA,QAAC;AACpB,eAAO;AAAA,UACL,GAAGA;AAAA,UACH,GAAG,SAASC,KAAI;AACd,mBAAO,MAAMJ,GAAE,SAAS;AAAA,cACtB,MAAM;AAAA,YACR,IAAI;AAAA,cACF,MAAM;AAAA,cACN,OAAOA,GAAE,IAAI;AAAA,YACf;AAAA,UACF;AAAA,UACA,GAAG,SAASC,GAAED,IAAG;AACf,kBAAMA;AAAA,UACR;AAAA,UACA,GAAGG;AAAA,QACL;AAAA,MACF;AACA,YAAM,IAAI,UAAU,uIAAuI;AAAA,IAC7J;AACA,QAAIE,IACFC,KAAI,MACJC,KAAI;AACN,WAAO;AAAA,MACL,GAAG,SAASC,KAAI;AACd,QAAAN,KAAIA,GAAE,KAAKF,EAAC;AAAA,MACd;AAAA,MACA,GAAG,SAASI,KAAI;AACd,YAAIJ,KAAIE,GAAE,KAAK;AACf,eAAOI,KAAIN,GAAE,MAAMA;AAAA,MACrB;AAAA,MACA,GAAG,SAASC,GAAED,IAAG;AACf,QAAAO,KAAI,MAAIF,KAAIL;AAAA,MACd;AAAA,MACA,GAAG,SAASS,KAAI;AACd,YAAI;AACF,UAAAH,MAAK,QAAQJ,GAAE,QAAQ,KAAKA,GAAE,QAAQ,EAAE;AAAA,QAC1C,UAAE;AACA,cAAIK,GAAG,OAAMF;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;;;AChDA,WAAS,uBAAuBK,IAAG;AACjC,QAAI,WAAWA,GAAG,OAAM,IAAI,eAAe,2DAA2D;AACtG,WAAOA;AAAA,EACT;;;ACHA,WAAS,gBAAgBC,IAAGC,IAAG;AAC7B,WAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAGC,IAAG;AAC9F,aAAOD,GAAE,YAAYC,IAAGD;AAAA,IAC1B,GAAG,gBAAgBA,IAAGC,EAAC;AAAA,EACzB;;;ACHA,WAAS,UAAUC,IAAGC,IAAG;AACvB,QAAI,cAAc,OAAOA,MAAK,SAASA,GAAG,OAAM,IAAI,UAAU,oDAAoD;AAClH,IAAAD,GAAE,YAAY,OAAO,OAAOC,MAAKA,GAAE,WAAW;AAAA,MAC5C,aAAa;AAAA,QACX,OAAOD;AAAA,QACP,UAAU;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,IACF,CAAC,GAAG,OAAO,eAAeA,IAAG,aAAa;AAAA,MACxC,UAAU;AAAA,IACZ,CAAC,GAAGC,MAAK,gBAAeD,IAAGC,EAAC;AAAA,EAC9B;;;ACZA,WAAS,gBAAgBC,IAAG;AAC1B,WAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAG;AAC3F,aAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,IAC/C,GAAG,gBAAgBA,EAAC;AAAA,EACtB;;;ACJA,WAAS,4BAA4B;AACnC,QAAI;AACF,UAAIC,KAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,MAAC,CAAC,CAAC;AAAA,IACxF,SAASA,IAAG;AAAA,IAAC;AACb,YAAQ,4BAA4B,SAASC,6BAA4B;AACvE,aAAO,CAAC,CAACD;AAAA,IACX,GAAG;AAAA,EACL;;;ACLA,WAAS,2BAA2BE,IAAGC,IAAG;AACxC,QAAIA,OAAM,YAAY,QAAQA,EAAC,KAAK,cAAc,OAAOA,IAAI,QAAOA;AACpE,QAAI,WAAWA,GAAG,OAAM,IAAI,UAAU,0DAA0D;AAChG,WAAO,uBAAsBD,EAAC;AAAA,EAChC;;;ACHA,WAAS,aAAaE,IAAG;AACvB,QAAIC,KAAI,0BAAyB;AACjC,WAAO,WAAY;AACjB,UAAIC,IACFC,KAAI,gBAAeH,EAAC;AACtB,UAAIC,IAAG;AACL,YAAIG,KAAI,gBAAe,IAAI,EAAE;AAC7B,QAAAF,KAAI,QAAQ,UAAUC,IAAG,WAAWC,EAAC;AAAA,MACvC,MAAO,CAAAF,KAAIC,GAAE,MAAM,MAAM,SAAS;AAClC,aAAO,2BAA0B,MAAMD,EAAC;AAAA,IAC1C;AAAA,EACF;;;ACdA,WAAS,gBAAgBG,IAAGC,IAAG;AAC7B,QAAI,EAAED,cAAaC,IAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,EAChF;;;ACDA,WAAS,YAAYC,IAAGC,IAAG;AACzB,QAAI,YAAY,QAAQD,EAAC,KAAK,CAACA,GAAG,QAAOA;AACzC,QAAIE,KAAIF,GAAE,OAAO,WAAW;AAC5B,QAAI,WAAWE,IAAG;AAChB,UAAIC,KAAID,GAAE,KAAKF,IAAGC,MAAK,SAAS;AAChC,UAAI,YAAY,QAAQE,EAAC,EAAG,QAAOA;AACnC,YAAM,IAAI,UAAU,8CAA8C;AAAA,IACpE;AACA,YAAQ,aAAaF,KAAI,SAAS,QAAQD,EAAC;AAAA,EAC7C;;;ACRA,WAAS,cAAcI,IAAG;AACxB,QAAIC,KAAI,YAAYD,IAAG,QAAQ;AAC/B,WAAO,YAAY,QAAQC,EAAC,IAAIA,KAAIA,KAAI;AAAA,EAC1C;;;ACJA,WAAS,kBAAkBC,IAAGC,IAAG;AAC/B,aAASC,KAAI,GAAGA,KAAID,GAAE,QAAQC,MAAK;AACjC,UAAIC,KAAIF,GAAEC,EAAC;AACX,MAAAC,GAAE,aAAaA,GAAE,cAAc,OAAIA,GAAE,eAAe,MAAI,WAAWA,OAAMA,GAAE,WAAW,OAAK,OAAO,eAAeH,IAAG,cAAcG,GAAE,GAAG,GAAGA,EAAC;AAAA,IAC7I;AAAA,EACF;AACA,WAAS,aAAaH,IAAGC,IAAGC,IAAG;AAC7B,WAAOD,MAAK,kBAAkBD,GAAE,WAAWC,EAAC,GAAGC,MAAK,kBAAkBF,IAAGE,EAAC,GAAG,OAAO,eAAeF,IAAG,aAAa;AAAA,MACjH,UAAU;AAAA,IACZ,CAAC,GAAGA;AAAA,EACN;;;ACVA,WAAS,gBAAgBI,IAAGC,IAAGC,IAAG;AAChC,YAAQD,KAAI,cAAcA,EAAC,MAAMD,KAAI,OAAO,eAAeA,IAAGC,IAAG;AAAA,MAC/D,OAAOC;AAAA,MACP,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,IACZ,CAAC,IAAIF,GAAEC,EAAC,IAAIC,IAAGF;AAAA,EACjB;;;ACFA,MAAI,yBAAyB;AACtB,MAAI,SAAsB,4BAAY;AAC3C,aAASG,UAAS;AAChB,sBAAgB,MAAMA,OAAM;AAC5B,sBAAgB,MAAM,YAAY,MAAM;AACxC,sBAAgB,MAAM,eAAe,CAAC;AAAA,IACxC;AACA,iBAAaA,SAAQ,CAAC;AAAA,MACpB,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,UAAU,UAAU;AAC3C,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOA;AAAA,EACT,GAAE;AACK,MAAI,cAA2B,0BAAU,SAAS;AACvD,cAAUC,cAAa,OAAO;AAC9B,QAAI,SAAS,aAAaA,YAAW;AACrC,aAASA,aAAY,OAAO,eAAe,UAAU,UAAU,aAAa;AAC1E,UAAI;AACJ,sBAAgB,MAAMA,YAAW;AACjC,cAAQ,OAAO,KAAK,IAAI;AACxB,YAAM,QAAQ;AACd,YAAM,gBAAgB;AACtB,YAAM,WAAW;AACjB,YAAM,WAAW;AACjB,UAAI,aAAa;AACf,cAAM,cAAc;AAAA,MACtB;AACA,aAAO;AAAA,IACT;AACA,iBAAaA,cAAa,CAAC;AAAA,MACzB,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,SAAS,SAAS;AACzC,eAAO,KAAK,cAAc,SAAS,KAAK,OAAO,OAAO;AAAA,MACxD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,SAAS,OAAO,SAAS;AAC3C,eAAO,KAAK,SAAS,SAAS,OAAO,KAAK,OAAO,OAAO;AAAA,MAC1D;AAAA,IACF,CAAC,CAAC;AACF,WAAOD;AAAA,EACT,GAAE,MAAM;AACD,MAAI,6BAA0C,0BAAU,UAAU;AACvE,cAAUE,6BAA4B,QAAQ;AAC9C,QAAI,UAAU,aAAaA,2BAA0B;AACrD,aAASA,8BAA6B;AACpC,UAAI;AACJ,sBAAgB,MAAMA,2BAA0B;AAChD,eAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,aAAK,IAAI,IAAI,UAAU,IAAI;AAAA,MAC7B;AACA,eAAS,QAAQ,KAAK,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AACxD,sBAAgB,uBAAuB,MAAM,GAAG,YAAY,sBAAsB;AAClF,sBAAgB,uBAAuB,MAAM,GAAG,eAAe,EAAE;AACjE,aAAO;AAAA,IACT;AACA,iBAAaA,6BAA4B,CAAC;AAAA,MACxC,KAAK;AAAA,MACL,OAAO,SAASD,KAAI,MAAM,OAAO;AAC/B,YAAI,MAAM,gBAAgB;AACxB,iBAAO;AAAA,QACT;AACA,YAAI,gBAAgB,oBAAI,KAAK,CAAC;AAC9B,sBAAc,YAAY,KAAK,eAAe,GAAG,KAAK,YAAY,GAAG,KAAK,WAAW,CAAC;AACtF,sBAAc,SAAS,KAAK,YAAY,GAAG,KAAK,cAAc,GAAG,KAAK,cAAc,GAAG,KAAK,mBAAmB,CAAC;AAChH,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOC;AAAA,EACT,GAAE,MAAM;;;ACzED,MAAI,SAAsB,4BAAY;AAC3C,aAASC,UAAS;AAChB,sBAAgB,MAAMA,OAAM;AAC5B,sBAAgB,MAAM,sBAAsB,MAAM;AAClD,sBAAgB,MAAM,YAAY,MAAM;AACxC,sBAAgB,MAAM,eAAe,MAAM;AAAA,IAC7C;AACA,iBAAaA,SAAQ,CAAC;AAAA,MACpB,KAAK;AAAA,MACL,OAAO,SAAS,IAAI,YAAY,OAAOC,QAAO,SAAS;AACrD,YAAI,SAAS,KAAK,MAAM,YAAY,OAAOA,QAAO,OAAO;AACzD,YAAI,CAAC,QAAQ;AACX,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,UACL,QAAQ,IAAI,YAAY,OAAO,OAAO,KAAK,UAAU,KAAK,KAAK,KAAK,UAAU,KAAK,WAAW;AAAA,UAC9F,MAAM,OAAO;AAAA,QACf;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,UAAU,QAAQ,UAAU;AACnD,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOD;AAAA,EACT,GAAE;;;ACvBK,MAAI,YAAyB,0BAAU,SAAS;AACrD,cAAUE,YAAW,OAAO;AAC5B,QAAI,SAAS,aAAaA,UAAS;AACnC,aAASA,aAAY;AACnB,UAAI;AACJ,sBAAgB,MAAMA,UAAS;AAC/B,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AACzF,aAAO;AAAA,IACT;AACA,iBAAaA,YAAW,CAAC;AAAA,MACvB,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,YACT,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,YACT,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,YACT,CAAC;AAAA;AAAA,UAEH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,YACT,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,YACT,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,YACT,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,OAAO,OAAO;AACtC,cAAM,MAAM;AACZ,aAAK,eAAe,OAAO,GAAG,CAAC;AAC/B,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AC7DD,MAAI,kBAAkB;AAAA,IAC3B,OAAO;AAAA;AAAA,IAEP,MAAM;AAAA;AAAA,IAEN,WAAW;AAAA;AAAA,IAEX,MAAM;AAAA;AAAA,IAEN,SAAS;AAAA;AAAA,IAET,SAAS;AAAA;AAAA,IAET,SAAS;AAAA;AAAA,IAET,SAAS;AAAA;AAAA,IAET,QAAQ;AAAA;AAAA,IAER,QAAQ;AAAA;AAAA,IAGR,aAAa;AAAA;AAAA,IAEb,WAAW;AAAA;AAAA,IAEX,aAAa;AAAA;AAAA,IAEb,YAAY;AAAA;AAAA,IAGZ,iBAAiB;AAAA,IACjB,mBAAmB;AAAA;AAAA,IAEnB,iBAAiB;AAAA;AAAA,IAEjB,mBAAmB;AAAA;AAAA,IAEnB,kBAAkB;AAAA;AAAA,EACpB;AAEO,MAAI,mBAAmB;AAAA,IAC5B,sBAAsB;AAAA,IACtB,OAAO;AAAA,IACP,sBAAsB;AAAA,IACtB,UAAU;AAAA,IACV,yBAAyB;AAAA,EAC3B;;;AC7CO,WAAS,SAAS,eAAe,OAAO;AAC7C,QAAI,CAAC,eAAe;AAClB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,MACL,OAAO,MAAM,cAAc,KAAK;AAAA,MAChC,MAAM,cAAc;AAAA,IACtB;AAAA,EACF;AACO,WAAS,oBAAoB,SAAS,YAAY;AACvD,QAAI,cAAc,WAAW,MAAM,OAAO;AAC1C,QAAI,CAAC,aAAa;AAChB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,MACL,OAAO,SAAS,YAAY,CAAC,GAAG,EAAE;AAAA,MAClC,MAAM,WAAW,MAAM,YAAY,CAAC,EAAE,MAAM;AAAA,IAC9C;AAAA,EACF;AACO,WAAS,qBAAqB,SAAS,YAAY;AACxD,QAAI,cAAc,WAAW,MAAM,OAAO;AAC1C,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;AACA,QAAII,QAAO,YAAY,CAAC,MAAM,MAAM,IAAI;AACxC,QAAI,QAAQ,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAC5D,QAAI,UAAU,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAC9D,QAAI,UAAU,YAAY,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI;AAC9D,WAAO;AAAA,MACL,OAAOA,SAAQ,QAAQ,qBAAqB,UAAU,uBAAuB,UAAU;AAAA,MACvF,MAAM,WAAW,MAAM,YAAY,CAAC,EAAE,MAAM;AAAA,IAC9C;AAAA,EACF;AACO,WAAS,qBAAqB,YAAY;AAC/C,WAAO,oBAAoB,gBAAgB,iBAAiB,UAAU;AAAA,EACxE;AACO,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;AACO,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;AACO,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;AACO,WAAS,sBAAsB,cAAc,aAAa;AAC/D,QAAI,cAAc,cAAc;AAKhC,QAAI,iBAAiB,cAAc,cAAc,IAAI;AACrD,QAAI;AACJ,QAAI,kBAAkB,IAAI;AACxB,eAAS,gBAAgB;AAAA,IAC3B,OAAO;AACL,UAAI,WAAW,iBAAiB;AAChC,UAAI,kBAAkB,KAAK,MAAM,WAAW,GAAG,IAAI;AACnD,UAAI,oBAAoB,gBAAgB,WAAW;AACnD,eAAS,eAAe,mBAAmB,oBAAoB,MAAM;AAAA,IACvE;AACA,WAAO,cAAc,SAAS,IAAI;AAAA,EACpC;AACO,WAAS,gBAAgBC,OAAM;AACpC,WAAOA,QAAO,QAAQ,KAAKA,QAAO,MAAM,KAAKA,QAAO,QAAQ;AAAA,EAC9D;;;AC/FO,MAAI,aAA0B,0BAAU,SAAS;AACtD,cAAUC,aAAY,OAAO;AAC7B,QAAI,SAAS,aAAaA,WAAU;AACpC,aAASA,cAAa;AACpB,UAAI;AACJ,sBAAgB,MAAMA,WAAU;AAChC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACvH,aAAO;AAAA,IACT;AACA,iBAAaA,aAAY,CAAC;AAAA,MACxB,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,YAAIC,iBAAgB,SAASA,eAAcC,OAAM;AAC/C,iBAAO;AAAA,YACL,MAAMA;AAAA,YACN,gBAAgB,UAAU;AAAA,UAC5B;AAAA,QACF;AACA,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,SAAS,aAAa,GAAG,UAAU,GAAGD,cAAa;AAAA,UAC5D,KAAK;AACH,mBAAO,SAASD,OAAM,cAAc,YAAY;AAAA,cAC9C,MAAM;AAAA,YACR,CAAC,GAAGC,cAAa;AAAA,UACnB;AACE,mBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAGA,cAAa;AAAA,QACzE;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,MAAM,kBAAkB,MAAM,OAAO;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASE,KAAI,MAAM,OAAO,OAAO;AACtC,YAAI,cAAc,KAAK,eAAe;AACtC,YAAI,MAAM,gBAAgB;AACxB,cAAI,yBAAyB,sBAAsB,MAAM,MAAM,WAAW;AAC1E,eAAK,eAAe,wBAAwB,GAAG,CAAC;AAChD,eAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,iBAAO;AAAA,QACT;AACA,YAAID,QAAO,EAAE,SAAS,UAAU,MAAM,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM;AACzE,aAAK,eAAeA,OAAM,GAAG,CAAC;AAC9B,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,GAAE,MAAM;;;AC7DD,MAAI,sBAAmC,0BAAU,SAAS;AAC/D,cAAUM,sBAAqB,OAAO;AACtC,QAAI,SAAS,aAAaA,oBAAmB;AAC7C,aAASA,uBAAsB;AAC7B,UAAI;AACJ,sBAAgB,MAAMA,oBAAmB;AACzC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACtI,aAAO;AAAA,IACT;AACA,iBAAaA,sBAAqB,CAAC;AAAA,MACjC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,YAAIC,iBAAgB,SAASA,eAAcC,OAAM;AAC/C,iBAAO;AAAA,YACL,MAAMA;AAAA,YACN,gBAAgB,UAAU;AAAA,UAC5B;AAAA,QACF;AACA,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,SAAS,aAAa,GAAG,UAAU,GAAGD,cAAa;AAAA,UAC5D,KAAK;AACH,mBAAO,SAASD,OAAM,cAAc,YAAY;AAAA,cAC9C,MAAM;AAAA,YACR,CAAC,GAAGC,cAAa;AAAA,UACnB;AACE,mBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAGA,cAAa;AAAA,QACzE;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,MAAM,kBAAkB,MAAM,OAAO;AAAA,MAC9C;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASE,KAAI,MAAM,OAAO,OAAO,SAAS;AAC/C,YAAI,cAAc,eAAe,MAAM,OAAO;AAC9C,YAAI,MAAM,gBAAgB;AACxB,cAAI,yBAAyB,sBAAsB,MAAM,MAAM,WAAW;AAC1E,eAAK,eAAe,wBAAwB,GAAG,QAAQ,qBAAqB;AAC5E,eAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,iBAAO,eAAe,MAAM,OAAO;AAAA,QACrC;AACA,YAAID,QAAO,EAAE,SAAS,UAAU,MAAM,QAAQ,IAAI,MAAM,OAAO,IAAI,MAAM;AACzE,aAAK,eAAeA,OAAM,GAAG,QAAQ,qBAAqB;AAC1D,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO,eAAe,MAAM,OAAO;AAAA,MACrC;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,GAAE,MAAM;;;AC1DD,MAAI,oBAAiC,0BAAU,SAAS;AAC7D,cAAUM,oBAAmB,OAAO;AACpC,QAAI,SAAS,aAAaA,kBAAiB;AAC3C,aAASA,qBAAoB;AAC3B,UAAI;AACJ,sBAAgB,MAAMA,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAChJ,aAAO;AAAA,IACT;AACA,iBAAaA,oBAAmB,CAAC;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAO;AACvC,YAAI,UAAU,KAAK;AACjB,iBAAO,mBAAmB,GAAG,UAAU;AAAA,QACzC;AACA,eAAO,mBAAmB,MAAM,QAAQ,UAAU;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,OAAO,QAAQ,OAAO;AACxC,YAAI,kBAAkB,oBAAI,KAAK,CAAC;AAChC,wBAAgB,eAAe,OAAO,GAAG,CAAC;AAC1C,wBAAgB,YAAY,GAAG,GAAG,GAAG,CAAC;AACtC,eAAO,kBAAkB,eAAe;AAAA,MAC1C;AAAA,IACF,CAAC,CAAC;AACF,WAAOF;AAAA,EACT,GAAE,MAAM;;;ACjCD,MAAI,qBAAkC,0BAAU,SAAS;AAC9D,cAAUG,qBAAoB,OAAO;AACrC,QAAI,SAAS,aAAaA,mBAAkB;AAC5C,aAASA,sBAAqB;AAC5B,UAAI;AACJ,sBAAgB,MAAMA,mBAAkB;AACxC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC5H,aAAO;AAAA,IACT;AACA,iBAAaA,qBAAoB,CAAC;AAAA,MAChC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAO;AACvC,YAAI,UAAU,KAAK;AACjB,iBAAO,mBAAmB,GAAG,UAAU;AAAA,QACzC;AACA,eAAO,mBAAmB,MAAM,QAAQ,UAAU;AAAA,MACpD;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,eAAe,OAAO,GAAG,CAAC;AAC/B,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOF;AAAA,EACT,GAAE,MAAM;;;AC/BD,MAAI,gBAA6B,0BAAU,SAAS;AACzD,cAAUG,gBAAe,OAAO;AAChC,QAAI,SAAS,aAAaA,cAAa;AACvC,aAASA,iBAAgB;AACvB,UAAI;AACJ,sBAAgB,MAAMA,cAAa;AACnC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC3I,aAAO;AAAA,IACT;AACA,iBAAaA,gBAAe,CAAC;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AAAA,UACL,KAAK;AAEH,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA;AAAA,UAE9C,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,QAAQ,YAAY;AAAA,cAC/B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,cAC9B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,QAAQ,YAAY;AAAA,cAC/B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,QAAQ,YAAY;AAAA,cAC/B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,cAC9B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,cAC9B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,aAAa,QAAQ,KAAK,GAAG,CAAC;AACnC,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;ACxED,MAAI,0BAAuC,0BAAU,SAAS;AACnE,cAAUI,0BAAyB,OAAO;AAC1C,QAAI,SAAS,aAAaA,wBAAuB;AACjD,aAASA,2BAA0B;AACjC,UAAI;AACJ,sBAAgB,MAAMA,wBAAuB;AAC7C,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC3I,aAAO;AAAA,IACT;AACA,iBAAaA,0BAAyB,CAAC;AAAA,MACrC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AAAA,UACL,KAAK;AAEH,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA;AAAA,UAE9C,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,QAAQ,YAAY;AAAA,cAC/B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,cAC9B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,QAAQ,YAAY;AAAA,cAC/B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,QAAQ,YAAY;AAAA,cAC/B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,cAC9B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,QAAQ,YAAY;AAAA,cAC9B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,aAAa,QAAQ,KAAK,GAAG,CAAC;AACnC,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;ACvED,MAAI,cAA2B,0BAAU,SAAS;AACvD,cAAUI,cAAa,OAAO;AAC9B,QAAI,SAAS,aAAaA,YAAW;AACrC,aAASA,eAAc;AACrB,UAAI;AACJ,sBAAgB,MAAMA,YAAW;AACjC,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,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACtI,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,aAAO;AAAA,IACT;AACA,iBAAaA,cAAa,CAAC;AAAA,MACzB,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,YAAIC,iBAAgB,SAASA,eAAc,OAAO;AAChD,iBAAO,QAAQ;AAAA,QACjB;AACA,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AACH,mBAAO,SAAS,oBAAoB,gBAAgB,OAAO,UAAU,GAAGA,cAAa;AAAA;AAAA,UAEvF,KAAK;AACH,mBAAO,SAAS,aAAa,GAAG,UAAU,GAAGA,cAAa;AAAA;AAAA,UAE5D,KAAK;AACH,mBAAO,SAASD,OAAM,cAAc,YAAY;AAAA,cAC9C,MAAM;AAAA,YACR,CAAC,GAAGC,cAAa;AAAA;AAAA,UAEnB,KAAK;AACH,mBAAOD,OAAM,MAAM,YAAY;AAAA,cAC7B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,cAC5B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,MAAM,YAAY;AAAA,cAC7B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,MAAM,YAAY;AAAA,cAC7B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,cAC5B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,cAC5B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASE,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,YAAY,OAAO,CAAC;AACzB,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,GAAE,MAAM;;;AC5ED,MAAI,wBAAqC,0BAAU,SAAS;AACjE,cAAUK,wBAAuB,OAAO;AACxC,QAAI,SAAS,aAAaA,sBAAqB;AAC/C,aAASA,yBAAwB;AAC/B,UAAI;AACJ,sBAAgB,MAAMA,sBAAqB;AAC3C,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACtI,aAAO;AAAA,IACT;AACA,iBAAaA,wBAAuB,CAAC;AAAA,MACnC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,YAAIC,iBAAgB,SAASA,eAAc,OAAO;AAChD,iBAAO,QAAQ;AAAA,QACjB;AACA,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AACH,mBAAO,SAAS,oBAAoB,gBAAgB,OAAO,UAAU,GAAGA,cAAa;AAAA;AAAA,UAEvF,KAAK;AACH,mBAAO,SAAS,aAAa,GAAG,UAAU,GAAGA,cAAa;AAAA;AAAA,UAE5D,KAAK;AACH,mBAAO,SAASD,OAAM,cAAc,YAAY;AAAA,cAC9C,MAAM;AAAA,YACR,CAAC,GAAGC,cAAa;AAAA;AAAA,UAEnB,KAAK;AACH,mBAAOD,OAAM,MAAM,YAAY;AAAA,cAC7B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,cAC5B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,MAAM,YAAY;AAAA,cAC7B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,MAAM,YAAY;AAAA,cAC7B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,cAC5B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,MAAM,YAAY;AAAA,cAC5B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASE,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,YAAY,OAAO,CAAC;AACzB,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,GAAE,MAAM;;;ACjFO,WAAR,WAA4B,WAAW,WAAW,SAAS;AAChE,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOK,QAAO,SAAS;AAC3B,QAAIC,QAAO,UAAU,SAAS;AAC9B,QAAI,OAAO,WAAW,MAAM,OAAO,IAAIA;AACvC,SAAK,WAAW,KAAK,WAAW,IAAI,OAAO,CAAC;AAC5C,WAAO;AAAA,EACT;;;ACAO,MAAI,kBAA+B,0BAAU,SAAS;AAC3D,cAAUC,kBAAiB,OAAO;AAClC,QAAI,SAAS,aAAaA,gBAAe;AACzC,aAASA,mBAAkB;AACzB,UAAI;AACJ,sBAAgB,MAAMA,gBAAe;AACrC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACtI,aAAO;AAAA,IACT;AACA,iBAAaA,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,MAAM,UAAU;AAAA,UAC7D,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO,SAAS;AAChD,eAAO,eAAe,WAAW,MAAM,OAAO,OAAO,GAAG,OAAO;AAAA,MACjE;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AC/CO,WAAR,cAA+B,WAAW,cAAc;AAC7D,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOI,QAAO,SAAS;AAC3B,QAAI,UAAU,UAAU,YAAY;AACpC,QAAI,OAAO,cAAc,IAAI,IAAI;AACjC,SAAK,WAAW,KAAK,WAAW,IAAI,OAAO,CAAC;AAC5C,WAAO;AAAA,EACT;;;ACAO,MAAI,gBAA6B,0BAAU,SAAS;AACzD,cAAUC,gBAAe,OAAO;AAChC,QAAI,SAAS,aAAaA,cAAa;AACvC,aAASA,iBAAgB;AACvB,UAAI;AACJ,sBAAgB,MAAMA,cAAa;AACnC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,GAAG;AAC9D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC3I,aAAO;AAAA,IACT;AACA,iBAAaA,gBAAe,CAAC;AAAA,MAC3B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,MAAM,UAAU;AAAA,UAC7D,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,eAAO,kBAAkB,cAAc,MAAM,KAAK,CAAC;AAAA,MACrD;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AC1CR,MAAI,gBAAgB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACnE,MAAI,0BAA0B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAGtE,MAAI,aAA0B,0BAAU,SAAS;AACtD,cAAUI,aAAY,OAAO;AAC7B,QAAI,SAAS,aAAaA,WAAU;AACpC,aAASA,cAAa;AACpB,UAAI;AACJ,sBAAgB,MAAMA,WAAU;AAChC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,eAAe,CAAC;AAC/D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACjI,aAAO;AAAA,IACT;AACA,iBAAaA,aAAY,CAAC;AAAA,MACxB,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,MAAM,UAAU;AAAA,UAC7D,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,MAAM,OAAO;AACpC,YAAIC,QAAO,KAAK,eAAe;AAC/B,YAAI,aAAa,gBAAgBA,KAAI;AACrC,YAAIC,SAAQ,KAAK,YAAY;AAC7B,YAAI,YAAY;AACd,iBAAO,SAAS,KAAK,SAAS,wBAAwBA,MAAK;AAAA,QAC7D,OAAO;AACL,iBAAO,SAAS,KAAK,SAAS,cAAcA,MAAK;AAAA,QACnD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,WAAW,KAAK;AACrB,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOL;AAAA,EACT,GAAE,MAAM;;;ACtDD,MAAI,kBAA+B,0BAAU,SAAS;AAC3D,cAAUM,kBAAiB,OAAO;AAClC,QAAI,SAAS,aAAaA,gBAAe;AACzC,aAASA,mBAAkB;AACzB,UAAI;AACJ,sBAAgB,MAAMA,gBAAe;AACrC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,eAAe,CAAC;AAC/D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAChJ,aAAO;AAAA,IACT;AACA,iBAAaA,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,WAAW,UAAU;AAAA,UAClE,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,MAAM,OAAO;AACpC,YAAIC,QAAO,KAAK,eAAe;AAC/B,YAAI,aAAa,gBAAgBA,KAAI;AACrC,YAAI,YAAY;AACd,iBAAO,SAAS,KAAK,SAAS;AAAA,QAChC,OAAO;AACL,iBAAO,SAAS,KAAK,SAAS;AAAA,QAChC;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,YAAY,GAAG,KAAK;AACzB,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,GAAE,MAAM;;;ACvDO,WAAR,UAA2B,WAAW,UAAU,SAAS;AAC9D,QAAI,MAAM,OAAO,OAAO,uBAAuB,iBAAiB,uBAAuB,uBAAuB;AAC9G,iBAAa,GAAG,SAAS;AACzB,QAAIK,kBAAiB,kBAAkB;AACvC,QAAI,eAAe,WAAW,QAAQ,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,kBAAkB,QAAQ,YAAY,QAAQ,oBAAoB,SAAS,UAAU,wBAAwB,gBAAgB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQ,UAAU,SAAS,QAAQA,gBAAe,kBAAkB,QAAQ,UAAU,SAAS,SAAS,wBAAwBA,gBAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQ,SAAS,SAAS,OAAO,CAAC;AAGp4B,QAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,YAAM,IAAI,WAAW,kDAAkD;AAAA,IACzE;AACA,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAIC,OAAM,UAAU,QAAQ;AAC5B,QAAI,aAAa,KAAK,UAAU;AAChC,QAAI,YAAYA,OAAM;AACtB,QAAI,YAAY,YAAY,KAAK;AACjC,QAAI,QAAQ,WAAW,eAAe,IAAI,KAAKA,OAAM;AACrD,SAAK,WAAW,KAAK,WAAW,IAAI,IAAI;AACxC,WAAO;AAAA,EACT;;;ACdO,MAAI,YAAyB,0BAAU,SAAS;AACrD,cAAUC,YAAW,OAAO;AAC5B,QAAI,SAAS,aAAaA,UAAS;AACnC,aAASA,aAAY;AACnB,UAAI;AACJ,sBAAgB,MAAMA,UAAS;AAC/B,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACnG,aAAO;AAAA,IACT;AACA,iBAAaA,YAAW,CAAC;AAAA,MACvB,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO,SAAS;AAChD,eAAO,UAAU,MAAM,OAAO,OAAO;AACrC,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AC9ED,MAAI,iBAA8B,0BAAU,SAAS;AAC1D,cAAUI,iBAAgB,OAAO;AACjC,QAAI,SAAS,aAAaA,eAAc;AACxC,aAASA,kBAAiB;AACxB,UAAI;AACJ,sBAAgB,MAAMA,eAAc;AACpC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAChJ,aAAO;AAAA,IACT;AACA,iBAAaA,iBAAgB,CAAC;AAAA,MAC5B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO,SAAS;AACvD,YAAIC,iBAAgB,SAASA,eAAc,OAAO;AAChD,cAAI,gBAAgB,KAAK,OAAO,QAAQ,KAAK,CAAC,IAAI;AAClD,kBAAQ,QAAQ,QAAQ,eAAe,KAAK,IAAI;AAAA,QAClD;AACA,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AAAA,UACL,KAAK;AAEH,mBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAGA,cAAa;AAAA;AAAA,UAEvE,KAAK;AACH,mBAAO,SAASD,OAAM,cAAc,YAAY;AAAA,cAC9C,MAAM;AAAA,YACR,CAAC,GAAGC,cAAa;AAAA;AAAA,UAEnB,KAAK;AACH,mBAAOD,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASE,KAAI,MAAM,QAAQ,OAAO,SAAS;AAChD,eAAO,UAAU,MAAM,OAAO,OAAO;AACrC,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,GAAE,MAAM;;;AC3FD,MAAI,2BAAwC,0BAAU,SAAS;AACpE,cAAUK,2BAA0B,OAAO;AAC3C,QAAI,SAAS,aAAaA,yBAAwB;AAClD,aAASA,4BAA2B;AAClC,UAAI;AACJ,sBAAgB,MAAMA,yBAAwB;AAC9C,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAChJ,aAAO;AAAA,IACT;AACA,iBAAaA,2BAA0B,CAAC;AAAA,MACtC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO,SAAS;AACvD,YAAIC,iBAAgB,SAASA,eAAc,OAAO;AAChD,cAAI,gBAAgB,KAAK,OAAO,QAAQ,KAAK,CAAC,IAAI;AAClD,kBAAQ,QAAQ,QAAQ,eAAe,KAAK,IAAI;AAAA,QAClD;AACA,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AAAA,UACL,KAAK;AAEH,mBAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAGA,cAAa;AAAA;AAAA,UAEvE,KAAK;AACH,mBAAO,SAASD,OAAM,cAAc,YAAY;AAAA,cAC9C,MAAM;AAAA,YACR,CAAC,GAAGC,cAAa;AAAA;AAAA,UAEnB,KAAK;AACH,mBAAOD,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA;AAAA,UAEH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,IAAI,YAAY;AAAA,cAC3B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASE,KAAI,MAAM,QAAQ,OAAO,SAAS;AAChD,eAAO,UAAU,MAAM,OAAO,OAAO;AACrC,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,GAAE,MAAM;;;ACjGO,WAAR,aAA8B,WAAW,UAAU;AACxD,iBAAa,GAAG,SAAS;AACzB,QAAIK,OAAM,UAAU,QAAQ;AAC5B,QAAIA,OAAM,MAAM,GAAG;AACjB,MAAAA,OAAMA,OAAM;AAAA,IACd;AACA,QAAI,eAAe;AACnB,QAAI,OAAOC,QAAO,SAAS;AAC3B,QAAI,aAAa,KAAK,UAAU;AAChC,QAAI,YAAYD,OAAM;AACtB,QAAI,YAAY,YAAY,KAAK;AACjC,QAAI,QAAQ,WAAW,eAAe,IAAI,KAAKA,OAAM;AACrD,SAAK,WAAW,KAAK,WAAW,IAAI,IAAI;AACxC,WAAO;AAAA,EACT;;;ACRO,MAAI,eAA4B,0BAAU,SAAS;AACxD,cAAUE,eAAc,OAAO;AAC/B,QAAI,SAAS,aAAaA,aAAY;AACtC,aAASA,gBAAe;AACtB,UAAI;AACJ,sBAAgB,MAAMA,aAAY;AAClC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAChJ,aAAO;AAAA,IACT;AACA,iBAAaA,eAAc,CAAC;AAAA,MAC1B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,YAAIC,iBAAgB,SAASA,eAAc,OAAO;AAChD,cAAI,UAAU,GAAG;AACf,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,gBAAQ,OAAO;AAAA;AAAA,UAEb,KAAK;AAAA,UACL,KAAK;AAEH,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA;AAAA,UAE9C,KAAK;AACH,mBAAOD,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA;AAAA,UAEH,KAAK;AACH,mBAAO,SAASA,OAAM,IAAI,YAAY;AAAA,cACpC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,GAAGC,cAAa;AAAA;AAAA,UAEnB,KAAK;AACH,mBAAO,SAASD,OAAM,IAAI,YAAY;AAAA,cACpC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,GAAGC,cAAa;AAAA;AAAA,UAEnB,KAAK;AACH,mBAAO,SAASD,OAAM,IAAI,YAAY;AAAA,cACpC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,GAAGC,cAAa;AAAA;AAAA,UAEnB,KAAK;AAAA,UACL;AACE,mBAAO,SAASD,OAAM,IAAI,YAAY;AAAA,cACpC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,IAAI,YAAY;AAAA,cAC1B,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,GAAGC,cAAa;AAAA,QACrB;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,eAAO,aAAa,MAAM,KAAK;AAC/B,aAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOJ;AAAA,EACT,GAAE,MAAM;;;AC9FD,MAAI,aAA0B,0BAAU,SAAS;AACtD,cAAUK,aAAY,OAAO;AAC7B,QAAI,SAAS,aAAaA,WAAU;AACpC,aAASA,cAAa;AACpB,UAAI;AACJ,sBAAgB,MAAMA,WAAU;AAChC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACnG,aAAO;AAAA,IACT;AACA,iBAAaA,aAAY,CAAC;AAAA,MACxB,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,UACH,KAAK;AACH,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,UACH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,YAAY,qBAAqB,KAAK,GAAG,GAAG,GAAG,CAAC;AACrD,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;ACvDD,MAAI,qBAAkC,0BAAU,SAAS;AAC9D,cAAUI,qBAAoB,OAAO;AACrC,QAAI,SAAS,aAAaA,mBAAkB;AAC5C,aAASA,sBAAqB;AAC5B,UAAI;AACJ,sBAAgB,MAAMA,mBAAkB;AACxC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACnG,aAAO;AAAA,IACT;AACA,iBAAaA,qBAAoB,CAAC;AAAA,MAChC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,UACH,KAAK;AACH,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,UACH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,YAAY,qBAAqB,KAAK,GAAG,GAAG,GAAG,CAAC;AACrD,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;ACvDD,MAAI,kBAA+B,0BAAU,SAAS;AAC3D,cAAUI,kBAAiB,OAAO;AAClC,QAAI,SAAS,aAAaA,gBAAe;AACzC,aAASA,mBAAkB;AACzB,UAAI;AACJ,sBAAgB,MAAMA,gBAAe;AACrC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AACzF,aAAO;AAAA,IACT;AACA,iBAAaA,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,UACH,KAAK;AACH,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,UACH,KAAK;AAAA,UACL;AACE,mBAAOA,OAAM,UAAU,YAAY;AAAA,cACjC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC,KAAKA,OAAM,UAAU,YAAY;AAAA,cAChC,OAAO;AAAA,cACP,SAAS;AAAA,YACX,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,YAAY,qBAAqB,KAAK,GAAG,GAAG,GAAG,CAAC;AACrD,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;ACtDD,MAAI,kBAA+B,0BAAU,SAAS;AAC3D,cAAUI,kBAAiB,OAAO;AAClC,QAAI,SAAS,aAAaA,gBAAe;AACzC,aAASA,mBAAkB;AACzB,UAAI;AACJ,sBAAgB,MAAMA,gBAAe;AACrC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC9F,aAAO;AAAA,IACT;AACA,iBAAaA,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,SAAS,UAAU;AAAA,UAChE,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,YAAI,OAAO,KAAK,YAAY,KAAK;AACjC,YAAI,QAAQ,QAAQ,IAAI;AACtB,eAAK,YAAY,QAAQ,IAAI,GAAG,GAAG,CAAC;AAAA,QACtC,WAAW,CAAC,QAAQ,UAAU,IAAI;AAChC,eAAK,YAAY,GAAG,GAAG,GAAG,CAAC;AAAA,QAC7B,OAAO;AACL,eAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAAA,QACjC;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AChDD,MAAI,kBAA+B,0BAAU,SAAS;AAC3D,cAAUI,kBAAiB,OAAO;AAClC,QAAI,SAAS,aAAaA,gBAAe;AACzC,aAASA,mBAAkB;AACzB,UAAI;AACJ,sBAAgB,MAAMA,gBAAe;AACrC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACxG,aAAO;AAAA,IACT;AACA,iBAAaA,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,SAAS,UAAU;AAAA,UAChE,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAC/B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;ACzCD,MAAI,kBAA+B,0BAAU,SAAS;AAC3D,cAAUI,kBAAiB,OAAO;AAClC,QAAI,SAAS,aAAaA,gBAAe;AACzC,aAASA,mBAAkB;AACzB,UAAI;AACJ,sBAAgB,MAAMA,gBAAe;AACrC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC9F,aAAO;AAAA,IACT;AACA,iBAAaA,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,SAAS,UAAU;AAAA,UAChE,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,YAAI,OAAO,KAAK,YAAY,KAAK;AACjC,YAAI,QAAQ,QAAQ,IAAI;AACtB,eAAK,YAAY,QAAQ,IAAI,GAAG,GAAG,CAAC;AAAA,QACtC,OAAO;AACL,eAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAAA,QACjC;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AC9CD,MAAI,kBAA+B,0BAAU,SAAS;AAC3D,cAAUI,kBAAiB,OAAO;AAClC,QAAI,SAAS,aAAaA,gBAAe;AACzC,aAASA,mBAAkB;AACzB,UAAI;AACJ,sBAAgB,MAAMA,gBAAe;AACrC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACxG,aAAO;AAAA,IACT;AACA,iBAAaA,kBAAiB,CAAC;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,SAAS,UAAU;AAAA,UAChE,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,YAAI,QAAQ,SAAS,KAAK,QAAQ,KAAK;AACvC,aAAK,YAAY,OAAO,GAAG,GAAG,CAAC;AAC/B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AC1CD,MAAI,eAA4B,0BAAU,SAAS;AACxD,cAAUI,eAAc,OAAO;AAC/B,QAAI,SAAS,aAAaA,aAAY;AACtC,aAASA,gBAAe;AACtB,UAAI;AACJ,sBAAgB,MAAMA,aAAY;AAClC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,GAAG,CAAC;AAC/E,aAAO;AAAA,IACT;AACA,iBAAaA,eAAc,CAAC;AAAA,MAC1B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,QAAQ,UAAU;AAAA,UAC/D,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,cAAc,OAAO,GAAG,CAAC;AAC9B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;ACzCD,MAAI,eAA4B,0BAAU,SAAS;AACxD,cAAUI,eAAc,OAAO;AAC/B,QAAI,SAAS,aAAaA,aAAY;AACtC,aAASA,gBAAe;AACtB,UAAI;AACJ,sBAAgB,MAAMA,aAAY;AAClC,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,GAAG,CAAC;AAC/E,aAAO;AAAA,IACT;AACA,iBAAaA,eAAc,CAAC;AAAA,MAC1B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAOC,QAAO;AAC9C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,oBAAoB,gBAAgB,QAAQ,UAAU;AAAA,UAC/D,KAAK;AACH,mBAAOA,OAAM,cAAc,YAAY;AAAA,cACrC,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AACE,mBAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,QAChD;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAAS,SAAS,OAAO,OAAO;AACrC,eAAO,SAAS,KAAK,SAAS;AAAA,MAChC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,cAAc,OAAO,CAAC;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AC1CD,MAAI,yBAAsC,0BAAU,SAAS;AAClE,cAAUI,yBAAwB,OAAO;AACzC,QAAI,SAAS,aAAaA,uBAAsB;AAChD,aAASA,0BAAyB;AAChC,UAAI;AACJ,sBAAgB,MAAMA,uBAAsB;AAC5C,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,GAAG,CAAC;AAC/E,aAAO;AAAA,IACT;AACA,iBAAaA,yBAAwB,CAAC;AAAA,MACpC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAO;AACvC,YAAIC,iBAAgB,SAASA,eAAc,OAAO;AAChD,iBAAO,KAAK,MAAM,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;AAAA,QAC3D;AACA,eAAO,SAAS,aAAa,MAAM,QAAQ,UAAU,GAAGA,cAAa;AAAA,MACvE;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,QAAQ,OAAO;AACvC,aAAK,mBAAmB,KAAK;AAC7B,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AACF,WAAOH;AAAA,EACT,GAAE,MAAM;;;AC7BD,MAAI,yBAAsC,0BAAU,SAAS;AAClE,cAAUI,yBAAwB,OAAO;AACzC,QAAI,SAAS,aAAaA,uBAAsB;AAChD,aAASA,0BAAyB;AAChC,UAAI;AACJ,sBAAgB,MAAMA,uBAAsB;AAC5C,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,GAAG,CAAC;AACpF,aAAO;AAAA,IACT;AACA,iBAAaA,yBAAwB,CAAC;AAAA,MACpC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAO;AACvC,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,qBAAqB,iBAAiB,sBAAsB,UAAU;AAAA,UAC/E,KAAK;AACH,mBAAO,qBAAqB,iBAAiB,OAAO,UAAU;AAAA,UAChE,KAAK;AACH,mBAAO,qBAAqB,iBAAiB,sBAAsB,UAAU;AAAA,UAC/E,KAAK;AACH,mBAAO,qBAAqB,iBAAiB,yBAAyB,UAAU;AAAA,UAClF,KAAK;AAAA,UACL;AACE,mBAAO,qBAAqB,iBAAiB,UAAU,UAAU;AAAA,QACrE;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,OAAO,OAAO;AACtC,YAAI,MAAM,gBAAgB;AACxB,iBAAO;AAAA,QACT;AACA,eAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK;AAAA,MACxC;AAAA,IACF,CAAC,CAAC;AACF,WAAOF;AAAA,EACT,GAAE,MAAM;;;ACzCD,MAAI,oBAAiC,0BAAU,SAAS;AAC7D,cAAUG,oBAAmB,OAAO;AACpC,QAAI,SAAS,aAAaA,kBAAiB;AAC3C,aAASA,qBAAoB;AAC3B,UAAI;AACJ,sBAAgB,MAAMA,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,CAAC,KAAK,KAAK,GAAG,CAAC;AACpF,aAAO;AAAA,IACT;AACA,iBAAaA,oBAAmB,CAAC;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY,OAAO;AACvC,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,qBAAqB,iBAAiB,sBAAsB,UAAU;AAAA,UAC/E,KAAK;AACH,mBAAO,qBAAqB,iBAAiB,OAAO,UAAU;AAAA,UAChE,KAAK;AACH,mBAAO,qBAAqB,iBAAiB,sBAAsB,UAAU;AAAA,UAC/E,KAAK;AACH,mBAAO,qBAAqB,iBAAiB,yBAAyB,UAAU;AAAA,UAClF,KAAK;AAAA,UACL;AACE,mBAAO,qBAAqB,iBAAiB,UAAU,UAAU;AAAA,QACrE;AAAA,MACF;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,MAAM,OAAO,OAAO;AACtC,YAAI,MAAM,gBAAgB;AACxB,iBAAO;AAAA,QACT;AACA,eAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK;AAAA,MACxC;AAAA,IACF,CAAC,CAAC;AACF,WAAOF;AAAA,EACT,GAAE,MAAM;;;AC1CD,MAAI,yBAAsC,0BAAU,SAAS;AAClE,cAAUG,yBAAwB,OAAO;AACzC,QAAI,SAAS,aAAaA,uBAAsB;AAChD,aAASA,0BAAyB;AAChC,UAAI;AACJ,sBAAgB,MAAMA,uBAAsB;AAC5C,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,GAAG;AACxE,aAAO;AAAA,IACT;AACA,iBAAaA,yBAAwB,CAAC;AAAA,MACpC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY;AAChC,eAAO,qBAAqB,UAAU;AAAA,MACxC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,OAAO,QAAQ,OAAO;AACxC,eAAO,CAAC,IAAI,KAAK,QAAQ,GAAI,GAAG;AAAA,UAC9B,gBAAgB;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF,CAAC,CAAC;AACF,WAAOF;AAAA,EACT,GAAE,MAAM;;;AC5BD,MAAI,8BAA2C,0BAAU,SAAS;AACvE,cAAUG,8BAA6B,OAAO;AAC9C,QAAI,SAAS,aAAaA,4BAA2B;AACrD,aAASA,+BAA8B;AACrC,UAAI;AACJ,sBAAgB,MAAMA,4BAA2B;AACjD,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,sBAAgB,uBAAuB,KAAK,GAAG,YAAY,EAAE;AAC7D,sBAAgB,uBAAuB,KAAK,GAAG,sBAAsB,GAAG;AACxE,aAAO;AAAA,IACT;AACA,iBAAaA,8BAA6B,CAAC;AAAA,MACzC,KAAK;AAAA,MACL,OAAO,SAASC,OAAM,YAAY;AAChC,eAAO,qBAAqB,UAAU;AAAA,MACxC;AAAA,IACF,GAAG;AAAA,MACD,KAAK;AAAA,MACL,OAAO,SAASC,KAAI,OAAO,QAAQ,OAAO;AACxC,eAAO,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,UACvB,gBAAgB;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF,CAAC,CAAC;AACF,WAAOF;AAAA,EACT,GAAE,MAAM;;;ACsCD,MAAI,UAAU;AAAA,IACnB,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;;;AClFA,MAAIG,0BAAyB;AAI7B,MAAIC,8BAA6B;AACjC,MAAIC,uBAAsB;AAC1B,MAAIC,qBAAoB;AACxB,MAAI,sBAAsB;AAC1B,MAAIC,iCAAgC;AA+SrB,WAARC,OAAuB,iBAAiB,mBAAmB,oBAAoB,SAAS;AAC7F,QAAI,MAAM,iBAAiB,OAAO,OAAO,OAAO,uBAAuB,kBAAkB,uBAAuB,uBAAuB,wBAAwB,OAAO,OAAO,OAAO,uBAAuB,kBAAkB,uBAAuB,wBAAwB;AAC5Q,iBAAa,GAAG,SAAS;AACzB,QAAI,aAAa,OAAO,eAAe;AACvC,QAAI,eAAe,OAAO,iBAAiB;AAC3C,QAAIC,kBAAiB,kBAAkB;AACvC,QAAIC,WAAU,QAAQ,kBAAkB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,YAAY,QAAQ,oBAAoB,SAAS,kBAAkBD,gBAAe,YAAY,QAAQ,SAAS,SAAS,OAAO;AACjO,QAAI,CAACC,QAAO,OAAO;AACjB,YAAM,IAAI,WAAW,oCAAoC;AAAA,IAC3D;AACA,QAAI,wBAAwB,WAAW,SAAS,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,2BAA2B,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,mBAAmB,QAAQ,YAAY,QAAQ,qBAAqB,SAAS,UAAU,wBAAwB,iBAAiB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,2BAA2B,QAAQ,UAAU,SAAS,QAAQD,gBAAe,2BAA2B,QAAQ,UAAU,SAAS,SAAS,wBAAwBA,gBAAe,YAAY,QAAQ,0BAA0B,SAAS,UAAU,yBAAyB,sBAAsB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,2BAA2B,QAAQ,UAAU,SAAS,QAAQ,CAAC;AAGv7B,QAAI,EAAE,yBAAyB,KAAK,yBAAyB,IAAI;AAC/D,YAAM,IAAI,WAAW,2DAA2D;AAAA,IAClF;AACA,QAAI,eAAe,WAAW,SAAS,SAAS,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,kBAAkB,QAAQ,0BAA0B,SAAS,wBAAwB,YAAY,QAAQ,YAAY,SAAS,UAAU,mBAAmB,QAAQ,YAAY,QAAQ,qBAAqB,SAAS,UAAU,wBAAwB,iBAAiB,aAAa,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,kBAAkB,QAAQ,UAAU,SAAS,QAAQA,gBAAe,kBAAkB,QAAQ,UAAU,SAAS,SAAS,yBAAyBA,gBAAe,YAAY,QAAQ,2BAA2B,SAAS,UAAU,yBAAyB,uBAAuB,aAAa,QAAQ,2BAA2B,SAAS,SAAS,uBAAuB,kBAAkB,QAAQ,UAAU,SAAS,QAAQ,CAAC;AAG74B,QAAI,EAAE,gBAAgB,KAAK,gBAAgB,IAAI;AAC7C,YAAM,IAAI,WAAW,kDAAkD;AAAA,IACzE;AACA,QAAI,iBAAiB,IAAI;AACvB,UAAI,eAAe,IAAI;AACrB,eAAOE,QAAO,kBAAkB;AAAA,MAClC,OAAO;AACL,eAAO,oBAAI,KAAK,GAAG;AAAA,MACrB;AAAA,IACF;AACA,QAAI,eAAe;AAAA,MACjB;AAAA,MACA;AAAA,MACA,QAAQD;AAAA,IACV;AAGA,QAAI,UAAU,CAAC,IAAI,2BAA2B,CAAC;AAC/C,QAAI,SAAS,aAAa,MAAMN,2BAA0B,EAAE,IAAI,SAAU,WAAW;AACnF,UAAI,iBAAiB,UAAU,CAAC;AAChC,UAAI,kBAAkB,wBAAgB;AACpC,YAAI,gBAAgB,uBAAe,cAAc;AACjD,eAAO,cAAc,WAAWM,QAAO,UAAU;AAAA,MACnD;AACA,aAAO;AAAA,IACT,CAAC,EAAE,KAAK,EAAE,EAAE,MAAMP,uBAAsB;AACxC,QAAI,aAAa,CAAC;AAClB,QAAI,YAAY,2BAA2B,MAAM,GAC/C;AACF,QAAI;AACF,UAAI,QAAQ,SAASS,SAAQ;AAC3B,YAAI,QAAQ,MAAM;AAClB,YAAI,EAAE,YAAY,QAAQ,YAAY,UAAU,QAAQ,gCAAgC,yBAAyB,KAAK,GAAG;AACvH,8BAAoB,OAAO,cAAc,eAAe;AAAA,QAC1D;AACA,YAAI,EAAE,YAAY,QAAQ,YAAY,UAAU,QAAQ,iCAAiC,0BAA0B,KAAK,GAAG;AACzH,8BAAoB,OAAO,cAAc,eAAe;AAAA,QAC1D;AACA,YAAI,iBAAiB,MAAM,CAAC;AAC5B,YAAI,SAAS,QAAQ,cAAc;AACnC,YAAI,QAAQ;AACV,cAAI,qBAAqB,OAAO;AAChC,cAAI,MAAM,QAAQ,kBAAkB,GAAG;AACrC,gBAAI,oBAAoB,WAAW,KAAK,SAAU,WAAW;AAC3D,qBAAO,mBAAmB,SAAS,UAAU,KAAK,KAAK,UAAU,UAAU;AAAA,YAC7E,CAAC;AACD,gBAAI,mBAAmB;AACrB,oBAAM,IAAI,WAAW,sCAAsC,OAAO,kBAAkB,WAAW,SAAS,EAAE,OAAO,OAAO,oBAAoB,CAAC;AAAA,YAC/I;AAAA,UACF,WAAW,OAAO,uBAAuB,OAAO,WAAW,SAAS,GAAG;AACrE,kBAAM,IAAI,WAAW,sCAAsC,OAAO,OAAO,wCAAwC,CAAC;AAAA,UACpH;AACA,qBAAW,KAAK;AAAA,YACd,OAAO;AAAA,YACP,WAAW;AAAA,UACb,CAAC;AACD,cAAI,cAAc,OAAO,IAAI,YAAY,OAAOF,QAAO,OAAO,YAAY;AAC1E,cAAI,CAAC,aAAa;AAChB,mBAAO;AAAA,cACL,GAAG,oBAAI,KAAK,GAAG;AAAA,YACjB;AAAA,UACF;AACA,kBAAQ,KAAK,YAAY,MAAM;AAC/B,uBAAa,YAAY;AAAA,QAC3B,OAAO;AACL,cAAI,eAAe,MAAMH,8BAA6B,GAAG;AACvD,kBAAM,IAAI,WAAW,mEAAmE,iBAAiB,GAAG;AAAA,UAC9G;AAGA,cAAI,UAAU,MAAM;AAClB,oBAAQ;AAAA,UACV,WAAW,mBAAmB,KAAK;AACjC,oBAAQM,oBAAmB,KAAK;AAAA,UAClC;AAGA,cAAI,WAAW,QAAQ,KAAK,MAAM,GAAG;AACnC,yBAAa,WAAW,MAAM,MAAM,MAAM;AAAA,UAC5C,OAAO;AACL,mBAAO;AAAA,cACL,GAAG,oBAAI,KAAK,GAAG;AAAA,YACjB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,WAAK,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,EAAE,GAAG,QAAO;AAClD,YAAI,OAAO,MAAM;AACjB,YAAI,QAAQ,IAAI,MAAM,SAAU,QAAO,KAAK;AAAA,MAC9C;AAAA,IAGF,SAAS,KAAK;AACZ,gBAAU,EAAE,GAAG;AAAA,IACjB,UAAE;AACA,gBAAU,EAAE;AAAA,IACd;AACA,QAAI,WAAW,SAAS,KAAK,oBAAoB,KAAK,UAAU,GAAG;AACjE,aAAO,oBAAI,KAAK,GAAG;AAAA,IACrB;AACA,QAAI,wBAAwB,QAAQ,IAAI,SAAUC,SAAQ;AACxD,aAAOA,QAAO;AAAA,IAChB,CAAC,EAAE,KAAK,SAAUC,IAAGC,IAAG;AACtB,aAAOA,KAAID;AAAA,IACb,CAAC,EAAE,OAAO,SAAU,UAAUE,QAAO,OAAO;AAC1C,aAAO,MAAM,QAAQ,QAAQ,MAAMA;AAAA,IACrC,CAAC,EAAE,IAAI,SAAU,UAAU;AACzB,aAAO,QAAQ,OAAO,SAAUH,SAAQ;AACtC,eAAOA,QAAO,aAAa;AAAA,MAC7B,CAAC,EAAE,KAAK,SAAUC,IAAGC,IAAG;AACtB,eAAOA,GAAE,cAAcD,GAAE;AAAA,MAC3B,CAAC;AAAA,IACH,CAAC,EAAE,IAAI,SAAU,aAAa;AAC5B,aAAO,YAAY,CAAC;AAAA,IACtB,CAAC;AACD,QAAI,OAAOJ,QAAO,kBAAkB;AACpC,QAAI,MAAM,KAAK,QAAQ,CAAC,GAAG;AACzB,aAAO,oBAAI,KAAK,GAAG;AAAA,IACrB;AAGA,QAAI,UAAU,gBAAgB,MAAM,gCAAgC,IAAI,CAAC;AACzE,QAAI,QAAQ,CAAC;AACb,QAAI,aAAa,2BAA2B,qBAAqB,GAC/D;AACF,QAAI;AACF,WAAK,WAAW,EAAE,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,QAAO;AACrD,YAAI,SAAS,OAAO;AACpB,YAAI,CAAC,OAAO,SAAS,SAAS,YAAY,GAAG;AAC3C,iBAAO,oBAAI,KAAK,GAAG;AAAA,QACrB;AACA,YAAI,SAAS,OAAO,IAAI,SAAS,OAAO,YAAY;AAEpD,YAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,oBAAU,OAAO,CAAC;AAClB,iBAAO,OAAO,OAAO,CAAC,CAAC;AAAA,QAEzB,OAAO;AACL,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF,SAAS,KAAK;AACZ,iBAAW,EAAE,GAAG;AAAA,IAClB,UAAE;AACA,iBAAW,EAAE;AAAA,IACf;AACA,WAAO;AAAA,EACT;AACA,WAASE,oBAAmB,OAAO;AACjC,WAAO,MAAM,MAAMR,oBAAmB,EAAE,CAAC,EAAE,QAAQC,oBAAmB,GAAG;AAAA,EAC3E;;;ACpee,WAAR,YAA6B,WAAW;AAC7C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOY,QAAO,SAAS;AAC3B,SAAK,WAAW,GAAG,GAAG,CAAC;AACvB,WAAO;AAAA,EACT;;;ACLe,WAAR,cAA+B,WAAW;AAC/C,iBAAa,GAAG,SAAS;AACzB,QAAI,OAAOC,QAAO,SAAS;AAC3B,SAAK,gBAAgB,CAAC;AACtB,WAAO;AAAA,EACT;;;ACUe,WAAR,SAA0B,UAAU,SAAS;AAClD,QAAI;AACJ,iBAAa,GAAG,SAAS;AACzB,QAAI,mBAAmB,WAAW,wBAAwB,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,sBAAsB,QAAQ,0BAA0B,SAAS,wBAAwB,CAAC;AAC9M,QAAI,qBAAqB,KAAK,qBAAqB,KAAK,qBAAqB,GAAG;AAC9E,YAAM,IAAI,WAAW,oCAAoC;AAAA,IAC3D;AACA,QAAI,EAAE,OAAO,aAAa,YAAY,OAAO,UAAU,SAAS,KAAK,QAAQ,MAAM,oBAAoB;AACrG,aAAO,oBAAI,KAAK,GAAG;AAAA,IACrB;AACA,QAAI,cAAc,gBAAgB,QAAQ;AAC1C,QAAI;AACJ,QAAI,YAAY,MAAM;AACpB,UAAI,kBAAkB,UAAU,YAAY,MAAM,gBAAgB;AAClE,aAAO,UAAU,gBAAgB,gBAAgB,gBAAgB,IAAI;AAAA,IACvE;AACA,QAAI,CAAC,QAAQ,MAAM,KAAK,QAAQ,CAAC,GAAG;AAClC,aAAO,oBAAI,KAAK,GAAG;AAAA,IACrB;AACA,QAAI,YAAY,KAAK,QAAQ;AAC7B,QAAI,OAAO;AACX,QAAI;AACJ,QAAI,YAAY,MAAM;AACpB,aAAO,UAAU,YAAY,IAAI;AACjC,UAAI,MAAM,IAAI,GAAG;AACf,eAAO,oBAAI,KAAK,GAAG;AAAA,MACrB;AAAA,IACF;AACA,QAAI,YAAY,UAAU;AACxB,eAAS,cAAc,YAAY,QAAQ;AAC3C,UAAI,MAAM,MAAM,GAAG;AACjB,eAAO,oBAAI,KAAK,GAAG;AAAA,MACrB;AAAA,IACF,OAAO;AACL,UAAI,YAAY,IAAI,KAAK,YAAY,IAAI;AAMzC,UAAI,SAAS,oBAAI,KAAK,CAAC;AACvB,aAAO,YAAY,UAAU,eAAe,GAAG,UAAU,YAAY,GAAG,UAAU,WAAW,CAAC;AAC9F,aAAO,SAAS,UAAU,YAAY,GAAG,UAAU,cAAc,GAAG,UAAU,cAAc,GAAG,UAAU,mBAAmB,CAAC;AAC7H,aAAO;AAAA,IACT;AACA,WAAO,IAAI,KAAK,YAAY,OAAO,MAAM;AAAA,EAC3C;AACA,MAAI,WAAW;AAAA,IACb,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,UAAU;AAAA,EACZ;AACA,MAAI,YAAY;AAChB,MAAI,YAAY;AAChB,MAAI,gBAAgB;AACpB,WAAS,gBAAgB,YAAY;AACnC,QAAI,cAAc,CAAC;AACnB,QAAI,QAAQ,WAAW,MAAM,SAAS,iBAAiB;AACvD,QAAI;AAIJ,QAAI,MAAM,SAAS,GAAG;AACpB,aAAO;AAAA,IACT;AACA,QAAI,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG;AACtB,mBAAa,MAAM,CAAC;AAAA,IACtB,OAAO;AACL,kBAAY,OAAO,MAAM,CAAC;AAC1B,mBAAa,MAAM,CAAC;AACpB,UAAI,SAAS,kBAAkB,KAAK,YAAY,IAAI,GAAG;AACrD,oBAAY,OAAO,WAAW,MAAM,SAAS,iBAAiB,EAAE,CAAC;AACjE,qBAAa,WAAW,OAAO,YAAY,KAAK,QAAQ,WAAW,MAAM;AAAA,MAC3E;AAAA,IACF;AACA,QAAI,YAAY;AACd,UAAI,QAAQ,SAAS,SAAS,KAAK,UAAU;AAC7C,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;AACA,WAAO;AAAA,EACT;AACA,WAAS,UAAU,YAAY,kBAAkB;AAC/C,QAAI,QAAQ,IAAI,OAAO,0BAA0B,IAAI,oBAAoB,yBAAyB,IAAI,oBAAoB,MAAM;AAChI,QAAI,WAAW,WAAW,MAAM,KAAK;AAErC,QAAI,CAAC,SAAU,QAAO;AAAA,MACpB,MAAM;AAAA,MACN,gBAAgB;AAAA,IAClB;AACA,QAAIC,QAAO,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,IAAI;AACjD,QAAI,UAAU,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,IAAI;AAGpD,WAAO;AAAA,MACL,MAAM,YAAY,OAAOA,QAAO,UAAU;AAAA,MAC1C,gBAAgB,WAAW,OAAO,SAAS,CAAC,KAAK,SAAS,CAAC,GAAG,MAAM;AAAA,IACtE;AAAA,EACF;AACA,WAAS,UAAU,YAAYA,OAAM;AAEnC,QAAIA,UAAS,KAAM,QAAO,oBAAI,KAAK,GAAG;AACtC,QAAI,WAAW,WAAW,MAAM,SAAS;AAEzC,QAAI,CAAC,SAAU,QAAO,oBAAI,KAAK,GAAG;AAClC,QAAI,aAAa,CAAC,CAAC,SAAS,CAAC;AAC7B,QAAI,YAAY,cAAc,SAAS,CAAC,CAAC;AACzC,QAAIC,SAAQ,cAAc,SAAS,CAAC,CAAC,IAAI;AACzC,QAAIC,OAAM,cAAc,SAAS,CAAC,CAAC;AACnC,QAAIC,QAAO,cAAc,SAAS,CAAC,CAAC;AACpC,QAAI,YAAY,cAAc,SAAS,CAAC,CAAC,IAAI;AAC7C,QAAI,YAAY;AACd,UAAI,CAAC,iBAAiBH,OAAMG,OAAM,SAAS,GAAG;AAC5C,eAAO,oBAAI,KAAK,GAAG;AAAA,MACrB;AACA,aAAO,iBAAiBH,OAAMG,OAAM,SAAS;AAAA,IAC/C,OAAO;AACL,UAAI,OAAO,oBAAI,KAAK,CAAC;AACrB,UAAI,CAAC,aAAaH,OAAMC,QAAOC,IAAG,KAAK,CAAC,sBAAsBF,OAAM,SAAS,GAAG;AAC9E,eAAO,oBAAI,KAAK,GAAG;AAAA,MACrB;AACA,WAAK,eAAeA,OAAMC,QAAO,KAAK,IAAI,WAAWC,IAAG,CAAC;AACzD,aAAO;AAAA,IACT;AAAA,EACF;AACA,WAAS,cAAc,OAAO;AAC5B,WAAO,QAAQ,SAAS,KAAK,IAAI;AAAA,EACnC;AACA,WAAS,UAAU,YAAY;AAC7B,QAAI,WAAW,WAAW,MAAM,SAAS;AACzC,QAAI,CAAC,SAAU,QAAO;AAEtB,QAAI,QAAQ,cAAc,SAAS,CAAC,CAAC;AACrC,QAAI,UAAU,cAAc,SAAS,CAAC,CAAC;AACvC,QAAI,UAAU,cAAc,SAAS,CAAC,CAAC;AACvC,QAAI,CAAC,aAAa,OAAO,SAAS,OAAO,GAAG;AAC1C,aAAO;AAAA,IACT;AACA,WAAO,QAAQ,qBAAqB,UAAU,uBAAuB,UAAU;AAAA,EACjF;AACA,WAAS,cAAc,OAAO;AAC5B,WAAO,SAAS,WAAW,MAAM,QAAQ,KAAK,GAAG,CAAC,KAAK;AAAA,EACzD;AACA,WAAS,cAAc,gBAAgB;AACrC,QAAI,mBAAmB,IAAK,QAAO;AACnC,QAAI,WAAW,eAAe,MAAM,aAAa;AACjD,QAAI,CAAC,SAAU,QAAO;AACtB,QAAIE,QAAO,SAAS,CAAC,MAAM,MAAM,KAAK;AACtC,QAAI,QAAQ,SAAS,SAAS,CAAC,CAAC;AAChC,QAAI,UAAU,SAAS,CAAC,KAAK,SAAS,SAAS,CAAC,CAAC,KAAK;AACtD,QAAI,CAAC,iBAAiB,OAAO,OAAO,GAAG;AACrC,aAAO;AAAA,IACT;AACA,WAAOA,SAAQ,QAAQ,qBAAqB,UAAU;AAAA,EACxD;AACA,WAAS,iBAAiB,aAAaD,OAAMD,MAAK;AAChD,QAAI,OAAO,oBAAI,KAAK,CAAC;AACrB,SAAK,eAAe,aAAa,GAAG,CAAC;AACrC,QAAI,qBAAqB,KAAK,UAAU,KAAK;AAC7C,QAAI,QAAQC,QAAO,KAAK,IAAID,OAAM,IAAI;AACtC,SAAK,WAAW,KAAK,WAAW,IAAI,IAAI;AACxC,WAAO;AAAA,EACT;AAKA,MAAI,eAAe,CAAC,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACpE,WAASG,iBAAgBL,OAAM;AAC7B,WAAOA,QAAO,QAAQ,KAAKA,QAAO,MAAM,KAAKA,QAAO,QAAQ;AAAA,EAC9D;AACA,WAAS,aAAaA,OAAMC,QAAO,MAAM;AACvC,WAAOA,UAAS,KAAKA,UAAS,MAAM,QAAQ,KAAK,SAAS,aAAaA,MAAK,MAAMI,iBAAgBL,KAAI,IAAI,KAAK;AAAA,EACjH;AACA,WAAS,sBAAsBA,OAAM,WAAW;AAC9C,WAAO,aAAa,KAAK,cAAcK,iBAAgBL,KAAI,IAAI,MAAM;AAAA,EACvE;AACA,WAAS,iBAAiB,OAAOG,OAAMD,MAAK;AAC1C,WAAOC,SAAQ,KAAKA,SAAQ,MAAMD,QAAO,KAAKA,QAAO;AAAA,EACvD;AACA,WAAS,aAAa,OAAO,SAAS,SAAS;AAC7C,QAAI,UAAU,IAAI;AAChB,aAAO,YAAY,KAAK,YAAY;AAAA,IACtC;AACA,WAAO,WAAW,KAAK,UAAU,MAAM,WAAW,KAAK,UAAU,MAAM,SAAS,KAAK,QAAQ;AAAA,EAC/F;AACA,WAAS,iBAAiB,QAAQ,SAAS;AACzC,WAAO,WAAW,KAAK,WAAW;AAAA,EACpC;;;AC1NA,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,EAAAI,UAAU,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,gBAAQC,QAAO,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,aAAOC,QAAO,MAAM,KAAK,KAAK,OAAO;AAAA,IACvC;AAAA,IAEA,KAAK,SAAS,MAAM,QAAQ,MAAM;AAChC,cAAQ,MAAM;AAAA,QACd,KAAK;AAAe,iBAAO,gBAAgB,MAAM,MAAM;AAAA,QACvD,KAAK;AAAU,iBAAO,WAAW,MAAM,MAAM;AAAA,QAC7C,KAAK;AAAU,iBAAO,WAAW,MAAM,MAAM;AAAA,QAC7C,KAAK;AAAQ,iBAAO,SAAS,MAAM,MAAM;AAAA,QACzC,KAAK;AAAO,iBAAO,QAAQ,MAAM,MAAM;AAAA,QACvC,KAAK;AAAQ,iBAAO,SAAS,MAAM,MAAM;AAAA,QACzC,KAAK;AAAS,iBAAO,UAAU,MAAM,MAAM;AAAA,QAC3C,KAAK;AAAW,iBAAO,YAAY,MAAM,MAAM;AAAA,QAC/C,KAAK;AAAQ,iBAAO,SAAS,MAAM,MAAM;AAAA,QACzC;AAAS,iBAAO;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,KAAK,KAAK,MAAM;AAC7B,cAAQ,MAAM;AAAA,QACd,KAAK;AAAe,iBAAO,yBAAyB,KAAK,GAAG;AAAA,QAC5D,KAAK;AAAU,iBAAO,oBAAoB,KAAK,GAAG;AAAA,QAClD,KAAK;AAAU,iBAAO,oBAAoB,KAAK,GAAG;AAAA,QAClD,KAAK;AAAQ,iBAAO,kBAAkB,KAAK,GAAG;AAAA,QAC9C,KAAK;AAAO,iBAAO,iBAAiB,KAAK,GAAG;AAAA,QAC5C,KAAK;AAAQ,iBAAO,kBAAkB,KAAK,GAAG;AAAA,QAC9C,KAAK;AAAS,iBAAO,mBAAmB,KAAK,GAAG;AAAA,QAChD,KAAK;AAAW,iBAAO,qBAAqB,KAAK,GAAG;AAAA,QACpD,KAAK;AAAQ,iBAAO,kBAAkB,KAAK,GAAG;AAAA,QAC9C;AAAS,iBAAO;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,SAAS,SAAS,MAAM,MAAM,SAAS;AACrC,cAAQ,MAAM;AAAA,QACd,KAAK;AAAU,iBAAO,cAAc,IAAI;AAAA,QACxC,KAAK;AAAU,iBAAO,cAAc,IAAI;AAAA,QACxC,KAAK;AAAQ,iBAAO,YAAY,IAAI;AAAA,QACpC,KAAK;AAAO,iBAAO,WAAW,IAAI;AAAA,QAClC,KAAK;AAAQ,iBAAO,YAAY,IAAI;AAAA,QACpC,KAAK;AAAW,iBAAO,YAAY,MAAM,EAAC,cAAc,CAAC,QAAO,CAAC;AAAA,QACjE,KAAK;AAAS,iBAAO,aAAa,IAAI;AAAA,QACtC,KAAK;AAAW,iBAAO,eAAe,IAAI;AAAA,QAC1C,KAAK;AAAQ,iBAAO,YAAY,IAAI;AAAA,QACpC;AAAS,iBAAO;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,OAAO,SAAS,MAAM,MAAM;AAC1B,cAAQ,MAAM;AAAA,QACd,KAAK;AAAU,iBAAO,YAAY,IAAI;AAAA,QACtC,KAAK;AAAU,iBAAO,YAAY,IAAI;AAAA,QACtC,KAAK;AAAQ,iBAAO,UAAU,IAAI;AAAA,QAClC,KAAK;AAAO,iBAAO,SAAS,IAAI;AAAA,QAChC,KAAK;AAAQ,iBAAO,UAAU,IAAI;AAAA,QAClC,KAAK;AAAS,iBAAO,WAAW,IAAI;AAAA,QACpC,KAAK;AAAW,iBAAO,aAAa,IAAI;AAAA,QACxC,KAAK;AAAQ,iBAAO,UAAU,IAAI;AAAA,QAClC;AAAS,iBAAO;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;;;ACxGD,YAAU,IAAI,YAAK;;;ACEnB;;;ACCA;AAEA,MAAI,oBAAoB,WAAW;AACjC,QAAI,OAAO,WAAW,aAAa;AACjC,UAAI,OAAO,kBAAkB;AAC3B,eAAO,OAAO;AAAA,MAChB;AAKA,UAAI,SAAS,OAAO;AACpB,UAAI,QAAQ;AACV,gBAAQ,OAAO,cAAc,MAAM,OAAO,eAAe;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAE;AAEF,MAAI,QAAQ;AAAA;AAAA,IAEV,aAAa,SAAS,QAAQ;AAC5B,UAAI,QAAQ,CAAC;AACb,UAAI;AAEJ,eAAS,CAAC,EAAE,OAAO,MAAM;AACzB,aAAO,OAAO,QAAQ;AACpB,gBAAQ,OAAO,IAAI;AACnB,YAAI,OAAO,UAAU,UAAU;AAC7B,gBAAM,QAAQ,MAAM,OAAO,MAAM,MAAM,IAAI,CAAC;AAAA,QAC9C,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,iBAAO,KAAK,MAAM,QAAQ,KAAK;AAAA,QACjC,WAAW,CAACC,eAAc,MAAM,GAAG;AACjC,gBAAM,QAAQ,KAAK,KAAK;AAAA,QAC1B;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA,IAIA,UAAU,SAAS,KAAK,OAAO,MAAM;AACnC,UAAI,QAAQ,CAAC,EAAE,OAAO,KAAK;AAC3B,UAAI,OAAO,MAAM;AACjB,UAAI,OAAO,IAAI;AACf,UAAI,QAAQ;AACZ,UAAIC;AAEJ,UAAI,OAAO,KAAK;AAEhB,WAAKA,KAAI,GAAGA,KAAI,MAAM,EAAEA,IAAG;AACzB,gBAAQ,KAAK,IAAI,IAAI,YAAY,MAAMA,EAAC,CAAC,EAAE,OAAO,KAAK;AAAA,MACzD;AAEA,UAAI,OAAO;AAEX,aAAO;AAAA,QACL,QAAQ,OAAO,KAAK;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,OAAO,SAAS,KAAK,OAAO,KAAK;AAC/B,aAAO,KAAK,IAAI,KAAK,KAAK,IAAI,OAAO,GAAG,CAAC;AAAA,IAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,WAAW,SAAS,IAAI,IAAI;AAC1B,UAAI,OAAO,GAAG,MAAM;AACpB,UAAI,UAAU,CAAC;AACf,UAAIA,IAAGC,IAAG,MAAMC;AAEhB,WAAKF,KAAI,GAAG,OAAO,GAAG,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC3C,QAAAE,KAAI,GAAGF,EAAC;AACR,QAAAC,KAAI,KAAK,QAAQC,EAAC;AAElB,YAAID,OAAM,IAAI;AACZ,kBAAQ,KAAK,CAACC,IAAG,CAAC,CAAC;AAAA,QACrB,OAAO;AACL,eAAK,OAAOD,IAAG,CAAC;AAAA,QAClB;AAAA,MACF;AAEA,WAAKD,KAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC7C,gBAAQ,KAAK,CAAC,KAAKA,EAAC,GAAG,EAAE,CAAC;AAAA,MAC5B;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,SAASE,IAAG;AACrB,aAAO,KAAK,MAAMA,KAAI,gBAAgB,IAAI;AAAA,IAC5C;AAAA,EACF;AAEA,WAAS,OAAO,OAAO,QAAQ;AAC7B,QAAI,KAAK,OAAO;AAChB,QAAI,KAAK,OAAO;AAEhB,QAAI,OAAO,MAAM;AACf,aAAO,EAAC,GAAG,GAAG,GAAG,GAAE;AAAA,IACrB;AACA,QAAI,OAAO,MAAM;AACf,aAAO,EAAC,GAAG,GAAG,GAAG,EAAC;AAAA,IACpB;AAEA,QAAI,KAAK,MAAM,IAAI;AACnB,QAAI,KAAK,MAAM,IAAI;AACnB,QAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AAEpC,WAAO;AAAA,MACL,GAAG,KAAK,KAAK,KAAK;AAAA,MAClB,GAAG,KAAK,KAAK,KAAK;AAAA,IACpB;AAAA,EACF;AAEA,WAAS,QAAQC,IAAGC,IAAG,IAAI,IAAI,OAAO;AACpC,YAAQ,OAAO;AAAA,MACf,KAAK;AACH,aAAK,KAAK;AACV;AAAA,MACF,KAAK;AACH,aAAK;AACL,aAAK;AACL;AAAA,MACF,KAAK;AACH,aAAK;AACL,aAAK;AACL;AAAA,MACF,KAAK;AACH,aAAK;AACL,aAAK;AACL;AAAA,MACF,KAAK;AACH,aAAK;AACL,aAAK;AACL;AAAA,MACF,KAAK;AACH,aAAK,CAAC;AACN,aAAK,CAAC;AACN;AAAA,MACF,KAAK;AAEH;AAAA,MACF;AAEE,iBAAU,KAAK,KAAK;AACpB,aAAK,KAAK,IAAI,KAAK;AACnB,aAAK,KAAK,IAAI,KAAK;AACnB;AAAA,IACF;AAEA,WAAO;AAAA,MACL,GAAGD;AAAA,MACH,GAAGC;AAAA,MACH;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAKA,MAAI,WAAW;AACf,MAAI,SAAS;AACb,MAAI,UAAU;AACd,MAAI,WAAW;AACf,MAAI,QAAQ;AAEZ,WAAS,OAAOD,IAAGC,IAAG,MAAM;AAC1B,QAAI,MAAM;AAEV,QAAID,KAAI,KAAK,MAAM;AACjB,aAAO;AAAA,IACT,WAAWA,KAAI,KAAK,OAAO;AACzB,aAAO;AAAA,IACT;AACA,QAAIC,KAAI,KAAK,KAAK;AAChB,aAAO;AAAA,IACT,WAAWA,KAAI,KAAK,QAAQ;AAC1B,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,QAAQ,SAAS,MAAM;AAC9B,QAAI,KAAK,QAAQ;AACjB,QAAI,KAAK,QAAQ;AACjB,QAAI,KAAK,QAAQ;AACjB,QAAI,KAAK,QAAQ;AACjB,QAAI,KAAK,OAAO,IAAI,IAAI,IAAI;AAC5B,QAAI,KAAK,OAAO,IAAI,IAAI,IAAI;AAC5B,QAAIC,IAAGF,IAAGC;AAGV,WAAO,MAAM;AACX,UAAI,EAAE,KAAK,OAAQ,KAAK,IAAK;AAE3B;AAAA,MACF;AAGA,MAAAC,KAAI,MAAM;AAEV,UAAIA,KAAI,OAAO;AACb,QAAAF,KAAI,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO,KAAK;AAC7C,QAAAC,KAAI,KAAK;AAAA,MACX,WAAWC,KAAI,UAAU;AACvB,QAAAF,KAAI,MAAM,KAAK,OAAO,KAAK,SAAS,OAAO,KAAK;AAChD,QAAAC,KAAI,KAAK;AAAA,MACX,WAAWC,KAAI,SAAS;AACtB,QAAAD,KAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,OAAO,KAAK;AAC/C,QAAAD,KAAI,KAAK;AAAA,MACX,WAAWE,KAAI,QAAQ;AACrB,QAAAD,KAAI,MAAM,KAAK,OAAO,KAAK,OAAO,OAAO,KAAK;AAC9C,QAAAD,KAAI,KAAK;AAAA,MACX;AAEA,UAAIE,OAAM,IAAI;AACZ,aAAKF;AACL,aAAKC;AACL,aAAK,OAAO,IAAI,IAAI,IAAI;AAAA,MAC1B,OAAO;AACL,aAAKD;AACL,aAAKC;AACL,aAAK,OAAO,IAAI,IAAI,IAAI;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,WAAS,UAAU,OAAOE,SAAQ;AAChC,QAAI,SAASA,QAAO;AACpB,QAAI,UAAU;AACd,QAAIH,IAAGC;AAEP,QAAIE,QAAO,OAAO;AAChB,gBAAU,QAAQ,SAASA,QAAO,IAAI;AAAA,IACxC;AAEA,QAAI,WAAW,SAAS;AACtB,MAAAH,KAAI,QAAQ;AACZ,MAAAC,KAAI,QAAQ;AAAA,IACd,WAAW,WAAW,OAAO;AAC3B,MAAAD,KAAI,QAAQ;AACZ,MAAAC,KAAI,QAAQ;AAAA,IACd,OAAO;AACL,MAAAD,MAAK,QAAQ,KAAK,QAAQ,MAAM;AAChC,MAAAC,MAAK,QAAQ,KAAK,QAAQ,MAAM;AAAA,IAClC;AAEA,WAAO,QAAQD,IAAGC,IAAG,MAAM,IAAI,MAAM,IAAIE,QAAO,KAAK;AAAA,EACvD;AAEA,MAAIC,eAAc;AAAA,IAChB,KAAK,SAAS,IAAID,SAAQ;AACxB,UAAI,SAAS,GAAG,aAAa,GAAG,YAAY;AAC5C,UAAI,KAAK,KAAK,IAAI,KAAK;AACvB,UAAI,KAAK,KAAK,IAAI,KAAK;AACvB,UAAI,KAAK,GAAG;AACZ,UAAI,KAAK,GAAG;AAEZ,aAAO,UAAU;AAAA,QACf,IAAI,GAAG,IAAI,KAAK;AAAA,QAChB,IAAI,GAAG,IAAI,KAAK;AAAA,QAChB,IAAI,GAAG,IAAI,KAAK;AAAA,QAChB,IAAI,GAAG,IAAI,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,MACF,GAAGA,OAAM;AAAA,IACX;AAAA,IAEA,OAAO,SAAS,IAAIA,SAAQ;AAC1B,UAAIJ,KAAI,OAAO,IAAII,QAAO,MAAM;AAChC,UAAI,KAAKJ,GAAE,IAAI,GAAG,QAAQ;AAC1B,UAAI,KAAKA,GAAE,IAAI,GAAG,QAAQ;AAE1B,aAAO,UAAU;AAAA,QACf,IAAI,GAAG,IAAI;AAAA,QACX,IAAI,GAAG,IAAI;AAAA,QACX,IAAI,GAAG,IAAI;AAAA,QACX,IAAI,GAAG,IAAI;AAAA,QACX,IAAIA,GAAE;AAAA,QACN,IAAIA,GAAE;AAAA,MACR,GAAGI,OAAM;AAAA,IACX;AAAA,IAEA,KAAK,SAAS,IAAIA,SAAQ;AACxB,UAAIJ,KAAI,OAAO,IAAII,QAAO,MAAM;AAChC,UAAIH,KAAI,GAAG;AACX,UAAIC,KAAI,GAAG;AACX,UAAI,KAAK;AACT,UAAI,KAAK;AAET,UAAI,GAAG,YAAY;AACjB,QAAAD,KAAI,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI;AAC1B,aAAK,KAAK,IAAI,GAAG,OAAO,GAAG,CAAC;AAAA,MAC9B,OAAO;AACL,QAAAC,KAAI,KAAK,IAAI,GAAG,GAAG,GAAG,IAAI;AAC1B,aAAK,KAAK,IAAI,GAAG,OAAO,GAAG,CAAC;AAAA,MAC9B;AAEA,aAAO,UAAU;AAAA,QACf,IAAID;AAAA,QACJ,IAAIC,KAAI;AAAA,QACR,IAAID,KAAI;AAAA,QACR,IAAIC;AAAA,QACJ,IAAIF,GAAE;AAAA,QACN,IAAIA,GAAE;AAAA,MACR,GAAGI,OAAM;AAAA,IACX;AAAA,IAEA,UAAU,SAAS,IAAIA,SAAQ;AAC7B,UAAIJ,KAAI,OAAO,IAAII,QAAO,MAAM;AAEhC,aAAO,UAAU;AAAA,QACf,IAAI,GAAG;AAAA,QACP,IAAI,GAAG;AAAA,QACP,IAAI,GAAG,KAAK,GAAG,SAAS;AAAA,QACxB,IAAI,GAAG,KAAK,GAAG,UAAU;AAAA,QACzB,IAAIJ,GAAE;AAAA,QACN,IAAIA,GAAE;AAAA,MACR,GAAGI,OAAM;AAAA,IACX;AAAA,EACF;AAEA,MAAI,YAAY,MAAM;AAEtB,WAASE,eAAc,OAAO;AAC5B,QAAI,cAAc,MAAM,eAAe;AACvC,QAAI,UAAU,MAAM;AACpB,QAAI,KAAK,MAAM,KAAK;AACpB,QAAI,KAAK,MAAM,KAAK;AACpB,QAAI,KAAK,CAAC,KAAK;AACf,QAAI,KAAK,CAAC,KAAK;AAEf,WAAO;AAAA,MACL,OAAO;AAAA,QACL,GAAG,KAAK,QAAQ,OAAO;AAAA,QACvB,GAAG,KAAK,QAAQ,MAAM;AAAA,QACtB,GAAG,KAAK,QAAQ,QAAQ,cAAc;AAAA,QACtC,GAAG,KAAK,QAAQ,SAAS,cAAc;AAAA,MACzC;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAEA,WAAS,eAAe,IAAI,SAAS;AACnC,QAAI,QAAQ,QAAQ,MAAM,eAAe,QAAQ,YAAY,EAAE;AAE/D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,YAAY,UAAa,MAAM,YAAY,QAAW;AAC9D,aAAO,EAAC,GAAG,MAAM,SAAS,GAAG,MAAM,QAAO;AAAA,IAC5C;AAEA,QAAI,QAAQ,MAAM,aAAa;AAC/B,WAAO,GAAG,aACR,EAAC,GAAG,OAAO,GAAG,KAAI,IAClB,EAAC,GAAG,MAAM,GAAG,MAAK;AAAA,EACtB;AAEA,WAAS,cAAc,IAAI;AACzB,QAAI,cAAcC,aAAY;AAC5B,aAAOF,aAAY;AAAA,IACrB;AACA,QAAI,cAAcG,eAAc;AAC9B,aAAOH,aAAY;AAAA,IACrB;AACA,QAAI,cAAcI,aAAY;AAC5B,aAAOJ,aAAY;AAAA,IACrB;AACA,WAAOA,aAAY;AAAA,EACrB;AAEA,WAAS,gBAAgB,KAAKJ,IAAGC,IAAGQ,IAAGC,IAAG,QAAQ;AAChD,QAAIC,WAAU,KAAK,KAAK;AAExB,QAAI,QAAQ;AACV,UAAIT,KAAI,KAAK,IAAI,QAAQQ,KAAI,GAAGD,KAAI,CAAC;AACrC,UAAI,OAAOT,KAAIE;AACf,UAAI,MAAMD,KAAIC;AACd,UAAI,QAAQF,KAAIS,KAAIP;AACpB,UAAI,SAASD,KAAIS,KAAIR;AAErB,UAAI,OAAOF,IAAG,GAAG;AACjB,UAAI,OAAO,SAAS,MAAM,QAAQ;AAChC,YAAI,IAAI,MAAM,KAAKE,IAAG,CAAC,KAAK,IAAI,CAACS,QAAO;AACxC,YAAI,IAAI,OAAO,KAAKT,IAAG,CAACS,UAAS,CAAC;AAClC,YAAI,IAAI,OAAO,QAAQT,IAAG,GAAGS,QAAO;AACpC,YAAI,IAAI,MAAM,QAAQT,IAAGS,UAAS,KAAK,EAAE;AAAA,MAC3C,WAAW,OAAO,OAAO;AACvB,YAAI,OAAO,MAAMV,EAAC;AAClB,YAAI,IAAI,OAAO,KAAKC,IAAG,CAACS,UAASA,QAAO;AACxC,YAAI,IAAI,MAAM,KAAKT,IAAGS,UAAS,KAAK,KAAKA,QAAO;AAAA,MAClD,WAAW,MAAM,QAAQ;AACvB,YAAI,IAAI,MAAM,KAAKT,IAAG,CAAC,KAAK,IAAI,CAAC;AACjC,YAAI,IAAI,MAAM,QAAQA,IAAG,GAAG,KAAK,EAAE;AAAA,MACrC,OAAO;AACL,YAAI,IAAI,MAAM,KAAKA,IAAG,CAAC,KAAK,IAAI,KAAK,EAAE;AAAA,MACzC;AACA,UAAI,UAAU;AACd,UAAI,OAAOF,IAAGC,EAAC;AAAA,IACjB,OAAO;AACL,UAAI,KAAKD,IAAGC,IAAGQ,IAAGC,EAAC;AAAA,IACrB;AAAA,EACF;AAEA,WAAS,UAAU,KAAK,MAAM,OAAO;AACnC,QAAI,UAAU,MAAM;AACpB,QAAI,cAAc,MAAM;AACxB,QAAI,cAAc,MAAM;AAExB,QAAI,CAAC,YAAY,CAAC,eAAe,CAAC,cAAc;AAC9C;AAAA,IACF;AAEA,QAAI,UAAU;AAEd;AAAA,MACE;AAAA,MACA,UAAU,KAAK,CAAC,IAAI,cAAc;AAAA,MAClC,UAAU,KAAK,CAAC,IAAI,cAAc;AAAA,MAClC,UAAU,KAAK,CAAC,IAAI;AAAA,MACpB,UAAU,KAAK,CAAC,IAAI;AAAA,MACpB,MAAM;AAAA,IAAY;AAEpB,QAAI,UAAU;AAEd,QAAI,SAAS;AACX,UAAI,YAAY;AAChB,UAAI,KAAK;AAAA,IACX;AAEA,QAAI,eAAe,aAAa;AAC9B,UAAI,cAAc;AAClB,UAAI,YAAY;AAChB,UAAI,WAAW;AACf,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AAEA,WAAS,aAAa,MAAM,OAAO,MAAM;AACvC,QAAIA,KAAI,KAAK;AACb,QAAID,KAAI,KAAK;AACb,QAAIT,KAAI,KAAK;AACb,QAAIC,KAAI,KAAK,IAAIS,KAAI;AAErB,QAAI,UAAU,UAAU;AACtB,MAAAV,MAAKS,KAAI;AAAA,IACX,WAAW,UAAU,SAAS,UAAU,SAAS;AAC/C,MAAAT,MAAKS;AAAA,IACP;AAEA,WAAO;AAAA,MACL,GAAGC;AAAA,MACH,GAAGD;AAAA,MACH,GAAGT;AAAA,MACH,GAAGC;AAAA,IACL;AAAA,EACF;AAEA,WAAS,aAAa,KAAK,MAAM,KAAK;AACpC,QAAIW,UAAS,IAAI;AACjB,QAAI,UAAU,IAAI;AAClB,QAAIZ,KAAI,UAAU,IAAI,CAAC;AACvB,QAAIC,KAAI,UAAU,IAAI,CAAC;AACvB,QAAIQ,KAAI,UAAU,IAAI,CAAC;AAEvB,QAAI,SAAS;AACX,UAAI,WAAW,MAAMT,IAAGC,IAAGQ,EAAC;AAAA,IAC9B;AAEA,QAAI,IAAI,QAAQ;AACd,UAAIG,WAAU,SAAS;AAGrB,YAAI,aAAa;AAAA,MACnB;AAEA,UAAI,SAAS,MAAMZ,IAAGC,IAAGQ,EAAC;AAE1B,UAAIG,WAAU,SAAS;AACrB,YAAI,aAAaA;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,WAAS,SAAS,KAAK,OAAO,MAAM,OAAO;AACzC,QAAI,QAAQ,MAAM;AAClB,QAAIC,SAAQ,MAAM;AAClB,QAAI,SAAS,CAAC,CAACA;AACf,QAAI,OAAO,MAAM;AACjB,QAAI,OAAO,MAAM;AACjB,QAAI,cAAc,MAAM;AACxB,QAAI,cAAc,MAAM;AACxB,QAAI,UAAU,eAAe;AAC7B,QAAIhB;AAEJ,QAAI,CAAC,QAAS,CAAC,UAAU,CAAC,SAAU;AAClC;AAAA,IACF;AAGA,WAAO,aAAa,MAAM,OAAO,IAAI;AAErC,QAAI,OAAO,KAAK;AAChB,QAAI,YAAY;AAChB,QAAI,eAAe;AACnB,QAAI,aAAa,MAAM;AACvB,QAAI,cAAc,MAAM;AAExB,QAAI,QAAQ;AACV,UAAI,YAAYgB;AAAA,IAClB;AACA,QAAI,SAAS;AACX,UAAI,WAAW;AACf,UAAI,YAAY;AAChB,UAAI,cAAc;AAAA,IACpB;AAEA,SAAKhB,KAAI,GAAG,OAAO,MAAM,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC9C,mBAAa,KAAK,MAAMA,EAAC,GAAG;AAAA,QAC1B;AAAA,QACA;AAAA,QACA,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,QACR,GAAG,KAAK,IAAI,KAAK,IAAIA;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,QAAQ,SAASM,SAAQ,KAAK,IAAIW,QAAO;AAC3C,QAAIC,MAAK;AAET,IAAAA,IAAG,UAAUZ;AACb,IAAAY,IAAG,SAASD;AACZ,IAAAC,IAAG,SAAS;AACZ,IAAAA,IAAG,SAAS;AACZ,IAAAA,IAAG,OAAO;AACV,IAAAA,IAAG,MAAM;AAAA,EACX;AAEA,EAAAC,OAAM,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA,IAIrB,WAAW,SAAS,SAAS,OAAOb,SAAQ,SAAS;AACnD,UAAIY,MAAK;AACT,UAAID,SAAQC,IAAG;AACf,UAAI,OAAOE,QAAOC,SAAQ,CAACf,QAAO,MAAM,CAAC,CAAC,GAAG,SAASW,MAAK,CAAC;AAC5D,UAAID,SAAQK,SAAQ,CAACf,QAAO,OAAOgB,UAAW,KAAK,GAAG,SAASL,MAAK;AAEpE,aAAO;AAAA,QACL,OAAOI,SAAQ,CAACf,QAAO,OAAO,QAAQ,GAAG,SAASW,MAAK;AAAA,QACvD,QAAQI,SAAQ,CAACf,QAAO,QAAQ,QAAQ,GAAG,SAASW,MAAK;AAAA,QACzD,MAAM,QAAQ,MAAM;AAAA,QACpB,iBAAiBI,SAAQ,CAACf,QAAO,iBAAiB,IAAI,GAAG,SAASW,MAAK;AAAA,QACvE,aAAaI,SAAQ,CAACf,QAAO,aAAa,IAAI,GAAG,SAASW,MAAK;AAAA,QAC/D,cAAcI,SAAQ,CAACf,QAAO,cAAc,CAAC,GAAG,SAASW,MAAK;AAAA,QAC9D,aAAaI,SAAQ,CAACf,QAAO,aAAa,CAAC,GAAG,SAASW,MAAK;AAAA,QAC5D,OAAOI,SAAQ,CAACf,QAAO,OAAO,KAAK,GAAG,SAASW,MAAK;AAAA,QACpD,MAAMI,SAAQ,CAACf,QAAO,MAAM,KAAK,GAAG,SAASW,MAAK;AAAA,QAClD,OAAOD;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQK,SAAQ,CAACf,QAAO,QAAQ,CAAC,GAAG,SAASW,MAAK;AAAA,QAClD,SAASI,SAAQ,CAACf,QAAO,SAAS,CAAC,GAAG,SAASW,MAAK;AAAA,QACpD,QAAQ,eAAeC,IAAG,KAAK,OAAO;AAAA,QACtC,SAASK,WAAUF,SAAQ,CAACf,QAAO,SAAS,CAAC,GAAG,SAASW,MAAK,CAAC;AAAA,QAC/D,YAAY,cAAcC,IAAG,GAAG;AAAA,QAChC,UAAUG,SAAQ,CAACf,QAAO,UAAU,CAAC,GAAG,SAASW,MAAK,KAAK,KAAK,KAAK;AAAA,QACrE,MAAM,MAAM,SAASC,IAAG,MAAM,OAAO,IAAI;AAAA,QACzC,WAAWG,SAAQ,CAACf,QAAO,WAAW,OAAO,GAAG,SAASW,MAAK;AAAA,QAC9D,gBAAgBI,SAAQ,CAACf,QAAO,gBAAgB,CAAC,GAAG,SAASW,MAAK;AAAA,QAClE,iBAAiBI,SAAQ,CAACf,QAAO,iBAAiBU,MAAK,GAAG,SAASC,MAAK;AAAA,QACxE,iBAAiBI,SAAQ,CAACf,QAAO,iBAAiBU,MAAK,GAAG,SAASC,MAAK;AAAA,QACxE,iBAAiBI,SAAQ,CAACf,QAAO,iBAAiB,CAAC,GAAG,SAASW,MAAK;AAAA,MACtE;AAAA,IACF;AAAA,IAEA,QAAQ,SAAS,SAAS;AACxB,UAAIC,MAAK;AACT,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,UAAID,SAAQC,IAAG;AACf,UAAIZ,UAASY,IAAG;AAChB,UAAI,OAAO,OAAO;AAIlB,UAAI,UAAUG,SAAQ,CAACf,QAAO,SAAS,IAAI,GAAG,SAASW,MAAK;AAE5D,UAAI,SAAS;AACX,gBAAQ,QAAQ,QAAQ,KAAKA,MAAK;AAClC,gBAAQO,gBAAeC,UAASnB,QAAO,WAAW,CAAC,OAAO,OAAO,CAAC,GAAG,KAAK;AAC1E,gBAAQP,eAAc,KAAK,IAAI,CAAC,IAAI,MAAM,YAAY,KAAK;AAE3D,YAAI,MAAM,QAAQ;AAChB,kBAAQmB,IAAG,UAAU,SAAS,OAAOZ,SAAQ,OAAO;AACpD,kBAAQE,eAAc,KAAK;AAAA,QAC7B;AAAA,MACF;AAEA,MAAAU,IAAG,SAAS;AACZ,MAAAA,IAAG,SAAS;AAAA,IACd;AAAA,IAEA,UAAU,WAAW;AACnB,aAAO,KAAK,SAAS,KAAK,OAAO,QAAQ,CAAC;AAAA,IAC5C;AAAA,IAEA,UAAU,WAAW;AACnB,aAAO,KAAK,SAAS,KAAK,OAAO,WAAW;AAAA,IAC9C;AAAA,IAEA,SAAS,WAAW;AAClB,aAAO,KAAK,UAAU,KAAK,OAAO;AAAA,IACpC;AAAA,IAEA,OAAO,WAAW;AAChB,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,MAAM,SAAS,OAAO,QAAQ;AAC5B,UAAIA,MAAK;AACT,UAAI,MAAM,MAAM;AAChB,UAAI,QAAQA,IAAG;AACf,UAAI,QAAQA,IAAG;AACf,UAAI;AAEJ,UAAI,CAAC,KAAK,QAAQ,GAAG;AACnB;AAAA,MACF;AAEA,UAAI,KAAK;AAET,UAAI,MAAM,MAAM;AACd,eAAO,MAAM;AACb,YAAI,UAAU;AACd,YAAI;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK,QAAQ,KAAK;AAAA,UAClB,KAAK,SAAS,KAAK;AAAA,QAAG;AACxB,YAAI,KAAK;AAAA,MACX;AAEA,UAAI,cAAc,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;AACjD,UAAI,UAAU,UAAU,OAAO,CAAC,GAAG,UAAU,OAAO,CAAC,CAAC;AACtD,UAAI,OAAO,MAAM,QAAQ;AAEzB,gBAAU,KAAK,MAAM,OAAO,KAAK;AACjC,eAAS,KAAK,MAAM,OAAO,MAAM,MAAM,KAAK;AAE5C,UAAI,QAAQ;AAAA,IACd;AAAA,EACF,CAAC;AAED,MAAI,cAAc,OAAO,oBAAoB;AAC7C,MAAI,cAAc,OAAO,oBAAoB;AAE7C,WAAS,QAAQ,OAAO,QAAQ,OAAO;AACrC,QAAI,MAAM,KAAK,IAAI,KAAK;AACxB,QAAI,MAAM,KAAK,IAAI,KAAK;AACxB,QAAI,KAAK,OAAO;AAChB,QAAIQ,MAAK,OAAO;AAEhB,WAAO;AAAA,MACL,GAAG,KAAK,OAAO,MAAM,IAAI,MAAM,OAAO,MAAM,IAAIA;AAAA,MAChD,GAAGA,MAAK,OAAO,MAAM,IAAI,MAAM,OAAO,MAAM,IAAIA;AAAA,IAClD;AAAA,EACF;AAEA,WAAS,UAAU,QAAQ,MAAM;AAC/B,QAAI,MAAM;AACV,QAAI,MAAM;AACV,QAAI,SAAS,KAAK;AAClB,QAAI1B,IAAG2B,KAAI,IAAI,IAAI;AAEnB,SAAK3B,KAAI,GAAGA,KAAI,OAAO,QAAQ,EAAEA,IAAG;AAClC,MAAA2B,MAAK,OAAO3B,EAAC;AACb,WAAK2B,IAAG,IAAI,OAAO;AACnB,WAAKA,IAAG,IAAI,OAAO;AACnB,WAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAC9B,YAAM,KAAK,IAAI,KAAK,EAAE;AACtB,YAAM,KAAK,IAAI,KAAK,EAAE;AAAA,IACxB;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,WAAS,OAAO,IAAI,IAAI;AACtB,QAAI,KAAK,GAAG,IAAI,GAAG;AACnB,QAAI,KAAK,GAAG,IAAI,GAAG;AACnB,QAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AAEpC,WAAO;AAAA,MACL,KAAK,GAAG,IAAI,GAAG,KAAK;AAAA,MACpB,KAAK,GAAG,IAAI,GAAG,KAAK;AAAA,MACpB,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,SAAS,WAAW;AACtB,SAAK,YAAY;AACjB,SAAK,QAAQ;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AAEA,EAAAR,OAAM,OAAO,WAAW;AAAA,IACtB,QAAQ,WAAW;AACjB,UAAId,KAAI,KAAK;AACb,aAAO;AAAA,QACL,GAAGA,GAAE,IAAIA,GAAE,IAAI;AAAA,QACf,GAAGA,GAAE,IAAIA,GAAE,IAAI;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,QAAQ,SAAS,QAAQ,MAAM,UAAU;AACvC,WAAK,YAAY;AACjB,WAAK,QAAQ;AAAA,QACX,GAAG,KAAK,IAAI,OAAO;AAAA,QACnB,GAAG,KAAK,IAAI,OAAO;AAAA,QACnB,GAAG,KAAK;AAAA,QACR,GAAG,KAAK;AAAA,MACV;AAAA,IACF;AAAA,IAEA,UAAU,SAAS,OAAO;AACxB,UAAIa,MAAK;AACT,UAAI,SAAS;AACb,UAAI,OAAOA,IAAG;AAEd,cAAQ,QAAQ,OAAOA,IAAG,OAAO,GAAG,CAACA,IAAG,SAAS;AAEjD,aAAO,EAAE,MAAM,IAAI,KAAK,IAAI,UACvB,MAAM,IAAI,KAAK,IAAI,UACnB,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,SAAS,KACrC,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,SAAS;AAAA,IAC5C;AAAA;AAAA;AAAA,IAIA,YAAY,SAAS,OAAO;AAC1B,UAAI,KAAK,KAAK,QAAQ;AACtB,UAAI,KAAK,MAAM,QAAQ;AACvB,UAAI,OAAO;AAAA,QACT,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,QACnB,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACrB;AACA,UAAIlB,IAAG,KAAK;AAEZ,UAAI,KAAK,cAAc,MAAM,WAAW;AAGtC,aAAK;AAAA,UACH,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,UACnB,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,QACrB;AAAA,MACF;AAEA,WAAKA,KAAI,GAAGA,KAAI,KAAK,QAAQ,EAAEA,IAAG;AAChC,cAAM,UAAU,IAAI,KAAKA,EAAC,CAAC;AAC3B,cAAM,UAAU,IAAI,KAAKA,EAAC,CAAC;AAE3B,YAAI,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,IAAI,KAAK;AAC1C,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKA,SAAS,WAAW;AAClB,UAAIkB,MAAK;AACT,UAAI,OAAOA,IAAG;AACd,UAAI,QAAQA,IAAG;AACf,UAAI,SAASA,IAAG,OAAO;AAEvB,aAAO;AAAA,QACL,QAAQ,EAAC,GAAG,KAAK,GAAG,GAAG,KAAK,EAAC,GAAG,QAAQ,KAAK;AAAA,QAC7C,QAAQ,EAAC,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG,KAAK,EAAC,GAAG,QAAQ,KAAK;AAAA,QACtD,QAAQ,EAAC,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,KAAK,EAAC,GAAG,QAAQ,KAAK;AAAA,QAC/D,QAAQ,EAAC,GAAG,KAAK,GAAG,GAAG,KAAK,IAAI,KAAK,EAAC,GAAG,QAAQ,KAAK;AAAA,MACxD;AAAA,IACF;AAAA,EACF,CAAC;AAED,WAAS,YAAY,IAAI,OAAO,UAAU;AACxC,QAAI,QAAQ,MAAM,WAAW,IAAI,KAAK;AACtC,QAAI,KAAK,MAAM;AACf,QAAI,KAAK,MAAM;AAEf,QAAI,CAAC,MAAM,CAAC,IAAI;AAEd,aAAO,EAAC,GAAG,MAAM,GAAG,GAAG,MAAM,EAAC;AAAA,IAChC;AAEA,QAAIN,KAAI,SAAS;AACjB,QAAIC,KAAI,SAAS;AAGjB,QAAI,WAAW,MAAM;AACrB,QAAI,KAAK,KAAK,IAAID,KAAI,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAIC,KAAI,IAAI,KAAK,IAAI,QAAQ,CAAC;AACnF,QAAI,KAAK,KAAK,IAAID,KAAI,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAIC,KAAI,IAAI,KAAK,IAAI,QAAQ,CAAC;AAKnF,QAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;AAChD,UAAM,KAAK;AACX,UAAM,KAAK;AAGX,UAAM,MAAM,SAAS;AACrB,UAAM,MAAM,SAAS;AAErB,WAAO;AAAA,MACL,GAAG,MAAM,IAAI;AAAA,MACb,GAAG,MAAM,IAAI;AAAA,IACf;AAAA,EACF;AAEA,WAAS,QAAQ,QAAQ,UAAU;AACjC,QAAIb,IAAGC,IAAG,IAAI;AAMd,SAAKD,KAAI,OAAO,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AACvC,WAAK,OAAOA,EAAC,EAAE;AAEf,WAAKC,KAAID,KAAI,GAAGC,MAAK,KAAK,GAAG,UAAU,EAAEA,IAAG;AAC1C,aAAK,OAAOA,EAAC,EAAE;AAEf,YAAI,GAAG,YAAY,GAAG,KAAK,WAAW,GAAG,IAAI,GAAG;AAC9C,mBAAS,IAAI,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,QAAQ,QAAQ;AACvB,QAAID,IAAG,MAAM,OAAO,OAAO,UAAU,QAAQ;AAG7C,SAAKA,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,cAAQ,OAAOA,EAAC;AAChB,cAAQ,MAAM;AAEd,UAAI,MAAM,UAAU;AAMlB,gBAAQ,IAAI,MAAM,MAAM,KAAK,EAAC,KAAK,CAAC,IAAI4B,OAAM,GAAG,SAAS,CAACA,EAAC,GAAG,IAAI,EAAEA,EAAC,EAAC,CAAC;AAExE,mBAAW,MAAM,SAAS;AAC1B,iBAAS,YAAY,OAAO,MAAM,MAAM,GAAG,QAAQ;AACnD,cAAM,KAAK,OAAO,QAAQ,UAAU,MAAM,SAAS,CAAC;AAAA,MACtD;AAAA,IACF;AAGA,WAAO,QAAQ,QAAQ,SAAS,IAAI,IAAI;AACtC,UAAI,KAAK,GAAG;AACZ,UAAIC,MAAK,GAAG;AAEZ,UAAK,MAAMA,OAAOA,KAAI;AACpB,WAAG,WAAW;AAAA,MAChB,WAAW,IAAI;AACb,WAAG,WAAW;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,SAAS;AAAA,IACX,SAAS,SAAS,UAAU;AAC1B,UAAI,SAAS,CAAC;AACd,UAAI7B,IAAGC,IAAG,MAAM,MAAM;AAEtB,WAAKD,KAAI,GAAG,OAAO,SAAS,QAAQA,KAAI,MAAM,EAAEA,IAAG;AACjD,aAAKC,KAAI,GAAG,OAAO,SAASD,EAAC,EAAE,QAAQC,KAAI,MAAM,EAAEA,IAAG;AACpD,kBAAQ,SAASD,EAAC,EAAEC,EAAC;AACrB,iBAAO,KAAK,KAAK;AACjB,gBAAM,UAAU;AAAA,YACd,MAAM,IAAI,OAAO;AAAA,YACjB,UAAU;AAAA,YACV,UAAU;AAAA,YACV,MAAMD;AAAA,YACN,MAAM,MAAM;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAKA,aAAO,KAAK,SAAS8B,IAAGC,IAAG;AACzB,YAAI,KAAKD,GAAE;AACX,YAAI,KAAKC,GAAE;AAEX,eAAO,GAAG,SAAS,GAAG,OAClB,GAAG,OAAO,GAAG,OACb,GAAG,OAAO,GAAG;AAAA,MACnB,CAAC;AAED,WAAK,OAAO,MAAM;AAElB,aAAO;AAAA,IACT;AAAA,IAEA,QAAQ,SAAS,QAAQ;AACvB,UAAI,QAAQ;AACZ,UAAI/B,IAAG,MAAM,OAAO,OAAO;AAE3B,WAAKA,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,gBAAQ,OAAOA,EAAC;AAChB,gBAAQ,MAAM,MAAM;AACpB,gBAAQ,MAAM;AACd,cAAM,WAAW,SAAS,MAAM,YAAY;AAC5C,cAAM,WAAW,MAAM,QAAQ;AAC/B,iBAAS,MAAM;AAAA,MACjB;AAEA,UAAI,OAAO;AACT,gBAAQ,MAAM;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,QAAQ,SAAS,QAAQ,OAAO;AAC9B,UAAIA,IAAG;AAKP,WAAKA,KAAI,OAAO,SAAS,GAAGA,MAAK,GAAG,EAAEA,IAAG;AACvC,gBAAQ,OAAOA,EAAC,EAAE;AAElB,YAAI,SAAS,MAAM,YAAY,MAAM,KAAK,SAAS,KAAK,GAAG;AACzD,iBAAO,OAAOA,EAAC;AAAA,QACjB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,SAAS,OAAO,QAAQ;AAC5B,UAAIA,IAAG,MAAM,OAAO,OAAO,UAAU;AAErC,WAAKA,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,gBAAQ,OAAOA,EAAC;AAChB,gBAAQ,MAAM;AAEd,YAAI,MAAM,UAAU;AAClB,qBAAW,MAAM,SAAS;AAC1B,mBAAS,YAAY,MAAM,KAAK,MAAM,MAAM,GAAG,QAAQ;AACvD,gBAAM,KAAK,OAAO,QAAQ,UAAU,MAAM,SAAS,CAAC;AACpD,gBAAM,KAAK,OAAO,MAAM;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY,SAAS,OAAO;AAC9B,QAAID,eAAc,KAAK,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ;AACZ,QAAI,MAAM,MAAMiC;AAChB,QAAIC,UAAS,KAAK,GAAG;AACnB,UAAI,CAAClC,eAAc,MAAM,KAAK,GAAG;AAC/B,gBAAQ,MAAM;AAAA,MAChB,WAAW,CAACA,eAAc,MAAM,CAAC,GAAG;AAClC,gBAAQ,MAAM;AAAA,MAChB,OAAO;AACL,gBAAQ;AACR,eAAO,OAAO,KAAK,KAAK;AACxB,aAAKiC,KAAI,GAAG,OAAO,KAAK,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC7C,oBAAUA,OAAM,IAAI,OAAO,MAAM,KAAKA,EAAC,IAAI,OAAO,MAAM,KAAKA,EAAC,CAAC;AAAA,QACjE;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK;AAAA,EACd;AAOA,MAAIV,YAAW;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,WAAW,CAAC;AAAA,IACZ,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,MACP,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,EACnB;AAMA,MAAIY,eAAc;AAClB,MAAI,cAAc;AAElB,WAAS,UAAU,SAAS,SAAS;AACnC,QAAI,WAAW,QAAQ;AACvB,QAAIC,aAAY,CAAC;AACjB,QAAI,UAAU,CAAC;AACf,QAAI,QAAQ;AAEZ,QAAI,aAAa,OAAO;AACtB,aAAO;AAAA,IACT;AACA,QAAI,aAAa,MAAM;AACrB,iBAAW,CAAC;AAAA,IACd;AAEA,cAAUhB,OAAM,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC;AACvC,aAAS,QAAQ,UAAU,CAAC;AAC5B,WAAO,OAAO,KAAK,MAAM;AACzB,WAAO,QAAQ;AAEf,QAAI,KAAK,QAAQ;AACf,WAAK,QAAQ,SAAS,KAAK;AACzB,YAAI,OAAO,GAAG,GAAG;AACf,kBAAQ,KAAKA,OAAM,CAAC,GAAG;AAAA,YACrB;AAAA,YACA,OAAO,GAAG;AAAA,YACV,EAAC,MAAM,IAAG;AAAA,UACZ,CAAC,CAAC;AAAA,QACJ;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AAEL,cAAQ,KAAK,OAAO;AAAA,IACtB;AAGA,IAAAgB,aAAY,QAAQ,OAAO,SAAS,QAAQ7B,SAAQ;AAClD,MAAA8B,MAAK9B,QAAO,aAAa,CAAC,GAAG,SAAS,IAAI+B,QAAO;AAC/C,eAAOA,MAAK,IAAI,OAAOA,MAAK,KAAK,CAAC;AAClC,eAAOA,MAAK,EAAE/B,QAAO,QAAQ,WAAW,IAAI;AAAA,MAC9C,CAAC;AAED,aAAOA,QAAO;AACd,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAEL,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,WAAW6B;AAAA,IACb;AAAA,EACF;AAEA,WAASG,eAAc,OAAOH,YAAW,OAAOE,QAAO;AACrD,QAAI,CAACF,YAAW;AACd;AAAA,IACF;AAEA,QAAI,UAAU,MAAM;AACpB,QAAI,SAAS,MAAM;AACnB,QAAI;AAEJ,QAAI,CAACA,WAAU,OAAO,IAAI,GAAG;AAC3B;AAAA,IACF;AAEA,iBAAaA,WAAU,OAAO,IAAI,EAAE,OAAO,IAAI;AAC/C,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AAEA,QAAIV,UAAS,YAAY,CAAC,SAASY,MAAK,CAAC,MAAM,MAAM;AAKnD,YAAMH,YAAW,EAAE,SAAS;AAC5B,YAAM,OAAO,OAAO;AAAA,IACtB;AAAA,EACF;AAEA,WAAS,mBAAmB,OAAOC,YAAW,UAAU,OAAOE,QAAO;AACpE,QAAI,OAAO;AAEX,QAAI,CAAC,YAAY,CAAC,OAAO;AACvB;AAAA,IACF;AAEA,QAAI,CAAC,UAAU;AACb,cAAQ;AAAA,IACV,WAAW,CAAC,OAAO;AACjB,cAAQ;AAAA,IACV,WAAW,aAAa,OAAO;AAC7B,cAAQ,QAAQ;AAAA,IAClB;AAEA,QAAI,OAAO;AACT,MAAAC,eAAc,OAAOH,WAAU,OAAO,UAAUE,MAAK;AAAA,IACvD;AACA,QAAI,OAAO;AACT,MAAAC,eAAc,OAAOH,WAAU,OAAO,OAAOE,MAAK;AAAA,IACpD;AAAA,EACF;AAEA,WAAS,iBAAiB,OAAOA,QAAO;AACtC,QAAIE,WAAU,MAAML,YAAW;AAC/B,QAAIC,aAAYI,SAAQ;AACxB,QAAI,UAAU;AAEd,QAAI,CAACJ,WAAU,SAAS,CAACA,WAAU,OAAO;AACxC;AAAA,IACF;AAEA,QAAIE,OAAM,SAAS,aAAa;AAC9B,cAAQ,OAAO,OAAOE,SAAQ,SAASF,MAAK;AAAA,IAC9C,WAAWA,OAAM,SAAS,YAAY;AACpC;AAAA,IACF;AAEA,eAAWE,SAAQ;AACnB,IAAAA,SAAQ,WAAW;AACnB,uBAAmB,OAAOJ,YAAW,UAAU,OAAOE,MAAK;AAAA,EAC7D;AAEA,WAAS,kBAAkB,OAAOA,QAAO;AACvC,QAAIE,WAAU,MAAML,YAAW;AAC/B,QAAI,WAAWK,SAAQ,WAAW;AAClC,QAAI,QAAQ,YAAY,OAAO,OAAOA,SAAQ,SAASF,MAAK;AAC5D,QAAI,OAAO;AACT,MAAAC,eAAc,OAAO,UAAU,OAAOD,MAAK;AAAA,IAC7C;AAAA,EACF;AAEA,MAAI,SAAS;AAAA,IACX,IAAI;AAAA,IAEJ,UAAUf;AAAA,IAEV,YAAY,SAAS,OAAO;AAC1B,YAAMY,YAAW,IAAI;AAAA,QACnB,UAAU,CAAC;AAAA,MACb;AAAA,IACF;AAAA,IAEA,cAAc,SAAS,OAAO;AAC5B,UAAIK,WAAU,MAAML,YAAW;AAC/B,MAAAK,SAAQ,YAAY;AACpB,MAAAA,SAAQ,aAAa,CAAC;AACtB,MAAAA,SAAQ,YAAY,CAAC;AACrB,MAAAA,SAAQ,UAAU,CAAC;AAAA,IACrB;AAAA,IAEA,oBAAoB,SAAS,OAAO,MAAM,SAAS;AACjD,UAAI,eAAe,KAAK;AACxB,UAAIA,WAAU,MAAML,YAAW;AAC/B,UAAI,SAASK,SAAQ,UAAU,YAAY,IAAI,CAAC;AAChD,UAAI,UAAU,MAAM,iBAAiB,YAAY;AACjD,UAAI,UAAU,MAAM,KAAK,SAAS,YAAY;AAC9C,UAAIjC,UAAS,UAAU,SAAS,OAAO;AACvC,UAAIkC,YAAW,KAAK,KAAK,QAAQ,CAAC;AAClC,UAAI,MAAM,MAAM;AAChB,UAAIxC,IAAGC,IAAG,MAAM,MAAM,KAAK,KAAK,IAAI;AAEpC,UAAI,KAAK;AAET,WAAKD,KAAI,GAAG,OAAOwC,UAAS,QAAQxC,KAAI,MAAM,EAAEA,IAAG;AACjD,aAAKwC,UAASxC,EAAC;AACf,WAAGkC,YAAW,IAAI,CAAC;AAEnB,YAAI,WAAW,MAAM,MAAM,kBAAkBlC,EAAC,KAAK,CAAC,GAAG,MAAM;AAC3D,eAAKC,KAAI,GAAG,OAAOK,QAAO,OAAO,QAAQL,KAAI,MAAM,EAAEA,IAAG;AACtD,kBAAMK,QAAO,OAAOL,EAAC;AACrB,kBAAM,IAAI;AAEV,oBAAQ,IAAI,MAAM,KAAK,KAAK,IAAID,EAAC;AACjC,kBAAM,UAAU;AAAA,cACd,MAAM;AAAA,cACN,MAAM,OAAO;AAAA,YACf;AACA,kBAAM,WAAW;AAAA,cACf,QAAQ;AAAA,cACR;AAAA,cACA,WAAWA;AAAA,cACX;AAAA,cACA;AAAA,YACF;AAEA,kBAAM,OAAO,MAAM,QAAQ;AAC3B,eAAGkC,YAAW,EAAE,KAAK,KAAK;AAC1B,mBAAO,KAAK,KAAK;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,QAAQ;AAIZ,MAAAf,OAAMoB,SAAQ,YAAYjC,QAAO,WAAW;AAAA,QAC1C,QAAQ,SAAS+B,QAAO,QAAQ,QAAQ;AACtC,iBAAOA,MAAK,IAAI,OAAOA,MAAK,KAAK,CAAC;AAClC,iBAAOA,MAAK,EAAE,KAAK,KAAK,IAAI,OAAOA,MAAK;AACxC,UAAAE,SAAQ,YAAY;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,aAAa,SAAS,OAAO;AAC3B,YAAML,YAAW,EAAE,UAAU,OAAO,QAAQ,MAAMA,YAAW,EAAE,SAAS;AAAA,IAC1E;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAmB,SAAS,OAAO;AACjC,aAAO,KAAK,OAAO,MAAMA,YAAW,EAAE,OAAO;AAAA,IAC/C;AAAA,IAEA,aAAa,SAAS,OAAO,MAAM;AAIjC,UAAI,MAAMA,YAAW,EAAE,WAAW;AAChC,YAAIG,SAAQ,KAAK;AACjB,gBAAQA,OAAM,MAAM;AAAA,UACpB,KAAK;AAAA,UACL,KAAK;AACH,6BAAiB,OAAOA,MAAK;AAC7B;AAAA,UACF,KAAK;AACH,8BAAkB,OAAOA,MAAK;AAC9B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,YAAY,SAAS,OAAO;AAC1B,UAAIE,WAAU,MAAML,YAAW;AAC/B,UAAI,WAAWK,SAAQ;AACvB,UAAI,UAAUA,SAAQ,WAAW,MAAM,kBAAkB;AACzD,UAAI,UAAU,MAAM,UAAU,UAAU,OAAO;AAC/C,UAAIvC,IAAG,MAAMC,IAAG,MAAM,QAAQ,OAAO;AAErC,WAAKD,KAAI,GAAG,OAAO,QAAQ,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAChD,iBAAS,QAAQA,EAAC;AAClB,YAAI,OAAO,CAAC,GAAG;AACb,mBAAS,OAAO,CAAC,EAAE,QAAQkC,YAAW,KAAK,CAAC;AAC5C,eAAKjC,KAAI,GAAG,OAAO,OAAO,QAAQA,KAAI,MAAM,EAAEA,IAAG;AAC/C,oBAAQ,OAAOA,EAAC;AAChB,kBAAM,SAAS,SAAU,OAAO,CAAC,MAAM;AACvC,kBAAM,OAAO,MAAM,QAAQ;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAEA,UAAIsC,SAAQ,UAAU,QAAQ,QAAQ;AACpC,eAAO,OAAOA,SAAQ,OAAO;AAC7B,cAAM,OAAO;AAAA,MACf;AAEA,aAAOA,SAAQ;AAAA,IACjB;AAAA,EACF;;;ACp0CA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAAE;AAAA,IAAA;AAAA,mBAAAA;AAAA,IAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC6BA,MAAA;;KAAA,WAAA;AAAA,eAAAC,sBAAA;MA2BA;AA1BS,MAAAA,oBAAA,mBAA2B;AAC3B,MAAAA,oBAAA,UAA6B;QAClC,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,QAAQ;QACR,eAAc;QACd,gBAAe;;AAEV,MAAAA,oBAAA,aAAmC;QACxC,eAAe;QACf,oBAAoB;;AAEf,MAAAA,oBAAA,OAAuB;QAC5B,WAAW;QACX,gBAAgB;;AAEX,MAAAA,oBAAA,SAAkB;QACvB,aAAa,CAAC,aAAa,YAAY;QACvC,aAAa,CAAC,aAAa,WAAW;QACtC,WAAW,CAAC,WAAW,UAAU;QACjC,cAAc,CAAC,QAAQ;QACvB,kBAAkB;QAClB,aAAa;QACb,iBAAiB;;AAErB,aAAAA;OA3BA;;;;AC7BA,MAAA;;IAAA,4BAAA;AAAA,eAAAC,cAAA;AACE,aAAA,SAAiB;AACjB,aAAA,QAAgB;MAClB;AAAA,aAAAA;IAAA,GAHA;;AAKA,MAAA;;IAAA,4BAAA;AAAA,eAAAC,eAAA;AACE,aAAA,IAAmB;AACnB,aAAA,gBAAyB;MAC3B;AAAA,aAAAA;IAAA,GAHA;;AAKA,MAAA;;IAAA,4BAAA;AAOE,eAAAC,oBAAY,QAA8B,aAA2B;AAJrE,aAAA,UAAuB,IAAI,YAAW;AACtC,aAAA,iBAA6B,IAAI,WAAU;AAC3C,aAAA,YAAwB,IAAI,WAAU;AAGlC,aAAK,SAAS;AACd,aAAK,cAAc;MACvB;AACF,aAAAA;IAAA,GAXA;;;;ACNA,MAAA;;KAAA,WAAA;AAAA,eAAAC,aAAA;MA6BA;AArBS,MAAAA,WAAA,uBAAP,SAA4B,KAAW;AACrC,eAAO,IAAI,QAAQA,WAAU,gBAAgB,SAAUC,IAAC;AAAI,iBAAOA,GAAE,CAAC,EAAE,YAAW;QAAI,CAAC;MAC1F;AAEO,MAAAD,WAAA,oBAAP,SAAyB,KAAW;AAClC,YAAI,IAAI,UAAU,KAAKA,WAAU,eAAe,KAAK,GAAG;AACtD,iBAAO;AAET,YAAIA,WAAU,UAAU,KAAK,GAAG;AAC9B,iBAAO;AAET,YAAIA,WAAU,WAAW,KAAK,GAAG;AAC/B,iBAAO;AAET,YAAIA,WAAU,qBAAqB,KAAK,GAAG,GAAG;AAC5C,cAAM,OAAO,CAAC;AACd,cAAI,CAAC,MAAM,IAAI;AACb,mBAAO;;AAEX,eAAO;MACT;AA3BO,MAAAA,WAAA,mBAA2B;AAC3B,MAAAA,WAAA,iBAAyB;AACzB,MAAAA,WAAA,YAAoB;AACpB,MAAAA,WAAA,aAAqB;AACrB,MAAAA,WAAA,iBAAyB;AACzB,MAAAA,WAAA,uBAA+B;AAuBxC,aAAAA;OA7BA;;;;ACFA,MAAA;;KAAA,WAAA;AAAA,eAAAE,gBAAA;MAyBA;AAxBS,MAAAA,cAAA,0BAAP,SAA+B,IAAe;AAC5C,YAAI,CAAC;AACH,iBAAO;AAET,YAAM,cAAuC,CAAA;AAC7C,YAAI,GAAG,SAAS;AACd,mBAAS,QAAQ,GAAG,SAAS;AAC3B,gBAAI,GAAG,QAAQ,eAAe,IAAI,GAAG;AACnC,0BAAY,IAAI,IAAI,UAAU,kBAAkB,GAAG,QAAQ,IAAI,KAAK,EAAE;;;eAIvE;AACH,mBAASC,KAAI,GAAGA,KAAI,GAAG,WAAW,QAAQA,MAAK;AAC7C,gBAAI,CAAC,UAAU,KAAK,GAAG,WAAWA,EAAC,EAAE,IAAI;AACvC;AAEF,gBAAM,SAAO,UAAU,qBAAqB,GAAG,WAAWA,EAAC,EAAE,KAAK,QAAQ,SAAS,EAAE,CAAC;AACtF,wBAAY,MAAI,IAAI,UAAU,kBAAkB,GAAG,WAAWA,EAAC,EAAE,KAAK;;;AAI1E,eAAO;MACT;AACF,aAAAD;IAAA,GAzBA;;;;ACKA,MAAA;;KAAA,WAAA;AAQE,eAAAE,kBAAY,SAA+B,SAAkC;AAAjE,YAAA,YAAA,QAAA;AAAA,oBAAA;QAA6B;AAAE,YAAA,YAAA,QAAA;AAAA,oBAAA;QAAkC;AAC3E,aAAK,iBAAiB;AACtB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,mBAAmB;AACxB,aAAK,sBAAsB;AAC3B,aAAK,QAAQ;AAEb,aAAK,eAAe,OAAO;AAC3B,aAAK,0BAA0B,OAAO;MACxC;AAGA,MAAAA,kBAAA,UAAA,iBAAA,SAAe,SAA6B;AAA7B,YAAA,YAAA,QAAA;AAAA,oBAAA;QAA6B;AAC1C,YAAI,CAAC;AACH;AAEF,iBAAS,QAAQ,SAAS;AACxB,cAAI,KAAK,eAAe,IAAI,GAAG;AAC5B,iBAAa,IAAI,IAAK,QAAgB,IAAI;;;MAGjD;AAEA,MAAAA,kBAAA,UAAA,4BAAA,SAA0B,SAAkC;AAAlC,YAAA,YAAA,QAAA;AAAA,oBAAA;QAAkC;AAC1D,YAAI,CAAC;AACH;AAEF,YAAM,iBAAiB,aAAa,wBAAwB,OAAO;AACnE,aAAK,eAAe,cAAc;MACpC;AACF,aAAAA;IAAA,GAvCA;;;;ACMA,MAAA;;KAAA,WAAA;AAoBE,eAAAC,uBAAY,OAAyB,SAAgC;AACnE,YAAI,OAAO,UAAU,YAAY,UAAU,QAAiB,MAAO,SAAQ,MAAO;AAChF,gBAAM;AAER,YAAI,OAAQ,MAAc,mBAAmB,gBAAgB,MAAM;AACjE,gBAAM,aAAA,OAAa,mBAAmB,kBAAgB;8BAAA,EAAA,OAA6C,mBAAmB,kBAAgB,oBAAA;AAExI,aAAK,KAAKA,uBAAsB,cAAa;AAC7C,aAAK,QAAQ;AACb,aAAK,UAAU,IAAI,iBAAiB,SAAS,KAAK;AAElD,aAAK,UAAU;AACf,aAAK,gBAAgB,MAAM;AAC3B,aAAK,eAAe,CAAA;AACpB,aAAK,uBAAuB;AAC5B,aAAK,iBAAiB,CAAA;AACtB,aAAK,YAAY;AACjB,aAAK,kBAAkB;AAEvB,aAAK,KAAI;AAER,aAAK,MAAc,mBAAmB,gBAAgB,IAAI;MAC7D;AAEA,MAAAA,uBAAA,UAAA,OAAA,WAAA;AACE,aAAK,eAAc;AACnB,aAAK,wBAAuB;AAC5B,aAAK,UAAS;AACd,aAAK,mBAAkB;AACvB,aAAK,oBAAmB;AACxB,aAAK,gBAAe;AACpB,aAAK,kBAAiB;AACtB,aAAK,oBAAmB;AACxB,aAAK,gBAAe;AACpB,aAAK,iBAAgB;AACrB,aAAK,4BAA2B;MAClC;AAEA,MAAAA,uBAAA,UAAA,UAAA,WAAA;AACE,aAAK,mBAAkB;AACvB,aAAK,sBAAqB;AAC1B,aAAK,YAAW;AAChB,aAAK,mBAAmB;AACxB,aAAK,mBAAmB;AACxB,aAAK,iBAAiB;AACrB,aAAK,MAAc,mBAAmB,gBAAgB,IAAI;MAC7D;AAEA,MAAAA,uBAAA,UAAA,iBAAA,WAAA;AACE,YAAI,aAAa;AACjB,YAAI,aAAa;AACjB,YAAI,QAA0B;AAC9B,iBAASC,SAAQ,GAAGA,SAAQ,KAAK,MAAM,WAAW,QAAQA,UAAS;AACjE,cAAM,UAAU,KAAK,MAAM,WAAWA,MAAK;AAC3C,cAAI,QAAQ,aAAa,SAAS;AAChC;AACA,oBAAQ;qBAED,QAAQ,aAAa,SAAS;AACrC;;;AAIJ,YAAI,UAAU,QAAQ,eAAe;AACnC,gBAAM,wIAAA,OAAwI,UAAU;AAE1J,YAAI,eAAe;AACjB,gBAAM,wIAAA,OAAwI,UAAU;AAE1J,YAAI,gBAAgB;AACpB,YAAI,WAA6B;AACjC,iBAASA,SAAQ,GAAGA,SAAQ,MAAM,WAAW,QAAQA,UAAS;AAC5D,cAAM,UAAU,MAAM,WAAWA,MAAK;AACtC,cAAI,QAAQ,aAAa,MAAM;AAC7B;AACA,gBAAI,aAAa,MAAM;AACrB,yBAAW;;;;AAKjB,YAAI,aAAa,QAAQ,gBAAgB;AACvC,gBAAM,yJAAA,OAAyJ,aAAa;AAE9K,YAAI,mBAAmB;AACvB,YAAI,0BAA0B;AAC9B,iBAASA,SAAQ,GAAGA,SAAQ,SAAS,WAAW,QAAQA,UAAS;AAC/D,cAAM,UAAU,SAAS,WAAWA,MAAK;AACzC,cAAI,QAAQ,aAAa,MAAM;AAC7B;qBACS,QAAQ,aAAa,MAAM;AACpC;;;AAIJ,YAAI,mBAAmB;AACrB,gBAAM,yLAAA,OAAyL,gBAAgB;AAEjN,YAAI,4BAA4B;AAC9B,gBAAM,yKAAA,OAAyK,uBAAuB;MAC1M;AAEA,MAAAD,uBAAA,UAAA,YAAA,WAAA;AACE,YAAI,KAAK;AACP;AAEF,aAAK,UAAU,KAAK,cAAc,cAAc,KAAK;AACrD,aAAK,QAAQ,UAAU,IAAI,mBAAmB,QAAQ,OAAO;AAE7D,YAAM,sBAAsB,KAAK,MAAM;AACvC,4BAAoB,aAAa,KAAK,SAAS,KAAK,KAAK;AACzD,4BAAoB,YAAY,KAAK,KAAK;AAC1C,aAAK,QAAQ,YAAY,KAAK,KAAK;AACnC,aAAK,MAAM,UAAU,IAAI,mBAAmB,QAAQ,KAAK;MAC3D;AAEA,MAAAA,uBAAA,UAAA,cAAA,WAAA;AACE,aAAK,MAAM,UAAU,OAAO,mBAAmB,QAAQ,KAAK;AAC5D,YAAI,CAAC,KAAK;AACR;AAEF,YAAM,sBAAsB,KAAK,QAAQ;AACzC,4BAAoB,aAAa,KAAK,OAAO,KAAK,OAAO;AACzD,4BAAoB,YAAY,KAAK,OAAO;AAC5C,aAAK,UAAU;MACjB;AAEA,MAAAA,uBAAA,UAAA,qBAAA,WAAA;AACE,YAAI;AACJ,YAAI;AACJ,iBAASC,SAAQ,GAAGA,SAAQ,KAAK,MAAM,WAAW,QAAQA,UAAS;AACjE,cAAM,UAAU,KAAK,MAAM,WAAWA,MAAK;AAC3C,cAAI,QAAQ,aAAa,SAAS;AAChC,0BAAc;AACd;;;AAIJ,YAAI,CAAC;AACH;AAEF,iBAASA,SAAQ,GAAGA,SAAQ,YAAY,WAAW,QAAQA,UAAS;AAClE,cAAM,UAAU,YAAY,WAAWA,MAAK;AAC5C,cAAI,QAAQ,aAAa,MAAM;AAC7B,4BAAgB;AAChB;;;AAIJ,YAAI,CAAC;AACH;AAGF,iBAASA,SAAQ,GAAGA,SAAQ,cAAc,WAAW,QAAQA,UAAS;AACpE,cAAM,UAAU,cAAc,WAAWA,MAAK;AAC9C,cAAI,QAAQ,aAAa,MAAM;AAC7B,iBAAK,aAAa,KAAK,OAAqC;;;MAGlE;AAEA,MAAAD,uBAAA,UAAA,sBAAA,WAAA;AAAA,YAAA,QAAA;AACE,aAAK,aACF,QAAQ,SAAA,IAAE;AACT,gBAAK,eAAe,KAAK;YACvB;YACA,QAAQ,GAAG,MAAM;WAClB;QACH,CAAC;AACH,aAAK,eAAe,KAAK;UACvB,IAAI,KAAK;UACT,QAAQ,KAAK,MAAM,MAAM;SAC1B;MACH;AAEA,MAAAA,uBAAA,UAAA,wBAAA,WAAA;AACE,aAAK,eACF,QAAQ,SAAA,KAAG;AACV,cAAI,GAAG,MAAM,QAAQ,IAAI;QAC3B,CAAC;MACL;AAEA,MAAAA,uBAAA,UAAA,kBAAA,WAAA;AAAA,YAAA,QAAA;AACE,aAAK,aACF,QAAQ,SAAA,IAAE;AACT,cAAM,QAAQ,GAAG;AACjB,cAAI,mBAAmB,MAAK,eAAe,IAAI,KAAK;AACpD,cAAI,OAAO,MAAK,QAAQ,wBAAwB,UAAU;AACxD,+BAAmB,KAAK,IAAI,kBAAkB,MAAK,QAAQ,mBAAmB;;AAEhF,gBAAK,YAAY,IAAI,kBAAkB,MAAM,KAAK;QACpD,CAAC;MACL;AAEA,MAAAA,uBAAA,UAAA,iBAAA,SAAe,IAAiB,OAAa;AAC3C,YAAI,SAAiB;AACrB,iBAAS,KAAK,IAAI,QAAQ,KAAK,QAAQ,YAAY,SAAS;AAC5D,iBAAS,KAAK,IAAI,QAAQ,KAAK,QAAQ,YAAY,QAAS;AAC5D,eAAO;MACT;AAEA,MAAAA,uBAAA,UAAA,oBAAA,WAAA;AAAA,YAAA,QAAA;;AACE,YAAI,KAAK,wBAAwB;AAC/B,gBAAM;AAGR,aAAK,uBAAuB,KAAK,cAAc,cAAc,KAAK;AAClE,SAAAE,MAAA,KAAK,aAAO,QAAAA,QAAA,SAAA,SAAAA,IAAE,aAAa,KAAK,sBAAsB,KAAK,KAAK;AAChE,aAAK,qBAAqB,UAAU,IAAI,mBAAmB,QAAQ,eAAe;AAElF,aAAK,oBAAmB,EACrB,QAAQ,WAAA;;AACP,cAAM,UAAU,MAAK,cAAc,cAAc,KAAK;AACtD,kBAAQ,UAAU,IAAI,mBAAmB,QAAQ,MAAM;AACvD,WAAAA,MAAA,MAAK,0BAAoB,QAAAA,QAAA,SAAA,SAAAA,IAAE,YAAY,OAAO;QAChD,CAAC;AAEH,2BAAmB,OAAO,YACvB,QAAQ,SAAC,KAAK,QAAM;;AACnB,WAAAA,MAAA,MAAK,0BAAoB,QAAAA,QAAA,SAAA,SAAAA,IAAE,iBAAiB,KAAK,MAAK,kBAAkB,KAAK;QAC/E,CAAC;MACL;AAEA,MAAAF,uBAAA,UAAA,qBAAA,WAAA;AAAA,YAAA,QAAA;;AACE,YAAI,KAAK,yBAAyB,MAAM;AACtC,6BAAmB,OAAO,YACvB,QAAQ,SAAC,KAAK,QAAM;;AACnB,aAAAE,MAAA,MAAK,0BAAoB,QAAAA,QAAA,SAAA,SAAAA,IAAE,oBAAoB,KAAK,MAAK,kBAAkB,KAAK;UAClF,CAAC;AACH,WAAA,MAAAA,MAAA,KAAK,0BAAoB,QAAAA,QAAA,SAAA,SAAAA,IAAE,mBAAa,QAAA,OAAA,SAAA,SAAA,GAAE,YAAY,KAAK,oBAAoB;;MAEnF;AAEA,MAAAF,uBAAA,UAAA,kBAAA,WAAA;AACE,YAAM,QAAQ,KAAK,wBAAwB,OACvC,OACA,KAAK,qBAAqB,iBAAiB,IAAA,OAAI,mBAAmB,QAAQ,MAAM,CAAE;AAEtF,eAAO,QACH,MAAM,UAAU,MAAM,KAAK,KAAK,EAAE,OAAO,SAAC,IAAE;AAAO,iBAAO,GAAG,aAAa;QAAM,CAAC,IACjF,IAAI,MAAK;MACf;AAEA,MAAAA,uBAAA,UAAA,sBAAA,WAAA;AACE,YAAI,CAAC,KAAK,QAAQ;AAChB;AAEF,YAAM,UAAUA,uBAAsB,gBAAgB,KAAK,KAAK;AAChE,YAAI,QAAQ,WAAW;AACrB;AAEF,YAAM,OAAO,KAAK,QAAQ,MAAM,IAAI,OAAO;AAC3C,YAAI,CAAC;AACH;AAEF,aAAK,oBAAmB,EACrB,QAAQ,SAAA,IAAE;AACT,cAAM,QAAQ,KAAK,QAAQA,uBAAsB,iBAAiB,EAAE,CAAC;AACrE,cAAI,OAAO,UAAU,aAAa;AAChC,YAAAA,uBAAsB,SAAS,IAAI,KAAK;;QAE5C,CAAC;AAEH,YAAI,OAAO,KAAK,UAAU,aAAa;AACrC,UAAAA,uBAAsB,SAAS,KAAK,OAAO,KAAK,KAAK;;MAEzD;AAEA,MAAAA,uBAAA,UAAA,kBAAA,WAAA;;AACE,YAAI,eAAgB,KAAK,QAAwB;AACjD,YAAI,aAAa,KAAK,MAAM;AAC5B,YAAI,aAAa,eAAe;AAChC,YAAI,cAAc;AAChB;AAEF,YAAI,iBAAiB;AACrB,YAAI,aAAa;AACjB,YAAI,iBAA2C,CAAA;AAE/C,aAAK,aACF,QAAQ,SAAC,IAAI,KAAG;AACf,cAAI,GAAG,aAAa,mBAAmB,WAAW,aAAa,GAAG;AAChE,gBAAM,SAAiC;cACrC;cACA,QAAQ,GAAG;;AAEb,2BAAe,KAAK,MAAM;AAC1B,8BAAkB,OAAO;;QAE7B,CAAC;AAEH,YAAI,YAAY;AAChB,YAAI,oBAAwC;AAC5C,YAAI;AACJ,eAAQ,gBAAgB,eAAe,MAAK,GAA+B;AACzE,sBAAY,aAAa;AAEzB,8BAAoB,cAAc;AAClC,cAAI,aAAa,KAAK,MAAO,cAAc,SAAS,iBAAkB,UAAU;AAChF,uBAAa,KAAK,IAAI,YAAY,SAAS;AAC3C,cAAM,WAAW,KAAK,YAAY,cAAc,IAAI,cAAc,SAAS,YAAY,OAAO,IAAI;AAClG,wBAAe,WAAW,cAAc;AAExC,cAAI,cAAc;AAChB;;AAGJ,oBAAY,aAAa;AACzB,YAAI,YAAY,GAAG;AACjB,cAAM,aAAYE,MAAA,eAAe,CAAC,OAAC,QAAAA,QAAA,SAAA,SAAAA,IAAE,OAAO,qBAAqB,KAAK,aAAa,KAAK,aAAa,SAAS,CAAC;AAC/G,cAAM,gBAAgB,SAAS;AAC/B,eAAK,YAAY,UAAU,eAAe,MAAM,IAAI;;AAEtD,QAAAF,uBAAsB,SAAS,KAAK,OAAO,YAAY;MACzD;AAEA,MAAAA,uBAAA,UAAA,mBAAA,WAAA;AAAA,YAAA,QAAA;AACE,YAAM,aAAa,KAAK,MAAM;AAC9B,QAAAA,uBAAsB,SAAS,KAAK,sBAAwC,UAAU;AACrF,aAAK,qBAAwC,MAAM,WAAW,GAAA,OAAG,YAAU,IAAA;AAE5E,YAAM,UAAU,KAAK,oBAAmB;AACxC,aAAK,gBAAe,EACjB,QAAQ,SAAC,IAAI,KAAG;AACf,cAAM,UAAW,MAAK,QAAQ,iBAAiB,MAAK,QAAQ,MAAK,MAAM,OAAuB;AAE9F,cAAI,MAAM,QAAQ,QAAQ;AACxB,gBAAM,KAAK,QAAQ,GAAG;AACtB,gBAAI,OAAO,GAAG;AACd,oBAAQA,uBAAsB,UAAU,EAAE,EAAE;AAC5C,oBAAQA,uBAAsB,UAAU,MAAK,oBAAmC,EAAE;AAClF,eAAG,MAAM,OAAO,GAAA,OAAG,MAAI,IAAA;AACvB,eAAG,MAAM,SAAS,GAAA,OAAG,QAAM,IAAA;;QAE/B,CAAC;MACL;AAEA,MAAAA,uBAAA,UAAA,sBAAA,WAAA;AACE,eAAO,KAAK,aACT,OAAO,SAAC,IAAI,KAAG;AACd,iBAAO,GAAG,aAAa,mBAAmB,WAAW,aAAa;QACpE,CAAC;MACL;AAEA,MAAAA,uBAAA,UAAA,oBAAA,SAAkBG,QAAY;AAC5B,aAAK,gBAAe;AAEpB,YAAM,SAASA,SAAQA,OAAM,SAAwB;AACrD,YAAI,UAAU;AACZ;AAEF,YAAI,OAAO,aAAa,SAAS,CAAC,OAAO,UAAU,SAAS,mBAAmB,QAAQ,MAAM;AAC3F;AAEF,YAAI,OAAaA,OAAO,WAAW,YAAkBA,OAAO,WAAW;AACrE;AAEF,YAAM,cAA8B;AACpC,YAAM,YAAY,KAAK,gBAAe,EAAG,QAAQ,WAAW;AAC5D,YAAM,mBAAmB,KAAK,oBAAmB;AACjD,YAAI,aAAa,iBAAiB;AAChC;AAEF,YAAM,mBAAmB,oBAAI,KAAI,GAAI,QAAO;AAC5C,YAAM,gBAAiB,kBAAkB,KAAK,kBAAmB,KAAK,QAAQ;AAC9E,YAAM,SAAS,iBAAiB,SAAS;AACzC,YAAM,cAAc,OAAO;AAE3B,YAAM,SAAS;UACb,QAAQ;UACR,OAAO,KAAK,MAAM;;AAEpB,YAAM,YAAgC,IAAI,mBAAmB,QAAQ,WAAW;AAChF,kBAAU,UAAU;UAClB,GAAGH,uBAAsB,YAAYG,MAAK;UAC1C;;AAEF,kBAAU,iBAAiB;AAC3B,kBAAU,YAAY;AAEtB,aAAK,eAAc;AACnB,aAAK,eAAc;AAEnB,aAAK,MAAM,UAAU,IAAI,mBAAmB,QAAQ,aAAa;AAChE,aAAK,QAA2B,UAAU,IAAI,mBAAmB,QAAQ,aAAa;AACvF,oBAAY,UAAU,IAAI,mBAAmB,QAAQ,cAAc;AACnE,eAAO,UAAU,IAAI,mBAAmB,QAAQ,cAAc;AAE9D,aAAK,kBAAkB;AACvB,aAAK,YAAY;AAEjB,YAAI,kBAAkB,IAAI,YAAY,mBAAmB,OAAO,kBAAkB;UAChF,QAAQ;YACN;YACA;YACA,OAAO,KAAK;YACZ,YAAY,KAAK,MAAM;;SAE1B;AACD,aAAK,MAAM,cAAc,eAAe;AACxC,QAAAA,OAAM,eAAc;MACtB;AAEA,MAAAH,uBAAA,UAAA,oBAAA,SAAkBG,QAAY;AAC5B,YAAI,CAAC,KAAK,aAAa,CAACA;AACtB;AAEF,YAAI,cAAcH,uBAAsB,YAAYG,MAAK,KAAK,MAAM,KAAK,UAAU,QAAQ,KAAK;AAChG,YAAI,eAAe,GAAG;AACpB;;AAGF,YAAM,aAAa,KAAK,UAAU,eAAe,QAAQ;AACzD,YAAM,cAAc,KAAK,eACvB,KAAK,UAAU,QACf,KAAK,UAAU,eAAe,SAAS,UAAU;AAEnD,QAAAH,uBAAsB,SAAS,KAAK,OAAO,UAAU;AACrD,QAAAA,uBAAsB,SAAS,KAAK,UAAU,QAAQ,WAAW;AAEjE,aAAK,UAAU,YAAY;UACzB,QAAQ;UACR,OAAO;;AAGT,YAAI,kBAAkB,IAAI,YAAY,mBAAmB,OAAO,aAAa;UAC3E,QAAQ;YACN,QAAQ,KAAK,UAAU;YACvB;YACA,OAAO,KAAK;YACZ;;SAEH;AACD,aAAK,MAAM,cAAc,eAAe;MAC1C;AAEA,MAAAA,uBAAA,UAAA,kBAAA,WAAA;AACE,aAAK,eAAc;AAEnB,YAAI,CAAC,KAAK;AACR;AAEF,YAAI,KAAK,UAAU,QAAQ,eAAe;AACxC,eAAK,kBAAiB;;AAGxB,aAAK,MAAM,UAAU,OAAO,mBAAmB,QAAQ,aAAa;AACnE,aAAK,QAA2B,UAAU,OAAO,mBAAmB,QAAQ,aAAa;AAC1F,aAAK,UAAU,YAAY,UAAU,OAAO,mBAAmB,QAAQ,cAAc;AACrF,aAAK,UAAU,OAAO,UAAU,OAAO,mBAAmB,QAAQ,cAAc;AAEhF,aAAK,gBAAe;AACpB,aAAK,iBAAgB;AACrB,aAAK,oBAAmB;AACxB,aAAK,iBAAgB;AAErB,YAAM,SAAS,KAAK,UAAU,aAAa,KAAK,UAAU;AAC1D,YAAI,kBAAkB,IAAI,YAAY,mBAAmB,OAAO,iBAAiB;UAC/E,QAAQ;YACN,QAAQ,KAAK,UAAU;YACvB,aAAa,OAAO;YACpB,OAAO,KAAK;YACZ,YAAY,OAAO;;SAEtB;AACD,aAAK,MAAM,cAAc,eAAe;AAExC,aAAK,YAAY;MACnB;AAEA,MAAAA,uBAAA,UAAA,oBAAA,WAAA;AACE,YAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UAAU;AACrC;AAEF,YAAM,SAAS,KAAK,UAAU;AAC9B,YAAM,WAAW,KAAK,aAAa,QAAQ,MAAM;AAEjD,YAAI,WAAW;AACf,YAAI,gBAA0B,CAAA;AAC9B,aAAK,aACF,QAAQ,SAAC,IAAI,KAAG;AACf,cAAI,CAAC,GAAG,aAAa,mBAAmB,WAAW,aAAa,GAAG;AACjE,0BAAc,KAAK,GAAG;;QAE1B,CAAC;AAEH,YAAM,OAAO,KAAK,cAAc,cAAc,MAAM;AACpD,aAAK,MAAM,WAAW;AACtB,aAAK,MAAM,OAAO;AAClB,aAAK,MAAM,MAAM;AACjB,aAAK,MAAM,aAAa;AACxB,aAAK,cAAc,KAAK,YAAY,IAAI;AAGxC,YAAM,OAAO,KAAK,MAAM,iBAAiB,IAAI;AAC7C,iBAAS,WAAW,GAAG,WAAW,KAAK,QAAQ,YAAY;AACzD,cAAM,UAAU,KAAK,QAAQ;AAC7B,cAAM,QAAQ,QAAQ,iBAAiB,QAAQ;AAC/C,cAAI,eAAe;AAEnB,mBAAS,YAAY,GAAG,YAAY,MAAM,QAAQ,aAAa;AAC7D,gBAAM,OAAO,MAAM,SAAS;AAC5B,gBAAI,UAAU;AACd,gBAAI,KAAK,aAAa,SAAS,GAAG;AAChC,kBAAM,gBAAgB,KAAK,aAAa,SAAS,KAAK;AACtD,kBAAM,SAAS,SAAS,aAAa;AACrC,kBAAI,CAAC,MAAM,MAAM,GAAG;AAClB,0BAAU;qBACL;AACL,0BAAU;;;AAId,gBAAI,cAAc,QAAQ,SAAS,MAAM,MACpC,YAAY,KACZ,iBAAiB,UAAU;AAC9B,yBAAW,KAAK,IAAI,UAAUA,uBAAsB,aAA0B,MAAM,IAAI,CAAC;AACzF;;AAGF,4BAAgB;;;AAKpB,aAAK,cAAc,KAAK,YAAY,IAAI;AAExC,YAAI,aAAa,WAAW,OAAO;AACnC,YAAI,eAAe,GAAG;AACpB;;AAGF,YAAM,aAAa,KAAK,UAAU,eAAe,QAAQ;AACzD,YAAM,cAAc,KAAK,eAAe,KAAK,UAAU,QAAQ,KAAK,UAAU,eAAe,SAAS,UAAU;AAChH,QAAAA,uBAAsB,SAAS,KAAK,OAAO,UAAU;AACrD,QAAAA,uBAAsB,SAAS,KAAK,UAAU,QAAQ,WAAW;AAEjE,aAAK,UAAU,YAAY;UACzB,QAAQ;UACR,OAAO;;AAET,YAAI,kBAAkB,IAAI,YAAY,mBAAmB,OAAO,aAAa;UAC3E,QAAQ;YACN,QAAQ,KAAK,UAAU;YACvB;YACA,OAAO,KAAK;YACZ;;SAEH;AACD,aAAK,MAAM,cAAc,eAAe;AAExC,aAAK,gBAAe;AACpB,aAAK,iBAAgB;AACrB,aAAK,iBAAgB;MACvB;AAEA,MAAAA,uBAAA,UAAA,iBAAA,WAAA;AAAA,YAAA,QAAA;AACE,2BAAmB,OAAO,YACvB,QAAQ,SAAC,KAAK,QAAM;AACnB,gBAAK,cAAc,iBAAiB,KAAK,MAAK,kBAAkB,KAAK;QACvE,CAAC;AAEH,2BAAmB,OAAO,UACvB,QAAQ,SAAC,KAAK,QAAM;AACnB,gBAAK,cAAc,iBAAiB,KAAK,MAAK,gBAAgB,KAAK;QACrE,CAAC;MACL;AAEA,MAAAA,uBAAA,UAAA,iBAAA,WAAA;AAAA,YAAA,QAAA;AACE,2BAAmB,OAAO,YACvB,QAAQ,SAAC,KAAK,QAAM;AACnB,gBAAK,cAAc,oBAAoB,KAAK,MAAK,kBAAkB,KAAK;QAC1E,CAAC;AAEH,2BAAmB,OAAO,UACvB,QAAQ,SAAC,KAAK,QAAM;AACnB,gBAAK,cAAc,oBAAoB,KAAK,MAAK,gBAAgB,KAAK;QACxE,CAAC;MACL;AAEA,MAAAA,uBAAA,UAAA,sBAAA,WAAA;AACE,YAAI,KAAK,WAAW;AAClB;AAEF,YAAM,WAAW,KAAK,QAAQ,MAAM;AACpC,aAAK,QAAQ,MAAM,YAAY;AAC/B,aAAK,QAAQ,MAAM,YAAY;MACjC;AAEA,MAAAA,uBAAA,UAAA,mBAAA,WAAA;AACE,YAAI,CAAC,KAAK,QAAQ;AAChB;AAEF,YAAM,UAAUA,uBAAsB,gBAAgB,KAAK,KAAK;AAChE,YAAI,QAAQ,WAAW;AACrB;AAGF,YAAM,OAA+D;UACnE,OAAO,KAAK,MAAM;UAClB,SAAS,CAAA;;AAEX,aAAK,oBAAmB,EACrB,QAAQ,SAAA,IAAE;AACT,eAAK,QAAQA,uBAAsB,iBAAiB,EAAE,CAAC,IAAI,GAAG;QAChE,CAAC;AACH,aAAK,QAAQ,MAAM,IAAI,SAAS,IAAI;MACtC;AAEA,MAAAA,uBAAA,UAAA,0BAAA,WAAA;AAAA,YAAA,QAAA;AACE,YAAI,CAAC,KAAK,kBAAkB;AAC1B,eAAK,mBAAmBA,uBAAsB,SAC5C,SAAC,KAAU;AACT,kBAAK,kBAAkB,GAAG;UAC5B,GACA,KACA,IAAI;;AAIR,YAAI,CAAC,KAAK,kBAAkB;AAC1B,eAAK,mBAAmBA,uBAAsB,SAC5C,SAAC,KAAU;AACT,kBAAK,kBAAkB,GAAG;UAC5B,GACA,GACA,KAAK;;AAIT,YAAI,CAAC,KAAK,gBAAgB;AACxB,eAAK,iBAAiBA,uBAAsB,SAC1C,SAAC,KAAU;AACT,kBAAK,gBAAe;UACtB,GACA,KACA,IAAI;;MAGV;AAEA,MAAAA,uBAAA,UAAA,8BAAA,WAAA;AACE,YAAM,MAAM,KAAK,cAAc;AAC/B,YAAIA,uBAAsB;AACxB;AAEF,QAAAA,uBAAsB,yBAAyBA,uBAAsB,SAASA,uBAAsB,gBAAgB,IAAI,KAAK;AAC7H,2BAAmB,OAAO,aACvB,QAAQ,SAAC,KAAK,KAAG;AAChB,kBAAG,QAAH,QAAG,SAAA,SAAH,IAAK,iBAAiB,KAAKA,uBAAsB,wBAA+B,KAAK;QACvF,CAAC;MACL;AAEA,MAAAA,uBAAA,UAAA,qBAAA,WAAA;AACE,aAAK,gBAAe;AACpB,aAAK,iBAAgB;AACrB,aAAK,iBAAgB;MACvB;AAEA,MAAAA,uBAAA,UAAA,cAAA,SAAY,MAAmB,gBAAwB,oBAA6B,iBAAwB;AAC1G,YAAM,oBAAoB,KAAK;AAC/B,YAAM,cAAc,qBAChB,iBACA,KAAK,eAAe,MAAM,cAAc;AAE5C,QAAAA,uBAAsB,SAAS,MAAM,WAAW;AAChD,YAAI,CAAC,iBAAiB;AACpB,cAAM,aAAa,cAAc;AACjC,cAAM,aAAa,KAAK,MAAM,cAAc;AAC5C,UAAAA,uBAAsB,SAAS,KAAK,OAAO,UAAU;;AAIvD,eAAO;MACT;AAEO,MAAAA,uBAAA,iBAAP,SAAsBG,QAAY;AAChC,YAAM,MAAMA,SAAQA,OAAM,SAAmB;AAC7C,YAAI,OAAO;AACT;AAEF,YAAM,SAAS,IAAI,SAAS,iBAAiB,IAAA,OAAI,mBAAmB,QAAQ,KAAK,CAAE;AACnF,iBAASF,SAAQ,GAAGA,SAAQ,OAAO,QAAQA,UAAS;AAClD,cAAM,QAAQ,OAAOA,MAAK;AAC1B,cAAI,OAAQ,MAAc,mBAAmB,gBAAgB,MAAM;AACjE;AAED,gBAAc,mBAAmB,gBAAgB,EAAE,mBAAkB;;MAE1E;AAEO,MAAAD,uBAAA,mBAAP,SAAwB,IAAe;AACrC,YAAM,YAAY,GAAG,aAAa,mBAAmB,WAAW,aAAa,KAAK,IAC/E,KAAI,EACJ,QAAQ,OAAO,GAAG;AAErB,eAAO;MACT;AAEO,MAAAA,uBAAA,kBAAP,SAAuB,OAAuB;AAC5C,YAAM,WAAW,MAAM,aAAa,mBAAmB,WAAW,kBAAkB,KAAK,IACtF,KAAI,EACJ,QAAQ,OAAO,GAAG;AAErB,eAAO,QAAQ,SACX,OAAA,OAAO,OAAO,IACd;MACN;AAEO,MAAAA,uBAAA,WAAP,SAAgB,SAAsB,OAAa;AACjD,YAAI,WAAW,MAAM,QAAQ,CAAC;AAC9B,mBAAW,QAAQ,IAAI,WAAW;AAClC,gBAAQ,MAAM,QAAQ,GAAA,OAAG,UAAQ,IAAA;MACnC;AAEO,MAAAA,uBAAA,gBAAP,WAAA;AACE,eAAOA,uBAAsB;MAC/B;AAwBO,MAAAA,uBAAA,cAAP,SAAmBG,QAAY;AAC7B,YAAIA,OAAM,KAAK,QAAQ,OAAO,MAAM,GAAG;AACrC,cAAM,SAASA;AACf,cAAI,OAAO,WAAW,OAAO,QAAQ,QAAQ;AAC3C,mBAAO,OAAO,QAAQ,CAAC,EAAE;;AAG3B,cAAI,OAAO,kBAAkB,OAAO,eAAe,QAAQ;AACzD,mBAAO,OAAO,eAAe,CAAC,EAAE;;;AAGpC,eAAQA,OAAqB;MAC/B;AAEO,MAAAH,uBAAA,eAAP,SAAoB,gBAA6B,oBAA+B;;AAC9E,YAAI,CAAC,kBAAkB,CAAC;AACtB,iBAAO;AAET,YAAI,SAAOE,MAAA,eAAe,iBAAW,QAAAA,QAAA,SAAA,SAAAA,IAAE,KAAI,EAAG,QAAQ,OAAO,QAAQ,KAAI;AAEzE,YAAM,UAAS,KAAA,eAAe,cAAc,iBAAW,QAAA,OAAA,SAAA,SAAA,GAAE,iBAAiB,cAAc;AACxF,SAAC,cAAc,YAAY,cAAc,WAAW,UAAU,WAAW,EACtE,QAAQ,SAAC,MAAI;AACX,6BAAmB,MAAc,IAAI,IAAK,OAAe,IAAI;QAChE,CAAC;AAEH,2BAAmB,YAAY;AAC/B,eAAO,mBAAmB;MAC5B;AAEO,MAAAF,uBAAA,YAAP,SAAiB,IAAe;AAC9B,YAAI,CAAC;AACH,iBAAO,EAAE,KAAK,GAAG,MAAM,EAAC;AAE1B,YAAM,OAAO,GAAG,sBAAqB;AAErC,eAAO;UACL,KAAK,KAAK,MAAM,GAAG,cAAc,KAAK;UACtC,MAAM,KAAK,OAAO,GAAG,cAAc,KAAK;;MAE5C;AAhyBO,MAAAA,uBAAA,iBAAyB;AACzB,MAAAA,uBAAA,yBAA0D;AAiuB1D,MAAAA,uBAAA,WAAW,SAAoC,MAAgB,MAAc,WAAkB;AACpG,YAAI,UAAgD;AACpD,YAAM,YAAY,WAAA;AAAC,cAAA,OAAA,CAAA;mBAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAsB;AAAtB,iBAAA,EAAA,IAAA,UAAA,EAAA;;AACjB,cAAM,QAAQ,WAAA;AACZ,sBAAU;AACV,gBAAI,CAAC,WAAW;AACd,mBAAI,MAAA,QAAI,IAAI;;UAEhB;AAEA,cAAM,UAAU,aAAa,CAAC;AAC9B,cAAI,SAAS;AACX,yBAAa,OAAO;;AAEtB,oBAAU,WAAW,OAAO,IAAI;AAChC,cAAI,SAAS;AACX,iBAAI,MAAA,QAAI,IAAI;;QAEhB;AACA,eAAO;MACT;AA2CF,aAAAA;OAlyBA;;;;ACbA,MAAqB,kBAArB,MAAqC;AAAA,IACnC,cAAc;AACZ,WAAK,YAAY,OAAO;AACxB,WAAK,SAAS,SAAS,KAAK,aAAa,cAAc,KAAK;AAAA,IAC9D;AAAA,IAEA,IAAI,IAAI;AACN,UAAI;AACF,cAAM,MAAM,GAAG,KAAK,MAAM,IAAI,EAAE;AAChC,cAAM,OAAO,KAAK,UAAU,IAAI,GAAG;AAEnC,YAAI,OAAO,SAAS,UAAU;AAC5B,cAAI;AACF,mBAAO,KAAK,MAAM,IAAI;AAAA,UACxB,SAASI,IAAG;AACV,oBAAQ,MAAM,qCAAqC,GAAG,KAAKA,EAAC;AAC5D,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,kCAAkC,KAAK;AACrD,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,IAAI,IAAI,MAAM;AACZ,UAAI;AACF,cAAM,MAAM,GAAG,KAAK,MAAM,IAAI,EAAE;AAEhC,YAAI,SAAS,QAAQ,OAAO,SAAS,UAAU;AAC7C,eAAK,UAAU,IAAI,KAAK,KAAK,UAAU,IAAI,CAAC;AAAA,QAC9C,OAAO;AACL,eAAK,UAAU,IAAI,KAAK,IAAI;AAAA,QAC9B;AAEA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,gCAAgC,KAAK;AACnD,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;;;AC3CA;AAEe,WAAR,iBAAkC,OAAO,UAAU,CAAC,GAAG;AAC5D,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AAEA,UAAM,WAAW,kBAAkB,KAAK;AACxC,UAAM,UAAU,QAAQ,WAAW;AAEnC,UAAM,gBAAgB,qBAAqB,OAAO,UAAU,OAAO;AAEnE,UAAM,MAAM,oBAAoB,OAAO,UAAU,OAAO;AAExD,UAAM,iBAAiB,sBAAsB,CAACC,WAAU;AACtD,UAAI;AACF,YAAI,CAACA,OAAM,UAAU,CAACA,OAAM,OAAO,QAAQ;AACzC;AAAA,QACF;AAEA,cAAMC,UAASD,OAAM,OAAO;AAE5B,cAAM,iBAAiB,OAAO,QAAQC,OAAM,EACzC,KAAK,CAACC,IAAGC,OAAMD,GAAE,CAAC,EAAE,QAAQC,GAAE,CAAC,EAAE,KAAK,EACtC,IAAI,CAAC,CAACC,OAAM,IAAI,MAAMA,KAAI;AAE7B,cAAM,YAAY,MAAM,cAAc,UAAU;AAChD,YAAI,CAAC,WAAW;AACd;AAAA,QACF;AAEA,cAAM,UAAU,MAAM,KAAK,UAAU,QAAQ;AAC7C,cAAM,iBAAiB,CAAC;AAExB,gBAAQ,QAAQ,CAAC,QAAQC,WAAU;AACjC,cAAI,OAAO,WAAW,OAAO,QAAQ,MAAM;AACzC,2BAAe,OAAO,QAAQ,IAAI,IAAIA;AAAA,UACxC;AAAA,QACF,CAAC;AAED,cAAM,kBAAkB,eAAe,OAAO,SAAO,eAAe,eAAe,GAAG,CAAC;AAEvF,cAAM,iBAAiB,QAAQ,IAAI,CAAAC,OAAKA,GAAE,SAAS,IAAI;AACvD,cAAM,aAAa,eAAe,OAAO,SAAO,CAAC,gBAAgB,SAAS,GAAG,CAAC;AAE9E,cAAM,aAAa,CAAC,GAAG,iBAAiB,GAAG,UAAU;AAErD,gCAAwB,OAAO,YAAY,cAAc;AAEzD,mBAAW,MAAM;AACf,gBAAM,cAAc,IAAI,YAAY,qBAAqB;AAAA,YACvD,SAAS;AAAA,YACT,QAAQ,EAAE,UAAU,cAAc,KAAK;AAAA,UACzC,CAAC,CAAC;AAEF,cAAI,CAACN,OAAM,OAAO,UAAU;AAC1B,4BAAgB,OAAO,QAAQ;AAAA,UACjC;AAAA,QACF,GAAG,GAAG;AAAA,MACR,SAAS,OAAO;AAAA,MAChB;AAAA,IACF,CAAC;AAED,QAAI,CAAC,eAAe;AAClB,iBAAW,MAAM,gBAAgB,OAAO,QAAQ,GAAG,GAAG;AAAA,IACxD;AAEA,WAAO;AAAA,MACL,YAAY,IAAI;AAAA,MAChB,iBAAiB,MAAM,gBAAgB,OAAO,UAAU,OAAO;AAAA,MAC/D,aAAa,MAAM;AAAA,IACrB;AAAA,EACF;AAEA,WAAS,qBAAqB,OAAO,UAAU,UAAU,MAAM;AAC7D,QAAI;AACF,UAAI,CAAC,SAAS,CAAC,MAAM,cAAc,OAAO,KAAK,CAAC,MAAM,cAAc,OAAO,GAAG;AAC5E,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,oBAAoB,UAAU,OAAO;AACzD,UAAI,CAAC,eAAe,OAAO,KAAK,WAAW,EAAE,WAAW,GAAG;AACzD,eAAO;AAAA,MACT;AAEA,YAAM,QAAQ,MAAM,cAAc,OAAO;AACzC,YAAM,QAAQ,MAAM,cAAc,OAAO;AAEzC,UAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO;AACtC,eAAO;AAAA,MACT;AAEA,YAAM,YAAY,MAAM,KAAK,CAAC;AAC9B,YAAM,UAAU,MAAM,KAAK,UAAU,QAAQ;AAC7C,YAAM,iBAAiB,CAAC;AACxB,YAAM,qBAAqB,CAAC;AAE5B,cAAQ,QAAQ,CAAC,QAAQK,WAAU;AACjC,YAAI,OAAO,WAAW,OAAO,QAAQ,MAAM;AACzC,yBAAe,OAAO,QAAQ,IAAI,IAAIA;AACtC,6BAAmB,KAAK,OAAO,QAAQ,IAAI;AAAA,QAC7C;AAAA,MACF,CAAC;AAED,YAAM,iBAAiB,OAAO,OAAO,WAAW,EAC7C,OAAO,SAAO,OAAO,IAAI,UAAU,OAAO,IAAI,UAAU,QAAQ,EAChE,KAAK,CAACH,IAAGC,OAAMD,GAAE,QAAQC,GAAE,KAAK,EAChC,IAAI,SAAO,IAAI,MAAM;AAExB,YAAM,kBAAkB,eAAe;AAAA,QAAO,aAC5C,eAAe,eAAe,OAAO;AAAA,MACvC;AAEA,YAAM,aAAa,mBAAmB;AAAA,QAAO,aAC3C,CAAC,eAAe,SAAS,OAAO;AAAA,MAClC;AAEA,UAAI,gBAAgB,WAAW,GAAG;AAChC,wBAAgB,OAAO,QAAQ;AAC/B,eAAO;AAAA,MACT;AAEA,UAAI,gBAAgB,WAAW,eAAe,UAAU,WAAW,SAAS,GAAG;AAC7E,cAAM,gBAAgB,CAAC,GAAG,iBAAiB,GAAG,UAAU;AAExD,YAAII,mBAAkB;AACtB,iBAASC,KAAI,GAAGA,KAAI,cAAc,QAAQA,MAAK;AAC7C,cAAI,QAAQA,EAAC,EAAE,SAAS,SAAS,cAAcA,EAAC,GAAG;AACjD,YAAAD,mBAAkB;AAClB;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAACA,kBAAiB;AACpB,iBAAO;AAAA,QACT;AAEA,gCAAwB,OAAO,eAAe,cAAc;AAE5D,mBAAW,MAAM,gBAAgB,OAAO,UAAU,OAAO,GAAG,GAAG;AAE/D,mBAAW,MAAM;AACf,gBAAM,cAAc,IAAI,YAAY,qBAAqB;AAAA,YACvD,SAAS;AAAA,YACT,QAAQ,EAAE,UAAU,eAAe,KAAK;AAAA,UAC1C,CAAC,CAAC;AAAA,QACJ,GAAG,GAAG;AAEN,eAAO;AAAA,MACT;AAEA,UAAI,kBAAkB;AACtB,eAASC,KAAI,GAAGA,KAAI,eAAe,QAAQA,MAAK;AAC9C,YAAI,QAAQA,EAAC,EAAE,SAAS,SAAS,eAAeA,EAAC,GAAG;AAClD,4BAAkB;AAClB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAC,iBAAiB;AACpB,eAAO;AAAA,MACT;AAEA,8BAAwB,OAAO,gBAAgB,cAAc;AAE7D,iBAAW,MAAM;AACf,cAAM,cAAc,IAAI,YAAY,qBAAqB;AAAA,UACvD,SAAS;AAAA,UACT,QAAQ,EAAE,UAAU,YAAY;AAAA,QAClC,CAAC,CAAC;AAAA,MACJ,GAAG,GAAG;AAEN,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,wBAAwB,OAAO,gBAAgB,gBAAgB;AACtE,QAAI;AACF,YAAM,QAAQ,MAAM,cAAc,OAAO;AACzC,YAAM,QAAQ,MAAM,cAAc,OAAO;AAEzC,UAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAO;AAExC,YAAM,YAAY,MAAM,KAAK,CAAC;AAC9B,YAAM,UAAU,MAAM,KAAK,UAAU,QAAQ;AAE7C,UAAI,eAAe,QAAQ,IAAI,CAAAF,OAAKA,GAAE,UAAUA,GAAE,QAAQ,OAAO,IAAI;AAErE,eAAS,YAAY,GAAG,YAAY,eAAe,QAAQ,aAAa;AACtE,cAAM,aAAa,eAAe,SAAS;AAC3C,cAAM,aAAa,aAAa,QAAQ,UAAU;AAElD,YAAI,eAAe,MAAM,eAAe,WAAW;AACjD,4BAAkB,OAAO,YAAY,SAAS;AAE9C,yBAAe,MAAM,KAAK,UAAU,QAAQ,EACzC,IAAI,CAAAA,OAAKA,GAAE,UAAUA,GAAE,QAAQ,OAAO,IAAI;AAAA,QAC/C;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,kBAAkB,OAAO,WAAW,SAAS;AACpD,QAAI;AACJ,YAAM,QAAQ,MAAM,cAAc,OAAO;AACzC,YAAM,QAAQ,MAAM,cAAc,OAAO;AAEvC,UAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAO;AAExC,YAAM,YAAY,MAAM,KAAK,CAAC;AAC9B,uBAAiB,WAAW,WAAW,OAAO;AAE9C,YAAM,KAAK,MAAM,IAAI,EAAE,QAAQ,SAAO;AACpC,yBAAiB,KAAK,WAAW,OAAO;AAAA,MAC1C,CAAC;AAAA,IACH,SAAS,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,iBAAiB,KAAK,WAAW,SAAS;AACjD,QAAI,CAAC,OAAO,CAAC,IAAI,SAAU;AAE3B,UAAM,QAAQ,MAAM,KAAK,IAAI,QAAQ;AACrC,QAAI,YAAY,KAAK,aAAa,MAAM,UACpC,UAAU,KAAK,WAAW,MAAM,QAAQ;AAC1C;AAAA,IACF;AAEA,UAAM,UAAU,MAAM,SAAS;AAE/B,QAAI,YAAY,SAAS;AACvB,UAAI,UAAU,IAAI,MAAM,QAAQ;AAC9B,YAAI,aAAa,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MAC9C,OAAO;AACL,YAAI,YAAY,OAAO;AAAA,MACzB;AAAA,IACF,OAAO;AACL,UAAI,aAAa,SAAS,MAAM,OAAO,CAAC;AAAA,IAC1C;AAAA,EACF;AAEA,WAAS,oBAAoB,SAAS;AACpC,QAAI;AACF,YAAM,WAAW,SAAS,OAAO;AACjC,YAAM,eAAe,aAAa,QAAQ,QAAQ;AAElD,UAAI,cAAc;AAChB,eAAO,KAAK,MAAM,YAAY;AAAA,MAChC;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,qBAAqB,SAASL,SAAQ;AAC7C,QAAI;AACF,YAAM,WAAW,SAAS,OAAO;AACjC,mBAAa,QAAQ,UAAU,KAAK,UAAUA,OAAM,CAAC;AAAA,IACvD,SAAS,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,oBAAoB,UAAU,UAAU,MAAM;AACrD,QAAI;AACF,UAAI,SAAS;AACX,cAAM,cAAc,oBAAoB,OAAO;AAC/C,YAAI,YAAa,QAAO;AAAA,MAC1B;AAEA,YAAM,SAAS,SAAS,KAAK,aAAa,cAAc,KAAK;AAC7D,YAAM,eAAe;AAAA,QACnB;AAAA,QACA,GAAG,MAAM,IAAI,QAAQ;AAAA,QACrB,GAAG,MAAM,KAAK,QAAQ;AAAA,MACxB;AAEA,iBAAW,OAAO,cAAc;AAC9B,YAAIA,UAAS,OAAO,wBAAwB,IAAI,GAAG;AACnD,YAAIA,SAAQ;AACV,iBAAOA;AAAA,QACT;AAEA,YAAI;AACF,gBAAM,aAAa,aAAa,QAAQ,GAAG;AAC3C,cAAI,YAAY;AACd,kBAAM,aAAa,KAAK,MAAM,UAAU;AAExC,0BAAc,YAAY,QAAQ;AAElC,mBAAO;AAAA,UACT;AAAA,QACF,SAASQ,IAAG;AAAA,QACZ;AAAA,MACF;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AA2BA,WAAS,cAAc,MAAM,UAAU;AACrC,QAAI;AACF,YAAM,SAAS,SAAS,KAAK,aAAa,cAAc,KAAK;AAC7D,YAAM,OAAO;AAAA,QACX;AAAA,QACA,GAAG,MAAM,IAAI,QAAQ;AAAA,MACvB;AAEA,WAAK,QAAQ,SAAO;AAClB,YAAI;AACF,cAAI,OAAO,yBAAyB;AAClC,mBAAO,wBAAwB,IAAI,KAAK,IAAI;AAAA,UAC9C;AAEA,uBAAa,QAAQ,KAAK,KAAK,UAAU,IAAI,CAAC;AAAA,QAChD,SAASC,IAAG;AAAA,QACZ;AAAA,MACF,CAAC;AAED,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,cAAc,IAAI,YAAY,sBAAsB;AAAA,UACzD,QAAQ,EAAE,UAAU,KAAK;AAAA,QAC3B,CAAC,CAAC;AAAA,MACJ;AAAA,IACF,SAAS,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,gBAAgB,OAAO,UAAU,UAAU,MAAM;AACxD,QAAI;AACF,UAAI,CAAC,MAAO,QAAO;AAEnB,YAAM,YAAY,MAAM,cAAc,UAAU;AAChD,UAAI,CAAC,UAAW,QAAO;AAEvB,UAAI,iBAAiB,oBAAoB,UAAU,OAAO,KAAK,CAAC;AAEhE,YAAM,UAAU,MAAM,KAAK,UAAU,QAAQ;AAE7C,YAAM,gBAAgB,CAAC;AACvB,cAAQ,QAAQ,CAAC,QAAQC,WAAU;AACjC,cAAM,aAAa,OAAO,SAAS;AACnC,YAAI,YAAY;AACd,wBAAc,UAAU,IAAI;AAAA,YAC1B,QAAQ;AAAA,YACR,OAAOA;AAAA,YACP,UAAU,OAAO,QAAQ,aAAa;AAAA,YACtC,SAAS,OAAO,MAAM,YAAY;AAAA,UACpC;AAEA,cAAI,eAAe,UAAU,GAAG;AAC9B,kBAAM,WAAW,eAAe,UAAU;AAC1C,gBAAI,SAAS,aAAa,QAAW;AACnC,4BAAc,UAAU,EAAE,WAAW,SAAS;AAAA,YAChD;AACA,gBAAI,SAAS,YAAY,QAAW;AAClC,4BAAc,UAAU,EAAE,UAAU,SAAS;AAAA,YAC/C;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAI,SAAS;AACX,6BAAqB,SAAS,aAAa;AAAA,MAC7C,OAAO;AACL,sBAAc,eAAe,QAAQ;AAAA,MACvC;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,oBAAoB,OAAO,UAAU,UAAU,MAAM;AAC5D,QAAI,CAAC,SAAS,CAAC,MAAM,cAAc,UAAU,EAAG,QAAO,EAAE,YAAY,MAAM,OAAO,iBAAiB,MAAM,KAAK;AAE9G,QAAI,aAAa;AACjB,QAAI,kBAAkB;AACtB,QAAI,kBAAkB;AACtB,QAAI,YAAY;AAEhB,aAAS,aAAa;AACpB,aAAO,MAAM,KAAK,MAAM,cAAc,UAAU,EAAE,YAAY,CAAC,CAAC;AAAA,IAClE;AAEA,aAAS,wBAAwB;AAC/B,iBAAW,EAAE,QAAQ,YAAU;AAC7B,YAAI,OAAO,iBAAkB;AAE7B,eAAO,mBAAmB;AAC1B,eAAO,aAAa,aAAa,MAAM;AAEvC,eAAO,iBAAiB,aAAa,eAAe;AACpD,eAAO,iBAAiB,YAAY,cAAc;AAClD,eAAO,iBAAiB,aAAa,eAAe;AACpD,eAAO,iBAAiB,aAAa,eAAe;AACpD,eAAO,iBAAiB,QAAQ,UAAU;AAC1C,eAAO,iBAAiB,WAAW,aAAa;AAAA,MAClD,CAAC;AAAA,IACH;AAEA,0BAAsB;AAEtB,aAAS,kBAAkB,aAAa;AACtC,YAAM,UAAU,WAAW;AAC3B,UAAI,cAAc,KAAK,eAAe,QAAQ,OAAQ,QAAO;AAE7D,YAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,YAAM,YAAY;AAClB,YAAM,MAAM,WAAW;AACvB,YAAM,MAAM,MAAM;AAClB,YAAM,MAAM,UAAU;AACtB,YAAM,MAAM,kBAAkB;AAC9B,YAAM,MAAM,SAAS;AACrB,YAAM,MAAM,SAAS;AACrB,YAAM,MAAM,YAAY;AACxB,YAAM,MAAM,eAAe;AAC3B,YAAM,MAAM,WAAW;AACvB,YAAM,MAAM,gBAAgB;AAC5B,YAAM,MAAM,QAAQ;AAEpB,YAAM,cAAc,QAAQ,WAAW,EAAE,UAAU,IAAI;AACvD,kBAAY,MAAM,UAAU;AAC5B,kBAAY,MAAM,QAAQ;AAC1B,kBAAY,MAAM,kBAAkB;AACpC,YAAM,YAAY,WAAW;AAE7B,YAAM,QAAQ,MAAM,cAAc,OAAO;AACzC,UAAI,SAAS,MAAM,KAAK,QAAQ;AAC9B,cAAM,aAAa,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC;AAChD,iBAASC,KAAI,GAAGA,KAAI,YAAYA,MAAK;AACnC,cAAI,MAAM,KAAKA,EAAC,KAAK,MAAM,KAAKA,EAAC,EAAE,SAAS,WAAW,GAAG;AACxD,kBAAM,YAAY,MAAM,KAAKA,EAAC,EAAE,SAAS,WAAW,EAAE,UAAU,IAAI;AACpE,sBAAU,MAAM,UAAU;AAC1B,sBAAU,MAAM,QAAQ;AACxB,sBAAU,MAAM,kBAAkB;AAClC,kBAAM,YAAY,SAAS;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAEA,eAAS,KAAK,YAAY,KAAK;AAC/B,aAAO;AAAA,IACT;AAEA,aAAS,gBAAgB,aAAa,WAAW;AAC/C,UAAI,cAAc,EAAG;AAErB,YAAM,UAAU,WAAW;AAC3B,UAAI,eAAe,QAAQ,OAAQ;AAEnC,cAAQ,WAAW,EAAE,UAAU,IAAI,SAAS;AAE5C,YAAM,QAAQ,MAAM,cAAc,OAAO;AACzC,UAAI,OAAO;AACT,cAAM,KAAK,MAAM,IAAI,EAAE,QAAQ,SAAO;AACpC,cAAI,IAAI,SAAS,WAAW,GAAG;AAC7B,gBAAI,SAAS,WAAW,EAAE,UAAU,IAAI,SAAS;AAAA,UACnD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,aAAS,sBAAsB,WAAW;AACxC,iBAAW,EAAE,QAAQ,YAAU;AAC7B,eAAO,UAAU,OAAO,SAAS;AAAA,MACnC,CAAC;AAED,YAAM,QAAQ,MAAM,cAAc,OAAO;AACzC,UAAI,OAAO;AACT,cAAM,KAAK,MAAM,IAAI,EAAE,QAAQ,SAAO;AACpC,gBAAM,KAAK,IAAI,QAAQ,EAAE,QAAQ,UAAQ;AACvC,iBAAK,UAAU,OAAO,SAAS;AAAA,UACjC,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AAEA,aAAS,WAAW,aAAa,aAAa;AAC5C,UAAI;AACF,YAAI,gBAAgB,YAAa,QAAO;AAExC,cAAM,QAAQ,MAAM,cAAc,OAAO;AACzC,cAAM,QAAQ,MAAM,cAAc,OAAO;AAEzC,YAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAO,QAAO;AAE/C,cAAM,YAAY,MAAM,KAAK,CAAC;AAC9B,cAAM,UAAU,MAAM,KAAK,UAAU,QAAQ;AAE7C,YAAI,cAAc,KAAK,eAAe,QAAQ,UAC1C,cAAc,KAAK,eAAe,QAAQ,QAAQ;AACpD,iBAAO;AAAA,QACT;AAEA,yBAAiB,WAAW,aAAa,WAAW;AAEpD,cAAM,KAAK,MAAM,IAAI,EAAE,QAAQ,SAAO;AACpC,2BAAiB,KAAK,aAAa,WAAW;AAAA,QAChD,CAAC;AAED,eAAO;AAAA,MACT,SAASF,IAAG;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,aAAS,gBAAgBA,IAAG;AAC1B,YAAM,UAAU,WAAW;AAC3B,mBAAaA,GAAE,OAAO,QAAQ,IAAI;AAClC,UAAI,CAAC,WAAY;AAEjB,wBAAkB,QAAQ,QAAQ,UAAU;AAC5C,UAAI,oBAAoB,GAAI;AAE5B,sBAAgB,iBAAiB,iBAAiB;AAElD,kBAAY,kBAAkB,eAAe;AAC7C,UAAI,WAAW;AACb,cAAM,OAAO,WAAW,sBAAsB;AAC9C,cAAM,UAAUA,GAAE,UAAU,KAAK;AACjC,cAAM,UAAUA,GAAE,UAAU,KAAK;AAEjC,QAAAA,GAAE,aAAa,aAAa,WAAW,SAAS,OAAO;AAAA,MACzD;AAEA,MAAAA,GAAE,aAAa,gBAAgB;AAC/B,iBAAW,UAAU,IAAI,UAAU;AAAA,IACrC;AAEA,aAAS,eAAeA,IAAG;AACzB,UAAI,CAAC,WAAY;AACjB,MAAAA,GAAE,eAAe;AACjB,MAAAA,GAAE,aAAa,aAAa;AAAA,IAC9B;AAEA,aAAS,gBAAgBA,IAAG;AAC1B,UAAI,CAAC,WAAY;AAEjB,YAAM,eAAeA,GAAE,OAAO,QAAQ,IAAI;AAC1C,UAAI,CAAC,gBAAgB,iBAAiB,WAAY;AAElD,4BAAsB,oBAAoB;AAE1C,YAAM,UAAU,WAAW;AAC3B,wBAAkB,QAAQ,QAAQ,YAAY;AAC9C,UAAI,oBAAoB,IAAI;AAC1B,wBAAgB,iBAAiB,oBAAoB;AACrD,qBAAa,UAAU,IAAI,WAAW;AAAA,MACxC;AAAA,IACF;AAEA,aAAS,gBAAgBA,IAAG;AAC1B,YAAM,eAAeA,GAAE,OAAO,QAAQ,IAAI;AAC1C,UAAI,CAAC,aAAc;AAEnB,YAAM,gBAAgBA,GAAE;AACxB,UAAI,iBAAiB,aAAa,SAAS,aAAa,EAAG;AAE3D,mBAAa,UAAU,OAAO,WAAW;AAAA,IAC3C;AAEA,aAAS,WAAWA,IAAG;AACrB,MAAAA,GAAE,eAAe;AACjB,MAAAA,GAAE,gBAAgB;AAElB,UAAI,oBAAoB,MAAM,oBAAoB,MAC9C,oBAAoB,iBAAiB;AACvC;AAAA,MACF;AAEA,4BAAsB,iBAAiB;AACvC,4BAAsB,oBAAoB;AAE1C,YAAM,UAAU,WAAW,iBAAiB,eAAe;AAE3D,UAAI,SAAS;AACX,YAAI,WAAY,YAAW,UAAU,OAAO,UAAU;AAEtD,cAAM,UAAU,WAAW;AAC3B,gBAAQ,QAAQ,CAAAG,OAAKA,GAAE,UAAU,OAAO,WAAW,CAAC;AAEpD,mBAAW,MAAM;AACf,gBAAM,YAAY,gBAAgB,OAAO,UAAU,OAAO;AAE1D,gBAAM,cAAc,IAAI,YAAY,qBAAqB;AAAA,YACvD,SAAS;AAAA,YACT,QAAQ,EAAE,UAAU,QAAQ,WAAW,QAAQ;AAAA,UACjD,CAAC,CAAC;AAAA,QACJ,GAAG,EAAE;AAAA,MACP;AAAA,IACF;AAEA,aAAS,gBAAgB;AACvB,UAAI,aAAa,UAAU,YAAY;AACrC,kBAAU,WAAW,YAAY,SAAS;AAC1C,oBAAY;AAAA,MACd;AAEA,4BAAsB,iBAAiB;AACvC,4BAAsB,oBAAoB;AAE1C,UAAI,WAAY,YAAW,UAAU,OAAO,UAAU;AACtD,iBAAW,EAAE,QAAQ,CAAAA,OAAKA,GAAE,UAAU,OAAO,WAAW,CAAC;AAEzD,mBAAa;AACb,wBAAkB;AAClB,wBAAkB;AAAA,IACpB;AAEA,UAAM,WAAW,IAAI,iBAAiB,MAAM;AAC1C,4BAAsB;AAAA,IACxB,CAAC;AAED,aAAS,QAAQ,MAAM,cAAc,OAAO,GAAG;AAAA,MAC7C,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA,iBAAiB,MAAM,gBAAgB,OAAO,UAAU,OAAO;AAAA,IACjE;AAAA,EACF;;;AC/oBA;AAEA,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAE5B,WAAS,YAAYC,IAAGC,IAAG;AACzB,UAAMC,MAAKF,GAAE;AACb,UAAM,KAAKC,GAAE;AAEb,QAAIC,QAAO,GAAI,QAAO;AAEtB,WAAOA,MAAK,KAAK,KAAK;AAAA,EACxB;AAEA,WAAS,sBAAsB,OAAO;AACpC,UAAM,UAAU,CAAC;AAEjB,oBAAgB,OAAO,SAAU,IAAIC,QAAO;AAC1C,UAAI,GAAG,QAAQ,MAAM;AACnB,gBAAQ,GAAG,QAAQ,IAAI,IAAI;AAAA,UACzB,OAAAA;AAAA,UACA,QAAQ,GAAG,QAAQ;AAAA,UACnB,UAAU,GAAG,QAAQ;AAAA,UACrB,SAAS,GAAG,QAAQ,WAAW,CAAC,GAAG,QAAQ,gBAAgB;AAAA,QAC7D;AAAA,MACF;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,OAAO,SAAS;AACjC,UAAM,eAAe,OAAO,OAAO,OAAO,EAAE;AAAA,MAAO,YACjD,OAAO,OAAO,UAAU,YAAY,CAAC,MAAM,OAAO,KAAK;AAAA,IACzD;AAEA,eAAW,MAAM;AACf,YAAM;AAAA,QACJ,IAAI,YAAY,2BAA2B;AAAA,UACzC,QAAQ,EAAE,SAAS,aAAa;AAAA,UAChC,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF,GAAG,GAAG;AAEN,UAAM,0BAA0B,CAAC,OAAO;AACtC,UAAI,CAAC,GAAG,MAAM,SAAS,GAAG,MAAM,UAAU,SAAS,SAAS,GAAG,MAAM,KAAK,IAAI,SAAS,oBAAoB,GAAG;AAC5G,WAAG,MAAM,QAAQ;AAAA,MACnB;AAAA,IACF;AAEA,iBAAa,QAAQ,SAAU,EAAE,OAAAA,QAAO,SAAS,OAAO,GAAG;AACzD,UAAI,OAAOA,WAAU,YAAY,MAAMA,MAAK,EAAG;AAE/C,YAAM,WACJ,mBAAmBA,SAAQ,KAAK,sBAAsBA,SAAQ,KAAK;AAErE,UAAI;AACF,YAAI,SAAS;AACX,gBAAM,iBAAiB,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC/C,gBAAI,CAAC,GAAG,MAAM,SAAS,GAAG,MAAM,UAAU,OAAO;AAC/C,iBAAG,MAAM,QAAQ,WAAW,YAAY,sBAAsB;AAAA,YAChE;AACA,eAAG,MAAM,UAAU;AAAA,UACrB,CAAC;AAAA,QACH,OAAO;AACL,gBAAM,iBAAiB,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC/C,eAAG,MAAM,UAAU;AACnB,oCAAwB,EAAE;AAAA,UAC5B,CAAC;AAAA,QACH;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,8BAA8B,QAAQ,MAAM,KAAK;AAAA,MACjE;AAAA,IACF,CAAC;AAAA,EACH;AAEe,WAAR,gBACL,OACA,EAAE,eAAe,mBAAmB,GACpC;AACA,QAAI,CAAC,MAAO,QAAO,CAAC;AAEpB,UAAM,WAAW,kBAAkB,KAAK;AACxC,QAAI,UAAU,qBACV,sBAAsB,KAAK,IAC3B,OAAO,wBAAwB,IAAI,QAAQ;AAE/C,QAAI,CAAC,SAAS;AACZ,gBAAU,sBAAsB,KAAK;AAErC,UAAI,OAAO,KAAK,OAAO,EAAE,SAAS;AAChC,eAAO,wBAAwB,IAAI,UAAU,OAAO;AAAA,IACxD,OAAO;AACL,YAAM,eAAe,sBAAsB,KAAK;AAEhD,aAAO,KAAK,OAAO,EAAE,QAAQ,SAAO;AAClC,YAAI,aAAa,GAAG,GAAG;AACrB,kBAAQ,GAAG,EAAE,QAAQ,aAAa,GAAG,EAAE;AAAA,QACzC;AAAA,MACF,CAAC;AAED,aAAO,KAAK,YAAY,EAAE,QAAQ,SAAO;AACvC,YAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,kBAAQ,GAAG,IAAI,aAAa,GAAG;AAAA,QACjC;AAAA,MACF,CAAC;AAED,aAAO,wBAAwB,IAAI,UAAU,OAAO;AAAA,IACtD;AAEA,QAAI,eAAe,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AAC3D,UAAI,QAAQ,GAAG,KAAK,QAAQ,GAAG,EAAE,eAAe,UAAU,GAAG;AAC3D,YAAI,GAAG,IAAI,QAAQ,GAAG;AAAA,MACxB;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAEL,cAAU,OAAO,OAAO;AAExB,WAAO;AAAA,MACL,iBAAiB,gBACb,OAAO,OAAO,YAAY,EAAE,KAAK,WAAW,IAC5C,OAAO,OAAO,YAAY;AAAA,MAC9B,iBAAiB,SAAU,QAAQ;AACjC,eAAO,QAAQ,MAAM,KAAK,QAAQ,MAAM,EAAE;AAAA,MAC5C;AAAA,MACA,wBAAwB,SAAU,QAAQ;AACxC,YAAI,CAAC,QAAQ,MAAM,KAAK,OAAO,QAAQ,MAAM,EAAE,UAAU,YAAY,MAAM,QAAQ,MAAM,EAAE,KAAK,GAAG;AACjG,kBAAQ,MAAM,wCAAwC,MAAM,yBAAyB;AACrF;AAAA,QACF;AAEA,gBAAQ,MAAM,EAAE,UAAU,CAAC,QAAQ,MAAM,EAAE;AAE3C,eAAO,wBAAwB,IAAI,UAAU,OAAO;AAEpD,YAAI;AACF,gBAAM,cAAc,QAAQ,MAAM,EAAE;AACpC,gBAAM,WAAW,mBAAmB,cAAc,KAAK,sBAAsB,cAAc,KAAK;AAEhG,gBAAM,iBAAiB,QAAQ,EAAE,QAAQ,CAAC,OAAO;AAC/C,eAAG,MAAM,UAAU,QAAQ,MAAM,EAAE,UAAU,KAAK;AAAA,UACpD,CAAC;AAED,gBAAM;AAAA,YACJ,IAAI,YAAY,2BAA2B;AAAA,cACzC,QAAQ,EAAE,SAAS,OAAO,OAAO,OAAO,EAAE;AAAA,cAC1C,SAAS;AAAA,YACX,CAAC;AAAA,UACH;AAAA,QACF,SAAS,OAAO;AACd,kBAAQ,MAAM,yCAAyC,MAAM,MAAM,KAAK;AAAA,QAC1E;AAAA,MACF;AAAA,MACA,UAAU,SAAU,KAAK;AACvB,eAAO,IACJ,QAAQ,oBAAoB,EAAE,EAC9B,QAAQ,YAAY,GAAG,EACvB,QAAQ,UAAU,CAACC,OAAMA,GAAE,YAAY,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;;;AClKe,WAAR,OAAwB,MAAM,aAAa;AAChD,UAAM,sBAAsB,CAAC,YAC3B,QAAQ,OAAO,CAACC,OAAM,CAACA,GAAE,OAAO,EAAE,IAAI,CAACA,OAAMA,GAAE,MAAM;AAEvD,UAAM,cAAc,CAAC,YAAY;AAC/B,YAAM,YAAY;AAAA,QAChB,GAAG;AAAA,QACH,CAAC,kBAAkB,oBAAoB,OAAO,CAAC;AAAA,MACjD;AAEA,aAAO,IAAI,gBAAgB,SAAS,EAAE,SAAS;AAAA,IACjD;AAEA,UAAM,gBAAgB,CAAC,YAAY,GAAG,IAAI,IAAI,YAAY,OAAO,CAAC;AAElE,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,eAAe,SAAU,SAAS;AAChC,aAAK,UAAU;AACf,aAAK,WAAW,cAAc,KAAK,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;;;AVjBA,MAAM,uBAAuB;AAC7B,MAAM,oBAAoB;AAC1B,MAAM,wBAAwB;AAE9B,SAAO,mBAAmB,SAAS,SAAS;AAC1C,QAAI;AACF,YAAM,SAAS,SAAS,KAAK,aAAa,cAAc,KAAK;AAE7D,UAAI,SAAS;AACX,cAAM,eAAe;AAAA,UACnB;AAAA,UACA,GAAG,MAAM,IAAI,OAAO;AAAA,UACpB,GAAG,MAAM,KAAK,OAAO;AAAA,QACvB;AAEA,YAAI,cAAc;AAClB,qBAAa,QAAQ,SAAO;AAC1B,cAAI;AACF,mBAAO,wBAAwB,OAAO,GAAG;AAEzC,yBAAa,WAAW,GAAG;AAE3B;AAAA,UACF,SAASC,IAAG;AAAA,UACZ;AAAA,QACF,CAAC;AAED,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,mBAAmB;AAAA,IACxB;AAAA,IAEA,qBAAqB,WAAW;AAC9B,UAAI;AACF,cAAM,UAAU,CAAC;AAEjB,iBAASC,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK;AAC5C,gBAAM,MAAM,aAAa,IAAIA,EAAC;AAC9B,cAAI;AACF,kBAAM,QAAQ,aAAa,QAAQ,GAAG;AACtC,gBAAI,OAAO;AACT,kBAAI;AACF,sBAAM,SAAS,KAAK,MAAM,KAAK;AAE/B,sBAAM,iBAAiB,OAAO,OAAO,MAAM,EAAE;AAAA,kBAC3C,SAAO,OAAO,IAAI,UAAU,OAAO,IAAI,UAAU;AAAA,gBACnD;AAEA,oBAAI,gBAAgB;AAClB,0BAAQ,KAAK;AAAA,oBACX;AAAA,oBACA,QAAQ;AAAA,oBACR,aAAa,OAAO,KAAK,MAAM,EAAE;AAAA,oBACjC,MAAM;AAAA,kBACR,CAAC;AAAA,gBACH;AAAA,cACF,SAASD,IAAG;AAAA,cACZ;AAAA,YACF;AAAA,UACF,SAASA,IAAG;AAAA,UACZ;AAAA,QACF;AAEA,YAAI,OAAO,yBAAyB;AAClC,cAAI;AACF,kBAAM,YAAY,OAAO,wBAAwB,KAAK;AACtD,sBAAU,QAAQ,SAAO;AACvB,kBAAI;AACF,sBAAM,QAAQ,OAAO,wBAAwB,IAAI,GAAG;AACpD,oBAAI,OAAO;AACT,wBAAM,iBAAiB,OAAO,OAAO,KAAK,EAAE;AAAA,oBAC1C,SAAO,OAAO,IAAI,UAAU,OAAO,IAAI,UAAU;AAAA,kBACnD;AAEA,sBAAI,gBAAgB;AAClB,0BAAM,WAAW,QAAQ,KAAK,CAAAE,OAAKA,GAAE,QAAQ,OAAO,KAAK,UAAUA,GAAE,IAAI,MAAM,KAAK,UAAU,KAAK,CAAC;AAEpG,wBAAI,CAAC,UAAU;AACb,8BAAQ,KAAK;AAAA,wBACX;AAAA,wBACA,QAAQ;AAAA,wBACR,aAAa,OAAO,KAAK,KAAK,EAAE;AAAA,wBAChC,MAAM;AAAA,sBACR,CAAC;AAAA,oBACH;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,SAASF,IAAG;AAAA,cACZ;AAAA,YACF,CAAC;AAAA,UACH,SAASA,IAAG;AAAA,UACZ;AAAA,QACF;AAEA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,kBAAkB,SAAS,SAAS,WAAW;AAC7C,UAAI;AACF,YAAI,CAAC,SAAS;AACZ,iBAAO;AAAA,QACT;AAEA,cAAM,QAAQ,SAAS,eAAe,OAAO;AAC7C,YAAI,CAAC,OAAO;AACV,iBAAO;AAAA,QACT;AAEA,cAAM,WAAW,aAAa;AAE9B,YAAIG,UAAS;AAEb,YAAI,OAAO,yBAAyB;AAClC,UAAAA,UAAS,OAAO,wBAAwB,IAAI,QAAQ;AAAA,QACtD;AAEA,YAAI,CAACA,SAAQ;AACX,cAAI;AACF,kBAAM,cAAc,aAAa,QAAQ,QAAQ;AACjD,gBAAI,aAAa;AACf,cAAAA,UAAS,KAAK,MAAM,WAAW;AAAA,YACjC;AAAA,UACF,SAASH,IAAG;AAAA,UACZ;AAAA,QACF;AAEA,YAAI,CAACG,SAAQ;AACX,iBAAO;AAAA,QACT;AAEA,cAAM,eAAe,OAAO;AAAA,UAC1B,OAAO,QAAQA,OAAM,EAClB,IAAI,CAAC,CAAC,SAAS,OAAO,MAAM,CAAC,SAAS,OAAO,CAAC,EAC9C,KAAK,CAACC,IAAGC,OAAMD,GAAE,CAAC,EAAE,QAAQC,GAAE,CAAC,EAAE,KAAK;AAAA,QAC3C;AAEA,cAAMC,SAAQ,IAAI,YAAY,sBAAsB;AAAA,UAClD,SAAS;AAAA,UACT,QAAQ,EAAE,QAAQ,cAAc,YAAY,KAAK;AAAA,QACnD,CAAC;AAED,cAAM,cAAcA,MAAK;AAEzB,eAAO;AAAA,MACT,SAAS,OAAO;AACd,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,YAAY,SAAS,SAAS;AAC5B,UAAI;AACF,YAAI,CAAC,SAAS;AACZ,iBAAO;AAAA,QACT;AAEA,cAAM,QAAQ,SAAS,eAAe,OAAO;AAC7C,YAAI,CAAC,OAAO;AACV,iBAAO;AAAA,QACT;AAEA,cAAM,SAAS;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAEA,eAAO,QAAQ,eAAa;AAC1B,gBAAM,iBAAiB,WAAW,CAACA,WAAU;AAAA,UAC7C,CAAC;AAAA,QACH,CAAC;AAED,eAAO;AAAA,MACT,SAAS,OAAO;AACd,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEe,WAAR,gBAAiC,OAAO,UAAU,CAAC,GAAG;AAC3D,QAAI,CAAC,MAAO;AAEZ,UAAM,YAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC5D,UAAM,eAAe,SAAS,cAAc,iBAAiB;AAE7D,YAAQ,UAAU,QAAQ,WACxB,UAAU,IAAI,aAAa,KAC3B,MAAM,QAAQ,iBAAiB,GAAG,aAAa,eAAe,KAC9D,cAAc,aAAa,eAAe,KAAK;AAEjD,QAAI,MAAM,0BAA0B;AAClC,aAAO,MAAM,2BACX,EAAE,OAAO,gBAAgB,MAAM,yBAAyB,IACxD,EAAE,OAAO,gBAAgB,KAAK;AAAA,IAClC;AAEA,QAAI,CAAC,MAAM,IAAI;AACb,YAAM,KAAK,WAAW,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,EAAE;AAAA,IAClE;AAEA,QAAI,CAAC,MAAM,aAAa,0BAA0B,GAAG;AACnD,YAAM,aAAa,4BAA4B,MAAM,EAAE;AAAA,IACzD;AAEA,UAAM,QAAQ,IAAI,gBAAgB;AAElC,UAAM,UAAU,MAAM,aAAa,0BAA0B;AAC7D,UAAM,YAAY,MAAM,IAAI,OAAO,OAAO,EAAE;AAE5C,QAAI,CAAC,aAAa,CAAC,UAAU,SAAS;AACpC,+BAAyB,KAAK;AAAA,IAChC;AAEA,UAAM,iBAAiB,IAAmB,sBAAsB,OAAO;AAAA,MACrE,qBAAqB;AAAA,MACrB,UAAU;AAAA,MACV,UAAU;AAAA,MACV;AAAA,IACF,CAAC;AAED,UAAM,gBAAgB,iBAAiB,OAAO,OAAO;AAErD,QAAI,gBAAgB;AAClB,YAAM,mBAAmB,MAAM;AAC7B,YAAI,kBAAkB,OAAO,eAAe,qBAAqB,YAAY;AAC3E,yBAAe,iBAAiB;AAAA,QAClC;AAAA,MACF;AAEA,YAAM,iBAAiB,WAAW,gBAAgB;AAClD,YAAM,iBAAiB,YAAY,gBAAgB;AAEnD,UAAI;AACJ,UAAI,kBAAkB;AACtB,YAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACnD,YAAI,CAAC,gBAAiB;AAEtB,qBAAa,aAAa;AAC1B,wBAAgB,WAAW,kBAAkB,GAAG;AAAA,MAClD,CAAC;AAED,YAAM,UAAU,MAAM,iBAAiB,IAAI;AAC3C,cAAQ,QAAQ,YAAU;AACxB,iBAAS,QAAQ,QAAQ;AAAA,UACvB,YAAY;AAAA,UACZ,iBAAiB,CAAC,OAAO;AAAA,QAC3B,CAAC;AAAA,MACH,CAAC;AAED,iBAAW,MAAM;AACf,0BAAkB;AAAA,MACpB,GAAG,GAAI;AAAA,IACT;AAEA,eAAW,MAAM;AACf,UAAI,iBAAiB,OAAO,cAAc,oBAAoB,YAAY;AACxE,sBAAc,gBAAgB;AAAA,MAChC;AAEA,YAAM,cAAc,IAAI,YAAY,qBAAqB;AAAA,QACvD,SAAS;AAAA,QACT,QAAQ,EAAE,SAAS,MAAM,IAAI,UAAU,eAAe,cAAc,EAAE;AAAA,MACxE,CAAC,CAAC;AAAA,IACJ,GAAG,GAAG;AAEN,UAAM,uBAAuB;AAC7B,UAAM,YAAY,YAAY,MAAM;AAClC,UAAI,SAAS,KAAK,SAAS,KAAK,GAAG;AACjC,YAAI,iBAAiB,OAAO,cAAc,oBAAoB,YAAY;AACxE,wBAAc,gBAAgB;AAAA,QAChC;AAAA,MACF,OAAO;AACL,sBAAc,SAAS;AAAA,MACzB;AAAA,IACF,GAAG,oBAAoB;AAEvB,UAAM,iBAAiB,qBAAqB,SAASA,QAAO;AAC1D,UAAI,CAAC,eAAgB;AAErB,YAAM,UAAU,MAAM,QAAQ,cAAc;AAC5C,UAAI,SAAS;AACX,yBAAiB,OAAO,SAAS,cAAc;AAE/C,mBAAW,MAAM;AACf,cAAI;AACF,gBAAI,kBAAkB,eAAe,kBAAkB;AACrD,6BAAe,iBAAiB;AAAA,YAClC;AAEA,gBAAI,iBAAiB,OAAO,cAAc,oBAAoB,YAAY;AACxE,4BAAc,gBAAgB;AAAA,YAChC;AAAA,UACF,SAAS,OAAO;AAAA,UAChB;AAAA,QACF,GAAG,GAAG;AAAA,MACR;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,2BAA2B,SAAUA,QAAO;AACjE,YAAMC,SAAQD,OAAM;AACpB,YAAM,UAAUC,OAAM,QAAQ,cAAc;AAE5C,UAAI,SAAS;AACX,yBAAiBA,QAAO,SAAS,cAAc;AAE/C,mBAAW,MAAM;AACf,cAAI,iBAAiB,OAAO,cAAc,oBAAoB,YAAY;AACxE,0BAAc,gBAAgB;AAAA,UAChC;AAAA,QACF,GAAG,GAAG;AAAA,MACR;AAAA,IACF,CAAC;AAED,WAAO,iBAAiB,gBAAgB,WAAW;AACjD,UAAI,iBAAiB,OAAO,cAAc,oBAAoB,YAAY;AACxE,sBAAc,gBAAgB;AAAA,MAChC;AAAA,IACF,CAAC;AAED,WAAO,EAAE,OAAO,gBAAgB,cAAc;AAAA,EAChD;AAEA,WAAS,yBAAyB,OAAO;AACvC,QAAI,CAAC,MAAO;AAEZ,QAAI;AACF,YAAM,UAAU,MAAM,KAAK,MAAM,iBAAiB,IAAI,CAAC;AAEvD,UAAI,cAAc;AAClB,YAAM,aAAa,MAAM;AAEzB,UAAI,cAAc,QAAQ,SAAS,GAAG;AACpC,cAAM,kBAAkB,KAAK,MAAM,aAAa,QAAQ,MAAM;AAC9D,sBAAc,KAAK,IAAI,iBAAiB,oBAAoB;AAAA,MAC9D;AAEA,cAAQ,QAAQ,YAAU;AACxB,YAAI,CAAC,OAAO,MAAM,SAAS,SAAS,OAAO,MAAM,KAAK,IAAI,sBAAsB;AAC9E,cAAI,OAAO,QAAQ,SAAS,WAAW;AACrC,mBAAO,MAAM,QAAQ;AAAA,UACvB,OAAO;AACL,mBAAO,MAAM,QAAQ,GAAG,WAAW;AAAA,UACrC;AAAA,QACF;AAAA,MACF,CAAC;AAED,UAAI,aAAa,QAAQ,SAAS,aAAa;AAC7C,cAAM,MAAM,QAAQ,GAAG,QAAQ,SAAS,WAAW;AAAA,MACrD;AAAA,IACF,SAAS,OAAO;AAAA,IAChB;AAAA,EACF;AAEA,WAAS,iBAAiB,OAAO,SAAS,gBAAgB;AACxD,QAAI;AACF,YAAM,eAAe,MAAM,KAAK,MAAM,iBAAiB,IAAI,CAAC,EACzD,OAAO,CAAC,OAAO,GAAG,MAAM,YAAY,MAAM,EAC1C,OAAO,CAAC,KAAK,YAAY;AACxB,YAAI,QAAQ;AACZ,YAAI;AACF,kBAAQ,SAAS,QAAQ,MAAM,SAAS,CAAC;AACzC,cAAI,MAAM,KAAK,KAAK,SAAS,EAAG,SAAQ;AAAA,QAC1C,SAASP,IAAG;AACV,kBAAQ;AAAA,QACV;AACA,eAAO,MAAM;AAAA,MACf,GAAG,CAAC;AAEN,YAAM,eAAe,QAAQ;AAE7B,YAAM,aAAa,KAAK,IAAI,cAAc,YAAY;AAEtD,YAAM,MAAM,QAAQ,GAAG,UAAU;AAEjC,iBAAW,MAAM;AACf,YAAI,kBAAkB,eAAe,kBAAkB;AACrD,yBAAe,iBAAiB;AAAA,QAClC;AAAA,MACF,GAAG,GAAG;AAAA,IACR,SAAS,OAAO;AAAA,IAChB;AAAA,EACF;;;AW9YA;AAAA;AAAA;AAAA;AAAA;;;ACAA,WAAS,eAAe,YAAY;AAClC,QAAI,OAAO,eAAe,YAAY,YAAY,SAAS;AACzD,YAAMQ,UAAS,WAAW,QAAQ;AAClC,aAAOA,UAAS,SAAS,eAAeA,OAAM,IAAI;AAAA,IACpD;AACA,UAAM,SAAS,OAAO,eAAe,WAAW,aAAa;AAC7D,WAAO,SAAS,SAAS,eAAe,MAAM,IAAI;AAAA,EACpD;AAEA,WAAS,mBAAmB,SAAS;AACnC,QAAI,OAAO,SAAS,SAAS,kBAAkB,SAAU,QAAO,CAAC;AACjE,QAAI;AACF,aAAO,KAAK,MAAM,QAAQ,QAAQ,aAAa;AAAA,IACjD,QAAQ;AACN,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAEA,WAAS,cAAc,SAAS,OAAO;AACrC,WAAO,QAAQ,KAAK,CAACC,OAAMA,GAAE,WAAW,KAAK;AAAA,EAC/C;AAEA,WAAS,qBAAqB,SAAS,OAAO;AAC5C,UAAM,UAAU,cAAc,SAAS,KAAK;AAC5C,WAAO,SAAS,sBAAsB;AAAA,EACxC;AAEA,WAAS,sBAAsB,KAAK,OAAO;AACzC,UAAM,MAAM,IAAI,YAAY,KAAK;AACjC,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO,IAAI,YAAY,MAAM;AAAA,EAC/B;AAEA,WAAS,eAAe,KAAK;AAC3B,QAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,WAAO,IACJ,QAAQ,oBAAoB,EAAE,EAC9B,QAAQ,YAAY,GAAG,EACvB,QAAQ,UAAU,CAACC,OAAMA,GAAE,YAAY,CAAC;AAAA,EAC7C;AAEe,WAAR,aAA8B,YAAY,SAAS;AACxD,UAAM,SAAS,eAAe,UAAU;AACxC,UAAM,OACJ,MAAM,QAAQ,OAAO,KAAK,QAAQ,SAAS,IACvC,UACA,mBAAmB,OAAO,eAAe,WAAW,aAAa,IAAI;AAE3E,WAAO;AAAA,MACL,iBAAiB,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC;AAAA,MAE/C,gBAAgB,OAAO;AACrB,YAAI,CAAC,OAAQ,QAAO,qBAAqB,KAAK,iBAAiB,KAAK;AAEpE,cAAM,MAAM,OAAO;AACnB,YAAI,CAAC,IAAK,QAAO,qBAAqB,KAAK,iBAAiB,KAAK;AAEjE,cAAM,aAAa,sBAAsB,KAAK,KAAK;AACnD,YAAI,eAAe,KAAM,QAAO;AAEhC,eAAO,qBAAqB,KAAK,iBAAiB,KAAK;AAAA,MACzD;AAAA,MAEA,uBAAuB,OAAO;AAC5B,YAAI,CAAC,QAAQ,WAAY;AAEzB,cAAM,MAAM,OAAO;AACnB,cAAM,UAAU,KAAK,gBAAgB,KAAK;AAE1C,YAAI,iBAAiB;AAAA,UACnB,OAAO,CAAC,EAAE,OAAO,MAAM,QAAQ,CAAC;AAAA,UAChC,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAAA,MAEA,SAAS,KAAK;AACZ,eAAO,eAAe,GAAG;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;;;AC/EA,MAAM,0BAA0B;AAChC,MAAM,oBAAoB;AAE1B,MAAM,mBAAN,MAAuB;AAAA,IACrB,cAAc;AACZ,WAAK,OAAO;AACZ,WAAK,SAAS;AACd,WAAK,MAAM;AACX,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,WAAW;AAChB,WAAK,uBAAuB;AAAA,IAC9B;AAAA,IAEA,kBAAkB;AAChB,aAAO,IAAI;AAAA,QACT;AAAA,UACE,KAAK,QAAQ,WAAW;AAAA,UACxB,KAAK,QAAQ,YAAY,GAAG;AAAA,UAC5B,KAAK,QAAQ,YAAY,GAAG;AAAA,QAC9B,EACG,OAAO,OAAO,EACd,IAAI,MAAM;AAAA,MACf;AAAA,IACF;AAAA,IAEA,aAAa,OAAO;AAClB,YAAM,MAAM,KAAK,aAAa;AAC9B,UAAI,CAAC,KAAK,eAAgB,QAAO;AACjC,YAAM,QAAQ,IAAI,eAAe,KAAK,CAAC;AACvC,YAAM,OAAO,QAAQ,oBAAI,IAAI,CAAC,OAAO,KAAK,GAAG,GAAG,KAAK,gBAAgB,CAAC,CAAC,IAAI,KAAK,gBAAgB;AAChG,aAAO,MAAM,KAAK,CAACC,OAAM,KAAK,IAAI,OAAOA,GAAE,SAASA,GAAE,SAAS,EAAE,CAAC,CAAC,KAAK;AAAA,IAC1E;AAAA,IAEA,uBAAuB,OAAO;AAC5B,YAAMC,KAAI,KAAK,aAAa,KAAK,GAAG;AACpC,aAAOA,OAAM,UAAUA,OAAM,UAAUA,KAAI;AAAA,IAC7C;AAAA,IAEA,iBAAiB;AACf,YAAM,SAAS,KAAK,QAAQ,YAAY,KAAK,KAAK,QAAQ,YAAY,GAAG,UAAU;AACnF,aAAO,WAAW,UAAU,WAAW;AAAA,IACzC;AAAA,IAEA,gBAAgB;AACd,UAAI,CAAC,KAAK,UAAW;AACrB,YAAM,QAAQ,KAAK,QAAQ,WAAW,KAAK,KAAK,QAAQ,YAAY,GAAG;AACvE,YAAM,OAAO,QAAQ,KAAK,uBAAuB,KAAK,IAAI;AAC1D,YAAM,SAAS,QAAQ,QAAS,CAAC,SAAS,KAAK,eAAe;AAE9D,UAAI,QAAQ;AACV,aAAK,UAAU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,MAK7B,OAAO;AACL,aAAK,UAAU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO7B;AAEA,WAAK,UAAU,aAAa,SAAS,SAAS,UAAU,KAAK;AAAA,IAC/D;AAAA,IAEA,eAAe;AACb,YAAM,KAAK,CAACC,OAAMA,MAAK,OAAOA,GAAE,qBAAqB,cAAc,OAAOA,GAAE,mBAAmB;AAC/F,UAAI,GAAG,KAAK,GAAG,EAAG,QAAO,KAAK;AAC9B,UAAI,GAAG,KAAK,SAAS,EAAG,QAAO,KAAK;AACpC,YAAM,SAAS,KAAK,MAAM,UAAU,oBAAoB,GAAG;AAC3D,aAAO,GAAG,MAAM,IAAI,SAAS;AAAA,IAC/B;AAAA,IAEA,qBAAqB;AACnB,YAAM,MAAM,KAAK,aAAa;AAC9B,UAAI,CAAC,IAAK,QAAO;AAEjB,YAAM,YAAY,IAAI,yBAAyB;AAC/C,UAAI,MAAM,QAAQ,SAAS,KAAK,UAAU,SAAS,GAAG;AACpD,eAAO,UAAU,OAAO,CAAC,QAAQ,IAAI,YAAY,MAAM,MAAM,EAAE;AAAA,MACjE;AAEA,UAAI,CAAC,IAAI,eAAgB,QAAO;AAChC,cAAQ,IAAI,eAAe,KAAK,CAAC,GAAG,OAAO,CAACF,OAAMA,GAAE,WAAW,MAAM,EAAE;AAAA,IACzE;AAAA,IAEA,aAAa,CAACG,OAAM;AAClB,MAAAA,GAAE,eAAe;AACjB,MAAAA,GAAE,gBAAgB;AAClB,UAAI,CAAC,KAAK,OAAQ;AAClB,YAAM,YAAY,KAAK,aAAa;AACpC,UAAI,CAAC,UAAW;AAChB,YAAM,QAAQ,KAAK,OAAO,WAAW,KAAK,KAAK,QAAQ,YAAY,GAAG;AACtE,UAAI,CAAC,MAAO;AAEZ,YAAM,aAAa,KAAK,uBAAuB,KAAK;AAEpD,UAAI,eAAe,UAAU,eAAe,SAAS;AACnD,cAAM,YAAY,UAAU,iBAAiB,KAAK,CAAC;AACnD,YAAI,UAAU,WAAW,GAAG;AAC1B,oBAAU,iBAAiB,EAAE,OAAO,CAAC,EAAE,OAAO,QAAQ,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC;AACjF,eAAK,cAAc;AACnB;AAAA,QACF;AAEA,cAAM,UAAU,KAAK,aAAa;AAClC,cAAM,gBAAgB,SAAS,gBAAgB,YAAY,KAAK,CAAC,GAC9D,IAAI,CAACH,OAAMA,GAAE,SAASA,GAAE,KAAK,EAC7B,OAAO,OAAO;AACjB,cAAM,WAAW,CAACA,OAAM;AACtB,gBAAMI,KAAI,aAAa,QAAQJ,GAAE,SAASA,GAAE,KAAK;AACjD,iBAAOI,OAAM,KAAK,MAAMA;AAAA,QAC1B;AAEA,cAAM,UAAU,UAAU;AAAA,UAAI,CAACJ,QAC5BA,GAAE,SAASA,GAAE,WAAW,QAAQ,EAAE,GAAGA,IAAG,QAAQ,KAAK,IAAIA;AAAA,QAC5D;AACA,cAAM,OAAO,QAAQ,OAAO,CAACA,OAAMA,GAAE,WAAW,MAAM;AACtD,cAAM,SAAS,QACZ,OAAO,CAACA,OAAMA,GAAE,WAAW,UAAUA,GAAE,WAAW,OAAO,EACzD,KAAK,CAACK,IAAGC,OAAM,SAASD,EAAC,IAAI,SAASC,EAAC,CAAC;AAC3C,cAAM,QAAQ,QAAQ,OAAO,CAACN,OAAMA,GAAE,WAAW,OAAO;AAExD,kBAAU,iBAAiB;AAAA,UACzB,OAAO,CAAC,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK;AAAA,UACpC,YAAY;AAAA,QACd,CAAC;AACD,aAAK,cAAc;AACnB;AAAA,MACF;AAEA,YAAM,kBAAkB,KAAK,mBAAmB;AAIhD,UAAI,mBAAmB,yBAAyB;AAC9C,aAAK,YAAY,iBAAiB;AAClC;AAAA,MACF;AAEA,UAAI,oBAAoB,0BAA0B,GAAG;AACnD,aAAK,YAAY,iBAAiB;AAAA,MACpC;AAEA,gBAAU,iBAAiB;AAAA,QACzB,OAAO,CAAC,EAAE,OAAO,QAAQ,OAAO,CAAC;AAAA,QACjC,YAAY;AAAA,MACd,CAAC;AACD,WAAK,cAAc;AAAA,IACrB;AAAA,IAEA,YAAY,SAAS;AACnB,YAAM,SAAS,EAAE,MAAM,SAAS,QAAQ;AACxC,UAAI;AACF,YAAI,OAAO,OAAO,cAAc,YAAY;AAC1C,iBAAO,UAAU,SAAS,OAAO;AAAA,QACnC,WAAW,SAAS,MAAM;AACxB,mBAAS,KAAK,cAAc,IAAI,YAAY,sBAAsB,EAAE,SAAS,MAAM,OAAO,CAAC,CAAC;AAAA,QAC9F;AAAA,MACF,SAAS,KAAK;AACZ,iBAAS,MAAM,cAAc,IAAI,YAAY,sBAAsB,EAAE,SAAS,MAAM,OAAO,CAAC,CAAC;AAAA,MAC/F;AAAA,IACF;AAAA,IAEA,KAAK,QAAQ;AACX,WAAK,SAAS,OAAO;AACrB,WAAK,MAAM,OAAO;AAClB,WAAK,YAAY,OAAO;AACxB,WAAK,OAAO,SAAS,cAAc,KAAK;AACxC,WAAK,KAAK,YAAY;AACtB,WAAK,KAAK,aAAa,QAAQ,cAAc;AAE7C,WAAK,WAAW,SAAS,cAAc,MAAM;AAC7C,WAAK,SAAS,YAAY;AAC1B,WAAK,SAAS,cAAc,OAAO,eAAe;AAElD,WAAK,YAAY,SAAS,cAAc,QAAQ;AAChD,WAAK,UAAU,OAAO;AACtB,WAAK,UAAU,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB/B,WAAK,UAAU,aAAa,cAAc,qBAAqB;AAC/D,WAAK,UAAU,iBAAiB,SAAS,KAAK,UAAU;AACxD,WAAK,UAAU,iBAAiB,cAAc,MAAM;AAClD,aAAK,UAAU,MAAM,QAAQ;AAAA,MAC/B,CAAC;AACD,WAAK,UAAU,iBAAiB,cAAc,MAAM;AAClD,aAAK,UAAU,MAAM,QAAQ;AAAA,MAC/B,CAAC;AACD,WAAK,cAAc;AAEnB,WAAK,KAAK,YAAY,KAAK,QAAQ;AACnC,WAAK,KAAK,YAAY,KAAK,SAAS;AAEpC,YAAM,UAAU,KAAK,aAAa;AAClC,UAAI,SAAS,kBAAkB;AAC7B,aAAK,uBAAuB,MAAM,KAAK,cAAc;AACrD,gBAAQ,iBAAiB,gBAAgB,KAAK,oBAAoB;AAAA,MACpE;AAAA,IACF;AAAA,IAEA,SAAS;AACP,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,QAAQ,QAAQ;AACd,UAAI,KAAK,YAAY,OAAO,eAAe,MAAM;AAC/C,aAAK,SAAS,cAAc,OAAO;AAAA,MACrC;AACA,UAAI,OAAO,QAAQ;AACjB,aAAK,SAAS,OAAO;AAAA,MACvB;AACA,WAAK,cAAc;AACnB,aAAO;AAAA,IACT;AAAA,IAEA,UAAU;AACR,WAAK,WAAW,oBAAoB,SAAS,KAAK,UAAU;AAC5D,YAAM,UAAU,KAAK,aAAa;AAClC,UAAI,SAAS,uBAAuB,KAAK,sBAAsB;AAC7D,gBAAQ,oBAAoB,gBAAgB,KAAK,oBAAoB;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,MAAO,2BAAQ;;;AFhPf,MAAM,qBAAqB;AAC3B,MAAM,0BAA0B;AAChC,MAAM,8BAA8B;AACpC,MAAM,kBAAkB;AACxB,MAAM,4BAA4B;AAClC,MAAM,uBAAuB;AAC7B,MAAM,yBAAyB;AAC/B,MAAM,wBAAwB;AAC9B,MAAM,uBAAuB;AAC7B,MAAM,wBAAwB;AAE9B,WAASO,gBAAe,QAAQ;AAC9B,WAAO,SAAS,eAAe,MAAM;AAAA,EACvC;AAEA,WAAS,WAAW,aAAa;AAC/B,WAAO,aAAa;AAAA,EACtB;AAEA,WAAS,eAAe,OAAO;AAC7B,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,WAAO,OAAO,eAAe,KAAK,KAAK,OAAO,cAAc;AAAA,EAC9D;AAEA,WAAS,yBAAyB;AAChC,QAAI,OAAO,uBAAwB;AAEnC,WAAO,yBAAyB,SAAU,QAAQ;AAChD,YAAM,MAAM,SAAS,cAAc,KAAK;AACxC,UAAI,OAAO,OAAO;AAChB,YAAI,YAAY,OAAO;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,mBAAmB,KAAK;AAC/B,QAAI,CAAC,IAAI,oBAAqB;AAC9B,QAAI,iBAAiB,CAAC,WAAY,OAAO,QAAQ,IAAI,KAAK,OAAO,KAAK,EAAE,eAAe,IAAI;AAC3F,WAAO,IAAI;AAAA,EACb;AAEA,WAAS,oBAAoB,KAAK;AAChC,QAAI,CAAC,IAAI,qBAAsB;AAC/B,QAAI,iBAAiB,CAAC,WACpB,MAAM,QAAQ,OAAO,KAAK,IAAI,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,SAAS;AAC1E,WAAO,IAAI;AAAA,EACb;AAEA,WAAS,2BAA2B,OAAO;AACzC,QAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAEhD,UAAM,OAAO,EAAE,GAAG,MAAM;AAExB,QAAI,KAAK,MAAM,WAAW;AACxB,WAAK,OAAO,EAAE,GAAG,KAAK,MAAM,WAAW,CAAC,EAAE;AAAA,IAC5C;AAEA,QAAI,MAAM,QAAQ,KAAK,WAAW,GAAG;AACnC,WAAK,cAAc,KAAK,YAAY,IAAI,CAAC,QAAQ;AAC/C,cAAM,EAAE,MAAAC,OAAM,WAAW,GAAG,KAAK,IAAI;AACrC,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAIA,WAAO,KAAK;AAEZ,WAAO;AAAA,EACT;AAEA,WAAS,wBAAwB,QAAQ;AACvC,WAAO,QAAQ,WAAW;AAAA,EAC5B;AAEA,WAAS,yBAAyB,QAAQ;AACxC,QAAI,CAAC,QAAQ,KAAK,SAAU,QAAO;AACnC,QAAI,wBAAwB,MAAM,EAAG,QAAO;AAE5C,SACG,OAAO,SAAS,mBAAmB,OAAO,SAAS,kBACpD,OAAO,aAAa,OACpB;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,WAAS,iBAAiB,cAAc;AACtC,WAAO,CAAC,WAAW;AACjB,UAAI,CAAC,yBAAyB,MAAM,KAAK,CAAC,OAAO,wBAAyB;AAE1E,YAAM,QAAQ,2BAA2B,OAAO,IAAI,SAAS,CAAC;AAC9D,aAAO,wBAAwB,IAAI,cAAc,KAAK;AAAA,IACxD;AAAA,EACF;AAEA,WAAS,wBAAwB,KAAK;AACpC,QAAI,CAAC,KAAK,4BAA6B;AAEvC,UAAM,OAAO,MAAM;AACjB,UAAI,4BAA4B,CAAC;AACjC,YAAM,aAAa,oBAAoB,GAAG,EAAE,CAAC,GAAG,WAAW;AAC3D,UAAI,WAAY,KAAI,sBAAsB,YAAY,OAAO;AAAA,IAC/D;AAEA,0BAAsB,IAAI;AAC1B,eAAW,MAAM,oBAAoB;AAAA,EACvC;AAEA,WAAS,iBAAiB,iBAAiB,YAAY;AACrD,WAAO,CAAC,WAAW;AACjB,iBAAW,MAAM;AACjB,UAAI,gBAAiB,iBAAgB,MAAM;AAAA,IAC7C;AAAA,EACF;AAEA,WAAS,eAAe,KAAK;AAC3B,WAAO,KAAK,iBAAiB,KAAK,CAAC;AAAA,EACrC;AAEA,WAAS,YAAY,KAAK;AACxB,WAAO,KAAK,kBAAkB,OAAO,IAAI,mBAAmB;AAAA,EAC9D;AAEA,WAAS,oBAAoB,KAAK;AAChC,UAAM,eAAe,IAAI,yBAAyB,KAAK,CAAC;AACxD,WAAO,aAAa,OAAO,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,IAAI,UAAU,CAAC;AAAA,EACxE;AAEA,WAAS,uBAAuB,YAAY;AAC1C,WAAO,GAAG,UAAU;AAAA,EACtB;AAEA,WAAS,iBAAiB,aAAa;AACrC,QAAI,CAAC,eAAe,CAAC,YAAY,QAAS,QAAO;AAEjD,UAAM,YAAY,YAAY,QAAQ,oBAAoB;AAC1D,QAAI,CAAC,UAAW,QAAO;AAEvB,UAAM,aAAa,UAAU,aAAa,kBAAkB,KAAK;AACjE,UAAM,UAAU,UAAU,aAAa,kBAAkB,KAAK,OAAO,SAAS;AAC9E,UAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI;AACxC,UAAM,MAAM,GAAG,UAAU;AACzB,UAAM,cAAc,IAAI,aAAa,IAAI,GAAG;AAC5C,UAAM,iBAAiB,IAAI,aAAa,IAAI,uBAAuB,UAAU,CAAC;AAE9E,WAAO,EAAE,YAAY,SAAS,aAAa,eAAe;AAAA,EAC5D;AAEA,WAAS,wBAAwB,YAAY,OAAO,gBAAgB;AAClE,UAAM,kBAAkB,WAAW,OAAO,CAAC,QAAQ;AACjD,YAAM,QAAQ,YAAY,GAAG;AAC7B,YAAM,mBACJ,KAAK,YAAY,GAAG,oBAAoB,KAAK,QAAQ;AAEvD,aAAO,UAAU,SAAS,qBAAqB;AAAA,IACjD,CAAC;AAED,QAAI,CAAC,gBAAgB,OAAQ,QAAO;AACpC,QAAI,CAAC,eAAgB,QAAO,gBAAgB,CAAC;AAE7C,WAAO,gBAAgB,KAAK,CAAC,QAAQ,YAAY,GAAG,MAAM,cAAc,KAAK,gBAAgB,CAAC;AAAA,EAChG;AAEA,MAAI,uCAAuC;AAE3C,WAAS,cAAc,aAAa;AAClC,WAAO,aAAa,UAAU,aAAa,KAAK;AAAA,EAClD;AAEA,WAAS,eAAe,OAAO;AAC7B,WAAO,QAAQ,OAAO,qBAAqB;AAAA,EAC7C;AAEA,WAAS,oBAAoB,aAAa;AACxC,WAAO,aAAa,UAAU,YAAY,KAAK;AAAA,EACjD;AAEA,WAAS,oBAAoB,KAAK;AAChC,UAAM,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,OAAO,SAAS,MAAM;AAC7D,WAAO,OAAO;AAEd,UAAM,SAAS,IAAI,gBAAgB,OAAO,MAAM;AAChD,UAAM,eAAe,IAAI,gBAAgB,CAAC,GAAG,OAAO,QAAQ,CAAC,EAAE,KAAK,CAAC;AACrE,UAAM,SAAS,aAAa,SAAS;AAErC,WAAO,GAAG,OAAO,QAAQ,GAAG,SAAS,IAAI,MAAM,KAAK,EAAE;AAAA,EACxD;AAEA,WAAS,qBAAqB,aAAa,KAAK;AAC9C,UAAM,YAAY,oBAAoB,GAAG;AACzC,UAAM,aAAa,aAAa,UAAU,aAAa;AAEvD,QAAI,YAAY;AACd,YAAM,WAAW,WAAW,aAAa,KAAK,KAAK,WAAW,OAAO;AACrE,UAAI,YAAY,oBAAoB,QAAQ,MAAM,UAAW,QAAO;AAAA,IACtE;AAEA,WAAO,oBAAoB,OAAO,SAAS,IAAI,MAAM;AAAA,EACvD;AAEA,WAAS,qBAAqB,cAAc;AAC1C,QAAI,UAAU,aAAa,cAAc,mCAAmC;AAC5E,QAAI,QAAS,QAAO;AAEpB,cAAU,SAAS,cAAc,KAAK;AACtC,YAAQ,YAAY;AACpB,YAAQ,aAAa,eAAe,MAAM;AAE1C,UAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,YAAQ,YAAY;AACpB,YAAQ,aAAa,QAAQ,QAAQ;AACrC,YAAQ,aAAa,cAAc,SAAS;AAC5C,YAAQ,YAAY,OAAO;AAE3B,iBAAa,YAAY,OAAO;AAChC,WAAO;AAAA,EACT;AAEA,WAAS,iBAAiB,OAAO;AAC/B,QAAI,CAAC,SAAS,eAAe,KAAK,EAAG;AAErC,UAAM,cAAc,wBAAwB,KAAK;AACjD,QAAI,CAAC,YAAa;AAElB,UAAM,eAAe,oBAAoB,WAAW;AACpD,iBAAa,UAAU,IAAI,uBAAuB;AAElD,UAAM,UAAU,qBAAqB,YAAY;AACjD,YAAQ,SAAS;AACjB,YAAQ,aAAa,eAAe,OAAO;AAE3C,UAAM,wBAAwB;AAAA,EAChC;AAEA,WAAS,iBAAiB,OAAO;AAC/B,QAAI,CAAC,MAAO;AAEZ,UAAM,iBAAiB,0BAA0B,EAAE,QAAQ,CAAC,YAAY;AACtE,cAAQ,SAAS;AACjB,cAAQ,aAAa,eAAe,MAAM;AAAA,IAC5C,CAAC;AACD,UAAM,iBAAiB,wBAAwB,EAAE,QAAQ,CAAC,YAAY;AACpE,cAAQ,UAAU,OAAO,uBAAuB;AAAA,IAClD,CAAC;AAED,UAAM,wBAAwB;AAAA,EAChC;AAEA,WAAS,wBAAwB,OAAO;AACtC,QAAI,CAAC,OAAO,UAAU,aAAa,EAAG,QAAO;AAE7C,eAAW,eAAe,MAAM,iBAAiB,oBAAoB,GAAG;AACtE,UAAI,YAAY,QAAQ,aAAa,MAAM,MAAO,QAAO;AAAA,IAC3D;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,8BAA8B,QAAQ;AAC7C,UAAM,OAAO,QAAQ,UAAU,qBAAqB;AACpD,QAAI,CAAC,KAAM,QAAO;AAElB,UAAM,UAAU,KAAK,aAAa,kBAAkB;AACpD,UAAM,QAAQ,UAAU,SAAS,eAAe,OAAO,IAAI,KAAK,UAAU,aAAa;AACvF,WAAO,wBAAwB,KAAK,IAAI,QAAQ;AAAA,EAClD;AAEA,WAAS,0BAA0BC,QAAO;AACxC,UAAM,OAAOA,OAAM,QAAQ,UAAU,qBAAqB;AAC1D,UAAM,QAAQ,8BAA8BA,OAAM,MAAM;AACxD,QAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAS,IAAI,EAAG;AAE9C,QAAI,eAAe,KAAK,GAAG;AACzB,MAAAA,OAAM,eAAe;AACrB,MAAAA,OAAM,yBAAyB;AAC/B;AAAA,IACF;AAEA,qBAAiB,KAAK;AAAA,EACxB;AAEA,WAAS,6BAA6BA,QAAO;AAC3C,UAAM,OAAOA,OAAM;AACnB,QAAI,CAAC,MAAM,UAAU,MAAM,EAAG;AAE9B,UAAM,UAAU,KAAK,aAAa,kBAAkB;AACpD,UAAM,QAAQ,UAAU,SAAS,eAAe,OAAO,IAAI,KAAK,UAAU,aAAa;AACvF,QAAI,CAAC,SAAS,CAAC,wBAAwB,KAAK,KAAK,eAAe,KAAK,EAAG;AAExE,qBAAiB,KAAK;AAAA,EACxB;AAEA,WAAS,qBAAqBA,QAAO;AACnC,qBAAiBA,OAAM,MAAM;AAAA,EAC/B;AAEA,WAAS,sBAAsBA,QAAO;AACpC,UAAM,QACJA,OAAM,QAAQ,UAAU,aAAa,MACpCA,OAAM,QAAQ,UAAU,aAAa,IAAIA,OAAM,SAAS;AAC3D,QAAI,SAAS,eAAe,KAAK,EAAG,kBAAiB,KAAK;AAAA,EAC5D;AAEA,WAAS,qCAAqC;AAC5C,QAAI,qCAAsC;AAC1C,2CAAuC;AAEvC,aAAS,iBAAiB,SAAS,2BAA2B,IAAI;AAClE,aAAS,iBAAiB,sBAAsB,4BAA4B;AAC5E,aAAS,iBAAiB,oBAAoB,oBAAoB;AAClE,aAAS,iBAAiB,6BAA6B,qBAAqB;AAAA,EAC9E;AAEA,WAAS,sBAAsB,aAAa,KAAK;AAC/C,UAAM,aAAa,aAAa,UAAU,aAAa;AAEvD,QAAI,YAAY;AACd,YAAMC,QAAO,IAAI,SAAS;AAE1B,UAAI,qBAAqB,aAAaA,KAAI,GAAG;AAC3C,yBAAiB,UAAU;AAC3B;AAAA,MACF;AAEA,uBAAiB,UAAU;AAC3B,iBAAW,MAAMA;AAEjB,aAAO,SAAS,eAAe,OAAO,QAAQ,OAAO,IAAIA,KAAI;AAC7D;AAAA,IACF;AAEA,QAAI,OAAO,OAAO,OAAO;AACvB,aAAO,MAAM,MAAM,IAAI,SAAS,CAAC;AAAA,IACnC,OAAO;AACL,aAAO,SAAS,OAAO,IAAI,SAAS;AAAA,IACtC;AAAA,EACF;AAEA,WAAS,yBAAyB,QAAQ,eAAe,aAAa;AACpE,QAAI,CAAC,UAAU,CAAC,cAAe;AAC/B,QAAI,aAAa,yBAA0B;AAE3C,UAAM,QAAQ,cAAc,WAAW;AACvC,QAAI,SAAS,eAAe,KAAK,EAAG;AAEpC,UAAM,QAAQ,eAAe,OAAO,aAAa,OAAO,GAAG;AAC3D,QAAI,CAAC,MAAM,OAAQ;AAEnB,UAAM,gBAAgB,MACnB,OAAO,CAAC,QAAQ,IAAI,IAAI,EACxB,KAAK,CAACC,IAAGC,OAAM;AACd,YAAM,OAAO,OAAO,SAASD,GAAE,SAAS,IAAIA,GAAE,YAAY;AAC1D,YAAM,OAAO,OAAO,SAASC,GAAE,SAAS,IAAIA,GAAE,YAAY;AAC1D,aAAO,OAAO;AAAA,IAChB,CAAC;AAEH,QAAI,CAAC,cAAc,QAAQ;AACzB,YAAMC,OAAM,IAAI,IAAI,OAAO,SAAS,IAAI;AACxC,YAAMC,gBAAeD,KAAI;AACzB,YAAME,OAAM,GAAG,cAAc,UAAU;AACvC,YAAMC,cAAa,uBAAuB,cAAc,UAAU;AAClE,YAAMC,eAAcH,cAAa,IAAIC,IAAG;AAExC,UAAI,CAACE,aAAa;AAElB,MAAAH,cAAa,OAAOC,IAAG;AACvB,MAAAD,cAAa,OAAOE,WAAU;AAC9B,MAAAF,cAAa,OAAO,MAAM;AAE1B,MAAAD,KAAI,WAAW,cAAc;AAC7B,MAAAA,KAAI,SAASC,cAAa,SAAS;AACnC,4BAAsB,aAAaD,IAAG;AAEtC;AAAA,IACF;AAEA,UAAM,cAAc,cAAc,CAAC;AACnC,QAAI,CAAC,eAAe,CAAC,YAAY,KAAM;AAEvC,UAAM,gBAAgB,YAAY,SAAS,SAAS,SAAS;AAC7D,UAAM,QAAQ,YAAY,SAAS,YAAY;AAC/C,QAAI,CAAC,MAAO;AAEZ,UAAM,MAAM,OAAO,OAAO,OAAO;AACjC,UAAM,SAAS,KAAK,aAAa,GAAG,KAAK,CAAC,QAAQ,YAAY,GAAG,MAAM,KAAK;AAC5E,UAAM,YACJ,QAAQ,YAAY,GAAG,oBAAoB,QAAQ,QAAQ,oBAAoB;AAEjF,UAAM,eAAe,GAAG,SAAS,IAAI,aAAa;AAElD,UAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI;AACxC,UAAM,eAAe,IAAI;AACzB,UAAM,MAAM,GAAG,cAAc,UAAU;AACvC,UAAM,aAAa,uBAAuB,cAAc,UAAU;AAElE,UAAM,cAAc,aAAa,IAAI,GAAG;AACxC,QAAI,gBAAgB,aAAc;AAElC,iBAAa,IAAI,KAAK,YAAY;AAClC,iBAAa,IAAI,YAAY,KAAK;AAClC,iBAAa,OAAO,MAAM;AAE1B,QAAI,WAAW,cAAc;AAC7B,QAAI,SAAS,aAAa,SAAS;AAEnC,QAAI,qBAAqB,aAAa,GAAG,EAAG;AAE5C,0BAAsB,aAAa,GAAG;AAAA,EACxC;AAEA,WAAS,oBAAoB,aAAa,aAAa;AACrD,UAAM,gBAAgB,iBAAiB,WAAW;AAClD,QAAI,CAAC,cAAe;AAEpB,gBAAY,gBAAgB,iBAAiB,YAAY,eAAe,CAAC,WAAW;AAClF,UAAI,OAAO,WAAW,iBAAkB;AAExC,+BAAyB,QAAQ,eAAe,WAAW;AAAA,IAC7D,CAAC;AAED,gBAAY,cAAc,iBAAiB,YAAY,aAAa,CAAC,WAAW;AAC9E,6BAAuB,OAAO,KAAK,WAAW;AAAA,IAChD,CAAC;AAAA,EACH;AAEA,WAAS,8BAA8B,KAAK,aAAa;AACvD,QAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAa;AAEvC,UAAM,QAAQ,eAAe,GAAG;AAChC,UAAM,UAAU,MACb,IAAI,CAAC,SAAS;AAAA,MACb,QAAQ,IAAI,SAAS,IAAI;AAAA,MACzB,SAAS,IAAI,SAAS;AAAA,IACxB,EAAE,EACD,OAAO,CAACK,OAAMA,GAAE,MAAM;AAEzB,gBAAY;AAAA,MACV,IAAI,YAAY,2BAA2B,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,KAAK,CAAC;AAAA,IACnF;AAAA,EACF;AAEA,WAAS,iCAAiC,aAAa,aAAa;AAClE,gBAAY,sBAAsB,iBAAiB,YAAY,qBAAqB,CAAC,WAAW;AAC9F,oCAA8B,OAAO,KAAK,WAAW;AAAA,IACvD,CAAC;AACD,gBAAY,kBAAkB,iBAAiB,YAAY,iBAAiB,CAAC,WAAW;AACtF,oCAA8B,OAAO,KAAK,WAAW;AAAA,IACvD,CAAC;AAAA,EACH;AAEA,WAAS,uBAAuB,KAAK,aAAa;AAChD,QAAI,CAAC,YAAY,GAAG,EAAG;AAEvB,UAAM,gBAAgB,iBAAiB,WAAW;AAClD,QAAI,CAAC,cAAe;AAEpB,QAAI,CAAC,cAAc,aAAa;AAC9B,YAAM,eAAe,eAAe,GAAG;AACvC,YAAM,UAAU,aAAa,KAAK,CAACA,OAAMA,GAAE,IAAI;AAC/C,UAAI,CAAC,QAAS;AAEd,kBAAY,2BAA2B;AAEvC,UAAI;AACF,cAAM,eAAe,aAAa,IAAI,CAAC,aAAa;AAClD,gBAAM,EAAE,MAAAV,OAAM,WAAW,GAAG,KAAK,IAAI;AACrC,iBAAO;AAAA,QACT,CAAC;AAED,YAAI,iBAAiB;AAAA,UACnB,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,cAAc,EAAE,MAAM,MAAM,WAAW,KAAK;AAAA,QAC9C,CAAC;AAAA,MACH,UAAE;AACA,oBAAY,2BAA2B;AAAA,MACzC;AAEA;AAAA,IACF;AAEA,UAAM,YAAY,OAAO,cAAc,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK;AACxE,QAAI,CAAC,UAAW;AAEhB,UAAM,CAAC,OAAO,SAAS,IAAI,UAAU,MAAM,KAAK;AAChD,QAAI,CAAC,MAAO;AAEZ,UAAM,gBAAgB,cAAc,SAAS,SAAS;AACtD,UAAM,aAAa,IAAI,aAAa,KAAK,CAAC;AAC1C,QAAI,CAAC,WAAW,OAAQ;AAExB,gBAAY,2BAA2B;AAEvC,QAAI;AACF,YAAM,eAAe,eAAe,GAAG;AACvC,YAAM,eAAe;AAAA,QACnB;AAAA,QACA;AAAA,QACA,cAAc;AAAA,MAChB;AAEA,UAAI,CAAC,aAAc;AAEnB,YAAM,cAAc,YAAY,YAAY;AAC5C,YAAM,eAAe,aAAa,IAAI,CAAC,aAAa;AAClD,cAAM,QAAQ,SAAS;AACvB,YAAI,CAAC,MAAO,QAAO;AAEnB,YAAI,UAAU,aAAa;AACzB,iBAAO,EAAE,GAAG,UAAU,MAAM,eAAe,WAAW,EAAE;AAAA,QAC1D;AAEA,cAAM,EAAE,MAAAA,OAAM,WAAW,GAAG,KAAK,IAAI;AACrC,eAAO;AAAA,MACT,CAAC;AAED,UAAI,iBAAiB;AAAA,QACnB,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,cAAc,EAAE,MAAM,MAAM,WAAW,KAAK;AAAA,MAC9C,CAAC;AAAA,IACH,UAAE;AACA,kBAAY,2BAA2B;AAAA,IACzC;AAAA,EACF;AAEe,WAAR,iBAAkC,QAAQ;AAC/C,UAAM,OAAO,MAAM;AACjB,UAAI,CAAC,OAAO,QAAQ,WAAY;AAEhC,YAAM,cAAcD,gBAAe,MAAM;AACzC,UAAI,CAAC,YAAa;AAElB,0BAAoB,WAAW;AAE/B,YAAM,cAAc,iBAAiB,aAAa,MAAM;AACxD,UAAI,CAAC,YAAa;AAElB,YAAM,aAAa,YAAY;AAC/B,aAAO,YAAY;AACnB,UAAI,YAAY;AACd,oBAAY,WAAW,CAAC,WAAW,OAAO,OAAO,OAAO,UAAU,CAAC;AAAA,MACrE;AAEA,YAAMY,UAAS,kBAAkB,aAAa,WAAW;AACzD,yBAAmB,WAAW;AAC9B,8BAAwB,WAAW;AACnC,yBAAmB,WAAW;AAC9B,4BAAsB,aAAaA,SAAQ,WAAW;AACtD,6BAAuB,aAAaA,SAAQ,WAAW;AACvD,iCAA2B,aAAaA,OAAM;AAC9C,sBAAgB,aAAa,WAAW;AACxC,0BAAoB,aAAa,WAAW;AAC5C,uCAAiC,aAAa,WAAW;AAEzD,YAAM,MAAM,WAAW,aAAa,aAAa,QAAQA,OAAM;AAC/D,0BAAoB,KAAKA,QAAO,iBAAiB;AACjD,oCAA8B,WAAW;AACzC,qCAA+B,aAAa,GAAG;AAAA,IACjD;AAEA,QAAI,SAAS,eAAe,YAAY;AACtC,4BAAsB,IAAI;AAAA,IAC5B,OAAO;AACL,aAAO,iBAAiB,QAAQ,MAAM,sBAAsB,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;AAAA,IACnF;AAAA,EACF;AAEA,WAAS,oBAAoB,aAAa;AACxC,mCAA+B,WAAW;AAE1C,QAAI,CAAC,YAAY,YAAY;AAC3B,kBAAY,qBAAqB;AACjC;AAAA,IACF;AAEA,gBAAY,WAAW,QAAQ;AAC/B,gBAAY,aAAa;AACzB,gBAAY,qBAAqB;AAAA,EACnC;AAEA,WAAS,iBAAiB,aAAa,QAAQ;AAC7C,QAAI;AACF,YAAM,cAAc,KAAK,MAAM,YAAY,aAAa,mBAAmB,CAAC;AAE5E,aAAO,YAAY;AACnB,aAAO,YAAY;AAEnB,YAAM,kBAAkB,eAAe,YAAY,KAAK;AACxD,UAAI,iBAAiB;AACnB,oBAAY,QAAQ;AAAA,MACtB;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,kBAAkB,aAAa,aAAa;AACnD,UAAM,oBAAoB,YAAY,aAAa,0BAA0B,MAAM;AACnF,UAAM,wBAAwB,YAAY,2BAA2B;AACrE,UAAM,WAAW,YAAY,aAAa,gBAAgB;AAC1D,UAAM,qBAAqB,CAAC,CAAC;AAC7B,UAAM,SAAS,SAAS,MAAM,aAAa,cAAc,KAAK;AAC9D,UAAM,eAAe,qBAAqB,GAAG,MAAM,kBAAkB,QAAQ,KAAK;AAClF,WAAO,YAAY;AAEnB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,WAAS,mBAAmB,aAAa;AACvC,2BAAuB;AAEvB,QAAI,CAAC,YAAY,WAAY;AAE7B,gBAAY,WAAW,QAAQ,CAAC,QAAQ;AACtC,UAAI,IAAI,iBAAiB,UAAU,IAAI,iBAAiB,WAAW;AACjE,YAAI,eAAe,OAAO;AAAA,MAC5B;AAEA,yBAAmB,GAAG;AACtB,0BAAoB,GAAG;AAAA,IACzB,CAAC;AAAA,EACH;AAEA,WAAS,wBAAwB,aAAa;AAC5C,QAAI,YAAY,YAAa;AAC7B,UAAM,UAAU,YAAY,WAAW,CAAC;AACxC,UAAM,aAAa,QAAQ;AAAA,MACzB,CAAC,QAAQ,OAAO,OAAO,UAAU,eAAe,KAAK,KAAK,aAAa;AAAA,IACzE;AACA,QAAI,CAAC,WAAY;AACjB,gBAAY,cAAc,CAAC,WACzB,OAAO,SAAS,OAAO,KAAK,gBAAgB,QAAQ,OAAO,KAAK,gBAAgB,UAC5E,oBACA;AAAA,EACR;AAEA,WAAS,mBAAmB,aAAa;AACvC,QAAI,CAAC,YAAY,WAAY;AAC7B,WAAO,YAAY;AACnB,gBAAY,aAAa,EAAE,GAAG,YAAY,YAAY,2CAAiB;AACvE,gBAAY,gBAAgB;AAAA,MAC1B,GAAG,YAAY;AAAA,MACf,uBAAuB;AAAA,QACrB,GAAG,YAAY,eAAe;AAAA,QAC9B,sBAAsB;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAEA,WAAS,sBAAsB,aAAaA,SAAQ,aAAa;AAC/D,QAAI,CAACA,QAAO,sBAAsB,CAACA,QAAO,aAAc;AAExD,mBAAe,aAAaA,QAAO,cAAcA,QAAO,iBAAiB;AACzE,uBAAmB,aAAaA,QAAO,cAAcA,QAAO,iBAAiB;AAAA,EAC/E;AAEA,WAAS,eAAe,aAAa,cAAc,mBAAmB;AACpE,QAAI,CAAC,OAAO,wBAAyB;AAErC,UAAM,aAAa,OAAO,wBAAwB,IAAI,YAAY;AAClE,QAAI,CAAC,WAAY;AAEjB,gBAAY,eAAe,2BAA2B,UAAU;AAEhE,UAAM,sBAAsB,YAAY;AACxC,gBAAY,cAAc,CAAC,WAAW;AACpC,UAAI,oBAAqB,qBAAoB,MAAM;AACnD,UAAI,CAAC,kBAAmB;AACxB,iBAAW,MAAM;AACf,mCAA2B,OAAO,KAAK,aAAa;AAAA,MACtD,GAAG,oBAAoB;AAAA,IACzB;AAGA,gBAAY,sBAAsB,iBAAiB,YAAY,qBAAqB,CAAC,WAAW;AAC9F,8BAAwB,OAAO,GAAG;AAAA,IACpC,CAAC;AAAA,EACH;AAEA,WAAS,mBAAmB,aAAa,cAAc,mBAAmB;AACxE,UAAM,YAAY,iBAAiB,YAAY;AAE/C,gBAAY,kBAAkB,iBAAiB,YAAY,iBAAiB,CAAC,WAAW;AACtF,gBAAU,MAAM;AAChB,UAAI,CAAC,qBAAqB,wBAAwB,MAAM,EAAG;AAC3D,YAAM,eAAe,OAAO,UAAU,sBAAsB,OAAO,KAAK,OAAO,MAAM;AACrF,UAAI,OAAO,YAAY,CAAC,cAAc;AACpC,mCAA2B,OAAO,KAAK,iBAAiB;AAAA,MAC1D;AAAA,IACF,CAAC;AAED,gBAAY,gBAAgB,iBAAiB,YAAY,eAAe,CAAC,WAAW;AAClF,gBAAU,MAAM;AAChB,UAAI,CAAC,qBAAqB,wBAAwB,MAAM,EAAG;AAC3D,iCAA2B,OAAO,KAAK,eAAe;AAAA,IACxD,CAAC;AAED,gBAAY,kBAAkB,iBAAiB,YAAY,iBAAiB,CAAC,WAAW;AACtF,gBAAU,MAAM;AAChB,UAAI,CAAC,qBAAqB,wBAAwB,MAAM,EAAG;AAC3D,iCAA2B,OAAO,KAAK,iBAAiB;AAAA,IAC1D,CAAC;AAID,gBAAY,iBAAiB,iBAAiB,YAAY,gBAAgB,CAAC,WAAW;AACpF,gBAAU,MAAM;AAChB,UAAI,CAAC,qBAAqB,wBAAwB,MAAM,EAAG;AAI3D,YAAM,MAAM,OAAO;AACnB,YAAM,YAAY,MAAM,2BAA2B,KAAK,gBAAgB;AAExE,iBAAW,MAAM,sBAAsB,SAAS,GAAG,CAAC;AACpD,iBAAW,MAAM,UAAU,GAAG,oBAAoB;AAAA,IACpD,CAAC;AAAA,EACH;AAEA,WAAS,uBAAuB,aAAaA,SAAQ,aAAa;AAChE,QAAI,CAACA,QAAO,kBAAmB;AAE/B,gBAAY,sBAAsB,iBAAiB,YAAY,qBAAqB,CAAC,WAAW;AAC9F,iCAA2B,OAAO,KAAK,qBAAqB;AAAA,IAC9D,CAAC;AAAA,EACH;AAEA,WAAS,2BAA2B,KAAK;AACvC,QAAI,CAAC,KAAK,cAAc,CAAC,KAAK,iCAAiC,CAAC,KAAK,iBAAkB;AAEvF,UAAM,UAAU,IAAI,WAAW,KAAK,CAAC;AACrC,QAAI,QAAQ,WAAW,EAAG;AAE1B,UAAMC,2BAA0B;AAChC,UAAM,qBAAqB;AAC3B,UAAM,QAAQ,CAAC;AACf,UAAM,eAAe,mBAAmB,kBAAkB,CAAC;AAE3D,YAAQ,QAAQ,CAAC,WAAW;AAC1B,YAAM,QAAQ,OAAO,WAAW;AAChC,UAAI,CAAC,MAAO;AAEZ,YAAM,SAAS,OAAO,YAAY,KAAK,CAAC;AACxC,YAAM,aAAa,OAAO,OAAO,cAAc,OAAO,SAAS,KAAK;AACpE,UAAI,kBAAkB,aAAa,QAAQ,UAAU;AAErD,UAAI,8BAA8B,CAAC,SAAS;AAC1C,cAAM,WAAW,cAAc,KAAK,QAAQ,OAAO,IAAI;AACvD,cAAM,YAAY,kBAAkB,QAAQ;AAC5C,cAAM,YAAY,aAAa,QAAQ,SAAS;AAChD,YAAI,YAAY,gBAAiB,mBAAkB;AAAA,MACrD,CAAC;AAED,YAAM,gBAAgB,KAAK;AAAA,QACzB,OAAO,YAAY;AAAA,QACnB,KAAK,KAAK,kBAAkBA,wBAAuB;AAAA,MACrD;AAEA,YAAM,KAAK;AAAA,QACT;AAAA,QACA,OAAO;AAAA,QACP,MAAM;AAAA,MACR,CAAC;AAAA,IACH,CAAC;AAED,QAAI,MAAM,SAAS,GAAG;AACpB,UAAI,iBAAiB,EAAE,OAAO,YAAY,MAAM,CAAC;AAEjD,4BAAsB,MAAM;AAC1B,YAAI,WAAW;AACf,cAAM,qBAAqB,oBAAoB,GAAG;AAClD,cAAM,yBAAyB,mBAAmB,CAAC,GAAG,WAAW;AACjE,YAAI,wBAAwB;AAC1B,cAAI,sBAAsB,wBAAwB,OAAO;AAAA,QAC3D;AACA,YAAI,8BAA8B,CAAC;AAAA,MACrC,CAAC;AAAA,IACH;AAAA,EACF;AAEA,WAAS,kBAAkB,UAAU;AACnC,QAAI,aAAa,QAAQ,aAAa,OAAW,QAAO;AAExD,UAAM,WAAW,OAAO,QAAQ;AAChC,UAAM,gBAAgB,SAAS,QAAQ,YAAY,GAAG;AACtD,WAAO,cAAc,QAAQ,QAAQ,GAAG,EAAE,KAAK;AAAA,EACjD;AAEA,WAAS,oBAAoB;AAC3B,UAAM,aAAa,SAAS,cAAc,6BAA6B;AACvE,QAAI,CAAC,WAAY,QAAO;AAExB,UAAM,QAAQ,OAAO,iBAAiB,UAAU;AAChD,WAAO,GAAG,MAAM,SAAS,IAAI,MAAM,WAAW,IAAI,MAAM,UAAU,IAAI,MAAM,QAAQ,IAAI,MAAM,UAAU,IAAI,MAAM,UAAU;AAAA,EAC9H;AAEA,WAAS,mBAAmB,MAAM;AAChC,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,UAAM,UAAU,OAAO,WAAW,IAAI;AACtC,QAAI,SAAS;AACX,cAAQ,OAAO;AAAA,IACjB;AAEA,WAAO;AAAA,MACL,QAAQ,MAAM;AACZ,YAAI,CAAC,KAAM,QAAO;AAClB,YAAI,CAAC,QAAS,QAAO,KAAK,SAAS;AACnC,eAAO,QAAQ,YAAY,OAAO,IAAI,CAAC,EAAE;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AAEA,WAAS,cAAc,KAAK,QAAQ,OAAO,MAAM;AAC/C,QAAI,CAAC,KAAM,QAAO;AAElB,QAAI,OAAO,KAAK,aAAa,YAAY;AACvC,YAAM,eAAe,IAAI,SAAS,QAAQ,IAAI;AAC9C,UAAI,iBAAiB,QAAQ,iBAAiB,OAAW,QAAO;AAAA,IAClE;AAEA,UAAM,OAAO,KAAK,QAAQ,CAAC;AAC3B,QAAI,OAAO,UAAU,eAAe,KAAK,MAAM,KAAK,EAAG,QAAO,KAAK,KAAK;AAExE,UAAM,QAAQ,QAAQ,YAAY,GAAG;AACrC,QAAI,SAAS,OAAO,UAAU,eAAe,KAAK,MAAM,KAAK,EAAG,QAAO,KAAK,KAAK;AAEjF,WAAO;AAAA,EACT;AAEA,WAAS,2BAA2B,aAAaD,SAAQ;AACvD,QAAI,CAACA,QAAO,sBAAuB;AAEnC,UAAM,iBAAiB,MAAM;AAC3B,UAAI,CAACA,QAAO,sBAAsB,CAACA,QAAO,aAAc,QAAO;AAC/D,UAAI,CAAC,OAAO,wBAAyB,QAAO;AAC5C,aAAO,CAAC,OAAO,wBAAwB,IAAIA,QAAO,YAAY;AAAA,IAChE;AAEA,gBAAY,sBAAsB,iBAAiB,YAAY,qBAAqB,CAAC,WAAW;AAC9F,UAAI,CAAC,eAAe,EAAG;AACvB,4BAAsB,MAAM,2BAA2B,OAAO,GAAG,CAAC;AAAA,IACpE,CAAC;AAED,gBAAY,kBAAkB,iBAAiB,YAAY,iBAAiB,CAAC,WAAW;AACtF,UAAI,CAAC,eAAe,EAAG;AACvB,4BAAsB,MAAM,2BAA2B,OAAO,GAAG,CAAC;AAAA,IACpE,CAAC;AAAA,EACH;AAEA,WAAS,gBAAgB,aAAa,KAAK;AACzC,QAAI,CAAC,eAAe,CAAC,OAAO,YAAY,oBAAqB;AAE7D,gBAAY,sBAAsB;AAClC,QAAI;AACF,YAAM,WAAW,IAAI,uBAAuB,KAAK;AACjD,UAAI,aAAa,KAAK,IAAI,gBAAgB,SAAS,MAAM,OAAO;AAC9D,YAAI,gBAAgB,WAAW,KAAK;AAAA,MACtC;AAEA,YAAM,sBAAsB,WAAW,KAAK,YAAY;AAExD,UAAI,qBAAqB;AACvB,qBAAa,KAAK,YAAY;AAC9B,oBAAY,UAAU,IAAI,gBAAgB;AAC1C,oBAAY,gBAAgB;AAC5B,8BAAsB,MAAM,gCAAgC,WAAW,CAAC;AACxE;AAAA,MACF;AAEA,mBAAa,KAAK,QAAQ;AAC1B,kBAAY,UAAU,OAAO,gBAAgB;AAC7C,YAAM,YAAY,IAAI,gBAAgB,WAAW,KAAK;AACtD,YAAM,WAAW,YAAY,cAAc,YAAY;AACvD,YAAM,eAAe,WAAW,SAAS,eAAe;AACxD,YAAM,qBAAqB,YAAY,cAAc,4BAA4B;AACjF,YAAM,yBAAyB,qBAAqB,mBAAmB,eAAe;AACtF,YAAM,gBACJ,eAAe,WAAW,YAAY,yBAAyB;AACjE,YAAM,YAAY,OAAO,cAAc;AACvC,YAAM,SAAS,KAAK,MAAM,KAAK,IAAI,iBAAiB,KAAK,IAAI,eAAe,SAAS,CAAC,CAAC;AACvF,UAAI,YAAY,kBAAkB,OAAQ;AAE1C,kBAAY,gBAAgB;AAC5B,kBAAY,MAAM,SAAS,GAAG,MAAM;AACpC,4BAAsB,MAAM,gCAAgC,WAAW,CAAC;AAAA,IAC1E,UAAE;AACA,kBAAY,sBAAsB;AAAA,IACpC;AAAA,EACF;AAEA,WAAS,aAAa,KAAK,WAAW;AACpC,UAAM,gBAAgB,IAAI,gBAAgB,WAAW;AACrD,QAAI,kBAAkB,UAAW;AAEjC,QAAI,OAAO,IAAI,kBAAkB,YAAY;AAC3C,UAAI,cAAc,aAAa,SAAS;AACxC;AAAA,IACF;AAEA,QAAI,OAAO,IAAI,iBAAiB,YAAY;AAC1C,UAAI,aAAa,SAAS;AAAA,IAC5B;AAAA,EACF;AAEA,WAAS,gCAAgC,aAAa;AACpD,UAAM,oBAAoB,aAAa,cAAc,0BAA0B;AAC/E,UAAM,eAAe,aAAa,cAAc,mBAAmB;AAEnE,QAAI,CAAC,qBAAqB,CAAC,aAAc;AAEzC,UAAM,sBAAsB,aAAa,eAAe,aAAa,eAAe;AACpF,sBAAkB,MAAM,UAAU,sBAAsB,KAAK;AAAA,EAC/D;AAEA,WAAS,gBAAgB,aAAa,aAAa;AACjD,gBAAY,sBAAsB,iBAAiB,YAAY,qBAAqB,CAAC,WAAW;AAC9F,sBAAgB,aAAa,OAAO,GAAG;AAAA,IACzC,CAAC;AACD,gBAAY,iBAAiB,iBAAiB,YAAY,gBAAgB,CAAC,WAAW;AACpF,sBAAgB,aAAa,OAAO,GAAG;AAAA,IACzC,CAAC;AAAA,EACH;AAEA,WAAS,8BAA8B,aAAa;AAClD,QAAI;AACJ,WAAO,iBAAiB,UAAU,MAAM;AACtC,YAAM,MAAM,aAAa;AACzB,UAAI,CAAC,IAAK;AACV,UAAI,cAAe,cAAa,aAAa;AAC7C,sBAAgB,WAAW,MAAM,gBAAgB,aAAa,GAAG,GAAG,qBAAqB;AAAA,IAC3F,CAAC;AAAA,EACH;AAEA,WAAS,WAAW,aAAa,aAAa,QAAQA,SAAQ;AAC5D,QAAIA,QAAO,qBAAqB,YAAY,kBAAkB;AAC5D,aAAO,YAAY;AAAA,IACrB;AAEA,UAAM,MAAM,OAAO,OAAO,WAAW,aAAa,WAAW;AAE7D,gBAAY,aAAa;AACzB,gBAAY,qBAAqB;AAEjC,SAAK,IAAI,uBAAuB,KAAK,OAAO,GAAG;AAC7C,UAAI,gBAAgB,WAAW,KAAK;AACpC,UAAI,oBAAoB;AAAA,IAC1B;AAEA,QAAIA,QAAO,mBAAmB;AAC5B,iCAA2B,KAAK,SAAS;AAAA,IAC3C;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,+BAA+B,aAAa;AACnD,QAAI,CAAC,YAAa;AAElB,QAAI,YAAY,iCAAiC;AAC/C,kBAAY,gCAAgC,WAAW;AACvD,kBAAY,kCAAkC;AAAA,IAChD;AAEA,QAAI,OAAO,YAAY,mCAAmC,YAAY;AACpE,kBAAY,+BAA+B;AAC3C,kBAAY,iCAAiC;AAAA,IAC/C;AAAA,EACF;AAEA,WAAS,+BAA+B,aAAa,KAAK;AACxD,QAAI,YAAY,aAAa,+BAA+B,MAAM,OAAQ;AAE1E,UAAM,WAAW,MAAM,4BAA4B,aAAa,GAAG;AAEnE,QAAI,SAAS,EAAG;AAEhB,UAAM,WAAW,IAAI,iBAAiB,MAAM;AAC1C,UAAI,SAAS,GAAG;AACd,iBAAS,WAAW;AACpB,oBAAY,kCAAkC;AAAA,MAChD;AAAA,IACF,CAAC;AACD,aAAS,QAAQ,aAAa,EAAE,WAAW,MAAM,SAAS,KAAK,CAAC;AAChE,gBAAY,kCAAkC;AAAA,EAChD;AAEA,WAAS,4BAA4B,MAAM;AACzC,UAAM,QAAQ,KAAK,cAAc,qCAAqC;AACtE,UAAM,QAAQ,KAAK,cAAc,sCAAsC;AACvE,QAAI,SAAS,MAAO,QAAO,EAAE,UAAU,OAAO,SAAS,MAAM;AAE7D,UAAM,UAAU,KAAK,cAAc,0BAA0B;AAC7D,UAAM,UAAU,KAAK,cAAc,2BAA2B;AAC9D,QAAI,WAAW,QAAS,QAAO,EAAE,UAAU,SAAS,SAAS,QAAQ;AAErE,WAAO;AAAA,EACT;AAEA,WAAS,4BAA4B,aAAa,KAAK;AACrD,QAAI,YAAY,aAAa,+BAA+B,MAAM,OAAQ,QAAO;AACjF,QAAI,YAAY,cAAc,2CAA2C,EAAG,QAAO;AAEnF,UAAM,OAAO,YAAY,cAAc,kBAAkB,KAAK;AAC9D,UAAM,OAAO,4BAA4B,IAAI;AAC7C,QAAI,CAAC,KAAM,QAAO;AAElB,UAAM,EAAE,UAAU,WAAW,SAAS,WAAW,IAAI;AAErD,UAAM,UAAU,SAAS,cAAc,KAAK;AAC5C,YAAQ,YAAY;AACpB,YAAQ,aAAa,eAAe,MAAM;AAE1C,UAAM,aAAa,SAAS,cAAc,KAAK;AAC/C,eAAW,YAAY;AAEvB,UAAM,SAAS,SAAS,cAAc,KAAK;AAC3C,WAAO,YAAY;AAEnB,UAAM,QAAQ,SAAS,cAAc,KAAK;AAC1C,UAAM,YAAY;AAClB,WAAO,YAAY,KAAK;AAExB,UAAM,cAAc,SAAS,cAAc,KAAK;AAChD,gBAAY,YAAY;AAExB,YAAQ,YAAY,UAAU;AAC9B,YAAQ,YAAY,MAAM;AAC1B,YAAQ,YAAY,WAAW;AAE/B,UAAM,SAAS,YAAY,cAAc,YAAY;AACrD,QAAI,UAAU,OAAO,YAAY;AAC/B,aAAO,WAAW,aAAa,SAAS,OAAO,WAAW;AAAA,IAC5D,OAAO;AACL,kBAAY,aAAa,SAAS,YAAY,UAAU;AAAA,IAC1D;AAEA,QAAI,UAAU;AAEd,UAAM,cAAc,MAAM;AACxB,YAAME,cAAa,KAAK,cAAc,4BAA4B;AAClE,YAAMC,eAAc,KAAK,cAAc,6BAA6B;AACpE,YAAM,QAAQD,aAAY,eACrB,KAAK,cAAc,gCAAgC,GAAG,eACtD;AACL,YAAM,SAASC,cAAa,eACvB,KAAK,cAAc,iCAAiC,GAAG,eACvD;AACL,iBAAW,MAAM,QAAQ,GAAG,KAAK;AACjC,kBAAY,MAAM,QAAQ,GAAG,MAAM;AAAA,IACrC;AAEA,UAAM,OAAO,MAAM;AACjB,kBAAY;AACZ,YAAM,gBAAgB,KAAK,IAAI,UAAU,eAAe,GAAG,UAAU,eAAe,CAAC;AACrF,YAAM,eAAe,KAAK;AAAA,QACxB,WAAW,eAAe;AAAA,QAC1B,WAAW,eAAe;AAAA,QAC1B,UAAU,eAAe;AAAA,QACzB;AAAA,MACF;AACA,YAAM,wBAAwB,eAAe,gBAAgB;AAE7D,cAAQ,MAAM,UAAU,wBAAwB,SAAS;AACzD,YAAM,MAAM,QAAQ,GAAG,KAAK,KAAK,YAAY,CAAC;AAC9C,aAAO,aAAa,UAAU;AAAA,IAChC;AAEA,UAAM,iBAAiB,MAAM;AAC3B,UAAI,QAAS;AACb,gBAAU;AAEV,UAAI,OAAO,KAAK,gCAAgC,YAAY;AAC1D,YAAI,4BAA4B,OAAO,UAAU;AAAA,MACnD,OAAO;AACL,kBAAU,aAAa,OAAO;AAAA,MAChC;AACA,gBAAU;AAAA,IACZ;AAEA,UAAM,mBAAmB,MAAM;AAC7B,UAAI,QAAS;AACb,gBAAU;AACV,aAAO,aAAa,UAAU;AAC9B,gBAAU;AAAA,IACZ;AAEA,WAAO,iBAAiB,UAAU,gBAAgB,EAAE,SAAS,KAAK,CAAC;AACnE,cAAU,iBAAiB,UAAU,kBAAkB,EAAE,SAAS,KAAK,CAAC;AAExE,UAAMC,MAAK,IAAI,eAAe,MAAM,sBAAsB,IAAI,CAAC;AAC/D,IAAAA,IAAG,QAAQ,SAAS;AACpB,IAAAA,IAAG,QAAQ,UAAU;AACrB,UAAM,aAAa,KAAK,cAAc,4BAA4B;AAClE,UAAM,cAAc,KAAK,cAAc,6BAA6B;AACpE,QAAI,WAAY,CAAAA,IAAG,QAAQ,UAAU;AACrC,QAAI,YAAa,CAAAA,IAAG,QAAQ,WAAW;AAEvC,UAAM,WAAW,MAAM,sBAAsB,IAAI;AACjD,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,QAAI,OAAO,OAAO,IAAI,qBAAqB,YAAY;AACrD,mBAAa,QAAQ,CAACC,OAAM,IAAI,iBAAiBA,IAAG,QAAQ,CAAC;AAAA,IAC/D;AAEA,gBAAY,iCAAiC,MAAM;AACjD,aAAO,oBAAoB,UAAU,cAAc;AACnD,gBAAU,oBAAoB,UAAU,gBAAgB;AACxD,MAAAD,IAAG,WAAW;AACd,UAAI,OAAO,OAAO,IAAI,wBAAwB,YAAY;AACxD,qBAAa,QAAQ,CAACC,OAAM,IAAI,oBAAoBA,IAAG,QAAQ,CAAC;AAAA,MAClE;AACA,cAAQ,OAAO;AAAA,IACjB;AAEA,0BAAsB,IAAI;AAC1B,WAAO;AAAA,EACT;AAEA,WAAS,oBAAoB,KAAK,mBAAmB;AACnD,QAAI,CAAC,qBAAqB,CAAC,IAAK;AAEhC,QAAI;AACJ,WAAO,iBAAiB,UAAU,MAAM;AACtC,UAAI,CAAC,IAAK;AACV,UAAI,cAAe,cAAa,aAAa;AAC7C,sBAAgB,WAAW,MAAM;AAC/B,mCAA2B,KAAK,QAAQ;AAAA,MAC1C,GAAG,qBAAqB;AAAA,IAC1B,CAAC;AAAA,EACH;AAEA,WAAS,2BAA2B,KAAK,QAAQ;AAC/C,QAAI,CAAC,OAAO,IAAI,sBAAuB;AAEvC,QAAI,wBAAwB;AAE5B,QAAI;AACF,oCAA8B,KAAK,MAAM;AAAA,IAC3C,UAAE;AACA,qBAAe,MAAM;AACnB,YAAI,wBAAwB;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,EACF;AAEA,WAAS,8BAA8B,KAAK,QAAQ;AAClD,UAAM,qBAAqB,oBAAoB,GAAG;AAClD,QAAI,mBAAmB,WAAW,EAAG;AAErC,UAAM,uBAAuB,mBAAmB,CAAC;AACjD,UAAM,yBAAyB,sBAAsB,WAAW;AAEhE,UAAM,aAAa,mBAAmB,mBAAmB,SAAS,CAAC;AACnE,UAAM,eAAe,YAAY,WAAW;AAC5C,QAAI,CAAC,aAAc;AACnB,UAAM,gBAAgB,WAAW;AACjC,UAAM,eAAe,mBAAmB,IAAI,CAAC,QAAQ,YAAY,GAAG,CAAC,EAAE,OAAO,OAAO;AACrF,UAAM,mBAAmB,IAAI,KAAK,eAAe,GAAG,KAAK,CAAC,GAAG,IAAI,CAACC,WAAU,CAACA,OAAM,OAAOA,MAAK,CAAC,CAAC;AACjG,UAAM,QAAQ,CAAC;AAEf,iBAAa,QAAQ,CAAC,UAAU;AAC9B,UAAI,UAAU,aAAc;AAC5B,YAAM,UAAU,iBAAiB,IAAI,KAAK;AAC1C,UAAI,SAAS,QAAQ,MAAM;AACzB,cAAM,KAAK,EAAE,OAAO,MAAM,KAAK,CAAC;AAAA,MAClC;AAAA,IACF,CAAC;AAED,QAAI,eAAe;AACjB,YAAM,eAAe,WAAW,iBAAiB;AACjD,UAAI,cAAc;AAChB,cAAM,KAAK,EAAE,OAAO,cAAc,OAAO,cAAc,MAAM,KAAK,CAAC;AAAA,MACrE,OAAO;AACL,cAAM,KAAK,EAAE,OAAO,cAAc,MAAM,KAAK,CAAC;AAAA,MAChD;AAAA,IACF,OAAO;AACL,YAAM,KAAK,EAAE,OAAO,cAAc,OAAO,MAAM,MAAM,EAAE,CAAC;AAAA,IAC1D;AAEA,QAAI,MAAM,WAAW,EAAG;AAIxB,QAAI,iBAAiB;AAAA,MACnB;AAAA,MACA,YAAY;AAAA,MACZ,cAAc,EAAE,MAAM,KAAK;AAAA,IAC7B,CAAC;AAED,QAAI,WAAW;AAEf,QAAI,wBAAwB;AAC1B,UAAI,sBAAsB,wBAAwB,OAAO;AAAA,IAC3D;AACA,QAAI,8BAA8B,CAAC;AAAA,EACrC;AAgCA,WAAS,YAAY,KAAK;AACxB,WAAO,KAAK,WAAW,KAAK,KAAK,SAAS,KAAK,QAAQ,SAAS;AAAA,EAClE;AAEA,WAAS,sBAAsB,KAAK,QAAQ;AAC1C,QAAI,CAAC,OAAO,CAAC,OAAQ,QAAO;AAE5B,UAAM,qBAAqB,oBAAoB,GAAG;AAClD,QAAI,mBAAmB,WAAW,EAAG,QAAO;AAE5C,UAAM,aAAa,mBAAmB,mBAAmB,SAAS,CAAC;AACnE,WAAO,YAAY,UAAU,MAAM,YAAY,MAAM;AAAA,EACvD;AAEA,WAAS,mBAAmB,QAAQ;AAClC,WAAO;AAAA,MACL,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,SAAS,CAAC;AAAA,MAEV,OAAO;AACL,aAAK,UAAU,MAAM;AACnB,eAAK,YAAY,MAAM;AACrB,iBAAK,YAAY;AACjB,iBAAK,8BAA8B;AAAA,UACrC,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,MAEA,YAAYC,WAAU,cAAc,wBAAwB;AAC1D,YAAI,WAAW;AACf,cAAM,YAAY,MAAM;AACtB,gBAAM,cAAcC,gBAAe,MAAM;AACzC,cAAI,WAAW,WAAW,GAAG;AAC3B,YAAAD,UAAS;AAAA,UACX,WAAW,WAAW,aAAa;AACjC;AACA,uBAAW,WAAW,qBAAqB;AAAA,UAC7C;AAAA,QACF;AACA,kBAAU;AAAA,MACZ;AAAA,MAEA,cAAc;AACZ,cAAM,cAAcC,gBAAe,MAAM;AACzC,cAAM,MAAM,WAAW,WAAW;AAClC,YAAI,CAAC,IAAK;AAEV,cAAM,aAAa,IAAI,WAAW,KAAK,CAAC;AAExC,aAAK,UAAU,WAAW,IAAI,CAAC,QAAQ;AACrC,gBAAM,SAAS,IAAI,YAAY,KAAK,CAAC;AACrC,iBAAO;AAAA,YACL,OAAO,IAAI,WAAW,KAAK,OAAO;AAAA,YAClC,YAAY,OAAO,cAAc,OAAO,SAAS;AAAA,YACjD,SAAS,IAAI,YAAY,KAAK,CAAC,OAAO;AAAA,YACtC,aAAa,OAAO,gBAAgB;AAAA,UACtC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,gCAAgC;AAC9B,cAAM,cAAcA,gBAAe,MAAM;AACzC,cAAM,MAAM,WAAW,WAAW;AAClC,YAAI,CAAC,IAAK;AAEV,YAAI,iBAAiB,iBAAiB,MAAM;AAC1C,eAAK,YAAY;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,MAEA,IAAI,kBAAkB;AACpB,YAAI,CAAC,KAAK,aAAc,QAAO,KAAK;AAEpC,cAAM,SAAS,KAAK,aAAa,YAAY;AAC7C,eAAO,KAAK,QAAQ,OAAO,CAAC,QAAQ,IAAI,WAAW,YAAY,EAAE,SAAS,MAAM,CAAC;AAAA,MACnF;AAAA,MAEA,qBAAqB;AACnB,aAAK,mBAAmB,CAAC,KAAK;AAC9B,YAAI,KAAK,kBAAkB;AACzB,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,uBAAuB,OAAO,SAAS;AACrC,cAAM,cAAcA,gBAAe,MAAM;AACzC,cAAM,MAAM,WAAW,WAAW;AAClC,YAAI,CAAC,IAAK;AAEV,YAAI,iBAAiB,OAAO,OAAO;AAEnC,cAAM,SAAS,KAAK,QAAQ,KAAK,CAACC,OAAMA,GAAE,UAAU,KAAK;AACzD,YAAI,QAAQ;AACV,iBAAO,UAAU;AAAA,QACnB;AAEA,mBAAW,MAAM;AACf,gBAAMC,eAAcF,gBAAe,MAAM;AACzC,cAAIE,cAAa,aAAa,0BAA0B,MAAM,QAAQ;AACpE,uCAA2B,KAAK,kBAAkB;AAAA,UACpD;AAAA,QACF,GAAG,qBAAqB;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAEA,WAAS,2BAA2B;AAClC,aAAS,iBAAiB,oBAAoB,EAAE,QAAQ,CAAC,YAAY;AACnE,qCAA+B,OAAO;AACtC,UAAI,QAAQ,YAAY;AACtB,gBAAQ,WAAW,QAAQ;AAC3B,gBAAQ,aAAa;AACrB,gBAAQ,qBAAqB;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO,mBAAmB;AAI1B,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,qBACL,OAAO,sBACP,SAAU,QAAQ;AAChB,aAAO,mBAAmB,MAAM;AAAA,IAClC;AAAA,EACJ;AAEA,qCAAmC;AAEnC,MAAI,OAAO,UAAU,aAAa;AAChC,aAAS,iBAAiB,sBAAsB,wBAAwB;AAAA,EAC1E;;;AGt2CA,WAAS,aAAa,WAAW,eAAe,QAAQ;AACtD,QAAI,EAAE,KAAK,KAAK,IAAI,OAAO,sBAAsB;AACjD,WAAO,OAAO;AACd,YAAQ,OAAO;AAEf,QAAI,cAAc,OAAO;AACvB,oBAAc,MAAM,MAAM,GAAG,MAAM,cAAc,YAAY;AAAA,IAC/D;AAEA,QAAI,cAAc,UAAU;AAC1B,oBAAc,MAAM,MAAM,GAAG,MAAM,OAAO,YAAY;AAAA,IACxD;AAEA,QAAI,cAAc,QAAQ;AACxB,oBAAc,MAAM,OAAO,GAAG,OAAO,IAAI,cAAc,WAAW;AAAA,IACpE;AAEA,QAAI,cAAc,SAAS;AACzB,oBAAc,MAAM,OAAO,GAAG,OAAO,IAAI,OAAO,WAAW;AAAA,IAC7D;AAAA,EACF;AAEA,WAAS,aAAa,WAAW,WAAW,eAAe,QAAQ;AACjE,QAAI,EAAE,KAAK,MAAM,OAAO,OAAO,IAAI,OAAO,sBAAsB;AAEhE,WAAO,OAAO;AACd,YAAQ,OAAO;AAEf,QAAI,cAAc,WAAW,cAAc,QAAQ;AACjD,UAAI,cAAc,UAAU;AAC1B,sBAAc,MAAM,MAAM,GAAG,MAAM,SAAS,IAAI,cAAc,eAAe,CAAC;AAAA,MAChF;AAEA,UAAI,cAAc,OAAO;AACvB,sBAAc,MAAM,MAAM,GAAG,GAAG;AAAA,MAClC;AAEA,UAAI,cAAc,UAAU;AAC1B,sBAAc,MAAM,MAAM,GAAG,MAAM,SAAS,cAAc,YAAY;AAAA,MACxE;AAAA,IACF;AAEA,QAAI,cAAc,YAAY,cAAc,OAAO;AACjD,UAAI,cAAc,UAAU;AAC1B,sBAAc,MAAM,OAAO,GAAG,OAAO,QAAQ,IAAI,cAAc,cAAc,CAAC;AAAA,MAChF;AAEA,UAAI,cAAc,QAAQ;AACxB,sBAAc,MAAM,OAAO,GAAG,IAAI;AAAA,MACpC;AAEA,UAAI,cAAc,SAAS;AACzB,sBAAc,MAAM,OAAO,GAAG,OAAO,QAAQ,cAAc,WAAW;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AAEA,WAAS,YAAY,WAAW,UAAU,CAAC,GAAG;AAC5C,UAAM,QAAQ,SAAS,cAAc,KAAK;AAE1C,UAAM,MAAM,WAAW;AACvB,UAAM,MAAM,SAAS;AACrB,UAAM,MAAM,QAAQ;AACpB,UAAM,MAAM,YAAY;AAExB,QAAI,QAAQ,WAAW;AACrB,YAAM,UAAU,IAAI,GAAG,QAAQ,SAAS;AAAA,IAC1C;AAEA,QAAI,QAAQ,OAAO;AACjB,cAAQ,MAAM,QAAQ,CAAC,OAAO,UAAU;AACtC,cAAM,MAAM,KAAK,IAAI;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,QAAI,cAAc,OAAO;AACvB,YAAM,MAAM,MAAM;AAClB,YAAM,MAAM,OAAO;AAAA,IACrB;AAEA,QAAI,cAAc,UAAU;AAC1B,YAAM,MAAM,MAAM;AAClB,YAAM,MAAM,OAAO;AAAA,IACrB;AAEA,QAAI,cAAc,QAAQ;AACxB,YAAM,MAAM,MAAM;AAClB,YAAM,MAAM,OAAO;AAAA,IACrB;AAEA,QAAI,cAAc,SAAS;AACzB,YAAM,MAAM,MAAM;AAClB,YAAM,MAAM,OAAO;AAAA,IACrB;AAEA,WAAO;AAAA,EACT;AAEe,WAAR,eACL,eACA,WACAC,eAAc,WACd,EAAE,YAAY,UAAU,QAAQ,CAAC,EAAE,GACnC;AACA,aAAS,KAAKC,QAAO;AACnB,YAAM,iBAAiBA,OAAM,cAAc;AAAA,QACzC,UAAUD,YAAW;AAAA,MACvB,EAAE,CAAC;AAEH,UAAI,CAAC,eAAgB;AAErB,oBAAc,YAAY,eAAe;AACzC,oBAAc,MAAM,UAAU;AAE9B,mBAAa,WAAW,eAAeC,OAAM,aAAa;AAC1D,mBAAa,WAAW,WAAW,eAAeA,OAAM,aAAa;AAErE,UAAI,OAAO,QAAQ,KAAK,EAAE,SAAS,GAAG;AACpC,sBAAc,YAAY,YAAY,WAAW,KAAK,CAAC;AAAA,MACzD;AAAA,IACF;AAEA,aAAS,OAAO;AACd,oBAAc,MAAM,UAAU;AAAA,IAChC;AAEA,aAAS,cAAcA,QAAO;AAC5B,YAAM,UAAU,cAAc,MAAM;AAEpC,UAAI,YAAY,QAAQ;AACtB,aAAKA,MAAK;AAAA,MACZ,OAAO;AACL,aAAK;AAAA,MACP;AAAA,IACF;AAEA,WAAO,EAAE,MAAM,MAAM,cAAc;AAAA,EACrC;;;ACvIe,WAARC,SAAyB,eAAe,WAAW;AACxD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,EAAE,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE,EAAE;AAAA,IAC1C;AAAA,EACF;;;ACTe,WAAR,eAAkB,iBAAiB;AACxC,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,eAAe;AAAA,MACf,MAAM,SAAUC,QAAO;AACrB,cAAM,gBAAgB,SAAS,eAAe,eAAe;AAE7D,YAAI,EAAE,OAAAC,QAAO,iBAAiB,UAAU,UAAAC,WAAU,MAAM,IAAIF,OAAM;AAElE,aAAK,QAAQC,UAAS;AACtB,aAAK,QAAQ,SAAS;AACtB,aAAK,gBAAgB,oBAAoB,SAAY,kBAAkB;AAEvE,cAAM,cAAc,YAAY,SAAS,eAAe,QAAQ;AAEhE,YAAI,aAAa;AACf,wBAAc,YAAY,YAAY;AAAA,QACxC;AAEA,YAAIC,UAAU,CAAAA,UAAS;AAEvB,aAAK,SAAS;AAAA,MAChB;AAAA,MACA,SAAS,WAAY;AACnB,aAAK,SAAS;AAEd,iBAAS,eAAe,YAAY,EAAE,gBAAgB,KAAK;AAAA,MAC7D;AAAA,IACF;AAAA,EACF;;;AC7Be,WAAR,aAA8B,eAAe,WAAW,WAAW;AACxE,WAAO,eAAe,eAAe,WAAW,YAAY,EAAE,UAAU,CAAC;AAAA,EAC3E;;;ACFe,WAARC,SAAyB,eAAe,WAAW,WAAW,WAAW;AAC9E,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,EAAE,WAAW,OAAO,EAAE,UAAU,EAAE;AAAA,IACpC;AAAA,EACF;;;A1OCA,sBAAmB;AACnB,yBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A2OVtB,MAAA,sBAAA,CAAA;;ACAA,wBAAA,IAAA,CAAAC,WAAA,eAAA;AACA,eAAA,OAAA,YAAA;AACA,YAAA,oBAAA,EAAA,YAAA,GAAA,KAAA,CAAA,oBAAA,EAAAA,WAAA,GAAA,GAAA;AACA,iBAAA,eAAAA,WAAA,KAAA,EAAyC,YAAA,MAAA,KAAA,WAAA,GAAA,EAAA,CAAwC;QACjF;MACA;IACA;;;ACPA,wBAAA,IAAA,CAAA,KAAA,SAAA,OAAA,UAAA,eAAA,KAAA,KAAA,IAAA;;ACoBA,MAAMC,WAEJ,OAAOC,YAAY,YACnBA,UAAU,OAAO,sBACjB,CAACA,QAAQC,SAASC,MAClB,EAAEF,QAAQC,SAASE,YAAYH,QAAQI,QAAQJ,QAAQI,SAAS;AAElE,MAAMC,uBAAuB,CAAC,MAAO,GAAG,GAAG,MAAO,GAAG,CAAC;AAItD,MAAMC,cAAc;AACpB,MAAMC,sBAAsB;AAC5B,MAAMC,kBAAkBD,sBAAsBD;AAgB9C,MAAMG,sBAAsB;IAC1BC,KAAK;IACLC,SAAS;IACTC,OAAO;IACPC,MAAM;IACNC,mBAAmB;IACnBC,qBAAqB;IACrBC,qBAAqB;IACrBC,YAAY;IACZC,QAAQ;EACV;AAEA,MAAMC,iBAAiB;IACrBC,SAAS;IACTC,QAAQ;IACRC,cAAc;IACdC,gBAAgB;EAClB;AAEA,MAAMC,yBAAyB;AAE/B,MAAMC,uBAAuB;IAC3BL,SAAS;IACTM,MAAM;IACNC,UAAU;IACVC,WAAW;IACXC,OAAO;IACPC,KAAK;IACLC,OAAO;IACPC,WAAW;IACXC,SAAS;EACX;AAEA,MAAMC,6BAA6B;IACjCC,QAAQ;IACRC,QAAQ;IACRC,eAAe;IACfC,gBAAgB;IAChBC,kBAAkB;IAClBC,WAAW;IACXC,eAAe;IACfC,aAAa;IACbC,iBAAiB;IACjBC,qBAAqB;IACrBC,gBAAgB;IAChBC,oBAAoB;IACpBC,WAAW;EACb;AAGA,MAAMC,iBAAiB;IACrBpC,OAAO;IACPqC,iBAAiB;IACjBC,MAAM;IACNC,oBAAoB;IACpBC,wBAAwB;IACxBC,wBAAwB;IACxBC,UAAU;IACVC,oBAAoB;EACtB;AAEA,MAAMC,iBAAiB;IACrBC,WAAW;IACXC,SAAS;IACTC,OAAO;EACT;AAEA,MAAMC,oBAAoB;IACxBC,MAAM;IACNC,QAAQ;IACRC,aAAa;IACbC,WAAW;IACXC,kBAAkB;IAClBC,oBAAoB;IACpBC,yBAAyB;IACzBC,aAAa;IACbC,kBAAkB;IAClBC,kBAAkB;EACpB;AAEA,MAAMC,iBAAY;IAChBC,gBAAgB;IAChBC,WAAW;IACXC,YAAY;EACd;AAEA,MAAMC,iBAAiB;IACrBC,MAAM;IACNC,MAAM;IACNlD,UAAU;IACVmD,MAAM;IACNC,QAAQ;IACRC,QAAQ;IACRC,SAAS;IACTC,UAAU;IACVtD,WAAW;IACXuD,WAAW;IACXC,UAAU;IACVC,WAAW;IACXxD,OAAO;IACPyD,OAAO;IACPxD,KAAK;IACLC,OAAO;IACPwD,gBAAgB;IAChBC,OAAO;IACPC,OAAO;IACPC,QAAQ;IACRC,QAAQ;IACRC,aAAa;IACbC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC,QAAQ;EACV;AA0CA,MAAMC,4BAA4B;IAChCC,OAAO;IACPC,QAAQ;IACRC,SAAS;IACTC,OAAO;IACPC,WAAW;EACb;AAgCA,MAAMC,iBAAiB;IACrBC,QAAQ;IACRC,UAAU;IACVC,OAAO;EACT;AAGA,MAAMC,MAAM;IAKVC,YAAY;IACZC,cAAc;IACdC,YAAY;IACZC,aAAa;IACbC,eAAe;IACfC,SAAS;IACTC,oBAAoB;IACpBC,aAAa;IACbC,WAAW;IACXC,MAAM;IACNC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC,QAAQ;IACRC,SAAS;IACTC,UAAU;IACVC,UAAU;IACVC,WAAW;IACXC,WAAW;IACXC,QAAQ;IACRC,aAAa;IACbC,MAAM;IACNC,QAAQ;IACRC,YAAY;IACZC,cAAc;IACdC,iBAAiB;IACjBC,mBAAmB;IACnBC,SAAS;IACTC,MAAM;IACNC,QAAQ;IACRC,WAAW;IACXC,SAAS;IACTC,gBAAgB;IAChBC,gBAAgB;IAChBC,WAAW;IACXC,YAAY;IACZC,SAAS;IACTC,sBAAsB;IACtBC,aAAa;IACbC,UAAU;IACVC,oBAAoB;IACpBC,eAAe;IACfC,UAAU;IACVC,UAAU;IACVC,gBAAgB;IAChBC,kBAAkB;IAClBC,4BAA4B;IAC5BC,cAAc;IACdC,uBAAuB;IACvBC,qBAAqB;IACrBC,mBAAmB;IACnBC,gBAAgB;IAChBC,iBAAiB;IACjBC,cAAc;IACdC,eAAe;IACfC,eAAe;IACfC,aAAa;IACbC,mBAAmB;IACnBC,iBAAiB;IACjBC,oBAAoB;IACpBC,kBAAkB;IAClBC,aAAa;IACbC,kBAAkB;IAClBC,gBAAgB;IAChBC,gBAAgB;IAChBC,cAAc;IACdC,WAAW;IACXC,gBAAgB;IAChBC,oBAAoB;IACpBC,yBAAyB;IACzBC,kBAAkB;IAClBC,aAAa;IACbC,WAAW;IACXC,uBAAuB;IACvBC,qBAAqB;IACrBC,YAAY;IACZC,UAAU;IAGVC,iBAAiB;IACjBC,eAAe;IAEfC,uBAAuB;IACvBC,4BAA4B;IAC5BC,mBAAmB;IACnBC,yBAAyB;IACzBC,8BAA8B;IAC9BC,yBAAyB;IACzBC,6BAA6B;IAC7BC,0BAA0B;IAC1BC,eAAe;IACfC,sBAAsB;IACtBC,oBAAoB;IACpBC,aAAa;EACf;AAIA,MAAMC,UAAU;IACd/E,QAAQ;IACRC,QAAQ;IACRC,SAAS;IACT8E,kBAAkB;IAClB3E,WAAW;EACb;AAEA,MAAM4E,oBAAoB;IACxBC,eAAe;IACfC,oBAAoB;EACtB;AAEA,MAAIC,YAAYrG,eAAeE;AAE/B,WAASoG,kBAAkBC,OAAO;AAChC,QAAIC,OAAOC,UAAUF,KAAK,GAAG;AAC3BF,kBAAYE;IACd;EACF;AAEA,WAASG,oBAAoB;AAC3B,WAAOL;EACT;AAKA,WAASM,KAAKC,KAAK;AACjB,QAAIP,aAAarG,eAAeG,OAAO;AAErC0G,cAAQF,KAAK,SAASC,GAAG,EAAE;IAC7B;EACF;AAGA,WAASE,KAAKF,KAAK;AACjB,QAAIP,aAAarG,eAAeE,UAAU;AAExC2G,cAAQC,KAAK,YAAYF,GAAG,EAAE;IAChC;EACF;AAEA,WAASG,YAAYH,KAAK;AACxB,UAAM,IAAII,MAAMJ,GAAG;EACrB;AAEA,WAASK,QAAOC,MAAMN,KAAK;AACzB,QAAI,CAACM,MAAM;AACTH,kBAAYH,GAAG;IACjB;EACF;AAGA,WAASO,iBAAiBC,KAAK;AAC7B,YAAQA,KAAKC,UAAQ;MACnB,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;AACH,eAAO;MACT;AACE,eAAO;IACX;EACF;AAUA,WAASC,uBAAuBF,KAAKG,UAAU,MAAMC,UAAU,MAAM;AACnE,QAAI,CAACJ,KAAK;AACR,aAAO;IACT;AACA,QAAII,WAAW,OAAOJ,QAAQ,UAAU;AAEtC,UAAII,QAAQC,sBAAsBL,IAAIM,WAAW,MAAM,GAAG;AACxD,cAAMC,OAAOP,IAAIQ,MAAM,KAAK;AAG5B,YAAID,MAAME,UAAU,GAAG;AACrBT,gBAAM,UAAUA,GAAG;QACrB;MACF;AAIA,UAAII,QAAQM,oBAAoB;AAC9B,YAAI;AACFV,gBAAMW,mBAAmBX,GAAG;QAC9B,QAAQ;QAAC;MACX;IACF;AAEA,UAAMY,cAAcT,UAAUU,IAAIC,MAAMd,KAAKG,OAAO,IAAIU,IAAIC,MAAMd,GAAG;AACrE,WAAOD,iBAAiBa,WAAW,IAAIA,cAAc;EACvD;AAUA,WAASG,cAAcf,KAAKgB,MAAMC,WAAW,OAAO;AAClD,UAAMC,MAAML,IAAIC,MAAMd,GAAG;AACzB,QAAIkB,KAAK;AACPA,UAAIF,OAAOA;AACX,aAAOE,IAAIC;IACb;AAGA,QAAIF,YAAYf,uBAAuBF,KAAK,oBAAoB,GAAG;AACjE,aAAOA,IAAIoB,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,GAAGJ,OAAO,IAAIA,IAAI,KAAK,EAAE;IACzD;AACA,WAAO;EACT;AAEA,WAASK,OAAOC,KAAKC,MAAMC,OAAOC,kBAAkB,OAAO;AAOzDC,WAAOC,eAAeL,KAAKC,MAAM;MAC/BC;MACAI,YAAY,CAACH;MACbI,cAAc;MACdC,UAAU;IACZ,CAAC;AACD,WAAON;EACT;AAKA,MAAMO,iBAAiB,SAASC,uBAAuB;AAErD,aAASD,eAAcE,SAASC,OAAM;AAOpC,WAAKD,UAAUA;AACf,WAAKC,OAAOA;IACd;AACAH,IAAAA,eAAcI,YAAY,IAAIvC,MAAM;AACpCmC,IAAAA,eAAcK,cAAcL;AAE5B,WAAOA;EACT,GAAG;AAEH,MAAMM,oBAAN,cAAgCN,cAAc;IAC5CK,YAAY5C,KAAK8C,MAAM;AACrB,YAAM9C,KAAK,mBAAmB;AAC9B,WAAK8C,OAAOA;IACd;EACF;AAEA,MAAMC,wBAAN,cAAoCR,cAAc;IAChDK,YAAY5C,KAAKgD,SAAS;AACxB,YAAMhD,KAAK,uBAAuB;AAClC,WAAKgD,UAAUA;IACjB;EACF;AAEA,MAAMC,sBAAN,cAAkCV,cAAc;IAC9CK,YAAY5C,KAAK;AACf,YAAMA,KAAK,qBAAqB;IAClC;EACF;AAEA,MAAMkD,oBAAN,cAAgCX,cAAc;IAC5CK,YAAY5C,KAAKmD,QAAQC,SAAS;AAChC,YAAMpD,KAAK,mBAAmB;AAC9B,WAAKmD,SAASA;AACd,WAAKC,UAAUA;IACjB;EACF;AAKA,MAAMC,cAAN,cAA0Bd,cAAc;IACtCK,YAAY5C,KAAK;AACf,YAAMA,KAAK,aAAa;IAC1B;EACF;AAKA,MAAMsD,iBAAN,cAA6Bf,cAAc;IACzCK,YAAY5C,KAAK;AACf,YAAMA,KAAK,gBAAgB;IAC7B;EACF;AAEA,WAASuD,cAAcC,OAAO;AAC5B,QAAI,OAAOA,UAAU,YAAYA,OAAOvC,WAAWwC,QAAW;AAC5DtD,kBAAY,oCAAoC;IAClD;AACA,UAAMc,SAASuC,MAAMvC;AACrB,UAAMyC,qBAAqB;AAC3B,QAAIzC,SAASyC,oBAAoB;AAC/B,aAAOC,OAAOC,aAAaC,MAAM,MAAML,KAAK;IAC9C;AACA,UAAMM,SAAS,CAAA;AACf,aAASC,KAAI,GAAGA,KAAI9C,QAAQ8C,MAAKL,oBAAoB;AACnD,YAAMM,WAAWC,KAAKC,IAAIH,KAAIL,oBAAoBzC,MAAM;AACxD,YAAMkD,QAAQX,MAAMY,SAASL,IAAGC,QAAQ;AACxCF,aAAOO,KAAKV,OAAOC,aAAaC,MAAM,MAAMM,KAAK,CAAC;IACpD;AACA,WAAOL,OAAOQ,KAAK,EAAE;EACvB;AAEA,WAASC,cAAcC,KAAK;AAC1B,QAAI,OAAOA,QAAQ,UAAU;AAC3BrE,kBAAY,oCAAoC;IAClD;AACA,UAAMc,SAASuD,IAAIvD;AACnB,UAAMuC,QAAQ,IAAIiB,WAAWxD,MAAM;AACnC,aAAS8C,KAAI,GAAGA,KAAI9C,QAAQ,EAAE8C,IAAG;AAC/BP,YAAMO,EAAC,IAAIS,IAAIE,WAAWX,EAAC,IAAI;IACjC;AACA,WAAOP;EACT;AAEA,WAASmB,SAAS3C,OAAO;AAOvB,WAAO2B,OAAOC,aACX5B,SAAS,KAAM,KACfA,SAAS,KAAM,KACfA,SAAS,IAAK,KACfA,QAAQ,GACV;EACF;AAOA,WAAS4C,iBAAiB;AACxB,UAAMC,UAAU,IAAIC,WAAW,CAAC;AAChCD,YAAQ,CAAC,IAAI;AACb,UAAME,SAAS,IAAIC,YAAYH,QAAQI,QAAQ,GAAG,CAAC;AACnD,WAAOF,OAAO,CAAC,MAAM;EACvB;AAGA,WAASG,kBAAkB;AACzB,QAAI;AACF,UAAIC,SAAS,EAAE;AACf,aAAO;IACT,QAAQ;AACN,aAAO;IACT;EACF;AAEA,MAAMC,mBAAN,MAAkB;IAChB,WAAWR,iBAAiB;AAC1B,aAAOS,OAAO,MAAM,kBAAkBT,eAAe,CAAC;IACxD;IAEA,WAAWM,kBAAkB;AAC3B,aAAOG,OAAO,MAAM,mBAAmBH,gBAAgB,CAAC;IAC1D;IAEA,WAAWI,6BAA6B;AACtC,aAAOD,OACL,MACA,8BACA,OAAOE,oBAAoB,WAC7B;IACF;IAEA,WAAWC,0BAA0B;AACnC,aAAOH,OACL,MACA,2BACA,OAAOI,iBAAiB,WAC1B;IACF;IAEA,WAAWC,0BAA0B;AACnC,aAAOL,OACL,MACA,2BACA,OAAOM,iBAAiB,WAC1B;IACF;IAEA,WAAWC,uBAAuB;AAChC,aAAOP,OACL,MACA,wBAEA,OAAOQ,cAAc,WACvB;IACF;IAEA,WAAWC,WAAW;AACpB,YAAM;QAAEA,UAAAA;QAAUC,WAAAA;MAAU,IAAIC;AAEhC,aAAOX,OAAO,MAAM,YAAY;QAC9BY,WAAWF,WAAUG,SAAS,SAAS;QACvCC,SAASL,UAASI,SAAS,OAAO;QAClCE,OAAON,UAASI,SAAS,KAAK;QAC9BG,WAAWP,UAASI,SAAS,KAAK;QAClCI,WAEEP,WAAUG,SAAS,SAAS;MAChC,CAAC;IACH;IAEA,WAAWK,sBAAsB;AAC/B,aAAOlB,OACL,MACA,uBACAmB,WAAWC,KAAKC,WAAW,0BAA0B,CACvD;IACF;EACF;AAEA,MAAMC,aAAaC,MAAMC,KAAKD,MAAM,GAAG,EAAEE,KAAK,GAAGC,CAAAA,OAC/CA,GAAEC,SAAS,EAAE,EAAEC,SAAS,GAAG,GAAG,CAChC;AAEA,MAAMC,OAAN,MAAW;IACT,OAAOC,aAAaC,IAAGC,IAAGC,IAAG;AAC3B,aAAO,IAAIX,WAAWS,EAAC,CAAC,GAAGT,WAAWU,EAAC,CAAC,GAAGV,WAAWW,EAAC,CAAC;IAC1D;IAEA,OAAOC,qBAAqBC,IAAI;AAC9B,aAAO,CAACA,GAAGC,GAAGD,GAAGF,GAAGE,GAAGE,GAAGF,GAAGG,GAAGH,GAAGI,GAAGJ,GAAGK,CAAC;IAC5C;IAKA,OAAOC,YAAYC,WAAWC,QAAQ;AACpC,UAAIC;AACJ,UAAIF,UAAU,CAAC,GAAG;AAChB,YAAIA,UAAU,CAAC,IAAI,GAAG;AACpBE,iBAAOD,OAAO,CAAC;AACfA,iBAAO,CAAC,IAAIA,OAAO,CAAC;AACpBA,iBAAO,CAAC,IAAIC;QACd;AACAD,eAAO,CAAC,KAAKD,UAAU,CAAC;AACxBC,eAAO,CAAC,KAAKD,UAAU,CAAC;AAExB,YAAIA,UAAU,CAAC,IAAI,GAAG;AACpBE,iBAAOD,OAAO,CAAC;AACfA,iBAAO,CAAC,IAAIA,OAAO,CAAC;AACpBA,iBAAO,CAAC,IAAIC;QACd;AACAD,eAAO,CAAC,KAAKD,UAAU,CAAC;AACxBC,eAAO,CAAC,KAAKD,UAAU,CAAC;MAC1B,OAAO;AACLE,eAAOD,OAAO,CAAC;AACfA,eAAO,CAAC,IAAIA,OAAO,CAAC;AACpBA,eAAO,CAAC,IAAIC;AACZA,eAAOD,OAAO,CAAC;AACfA,eAAO,CAAC,IAAIA,OAAO,CAAC;AACpBA,eAAO,CAAC,IAAIC;AAEZ,YAAIF,UAAU,CAAC,IAAI,GAAG;AACpBE,iBAAOD,OAAO,CAAC;AACfA,iBAAO,CAAC,IAAIA,OAAO,CAAC;AACpBA,iBAAO,CAAC,IAAIC;QACd;AACAD,eAAO,CAAC,KAAKD,UAAU,CAAC;AACxBC,eAAO,CAAC,KAAKD,UAAU,CAAC;AAExB,YAAIA,UAAU,CAAC,IAAI,GAAG;AACpBE,iBAAOD,OAAO,CAAC;AACfA,iBAAO,CAAC,IAAIA,OAAO,CAAC;AACpBA,iBAAO,CAAC,IAAIC;QACd;AACAD,eAAO,CAAC,KAAKD,UAAU,CAAC;AACxBC,eAAO,CAAC,KAAKD,UAAU,CAAC;MAC1B;AACAC,aAAO,CAAC,KAAKD,UAAU,CAAC;AACxBC,aAAO,CAAC,KAAKD,UAAU,CAAC;AACxBC,aAAO,CAAC,KAAKD,UAAU,CAAC;AACxBC,aAAO,CAAC,KAAKD,UAAU,CAAC;IAC1B;IAGA,OAAOA,UAAUG,IAAIC,KAAI;AACvB,aAAO,CACLD,GAAG,CAAC,IAAIC,IAAG,CAAC,IAAID,GAAG,CAAC,IAAIC,IAAG,CAAC,GAC5BD,GAAG,CAAC,IAAIC,IAAG,CAAC,IAAID,GAAG,CAAC,IAAIC,IAAG,CAAC,GAC5BD,GAAG,CAAC,IAAIC,IAAG,CAAC,IAAID,GAAG,CAAC,IAAIC,IAAG,CAAC,GAC5BD,GAAG,CAAC,IAAIC,IAAG,CAAC,IAAID,GAAG,CAAC,IAAIC,IAAG,CAAC,GAC5BD,GAAG,CAAC,IAAIC,IAAG,CAAC,IAAID,GAAG,CAAC,IAAIC,IAAG,CAAC,IAAID,GAAG,CAAC,GACpCA,GAAG,CAAC,IAAIC,IAAG,CAAC,IAAID,GAAG,CAAC,IAAIC,IAAG,CAAC,IAAID,GAAG,CAAC,CAAC;IAEzC;IAGA,OAAOE,oBAAoBC,IAAGC,IAAI;AAChC,aAAO,CACLD,GAAE,CAAC,IAAIC,GAAGb,IAAIY,GAAE,CAAC,IAAIC,GAAGhB,GACxBe,GAAE,CAAC,IAAIC,GAAGb,IAAIY,GAAE,CAAC,IAAIC,GAAGhB,GACxBe,GAAE,CAAC,IAAIC,GAAGZ,IAAIW,GAAE,CAAC,IAAIC,GAAGX,GACxBU,GAAE,CAAC,IAAIC,GAAGZ,IAAIW,GAAE,CAAC,IAAIC,GAAGX,GACxBU,GAAE,CAAC,IAAIC,GAAGV,IAAIS,GAAE,CAAC,IAAIC,GAAGT,IAAIQ,GAAE,CAAC,GAC/BA,GAAE,CAAC,IAAIC,GAAGV,IAAIS,GAAE,CAAC,IAAIC,GAAGT,IAAIQ,GAAE,CAAC,CAAC;IAEpC;IAGA,OAAOE,eAAeC,IAAGH,IAAGI,MAAM,GAAG;AACnC,YAAMC,KAAKF,GAAEC,GAAG;AAChB,YAAME,KAAKH,GAAEC,MAAM,CAAC;AACpBD,MAAAA,GAAEC,GAAG,IAAIC,KAAKL,GAAE,CAAC,IAAIM,KAAKN,GAAE,CAAC,IAAIA,GAAE,CAAC;AACpCG,MAAAA,GAAEC,MAAM,CAAC,IAAIC,KAAKL,GAAE,CAAC,IAAIM,KAAKN,GAAE,CAAC,IAAIA,GAAE,CAAC;IAC1C;IAEA,OAAOO,uBAAuBJ,IAAGT,WAAWU,MAAM,GAAG;AACnD,YAAMI,KAAKd,UAAU,CAAC;AACtB,YAAMG,KAAKH,UAAU,CAAC;AACtB,YAAMI,MAAKJ,UAAU,CAAC;AACtB,YAAMe,MAAKf,UAAU,CAAC;AACtB,YAAMgB,MAAKhB,UAAU,CAAC;AACtB,YAAMiB,KAAKjB,UAAU,CAAC;AACtB,eAASkB,KAAI,GAAGA,KAAI,GAAGA,MAAK,GAAG;AAC7B,cAAMC,KAAKV,GAAEC,MAAMQ,EAAC;AACpB,cAAME,MAAMX,GAAEC,MAAMQ,KAAI,CAAC;AACzBT,QAAAA,GAAEC,MAAMQ,EAAC,IAAIC,KAAKL,KAAKM,MAAMhB,MAAKY;AAClCP,QAAAA,GAAEC,MAAMQ,KAAI,CAAC,IAAIC,KAAKhB,KAAKiB,MAAML,MAAKE;MACxC;IACF;IAEA,OAAOI,sBAAsBZ,IAAGH,IAAG;AACjC,YAAMK,KAAKF,GAAE,CAAC;AACd,YAAMG,KAAKH,GAAE,CAAC;AACd,YAAMb,KAAIU,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC;AAClCG,MAAAA,GAAE,CAAC,KAAKE,KAAKL,GAAE,CAAC,IAAIM,KAAKN,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,KAAKV;AAC7Da,MAAAA,GAAE,CAAC,KAAK,CAACE,KAAKL,GAAE,CAAC,IAAIM,KAAKN,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,KAAKV;IAChE;IAIA,OAAO0B,wBAAwBC,MAAMvB,WAAWwB,QAAQ;AACtD,YAAMV,KAAKd,UAAU,CAAC;AACtB,YAAMG,KAAKH,UAAU,CAAC;AACtB,YAAMI,MAAKJ,UAAU,CAAC;AACtB,YAAMe,MAAKf,UAAU,CAAC;AACtB,YAAMgB,MAAKhB,UAAU,CAAC;AACtB,YAAMiB,KAAKjB,UAAU,CAAC;AACtB,YAAMyB,KAAKF,KAAK,CAAC;AACjB,YAAMG,KAAKH,KAAK,CAAC;AACjB,YAAMI,MAAKJ,KAAK,CAAC;AACjB,YAAMK,MAAKL,KAAK,CAAC;AAEjB,UAAIM,KAAKf,KAAKW,KAAKT;AACnB,UAAIc,MAAKD;AACT,UAAIE,KAAKjB,KAAKa,MAAKX;AACnB,UAAIgB,MAAKD;AACT,UAAIE,KAAKlB,MAAKW,KAAKT;AACnB,UAAIiB,MAAKD;AACT,UAAIE,KAAKpB,MAAKa,MAAKX;AACnB,UAAImB,MAAKD;AAET,UAAIhC,OAAO,KAAKC,QAAO,GAAG;AAExB,cAAMiC,OAAOlC,KAAKsB;AAClB,cAAMa,OAAOnC,KAAKwB;AAClB,cAAMY,OAAOnC,MAAKsB;AAClB,cAAMc,OAAOpC,MAAKwB;AAClBC,cAAMU;AACNP,QAAAA,OAAMO;AACNR,cAAMS;AACNV,QAAAA,OAAMU;AACNP,cAAMI;AACND,QAAAA,OAAMC;AACNF,cAAMG;AACNJ,QAAAA,OAAMI;MACR;AAEAd,aAAO,CAAC,IAAIiB,KAAKC,IAAIlB,OAAO,CAAC,GAAGK,IAAIE,IAAID,KAAIE,GAAE;AAC9CR,aAAO,CAAC,IAAIiB,KAAKC,IAAIlB,OAAO,CAAC,GAAGS,IAAIE,IAAID,KAAIE,GAAE;AAC9CZ,aAAO,CAAC,IAAIiB,KAAKE,IAAInB,OAAO,CAAC,GAAGK,IAAIE,IAAID,KAAIE,GAAE;AAC9CR,aAAO,CAAC,IAAIiB,KAAKE,IAAInB,OAAO,CAAC,GAAGS,IAAIE,IAAID,KAAIE,GAAE;IAChD;IAEA,OAAOQ,iBAAiBtC,IAAG;AACzB,YAAMV,KAAIU,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC;AAClC,aAAO,CACLA,GAAE,CAAC,IAAIV,IACP,CAACU,GAAE,CAAC,IAAIV,IACR,CAACU,GAAE,CAAC,IAAIV,IACRU,GAAE,CAAC,IAAIV,KACNU,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,KAAKV,KAC7BU,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,KAAKV,EAAC;IAEnC;IAKA,OAAOiD,8BAA8BC,SAAQtB,QAAQ;AACnD,YAAMV,KAAKgC,QAAO,CAAC;AACnB,YAAM3C,KAAK2C,QAAO,CAAC;AACnB,YAAM1C,MAAK0C,QAAO,CAAC;AACnB,YAAM/B,MAAK+B,QAAO,CAAC;AAEnB,YAAMpD,KAAIoB,MAAM,IAAIX,MAAM;AAC1B,YAAMZ,KAAIuB,KAAKV,MAAKD,KAAKY;AACzB,YAAMpB,KAAIS,OAAM,IAAIW,OAAM;AAG1B,YAAMgC,SAASrD,KAAIC,MAAK;AACxB,YAAMqD,SAASP,KAAKQ,KAAKF,SAAS,KAAKrD,KAAIC,KAAIJ,MAAK,EAAE;AACtDiC,aAAO,CAAC,IAAIiB,KAAKQ,KAAKF,QAAQC,UAAU,CAAC;AACzCxB,aAAO,CAAC,IAAIiB,KAAKQ,KAAKF,QAAQC,UAAU,CAAC;IAC3C;IAMA,OAAOE,cAAc3B,MAAM;AACzB,YAAMlC,KAAIkC,KAAK4B,MAAM,CAAC;AACtB,UAAI5B,KAAK,CAAC,IAAIA,KAAK,CAAC,GAAG;AACrBlC,QAAAA,GAAE,CAAC,IAAIkC,KAAK,CAAC;AACblC,QAAAA,GAAE,CAAC,IAAIkC,KAAK,CAAC;MACf;AACA,UAAIA,KAAK,CAAC,IAAIA,KAAK,CAAC,GAAG;AACrBlC,QAAAA,GAAE,CAAC,IAAIkC,KAAK,CAAC;AACblC,QAAAA,GAAE,CAAC,IAAIkC,KAAK,CAAC;MACf;AACA,aAAOlC;IACT;IAKA,OAAO+D,UAAUC,OAAOC,OAAO;AAC7B,YAAMC,OAAOd,KAAKE,IAChBF,KAAKC,IAAIW,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,GAC3BZ,KAAKC,IAAIY,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAC7B;AACA,YAAME,QAAQf,KAAKC,IACjBD,KAAKE,IAAIU,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,GAC3BZ,KAAKE,IAAIW,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAC7B;AACA,UAAIC,OAAOC,OAAO;AAChB,eAAO;MACT;AACA,YAAMC,OAAOhB,KAAKE,IAChBF,KAAKC,IAAIW,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,GAC3BZ,KAAKC,IAAIY,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAC7B;AACA,YAAMI,QAAQjB,KAAKC,IACjBD,KAAKE,IAAIU,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,GAC3BZ,KAAKE,IAAIW,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAC7B;AACA,UAAIG,OAAOC,OAAO;AAChB,eAAO;MACT;AAEA,aAAO,CAACH,MAAME,MAAMD,OAAOE,KAAK;IAClC;IAEA,OAAOC,iBAAiBC,IAAGC,IAAG5D,QAAQ;AACpCA,aAAO,CAAC,IAAIwC,KAAKC,IAAIzC,OAAO,CAAC,GAAG2D,EAAC;AACjC3D,aAAO,CAAC,IAAIwC,KAAKC,IAAIzC,OAAO,CAAC,GAAG4D,EAAC;AACjC5D,aAAO,CAAC,IAAIwC,KAAKE,IAAI1C,OAAO,CAAC,GAAG2D,EAAC;AACjC3D,aAAO,CAAC,IAAIwC,KAAKE,IAAI1C,OAAO,CAAC,GAAG4D,EAAC;IACnC;IAEA,OAAOC,gBAAgBC,IAAIC,IAAIC,IAAIC,IAAIjE,QAAQ;AAC7CA,aAAO,CAAC,IAAIwC,KAAKC,IAAIzC,OAAO,CAAC,GAAG8D,IAAIE,EAAE;AACtChE,aAAO,CAAC,IAAIwC,KAAKC,IAAIzC,OAAO,CAAC,GAAG+D,IAAIE,EAAE;AACtCjE,aAAO,CAAC,IAAIwC,KAAKE,IAAI1C,OAAO,CAAC,GAAG8D,IAAIE,EAAE;AACtChE,aAAO,CAAC,IAAIwC,KAAKE,IAAI1C,OAAO,CAAC,GAAG+D,IAAIE,EAAE;IACxC;IAEA,OAAO,oBAAoBH,IAAIE,IAAIE,KAAIC,KAAIJ,IAAIE,IAAIG,KAAIC,KAAIC,IAAGtE,QAAQ;AACpE,UAAIsE,MAAK,KAAKA,MAAK,GAAG;AACpB;MACF;AACA,YAAMC,MAAK,IAAID;AACf,YAAME,MAAKF,KAAIA;AACf,YAAMG,MAAMD,MAAKF;AACjB,YAAMX,KAAIY,OAAMA,OAAMA,MAAKT,KAAK,IAAIQ,KAAIN,MAAM,IAAIQ,MAAKN,OAAMO,MAAMN;AACnE,YAAMP,KAAIW,OAAMA,OAAMA,MAAKR,KAAK,IAAIO,KAAIL,MAAM,IAAIO,MAAKJ,OAAMK,MAAMJ;AACnErE,aAAO,CAAC,IAAIwC,KAAKC,IAAIzC,OAAO,CAAC,GAAG2D,EAAC;AACjC3D,aAAO,CAAC,IAAIwC,KAAKC,IAAIzC,OAAO,CAAC,GAAG4D,EAAC;AACjC5D,aAAO,CAAC,IAAIwC,KAAKE,IAAI1C,OAAO,CAAC,GAAG2D,EAAC;AACjC3D,aAAO,CAAC,IAAIwC,KAAKE,IAAI1C,OAAO,CAAC,GAAG4D,EAAC;IACnC;IAEA,OAAO,aAAaE,IAAIE,IAAIE,KAAIC,KAAIJ,IAAIE,IAAIG,KAAIC,KAAI5E,IAAGH,IAAGI,IAAGM,QAAQ;AACnE,UAAIwC,KAAKkC,IAAIjF,EAAC,IAAI,OAAO;AACvB,YAAI+C,KAAKkC,IAAIpF,EAAC,KAAK,OAAO;AACxB,eAAK,oBACHwE,IACAE,IACAE,KACAC,KACAJ,IACAE,IACAG,KACAC,KACA,CAAC3E,KAAIJ,IACLU,MACF;QACF;AACA;MACF;AAEA,YAAM2E,QAAQrF,MAAK,IAAI,IAAII,KAAID;AAC/B,UAAIkF,QAAQ,GAAG;AACb;MACF;AACA,YAAMC,YAAYpC,KAAKQ,KAAK2B,KAAK;AACjC,YAAM9C,MAAK,IAAIpC;AACf,WAAK,oBACHqE,IACAE,IACAE,KACAC,KACAJ,IACAE,IACAG,KACAC,MACC,CAAC/E,KAAIsF,aAAa/C,KACnB7B,MACF;AACA,WAAK,oBACH8D,IACAE,IACAE,KACAC,KACAJ,IACAE,IACAG,KACAC,MACC,CAAC/E,KAAIsF,aAAa/C,KACnB7B,MACF;IACF;IAGA,OAAO6E,kBAAkBf,IAAIC,IAAIC,IAAIC,IAAIC,KAAIE,KAAID,KAAIE,KAAIrE,QAAQ;AAC/DA,aAAO,CAAC,IAAIwC,KAAKC,IAAIzC,OAAO,CAAC,GAAG8D,IAAIK,GAAE;AACtCnE,aAAO,CAAC,IAAIwC,KAAKC,IAAIzC,OAAO,CAAC,GAAG+D,IAAIM,GAAE;AACtCrE,aAAO,CAAC,IAAIwC,KAAKE,IAAI1C,OAAO,CAAC,GAAG8D,IAAIK,GAAE;AACtCnE,aAAO,CAAC,IAAIwC,KAAKE,IAAI1C,OAAO,CAAC,GAAG+D,IAAIM,GAAE;AAEtC,WAAK,aACHP,IACAE,IACAE,KACAC,KACAJ,IACAE,IACAG,KACAC,KACA,KAAK,CAACP,KAAK,KAAKE,KAAKE,OAAMC,MAC3B,KAAKL,KAAK,IAAIE,KAAKE,MACnB,KAAKF,KAAKF,KACV9D,MACF;AACA,WAAK,aACH8D,IACAE,IACAE,KACAC,KACAJ,IACAE,IACAG,KACAC,KACA,KAAK,CAACN,KAAK,KAAKE,KAAKG,OAAMC,MAC3B,KAAKN,KAAK,IAAIE,KAAKG,MACnB,KAAKH,KAAKF,KACV/D,MACF;IACF;EACF;AA+DA,WAAS8E,mBAAmBC,KAAK;AAC/B,WAAOC,mBAAmBC,OAAOF,GAAG,CAAC;EACvC;AAkCA,MAAIG,iBAAiB;AACrB,MAAIC,mBAAmB;AACvB,WAASC,iBAAiBC,KAAK;AAC7B,QAAI,CAACH,gBAAgB;AAOnBA,uBACE;AACFC,yBAAmB,oBAAIG,IAAI,CAAC,CAAC,UAAK,SAAI,CAAC,CAAC;IAC1C;AACA,WAAOD,IAAIE,WAAWL,gBAAgB,CAACM,KAAGC,IAAIC,QAC5CD,KAAKA,GAAGE,UAAU,MAAM,IAAIR,iBAAiBS,IAAIF,GAAE,CACrD;EACF;AAEA,WAASG,UAAU;AACjB,QAEE,OAAOC,OAAOC,eAAe,YAC7B;AACA,aAAOD,OAAOC,WAAW;IAC3B;AACA,UAAMC,MAAM,IAAIC,WAAW,EAAE;AAC7BH,WAAOI,gBAAgBF,GAAG;AAC1B,WAAOG,cAAcH,GAAG;EAC1B;AAEA,MAAMI,mBAAmB;AAEzB,WAASC,qBAAqBC,UAAUC,WAAWC,MAAM;AACvD,QAAI,CAACC,MAAMC,QAAQF,IAAI,KAAKA,KAAKG,SAAS,GAAG;AAC3C,aAAO;IACT;AACA,UAAM,CAACC,MAAMC,MAAM,GAAGC,IAAI,IAAIN;AAC9B,QAAI,CAACF,SAASM,IAAI,KAAK,CAACG,OAAOC,UAAUJ,IAAI,GAAG;AAC9C,aAAO;IACT;AACA,QAAI,CAACL,UAAUM,IAAI,GAAG;AACpB,aAAO;IACT;AACA,UAAMI,UAAUH,KAAKH;AACrB,QAAIO,YAAY;AAChB,YAAQL,KAAKM,MAAI;MACf,KAAK;AACH,YAAIF,UAAU,KAAKA,UAAU,GAAG;AAC9B,iBAAO;QACT;AACA;MACF,KAAK;MACL,KAAK;AACH,eAAOA,YAAY;MACrB,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;AACH,YAAIA,UAAU,GAAG;AACf,iBAAO;QACT;AACA;MACF,KAAK;AACH,YAAIA,YAAY,GAAG;AACjB,iBAAO;QACT;AACAC,oBAAY;AACZ;MACF;AACE,eAAO;IACX;AACA,eAAWE,OAAON,MAAM;AACtB,UAAI,OAAOM,QAAQ,YAAaF,aAAaE,QAAQ,MAAO;AAC1D;MACF;AACA,aAAO;IACT;AACA,WAAO;EACT;AAIA,WAASC,UAAUC,IAAGC,KAAKC,KAAK;AAC9B,WAAOC,KAAKF,IAAIE,KAAKD,IAAIF,IAAGC,GAAG,GAAGC,GAAG;EACvC;AAYA,WAASE,aAAaC,KAAK;AACzB,QAAIC,WAAWC,UAAUC,UAAU;AACjC,aAAOH,IAAIG,SAAS;IACtB;AACA,WAAOC,KAAKC,cAAcL,GAAG,CAAC;EAChC;AAGA,WAASM,eAAeC,KAAK;AAC3B,QAAIN,WAAWO,YAAY;AACzB,aAAOP,WAAWO,WAAWD,GAAG;IAClC;AACA,WAAOE,cAAcC,KAAKH,GAAG,CAAC;EAChC;AAIA,MAEE,OAAOI,QAAQC,QAAQ,YACvB;AACAD,YAAQC,MAAM,SAAUC,OAAOC,MAAM;AACnC,aAAO,IAAIH,QAAQI,CAAAA,aAAW;AAC5BA,QAAAA,SAAQF,GAAG,GAAGC,IAAI,CAAC;MACrB,CAAC;IACH;EACF;AAIA,MAAI,OAAOE,KAAKC,eAAe,YAAY;AAGzCD,SAAKC,aAAa,SAAUC,UAAS;AACnC,aAAOA,SAAQC,OAAO,CAACC,IAAGC,OAAMD,KAAIC,IAAG,CAAC;IAC1C;EACF;AClvCA,MAAMC,UAAN,MAAMA,SAAQ;IAUZ,OAAOC,YAAYC,KAAK;AACtB,YAAMC,QAAQ,CAAA;AACd,YAAMC,SAAS;QACbD;QACAE,QAAQC,uBAAOC,OAAO,IAAI;MAC5B;AACA,eAASC,MAAKC,MAAM;AAClB,YAAI,CAACA,MAAM;AACT;QACF;AACA,YAAIC,MAAM;AACV,cAAMC,QAAOF,KAAKE;AAClB,YAAIA,UAAS,SAAS;AACpBD,gBAAMD,KAAKG;QACb,WAAW,CAACZ,SAAQa,gBAAgBF,KAAI,GAAG;AACzC;QACF,WAAWF,MAAMK,YAAYb,aAAa;AACxCS,gBAAMD,KAAKK,WAAWb;QACxB,WAAWQ,KAAKG,OAAO;AACrBF,gBAAMD,KAAKG;QACb;AACA,YAAIF,QAAQ,MAAM;AAChBP,gBAAMY,KAAK;YACTL;UACF,CAAC;QACH;AACA,YAAI,CAACD,KAAKO,UAAU;AAClB;QACF;AACA,mBAAWC,SAASR,KAAKO,UAAU;AACjCR,UAAAA,MAAKS,KAAK;QACZ;MACF;AACAT,MAAAA,MAAKN,GAAG;AACR,aAAOE;IACT;IAQA,OAAOS,gBAAgBF,OAAM;AAC3B,aAAO,EACLA,UAAS,cACTA,UAAS,WACTA,UAAS,YACTA,UAAS;IAEb;EACF;AC9CA,MAAMO,WAAN,MAAe;IACb,OAAOC,aAAaC,MAAMC,IAAIC,SAASC,SAASC,QAAQ;AACtD,YAAMC,aAAaF,QAAQG,SAASL,IAAI;QAAEM,OAAO;MAAK,CAAC;AACvD,cAAQL,QAAQM,MAAI;QAClB,KAAK;AACH,cAAIH,WAAWE,UAAU,MAAM;AAC7BP,iBAAKS,cAAcJ,WAAWE;UAChC;AACA,cAAIH,WAAW,SAAS;AACtB;UACF;AACAJ,eAAKU,iBAAiB,SAASC,CAAAA,WAAS;AACtCR,oBAAQS,SAASX,IAAI;cAAEM,OAAOI,OAAME,OAAON;YAAM,CAAC;UACpD,CAAC;AACD;QACF,KAAK;AACH,cACEL,QAAQY,WAAWC,SAAS,WAC5Bb,QAAQY,WAAWC,SAAS,YAC5B;AACA,gBAAIV,WAAWE,UAAUL,QAAQY,WAAWE,OAAO;AACjDhB,mBAAKiB,aAAa,WAAW,IAAI;YACnC,WAAWZ,WAAWE,UAAUL,QAAQY,WAAWI,QAAQ;AAGzDlB,mBAAKmB,gBAAgB,SAAS;YAChC;AACA,gBAAIf,WAAW,SAAS;AACtB;YACF;AACAJ,iBAAKU,iBAAiB,UAAUC,CAAAA,WAAS;AACvCR,sBAAQS,SAASX,IAAI;gBACnBM,OAAOI,OAAME,OAAOO,UAChBT,OAAME,OAAOQ,aAAa,OAAO,IACjCV,OAAME,OAAOQ,aAAa,QAAQ;cACxC,CAAC;YACH,CAAC;UACH,OAAO;AACL,gBAAIhB,WAAWE,UAAU,MAAM;AAC7BP,mBAAKiB,aAAa,SAASZ,WAAWE,KAAK;YAC7C;AACA,gBAAIH,WAAW,SAAS;AACtB;YACF;AACAJ,iBAAKU,iBAAiB,SAASC,CAAAA,WAAS;AACtCR,sBAAQS,SAASX,IAAI;gBAAEM,OAAOI,OAAME,OAAON;cAAM,CAAC;YACpD,CAAC;UACH;AACA;QACF,KAAK;AACH,cAAIF,WAAWE,UAAU,MAAM;AAC7BP,iBAAKiB,aAAa,SAASZ,WAAWE,KAAK;AAC3C,uBAAWe,WAAUpB,QAAQqB,UAAU;AACrC,kBAAID,QAAOR,WAAWP,UAAUF,WAAWE,OAAO;AAChDe,gBAAAA,QAAOR,WAAWU,WAAW;cAC/B,WAAWF,QAAOR,WAAWW,eAAe,UAAU,GAAG;AACvD,uBAAOH,QAAOR,WAAWU;cAC3B;YACF;UACF;AACAxB,eAAKU,iBAAiB,SAASC,CAAAA,WAAS;AACtC,kBAAMe,UAAUf,OAAME,OAAOa;AAC7B,kBAAMnB,QACJmB,QAAQC,kBAAkB,KACtB,KACAD,QAAQA,QAAQC,aAAa,EAAEpB;AACrCJ,oBAAQS,SAASX,IAAI;cAAEM;YAAM,CAAC;UAChC,CAAC;AACD;MACJ;IACF;IAEA,OAAOqB,cAAc;MAAE5B;MAAME;MAASC,UAAU;MAAMC;MAAQyB;IAAY,GAAG;AAC3E,YAAM;QAAEf;MAAW,IAAIZ;AACvB,YAAM4B,sBAAsB9B,gBAAgB+B;AAE5C,UAAIjB,WAAWC,SAAS,SAAS;AAG/BD,mBAAWN,OAAO,GAAGM,WAAWN,IAAI,IAAIJ,MAAM;MAChD;AACA,iBAAW,CAAC4B,KAAKzB,KAAK,KAAK0B,OAAOC,QAAQpB,UAAU,GAAG;AACrD,YAAIP,UAAU,QAAQA,UAAU4B,QAAW;AACzC;QACF;AAEA,gBAAQH,KAAG;UACT,KAAK;AACH,gBAAIzB,MAAM6B,QAAQ;AAChBpC,mBAAKiB,aAAae,KAAKzB,MAAM8B,KAAK,GAAG,CAAC;YACxC;AACA;UACF,KAAK;AAIH;UACF,KAAK;AACHrC,iBAAKiB,aAAa,mBAAmBV,KAAK;AAC1C;UACF,KAAK;AACH0B,mBAAOK,OAAOtC,KAAKuC,OAAOhC,KAAK;AAC/B;UACF,KAAK;AACHP,iBAAKS,cAAcF;AACnB;UACF;AACE,gBAAI,CAACuB,uBAAwBE,QAAQ,UAAUA,QAAQ,aAAc;AACnEhC,mBAAKiB,aAAae,KAAKzB,KAAK;YAC9B;QACJ;MACF;AAEA,UAAIuB,qBAAqB;AACvBD,oBAAYW,kBACVxC,MACAc,WAAW2B,MACX3B,WAAW4B,SACb;MACF;AAGA,UAAIvC,WAAWW,WAAW6B,QAAQ;AAChC,aAAK5C,aAAaC,MAAMc,WAAW6B,QAAQzC,SAASC,OAAO;MAC7D;IACF;IAOA,OAAOyC,OAAOC,YAAY;AACxB,YAAM1C,UAAU0C,WAAWC;AAC3B,YAAMjB,cAAcgB,WAAWhB;AAC/B,YAAMkB,OAAOF,WAAWG;AACxB,YAAM5C,SAASyC,WAAWzC,UAAU;AACpC,YAAM6C,WAAWC,SAASC,cAAcJ,KAAKvC,IAAI;AACjD,UAAIuC,KAAKjC,YAAY;AACnB,aAAKc,cAAc;UACjB5B,MAAMiD;UACN/C,SAAS6C;UACT3C;UACAyB;QACF,CAAC;MACH;AAEA,YAAMuB,mBAAmBhD,WAAW;AACpC,YAAMiD,UAAUR,WAAWS;AAC3BD,cAAQE,OAAON,QAAQ;AAEvB,UAAIJ,WAAWW,UAAU;AACvB,cAAMC,YAAY,UAAUZ,WAAWW,SAASC,UAAUpB,KAAK,GAAG,CAAC;AACnEgB,gBAAQd,MAAMkB,YAAYA;MAC5B;AAGA,UAAIL,kBAAkB;AACpBC,gBAAQpC,aAAa,SAAS,kBAAkB;MAClD;AAGA,YAAMyC,WAAW,CAAA;AAIjB,UAAIX,KAAKxB,SAASa,WAAW,GAAG;AAC9B,YAAIW,KAAKxC,OAAO;AACd,gBAAMoD,OAAOT,SAASU,eAAeb,KAAKxC,KAAK;AAC/C0C,mBAASM,OAAOI,IAAI;AACpB,cAAIP,oBAAoBS,QAAQC,gBAAgBf,KAAKvC,IAAI,GAAG;AAC1DkD,qBAASK,KAAKJ,IAAI;UACpB;QACF;AACA,eAAO;UAAED;QAAS;MACpB;AAEA,YAAMM,QAAQ,CAAC,CAACjB,MAAM,IAAIE,QAAQ,CAAC;AAEnC,aAAOe,MAAM5B,SAAS,GAAG;AACvB,cAAM,CAAC6B,QAAQC,IAAGlE,IAAI,IAAIgE,MAAMG,GAAG,EAAE;AACrC,YAAID,KAAI,MAAMD,OAAO1C,SAASa,QAAQ;AACpC4B,gBAAMI,IAAI;AACV;QACF;AAEA,cAAMC,QAAQJ,OAAO1C,SAAS,EAAEyC,MAAMG,GAAG,EAAE,EAAE,CAAC,CAAC;AAC/C,YAAIE,UAAU,MAAM;AAClB;QACF;AAEA,cAAM;UAAE7D,MAAAA;QAAK,IAAI6D;AACjB,YAAI7D,UAAS,SAAS;AACpB,gBAAMmD,OAAOT,SAASU,eAAeS,MAAM9D,KAAK;AAChDmD,mBAASK,KAAKJ,IAAI;AAClB3D,eAAKuD,OAAOI,IAAI;AAChB;QACF;AAEA,cAAMW,YAAYD,OAAOvD,YAAYyD,QACjCrB,SAASsB,gBAAgBH,MAAMvD,WAAWyD,OAAO/D,KAAI,IACrD0C,SAASC,cAAc3C,KAAI;AAE/BR,aAAKuD,OAAOe,SAAS;AACrB,YAAID,MAAMvD,YAAY;AACpB,eAAKc,cAAc;YACjB5B,MAAMsE;YACNpE,SAASmE;YACTlE;YACAC;YACAyB;UACF,CAAC;QACH;AAEA,YAAIwC,MAAM9C,UAAUa,SAAS,GAAG;AAC9B4B,gBAAMD,KAAK,CAACM,OAAO,IAAIC,SAAS,CAAC;QACnC,WAAWD,MAAM9D,OAAO;AACtB,gBAAMoD,OAAOT,SAASU,eAAeS,MAAM9D,KAAK;AAChD,cAAI6C,oBAAoBS,QAAQC,gBAAgBtD,KAAI,GAAG;AACrDkD,qBAASK,KAAKJ,IAAI;UACpB;AACAW,oBAAUf,OAAOI,IAAI;QACvB;MACF;AAkBA,iBAAWc,MAAMpB,QAAQqB,iBACvB,uDACF,GAAG;AACDD,WAAGxD,aAAa,YAAY,IAAI;MAClC;AAEA,aAAO;QACLyC;MACF;IACF;IAOA,OAAOiB,OAAO9B,YAAY;AACxB,YAAMY,YAAY,UAAUZ,WAAWW,SAASC,UAAUpB,KAAK,GAAG,CAAC;AACnEQ,iBAAWS,IAAIf,MAAMkB,YAAYA;AACjCZ,iBAAWS,IAAIsB,SAAS;IAC1B;EACF;AC7QA,MAAMC,SAAS;AAEf,MAAMC,gBAAN,MAAoB;IAClB,OAAOC,MAAM;IAEb,OAAOC,MAAM;IAEb,OAAOC,mBAAmB,KAAKF,MAAM,KAAKC;EAC5C;AAEA,iBAAeE,UAAUC,KAAKC,OAAO,QAAQ;AAC3C,QAEEC,gBAAgBF,KAAKG,SAASC,OAAO,GACrC;AACA,YAAMC,WAAW,MAAMC,MAAMN,GAAG;AAChC,UAAI,CAACK,SAASE,IAAI;AAChB,cAAM,IAAIC,MAAMH,SAASI,UAAU;MACrC;AACA,cAAQR,MAAI;QACV,KAAK;AACH,iBAAOI,SAASK,YAAY;QAC9B,KAAK;AACH,iBAAOL,SAASM,KAAK;QACvB,KAAK;AACH,iBAAON,SAASO,KAAK;MACzB;AACA,aAAOP,SAASQ,KAAK;IACvB;AAGA,WAAO,IAAIC,QAAQ,CAACC,UAASC,WAAW;AACtC,YAAMC,UAAU,IAAIC,eAAe;AACnCD,cAAQE,KAAK,OAAOnB,KAAmB,IAAI;AAC3CiB,cAAQG,eAAenB;AAEvBgB,cAAQI,qBAAqB,MAAM;AACjC,YAAIJ,QAAQK,eAAeJ,eAAeK,MAAM;AAC9C;QACF;AACA,YAAIN,QAAQO,WAAW,OAAOP,QAAQO,WAAW,GAAG;AAClD,kBAAQvB,MAAI;YACV,KAAK;YACL,KAAK;YACL,KAAK;AACHc,cAAAA,SAAQE,QAAQZ,QAAQ;AACxB;UACJ;AACAU,UAAAA,SAAQE,QAAQQ,YAAY;AAC5B;QACF;AACAT,eAAO,IAAIR,MAAMS,QAAQR,UAAU,CAAC;MACtC;AAEAQ,cAAQS,KAAK,IAAI;IACnB,CAAC;EACH;AAkCA,MAAMC,eAAN,MAAMA,cAAa;IAIjBC,YAAY;MACVC;MACAC;MACAC;MACAC;MACAC,UAAU;MACVC,UAAU;MACVC,WAAW;IACb,GAAG;AACD,WAAKN,UAAUA;AACf,WAAKC,WAAWA;AAChB,WAAKC,QAAQA;AACb,WAAKC,WAAWA;AAChB,WAAKC,UAAUA;AACf,WAAKC,UAAUA;AAEfH,eAASD;AAIT,YAAMM,WAAWP,QAAQ,CAAC,IAAIA,QAAQ,CAAC,KAAK;AAC5C,YAAMQ,WAAWR,QAAQ,CAAC,IAAIA,QAAQ,CAAC,KAAK;AAC5C,UAAIS,SAASC,SAASC,SAASC;AAE/BT,kBAAY;AACZ,UAAIA,WAAW,GAAG;AAChBA,oBAAY;MACd;AACA,cAAQA,UAAQ;QACd,KAAK;AACHM,oBAAU;AACVC,oBAAU;AACVC,oBAAU;AACVC,oBAAU;AACV;QACF,KAAK;AACHH,oBAAU;AACVC,oBAAU;AACVC,oBAAU;AACVC,oBAAU;AACV;QACF,KAAK;AACHH,oBAAU;AACVC,oBAAU;AACVC,oBAAU;AACVC,oBAAU;AACV;QACF,KAAK;AACHH,oBAAU;AACVC,oBAAU;AACVC,oBAAU;AACVC,oBAAU;AACV;QACF;AACE,gBAAM,IAAIjC,MACR,mEACF;MACJ;AAEA,UAAI2B,UAAU;AACZK,kBAAU,CAACA;AACXC,kBAAU,CAACA;MACb;AAEA,UAAIC,eAAeC;AACnB,UAAIC,OAAOC;AACX,UAAIP,YAAY,GAAG;AACjBI,wBAAgBI,KAAKC,IAAIV,UAAUR,QAAQ,CAAC,CAAC,IAAIE,QAAQE;AACzDU,wBAAgBG,KAAKC,IAAIX,UAAUP,QAAQ,CAAC,CAAC,IAAIE,QAAQG;AACzDU,iBAASf,QAAQ,CAAC,IAAIA,QAAQ,CAAC,KAAKE;AACpCc,kBAAUhB,QAAQ,CAAC,IAAIA,QAAQ,CAAC,KAAKE;MACvC,OAAO;AACLW,wBAAgBI,KAAKC,IAAIX,UAAUP,QAAQ,CAAC,CAAC,IAAIE,QAAQE;AACzDU,wBAAgBG,KAAKC,IAAIV,UAAUR,QAAQ,CAAC,CAAC,IAAIE,QAAQG;AACzDU,iBAASf,QAAQ,CAAC,IAAIA,QAAQ,CAAC,KAAKE;AACpCc,kBAAUhB,QAAQ,CAAC,IAAIA,QAAQ,CAAC,KAAKE;MACvC;AAIA,WAAKiB,YAAY,CACfV,UAAUP,OACVQ,UAAUR,OACVS,UAAUT,OACVU,UAAUV,OACVW,gBAAgBJ,UAAUP,QAAQK,UAAUI,UAAUT,QAAQM,SAC9DM,gBAAgBJ,UAAUR,QAAQK,UAAUK,UAAUV,QAAQM,OAAO;AAGvE,WAAKO,QAAQA;AACb,WAAKC,SAASA;IAChB;IAMA,IAAII,UAAU;AACZ,YAAMC,OAAO,KAAKrB;AAElB,aAAOsB,OAAO,MAAM,WAAW;QAC7BC,WAAWF,KAAK,CAAC,IAAIA,KAAK,CAAC;QAC3BG,YAAYH,KAAK,CAAC,IAAIA,KAAK,CAAC;QAC5BI,OAAOJ,KAAK,CAAC;QACbK,OAAOL,KAAK,CAAC;MACf,CAAC;IACH;IAOAM,MAAM;MACJzB,QAAQ,KAAKA;MACbC,WAAW,KAAKA;MAChBC,UAAU,KAAKA;MACfC,UAAU,KAAKA;MACfC,WAAW;IACb,IAAI,CAAC,GAAG;AACN,aAAO,IAAIR,cAAa;QACtBE,SAAS,KAAKA,QAAQ4B,MAAM;QAC5B3B,UAAU,KAAKA;QACfC;QACAC;QACAC;QACAC;QACAC;MACF,CAAC;IACH;IAYAuB,uBAAuBC,IAAGC,IAAG;AAC3B,YAAMC,KAAI,CAACF,IAAGC,EAAC;AACfE,WAAKC,eAAeF,IAAG,KAAKb,SAAS;AACrC,aAAOa;IACT;IASAG,2BAA2BC,MAAM;AAC/B,YAAMC,UAAU,CAACD,KAAK,CAAC,GAAGA,KAAK,CAAC,CAAC;AACjCH,WAAKC,eAAeG,SAAS,KAAKlB,SAAS;AAC3C,YAAMmB,cAAc,CAACF,KAAK,CAAC,GAAGA,KAAK,CAAC,CAAC;AACrCH,WAAKC,eAAeI,aAAa,KAAKnB,SAAS;AAC/C,aAAO,CAACkB,QAAQ,CAAC,GAAGA,QAAQ,CAAC,GAAGC,YAAY,CAAC,GAAGA,YAAY,CAAC,CAAC;IAChE;IAWAC,kBAAkBT,IAAGC,IAAG;AACtB,YAAMC,KAAI,CAACF,IAAGC,EAAC;AACfE,WAAKO,sBAAsBR,IAAG,KAAKb,SAAS;AAC5C,aAAOa;IACT;EACF;AAEA,MAAMS,8BAAN,cAA0CC,cAAc;IACtD3C,YAAY4C,KAAKC,aAAa,GAAG;AAC/B,YAAMD,KAAK,6BAA6B;AACxC,WAAKC,aAAaA;IACpB;EACF;AAEA,WAASC,aAAa1E,KAAK;AACzB,UAAM2E,KAAK3E,IAAI4E;AACf,QAAIC,KAAI;AACR,WAAOA,KAAIF,MAAM3E,IAAI6E,EAAC,EAAEC,KAAK,MAAM,IAAI;AACrCD,MAAAA;IACF;AACA,WAAO7E,IAAI+E,UAAUF,IAAGA,KAAI,CAAC,EAAEG,YAAY,MAAM;EACnD;AAEA,WAASC,UAAUC,UAAU;AAC3B,WAAO,OAAOA,aAAa,YAAY,UAAUC,KAAKD,QAAQ;EAChE;AAOA,WAASE,mBAAmBpF,KAAK;AAC/B,KAACA,GAAG,IAAIA,IAAIqF,MAAM,QAAQ,CAAC;AAC3B,WAAOrF,IAAI+E,UAAU/E,IAAIsF,YAAY,GAAG,IAAI,CAAC;EAC/C;AASA,WAASC,sBAAsBvF,KAAKwF,kBAAkB,gBAAgB;AACpE,QAAI,OAAOxF,QAAQ,UAAU;AAC3B,aAAOwF;IACT;AACA,QAAId,aAAa1E,GAAG,GAAG;AACrByF,WAAK,oEAAoE;AACzE,aAAOD;IACT;AAEA,UAAME,SAASC,eAAa;AAC1B,UAAI;AACF,eAAO,IAAIC,IAAID,SAAS;MAC1B,QAAQ;AACN,YAAI;AACF,iBAAO,IAAIC,IAAIC,mBAAmBF,SAAS,CAAC;QAC9C,QAAQ;AACN,cAAI;AAEF,mBAAO,IAAIC,IAAID,WAAW,iBAAiB;UAC7C,QAAQ;AACN,gBAAI;AACF,qBAAO,IAAIC,IAAIC,mBAAmBF,SAAS,GAAG,iBAAiB;YACjE,QAAQ;AACN,qBAAO;YACT;UACF;QACF;MACF;IACF;AAEA,UAAMG,SAASJ,OAAO1F,GAAG;AACzB,QAAI,CAAC8F,QAAQ;AAEX,aAAON;IACT;AAEA,UAAMO,SAASC,CAAAA,UAAQ;AACrB,UAAI;AACF,YAAIC,UAAUJ,mBAAmBG,KAAI;AACrC,YAAIC,QAAQC,SAAS,GAAG,GAAG;AACzBD,oBAAUA,QAAQZ,MAAM,GAAG,EAAEc,GAAG,EAAE;AAClC,cAAIF,QAAQd,KAAK,UAAU,GAAG;AAC5B,mBAAOc;UACT;AACA,iBAAOD;QACT;AACA,eAAOC;MACT,QAAQ;AACN,eAAOD;MACT;IACF;AAEA,UAAMI,WAAW;AACjB,UAAMlB,WAAWY,OAAOO,SAAShB,MAAM,GAAG,EAAEc,GAAG,EAAE;AACjD,QAAIC,SAASjB,KAAKD,QAAQ,GAAG;AAC3B,aAAOa,OAAOb,QAAQ;IACxB;AAEA,QAAIY,OAAOQ,aAAaC,OAAO,GAAG;AAChC,YAAMC,SAASC,MAAMC,KAAKZ,OAAOQ,aAAaE,OAAO,CAAC,EAAEG,QAAQ;AAChE,iBAAWC,SAASJ,QAAQ;AAC1B,YAAIJ,SAASjB,KAAKyB,KAAK,GAAG;AAExB,iBAAOb,OAAOa,KAAK;QACrB;MACF;AACA,YAAMC,OAAOJ,MAAMC,KAAKZ,OAAOQ,aAAaO,KAAK,CAAC,EAAEF,QAAQ;AAC5D,iBAAWG,OAAOD,MAAM;AACtB,YAAIT,SAASjB,KAAK2B,GAAG,GAAG;AAEtB,iBAAOf,OAAOe,GAAG;QACnB;MACF;IACF;AAEA,QAAIhB,OAAOiB,MAAM;AACf,YAAMC,aAAa;AACnB,YAAMC,eAAeD,WAAWE,KAAKpB,OAAOiB,IAAI;AAChD,UAAIE,cAAc;AAChB,eAAOlB,OAAOkB,aAAa,CAAC,CAAC;MAC/B;IACF;AAEA,WAAOzB;EACT;AAEA,MAAM2B,YAAN,MAAgB;IACdC,UAAUC,uBAAOC,OAAO,IAAI;IAE5BC,QAAQ,CAAA;IAERC,KAAKxB,OAAM;AACT,UAAIA,SAAQ,KAAKoB,SAAS;AACxB3B,aAAK,gCAAgCO,KAAI,EAAE;MAC7C;AACA,WAAKoB,QAAQpB,KAAI,IAAIyB,KAAKC,IAAI;IAChC;IAEAC,QAAQ3B,OAAM;AACZ,UAAI,EAAEA,SAAQ,KAAKoB,UAAU;AAC3B3B,aAAK,kCAAkCO,KAAI,EAAE;MAC/C;AACA,WAAKuB,MAAMK,KAAK;QACd5B,MAAAA;QACA6B,OAAO,KAAKT,QAAQpB,KAAI;QACxB8B,KAAKL,KAAKC,IAAI;MAChB,CAAC;AAED,aAAO,KAAKN,QAAQpB,KAAI;IAC1B;IAEA+B,WAAW;AAET,YAAMC,SAAS,CAAA;AACf,UAAIC,UAAU;AACd,iBAAW;QAAEjC,MAAAA;MAAK,KAAK,KAAKuB,OAAO;AACjCU,kBAAUnF,KAAKoF,IAAIlC,MAAKpB,QAAQqD,OAAO;MACzC;AACA,iBAAW;QAAEjC,MAAAA;QAAM6B,OAAAA;QAAOC;MAAI,KAAK,KAAKP,OAAO;AAC7CS,eAAOJ,KAAK,GAAG5B,MAAKmC,OAAOF,OAAO,CAAC,IAAIH,MAAMD,MAAK;CAAM;MAC1D;AACA,aAAOG,OAAOI,KAAK,EAAE;IACvB;EACF;AAEA,WAASlI,gBAAgBF,KAAKqI,SAAS;AAIrC,UAAMC,MAAMD,UAAUzC,IAAI2C,MAAMvI,KAAKqI,OAAO,IAAIzC,IAAI2C,MAAMvI,GAAG;AAE7D,WAAOsI,KAAKE,aAAa,WAAWF,KAAKE,aAAa;EACxD;AAKA,WAASC,cAAcC,IAAG;AACxBA,IAAAA,GAAEC,eAAe;EACnB;AAEA,WAASC,UAAUF,IAAG;AACpBA,IAAAA,GAAEC,eAAe;AACjBD,IAAAA,GAAEG,gBAAgB;EACpB;AAGA,WAASC,WAAWC,SAAS;AAE3BC,YAAQC,IAAI,2BAA2BF,OAAO;EAChD;AAEA,MAAMG,gBAAN,MAAoB;IAClB,OAAO;IAkBP,OAAOC,aAAaC,OAAO;AACzB,UAAIA,iBAAiB3B,MAAM;AACzB,eAAO2B;MACT;AACA,UAAI,CAACA,SAAS,OAAOA,UAAU,UAAU;AACvC,eAAO;MACT;AAGA,WAAK,WAAW,IAAIC,OAClB,0FAYF;AAKA,YAAMC,WAAU,KAAK,OAAOpC,KAAKkC,KAAK;AACtC,UAAI,CAACE,UAAS;AACZ,eAAO;MACT;AAIA,YAAMC,QAAOC,SAASF,SAAQ,CAAC,GAAG,EAAE;AACpC,UAAIG,SAAQD,SAASF,SAAQ,CAAC,GAAG,EAAE;AACnCG,MAAAA,SAAQA,UAAS,KAAKA,UAAS,KAAKA,SAAQ,IAAI;AAChD,UAAIC,OAAMF,SAASF,SAAQ,CAAC,GAAG,EAAE;AACjCI,MAAAA,OAAMA,QAAO,KAAKA,QAAO,KAAKA,OAAM;AACpC,UAAIC,QAAOH,SAASF,SAAQ,CAAC,GAAG,EAAE;AAClCK,MAAAA,QAAOA,SAAQ,KAAKA,SAAQ,KAAKA,QAAO;AACxC,UAAIC,UAASJ,SAASF,SAAQ,CAAC,GAAG,EAAE;AACpCM,MAAAA,UAASA,WAAU,KAAKA,WAAU,KAAKA,UAAS;AAChD,UAAIC,SAASL,SAASF,SAAQ,CAAC,GAAG,EAAE;AACpCO,eAASA,UAAU,KAAKA,UAAU,KAAKA,SAAS;AAChD,YAAMC,wBAAwBR,SAAQ,CAAC,KAAK;AAC5C,UAAIS,aAAaP,SAASF,SAAQ,CAAC,GAAG,EAAE;AACxCS,mBAAaA,cAAc,KAAKA,cAAc,KAAKA,aAAa;AAChE,UAAIC,eAAeR,SAASF,SAAQ,CAAC,GAAG,EAAE,KAAK;AAC/CU,qBAAeA,gBAAgB,KAAKA,gBAAgB,KAAKA,eAAe;AAMxE,UAAIF,0BAA0B,KAAK;AACjCH,QAAAA,SAAQI;AACRH,QAAAA,WAAUI;MACZ,WAAWF,0BAA0B,KAAK;AACxCH,QAAAA,SAAQI;AACRH,QAAAA,WAAUI;MACZ;AAEA,aAAO,IAAIvC,KAAKA,KAAKwC,IAAIV,OAAME,QAAOC,MAAKC,OAAMC,SAAQC,MAAM,CAAC;IAClE;EACF;AAKA,WAASK,mBAAmBC,SAAS;IAAEpI,QAAQ;IAAGC,WAAW;EAAE,GAAG;AAChE,UAAM;MAAEY;MAAOC;IAAO,IAAIsH,QAAQC,WAAWC;AAC7C,UAAMxI,UAAU,CAAC,GAAG,GAAG2H,SAAS5G,KAAK,GAAG4G,SAAS3G,MAAM,CAAC;AAExD,WAAO,IAAIlB,aAAa;MACtBE;MACAC,UAAU;MACVC;MACAC;IACF,CAAC;EACH;AAEA,WAASsI,OAAOC,QAAO;AACrB,QAAIA,OAAMC,WAAW,GAAG,GAAG;AACzB,YAAMC,WAAWjB,SAASe,OAAM9G,MAAM,CAAC,GAAG,EAAE;AAC5C,aAAO,EACJgH,WAAW,aAAa,KACxBA,WAAW,UAAa,GACzBA,WAAW,GAAQ;IAEvB;AAEA,QAAIF,OAAMC,WAAW,MAAM,GAAG;AAE5B,aAAOD,OACJ9G,MAA0B,GAAG,EAAE,EAC/B4B,MAAM,GAAG,EACTqF,IAAI/G,CAAAA,OAAK6F,SAAS7F,EAAC,CAAC;IACzB;AAEA,QAAI4G,OAAMC,WAAW,OAAO,GAAG;AAC7B,aAAOD,OACJ9G,MAA2B,GAAG,EAAE,EAChC4B,MAAM,GAAG,EACTqF,IAAI/G,CAAAA,OAAK6F,SAAS7F,EAAC,CAAC,EACpBF,MAAM,GAAG,CAAC;IACf;AAEAgC,SAAK,8BAA8B8E,MAAK,GAAG;AAC3C,WAAO,CAAC,GAAG,GAAG,CAAC;EACjB;AAEA,WAASI,eAAeC,SAAQ;AAC9B,UAAMC,OAAO1K,SAAS2K,cAAc,MAAM;AAC1CD,SAAKR,MAAMU,aAAa;AAExBF,SAAKR,MAAMW,cAAc;AACzB7K,aAAS8K,KAAKC,OAAOL,IAAI;AACzB,eAAW7E,SAAQ4E,QAAO/D,KAAK,GAAG;AAChCgE,WAAKR,MAAME,QAAQvE;AACnB,YAAMmF,gBAAgBC,OAAOC,iBAAiBR,IAAI,EAAEN;AACpDK,MAAAA,QAAOU,IAAItF,OAAMsE,OAAOa,aAAa,CAAC;IACxC;AACAN,SAAKU,OAAO;EACd;AAEA,WAASC,oBAAoBC,KAAK;AAChC,UAAM;MAAEC,GAAAA;MAAGC,GAAAA;MAAGC,GAAAA;MAAGC,GAAAA;MAAGnD,GAAAA;MAAGoD,GAAAA;IAAE,IAAIL,IAAIM,aAAa;AAC9C,WAAO,CAACL,IAAGC,IAAGC,IAAGC,IAAGnD,IAAGoD,EAAC;EAC1B;AAEA,WAASE,2BAA2BP,KAAK;AACvC,UAAM;MAAEC,GAAAA;MAAGC,GAAAA;MAAGC,GAAAA;MAAGC,GAAAA;MAAGnD,GAAAA;MAAGoD,GAAAA;IAAE,IAAIL,IAAIM,aAAa,EAAEE,WAAW;AAC3D,WAAO,CAACP,IAAGC,IAAGC,IAAGC,IAAGnD,IAAGoD,EAAC;EAC1B;AAQA,WAASI,mBACPC,KACAC,UACAC,WAAW,OACXC,aAAa,MACb;AACA,QAAIF,oBAAoBzK,cAAc;AACpC,YAAM;QAAEyB;QAAWC;MAAW,IAAI+I,SAASnJ;AAC3C,YAAM;QAAEoH;MAAM,IAAI8B;AAClB,YAAMI,WAAWC,iBAAYC;AAE7B,YAAMC,KAAI,+BAA+BtJ,SAAS,MAChDuJ,KAAI,+BAA+BtJ,UAAU;AAC/C,YAAMuJ,WAAWL,WACX,eAAeG,EAAC,4BAChB,QAAQA,EAAC,KACbG,YAAYN,WACR,eAAeI,EAAC,4BAChB,QAAQA,EAAC;AAEf,UAAI,CAACN,YAAYD,SAASpK,WAAW,QAAQ,GAAG;AAC9CqI,cAAMzH,QAAQgK;AACdvC,cAAMxH,SAASgK;MACjB,OAAO;AACLxC,cAAMzH,QAAQiK;AACdxC,cAAMxH,SAAS+J;MACjB;IACF;AAEA,QAAIN,YAAY;AACdH,UAAIW,aAAa,sBAAsBV,SAASpK,QAAQ;IAC1D;EACF;AAKA,MAAM+K,cAAN,MAAMA,aAAY;IAChBnL,cAAc;AACZ,YAAM;QAAEoL;MAAW,IAAID;AAKvB,WAAKE,KAAKD;AAKV,WAAKE,KAAKF;IACZ;IAKA,IAAIG,SAAS;AACX,aAAO,KAAKF,OAAO,KAAK,KAAKC,OAAO;IACtC;IAMA,IAAIE,YAAY;AACd,aAAO,KAAKH,OAAO,KAAKC;IAC1B;IAMAG,YAAYzK,OAAOC,QAAQyK,WAAWC,QAAQC,gBAAgB,IAAI;AAChE,UAAIC,eAAeC,UACjBC,gBAAgBD,UAChBE,iBAAiBF;AAEnBJ,kBAAYP,aAAYc,UAAUP,WAAWE,aAAa;AAC1D,UAAIF,YAAY,GAAG;AACjBG,uBAAe3K,KAAKgL,KAAKR,aAAa1K,QAAQC,OAAO;MACvD;AACA,UAAI0K,WAAW,IAAI;AACjBI,wBAAgBJ,SAAS3K;AACzBgL,yBAAiBL,SAAS1K;MAC5B;AACA,YAAMkL,WAAWjL,KAAKkL,IAAIP,cAAcE,eAAeC,cAAc;AAErE,UAAI,KAAKX,KAAKc,YAAY,KAAKb,KAAKa,UAAU;AAC5C,aAAKd,KAAKc;AACV,aAAKb,KAAKa;AACV,eAAO;MACT;AACA,aAAO;IACT;IAEA,WAAWf,aAAa;AACtB,aAAOiB,WAAWC,oBAAoB;IACxC;IAEA,OAAOL,UAAUP,WAAWE,eAAe;AACzC,UAAIA,iBAAiB,GAAG;AACtB,cAAMW,YAAYrL,KAAKsL,KAGjBhD,OAAOiD,OAAOC,aAAalD,OAAOiD,OAAOE,cAC3C,KAAKvB,cAAc,KAClB,IAAIQ,gBAAgB,IACzB;AACA,eAAOF,YAAY,IAAIxK,KAAKkL,IAAIV,WAAWa,SAAS,IAAIA;MAC1D;AACA,aAAOb;IACT;EACF;AAIA,MAAMkB,0BAA0B,CAC9B,cACA,cACA,aACA,aACA,cACA,aACA,iBACA,cACA,cAAc;AAGhB,MAAMC,cAAN,MAAkB;IAChB,WAAWC,aAAa;AACtB,aAAOvL,OACL,MACA,cACA,CAAC,CAACiI,QAAQuD,aAAa,8BAA8B,EAAErF,OACzD;IACF;EACF;AAEA,MAAMsF,eAAN,MAAmB;IACjB,WAAWC,yBAAyB;AAClC,YAAMC,UAAU3O,SAAS2K,cAAc,MAAM;AAC7CgE,cAAQC,UAAUC,IAAI,WAAW,SAAS;AAC1C,YAAM;QAAE3E;MAAM,IAAIyE;AAClBzE,YAAMzH,QAAQyH,MAAMxH,SAAS;AAC7BwH,YAAM4E,UAAU;AAChB5E,YAAME,QAAQ;AACdpK,eAAS8K,KAAKC,OAAO4D,OAAO;AAC5B,YAAM;QAAEvE,OAAAA;MAAM,IAAIa,OAAOC,iBAAiByD,OAAO;AACjDA,cAAQvD,OAAO;AACf,aAAOpI,OAAO,MAAM,0BAA0BmH,OAAOC,MAAK,CAAC;IAC7D;EACF;AAEA,WAAS2E,aAAaC,IAAGC,IAAGzD,IAAG0D,SAAS;AACtCA,cAAUvM,KAAKkL,IAAIlL,KAAKoF,IAAImH,WAAW,GAAG,CAAC,GAAG,CAAC;AAC/C,UAAMC,QAAQ,OAAO,IAAID;AACzBF,IAAAA,KAAIrM,KAAKyM,MAAMJ,KAAIE,UAAUC,KAAK;AAClCF,IAAAA,KAAItM,KAAKyM,MAAMH,KAAIC,UAAUC,KAAK;AAClC3D,IAAAA,KAAI7I,KAAKyM,MAAM5D,KAAI0D,UAAUC,KAAK;AAClC,WAAO,CAACH,IAAGC,IAAGzD,EAAC;EACjB;AAEA,WAAS6D,SAASC,KAAKC,QAAQ;AAC7B,UAAMP,KAAIM,IAAI,CAAC,IAAI;AACnB,UAAML,KAAIK,IAAI,CAAC,IAAI;AACnB,UAAM9D,KAAI8D,IAAI,CAAC,IAAI;AAEnB,UAAMvH,MAAMpF,KAAKoF,IAAIiH,IAAGC,IAAGzD,EAAC;AAC5B,UAAMqC,MAAMlL,KAAKkL,IAAImB,IAAGC,IAAGzD,EAAC;AAC5B,UAAMgE,MAAKzH,MAAM8F,OAAO;AAExB,QAAI9F,QAAQ8F,KAAK;AAEf0B,aAAO,CAAC,IAAIA,OAAO,CAAC,IAAI;IAC1B,OAAO;AACL,YAAM7D,KAAI3D,MAAM8F;AAChB0B,aAAO,CAAC,IAAIC,KAAI,MAAM9D,MAAK3D,MAAM8F,OAAOnC,MAAK,IAAI3D,MAAM8F;AAEvD,cAAQ9F,KAAG;QACT,KAAKiH;AACHO,iBAAO,CAAC,MAAMN,KAAIzD,MAAKE,MAAKuD,KAAIzD,KAAI,IAAI,MAAM;AAC9C;QACF,KAAKyD;AACHM,iBAAO,CAAC,MAAM/D,KAAIwD,MAAKtD,KAAI,KAAK;AAChC;QACF,KAAKF;AACH+D,iBAAO,CAAC,MAAMP,KAAIC,MAAKvD,KAAI,KAAK;AAChC;MACJ;IACF;AACA6D,WAAO,CAAC,IAAIC;EACd;AAEA,WAASC,SAASC,KAAKH,QAAQ;AAC7B,UAAM/C,KAAIkD,IAAI,CAAC;AACf,UAAMC,KAAID,IAAI,CAAC;AACf,UAAMF,KAAIE,IAAI,CAAC;AACf,UAAMjE,MAAK,IAAI9I,KAAKC,IAAI,IAAI4M,KAAI,CAAC,KAAKG;AACtC,UAAMnM,KAAIiI,MAAK,IAAI9I,KAAKC,IAAM4J,KAAI,KAAM,IAAK,CAAC;AAC9C,UAAMoD,KAAIJ,KAAI/D,KAAI;AAElB,YAAQ9I,KAAKkN,MAAMrD,KAAI,EAAE,GAAC;MACxB,KAAK;AACH+C,eAAO,CAAC,IAAI9D,KAAImE;AAChBL,eAAO,CAAC,IAAI/L,KAAIoM;AAChBL,eAAO,CAAC,IAAIK;AACZ;MACF,KAAK;AACHL,eAAO,CAAC,IAAI/L,KAAIoM;AAChBL,eAAO,CAAC,IAAI9D,KAAImE;AAChBL,eAAO,CAAC,IAAIK;AACZ;MACF,KAAK;AACHL,eAAO,CAAC,IAAIK;AACZL,eAAO,CAAC,IAAI9D,KAAImE;AAChBL,eAAO,CAAC,IAAI/L,KAAIoM;AAChB;MACF,KAAK;AACHL,eAAO,CAAC,IAAIK;AACZL,eAAO,CAAC,IAAI/L,KAAIoM;AAChBL,eAAO,CAAC,IAAI9D,KAAImE;AAChB;MACF,KAAK;AACHL,eAAO,CAAC,IAAI/L,KAAIoM;AAChBL,eAAO,CAAC,IAAIK;AACZL,eAAO,CAAC,IAAI9D,KAAImE;AAChB;MACF,KAAK;MACL,KAAK;AACHL,eAAO,CAAC,IAAI9D,KAAImE;AAChBL,eAAO,CAAC,IAAIK;AACZL,eAAO,CAAC,IAAI/L,KAAIoM;AAChB;IACJ;EACF;AAEA,WAASE,iBAAiBtM,IAAG;AAC3B,WAAOA,MAAK,UAAUA,KAAI,UAAUA,KAAI,SAAS,UAAU;EAC7D;AAEA,WAASuM,cAAcC,MAAMC,MAAMV,QAAQ;AACzCE,aAASO,MAAMT,MAAM;AACrBA,WAAOhF,IAAIuF,gBAAgB;AAC3B,UAAMI,OAAO,SAASX,OAAO,CAAC,IAAI,SAASA,OAAO,CAAC,IAAI,SAASA,OAAO,CAAC;AACxEE,aAASQ,MAAMV,MAAM;AACrBA,WAAOhF,IAAIuF,gBAAgB;AAC3B,UAAMK,OAAO,SAASZ,OAAO,CAAC,IAAI,SAASA,OAAO,CAAC,IAAI,SAASA,OAAO,CAAC;AACxE,WAAOW,OAAOC,QACTD,OAAO,SAASC,OAAO,SACvBA,OAAO,SAASD,OAAO;EAC9B;AAGA,MAAME,gBAAgB,oBAAIC,IAAI;AAW9B,WAASC,kBAAkBC,WAAWC,YAAY;AAChD,UAAM7J,MACJ4J,UAAU,CAAC,IACXA,UAAU,CAAC,IAAI,MACfA,UAAU,CAAC,IAAI,QACfC,WAAW,CAAC,IAAI,WAChBA,WAAW,CAAC,IAAI,aAChBA,WAAW,CAAC,IAAI;AAClB,QAAIC,cAAcL,cAAcM,IAAI/J,GAAG;AACvC,QAAI8J,aAAa;AACf,aAAOA;IACT;AACA,UAAME,QAAQ,IAAIC,aAAa,CAAC;AAChC,UAAMrB,SAASoB,MAAME,SAAS,GAAG,CAAC;AAClC,UAAMC,UAAUH,MAAME,SAAS,GAAG,CAAC;AACnCxB,aAASkB,WAAWO,OAAO;AAC3B,UAAMC,WAAWJ,MAAME,SAAS,GAAG,CAAC;AACpCxB,aAASmB,YAAYO,QAAQ;AAC7B,UAAMC,mBAAmBD,SAAS,CAAC,IAAI;AAKvC,UAAME,cAAcD,mBAAmB,KAAK;AAE5CF,YAAQ,CAAC,IAAIE,mBACTrO,KAAKgL,KAAKmD,QAAQ,CAAC,CAAC,IACpB,IAAInO,KAAKgL,KAAK,IAAImD,QAAQ,CAAC,CAAC;AAEhC,QAAIf,cAAce,SAASC,UAAUxB,MAAM,IAAI0B,aAAa;AAC1D,UAAIvJ,QAAOC;AACX,UAAIqJ,kBAAkB;AACpBtJ,QAAAA,SAAQoJ,QAAQ,CAAC;AACjBnJ,cAAM;MACR,OAAO;AACLD,QAAAA,SAAQ;AACRC,cAAMmJ,QAAQ,CAAC;MACjB;AACA,YAAMI,YAAY;AAClB,aAAOvJ,MAAMD,SAAQwJ,WAAW;AAC9B,cAAMC,MAAOL,QAAQ,CAAC,KAAKpJ,SAAQC,OAAO;AAC1C,YACEqJ,qBACAjB,cAAce,SAASC,UAAUxB,MAAM,IAAI0B,aAC3C;AACAvJ,UAAAA,SAAQyJ;QACV,OAAO;AACLxJ,gBAAMwJ;QACR;MACF;AACAL,cAAQ,CAAC,IAAIE,mBAAmBrJ,MAAMD;IACxC;AAEA+H,aAASqB,SAASvB,MAAM;AACxBkB,kBAAc9M,KAAKyN,aACjBzO,KAAKyM,MAAMG,OAAO,CAAC,IAAI,GAAG,GAC1B5M,KAAKyM,MAAMG,OAAO,CAAC,IAAI,GAAG,GAC1B5M,KAAKyM,MAAMG,OAAO,CAAC,IAAI,GAAG,CAC5B;AACAa,kBAAcjF,IAAIxE,KAAK8J,WAAW;AAClC,WAAOA;EACT;AAEA,WAASY,eAAe;IAAEC;IAAMC;IAAKC;EAAU,GAAGC,WAAW;AAC3D,UAAMC,WAAW1R,SAAS2R,uBAAuB;AACjD,QAAI,OAAOL,SAAS,UAAU;AAC5B,YAAM5N,KAAI1D,SAAS2K,cAAc,GAAG;AACpCjH,MAAAA,GAAE6N,MAAMA,OAAO;AACf,YAAMK,QAAQN,KAAKpM,MAAM,cAAc;AACvC,eAASR,KAAI,GAAGF,KAAKoN,MAAMnN,QAAQC,KAAIF,IAAI,EAAEE,IAAG;AAC9C,cAAMmN,OAAOD,MAAMlN,EAAC;AACpBhB,QAAAA,GAAEqH,OAAO/K,SAAS8R,eAAeD,IAAI,CAAC;AACtC,YAAInN,KAAIF,KAAK,GAAG;AACdd,UAAAA,GAAEqH,OAAO/K,SAAS2K,cAAc,IAAI,CAAC;QACvC;MACF;AACA+G,eAAS3G,OAAOrH,EAAC;IACnB,OAAO;AACLqO,eAASC,OAAO;QACdC,SAASX;QACTtF,KAAK0F;QACLQ,QAAQ;MACV,CAAC;IACH;AACAR,aAASS,kBAAkBvD,UAAUC,IAAI,YAAY2C,SAAS;AAC9DC,cAAU1G,OAAO2G,QAAQ;EAC3B;AAEA,WAASU,oBAAoBC,MAAM;AAEjC,UAAMC,OAAO,IAAIC,OAAO;AACxB,QAAI,CAACF,MAAM;AACT,aAAOC;IACT;AACA,aAAS5N,KAAI,GAAGF,KAAK6N,KAAK5N,QAAQC,KAAIF,MAAM;AAC1C,cAAQ6N,KAAK3N,IAAG,GAAC;QACf,KAAK8N,QAAQC;AACXH,eAAKG,OAAOJ,KAAK3N,IAAG,GAAG2N,KAAK3N,IAAG,CAAC;AAChC;QACF,KAAK8N,QAAQE;AACXJ,eAAKI,OAAOL,KAAK3N,IAAG,GAAG2N,KAAK3N,IAAG,CAAC;AAChC;QACF,KAAK8N,QAAQG;AACXL,eAAKM,cACHP,KAAK3N,IAAG,GACR2N,KAAK3N,IAAG,GACR2N,KAAK3N,IAAG,GACR2N,KAAK3N,IAAG,GACR2N,KAAK3N,IAAG,GACR2N,KAAK3N,IAAG,CACV;AACA;QACF,KAAK8N,QAAQK;AACXP,eAAKO,iBAAiBR,KAAK3N,IAAG,GAAG2N,KAAK3N,IAAG,GAAG2N,KAAK3N,IAAG,GAAG2N,KAAK3N,IAAG,CAAC;AAChE;QACF,KAAK8N,QAAQM;AACXR,eAAKQ,UAAU;AACf;QACF;AACExN,eAAK,uCAAuC+M,KAAK3N,KAAI,CAAC,CAAC,EAAE;AACzD;MACJ;IACF;AACA,WAAO4N;EACT;ACz/BA,MAAMS,gBAAN,MAAMA,eAAc;IAClB,WAAW;IAEX,eAAe;IAEf;IAEA,WAAW;IAEX,WAAW;IAEX,WAAW;IAEX,wBAAwB;IAExB,8BAA8B;IAE9B,OAAO,cAAc;IAErBC,YAAYC,QAAQ;AAClB,WAAK,UAAUA;AAEfF,qBAAc,gBAAgBG,OAAOC,OAAO;QAC1CC,UAAU;QACVC,WAAW;QACXC,KAAK;QACLC,OAAO;QACPC,WAAW;MACb,CAAC;IACH;IAEAC,SAAS;AACP,YAAMC,cAAe,KAAK,WAAWC,SAASC,cAAc,KAAK;AACjEF,kBAAYG,UAAUC,IAAI,eAAe,QAAQ;AACjDJ,kBAAYK,aAAa,QAAQ,SAAS;AAE1C,YAAMC,SAAS,KAAK,QAAQC,WAAWC;AACvC,UAAIF,kBAAkBG,eAAe,CAACH,OAAOI,SAAS;AACpDV,oBAAYW,iBAAiB,eAAeC,eAAe;UAAEN;QAAO,CAAC;AACrEN,oBAAYW,iBAAiB,eAAetB,eAAc,cAAc;UACtEiB;QACF,CAAC;MACH;AAEA,YAAMO,UAAW,KAAK,WAAWZ,SAASC,cAAc,KAAK;AAC7DW,cAAQC,YAAY;AACpBd,kBAAYe,OAAOF,OAAO;AAE1B,YAAMG,WAAW,KAAK,QAAQC;AAC9B,UAAID,UAAU;AACZ,cAAM;UAAEE;QAAM,IAAIlB;AAClB,cAAMmB,KACJ,KAAK,QAAQZ,WAAWa,cAAc,QAClC,IAAIJ,SAAS,CAAC,IACdA,SAAS,CAAC;AAChBE,cAAMG,iBAAiB,GAAG,MAAMF,EAAC;AACjCD,cAAMI,MAAM,QACV,MAAMN,SAAS,CAAC,CAAC;MAErB;AAEA,aAAOhB;IACT;IAEA,IAAIuB,MAAM;AACR,aAAO,KAAK;IACd;IAEA,OAAO,aAAaC,IAAG;AACrBA,MAAAA,GAAEC,gBAAgB;IACpB;IAEA,SAASD,IAAG;AACV,WAAK,QAAQE,sBAAsB;AACnCC,gBAAUH,EAAC;IACb;IAEA,UAAUA,IAAG;AACX,WAAK,QAAQE,sBAAsB;AACnCC,gBAAUH,EAAC;IACb;IAEA,uBAAuBI,SAAS;AAI9B,YAAMtB,SAAS,KAAK,QAAQC,WAAWC;AACvC,UAAI,EAAEF,kBAAkBG,gBAAgBH,OAAOI,SAAS;AACtD,eAAO;MACT;AACAkB,cAAQjB,iBAAiB,WAAW,KAAK,SAASkB,KAAK,IAAI,GAAG;QAC5DC,SAAS;QACTxB;MACF,CAAC;AACDsB,cAAQjB,iBAAiB,YAAY,KAAK,UAAUkB,KAAK,IAAI,GAAG;QAC9DC,SAAS;QACTxB;MACF,CAAC;AACDsB,cAAQjB,iBAAiB,eAAeC,eAAe;QAAEN;MAAO,CAAC;AACjE,aAAO;IACT;IAEAyB,OAAO;AACL,WAAK,SAAS5B,UAAUC,IAAI,QAAQ;AACpC,WAAK,cAAc4B,aAAa;IAClC;IAEAC,OAAO;AACL,WAAK,SAAS9B,UAAU+B,OAAO,QAAQ;AACvC,WAAK,UAAUC,MAAM;AACrB,WAAK,UAAUA,MAAM;IACvB;IAEAC,kBAAkB;AAChB,YAAM;QAAEC;QAAY9B;MAAW,IAAI,KAAK;AAExC,YAAM+B,SAASrC,SAASC,cAAc,QAAQ;AAC9CoC,aAAOnC,UAAUC,IAAI,SAAS,cAAc;AAC5CkC,aAAOC,WAAW;AAClBD,aAAOjC,aAAa,gBAAgBhB,eAAc,YAAYgD,UAAU,CAAC;AACzE,UAAI,KAAK,uBAAuBC,MAAM,GAAG;AACvCA,eAAO3B,iBACL,SACAa,CAAAA,OAAK;AACHjB,qBAAWiC,OAAO;QACpB,GACA;UAAElC,QAAQC,WAAWC;QAAQ,CAC/B;MACF;AACA,WAAK,SAASO,OAAOuB,MAAM;IAC7B;IAEA,IAAI,WAAW;AACb,YAAMG,UAAUxC,SAASC,cAAc,KAAK;AAC5CuC,cAAQ3B,YAAY;AACpB,aAAO2B;IACT;IAEA,MAAMC,WAAWC,SAAS;AACxB,YAAML,SAAS,MAAMK,QAAQ5C,OAAO;AACpC,WAAK,uBAAuBuC,MAAM;AAClC,WAAK,SAASvB,OAAOuB,QAAQ,KAAK,QAAQ;AAC1C,WAAK,WAAWK;IAClB;IAEAC,WAAWC,SAASC,gBAAgB,MAAM;AACxC,UAAI,KAAK,UAAU;AACjB;MACF;AACA,YAAMR,SAASO,QAAQE,iBAAiB;AACxC,UAAI,CAACT,QAAQ;AACX;MACF;AACA,WAAK,uBAAuBA,MAAM;AAClC,YAAMG,UAAW,KAAK,wBAAwB,KAAK;AACnD,UAAI,CAACK,eAAe;AAClB,aAAK,SAAS/B,OAAOuB,QAAQG,OAAO;MACtC,OAAO;AACL,aAAK,SAASO,aAAaV,QAAQQ,aAAa;AAChD,aAAK,SAASE,aAAaP,SAASK,aAAa;MACnD;AACA,WAAK,WAAWD;AAChBA,cAAQI,UAAU;IACpB;IAEAC,eAAeC,aAAa;AAC1B,UAAI,KAAK,cAAc;AACrB;MACF;AACA,WAAK,eAAeA;AACpB,YAAMb,SAASa,YAAYC,aAAa;AACxC,WAAK,uBAAuBd,MAAM;AAClC,WAAK,SAASvB,OAAOuB,QAAQ,KAAK,QAAQ;IAC5C;IAEA,MAAMe,uBAAuBC,kBAAkB;AAC7C,YAAMhB,SAAU,KAAK,8BACnB,MAAMgB,iBAAiBC,iBAAiB,KAAK,OAAO;AACtD,WAAK,uBAAuBjB,MAAM;AAClC,WAAK,SAASvB,OAAOuB,QAAQ,KAAK,QAAQ;IAC5C;IAEAkB,aAAaC,OAAM;AACjB,cAAQA,OAAI;QACV,KAAK;AACH,eAAK,UAAUC,2BAA2B;AAC1C,eAAK,WAAW;AAChB,eAAK,uBAAuBxB,OAAO;AACnC,eAAK,wBAAwB;AAC7B;MACJ;IACF;IAEA,MAAMyB,UAAUF,OAAMG,MAAM;AAC1B,cAAQH,OAAI;QACV,KAAK;AACH,cAAIG,MAAM;AACR,iBAAKV,eAAeU,IAAI;UAC1B;AACA;QACF,KAAK;AACH,cAAIA,MAAM;AACR,kBAAM,KAAKlB,WAAWkB,IAAI;UAC5B;AACA;QACF,KAAK;AACH,cAAIA,MAAM;AACR,kBAAM,KAAKP,uBAAuBO,IAAI;UACxC;AACA;QACF,KAAK;AACH,eAAKxB,gBAAgB;AACrB;QACF,KAAK;AACH,cAAIwB,MAAM;AACR,iBAAKhB,WAAWgB,IAAI;UACtB;AACA;MACJ;IACF;IAEA,MAAMC,gBAAgBJ,OAAMG,MAAME,gBAAgB;AAChD,UAAI,CAACF,QAAQH,UAAS,WAAW;AAC/B;MACF;AACA,YAAMX,gBAAgB,KAAK,SAASiB,cAAcD,cAAc;AAChE,UAAI,CAAChB,eAAe;AAClB;MACF;AACA,UAAIW,UAAS,WAAW;AACtB,aAAKb,WAAWgB,MAAMd,aAAa;MACrC;IACF;IAEAkB,0BAA0BC,aAAa;AACrC,UAAI,KAAK,6BAA6B;AACpC,aAAK,4BAA4BC,QAAQD;MAC3C;IACF;IAEA/B,SAAS;AACP,WAAK,SAASA,OAAO;AACrB,WAAK,cAAciC,QAAQ;AAC3B,WAAK,eAAe;IACtB;EACF;AAEA,MAAMC,kBAAN,MAAsB;IACpB,WAAW;IAEX,WAAW;IAEX;IAEA9E,YAAY+E,WAAW;AACrB,WAAK,aAAaA;IACpB;IAEA,UAAU;AACR,YAAMrE,cAAe,KAAK,WAAWC,SAASC,cAAc,KAAK;AACjEF,kBAAYc,YAAY;AACxBd,kBAAYK,aAAa,QAAQ,SAAS;AAE1C,YAAMC,SAAS,KAAK,WAAWE;AAC/B,UAAIF,kBAAkBG,eAAe,CAACH,OAAOI,SAAS;AACpDV,oBAAYW,iBAAiB,eAAeC,eAAe;UACzDN;QACF,CAAC;MACH;AAEA,YAAMO,UAAW,KAAK,WAAWZ,SAASC,cAAc,KAAK;AAC7DW,cAAQC,YAAY;AACpBd,kBAAYe,OAAOF,OAAO;AAE1B,UAAI,KAAK,WAAWyD,kBAAkB,GAAG;AACvC,aAAK,YACH,iBACA,iCACA,uCACA,MAAM;AACJ,eAAK,WAAWC,iBAAiB,iBAAiB;QACpD,CACF;MACF;AAEA,WAAK,YACH,mBACA,oCACA,yCACA,MAAM;AACJ,aAAK,WAAWC,mBAAmB,iBAAiB;MACtD,CACF;AAEA,aAAOxE;IACT;IAEA,cAAcyE,OAAOC,OAAO;AAC1B,UAAIC,QAAQ;AACZ,UAAIC,QAAQ;AACZ,iBAAWC,OAAOJ,OAAO;AACvB,cAAMK,KAAID,IAAIC,IAAID,IAAIE;AACtB,YAAID,KAAIH,OAAO;AACb;QACF;AACA,cAAMxD,KAAI0D,IAAI1D,KAAKuD,QAAQG,IAAIG,QAAQ;AACvC,YAAIF,KAAIH,OAAO;AACbC,kBAAQzD;AACRwD,kBAAQG;AACR;QACF;AACA,YAAIJ,OAAO;AACT,cAAIvD,KAAIyD,OAAO;AACbA,oBAAQzD;UACV;QACF,WAAWA,KAAIyD,OAAO;AACpBA,kBAAQzD;QACV;MACF;AACA,aAAO,CAACuD,QAAQ,IAAIE,QAAQA,OAAOD,KAAK;IAC1C;IAEA1C,KAAKgD,QAAQR,OAAOC,OAAO;AACzB,YAAM,CAACvD,IAAG2D,EAAC,IAAI,KAAK,cAAcL,OAAOC,KAAK;AAC9C,YAAM;QAAExD;MAAM,IAAK,KAAK,aAAa,KAAK,QAAQ;AAClD+D,aAAOlE,OAAO,KAAK,QAAQ;AAC3BG,YAAMG,iBAAiB,GAAG,MAAMF,EAAC;AACjCD,YAAMI,MAAM,QAAQ,MAAMwD,EAAC;IAC7B;IAEA/C,OAAO;AACL,WAAK,SAASG,OAAO;IACvB;IAEA,YAAYgD,aAAaC,QAAQC,aAAaC,cAAc;AAC1D,YAAM/C,SAASrC,SAASC,cAAc,QAAQ;AAC9CoC,aAAOnC,UAAUC,IAAI,SAAS8E,WAAW;AACzC5C,aAAOC,WAAW;AAClBD,aAAOjC,aAAa,gBAAgB8E,MAAM;AAC1C,YAAMG,OAAOrF,SAASC,cAAc,MAAM;AAC1CoC,aAAOvB,OAAOuE,IAAI;AAClBA,WAAKxE,YAAY;AACjBwE,WAAKjF,aAAa,gBAAgB+E,WAAW;AAC7C,YAAM9E,SAAS,KAAK,WAAWE;AAC/B,UAAIF,kBAAkBG,eAAe,CAACH,OAAOI,SAAS;AACpD4B,eAAO3B,iBAAiB,eAAeC,eAAe;UAAEN;QAAO,CAAC;AAChEgC,eAAO3B,iBAAiB,SAAS0E,cAAc;UAAE/E;QAAO,CAAC;MAC3D;AACA,WAAK,SAASS,OAAOuB,MAAM;IAC7B;EACF;ACzUA,WAASiD,WAAWC,KAAKC,SAASC,QAAO;AACvC,eAAWC,SAAQD,QAAO;AACxBD,cAAQG,iBAAiBD,OAAMH,IAAIG,KAAI,EAAEE,KAAKL,GAAG,CAAC;IACpD;EACF;AAMA,MAAMM,kBAAN,MAAMA,iBAAgB;IAKpB,OAAO,aAAaC;IAEpB,OAAO,cAAc;IAGrB,OAAO,iBAAiBA;IAGxB,OAAO,eAAe;IAEtB,OAAOC,0BAA0BC,WAAW;AAE1C,OAACH,iBAAgB,gBAAgB,oBAAII,IAAI,GAAGC,IAAIF,SAAS;IAC3D;IAEA,OAAOG,WAAWC,aAAaJ,WAAW;AACxCH,uBAAgB,eAAeG;AAC/BH,uBAAgB,iBAAiBO;IACnC;IAEA,OAAOC,aAAaC,WAAW;AAC7BT,uBAAgB,iBAAiBS;IACnC;IAEA,OAAOC,gBAAgBP,WAAW;AAChC,aAAOH,iBAAgB,eAAeG;IACxC;IAGA,OAAOQ,wBAAwBR,WAAW;AACxC,UAAIH,iBAAgB,eAAeG,WAAW;AAC5C,eAAO;MACT;AAEAH,uBAAgB,aAAaY,OAAOT,SAAS;AAC7C,aAAO;IACT;IAEA,OAAOU,kBAAkBN,aAAa;AACpC,aAAOP,iBAAgB,iBAAiBO;IAC1C;IAEA,OAAOO,qCAAqCP,aAAa;AACvD,aACEP,iBAAgB,iBAAiB,QACjC,CAACA,iBAAgBa,kBAAkBN,WAAW;IAElD;IAEA,OAAOQ,gBAAgBN,WAAW;AAChC,aAAOT,iBAAgB,mBAAmBS;IAC5C;IAEA,OAAOO,0BAA0B;AAE/B,aAAOhB,iBAAgB,aAAaiB,QAAQ;IAC9C;IAEA,OAAOC,mBAAmB;AACxBlB,uBAAgB,eAAe;IACjC;IAEA,OAAOmB,kBAAkB;AACvBnB,uBAAgB,aAAaC;AAC7BD,uBAAgB,cAAc;IAChC;IAEA,OAAOoB,iBAAiB;AACtBpB,uBAAgB,iBAAiBC;IACnC;EACF;AAKA,MAAMoB,YAAN,MAAgB;IACd,MAAM;IAiBN,IAAIC,KAAK;AACP,aAAO,GAAGC,sBAAsB,GAAG,KAAK,KAAK;IAC/C;EACF;AAUA,MAAMC,eAAN,MAAMA,cAAa;IACjB,UAAUC,QAAQ;IAElB,MAAM;IAEN,SAAS;IAET,WAAWC,sBAAsB;AAM/B,YAAMC,MAAM;AACZ,YAAMC,SAAS,IAAIC,gBAAgB,GAAG,CAAC;AACvC,YAAMC,MAAMF,OAAOG,WAAW,MAAM;QAAEC,oBAAoB;MAAK,CAAC;AAChE,YAAMC,QAAQ,IAAIC,MAAM;AACxBD,YAAME,MAAMR;AACZ,YAAMS,UAAUH,MAAMI,OAAO,EAAEC,KAAK,MAAM;AACxCR,YAAIS,UAAUN,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3C,eAAO,IAAIO,YAAYV,IAAIW,aAAa,GAAG,GAAG,GAAG,CAAC,EAAEC,KAAKC,MAAM,EAAE,CAAC,MAAM;MAC1E,CAAC;AAED,aAAOC,OAAO,MAAM,uBAAuBR,OAAO;IACpD;IAEA,MAAM,KAAKS,KAAKC,SAAS;AACvB,WAAK,WAAW,oBAAIC,IAAI;AACxB,UAAIL,OAAO,KAAK,OAAOM,IAAIH,GAAG;AAC9B,UAAIH,SAAS,MAAM;AAEjB,eAAO;MACT;AACA,UAAIA,MAAMO,QAAQ;AAChBP,aAAKQ,cAAc;AACnB,eAAOR;MACT;AACA,UAAI;AACFA,iBAAS;UACPO,QAAQ;UACR3B,IAAI,SAAS,KAAK,OAAO,IAAI,KAAK,KAAK;UACvC4B,YAAY;UACZC,OAAO;QACT;AACA,YAAIlB;AACJ,YAAI,OAAOa,YAAY,UAAU;AAC/BJ,eAAKU,MAAMN;AACXb,kBAAQ,MAAMoB,UAAUP,SAAS,MAAM;QACzC,WAAWA,mBAAmBQ,MAAM;AAClCrB,kBAAQS,KAAKa,OAAOT;QACtB,WAAWA,mBAAmBU,MAAM;AAClCvB,kBAAQa;QACV;AAEA,YAAIb,MAAMwB,SAAS,iBAAiB;AAGlC,gBAAMC,+BAA+BlC,cAAaE;AAClD,gBAAMiC,aAAa,IAAIC,WAAW;AAClC,gBAAMC,eAAe,IAAI3B,MAAM;AAC/B,gBAAM4B,eAAe,IAAIC,QAAQ,CAACC,UAASC,WAAW;AACpDJ,yBAAaK,SAAS,MAAM;AAC1BxB,mBAAKO,SAASY;AACdnB,mBAAKS,QAAQ;AACba,cAAAA,SAAQ;YACV;AACAL,uBAAWO,SAAS,YAAY;AAC9B,oBAAMd,MAAOV,KAAKyB,SAASR,WAAWS;AAGtCP,2BAAa1B,MAAO,MAAMuB,+BACtB,GAAGN,GAAG,wCACNA;YACN;AACAS,yBAAaQ,UAAUV,WAAWU,UAAUJ;UAC9C,CAAC;AACDN,qBAAWW,cAAcrC,KAAK;AAC9B,gBAAM6B;QACR,OAAO;AACLpB,eAAKO,SAAS,MAAMsB,kBAAkBtC,KAAK;QAC7C;AACAS,aAAKQ,aAAa;MACpB,SAASsB,IAAG;AACVC,aAAKD,EAAC;AACN9B,eAAO;MACT;AACA,WAAK,OAAOgC,IAAI7B,KAAKH,IAAI;AACzB,UAAIA,MAAM;AACR,aAAK,OAAOgC,IAAIhC,KAAKpB,IAAIoB,IAAI;MAC/B;AACA,aAAOA;IACT;IAEA,MAAMiC,YAAYpB,MAAM;AACtB,YAAM;QAAEqB;QAAc/E,MAAAA;QAAMoB;QAAMwC;MAAK,IAAIF;AAC3C,aAAO,KAAK,KAAK,GAAGqB,YAAY,IAAI/E,KAAI,IAAIoB,IAAI,IAAIwC,IAAI,IAAIF,IAAI;IAClE;IAEA,MAAMsB,WAAWzB,KAAK;AACpB,aAAO,KAAK,KAAKA,KAAKA,GAAG;IAC3B;IAEA,MAAM0B,YAAYxD,IAAIyD,aAAa;AACjC,YAAMC,OAAO,MAAMD;AACnB,aAAO,KAAK,KAAKzD,IAAI0D,IAAI;IAC3B;IAEA,MAAMC,UAAU3D,IAAI;AAClB,WAAK,WAAW,oBAAIyB,IAAI;AACxB,YAAML,OAAO,KAAK,OAAOM,IAAI1B,EAAE;AAC/B,UAAI,CAACoB,MAAM;AACT,eAAO;MACT;AACA,UAAIA,KAAKO,QAAQ;AACfP,aAAKQ,cAAc;AACnB,eAAOR;MACT;AAEA,UAAIA,KAAKa,MAAM;AACb,eAAO,KAAKoB,YAAYjC,KAAKa,IAAI;MACnC;AACA,UAAIb,KAAKqC,aAAa;AACpB,cAAM;UAAEA;QAAY,IAAIrC;AACxB,eAAOA,KAAKqC;AACZ,eAAO,KAAKD,YAAYpC,KAAKpB,IAAIyD,WAAW;MAC9C;AACA,aAAO,KAAKF,WAAWnC,KAAKU,GAAG;IACjC;IAEA8B,cAAc5D,IAAIM,QAAQ;AACxB,WAAK,WAAW,oBAAImB,IAAI;AACxB,UAAIL,OAAO,KAAK,OAAOM,IAAI1B,EAAE;AAC7B,UAAIoB,MAAMO,QAAQ;AAChBP,aAAKQ,cAAc;AACnB,eAAOR;MACT;AACA,YAAMyC,YAAY,IAAItD,gBAAgBD,OAAOwD,OAAOxD,OAAOyD,MAAM;AACjE,YAAMvD,MAAMqD,UAAUpD,WAAW,IAAI;AACrCD,UAAIS,UAAUX,QAAQ,GAAG,CAAC;AAC1Bc,aAAO;QACLO,QAAQkC,UAAUG,sBAAsB;QACxChE,IAAI,SAAS,KAAK,OAAO,IAAI,KAAK,KAAK;QACvC4B,YAAY;QACZC,OAAO;MACT;AACA,WAAK,OAAOuB,IAAIpD,IAAIoB,IAAI;AACxB,WAAK,OAAOgC,IAAIhC,KAAKpB,IAAIoB,IAAI;AAC7B,aAAOA;IACT;IAEA6C,UAAUjE,IAAI;AACZ,YAAMoB,OAAO,KAAK,OAAOM,IAAI1B,EAAE;AAC/B,UAAI,CAACoB,MAAMS,OAAO;AAChB,eAAO;MACT;AACA,aAAOT,KAAKyB;IACd;IAEAqB,SAASlE,IAAI;AACX,WAAK,WAAW,oBAAIyB,IAAI;AACxB,YAAML,OAAO,KAAK,OAAOM,IAAI1B,EAAE;AAC/B,UAAI,CAACoB,MAAM;AACT;MACF;AACAA,WAAKQ,cAAc;AACnB,UAAIR,KAAKQ,eAAe,GAAG;AACzB;MACF;AACA,YAAM;QAAED;MAAO,IAAIP;AACnB,UAAI,CAACA,KAAKU,OAAO,CAACV,KAAKa,MAAM;AAE3B,cAAM3B,SAAS,IAAIC,gBAAgBoB,OAAOmC,OAAOnC,OAAOoC,MAAM;AAC9D,cAAMvD,MAAMF,OAAOG,WAAW,gBAAgB;AAC9CD,YAAI2D,wBAAwBxC,MAAM;AAClCP,aAAKqC,cAAcnD,OAAO8D,cAAc;MAC1C;AAEAzC,aAAO0C,QAAQ;AACfjD,WAAKO,SAAS;IAChB;IAMA2C,UAAUtE,IAAI;AACZ,aAAOA,GAAGuE,WAAW,SAAS,KAAK,OAAO,GAAG;IAC/C;EACF;AAQA,MAAMC,iBAAN,MAAqB;IACnB,YAAY,CAAA;IAEZ,UAAU;IAEV;IAEA,YAAY;IAEZC,YAAYC,UAAU,KAAK;AACzB,WAAK,WAAWA;IAClB;IAiBA3F,IAAI;MACF4F;MACAC;MACAC,MAAAA;MACAC;MACA3C,OAAOxD;MACPoG,sBAAsB;MACtBC,WAAW;IACb,GAAG;AACD,UAAIF,UAAU;AACZH,YAAI;MACN;AAEA,UAAI,KAAK,SAAS;AAChB;MACF;AAEA,YAAMM,QAAO;QAAEN;QAAKC;QAAMC,MAAAA;QAAM1C;MAAK;AACrC,UAAI,KAAK,cAAc,IAAI;AACzB,YAAI,KAAK,UAAU+C,SAAS,GAAG;AAG7B,eAAK,UAAUA,SAAS;QAC1B;AACA,aAAK,YAAY;AACjB,aAAK,UAAUC,KAAKF,KAAI;AACxB;MACF;AAEA,UAAIF,uBAAuB,KAAK,UAAU,KAAK,SAAS,EAAE5C,SAASA,MAAM;AAIvE,YAAI6C,UAAU;AACZC,UAAAA,MAAKL,OAAO,KAAK,UAAU,KAAK,SAAS,EAAEA;QAC7C;AACA,aAAK,UAAU,KAAK,SAAS,IAAIK;AACjC;MACF;AAEA,YAAMG,OAAO,KAAK,YAAY;AAC9B,UAAIA,SAAS,KAAK,UAAU;AAC1B,aAAK,UAAUC,OAAO,GAAG,CAAC;MAC5B,OAAO;AACL,aAAK,YAAYD;AACjB,YAAIA,OAAO,KAAK,UAAUF,QAAQ;AAChC,eAAK,UAAUG,OAAOD,IAAI;QAC5B;MACF;AAEA,WAAK,UAAUD,KAAKF,KAAI;IAC1B;IAKAL,OAAO;AACL,UAAI,KAAK,cAAc,IAAI;AAEzB;MACF;AAGA,WAAK,UAAU;AACf,YAAM;QAAEA;QAAMC,MAAAA;MAAK,IAAI,KAAK,UAAU,KAAK,SAAS;AACpDD,WAAK;AACLC,MAAAA,QAAO;AACP,WAAK,UAAU;AAEf,WAAK,aAAa;IACpB;IAKAS,OAAO;AACL,UAAI,KAAK,YAAY,KAAK,UAAUJ,SAAS,GAAG;AAC9C,aAAK,aAAa;AAGlB,aAAK,UAAU;AACf,cAAM;UAAEP;UAAKE,MAAAA;QAAK,IAAI,KAAK,UAAU,KAAK,SAAS;AACnDF,YAAI;AACJE,QAAAA,QAAO;AACP,aAAK,UAAU;MACjB;IACF;IAMAU,qBAAqB;AACnB,aAAO,KAAK,cAAc;IAC5B;IAMAC,qBAAqB;AACnB,aAAO,KAAK,YAAY,KAAK,UAAUN,SAAS;IAClD;IAEAO,UAAUtD,MAAM;AACd,UAAI,KAAK,cAAc,IAAI;AACzB;MACF;AACA,eAASuD,KAAI,KAAK,WAAWA,MAAK,GAAGA,MAAK;AACxC,YAAI,KAAK,UAAUA,EAAC,EAAEvD,SAASA,MAAM;AACnC,eAAK,UAAUkD,OAAOK,KAAI,GAAG,KAAK,YAAYA,EAAC;AAC/C,eAAK,YAAYA;AACjB;QACF;MACF;AACA,WAAK,UAAUR,SAAS;AACxB,WAAK,YAAY;IACnB;IAEAS,UAAU;AACR,WAAK,YAAY;IACnB;EACF;AAMA,MAAMC,kBAAN,MAAsB;IAOpBnB,YAAYoB,YAAW;AACrB,WAAKxE,SAAS,CAAA;AACd,WAAKwE,YAAY,oBAAIpE,IAAI;AACzB,WAAKqE,UAAU,oBAAIhH,IAAI;AAEvB,YAAM;QAAEiH;MAAM,IAAIC,iBAAYC;AAC9B,iBAAW,CAACC,MAAMC,WAAUC,UAAU,CAAC,CAAC,KAAKP,YAAW;AACtD,mBAAWtE,OAAO2E,MAAM;AACtB,gBAAMG,WAAW9E,IAAIgD,WAAW,MAAM;AACtC,cAAIwB,SAASM,UAAU;AACrB,iBAAKR,UAAUzC,IAAI7B,IAAI+E,MAAM,CAAC,GAAG;cAAEH,UAAAA;cAAUC;YAAQ,CAAC;AACtD,iBAAKN,QAAQ/G,IAAIwC,IAAIgF,MAAM,GAAG,EAAEC,GAAG,EAAE,CAAC;UACxC,WAAW,CAACT,SAAS,CAACM,UAAU;AAC9B,iBAAKR,UAAUzC,IAAI7B,KAAK;cAAE4E,UAAAA;cAAUC;YAAQ,CAAC;AAC7C,iBAAKN,QAAQ/G,IAAIwC,IAAIgF,MAAM,GAAG,EAAEC,GAAG,EAAE,CAAC;UACxC;QACF;MACF;IACF;IAQA,WAAWC,QAAO;AAChB,UAAIA,OAAMC,QAAQ;AAChB,aAAKrF,OAAO8D,KAAK,KAAK;MACxB;AACA,UAAIsB,OAAME,SAAS;AACjB,aAAKtF,OAAO8D,KAAK,MAAM;MACzB;AACA,UAAIsB,OAAMG,SAAS;AACjB,aAAKvF,OAAO8D,KAAK,MAAM;MACzB;AACA,UAAIsB,OAAMI,UAAU;AAClB,aAAKxF,OAAO8D,KAAK,OAAO;MAC1B;AACA,WAAK9D,OAAO8D,KAAKsB,OAAMlF,GAAG;AAC1B,YAAMuF,MAAM,KAAKzF,OAAO0F,KAAK,GAAG;AAChC,WAAK1F,OAAO6D,SAAS;AAErB,aAAO4B;IACT;IASAE,KAAKC,OAAMR,QAAO;AAChB,UAAI,CAAC,KAAKX,QAAQoB,IAAIT,OAAMlF,GAAG,GAAG;AAChC;MACF;AACA,YAAM4F,QAAO,KAAKtB,UAAUnE,IAAI,KAAK,WAAW+E,MAAK,CAAC;AACtD,UAAI,CAACU,OAAM;AACT;MACF;AACA,YAAM;QACJhB,UAAAA;QACAC,SAAS;UAAEgB,UAAU;UAAOC,OAAO,CAAA;UAAIC,UAAU;QAAK;MACxD,IAAIH;AAEJ,UAAIG,WAAW,CAACA,QAAQL,OAAMR,MAAK,GAAG;AACpC;MACF;AACAN,MAAAA,UAAS1H,KAAKwI,OAAM,GAAGI,MAAMZ,MAAK,EAAE;AAIpC,UAAI,CAACW,SAAS;AACZG,kBAAUd,MAAK;MACjB;IACF;EACF;AAEA,MAAMe,eAAN,MAAMA,cAAa;IACjB,OAAOC,iBAAiB,oBAAIhG,IAAI,CAC9B,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,GACxB,CAAC,UAAU,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAC5B;IAED,IAAIiG,UAAU;AASZ,YAAMC,UAAS,oBAAIlG,IAAI,CACrB,CAAC,cAAc,IAAI,GACnB,CAAC,UAAU,IAAI,CAAC,CACjB;AACDmG,qBAAeD,OAAM;AACrB,aAAOrG,OAAO,MAAM,WAAWqG,OAAM;IACvC;IAUAE,QAAQC,QAAO;AACb,YAAMC,MAAMC,OAAOF,MAAK;AACxB,UAAI,CAACG,OAAOC,WAAW,yBAAyB,EAAEC,SAAS;AACzD,eAAOJ;MACT;AAEA,iBAAW,CAACxJ,OAAM6J,GAAG,KAAK,KAAKV,SAAS;AACtC,YAAIU,IAAIC,MAAM,CAACC,IAAG5C,OAAM4C,OAAMP,IAAIrC,EAAC,CAAC,GAAG;AACrC,iBAAO8B,cAAaC,eAAe/F,IAAInD,KAAI;QAC7C;MACF;AACA,aAAOwJ;IACT;IASAQ,WAAWhK,OAAM;AACf,YAAMwJ,MAAM,KAAKL,QAAQhG,IAAInD,KAAI;AACjC,UAAI,CAACwJ,KAAK;AACR,eAAOxJ;MACT;AACA,aAAOiK,KAAKC,aAAa,GAAGV,GAAG;IACjC;EACF;AAUA,MAAMW,4BAAN,MAAMA,2BAA0B;IAC9B,mBAAmB,IAAIC,gBAAgB;IAEvC,gBAAgB;IAEhB,0BAA0B;IAE1B,cAAc,oBAAIlH,IAAI;IAEtB,aAAa,oBAAIA,IAAI;IAErB,kBAAkB;IAElB,qBAAqB;IAErB,8BAA8B;IAE9B,kBAAkB,IAAI+C,eAAe;IAErC,kBAAkB;IAElB,eAAe;IAEf,yBAAyB;IAEzB,oBAAoB;IAEpB,gCAAgC,oBAAI1F,IAAI;IAExC,mBAAmB;IAEnB,eAAe;IAEf,oBAAoB,oBAAIA,IAAI;IAE5B8J,iBAAiB;IAEjB,iCAAiC;IAEjC,yBAAyB;IAEzB,mCAAmC;IAEnC,iBAAiB;IAEjB,+BAA+B;IAE/B,kBAAkB;IAElB,mBAAmB;IAEnB,wBAAwB;IAExB,mBAAmB;IAEnB,aAAa,IAAI7I,UAAU;IAE3B,aAAa;IAEb,iBAAiB;IAEjB,aAAa;IAEb,qBAAqB;IAErB,qBAAqB;IAErB,4BAA4B;IAE5B,mBAAmB;IAEnB,aAAa;IAEb,QAAQ8I,qBAAqBC;IAE7B,mBAAmB,oBAAIhK,IAAI;IAE3B,oBAAoB;IAEpB,oBAAoB;IAEpB,cAAc;IAEd,iBAAiB;IAEjB,eAAe;IAEf,kBAAkB;MAChBiK,WAAW;MACXC,SAAS;MACTzD,oBAAoB;MACpBC,oBAAoB;MACpByD,mBAAmB;MACnBC,iBAAiB;IACnB;IAEA,eAAe,CAAC,GAAG,CAAC;IAEpB,wBAAwB;IAExB,aAAa;IAEb,UAAU;IAEV,eAAe;IAEf,wBAAwB;IAExB,OAAOC,kBAAkB;IAEzB,OAAOC,gBAAgB;IAEvB,WAAWC,mBAAmB;AAC5B,YAAMC,QAAQZ,2BAA0Ba;AAMxC,YAAMC,eAAevC,CAAAA,UACnBA,MAAK,WAAWwC,SAASC,SAASC,aAAa,KAC/CD,SAASC,cAAcC,YAAY,YACnC3C,MAAK4C,sBAAsB;AAE7B,YAAMC,mBAAmBA,CAACC,OAAO;QAAEC,QAAQC;MAAG,MAAM;AAClD,YAAIA,cAAcC,kBAAkB;AAClC,gBAAM;YAAE/H;UAAK,IAAI8H;AACjB,iBAAO9H,SAAS,UAAUA,SAAS;QACrC;AACA,eAAO;MACT;AAEA,YAAMgI,QAAQ,KAAKhB;AACnB,YAAMiB,MAAM,KAAKhB;AAEjB,aAAO9H,OACL,MACA,oBACA,IAAIsE,gBAAgB,CAClB,CACE,CAAC,UAAU,YAAY,GACvB0D,MAAMe,WACN;QAAE/C,SAASwC;MAAiB,CAAC,GAE/B,CAAC,CAAC,UAAU,YAAY,GAAGR,MAAM1E,MAAM;QAAE0C,SAASwC;MAAiB,CAAC,GACpE,CAGE,CACE,UACA,gBACA,oBACA,gBACA,kBAAkB,GAEpBR,MAAMhE,MACN;QAAEgC,SAASwC;MAAiB,CAAC,GAE/B,CACE,CACE,aACA,iBACA,kBACA,mBACA,iBACA,qBACA,sBACA,UACA,eACA,gBACA,YAAY,GAEdR,MAAMhK,QACN;QAAEgI,SAASwC;MAAiB,CAAC,GAE/B,CACE,CAAC,SAAS,WAAW,GACrBR,MAAMgB,0BACN;QAIEhD,SAASA,CAACL,OAAM;UAAE+C,QAAQC;QAAG,MAC3B,EAAEA,cAAcM,sBAChBtD,MAAK,WAAWwC,SAASQ,EAAE,KAC3B,CAAChD,MAAKuD;MACV,CAAC,GAEH,CACE,CAAC,KAAK,OAAO,GACblB,MAAMgB,0BACN;QAIEhD,SAASA,CAACL,OAAM;UAAE+C,QAAQC;QAAG,MAC3B,EAAEA,cAAcM,sBAChBtD,MAAK,WAAWwC,SAASC,SAASC,aAAa;MACnD,CAAC,GAEH,CAAC,CAAC,UAAU,YAAY,GAAGL,MAAMmB,WAAW,GAC5C,CACE,CAAC,aAAa,eAAe,GAC7BnB,MAAMoB,0BACN;QAAErD,MAAM,CAAC,CAAC8C,OAAO,CAAC;QAAG7C,SAASkC;MAAa,CAAC,GAE9C,CACE,CAAC,kBAAkB,qBAAqB,GACxCF,MAAMoB,0BACN;QAAErD,MAAM,CAAC,CAAC+C,KAAK,CAAC;QAAG9C,SAASkC;MAAa,CAAC,GAE5C,CACE,CAAC,cAAc,gBAAgB,GAC/BF,MAAMoB,0BACN;QAAErD,MAAM,CAAC8C,OAAO,CAAC;QAAG7C,SAASkC;MAAa,CAAC,GAE7C,CACE,CAAC,mBAAmB,sBAAsB,GAC1CF,MAAMoB,0BACN;QAAErD,MAAM,CAAC+C,KAAK,CAAC;QAAG9C,SAASkC;MAAa,CAAC,GAE3C,CACE,CAAC,WAAW,aAAa,GACzBF,MAAMoB,0BACN;QAAErD,MAAM,CAAC,GAAG,CAAC8C,KAAK;QAAG7C,SAASkC;MAAa,CAAC,GAE9C,CACE,CAAC,gBAAgB,mBAAmB,GACpCF,MAAMoB,0BACN;QAAErD,MAAM,CAAC,GAAG,CAAC+C,GAAG;QAAG9C,SAASkC;MAAa,CAAC,GAE5C,CACE,CAAC,aAAa,eAAe,GAC7BF,MAAMoB,0BACN;QAAErD,MAAM,CAAC,GAAG8C,KAAK;QAAG7C,SAASkC;MAAa,CAAC,GAE7C,CACE,CAAC,kBAAkB,qBAAqB,GACxCF,MAAMoB,0BACN;QAAErD,MAAM,CAAC,GAAG+C,GAAG;QAAG9C,SAASkC;MAAa,CAAC,CAC1C,CACF,CACH;IACF;IAEA/E,YACEkG,WACAC,QACAC,aACAC,gBACAC,gBACAC,kBACAC,UACAC,aACAC,YACAC,iBACAC,+BACAC,uBACAC,iCACAC,WACAC,eACAC,qBACA;AACA,YAAMC,SAAU,KAAKC,UAAU,KAAK,iBAAiBD;AACrD,WAAK,aAAahB;AAClB,WAAK,UAAUC;AACf,WAAK,eAAeC;AACpB,WAAK,kBAAkBC;AACvB,WAAK,kBAAkBC;AACvB,WAAK,oBAAoBC;AACzB,WAAK,eAAeE;AACpB,WAAKW,YAAYZ;AACjBA,eAASa,IAAI,iBAAiB,KAAKC,gBAAgBtN,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AACzEV,eAASa,IAAI,gBAAgB,KAAKE,eAAevN,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AACvEV,eAASa,IAAI,iBAAiB,KAAKG,gBAAgBxN,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AACzEV,eAASa,IAAI,oBAAoB,KAAKI,mBAAmBzN,KAAK,IAAI,GAAG;QACnEkN;MACF,CAAC;AACDV,eAASa,IAAI,iBAAiB,KAAKK,gBAAgB1N,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AACzEV,eAASa,IACP,gCACAM,SAAO,KAAKC,aAAaD,IAAIjK,MAAMiK,IAAIE,KAAK,GAC5C;QAAEX;MAAO,CACX;AACA1D,aAAOzJ,iBACL,eACA,MAAM;AACJ,aAAK,iBAAiB;MACxB,GACA;QAAE+N,SAAS;QAAMZ;MAAO,CAC1B;AACA1D,aAAOzJ,iBACL,aACA,MAAM;AACJ,aAAK,iBAAiB;MACxB,GACA;QAAE+N,SAAS;QAAMZ;MAAO,CAC1B;AACA,WAAK,sBAAsB;AAC3B,WAAK,yBAAyB;AAC9B,WAAK,oBAAoB;AACzB,WAAK,qBAAqBT,YAAYsB;AACtC,WAAK,iBAAiBtB,YAAYuB;AAClC,WAAK,cAActB;AACnB,WAAK,mBAAmBC,mBAAmB;AAC3C,WAAK,iCAAiCC;AACtC,WAAK,yBAAyBC;AAC9B,WAAK,mCAAmCC;AACxC,WAAK,aAAaC,aAAa;AAC/B,WAAKkB,iBAAiB;QACpBC,WAAWC,cAAcC;QACzBC,UAAU;MACZ;AACA,WAAKC,iBAAiB;AACtB,WAAKnE,iBAAiB6C,iBAAiB;AACvC,WAAKuB,uBAAuBtB,wBAAwB;AACpDX,sBAAgBkC,oBAAoB,IAAI;IAc1C;IAEAtH,UAAU;AACR,WAAK,uBAAuBjD,QAAQ;AACpC,WAAK,wBAAwB;AAE7B,WAAK,kBAAkBwK,MAAM;AAC7B,WAAK,mBAAmB;AACxB,WAAKtB,UAAU;AAEf,iBAAWuB,SAAS,KAAK,WAAWC,OAAO,GAAG;AAC5CD,cAAMxH,QAAQ;MAChB;AACA,WAAK,WAAW0H,MAAM;AACtB,WAAK,YAAYA,MAAM;AACvB,WAAK,kBAAkBA,MAAM;AAC7B,WAAK,kBAAkBA,MAAM;AAC7B,WAAK,gBAAgB;AACrB,WAAK,iBAAiBA,MAAM;AAC5B,WAAK,gBAAgB1H,QAAQ;AAC7B,WAAK,iBAAiBA,QAAQ;AAC9B,WAAK,iBAAiBA,QAAQ;AAC9B,WAAK,mBAAmBA,QAAQ;AAChC,WAAK,kBAAkB2H,KAAK;AAC5B,WAAK,mBAAmB;AACxB,WAAK,2BAA2B3H,QAAQ;AACxC,WAAK,4BAA4B;AACjC,WAAK,0BAA0B;AAC/B,UAAI,KAAK,8BAA8B;AACrC4H,qBAAa,KAAK,4BAA4B;AAC9C,aAAK,+BAA+B;MACtC;AACA,UAAI,KAAK,uBAAuB;AAC9BA,qBAAa,KAAK,qBAAqB;AACvC,aAAK,wBAAwB;MAC/B;AACA,WAAK3E,gBAAgBjD,QAAQ;AAC7B,WAAK,eAAe;IACtB;IAEA6H,eAAeC,IAAI;AACjB,aAAOC,YAAYC,IAAI,CAAC,KAAK/B,SAAS6B,GAAG9B,MAAM,CAAC;IAClD;IAEA,IAAIH,YAAY;AACd,aAAO,KAAK;IACd;IAEA,IAAIoC,oBAAoB;AACtB,aAAO,KAAK;IACd;IAEA,IAAIC,+BAA+B;AACjC,aAAO,KAAK;IACd;IAEA,IAAIC,YAAY;AACd,aAAOxM,OACL,MACA,aACA,KAAK,cACD,KAAK,eAAeyM,aAClB,KAAK,YAAYC,YACjB,KAAK,YAAYC,UACnB,IACA,MACN;IACF;IAEA,IAAIC,YAAY;AACd,aAAO5M,OACL,MACA,aACA6M,iBAAiB,KAAK,UAAU,EAAED,SACpC;IACF;IAEA,IAAIE,mBAAmB;AACrB,aAAO9M,OACL,MACA,oBACA,KAAK,mBACD,IAAIG,IACF,KAAK,iBAAiB8E,MAAM,GAAG,EAAE8H,IAAIC,UAAQ;AAC3CA,eAAOA,KAAK/H,MAAM,GAAG,EAAE8H,IAAI/F,CAAAA,OAAKA,GAAEiG,KAAK,CAAC;AACxCD,aAAK,CAAC,IAAIA,KAAK,CAAC,EAAEE,YAAY;AAC9B,eAAOF;MACT,CAAC,CACH,IACA,IACN;IACF;IAEA,IAAIlD,kBAAkB;AACpB,YAAM;QAAEgD;MAAiB,IAAI;AAC7B,UAAI,CAACA,kBAAkB;AACrB,eAAO9M,OAAO,MAAM,mBAAmB,IAAI;MAC7C;AACA,YAAM+M,OAAM,oBAAI5M,IAAI;AACpB,YAAMgN,SAAS,CAAC,CAAC,KAAK;AACtB,iBAAW,CAAClQ,OAAMuJ,MAAK,KAAKsG,kBAAkB;AAC5C,cAAMM,eAAenQ,MAAKoQ,SAAS,MAAM;AACzC,YAAIF,UAAUC,cAAc;AAC1BL,UAAAA,KAAIjL,IAAI7E,MAAKqQ,QAAQ,QAAQ,EAAE,GAAG9G,MAAK;AACvC;QACF;AACA,YAAI,CAAC2G,UAAU,CAACC,cAAc;AAC5BL,UAAAA,KAAIjL,IAAI7E,OAAMuJ,MAAK;QACrB;MACF;AACA,aAAOxG,OAAO,MAAM,mBAAmB+M,IAAG;IAC5C;IAEA,IAAIQ,sBAAsB;AACxB,aAAOvN,OACL,MACA,uBACA,KAAK8J,kBACD,IAAI3J,IAAIqN,MAAMC,KAAK,KAAK3D,iBAAiBlI,CAAAA,OAAKA,GAAE8L,QAAQ,CAAC,CAAC,IAC1D,IACN;IACF;IAEAC,eAAenH,QAAO;AACpB,UAAI,CAAC,KAAKsG,kBAAkB;AAC1B,eAAOtG;MACT;AACA,YAAMoH,YAAY,KAAKL,oBAAoBnN,IAAIoG,MAAK;AACpD,aAAO,KAAKsG,iBAAiB1M,IAAIwN,SAAS,KAAKpH;IACjD;IAEAqH,mBAAmBrH,QAAO;AACxB,aAAO,KAAK+G,oBAAoBnN,IAAIoG,MAAK,KAAKA;IAChD;IAMAsH,yBAAyBjC,OAAO;AAC9B,UAAIA,OAAO;AACT,aAAK1C,YAAY;AACjB,aAAK4E,kBAAkB,IAAI;MAC7B,OAAO;AACL,aAAKA,kBAAkB,KAAK;MAC9B;AACA,WAAK,yBAAyBlC;IAChC;IAEAmC,4BAA4BC,aAAa;AACvC,WAAK,4BAA4BA;IACnC;IAEAC,YAAYC,QAAQC,YAAY,OAAO;AACrC,WAAK,iBAAiBF,YAAY,MAAMC,QAAQC,SAAS;IAC3D;IAEAC,oBAAoB;AAClB,aAAO,CAAC,CAAC,KAAK;IAChB;IAEAC,YAAYH,QAAQI,MAAMC,MAAM1J,SAAS;AACvC,WAAK,iBAAiB2J,WAAW,MAAMN,QAAQI,MAAMC,MAAM1J,OAAO;IACpE;IAEA4J,cAAcC,WAAWC,MAAK;AAC5B,YAAM/C,QAAQ,KAAK,WAAWzL,IAAIuO,SAAS;AAC3C,YAAMR,SAAStC,OAAOgD,eAAeD,IAAG;AACxCT,cAAQW,cAA+B,MAAuB,IAAI;IACpE;IAEAC,cAAcZ,QAAQ;AACpB,WAAK,iBAAiBY,cAAcZ,OAAOa,QAAQ,CAAC;IACtD;IAEAC,iBAAiBd,QAAQ;AACvB,WAAK,iBAAiBc,iBAAiBd,MAAM;IAC/C;IAEAe,cAAcf,QAAQ;AACpB,WAAK,iBAAiBgB,eAAe,CAAChB,OAAOS,GAAG,CAAC;IACnD;IAEAE,cAAcX,QAAQiB,YAAYC,aAAaC,QAAW;AACxD,WAAK,iBAAiBC,mBAAmBpB,QAAQiB,YAAYC,UAAU;IACzE;IAEAG,iBAAiBhJ,QAAOiJ,SAAS;AAC/B,aACGjJ,UAAS,KAAK,iBAAiBgJ,iBAAiBhJ,QAAOiJ,OAAO,KAAM;IAEzE;IAEAC,0BAA0B;AACxB,aAAO,KAAK,iBAAiBC,iBAAiB;IAChD;IAEA,MAAMC,uBAAuBC,YAAY;AACvC,UAAI,KAAK,WAAWjK,IAAIiK,aAAa,CAAC,GAAG;AACvC;MACF;AACA,YAAM;QAAEzO,SAAAA;QAAS5B;MAAQ,IAAI2B,QAAQ2O,cAAc;AACnD,YAAMC,oBAAoBjF,SAAO;AAC/B,YAAIA,IAAI+E,eAAeA,YAAY;AACjC,eAAKtF,UAAUyF,KAAK,mBAAmBD,iBAAiB;AACxD3O,UAAAA,SAAQ;QACV;MACF;AACA,WAAKmJ,UAAU0F,GAAG,mBAAmBF,iBAAiB;AACtD,YAAMvQ;IACR;IAEA0Q,aAAa/B,QAAQ;AACnB,WAAK,mBAAmB+B,aAAa;QAAEC,WAAW;QAAMhC;MAAO,CAAC;IAClE;IAEA,IAAIzE,mBAAmB;AACrB,aAAO,KAAK;IACd;IAEA0G,aAAaC,MAAMxL,WAAU;AAE3B,WAAK0F,UAAU0F,GAAG,+BAA+BpL,WAAU;QACzDyL,MAAM;QACNjG,QAAQ,KAAKC;MACf,CAAC;AACD,WAAKC,UAAUgG,SAAS,0BAA0B;QAChDC,QAAQ;QACRH;MACF,CAAC;IACH;IAEAI,cAAcxT,OAAM+N,OAAO;AACzB,WAAKT,UAAUgG,SAAS,iBAAiB;QACvCC,QAAQ;QACRvT,MAAAA;QACA+N;MACF,CAAC;IACH;IAEAH,gBAAgB;MAAE5N,MAAAA;MAAM+N;IAAM,GAAG;AAC/B,cAAQ/N,OAAI;QACV,KAAK;AACH,eAAK,mCAAmC+N;AACxC;MACJ;IACF;IAEAN,eAAe;MAAEmF;IAAW,GAAG;AAC7B,WAAK,oBAAoBA,aAAa;IACxC;IAEAa,qBAAqB;AACnB,WAAK,WAAWC,MAAM;IACxB;IAEAC,WAAW5J,IAAG6J,IAAG;AACf,iBAAWhF,SAAS,KAAK,WAAWC,OAAO,GAAG;AAC5C,cAAM;UACJ9E,GAAG8J;UACHD,GAAGE;UACHvO;UACAC;QACF,IAAIoJ,MAAMmF,IAAIC,sBAAsB;AACpC,YACEjK,MAAK8J,UACL9J,MAAK8J,SAAStO,SACdqO,MAAKE,UACLF,MAAKE,SAAStO,QACd;AACA,iBAAOoJ;QACT;MACF;AACA,aAAO;IACT;IAEAkC,kBAAkB/C,QAAQ,OAAO;AAC/B,WAAK,QAAQkG,UAAUC,OAAO,gBAAgBnG,KAAK;IACrD;IAEAoG,iBAAiBjD,QAAQ;AACvB,WAAK,kBAAkB1Q,IAAI0Q,MAAM;IACnC;IAEAkD,oBAAoBlD,QAAQ;AAC1B,WAAK,kBAAkBnQ,OAAOmQ,MAAM;IACtC;IAEAxD,gBAAgB;MAAE2G;IAAM,GAAG;AACzB,WAAKC,eAAe;AACpB,WAAKnG,eAAeC,YAAYiG,QAAQhG,cAAcC;AACtD,iBAAW4C,UAAU,KAAK,mBAAmB;AAC3CA,eAAOxD,gBAAgB;MACzB;AACA,WAAK,wBAAwBA,gBAAgB;IAC/C;IAEAC,mBAAmB;MAAE4G;IAAc,GAAG;AACpC,WAAKD,eAAe;AACpB,WAAKnG,eAAeI,WAAWgG;IACjC;IAEA,8BAA8B;MAAEC;IAAW,GAAG;AAC5C,aAAOA,WAAWC,aAAaC,KAAKC,YAChCH,WAAWI,gBACXJ;IACN;IAEA,sBAAsBK,WAAW;AAC/B,YAAM;QAAEC;MAAa,IAAI;AACzB,UAAIA,aAAaC,aAAaF,SAAS,GAAG;AACxC,eAAOC;MACT;AACA,iBAAWlG,SAAS,KAAK,WAAWC,OAAO,GAAG;AAC5C,YAAID,MAAMmG,aAAaF,SAAS,GAAG;AACjC,iBAAOjG;QACT;MACF;AACA,aAAO;IACT;IAEAoG,mBAAmBC,mBAAmB,IAAIC,UAAU,OAAO;AACzD,YAAMC,YAAYhK,SAASiK,aAAa;AACxC,UAAI,CAACD,aAAaA,UAAUE,aAAa;AACvC;MACF;AACA,YAAM;QAAEb;QAAYc;QAAcC;QAAWC;MAAY,IAAIL;AAC7D,YAAMM,OAAON,UAAUO,SAAS;AAChC,YAAMC,gBAAgB,KAAK,8BAA8BR,SAAS;AAClE,YAAMN,YAAYc,cAAcC,QAAQ,YAAY;AACpD,YAAMC,QAAQ,KAAKC,kBAAkBjB,SAAS;AAC9C,UAAI,CAACgB,OAAO;AACV;MACF;AACAV,gBAAUY,MAAM;AAEhB,YAAMnH,QAAQ,KAAK,sBAAsBiG,SAAS;AAClD,YAAMmB,aAAa,KAAK,UAAU1L,qBAAqBC;AACvD,YAAM3C,YAAWA,MAAM;AACrB,cAAMsJ,SAAStC,OAAOqH,sBAAsB;UAAElM,GAAG;UAAG6J,GAAG;QAAE,GAAG,OAAO;UACjEqB;UACAY;UACArB;UACAc;UACAC;UACAC;UACAC;QACF,CAAC;AACD,YAAIO,YAAY;AACd,eAAKE,eAAe,aAAa,MAA2B,IAAI;QAClE;AACA,YAAIhB,SAAS;AACXhE,kBAAQG,YAAY;QACtB;MACF;AACA,UAAI2E,YAAY;AACd,aAAK7C,aAAa7I,qBAAqB6L,WAAWvO,SAAQ;AAC1D;MACF;AACAA,MAAAA,UAAS;IACX;IAEAwO,iBAAiBnB,mBAAmB,IAAI;AACtC,WAAKD,mBAAmBC,kBAAgC,IAAI;IAC9D;IAEA,0BAA0B;AACxB,YAAME,YAAYhK,SAASiK,aAAa;AACxC,UAAI,CAACD,aAAaA,UAAUE,aAAa;AACvC;MACF;AACA,YAAMM,gBAAgB,KAAK,8BAA8BR,SAAS;AAClE,YAAMN,YAAYc,cAAcC,QAAQ,YAAY;AACpD,YAAMC,QAAQ,KAAKC,kBAAkBjB,SAAS;AAC9C,UAAI,CAACgB,OAAO;AACV;MACF;AACA,WAAK,qBAAqB,IAAIQ,gBAAgB,IAAI;AAClD,WAAK,iBAAiBC,KAAKzB,WAAWgB,OAAO,KAAKlG,cAAc,KAAK;IACvE;IAUA4G,sCAAsCC,cAAc;AAClD,UAAI,CAAC,KAAK,oBAAoB;AAC5B,eAAO;MACT;AACA,YAAMxT,MAAM,GAAGtB,sBAAsB,GAAG8U,YAAY;AACpD,YAAMC,cAAc,KAAK,mBAAmBC,YAAY1T,GAAG;AAC3D,UAAIyT,aAAa;AACf,aAAK,mBAAmBE,OAAO3T,GAAG;MACpC;AACA,aAAOyT;IACT;IAMAG,uBAAuB1F,QAAQ;AAC7B,UACE,CAACA,OAAOzG,QAAQ,KAChB,KAAK,sBACL,CAAC,KAAK,mBAAmB9B,IAAIuI,OAAOzP,EAAE,GACtC;AACA,aAAK,mBAAmBoV,SAAS3F,OAAOzP,IAAIyP,MAAM;MACpD;IACF;IAEA4F,UAAUC,WAAWjO,OAAO,MAAM;AAChC,YAAMwD,cAAc,KAAK;AACzB,UAAI,CAACA,aAAa;AAChB;MACF;AACAA,kBAAY0K,aAAa,gBAAgBD,SAAS;AAClD,UAAIjO,MAAM;AACRwD,oBAAY0K,aAAa,kBAAkBC,KAAKC,UAAUpO,IAAI,CAAC;MACjE,OAAO;AACLwD,oBAAY6K,gBAAgB,gBAAgB;MAC9C;IACF;IAEA,mBAAmB;AACjB,YAAMhC,YAAYhK,SAASiK,aAAa;AACxC,UAAI,CAACD,aAAaA,UAAUE,aAAa;AACvC,YAAI,KAAK,mBAAmB;AAC1B,eAAK,kBAAkBtG,KAAK;AAC5B,eAAK,oBAAoB;AACzB,eAAK,sBAAsB;YACzBpE,iBAAiB;UACnB,CAAC;QACH;AACA;MACF;AACA,YAAM;QAAE6J;MAAW,IAAIW;AACvB,UAAIX,eAAe,KAAK,mBAAmB;AACzC;MACF;AAEA,YAAMmB,gBAAgB,KAAK,8BAA8BR,SAAS;AAClE,YAAMN,YAAYc,cAAcC,QAAQ,YAAY;AACpD,UAAI,CAACf,WAAW;AACd,YAAI,KAAK,mBAAmB;AAC1B,eAAK,kBAAkB9F,KAAK;AAC5B,eAAK,oBAAoB;AACzB,eAAK,sBAAsB;YACzBpE,iBAAiB;UACnB,CAAC;QACH;AACA;MACF;AAEA,WAAK,kBAAkBoE,KAAK;AAC5B,WAAK,oBAAoByF;AACzB,WAAK,sBAAsB;QACzB7J,iBAAiB;MACnB,CAAC;AAED,UACE,KAAK,UAAUL,qBAAqB6L,aACpC,KAAK,UAAU7L,qBAAqBC,MACpC;AACA;MACF;AAEA,UAAI,KAAK,UAAUD,qBAAqB6L,WAAW;AACjD,aAAKD,eAAe,aAAa,MAA2B,IAAI;MAClE;AAEA,WAAK,wBAAwB,KAAK1H;AAClC,UAAI,CAAC,KAAKA,gBAAgB;AACxB,cAAM4I,cACJ,KAAK,UAAU9M,qBAAqB6L,YAChC,KAAK,sBAAsBtB,SAAS,IACpC;AACNuC,qBAAaC,cAAc;AAE3B,YAAI,KAAK,gBAAgB;AACvB,gBAAMnI,KAAK,IAAI9E,gBAAgB;AAC/B,gBAAMgD,SAAS,KAAK6B,eAAeC,EAAE;AAErC,gBAAMoI,YAAY3S,CAAAA,OAAK;AACrB,gBAAIA,GAAEf,SAAS,eAAee,GAAE4S,WAAW,GAAG;AAE5C;YACF;AACArI,eAAGP,MAAM;AACTyI,yBAAaC,cAAc,IAAI;AAC/B,gBAAI1S,GAAEf,SAAS,aAAa;AAC1B,mBAAK,aAAa,cAAc;YAClC;UACF;AACA8F,iBAAOzJ,iBAAiB,aAAaqX,WAAW;YAAElK;UAAO,CAAC;AAC1D1D,iBAAOzJ,iBAAiB,QAAQqX,WAAW;YAAElK;UAAO,CAAC;QACvD,OAAO;AAILgK,uBAAaC,cAAc,IAAI;AAC/B,eAAK,aAAa,cAAc;QAClC;MACF;IACF;IAEA,aAAapC,mBAAmB,IAAI;AAClC,UAAI,KAAK,UAAU3K,qBAAqB6L,WAAW;AACjD,aAAKnB,mBAAmBC,gBAAgB;MAC1C,WAAW,KAAK,gCAAgC;AAC9C,aAAK,wBAAwB;MAC/B;IACF;IAEA,wBAAwB;AACtB9J,eAASlL,iBACP,mBACA,KAAK,iBAAiBC,KAAK,IAAI,GAC/B;QAAEkN,QAAQ,KAAKC;MAAQ,CACzB;IACF;IAEA,mBAAmB;AACjB,UAAI,KAAK,iBAAiB;AACxB;MACF;AACA,WAAK,kBAAkB,IAAIjD,gBAAgB;AAC3C,YAAMgD,SAAS,KAAK6B,eAAe,KAAK,eAAe;AAEvDvF,aAAOzJ,iBAAiB,SAAS,KAAKyT,MAAMxT,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AAClE1D,aAAOzJ,iBAAiB,QAAQ,KAAKuX,KAAKtX,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;IAClE;IAEA,sBAAsB;AACpB,WAAK,iBAAiBuB,MAAM;AAC5B,WAAK,kBAAkB;IACzB;IAEA6I,OAAO;AACL,WAAKhJ,iBAAiB;AACtB,UAAI,KAAK,uBAAuB;AAC9B,aAAK,wBAAwB;AAC7B,aAAK,aAAa,cAAc;MAClC;AACA,UAAI,CAAC,KAAKiJ,cAAc;AACtB;MACF;AAKA,YAAM;QAAErM;MAAc,IAAID;AAC1B,iBAAW+F,UAAU,KAAK,kBAAkB;AAC1C,YAAIA,OAAO6C,IAAI7I,SAASE,aAAa,GAAG;AACtC,eAAK,qBAAqB,CAAC8F,QAAQ9F,aAAa;AAChD8F,iBAAOwG,sBAAsB;AAC7B;QACF;MACF;IACF;IAEAhE,QAAQ;AACN,UAAI,CAAC,KAAK,oBAAoB;AAC5B;MACF;AACA,YAAM,CAACiE,YAAYC,iBAAiB,IAAI,KAAK;AAC7C,WAAK,qBAAqB;AAC1BA,wBAAkB3X,iBAChB,WACA,MAAM;AACJ0X,mBAAWD,sBAAsB;MACnC,GACA;QAAErE,MAAM;QAAMjG,QAAQ,KAAKC;MAAQ,CACrC;AACAuK,wBAAkBlE,MAAM;IAC1B;IAEA,sBAAsB;AACpB,UAAI,KAAK,oBAAoB;AAC3B;MACF;AACA,WAAK,qBAAqB,IAAItJ,gBAAgB;AAC9C,YAAMgD,SAAS,KAAK6B,eAAe,KAAK,kBAAkB;AAI1DvF,aAAOzJ,iBAAiB,WAAW,KAAK4X,QAAQ3X,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AACtE1D,aAAOzJ,iBAAiB,SAAS,KAAK6X,MAAM5X,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;IACpE;IAEA,yBAAyB;AACvB,WAAK,oBAAoBuB,MAAM;AAC/B,WAAK,qBAAqB;IAC5B;IAEA,yBAAyB;AACvB,UAAI,KAAK,cAAc;AACrB;MACF;AACA,WAAK,eAAe,IAAIvE,gBAAgB;AACxC,YAAMgD,SAAS,KAAK6B,eAAe,KAAK,YAAY;AAEpD9D,eAASlL,iBAAiB,QAAQ,KAAK8X,KAAK7X,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AAClEjC,eAASlL,iBAAiB,OAAO,KAAK+X,IAAI9X,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AAChEjC,eAASlL,iBAAiB,SAAS,KAAKgY,MAAM/X,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;IACtE;IAEA,4BAA4B;AAC1B,WAAK,cAAcuB,MAAM;AACzB,WAAK,eAAe;IACtB;IAEA,2BAA2B;AACzB,YAAMvB,SAAS,KAAKC;AACpBlC,eAASlL,iBAAiB,YAAY,KAAKiY,SAAShY,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;AAC1EjC,eAASlL,iBAAiB,QAAQ,KAAKkY,KAAKjY,KAAK,IAAI,GAAG;QAAEkN;MAAO,CAAC;IACpE;IAEAgL,mBAAmB;AACjB,WAAK,oBAAoB;AACzB,WAAKC,gBAAgB,IAAI;IAC3B;IAEAC,sBAAsB;AACpB,WAAK,uBAAuB;AAC5B,WAAKD,gBAAgB,KAAK;IAC5B;IAEAH,SAAShQ,QAAO;AACd,iBAAW;QAAEtE;MAAK,KAAKsE,OAAMqQ,aAAaC,OAAO;AAC/C,mBAAWC,cAAc,KAAK,cAAc;AAC1C,cAAIA,WAAWC,yBAAyB9U,IAAI,GAAG;AAC7CsE,YAAAA,OAAMqQ,aAAaI,aAAa;AAChCzQ,YAAAA,OAAM0Q,eAAe;AACrB;UACF;QACF;MACF;IACF;IAMAT,KAAKjQ,QAAO;AACV,iBAAW2Q,QAAQ3Q,OAAMqQ,aAAaC,OAAO;AAC3C,mBAAWC,cAAc,KAAK,cAAc;AAC1C,cAAIA,WAAWC,yBAAyBG,KAAKjV,IAAI,GAAG;AAClD6U,uBAAWR,MAAMY,MAAM,KAAK/D,YAAY;AACxC5M,YAAAA,OAAM0Q,eAAe;AACrB;UACF;QACF;MACF;IACF;IAMAb,KAAK7P,QAAO;AACVA,MAAAA,OAAM0Q,eAAe;AAGrB,WAAK,eAAetE,eAAe;AAEnC,UAAI,CAAC,KAAKmD,cAAc;AACtB;MACF;AAEA,YAAMqB,UAAU,CAAA;AAChB,iBAAW5H,UAAU,KAAK,kBAAkB;AAC1C,cAAM6H,aAAa7H,OAAO8H,UAA+B,IAAI;AAC7D,YAAID,YAAY;AACdD,kBAAQlS,KAAKmS,UAAU;QACzB;MACF;AACA,UAAID,QAAQnS,WAAW,GAAG;AACxB;MACF;AAEAuB,MAAAA,OAAM+Q,cAAcC,QAAQ,qBAAqBjC,KAAKC,UAAU4B,OAAO,CAAC;IAC1E;IAMAd,IAAI9P,QAAO;AACT,WAAK6P,KAAK7P,MAAK;AACf,WAAKnH,OAAO;IACd;IAMA,MAAMkX,MAAM/P,QAAO;AACjBA,MAAAA,OAAM0Q,eAAe;AACrB,YAAM;QAAEK;MAAc,IAAI/Q;AAC1B,iBAAW2Q,QAAQI,cAAcT,OAAO;AACtC,mBAAWC,cAAc,KAAK,cAAc;AAC1C,cAAIA,WAAWC,yBAAyBG,KAAKjV,IAAI,GAAG;AAClD6U,uBAAWR,MAAMY,MAAM,KAAK/D,YAAY;AACxC;UACF;QACF;MACF;AAEA,UAAIjS,OAAOoW,cAAclH,QAAQ,mBAAmB;AACpD,UAAI,CAAClP,MAAM;AACT;MACF;AAEA,UAAI;AACFA,eAAOoU,KAAKkC,MAAMtW,IAAI;MACxB,SAASuW,IAAI;AACXxU,aAAK,WAAWwU,GAAGC,OAAO,IAAI;AAC9B;MACF;AAEA,UAAI,CAAC9I,MAAM+I,QAAQzW,IAAI,GAAG;AACxB;MACF;AAEA,WAAKqJ,YAAY;AACjB,YAAM0C,QAAQ,KAAKkG;AAEnB,UAAI;AACF,cAAMyE,aAAa,CAAA;AACnB,mBAAWrI,UAAUrO,MAAM;AACzB,gBAAM2W,qBAAqB,MAAM5K,MAAM6K,YAAYvI,MAAM;AACzD,cAAI,CAACsI,oBAAoB;AACvB;UACF;AACAD,qBAAW3S,KAAK4S,kBAAkB;QACpC;AAEA,cAAMpT,MAAMA,MAAM;AAChB,qBAAW8K,UAAUqI,YAAY;AAC/B,iBAAK,kBAAkBrI,MAAM;UAC/B;AACA,eAAK,eAAeqI,UAAU;QAChC;AACA,cAAMlT,OAAOA,MAAM;AACjB,qBAAW6K,UAAUqI,YAAY;AAC/BrI,mBAAOyF,OAAO;UAChB;QACF;AACA,aAAK+C,YAAY;UAAEtT;UAAKC;UAAME,UAAU;QAAK,CAAC;MAChD,SAAS6S,IAAI;AACXxU,aAAK,WAAWwU,GAAGC,OAAO,IAAI;MAChC;IACF;IAMAxB,QAAQ3P,QAAO;AACb,UAAI,CAAC,KAAKsG,kBAAkBtG,OAAMlF,QAAQ,SAAS;AACjD,aAAKwL,iBAAiB;MACxB;AACA,UACE,KAAK,UAAUlE,qBAAqBC,QACpC,CAAC,KAAKoP,0BACN;AACAxP,mCAA0BW,iBAAiBrC,KAAK,MAAMP,MAAK;MAC7D;IACF;IAMA4P,MAAM5P,QAAO;AACX,UAAI,KAAKsG,kBAAkBtG,OAAMlF,QAAQ,SAAS;AAChD,aAAKwL,iBAAiB;AACtB,YAAI,KAAK,uBAAuB;AAC9B,eAAK,wBAAwB;AAC7B,eAAK,aAAa,cAAc;QAClC;MACF;IACF;IAOAhB,gBAAgB;MAAExN,MAAAA;IAAK,GAAG;AACxB,cAAQA,OAAI;QACV,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACH,eAAKA,KAAI,EAAE;AACX;QACF,KAAK;AACH,eAAKgV,mBAAmB,cAAc;AACtC;QACF,KAAK;AACH,eAAKoB,iBAAiB,cAAc;AACpC;MACJ;IACF;IAOA,sBAAsBwD,SAAS;AAC7B,YAAMC,aAAaC,OAAOC,QAAQH,OAAO,EAAEI,KACzC,CAAC,CAAChX,KAAK+K,KAAK,MAAM,KAAK,gBAAgB/K,GAAG,MAAM+K,KAClD;AAEA,UAAI8L,YAAY;AACd,aAAKvM,UAAUgG,SAAS,iCAAiC;UACvDC,QAAQ;UACRqG,SAASE,OAAOG,OAAO,KAAK,iBAAiBL,OAAO;QACtD,CAAC;AAID,YACE,KAAK,UAAUtP,qBAAqB6L,aACpCyD,QAAQlP,sBAAsB,OAC9B;AACA,eAAK,kBAAkB,CACrB,CAACwP,2BAA2BC,gBAAgB,IAAI,CAAC,CAClD;QACH;MACF;IACF;IAEA,kBAAkBP,SAAS;AACzB,WAAKtM,UAAUgG,SAAS,iCAAiC;QACvDC,QAAQ;QACRqG;MACF,CAAC;IACH;IAQAvB,gBAAgB7N,WAAW;AACzB,UAAIA,WAAW;AACb,aAAK,iBAAiB;AACtB,aAAK,uBAAuB;AAC5B,aAAK,sBAAsB;UACzBA,WAAW,KAAK,UAAUF,qBAAqBC;UAC/CE,SAAS,KAAK,SAAS;UACvBzD,oBAAoB,KAAK,gBAAgBA,mBAAmB;UAC5DC,oBAAoB,KAAK,gBAAgBA,mBAAmB;UAC5DyD,mBAAmB;QACrB,CAAC;MACH,OAAO;AACL,aAAK,oBAAoB;AACzB,aAAK,0BAA0B;AAC/B,aAAK,sBAAsB;UACzBF,WAAW;QACb,CAAC;AACD,aAAKsG,kBAAkB,KAAK;MAC9B;IACF;IAEAsJ,oBAAoBC,QAAO;AACzB,UAAI,KAAK,cAAc;AACrB;MACF;AACA,WAAK,eAAeA;AACpB,iBAAW5B,cAAc,KAAK,cAAc;AAC1C,aAAK,kBAAkBA,WAAW6B,yBAAyB;MAC7D;IACF;IAMAC,QAAQ;AACN,aAAO,KAAK,WAAW9Y;IACzB;IAEA,IAAIqT,eAAe;AACjB,aAAO,KAAK,WAAW3R,IAAI,KAAK,iBAAiB;IACnD;IAEAqX,SAAS9I,WAAW;AAClB,aAAO,KAAK,WAAWvO,IAAIuO,SAAS;IACtC;IAEA,IAAI+I,mBAAmB;AACrB,aAAO,KAAK;IACd;IAMAC,SAAS9L,OAAO;AACd,WAAK,WAAW/J,IAAI+J,MAAM8C,WAAW9C,KAAK;AAC1C,UAAI,KAAK,YAAY;AACnBA,cAAM+L,OAAO;MACf,OAAO;AACL/L,cAAMgM,QAAQ;MAChB;IACF;IAMAC,YAAYjM,OAAO;AACjB,WAAK,WAAW7N,OAAO6N,MAAM8C,SAAS;IACxC;IAeA,MAAMoJ,WACJ1H,MACA2H,SAAS,MACTC,aAAa,OACbC,iBAAiB,OACjBC,sBAAsB,OACtB7J,cAAc,OACd;AACA,UAAI,KAAK,UAAU+B,MAAM;AACvB;MACF;AAEA,UAAI,KAAK,uBAAuB;AAC9B,cAAM,KAAK,sBAAsB7Q;AACjC,YAAI,CAAC,KAAK,uBAAuB;AAE/B;QACF;MACF;AAEA,WAAK,wBAAwB2B,QAAQ2O,cAAc;AACnD,WAAK,wBAAwByB,eAAe;AAE5C,UAAI,KAAK,UAAUhK,qBAAqB6Q,OAAO;AAC7C,aAAK,iBAAiBC,YAAY;MACpC;AACA,WAAK,iBAAiBC,aAAa;AAEnC,WAAK,QAAQjI;AACb,UAAIA,SAAS9I,qBAAqBC,MAAM;AACtC,aAAK8N,gBAAgB,KAAK;AAC1B,aAAK,YAAY;AACjB,mBAAWnH,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9CqC,iBAAOoK,4BAA4B;QACrC;AAEA,aAAKjR,gBAAgB0E,KAAK;AAC1B,aAAK8C,cAA6B,IAAI;AAEtC,aAAK,sBAAsB1N,QAAQ;AACnC;MACF;AAEA,iBAAW+M,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9CqC,eAAOqK,2BAA2B;MACpC;AAEA,UAAInI,SAAS9I,qBAAqBkR,WAAW;AAC3C,cAAM,KAAK,mBAAmBC,eAAe;MAC/C;AAEA,UAAIT,YAAY;AAEd7a,wBAAgBkB,iBAAiB;MACnC;AAEA,WAAKgX,gBAAgB,IAAI;AACzB,YAAM,KAAK,WAAW;AACtB,WAAKnM,YAAY;AACjB,iBAAW0C,SAAS,KAAK,WAAWC,OAAO,GAAG;AAC5CD,cAAMkM,WAAW1H,IAAI;MACvB;AAEA,UAAIA,SAAS9I,qBAAqB6Q,OAAO;AACvC,aAAK,4BACH,MAAM,KAAK,aAAaO,qBACtB,IAAInb,IAAI,KAAK,aAAauP,IAAI6L,iBAAeA,YAAYC,WAAW,CAAC,CACvE;AACF,cAAMC,aAAa,oBAAItb,IAAI;AAC3B,cAAMub,cAAc,CAAA;AACpB,mBAAW5K,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9C,gBAAM;YAAEkN;YAAqBC;YAAYC;UAAQ,IAAI/K;AACrD,cAAI6K,qBAAqB;AACvBF,uBAAWrb,IAAIub,mBAAmB;UACpC;AACA,cAAIC,cAAc,CAACC,SAAS;AAC1BH,wBAAYlV,KAAKsK,OAAOa,QAAQ,CAAC;UACnC;QACF;AACA,mBAAWmK,cAAc,KAAK,yBAAyB;AACrD,gBAAM;YAAEza;YAAI0a;YAAUC;UAAY,IAAIF;AACtC,cACEC,YACAC,aAAa7T,OACb,CAACsT,WAAWlT,IAAIlH,EAAE,KAClB,CAAC,KAAK,8BAA8BkH,IAAIlH,EAAE,GAC1C;AAGAqa,wBAAYlV,KAAKsV,UAAU;UAC7B;QACF;AACA,aAAK,iBAAiBG,YAAYP,WAAW;MAC/C;AAEA,UAAI,CAACf,QAAQ;AACX,YAAIE,gBAAgB;AAClB,eAAKlP,yBAAyB;QAChC;AAEA,aAAK,sBAAsB5H,QAAQ;AACnC;MACF;AAEA,iBAAW+M,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9C,YAAIqC,OAAOS,QAAQoJ,QAAQ;AACzB,eAAKuB,YAAYpL,MAAM;AACvB,cAAIG,aAAa;AACfH,mBAAOG,YAAY;UACrB,WAAW6J,qBAAqB;AAC9BhK,mBAAOqL,gBAAgB;UACzB,OAAO;AACLrL,mBAAOwC,MAAM;UACf;QACF,OAAO;AACLxC,iBAAOsL,SAAS;QAClB;MACF;AAEA,WAAK,sBAAsBrY,QAAQ;IACrC;IAEA4H,2BAA2B;AACzB,UAAI,KAAK+I,aAAa2H,wBAAwB,GAAG;AAC/C,aAAK3H,aAAa4H,aAAa;MACjC;IACF;IAQAC,cAAc9U,SAAS;AACrB,UAAIA,QAAQuL,SAAS,KAAK,OAAO;AAC/B;MACF;AACA,WAAK9F,UAAUgG,SAAS,8BAA8B;QACpDC,QAAQ;QACR,GAAG1L;MACL,CAAC;IACH;IAOAiG,aAAalK,MAAMmK,OAAO;AACxB,UAAI,CAAC,KAAK,cAAc;AACtB;MACF;AAEA,cAAQnK,MAAI;QACV,KAAKsW,2BAA2B0C;AAC9B,eAAK9H,aAAa4H,aAAa3O,KAAK;AACpC;QACF,KAAKmM,2BAA2B2C;AAC9B,eAAKvP,UAAUgG,SAAS,mBAAmB;YACzCC,QAAQ;YACRqG,SAAS;cACPhW,MAAM;cACNf,MAAM;gBACJe,MAAM;gBACNkZ,QAAQ;cACV;YACF;UACF,CAAC;AACD,WAAC,KAAK,mBAAmB,oBAAI5Z,IAAI,GAAG2B,IAAIjB,MAAMmK,KAAK;AACnD,eAAKmI,eAAe,aAAanI,KAAK;AACtC;MACJ;AAEA,UAAI,KAAK0J,cAAc;AACrB,mBAAWvG,UAAU,KAAK,kBAAkB;AAC1CA,iBAAOpD,aAAalK,MAAMmK,KAAK;QACjC;MACF,OAAO;AACL,mBAAW0K,cAAc,KAAK,cAAc;AAC1CA,qBAAWsE,oBAAoBnZ,MAAMmK,KAAK;QAC5C;MACF;IACF;IAEAmI,eAAetS,MAAMoZ,SAASC,eAAe,OAAO;AAClD,iBAAW/L,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9C,YAAIqC,OAAOuH,eAAe7U,MAAM;AAC9BsN,iBAAOoF,KAAK0G,OAAO;QACrB;MACF;AACA,YAAME,QACJ,KAAK,gBAAgB/Z,IAAI+W,2BAA2B2C,kBAAkB,KACtE;AACF,UAAIK,UAAUF,SAAS;AACrB,aAAK,kBAAkB,CACrB,CAAC9C,2BAA2B2C,oBAAoBG,OAAO,CAAC,CACzD;MACH;IACF;IAEAG,cAAcC,WAAW,OAAO;AAC9B,UAAI,KAAK,eAAeA,UAAU;AAChC;MACF;AACA,WAAK,aAAaA;AAClB,iBAAWxO,SAAS,KAAK,WAAWC,OAAO,GAAG;AAC5C,YAAIuO,UAAU;AACZxO,gBAAMyO,aAAa;QACrB,OAAO;AACLzO,gBAAM0O,YAAY;QACpB;AACA1O,cAAMmF,IAAIE,UAAUC,OAAO,WAAWkJ,QAAQ;MAChD;IACF;IAKA,MAAM,aAAa;AACjB,UAAI,CAAC,KAAK,YAAY;AACpB,aAAK,aAAa;AAClB,cAAMG,WAAW,CAAA;AACjB,mBAAW3O,SAAS,KAAK,WAAWC,OAAO,GAAG;AAC5C0O,mBAAS3W,KAAKgI,MAAM+L,OAAO,CAAC;QAC9B;AACA,cAAMzW,QAAQsZ,IAAID,QAAQ;AAC1B,mBAAWrM,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9CqC,iBAAOyJ,OAAO;QAChB;MACF;IACF;IAKA,cAAc;AACZ,WAAKzO,YAAY;AACjB,UAAI,KAAK,YAAY;AACnB,aAAK,aAAa;AAClB,mBAAW0C,SAAS,KAAK,WAAWC,OAAO,GAAG;AAC5CD,gBAAMgM,QAAQ;QAChB;AACA,mBAAW1J,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9CqC,iBAAO0J,QAAQ;QACjB;MACF;IACF;IAOA,CAAC6C,WAAW/L,WAAW;AACrB,iBAAWR,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9C,YAAIqC,OAAOQ,cAAcA,WAAW;AAClC,gBAAMR;QACR;MACF;IACF;IAOAwM,UAAUjc,IAAI;AACZ,aAAO,KAAK,YAAY0B,IAAI1B,EAAE;IAChC;IAMAkc,UAAUzM,QAAQ;AAChB,WAAK,YAAYrM,IAAIqM,OAAOzP,IAAIyP,MAAM;IACxC;IAMA0M,aAAa1M,QAAQ;AACnB,UAAIA,OAAO6C,IAAI7I,SAASC,SAASC,aAAa,GAAG;AAC/C,YAAI,KAAK,8BAA8B;AACrC4D,uBAAa,KAAK,4BAA4B;QAChD;AACA,aAAK,+BAA+B6O,WAAW,MAAM;AAGnD,eAAKpK,mBAAmB;AACxB,eAAK,+BAA+B;QACtC,GAAG,CAAC;MACN;AACA,WAAK,YAAY1S,OAAOmQ,OAAOzP,EAAE;AACjC,UAAIyP,OAAO6K,qBAAqB;AAC9B,aAAK,kBAAkBhb,OAAOmQ,OAAO6K,mBAAmB;MAC1D;AACA,WAAKS,SAAStL,MAAM;AACpB,UACE,CAACA,OAAO6K,uBACR,CAAC,KAAK,8BAA8BpT,IAAIuI,OAAO6K,mBAAmB,GAClE;AACA,aAAK,oBAAoBpF,OAAOzF,OAAOzP,EAAE;MAC3C;IACF;IAMAqc,4BAA4B5M,QAAQ;AAClC,WAAK,8BAA8B1Q,IAAI0Q,OAAO6K,mBAAmB;AACjE,WAAKgC,6BAA6B7M,MAAM;AACxCA,aAAO+K,UAAU;IACnB;IAOA+B,2BAA2BjC,qBAAqB;AAC9C,aAAO,KAAK,8BAA8BpT,IAAIoT,mBAAmB;IACnE;IAMAkC,+BAA+B/M,QAAQ;AACrC,WAAK,8BAA8BnQ,OAAOmQ,OAAO6K,mBAAmB;AACpE,WAAKmC,gCAAgChN,MAAM;AAC3CA,aAAO+K,UAAU;IACnB;IAMA,kBAAkB/K,QAAQ;AACxB,YAAMtC,QAAQ,KAAK,WAAWzL,IAAI+N,OAAOQ,SAAS;AAClD,UAAI9C,OAAO;AACTA,cAAMuP,aAAajN,MAAM;MAC3B,OAAO;AACL,aAAKyM,UAAUzM,MAAM;AACrB,aAAK0F,uBAAuB1F,MAAM;MACpC;IACF;IAMAkN,gBAAgBlN,QAAQ;AACtB,UAAI,KAAK,kBAAkBA,QAAQ;AACjC;MACF;AAEA,WAAK,gBAAgBA;AACrB,UAAIA,QAAQ;AACV,aAAK,kBAAkBA,OAAOmN,kBAAkB;MAClD;IACF;IAEA,IAAI,sBAAsB;AACxB,UAAIC,KAAK;AACT,WAAKA,MAAM,KAAK,kBAAkB;MAElC;AACA,aAAOA;IACT;IAMAC,SAASrN,QAAQ;AACf,UAAI,KAAK,wBAAwBA,QAAQ;AACvC,aAAK,kBAAkBA,OAAOmN,kBAAkB;MAClD;IACF;IAEAG,6BAA6B/F,YAAY;AACvC,WAAK,kBAAkBA,WAAW6B,yBAAyB;IAC7D;IAMAmE,eAAevN,QAAQ;AACrB,UAAI,KAAK,iBAAiBvI,IAAIuI,MAAM,GAAG;AACrC,aAAK,iBAAiBnQ,OAAOmQ,MAAM;AACnCA,eAAOsL,SAAS;AAChB,aAAK,sBAAsB;UACzB9R,mBAAmB,KAAK+M;QAC1B,CAAC;AACD;MACF;AACA,WAAK,iBAAiBjX,IAAI0Q,MAAM;AAChCA,aAAOwN,OAAO;AACd,WAAK,kBAAkBxN,OAAOmN,kBAAkB;AAChD,WAAK,sBAAsB;QACzB3T,mBAAmB;MACrB,CAAC;IACH;IAMA4R,YAAYpL,QAAQ;AAClB,WAAKyL,cAAc;QACjBvJ,MAAMlC,OAAOkC;QACb2H,QAAQ7J,OAAOS;MACjB,CAAC;AAED,WAAK,wBAAwB2C,eAAe;AAC5C,iBAAWgK,MAAM,KAAK,kBAAkB;AACtC,YAAIA,OAAOpN,QAAQ;AACjBoN,aAAG9B,SAAS;QACd;MACF;AACA,WAAK,iBAAiB1N,MAAM;AAE5B,WAAK,iBAAiBtO,IAAI0Q,MAAM;AAChCA,aAAOwN,OAAO;AACd,WAAK,kBAAkBxN,OAAOmN,kBAAkB;AAChD,WAAK,sBAAsB;QACzB3T,mBAAmB;MACrB,CAAC;IACH;IAMAyH,WAAWjB,QAAQ;AACjB,aAAO,KAAK,iBAAiBvI,IAAIuI,MAAM;IACzC;IAEA,IAAIyN,sBAAsB;AACxB,aAAO,KAAK,iBAAiB9P,OAAO,EAAEhI,KAAK,EAAEkH;IAC/C;IAMAyO,SAAStL,QAAQ;AACfA,aAAOsL,SAAS;AAChB,WAAK,iBAAiBzb,OAAOmQ,MAAM;AACnC,WAAK,sBAAsB;QACzBxG,mBAAmB,KAAK+M;MAC1B,CAAC;IACH;IAEA,IAAIA,eAAe;AACjB,aAAO,KAAK,iBAAiBrW,SAAS;IACxC;IAEA,IAAI6K,iBAAiB;AACnB,aACE,KAAK,iBAAiB7K,SAAS,KAC/B,KAAKud,oBAAoB1S;IAE7B;IAKA5F,OAAO;AACL,WAAK,gBAAgBA,KAAK;AAC1B,WAAK,sBAAsB;QACzBW,oBAAoB,KAAK,gBAAgBA,mBAAmB;QAC5DC,oBAAoB;QACpBwD,SAAS,KAAK,SAAS;MACzB,CAAC;AACD,WAAKJ,gBAAgB0E,KAAK;IAC5B;IAKAhI,OAAO;AACL,WAAK,gBAAgBA,KAAK;AAC1B,WAAK,sBAAsB;QACzBC,oBAAoB;QACpBC,oBAAoB,KAAK,gBAAgBA,mBAAmB;QAC5DwD,SAAS,KAAK,SAAS;MACzB,CAAC;IACH;IAMAiP,YAAYkF,QAAQ;AAClB,WAAK,gBAAgBpe,IAAIoe,MAAM;AAC/B,WAAK,sBAAsB;QACzB5X,oBAAoB;QACpBC,oBAAoB;QACpBwD,SAAS,KAAK,SAAS;MACzB,CAAC;IACH;IAEAoU,eAAejb,MAAM;AACnB,WAAK,gBAAgBsD,UAAUtD,IAAI;IACrC;IAEA,WAAW;AACT,UAAI,KAAK,YAAYxC,SAAS,GAAG;AAC/B,eAAO;MACT;AAEA,UAAI,KAAK,YAAYA,SAAS,GAAG;AAC/B,mBAAW8P,UAAU,KAAK,YAAYrC,OAAO,GAAG;AAC9C,iBAAOqC,OAAOzG,QAAQ;QACxB;MACF;AAEA,aAAO;IACT;IAKA1J,SAAS;AACP,WAAKuT,eAAe;AACpB,YAAMwK,gBAAgB,KAAKhK,cAAciK,kBACrB,IACpB;AACA,UAAI,CAAC,KAAKtH,gBAAgB,CAACqH,eAAe;AACxC;MACF;AAEA,YAAMhG,UAAUgG,gBACZ,CAACA,aAAa,IACd,CAAC,GAAG,KAAK,gBAAgB;AAC7B,YAAM1Y,MAAMA,MAAM;AAChB,aAAKiE,gBAAgBiM,KACnBjQ,MACAyS,QAAQnS,WAAW,IAAImS,QAAQ,CAAC,EAAEL,aAAaK,QAAQnS,MACzD;AACA,mBAAWuK,UAAU4H,SAAS;AAC5B5H,iBAAOyF,OAAO;QAChB;MACF;AACA,YAAMtQ,OAAOA,MAAM;AACjB,mBAAW6K,UAAU4H,SAAS;AAC5B,eAAK,kBAAkB5H,MAAM;QAC/B;MACF;AAEA,WAAKwI,YAAY;QAAEtT;QAAKC;QAAME,UAAU;MAAK,CAAC;IAChD;IAEA+N,iBAAiB;AAEf,WAAK,eAAeA,eAAe;IACrC;IAEAhJ,wBAAwB;AACtB,aAAO,KAAK,iBAAiB,KAAKmM;IACpC;IAMA,eAAeqB,SAAS;AACtB,iBAAW5H,UAAU,KAAK,kBAAkB;AAC1CA,eAAOsL,SAAS;MAClB;AACA,WAAK,iBAAiB1N,MAAM;AAC5B,iBAAWoC,UAAU4H,SAAS;AAC5B,YAAI5H,OAAOzG,QAAQ,GAAG;AACpB;QACF;AACA,aAAK,iBAAiBjK,IAAI0Q,MAAM;AAChCA,eAAOwN,OAAO;MAChB;AACA,WAAK,sBAAsB;QAAEhU,mBAAmB,KAAK+M;MAAa,CAAC;IACrE;IAKA3L,YAAY;AACV,iBAAWoF,UAAU,KAAK,kBAAkB;AAC1CA,eAAO8N,OAAO;MAChB;AACA,WAAK,eAAe,KAAK,YAAYnQ,OAAO,CAAC;IAC/C;IAKA3C,cAAc;AACZ,UAAI,KAAK,eAAe;AAEtB,aAAK,cAAcoI,eAAe;AAClC,YAAI,KAAK,UAAUhK,qBAAqBC,MAAM;AAG5C;QACF;MACF;AAEA,UAAI,KAAK,wBAAwB+J,eAAe,GAAG;AACjD;MACF;AAEA,UAAI,CAAC,KAAKmD,cAAc;AACtB;MACF;AACA,iBAAWvG,UAAU,KAAK,kBAAkB;AAC1CA,eAAOsL,SAAS;MAClB;AACA,WAAK,iBAAiB1N,MAAM;AAC5B,WAAK,sBAAsB;QACzBpE,mBAAmB;MACrB,CAAC;IACH;IAEAyB,yBAAyBpC,IAAG6J,IAAGqL,WAAW,OAAO;AAC/C,UAAI,CAACA,UAAU;AACb,aAAK3K,eAAe;MACtB;AACA,UAAI,CAAC,KAAKmD,cAAc;AACtB;MACF;AAEA,WAAK,aAAa,CAAC,KAAK1N;AACxB,WAAK,aAAa,CAAC,KAAK6J;AACxB,YAAM,CAACsL,QAAQC,MAAM,IAAI,KAAK;AAC9B,YAAMrG,UAAU,CAAC,GAAG,KAAK,gBAAgB;AAIzC,YAAMsG,eAAe;AAErB,UAAI,KAAK,uBAAuB;AAC9BpQ,qBAAa,KAAK,qBAAqB;MACzC;AAEA,WAAK,wBAAwB6O,WAAW,MAAM;AAC5C,aAAK,wBAAwB;AAC7B,aAAK,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI;AAE9C,aAAKnE,YAAY;UACftT,KAAKA,MAAM;AACT,uBAAW8K,UAAU4H,SAAS;AAC5B,kBAAI,KAAK,YAAYnQ,IAAIuI,OAAOzP,EAAE,GAAG;AACnCyP,uBAAOmO,gBAAgBH,QAAQC,MAAM;AACrCjO,uBAAOoO,gBAAgB;cACzB;YACF;UACF;UACAjZ,MAAMA,MAAM;AACV,uBAAW6K,UAAU4H,SAAS;AAC5B,kBAAI,KAAK,YAAYnQ,IAAIuI,OAAOzP,EAAE,GAAG;AACnCyP,uBAAOmO,gBAAgB,CAACH,QAAQ,CAACC,MAAM;AACvCjO,uBAAOoO,gBAAgB;cACzB;YACF;UACF;UACA/Y,UAAU;QACZ,CAAC;MACH,GAAG6Y,YAAY;AAEf,iBAAWlO,UAAU4H,SAAS;AAC5B5H,eAAOmO,gBAAgBtV,IAAG6J,EAAC;AAC3B1C,eAAOoO,gBAAgB;MACzB;IACF;IAKAC,mBAAmB;AAGjB,UAAI,CAAC,KAAK9H,cAAc;AACtB;MACF;AAEA,WAAK3G,kBAAkB,IAAI;AAC3B,WAAK,mBAAmB,oBAAI5N,IAAI;AAChC,iBAAWgO,UAAU,KAAK,kBAAkB;AAC1C,aAAK,iBAAiBrM,IAAIqM,QAAQ;UAChCsO,QAAQtO,OAAOnH;UACf0V,QAAQvO,OAAO0C;UACf8L,gBAAgBxO,OAAOQ;UACvBiO,MAAM;UACNC,MAAM;UACNC,cAAc;QAChB,CAAC;MACH;IACF;IAMAC,iBAAiB;AACf,UAAI,CAAC,KAAK,kBAAkB;AAC1B,eAAO;MACT;AACA,WAAKhP,kBAAkB,KAAK;AAC5B,YAAMhB,OAAM,KAAK;AACjB,WAAK,mBAAmB;AACxB,UAAIiQ,yBAAyB;AAE7B,iBAAW,CAAC;QAAEhW,GAAAA;QAAG6J,GAAAA;QAAGlC;MAAU,GAAG3D,KAAK,KAAK+B,MAAK;AAC9C/B,cAAM4R,OAAO5V;AACbgE,cAAM6R,OAAOhM;AACb7F,cAAM8R,eAAenO;AACrBqO,mCACEhW,OAAMgE,MAAMyR,UACZ5L,OAAM7F,MAAM0R,UACZ/N,cAAc3D,MAAM2R;MACxB;AAEA,UAAI,CAACK,wBAAwB;AAC3B,eAAO;MACT;AAEA,YAAMC,OAAOA,CAAC9O,QAAQnH,IAAG6J,IAAGlC,cAAc;AACxC,YAAI,KAAK,YAAY/I,IAAIuI,OAAOzP,EAAE,GAAG;AAInC,gBAAMwe,SAAS,KAAK,WAAW9c,IAAIuO,SAAS;AAC5C,cAAIuO,QAAQ;AACV/O,mBAAOgP,sBAAsBD,QAAQlW,IAAG6J,EAAC;UAC3C,OAAO;AACL1C,mBAAOQ,YAAYA;AACnBR,mBAAOnH,IAAIA;AACXmH,mBAAO0C,IAAIA;UACb;QACF;MACF;AAEA,WAAK8F,YAAY;QACftT,KAAKA,MAAM;AACT,qBAAW,CAAC8K,QAAQ;YAAEyO;YAAMC;YAAMC;UAAa,CAAC,KAAK/P,MAAK;AACxDkQ,iBAAK9O,QAAQyO,MAAMC,MAAMC,YAAY;UACvC;QACF;QACAxZ,MAAMA,MAAM;AACV,qBAAW,CAAC6K,QAAQ;YAAEsO;YAAQC;YAAQC;UAAe,CAAC,KAAK5P,MAAK;AAC9DkQ,iBAAK9O,QAAQsO,QAAQC,QAAQC,cAAc;UAC7C;QACF;QACAnZ,UAAU;MACZ,CAAC;AAED,aAAO;IACT;IAOA4Z,oBAAoBC,IAAIC,IAAI;AAC1B,UAAI,CAAC,KAAK,kBAAkB;AAC1B;MACF;AACA,iBAAWnP,UAAU,KAAK,iBAAiBvJ,KAAK,GAAG;AACjDuJ,eAAOoP,KAAKF,IAAIC,EAAE;MACpB;IACF;IAOAE,QAAQrP,QAAQ;AACd,UAAIA,OAAO+O,WAAW,MAAM;AAC1B,cAAMA,SAAS,KAAKzF,SAAStJ,OAAOQ,SAAS;AAC7C,YAAIuO,QAAQ;AACVA,iBAAOO,aAAatP,MAAM;AAC1B+O,iBAAO9B,aAAajN,MAAM;QAC5B,OAAO;AACL,eAAKyM,UAAUzM,MAAM;AACrB,eAAK0F,uBAAuB1F,MAAM;AAClCA,iBAAOqP,QAAQ;QACjB;MACF,OAAO;AACLrP,eAAO+O,OAAO9B,aAAajN,MAAM;MACnC;IACF;IAEA,IAAIyI,2BAA2B;AAC7B,aACE,KAAK8G,UAAU,GAAGC,wBAAwB,KACzC,KAAK,iBAAiBtf,SAAS,KAC9B,KAAKud,oBAAoB+B,wBAAwB;IAEvD;IAOAC,SAASzP,QAAQ;AACf,aAAO,KAAK,kBAAkBA;IAChC;IAMAuP,YAAY;AACV,aAAO,KAAK;IACd;IAMAG,UAAU;AACR,aAAO,KAAK;IACd;IAEAC,gBAAgB;AACd,aAAO,KAAK,UAAUvW,qBAAqBC;IAC7C;IAEA,IAAIuW,eAAe;AACjB,aAAO/d,OAAO,MAAM,gBAAgB,IAAIpB,aAAa,CAAC;IACxD;IAEAmU,kBAAkBjB,WAAW;AAC3B,UAAI,CAACA,WAAW;AACd,eAAO;MACT;AACA,YAAMM,YAAYhK,SAASiK,aAAa;AACxC,eAASjO,KAAI,GAAG4Z,KAAK5L,UAAU6L,YAAY7Z,KAAI4Z,IAAI5Z,MAAK;AACtD,YACE,CAAC0N,UAAU3J,SAASiK,UAAU8L,WAAW9Z,EAAC,EAAE+Z,uBAAuB,GACnE;AACA,iBAAO;QACT;MACF;AAEA,YAAM;QACJnX,GAAG8J;QACHD,GAAGE;QACHvO,OAAO4b;QACP3b,QAAQ4b;MACV,IAAIvM,UAAUb,sBAAsB;AAIpC,UAAIqN;AACJ,cAAQxM,UAAUyM,aAAa,oBAAoB,GAAC;QAClD,KAAK;AACHD,oBAAUA,CAACtX,IAAG6J,IAAG2N,IAAGC,QAAO;YACzBzX,IAAI6J,KAAIE,UAAUsN;YAClBxN,GAAG,KAAK7J,KAAIwX,KAAI1N,UAAUsN;YAC1B5b,OAAOic,KAAIJ;YACX5b,QAAQ+b,KAAIJ;UACd;AACA;QACF,KAAK;AACHE,oBAAUA,CAACtX,IAAG6J,IAAG2N,IAAGC,QAAO;YACzBzX,GAAG,KAAKA,KAAIwX,KAAI1N,UAAUsN;YAC1BvN,GAAG,KAAKA,KAAI4N,KAAI1N,UAAUsN;YAC1B7b,OAAOgc,KAAIJ;YACX3b,QAAQgc,KAAIJ;UACd;AACA;QACF,KAAK;AACHC,oBAAUA,CAACtX,IAAG6J,IAAG2N,IAAGC,QAAO;YACzBzX,GAAG,KAAK6J,KAAI4N,KAAI1N,UAAUsN;YAC1BxN,IAAI7J,KAAI8J,UAAUsN;YAClB5b,OAAOic,KAAIJ;YACX5b,QAAQ+b,KAAIJ;UACd;AACA;QACF;AACEE,oBAAUA,CAACtX,IAAG6J,IAAG2N,IAAGC,QAAO;YACzBzX,IAAIA,KAAI8J,UAAUsN;YAClBvN,IAAIA,KAAIE,UAAUsN;YAClB7b,OAAOgc,KAAIJ;YACX3b,QAAQgc,KAAIJ;UACd;AACA;MACJ;AAEA,YAAMvL,QAAQ,CAAA;AACd,eAAS1O,KAAI,GAAG4Z,KAAK5L,UAAU6L,YAAY7Z,KAAI4Z,IAAI5Z,MAAK;AACtD,cAAMsa,QAAQtM,UAAU8L,WAAW9Z,EAAC;AACpC,YAAIsa,MAAMC,WAAW;AACnB;QACF;AACA,mBAAW;UAAE3X,GAAAA;UAAG6J,GAAAA;UAAGrO;UAAOC;QAAO,KAAKic,MAAME,eAAe,GAAG;AAC5D,cAAIpc,UAAU,KAAKC,WAAW,GAAG;AAC/B;UACF;AACAqQ,gBAAMjP,KAAKya,QAAQtX,IAAG6J,IAAGrO,OAAOC,MAAM,CAAC;QACzC;MACF;AACA,aAAOqQ,MAAMlP,WAAW,IAAI,OAAOkP;IACrC;IAEAkI,6BAA6B;MAAEhC;MAAqBta;IAAG,GAAG;AACxD,OAAC,KAAK,gCAAgC,oBAAIyB,IAAI,GAAG2B,IAC/CkX,qBACAta,EACF;IACF;IAEAyc,gCAAgC;MAAEnC;IAAoB,GAAG;AACvD,WAAK,6BAA6Bhb,OAAOgb,mBAAmB;IAC9D;IAEA6F,wBAAwB1F,YAAY;AAClC,YAAM2F,WAAW,KAAK,6BAA6B1e,IAAI+Y,WAAWrZ,KAAKpB,EAAE;AACzE,UAAI,CAACogB,UAAU;AACb;MACF;AACA,YAAM3Q,SAAS,KAAK,mBAAmBwF,YAAYmL,QAAQ;AAC3D,UAAI,CAAC3Q,QAAQ;AACX;MACF;AACA,UAAI,KAAK,UAAU5G,qBAAqBC,QAAQ,CAAC2G,OAAO4Q,iBAAiB;AACvE;MACF;AACA5Q,aAAO0Q,wBAAwB1F,UAAU;IAC3C;IAEA6F,iBAAiBvL,cAAcuF,qBAAqBha,QAAQ;AAC1D,YAAMmP,SAAS,KAAK,kBAAkB/N,IAAIqT,YAAY;AACtD,UAAI,CAACtF,QAAQ;AACX;MACF;AACAA,aAAO8Q,UAAUjG,qBAAqBha,MAAM;AAC5C,WAAK,iBAAiBhB,OAAOyV,YAAY;IAC3C;IAEAyL,iBAAiBzL,cAActF,QAAQ;AACrC,OAAC,KAAK,qBAAqB,oBAAIhO,IAAI,GAAG2B,IAAI2R,cAActF,MAAM;IAChE;EACF;ACpzFA,MAAMgR,UAAN,MAAMA,SAAQ;IACZ,WAAW;IAEX,qBAAqB;IAErB,iBAAiB;IAEjB,sBAAsB;IAEtB,kBAAkB;IAElB,yBAAyB;IAEzB,0BAA0B;IAE1B,SAAS;IAET,UAAU;IAEV,eAAe;IAEf,sBAAsB;IAEtB,qBAAqB;IAErB,OAAO,iBAAiB;IAExB,OAAOC,QAAQ;IAEfC,YAAYC,QAAQ;AAClB,WAAK,UAAUA;AACf,WAAK,qBAAqBA,OAAOC,WAAWC;AAE5CL,eAAQ,mBAAmBM,OAAOC,OAAO;QACvCC,OAAO;QACP,eAAe;QACfC,SAAS;QACT,iBAAiB;QACjBC,QAAQ;QACR,gBAAgB;MAClB,CAAC;IACH;IAEA,OAAOC,WAAWC,MAAM;AACtBZ,eAAQC,UAAUW;IACpB;IAEA,MAAMC,SAAS;AACb,YAAMC,UAAW,KAAK,iBAAiBC,SAASC,cAAc,QAAQ;AACtEF,cAAQG,YAAY;AACpBH,cAAQI,WAAW;AAEnB,YAAMC,QAAS,KAAK,sBAAsBJ,SAASC,cAAc,MAAM;AACvEF,cAAQM,OAAOD,KAAK;AAEpB,UAAI,KAAK,oBAAoB;AAC3BL,gBAAQO,UAAUC,IAAI,KAAK;AAC3BR,gBAAQS,aAAa,gBAAgBvB,SAAQ,eAAeS,OAAO;AACnEU,cAAMI,aACJ,gBACAvB,SAAQ,eAAe,eAAe,CACxC;MACF,OAAO;AACLc,gBAAQS,aAAa,gBAAgB,8BAA8B;AACnEJ,cAAMI,aAAa,gBAAgB,oCAAoC;MACzE;AAEA,YAAMC,SAAS,KAAK,QAAQpB,WAAWqB;AACvCX,cAAQY,iBAAiB,eAAeC,eAAe;QAAEH;MAAO,CAAC;AACjEV,cAAQY,iBAAiB,eAAeE,CAAAA,WAASA,OAAMC,gBAAgB,GAAG;QACxEL;MACF,CAAC;AAED,YAAMM,UAAUF,CAAAA,WAAS;AACvBA,QAAAA,OAAMG,eAAe;AACrB,aAAK,QAAQ3B,WAAW4B,YAAY,KAAK,OAAO;AAChD,YAAI,KAAK,oBAAoB;AAC3B,eAAK,QAAQC,iBAAiB;YAC5BC,QAAQ;YACRC,MAAM;cAAEhB,OAAO,KAAK;YAAO;UAC7B,CAAC;QACH;MACF;AACAL,cAAQY,iBAAiB,SAASI,SAAS;QAAEM,SAAS;QAAMZ;MAAO,CAAC;AACpEV,cAAQY,iBACN,WACAE,CAAAA,WAAS;AACP,YAAIA,OAAMS,WAAWvB,WAAWc,OAAMU,QAAQ,SAAS;AACrD,eAAK,0BAA0B;AAC/BR,kBAAQF,MAAK;QACf;MACF,GACA;QAAEJ;MAAO,CACX;AACA,YAAM,KAAK,UAAU;AAErB,aAAOV;IACT;IAEA,IAAI,SAAS;AACX,aACG,KAAK,YAAY,WACjB,KAAK,aAAa,QAAQ,KAAKyB,eAAe,YAC/C;IAEJ;IAEAC,SAAS;AACP,UAAI,CAAC,KAAK,gBAAgB;AACxB;MACF;AACA,WAAK,eAAeC,MAAM;QAAEC,cAAc,KAAK;MAAwB,CAAC;AACxE,WAAK,0BAA0B;IACjC;IAEAC,UAAU;AACR,UAAI,KAAK,oBAAoB;AAC3B,eAAO,KAAK,aAAa;MAC3B;AACA,aAAO,CAAC,KAAK,YAAY,CAAC,KAAK;IACjC;IAEAC,UAAU;AACR,UAAI,KAAK,oBAAoB;AAC3B,eAAO,KAAK,aAAa,QAAQ,CAAC,CAAC,KAAK;MAC1C;AACA,aAAO,KAAKD,QAAQ;IACtB;IAEA,IAAIJ,cAAc;AAChB,aAAO,KAAK;IACd;IAEA,MAAMM,eAAeN,aAAa;AAChC,UAAI,KAAK,aAAa,MAAM;AAE1B;MACF;AACA,WAAK,eAAeA;AACpB,WAAK,sBAAsB,MAAMvC,SAAQC,MAAM6C,IAC7C,gEACA;QAAEC,kBAAkBR;MAAY,CAClC;AACA,WAAK,UAAU;IACjB;IAEAS,mBAAmBC,aAAa,OAAO;AACrC,UAAI,CAAC,KAAK,sBAAsB,KAAK,UAAU;AAC7C,aAAK,QAAQC,OAAO;AACpB,aAAK,SAAS;AACd;MACF;AACA,UAAI,CAAC,KAAK,QAAQ;AAChB,cAAMC,QAAS,KAAK,SAASpC,SAASC,cAAc,KAAK;AACzDmC,cAAMlC,YAAY;AAClB,aAAK,QAAQmC,IAAIhC,OAAO+B,KAAK;MAC/B;AACA,WAAK,OAAO9B,UAAUgC,OAAO,UAAU,CAACJ,UAAU;IACpD;IAEAK,UAAUC,cAAc;AACtB,UAAIzC,UAAU,KAAK;AACnB,UAAI,CAACyC,gBAAgB,KAAK,iBAAiBzC,SAAS;AAClDA,kBAAU,KAAK;MACjB;AACA,aAAO;QACLA;QACA0C,YAAY,KAAK;QACjBjB,aAAa,KAAK;QAClBkB,oBAAoB,KAAK;MAC3B;IACF;IAEA,IAAItB,OAAO;AACT,aAAO;QACLrB,SAAS,KAAK;QACd0C,YAAY,KAAK;MACnB;IACF;IAKA,IAAIrB,KAAK;MACPrB;MACA0C;MACAjB;MACAkB;MACAC,SAAS;IACX,GAAG;AACD,UAAInB,aAAa;AACf,aAAK,eAAeA;AACpB,aAAK,sBAAsBkB;MAC7B;AACA,UAAI,KAAK,aAAa3C,WAAW,KAAK,uBAAuB0C,YAAY;AACvE;MACF;AACA,UAAI,CAACE,QAAQ;AACX,aAAK,WAAW5C;AAChB,aAAK,qBAAqB0C;MAC5B;AACA,WAAK,UAAU;IACjB;IAEAH,OAAOM,UAAU,OAAO;AACtB,UAAI,CAAC,KAAK,gBAAgB;AACxB;MACF;AACA,UAAI,CAACA,WAAW,KAAK,wBAAwB;AAC3CC,qBAAa,KAAK,sBAAsB;AACxC,aAAK,yBAAyB;MAChC;AACA,WAAK,eAAeC,WAAW,CAACF;IAClC;IAEAG,QAAQ;AACN,WAAK,QAAQ7B,iBAAiB;QAC5BC,QAAQ;QACRC,MAAM;UAAEhB,OAAO,KAAK;QAAO;MAC7B,CAAC;IACH;IAEA4C,UAAU;AACR,WAAK,gBAAgBb,OAAO;AAC5B,WAAK,iBAAiB;AACtB,WAAK,sBAAsB;AAC3B,WAAK,kBAAkB;AACvB,WAAK,QAAQA,OAAO;AACpB,WAAK,SAAS;IAChB;IAEA,MAAM,YAAY;AAChB,YAAMc,SAAS,KAAK;AACpB,UAAI,CAACA,QAAQ;AACX;MACF;AAEA,UAAI,KAAK,oBAAoB;AAC3BA,eAAO3C,UAAUgC,OAAO,QAAQ,CAAC,CAAC,KAAK,QAAQ;AAC/CW,eAAOzC,aAAa,gBAAgBvB,SAAQ,eAAe,KAAK,MAAM,CAAC;AAEvE,aAAK,qBAAqBuB,aACxB,gBACAvB,SAAQ,eAAe,GAAG,KAAK,MAAM,QAAQ,CAC/C;AACA,YAAI,CAAC,KAAK,UAAU;AAClB,eAAK,iBAAiBkD,OAAO;AAC7B;QACF;MACF,OAAO;AACL,YAAI,CAAC,KAAK,YAAY,CAAC,KAAK,oBAAoB;AAC9Cc,iBAAO3C,UAAU6B,OAAO,MAAM;AAC9B,eAAK,iBAAiBA,OAAO;AAC7B;QACF;AACAc,eAAO3C,UAAUC,IAAI,MAAM;AAC3B0C,eAAOzC,aAAa,gBAAgB,mCAAmC;MACzE;AAEA,UAAI0C,UAAU,KAAK;AACnB,UAAI,CAACA,SAAS;AACZ,aAAK,kBAAkBA,UAAUlD,SAASC,cAAc,MAAM;AAC9DiD,gBAAQhD,YAAY;AACpBgD,gBAAQ1C,aAAa,QAAQ,SAAS;AACtC0C,gBAAQC,KAAK,oBAAoB,KAAK,QAAQA,EAAE;AAEhD,cAAMC,wBAAwB;AAC9B,cAAM3C,SAAS,KAAK,QAAQpB,WAAWqB;AACvCD,eAAOE,iBACL,SACA,MAAM;AACJkC,uBAAa,KAAK,sBAAsB;AACxC,eAAK,yBAAyB;QAChC,GACA;UAAEQ,MAAM;QAAK,CACf;AACAJ,eAAOtC,iBACL,cACA,MAAM;AACJ,eAAK,yBAAyB2C,WAAW,MAAM;AAC7C,iBAAK,yBAAyB;AAC9B,iBAAK,gBAAgBhD,UAAUC,IAAI,MAAM;AACzC,iBAAK,QAAQW,iBAAiB;cAC5BC,QAAQ;YACV,CAAC;UACH,GAAGiC,qBAAqB;QAC1B,GACA;UAAE3C;QAAO,CACX;AACAwC,eAAOtC,iBACL,cACA,MAAM;AACJ,cAAI,KAAK,wBAAwB;AAC/BkC,yBAAa,KAAK,sBAAsB;AACxC,iBAAK,yBAAyB;UAChC;AACA,eAAK,iBAAiBvC,UAAU6B,OAAO,MAAM;QAC/C,GACA;UAAE1B;QAAO,CACX;MACF;AACA,UAAI,KAAK,oBAAoB;AAC3ByC,gBAAQ1C,aACN,gBACA,0CACF;MACF,OAAO;AACL0C,gBAAQK,gBAAgB,cAAc;AACtCL,gBAAQM,cAAc,KAAK;MAC7B;AAEA,UAAI,CAACN,QAAQO,YAAY;AACvBR,eAAO5C,OAAO6C,OAAO;MACvB;AAEA,YAAMQ,UAAU,KAAK,QAAQC,qBAAqB;AAClDD,eAASlD,aAAa,oBAAoB0C,QAAQC,EAAE;IACtD;EACF;AC9TA,MAAMS,UAAN,MAAc;IACZ,2BAA2B;IAE3B,wBAAwB;IAExB,0BAA0B;IAE1B,UAAU;IAEV,eAAe;IAEf,YAAY;IAEZ,QAAQ;IAER,QAAQ;IAER,WAAW;IAEX,iBAAiB;IAEjBC,YAAYC,QAAQ;AAClB,WAAK,UAAUA;IACjB;IAEAC,mBAAmB;AACjB,YAAMC,SAAU,KAAK,wBACnBC,SAASC,cAAc,QAAQ;AACjCF,aAAOG,YAAY;AACnB,aAAO,KAAK,QAAQH,QAAQ,KAAK;IACnC;IAEAI,sBAAsB;AACpB,YAAMJ,SAAU,KAAK,2BACnBC,SAASC,cAAc,QAAQ;AACjCF,aAAOG,YAAY;AAEnB,YAAME,WAAW,KAAK,QAAQC;AAC9B,UAAID,UAAU;AACZ,cAAM;UAAEE;QAAM,IAAIP;AAClBO,cAAMC,iBAAiB,QACrB,OACC,KAAK,QAAQC,WAAWC,cAAc,QACnC,IAAIL,SAAS,CAAC,IACdA,SAAS,CAAC,EAAE;AAElBE,cAAMI,MAAM,QAAQ,MAAMN,SAAS,CAAC,CAAC;AACrC,cAAMO,SAAQ,KAAK,QAAQC;AAC3B,YAAID,QAAO;AACTL,gBAAMO,kBAAkBF;QAC1B;MACF;AAEA,aAAO,KAAK,QAAQZ,QAAQ,IAAI;IAClC;IAEAe,cAAc;AACZC,iBAAW,MAAM;AACf,SAAC,KAAK,4BAA4B,KAAK,wBAAwBC,MAAM;MACvE,GAAG,CAAC;IACN;IAEAC,iBAAiB;AACf,UAAI,CAAC,KAAK,0BAA0B;AAClC;MACF;AACA,YAAMN,SAAQ,KAAK,QAAQC;AAC3B,UAAID,QAAO;AACT,aAAK,yBAAyBL,MAAMO,kBAAkBF;MACxD;AACA,WAAK,QAAQH,WAAWU,iBAAiB,KAAK,OAAO;IACvD;IAEA,IAAIC,qBAAqB;AACvB,cACG,KAAK,0BAA0BC,sBAAsB,EAAEC,SAAS,KACjE,KAAK,QAAQC,OAAOC,mBAAmBF;IAE3C;IAEA,IAAIG,8BAA8B;AAChC,UAAI,KAAK,gBAAgB;AACvB,eAAO,KAAK;MACd;AACA,UAAI,CAAC,KAAK,0BAA0B;AAClC,eAAO;MACT;AACA,YAAM;QAAEC,GAAAA;QAAGC,GAAAA;QAAGC;MAAO,IACnB,KAAK,yBAAyBP,sBAAsB;AACtD,YAAM;QACJK,GAAGG;QACHF,GAAGG;QACHR,OAAOS;QACPH,QAAQI;MACV,IAAI,KAAK,QAAQT,OAAOC;AACxB,aAAO,EAAEE,KAAIG,WAAWE,cAAcJ,KAAIC,SAASE,WAAWE,YAAY;IAC5E;IAEA,IAAIP,4BAA4BQ,KAAK;AACnC,WAAK,iBAAiBA;IACxB;IAEAC,0BAA0B;AACxB,aAAO,KAAK,mBAAmB;IACjC;IAEAC,gCAAgC;AAC9B,WAAK,0BAA0BC,OAAO;AACtC,WAAK,2BAA2B;IAClC;IAEAC,6BAA6B;AAC3B,WAAK,uBAAuBD,OAAO;AACnC,WAAK,wBAAwB;IAC/B;IAEAE,uBAAuB;MAAEC;MAAUC;IAAS,GAAG;AAC7C,UAAI,CAAC,KAAK,0BAA0B;AAClC;MACF;AACA,WAAK,yBAAyBC,UAAUC,OAAO,YAAYH,QAAQ;AACnE,WAAK,yBAAyBI,eAAeH;IAC/C;IAEA,QAAQI,SAASC,cAAc;AAC7B,UAAI,CAAC,KAAK,QAAQpC,WAAWqC,kBAAkB,GAAG;AAChD,eAAO;MACT;AAEAF,cAAQG,WAAW;AACnBH,cAAQI,eAAe;AAEvB,UAAIH,cAAc;AAChBD,gBAAQK,eAAe;AACvBL,gBAAQM,aAAa,gBAAgB,2BAA2B;MAClE,OAAO;AACLN,gBAAQO,uBAAuB,CAC7B,KAAK,QAAQ1C,WAAW2C,wBAAwB,CAAC;AAEnDR,gBAAQM,aAAa,gBAAgB,iCAAiC;MACxE;AAEA,YAAMG,SAAS,KAAK,QAAQ5C,WAAW6C;AACvC,UAAI,EAAED,kBAAkBE,gBAAgBF,OAAOG,SAAS;AACtD,eAAOZ;MACT;AAEAA,cAAQa,iBAAiB,eAAeC,eAAe;QAAEL;MAAO,CAAC;AACjE,UAAIR,cAAc;AAChBD,gBAAQa,iBACN,WACAE,CAAAA,OAAK;AACH,eAAK,QAAQC,sBAAsB;AACnCC,oBAAUF,EAAC;QACb,GACA;UACEG,SAAS;UACTT;QACF,CACF;AACAT,gBAAQa,iBACN,YACAE,CAAAA,OAAK;AACH,eAAK,QAAQC,sBAAsB;AACnCC,oBAAUF,EAAC;QACb,GACA;UACEG,SAAS;UACTT;QACF,CACF;MACF;AACAT,cAAQa,iBAAiB,eAAeM,CAAAA,WAASA,OAAMC,gBAAgB,GAAG;QACxEX;MACF,CAAC;AAED,YAAMY,UAAUF,CAAAA,WAAS;AACvBA,QAAAA,OAAMG,eAAe;AACrB,YAAItB,YAAY,KAAK,uBAAuB;AAC1C,eAAKuB,KAAK;QACZ,OAAO;AACL,eAAK,QAAQC,cAAiC,IAAI;QACpD;MACF;AACAxB,cAAQa,iBAAiB,SAASQ,SAAS;QAAEH,SAAS;QAAMT;MAAO,CAAC;AACpET,cAAQa,iBACN,WACAM,CAAAA,WAAS;AACP,YAAIA,OAAMM,WAAWzB,WAAWmB,OAAMO,QAAQ,SAAS;AACrD,eAAK,0BAA0B;AAC/BL,kBAAQF,MAAK;QACf;MACF,GACA;QAAEV;MAAO,CACX;AAEAT,cAAQa,iBACN,gBACA,MAAM;AACJ,aAAK,QAAQW,cACQ,OACA,IACrB;MACF,GACA;QAAEf;MAAO,CACX;AACAT,cAAQa,iBACN,gBACA,MAAM;AACJ,aAAK,QAAQW,cACQ,OACA,KACrB;MACF,GACA;QAAEf;MAAO,CACX;AAEA,aAAOT;IACT;IAEAuB,KAAKI,SAAS;AACZ,YAAMlE,WAAW,KAAKoB;AACtB,UAAI+C,MAAMC;AACV,UAAIpE,UAAU;AACZ,SAACmE,MAAMC,IAAI,IAAIpE;MACjB,OAAO;AAEL,SAACmE,MAAMC,IAAI,IAAI,KAAK,QAAQnE;AAC5B,cAAM;UAAEgB;UAAOM;UAAQF,GAAAA;UAAGC,GAAAA;QAAE,IAAI,KAAK;AACrC6C,eAAO9C,KAAI8C,OAAOlD;AAClBmD,eAAO9C,KAAI8C,OAAO7C;MACpB;AACA,YAAM8C,mBAAmB,KAAK,QAAQnD,OAAOC;AAC7C,YAAM;QACJE,GAAGG;QACHF,GAAGG;QACHR,OAAOS;QACPH,QAAQI;MACV,IAAI0C;AACJ,WAAK,QAAQjE,WAAWkE,YACtB,KAAK,SACL9C,UAAU2C,OAAOzC,aACjBD,UAAU2C,OAAOzC,cACjB;QAAE,GAAGuC;QAASG;MAAiB,CACjC;IACF;IAEAE,SAAS;AACP,UAAI,CAAC,KAAK,uBAAuB;AAC/B;MACF;AACA,WAAK,sBAAsB3D,MAAM;QAC/B4D,cAAc,KAAK;MACrB,CAAC;AACD,WAAK,0BAA0B;IACjC;IAEAC,YAAY;AACV,aAAO,KAAK,YAAY,KAAK,UAAU;IACzC;IAEAC,UAAU;AACR,aAAO,KAAK,UAAU;IACxB;IAEAC,gBAAgB;AACd,aAAO,KAAKF,UAAU,KAAK,KAAK,UAAU,KAAK;IACjD;IAEAG,YAAY;AACV,aAAO,KAAKC;IACd;IAEA,IAAIA,OAAO;AACT,aAAO;QACLC,MAAM,KAAK;QACXC,UAAU,KAAK;QACfC,MAAM,KAAK;QACXC,SAAS,KAAKR,UAAU;MAC1B;IACF;IAKA,IAAII,KAAKC,MAAM;AACb,UAAIA,SAAS,KAAK,OAAO;AACvB,aAAK,YAAY;MACnB;AACA,UAAIA,SAAS,MAAM;AACjB,aAAK,QAAQ;AACb,aAAK,WAAW;AAChB;MACF;AACA,WAAK,QAAQA;AACb,WAAK,QAAQ,oBAAII,KAAK;AACtB,WAAK,WAAW;IAClB;IAEAC,eAAeL,MAAMC,WAAW,MAAM;AACpC,WAAK,eAAeD;AACpB,WAAKD,OAAOC;AACZ,WAAK,QAAQ;AACb,WAAK,YAAYC;IACnB;IAEAK,QAAQ;IAAC;IAETC,UAAU;AACR,WAAK,uBAAuBtD,OAAO;AACnC,WAAK,wBAAwB;AAC7B,WAAK,0BAA0BA,OAAO;AACtC,WAAK,2BAA2B;AAChC,WAAK,QAAQ;AACb,WAAK,YAAY;AACjB,WAAK,QAAQ;AACb,WAAK,UAAU;AACf,WAAK,0BAA0B;AAC/B,WAAK,WAAW;IAClB;EACF;AChUA,MAAMuD,eAAN,MAAMA,cAAa;IACjB;IAEA,cAAc;IAEd,qBAAqB;IAErB;IAEA;IAEA;IAEA;IAEA,iBAAiB;IAEjB;IAEA,aAAa;IAEb;IAEA,eAAe;IAEfC,YAAY;MACVC;MACAC,qBAAqB;MACrBC,oBAAoB;MACpBC,eAAe;MACfC,aAAa;MACbC,aAAa;MACbC;IACF,GAAG;AACD,WAAK,aAAaN;AAClB,WAAK,qBAAqBE;AAC1B,WAAK,sBAAsBD;AAC3B,WAAK,gBAAgBE;AACrB,WAAK,cAAcC;AACnB,WAAK,cAAcC;AACnB,WAAK,kBAAkB,IAAIE,gBAAgB;AAC3C,WAAK,UAAUC,YAAYC,IAAI,CAACH,QAAQ,KAAK,gBAAgBA,MAAM,CAAC;AAEpEN,gBAAUU,iBAAiB,cAAc,KAAK,cAAcC,KAAK,IAAI,GAAG;QACtEC,SAAS;QACTN,QAAQ,KAAK;MACf,CAAC;IACH;IAMA,IAAIO,8BAA8B;AAOhC,aAAO,KAAKC,YAAYC;IAC1B;IAEA,cAAcC,KAAK;AACjB,UAAI,KAAK,sBAAsB,GAAG;AAChC;MACF;AAEA,UAAIA,IAAIC,QAAQC,WAAW,GAAG;AAC5B,YAAI,KAAK,gBAAgB;AACvB;QACF;AACA,cAAMC,gBAAiB,KAAK,iBAAiB,IAAIZ,gBAAgB;AACjE,cAAMD,SAASE,YAAYC,IAAI,CAAC,KAAK,SAASU,cAAcb,MAAM,CAAC;AACnE,cAAMN,YAAY,KAAK;AAIvB,cAAMoB,OAAO;UAAEC,SAAS;UAAMf;UAAQM,SAAS;QAAM;AACrD,cAAMU,oBAAoBC,CAAAA,OAAK;AAC7B,cAAIA,GAAEC,gBAAgB,SAAS;AAC7B,iBAAK,gBAAgBC,MAAM;AAC3B,iBAAK,iBAAiB;UACxB;QACF;AACAzB,kBAAUU,iBACR,eACAa,CAAAA,OAAK;AACH,cAAIA,GAAEC,gBAAgB,SAAS;AAG7BE,sBAAUH,EAAC;AACXD,8BAAkBC,EAAC;UACrB;QACF,GACAH,IACF;AACApB,kBAAUU,iBAAiB,aAAaY,mBAAmBF,IAAI;AAC/DpB,kBAAUU,iBAAiB,iBAAiBY,mBAAmBF,IAAI;AACnE;MACF;AAEA,UAAI,CAAC,KAAK,cAAc;AACtB,aAAK,eAAe,IAAIb,gBAAgB;AACxC,cAAMD,SAASE,YAAYC,IAAI,CAAC,KAAK,SAAS,KAAK,aAAaH,MAAM,CAAC;AACvE,cAAMN,YAAY,KAAK;AAEvB,cAAM2B,MAAM;UAAErB;UAAQe,SAAS;UAAOT,SAAS;QAAM;AACrDZ,kBAAUU,iBACR,aACA,KAAK,aAAaC,KAAK,IAAI,GAC3BgB,GACF;AACA,cAAMC,aAAa,KAAK,YAAYjB,KAAK,IAAI;AAC7CX,kBAAUU,iBAAiB,YAAYkB,YAAYD,GAAG;AACtD3B,kBAAUU,iBAAiB,eAAekB,YAAYD,GAAG;AAEzDA,YAAIN,UAAU;AACdrB,kBAAUU,iBAAiB,eAAegB,WAAWC,GAAG;AACxD3B,kBAAUU,iBAAiB,eAAegB,WAAWC,GAAG;AACxD3B,kBAAUU,iBAAiB,iBAAiBgB,WAAWC,GAAG;AAC1D3B,kBAAUU,iBAAiB,aAAagB,WAAWC,GAAG;AACtD,aAAK,gBAAgB;MACvB;AAEAD,gBAAUV,GAAG;AAEb,UAAIA,IAAIC,QAAQC,WAAW,KAAK,KAAK,qBAAqB,GAAG;AAC3D,aAAK,aAAa;AAClB;MACF;AAEA,UAAI,CAACW,QAAQC,MAAM,IAAId,IAAIC;AAC3B,UAAIY,OAAOE,aAAaD,OAAOC,YAAY;AACzC,SAACF,QAAQC,MAAM,IAAI,CAACA,QAAQD,MAAM;MACpC;AACA,WAAK,aAAa;QAChBG,SAASH,OAAOI;QAChBC,SAASL,OAAOM;QAChBC,SAASN,OAAOG;QAChBI,SAASP,OAAOK;MAClB;IACF;IAEA,aAAanB,KAAK;AAChB,UAAI,CAAC,KAAK,cAAcA,IAAIC,QAAQC,WAAW,GAAG;AAChD;MACF;AAEAQ,gBAAUV,GAAG;AAEb,UAAI,CAACa,QAAQC,MAAM,IAAId,IAAIC;AAC3B,UAAIY,OAAOE,aAAaD,OAAOC,YAAY;AACzC,SAACF,QAAQC,MAAM,IAAI,CAACA,QAAQD,MAAM;MACpC;AACA,YAAM;QAAEI,SAASK;QAAUH,SAASI;MAAS,IAAIV;AACjD,YAAM;QAAEI,SAASO;QAAUL,SAASM;MAAS,IAAIX;AACjD,YAAMY,YAAY,KAAK;AACvB,YAAM;QACJV,SAASW;QACTT,SAASU;QACTR,SAASS;QACTR,SAASS;MACX,IAAIJ;AAEJ,YAAMK,WAAWF,WAAWF;AAC5B,YAAMK,WAAWF,WAAWF;AAC5B,YAAMK,WAAWT,WAAWF;AAC5B,YAAMY,WAAWT,WAAWF;AAE5B,YAAMY,WAAWC,KAAKC,MAAMJ,UAAUC,QAAQ,KAAK;AACnD,YAAMI,YAAYF,KAAKC,MAAMN,UAAUC,QAAQ,KAAK;AACpD,UACE,CAAC,KAAK,eACNI,KAAKG,IAAID,YAAYH,QAAQ,KAAKrD,cAAae,6BAC/C;AACA;MACF;AAEA6B,gBAAUV,UAAUM;AACpBI,gBAAUR,UAAUK;AACpBG,gBAAUN,UAAUI;AACpBE,gBAAUL,UAAUI;AAEpB,UAAI,CAAC,KAAK,aAAa;AAErB,aAAK,cAAc;AAGnB;MACF;AAEA,YAAMe,SAAS,EAAElB,WAAWE,YAAY,IAAID,WAAWE,YAAY,CAAC;AACpE,WAAK,cAAce,QAAQF,WAAWH,QAAQ;IAChD;IAEA,YAAYnC,KAAK;AACf,UAAIA,IAAIC,QAAQC,UAAU,GAAG;AAC3B;MACF;AAEA,UAAI,KAAK,cAAc;AACrB,aAAK,aAAaO,MAAM;AACxB,aAAK,eAAe;AACpB,aAAK,cAAc;MACrB;AAEA,UAAI,CAAC,KAAK,YAAY;AACpB;MACF;AACAC,gBAAUV,GAAG;AACb,WAAK,aAAa;AAClB,WAAK,cAAc;IACrB;IAEAyC,UAAU;AACR,WAAK,iBAAiBhC,MAAM;AAC5B,WAAK,kBAAkB;AACvB,WAAK,gBAAgBA,MAAM;AAC3B,WAAK,iBAAiB;IACxB;EACF;AC9LA,MAAMiC,mBAAN,MAAMA,kBAAiB;IACrB,qBAAqB;IAErB,kBAAkB;IAElB,WAAW;IAEX,WAAW;IAEX,2BAA2B;IAE3B,YAAY;IAEZ,iBAAiB;IAEjB,mBAAmB;IAEnB,eAAe;IAEf,qBAAqB;IAErB,mBAAmB;IAEnB,kBAAkB;IAElB,WAAW;IAEX,sBAAsB;IAEtB,kBAAkB;IAElB,eAAe;IAEf,aAAa;IAEb,gBAAgB;IAEhB,+BAA+B;IAE/B,oBAAoB;IAEpB,aAAa;IAEb,aAAa;IAEb,qBAAqB;IAErB,gBAAgB;IAEhBC,aAAa;IAEbC,UAAU;IAEVC,eAAe;IAEfC,kBAAkBC,uBAAOC,OAAO,IAAI;IAEpCC,eAAe;IAEfC,aAAa;IAEbC,aAAa;IAEbC,sBAAsB;IAEtB,OAAOC,QAAQ;IAEf,OAAOC,eAAe;IAEtB,eAAe;IAEf,UAAUZ,kBAAiBa;IAE3B,OAAOC,mBAAmB;IAE1B,OAAOC,gBAAgB,IAAIC,aAAa;IAExC,OAAOH,UAAU;IAKjB,OAAOI,oBAAoB;IAE3B,WAAWC,0BAA0B;AACnC,YAAMC,UAASnB,kBAAiBoB,UAAUC;AAC1C,YAAMC,QAAQC,0BAA0BC;AACxC,YAAMC,MAAMF,0BAA0BG;AAEtC,aAAOC,OACL,MACA,2BACA,IAAIC,gBAAgB,CAClB,CAAC,CAAC,aAAa,eAAe,GAAGT,SAAQ;QAAEU,MAAM,CAAC,CAACP,OAAO,CAAC;MAAE,CAAC,GAC9D,CACE,CAAC,kBAAkB,qBAAqB,GACxCH,SACA;QAAEU,MAAM,CAAC,CAACJ,KAAK,CAAC;MAAE,CAAC,GAErB,CAAC,CAAC,cAAc,gBAAgB,GAAGN,SAAQ;QAAEU,MAAM,CAACP,OAAO,CAAC;MAAE,CAAC,GAC/D,CACE,CAAC,mBAAmB,sBAAsB,GAC1CH,SACA;QAAEU,MAAM,CAACJ,KAAK,CAAC;MAAE,CAAC,GAEpB,CAAC,CAAC,WAAW,aAAa,GAAGN,SAAQ;QAAEU,MAAM,CAAC,GAAG,CAACP,KAAK;MAAE,CAAC,GAC1D,CAAC,CAAC,gBAAgB,mBAAmB,GAAGH,SAAQ;QAAEU,MAAM,CAAC,GAAG,CAACJ,GAAG;MAAE,CAAC,GACnE,CAAC,CAAC,aAAa,eAAe,GAAGN,SAAQ;QAAEU,MAAM,CAAC,GAAGP,KAAK;MAAE,CAAC,GAC7D,CAAC,CAAC,kBAAkB,qBAAqB,GAAGH,SAAQ;QAAEU,MAAM,CAAC,GAAGJ,GAAG;MAAE,CAAC,GACtE,CACE,CAAC,UAAU,YAAY,GACvBzB,kBAAiBoB,UAAUU,yBAAyB,CACrD,CACF,CACH;IACF;IAKAC,YAAYC,YAAY;AAQtB,WAAKC,SAASD,WAAWC;AACzB,WAAKC,KAAKF,WAAWE;AACrB,WAAKC,QAAQ,KAAKC,SAAS;AAC3B,WAAKC,YAAYL,WAAWC,OAAOI;AACnC,WAAKC,OAAON,WAAWM;AACvB,WAAKC,MAAM;AACX,WAAK9B,aAAauB,WAAWQ;AAC7B,WAAKC,sBAAsB;AAC3B,WAAKC,uBAAuB;AAC5B,WAAKtC,gBAAgBuC,aAAaX,WAAWW;AAC7C,WAAKC,sBAAsB;AAC3B,WAAKH,sBAAsBT,WAAWS,uBAAuB;AAC7D,WAAKI,eAAeb,WAAWa,gBAAgB,oBAAIC,KAAK;AACxD,WAAKC,mBAAmBf,WAAWe,oBAAoB;AACvD,WAAKC,gBAAgB;AAErB,YAAM;QACJC;QACAC,SAAS;UAAEC;UAAWC;UAAYC;UAAOC;QAAM;MACjD,IAAI,KAAKrB,OAAOsB;AAEhB,WAAKN,WAAWA;AAChB,WAAKO,gBACF,MAAMP,WAAW,KAAKxC,WAAWgD,eAAeR,YAAY;AAC/D,WAAKS,iBAAiB,CAACP,WAAWC,UAAU;AAC5C,WAAKO,kBAAkB,CAACN,OAAOC,KAAK;AAEpC,YAAM,CAACnB,OAAOC,MAAM,IAAI,KAAKwB;AAC7B,WAAKC,IAAI7B,WAAW6B,IAAI1B;AACxB,WAAK2B,IAAI9B,WAAW8B,IAAI1B;AAExB,WAAK2B,kBAAkB;AACvB,WAAKC,UAAU;IACjB;IAEA,IAAIC,aAAa;AACf,aAAO5D,OAAO6D,eAAe,IAAI,EAAEnC,YAAYoC;IACjD;IAEA,IAAIC,OAAO;AACT,aAAO/D,OAAO6D,eAAe,IAAI,EAAEnC,YAAYsC;IACjD;IAEA,WAAWC,WAAW;AACpB,aAAO;IACT;IAEA,WAAWC,oBAAoB;AAC7B,aAAO5C,OACL,MACA,qBACA,KAAKZ,cAAcyD,WAAW,YAAY,CAC5C;IACF;IAEA,OAAOC,wBAAwBC,QAAQ;AACrC,YAAMC,aAAa,IAAIC,WAAW;QAChC1C,IAAIwC,OAAOzC,OAAO4C,UAAU;QAC5B5C,QAAQyC,OAAOzC;QACfO,WAAWkC,OAAOjE;MACpB,CAAC;AACDkE,iBAAWlC,sBAAsBiC,OAAOjC;AACxCkC,iBAAWX,UAAU;AACrBW,iBAAWlE,WAAWqE,uBAAuBH,UAAU;IACzD;IAMA,OAAOI,WAAWC,MAAMvE,YAAY;AAClCT,wBAAiBW,UAAUqE;AAE3BhF,wBAAiBY,iBAAiBP,OAAO4E,OAAO;QAC9CC,SAAS;QACTC,WAAW;QACXC,UAAU;QACVC,aAAa;QACbC,aAAa;QACbC,cAAc;QACdC,YAAY;QACZC,YAAY;MACd,CAAC;AAED,UAAIzF,kBAAiBc,qBAAqB,IAAI;AAC5C;MACF;AACA,YAAM4E,QAAQC,iBAAiBC,SAASC,eAAe;AACvD7F,wBAAiBc,mBACfgF,WAAWJ,MAAMK,iBAAiB,iBAAiB,CAAC,KAAK;IAC7D;IAOA,OAAOC,oBAAoB7B,OAAO8B,QAAQ;IAAC;IAM3C,WAAWC,4BAA4B;AACrC,aAAO,CAAA;IACT;IAQA,OAAOC,yBAAyBC,MAAM;AACpC,aAAO;IACT;IAQA,OAAOC,MAAMC,MAAMrE,QAAQ;AACzBsE,kBAAY,iBAAiB;IAC/B;IAMA,IAAIC,qBAAqB;AACvB,aAAO,CAAA;IACT;IAEA,IAAIC,eAAe;AACjB,aAAO,KAAK;IACd;IAEA,IAAIA,aAAaC,OAAO;AACtB,WAAK,eAAeA;AACpB,WAAKnE,KAAKoE,UAAUC,OAAO,aAAaF,KAAK;IAC/C;IAEA,IAAIG,MAAM;AACR,aAAO,KAAKpE,uBAAuB,KAAKP;IAC1C;IAKA,IAAI4E,iBAAiB;AACnB,aAAO;IACT;IAEAC,SAAS;AACP,YAAM,CAAC5D,WAAWC,UAAU,IAAI,KAAKM;AACrC,cAAQ,KAAKsD,gBAAc;QACzB,KAAK;AACH,eAAKnD,KAAM,KAAKzB,SAASgB,cAAeD,YAAY;AACpD,eAAKW,KAAM,KAAK3B,QAAQgB,aAAcC,aAAa;AACnD;QACF,KAAK;AACH,eAAKS,KAAK,KAAK1B,QAAQ;AACvB,eAAK2B,KAAK,KAAK1B,SAAS;AACxB;QACF,KAAK;AACH,eAAKyB,KAAM,KAAKzB,SAASgB,cAAeD,YAAY;AACpD,eAAKW,KAAM,KAAK3B,QAAQgB,aAAcC,aAAa;AACnD;QACF;AACE,eAAKS,KAAK,KAAK1B,QAAQ;AACvB,eAAK2B,KAAK,KAAK1B,SAAS;AACxB;MACJ;AACA,WAAK6E,kBAAkB;IACzB;IAMAC,YAAYC,QAAQ;AAClB,WAAK1G,WAAWyG,YAAYC,MAAM;IACpC;IAEA,IAAIC,eAAe;AACjB,aAAO,KAAK3G,WAAW2G;IACzB;IAKAC,kBAAkB;AAChB,WAAK9E,IAAImD,MAAM4B,SAAS;IAC1B;IAKAC,kBAAkB;AAChB,WAAKhF,IAAImD,MAAM4B,SAAS,KAAK;IAC/B;IAEAE,UAAUvF,QAAQ;AAChB,UAAIA,WAAW,MAAM;AACnB,aAAKI,YAAYJ,OAAOI;AACxB,aAAKqB,iBAAiBzB,OAAOyB;MAC/B,OAAO;AAEL,aAAK,cAAc;AAGnB,aAAK,iBAAiB+D,OAAO;AAC7B,aAAK,kBAAkB;MACzB;AACA,WAAKxF,SAASA;IAChB;IAKAyF,QAAQC,QAAO;AACb,UAAI,CAAC,KAAKjH,qBAAqB;AAC7B;MACF;AACA,UAAI,CAAC,KAAK,iBAAiB;AACzB,aAAKuB,OAAO2F,YAAY,IAAI;MAC9B,OAAO;AACL,aAAK,kBAAkB;MACzB;IACF;IAMAC,SAASF,QAAO;AACd,UAAI,CAAC,KAAKjH,qBAAqB;AAC7B;MACF;AAEA,UAAI,CAAC,KAAKqD,iBAAiB;AACzB;MACF;AAMA,YAAM+D,SAASH,OAAMI;AACrB,UAAID,QAAQE,QAAQ,IAAI,KAAK9F,EAAE,EAAE,GAAG;AAClC;MACF;AAEAyF,MAAAA,OAAMM,eAAe;AAErB,UAAI,CAAC,KAAKhG,QAAQiG,qBAAqB;AACrC,aAAKC,eAAe;MACtB;IACF;IAEAA,iBAAiB;AACf,UAAI,KAAKC,QAAQ,GAAG;AAClB,aAAKX,OAAO;MACd,OAAO;AACL,aAAKY,OAAO;MACd;IACF;IAKAA,SAAS;AACP,UAAI,CAAC,KAAKC,aAAa,GAAG;AACxB;MACF;AACA,WAAKxD,uBAAuB;IAC9B;IAEAA,yBAAyB;AACvB,WAAKrE,WAAWqE,uBAAuB,IAAI;IAC7C;IASAyD,MAAM1E,IAAGC,IAAG0E,IAAIC,IAAI;AAClB,YAAM,CAACtG,OAAOC,MAAM,IAAI,KAAKwB;AAC7B,OAAC4E,IAAIC,EAAE,IAAI,KAAKC,wBAAwBF,IAAIC,EAAE;AAE9C,WAAK5E,KAAKA,KAAI2E,MAAMrG;AACpB,WAAK2B,KAAKA,KAAI2E,MAAMrG;AAEpB,WAAK6E,kBAAkB;IACzB;IAEA0B,gBAAgBC,OAAOC,OAAO;AAC5B,YAAM,CAACC,aAAaC,YAAY,IAAI,KAAKnF;AACzC,WAAK2E,MACHK,QAAQE,aACRD,QAAQE,cACR,KAAK5G,QAAQ2G,aACb,KAAK1G,SAAS2G,YAChB;AACA,WAAKC,cAAc;IACrB;IAEA,WAAW,CAAC7G,OAAOC,MAAM,GAAGyB,IAAGC,IAAG;AAChC,OAACD,IAAGC,EAAC,IAAI,KAAK4E,wBAAwB7E,IAAGC,EAAC;AAE1C,WAAKD,KAAKA,KAAI1B;AACd,WAAK2B,KAAKA,KAAI1B;AAEd,WAAK6G,eAAe,KAAKpF,GAAG,KAAKC,CAAC;AAElC,WAAKmD,kBAAkB;IACzB;IAOAiC,UAAUrF,IAAGC,IAAG;AAGd,WAAK,WAAW,KAAKF,kBAAkBC,IAAGC,EAAC;IAC7C;IAQAqF,gBAAgBtF,IAAGC,IAAG;AACpB,WAAK,iBAAiB,CAAC,KAAKD,GAAG,KAAKC,GAAG,KAAK3B,OAAO,KAAKC,MAAM;AAC9D,WAAK,WAAW,KAAKsB,gBAAgBG,IAAGC,EAAC;AACzC,WAAKvB,IAAI6G,eAAe;QAAEC,OAAO;MAAU,CAAC;IAC9C;IAEAC,kBAAkB;AAChB,WAAKN,cAAc,KAAKnF,GAAG,KAAKC,CAAC;IACnC;IAEAyF,KAAKf,IAAIC,IAAI;AACX,WAAK,iBAAiB,CAAC,KAAK5E,GAAG,KAAKC,GAAG,KAAK3B,OAAO,KAAKC,MAAM;AAC9D,YAAM;QACJG;QACAqB,kBAAkB,CAACkF,aAAaC,YAAY;MAC9C,IAAI;AACJ,WAAKlF,KAAK2E,KAAKM;AACf,WAAKhF,KAAK2E,KAAKM;AACf,UAAI,KAAK9G,WAAW,KAAK4B,IAAI,KAAK,KAAKA,IAAI,KAAK,KAAKC,IAAI,KAAK,KAAKA,IAAI,IAAI;AASzE,cAAM;UAAED,GAAAA;UAAGC,GAAAA;QAAE,IAAI,KAAKvB,IAAIiH,sBAAsB;AAChD,YAAI,KAAKvH,OAAOwH,cAAc,MAAM5F,IAAGC,EAAC,GAAG;AACzC,eAAKD,KAAK6F,KAAKC,MAAM,KAAK9F,CAAC;AAC3B,eAAKC,KAAK4F,KAAKC,MAAM,KAAK7F,CAAC;QAC7B;MACF;AAKA,UAAI;QAAED,GAAAA;QAAGC,GAAAA;MAAE,IAAI;AACf,YAAM,CAAC8F,IAAIC,EAAE,IAAI,KAAKC,mBAAmB;AACzCjG,MAAAA,MAAK+F;AACL9F,MAAAA,MAAK+F;AAEL,YAAM;QAAEnE;MAAM,IAAInD;AAClBmD,YAAMqE,OAAO,IAAI,MAAMlG,IAAGmG,QAAQ,CAAC,CAAC;AACpCtE,YAAMuE,MAAM,IAAI,MAAMnG,IAAGkG,QAAQ,CAAC,CAAC;AAEnC,WAAKf,eAAepF,IAAGC,EAAC;AAExBvB,UAAI6G,eAAe;QAAEC,OAAO;MAAU,CAAC;IACzC;IAOAJ,eAAepF,IAAGC,IAAG;IAAC;IAOtBkF,cAAcnF,IAAGC,IAAG;IAAC;IAErB,IAAIoG,gBAAgB;AAClB,aACE,CAAC,CAAC,KAAK,iBACN,KAAK,aAAa,CAAC,MAAM,KAAKrG,KAAK,KAAK,aAAa,CAAC,MAAM,KAAKC;IAEtE;IAEA,IAAIqG,kBAAkB;AACpB,aACE,CAAC,CAAC,KAAK,iBACN,KAAK,aAAa,CAAC,MAAM,KAAKhI,SAC7B,KAAK,aAAa,CAAC,MAAM,KAAKC;IAEpC;IASA0H,qBAAqB;AACnB,YAAM,CAAChB,aAAaC,YAAY,IAAI,KAAKnF;AACzC,YAAM;QAAE9C;MAAiB,IAAId;AAC7B,YAAM6D,KAAI/C,mBAAmBgI;AAC7B,YAAMhF,KAAIhD,mBAAmBiI;AAC7B,cAAQ,KAAK9F,UAAQ;QACnB,KAAK;AACH,iBAAO,CAAC,CAACY,IAAGC,EAAC;QACf,KAAK;AACH,iBAAO,CAACD,IAAGC,EAAC;QACd,KAAK;AACH,iBAAO,CAACD,IAAG,CAACC,EAAC;QACf;AACE,iBAAO,CAAC,CAACD,IAAG,CAACC,EAAC;MAClB;IACF;IAMA,IAAIsG,mBAAmB;AACrB,aAAO;IACT;IAMAnD,kBAAkBhE,WAAW,KAAKA,UAAU;AAC1C,YAAM;QACJV,KAAK;UAAEmD;QAAM;QACbhC,gBAAgB,CAACP,WAAWC,UAAU;MACxC,IAAI;AACJ,UAAI;QAAES,GAAAA;QAAGC,GAAAA;QAAG3B;QAAOC;MAAO,IAAI;AAC9BD,eAASgB;AACTf,gBAAUgB;AACVS,MAAAA,MAAKV;AACLW,MAAAA,MAAKV;AAEL,UAAI,KAAKgH,kBAAkB;AACzB,gBAAQnH,UAAQ;UACd,KAAK;AACHY,YAAAA,KAAIwG,UAAUxG,IAAG,GAAGV,YAAYhB,KAAK;AACrC2B,YAAAA,KAAIuG,UAAUvG,IAAG,GAAGV,aAAahB,MAAM;AACvC;UACF,KAAK;AACHyB,YAAAA,KAAIwG,UAAUxG,IAAG,GAAGV,YAAYf,MAAM;AACtC0B,YAAAA,KAAIuG,UAAUvG,IAAG3B,OAAOiB,UAAU;AAClC;UACF,KAAK;AACHS,YAAAA,KAAIwG,UAAUxG,IAAG1B,OAAOgB,SAAS;AACjCW,YAAAA,KAAIuG,UAAUvG,IAAG1B,QAAQgB,UAAU;AACnC;UACF,KAAK;AACHS,YAAAA,KAAIwG,UAAUxG,IAAGzB,QAAQe,SAAS;AAClCW,YAAAA,KAAIuG,UAAUvG,IAAG,GAAGV,aAAajB,KAAK;AACtC;QACJ;MACF;AAEA,WAAK0B,IAAIA,MAAKV;AACd,WAAKW,IAAIA,MAAKV;AAEd,YAAM,CAACwG,IAAIC,EAAE,IAAI,KAAKC,mBAAmB;AACzCjG,MAAAA,MAAK+F;AACL9F,MAAAA,MAAK+F;AAELnE,YAAMqE,OAAO,IAAI,MAAMlG,IAAGmG,QAAQ,CAAC,CAAC;AACpCtE,YAAMuE,MAAM,IAAI,MAAMnG,IAAGkG,QAAQ,CAAC,CAAC;AAEnC,WAAKM,UAAU;IACjB;IAEA,OAAO,aAAazG,IAAGC,IAAGyG,OAAO;AAC/B,cAAQA,OAAK;QACX,KAAK;AACH,iBAAO,CAACzG,IAAG,CAACD,EAAC;QACf,KAAK;AACH,iBAAO,CAAC,CAACA,IAAG,CAACC,EAAC;QAChB,KAAK;AACH,iBAAO,CAAC,CAACA,IAAGD,EAAC;QACf;AACE,iBAAO,CAACA,IAAGC,EAAC;MAChB;IACF;IAOA4E,wBAAwB7E,IAAGC,IAAG;AAC5B,aAAO9D,kBAAiB,aAAa6D,IAAGC,IAAG,KAAKkD,cAAc;IAChE;IAOAwD,wBAAwB3G,IAAGC,IAAG;AAC5B,aAAO9D,kBAAiB,aAAa6D,IAAGC,IAAG,MAAM,KAAKkD,cAAc;IACtE;IAEA,mBAAmB/D,UAAU;AAC3B,cAAQA,UAAQ;QACd,KAAK,IAAI;AACP,gBAAM,CAACE,WAAWC,UAAU,IAAI,KAAKM;AACrC,iBAAO,CAAC,GAAG,CAACP,YAAYC,YAAYA,aAAaD,WAAW,CAAC;QAC/D;QACA,KAAK;AACH,iBAAO,CAAC,IAAI,GAAG,GAAG,EAAE;QACtB,KAAK,KAAK;AACR,gBAAM,CAACA,WAAWC,UAAU,IAAI,KAAKM;AACrC,iBAAO,CAAC,GAAGP,YAAYC,YAAY,CAACA,aAAaD,WAAW,CAAC;QAC/D;QACA;AACE,iBAAO,CAAC,GAAG,GAAG,GAAG,CAAC;MACtB;IACF;IAEA,IAAIsH,cAAc;AAChB,aAAO,KAAKhK,WAAWgD,eAAeiH;IACxC;IAEA,IAAI1D,iBAAiB;AACnB,cAAQ,KAAKvG,WAAWgD,eAAeR,WAAW,KAAKO,gBAAgB;IACzE;IAEA,IAAII,mBAAmB;AACrB,YAAM;QACJ6G;QACA/G,gBAAgB,CAACP,WAAWC,UAAU;MACxC,IAAI;AACJ,aAAO,CAACD,YAAYsH,aAAarH,aAAaqH,WAAW;IAC3D;IAKAE,UAAU;AACR,YAAM;QACJpI,KAAK;UAAEmD;QAAM;QACbvD;QACAC;MACF,IAAI;AACJsD,YAAMvD,QAAQ,IAAI,MAAMA,OAAO6H,QAAQ,CAAC,CAAC;AACzCtE,YAAMtD,SAAS,IAAI,MAAMA,QAAQ4H,QAAQ,CAAC,CAAC;IAC7C;IAMAY,wBAAwB;AACtB,aAAO,CAAC,GAAG,CAAC;IACd;IAEA,kBAAkB;AAChB,UAAI,KAAK,cAAc;AACrB;MACF;AACA,WAAK,eAAehF,SAASiF,cAAc,KAAK;AAChD,WAAK,aAAalE,UAAUmE,IAAI,UAAU;AAI1C,YAAMC,UAAU,KAAKrI,uBACjB,CAAC,WAAW,YAAY,eAAe,YAAY,IACnD,CACE,WACA,aACA,YACA,eACA,eACA,gBACA,cACA,YAAY;AAElB,YAAMsI,SAAS,KAAKvK,WAAWwK;AAC/B,iBAAW3I,SAAQyI,SAAS;AAC1B,cAAMxI,MAAMqD,SAASiF,cAAc,KAAK;AACxC,aAAK,aAAaK,OAAO3I,GAAG;AAC5BA,YAAIoE,UAAUmE,IAAI,WAAWxI,KAAI;AACjCC,YAAI4I,aAAa,qBAAqB7I,KAAI;AAC1CC,YAAI6I,iBACF,eACA,KAAK,oBAAoBC,KAAK,MAAM/I,KAAI,GACxC;UAAE0I;QAAO,CACX;AACAzI,YAAI6I,iBAAiB,eAAeE,eAAe;UAAEN;QAAO,CAAC;AAC7DzI,YAAIgJ,WAAW;MACjB;AACA,WAAKhJ,IAAIiJ,QAAQ,KAAK,YAAY;IACpC;IAEA,oBAAoBlJ,OAAMqF,QAAO;AAC/BA,MAAAA,OAAMM,eAAe;AACrB,YAAM;QAAEwD;MAAM,IAAIC,iBAAYC;AAC9B,UAAIhE,OAAMiE,WAAW,KAAMjE,OAAMkE,WAAWJ,OAAQ;AAClD;MACF;AAEA,WAAK,UAAU7E,OAAO,KAAK;AAE3B,YAAMkF,iBAAiB,KAAKrF;AAC5B,WAAKA,eAAe;AACpB,WAAK,qBAAqB,CAACkB,OAAMoE,SAASpE,OAAMqE,OAAO;AAEvD,YAAMC,KAAK,IAAIC,gBAAgB;AAC/B,YAAMlB,SAAS,KAAKvK,WAAW0L,eAAeF,EAAE;AAEhD,WAAKhK,OAAOmK,oBAAoB,KAAK;AACrCC,aAAOjB,iBACL,eACA,KAAK,oBAAoBC,KAAK,MAAM/I,KAAI,GACxC;QAAEgK,SAAS;QAAMC,SAAS;QAAMvB;MAAO,CACzC;AACAqB,aAAOjB,iBACL,aACAoB,WACA;QAAEF,SAAS;QAAOtB;MAAO,CAC3B;AACAqB,aAAOjB,iBAAiB,eAAeE,eAAe;QAAEN;MAAO,CAAC;AAChE,WAAK,mBAAmB;QACtByB,QAAQ,KAAK5I;QACb6I,QAAQ,KAAK5I;QACb6I,YAAY,KAAKxK;QACjByK,aAAa,KAAKxK;MACpB;AACA,YAAMyK,oBAAoB,KAAK5K,OAAOM,IAAImD,MAAMoH;AAChD,YAAMC,cAAc,KAAKxK,IAAImD,MAAMoH;AACnC,WAAKvK,IAAImD,MAAMoH,SAAS,KAAK7K,OAAOM,IAAImD,MAAMoH,SAC5CT,OAAO1G,iBAAiBgC,OAAMG,MAAM,EAAEgF;AAExC,YAAME,oBAAoBA,MAAM;AAC9Bf,WAAGgB,MAAM;AACT,aAAKhL,OAAOmK,oBAAoB,IAAI;AACpC,aAAK,UAAUxF,OAAO,IAAI;AAC1B,aAAKH,eAAeqF;AACpB,aAAK7J,OAAOM,IAAImD,MAAMoH,SAASD;AAC/B,aAAKtK,IAAImD,MAAMoH,SAASC;AAExB,aAAK,sBAAsB;MAC7B;AACAV,aAAOjB,iBAAiB,aAAa4B,mBAAmB;QAAEhC;MAAO,CAAC;AAGlEqB,aAAOjB,iBAAiB,QAAQ4B,mBAAmB;QAAEhC;MAAO,CAAC;IAC/D;IAEA,QAAQnH,IAAGC,IAAG3B,OAAOC,QAAQ;AAC3B,WAAKD,QAAQA;AACb,WAAKC,SAASA;AACd,WAAKyB,IAAIA;AACT,WAAKC,IAAIA;AACT,WAAK6G,QAAQ;AACb,WAAK1D,kBAAkB;AACvB,WAAKiG,WAAW;IAClB;IAKAA,aAAa;IAAC;IAEd,wBAAwB;AACtB,UAAI,CAAC,KAAK,kBAAkB;AAC1B;MACF;AACA,YAAM;QAAET;QAAQC;QAAQC;QAAYC;MAAY,IAAI,KAAK;AACzD,WAAK,mBAAmB;AAExB,YAAMO,OAAO,KAAKtJ;AAClB,YAAMuJ,OAAO,KAAKtJ;AAClB,YAAMuJ,WAAW,KAAKlL;AACtB,YAAMmL,YAAY,KAAKlL;AACvB,UACE+K,SAASV,UACTW,SAASV,UACTW,aAAaV,cACbW,cAAcV,aACd;AACA;MACF;AAEA,WAAK1F,YAAY;QACfqG,KAAK,KAAK,QAAQlC,KAAK,MAAM8B,MAAMC,MAAMC,UAAUC,SAAS;QAC5DE,MAAM,KAAK,QAAQnC,KAAK,MAAMoB,QAAQC,QAAQC,YAAYC,WAAW;QACrEa,UAAU;MACZ,CAAC;IACH;IAEA,OAAOC,OAAO7J,IAAG;AAIf,aAAO6F,KAAKiE,MAAM9J,KAAI,GAAK,IAAI;IACjC;IAEA,oBAAoBvB,OAAMqF,QAAO;AAC/B,YAAM,CAACmB,aAAaC,YAAY,IAAI,KAAKnF;AACzC,YAAM6I,SAAS,KAAK5I;AACpB,YAAM6I,SAAS,KAAK5I;AACpB,YAAM6I,aAAa,KAAKxK;AACxB,YAAMyK,cAAc,KAAKxK;AACzB,YAAMwL,WAAW5N,kBAAiB6N,WAAW/E;AAC7C,YAAMgF,YAAY9N,kBAAiB6N,WAAW9E;AAE9C,YAAMgF,iBAAiB,KAAK,mBAAmB,KAAK9K,QAAQ;AAC5D,YAAM+K,SAASA,CAACnK,IAAGC,OAAM,CACvBiK,eAAe,CAAC,IAAIlK,KAAIkK,eAAe,CAAC,IAAIjK,IAC5CiK,eAAe,CAAC,IAAIlK,KAAIkK,eAAe,CAAC,IAAIjK,EAAC;AAE/C,YAAMmK,oBAAoB,KAAK,mBAAmB,MAAM,KAAKhL,QAAQ;AACrE,YAAMiL,YAAYA,CAACrK,IAAGC,OAAM,CAC1BmK,kBAAkB,CAAC,IAAIpK,KAAIoK,kBAAkB,CAAC,IAAInK,IAClDmK,kBAAkB,CAAC,IAAIpK,KAAIoK,kBAAkB,CAAC,IAAInK,EAAC;AAErD,UAAIqK;AACJ,UAAIC;AACJ,UAAIC,aAAa;AACjB,UAAIC,eAAe;AAEnB,cAAQhM,OAAI;QACV,KAAK;AACH+L,uBAAa;AACbF,UAAAA,YAAWA,CAACI,IAAGC,OAAM,CAAC,GAAG,CAAC;AAC1BJ,wBAAcA,CAACG,IAAGC,OAAM,CAACD,IAAGC,EAAC;AAC7B;QACF,KAAK;AACHL,UAAAA,YAAWA,CAACI,IAAGC,OAAM,CAACD,KAAI,GAAG,CAAC;AAC9BH,wBAAcA,CAACG,IAAGC,OAAM,CAACD,KAAI,GAAGC,EAAC;AACjC;QACF,KAAK;AACHH,uBAAa;AACbF,UAAAA,YAAWA,CAACI,IAAGC,OAAM,CAACD,IAAG,CAAC;AAC1BH,wBAAcA,CAACG,IAAGC,OAAM,CAAC,GAAGA,EAAC;AAC7B;QACF,KAAK;AACHF,yBAAe;AACfH,UAAAA,YAAWA,CAACI,IAAGC,OAAM,CAACD,IAAGC,KAAI,CAAC;AAC9BJ,wBAAcA,CAACG,IAAGC,OAAM,CAAC,GAAGA,KAAI,CAAC;AACjC;QACF,KAAK;AACHH,uBAAa;AACbF,UAAAA,YAAWA,CAACI,IAAGC,OAAM,CAACD,IAAGC,EAAC;AAC1BJ,wBAAcA,CAACG,IAAGC,OAAM,CAAC,GAAG,CAAC;AAC7B;QACF,KAAK;AACHL,UAAAA,YAAWA,CAACI,IAAGC,OAAM,CAACD,KAAI,GAAGC,EAAC;AAC9BJ,wBAAcA,CAACG,IAAGC,OAAM,CAACD,KAAI,GAAG,CAAC;AACjC;QACF,KAAK;AACHF,uBAAa;AACbF,UAAAA,YAAWA,CAACI,IAAGC,OAAM,CAAC,GAAGA,EAAC;AAC1BJ,wBAAcA,CAACG,IAAGC,OAAM,CAACD,IAAG,CAAC;AAC7B;QACF,KAAK;AACHD,yBAAe;AACfH,UAAAA,YAAWA,CAACI,IAAGC,OAAM,CAAC,GAAGA,KAAI,CAAC;AAC9BJ,wBAAcA,CAACG,IAAGC,OAAM,CAACD,IAAGC,KAAI,CAAC;AACjC;MACJ;AAEA,YAAMC,QAAQN,UAASxB,YAAYC,WAAW;AAC9C,YAAM8B,gBAAgBN,YAAYzB,YAAYC,WAAW;AACzD,UAAI+B,sBAAsBX,OAAO,GAAGU,aAAa;AACjD,YAAME,YAAY5O,kBAAiB0N,OAAOjB,SAASkC,oBAAoB,CAAC,CAAC;AACzE,YAAME,YAAY7O,kBAAiB0N,OAAOhB,SAASiC,oBAAoB,CAAC,CAAC;AACzE,UAAIG,SAAS;AACb,UAAIC,SAAS;AAEb,UAAIC,QAAQC;AAEZ,UAAI,CAACtH,OAAMuH,cAAc;AAIvB,cAAM;UAAEnD;UAASC;QAAQ,IAAIrE;AAC7B,cAAM,CAACwH,aAAaC,WAAW,IAAI,KAAK;AACxC,SAACJ,QAAQC,MAAM,IAAI,KAAKvG,wBACtBqD,UAAUoD,aACVnD,UAAUoD,WACZ;AACA,aAAK,mBAAmB,CAAC,IAAIrD;AAC7B,aAAK,mBAAmB,CAAC,IAAIC;MAC/B,OAAO;AACL,SAAC;UAAEgD;UAAQC;QAAO,IAAItH;MACxB;AACA,OAACqH,QAAQC,MAAM,IAAIf,UAAUc,SAASlG,aAAamG,SAASlG,YAAY;AAExE,UAAIsF,YAAY;AACd,cAAMgB,UAAU3F,KAAK4F,MAAM3C,YAAYC,WAAW;AAClDkC,iBAASC,SAASrF,KAAK6F,IACrB7F,KAAK8F,IACH9F,KAAK4F,MACHZ,cAAc,CAAC,IAAID,MAAM,CAAC,IAAIO,QAC9BN,cAAc,CAAC,IAAID,MAAM,CAAC,IAAIQ,MAChC,IAAII,SAEJ,IAAI1C,YACJ,IAAIC,WACN,GAEAgB,WAAWjB,YACXmB,YAAYlB,WACd;MACF,WAAW0B,cAAc;AACvBQ,iBACEzE,UAAUX,KAAK+F,IAAIf,cAAc,CAAC,IAAID,MAAM,CAAC,IAAIO,MAAM,GAAGpB,UAAU,CAAC,IACrEjB;MACJ,OAAO;AACLoC,iBACE1E,UACEX,KAAK+F,IAAIf,cAAc,CAAC,IAAID,MAAM,CAAC,IAAIQ,MAAM,GAC7CnB,WACA,CACF,IAAIlB;MACR;AAEA,YAAMS,WAAWrN,kBAAiB0N,OAAOf,aAAamC,MAAM;AAC5D,YAAMxB,YAAYtN,kBAAiB0N,OAAOd,cAAcmC,MAAM;AAC9DJ,4BAAsBX,OAAO,GAAGI,YAAYf,UAAUC,SAAS,CAAC;AAChE,YAAMH,OAAOyB,YAAYD,oBAAoB,CAAC;AAC9C,YAAMvB,OAAOyB,YAAYF,oBAAoB,CAAC;AAE9C,WAAK,iBAAiB,CAAC,KAAK9K,GAAG,KAAKC,GAAG,KAAK3B,OAAO,KAAKC,MAAM;AAC9D,WAAKD,QAAQkL;AACb,WAAKjL,SAASkL;AACd,WAAKzJ,IAAIsJ;AACT,WAAKrJ,IAAIsJ;AAET,WAAKzC,QAAQ;AACb,WAAK1D,kBAAkB;AAEvB,WAAKyI,YAAY;IACnB;IAKAA,cAAc;IAAC;IAKfC,gBAAgB;AACd,WAAK,UAAUC,OAAO;IACxB;IAMA,IAAIC,iBAAiB;AACnB,aAAO;IACT;IAMA,MAAMC,iBAAiB;AACrB,UAAI,KAAK3P,gBAAgB,KAAK,eAAe;AAC3C,eAAO,KAAKA;MACd;AACA,WAAKA,eAAe,IAAI4P,cAAc,IAAI;AAC1C,WAAKxN,IAAI2I,OAAO,KAAK/K,aAAa6P,OAAO,CAAC;AAC1C,YAAM;QAAEH;MAAe,IAAI;AAC3B,UAAIA,gBAAgB;AAClB,mBAAW,CAACvN,OAAM2N,IAAI,KAAKJ,gBAAgB;AACzC,gBAAM,KAAK1P,aAAa+P,UAAU5N,OAAM2N,IAAI;QAC9C;MACF;AACA,UAAI,CAAC,KAAKE,YAAY;AACpB,aAAKhQ,aAAa+P,UAAU,WAAW,KAAKE,iBAAiB,CAAC;MAChE;AACA,WAAKjQ,aAAa+P,UAAU,QAAQ;AAEpC,aAAO,KAAK/P;IACd;IAEAkQ,4BAA4B;AAC1B,WAAKlQ,cAAcmQ,gBACjB,WACA,KAAKF,iBAAiB,GACtB,eACF;IACF;IAEAG,iCAAiC;AAC/B,WAAKpQ,cAAcqQ,aAAa,SAAS;IAC3C;IAEAC,oBAAoB;AAClB,WAAKtQ,cAAcsH,OAAO;AAC1B,WAAKtH,eAAe;AAIpB,WAAK,UAAUuQ,QAAQ;IACzB;IAEAC,aAAaC,WAAW;AACtB,YAAMC,iBAAiB,KAAK1Q,cAAcoC;AAC1C,UAAIsO,gBAAgB;AAClBA,uBAAeC,OAAOF,SAAS;MACjC,OAAO;AACL,aAAKrO,IAAI2I,OAAO0F,SAAS;MAC3B;IACF;IAEAG,sBAAsB;AACpB,aAAO,KAAKxO,IAAIiH,sBAAsB;IACxC;IAMAwH,gBAAgB;AACd,UAAI,CAAC,KAAK,UAAU;AAClBC,gBAAQlM,WAAW/E,kBAAiBW,KAAK;AACzC,aAAK,WAAW,IAAIsQ,QAAQ,IAAI;AAChC,YAAI,KAAK,oBAAoB;AAC3B,eAAK,SAASC,OAAO,KAAK;AAC1B,eAAK,qBAAqB;QAC5B;MACF;AACA,aAAO,KAAK;IACd;IAEA,IAAIC,cAAc;AAChB,aAAO,KAAK,UAAUD;IACxB;IAKA,IAAIC,YAAYD,MAAM;AACpB,UAAI,CAAC,KAAK,UAAU;AAClB;MACF;AACA,WAAK,SAASA,OAAOA;IACvB;IAEA,IAAIE,iBAAiB;AACnB,aAAO,KAAK,UAAUC;IACxB;IAEA,MAAMC,kBAAkBC,MAAM;AAC5B,YAAM,KAAK,UAAUC,eAAeD,IAAI;IAC1C;IAEAE,iBAAiBC,cAAc;AAC7B,aAAO,KAAK,UAAUC,UAAUD,YAAY;IAC9C;IAEAE,aAAa;AACX,aAAO,CAAC,CAAC,KAAK,YAAY,CAAC,KAAK,SAASxJ,QAAQ;IACnD;IAEAyJ,iBAAiB;AACf,aAAO,KAAK,UAAUC,QAAQ,KAAK;IACrC;IAEAC,qBAAqB;AACnB,WAAK,UAAUC,YAAY;IAC7B;IAEA5B,mBAAmB;AACjB,aAAO,KAAKpN,gBAAiB,KAAK,aAAa,IAAIiP,QAAQ,IAAI,IAAK;IACtE;IAEAC,6BAA6B;AAC3B,UAAI,CAAC,KAAKzR,WAAW0R,kBAAkB,GAAG;AACxC;MACF;AACA,UAAI,KAAK,0BAA0B;AACjC,YAAI,KAAK1R,WAAW2R,cAAc,GAAG;AACnC,eAAK,yBAAyBzL,UAAUc,OAAO,QAAQ;QACzD;AACA;MACF;AACA,UAAI,CAAC,KAAK0I,YAAY;AACpB;MACF;AACA,WAAK,2BAA2B,KAAK,SAASkC,oBAAoB;AAClE,WAAK9P,IAAI2I,OAAO,KAAK,wBAAwB;IAC/C;IAEAoH,gCAAgC;AAC9B,WAAK,SAASA,8BAA8B;AAC5C,WAAK,2BAA2B;IAClC;IAEAC,8BAA8B;AAC5B,WAAK,0BAA0B5L,UAAUmE,IAAI,QAAQ;IACvD;IAEA,IAAI0H,UAAU;AACZ,YAAM;QACJtB,MAAM;UAAEuB;UAAUlB;UAAMmB;UAAM1O;QAAQ;MACxC,IAAI,KAAK;AACT,aAAO;QACLuN;QACAkB;QACAC;QACA1O;QACA2O,OAAO,KAAKC,eAAe;QAC3BC,SAAS,KAAKA,WAAW;MAC3B;IACF;IAEA,IAAIL,QAAQjB,MAAM;AAChB,WAAK,aAAa,IAAIU,QAAQ,IAAI;AAClC,WAAK,SAASf,OAAOK;AACrB,UAAI,KAAKpB,YAAY;AACnB,aAAKI,+BAA+B;AACpC,aAAK2B,2BAA2B;AAChC,aAAKzR,WAAWqS,cAAc,IAAI;MACpC,OAAO;AACL,aAAKzC,0BAA0B;AAC/B,aAAKiC,8BAA8B;AACnC,aAAK7R,WAAWsS,cAAc,IAAI;MACpC;IACF;IAEAC,eAAe;MAAER;MAASS;MAAUR;IAAS,GAAG;AAC9C,UAAI,CAACQ,UAAU;AACb;MACF;AACA,WAAK,aAAa,IAAIhB,QAAQ,IAAI;AAClC,WAAK,SAASiB,eAAeV,SAASC,QAAQ;AAE9C,UAAI,CAAC,KAAKhQ,qBAAqB;AAC7B;MACF;AACA,YAAM0Q,aAAa,KAAK1S,WAAW2S,sCACjC,KAAK3Q,mBACP;AACA,UAAI0Q,YAAY;AACd,aAAKE,0BAA0BF,UAAU;MAC3C;IACF;IAEA,IAAIG,mBAAmB;AACrB,aAAO,KAAK,UAAUC,cAAc;IACtC;IAEA,IAAIC,oBAAoB;AACtB,aAAO,KAAK,UAAUC,UAAU;IAClC;IAEA,IAAItD,aAAa;AACf,aACE,CAAC,CAAC,KAAK,YAAY,CAAC,KAAK,SAAS/H,QAAQ,KAAK,CAAC,KAAK,SAASqL,UAAU;IAE5E;IAEA,MAAMC,YAAYC,SAAS;AACzB,WAAK,aAAa,IAAI1B,QAAQ,IAAI;AAClC,WAAK,SAAS2B,KAAKD,OAAO;IAC5B;IAEAE,cAAc5T,YAAY6T,aAAaC,QAAW;AAChD,UAAI,KAAK5D,YAAY;AACnB,aAAK1P,WAAWoT,cAAc,MAAM5T,YAAY6T,UAAU;MAC5D;IACF;IAEAE,yBAAyBC,UAAU;AACjC,WAAK,SAASC,kBAAkBD,QAAQ;IAC1C;IAEAE,WAAWC,YAAY;AACrB,UAAI,KAAKd,kBAAkB;AACzB,cAAMe,sBAAsB;AAC5B,cAAMC,uBAAuB;AAC7B,cAAM,CAAA,EAAA,EAAA,EAAOC,GAAG,IAAIH,WAAWI;AAC/B,cAAM,CAACrR,SAAS,IAAI,KAAKO;AACzB,cAAM,CAACL,KAAK,IAAI,KAAKM;AACrB,cAAM8Q,MAAMpR,QAAQF,YAAY;AAChC,cAAMuR,MAAMH,MAAMD;AAClB,cAAMK,MAAMF,MAAMJ;AAClBD,mBAAWQ,QAAQ;UACjBC,UAAU,KAAKrC,QAAQjB;UACvBvN,SAAS,KAAKwO,QAAQxO;UACtBwQ,MAAM,CAACC,KAAKC,KAAKC,KAAKJ,GAAG;QAC3B;MACF;IACF;IAEAlB,0BAA0B;MAAEuB,OAAO;QAAEC;QAAU7Q;MAAQ;IAAE,GAAG;AAC1D,WAAK,SAASkN,OAAOlN,UAAU,OAAO6Q;IACxC;IAEA,IAAIC,2BAA2B;AAC7B,aAAO,KAAK7S,OAAO8S;IACrB;IAMA/E,SAAS;AACP,YAAMzN,MAAO,KAAKA,MAAMqD,SAASiF,cAAc,KAAK;AACpDtI,UAAI4I,aAAa,yBAAyB,MAAM,KAAKlI,YAAY,GAAG;AACpEV,UAAIyS,YAAY,KAAK1S;AACrBC,UAAI4I,aAAa,MAAM,KAAKjJ,EAAE;AAC9BK,UAAIgJ,WAAW,KAAK,YAAY,KAAK;AACrChJ,UAAI4I,aAAa,QAAQ,aAAa;AACtC,UAAI,KAAK8J,eAAe;AACtB1S,YAAI4I,aAAa,gBAAgB,KAAK8J,aAAa;MACrD;AACA,UAAI,CAAC,KAAKzU,YAAY;AACpB+B,YAAIoE,UAAUmE,IAAI,QAAQ;MAC5B;AAEA,WAAKvD,gBAAgB;AACrB,WAAK,mBAAmB;AAExB,YAAM,CAACuB,aAAaC,YAAY,IAAI,KAAKnF;AACzC,UAAI,KAAKoD,iBAAiB,QAAQ,GAAG;AACnCzE,YAAImD,MAAMwP,WAAW,IAAK,MAAMnM,eAAgBD,aAAakB,QAC3D,CACF,CAAC;AACDzH,YAAImD,MAAMyP,YAAY,IAAK,MAAMrM,cAAeC,cAAciB,QAC5D,CACF,CAAC;MACH;AAEA,YAAM,CAACxB,IAAIC,EAAE,IAAI,KAAKmC,sBAAsB;AAC5C,WAAK1B,UAAUV,IAAIC,EAAE;AAErB2M,iBAAW,MAAM7S,KAAK,CAAC,WAAW,eAAe,UAAU,CAAC;AAE5D,UAAI,KAAK8S,eAAe,KAAK5U,WAAW6U,sBAAsB;AAC5D,aAAK,kBAAkB,IAAIC,aAAa;UACtC3E,WAAWrO;UACXiT,oBAAoBA,MAAM,CAAC,KAAKvV;UAChCwV,cAAc,KAAK,yBAAyBpK,KAAK,IAAI;UACrDqK,YAAY,KAAK,oBAAoBrK,KAAK,IAAI;UAC9CsK,YAAY,KAAK,uBAAuBtK,KAAK,IAAI;UACjDL,QAAQ,KAAKvK,WAAWwK;QAC1B,CAAC;MACH;AAEA,WAAKiH,2BAA2B;AAChC,WAAKzR,WAAWmV,gBAAgBC,KAAK;AAErC,aAAOtT;IACT;IAEA,2BAA2B;AACzB,WAAK,mBAAmB;QACtBkK,QAAQ,KAAK5I;QACb6I,QAAQ,KAAK5I;QACb6I,YAAY,KAAKxK;QACjByK,aAAa,KAAKxK;MACpB;AACA,WAAK,UAAUwE,OAAO,KAAK;AAC3B,WAAK3E,OAAOmK,oBAAoB,KAAK;IACvC;IAEA,oBAAoB0J,SAASC,cAAcC,UAAU;AAGnD,YAAMC,iBAAiB;AACvB,UAAIC,SACFD,kBAAkBD,WAAWD,gBAAgB,IAAIE;AACnD,UAAIC,WAAW,GAAG;AAChB;MACF;AAEA,YAAMnI,iBAAiB,KAAK,mBAAmB,KAAK9K,QAAQ;AAC5D,YAAM+K,SAASA,CAACnK,IAAGC,OAAM,CACvBiK,eAAe,CAAC,IAAIlK,KAAIkK,eAAe,CAAC,IAAIjK,IAC5CiK,eAAe,CAAC,IAAIlK,KAAIkK,eAAe,CAAC,IAAIjK,EAAC;AAI/C,YAAM,CAACgF,aAAaC,YAAY,IAAI,KAAKnF;AACzC,YAAM6I,SAAS,KAAK5I;AACpB,YAAM6I,SAAS,KAAK5I;AACpB,YAAM6I,aAAa,KAAKxK;AACxB,YAAMyK,cAAc,KAAKxK;AAEzB,YAAMwL,WAAW5N,kBAAiB6N,WAAW/E;AAC7C,YAAMgF,YAAY9N,kBAAiB6N,WAAW9E;AAC9CmN,eAASxM,KAAK6F,IACZ7F,KAAK8F,IAAI0G,QAAQ,IAAIvJ,YAAY,IAAIC,WAAW,GAChDgB,WAAWjB,YACXmB,YAAYlB,WACd;AACA,YAAMS,WAAWrN,kBAAiB0N,OAAOf,aAAauJ,MAAM;AAC5D,YAAM5I,YAAYtN,kBAAiB0N,OAAOd,cAAcsJ,MAAM;AAC9D,UAAI7I,aAAaV,cAAcW,cAAcV,aAAa;AACxD;MACF;AAEA,WAAK,iBAAiB,CAACH,QAAQC,QAAQC,YAAYC,WAAW;AAC9D,YAAMuJ,oBAAoBnI,OAAOrB,aAAa,GAAGC,cAAc,CAAC;AAChE,YAAMwJ,UAAUpW,kBAAiB0N,OAAOjB,SAAS0J,kBAAkB,CAAC,CAAC;AACrE,YAAME,UAAUrW,kBAAiB0N,OAAOhB,SAASyJ,kBAAkB,CAAC,CAAC;AACrE,YAAMG,uBAAuBtI,OAAOX,WAAW,GAAGC,YAAY,CAAC;AAE/D,WAAKzJ,IAAIuS,UAAUE,qBAAqB,CAAC;AACzC,WAAKxS,IAAIuS,UAAUC,qBAAqB,CAAC;AACzC,WAAKnU,QAAQkL;AACb,WAAKjL,SAASkL;AAEd,WAAK3C,QAAQ;AACb,WAAK1D,kBAAkB;AAEvB,WAAKyI,YAAY;IACnB;IAEA,yBAAyB;AACvB,WAAK,UAAU9I,OAAO,IAAI;AAC1B,WAAK3E,OAAOmK,oBAAoB,IAAI;AACpC,WAAK,sBAAsB;IAC7B;IAMAmK,YAAY5O,QAAO;AACjB,YAAM;QAAE8D;MAAM,IAAIC,iBAAYC;AAC9B,UAAIhE,OAAMiE,WAAW,KAAMjE,OAAMkE,WAAWJ,OAAQ;AAElD9D,QAAAA,OAAMM,eAAe;AACrB;MACF;AACA,WAAK,kBAAkB;AAEvB,UAAI,KAAKxB,cAAc;AACrB,aAAK,kBAAkBkB,MAAK;AAC5B;MACF;AAEA,WAAK,sBAAsBA,MAAK;IAClC;IAEA,sBAAsBA,QAAO;AAC3B,YAAM;QAAE8D;MAAM,IAAIC,iBAAYC;AAC9B,UACGhE,OAAMkE,WAAW,CAACJ,SACnB9D,OAAM6O,YACL7O,OAAM8O,WAAWhL,OAClB;AACA,aAAKxJ,OAAOyU,eAAe,IAAI;MACjC,OAAO;AACL,aAAKzU,OAAO2F,YAAY,IAAI;MAC9B;IACF;IAEA,kBAAkBD,QAAO;AACvB,YAAM;QAAE1H;MAAW,IAAI;AACvB,WAAKQ,WAAWkW,iBAAiB;AACjC,UAAIC,qBAAqB;AAEzB,YAAM3K,KAAK,IAAIC,gBAAgB;AAC/B,YAAMlB,SAAS,KAAKvK,WAAW0L,eAAeF,EAAE;AAChD,YAAM4K,OAAO;QAAEtK,SAAS;QAAMD,SAAS;QAAOtB;MAAO;AACrD,YAAM8L,aAAaC,CAAAA,OAAK;AACtB9K,WAAGgB,MAAM;AAET,aAAK,iBAAiB;AACtB,aAAK,kBAAkB;AACvB,YAAI,CAAC,KAAKxM,WAAWuW,eAAe,GAAG;AACrC,eAAK,sBAAsBD,EAAC;QAC9B;AACA,YAAIH,oBAAoB;AACtB,eAAKK,gBAAgB;QACvB;MACF;AAEA,UAAIhX,YAAY;AACd,aAAK,aAAa0H,OAAMuP;AACxB,aAAK,aAAavP,OAAMwP;AACxB,aAAK,iBAAiBxP,OAAMyP;AAC5B,aAAK,mBAAmBzP,OAAM0P;AAC9BhL,eAAOjB,iBACL,eACA2L,CAAAA,OAAK;AACH,cAAI,CAACH,oBAAoB;AACvBA,iCAAqB;AACrB,iBAAKnW,WAAWoT,cACd,MACmB,MACA,KACrB;AACA,iBAAKyD,iBAAiB;UACxB;AACA,gBAAM;YAAEJ,SAASrT;YAAGsT,SAASrT;YAAGsT;UAAU,IAAIL;AAC9C,cAAIK,cAAc,KAAK,gBAAgB;AACrC5K,sBAAUuK,EAAC;AACX;UACF;AACA,gBAAM,CAACvO,IAAIC,EAAE,IAAI,KAAKC,wBACpB7E,KAAI,KAAK,YACTC,KAAI,KAAK,UACX;AACA,eAAK,aAAaD;AAClB,eAAK,aAAaC;AAClB,eAAKrD,WAAW8W,oBAAoB/O,IAAIC,EAAE;QAC5C,GACAoO,IACF;AACAxK,eAAOjB,iBACL,aACAoB,WACAqK,IACF;AACAxK,eAAOjB,iBACL,eAEA2L,CAAAA,OAAK;AACH,cAAIA,GAAEM,gBAAgB,KAAK,kBAAkB;AAK3C,gBAAI,KAAK,iBAAiBN,GAAES,WAAW;AACrCV,yBAAWC,EAAC;YACd;UACF;AACAvK,oBAAUuK,EAAC;QACb,GACAF,IACF;MACF;AAEA,YAAM7J,oBAAoB+J,CAAAA,OAAK;AAC7B,YAAI,CAAC,KAAK,kBAAkB,KAAK,mBAAmBA,GAAEK,WAAW;AAC/DN,qBAAWC,EAAC;AACZ;QACF;AACAvK,kBAAUuK,EAAC;MACb;AACA1K,aAAOjB,iBAAiB,aAAa4B,mBAAmB;QAAEhC;MAAO,CAAC;AAIlEqB,aAAOjB,iBAAiB,QAAQ4B,mBAAmB;QAAEhC;MAAO,CAAC;IAC/D;IAEAsM,mBAAmB;IAAC;IAEpBL,kBAAkB;IAAC;IAEnB3M,YAAY;AAIV,UAAI,KAAK,mBAAmB;AAC1BmN,qBAAa,KAAK,iBAAiB;MACrC;AACA,WAAK,oBAAoBC,WAAW,MAAM;AACxC,aAAK,oBAAoB;AACzB,aAAKzV,QAAQ0V,gBAAgB,IAAI;MAMnC,GAAG,CAAC;IACN;IAEAC,sBAAsB3V,QAAQ4B,IAAGC,IAAG;AAClC7B,aAAO4V,aAAa,IAAI;AACxB,WAAKhU,IAAIA;AACT,WAAKC,IAAIA;AACT,WAAKmD,kBAAkB;AACvB,WAAK+B,cAAc;IACrB;IAQA8O,QAAQtP,IAAIC,IAAIxF,WAAW,KAAKA,UAAU;AACxC,YAAM8U,QAAQ,KAAKtN;AACnB,YAAM,CAACtH,WAAWC,UAAU,IAAI,KAAKM;AACrC,YAAM,CAACL,OAAOC,KAAK,IAAI,KAAKK;AAC5B,YAAMqU,SAASxP,KAAKuP;AACpB,YAAME,SAASxP,KAAKsP;AACpB,YAAMlU,KAAI,KAAKA,IAAIV;AACnB,YAAMW,KAAI,KAAKA,IAAIV;AACnB,YAAMjB,QAAQ,KAAKA,QAAQgB;AAC3B,YAAMf,SAAS,KAAKA,SAASgB;AAE7B,cAAQH,UAAQ;QACd,KAAK;AACH,iBAAO,CACLY,KAAImU,SAAS3U,OACbD,aAAaU,KAAImU,SAAS7V,SAASkB,OACnCO,KAAImU,SAAS7V,QAAQkB,OACrBD,aAAaU,KAAImU,SAAS3U,KAAK;QAEnC,KAAK;AACH,iBAAO,CACLO,KAAIoU,SAAS5U,OACbD,aAAaU,KAAIkU,SAAS1U,OAC1BO,KAAIoU,SAAS7V,SAASiB,OACtBD,aAAaU,KAAIkU,SAAS7V,QAAQmB,KAAK;QAE3C,KAAK;AACH,iBAAO,CACLO,KAAImU,SAAS7V,QAAQkB,OACrBD,aAAaU,KAAImU,SAAS3U,OAC1BO,KAAImU,SAAS3U,OACbD,aAAaU,KAAImU,SAAS7V,SAASkB,KAAK;QAE5C,KAAK;AACH,iBAAO,CACLO,KAAIoU,SAAS7V,SAASiB,OACtBD,aAAaU,KAAIkU,SAAS7V,QAAQmB,OAClCO,KAAIoU,SAAS5U,OACbD,aAAaU,KAAIkU,SAAS1U,KAAK;QAEnC;AACE,gBAAM,IAAI4U,MAAM,kBAAkB;MACtC;IACF;IAEAC,uBAAuB3D,MAAMpR,YAAY;AACvC,YAAM,CAACgV,IAAIC,IAAIC,KAAIC,GAAE,IAAI/D;AAEzB,YAAMrS,QAAQmW,MAAKF;AACnB,YAAMhW,SAASmW,MAAKF;AAEpB,cAAQ,KAAKpV,UAAQ;QACnB,KAAK;AACH,iBAAO,CAACmV,IAAIhV,aAAamV,KAAIpW,OAAOC,MAAM;QAC5C,KAAK;AACH,iBAAO,CAACgW,IAAIhV,aAAaiV,IAAIjW,QAAQD,KAAK;QAC5C,KAAK;AACH,iBAAO,CAACmW,KAAIlV,aAAaiV,IAAIlW,OAAOC,MAAM;QAC5C,KAAK;AACH,iBAAO,CAACkW,KAAIlV,aAAamV,KAAInW,QAAQD,KAAK;QAC5C;AACE,gBAAM,IAAI+V,MAAM,kBAAkB;MACtC;IACF;IAOAM,aAAa;AACX,aAAO,KAAKV,QAAQ,GAAG,CAAC;IAC1B;IAEAlF,iBAAiB;AACf,aACE,KAAKD,SACL3S,kBAAiBe,cAAc0X,QAC7B,KAAKhY,WAAWmS,eAAe,KAAKD,KAAK,CAC3C;IAEJ;IAKA+F,iBAAiB;AACf,WAAK,UAAUA,eAAe;IAChC;IAEAC,UAAU;AACR,YAAM;QACJnG,SAAS;UAAEjB,MAAMqH;UAAKjG,OAAAA;UAAOD;UAAMG;UAAS7O;UAASyO;QAAS;QAC9D5L,KAAK3E;QACLG;QACAQ;QACAE;MACF,IAAI;AACJ,aAAO;QACLb;QACAG;QACAmS,MAAM,KAAKgE,WAAW;QACtB/F;QACAoG,aAAa;UAAED;QAAI;QACnB/V;QACAE,kBAAkB2P,QAAQ3P;QAC1BkQ,UAAU,CAACjP;QACX2O,OAAAA;QACAE;MACF;IACF;IAMAiG,UAAUC,OAAO;IAAC;IAMlB3Q,UAAU;AACR,aAAO;IACT;IAMA4Q,iBAAiB;AACf,UAAI,KAAK1Q,aAAa,GAAG;AACvB,eAAO;MACT;AACA,WAAKrG,OAAOgX,gBAAgB,KAAK;AACjC,WAAK,gBAAgB;AAErB,aAAO;IACT;IAMAC,kBAAkB;AAChB,UAAI,CAAC,KAAK5Q,aAAa,GAAG;AACxB,eAAO;MACT;AACA,WAAKrG,OAAOgX,gBAAgB,IAAI;AAChC,WAAK,gBAAgB;AAErB,aAAO;IACT;IAMA3Q,eAAe;AACb,aAAO,KAAK;IACd;IAOA6Q,0BAA0B;AACxB,aAAO,KAAK;IACd;IAMAC,mBAAmB;AACjB,aAAO,KAAK7W,OAAO,CAAC,KAAKwB;IAC3B;IAEA,IAAIsV,aAAa;AACf,YAAM;QAAEpP;QAAKF;QAAMuP;QAAQC;MAAM,IAAI,KAAKxI,oBAAoB;AAC9D,YAAM;QAAEyI;QAAaC;MAAW,IAAIpN;AACpC,aAAOtC,OAAO0P,cAAcF,QAAQ,KAAKtP,MAAMuP,eAAeF,SAAS;IACzE;IAEA,qBAAqB;AACnB,UAAI,KAAK,YAAY,CAAC,KAAK/W,KAAK;AAC9B;MACF;AACA,WAAK,WAAW,IAAI2J,gBAAgB;AACpC,YAAMlB,SAAS,KAAKvK,WAAW0L,eAAe,KAAK,QAAQ;AAE3D,WAAK5J,IAAI6I,iBAAiB,WAAW,KAAK1D,QAAQ2D,KAAK,IAAI,GAAG;QAAEL;MAAO,CAAC;AACxE,WAAKzI,IAAI6I,iBAAiB,YAAY,KAAKvD,SAASwD,KAAK,IAAI,GAAG;QAAEL;MAAO,CAAC;IAC5E;IAOA0O,UAAU;AACR,WAAK,mBAAmB;IAC1B;IAMAC,OAAOC,QAAQ;IAAC;IAKhBzY,SAAS;IAAC;IAMV0Y,mBAAmB;AACjB,aAAO;QACL3X,IAAI,KAAKO;QACTuB,SAAS;QACT3B,WAAW,KAAKA;QAChB4Q,UAAU,KAAK1S,cAAc0S,YAAY;MAC3C;IACF;IAYAtB,UAAUD,eAAe,OAAOoI,UAAU,MAAM;AAC9C,aAAO;QACLC,gBAAgB,KAAK3V;QACrB/B,WAAW,KAAKA;QAChBmS,MAAM,KAAKgE,WAAW;QACtBvV,UAAU,KAAKA;QACf+W,oBAAoB,KAAKpX;QACzBqQ,UAAU,KAAK1S,cAAc0S,YAAY;MAC3C;IACF;IAWA,aAAagH,YAAY/I,MAAMjP,QAAQO,WAAW;AAChD,YAAMkC,SAAS,IAAI,KAAKtD,UAAUW,YAAY;QAC5CE;QACAC,IAAID,OAAO4C,UAAU;QACrBrC;QACAC,qBAAqByO,KAAKzO;QAC1BI,cAAcqO,KAAKrO;QACnBE,kBAAkBmO,KAAKnO;MACzB,CAAC;AACD2B,aAAOzB,WAAWiO,KAAKjO;AACvByB,aAAO,qBAAqBwM,KAAKgJ;AACjCxV,aAAOxE,UAAUgR,KAAKiJ,UAAU;AAEhC,YAAM,CAAChX,WAAWC,UAAU,IAAIsB,OAAOhB;AACvC,YAAM,CAACG,IAAGC,IAAG3B,OAAOC,MAAM,IAAIsC,OAAOyT,uBACnCjH,KAAKsD,MACLpR,UACF;AAEAsB,aAAOb,IAAIA,KAAIV;AACfuB,aAAOZ,IAAIA,KAAIV;AACfsB,aAAOvC,QAAQA,QAAQgB;AACvBuB,aAAOtC,SAASA,SAASgB;AAEzB,aAAOsB;IACT;IAOA,IAAI0V,kBAAkB;AACpB,aACE,CAAC,CAAC,KAAK3X,wBAAwB,KAAKuB,WAAW,KAAK2N,UAAU,MAAM;IAExE;IAMAlK,SAAS;AACP,WAAK,UAAUwF,MAAM;AACrB,WAAK,WAAW;AAEhB,UAAI,CAAC,KAAK7E,QAAQ,GAAG;AAGnB,aAAKC,OAAO;MACd;AACA,UAAI,KAAKpG,QAAQ;AACf,aAAKA,OAAOwF,OAAO,IAAI;MACzB,OAAO;AACL,aAAKhH,WAAW4Z,aAAa,IAAI;MACnC;AACA,WAAKC,iBAAiB;AAEtB,UAAI,KAAK,mBAAmB;AAC1B7C,qBAAa,KAAK,iBAAiB;AACnC,aAAK,oBAAoB;MAC3B;AACA,WAAK,cAAc;AACnB,WAAKhH,kBAAkB;AACvB,UAAI,KAAK,oBAAoB;AAC3B,mBAAW8J,WAAW,KAAK,mBAAmBC,OAAO,GAAG;AACtD/C,uBAAa8C,OAAO;QACtB;AACA,aAAK,qBAAqB;MAC5B;AACA,WAAKtY,SAAS;AACd,WAAK,eAAeyO,QAAQ;AAC5B,WAAK,gBAAgB;AACrB,WAAK,iBAAiBjJ,OAAO;AAC7B,WAAK,kBAAkB;IACzB;IAKA,IAAI4N,cAAc;AAChB,aAAO;IACT;IAKAoF,gBAAgB;AACd,UAAI,KAAKpF,aAAa;AACpB,aAAK,gBAAgB;AACrB,aAAK,aAAa1O,UAAUc,OAAO,QAAQ;MAC7C;IACF;IAEA,IAAIiT,kBAAkB;AACpB,aAAO;IACT;IAMA,IAAIC,wBAAwB;AAC1B,aAAO,KAAKla,WAAWma,cAAc,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7D;IAEA,IAAIC,8BAA8B;AAChC,YAAM;QACJF,uBAAuB,CAACG,MAAMC,IAAI;MACpC,IAAI;AACJ,YAAM,CAACtG,KAAKC,KAAKC,KAAKJ,GAAG,IAAI,KAAKiE,WAAW;AAC7C,aAAO,CACLxY,kBAAiB0N,OAAO+G,OAAOE,MAAMF,OAAOqG,IAAI,GAChD9a,kBAAiB0N,OAAOgH,OAAOH,MAAMG,QAAQ,IAAIqG,KAAK,CAAC;IAE3D;IAEA,IAAIC,qBAAqB;AACvB,aAAO,KAAKva,WAAWwa,iBACrB,KAAKrI,eAAe,GACpB,KAAKC,OACP;IACF;IAEA,IAAIqI,uBAAuB;AACzB,aAAO,KAAK,SAASC;IACvB;IAEA,IAAID,qBAAqBE,KAAK;AAC5B,WAAK,SAASD,8BAA8BC;IAC9C;IAEAC,0BAA0B;AACxB,aAAO,KAAK,SAASA,wBAAwB;IAC/C;IAEA,IAAIC,qBAAqB;AACvB,aAAO,KAAK,SAASA;IACvB;IAEA,IAAIC,qBAAqB;AACvB,aAAO,KAAKhZ;IACd;IAEAiZ,uBAAuB7H,SAAS;AAC9B,WAAK,UAAU6H,uBAAuB7H,OAAO;IAC/C;IAMA8H,QAAQ9T,QAAO;AACb,UACE,CAAC,KAAK0N,eACN1N,OAAMG,WAAW,KAAKvF,OACtBoF,OAAM+T,QAAQ,SACd;AACA;MACF;AACA,WAAKjb,WAAWmH,YAAY,IAAI;AAChC,WAAK,mBAAmB;QACtB6E,QAAQ,KAAK5I;QACb6I,QAAQ,KAAK5I;QACb6I,YAAY,KAAKxK;QACjByK,aAAa,KAAKxK;MACpB;AACA,YAAMuZ,WAAW,KAAK,aAAaA;AACnC,UAAI,CAAC,KAAK,iBAAiB;AACzB,aAAK,kBAAkBC,MAAMC,KAAKF,QAAQ;AAC1C,cAAMG,sBAAsB,KAAK,gBAAgBzQ,KAAK,IAAI;AAC1D,cAAM0Q,mBAAmB,KAAK,aAAa1Q,KAAK,IAAI;AACpD,cAAML,SAAS,KAAKvK,WAAWwK;AAC/B,mBAAW1I,OAAO,KAAK,iBAAiB;AACtC,gBAAMD,QAAOC,IAAIyZ,aAAa,mBAAmB;AACjDzZ,cAAI4I,aAAa,QAAQ,YAAY;AACrC5I,cAAI6I,iBAAiB,WAAW0Q,qBAAqB;YAAE9Q;UAAO,CAAC;AAC/DzI,cAAI6I,iBAAiB,QAAQ2Q,kBAAkB;YAAE/Q;UAAO,CAAC;AACzDzI,cAAI6I,iBAAiB,SAAS,KAAK,cAAcC,KAAK,MAAM/I,KAAI,GAAG;YACjE0I;UACF,CAAC;AACDzI,cAAI4I,aAAa,gBAAgBnL,kBAAiBY,aAAa0B,KAAI,CAAC;QACtE;MACF;AAIA,YAAM2Z,QAAQ,KAAK,gBAAgB,CAAC;AACpC,UAAIC,gBAAgB;AACpB,iBAAW3Z,OAAOoZ,UAAU;AAC1B,YAAIpZ,QAAQ0Z,OAAO;AACjB;QACF;AACAC;MACF;AACA,YAAMC,qBACD,MAAM,KAAKlZ,WAAW,KAAK+D,kBAAkB,MAAO,MACtD,KAAK,gBAAgBoV,SAAS;AAEjC,UAAID,sBAAsBD,eAAe;AAGvC,YAAIC,oBAAoBD,eAAe;AACrC,mBAASG,KAAI,GAAGA,KAAIH,gBAAgBC,mBAAmBE,MAAK;AAC1D,iBAAK,aAAanR,OAAO,KAAK,aAAaoR,iBAAiB;UAC9D;QACF,WAAWH,oBAAoBD,eAAe;AAC5C,mBAASG,KAAI,GAAGA,KAAIF,oBAAoBD,eAAeG,MAAK;AAC1D,iBAAK,aAAaC,kBAAkBxL,OAClC,KAAK,aAAayL,gBACpB;UACF;QACF;AAEA,YAAIF,KAAI;AACR,mBAAWG,SAASb,UAAU;AAC5B,gBAAMpZ,MAAM,KAAK,gBAAgB8Z,IAAG;AACpC,gBAAM/Z,QAAOC,IAAIyZ,aAAa,mBAAmB;AACjDQ,gBAAMrR,aAAa,gBAAgBnL,kBAAiBY,aAAa0B,KAAI,CAAC;QACxE;MACF;AAEA,WAAK,oBAAoB,CAAC;AAC1B,WAAK,+BAA+B;AACpC,WAAK,aAAaga,kBAAkBvD,MAAM;QAAE0D,cAAc;MAAK,CAAC;AAChE9U,MAAAA,OAAMM,eAAe;AACrBN,MAAAA,OAAM+U,yBAAyB;IACjC;IAEA,gBAAgB/U,QAAO;AACrB3H,wBAAiBkB,wBAAwByb,KAAK,MAAMhV,MAAK;IAC3D;IAEA,aAAaA,QAAO;AAClB,UACE,KAAK,gCACLA,OAAMI,eAAe6U,eAAe,KAAK,cACzC;AACA,aAAK,cAAc;MACrB;IACF;IAEA,cAActa,OAAM;AAClB,WAAK,sBAAsB,KAAK,+BAA+BA,QAAO;IACxE;IAEA,oBAAoBoE,OAAO;AACzB,UAAI,CAAC,KAAK,iBAAiB;AACzB;MACF;AACA,iBAAWnE,OAAO,KAAK,iBAAiB;AACtCA,YAAIgJ,WAAW7E;MACjB;IACF;IAEArF,oBAAoBwC,IAAGC,IAAG;AACxB,UAAI,CAAC,KAAK,8BAA8B;AACtC;MACF;AACA,WAAK,oBAAoB,KAAK,qBAAqB;QACjDkL,QAAQnL;QACRoL,QAAQnL;QACRoL,cAAc;MAChB,CAAC;IACH;IAEA,gBAAgB;AACd,WAAK,+BAA+B;AACpC,WAAK,oBAAoB,EAAE;AAC3B,WAAK,sBAAsB;IAC7B;IAEApN,4BAA4B;AAC1B,WAAK,cAAc;AACnB,WAAKS,IAAIwW,MAAM;IACjB;IAKA8D,SAAS;AACP,UAAI,KAAK5c,cAAc,KAAKE,cAAc;AACxC,aAAKA,aAAa2c,KAAK;AACvB;MACF;AACA,WAAK7c,aAAa;AAClB,WAAKwa,cAAc;AACnB,WAAKlY,KAAKoE,UAAUmE,IAAI,gBAAgB;AACxC,UAAI,CAAC,KAAK3K,cAAc;AACtB,aAAK2P,eAAe,EAAEiN,KAAK,MAAM;AAC/B,cAAI,KAAKxa,KAAKoE,UAAUqW,SAAS,gBAAgB,GAAG;AAIlD,iBAAK7c,cAAc2c,KAAK;UAC1B;QACF,CAAC;AACD;MACF;AACA,WAAK3c,cAAc2c,KAAK;AACxB,WAAK,UAAUG,mBAAmB,KAAK;IACzC;IAEAlE,QAAQ;AACN,UAAI,KAAKxW,OAAO,CAAC,KAAKA,IAAIya,SAASpX,SAASsX,aAAa,GAAG;AAC1DxF,mBAAW,MAAM,KAAKnV,KAAKwW,MAAM;UAAEoE,eAAe;QAAK,CAAC,GAAG,CAAC;MAC9D;IACF;IAKAC,WAAW;AACT,UAAI,CAAC,KAAKnd,YAAY;AACpB;MACF;AACA,WAAKA,aAAa;AAClB,WAAK,cAAc0G,UAAUmE,IAAI,QAAQ;AACzC,WAAKvI,KAAKoE,UAAUc,OAAO,gBAAgB;AAC3C,UAAI,KAAKlF,KAAKya,SAASpX,SAASsX,aAAa,GAAG;AAG9C,aAAKzc,WAAW2G,aAAa7E,IAAIwW,MAAM;UACrCoE,eAAe;QACjB,CAAC;MACH;AACA,WAAKhd,cAAc0V,KAAK;AACxB,WAAK,UAAUoH,mBAAmB,IAAI;AACtC,WAAK3C,iBAAiB;IACxB;IAEAA,mBAAmB;AACjB,UAAI,KAAKnK,YAAY;AACnB,aAAK1P,WAAWoT,cAAc,IAAI;MACpC;IACF;IAOAwJ,aAAaC,MAAM5W,OAAO;IAAC;IAM3B6W,iBAAiB;IAAC;IAMlBC,gBAAgB;IAAC;IAQjB,IAAIC,mBAAmB;AACrB,aAAO;IACT;IAKAC,kBAAkB;AAChB,UAAI,CAAC,KAAKD,kBAAkB;AAC1B;MACF;AACA,WAAKzE,eAAe;AACpB,WAAKzW,IAAIwW,MAAM;IACjB;IAMA4E,SAAShW,QAAO;AACd,UAAIA,OAAMG,OAAO8V,aAAa,UAAU;AAEtC;MACF;AACA,WAAKF,gBAAgB;AACrB,WAAKzb,OAAO4b,cAAc;QACxBzZ,MAAM,KAAKrC,YAAYsC;QACvByZ,QAAQ,KAAKjX;MACf,CAAC;IACH;IAKAkX,uBAAuB;AACrB,aAAO,KAAKxb;IACd;IAMA,IAAIyb,aAAa;AACf,aAAO,KAAKzb;IACd;IAMA,IAAI0b,YAAY;AACd,aAAO,KAAK;IACd;IAMA,IAAIA,UAAUvX,OAAO;AACnB,WAAK,aAAaA;AAClB,UAAI,CAAC,KAAKzE,QAAQ;AAChB;MACF;AACA,UAAIyE,OAAO;AACT,aAAKzE,OAAO2F,YAAY,IAAI;AAC5B,aAAK3F,OAAOic,gBAAgB,IAAI;MAClC,OAAO;AACL,aAAKjc,OAAOic,gBAAgB,IAAI;MAClC;IACF;IAEA,WAAWrQ,WAAW;AACpB,aAAO;IACT;IAEA,OAAOsQ,0BAA0B;AAC/B,aAAO;IACT;IAMA,IAAIC,uBAAuB;AACzB,aAAO;QAAEC,QAAQ;MAAQ;IAC3B;IAMA,IAAIC,qBAAqB;AACvB,aAAO;IACT;IAEAC,iBAAiBrN,MAAMsN,WAAW,OAAO;AACvC,UAAIA,UAAU;AACZ,aAAK,uBAAuB,oBAAIC,IAAI;AACpC,cAAM;UAAEJ;QAAO,IAAInN;AACnB,YAAIqJ,UAAU,KAAK,mBAAmBmE,IAAIL,MAAM;AAChD,YAAI9D,SAAS;AACX9C,uBAAa8C,OAAO;QACtB;AACAA,kBAAU7C,WAAW,MAAM;AACzB,eAAK6G,iBAAiBrN,IAAI;AAC1B,eAAK,mBAAmByN,OAAON,MAAM;AACrC,cAAI,KAAK,mBAAmBO,SAAS,GAAG;AACtC,iBAAK,qBAAqB;UAC5B;QACF,GAAG5e,kBAAiBiB,iBAAiB;AACrC,aAAK,mBAAmB4d,IAAIR,QAAQ9D,OAAO;AAC3C;MACF;AACArJ,WAAKoM,SAAS,KAAKrZ;AACnB,WAAKxD,WAAWqe,UAAUC,SAAS,mBAAmB;QACpDC,QAAQ;QACRC,SAAS;UACP3B,MAAM;UACNpM;QACF;MACF,CAAC;IACH;IAMA4L,KAAKoC,UAAU,KAAK1e,YAAY;AAC9B,WAAK+B,IAAIoE,UAAUC,OAAO,UAAU,CAACsY,OAAO;AAC5C,WAAK1e,aAAa0e;IACpB;IAEAC,SAAS;AACP,UAAI,KAAK5c,KAAK;AACZ,aAAKA,IAAIgJ,WAAW;MACtB;AACA,WAAK,YAAY;IACnB;IAEA6T,UAAU;AACR,UAAI,KAAK7c,KAAK;AACZ,aAAKA,IAAIgJ,WAAW;MACtB;AACA,WAAK,YAAY;IACnB;IAEA8T,4BAA4BC,iBAAiB;AAC3C,UAAI,CAAC,KAAK,mBAAmB,CAAC,KAAKtb,SAAS;AAC1C,aAAK,kBAAkBsb,gBAAgBC,kBAAkB,IAAI;AAC7D;MACF;AACA,UAAI,KAAKvb,SAAS;AAChB,aAAK,gBAAgByD,OAAO;AAC5B,aAAK,kBAAkB;AACvB;MACF;AACA,UAAI,KAAK6L,oBAAoB,KAAKpJ,iBAAiB,KAAKC,iBAAiB;AACvE,aAAK,gBAAgBqV,aAAa;UAChChL,MAAM,KAAKgE,WAAW;UACtB5D,OAAO,KAAKpC;QACd,CAAC;MACH;IACF;IAOAiN,wBAAwBC,YAAY;AAClC,UAAI,KAAK1b,SAAS;AAChB0b,mBAAW7J,KAAK;AAChB,eAAO;MACT;AACA,UAAI8J,UAAUD,WAAW9O,UAAUgP,cAAc,oBAAoB;AACrE,UAAI,CAACD,SAAS;AACZA,kBAAU/Z,SAASiF,cAAc,KAAK;AACtC8U,gBAAQhZ,UAAUmE,IAAI,qBAAqB,KAAK7G,UAAU;AAC1Dyb,mBAAW9O,UAAUpF,QAAQmU,OAAO;MACtC,WAAWA,QAAQ/B,aAAa,UAAU;AACxC,cAAMiC,SAASF;AACfA,kBAAU/Z,SAASiF,cAAc,KAAK;AACtC8U,gBAAQhZ,UAAUmE,IAAI,qBAAqB,KAAK7G,UAAU;AAC1D4b,eAAO/O,OAAO6O,OAAO;MACvB;AAEA,aAAOA;IACT;IAEAG,uBAAuBJ,YAAY;AACjC,YAAM;QAAEpD;MAAkB,IAAIoD,WAAW9O;AACzC,UACE0L,mBAAmBsB,aAAa,SAChCtB,kBAAkB3V,UAAUqW,SAAS,mBAAmB,GACxD;AACAV,0BAAkB7U,OAAO;MAC3B;IACF;EACF;AAGA,MAAM7C,aAAN,cAAyB5E,iBAAiB;IACxC+B,YAAYoF,QAAQ;AAClB,YAAMA,MAAM;AACZ,WAAK1E,sBAAsB0E,OAAO1E;AAClC,WAAKuB,UAAU;IACjB;IAEA2N,YAAY;AACV,aAAO,KAAKkI,iBAAiB;IAC/B;EACF;ACn2EA,MAAMkG,OAAO;AAEb,MAAMC,YAAY;AAClB,MAAMC,WAAW;AAEjB,MAAMC,iBAAN,MAAqB;IACnBC,YAAYC,MAAM;AAChB,WAAKC,KAAKD,OAAOA,OAAO,aAAaL;AACrC,WAAKO,KAAKF,OAAOA,OAAO,aAAaL;IACvC;IAEAQ,OAAOC,OAAO;AACZ,UAAIC,MAAMC;AACV,UAAI,OAAOF,UAAU,UAAU;AAC7BC,eAAO,IAAIE,WAAWH,MAAME,SAAS,CAAC;AACtCA,iBAAS;AACT,iBAASE,KAAI,GAAGC,KAAKL,MAAME,QAAQE,KAAIC,IAAID,MAAK;AAC9C,gBAAME,OAAON,MAAMO,WAAWH,EAAC;AAC/B,cAAIE,QAAQ,KAAM;AAChBL,iBAAKC,QAAQ,IAAII;UACnB,OAAO;AACLL,iBAAKC,QAAQ,IAAII,SAAS;AAC1BL,iBAAKC,QAAQ,IAAII,OAAO;UAC1B;QACF;MACF,WAAWE,YAAYC,OAAOT,KAAK,GAAG;AACpCC,eAAOD,MAAMU,MAAM;AACnBR,iBAASD,KAAKU;MAChB,OAAO;AACL,cAAM,IAAIC,MAAM,sDAAsD;MACxE;AAEA,YAAMC,cAAcX,UAAU;AAC9B,YAAMY,aAAaZ,SAASW,cAAc;AAE1C,YAAME,aAAa,IAAIC,YAAYf,KAAKgB,QAAQ,GAAGJ,WAAW;AAC9D,UAAIK,KAAK,GACPC,MAAK;AACP,UAAItB,MAAK,KAAKA,IACZC,MAAK,KAAKA;AACZ,YAAMsB,KAAK,YACTC,MAAK;AACP,YAAMC,SAASF,KAAK3B,UAClB8B,SAASF,MAAK5B;AAEhB,eAASW,KAAI,GAAGA,KAAIS,aAAaT,MAAK;AACpC,YAAIA,KAAI,GAAG;AACTc,eAAKH,WAAWX,EAAC;AACjBc,eAAOA,KAAKE,KAAM5B,YAAe0B,KAAKI,SAAU7B;AAChDyB,eAAMA,MAAM,KAAOA,OAAO;AAC1BA,eAAOA,KAAKG,MAAM7B,YAAe0B,KAAKK,SAAU9B;AAChDI,UAAAA,OAAMqB;AACNrB,UAAAA,MAAMA,OAAM,KAAOA,QAAO;AAC1BA,UAAAA,MAAKA,MAAK,IAAI;QAChB,OAAO;AACLsB,UAAAA,MAAKJ,WAAWX,EAAC;AACjBe,UAAAA,MAAOA,MAAKC,KAAM5B,YAAe2B,MAAKG,SAAU7B;AAChD0B,UAAAA,MAAMA,OAAM,KAAOA,QAAO;AAC1BA,UAAAA,MAAOA,MAAKE,MAAM7B,YAAe2B,MAAKI,SAAU9B;AAChDK,UAAAA,OAAMqB;AACNrB,UAAAA,MAAMA,OAAM,KAAOA,QAAO;AAC1BA,UAAAA,MAAKA,MAAK,IAAI;QAChB;MACF;AAEAoB,WAAK;AAEL,cAAQJ,YAAU;QAChB,KAAK;AACHI,gBAAMjB,KAAKY,cAAc,IAAI,CAAC,KAAK;QAErC,KAAK;AACHK,gBAAMjB,KAAKY,cAAc,IAAI,CAAC,KAAK;QAErC,KAAK;AACHK,gBAAMjB,KAAKY,cAAc,CAAC;AAG1BK,eAAOA,KAAKE,KAAM5B,YAAe0B,KAAKI,SAAU7B;AAChDyB,eAAMA,MAAM,KAAOA,OAAO;AAC1BA,eAAOA,KAAKG,MAAM7B,YAAe0B,KAAKK,SAAU9B;AAChD,cAAIoB,cAAc,GAAG;AACnBhB,YAAAA,OAAMqB;UACR,OAAO;AACLpB,YAAAA,OAAMoB;UACR;MACJ;AAEA,WAAKrB,KAAKA;AACV,WAAKC,KAAKA;IACZ;IAEA0B,YAAY;AACV,UAAI3B,MAAK,KAAKA,IACZC,MAAK,KAAKA;AAEZD,MAAAA,OAAMC,QAAO;AACbD,MAAAA,MAAOA,MAAK,aAAcL,YAAeK,MAAK,QAAUJ;AACxDK,MAAAA,MACIA,MAAK,aAAcN,cAChBM,OAAM,KAAOD,QAAO,MAAO,aAAcL,eAAe;AAC/DK,MAAAA,OAAMC,QAAO;AACbD,MAAAA,MAAOA,MAAK,YAAcL,YAAeK,MAAK,QAAUJ;AACxDK,MAAAA,MACIA,MAAK,aAAcN,cAChBM,OAAM,KAAOD,QAAO,MAAO,aAAcL,eAAe;AAC/DK,MAAAA,OAAMC,QAAO;AAEb,cACGD,QAAO,GAAG4B,SAAS,EAAE,EAAEC,SAAS,GAAG,GAAG,KACtC5B,QAAO,GAAG2B,SAAS,EAAE,EAAEC,SAAS,GAAG,GAAG;IAE3C;EACF;ACjHA,MAAMC,oBAAoBC,OAAOC,OAAO;IACtCC,KAAK;IACLC,MAAM;IACNC,UAAUC;EACZ,CAAC;AAKD,MAAMC,oBAAN,MAAwB;IACtB,YAAY;IAEZ,eAAe;IAEf,cAAc;IAEd,WAAW,oBAAIC,IAAI;IAEnBC,cAAc;AAKZ,WAAKC,gBAAgB;AACrB,WAAKC,kBAAkB;AACvB,WAAKC,qBAAqB;IAY5B;IAQAC,SAASC,KAAKC,cAAc;AAC1B,YAAMC,QAAQ,KAAK,SAASC,IAAIH,GAAG;AACnC,UAAIE,UAAUV,QAAW;AACvB,eAAOS;MACT;AAEA,aAAOd,OAAOiB,OAAOH,cAAcC,KAAK;IAC1C;IAOAG,YAAYL,KAAK;AACf,aAAO,KAAK,SAASG,IAAIH,GAAG;IAC9B;IAMAM,OAAON,KAAK;AACV,YAAMO,cAAc,KAAK,SAASJ,IAAIH,GAAG;AACzC,UAAIO,gBAAgBf,QAAW;AAC7B;MACF;AACA,UAAIe,uBAAuBC,kBAAkB;AAC3C,aAAK,YAAYC,OAAOF,YAAYG,mBAAmB;MACzD;AACA,WAAK,SAASD,OAAOT,GAAG;AAExB,UAAI,KAAK,SAASW,SAAS,GAAG;AAC5B,aAAKC,cAAc;MACrB;AAEA,UAAI,OAAO,KAAKd,uBAAuB,YAAY;AACjD,mBAAWI,SAAS,KAAK,SAASW,OAAO,GAAG;AAC1C,cAAIX,iBAAiBM,kBAAkB;AACrC;UACF;QACF;AACA,aAAKV,mBAAmB,IAAI;MAC9B;IACF;IAOAgB,SAASd,KAAKE,OAAO;AACnB,YAAMa,MAAM,KAAK,SAASZ,IAAIH,GAAG;AACjC,UAAIgB,WAAW;AACf,UAAID,QAAQvB,QAAW;AACrB,mBAAW,CAACyB,OAAOC,GAAG,KAAK/B,OAAOgC,QAAQjB,KAAK,GAAG;AAChD,cAAIa,IAAIE,KAAK,MAAMC,KAAK;AACtBF,uBAAW;AACXD,gBAAIE,KAAK,IAAIC;UACf;QACF;MACF,OAAO;AACLF,mBAAW;AACX,aAAK,SAASI,IAAIpB,KAAKE,KAAK;MAC9B;AACA,UAAIc,UAAU;AACZ,aAAK,aAAa;MACpB;AAEA,UAAId,iBAAiBM,kBAAkB;AACrC,SAAC,KAAK,gBAAgB,oBAAId,IAAI,GAAG0B,IAAIlB,MAAMQ,qBAAqBR,KAAK;AACrE,YAAI,OAAO,KAAKJ,uBAAuB,YAAY;AACjD,eAAKA,mBAAmBI,MAAMP,YAAY0B,KAAK;QACjD;MACF;IACF;IAOAC,IAAItB,KAAK;AACP,aAAO,KAAK,SAASsB,IAAItB,GAAG;IAC9B;IAEA,IAAIW,OAAO;AACT,aAAO,KAAK,SAASA;IACvB;IAEA,eAAe;AACb,UAAI,CAAC,KAAK,WAAW;AACnB,aAAK,YAAY;AACjB,YAAI,OAAO,KAAKf,kBAAkB,YAAY;AAC5C,eAAKA,cAAc;QACrB;MACF;IACF;IAEAgB,gBAAgB;AACd,UAAI,KAAK,WAAW;AAClB,aAAK,YAAY;AACjB,YAAI,OAAO,KAAKf,oBAAoB,YAAY;AAC9C,eAAKA,gBAAgB;QACvB;MACF;IACF;IAKA,IAAI0B,QAAQ;AACV,aAAO,IAAIC,uBAAuB,IAAI;IACxC;IAMA,IAAIC,eAAe;AACjB,UAAI,KAAK,SAASd,SAAS,GAAG;AAC5B,eAAOzB;MACT;AACA,YAAMG,OAAM,oBAAIK,IAAI,GAClBJ,OAAO,IAAIoC,eAAe,GAC1BnC,WAAW,CAAA;AACb,YAAMoC,UAAUxC,uBAAOyC,OAAO,IAAI;AAClC,UAAIC,YAAY;AAEhB,iBAAW,CAAC7B,KAAKkB,GAAG,KAAK,KAAK,UAAU;AACtC,cAAMY,aACJZ,eAAeV,mBACXU,IAAIa,UAA+B,OAAOJ,OAAO,IACjDT;AACN,YAAIY,YAAY;AACdzC,UAAAA,KAAI+B,IAAIpB,KAAK8B,UAAU;AAEvBxC,eAAK0C,OAAO,GAAGhC,GAAG,IAAIiC,KAAKC,UAAUJ,UAAU,CAAC,EAAE;AAClDD,wBAAc,CAAC,CAACC,WAAWK;QAC7B;MACF;AAEA,UAAIN,WAAW;AAGb,mBAAW3B,SAASb,KAAIwB,OAAO,GAAG;AAChC,cAAIX,MAAMiC,QAAQ;AAChB5C,qBAAS6C,KAAKlC,MAAMiC,MAAM;UAC5B;QACF;MACF;AAEA,aAAO9C,KAAIsB,OAAO,IACd;QAAEtB,KAAAA;QAAKC,MAAMA,KAAK+C,UAAU;QAAG9C;MAAS,IACxCL;IACN;IAEA,IAAIoD,cAAc;AAChB,UAAIC,QAAQ;AACZ,YAAMC,eAAe,oBAAI9C,IAAI;AAC7B,UAAI+C,yBAAyB;AAC7B,UAAIC,0BAA0B;AAC9B,iBAAWxC,SAAS,KAAK,SAASW,OAAO,GAAG;AAC1C,YAAI,EAAEX,iBAAiBM,mBAAmB;AACxC,cAAIN,MAAMyC,OAAO;AACf,gBAAIzC,MAAMyC,MAAMC,SAAS;AACvBF,yCAA2B;YAC7B,OAAO;AACLD,wCAA0B;YAC5B;UACF;AACA;QACF;AACA,YAAIvC,MAAM2C,kBAAkB;AAC1BH,qCAA2B;QAC7B,WAAWxC,MAAM4C,kBAAkB;AACjCL,oCAA0B;QAC5B;AACA,cAAMH,cAAcpC,MAAM6C;AAC1B,YAAI,CAACT,aAAa;AAChB;QACF;AACA,cAAM;UAAEU;QAAK,IAAIV;AACjB,YAAI,CAACE,aAAalB,IAAI0B,IAAI,GAAG;AAC3BR,uBAAapB,IAAI4B,MAAM7D,OAAO8D,eAAe/C,KAAK,EAAEP,WAAW;QACjE;AACA4C,kBAAUpD,uBAAOyC,OAAO,IAAI;AAC5B,cAAMvC,OAAOkD,MAAMS,IAAI,MAAM,oBAAItD,IAAI;AACrC,mBAAW,CAACM,KAAKkB,GAAG,KAAK/B,OAAOgC,QAAQmB,WAAW,GAAG;AACpD,cAAItC,QAAQ,QAAQ;AAClB;UACF;AACA,cAAIkD,WAAW7D,KAAIc,IAAIH,GAAG;AAC1B,cAAI,CAACkD,UAAU;AACbA,uBAAW,oBAAIxD,IAAI;AACnBL,YAAAA,KAAI+B,IAAIpB,KAAKkD,QAAQ;UACvB;AACA,gBAAMC,QAAQD,SAAS/C,IAAIe,GAAG,KAAK;AACnCgC,mBAAS9B,IAAIF,KAAKiC,QAAQ,CAAC;QAC7B;MACF;AACA,UAAIT,0BAA0B,KAAKD,yBAAyB,GAAG;AAC7DF,kBAAUpD,uBAAOyC,OAAO,IAAI;AAC5BW,cAAMa,WAAW;UACfR,SAASF;UACTW,QAAQZ;QACV;MACF;AACA,UAAI,CAACF,OAAO;AACV,eAAO;MACT;AACA,iBAAW,CAACS,MAAMM,MAAM,KAAKd,cAAc;AACzCD,cAAMS,IAAI,IAAIM,OAAOC,0BAA0BhB,MAAMS,IAAI,CAAC;MAC5D;AACA,aAAOT;IACT;IAEAiB,mBAAmB;AACjB,WAAK,eAAe;IACtB;IAEAC,aAAaC,cAAcC,MAAM;AAC/B,YAAMzD,QAAQ,KAAK,aAAaC,IAAIuD,YAAY;AAChD,UAAIxD,OAAO;AACTA,cAAM0D,0BAA0BD,IAAI;AACpC,eAAO;MACT;AACA,aAAO;IACT;IAEAE,UAAUH,cAAc;AACtB,aAAO,KAAK,aAAavD,IAAIuD,YAAY,KAAK;IAChD;IAKA,IAAII,cAAc;AAChB,UAAI,KAAK,cAAc;AACrB,eAAO,KAAK;MACd;AACA,YAAMC,MAAM,CAAA;AACZ,UAAI,KAAK,aAAa;AACpB,mBAAW7D,SAAS,KAAK,YAAYW,OAAO,GAAG;AAC7C,cAAI,CAACX,MAAM6B,UAAU,GAAG;AACtB;UACF;AACAgC,cAAI3B,KAAKlC,MAAMQ,mBAAmB;QACpC;MACF;AACA,aAAQ,KAAK,eAAe;QAC1BqD,KAAK,IAAIC,IAAID,GAAG;QAChBzE,MAAMyE,IAAIE,KAAK,GAAG;MACpB;IACF;IAEA,CAACC,OAAOC,QAAQ,IAAI;AAClB,aAAO,KAAK,SAAShD,QAAQ;IAC/B;EACF;AAOA,MAAMK,yBAAN,cAAqC/B,kBAAkB;IACrD;IAEAE,YAAYyE,QAAQ;AAClB,YAAM;AACN,YAAM;QAAE/E,KAAAA;QAAKC;QAAMC;MAAS,IAAI6E,OAAO3C;AAEvC,YAAM4C,SAAQC,gBAAgBjF,MAAKE,WAAW;QAAEA;MAAS,IAAI,IAAI;AAEjE,WAAK,gBAAgB;QAAEF,KAAKgF;QAAO/E;QAAMC;MAAS;IACpD;IAMA,IAAIgC,QAAQ;AACVgD,kBAAY,8CAA8C;IAC5D;IAMA,IAAI9C,eAAe;AACjB,aAAO,KAAK;IACd;IAEA,IAAIqC,cAAc;AAChB,aAAOU,OAAO,MAAM,eAAe;QACjCT,KAAK,oBAAIC,IAAI;QACb1E,MAAM;MACR,CAAC;IACH;EACF;ACjVA,MAAMmF,aAAN,MAAiB;IACf,eAAe,oBAAIC,IAAI;IAEvBC,YAAY;MACVC,gBAAgBC,WAAWC;MAC3BC,eAAe;IACjB,GAAG;AACD,WAAKC,YAAYJ;AAEjB,WAAKK,kBAAkB,oBAAIP,IAAI;AAC/B,WAAKK,eAGC;AAGJ,WAAKG,kBAAkB,CAAA;AACvB,WAAKC,iBAAiB;IAE1B;IAEAC,kBAAkBC,gBAAgB;AAChC,WAAKJ,gBAAgBK,IAAID,cAAc;AACvC,WAAKL,UAAUO,MAAMD,IAAID,cAAc;IACzC;IAEAG,qBAAqBH,gBAAgB;AACnC,WAAKJ,gBAAgBQ,OAAOJ,cAAc;AAC1C,WAAKL,UAAUO,MAAME,OAAOJ,cAAc;IAC5C;IAEAK,WAAWC,MAAM;AACf,UAAI,CAAC,KAAKZ,cAAc;AACtB,aAAKA,eAAe,KAAKC,UAAUY,cAAc,OAAO;AACxD,aAAKZ,UAAUa,gBACZC,qBAAqB,MAAM,EAAE,CAAC,EAC9BC,OAAO,KAAKhB,YAAY;MAC7B;AACA,YAAMiB,aAAa,KAAKjB,aAAakB;AACrCD,iBAAWN,WAAWC,MAAMK,WAAWE,SAASC,MAAM;IACxD;IAEAC,QAAQ;AACN,iBAAWf,kBAAkB,KAAKJ,iBAAiB;AACjD,aAAKD,UAAUO,MAAME,OAAOJ,cAAc;MAC5C;AACA,WAAKJ,gBAAgBmB,MAAM;AAC3B,WAAK,aAAaA,MAAM;AAExB,UAAI,KAAKrB,cAAc;AAErB,aAAKA,aAAasB,OAAO;AACzB,aAAKtB,eAAe;MACtB;IACF;IAEA,MAAMuB,eAAe;MACnBC,gBAAgBC;MAChBC;MACAC;IACF,GAAG;AACD,UAAI,CAACF,SAAQ,KAAK,aAAaG,IAAIH,MAAKI,UAAU,GAAG;AACnD;MACF;AACAC,MAAAA,QACE,CAACJ,iBACD,mEACF;AAEA,UAAI,KAAKK,2BAA2B;AAClC,cAAM;UAAEF;UAAYG;UAAKC;QAAM,IAAIR;AACnC,cAAMS,WAAW,IAAIC,SAASN,YAAYG,KAAKC,KAAK;AACpD,aAAK5B,kBAAkB6B,QAAQ;AAC/B,YAAI;AACF,gBAAMA,SAASE,KAAK;AACpB,eAAK,aAAa7B,IAAIsB,UAAU;AAChCF,yBAAeF,KAAI;QACrB,QAAQ;AACNY,eACE,4BAA4BZ,MAAKa,YAAY,sDAC/C;AAEA,eAAK7B,qBAAqByB,QAAQ;QACpC;AACA;MACF;AAEAK,kBACE,+DACF;IACF;IAEA,MAAMC,KAAKC,MAAM;AAEf,UAAIA,KAAKC,YAAaD,KAAKE,eAAe,CAACF,KAAKjB,gBAAiB;AAC/D;MACF;AACAiB,WAAKC,WAAW;AAEhB,UAAID,KAAKjB,gBAAgB;AACvB,cAAM,KAAKD,eAAekB,IAAI;AAC9B;MACF;AAEA,UAAI,KAAKV,2BAA2B;AAClC,cAAMzB,iBAAiBmC,KAAKG,qBAAqB;AACjD,YAAItC,gBAAgB;AAClB,eAAKD,kBAAkBC,cAAc;AACrC,cAAI;AACF,kBAAMA,eAAeuC;UACvB,SAASC,IAAI;AACXT,iBAAK,wBAAwB/B,eAAeyC,MAAM,OAAOD,EAAE,IAAI;AAG/DL,iBAAKf,kBAAkB;AACvB,kBAAMoB;UACR;QACF;AACA;MACF;AAGA,YAAMlC,OAAO6B,KAAKO,mBAAmB;AACrC,UAAIpC,MAAM;AACR,aAAKD,WAAWC,IAAI;AAEpB,YAAI,KAAKqC,4BAA4B;AACnC;QACF;AAIA,cAAM,IAAIC,QAAQC,CAAAA,aAAW;AAC3B,gBAAMC,UAAU,KAAKC,sBAAsBF,QAAO;AAClD,eAAKG,sBAAsBb,MAAMW,OAAO;QAC1C,CAAC;MAEH;IACF;IAEA,IAAIrB,4BAA4B;AAC9B,YAAMwB,WAAW,CAAC,CAAC,KAAKtD,WAAWO;AAQnC,aAAOgD,OAAO,MAAM,6BAA6BD,QAAQ;IAC3D;IAEA,IAAIN,6BAA6B;AAO/B,aAAOO,OACL,MACA,8BAEGC,YAAYC,iBAAYC,SAASC,SACtC;IACF;IAEAP,sBAAsBQ,WAAU;AAK9B,eAASC,kBAAkB;AACzBhC,QAAAA,QAAO,CAACsB,QAAQW,MAAM,2CAA2C;AACjEX,gBAAQW,OAAO;AAGf,eAAO5D,gBAAgBiB,SAAS,KAAKjB,gBAAgB,CAAC,EAAE4D,MAAM;AAC5D,gBAAMC,eAAe7D,gBAAgB8D,MAAM;AAC3CC,qBAAWF,aAAaH,UAAU,CAAC;QACrC;MACF;AAEA,YAAM;QAAE1D;MAAgB,IAAI;AAC5B,YAAMiD,UAAU;QACdW,MAAM;QACNI,UAAUL;QACVD,UAAAA;MACF;AACA1D,sBAAgBiE,KAAKhB,OAAO;AAC5B,aAAOA;IACT;IAEA,IAAIiB,gBAAgB;AAOlB,YAAMC,WAAWC,KACf,09CAsBF;AACA,aAAOf,OAAO,MAAM,iBAAiBc,QAAQ;IAC/C;IAEAhB,sBAAsBb,MAAMW,SAAS;AAWnC,eAASoB,MAAMC,OAAMC,QAAQ;AAC3B,eACGD,MAAKE,WAAWD,MAAM,KAAK,KAC3BD,MAAKE,WAAWD,SAAS,CAAC,KAAK,KAC/BD,MAAKE,WAAWD,SAAS,CAAC,KAAK,IAC/BD,MAAKE,WAAWD,SAAS,CAAC,IAAI;MAEnC;AACA,eAASE,aAAaC,IAAGH,QAAQpD,QAAQwD,QAAQ;AAC/C,cAAMC,SAASF,GAAEG,UAAU,GAAGN,MAAM;AACpC,cAAMO,SAASJ,GAAEG,UAAUN,SAASpD,MAAM;AAC1C,eAAOyD,SAASD,SAASG;MAC3B;AACA,UAAIC,IAAGC;AAGP,YAAMC,SAAS,KAAKnF,UAAUY,cAAc,QAAQ;AACpDuE,aAAOC,QAAQ;AACfD,aAAOE,SAAS;AAChB,YAAMC,MAAMH,OAAOI,WAAW,IAAI;AAElC,UAAIC,SAAS;AACb,eAASC,YAAYC,OAAM9B,WAAU;AAEnC,YAAI,EAAE4B,SAAS,IAAI;AACjBpD,eAAK,8BAA8B;AACnCwB,UAAAA,UAAS;AACT;QACF;AACA0B,YAAI9C,OAAO,UAAUkD;AACrBJ,YAAIK,SAAS,KAAK,GAAG,EAAE;AACvB,cAAMC,YAAYN,IAAIO,aAAa,GAAG,GAAG,GAAG,CAAC;AAC7C,YAAID,UAAUpB,KAAK,CAAC,IAAI,GAAG;AACzBZ,UAAAA,UAAS;AACT;QACF;AACAK,mBAAWwB,YAAYlD,KAAK,MAAMmD,OAAM9B,SAAQ,CAAC;MACnD;AAEA,YAAMzD,iBAAiB,KAAK2F,KAAKC,IAAI,CAAC,GAAG,KAAK5F,gBAAgB;AAM9D,UAAIqE,OAAO,KAAKJ;AAChB,YAAM4B,iBAAiB;AACvBxB,aAAOG,aACLH,MACAwB,gBACA7F,eAAegB,QACfhB,cACF;AAEA,YAAM8F,sBAAsB;AAC5B,YAAMC,aAAa;AACnB,UAAIC,WAAW5B,MAAMC,MAAMyB,mBAAmB;AAC9C,WAAKhB,KAAI,GAAGC,KAAK/E,eAAegB,SAAS,GAAG8D,KAAIC,IAAID,MAAK,GAAG;AAC1DkB,mBAAYA,WAAWD,aAAa3B,MAAMpE,gBAAgB8E,EAAC,IAAK;MAClE;AACA,UAAIA,KAAI9E,eAAegB,QAAQ;AAE7BgF,mBAAYA,WAAWD,aAAa3B,MAAMpE,iBAAiB,OAAO8E,EAAC,IAAK;MAC1E;AACAT,aAAOG,aAAaH,MAAMyB,qBAAqB,GAAGG,SAASD,QAAQ,CAAC;AAEpE,YAAME,MAAM,iCAAiCC,KAAK9B,IAAI,CAAC;AACvD,YAAM7D,OAAO,4BAA4BR,cAAc,SAASkG,GAAG;AACnE,WAAK3F,WAAWC,IAAI;AAEpB,YAAM4F,MAAM,KAAKvG,UAAUY,cAAc,KAAK;AAC9C2F,UAAIvE,MAAMwE,aAAa;AACvBD,UAAIvE,MAAMoD,QAAQmB,IAAIvE,MAAMqD,SAAS;AACrCkB,UAAIvE,MAAMyE,WAAW;AACrBF,UAAIvE,MAAM0E,MAAMH,IAAIvE,MAAM2E,OAAO;AAEjC,iBAAWjB,SAAQ,CAAClD,KAAKZ,YAAYzB,cAAc,GAAG;AACpD,cAAMyG,OAAO,KAAK5G,UAAUY,cAAc,MAAM;AAChDgG,aAAKC,cAAc;AACnBD,aAAK5E,MAAM8E,aAAapB;AACxBa,YAAIxF,OAAO6F,IAAI;MACjB;AACA,WAAK5G,UAAU+G,KAAKhG,OAAOwF,GAAG;AAE9Bd,kBAAYtF,gBAAgB,MAAM;AAChCoG,YAAIlF,OAAO;AACX8B,gBAAQe,SAAS;MACnB,CAAC;IAEH;EACF;AAEA,MAAM8C,iBAAN,MAAqB;IACnB;IAEArH,YAAYsH,gBAAgBC,cAAc,MAAMC,OAAOC,sBAAsB;AAC3E,WAAKC,iBAAiBC,uBAAOC,OAAO,IAAI;AACxC,WAAK,YAAYN;AASjB,WAAKvF,eAAewF;AACpB,UAAIC,OAAO;AACTG,eAAOE,OAAO,MAAML,KAAK;MAC3B;AACA,UAAIC,sBAAsB;AACxB,aAAKA,uBAAuBA;MAC9B;IACF;IAEAzE,uBAAuB;AACrB,UAAI,CAAC,KAAK6B,QAAQ,KAAK/C,iBAAiB;AACtC,eAAO;MACT;AACA,UAAIpB;AACJ,UAAI,CAAC,KAAKoH,aAAa;AACrBpH,yBAAiB,IAAI6B,SAAS,KAAKN,YAAY,KAAK4C,MAAM,CAAC,CAAC;MAC9D,OAAO;AACL,cAAMkD,OAAM;UACVC,QAAQ,KAAKF,YAAYG;QAC3B;AACA,YAAI,KAAKH,YAAYI,aAAa;AAChCH,UAAAA,KAAI1F,QAAQ,WAAW,KAAKyF,YAAYI,WAAW;QACrD;AACAxH,yBAAiB,IAAI6B,SACnB,KAAKuF,YAAYX,YACjB,KAAKtC,MACLkD,IACF;MACF;AAEA,WAAKhG,eAAe,IAAI;AACxB,aAAOrB;IACT;IAEA0C,qBAAqB;AACnB,UAAI,CAAC,KAAKyB,QAAQ,KAAK/C,iBAAiB;AACtC,eAAO;MACT;AAEA,YAAM4E,MAAM,YAAY,KAAKyB,QAAQ,WAAWC,aAAa,KAAKvD,IAAI,CAAC;AACvE,UAAI7D;AACJ,UAAI,CAAC,KAAK8G,aAAa;AACrB9G,eAAO,4BAA4B,KAAKiB,UAAU,SAASyE,GAAG;MAChE,OAAO;AACL,YAAIqB,OAAM,gBAAgB,KAAKD,YAAYG,UAAU;AACrD,YAAI,KAAKH,YAAYI,aAAa;AAChCH,UAAAA,QAAO,uBAAuB,KAAKD,YAAYI,WAAW;QAC5D;AACAlH,eAAO,4BAA4B,KAAK8G,YAAYX,UAAU,KAAKY,IAAG,OAAOrB,GAAG;MAClF;AAEA,WAAK3E,eAAe,MAAM2E,GAAG;AAC7B,aAAO1F;IACT;IAEAqH,iBAAiBC,MAAMC,WAAW;AAChC,UAAI,KAAKb,eAAea,SAAS,MAAMC,QAAW;AAChD,eAAO,KAAKd,eAAea,SAAS;MACtC;AAEA,YAAME,QAAQ,KAAKxG,aAAa,WAAWsG;AAC3C,UAAIG;AACJ,UAAI;AACFA,eAAOJ,KAAKK,IAAIF,KAAK;MACvB,SAASvF,IAAI;AACXT,aAAK,2CAA2CS,EAAE,IAAI;MACxD;AACA,YAAM0F,OAAOC,oBAAoBH,MAAME,IAAI;AAE3C,UAAI,CAAC,KAAKE,qBAAqB;AAE7BR,aAAKxH,OAAO2H,KAAK;MACnB;AACA,aAAQ,KAAKf,eAAea,SAAS,IAAIK;IAC3C;IAEA,IAAIG,QAAQ;AACV,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,OAAO;AACT,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIlH,kBAAkB;AACpB,aAAO,KAAK,UAAUA,mBAAmB;IAC3C;IAEA,IAAIA,gBAAgBmH,OAAO;AACzBrF,aAAO,MAAM,mBAAmB,CAAC,CAACqF,KAAK;IACzC;IAEA,IAAIH,sBAAsB;AACxB,aAAO,KAAK,UAAUA,uBAAuB;IAC/C;IAEA,IAAII,qBAAqB;AACvB,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,cAAc;AAChB,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,SAAS;AACX,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIrG,cAAc;AAChB,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIsG,YAAY;AACd,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,WAAW;AACb,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,SAAS;AACX,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,eAAe;AACjB,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,UAAU;AACZ,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,OAAO;AACT,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIA,KAAKA,MAAM;AACb9F,aAAO,MAAM,QAAQ8F,IAAI;IAC3B;IAEA,IAAIC,aAAa;AACf,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIC,eAAe;AACjB,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAI3H,aAAa;AACf,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIkG,WAAW;AACb,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIpC,OAAO;AACT,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIlB,OAAO;AACT,aAAO,KAAK,UAAUA;IACxB;IAEAgF,YAAY;AACV,WAAK,UAAUA,UAAU;IAC3B;IAEA,IAAI/B,cAAc;AAChB,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIlG,iBAAiB;AACnB,aAAO,KAAK,UAAUA;IACxB;IAEA,IAAIkI,kBAAkB;AACpB,aAAO,KAAK,UAAUA;IACxB;EACF;ACrhBA,MAAMC,cAAN,MAAMA,aAAY;IAChB;IAEA;IAEA;IAEA,OAAOC,UAAU,CAAC,cAAc,cAAc,aAAa;IAE3D,OAAOC,MAAMC,OAAM;AACjB,YAAMC,UAAU,IAAIC,YAAY;AAChC,YAAMC,iBAAiB,CAAC;AACxB,UAAIC,gBAAgB;AACpB,iBAAWC,QAAQR,aAAYC,SAAS;AACtC,cAAMQ,UAAUL,QAAQM,OAAOP,MAAKK,IAAI,CAAC;AACzCF,uBAAeE,IAAI,IAAIC;AACvBF,yBAAiB,IAAIE,QAAQE;MAC/B;AAEA,YAAMC,UAAS,IAAIC,YAAYN,aAAa;AAC5C,YAAMO,OAAO,IAAIC,WAAWH,OAAM;AAClC,YAAMI,OAAO,IAAIC,SAASL,OAAM;AAChC,UAAIM,SAAS;AAEb,iBAAWV,QAAQR,aAAYC,SAAS;AACtC,cAAMQ,UAAUH,eAAeE,IAAI;AACnC,cAAMG,SAASF,QAAQE;AACvBK,aAAKG,UAAUD,QAAQP,MAAM;AAC7BG,aAAKM,IAAIX,SAASS,SAAS,CAAC;AAC5BA,kBAAU,IAAIP;MAChB;AACAU,MAAAA,QAAOH,WAAWN,QAAOU,YAAY,oCAAoC;AACzE,aAAOV;IACT;IAEAW,YAAYX,SAAQ;AAClB,WAAK,UAAUA;AACf,WAAK,QAAQ,IAAIK,SAAS,KAAK,OAAO;AACtC,WAAK,WAAW,IAAIO,YAAY;IAClC;IAEA,YAAYC,QAAO;AACjBJ,MAAAA,QAAOI,SAAQzB,aAAYC,QAAQU,QAAQ,sBAAsB;AACjE,UAAIO,SAAS;AACb,eAASQ,KAAI,GAAGA,KAAID,QAAOC,MAAK;AAC9BR,kBAAU,KAAK,MAAMS,UAAUT,MAAM,IAAI;MAC3C;AACA,YAAMP,SAAS,KAAK,MAAMgB,UAAUT,MAAM;AAC1C,aAAO,KAAK,SAASU,OACnB,IAAIb,WAAW,KAAK,SAASG,SAAS,GAAGP,MAAM,CACjD;IACF;IAEA,IAAIkB,aAAa;AACf,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,aAAa;AACf,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,cAAc;AAChB,aAAO,KAAK,YAAY,CAAC;IAC3B;EACF;AAEA,MAAMC,iBAAN,MAAMA,gBAAe;IACnB;IAEA;IAEA;IAEA,OAAO/B,UAAU,CAAC,OAAO,cAAc,gBAAgB,KAAK;IAE5D,OAAOC,MAAMC,OAAM;AACjB,YAAMC,UAAU,IAAIC,YAAY;AAChC,YAAMC,iBAAiB,CAAC;AACxB,UAAIC,gBAAgB;AACpB,iBAAWC,QAAQwB,gBAAe/B,SAAS;AACzC,cAAMQ,UAAUL,QAAQM,OAAOP,MAAKK,IAAI,CAAC;AACzCF,uBAAeE,IAAI,IAAIC;AACvBF,yBAAiB,IAAIE,QAAQE;MAC/B;AACAJ,uBAAiB;AACjB,UAAI0B,mBACFC,oBACAC,iBAAiB,IAAI5B;AACvB,UAAIJ,MAAKiC,OAAO;AACdH,4BAAoB7B,QAAQM,OAAOP,MAAKiC,MAAMA,KAAK;AACnDF,6BAAqB9B,QAAQM,OAAOP,MAAKiC,MAAMC,MAAM;AACrDF,0BACE,IAAIF,kBAAkBtB,SAAS,IAAIuB,mBAAmBvB;MAC1D;AAEA,YAAMC,UAAS,IAAIC,YAAYsB,cAAc;AAC7C,YAAMrB,OAAO,IAAIC,WAAWH,OAAM;AAClC,YAAMI,OAAO,IAAIC,SAASL,OAAM;AAChC,UAAIM,SAAS;AAEbF,WAAKsB,SAASpB,UAAUf,MAAKoC,gBAAgB,IAAI,CAAC;AAClDvB,WAAKG,UAAUD,QAAQ,CAAC;AACxBA,gBAAU;AACVX,sBAAgB;AAChB,iBAAWC,QAAQwB,gBAAe/B,SAAS;AACzC,cAAMQ,UAAUH,eAAeE,IAAI;AACnC,cAAMG,SAASF,QAAQE;AACvBJ,yBAAiB,IAAII;AACrBK,aAAKG,UAAUD,QAAQP,MAAM;AAC7BG,aAAKM,IAAIX,SAASS,SAAS,CAAC;AAC5BA,kBAAU,IAAIP;MAChB;AACAK,WAAKG,UAAUD,SAASX,gBAAgB,GAAGA,aAAa;AAExD,UAAIJ,MAAKiC,OAAO;AACdpB,aAAKG,UAAUD,QAAQe,kBAAkBtB,MAAM;AAC/CG,aAAKM,IAAIa,mBAAmBf,SAAS,CAAC;AACtCA,kBAAU,IAAIe,kBAAkBtB;AAChCK,aAAKG,UAAUD,QAAQgB,mBAAmBvB,MAAM;AAChDG,aAAKM,IAAIc,oBAAoBhB,SAAS,CAAC;AACvCA,kBAAU,IAAIgB,mBAAmBvB;MACnC;AACAU,MAAAA,QACEH,UAAUN,QAAOU,YACjB,uCACF;AACA,aAAOV,QAAO4B,sBAAsBtB,MAAM;IAC5C;IAEAK,YAAYX,SAAQ;AAClB,WAAK,UAAUA;AACf,WAAK,QAAQ,IAAIK,SAAS,KAAK,OAAO;AACtC,WAAK,WAAW,IAAIO,YAAY;IAClC;IAEA,IAAIe,gBAAgB;AAClB,aAAO,KAAK,MAAME,SAAS,CAAC,MAAM;IACpC;IAEA,YAAYhB,QAAO;AACjBJ,MAAAA,QAAOI,SAAQO,gBAAe/B,QAAQU,QAAQ,sBAAsB;AACpE,UAAIO,SAAS;AACb,eAASQ,KAAI,GAAGA,KAAID,QAAOC,MAAK;AAC9BR,kBAAU,KAAK,MAAMS,UAAUT,MAAM,IAAI;MAC3C;AACA,YAAMP,SAAS,KAAK,MAAMgB,UAAUT,MAAM;AAC1C,aAAO,KAAK,SAASU,OACnB,IAAIb,WAAW,KAAK,SAASG,SAAS,GAAGP,MAAM,CACjD;IACF;IAEA,IAAI+B,MAAM;AACR,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,aAAa;AACf,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,eAAe;AACjB,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,MAAM;AACR,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIT,QAAQ;AACV,UAAIlB,SAAS;AACbA,gBAAU,IAAI,KAAK,MAAMS,UAAUT,MAAM;AACzC,YAAM4B,cAAc,KAAK,MAAMnB,UAAUT,MAAM;AAC/C,YAAMkB,QAAQ,KAAK,SAASR,OAC1B,IAAIb,WAAW,KAAK,SAASG,SAAS,GAAG4B,WAAW,CACtD;AACA5B,gBAAU,IAAI4B;AACd,YAAMC,eAAe,KAAK,MAAMpB,UAAUT,MAAM;AAChD,YAAMmB,SAAS,KAAK,SAAST,OAC3B,IAAIb,WAAW,KAAK,SAASG,SAAS,GAAG6B,YAAY,CACvD;AACA,aAAO;QAAEX;QAAOC;MAAO;IACzB;EACF;AAEA,MAAMW,WAAN,MAAMA,UAAS;IACb,OAAOC,QAAQ,CACb,SACA,QACA,mBACA,uBACA,sBACA,eACA,UACA,eACA,aACA,UAAU;IAGZ,OAAOC,UAAU,CAAC,UAAU,gBAAgB,SAAS;IAErD,OAAOjD,UAAU,CAAC,gBAAgB,cAAc,YAAY,MAAM;IAElE,OAAO,kBAAkBkD,KAAKC,KAAM,KAAKH,MAAMtC,SAAS,IAAK,CAAC;IAE9D,OAAO,eAAe,KAAK,kBAAkB,KAAKuC,QAAQvC,SAAS;IAEnE,OAAO,sBAAsB,KAAK,eAAe,IAAI,IAAI;IAEzD,OAAO,2BAA2B,KAAK,sBAAsB,IAAI,IAAI;IAErE,OAAO,kBAAkB,KAAK,2BAA2B,IAAI,IAAI;IAEjE;IAEA;IAEA;IAEAY,YAAY;MAAET;MAAMuC;IAAM,GAAG;AAC3B,WAAK,UAAUvC;AACf,WAAK,WAAW,IAAIU,YAAY;AAChC,WAAK,QAAQ,IAAIP,SAAS,KAAK,OAAO;AACtC,UAAIoC,OAAO;AACTC,eAAOC,OAAO,MAAMF,KAAK;MAC3B;IACF;IAEA,aAAa5B,QAAO;AAClBJ,MAAAA,QAAOI,SAAQuB,UAASC,MAAMtC,QAAQ,uBAAuB;AAC7D,YAAM6C,aAAaL,KAAKM,MAAMhC,SAAQ,CAAC;AACvC,YAAMiC,YAAajC,SAAQ,IAAK;AAChC,YAAMkC,QAAS,KAAK,MAAMlB,SAASe,UAAU,KAAKE,YAAa;AAC/D,aAAOC,UAAU,IAAOC,SAAYD,UAAU;IAChD;IAEA,IAAIE,QAAQ;AACV,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,OAAO;AACT,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,kBAAkB;AACpB,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,sBAAsB;AACxB,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,qBAAqB;AACvB,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,cAAc;AAChB,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,SAAS;AACX,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,cAAc;AAChB,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,YAAY;AACd,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,IAAIC,WAAW;AACb,aAAO,KAAK,aAAa,CAAC;IAC5B;IAEA,YAAY7C,QAAO;AACjBJ,MAAAA,QAAOI,SAAQuB,UAASE,QAAQvC,QAAQ,sBAAsB;AAC9D,aAAO,KAAK,MAAM4D,WAAWvB,UAAS,kBAAkBvB,SAAQ,CAAC;IACnE;IAEA,IAAI+C,SAAS;AACX,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,eAAe;AACjB,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,UAAU;AACZ,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,OAAO;AACT,UAAIzD,SAAS8B,UAAS;AACtB,YAAM4B,YAAY,KAAK,MAAMnC,SAASvB,MAAM;AAC5C,UAAI0D,cAAc,GAAG;AACnB,eAAOhB;MACT;AACA1C,gBAAU;AACV,YAAMyD,OAAO,CAAA;AACb,eAASjD,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1BiD,aAAKE,KAAK,KAAK,MAAMC,SAAS5D,QAAQ,IAAI,CAAC;AAC3CA,kBAAU;MACZ;AACA,aAAOyD;IACT;IAEA,IAAII,aAAa;AACf,UAAI7D,SAAS8B,UAAS;AACtB,YAAMgC,YAAY,KAAK,MAAMvC,SAASvB,MAAM;AAC5C,UAAI8D,cAAc,GAAG;AACnB,eAAOpB;MACT;AACA1C,gBAAU;AACV,YAAM6D,aAAa,CAAA;AACnB,eAASrD,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1BqD,mBAAWF,KAAK,KAAK,MAAMN,WAAWrD,QAAQ,IAAI,CAAC;AACnDA,kBAAU;MACZ;AACA,aAAO6D;IACT;IAEA,IAAIE,kBAAkB;AACpB,UAAI/D,SAAS8B,UAAS;AACtB,YAAMkC,aAAa,KAAK,MAAMzC,SAASvB,MAAM;AAC7C,UAAIgE,eAAe,GAAG;AACpB,eAAOtB;MACT;AACA1C,gBAAU;AACV,YAAM+D,kBAAkB,CAAA;AACxB,eAASvD,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1BuD,wBAAgBJ,KAAK,KAAK,MAAMC,SAAS5D,QAAQ,IAAI,CAAC;AACtDA,kBAAU;MACZ;AACA,aAAO+D;IACT;IAEA,YAAYxD,QAAO;AACjBJ,MAAAA,QAAOI,SAAQuB,UAAS/C,QAAQU,QAAQ,sBAAsB;AAC9D,UAAIO,SAAS8B,UAAS,kBAAkB;AACxC,eAAStB,KAAI,GAAGA,KAAID,QAAOC,MAAK;AAC9BR,kBAAU,KAAK,MAAMS,UAAUT,MAAM,IAAI;MAC3C;AACA,YAAMP,SAAS,KAAK,MAAMgB,UAAUT,MAAM;AAC1C,YAAMiE,aAAa,IAAIpE,WAAWJ,MAAM;AACxCwE,iBAAW/D,IAAI,IAAIL,WAAW,KAAK,SAASG,SAAS,GAAGP,MAAM,CAAC;AAC/D,aAAO,KAAK,SAASiB,OAAOuD,UAAU;IACxC;IAEA,IAAIC,eAAe;AACjB,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIzC,aAAa;AACf,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAI0C,WAAW;AACb,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIC,OAAO;AACT,aAAO,KAAK,YAAY,CAAC;IAC3B;IAEA,IAAIxE,OAAO;AACT,UAAII,SAAS8B,UAAS;AACtB,YAAMzC,gBAAgB,KAAK,MAAMoB,UAAUT,MAAM;AACjDA,gBAAU,IAAIX;AACd,YAAMgF,uBAAuB,KAAK,MAAM5D,UAAUT,MAAM;AACxDA,gBAAU,IAAIqE;AACd,YAAMC,oBAAoB,KAAK,MAAM7D,UAAUT,MAAM;AACrDA,gBAAU,IAAIsE;AACd,YAAM7E,SAAS,KAAK,MAAMgB,UAAUT,MAAM;AAC1C,UAAIP,WAAW,GAAG;AAChB,eAAOiD;MACT;AACA,aAAO,IAAI7C,WAAW,KAAK,SAASG,SAAS,GAAGP,MAAM;IACxD;IAEA8E,YAAY;AACV,UAAIvE,SAAS8B,UAAS;AACtB,YAAMzC,gBAAgB,KAAK,MAAMoB,UAAUT,MAAM;AACjDA,gBAAU,IAAIX;AACd,YAAMgF,uBAAuB,KAAK,MAAM5D,UAAUT,MAAM;AACxDA,gBAAU,IAAIqE;AACd,YAAMC,oBAAoB,KAAK,MAAM7D,UAAUT,MAAM;AACrDA,gBAAU,IAAIsE;AACd,YAAM7E,SAAS,KAAK,MAAMgB,UAAUT,MAAM;AAC1C,YAAMJ,OAAO,IAAIC,WAAW,KAAK,SAASG,SAAS,GAAGP,MAAM;AAC5DG,WAAK4E,KAAK,CAAC;AACX,WAAK,MAAMvE,UAAUD,QAAQ,CAAC;IAEhC;IAEA,IAAIyE,cAAc;AAChB,UAAIzE,SAAS8B,UAAS;AACtB,YAAMzC,gBAAgB,KAAK,MAAMoB,UAAUT,MAAM;AACjDA,gBAAU,IAAIX;AACd,YAAMgF,uBAAuB,KAAK,MAAM5D,UAAUT,MAAM;AACxDA,gBAAU,IAAIqE;AACd,YAAMC,oBAAoB,KAAK,MAAM7D,UAAUT,MAAM;AACrD,UAAIsE,sBAAsB,GAAG;AAC3B,eAAO;MACT;AACA,YAAMI,kBAAkB,IAAI7E,WAAWyE,iBAAiB;AACxDI,sBAAgBxE,IACd,IAAIL,WAAW,KAAK,SAASG,SAAS,GAAGsE,iBAAiB,CAC5D;AACA,aAAO,IAAIxF,YAAY4F,gBAAgBhF,MAAM;IAC/C;IAEA,IAAIiF,iBAAiB;AACnB,UAAI3E,SAAS8B,UAAS;AACtB,YAAMzC,gBAAgB,KAAK,MAAMoB,UAAUT,MAAM;AACjDA,gBAAU,IAAIX;AACd,YAAMgF,uBAAuB,KAAK,MAAM5D,UAAUT,MAAM;AACxD,UAAIqE,yBAAyB,GAAG;AAC9B,eAAO;MACT;AACA,YAAMO,qBAAqB,IAAI/E,WAAWwE,oBAAoB;AAC9DO,yBAAmB1E,IACjB,IAAIL,WAAW,KAAK,SAASG,SAAS,GAAGqE,oBAAoB,CAC/D;AACA,aAAO,IAAIvD,eAAe8D,mBAAmBlF,MAAM;IACrD;IAEA,OAAOV,MAAM6F,MAAM;AACjB,YAAMC,uBAAuBD,KAAKF,iBAC9B7D,eAAe9B,MAAM6F,KAAKF,cAAc,IACxC;AACJ,YAAMI,oBAAoBF,KAAKJ,cAC3B3F,YAAYE,MAAM6F,KAAKJ,WAAW,IAClC;AAEJ,YAAMvF,UAAU,IAAIC,YAAY;AAChC,YAAMC,iBAAiB,CAAC;AACxB,UAAIC,gBAAgB;AACpB,iBAAWC,QAAQwC,UAAS/C,SAAS;AACnCK,uBAAeE,IAAI,IAAIJ,QAAQM,OAAOqF,KAAKvF,IAAI,CAAC;AAChDD,yBAAiB,IAAID,eAAeE,IAAI,EAAEG;MAC5C;AAEA,YAAMwB,iBACJa,UAAS,kBACT,IACAzC,gBACA,KACCyF,uBAAuBA,qBAAqB1E,aAAa,KAC1D,KACC2E,oBAAoBA,kBAAkB3E,aAAa,KACpD,KACCyE,KAAKjF,OAAOiF,KAAKjF,KAAKH,SAAS;AAElC,YAAMC,UAAS,IAAIC,YAAYsB,cAAc;AAC7C,YAAMrB,OAAO,IAAIC,WAAWH,OAAM;AAClC,YAAMI,OAAO,IAAIC,SAASL,OAAM;AAChC,UAAIM,SAAS;AAEb,YAAMgF,WAAWlD,UAASC,MAAMtC;AAChC,UAAIwF,WAAW,GACbC,UAAU;AACZ,eAAS1E,KAAI,GAAGA,KAAIwE,UAAUxE,MAAK;AACjC,cAAMiC,QAAQoC,KAAK/C,UAASC,MAAMvB,EAAC,CAAC;AAEpC,cAAM2E,OAAO1C,UAAUC,SAAY,IAAOD,QAAQ,IAAO;AACzDwC,oBAAYE,QAAQD;AACpBA,mBAAW;AACX,YAAIA,YAAY,KAAK1E,OAAMwE,WAAW,GAAG;AACvClF,eAAKsB,SAASpB,UAAUiF,QAAQ;AAChCA,qBAAW;AACXC,oBAAU;QACZ;MACF;AACA/E,MAAAA,QACEH,WAAW8B,UAAS,iBACpB,oDACF;AAEA,iBAAWxC,QAAQwC,UAASE,SAAS;AACnClC,aAAKsF,WAAWpF,QAAQ6E,KAAKvF,IAAI,CAAC;AAClCU,kBAAU;MACZ;AACAG,MAAAA,QACEH,WAAW8B,UAAS,cACpB,mDACF;AAEA,UAAI+C,KAAKpB,MAAM;AACb3D,aAAKsB,SAASpB,UAAU,CAAC;AACzB,mBAAWqF,SAASR,KAAKpB,MAAM;AAC7B3D,eAAKwF,SAAStF,QAAQqF,OAAO,IAAI;AACjCrF,oBAAU;QACZ;MACF,OAAO;AACLF,aAAKsB,SAASpB,UAAU,CAAC;AACzBA,kBAAU,IAAI;MAChB;AAEAG,MAAAA,QACEH,WAAW8B,UAAS,qBACpB,iDACF;AAEA,UAAI+C,KAAKhB,YAAY;AACnB/D,aAAKsB,SAASpB,UAAU,CAAC;AACzB,mBAAWuF,SAASV,KAAKhB,YAAY;AACnC/D,eAAKsF,WAAWpF,QAAQuF,OAAO,IAAI;AACnCvF,oBAAU;QACZ;MACF,OAAO;AACLF,aAAKsB,SAASpB,UAAU,CAAC;AACzBA,kBAAU,IAAI;MAChB;AAEAG,MAAAA,QACEH,WAAW8B,UAAS,0BACpB,uDACF;AAEA,UAAI+C,KAAKd,iBAAiB;AACxBjE,aAAKsB,SAASpB,UAAU,CAAC;AACzB,mBAAWwF,UAAUX,KAAKd,iBAAiB;AACzCjE,eAAKwF,SAAStF,QAAQwF,QAAQ,IAAI;AAClCxF,oBAAU;QACZ;MACF,OAAO;AACLF,aAAKsB,SAASpB,UAAU,CAAC;AACzBA,kBAAU,IAAI;MAChB;AAEAG,MAAAA,QACEH,WAAW8B,UAAS,iBACpB,4DACF;AAEAhC,WAAKG,UAAU6B,UAAS,iBAAiB,CAAC;AAC1C9B,gBAAU;AACV,iBAAWV,QAAQwC,UAAS/C,SAAS;AACnC,cAAMQ,UAAUH,eAAeE,IAAI;AACnC,cAAMG,SAASF,QAAQE;AACvBK,aAAKG,UAAUD,QAAQP,MAAM;AAC7BG,aAAKM,IAAIX,SAASS,SAAS,CAAC;AAC5BA,kBAAU,IAAIP;MAChB;AACAK,WAAKG,UACH6B,UAAS,iBACT9B,SAAS8B,UAAS,kBAAkB,CACtC;AAEA,UAAI,CAACgD,sBAAsB;AACzBhF,aAAKG,UAAUD,QAAQ,CAAC;AACxBA,kBAAU;MACZ,OAAO;AACL,cAAMP,SAASqF,qBAAqB1E;AACpCN,aAAKG,UAAUD,QAAQP,MAAM;AAC7BU,QAAAA,QACEH,SAAS,IAAIP,UAAUC,QAAOU,YAC9B,mDACF;AACAR,aAAKM,IAAI,IAAIL,WAAWiF,oBAAoB,GAAG9E,SAAS,CAAC;AACzDA,kBAAU,IAAIP;MAChB;AAEA,UAAI,CAACsF,mBAAmB;AACtBjF,aAAKG,UAAUD,QAAQ,CAAC;AACxBA,kBAAU;MACZ,OAAO;AACL,cAAMP,SAASsF,kBAAkB3E;AACjCN,aAAKG,UAAUD,QAAQP,MAAM;AAC7BU,QAAAA,QACEH,SAAS,IAAIP,UAAUC,QAAOU,YAC9B,gDACF;AACAR,aAAKM,IAAI,IAAIL,WAAWkF,iBAAiB,GAAG/E,SAAS,CAAC;AACtDA,kBAAU,IAAIP;MAChB;AAEA,UAAIoF,KAAKjF,SAAS8C,QAAW;AAC3B5C,aAAKG,UAAUD,QAAQ,CAAC;AACxBA,kBAAU;MACZ,OAAO;AACLF,aAAKG,UAAUD,QAAQ6E,KAAKjF,KAAKH,MAAM;AACvCG,aAAKM,IAAI2E,KAAKjF,MAAMI,SAAS,CAAC;AAC9BA,kBAAU,IAAI6E,KAAKjF,KAAKH;MAC1B;AAEAU,MAAAA,QAAOH,UAAUN,QAAOU,YAAY,iCAAiC;AACrE,aAAOV,QAAO4B,sBAAsBtB,MAAM;IAC5C;EACF;AAEA,MAAMyF,cAAN,MAAMA,aAAY;IAChB,OAAO,QAAQ;IAEf,OAAO,YAAY;IAEnB,OAAO,kBAAkB;IAEzB,OAAO,gBAAgB;IAEvB,OAAO,WAAW;IAElB,OAAO,WAAW;IAElB,OAAO,UAAU;IAEjB,OAAO,aAAa;IAEpBpF,YAAYX,SAAQ;AAClB,WAAKA,SAASA;AACd,WAAKI,OAAO,IAAIC,SAASL,OAAM;AAC/B,WAAKE,OAAO,IAAIC,WAAWH,OAAM;IACnC;IAEA,OAAOV,MAAM0G,IAAI;AACf,UAAIC,MACFlC,OAAO,MACPmC,SAAS,CAAA,GACTC,UAAS,CAAA,GACTC,aAAa,CAAA,GACbC,UAAU,CAAA,GACVC,cAAc,MACdC,aAAa;AAEf,cAAQP,GAAG,CAAC,GAAC;QACX,KAAK;AACHC,iBAAOD,GAAG,CAAC,MAAM,UAAU,IAAI;AAC/BjC,iBAAOiC,GAAG,CAAC;AACXI,uBAAaJ,GAAG,CAAC;AACjB,cAAIC,SAAS,GAAG;AACdC,mBAAOjC,KAAK,GAAG+B,GAAG,CAAC,GAAG,GAAGA,GAAG,CAAC,CAAC;UAChC,OAAO;AACLE,mBAAOjC,KAAK+B,GAAG,CAAC,EAAE,CAAC,GAAGA,GAAG,CAAC,EAAE,CAAC,GAAGA,GAAG,CAAC,GAAGA,GAAG,CAAC,EAAE,CAAC,GAAGA,GAAG,CAAC,EAAE,CAAC,GAAGA,GAAG,CAAC,CAAC;UAClE;AACA;QACF,KAAK;AACHC,iBAAO;AACPK,wBAAcN,GAAG,CAAC;AAClBE,mBAASF,GAAG,CAAC;AACbG,UAAAA,UAASH,GAAG,CAAC;AACbK,oBAAUL,GAAG,CAAC,KAAK,CAAA;AACnBjC,iBAAOiC,GAAG,CAAC;AACXO,uBAAaP,GAAG,CAAC;AACjB;QACF;AACE,gBAAM,IAAIQ,MAAM,6BAA6BR,GAAG,CAAC,CAAC,EAAE;MACxD;AAEA,YAAMS,SAASlE,KAAKM,MAAMqD,OAAOnG,SAAS,CAAC;AAC3C,YAAM2G,SAASnE,KAAKM,MAAMsD,QAAOpG,SAAS,CAAC;AAC3C,YAAM4G,QAAQP,WAAWrG;AACzB,YAAM6G,WAAWP,QAAQtG;AAEzB,UAAI8G,cAAc;AAClB,iBAAWC,UAAUT,SAAS;AAC5BQ,uBAAe;AACfA,sBAActE,KAAKC,KAAKqE,cAAc,CAAC,IAAI;AAC3CA,uBAAe,IAAIC,OAAOZ,OAAOnG,SAAS;AAC1C8G,uBAAe,IAAIC,OAAOX,OAAOpG,SAAS;AAC1C,YAAI+G,OAAOC,mBAAmB/D,QAAW;AACvC6D,yBAAe;QACjB;MACF;AAEA,YAAMG,UACJ,KACAP,SAAS,IACTC,SAAS,IACTC,QAAQ,KACP5C,OAAO,KAAK,MACZwC,aAAa,IAAI,KAClBM;AACF,YAAM7G,UAAS,IAAIC,YAAY+G,OAAO;AACtC,YAAMC,WAAW,IAAI5G,SAASL,OAAM;AACpC,YAAMkH,SAAS,IAAI/G,WAAWH,OAAM;AAEpCiH,eAASvF,SAASqE,aAAY,OAAOE,IAAI;AACzCgB,eAASvF,SAASqE,aAAY,WAAWhC,OAAO,IAAI,CAAC;AACrDkD,eAASvF,SAASqE,aAAY,iBAAiBQ,aAAa,IAAI,CAAC;AACjEU,eAASvF,SAASqE,aAAY,eAAeO,WAAW;AACxDW,eAAS1G,UAAUwF,aAAY,UAAUU,QAAQ,IAAI;AACrDQ,eAAS1G,UAAUwF,aAAY,UAAUW,QAAQ,IAAI;AACrDO,eAAS1G,UAAUwF,aAAY,SAASY,OAAO,IAAI;AACnDM,eAAS1G,UAAUwF,aAAY,YAAYa,UAAU,IAAI;AAEzD,UAAItG,SAAS;AACb,YAAM6G,aAAa,IAAIC,aAAapH,SAAQM,QAAQmG,SAAS,CAAC;AAC9DU,iBAAW3G,IAAI0F,MAAM;AACrB5F,gBAAUmG,SAAS;AAEnBS,aAAO1G,IAAI2F,SAAQ7F,MAAM;AACzBA,gBAAUoG,SAAS;AAEnB,iBAAW,CAACW,KAAKC,IAAG,KAAKlB,YAAY;AACnCa,iBAASM,WAAWjH,QAAQ+G,KAAK,IAAI;AACrC/G,kBAAU;AACV2G,iBAAS1G,UAAUD,QAAQkH,SAASF,KAAIG,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI;AAC3DnH,kBAAU;MACZ;AACA,UAAIyD,MAAM;AACR,mBAAW2D,MAAK3D,MAAM;AACpBkD,mBAASM,WAAWjH,QAAQoH,IAAG,IAAI;AACnCpH,oBAAU;QACZ;MACF;AAEA,UAAIiG,YAAY;AACdW,eAAO1G,IAAI+F,YAAYjG,MAAM;AAC7BA,kBAAU;MACZ;AAEA,eAASQ,KAAI,GAAGA,KAAIuF,QAAQtG,QAAQe,MAAK;AACvC,cAAMgG,SAAST,QAAQvF,EAAC;AACxBmG,iBAASvF,SAASpB,QAAQwG,OAAOa,IAAI;AACrCrH,kBAAU;AAEVA,iBAASiC,KAAKC,KAAKlC,SAAS,CAAC,IAAI;AACjC2G,iBAAS1G,UAAUD,QAAQwG,OAAOZ,OAAOnG,QAAQ,IAAI;AACrDO,kBAAU;AACV,cAAMsH,mBAAmB,IAAIC,WAC3B7H,SACAM,QACAwG,OAAOZ,OAAOnG,MAChB;AACA6H,yBAAiBpH,IAAIsG,OAAOZ,MAAM;AAClC5F,kBAAUwG,OAAOZ,OAAOnG,SAAS;AACjCkH,iBAAS1G,UAAUD,QAAQwG,OAAOX,OAAOpG,QAAQ,IAAI;AACrDO,kBAAU;AACV,cAAMwH,aAAa,IAAID,WAAW7H,SAAQM,QAAQwG,OAAOX,OAAOpG,MAAM;AACtE+H,mBAAWtH,IAAIsG,OAAOX,MAAM;AAC5B7F,kBAAUwG,OAAOX,OAAOpG,SAAS;AAEjC,YAAI+G,OAAOC,mBAAmB/D,QAAW;AACvCiE,mBAAS1G,UAAUD,QAAQwG,OAAOC,gBAAgB,IAAI;AACtDzG,oBAAU;QACZ;MACF;AACA,aAAON;IACT;IAEA+H,QAAQ;AACN,YAAMd,WAAW,KAAK7G;AACtB,YAAM6F,OAAO,KAAK/F,KAAK6F,aAAY,KAAK;AACxC,YAAMiC,UAAU,CAAC,CAAC,KAAK9H,KAAK6F,aAAY,SAAS;AACjD,YAAMkC,gBAAgB,CAAC,CAAC,KAAK/H,KAAK6F,aAAY,eAAe;AAC7D,YAAMU,SAASQ,SAASlG,UAAUgF,aAAY,UAAU,IAAI;AAC5D,YAAMW,SAASO,SAASlG,UAAUgF,aAAY,UAAU,IAAI;AAC5D,YAAMY,QAAQM,SAASlG,UAAUgF,aAAY,SAAS,IAAI;AAC1D,YAAMa,WAAWK,SAASlG,UAAUgF,aAAY,YAAY,IAAI;AAEhE,UAAIzF,SAAS;AACb,YAAM4F,SAAS,IAAIkB,aAAa,KAAKpH,QAAQM,QAAQmG,SAAS,CAAC;AAC/DnG,gBAAUmG,SAAS;AACnB,YAAMN,UAAS,IAAIhG,WAAW,KAAKH,QAAQM,QAAQoG,SAAS,CAAC;AAC7DpG,gBAAUoG,SAAS;AACnB,YAAMwB,QAAQ,CAAA;AACd,eAASpH,KAAI,GAAGA,KAAI6F,OAAO,EAAE7F,IAAG;AAC9B,cAAMqH,KAAIlB,SAASmB,WAAW9H,QAAQ,IAAI;AAC1CA,kBAAU;AACV,cAAM+H,MAAMpB,SAASlG,UAAUT,QAAQ,IAAI;AAC3CA,kBAAU;AACV4H,cAAMjE,KAAK,CAACkE,IAAG,IAAIE,IAAIC,SAAS,EAAE,EAAEC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;MACzD;AACA,UAAIxE,OAAO;AACX,UAAIiE,SAAS;AACXjE,eAAO,CAAA;AACP,iBAASjD,KAAI,GAAGA,KAAI,GAAG,EAAEA,IAAG;AAC1BiD,eAAKE,KAAKgD,SAASmB,WAAW9H,QAAQ,IAAI,CAAC;AAC3CA,oBAAU;QACZ;MACF;AAEA,UAAIiG,aAAa;AACjB,UAAI0B,eAAe;AACjB1B,qBAAa,IAAIpG,WAAW,KAAKH,QAAQM,QAAQ,CAAC;AAClDA,kBAAU;MACZ;AAEA,YAAM+F,UAAU,CAAA;AAChB,eAASvF,KAAI,GAAGA,KAAI8F,UAAU,EAAE9F,IAAG;AACjC,cAAM6G,OAAOV,SAASpF,SAASvB,MAAM;AACrCA,kBAAU;AAEVA,iBAASiC,KAAKC,KAAKlC,SAAS,CAAC,IAAI;AAEjC,cAAMkI,eAAevB,SAASlG,UAAUT,QAAQ,IAAI;AACpDA,kBAAU;AACV,cAAMmI,eAAe,IAAIZ,WAAW,KAAK7H,QAAQM,QAAQkI,YAAY;AACrElI,kBAAUkI,eAAe;AAEzB,cAAME,eAAezB,SAASlG,UAAUT,QAAQ,IAAI;AACpDA,kBAAU;AACV,cAAMqI,eAAe,IAAId,WAAW,KAAK7H,QAAQM,QAAQoI,YAAY;AACrEpI,kBAAUoI,eAAe;AAEzB,cAAM5B,SAAS;UACba;UACAzB,QAAQuC;UACRtC,QAAQwC;QACV;AAEA,YAAIhB,SAASiB,eAAeC,SAAS;AACnC/B,iBAAOC,iBAAiBE,SAASlG,UAAUT,QAAQ,IAAI;AACvDA,oBAAU;QACZ;AAEA+F,gBAAQpC,KAAK6C,MAAM;MACrB;AAEA,UAAIb,SAAS,GAAG;AAEd,eAAO,CACL,eACA,SACAlC,MACAmE,OACAY,MAAMC,KAAK7C,OAAOuB,MAAM,GAAG,CAAC,CAAC,GAC7BqB,MAAMC,KAAK7C,OAAOuB,MAAM,GAAG,CAAC,CAAC,GAC7B,MACA,IAAI;MAER;AACA,UAAIxB,SAAS,GAAG;AACd,eAAO,CACL,eACA,UACAlC,MACAmE,OACA,CAAChC,OAAO,CAAC,GAAGA,OAAO,CAAC,CAAC,GACrB,CAACA,OAAO,CAAC,GAAGA,OAAO,CAAC,CAAC,GACrBA,OAAO,CAAC,GACRA,OAAO,CAAC,CAAC;MAEb;AACA,UAAID,SAAS,GAAG;AACd,cAAMK,cAAc,KAAKpG,KAAK6F,aAAY,aAAa;AACvD,YAAIiD,SAAS;AACb,YAAI9C,OAAOnG,SAAS,GAAG;AACrB,cAAIkJ,OAAO/C,OAAO,CAAC,GACjBgD,OAAOhD,OAAO,CAAC;AACjB,cAAIiD,OAAOjD,OAAO,CAAC,GACjBkD,OAAOlD,OAAO,CAAC;AACjB,mBAASpF,KAAI,GAAGA,KAAIoF,OAAOnG,QAAQe,MAAK,GAAG;AACzC,kBAAMuI,KAAInD,OAAOpF,EAAC,GAChBwI,KAAIpD,OAAOpF,KAAI,CAAC;AAClBmI,mBAAOA,OAAOI,KAAIA,KAAIJ;AACtBE,mBAAOA,OAAOG,KAAIA,KAAIH;AACtBD,mBAAOA,OAAOG,KAAIA,KAAIH;AACtBE,mBAAOA,OAAOE,KAAIA,KAAIF;UACxB;AACAJ,mBAAS,CAACC,MAAME,MAAMD,MAAME,IAAI;QAClC;AACA,eAAO,CACL,QACA9C,aACAJ,QACAC,SACAE,SACA2C,QACAjF,MACAwC,UAAU;MAEd;AACA,YAAM,IAAIC,MAAM,6BAA6BP,IAAI,EAAE;IACrD;EACF;AAEA,MAAMsD,eAAN,MAAmB;IACjB,OAAOjK,MAAMkK,MAAM;AACjB,UAAItJ;AACJ,UAAIF;AACJ,UAEEyJ,iBAAYC,yBACZ;AACA1J,QAAAA,UAAS,IAAIC,YAAYuJ,KAAKzJ,SAAS,CAAC;AACxCG,eAAO,IAAIyJ,aAAa3J,OAAM;MAChC,OAAO;AACLA,QAAAA,UAAS,IAAIC,YAAYuJ,KAAKzJ,SAAS,CAAC;AACxCG,eAAO,IAAIkH,aAAapH,OAAM;MAChC;AACAE,WAAKM,IAAIgJ,IAAI;AACb,aAAOxJ;IACT;IAEA;IAEAW,YAAYX,SAAQ;AAClB,WAAK,UAAUA;IACjB;IAEA,IAAIwJ,OAAO;AACT,UAEEC,iBAAYC,yBACZ;AACA,eAAO,IAAIC,aAAa,KAAK,OAAO;MACtC;AACA,aAAO,IAAIvC,aAAa,KAAK,OAAO;IACtC;EACF;AC/3BA,WAASwC,WAAWC,KAAK;AAIvB,QAAIA,eAAeC,KAAK;AACtB,aAAOD,IAAIE;IACb;AACA,QAAI,OAAOF,QAAQ,UAAU;AAC3B,UAGEG,UACA;AACA,eAAOH;MACT;AAGA,YAAMI,MAAMH,IAAII,MAAML,KAAKM,OAAOC,QAAQ;AAC1C,UAAIH,KAAK;AACP,eAAOA,IAAIF;MACb;IACF;AACA,UAAM,IAAIM,MACR,oFAEF;EACF;AAEA,WAASC,YAAYT,KAAK;AAExB,QAGEG,YACA,OAAOO,WAAW,eAClBV,eAAeU,QACf;AACA,YAAM,IAAIF,MACR,mEACF;IACF;AACA,QAAIR,eAAeW,cAAcX,IAAIY,eAAeZ,IAAIa,OAAOD,YAAY;AAIzE,aAAOZ;IACT;AACA,QAAI,OAAOA,QAAQ,UAAU;AAC3B,aAAOc,cAAcd,GAAG;IAC1B;AACA,QACEA,eAAee,eACfA,YAAYC,OAAOhB,GAAG,KACrB,OAAOA,QAAQ,YAAY,CAACiB,MAAMjB,KAAKkB,MAAM,GAC9C;AACA,aAAO,IAAIP,WAAWX,GAAG;IAC3B;AACA,UAAM,IAAIQ,MACR,4GAEF;EACF;AAEA,WAASW,kBAAkBnB,KAAK;AAC9B,QAAI,OAAOA,QAAQ,UAAU;AAC3B,aAAO;IACT;AACA,QAAIA,IAAIoB,SAAS,GAAG,GAAG;AACrB,aAAOpB;IACT;AACA,UAAM,IAAIQ,MAAM,yBAAyBR,GAAG,gCAAgC;EAC9E;AAEA,MAAMqB,aAAaC,CAAAA,OACjB,OAAOA,OAAM,YACbC,OAAOC,UAAUF,IAAGG,GAAG,KACvBH,GAAEG,OAAO,KACTF,OAAOC,UAAUF,IAAGI,GAAG,KACvBJ,GAAEI,OAAO;AAEX,MAAMC,cAAcL,CAAAA,OAAK,OAAOA,OAAM,YAAY,OAAOA,IAAGM,SAAS;AAErE,MAAMC,sBAAsBC,qBAAqBC,KAC/C,MACiBV,YACCM,WACpB;AAEA,MAAMK,eAAN,MAAmB;IACjB,aAAa,oBAAIC,IAAI;IAErB,YAAYC,QAAQC,QAAQ;IAE5BC,YAAYC,KAAKC,UAAU;AACzB,YAAMC,SAAQ;QACZC,MAAMC,gBAAgBJ,KAAKC,WAAW;UAAEA;QAAS,IAAI,IAAI;MAC3D;AAEA,WAAK,UAAUI,KAAK,MAAM;AACxB,mBAAW,CAACC,QAAQ,KAAK,KAAK,YAAY;AACxCA,mBAASC,KAAK,MAAML,MAAK;QAC3B;MACF,CAAC;IACH;IAEAM,iBAAiBjB,OAAMe,UAAUG,UAAU,MAAM;AAC/C,UAAIC,UAAU;AACd,UAAID,SAASE,kBAAkBC,aAAa;AAC1C,cAAM;UAAED;QAAO,IAAIF;AACnB,YAAIE,OAAOE,SAAS;AAClBC,eAAK,gDAAgD;AACrD;QACF;AACA,cAAMC,UAAUA,MAAM,KAAKC,oBAAoBzB,OAAMe,QAAQ;AAC7DI,kBAAUA,MAAMC,OAAOK,oBAAoB,SAASD,OAAO;AAE3DJ,eAAOH,iBAAiB,SAASO,OAAO;MAC1C;AACA,WAAK,WAAWE,IAAIX,UAAUI,OAAO;IACvC;IAEAM,oBAAoBzB,OAAMe,UAAU;AAClC,YAAMI,UAAU,KAAK,WAAWQ,IAAIZ,QAAQ;AAC5CI,gBAAU;AAEV,WAAK,WAAWS,OAAOb,QAAQ;IACjC;IAEAc,YAAY;AACV,iBAAW,CAAA,EAAGV,OAAO,KAAK,KAAK,YAAY;AACzCA,kBAAU;MACZ;AACA,WAAK,WAAWW,MAAM;IACxB;EACF;ACnIA,MAAMC,eAAe;IACnBC,MAAM;IACNC,OAAO;EACT;AAEA,MAAMC,aAAa;IACjBC,QAAQ;IACRC,iBAAiB;IACjBC,OAAO;IACPC,SAAS;IACTL,OAAO;IACPM,MAAM;IACNC,eAAe;IACfC,gBAAgB;EAClB;AAEA,WAASC,OAAO;EAAC;AAEjB,WAASC,WAAWC,IAAI;AACtB,QACEA,cAAcC,kBACdD,cAAcE,uBACdF,cAAcG,qBACdH,cAAcI,qBACdJ,cAAcK,uBACd;AAEA,aAAOL;IACT;AAEA,QAAI,EAAEA,cAAcM,SAAU,OAAON,OAAO,YAAYA,OAAO,OAAQ;AACrEO,kBACE,gEACF;IACF;AACA,YAAQP,GAAGQ,MAAI;MACb,KAAK;AACH,eAAO,IAAIP,eAAeD,GAAGS,OAAO;MACtC,KAAK;AACH,eAAO,IAAIP,oBAAoBF,GAAGS,OAAO;MAC3C,KAAK;AACH,eAAO,IAAIN,kBAAkBH,GAAGS,SAAST,GAAGU,IAAI;MAClD,KAAK;AACH,eAAO,IAAIN,kBAAkBJ,GAAGS,SAAST,GAAGW,QAAQX,GAAGY,OAAO;MAChE,KAAK;AACH,eAAO,IAAIP,sBAAsBL,GAAGS,SAAST,GAAGa,OAAO;IAC3D;AACA,WAAO,IAAIR,sBAAsBL,GAAGS,SAAST,GAAGc,SAAS,CAAC;EAC5D;AAEA,MAAMC,iBAAN,MAAqB;IACnB,aAAa,IAAIC,gBAAgB;IAEjCC,YAAYC,YAAYC,YAAYC,QAAQ;AAC1C,WAAKF,aAAaA;AAClB,WAAKC,aAAaA;AAClB,WAAKC,SAASA;AACd,WAAKC,aAAa;AAClB,WAAKC,WAAW;AAChB,WAAKC,cAAcC,uBAAOC,OAAO,IAAI;AACrC,WAAKC,oBAAoBF,uBAAOC,OAAO,IAAI;AAC3C,WAAKE,uBAAuBH,uBAAOC,OAAO,IAAI;AAC9C,WAAKG,gBAAgBJ,uBAAOC,OAAO,IAAI;AAEvCL,aAAOS,iBAAiB,WAAW,KAAK,WAAWC,KAAK,IAAI,GAAG;QAC7DC,QAAQ,KAAK,WAAWA;MAC1B,CAAC;IACH;IAEA,WAAW;MAAEC;IAAK,GAAG;AACnB,UAAIA,KAAKb,eAAe,KAAKD,YAAY;AACvC;MACF;AACA,UAAIc,KAAKC,QAAQ;AACf,aAAK,sBAAsBD,IAAI;AAC/B;MACF;AACA,UAAIA,KAAKE,UAAU;AACjB,cAAMb,aAAaW,KAAKX;AACxB,cAAMc,aAAa,KAAKR,qBAAqBN,UAAU;AACvD,YAAI,CAACc,YAAY;AACf,gBAAM,IAAI7B,MAAM,2BAA2Be,UAAU,EAAE;QACzD;AACA,eAAO,KAAKM,qBAAqBN,UAAU;AAE3C,YAAIW,KAAKE,aAAa/C,aAAaC,MAAM;AACvC+C,qBAAWC,QAAQJ,KAAKA,IAAI;QAC9B,WAAWA,KAAKE,aAAa/C,aAAaE,OAAO;AAC/C8C,qBAAWE,OAAOtC,WAAWiC,KAAKM,MAAM,CAAC;QAC3C,OAAO;AACL,gBAAM,IAAIhC,MAAM,0BAA0B;QAC5C;AACA;MACF;AACA,YAAMiC,SAAS,KAAKX,cAAcI,KAAKO,MAAM;AAC7C,UAAI,CAACA,QAAQ;AACX,cAAM,IAAIjC,MAAM,+BAA+B0B,KAAKO,MAAM,EAAE;MAC9D;AACA,UAAIP,KAAKX,YAAY;AACnB,cAAMH,aAAa,KAAKA,YACtBC,aAAaa,KAAKd,YAClBE,SAAS,KAAKA;AAEhBoB,gBAAQC,IAAIF,QAAQP,KAAKA,IAAI,EAAEU,KAC7B,SAAUC,QAAQ;AAChBvB,iBAAOwB,YAAY;YACjB1B;YACAC;YACAe,UAAU/C,aAAaC;YACvBiC,YAAYW,KAAKX;YACjBW,MAAMW;UACR,CAAC;QACH,GACA,SAAUL,QAAQ;AAChBlB,iBAAOwB,YAAY;YACjB1B;YACAC;YACAe,UAAU/C,aAAaE;YACvBgC,YAAYW,KAAKX;YACjBiB,QAAQvC,WAAWuC,MAAM;UAC3B,CAAC;QACH,CACF;AACA;MACF;AACA,UAAIN,KAAKV,UAAU;AACjB,aAAK,kBAAkBU,IAAI;AAC3B;MACF;AACAO,aAAOP,KAAKA,IAAI;IAClB;IAEAa,GAAGC,YAAYC,SAAS;AAOtB,YAAMC,KAAK,KAAKpB;AAChB,UAAIoB,GAAGF,UAAU,GAAG;AAClB,cAAM,IAAIxC,MAAM,0CAA0CwC,UAAU,GAAG;MACzE;AACAE,SAAGF,UAAU,IAAIC;IACnB;IAQAE,KAAKH,YAAYd,MAAMkB,WAAW;AAChC,WAAK9B,OAAOwB,YACV;QACE1B,YAAY,KAAKA;QACjBC,YAAY,KAAKA;QACjBoB,QAAQO;QACRd;MACF,GACAkB,SACF;IACF;IAUAC,gBAAgBL,YAAYd,MAAMkB,WAAW;AAC3C,YAAM7B,aAAa,KAAKA;AACxB,YAAMc,aAAaK,QAAQY,cAAc;AACzC,WAAKzB,qBAAqBN,UAAU,IAAIc;AACxC,UAAI;AACF,aAAKf,OAAOwB,YACV;UACE1B,YAAY,KAAKA;UACjBC,YAAY,KAAKA;UACjBoB,QAAQO;UACRzB;UACAW;QACF,GACAkB,SACF;MACF,SAASlD,IAAI;AACXmC,mBAAWE,OAAOrC,EAAE;MACtB;AACA,aAAOmC,WAAWkB;IACpB;IAYAC,eAAeR,YAAYd,MAAMuB,kBAAkBL,WAAW;AAC5D,YAAM5B,WAAW,KAAKA,YACpBJ,aAAa,KAAKA,YAClBC,aAAa,KAAKA,YAClBC,SAAS,KAAKA;AAEhB,aAAO,IAAIoC,eACT;QACEC,OAAOC,gBAAc;AACnB,gBAAMC,kBAAkBnB,QAAQY,cAAc;AAC9C,eAAK1B,kBAAkBJ,QAAQ,IAAI;YACjCoC;YACAE,WAAWD;YACXE,UAAU;YACVC,YAAY;YACZC,UAAU;UACZ;AACA3C,iBAAOwB,YACL;YACE1B;YACAC;YACAoB,QAAQO;YACRxB;YACAU;YACAgC,aAAaN,WAAWM;UAC1B,GACAd,SACF;AAEA,iBAAOS,gBAAgBN;QACzB;QAEAY,MAAMP,gBAAc;AAClB,gBAAMQ,iBAAiB1B,QAAQY,cAAc;AAC7C,eAAK1B,kBAAkBJ,QAAQ,EAAEuC,WAAWK;AAC5C9C,iBAAOwB,YAAY;YACjB1B;YACAC;YACAc,QAAQ3C,WAAWK;YACnB2B;YACA0C,aAAaN,WAAWM;UAC1B,CAAC;AAGD,iBAAOE,eAAeb;QACxB;QAEAc,QAAQ7B,YAAU;AAChB8B,UAAAA,QAAO9B,kBAAkBhC,OAAO,iCAAiC;AACjE,gBAAM+D,mBAAmB7B,QAAQY,cAAc;AAC/C,eAAK1B,kBAAkBJ,QAAQ,EAAEwC,aAAaO;AAC9C,eAAK3C,kBAAkBJ,QAAQ,EAAEyC,WAAW;AAC5C3C,iBAAOwB,YAAY;YACjB1B;YACAC;YACAc,QAAQ3C,WAAWC;YACnB+B;YACAgB,QAAQvC,WAAWuC,MAAM;UAC3B,CAAC;AAED,iBAAO+B,iBAAiBhB;QAC1B;MACF,GACAE,gBACF;IACF;IAEA,kBAAkBvB,MAAM;AACtB,YAAMV,WAAWU,KAAKV,UACpBJ,aAAa,KAAKA,YAClBC,aAAaa,KAAKd,YAClBE,SAAS,KAAKA;AAChB,YAAMkD,QAAO,MACX/B,SAAS,KAAKX,cAAcI,KAAKO,MAAM;AAEzC,YAAMgC,aAAa;QACjBC,QAAQC,OAAOC,OAAO,GAAGxB,WAAW;AAClC,cAAI,KAAKyB,aAAa;AACpB;UACF;AACA,gBAAMC,kBAAkB,KAAKZ;AAC7B,eAAKA,eAAeU;AAIpB,cAAIE,kBAAkB,KAAK,KAAKZ,eAAe,GAAG;AAChD,iBAAKa,iBAAiBrC,QAAQY,cAAc;AAC5C,iBAAK0B,QAAQ,KAAKD,eAAexB;UACnC;AACAjC,iBAAOwB,YACL;YACE1B;YACAC;YACAc,QAAQ3C,WAAWI;YACnB4B;YACAmD;UACF,GACAvB,SACF;QACF;QAEA6B,QAAQ;AACN,cAAI,KAAKJ,aAAa;AACpB;UACF;AACA,eAAKA,cAAc;AACnBvD,iBAAOwB,YAAY;YACjB1B;YACAC;YACAc,QAAQ3C,WAAWG;YACnB6B;UACF,CAAC;AACD,iBAAOgD,MAAK/C,YAAYD,QAAQ;QAClC;QAEA0D,MAAM1C,QAAQ;AACZ8B,UAAAA,QAAO9B,kBAAkBhC,OAAO,gCAAgC;AAChE,cAAI,KAAKqE,aAAa;AACpB;UACF;AACA,eAAKA,cAAc;AACnBvD,iBAAOwB,YAAY;YACjB1B;YACAC;YACAc,QAAQ3C,WAAWD;YACnBiC;YACAgB,QAAQvC,WAAWuC,MAAM;UAC3B,CAAC;QACH;QAEAuC,gBAAgBrC,QAAQY,cAAc;QACtC6B,QAAQ;QACRC,UAAU;QACVP,aAAa;QACbX,aAAahC,KAAKgC;QAClBc,OAAO;MACT;AAEAP,iBAAWM,eAAezC,QAAQ;AAClCmC,iBAAWO,QAAQP,WAAWM,eAAexB;AAC7C,WAAK9B,YAAYD,QAAQ,IAAIiD;AAE7B/B,cAAQC,IAAIF,QAAQP,KAAKA,MAAMuC,UAAU,EAAE7B,KACzC,WAAY;AACVtB,eAAOwB,YAAY;UACjB1B;UACAC;UACAc,QAAQ3C,WAAWO;UACnByB;UACA6D,SAAS;QACX,CAAC;MACH,GACA,SAAU7C,QAAQ;AAChBlB,eAAOwB,YAAY;UACjB1B;UACAC;UACAc,QAAQ3C,WAAWO;UACnByB;UACAgB,QAAQvC,WAAWuC,MAAM;QAC3B,CAAC;MACH,CACF;IACF;IAEA,sBAAsBN,MAAM;AAC1B,YAAMV,WAAWU,KAAKV,UACpBJ,aAAa,KAAKA,YAClBC,aAAaa,KAAKd,YAClBE,SAAS,KAAKA;AAChB,YAAMgE,mBAAmB,KAAK1D,kBAAkBJ,QAAQ,GACtDiD,aAAa,KAAKhD,YAAYD,QAAQ;AAExC,cAAQU,KAAKC,QAAM;QACjB,KAAK3C,WAAWO;AACd,cAAImC,KAAKmD,SAAS;AAChBC,6BAAiBxB,UAAUxB,QAAQ;UACrC,OAAO;AACLgD,6BAAiBxB,UAAUvB,OAAOtC,WAAWiC,KAAKM,MAAM,CAAC;UAC3D;AACA;QACF,KAAKhD,WAAWM;AACd,cAAIoC,KAAKmD,SAAS;AAChBC,6BAAiBvB,SAASzB,QAAQ;UACpC,OAAO;AACLgD,6BAAiBvB,SAASxB,OAAOtC,WAAWiC,KAAKM,MAAM,CAAC;UAC1D;AACA;QACF,KAAKhD,WAAWK;AAEd,cAAI,CAAC4E,YAAY;AACfnD,mBAAOwB,YAAY;cACjB1B;cACAC;cACAc,QAAQ3C,WAAWM;cACnB0B;cACA6D,SAAS;YACX,CAAC;AACD;UACF;AAGA,cAAIZ,WAAWP,eAAe,KAAKhC,KAAKgC,cAAc,GAAG;AACvDO,uBAAWM,eAAezC,QAAQ;UACpC;AAEAmC,qBAAWP,cAAchC,KAAKgC;AAE9BxB,kBAAQC,IAAI8B,WAAWU,UAAUnF,IAAI,EAAE4C,KACrC,WAAY;AACVtB,mBAAOwB,YAAY;cACjB1B;cACAC;cACAc,QAAQ3C,WAAWM;cACnB0B;cACA6D,SAAS;YACX,CAAC;UACH,GACA,SAAU7C,QAAQ;AAChBlB,mBAAOwB,YAAY;cACjB1B;cACAC;cACAc,QAAQ3C,WAAWM;cACnB0B;cACAgB,QAAQvC,WAAWuC,MAAM;YAC3B,CAAC;UACH,CACF;AACA;QACF,KAAKhD,WAAWI;AACd0E,UAAAA,QAAOgB,kBAAkB,uCAAuC;AAChE,cAAIA,iBAAiBrB,UAAU;AAC7B;UACF;AACAqB,2BAAiB1B,WAAWc,QAAQxC,KAAKyC,KAAK;AAC9C;QACF,KAAKnF,WAAWG;AACd2E,UAAAA,QAAOgB,kBAAkB,qCAAqC;AAC9D,cAAIA,iBAAiBrB,UAAU;AAC7B;UACF;AACAqB,2BAAiBrB,WAAW;AAC5BqB,2BAAiB1B,WAAWqB,MAAM;AAClC,eAAK,wBAAwBK,kBAAkB9D,QAAQ;AACvD;QACF,KAAKhC,WAAWD;AACd+E,UAAAA,QAAOgB,kBAAkB,qCAAqC;AAC9DA,2BAAiB1B,WAAWsB,MAAMjF,WAAWiC,KAAKM,MAAM,CAAC;AACzD,eAAK,wBAAwB8C,kBAAkB9D,QAAQ;AACvD;QACF,KAAKhC,WAAWE;AACd,cAAIwC,KAAKmD,SAAS;AAChBC,6BAAiBtB,WAAW1B,QAAQ;UACtC,OAAO;AACLgD,6BAAiBtB,WAAWzB,OAAOtC,WAAWiC,KAAKM,MAAM,CAAC;UAC5D;AACA,eAAK,wBAAwB8C,kBAAkB9D,QAAQ;AACvD;QACF,KAAKhC,WAAWC;AACd,cAAI,CAACgF,YAAY;AACf;UACF;AACA,gBAAMc,aAAatF,WAAWiC,KAAKM,MAAM;AAEzCE,kBAAQC,IAAI8B,WAAWW,YAAYpF,MAAMuF,UAAU,EAAE3C,KACnD,WAAY;AACVtB,mBAAOwB,YAAY;cACjB1B;cACAC;cACAc,QAAQ3C,WAAWE;cACnB8B;cACA6D,SAAS;YACX,CAAC;UACH,GACA,SAAU7C,QAAQ;AAChBlB,mBAAOwB,YAAY;cACjB1B;cACAC;cACAc,QAAQ3C,WAAWE;cACnB8B;cACAgB,QAAQvC,WAAWuC,MAAM;YAC3B,CAAC;UACH,CACF;AACAiC,qBAAWM,eAAexC,OAAOgD,UAAU;AAC3Cd,qBAAWI,cAAc;AACzB,iBAAO,KAAKpD,YAAYD,QAAQ;AAChC;QACF;AACE,gBAAM,IAAIhB,MAAM,wBAAwB;MAC5C;IACF;IAEA,MAAM,wBAAwB8E,kBAAkB9D,UAAU;AAGxD,YAAMkB,QAAQ8C,WAAW,CACvBF,iBAAiBxB,WAAWP,SAC5B+B,iBAAiBvB,UAAUR,SAC3B+B,iBAAiBtB,YAAYT,OAAO,CACrC;AACD,aAAO,KAAK3B,kBAAkBJ,QAAQ;IACxC;IAEAiE,UAAU;AACR,WAAK,YAAYC,MAAM;AACvB,WAAK,aAAa;IACpB;EACF;ACtgBA,MAAMC,oBAAN,MAAwB;IACtB,aAAa;IAEbC,YAAY;MAAEC,YAAY;IAAM,GAAG;AAOjC,WAAK,aAAaA;IACpB;IAEAC,OAAOC,OAAOC,QAAQ;AACpB,UAAID,SAAS,KAAKC,UAAU,GAAG;AAC7B,cAAM,IAAIC,MAAM,qBAAqB;MACvC;AACA,YAAMC,SAAS,KAAKC,cAAcJ,OAAOC,MAAM;AAC/C,aAAO;QACLE;QACAE,SAASF,OAAOG,WAAW,MAAM;UAC/BC,oBAAoB,CAAC,KAAK;QAC5B,CAAC;MACH;IACF;IAEAC,MAAMC,kBAAkBT,OAAOC,QAAQ;AACrC,UAAI,CAACQ,iBAAiBN,QAAQ;AAC5B,cAAM,IAAID,MAAM,yBAAyB;MAC3C;AACA,UAAIF,SAAS,KAAKC,UAAU,GAAG;AAC7B,cAAM,IAAIC,MAAM,qBAAqB;MACvC;AACAO,uBAAiBN,OAAOH,QAAQA;AAChCS,uBAAiBN,OAAOF,SAASA;IACnC;IAEAS,QAAQD,kBAAkB;AACxB,UAAI,CAACA,iBAAiBN,QAAQ;AAC5B,cAAM,IAAID,MAAM,yBAAyB;MAC3C;AAGAO,uBAAiBN,OAAOH,QAAQ;AAChCS,uBAAiBN,OAAOF,SAAS;AACjCQ,uBAAiBN,SAAS;AAC1BM,uBAAiBJ,UAAU;IAC7B;IAKAD,cAAcJ,OAAOC,QAAQ;AAC3BU,kBAAY,yCAAyC;IACvD;EACF;AAEA,MAAMC,mBAAN,cAA+BhB,kBAAkB;IAC/CC,YAAY;MAAEgB,gBAAgBC,WAAWC;MAAUjB,YAAY;IAAM,GAAG;AACtE,YAAM;QAAEA;MAAU,CAAC;AACnB,WAAKkB,YAAYH;IACnB;IAKAT,cAAcJ,OAAOC,QAAQ;AAC3B,YAAME,SAAS,KAAKa,UAAUC,cAAc,QAAQ;AACpDd,aAAOH,QAAQA;AACfG,aAAOF,SAASA;AAChB,aAAOE;IACT;EACF;ACvEA,MAAMe,wBAAN,MAA4B;IAC1BC,YAAY;MAAEC,UAAU;MAAMC,eAAe;IAAK,GAAG;AAOnD,WAAKD,UAAUA;AACf,WAAKC,eAAeA;IACtB;IAEA,MAAMC,MAAM;MAAEC,MAAAA;IAAK,GAAG;AACpB,UAAI,CAAC,KAAKH,SAAS;AACjB,cAAM,IAAII,MACR,yEACF;MACF;AACA,UAAI,CAACD,OAAM;AACT,cAAM,IAAIC,MAAM,8BAA8B;MAChD;AACA,YAAMC,MAAM,KAAKL,UAAUG,SAAQ,KAAKF,eAAe,WAAW;AAElE,aAAO,KAAKK,OAAOD,GAAG,EACnBE,KAAKC,eAAa;QAAEA;QAAUP,cAAc,KAAKA;MAAa,EAAE,EAChEQ,MAAMC,YAAU;AACf,cAAM,IAAIN,MACR,kBAAkB,KAAKH,eAAe,YAAY,EAAE,YAAYI,GAAG,EACrE;MACF,CAAC;IACL;IAMA,MAAMC,OAAOD,KAAK;AAChBM,kBAAY,kCAAkC;IAChD;EACF;AAEA,MAAMC,uBAAN,cAAmCd,sBAAsB;IAIvD,MAAMQ,OAAOD,KAAK;AAChB,YAAMQ,OAAO,MAAMC,UACjBT,KACa,KAAKJ,eAAe,gBAAgB,MACnD;AACA,aAAOY,gBAAgBE,cACnB,IAAIC,WAAWH,IAAI,IACnBI,cAAcJ,IAAI;IACxB;EACF;ACtDA,MAAMK,oBAAN,MAAwB;IAUtBC,UAAUC,MAAM;AACd,aAAO;IACT;IAEAC,aAAaC,SAASC,SAAS;AAC7B,aAAO;IACT;IAEAC,eAAeC,MAAK;AAClB,aAAO;IACT;IAEAC,oBAAoBD,MAAK;AACvB,aAAO;IACT;IAEAE,sBAAsBC,YAAYN,SAASC,SAASM,YAAYC,YAAY;AAC1E,aAAO;IACT;IAEAC,QAAQC,UAAU,OAAO;IAAC;EAC5B;AAWA,MAAMC,mBAAN,cAA+Bf,kBAAkB;IAC/C;IAEA;IAEA;IAEA;IAEA;IAEA;IAEA,MAAM;IAENgB,YAAY;MAAEC;MAAOC,gBAAgBC,WAAWC;IAAS,GAAG;AAC1D,YAAM;AACN,WAAK,SAASH;AACd,WAAK,YAAYC;IACnB;IAEA,IAAI,SAAS;AACX,aAAQ,KAAK,YAAY,oBAAIG,IAAI;IACnC;IAEA,IAAI,YAAY;AACd,aAAQ,KAAK,eAAe,oBAAIA,IAAI;IACtC;IAEA,IAAI,QAAQ;AACV,UAAI,CAAC,KAAK,QAAQ;AAChB,cAAMC,MAAM,KAAK,UAAUC,cAAc,KAAK;AAC9C,cAAM;UAAEC;QAAM,IAAIF;AAClBE,cAAMC,aAAa;AACnBD,cAAME,UAAU;AAChBF,cAAMG,QAAQH,MAAMI,SAAS;AAC7BJ,cAAMK,WAAW;AACjBL,cAAMM,MAAMN,MAAMO,OAAO;AACzBP,cAAMQ,SAAS;AAEf,cAAMC,MAAM,KAAK,UAAUC,gBAAgBC,QAAQ,KAAK;AACxDF,YAAIG,aAAa,SAAS,CAAC;AAC3BH,YAAIG,aAAa,UAAU,CAAC;AAC5B,aAAK,SAAS,KAAK,UAAUF,gBAAgBC,QAAQ,MAAM;AAC3Db,YAAIe,OAAOJ,GAAG;AACdA,YAAII,OAAO,KAAK,MAAM;AACtB,aAAK,UAAUC,KAAKD,OAAOf,GAAG;MAChC;AACA,aAAO,KAAK;IACd;IAEA,cAAcpB,MAAM;AAClB,UAAIA,KAAKqC,WAAW,GAAG;AACrB,cAAMC,QAAOtC,KAAK,CAAC;AACnB,cAAMuC,UAAS,IAAIC,MAAM,GAAG;AAC5B,iBAASC,KAAI,GAAGA,KAAI,KAAKA,MAAK;AAC5BF,UAAAA,QAAOE,EAAC,IAAIH,MAAKG,EAAC,IAAI;QACxB;AAEA,cAAMC,QAAQH,QAAOI,KAAK,GAAG;AAC7B,eAAO,CAACD,OAAOA,OAAOA,KAAK;MAC7B;AAEA,YAAM,CAACJ,MAAMM,MAAMC,IAAI,IAAI7C;AAC3B,YAAM8C,UAAU,IAAIN,MAAM,GAAG;AAC7B,YAAMO,UAAU,IAAIP,MAAM,GAAG;AAC7B,YAAMQ,UAAU,IAAIR,MAAM,GAAG;AAC7B,eAASC,KAAI,GAAGA,KAAI,KAAKA,MAAK;AAC5BK,gBAAQL,EAAC,IAAIH,KAAKG,EAAC,IAAI;AACvBM,gBAAQN,EAAC,IAAIG,KAAKH,EAAC,IAAI;AACvBO,gBAAQP,EAAC,IAAII,KAAKJ,EAAC,IAAI;MACzB;AACA,aAAO,CAACK,QAAQH,KAAK,GAAG,GAAGI,QAAQJ,KAAK,GAAG,GAAGK,QAAQL,KAAK,GAAG,CAAC;IACjE;IAEA,WAAWM,IAAI;AACb,UAAI,KAAK,aAAaC,QAAW;AAE/B,aAAK,WAAW;AAEhB,cAAMC,MAAM,KAAK,UAAUC;AAC3B,YAAID,QAAQ,KAAK,UAAUE,SAAS;AAClC,cAAIC,aAAaH,GAAG,GAAG;AACrBI,iBAAK,yDAAyD;UAChE,OAAO;AACL,iBAAK,WAAWC,cAAcL,KAAK,EAAE;UACvC;QACF;MACF;AACA,aAAO,OAAO,KAAK,QAAQ,IAAIF,EAAE;IACnC;IAEAlD,UAAUC,MAAM;AACd,UAAI,CAACA,MAAM;AACT,eAAO;MACT;AAIA,UAAIyD,QAAQ,KAAK,OAAOC,IAAI1D,IAAI;AAChC,UAAIyD,OAAO;AACT,eAAOA;MACT;AAEA,YAAM,CAACE,QAAQC,QAAQC,MAAM,IAAI,KAAK,cAAc7D,IAAI;AACxD,YAAM8D,MAAM9D,KAAKqC,WAAW,IAAIsB,SAAS,GAAGA,MAAM,GAAGC,MAAM,GAAGC,MAAM;AAEpEJ,cAAQ,KAAK,OAAOC,IAAII,GAAG;AAC3B,UAAIL,OAAO;AACT,aAAK,OAAOM,IAAI/D,MAAMyD,KAAK;AAC3B,eAAOA;MACT;AAKA,YAAMR,KAAK,KAAK,KAAK,MAAM,iBAAiB,KAAK,KAAK;AACtD,YAAME,MAAM,KAAK,WAAWF,EAAE;AAC9B,WAAK,OAAOc,IAAI/D,MAAMmD,GAAG;AACzB,WAAK,OAAOY,IAAID,KAAKX,GAAG;AAExB,YAAMa,SAAS,KAAK,cAAcf,EAAE;AACpC,WAAK,0BAA0BU,QAAQC,QAAQC,QAAQG,MAAM;AAE7D,aAAOb;IACT;IAEAlD,aAAaC,SAASC,SAAS;AAC7B,YAAM2D,MAAM,GAAG5D,OAAO,IAAIC,OAAO;AACjC,YAAMK,aAAa;AACnB,UAAIyD,QAAO,KAAK,UAAUP,IAAIlD,UAAU;AACxC,UAAIyD,OAAMH,QAAQA,KAAK;AACrB,eAAOG,MAAKd;MACd;AAEA,UAAIc,OAAM;AACRA,QAAAA,MAAKD,QAAQE,OAAO;AACpBD,QAAAA,MAAKH,MAAMA;AACXG,QAAAA,MAAKd,MAAM;AACXc,QAAAA,MAAKD,SAAS;MAChB,OAAO;AACLC,QAAAA,QAAO;UACLH;UACAX,KAAK;UACLa,QAAQ;QACV;AACA,aAAK,UAAUD,IAAIvD,YAAYyD,KAAI;MACrC;AAEA,UAAI,CAAC/D,WAAW,CAACC,SAAS;AACxB,eAAO8D,MAAKd;MACd;AAEA,YAAMgB,QAAQ,KAAK,QAAQjE,OAAO;AAClCA,gBAAUkE,KAAKC,aAAa,GAAGF,KAAK;AACpC,YAAMG,QAAQ,KAAK,QAAQnE,OAAO;AAClCA,gBAAUiE,KAAKC,aAAa,GAAGC,KAAK;AACpC,WAAK,MAAMhD,MAAMiD,QAAQ;AAEzB,UACGrE,YAAY,aAAaC,YAAY,aACtCD,YAAYC,SACZ;AACA,eAAO8D,MAAKd;MACd;AAWA,YAAM9C,OAAM,IAAImC,MAAM,GAAG;AACzB,eAASC,KAAI,GAAGA,MAAK,KAAKA,MAAK;AAC7B,cAAM+B,KAAI/B,KAAI;AACdpC,QAAAA,KAAIoC,EAAC,IAAI+B,MAAK,UAAUA,KAAI,UAAUA,KAAI,SAAS,UAAU;MAC/D;AACA,YAAM9B,QAAQrC,KAAIsC,KAAK,GAAG;AAE1B,YAAMM,KAAK,KAAK,KAAK,MAAM;AAC3B,YAAMe,SAAUC,MAAKD,SAAS,KAAK,cAAcf,EAAE;AACnD,WAAK,0BAA0BP,OAAOA,OAAOA,OAAOsB,MAAM;AAC1D,WAAK,mBAAmBA,MAAM;AAE9B,YAAMS,WAAWA,CAACC,IAAGC,OAAM;AACzB,cAAMC,SAAQT,MAAMO,EAAC,IAAI;AACzB,cAAMG,MAAMP,MAAMI,EAAC,IAAI;AACvB,cAAMI,MAAM,IAAItC,MAAMmC,KAAI,CAAC;AAC3B,iBAASlC,KAAI,GAAGA,MAAKkC,IAAGlC,MAAK;AAC3BqC,cAAIrC,EAAC,IAAImC,SAASnC,KAAIkC,MAAME,MAAMD;QACpC;AACA,eAAOE,IAAInC,KAAK,GAAG;MACrB;AACA,WAAK,0BACH8B,SAAS,GAAG,CAAC,GACbA,SAAS,GAAG,CAAC,GACbA,SAAS,GAAG,CAAC,GACbT,MACF;AAEAC,MAAAA,MAAKd,MAAM,KAAK,WAAWF,EAAE;AAC7B,aAAOgB,MAAKd;IACd;IAEA/C,eAAeC,MAAK;AAGlB,UAAIoD,QAAQ,KAAK,OAAOC,IAAIrD,IAAG;AAC/B,UAAIoD,OAAO;AACT,eAAOA;MACT;AAEA,YAAM,CAACsB,MAAM,IAAI,KAAK,cAAc,CAAC1E,IAAG,CAAC;AACzC,YAAMyD,MAAM,SAASiB,MAAM;AAE3BtB,cAAQ,KAAK,OAAOC,IAAII,GAAG;AAC3B,UAAIL,OAAO;AACT,aAAK,OAAOM,IAAI1D,MAAKoD,KAAK;AAC1B,eAAOA;MACT;AAEA,YAAMR,KAAK,KAAK,KAAK,MAAM,cAAc,KAAK,KAAK;AACnD,YAAME,MAAM,KAAK,WAAWF,EAAE;AAC9B,WAAK,OAAOc,IAAI1D,MAAK8C,GAAG;AACxB,WAAK,OAAOY,IAAID,KAAKX,GAAG;AAExB,YAAMa,SAAS,KAAK,cAAcf,EAAE;AACpC,WAAK,+BAA+B8B,QAAQf,MAAM;AAElD,aAAOb;IACT;IAEA7C,oBAAoBD,MAAK;AAGvB,UAAIoD,QAAQ,KAAK,OAAOC,IAAIrD,QAAO,YAAY;AAC/C,UAAIoD,OAAO;AACT,eAAOA;MACT;AAEA,UAAIsB,QAAQjB;AACZ,UAAIzD,MAAK;AACP,SAAC0E,MAAM,IAAI,KAAK,cAAc,CAAC1E,IAAG,CAAC;AACnCyD,cAAM,cAAciB,MAAM;MAC5B,OAAO;AACLjB,cAAM;MACR;AAEAL,cAAQ,KAAK,OAAOC,IAAII,GAAG;AAC3B,UAAIL,OAAO;AACT,aAAK,OAAOM,IAAI1D,MAAKoD,KAAK;AAC1B,eAAOA;MACT;AAEA,YAAMR,KAAK,KAAK,KAAK,MAAM,mBAAmB,KAAK,KAAK;AACxD,YAAME,MAAM,KAAK,WAAWF,EAAE;AAC9B,WAAK,OAAOc,IAAI1D,MAAK8C,GAAG;AACxB,WAAK,OAAOY,IAAID,KAAKX,GAAG;AAExB,YAAMa,SAAS,KAAK,cAAcf,EAAE;AACpC,WAAK,yBAAyBe,MAAM;AACpC,UAAI3D,MAAK;AACP,aAAK,+BAA+B0E,QAAQf,MAAM;MACpD;AAEA,aAAOb;IACT;IAEA5C,sBAAsBC,YAAYN,SAASC,SAASM,YAAYC,YAAY;AAC1E,YAAMoD,MAAM,GAAG5D,OAAO,IAAIC,OAAO,IAAIM,UAAU,IAAIC,UAAU;AAC7D,UAAIuD,QAAO,KAAK,UAAUP,IAAIlD,UAAU;AACxC,UAAIyD,OAAMH,QAAQA,KAAK;AACrB,eAAOG,MAAKd;MACd;AAEA,UAAIc,OAAM;AACRA,QAAAA,MAAKD,QAAQE,OAAO;AACpBD,QAAAA,MAAKH,MAAMA;AACXG,QAAAA,MAAKd,MAAM;AACXc,QAAAA,MAAKD,SAAS;MAChB,OAAO;AACLC,QAAAA,QAAO;UACLH;UACAX,KAAK;UACLa,QAAQ;QACV;AACA,aAAK,UAAUD,IAAIvD,YAAYyD,KAAI;MACrC;AAEA,UAAI,CAAC/D,WAAW,CAACC,SAAS;AACxB,eAAO8D,MAAKd;MACd;AAEA,YAAM,CAACgB,OAAOG,KAAK,IAAI,CAACpE,SAASC,OAAO,EAAEE,IAAI,KAAK,QAAQ2E,KAAK,IAAI,CAAC;AACrE,UAAIC,SAASC,KAAKC,MAChB,SAAShB,MAAM,CAAC,IAAI,SAASA,MAAM,CAAC,IAAI,SAASA,MAAM,CAAC,CAC1D;AACA,UAAIiB,SAASF,KAAKC,MAChB,SAASb,MAAM,CAAC,IAAI,SAASA,MAAM,CAAC,IAAI,SAASA,MAAM,CAAC,CAC1D;AACA,UAAI,CAACe,UAAUC,QAAQ,IAAI,CAAC7E,YAAYC,UAAU,EAAEL,IAClD,KAAK,QAAQ2E,KAAK,IAAI,CACxB;AACA,UAAII,SAASH,QAAQ;AACnB,SAACA,QAAQG,QAAQC,UAAUC,QAAQ,IAAI,CACrCF,QACAH,QACAK,UACAD,QAAQ;MAEZ;AACA,WAAK,MAAM/D,MAAMiD,QAAQ;AAezB,YAAME,WAAWA,CAACc,IAAIC,IAAIb,OAAM;AAC9B,cAAMG,MAAM,IAAItC,MAAM,GAAG;AACzB,cAAMiD,QAAQL,SAASH,UAAUN;AACjC,cAAMe,WAAWH,KAAK;AACtB,cAAMI,WAAWH,KAAKD,OAAO,MAAMZ;AACnC,YAAIiB,OAAO;AACX,iBAASnD,KAAI,GAAGA,MAAKkC,IAAGlC,MAAK;AAC3B,gBAAMoD,KAAIX,KAAKC,MAAMF,SAASxC,KAAIgD,IAAI;AACtC,gBAAMhC,QAAQiC,WAAWjD,KAAIkD;AAC7B,mBAASG,KAAIF,MAAME,MAAKD,IAAGC,MAAK;AAC9BhB,gBAAIgB,EAAC,IAAIrC;UACX;AACAmC,iBAAOC,KAAI;QACb;AACA,iBAASpD,KAAImD,MAAMnD,KAAI,KAAKA,MAAK;AAC/BqC,cAAIrC,EAAC,IAAIqC,IAAIc,OAAO,CAAC;QACvB;AACA,eAAOd,IAAInC,KAAK,GAAG;MACrB;AAEA,YAAMM,KAAK,KAAK,KAAK,MAAM,QAAQzC,UAAU;AAC7C,YAAMwD,SAAUC,MAAKD,SAAS,KAAK,cAAcf,EAAE;AAEnD,WAAK,mBAAmBe,MAAM;AAC9B,WAAK,0BACHS,SAASY,SAAS,CAAC,GAAGC,SAAS,CAAC,GAAG,CAAC,GACpCb,SAASY,SAAS,CAAC,GAAGC,SAAS,CAAC,GAAG,CAAC,GACpCb,SAASY,SAAS,CAAC,GAAGC,SAAS,CAAC,GAAG,CAAC,GACpCtB,MACF;AAEAC,MAAAA,MAAKd,MAAM,KAAK,WAAWF,EAAE;AAC7B,aAAOgB,MAAKd;IACd;IAEAxC,QAAQC,UAAU,OAAO;AACvB,UAAIA,WAAW,KAAK,YAAYmF,MAAM;AACpC;MACF;AACA,WAAK,QAAQC,WAAWA,WAAW9B,OAAO;AAC1C,WAAK,SAAS;AAEd,WAAK,SAAS+B,MAAM;AACpB,WAAK,UAAU;AAEf,WAAK,YAAYA,MAAM;AACvB,WAAK,aAAa;AAElB,WAAK,MAAM;IACb;IAEA,yBAAyBjC,QAAQ;AAC/B,YAAMkC,gBAAgB,KAAK,UAAUlE,gBACnCC,QACA,eACF;AACAiE,oBAAchE,aAAa,QAAQ,QAAQ;AAC3CgE,oBAAchE,aACZ,UACA,iDACF;AACA8B,aAAO7B,OAAO+D,aAAa;IAC7B;IAEA,mBAAmBlC,QAAQ;AACzB,YAAMkC,gBAAgB,KAAK,UAAUlE,gBACnCC,QACA,eACF;AACAiE,oBAAchE,aAAa,QAAQ,QAAQ;AAC3CgE,oBAAchE,aACZ,UACA,sFACF;AACA8B,aAAO7B,OAAO+D,aAAa;IAC7B;IAEA,cAAcjD,IAAI;AAChB,YAAMe,SAAS,KAAK,UAAUhC,gBAAgBC,QAAQ,QAAQ;AAC9D+B,aAAO9B,aAAa,+BAA+B,MAAM;AACzD8B,aAAO9B,aAAa,MAAMe,EAAE;AAC5B,WAAK,MAAMd,OAAO6B,MAAM;AAExB,aAAOA;IACT;IAEA,cAAcmC,qBAAqBC,MAAM1D,OAAO;AAC9C,YAAM2D,SAAS,KAAK,UAAUrE,gBAAgBC,QAAQmE,IAAI;AAC1DC,aAAOnE,aAAa,QAAQ,UAAU;AACtCmE,aAAOnE,aAAa,eAAeQ,KAAK;AACxCyD,0BAAoBhE,OAAOkE,MAAM;IACnC;IAEA,0BAA0BC,QAAQC,QAAQC,QAAQxC,QAAQ;AACxD,YAAMmC,sBAAsB,KAAK,UAAUnE,gBACzCC,QACA,qBACF;AACA+B,aAAO7B,OAAOgE,mBAAmB;AACjC,WAAK,cAAcA,qBAAqB,WAAWG,MAAM;AACzD,WAAK,cAAcH,qBAAqB,WAAWI,MAAM;AACzD,WAAK,cAAcJ,qBAAqB,WAAWK,MAAM;IAC3D;IAEA,+BAA+BC,QAAQzC,QAAQ;AAC7C,YAAMmC,sBAAsB,KAAK,UAAUnE,gBACzCC,QACA,qBACF;AACA+B,aAAO7B,OAAOgE,mBAAmB;AACjC,WAAK,cAAcA,qBAAqB,WAAWM,MAAM;IAC3D;IAEA,QAAQlC,QAAO;AACb,WAAK,MAAMjD,MAAMiD,QAAQA;AACzB,aAAOmC,OAAOC,iBAAiB,KAAK,KAAK,EAAEC,iBAAiB,OAAO,CAAC;IACtE;EACF;ACxeA,MAAMC,8BAAN,MAAkC;IAChCC,YAAY;MAAEC,UAAU;IAAK,GAAG;AAO9B,WAAKA,UAAUA;IACjB;IAEA,MAAMC,MAAM;MAAEC;IAAS,GAAG;AACxB,UAAI,CAAC,KAAKF,SAAS;AACjB,cAAM,IAAIG,MACR,kEACF;MACF;AACA,UAAI,CAACD,UAAU;AACb,cAAM,IAAIC,MAAM,kCAAkC;MACpD;AACA,YAAMC,MAAM,GAAG,KAAKJ,OAAO,GAAGE,QAAQ;AAEtC,aAAO,KAAKG,OAAOD,GAAG,EAAEE,MAAMC,YAAU;AACtC,cAAM,IAAIJ,MAAM,gCAAgCC,GAAG,EAAE;MACvD,CAAC;IACH;IAMA,MAAMC,OAAOD,KAAK;AAChBI,kBAAY,kCAAkC;IAChD;EACF;AAEA,MAAMC,6BAAN,cAAyCX,4BAA4B;IAInE,MAAMO,OAAOD,KAAK;AAChB,YAAMM,OAAO,MAAMC,UAAUP,KAAkB,aAAa;AAC5D,aAAO,IAAIQ,WAAWF,IAAI;IAC5B;EACF;AC5CA,MAAMG,kBAAN,MAAsB;IACpBC,YAAY;MAAEC,UAAU;IAAK,GAAG;AAO9B,WAAKA,UAAUA;IACjB;IAEA,MAAMC,MAAM;MAAEC;IAAS,GAAG;AACxB,UAAI,CAAC,KAAKF,SAAS;AACjB,cAAM,IAAIG,MAAM,sDAAsD;MACxE;AACA,UAAI,CAACD,UAAU;AACb,cAAM,IAAIC,MAAM,kCAAkC;MACpD;AACA,YAAMC,MAAM,GAAG,KAAKJ,OAAO,GAAGE,QAAQ;AAEtC,aAAO,KAAKG,OAAOD,GAAG,EAAEE,MAAMC,YAAU;AACtC,cAAM,IAAIJ,MAAM,gCAAgCC,GAAG,EAAE;MACvD,CAAC;IACH;IAMA,MAAMC,OAAOD,KAAK;AAChBI,kBAAY,kCAAkC;IAChD;EACF;AAEA,MAAMC,iBAAN,cAA6BX,gBAAgB;IAI3C,MAAMO,OAAOD,KAAK;AAChB,YAAMM,OAAO,MAAMC,UAAUP,KAAkB,aAAa;AAC5D,aAAO,IAAIQ,WAAWF,IAAI;IAC5B;EACF;AC/BA,MAAIG,UAAU;AAEVC,SAAK,wDAAwD;EA8CjE;AAEA,iBAAeC,qBAAUC,KAAK;AAC5B,UAAMC,KAAKC,QAAQC,iBAAiB,IAAI;AACxC,UAAMC,OAAO,MAAMH,GAAGI,SAASC,SAASN,GAAG;AAC3C,WAAO,IAAIO,WAAWH,IAAI;EAC5B;AAEA,MAAMI,oBAAN,cAAgCC,kBAAkB;EAAA;AAElD,MAAMC,oBAAN,cAAgCC,kBAAkB;IAIhDC,cAAcC,OAAOC,QAAQ;AAC3B,YAAMC,WAAUb,QACbC,iBAAiB,QAAQ,EACzBa,cAAcC,YAAYjB,GAAG;AAChC,YAAMkB,SAASH,SAAQ,iBAAiB;AACxC,aAAOG,OAAOC,aAAaN,OAAOC,MAAM;IAC1C;EACF;AAEA,MAAMM,wBAAN,cAAoCC,sBAAsB;IAIxD,MAAMC,OAAOtB,KAAK;AAChB,aAAOD,qBAAUC,GAAG;IACtB;EACF;AAEA,MAAMuB,8BAAN,cAA0CC,4BAA4B;IAIpE,MAAMF,OAAOtB,KAAK;AAChB,aAAOD,qBAAUC,GAAG;IACtB;EACF;AAEA,MAAMyB,kBAAN,cAA8BC,gBAAgB;IAI5C,MAAMJ,OAAOtB,KAAK;AAChB,aAAOD,qBAAUC,GAAG;IACtB;EACF;AC3HA,MAAM2B,0BAA0B;AAEhC,MAAM;IAAEC;IAAOC;EAAK,IAAIC;AAExB,WAASC,WAAWC,OAAOC,QAAOC,MAAMC,MAAMC,MAAMC,MAAM;AACxDL,UAAMC,SAAQ,IAAI,CAAC,IAAIH,KAAKQ,IAAIN,MAAMC,SAAQ,IAAI,CAAC,GAAGC,IAAI;AAC1DF,UAAMC,SAAQ,IAAI,CAAC,IAAIH,KAAKQ,IAAIN,MAAMC,SAAQ,IAAI,CAAC,GAAGE,IAAI;AAC1DH,UAAMC,SAAQ,IAAI,CAAC,IAAIH,KAAKS,IAAIP,MAAMC,SAAQ,IAAI,CAAC,GAAGG,IAAI;AAC1DJ,UAAMC,SAAQ,IAAI,CAAC,IAAIH,KAAKS,IAAIP,MAAMC,SAAQ,IAAI,CAAC,GAAGI,IAAI;EAC5D;AAIA,MAAMG,aAAa,IAAIC,YAAY,IAAIC,WAAW,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,EAAEC,MAAM,EAAE,CAAC;AAE7E,MAAMC,aAAN,MAAiB;IACf;IAEA;IAEAC,YAAYC,QAAQC,QAAQ;AAC1B,WAAK,UAAUD;AACf,WAAK,UAAUC;IACjB;IAEA,IAAIC,SAAS;AACX,aAAO,KAAK,QAAQA;IACtB;IAEAC,QAAQC,IAAG;AACT,aAAO,KAAK,QAAQA,EAAC,MAAMV;IAC7B;IAEAN,KAAKgB,IAAG;AACN,aAAO,KAAK,QAAQA,KAAI,IAAI,CAAC,IAAI;IACnC;IAEAf,KAAKe,IAAG;AACN,aAAO,KAAK,QAAQA,KAAI,IAAI,CAAC,IAAI;IACnC;IAEAd,KAAKc,IAAG;AACN,cAAQ,KAAK,QAAQA,KAAI,IAAI,CAAC,IAAI,KAAK;IACzC;IAEAb,KAAKa,IAAG;AACN,cAAQ,KAAK,QAAQA,KAAI,IAAI,CAAC,IAAI,KAAK;IACzC;EACF;AAEA,MAAMC,sBAAsBA,CAACC,MAAKC,QAAQ;AACxC,QAAI,CAACD,MAAK;AACR,aAAOE;IACT;AACA,QAAIC,QAAQH,KAAII,IAAIH,GAAG;AACvB,QAAI,CAACE,OAAO;AACVA,cAAQ;QAAEE,cAAc,oBAAIC,IAAI;QAAGC,sBAAsB;MAAM;AAC/DP,MAAAA,KAAIQ,IAAIP,KAAKE,KAAK;IACpB;AACA,WAAOA;EACT;AAgBA,MAAMM,0BAAN,MAA8B;IAE5B,UAAU;MAAEC,WAAW;IAAK;IAG5B,eAAe;MACbA,WAAW;MACXC,WAAW,CAAA;MACXC,UAAU,CAAA;MACVC,cAAc,CAAA;MACd,CAACtC,uBAAuB,GAAG,CAAA;IAC7B;IAEA,qBAAqB,oBAAIuC,IAAI;IAE7B,cAAc,CAAA;IAEd,sBAAsB,CAAA;IAEtB,sBAAsB,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAEzC,WAAW,CAAC,WAAW,WAAWC,UAAUA,QAAQ;IAGpD,eAAe,IAAIC,aAAa,CAACD,UAAUA,UAAU,WAAW,SAAS,CAAC;IAE1E,kBAAkB;IAElB,uBAAuB,oBAAIT,IAAI;IAE/B,cAAc,oBAAIQ,IAAI;IAEtB,uBAAuB,oBAAIA,IAAI;IAE/B;IAEA;IAGA;IAEA;IAEA;IAEArB,YAAYwB,QAAQC,iBAAiBC,sBAAsB,OAAO;AAChE,WAAK,eAAeF,OAAOG;AAC3B,WAAK,gBAAgBH,OAAOI;AAC5B,WAAK,kBAAkBH,eAAe;AACtC,UAAIC,qBAAqB;AACvB,aAAK,iBAAiB,oBAAIL,IAAI;MAChC;IACF;IAEAQ,oBAAoBJ,iBAAiB;AACnC,UAAIA,mBAAmB,KAAK,QAAQtB,QAAQ;AAC1C,aAAK,kBAAkBsB,iBAAiB,KAAK,OAAO;MACtD;IACF;IAEA,kBAAkBA,iBAAiBK,WAAW;AAC5C,YAAMhC,UAAS,IAAIiC,YAAYN,kBAAkB,CAAC;AAClD,WAAK,gBAAgB,IAAIO,kBAAkBlC,OAAM;AACjD,WAAK,UAAU,IAAIF,YAAYE,OAAM;AACrC,UAAIgC,aAAaA,UAAU3B,SAAS,GAAG;AACrC,aAAK,QAAQY,IAAIe,SAAS;AAC1B,aAAK,QAAQG,KAAKtC,YAAYmC,UAAU3B,MAAM;MAChD,OAAO;AACL,aAAK,QAAQ8B,KAAKtC,UAAU;MAC9B;IACF;IAEAuC,KAAKC,OAAO;AACV,WAAK,UAAU;QAAElB,WAAW,KAAK;MAAQ;AACzC,WAAK,eAAe;QAClBA,WAAW,KAAK;QAChBC,WAAW;UAAED,WAAW,KAAK,aAAaC;QAAU;QACpDC,UAAU;UAAEF,WAAW,KAAK,aAAaE;QAAS;QAClDC,cAAc;UAAEH,WAAW,KAAK,aAAaG;QAAa;QAC1D,CAACtC,uBAAuB,GAAG;UACzBmC,WAAW,KAAK,aAAanC,uBAAuB;QACtD;MACF;AACA,WAAK,WAAW;QAAEmC,WAAW,KAAK;MAAS;AAC3C,WAAK,YAAYmB,KAAKD,KAAK;AAE3B,aAAO;IACT;IAEAE,QAAQF,OAAO;AACb,YAAMG,WAAWC,OAAOC,eAAe,KAAK,OAAO;AACnD,UAAIF,aAAa,MAAM;AAGrB,eAAO;MACT;AACA,WAAK,UAAUA;AACf,WAAK,eAAeC,OAAOC,eAAe,KAAK,YAAY;AAC3D,WAAK,WAAWD,OAAOC,eAAe,KAAK,QAAQ;AAEnD,YAAMC,WAAW,KAAK,YAAYC,IAAI;AACtC,UAAID,aAAahC,QAAW;AAC1BH,4BAAoB,KAAK,gBAAgB6B,KAAK,GAAGvB,aAAa+B,IAC5DF,QACF;AACA,aAAK,QAAQN,KAAK,IAAI,KAAK,QAAQM,QAAQ;MAC7C;AAEA,aAAO;IACT;IAKAG,iBAAiBC,KAAK;AACpB,WAAK,YAAYT,KAAKS,GAAG;AACzB,aAAO;IACT;IAEAC,gBAAgB;AACd,UAAI,KAAK,YAAY3C,WAAW,GAAG;AACjC,eAAO;MACT;AACA,aAAO,KAAK,YAAY4C,GAAG,EAAE;IAC/B;IAEAC,kBAAkBb,OAAO;AACvB,YAAMM,WAAW,KAAK,YAAYC,IAAI;AACtC,UAAID,aAAahC,QAAW;AAC1BH,4BAAoB,KAAK,gBAAgB6B,KAAK,GAAGvB,aAAa+B,IAC5DF,QACF;AACA,aAAK,QAAQN,KAAK,IAAI,KAAK,QAAQM,QAAQ;MAC7C;AACA,aAAO;IACT;IAIAQ,mBAAmBd,OAAO;AACxB,WAAK,oBAAoBC,KAAKD,KAAK;AACnC,aAAO;IACT;IAEAe,iBAAiBf,OAAO;AACtB,YAAMM,WAAW,KAAK,oBAAoBC,IAAI;AAC9C,UAAID,aAAahC,QAAW;AAC1BH,4BAAoB,KAAK,gBAAgB6B,KAAK,GAAGvB,aAAa+B,IAC5DF,QACF;AACA,aAAK,QAAQN,KAAK,IAAI,KAAK,QAAQM,QAAQ;MAC7C;AACA,aAAO;IACT;IAEAU,kBAAkBC,KAAK;AACrB,WAAK,oBAAoBhB,KACvBiB,KAAKC,oBACH,KAAK,oBAAoBP,GAAG,EAAE,GAC9BK,IAAIG,aAAa,CACnB,CACF;AACA,aAAO;IACT;IAEAC,mBAAmB;AACjB,UAAI,KAAK,oBAAoBrD,SAAS,GAAG;AACvC,aAAK,oBAAoBuC,IAAI;MAC/B;AACA,aAAO;IACT;IAMAe,iBAAiBC,OAAMb,KAAK;AAC1B,WAAK,QAAQa,KAAI,IAAIb;AACrB,aAAO;IACT;IAMAc,sBAAsBD,OAAMb,KAAK;AAC/B,WAAK,aAAaa,KAAI,EAAEtB,KAAKS,GAAG;AAChC,aAAO;IACT;IAMAe,qBAAqBF,OAAMb,KAAK;AAC9B,WAAK,aAAaa,KAAI,EAAEvD,SAAS;AACjC,aAAO;IACT;IAEA0D,gBAAgBH,OAAMb,KAAK;AACzB,WAAK,mBAAmB9B,IAAI2C,OAAMb,GAAG;AACrC,aAAO;IACT;IAOAiB,0BAA0BJ,OAAMK,SAASC,aAAa;AACpD,WAAK,QAAQN,KAAI,IAAI,KAAK,mBAAmB/C,IAAIoD,OAAO,KAAKC;IAC/D;IAGAC,6BAA6BP,OAAMb,KAAK;AACtC,WAAKc,sBAAsB7E,yBAAyB+D,GAAG;AACvD,aAAO;IACT;IAIAqB,4CAA4CC,QAAO;AACjD,iBAAWT,SAAQS,QAAO;AACxB,YAAIT,SAAQ,KAAK,SAAS;AACxB,eAAKO,6BAA6BP,OAAM,KAAK,QAAQA,KAAI,CAAC;QAC5D;MACF;AACA,aAAO;IACT;IAEAU,uDAAuD;AACrD,iBAAWC,OAAO,KAAK,sBAAsB;AAC3C,aAAKJ,6BAA6BnF,yBAAyBuF,GAAG;MAChE;AACA,aAAO;IACT;IAEAC,UAAUzB,KAAK;AACb,UAAI,KAAK,oBAAoBA,KAAK;AAChC,aAAK,kBAAkBA;AACvB,aAAK,aAAa,CAAC,IAAIvB;AACvB,aAAK,aAAa,CAAC,IAAIA;AACvB,aAAK,aAAa,CAAC,IAAI;AACvB,aAAK,aAAa,CAAC,IAAI;MACzB;AACA,aAAO;IACT;IAEAiD,cAAc1B,KAAKO,KAAK/D,MAAME,MAAMD,MAAME,MAAM;AAC9C,YAAM0B,YAAYmC,KAAKC,oBACrB,KAAK,oBAAoBP,GAAG,EAAE,GAC9BK,IAAIG,aAAa,CACnB;AACA,YAAMiB,UAAU,CAAClD,UAAUA,UAAU,WAAW,SAAS;AACzD+B,WAAKoB,wBAAwB,CAACpF,MAAMC,MAAMC,MAAMC,IAAI,GAAG0B,WAAWsD,OAAO;AACzE,YAAME,eAAerB,KAAKsB,UAAU,KAAK,UAAUH,OAAO;AAC1D,UAAIE,cAAc;AAChB,aAAK,SAAS,CAAC,IAAIA,aAAa,CAAC;AACjC,aAAK,SAAS,CAAC,IAAIA,aAAa,CAAC;AACjC,aAAK,SAAS,CAAC,IAAIA,aAAa,CAAC;AACjC,aAAK,SAAS,CAAC,IAAIA,aAAa,CAAC;MACnC,OAAO;AACL,aAAK,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAIpD;AACtC,aAAK,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;MACxC;AACA,aAAO;IACT;IAEAsD,WAAW/B,KAAKO,KAAK/D,MAAME,MAAMD,MAAME,MAAM;AAC3C,YAAMgF,UAAU,KAAK;AACrB,UAAIA,QAAQ,CAAC,MAAMlD,UAAU;AAC3B,eAAO;MACT;AAEA,YAAMJ,YAAYmC,KAAKC,oBACrB,KAAK,oBAAoBP,GAAG,EAAE,GAC9BK,IAAIG,aAAa,CACnB;AACA,UAAIiB,QAAQ,CAAC,MAAM,WAAW;AAC5BnB,aAAKoB,wBACH,CAACpF,MAAMC,MAAMC,MAAMC,IAAI,GACvB0B,WACA,KAAK,YACP;AACA,eAAO;MACT;AAEA,YAAM2D,OAAO,CAACvD,UAAUA,UAAU,WAAW,SAAS;AACtD+B,WAAKoB,wBAAwB,CAACpF,MAAMC,MAAMC,MAAMC,IAAI,GAAG0B,WAAW2D,IAAI;AACtE,WAAK,aAAa,CAAC,IAAI5F,KAAKQ,IAC1B,KAAK,aAAa,CAAC,GACnBR,KAAKS,IAAImF,KAAK,CAAC,GAAGL,QAAQ,CAAC,CAAC,CAC9B;AACA,WAAK,aAAa,CAAC,IAAIvF,KAAKQ,IAC1B,KAAK,aAAa,CAAC,GACnBR,KAAKS,IAAImF,KAAK,CAAC,GAAGL,QAAQ,CAAC,CAAC,CAC9B;AACA,WAAK,aAAa,CAAC,IAAIvF,KAAKS,IAC1B,KAAK,aAAa,CAAC,GACnBT,KAAKQ,IAAIoF,KAAK,CAAC,GAAGL,QAAQ,CAAC,CAAC,CAC9B;AACA,WAAK,aAAa,CAAC,IAAIvF,KAAKS,IAC1B,KAAK,aAAa,CAAC,GACnBT,KAAKQ,IAAIoF,KAAK,CAAC,GAAGL,QAAQ,CAAC,CAAC,CAC9B;AACA,aAAO;IACT;IAEAM,oBAAoBjC,KAAKO,KAAK2B,MAAMC,QAAQ,GAAGC,KAAI,GAAGC,KAAI,GAAGC,YAAY;AACvE,YAAMC,WAAWL,KAAKF;AACtB,UAAIQ;AACJ,UAAIC;AAEJ,UAAIF,UAAU;AACZC,4BAGED,SAAS,CAAC,MAAMA,SAAS,CAAC,KAC1BA,SAAS,CAAC,MAAMA,SAAS,CAAC,KAC1B,KAAK,qBAAqBzE,IAAIoE,IAAI;AAEpC,YAAIM,sBAAsB,OAAO;AAC/BC,yBAAe,CAAC,GAAG,GAAG,GAAG,CAAC;AAC1BjC,eAAKoB,wBAAwBW,UAAUL,KAAKQ,YAAYD,YAAY;AACpE,cAAIN,UAAU,KAAKC,OAAM,KAAKC,OAAM,GAAG;AACrC7B,iBAAKmC,YAAY,CAACR,OAAO,GAAG,GAAG,CAACA,OAAOC,IAAGC,EAAC,GAAGI,YAAY;UAC5D;AAEA,cAAID,mBAAmB;AACrB,mBAAO,KAAKT,WACV/B,KACAO,KACAkC,aAAa,CAAC,GACdA,aAAa,CAAC,GACdA,aAAa,CAAC,GACdA,aAAa,CAAC,CAChB;UACF;QACF;MACF;AAEA,UAAI,CAACH,YAAY;AAGf,eAAO,KAAKM,mBAAmB5C,GAAG;MACpC;AAEA,YAAM6C,UAAUP,WAAW;AAE3B,UAAIC,YAAYE,gBAAgBD,sBAAsB5E,QAAW;AAM/D4E,4BACEC,aAAa,CAAC,KAAKL,KAAIS,QAAQC,yBAC/BL,aAAa,CAAC,KAAKL,KAAIS,QAAQE,0BAC/BN,aAAa,CAAC,KAAKJ,KAAIQ,QAAQG,2BAC/BP,aAAa,CAAC,KAAKJ,KAAIQ,QAAQI;AACjC,aAAK,qBAAqB/E,IAAIgE,MAAMM,iBAAiB;AACrD,YAAIA,mBAAmB;AACrB,iBAAO,KAAKT,WACV/B,KACAO,KACAkC,aAAa,CAAC,GACdA,aAAa,CAAC,GACdA,aAAa,CAAC,GACdA,aAAa,CAAC,CAChB;QACF;MACF;AAIA,aAAO,KAAKV,WACV/B,KACAO,KACA6B,KAAIS,QAAQC,uBACZV,KAAIS,QAAQE,wBACZV,KAAIQ,QAAQG,yBACZX,KAAIQ,QAAQI,wBACd;IACF;IAEAL,mBAAmB5C,KAAK;AACtB,WAAK,aAAa,CAAC,IAAI5D,KAAKS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC;AACnD,WAAK,aAAa,CAAC,IAAIT,KAAKS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC;AACnD,WAAK,aAAa,CAAC,IAAIT,KAAKQ,IAAI,KAAK,cAAc,KAAK,SAAS,CAAC,CAAC;AACnE,WAAK,aAAa,CAAC,IAAIR,KAAKQ,IAAI,KAAK,eAAe,KAAK,SAAS,CAAC,CAAC;AAEpE,aAAO;IACT;IAEAsG,eAAeC,gBAAgB;AAC7B,aAAO,KAAK,QAAQA,cAAc;IACpC;IAEAC,mBAAmBpD,KAAKqD,iBAAiB;AACvC,YAAMC,sBAAsB,KAAK;AACjC,YAAMC,SAAS,KAAK;AACpB,YAAMC,cAAc,KAAK;AACzB,iBAAW3C,SAAQwC,iBAAiB;AAClC,YAAIxC,SAAQ,KAAK,SAAS;AACxByC,8BAAoBxD,IAAIyD,OAAO1C,KAAI,CAAC;QACtC,WAAWA,SAAQ2C,aAAa;AAC9BA,sBAAY3C,KAAI,EAAE4C,QAAQH,oBAAoBxD,KAAKwD,mBAAmB;QACxE;MACF;AAEA,aAAO;IACT;IAEAI,sBAAsB1D,KAAKa,OAAM;AAC/B,UAAI,KAAK,mBAAmB8C,IAAI9C,KAAI,GAAG;AACrC,aAAK,qBAAqBf,IAAI,KAAK,mBAAmBhC,IAAI+C,KAAI,CAAC;MACjE;AAEA,aAAO;IACT;IAKA+C,gBAAgB5D,KAAK6D,WAAW,OAAO;AACrC,WAAKT,mBAAmBpD,KAAK,CAAC/D,uBAAuB,CAAC;AAEtD,UAAI,KAAK,gBAAgB;AACvB,cAAM6H,WAAWrG,oBAAoB,KAAK,gBAAgBuC,GAAG;AAC7D,cAAM;UAAEjC;QAAa,IAAI+F;AACzB,aAAK,qBAAqBL,QAAQ1F,aAAa+B,KAAK/B,YAAY;AAChE,aAAK,YAAY0F,QAAQ1F,aAAa+B,KAAK/B,YAAY;AACvD,aAAK,oBAAoB0F,QAAQ1F,aAAa+B,KAAK/B,YAAY;AAC/DA,qBAAagG,OAAO/D,GAAG;AACvB8D,iBAAS7F,uBAAuB;MAClC;AAEA,UAAI,KAAK,oBAAoB+B,KAAK;AAChC,cAAMxD,OAAON,MAAO,KAAK,aAAa,CAAC,IAAI,MAAO,KAAK,YAAY;AACnE,cAAMO,OAAOP,MAAO,KAAK,aAAa,CAAC,IAAI,MAAO,KAAK,aAAa;AACpE,cAAMQ,OAAOP,KAAM,KAAK,aAAa,CAAC,IAAI,MAAO,KAAK,YAAY;AAClE,cAAMQ,OAAOR,KAAM,KAAK,aAAa,CAAC,IAAI,MAAO,KAAK,aAAa;AAEnEE,mBAAW,KAAK,eAAe2D,KAAKxD,MAAMC,MAAMC,MAAMC,IAAI;AAC1D,mBAAWqH,UAAU,KAAK,sBAAsB;AAC9C,cAAIA,WAAWhE,KAAK;AAClB3D,uBAAW,KAAK,eAAe2H,QAAQxH,MAAMC,MAAMC,MAAMC,IAAI;UAC/D;QACF;AACA,mBAAWsH,WAAW,KAAK,aAAa;AACtC,cAAIA,YAAYjE,KAAK;AACnB3D,uBAAW,KAAK,eAAe4H,SAASzH,MAAMC,MAAMC,MAAMC,IAAI;UAChE;QACF;AACA,mBAAWsH,WAAW,KAAK,qBAAqB;AAC9C,cAAIA,YAAYjE,KAAK;AACnB3D,uBAAW,KAAK,eAAe4H,SAASzH,MAAMC,MAAMC,MAAMC,IAAI;UAChE;QACF;AAEA,YAAI,CAACkH,UAAU;AACb,eAAK,qBAAqBK,MAAM;AAChC,eAAK,kBAAkB;QACzB;MACF;AAEA,aAAO;IACT;IAEAC,wBAAwBnE,KAAK6D,WAAW,OAAO;AAC7C,YAAMO,OAAOC,MAAMC,KAAK,KAAK,oBAAoB;AACjD,WAAKV,gBAAgB5D,KAAK6D,QAAQ;AAClC,WAAK/C,sBAAsB,gBAAgBd,GAAG;AAC9C,iBAAWwB,OAAO4C,MAAM;AACtB,aAAKtD,sBAAsB,gBAAgBU,GAAG;MAChD;AACA,aAAO;IACT;IAEA+C,2BAA2BvE,KAAK6D,WAAW,OAAO;AAChD,UAAI,KAAK,oBAAoB7D,KAAK;AAChC,aAAK,kBAAkB;AAEvB,aAAK,SAAS,CAAC,IAAI5D,KAAKS,IAAI,KAAK,SAAS,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;AAClE,aAAK,SAAS,CAAC,IAAIT,KAAKS,IAAI,KAAK,SAAS,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;AAClE,aAAK,SAAS,CAAC,IAAIT,KAAKQ,IAAI,KAAK,SAAS,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;AAClE,aAAK,SAAS,CAAC,IAAIR,KAAKQ,IAAI,KAAK,SAAS,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;AAElE,YAAI,CAACiH,UAAU;AACb,eAAK,qBAAqBK,MAAM;QAClC;MACF;AACA,aAAO;IACT;IAEAM,2BAA2B;AACzB,YAAMlB,sBAAsB,KAAK;AACjC,WAAK,uBAAuB,oBAAItF,IAAI;AACpC,aAAOsF;IACT;IAEAmB,kBAAkBzE,KAAK;AACrB,YAAM0E,YAAY,KAAK,YAAY5G,IAAIkC,GAAG;AAC1C,WAAK,YAAY+D,OAAO/D,GAAG;AAC3B,aAAO0E;IACT;IAEAC,yBAAyB5G,cAAc;AACrC,iBAAWyD,OAAOzD,cAAc;AAC9B,aAAK,qBAAqB+B,IAAI0B,GAAG;MACnC;IACF;IAEAoD,OAAO;AACL,WAAK,qBAAqBV,MAAM;AAChC,aAAO,IAAIhH,WAAW,KAAK,SAAS,KAAK,aAAa;IACxD;IAEA2H,oBAAoB;AAClB,aAAO,KAAK;IACd;EACF;AASA,MAAMC,gCAAN,MAAMA,+BAA8B;IAElC;IAGA;IAEA;IAEA,gBAAgB;IAEhB,cAAc;IAEd3H,YAAY4H,mBAAmBzF,OAAO0F,cAAc;AAClD,UACED,6BAA6BD,kCAC7BC,kBAAkB,kBAAkB,CAAC,CAACC,cACtC;AAIA,eAAOD;MACT;AAEA,WAAK,qBAAqBA;AAC1B,WAAK,SAASzF;AACd,WAAK,gBAAgB,CAAC,CAAC0F;IACzB;IAEAhG,sBAAsB;AACpB,YAAM,IAAIiG,MAAM,aAAa;IAC/B;IAEA5F,KAAKC,OAAO;AACV,WAAK;AACL,WAAK,mBAAmBD,KAAK,KAAK,MAAM;AACxC,aAAO;IACT;IAEAG,QAAQF,OAAO;AACb,UAAI,KAAK,cAAc,GAAG;AACxB,aAAK,mBAAmBE,QAAQ,KAAK,MAAM;AAC3C,aAAK;MACP;AACA,aAAO;IACT;IAEAO,iBAAiBC,KAAK;AACpB,WAAK;AACL,aAAO;IACT;IAEAC,gBAAgB;AACd,aAAO,KAAK,gBAAgB,IACxB,KAAK,SACL,KAAK,mBAAmBA,cAAc;IAC5C;IAEAE,kBAAkBH,KAAK;AACrB,WAAK;AACL,aAAO;IACT;IAEAI,mBAAmBd,OAAO;AACxB,aAAO;IACT;IAEAe,iBAAiBf,OAAO;AACtB,aAAO;IACT;IAEAgB,kBAAkBC,KAAK;AACrB,WAAK,mBAAmBD,kBAAkBC,GAAG;AAC7C,aAAO;IACT;IAEAI,mBAAmB;AACjB,WAAK,mBAAmBA,iBAAiB;AACzC,aAAO;IACT;IAMAC,iBAAiBC,OAAMb,KAAK;AAC1B,WAAK,mBAAmBY,iBAAiBC,OAAM,KAAK,MAAM;AAC1D,aAAO;IACT;IAMAC,sBAAsBD,OAAMb,KAAK;AAC/B,WAAK,mBAAmBc,sBAAsBD,OAAM,KAAK,MAAM;AAC/D,aAAO;IACT;IAMAE,qBAAqBF,OAAMb,KAAK;AAC9B,WAAK,mBAAmBe,qBAAqBF,OAAM,KAAK,MAAM;AAC9D,aAAO;IACT;IAEAG,gBAAgBH,OAAMb,KAAK;AAEzB,aAAO;IACT;IAOAiB,0BAA0BJ,OAAMK,SAASC,aAAa;AACpD,WAAK,mBAAmBF,0BACtBJ,OACAK,SACA,KAAK,MACP;AACA,aAAO;IACT;IAGAE,6BAA6BP,OAAMb,KAAK;AACtC,WAAK,mBAAmBoB,6BAA6BP,OAAM,KAAK,MAAM;AACtE,aAAO;IACT;IAIAQ,4CAA4CC,QAAO;AACjD,WAAK,mBAAmBD,4CAA4CC,MAAK;AACzE,aAAO;IACT;IAEAC,uDAAuD;AACrD,WAAK,mBAAmBA,qDAAqD;AAC7E,aAAO;IACT;IAEAE,UAAUzB,KAAK;AACb,UAAI,CAAC,KAAK,eAAe;AACvB,aAAK,mBAAmByB,UAAU,KAAK,MAAM;MAC/C;AACA,aAAO;IACT;IAEAC,cAAc1B,KAAKO,KAAK/D,MAAME,MAAMD,MAAME,MAAM;AAC9C,UAAI,CAAC,KAAK,eAAe;AACvB,aAAK,mBAAmB+E,cACtB,KAAK,QACLnB,KACA/D,MACAE,MACAD,MACAE,IACF;MACF;AACA,aAAO;IACT;IAEAoF,WAAW/B,KAAKO,KAAK/D,MAAME,MAAMD,MAAME,MAAM;AAC3C,UAAI,CAAC,KAAK,eAAe;AACvB,aAAK,mBAAmBoF,WACtB,KAAK,QACLxB,KACA/D,MACAE,MACAD,MACAE,IACF;MACF;AACA,aAAO;IACT;IAEAsF,oBAAoBjC,KAAKO,KAAK2B,MAAMC,OAAOC,IAAGC,IAAGC,YAAY;AAC3D,UAAI,CAAC,KAAK,eAAe;AACvB,aAAK,mBAAmBL,oBACtB,KAAK,QACL1B,KACA2B,MACAC,OACAC,IACAC,IACAC,UACF;MACF;AACA,aAAO;IACT;IAEAM,mBAAmB5C,KAAK;AACtB,UAAI,CAAC,KAAK,eAAe;AACvB,aAAK,mBAAmB4C,mBAAmB,KAAK,MAAM;MACxD;AACA,aAAO;IACT;IAEAM,eAAeC,gBAAgB;AAC7B,aAAO,KAAK,mBAAmBD,eAAeC,cAAc;IAC9D;IAEAC,mBAAmBpD,KAAKqD,iBAAiB;AACvC,WAAK,mBAAmBD,mBAAmB,KAAK,QAAQC,eAAe;AACvE,aAAO;IACT;IAEAK,sBAAsB1D,KAAKa,OAAM;AAC/B,WAAK,mBAAmB6C,sBAAsB,KAAK,QAAQ7C,KAAI;AAC/D,aAAO;IACT;IAMA+C,gBAAgB5D,KAAK;AACnB,WAAK,mBAAmB4D,gBAAgB,KAAK,QAAQ,IAAI;AACzD,aAAO;IACT;IAEAO,wBAAwBnE,KAAK;AAC3B,WAAK,mBAAmBmE,wBAAwB,KAAK,QAAQ,IAAI;AACjE,aAAO;IACT;IAEAI,2BAA2BvE,KAAK;AAC9B,UAAI,CAAC,KAAK,eAAe;AACvB,aAAK,mBAAmBuE,2BAA2B,KAAK,QAAQ,IAAI;MACtE;AACA,aAAO;IACT;IAEAK,OAAO;AACL,YAAM,IAAIK,MAAM,aAAa;IAC/B;IAEAJ,oBAAoB;AAClB,YAAM,IAAII,MAAM,aAAa;IAC/B;EACF;AAGA,MAAMC,eAAe;IACnBC,QAAQ,CACN,QACA,aACA,UACA,eACA,eACA,aACA,WACA,YACA,cACA,MAAM;IAER/F,MAAM,CACJ,QACA,aACA,UACA,aACA,aACA,4BACA,OAAO;IAETgG,cAAc,CACZ,aACA,SACA,UACA,aACA,eACA,0BAA0B;IAE5BC,aAAa,CAAC,UAAU,aAAa,WAAW;IAChDC,UAAU,CACR,aACA,WACA,eACA,eACA,UACA,YACA,YACA,cACA,QACA,WACA,UACA,aACA,qBACA,SACA,aACA,eACA,4BAEA,cAAc;IAEhBjH,WAAW,CAAC,WAAW;IACvBkH,kBAAkB,CAAC,aAAa,WAAW;EAC7C;ACr3BA,MAAMC,WAAW;IACfC,MAAM;IACNC,QAAQ;IACRC,SAAS;EACX;AAEA,WAASC,iBAAiBC,KAAKC,MAAM;AACnC,QAAI,CAACA,MAAM;AACT;IACF;AACA,UAAMC,QAAQD,KAAK,CAAC,IAAIA,KAAK,CAAC;AAC9B,UAAME,SAASF,KAAK,CAAC,IAAIA,KAAK,CAAC;AAC/B,UAAMG,UAAS,IAAIC,OAAO;AAC1BD,IAAAA,QAAOE,KAAKL,KAAK,CAAC,GAAGA,KAAK,CAAC,GAAGC,OAAOC,MAAM;AAC3CH,QAAIO,KAAKH,OAAM;EACjB;AAEA,MAAMI,qBAAN,MAAyB;IAUvBC,8BAA8B;AAC5B,aAAO;IACT;IAEAC,aAAa;AACXC,kBAAY,sCAAsC;IACpD;EACF;AAEA,MAAMC,4BAAN,cAAwCJ,mBAAmB;IACzDK,YAAYC,IAAI;AACd,YAAM;AACN,WAAKC,QAAQD,GAAG,CAAC;AACjB,WAAKE,QAAQF,GAAG,CAAC;AACjB,WAAKG,cAAcH,GAAG,CAAC;AACvB,WAAKI,MAAMJ,GAAG,CAAC;AACf,WAAKK,MAAML,GAAG,CAAC;AACf,WAAKM,MAAMN,GAAG,CAAC;AACf,WAAKO,MAAMP,GAAG,CAAC;AACf,WAAKQ,SAAS;IAChB;IAEAC,gBAAgB;AACd,aACE,KAAKL,IAAI,CAAC,MAAM,KAChB,KAAKA,IAAI,CAAC,MAAM,MACf,CAAC,KAAKM,SAAS,KAAM,KAAKL,IAAI,CAAC,MAAM,KAAK,KAAKA,IAAI,CAAC,MAAM;IAE/D;IAEAK,WAAW;AACT,aAAO,KAAKT,UAAU;IACxB;IAEAU,gBAAgBzB,KAAK0B,YAAY,MAAM;AACrC,UAAIC;AACJ,UAAIC,aAAa,KAAKV;AACtB,UAAIW,cAAc,KAAKV;AACvB,UAAIO,WAAW;AACbE,qBAAaA,WAAWE,MAAM;AAC9BD,sBAAcA,YAAYC,MAAM;AAChCC,aAAKC,eAAeJ,YAAYF,SAAS;AACzCK,aAAKC,eAAeH,aAAaH,SAAS;MAC5C;AACA,UAAI,KAAKX,UAAU,SAAS;AAC1BY,eAAO3B,IAAIiC,qBACTL,WAAW,CAAC,GACZA,WAAW,CAAC,GACZC,YAAY,CAAC,GACbA,YAAY,CAAC,CACf;MACF,WAAW,KAAKd,UAAU,UAAU;AAClC,YAAImB,KAAK,KAAKd;AACd,YAAIe,KAAK,KAAKd;AACd,YAAIK,WAAW;AACb,gBAAMU,QAAQ,IAAIC,aAAa,CAAC;AAChCN,eAAKO,8BAA8BZ,WAAWU,KAAK;AACnDF,gBAAME,MAAM,CAAC;AACbD,gBAAMC,MAAM,CAAC;QACf;AACAT,eAAO3B,IAAIuC,qBACTX,WAAW,CAAC,GACZA,WAAW,CAAC,GACZM,IACAL,YAAY,CAAC,GACbA,YAAY,CAAC,GACbM,EACF;MACF;AAEA,iBAAWK,aAAa,KAAKvB,aAAa;AACxCU,aAAKc,aAAaD,UAAU,CAAC,GAAGA,UAAU,CAAC,CAAC;MAC9C;AACA,aAAOb;IACT;IAEAjB,WAAWV,KAAK0C,OAAOC,SAASC,UAAU;AACxC,UAAIC;AACJ,UAAID,aAAajD,SAASE,UAAU+C,aAAajD,SAASC,MAAM;AAC9D,YAAI,KAAK2B,cAAc,GAAG;AACxB,cAAIuB,SAASf,KAAKL,UAAUiB,SAASD,MAAMK,aAAa;AACxD,cAAI,KAAKzB,QAAQ;AACfwB,qBAASf,KAAKL,UAAUoB,QAAQ,KAAKxB,MAAM;UAC7C;AACA,gBAAM0B,YAAY;AAClB,gBAAMC,KAAKC,KAAKC,MAAML,OAAO,CAAC,GAAGA,OAAO,CAAC,CAAC;AAC1C,gBAAMM,MAAKF,KAAKC,MAAML,OAAO,CAAC,GAAGA,OAAO,CAAC,CAAC;AAC1C,gBAAMO,MAAMP,OAAO,CAAC,IAAIA,OAAO,CAAC,IAAIA,OAAO,CAAC,IAAIA,OAAO,CAAC,MAAMG,KAAKG;AACnE,cAAIF,KAAKI,IAAID,EAAE,IAAIL,WAAW;AAE5B,gBAAI,KAAKxB,SAAS,GAAG;AAInB,kBAAI0B,KAAKI,IAAIL,KAAKG,GAAE,IAAIJ,WAAW;AACjC,uBAAO,KAAKvB,gBAAgBzB,KAAK8C,MAAM;cACzC;YACF,OAAO;AAGL,qBAAO,KAAKrB,gBAAgBzB,KAAK8C,MAAM;YACzC;UACF;QACF;AAEA,cAAMS,YAAYb,MAAMc,QAAQC,0BAC9Bb,UACAc,oBAAoB1D,GAAG,CACzB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AAIhB,cAAME,QAAQgD,KAAKS,KAAKJ,UAAU,CAAC,IAAIA,UAAU,CAAC,CAAC,KAAK;AACxD,cAAMpD,SAAS+C,KAAKS,KAAKJ,UAAU,CAAC,IAAIA,UAAU,CAAC,CAAC,KAAK;AAEzD,cAAMK,YAAYlB,MAAMmB,eAAeC,UACrC,WACA5D,OACAC,MACF;AAEA,cAAM4D,SAASH,UAAUI;AACzBD,eAAOE,UAAU,GAAG,GAAGF,OAAOG,OAAOhE,OAAO6D,OAAOG,OAAO/D,MAAM;AAChE4D,eAAOI,UAAU;AACjBJ,eAAOzD,KAAK,GAAG,GAAGyD,OAAOG,OAAOhE,OAAO6D,OAAOG,OAAO/D,MAAM;AAI3D4D,eAAOK,UAAU,CAACb,UAAU,CAAC,GAAG,CAACA,UAAU,CAAC,CAAC;AAC7CZ,kBAAUZ,KAAKL,UAAUiB,SAAS,CAChC,GACA,GACA,GACA,GACAY,UAAU,CAAC,GACXA,UAAU,CAAC,CAAC,CACb;AAEDQ,eAAOrC,UAAU,GAAGgB,MAAMK,aAAa;AACvC,YAAI,KAAKzB,QAAQ;AACfyC,iBAAOrC,UAAU,GAAG,KAAKJ,MAAM;QACjC;AACAvB,yBAAiBgE,QAAQ,KAAK/C,KAAK;AAEnC+C,eAAOM,YAAY,KAAK5C,gBAAgBsC,MAAM;AAC9CA,eAAOO,KAAK;AAEZzB,kBAAU7C,IAAIuE,cAAcX,UAAUM,QAAQ,WAAW;AACzD,cAAMM,YAAY,IAAIC,UAAU9B,OAAO;AACvCE,gBAAQ6B,aAAaF,SAAS;MAChC,OAAO;AAILzE,yBAAiBC,KAAK,KAAKgB,KAAK;AAChC6B,kBAAU,KAAKpB,gBAAgBzB,GAAG;MACpC;AACA,aAAO6C;IACT;EACF;AAEA,WAAS8B,aAAaC,MAAMZ,SAASa,IAAIC,KAAIC,KAAIC,IAAIC,KAAIC,KAAI;AAE3D,UAAMC,SAASnB,QAAQmB,QACrBC,UAASpB,QAAQoB;AACnB,UAAMC,QAAQT,KAAKA,MACjBU,UAAUV,KAAK1E,QAAQ;AACzB,QAAIqF;AACJ,QAAIJ,OAAON,KAAK,CAAC,IAAIM,OAAOL,MAAK,CAAC,GAAG;AACnCS,YAAMV;AACNA,WAAKC;AACLA,MAAAA,MAAKS;AACLA,YAAMP;AACNA,WAAKC;AACLA,MAAAA,MAAKM;IACP;AACA,QAAIJ,OAAOL,MAAK,CAAC,IAAIK,OAAOJ,MAAK,CAAC,GAAG;AACnCQ,YAAMT;AACNA,MAAAA,MAAKC;AACLA,MAAAA,MAAKQ;AACLA,YAAMN;AACNA,MAAAA,MAAKC;AACLA,MAAAA,MAAKK;IACP;AACA,QAAIJ,OAAON,KAAK,CAAC,IAAIM,OAAOL,MAAK,CAAC,GAAG;AACnCS,YAAMV;AACNA,WAAKC;AACLA,MAAAA,MAAKS;AACLA,YAAMP;AACNA,WAAKC;AACLA,MAAAA,MAAKM;IACP;AACA,UAAMC,MAAML,OAAON,EAAE,IAAIb,QAAQyB,WAAWzB,QAAQ0B;AACpD,UAAMC,MAAMR,OAAON,KAAK,CAAC,IAAIb,QAAQ4B,WAAW5B,QAAQ6B;AACxD,UAAMC,OAAMX,OAAOL,GAAE,IAAId,QAAQyB,WAAWzB,QAAQ0B;AACpD,UAAMK,OAAMZ,OAAOL,MAAK,CAAC,IAAId,QAAQ4B,WAAW5B,QAAQ6B;AACxD,UAAMG,OAAMb,OAAOJ,GAAE,IAAIf,QAAQyB,WAAWzB,QAAQ0B;AACpD,UAAMO,OAAMd,OAAOJ,MAAK,CAAC,IAAIf,QAAQ4B,WAAW5B,QAAQ6B;AACxD,QAAIF,MAAMM,KAAI;AACZ;IACF;AACA,UAAMC,MAAMd,QAAOJ,EAAE,GACnBmB,MAAMf,QAAOJ,KAAK,CAAC,GACnBoB,MAAMhB,QAAOJ,KAAK,CAAC;AACrB,UAAMqB,MAAMjB,QAAOH,GAAE,GACnBqB,MAAMlB,QAAOH,MAAK,CAAC,GACnBsB,MAAMnB,QAAOH,MAAK,CAAC;AACrB,UAAMuB,MAAMpB,QAAOF,GAAE,GACnBuB,MAAMrB,QAAOF,MAAK,CAAC,GACnBwB,MAAMtB,QAAOF,MAAK,CAAC;AAErB,UAAMyB,OAAOzD,KAAK0D,MAAMjB,EAAE,GACxBkB,OAAO3D,KAAK0D,MAAMX,GAAE;AACtB,QAAIa,IAAIC,KAAKC,KAAKC;AAClB,QAAIC,IAAIC,KAAKC,KAAKC;AAClB,aAASC,KAAIX,MAAMW,MAAKT,MAAMS,MAAK;AACjC,UAAIA,KAAIvB,KAAI;AACV,cAAMwB,KAAID,KAAI3B,KAAK,KAAKA,KAAK2B,OAAM3B,KAAKI;AACxCe,aAAKtB,MAAMA,KAAKM,OAAMyB;AACtBR,cAAMb,OAAOA,MAAMG,OAAOkB;AAC1BP,cAAMb,OAAOA,MAAMG,OAAOiB;AAC1BN,cAAMb,OAAOA,MAAMG,OAAOgB;MAC5B,OAAO;AACL,YAAIA;AACJ,YAAID,KAAIrB,KAAI;AACVsB,UAAAA,KAAI;QACN,WAAWxB,QAAOE,KAAI;AACpBsB,UAAAA,KAAI;QACN,OAAO;AACLA,UAAAA,MAAKxB,MAAKuB,OAAMvB,MAAKE;QACvB;AACAa,aAAKhB,OAAMA,MAAKE,OAAMuB;AACtBR,cAAMV,OAAOA,MAAMG,OAAOe;AAC1BP,cAAMV,OAAOA,MAAMG,OAAOc;AAC1BN,cAAMV,OAAOA,MAAMG,OAAOa;MAC5B;AAEA,UAAIA;AACJ,UAAID,KAAI3B,IAAI;AACV4B,QAAAA,KAAI;MACN,WAAWD,KAAIrB,KAAI;AACjBsB,QAAAA,KAAI;MACN,OAAO;AACLA,QAAAA,MAAK5B,KAAK2B,OAAM3B,KAAKM;MACvB;AACAiB,WAAK1B,MAAMA,KAAKQ,OAAMuB;AACtBJ,YAAMjB,OAAOA,MAAMM,OAAOe;AAC1BH,YAAMjB,OAAOA,MAAMM,OAAOc;AAC1BF,YAAMjB,OAAOA,MAAMM,OAAOa;AAC1B,YAAMC,MAAMtE,KAAK0D,MAAM1D,KAAKuE,IAAIX,IAAII,EAAE,CAAC;AACvC,YAAMQ,MAAMxE,KAAK0D,MAAM1D,KAAKyE,IAAIb,IAAII,EAAE,CAAC;AACvC,UAAIU,KAAItC,UAAUgC,KAAIE,MAAM;AAC5B,eAASK,KAAIL,KAAKK,MAAKH,KAAKG,MAAK;AAC/BN,QAAAA,MAAKT,KAAKe,OAAMf,KAAKI;AACrB,YAAIK,KAAI,GAAG;AACTA,UAAAA,KAAI;QACN,WAAWA,KAAI,GAAG;AAChBA,UAAAA,KAAI;QACN;AACAlC,cAAMuC,IAAG,IAAKb,OAAOA,MAAMI,OAAOI,KAAK;AACvClC,cAAMuC,IAAG,IAAKZ,OAAOA,MAAMI,OAAOG,KAAK;AACvClC,cAAMuC,IAAG,IAAKX,OAAOA,MAAMI,OAAOE,KAAK;AACvClC,cAAMuC,IAAG,IAAI;MACf;IACF;EACF;AAEA,WAASE,WAAWlD,MAAMmD,QAAQ/D,SAAS;AACzC,UAAMX,KAAK0E,OAAO5C;AAClB,UAAM6C,MAAKD,OAAO3C;AAClB,QAAI6C,IAAGC;AACP,YAAQH,OAAOI,MAAI;MACjB,KAAKC,eAAeC;AAClB,cAAMC,iBAAiBP,OAAOO;AAC9B,cAAMC,OAAOrF,KAAKsF,MAAMnF,GAAGoF,SAASH,cAAc,IAAI;AACtD,cAAMI,OAAOJ,iBAAiB;AAC9B,aAAKL,KAAI,GAAGA,KAAIM,MAAMN,MAAK;AACzB,cAAIU,KAAIV,KAAIK;AACZ,mBAASV,KAAI,GAAGA,KAAIc,MAAMd,MAAKe,MAAK;AAClChE,yBACEC,MACAZ,SACAX,GAAGsF,EAAC,GACJtF,GAAGsF,KAAI,CAAC,GACRtF,GAAGsF,KAAIL,cAAc,GACrBN,IAAGW,EAAC,GACJX,IAAGW,KAAI,CAAC,GACRX,IAAGW,KAAIL,cAAc,CACvB;AACA3D,yBACEC,MACAZ,SACAX,GAAGsF,KAAIL,iBAAiB,CAAC,GACzBjF,GAAGsF,KAAI,CAAC,GACRtF,GAAGsF,KAAIL,cAAc,GACrBN,IAAGW,KAAIL,iBAAiB,CAAC,GACzBN,IAAGW,KAAI,CAAC,GACRX,IAAGW,KAAIL,cAAc,CACvB;UACF;QACF;AACA;MACF,KAAKF,eAAeQ;AAClB,aAAKX,KAAI,GAAGC,KAAK7E,GAAGoF,QAAQR,KAAIC,IAAID,MAAK,GAAG;AAC1CtD,uBACEC,MACAZ,SACAX,GAAG4E,EAAC,GACJ5E,GAAG4E,KAAI,CAAC,GACR5E,GAAG4E,KAAI,CAAC,GACRD,IAAGC,EAAC,GACJD,IAAGC,KAAI,CAAC,GACRD,IAAGC,KAAI,CAAC,CACV;QACF;AACA;MACF;AACE,cAAM,IAAIY,MAAM,gBAAgB;IACpC;EACF;AAEA,MAAMC,qBAAN,cAAiCtI,mBAAmB;IAClDK,YAAYC,IAAI;AACd,YAAM;AACN,WAAKiI,UAAUjI,GAAG,CAAC;AACnB,WAAKkI,UAAUlI,GAAG,CAAC;AACnB,WAAKmI,WAAWnI,GAAG,CAAC;AACpB,WAAKoI,UAAUpI,GAAG,CAAC;AACnB,WAAKE,QAAQF,GAAG,CAAC;AACjB,WAAKqI,cAAcrI,GAAG,CAAC;AACvB,WAAKQ,SAAS;IAChB;IAEA8H,kBAAkBC,eAAeC,kBAAiBzF,gBAAgB;AAGhE,YAAM0F,iBAAiB;AAEvB,YAAMC,mBAAmB;AAGzB,YAAMC,cAAc;AAEpB,YAAMhE,UAAUvC,KAAKsF,MAAM,KAAKU,QAAQ,CAAC,CAAC;AAC1C,YAAMtD,UAAU1C,KAAKsF,MAAM,KAAKU,QAAQ,CAAC,CAAC;AAC1C,YAAMQ,cAAcxG,KAAKS,KAAK,KAAKuF,QAAQ,CAAC,CAAC,IAAIzD;AACjD,YAAMkE,eAAezG,KAAKS,KAAK,KAAKuF,QAAQ,CAAC,CAAC,IAAItD;AAElD,YAAM1F,QAAQgD,KAAKuE,IACjBvE,KAAKS,KAAKT,KAAKI,IAAIoG,cAAcL,cAAc,CAAC,IAAIE,cAAc,CAAC,GACnEC,gBACF;AACA,YAAMrJ,SAAS+C,KAAKuE,IAClBvE,KAAKS,KAAKT,KAAKI,IAAIqG,eAAeN,cAAc,CAAC,IAAIE,cAAc,CAAC,GACpEC,gBACF;AACA,YAAM9D,SAASgE,cAAcxJ;AAC7B,YAAM2F,SAAS8D,eAAexJ;AAE9B,YAAM6D,UAAU;QACdmB,QAAQ,KAAK4D;QACb3D,QAAQ,KAAK4D;QACbvD,SAAS,CAACA;QACVG,SAAS,CAACA;QACVF,QAAQ,IAAIA;QACZG,QAAQ,IAAIA;MACd;AAEA,YAAM+D,cAAc1J,QAAQuJ,cAAc;AAC1C,YAAMI,eAAe1J,SAASsJ,cAAc;AAE5C,YAAM7F,YAAYC,eAAeC,UAC/B,QACA8F,aACAC,YACF;AACA,YAAM9F,SAASH,UAAUI;AAEzB,YAAMY,OAAOb,OAAO+F,gBAAgB5J,OAAOC,MAAM;AACjD,UAAImJ,kBAAiB;AACnB,cAAMjE,QAAQT,KAAKA;AACnB,iBAASqD,KAAI,GAAGC,KAAK7C,MAAMoD,QAAQR,KAAIC,IAAID,MAAK,GAAG;AACjD5C,gBAAM4C,EAAC,IAAIqB,iBAAgB,CAAC;AAC5BjE,gBAAM4C,KAAI,CAAC,IAAIqB,iBAAgB,CAAC;AAChCjE,gBAAM4C,KAAI,CAAC,IAAIqB,iBAAgB,CAAC;AAChCjE,gBAAM4C,KAAI,CAAC,IAAI;QACjB;MACF;AACA,iBAAWF,UAAU,KAAKkB,UAAU;AAClCnB,mBAAWlD,MAAMmD,QAAQ/D,OAAO;MAClC;AACAD,aAAOgG,aAAanF,MAAM6E,aAAaA,WAAW;AAClD,YAAMvF,SAASN,UAAUM;AAEzB,aAAO;QACLA;QACAuB,SAASA,UAAUgE,cAAc/D;QACjCE,SAASA,UAAU6D,cAAc5D;QACjCH;QACAG;MACF;IACF;IAEApF,8BAA8B;AAC5B,aAAO;IACT;IAEAC,WAAWV,KAAK0C,OAAOC,SAASC,UAAU;AACxC7C,uBAAiBC,KAAK,KAAKgB,KAAK;AAChC,YAAMoB,QAAQ,IAAIC,aAAa,CAAC;AAChC,UAAIO,aAAajD,SAASG,SAAS;AACjCiC,aAAKO,8BAA8BoB,oBAAoB1D,GAAG,GAAGoC,KAAK;MACpE,WAAW,KAAKd,QAAQ;AAEtBS,aAAKO,8BAA8B,KAAKhB,QAAQc,KAAK;AACrD,cAAM,CAAC4H,cAAcC,YAAY,IAAI7H;AACrCL,aAAKO,8BAA8BI,MAAMK,eAAeX,KAAK;AAC7DA,cAAM,CAAC,KAAK4H;AACZ5H,cAAM,CAAC,KAAK6H;MACd,OAAO;AACLlI,aAAKO,8BAA8BI,MAAMK,eAAeX,KAAK;MAC/D;AAIA,YAAM8H,yBAAyB,KAAKd,kBAClChH,OACAQ,aAAajD,SAASG,UAAU,OAAO,KAAKqJ,aAC5CzG,MAAMmB,cACR;AAEA,UAAIjB,aAAajD,SAASG,SAAS;AACjCE,YAAI0E,aAAa,GAAGhC,MAAMK,aAAa;AACvC,YAAI,KAAKzB,QAAQ;AACftB,cAAI0B,UAAU,GAAG,KAAKJ,MAAM;QAC9B;MACF;AAEAtB,UAAIoE,UACF8F,uBAAuBzE,SACvByE,uBAAuBtE,OACzB;AACA5F,UAAIoC,MAAM8H,uBAAuBxE,QAAQwE,uBAAuBrE,MAAM;AAEtE,aAAO7F,IAAIuE,cAAc2F,uBAAuBhG,QAAQ,WAAW;IACrE;EACF;AAEA,MAAMiG,sBAAN,cAAkC3J,mBAAmB;IACnDE,aAAa;AACX,aAAO;IACT;EACF;AAEA,WAAS0J,kBAAkBtJ,IAAI;AAC7B,YAAQA,GAAG,CAAC,GAAC;MACX,KAAK;AACH,eAAO,IAAIF,0BAA0BE,EAAE;MACzC,KAAK;AACH,eAAO,IAAIgI,mBAAmBhI,EAAE;MAClC,KAAK;AACH,eAAO,IAAIqJ,oBAAoB;IACnC;AACA,UAAM,IAAItB,MAAM,oBAAoB/H,GAAG,CAAC,CAAC,EAAE;EAC7C;AAEA,MAAMuJ,YAAY;IAChBC,SAAS;IACTC,WAAW;EACb;AAEA,MAAMC,gBAAN,MAAMA,eAAc;IAElB,OAAOhB,mBAAmB;IAE1B3I,YAAYC,IAAId,KAAKyK,uBAAuB1H,eAAe;AACzD,WAAK2H,QAAQ5J,GAAG,CAAC;AACjB,WAAK6J,eAAe7J,GAAG,CAAC;AACxB,WAAKQ,SAASR,GAAG,CAAC;AAClB,WAAKb,OAAOa,GAAG,CAAC;AAChB,WAAK8J,QAAQ9J,GAAG,CAAC;AACjB,WAAK+J,QAAQ/J,GAAG,CAAC;AACjB,WAAKgK,YAAYhK,GAAG,CAAC;AACrB,WAAKiK,aAAajK,GAAG,CAAC;AACtB,WAAKd,MAAMA;AACX,WAAKyK,wBAAwBA;AAC7B,WAAK1H,gBAAgBA;IACvB;IAEAiI,oBAAoBtI,OAAOuI,OAAO;AAChC,YAAM;QACJhL;QACA0K;QACAG;QACAC;QACAL,OAAAA;QACAD;MACF,IAAI;AACJ,UAAI;QAAEG;QAAOC;MAAM,IAAI;AACvBD,cAAQ1H,KAAKI,IAAIsH,KAAK;AACtBC,cAAQ3H,KAAKI,IAAIuH,KAAK;AAEtBK,WAAK,iBAAiBH,UAAU;AAoBhC,YAAMI,KAAKlL,KAAK,CAAC,GACfmL,KAAKnL,KAAK,CAAC,GACXuF,KAAKvF,KAAK,CAAC,GACX0F,KAAK1F,KAAK,CAAC;AACb,YAAMC,QAAQsF,KAAK2F;AACnB,YAAMhL,SAASwF,KAAKyF;AAGpB,YAAMhJ,QAAQ,IAAIC,aAAa,CAAC;AAChCN,WAAKO,8BAA8B,KAAKhB,QAAQc,KAAK;AACrD,YAAM,CAAC4H,cAAcC,YAAY,IAAI7H;AACrCL,WAAKO,8BAA8B,KAAKS,eAAeX,KAAK;AAC5D,YAAMiJ,iBAAiBrB,eAAe5H,MAAM,CAAC;AAC7C,YAAMkJ,iBAAiBrB,eAAe7H,MAAM,CAAC;AAE7C,UAAImJ,cAAcrL,OAChBsL,eAAerL,QACfsL,qBAAqB,OACrBC,mBAAmB;AAErB,YAAMC,cAAczI,KAAKS,KAAKiH,QAAQS,cAAc;AACpD,YAAMO,cAAc1I,KAAKS,KAAKkH,QAAQS,cAAc;AACpD,YAAMO,eAAe3I,KAAKS,KAAKzD,QAAQmL,cAAc;AACrD,YAAMS,gBAAgB5I,KAAKS,KAAKxD,SAASmL,cAAc;AAEvD,UAAIK,eAAeE,cAAc;AAC/BN,sBAAcX;MAChB,OAAO;AACLa,6BAAqB;MACvB;AACA,UAAIG,eAAeE,eAAe;AAChCN,uBAAeX;MACjB,OAAO;AACLa,2BAAmB;MACrB;AAKA,YAAMK,OAAO,KAAKC,gBAChBT,aACA,KAAKvL,IAAIkE,OAAOhE,OAChBmL,cACF;AACA,YAAMY,OAAO,KAAKD,gBAChBR,cACA,KAAKxL,IAAIkE,OAAO/D,QAChBmL,cACF;AAEA,YAAM1H,YAAYlB,MAAMmB,eAAeC,UACrC,WACAiI,KAAKG,MACLD,KAAKC,IACP;AACA,YAAMnI,SAASH,UAAUI;AACzB,YAAMmI,WAAW1B,sBAAsB2B,qBAAqBrI,QAAQkH,KAAK;AACzEkB,eAASE,aAAa3J,MAAM2J;AAE5B,WAAKC,+BAA+BH,UAAUrB,WAAWJ,MAAK;AAE9D3G,aAAOK,UAAU,CAAC2H,KAAK3J,QAAQ+I,IAAI,CAACc,KAAK7J,QAAQgJ,EAAE;AACnDe,eAASzK,UAKP,GACAqK,KAAK3J,OACL,GACA,GACA6J,KAAK7J,OACL,GACA,CACF;AAIA2B,aAAOwI,KAAK;AACZJ,eAASK,mBAAmBD,KAAK;AAEjC,WAAKE,SAASN,UAAUhB,IAAIC,IAAI5F,IAAIG,EAAE;AAEtCwG,eAASpJ,gBAAgBW,oBAAoByI,SAASnM,GAAG;AAEzDmM,eAASO,oBAAoB/B,YAAY;AAEzCwB,eAASQ,WAAW;AAEpBR,eAASK,mBAAmBI,QAAQ;AACpC7I,aAAO6I,QAAQ;AAEf,UAAInB,sBAAsBC,kBAAkB;AAQ1C,cAAMmB,QAAQjJ,UAAUM;AACxB,YAAIuH,oBAAoB;AACtBF,wBAAcX;QAChB;AACA,YAAIc,kBAAkB;AACpBF,yBAAeX;QACjB;AAEA,cAAMiC,QAAQ,KAAKd,gBACjBT,aACA,KAAKvL,IAAIkE,OAAOhE,OAChBmL,cACF;AACA,cAAM0B,QAAQ,KAAKf,gBACjBR,cACA,KAAKxL,IAAIkE,OAAO/D,QAChBmL,cACF;AAEA,cAAM0B,QAAQF,MAAMZ;AACpB,cAAMe,QAAQF,MAAMb;AACpB,cAAMgB,aAAaxK,MAAMmB,eAAeC,UACtC,sBACAkJ,OACAC,KACF;AACA,cAAME,UAAUD,WAAWlJ;AAC3B,cAAMkE,KAAKuD,qBAAqBvI,KAAKsF,MAAMtI,QAAQ0K,KAAK,IAAI;AAC5D,cAAMwC,KAAK1B,mBAAmBxI,KAAKsF,MAAMrI,SAAS0K,KAAK,IAAI;AAG3D,iBAAS5C,KAAI,GAAGA,MAAKC,IAAID,MAAK;AAC5B,mBAASL,KAAI,GAAGA,MAAKwF,IAAIxF,MAAK;AAC5BuF,oBAAQE,UACNR,OACAG,QAAQ/E,IACRgF,QAAQrF,IACRoF,OACAC,OACA,GACA,GACAD,OACAC,KACF;UACF;QACF;AACA,eAAO;UACL/I,QAAQgJ,WAAWhJ;UACnBwB,QAAQoH,MAAM1K;UACdyD,QAAQkH,MAAM3K;UACdqD,SAAS0F;UACTvF,SAASwF;QACX;MACF;AAEA,aAAO;QACLlH,QAAQN,UAAUM;QAClBwB,QAAQqG,KAAK3J;QACbyD,QAAQoG,KAAK7J;QACbqD,SAAS0F;QACTvF,SAASwF;MACX;IACF;IAEAY,gBAAgBsB,MAAMC,gBAAgBnL,OAAO;AAK3C,YAAMoL,UAAUtK,KAAKyE,IAAI6C,eAAchB,kBAAkB+D,cAAc;AACvE,UAAIrB,OAAOhJ,KAAKS,KAAK2J,OAAOlL,KAAK;AACjC,UAAI8J,QAAQsB,SAAS;AACnBtB,eAAOsB;MACT,OAAO;AACLpL,gBAAQ8J,OAAOoB;MACjB;AACA,aAAO;QAAElL;QAAO8J;MAAK;IACvB;IAEAO,SAASN,UAAUhB,IAAIC,IAAI5F,IAAIG,IAAI;AACjC,YAAM8H,YAAYjI,KAAK2F;AACvB,YAAMuC,aAAa/H,KAAKyF;AACxBe,eAASnM,IAAIM,KAAK6K,IAAIC,IAAIqC,WAAWC,UAAU;AAC/C3L,WAAK4L,wBACH,CAACxC,IAAIC,IAAI5F,IAAIG,EAAE,GACfjC,oBAAoByI,SAASnM,GAAG,GAChCmM,SAAS3I,QAAQoK,MACnB;AACAzB,eAAS5L,KAAK;AACd4L,eAAS0B,QAAQ;IACnB;IAEAvB,+BAA+BH,UAAUrB,WAAWJ,QAAO;AACzD,YAAM1G,UAAUmI,SAASnM,KACvBwD,UAAU2I,SAAS3I;AACrB,cAAQsH,WAAS;QACf,KAAKT,UAAUC;AACb,gBAAM;YAAEjG;YAAWyJ;UAAY,IAAI,KAAK9N;AACxCgE,kBAAQK,YAAYb,QAAQuK,YAAY1J;AACxCL,kBAAQ8J,cAActK,QAAQwK,cAAcF;AAC5C;QACF,KAAKzD,UAAUE;AACbvG,kBAAQK,YAAYL,QAAQ8J,cAAcpD;AAE1ClH,kBAAQuK,YAAYvK,QAAQwK,cAActD;AAC1C;QACF;AACE,gBAAM,IAAIuD,YAAY,2BAA2BnD,SAAS,EAAE;MAChE;IACF;IAEArK,8BAA8B;AAC5B,aAAO;IACT;IAEAC,WAAWV,KAAK0C,OAAOC,SAASC,UAAUqI,OAAO;AAE/C,UAAI3J,UAASqB;AACb,UAAIC,aAAajD,SAASG,SAAS;AACjCwB,QAAAA,UAASS,KAAKL,UAAUJ,SAAQoB,MAAMK,aAAa;AACnD,YAAI,KAAKzB,QAAQ;AACfA,UAAAA,UAASS,KAAKL,UAAUJ,SAAQ,KAAKA,MAAM;QAC7C;MACF;AAEA,YAAM4I,yBAAyB,KAAKc,oBAAoBtI,OAAOuI,KAAK;AAEpE,UAAIzG,YAAY,IAAIC,UAAUnD,OAAM;AAGpCkD,kBAAYA,UAAUJ,UACpB8F,uBAAuBzE,SACvByE,uBAAuBtE,OACzB;AACApB,kBAAYA,UAAUpC,MACpB,IAAI8H,uBAAuBxE,QAC3B,IAAIwE,uBAAuBrE,MAC7B;AAEA,YAAMhD,UAAU7C,IAAIuE,cAAc2F,uBAAuBhG,QAAQ,QAAQ;AACzErB,cAAQ6B,aAAaF,SAAS;AAE9B,aAAO3B;IACT;EACF;ACrxBA,WAASqL,2BAA2B;IAClCC;IACAC,SAAS;IACTC;IACAC;IACAC;IACAC,gBAAgB;IAChBC,gBAAgB;EAClB,GAAG;AACD,UAAMC,QAAQC,iBAAYC,iBAAiB,aAAa;AACxD,UAAM,CAACC,aAAaC,UAAU,IAAIL,gBAC9B,CAACD,eAAeE,KAAK,IACrB,CAACA,OAAOF,aAAa;AACzB,UAAMO,gBAAgBT,SAAS;AAC/B,UAAMU,iBAAiBV,QAAQ;AAC/B,UAAMW,YAAYd,IAAIe;AACtBb,WAAO,IAAIc,YAAYd,KAAKe,MAAM;AAClC,QAAIC,UAAU;AAEd,aAASC,KAAI,GAAGA,KAAIf,QAAQe,MAAK;AAC/B,iBAAWC,MAAMnB,SAASW,eAAeX,SAASmB,KAAKnB,UAAU;AAC/D,cAAMoB,QAAOpB,SAASa,YAAYd,IAAIC,MAAM,IAAI;AAChDC,aAAKgB,SAAS,IAAIG,QAAO,MAAaV,aAAaD;AACnDR,aAAKgB,SAAS,IAAIG,QAAO,KAAYV,aAAaD;AAClDR,aAAKgB,SAAS,IAAIG,QAAO,KAAWV,aAAaD;AACjDR,aAAKgB,SAAS,IAAIG,QAAO,KAAUV,aAAaD;AAChDR,aAAKgB,SAAS,IAAIG,QAAO,IAASV,aAAaD;AAC/CR,aAAKgB,SAAS,IAAIG,QAAO,IAAQV,aAAaD;AAC9CR,aAAKgB,SAAS,IAAIG,QAAO,IAAOV,aAAaD;AAC7CR,aAAKgB,SAAS,IAAIG,QAAO,IAAMV,aAAaD;MAC9C;AACA,UAAIG,mBAAmB,GAAG;AACxB;MACF;AACA,YAAMQ,OAAOpB,SAASa,YAAYd,IAAIC,QAAQ,IAAI;AAClD,eAASqB,KAAI,GAAGA,KAAIT,gBAAgBS,MAAK;AACvCpB,aAAKgB,SAAS,IAAIG,OAAQ,KAAM,IAAIC,KAAMX,aAAaD;MACzD;IACF;AACA,WAAO;MAAET;MAAQiB;IAAQ;EAC3B;ACpBA,MAAMK,gBAAgB;AAEtB,MAAMC,gBAAgB;AAItB,MAAMC,iBAAiB;AAEvB,MAAMC,kBAAkB;AAExB,MAAMC,oBAAoB;AAI1B,MAAMC,eAAe,IAAIC,UAAU;AAGnC,MAAMC,KAAK,IAAIC,aAAa,CAAC;AAG7B,MAAMC,eAAe,IAAID,aAAa,CACpCE,UACAA,UACA,WACA,SAAS,CACV;AAgBD,WAASC,wBAAwBC,KAAKC,SAAS;AAC7C,QAAID,IAAIE,kBAAkB;AACxB,YAAM,IAAIC,MAAM,2CAA2C;IAC7D;AACAH,QAAII,iBAAiBJ,IAAIK;AACzBL,QAAIM,oBAAoBN,IAAIO;AAC5BP,QAAIQ,mBAAmBR,IAAIS;AAC3BT,QAAIU,kBAAkBV,IAAIW;AAC1BX,QAAIY,sBAAsBZ,IAAIa;AAC9Bb,QAAIc,sBAAsBd,IAAIe;AAC9Bf,QAAIgB,yBAAyBhB,IAAIiB;AACjCjB,QAAIkB,2BAA2BlB,IAAImB;AACnCnB,QAAIoB,iBAAiBpB,IAAIqB;AACzBrB,QAAIsB,mBAAmBtB,IAAIuB;AAC3BvB,QAAIwB,mBAAmBxB,IAAIyB;AAC3BzB,QAAI0B,0BAA0B1B,IAAI2B;AAClC3B,QAAI4B,iBAAiB5B,IAAI6B;AACzB7B,QAAI8B,sBAAsB9B,IAAI+B;AAC9B/B,QAAIgC,sBAAsBhC,IAAIiC;AAE9BjC,QAAIE,mBAAmB,MAAM;AAC3BF,UAAIK,OAAOL,IAAII;AACfJ,UAAIO,UAAUP,IAAIM;AAClBN,UAAIS,SAAST,IAAIQ;AACjBR,UAAIW,QAAQX,IAAIU;AAChBV,UAAIa,YAAYb,IAAIY;AACpBZ,UAAIe,YAAYf,IAAIc;AACpBd,UAAIiB,eAAejB,IAAIgB;AACvBhB,UAAImB,iBAAiBnB,IAAIkB;AAEzBlB,UAAIqB,OAAOrB,IAAIoB;AACfpB,UAAIuB,SAASvB,IAAIsB;AACjBtB,UAAIyB,SAASzB,IAAIwB;AACjBxB,UAAI2B,gBAAgB3B,IAAI0B;AACxB1B,UAAI6B,OAAO7B,IAAI4B;AACf5B,UAAI+B,YAAY/B,IAAI8B;AACpB9B,UAAIiC,YAAYjC,IAAIgC;AACpB,aAAOhC,IAAIE;IACb;AAEAF,QAAIK,OAAO,WAAY;AACrBJ,cAAQI,KAAK;AACb,WAAKD,eAAe;IACtB;AAEAJ,QAAIO,UAAU,WAAY;AACxBN,cAAQM,QAAQ;AAChB,WAAKD,kBAAkB;IACzB;AAEAN,QAAIa,YAAY,SAAUqB,IAAGC,IAAG;AAC9BlC,cAAQY,UAAUqB,IAAGC,EAAC;AACtB,WAAKvB,oBAAoBsB,IAAGC,EAAC;IAC/B;AAEAnC,QAAIW,QAAQ,SAAUuB,IAAGC,IAAG;AAC1BlC,cAAQU,MAAMuB,IAAGC,EAAC;AAClB,WAAKzB,gBAAgBwB,IAAGC,EAAC;IAC3B;AAEAnC,QAAIe,YAAY,SAAUqB,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,IAAG;AAC1CxC,cAAQc,UAAUqB,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,EAAC;AAClC,WAAK3B,oBAAoBsB,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,EAAC;IAC3C;AAEAzC,QAAIiB,eAAe,SAAUmB,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,IAAG;AAC7CxC,cAAQgB,aAAamB,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,EAAC;AACrC,WAAKzB,uBAAuBoB,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,EAAC;IAC9C;AAEAzC,QAAImB,iBAAiB,WAAY;AAC/BlB,cAAQkB,eAAe;AACvB,WAAKD,yBAAyB;IAChC;AAEAlB,QAAIS,SAAS,SAAUiC,OAAO;AAC5BzC,cAAQQ,OAAOiC,KAAK;AACpB,WAAKlC,iBAAiBkC,KAAK;IAC7B;AAEA1C,QAAIqB,OAAO,SAAUsB,MAAM;AACzB1C,cAAQoB,KAAKsB,IAAI;AACjB,WAAKvB,eAAeuB,IAAI;IAC1B;AAEA3C,QAAIuB,SAAS,SAAUW,IAAGC,IAAG;AAC3BlC,cAAQsB,OAAOW,IAAGC,EAAC;AACnB,WAAKb,iBAAiBY,IAAGC,EAAC;IAC5B;AAEAnC,QAAIyB,SAAS,SAAUS,IAAGC,IAAG;AAC3BlC,cAAQwB,OAAOS,IAAGC,EAAC;AACnB,WAAKX,iBAAiBU,IAAGC,EAAC;IAC5B;AAEAnC,QAAI2B,gBAAgB,SAAUiB,MAAMC,MAAMC,MAAMC,MAAMb,IAAGC,IAAG;AAC1DlC,cAAQ0B,cAAciB,MAAMC,MAAMC,MAAMC,MAAMb,IAAGC,EAAC;AAClD,WAAKT,wBAAwBkB,MAAMC,MAAMC,MAAMC,MAAMb,IAAGC,EAAC;IAC3D;AAEAnC,QAAI6B,OAAO,SAAUK,IAAGC,IAAGa,OAAOC,QAAQ;AACxChD,cAAQ4B,KAAKK,IAAGC,IAAGa,OAAOC,MAAM;AAChC,WAAKrB,eAAeM,IAAGC,IAAGa,OAAOC,MAAM;IACzC;AAEAjD,QAAI+B,YAAY,WAAY;AAC1B9B,cAAQ8B,UAAU;AAClB,WAAKD,oBAAoB;IAC3B;AAEA9B,QAAIiC,YAAY,WAAY;AAC1BhC,cAAQgC,UAAU;AAClB,WAAKD,oBAAoB;IAC3B;EACF;AAEA,MAAMkB,iBAAN,MAAqB;IACnBC,YAAYC,eAAe;AACzB,WAAKA,gBAAgBA;AACrB,WAAKC,QAAQC,uBAAOC,OAAO,IAAI;IACjC;IAEAC,UAAUC,IAAIT,OAAOC,QAAQ;AAC3B,UAAIS;AACJ,UAAI,KAAKL,MAAMI,EAAE,MAAME,QAAW;AAChCD,sBAAc,KAAKL,MAAMI,EAAE;AAC3B,aAAKL,cAAcQ,MAAMF,aAAaV,OAAOC,MAAM;MACrD,OAAO;AACLS,sBAAc,KAAKN,cAAcG,OAAOP,OAAOC,MAAM;AACrD,aAAKI,MAAMI,EAAE,IAAIC;MACnB;AACA,aAAOA;IACT;IAEAG,OAAOJ,IAAI;AACT,aAAO,KAAKJ,MAAMI,EAAE;IACtB;IAEAK,QAAQ;AACN,iBAAWL,MAAM,KAAKJ,OAAO;AAC3B,cAAMK,cAAc,KAAKL,MAAMI,EAAE;AACjC,aAAKL,cAAcW,QAAQL,WAAW;AACtC,eAAO,KAAKL,MAAMI,EAAE;MACtB;IACF;EACF;AAEA,WAASO,yBACPhE,KACAiE,QACAC,MACAC,MACAC,MACAC,MACAC,OACAC,OACAC,OACAC,OACA;AACA,UAAM,CAACrC,IAAGC,IAAGC,IAAGC,IAAGmC,IAAIC,EAAE,IAAIC,oBAAoB5E,GAAG;AACpD,QAAIqC,OAAM,KAAKC,OAAM,GAAG;AAWtB,YAAMuC,MAAMP,QAAQlC,KAAIsC;AACxB,YAAMI,OAAOC,KAAKC,MAAMH,GAAG;AAC3B,YAAMI,MAAMV,QAAQhC,KAAIoC;AACxB,YAAMO,OAAOH,KAAKC,MAAMC,GAAG;AAC3B,YAAME,OAAOb,QAAQE,SAASpC,KAAIsC;AAIlC,YAAMU,SAASL,KAAKM,IAAIN,KAAKC,MAAMG,GAAG,IAAIL,IAAI,KAAK;AACnD,YAAMQ,OAAOf,QAAQE,SAASlC,KAAIoC;AAClC,YAAMY,UAAUR,KAAKM,IAAIN,KAAKC,MAAMM,GAAG,IAAIJ,IAAI,KAAK;AAKpDlF,UAAIiB,aAAa8D,KAAKS,KAAKpD,EAAC,GAAG,GAAG,GAAG2C,KAAKS,KAAKjD,EAAC,GAAGuC,MAAMI,IAAI;AAC7DlF,UAAIyF,UAAUxB,QAAQC,MAAMC,MAAMC,MAAMC,MAAM,GAAG,GAAGe,QAAQG,OAAO;AACnEvF,UAAIiB,aAAamB,IAAGC,IAAGC,IAAGC,IAAGmC,IAAIC,EAAE;AAEnC,aAAO,CAACS,QAAQG,OAAO;IACzB;AAEA,QAAInD,OAAM,KAAKG,OAAM,GAAG;AAEtB,YAAMsC,MAAMN,QAAQjC,KAAIoC;AACxB,YAAMI,OAAOC,KAAKC,MAAMH,GAAG;AAC3B,YAAMI,MAAMX,QAAQjC,KAAIsC;AACxB,YAAMO,OAAOH,KAAKC,MAAMC,GAAG;AAC3B,YAAME,OAAOZ,QAAQE,SAASnC,KAAIoC;AAClC,YAAMU,SAASL,KAAKM,IAAIN,KAAKC,MAAMG,GAAG,IAAIL,IAAI,KAAK;AACnD,YAAMQ,OAAOhB,QAAQE,SAASnC,KAAIsC;AAClC,YAAMY,UAAUR,KAAKM,IAAIN,KAAKC,MAAMM,GAAG,IAAIJ,IAAI,KAAK;AAEpDlF,UAAIiB,aAAa,GAAG8D,KAAKS,KAAKnD,EAAC,GAAG0C,KAAKS,KAAKlD,EAAC,GAAG,GAAGwC,MAAMI,IAAI;AAC7DlF,UAAIyF,UAAUxB,QAAQC,MAAMC,MAAMC,MAAMC,MAAM,GAAG,GAAGkB,SAASH,MAAM;AACnEpF,UAAIiB,aAAamB,IAAGC,IAAGC,IAAGC,IAAGmC,IAAIC,EAAE;AAEnC,aAAO,CAACY,SAASH,MAAM;IACzB;AAGApF,QAAIyF,UAAUxB,QAAQC,MAAMC,MAAMC,MAAMC,MAAMC,OAAOC,OAAOC,OAAOC,KAAK;AAExE,UAAMiB,SAASX,KAAKY,MAAMvD,IAAGC,EAAC;AAC9B,UAAMuD,SAASb,KAAKY,MAAMrD,IAAGC,EAAC;AAC9B,WAAO,CAACmD,SAASlB,OAAOoB,SAASnB,KAAK;EACxC;AAEA,MAAMoB,mBAAN,MAAuB;IAErBC,eAAe;IAEfC,WAAW;IAEXC,gBAAgB;IAEhBC,aAAa;IAEbC,kBAAkB;IAElBC,aAAaC;IAEbC,UAAU;IAGVnE,IAAI;IAEJC,IAAI;IAGJmE,QAAQ;IAERC,QAAQ;IAGRC,cAAc;IAEdC,cAAc;IAEdC,aAAa;IAEbC,oBAAoBC,kBAAkBC;IAEtCC,WAAW;IAGXC,YAAY;IAEZC,cAAc;IAEdC,cAAc;IAEdC,gBAAgB;IAGhBC,YAAY;IAEZC,cAAc;IAEdC,YAAY;IAEZC,cAAc;IAEdC,eAAe;IAEfpE,YAAYH,OAAOC,QAAQuE,SAAS;AAClCA,gBAAU,IAAI;AAEd,WAAKC,UAAU,IAAI7H,aAAa,CAAC,GAAG,GAAGoD,OAAOC,MAAM,CAAC;AACrD,WAAKyE,SAAS7H,aAAa8H,MAAM;IACnC;IAEAC,QAAQ;AACN,YAAMA,SAAQtE,OAAOC,OAAO,IAAI;AAChCqE,MAAAA,OAAMH,UAAU,KAAKA,QAAQE,MAAM;AACnCC,MAAAA,OAAMF,SAAS,KAAKA,OAAOC,MAAM;AACjC,aAAOC;IACT;IAEAC,mBAAmBC,WAAWC,SAASlB,MAAM9F,YAAY,MAAM;AAC7D,YAAMiH,MAAM,KAAKN,OAAOC,MAAM;AAC9B,UAAIG,aAAaC,SAASE,QAAQ;AAChC,YAAI,CAAClH,WAAW;AACdmH,sBAAY,6CAA6C;QAC3D;AAGAC,aAAKC,8BAA8BrH,WAAWpB,EAAE;AAChD,cAAM0I,aAAc1I,GAAG,CAAC,IAAI,KAAK0H,YAAa;AAC9C,cAAMiB,aAAc3I,GAAG,CAAC,IAAI,KAAK0H,YAAa;AAC9CW,YAAI,CAAC,KAAKK;AACVL,YAAI,CAAC,KAAKM;AACVN,YAAI,CAAC,KAAKK;AACVL,YAAI,CAAC,KAAKM;MACZ;AACA,aAAON;IACT;IAEAO,qBAAqB;AACnB,YAAMC,YAAYL,KAAKK,UAAU,KAAKf,SAAS,KAAKI,mBAAmB,CAAC;AACxE,WAAKY,uBAAuBD,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACvD;IAEAE,cAAc;AACZ,aAAO,KAAKhB,OAAO,CAAC,MAAM5H;IAC5B;IAEA2I,uBAAuBT,KAAK;AAC1B,WAAKP,QAAQkB,IAAIX,KAAK,CAAC;AACvB,WAAKN,OAAOiB,IAAI9I,cAAc,CAAC;IACjC;IAEA+I,0BAA0Bd,WAAWC,SAASlB,MAAM9F,YAAY,MAAM;AACpE,aAAOoH,KAAKK,UACV,KAAKf,SACL,KAAKI,mBAAmBC,UAAU/G,SAAS,CAC7C;IACF;EACF;AAEA,WAAS8H,mBAAmB7I,KAAK8I,SAAS;AACxC,QAAIA,mBAAmBC,WAAW;AAChC/I,UAAIgJ,aAAaF,SAAS,GAAG,CAAC;AAC9B;IACF;AAaA,UAAM7F,SAAS6F,QAAQ7F,QACrBD,QAAQ8F,QAAQ9F;AAClB,UAAMiG,qBAAqBhG,SAASzD;AACpC,UAAM0J,cAAcjG,SAASgG,sBAAsBzJ;AACnD,UAAM2J,cAAcF,uBAAuB,IAAIC,aAAaA,aAAa;AAEzE,UAAME,eAAepJ,IAAIqJ,gBAAgBrG,OAAOxD,iBAAiB;AACjE,QAAI8J,SAAS,GACXC;AACF,UAAMC,MAAMV,QAAQW;AACpB,UAAMC,OAAON,aAAaK;AAC1B,QAAIE,IAAGC,IAAGC,iBAAiBC;AAI3B,QAAIhB,QAAQiB,SAASC,eAAUC,gBAAgB;AAE7C,YAAMC,YAAYV,IAAIW;AACtB,YAAMC,SAAS,IAAIC,YAAYX,KAAKY,QAAQ,GAAGZ,KAAKS,cAAc,CAAC;AACnE,YAAMI,mBAAmBH,OAAOI;AAChC,YAAMC,cAAezH,QAAQ,KAAM;AACnC,YAAM0H,QAAQ;AACd,YAAMC,QAAQC,iBAAYC,iBAAiB,aAAa;AAExD,WAAKlB,KAAI,GAAGA,KAAIR,aAAaQ,MAAK;AAChCE,0BAAkBF,KAAIT,aAAa1J,oBAAoByJ;AACvDM,kBAAU;AACV,aAAKK,KAAI,GAAGA,KAAIC,iBAAiBD,MAAK;AACpC,gBAAMkB,UAAUZ,YAAYZ;AAC5B,cAAIyB,KAAI;AACR,gBAAMC,OAAOF,UAAUL,cAAczH,QAAQ8H,UAAU,IAAI;AAC3D,gBAAMG,eAAeD,OAAO,CAAC;AAC7B,cAAIE,OAAO;AACX,cAAIC,UAAU;AACd,iBAAOJ,KAAIE,cAAcF,MAAK,GAAG;AAC/BI,sBAAU3B,IAAIF,QAAQ;AACtBc,mBAAOb,SAAS,IAAI4B,UAAU,MAAMT,QAAQC;AAC5CP,mBAAOb,SAAS,IAAI4B,UAAU,KAAKT,QAAQC;AAC3CP,mBAAOb,SAAS,IAAI4B,UAAU,KAAKT,QAAQC;AAC3CP,mBAAOb,SAAS,IAAI4B,UAAU,KAAKT,QAAQC;AAC3CP,mBAAOb,SAAS,IAAI4B,UAAU,IAAIT,QAAQC;AAC1CP,mBAAOb,SAAS,IAAI4B,UAAU,IAAIT,QAAQC;AAC1CP,mBAAOb,SAAS,IAAI4B,UAAU,IAAIT,QAAQC;AAC1CP,mBAAOb,SAAS,IAAI4B,UAAU,IAAIT,QAAQC;UAC5C;AACA,iBAAOI,KAAIC,MAAMD,MAAK;AACpB,gBAAIG,SAAS,GAAG;AACdC,wBAAU3B,IAAIF,QAAQ;AACtB4B,qBAAO;YACT;AAEAd,mBAAOb,SAAS,IAAI4B,UAAUD,OAAOR,QAAQC;AAC7CO,qBAAS;UACX;QACF;AAEA,eAAO3B,UAAUgB,kBAAkB;AACjCH,iBAAOb,SAAS,IAAI;QACtB;AAEAvJ,YAAIgJ,aAAaI,cAAc,GAAGO,KAAInK,iBAAiB;MACzD;IACF,WAAWsJ,QAAQiB,SAASC,eAAUoB,YAAY;AAEhDxB,MAAAA,KAAI;AACJE,yBAAmB9G,QAAQxD,oBAAoB;AAC/C,WAAKmK,KAAI,GAAGA,KAAIT,YAAYS,MAAK;AAC/BD,aAAKf,IAAIa,IAAI6B,SAAS/B,QAAQA,SAASQ,gBAAgB,CAAC;AACxDR,kBAAUQ;AAEV9J,YAAIgJ,aAAaI,cAAc,GAAGQ,EAAC;AACnCA,QAAAA,MAAKpK;MACP;AACA,UAAImK,KAAIR,aAAa;AACnBW,2BAAmB9G,QAAQiG,qBAAqB;AAChDS,aAAKf,IAAIa,IAAI6B,SAAS/B,QAAQA,SAASQ,gBAAgB,CAAC;AAExD9J,YAAIgJ,aAAaI,cAAc,GAAGQ,EAAC;MACrC;IACF,WAAWd,QAAQiB,SAASC,eAAUsB,WAAW;AAE/CzB,wBAAkBrK;AAClBsK,yBAAmB9G,QAAQ6G;AAC3B,WAAKF,KAAI,GAAGA,KAAIR,aAAaQ,MAAK;AAChC,YAAIA,MAAKT,YAAY;AACnBW,4BAAkBZ;AAClBa,6BAAmB9G,QAAQ6G;QAC7B;AAEAN,kBAAU;AACV,aAAKK,KAAIE,kBAAkBF,QAAO;AAChCF,eAAKH,SAAS,IAAIC,IAAIF,QAAQ;AAC9BI,eAAKH,SAAS,IAAIC,IAAIF,QAAQ;AAC9BI,eAAKH,SAAS,IAAIC,IAAIF,QAAQ;AAC9BI,eAAKH,SAAS,IAAI;QACpB;AAEAvJ,YAAIgJ,aAAaI,cAAc,GAAGO,KAAInK,iBAAiB;MACzD;IACF,OAAO;AACL,YAAM,IAAIW,MAAM,mBAAmB2I,QAAQiB,IAAI,EAAE;IACnD;EACF;AAEA,WAASwB,mBAAmBvL,KAAK8I,SAAS;AACxC,QAAIA,QAAQ0C,QAAQ;AAElBxL,UAAIyF,UAAUqD,QAAQ0C,QAAQ,GAAG,CAAC;AAClC;IACF;AAGA,UAAMvI,SAAS6F,QAAQ7F,QACrBD,QAAQ8F,QAAQ9F;AAClB,UAAMiG,qBAAqBhG,SAASzD;AACpC,UAAM0J,cAAcjG,SAASgG,sBAAsBzJ;AACnD,UAAM2J,cAAcF,uBAAuB,IAAIC,aAAaA,aAAa;AAEzE,UAAME,eAAepJ,IAAIqJ,gBAAgBrG,OAAOxD,iBAAiB;AACjE,QAAI8J,SAAS;AACb,UAAME,MAAMV,QAAQW;AACpB,UAAMC,OAAON,aAAaK;AAE1B,aAASE,KAAI,GAAGA,KAAIR,aAAaQ,MAAK;AACpC,YAAME,kBACJF,KAAIT,aAAa1J,oBAAoByJ;AAKvC,OAAC;QAAEK;MAAO,IAAImC,2BAA2B;QACvCjC;QACAF;QACAI;QACA1G;QACAC,QAAQ4G;QACR6B,eAAe;MACjB,CAAC;AAED1L,UAAIgJ,aAAaI,cAAc,GAAGO,KAAInK,iBAAiB;IACzD;EACF;AAEA,WAASmM,aAAaC,WAAW3L,SAAS;AACxC,UAAM4L,aAAa,CACjB,eACA,aACA,YACA,eACA,aACA,WACA,YACA,cACA,4BACA,QACA,QAAQ;AAEV,eAAWC,YAAYD,YAAY;AACjC,UAAID,UAAUE,QAAQ,MAAMnI,QAAW;AACrC1D,gBAAQ6L,QAAQ,IAAIF,UAAUE,QAAQ;MACxC;IACF;AACA,QAAIF,UAAUG,gBAAgBpI,QAAW;AACvC1D,cAAQ8L,YAAYH,UAAUI,YAAY,CAAC;AAC3C/L,cAAQgM,iBAAiBL,UAAUK;IACrC;EACF;AAEA,WAASC,kBAAkBlM,KAAK;AAC9BA,QAAImM,cAAcnM,IAAIoM,YAAY;AAClCpM,QAAIqM,WAAW;AACfrM,QAAIsM,cAAc;AAClBtM,QAAIqH,YAAY;AAChBrH,QAAIuM,UAAU;AACdvM,QAAIwM,WAAW;AACfxM,QAAIyM,aAAa;AACjBzM,QAAI0M,2BAA2B;AAC/B1M,QAAI2M,OAAO;AACX,QAAI3M,IAAI+L,gBAAgBpI,QAAW;AACjC3D,UAAI+L,YAAY,CAAA,CAAE;AAClB/L,UAAIiM,iBAAiB;IACvB;AACA,UAAM;MAAEW;IAAO,IAAI5M;AACnB,QAAI4M,WAAW,UAAUA,WAAW,IAAI;AACtC5M,UAAI4M,SAAS;IACf;EACF;AAEA,WAASC,yBAAyB9L,WAAW+L,cAAa;AAKxD,QAAIA,cAAa;AACf,aAAO;IACT;AAEA3E,SAAKC,8BAA8BrH,WAAWpB,EAAE;AAGhD,UAAMoN,cAAchI,KAAKiI,OACvBC,YAAYC,aAAaC,cAAcC,gBACzC;AAEA,WAAOzN,GAAG,CAAC,KAAKoN,eAAepN,GAAG,CAAC,KAAKoN;EAC1C;AAEA,MAAMM,kBAAkB,CAAC,QAAQ,SAAS,QAAQ;AAClD,MAAMC,mBAAmB,CAAC,SAAS,SAAS,OAAO;AACnD,MAAMC,cAAc,CAAC;AACrB,MAAMC,UAAU,CAAC;AAEjB,MAAMC,iBAAN,MAAMA,gBAAe;IACnBtK,YACEuK,WACAC,YACAC,MACAxK,eACAyK,eACA;MAAEC;MAAuBC,qBAAqB;IAAK,GACnDC,qBACAC,YACAC,mBACA;AACA,WAAKlO,MAAM0N;AACX,WAAKS,UAAU,IAAItI,iBACjB,KAAK7F,IAAIoO,OAAOpL,OAChB,KAAKhD,IAAIoO,OAAOnL,MAClB;AACA,WAAKoL,aAAa,CAAA;AAClB,WAAKC,cAAc;AACnB,WAAKC,gBAAgB;AACrB,WAAKC,MAAM;AACX,WAAKC,QAAQ;AACb,WAAKd,aAAaA;AAClB,WAAKC,OAAOA;AACZ,WAAKxK,gBAAgBA;AACrB,WAAKyK,gBAAgBA;AACrB,WAAKa,aAAa,CAAA;AAGlB,WAAKC,gBAAgB;AACrB,WAAKC,qBAAqB,CAAA;AAC1B,WAAKC,aAAa;AAClB,WAAKC,aAAa,CAAA;AAClB,WAAKC,eAAe;AACpB,WAAKC,YAAY;AACjB,WAAKC,eAAe;AACpB,WAAKC,iBAAiB;AACtB,WAAKnB,qBAAqBA,sBAAsB,CAAA;AAChD,WAAKD,wBAAwBA;AAC7B,WAAKqB,iBAAiB,IAAIjM,eAAe,KAAKE,aAAa;AAC3D,WAAKgM,iBAAiB,oBAAIC,IAAI;AAC9B,WAAKrB,sBAAsBA;AAC3B,WAAKsB,gBAAgB;AACrB,WAAKC,eAAe;AACpB,WAAKC,eAAe;AACpB,WAAKvB,aAAaA;AAElB,WAAKwB,0BAA0B,CAAC,IAAI,CAAC;AACrC,WAAKC,6BAA6B;AAClC,WAAKC,oBAAoB,oBAAIN,IAAI;AAEjC,WAAKnB,oBAAoBA,qBAAqB;IAChD;IAEA0B,UAAUC,OAAOpG,MAAMqG,WAAW,MAAM;AACtC,UAAI,OAAOrG,SAAS,UAAU;AAC5B,aAAKyE,mBAAmB6B,sBAAsBF,OAAOpG,IAAI;AACzD,eAAOA,KAAKuG,WAAW,IAAI,IACvB,KAAKrC,WAAWsC,IAAIxG,IAAI,IACxB,KAAKmE,KAAKqC,IAAIxG,IAAI;MACxB;AACA,aAAOqG;IACT;IAEAI,aAAa;MACXnP;MACAoP;MACAC,eAAe;MACfC,aAAa;IACf,GAAG;AAMD,YAAMrN,QAAQ,KAAKhD,IAAIoO,OAAOpL;AAC9B,YAAMC,SAAS,KAAKjD,IAAIoO,OAAOnL;AAE/B,YAAMqN,iBAAiB,KAAKtQ,IAAIoM;AAChC,WAAKpM,IAAIoM,YAAYiE,cAAc;AACnC,WAAKrQ,IAAIuQ,SAAS,GAAG,GAAGvN,OAAOC,MAAM;AACrC,WAAKjD,IAAIoM,YAAYkE;AAErB,UAAIF,cAAc;AAChB,cAAMI,oBAAoB,KAAKrB,eAAe3L,UAC5C,eACAR,OACAC,MACF;AACA,aAAKwN,eAAe,KAAKzQ;AACzB,aAAKwQ,oBAAoBA,kBAAkBpC;AAC3C,aAAKpO,MAAMwQ,kBAAkBE;AAC7B,aAAK1Q,IAAIK,KAAK;AAGd,aAAKL,IAAIe,UAAU,GAAG6D,oBAAoB,KAAK6L,YAAY,CAAC;MAC9D;AAEA,WAAKzQ,IAAIK,KAAK;AACd6L,wBAAkB,KAAKlM,GAAG;AAC1B,UAAIe,WAAW;AACb,aAAKf,IAAIe,UAAU,GAAGA,SAAS;AAC/B,aAAKwO,eAAexO,UAAU,CAAC;AAC/B,aAAKyO,eAAezO,UAAU,CAAC;MACjC;AACA,WAAKf,IAAIe,UAAU,GAAGoP,SAASpP,SAAS;AACxC,WAAKuO,gBAAgBa,SAASxP;AAE9B,WAAKgO,gBAAgB/J,oBAAoB,KAAK5E,GAAG;IACnD;IAEA2Q,oBACEC,cACAC,mBACAC,kBACAC,SACAC,kBACA;AACA,YAAMC,YAAYL,aAAaK;AAC/B,YAAMC,UAAUN,aAAaM;AAC7B,UAAIvH,KAAIkH,qBAAqB;AAC7B,YAAMM,eAAeF,UAAUzG;AAG/B,UAAI2G,iBAAiBxH,IAAG;AACtB,eAAOA;MACT;AAEA,YAAMyH,kBACJD,eAAexH,KAAIpK,mBACnB,OAAOuR,qBAAqB;AAC9B,YAAMO,UAAUD,kBAAkBE,KAAKC,IAAI,IAAIjS,iBAAiB;AAChE,UAAIkS,SAAQ;AAEZ,YAAM7D,aAAa,KAAKA;AACxB,YAAMC,OAAO,KAAKA;AAClB,UAAI6D,MAAMC;AAEV,aAAO,MAAM;AACX,YAAIX,YAAYpN,UAAagG,OAAMoH,QAAQY,gBAAgB;AACzDZ,kBAAQa,QAAQjI,IAAGmH,gBAAgB;AACnC,iBAAOnH;QACT;AAEA,YAAI,CAACqH,oBAAoBA,iBAAiBrH,EAAC,GAAG;AAC5C8H,iBAAOP,QAAQvH,EAAC;AAEhB+H,mBAAST,UAAUtH,EAAC,KAAK;AAEzB,cAAI8H,SAASI,IAAIC,YAAY;AAC3B,gBAAIJ,WAAW,MAAM;AACnB,mBAAKD,IAAI,EAAE9H,EAAC;YACd,OAAO;AACL,mBAAK8H,IAAI,EAAE9H,IAAG,GAAG+H,MAAM;YACzB;UACF,OAAO;AACL,uBAAWK,YAAYL,QAAQ;AAC7B,mBAAKxD,mBAAmB8D,gBAAgBD,UAAUpI,EAAC;AACnD,oBAAMsI,WAAWF,SAAS/B,WAAW,IAAI,IAAIrC,aAAaC;AAI1D,kBAAI,CAACqE,SAASC,IAAIH,QAAQ,GAAG;AAC3BE,yBAAShC,IAAI8B,UAAUjB,gBAAgB;AACvC,uBAAOnH;cACT;YACF;UACF;QACF;AAEAA,QAAAA;AAGA,YAAIA,OAAMwH,cAAc;AACtB,iBAAOxH;QACT;AAIA,YAAIyH,mBAAmB,EAAEI,SAAQjS,iBAAiB;AAChD,cAAI+R,KAAKC,IAAI,IAAIF,SAAS;AACxBP,6BAAiB;AACjB,mBAAOnH;UACT;AACA6H,UAAAA,SAAQ;QACV;MAIF;IACF;IAEA,uBAAuB;AAErB,aAAO,KAAKnD,WAAW7D,UAAU,KAAK2H,aAAa;AACjD,aAAK5R,QAAQ;MACf;AAEA,WAAK4N,QAAQ7G,cAAc;AAC3B,WAAKtH,IAAIO,QAAQ;AAEjB,UAAI,KAAKiQ,mBAAmB;AAC1B,aAAKxQ,MAAM,KAAKyQ;AAChB,aAAKzQ,IAAIK,KAAK;AACd,aAAKL,IAAIiB,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACtC,aAAKjB,IAAIyF,UAAU,KAAK+K,mBAAmB,GAAG,CAAC;AAC/C,aAAKxQ,IAAIO,QAAQ;AACjB,aAAKiQ,oBAAoB;MAC3B;IACF;IAEA4B,aAAa;AACX,WAAK,qBAAqB;AAE1B,WAAKjD,eAAerL,MAAM;AAC1B,WAAKsL,eAAetL,MAAM;AAE1B,iBAAWT,UAAS,KAAKsM,kBAAkB0C,OAAO,GAAG;AACnD,mBAAWjE,UAAU/K,OAAMgP,OAAO,GAAG;AACnC,cACE,OAAOC,sBAAsB,eAC7BlE,kBAAkBkE,mBAClB;AACAlE,mBAAOpL,QAAQoL,OAAOnL,SAAS;UACjC;QACF;AACAI,QAAAA,OAAMS,MAAM;MACd;AACA,WAAK6L,kBAAkB7L,MAAM;AAC7B,WAAK,YAAY;IACnB;IAEA,cAAc;AACZ,UAAI,KAAKmK,YAAY;AACnB,cAAMsE,cAAc,KAAK1E,cAAc2E,aACrC,KAAKvE,WAAWwE,YAChB,KAAKxE,WAAWoC,UAClB;AACA,YAAIkC,gBAAgB,QAAQ;AAC1B,gBAAMG,cAAc,KAAK1S,IAAI4M;AAC7B,eAAK5M,IAAI4M,SAAS2F;AAClB,eAAKvS,IAAIyF,UAAU,KAAKzF,IAAIoO,QAAQ,GAAG,CAAC;AACxC,eAAKpO,IAAI4M,SAAS8F;QACpB;MACF;IACF;IAEAC,YAAYC,KAAKC,kBAAkB;AAMjC,YAAM7P,QAAQ4P,IAAI5P,SAAS4P,IAAIE;AAC/B,YAAM7P,SAAS2P,IAAI3P,UAAU2P,IAAIG;AACjC,UAAIC,aAAajO,KAAKkO,IACpBlO,KAAKY,MAAMkN,iBAAiB,CAAC,GAAGA,iBAAiB,CAAC,CAAC,GACnD,CACF;AACA,UAAIK,cAAcnO,KAAKkO,IACrBlO,KAAKY,MAAMkN,iBAAiB,CAAC,GAAGA,iBAAiB,CAAC,CAAC,GACnD,CACF;AAEA,UAAIM,aAAanQ,OACfoQ,cAAcnQ;AAChB,UAAIoQ,cAAc;AAClB,UAAIC,WAAWC;AACf,aACGP,aAAa,KAAKG,aAAa,KAC/BD,cAAc,KAAKE,cAAc,GAClC;AACA,YAAII,WAAWL,YACbM,YAAYL;AACd,YAAIJ,aAAa,KAAKG,aAAa,GAAG;AAIpCK,qBACEL,cAAc,QACVpO,KAAK2O,MAAMP,aAAa,CAAC,IAAI,KAAK,IAClCpO,KAAK4O,KAAKR,aAAa,CAAC;AAC9BH,wBAAcG,aAAaK;QAC7B;AACA,YAAIN,cAAc,KAAKE,cAAc,GAAG;AAEtCK,sBACEL,eAAe,QACXrO,KAAK2O,MAAMN,cAAc,CAAC,IAAI,KAAK,IACnCrO,KAAK4O,KAAKP,WAAW,IAAI;AAC/BF,yBAAeE,cAAcK;QAC/B;AACAH,oBAAY,KAAKnE,eAAe3L,UAC9B6P,aACAG,UACAC,SACF;AACAF,iBAASD,UAAU5C;AACnB6C,eAAOK,UAAU,GAAG,GAAGJ,UAAUC,SAAS;AAC1CF,eAAO9N,UACLmN,KACA,GACA,GACAO,YACAC,aACA,GACA,GACAI,UACAC,SACF;AACAb,cAAMU,UAAUlF;AAChB+E,qBAAaK;AACbJ,sBAAcK;AACdJ,sBAAcA,gBAAgB,cAAc,cAAc;MAC5D;AACA,aAAO;QACLT;QACAO;QACAC;MACF;IACF;IAEAS,kBAAkBhE,OAAO+C,KAAK;AAC5B,YAAM5S,MAAM,KAAKA;AACjB,YAAM;QAAEgD;QAAOC;MAAO,IAAI2P;AAC1B,YAAM7L,YAAY,KAAKoH,QAAQpH;AAC/B,YAAM+M,gBAAgB,KAAK3F,QAAQlH;AACnC,YAAM8M,mBAAmBnP,oBAAoB5E,GAAG;AAEhD,UAAIqD,QAAO2Q,UAAUC,QAAQC;AAC7B,WAAKtB,IAAIpH,UAAUoH,IAAInJ,SAASmJ,IAAIuB,QAAQ,GAAG;AAC7C,cAAMC,UAAUxB,IAAIpH,UAAUoH,IAAInJ,KAAKa;AAOvC0J,mBAAWK,KAAKC,UACdR,gBACIC,mBACA,CAACA,iBAAiBpM,MAAM,GAAG,CAAC,GAAGZ,SAAS,CAC9C;AAEA1D,QAAAA,SAAQ,KAAKsM,kBAAkBM,IAAImE,OAAO;AAC1C,YAAI,CAAC/Q,QAAO;AACVA,UAAAA,SAAQ,oBAAIgM,IAAI;AAChB,eAAKM,kBAAkBhH,IAAIyL,SAAS/Q,MAAK;QAC3C;AACA,cAAMkR,cAAclR,OAAM4M,IAAI+D,QAAQ;AACtC,YAAIO,eAAe,CAACT,eAAe;AACjC,gBAAMU,WAAUzP,KAAKC,MACnBD,KAAK0P,IAAIV,iBAAiB,CAAC,GAAGA,iBAAiB,CAAC,CAAC,IAC/CA,iBAAiB,CAAC,CACtB;AACA,gBAAMW,WAAU3P,KAAKC,MACnBD,KAAK0P,IAAIV,iBAAiB,CAAC,GAAGA,iBAAiB,CAAC,CAAC,IAC/CA,iBAAiB,CAAC,CACtB;AAEA,eAAK7F,mBAAmByG,mBACtB9E,OACA+E,aAAaC,gBACf;AACA,iBAAO;YACLzG,QAAQmG;YACRC,SAAAA;YACAE,SAAAA;UACF;QACF;AACAT,iBAASM;MACX;AAEA,UAAI,CAACN,QAAQ;AACXC,qBAAa,KAAK/E,eAAe3L,UAAU,cAAcR,OAAOC,MAAM;AACtEsI,2BAAmB2I,WAAWxD,SAASkC,GAAG;MAC5C;AAOA,UAAIkC,eAAe3M,KAAKpH,UAAUgT,kBAAkB,CAClD,IAAI/Q,OACJ,GACA,GACA,KAAKC,QACL,GACA,CAAC,CACF;AACD6R,qBAAe3M,KAAKpH,UAAU+T,cAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC7R,MAAM,CAAC;AACpE,YAAMyE,SAAS7H,aAAa8H,MAAM;AAClCQ,WAAK4M,wBAAwB,CAAC,GAAG,GAAG/R,OAAOC,MAAM,GAAG6R,cAAcpN,MAAM;AACxE,YAAM,CAACsN,MAAMC,MAAMC,MAAMC,IAAI,IAAIzN;AACjC,YAAM0N,aAAarQ,KAAKC,MAAMkQ,OAAOF,IAAI,KAAK;AAC9C,YAAMK,cAActQ,KAAKC,MAAMmQ,OAAOF,IAAI,KAAK;AAC/C,YAAMK,aAAa,KAAKnG,eAAe3L,UACrC,cACA4R,YACAC,WACF;AACA,YAAME,UAAUD,WAAW5E;AAM3B,YAAM8D,UAAUQ;AAChB,YAAMN,UAAUO;AAChBM,cAAQ1U,UAAU,CAAC2T,SAAS,CAACE,OAAO;AACpCa,cAAQxU,UAAU,GAAG+T,YAAY;AAEjC,UAAI,CAACb,QAAQ;AAEXA,iBAAS,KAAKtB,YACZuB,WAAW9F,QACXoH,2BAA2BD,OAAO,CACpC;AACAtB,iBAASA,OAAOrB;AAChB,YAAIvP,UAASyQ,eAAe;AAC1BzQ,UAAAA,OAAMsF,IAAIqL,UAAUC,MAAM;QAC5B;MACF;AAEAsB,cAAQE,wBAAwB5I,yBAC9BjI,oBAAoB2Q,OAAO,GAC3B3C,IAAI9F,WACN;AAEA9I,+BACEuR,SACAtB,QACA,GACA,GACAA,OAAOjR,OACPiR,OAAOhR,QACP,GACA,GACAD,OACAC,MACF;AACAsS,cAAQ7I,2BAA2B;AAEnC,YAAMgJ,UAAUvN,KAAKpH,UAAUyU,2BAA2BD,OAAO,GAAG,CAClE,GACA,GACA,GACA,GACA,CAACf,SACD,CAACE,OAAO,CACT;AACDa,cAAQnJ,YAAY0H,gBAChB/M,UAAU4O,WAAW3V,KAAK,MAAM0V,SAAS3N,SAASlB,MAAMgJ,KAAK,IAC7D9I;AAEJwO,cAAQhF,SAAS,GAAG,GAAGvN,OAAOC,MAAM;AAEpC,UAAII,UAAS,CAACyQ,eAAe;AAG3B,aAAK3E,eAAetL,OAAO,YAAY;AACvCR,QAAAA,OAAMsF,IAAIqL,UAAUsB,WAAWlH,MAAM;MACvC;AAEA,WAAKF,mBAAmByG,mBACtB9E,OACA+E,aAAaC,gBACf;AAGA,aAAO;QACLzG,QAAQkH,WAAWlH;QACnBoG,SAASzP,KAAKC,MAAMwP,OAAO;QAC3BE,SAAS3P,KAAKC,MAAM0P,OAAO;MAC7B;IACF;IAGAkB,aAAa/F,OAAO7M,OAAO;AACzB,WAAKkL,mBAAmB2H,iBAAiB,aAAahG,KAAK;AAC3D,UAAI7M,UAAU,KAAKmL,QAAQ9G,WAAW;AACpC,aAAKoI,wBAAwB,CAAC,IAAI;MACpC;AACA,WAAKtB,QAAQ9G,YAAYrE;AACzB,WAAKhD,IAAIqH,YAAYrE;IACvB;IAEA8S,WAAWjG,OAAOkG,OAAO;AACvB,WAAK7H,mBAAmB2H,iBAAiB,WAAWhG,KAAK;AACzD,WAAK7P,IAAIuM,UAAUc,gBAAgB0I,KAAK;IAC1C;IAEAC,YAAYnG,OAAOkG,OAAO;AACxB,WAAK7H,mBAAmB2H,iBAAiB,YAAYhG,KAAK;AAC1D,WAAK7P,IAAIwM,WAAWc,iBAAiByI,KAAK;IAC5C;IAEAE,cAAcpG,OAAOqG,OAAO;AAC1B,WAAKhI,mBAAmB2H,iBAAiB,cAAchG,KAAK;AAC5D,WAAK7P,IAAIyM,aAAayJ;IACxB;IAEAC,QAAQtG,OAAOuG,WAAWC,WAAW;AACnC,WAAKnI,mBAAmB2H,iBAAiB,QAAQhG,KAAK;AACtD,YAAM7P,MAAM,KAAKA;AACjB,UAAIA,IAAI+L,gBAAgBpI,QAAW;AACjC3D,YAAI+L,YAAYqK,SAAS;AACzBpW,YAAIiM,iBAAiBoK;MACvB;IACF;IAEAC,mBAAmBzG,OAAO0G,QAAQ;IAElC;IAEAC,YAAY3G,OAAO4G,UAAU;IAE7B;IAEAC,UAAU7G,OAAO8G,QAAQ;AACvB,iBAAW,CAACC,KAAKC,KAAK,KAAKF,QAAQ;AACjC,gBAAQC,KAAG;UACT,KAAK;AACH,iBAAKhB,aAAa/F,OAAOgH,KAAK;AAC9B;UACF,KAAK;AACH,iBAAKf,WAAWjG,OAAOgH,KAAK;AAC5B;UACF,KAAK;AACH,iBAAKb,YAAYnG,OAAOgH,KAAK;AAC7B;UACF,KAAK;AACH,iBAAKZ,cAAcpG,OAAOgH,KAAK;AAC/B;UACF,KAAK;AACH,iBAAKV,QAAQtG,OAAOgH,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC;AACtC;UACF,KAAK;AACH,iBAAKP,mBAAmBzG,OAAOgH,KAAK;AACpC;UACF,KAAK;AACH,iBAAKL,YAAY3G,OAAOgH,KAAK;AAC7B;UACF,KAAK;AACH,iBAAKC,QAAQjH,OAAOgH,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC;AACtC;UACF,KAAK;AACH,iBAAK3I,mBAAmB2H,iBAAiB,eAAehG,KAAK;AAC7D,iBAAK1B,QAAQ/G,cAAcyP;AAC3B;UACF,KAAK;AACH,iBAAK3I,mBAAmB2H,iBAAiB,aAAahG,KAAK;AAC3D,iBAAK7P,IAAIsM,cAAc,KAAK6B,QAAQhH,YAAY0P;AAChD;UACF,KAAK;AACH,iBAAK3I,mBAAmB2H,iBACtB,4BACAhG,KACF;AACA,iBAAK7P,IAAI0M,2BAA2BmK;AACpC;UACF,KAAK;AACH,iBAAK3I,mBAAmB2H,iBAAiB,SAAShG,KAAK;AACvD,iBAAK1B,QAAQ7G,cAAcuP,QAAQ,KAAK7H,YAAY;AACpD,iBAAKA,YAAY;AACjB,iBAAK+H,gBAAgB;AACrB;UACF,KAAK;AACH,iBAAK7I,mBAAmB2H,iBAAiB,UAAUhG,KAAK;AACxD,iBAAK7P,IAAI4M,SAAS,KAAKuB,QAAQ5G,eAC7B,KAAKsG,cAAcmJ,UAAUH,KAAK;AACpC;QACJ;MACF;IACF;IAEA,IAAI1E,cAAc;AAChB,aAAO,CAAC,CAAC,KAAKlD;IAChB;IAEA8H,kBAAkB;AAChB,YAAM5E,cAAc,KAAKA;AACzB,UAAI,KAAKhE,QAAQ7G,eAAe,CAAC6K,aAAa;AAC5C,aAAK8E,eAAe;MACtB,WAAW,CAAC,KAAK9I,QAAQ7G,eAAe6K,aAAa;AACnD,aAAK+E,aAAa;MACpB;IAEF;IAWAD,eAAepH,OAAO;AACpB,UAAI,KAAKsC,aAAa;AACpB,cAAM,IAAIhS,MAAM,mDAAmD;MACrE;AACA,YAAMiV,aAAa,KAAKpV,IAAIoO,OAAOpL;AACnC,YAAMqS,cAAc,KAAKrV,IAAIoO,OAAOnL;AACpC,YAAMkU,UAAU,iBAAiB,KAAKtI;AACtC,YAAMuI,gBAAgB,KAAKjI,eAAe3L,UACxC2T,SACA/B,YACAC,WACF;AACA,WAAKpG,eAAe,KAAKjP;AACzB,YAAMA,MAAO,KAAKA,MAAMoX,cAAc1G;AACtC1Q,UAAIiB,aAAa,KAAKgO,aAAaoI,aAAa,CAAC;AACjD1L,mBAAa,KAAKsD,cAAcjP,GAAG;AACnCD,8BAAwBC,KAAK,KAAKiP,YAAY;AAE9C,WAAKyH,UAAU7G,OAAO,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC;IAC/C;IAEAqH,eAAe;AACb,UAAI,CAAC,KAAK/E,aAAa;AACrB,cAAM,IAAIhS,MAAM,6CAA6C;MAC/D;AAGA,WAAKH,IAAIE,iBAAiB;AAC1ByL,mBAAa,KAAK3L,KAAK,KAAKiP,YAAY;AACxC,WAAKjP,MAAM,KAAKiP;AAEhB,WAAKA,eAAe;IACtB;IAEAqI,QAAQC,UAAU;AAChB,UAAI,CAAC,KAAKpJ,QAAQ7G,aAAa;AAC7B;MACF;AAEA,UAAI,CAACiQ,UAAU;AACbA,mBAAW,CAAC,GAAG,GAAG,KAAKvX,IAAIoO,OAAOpL,OAAO,KAAKhD,IAAIoO,OAAOnL,MAAM;MACjE,OAAO;AACLsU,iBAAS,CAAC,IAAIxS,KAAK2O,MAAM6D,SAAS,CAAC,CAAC;AACpCA,iBAAS,CAAC,IAAIxS,KAAK2O,MAAM6D,SAAS,CAAC,CAAC;AACpCA,iBAAS,CAAC,IAAIxS,KAAK4O,KAAK4D,SAAS,CAAC,CAAC;AACnCA,iBAAS,CAAC,IAAIxS,KAAK4O,KAAK4D,SAAS,CAAC,CAAC;MACrC;AACA,YAAMC,QAAQ,KAAKrJ,QAAQ7G;AAC3B,YAAM2H,eAAe,KAAKA;AAE1B,WAAKwI,aAAaxI,cAAcuI,OAAO,KAAKxX,KAAKuX,QAAQ;AAGzD,WAAKvX,IAAIK,KAAK;AACd,WAAKL,IAAIiB,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACtC,WAAKjB,IAAI4T,UAAU,GAAG,GAAG,KAAK5T,IAAIoO,OAAOpL,OAAO,KAAKhD,IAAIoO,OAAOnL,MAAM;AACtE,WAAKjD,IAAIO,QAAQ;IACnB;IAEAkX,aAAazX,KAAKwX,OAAOE,UAAUC,UAAU;AAC3C,YAAMC,eAAeD,SAAS,CAAC;AAC/B,YAAME,eAAeF,SAAS,CAAC;AAC/B,YAAMG,aAAaH,SAAS,CAAC,IAAIC;AACjC,YAAMG,cAAcJ,SAAS,CAAC,IAAIE;AAClC,UAAIC,eAAe,KAAKC,gBAAgB,GAAG;AACzC;MACF;AACA,WAAKC,oBACHR,MAAM9G,SACNgH,UACAI,YACAC,aACAP,MAAMS,SACNT,MAAMU,UACNV,MAAMW,aACNP,cACAC,cACAL,MAAMhD,SACNgD,MAAM9C,OACR;AACA1U,UAAIK,KAAK;AACTL,UAAIsM,cAAc;AAClBtM,UAAI0M,2BAA2B;AAC/B1M,UAAIiB,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACjCjB,UAAIyF,UAAUiS,SAAStJ,QAAQ,GAAG,CAAC;AACnCpO,UAAIO,QAAQ;IACd;IAEAyX,oBACEI,SACAV,UACA1U,OACAC,QACAgV,SACAC,UACAC,aACAP,cACAC,cACAQ,aACAC,aACA;AACA,UAAIpE,aAAakE,QAAQhK;AACzB,UAAImK,QAAQX,eAAeS;AAC3B,UAAIG,QAAQX,eAAeS;AAE3B,UAAIJ,UAAU;AACZ,YACEK,QAAQ,KACRC,QAAQ,KACRD,QAAQvV,QAAQkR,WAAWlR,SAC3BwV,QAAQvV,SAASiR,WAAWjR,QAC5B;AACA,gBAAMmL,SAAS,KAAKe,eAAe3L,UACjC,iBACAR,OACAC,MACF;AACA,gBAAMjD,MAAMoO,OAAOsC;AACnB1Q,cAAIyF,UAAUyO,YAAY,CAACqE,OAAO,CAACC,KAAK;AACxCxY,cAAI0M,2BAA2B;AAC/B1M,cAAIoM,YAAY8L;AAChBlY,cAAIuQ,SAAS,GAAG,GAAGvN,OAAOC,MAAM;AAChCjD,cAAI0M,2BAA2B;AAE/BwH,uBAAa9F,OAAOA;AACpBmK,kBAAQC,QAAQ;QAClB,OAAO;AACLJ,kBAAQ/X,KAAK;AACb+X,kBAAQ9L,cAAc;AACtB8L,kBAAQnX,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACrC,gBAAMI,QAAO,IAAIoX,OAAO;AACxBpX,UAAAA,MAAKQ,KAAK0W,OAAOC,OAAOxV,OAAOC,MAAM;AACrCmV,kBAAQ/W,KAAKA,KAAI;AACjB+W,kBAAQ1L,2BAA2B;AACnC0L,kBAAQhM,YAAY8L;AACpBE,kBAAQ7H,SAASgI,OAAOC,OAAOxV,OAAOC,MAAM;AAC5CmV,kBAAQ7X,QAAQ;QAClB;MACF;AAEAmX,eAASrX,KAAK;AACdqX,eAASpL,cAAc;AACvBoL,eAASzW,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEtC,UAAIgX,YAAY,WAAWE,aAAa;AACtCT,iBAAS9K,SAAS,KAAKiB,cAAc6K,eAAeP,WAAW;MACjE,WAAWF,YAAY,cAAc;AACnCP,iBAAS9K,SAAS,KAAKiB,cAAc8K,oBAAoBR,WAAW;MACtE;AAEA,YAAM9W,OAAO,IAAIoX,OAAO;AACxBpX,WAAKQ,KAAK+V,cAAcC,cAAc7U,OAAOC,MAAM;AACnDyU,eAASrW,KAAKA,IAAI;AAClBqW,eAAShL,2BAA2B;AACpCgL,eAASjS,UACPyO,YACAqE,OACAC,OACAxV,OACAC,QACA2U,cACAC,cACA7U,OACAC,MACF;AACAyU,eAASnX,QAAQ;IACnB;IAEAF,KAAKwP,OAAO;AACV,UAAI,KAAKsC,aAAa;AAIpBxG,qBAAa,KAAK3L,KAAK,KAAKiP,YAAY;MAC1C;AACA,WAAKjP,IAAIK,KAAK;AACd,YAAMuY,MAAM,KAAKzK;AACjB,WAAKE,WAAWwK,KAAKD,GAAG;AACxB,WAAKzK,UAAUyK,IAAIhR,MAAM;AACzB,WAAKsG,mBAAmB7N,KAAKwP,KAAK;IACpC;IAEAtP,QAAQsP,OAAO;AACb,WAAK3B,mBAAmB3N,QAAQsP,KAAK;AAErC,UAAI,KAAKxB,WAAW7D,WAAW,GAAG;AAChC,YAAI,KAAK2H,aAAa;AACpB,eAAK+E,aAAa;QACpB;AACA;MACF;AAEA,WAAK/I,UAAU,KAAKE,WAAWyK,IAAI;AACnC,WAAK9Y,IAAIO,QAAQ;AACjB,UAAI,KAAK4R,aAAa;AAGpBxG,qBAAa,KAAKsD,cAAc,KAAKjP,GAAG;MAC1C;AACA,WAAK+W,gBAAgB;AAGrB,WAAKzI,cAAc;AAEnB,WAAKmB,wBAAwB,CAAC,IAAI;AAClC,WAAKC,6BAA6B;IACpC;IAEA3O,UAAU8O,OAAOzN,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,IAAG;AACjC,WAAKyL,mBAAmB6K,sBAAsB,aAAalJ,KAAK;AAChE,WAAK7P,IAAIe,UAAUqB,IAAGC,IAAGC,IAAGC,IAAGC,IAAGC,EAAC;AAEnC,WAAKgN,wBAAwB,CAAC,IAAI;AAClC,WAAKC,6BAA6B;IACpC;IAGAsJ,cAAcnJ,OAAOoJ,IAAIxP,MAAM/B,QAAQ;AACrC,UAAI,CAACwR,IAAI,IAAIzP;AACb,UAAI,CAAC/B,QAAQ;AAEXwR,iBAASzP,KAAK,CAAC,IAAI,IAAIgP,OAAO;AAC9B,aAAKQ,EAAE,EAAEpJ,OAAOqJ,IAAI;AACpB;MACF;AAEA,UAAI,KAAKhL,sBAAsB,MAAM;AACnC,cAAMiL,iBAAiBF,OAAOpH,IAAIuH,SAAS,KAAKjL,QAAQ9G,YAAY,IAAI;AACxE,aAAK6G,kBACFmL,UAAUxJ,KAAK,EACfyJ,WACCzJ,OACA,KAAK7P,KACL0H,OAAO,CAAC,IAAIyR,gBACZzR,OAAO,CAAC,IAAIyR,gBACZzR,OAAO,CAAC,IAAIyR,gBACZzR,OAAO,CAAC,IAAIyR,cACd,EACCxE,mBAAmB9E,OAAO,CAAC,WAAW,CAAC;MAC5C;AAEA,UAAI,EAAEqJ,gBAAgBT,SAAS;AAC7BS,eAAOzP,KAAK,CAAC,IAAI8P,oBAAoBL,IAAI;MAC3C;AACA/Q,WAAK4M,wBACHrN,QACA9C,oBAAoB,KAAK5E,GAAG,GAC5B,KAAKmO,QAAQzG,MACf;AACA,WAAKuR,EAAE,EAAEpJ,OAAOqJ,IAAI;AAEpB,WAAKM,gBAAgB3J;IACvB;IAEA9N,UAAU8N,OAAO;AACf,WAAK7P,IAAI+B,UAAU;IACrB;IAEAqX,OAAOvJ,OAAOqJ,MAAMO,cAAc,MAAM;AACtC,YAAMzZ,MAAM,KAAKA;AACjB,YAAMgH,cAAc,KAAKmH,QAAQnH;AAGjChH,UAAIsM,cAAc,KAAK6B,QAAQ/G;AAC/B,UAAI,KAAK8H,gBAAgB;AACvB,YAAI,OAAOlI,gBAAgB,YAAYA,aAAa2O,YAAY;AAC9D,gBAAMhH,gBAAgB3H,YAAY0S,4BAA4B,IAC1D1Z,IAAIqX,aAAa,IACjB;AACJrX,cAAIK,KAAK;AACTL,cAAImM,cAAcnF,YAAY2O,WAC5B3V,KACA,MACAwV,2BAA2BxV,GAAG,GAC9B+H,SAASE,QACT4H,KACF;AACA,cAAIlB,eAAe;AACjB,kBAAMgL,UAAU,IAAIlB,OAAO;AAC3BkB,oBAAQC,QACNV,MACAlZ,IAAIqX,aAAa,EAAEwC,WAAW,EAAEC,aAAanL,aAAa,CAC5D;AACAuK,mBAAOS;UACT;AACA,eAAKI,iBAAiBb,MAAwB,KAAK;AACnDlZ,cAAIO,QAAQ;QACd,OAAO;AACL,eAAKwZ,iBAAiBb,MAAwB,IAAI;QACpD;MACF;AAEA,WAAKhL,mBAAmByG,mBAAmB9E,OAAO+E,aAAawE,MAAM;AAErE,UAAIK,aAAa;AACf,aAAKA,YACH5J,OACAqJ,MACA,KAAK/K,QAAQvF,0BACXb,SAASE,QACTrD,oBAAoB,KAAK5E,GAAG,CAC9B,CACF;MACF;AAGAA,UAAIsM,cAAc,KAAK6B,QAAQhH;IACjC;IAEA6S,YAAYnK,OAAOqJ,MAAM;AACvB,WAAKE,OAAOvJ,OAAOqJ,IAAI;IACzB;IAEAe,KAAKpK,OAAOqJ,MAAMO,cAAc,MAAM;AACpC,YAAMzZ,MAAM,KAAKA;AACjB,YAAM+G,YAAY,KAAKoH,QAAQpH;AAC/B,YAAM+M,gBAAgB,KAAK3F,QAAQlH;AACnC,UAAIiT,cAAc;AAElB,UAAIpG,eAAe;AACjB,cAAMnF,gBAAgB5H,UAAU2S,4BAA4B,IACxD1Z,IAAIqX,aAAa,IACjB;AACJ,aAAKnJ,mBAAmB7N,KAAKwP,KAAK;AAClC7P,YAAIK,KAAK;AACTL,YAAIoM,YAAYrF,UAAU4O,WACxB3V,KACA,MACAwV,2BAA2BxV,GAAG,GAC9B+H,SAASlB,MACTgJ,KACF;AACA,YAAIlB,eAAe;AACjB,gBAAMgL,UAAU,IAAIlB,OAAO;AAC3BkB,kBAAQC,QACNV,MACAlZ,IAAIqX,aAAa,EAAEwC,WAAW,EAAEC,aAAanL,aAAa,CAC5D;AACAuK,iBAAOS;QACT;AACAO,sBAAc;MAChB;AAEA,YAAM1R,YAAY,KAAK2F,QAAQvF,0BAA0B;AACzD,UAAI,KAAKsG,kBAAkB1G,cAAc,MAAM;AAC7C,YAAI,KAAK+F,eAAe;AACtBvO,cAAIia,KAAKf,MAAM,SAAS;AACxB,eAAK3K,gBAAgB;QACvB,OAAO;AACLvO,cAAIia,KAAKf,IAAI;QACf;MACF;AAEA,WAAKhL,mBAAmByG,mBAAmB9E,OAAO+E,aAAaqF,IAAI;AAEnE,UAAIC,aAAa;AACfla,YAAIO,QAAQ;AACZ,aAAK2N,mBAAmB3N,QAAQsP,KAAK;MACvC;AACA,UAAI4J,aAAa;AACf,aAAKA,YAAY5J,OAAOqJ,MAAM1Q,SAAS;MACzC;IACF;IAEA2R,OAAOtK,OAAOqJ,MAAM;AAClB,WAAK3K,gBAAgB;AACrB,WAAK0L,KAAKpK,OAAOqJ,IAAI;IACvB;IAEAkB,WAAWvK,OAAOqJ,MAAM;AACtB,WAAKe,KAAKpK,OAAOqJ,MAAM,KAAK;AAC5B,WAAKE,OAAOvJ,OAAOqJ,MAAM,KAAK;AAE9B,WAAKO,YAAY5J,OAAOqJ,IAAI;IAC9B;IAEAmB,aAAaxK,OAAOqJ,MAAM;AACxB,WAAK3K,gBAAgB;AACrB,WAAK6L,WAAWvK,OAAOqJ,IAAI;IAC7B;IAEAoB,gBAAgBzK,OAAOqJ,MAAM;AAC3B,WAAKkB,WAAWvK,OAAOqJ,IAAI;IAC7B;IAEAqB,kBAAkB1K,OAAOqJ,MAAM;AAC7B,WAAK3K,gBAAgB;AACrB,WAAK6L,WAAWvK,OAAOqJ,IAAI;IAC7B;IAEAsB,QAAQ3K,OAAOqJ,MAAM;AACnB,WAAKO,YAAY5J,OAAOqJ,IAAI;IAC9B;IAEAuB,YAAY5K,OAAOqJ,MAAM;AACvB,WAAKlZ,IAAIia,KAAKf,IAAI;AAClB,WAAKhL,mBACDyG,mBAAmB9E,OAAO+E,aAAa6F,WAAW,EACnDC,gBAAgB7K,KAAK;IAC1B;IAGAxO,KAAKwO,OAAO;AACV,WAAK3B,mBAAmByM,6BAA6B,YAAY9K,KAAK;AACtE,WAAKvB,cAAcf;IACrB;IAEAqN,OAAO/K,OAAO;AACZ,WAAK3B,mBAAmByM,6BAA6B,YAAY9K,KAAK;AACtE,WAAKvB,cAAcd;IACrB;IAGAqN,UAAUhL,OAAO;AACf,WAAK1B,QAAQlI,aAAa;AAC1B,WAAKkI,QAAQjI,kBAAkB;AAC/B,WAAKiI,QAAQjM,IAAI,KAAKiM,QAAQ7H,QAAQ;AACtC,WAAK6H,QAAQhM,IAAI,KAAKgM,QAAQ5H,QAAQ;AAEtC,WAAK2H,mBACD4M,iBAAiBjL,KAAK,EACvBkL,qBAAqB,cAAc,EACnCA,qBAAqB,YAAYlL,KAAK;IAC3C;IAEAmL,QAAQnL,OAAO;AACb,YAAMoL,QAAQ,KAAKC;AACnB,YAAMlb,MAAM,KAAKA;AAEjB,UAAI,KAAKkO,mBAAmB;AAC1B,cAAM;UAAEA;QAAkB,IAAI;AAC9B,YAAI+M,UAAUtX,QAAW;AACvBuK,4BACGyM,6BACC,YACAzM,kBAAkBiN,cAAc,CAClC,EACCR,6BAA6B,YAAY9K,KAAK;QACnD;AACA3B,0BAAkBkN,kBAAkBvL,KAAK;MAC3C;AAEA,UAAIoL,UAAUtX,QAAW;AACvB,cAAMgW,UAAU,IAAIlB,OAAO;AAC3B,cAAM4C,YAAYrb,IAAIqX,aAAa,EAAEwC,WAAW;AAChD,mBAAW;UAAE9Y;UAAWmB,GAAAA;UAAGC,GAAAA;UAAG4D;UAAUmT;QAAK,KAAK+B,OAAO;AACvD,cAAI,CAAC/B,MAAM;AACT;UACF;AACAS,kBAAQC,QACNV,MACA,IAAIxZ,UAAUqB,SAAS,EACpBua,gBAAgBD,SAAS,EACzBxa,UAAUqB,IAAGC,EAAC,EACdxB,MAAMoF,UAAU,CAACA,QAAQ,CAC9B;QACF;AAEA/F,YAAIqB,KAAKsY,OAAO;MAClB;AACA,aAAO,KAAKuB;IACd;IAEAK,eAAe1L,OAAO2L,SAAS;AAC7B,WAAKtN,mBAAmB2H,iBAAiB,eAAehG,KAAK;AAC7D,WAAK1B,QAAQ3H,cAAcgV;IAC7B;IAEAC,eAAe5L,OAAO2L,SAAS;AAC7B,WAAKtN,mBAAmB2H,iBAAiB,eAAehG,KAAK;AAC7D,WAAK1B,QAAQ1H,cAAc+U;IAC7B;IAEAE,UAAU7L,OAAOlP,OAAO;AACtB,WAAKuN,mBAAmB2H,iBAAiB,UAAUhG,KAAK;AACxD,WAAK1B,QAAQzH,aAAa/F,QAAQ;IACpC;IAEAgb,WAAW9L,OAAOxJ,SAAS;AACzB,WAAK6H,mBAAmB2H,iBAAiB,WAAWhG,KAAK;AACzD,WAAK1B,QAAQ9H,UAAU,CAACA;IAC1B;IAEAyQ,QAAQjH,OAAO+L,aAAaC,MAAM;AAChC,WAAK3N,mBACD2H,iBAAiB,QAAQhG,KAAK,EAC/BiM,0BAA0B,WAAWF,aAAa/L,KAAK;AAC1D,YAAMkM,UAAU,KAAKpO,WAAWsC,IAAI2L,WAAW;AAC/C,YAAMzN,UAAU,KAAKA;AAErB,UAAI,CAAC4N,SAAS;AACZ,cAAM,IAAI5b,MAAM,uBAAuByb,WAAW,EAAE;MACtD;AACAzN,cAAQhI,aAAa4V,QAAQ5V,cAAcC;AAI3C,UAAI+H,QAAQhI,WAAW,CAAC,MAAM,KAAKgI,QAAQhI,WAAW,CAAC,MAAM,GAAG;AAC9D6V,aAAK,kCAAkCJ,WAAW;MACpD;AAIA,UAAIC,OAAO,GAAG;AACZA,eAAO,CAACA;AACR1N,gBAAQ8N,gBAAgB;MAC1B,OAAO;AACL9N,gBAAQ8N,gBAAgB;MAC1B;AAEA,WAAK9N,QAAQxB,OAAOoP;AACpB,WAAK5N,QAAQpI,WAAW8V;AAExB,UAAIE,QAAQG,aAAa;AACvB;MACF;AAEA,YAAMC,QAAOJ,QAAQK,cAAc;AACnC,YAAMC,WACJN,QAAQO,gBAAgBC,OAAO,IAAIJ,KAAI,MAAMJ,QAAQS,YAAY;AAEnE,UAAIC,OAAO;AACX,UAAIV,QAAQpR,OAAO;AACjB8R,eAAO;MACT,WAAWV,QAAQU,MAAM;AACvBA,eAAO;MACT;AACA,YAAMC,SAASX,QAAQW,SAAS,WAAW;AAM3C,UAAIC,kBAAkBd;AACtB,UAAIA,OAAOzc,eAAe;AACxBud,0BAAkBvd;MACpB,WAAWyc,OAAOxc,eAAe;AAC/Bsd,0BAAkBtd;MACpB;AACA,WAAK8O,QAAQnI,gBAAgB6V,OAAOc;AAEpC,WAAK3c,IAAI2M,OAAO,GAAG+P,MAAM,IAAID,IAAI,IAAIE,eAAe,MAAMN,QAAQ;IACpE;IAEAO,qBAAqB/M,OAAOgN,MAAM;AAChC,WAAK3O,mBAAmB2H,iBAAiB,qBAAqBhG,KAAK;AACnE,WAAK1B,QAAQxH,oBAAoBkW;IACnC;IAEAC,YAAYjN,OAAOkN,MAAM;AACvB,WAAK7O,mBAAmB2H,iBAAiB,YAAYhG,KAAK;AAC1D,WAAK1B,QAAQrH,WAAWiW;IAC1B;IAEAC,SAASnN,OAAO3N,IAAGC,IAAG;AACpB,WAAK+L,mBACD6M,qBAAqB,cAAc,EACpChC,sBAAsB,YAAYlJ,KAAK;AAC1C,WAAK1B,QAAQjM,IAAI,KAAKiM,QAAQ7H,SAASpE;AACvC,WAAKiM,QAAQhM,IAAI,KAAKgM,QAAQ5H,SAASpE;IACzC;IAEA8a,mBAAmBpN,OAAO3N,IAAGC,IAAG;AAC9B,WAAKwZ,WAAW9L,OAAO,CAAC1N,EAAC;AACzB,WAAK6a,SAASnN,OAAO3N,IAAGC,EAAC;IAC3B;IAEA+a,cAAcrN,OAAOsN,SAAQ;AAC3B,WAAKjP,mBACD6M,qBAAqB,cAAc,EACpClF,iBAAiB,cAAchG,KAAK;AACvC,YAAM;QAAE1B;MAAQ,IAAI;AACpBA,cAAQlI,aAAakX;AACrBhP,cAAQjI,kBAAkBnB,KAAKY,MAAMwX,QAAO,CAAC,GAAGA,QAAO,CAAC,CAAC;AAEzDhP,cAAQjM,IAAIiM,QAAQ7H,QAAQ;AAC5B6H,cAAQhM,IAAIgM,QAAQ5H,QAAQ;IAC9B;IAEA6W,SAASvN,OAAO;AACd,WAAKmN,SAASnN,OAAO,GAAG,KAAK1B,QAAQ9H,OAAO;AAE5C,WAAK6H,mBAAmB6K,sBACtB,YAIA,KAAK7K,kBAAkBmP,eAAe,SAAS,KAAKxN,KACtD;IACF;IAEA,eAAeqJ,MAAMnF,kBAAkBhT,WAAW;AAChD,YAAM4Y,UAAU,IAAIlB,OAAO;AAC3BkB,cAAQC,QACNV,MACA,IAAIxZ,UAAUqB,SAAS,EAAE8Y,WAAW,EAAEC,aAAa/F,gBAAgB,CACrE;AACA,aAAO4F;IACT;IAEA2D,UACEzN,OACA0N,WACArb,IACAC,IACAqb,sBACAC,wBACA;AACA,YAAMzd,MAAM,KAAKA;AACjB,YAAMmO,UAAU,KAAKA;AACrB,YAAMxB,OAAOwB,QAAQxB;AACrB,YAAMhG,oBAAoBwH,QAAQxH;AAClC,YAAMZ,WAAWoI,QAAQpI,WAAWoI,QAAQnI;AAC5C,YAAM0X,iBACJ/W,oBAAoBC,kBAAkB+W;AACxC,YAAMC,iBAAiB,CAAC,EACtBjX,oBAAoBC,kBAAkBiX;AAExC,YAAM5W,cAAckH,QAAQlH,eAAe,CAAC0F,KAAKmR;AACjD,YAAM5W,gBAAgBiH,QAAQjH,iBAAiB,CAACyF,KAAKmR;AAErD,UAAI5E;AACJ,WACGvM,KAAKoR,mBACJH,kBACA3W,eACAC,kBACF,CAACyF,KAAKmR,aACN;AACA5E,eAAOvM,KAAKqR,iBAAiB,KAAKrQ,YAAY4P,SAAS;MACzD;AAEA,UAAIrE,SAASvM,KAAKoR,mBAAmB9W,eAAeC,gBAAgB;AAClElH,YAAIK,KAAK;AACTL,YAAIa,UAAUqB,IAAGC,EAAC;AAClBnC,YAAIW,MAAMoF,UAAU,CAACA,QAAQ;AAE7B,aAAKmI,mBAAmB+P,oBAAoBpO,OAAO7P,KAAK2M,IAAI;AAE5D,YAAIoH;AACJ,YACE2J,mBAAmB9W,kBAAkBC,QACrC6W,mBAAmB9W,kBAAkBsX,aACrC;AACA,cAAIV,sBAAsB;AACxBzJ,+BAAmB/T,IAAIqX,aAAa;AACpCrX,gBAAIiB,aAAa,GAAGuc,oBAAoB;AACxC,kBAAMW,aAAa,KAAK,eACtBjF,MACAnF,kBACAyJ,oBACF;AACAxd,gBAAIia,KAAKkE,UAAU;UACrB,OAAO;AACLne,gBAAIia,KAAKf,IAAI;UACf;QACF;AACA,YACEwE,mBAAmB9W,kBAAkBqB,UACrCyV,mBAAmB9W,kBAAkBsX,aACrC;AACA,cAAIT,wBAAwB;AAC1B1J,iCAAqB/T,IAAIqX,aAAa;AACtCrX,gBAAIiB,aAAa,GAAGwc,sBAAsB;AAC1C,kBAAM;cAAErb,GAAAA;cAAGC,GAAAA;cAAGC,GAAAA;cAAGC,GAAAA;YAAE,IAAIwR;AACvB,kBAAMqK,sBAAsBjW,KAAK0K,iBAC/B4K,sBACF;AACA,kBAAMY,SAASlW,KAAKpH,UAClB,CAACqB,IAAGC,IAAGC,IAAGC,IAAG,GAAG,CAAC,GACjB6b,mBACF;AACAjW,iBAAKC,8BAA8BiW,QAAQ1e,EAAE;AAK7CK,gBAAIqH,aAAatC,KAAKkO,IAAItT,GAAG,CAAC,GAAGA,GAAG,CAAC,CAAC,IAAIoG;AAC1C/F,gBAAIoZ,OACF,KAAK,eAAeF,MAAMnF,kBAAkB0J,sBAAsB,CACpE;UACF,OAAO;AACLzd,gBAAIqH,aAAatB;AACjB/F,gBAAIoZ,OAAOF,IAAI;UACjB;QACF;AACAlZ,YAAIO,QAAQ;MACd,OAAO;AACL,YACEmd,mBAAmB9W,kBAAkBC,QACrC6W,mBAAmB9W,kBAAkBsX,aACrC;AACAle,cAAIse,SAASf,WAAWrb,IAAGC,EAAC;AAC5B,eAAK+L,mBAAmB+P,oBACtBpO,OACA7P,KACA2M,MACA5G,UACA7D,IACAC,IACA,MAAMnC,IAAIue,YAAYhB,SAAS,CACjC;QACF;AACA,YACEG,mBAAmB9W,kBAAkBqB,UACrCyV,mBAAmB9W,kBAAkBsX,aACrC;AACA,cAAI,KAAKhQ,mBAAmB;AAC1B,iBAAKA,mBACD+P,oBAAoBpO,OAAO7P,KAAK2M,MAAM5G,UAAU7D,IAAGC,IAAG,MACtDnC,IAAIue,YAAYhB,SAAS,CAC3B,EACC5I,mBAAmB9E,OAAO+E,aAAawE,MAAM;UAClD;AACApZ,cAAIwe,WAAWjB,WAAWrb,IAAGC,EAAC;QAChC;MACF;AAEA,UAAIyb,gBAAgB;AAClB,cAAM3C,QAAS,KAAKC,qBAAqB,CAAA;AACzCD,cAAMpC,KAAK;UACT9X,WAAW6D,oBAAoB5E,GAAG;UAClCkC,GAAAA;UACAC,GAAAA;UACA4D;UACAmT;QACF,CAAC;AACD,aAAKhL,mBAAmB+P,oBACtBpO,OACA7P,KACA2M,MACA5G,UACA7D,IACAC,EACF;MACF;IACF;IAEA,IAAIsc,0BAA0B;AAG5B,YAAM;QAAE/N,SAAS1Q;MAAI,IAAI,KAAKmP,eAAe3L,UAC3C,2BACA,IACA,EACF;AACAxD,UAAIW,MAAM,KAAK,CAAC;AAChBX,UAAIse,SAAS,KAAK,GAAG,EAAE;AACvB,YAAM7U,OAAOzJ,IAAI0e,aAAa,GAAG,GAAG,IAAI,EAAE,EAAEjV;AAC5C,UAAIkV,UAAU;AACd,eAAShV,KAAI,GAAGA,KAAIF,KAAKe,QAAQb,MAAK,GAAG;AACvC,YAAIF,KAAKE,EAAC,IAAI,KAAKF,KAAKE,EAAC,IAAI,KAAK;AAChCgV,oBAAU;AACV;QACF;MACF;AACA,aAAOC,OAAO,MAAM,2BAA2BD,OAAO;IACxD;IAEAE,SAAShP,OAAOiP,QAAQ;AACtB,UAAI,KAAK5Q,mBAAmB;AAC1B,aAAKA,kBACFyG,mBAAmB9E,OAAO+E,aAAaiK,QAAQ,EAC/CxF,UAAUxJ,KAAK;AAClB,YAAI,KAAK1B,QAAQxH,oBAAoBC,kBAAkBiX,kBAAkB;AACvE,eAAK3P,kBACFyM,6BAA6B,YAAY9K,KAAK,EAC9CkP,qDAAqD;QAC1D;MACF;AAEA,YAAM5Q,UAAU,KAAKA;AACrB,YAAMxB,OAAOwB,QAAQxB;AACrB,UAAIA,KAAKuP,aAAa;AACpB,aAAK8C,cAAcnP,OAAOiP,MAAM;AAChC,aAAK5Q,mBAAmB+Q,wBAAwBpP,KAAK;AACrD,eAAOlM;MACT;AAEA,YAAMoC,WAAWoI,QAAQpI;AACzB,UAAIA,aAAa,GAAG;AAClB,aAAKmI,mBAAmBwM,gBAAgB7K,KAAK;AAC7C,eAAOlM;MACT;AAEA,YAAM3D,MAAM,KAAKA;AACjB,YAAMgG,gBAAgBmI,QAAQnI;AAC9B,YAAMQ,cAAc2H,QAAQ3H;AAC5B,YAAMC,cAAc0H,QAAQ1H;AAC5B,YAAMwV,gBAAgB9N,QAAQ8N;AAC9B,YAAMvV,aAAayH,QAAQzH,aAAauV;AACxC,YAAMiD,eAAeJ,OAAOtU;AAC5B,YAAM2U,WAAWxS,KAAKwS;AACtB,YAAMC,aAAaD,WAAW,IAAI;AAClC,YAAME,kBAAkB1S,KAAK0S;AAC7B,YAAMC,oBAAoBvZ,WAAWoI,QAAQhI,WAAW,CAAC;AAEzD,YAAMoZ,iBACJpR,QAAQxH,sBAAsBC,kBAAkBC,QAChD,CAAC8F,KAAKoR,mBACN,CAAC5P,QAAQlH;AAEXjH,UAAIK,KAAK;AACT,UAAI8N,QAAQlI,YAAY;AACtBjG,YAAIe,UAAU,GAAGoN,QAAQlI,UAAU;MACrC;AACAjG,UAAIa,UAAUsN,QAAQjM,GAAGiM,QAAQhM,IAAIgM,QAAQrH,QAAQ;AAErD,UAAImV,gBAAgB,GAAG;AACrBjc,YAAIW,MAAM+F,YAAY,EAAE;MAC1B,OAAO;AACL1G,YAAIW,MAAM+F,YAAY,CAAC;MACzB;AAEA,UAAI8W,sBAAsBC;AAK1B,YAAMC,iBACJvP,QAAQxH,oBAAoBC,kBAAkB+W;AAChD,YAAM6B,YACJ9B,mBAAmB9W,kBAAkBC,QACrC6W,mBAAmB9W,kBAAkBsX;AACvC,YAAMuB,cACJ/B,mBAAmB9W,kBAAkBqB,UACrCyV,mBAAmB9W,kBAAkBsX;AAEvC,UAAIsB,aAAarR,QAAQlH,aAAa;AACpCjH,YAAIK,KAAK;AACT,cAAMqf,UAAUvR,QAAQpH,UAAU4O,WAChC3V,KACA,MACAwV,2BAA2BxV,GAAG,GAC9B+H,SAASlB,MACTgJ,KACF;AACA2N,+BAAuB5Y,oBAAoB5E,GAAG;AAC9CA,YAAIO,QAAQ;AACZP,YAAIoM,YAAYsT;MAClB;AAEA,UAAID,eAAetR,QAAQjH,eAAe;AACxClH,YAAIK,KAAK;AACT,cAAMqf,UAAUvR,QAAQnH,YAAY2O,WAClC3V,KACA,MACAwV,2BAA2BxV,GAAG,GAC9B+H,SAASE,QACT4H,KACF;AACA4N,iCAAyB7Y,oBAAoB5E,GAAG;AAChDA,YAAIO,QAAQ;AACZP,YAAImM,cAAcuT;MACpB;AAEA,UAAIrY,YAAY8G,QAAQ9G;AACxB,YAAM1G,QAAQwN,QAAQjI;AACtB,UAAIvF,UAAU,KAAK0G,cAAc,GAAG;AAClC,YAAIoY,aAAa;AACfpY,sBAAY,KAAKsY,oBAAoB;QACvC;MACF,OAAO;AACLtY,qBAAa1G;MACf;AAEA,UAAIqF,kBAAkB,GAAK;AACzBhG,YAAIW,MAAMqF,eAAeA,aAAa;AACtCqB,qBAAarB;MACf;AAEAhG,UAAIqH,YAAYA;AAEhB,UAAIsF,KAAKiT,oBAAoB;AAC3B,cAAMC,QAAQ,CAAA;AACd,YAAI7c,QAAQ;AACZ,mBAAW8c,SAAShB,QAAQ;AAC1Be,gBAAMhH,KAAKiH,MAAMC,OAAO;AACxB/c,mBAAS8c,MAAM9c;QACjB;AACA,cAAMgd,cAAcH,MAAMI,KAAK,EAAE;AACjCjgB,YAAIse,SAAS0B,aAAa,GAAG,CAAC;AAC9B,YAAI,KAAK9R,sBAAsB,MAAM;AACnC,gBAAMgS,UAAUlgB,IAAIue,YAAYyB,WAAW;AAC3C,eAAK9R,kBACFoL,WACCzJ,OACA,KAAK7P,KACL,CAACkgB,QAAQC,uBACTD,QAAQE,wBACR,CAACF,QAAQG,yBACTH,QAAQI,wBACV,EACCrB,wBAAwBpP,KAAK;QAClC;AACA1B,gBAAQjM,KAAKc,QAAQsc,oBAAoB5Y;AACzC1G,YAAIO,QAAQ;AACZ,aAAK+W,QAAQ;AACb,eAAO3T;MACT;AAEA,UAAIzB,KAAI,GACNyH;AACF,WAAKA,KAAI,GAAGA,KAAIuV,cAAc,EAAEvV,IAAG;AACjC,cAAMmW,QAAQhB,OAAOnV,EAAC;AACtB,YAAI,OAAOmW,UAAU,UAAU;AAC7B5d,UAAAA,MAAMkd,aAAaU,QAAQ/Z,WAAY;AACvC;QACF;AAEA,YAAIwa,gBAAgB;AACpB,cAAM/E,WAAWsE,MAAMU,UAAU/Z,cAAc,KAAKD;AACpD,cAAM+W,YAAYuC,MAAMW;AACxB,cAAMC,SAASZ,MAAMY;AACrB,YAAIC,SAASC;AACb,YAAI5d,QAAQ8c,MAAM9c;AAClB,YAAImc,UAAU;AACZ,gBAAM0B,UAAUf,MAAMe,WAAWxB;AACjC,gBAAMyB,KACJ,EAAEhB,MAAMe,UAAUA,QAAQ,CAAC,IAAI7d,QAAQ,OAAOsc;AAChD,gBAAMyB,KAAKF,QAAQ,CAAC,IAAIvB;AAExBtc,kBAAQ6d,UAAU,CAACA,QAAQ,CAAC,IAAI7d;AAChC2d,oBAAUG,KAAK9a;AACf4a,qBAAW1e,KAAI6e,MAAM/a;QACvB,OAAO;AACL2a,oBAAUze,KAAI8D;AACd4a,oBAAU;QACZ;AAEA,YAAIV;AAEJ,YAAIvT,KAAKqU,aAAahe,QAAQ,GAAG;AAC/Bkd,oBAAUlgB,IAAIue,YAAYhB,SAAS;AAKnC,gBAAM0D,gBACFf,QAAQld,QAAQ,MAAQ+C,WAAYC;AACxC,cAAIhD,QAAQie,iBAAiB,KAAKxC,yBAAyB;AACzD,kBAAMyC,kBAAkBle,QAAQie;AAChCV,4BAAgB;AAChBvgB,gBAAIK,KAAK;AACTL,gBAAIW,MAAMugB,iBAAiB,CAAC;AAC5BP,uBAAWO;UACb,WAAWle,UAAUie,eAAe;AAClCN,wBACK3d,QAAQie,iBAAiB,MAAQlb,WAAYC;UACpD;QACF;AAIA,YAAI,KAAKkJ,mBAAmB4Q,MAAMqB,YAAYxU,KAAKmR,cAAc;AAC/D,cAAIyB,kBAAkB,CAACmB,QAAQ;AAE7B1gB,gBAAIse,SAASf,WAAWoD,SAASC,OAAO;AAExC,iBAAK1S,mBAAmB+P,oBACtBpO,OACA7P,KAEAkgB,UAAU;cAAEkB,MAAM;YAAK,IAAIzU,MAC3B5G,WAAWC,eACX2a,SACAC,SACA,MAAMV,WAAWlgB,IAAIue,YAAYhB,SAAS,CAC5C;UACF,OAAO;AACL,iBAAKD,UACHzN,OACA0N,WACAoD,SACAC,SACApD,sBACAC,sBACF;AACA,gBAAIiD,QAAQ;AACV,oBAAMW,gBACJV,UAAW5a,WAAW2a,OAAOY,OAAOpf,IAAK8D;AAC3C,oBAAMub,gBACJX,UAAW7a,WAAW2a,OAAOY,OAAOnf,IAAK6D;AAC3C,mBAAKsX,UACHzN,OACA6Q,OAAOD,UACPY,eACAE,eACA/D,sBACAC,sBACF;YACF;UACF;QACF;AAEA,cAAM+D,YAAYrC,WACdnc,QAAQsc,oBAAoB9D,UAAUS,gBACtCjZ,QAAQsc,oBAAoB9D,UAAUS;AAC1C/Z,QAAAA,MAAKsf;AAEL,YAAIjB,eAAe;AACjBvgB,cAAIO,QAAQ;QACd;MACF;AACA,UAAI4e,UAAU;AACZhR,gBAAQhM,KAAKD;MACf,OAAO;AACLiM,gBAAQjM,KAAKA,KAAIwE;MACnB;AACA1G,UAAIO,QAAQ;AACZ,WAAK+W,QAAQ;AAEb,WAAKpJ,mBAAmB+Q,wBAAwBpP,KAAK;AACrD,aAAOlM;IACT;IAEAqb,cAAcnP,OAAOiP,QAAQ;AAE3B,YAAM9e,MAAM,KAAKA;AACjB,YAAMmO,UAAU,KAAKA;AACrB,YAAMxB,OAAOwB,QAAQxB;AACrB,YAAM5G,WAAWoI,QAAQpI;AACzB,YAAMkW,gBAAgB9N,QAAQ8N;AAC9B,YAAMmD,aAAazS,KAAKwS,WAAW,IAAI;AACvC,YAAM3Y,cAAc2H,QAAQ3H;AAC5B,YAAMC,cAAc0H,QAAQ1H;AAC5B,YAAMC,aAAayH,QAAQzH,aAAauV;AACxC,YAAM9V,aAAagI,QAAQhI,cAAcC;AACzC,YAAM8Y,eAAeJ,OAAOtU;AAC5B,YAAMiX,kBACJtT,QAAQxH,sBAAsBC,kBAAkB8a;AAClD,UAAI/X,IAAGmW,OAAO9c,OAAO2e;AAErB,UAAIF,mBAAmB1b,aAAa,GAAG;AACrC;MACF;AACA,WAAK0J,wBAAwB,CAAC,IAAI;AAClC,WAAKC,6BAA6B;AAElC1P,UAAIK,KAAK;AACT,UAAI8N,QAAQlI,YAAY;AACtBjG,YAAIe,UAAU,GAAGoN,QAAQlI,UAAU;MACrC;AACAjG,UAAIa,UAAUsN,QAAQjM,GAAGiM,QAAQhM,IAAIgM,QAAQrH,QAAQ;AAErD9G,UAAIW,MAAM+F,YAAYuV,aAAa;AAInC,YAAM/N,oBAAoB,KAAKA;AAC/B,WAAKA,oBAAoBA,oBACrB,IAAI0T,8BAA8B1T,mBAAmB2B,KAAK,IAC1D;AAEJ,WAAKlG,KAAI,GAAGA,KAAIuV,cAAc,EAAEvV,IAAG;AACjCmW,gBAAQhB,OAAOnV,EAAC;AAChB,YAAI,OAAOmW,UAAU,UAAU;AAC7B6B,0BAAiBvC,aAAaU,QAAQ/Z,WAAY;AAClD,eAAK/F,IAAIa,UAAU8gB,eAAe,CAAC;AACnCxT,kBAAQjM,KAAKyf,gBAAgBjb;AAC7B;QACF;AAEA,cAAM8U,WAAWsE,MAAMU,UAAU/Z,cAAc,KAAKD;AACpD,cAAMoK,eAAejE,KAAKkV,qBAAqB/B,MAAMgC,cAAc;AACnE,YAAI,CAAClR,cAAc;AACjBoL,eAAK,oBAAoB8D,MAAMgC,cAAc,qBAAqB;QACpE,WAAW,KAAK5S,gBAAgB;AAC9B,eAAK7O,KAAK;AACVL,cAAIW,MAAMoF,UAAUA,QAAQ;AAC5B/F,cAAIe,UAAU,GAAGoF,UAAU;AAC3B,eAAKwK,oBAAoBC,YAAY;AACrC,eAAKrQ,QAAQ;QACf;AAEA,cAAMwhB,KAAI,CAACjC,MAAM9c,OAAO,CAAC;AACzBmF,aAAK6Z,eAAeD,IAAG5b,UAAU;AACjCnD,gBAAQ+e,GAAE,CAAC,IAAIhc,WAAWyV;AAE1Bxb,YAAIa,UAAUmC,OAAO,CAAC;AACtBmL,gBAAQjM,KAAKc,QAAQ0D;MACvB;AACA1G,UAAIO,QAAQ;AACZ,UAAI2N,mBAAmB;AACrB,aAAKA,oBAAoBA;MAC3B;IACF;IAGA+T,aAAapS,OAAOqS,QAAQC,QAAQ;IAGpC;IAEAC,sBAAsBvS,OAAOqS,QAAQC,QAAQE,KAAKC,KAAKC,KAAKC,KAAK;AAC/D,YAAMnhB,OAAO,IAAIoX,OAAO;AACxBpX,WAAKQ,KAAKwgB,KAAKC,KAAKC,MAAMF,KAAKG,MAAMF,GAAG;AACxC,WAAKtiB,IAAIqB,KAAKA,IAAI;AAClB,WAAK6M,mBACDoL,WAAWzJ,OAAO,KAAK7P,KAAKqiB,KAAKE,KAAKD,KAAKE,GAAG,EAC/CC,cAAc5S,OAAO,KAAK7P,KAAKqiB,KAAKE,KAAKD,KAAKE,GAAG;AACpD,WAAKhI,QAAQ3K,KAAK;IACpB;IAGA6S,kBAAkB7S,OAAO8S,IAAI;AAC3B,UAAIjD;AACJ,UAAIiD,GAAG,CAAC,MAAM,iBAAiB;AAC7B,cAAMhU,gBAAgB,KAAKA,iBAAiB/J,oBAAoB,KAAK5E,GAAG;AACxE,cAAM4iB,wBAAwB;UAC5BC,sBAAsBA,CAAC7iB,KAAK8iB,mBAC1B,IAAIrV,gBACFzN,KACA,KAAK2N,YACL,KAAKC,MACL,KAAKxK,eACL,KAAKyK,eACL;YACEC,uBAAuB,KAAKA;YAC5BC,oBAAoB,KAAKA;UAC3B,GACApK,QACAA,QACA,KAAKuK,oBACD,IAAI0T,8BACF,KAAK1T,mBACL4U,gBACmB,IACrB,IACA,IACN;QACJ;AACApD,kBAAU,IAAIqD,cACZJ,IACA,KAAK3iB,KACL4iB,uBACAjU,aACF;MACF,OAAO;AACL+Q,kBAAU,KAAKsD,YAAYnT,OAAO8S,GAAG,CAAC,GAAGA,GAAG,CAAC,CAAC;MAChD;AACA,aAAOjD;IACT;IAEAuD,gBAAgBpT,UAAUqT,MAAM;AAC9B,WAAKhV,mBAAmB2H,iBAAiB,eAAehG,KAAK;AAC7D,WAAK1B,QAAQnH,cAAc,KAAK0b,kBAAkB7S,OAAOqT,IAAI;AAC7D,WAAK/U,QAAQjH,gBAAgB;IAC/B;IAEAic,cAActT,UAAUqT,MAAM;AAC5B,WAAKhV,mBAAmB2H,iBAAiB,aAAahG,KAAK;AAC3D,WAAK1B,QAAQpH,YAAY,KAAK2b,kBAAkB7S,OAAOqT,IAAI;AAC3D,WAAK/U,QAAQlH,cAAc;IAC7B;IAEAmc,kBAAkBvT,OAAOwT,QAAO;AAC9B,WAAKnV,mBAAmB2H,iBAAiB,eAAehG,KAAK;AAC7D,WAAK7P,IAAImM,cAAc,KAAKgC,QAAQnH,cAAcqc;AAClD,WAAKlV,QAAQjH,gBAAgB;IAC/B;IAEAoc,qBAAqBzT,OAAO;AAC1B,WAAK3B,mBAAmB2H,iBAAiB,eAAehG,KAAK;AAC7D,WAAK7P,IAAImM,cAAc,KAAKgC,QAAQnH,cAAc;AAClD,WAAKmH,QAAQjH,gBAAgB;IAC/B;IAEAqc,gBAAgB1T,OAAOwT,QAAO;AAC5B,WAAKnV,mBAAmB2H,iBAAiB,aAAahG,KAAK;AAC3D,WAAK7P,IAAIoM,YAAY,KAAK+B,QAAQpH,YAAYsc;AAC9C,WAAKlV,QAAQlH,cAAc;IAC7B;IAEAuc,mBAAmB3T,OAAO;AACxB,WAAK3B,mBAAmB2H,iBAAiB,aAAahG,KAAK;AAC3D,WAAK7P,IAAIoM,YAAY,KAAK+B,QAAQpH,YAAY;AAC9C,WAAKoH,QAAQlH,cAAc;IAC7B;IAEA+b,YAAYnT,OAAO4T,OAAOtG,UAAS,MAAM;AACvC,UAAIuC;AACJ,UAAI,KAAKtQ,eAAe8C,IAAIuR,KAAK,GAAG;AAClC/D,kBAAU,KAAKtQ,eAAea,IAAIwT,KAAK;MACzC,OAAO;AACL/D,kBAAUgE,kBAAkB,KAAK9T,UAAUC,OAAO4T,KAAK,CAAC;AACxD,aAAKrU,eAAezG,IAAI8a,OAAO/D,OAAO;MACxC;AACA,UAAIvC,SAAQ;AACVuC,gBAAQvC,SAASA;MACnB;AACA,aAAOuC;IACT;IAEAiE,YAAY9T,OAAO4T,OAAO;AACxB,UAAI,CAAC,KAAKvU,gBAAgB;AACxB;MACF;AACA,YAAMlP,MAAM,KAAKA;AAEjB,WAAKK,KAAKwP,KAAK;AACf,YAAM6P,UAAU,KAAKsD,YAAYnT,OAAO4T,KAAK;AAC7CzjB,UAAIoM,YAAYsT,QAAQ/J,WACtB3V,KACA,MACAwV,2BAA2BxV,GAAG,GAC9B+H,SAAS6b,SACT/T,KACF;AAEA,YAAMgU,MAAMrO,2BAA2BxV,GAAG;AAC1C,UAAI6jB,KAAK;AACP,cAAM;UAAE7gB;UAAOC;QAAO,IAAIjD,IAAIoO;AAC9B,cAAM1G,SAAS7H,aAAa8H,MAAM;AAClCQ,aAAK4M,wBAAwB,CAAC,GAAG,GAAG/R,OAAOC,MAAM,GAAG4gB,KAAKnc,MAAM;AAC/D,cAAM,CAACoc,IAAIC,IAAIC,IAAIC,EAAE,IAAIvc;AAEzB,aAAK1H,IAAIuQ,SAASuT,IAAIC,IAAIC,KAAKF,IAAIG,KAAKF,EAAE;MAC5C,OAAO;AAOL,aAAK/jB,IAAIuQ,SAAS,OAAO,OAAO,MAAM,IAAI;MAC5C;AAEA,WAAKrC,mBACDmL,UAAUxJ,KAAK,EAEhBqU,mBAAmBrU,KAAK,EACxB8E,mBAAmB9E,OAAO+E,aAAa7T,SAAS,EAChD4T,mBAAmB9E,OAAO+E,aAAaqF,IAAI,EAC3CS,gBAAgB7K,KAAK;AAExB,WAAKyH,QAAQ,KAAKnJ,QAAQvF,0BAA0B,CAAC;AACrD,WAAKrI,QAAQsP,KAAK;IACpB;IAGAsU,mBAAmB;AACjBjc,kBAAY,kCAAkC;IAChD;IAEAkc,iBAAiB;AACflc,kBAAY,gCAAgC;IAC9C;IAEAmc,sBAAsBxU,OAAOsN,SAAQiE,MAAM;AACzC,UAAI,CAAC,KAAKlS,gBAAgB;AACxB;MACF;AACA,WAAK7O,KAAKwP,KAAK;AACf,WAAKjB,mBAAmBiK,KAAK,KAAKlK,aAAa;AAE/C,UAAIwO,SAAQ;AACV,aAAKpc,UAAU8O,OAAO,GAAGsN,OAAM;MACjC;AACA,WAAKxO,gBAAgB/J,oBAAoB,KAAK5E,GAAG;AAEjD,UAAIohB,MAAM;AACRjZ,aAAK4M,wBACHqM,MACA,KAAKzS,eACL,KAAKR,QAAQzG,MACf;AACA,cAAM,CAACoc,IAAIC,IAAIC,IAAIC,EAAE,IAAI7C;AACzB,cAAM/f,OAAO,IAAIoX,OAAO;AACxBpX,aAAKQ,KAAKiiB,IAAIC,IAAIC,KAAKF,IAAIG,KAAKF,EAAE;AAClC,aAAK/jB,IAAIqB,KAAKA,IAAI;AAClB,aAAK6M,mBAAmBuU,cAAc5S,OAAO,KAAK7P,KAAK8jB,IAAIE,IAAID,IAAIE,EAAE;AACrE,aAAKzJ,QAAQ3K,KAAK;MACpB;IACF;IAEAyU,oBAAoBzU,OAAO;AACzB,UAAI,CAAC,KAAKX,gBAAgB;AACxB;MACF;AACA,WAAK3O,QAAQsP,KAAK;AAClB,WAAKlB,gBAAgB,KAAKC,mBAAmBkK,IAAI;IACnD;IAEAyL,WAAW1U,OAAO2U,OAAO;AACvB,UAAI,CAAC,KAAKtV,gBAAgB;AACxB;MACF;AAEA,WAAK7O,KAAKwP,KAAK;AAGf,UAAI,KAAKsC,aAAa;AACpB,aAAK+E,aAAa;AAClB,aAAK/I,QAAQ7G,cAAc;MAC7B;AAEA,YAAMmd,aAAa,KAAKzkB;AAcxB,UAAI,CAACwkB,MAAME,UAAU;AACnBC,aAAK,oCAAoC;MAC3C;AAIA,UAAIH,MAAMI,UAAU;AAClB5I,aAAK,gCAAgC;MACvC;AAEA,YAAMjI,mBAAmBnP,oBAAoB6f,UAAU;AACvD,UAAID,MAAMrH,QAAQ;AAChBsH,mBAAW1jB,UAAU,GAAGyjB,MAAMrH,MAAM;MACtC;AACA,UAAI,CAACqH,MAAMpD,MAAM;AACf,cAAM,IAAIjhB,MAAM,2BAA2B;MAC7C;AAIA,UAAI0kB,SAAShlB,aAAa8H,MAAM;AAChCQ,WAAK4M,wBACHyP,MAAMpD,MACNxc,oBAAoB6f,UAAU,GAC9BI,MACF;AAGA,YAAMC,eAAe,CACnB,GACA,GACAL,WAAWrW,OAAOpL,OAClByhB,WAAWrW,OAAOnL,MAAM;AAE1B4hB,eAAS1c,KAAKK,UAAUqc,QAAQC,YAAY,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AAG5D,YAAMtQ,UAAUzP,KAAK2O,MAAMmR,OAAO,CAAC,CAAC;AACpC,YAAMnQ,UAAU3P,KAAK2O,MAAMmR,OAAO,CAAC,CAAC;AACpC,YAAMzP,aAAarQ,KAAKkO,IAAIlO,KAAK4O,KAAKkR,OAAO,CAAC,CAAC,IAAIrQ,SAAS,CAAC;AAC7D,YAAMa,cAActQ,KAAKkO,IAAIlO,KAAK4O,KAAKkR,OAAO,CAAC,CAAC,IAAInQ,SAAS,CAAC;AAE9D,WAAKvG,QAAQ1F,uBAAuB,CAAC,GAAG,GAAG2M,YAAYC,WAAW,CAAC;AAEnE,UAAI8B,UAAU,YAAY,KAAKtI;AAC/B,UAAI2V,MAAMhN,OAAO;AAEfL,mBAAW,YAAa,KAAKpI,iBAAiB;MAChD;AACA,YAAMqI,gBAAgB,KAAKjI,eAAe3L,UACxC2T,SACA/B,YACAC,WACF;AACA,YAAM0P,WAAW3N,cAAc1G;AAI/BqU,eAASlkB,UAAU,CAAC2T,SAAS,CAACE,OAAO;AACrCqQ,eAAShkB,UAAU,GAAGgT,gBAAgB;AAGtC,UAAI1S,OAAO,IAAIoX,OAAO;AACtB,YAAM,CAACqL,IAAIC,IAAIC,IAAIC,EAAE,IAAIO,MAAMpD;AAC/B/f,WAAKQ,KAAKiiB,IAAIC,IAAIC,KAAKF,IAAIG,KAAKF,EAAE;AAClC,UAAIS,MAAMrH,QAAQ;AAChB,cAAMjE,OAAO,IAAIT,OAAO;AACxBS,aAAKU,QAAQvY,MAAM,IAAI3B,UAAU8kB,MAAMrH,MAAM,CAAC;AAC9C9b,eAAO6X;MACT;AACA6L,eAAS1jB,KAAKA,IAAI;AAElB,UAAImjB,MAAMhN,OAAO;AAEf,aAAK1I,WAAW+J,KAAK;UACnBzK,QAAQgJ,cAAchJ;UACtBsC,SAASqU;UACTvQ;UACAE;UACAuD,SAASuM,MAAMhN,MAAMS;UACrBC,UAAUsM,MAAMhN,MAAMU;UACtBC,aAAaqM,MAAMhN,MAAMW,eAAe;UACxC6M,uBAAuB;QACzB,CAAC;MACH;AACA,UACE,CAACR,MAAMhN,SAIP,KAAKtJ,mBACL;AAGAuW,mBAAWxjB,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxCwjB,mBAAW5jB,UAAU2T,SAASE,OAAO;AACrC+P,mBAAWpkB,KAAK;MAClB;AAGAsL,mBAAa8Y,YAAYM,QAAQ;AACjC,WAAK/kB,MAAM+kB;AACX,WAAK7W,mBACD+W,4CAA4C,CAC5C,aACA,eACA,0BAA0B,CAC3B,EACAC,kBAAkBT,UAAU;AAC/B,WAAK/N,UAAU7G,OAAO,CACpB,CAAC,MAAM,aAAa,GACpB,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,CAAC,CACV;AACD,WAAKnB,WAAWmK,KAAK4L,UAAU;AAC/B,WAAK5V;IACP;IAEAsW,SAAStV,OAAO2U,OAAO;AACrB,UAAI,CAAC,KAAKtV,gBAAgB;AACxB;MACF;AACA,WAAKL;AACL,YAAMkW,WAAW,KAAK/kB;AACtB,YAAMA,MAAM,KAAK0O,WAAWoK,IAAI;AAChC,WAAK9Y,MAAMA;AAGX,WAAKA,IAAIyV,wBAAwB;AAEjC,WAAKvH,mBAAmBkX,iBAAiB;AAEzC,UAAIZ,MAAMhN,OAAO;AACf,aAAKxI,YAAY,KAAKF,WAAWgK,IAAI;AACrC,aAAKvY,QAAQsP,KAAK;AAClB,YAAI,KAAK3B,mBAAmB;AAC1B,eAAKlO,IAAIO,QAAQ;QACnB;MACF,OAAO;AACL,aAAKP,IAAIO,QAAQ;AACjB,cAAM8kB,aAAazgB,oBAAoB,KAAK5E,GAAG;AAC/C,aAAKO,QAAQsP,KAAK;AAClB,aAAK7P,IAAIK,KAAK;AACd,aAAKL,IAAIiB,aAAa,GAAGokB,UAAU;AACnC,cAAM9N,WAAW1X,aAAa8H,MAAM;AACpCQ,aAAK4M,wBACH,CAAC,GAAG,GAAGgQ,SAAS3W,OAAOpL,OAAO+hB,SAAS3W,OAAOnL,MAAM,GACpDoiB,YACA9N,QACF;AACA,aAAKvX,IAAIyF,UAAUsf,SAAS3W,QAAQ,GAAG,CAAC;AACxC,aAAKpO,IAAIO,QAAQ;AACjB,aAAK+W,QAAQC,QAAQ;MACvB;IACF;IAEA+N,gBAAgBzV,OAAOpM,IAAI5B,MAAMd,WAAWoc,SAAQoI,cAAc;AAKhE,WAAK,qBAAqB;AAC1BrZ,wBAAkB,KAAKlM,GAAG;AAE1B,WAAKA,IAAIK,KAAK;AACd,WAAKA,KAAKwP,KAAK;AAEf,UAAI,KAAKlB,eAAe;AACtB,aAAK3O,IAAIiB,aAAa,GAAG,KAAK0N,aAAa;MAC7C;AAEA,UAAI9M,MAAM;AACR,cAAMmB,QAAQnB,KAAK,CAAC,IAAIA,KAAK,CAAC;AAC9B,cAAMoB,SAASpB,KAAK,CAAC,IAAIA,KAAK,CAAC;AAE/B,YAAI0jB,gBAAgB,KAAKvX,qBAAqB;AAC5CjN,sBAAYA,UAAU4G,MAAM;AAC5B5G,oBAAU,CAAC,KAAKc,KAAK,CAAC;AACtBd,oBAAU,CAAC,KAAKc,KAAK,CAAC;AAEtBA,iBAAOA,KAAK8F,MAAM;AAClB9F,eAAK,CAAC,IAAIA,KAAK,CAAC,IAAI;AACpBA,eAAK,CAAC,IAAImB;AACVnB,eAAK,CAAC,IAAIoB;AAEVkF,eAAKC,8BAA8BxD,oBAAoB,KAAK5E,GAAG,GAAGL,EAAE;AACpE,gBAAM;YAAE2P;UAAc,IAAI;AAC1B,gBAAMkW,cAAczgB,KAAK4O,KACvB3Q,QAAQ,KAAKuM,eAAeD,aAC9B;AACA,gBAAMmW,eAAe1gB,KAAK4O,KACxB1Q,SAAS,KAAKuM,eAAeF,aAC/B;AAEA,eAAKoW,mBAAmB,KAAKtiB,cAAcG,OACzCiiB,aACAC,YACF;AACA,gBAAM;YAAErX;YAAQsC;UAAQ,IAAI,KAAKgV;AACjC,eAAK1X,oBAAoBrF,IAAIlF,IAAI2K,MAAM;AACvC,eAAKsX,iBAAiBC,WAAW,KAAK3lB;AACtC,eAAKA,MAAM0Q;AACX,eAAK1Q,IAAIK,KAAK;AACd,eAAKL,IAAIiB,aAAatB,GAAG,CAAC,GAAG,GAAG,GAAG,CAACA,GAAG,CAAC,GAAG,GAAGsD,SAAStD,GAAG,CAAC,CAAC;AAE5DuM,4BAAkB,KAAKlM,GAAG;QAC5B,OAAO;AACLkM,4BAAkB,KAAKlM,GAAG;AAG1B,eAAKwa,QAAQ3K,KAAK;AAElB,gBAAMxO,OAAO,IAAIoX,OAAO;AACxBpX,eAAKQ,KAAKA,KAAK,CAAC,GAAGA,KAAK,CAAC,GAAGmB,OAAOC,MAAM;AACzC,eAAKjD,IAAIqB,KAAKA,IAAI;QACpB;MACF;AAEA,WAAK8M,UAAU,IAAItI,iBACjB,KAAK7F,IAAIoO,OAAOpL,OAChB,KAAKhD,IAAIoO,OAAOnL,MAClB;AAEA,WAAKlC,UAAU8O,OAAO,GAAG9O,SAAS;AAClC,WAAKA,UAAU8O,OAAO,GAAGsN,OAAM;IACjC;IAEAyI,cAAc/V,OAAO;AACnB,UAAI,KAAK6V,kBAAkB;AACzB,aAAK1lB,IAAIO,QAAQ;AACjB,aAAK,YAAY;AAEjB,aAAKP,MAAM,KAAK0lB,iBAAiBC;AACjC,eAAO,KAAKD,iBAAiBC;AAC7B,eAAO,KAAKD;MACd;IACF;IAEAG,sBAAsBhW,OAAO+C,KAAK;AAChC,UAAI,CAAC,KAAK1D,gBAAgB;AACxB;MACF;AAEA,YAAMiF,QAAQvB,IAAIuB;AAClBvB,YAAM,KAAKhD,UAAUC,OAAO+C,IAAInJ,MAAMmJ,GAAG;AACzCA,UAAIuB,QAAQA;AAEZ,YAAMnU,MAAM,KAAKA;AACjB,YAAMkL,OAAO,KAAK2I,kBAAkBhE,OAAO+C,GAAG;AAC9C,YAAMsB,aAAahJ,KAAKkD;AAExBpO,UAAIK,KAAK;AAGTL,UAAIiB,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACjCjB,UAAIyF,UAAUyO,YAAYhJ,KAAKsJ,SAAStJ,KAAKwJ,OAAO;AACpD,WAAKxG,mBACDmL,UAAUxJ,KAAK,EAChByJ,WACCzJ,OACA,KAAK7P,KACLkL,KAAKsJ,SACLtJ,KAAKsJ,UAAUN,WAAWlR,OAC1BkI,KAAKwJ,SACLxJ,KAAKwJ,UAAUR,WAAWjR,MAC5B,EACCyX,gBAAgB7K,KAAK;AACxB7P,UAAIO,QAAQ;AACZ,WAAK+W,QAAQ;IACf;IAEAwO,4BACEjW,OACA+C,KACAlN,QACAqgB,QAAQ,GACRC,QAAQ,GACRpgB,QACAqgB,YACA;AACA,UAAI,CAAC,KAAK/W,gBAAgB;AACxB;MACF;AAEA0D,YAAM,KAAKhD,UAAUC,OAAO+C,IAAInJ,MAAMmJ,GAAG;AAEzC,YAAM5S,MAAM,KAAKA;AACjBA,UAAIK,KAAK;AACT,YAAM0T,mBAAmBnP,oBAAoB5E,GAAG;AAChDA,UAAIe,UAAU2E,QAAQqgB,OAAOC,OAAOpgB,QAAQ,GAAG,CAAC;AAChD,YAAMsF,OAAO,KAAK2I,kBAAkBhE,OAAO+C,GAAG;AAE9C5S,UAAIiB,aACF,GACA,GACA,GACA,GACAiK,KAAKsJ,UAAUT,iBAAiB,CAAC,GACjC7I,KAAKwJ,UAAUX,iBAAiB,CAAC,CACnC;AACA,WAAK7F,mBAAmBmL,UAAUxJ,KAAK;AACvC,eAASlG,KAAI,GAAGuc,KAAKD,WAAUzb,QAAQb,KAAIuc,IAAIvc,MAAK,GAAG;AACrD,cAAMwc,QAAQhe,KAAKpH,UAAUgT,kBAAkB,CAC7CrO,QACAqgB,OACAC,OACApgB,QACAqgB,WAAUtc,EAAC,GACXsc,WAAUtc,KAAI,CAAC,CAAC,CACjB;AAID3J,YAAIyF,UAAUyF,KAAKkD,QAAQ+X,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC;AAC7C,aAAKjY,mBAAmBoL,WACtBzJ,OACA,KAAK7P,KACLmmB,MAAM,CAAC,GACPA,MAAM,CAAC,IAAIjb,KAAKkD,OAAOpL,OACvBmjB,MAAM,CAAC,GACPA,MAAM,CAAC,IAAIjb,KAAKkD,OAAOnL,MACzB;MACF;AACAjD,UAAIO,QAAQ;AACZ,WAAK+W,QAAQ;AAEb,WAAKpJ,mBAAmBwM,gBAAgB7K,KAAK;IAC/C;IAEAuW,2BAA2BvW,OAAOwW,QAAQ;AACxC,UAAI,CAAC,KAAKnX,gBAAgB;AACxB;MACF;AACA,YAAMlP,MAAM,KAAKA;AAEjB,YAAM+G,YAAY,KAAKoH,QAAQpH;AAC/B,YAAM+M,gBAAgB,KAAK3F,QAAQlH;AAEnC,WAAKiH,mBACDmL,UAAUxJ,KAAK,EAChB8E,mBAAmB9E,OAAO+E,aAAaC,gBAAgB;AAE1D,iBAAWyR,SAASD,QAAQ;AAC1B,cAAM;UAAE5c;UAAMzG;UAAOC;UAAQlC;QAAU,IAAIulB;AAE3C,cAAMpS,aAAa,KAAK/E,eAAe3L,UACrC,cACAR,OACAC,MACF;AACA,cAAMmV,UAAUlE,WAAWxD;AAC3B0H,gBAAQ/X,KAAK;AAEb,cAAMuS,MAAM,KAAKhD,UAAUC,OAAOpG,MAAM6c,KAAK;AAC7C/a,2BAAmB6M,SAASxF,GAAG;AAE/BwF,gBAAQ1L,2BAA2B;AAEnC0L,gBAAQhM,YAAY0H,gBAChB/M,UAAU4O,WACRyC,SACA,MACA5C,2BAA2BxV,GAAG,GAC9B+H,SAASlB,MACTgJ,KACF,IACA9I;AACJqR,gBAAQ7H,SAAS,GAAG,GAAGvN,OAAOC,MAAM;AAEpCmV,gBAAQ7X,QAAQ;AAEhBP,YAAIK,KAAK;AACTL,YAAIe,UAAU,GAAGA,SAAS;AAC1Bf,YAAIW,MAAM,GAAG,EAAE;AACfqD,iCACEhE,KACAkU,WAAW9F,QACX,GACA,GACApL,OACAC,QACA,GACA,IACA,GACA,CACF;AAEA,aAAKiL,mBAAmBoL,WAAWzJ,OAAO7P,KAAK,GAAGgD,OAAO,GAAGC,MAAM;AAClEjD,YAAIO,QAAQ;MACd;AACA,WAAK+W,QAAQ;AACb,WAAKpJ,mBAAmBwM,gBAAgB7K,KAAK;IAC/C;IAEA0W,kBAAkB1W,OAAO4T,OAAO;AAC9B,UAAI,CAAC,KAAKvU,gBAAgB;AACxB;MACF;AACA,YAAMpG,UAAU,KAAK8G,UAAUC,OAAO4T,KAAK;AAC3C,UAAI,CAAC3a,SAAS;AACZkT,aAAK,iCAAiC;AACtC;MACF;AAEA,WAAKwK,wBAAwB3W,OAAO/G,OAAO;IAC7C;IAEA2d,wBAAwB5W,OAAO4T,OAAO/d,QAAQE,QAAQqgB,YAAW;AAC/D,UAAI,CAAC,KAAK/W,gBAAgB;AACxB;MACF;AACA,YAAMpG,UAAU,KAAK8G,UAAUC,OAAO4T,KAAK;AAC3C,UAAI,CAAC3a,SAAS;AACZkT,aAAK,iCAAiC;AACtC;MACF;AAEA,YAAMhZ,QAAQ8F,QAAQ9F;AACtB,YAAMC,SAAS6F,QAAQ7F;AACvB,YAAMyjB,OAAM,CAAA;AACZ,eAAS/c,KAAI,GAAGuc,KAAKD,WAAUzb,QAAQb,KAAIuc,IAAIvc,MAAK,GAAG;AACrD+c,QAAAA,KAAI7N,KAAK;UACP9X,WAAW,CAAC2E,QAAQ,GAAG,GAAGE,QAAQqgB,WAAUtc,EAAC,GAAGsc,WAAUtc,KAAI,CAAC,CAAC;UAChEzH,GAAG;UACHC,GAAG;UACHwkB,GAAG3jB;UACH4jB,GAAG3jB;QACL,CAAC;MACH;AACA,WAAK4jB,6BAA6BhX,OAAO/G,SAAS4d,IAAG;IACvD;IAEAI,0BAA0B9mB,KAAK;AAC7B,UAAI,KAAKmO,QAAQ5G,iBAAiB,QAAQ;AACxCvH,YAAI4M,SAAS,KAAKuB,QAAQ5G;AAC1BvH,YAAIyF,UAAUzF,IAAIoO,QAAQ,GAAG,CAAC;AAC9BpO,YAAI4M,SAAS;MACf;AACA,aAAO5M,IAAIoO;IACb;IAEA2Y,0BAA0Bje,SAAS;AACjC,UAAI,KAAKqF,QAAQ5G,iBAAiB,QAAQ;AACxC,eAAOuB,QAAQ0C;MACjB;AACA,YAAM;QAAEA;QAAQxI;QAAOC;MAAO,IAAI6F;AAClC,YAAMwK,YAAY,KAAKnE,eAAe3L,UACpC,eACAR,OACAC,MACF;AACA,YAAMsQ,SAASD,UAAU5C;AACzB6C,aAAO3G,SAAS,KAAKuB,QAAQ5G;AAC7BgM,aAAO9N,UAAU+F,QAAQ,GAAG,CAAC;AAC7B+H,aAAO3G,SAAS;AAEhB,aAAO0G,UAAUlF;IACnB;IAEAoY,wBAAwB3W,OAAO/G,SAAS;AACtC,UAAI,CAAC,KAAKoG,gBAAgB;AACxB;MACF;AACA,YAAMlM,QAAQ8F,QAAQ9F;AACtB,YAAMC,SAAS6F,QAAQ7F;AACvB,YAAMjD,MAAM,KAAKA;AAEjB,WAAKK,KAAKwP,KAAK;AAMf,YAAM;QAAEjD;MAAO,IAAI5M;AACnB,UAAI4M,WAAW,UAAUA,WAAW,IAAI;AACtC5M,YAAI4M,SAAS;MACf;AAGA5M,UAAIW,MAAM,IAAIqC,OAAO,KAAKC,MAAM;AAEhC,UAAI+jB;AACJ,UAAIle,QAAQ0C,QAAQ;AAClBwb,qBAAa,KAAKD,0BAA0Bje,OAAO;MACrD,WACG,OAAOme,gBAAgB,cAAcne,mBAAmBme,eACzD,CAACne,QAAQW,MACT;AAEAud,qBAAale;MACf,OAAO;AACL,cAAMwK,YAAY,KAAKnE,eAAe3L,UACpC,eACAR,OACAC,MACF;AACA,cAAMsQ,SAASD,UAAU5C;AACzB7H,2BAAmB0K,QAAQzK,OAAO;AAClCke,qBAAa,KAAKF,0BAA0BvT,MAAM;MACpD;AAEA,YAAMU,SAAS,KAAKtB,YAClBqU,YACAxR,2BAA2BxV,GAAG,CAChC;AACAA,UAAIyV,wBAAwB5I,yBAC1BjI,oBAAoB5E,GAAG,GACvB8I,QAAQgE,WACV;AAEA,WAAKoB,mBACDmL,UAAUxJ,KAAK,EAChByJ,WAAWzJ,OAAO7P,KAAK,GAAGgD,OAAO,CAACC,QAAQ,CAAC,EAC3C0R,mBAAmB9E,OAAO+E,aAAasS,YAAY,EACnDxM,gBAAgB7K,KAAK;AAExB7L,+BACEhE,KACAiU,OAAOrB,KACP,GACA,GACAqB,OAAOd,YACPc,OAAOb,aACP,GACA,CAACnQ,QACDD,OACAC,MACF;AACA,WAAKqU,QAAQ;AACb,WAAK/W,QAAQsP,KAAK;IACpB;IAEAgX,6BAA6BhX,OAAO/G,SAAS4d,MAAK;AAChD,UAAI,CAAC,KAAKxX,gBAAgB;AACxB;MACF;AACA,YAAMlP,MAAM,KAAKA;AACjB,UAAIgnB;AACJ,UAAIle,QAAQ0C,QAAQ;AAClBwb,qBAAale,QAAQ0C;MACvB,OAAO;AACL,cAAMmb,KAAI7d,QAAQ9F;AAClB,cAAM4jB,KAAI9d,QAAQ7F;AAElB,cAAMqQ,YAAY,KAAKnE,eAAe3L,UAAU,eAAemjB,IAAGC,EAAC;AACnE,cAAMrT,SAASD,UAAU5C;AACzB7H,2BAAmB0K,QAAQzK,OAAO;AAClCke,qBAAa,KAAKF,0BAA0BvT,MAAM;MACpD;AAEA,WAAKrF,mBAAmBmL,UAAUxJ,KAAK;AAEvC,iBAAWsX,SAAST,MAAK;AACvB1mB,YAAIK,KAAK;AACTL,YAAIe,UAAU,GAAGomB,MAAMpmB,SAAS;AAChCf,YAAIW,MAAM,GAAG,EAAE;AACfqD,iCACEhE,KACAgnB,YACAG,MAAMjlB,GACNilB,MAAMhlB,GACNglB,MAAMR,GACNQ,MAAMP,GACN,GACA,IACA,GACA,CACF;AACA,aAAK1Y,mBAAmBoL,WAAWzJ,OAAO7P,KAAK,GAAG,GAAG,IAAI,CAAC;AAC1DA,YAAIO,QAAQ;MACd;AACA,WAAK2N,mBAAmBwM,gBAAgB7K,KAAK;AAC7C,WAAKyH,QAAQ;IACf;IAEA8P,yBAAyBvX,OAAO;AAC9B,UAAI,CAAC,KAAKX,gBAAgB;AACxB;MACF;AACA,WAAKhB,mBACDmL,UAAUxJ,KAAK,EAChByJ,WAAWzJ,OAAO,KAAK7P,KAAK,GAAG,GAAG,GAAG,CAAC,EACtC2U,mBAAmB9E,OAAO+E,aAAaqF,IAAI,EAC3CS,gBAAgB7K,KAAK;AACxB,WAAK7P,IAAIuQ,SAAS,GAAG,GAAG,GAAG,CAAC;AAC5B,WAAK+G,QAAQ;IACf;IAIA+P,UAAUxX,OAAOyX,KAAK;IAEtB;IAEAC,eAAe1X,OAAOyX,KAAKzb,YAAY;IAEvC;IAEA2b,mBAAmB3X,OAAOyX,KAAK;AAC7B,WAAKpZ,mBAAmBsZ,mBAAmB3X,KAAK;AAChD,WAAK9B,mBAAmB8K,KAAK;QAC3B4O,SAAS;MACX,CAAC;IACH;IAEAC,wBAAwB7X,OAAOyX,KAAKzb,YAAY;AAC9C,WAAKqC,mBAAmBsZ,mBAAmB3X,KAAK;AAChD,UAAIyX,QAAQ,MAAM;AAChB,aAAKvZ,mBAAmB8K,KAAK;UAC3B4O,SAAS,KAAK3Z,sBAAsB6Z,UAAU9b,UAAU;QAC1D,CAAC;MACH,OAAO;AACL,aAAKkC,mBAAmB8K,KAAK;UAC3B4O,SAAS;QACX,CAAC;MACH;AACA,WAAKvY,iBAAiB,KAAK0Y,iBAAiB;IAC9C;IAEAC,iBAAiBhY,OAAO;AACtB,WAAK3B,mBAAmB2Z,iBAAiBhY,KAAK;AAC9C,WAAK9B,mBAAmB+K,IAAI;AAC5B,WAAK5J,iBAAiB,KAAK0Y,iBAAiB;IAC9C;IAIAE,YAAYjY,OAAO;IAEnB;IAEAkY,UAAUlY,OAAO;IAEjB;IAIA4J,YAAY5J,OAAOqJ,MAAMzR,SAAS;AAChC,YAAMugB,UAAU,KAAK7Z,QAAQzF,YAAY;AACzC,UAAI,KAAK4F,aAAa;AACpB,aAAKH,QAAQ5F,mBAAmB;MAClC;AACA,UAAI,CAAC,KAAK+F,aAAa;AACrB,aAAKgJ,QAAQ7P,OAAO;MACtB;AACA,YAAMzH,MAAM,KAAKA;AACjB,UAAI,KAAKsO,aAAa;AACpB,YAAI,CAAC0Z,SAAS;AACZ,cAAI,KAAK1Z,gBAAgBd,SAAS;AAChCxN,gBAAIqB,KAAK6X,MAAM,SAAS;UAC1B,OAAO;AACLlZ,gBAAIqB,KAAK6X,IAAI;UACf;QACF;AACA,aAAK5K,cAAc;AACnB,aAAKJ,mBACD+Z,2BAA2BpY,KAAK,EACjC8K,6BAA6B,YAAY9K,KAAK;MACnD,OAAO;AACL,aAAK3B,mBAAmBwM,gBAAgB7K,KAAK;MAC/C;AAEA,WAAK1B,QAAQ1F,uBAAuB,KAAK0F,QAAQ1G,OAAO;IAC1D;IAEAkY,sBAAsB;AACpB,UAAI,CAAC,KAAKjQ,4BAA4B;AACpC,cAAMwY,KAAItjB,oBAAoB,KAAK5E,GAAG;AACtC,YAAIkoB,GAAE,CAAC,MAAM,KAAKA,GAAE,CAAC,MAAM,GAAG;AAE5B,eAAKxY,6BACH,IAAI3K,KAAK0P,IAAI1P,KAAKM,IAAI6iB,GAAE,CAAC,CAAC,GAAGnjB,KAAKM,IAAI6iB,GAAE,CAAC,CAAC,CAAC;QAC/C,OAAO;AACL,gBAAMC,SAASpjB,KAAKM,IAAI6iB,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAIA,GAAE,CAAC,CAAC;AACjD,gBAAME,QAAQrjB,KAAKY,MAAMuiB,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AACnC,gBAAMG,QAAQtjB,KAAKY,MAAMuiB,GAAE,CAAC,GAAGA,GAAE,CAAC,CAAC;AACnC,eAAKxY,6BAA6B3K,KAAKkO,IAAImV,OAAOC,KAAK,IAAIF;QAC7D;MACF;AACA,aAAO,KAAKzY;IACd;IAEA4Y,sBAAsB;AAOpB,UAAI,KAAK7Y,wBAAwB,CAAC,MAAM,IAAI;AAC1C,cAAM;UAAEpI;QAAU,IAAI,KAAK8G;AAC3B,cAAM;UAAE/L,GAAAA;UAAGC,GAAAA;UAAGC,GAAAA;UAAGC,GAAAA;QAAE,IAAI,KAAKvC,IAAIqX,aAAa;AAC7C,YAAI3R,QAAQE;AAEZ,YAAIvD,OAAM,KAAKC,OAAM,GAAG;AAEtB,gBAAM8lB,QAAQrjB,KAAKM,IAAIjD,EAAC;AACxB,gBAAMimB,QAAQtjB,KAAKM,IAAI9C,EAAC;AACxB,cAAI6lB,UAAUC,OAAO;AACnB,gBAAIhhB,cAAc,GAAG;AACnB3B,uBAASE,SAAS,IAAIwiB;YACxB,OAAO;AACL,oBAAMG,kBAAkBH,QAAQ/gB;AAChC3B,uBAASE,SAAS2iB,kBAAkB,IAAI,IAAIA,kBAAkB;YAChE;UACF,WAAWlhB,cAAc,GAAG;AAC1B3B,qBAAS,IAAI0iB;AACbxiB,qBAAS,IAAIyiB;UACf,OAAO;AACL,kBAAMG,mBAAmBJ,QAAQ/gB;AACjC,kBAAMohB,mBAAmBJ,QAAQhhB;AACjC3B,qBAAS8iB,mBAAmB,IAAI,IAAIA,mBAAmB;AACvD5iB,qBAAS6iB,mBAAmB,IAAI,IAAIA,mBAAmB;UACzD;QACF,OAAO;AAOL,gBAAMN,SAASpjB,KAAKM,IAAIjD,KAAIG,KAAIF,KAAIC,EAAC;AACrC,gBAAM8lB,QAAQrjB,KAAKY,MAAMvD,IAAGC,EAAC;AAC7B,gBAAMgmB,QAAQtjB,KAAKY,MAAMrD,IAAGC,EAAC;AAC7B,cAAI8E,cAAc,GAAG;AACnB3B,qBAAS2iB,QAAQF;AACjBviB,qBAASwiB,QAAQD;UACnB,OAAO;AACL,kBAAMO,WAAWrhB,YAAY8gB;AAC7BziB,qBAAS2iB,QAAQK,WAAWL,QAAQK,WAAW;AAC/C9iB,qBAASwiB,QAAQM,WAAWN,QAAQM,WAAW;UACjD;QACF;AACA,aAAKjZ,wBAAwB,CAAC,IAAI/J;AAClC,aAAK+J,wBAAwB,CAAC,IAAI7J;MACpC;AACA,aAAO,KAAK6J;IACd;IAIAsK,iBAAiBb,MAAMyP,aAAa;AAClC,YAAM;QACJ3oB;QACAmO,SAAS;UAAE9G;QAAU;MACvB,IAAI;AACJ,YAAM,CAAC3B,QAAQE,MAAM,IAAI,KAAK0iB,oBAAoB;AAElD,UAAI5iB,WAAWE,QAAQ;AACrB5F,YAAIqH,aAAaA,aAAa,KAAK3B;AACnC1F,YAAIoZ,OAAOF,IAAI;AACf;MACF;AAEA,YAAM0P,SAAS5oB,IAAIgM,YAAY;AAC/B,UAAI2c,aAAa;AACf3oB,YAAIK,KAAK;MACX;AAEAL,UAAIW,MAAM+E,QAAQE,MAAM;AACxBnG,mBAAa2C,IAAI,IAAIsD;AACrBjG,mBAAa8C,IAAI,IAAIqD;AACrB,YAAM+T,UAAU,IAAIlB,OAAO;AAC3BkB,cAAQC,QAAQV,MAAMzZ,YAAY;AASlC,UAAImpB,OAAOpe,SAAS,GAAG;AACrB,cAAM7J,QAAQoE,KAAKkO,IAAIvN,QAAQE,MAAM;AACrC5F,YAAI+L,YAAY6c,OAAOlC,IAAIxkB,CAAAA,OAAKA,KAAIvB,KAAK,CAAC;AAC1CX,YAAIiM,kBAAkBtL;MACxB;AAEAX,UAAIqH,YAAYA,aAAa;AAC7BrH,UAAIoZ,OAAOO,OAAO;AAElB,UAAIgP,aAAa;AACf3oB,YAAIO,QAAQ;MACd;IACF;IAEAqnB,mBAAmB;AACjB,eAASje,KAAI,KAAKoE,mBAAmBvD,SAAS,GAAGb,MAAK,GAAGA,MAAK;AAC5D,YAAI,CAAC,KAAKoE,mBAAmBpE,EAAC,EAAE8d,SAAS;AACvC,iBAAO;QACT;MACF;AACA,aAAO;IACT;EACF;AAEA,aAAWxO,MAAMpH,KAAK;AACpB,QAAIpE,eAAeob,UAAU5P,EAAE,MAAMtV,QAAW;AAC9C8J,qBAAeob,UAAUhX,IAAIoH,EAAE,CAAC,IAAIxL,eAAeob,UAAU5P,EAAE;IACjE;EACF;ACjxGA,MAAM6P,sBAAN,MAA0B;IACxB,OAAO,QAAQ;IAEf,OAAO,OAAO;IAKd,WAAWC,aAAa;AACtB,aAAO,KAAK;IACd;IAMA,WAAWA,WAAWC,KAAK;AACzB,UACE,EAAE,OAAOC,WAAW,eAAeD,eAAeC,WAClDD,QAAQ,MACR;AACA,cAAM,IAAIE,MAAM,4BAA4B;MAC9C;AACA,WAAK,QAAQF;IACf;IAKA,WAAWG,YAAY;AACrB,aAAO,KAAK;IACd;IASA,WAAWA,UAAUH,KAAK;AACxB,UAAI,OAAOA,QAAQ,UAAU;AAC3B,cAAM,IAAIE,MAAM,2BAA2B;MAC7C;AACA,WAAK,OAAOF;IACd;EACF;AC9CA,MAAMI,WAAN,MAAe;IACb;IAEA;IAEAC,YAAY;MAAEC;MAAYC;IAAQ,GAAG;AACnC,WAAK,OAAOD;AACZ,WAAK,QAAQC;IACf;IAEAC,SAAS;AACP,aAAO,KAAK;IACd;IAEAC,IAAIC,OAAM;AACR,aAAO,KAAK,KAAKD,IAAIC,KAAI,KAAK;IAChC;IAEA,CAACC,OAAOC,QAAQ,IAAI;AAClB,aAAO,KAAK,KAAKC,QAAQ;IAC3B;EACF;ACbA,MAAMC,WAAWC,uBAAO,UAAU;AAElC,MAAMC,uBAAN,MAA2B;IACzB,aAAa;IAEb,WAAW;IAEX,WAAW;IAEX,WAAW;IAEXC,YAAYC,iBAAiB;MAAEC,MAAAA;MAAMC;MAAQC;MAAOC;IAAS,GAAG;AAC9D,WAAK,aAAa,CAAC,EAAEJ,kBAAkBK,oBAAoBC;AAC3D,WAAK,WAAW,CAAC,EAAEN,kBAAkBK,oBAAoBE;AAEzD,WAAKN,OAAOA;AACZ,WAAKC,SAASA;AACd,WAAKC,QAAQA;AACb,WAAKC,WAAWA;IAClB;IAKA,IAAII,UAAU;AACZ,UAAI,KAAK,UAAU;AACjB,eAAO,KAAK;MACd;AACA,UAAI,CAAC,KAAK,UAAU;AAClB,eAAO;MACT;AACA,YAAM;QAAEC;QAAOC;MAAK,IAAI,KAAKP;AAE7B,UAAI,KAAK,YAAY;AACnB,eAAOO,MAAMC,cAAc;MAC7B,WAAW,KAAK,UAAU;AACxB,eAAOF,OAAOG,eAAe;MAC/B;AACA,aAAO;IACT;IAKAC,YAAYC,UAAUN,SAASO,UAAU,OAAO;AAC9C,UAAID,aAAalB,UAAU;AACzBoB,oBAAY,uCAAuC;MACrD;AACA,WAAK,WAAWD;AAChB,WAAK,WAAWP;IAClB;EACF;AAEA,MAAMS,wBAAN,MAA4B;IAC1B,iBAAiB;IAEjB,UAAU,oBAAIC,IAAI;IAElB,eAAe;IAEf,SAAS;IAETnB,YAAYoB,MAAMnB,kBAAkBK,oBAAoBC,SAAS;AAC/D,WAAKN,kBAAkBA;AAEvB,WAAKC,OAAO;AACZ,WAAKmB,UAAU;AAEf,UAAID,SAAS,MAAM;AACjB;MACF;AACA,WAAKlB,OAAOkB,KAAKlB;AACjB,WAAKmB,UAAUD,KAAKC;AACpB,WAAK,SAASD,KAAKE;AACnB,iBAAWC,SAASH,KAAKI,QAAQ;AAC/B,aAAK,QAAQC,IACXF,MAAMG,IACN,IAAI3B,qBAAqBE,iBAAiBsB,KAAK,CACjD;MACF;AAEA,UAAIH,KAAKO,cAAc,OAAO;AAC5B,mBAAWJ,SAAS,KAAK,QAAQK,OAAO,GAAG;AACzCL,gBAAMT,YAAYjB,UAAU,KAAK;QACnC;MACF;AAEA,iBAAWgC,OAAMT,KAAKS,IAAI;AACxB,aAAK,QAAQC,IAAID,GAAE,EAAEf,YAAYjB,UAAU,IAAI;MACjD;AAEA,iBAAWkC,QAAOX,KAAKW,KAAK;AAC1B,aAAK,QAAQD,IAAIC,IAAG,EAAEjB,YAAYjB,UAAU,KAAK;MACnD;AAGA,WAAK,eAAe,KAAKmC,QAAQ;IACnC;IAEA,8BAA8BC,OAAO;AACnC,YAAMC,SAASD,MAAMC;AACrB,UAAIA,SAAS,GAAG;AACd,eAAO;MACT;AACA,YAAMC,WAAWF,MAAM,CAAC;AACxB,eAASG,KAAI,GAAGA,KAAIF,QAAQE,MAAK;AAC/B,cAAMC,UAAUJ,MAAMG,EAAC;AACvB,YAAIE;AACJ,YAAIC,MAAMC,QAAQH,OAAO,GAAG;AAC1BC,kBAAQ,KAAK,8BAA8BD,OAAO;QACpD,WAAW,KAAK,QAAQI,IAAIJ,OAAO,GAAG;AACpCC,kBAAQ,KAAK,QAAQR,IAAIO,OAAO,EAAE5B;QACpC,OAAO;AACLiC,eAAK,qCAAqCL,OAAO,EAAE;AACnD,iBAAO;QACT;AACA,gBAAQF,UAAQ;UACd,KAAK;AACH,gBAAI,CAACG,OAAO;AACV,qBAAO;YACT;AACA;UACF,KAAK;AACH,gBAAIA,OAAO;AACT,qBAAO;YACT;AACA;UACF,KAAK;AACH,mBAAO,CAACA;UACV;AACE,mBAAO;QACX;MACF;AACA,aAAOH,aAAa;IACtB;IAEAQ,UAAUpB,OAAO;AACf,UAAI,KAAK,QAAQqB,SAAS,GAAG;AAC3B,eAAO;MACT;AACA,UAAI,CAACrB,OAAO;AACVsB,aAAK,qCAAqC;AAC1C,eAAO;MACT;AACA,UAAItB,MAAMuB,SAAS,OAAO;AACxB,YAAI,CAAC,KAAK,QAAQL,IAAIlB,MAAMG,EAAE,GAAG;AAC/BgB,eAAK,qCAAqCnB,MAAMG,EAAE,EAAE;AACpD,iBAAO;QACT;AACA,eAAO,KAAK,QAAQI,IAAIP,MAAMG,EAAE,EAAEjB;MACpC,WAAWc,MAAMuB,SAAS,QAAQ;AAEhC,YAAIvB,MAAMwB,YAAY;AACpB,iBAAO,KAAK,8BAA8BxB,MAAMwB,UAAU;QAC5D;AACA,YAAI,CAACxB,MAAMyB,UAAUzB,MAAMyB,WAAW,SAAS;AAE7C,qBAAWtB,MAAMH,MAAM0B,KAAK;AAC1B,gBAAI,CAAC,KAAK,QAAQR,IAAIf,EAAE,GAAG;AACzBgB,mBAAK,qCAAqChB,EAAE,EAAE;AAC9C,qBAAO;YACT;AACA,gBAAI,KAAK,QAAQI,IAAIJ,EAAE,EAAEjB,SAAS;AAChC,qBAAO;YACT;UACF;AACA,iBAAO;QACT,WAAWc,MAAMyB,WAAW,SAAS;AACnC,qBAAWtB,MAAMH,MAAM0B,KAAK;AAC1B,gBAAI,CAAC,KAAK,QAAQR,IAAIf,EAAE,GAAG;AACzBgB,mBAAK,qCAAqChB,EAAE,EAAE;AAC9C,qBAAO;YACT;AACA,gBAAI,CAAC,KAAK,QAAQI,IAAIJ,EAAE,EAAEjB,SAAS;AACjC,qBAAO;YACT;UACF;AACA,iBAAO;QACT,WAAWc,MAAMyB,WAAW,UAAU;AACpC,qBAAWtB,MAAMH,MAAM0B,KAAK;AAC1B,gBAAI,CAAC,KAAK,QAAQR,IAAIf,EAAE,GAAG;AACzBgB,mBAAK,qCAAqChB,EAAE,EAAE;AAC9C,qBAAO;YACT;AACA,gBAAI,CAAC,KAAK,QAAQI,IAAIJ,EAAE,EAAEjB,SAAS;AACjC,qBAAO;YACT;UACF;AACA,iBAAO;QACT,WAAWc,MAAMyB,WAAW,UAAU;AACpC,qBAAWtB,MAAMH,MAAM0B,KAAK;AAC1B,gBAAI,CAAC,KAAK,QAAQR,IAAIf,EAAE,GAAG;AACzBgB,mBAAK,qCAAqChB,EAAE,EAAE;AAC9C,qBAAO;YACT;AACA,gBAAI,KAAK,QAAQI,IAAIJ,EAAE,EAAEjB,SAAS;AAChC,qBAAO;YACT;UACF;AACA,iBAAO;QACT;AACAiC,aAAK,mCAAmCnB,MAAMyB,MAAM,GAAG;AACvD,eAAO;MACT;AACAN,WAAK,sBAAsBnB,MAAMuB,IAAI,GAAG;AACxC,aAAO;IACT;IAEAI,cAAcxB,IAAIjB,UAAU,MAAM0C,aAAa,MAAM;AACnD,YAAM5B,QAAQ,KAAK,QAAQO,IAAIJ,EAAE;AACjC,UAAI,CAACH,OAAO;AACVmB,aAAK,qCAAqChB,EAAE,EAAE;AAC9C;MACF;AAKA,UAAIyB,cAAc1C,WAAWc,MAAMlB,SAAS6B,QAAQ;AAClD,mBAAWkB,WAAW7B,MAAMlB,UAAU;AACpC,qBAAWgD,WAAWD,SAAS;AAC7B,gBAAIC,YAAY3B,IAAI;AAClB,mBAAK,QAAQI,IAAIuB,OAAO,GAAGvC,YAAYjB,UAAU,OAAO,IAAI;YAC9D;UACF;QACF;MACF;AAEA0B,YAAMT,YAAYjB,UAAU,CAAC,CAACY,SAAyB,IAAI;AAE3D,WAAK,iBAAiB;IACxB;IAEA6C,YAAY;MAAEhB;MAAOa;IAAW,GAAG;AACjC,UAAIhB;AAEJ,iBAAWoB,QAAQjB,OAAO;AACxB,gBAAQiB,MAAI;UACV,KAAK;UACL,KAAK;UACL,KAAK;AACHpB,uBAAWoB;AACX;QACJ;AAEA,cAAMhC,QAAQ,KAAK,QAAQO,IAAIyB,IAAI;AACnC,YAAI,CAAChC,OAAO;AACV;QACF;AACA,gBAAQY,UAAQ;UACd,KAAK;AACH,iBAAKe,cAAcK,MAAM,MAAMJ,UAAU;AACzC;UACF,KAAK;AACH,iBAAKD,cAAcK,MAAM,OAAOJ,UAAU;AAC1C;UACF,KAAK;AACH,iBAAKD,cAAcK,MAAM,CAAChC,MAAMd,SAAS0C,UAAU;AACnD;QACJ;MACF;AAEA,WAAK,iBAAiB;IACxB;IAEA,IAAIK,uBAAuB;AACzB,aAAO,KAAK,iBAAiB,QAAQ,KAAKxB,QAAQ,MAAM,KAAK;IAC/D;IAEAyB,WAAW;AACT,UAAI,CAAC,KAAK,QAAQb,MAAM;AACtB,eAAO;MACT;AACA,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK,OAAOc,MAAM;MAC3B;AACA,aAAO,CAAC,GAAG,KAAK,QAAQC,KAAK,CAAC;IAChC;IAEAC,SAASlC,IAAI;AACX,aAAO,KAAK,QAAQI,IAAIJ,EAAE,KAAK;IACjC;IAEAM,UAAU;AACR,UAAI,KAAK,mBAAmB,MAAM;AAChC,eAAO,KAAK;MACd;AACA,YAAM6B,OAAO,IAAIC,eAAe;AAEhC,iBAAW,CAACpC,IAAIH,KAAK,KAAK,KAAK,SAAS;AACtCsC,aAAKE,OAAO,GAAGrC,EAAE,IAAIH,MAAMd,OAAO,EAAE;MACtC;AACA,aAAQ,KAAK,iBAAiBoD,KAAKG,UAAU;IAC/C;IAEA,CAAClE,OAAOmE,QAAQ,IAAI;AAClB,aAAO,KAAK,QAAQC,QAAQ;IAC9B;EACF;ACzSA,MAAMC,yBAAN,MAA6B;IAC3BC,YACEC,uBACA;MAAEC,eAAe;MAAOC,gBAAgB;IAAM,GAC9C;AACAC,MAAAA,QACEH,uBACA,6EACF;AACA,YAAM;QAAEI;QAAQC;QAAaC;QAAiBC;MAA2B,IACvEP;AAEF,WAAKQ,gBAAgB,CAAA;AACrB,WAAKC,mBAAmBH;AACxB,WAAKI,8BAA8BH;AAEnC,UAAIF,aAAaD,SAAS,GAAG;AAG3B,cAAMO,UACJN,uBAAuBO,cACvBP,YAAYQ,eAAeR,YAAYM,OAAOE,aAC1CR,YAAYM,SACZ,IAAIC,WAAWP,WAAW,EAAEM;AAClC,aAAKH,cAAcM,KAAKH,OAAM;MAChC;AAEA,WAAKI,yBAAyBf;AAC9B,WAAKgB,wBAAwB,CAACd;AAC9B,WAAKe,oBAAoB,CAAChB;AAC1B,WAAKiB,iBAAiBd;AAEtB,WAAKe,qBAAqB;AAC1B,WAAKC,gBAAgB,CAAA;AAErBpB,4BAAsBqB,iBAAiB,CAACC,OAAOC,UAAU;AACvD,aAAKC,eAAe;UAAEF;UAAOC;QAAM,CAAC;MACtC,CAAC;AAEDvB,4BAAsByB,oBAAoB,CAACC,SAAQC,UAAU;AAC3D,aAAKC,YAAY;UAAEF,QAAAA;UAAQC;QAAM,CAAC;MACpC,CAAC;AAED3B,4BAAsB6B,2BAA2BN,WAAS;AACxD,aAAKC,eAAe;UAAED;QAAM,CAAC;MAC/B,CAAC;AAEDvB,4BAAsB8B,2BAA2B,MAAM;AACrD,aAAKC,mBAAmB;MAC1B,CAAC;AAED/B,4BAAsBgC,eAAe;IACvC;IAEAR,eAAe;MAAEF;MAAOC;IAAM,GAAG;AAG/B,YAAMZ,UACJY,iBAAiBX,cACjBW,MAAMV,eAAeU,MAAMZ,OAAOE,aAC9BU,MAAMZ,SACN,IAAIC,WAAWW,KAAK,EAAEZ;AAE5B,UAAIW,UAAUW,QAAW;AACvB,YAAI,KAAKd,oBAAoB;AAC3B,eAAKA,mBAAmBe,SAASvB,OAAM;QACzC,OAAO;AACL,eAAKH,cAAcM,KAAKH,OAAM;QAChC;MACF,OAAO;AACL,cAAMwB,QAAQ,KAAKf,cAAcgB,KAAK,SAAUC,aAAa;AAC3D,cAAIA,YAAYC,WAAWhB,OAAO;AAChC,mBAAO;UACT;AACAe,sBAAYH,SAASvB,OAAM;AAC3B,iBAAO;QACT,CAAC;AACDR,QAAAA,QACEgC,OACA,yEACF;MACF;IACF;IAEA,IAAII,yBAAyB;AAC3B,aAAO,KAAKpB,oBAAoBqB,WAAW;IAC7C;IAEAZ,YAAYa,KAAK;AACf,UAAIA,IAAId,UAAUM,QAAW;AAE3B,aAAKb,cAAc,CAAC,GAAGsB,aAAa;UAAEhB,QAAQe,IAAIf;QAAO,CAAC;MAC5D,OAAO;AACL,aAAKP,oBAAoBuB,aAAa;UACpChB,QAAQe,IAAIf;UACZC,OAAOc,IAAId;QACb,CAAC;MACH;IACF;IAEAI,qBAAqB;AACnB,WAAKZ,oBAAoBb,gBAAgB;AACzC,WAAKG,mBAAmB;IAC1B;IAEAkC,mBAAmBC,QAAQ;AACzB,YAAMC,KAAI,KAAKzB,cAAc0B,QAAQF,MAAM;AAC3C,UAAIC,MAAK,GAAG;AACV,aAAKzB,cAAc2B,OAAOF,IAAG,CAAC;MAChC;IACF;IAEAG,gBAAgB;AACd7C,MAAAA,QACE,CAAC,KAAKgB,oBACN,+DACF;AACA,YAAM8B,eAAe,KAAKzC;AAC1B,WAAKA,gBAAgB;AACrB,aAAO,IAAI0C,6BACT,MACAD,cACA,KAAKxC,kBACL,KAAKC,2BACP;IACF;IAEAyC,eAAe7B,OAAO8B,KAAK;AACzB,UAAIA,OAAO,KAAKb,wBAAwB;AACtC,eAAO;MACT;AACA,YAAMK,SAAS,IAAIS,kCAAkC,MAAM/B,OAAO8B,GAAG;AACrE,WAAKrC,uBAAuBuC,iBAAiBhC,OAAO8B,GAAG;AACvD,WAAKhC,cAAcN,KAAK8B,MAAM;AAC9B,aAAOA;IACT;IAEAW,kBAAkBC,QAAQ;AACxB,WAAKrC,oBAAoBsC,OAAOD,MAAM;AAEtC,iBAAWZ,UAAU,KAAKxB,cAAcsC,MAAM,CAAC,GAAG;AAChDd,eAAOa,OAAOD,MAAM;MACtB;AACA,WAAKzC,uBAAuB4C,MAAM;IACpC;EACF;AAGA,MAAMT,+BAAN,MAAmC;IACjCnD,YACE6D,SACAX,cACA3C,kBAAkB,OAClBC,6BAA6B,MAC7B;AACA,WAAKsD,UAAUD;AACf,WAAKE,QAAQxD,mBAAmB;AAChC,WAAKyD,YAAYC,UAAUzD,0BAA0B,IACjDA,6BACA;AACJ,WAAKC,gBAAgByC,gBAAgB,CAAA;AACrC,WAAKT,UAAU;AACf,iBAAWjB,SAAS,KAAKf,eAAe;AACtC,aAAKgC,WAAWjB,MAAMV;MACxB;AACA,WAAKoD,YAAY,CAAA;AACjB,WAAKC,gBAAgBC,QAAQC,QAAQ;AACrCR,MAAAA,QAAOzC,qBAAqB;AAE5B,WAAKuB,aAAa;IACpB;IAEAR,SAASX,OAAO;AACd,UAAI,KAAKuC,OAAO;AACd;MACF;AACA,UAAI,KAAKG,UAAU7D,SAAS,GAAG;AAC7B,cAAMiE,oBAAoB,KAAKJ,UAAUK,MAAM;AAC/CD,0BAAkBD,QAAQ;UAAEG,OAAOhD;UAAOiD,MAAM;QAAM,CAAC;MACzD,OAAO;AACL,aAAKhE,cAAcM,KAAKS,KAAK;MAC/B;AACA,WAAKiB,WAAWjB,MAAMV;IACxB;IAEA,IAAI4D,eAAe;AACjB,aAAO,KAAKP;IACd;IAEA,IAAIQ,WAAW;AACb,aAAO,KAAKX;IACd;IAEA,IAAIY,mBAAmB;AACrB,aAAO,KAAKd,QAAQ5C;IACtB;IAEA,IAAI2D,uBAAuB;AACzB,aAAO,KAAKf,QAAQ7C;IACtB;IAEA,IAAI6D,gBAAgB;AAClB,aAAO,KAAKhB,QAAQ3C;IACtB;IAEA,MAAM4D,OAAO;AACX,UAAI,KAAKtE,cAAcJ,SAAS,GAAG;AACjC,cAAMmB,QAAQ,KAAKf,cAAc8D,MAAM;AACvC,eAAO;UAAEC,OAAOhD;UAAOiD,MAAM;QAAM;MACrC;AACA,UAAI,KAAKV,OAAO;AACd,eAAO;UAAES,OAAOtC;UAAWuC,MAAM;QAAK;MACxC;AACA,YAAMH,oBAAoBF,QAAQY,cAAc;AAChD,WAAKd,UAAUnD,KAAKuD,iBAAiB;AACrC,aAAOA,kBAAkBW;IAC3B;IAEAvB,OAAOD,QAAQ;AACb,WAAKM,QAAQ;AACb,iBAAWO,qBAAqB,KAAKJ,WAAW;AAC9CI,0BAAkBD,QAAQ;UAAEG,OAAOtC;UAAWuC,MAAM;QAAK,CAAC;MAC5D;AACA,WAAKP,UAAU7D,SAAS;IAC1B;IAEAE,kBAAkB;AAChB,UAAI,KAAKwD,OAAO;AACd;MACF;AACA,WAAKA,QAAQ;IACf;EACF;AAGA,MAAMT,oCAAN,MAAwC;IACtCtD,YAAY6D,SAAQtC,OAAO8B,KAAK;AAC9B,WAAKS,UAAUD;AACf,WAAKtB,SAAShB;AACd,WAAK2D,OAAO7B;AACZ,WAAK8B,eAAe;AACpB,WAAKjB,YAAY,CAAA;AACjB,WAAKH,QAAQ;AAEb,WAAKpB,aAAa;IACpB;IAEAR,SAASX,OAAO;AACd,UAAI,KAAKuC,OAAO;AACd;MACF;AACA,UAAI,KAAKG,UAAU7D,WAAW,GAAG;AAC/B,aAAK8E,eAAe3D;MACtB,OAAO;AACL,cAAM4D,qBAAqB,KAAKlB,UAAUK,MAAM;AAChDa,2BAAmBf,QAAQ;UAAEG,OAAOhD;UAAOiD,MAAM;QAAM,CAAC;AACxD,mBAAWH,qBAAqB,KAAKJ,WAAW;AAC9CI,4BAAkBD,QAAQ;YAAEG,OAAOtC;YAAWuC,MAAM;UAAK,CAAC;QAC5D;AACA,aAAKP,UAAU7D,SAAS;MAC1B;AACA,WAAK0D,QAAQ;AACb,WAAKD,QAAQlB,mBAAmB,IAAI;IACtC;IAEA,IAAIiC,uBAAuB;AACzB,aAAO;IACT;IAEA,MAAME,OAAO;AACX,UAAI,KAAKI,cAAc;AACrB,cAAM3D,QAAQ,KAAK2D;AACnB,aAAKA,eAAe;AACpB,eAAO;UAAEX,OAAOhD;UAAOiD,MAAM;QAAM;MACrC;AACA,UAAI,KAAKV,OAAO;AACd,eAAO;UAAES,OAAOtC;UAAWuC,MAAM;QAAK;MACxC;AACA,YAAMH,oBAAoBF,QAAQY,cAAc;AAChD,WAAKd,UAAUnD,KAAKuD,iBAAiB;AACrC,aAAOA,kBAAkBW;IAC3B;IAEAvB,OAAOD,QAAQ;AACb,WAAKM,QAAQ;AACb,iBAAWO,qBAAqB,KAAKJ,WAAW;AAC9CI,0BAAkBD,QAAQ;UAAEG,OAAOtC;UAAWuC,MAAM;QAAK,CAAC;MAC5D;AACA,WAAKP,UAAU7D,SAAS;AACxB,WAAKyD,QAAQlB,mBAAmB,IAAI;IACtC;EACF;AC7RA,WAASyC,wCAAwCC,oBAAoB;AACnE,QAAIC,qBAAqB;AAGzB,QAAIC,MAAMC,cAAc,eAAe,GAAG,EAAEC,KAAKJ,kBAAkB;AACnE,QAAIE,KAAK;AACPA,YAAMA,IAAI,CAAC;AACX,UAAIG,WAAWC,eAAeJ,GAAG;AACjCG,iBAAWE,SAASF,QAAQ;AAC5BA,iBAAWG,cAAcH,QAAQ;AACjCA,iBAAWI,cAAcJ,QAAQ;AACjC,aAAOK,cAAcL,QAAQ;IAC/B;AAKAH,UAAMS,gBAAgBX,kBAAkB;AACxC,QAAIE,KAAK;AAEP,YAAMG,WAAWI,cAAcP,GAAG;AAClC,aAAOQ,cAAcL,QAAQ;IAC/B;AAGAH,UAAMC,cAAc,YAAY,GAAG,EAAEC,KAAKJ,kBAAkB;AAC5D,QAAIE,KAAK;AACPA,YAAMA,IAAI,CAAC;AACX,UAAIG,WAAWC,eAAeJ,GAAG;AACjCG,iBAAWI,cAAcJ,QAAQ;AACjC,aAAOK,cAAcL,QAAQ;IAC/B;AAKA,aAASF,cAAcS,kBAAkBC,OAAO;AAC9C,aAAO,IAAIC,OACT,gBACEF,mBACA,uDAQFC,KACF;IACF;AACA,aAASE,WAAWC,UAAUC,OAAO;AACnC,UAAID,UAAU;AACZ,YAAI,CAAC,iBAAiBE,KAAKD,KAAK,GAAG;AACjC,iBAAOA;QACT;AACA,YAAI;AACF,gBAAME,UAAU,IAAIC,YAAYJ,UAAU;YAAEK,OAAO;UAAK,CAAC;AACzD,gBAAMC,UAASC,cAAcN,KAAK;AAClCA,kBAAQE,QAAQK,OAAOF,OAAM;AAC7BrB,+BAAqB;QACvB,QAAQ;QAER;MACF;AACA,aAAOgB;IACT;AACA,aAASP,cAAcO,OAAO;AAC5B,UAAIhB,sBAAsB,cAAciB,KAAKD,KAAK,GAAG;AAEnDA,gBAAQF,WAAW,SAASE,KAAK;AACjC,YAAIhB,oBAAoB;AAEtBgB,kBAAQF,WAAW,cAAcE,KAAK;QACxC;MACF;AACA,aAAOA;IACT;AACA,aAASN,gBAAgBc,uBAAuB;AAC9C,YAAMC,WAAU,CAAA;AAChB,UAAIC;AAGJ,YAAMC,OAAOzB,cAAc,mCAAmC,IAAI;AAClE,cAAQwB,SAAQC,KAAKxB,KAAKqB,qBAAqB,OAAO,MAAM;AAC1D,YAAI,CAAA,EAAGI,IAAGC,MAAMC,IAAI,IAAIJ;AACxBE,QAAAA,KAAIG,SAASH,IAAG,EAAE;AAClB,YAAIA,MAAKH,UAAS;AAEhB,cAAIG,OAAM,GAAG;AACX;UACF;AACA;QACF;AACAH,QAAAA,SAAQG,EAAC,IAAI,CAACC,MAAMC,IAAI;MAC1B;AACA,YAAME,QAAQ,CAAA;AACd,eAASJ,KAAI,GAAGA,KAAIH,SAAQQ,QAAQ,EAAEL,IAAG;AACvC,YAAI,EAAEA,MAAKH,WAAU;AAEnB;QACF;AACA,YAAI,CAACI,MAAMC,IAAI,IAAIL,SAAQG,EAAC;AAC5BE,eAAOzB,eAAeyB,IAAI;AAC1B,YAAID,MAAM;AACRC,iBAAOxB,SAASwB,IAAI;AACpB,cAAIF,OAAM,GAAG;AACXE,mBAAOvB,cAAcuB,IAAI;UAC3B;QACF;AACAE,cAAME,KAAKJ,IAAI;MACjB;AACA,aAAOE,MAAMG,KAAK,EAAE;IACtB;AACA,aAAS9B,eAAeW,OAAO;AAC7B,UAAIA,MAAMoB,WAAW,GAAG,GAAG;AACzB,cAAMJ,QAAQhB,MAAMqB,MAAM,CAAC,EAAEC,MAAM,KAAK;AAExC,iBAASC,KAAI,GAAGA,KAAIP,MAAMC,QAAQ,EAAEM,IAAG;AACrC,gBAAMC,YAAYR,MAAMO,EAAC,EAAEE,QAAQ,GAAG;AACtC,cAAID,cAAc,IAAI;AACpBR,kBAAMO,EAAC,IAAIP,MAAMO,EAAC,EAAEF,MAAM,GAAGG,SAAS;AACtCR,kBAAMC,SAASM,KAAI;UACrB;AACAP,gBAAMO,EAAC,IAAIP,MAAMO,EAAC,EAAEG,WAAW,UAAU,IAAI;QAC/C;AACA1B,gBAAQgB,MAAMG,KAAK,GAAG;MACxB;AACA,aAAOnB;IACT;AACA,aAAST,cAAcoC,UAAU;AAE/B,YAAMC,cAAcD,SAASF,QAAQ,GAAG;AACxC,UAAIG,gBAAgB,IAAI;AAItB,eAAOD;MACT;AACA,YAAM5B,WAAW4B,SAASN,MAAM,GAAGO,WAAW;AAC9C,YAAMC,YAAYF,SAASN,MAAMO,cAAc,CAAC;AAEhD,YAAM5B,QAAQ6B,UAAUC,QAAQ,WAAW,EAAE;AAC7C,aAAOhC,WAAWC,UAAUC,KAAK;IACnC;AACA,aAASR,cAAcQ,OAAO;AAW5B,UAAI,CAACA,MAAMoB,WAAW,IAAI,KAAK,uBAAuBnB,KAAKD,KAAK,GAAG;AACjE,eAAOA;MACT;AAQA,aAAOA,MAAM0B,WACX,kDACA,SAAUjB,UAASsB,SAAShC,UAAUiC,MAAM;AAC1C,YAAIjC,aAAa,OAAOA,aAAa,KAAK;AAExCiC,iBAAOA,KAAKN,WAAW,KAAK,GAAG;AAC/BM,iBAAOA,KAAKN,WAAW,sBAAsB,SAAUhB,QAAOuB,MAAK;AACjE,mBAAOC,OAAOC,aAAapB,SAASkB,MAAK,EAAE,CAAC;UAC9C,CAAC;AACD,iBAAOnC,WAAWiC,SAASC,IAAI;QACjC;AACA,YAAI;AACFA,iBAAOI,KAAKJ,IAAI;QAClB,QAAQ;QAAC;AACT,eAAOlC,WAAWiC,SAASC,IAAI;MACjC,CACF;IACF;AAEA,WAAO;EACT;ACrMA,WAASK,cAAcC,QAAQC,aAAa;AAC1C,UAAMC,UAAU,IAAIC,QAAQ;AAE5B,QAAI,CAACH,UAAU,CAACC,eAAe,OAAOA,gBAAgB,UAAU;AAC9D,aAAOC;IACT;AACA,eAAWE,OAAOH,aAAa;AAC7B,YAAMI,MAAMJ,YAAYG,GAAG;AAC3B,UAAIC,QAAQC,QAAW;AACrBJ,gBAAQK,OAAOH,KAAKC,GAAG;MACzB;IACF;AACA,WAAOH;EACT;AAEA,WAASM,kBAAkBC,KAAK;AAE9B,WAAOC,IAAIC,MAAMF,GAAG,GAAGG,UAAU;EACnC;AAEA,WAASC,iCAAiC;IACxCC;IACAd;IACAe;IACAC;EACF,GAAG;AAOD,UAAMC,eAAe;MACnBC,oBAAoB;MACpBC,iBAAiBb;IACnB;AAEA,UAAMc,SAASC,SAASP,gBAAgBQ,IAAI,gBAAgB,GAAG,EAAE;AACjE,QAAI,CAACC,OAAOC,UAAUJ,MAAM,GAAG;AAC7B,aAAOH;IACT;AAEAA,iBAAaE,kBAAkBC;AAE/B,QAAIA,UAAU,IAAIL,gBAAgB;AAGhC,aAAOE;IACT;AAEA,QAAID,gBAAgB,CAAChB,QAAQ;AAC3B,aAAOiB;IACT;AACA,QAAIH,gBAAgBQ,IAAI,eAAe,MAAM,SAAS;AACpD,aAAOL;IACT;AAEA,UAAMQ,kBAAkBX,gBAAgBQ,IAAI,kBAAkB,KAAK;AACnE,QAAIG,oBAAoB,YAAY;AAClC,aAAOR;IACT;AAEAA,iBAAaC,qBAAqB;AAClC,WAAOD;EACT;AAEA,WAASS,0BAA0BZ,iBAAiB;AAClD,UAAMa,qBAAqBb,gBAAgBQ,IAAI,qBAAqB;AACpE,QAAIK,oBAAoB;AACtB,UAAIC,WAAWC,wCAAwCF,kBAAkB;AACzE,UAAIC,SAASE,SAAS,GAAG,GAAG;AAC1B,YAAI;AACFF,qBAAWG,mBAAmBH,QAAQ;QACxC,QAAQ;QAAC;MACX;AACA,UAAII,UAAUJ,QAAQ,GAAG;AACvB,eAAOA;MACT;IACF;AACA,WAAO;EACT;AAEA,WAASK,oBAAoBC,QAAQzB,KAAK;AACxC,WAAO,IAAI0B,kBACT,+BAA+BD,MAAM,2BAA2BzB,GAAG,MACnEyB,QACgBA,WAAW,OAAQA,WAAW,KAAKzB,IAAI2B,WAAW,OAAO,CAC3E;EACF;AAEA,WAASC,uBAAuBH,QAAQ;AACtC,WAAOA,WAAW,OAAOA,WAAW;EACtC;AChFA,WAASI,mBAAmBC,SAASC,iBAAiBC,iBAAiB;AACrE,WAAO;MACLC,QAAQ;MACRH;MACAI,QAAQF,gBAAgBE;MACxBC,MAAM;MACNC,aAAaL,kBAAkB,YAAY;MAC3CM,UAAU;IACZ;EACF;AAEA,WAASC,eAAeC,KAAK;AAC3B,QAAIA,eAAeC,YAAY;AAC7B,aAAOD,IAAIE;IACb;AACA,QAAIF,eAAeG,aAAa;AAC9B,aAAOH;IACT;AACAI,SAAK,4CAA4CJ,GAAG,EAAE;AACtD,WAAO,IAAIC,WAAWD,GAAG,EAAEE;EAC7B;AAGA,MAAMG,iBAAN,MAAqB;IACnBC,kBAAkB;IAElBC,YAAYC,QAAQ;AAClB,WAAKA,SAASA;AACd,WAAKC,SAAS,YAAYC,KAAKF,OAAOG,GAAG;AACzC,WAAKpB,UAAUqB,cAAc,KAAKH,QAAQD,OAAOK,WAAW;AAE5D,WAAKC,qBAAqB;AAC1B,WAAKC,uBAAuB,CAAA;IAC9B;IAEA,IAAIC,yBAAyB;AAC3B,aAAO,KAAKF,oBAAoBG,WAAW;IAC7C;IAEAC,gBAAgB;AACdC,MAAAA,QACE,CAAC,KAAKL,oBACN,uDACF;AACA,WAAKA,qBAAqB,IAAIM,qBAAqB,IAAI;AACvD,aAAO,KAAKN;IACd;IAEAO,eAAeC,OAAOC,KAAK;AACzB,UAAIA,OAAO,KAAKP,wBAAwB;AACtC,eAAO;MACT;AACA,YAAMQ,SAAS,IAAIC,0BAA0B,MAAMH,OAAOC,GAAG;AAC7D,WAAKR,qBAAqBW,KAAKF,MAAM;AACrC,aAAOA;IACT;IAEAG,kBAAkBC,QAAQ;AACxB,WAAKd,oBAAoBe,OAAOD,MAAM;AAEtC,iBAAWJ,UAAU,KAAKT,qBAAqBe,MAAM,CAAC,GAAG;AACvDN,eAAOK,OAAOD,MAAM;MACtB;IACF;EACF;AAGA,MAAMR,uBAAN,MAA2B;IACzBb,YAAYwB,SAAQ;AAClB,WAAKC,UAAUD;AACf,WAAKE,UAAU;AACf,WAAKhB,UAAU;AACf,WAAKiB,YAAY;AACjB,YAAM1B,SAASuB,QAAOvB;AACtB,WAAK2B,mBAAmB3B,OAAOhB,mBAAmB;AAClD,WAAK4C,iBAAiB5B,OAAO6B;AAC7B,WAAKC,qBAAqBC,QAAQC,cAAc;AAChD,WAAKC,gBAAgBjC,OAAOkC,gBAAgB;AAC5C,WAAKC,kBAAkBnC,OAAOoC;AAC9B,UAAI,CAAC,KAAKD,mBAAmB,CAAC,KAAKF,eAAe;AAChD,aAAKA,gBAAgB;MACvB;AAEA,WAAKI,mBAAmB,IAAIC,gBAAgB;AAC5C,WAAKC,wBAAwB,CAACvC,OAAOwC;AACrC,WAAKC,oBAAoB,CAACzC,OAAOkC;AAEjC,YAAMnD,UAAU,IAAI2D,QAAQnB,QAAOxC,OAAO;AAE1C,YAAMoB,MAAMH,OAAOG;AACnBwC,YACExC,KACArB,mBAAmBC,SAAS,KAAK4C,kBAAkB,KAAKU,gBAAgB,CAC1E,EACGO,KAAKC,cAAY;AAChBtB,QAAAA,QAAOzB,kBAAkBgD,kBAAkBD,SAAS1C,GAAG;AAEvD,YAAI,CAAC4C,uBAAuBF,SAASG,MAAM,GAAG;AAC5C,gBAAMC,oBAAoBJ,SAASG,QAAQ7C,GAAG;QAChD;AACA,aAAKsB,UAAUoB,SAASK,KAAKC,UAAU;AACvC,aAAKrB,mBAAmBsB,QAAQ;AAEhC,cAAMC,kBAAkBR,SAAS9D;AAEjC,cAAM;UAAEuE;UAAoBC;QAAgB,IAC1CC,iCAAiC;UAC/BH;UACApD,QAAQsB,QAAOtB;UACfmC,gBAAgB,KAAKD;UACrBD,cAAc,KAAKD;QACrB,CAAC;AAEH,aAAKQ,oBAAoBa;AAEzB,aAAK1B,iBAAiB2B,mBAAmB,KAAK3B;AAE9C,aAAKF,YAAY+B,0BAA0BJ,eAAe;AAI1D,YAAI,CAAC,KAAKd,yBAAyB,KAAKE,mBAAmB;AACzD,eAAKpB,OAAO,IAAIqC,eAAe,wBAAwB,CAAC;QAC1D;MACF,CAAC,EACAC,MAAM,KAAK7B,mBAAmB8B,MAAM;AAEvC,WAAKC,aAAa;IACpB;IAEA,IAAIC,eAAe;AACjB,aAAO,KAAKhC,mBAAmBiC;IACjC;IAEA,IAAIC,WAAW;AACb,aAAO,KAAKtC;IACd;IAEA,IAAIuC,gBAAgB;AAClB,aAAO,KAAKrC;IACd;IAEA,IAAIsC,mBAAmB;AACrB,aAAO,KAAKzB;IACd;IAEA,IAAI0B,uBAAuB;AACzB,aAAO,KAAK5B;IACd;IAEA,MAAM6B,OAAO;AACX,YAAM,KAAKtC,mBAAmBiC;AAC9B,YAAM;QAAEM;QAAOC;MAAK,IAAI,MAAM,KAAK7C,QAAQ2C,KAAK;AAChD,UAAIE,MAAM;AACR,eAAO;UAAED;UAAOC;QAAK;MACvB;AACA,WAAK7D,WAAW4D,MAAME;AACtB,WAAKV,aAAa;QAChBW,QAAQ,KAAK/D;QACbgE,OAAO,KAAK7C;MACd,CAAC;AAED,aAAO;QAAEyC,OAAO9E,eAAe8E,KAAK;QAAGC,MAAM;MAAM;IACrD;IAEAjD,OAAOD,QAAQ;AACb,WAAKK,SAASJ,OAAOD,MAAM;AAC3B,WAAKiB,iBAAiBqC,MAAM;IAC9B;EACF;AAGA,MAAMzD,4BAAN,MAAgC;IAC9BlB,YAAYwB,SAAQT,OAAOC,KAAK;AAC9B,WAAKS,UAAUD;AACf,WAAKE,UAAU;AACf,WAAKhB,UAAU;AACf,YAAMT,SAASuB,QAAOvB;AACtB,WAAK2B,mBAAmB3B,OAAOhB,mBAAmB;AAClD,WAAK2F,kBAAkB5C,QAAQC,cAAc;AAC7C,WAAKO,wBAAwB,CAACvC,OAAOwC;AAErC,WAAKH,mBAAmB,IAAIC,gBAAgB;AAE5C,YAAMvD,UAAU,IAAI2D,QAAQnB,QAAOxC,OAAO;AAC1CA,cAAQ6F,OAAO,SAAS,SAAS9D,KAAK,IAAIC,MAAM,CAAC,EAAE;AAEnD,YAAMZ,MAAMH,OAAOG;AACnBwC,YACExC,KACArB,mBAAmBC,SAAS,KAAK4C,kBAAkB,KAAKU,gBAAgB,CAC1E,EACGO,KAAKC,cAAY;AAChB,cAAMgC,iBAAiB/B,kBAAkBD,SAAS1C,GAAG;AAErD,YAAI0E,mBAAmBtD,QAAOzB,iBAAiB;AAC7C,gBAAM,IAAIgF,MACR,mCAAmCD,cAAc,eAAetD,QAAOzB,eAAe,IACxF;QACF;AACA,YAAI,CAACiD,uBAAuBF,SAASG,MAAM,GAAG;AAC5C,gBAAMC,oBAAoBJ,SAASG,QAAQ7C,GAAG;QAChD;AACA,aAAKwE,gBAAgBvB,QAAQ;AAC7B,aAAK3B,UAAUoB,SAASK,KAAKC,UAAU;MACzC,CAAC,EACAQ,MAAM,KAAKgB,gBAAgBf,MAAM;AAEpC,WAAKC,aAAa;IACpB;IAEA,IAAIM,uBAAuB;AACzB,aAAO,KAAK5B;IACd;IAEA,MAAM6B,OAAO;AACX,YAAM,KAAKO,gBAAgBZ;AAC3B,YAAM;QAAEM;QAAOC;MAAK,IAAI,MAAM,KAAK7C,QAAQ2C,KAAK;AAChD,UAAIE,MAAM;AACR,eAAO;UAAED;UAAOC;QAAK;MACvB;AACA,WAAK7D,WAAW4D,MAAME;AACtB,WAAKV,aAAa;QAAEW,QAAQ,KAAK/D;MAAQ,CAAC;AAE1C,aAAO;QAAE4D,OAAO9E,eAAe8E,KAAK;QAAGC,MAAM;MAAM;IACrD;IAEAjD,OAAOD,QAAQ;AACb,WAAKK,SAASJ,OAAOD,MAAM;AAC3B,WAAKiB,iBAAiBqC,MAAM;IAC9B;EACF;ACxOA,MAAMK,cAAc;AACpB,MAAMC,2BAA2B;AAEjC,WAASC,uBAAeC,KAAK;AAC3B,UAAMC,OAAOD,IAAIE;AACjB,QAAI,OAAOD,SAAS,UAAU;AAC5B,aAAOA;IACT;AACA,WAAOE,cAAcF,IAAI,EAAEG;EAC7B;AAEA,MAAMC,iBAAN,MAAqB;IACnBC,kBAAkB;IAElBC,YAAY;MAAEC;MAAKC;MAAaC;IAAgB,GAAG;AACjD,WAAKF,MAAMA;AACX,WAAKG,SAAS,YAAYC,KAAKJ,GAAG;AAClC,WAAKK,UAAUC,cAAc,KAAKH,QAAQF,WAAW;AACrD,WAAKC,kBAAkBA,mBAAmB;AAE1C,WAAKK,YAAY;AACjB,WAAKC,kBAAkBC,uBAAOC,OAAO,IAAI;IAC3C;IAEAC,QAAQC,MAAM;AACZ,YAAMpB,MAAM,IAAIqB,eAAe;AAC/B,YAAMC,QAAQ,KAAKP;AACnB,YAAMQ,iBAAkB,KAAKP,gBAAgBM,KAAK,IAAI;QAAEtB;MAAI;AAE5DA,UAAIwB,KAAK,OAAO,KAAKhB,GAAG;AACxBR,UAAIU,kBAAkB,KAAKA;AAC3B,iBAAW,CAACe,KAAKC,GAAG,KAAK,KAAKb,SAAS;AACrCb,YAAI2B,iBAAiBF,KAAKC,GAAG;MAC/B;AACA,UAAI,KAAKf,UAAU,WAAWS,QAAQ,SAASA,MAAM;AACnDpB,YAAI2B,iBAAiB,SAAS,SAASP,KAAKQ,KAAK,IAAIR,KAAKS,MAAM,CAAC,EAAE;AACnEN,uBAAeO,iBAAiBhC;MAClC,OAAO;AACLyB,uBAAeO,iBAAiBjC;MAClC;AACAG,UAAI+B,eAAe;AAEnBC,MAAAA,QAAOZ,KAAKa,SAAS,6CAA6C;AAClEjC,UAAIkC,UAAU,MAAM;AAClBd,aAAKa,QAAQjC,IAAImC,MAAM;MACzB;AACAnC,UAAIoC,qBAAqB,KAAKC,cAAcC,KAAK,MAAMhB,KAAK;AAC5DtB,UAAIuC,aAAa,KAAKC,WAAWF,KAAK,MAAMhB,KAAK;AAEjDC,qBAAekB,oBAAoBrB,KAAKqB;AACxClB,qBAAemB,SAAStB,KAAKsB;AAC7BnB,qBAAeU,UAAUb,KAAKa;AAC9BV,qBAAeiB,aAAapB,KAAKoB;AAEjCxC,UAAI2C,KAAK,IAAI;AAEb,aAAOrB;IACT;IAEAkB,WAAWlB,OAAOsB,KAAK;AACrB,YAAMrB,iBAAiB,KAAKP,gBAAgBM,KAAK;AACjD,UAAI,CAACC,gBAAgB;AACnB;MACF;AACAA,qBAAeiB,aAAaI,GAAG;IACjC;IAEAP,cAAcf,OAAOsB,KAAK;AACxB,YAAMrB,iBAAiB,KAAKP,gBAAgBM,KAAK;AACjD,UAAI,CAACC,gBAAgB;AACnB;MACF;AAEA,YAAMvB,MAAMuB,eAAevB;AAC3B,UAAIA,IAAI6C,cAAc,KAAKtB,eAAekB,mBAAmB;AAC3DlB,uBAAekB,kBAAkB;AACjC,eAAOlB,eAAekB;MACxB;AAEA,UAAIzC,IAAI6C,eAAe,GAAG;AACxB;MACF;AAEA,UAAI,EAAEvB,SAAS,KAAKN,kBAAkB;AAGpC;MACF;AAEA,aAAO,KAAKA,gBAAgBM,KAAK;AAGjC,UAAItB,IAAImC,WAAW,KAAK,KAAKxB,QAAQ;AACnCY,uBAAeU,QAAQjC,IAAImC,MAAM;AACjC;MACF;AACA,YAAMW,YAAY9C,IAAImC,UAAUtC;AAKhC,YAAMkD,+BACJD,cAAcjD,eACd0B,eAAeO,mBAAmBhC;AAEpC,UACE,CAACiD,gCACDD,cAAcvB,eAAeO,gBAC7B;AACAP,uBAAeU,QAAQjC,IAAImC,MAAM;AACjC;MACF;AAEA,YAAMa,QAAQjD,uBAAeC,GAAG;AAChC,UAAI8C,cAAchD,0BAA0B;AAC1C,cAAMmD,cAAcjD,IAAIkD,kBAAkB,eAAe;AACzD,cAAMC,WAAU,2BAA2BC,KAAKH,WAAW;AAC3D,YAAIE,UAAS;AACX5B,yBAAemB,OAAO;YACpBd,OAAOyB,SAASF,SAAQ,CAAC,GAAG,EAAE;YAC9BH;UACF,CAAC;QACH,OAAO;AACLM,eAAK,4CAA4C;AACjD/B,yBAAeU,QAAQ,CAAC;QAC1B;MACF,WAAWe,OAAO;AAChBzB,uBAAemB,OAAO;UACpBd,OAAO;UACPoB;QACF,CAAC;MACH,OAAO;AACLzB,uBAAeU,QAAQjC,IAAImC,MAAM;MACnC;IACF;IAEAoB,cAAcjC,OAAO;AACnB,aAAO,KAAKN,gBAAgBM,KAAK,EAAEtB;IACrC;IAEAwD,iBAAiBlC,OAAO;AACtB,aAAOA,SAAS,KAAKN;IACvB;IAEAyC,aAAanC,OAAO;AAClB,YAAMtB,MAAM,KAAKgB,gBAAgBM,KAAK,EAAEtB;AACxC,aAAO,KAAKgB,gBAAgBM,KAAK;AACjCtB,UAAI0D,MAAM;IACZ;EACF;AAGA,MAAMC,mBAAN,MAAuB;IACrBpD,YAAYqD,QAAQ;AAClB,WAAKC,UAAUD;AACf,WAAKE,WAAW,IAAIzD,eAAeuD,MAAM;AACzC,WAAKG,kBAAkBH,OAAOI;AAC9B,WAAKC,qBAAqB;AAC1B,WAAKC,uBAAuB,CAAA;IAC9B;IAEAC,4BAA4BC,QAAQ;AAClC,YAAMC,KAAI,KAAKH,qBAAqBI,QAAQF,MAAM;AAClD,UAAIC,MAAK,GAAG;AACV,aAAKH,qBAAqBK,OAAOF,IAAG,CAAC;MACvC;IACF;IAEAG,gBAAgB;AACdxC,MAAAA,QACE,CAAC,KAAKiC,oBACN,yDACF;AACA,WAAKA,qBAAqB,IAAIQ,kCAC5B,KAAKX,UACL,KAAKD,OACP;AACA,aAAO,KAAKI;IACd;IAEAS,eAAe9C,OAAOC,KAAK;AACzB,YAAMuC,SAAS,IAAIO,mCACjB,KAAKb,UACLlC,OACAC,GACF;AACAuC,aAAOQ,WAAW,KAAKT,4BAA4B7B,KAAK,IAAI;AAC5D,WAAK4B,qBAAqBW,KAAKT,MAAM;AACrC,aAAOA;IACT;IAEAU,kBAAkBC,QAAQ;AACxB,WAAKd,oBAAoBe,OAAOD,MAAM;AAEtC,iBAAWX,UAAU,KAAKF,qBAAqBe,MAAM,CAAC,GAAG;AACvDb,eAAOY,OAAOD,MAAM;MACtB;IACF;EACF;AAGA,MAAMN,oCAAN,MAAwC;IACtClE,YAAY2E,SAAStB,QAAQ;AAC3B,WAAKE,WAAWoB;AAEhB,WAAKC,OAAOvB,OAAOpD;AACnB,WAAK4E,iBAAiBF,QAAQ/D,QAAQ;QACpCsB,mBAAmB,KAAK4C,mBAAmB/C,KAAK,IAAI;QACpDI,QAAQ,KAAK4C,QAAQhD,KAAK,IAAI;QAC9BL,SAAS,KAAKsD,SAASjD,KAAK,IAAI;QAChCE,YAAY,KAAKgD,YAAYlD,KAAK,IAAI;MACxC,CAAC;AACD,WAAKmD,qBAAqBC,QAAQC,cAAc;AAChD,WAAKC,gBAAgBhC,OAAOiC,gBAAgB;AAC5C,WAAKC,iBAAiBlC,OAAOmC;AAC7B,WAAKhC,kBAAkBH,OAAOI;AAC9B,UAAI,CAAC,KAAKD,mBAAmB,CAAC,KAAK6B,eAAe;AAChD,aAAKA,gBAAgB;MACvB;AAEA,WAAKI,wBAAwB;AAC7B,WAAKC,oBAAoB;AAEzB,WAAKC,gBAAgB,CAAA;AACrB,WAAKC,YAAY,CAAA;AACjB,WAAKC,QAAQ;AACb,WAAKC,eAAeC;AACpB,WAAKC,YAAY;AAEjB,WAAK/D,aAAa;IACpB;IAEA6C,qBAAqB;AACnB,YAAMmB,mBAAmB,KAAKpB;AAC9B,YAAMqB,iBAAiB,KAAK3C,SAASP,cAAciD,gBAAgB;AAEnE,WAAK1C,SAASxD,kBAAkBoG,kBAC9BD,eAAeE,WACjB;AAEA,YAAMC,qBAAqBH,eAAeI,sBAAsB;AAChE,YAAMC,kBAAkB,IAAIC,QAC1BH,qBACIA,mBACGI,UAAU,EACVC,QAAQ,YAAY,EAAE,EACtBC,MAAM,SAAS,EACfC,IAAIC,CAAAA,OAAK;AACR,cAAM,CAAC3F,KAAK,GAAGC,GAAG,IAAI0F,GAAEF,MAAM,IAAI;AAClC,eAAO,CAACzF,KAAKC,IAAI2F,KAAK,IAAI,CAAC;MAC7B,CAAC,IACH,CAAA,CACN;AAEA,YAAM;QAAEC;QAAoBC;MAAgB,IAC1CC,iCAAiC;QAC/BV;QACAnG,QAAQ,KAAKmD,SAASnD;QACtBqD,gBAAgB,KAAKD;QACrB8B,cAAc,KAAKD;MACrB,CAAC;AAEH,UAAI0B,oBAAoB;AACtB,aAAKrB,oBAAoB;MAC3B;AAEA,WAAKH,iBAAiByB,mBAAmB,KAAKzB;AAE9C,WAAKS,YAAYkB,0BAA0BX,eAAe;AAE1D,UAAI,KAAKb,mBAAmB;AAK1B,aAAKnC,SAASL,aAAa+C,gBAAgB;MAC7C;AAEA,WAAKf,mBAAmBiC,QAAQ;IAClC;IAEApC,QAAQrF,MAAM;AACZ,UAAIA,MAAM;AACR,YAAI,KAAKkG,UAAUJ,SAAS,GAAG;AAC7B,gBAAM4B,oBAAoB,KAAKxB,UAAUyB,MAAM;AAC/CD,4BAAkBD,QAAQ;YAAEG,OAAO5H,KAAK+C;YAAO8E,MAAM;UAAM,CAAC;QAC9D,OAAO;AACL,eAAK5B,cAAcrB,KAAK5E,KAAK+C,KAAK;QACpC;MACF;AACA,WAAKoD,QAAQ;AACb,UAAI,KAAKF,cAAcH,SAAS,GAAG;AACjC;MACF;AACA,iBAAW4B,qBAAqB,KAAKxB,WAAW;AAC9CwB,0BAAkBD,QAAQ;UAAEG,OAAOvB;UAAWwB,MAAM;QAAK,CAAC;MAC5D;AACA,WAAK3B,UAAUJ,SAAS;IAC1B;IAEAR,SAASpD,QAAQ;AACf,WAAKkE,eAAe0B,oBAAoB5F,QAAQ,KAAKgD,IAAI;AACzD,WAAKM,mBAAmBuC,OAAO,KAAK3B,YAAY;AAChD,iBAAWsB,qBAAqB,KAAKxB,WAAW;AAC9CwB,0BAAkBK,OAAO,KAAK3B,YAAY;MAC5C;AACA,WAAKF,UAAUJ,SAAS;AACxB,WAAKG,cAAcH,SAAS;IAC9B;IAEAP,YAAY5C,KAAK;AACf,WAAKJ,aAAa;QAChByF,QAAQrF,IAAIqF;QACZC,OAAOtF,IAAIuF,mBAAmBvF,IAAIsF,QAAQ,KAAKpC;MACjD,CAAC;IACH;IAEA,IAAIsC,WAAW;AACb,aAAO,KAAK7B;IACd;IAEA,IAAI8B,mBAAmB;AACrB,aAAO,KAAKpC;IACd;IAEA,IAAIqC,uBAAuB;AACzB,aAAO,KAAKtC;IACd;IAEA,IAAIuC,gBAAgB;AAClB,aAAO,KAAKzC;IACd;IAEA,IAAI0C,eAAe;AACjB,aAAO,KAAK/C,mBAAmBgD;IACjC;IAEA,MAAMC,OAAO;AACX,YAAM,KAAKjD,mBAAmBgD;AAE9B,UAAI,KAAKpC,cAAc;AACrB,cAAM,KAAKA;MACb;AACA,UAAI,KAAKH,cAAcH,SAAS,GAAG;AACjC,cAAM/C,QAAQ,KAAKkD,cAAc0B,MAAM;AACvC,eAAO;UAAEC,OAAO7E;UAAO8E,MAAM;QAAM;MACrC;AACA,UAAI,KAAK1B,OAAO;AACd,eAAO;UAAEyB,OAAOvB;UAAWwB,MAAM;QAAK;MACxC;AACA,YAAMH,oBAAoBjC,QAAQC,cAAc;AAChD,WAAKQ,UAAUtB,KAAK8C,iBAAiB;AACrC,aAAOA,kBAAkBc;IAC3B;IAEAzD,OAAOD,QAAQ;AACb,WAAKqB,QAAQ;AACb,WAAKX,mBAAmBuC,OAAOjD,MAAM;AACrC,iBAAW4C,qBAAqB,KAAKxB,WAAW;AAC9CwB,0BAAkBD,QAAQ;UAAEG,OAAOvB;UAAWwB,MAAM;QAAK,CAAC;MAC5D;AACA,WAAK3B,UAAUJ,SAAS;AACxB,UAAI,KAAKjC,SAASN,iBAAiB,KAAK4B,cAAc,GAAG;AACvD,aAAKtB,SAASL,aAAa,KAAK2B,cAAc;MAChD;AACA,WAAKnB,qBAAqB;IAC5B;EACF;AAGA,MAAMU,qCAAN,MAAyC;IACvCpE,YAAY2E,SAAStD,OAAOC,KAAK;AAC/B,WAAKiC,WAAWoB;AAEhB,WAAKC,OAAOD,QAAQ1E;AACpB,WAAKmI,aAAazD,QAAQ/D,QAAQ;QAChCS;QACAC;QACAY,mBAAmB,KAAK4C,mBAAmB/C,KAAK,IAAI;QACpDI,QAAQ,KAAK4C,QAAQhD,KAAK,IAAI;QAC9BL,SAAS,KAAKsD,SAASjD,KAAK,IAAI;QAChCE,YAAY,KAAKgD,YAAYlD,KAAK,IAAI;MACxC,CAAC;AACD,WAAK6D,YAAY,CAAA;AACjB,WAAKyC,eAAe;AACpB,WAAKxC,QAAQ;AACb,WAAKC,eAAeC;AAEpB,WAAK9D,aAAa;AAClB,WAAKoC,WAAW;IAClB;IAEAS,qBAAqB;AACnB,YAAMwD,iBAAiBnC,kBACrB,KAAK5C,SAASP,cAAc,KAAKoF,UAAU,GAAGhC,WAChD;AAEA,UAAIkC,mBAAmB,KAAK/E,SAASxD,iBAAiB;AACpD,aAAK+F,eAAe,IAAIyC,MACtB,mCAAmCD,cAAc,eAAe,KAAK/E,SAASxD,eAAe,IAC/F;AACA,aAAKiF,SAAS,CAAC;MACjB;IACF;IAEAwD,SAAS;AACP,WAAKnE,WAAW,IAAI;IACtB;IAEAU,QAAQrF,MAAM;AACZ,YAAM+C,QAAQ/C,KAAK+C;AACnB,UAAI,KAAKmD,UAAUJ,SAAS,GAAG;AAC7B,cAAM4B,oBAAoB,KAAKxB,UAAUyB,MAAM;AAC/CD,0BAAkBD,QAAQ;UAAEG,OAAO7E;UAAO8E,MAAM;QAAM,CAAC;MACzD,OAAO;AACL,aAAKc,eAAe5F;MACtB;AACA,WAAKoD,QAAQ;AACb,iBAAWuB,qBAAqB,KAAKxB,WAAW;AAC9CwB,0BAAkBD,QAAQ;UAAEG,OAAOvB;UAAWwB,MAAM;QAAK,CAAC;MAC5D;AACA,WAAK3B,UAAUJ,SAAS;AACxB,WAAKgD,OAAO;IACd;IAEAxD,SAASpD,QAAQ;AACf,WAAKkE,iBAAiB0B,oBAAoB5F,QAAQ,KAAKgD,IAAI;AAC3D,iBAAWwC,qBAAqB,KAAKxB,WAAW;AAC9CwB,0BAAkBK,OAAO,KAAK3B,YAAY;MAC5C;AACA,WAAKF,UAAUJ,SAAS;AACxB,WAAK6C,eAAe;IACtB;IAEApD,YAAY5C,KAAK;AACf,UAAI,CAAC,KAAK0F,sBAAsB;AAC9B,aAAK9F,aAAa;UAAEyF,QAAQrF,IAAIqF;QAAO,CAAC;MAC1C;IACF;IAEA,IAAIK,uBAAuB;AACzB,aAAO;IACT;IAEA,MAAMI,OAAO;AACX,UAAI,KAAKrC,cAAc;AACrB,cAAM,KAAKA;MACb;AACA,UAAI,KAAKuC,iBAAiB,MAAM;AAC9B,cAAM5F,QAAQ,KAAK4F;AACnB,aAAKA,eAAe;AACpB,eAAO;UAAEf,OAAO7E;UAAO8E,MAAM;QAAM;MACrC;AACA,UAAI,KAAK1B,OAAO;AACd,eAAO;UAAEyB,OAAOvB;UAAWwB,MAAM;QAAK;MACxC;AACA,YAAMH,oBAAoBjC,QAAQC,cAAc;AAChD,WAAKQ,UAAUtB,KAAK8C,iBAAiB;AACrC,aAAOA,kBAAkBc;IAC3B;IAEAzD,OAAOD,QAAQ;AACb,WAAKqB,QAAQ;AACb,iBAAWuB,qBAAqB,KAAKxB,WAAW;AAC9CwB,0BAAkBD,QAAQ;UAAEG,OAAOvB;UAAWwB,MAAM;QAAK,CAAC;MAC5D;AACA,WAAK3B,UAAUJ,SAAS;AACxB,UAAI,KAAKjC,SAASN,iBAAiB,KAAKmF,UAAU,GAAG;AACnD,aAAK7E,SAASL,aAAa,KAAKkF,UAAU;MAC5C;AACA,WAAKI,OAAO;IACd;EACF;AC7dA,MAAMC,WAAW;AAEjB,WAASC,eAAeC,WAAW;AACjC,QAAIF,SAASG,KAAKD,SAAS,GAAG;AAC5B,aAAO,IAAIE,IAAIF,SAAS;IAC1B;AACA,UAAMG,MAAMC,QAAQC,iBAAiB,KAAK;AAC1C,WAAO,IAAIH,IAAIC,IAAIG,cAAcN,SAAS,CAAC;EAC7C;AAEA,MAAMO,gBAAN,MAAoB;IAClBC,YAAYC,QAAQ;AAClB,WAAKA,SAASA;AACd,WAAKN,MAAMJ,eAAeU,OAAON,GAAG;AACpCO,MAAAA,QACE,KAAKP,IAAIQ,aAAa,SACtB,2CACF;AAEA,WAAKC,qBAAqB;AAC1B,WAAKC,uBAAuB,CAAA;IAC9B;IAEA,IAAIC,yBAAyB;AAC3B,aAAO,KAAKF,oBAAoBG,WAAW;IAC7C;IAEAC,gBAAgB;AACdN,MAAAA,QACE,CAAC,KAAKE,oBACN,sDACF;AACA,WAAKA,qBAAqB,IAAIK,0BAA0B,IAAI;AAC5D,aAAO,KAAKL;IACd;IAEAM,eAAeC,QAAOC,KAAK;AACzB,UAAIA,OAAO,KAAKN,wBAAwB;AACtC,eAAO;MACT;AACA,YAAMO,cAAc,IAAIC,2BAA2B,MAAMH,QAAOC,GAAG;AACnE,WAAKP,qBAAqBU,KAAKF,WAAW;AAC1C,aAAOA;IACT;IAEAG,kBAAkBC,QAAQ;AACxB,WAAKb,oBAAoBc,OAAOD,MAAM;AAEtC,iBAAWE,UAAU,KAAKd,qBAAqBe,MAAM,CAAC,GAAG;AACvDD,eAAOD,OAAOD,MAAM;MACtB;IACF;EACF;AAEA,MAAMR,4BAAN,MAAgC;IAC9BT,YAAYqB,SAAQ;AAClB,WAAKC,OAAOD,QAAO1B;AACnB,WAAK4B,QAAQ;AACb,WAAKC,eAAe;AACpB,WAAKC,aAAa;AAClB,YAAMxB,SAASoB,QAAOpB;AACtB,WAAKyB,iBAAiBzB,OAAO0B;AAC7B,WAAKpB,UAAU;AACf,WAAKqB,YAAY;AAEjB,WAAKC,gBAAgB5B,OAAO6B,gBAAgB;AAC5C,WAAKC,kBAAkB9B,OAAO+B;AAC9B,UAAI,CAAC,KAAKD,mBAAmB,CAAC,KAAKF,eAAe;AAChD,aAAKA,gBAAgB;MACvB;AAEA,WAAKI,wBAAwB,CAAChC,OAAOiC;AACrC,WAAKC,oBAAoB,CAAClC,OAAO6B;AAEjC,WAAKM,kBAAkB;AACvB,WAAKC,kBAAkBC,QAAQC,cAAc;AAC7C,WAAKC,qBAAqBF,QAAQC,cAAc;AAEhD,YAAME,KAAK7C,QAAQC,iBAAiB,IAAI;AACxC4C,SAAGC,SAASC,MAAM,KAAKrB,IAAI,EAAEsB,KAC3BC,UAAQ;AAEN,aAAKnB,iBAAiBmB,KAAKC;AAE3B,aAAKC,mBAAmBN,GAAGO,iBAAiB,KAAK1B,IAAI,CAAC;AACtD,aAAKkB,mBAAmBS,QAAQ;MAClC,GACAC,WAAS;AACP,YAAIA,MAAMC,SAAS,UAAU;AAC3BD,kBAAQE,oBAAmC,GAAG,KAAK9B,KAAK+B,IAAI;QAC9D;AACA,aAAK7B,eAAe0B;AACpB,aAAKV,mBAAmBc,OAAOJ,KAAK;MACtC,CACF;IACF;IAEA,IAAIK,eAAe;AACjB,aAAO,KAAKf,mBAAmBgB;IACjC;IAEA,IAAIC,WAAW;AACb,aAAO,KAAK7B;IACd;IAEA,IAAI8B,gBAAgB;AAClB,aAAO,KAAKhC;IACd;IAEA,IAAIiC,mBAAmB;AACrB,aAAO,KAAKxB;IACd;IAEA,IAAIyB,uBAAuB;AACzB,aAAO,KAAK3B;IACd;IAEA,MAAM4B,OAAO;AACX,YAAM,KAAKxB,gBAAgBmB;AAC3B,UAAI,KAAKjC,OAAO;AACd,eAAO;UAAEuC,OAAOC;UAAWC,MAAM;QAAK;MACxC;AACA,UAAI,KAAKxC,cAAc;AACrB,cAAM,KAAKA;MACb;AAEA,YAAMyC,QAAQ,KAAK7B,gBAAgByB,KAAK;AACxC,UAAII,UAAU,MAAM;AAClB,aAAK5B,kBAAkBC,QAAQC,cAAc;AAC7C,eAAO,KAAKsB,KAAK;MACnB;AACA,WAAKtD,WAAW0D,MAAMtC;AACtB,WAAKF,aAAa;QAChByC,QAAQ,KAAK3D;QACb4D,OAAO,KAAKzC;MACd,CAAC;AAGD,YAAM0C,UAAS,IAAIC,WAAWJ,KAAK,EAAEG;AACrC,aAAO;QAAEN,OAAOM;QAAQJ,MAAM;MAAM;IACtC;IAEA9C,OAAOD,QAAQ;AAGb,UAAI,CAAC,KAAKmB,iBAAiB;AACzB,aAAKkC,OAAOrD,MAAM;AAClB;MACF;AACA,WAAKmB,gBAAgBmC,QAAQtD,MAAM;IACrC;IAEAqD,OAAOrD,QAAQ;AACb,WAAKO,eAAeP;AACpB,WAAKoB,gBAAgBY,QAAQ;IAC/B;IAEAF,mBAAmByB,gBAAgB;AACjC,WAAKpC,kBAAkBoC;AACvBA,qBAAeC,GAAG,YAAY,MAAM;AAClC,aAAKpC,gBAAgBY,QAAQ;MAC/B,CAAC;AAEDuB,qBAAeC,GAAG,OAAO,MAAM;AAE7BD,uBAAeD,QAAQ;AACvB,aAAKhD,QAAQ;AACb,aAAKc,gBAAgBY,QAAQ;MAC/B,CAAC;AAEDuB,qBAAeC,GAAG,SAASxD,YAAU;AACnC,aAAKqD,OAAOrD,MAAM;MACpB,CAAC;AAID,UAAI,CAAC,KAAKgB,yBAAyB,KAAKE,mBAAmB;AACzD,aAAKmC,OAAO,IAAII,eAAe,uBAAuB,CAAC;MACzD;AAGA,UAAI,KAAKlD,cAAc;AACrB,aAAKY,gBAAgBmC,QAAQ,KAAK/C,YAAY;MAChD;IACF;EACF;AAEA,MAAMV,6BAAN,MAAiC;IAC/Bd,YAAYqB,SAAQV,QAAOC,KAAK;AAC9B,WAAKU,OAAOD,QAAO1B;AACnB,WAAK4B,QAAQ;AACb,WAAKC,eAAe;AACpB,WAAKC,aAAa;AAClB,WAAKlB,UAAU;AACf,WAAK6B,kBAAkB;AACvB,WAAKC,kBAAkBC,QAAQC,cAAc;AAC7C,YAAMtC,SAASoB,QAAOpB;AACtB,WAAKgC,wBAAwB,CAAChC,OAAOiC;AAErC,YAAMO,KAAK7C,QAAQC,iBAAiB,IAAI;AACxC,WAAKkD,mBACHN,GAAGO,iBAAiB,KAAK1B,MAAM;QAAEX,OAAAA;QAAOC,KAAKA,MAAM;MAAE,CAAC,CACxD;IACF;IAEA,IAAIgD,uBAAuB;AACzB,aAAO,KAAK3B;IACd;IAEA,MAAM4B,OAAO;AACX,YAAM,KAAKxB,gBAAgBmB;AAC3B,UAAI,KAAKjC,OAAO;AACd,eAAO;UAAEuC,OAAOC;UAAWC,MAAM;QAAK;MACxC;AACA,UAAI,KAAKxC,cAAc;AACrB,cAAM,KAAKA;MACb;AAEA,YAAMyC,QAAQ,KAAK7B,gBAAgByB,KAAK;AACxC,UAAII,UAAU,MAAM;AAClB,aAAK5B,kBAAkBC,QAAQC,cAAc;AAC7C,eAAO,KAAKsB,KAAK;MACnB;AACA,WAAKtD,WAAW0D,MAAMtC;AACtB,WAAKF,aAAa;QAAEyC,QAAQ,KAAK3D;MAAQ,CAAC;AAG1C,YAAM6D,UAAS,IAAIC,WAAWJ,KAAK,EAAEG;AACrC,aAAO;QAAEN,OAAOM;QAAQJ,MAAM;MAAM;IACtC;IAEA9C,OAAOD,QAAQ;AAGb,UAAI,CAAC,KAAKmB,iBAAiB;AACzB,aAAKkC,OAAOrD,MAAM;AAClB;MACF;AACA,WAAKmB,gBAAgBmC,QAAQtD,MAAM;IACrC;IAEAqD,OAAOrD,QAAQ;AACb,WAAKO,eAAeP;AACpB,WAAKoB,gBAAgBY,QAAQ;IAC/B;IAEAF,mBAAmByB,gBAAgB;AACjC,WAAKpC,kBAAkBoC;AACvBA,qBAAeC,GAAG,YAAY,MAAM;AAClC,aAAKpC,gBAAgBY,QAAQ;MAC/B,CAAC;AAEDuB,qBAAeC,GAAG,OAAO,MAAM;AAE7BD,uBAAeD,QAAQ;AACvB,aAAKhD,QAAQ;AACb,aAAKc,gBAAgBY,QAAQ;MAC/B,CAAC;AAEDuB,qBAAeC,GAAG,SAASxD,YAAU;AACnC,aAAKqD,OAAOrD,MAAM;MACpB,CAAC;AAGD,UAAI,KAAKO,cAAc;AACrB,aAAKY,gBAAgBmC,QAAQ,KAAK/C,YAAY;MAChD;IACF;EACF;ACtRA,MAAMmD,eAAeC,uBAAO,cAAc;AAO1C,MAAMC,aAAN,MAAiB;IACf,QAAQC,uBAAOC,OAAO,IAAI;IAQ1B,WAAWC,OAAO;AAChB,aAAQ,KAAK,MAAMA,KAAK,MAAM;QAC5B,GAAGC,QAAQC,cAAc;QACzBC,MAAMR;MACR;IACF;IAcAS,IAAIJ,OAAOK,YAAW,MAAM;AAG1B,UAAIA,WAAU;AACZ,cAAMC,OAAM,KAAK,WAAWN,KAAK;AACjCM,QAAAA,KAAIC,QAAQC,KAAK,MAAMH,UAASC,KAAIH,IAAI,CAAC;AACzC,eAAO;MACT;AAGA,YAAMG,MAAM,KAAK,MAAMN,KAAK;AAG5B,UAAI,CAACM,OAAOA,IAAIH,SAASR,cAAc;AACrC,cAAM,IAAIc,MAAM,6CAA6CT,KAAK,GAAG;MACvE;AACA,aAAOM,IAAIH;IACb;IAMAO,IAAIV,OAAO;AACT,YAAMM,MAAM,KAAK,MAAMN,KAAK;AAC5B,aAAO,CAAC,CAACM,OAAOA,IAAIH,SAASR;IAC/B;IAMAgB,OAAOX,OAAO;AACZ,YAAMM,MAAM,KAAK,MAAMN,KAAK;AAC5B,UAAI,CAACM,OAAOA,IAAIH,SAASR,cAAc;AAErC,eAAO;MACT;AACA,aAAO,KAAK,MAAMK,KAAK;AACvB,aAAO;IACT;IAQAY,QAAQZ,OAAOG,OAAO,MAAM;AAC1B,YAAMG,MAAM,KAAK,WAAWN,KAAK;AACjCM,UAAIH,OAAOA;AACXG,UAAIM,QAAQ;IACd;IAEAC,QAAQ;AACN,iBAAWb,SAAS,KAAK,OAAO;AAC9B,cAAM;UAAEG;QAAK,IAAI,KAAK,MAAMH,KAAK;AACjCG,cAAMW,QAAQC,MAAM;MACtB;AACA,WAAK,QAAQjB,uBAAOC,OAAO,IAAI;IACjC;IAEA,EAAEH,OAAOoB,QAAQ,IAAI;AACnB,iBAAWhB,SAAS,KAAK,OAAO;AAC9B,cAAM;UAAEG;QAAK,IAAI,KAAK,MAAMH,KAAK;AAEjC,YAAIG,SAASR,cAAc;AACzB;QACF;AACA,cAAM,CAACK,OAAOG,IAAI;MACpB;IACF;EACF;AC5EA,MAAMc,0BAA0B;AAChC,MAAMC,oBAAoB;AAE1B,MAAMC,YAAN,MAAMA,WAAU;IACd,cAAcC,QAAQC,cAAc;IAEpC,aAAa;IAEb,uBAAuB;IAEvB,wBAAwB,CAAC,CAACC,WAAWC,eAAeC;IAEpD,QAAQ;IAER,oBAAoB;IAEpB,cAAc;IAEd,aAAa;IAEb,UAAU;IAEV,iBAAiB;IAEjB,YAAY;IAEZ,SAAS;IAET,cAAcC,uBAAOC,OAAO,IAAI;IAEhC,uBAAuB,CAAA;IAEvB,qBAAqB;IAErB,YAAY,CAAA;IAEZ,qBAAqB,oBAAIC,QAAQ;IAEjC,aAAa;IAEb,OAAO,eAAe,oBAAIC,IAAI;IAE9B,OAAO,kBAAkB,oBAAIA,IAAI;IAEjC,OAAO,kBAAkB,oBAAID,QAAQ;IAErC,OAAO,eAAe;IAEtB,OAAO,qBAAqB,oBAAIE,IAAI;IAKpCC,YAAY;MAAEC;MAAmBC;MAAWC;IAAS,GAAG;AACtD,UAAIF,6BAA6BG,gBAAgB;AAC/C,aAAK,qBAAqBH;MAC5B,WAEE,OAAOA,sBAAsB,UAC7B;AACA,aAAK,qBAAqB,IAAIG,eAAe;UAC3CC,MAAMC,YAAY;AAChBA,uBAAWC,QAAQN,iBAAiB;AACpCK,uBAAWE,MAAM;UACnB;QACF,CAAC;MACH,OAAO;AACL,cAAM,IAAIC,MAAM,6CAA6C;MAC/D;AACA,WAAK,aAAa,KAAK,iBAAiBP;AAExC,WAAK,SAASC,SAASO,QAAQC,YAAYC;AAC3C,WAAK,YAAYT,SAASU;AAC1B,WAAK,oBAAoB;QACvBC,KAAK;QACLC,YAAY;QACZC,KAAK;MACP;AACA,YAAM;QAAEC;QAAWC;QAAYC;QAAOC;MAAM,IAAIjB,SAASkB;AACzD,WAAK,aAAa,CAAC,GAAG,GAAG,GAAG,IAAI,CAACF,OAAOC,QAAQF,UAAU;AAC1D,WAAK,aAAaD;AAClB,WAAK,cAAcC;AAEnB7B,iBAAU,2BAA2B;AACrCa,gBAAUoB,MAAMC,YAAY,mBAAmBlC,WAAU,YAAY;AAErEmC,yBAAmBtB,WAAWC,QAAQ;AAGtC,WAAK,YAAYsB,QACdC,QAAQ,MAAM;AACbrC,mBAAU,mBAAmBsC,OAAO,IAAI;AACxC,aAAK,oBAAoB;AACzB,aAAK,cAAc;MACrB,CAAC,EACAC,MAAM,MAAM;MAEb,CAAC;IAeL;IAEA,WAAWC,gBAAgB;AACzB,YAAM;QAAEC;QAAWC,WAAAA;MAAU,IAAIC,iBAAYC;AAC7C,aAAOC,OACL,MACA,iBACA,oBAAIpC,IAAI,CACN,CACE,cACA,GAAGgC,aAAaC,aAAY,cAAc,EAAE,YAAY,GAE1D,CACE,aACA,GAAGD,aAAaC,aAAY,qBAAqB,EAAE,WAAW,CAC/D,CACF,CACH;IACF;IAMAI,SAAS;AACP,YAAMC,OAAOA,MAAM;AACjB,aAAK,QAAQC,KAAK,EAAEC,KAAK,CAAC;UAAEC;UAAOC;QAAK,MAAM;AAC5C,cAAIA,MAAM;AACR,iBAAK,YAAYC,QAAQ;AACzB;UACF;AACA,eAAK,UAAUF,MAAMG;AACrB/C,iBAAOgD,OAAO,KAAK,aAAaJ,MAAMK,MAAM;AAC5C,eAAK,cAAcL,MAAMM,KAAK;AAC9BT,eAAK;QACP,GAAG,KAAK,YAAYU,MAAM;MAC5B;AACA,WAAK,UAAU,KAAK,mBAAmBC,UAAU;AACjD1D,iBAAU,mBAAmB2D,IAAI,IAAI;AACrCZ,WAAK;AAEL,aAAO,KAAK,YAAYX;IAC1B;IAOAwB,OAAO;MAAE9C;MAAU+C,WAAW;IAAK,GAAG;AACpC,YAAMxC,QAAQP,SAASO,QAAQC,YAAYC;AAC3C,YAAMC,WAAWV,SAASU;AAE1B,UAAIA,aAAa,KAAK,WAAW;AAC/BqC,mBAAW;AACX,aAAK,YAAYrC;AACjBW,2BAAmB,KAAK,gBAAgB;UAAEX;QAAS,CAAC;MACtD;AAEA,UAAIH,UAAU,KAAK,QAAQ;AACzBwC,mBAAW;AACX,aAAK,SAASxC;AACd,cAAMyC,SAAS;UACbrC,KAAK;UACLC,YAAY;UACZC,KAAK3B,WAAU,QAAQ,KAAK,KAAK;QACnC;AACA,mBAAWyB,OAAO,KAAK,WAAW;AAChCqC,iBAAOpC,aAAa,KAAK,mBAAmBqC,IAAItC,GAAG;AACnDqC,iBAAOrC,MAAMA;AACb,eAAK,QAAQqC,MAAM;QACrB;MACF;IACF;IAMAE,SAAS;AACP,YAAMC,UAAU,IAAIC,eAAe,2BAA2B;AAE9D,WAAK,SAASF,OAAOC,OAAO,EAAE1B,MAAM,MAAM;MAE1C,CAAC;AACD,WAAK,UAAU;AAEf,WAAK,YAAYkB,OAAOQ,OAAO;IACjC;IAOA,IAAIE,WAAW;AACb,aAAO,KAAK;IACd;IAOA,IAAIC,sBAAsB;AACxB,aAAO,KAAK;IACd;IAEA,cAAcZ,OAAO;AACnB,UAAI,KAAK,sBAAsB;AAC7B;MACF;AACA,WAAK,kBAAkB7B,QAAQ3B,WAAU,QAAQ,KAAK,KAAK;AAE3D,YAAMmE,WAAW,KAAK,WACpBC,sBAAsB,KAAK;AAE7B,iBAAWC,QAAQb,OAAO;AAGxB,YAAIW,SAASG,SAASxE,yBAAyB;AAC7CyE,eAAK,uDAAuD;AAE5D,eAAK,uBAAuB;AAC5B;QACF;AAEA,YAAIF,KAAKG,QAAQC,QAAW;AAC1B,cACEJ,KAAKK,SAAS,6BACdL,KAAKK,SAAS,sBACd;AACA,kBAAMC,SAAS,KAAK;AACpB,iBAAK,aAAaC,SAASC,cAAc,MAAM;AAC/C,iBAAK,WAAWC,UAAUnB,IAAI,eAAe;AAC7C,gBAAIU,KAAKU,IAAI;AACX,mBAAK,WAAWC,aAAa,MAAM,GAAGX,KAAKU,EAAE,EAAE;YACjD;AACAJ,mBAAOM,OAAO,KAAK,UAAU;UAC/B,WAAWZ,KAAKK,SAAS,oBAAoB;AAC3C,iBAAK,aAAa,KAAK,WAAWQ;UACpC;AACA;QACF;AACAd,4BAAoBe,KAAKd,KAAKG,GAAG;AACjC,aAAK,YAAYH,IAAI;MACvB;IACF;IAEA,YAAYe,MAAM;AAEhB,YAAMC,UAAUT,SAASC,cAAc,MAAM;AAC7C,YAAMS,oBAAoB;QACxBC,OAAO;QACPC,aAAa;QACbC,SAASL,KAAKZ,QAAQ;QACtBkB,QAAQN,KAAKM;QACbC,UAAU;MACZ;AACA,WAAK,UAAUR,KAAKE,OAAO;AAE3B,YAAMO,KAAKC,KAAKC,UAAU,KAAK,YAAYV,KAAKU,SAAS;AACzD,UAAIP,QAAQQ,KAAKC,MAAMJ,GAAG,CAAC,GAAGA,GAAG,CAAC,CAAC;AACnC,YAAM3D,QAAQ,KAAK,YAAYmD,KAAKa,QAAQ;AAC5C,UAAIhE,MAAMiE,UAAU;AAClBX,iBAASQ,KAAKI,KAAK;MACrB;AAEA,UAAIC,aACD,KAAK,yBAAyBnE,MAAMoE,oBACrCpE,MAAMmE;AAGRA,mBAAapG,WAAUwC,cAAcuB,IAAIqC,UAAU,KAAKA;AACxD,YAAME,aAAaP,KAAKQ,MAAMX,GAAG,CAAC,GAAGA,GAAG,CAAC,CAAC;AAC1C,YAAMY,aACJF,aAAatG,WAAU,WAAWoG,YAAYnE,OAAO,KAAK,KAAK;AAEjE,UAAIwE,MAAMC;AACV,UAAInB,UAAU,GAAG;AACfkB,eAAOb,GAAG,CAAC;AACXc,cAAMd,GAAG,CAAC,IAAIY;MAChB,OAAO;AACLC,eAAOb,GAAG,CAAC,IAAIY,aAAaT,KAAKY,IAAIpB,KAAK;AAC1CmB,cAAMd,GAAG,CAAC,IAAIY,aAAaT,KAAKa,IAAIrB,KAAK;MAC3C;AAEA,YAAMsB,WAAWxB,QAAQpD;AAGzB4E,eAASJ,OAAO,IAAK,MAAMA,OAAQ,KAAK,YAAYK,QAAQ,CAAC,CAAC;AAC9DD,eAASH,MAAM,IAAK,MAAMA,MAAO,KAAK,aAAaI,QAAQ,CAAC,CAAC;AAC7DD,eAAS3E,YAAY,iBAAiB,GAAGoE,WAAWQ,QAAQ,CAAC,CAAC,IAAI;AAClED,eAAST,aAAaA;AAEtBd,wBAAkBK,WAAWW;AAG7BjB,cAAQL,aAAa,QAAQ,cAAc;AAE3CK,cAAQ0B,cAAc3B,KAAKZ;AAE3Ba,cAAQ2B,MAAM5B,KAAK4B;AAInB,UAAI,KAAK,uBAAuB;AAC9B3B,gBAAQ4B,QAAQhB,WACdhE,MAAMiF,8BAA8B9B,KAAKa;MAC7C;AACA,UAAIV,UAAU,GAAG;AACfD,0BAAkBC,QAAQA,SAAS,MAAMQ,KAAKI;MAChD;AAIA,UAAIgB,kBAAkB;AACtB,UAAI/B,KAAKZ,IAAIF,SAAS,GAAG;AACvB6C,0BAAkB;MACpB,WAAW/B,KAAKZ,QAAQ,OAAOY,KAAKU,UAAU,CAAC,MAAMV,KAAKU,UAAU,CAAC,GAAG;AACtE,cAAMsB,YAAYrB,KAAKsB,IAAIjC,KAAKU,UAAU,CAAC,CAAC,GAC1CwB,YAAYvB,KAAKsB,IAAIjC,KAAKU,UAAU,CAAC,CAAC;AAGxC,YACEsB,cAAcE,aACdvB,KAAKwB,IAAIH,WAAWE,SAAS,IAAIvB,KAAKyB,IAAIJ,WAAWE,SAAS,IAAI,KAClE;AACAH,4BAAkB;QACpB;MACF;AACA,UAAIA,iBAAiB;AACnB7B,0BAAkBE,cAAcvD,MAAMiE,WAAWd,KAAKqC,SAASrC,KAAKsC;MACtE;AACA,WAAK,mBAAmBC,IAAItC,SAASC,iBAAiB;AAGtD,WAAK,kBAAkB7D,MAAM4D;AAC7B,WAAK,kBAAkB3D,aAAa4D;AACpC,WAAK,QAAQ,KAAK,iBAAiB;AAEnC,UAAIA,kBAAkBG,SAAS;AAC7B,aAAK,WAAWR,OAAOI,OAAO;MAChC;AACA,UAAIC,kBAAkBI,QAAQ;AAC5B,cAAMkC,MAAKhD,SAASC,cAAc,IAAI;AACtC+C,QAAAA,IAAG5C,aAAa,QAAQ,cAAc;AACtC,aAAK,WAAWC,OAAO2C,GAAE;MAC3B;IACF;IAEA,QAAQ9D,QAAQ;AACd,YAAM;QAAErC;QAAKC;QAAYC;MAAI,IAAImC;AACjC,YAAM;QAAE7B;MAAM,IAAIR;AAElB,UAAIC,WAAW8D,gBAAgB,KAAK9D,WAAW+D,SAAS;AACtD,cAAM;UAAEW;QAAW,IAAInE;AACvB,cAAM;UAAEuD;UAAaG;QAAS,IAAIjE;AAElC1B,mBAAU,eAAe2B,KAAKgE,WAAW,KAAK,QAAQS,UAAU;AAEhE,cAAM;UAAEsB;QAAM,IAAI/F,IAAIkG,YAAYpG,IAAIsF,WAAW;AAEjD,YAAIW,QAAQ,GAAG;AACbzF,gBAAMC,YAAY,aAAcsD,cAAc,KAAK,SAAUkC,KAAK;QACpE;MACF;AACA,UAAIhG,WAAW6D,UAAU,GAAG;AAC1BtD,cAAMC,YAAY,YAAY,GAAGR,WAAW6D,KAAK,KAAK;MACxD;IACF;IAMA,OAAOuC,UAAU;AACf,UAAI,KAAK,mBAAmBC,OAAO,GAAG;AACpC;MACF;AACA,WAAK,aAAaC,MAAM;AAExB,iBAAW;QAAEC;MAAO,KAAK,KAAK,gBAAgBC,OAAO,GAAG;AACtDD,eAAOE,OAAO;MAChB;AACA,WAAK,gBAAgBH,MAAM;IAC7B;IAEA,OAAO,QAAQ3E,OAAO,MAAM;AAC1B,UAAI1B,MAAM,KAAK,gBAAgBoC,IAAKV,SAAS,EAAG;AAChD,UAAI,CAAC1B,KAAK;AAWR,cAAMsG,SAASrD,SAASC,cAAc,QAAQ;AAC9CoD,eAAOG,YAAY;AACnBH,eAAO5E,OAAOA;AACduB,iBAASyD,KAAKpD,OAAOgD,MAAM;AAC3BtG,cAAMsG,OAAOK,WAAW,MAAM;UAC5BC,OAAO;UACPC,oBAAoB;QACtB,CAAC;AACD,aAAK,gBAAgBb,IAAItE,MAAM1B,GAAG;AAGlC,aAAK,gBAAgBgG,IAAIhG,KAAK;UAAEoG,MAAM;UAAGU,QAAQ;QAAG,CAAC;MACvD;AACA,aAAO9G;IACT;IAEA,OAAO,eAAeA,KAAKoG,MAAMU,QAAQ;AACvC,YAAMC,SAAS,KAAK,gBAAgB3E,IAAIpC,GAAG;AAC3C,UAAIoG,SAASW,OAAOX,QAAQU,WAAWC,OAAOD,QAAQ;AACpD;MACF;AACA9G,UAAIgH,OAAO,GAAGZ,IAAI,MAAMU,MAAM;AAC9BC,aAAOX,OAAOA;AACdW,aAAOD,SAASA;IAClB;IAKA,OAAO,6BAA6B;AAClC,UAAI,KAAK,iBAAiB,MAAM;AAC9B;MACF;AACA,YAAMhH,MAAMmD,SAASC,cAAc,KAAK;AACxCpD,UAAIQ,MAAM2G,UAAU;AACpBnH,UAAIQ,MAAM4G,aAAa;AACvBpH,UAAIQ,MAAM0D,WAAW;AACrBlE,UAAIQ,MAAM6G,WAAW;AACrBrH,UAAIsF,cAAc;AAClBnC,eAASyD,KAAKpD,OAAOxD,GAAG;AAIxB,WAAK,eAAeA,IAAIsH,sBAAsB,EAAEtB;AAChDhG,UAAI0G,OAAO;IACb;IAEA,OAAO,WAAW/B,YAAYnE,OAAOoB,MAAM;AACzC,YAAM2F,eAAe,KAAK,aAAajF,IAAIqC,UAAU;AACrD,UAAI4C,cAAc;AAChB,eAAOA;MACT;AACA,YAAMrH,MAAM,KAAK,QAAQ0B,IAAI;AAE7B1B,UAAIsG,OAAOP,QAAQ/F,IAAIsG,OAAOR,SAAS1H;AACvC,WAAK,eAAe4B,KAAK5B,mBAAmBqG,UAAU;AACtD,YAAM6C,UAAUtH,IAAIkG,YAAY,EAAE;AAElC,YAAMqB,SAASD,QAAQE;AACvB,YAAMC,UAAUrD,KAAKsB,IAAI4B,QAAQI,sBAAsB;AAEvD1H,UAAIsG,OAAOP,QAAQ/F,IAAIsG,OAAOR,SAAS;AACvC,UAAI6B,QAAQ;AAEZ,UAAIJ,QAAQ;AACVI,gBAAQJ,UAAUA,SAASE;MAC7B,OAAO;AACL,YAEEzG,iBAAYC,SAASF,WACrB;AACA6B,eACE,mHAEF;QACF;AACA,YAAItC,MAAMiH,QAAQ;AAChBI,kBAAQrH,MAAMiH;QAChB,WAAWjH,MAAMmH,SAAS;AACxBE,kBAAQ,IAAIrH,MAAMmH;QACpB;MACF;AAEA,WAAK,aAAazB,IAAIvB,YAAYkD,KAAK;AACvC,aAAOA;IACT;EACF;AC5cA,MAAMC,8BAA8B;AAkKpC,WAASC,YAAYC,MAAM,CAAC,GAAG;AAE3B,QAAI,OAAOA,QAAQ,YAAYA,eAAeC,KAAK;AACjDD,YAAM;QAAEE,KAAKF;MAAI;IACnB,WAAWA,eAAeG,eAAeA,YAAYC,OAAOJ,GAAG,GAAG;AAChEA,YAAM;QAAEK,MAAML;MAAI;IACpB;AAEF,UAAMM,OAAO,IAAIC,uBAAuB;AACxC,UAAM;MAAEC;IAAM,IAAIF;AAElB,UAAMJ,MAAMF,IAAIE,MAAMO,WAAWT,IAAIE,GAAG,IAAI;AAC5C,UAAMG,OAAOL,IAAIK,OAAOK,YAAYV,IAAIK,IAAI,IAAI;AAChD,UAAMM,cAAcX,IAAIW,eAAe;AACvC,UAAMC,kBAAkBZ,IAAIY,oBAAoB;AAChD,UAAMC,WAAWb,IAAIa,YAAY;AACjC,UAAMC,iBACJd,IAAIe,iBAAiBC,wBAAwBhB,IAAIe,QAAQ;AAC3D,UAAME,iBACJC,OAAOC,UAAUnB,IAAIiB,cAAc,KAAKjB,IAAIiB,iBAAiB,IACzDjB,IAAIiB,iBACJ,KAAK;AACX,QAAIG,SAASpB,IAAIoB,kBAAkBC,YAAYrB,IAAIoB,SAAS;AAC5D,UAAME,aAAYtB,IAAIsB;AAItB,UAAMC,aACJ,OAAOvB,IAAIuB,eAAe,YAAY,CAACC,aAAaxB,IAAIuB,UAAU,IAC9DvB,IAAIuB,aACJ;AACN,UAAME,UAAUC,kBAAkB1B,IAAIyB,OAAO;AAC7C,UAAME,aAAa3B,IAAI2B,eAAe;AACtC,UAAMC,oBACJ5B,IAAI4B,sBAC4DC,WAC5DC,wBACAC;AACN,UAAMC,SAASN,kBAAkB1B,IAAIgC,MAAM;AAC3C,UAAMC,sBAAsBP,kBAAkB1B,IAAIiC,mBAAmB;AACrE,UAAMC,0BACJlC,IAAIkC,4BAC4DL,WAC5DM,8BACAC;AACN,UAAMC,UAAUX,kBAAkB1B,IAAIqC,OAAO;AAC7C,UAAMC,cACJtC,IAAIsC,gBAC4DT,WAC5DU,kBACAC;AACN,UAAMC,eAAezC,IAAI0C,iBAAiB;AAC1C,UAAMC,eACJzB,OAAOC,UAAUnB,IAAI2C,YAAY,KAAK3C,IAAI2C,eAAe,KACrD3C,IAAI2C,eACJ;AACN,UAAMC,mBAAkB5C,IAAI4C,oBAAoB;AAChD,UAAMC,6BACJ,OAAO7C,IAAI6C,+BAA+B,YACtC7C,IAAI6C,6BACJ,CAAChB;AACP,UAAMiB,0BAEJ,OAAO9C,IAAI8C,4BAA4B,YACnC9C,IAAI8C,0BAMA,CAACjB,aAAakB,iBAAYC,SAASC,aAAa,CAACC,WAAWC;AACtE,UAAMC,uBAAuBlC,OAAOC,UAAUnB,IAAIoD,oBAAoB,IAClEpD,IAAIoD,uBACJ;AACJ,UAAMC,kBACJ,OAAOrD,IAAIqD,oBAAoB,YAAYrD,IAAIqD,kBAAkBxB;AACnE,UAAMyB,sBAAsBtD,IAAIsD,wBAAwB;AACxD,UAAMC,YAAYvD,IAAIuD,cAAc;AACpC,UAAMC,gBAAgBxD,IAAIwD,iBAAiBN,WAAWO;AACtD,UAAMC,eAAe1D,IAAI0D,iBAAiB;AAC1C,UAAMC,gBAAgB3D,IAAI2D,kBAAkB;AAC5C,UAAMC,mBAAmB5D,IAAI4D,qBAAqB;AAClD,UAAMC,SAAS7D,IAAI6D,WAAW;AAC9B,UAAMC,gBACJ9D,IAAI8D,kBAC4DjC,WAC5DkC,oBACAC;AACN,UAAMC,gBACJjE,IAAIiE,kBAC4DpC,WAC5DqC,oBACAC;AACN,UAAMC,YAAYpE,IAAIoE,cAAc;AACpC,UAAMC,UAAUrE,IAAIqE,YAAY;AAGhC,UAAMC,SAASxD,iBAAiBA,eAAewD,SAAUtE,IAAIsE,UAAUC;AACvE,UAAMC,iBACJ,OAAOxE,IAAIwE,mBAAmB,YAC1BxE,IAAIwE,iBACJ,CAAC3C,YAAY,CAACwB;AACpB,UAAMoB,iBACJ,OAAOzE,IAAIyE,mBAAmB,YAC1BzE,IAAIyE,iBAEJ,CAAC,EACC7C,sBAAsBG,wBACtBG,4BAA4BE,8BAC5BE,gBAAgBE,kBAChBf,WACAQ,uBACAI,WACAqC,gBAAgBjD,SAASgC,SAASkB,OAAO,KACzCD,gBAAgBzC,qBAAqBwB,SAASkB,OAAO,KACrDD,gBAAgBrC,SAASoB,SAASkB,OAAO;AAIjD,UAAMC,eAGA;AAGNC,sBAAkBvD,UAAS;AAI3B,UAAMwD,mBAAmB;MACvBC,eAAe,IAAIjB,cAAc;QAAEN;QAAeY;MAAU,CAAC;MAC7DY,eAAe,IAAIf,cAAc;QAAEzD;QAAOgD;MAAc,CAAC;MACzDyB,mBAEER,iBACI,OACA,IAAI7C,kBAAkB;QAAEsD,SAASzD;QAAS0D,cAAcxD;MAAW,CAAC;MAC1EyD,yBAEEX,iBACI,OACA,IAAIvC,wBAAwB;QAAEgD,SAASjD;MAAoB,CAAC;MAClEoD,aAEEZ,iBACI,OACA,IAAInC,YAAY;QAAE4C,SAAS7C;MAAQ,CAAC;IAC5C;AAEA,QAAI,CAACjB,QAAQ;AAGXA,eAASC,UAAUiE,OAAO;QACxBhE,WAAAA;QACAiE,MAAMC,oBAAoBC;MAC5B,CAAC;AACDnF,WAAKoF,UAAUtE;IACjB;AAEA,UAAMuE,YAAY;MAChBnF;MACAoF,YAEM;MAENvF;MACAQ;MACA+C;MACA3C;MACAqD;MACA/C;MACAgC;MACAsC,kBAAkB;QAChBlD;QACAU;QACAZ;QACAG,iBAAAA;QACAC;QACAC;QACAM;QACAE;QACAkB;QACAH;QACAI;QACAhD;QACAO;QACAC;QACAI;MACF;IACF;AACA,UAAMyD,kBAAkB;MACtBtC;MACAK;MACAe;MACAmB,eAAe;QACbnC;QACAL;MACF;IACF;AAEAnC,WAAO4E,QACJC,KAAK,WAAY;AAChB,UAAI3F,KAAK4F,WAAW;AAClB,cAAM,IAAIC,MAAM,iBAAiB;MACnC;AACA,UAAI/E,OAAO8E,WAAW;AACpB,cAAM,IAAIC,MAAM,sBAAsB;MACxC;AAEA,YAAMC,kBAAkBhF,OAAOiF,eAAeC,gBAC5C,iBACAX,WACAtF,OAAO,CAACA,KAAKkG,MAAM,IAAI,IACzB;AAEA,UAAIC;AACJ,UAAI1F,gBAAgB;AAClB0F,wBAAgB,IAAIC,uBAAuB3F,gBAAgB;UACzD4C;UACAC;QACF,CAAC;MACH,WAAW,CAACtD,MAAM;AAIhB,YAAI,CAACH,KAAK;AACR,gBAAM,IAAIiG,MAAM,4CAA4C;QAC9D;AAEA,cAAMO,gBAAgBhC,gBAAgBxE,GAAG,IACrCyG,iBAGE9E,WACA+E,gBACAC;AAENL,wBAAgB,IAAIE,cAAc;UAChCxG;UACAoE;UACA3D;UACAC;UACAK;UACAyC;UACAC;QACF,CAAC;MACH;AAEA,aAAOyC,gBAAgBH,KAAKa,cAAY;AACtC,YAAIxG,KAAK4F,WAAW;AAClB,gBAAM,IAAIC,MAAM,iBAAiB;QACnC;AACA,YAAI/E,OAAO8E,WAAW;AACpB,gBAAM,IAAIC,MAAM,sBAAsB;QACxC;AAEA,cAAME,iBAAiB,IAAIU,eAAevG,OAAOsG,UAAU1F,OAAOmE,IAAI;AACtE,cAAMyB,YAAY,IAAIC,gBACpBZ,gBACA/F,MACAkG,eACAV,iBACAhB,kBACAV,SACF;AACA9D,aAAK4G,aAAaF;AAClBX,uBAAec,KAAK,SAAS,IAAI;MACnC,CAAC;IACH,CAAC,EACAC,MAAM9G,KAAK+G,YAAYC,MAAM;AAEhC,WAAOhH;EACT;AAaA,MAAMC,yBAAN,MAAMA,wBAAuB;IAC3B,OAAO,SAAS;IAKhB8G,cAAcE,QAAQC,cAAc;IAKpCN,aAAa;IAKbxB,UAAU;IAMVlF,QAAQ,IAAID,wBAAuB,QAAQ;IAM3C2F,YAAY;IAQZuB,aAAa;IAQbC,aAAa;IAMb,IAAI1B,UAAU;AACZ,aAAO,KAAKqB,YAAYrB;IAC1B;IAOA,MAAM2B,UAAU;AACd,WAAKzB,YAAY;AAEjB,UAAI;AACF,YAAI,KAAKR,SAASH,MAAM;AACtB,eAAKG,QAAQkC,kBAAkB;QACjC;AACA,cAAM,KAAKV,YAAYS,QAAQ;MACjC,SAASE,IAAI;AACX,YAAI,KAAKnC,SAASH,MAAM;AACtB,iBAAO,KAAKG,QAAQkC;QACtB;AACA,cAAMC;MACR;AACA,WAAKX,aAAa;AAElB,WAAKxB,SAASiC,QAAQ;AACtB,WAAKjC,UAAU;IACjB;IAQA,MAAMoC,UAAU;AACd,aAAO,KAAKZ,WAAWY,QAAQ;IACjC;EACF;AASA,MAAM9G,wBAAN,MAA4B;IAC1B,cAAcuG,QAAQC,cAAc;IAEpC,4BAA4B,CAAA;IAE5B,4BAA4B,CAAA;IAE5B,qBAAqB,CAAA;IAErB,kBAAkB,CAAA;IAQlBO,YACEzD,QACA0D,aACAC,kBAAkB,OAClBC,6BAA6B,MAC7B;AACA,WAAK5D,SAASA;AACd,WAAK0D,cAAcA;AACnB,WAAKC,kBAAkBA;AACvB,WAAKC,6BAA6BA;IACpC;IAKAC,iBAAiBC,UAAU;AACzB,WAAK,gBAAgBC,KAAKD,QAAQ;IACpC;IAKAE,oBAAoBF,UAAU;AAC5B,WAAK,mBAAmBC,KAAKD,QAAQ;IACvC;IAKAG,2BAA2BH,UAAU;AACnC,WAAK,0BAA0BC,KAAKD,QAAQ;IAC9C;IAKAI,2BAA2BJ,UAAU;AACnC,WAAK,0BAA0BC,KAAKD,QAAQ;IAC9C;IAMAK,YAAYC,OAAOC,OAAO;AACxB,iBAAWP,YAAY,KAAK,iBAAiB;AAC3CA,iBAASM,OAAOC,KAAK;MACvB;IACF;IAMAC,eAAeC,SAAQC,OAAO;AAC5B,WAAK,YAAY9C,QAAQC,KAAK,MAAM;AAClC,mBAAWmC,YAAY,KAAK,oBAAoB;AAC9CA,mBAASS,SAAQC,KAAK;QACxB;MACF,CAAC;IACH;IAKAC,sBAAsBJ,OAAO;AAC3B,WAAK,YAAY3C,QAAQC,KAAK,MAAM;AAClC,mBAAWmC,YAAY,KAAK,2BAA2B;AACrDA,mBAASO,KAAK;QAChB;MACF,CAAC;IACH;IAEAK,wBAAwB;AACtB,WAAK,YAAYhD,QAAQC,KAAK,MAAM;AAClC,mBAAWmC,YAAY,KAAK,2BAA2B;AACrDA,mBAAS;QACX;MACF,CAAC;IACH;IAEAa,iBAAiB;AACf,WAAK,YAAYC,QAAQ;IAC3B;IAMAC,iBAAiBT,OAAOU,KAAK;AAC3BC,kBAAY,wDAAwD;IACtE;IAEAC,QAAQ;IAAC;EACX;AAKA,MAAMC,mBAAN,MAAuB;IACrBxB,YAAYyB,SAASxC,WAAW;AAC9B,WAAKyC,WAAWD;AAChB,WAAKtC,aAAaF;IAiBpB;IAKA,IAAI0C,oBAAoB;AACtB,aAAO,KAAKxC,WAAWwC;IACzB;IAKA,IAAI3E,gBAAgB;AAClB,aAAO,KAAKmC,WAAWnC;IACzB;IAKA,IAAIC,gBAAgB;AAClB,aAAO,KAAKkC,WAAWlC;IACzB;IAKA,IAAI2E,WAAW;AACb,aAAO,KAAKF,SAASE;IACvB;IAQA,IAAIC,eAAe;AACjB,aAAO,KAAKH,SAASG;IACvB;IAKA,IAAIC,YAAY;AACd,aAAOC,OAAO,MAAM,aAAa,CAAC,CAAC,KAAK5C,WAAW6C,WAAW;IAChE;IAQA,IAAIC,aAAa;AACf,aAAO,KAAK9C,WAAW6C;IACzB;IAOAE,QAAQC,YAAY;AAClB,aAAO,KAAKhD,WAAW+C,QAAQC,UAAU;IAC3C;IAOAC,aAAaC,KAAK;AAChB,aAAO,KAAKlD,WAAWiD,aAAaC,GAAG;IACzC;IAQAC,kBAAkB;AAChB,aAAO,KAAKnD,WAAWmD,gBAAgB;IACzC;IAQAC,eAAeC,IAAI;AACjB,aAAO,KAAKrD,WAAWoD,eAAeC,EAAE;IAC1C;IAOAC,gBAAgB;AACd,aAAO,KAAKtD,WAAWsD,cAAc;IACvC;IAMAC,gBAAgB;AACd,aAAO,KAAKvD,WAAWuD,cAAc;IACvC;IAMAC,cAAc;AACZ,aAAO,KAAKxD,WAAWwD,YAAY;IACrC;IAOAC,uBAAuB;AACrB,aAAO,KAAKzD,WAAWyD,qBAAqB;IAC9C;IAOAC,gBAAgB;AACd,aAAO,KAAK1D,WAAW0D,cAAc;IACvC;IAMAC,iBAAiB;AACf,aAAO,KAAK3D,WAAW2D,eAAe;IACxC;IAQAC,qBAAqBC,QAAOC,mBAAmB;AAC7C,aAAO,KAAK9D,WAAW4D,qBAAqBC,QAAOC,iBAAiB;IACtE;IASAC,eAAe;AACb,aAAO,KAAK/D,WAAWgE,gBAAgB;IACzC;IAqBAC,aAAa;AACX,aAAO,KAAKjE,WAAWiE,WAAW;IACpC;IAmBAC,yBAAyB;MAAEC,SAAS;IAAU,IAAI,CAAC,GAAG;AACpD,YAAM;QAAEC;MAAgB,IAAI,KAAKpE,WAAWqE,mBAAmBF,MAAM;AAErE,aAAO,KAAKnE,WAAWkE,yBAAyBE,eAAe;IACjE;IAOAE,iBAAiB;AACf,aAAO,KAAKtE,WAAWsE,eAAe;IACxC;IASAC,cAAc;AACZ,aAAO,KAAKvE,WAAWuE,YAAY;IACrC;IAeAC,cAAc;AACZ,aAAO,KAAKxE,WAAWwE,YAAY;IACrC;IAMA5D,UAAU;AACR,aAAO,KAAKZ,WAAWY,QAAQ;IACjC;IAMA6D,eAAe;AACb,aAAO,KAAKzE,WAAWyE,aAAa;IACtC;IAgBAC,aAAaC,WAAW;AACtB,aAAO,KAAK3E,WAAW0E,aAAaC,SAAS;IAC/C;IAOAC,kBAAkB;AAChB,aAAO,KAAK5E,WAAW6E,uBAAuB/F;IAChD;IAcAgG,QAAQC,kBAAkB,OAAO;AAC/B,aAAO,KAAK/E,WAAWgF,aAAaD,mBAAmB,KAAKpC,SAAS;IACvE;IAKAlC,UAAU;AACR,aAAO,KAAKwE,YAAYxE,QAAQ;IAClC;IAMAyE,iBAAiBhC,KAAK;AACpB,aAAO,KAAKlD,WAAWkF,iBAAiBhC,GAAG;IAC7C;IAMA,IAAIrE,gBAAgB;AAClB,aAAO,KAAKmB,WAAWnB;IACzB;IAKA,IAAIoG,cAAc;AAChB,aAAO,KAAKjF,WAAWiF;IACzB;IAOAE,kBAAkB;AAChB,aAAO,KAAKnF,WAAWmF,gBAAgB;IACzC;IAMAC,eAAe;AACb,aAAO,KAAKpF,WAAWoF,aAAa;IACtC;IAOAC,yBAAyB;AACvB,aAAO,KAAKrF,WAAWqF,uBAAuB;IAChD;EACF;AAsMA,MAAMC,eAAN,MAAmB;IACjB,kBAAkB;IAElBzE,YAAY0E,WAAWC,UAAU1F,WAAWnD,SAAS,OAAO;AAC1D,WAAK8I,aAAaF;AAClB,WAAKG,YAAYF;AACjB,WAAKxF,aAAaF;AAClB,WAAK6F,SAAShJ,SAAS,IAAIiJ,UAAU,IAAI;AACzC,WAAKC,UAAUlJ;AAEf,WAAKmJ,aAAahG,UAAUgG;AAC5B,WAAKC,OAAO,IAAIC,WAAW;AAE3B,WAAKC,gBAAgB,oBAAIC,IAAI;AAC7B,WAAKlH,YAAY;AACjB,WAAKmH,iBAAiB;IACxB;IAKA,IAAInD,aAAa;AACf,aAAO,KAAKyC,aAAa;IAC3B;IAKA,IAAIW,SAAS;AACX,aAAO,KAAKV,UAAUU;IACxB;IAKA,IAAIlD,MAAM;AACR,aAAO,KAAKwC,UAAUxC;IACxB;IAKA,IAAImD,WAAW;AACb,aAAO,KAAKX,UAAUW;IACxB;IAMA,IAAIC,OAAO;AACT,aAAO,KAAKZ,UAAUY;IACxB;IAOAC,YAAY;MACVC;MACAC,WAAW,KAAKL;MAChBM,UAAU;MACVC,UAAU;MACVC,WAAW;IACb,IAAI,CAAC,GAAG;AACN,aAAO,IAAIC,aAAa;QACtBC,SAAS,KAAKR;QACdD,UAAU,KAAKA;QACfG;QACAC;QACAC;QACAC;QACAC;MACF,CAAC;IACH;IAOAG,eAAe;MAAE5C,SAAS;IAAU,IAAI,CAAC,GAAG;AAC1C,YAAM;QAAEC;MAAgB,IAAI,KAAKpE,WAAWqE,mBAAmBF,MAAM;AAErE,aAAO,KAAKnE,WAAW+G,eAAe,KAAKtB,YAAYrB,eAAe;IACxE;IAMAL,eAAe;AACb,aAAO,KAAK/D,WAAWgH,iBAAiB,KAAKvB,UAAU;IACzD;IAKA,IAAI3H,gBAAgB;AAClB,aAAO,KAAKkC,WAAWlC;IACzB;IAKA,IAAI6E,YAAY;AACd,aAAOC,OAAO,MAAM,aAAa,CAAC,CAAC,KAAK5C,WAAW6C,WAAW;IAChE;IAQA,MAAMoE,SAAS;AACb,aAAO,KAAKjH,WAAW6C,aAAaqE,SAAS,KAAKzB,UAAU,KAAK;IACnE;IASA0B,OAAO;MACLC;MACAC,SAASD,cAAcC;MACvBC;MACAnD,SAAS;MACToD,iBAAiBC,eAAeC;MAChCC,YAAY;MACZC,aAAa;MACbC,+BAA+B;MAC/BC,sBAAsB;MACtBC,aAAa;MACbC,yBAAyB;MACzBC,YAAY;MACZC,mBAAmB;MACnBC,mBAAmB;IACrB,GAAG;AACD,WAAKvC,QAAQwC,KAAK,SAAS;AAE3B,YAAMC,aAAa,KAAKpI,WAAWqE,mBACjCF,QACAoD,gBACAQ,wBACAC,SACF;AACA,YAAM;QAAE5D;QAAiBiE;MAAS,IAAID;AAGtC,WAAK,kBAAkB;AAEvBR,uCACE,KAAK5H,WAAWkE,yBAAyBE,eAAe;AAE1D,UAAIkE,cAAc,KAAKrC,cAAcsC,IAAIF,QAAQ;AACjD,UAAI,CAACC,aAAa;AAChBA,sBAAcE,uBAAOpK,OAAO,IAAI;AAChC,aAAK6H,cAAcwC,IAAIJ,UAAUC,WAAW;MAC9C;AAGA,UAAIA,YAAYI,2BAA2B;AACzCC,qBAAaL,YAAYI,yBAAyB;AAClDJ,oBAAYI,4BAA4B;MAC1C;AAEA,YAAME,cAAc,CAAC,EAAExE,kBAAkByE,oBAAoBC;AAI7D,UAAI,CAACR,YAAYS,wBAAwB;AACvCT,oBAAYS,yBAAyB1I,QAAQC,cAAc;AAC3DgI,oBAAYU,eAAe;UACzBC,SAAS,CAAA;UACTC,WAAW,CAAA;UACXC,WAAW;UACXC,gBAAgB;QAClB;AAEA,aAAKzD,QAAQwC,KAAK,cAAc;AAChC,aAAKkB,kBAAkBjB,UAAU;MACnC;AAEA,YAAMkB,oBAAoBC,QACxB,KAAK1D,WAAW7J,WAAWwN,gBAAgBC,OAC7C;AAEA,YAAMC,yBACJ,CAAC,KAAKvD,mBAAmB8B,oBAAoBqB;AAE/C,YAAMK,WAAWC,WAAS;AACxBtB,oBAAYuB,YAAYC,OAAOC,kBAAkB;AAEjD,YAAIL,wBAAwB;AAC1B,gBAAMvD,iBAAiB4D,mBAAmBC,KAAKC,kBAAkBC,KAAK;AACtE,cAAI/D,gBAAgB;AAClB,gBAAI4D,mBAAmBI,SAAS;AAC9BJ,iCAAmBI,QAAQC,kBACzBjE,gBACA4D,mBAAmBC,IAAIC,kBAAkBI,kBAAkB,CAC7D;YACF;AACA,gBAAIpC,kBAAkB;AACpB,mBAAK9B,iBAAiBA;YACxB;UACF;QACF;AAIA,YAAIyC,aAAa;AACf,eAAK,kBAAkB;QACzB;AACA,aAAK,YAAY;AAEjB,YAAIgB,OAAO;AACTG,6BAAmBO,WAAWlK,OAAOwJ,KAAK;AAE1C,eAAKW,mBAAmB;YACtBjC;YACAkC,QAAQZ,iBAAiB3K,QAAQ2K,QAAQ,IAAI3K,MAAM2K,KAAK;UAC1D,CAAC;QACH,OAAO;AACLG,6BAAmBO,WAAWtI,QAAQ;QACxC;AAEA,YAAI,KAAK2D,QAAQ;AACf,eAAKA,OAAO8E,QAAQ,WAAW;AAC/B,eAAK9E,OAAO8E,QAAQ,SAAS;AAE7B,cAAIzO,WAAW0O,OAAOjB,SAAS;AAC7BzN,uBAAW0O,MAAMC,IAAI,KAAK3H,YAAY,KAAK2C,MAAM;UACnD;QACF;MACF;AAEA,YAAMoE,qBAAqB,IAAIa,mBAAmB;QAChDC,UAAUlB;QAEVmB,QAAQ;UACNzD;UACAD;UACA6C,mBAAmBP,yBACf,IAAIqB,wBACF1D,QACAiB,YAAYU,aAAa5L,QACzBkM,iBACF,IACA;UACJhC;UACAI;UACAC;QACF;QACA5B,MAAM,KAAKA;QACXD,YAAY,KAAKA;QACjB+B;QACAmB,cAAcV,YAAYU;QAC1BzD,WAAW,KAAKE;QAChB5H,eAAe,KAAKmC,WAAWnC;QAC/BC,eAAe,KAAKkC,WAAWlC;QAC/BkN,0BAA0B,CAACpC;QAC3BjM,QAAQ,KAAKkJ;QACbiC;QACA5K,WAAW,KAAK8C,WAAW9C;QAC3BgL;MACF,CAAC;AAED,OAACI,YAAYuB,gBAAgB,oBAAIoB,IAAI,GAAGN,IAAIZ,kBAAkB;AAC9D,YAAMmB,aAAanB,mBAAmB3Q;AAEtCiH,cAAQ8K,IAAI,CACV7C,YAAYS,uBAAuBjK,SACnC8I,4BAA4B,CAC7B,EACE7I,KAAK,CAAC,CAACqM,cAAcC,qBAAqB,MAAM;AAC/C,YAAI,KAAKrM,WAAW;AAClB2K,mBAAS;AACT;QACF;AACA,aAAKhE,QAAQwC,KAAK,WAAW;AAE7B,YAAI,EAAEkD,sBAAsBjH,kBAAkBA,kBAAkB;AAC9D,gBAAM,IAAInF,MACR,qIAEF;QACF;AACA8K,2BAAmBuB,mBAAmB;UACpCF;UACAC;QACF,CAAC;AACDtB,2BAAmBwB,oBAAoB;MACzC,CAAC,EACArL,MAAMyJ,QAAQ;AAEjB,aAAOuB;IACT;IAQAM,gBAAgB;MACdrH,SAAS;MACToD,iBAAiBC,eAAeC;MAChCM,yBAAyB;MACzBC,YAAY;IACd,IAAI,CAAC,GAAG;AAIN,eAASuD,sBAAsB;AAC7B,YAAIjD,YAAYU,aAAaG,WAAW;AACtCb,sBAAYmD,qBAAqBzJ,QAAQsG,YAAYU,YAAY;AAEjEV,sBAAYuB,YAAYC,OAAO4B,UAAU;QAC3C;MACF;AAEA,YAAMtD,aAAa,KAAKpI,WAAWqE,mBACjCF,QACAoD,gBACAQ,wBACAC,WACiB,IACnB;AACA,UAAIM,cAAc,KAAKrC,cAAcsC,IAAIH,WAAWC,QAAQ;AAC5D,UAAI,CAACC,aAAa;AAChBA,sBAAcE,uBAAOpK,OAAO,IAAI;AAChC,aAAK6H,cAAcwC,IAAIL,WAAWC,UAAUC,WAAW;MACzD;AACA,UAAIoD;AAEJ,UAAI,CAACpD,YAAYmD,sBAAsB;AACrCC,qBAAalD,uBAAOpK,OAAO,IAAI;AAC/BsN,mBAAWH,sBAAsBA;AACjCjD,oBAAYmD,uBAAuBpL,QAAQC,cAAc;AACzD,SAACgI,YAAYuB,gBAAgB,oBAAIoB,IAAI,GAAGN,IAAIe,UAAU;AACtDpD,oBAAYU,eAAe;UACzBC,SAAS,CAAA;UACTC,WAAW,CAAA;UACXC,WAAW;UACXC,gBAAgB;QAClB;AAEA,aAAKzD,QAAQwC,KAAK,cAAc;AAChC,aAAKkB,kBAAkBjB,UAAU;MACnC;AACA,aAAOE,YAAYmD,qBAAqB3M;IAC1C;IASA6M,kBAAkB;MAChBC,uBAAuB;MACvBC,uBAAuB;IACzB,IAAI,CAAC,GAAG;AACN,YAAMC,0BAA0B;AAEhC,aAAO,KAAK9L,WAAWb,eAAe4M,eACpC,kBACA;QACExG,WAAW,KAAKE;QAChBmG,sBAAsBA,yBAAyB;QAC/CC,sBAAsBA,yBAAyB;MACjD,GACA;QACEG,eAAeF;QACfG,KAAKC,aAAa;AAChB,iBAAOA,YAAYC,MAAM/O;QAC3B;MACF,CACF;IACF;IAUAgP,eAAetB,SAAS,CAAC,GAAG;AAC1B,UAAI,KAAK9K,WAAW6C,aAAa;AAG/B,eAAO,KAAKoE,OAAO,EAAElI,KAAKsN,SAAOC,QAAQJ,YAAYG,GAAG,CAAC;MAC3D;AACA,YAAME,iBAAiB,KAAKZ,kBAAkBb,MAAM;AAEpD,aAAO,IAAIzK,QAAQ,SAAU2B,UAAS5B,QAAQ;AAC5C,iBAASoM,OAAO;AACdC,iBAAOC,KAAK,EAAE3N,KAAK,SAAU;YAAE4N;YAAOC;UAAK,GAAG;AAC5C,gBAAIA,MAAM;AACR5K,cAAAA,SAAQkK,WAAW;AACnB;YACF;AACAA,wBAAYW,SAASF,MAAME;AAC3BrE,mBAAOsE,OAAOZ,YAAYa,QAAQJ,MAAMI,MAAM;AAC9Cb,wBAAYC,MAAMhL,KAAK,GAAGwL,MAAMR,KAAK;AACrCK,iBAAK;UACP,GAAGpM,MAAM;QACX;AAEA,cAAMqM,SAASF,eAAeS,UAAU;AACxC,cAAMd,cAAc;UAClBC,OAAO,CAAA;UACPY,QAAQvE,uBAAOpK,OAAO,IAAI;UAC1ByO,MAAM;QACR;AACAL,aAAK;MACP,CAAC;IACH;IAOAS,gBAAgB;AACd,aAAO,KAAKjN,WAAWiN,cAAc,KAAKxH,UAAU;IACtD;IAMAyH,WAAW;AACT,WAAKlO,YAAY;AAEjB,YAAMmO,SAAS,CAAA;AACf,iBAAW7E,eAAe,KAAKrC,cAAcmH,OAAO,GAAG;AACrD,aAAK7C,mBAAmB;UACtBjC;UACAkC,QAAQ,IAAIvL,MAAM,qBAAqB;UACvCoO,OAAO;QACT,CAAC;AAED,YAAI/E,YAAYmD,sBAAsB;AAEpC;QACF;AACA,mBAAW1B,sBAAsBzB,YAAYuB,aAAa;AACxDsD,iBAAOhM,KAAK4I,mBAAmBuD,SAAS;AACxCvD,6BAAmBwD,OAAO;QAC5B;MACF;AACA,WAAKxH,KAAKyH,MAAM;AAChB,WAAK,kBAAkB;AAEvB,aAAOnN,QAAQ8K,IAAIgC,MAAM;IAC3B;IASArI,QAAQ2I,aAAa,OAAO;AAC1B,WAAK,kBAAkB;AACvB,YAAMC,UAAU,KAAK,YAAY;AAEjC,UAAID,cAAcC,SAAS;AACzB,aAAK/H,WAAW,IAAIC,UAAU;MAChC;AACA,aAAO8H;IACT;IAMA,cAAc;AACZ,UAAI,CAAC,KAAK,mBAAmB,KAAK1O,WAAW;AAC3C,eAAO;MACT;AACA,iBAAW;QAAE6K;QAAab;MAAa,KAAK,KAAK/C,cAAcmH,OAAO,GAAG;AACvE,YAAIvD,YAAYoC,OAAO,KAAK,CAACjD,aAAaG,WAAW;AACnD,iBAAO;QACT;MACF;AACA,WAAKlD,cAAcuH,MAAM;AACzB,WAAKzH,KAAKyH,MAAM;AAChB,WAAK,kBAAkB;AACvB,aAAO;IACT;IAKAG,iBAAiBvC,cAAc/C,UAAU;AACvC,YAAMC,cAAc,KAAKrC,cAAcsC,IAAIF,QAAQ;AACnD,UAAI,CAACC,aAAa;AAChB;MACF;AACA,WAAK3C,QAAQ8E,QAAQ,cAAc;AAInCnC,kBAAYS,wBAAwB/G,QAAQoJ,YAAY;IAC1D;IAKAwC,iBAAiBC,mBAAmBvF,aAAa;AAE/C,eAASwF,KAAI,GAAGC,KAAKF,kBAAkBzQ,QAAQ0Q,KAAIC,IAAID,MAAK;AAC1DxF,oBAAYU,aAAaC,QAAQ9H,KAAK0M,kBAAkB5E,QAAQ6E,EAAC,CAAC;AAClExF,oBAAYU,aAAaE,UAAU/H,KAAK0M,kBAAkB3E,UAAU4E,EAAC,CAAC;MACxE;AACAxF,kBAAYU,aAAaG,YAAY0E,kBAAkB1E;AACvDb,kBAAYU,aAAaI,iBAAiByE,kBAAkBzE;AAG5D,iBAAWW,sBAAsBzB,YAAYuB,aAAa;AACxDE,2BAAmBwB,oBAAoB;MACzC;AAEA,UAAIsC,kBAAkB1E,WAAW;AAC/B,aAAK,YAAY;MACnB;IACF;IAKAE,kBAAkB;MAChBjF;MACAiE;MACA2F;MACAC;IACF,GAAG;AAOD,YAAM;QAAEC,KAAAA;QAAKC;MAAS,IAAIH;AAE1B,YAAMzB,iBAAiB,KAAKvM,WAAWb,eAAe4M,eACpD,mBACA;QACExG,WAAW,KAAKE;QAChBtB,QAAQC;QACRiE;QACA7F,mBAAmB0L;QACnBD;MACF,GACAE,QACF;AACA,YAAM1B,SAASF,eAAeS,UAAU;AAExC,YAAM1E,cAAc,KAAKrC,cAAcsC,IAAIF,QAAQ;AACnDC,kBAAY8F,eAAe3B;AAE3B,YAAMD,OAAOA,MAAM;AACjBC,eAAOC,KAAK,EAAE3N,KACZ,CAAC;UAAE4N;UAAOC;QAAK,MAAM;AACnB,cAAIA,MAAM;AACRtE,wBAAY8F,eAAe;AAC3B;UACF;AACA,cAAI,KAAKpO,WAAWhB,WAAW;AAC7B;UACF;AACA,eAAK4O,iBAAiBjB,OAAOrE,WAAW;AACxCkE,eAAK;QACP,GACAhC,YAAU;AACRlC,sBAAY8F,eAAe;AAE3B,cAAI,KAAKpO,WAAWhB,WAAW;AAC7B;UACF;AACA,cAAIsJ,YAAYU,cAAc;AAE5BV,wBAAYU,aAAaG,YAAY;AAErC,uBAAWY,sBAAsBzB,YAAYuB,aAAa;AACxDE,iCAAmBwB,oBAAoB;YACzC;AACA,iBAAK,YAAY;UACnB;AAEA,cAAIjD,YAAYS,wBAAwB;AACtCT,wBAAYS,uBAAuB3I,OAAOoK,MAAM;UAClD,WAAWlC,YAAYmD,sBAAsB;AAC3CnD,wBAAYmD,qBAAqBrL,OAAOoK,MAAM;UAChD,OAAO;AACL,kBAAMA;UACR;QACF,CACF;MACF;AACAgC,WAAK;IACP;IAKAjC,mBAAmB;MAAEjC;MAAakC;MAAQ6C,QAAQ;IAAM,GAAG;AAQzD,UAAI,CAAC/E,YAAY8F,cAAc;AAC7B;MACF;AAEA,UAAI9F,YAAYI,2BAA2B;AACzCC,qBAAaL,YAAYI,yBAAyB;AAClDJ,oBAAYI,4BAA4B;MAC1C;AAEA,UAAI,CAAC2E,OAAO;AAGV,YAAI/E,YAAYuB,YAAYoC,OAAO,GAAG;AACpC;QACF;AAIA,YAAIzB,kBAAkB6D,6BAA6B;AACjD,cAAIC,QAAQ1V;AACZ,cAAI4R,OAAO+D,aAAa,KAAK/D,OAAO+D,aAAwB,KAAM;AAEhED,qBAAS9D,OAAO+D;UAClB;AAEAjG,sBAAYI,4BAA4B8F,WAAW,MAAM;AACvDlG,wBAAYI,4BAA4B;AACxC,iBAAK6B,mBAAmB;cAAEjC;cAAakC;cAAQ6C,OAAO;YAAK,CAAC;UAC9D,GAAGiB,KAAK;AACR;QACF;MACF;AACAhG,kBAAY8F,aACTb,OAAO,IAAIkB,eAAejE,OAAOkE,OAAO,CAAC,EACzCxO,MAAM,MAAM;MAEb,CAAC;AACHoI,kBAAY8F,eAAe;AAE3B,UAAI,KAAKpO,WAAWhB,WAAW;AAC7B;MACF;AAGA,iBAAW,CAAC2P,aAAaC,cAAc,KAAK,KAAK3I,eAAe;AAC9D,YAAI2I,mBAAmBtG,aAAa;AAClC,eAAKrC,cAAc6D,OAAO6E,WAAW;AACrC;QACF;MACF;AAEA,WAAK7J,QAAQ;IACf;IAMA,IAAI+J,QAAQ;AACV,aAAO,KAAKlJ;IACd;EACF;AAkBA,MAAMxL,YAAN,MAAMA,WAAU;IACd,cAAckG,QAAQC,cAAc;IAEpC,kBAAkB;IAElB,QAAQ;IAER,aAAa;IAEb,OAAO,gBAAgB;IAEvB,OAAO,oBAAoB;IAE3B,OAAO,eAAe,oBAAIwO,QAAQ;IAElC,OAAA;AAEI,UAAInU,UAAU;AAEZ,aAAK,oBAAoB;AAEzB2D,4BAAoByQ,cAEhB;MACN;AAIA,WAAKC,gBAAgB,CAAChR,SAASiR,aAAa;AAC1C,cAAMC,OAAOnW,IAAIoW,MAAMnR,OAAO;AAC9B,YAAI,CAACkR,MAAME,UAAUF,KAAKE,WAAW,QAAQ;AAC3C,iBAAO;QACT;AACA,cAAMC,QAAQ,IAAItW,IAAIkW,UAAUC,IAAI;AACpC,eAAOA,KAAKE,WAAWC,MAAMD;MAC/B;AAEA,WAAKE,oBAAoBtW,SAAO;AAK9B,cAAMuW,UAAU,iBAAiBvW,GAAG;AACpC,eAAOD,IAAIyW,gBACT,IAAIC,KAAK,CAACF,OAAO,GAAG;UAAEG,MAAM;QAAkB,CAAC,CACjD;MACF;AAEA,WAAKC,WAAW7E,YAAU;AACxB8E,mBACE,+DACF;AACA,YAAI,CAAC9E,QAAQzM,MAAM;AACjB,gBAAM,IAAIY,MAAM,gDAAgD;QAClE;AACA,eAAO,KAAKb,OAAO0M,MAAM;MAC3B;IASJ;IAEAjK,YAAY;MACVgP,MAAAA,QAAO;MACPxR,OAAO;MACPjE,WAAAA,aAAY0V,kBAAkB;IAChC,IAAI,CAAC,GAAG;AACN,WAAKD,OAAOA;AACZ,WAAK7Q,YAAY;AACjB,WAAK5E,YAAYA;AAEjB,UAAIiE,MAAM;AACR,YAAIlE,WAAU,aAAa4V,IAAI1R,IAAI,GAAG;AACpC,gBAAM,IAAIY,MAAM,8CAA8C;QAChE;AACA9E,mBAAU,aAAasO,IAAIpK,MAAM,IAAI;AACrC,aAAK,oBAAoBA,IAAI;MAC/B,OAAO;AACL,aAAK,YAAY;MACnB;IAUF;IAMA,IAAIS,UAAU;AACZ,aAAO,KAAK,YAAYA;IAC1B;IAEA,WAAW;AACT,WAAK,YAAYkD,QAAQ;AAEzB,WAAK,gBAAgB/B,KAAK,aAAa;QACrC7F,WAAW,KAAKA;MAClB,CAAC;IACH;IAMA,IAAIiE,OAAO;AACT,aAAO,KAAK;IACd;IAMA,IAAIc,iBAAiB;AACnB,aAAO,KAAK;IACd;IAEA,oBAAoBd,MAAM;AACxB,WAAK,QAAQA;AACb,WAAK,kBAAkB,IAAIwB,eAAe,QAAQ,UAAUxB,IAAI;AAChE,WAAK,gBAAgB2R,GAAG,SAAS,MAAM;MAGvC,CAAC;AACD,WAAK,SAAS;IAChB;IAEA,cAAc;AAMZ,UACE7V,WAAU,qBACVA,WAAU,iCACV;AACA,aAAK,iBAAiB;AACtB;MACF;AACA,UAAI;QAAE4U;MAAU,IAAI5U;AAEpB,UAAI;AAGF,YAGE,CAACA,WAAU6U,cAAciB,OAAOC,UAAUnB,SAAS,GACnD;AACAA,sBAAY5U,WAAUmV,kBACpB,IAAIvW,IAAIgW,WAAWkB,OAAOC,QAAQ,EAAEC,IACtC;QACF;AAEA,cAAMjW,SAAS,IAAIkW,OAAOrB,WAAW;UAAEW,MAAM;QAAS,CAAC;AACvD,cAAMvQ,iBAAiB,IAAIU,eAAe,QAAQ,UAAU3F,MAAM;AAClE,cAAMmW,iBAAiBA,MAAM;AAC3BC,aAAGlO,MAAM;AACTjD,yBAAesB,QAAQ;AACvBvG,iBAAOqW,UAAU;AACjB,cAAI,KAAKvR,WAAW;AAClB,iBAAK,YAAYoB,OAAO,IAAInB,MAAM,sBAAsB,CAAC;UAC3D,OAAO;AAGL,iBAAK,iBAAiB;UACxB;QACF;AAEA,cAAMqR,KAAK,IAAIE,gBAAgB;AAC/BtW,eAAOuW,iBACL,SACA,MAAM;AACJ,cAAI,CAAC,KAAK,YAAY;AAGpBJ,2BAAe;UACjB;QACF,GACA;UAAEK,QAAQJ,GAAGI;QAAO,CACtB;AAEAvR,uBAAe6Q,GAAG,QAAQ7W,UAAQ;AAChCmX,aAAGlO,MAAM;AACT,cAAI,KAAKpD,aAAa,CAAC7F,MAAM;AAC3BkX,2BAAe;AACf;UACF;AACA,eAAK,kBAAkBlR;AACvB,eAAK,QAAQjF;AACb,eAAK,aAAaA;AAElB,eAAK,SAAS;QAChB,CAAC;AAEDiF,uBAAe6Q,GAAG,SAAS7W,UAAQ;AACjCmX,aAAGlO,MAAM;AACT,cAAI,KAAKpD,WAAW;AAClBqR,2BAAe;AACf;UACF;AACA,cAAI;AACFM,qBAAS;UACX,QAAQ;AAEN,iBAAK,iBAAiB;UACxB;QACF,CAAC;AAED,cAAMA,WAAWA,MAAM;AACrB,gBAAMC,UAAU,IAAIC,WAAW;AAE/B1R,yBAAec,KAAK,QAAQ2Q,SAAS,CAACA,QAAQvR,MAAM,CAAC;QACvD;AAKAsR,iBAAS;AACT;MACF,QAAQ;AACNG,aAAK,+BAA+B;MACtC;AAGA,WAAK,iBAAiB;IACxB;IAEA,mBAAmB;AACjB,UAAI,CAAC3W,WAAU,mBAAmB;AAChC4W,aAAK,yBAAyB;AAC9B5W,mBAAU,oBAAoB;MAChC;AAEAA,iBAAU6W,uBACPjS,KAAKkS,0BAAwB;AAC5B,YAAI,KAAKjS,WAAW;AAClB,eAAK,YAAYoB,OAAO,IAAInB,MAAM,sBAAsB,CAAC;AACzD;QACF;AACA,cAAMZ,OAAO,IAAI6S,aAAa;AAC9B,aAAK,QAAQ7S;AAGb,cAAMgF,KAAK,OAAOlJ,WAAU,eAAe;AAI3C,cAAMgX,gBAAgB,IAAItR,eAAewD,KAAK,WAAWA,IAAIhF,IAAI;AACjE4S,6BAAqBG,MAAMD,eAAe9S,IAAI;AAE9C,aAAK,kBAAkB,IAAIwB,eAAewD,IAAIA,KAAK,WAAWhF,IAAI;AAClE,aAAK,SAAS;MAChB,CAAC,EACA6B,MAAMsK,YAAU;AACf,aAAK,YAAYpK,OACf,IAAInB,MAAM,mCAAmCuL,OAAOkE,OAAO,IAAI,CACjE;MACF,CAAC;IACL;IAKAjO,UAAU;AACR,WAAKzB,YAAY;AAGjB,WAAK,YAAYuR,UAAU;AAC3B,WAAK,aAAa;AAElBpW,iBAAU,aAAa2P,OAAO,KAAK,KAAK;AACxC,WAAK,QAAQ;AAEb,WAAK,iBAAiBrJ,QAAQ;AAC9B,WAAK,kBAAkB;IACzB;IAMA,OAAOrC,OAAO0M,QAAQ;AACpB,YAAMuG,aAAa,KAAK,aAAa9I,IAAIuC,QAAQzM,IAAI;AACrD,UAAIgT,YAAY;AACd,YAAIA,WAAW3Q,iBAAiB;AAC9B,gBAAM,IAAIzB,MACR,uHAEF;QACF;AACA,eAAOoS;MACT;AACA,aAAO,IAAIlX,WAAU2Q,MAAM;IAC7B;IAMA,WAAWiE,YAAY;AACrB,UAAIzQ,oBAAoByQ,WAAW;AACjC,eAAOzQ,oBAAoByQ;MAC7B;AACA,YAAM,IAAI9P,MAAM,+CAA+C;IACjE;IAEA,WAAW,kCAAkC;AAC3C,UAAI;AACF,eAAOjD,WAAWsV,aAAaL,wBAAwB;MACzD,QAAQ;AACN,eAAO;MACT;IACF;IAGA,WAAWD,yBAAyB;AAClC,YAAMO,SAAS,YAAY;AACzB,YAAI,KAAK,iCAAiC;AAExC,iBAAO,KAAK;QACd;AACA,cAAMrX,SAGA,MAAA;;;UAAqB,KAAK6U;;AAChC,eAAO7U,OAAO+W;MAChB;AAEA,aAAOrO,OAAO,MAAM,0BAA0B2O,OAAO,CAAC;IACxD;EACF;AAMA,MAAMxR,kBAAN,MAAsB;IACpB,kBAAkB,oBAAImG,IAAI;IAE1B,aAAa,oBAAIA,IAAI;IAErB,gBAAgB,oBAAIA,IAAI;IAExB,gBAAgB,oBAAIA,IAAI;IAExB,sBAAsB;IAEtBrF,YACE1B,gBACA8F,aACA3F,eACAwL,QACA0G,SACAtU,WACA;AACA,WAAKiC,iBAAiBA;AACtB,WAAK8F,cAAcA;AACnB,WAAKa,aAAa,IAAIE,WAAW;AACjC,WAAKyL,aAAa,IAAIC,WAAW;QAC/BpV,eAAewO,OAAOxO;QACtBoB,cAAcoN,OAAOpN;MACvB,CAAC;AACD,WAAKmB,gBAAgBiM,OAAOjM;AAC5B,WAAK8S,UAAU7G;AAEf,WAAKjN,gBAAgB2T,QAAQ3T;AAC7B,WAAKC,gBAAgB0T,QAAQ1T;AAC7B,WAAKC,oBAAoByT,QAAQzT;AACjC,WAAKG,0BAA0BsT,QAAQtT;AACvC,WAAKC,cAAcqT,QAAQrT;AAE3B,WAAKa,YAAY;AACjB,WAAK4S,oBAAoB;AAEzB,WAAKC,iBAAiBvS;AACtB,WAAKwS,cAAc;AACnB,WAAKC,gBAAgB;AACrB,WAAKlN,yBAAyBxE,QAAQC,cAAc;AACpD,WAAKpD,YAAYA;AAEjB,WAAK8U,oBAAoB;IAwB3B;IAEA,mBAAmBnC,OAAM1W,OAAO,MAAM;AACpC,YAAM8Y,gBAAgB,KAAK,gBAAgB1J,IAAIsH,KAAI;AACnD,UAAIoC,eAAe;AACjB,eAAOA;MACT;AACA,YAAMnT,UAAU,KAAKK,eAAeC,gBAAgByQ,OAAM1W,IAAI;AAE9D,WAAK,gBAAgBsP,IAAIoH,OAAM/Q,OAAO;AACtC,aAAOA;IACT;IAEA,IAAI0D,oBAAoB;AACtB,aAAOI,OAAO,MAAM,qBAAqB,IAAIsP,kBAAkB,CAAC;IAClE;IAEA7N,mBACEF,QACAoD,iBAAiBC,eAAeC,QAChCM,yBAAyB,MACzBC,YAAY,OACZmK,WAAW,OACX;AACA,UAAI/N,kBAAkByE,oBAAoBuJ;AAC1C,UAAIpE,gCAAgCqE;AAEpC,cAAQlO,QAAM;QACZ,KAAK;AACHC,4BAAkByE,oBAAoByJ;AACtC;QACF,KAAK;AACH;QACF,KAAK;AACHlO,4BAAkByE,oBAAoBC;AACtC;QACF;AACEiI,eAAK,wCAAwC5M,MAAM,EAAE;MACzD;AAEA,YAAM3B,oBACJ4B,kBAAkByE,oBAAoBC,SACtCf,kCAAkCwK,yBAC9BxK,yBACA,KAAKvF;AAEX,cAAQ+E,gBAAc;QACpB,KAAKC,eAAegL;AAClBpO,6BAAmByE,oBAAoB4J;AACvC;QACF,KAAKjL,eAAeC;AAClB;QACF,KAAKD,eAAekL;AAClBtO,6BAAmByE,oBAAoB8J;AACvC;QACF,KAAKnL,eAAeoL;AAClBxO,6BAAmByE,oBAAoBgK;AAEvC7E,0CAAgCxL,kBAAkBsQ;AAClD;QACF;AACE/B,eAAK,gDAAgDxJ,cAAc,EAAE;MACzE;AAEA,UAAIS,WAAW;AACb5D,2BAAmByE,oBAAoBkK;MACzC;AACA,UAAIZ,UAAU;AACZ/N,2BAAmByE,oBAAoBmK;MACzC;AAEA,YAAM;QAAEC,KAAKhF;QAAaiF,MAAMC;MAAgB,IAC9C3Q,kBAAkByL;AAEpB,YAAMmF,cAAc,CAClBhP,iBACA4J,8BAA8BkF,MAC9BC,eAAe;AAGjB,aAAO;QACL/O;QACAiE,UAAU+K,YAAYC,KAAK,GAAG;QAC9BrF;QACAC;MACF;IACF;IAEAxN,UAAU;AACR,UAAI,KAAKmR,mBAAmB;AAC1B,eAAO,KAAKA,kBAAkB9S;MAChC;AAEA,WAAKE,YAAY;AACjB,WAAK4S,oBAAoBvR,QAAQC,cAAc;AAE/C,WAAK,qBAAqBF,OACxB,IAAInB,MAAM,iDAAiD,CAC7D;AAEA,YAAMkO,SAAS,CAAA;AAGf,iBAAWmG,QAAQ,KAAK,WAAWlG,OAAO,GAAG;AAC3CD,eAAOhM,KAAKmS,KAAKpG,SAAS,CAAC;MAC7B;AACA,WAAK,WAAWM,MAAM;AACtB,WAAK,cAAcA,MAAM;AACzB,WAAK,cAAcA,MAAM;AAEzB,UAAI,KAAK+F,eAAe,mBAAmB,GAAG;AAC5C,aAAK/Q,kBAAkBgR,cAAc;MACvC;AAEA,YAAMC,aAAa,KAAKtU,eAAeC,gBAAgB,aAAa,IAAI;AACxE+N,aAAOhM,KAAKsS,UAAU;AAEtBpT,cAAQ8K,IAAIgC,MAAM,EAAEpO,KAAK,MAAM;AAC7B,aAAK+G,WAAW0H,MAAM;AACtB,aAAKiE,WAAWjE,MAAM;AACtB,aAAK,gBAAgBA,MAAM;AAC3B,aAAK1P,cAAc2C,QAAQ;AAC3BiT,kBAAU5O,QAAQ;AAElB,aAAK+M,gBAAgB8B,kBACnB,IAAIlF,eAAe,wBAAwB,CAC7C;AAEA,aAAKtP,gBAAgBsB,QAAQ;AAC7B,aAAKtB,iBAAiB;AAEtB,aAAKyS,kBAAkB5P,QAAQ;MACjC,GAAG,KAAK4P,kBAAkBxR,MAAM;AAChC,aAAO,KAAKwR,kBAAkB9S;IAChC;IAEAkT,sBAAsB;AACpB,YAAM;QAAE7S;QAAgB8F;MAAY,IAAI;AAExC9F,qBAAe6Q,GAAG,aAAa,CAAC7W,MAAMya,SAAS;AAC7CC,QAAAA,QACE,KAAKhC,gBACL,iDACF;AACA,aAAKC,cAAc,KAAKD,eAAeiC,cAAc;AACrD,aAAKhC,YAAYtR,aAAauT,SAAO;AACnC,eAAKhC,gBAAgB;YACnBpQ,QAAQoS,IAAIpS;YACZC,OAAOmS,IAAInS;UACb;QACF;AACAgS,aAAKI,SAAS,MAAM;AAClB,eAAKlC,YACFpF,KAAK,EACL3N,KAAK,SAAU;YAAE4N;YAAOC;UAAK,GAAG;AAC/B,gBAAIA,MAAM;AACRgH,mBAAKK,MAAM;AACX;YACF;AACAJ,YAAAA,QACElH,iBAAiB1T,aACjB,sCACF;AAGA2a,iBAAKM,QAAQ,IAAIrD,WAAWlE,KAAK,GAAG,GAAG,CAACA,KAAK,CAAC;UAChD,CAAC,EACAzM,MAAMsK,YAAU;AACfoJ,iBAAKhK,MAAMY,MAAM;UACnB,CAAC;QACL;AAEAoJ,aAAKO,WAAW3J,YAAU;AACxB,eAAKsH,YAAYvE,OAAO/C,MAAM;AAE9BoJ,eAAKQ,MAAMlU,MAAMmU,iBAAe;AAC9B,gBAAI,KAAKrV,WAAW;AAClB;YACF;AACA,kBAAMqV;UACR,CAAC;QACH;MACF,CAAC;AAEDlV,qBAAe6Q,GAAG,sBAAsB,OAAM7W,SAAQ;AACpD,cAAM,KAAK2Y,YAAYwC;AAEvB,cAAM;UAAEC;UAAsBC;UAAkBC;QAAc,IAC5D,KAAK3C;AAIP,YAAI,CAACyC,wBAAwB,CAACC,kBAAkB;AAC9C,cAAI,KAAKzC,eAAe;AACtB9M,wBAAYzE,aAAa,KAAKuR,aAAa;UAC7C;AACA,eAAKD,YAAYtR,aAAauT,SAAO;AACnC9O,wBAAYzE,aAAa;cACvBmB,QAAQoS,IAAIpS;cACZC,OAAOmS,IAAInS;YACb,CAAC;UACH;QACF;AAEA,eAAO;UAAE2S;UAAsBC;UAAkBC;QAAc;MACjE,CAAC;AAEDtV,qBAAe6Q,GAAG,kBAAkB,CAAC7W,MAAMya,SAAS;AAClDC,QAAAA,QACE,KAAKhC,gBACL,sDACF;AACA,cAAM6C,cAAc,KAAK7C,eAAe8C,eACtCxb,KAAKqI,OACLrI,KAAK+I,GACP;AAYA,YAAI,CAACwS,aAAa;AAChBd,eAAKK,MAAM;AACX;QACF;AAEAL,aAAKI,SAAS,MAAM;AAClBU,sBACGhI,KAAK,EACL3N,KAAK,SAAU;YAAE4N;YAAOC;UAAK,GAAG;AAC/B,gBAAIA,MAAM;AACRgH,mBAAKK,MAAM;AACX;YACF;AACAJ,YAAAA,QACElH,iBAAiB1T,aACjB,2CACF;AACA2a,iBAAKM,QAAQ,IAAIrD,WAAWlE,KAAK,GAAG,GAAG,CAACA,KAAK,CAAC;UAChD,CAAC,EACAzM,MAAMsK,YAAU;AACfoJ,iBAAKhK,MAAMY,MAAM;UACnB,CAAC;QACL;AAEAoJ,aAAKO,WAAW3J,YAAU;AACxBkK,sBAAYnH,OAAO/C,MAAM;AAEzBoJ,eAAKQ,MAAMlU,MAAMmU,iBAAe;AAC9B,gBAAI,KAAKrV,WAAW;AAClB;YACF;AACA,kBAAMqV;UACR,CAAC;QACH;MACF,CAAC;AAEDlV,qBAAe6Q,GAAG,UAAU,CAAC;QAAE1N;MAAQ,MAAM;AAC3C,aAAKsS,YAAYtS,QAAQG;AACzB,aAAKI,cAAcP,QAAQuS;AAC3B,eAAOvS,QAAQuS;AACf5P,oBAAY9E,YAAY6B,QAAQ,IAAIK,iBAAiBC,SAAS,IAAI,CAAC;MACrE,CAAC;AAEDnD,qBAAe6Q,GAAG,gBAAgBrP,QAAM;AACtCsE,oBAAY9E,YAAYC,OAAO0U,WAAWnU,EAAE,CAAC;MAC/C,CAAC;AAEDxB,qBAAe6Q,GAAG,mBAAmBrP,QAAM;AACzC,aAAK,sBAAsBN,QAAQC,cAAc;AAEjD,YAAI;AACF,cAAI,CAAC2E,YAAY1E,YAAY;AAC3B,kBAAMuU,WAAWnU,EAAE;UACrB;AAEA,gBAAMoU,iBAAiBpb,cAAY;AACjC,gBAAIA,oBAAoBsF,OAAO;AAC7B,mBAAK,oBAAoBmB,OAAOzG,QAAQ;YAC1C,OAAO;AACL,mBAAK,oBAAoBqI,QAAQ;gBAAErI;cAAS,CAAC;YAC/C;UACF;AACAsL,sBAAY1E,WAAWwU,gBAAgBpU,GAAGqU,IAAI;QAChD,SAASC,KAAK;AACZ,eAAK,oBAAoB7U,OAAO6U,GAAG;QACrC;AACA,eAAO,KAAK,oBAAoBnW;MAClC,CAAC;AAEDK,qBAAe6Q,GAAG,cAAc7W,UAAQ;AAGtC8L,oBAAYzE,aAAa;UACvBmB,QAAQxI,KAAKiE;UACbwE,OAAOzI,KAAKiE;QACd,CAAC;AAED,aAAKyH,uBAAuB7C,QAAQ7I,IAAI;MAC1C,CAAC;AAEDgG,qBAAe6Q,GAAG,mBAAmB7W,UAAQ;AAC3C,YAAI,KAAK6F,WAAW;AAClB;QACF;AAEA,cAAMsU,OAAO,KAAK,WAAW/K,IAAIpP,KAAKoM,SAAS;AAC/C+N,aAAK3F,iBAAiBxU,KAAKiS,cAAcjS,KAAKkP,QAAQ;MACxD,CAAC;AAEDlJ,qBAAe6Q,GAAG,aAAa,CAAC,CAAC3M,IAAIqM,MAAMwF,YAAY,MAAM;AAC3D,YAAI,KAAKlW,WAAW;AAClB,iBAAO;QACT;AAEA,YAAI,KAAK8G,WAAWiK,IAAI1M,EAAE,GAAG;AAC3B,iBAAO;QACT;AAEA,gBAAQqM,MAAI;UACV,KAAK;AACH,gBAAI,WAAWwF,cAAc;AAC3B,oBAAMC,gBAAgBD,aAAatL;AACnCmH,mBAAK,8BAA8BoE,aAAa,EAAE;AAClD,mBAAKrP,WAAW9D,QAAQqB,IAAI8R,aAAa;AACzC;YACF;AAEA,kBAAMC,WAAW,IAAIC,SAASH,YAAY;AAC1C,kBAAMI,cACJ,KAAK3D,QAAQhV,UAAUX,WAAWuZ,eAAe9L,UAC7C,CAAC+L,OAAMxc,QAAQgD,WAAWuZ,cAAcE,UAAUD,OAAMxc,GAAG,IAC3D;AACN,kBAAMwc,OAAO,IAAIE,eACfN,UACAE,aACAJ,aAAaS,OACbT,aAAaU,oBACf;AAEA,iBAAKnE,WACFoE,KAAKL,IAAI,EACTtV,MAAM,MAAMf,eAAeC,gBAAgB,gBAAgB;cAAEiE;YAAG,CAAC,CAAC,EAClEyS,QAAQ,MAAM;AACb,kBAAI,CAACN,KAAKpZ,uBAAuBoZ,KAAKrc,MAAM;AAM1Cqc,qBAAKO,UAAU;cACjB;AACA,mBAAKjQ,WAAW9D,QAAQqB,IAAImS,IAAI;YAClC,CAAC;AACH;UACF,KAAK;AACH,kBAAM;cAAEQ;YAAS,IAAId;AACrBrB,YAAAA,QAAOmC,UAAU,+BAA+B;AAEhD,uBAAWC,aAAa,KAAK,WAAW7I,OAAO,GAAG;AAChD,yBAAW,CAAA,EAAGjU,IAAI,KAAK8c,UAAUlQ,MAAM;AACrC,oBAAI5M,MAAM+J,QAAQ8S,UAAU;AAC1B;gBACF;AACA,oBAAI,CAAC7c,KAAK+c,SAAS;AACjB,yBAAO;gBACT;AACA,qBAAKpQ,WAAW9D,QAAQqB,IAAI8S,gBAAgBhd,IAAI,CAAC;AACjD,uBAAOA,KAAK+c;cACd;YACF;AACA;UACF,KAAK;AACH,iBAAKpQ,WAAW9D,QAAQqB,IAAI,IAAI+S,aAAalB,YAAY,CAAC;AAC1D;UACF,KAAK;AACH,iBAAKpP,WAAW9D,QAAQqB,IAAI6R,YAAY;AACxC;UACF,KAAK;AACH,kBAAMmB,UAAU,IAAIC,YAAYpB,YAAY;AAC5C,iBAAKpP,WAAW9D,QAAQqB,IAAIgT,QAAQE,MAAM,CAAC;AAC3C;UACF;AACE,kBAAM,IAAItX,MAAM,kCAAkCyQ,IAAI,EAAE;QAC5D;AAEA,eAAO;MACT,CAAC;AAEDvQ,qBAAe6Q,GAAG,OAAO,CAAC,CAAC3M,IAAIkC,WAAWmK,MAAM8G,SAAS,MAAM;AAC7D,YAAI,KAAKxX,WAAW;AAElB;QACF;AAEA,cAAMiX,YAAY,KAAK,WAAW1N,IAAIhD,SAAS;AAC/C,YAAI0Q,UAAUlQ,KAAKgK,IAAI1M,EAAE,GAAG;AAC1B;QACF;AAEA,YAAI4S,UAAUhQ,cAAcgG,SAAS,GAAG;AACtCuK,qBAAWC,QAAQxC,MAAM;AACzB;QACF;AAEA,gBAAQvE,MAAI;UACV,KAAK;UACL,KAAK;AACHuG,sBAAUlQ,KAAK/D,QAAQqB,IAAImT,SAAS;AACpC;UACF;AACE,kBAAM,IAAIvX,MAAM,2BAA2ByQ,IAAI,EAAE;QACrD;MACF,CAAC;AAEDvQ,qBAAe6Q,GAAG,eAAe7W,UAAQ;AACvC,YAAI,KAAK6F,WAAW;AAClB;QACF;AACAiG,oBAAYzE,aAAa;UACvBmB,QAAQxI,KAAKwI;UACbC,OAAOzI,KAAKyI;QACd,CAAC;MACH,CAAC;AAEDzC,qBAAe6Q,GAAG,mBAAmB,OAAM7W,SAAQ;AAIjD,YAAI,KAAK6F,WAAW;AAClB,gBAAM,IAAIC,MAAM,uBAAuB;QACzC;AACA,cAAMuS,UAAU,KAAKrY,KAAKuW,IAAI;AAE9B,YAAI,CAAC8B,SAAS;AACZ,gBAAM,IAAIvS,MACR,GAAG9F,KAAKuW,IAAI,yDACd;QACF;AACA,eAAO8B,QAAQkF,MAAMvd,IAAI;MAC3B,CAAC;IACH;IAEAyH,UAAU;AACR,aAAO,KAAKzB,eAAeC,gBAAgB,WAAW,IAAI;IAC5D;IAEAqF,eAAe;AACb,UAAI,KAAKjC,kBAAkByJ,QAAQ,GAAG;AACpC8E,aACE,gGAEF;MACF;AACA,YAAM;QAAE7C,KAAAA;QAAKC;MAAS,IAAI,KAAK3L,kBAAkBsQ;AAEjD,aAAO,KAAK3T,eACTC,gBACC,gBACA;QACEuD,WAAW,CAAC,CAAC,KAAKE;QAClBJ,UAAU,KAAKmS;QACfpS,mBAAmB0L;QACnByI,UAAU,KAAK7E,aAAa6E,YAAY;MAC1C,GACAxI,QACF,EACC2H,QAAQ,MAAM;AACb,aAAKtT,kBAAkBgR,cAAc;MACvC,CAAC;IACL;IAEA9O,aAAaC,WAAW;AACtB,aAAO,KAAKxF,eAAeC,gBAAgB,gBAAgB;QAAEuF;MAAU,CAAC;IAC1E;IAEA5B,QAAQC,YAAY;AAClB,UACE,CAAChJ,OAAOC,UAAU+I,UAAU,KAC5BA,cAAc,KACdA,aAAa,KAAK4R,WAClB;AACA,eAAOvU,QAAQD,OAAO,IAAInB,MAAM,uBAAuB,CAAC;MAC1D;AAEA,YAAMsG,YAAYvC,aAAa,GAC7BiP,gBAAgB,KAAK,cAAc1J,IAAIhD,SAAS;AAClD,UAAI0M,eAAe;AACjB,eAAOA;MACT;AACA,YAAMnT,UAAU,KAAKK,eAClBC,gBAAgB,WAAW;QAC1BmG;MACF,CAAC,EACAxG,KAAKyG,cAAY;AAChB,YAAI,KAAKxG,WAAW;AAClB,gBAAM,IAAIC,MAAM,qBAAqB;QACvC;AACA,YAAIuG,SAASoR,QAAQ;AACnB,eAAK,cAAcnO,IAAIjD,SAASoR,QAAQ5T,UAAU;QACpD;AAEA,cAAMsQ,OAAO,IAAIhO,aACfC,WACAC,UACA,MACA,KAAKmM,QAAQhV,MACf;AACA,aAAK,WAAW8L,IAAIlD,WAAW+N,IAAI;AACnC,eAAOA;MACT,CAAC;AACH,WAAK,cAAc7K,IAAIlD,WAAWzG,OAAO;AACzC,aAAOA;IACT;IAEAmE,aAAaC,KAAK;AAChB,UAAI,CAAC2T,WAAW3T,GAAG,GAAG;AACpB,eAAO7C,QAAQD,OAAO,IAAInB,MAAM,4BAA4B,CAAC;MAC/D;AACA,aAAO,KAAKE,eAAeC,gBAAgB,gBAAgB;QACzD0X,KAAK5T,IAAI4T;QACTC,KAAK7T,IAAI6T;MACX,CAAC;IACH;IAEAhQ,eAAexB,WAAWpB,QAAQ;AAChC,aAAO,KAAKhF,eAAeC,gBAAgB,kBAAkB;QAC3DmG;QACApB;MACF,CAAC;IACH;IAEAgB,kBAAkB;AAChB,aAAO,KAAK,mBAAmB,iBAAiB;IAClD;IAEAC,eAAe;AACb,aAAO,KAAK,mBAAmB,cAAc;IAC/C;IAEAC,yBAAyB;AACvB,aAAO,KAAKlG,eAAeC,gBAAgB,0BAA0B,IAAI;IAC3E;IAEA+D,kBAAkB;AAChB,aAAO,KAAKhE,eAAeC,gBAAgB,mBAAmB,IAAI;IACpE;IAEAgE,eAAeC,IAAI;AACjB,UAAI,OAAOA,OAAO,UAAU;AAC1B,eAAOhD,QAAQD,OAAO,IAAInB,MAAM,8BAA8B,CAAC;MACjE;AACA,aAAO,KAAKE,eAAeC,gBAAgB,kBAAkB;QAC3DiE;MACF,CAAC;IACH;IAEAC,gBAAgB;AACd,aAAO,KAAKnE,eAAeC,gBAAgB,iBAAiB,IAAI;IAClE;IAEAmE,gBAAgB;AACd,aAAO,KAAKpE,eAAeC,gBAAgB,iBAAiB,IAAI;IAClE;IAEAoE,cAAc;AACZ,aAAO,KAAKrE,eAAeC,gBAAgB,eAAe,IAAI;IAChE;IAEAqE,uBAAuB;AACrB,aAAO,KAAKtE,eAAeC,gBAAgB,wBAAwB,IAAI;IACzE;IAEAsE,gBAAgB;AACd,aAAO,KAAKvE,eAAeC,gBAAgB,iBAAiB,IAAI;IAClE;IAEAuE,iBAAiB;AACf,aAAO,KAAKxE,eAAeC,gBAAgB,kBAAkB,IAAI;IACnE;IAEAwE,qBAAqBC,QAAOC,mBAAmB;AAC7C,aAAO,KAAK3E,eAAeC,gBAAgB,wBAAwB;QACjEyE,OAAAA;QACAC;MACF,CAAC;IACH;IAEAE,kBAAkB;AAChB,aAAO,KAAK,mBAAmB,iBAAiB;IAClD;IAEAgD,iBAAiBzB,WAAW;AAC1B,aAAO,KAAKpG,eAAeC,gBAAgB,oBAAoB;QAC7DmG;MACF,CAAC;IACH;IAEA0H,cAAc1H,WAAW;AACvB,aAAO,KAAKpG,eAAeC,gBAAgB,iBAAiB;QAC1DmG;MACF,CAAC;IACH;IAEAtB,aAAa;AACX,aAAO,KAAK9E,eAAeC,gBAAgB,cAAc,IAAI;IAC/D;IAEA8E,yBAAyBE,iBAAiB;AACxC,aAAO,KAAK,mBAAmB,0BAA0B,EAAErF,KACzD5F,UAAQ,IAAI6d,sBAAsB7d,MAAMiL,eAAe,CACzD;IACF;IAEAE,iBAAiB;AACf,aAAO,KAAKnF,eAAeC,gBAAgB,kBAAkB,IAAI;IACnE;IAEAmF,cAAc;AACZ,YAAMsL,QAAO,eACXoC,gBAAgB,KAAK,gBAAgB1J,IAAIsH,KAAI;AAC/C,UAAIoC,eAAe;AACjB,eAAOA;MACT;AACA,YAAMnT,UAAU,KAAKK,eAClBC,gBAAgByQ,OAAM,IAAI,EAC1B9Q,KAAKkY,cAAY;QAChBnG,MAAMmG,QAAQ,CAAC;QACfC,UAAUD,QAAQ,CAAC,IAAI,IAAIE,SAASF,QAAQ,CAAC,CAAC,IAAI;QAClDjW,4BAA4B,KAAK8Q,aAAa6E,YAAY;QAC1DlC,eAAe,KAAK3C,aAAa2C,iBAAiB;QAClD2C,eAAeH,QAAQ,CAAC;MAC1B,EAAE;AACJ,WAAK,gBAAgBxO,IAAIoH,OAAM/Q,OAAO;AACtC,aAAOA;IACT;IAEA0F,cAAc;AACZ,aAAO,KAAKrF,eAAeC,gBAAgB,eAAe,IAAI;IAChE;IAEA,MAAM4F,aAAaD,kBAAkB,OAAO;AAC1C,UAAI,KAAK/F,WAAW;AAClB;MACF;AACA,YAAM,KAAKG,eAAeC,gBAAgB,WAAW,IAAI;AAEzD,iBAAWkU,QAAQ,KAAK,WAAWlG,OAAO,GAAG;AAC3C,cAAMiK,oBAAoB/D,KAAKxO,QAAQ;AAEvC,YAAI,CAACuS,mBAAmB;AACtB,gBAAM,IAAIpY,MACR,sBAAsBqU,KAAKtQ,UAAU,0BACvC;QACF;MACF;AACA,WAAK8C,WAAW0H,MAAM;AACtB,UAAI,CAACzI,iBAAiB;AACpB,aAAK0M,WAAWjE,MAAM;MACxB;AACA,WAAK,gBAAgBA,MAAM;AAC3B,WAAK1P,cAAc2C,QAAwB,IAAI;AAC/CiT,gBAAU5O,QAAQ;IACpB;IAEAI,iBAAiBhC,KAAK;AACpB,UAAI,CAAC2T,WAAW3T,GAAG,GAAG;AACpB,eAAO;MACT;AACA,YAAM0T,SAAS1T,IAAI6T,QAAQ,IAAI,GAAG7T,IAAI4T,GAAG,MAAM,GAAG5T,IAAI4T,GAAG,IAAI5T,IAAI6T,GAAG;AACpE,aAAO,KAAK,cAAcxO,IAAIqO,MAAM,KAAK;IAC3C;EACF;AAKA,MAAMU,aAAN,MAAiB;IACf,sBAAsB;IAQtBC,aAAa;IAUbC,UAAU;IAEV3W,YAAYkJ,oBAAoB;AAC9B,WAAK,sBAAsBA;IAQ7B;IAMA,IAAIjL,UAAU;AACZ,aAAO,KAAK,oBAAoBwL,WAAWxL;IAC7C;IASAyO,OAAOgB,aAAa,GAAG;AACrB,WAAK,oBAAoBhB,OAAqB,MAAMgB,UAAU;IAChE;IAMA,IAAInF,iBAAiB;AACnB,YAAM;QAAEA;MAAe,IAAI,KAAK,oBAAoBJ;AACpD,UAAI,CAACI,gBAAgB;AACnB,eAAO;MACT;AACA,YAAM;QAAEvB;MAAoB,IAAI,KAAK;AACrC,aACEuB,eAAeqO,QACdrO,eAAe/B,UAAUQ,qBAAqBoE,OAAO;IAE1D;EACF;AAMA,MAAMrB,qBAAN,MAAMA,oBAAmB;IACvB,OAAO;IAEP,OAAO,eAAe,oBAAI8M,QAAQ;IAElC7W,YAAY;MACVgK,UAAAA;MACAC;MACA/E;MACAD;MACA+B;MACAmB;MACAzD;MACA1H;MACAC;MACAkN,2BAA2B;MAC3BrO,SAAS;MACTmL,aAAa;MACb5K,YAAY;MACZgL,mBAAmB;IACrB,GAAG;AACD,WAAK2C,WAAWA;AAChB,WAAKC,SAASA;AACd,WAAK/E,OAAOA;AACZ,WAAKD,aAAaA;AAClB,WAAK+B,sBAAsBA;AAC3B,WAAK8P,kBAAkB;AACvB,WAAK3O,eAAeA;AACpB,WAAKvD,aAAaF;AAClB,WAAK1H,gBAAgBA;AACrB,WAAKC,gBAAgBA;AACrB,WAAK+H,UAAUlJ;AACf,WAAKmL,aAAaA;AAElB,WAAK8P,UAAU;AACf,WAAKC,wBAAwB;AAC7B,WAAKC,gBAAgB;AACrB,WAAKC,4BACH/M,6BAA6B,QAAQ,OAAOiF,WAAW;AACzD,WAAK+H,YAAY;AACjB,WAAK1N,aAAajK,QAAQC,cAAc;AACxC,WAAKlH,OAAO,IAAIke,WAAW,IAAI;AAE/B,WAAKW,eAAe,KAAK1K,OAAOsI,KAAK,IAAI;AACzC,WAAKqC,iBAAiB,KAAKC,UAAUtC,KAAK,IAAI;AAC9C,WAAKuC,qBAAqB,KAAKC,cAAcxC,KAAK,IAAI;AACtD,WAAKyC,aAAa,KAAKC,MAAM1C,KAAK,IAAI;AACtC,WAAK2C,UAAU1N,OAAOzD;AACtB,WAAKoR,iBAAiB3N,OAAOzD,SAAS,OAAOyD,OAAO1D;AACpD,WAAKsR,aAAaxb;AAClB,WAAKyb,qBAAqB7N,OAAOb;AACjC,WAAK2O,oBAAoB1Q;IAC3B;IAEA,IAAIoF,YAAY;AACd,aAAO,KAAKhD,WAAWxL,QAAQoB,MAAM,WAAY;MAGjD,CAAC;IACH;IAEAoL,mBAAmB;MAAEF,eAAe;MAAOC;IAAsB,GAAG;AAClE,UAAI,KAAK2M,WAAW;AAClB;MACF;AACA,UAAI,KAAKQ,SAAS;AAChB,YAAI5N,oBAAmB,aAAamF,IAAI,KAAKyI,OAAO,GAAG;AACrD,gBAAM,IAAIvZ,MACR,iJAGF;QACF;AACA2L,4BAAmB,aAAaD,IAAI,KAAK6N,OAAO;MAClD;AAEA,UAAI,KAAK3S,WAAW7J,WAAWwN,gBAAgBC,SAAS;AACtD,aAAKU,UAAUnO,WAAWwN,eAAepL,OAAO,KAAKqH,UAAU;AAC/D,aAAK0E,QAAQ0O,KAAK,KAAK7P,YAAY;AACnC,aAAKmB,QAAQ2O,iBAAiB,KAAK3O,QAAQ4O,kBAAkB;MAC/D;AACA,YAAM;QAAEzR;QAAUI;QAAWC;QAAYsC;MAAkB,IAAI,KAAKa;AAIpE,YAAM1D,gBACJ,KAAKqR,kBACL,KAAKD,QAAQQ,WAAW,MAAM;QAC5BC,OAAO;QACPC,oBAAoB,CAAC,KAAKR;MAC5B,CAAC;AAEH,WAAK1O,MAAM,IAAImP,eACb/R,eACA,KAAKtB,YACL,KAAKC,MACL,KAAKlI,eACL,KAAKC,eACL;QAAEuN;MAAsB,GACxB,KAAKxD,qBACL,KAAKC,YACLmC,iBACF;AACA,WAAKD,IAAIoP,aAAa;QACpB1R;QACAJ;QACA8D;QACAzD;MACF,CAAC;AACD,WAAKgQ,kBAAkB;AACvB,WAAKG,gBAAgB;AACrB,WAAKD,wBAAwB;IAC/B;IAEAtK,OAAO3D,QAAQ,MAAM2E,aAAa,GAAG;AACnC,WAAKqJ,UAAU;AACf,WAAKI,YAAY;AACjB,WAAKhO,KAAKqP,WAAW;AACrB,UAAI,KAAK,MAAM;AACbpJ,eAAOqJ,qBAAqB,KAAK,IAAI;AACrC,aAAK,OAAO;MACd;AACA1O,0BAAmB,aAAad,OAAO,KAAK0O,OAAO;AAEnD5O,gBAAU,IAAIyE,4BACZ,6BAA6B,KAAK5I,aAAa,CAAC,IAChD8I,UACF;AACA,WAAK1D,SAASjB,KAAK;AAEnB,WAAKxQ,KAAKoe,UAAU5N,KAAK;IAC3B;IAEA2B,sBAAsB;AACpB,UAAI,CAAC,KAAKuM,eAAe;AACvB,aAAKD,0BAA0B,KAAKK;AACpC;MACF;AACA,WAAKlO,IAAIC,mBAAmBsP,oBAC1B,KAAKvQ,aAAaC,QAAQ7L,MAC5B;AACA,WAAK+M,SAASqP,mBAAmB,KAAKxQ,YAAY;AAElD,UAAI,KAAK4O,SAAS;AAChB;MACF;AACA,WAAKO,UAAU;IACjB;IAEAA,YAAY;AACV,WAAKP,UAAU;AACf,UAAI,KAAKI,WAAW;AAClB;MACF;AACA,UAAI,KAAK5e,KAAKme,YAAY;AACxB,aAAKne,KAAKme,WAAW,KAAKa,kBAAkB;MAC9C,OAAO;AACL,aAAKC,cAAc;MACrB;IACF;IAEAA,gBAAgB;AACd,UAAI,KAAKN,2BAA2B;AAClC,aAAK,OAAO9H,OAAOwJ,sBAAsB,MAAM;AAC7C,eAAK,OAAO;AACZ,eAAKnB,WAAW,EAAEpY,MAAM,KAAK+X,YAAY;QAC3C,CAAC;MACH,OAAO;AACL5X,gBAAQ2B,QAAQ,EAAEjD,KAAK,KAAKuZ,UAAU,EAAEpY,MAAM,KAAK+X,YAAY;MACjE;IACF;IAEA,MAAMM,QAAQ;AACZ,UAAI,KAAKP,WAAW;AAClB;MACF;AACA,WAAKL,kBAAkB,KAAK3N,IAAI0P,oBAC9B,KAAK1Q,cACL,KAAK2O,iBACL,KAAKO,gBACL,KAAK/N,SACL,KAAKyO,iBACP;AACA,UAAI,KAAKjB,oBAAoB,KAAK3O,aAAaE,UAAU9L,QAAQ;AAC/D,aAAKwa,UAAU;AACf,YAAI,KAAK5O,aAAaG,WAAW;AAC/B,eAAKa,IAAIqP,WAAW;AACpBzO,8BAAmB,aAAad,OAAO,KAAK0O,OAAO;AAEnD,eAAK3N,SAAS;QAChB;MACF;IACF;EACF;AAGA,MAAM8O,WAC8B;AAEpC,MAAMC,QAC8B;ACnzGpC,MAAMC,cAAN,MAAMA,aAAY;IAChB,UAAU;IAEV,gBAAgB;IAEhB;IAEA,YAAY;IAEZ,2BAA2B;IAE3B,qBAAqB;IAErB,UAAU;IAEV;IAEA,kBAAkB;IAElB,aAAa;IAEb,OAAO,aAAa;IAEpB,WAAWC,mBAAmB;AAC5B,aAAOC,OACL,MACA,oBACA,IAAIC,gBAAgB,CAClB,CACE,CAAC,UAAU,YAAY,GACvBH,aAAYI,UAAUC,yBAAyB,GAEjD,CAAC,CAAC,KAAK,OAAO,GAAGL,aAAYI,UAAUE,wBAAwB,GAC/D,CACE,CAAC,aAAa,cAAc,iBAAiB,gBAAgB,GAC7DN,aAAYI,UAAUG,WAAW,GAEnC,CACE,CAAC,WAAW,aAAa,eAAe,eAAe,GACvDP,aAAYI,UAAUI,eAAe,GAEvC,CAAC,CAAC,QAAQ,UAAU,GAAGR,aAAYI,UAAUK,gBAAgB,GAC7D,CAAC,CAAC,OAAO,SAAS,GAAGT,aAAYI,UAAUM,UAAU,CAAC,CACvD,CACH;IACF;IAEAC,YAAY;MAAEC,SAAS;MAAMC,YAAY;IAAK,GAAG;AAC/C,UAAID,QAAQ;AACV,aAAK,qBAAqB;AAC1B,aAAK,UAAUA;MACjB,OAAO;AACL,aAAK,qBAAqB;MAC5B;AACA,WAAK,aAAaA,QAAQE,cAAcD;AACxC,WAAK,YAAY,KAAK,WAAWE;AACjC,WAAK,gBACHH,QAAQI,OAAOC,YAAY,KAC3B,KAAK,YAAYC,gBAAgBC,OAAO,EAAEC,KAAK,EAAEC,SACjD;AAEFrB,mBAAY,eAAesB,OAAOC,OAAO;QACvCC,MAAM;QACNC,OAAO;QACPC,MAAM;QACNC,KAAK;QACLC,QAAQ;MACV,CAAC;IACH;IAEAC,eAAe;AACb,YAAMC,SAAU,KAAK,UAAUC,SAASC,cAAc,QAAQ;AAC9DF,aAAOG,YAAY;AACnBH,aAAOI,WAAW;AAClBJ,aAAOK,aAAa,gBAAgB,iCAAiC;AACrEL,aAAOM,eAAe;AACtB,UAAI,KAAK,SAAS;AAChBN,eAAOO,eAAe,GAAG,KAAK,QAAQC,EAAE;MAC1C;AACA,YAAMC,SAAS,KAAK,WAAWC;AAC/BV,aAAOW,iBAAiB,SAAS,KAAK,cAAcC,KAAK,IAAI,GAAG;QAAEH;MAAO,CAAC;AAC1ET,aAAOW,iBAAiB,WAAW,KAAK,SAASC,KAAK,IAAI,GAAG;QAAEH;MAAO,CAAC;AACvE,YAAMI,SAAU,KAAK,gBAAgBZ,SAASC,cAAc,MAAM;AAClEW,aAAOV,YAAY;AACnBU,aAAOC,aAAa;AACpBD,aAAOE,MAAMC,kBAAkB,KAAK;AACpChB,aAAOiB,OAAOJ,MAAM;AACpB,aAAOb;IACT;IAEAkB,qBAAqB;AACnB,YAAMC,WAAY,KAAK,YAAY,KAAK,iBAAiB;AACzDA,eAASC,kBAAkB;AAC3BD,eAASE,iBAAiB;AAE1B,aAAOF;IACT;IAEA,mBAAmB;AACjB,YAAMG,MAAMrB,SAASC,cAAc,KAAK;AACxC,YAAMO,SAAS,KAAK,WAAWC;AAC/BY,UAAIX,iBAAiB,eAAeY,eAAe;QAAEd;MAAO,CAAC;AAC7Da,UAAInB,YAAY;AAChBmB,UAAIE,OAAO;AACXF,UAAIG,sBAAsB;AAC1BH,UAAIF,kBAAkB;AACtBE,UAAIjB,aAAa,gBAAgB,mCAAmC;AACpE,UAAI,KAAK,SAAS;AAChBiB,YAAId,KAAK,GAAG,KAAK,QAAQA,EAAE;MAC7B;AACA,iBAAW,CAACkB,OAAMxC,MAAK,KAAK,KAAK,WAAWE,iBAAiB;AAC3D,cAAMY,SAASC,SAASC,cAAc,QAAQ;AAC9CF,eAAOI,WAAW;AAClBJ,eAAOwB,OAAO;AACdxB,eAAOK,aAAa,cAAcnB,MAAK;AACvCc,eAAO2B,QAAQD;AACf1B,eAAOK,aAAa,gBAAgBnC,aAAY,WAAWwD,KAAI,CAAC;AAChE,cAAMb,SAASZ,SAASC,cAAc,MAAM;AAC5CF,eAAOiB,OAAOJ,MAAM;AACpBA,eAAOV,YAAY;AACnBU,eAAOE,MAAMC,kBAAkB9B;AAC/Bc,eAAO4B,eAAe1C,WAAU,KAAK;AACrCc,eAAOW,iBAAiB,SAAS,KAAK,aAAaC,KAAK,MAAM1B,MAAK,GAAG;UACpEuB;QACF,CAAC;AACDa,YAAIL,OAAOjB,MAAM;MACnB;AAEAsB,UAAIX,iBAAiB,WAAW,KAAK,SAASC,KAAK,IAAI,GAAG;QAAEH;MAAO,CAAC;AAEpE,aAAOa;IACT;IAEA,aAAapC,QAAO2C,QAAO;AACzBA,MAAAA,OAAMC,gBAAgB;AACtB,WAAK,UAAUC,SAAS,gCAAgC;QACtDC,QAAQ;QACRC,MAAMC,2BAA2BC;QACjC5C,OAAOL;MACT,CAAC;AACD,WAAKkD,YAAYlD,MAAK;IACxB;IAEAV,yBAAyBqD,QAAO;AAC9B,UAAIA,OAAMQ,WAAW,KAAK,SAAS;AACjC,aAAK,cAAcR,MAAK;AACxB;MACF;AACA,YAAM3C,SAAQ2C,OAAMQ,OAAOC,aAAa,YAAY;AACpD,UAAI,CAACpD,QAAO;AACV;MACF;AACA,WAAK,aAAaA,QAAO2C,MAAK;IAChC;IAEApD,YAAYoD,QAAO;AACjB,UAAI,CAAC,KAAK,oBAAoB;AAC5B,aAAK,cAAcA,MAAK;AACxB;MACF;AACA,UAAIA,OAAMQ,WAAW,KAAK,SAAS;AACjC,aAAK,UAAUE,mBAAmBC,MAAM;AACxC;MACF;AACAX,MAAAA,OAAMQ,OAAOI,aAAaD,MAAM;IAClC;IAEA9D,gBAAgBmD,QAAO;AACrB,UACEA,OAAMQ,WAAW,KAAK,WAAWE,qBACjCV,OAAMQ,WAAW,KAAK,SACtB;AACA,YAAI,KAAK,oBAAoB;AAC3B,eAAK9D,0BAA0B;QACjC;AACA;MACF;AACA,UAAI,CAAC,KAAK,oBAAoB;AAC5B,aAAK,cAAcsD,MAAK;MAC1B;AACAA,MAAAA,OAAMQ,OAAOK,iBAAiBF,MAAM;IACtC;IAEA7D,iBAAiBkD,QAAO;AACtB,UAAI,CAAC,KAAK,oBAAoB;AAC5B,aAAK,cAAcA,MAAK;AACxB;MACF;AACA,WAAK,UAAUU,mBAAmBC,MAAM;IAC1C;IAEA5D,WAAWiD,QAAO;AAChB,UAAI,CAAC,KAAK,oBAAoB;AAC5B,aAAK,cAAcA,MAAK;AACxB;MACF;AACA,WAAK,UAAUc,kBAAkBH,MAAM;IACzC;IAEA,SAASX,QAAO;AACd3D,mBAAYC,iBAAiByE,KAAK,MAAMf,MAAK;IAC/C;IAEA,cAAcA,QAAO;AACnB,UAAI,KAAK,oBAAoB;AAC3B,aAAKgB,aAAa;AAClB;MACF;AACA,WAAK,2BAA2BhB,OAAMiB,WAAW;AAEjD,UAAI,CAAC,KAAK,iBAAiB;AACzB,aAAK,kBAAkB,IAAIC,gBAAgB;AAE3CC,eAAOrC,iBAAiB,eAAe,KAAK,aAAaC,KAAK,IAAI,GAAG;UACnEH,QAAQ,KAAK,WAAWwC,eAAe,KAAK,eAAe;QAC7D,CAAC;MACH;AACA,WAAK,QAAQC,eAAe;AAC5B,UAAI,KAAK,WAAW;AAClB,aAAK,UAAUC,UAAUC,OAAO,QAAQ;AACxC;MACF;AACA,YAAMC,OAAQ,KAAK,YAAY,KAAK,iBAAiB;AACrD,WAAK,QAAQpC,OAAOoC,IAAI;IAC1B;IAEA,aAAaxB,QAAO;AAClB,UAAI,KAAK,WAAWyB,SAASzB,OAAMQ,MAAM,GAAG;AAC1C;MACF;AACA,WAAKQ,aAAa;IACpB;IAEAA,eAAe;AACb,WAAK,WAAWM,UAAUI,IAAI,QAAQ;AACtC,WAAK,QAAQL,eAAe;AAC5B,WAAK,iBAAiBM,MAAM;AAC5B,WAAK,kBAAkB;IACzB;IAEA,IAAI,qBAAqB;AACvB,aAAO,KAAK,aAAa,CAAC,KAAK,UAAUL,UAAUG,SAAS,QAAQ;IACtE;IAEA/E,4BAA4B;AAC1B,UAAI,KAAK,oBAAoB;AAC3B;MACF;AACA,UAAI,CAAC,KAAK,oBAAoB;AAG5B,aAAK,SAASkF,SAAS;AACvB;MACF;AACA,WAAKZ,aAAa;AAClB,WAAK,QAAQL,MAAM;QACjBkB,eAAe;QACfC,cAAc,KAAK;MACrB,CAAC;IACH;IAEAvB,YAAYlD,QAAO;AACjB,UAAI,KAAK,eAAe;AACtB,aAAK,cAAc6B,MAAMC,kBAAkB9B;MAC7C;AACA,UAAI,CAAC,KAAK,WAAW;AACnB;MACF;AAEA,YAAM0E,KAAI,KAAK,WAAWxE,gBAAgBC,OAAO;AACjD,iBAAWwE,SAAS,KAAK,UAAUC,UAAU;AAC3CD,cAAMjC,eAAegC,GAAEtE,KAAK,EAAEC,UAAUL,OAAMC,YAAY;MAC5D;IACF;IAEA4E,UAAU;AACR,WAAK,SAASX,OAAO;AACrB,WAAK,UAAU;AACf,WAAK,gBAAgB;AACrB,WAAK,WAAWA,OAAO;AACvB,WAAK,YAAY;IACnB;EACF;AAOA,MAAMY,mBAAN,MAAMA,kBAAiB;IACrB,SAAS;IAET,UAAU;IAEV,aAAa;IAEb,OAAO,aAAa;IAEpBnF,YAAYC,QAAQ;AAClB,WAAK,UAAUA;AACf,WAAK,aAAaA,OAAOE;AAEzBgF,wBAAiB,eAAexE,OAAOC,OAAO;QAC5CwE,UAAU;QACVC,KAAK;MACP,CAAC;IACH;IAEAnE,eAAe;AACb,UAAI,KAAK,QAAQ;AACf,eAAO,KAAK;MACd;AACA,YAAM;QAAEoE;QAAYC;QAAWlF,OAAAA;MAAM,IAAI,KAAK;AAC9C,YAAMmF,QAAS,KAAK,SAASpE,SAASC,cAAc,OAAO;AAC3DmE,YAAMpC,OAAO;AACboC,YAAM9E,QAAQL,UAAS;AACvBmF,YAAMlE,YAAY;AAClBkE,YAAMjE,WAAW;AACjBiE,YAAMhE,aAAa,gBAAgB2D,kBAAiB,WAAWG,UAAU,CAAC;AAC1EE,YAAM1D,iBACJ,SACA,MAAM;AACJ,aAAK,WAAW2D,aAAaF,WAAWC,MAAM9E,KAAK;MACrD,GACA;QAAEkB,QAAQ,KAAK,WAAWC;MAAQ,CACpC;AACA,aAAO2D;IACT;IAEAE,OAAOhF,OAAO;AACZ,UAAI,CAAC,KAAK,QAAQ;AAChB;MACF;AACA,WAAK,OAAOA,QAAQA;IACtB;IAEAwE,UAAU;AACR,WAAK,QAAQX,OAAO;AACpB,WAAK,SAAS;IAChB;IAEAP,eAAe;IAAC;EAClB;ACxVA,WAAS2B,cAAcC,IAAG;AACxB,WAAOC,KAAKC,MAAMD,KAAKE,IAAI,GAAGF,KAAKG,IAAI,GAAGJ,EAAC,CAAC,IAAI,GAAG,EAChDK,SAAS,EAAE,EACXC,SAAS,GAAG,GAAG;EACpB;AAEA,WAASC,cAAcC,IAAG;AACxB,WAAOP,KAAKE,IAAI,GAAGF,KAAKG,IAAI,KAAK,MAAMI,EAAC,CAAC;EAC3C;AAGA,MAAMC,kBAAN,MAAsB;IACpB,OAAOC,OAAO,CAACC,IAAGC,IAAGC,IAAGC,EAAC,GAAG;AAC1B,aAAO,CAAC,KAAK,IAAIb,KAAKG,IAAI,GAAG,MAAMO,KAAI,OAAOE,KAAI,OAAOD,KAAIE,EAAC,CAAC;IACjE;IAEA,OAAOC,OAAO,CAACC,EAAC,GAAG;AACjB,aAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAIA,EAAC;IAChC;IAEA,OAAOC,MAAM,CAACD,EAAC,GAAG;AAChB,aAAO,CAAC,OAAOA,IAAGA,IAAGA,EAAC;IACxB;IAEA,OAAOE,MAAM,CAACF,EAAC,GAAG;AAChBA,MAAAA,KAAIT,cAAcS,EAAC;AACnB,aAAO,CAACA,IAAGA,IAAGA,EAAC;IACjB;IAEA,OAAOG,OAAO,CAACH,EAAC,GAAG;AACjB,YAAMI,KAAIrB,cAAciB,EAAC;AACzB,aAAO,IAAII,EAAC,GAAGA,EAAC,GAAGA,EAAC;IACtB;IAEA,OAAOC,MAAM,CAACC,IAAGN,IAAGO,EAAC,GAAG;AACtB,aAAO,CAAC,KAAK,MAAMD,KAAI,OAAON,KAAI,OAAOO,EAAC;IAC5C;IAEA,OAAOC,QAAQC,QAAO;AACpB,aAAOA,OAAMC,IAAInB,aAAa;IAChC;IAEA,OAAOoB,SAASF,QAAO;AACrB,aAAO,IAAIA,OAAMC,IAAI3B,aAAa,EAAE6B,KAAK,EAAE,CAAC;IAC9C;IAEA,OAAOC,SAAS;AACd,aAAO;IACT;IAEA,OAAOC,QAAQ;AACb,aAAO,CAAC,IAAI;IACd;IAEA,OAAOC,SAAS,CAACpB,IAAGC,IAAGC,IAAGC,EAAC,GAAG;AAC5B,aAAO,CACL,OACA,IAAIb,KAAKG,IAAI,GAAGO,KAAIG,EAAC,GACrB,IAAIb,KAAKG,IAAI,GAAGS,KAAIC,EAAC,GACrB,IAAIb,KAAKG,IAAI,GAAGQ,KAAIE,EAAC,CAAC;IAE1B;IAEA,OAAOkB,SAAS,CAACrB,IAAGC,IAAGC,IAAGC,EAAC,GAAG;AAC5B,aAAO,CACLP,cAAc,IAAIN,KAAKG,IAAI,GAAGO,KAAIG,EAAC,CAAC,GACpCP,cAAc,IAAIN,KAAKG,IAAI,GAAGS,KAAIC,EAAC,CAAC,GACpCP,cAAc,IAAIN,KAAKG,IAAI,GAAGQ,KAAIE,EAAC,CAAC,CAAC;IAEzC;IAEA,OAAOmB,UAAUC,YAAY;AAC3B,YAAMC,MAAM,KAAKJ,SAASG,UAAU,EAAEE,MAAM,CAAC;AAC7C,aAAO,KAAKT,SAASQ,GAAG;IAC1B;IAEA,OAAOE,SAAS,CAACf,IAAGN,IAAGO,EAAC,GAAG;AACzB,YAAMZ,KAAI,IAAIW;AACd,YAAMT,KAAI,IAAIG;AACd,YAAMJ,KAAI,IAAIW;AACd,YAAMT,KAAIb,KAAKG,IAAIO,IAAGE,IAAGD,EAAC;AAC1B,aAAO,CAAC,QAAQD,IAAGE,IAAGD,IAAGE,EAAC;IAC5B;EACF;ACvFA,MAAMwB,iBAAN,MAAqB;IAUnBC,OAAOC,OAAOC,QAAQC,iBAAiB,OAAO;AAC5C,UAAIF,SAAS,KAAKC,UAAU,GAAG;AAC7B,cAAM,IAAIE,MAAM,wBAAwB;MAC1C;AACA,YAAMC,MAAM,KAAKC,WAAW,SAAS;AACrCD,UAAIE,aAAa,WAAW,KAAK;AAEjC,UAAI,CAACJ,gBAAgB;AACnBE,YAAIE,aAAa,SAAS,GAAGN,KAAK,IAAI;AACtCI,YAAIE,aAAa,UAAU,GAAGL,MAAM,IAAI;MAC1C;AAEAG,UAAIE,aAAa,uBAAuB,MAAM;AAC9CF,UAAIE,aAAa,WAAW,OAAON,KAAK,IAAIC,MAAM,EAAE;AAEpD,aAAOG;IACT;IAEAG,cAAcC,MAAM;AAClB,UAAI,OAAOA,SAAS,UAAU;AAC5B,cAAM,IAAIL,MAAM,0BAA0B;MAC5C;AACA,aAAO,KAAKE,WAAWG,IAAI;IAC7B;IAKAH,WAAWG,MAAM;AACfC,kBAAY,sCAAsC;IACpD;EACF;AAEA,MAAMC,gBAAN,cAA4BZ,eAAe;IAIzCO,WAAWG,MAAM;AACf,aAAOG,SAASC,gBAAgBC,QAAQL,IAAI;IAC9C;EACF;ACjBA,MAAMM,qCAAoB;AAC1B,MAAMC,uBAAuB,oBAAIC,QAAQ;AACzC,MAAMC,mBAAkB,oBAAIC,KAAK,GAAEC,kBAAkB,IAAI,KAAK;AAkB9D,MAAMC,2BAAN,MAA+B;IAK7B,OAAOC,OAAOC,YAAY;AACxB,YAAMC,UAAUD,WAAWE,KAAKC;AAEhC,cAAQF,SAAO;QACb,KAAKG,eAAeC;AAClB,iBAAO,IAAIC,sBAAsBN,UAAU;QAE7C,KAAKI,eAAeG;AAClB,iBAAO,IAAIC,sBAAsBR,UAAU;QAE7C,KAAKI,eAAeK;AAClB,gBAAMC,YAAYV,WAAWE,KAAKQ;AAElC,kBAAQA,WAAS;YACf,KAAK;AACH,qBAAO,IAAIC,4BAA4BX,UAAU;YACnD,KAAK;AACH,kBAAIA,WAAWE,KAAKU,aAAa;AAC/B,uBAAO,IAAIC,mCAAmCb,UAAU;cAC1D,WAAWA,WAAWE,KAAKY,UAAU;AACnC,uBAAO,IAAIC,gCAAgCf,UAAU;cACvD;AACA,qBAAO,IAAIgB,kCAAkChB,UAAU;YACzD,KAAK;AACH,qBAAO,IAAIiB,8BAA8BjB,UAAU;YACrD,KAAK;AACH,qBAAO,IAAIkB,iCAAiClB,UAAU;UAC1D;AACA,iBAAO,IAAImB,wBAAwBnB,UAAU;QAE/C,KAAKI,eAAegB;AAClB,iBAAO,IAAIC,uBAAuBrB,UAAU;QAE9C,KAAKI,eAAekB;AAClB,iBAAO,IAAIC,0BAA0BvB,UAAU;QAEjD,KAAKI,eAAeoB;AAClB,iBAAO,IAAIC,sBAAsBzB,UAAU;QAE7C,KAAKI,eAAesB;AAClB,iBAAO,IAAIC,wBAAwB3B,UAAU;QAE/C,KAAKI,eAAewB;AAClB,iBAAO,IAAIC,wBAAwB7B,UAAU;QAE/C,KAAKI,eAAe0B;AAClB,iBAAO,IAAIC,0BAA0B/B,UAAU;QAEjD,KAAKI,eAAe4B;AAClB,iBAAO,IAAIC,uBAAuBjC,UAAU;QAE9C,KAAKI,eAAe8B;AAClB,iBAAO,IAAIC,qBAAqBnC,UAAU;QAE5C,KAAKI,eAAegC;AAClB,iBAAO,IAAIC,yBAAyBrC,UAAU;QAEhD,KAAKI,eAAekC;AAClB,iBAAO,IAAIC,2BAA2BvC,UAAU;QAElD,KAAKI,eAAeoC;AAClB,iBAAO,IAAIC,2BAA2BzC,UAAU;QAElD,KAAKI,eAAesC;AAClB,iBAAO,IAAIC,0BAA0B3C,UAAU;QAEjD,KAAKI,eAAewC;AAClB,iBAAO,IAAIC,2BAA2B7C,UAAU;QAElD,KAAKI,eAAe0C;AAClB,iBAAO,IAAIC,uBAAuB/C,UAAU;QAE9C,KAAKI,eAAe4C;AAClB,iBAAO,IAAIC,gCAAgCjD,UAAU;QAEvD;AACE,iBAAO,IAAIkD,kBAAkBlD,UAAU;MAC3C;IACF;EACF;AAEA,MAAMkD,oBAAN,MAAMA,mBAAkB;IACtB,WAAW;IAEX,aAAa;IAEb,gBAAgB;IAEhBC,YACEnD,YACA;MACEoD,eAAe;MACfC,eAAe;MACfC,uBAAuB;IACzB,IAAI,CAAC,GACL;AACA,WAAKF,eAAeA;AACpB,WAAKlD,OAAOF,WAAWE;AACvB,WAAKqD,QAAQvD,WAAWuD;AACxB,WAAKC,cAAcxD,WAAWwD;AAC9B,WAAKC,kBAAkBzD,WAAWyD;AAClC,WAAKC,qBAAqB1D,WAAW0D;AACrC,WAAKC,cAAc3D,WAAW2D;AAC9B,WAAKC,aAAa5D,WAAW4D;AAC7B,WAAKC,oBAAoB7D,WAAW6D;AACpC,WAAKC,gBAAgB9D,WAAW8D;AAChC,WAAKC,kBAAkB/D,WAAW+D;AAClC,WAAKC,eAAehE,WAAWgE;AAC/B,WAAKC,gBAAgBjE,WAAWkE;AAChC,WAAKC,SAASnE,WAAWmE;AACzB,WAAKC,sBAAsB;AAE3B,UAAIhB,cAAc;AAChB,aAAKiB,iBAAiB,KAAKC,YACzB,KAAKC,iBAAiBlB,YAAY;MACtC;AACA,UAAIC,sBAAsB;AACxB,aAAKkB,sBAAsB;MAC7B;IACF;IAEA,OAAOC,cAAc;MAAEC;MAAaC;IAAS,GAAG;AAC9C,aAAO,CAAC,EAAED,aAAaE,OAAOD,UAAUC;IAC1C;IAEA,IAAIC,cAAc;AAChB,aAAO,KAAK3E,KAAK4E;IACnB;IAEA,IAAIC,eAAe;AACjB,aACE7B,mBAAkBuB,cAAc,KAAKvE,IAAI,KACxC,KAAK4D,iBAAiB,CAAC,CAAC,KAAKkB;IAElC;IAEA,IAAIC,cAAc;AAChB,YAAM;QAAE/E;MAAK,IAAI;AACjB,YAAMgF,SAAS,KAAKrB,mBAAmBsB,UAAUjF,KAAKkF,EAAE;AACxD,UAAIF,QAAQ;AACV,eAAOA,OAAOG,QAAQ;MACxB;AACA,aAAOnF;IACT;IAEA,IAAIoF,mBAAmB;AACrB,aAAO,KAAKxB,iBAAiB,KAAKyB;IACpC;IAEA,IAAIC,wBAAwB;AAC1B,YAAMN,SAAS,KAAKrB,mBAAmBsB,UAAU,KAAKjF,KAAKkF,EAAE;AAC7D,UAAIF,QAAQ;AACV,eAAOA,OAAOO;MAChB;AACA,YAAM;QAAEC;QAAYC;QAAUC;MAAK,IAAI,KAAK1F;AAC5C,UAAI2F,OAAO;AACX,UAAIC,OAAO;AACX,UAAIJ,YAAYK,UAAU,GAAG;AAC3B,iBAASC,KAAI,GAAGA,KAAIN,WAAWK,QAAQC,MAAK,GAAG;AAC7C,cAAIN,WAAWM,KAAI,CAAC,IAAIF,MAAM;AAC5BA,mBAAOJ,WAAWM,KAAI,CAAC;AACvBH,mBAAOH,WAAWM,KAAI,CAAC;UACzB,WAAWN,WAAWM,KAAI,CAAC,MAAMF,MAAM;AACrCD,mBAAOI,KAAKC,IAAIL,MAAMH,WAAWM,KAAI,CAAC,CAAC;UACzC;QACF;AACA,eAAO,CAACH,MAAMC,IAAI;MACpB;AACA,UAAIH,UAAUI,UAAU,GAAG;AACzB,mBAAWI,WAAWR,UAAU;AAC9B,mBAASK,KAAI,GAAGI,KAAKD,QAAQJ,QAAQC,KAAII,IAAIJ,MAAK,GAAG;AACnD,gBAAIG,QAAQH,KAAI,CAAC,IAAIF,MAAM;AACzBA,qBAAOK,QAAQH,KAAI,CAAC;AACpBH,qBAAOM,QAAQH,EAAC;YAClB,WAAWG,QAAQH,KAAI,CAAC,MAAMF,MAAM;AAClCD,qBAAOI,KAAKC,IAAIL,MAAMM,QAAQH,EAAC,CAAC;YAClC;UACF;QACF;AACA,YAAIH,SAASQ,UAAU;AACrB,iBAAO,CAACR,MAAMC,IAAI;QACpB;MACF;AACA,UAAIF,MAAM;AACR,eAAO,CAACA,KAAK,CAAC,GAAGA,KAAK,CAAC,CAAC;MAC1B;AACA,aAAO;IACT;IAEAU,gBAAgBC,OAAO;AACrB,YAAM;QACJC,MAAM;UAAEC;QAAK;QACbC,UAAU;UACRC,SAAS;YAAEC;YAAWC;YAAYC;YAAOC;UAAM;QACjD;MACF,IAAI,KAAK5C;AACToC,YAAM,CAAC,IAAIE,KAAK,CAAC,IAAIF,MAAM,CAAC,IAAIE,KAAK,CAAC;AACtCF,YAAM,CAAC,IAAK,OAAOA,MAAM,CAAC,IAAIO,SAAUF;AACxCL,YAAM,CAAC,IAAK,OAAOA,MAAM,CAAC,IAAIQ,SAAUF;AACxC,aAAON;IACT;IAEA,IAAIvB,cAAc;AAChB,YAAM;QAAE9E;MAAK,IAAI;AACjB,aACE,KAAK2D,kBAAkBmD,YAAY,GAAGC,sBAAsB,GAAG/G,KAAKkF,EAAE,EAAE,GACpE8B,OAAOC,YACXjH,KAAKwE,aAAaE,OAClB;IAEJ;IAEA,IAAII,YAAYoC,MAAM;AACpB,YAAM;QAAElH;MAAK,IAAI;AACjB,YAAMgH,QAAQ;QAAEG,SAAS,CAACD;QAAMD,UAAUC,QAAQ;MAAG;AACrD,UAAI,CAAC,KAAKvD,kBAAkByD,aAAapH,KAAKkF,IAAI;QAAE8B;MAAM,CAAC,GAAG;AAC5D,aAAKrD,kBAAkB0D,SAAS,GAAGN,sBAAsB,GAAG/G,KAAKkF,EAAE,IAAI;UACrEA,IAAIlF,KAAKkF;UACTjF,gBAAgBD,KAAKC;UACrBqH,WAAW,KAAKrD,OAAOqC,KAAKiB;UAC5BP;UACAQ,UAAUxH,KAAKwH;UACfC,kBAAkB,oBAAI/H,KAAK;QAC7B,CAAC;MACH;AACA,UAAI,CAACwH,MAAM;AACT,aAAKQ,YAAY;MACnB;IACF;IAEAA,cAAc;AACZ,OAAC,KAAK,eAAeV,SAAS,KAAKA,QAAQW,OAAO;AAClD,WAAK,gBAAgB,KAAKX,QAAQ;IACpC;IAEAY,aAAaC,QAAQ;AACnB,UAAI,CAAC,KAAKzD,WAAW;AACnB;MACF;AAEA,UAAIyD,OAAOnC,MAAM;AACf,aAAK,aAAa;UAChBA,MAAM,KAAK1F,KAAK0F,KAAKoC,MAAM,CAAC;QAC9B;MACF;AAEA,YAAM;QAAEpC;QAAMsB,OAAOe;MAAS,IAAIF;AAElC,UAAInC,MAAM;AACR,aAAK,eAAeA,IAAI;MAC1B;AAEA,UAAIsB,QAAQ,KAAK,eAAeA,SAAS,KAAKA;AAC9C,UAAI,CAACA,SAASe,UAAUb,MAAM;AAC5B,aAAKc,aAAaD,QAAQ;AAC1Bf,gBAAQ,KAAK,cAAcA;MAC7B;AACA,UAAI,CAACA,OAAO;AACV;MACF;AACAA,YAAMY,aAAaC,MAAM;AACzB,UAAIE,UAAUZ,SAAS;AACrBH,cAAMW,OAAO;AACb,aAAK,gBAAgB;AACrB,aAAKX,QAAQ;MACf;IACF;IAEAiB,cAAc;AACZ,UAAI,CAAC,KAAK,UAAU;AAClB;MACF;AACA,WAAK,eAAe,KAAK,SAASvC,IAAI;AACtC,WAAK,eAAesB,MAAMiB,YAAY;AACtC,WAAK,WAAW;IAClB;IAEA,eAAevC,MAAM;AACnB,YAAM;QACJtB,WAAW;UAAE8D;QAAM;QACnBlI,MAAM;UAAE0F,MAAMyC;UAAaC;QAAS;QACpCnE,QAAQ;UACNuC,UAAU;YACRC,SAAS;cAAEC;cAAWC;cAAYC;cAAOC;YAAM;UACjD;QACF;MACF,IAAI;AACJsB,mBAAaE,OAAO,GAAG,GAAG,GAAG3C,IAAI;AACjCwC,YAAMI,OAAO,GAAI,OAAO5C,KAAK,CAAC,IAAIkB,SAAUF,SAAS;AACrDwB,YAAMK,MAAM,GAAI,OAAO5B,aAAajB,KAAK,CAAC,IAAImB,SAAUF,UAAU;AAClE,UAAIyB,aAAa,GAAG;AAClBF,cAAMM,QAAQ,GAAI,OAAqB9C,KAAK,CAAC,IAAIA,KAAK,CAAC,KAAMgB,SAAS;AACtEwB,cAAMO,SAAS,GAAI,OAAsB/C,KAAK,CAAC,IAAIA,KAAK,CAAC,KAAMiB,UAAU;MAC3E,OAAO;AACL,aAAK+B,YAAYN,QAAQ;MAC3B;IACF;IAUA/D,iBAAiBlB,cAAc;AAC7B,YAAM;QACJnD;QACAiE,QAAQ;UAAEqC;UAAME;QAAS;MAC3B,IAAI;AAEJ,YAAMpC,YAAYuE,SAASC,cAAc,SAAS;AAClDxE,gBAAUyE,aAAa,sBAAsB7I,KAAKkF,EAAE;AACpD,UACE,EAAE,gBAAgBjE,4BAClB,EAAE,gBAAgBb,wBAClB;AACAgE,kBAAU0E,WAAW;MACvB;AACA,YAAM;QAAEZ;MAAM,IAAI9D;AAOlB8D,YAAMa,SAAS,KAAK9E,OAAO8E;AAE3B,WAAK9E,OAAO8E,UAAU;AAEtB,UAAI/I,KAAKgJ,iBAAiB;AACxB5E,kBAAU6E,QAAQjJ,KAAKgJ;MACzB;AAEA,UAAIhJ,KAAKkJ,UAAU;AACjB9E,kBAAU+E,UAAUC,IAAI,UAAU;MACpC;AAEA,UAAI,CAACpJ,KAAK0F,QAAQ,gBAAgBvE,wBAAwB;AACxD,cAAM;UAAEiH,UAAAA;QAAS,IAAIpI;AACrB,YAAI,CAACA,KAAKqJ,gBAAgBjB,cAAa,GAAG;AACxC,eAAKM,YAAYN,WAAUhE,SAAS;QACtC;AACA,eAAOA;MACT;AACA,YAAM;QAAEoE;QAAOC;MAAO,IAAI;AAE1B,UAAI,CAACtF,gBAAgBnD,KAAKsJ,YAAYd,QAAQ,GAAG;AAC/CN,cAAMqB,cAAc,GAAGvJ,KAAKsJ,YAAYd,KAAK;AAE7C,cAAMgB,mBAAmBxJ,KAAKsJ,YAAYG;AAC1C,cAAMC,iBAAiB1J,KAAKsJ,YAAYK;AACxC,YAAIH,mBAAmB,KAAKE,iBAAiB,GAAG;AAC9C,gBAAME,SAAS,QAAQJ,gBAAgB,0CAA0CE,cAAc;AAC/FxB,gBAAM2B,eAAeD;QACvB,WAAW,gBAAgBjJ,oCAAoC;AAC7D,gBAAMiJ,SAAS,QAAQpB,KAAK,0CAA0CC,MAAM;AAC5EP,gBAAM2B,eAAeD;QACvB;AAEA,gBAAQ5J,KAAKsJ,YAAYpB,OAAK;UAC5B,KAAK4B,0BAA0BC;AAC7B7B,kBAAMoB,cAAc;AACpB;UAEF,KAAKQ,0BAA0BE;AAC7B9B,kBAAMoB,cAAc;AACpB;UAEF,KAAKQ,0BAA0BG;AAC7BC,iBAAK,qCAAqC;AAC1C;UAEF,KAAKJ,0BAA0BK;AAC7BD,iBAAK,mCAAmC;AACxC;UAEF,KAAKJ,0BAA0BxH;AAC7B4F,kBAAMkC,oBAAoB;AAC1B;UAEF;AACE;QACJ;AAEA,cAAMC,cAAcrK,KAAKqK,eAAe;AACxC,YAAIA,aAAa;AACf,eAAK,aAAa;AAClBnC,gBAAMmC,cAAcC,KAAKC,aACvBF,YAAY,CAAC,IAAI,GACjBA,YAAY,CAAC,IAAI,GACjBA,YAAY,CAAC,IAAI,CACnB;QACF,OAAO;AAELnC,gBAAMqB,cAAc;QACtB;MACF;AAIA,YAAM7D,OAAO4E,KAAKE,cAAc,CAC9BxK,KAAK0F,KAAK,CAAC,GACXY,KAAKC,KAAK,CAAC,IAAIvG,KAAK0F,KAAK,CAAC,IAAIY,KAAKC,KAAK,CAAC,GACzCvG,KAAK0F,KAAK,CAAC,GACXY,KAAKC,KAAK,CAAC,IAAIvG,KAAK0F,KAAK,CAAC,IAAIY,KAAKC,KAAK,CAAC,CAAC,CAC3C;AACD,YAAM;QAAEG;QAAWC;QAAYC;QAAOC;MAAM,IAAIL,SAASC;AAEzDyB,YAAMI,OAAO,GAAI,OAAO5C,KAAK,CAAC,IAAIkB,SAAUF,SAAS;AACrDwB,YAAMK,MAAM,GAAI,OAAO7C,KAAK,CAAC,IAAImB,SAAUF,UAAU;AAErD,YAAM;QAAEyB;MAAS,IAAIpI;AACrB,UAAIA,KAAKqJ,gBAAgBjB,aAAa,GAAG;AACvCF,cAAMM,QAAQ,GAAI,MAAMA,QAAS9B,SAAS;AAC1CwB,cAAMO,SAAS,GAAI,MAAMA,SAAU9B,UAAU;MAC/C,OAAO;AACL,aAAK+B,YAAYN,UAAUhE,SAAS;MACtC;AAEA,aAAOA;IACT;IAEAsE,YAAY+B,OAAOrG,YAAY,KAAKA,WAAW;AAC7C,UAAI,CAAC,KAAKpE,KAAK0F,MAAM;AACnB;MACF;AACA,YAAM;QAAEgB;QAAWC;MAAW,IAAI,KAAK1C,OAAOuC,SAASC;AACvD,UAAI;QAAE+B;QAAOC;MAAO,IAAI;AAExB,UAAIgC,QAAQ,QAAQ,GAAG;AACrB,SAACjC,OAAOC,MAAM,IAAI,CAACA,QAAQD,KAAK;MAClC;AACApE,gBAAU8D,MAAMM,QAAQ,GAAI,MAAMA,QAAS9B,SAAS;AACpDtC,gBAAU8D,MAAMO,SAAS,GAAI,MAAMA,SAAU9B,UAAU;AAEvDvC,gBAAUyE,aAAa,uBAAuB,MAAM4B,SAAS,GAAG;IAClE;IAEA,IAAIC,iBAAiB;AACnB,YAAMC,WAAWA,CAACC,QAAQC,WAAWC,WAAU;AAC7C,cAAMC,SAAQD,OAAME,OAAOJ,MAAM;AACjC,cAAMK,YAAYF,OAAM,CAAC;AACzB,cAAMG,aAAaH,OAAMjD,MAAM,CAAC;AAChCgD,QAAAA,OAAMK,OAAOjD,MAAM2C,SAAS,IAC1BO,gBAAgB,GAAGH,SAAS,OAAO,EAAEC,UAAU;AACjD,aAAKvH,kBAAkB0D,SAAS,KAAKrH,KAAKkF,IAAI;UAC5C,CAAC2F,SAAS,GAAGO,gBAAgB,GAAGH,SAAS,MAAM,EAAEC,UAAU;QAC7D,CAAC;MACH;AAEA,aAAOG,OAAO,MAAM,kBAAkB;QACpCC,SAASR,CAAAA,WAAS;AAChB,gBAAM;YAAEQ;UAAQ,IAAIR,OAAME;AAG1B,gBAAMO,SAASD,UAAU,MAAM;AAC/B,eAAKlH,UAAU8D,MAAMsD,aAAaD,SAAS,WAAW;AACtD,eAAK5H,kBAAkB0D,SAAS,KAAKrH,KAAKkF,IAAI;YAC5CuG,QAAQF;YACRG,SAASJ,YAAY,KAAKA,YAAY;UACxC,CAAC;QACH;QACAK,OAAOb,CAAAA,WAAS;AACd,eAAKnH,kBAAkB0D,SAAS,KAAKrH,KAAKkF,IAAI;YAC5CwG,SAAS,CAACZ,OAAME,OAAOW;UACzB,CAAC;QACH;QACAJ,QAAQT,CAAAA,WAAS;AACf,gBAAM;YAAES;UAAO,IAAIT,OAAME;AACzB,eAAK5G,UAAU8D,MAAMsD,aAAaD,SAAS,WAAW;AACtD,eAAK5H,kBAAkB0D,SAAS,KAAKrH,KAAKkF,IAAI;YAC5CwG,SAASH;YACTE,QAAQF;UACV,CAAC;QACH;QACAK,OAAOd,CAAAA,WAAS;AACde,qBAAW,MAAMf,OAAMK,OAAOS,MAAM;YAAEE,eAAe;UAAM,CAAC,GAAG,CAAC;QAClE;QACAC,UAAUjB,CAAAA,WAAS;AAEjBA,UAAAA,OAAMK,OAAOlC,QAAQ6B,OAAME,OAAOe;QACpC;QACAC,UAAUlB,CAAAA,WAAS;AACjBA,UAAAA,OAAMK,OAAOc,WAAWnB,OAAME,OAAOgB;QACvC;QACAE,UAAUpB,CAAAA,WAAS;AACjB,eAAKqB,aAAarB,OAAMK,QAAQL,OAAME,OAAOkB,QAAQ;QACvD;QACAE,SAAStB,CAAAA,WAAS;AAChBH,mBAAS,WAAW,mBAAmBG,MAAK;QAC9C;QACAuB,WAAWvB,CAAAA,WAAS;AAClBH,mBAAS,aAAa,mBAAmBG,MAAK;QAChD;QACAwB,SAASxB,CAAAA,WAAS;AAChBH,mBAAS,WAAW,SAASG,MAAK;QACpC;QACAyB,WAAWzB,CAAAA,WAAS;AAClBH,mBAAS,aAAa,SAASG,MAAK;QACtC;QACAT,aAAaS,CAAAA,WAAS;AACpBH,mBAAS,eAAe,eAAeG,MAAK;QAC9C;QACA0B,aAAa1B,CAAAA,WAAS;AACpBH,mBAAS,eAAe,eAAeG,MAAK;QAC9C;QACA1C,UAAU0C,CAAAA,WAAS;AACjB,gBAAML,QAAQK,OAAME,OAAO5C;AAC3B,eAAKM,YAAY+B,KAAK;AACtB,eAAK9G,kBAAkB0D,SAAS,KAAKrH,KAAKkF,IAAI;YAC5CkD,UAAUqC;UACZ,CAAC;QACH;MACF,CAAC;IACH;IAEAgC,0BAA0BC,SAASC,SAAS;AAC1C,YAAMC,gBAAgB,KAAKlC;AAC3B,iBAAWmC,SAAQC,OAAOC,KAAKJ,QAAQ3B,MAAM,GAAG;AAC9C,cAAMgC,SAASN,QAAQG,KAAI,KAAKD,cAAcC,KAAI;AAClDG,iBAASL,OAAO;MAClB;IACF;IAEAM,4BAA4BC,SAAS;AACnC,UAAI,CAAC,KAAKrJ,iBAAiB;AACzB;MACF;AAGA,YAAMsJ,aAAa,KAAKxJ,kBAAkBmD,YAAY,KAAK9G,KAAKkF,EAAE;AAClE,UAAI,CAACiI,YAAY;AACf;MACF;AAEA,YAAMP,gBAAgB,KAAKlC;AAC3B,iBAAW,CAAC0C,YAAYpC,MAAM,KAAK8B,OAAOO,QAAQF,UAAU,GAAG;AAC7D,cAAMH,SAASJ,cAAcQ,UAAU;AACvC,YAAIJ,QAAQ;AACV,gBAAMM,aAAa;YACjBtC,QAAQ;cACN,CAACoC,UAAU,GAAGpC;YAChB;YACAG,QAAQ+B;UACV;AACAF,iBAAOM,UAAU;AAEjB,iBAAOH,WAAWC,UAAU;QAC9B;MACF;IACF;IAQA9I,wBAAwB;AACtB,UAAI,CAAC,KAAKF,WAAW;AACnB;MACF;AACA,YAAM;QAAEoB;MAAW,IAAI,KAAKxF;AAC5B,UAAI,CAACwF,YAAY;AACf;MACF;AAEA,YAAM,CAAC+H,SAASC,SAASC,SAASC,OAAO,IAAI,KAAK1N,KAAK0F,KAAKiI,IAAIC,CAAAA,OAC9D7H,KAAK8H,OAAOD,EAAC,CACf;AAEA,UAAIpI,WAAWK,WAAW,GAAG;AAC3B,cAAM,CAACiI,KAAKC,KAAKC,KAAKC,GAAG,IAAIzI,WAAW0I,SAAS,GAAG,CAAC;AACrD,YACET,YAAYK,OACZJ,YAAYK,OACZR,YAAYS,OACZR,YAAYS,KACZ;AAGA;QACF;MACF;AAEA,YAAM;QAAE/F;MAAM,IAAI,KAAK9D;AACvB,UAAI+J;AACJ,UAAI,KAAK,YAAY;AACnB,cAAM;UAAE9D;UAAad;QAAY,IAAIrB;AACrCA,cAAMqB,cAAc;AACpB4E,oBAAY,CACV,iCACA,2CACA,kDACA,iCAAiC9D,WAAW,mBAAmBd,WAAW,IAAI;AAEhF,aAAKnF,UAAU+E,UAAUC,IAAI,WAAW;MAC1C;AAMA,YAAMZ,QAAQiF,UAAUF;AACxB,YAAM9E,SAASiF,UAAUF;AAEzB,YAAM;QAAE9J;MAAW,IAAI;AACvB,YAAM0K,MAAM1K,WAAWkF,cAAc,KAAK;AAC1CwF,UAAIjF,UAAUC,IAAI,yBAAyB;AAC3CgF,UAAIvF,aAAa,SAAS,CAAC;AAC3BuF,UAAIvF,aAAa,UAAU,CAAC;AAC5BuF,UAAIC,OAAO;AACX,YAAMC,OAAO5K,WAAWkF,cAAc,MAAM;AAC5CwF,UAAIG,OAAOD,IAAI;AACf,YAAME,WAAW9K,WAAWkF,cAAc,UAAU;AACpD,YAAM1D,KAAK,YAAY,KAAKlF,KAAKkF,EAAE;AACnCsJ,eAAS3F,aAAa,MAAM3D,EAAE;AAC9BsJ,eAAS3F,aAAa,iBAAiB,mBAAmB;AAC1DyF,WAAKC,OAAOC,QAAQ;AAEpB,eAAS1I,KAAI,GAAGI,KAAKV,WAAWK,QAAQC,KAAII,IAAIJ,MAAK,GAAG;AACtD,cAAMgI,MAAMtI,WAAWM,EAAC;AACxB,cAAMiI,MAAMvI,WAAWM,KAAI,CAAC;AAC5B,cAAMkI,MAAMxI,WAAWM,KAAI,CAAC;AAC5B,cAAMmI,MAAMzI,WAAWM,KAAI,CAAC;AAC5B,cAAMJ,OAAOhC,WAAWkF,cAAc,MAAM;AAC5C,cAAMgF,MAAKI,MAAMT,WAAW/E;AAC5B,cAAMiG,MAAKf,UAAUK,OAAOtF;AAC5B,cAAMiG,aAAaZ,MAAME,OAAOxF;AAChC,cAAMmG,cAAcZ,MAAME,OAAOxF;AACjC/C,aAAKmD,aAAa,KAAK+E,EAAC;AACxBlI,aAAKmD,aAAa,KAAK4F,EAAC;AACxB/I,aAAKmD,aAAa,SAAS6F,SAAS;AACpChJ,aAAKmD,aAAa,UAAU8F,UAAU;AACtCH,iBAASD,OAAO7I,IAAI;AACpByI,mBAAWS,KACT,+CAA+ChB,EAAC,QAAQa,EAAC,YAAYC,SAAS,aAAaC,UAAU,KACvG;MACF;AAEA,UAAI,KAAK,YAAY;AACnBR,kBAAUS,KAAK,cAAc;AAC7B1G,cAAM2G,kBAAkBV,UAAUW,KAAK,EAAE;MAC3C;AAEA,WAAK1K,UAAUmK,OAAOH,GAAG;AACzB,WAAKhK,UAAU8D,MAAMsG,WAAW,QAAQtJ,EAAE;IAC5C;IAYA8C,aAAa+G,YAAY,MAAM;AAC7B,YAAM;QAAE/O;MAAK,IAAI;AAEjB,UAAIwE,aAAaiD;AACjB,UAAIsH,WAAW;AACbvK,sBAAc;UACZE,KAAKqK,UAAU7H;QACjB;AACAO,2BAAmBsH,UAAUC;MAC/B,OAAO;AACLxK,sBAAcxE,KAAKwE;AACnBiD,2BAAmBzH,KAAKyH;MAC1B;AACA,WAAK,gBAAgB,IAAItG,uBAAuB;QAC9CnB,MAAM;UACJ+K,OAAO/K,KAAK+K;UACZkE,UAAUjP,KAAKiP;UACfxH;UACAjD;UACAC,UAAUzE,KAAKyE;UACfyK,YAAYlP,KAAK0F;UACjB4D,aAAa;UACbpE,IAAI,SAASlF,KAAKkF,EAAE;UACpBkD,UAAUpI,KAAKoI;UACfc,UAAU;QACZ;QACA5F,aAAa,KAAKA;QAClBW,QAAQ,KAAKA;QACbkL,UAAU,CAAC,IAAI;MACjB,CAAC;IACH;IAEA,IAAI9J,kBAAkB;AACpB,aAAO,CAAC,EAAE,KAAK,iBAAiB,KAAK2B,SAAS,KAAKhH,KAAKwH;IAC1D;IAEA,IAAI4H,oBAAoB;AACtB,aAAO,KAAK;IACd;IAQAC,SAAS;AACPC,kBAAY,mDAAmD;IACjE;IAMAC,mBAAmB1C,OAAM2C,SAAS,MAAM;AACtC,YAAMC,SAAS,CAAA;AAEf,UAAI,KAAK1L,eAAe;AACtB,cAAM2L,WAAW,KAAK3L,cAAc8I,KAAI;AACxC,YAAI6C,UAAU;AACZ,qBAAW;YAAEpJ;YAAMpB;YAAIyK;UAAa,KAAKD,UAAU;AACjD,gBAAIpJ,SAAS,IAAI;AACf;YACF;AACA,gBAAIpB,OAAOsK,QAAQ;AACjB;YACF;AACA,kBAAMI,cACJ,OAAOD,iBAAiB,WAAWA,eAAe;AAEpD,kBAAME,aAAalH,SAASmH,cAC1B,qBAAqB5K,EAAE,IACzB;AACA,gBAAI2K,cAAc,CAACtQ,qBAAqBwQ,IAAIF,UAAU,GAAG;AACvD3F,mBAAK,6CAA6ChF,EAAE,EAAE;AACtD;YACF;AACAuK,mBAAOb,KAAK;cAAE1J;cAAI0K;cAAaC;YAAW,CAAC;UAC7C;QACF;AACA,eAAOJ;MACT;AAGA,iBAAWI,cAAclH,SAASqH,kBAAkBnD,KAAI,GAAG;AACzD,cAAM;UAAE+C;QAAY,IAAIC;AACxB,cAAM3K,KAAK2K,WAAWI,aAAa,iBAAiB;AACpD,YAAI/K,OAAOsK,QAAQ;AACjB;QACF;AACA,YAAI,CAACjQ,qBAAqBwQ,IAAIF,UAAU,GAAG;AACzC;QACF;AACAJ,eAAOb,KAAK;UAAE1J;UAAI0K;UAAaC;QAAW,CAAC;MAC7C;AACA,aAAOJ;IACT;IAEAS,OAAO;AACL,UAAI,KAAK9L,WAAW;AAClB,aAAKA,UAAUmH,SAAS;MAC1B;AACA,WAAKvE,OAAOmJ,UAAU;IACxB;IAEAC,OAAO;AACL,UAAI,KAAKhM,WAAW;AAClB,aAAKA,UAAUmH,SAAS;MAC1B;AACA,WAAKvE,OAAOqJ,UAAU;IACxB;IAUAC,4BAA4B;AAC1B,aAAO,KAAKlM;IACd;IAEAmM,mBAAmB;AACjB,YAAMC,WAAW,KAAKF,0BAA0B;AAChD,UAAIG,MAAMC,QAAQF,QAAQ,GAAG;AAC3B,mBAAWtD,WAAWsD,UAAU;AAC9BtD,kBAAQ/D,UAAUC,IAAI,eAAe;QACvC;MACF,OAAO;AACLoH,iBAASrH,UAAUC,IAAI,eAAe;MACxC;IACF;IAEAuH,qBAAqB;AACnB,UAAI,CAAC,KAAKhM,aAAa;AACrB;MACF;AACA,YAAM;QACJiM,sBAAsBC;QACtB7Q,MAAM;UAAEkF,IAAI4L;QAAO;MACrB,IAAI;AACJ,WAAK1M,UAAU2M,iBAAiB,YAAY,MAAM;AAChD,aAAKzN,YAAY0N,UAAUC,SAAS,8BAA8B;UAChEC,QAAQ;UACRL;UACAC;UACAK,qBAAqB;QACvB,CAAC;MACH,CAAC;IACH;IAEA,IAAI3I,QAAQ;AACV,aAAO,KAAKxI,KAAK0F,KAAK,CAAC,IAAI,KAAK1F,KAAK0F,KAAK,CAAC;IAC7C;IAEA,IAAI+C,SAAS;AACX,aAAO,KAAKzI,KAAK0F,KAAK,CAAC,IAAI,KAAK1F,KAAK0F,KAAK,CAAC;IAC7C;EACF;AAEA,MAAM0L,0BAAN,cAAsCpO,kBAAkB;IACtDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;AAC5D,WAAK6B,SAASlF,WAAWkF;IAC3B;IAEAqK,SAAS;AACP,WAAKjL,UAAUiN,YAAY;AAC3B,aAAO,KAAKjN;IACd;IAEAkN,sBAAsB;AACpB,YAAM;QAAEtM;MAAO,IAAI;AACnB,UAAI,CAACA,OAAOuM,YAAY;AACtB;MACF;AACA,WAAKvJ,aAAahD,OAAOwM,OAAO;IAClC;IAEA,IAAIpM,mBAAmB;AACrB,aAAO,KAAKxB,iBAAiB,KAAKoB,OAAOuM;IAC3C;IAEA,IAAIjM,wBAAwB;AAC1B,aAAO,KAAKN,OAAOO;IACrB;IAEA,IAAIT,cAAc;AAChB,aAAO,KAAKE,OAAOwM,QAAQtK;IAC7B;IAEA,IAAIpC,YAAYoC,MAAM;AACpB,WAAKlC,OAAOwM,UAAUtK;AACtB,UAAI,CAACA,MAAM;AACT,aAAKQ,YAAY;MACnB;IACF;IAEA,IAAI3C,cAAc;AAChB,aAAO,KAAKC,OAAOG,QAAQ;IAC7B;IAEAwC,SAAS;AACP,WAAK1D,OAAOwN,iBAAiB,KAAKzR,KAAKkF,EAAE;AACzC,WAAKd,UAAUuD,OAAO;AACtB,WAAKvD,YAAY;AACjB,WAAKsD,YAAY;IACnB;EACF;AAEA,MAAMtH,wBAAN,cAAoC4C,kBAAkB;IACpDC,YAAYnD,YAAY4R,UAAU,MAAM;AACtC,YAAM5R,YAAY;QAChBoD,cAAc;QACdC,cAAc,CAAC,CAACuO,SAASvO;QACzBC,sBAAsB;MACxB,CAAC;AACD,WAAKuO,gBAAgB7R,WAAWE,KAAK2R;IACvC;IAEAtC,SAAS;AACP,YAAM;QAAErP;QAAMsD;MAAY,IAAI;AAC9B,YAAMsO,OAAOjJ,SAASC,cAAc,GAAG;AACvCgJ,WAAK/I,aAAa,mBAAmB7I,KAAKkF,EAAE;AAC5C,UAAI2M,UAAU;AAEd,UAAI7R,KAAK8R,KAAK;AACZxO,oBAAYyO,kBAAkBH,MAAM5R,KAAK8R,KAAK9R,KAAKgS,SAAS;AAC5DH,kBAAU;MACZ,WAAW7R,KAAKgN,QAAQ;AACtB,aAAKiF,iBAAiBL,MAAM5R,KAAKgN,QAAQhN,KAAKkS,YAAY;AAC1DL,kBAAU;MACZ,WAAW7R,KAAKmS,YAAY;AAC1B,aAAK,gBACHP,MACA5R,KAAKmS,YACLnS,KAAKkS,cACLlS,KAAKoS,cACP;AACAP,kBAAU;MACZ,WAAW7R,KAAKqS,aAAa;AAC3B,aAAK,iBAAiBT,MAAM5R,KAAKqS,aAAarS,KAAKkS,YAAY;AAC/DL,kBAAU;MACZ,WAAW7R,KAAKsS,MAAM;AACpB,aAAKC,UAAUX,MAAM5R,KAAKsS,MAAMtS,KAAKkS,YAAY;AACjDL,kBAAU;MACZ,OAAO;AACL,YACE7R,KAAK0M,YACJ1M,KAAK0M,QAAQ8F,UACZxS,KAAK0M,QAAQ,UAAU,KACvB1M,KAAK0M,QAAQ,YAAY,MAC3B,KAAK7I,mBACL,KAAKC,cACL;AACA,eAAK2O,cAAcb,MAAM5R,IAAI;AAC7B6R,oBAAU;QACZ;AAEA,YAAI7R,KAAK0S,WAAW;AAClB,eAAKC,qBAAqBf,MAAM5R,KAAK0S,SAAS;AAC9Cb,oBAAU;QACZ,WAAW,KAAKF,iBAAiB,CAACE,SAAS;AACzC,eAAKU,UAAUX,MAAM,EAAE;AACvBC,oBAAU;QACZ;MACF;AAEA,WAAKzN,UAAU+E,UAAUC,IAAI,gBAAgB;AAC7C,UAAIyI,SAAS;AACX,aAAK1N,iBAAiByN;AACtB,aAAKxN,UAAUmK,OAAOqD,IAAI;MAC5B;AAEA,aAAO,KAAKxN;IACd;IAEA,mBAAmB;AACjB,WAAKA,UAAUyE,aAAa,sBAAsB,EAAE;IACtD;IAWA0J,UAAUX,MAAMgB,aAAaV,eAAe,IAAI;AAC9CN,WAAKiB,OAAO,KAAKvP,YAAYwP,mBAAmBF,WAAW;AAC3DhB,WAAKmB,UAAU,MAAM;AACnB,YAAIH,aAAa;AACf,eAAKtP,YAAY0P,gBAAgBJ,WAAW;QAC9C;AACA,eAAO;MACT;AACA,UAAIA,eAAeA,gBAAsC,IAAI;AAC3D,aAAK,iBAAiB;MACxB;AACA,UAAIV,cAAc;AAChBN,aAAK3I,QAAQiJ;MACf;IACF;IAWAD,iBAAiBL,MAAM5E,QAAQkF,eAAe,IAAI;AAChDN,WAAKiB,OAAO,KAAKvP,YAAY2P,aAAa,EAAE;AAC5CrB,WAAKmB,UAAU,MAAM;AACnB,aAAKzP,YAAY4P,mBAAmBlG,MAAM;AAC1C,eAAO;MACT;AACA,UAAIkF,cAAc;AAChBN,aAAK3I,QAAQiJ;MACf;AACA,WAAK,iBAAiB;IACxB;IASA,gBAAgBN,MAAMO,YAAYD,eAAe,IAAII,OAAO,MAAM;AAChEV,WAAKiB,OAAO,KAAKvP,YAAY2P,aAAa,EAAE;AAC5C,UAAId,WAAWgB,aAAa;AAC1BvB,aAAK3I,QAAQkJ,WAAWgB;MAC1B,WAAWjB,cAAc;AACvBN,aAAK3I,QAAQiJ;MACf;AACAN,WAAKmB,UAAU,MAAM;AACnB,aAAKxP,iBAAiB6P,mBACpBjB,WAAWkB,SACXlB,WAAWmB,UACXhB,IACF;AACA,eAAO;MACT;AACA,WAAK,iBAAiB;IACxB;IAQA,iBAAiBV,MAAM5E,QAAQkF,eAAe,IAAI;AAChDN,WAAKiB,OAAO,KAAKvP,YAAY2P,aAAa,EAAE;AAC5CrB,WAAKmB,UAAU,MAAM;AACnB,aAAKzP,YAAYiQ,mBAAmBvG,MAAM;AAC1C,eAAO;MACT;AACA,UAAIkF,cAAc;AAChBN,aAAK3I,QAAQiJ;MACf;AACA,WAAK,iBAAiB;IACxB;IAUAO,cAAcb,MAAM5R,MAAM;AACxB4R,WAAKiB,OAAO,KAAKvP,YAAY2P,aAAa,EAAE;AAC5C,YAAMtF,OAAM,oBAAI6F,IAAI,CAClB,CAAC,UAAU,SAAS,GACpB,CAAC,YAAY,WAAW,GACxB,CAAC,cAAc,aAAa,CAAC,CAC9B;AACD,iBAAW3G,SAAQC,OAAOC,KAAK/M,KAAK0M,OAAO,GAAG;AAC5C,cAAM9B,SAAS+C,KAAI8F,IAAI5G,KAAI;AAC3B,YAAI,CAACjC,QAAQ;AACX;QACF;AACAgH,aAAKhH,MAAM,IAAI,MAAM;AACnB,eAAKtH,YAAY0N,UAAUC,SAAS,0BAA0B;YAC5DC,QAAQ;YACRlG,QAAQ;cACN9F,IAAIlF,KAAKkF;cACT2H,MAAAA;YACF;UACF,CAAC;AACD,iBAAO;QACT;MACF;AACA,UAAI7M,KAAKkS,cAAc;AACrBN,aAAK3I,QAAQjJ,KAAKkS;MACpB;AAEA,UAAI,CAACN,KAAKmB,SAAS;AACjBnB,aAAKmB,UAAU,MAAM;MACvB;AACA,WAAK,iBAAiB;IACxB;IAEAJ,qBAAqBf,MAAMc,WAAW;AACpC,YAAMgB,mBAAmB9B,KAAKmB;AAC9B,UAAI,CAACW,kBAAkB;AACrB9B,aAAKiB,OAAO,KAAKvP,YAAY2P,aAAa,EAAE;MAC9C;AACA,WAAK,iBAAiB;AAEtB,UAAI,CAAC,KAAKlP,eAAe;AACvBmG,aACE,kHAEF;AACA,YAAI,CAACwJ,kBAAkB;AACrB9B,eAAKmB,UAAU,MAAM;QACvB;AACA;MACF;AAEAnB,WAAKmB,UAAU,MAAM;AACnBW,2BAAmB;AAEnB,cAAM;UACJjE,QAAQkE;UACRC,MAAMC;UACNC;QACF,IAAIpB;AAEJ,cAAMqB,YAAY,CAAA;AAClB,YAAIJ,gBAAgB9N,WAAW,KAAKgO,cAAchO,WAAW,GAAG;AAC9D,gBAAMmO,WAAW,IAAIC,IAAIJ,aAAa;AACtC,qBAAWK,aAAaP,iBAAiB;AACvC,kBAAMlE,SAAS,KAAK1L,cAAcmQ,SAAS,KAAK,CAAA;AAChD,uBAAW;cAAEhP;YAAG,KAAKuK,QAAQ;AAC3BuE,uBAAS5K,IAAIlE,EAAE;YACjB;UACF;AACA,qBAAWuK,UAAU3C,OAAOqH,OAAO,KAAKpQ,aAAa,GAAG;AACtD,uBAAWqQ,SAAS3E,QAAQ;AAC1B,kBAAIuE,SAASjE,IAAIqE,MAAMlP,EAAE,MAAM4O,SAAS;AACtCC,0BAAUnF,KAAKwF,KAAK;cACtB;YACF;UACF;QACF,OAAO;AACL,qBAAW3E,UAAU3C,OAAOqH,OAAO,KAAKpQ,aAAa,GAAG;AACtDgQ,sBAAUnF,KAAK,GAAGa,MAAM;UAC1B;QACF;AAEA,cAAM4E,UAAU,KAAK1Q;AACrB,cAAM2Q,SAAS,CAAA;AACf,mBAAWF,SAASL,WAAW;AAC7B,gBAAM;YAAE7O;UAAG,IAAIkP;AACfE,iBAAO1F,KAAK1J,EAAE;AACd,kBAAQkP,MAAMG,MAAI;YAChB,KAAK,QAAQ;AACX,oBAAMC,QAAQJ,MAAMK,gBAAgB;AACpCJ,sBAAQhN,SAASnC,IAAI;gBAAEsP;cAAM,CAAC;AAC9B;YACF;YACA,KAAK;YACL,KAAK,eAAe;AAClB,oBAAMA,QAAQJ,MAAMK,iBAAiBL,MAAMzE;AAC3C0E,sBAAQhN,SAASnC,IAAI;gBAAEsP;cAAM,CAAC;AAC9B;YACF;YACA,KAAK;YACL,KAAK,WAAW;AACd,oBAAMA,QAAQJ,MAAMK,gBAAgB;AACpCJ,sBAAQhN,SAASnC,IAAI;gBAAEsP;cAAM,CAAC;AAC9B;YACF;YACA;AACE;UACJ;AAEA,gBAAM3E,aAAalH,SAASmH,cAAc,qBAAqB5K,EAAE,IAAI;AACrE,cAAI,CAAC2K,YAAY;AACf;UACF,WAAW,CAACtQ,qBAAqBwQ,IAAIF,UAAU,GAAG;AAChD3F,iBAAK,+CAA+ChF,EAAE,EAAE;AACxD;UACF;AACA2K,qBAAW6E,cAAc,IAAIC,MAAM,WAAW,CAAC;QACjD;AAEA,YAAI,KAAK9Q,iBAAiB;AAExB,eAAKP,YAAY0N,UAAUC,SAAS,0BAA0B;YAC5DC,QAAQ;YACRlG,QAAQ;cACN9F,IAAI;cACJ0P,KAAKN;cACLzH,MAAM;YACR;UACF,CAAC;QACH;AAEA,eAAO;MACT;IACF;EACF;AAEA,MAAMvM,wBAAN,cAAoC0C,kBAAkB;IACpDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;MAAK,CAAC;IAC1C;IAEAmM,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,gBAAgB;AAE7C,YAAMyL,QAAQlM,SAASC,cAAc,KAAK;AAC1CiM,YAAMC,MACJ,KAAKtR,qBACL,gBACA,KAAKxD,KAAK6M,KAAKkI,YAAY,IAC3B;AACFF,YAAMhM,aAAa,gBAAgB,4BAA4B;AAC/DgM,YAAMhM,aACJ,kBACAmM,KAAKC,UAAU;QAAEV,MAAM,KAAKvU,KAAK6M;MAAK,CAAC,CACzC;AAEA,UAAI,CAAC,KAAK7M,KAAKwH,YAAY,KAAK3C,cAAc;AAC5C,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,WAAK5D,UAAUmK,OAAOsG,KAAK;AAC3B,aAAO,KAAKzQ;IACd;EACF;AAEA,MAAMnD,0BAAN,cAAsC+B,kBAAkB;IACtDqM,SAAS;AAEP,aAAO,KAAKjL;IACd;IAEA8Q,yBAAyBhI,SAAS;AAChC,UAAI,KAAKlN,KAAKqJ,cAAc;AAC1B,YAAI6D,QAAQiI,iBAAiBC,aAAa,UAAU;AAClDlI,kBAAQiI,gBAAgB5J,SAAS;QACnC;AACA2B,gBAAQ3B,SAAS;MACnB;IACF;IAEA8J,gBAAgBvK,QAAO;AACrB,aAAOwK,iBAAYC,SAASC,QAAQ1K,OAAM2K,UAAU3K,OAAM4K;IAC5D;IAEAC,kBAAkBzI,SAAS0I,aAAaC,UAAUC,WAAWC,aAAa;AACxE,UAAIF,SAASG,SAAS,OAAO,GAAG;AAE9B9I,gBAAQ6D,iBAAiB8E,UAAU/K,CAAAA,WAAS;AAC1C,eAAKxH,YAAY0N,UAAUC,SAAS,0BAA0B;YAC5DC,QAAQ;YACRlG,QAAQ;cACN9F,IAAI,KAAKlF,KAAKkF;cACd2H,MAAMiJ;cACNtB,OAAOuB,YAAYjL,MAAK;cACxBmL,OAAOnL,OAAMoL;cACbC,UAAU,KAAKd,gBAAgBvK,MAAK;YACtC;UACF,CAAC;QACH,CAAC;MACH,OAAO;AAELoC,gBAAQ6D,iBAAiB8E,UAAU/K,CAAAA,WAAS;AAC1C,cAAI+K,aAAa,QAAQ;AACvB,gBAAI,CAACD,YAAYQ,WAAW,CAACtL,OAAMuL,eAAe;AAChD;YACF;AACAT,wBAAYQ,UAAU;UACxB,WAAWP,aAAa,SAAS;AAC/B,gBAAID,YAAYQ,SAAS;AACvB;YACF;AACAR,wBAAYQ,UAAU;UACxB;AAEA,cAAI,CAACL,aAAa;AAChB;UACF;AAEA,eAAKzS,YAAY0N,UAAUC,SAAS,0BAA0B;YAC5DC,QAAQ;YACRlG,QAAQ;cACN9F,IAAI,KAAKlF,KAAKkF;cACd2H,MAAMiJ;cACNtB,OAAOuB,YAAYjL,MAAK;YAC1B;UACF,CAAC;QACH,CAAC;MACH;IACF;IAEAwL,mBAAmBpJ,SAAS0I,aAAaW,QAAOC,QAAQ;AACtD,iBAAW,CAACX,UAAUC,SAAS,KAAKS,QAAO;AACzC,YAAIT,cAAc,YAAY,KAAK9V,KAAK0M,UAAUoJ,SAAS,GAAG;AAC5D,cAAIA,cAAc,WAAWA,cAAc,QAAQ;AACjDF,4BAAgB;cAAEQ,SAAS;YAAM;UACnC;AACA,eAAKT,kBACHzI,SACA0I,aACAC,UACAC,WACAU,MACF;AACA,cAAIV,cAAc,WAAW,CAAC,KAAK9V,KAAK0M,SAAS+J,MAAM;AAErD,iBAAKd,kBAAkBzI,SAAS0I,aAAa,QAAQ,QAAQ,IAAI;UACnE,WAAWE,cAAc,UAAU,CAAC,KAAK9V,KAAK0M,SAASgK,OAAO;AAC5D,iBAAKf,kBAAkBzI,SAAS0I,aAAa,SAAS,SAAS,IAAI;UACrE;QACF;MACF;IACF;IAEAe,oBAAoBzJ,SAAS;AAC3B,YAAMnC,SAAQ,KAAK/K,KAAK4W,mBAAmB;AAC3C1J,cAAQhF,MAAM0O,kBACZ7L,WAAU,OACN,gBACAT,KAAKC,aAAaQ,OAAM,CAAC,GAAGA,OAAM,CAAC,GAAGA,OAAM,CAAC,CAAC;IACtD;IASA8L,cAAc3J,SAAS;AACrB,YAAM4J,iBAAiB,CAAC,QAAQ,UAAU,OAAO;AACjD,YAAM;QAAEC;MAAU,IAAI,KAAK/W,KAAKgX;AAChC,YAAMC,WACJ,KAAKjX,KAAKgX,sBAAsBC,YAAY3X;AAE9C,YAAM4I,QAAQgF,QAAQhF;AAWtB,UAAIgP;AACJ,YAAMC,cAAc;AACpB,YAAMC,oBAAoBxJ,CAAAA,OAAK7H,KAAKsR,MAAM,KAAKzJ,EAAC,IAAI;AACpD,UAAI,KAAK5N,KAAKsX,WAAW;AACvB,cAAM7O,SAAS1C,KAAKwR,IAClB,KAAKvX,KAAK0F,KAAK,CAAC,IAAI,KAAK1F,KAAK0F,KAAK,CAAC,IAAIyR,WAC1C;AACA,cAAMK,gBAAgBzR,KAAKsR,MAAM5O,UAAUgP,cAAcR,SAAS,KAAK;AACvE,cAAMS,aAAajP,SAAS+O;AAC5BN,2BAAmBnR,KAAK4R,IACtBV,UACAG,kBAAkBM,aAAaD,WAAW,CAC5C;MACF,OAAO;AACL,cAAMhP,SAAS1C,KAAKwR,IAClB,KAAKvX,KAAK0F,KAAK,CAAC,IAAI,KAAK1F,KAAK0F,KAAK,CAAC,IAAIyR,WAC1C;AACAD,2BAAmBnR,KAAK4R,IACtBV,UACAG,kBAAkB3O,SAASgP,WAAW,CACxC;MACF;AACAvP,YAAM+O,WAAW,QAAQC,gBAAgB;AAEzChP,YAAM6C,QAAQT,KAAKC,aAAawM,UAAU,CAAC,GAAGA,UAAU,CAAC,GAAGA,UAAU,CAAC,CAAC;AAExE,UAAI,KAAK/W,KAAK4X,kBAAkB,MAAM;AACpC1P,cAAM2P,YAAYf,eAAe,KAAK9W,KAAK4X,aAAa;MAC1D;IACF;IAEAzL,aAAae,SAAS4K,YAAY;AAChC,UAAIA,YAAY;AACd5K,gBAAQrE,aAAa,YAAY,IAAI;MACvC,OAAO;AACLqE,gBAAQ6K,gBAAgB,UAAU;MACpC;AACA7K,cAAQrE,aAAa,iBAAiBiP,UAAU;IAClD;EACF;AAEA,MAAMrX,8BAAN,cAA0CQ,wBAAwB;IAChEgC,YAAYnD,YAAY;AACtB,YAAMoD,eACJpD,WAAW2D,eACX3D,WAAWE,KAAKqJ,gBACf,CAACvJ,WAAWE,KAAKgY,iBAAiB,CAAC,CAAClY,WAAWE,KAAKiY;AACvD,YAAMnY,YAAY;QAAEoD;MAAa,CAAC;IACpC;IAEAgV,sBAAsBC,MAAMC,KAAK5D,OAAO6D,cAAc;AACpD,YAAMhE,UAAU,KAAK1Q;AACrB,iBAAWuJ,WAAW,KAAKqC,mBACzB4I,KAAKtL,MACUsL,KAAKjT,EACtB,GAAG;AACD,YAAIgI,QAAQ2C,YAAY;AACtB3C,kBAAQ2C,WAAWuI,GAAG,IAAI5D;QAC5B;AACAH,gBAAQhN,SAAS6F,QAAQhI,IAAI;UAAE,CAACmT,YAAY,GAAG7D;QAAM,CAAC;MACxD;IACF;IAEAnF,SAAS;AACP,YAAMgF,UAAU,KAAK1Q;AACrB,YAAMuB,KAAK,KAAKlF,KAAKkF;AAErB,WAAKd,UAAU+E,UAAUC,IAAI,sBAAsB;AAEnD,UAAI8D,UAAU;AACd,UAAI,KAAKzJ,aAAa;AAIpB,cAAM0J,aAAakH,QAAQiE,SAASpT,IAAI;UACtCsP,OAAO,KAAKxU,KAAKiY;QACnB,CAAC;AACD,YAAIM,cAAcpL,WAAWqH,SAAS;AACtC,cAAMgE,SAASnE,QAAQiE,SAASpT,IAAI;UAClCuT,WAAW,KAAKzY,KAAKwY;QACvB,CAAC,EAAEC;AACH,YAAID,UAAUD,YAAY1S,SAAS2S,QAAQ;AACzCD,wBAAcA,YAAYzQ,MAAM,GAAG0Q,MAAM;QAC3C;AAEA,YAAIE,uBACFvL,WAAWwL,kBAAkB,KAAK3Y,KAAKuY,aAAazJ,KAAK,IAAI,KAAK;AACpE,YAAI4J,wBAAwB,KAAK1Y,KAAK4Y,MAAM;AAC1CF,iCAAuBA,qBAAqBG,WAAW,QAAQ,EAAE;QACnE;AAEA,cAAMjD,cAAc;UAClBkD,WAAWP;UACXI,gBAAgBD;UAChBK,oBAAoB;UACpBC,WAAW;UACX5C,SAAS;QACX;AAEA,YAAI,KAAKpW,KAAKsX,WAAW;AACvBpK,oBAAUvE,SAASC,cAAc,UAAU;AAC3CsE,kBAAQqL,cAAcG,wBAAwBH;AAC9C,cAAI,KAAKvY,KAAKiZ,aAAa;AACzB/L,oBAAQhF,MAAMgR,YAAY;UAC5B;QACF,OAAO;AACLhM,oBAAUvE,SAASC,cAAc,OAAO;AACxCsE,kBAAQqH,OAAO,KAAKvU,KAAKmZ,WAAW,aAAa;AACjDjM,kBAAQrE,aAAa,SAAS6P,wBAAwBH,WAAW;AACjE,cAAI,KAAKvY,KAAKiZ,aAAa;AACzB/L,oBAAQhF,MAAMkR,YAAY;UAC5B;QACF;AACA,YAAI,KAAKpZ,KAAKqJ,cAAc;AAC1B6D,kBAAQ3B,SAAS;QACnB;AACAhM,6BAAqB6J,IAAI8D,OAAO;AAChC,aAAK/I,iBAAiB+I;AACtBA,gBAAQrE,aAAa,mBAAmB3D,EAAE;AAE1CgI,gBAAQjB,WAAW,KAAKjM,KAAKqZ;AAC7BnM,gBAAQL,OAAO,KAAK7M,KAAKkU;AACzBhH,gBAAQpE,WAAW;AACnB,cAAM;UAAEwQ;UAAgBC;UAAcC;QAAS,IAAI,KAAKxZ;AACxD,cAAMyZ,gBAAgB,CAAC,CAACF,gBAAgB,KAAK1V;AAC7C,YAAIyV,gBAAgB;AAClBpM,kBAAQjE,QAAQqQ;QAClB;AAEA,aAAKnN,aAAae,SAAS,KAAKlN,KAAKkM,QAAQ;AAE7C,YAAIsM,QAAQ;AACVtL,kBAAQwM,YAAYlB;QACtB;AAEAtL,gBAAQ6D,iBAAiB,SAASjG,CAAAA,WAAS;AACzCuJ,kBAAQhN,SAASnC,IAAI;YAAEsP,OAAO1J,OAAMK,OAAOqJ;UAAM,CAAC;AAClD,eAAK0D,sBACHhL,SACA,SACApC,OAAMK,OAAOqJ,OACb,OACF;AACAoB,sBAAY+C,iBAAiB;QAC/B,CAAC;AAEDzL,gBAAQ6D,iBAAiB,aAAajG,CAAAA,WAAS;AAC7C,gBAAM2J,eAAe,KAAKzU,KAAK2Z,qBAAqB;AACpDzM,kBAAQsH,QAAQoB,YAAYkD,YAAYrE;AACxCmB,sBAAY+C,iBAAiB;QAC/B,CAAC;AAED,YAAIiB,eAAe9O,CAAAA,WAAS;AAC1B,gBAAM;YAAE6N;UAAe,IAAI/C;AAC3B,cAAI+C,mBAAmB,QAAQA,mBAAmBkB,QAAW;AAC3D/O,YAAAA,OAAMK,OAAOqJ,QAAQmE;UACvB;AAEA7N,UAAAA,OAAMK,OAAO2O,aAAa;QAC5B;AAEA,YAAI,KAAKjW,mBAAmB,KAAKC,cAAc;AAC7CoJ,kBAAQ6D,iBAAiB,SAASjG,CAAAA,WAAS;AACzC,gBAAI8K,YAAYQ,SAAS;AACvB;YACF;AACA,kBAAM;cAAEjL;YAAO,IAAIL;AACnB,gBAAI2O,eAAe;AACjBtO,qBAAOoJ,OAAOgF;AACd,kBAAIC,UAAU;AACZrO,uBAAO4O,OAAOP;cAChB;YACF;AAEA,gBAAI5D,YAAYkD,WAAW;AACzB,oBAAMtE,QAAQoB,YAAYkD;AAC1B,kBAAIW,eAAe;AACjB,oBAAIF,iBAAiB,QAAQ;AAC3B,wBAAMvK,OAAO,IAAItP,KAAK8U,KAAK;AAC3B,wBAAMwF,QAAQ,CACZhL,KAAKiL,SAAS,GACdjL,KAAKkL,WAAW,GAChBlL,KAAKmL,WAAW,CAAC;AAEnBhP,yBAAOqJ,QAAQwF,MACZrM,IAAIyM,CAAAA,OAAKA,GAAEC,SAAS,EAAEC,SAAS,GAAG,GAAG,CAAC,EACtCxL,KAAK,GAAG;gBACb,OAAO;AACL3D,yBAAOqJ,QAAQ,IAAI9U,KAAK8U,QAAQ/U,eAAe,EAC5C8a,YAAY,EACZC,MAAMjB,iBAAiB,SAAS,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpD;cACF,OAAO;AACLpO,uBAAOqJ,QAAQA;cACjB;YACF;AACAoB,wBAAYmD,qBAAqB5N,OAAOqJ;AACxCoB,wBAAYoD,YAAY;AACxB,gBAAI,CAAC,KAAKhZ,KAAK0M,SAASgK,OAAO;AAC7Bd,0BAAYQ,UAAU;YACxB;UACF,CAAC;AAEDlJ,kBAAQ6D,iBAAiB,qBAAqBpE,aAAW;AACvD,iBAAKuI,yBAAyBvI,QAAQxB,MAAM;AAC5C,kBAAMuB,UAAU;cACd8H,MAAM1J,QAAO;AACX8K,4BAAYkD,YAAYhO,OAAME,OAAOwJ,SAAS;AAC9C,oBAAI,CAACiF,eAAe;AAClBpF,0BAAQhN,SAASnC,IAAI;oBACnBsP,OAAOoB,YAAYkD,UAAUuB,SAAS;kBACxC,CAAC;gBACH;AACAvP,gBAAAA,OAAMK,OAAOqJ,QAAQoB,YAAYkD;cACnC;cACAH,eAAe7N,QAAO;AACpB,sBAAM;kBAAE6N;gBAAe,IAAI7N,OAAME;AACjC4K,4BAAY+C,iBAAiBA;AAC7B,oBACEA,mBAAmB,QACnBA,mBAAmBkB,UACnB/O,OAAMK,WAAWxC,SAAS8R,eAC1B;AAEA3P,kBAAAA,OAAMK,OAAOqJ,QAAQmE;gBACvB;AACA,sBAAM3Y,OAAO;kBACX2Y;gBACF;AACA,oBAAIc,eAAe;AAIjBzZ,uBAAKwU,QAAQmE;gBACf;AACAtE,wBAAQhN,SAASnC,IAAIlF,IAAI;cAC3B;cACA0a,SAAS5P,QAAO;AACdA,gBAAAA,OAAMK,OAAOwP,kBAAkB,GAAG7P,OAAME,OAAO0P,QAAQ;cACzD;cACAjC,WAAW3N,CAAAA,WAAS;AAClB,sBAAM;kBAAE2N;gBAAU,IAAI3N,OAAME;AAC5B,sBAAM;kBAAEG;gBAAO,IAAIL;AACnB,oBAAI2N,cAAc,GAAG;AACnBtN,yBAAO4M,gBAAgB,WAAW;AAClC;gBACF;AAEA5M,uBAAOtC,aAAa,aAAa4P,SAAS;AAC1C,oBAAIjE,QAAQoB,YAAYkD;AACxB,oBAAI,CAACtE,SAASA,MAAM3O,UAAU4S,WAAW;AACvC;gBACF;AACAjE,wBAAQA,MAAM1M,MAAM,GAAG2Q,SAAS;AAChCtN,uBAAOqJ,QAAQoB,YAAYkD,YAAYtE;AACvCH,wBAAQhN,SAASnC,IAAI;kBAAEsP;gBAAM,CAAC;AAE9B,qBAAKlR,YAAY0N,UAAUC,SAAS,0BAA0B;kBAC5DC,QAAQ;kBACRlG,QAAQ;oBACN9F;oBACA2H,MAAM;oBACN2H;oBACAoG,YAAY;oBACZ5B,WAAW;oBACX6B,UAAU1P,OAAO2P;oBACjBC,QAAQ5P,OAAO6P;kBACjB;gBACF,CAAC;cACH;YACF;AACA,iBAAKvO,0BAA0BC,SAASC,OAAO;UACjD,CAAC;AAIDO,kBAAQ6D,iBAAiB,WAAWjG,CAAAA,WAAS;AAC3C8K,wBAAYoD,YAAY;AAGxB,gBAAIA,YAAY;AAChB,gBAAIlO,OAAMsN,QAAQ,UAAU;AAC1BY,0BAAY;YACd,WAAWlO,OAAMsN,QAAQ,WAAW,CAAC,KAAKpY,KAAKsX,WAAW;AAIxD0B,0BAAY;YACd,WAAWlO,OAAMsN,QAAQ,OAAO;AAC9BxC,0BAAYoD,YAAY;YAC1B;AACA,gBAAIA,cAAc,IAAI;AACpB;YACF;AACA,kBAAM;cAAExE;YAAM,IAAI1J,OAAMK;AACxB,gBAAIyK,YAAYmD,uBAAuBvE,OAAO;AAC5C;YACF;AACAoB,wBAAYmD,qBAAqBvE;AAEjCoB,wBAAYkD,YAAYtE;AACxB,iBAAKlR,YAAY0N,UAAUC,SAAS,0BAA0B;cAC5DC,QAAQ;cACRlG,QAAQ;gBACN9F;gBACA2H,MAAM;gBACN2H;gBACAoG,YAAY;gBACZ5B;gBACA6B,UAAU/P,OAAMK,OAAO2P;gBACvBC,QAAQjQ,OAAMK,OAAO6P;cACvB;YACF,CAAC;UACH,CAAC;AACD,gBAAMC,gBAAgBrB;AACtBA,yBAAe;AACf1M,kBAAQ6D,iBAAiB,QAAQjG,CAAAA,WAAS;AACxC,gBAAI,CAAC8K,YAAYQ,WAAW,CAACtL,OAAMuL,eAAe;AAChD;YACF;AACA,gBAAI,CAAC,KAAKrW,KAAK0M,SAAS+J,MAAM;AAC5Bb,0BAAYQ,UAAU;YACxB;AACA,kBAAM;cAAEjL;YAAO,IAAIL;AACnB,gBAAI;cAAE0J;YAAM,IAAIrJ;AAChB,gBAAIsO,eAAe;AACjB,kBAAIjF,SAAS+E,iBAAiB,QAAQ;AACpC,sBAAMS,QAAQxF,MAAMgG,MAAM,GAAG,EAAE7M,IAAIyM,CAAAA,OAAKc,SAASd,IAAG,EAAE,CAAC;AACvD5F,wBAAQ,IAAI9U,KACV,KACA,GACA,GACAsa,MAAM,CAAC,GACPA,MAAM,CAAC,GACPA,MAAM,CAAC,KAAK,CACd,EAAEmB,QAAQ;AACVhQ,uBAAO4O,OAAO;cAChB,OAAO;AAML,oBAAI,CAACvF,MAAMwB,SAAS,GAAG,GAAG;AACxBxB,0BAAQ,GAAGA,KAAK;gBAClB;AACAA,wBAAQ,IAAI9U,KAAK8U,KAAK,EAAE2G,QAAQ;cAClC;AACAhQ,qBAAOoJ,OAAO;YAChB;AACAqB,wBAAYkD,YAAYtE;AACxB,gBAAIoB,YAAYmD,uBAAuBvE,OAAO;AAC5C,mBAAKlR,YAAY0N,UAAUC,SAAS,0BAA0B;gBAC5DC,QAAQ;gBACRlG,QAAQ;kBACN9F;kBACA2H,MAAM;kBACN2H;kBACAoG,YAAY;kBACZ5B,WAAWpD,YAAYoD;kBACvB6B,UAAU/P,OAAMK,OAAO2P;kBACvBC,QAAQjQ,OAAMK,OAAO6P;gBACvB;cACF,CAAC;YACH;AACAC,0BAAcnQ,MAAK;UACrB,CAAC;AAED,cAAI,KAAK9K,KAAK0M,SAAS0O,WAAW;AAChClO,oBAAQ6D,iBAAiB,eAAejG,CAAAA,WAAS;AAC/C8K,0BAAYmD,qBAAqB;AACjC,oBAAM;gBAAE/Y;gBAAMmL;cAAO,IAAIL;AACzB,oBAAM;gBAAE0J;gBAAOsG;gBAAgBE;cAAa,IAAI7P;AAEhD,kBAAI0P,WAAWC,gBACbC,SAASC;AAEX,sBAAQlQ,OAAMuQ,WAAS;gBAErB,KAAK,sBAAsB;AACzB,wBAAMC,SAAQ9G,MACX+G,UAAU,GAAGT,cAAc,EAC3BQ,MAAM,YAAY;AACrB,sBAAIA,QAAO;AACTT,gCAAYS,OAAM,CAAC,EAAEzV;kBACvB;AACA;gBACF;gBACA,KAAK,qBAAqB;AACxB,wBAAMyV,SAAQ9G,MACX+G,UAAUT,cAAc,EACxBQ,MAAM,YAAY;AACrB,sBAAIA,QAAO;AACTP,8BAAUO,OAAM,CAAC,EAAEzV;kBACrB;AACA;gBACF;gBACA,KAAK;AACH,sBAAIiV,mBAAmBE,cAAc;AACnCH,gCAAY;kBACd;AACA;gBACF,KAAK;AACH,sBAAIC,mBAAmBE,cAAc;AACnCD,8BAAU;kBACZ;AACA;cACJ;AAGAjQ,cAAAA,OAAM0Q,eAAe;AACrB,mBAAKlY,YAAY0N,UAAUC,SAAS,0BAA0B;gBAC5DC,QAAQ;gBACRlG,QAAQ;kBACN9F;kBACA2H,MAAM;kBACN2H;kBACAiH,QAAQzb,QAAQ;kBAChB4a,YAAY;kBACZC;kBACAE;gBACF;cACF,CAAC;YACH,CAAC;UACH;AAEA,eAAKzE,mBACHpJ,SACA0I,aACA,CACE,CAAC,SAAS,OAAO,GACjB,CAAC,QAAQ,MAAM,GACf,CAAC,aAAa,YAAY,GAC1B,CAAC,cAAc,aAAa,GAC5B,CAAC,cAAc,YAAY,GAC3B,CAAC,WAAW,UAAU,CAAC,GAEzB9K,CAAAA,WAASA,OAAMK,OAAOqJ,KACxB;QACF;AAEA,YAAIoF,cAAc;AAChB1M,kBAAQ6D,iBAAiB,QAAQ6I,YAAY;QAC/C;AAEA,YAAI,KAAK5Z,KAAK4Y,MAAM;AAClB,gBAAM8C,aAAa,KAAK1b,KAAK0F,KAAK,CAAC,IAAI,KAAK1F,KAAK0F,KAAK,CAAC;AACvD,gBAAMiW,YAAYD,aAAalD;AAE/BtL,kBAAQ/D,UAAUC,IAAI,MAAM;AAC5B8D,kBAAQhF,MAAM0T,gBAAgB,QAAQD,SAAS;QACjD;MACF,OAAO;AACLzO,kBAAUvE,SAASC,cAAc,KAAK;AACtCsE,gBAAQqL,cAAc,KAAKvY,KAAKiY;AAChC/K,gBAAQhF,MAAM2T,gBAAgB;AAC9B3O,gBAAQhF,MAAMoD,UAAU;AAExB,YAAI,KAAKtL,KAAKqJ,cAAc;AAC1B6D,kBAAQ3B,SAAS;QACnB;MACF;AAEA,WAAKsL,cAAc3J,OAAO;AAC1B,WAAKyJ,oBAAoBzJ,OAAO;AAChC,WAAKD,4BAA4BC,OAAO;AAExC,WAAK9I,UAAUmK,OAAOrB,OAAO;AAC7B,aAAO,KAAK9I;IACd;EACF;AAEA,MAAMpD,mCAAN,cAA+CC,wBAAwB;IACrEgC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc,CAAC,CAACpD,WAAWE,KAAKqJ;MAAa,CAAC;IACpE;EACF;AAEA,MAAMxI,kCAAN,cAA8CI,wBAAwB;IACpEgC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAcpD,WAAW2D;MAAY,CAAC;IAC5D;IAEA4L,SAAS;AACP,YAAMgF,UAAU,KAAK1Q;AACrB,YAAM3D,OAAO,KAAKA;AAClB,YAAMkF,KAAKlF,KAAKkF;AAChB,UAAIsP,QAAQH,QAAQiE,SAASpT,IAAI;QAC/BsP,OAAOxU,KAAK4P,gBAAgB5P,KAAKiY;MACnC,CAAC,EAAEzD;AACH,UAAI,OAAOA,UAAU,UAAU;AAE7BA,gBAAQA,UAAU;AAClBH,gBAAQhN,SAASnC,IAAI;UAAEsP;QAAM,CAAC;MAChC;AAEA,WAAKpQ,UAAU+E,UAAUC,IAAI,0BAA0B,UAAU;AAEjE,YAAM8D,UAAUvE,SAASC,cAAc,OAAO;AAC9CrJ,2BAAqB6J,IAAI8D,OAAO;AAChCA,cAAQrE,aAAa,mBAAmB3D,EAAE;AAE1CgI,cAAQjB,WAAWjM,KAAKqZ;AACxB,WAAKlN,aAAae,SAAS,KAAKlN,KAAKkM,QAAQ;AAC7CgB,cAAQqH,OAAO;AACfrH,cAAQL,OAAO7M,KAAKkU;AACpB,UAAIM,OAAO;AACTtH,gBAAQrE,aAAa,WAAW,IAAI;MACtC;AACAqE,cAAQrE,aAAa,eAAe7I,KAAK4P,WAAW;AACpD1C,cAAQpE,WAAW;AAEnBoE,cAAQ6D,iBAAiB,UAAUjG,CAAAA,WAAS;AAC1C,cAAM;UAAE+B,MAAAA;UAAMiP;QAAQ,IAAIhR,OAAMK;AAChC,mBAAW4Q,YAAY,KAAKxM,mBAAmB1C,OAAqB3H,EAAE,GAAG;AACvE,gBAAM8W,aAAaF,WAAWC,SAASnM,gBAAgB5P,KAAK4P;AAC5D,cAAImM,SAASlM,YAAY;AACvBkM,qBAASlM,WAAWiM,UAAUE;UAChC;AACA3H,kBAAQhN,SAAS0U,SAAS7W,IAAI;YAAEsP,OAAOwH;UAAW,CAAC;QACrD;AACA3H,gBAAQhN,SAASnC,IAAI;UAAEsP,OAAOsH;QAAQ,CAAC;MACzC,CAAC;AAED5O,cAAQ6D,iBAAiB,aAAajG,CAAAA,WAAS;AAC7C,cAAM2J,eAAezU,KAAK2Z,qBAAqB;AAC/C7O,QAAAA,OAAMK,OAAO2Q,UAAUrH,iBAAiBzU,KAAK4P;MAC/C,CAAC;AAED,UAAI,KAAK/L,mBAAmB,KAAKC,cAAc;AAC7CoJ,gBAAQ6D,iBAAiB,qBAAqBpE,aAAW;AACvD,gBAAMD,UAAU;YACd8H,MAAM1J,QAAO;AACXA,cAAAA,OAAMK,OAAO2Q,UAAUhR,OAAME,OAAOwJ,UAAU;AAC9CH,sBAAQhN,SAASnC,IAAI;gBAAEsP,OAAO1J,OAAMK,OAAO2Q;cAAQ,CAAC;YACtD;UACF;AACA,eAAKrP,0BAA0BC,SAASC,OAAO;QACjD,CAAC;AAED,aAAK2J,mBACHpJ,SACA,MACA,CACE,CAAC,UAAU,UAAU,GACrB,CAAC,UAAU,QAAQ,GACnB,CAAC,SAAS,OAAO,GACjB,CAAC,QAAQ,MAAM,GACf,CAAC,aAAa,YAAY,GAC1B,CAAC,cAAc,aAAa,GAC5B,CAAC,cAAc,YAAY,GAC3B,CAAC,WAAW,UAAU,CAAC,GAEzBpC,CAAAA,WAASA,OAAMK,OAAO2Q,OACxB;MACF;AAEA,WAAKnF,oBAAoBzJ,OAAO;AAChC,WAAKD,4BAA4BC,OAAO;AAExC,WAAK9I,UAAUmK,OAAOrB,OAAO;AAC7B,aAAO,KAAK9I;IACd;EACF;AAEA,MAAMzD,qCAAN,cAAiDM,wBAAwB;IACvEgC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAcpD,WAAW2D;MAAY,CAAC;IAC5D;IAEA4L,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,0BAA0B,aAAa;AACpE,YAAMiL,UAAU,KAAK1Q;AACrB,YAAM3D,OAAO,KAAKA;AAClB,YAAMkF,KAAKlF,KAAKkF;AAChB,UAAIsP,QAAQH,QAAQiE,SAASpT,IAAI;QAC/BsP,OAAOxU,KAAKiY,eAAejY,KAAKic;MAClC,CAAC,EAAEzH;AACH,UAAI,OAAOA,UAAU,UAAU;AAE7BA,gBAAQA,UAAUxU,KAAKic;AACvB5H,gBAAQhN,SAASnC,IAAI;UAAEsP;QAAM,CAAC;MAChC;AAEA,UAAIA,OAAO;AAOT,mBAAW0H,SAAS,KAAK3M,mBACvBvP,KAAKkU,WACUhP,EACjB,GAAG;AACDmP,kBAAQhN,SAAS6U,MAAMhX,IAAI;YAAEsP,OAAO;UAAM,CAAC;QAC7C;MACF;AAEA,YAAMtH,UAAUvE,SAASC,cAAc,OAAO;AAC9CrJ,2BAAqB6J,IAAI8D,OAAO;AAChCA,cAAQrE,aAAa,mBAAmB3D,EAAE;AAE1CgI,cAAQjB,WAAWjM,KAAKqZ;AACxB,WAAKlN,aAAae,SAAS,KAAKlN,KAAKkM,QAAQ;AAC7CgB,cAAQqH,OAAO;AACfrH,cAAQL,OAAO7M,KAAKkU;AACpB,UAAIM,OAAO;AACTtH,gBAAQrE,aAAa,WAAW,IAAI;MACtC;AACAqE,cAAQpE,WAAW;AAEnBoE,cAAQ6D,iBAAiB,UAAUjG,CAAAA,WAAS;AAC1C,cAAM;UAAE+B,MAAAA;UAAMiP;QAAQ,IAAIhR,OAAMK;AAChC,mBAAW+Q,SAAS,KAAK3M,mBAAmB1C,OAAqB3H,EAAE,GAAG;AACpEmP,kBAAQhN,SAAS6U,MAAMhX,IAAI;YAAEsP,OAAO;UAAM,CAAC;QAC7C;AACAH,gBAAQhN,SAASnC,IAAI;UAAEsP,OAAOsH;QAAQ,CAAC;MACzC,CAAC;AAED5O,cAAQ6D,iBAAiB,aAAajG,CAAAA,WAAS;AAC7C,cAAM2J,eAAezU,KAAK2Z;AAC1B7O,QAAAA,OAAMK,OAAO2Q,UACXrH,iBAAiB,QACjBA,iBAAiBoF,UACjBpF,iBAAiBzU,KAAKic;MAC1B,CAAC;AAED,UAAI,KAAKpY,mBAAmB,KAAKC,cAAc;AAC7C,cAAMqY,iBAAiBnc,KAAKic;AAC5B/O,gBAAQ6D,iBAAiB,qBAAqBpE,aAAW;AACvD,gBAAMD,UAAU;YACd8H,OAAO1J,CAAAA,WAAS;AACd,oBAAMgR,UAAUK,mBAAmBrR,OAAME,OAAOwJ;AAChD,yBAAW0H,SAAS,KAAK3M,mBAAmBzE,OAAMK,OAAO0B,IAAI,GAAG;AAC9D,sBAAMmP,aAAaF,WAAWI,MAAMhX,OAAOA;AAC3C,oBAAIgX,MAAMrM,YAAY;AACpBqM,wBAAMrM,WAAWiM,UAAUE;gBAC7B;AACA3H,wBAAQhN,SAAS6U,MAAMhX,IAAI;kBAAEsP,OAAOwH;gBAAW,CAAC;cAClD;YACF;UACF;AACA,eAAKvP,0BAA0BC,SAASC,OAAO;QACjD,CAAC;AAED,aAAK2J,mBACHpJ,SACA,MACA,CACE,CAAC,UAAU,UAAU,GACrB,CAAC,UAAU,QAAQ,GACnB,CAAC,SAAS,OAAO,GACjB,CAAC,QAAQ,MAAM,GACf,CAAC,aAAa,YAAY,GAC1B,CAAC,cAAc,aAAa,GAC5B,CAAC,cAAc,YAAY,GAC3B,CAAC,WAAW,UAAU,CAAC,GAEzBpC,CAAAA,WAASA,OAAMK,OAAO2Q,OACxB;MACF;AAEA,WAAKnF,oBAAoBzJ,OAAO;AAChC,WAAKD,4BAA4BC,OAAO;AAExC,WAAK9I,UAAUmK,OAAOrB,OAAO;AAC7B,aAAO,KAAK9I;IACd;EACF;AAEA,MAAMtD,oCAAN,cAAgDV,sBAAsB;IACpE6C,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEqD,cAAcrD,WAAWE,KAAKgY;MAAc,CAAC;IACnE;IAEA3I,SAAS;AAIP,YAAMjL,YAAY,MAAMiL,OAAO;AAC/BjL,gBAAU+E,UAAUC,IAAI,0BAA0B,YAAY;AAE9D,YAAMgT,cAAchY,UAAUiY;AAC9B,UAAI,KAAKxY,mBAAmB,KAAKC,gBAAgBsY,aAAa;AAC5D,aAAKnP,4BAA4BmP,WAAW;AAE5CA,oBAAYrL,iBAAiB,qBAAqBpE,aAAW;AAC3D,eAAKF,0BAA0B,CAAC,GAAGE,OAAO;QAC5C,CAAC;MACH;AAEA,aAAOvI;IACT;EACF;AAEA,MAAMrD,gCAAN,cAA4CE,wBAAwB;IAClEgC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAcpD,WAAW2D;MAAY,CAAC;IAC5D;IAEA4L,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,wBAAwB;AACrD,YAAMiL,UAAU,KAAK1Q;AACrB,YAAMuB,KAAK,KAAKlF,KAAKkF;AAErB,YAAMiI,aAAakH,QAAQiE,SAASpT,IAAI;QACtCsP,OAAO,KAAKxU,KAAKiY;MACnB,CAAC;AAED,YAAMqE,gBAAgB3T,SAASC,cAAc,QAAQ;AACrDrJ,2BAAqB6J,IAAIkT,aAAa;AACtCA,oBAAczT,aAAa,mBAAmB3D,EAAE;AAEhDoX,oBAAcrQ,WAAW,KAAKjM,KAAKqZ;AACnC,WAAKlN,aAAamQ,eAAe,KAAKtc,KAAKkM,QAAQ;AACnDoQ,oBAAczP,OAAO,KAAK7M,KAAKkU;AAC/BoI,oBAAcxT,WAAW;AAEzB,UAAIyT,kBAAkB,KAAKvc,KAAKwc,SAAS,KAAKxc,KAAK0R,QAAQ7L,SAAS;AAEpE,UAAI,CAAC,KAAK7F,KAAKwc,OAAO;AAEpBF,sBAAcG,OAAO,KAAKzc,KAAK0R,QAAQ7L;AACvC,YAAI,KAAK7F,KAAK0c,aAAa;AACzBJ,wBAAcK,WAAW;QAC3B;MACF;AAEAL,oBAAcvL,iBAAiB,aAAajG,CAAAA,WAAS;AACnD,cAAM2J,eAAe,KAAKzU,KAAK2Z;AAC/B,mBAAWiD,WAAUN,cAAc5K,SAAS;AAC1CkL,UAAAA,QAAOC,WAAWD,QAAOpI,UAAUC;QACrC;MACF,CAAC;AAGD,iBAAWmI,WAAU,KAAK5c,KAAK0R,SAAS;AACtC,cAAMoL,gBAAgBnU,SAASC,cAAc,QAAQ;AACrDkU,sBAAcvE,cAAcqE,QAAOG;AACnCD,sBAActI,QAAQoI,QAAOhN;AAC7B,YAAIzC,WAAWqH,MAAMwB,SAAS4G,QAAOhN,WAAW,GAAG;AACjDkN,wBAAcjU,aAAa,YAAY,IAAI;AAC3C0T,4BAAkB;QACpB;AACAD,sBAAc/N,OAAOuO,aAAa;MACpC;AAEA,UAAIE,mBAAmB;AACvB,UAAIT,iBAAiB;AACnB,cAAMU,oBAAoBtU,SAASC,cAAc,QAAQ;AACzDqU,0BAAkBzI,QAAQ;AAC1ByI,0BAAkBpU,aAAa,UAAU,IAAI;AAC7CoU,0BAAkBpU,aAAa,YAAY,IAAI;AAC/CyT,sBAAcY,QAAQD,iBAAiB;AAEvCD,2BAAmBA,MAAM;AACvBC,4BAAkBtV,OAAO;AACzB2U,wBAAca,oBAAoB,SAASH,gBAAgB;AAC3DA,6BAAmB;QACrB;AACAV,sBAAcvL,iBAAiB,SAASiM,gBAAgB;MAC1D;AAEA,YAAM1E,WAAW8E,cAAY;AAC3B,cAAMvQ,QAAOuQ,WAAW,UAAU;AAClC,cAAM;UAAE1L;UAASiL;QAAS,IAAIL;AAC9B,YAAI,CAACK,UAAU;AACb,iBAAOjL,QAAQ2L,kBAAkB,KAC7B,OACA3L,QAAQA,QAAQ2L,aAAa,EAAExQ,KAAI;QACzC;AACA,eAAO4D,MAAM6M,UAAUC,OACpBC,KAAK9L,SAASkL,CAAAA,YAAUA,QAAOC,QAAQ,EACvClP,IAAIiP,CAAAA,YAAUA,QAAO/P,KAAI,CAAC;MAC/B;AAEA,UAAI4Q,iBAAiBnF,SAAwB,KAAK;AAElD,YAAMoF,WAAW5S,CAAAA,WAAS;AACxB,cAAM4G,UAAU5G,OAAMK,OAAOuG;AAC7B,eAAOjB,MAAM6M,UAAU3P,IAAI6P,KAAK9L,SAASkL,CAAAA,aAAW;UAClDG,cAAcH,QAAOrE;UACrB3I,aAAagN,QAAOpI;QACtB,EAAE;MACJ;AAEA,UAAI,KAAK3Q,mBAAmB,KAAKC,cAAc;AAC7CwY,sBAAcvL,iBAAiB,qBAAqBpE,aAAW;AAC7D,gBAAMD,UAAU;YACd8H,MAAM1J,QAAO;AACXkS,iCAAmB;AACnB,oBAAMxI,QAAQ1J,OAAME,OAAOwJ;AAC3B,oBAAML,SAAS,IAAIF,IAAIxD,MAAMC,QAAQ8D,KAAK,IAAIA,QAAQ,CAACA,KAAK,CAAC;AAC7D,yBAAWoI,WAAUN,cAAc5K,SAAS;AAC1CkL,gBAAAA,QAAOC,WAAW1I,OAAOpE,IAAI6M,QAAOpI,KAAK;cAC3C;AACAH,sBAAQhN,SAASnC,IAAI;gBACnBsP,OAAO8D,SAAwB,IAAI;cACrC,CAAC;AACDmF,+BAAiBnF,SAAwB,KAAK;YAChD;YACAqF,kBAAkB7S,QAAO;AACvBwR,4BAAcK,WAAW;YAC3B;YACAhV,OAAOmD,QAAO;AACZ,oBAAM4G,UAAU4K,cAAc5K;AAC9B,oBAAMkM,SAAQ9S,OAAME,OAAOrD;AAC3B+J,sBAAQkM,MAAK,EAAEf,WAAW;AAC1BP,4BAAc3U,OAAOiW,MAAK;AAC1B,kBAAIlM,QAAQ7L,SAAS,GAAG;AACtB,sBAAMC,KAAI2K,MAAM6M,UAAUO,UAAUL,KAClC9L,SACAkL,CAAAA,YAAUA,QAAOC,QACnB;AACA,oBAAI/W,OAAM,IAAI;AACZ4L,0BAAQ,CAAC,EAAEmL,WAAW;gBACxB;cACF;AACAxI,sBAAQhN,SAASnC,IAAI;gBACnBsP,OAAO8D,SAAwB,IAAI;gBACnCwF,OAAOJ,SAAS5S,MAAK;cACvB,CAAC;AACD2S,+BAAiBnF,SAAwB,KAAK;YAChD;YACAyF,MAAMjT,QAAO;AACX,qBAAOwR,cAAczW,WAAW,GAAG;AACjCyW,8BAAc3U,OAAO,CAAC;cACxB;AACA0M,sBAAQhN,SAASnC,IAAI;gBAAEsP,OAAO;gBAAMsJ,OAAO,CAAA;cAAG,CAAC;AAC/CL,+BAAiBnF,SAAwB,KAAK;YAChD;YACA0F,OAAOlT,QAAO;AACZ,oBAAM;gBAAE8S,OAAAA;gBAAOb;gBAAcnN;cAAY,IAAI9E,OAAME,OAAOgT;AAC1D,oBAAMC,cAAc3B,cAAc4B,SAASN,MAAK;AAChD,oBAAMd,gBAAgBnU,SAASC,cAAc,QAAQ;AACrDkU,4BAAcvE,cAAcwE;AAC5BD,4BAActI,QAAQ5E;AAEtB,kBAAIqO,aAAa;AACfA,4BAAYE,OAAOrB,aAAa;cAClC,OAAO;AACLR,8BAAc/N,OAAOuO,aAAa;cACpC;AACAzI,sBAAQhN,SAASnC,IAAI;gBACnBsP,OAAO8D,SAAwB,IAAI;gBACnCwF,OAAOJ,SAAS5S,MAAK;cACvB,CAAC;AACD2S,+BAAiBnF,SAAwB,KAAK;YAChD;YACAwF,MAAMhT,QAAO;AACX,oBAAM;gBAAEgT;cAAM,IAAIhT,OAAME;AACxB,qBAAOsR,cAAczW,WAAW,GAAG;AACjCyW,8BAAc3U,OAAO,CAAC;cACxB;AACA,yBAAWyW,QAAQN,OAAO;AACxB,sBAAM;kBAAEf;kBAAcnN;gBAAY,IAAIwO;AACtC,sBAAMtB,gBAAgBnU,SAASC,cAAc,QAAQ;AACrDkU,8BAAcvE,cAAcwE;AAC5BD,8BAActI,QAAQ5E;AACtB0M,8BAAc/N,OAAOuO,aAAa;cACpC;AACA,kBAAIR,cAAc5K,QAAQ7L,SAAS,GAAG;AACpCyW,8BAAc5K,QAAQ,CAAC,EAAEmL,WAAW;cACtC;AACAxI,sBAAQhN,SAASnC,IAAI;gBACnBsP,OAAO8D,SAAwB,IAAI;gBACnCwF,OAAOJ,SAAS5S,MAAK;cACvB,CAAC;AACD2S,+BAAiBnF,SAAwB,KAAK;YAChD;YACA+F,QAAQvT,QAAO;AACb,oBAAMuT,UAAU,IAAIpK,IAAInJ,OAAME,OAAOqT,OAAO;AAC5C,yBAAWzB,WAAU9R,OAAMK,OAAOuG,SAAS;AACzCkL,gBAAAA,QAAOC,WAAWwB,QAAQtO,IAAI6M,QAAOgB,KAAK;cAC5C;AACAvJ,sBAAQhN,SAASnC,IAAI;gBACnBsP,OAAO8D,SAAwB,IAAI;cACrC,CAAC;AACDmF,+BAAiBnF,SAAwB,KAAK;YAChD;YACAgG,SAASxT,QAAO;AACdA,cAAAA,OAAMK,OAAOc,WAAW,CAACnB,OAAME,OAAOsT;YACxC;UACF;AACA,eAAK7R,0BAA0BC,SAASC,OAAO;QACjD,CAAC;AAED2P,sBAAcvL,iBAAiB,SAASjG,CAAAA,WAAS;AAC/C,gBAAM8E,cAAc0I,SAAwB,IAAI;AAChD,gBAAMmD,SAASnD,SAAwB,KAAK;AAC5CjE,kBAAQhN,SAASnC,IAAI;YAAEsP,OAAO5E;UAAY,CAAC;AAE3C9E,UAAAA,OAAM0Q,eAAe;AAErB,eAAKlY,YAAY0N,UAAUC,SAAS,0BAA0B;YAC5DC,QAAQ;YACRlG,QAAQ;cACN9F;cACA2H,MAAM;cACN2H,OAAOiJ;cACPhC;cACA8C,UAAU3O;cACVgL,YAAY;cACZ5B,WAAW;cACXwF,SAAS;YACX;UACF,CAAC;QACH,CAAC;AAED,aAAKlI,mBACHgG,eACA,MACA,CACE,CAAC,SAAS,OAAO,GACjB,CAAC,QAAQ,MAAM,GACf,CAAC,aAAa,YAAY,GAC1B,CAAC,cAAc,aAAa,GAC5B,CAAC,cAAc,YAAY,GAC3B,CAAC,WAAW,UAAU,GACtB,CAAC,SAAS,QAAQ,GAClB,CAAC,SAAS,UAAU,CAAC,GAEvBxR,CAAAA,WAASA,OAAMK,OAAOqJ,KACxB;MACF,OAAO;AACL8H,sBAAcvL,iBAAiB,SAAS,SAAUjG,QAAO;AACvDuJ,kBAAQhN,SAASnC,IAAI;YAAEsP,OAAO8D,SAAwB,IAAI;UAAE,CAAC;QAC/D,CAAC;MACH;AAEA,UAAI,KAAKtY,KAAKwc,OAAO;AACnB,aAAK3F,cAAcyF,aAAa;MAClC,OAAO;MAGP;AACA,WAAK3F,oBAAoB2F,aAAa;AACtC,WAAKrP,4BAA4BqP,aAAa;AAE9C,WAAKlY,UAAUmK,OAAO+N,aAAa;AACnC,aAAO,KAAKlY;IACd;EACF;AAEA,MAAMjD,yBAAN,cAAqC6B,kBAAkB;IACrDC,YAAYnD,YAAY;AACtB,YAAM;QAAEE;QAAMmP,UAAAA;QAAUlL;MAAO,IAAInE;AACnC,YAAM2e,oBAAoB,CAAC,CAACxa,OAAOya;AACnC,YAAM5e,YAAY;QAChBoD,cAAc,CAACub,qBAAqBzb,kBAAkBuB,cAAcvE,IAAI;MAC1E,CAAC;AACD,WAAKmP,WAAWA;AAChB,UAAIsP,qBAAqBzb,kBAAkBuB,cAAcvE,IAAI,GAAG;AAC9D,cAAMgH,QAAS,KAAKA,QAAQ,KAAK,aAAa;AAC9C,mBAAWkG,WAAWiC,WAAU;AAC9BjC,kBAAQlG,QAAQA;QAClB;MACF,OAAO;AACL,aAAKA,QAAQ;MACf;IACF;IAEA,eAAe;AACb,aAAO,IAAI2X,aAAa;QACtBva,WAAW,KAAKA;QAChB2G,OAAO,KAAK/K,KAAK+K;QACjBkE,UAAU,KAAKjP,KAAKiP;QACpBxH,kBAAkB,KAAKzH,KAAKyH,oBAAoB,KAAKzH,KAAK4e;QAC1Dpa,aAAa,KAAKxE,KAAKwE;QACvBC,UAAU,KAAKzE,KAAKyE;QACpBiB,MAAM,KAAK1F,KAAK0F;QAChBwJ,YAAY,KAAKlP,KAAKkP,cAAc;QACpCjL,QAAQ,KAAKA;QACbkL,UAAU,KAAKA;QACf0P,MAAM,KAAK7e,KAAK6e;QAChBC,gBAAgB,KAAK7a,OAAOya;MAC9B,CAAC;IACH;IAEArP,SAAS;AACP,YAAM;QAAEjL;MAAU,IAAI;AACtBA,gBAAU+E,UAAUC,IAAI,iBAAiB;AACzChF,gBAAUiK,OAAO;AAEjB,YAAMrH,QAAS,KAAKA,QAAQ,KAAK,aAAa;AAE9C,YAAM+X,aAAa,CAAA;AACnB,iBAAW7R,WAAW,KAAKiC,UAAU;AACnCjC,gBAAQlG,QAAQA;AAChBkG,gBAAQ9I,UAAU4a,eAAe;AACjCD,mBAAWnQ,KAAK1B,QAAQlN,KAAKkF,EAAE;AAC/BgI,gBAAQqD,iBAAiB;MAC3B;AAEA,WAAKnM,UAAUyE,aACb,iBACAkW,WAAWpR,IAAIzI,QAAM,GAAG+Z,gBAAgB,GAAG/Z,EAAE,EAAE,EAAE4J,KAAK,GAAG,CAC3D;AAEA,aAAO,KAAK1K;IACd;EACF;AAEA,MAAMua,eAAN,MAAmB;IACjB,kBAAkB;IAElB,gBAAgB,KAAK,SAASO,KAAK,IAAI;IAEvC,aAAa,KAAK,MAAMA,KAAK,IAAI;IAEjC,aAAa,KAAK,MAAMA,KAAK,IAAI;IAEjC,eAAe,KAAK,QAAQA,KAAK,IAAI;IAErC,SAAS;IAET,aAAa;IAEb,eAAe;IAEf,WAAW;IAEX,YAAY;IAEZ,UAAU;IAEV,cAAc;IAEd,UAAU;IAEV,SAAS;IAET,wBAAwB;IAExB,YAAY;IAEZ,iBAAiB;IAEjB,yBAAyB;IAEzB,iBAAiB;IAEjB,QAAQ;IAER,YAAY;IAEZ,YAAY;IAEZ,WAAW;IAEX,cAAc;IAEd,gBAAgB;IAEhB,eAAe;IAEfjc,YAAY;MACVmB;MACA2G,OAAAA;MACAoE,UAAAA;MACAF;MACAxH;MACAjD;MACAC;MACAR;MACAyB;MACAwJ;MACA2P;MACAC,iBAAiB;IACnB,GAAG;AACD,WAAK,aAAa1a;AAClB,WAAK,YAAY6K;AACjB,WAAK,eAAezK;AACpB,WAAK,YAAYC;AACjB,WAAK,UAAUR;AACf,WAAK,SAAS8G;AACd,WAAK,QAAQrF;AACb,WAAK,cAAcwJ;AACnB,WAAK,YAAYC;AACjB,WAAK,kBAAkB2P;AACvB,WAAK,gBAAgB3P,UAAS,CAAC;AAK/B,WAAK,WAAWgQ,cAAcC,aAAa3X,gBAAgB;AAG3D,WAAK4X,UAAUlQ,UAASmQ,QAAQC,CAAAA,OAAKA,GAAEjP,0BAA0B,CAAC;AAElE,UAAI,CAACwO,gBAAgB;AACnB,aAAK,mBAAmB;AAExB,aAAK,WAAWvT,SAAS;AACzB,YAAIsT,MAAM;AACR,eAAK,QAAQ;QACf;MAWF;IACF;IAEA,qBAAqB;AACnB,UAAI,KAAK,uBAAuB;AAC9B;MACF;AACA,WAAK,wBAAwB,IAAIW,gBAAgB;AACjD,YAAM;QAAEC;MAAO,IAAI,KAAK;AAGxB,iBAAWvS,WAAW,KAAKmS,SAAS;AAClCnS,gBAAQ6D,iBAAiB,SAAS,KAAK,cAAc;UAAE0O;QAAO,CAAC;AAC/DvS,gBAAQ6D,iBAAiB,gBAAgB,KAAK,YAAY;UAAE0O;QAAO,CAAC;AACpEvS,gBAAQ6D,iBAAiB,gBAAgB,KAAK,YAAY;UAAE0O;QAAO,CAAC;AACpEvS,gBAAQ/D,UAAUC,IAAI,kBAAkB;MAC1C;AAGA,iBAAW8D,WAAW,KAAK,WAAW;AACpCA,gBAAQ9I,WAAW2M,iBAAiB,WAAW,KAAK,eAAe;UACjE0O;QACF,CAAC;MACH;IACF;IAEA,4BAA4B;AAC1B,YAAMvS,UAAU,KAAK,UAAUwS,KAAKH,CAAAA,OAAKA,GAAEna,gBAAgB;AAC3D,UAAI,CAAC8H,SAAS;AACZ;MACF;AACA,WAAK,yBAAyBA,QAAQ9G,gBACpC8G,QAAQ5H,qBACV;IACF;IAEAqa,sBAAsB;AACpB,UAAI,KAAK,gBAAgB;AACvB,YAAI,CAAC,KAAK,eAAeC,YAAY;AACnC,eAAK,cAAcxb,UAAUyb,MAAM,KAAK,cAAc;QACxD;AACA;MACF;AAEA,UAAI,CAAC,KAAK,wBAAwB;AAChC,aAAK,0BAA0B;MACjC;AAEA,UAAI,CAAC,KAAK,wBAAwB;AAChC;MACF;AAEA,YAAM;QAAEJ;MAAO,IAAK,KAAK,wBAAwB,IAAID,gBAAgB;AACrE,YAAMM,eAAe,KAAK,cAAc5b;AACxC,YAAM6b,cAAcA,MAAM;AACxB,aAAK,gBAAgBC,mBACnB,MACmB,MACAnG,QACA,CAACiG,YACtB;MACF;AACA,YAAMG,YAAYA,MAAM;AACtB,aAAK,gBAAgBD,mBACnB,MACmB,OACA,MACA,CAACF,YACtB;MACF;AACA,YAAMI,YAAYA,MAAM;AACtB,aAAK,gBAAgBF,mBACnB,MACmB,OACA,KACrB;MACF;AAEA,UAAI,CAACF,cAAc;AACjB,cAAMK,SAAU,KAAK,iBAAiBxX,SAASC,cAAc,QAAQ;AACrEuX,eAAO9O,YAAY;AACnB,cAAM+O,kBAAkB,KAAK,cAAchc;AAC3C+b,eAAOjY,MAAMa,SAASqX,gBAAgBlY,MAAMa,SAAS;AACrDoX,eAAOrX,WAAW;AAClBqX,eAAOnB,eAAe;AACtBmB,eAAOE,eAAe;AACtBF,eAAOtX,aAAa,gBAAgB,2BAA2B;AAC/D,aAAK,aAAa;AAClB,aAAK,6BAA6B;AAClCsX,eAAOpP,iBAAiB,WAAW,KAAK,eAAe;UAAE0O;QAAO,CAAC;AACjEU,eAAOpP,iBAAiB,SAASgP,aAAa;UAAEN;QAAO,CAAC;AACxDU,eAAOpP,iBAAiB,gBAAgBkP,WAAW;UAAER;QAAO,CAAC;AAC7DU,eAAOpP,iBAAiB,gBAAgBmP,WAAW;UAAET;QAAO,CAAC;AAC7DW,wBAAgBP,MAAMM,MAAM;MAC9B,OAAO;AACL,aAAK,iBAAiB,KAAK,cAAc/b;AACzC,mBAAW8I,WAAW,KAAKmS,SAAS;AAClCnS,kBAAQ8R,eAAe;AACvB9R,kBAAQmT,eAAe;AACvBnT,kBAAQ6D,iBAAiB,WAAW,KAAK,eAAe;YAAE0O;UAAO,CAAC;AAClEvS,kBAAQ6D,iBAAiB,SAASgP,aAAa;YAAEN;UAAO,CAAC;AACzDvS,kBAAQ6D,iBAAiB,gBAAgBkP,WAAW;YAAER;UAAO,CAAC;AAC9DvS,kBAAQ6D,iBAAiB,gBAAgBmP,WAAW;YAAET;UAAO,CAAC;AAC9DvS,kBAAQ/D,UAAUC,IAAI,kBAAkB;QAC1C;MACF;IACF;IAEA,+BAA+B;AAC7B,UAAI,KAAK,cAAcgG,qBAAqB,CAAC,KAAK,cAAcpK,QAAQ;AAGtE;MACF;AACA,UAAI,CAAC,KAAK,gBAAgB;AACxB,aAAK2a,oBAAoB;MAC3B;AACA,YAAM,CAAC/R,IAAGa,EAAC,IAAI,KAAK;AACpB,YAAM;QAAEvG;MAAM,IAAI,KAAK;AACvBA,YAAMI,OAAO,QAAQsF,EAAC;AACtB1F,YAAMK,MAAM,QAAQkG,EAAC;IACvB;IAEA,eAAe;AACb,UAAI,KAAK,cAAcW,mBAAmB;AACxC;MACF;AACA,UAAI,CAAC,KAAK,gBAAgB;AACxB,aAAKuQ,oBAAoB;MAC3B;AACA,WAAK,eAAezX,MAAM0O,kBAAkB,KAAK0J,sBAAsB;IACzE;IAEA,IAAIA,qBAAqB;AACvB,YAAM;QAAEvV,OAAAA;QAAOwV;MAAQ,IAAI,KAAK,cAAcxb;AAC9C,UAAI,CAACgG,QAAO;AACV,eAAO;MACT;AACA,aAAO,KAAK,QAAQ2T,gBAAgB8B,iBAAiBzV,QAAOwV,OAAO;IACrE;IAEAE,qBAAqB;AACnB5U,iBAAW,MAAM;AACf,aAAK,gBAAgBD,MAAM;MAC7B,GAAG,CAAC;IACN;IAEAzG,UAAU;AACR,YAAM;QAAEV;QAAUsG,OAAAA;QAAOwV;QAAS3B;QAAcnX;MAAiB,IAC/D,KAAK,cAAc1C;AACrB,aAAO;QACLP,aAAa;UAAEE,KAAK,KAAK8M;QAAQ;QACjC/M;QACAsG,OAAAA;QACAwV;QACA3B;QACAnX;MACF;IACF;IAEA,IAAIiZ,qBAAqB;AACvB,aAAO,KAAK;IACd;IAEA,IAAIlP,UAAU;AACZ,WAAK,iBAAiB,KAAK,cAAc1M;AACzC,aAAO,KAAK;IACd;IAEA,IAAI0M,QAAQtK,MAAM;AAChB,UAAIA,SAAS,KAAKsK,SAAS;AACzB;MACF;AACA,WAAK,cAAc1M,cAAc,KAAK,eAAeoC;IACvD;IAEA0E,QAAQ;AACN,WAAK,cAAcxH,WAAWwH,MAAM;IACtC;IAEA,IAAI+U,2BAA2B;AAC7B,aAAO,KAAK,cAActd,MAAMud,sBAAsB;IACxD;IAEAC,uBAAuB;MAAEhE;MAAUiE;IAAS,GAAG;AAC7C,UAAI,CAAC,KAAK,gBAAgB;AACxB;MACF;AACA,WAAK,eAAe3X,UAAU4X,OAAO,YAAYlE,QAAQ;AACzD,WAAK,eAAemE,eAAeF;IACrC;IAEAG,yBAAyBpE,UAAU;AACjC,WAAK,eAAe1T,UAAU4X,OAAO,YAAYlE,QAAQ;IAC3D;IAEA,IAAIqE,uBAAuB;AACzB,UAAI,KAAK,gBAAgB;AACvB,eAAO,KAAK;MACd;AACA,YAAM;QAAEtT,GAAAA;QAAGa,GAAAA;QAAGhG;MAAO,IAAI,KAAK,eAAemY,sBAAsB;AACnE,YAAM;QACJhT,GAAGuT;QACH1S,GAAG2S;QACH5Y,OAAO6Y;QACP5Y,QAAQ6Y;MACV,IAAI,KAAK,cAAcje,MAAMud,sBAAsB;AACnD,aAAO,EAAEhT,KAAIuT,WAAWE,cAAc5S,KAAIhG,SAAS2Y,WAAWE,YAAY;IAC5E;IAEA,IAAIJ,qBAAqBK,KAAK;AAC5B,WAAK,iBAAiBA;IACxB;IAEAC,0BAA0B;AACxB,aAAO,KAAK,mBAAmB;IACjC;IAEA,IAAIlc,wBAAwB;AAC1B,aAAO,KAAK;IACd;IAEA,IAAImc,qBAAqB;AACvB,aACE,KAAK,eAAeb,sBAAsB,EAAEpY,QAC5C,KAAKmY,yBAAyBnY;IAElC;IAEAkZ,YAAYhQ,SAAS;AACnB,YAAM,CAACiQ,MAAMC,IAAI,IACf,KAAK,kBAAkB,KAAKtc,sBAAsBqI,IAAIC,CAAAA,OAAKA,KAAI,GAAG;AACpE,YAAMiU,mBAAmB,KAAKlB;AAC9B,YAAM;QACJ/S,GAAGuT;QACH1S,GAAG2S;QACH5Y,OAAO6Y;QACP5Y,QAAQ6Y;MACV,IAAIO;AACJ,WAAK,gBAAgBC,WACnB,MACA,MACAX,UAAUQ,OAAON,aACjBD,UAAUQ,OAAON,cACjB;QAAE,GAAG5P;QAASmQ;MAAiB,CACjC;IACF;IAEAxS,SAAS;AACP,UAAI,KAAK,QAAQ;AACf;MACF;AAEA,YAAMrI,QAAS,KAAK,SAAS2B,SAASC,cAAc,KAAK;AACzD5B,YAAMqK,YAAY;AAElB,UAAI,KAAK,QAAQ;AACf,cAAM0Q,YAAa/a,MAAMkB,MAAM8Z,eAAe1X,KAAKC,aACjD,GAAG,KAAK,MACV;AACAvD,cAAMkB,MAAM0O,kBAAkB,sBAAsBmL,SAAS;MAC/D;AAEA,YAAME,SAAStZ,SAASC,cAAc,MAAM;AAC5CqZ,aAAO5Q,YAAY;AACnB,UAAI,KAAK,WAAW3M,KAAK;AACvB,cAAMuE,SAAQN,SAASC,cAAc,MAAM;AAC3CK,QAAAA,OAAMoI,YAAY;AAClB4Q,eAAO1T,OAAOtF,MAAK;AACnB,SAAC;UAAEiZ,KAAKjZ,OAAMiZ;UAAKxd,KAAKuE,OAAMsP;QAAY,IAAI,KAAK;MACrD;AACAvR,YAAMuH,OAAO0T,MAAM;AAEnB,UAAI,KAAK,UAAU;AACjB,cAAMxa,mBAAmBkB,SAASC,cAAc,MAAM;AACtDnB,yBAAiB4J,YAAY;AAC7B5J,yBAAiBoB,aACf,gBACA,mCACF;AACApB,yBAAiBoB,aACf,kBACAmM,KAAKC,UAAU;UAAEkN,SAAS,KAAK,SAAShH,QAAQ;QAAE,CAAC,CACrD;AACA1T,yBAAiB2a,WAAW,KAAK,SAAS7H,YAAY;AACtD0H,eAAO1T,OAAO9G,gBAAgB;MAChC;AAEA4a,qBACE;QACEC,MAAM,KAAK,SAAS,KAAK,aAAa5d;QACtCwd,KAAK,KAAK,cAAcA;QACxB7Q,WAAW;MACb,GACArK,KACF;AAEA,WAAK,WAAWuH,OAAOvH,KAAK;IAC9B;IAEA,IAAI,QAAQ;AACV,YAAMvC,WAAW,KAAK;AACtB,YAAMD,cAAc,KAAK;AACzB,UACEC,UAAUC,QACT,CAACF,aAAaE,OAAOF,YAAYE,QAAQD,SAASC,MACnD;AACA,eAAO,KAAK,UAAU4d,QAAQ;MAChC;AACA,aAAO;IACT;IAEA,IAAI,YAAY;AACd,aAAO,KAAK,OAAOC,YAAYra,OAAO+O,YAAY;IACpD;IAEA,IAAI,aAAa;AACf,aAAO,KAAK,OAAOsL,YAAYra,OAAO6C,SAAS;IACjD;IAEA,kBAAkB7D,MAAM;AACtB,YAAMsb,aAAa,CAAA;AACnB,YAAMC,eAAe;QACnB/d,KAAKwC;QACLob,MAAM;UACJzV,MAAM;UACN0V,YAAY;YACVL,KAAK;UACP;UACAhE,UAAU,CACR;YACErR,MAAM;YACNqR,UAAUsE;UACZ,CAAC;QAEL;MACF;AACA,YAAME,iBAAiB;QACrBxa,OAAO;UACL6C,OAAO,KAAK;UACZkM,UAAU,KAAK,YACX,QAAQ,KAAK,SAAS,oCACtB;QACN;MACF;AACA,iBAAW0L,QAAQzb,KAAKsT,MAAM,IAAI,GAAG;AACnCgI,mBAAW5T,KAAK;UACd/B,MAAM;UACN2H,OAAOmO;UACPJ,YAAYG;QACd,CAAC;MACH;AACA,aAAOD;IACT;IAEA,SAAS3X,QAAO;AACd,UAAIA,OAAM8X,UAAU9X,OAAMoL,YAAYpL,OAAM4K,WAAW5K,OAAM2K,SAAS;AACpE;MACF;AAEA,UAAI3K,OAAMsN,QAAQ,WAAYtN,OAAMsN,QAAQ,YAAY,KAAK,SAAU;AACrE,aAAK,QAAQ;MACf;IACF;IAEAxQ,aAAa;MAAElC;MAAMsB;MAAOG;IAAQ,GAAG;AACrC,UAAI,KAAK,iBAAiB;AACxB,YAAIA,SAAS;AACX,eAAKQ,OAAO;AACZ,eAAK,eAAe;QACtB,WAAWX,OAAO;AAChB,cAAIA,MAAMG,SAAS;AACjB,iBAAKQ,OAAO;UACd,OAAO;AACL,iBAAK,aAAa;AAClB,iBAAK,eAAeX,MAAME;UAC5B;QACF;AACA,YAAIxB,MAAM;AACR,eAAK,yBAAyB;AAC9B,eAAK,0BAA0B;AAC/B,eAAK,6BAA6B;QACpC;AACA;MACF;AACA,UAAIyB,WAAWH,OAAOG,SAAS;AAC7B,aAAKQ,OAAO;AACZ;MACF;AACA,WAAK,mBAAmB;AACxB,WAAK,aAAa;QAChBnD,aAAa,KAAK;QAClBC,UAAU,KAAK;MACjB;AACA,UAAIiB,MAAM;AACR,aAAK,YAAY;MACnB;AACA,UAAIsB,SAASA,MAAME,MAAM;AACvB,aAAK,YAAY,KAAK,kBAAkBF,MAAME,IAAI;AAClD,aAAK,WAAWiY,cAAcC,aAAapY,MAAMgI,IAAI;AACrD,aAAK,eAAe;MACtB;AACA,WAAK,QAAQrH,OAAO;AACpB,WAAK,SAAS;IAChB;IAEAM,cAAc;AACZ,UAAI,CAAC,KAAK,UAAU;AAClB;MACF;AACA,OAAC;QAAEzD,aAAa,KAAK;QAAcC,UAAU,KAAK;MAAU,IAC1D,KAAK;AACP,WAAK,WAAW;AAChB,WAAK,QAAQkD,OAAO;AACpB,WAAK,SAAS;AACd,WAAK,YAAY;IACnB;IAEAA,SAAS;AACP,WAAK,uBAAuBkb,MAAM;AAClC,WAAK,wBAAwB;AAC7B,WAAK,QAAQlb,OAAO;AACpB,WAAK,SAAS;AACd,WAAK,cAAc;AACnB,WAAK,UAAU;AACf,WAAK,gBAAgBA,OAAO;AAC5B,WAAK,iBAAiB;AACtB,UAAI,KAAK0X,SAAS;AAChB,mBAAWnS,WAAW,KAAKmS,SAAS;AAClCnS,kBAAQ/D,UAAUxB,OAAO,kBAAkB;QAC7C;MACF;IACF;IAEA,eAAe;AACb,UAAI,KAAK,cAAc,MAAM;AAC3B;MACF;AACA,YAAM;QACJrB,MAAM;UAAEC;QAAK;QACbC,UAAU;UACRC,SAAS;YAAEC;YAAWC;YAAYC;YAAOC;UAAM;QACjD;MACF,IAAI,KAAK;AAET,UAAIic,gBAAgB,CAAC,CAAC,KAAK;AAC3B,UAAIpd,OAAOod,gBAAgB,KAAK,cAAc,KAAK;AACnD,iBAAW5V,WAAW,KAAK,WAAW;AACpC,YAAI,CAACxH,QAAQ4E,KAAKyY,UAAU7V,QAAQlN,KAAK0F,MAAMA,IAAI,MAAM,MAAM;AAC7DA,iBAAOwH,QAAQlN,KAAK0F;AACpBod,0BAAgB;AAChB;QACF;MACF;AAEA,YAAME,iBAAiB1Y,KAAKE,cAAc,CACxC9E,KAAK,CAAC,GACNa,KAAK,CAAC,IAAIb,KAAK,CAAC,IAAIa,KAAK,CAAC,GAC1Bb,KAAK,CAAC,GACNa,KAAK,CAAC,IAAIb,KAAK,CAAC,IAAIa,KAAK,CAAC,CAAC,CAC5B;AAED,YAAM0c,oCAAoC;AAC1C,YAAM5B,cAAcyB,gBAChBpd,KAAK,CAAC,IAAIA,KAAK,CAAC,IAAIud,oCACpB;AACJ,YAAMC,YAAYF,eAAe,CAAC,IAAI3B;AACtC,YAAM8B,WAAWH,eAAe,CAAC;AACjC,WAAK,YAAY,CACd,OAAOE,YAAYtc,SAAUF,WAC7B,OAAOyc,WAAWtc,SAAUF,UAAU;AAGzC,YAAM;QAAEuB;MAAM,IAAI,KAAK;AACvBA,YAAMI,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC;AACjCJ,YAAMK,MAAM,GAAG,KAAK,UAAU,CAAC,CAAC;IAClC;IAKA,UAAU;AACR,UAAI,KAAK,iBAAiB;AACxB,aAAK,gBAAgByX,mBAAmB,MAAyB,KAAK;AACtE;MACF;AAEA,WAAK,UAAU,CAAC,KAAK;AACrB,UAAI,KAAK,SAAS;AAChB,aAAK,MAAM;AACX,aAAK,WAAWjP,iBAAiB,SAAS,KAAK,YAAY;AAC3D,aAAK,WAAWA,iBAAiB,WAAW,KAAK,aAAa;MAChE,OAAO;AACL,aAAK,MAAM;AACX,aAAK,WAAWoM,oBAAoB,SAAS,KAAK,YAAY;AAC9D,aAAK,WAAWA,oBAAoB,WAAW,KAAK,aAAa;MACnE;IACF;IAKA,QAAQ;AACN,UAAI,CAAC,KAAK,QAAQ;AAChB,aAAK9N,OAAO;MACd;AACA,UAAI,CAAC,KAAK+T,WAAW;AACnB,aAAK,aAAa;AAClB,aAAK,WAAW7X,SAAS;AACzB,aAAK,WAAWrD,MAAMa,SACpBmS,SAAS,KAAK,WAAWhT,MAAMa,MAAM,IAAI;MAC7C,WAAW,KAAK,SAAS;AACvB,aAAK,WAAWI,UAAUC,IAAI,SAAS;MACzC;IACF;IAKA,QAAQ;AACN,WAAK,WAAWD,UAAUxB,OAAO,SAAS;AAC1C,UAAI,KAAK,WAAW,CAAC,KAAKyb,WAAW;AACnC;MACF;AACA,WAAK,WAAW7X,SAAS;AACzB,WAAK,WAAWrD,MAAMa,SACpBmS,SAAS,KAAK,WAAWhT,MAAMa,MAAM,IAAI;IAC7C;IAEAsH,YAAY;AACV,WAAK,cAAc,KAAK+S;AACxB,UAAI,CAAC,KAAK,aAAa;AACrB;MACF;AACA,WAAK,WAAW7X,SAAS;IAC3B;IAEA4E,YAAY;AACV,UAAI,KAAK,iBAAiB;AACxB;MACF;AACA,WAAK,mBAAmB;AACxB,UAAI,CAAC,KAAK,aAAa;AACrB;MACF;AACA,UAAI,CAAC,KAAK,QAAQ;AAChB,aAAK,MAAM;MACb;AACA,WAAK,cAAc;AACnB,WAAK,WAAW5E,SAAS;IAC3B;IAEA,IAAI6X,YAAY;AACd,UAAI,KAAK,iBAAiB;AACxB,eAAO;MACT;AACA,aAAO,KAAK,WAAW7X,WAAW;IACpC;EACF;AAEA,MAAMlK,4BAAN,cAAwC2B,kBAAkB;IACxDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;AAC5D,WAAKoV,cAAczY,WAAWE,KAAKuY;AACnC,WAAK8K,eAAevjB,WAAWE,KAAKqjB;AACpC,WAAKzS,uBAAuB0S,qBAAqBliB;IACnD;IAEAiO,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,oBAAoB;AAEjD,UAAI,KAAKmP,aAAa;AACpB,cAAMlF,UAAW,KAAKlP,iBAAiBwE,SAASC,cAAc,KAAK;AACnEyK,gBAAQlK,UAAUC,IAAI,uBAAuB;AAC7CiK,gBAAQxK,aAAa,QAAQ,SAAS;AACtC,mBAAW8Z,QAAQ,KAAKpK,aAAa;AACnC,gBAAMgL,WAAW5a,SAASC,cAAc,MAAM;AAC9C2a,mBAAShL,cAAcoK;AACvBtP,kBAAQ9E,OAAOgV,QAAQ;QACzB;AACA,aAAKnf,UAAUmK,OAAO8E,OAAO;MAC/B;AAEA,UAAI,CAAC,KAAKrT,KAAKwH,YAAY,KAAK3C,cAAc;AAC5C,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,WAAK2I,mBAAmB;AAExB,aAAO,KAAKvM;IACd;EACF;AAEA,MAAM7C,wBAAN,cAAoCyB,kBAAkB;IACpD,QAAQ;IAERC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;IAC9D;IAEAkM,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,gBAAgB;AAK7C,YAAM;QAAEpJ;QAAMwI;QAAOC;MAAO,IAAI;AAChC,YAAM2F,MAAM,KAAK1K,WAAW7D,OAC1B2I,OACAC,QACuB,IACzB;AAIA,YAAMka,OAAQ,KAAK,QAAQ,KAAKjf,WAAWkF,cAAc,UAAU;AACnE+Z,WAAK9Z,aAAa,MAAM7I,KAAK0F,KAAK,CAAC,IAAI1F,KAAKwjB,gBAAgB,CAAC,CAAC;AAC9Db,WAAK9Z,aAAa,MAAM7I,KAAK0F,KAAK,CAAC,IAAI1F,KAAKwjB,gBAAgB,CAAC,CAAC;AAC9Db,WAAK9Z,aAAa,MAAM7I,KAAK0F,KAAK,CAAC,IAAI1F,KAAKwjB,gBAAgB,CAAC,CAAC;AAC9Db,WAAK9Z,aAAa,MAAM7I,KAAK0F,KAAK,CAAC,IAAI1F,KAAKwjB,gBAAgB,CAAC,CAAC;AAG9Db,WAAK9Z,aAAa,gBAAgB7I,KAAKsJ,YAAYd,SAAS,CAAC;AAC7Dma,WAAK9Z,aAAa,UAAU,aAAa;AACzC8Z,WAAK9Z,aAAa,QAAQ,aAAa;AAEvCuF,UAAIG,OAAOoU,IAAI;AACf,WAAKve,UAAUmK,OAAOH,GAAG;AAIzB,UAAI,CAACpO,KAAKwH,YAAY,KAAK3C,cAAc;AACvC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,aAAO,KAAK5D;IACd;IAEAkM,4BAA4B;AAC1B,aAAO,KAAK;IACd;IAEAC,mBAAmB;AACjB,WAAKnM,UAAU+E,UAAUC,IAAI,eAAe;IAC9C;EACF;AAEA,MAAM3H,0BAAN,cAAsCuB,kBAAkB;IACtD,UAAU;IAEVC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;IAC9D;IAEAkM,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,kBAAkB;AAK/C,YAAM;QAAEpJ;QAAMwI;QAAOC;MAAO,IAAI;AAChC,YAAM2F,MAAM,KAAK1K,WAAW7D,OAC1B2I,OACAC,QACuB,IACzB;AAKA,YAAMc,cAAcvJ,KAAKsJ,YAAYd;AACrC,YAAMib,SAAU,KAAK,UAAU,KAAK/f,WAAWkF,cAAc,UAAU;AACvE6a,aAAO5a,aAAa,KAAKU,cAAc,CAAC;AACxCka,aAAO5a,aAAa,KAAKU,cAAc,CAAC;AACxCka,aAAO5a,aAAa,SAASL,QAAQe,WAAW;AAChDka,aAAO5a,aAAa,UAAUJ,SAASc,WAAW;AAGlDka,aAAO5a,aAAa,gBAAgBU,eAAe,CAAC;AACpDka,aAAO5a,aAAa,UAAU,aAAa;AAC3C4a,aAAO5a,aAAa,QAAQ,aAAa;AAEzCuF,UAAIG,OAAOkV,MAAM;AACjB,WAAKrf,UAAUmK,OAAOH,GAAG;AAIzB,UAAI,CAACpO,KAAKwH,YAAY,KAAK3C,cAAc;AACvC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,aAAO,KAAK5D;IACd;IAEAkM,4BAA4B;AAC1B,aAAO,KAAK;IACd;IAEAC,mBAAmB;AACjB,WAAKnM,UAAU+E,UAAUC,IAAI,eAAe;IAC9C;EACF;AAEA,MAAMzH,0BAAN,cAAsCqB,kBAAkB;IACtD,UAAU;IAEVC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;IAC9D;IAEAkM,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,kBAAkB;AAK/C,YAAM;QAAEpJ;QAAMwI;QAAOC;MAAO,IAAI;AAChC,YAAM2F,MAAM,KAAK1K,WAAW7D,OAC1B2I,OACAC,QACuB,IACzB;AAKA,YAAMc,cAAcvJ,KAAKsJ,YAAYd;AACrC,YAAMkb,SAAU,KAAK,UACnB,KAAKhgB,WAAWkF,cAAc,aAAa;AAC7C8a,aAAO7a,aAAa,MAAML,QAAQ,CAAC;AACnCkb,aAAO7a,aAAa,MAAMJ,SAAS,CAAC;AACpCib,aAAO7a,aAAa,MAAML,QAAQ,IAAIe,cAAc,CAAC;AACrDma,aAAO7a,aAAa,MAAMJ,SAAS,IAAIc,cAAc,CAAC;AAGtDma,aAAO7a,aAAa,gBAAgBU,eAAe,CAAC;AACpDma,aAAO7a,aAAa,UAAU,aAAa;AAC3C6a,aAAO7a,aAAa,QAAQ,aAAa;AAEzCuF,UAAIG,OAAOmV,MAAM;AACjB,WAAKtf,UAAUmK,OAAOH,GAAG;AAIzB,UAAI,CAACpO,KAAKwH,YAAY,KAAK3C,cAAc;AACvC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,aAAO,KAAK5D;IACd;IAEAkM,4BAA4B;AAC1B,aAAO,KAAK;IACd;IAEAC,mBAAmB;AACjB,WAAKnM,UAAU+E,UAAUC,IAAI,eAAe;IAC9C;EACF;AAEA,MAAMvH,4BAAN,cAAwCmB,kBAAkB;IACxD,YAAY;IAEZC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;AAE5D,WAAKwgB,qBAAqB;AAC1B,WAAKC,iBAAiB;IACxB;IAEAvU,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,KAAKua,kBAAkB;AAKpD,YAAM;QACJ3jB,MAAM;UAAE0F;UAAMme;UAAUva;UAAa9B;QAAS;QAC9CgB;QACAC;MACF,IAAI;AACJ,UAAI,CAACob,UAAU;AACb,eAAO,KAAKzf;MACd;AACA,YAAMgK,MAAM,KAAK1K,WAAW7D,OAC1B2I,OACAC,QACuB,IACzB;AAMA,UAAIqb,SAAS,CAAA;AACb,eAAShe,KAAI,GAAGI,KAAK2d,SAAShe,QAAQC,KAAII,IAAIJ,MAAK,GAAG;AACpD,cAAM8H,KAAIiW,SAAS/d,EAAC,IAAIJ,KAAK,CAAC;AAC9B,cAAM+I,KAAI/I,KAAK,CAAC,IAAIme,SAAS/d,KAAI,CAAC;AAClCge,eAAOlV,KAAK,GAAGhB,EAAC,IAAIa,EAAC,EAAE;MACzB;AACAqV,eAASA,OAAOhV,KAAK,GAAG;AAExB,YAAMiV,WAAY,KAAK,YAAY,KAAKrgB,WAAWkF,cACjD,KAAKgb,cACP;AACAG,eAASlb,aAAa,UAAUib,MAAM;AAGtCC,eAASlb,aAAa,gBAAgBS,YAAYd,SAAS,CAAC;AAC5Dub,eAASlb,aAAa,UAAU,aAAa;AAC7Ckb,eAASlb,aAAa,QAAQ,aAAa;AAE3CuF,UAAIG,OAAOwV,QAAQ;AACnB,WAAK3f,UAAUmK,OAAOH,GAAG;AAIzB,UAAI,CAAC5G,YAAY,KAAK3C,cAAc;AAClC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,aAAO,KAAK5D;IACd;IAEAkM,4BAA4B;AAC1B,aAAO,KAAK;IACd;IAEAC,mBAAmB;AACjB,WAAKnM,UAAU+E,UAAUC,IAAI,eAAe;IAC9C;EACF;AAEA,MAAMjH,2BAAN,cAAuCN,0BAA0B;IAC/DoB,YAAYnD,YAAY;AAEtB,YAAMA,UAAU;AAEhB,WAAK6jB,qBAAqB;AAC1B,WAAKC,iBAAiB;IACxB;EACF;AAEA,MAAM7hB,yBAAN,cAAqCiB,kBAAkB;IACrDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;IAC9D;IAEAkM,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,iBAAiB;AAE9C,UAAI,CAAC,KAAKpJ,KAAKwH,YAAY,KAAK3C,cAAc;AAC5C,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AACA,aAAO,KAAK5D;IACd;EACF;AAEA,MAAMnC,uBAAN,cAAmCe,kBAAkB;IACnD,yBAAyB;IAEzB,aAAa,CAAA;IAEbC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;AAE5D,WAAKwgB,qBAAqB;AAI1B,WAAKC,iBAAiB;AAEtB,WAAKhT,uBACH,KAAK5Q,KAAKgkB,OAAO,iBACbV,qBAAqBlhB,YACrBkhB,qBAAqBthB;IAC7B;IAEA,cAAcoG,UAAU1C,MAAM;AAI5B,cAAQ0C,UAAQ;QACd,KAAK;AACH,iBAAO;YACL6b,WAAW,wBAAwB,CAACve,KAAK,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC;YACtD8C,OAAO9C,KAAK,CAAC,IAAIA,KAAK,CAAC;YACvB+C,QAAQ/C,KAAK,CAAC,IAAIA,KAAK,CAAC;UAC1B;QACF,KAAK;AACH,iBAAO;YACLue,WAAW,yBAAyB,CAACve,KAAK,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC;YACvD8C,OAAO9C,KAAK,CAAC,IAAIA,KAAK,CAAC;YACvB+C,QAAQ/C,KAAK,CAAC,IAAIA,KAAK,CAAC;UAC1B;QACF,KAAK;AACH,iBAAO;YACLue,WAAW,yBAAyB,CAACve,KAAK,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC;YACvD8C,OAAO9C,KAAK,CAAC,IAAIA,KAAK,CAAC;YACvB+C,QAAQ/C,KAAK,CAAC,IAAIA,KAAK,CAAC;UAC1B;QACF;AACE,iBAAO;YACLue,WAAW,aAAa,CAACve,KAAK,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC;YAC3C8C,OAAO9C,KAAK,CAAC,IAAIA,KAAK,CAAC;YACvB+C,QAAQ/C,KAAK,CAAC,IAAIA,KAAK,CAAC;UAC1B;MACJ;IACF;IAEA2J,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,KAAKua,kBAAkB;AAIpD,YAAM;QACJ3jB,MAAM;UAAE0F;UAAM0C;UAAU3C;UAAU6D;UAAa9B;QAAS;MAC1D,IAAI;AACJ,YAAM;QAAEyc;QAAWzb;QAAOC;MAAO,IAAI,KAAK,cAAcL,UAAU1C,IAAI;AAEtE,YAAM0I,MAAM,KAAK1K,WAAW7D,OAC1B2I,OACAC,QACuB,IACzB;AACA,YAAMyb,KAAK,KAAK,yBACd,KAAKxgB,WAAWkF,cAAc,OAAO;AACvCwF,UAAIG,OAAO2V,EAAC;AAGZA,MAAAA,GAAErb,aAAa,gBAAgBS,YAAYd,SAAS,CAAC;AACrD0b,MAAAA,GAAErb,aAAa,kBAAkB,OAAO;AACxCqb,MAAAA,GAAErb,aAAa,mBAAmB,OAAO;AACzCqb,MAAAA,GAAErb,aAAa,qBAAqB,EAAE;AACtCqb,MAAAA,GAAErb,aAAa,UAAU,aAAa;AACtCqb,MAAAA,GAAErb,aAAa,QAAQ,aAAa;AACpCqb,MAAAA,GAAErb,aAAa,aAAaob,SAAS;AAErC,eAASne,KAAI,GAAGI,KAAKT,SAASI,QAAQC,KAAII,IAAIJ,MAAK;AACjD,cAAMie,WAAW,KAAKrgB,WAAWkF,cAAc,KAAKgb,cAAc;AAClE,aAAK,WAAWhV,KAAKmV,QAAQ;AAC7BA,iBAASlb,aAAa,UAAUpD,SAASK,EAAC,EAAEgJ,KAAK,GAAG,CAAC;AACrDoV,QAAAA,GAAE3V,OAAOwV,QAAQ;MACnB;AAEA,UAAI,CAACvc,YAAY,KAAK3C,cAAc;AAClC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,WAAK5D,UAAUmK,OAAOH,GAAG;AACzB,WAAKuC,mBAAmB;AAExB,aAAO,KAAKvM;IACd;IAEAwD,aAAaC,QAAQ;AACnB,YAAMD,aAAaC,MAAM;AACzB,YAAM;QAAEsc;QAAWL;QAAQpe;MAAK,IAAImC;AACpC,YAAMqc,KAAI,KAAK;AACf,UAAIC,aAAa,GAAG;AAClBD,QAAAA,GAAErb,aAAa,gBAAgBsb,aAAa,CAAC;MAC/C;AACA,UAAIL,QAAQ;AACV,iBAAShe,KAAI,GAAGI,KAAK,KAAK,WAAWL,QAAQC,KAAII,IAAIJ,MAAK;AACxD,eAAK,WAAWA,EAAC,EAAE+C,aAAa,UAAUib,OAAOhe,EAAC,EAAEgJ,KAAK,GAAG,CAAC;QAC/D;MACF;AACA,UAAIpJ,MAAM;AACR,cAAM;UAAEue;UAAWzb;UAAOC;QAAO,IAAI,KAAK,cACxC,KAAKzI,KAAKoI,UACV1C,IACF;AACA,cAAM0e,OAAOF,GAAEG;AACfD,aAAKvb,aAAa,WAAW,OAAOL,KAAK,IAAIC,MAAM,EAAE;AACrDyb,QAAAA,GAAErb,aAAa,aAAaob,SAAS;MACvC;IACF;IAEA3T,4BAA4B;AAC1B,aAAO,KAAK;IACd;IAEAC,mBAAmB;AACjB,WAAKnM,UAAU+E,UAAUC,IAAI,eAAe;IAC9C;EACF;AAEA,MAAM/G,6BAAN,cAAyCW,kBAAkB;IACzDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAChBoD,cAAc;QACdC,cAAc;QACdC,sBAAsB;MACxB,CAAC;AACD,WAAKwN,uBAAuB0S,qBAAqBlhB;IACnD;IAEAiN,SAAS;AACP,YAAM;QACJrP,MAAM;UAAEkS;UAAc1K;QAAS;MACjC,IAAI;AACJ,UAAI,CAACA,YAAY,KAAK3C,cAAc;AAClC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,WAAK5D,UAAU+E,UAAUC,IAAI,qBAAqB;AAClD,WAAKuH,mBAAmB;AAExB,UAAIuB,cAAc;AAChB,cAAMoS,OAAO3b,SAASC,cAAc,MAAM;AAC1C0b,aAAKnb,UAAUC,IAAI,cAAc;AACjCkb,aAAK/L,cAAcrG;AACnB,aAAK9N,UAAUmK,OAAO+V,IAAI;MAC5B;AAEA,aAAO,KAAKlgB;IACd;EACF;AAEA,MAAM7B,6BAAN,cAAyCS,kBAAkB;IACzDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAChBoD,cAAc;QACdC,cAAc;QACdC,sBAAsB;MACxB,CAAC;IACH;IAEAiM,SAAS;AACP,YAAM;QACJrP,MAAM;UAAEkS;UAAc1K;QAAS;MACjC,IAAI;AACJ,UAAI,CAACA,YAAY,KAAK3C,cAAc;AAClC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,WAAK5D,UAAU+E,UAAUC,IAAI,qBAAqB;AAElD,UAAI8I,cAAc;AAChB,cAAMqS,YAAY5b,SAASC,cAAc,GAAG;AAC5C2b,kBAAUpb,UAAUC,IAAI,cAAc;AACtCmb,kBAAUhM,cAAcrG;AACxB,aAAK9N,UAAUmK,OAAOgW,SAAS;MACjC;AAEA,aAAO,KAAKngB;IACd;EACF;AAEA,MAAM3B,4BAAN,cAAwCO,kBAAkB;IACxDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAChBoD,cAAc;QACdC,cAAc;QACdC,sBAAsB;MACxB,CAAC;IACH;IAEAiM,SAAS;AACP,YAAM;QACJrP,MAAM;UAAEkS;UAAc1K;QAAS;MACjC,IAAI;AACJ,UAAI,CAACA,YAAY,KAAK3C,cAAc;AAClC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,WAAK5D,UAAU+E,UAAUC,IAAI,oBAAoB;AAEjD,UAAI8I,cAAc;AAChB,cAAMqS,YAAY5b,SAASC,cAAc,GAAG;AAC5C2b,kBAAUpb,UAAUC,IAAI,cAAc;AACtCmb,kBAAUhM,cAAcrG;AACxB,aAAK9N,UAAUmK,OAAOgW,SAAS;MACjC;AAEA,aAAO,KAAKngB;IACd;EACF;AAEA,MAAMzB,6BAAN,cAAyCK,kBAAkB;IACzDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAChBoD,cAAc;QACdC,cAAc;QACdC,sBAAsB;MACxB,CAAC;IACH;IAEAiM,SAAS;AACP,YAAM;QACJrP,MAAM;UAAEkS;UAAc1K;QAAS;MACjC,IAAI;AACJ,UAAI,CAACA,YAAY,KAAK3C,cAAc;AAClC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AAEA,WAAK5D,UAAU+E,UAAUC,IAAI,qBAAqB;AAElD,UAAI8I,cAAc;AAChB,cAAMsS,YAAY7b,SAASC,cAAc,GAAG;AAC5C4b,kBAAUrb,UAAUC,IAAI,cAAc;AACtCob,kBAAUjM,cAAcrG;AACxB,aAAK9N,UAAUmK,OAAOiW,SAAS;MACjC;AAEA,aAAO,KAAKpgB;IACd;EACF;AAEA,MAAMvB,yBAAN,cAAqCG,kBAAkB;IACrDC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;QAAMC,cAAc;MAAK,CAAC;AAC5D,WAAKyN,uBAAuB0S,qBAAqB1gB;IACnD;IAEAyM,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,iBAAiB;AAC9C,WAAKhF,UAAUyE,aAAa,QAAQ,KAAK;AAEzC,UAAI,CAAC,KAAK7I,KAAKwH,YAAY,KAAK3C,cAAc;AAC5C,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB;AACA,WAAK2I,mBAAmB;AAExB,aAAO,KAAKvM;IACd;EACF;AAEA,MAAMrB,kCAAN,cAA8CC,kBAAkB;IAC9D,WAAW;IAEXC,YAAYnD,YAAY;AACtB,YAAMA,YAAY;QAAEoD,cAAc;MAAK,CAAC;AAExC,YAAM;QAAEuhB;MAAK,IAAI,KAAKzkB;AACtB,WAAKsT,WAAWmR,KAAKnR;AACrB,WAAKD,UAAUoR,KAAKpR;AAEpB,WAAK/P,YAAY0N,UAAUC,SAAS,4BAA4B;QAC9DC,QAAQ;QACR,GAAGuT;MACL,CAAC;IACH;IAEApV,SAAS;AACP,WAAKjL,UAAU+E,UAAUC,IAAI,0BAA0B;AAEvD,YAAM;QAAEhF;QAAWpE;MAAK,IAAI;AAC5B,UAAIqf;AACJ,UAAIrf,KAAKgY,iBAAiBhY,KAAK0kB,cAAc,GAAG;AAC9CrF,kBAAU1W,SAASC,cAAc,KAAK;MACxC,OAAO;AAMLyW,kBAAU1W,SAASC,cAAc,KAAK;AACtCyW,gBAAQvK,MAAM,GAAG,KAAKtR,kBAAkB,cACtC,aAAamhB,KAAK3kB,KAAK6M,IAAI,IAAI,cAAc,SAAS;AAGxD,YAAI7M,KAAK0kB,aAAa1kB,KAAK0kB,YAAY,GAAG;AACxCrF,kBAAQnX,QAAQ,mBAAmBnC,KAAKsR,MACtCrX,KAAK0kB,YAAY,GACnB,CAAC;QAKH;MACF;AACArF,cAAQtO,iBAAiB,YAAY,KAAK,UAAUmO,KAAK,IAAI,CAAC;AAC9D,WAAK,WAAWG;AAEhB,YAAM;QAAE7J;MAAM,IAAIF,iBAAYC;AAC9BnR,gBAAU2M,iBAAiB,WAAW6T,SAAO;AAC3C,YAAIA,IAAIxM,QAAQ,YAAY5C,QAAQoP,IAAInP,UAAUmP,IAAIlP,UAAU;AAC9D,eAAK,UAAU;QACjB;MACF,CAAC;AAED,UAAI,CAAC1V,KAAKwH,YAAY,KAAK3C,cAAc;AACvC,aAAKX,sBAAsB;AAC3B,aAAK8D,aAAa;MACpB,OAAO;AACLqX,gBAAQlW,UAAUC,IAAI,kBAAkB;MAC1C;AAEAhF,gBAAUmK,OAAO8Q,OAAO;AACxB,aAAOjb;IACT;IAEAkM,4BAA4B;AAC1B,aAAO,KAAK;IACd;IAEAC,mBAAmB;AACjB,WAAKnM,UAAU+E,UAAUC,IAAI,eAAe;IAC9C;IAKA,YAAY;AACV,WAAK7F,iBAAiB6P,mBAAmB,KAAKC,SAAS,KAAKC,QAAQ;IACtE;EACF;AA4BA,MAAMuR,kBAAN,MAAMA,iBAAgB;IACpB,wBAAwB;IAExB,uBAAuB;IAEvB,qBAAqB;IAErB,uBAAuB,oBAAIrR,IAAI;IAE/B,mBAAmB;IAEnB,eAAe;IAEf,YAAY,CAAA;IAEZ,mCAAmC;IAEnCvQ,YAAY;MACV6hB;MACAC;MACAC;MACAC;MACA3e;MACAE;MACA0e;MACApG;MACAxb;MACAK;IACF,GAAG;AACD,WAAKmhB,MAAMA;AACX,WAAK,wBAAwBC;AAC7B,WAAK,uBAAuBC;AAC5B,WAAK,mBAAmBE,mBAAmB;AAC3C,WAAK,eAAe5hB,eAAe;AACnC,WAAK,qBAAqBK,qBAAqB,IAAIwhB,kBAAkB;AACrE,WAAK7e,OAAOA;AACZ,WAAKE,WAAWA;AAChB,WAAKuC,SAAS;AACd,WAAKqc,6BAA6BH;AAClC,WAAKvG,kBAAkBI,kBAAkB;IAa3C;IAEAuG,yBAAyB;AACvB,aAAO,KAAK,qBAAqB5I,OAAO;IAC1C;IAQA,MAAMpN,OAAOxH,QAAQ;AACnB,YAAM;QAAEyd;MAAY,IAAIzd;AACxB,YAAMxE,QAAQ,KAAKyhB;AACnBS,yBAAmBliB,OAAO,KAAKmD,QAAQ;AAEvC,YAAMgf,kBAAkB,oBAAIhS,IAAI;AAChC,YAAMiS,mBAAmB,CAAA;AACzB,YAAMC,gBAAgB;QACpB1lB,MAAM;QACNqD;QACAC,aAAa,KAAK;QAClBC,iBAAiBsE,OAAOtE;QACxBC,oBAAoBqE,OAAOrE,sBAAsB;QACjDC,aAAaoE,OAAOpE,gBAAgB;QACpCC,YAAY,IAAIiiB,cAAc;QAC9BhiB,mBAAmB,KAAK;QACxBC,eAAeiE,OAAOjE,kBAAkB;QACxCC,iBAAiBgE,OAAOhE,oBAAoB;QAC5CC,cAAc+D,OAAO/D;QACrBE,cAAc6D,OAAO7D;QACrBC,QAAQ;QACRkL,UAAU;MACZ;AAEA,iBAAWnP,QAAQslB,aAAa;AAC9B,YAAItlB,KAAK4lB,QAAQ;AACf;QACF;AACA,cAAMC,oBAAoB7lB,KAAKC,mBAAmBC,eAAegB;AACjE,YAAI,CAAC2kB,mBAAmB;AACtB,cAAI7lB,KAAK0F,KAAK,CAAC,MAAM1F,KAAK0F,KAAK,CAAC,KAAK1F,KAAK0F,KAAK,CAAC,MAAM1F,KAAK0F,KAAK,CAAC,GAAG;AAClE;UACF;QACF,OAAO;AACL,gBAAMyJ,YAAWqW,gBAAgB/R,IAAIzT,KAAKkF,EAAE;AAC5C,cAAI,CAACiK,WAAU;AAEb;UACF;AACA,cAAI,CAAC,KAAKuP,iBAAiB;AACzB+G,6BAAiB7W,KAAK5O,IAAI;AAC1B;UACF;AACA0lB,wBAAcvW,WAAWA;QAC3B;AACAuW,sBAAc1lB,OAAOA;AACrB,cAAMkN,UAAUtN,yBAAyBC,OAAO6lB,aAAa;AAE7D,YAAI,CAACxY,QAAQhK,cAAc;AACzB;QACF;AAEA,YAAI,CAAC2iB,mBAAmB;AACtB,eAAK,UAAUjX,KAAK1B,OAAO;AAE3B,cAAIlN,KAAKwH,UAAU;AACjB,kBAAM2H,YAAWqW,gBAAgB/R,IAAIzT,KAAKwH,QAAQ;AAClD,gBAAI,CAAC2H,WAAU;AACbqW,8BAAgBM,IAAI9lB,KAAKwH,UAAU,CAAC0F,OAAO,CAAC;YAC9C,OAAO;AACLiC,cAAAA,UAASP,KAAK1B,OAAO;YACvB;UACF;QACF;AAEA,cAAM6Y,WAAW7Y,QAAQmC,OAAO;AAChC,YAAIrP,KAAKuL,QAAQ;AACfwa,mBAAS7d,MAAMsD,aAAa;QAC9B;AAEA,YAAI0B,QAAQvI,aAAa;AACvB,eAAK,qBAAqBmhB,IAAI5Y,QAAQlN,KAAKkF,IAAIgI,OAAO;AACtD,eAAKkY,4BAA4BY,wBAAwB9Y,OAAO;QAClE;MACF;AAEA,YAAM,KAAK,kBAAkB;AAE7B,iBAAWlN,QAAQylB,kBAAkB;AACnC,cAAMtW,YAAYuW,cAAcvW,WAAWqW,gBAAgB/R,IAAIzT,KAAKkF,EAAE;AACtEwgB,sBAAc1lB,OAAOA;AACrB,cAAMkN,UAAUtN,yBAAyBC,OAAO6lB,aAAa;AAC7D,YAAI,CAACxY,QAAQhK,cAAc;AACzB;QACF;AACA,cAAM6iB,WAAW7Y,QAAQmC,OAAO;AAChCnC,gBAAQ/I,eAAee,KAAK,GAAG+Z,gBAAgB,GAAGjf,KAAKkF,EAAE;AACzD,YAAIlF,KAAKuL,QAAQ;AACfwa,mBAAS7d,MAAMsD,aAAa;QAC9B;AACA2D,QAAAA,UAAS8W,GAAG,EAAE,EAAE7hB,UAAUyb,MAAMkG,QAAQ;MAC1C;AAEA,WAAK,wBAAwB;IAC/B;IAEA,MAAM,oBAAoB;AACxB,UAAI,KAAK,UAAUlgB,WAAW,GAAG;AAC/B;MACF;AAGA,WAAKif,IAAIoB,gBAAgB;AAEzB,YAAMC,WAAW,CAAA;AACjB,UAAI,CAAC,KAAK,kCAAkC;AAC1C,aAAK,mCAAmC;AACxC,mBAAW;UACThiB;UACAnE,MAAM;YAAEkF;UAAG;QACb,KAAK,KAAK,WAAW;AACnB,gBAAMkhB,eAAgBjiB,eAAee,KAAK,GAAG+Z,gBAAgB,GAAG/Z,EAAE;AAClEihB,mBAASvX,KACP,KAAK,kBACDyX,kBAAkBD,YAAY,EAC/BE,KAAKC,oBAAkB;AACtB,gBAAIA,gBAAgB;AAClB,yBAAW,CAACnO,KAAK5D,KAAK,KAAK+R,gBAAgB;AACzCpiB,+BAAe0E,aAAauP,KAAK5D,KAAK;cACxC;YACF;UACF,CAAC,CACL;QACF;MACF;AACA,WAAK,UAAUgS,KACb,CACE;QACExmB,MAAM;UACJ0F,MAAM,CAAC+gB,IAAIC,IAAIC,KAAIC,GAAE;QACvB;MACF,GACA;QACE5mB,MAAM;UACJ0F,MAAM,CAACmhB,IAAIC,IAAIC,KAAIC,GAAE;QACvB;MACF,MACG;AAGH,YAAIP,OAAOE,OAAMD,OAAOE,KAAI;AAC1B,iBAAO;QACT;AAEA,YAAIC,OAAOE,OAAMD,OAAOE,KAAI;AAC1B,iBAAO;QACT;AAEA,cAAMC,OAAOL;AACb,cAAMM,OAAOR;AACb,cAAMS,QAAQT,KAAKE,OAAM;AAEzB,cAAMQ,OAAOJ;AACb,cAAMK,OAAOP;AACb,cAAMQ,QAAQR,KAAKE,OAAM;AAEzB,YAAIG,QAAQC,QAAQE,QAAQJ,MAAM;AAChC,iBAAO;QACT;AAEA,YAAII,QAAQL,QAAQE,QAAQE,MAAM;AAChC,iBAAO;QACT;AAEA,cAAME,YAAYd,KAAKE,OAAM;AAC7B,cAAMa,YAAYX,KAAKE,OAAM;AAE7B,eAAOQ,WAAWC;MACpB,CACF;AAEA,YAAMC,WAAW9e,SAAS+e,uBAAuB;AACjD,iBAAWxa,WAAW,KAAK,WAAW;AACpCua,iBAASlZ,OAAOrB,QAAQ9I,SAAS;AACjC,YAAI,KAAKsa,iBAAiB;AACxB,WACExR,QAAQkC,mBAAmBpI,SAASkG,QAAQlG,QAC3C2Y,oBAAoB;QACzB,WAAWzS,QAAQkC,mBAAmB;AACpCqY,mBAASlZ,OAAOrB,QAAQkC,kBAAkBC,OAAO,CAAC;QACpD;MACF;AACA,WAAKyV,IAAIvW,OAAOkZ,QAAQ;AACxB,YAAME,QAAQC,IAAIzB,QAAQ;AAC1B,UAAI,KAAK,uBAAuB;AAC9B,mBAAWjZ,WAAW,KAAK,WAAW;AACpC,eAAK,sBAAsB2a,sBACzB3a,QAAQ/I,gBACY,KACtB;QACF;MACF;IACF;IASA,MAAM2jB,mBAAmBxC,aAAa;AACpC,YAAMI,gBAAgB;QACpB1lB,MAAM;QACNqD,OAAO,KAAKyhB;QACZxhB,aAAa,KAAK;QAClBI,YAAY,IAAIiiB,cAAc;QAC9B1hB,QAAQ;MACV;AACA,iBAAWjE,QAAQslB,aAAa;AAC9BtlB,aAAKsJ,gBAAgBub,iBAAgBkD;AAErCrC,sBAAc1lB,OAAOA;AACrB,cAAMkN,UAAUtN,yBAAyBC,OAAO6lB,aAAa;AAE7D,YAAI,CAACxY,QAAQhK,cAAc;AACzB;QACF;AACAgK,gBAAQmC,OAAO;AACfnC,gBAAQ/I,eAAee,KAAK,GAAG+Z,gBAAgB,GAAGjf,KAAKkF,EAAE;AACzD,aAAK,UAAU0J,KAAK1B,OAAO;MAC7B;AACA,YAAM,KAAK,kBAAkB;IAC/B;IAQA8a,OAAO;MAAExhB;IAAS,GAAG;AACnB,YAAMnD,QAAQ,KAAKyhB;AACnB,WAAKte,WAAWA;AAChB+e,yBAAmBliB,OAAO;QAAE+E,UAAU5B,SAAS4B;MAAS,CAAC;AAEzD,WAAK,wBAAwB;AAC7B/E,YAAMkI,SAAS;IACjB;IAEA,0BAA0B;AACxB,UAAI,CAAC,KAAK,sBAAsB;AAC9B;MACF;AACA,YAAMlI,QAAQ,KAAKyhB;AACnB,iBAAW,CAAC5f,IAAI+iB,MAAM,KAAK,KAAK,sBAAsB;AACpD,cAAM/a,UAAU7J,MAAMyM,cAAc,wBAAwB5K,EAAE,IAAI;AAClE,YAAI,CAACgI,SAAS;AACZ;QACF;AAEA+a,eAAO5W,YAAY;AACnB,cAAM;UAAE6W;QAAW,IAAIhb;AACvB,YAAI,CAACgb,YAAY;AACfhb,kBAAQqB,OAAO0Z,MAAM;QACvB,WAAWC,WAAW9S,aAAa,UAAU;AAC3C8S,qBAAWC,YAAYF,MAAM;QAC/B,WAAW,CAACC,WAAW/e,UAAUif,SAAS,mBAAmB,GAAG;AAC9DF,qBAAW/J,OAAO8J,MAAM;QAC1B,OAAO;AACLC,qBAAWrI,MAAMoI,MAAM;QACzB;AAEA,cAAMI,qBAAqB,KAAK,qBAAqB5U,IAAIvO,EAAE;AAC3D,YAAI,CAACmjB,oBAAoB;AACvB;QACF;AACA,YAAIA,mBAAmBC,cAAc;AAEnC,eAAKlD,4BAA4BmD,iBAC/BrjB,IACAgI,QAAQhI,IACR+iB,MACF;AACAI,6BAAmBC,eAAe;QACpC,OAAO;AACLD,6BAAmBJ,SAASA;QAC9B;MACF;AACA,WAAK,qBAAqBlK,MAAM;IAClC;IAEAyK,yBAAyB;AACvB,aAAO/X,MAAMgY,KAAK,KAAK,qBAAqBtU,OAAO,CAAC;IACtD;IAEAuU,sBAAsBxjB,IAAI;AACxB,aAAO,KAAK,qBAAqBuO,IAAIvO,EAAE;IACzC;IAEAyjB,kBAAkB3jB,QAAQ;AACxB,YAAM;QAAE8f;MAAI,IAAI;AAChB,YAAM;QAAE5f;QAAIkD;MAAS,IAAIpD;AACzB,YAAMkI,UAAU,IAAIkE,wBAAwB;QAC1CpR,MAAM;UACJkF;UACAQ,MAAMV,OAAO4jB,WAAW;UACxBxgB;QACF;QACApD;QACA3B,OAAOyhB;QACP7gB,QAAQ;QACRL,eAAe,CAAC,CAAC,KAAK8a;QACtBpb,aAAa,KAAK;QAClBK,mBAAmB,KAAK;MAC1B,CAAC;AACDuJ,cAAQmC,OAAO;AACfnC,cAAQ/I,eAAee,KAAK,GAAG+Z,gBAAgB,GAAG/Z,EAAE;AACpDgI,cAAQoE,oBAAoB;AAC5B,WAAK,UAAU1C,KAAK1B,OAAO;AAC3B,aAAOA;IACT;IAEAuE,iBAAiBvM,IAAI;AACnB,YAAM0Y,SAAQ,KAAK,UAAUC,UAAUgL,QAAMA,GAAG7oB,KAAKkF,OAAOA,EAAE;AAC9D,UAAI0Y,SAAQ,GAAG;AACb;MACF;AACA,YAAM,CAAC1Q,OAAO,IAAI,KAAK,UAAU7E,OAAOuV,QAAO,CAAC;AAChD,WAAK,uBAAuBkL,yBAC1B5b,QAAQ/I,cACV;IACF;IAEA4kB,sBAAsBC,SAAS;AAC7B,UAAIA,QAAQnjB,WAAW,GAAG;AACxB;MACF;AACA,iBAAWb,UAAUgkB,SAAS;AAC5BhkB,eAAOikB,4BAA4B,IAAI;MACzC;AACA,WAAK,kBAAkB;IACzB;IAEAC,oBAAoBC,UAAU,OAAO;AACnC,WAAKrE,IAAI3b,UAAU4X,OAAO,YAAY,CAACoI,OAAO;IAChD;IAKA,WAAWpB,sBAAsB;AAC/B,aAAO1c,OACL,MACA,uBACAyB,OAAOsc,OAAO;QACZ5gB,OAAO;QACP6gB,UAAU;QACVnhB,OAAO4B,0BAA0BC;QACjCuf,WAAW,CAAC,CAAC;QACb7f,wBAAwB;QACxBE,sBAAsB;MACxB,CAAC,CACH;IACF;EACF;ACljIA,MAAM4f,cAAc;AAKpB,MAAMC,iBAAN,MAAMA,wBAAuBC,iBAAiB;IAC5C,WAAW;IAEX,eAAe,GAAG,KAAKC,EAAE;IAEzB,cAAc;IAEd;IAEAC,eAAe;IAEf,OAAOC,0BAA0B;IAEjC,OAAOC,mBAAmB;IAE1B,OAAOC,gBAAgB;IAEvB,OAAOC,mBAAmB;IAE1B,WAAWC,mBAAmB;AAC5B,YAAMC,QAAQT,gBAAeU;AAE7B,YAAMC,eAAeC,CAAAA,UAAQA,MAAKC,QAAQ;AAE1C,YAAMC,QAAQC,0BAA0BC;AACxC,YAAMC,MAAMF,0BAA0BG;AAEtC,aAAOC,OACL,MACA,oBACA,IAAIC,gBAAgB,CAClB,CAIE,CAAC,UAAU,cAAc,UAAU,YAAY,GAC/CX,MAAMY,gBACN;QAAEC,SAAS;MAAK,CAAC,GAEnB,CACE,CAAC,cAAc,kBAAkB,UAAU,YAAY,GACvDb,MAAMY,cAAc,GAEtB,CACE,CAAC,aAAa,eAAe,GAC7BZ,MAAMc,iBACN;QAAEC,MAAM,CAAC,CAACV,OAAO,CAAC;QAAGW,SAASd;MAAa,CAAC,GAE9C,CACE,CAAC,kBAAkB,qBAAqB,GACxCF,MAAMc,iBACN;QAAEC,MAAM,CAAC,CAACP,KAAK,CAAC;QAAGQ,SAASd;MAAa,CAAC,GAE5C,CACE,CAAC,cAAc,gBAAgB,GAC/BF,MAAMc,iBACN;QAAEC,MAAM,CAACV,OAAO,CAAC;QAAGW,SAASd;MAAa,CAAC,GAE7C,CACE,CAAC,mBAAmB,sBAAsB,GAC1CF,MAAMc,iBACN;QAAEC,MAAM,CAACP,KAAK,CAAC;QAAGQ,SAASd;MAAa,CAAC,GAE3C,CACE,CAAC,WAAW,aAAa,GACzBF,MAAMc,iBACN;QAAEC,MAAM,CAAC,GAAG,CAACV,KAAK;QAAGW,SAASd;MAAa,CAAC,GAE9C,CACE,CAAC,gBAAgB,mBAAmB,GACpCF,MAAMc,iBACN;QAAEC,MAAM,CAAC,GAAG,CAACP,GAAG;QAAGQ,SAASd;MAAa,CAAC,GAE5C,CACE,CAAC,aAAa,eAAe,GAC7BF,MAAMc,iBACN;QAAEC,MAAM,CAAC,GAAGV,KAAK;QAAGW,SAASd;MAAa,CAAC,GAE7C,CACE,CAAC,kBAAkB,qBAAqB,GACxCF,MAAMc,iBACN;QAAEC,MAAM,CAAC,GAAGP,GAAG;QAAGQ,SAASd;MAAa,CAAC,CAC1C,CACF,CACH;IACF;IAEA,OAAOe,QAAQ;IAEf,OAAOC,cAAcC,qBAAqBC;IAE1CC,YAAYC,QAAQ;AAClB,YAAM;QAAE,GAAGA;QAAQC,MAAM;MAAiB,CAAC;AAC3C,WAAKC,QACHF,OAAOE,SACPjC,gBAAeM,iBACfL,iBAAiBiC;AACnB,WAAK,YAAYH,OAAOI,YAAYnC,gBAAeO;AACnD,UAAI,CAAC,KAAK6B,qBAAqB;AAC7B,aAAKC,WAAWC,UAAU,mCAAmC;MAC/D;AACA,WAAKC,gBAAgB;IACvB;IAGA,OAAOC,WAAWC,MAAMC,WAAW;AACjCzC,uBAAiBuC,WAAWC,MAAMC,SAAS;AAC3C,YAAMC,QAAQC,iBAAiBC,SAASC,eAAe;AAYvD,WAAKzC,mBAAmB0C,WACtBJ,MAAMK,iBAAiB,oBAAoB,CAC7C;IACF;IAGA,OAAOC,oBAAoBC,MAAMC,OAAO;AACtC,cAAQD,MAAI;QACV,KAAKE,2BAA2BC;AAC9BrD,0BAAeO,mBAAmB4C;AAClC;QACF,KAAKC,2BAA2BE;AAC9BtD,0BAAeM,gBAAgB6C;AAC/B;MACJ;IACF;IAGAI,aAAaL,MAAMC,OAAO;AACxB,cAAQD,MAAI;QACV,KAAKE,2BAA2BC;AAC9B,eAAK,gBAAgBF,KAAK;AAC1B;QACF,KAAKC,2BAA2BE;AAC9B,eAAK,aAAaH,KAAK;AACvB;MACJ;IACF;IAGA,WAAWK,4BAA4B;AACrC,aAAO,CACL,CACEJ,2BAA2BC,eAC3BrD,gBAAeO,gBAAgB,GAEjC,CACE6C,2BAA2BE,gBAC3BtD,gBAAeM,iBAAiBL,iBAAiBiC,iBAAiB,CACnE;IAEL;IAGA,IAAIuB,qBAAqB;AACvB,aAAO,CACL,CAACL,2BAA2BC,eAAe,KAAK,SAAS,GACzD,CAACD,2BAA2BE,gBAAgB,KAAKrB,KAAK,CAAC;IAE3D;IAGA,IAAIyB,iBAAiB;AACnB,WAAKvD,iBAAiB,IAAIwD,iBAAiB,IAAI;AAC/C,aAAO,CAAC,CAAC,eAAe,KAAKxD,YAAY,CAAC;IAC5C;IAEA,IAAIyD,YAAY;AACd,aAAOR,2BAA2BE;IACpC;IAMA,gBAAgBnB,UAAU;AACxB,YAAM0B,cAAcC,UAAQ;AAC1B,aAAKC,UAAUpB,MAAMR,WAAW,QAAQ2B,IAAI;AAC5C,aAAKE,UAAU,GAAG,EAAEF,OAAO,KAAK,aAAa,KAAKG,WAAW;AAC7D,aAAK,YAAYH;AACjB,aAAK,qBAAqB;MAC5B;AACA,YAAMI,gBAAgB,KAAK;AAC3B,WAAKC,YAAY;QACfC,KAAKP,YAAYQ,KAAK,MAAMlC,QAAQ;QACpCmC,MAAMT,YAAYQ,KAAK,MAAMH,aAAa;QAC1CK,MAAM,KAAKlC,WAAWmC,SAASH,KAAK,KAAKhC,YAAY,IAAI;QACzDoC,UAAU;QACVvB,MAAME,2BAA2BC;QACjCqB,qBAAqB;QACrBC,UAAU;MACZ,CAAC;IACH;IAGAC,iBAAiB;AACf,WAAKb,UAAUpB,MAAMV,QAAQ,KAAKA;AAClC,WAAK9B,cAAc0E,OAAO,KAAK5C,KAAK;AACpC,YAAM2C,eAAe;IACvB;IAMA,aAAa3C,QAAO;AAClB,YAAM6C,WAAWC,SAAO;AACtB,aAAK9C,QAAQ8C;AACb,aAAKH,eAAe;MACtB;AACA,YAAMI,aAAa,KAAK/C;AACxB,WAAKkC,YAAY;QACfC,KAAKU,SAAST,KAAK,MAAMpC,MAAK;QAC9BqC,MAAMQ,SAAST,KAAK,MAAMW,UAAU;QACpCT,MAAM,KAAKlC,WAAWmC,SAASH,KAAK,KAAKhC,YAAY,IAAI;QACzDoC,UAAU;QACVvB,MAAME,2BAA2BE;QACjCoB,qBAAqB;QACrBC,UAAU;MACZ,CAAC;IACH;IAOApD,gBAAgB0D,IAAGC,IAAG;AACpB,WAAK7C,WAAW8C,yBAAyBF,IAAGC,IAAoB,IAAI;IACtE;IAGAE,wBAAwB;AAEtB,YAAMC,QAAQ,KAAKpB;AACnB,aAAO,CACL,CAACjE,gBAAeK,mBAAmBgF,OACnC,EAAErF,gBAAeK,mBAAmB,KAAK,aAAagF,KAAK;IAE/D;IAGAC,UAAU;AACR,UAAI,CAAC,KAAKC,QAAQ;AAChB;MACF;AACA,YAAMD,QAAQ;AACd,UAAI,KAAKE,QAAQ,MAAM;AACrB;MACF;AAEA,UAAI,CAAC,KAAKC,iBAAiB;AAGzB,aAAKF,OAAOG,IAAI,IAAI;MACtB;IACF;IAGAC,iBAAiB;AACf,UAAI,CAAC,MAAMA,eAAe,GAAG;AAC3B,eAAO;MACT;AAEA,WAAKC,WAAWC,UAAUC,OAAO,SAAS;AAC1C,WAAK/B,UAAUgC,kBAAkB;AACjC,WAAKC,eAAe;AACpB,WAAKR,IAAIS,gBAAgB,uBAAuB;AAQhD,WAAK,cAAc,IAAIC,gBAAgB;AACvC,YAAMC,SAAS,KAAK9D,WAAW+D,eAAe,KAAK,WAAW;AAE9D,WAAKrC,UAAUsC,iBACb,WACA,KAAKC,iBAAiBjC,KAAK,IAAI,GAC/B;QAAE8B;MAAO,CACX;AACA,WAAKpC,UAAUsC,iBAAiB,SAAS,KAAKE,eAAelC,KAAK,IAAI,GAAG;QACvE8B;MACF,CAAC;AACD,WAAKpC,UAAUsC,iBAAiB,QAAQ,KAAKG,cAAcnC,KAAK,IAAI,GAAG;QACrE8B;MACF,CAAC;AACD,WAAKpC,UAAUsC,iBAAiB,SAAS,KAAKI,eAAepC,KAAK,IAAI,GAAG;QACvE8B;MACF,CAAC;AACD,WAAKpC,UAAUsC,iBAAiB,SAAS,KAAKK,eAAerC,KAAK,IAAI,GAAG;QACvE8B;MACF,CAAC;AAED,aAAO;IACT;IAGAQ,kBAAkB;AAChB,UAAI,CAAC,MAAMA,gBAAgB,GAAG;AAC5B,eAAO;MACT;AAEA,WAAKf,WAAWC,UAAUH,IAAI,SAAS;AACvC,WAAK3B,UAAUgC,kBAAkB;AACjC,WAAKP,IAAIoB,aAAa,yBAAyB,KAAK,YAAY;AAChE,WAAKZ,eAAe;AAEpB,WAAK,aAAaa,MAAM;AACxB,WAAK,cAAc;AAInB,WAAKrB,IAAIsB,MAAM;QACbC,eAAe;MACjB,CAAC;AAGD,WAAKC,YAAY;AACjB,WAAKzB,OAAOC,IAAIK,UAAUH,IAAI,iBAAiB;AAE/C,aAAO;IACT;IAGAuB,QAAQC,QAAO;AACb,UAAI,CAAC,KAAKC,qBAAqB;AAC7B;MACF;AACA,YAAMF,QAAQC,MAAK;AACnB,UAAIA,OAAME,WAAW,KAAKrD,WAAW;AACnC,aAAKA,UAAU+C,MAAM;MACvB;IACF;IAGAO,UAAUP,OAAO;AACf,UAAI,KAAKQ,OAAO;AAEd;MACF;AACA,WAAK3B,eAAe;AACpB,UAAImB,OAAO;AACT,aAAK/C,UAAU+C,MAAM;MACvB;AACA,UAAI,KAAKS,iBAAiBC,YAAY;AACpC,aAAKC,OAAO;MACd;AACA,WAAKF,kBAAkB;IACzB;IAGA1G,UAAU;AACR,aAAO,CAAC,KAAKkD,aAAa,KAAKA,UAAU2D,UAAUC,KAAK,MAAM;IAChE;IAGA7B,SAAS;AACP,WAAKkB,YAAY;AACjB,UAAI,KAAKzB,QAAQ;AACf,aAAKA,OAAOqC,gBAAgB,IAAI;AAChC,aAAKrC,OAAOC,IAAIK,UAAUH,IAAI,iBAAiB;MACjD;AACA,YAAMI,OAAO;IACf;IAMA,eAAe;AAEb,YAAM+B,UAAS,CAAA;AACf,WAAK9D,UAAU+D,UAAU;AACzB,UAAIC,YAAY;AAChB,iBAAWC,SAAS,KAAKjE,UAAUkE,YAAY;AAC7C,YAAIF,WAAWG,aAAaC,KAAKC,aAAaJ,MAAMK,aAAa,MAAM;AAIrE;QACF;AACAR,QAAAA,QAAOS,KAAKtI,gBAAe,gBAAgBgI,KAAK,CAAC;AACjDD,oBAAYC;MACd;AACA,aAAOH,QAAOU,KAAK,IAAI;IACzB;IAEA,uBAAuB;AACrB,YAAM,CAACC,aAAaC,YAAY,IAAI,KAAKC;AAEzC,UAAIC;AACJ,UAAI,KAAKlD,iBAAiB;AACxBkD,eAAO,KAAKnD,IAAIoD,sBAAsB;MACxC,OAAO;AAGL,cAAM;UAAEC;UAAcrD;QAAI,IAAI;AAC9B,cAAMsD,eAAetD,IAAI7C,MAAMoG;AAC/B,cAAMC,kBAAkBxD,IAAIK,UAAUoD,SAAS,QAAQ;AACvDzD,YAAIK,UAAUC,OAAO,QAAQ;AAC7BN,YAAI7C,MAAMoG,UAAU;AACpBF,qBAAarD,IAAI0D,OAAO,KAAK1D,GAAG;AAChCmD,eAAOnD,IAAIoD,sBAAsB;AACjCpD,YAAIM,OAAO;AACXN,YAAI7C,MAAMoG,UAAUD;AACpBtD,YAAIK,UAAUsD,OAAO,UAAUH,eAAe;MAChD;AAIA,UAAI,KAAKI,WAAW,QAAQ,KAAKC,iBAAiB,KAAK;AACrD,aAAK/B,QAAQqB,KAAKrB,QAAQkB;AAC1B,aAAKc,SAASX,KAAKW,SAASb;MAC9B,OAAO;AACL,aAAKnB,QAAQqB,KAAKW,SAASd;AAC3B,aAAKc,SAASX,KAAKrB,QAAQmB;MAC7B;AACA,WAAKc,kBAAkB;IACzB;IAMAC,SAAS;AACP,UAAI,CAAC,KAAKC,aAAa,GAAG;AACxB;MACF;AAEA,YAAMD,OAAO;AACb,WAAK7C,gBAAgB;AACrB,YAAM+C,YAAY,KAAK;AACvB,YAAMC,UAAW,KAAK,WAAW,KAAK,aAAa,EAAEC,QAAQ;AAC7D,UAAIF,cAAcC,SAAS;AACzB;MACF;AAEA,YAAME,WAAUC,UAAQ;AACtB,aAAK,WAAWA;AAChB,YAAI,CAACA,MAAM;AACT,eAAKhE,OAAO;AACZ;QACF;AACA,aAAK,YAAY;AACjB,aAAKzD,WAAWiD,QAAQ,IAAI;AAC5B,aAAK,qBAAqB;MAC5B;AACA,WAAKnB,YAAY;QACfC,KAAKA,MAAM;AACTyF,UAAAA,SAAQF,OAAO;QACjB;QACArF,MAAMA,MAAM;AACVuF,UAAAA,SAAQH,SAAS;QACnB;QACAjF,UAAU;MACZ,CAAC;AACD,WAAK,qBAAqB;IAC5B;IAGAsF,0BAA0B;AACxB,aAAO,KAAKN,aAAa;IAC3B;IAGAO,kBAAkB;AAChB,WAAKrE,eAAe;AACpB,WAAK5B,UAAU+C,MAAM;IACvB;IAGAmD,QAAQ/C,QAAO;AACb,UAAIA,OAAME,WAAW,KAAK5B,OAAO0B,OAAMgD,QAAQ,SAAS;AACtD,aAAKF,gBAAgB;AAErB9C,QAAAA,OAAMiD,eAAe;MACvB;IACF;IAEA7D,iBAAiBY,QAAO;AACtBlH,sBAAeQ,iBAAiB4J,KAAK,MAAMlD,MAAK;IAClD;IAEAX,eAAeW,QAAO;AACpB,WAAKF,YAAY;IACnB;IAEAR,cAAcU,QAAO;AACnB,WAAKF,YAAY;IACnB;IAEAP,eAAeS,QAAO;AACpB,WAAK3B,OAAOC,IAAIK,UAAUsD,OAAO,mBAAmB,KAAKtI,QAAQ,CAAC;IACpE;IAGAwJ,iBAAiB;AACf,WAAKtG,UAAU6C,aAAa,QAAQ,SAAS;AAC7C,WAAK7C,UAAUkC,gBAAgB,gBAAgB;IACjD;IAGAqE,gBAAgB;AACd,WAAKvG,UAAU6C,aAAa,QAAQ,SAAS;AAC7C,WAAK7C,UAAU6C,aAAa,kBAAkB,IAAI;IACpD;IAGA,IAAI2D,mBAAmB;AACrB,aAAO;IACT;IAGAC,SAAS;AACP,UAAI,KAAKhF,KAAK;AACZ,eAAO,KAAKA;MACd;AAEA,UAAIiF,OAAOC;AACX,UAAI,KAAKC,WAAW,KAAKvI,qBAAqB;AAC5CqI,gBAAQ,KAAKxF;AACbyF,gBAAQ,KAAKxF;MACf;AAEA,YAAMsF,OAAO;AACb,WAAKzG,YAAYlB,SAAS+H,cAAc,KAAK;AAC7C,WAAK7G,UAAU8G,YAAY;AAE3B,WAAK9G,UAAU6C,aAAa,MAAM,KAAK,YAAY;AACnD,WAAK7C,UAAU6C,aAAa,gBAAgB,kBAAkB;AAC9D,WAAK7C,UAAU6C,aAAa,mBAAmB,iBAAiB;AAChE,WAAK0D,cAAc;AAEnB,WAAKvG,UAAUgC,kBAAkB;AAEjC,YAAM;QAAEpD;MAAM,IAAI,KAAKoB;AACvBpB,YAAMR,WAAW,QAAQ,KAAK,SAAS;AACvCQ,YAAMV,QAAQ,KAAKA;AAEnB,WAAKuD,IAAI0D,OAAO,KAAKnF,SAAS;AAE9B,WAAK6B,aAAa/C,SAAS+H,cAAc,KAAK;AAC9C,WAAKhF,WAAWC,UAAUH,IAAI,WAAW,SAAS;AAClD,WAAKF,IAAI0D,OAAO,KAAKtD,UAAU;AAE/B,UAAI,KAAK+E,WAAW,KAAKvI,qBAAqB;AAE5C,cAAM,CAACoG,aAAaC,YAAY,IAAI,KAAKC;AACzC,YAAI,KAAKtG,qBAAqB;AAU5B,gBAAM;YAAE0I;UAAS,IAAI,KAAKC;AAC1B,cAAI,CAACC,IAAIC,EAAE,IAAI,KAAK7F,sBAAsB;AAC1C,WAAC4F,IAAIC,EAAE,IAAI,KAAKC,wBAAwBF,IAAIC,EAAE;AAC9C,gBAAM,CAACE,WAAWC,UAAU,IAAI,KAAKC;AACrC,gBAAM,CAACC,OAAOC,KAAK,IAAI,KAAKC;AAC5B,cAAIC,MAAMC;AACV,kBAAQ,KAAKtC,UAAQ;YACnB,KAAK;AACHqC,qBAAOhB,SAASK,SAAS,CAAC,IAAIQ,SAASH;AACvCO,qBAAOhB,QAAQ,KAAKpB,UAAUwB,SAAS,CAAC,IAAIS,SAASH;AACrD;YACF,KAAK;AACHK,qBAAOhB,SAASK,SAAS,CAAC,IAAIQ,SAASH;AACvCO,qBAAOhB,SAASI,SAAS,CAAC,IAAIS,SAASH;AACvC,eAACJ,IAAIC,EAAE,IAAI,CAACA,IAAI,CAACD,EAAE;AACnB;YACF,KAAK;AACHS,qBAAOhB,QAAQ,KAAKnD,SAASwD,SAAS,CAAC,IAAIQ,SAASH;AACpDO,qBAAOhB,SAASI,SAAS,CAAC,IAAIS,SAASH;AACvC,eAACJ,IAAIC,EAAE,IAAI,CAAC,CAACD,IAAI,CAACC,EAAE;AACpB;YACF,KAAK;AACHQ,qBACEhB,SACCK,SAAS,CAAC,IAAIQ,QAAQ,KAAKhC,SAAS8B,cAAcD;AACrDO,qBACEhB,SACCI,SAAS,CAAC,IAAIS,QAAQ,KAAKjE,QAAQ6D,aAAaC;AACnD,eAACJ,IAAIC,EAAE,IAAI,CAAC,CAACA,IAAID,EAAE;AACnB;UACJ;AACA,eAAKW,MAAMF,OAAOjD,aAAakD,OAAOjD,cAAcuC,IAAIC,EAAE;QAC5D,OAAO;AACL,eAAKW,gBAAgBnB,OAAOC,KAAK;QACnC;AAEA,aAAK,YAAY;AACjB,aAAK1E,eAAe;AACpB,aAAKjC,UAAUgC,kBAAkB;MACnC,OAAO;AACL,aAAKC,eAAe;AACpB,aAAKjC,UAAUgC,kBAAkB;MACnC;AAMA,aAAO,KAAKP;IACd;IAEA,OAAO,gBAAgBqG,MAAM;AAC3B,cACEA,KAAK3D,aAAaC,KAAKC,YAAYyD,KAAKC,YAAYD,KAAKnE,WACzDqE,WAAWhM,aAAa,EAAE;IAC9B;IAEA2G,eAAeQ,QAAO;AACpB,YAAM8E,gBAAgB9E,OAAM8E,iBAAiBC,OAAOD;AACpD,YAAM;QAAEE,OAAAA;MAAM,IAAIF;AAClB,UAAIE,OAAMC,WAAW,KAAKD,OAAM,CAAC,MAAM,cAAc;AACnD;MACF;AAEAhF,MAAAA,OAAMiD,eAAe;AACrB,YAAMiC,QAAQpM,gBAAe,oBAC3BgM,cAAcK,QAAQ,MAAM,KAAK,EACnC,EAAEN,WAAWhM,aAAa,IAAI;AAC9B,UAAI,CAACqM,OAAO;AACV;MACF;AACA,YAAME,YAAYL,OAAOM,aAAa;AACtC,UAAI,CAACD,UAAUE,YAAY;AACzB;MACF;AACA,WAAKzI,UAAU+D,UAAU;AACzBwE,gBAAUG,mBAAmB;AAC7B,YAAMC,QAAQJ,UAAUK,WAAW,CAAC;AACpC,UAAI,CAACP,MAAMQ,SAAS,IAAI,GAAG;AACzBF,cAAMG,WAAWhK,SAASiK,eAAeV,KAAK,CAAC;AAC/C,aAAKrI,UAAU+D,UAAU;AACzBwE,kBAAUS,gBAAgB;AAC1B;MACF;AAGA,YAAM;QAAEC;QAAgBC;MAAY,IAAIP;AACxC,YAAMQ,eAAe,CAAA;AACrB,YAAMC,cAAc,CAAA;AACpB,UAAIH,eAAe9E,aAAaC,KAAKC,WAAW;AAC9C,cAAM7C,SAASyH,eAAeI;AAC9BD,oBAAY7E,KACV0E,eAAelB,UAAUuB,MAAMJ,WAAW,EAAElB,WAAWhM,aAAa,EAAE,CACxE;AACA,YAAIwF,WAAW,KAAKxB,WAAW;AAC7B,cAAI8D,UAASqF;AACb,qBAAWlF,SAAS,KAAKjE,UAAUkE,YAAY;AAC7C,gBAAID,UAAUzC,QAAQ;AACpBsC,cAAAA,UAASsF;AACT;YACF;AACAtF,YAAAA,QAAOS,KAAKtI,gBAAe,gBAAgBgI,KAAK,CAAC;UACnD;QACF;AACAkF,qBAAa5E,KACX0E,eAAelB,UACZuB,MAAM,GAAGJ,WAAW,EACpBlB,WAAWhM,aAAa,EAAE,CAC/B;MACF,WAAWiN,mBAAmB,KAAKjJ,WAAW;AAC5C,YAAI8D,UAASqF;AACb,YAAII,KAAI;AACR,mBAAWtF,SAAS,KAAKjE,UAAUkE,YAAY;AAC7C,cAAIqF,SAAQL,aAAa;AACvBpF,YAAAA,UAASsF;UACX;AACAtF,UAAAA,QAAOS,KAAKtI,gBAAe,gBAAgBgI,KAAK,CAAC;QACnD;MACF;AACA,WAAK,WAAW,GAAGkF,aAAa3E,KAAK,IAAI,CAAC,GAAG6D,KAAK,GAAGe,YAAY5E,KAAK,IAAI,CAAC;AAC3E,WAAK,YAAY;AAGjB,YAAMgF,WAAW,IAAIC,MAAM;AAC3B,UAAIC,eAAeC,KAAKC,WAAWT,aAAaU,IAAIC,UAAQA,KAAK1B,MAAM,CAAC;AACxE,iBAAW;QAAE2B;MAAW,KAAK,KAAK/J,UAAUkE,YAAY;AAEtD,YAAI6F,WAAW5F,aAAaC,KAAKC,WAAW;AAC1C,gBAAM+D,SAAS2B,WAAWhC,UAAUK;AACpC,cAAIsB,gBAAgBtB,QAAQ;AAC1BoB,qBAASQ,SAASD,YAAYL,YAAY;AAC1CF,qBAASS,OAAOF,YAAYL,YAAY;AACxC;UACF;AACAA,0BAAgBtB;QAClB;MACF;AACAG,gBAAU2B,gBAAgB;AAC1B3B,gBAAU4B,SAASX,QAAQ;IAC7B;IAEA,cAAc;AACZ,WAAKxJ,UAAUoK,gBAAgB;AAC/B,UAAI,CAAC,KAAK,UAAU;AAClB;MACF;AACA,iBAAWN,QAAQ,KAAK,SAASO,MAAM,IAAI,GAAG;AAC5C,cAAM5I,MAAM3C,SAAS+H,cAAc,KAAK;AACxCpF,YAAI0D,OACF2E,OAAOhL,SAASiK,eAAee,IAAI,IAAIhL,SAAS+H,cAAc,IAAI,CACpE;AACA,aAAK7G,UAAUmF,OAAO1D,GAAG;MAC3B;IACF;IAEA,oBAAoB;AAClB,aAAO,KAAK,SAASuG,WAAW,QAAQ,GAAG;IAC7C;IAEA,OAAO,oBAAoBsC,SAAS;AAClC,aAAOA,QAAQtC,WAAW,KAAK,MAAM;IACvC;IAGA,IAAIuC,aAAa;AACf,aAAO,KAAKvK;IACd;IAGAwK,aAAa;AACX,YAAMC,UAAUxO,gBAAeK,mBAAmB,KAAK4D;AACvD,aAAO,KAAKwK,QAAQD,SAASA,OAAO;IACtC;IAGA,aAAaE,YAAYC,MAAMpJ,QAAQ7C,WAAW;AAChD,UAAIkM,cAAc;AAClB,UAAID,gBAAgBE,2BAA2B;AAC7C,cAAM;UACJF,MAAM;YACJG,uBAAuB;cAAE3M;cAAU4M;YAAU;YAC7CpG;YACAS;YACAlJ;YACA8O;YACAC;YACAC;YACAC;YACAC;UACF;UACAC;UACAC;UACA/J,QAAQ;YACNgK,MAAM;cAAEC;YAAW;UACrB;QACF,IAAIb;AAGJ,YAAI,CAACU,eAAeA,YAAYlD,WAAW,GAAG;AAE5C,iBAAO;QACT;AACAyC,sBAAcD,OAAO;UACnBc,gBAAgB7N,qBAAqBC;UACrCI,OAAOyN,MAAMC,KAAKZ,SAAS;UAC3B5M;UACAgB,OAAOkM,YAAY9G,KAAK,IAAI;UAC5BuC,UAAUwE;UACVM,WAAWJ,aAAa;UACxB7G,MAAMA,KAAK0E,MAAM,CAAC;UAClBjE;UACAhH,qBAAqBlC;UACrBA;UACA2P,SAAS;UACTb;UACAc,SAASZ,aAAaa,OAAO;UAC7Bd;UACAE;UACAC;QACF;MACF;AACA,YAAMY,SAAS,MAAM,MAAMtB,YAAYC,MAAMpJ,QAAQ7C,SAAS;AAC9DsN,aAAO,YAAYrB,KAAKxM;AACxB6N,aAAO/N,QAAQgO,KAAKC,aAAa,GAAGvB,KAAK1M,KAAK;AAC9C+N,aAAO,WAAWhQ,gBAAe,oBAAoB2O,KAAKxL,KAAK;AAC/D6M,aAAOjF,eAAe6D;AACtB,UAAID,KAAKmB,SAAS;AAChBE,eAAOG,eAAexB,IAAI;MAC5B;AAEA,aAAOqB;IACT;IAGAI,UAAUC,eAAe,OAAO;AAC9B,UAAI,KAAKxP,QAAQ,GAAG;AAClB,eAAO;MACT;AAEA,UAAI,KAAKgP,SAAS;AAChB,eAAO,KAAKS,iBAAiB;MAC/B;AAEA,YAAMrO,SAAQhC,iBAAiBsQ,cAAcC,QAC3C,KAAK/K,kBAAkB7C,iBAAiB,KAAKmB,SAAS,EAAE9B,QAAQ,KAAKA,KACvE;AACA,YAAMwO,aAAaC,OAAOC,OAAO,MAAMP,UAAUC,YAAY,GAAG;QAC9DpO,OAAAA;QACAE,UAAU,KAAK;QACfgB,OAAO,KAAK,kBAAkB;MAChC,CAAC;AACD,WAAKyN,WAAWH,UAAU;AAE1B,UAAIJ,cAAc;AAGhBI,mBAAWI,SAAS;AACpB,eAAOJ;MACT;AAEA,UAAI,KAAKrO,uBAAuB,CAAC,KAAK,mBAAmBqO,UAAU,GAAG;AACpE,eAAO;MACT;AAEAA,iBAAWvQ,KAAK,KAAKkC;AAErB,aAAOqO;IACT;IAEA,mBAAmBA,YAAY;AAC7B,YAAM;QAAEtN;QAAOhB;QAAUF,OAAAA;QAAO2N;MAAU,IAAI,KAAK7E;AAEnD,aACE,KAAK+F,oBACL,KAAKC,iBACLN,WAAWtN,UAAUA,SACrBsN,WAAWtO,aAAaA,YACxBsO,WAAWxO,MAAM+O,KAAK,CAACC,IAAG3D,OAAM2D,OAAMhP,OAAMqL,EAAC,CAAC,KAC9CmD,WAAWb,cAAcA;IAE7B;IAGAsB,wBAAwBC,YAAY;AAClC,YAAM9C,UAAU,MAAM6C,wBAAwBC,UAAU;AACxD,UAAI,CAAC9C,SAAS;AACZ,eAAO;MACT;AACA,YAAM;QAAE1L;MAAM,IAAI0L;AAClB1L,YAAMR,WAAW,QAAQ,KAAK,SAAS;AACvCQ,YAAMV,QAAQ,KAAKA;AAEnBoM,cAAQF,gBAAgB;AACxB,iBAAWN,QAAQ,KAAK,SAASO,MAAM,IAAI,GAAG;AAC5C,cAAM5I,MAAM3C,SAAS+H,cAAc,KAAK;AACxCpF,YAAI0D,OACF2E,OAAOhL,SAASiK,eAAee,IAAI,IAAIhL,SAAS+H,cAAc,IAAI,CACpE;AACAyD,gBAAQnF,OAAO1D,GAAG;MACpB;AAEA2L,iBAAWC,aAAa;QACtBzI,MAAM,KAAK4F,WAAW;QACtB8C,OACE,KAAKhP,WAAWiP,kBAAkB,KAAK,KAAKR,mBACxC,KAAKhB,UACL;UAAEhG,MAAM,KAAK;QAAS;MAC9B,CAAC;AAED,aAAOuE;IACT;IAEAkD,uBAAuBJ,YAAY;AACjC,YAAMI,uBAAuBJ,UAAU;AACvCA,iBAAWK,YAAY;IACzB;EACF;ACz4BA,MAAMC,UAAN,MAAc;IACZ,OAAOC,YAAY;IAKnBC,YAAY;AACVC,kBAAY,kDAAkD;IAChE;IAMA,IAAIC,MAAM;AACRD,kBAAY,4CAA4C;IAC1D;IAEAE,UAAUC,OAAOC,WAAW;AAC1BJ,kBAAY,kDAAkD;IAChE;IAEA,OAAOK,SAASC,KAAKC,IAAIC,IAAIC,IAAIC,IAAIC,MAAM;AACzCA,eAAS,IAAIC,aAAaN,IAAIO,MAAM;AACpC,eAASC,KAAI,GAAGC,KAAKT,IAAIO,QAAQC,KAAIC,IAAID,MAAK,GAAG;AAC/CH,aAAKG,EAAC,IAAIP,KAAKD,IAAIQ,EAAC,IAAIL;AACxBE,aAAKG,KAAI,CAAC,IAAIN,KAAKF,IAAIQ,KAAI,CAAC,IAAIJ;MAClC;AACA,aAAOC;IACT;IAEA,OAAOK,gBAAgBV,KAAKC,IAAIC,IAAIC,IAAIC,IAAIC,MAAM;AAChDA,eAAS,IAAIC,aAAaN,IAAIO,MAAM;AACpC,eAASC,KAAI,GAAGC,KAAKT,IAAIO,QAAQC,KAAIC,IAAID,MAAK,GAAG;AAC/CH,aAAKG,EAAC,IAAIP,KAAKD,IAAIQ,KAAI,CAAC,IAAIL;AAC5BE,aAAKG,KAAI,CAAC,IAAIN,KAAKF,IAAIQ,EAAC,IAAIJ;MAC9B;AACA,aAAOC;IACT;IAEA,OAAOM,WAAWX,KAAKC,IAAIC,IAAIG,MAAM;AACnCA,eAAS,IAAIC,aAAaN,IAAIO,MAAM;AACpC,eAASC,KAAI,GAAGC,KAAKT,IAAIO,QAAQC,KAAIC,IAAID,MAAK,GAAG;AAC/CH,aAAKG,EAAC,IAAIP,KAAKD,IAAIQ,EAAC;AACpBH,aAAKG,KAAI,CAAC,IAAIN,KAAKF,IAAIQ,KAAI,CAAC;MAC9B;AACA,aAAOH;IACT;IAEA,OAAOO,SAASC,IAAG;AAKjB,aAAOC,KAAKC,MAAMF,KAAI,GAAK;IAC7B;IAEA,OAAOG,gBAAgBH,IAAGI,IAAGC,aAAaC,cAAcC,UAAU;AAChE,cAAQA,UAAQ;QACd,KAAK;AACH,iBAAO,CAAC,IAAIH,KAAIC,aAAaL,KAAIM,YAAY;QAC/C,KAAK;AACH,iBAAO,CAAC,IAAIN,KAAIK,aAAa,IAAID,KAAIE,YAAY;QACnD,KAAK;AACH,iBAAO,CAACF,KAAIC,aAAa,IAAIL,KAAIM,YAAY;QAC/C;AACE,iBAAO,CAACN,KAAIK,aAAaD,KAAIE,YAAY;MAC7C;IACF;IAEA,OAAOE,oBAAoBR,IAAGI,IAAGG,UAAU;AACzC,cAAQA,UAAQ;QACd,KAAK;AACH,iBAAO,CAAC,IAAIH,IAAGJ,EAAC;QAClB,KAAK;AACH,iBAAO,CAAC,IAAIA,IAAG,IAAII,EAAC;QACtB,KAAK;AACH,iBAAO,CAACA,IAAG,IAAIJ,EAAC;QAClB;AACE,iBAAO,CAACA,IAAGI,EAAC;MAChB;IACF;IAEA,OAAOK,mBAAmBC,IAAIC,IAAIC,KAAIC,KAAIC,KAAIC,KAAI;AAChD,aAAO,EACJL,KAAK,IAAIE,OAAM,IACfD,KAAK,IAAIE,OAAM,IACf,IAAID,MAAKE,OAAM,IACf,IAAID,MAAKE,OAAM,IACfH,MAAKE,OAAM,IACXD,MAAKE,OAAM,CAAC;IAEjB;EACF;AC5FA,MAAMC,mBAAN,MAAMA,kBAAiB;IACrB;IAEA,UAAU,CAAA;IAEV;IAEA;IAEA,OAAO,CAAA;IASP,QAAQ,IAAIC,aAAa,EAAE;IAE3B;IAEA;IAEA;IAEA;IAEA;IAEA;IAEA,UAAU,CAAA;IAEV,OAAO,YAAY;IAEnB,OAAO,YAAY;IAEnB,OAAO,OAAOD,kBAAiB,YAAYA,kBAAiB;IAE5DE,YAAY;MAAEC,GAAAA;MAAGC,GAAAA;IAAE,GAAGC,KAAKC,aAAaC,WAAWC,OAAOC,cAAc,GAAG;AACzE,WAAK,OAAOJ;AACZ,WAAK,aAAaE,YAAYD;AAC9B,WAAK,SAASE;AACd,WAAK,MAAME,IAAI,CAACC,KAAKA,KAAKA,KAAKA,KAAKR,IAAGC,EAAC,GAAG,CAAC;AAC5C,WAAK,eAAeK;AACpB,WAAK,YAAYT,kBAAiB,YAAYM;AAC9C,WAAK,OAAON,kBAAiB,OAAOM;AACpC,WAAK,eAAeA;AACpB,WAAK,QAAQM,KAAKT,IAAGC,EAAC;IACxB;IAEAS,UAAU;AAIR,aAAOC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC5B;IAEA,iBAAiB;AACf,YAAMC,UAAU,KAAK,MAAMC,SAAS,GAAG,CAAC;AACxC,YAAMC,aAAa,KAAK,MAAMD,SAAS,IAAI,EAAE;AAC7C,YAAM,CAACb,IAAGC,IAAGc,OAAOC,MAAM,IAAI,KAAK;AAEnC,aAAO,EACJ,KAAK,UAAUJ,QAAQ,CAAC,IAAIE,WAAW,CAAC,KAAK,IAAId,MAAKe,QACtD,KAAK,UAAUH,QAAQ,CAAC,IAAIE,WAAW,CAAC,KAAK,IAAIb,MAAKe,SACtD,KAAK,UAAUF,WAAW,CAAC,IAAIF,QAAQ,CAAC,KAAK,IAAIZ,MAAKe,QACtD,KAAK,UAAUD,WAAW,CAAC,IAAIF,QAAQ,CAAC,KAAK,IAAIX,MAAKe,MAAM;IAEjE;IAEAC,IAAI;MAAEjB,GAAAA;MAAGC,GAAAA;IAAE,GAAG;AACZ,WAAK,SAASD;AACd,WAAK,SAASC;AACd,YAAM,CAACiB,QAAQC,QAAQC,YAAYC,WAAW,IAAI,KAAK;AACvD,UAAI,CAACC,IAAIC,IAAIC,KAAIC,GAAE,IAAI,KAAK,MAAMZ,SAAS,GAAG,EAAE;AAChD,YAAMa,QAAQ1B,KAAIwB;AAClB,YAAMG,QAAQ1B,KAAIwB;AAClB,YAAMG,KAAIC,KAAKC,MAAMJ,OAAOC,KAAK;AACjC,UAAIC,KAAI,KAAK,MAAM;AAIjB,eAAO;MACT;AACA,YAAMG,QAAQH,KAAI,KAAK;AACvB,YAAMI,KAAID,QAAQH;AAClB,YAAMK,SAASD,KAAIN;AACnB,YAAMQ,SAASF,KAAIL;AAGnB,UAAIQ,KAAKb;AACT,UAAIc,KAAKb;AACTD,WAAKE;AACLD,WAAKE;AACLD,MAAAA,OAAMS;AACNR,MAAAA,OAAMS;AAIN,WAAK,SAASzB,KAAKT,IAAGC,EAAC;AAIvB,YAAMoC,KAAK,CAACH,SAASH;AACrB,YAAMO,KAAKL,SAASF;AACpB,YAAMQ,MAAMF,KAAK,KAAK;AACtB,YAAMG,MAAMF,KAAK,KAAK;AACtB,WAAK,MAAM/B,IAAI,KAAK,MAAMM,SAAS,GAAG,CAAC,GAAG,CAAC;AAC3C,WAAK,MAAMN,IAAI,CAACiB,MAAKe,KAAKd,MAAKe,GAAG,GAAG,CAAC;AACtC,WAAK,MAAMjC,IAAI,KAAK,MAAMM,SAAS,IAAI,EAAE,GAAG,EAAE;AAC9C,WAAK,MAAMN,IAAI,CAACiB,MAAKe,KAAKd,MAAKe,GAAG,GAAG,EAAE;AAEvC,UAAI7B,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG;AACxB,YAAI,KAAK,KAAK8B,WAAW,GAAG;AAC1B,eAAK,MAAMlC,IAAI,CAACe,KAAKiB,KAAKhB,KAAKiB,GAAG,GAAG,CAAC;AACtC,eAAK,KAAK/B,KACRD,KACAA,KACAA,KACAA,MACCc,KAAKiB,MAAMrB,UAAUE,aACrBG,KAAKiB,MAAMrB,UAAUE,WACxB;AACA,eAAK,MAAMd,IAAI,CAACe,KAAKiB,KAAKhB,KAAKiB,GAAG,GAAG,EAAE;AACvC,eAAK,QAAQ/B,KACXD,KACAA,KACAA,KACAA,MACCc,KAAKiB,MAAMrB,UAAUE,aACrBG,KAAKiB,MAAMrB,UAAUE,WACxB;QACF;AACA,aAAK,MAAMd,IAAI,CAAC4B,IAAIC,IAAId,IAAIC,IAAIC,KAAIC,GAAE,GAAG,CAAC;AAC1C,eAAO,CAAC,KAAKf,QAAQ;MACvB;AAEA,WAAK,MAAMH,IAAI,CAAC4B,IAAIC,IAAId,IAAIC,IAAIC,KAAIC,GAAE,GAAG,CAAC;AAE1C,YAAMiB,QAAQb,KAAKc,IACjBd,KAAKe,MAAMR,KAAKb,IAAIY,KAAKb,EAAE,IAAIO,KAAKe,MAAMV,QAAQD,MAAM,CAC1D;AACA,UAAIS,QAAQb,KAAKgB,KAAK,GAAG;AAGvB,SAACvB,IAAIC,IAAIC,KAAIC,GAAE,IAAI,KAAK,MAAMZ,SAAS,GAAG,CAAC;AAC3C,aAAK,KAAKJ,KACRD,KACAA,KACAA,KACAA,OACEc,KAAKE,OAAM,IAAIN,UAAUE,cACzBG,KAAKE,OAAM,IAAIN,UAAUE,WAC7B;AACA,SAACC,IAAIC,IAAIY,IAAIC,EAAE,IAAI,KAAK,MAAMvB,SAAS,IAAI,EAAE;AAC7C,aAAK,QAAQJ,KACXD,KACAA,KACAA,KACAA,OACE2B,KAAKb,MAAM,IAAIJ,UAAUE,cACzBgB,KAAKb,MAAM,IAAIJ,UAAUE,WAC7B;AACA,eAAO;MACT;AAGA,OAACc,IAAIC,IAAId,IAAIC,IAAIC,KAAIC,GAAE,IAAI,KAAK,MAAMZ,SAAS,GAAG,CAAC;AACnD,WAAK,KAAKJ,OACN0B,KAAK,IAAIb,MAAM,IAAIJ,UAAUE,cAC7BgB,KAAK,IAAIb,MAAM,IAAIJ,UAAUE,eAC7B,IAAIC,KAAKE,OAAM,IAAIN,UAAUE,cAC7B,IAAIG,KAAKE,OAAM,IAAIN,UAAUE,eAC7BC,KAAKE,OAAM,IAAIN,UAAUE,cACzBG,KAAKE,OAAM,IAAIN,UAAUE,WAC7B;AACA,OAACG,KAAIC,KAAIH,IAAIC,IAAIY,IAAIC,EAAE,IAAI,KAAK,MAAMvB,SAAS,IAAI,EAAE;AACrD,WAAK,QAAQJ,OACT0B,KAAK,IAAIb,MAAM,IAAIJ,UAAUE,cAC7BgB,KAAK,IAAIb,MAAM,IAAIJ,UAAUE,eAC7B,IAAIC,KAAKE,OAAM,IAAIN,UAAUE,cAC7B,IAAIG,KAAKE,OAAM,IAAIN,UAAUE,eAC7BC,KAAKE,OAAM,IAAIN,UAAUE,cACzBG,KAAKE,OAAM,IAAIN,UAAUE,WAC7B;AACA,aAAO;IACT;IAEAyB,YAAY;AACV,UAAI,KAAKpC,QAAQ,GAAG;AAElB,eAAO;MACT;AACA,YAAMqC,MAAM,KAAK;AACjB,YAAMC,SAAS,KAAK;AAEpB,UAAIrC,MAAM,KAAK,MAAM,CAAC,CAAC,KAAK,CAAC,KAAKD,QAAQ,GAAG;AAE3C,eAAO,KAAK,oBAAoB;MAClC;AAEA,YAAMuC,UAAS,CAAA;AACfA,MAAAA,QAAOxC,KAAK,IAAIsC,IAAI,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,EAAE;AAClC,eAASG,KAAI,GAAGA,KAAIH,IAAIN,QAAQS,MAAK,GAAG;AACtC,YAAIvC,MAAMoC,IAAIG,EAAC,CAAC,GAAG;AACjBD,UAAAA,QAAOxC,KAAK,IAAIsC,IAAIG,KAAI,CAAC,CAAC,IAAIH,IAAIG,KAAI,CAAC,CAAC,EAAE;QAC5C,OAAO;AACLD,UAAAA,QAAOxC,KACL,IAAIsC,IAAIG,EAAC,CAAC,IAAIH,IAAIG,KAAI,CAAC,CAAC,IAAIH,IAAIG,KAAI,CAAC,CAAC,IAAIH,IAAIG,KAAI,CAAC,CAAC,IAAIH,IAAIG,KAAI,CAAC,CAAC,IAChEH,IAAIG,KAAI,CAAC,CAAC,EAEd;QACF;MACF;AAEA,WAAK,cAAcD,OAAM;AAEzB,eAASC,KAAIF,OAAOP,SAAS,GAAGS,MAAK,GAAGA,MAAK,GAAG;AAC9C,YAAIvC,MAAMqC,OAAOE,EAAC,CAAC,GAAG;AACpBD,UAAAA,QAAOxC,KAAK,IAAIuC,OAAOE,KAAI,CAAC,CAAC,IAAIF,OAAOE,KAAI,CAAC,CAAC,EAAE;QAClD,OAAO;AACLD,UAAAA,QAAOxC,KACL,IAAIuC,OAAOE,EAAC,CAAC,IAAIF,OAAOE,KAAI,CAAC,CAAC,IAAIF,OAAOE,KAAI,CAAC,CAAC,IAAIF,OAAOE,KAAI,CAAC,CAAC,IAC9DF,OAAOE,KAAI,CAAC,CAAC,IACXF,OAAOE,KAAI,CAAC,CAAC,EACnB;QACF;MACF;AAEA,WAAK,gBAAgBD,OAAM;AAE3B,aAAOA,QAAOE,KAAK,GAAG;IACxB;IAEA,sBAAsB;AACpB,YAAM,CAACnD,IAAGC,IAAGc,OAAOC,MAAM,IAAI,KAAK;AACnC,YAAM,CAACoC,UAAUC,UAAUC,aAAaC,WAAW,IACjD,KAAK,eAAe;AAEtB,aAAO,KAAK,KAAK,MAAM,CAAC,IAAIvD,MAAKe,KAAK,KACnC,KAAK,MAAM,CAAC,IAAId,MAAKe,MAAM,MACxB,KAAK,MAAM,CAAC,IAAIhB,MAAKe,KAAK,KAAK,KAAK,MAAM,CAAC,IAAId,MAAKe,MAAM,KAAKoC,QAAQ,IAAIC,QAAQ,KAAKC,WAAW,IAAIC,WAAW,MACrH,KAAK,MAAM,EAAE,IAAIvD,MAAKe,KAAK,KACzB,KAAK,MAAM,EAAE,IAAId,MAAKe,MAAM,MAAM,KAAK,MAAM,EAAE,IAAIhB,MAAKe,KAAK,KAC/D,KAAK,MAAM,EAAE,IAAId,MAAKe,MAAM;IAEjC;IAEA,gBAAgBiC,SAAQ;AACtB,YAAMD,SAAS,KAAK;AACpBC,MAAAA,QAAOxC,KAAK,IAAIuC,OAAO,CAAC,CAAC,IAAIA,OAAO,CAAC,CAAC,IAAI;IAC5C;IAEA,cAAcC,SAAQ;AACpB,YAAM,CAACjD,IAAGC,IAAGc,OAAOC,MAAM,IAAI,KAAK;AACnC,YAAMJ,UAAU,KAAK,MAAMC,SAAS,GAAG,CAAC;AACxC,YAAMC,aAAa,KAAK,MAAMD,SAAS,IAAI,EAAE;AAC7C,YAAM,CAACuC,UAAUC,UAAUC,aAAaC,WAAW,IACjD,KAAK,eAAe;AAEtBN,MAAAA,QAAOxC,KACL,KAAKG,QAAQ,CAAC,IAAIZ,MAAKe,KAAK,KAAKH,QAAQ,CAAC,IAAIX,MAAKe,MAAM,KAAKoC,QAAQ,IAAIC,QAAQ,KAAKC,WAAW,IAAIC,WAAW,MAC9GzC,WAAW,CAAC,IAAId,MAAKe,KAAK,KACxBD,WAAW,CAAC,IAAIb,MAAKe,MAAM,EAClC;IACF;IAEAwC,mBAAmBC,SAASC,QAAQxD,KAAKC,aAAaG,aAAaD,OAAO;AACxE,aAAO,IAAIsD,gBACTF,SACAC,QACAxD,KACAC,aACAG,aACAD,KACF;IACF;IAEAuD,cAAc;AACZ,YAAMb,MAAM,KAAK;AACjB,YAAMC,SAAS,KAAK;AACpB,YAAMa,OAAO,KAAK;AAClB,YAAM,CAAC3C,QAAQC,QAAQC,YAAYC,WAAW,IAAI,KAAK;AAEvD,YAAMqC,SAAS,IAAI5D,cAAc,KAAK,SAAS2C,UAAU,KAAK,CAAC;AAC/D,eAASS,KAAI,GAAGY,KAAKJ,OAAOjB,SAAS,GAAGS,KAAIY,IAAIZ,MAAK,GAAG;AACtDQ,eAAOR,EAAC,KAAK,KAAK,QAAQA,EAAC,IAAIhC,UAAUE;AACzCsC,eAAOR,KAAI,CAAC,KAAK,KAAK,QAAQA,KAAI,CAAC,IAAI/B,UAAUE;MACnD;AACAqC,aAAOA,OAAOjB,SAAS,CAAC,KAAK,KAAK,SAASvB,UAAUE;AACrDsC,aAAOA,OAAOjB,SAAS,CAAC,KAAK,KAAK,SAAStB,UAAUE;AAErD,UAAIV,MAAMkD,KAAK,CAAC,CAAC,KAAK,CAAC,KAAKnD,QAAQ,GAAG;AAErC,eAAO,KAAK,qBAAqBgD,MAAM;MACzC;AAEA,YAAMD,UAAU,IAAI3D,aAClB,KAAK,KAAK2C,SAAS,KAAK,KAAK,QAAQA,MACvC;AACA,UAAIsB,KAAIhB,IAAIN;AACZ,eAASS,KAAI,GAAGA,KAAIa,IAAGb,MAAK,GAAG;AAC7B,YAAIvC,MAAMoC,IAAIG,EAAC,CAAC,GAAG;AACjBO,kBAAQP,EAAC,IAAIO,QAAQP,KAAI,CAAC,IAAI1C;AAC9B;QACF;AACAiD,gBAAQP,EAAC,IAAIH,IAAIG,EAAC;AAClBO,gBAAQP,KAAI,CAAC,IAAIH,IAAIG,KAAI,CAAC;MAC5B;AAEAa,MAAAA,KAAI,KAAK,eAAeN,SAASM,EAAC;AAElC,eAASb,KAAIF,OAAOP,SAAS,GAAGS,MAAK,GAAGA,MAAK,GAAG;AAC9C,iBAASc,KAAI,GAAGA,KAAI,GAAGA,MAAK,GAAG;AAC7B,cAAIrD,MAAMqC,OAAOE,KAAIc,EAAC,CAAC,GAAG;AACxBP,oBAAQM,EAAC,IAAIN,QAAQM,KAAI,CAAC,IAAIvD;AAC9BuD,YAAAA,MAAK;AACL;UACF;AACAN,kBAAQM,EAAC,IAAIf,OAAOE,KAAIc,EAAC;AACzBP,kBAAQM,KAAI,CAAC,IAAIf,OAAOE,KAAIc,KAAI,CAAC;AACjCD,UAAAA,MAAK;QACP;MACF;AAEA,WAAK,iBAAiBN,SAASM,EAAC;AAEhC,aAAO,KAAKP,mBACVC,SACAC,QACA,KAAK,MACL,KAAK,cACL,KAAK,cACL,KAAK,MACP;IACF;IAEA,qBAAqBA,QAAQ;AAC3B,YAAMG,OAAO,KAAK;AAClB,YAAM,CAAC3C,QAAQC,QAAQC,YAAYC,WAAW,IAAI,KAAK;AACvD,YAAM,CAAC+B,UAAUC,UAAUC,aAAaC,WAAW,IACjD,KAAK,eAAe;AACtB,YAAME,UAAU,IAAI3D,aAAa,EAAE;AACnC2D,cAAQlD,IACN,CACEC,KACAA,KACAA,KACAA,MACCqD,KAAK,CAAC,IAAI3C,UAAUE,aACpByC,KAAK,CAAC,IAAI1C,UAAUE,aACrBb,KACAA,KACAA,KACAA,MACCqD,KAAK,CAAC,IAAI3C,UAAUE,aACpByC,KAAK,CAAC,IAAI1C,UAAUE,aACrBb,KACAA,KACAA,KACAA,KACA4C,UACAC,UACA7C,KACAA,KACAA,KACAA,KACA8C,aACAC,aACA/C,KACAA,KACAA,KACAA,MACCqD,KAAK,EAAE,IAAI3C,UAAUE,aACrByC,KAAK,EAAE,IAAI1C,UAAUE,aACtBb,KACAA,KACAA,KACAA,MACCqD,KAAK,EAAE,IAAI3C,UAAUE,aACrByC,KAAK,EAAE,IAAI1C,UAAUE,WAAW,GAEnC,CACF;AACA,aAAO,KAAKmC,mBACVC,SACAC,QACA,KAAK,MACL,KAAK,cACL,KAAK,cACL,KAAK,MACP;IACF;IAEA,iBAAiBD,SAASQ,KAAK;AAC7B,YAAMjB,SAAS,KAAK;AACpBS,cAAQlD,IAAI,CAACC,KAAKA,KAAKA,KAAKA,KAAKwC,OAAO,CAAC,GAAGA,OAAO,CAAC,CAAC,GAAGiB,GAAG;AAC3D,aAAQA,OAAO;IACjB;IAEA,eAAeR,SAASQ,KAAK;AAC3B,YAAMrD,UAAU,KAAK,MAAMC,SAAS,GAAG,CAAC;AACxC,YAAMC,aAAa,KAAK,MAAMD,SAAS,IAAI,EAAE;AAC7C,YAAM,CAACK,QAAQC,QAAQC,YAAYC,WAAW,IAAI,KAAK;AACvD,YAAM,CAAC+B,UAAUC,UAAUC,aAAaC,WAAW,IACjD,KAAK,eAAe;AACtBE,cAAQlD,IACN,CACEC,KACAA,KACAA,KACAA,MACCI,QAAQ,CAAC,IAAIM,UAAUE,aACvBR,QAAQ,CAAC,IAAIO,UAAUE,aACxBb,KACAA,KACAA,KACAA,KACA4C,UACAC,UACA7C,KACAA,KACAA,KACAA,KACA8C,aACAC,aACA/C,KACAA,KACAA,KACAA,MACCM,WAAW,CAAC,IAAII,UAAUE,aAC1BN,WAAW,CAAC,IAAIK,UAAUE,WAAW,GAExC4C,GACF;AACA,aAAQA,OAAO;IACjB;EACF;AAEA,MAAMN,kBAAN,cAA8BO,QAAQ;IACpC;IAEA,QAAQ,IAAIpE,aAAa,CAAC;IAE1B;IAEA;IAEA;IAEA;IAEA;IAEAC,YAAY0D,SAASC,QAAQxD,KAAKC,aAAaG,aAAaD,OAAO;AACjE,YAAM;AACN,WAAK,WAAWoD;AAChB,WAAK,UAAUC;AACf,WAAK,OAAOxD;AACZ,WAAK,eAAeC;AACpB,WAAK,eAAeG;AACpB,WAAK,SAASD;AACd,WAAK8D,aAAa,CAAC3D,KAAKA,GAAG;AAC3B,WAAK4D,YAAY,CAAC5D,KAAKA,GAAG;AAC1B,WAAK,eAAeH,KAAK;AAEzB,YAAM,CAACL,IAAGC,IAAGc,OAAOC,MAAM,IAAI,KAAK;AACnC,eAASkC,KAAI,GAAGY,KAAKL,QAAQhB,QAAQS,KAAIY,IAAIZ,MAAK,GAAG;AACnDO,gBAAQP,EAAC,KAAKO,QAAQP,EAAC,IAAIlD,MAAKe;AAChC0C,gBAAQP,KAAI,CAAC,KAAKO,QAAQP,KAAI,CAAC,IAAIjD,MAAKe;MAC1C;AACA,eAASkC,KAAI,GAAGY,KAAKJ,OAAOjB,QAAQS,KAAIY,IAAIZ,MAAK,GAAG;AAClDQ,eAAOR,EAAC,KAAKQ,OAAOR,EAAC,IAAIlD,MAAKe;AAC9B2C,eAAOR,KAAI,CAAC,KAAKQ,OAAOR,KAAI,CAAC,IAAIjD,MAAKe;MACxC;IACF;IAEA8B,YAAY;AACV,YAAMG,UAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,EAAE;AAC1D,eAASC,KAAI,GAAGY,KAAK,KAAK,SAASrB,QAAQS,KAAIY,IAAIZ,MAAK,GAAG;AACzD,YAAIvC,MAAM,KAAK,SAASuC,EAAC,CAAC,GAAG;AAC3BD,UAAAA,QAAOxC,KAAK,IAAI,KAAK,SAASyC,KAAI,CAAC,CAAC,IAAI,KAAK,SAASA,KAAI,CAAC,CAAC,EAAE;AAC9D;QACF;AACAD,QAAAA,QAAOxC,KACL,IAAI,KAAK,SAASyC,EAAC,CAAC,IAAI,KAAK,SAASA,KAAI,CAAC,CAAC,IAAI,KAAK,SAASA,KAAI,CAAC,CAAC,IAClE,KAAK,SAASA,KAAI,CAAC,CAAC,IAClB,KAAK,SAASA,KAAI,CAAC,CAAC,IAAI,KAAK,SAASA,KAAI,CAAC,CAAC,EAClD;MACF;AACAD,MAAAA,QAAOxC,KAAK,GAAG;AACf,aAAOwC,QAAOE,KAAK,GAAG;IACxB;IAEAkB,UAAU,CAACC,KAAKC,KAAKC,KAAKC,GAAG,GAAGC,UAAU;AACxC,YAAM3D,QAAQyD,MAAMF;AACpB,YAAMtD,SAASyD,MAAMF;AACrB,UAAId;AACJ,UAAIC;AACJ,cAAQgB,UAAQ;QACd,KAAK;AACHjB,oBAAUS,QAAQS,SAAS,KAAK,UAAUL,KAAKG,KAAK1D,OAAO,CAACC,MAAM;AAClE0C,mBAASQ,QAAQS,SAAS,KAAK,SAASL,KAAKG,KAAK1D,OAAO,CAACC,MAAM;AAChE;QACF,KAAK;AACHyC,oBAAUS,QAAQU,gBAChB,KAAK,UACLN,KACAC,KACAxD,OACAC,MACF;AACA0C,mBAASQ,QAAQU,gBAAgB,KAAK,SAASN,KAAKC,KAAKxD,OAAOC,MAAM;AACtE;QACF,KAAK;AACHyC,oBAAUS,QAAQS,SAAS,KAAK,UAAUH,KAAKD,KAAK,CAACxD,OAAOC,MAAM;AAClE0C,mBAASQ,QAAQS,SAAS,KAAK,SAASH,KAAKD,KAAK,CAACxD,OAAOC,MAAM;AAChE;QACF,KAAK;AACHyC,oBAAUS,QAAQU,gBAChB,KAAK,UACLJ,KACAC,KACA,CAAC1D,OACD,CAACC,MACH;AACA0C,mBAASQ,QAAQU,gBACf,KAAK,SACLJ,KACAC,KACA,CAAC1D,OACD,CAACC,MACH;AACA;MACJ;AACA,aAAO;QAAEyC,SAASoB,MAAMC,KAAKrB,OAAO;QAAGC,QAAQ,CAACmB,MAAMC,KAAKpB,MAAM,CAAC;MAAE;IACtE;IAEA,eAAerD,OAAO;AACpB,YAAMoD,UAAU,KAAK;AACrB,UAAIsB,QAAQtB,QAAQ,CAAC;AACrB,UAAIuB,QAAQvB,QAAQ,CAAC;AACrB,YAAMwB,SAAS,CAACF,OAAOC,OAAOD,OAAOC,KAAK;AAC1C,UAAIE,cAAcH;AAClB,UAAII,cAAcH;AAClB,UAAII,aAAaL;AACjB,UAAIM,aAAaL;AACjB,YAAMM,cAAcjF,QAAQwB,KAAK0D,MAAM1D,KAAK2D;AAC5C,YAAMC,aAAa,IAAI3F,aAAa,CAAC;AAErC,eAASoD,KAAI,GAAGY,KAAKL,QAAQhB,QAAQS,KAAIY,IAAIZ,MAAK,GAAG;AACnD,cAAMlD,KAAIyD,QAAQP,KAAI,CAAC,GACrBjD,KAAIwD,QAAQP,KAAI,CAAC;AAEnB,YAAIvC,MAAM8C,QAAQP,EAAC,CAAC,GAAG;AACrBwC,eAAKC,iBAAiB3F,IAAGC,IAAGgF,MAAM;AAElC,cAAIE,cAAclF,IAAG;AACnBiF,0BAAclF;AACdmF,0BAAclF;UAChB,WAAWkF,gBAAgBlF,IAAG;AAC5BiF,0BAAcI,YAAYJ,aAAalF,EAAC;UAC1C;AACA,cAAIqF,aAAapF,IAAG;AAClBmF,yBAAapF;AACbqF,yBAAapF;UACf,WAAWoF,eAAepF,IAAG;AAC3BmF,yBAAaE,YAAYF,YAAYpF,EAAC;UACxC;QACF,OAAO;AACLyF,qBAAW,CAAC,IAAIA,WAAW,CAAC,IAAIG;AAChCH,qBAAW,CAAC,IAAIA,WAAW,CAAC,IAAI;AAChCC,eAAKG,kBACHd,OACAC,OACA,GAAGvB,QAAQqC,MAAM5C,IAAGA,KAAI,CAAC,GACzBuC,UACF;AAEAC,eAAKK,gBACHN,WAAW,CAAC,GACZA,WAAW,CAAC,GACZA,WAAW,CAAC,GACZA,WAAW,CAAC,GACZR,MACF;AAEA,cAAIE,cAAcM,WAAW,CAAC,GAAG;AAC/BP,0BAAcO,WAAW,CAAC;AAC1BN,0BAAcM,WAAW,CAAC;UAC5B,WAAWN,gBAAgBM,WAAW,CAAC,GAAG;AACxCP,0BAAcI,YAAYJ,aAAaO,WAAW,CAAC,CAAC;UACtD;AACA,cAAIJ,aAAaI,WAAW,CAAC,GAAG;AAC9BL,yBAAaK,WAAW,CAAC;AACzBJ,yBAAaI,WAAW,CAAC;UAC3B,WAAWJ,eAAeI,WAAW,CAAC,GAAG;AACvCL,yBAAaE,YAAYF,YAAYK,WAAW,CAAC,CAAC;UACpD;QACF;AACAV,gBAAQ/E;AACRgF,gBAAQ/E;MACV;AAEA,YAAM+F,OAAO,KAAK;AAClBA,WAAK,CAAC,IAAIf,OAAO,CAAC,IAAI,KAAK;AAC3Be,WAAK,CAAC,IAAIf,OAAO,CAAC,IAAI,KAAK;AAC3Be,WAAK,CAAC,IAAIf,OAAO,CAAC,IAAIA,OAAO,CAAC,IAAI,IAAI,KAAK;AAC3Ce,WAAK,CAAC,IAAIf,OAAO,CAAC,IAAIA,OAAO,CAAC,IAAI,IAAI,KAAK;AAC3C,WAAKd,aAAa,CAACe,aAAaC,WAAW;AAC3C,WAAKf,YAAY,CAACgB,YAAYC,UAAU;IAC1C;IAEA,IAAInF,MAAM;AACR,aAAO,KAAK;IACd;IAEA+F,YAAYC,OAAOhG,KAAKC,aAAaC,WAAWC,OAAOC,cAAc,GAAG;AACtE,aAAO,IAAIT,iBACTqG,OACAhG,KACAC,aACAC,WACAC,OACAC,WACF;IACF;IAEA6F,cAAc/F,WAAWE,aAAa;AAEpC,YAAM,CAACN,IAAGC,IAAGc,OAAOC,MAAM,IAAI,KAAK;AACnC,YAAM,CAACE,QAAQC,QAAQC,YAAYC,WAAW,IAAI,KAAK;AACvD,YAAM+E,KAAKrF,QAAQK;AACnB,YAAMiF,KAAKrF,SAASK;AACpB,YAAMiF,KAAKtG,KAAIoB,aAAaF;AAC5B,YAAMqF,KAAKtG,KAAIoB,cAAcF;AAC7B,YAAMqF,WAAW,KAAKP,YACpB;QACEjG,GAAG,KAAK,QAAQ,CAAC,IAAIoG,KAAKE;QAC1BrG,GAAG,KAAK,QAAQ,CAAC,IAAIoG,KAAKE;MAC5B,GACA,KAAK,MACL,KAAK,cACLnG,WACA,KAAK,QACLE,eAAe,KAAK,YACtB;AACA,eAAS4C,KAAI,GAAGA,KAAI,KAAK,QAAQT,QAAQS,MAAK,GAAG;AAC/CsD,iBAASvF,IAAI;UACXjB,GAAG,KAAK,QAAQkD,EAAC,IAAIkD,KAAKE;UAC1BrG,GAAG,KAAK,QAAQiD,KAAI,CAAC,IAAImD,KAAKE;QAChC,CAAC;MACH;AACA,aAAOC,SAAS5C,YAAY;IAC9B;EACF;AChpBA,MAAM6C,oBAAN,MAAwB;IACtB;IAEA;IAEA;IAEA,iBAAiB,CAAA;IAEjB,aAAa,CAAA;IAcbC,YAAYC,OAAOC,cAAc,GAAGC,cAAc,GAAGC,QAAQ,MAAM;AACjE,YAAMC,SAAS,CAACC,UAAUA,UAAU,WAAW,SAAS;AAIxD,YAAMC,mBAAmB;AACzB,YAAMC,WAAU,MAAM,CAACD;AAGvB,iBAAW;QAAEE,GAAAA;QAAGC,GAAAA;QAAGC;QAAOC;MAAO,KAAKX,OAAO;AAC3C,cAAMY,KAAKC,KAAKC,OAAON,KAAIP,eAAeM,QAAO,IAAIA;AACrD,cAAMQ,MAAKF,KAAKG,MAAMR,KAAIE,QAAQT,eAAeM,QAAO,IAAIA;AAC5D,cAAMU,KAAKJ,KAAKC,OAAOL,KAAIR,eAAeM,QAAO,IAAIA;AACrD,cAAMW,MAAKL,KAAKG,MAAMP,KAAIE,SAASV,eAAeM,QAAO,IAAIA;AAC7D,cAAMY,OAAO,CAACP,IAAIK,IAAIC,KAAI,IAAI;AAC9B,cAAME,QAAQ,CAACL,KAAIE,IAAIC,KAAI,KAAK;AAChC,aAAK,eAAeG,KAAKF,MAAMC,KAAK;AAEpCE,aAAKC,gBAAgBX,IAAIK,IAAIF,KAAIG,KAAId,MAAM;MAC7C;AAEA,YAAMoB,YAAYpB,OAAO,CAAC,IAAIA,OAAO,CAAC,IAAI,IAAIF;AAC9C,YAAMuB,aAAarB,OAAO,CAAC,IAAIA,OAAO,CAAC,IAAI,IAAIF;AAC/C,YAAMwB,cAActB,OAAO,CAAC,IAAIF;AAChC,YAAMyB,cAAcvB,OAAO,CAAC,IAAIF;AAChC,UAAI0B,cAAczB,QAAQ,YAAYE;AACtC,UAAIwB,cAAcxB;AAClB,YAAMyB,WAAW,KAAK,eAAeC,GAAG5B,QAAQ,KAAK,EAAE;AACvD,YAAM6B,YAAY,CAACF,SAAS,CAAC,GAAGA,SAAS,CAAC,CAAC;AAG3C,iBAAWG,QAAQ,KAAK,gBAAgB;AACtC,cAAM,CAACzB,IAAGS,IAAIC,KAAIC,IAAI,IAAIc;AAC1B,YAAI,CAACd,QAAQhB,OAAO;AAClB,cAAIc,KAAKY,aAAa;AACpBA,0BAAcZ;AACdW,0BAAcpB;UAChB,WAAWS,OAAOY,aAAa;AAC7BD,0BAAcf,KAAKqB,IAAIN,aAAapB,EAAC;UACvC;QACF,WAAWW,QAAQ,CAAChB,OAAO;AACzB,cAAIc,KAAKY,aAAa;AACpBA,0BAAcZ;AACdW,0BAAcpB;UAChB,WAAWS,OAAOY,aAAa;AAC7BD,0BAAcf,KAAKsB,IAAIP,aAAapB,EAAC;UACvC;QACF;AAEAyB,aAAK,CAAC,KAAKzB,KAAIkB,eAAeF;AAC9BS,aAAK,CAAC,KAAKhB,KAAKU,eAAeF;AAC/BQ,aAAK,CAAC,KAAKf,MAAKS,eAAeF;MACjC;AAEA,WAAK,OAAO,IAAIW,aAAa,CAC3BV,aACAC,aACAH,WACAC,UAAU,CACX;AACD,WAAK,cAAc,CAACG,aAAaC,WAAW;AAC5C,WAAK,aAAaG;IACpB;IAEAK,cAAc;AAGZ,WAAK,eAAeC,KAClB,CAACC,IAAGC,OAAMD,GAAE,CAAC,IAAIC,GAAE,CAAC,KAAKD,GAAE,CAAC,IAAIC,GAAE,CAAC,KAAKD,GAAE,CAAC,IAAIC,GAAE,CAAC,CACpD;AAUA,YAAMC,uBAAuB,CAAA;AAC7B,iBAAWR,QAAQ,KAAK,gBAAgB;AACtC,YAAIA,KAAK,CAAC,GAAG;AAEXQ,+BAAqBpB,KAAK,GAAG,KAAK,WAAWY,IAAI,CAAC;AAClD,eAAK,QAAQA,IAAI;QACnB,OAAO;AAEL,eAAK,QAAQA,IAAI;AACjBQ,+BAAqBpB,KAAK,GAAG,KAAK,WAAWY,IAAI,CAAC;QACpD;MACF;AACA,aAAO,KAAK,aAAaQ,oBAAoB;IAC/C;IAEA,aAAaA,sBAAsB;AACjC,YAAMC,QAAQ,CAAA;AACd,YAAMC,WAAW,oBAAIC,IAAI;AAEzB,iBAAWX,QAAQQ,sBAAsB;AACvC,cAAM,CAACjC,IAAGS,IAAIC,GAAE,IAAIe;AACpBS,cAAMrB,KAAK,CAACb,IAAGS,IAAIgB,IAAI,GAAG,CAACzB,IAAGU,KAAIe,IAAI,CAAC;MACzC;AAOAS,YAAMJ,KAAK,CAACC,IAAGC,OAAMD,GAAE,CAAC,IAAIC,GAAE,CAAC,KAAKD,GAAE,CAAC,IAAIC,GAAE,CAAC,CAAC;AAC/C,eAASK,KAAI,GAAGC,KAAKJ,MAAMK,QAAQF,KAAIC,IAAID,MAAK,GAAG;AACjD,cAAMG,QAAQN,MAAMG,EAAC,EAAE,CAAC;AACxB,cAAMI,QAAQP,MAAMG,KAAI,CAAC,EAAE,CAAC;AAC5BG,cAAM3B,KAAK4B,KAAK;AAChBA,cAAM5B,KAAK2B,KAAK;AAChBL,iBAASO,IAAIF,KAAK;AAClBL,iBAASO,IAAID,KAAK;MACpB;AACA,YAAME,WAAW,CAAA;AACjB,UAAIC;AAEJ,aAAOT,SAASU,OAAO,GAAG;AACxB,cAAMpB,OAAOU,SAASW,OAAO,EAAEC,KAAK,EAAEC;AACtC,YAAI,CAAChD,IAAGS,IAAIC,KAAI8B,OAAOC,KAAK,IAAIhB;AAChCU,iBAASc,OAAOxB,IAAI;AACpB,YAAIyB,aAAalD;AACjB,YAAImD,aAAa1C;AAEjBmC,kBAAU,CAAC5C,IAAGU,GAAE;AAChBiC,iBAAS9B,KAAK+B,OAAO;AAErB,eAAO,MAAM;AACX,cAAIQ;AACJ,cAAIjB,SAASkB,IAAIb,KAAK,GAAG;AACvBY,YAAAA,KAAIZ;UACN,WAAWL,SAASkB,IAAIZ,KAAK,GAAG;AAC9BW,YAAAA,KAAIX;UACN,OAAO;AACL;UACF;AAEAN,mBAASc,OAAOG,EAAC;AACjB,WAACpD,IAAGS,IAAIC,KAAI8B,OAAOC,KAAK,IAAIW;AAE5B,cAAIF,eAAelD,IAAG;AACpB4C,oBAAQ/B,KAAKqC,YAAYC,YAAYnD,IAAGmD,eAAe1C,KAAKA,KAAKC,GAAE;AACnEwC,yBAAalD;UACf;AACAmD,uBAAaA,eAAe1C,KAAKC,MAAKD;QACxC;AACAmC,gBAAQ/B,KAAKqC,YAAYC,UAAU;MACrC;AACA,aAAO,IAAIG,iBACTX,UACA,KAAK,MACL,KAAK,aACL,KAAK,UACP;IACF;IAEA,cAAc1C,IAAG;AACf,YAAMsD,QAAQ,KAAK;AACnB,UAAIC,SAAQ;AACZ,UAAIC,MAAMF,MAAMhB,SAAS;AAEzB,aAAOiB,UAASC,KAAK;AACnB,cAAMC,SAAUF,SAAQC,OAAQ;AAChC,cAAMhD,KAAK8C,MAAMG,MAAM,EAAE,CAAC;AAC1B,YAAIjD,OAAOR,IAAG;AACZ,iBAAOyD;QACT;AACA,YAAIjD,KAAKR,IAAG;AACVuD,UAAAA,SAAQE,SAAS;QACnB,OAAO;AACLD,gBAAMC,SAAS;QACjB;MACF;AACA,aAAOD,MAAM;IACf;IAEA,QAAQ,CAAA,EAAGhD,IAAIC,GAAE,GAAG;AAClB,YAAMiD,SAAQ,KAAK,cAAclD,EAAE;AACnC,WAAK,WAAWmD,OAAOD,QAAO,GAAG,CAAClD,IAAIC,GAAE,CAAC;IAC3C;IAEA,QAAQ,CAAA,EAAGD,IAAIC,GAAE,GAAG;AAClB,YAAMiD,SAAQ,KAAK,cAAclD,EAAE;AACnC,eAAS4B,KAAIsB,QAAOtB,KAAI,KAAK,WAAWE,QAAQF,MAAK;AACnD,cAAM,CAACmB,QAAOC,GAAG,IAAI,KAAK,WAAWpB,EAAC;AACtC,YAAImB,WAAU/C,IAAI;AAChB;QACF;AACA,YAAI+C,WAAU/C,MAAMgD,QAAQ/C,KAAI;AAC9B,eAAK,WAAWkD,OAAOvB,IAAG,CAAC;AAC3B;QACF;MACF;AACA,eAASA,KAAIsB,SAAQ,GAAGtB,MAAK,GAAGA,MAAK;AACnC,cAAM,CAACmB,QAAOC,GAAG,IAAI,KAAK,WAAWpB,EAAC;AACtC,YAAImB,WAAU/C,IAAI;AAChB;QACF;AACA,YAAI+C,WAAU/C,MAAMgD,QAAQ/C,KAAI;AAC9B,eAAK,WAAWkD,OAAOvB,IAAG,CAAC;AAC3B;QACF;MACF;IACF;IAEA,WAAWZ,MAAM;AACf,YAAM,CAACzB,IAAGS,IAAIC,GAAE,IAAIe;AACpB,YAAMoC,UAAU,CAAC,CAAC7D,IAAGS,IAAIC,GAAE,CAAC;AAC5B,YAAMiD,SAAQ,KAAK,cAAcjD,GAAE;AACnC,eAAS2B,KAAI,GAAGA,KAAIsB,QAAOtB,MAAK;AAC9B,cAAM,CAACmB,QAAOC,GAAG,IAAI,KAAK,WAAWpB,EAAC;AACtC,iBAASyB,KAAI,GAAGC,KAAKF,QAAQtB,QAAQuB,KAAIC,IAAID,MAAK;AAChD,gBAAM,CAAA,EAAGE,KAAIC,GAAE,IAAIJ,QAAQC,EAAC;AAC5B,cAAIL,OAAOO,OAAMC,OAAMT,QAAO;AAG5B;UACF;AACA,cAAIQ,OAAMR,QAAO;AACf,gBAAIS,MAAKR,KAAK;AACZI,sBAAQC,EAAC,EAAE,CAAC,IAAIL;YAClB,OAAO;AACL,kBAAIM,OAAO,GAAG;AACZ,uBAAO,CAAA;cACT;AAEAF,sBAAQD,OAAOE,IAAG,CAAC;AACnBA,cAAAA;AACAC;YACF;AACA;UACF;AACAF,kBAAQC,EAAC,EAAE,CAAC,IAAIN;AAChB,cAAIS,MAAKR,KAAK;AACZI,oBAAQhD,KAAK,CAACb,IAAGyD,KAAKQ,GAAE,CAAC;UAC3B;QACF;MACF;AACA,aAAOJ;IACT;EACF;AAEA,MAAMP,mBAAN,cAA+BY,QAAQ;IACrC;IAEA;IAEA3E,YAAYoD,UAAUwB,KAAKC,YAAY5C,WAAW;AAChD,YAAM;AACN,WAAK,YAAYmB;AACjB,WAAK,OAAOwB;AACZ,WAAKC,aAAaA;AAClB,WAAK5C,YAAYA;IACnB;IAEA6C,YAAY;AACV,YAAMC,UAAS,CAAA;AACf,iBAAWC,WAAW,KAAK,WAAW;AACpC,YAAI,CAACC,OAAOC,KAAK,IAAIF;AACrBD,QAAAA,QAAOzD,KAAK,IAAI2D,KAAK,IAAIC,KAAK,EAAE;AAChC,iBAASpC,KAAI,GAAGA,KAAIkC,QAAQhC,QAAQF,MAAK,GAAG;AAC1C,gBAAMrC,KAAIuE,QAAQlC,EAAC;AACnB,gBAAMpC,KAAIsE,QAAQlC,KAAI,CAAC;AACvB,cAAIrC,OAAMwE,OAAO;AACfF,YAAAA,QAAOzD,KAAK,IAAIZ,EAAC,EAAE;AACnBwE,oBAAQxE;UACV,WAAWA,OAAMwE,OAAO;AACtBH,YAAAA,QAAOzD,KAAK,IAAIb,EAAC,EAAE;AACnBwE,oBAAQxE;UACV;QACF;AACAsE,QAAAA,QAAOzD,KAAK,GAAG;MACjB;AACA,aAAOyD,QAAOI,KAAK,GAAG;IACxB;IAQAC,UAAU,CAACC,KAAKC,KAAKC,KAAKC,GAAG,GAAGC,WAAW;AACzC,YAAMrC,WAAW,CAAA;AACjB,YAAMzC,QAAQ4E,MAAMF;AACpB,YAAMzE,SAAS4E,MAAMF;AACrB,iBAAWjC,WAAW,KAAK,WAAW;AACpC,cAAMqC,SAAS,IAAIC,MAAMtC,QAAQL,MAAM;AACvC,iBAASF,KAAI,GAAGA,KAAIO,QAAQL,QAAQF,MAAK,GAAG;AAC1C4C,iBAAO5C,EAAC,IAAIuC,MAAMhC,QAAQP,EAAC,IAAInC;AAC/B+E,iBAAO5C,KAAI,CAAC,IAAI0C,MAAMnC,QAAQP,KAAI,CAAC,IAAIlC;QACzC;AACAwC,iBAAS9B,KAAKoE,MAAM;MACtB;AACA,aAAOtC;IACT;IAEA,IAAIwB,MAAM;AACR,aAAO,KAAK;IACd;IAEA,IAAIgB,yBAAyB;AAC3B,aAAO,CAAC,kBAAkB;IAC5B;EACF;AAEA,MAAMC,wBAAN,cAAoCC,iBAAiB;IACnDC,mBAAmB1C,SAASqC,QAAQd,KAAKoB,aAAa7F,aAAaC,OAAO;AACxE,aAAO,IAAI6F,qBACT5C,SACAqC,QACAd,KACAoB,aACA7F,aACAC,KACF;IACF;EACF;AAEA,MAAM6F,uBAAN,cAAmCC,gBAAgB;IACjDC,YAAYC,OAAOxB,KAAKoB,aAAaK,WAAWjG,OAAOD,cAAc,GAAG;AACtE,aAAO,IAAI0F,sBACTO,OACAxB,KACAoB,aACAK,WACAjG,OACAD,WACF;IACF;EACF;AClVA,MAAMmG,kBAAN,MAAMA,yBAAwBC,iBAAiB;IAC7C,cAAc;IAEd,gBAAgB;IAEhB;IAEA,cAAc;IAEd,eAAe;IAEf,iBAAiB;IAEjB,aAAa;IAEb,eAAe;IAEf,gBAAgB;IAEhB,qBAAqB;IAErB,MAAM;IAEN,mBAAmB;IAEnB,cAAc;IAEd,aAAa;IAEb,aAAa;IAEb,QAAQ;IAER;IAEA,oBAAoB;IAEpB,OAAOC,gBAAgB;IAEvB,OAAOC,kBAAkB;IAEzB,OAAOC,oBAAoB;IAE3B,OAAOC,QAAQ;IAEf,OAAOC,cAAcC,qBAAqBC;IAE1C,OAAOC,mBAAmB;IAE1B,OAAOC,iBAAiB;IAExB,OAAOC,uBAAuB;IAE9B,WAAWC,mBAAmB;AAC5B,YAAMC,QAAQb,iBAAgBc;AAC9B,aAAOC,OACL,MACA,oBACA,IAAIC,gBAAgB,CAClB,CAAC,CAAC,aAAa,eAAe,GAAGH,MAAMI,YAAY;QAAEC,MAAM,CAAC,CAAC;MAAE,CAAC,GAChE,CAAC,CAAC,cAAc,gBAAgB,GAAGL,MAAMI,YAAY;QAAEC,MAAM,CAAC,CAAC;MAAE,CAAC,GAClE,CAAC,CAAC,WAAW,aAAa,GAAGL,MAAMI,YAAY;QAAEC,MAAM,CAAC,CAAC;MAAE,CAAC,GAC5D,CAAC,CAAC,aAAa,eAAe,GAAGL,MAAMI,YAAY;QAAEC,MAAM,CAAC,CAAC;MAAE,CAAC,CAAC,CAClE,CACH;IACF;IAEAC,YAAYC,QAAQ;AAClB,YAAM;QAAE,GAAGA;QAAQC,MAAM;MAAkB,CAAC;AAC5C,WAAKC,QAAQF,OAAOE,SAAStB,iBAAgBE;AAC7C,WAAK,aAAakB,OAAOG,aAAavB,iBAAgBI;AACtD,WAAKoB,UAAUJ,OAAOI,WAAWxB,iBAAgBG;AACjD,WAAK,SAASiB,OAAOK,SAAS;AAC9B,WAAK,oBAAoBL,OAAOM,oBAAoB;AACpD,WAAK,QAAQN,OAAOO,QAAQ;AAC5B,WAAKC,eAAe;AACpB,WAAKC,gBAAgB;AAErB,UAAIT,OAAOU,cAAc,IAAI;AAC3B,aAAK,mBAAmB;AACxB,aAAK,oBAAoBV,MAAM;AAC/B,aAAK,gBAAgB;MACvB,WAAW,KAAK,QAAQ;AACtB,aAAK,cAAcA,OAAOW;AAC1B,aAAK,gBAAgBX,OAAOY;AAC5B,aAAK,aAAaZ,OAAOa;AACzB,aAAK,eAAeb,OAAOc;AAC3B,aAAK,gBAAgB;AACrB,aAAK,gBAAgB;AACrB,aAAKC,OAAO,KAAKC,QAAQ;MAC3B;AAEA,UAAI,CAAC,KAAKC,qBAAqB;AAC7B,aAAKC,WAAWC,UAAU,oCAAoC;MAChE;IACF;IAGA,IAAIC,uBAAuB;AACzB,aAAO;QACLC,QAAQ;QACRC,MAAM,KAAK,mBAAmB,mBAAmB;QACjDpB,OAAO,KAAKgB,WAAWK,mBAAmB,KAAKrB,KAAK;QACpDC,WAAW,KAAK;QAChBG,kBAAkB,KAAK;MACzB;IACF;IAGA,IAAIkB,qBAAqB;AACvB,aAAO;QACLF,MAAM;QACNpB,OAAO,KAAKgB,WAAWK,mBAAmB,KAAKrB,KAAK;MACtD;IACF;IAEA,OAAOuB,0BAA0BC,MAAM;AAErC,aAAO;QAAEC,gBAAgBD,KAAKE,IAAI,OAAO,EAAEC;MAAK;IAClD;IAEA,kBAAkB;AAChB,YAAMC,WAAW,IAAIC,kBACnB,KAAK,QACe,IACtB;AACA,WAAK,qBAAqBD,SAASE,YAAY;AAC/C,OAAC,KAAKC,GAAG,KAAKC,GAAG,KAAKC,OAAO,KAAKC,MAAM,IAAI,KAAK,mBAAmBC;AAEpE,YAAMC,qBAAqB,IAAIP,kBAC7B,KAAK,QACe,OACA,MACpB,KAAKb,WAAWqB,cAAc,KAChC;AACA,WAAK,iBAAiBD,mBAAmBN,YAAY;AAErD,YAAM;QAAEQ;MAAW,IAAI,KAAK;AAC5B,WAAK,cAAc,EAChBA,WAAW,CAAC,IAAI,KAAKP,KAAK,KAAKE,QAC/BK,WAAW,CAAC,IAAI,KAAKN,KAAK,KAAKE,MAAM;AAGxC,YAAM;QAAEK;MAAU,IAAI,KAAK;AAC3B,WAAK,aAAa,EACfA,UAAU,CAAC,IAAI,KAAKR,KAAK,KAAKE,QAC9BM,UAAU,CAAC,IAAI,KAAKP,KAAK,KAAKE,MAAM;IAEzC;IAEA,oBAAoB;MAAEM;MAAmBhC;MAAaiC;IAAW,GAAG;AAClE,WAAK,qBAAqBD;AAC1B,YAAME,iBAAiB;AACvB,WAAK,iBAAiBF,kBAAkBG,cAGtC,KAAK,aAAa,IAAID,gBACF,KACtB;AAEA,UAAIlC,eAAe,GAAG;AACpB,aAAK,MAAMA;AACX,aAAK,cAAciC;AAGnB,aAAKG,OAAOC,UAAUC,aAAatC,aAAa;UAC9CuC,MAAMP,kBAAkBL;UACxBa,MAAM;YACJC,GAAGT,kBAAkBU,UAAU;UACjC;QACF,CAAC;AACD,aAAK,aAAa,KAAKN,OAAOC,UAAUM,YACtC;UACEC,WAAW;YACTC,kBAAkB;YAClBC,MAAM;UACR;UACAP,MAAM,KAAK,eAAeZ;UAC1Ba,MAAM;YACJC,GAAG,KAAK,eAAeC,UAAU;UACnC;QACF,GACoC,IACtC;MACF,WAAW,KAAKN,QAAQ;AACtB,cAAMW,QAAQ,KAAKX,OAAOY,SAAS1C;AACnC,aAAK8B,OAAOC,UAAUY,iBAAiB,KAAK,KAAK;UAC/CV,MAAMrE,iBAAgB,YACpB,KAAK,mBAAmByD,MACvBoB,QAAQ,KAAKzC,WAAW,OAAO,GAClC;UACAkC,MAAM;YACJC,GAAGT,kBAAkBU,UAAU;UACjC;QACF,CAAC;AACD,aAAKN,OAAOC,UAAUY,iBAAiB,KAAK,YAAY;UACtDV,MAAMrE,iBAAgB,YAAY,KAAK,eAAeyD,KAAKoB,KAAK;UAChEP,MAAM;YACJC,GAAG,KAAK,eAAeC,UAAU;UACnC;QACF,CAAC;MACH;AACA,YAAM,CAACnB,IAAGC,IAAGC,OAAOC,MAAM,IAAIM,kBAAkBL;AAChD,cAAQ,KAAKrB,UAAQ;QACnB,KAAK;AACH,eAAKiB,IAAIA;AACT,eAAKC,IAAIA;AACT,eAAKC,QAAQA;AACb,eAAKC,SAASA;AACd;QACF,KAAK,IAAI;AACP,gBAAM,CAACwB,WAAWC,UAAU,IAAI,KAAKC;AACrC,eAAK7B,IAAIC;AACT,eAAKA,IAAI,IAAID;AACb,eAAKE,QAASA,QAAQ0B,aAAcD;AACpC,eAAKxB,SAAUA,SAASwB,YAAaC;AACrC;QACF;QACA,KAAK;AACH,eAAK5B,IAAI,IAAIA;AACb,eAAKC,IAAI,IAAIA;AACb,eAAKC,QAAQA;AACb,eAAKC,SAASA;AACd;QACF,KAAK,KAAK;AACR,gBAAM,CAACwB,WAAWC,UAAU,IAAI,KAAKC;AACrC,eAAK7B,IAAI,IAAIC;AACb,eAAKA,IAAID;AACT,eAAKE,QAASA,QAAQ0B,aAAcD;AACpC,eAAKxB,SAAUA,SAASwB,YAAaC;AACrC;QACF;MACF;AAEA,YAAM;QAAErB;MAAW,IAAIE;AACvB,WAAK,cAAc,EAChBF,WAAW,CAAC,IAAIP,MAAKE,QACrBK,WAAW,CAAC,IAAIN,MAAKE,MAAM;AAE9B,YAAM;QAAEK;MAAU,IAAI,KAAK;AAC3B,WAAK,aAAa,EAAEA,UAAU,CAAC,IAAIR,MAAKE,QAAQM,UAAU,CAAC,IAAIP,MAAKE,MAAM;IAC5E;IAGA,OAAO2B,WAAWC,MAAMC,WAAW;AACjCpF,uBAAiBkF,WAAWC,MAAMC,SAAS;AAC3CrF,uBAAgBE,kBACdmF,UAAUC,iBAAiBC,OAAO,EAAEC,KAAK,EAAEC,SAAS;IACxD;IAGA,OAAOC,oBAAoBhD,MAAM+C,OAAO;AACtC,cAAQ/C,MAAI;QACV,KAAKiD,2BAA2BC;AAC9B5F,2BAAgBE,gBAAgBuF;AAChC;QACF,KAAKE,2BAA2BE;AAC9B7F,2BAAgBI,oBAAoBqF;AACpC;MACJ;IACF;IAGAK,gBAAgBzC,IAAGC,IAAG;IAAC;IAGvB,IAAIyC,kBAAkB;AACpB,aAAO,KAAK;IACd;IAGA,IAAIC,wBAAwB;AAC1B,aAAO,KAAK;IACd;IAGAC,aAAavD,MAAM+C,OAAO;AACxB,cAAQ/C,MAAI;QACV,KAAKiD,2BAA2BC;AAC9B,eAAK,aAAaH,KAAK;AACvB;QACF,KAAKE,2BAA2BE;AAC9B,eAAK,iBAAiBJ,KAAK;AAC3B;MACJ;IACF;IAEA,WAAWS,4BAA4B;AACrC,aAAO,CACL,CACEP,2BAA2BC,iBAC3B5F,iBAAgBE,aAAa,GAE/B,CACEyF,2BAA2BE,qBAC3B7F,iBAAgBI,iBAAiB,CAClC;IAEL;IAGA,IAAI+F,qBAAqB;AACvB,aAAO,CACL,CACER,2BAA2BC,iBAC3B,KAAKtE,SAAStB,iBAAgBE,aAAa,GAE7C,CACEyF,2BAA2BE,qBAC3B,KAAK,cAAc7F,iBAAgBI,iBAAiB,GAEtD,CAACuF,2BAA2BS,gBAAgB,KAAK,gBAAgB,CAAC;IAEtE;IAGAC,iBAAiB;AACf,WAAKnC,QAAQC,UAAUY,iBAAiB,KAAK,KAAK;QAChDuB,MAAM;UACJC,MAAM,KAAKjF;UACX,gBAAgB,KAAKE;QACvB;MACF,CAAC;AACD,WAAK,cAAcgF,YAAY,KAAKlF,KAAK;AACzC,YAAM+E,eAAe;IACvB;IAMA,aAAa/E,QAAO;AAClB,YAAMmF,qBAAqBA,CAACC,KAAKC,QAAQ;AACvC,aAAKrF,QAAQoF;AACb,aAAKlF,UAAUmF;AACf,aAAKN,eAAe;MACtB;AACA,YAAMO,aAAa,KAAKtF;AACxB,YAAMuF,eAAe,KAAKrF;AAC1B,WAAKsF,YAAY;QACfC,KAAKN,mBAAmBO,KACtB,MACA1F,QACAtB,iBAAgBG,eAClB;QACA8G,MAAMR,mBAAmBO,KAAK,MAAMJ,YAAYC,YAAY;QAC5DK,MAAM,KAAK5E,WAAW6E,SAASH,KAAK,KAAK1E,YAAY,IAAI;QACzD8E,UAAU;QACV1E,MAAMiD,2BAA2BC;QACjCyB,qBAAqB;QACrBC,UAAU;MACZ,CAAC;AAED,WAAKC,iBACH;QACE9E,QAAQ;QACRnB,OAAO,KAAKgB,WAAWK,mBAAmBrB,MAAK;MACjD,GACiB,IACnB;IACF;IAMA,iBAAiBC,WAAW;AAC1B,YAAMiG,iBAAiB,KAAK;AAC5B,YAAMC,eAAeC,QAAM;AACzB,aAAK,aAAaA;AAClB,aAAK,iBAAiBA,EAAE;MAC1B;AACA,WAAKZ,YAAY;QACfC,KAAKU,aAAaT,KAAK,MAAMzF,SAAS;QACtC0F,MAAMQ,aAAaT,KAAK,MAAMQ,cAAc;QAC5CN,MAAM,KAAK5E,WAAW6E,SAASH,KAAK,KAAK1E,YAAY,IAAI;QACzD8E,UAAU;QACV1E,MAAMiD,2BAA2BgC;QACjCN,qBAAqB;QACrBC,UAAU;MACZ,CAAC;AACD,WAAKC,iBACH;QAAE9E,QAAQ;QAAqBlB;MAAU,GACxB,IACnB;IACF;IAGA,IAAIqG,iBAAiB;AACnB,UAAI,KAAKtF,WAAWgD,iBAAiB;AACnC,cAAMuC,cAAe,KAAK,eAAe,IAAIC,YAAY;UACvDC,QAAQ;QACV,CAAC;AACD,eAAO,CAAC,CAAC,eAAeF,WAAW,CAAC;MACtC;AACA,aAAO,MAAMD;IACf;IAGAI,iBAAiB;AACf,YAAMA,eAAe;AACrB,WAAKC,IAAIC,UAAUC,OAAO,YAAY,IAAI;IAC5C;IAGAC,gBAAgB;AACd,YAAMA,cAAc;AACpB,WAAKH,IAAIC,UAAUC,OAAO,YAAY,KAAK;IAC7C;IAGAE,oBAAoB;AAClB,aAAO,MAAMA,kBAAkB,KAAK,aAAa,CAAC;IACpD;IAGAC,qBAAqB;AAGnB,aAAO,CAAC,GAAG,CAAC;IACd;IAGAC,QAAQC,IAAIC,IAAI;AACd,aAAO,MAAMF,QAAQC,IAAIC,IAAI,KAAK,aAAa,CAAC;IAClD;IAGAC,UAAUC,OAAO;AACf,UAAI,CAAC,KAAKtG,qBAAqB;AAC7B,aAAK6B,OAAO0E,kBAAkB,IAAI;MACpC;AACA,UAAID,OAAO;AACT,aAAKV,IAAIU,MAAM;MACjB;IACF;IAGAE,SAAS;AACP,WAAK,gBAAgB;AACrB,WAAKtB,iBAAiB;QACpB9E,QAAQ;MACV,CAAC;AACD,YAAMoG,OAAO;IACf;IAGAC,UAAU;AACR,UAAI,CAAC,KAAK5E,QAAQ;AAChB;MACF;AACA,YAAM4E,QAAQ;AACd,UAAI,KAAKb,QAAQ,MAAM;AACrB;MACF;AAEA,WAAK,gBAAgB;AAErB,UAAI,CAAC,KAAKc,iBAAiB;AAGzB,aAAK7E,OAAO8E,IAAI,IAAI;MACtB;IACF;IAEAC,UAAU/E,QAAQ;AAChB,UAAIgF,iBAAiB;AACrB,UAAI,KAAKhF,UAAU,CAACA,QAAQ;AAC1B,aAAK,gBAAgB;MACvB,WAAWA,QAAQ;AACjB,aAAK,gBAAgBA,MAAM;AAG3BgF,yBACE,CAAC,KAAKhF,UAAU,KAAK+D,KAAKC,UAAUiB,SAAS,gBAAgB;MACjE;AACA,YAAMF,UAAU/E,MAAM;AACtB,WAAKkF,KAAK,KAAKC,UAAU;AACzB,UAAIH,gBAAgB;AAElB,aAAKI,OAAO;MACd;IACF;IAEA,iBAAiB/H,WAAW;AAC1B,UAAI,CAAC,KAAK,kBAAkB;AAC1B;MACF;AACA,WAAK,oBAAoB;QACvBuC,mBAAmB,KAAK,mBAAmBG,cAAc1C,YAAY,CAAC;MACxE,CAAC;AACD,WAAK8G,kBAAkB;AACvB,WAAKkB,QAAQ;IACf;IAEA,kBAAkB;AAChB,UAAI,KAAK,QAAQ,QAAQ,CAAC,KAAKrF,QAAQ;AACrC;MACF;AACA,WAAKA,OAAOC,UAAU0E,OAAO,KAAK,GAAG;AACrC,WAAK,MAAM;AACX,WAAK3E,OAAOC,UAAU0E,OAAO,KAAK,UAAU;AAC5C,WAAK,aAAa;IACpB;IAEA,gBAAgB3E,SAAS,KAAKA,QAAQ;AACpC,UAAI,KAAK,QAAQ,MAAM;AACrB;MACF;AACA,OAAC;QAAEsF,IAAI,KAAK;QAAKzF,YAAY,KAAK;MAAY,IAAIG,OAAOC,UAAUsF,KACjE;QACEpF,MAAM,KAAK,mBAAmBZ;QAC9B6C,MAAM;UACJoD,SAAS;UACTnD,MAAM,KAAKjF;UACX,gBAAgB,KAAKE;QACvB;QACAkD,WAAW;UACTiF,WAAW;UACX/E,MAAM,KAAK;QACb;QACAN,MAAM;UACJC,GAAG,KAAK,mBAAmBC,UAAU;QACvC;MACF,GACwB,OACR,IAClB;AACA,WAAK,aAAaN,OAAOC,UAAUM,YACjC;QACEC,WAAW;UACTC,kBAAkB;UAClBC,MAAM,KAAK;QACb;QACAP,MAAM,KAAK,eAAeZ;QAC1Ba,MAAM;UACJC,GAAG,KAAK,eAAeC,UAAU;QACnC;MACF,GACoC,KAAK,gBAC3C;AAEA,UAAI,KAAK,eAAe;AACtB,aAAK,cAAcoF,MAAMC,WAAW,KAAK;MAC3C;IACF;IAEA,OAAO,YAAY,CAACxG,IAAGC,IAAGC,OAAOC,MAAM,GAAGqB,OAAO;AAC/C,cAAQA,OAAK;QACX,KAAK;AACH,iBAAO,CAAC,IAAIvB,KAAIE,QAAQH,IAAGG,QAAQD,KAAK;QAC1C,KAAK;AACH,iBAAO,CAAC,IAAIF,KAAIE,OAAO,IAAID,KAAIE,QAAQD,OAAOC,MAAM;QACtD,KAAK;AACH,iBAAO,CAACF,IAAG,IAAID,KAAIE,OAAOC,QAAQD,KAAK;MAC3C;AACA,aAAO,CAACF,IAAGC,IAAGC,OAAOC,MAAM;IAC7B;IAGArB,OAAO0C,OAAO;AAEZ,YAAM;QAAEV;MAAU,IAAI,KAAKD;AAC3B,UAAIT;AACJ,UAAI,KAAK,kBAAkB;AACzBoB,iBAASA,QAAQ,KAAKzC,WAAW,OAAO;AACxCqB,cAAMzD,iBAAgB,YAAY,KAAK,mBAAmByD,KAAKoB,KAAK;MACtE,OAAO;AAELpB,cAAMzD,iBAAgB,YACpB,CAAC,KAAKqD,GAAG,KAAKC,GAAG,KAAKC,OAAO,KAAKC,MAAM,GACxCqB,KACF;MACF;AACAV,gBAAUY,iBAAiB,KAAK,KAAK;QACnCV,MAAMZ;QACN6C,MAAM;UACJ,sBAAsBzB;QACxB;MACF,CAAC;AACDV,gBAAUY,iBAAiB,KAAK,YAAY;QAC1CV,MAAMrE,iBAAgB,YAAY,KAAK,eAAeyD,KAAKoB,KAAK;QAChEyB,MAAM;UACJ,sBAAsBzB;QACxB;MACF,CAAC;IACH;IAGAiF,SAAS;AACP,UAAI,KAAK7B,KAAK;AACZ,eAAO,KAAKA;MACd;AAEA,YAAMA,MAAM,MAAM6B,OAAO;AACzB,UAAI,KAAK,OAAO;AACd7B,YAAI8B,aAAa,cAAc,KAAK,KAAK;AACzC9B,YAAI8B,aAAa,QAAQ,MAAM;MACjC;AACA,UAAI,KAAK,kBAAkB;AACzB9B,YAAIC,UAAUc,IAAI,MAAM;MAC1B,OAAO;AACL,aAAKf,IAAI+B,iBAAiB,WAAW,KAAK,SAAShD,KAAK,IAAI,GAAG;UAC7DiD,QAAQ,KAAK3H,WAAW4H;QAC1B,CAAC;MACH;AACA,YAAMC,eAAgB,KAAK,gBAAgBC,SAASC,cAAc,KAAK;AACvEpC,UAAIqC,OAAOH,YAAY;AACvBA,mBAAaJ,aAAa,eAAe,MAAM;AAC/CI,mBAAaI,YAAY;AACzBJ,mBAAaP,MAAMC,WAAW,KAAK;AACnC,WAAKN,QAAQ;AAEbiB,iBAAW,MAAM,KAAK,eAAe,CAAC,eAAe,cAAc,CAAC;AACpE,WAAKpC,cAAc;AAEnB,aAAOH;IACT;IAEAwC,cAAc;AACZ,UAAI,CAAC,KAAKC,YAAY;AACpB,aAAKxG,QAAQC,UAAUY,iBAAiB,KAAK,YAAY;UACvDL,WAAW;YACTiG,SAAS;UACX;QACF,CAAC;MACH;IACF;IAEAC,eAAe;AACb,UAAI,CAAC,KAAKF,YAAY;AACpB,aAAKxG,QAAQC,UAAUY,iBAAiB,KAAK,YAAY;UACvDL,WAAW;YACTiG,SAAS;UACX;QACF,CAAC;MACH;IACF;IAEA,SAASE,QAAO;AACd7K,uBAAgBY,iBAAiBkK,KAAK,MAAMD,MAAK;IACnD;IAEA5J,WAAW0C,WAAW;AACpB,WAAKO,OAAO6G,SAAS,IAAI;AACzB,cAAQpH,WAAS;QACf,KAAK;QACL,KAAK;AACH,eAAK,UAAwB,IAAI;AACjC;QACF,KAAK;QACL,KAAK;AACH,eAAK,UAAwB,KAAK;AAClC;MACJ;IACF;IAEA,UAAUqH,QAAO;AACf,UAAI,CAAC,KAAK,aAAa;AACrB;MACF;AACA,YAAMC,YAAYC,OAAOC,aAAa;AACtC,UAAIH,QAAO;AACTC,kBAAUG,YAAY,KAAK,aAAa,KAAK,aAAa;MAC5D,OAAO;AACLH,kBAAUG,YAAY,KAAK,YAAY,KAAK,YAAY;MAC1D;IACF;IAGA9B,SAAS;AACP,YAAMA,OAAO;AACb,UAAI,CAAC,KAAK,YAAY;AACpB;MACF;AACA,WAAKpF,QAAQC,UAAUY,iBAAiB,KAAK,YAAY;QACvDL,WAAW;UACTiG,SAAS;UACTU,UAAU;QACZ;MACF,CAAC;IACH;IAGAN,WAAW;AACT,YAAMA,SAAS;AACf,UAAI,CAAC,KAAK,YAAY;AACpB;MACF;AACA,WAAK7G,QAAQC,UAAUY,iBAAiB,KAAK,YAAY;QACvDL,WAAW;UACT2G,UAAU;QACZ;MACF,CAAC;AACD,UAAI,CAAC,KAAK,kBAAkB;AAC1B,aAAK,UAAwB,KAAK;MACpC;IACF;IAGA,IAAIC,mBAAmB;AACrB,aAAO,CAAC,KAAK;IACf;IAGAlC,KAAKmC,UAAU,KAAKlC,YAAY;AAC9B,YAAMD,KAAKmC,OAAO;AAClB,UAAI,KAAKrH,QAAQ;AACf,aAAKA,OAAOC,UAAUY,iBAAiB,KAAK,KAAK;UAC/CL,WAAW;YACT8G,QAAQ,CAACD;UACX;QACF,CAAC;AACD,aAAKrH,OAAOC,UAAUY,iBAAiB,KAAK,YAAY;UACtDL,WAAW;YACT8G,QAAQ,CAACD;UACX;QACF,CAAC;MACH;IACF;IAEA,eAAe;AAGb,aAAO,KAAK,mBAAmB,KAAKnJ,WAAW;IACjD;IAEA,kBAAkB;AAChB,UAAI,KAAK,kBAAkB;AACzB,eAAO;MACT;AACA,YAAM,CAAC4C,WAAWC,UAAU,IAAI,KAAKwG;AACrC,YAAM,CAACC,OAAOC,KAAK,IAAI,KAAKC;AAC5B,YAAMnK,QAAQ,KAAK;AACnB,YAAMoK,aAAa,IAAIC,aAAarK,MAAMsK,SAAS,CAAC;AACpD,UAAIC,KAAI;AACR,iBAAW;QAAE3I,GAAAA;QAAGC,GAAAA;QAAGC;QAAOC;MAAO,KAAK/B,OAAO;AAC3C,cAAMwK,KAAK5I,KAAI2B,YAAY0G;AAC3B,cAAMQ,MAAM,IAAI5I,MAAK2B,aAAa0G;AAIlCE,mBAAWG,EAAC,IAAIH,WAAWG,KAAI,CAAC,IAAIC;AACpCJ,mBAAWG,KAAI,CAAC,IAAIH,WAAWG,KAAI,CAAC,IAAIE;AACxCL,mBAAWG,KAAI,CAAC,IAAIH,WAAWG,KAAI,CAAC,IAAIC,KAAK1I,QAAQyB;AACrD6G,mBAAWG,KAAI,CAAC,IAAIH,WAAWG,KAAI,CAAC,IAAIE,KAAK1I,SAASyB;AACtD+G,QAAAA,MAAK;MACP;AACA,aAAOH;IACT;IAEA,mBAAmBM,MAAM;AACvB,aAAO,KAAK,mBAAmBC,UAAUD,MAAM,KAAK,aAAa,CAAC;IACpE;IAEA,OAAOE,kBAAkBnI,QAAQoI,OAAO;MAAEC,QAAQC;MAAWnJ,GAAAA;MAAGC,GAAAA;IAAE,GAAG;AACnE,YAAM;QACJD,GAAGoJ;QACHnJ,GAAGoJ;QACHnJ,OAAOoJ;QACPnJ,QAAQoJ;MACV,IAAIJ,UAAUK,sBAAsB;AAEpC,YAAMC,KAAK,IAAIC,gBAAgB;AAC/B,YAAM9C,SAAS/F,OAAO8I,eAAeF,EAAE;AAEvC,YAAMG,oBAAoBC,CAAAA,OAAK;AAC7BJ,WAAGK,MAAM;AACT,aAAK,cAAcjJ,QAAQgJ,EAAC;MAC9B;AACAhC,aAAOlB,iBAAiB,QAAQiD,mBAAmB;QAAEhD;MAAO,CAAC;AAC7DiB,aAAOlB,iBAAiB,aAAaiD,mBAAmB;QAAEhD;MAAO,CAAC;AAClEiB,aAAOlB,iBACL,eACAoD,WACA;QACEC,SAAS;QACTC,SAAS;QACTrD;MACF,CACF;AACAiB,aAAOlB,iBAAiB,eAAeuD,eAAe;QAAEtD;MAAO,CAAC;AAEhEuC,gBAAUxC,iBACR,eACA,KAAK,eAAehD,KAAK,MAAM9C,MAAM,GACrC;QAAE+F;MAAO,CACX;AACA,WAAKvJ,iBAAiB,IAAI8M,sBACxB;QAAEnK,GAAAA;QAAGC,GAAAA;MAAE,GACP,CAACmJ,QAAQC,QAAQC,aAAaC,YAAY,GAC1C1I,OAAOuJ,OACP,KAAKrN,oBAAoB,GACzBkM,OACoB,IACtB;AACA,OAAC;QAAE9C,IAAI,KAAK/I;QAAkBsD,YAAY,KAAKpD;MAAqB,IAClEuD,OAAOC,UAAUsF,KACf;QACEpF,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACjBiC,MAAM;UACJoD,SAAS;UACTnD,MAAM,KAAKrG;UACX,gBAAgB,KAAKC;QACvB;QACAuE,WAAW;UACTiF,WAAW;UACX/E,MAAM;QACR;QACAN,MAAM;UACJC,GAAG,KAAK7D,eAAe8D,UAAU;QACnC;MACF,GACwB,MACR,IAClB;IACJ;IAEA,OAAO,eAAeN,QAAQ2G,QAAO;AACnC,UAAI,KAAKnK,eAAesI,IAAI6B,MAAK,GAAG;AAElC3G,eAAOC,UAAUY,iBAAiB,KAAKtE,kBAAkB;UACvD6D,MAAM;YACJC,GAAG,KAAK7D,eAAe8D,UAAU;UACnC;QACF,CAAC;MACH;IACF;IAEA,OAAO,cAAcN,QAAQ2G,QAAO;AAClC,UAAI,CAAC,KAAKnK,eAAegN,QAAQ,GAAG;AAClCxJ,eAAOyJ,sBAAsB9C,QAAO,OAAO;UACzC/I,aAAa,KAAKrB;UAClBqD,mBAAmB,KAAKpD,eAAe0C,YAAY;UACnDW,YAAY,KAAKpD;UACjBe,kBAAkB;QACpB,CAAC;MACH,OAAO;AACLwC,eAAOC,UAAU0E,OAAO,KAAKpI,gBAAgB;MAC/C;AACA,WAAKA,mBAAmB;AACxB,WAAKC,iBAAiB;AACtB,WAAKC,uBAAuB;IAC9B;IAGA,aAAaiN,YAAY9K,MAAMoB,QAAQmB,WAAW;AAChD,UAAIwI,cAAc;AAClB,UAAI/K,gBAAgBgL,4BAA4B;AAC9C,cAAM;UACJhL,MAAM;YACJ+I,YAAAA;YACAM;YACA/J;YACAoH;YACAlI,OAAAA;YACAE,SAAAA;YACAuM;YACAC;YACAC;YACAC;YACAC;UACF;UACAjK,QAAQ;YACNkK,MAAM;cAAEC;YAAW;UACrB;QACF,IAAIvL;AACJ+K,sBAAc/K,OAAO;UACnBwL,gBAAgB/N,qBAAqBC;UACrCc,OAAOiN,MAAMC,KAAKlN,MAAK;UACvBE,SAAAA;UACAqK,YAAAA;UACApK,OAAO;UACPgN,WAAWJ,aAAa;UACxBlC,MAAMA,KAAKuC,MAAM,CAAC;UAClBtM;UACAC,qBAAqBmH;UACrBA;UACAmF,SAAS;UACTZ;UACAC;UACAY,SAASX,aAAaY,OAAO;UAC7BX;UACAC;QACF;MACF,WAAWrL,gBAAgBgM,sBAAsB;AAC/C,cAAM;UACJhM,MAAM;YACJiM,UAAAA;YACA5C;YACA/J;YACAoH;YACAlI,OAAAA;YACA0N,aAAa;cAAEC,UAAU1N;YAAU;YACnCwM;YACAC;YACAC;YACAC;YACAC;UACF;UACAjK,QAAQ;YACNkK,MAAM;cAAEC;YAAW;UACrB;QACF,IAAIvL;AACJ+K,sBAAc/K,OAAO;UACnBwL,gBAAgB/N,qBAAqBC;UACrCc,OAAOiN,MAAMC,KAAKlN,MAAK;UACvBC;UACAwN,UAAAA;UACAtN,OAAO;UACPgN,WAAWJ,aAAa;UACxBlC,MAAMA,KAAKuC,MAAM,CAAC;UAClBtM;UACAC,qBAAqBmH;UACrBA;UACAmF,SAAS;UACTZ;UACAC;UACAY,SAASX,aAAaY,OAAO;UAC7BX;UACAC;QACF;MACF;AAEA,YAAM;QAAE7M,OAAAA;QAAOuK;QAAYkD;QAAUvN;MAAQ,IAAIsB;AACjD,YAAMiF,SAAS,MAAM,MAAM6F,YAAY9K,MAAMoB,QAAQmB,SAAS;AAE9D0C,aAAOzG,QAAQ4N,KAAKC,aAAa,GAAG7N,MAAK;AACzCyG,aAAOvG,UAAUA,WAAW;AAC5B,UAAIuN,UAAU;AACZhH,eAAO,aAAajF,KAAKvB;MAC3B;AACAwG,aAAOqH,eAAevB;AACtB,UAAI/K,KAAK8L,SAAS;AAChB7G,eAAOsH,eAAevM,IAAI;MAC5B;AAEA,YAAM,CAACkC,WAAWC,UAAU,IAAI8C,OAAO0D;AACvC,YAAM,CAACC,OAAOC,KAAK,IAAI5D,OAAO6D;AAE9B,UAAIC,YAAY;AACd,cAAMpK,QAASsG,OAAO,SAAS,CAAA;AAC/B,iBAASiE,KAAI,GAAGA,KAAIH,WAAWE,QAAQC,MAAK,GAAG;AAC7CvK,gBAAM6N,KAAK;YACTjM,IAAIwI,WAAWG,EAAC,IAAIN,SAAS1G;YAC7B1B,GAAG,KAAKuI,WAAWG,KAAI,CAAC,IAAIL,SAAS1G;YACrC1B,QAAQsI,WAAWG,KAAI,CAAC,IAAIH,WAAWG,EAAC,KAAKhH;YAC7CxB,SAASqI,WAAWG,KAAI,CAAC,IAAIH,WAAWG,KAAI,CAAC,KAAK/G;UACpD,CAAC;QACH;AACA8C,eAAO,gBAAgB;AACvBA,eAAO,gBAAgB;AACvBA,eAAO5F,OAAO4F,OAAO3F,QAAQ;MAC/B,WAAW2M,UAAU;AACnBhH,eAAO,mBAAmB;AAC1B,cAAMwH,SAASR,SAAS,CAAC;AACzB,cAAMS,QAAQ;UACZnM,GAAGkM,OAAO,CAAC,IAAI7D;UACfpI,GAAG2B,cAAcsK,OAAO,CAAC,IAAI5D;QAC/B;AACA,cAAMzI,WAAW,IAAIsK,sBACnBgC,OACA,CAAC,GAAG,GAAGxK,WAAWC,UAAU,GAC5B,GACA8C,OAAO,aAAa,GACpB,MACA,IACF;AACA,iBAASiE,KAAI,GAAGyD,KAAKF,OAAOxD,QAAQC,KAAIyD,IAAIzD,MAAK,GAAG;AAClDwD,gBAAMnM,IAAIkM,OAAOvD,EAAC,IAAIN;AACtB8D,gBAAMlM,IAAI2B,cAAcsK,OAAOvD,KAAI,CAAC,IAAIL;AACxCzI,mBAAS8F,IAAIwG,KAAK;QACpB;AACA,cAAM;UAAEhG;UAAIzF;QAAW,IAAIG,OAAOC,UAAUsF,KAC1C;UACEpF,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;UACjBiC,MAAM;YACJoD,SAAS;YACTnD,MAAMwB,OAAOzG;YACb,gBAAgByG,OAAO5H;UACzB;UACAuE,WAAW;YACTiF,WAAW;YACX/E,MAAM;UACR;UACAN,MAAM;YACJC,GAAGrB,SAASsB,UAAU;UACxB;QACF,GACwB,MACR,IAClB;AACAuD,eAAO,oBAAoB;UACzBjE,mBAAmBZ,SAASE,YAAY;UACxCtB,aAAa0H;UACbzF;QACF,CAAC;AACDgE,eAAO,gBAAgB;AACvBA,eAAO5F,OAAO4F,OAAO2H,cAAc;MACrC;AAEA,aAAO3H;IACT;IAGAqE,UAAUuD,eAAe,OAAO;AAE9B,UAAI,KAAKjC,QAAQ,KAAKiC,cAAc;AAClC,eAAO;MACT;AAEA,UAAI,KAAKhB,SAAS;AAChB,eAAO,KAAKiB,iBAAiB;MAC/B;AAEA,YAAMtO,SAAQrB,iBAAiB4P,cAAcC,QAC3C,KAAKxN,WAAWyN,eAAe,KAAKzO,KAAK,CAC3C;AACA,YAAM0O,aAAa,MAAM5D,UAAUuD,YAAY;AAC/CM,aAAOC,OAAOF,YAAY;QACxB1O,OAAAA;QACAE,SAAS,KAAKA;QACdD,WAAW,KAAK;QAChBsK,YAAY,KAAK,gBAAgB;QACjCsE,UAAU,KAAK,mBAAmBH,WAAW7D,IAAI;MACnD,CAAC;AACD,WAAKiE,WAAWJ,UAAU;AAE1B,UAAI,KAAK3N,uBAAuB,CAAC,KAAK,mBAAmB2N,UAAU,GAAG;AACpE,eAAO;MACT;AAEAA,iBAAWxG,KAAK,KAAKnH;AACrB,aAAO2N;IACT;IAEA,mBAAmBA,YAAY;AAC7B,YAAM;QAAE1O,OAAAA;MAAM,IAAI,KAAK8N;AACvB,aACE,KAAKiB,oBAAoBL,WAAW1O,MAAMgP,KAAK,CAACC,IAAGvE,OAAMuE,OAAMjP,OAAM0K,EAAC,CAAC;IAE3E;IAGAwE,wBAAwBC,YAAY;AAClC,UAAI,KAAK9B,SAAS;AAChB8B,mBAAWC,KAAK;AAChB,eAAO;MACT;AACAD,iBAAWE,aAAa;QACtBxE,MAAM,KAAKyE,WAAW;QACtBC,OAAO,KAAKjC;MACd,CAAC;AAED,aAAO;IACT;IAEA,OAAOkC,0BAA0B;AAC/B,aAAO;IACT;EACF;ACrjCA,MAAMC,iBAAN,MAAqB;IACnB,iBAAiBC,uBAAOC,OAAO,IAAI;IAEnCC,eAAeC,OAAMC,OAAO;AAC1B,WAAKD,KAAI,IAAIC;AACb,WAAKC,kBAAkBF,OAAMC,KAAK;IACpC;IAEAE,iBAAiBC,YAAY;AAC3B,UAAI,CAACA,YAAY;AACf;MACF;AACA,iBAAW,CAACJ,OAAMC,KAAK,KAAKJ,OAAOQ,QAAQD,UAAU,GAAG;AACtD,YAAI,CAACJ,MAAKM,WAAW,GAAG,GAAG;AACzB,eAAKP,eAAeC,OAAMC,KAAK;QACjC;MACF;IACF;IAEAC,kBAAkBF,OAAMC,OAAO;AAC7B,WAAK,eAAeD,KAAI,IAAIC;IAC9B;IAEAM,kBAAkB;AAChB,YAAMC,OAAO,KAAK;AAClB,WAAK,iBAAiBX,uBAAOC,OAAO,IAAI;AACxC,aAAO;QAAEU;MAAK;IAChB;IAEAC,QAAQ;AACN,WAAK,iBAAiBZ,uBAAOC,OAAO,IAAI;IAC1C;IAEAY,UAAUC,UAAU,MAAM;AACxB,WAAKR,iBAAiBQ,OAAO;IAC/B;IAEAC,QAAQ;AACNC,kBAAY,iBAAiB;IAC/B;EACF;AAKA,MAAMC,gBAAN,MAAMA,uBAAsBC,iBAAiB;IAC3C,gBAAgB;IAEhB;IAEAC,eAAe;IAEfC,UAAU;IAEV,OAAOC,iBAAiB;IAExB,OAAOC,iBAAiB;IAExB,OAAO,eAAe;IAEtB,OAAO,oBAAoB;IAE3B,OAAO,yBAAyB;IAEhC,OAAOC,gBAAgB;IAEvBC,YAAYC,QAAQ;AAClB,YAAMA,MAAM;AACZ,WAAK,mBAAmBA,OAAOC,mBAAmB;AAElD,WAAKC,aAAaF,MAAM;IAC1B;IAGAG,iBAAiB;AACf,WAAKT,cAAcU,OAAO,KAAKC,KAAK;AACpC,YAAMF,eAAe;IACvB;IAEAD,aAAaF,QAAQ;AACnB,UAAIA,OAAOM,cAAc;AACvB,aAAK,oBAAoBN,MAAM;AAC/B,aAAK,gBAAgB;MACvB;IACF;IAEA,oBAAoB;MAAEM;MAAcC;MAAQC;IAAe,GAAG;AAC5D,WAAK,gBAAgBF;AACrB,WAAKG,oBAAoBD;AACzB,UAAI,CAAC,KAAKE,qBAAqB;AAC7B,aAAKC,WAAWC,UAAU,gBAAgB,KAAKC,UAAU,cAAc;MACzE;AAEA,UAAIN,UAAU,GAAG;AACf,aAAKZ,UAAUY;AAGf,aAAKO,OAAOC,UAAUC,aACpBT,QACAD,aAAaW,iBACf;MACF,OAAO;AAEL,aAAKtB,UAAU,KAAK,eAAeW,cAAc,KAAKQ,MAAM;MAC9D;AAEA,WAAK,YAAYR,aAAaY,GAAG;IACnC;IAEA,eAAeZ,cAAcQ,QAAQ;AACnC,YAAM;QAAEK;MAAG,IAAIL,OAAOC,UAAUK,KAC9B5B,eAAc6B,oBACZ,KAAKZ,gBAAgBxB,gBAAgB,GACrCqB,aAAagB,oBACf,GACwB,OACR,KAClB;AACA,aAAOH;IACT;IAEA,OAAOE,oBAAoBE,IAAIC,KAAI;AACjC,YAAMC,SAAS,IAAIC,IAAInD,OAAOoD,KAAKJ,EAAE,CAAC;AAEtC,iBAAW,CAACK,KAAKjD,KAAK,KAAKJ,OAAOQ,QAAQyC,GAAE,GAAG;AAC7C,YAAIC,OAAOI,IAAID,GAAG,GAAG;AACnBrD,iBAAOuD,OAAOP,GAAGK,GAAG,GAAGjD,KAAK;QAC9B,OAAO;AACL4C,aAAGK,GAAG,IAAIjD;QACZ;MACF;AACA,aAAO4C;IACT;IAMA,OAAOQ,yBAAyBC,UAAU;AACxCzC,kBAAY,iBAAiB;IAC/B;IAOA,WAAW0C,WAAW;AACpB1C,kBAAY,iBAAiB;IAC/B;IAEA,WAAW2C,WAAW;AACpB,aAAO;IACT;IAMA,WAAWC,0BAA0B;AACnC,aAAO;IACT;IAGA,OAAOC,oBAAoBC,MAAM1D,OAAO;AACtC,YAAM2D,eAAe,KAAKL,SAASM,IAAIF,IAAI;AAC3C,UAAIC,cAAc;AAChB,aAAKE,uBAAuB/D,eAAe6D,cAAc3D,KAAK;MAChE;AACA,UAAI,KAAKkB,gBAAgB;AACvBL,uBAAc,aAAaf,eAAe6D,cAAc3D,KAAK;AAC7D,aAAKkB,eAAekB,UAAUlC,iBAC5B,KAAKe,gBACL,KAAK4C,uBAAuBvD,gBAAgB,CAC9C;MACF;IACF;IAGAwD,aAAaJ,MAAM1D,OAAO;AACxB,YAAM2D,eAAe,KAAKvC,YAAYkC,SAASM,IAAIF,IAAI;AACvD,UAAIC,cAAc;AAChB,aAAKI,gBAAgBL,MAAMC,cAAc3D,KAAK;MAChD;IACF;IAGA,WAAWgE,4BAA4B;AACrC,YAAM7D,aAAa,CAAA;AACnB,YAAMO,UAAU,KAAKmD;AACrB,iBAAW,CAACH,MAAM3D,KAAI,KAAK,KAAKuD,UAAU;AACxCnD,mBAAW8D,KAAK,CAACP,MAAMhD,QAAQX,KAAI,CAAC,CAAC;MACvC;AACA,aAAOI;IACT;IAGA,IAAI+D,qBAAqB;AACvB,YAAM/D,aAAa,CAAA;AACnB,YAAM;QAAE2B;MAAgB,IAAI;AAC5B,iBAAW,CAAC4B,MAAM3D,KAAI,KAAK,KAAKqB,YAAYkC,UAAU;AACpDnD,mBAAW8D,KAAK,CAACP,MAAM5B,gBAAgB/B,KAAI,CAAC,CAAC;MAC/C;AACA,aAAOI;IACT;IAMA4D,gBAAgBL,MAAM3D,OAAMC,OAAO;AACjC,YAAMU,UAAU,KAAKoB;AACrB,YAAMqC,aAAazD,QAAQX,KAAI;AAC/B,YAAMqE,SAASC,SAAO;AACpB3D,gBAAQZ,eAAeC,OAAMsE,GAAG;AAChC,cAAMC,OAAO,KAAK,cAAcxE,eAAeC,OAAMsE,GAAG;AACxD,YAAIC,MAAM;AACR,eAAK,YAAYA,IAAI;QACvB;AACA,aAAKnC,QAAQC,UAAUlC,iBACrB,KAAKc,SACLN,QAAQJ,gBAAgB,CAC1B;AACA,YAAIoD,SAAS,KAAKa,WAAW;AAC3B,eAAK/C,eAAe;QACtB;MACF;AACA,WAAKgD,YAAY;QACfC,KAAKL,OAAOM,KAAK,MAAM1E,KAAK;QAC5B2E,MAAMP,OAAOM,KAAK,MAAMP,UAAU;QAClCS,MAAM,KAAK5C,WAAW6C,SAASH,KAAK,KAAK1C,YAAY,IAAI;QACzD8C,UAAU;QACVpB;QACAqB,qBAAqB;QACrBC,UAAU;MACZ,CAAC;IACH;IAGAC,cAAc;AACZ,WAAK9C,QAAQC,UAAUlC,iBACrB,KAAKc,SACLH,eAAc6B,oBACZ,KAAK,cAAcwC,6BACjB,KAAK,oBAAoB,CAC3B,GACA;QACEZ,MAAM,KAAK,WAAW;MACxB,CACF,CACF;IACF;IAGAa,aAAa;AACX,WAAKhD,QAAQC,UAAUlC,iBACrB,KAAKc,SACLH,eAAc6B,oBACZ,KAAK,cAAc0C,4BACjB,KAAK,oBAAoB,CAC3B,GACA;QACEd,MAAM,KAAK,WAAW;MACxB,CACF,CACF;IACF;IAGAe,eAAeC,IAAIC,IAAI;AACrB,WAAKpD,QAAQC,UAAUlC,iBAAiB,KAAKc,SAAS;QACpDsD,MAAM,KAAK,WAAW;MACxB,CAAC;IACH;IAGAkB,gBAAgB;AACd,WAAKrD,QAAQC,UAAUlC,iBACrB,KAAKc,SACLH,eAAc6B,oBACZ,KAAK,cAAc+C,+BACjB,KAAK,oBAAoB,GACzB,KAAKC,gBACP,GACA;QACEpB,MAAM,KAAK,WAAW;MACxB,CACF,CACF;IACF;IAEAqB,mBAAmB;AACjB,WAAKxD,QAAQC,UAAUlC,iBAAiB,KAAKc,SAAS;QACpD4E,WAAW;UACTC,QAAQ;QACV;MACF,CAAC;IACH;IAEAC,kBAAkB;AAChB,WAAK3D,QAAQC,UAAUlC,iBAAiB,KAAKc,SAAS;QACpD4E,WAAW;UACTC,QAAQ;QACV;MACF,CAAC;IACH;IAGAE,SAAS;AACP,YAAMA,OAAO;AAEb,WAAKC,gBAAgB;AACrB,WAAKC,eAAe;IACtB;IAGAA,iBAAiB;AACf,YAAMA,eAAe;AACrB,WAAKC,IAAIC,UAAUC,OAAO,YAAY,IAAI;IAC5C;IAGAC,gBAAgB;AACd,YAAMA,cAAc;AACpB,WAAKH,IAAIC,UAAUC,OAAO,YAAY,KAAK;IAC7C;IAGAE,qBAAqB;AAGnB,aAAO,CAAC,GAAG,CAAC;IACd;IAGA,IAAIC,cAAc;AAChB,aAAO;IACT;IAGAC,UAAUC,OAAO;AACf,UAAI,CAAC,KAAK1E,qBAAqB;AAC7B,aAAKI,OAAOuE,kBAAkB,IAAI;MACpC;AACA,WAAKC,eAAe;AACpB,UAAI,KAAK,kBAAkB;AACzB,aAAK,mBAAmB;AACxB,aAAKZ,OAAO;AACZ,aAAK5D,OAAOyE,YAAY,IAAI;AAC5B,YAAIH,SAAS,KAAKI,YAAY;AAC5B,eAAKX,IAAIO,MAAM;QACjB;MACF;IACF;IAGAK,SAAS;AACP,WAAK,gBAAgB;AACrB,YAAMA,OAAO;IACf;IAGAC,UAAU;AACR,UAAI,CAAC,KAAK5E,QAAQ;AAChB;MACF;AACA,YAAM4E,QAAQ;AACd,UAAI,KAAKb,QAAQ,MAAM;AACrB;MACF;AAEA,WAAK,gBAAgB;AACrB,WAAK,YAAY,KAAK,cAAc3D,GAAG;AAEvC,UAAI,CAAC,KAAKyE,iBAAiB;AAGzB,aAAK7E,OAAO8E,IAAI,IAAI;MACtB;IACF;IAEAC,UAAU/E,QAAQ;AAChB,UAAIgF,iBAAiB;AACrB,UAAI,KAAKhF,UAAU,CAACA,QAAQ;AAC1B,aAAKH,WAAWoF,oBAAoB,IAAI;AACxC,aAAK,gBAAgB;MACvB,WAAWjF,QAAQ;AACjB,aAAKH,WAAWqF,iBAAiB,IAAI;AACrC,aAAK,gBAAgBlF,MAAM;AAG3BgF,yBACE,CAAC,KAAKhF,UAAU,KAAK+D,KAAKC,UAAUmB,SAAS,gBAAgB;MACjE;AACA,YAAMJ,UAAU/E,MAAM;AACtB,UAAIgF,gBAAgB;AAElB,aAAKI,OAAO;MACd;IACF;IAEA,kBAAkB;AAChB,UAAI,KAAKvG,YAAY,QAAQ,CAAC,KAAKmB,QAAQ;AACzC;MACF;AACA,WAAKA,OAAOC,UAAU0E,OAAO,KAAK9F,OAAO;AACzC,WAAKA,UAAU;AAIf,WAAKc,gBAAgBtB,MAAM;IAC7B;IAEA,gBAAgB2B,SAAS,KAAKA,QAAQ;AACpC,UAAI,KAAKnB,YAAY,QAAQ,KAAKmB,WAAWA,QAAQ;AACnD;MACF;AACA,UAAI,KAAKnB,YAAY,MAAM;AAEzB,aAAKmB,OAAOC,UAAUoF,aAAa,KAAKxG,SAASmB,OAAOC,SAAS;AACjE;MACF;AACA,WAAKN,gBAAgBrB,UAAU;AAC/B,WAAKO,UAAU,KAAK,eAAe,KAAK,eAAemB,MAAM;IAC/D;IAEA,sBAAsB,CAACsF,IAAGC,IAAGC,OAAOC,MAAM,GAAG;AAC3C,YAAM;QACJlC,kBAAkB,CAACmC,IAAIC,EAAE;QACzBC;MACF,IAAI;AACJ,cAAQA,UAAQ;QACd,KAAK;AACH,iBAAO,CAACL,IAAG,IAAID,IAAGE,SAASG,KAAKD,KAAKD,UAAUC,KAAKC,GAAG;QACzD,KAAK;AACH,iBAAO,CAAC,IAAIL,IAAG,IAAIC,IAAGC,OAAOC,MAAM;QACrC,KAAK;AACH,iBAAO,CAAC,IAAIF,IAAGD,IAAGE,SAASG,KAAKD,KAAKD,UAAUC,KAAKC,GAAG;QACzD;AACE,iBAAO,CAACL,IAAGC,IAAGC,OAAOC,MAAM;MAC/B;IACF;IAEA,sBAAsB;AACpB,YAAM;QACJH,GAAAA;QACAC,GAAAA;QACAC;QACAC;QACAlC,kBAAkB,CAACmC,IAAIC,EAAE;QACzBC;MACF,IAAI;AACJ,cAAQA,UAAQ;QACd,KAAK;AACH,iBAAO,CAAC,IAAIL,IAAGD,IAAGE,SAASE,KAAKC,KAAKF,UAAUE,KAAKD,GAAG;QACzD,KAAK;AACH,iBAAO,CAAC,IAAIJ,IAAG,IAAIC,IAAGC,OAAOC,MAAM;QACrC,KAAK;AACH,iBAAO,CAACF,IAAG,IAAID,IAAGE,SAASE,KAAKC,KAAKF,UAAUE,KAAKD,GAAG;QACzD;AACE,iBAAO,CAACJ,IAAGC,IAAGC,OAAOC,MAAM;MAC/B;IACF;IAEA,YAAYtD,MAAM;AAChB,OAAC,KAAKmD,GAAG,KAAKC,GAAG,KAAKC,OAAO,KAAKC,MAAM,IACtC,KAAK,sBAAsBtD,IAAI;AACjC,UAAI,KAAK4B,KAAK;AACZ,aAAK8B,kBAAkB;AACvB,aAAKC,QAAQ;MACf;AACA,WAAK9C,WAAW;IAClB;IAEA,aAAa;AAaX,YAAM;QACJsC,GAAAA;QACAC,GAAAA;QACAC;QACAC;QACAG;QACAG;QACAxC,kBAAkB,CAACmC,IAAIC,EAAE;MAC3B,IAAI;AACJ,eAASC,WAAW,IAAIG,kBAAkB,IAAE;QAC1C,KAAK;AAEH,iBAAO,CAAC,IAAIR,KAAIE,QAAQH,IAAGG,QAAQD,KAAK;QAC1C,KAAK;AAEH,iBAAO,CAAC,IAAIF,KAAIE,OAAO,IAAID,KAAIE,QAAQD,OAAOC,MAAM;QACtD,KAAK;AAEH,iBAAO,CAACF,IAAG,IAAID,KAAIE,OAAOC,QAAQD,KAAK;QACzC,KAAK;AAEH,iBAAO,CACLF,IACAC,KAAIC,SAASE,KAAKC,KAClBF,UAAUE,KAAKD,KACfF,SAASE,KAAKC,GAAG;QAErB,KAAK;AAEH,iBAAO,CAAC,IAAIJ,IAAGD,IAAGE,SAASE,KAAKC,KAAKF,UAAUE,KAAKD,GAAG;QACzD,KAAK;AAEH,iBAAO,CACL,IAAIJ,KAAIG,UAAUE,KAAKD,KACvB,IAAIH,IACJE,UAAUE,KAAKD,KACfF,SAASE,KAAKC,GAAG;QAErB,KAAK;AAEH,iBAAO,CACLJ,KAAIC,SAASE,KAAKC,KAClB,IAAIL,KAAIG,UAAUE,KAAKD,KACvBF,SAASE,KAAKC,KACdF,UAAUE,KAAKD,GAAG;QAEtB,KAAK;AAEH,iBAAO,CAACJ,KAAIE,OAAOD,KAAIE,QAAQD,OAAOC,MAAM;QAC9C,KAAK;AAEH,iBAAO,CAAC,IAAIF,IAAGD,KAAIE,OAAOC,QAAQD,KAAK;QACzC,KAAK;AAEH,iBAAO,CAAC,IAAIF,IAAG,IAAIC,IAAGC,OAAOC,MAAM;QACrC,KAAK;AAEH,iBAAO,CAACF,KAAIE,QAAQ,IAAIH,IAAGG,QAAQD,KAAK;QAC1C,KAAK;AAEH,iBAAO,CACLF,KAAIG,UAAUE,KAAKD,KACnBH,IACAE,UAAUE,KAAKD,KACfF,SAASE,KAAKC,GAAG;QAErB,KAAK;AAEH,iBAAO,CACL,IAAIJ,KAAIC,SAASE,KAAKC,KACtBL,KAAIG,UAAUE,KAAKD,KACnBF,SAASE,KAAKC,KACdF,UAAUE,KAAKD,GAAG;QAEtB,KAAK;AAEH,iBAAO,CACL,IAAIJ,IACJ,IAAIC,KAAIC,SAASE,KAAKC,KACtBF,UAAUE,KAAKD,KACfF,SAASE,KAAKC,GAAG;QAErB,KAAK;AAEH,iBAAO,CAACJ,IAAG,IAAID,IAAGE,SAASE,KAAKC,KAAKF,UAAUE,KAAKD,GAAG;QACzD;AAEE,iBAAO,CAACJ,IAAGC,IAAGC,OAAOC,MAAM;MAC/B;IACF;IAGAO,SAAS;AACP,UAAI,CAAC,KAAKhG,QAAQ;AAChB;MACF;AACA,WAAKA,OAAOC,UAAUlC,iBACpB,KAAKc,SACLH,eAAc6B,oBACZ;QACE4B,MAAM,KAAK,WAAW;MACxB,GACA,KAAK,cAAc8D,gBAChB,KAAKF,iBAAiB,KAAKH,WAAW,OAAO,GAChD,CACF,CACF;IACF;IAEAM,kBAAkB;AAChB,UAAI,CAAC,KAAKlG,QAAQ;AAChB;MACF;AACA,WAAK,YACH,KAAK,cAAcmG,uBACjB,KAAK5C,kBACL,KAAKvD,OAAOoG,KACd,CACF;IACF;IAEA,OAAOC,6BAA6B;IAAC;IAGrCC,SAAS;AACP,UAAI,KAAKvC,KAAK;AACZ,eAAO,KAAKA;MACd;AAEA,UAAIwC,OAAOC;AACX,UAAI,KAAKC,SAAS;AAChBF,gBAAQ,KAAKjB;AACbkB,gBAAQ,KAAKjB;MACf;AAEA,YAAMxB,MAAM,MAAMuC,OAAO;AACzBvC,UAAIC,UAAUc,IAAI,MAAM;AAExB,YAAM4B,UAAUC,SAASC,cAAc,KAAK;AAC5C7C,UAAI8C,OAAOH,OAAO;AAClBA,cAAQI,aAAa,eAAe,MAAM;AAC1CJ,cAAQK,YAAY;AACpB,WAAKjB,QAAQ;AACb,WAAKjG,WAAWqF,iBAAiB,IAAI;AACrC,WAAKpB,eAAe;AAEpB,UAAI,KAAK2C,SAAS;AAChB,aAAKO,gBAAgBT,OAAOC,KAAK;MACnC;AAEA,aAAOzC;IACT;IAUA,OAAOkD,qBAAqB9D,IAAIC,IAAI8D,cAAcC,eAAeC,WAAW;AAC1E3I,kBAAY,iBAAiB;IAC/B;IAEA,OAAO4I,aAAarH,QAAQsH,WAAWC,QAAQC,QAAO;AAQpD,YAAM;QAAEC;QAAQC,SAASpC;QAAGqC,SAASpC;QAAGqC;QAAWC;MAAY,IAAIL;AACnE,UAAIM,gBAAgBC,qCAAqCF,WAAW,GAAG;AACrE;MACF;AAEA,YAAM;QACJG,UAAU;UAAEpC;QAAS;MACvB,IAAI5F;AACJ,YAAM;QAAEwF,OAAOyC;QAAaxC,QAAQyC;MAAa,IAC/CT,OAAOU,sBAAsB;AAE/B,YAAMC,KAAM1J,eAAc,oBAAoB,IAAI2J,gBAAgB;AAClE,YAAMC,SAAStI,OAAOuI,eAAeH,EAAE;AAEvCN,sBAAgBU,WAAWX,aAAaD,SAAS;AAEjDa,aAAOC,iBACL,aACAC,CAAAA,OAAK;AACH,YAAIb,gBAAgBc,wBAAwBD,GAAEf,SAAS,GAAG;AACxD,eAAKiB,SAASF,EAAC;QACjB;MACF,GACA;QAAEL;MAAO,CACX;AACAG,aAAOC,iBACL,iBACAC,CAAAA,OAAK;AACH,YAAIb,gBAAgBc,wBAAwBD,GAAEf,SAAS,GAAG;AACxD,eAAK7I,eAAe+J,kBAAkB;QACxC;MACF,GACA;QAAER;MAAO,CACX;AACAG,aAAOC,iBACL,eACAC,CAAAA,OAAK;AACH,YAAI,CAACb,gBAAgBiB,kBAAkBJ,GAAEd,WAAW,GAAG;AAGrD;QACF;AAGAC,wBAAgBkB,0BAA0BL,GAAEf,SAAS;AAIrD,YAAIlJ,eAAc,aAAauK,cAAc,GAAG;AAC9CvK,yBAAc,aAAawK,kBAAkB;AAC7C,cAAIxK,eAAc,aAAayK,QAAQ,GAAG;AACxC,iBAAKpK,eAAe+J,kBAAoC,IAAI;UAC9D,OAAO;AACL,iBAAKD,SAAS,IAAI;UACpB;QACF;MACF,GACA;QACEO,SAAS;QACTC,SAAS;QACTf;MACF,CACF;AACAG,aAAOC,iBAAiB,eAAeY,eAAe;QAAEhB;MAAO,CAAC;AAChEb,aAAOiB,iBAAiB,eAAe,KAAKa,UAAUhH,KAAK,IAAI,GAAG;QAChE+F;MACF,CAAC;AACDb,aAAOiB,iBACL,aACAC,CAAAA,OAAK;AACH,YAAIb,gBAAgB0B,gBAAgBb,GAAEc,SAAS,GAAG;AAEhDC,oBAAUf,EAAC;QACb;MACF,GACA;QAAEL;MAAO,CACX;AACAtI,aAAO2J,cAAc;AACrBrC,gBAAUsC,gBAAgBC,KAAK;AAE/B,UAAInL,eAAc,cAAc;AAC9BsB,eAAOC,UAAUlC,iBACf,KAAKe,gBACLJ,eAAc,aAAaoL,SACzBxE,IACAC,IACA0C,aACAC,cACAtC,QACF,CACF;AACA;MACF;AAEA0B,gBAAUyC,6BAA6B,IAAI;AAE3CrL,qBAAc,eAAe,KAAKuI,qBAChC3B,IACAC,IACA0C,aACAC,cACAtC,QACF;AACAlH,qBAAc,yBAAyB,KAAKuC,yBAAyB;AACrE,WAAKlC,iBAAiBiB;AAEtB,OAAC;QAAEK,IAAI,KAAKvB;MAAe,IAAIkB,OAAOC,UAAUK,KAC9C,KAAKC,oBACH7B,eAAc,uBAAuBP,gBAAgB,GACrDO,eAAc,aAAa8B,oBAC7B,GACwB,MACR,KAClB;IACF;IAEA,OAAO+I,UAAU/B,QAAO;AACtBM,sBAAgB0B,gBAAgBhC,OAAMiC,SAAS;AAC/C,UAAI,CAAC/K,eAAc,cAAc;AAC/B;MACF;AACA,YAAM;QAAEgJ;QAASC;QAASC;MAAU,IAAIJ;AAExC,UAAI,CAACM,gBAAgBkC,gBAAgBpC,SAAS,GAAG;AAC/C;MACF;AACA,UAAIE,gBAAgBmC,wBAAwB,GAAG;AAE7C,aAAKpB,SAASrB,MAAK;AACnB;MACF;AACA,WAAKzI,eAAekB,UAAUlC,iBAC5B,KAAKe,gBACLJ,eAAc,aAAaoG,IAAI4C,SAASC,OAAO,CACjD;AAEAG,sBAAgBoC,aAAa1C,OAAMiC,SAAS;AAC5CC,gBAAUlC,MAAK;IACjB;IAEA,OAAO2C,SAASC,KAAK;AACnB,UAAIA,KAAK;AACP,aAAKtL,iBAAiB;AACtB,aAAKC,iBAAiB;AACtBL,uBAAc,eAAe;AAC7BA,uBAAc,yBAAyB;AACvCoJ,wBAAgBuC,eAAe;MACjC;AAEA,UAAI3L,eAAc,mBAAmB;AACnCA,uBAAc,kBAAkB4L,MAAM;AACtC5L,uBAAc,oBAAoB;AAClCoJ,wBAAgByC,gBAAgB;MAClC;IACF;IAEA,OAAO1B,SAASrB,QAAO;AACrB,YAAMxH,SAAS,KAAKjB;AACpB,UAAI,CAACiB,QAAQ;AACX;MACF;AAEAA,aAAO2J,cAAc,IAAI;AACzB,WAAKQ,SAAS,KAAK;AAEnB,UAAI3C,QAAOC,WAAWzH,OAAO+D,KAAK;AAChC/D,eAAOC,UAAUlC,iBACf,KAAKe,gBACLJ,eAAc,aAAa8L,IAAIhD,OAAME,SAASF,OAAMG,OAAO,CAC7D;MACF;AACA,UAAI,KAAKtG,yBAAyB;AAChC,cAAMf,QAAO5B,eAAc;AAC3B,cAAMe,SAAS,KAAKX;AACpB,cAAM2L,cAAcnK,MAAKoK,eAAe;AACxC1K,eAAOqC,YAAY;UACjBC,KAAKA,MAAM;AACTtC,mBAAOC,UAAUlC,iBACf0B,QACAa,MAAKqK,eAAeF,WAAW,CACjC;UACF;UACAjI,MAAMA,MAAM;AACVxC,mBAAOC,UAAUlC,iBAAiB0B,QAAQa,MAAK4I,kBAAkB,CAAC;UACpE;UACAvG,UAAU;UACVpB,MAAMqJ,2BAA2BC;QACnC,CAAC;AAED;MACF;AAEA,WAAKC,WAA6B,KAAK;IACzC;IAEA,OAAOA,WAAWC,WAAW;AAC3B,YAAM/K,SAAS,KAAKjB;AACpB,UAAI,CAACiB,QAAQ;AACX,eAAO;MACT;AACAA,aAAO2J,cAAc,IAAI;AACzB3J,aAAOgL,eAAeJ,2BAA2BC,SAAS;AAE1D,UAAI,CAACnM,eAAc,aAAayK,QAAQ,GAAG;AACzC,cAAM;UACJ8B,gBAAgB,CAACC,WAAWC,UAAU;UACtC/E;QACF,IAAIpG;AAEJ,cAAMoL,SAASpL,OAAOqL,sBACpB;UAAE3D,SAAS;UAAGC,SAAS;QAAE,GACzB,OACA;UACElI,QAAQ,KAAKX;UACbU,cAAcd,eAAc,aAAa4M,YACvCJ,YAAY9E,OACZ+E,aAAa/E,OACbA,OACA,KAAKpH,aACP;UACAU,gBAAgBhB,eAAc;UAC9BS,iBAAiB,CAAC4L;QACpB,CACF;AACA,aAAKZ,SAAS,IAAI;AAClB,eAAOiB;MACT;AAEApL,aAAOC,UAAU0E,OAAO,KAAK7F,cAAc;AAC3C,WAAKqL,SAAS,IAAI;AAClB,aAAO;IACT;IAMAoB,qBAAqBC,OAAO;IAAC;IAY7B,OAAOC,gBACLC,QACAC,QACAC,YACAC,aACAC,aACAN,OACA;AACA/M,kBAAY,iBAAiB;IAC/B;IAGA,aAAasN,YAAYC,MAAMhM,QAAQsH,WAAW;AAChD,YAAM;QACJ2E,SAAS;UAAEf;UAAWC;UAAYe;UAAOC;QAAM;MACjD,IAAInM,OAAOgI;AACX,YAAMxI,eAAe,KAAKiM,gBACxBS,OACAC,OACAjB,WACAC,YACA,KAAKnM,eACLgN,IACF;AACA,YAAMZ,SAAS,MAAM,MAAMW,YAAYC,MAAMhM,QAAQsH,SAAS;AAC9D8D,aAAOG,qBAAqBS,IAAI;AAChCZ,aAAO,oBAAoB;QAAE5L;MAAa,CAAC;AAC3C4L,aAAO,gBAAgB;AACvBA,aAAOlF,gBAAgB;AACvBkF,aAAOpF,OAAO;AAEd,aAAOoF;IACT;IAEAgB,cAAcC,cAAc;AAC1B,YAAM,CAACH,OAAOC,KAAK,IAAI,KAAKG;AAC5B,YAAM,CAACpB,WAAWC,UAAU,IAAI,KAAKF;AACrC,aAAO,KAAK,cAAcsB,UACxB,CAACL,OAAOC,OAAOjB,WAAWC,UAAU,GACpCkB,YACF;IACF;IAGAG,wBAAwBC,YAAY;AAClCA,iBAAWC,aAAa;QACtBC,MAAM,KAAKC,WAAW;MACxB,CAAC;AAED,aAAO;IACT;IAEA,OAAOC,0BAA0B;AAC/B,aAAO;IACT;EACF;ACt8BA,MAAMC,kBAAN,MAAsB;IAEpB,QAAQ,IAAIC,aAAa,CAAC;IAE1B;IAEA;IAEA;IAEA;IAEA;IAEA,eAAe;IAEf,aAAa;IAEb,YAAY,IAAIC,eAAe;IAE/B;IAEA;IAEAC,YAAYC,IAAGC,IAAGC,aAAaC,cAAcC,UAAUC,WAAW;AAChE,WAAK,eAAeH;AACpB,WAAK,gBAAgBC;AACrB,WAAK,YAAYC;AACjB,WAAK,aAAaC;AAElB,OAACL,IAAGC,EAAC,IAAI,KAAK,gBAAgBD,IAAGC,EAAC;AAElC,YAAMK,OAAQ,KAAK,QAAQ,CAACC,KAAKA,KAAKA,KAAKA,KAAKP,IAAGC,EAAC;AACpD,WAAK,UAAU,CAACD,IAAGC,EAAC;AACpB,WAAK,SAAS,CAAC;QAAEK;QAAME,QAAQ,KAAK;MAAQ,CAAC;AAC7C,WAAK,MAAMC,IAAIH,MAAM,CAAC;IACxB;IAEAI,eAAeC,OAAMC,OAAO;AAC1B,UAAID,UAAS,gBAAgB;AAC3B,aAAK,aAAaC;MACpB;IACF;IAEA,gBAAgBZ,IAAGC,IAAG;AACpB,aAAOY,QAAQC,gBACbd,IACAC,IACA,KAAK,cACL,KAAK,eACL,KAAK,SACP;IACF;IAEAc,UAAU;AACR,aAAO,CAAC,KAAK,UAAU,KAAK,OAAOC,WAAW;IAChD;IAEAC,gBAAgB;AAGd,aAAO,KAAK,QAAQD,UAAU;IAChC;IAEAE,IAAIlB,IAAGC,IAAG;AAGR,OAACD,IAAGC,EAAC,IAAI,KAAK,gBAAgBD,IAAGC,EAAC;AAClC,YAAM,CAACkB,IAAIC,IAAIC,KAAIC,GAAE,IAAI,KAAK,MAAMC,SAAS,GAAG,CAAC;AACjD,YAAMC,QAAQxB,KAAIqB;AAClB,YAAMI,QAAQxB,KAAIqB;AAClB,YAAMI,KAAIC,KAAKC,MAAM,KAAK,eAAeJ,OAAO,KAAK,gBAAgBC,KAAK;AAC1E,UAAIC,MAAK,GAAG;AAIV,eAAO;MACT;AAEA,WAAK,QAAQG,KAAK7B,IAAGC,EAAC;AAEtB,UAAI6B,MAAMX,EAAE,GAAG;AAEb,aAAK,MAAMV,IAAI,CAACY,KAAIC,KAAItB,IAAGC,EAAC,GAAG,CAAC;AAChC,aAAK,MAAM4B,KAAKtB,KAAKA,KAAKA,KAAKA,KAAKP,IAAGC,EAAC;AACxC,eAAO;UACL8B,MAAM;YACJL,GAAG,KAAKM,UAAU;UACpB;QACF;MACF;AAEA,UAAIF,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG;AAExB,aAAK,MAAMG,OAAO,GAAG,CAAC;MACxB;AAEA,WAAK,MAAMxB,IAAI,CAACU,IAAIC,IAAIC,KAAIC,KAAItB,IAAGC,EAAC,GAAG,CAAC;AACxC,WAAK,MAAM4B,KAAK,GAAGhB,QAAQqB,mBAAmBf,IAAIC,IAAIC,KAAIC,KAAItB,IAAGC,EAAC,CAAC;AAEnE,aAAO;QACL8B,MAAM;UACJL,GAAG,KAAKM,UAAU;QACpB;MACF;IACF;IAEAG,IAAInC,IAAGC,IAAG;AACR,YAAMmC,SAAS,KAAKlB,IAAIlB,IAAGC,EAAC;AAC5B,UAAImC,QAAQ;AACV,eAAOA;MACT;AACA,UAAI,KAAK,QAAQpB,WAAW,GAAG;AAE7B,eAAO;UACLe,MAAM;YACJL,GAAG,KAAKM,UAAU;UACpB;QACF;MACF;AACA,aAAO;IACT;IAEAK,SAASrC,IAAGC,IAAGC,aAAaC,cAAcC,UAAU;AAClD,WAAK,eAAeF;AACpB,WAAK,gBAAgBC;AACrB,WAAK,YAAYC;AAEjB,OAACJ,IAAGC,EAAC,IAAI,KAAK,gBAAgBD,IAAGC,EAAC;AAElC,YAAMK,OAAQ,KAAK,QAAQ,CAACC,KAAKA,KAAKA,KAAKA,KAAKP,IAAGC,EAAC;AACpD,WAAK,UAAU,CAACD,IAAGC,EAAC;AACpB,YAAMqC,OAAO,KAAK,OAAOC,GAAG,EAAE;AAC9B,UAAID,MAAM;AACRA,aAAKhC,OAAO,IAAIkC,aAAaF,KAAKhC,IAAI;AACtCgC,aAAK9B,SAAS,IAAIgC,aAAaF,KAAK9B,MAAM;MAC5C;AACA,WAAK,OAAOqB,KAAK;QAAEvB;QAAME,QAAQ,KAAK;MAAQ,CAAC;AAC/C,WAAK,MAAMC,IAAIH,MAAM,CAAC;AACtB,WAAK,aAAa;AAClB,WAAK0B,UAAU;AAEf,aAAO;IACT;IAEAS,iBAAiB;AACf,aAAO,KAAK,OAAOF,GAAG,EAAE;IAC1B;IAEAG,eAAeC,SAAS;AACtB,UAAI,CAAC,KAAK,QAAQ;AAChB,eAAO,KAAK,UAAUD,eAAeC,OAAO;MAC9C;AACA,WAAK,OAAOd,KAAKc,OAAO;AACxB,WAAK,QAAQA,QAAQrC;AACrB,WAAK,UAAUqC,QAAQnC;AACvB,WAAK,aAAa;AAClB,aAAO;QACLuB,MAAM;UACJL,GAAG,KAAKM,UAAU;QACpB;MACF;IACF;IAEAY,oBAAoB;AAClB,UAAI,CAAC,KAAK,QAAQ;AAChB,eAAO,KAAK,UAAUA,kBAAkB;MAC1C;AACA,WAAK,OAAOC,IAAI;AAChB,WAAK,eAAe;AACpB,eAASC,KAAI,GAAGC,KAAK,KAAK,OAAO/B,QAAQ8B,KAAIC,IAAID,MAAK;AACpD,cAAM;UAAExC;UAAME;QAAO,IAAI,KAAK,OAAOsC,EAAC;AACtC,aAAK,QAAQxC;AACb,aAAK,UAAUE;AACf,aAAK,aAAa;AAClB,aAAKwB,UAAU;MACjB;AAEA,aAAO;QACLD,MAAM;UACJL,GAAG,KAAK;QACV;MACF;IACF;IAEAM,YAAY;AACV,YAAMgB,SAASnC,QAAQoC,SAAS,KAAK,MAAM,CAAC,CAAC;AAC7C,YAAMC,SAASrC,QAAQoC,SAAS,KAAK,MAAM,CAAC,CAAC;AAC7C,UAAI,KAAK,QAAQjC,WAAW,GAAG;AAC7B,aAAK,eAAe,GAAG,KAAK,YAAY,MAAMgC,MAAM,IAAIE,MAAM;AAC9D,eAAO,KAAK;MACd;AAEA,UAAI,KAAK,QAAQlC,UAAU,GAAG;AAE5B,cAAM8B,KAAI,KAAK,aAAaK,YAAY,GAAG;AAC3C,aAAK,eAAe,GAAG,KAAK,aAAaC,MAAM,GAAGN,EAAC,CAAC,MAAME,MAAM,IAAIE,MAAM;AAC1E,aAAK,aAAa;MACpB;AAEA,UAAI,KAAK,QAAQlC,WAAW,GAAG;AAC7B,cAAMqC,UAAUxC,QAAQoC,SAAS,KAAK,MAAM,EAAE,CAAC;AAC/C,cAAMK,UAAUzC,QAAQoC,SAAS,KAAK,MAAM,EAAE,CAAC;AAC/C,aAAK,eAAe,GAAG,KAAK,YAAY,MAAMI,OAAO,IAAIC,OAAO;AAChE,aAAK,aAAa;AAClB,eAAO,KAAK;MACd;AAEA,YAAMC,UAAS,CAAA;AACf,UAAI,KAAK,eAAe,GAAG;AACzBA,QAAAA,QAAO1B,KAAK,KAAKmB,MAAM,IAAIE,MAAM,EAAE;AACnC,aAAK,aAAa;MACpB;AAEA,eAASJ,KAAI,KAAK,YAAYC,KAAK,KAAK,MAAM/B,QAAQ8B,KAAIC,IAAID,MAAK,GAAG;AACpE,cAAM,CAACU,KAAKC,KAAKC,KAAKC,KAAK3D,IAAGC,EAAC,IAAI,KAAK,MACrCmD,MAAMN,IAAGA,KAAI,CAAC,EACdc,IAAI/C,QAAQoC,QAAQ;AACvBM,QAAAA,QAAO1B,KAAK,IAAI2B,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAI3D,EAAC,IAAIC,EAAC,EAAE;MACtD;AACA,WAAK,gBAAgBsD,QAAOM,KAAK,GAAG;AACpC,WAAK,aAAa,KAAK,MAAM7C;AAE7B,aAAO,KAAK;IACd;IAEA8C,YAAY5D,aAAaC,cAAc4D,OAAOC,aAAa;AACzD,YAAM1B,OAAO,KAAK,OAAOC,GAAG,EAAE;AAC9BD,WAAKhC,OAAO,IAAIkC,aAAaF,KAAKhC,IAAI;AACtCgC,WAAK9B,SAAS,IAAIgC,aAAaF,KAAK9B,MAAM;AAE1C,WAAK,UAAUyD,MACb,KAAK,QACL/D,aACAC,cACA4D,OACA,KAAK,WACL,KAAK,YACLC,WACF;AAGA,WAAK,QAAQ;AACb,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,eAAe;AAEpB,aAAO,KAAK;IACd;IAEA,IAAIE,uBAAuB;AACzB,aAAO;QACLC,MAAM;UACJC,SAAS;QACX;QACAC,WAAW;UACTC,MAAM;QACR;QACAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;MACnB;IACF;EACF;AAEA,MAAMzE,iBAAN,cAA6Be,QAAQ;IACnC;IAEA,mBAAmB;IAEnB;IAEA;IAEA;IAEA;IAEA;IAEA;IAEA;IAEAoD,MACEO,OACAtE,aACAC,cACAsE,aACArE,UACAC,WACA2D,aACA;AACA,WAAK,eAAe9D;AACpB,WAAK,gBAAgBC;AACrB,WAAK,eAAesE;AACpB,WAAK,YAAYrE;AACjB,WAAK,aAAaC;AAClB,WAAK,eAAe2D,eAAe;AACnC,WAAK,SAASQ;AAEd,WAAK,aAAa;IACpB;IAEA,IAAInE,YAAY;AACd,aAAO,KAAK;IACd;IAEAqC,eAAeC,SAAS;AACtB,WAAK,OAAOd,KAAKc,OAAO;AACxB,aAAO;QACLZ,MAAM;UACJL,GAAG,KAAKM,UAAU;QACpB;MACF;IACF;IAEAY,oBAAoB;AAClB,WAAK,OAAOC,IAAI;AAChB,aAAO;QACLd,MAAM;UACJL,GAAG,KAAKM,UAAU;QACpB;MACF;IACF;IAEAA,YAAY;AACV,YAAMuB,UAAS,CAAA;AACf,iBAAW;QAAEjD;MAAK,KAAK,KAAK,QAAQ;AAClCiD,QAAAA,QAAO1B,KAAK,IAAIhB,QAAQoC,SAAS3C,KAAK,CAAC,CAAC,CAAC,IAAIO,QAAQoC,SAAS3C,KAAK,CAAC,CAAC,CAAC,EAAE;AACxE,YAAIA,KAAKU,WAAW,GAAG;AACrBuC,UAAAA,QAAO1B,KAAK,GAAG;AACf;QACF;AACA,YAAIvB,KAAKU,WAAW,MAAMc,MAAMxB,KAAK,CAAC,CAAC,GAAG;AACxCiD,UAAAA,QAAO1B,KACL,IAAIhB,QAAQoC,SAAS3C,KAAK,EAAE,CAAC,CAAC,IAAIO,QAAQoC,SAAS3C,KAAK,EAAE,CAAC,CAAC,EAC9D;AACA;QACF;AACA,iBAASwC,KAAI,GAAGC,KAAKzC,KAAKU,QAAQ8B,KAAIC,IAAID,MAAK,GAAG;AAChD,gBAAM,CAACU,KAAKC,KAAKC,KAAKC,KAAK3D,IAAGC,EAAC,IAAIK,KAChCiB,SAASuB,IAAGA,KAAI,CAAC,EACjBc,IAAI/C,QAAQoC,QAAQ;AACvBM,UAAAA,QAAO1B,KAAK,IAAI2B,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAI3D,EAAC,IAAIC,EAAC,EAAE;QACtD;MACF;AACA,aAAOsD,QAAOM,KAAK,EAAE;IACvB;IAEAa,UAAU,CAACC,OAAOC,OAAOC,WAAWC,UAAU,GAAGC,cAAc;AAC7D,YAAMC,kBAAkB,CAAA;AACxB,YAAMC,mBAAmB,CAAA;AACzB,YAAM,CAACjF,IAAGC,IAAGiF,OAAOC,MAAM,IAAI,KAAK,qBAAqB;AACxD,UAAIC,IAAIC,IAAIC,IAAIC,IAAIpE,IAAIC,IAAIC,KAAIC,KAAIkE;AAEpC,cAAQ,KAAK,WAAS;QACpB,KAAK;AACHA,sBAAY3E,QAAQ4E;AACpBL,eAAKT;AACLU,eAAKT,QAAQE;AACbQ,eAAKT;AACLU,eAAK,CAACT;AACN3D,eAAKwD,QAAQ3E,KAAI6E;AACjBzD,eAAKwD,SAAS,IAAI3E,KAAIkF,UAAUL;AAChCzD,UAAAA,MAAKsD,SAAS3E,KAAIkF,SAASL;AAC3BvD,UAAAA,MAAKsD,SAAS,IAAI3E,MAAK6E;AACvB;QACF,KAAK;AACHU,sBAAY3E,QAAQ6E;AACpBN,eAAKT;AACLU,eAAKT;AACLU,eAAKT;AACLU,eAAKT;AACL3D,eAAKwD,QAAQ1E,KAAI4E;AACjBzD,eAAKwD,QAAQ5E,KAAI8E;AACjBzD,UAAAA,MAAKsD,SAAS1E,KAAIkF,UAAUN;AAC5BvD,UAAAA,MAAKsD,SAAS5E,KAAIkF,SAASJ;AAC3B;QACF,KAAK;AACHU,sBAAY3E,QAAQ4E;AACpBL,eAAKT,QAAQE;AACbQ,eAAKT;AACLU,eAAK,CAACT;AACNU,eAAKT;AACL3D,eAAKwD,SAAS,IAAI3E,KAAIkF,SAASL;AAC/BzD,eAAKwD,QAAQ3E,KAAI6E;AACjBzD,UAAAA,MAAKsD,SAAS,IAAI3E,MAAK6E;AACvBvD,UAAAA,MAAKsD,SAAS3E,KAAIkF,UAAUL;AAC5B;QACF,KAAK;AACHU,sBAAY3E,QAAQ6E;AACpBN,eAAKT,QAAQE;AACbQ,eAAKT,QAAQE;AACbQ,eAAK,CAACT;AACNU,eAAK,CAACT;AACN3D,eAAKwD,SAAS,IAAI1E,KAAIkF,UAAUN;AAChCzD,eAAKwD,SAAS,IAAI5E,KAAIkF,SAASJ;AAC/BzD,UAAAA,MAAKsD,SAAS,IAAI1E,MAAK4E;AACvBvD,UAAAA,MAAKsD,SAAS,IAAI5E,MAAK8E;AACvB;MACJ;AAEA,iBAAW;QAAExE;QAAME;MAAO,KAAK,KAAK,QAAQ;AAC1CwE,wBAAgBnD,KACd2D,UACElF,MACA8E,IACAC,IACAC,IACAC,IACAR,eAAe,IAAIY,MAAMrF,KAAKU,MAAM,IAAI,IAC1C,CACF;AACAiE,yBAAiBpD,KACf2D,UACEhF,QACA4E,IACAC,IACAC,IACAC,IACAR,eAAe,IAAIY,MAAMnF,OAAOQ,MAAM,IAAI,IAC5C,CACF;MACF;AAEA,aAAO;QACLwD,OAAOQ;QACPxE,QAAQyE;QACRW,MAAM,CAACzE,IAAIC,IAAIC,KAAIC,GAAE;MACvB;IACF;IAEA,OAAOuE,YACLlB,OACAC,OACAC,WACAC,YACAd,aACA;MAAE8B,OAAO;QAAEtB;QAAOhE;MAAO;MAAGJ;MAAUC;IAAU,GAChD;AACA,YAAM0F,WAAW,CAAA;AACjB,UAAIX,IAAIC,IAAIC,IAAIC,IAAIC;AACpB,cAAQpF,UAAQ;QACd,KAAK;AACHoF,sBAAY3E,QAAQ4E;AACpBL,eAAK,CAACT,QAAQE;AACdQ,eAAKT,QAAQE,aAAa;AAC1BQ,eAAK,IAAIT;AACTU,eAAK,KAAKT;AACV;QACF,KAAK;AACHU,sBAAY3E,QAAQ6E;AACpBN,eAAK,CAACR,QAAQE;AACdO,eAAK,CAACV,QAAQE;AACdS,eAAK,IAAIR;AACTS,eAAK,IAAIV;AACT;QACF,KAAK;AACHW,sBAAY3E,QAAQ4E;AACpBL,eAAKT,QAAQE,YAAY;AACzBQ,eAAK,CAACT,QAAQE;AACdQ,eAAK,KAAKT;AACVU,eAAK,IAAIT;AACT;QACF,KAAK;AACHU,sBAAY3E,QAAQ6E;AACpBN,eAAKR,QAAQE,aAAa;AAC1BO,eAAKV,QAAQE,YAAY;AACzBS,eAAK,KAAKR;AACVS,eAAK,KAAKV;AACV;MACJ;AAEA,UAAI,CAACL,OAAO;AACVA,gBAAQ,CAAA;AACR,mBAAWwB,SAASxF,QAAQ;AAC1B,gBAAMyF,MAAMD,MAAMhF;AAClB,cAAIiF,QAAQ,GAAG;AACbzB,kBAAM3C,KACJ,IAAIW,aAAa,CAACjC,KAAKA,KAAKA,KAAKA,KAAKyF,MAAM,CAAC,GAAGA,MAAM,CAAC,CAAC,CAAC,CAC3D;AACA;UACF;AACA,cAAIC,QAAQ,GAAG;AACbzB,kBAAM3C,KACJ,IAAIW,aAAa,CACfjC,KACAA,KACAA,KACAA,KACAyF,MAAM,CAAC,GACPA,MAAM,CAAC,GACPzF,KACAA,KACAA,KACAA,KACAyF,MAAM,CAAC,GACPA,MAAM,CAAC,CAAC,CACT,CACH;AACA;UACF;AACA,gBAAM1F,OAAO,IAAIkC,aAAa,KAAKyD,MAAM,EAAE;AAC3CzB,gBAAM3C,KAAKvB,IAAI;AACf,cAAI,CAACa,IAAIC,IAAIC,KAAIC,GAAE,IAAI0E,MAAMzE,SAAS,GAAG,CAAC;AAC1CjB,eAAKG,IAAI,CAACF,KAAKA,KAAKA,KAAKA,KAAKY,IAAIC,EAAE,GAAG,CAAC;AACxC,mBAAS0B,KAAI,GAAGA,KAAImD,KAAKnD,MAAK,GAAG;AAC/B,kBAAM9C,KAAIgG,MAAMlD,EAAC;AACjB,kBAAM7C,KAAI+F,MAAMlD,KAAI,CAAC;AACrBxC,iBAAKG,IACHI,QAAQqB,mBAAmBf,IAAIC,IAAIC,KAAIC,KAAItB,IAAGC,EAAC,IAC9C6C,KAAI,KAAK,CACZ;AACA,aAAC3B,IAAIC,IAAIC,KAAIC,GAAE,IAAI,CAACD,KAAIC,KAAItB,IAAGC,EAAC;UAClC;QACF;MACF;AAEA,eAAS6C,KAAI,GAAGC,KAAKyB,MAAMxD,QAAQ8B,KAAIC,IAAID,MAAK;AAC9CiD,iBAASlE,KAAK;UACZvB,MAAMkF,UACJhB,MAAM1B,EAAC,EAAEc,IAAI5D,CAAAA,OAAKA,MAAKO,GAAG,GAC1B6E,IACAC,IACAC,IACAC,EACF;UACA/E,QAAQgF,UACNhF,OAAOsC,EAAC,EAAEc,IAAI5D,CAAAA,OAAKA,MAAKO,GAAG,GAC3B6E,IACAC,IACAC,IACAC,EACF;QACF,CAAC;MACH;AAEA,YAAMW,WAAW,IAAI,KAAKC,UAAUpG,YAAY;AAChDmG,eAASjC,MACP8B,UACAlB,WACAC,YACA,GACA1E,UACAC,WACA2D,WACF;AAEA,aAAOkC;IACT;IAEA,qBAAqB7F,YAAY,KAAK,YAAY;AAChD,YAAM+F,SAAS,KAAK,eAAgB/F,YAAY,IAAK,KAAK;AAC1D,aAAO,KAAK,YAAY,QAAQ,IAC5B,CAAC+F,SAAS,KAAK,cAAcA,SAAS,KAAK,aAAa,IACxD,CAACA,SAAS,KAAK,eAAeA,SAAS,KAAK,YAAY;IAC9D;IAEA,uBAAuB;AACrB,YAAM,CAACpG,IAAGC,IAAGiF,OAAOC,MAAM,IAAI,KAAK;AACnC,YAAM,CAACkB,SAASC,OAAO,IAAI,KAAK,qBAAqB,CAAC;AAEtD,aAAO,CACLtG,KAAIqG,SACJpG,KAAIqG,SACJpB,QAAQ,IAAImB,SACZlB,SAAS,IAAImB,OAAO;IAExB;IAEA,eAAe;AACb,YAAM/B,OAAQ,KAAK,QAAQ,IAAI/B,aAAa,CAC1C+D,UACAA,UACA,WACA,SAAS,CACV;AAED,iBAAW;QAAEjG;MAAK,KAAK,KAAK,QAAQ;AAClC,YAAIA,KAAKU,UAAU,IAAI;AAErB,mBAAS8B,KAAI,GAAGC,KAAKzC,KAAKU,QAAQ8B,KAAIC,IAAID,MAAK,GAAG;AAChD0D,iBAAKC,iBAAiBnG,KAAKwC,EAAC,GAAGxC,KAAKwC,KAAI,CAAC,GAAGyB,IAAI;UAClD;AACA;QACF;AACA,YAAImC,QAAQpG,KAAK,CAAC,GAChBqG,QAAQrG,KAAK,CAAC;AAChB,iBAASwC,KAAI,GAAGC,KAAKzC,KAAKU,QAAQ8B,KAAIC,IAAID,MAAK,GAAG;AAChD,gBAAM,CAACU,KAAKC,KAAKC,KAAKC,KAAK3D,IAAGC,EAAC,IAAIK,KAAKiB,SAASuB,IAAGA,KAAI,CAAC;AACzD0D,eAAKI,kBAAkBF,OAAOC,OAAOnD,KAAKC,KAAKC,KAAKC,KAAK3D,IAAGC,IAAGsE,IAAI;AACnEmC,kBAAQ1G;AACR2G,kBAAQ1G;QACV;MACF;AAEA,YAAM,CAACoG,SAASC,OAAO,IAAI,KAAK,qBAAqB;AACrD/B,WAAK,CAAC,IAAIsC,UAAUtC,KAAK,CAAC,IAAI8B,SAAS,GAAG,CAAC;AAC3C9B,WAAK,CAAC,IAAIsC,UAAUtC,KAAK,CAAC,IAAI+B,SAAS,GAAG,CAAC;AAC3C/B,WAAK,CAAC,IAAIsC,UAAUtC,KAAK,CAAC,IAAI8B,SAAS,GAAG,CAAC;AAC3C9B,WAAK,CAAC,IAAIsC,UAAUtC,KAAK,CAAC,IAAI+B,SAAS,GAAG,CAAC;AAE3C/B,WAAK,CAAC,KAAKA,KAAK,CAAC;AACjBA,WAAK,CAAC,KAAKA,KAAK,CAAC;IACnB;IAEA,IAAIuC,MAAM;AACR,aAAO,KAAK;IACd;IAEApG,eAAeC,OAAMC,OAAO;AAC1B,UAAID,UAAS,gBAAgB;AAC3B,eAAO,KAAK,iBAAiBC,KAAK;MACpC;AACA,aAAO;IACT;IAEA,iBAAiBP,WAAW;AAC1B,YAAM,CAAC0G,YAAYC,UAAU,IAAI,KAAK,qBAAqB;AAC3D,WAAK,aAAa3G;AAClB,YAAM,CAAC4G,YAAYC,UAAU,IAAI,KAAK,qBAAqB;AAC3D,YAAM,CAACC,aAAaC,WAAW,IAAI,CACjCH,aAAaF,YACbG,aAAaF,UAAU;AAEzB,YAAMzC,OAAO,KAAK;AAClBA,WAAK,CAAC,KAAK4C;AACX5C,WAAK,CAAC,KAAK6C;AACX7C,WAAK,CAAC,KAAK,IAAI4C;AACf5C,WAAK,CAAC,KAAK,IAAI6C;AAEf,aAAO7C;IACT;IAEA8C,uBAAuB,CAACnC,OAAOC,MAAM,GAAGpB,OAAO;AAC7C,YAAM,CAACgD,YAAYC,UAAU,IAAI,KAAK,qBAAqB;AAC3D,WAAK,eAAe9B;AACpB,WAAK,gBAAgBC;AACrB,WAAK,eAAepB;AACpB,YAAM,CAACkD,YAAYC,UAAU,IAAI,KAAK,qBAAqB;AAC3D,YAAMC,cAAcF,aAAaF;AACjC,YAAMK,cAAcF,aAAaF;AAEjC,YAAMzC,OAAO,KAAK;AAClBA,WAAK,CAAC,KAAK4C;AACX5C,WAAK,CAAC,KAAK6C;AACX7C,WAAK,CAAC,KAAK,IAAI4C;AACf5C,WAAK,CAAC,KAAK,IAAI6C;AAEf,aAAO7C;IACT;IAEA+C,eAAelH,UAAU;AACvB,WAAK,mBAAmBA;AACxB,aAAO;QACL2B,MAAM;UACJwF,WAAW,KAAKC;QAClB;MACF;IACF;IAEA,IAAIpD,UAAU;AACZ,aAAO,KAAK,MAAMR,IAAI/C,QAAQoC,QAAQ,EAAEY,KAAK,GAAG;IAClD;IAEA,IAAI4D,oBAAoB;AACtB,YAAM,CAACzH,IAAGC,EAAC,IAAI,KAAK;AACpB,aAAO;QACLkE,MAAM;UACJC,SAAS,KAAKA;QAChB;QACArC,MAAM;UACJ,oBAAoB,GAAGlB,QAAQoC,SAASjD,EAAC,CAAC,IAAIa,QAAQoC,SAAShD,EAAC,CAAC;QACnE;MACF;IACF;IAEA,IAAIuH,oBAAoB;AACtB,YAAM,CAAA,EAAA,EAAKtC,OAAOC,MAAM,IAAI,KAAK;AACjC,UAAIuC,KAAI,GACNC,KAAI,GACJC,KAAI,GACJlG,KAAI,GACJmG,KAAI,GACJC,KAAI;AACN,cAAQ,KAAK,kBAAgB;QAC3B,KAAK;AACHH,UAAAA,KAAIxC,SAASD;AACb0C,UAAAA,KAAI,CAAC1C,QAAQC;AACb0C,UAAAA,KAAI3C;AACJ;QACF,KAAK;AACHwC,UAAAA,KAAI;AACJhG,UAAAA,KAAI;AACJmG,UAAAA,KAAI3C;AACJ4C,UAAAA,KAAI3C;AACJ;QACF,KAAK;AACHwC,UAAAA,KAAI,CAACxC,SAASD;AACd0C,UAAAA,KAAI1C,QAAQC;AACZ2C,UAAAA,KAAI3C;AACJ;QACF;AACE,iBAAO;MACX;AACA,aAAO,UAAUuC,EAAC,IAAIC,EAAC,IAAIC,EAAC,IAAIlG,EAAC,IAAIb,QAAQoC,SAAS4E,EAAC,CAAC,IAAIhH,QAAQoC,SAAS6E,EAAC,CAAC;IACjF;IAEAC,6BAA6B,CAACC,MAAMC,MAAMC,UAAUC,SAAS,GAAG;AAC9D,YAAM,CAAC9B,SAASC,OAAO,IAAI,KAAK,qBAAqB;AACrD,YAAM,CAACtG,IAAGC,IAAGiF,OAAOC,MAAM,IAAI,KAAK;AAEnC,UACExD,KAAKyG,IAAIlD,QAAQmB,OAAO,KAAKxF,QAAQwH,aACrC1G,KAAKyG,IAAIjD,SAASmB,OAAO,KAAKzF,QAAQwH,WACtC;AAEA,cAAMjD,KAAK4C,OAAOE,WAAW,KAAKlI,KAAIkF,QAAQ;AAC9C,cAAMG,KAAK4C,OAAOE,YAAY,KAAKlI,KAAIkF,SAAS;AAChD,eAAO;UACLpD,MAAM;YACJ,oBAAoB,GAAGlB,QAAQoC,SAAS+E,IAAI,CAAC,IAAInH,QAAQoC,SAASgF,IAAI,CAAC;YACvEV,WAAW,GAAG,KAAKC,iBAAiB,cAAcpC,EAAE,IAAIC,EAAE;UAC5D;QACF;MACF;AAYA,YAAMiD,OAAOJ,WAAW,IAAI7B,YAAYnB,QAAQ,IAAImB;AACpD,YAAMkC,OAAOJ,YAAY,IAAI7B,YAAYnB,SAAS,IAAImB;AACtD,YAAMkC,MAAMtD,QAAQgD;AACpB,YAAMO,MAAMtD,SAASgD;AAErB,aAAO;QACLpG,MAAM;UACJ,oBAAoB,GAAGlB,QAAQoC,SAASjD,EAAC,CAAC,IAAIa,QAAQoC,SAAShD,EAAC,CAAC;UACjEsH,WACE,GAAG,KAAKC,iBAAiB,UAAUgB,GAAG,IAAIC,GAAG,eAChC5H,QAAQoC,SAASoD,OAAO,CAAC,IAAIxF,QAAQoC,SAASqD,OAAO,CAAC,WAAWgC,GAAG,IAAIC,GAAG,eAC3E1H,QAAQoC,SAAS,CAACoD,OAAO,CAAC,IAAIxF,QAAQoC,SAAS,CAACqD,OAAO,CAAC;QACzE;MACF;IACF;IAEAoC,4BAA4B,CAACV,MAAMC,MAAMC,UAAUC,SAAS,GAAG;AAC7D,YAAM,CAAC9B,SAASC,OAAO,IAAI,KAAK,qBAAqB;AACrD,YAAM/B,OAAO,KAAK;AAClB,YAAM,CAACvE,IAAGC,IAAGiF,OAAOC,MAAM,IAAIZ;AAE9BA,WAAK,CAAC,IAAIyD;AACVzD,WAAK,CAAC,IAAI0D;AACV1D,WAAK,CAAC,IAAI2D;AACV3D,WAAK,CAAC,IAAI4D;AAEV,UACExG,KAAKyG,IAAIlD,QAAQmB,OAAO,KAAKxF,QAAQwH,aACrC1G,KAAKyG,IAAIjD,SAASmB,OAAO,KAAKzF,QAAQwH,WACtC;AAEA,cAAMjD,MAAK4C,OAAOE,WAAW,KAAKlI,KAAIkF,QAAQ;AAC9C,cAAMG,MAAK4C,OAAOE,YAAY,KAAKlI,KAAIkF,SAAS;AAChD,mBAAW;UAAE7E;UAAME;QAAO,KAAK,KAAK,QAAQ;AAC1CK,kBAAQ8H,WAAWrI,MAAM8E,KAAIC,KAAI/E,IAAI;AACrCO,kBAAQ8H,WAAWnI,QAAQ4E,KAAIC,KAAI7E,MAAM;QAC3C;AACA,eAAO;UACL2D,MAAM;YACJC,SAAS,KAAKA;UAChB;UACArC,MAAM;YACJ,oBAAoB,GAAGlB,QAAQoC,SAAS+E,IAAI,CAAC,IAAInH,QAAQoC,SAASgF,IAAI,CAAC;YACvEV,WAAW,KAAKC,qBAAqB;YACrC9F,GAAG,KAAKM,UAAU;UACpB;QACF;MACF;AAUA,YAAMsG,OAAOJ,WAAW,IAAI7B,YAAYnB,QAAQ,IAAImB;AACpD,YAAMkC,OAAOJ,YAAY,IAAI7B,YAAYnB,SAAS,IAAImB;AACtD,YAAMlB,KAAK,CAACkD,OAAOtI,KAAIqG,WAAW2B,OAAO3B;AACzC,YAAMhB,KAAK,CAACkD,OAAOtI,KAAIqG,WAAW2B,OAAO3B;AAEzC,UAAIgC,QAAQ,KAAKC,QAAQ,KAAKnD,OAAO,KAAKC,OAAO,GAAG;AAClD,mBAAW;UAAE/E;UAAME;QAAO,KAAK,KAAK,QAAQ;AAC1CK,kBAAQ4E,SAASnF,MAAM8E,IAAIC,IAAIiD,KAAKC,KAAKjI,IAAI;AAC7CO,kBAAQ4E,SAASjF,QAAQ4E,IAAIC,IAAIiD,KAAKC,KAAK/H,MAAM;QACnD;MACF;AAEA,aAAO;QACL2D,MAAM;UACJC,SAAS,KAAKA;QAChB;QACArC,MAAM;UACJ,oBAAoB,GAAGlB,QAAQoC,SAAS+E,IAAI,CAAC,IAAInH,QAAQoC,SAASgF,IAAI,CAAC;UACvEV,WAAW,KAAKC,qBAAqB;UACrC9F,GAAG,KAAKM,UAAU;QACpB;MACF;IACF;IAEA4G,+BAA+B,CAACZ,MAAMC,IAAI,GAAGY,kBAAkB;AAC7D,YAAM,CAACC,gBAAgBC,eAAe,IAAIF;AAC1C,YAAMtE,OAAO,KAAK;AAClB,YAAMa,KAAK4C,OAAOzD,KAAK,CAAC;AACxB,YAAMc,KAAK4C,OAAO1D,KAAK,CAAC;AAExB,UACE,KAAK,iBAAiBuE,kBACtB,KAAK,kBAAkBC,iBACvB;AAEA,mBAAW;UAAEzI;UAAME;QAAO,KAAK,KAAK,QAAQ;AAC1CK,kBAAQ8H,WAAWrI,MAAM8E,IAAIC,IAAI/E,IAAI;AACrCO,kBAAQ8H,WAAWnI,QAAQ4E,IAAIC,IAAI7E,MAAM;QAC3C;MACF,OAAO;AACL,cAAM8E,KAAK,KAAK,eAAewD;AAC/B,cAAMvD,KAAK,KAAK,gBAAgBwD;AAChC,aAAK,eAAeD;AACpB,aAAK,gBAAgBC;AAErB,mBAAW;UAAEzI;UAAME;QAAO,KAAK,KAAK,QAAQ;AAC1CK,kBAAQ4E,SAASnF,MAAM8E,IAAIC,IAAIC,IAAIC,IAAIjF,IAAI;AAC3CO,kBAAQ4E,SAASjF,QAAQ4E,IAAIC,IAAIC,IAAIC,IAAI/E,MAAM;QACjD;AACA+D,aAAK,CAAC,KAAKe;AACXf,aAAK,CAAC,KAAKgB;MACb;AACAhB,WAAK,CAAC,IAAIyD;AACVzD,WAAK,CAAC,IAAI0D;AAEV,aAAO;QACL9D,MAAM;UACJC,SAAS,KAAKA;QAChB;QACArC,MAAM;UACJL,GAAG,KAAKM,UAAU;UAClB,oBAAoB,GAAGnB,QAAQoC,SAAS+E,IAAI,CAAC,IAAInH,QAAQoC,SAASgF,IAAI,CAAC;QACzE;MACF;IACF;IAEA,IAAI/D,uBAAuB;AACzB,YAAMK,OAAO,KAAK;AAClB,aAAO;QACLJ,MAAM;UACJC,SAAS,KAAKA;QAChB;QACAC,WAAW;UACTC,MAAM;QACR;QACAvC,MAAM;UACJL,GAAG,KAAKM,UAAU;UAClB,oBAAoB,GAAGnB,QAAQoC,SAASsB,KAAK,CAAC,CAAC,CAAC,IAAI1D,QAAQoC,SAASsB,KAAK,CAAC,CAAC,CAAC;UAC7EgD,WAAW,KAAKC,qBAAqB;QACvC;QACAjD;MACF;IACF;EACF;ACn2BA,MAAMyE,oBAAN,MAAMA,2BAA0BC,eAAe;IAC7CC,YAAYC,kBAAkB;AAC5B,YAAM;AACN,WAAKC,kBAAkBD;AAEvB,YAAME,iBAAiB;QACrBC,MAAM;QACNC,QAAQC,iBAAiBC;QACzB,kBAAkB;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,qBAAqB;MACvB,CAAC;IACH;IAEAC,kBAAkBC,OAAMC,OAAO;AAC7B,UAAID,UAAS,gBAAgB;AAC3BC,kBAAU,KAAK,cAAc;AAC7BA,iBAAS,KAAKR,gBAAgBS;MAChC;AACA,YAAMH,kBAAkBC,OAAMC,KAAK;IACrC;IAEAE,QAAQ;AACN,YAAMA,SAAQ,IAAId,mBAAkB,KAAKI,eAAe;AACxDU,MAAAA,OAAMC,UAAU,IAAI;AACpB,aAAOD;IACT;EACF;AAKA,MAAME,YAAN,MAAMA,mBAAkBC,cAAc;IACpC,OAAOC,QAAQ;IAEf,OAAOC,cAAcC,qBAAqBC;IAE1C,OAAOC,yBAAyB;IAEhCpB,YAAYqB,QAAQ;AAClB,YAAM;QAAE,GAAGA;QAAQZ,MAAM;MAAY,CAAC;AACtC,WAAKa,uBAAuB;AAC5B,WAAKC,gBAAgB;IACvB;IAGA,OAAOC,WAAWC,MAAMC,WAAW;AACjCpB,uBAAiBkB,WAAWC,MAAMC,SAAS;AAC3C,WAAKN,yBAAyB,IAAItB,kBAChC4B,UAAUC,cACZ;IACF;IAGA,OAAOC,yBAAyBC,SAAS;AACvC,YAAMjB,SAAQ,KAAKQ,uBAAuBR,MAAM;AAChDA,MAAAA,OAAMT,iBAAiB0B,OAAO;AAC9B,aAAOjB;IACT;IAGA,WAAWkB,0BAA0B;AACnC,aAAO;IACT;IAGA,WAAWC,WAAW;AACpB,aAAOC,OACL,MACA,YACA,oBAAIC,IAAI,CACN,CAACC,2BAA2BC,eAAe,cAAc,GACzD,CAACD,2BAA2BE,WAAW,QAAQ,GAC/C,CAACF,2BAA2BG,aAAa,gBAAgB,CAAC,CAC3D,CACH;IACF;IAGA,OAAOC,qBAAqBC,IAAGC,IAAGC,aAAaC,cAAcC,UAAU;AACrE,aAAO,IAAIC,gBACTL,IACAC,IACAC,aACAC,cACAC,UACA,KAAKvB,uBAAuB,cAAc,CAC5C;IACF;IAGA,OAAOyB,gBACLC,OACAC,OACAC,WACAC,YACAC,aACAC,MACA;AACA,aAAOC,eAAeC,YACpBP,OACAC,OACAC,WACAC,YACAC,aACAC,IACF;IACF;IAGA,aAAaE,YAAYF,MAAMG,QAAQ5B,WAAW;AAChD,UAAI6B,cAAc;AAClB,UAAIJ,gBAAgBK,sBAAsB;AACxC,cAAM;UACJL,MAAM;YACJM;YACAC;YACAf;YACAgB;YACAC,OAAAA;YACAC;YACAC,aAAa;cAAEC,UAAUC;YAAU;YACnCC;YACAC;YACAC;YACAC;YACAC;UACF;UACAf,QAAQ;YACNgB,MAAM;cAAEC;YAAW;UACrB;QACF,IAAIpB;AACJI,sBAAcJ,OAAO;UACnBqB,gBAAgBtD,qBAAqBC;UACrCyC,OAAOa,MAAMC,KAAKd,MAAK;UACvBI;UACAH;UACAc,OAAO;YAAEC,QAAQnB;UAAS;UAC1BoB,OAAO;UACPC,WAAWP,aAAa;UACxBb,MAAMA,KAAKqB,MAAM,CAAC;UAClBpC;UACAqC,qBAAqBrB;UACrBA;UACAsB,SAAS;UACThB;UACAC;UACAgB,SAASf,aAAagB,OAAO;UAC7Bf;UACAC;QACF;MACF;AAEA,YAAMe,SAAS,MAAM,MAAM/B,YAAYF,MAAMG,QAAQ5B,SAAS;AAC9D0D,aAAOC,eAAe9B;AACtB,UAAIJ,KAAK+B,SAAS;AAChBE,eAAOE,eAAenC,IAAI;MAC5B;AAEA,aAAOiC;IACT;IAGA,IAAIG,iBAAiB;AACnB,WAAKC,iBAAiB,IAAIC,iBAAiB,IAAI;AAC/C,aAAO,CAAC,CAAC,eAAe,KAAKD,YAAY,CAAC;IAC5C;IAEA,IAAIE,YAAY;AACd,aAAOxD,2BAA2BE;IACpC;IAEA,IAAIwB,QAAQ;AACV,aAAO,KAAK+B,gBAAgBtF;IAC9B;IAEA,IAAIwD,UAAU;AACZ,aAAO,KAAK8B,gBAAgB,gBAAgB;IAC9C;IAGAC,kBAAkB;AAChB,UAAI,CAAC,KAAKtC,QAAQ;AAChB;MACF;AACA,YAAMsC,gBAAgB;AACtB,YAAM;QAAEC;QAASF;QAAiBrC;MAAO,IAAI;AAC7CqC,sBAAgBnF,kBAAkB,cAAc;AAChD8C,aAAOwC,UAAU3F,iBACf0F,SACAF,gBAAgBI,gBAAgB,CAClC;IACF;IAEA,OAAOC,6BAA6B;AAClC,YAAM1C,SAAS,KAAK2C;AACpB,UAAI,CAAC3C,QAAQ;AACX;MACF;AACA,YAAM0C,2BAA2B;AACjC,WAAK5E,uBAAuBZ,kBAAkB,cAAc;AAC5D8C,aAAOwC,UAAU3F,iBACf,KAAK+F,gBACL,KAAK9E,uBAAuB2E,gBAAgB,CAC9C;IACF;IAGAI,qBAAqB;MAAEvC,OAAAA;MAAOI;MAAWH;IAAQ,GAAG;AAClD,WAAK8B,kBAAkB7E,WAAUc,yBAAyB;QACxDvB,QAAQ+F,KAAKC,aAAa,GAAGzC,MAAK;QAClC,gBAAgBI;QAChB,kBAAkBH;MACpB,CAAC;IACH;IAGAyC,UAAUC,eAAe,OAAO;AAC9B,UAAI,KAAKC,QAAQ,GAAG;AAClB,eAAO;MACT;AAEA,UAAI,KAAKvB,SAAS;AAChB,eAAO,KAAKwB,iBAAiB;MAC/B;AAEA,YAAM;QAAEC;QAAO9B;MAAO,IAAI,KAAK+B,cAAcJ,YAAY;AACzD,YAAM;QACJZ,iBAAiB;UACftF;UACA,kBAAkBwD;UAClB,gBAAgBG;QAClB;MACF,IAAI;AACJ,YAAM4C,aAAaC,OAAOC,OAAO,MAAMR,UAAUC,YAAY,GAAG;QAC9D3C,OAAOtD,iBAAiByG,cAAcC,QAAQ3G,MAAM;QACpDwD;QACAG;QACAW,OAAO;UACL+B;UACA9B;QACF;MACF,CAAC;AACD,WAAKqC,WAAWL,UAAU;AAE1B,UAAIL,cAAc;AAChBK,mBAAWM,SAAS;AACpB,eAAON;MACT;AAEA,UAAI,KAAK5B,uBAAuB,CAAC,KAAK,mBAAmB4B,UAAU,GAAG;AACpE,eAAO;MACT;AAEAA,iBAAWjD,KAAK,KAAKqB;AACrB,aAAO4B;IACT;IAEA,mBAAmBA,YAAY;AAC7B,YAAM;QAAEhD,OAAAA;QAAOI;QAAWH;QAASiB;MAAU,IAAI,KAAKO;AACtD,aACE,KAAK8B,oBACL,KAAKC,iBACL,KAAKC,mBACLT,WAAWhD,MAAM0D,KAAK,CAACC,IAAGC,OAAMD,OAAM3D,OAAM4D,EAAC,CAAC,KAC9CZ,WAAW5C,cAAcA,aACzB4C,WAAW/C,YAAYA,WACvB+C,WAAW9B,cAAcA;IAE7B;IAGA2C,wBAAwBC,YAAY;AAClC,UAAI,KAAKzC,SAAS;AAChByC,mBAAWC,KAAK;AAChB,eAAO;MACT;AACA,YAAM;QAAE/C;QAAQlB;MAAK,IAAI,KAAKiD,cAAmC,KAAK;AACtEe,iBAAWE,aAAa;QACtBlE;QACAM,WAAW,KAAK2B,gBAAgB,cAAc;QAC9Cf;QACAiD,OAAO,KAAK3C;MACd,CAAC;AAED,aAAO;IACT;EACF;AC3SA,MAAM4C,qBAAN,cAAiCC,eAAe;IAC9CC,YAAY;AACV,UAAIC,OAAO,MAAMD,UAAU;AAC3B,UAAI,CAACC,KAAKC,SAAS,GAAG,GAAG;AACvBD,gBAAQ;MACV;AACA,aAAOA;IACT;EACF;ACLA,MAAME,qBAAqB;AAC3B,MAAMC,2BAA2B;AAKjC,MAAMC,qBAAN,MAAyB;IACvB,OAAO,cAAc;MACnBC,QAAQ;MACRC,cAAc;MACdC,QAAQ;MACRC,YAAY;IACd;IAEA,OAAO,mBAAmBC,IAAIC,IAAIC,IAAGC,IAAG;AAQtCD,MAAAA,MAAKF;AACLG,MAAAA,MAAKF;AAEL,UAAIC,OAAM,GAAG;AACX,eAAOC,KAAI,IAAI,IAAI;MACrB;AAEA,UAAID,OAAM,GAAG;AACX,eAAOC,KAAI;MACb;AAEA,aAAO,IAAIA;IACb;IAEA,OAAO,qBAAqB,IAAIC,WAAW,CACzC,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CACrD;IAED,OAAO,kBAAkBC,KAAKC,OAAON,IAAIC,IAAIC,IAAGC,IAAGI,QAAQ;AACzD,YAAMC,KAAK,KAAK,mBAAmBR,IAAIC,IAAIC,IAAGC,EAAC;AAC/C,eAASM,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1B,cAAMC,MAAM,CAACD,KAAID,KAAKD,SAAS,MAAM;AACrC,cAAMI,SAAS,KAAK,mBAAmB,IAAID,EAAE;AAC7C,cAAME,SAAS,KAAK,mBAAmB,IAAIF,KAAK,CAAC;AACjD,YAAIL,KAAKL,KAAKW,UAAUL,SAASL,KAAKW,OAAO,MAAM,GAAG;AACpD,iBAAOF;QACT;MACF;AACA,aAAO;IACT;IAEA,OAAO,yBAAyBL,KAAKC,OAAON,IAAIC,IAAIC,IAAGC,IAAGI,QAAQ;AAChE,YAAMC,KAAK,KAAK,mBAAmBR,IAAIC,IAAIC,IAAGC,EAAC;AAC/C,eAASM,KAAI,GAAGA,KAAI,GAAGA,MAAK;AAC1B,cAAMC,MAAMD,KAAID,KAAKD,SAAS,MAAM;AACpC,cAAMI,SAAS,KAAK,mBAAmB,IAAID,EAAE;AAC7C,cAAME,SAAS,KAAK,mBAAmB,IAAIF,KAAK,CAAC;AACjD,YAAIL,KAAKL,KAAKW,UAAUL,SAASL,KAAKW,OAAO,MAAM,GAAG;AACpD,iBAAOF;QACT;MACF;AACA,aAAO;IACT;IAEA,OAAO,cAAcL,KAAKC,OAAOO,QAAQC,WAAW;AAIlD,YAAMC,KAAIV,IAAIW;AACd,YAAMC,SAAQ,IAAIb,WAAWW,EAAC;AAC9B,eAASb,KAAI,GAAGA,KAAIa,IAAGb,MAAK;AAC1Be,QAAAA,OAAMf,EAAC,IAAIG,IAAIH,EAAC,KAAKY,YAAY,IAAI;MACvC;AAEA,eAASZ,KAAI,GAAGA,KAAIW,SAAS,GAAGX,MAAK;AACnCe,QAAAA,OAAMf,KAAII,KAAK,IAAIW,OAAMf,KAAII,QAAQA,QAAQ,CAAC,IAAI;MACpD;AACA,eAASJ,KAAI,GAAGA,KAAII,OAAOJ,MAAK;AAC9Be,QAAAA,OAAMf,EAAC,IAAIe,OAAMX,QAAQO,SAAS,IAAIX,EAAC,IAAI;MAC7C;AAEA,UAAIgB,MAAM;AACV,UAAIC;AACJ,YAAMC,WAAW,CAAA;AAEjB,eAASlB,KAAI,GAAGA,KAAIW,SAAS,GAAGX,MAAK;AACnCiB,eAAO;AACP,iBAAShB,KAAI,GAAGA,KAAIG,QAAQ,GAAGH,MAAK;AAClC,gBAAMkB,KAAKnB,KAAII,QAAQH;AACvB,gBAAMmB,MAAML,OAAMI,EAAE;AACpB,cAAIC,QAAQ,GAAG;AACb;UACF;AAEA,cAAIC,MAAKrB;AACT,cAAIsB,MAAKrB;AAET,cAAImB,QAAQ,KAAKL,OAAMI,KAAK,CAAC,MAAM,GAAG;AAEpCH,mBAAO;AACPM,YAAAA,OAAM;UACR,WAAWF,OAAO,KAAKL,OAAMI,KAAK,CAAC,MAAM,GAAG;AAE1CH,mBAAO;AACPM,YAAAA,OAAM;AACN,gBAAIF,MAAM,GAAG;AACXH,qBAAOG;YACT;UACF,OAAO;AACL,gBAAIA,QAAQ,GAAG;AACbH,qBAAOM,KAAKC,IAAIJ,GAAG;YACrB;AACA;UACF;AAEA,gBAAMK,SAAS,CAACxB,IAAGD,EAAC;AACpB,gBAAM0B,SAASJ,QAAOrB,KAAI;AAC1B,gBAAM0B,UAAU;YACdD;YACAD;YACAnB,IAAIU;YACJY,QAAQ;UACV;AACAV,mBAASW,KAAKF,OAAO;AAErB,cAAIG;AACJ,qBAAWC,MAAKb,UAAU;AACxB,gBAAIa,GAAEzB,OAAOW,MAAM;AACjBa,yBAAWC;AACX;YACF;UACF;AAEA,cAAI,CAACD,UAAU;AACbH,oBAAQC,SAASF,SAAST,OAAO;UACnC,WAAWa,SAASJ,QAAQ;AAC1BC,oBAAQC,SAASF,SAASI,SAASF,SAASX;UAC9C,OAAO;AACLU,oBAAQC,SAASF,SAAST,OAAOa,SAASF;UAC5C;AAEA,gBAAMrB,KAAI,KAAK,kBAAkBQ,QAAOX,OAAOJ,IAAGC,IAAGoB,KAAIC,KAAI,CAAC;AAC9D,cAAIf,OAAM,IAAI;AACZQ,YAAAA,OAAMI,EAAE,IAAI,CAACH;AACb,gBAAID,OAAMI,EAAE,MAAM,GAAG;AACnBF,qBAAOM,KAAKC,IAAIT,OAAMI,EAAE,CAAC;YAC3B;AACA;UACF;AAEA,cAAIV,SAAS,KAAK,mBAAmB,IAAIF,EAAC;AAC1C,cAAIG,SAAS,KAAK,mBAAmB,IAAIH,KAAI,CAAC;AAC9C,gBAAMyB,KAAKhC,KAAIS;AACf,gBAAMwB,KAAKhC,KAAIS;AACfW,UAAAA,MAAKW;AACLV,UAAAA,MAAKW;AACL,cAAIC,MAAKlC;AACT,cAAImC,MAAKlC;AAET,iBAAO,MAAM;AACX,kBAAMO,KAAK,KAAK,yBACdO,QACAX,OACA8B,KACAC,KACAd,KACAC,KACA,CACF;AACAb,qBAAS,KAAK,mBAAmB,IAAID,EAAE;AACvCE,qBAAS,KAAK,mBAAmB,IAAIF,KAAK,CAAC;AAC3C,kBAAM4B,MAAKF,MAAKzB;AAChB,kBAAM4B,MAAKF,MAAKzB;AAChBe,mBAAOI,KAAKQ,KAAID,GAAE;AAClB,kBAAME,MAAMJ,MAAK9B,QAAQ+B;AACzB,gBAAIpB,OAAMuB,MAAM,CAAC,MAAM,GAAG;AACxBvB,cAAAA,OAAMuB,GAAG,IAAI,CAACtB;YAChB,WAAWD,OAAMuB,GAAG,MAAM,GAAG;AAC3BvB,cAAAA,OAAMuB,GAAG,IAAItB;YACf;AAEA,gBAAIoB,QAAOpC,MAAKqC,QAAOpC,MAAKiC,QAAOF,MAAMG,QAAOF,IAAI;AAClD,kBAAIlB,OAAMI,EAAE,MAAM,GAAG;AACnBF,uBAAOM,KAAKC,IAAIT,OAAMI,EAAE,CAAC;cAC3B;AACA;YACF,OAAO;AACLE,cAAAA,MAAKa;AACLZ,cAAAA,MAAKa;AACLD,cAAAA,MAAKE;AACLD,cAAAA,MAAKE;YACP;UACF;QACF;MACF;AACA,aAAOnB;IACT;IAEA,OAAO,sBAAsBO,QAAQc,QAAOC,KAAKC,QAAQ;AAGvD,UAAID,MAAMD,UAAS,GAAG;AACpB,iBAASvC,KAAIuC,QAAOvC,KAAIwC,MAAM,GAAGxC,MAAK,GAAG;AACvCyC,iBAAOZ,KAAKJ,OAAOzB,EAAC,GAAGyB,OAAOzB,KAAI,CAAC,CAAC;QACtC;AACA;MACF;AAEA,YAAM0C,KAAKjB,OAAOc,MAAK;AACvB,YAAMI,KAAKlB,OAAOc,SAAQ,CAAC;AAC3B,YAAMK,MAAMnB,OAAOe,MAAM,CAAC,IAAIE;AAC9B,YAAMG,MAAMpB,OAAOe,MAAM,CAAC,IAAIG;AAC9B,YAAMG,OAAOvB,KAAKwB,MAAMH,KAAKC,GAAG;AAChC,YAAMG,OAAOJ,MAAME;AACnB,YAAMG,OAAOJ,MAAMC;AACnB,YAAMI,KAAKF,OAAOL,KAAKM,OAAOP;AAK9B,YAAMS,KAAIN,MAAMD;AAChB,YAAMQ,OAAO,IAAIN;AACjB,YAAMO,MAAM9B,KAAK+B,KAAKH,EAAC;AACvB,YAAMI,SAAShC,KAAKiC,IAAIH,GAAG;AAC3B,YAAMI,SAASlC,KAAKmC,IAAIL,GAAG;AAC3B,YAAMM,OAAOP,QAAQ7B,KAAKC,IAAI+B,MAAM,IAAIhC,KAAKC,IAAIiC,MAAM;AACvD,YAAMG,OAAOR,QAAQ,IAAIO,OAAOA,QAAQ;AACxC,YAAME,aAAatC,KAAKuC,IACtBvC,KAAK+B,KAAK/B,KAAKC,IAAIiC,SAASF,MAAM,IAAIK,IAAI,GAC1CrC,KAAK+B,KAAK/B,KAAKC,IAAIiC,SAASF,MAAM,IAAIK,IAAI,CAC5C;AAEA,UAAIG,OAAO;AACX,UAAIC,SAAQzB;AACZ,eAASvC,KAAIuC,SAAQ,GAAGvC,KAAIwC,MAAM,GAAGxC,MAAK,GAAG;AAC3C,cAAMiE,KAAI1C,KAAKC,IAAI0B,KAAKF,OAAOvB,OAAOzB,KAAI,CAAC,IAAIiD,OAAOxB,OAAOzB,EAAC,CAAC;AAC/D,YAAIiE,KAAIF,MAAM;AACZC,UAAAA,SAAQhE;AACR+D,iBAAOE;QACT;MACF;AAEA,UAAIF,QAAQjB,OAAOe,eAAe,GAAG;AACnC,aAAK,sBAAsBpC,QAAQc,QAAOyB,SAAQ,GAAGvB,MAAM;AAC3D,aAAK,sBAAsBhB,QAAQuC,QAAOxB,KAAKC,MAAM;MACvD,OAAO;AACLA,eAAOZ,KAAKa,IAAIC,EAAE;MACpB;IACF;IAEA,OAAO,gBAAgBlB,QAAQ;AAC7B,YAAMgB,SAAS,CAAA;AACf,YAAMyB,MAAMzC,OAAOX;AACnB,WAAK,sBAAsBW,QAAQ,GAAGyC,KAAKzB,MAAM;AACjDA,aAAOZ,KAAKJ,OAAOyC,MAAM,CAAC,GAAGzC,OAAOyC,MAAM,CAAC,CAAC;AAC5C,aAAOzB,OAAO3B,UAAU,IAAI,OAAO2B;IACrC;IAEA,OAAO,iBAAiBtC,KAAKC,OAAOO,QAAQwD,QAAQvE,QAAQC,YAAY;AAStE,YAAMuE,SAAS,IAAIC,aAAaxE,cAAc,CAAC;AAC/C,YAAMyE,UAAU,KAAKH,UAAU;AAC/B,YAAMI,WAAW1E,cAAc;AAE/B,eAASG,KAAI,GAAGA,KAAIH,YAAYG,MAAK;AACnC,cAAMwE,MAAKxE,KAAIuE,aAAa;AAC5B,iBAAStE,KAAI,GAAGA,KAAIJ,YAAYI,MAAK;AACnCmE,iBAAOpE,KAAIH,aAAaI,EAAC,IAAIsB,KAAKkD,KAC/BD,MAAKvE,KAAIsE,aAAa,KAAKD,OAC9B;QACF;MACF;AAIA,YAAMI,cAAc,IAAIL,aAAa,GAAG;AACxC,YAAMM,UAAU,KAAK/E,UAAU;AAC/B,eAASI,KAAI,GAAGA,KAAI,KAAKA,MAAK;AAC5B0E,oBAAY1E,EAAC,IAAIuB,KAAKkD,IAAIzE,MAAK,IAAI2E,OAAO;MAC5C;AAEA,YAAM9D,KAAIV,IAAIW;AACd,YAAM8D,MAAM,IAAIC,WAAWhE,EAAC;AAI5B,YAAMiE,YAAY,IAAIC,YAAY,GAAG;AACrC,eAAS/E,KAAI,GAAGA,KAAIW,QAAQX,MAAK;AAC/B,iBAASC,KAAI,GAAGA,KAAIG,OAAOH,MAAK;AAC9B,gBAAMkB,KAAKnB,KAAII,QAAQH;AACvB,gBAAM+E,SAAS7E,IAAIgB,EAAE;AACrB,cAAI8D,MAAM;AACV,cAAIC,OAAO;AAEX,mBAAS3E,KAAI,GAAGA,KAAIV,YAAYU,MAAK;AACnC,kBAAM4E,KAAInF,KAAIO,KAAIgE;AAClB,gBAAIY,KAAI,KAAKA,MAAKxE,QAAQ;AACxB;YACF;AACA,qBAASyE,KAAI,GAAGA,KAAIvF,YAAYuF,MAAK;AACnC,oBAAMZ,KAAIvE,KAAImF,KAAIb;AAClB,kBAAIC,KAAI,KAAKA,MAAKpE,OAAO;AACvB;cACF;AACA,oBAAMiF,YAAYlF,IAAIgF,KAAI/E,QAAQoE,EAAC;AACnC,oBAAMc,KACJlB,OAAO7D,KAAIV,aAAauF,EAAC,IACzBV,YAAYnD,KAAKC,IAAI6D,YAAYL,MAAM,CAAC;AAC1CC,qBAAOI,YAAYC;AACnBJ,sBAAQI;YACV;UACF;AAEA,gBAAMlE,MAAOwD,IAAIzD,EAAE,IAAII,KAAKgE,MAAMN,MAAMC,IAAI;AAC5CJ,oBAAU1D,GAAG;QACf;MACF;AAEA,aAAO,CAACwD,KAAKE,SAAS;IACxB;IAEA,OAAO,cAAc3E,KAAK;AACxB,YAAM2E,YAAY,IAAIC,YAAY,GAAG;AACrC,iBAAWS,MAAKrF,KAAK;AACnB2E,kBAAUU,EAAC;MACb;AACA,aAAOV;IACT;IAEA,OAAO,SAAS3E,KAAK;AAKnB,YAAMU,KAAIV,IAAIW;AACd,YAAM8D,MAAM,IAAIa,kBAAkB5E,MAAK,CAAC;AACxC,UAAIiD,MAAM;AACV,UAAI4B,MAAMC;AACV,eAAS3F,KAAI,GAAG4F,KAAKhB,IAAI9D,QAAQd,KAAI4F,IAAI5F,MAAK;AAC5C,cAAMoB,MAAOwD,IAAI5E,EAAC,IAAIG,IAAIH,MAAK,CAAC;AAChC8D,cAAMvC,KAAKuC,IAAIA,KAAK1C,GAAG;AACvBsE,cAAMnE,KAAKmE,IAAIA,KAAKtE,GAAG;MACzB;AACA,YAAMyE,QAAQ,OAAO/B,MAAM4B;AAC3B,eAAS1F,KAAI,GAAG4F,KAAKhB,IAAI9D,QAAQd,KAAI4F,IAAI5F,MAAK;AAC5C4E,YAAI5E,EAAC,KAAK4E,IAAI5E,EAAC,IAAI0F,OAAOG;MAC5B;AAEA,aAAOjB;IACT;IAEA,OAAO,gBAAgBE,WAAW;AAQhC,UAAI9E;AACJ,UAAI8F,KAAI;AACR,UAAIC,KAAI;AACR,YAAML,MAAMZ,UAAUkB,UAAUC,CAAAA,OAAKA,OAAM,CAAC;AAC5C,UAAIC,MAAMR;AACV,UAAIS,OAAOT;AACX,WAAK1F,KAAI0F,KAAK1F,KAAI,KAAKA,MAAK;AAC1B,cAAMiG,KAAInB,UAAU9E,EAAC;AACrB,YAAIiG,KAAIH,IAAG;AACT,cAAI9F,KAAIkG,MAAMH,IAAG;AACfA,YAAAA,KAAI/F,KAAIkG;AACRC,mBAAOnG,KAAI;UACb;AACA8F,UAAAA,KAAIG;AACJC,gBAAMlG;QACR;MACF;AACA,WAAKA,KAAImG,OAAO,GAAGnG,MAAK,GAAGA,MAAK;AAC9B,YAAI8E,UAAU9E,EAAC,IAAI8E,UAAU9E,KAAI,CAAC,GAAG;AACnC;QACF;MACF;AAEA,aAAOA;IACT;IAEA,OAAO,eAAeoG,QAAQ;AAC5B,YAAMC,iBAAiBD;AACvB,YAAM;QAAEhG;QAAOO;MAAO,IAAIyF;AAC1B,YAAM;QAAE1G;MAAO,IAAI,KAAK;AACxB,UAAI4G,WAAWlG;AACf,UAAImG,YAAY5F;AAEhB,UAAIP,QAAQV,UAAUiB,SAASjB,QAAQ;AACrC,YAAI8G,YAAYpG;AAChB,YAAIqG,aAAa9F;AAEjB,YAAI+F,SAAQnF,KAAKoF,KAAKpF,KAAKuC,IAAI1D,OAAOO,MAAM,IAAIjB,MAAM;AACtD,cAAMkH,SAASrF,KAAKsF,MAAMH,MAAK;AAC/BA,QAAAA,SAAQA,WAAUE,SAASA,SAAS,IAAIA;AACxC,iBAAS5G,KAAI,GAAGA,KAAI0G,QAAO1G,MAAK;AAC9BsG,qBAAW/E,KAAKuF,KAAKN,YAAY,CAAC;AAClCD,sBAAYhF,KAAKuF,KAAKL,aAAa,CAAC;AAEpC,gBAAMM,aAAY,IAAIC,gBAAgBV,UAAUC,SAAS;AACzD,gBAAMU,OAAMF,WAAUG,WAAW,IAAI;AACrCD,UAAAA,KAAIE,UACFf,QACA,GACA,GACAI,WACAC,YACA,GACA,GACAH,UACAC,SACF;AACAC,sBAAYF;AACZG,uBAAaF;AAGb,cAAIH,WAAWC,gBAAgB;AAC7BD,mBAAOgB,MAAM;UACf;AACAhB,mBAASW,WAAUM,sBAAsB;QAC3C;AAEA,cAAMxB,QAAQtE,KAAKmE,IAAIhG,SAAS4G,UAAU5G,SAAS6G,SAAS;AAC5DD,mBAAW/E,KAAKgE,MAAMe,WAAWT,KAAK;AACtCU,oBAAYhF,KAAKgE,MAAMgB,YAAYV,KAAK;MAC1C;AACA,YAAMkB,YAAY,IAAIC,gBAAgBV,UAAUC,SAAS;AACzD,YAAMU,MAAMF,UAAUG,WAAW,MAAM;QAAEI,oBAAoB;MAAK,CAAC;AACnEL,UAAIM,YAAY;AAChBN,UAAIO,SAAS,GAAG,GAAGlB,UAAUC,SAAS;AACtCU,UAAIQ,SAAS;AACbR,UAAIE,UACFf,QACA,GACA,GACAA,OAAOhG,OACPgG,OAAOzF,QACP,GACA,GACA2F,UACAC,SACF;AACA,YAAMmB,YAAYT,IAAIU,aAAa,GAAG,GAAGrB,UAAUC,SAAS,EAAEqB;AAC9D,YAAMC,WAAW,KAAK,SAASH,SAAS;AAExC,aAAO,CAACG,UAAUvB,UAAUC,SAAS;IACvC;IAEA,OAAOuB,wBACLC,MACA;MAAEC;MAAYC;MAAWC;IAAW,GACpCC,WACAC,YACAC,UACAC,aACA;AACA,UAAIC,SAAS,IAAIvB,gBAAgB,GAAG,CAAC;AACrC,UAAIC,MAAMsB,OAAOrB,WAAW,MAAM;QAAEsB,OAAO;MAAM,CAAC;AAClD,YAAMC,WAAW;AACjB,YAAMC,OACHzB,IAAIyB,OAAO,GAAGT,SAAS,IAAIC,UAAU,IAAIO,QAAQ,MAAMT,UAAU;AACpE,YAAM;QACJW;QACAC;QACAC;QACAC;QACAC;QACAC;QACA5I;MACF,IAAI6G,IAAIgC,YAAYlB,IAAI;AAGxB,YAAMmB,QAAQ;AACd,YAAMC,cAAc5H,KAAKuF,KACvBvF,KAAKuC,IACHvC,KAAKC,IAAImH,qBAAqB,IAAIpH,KAAKC,IAAIoH,sBAAsB,KAAK,GACtExI,KACF,IAAI8I,KACN;AACA,YAAME,eAAe7H,KAAKuF,KACxBvF,KAAKuC,IACHvC,KAAKC,IAAIqH,uBAAuB,IAC9BtH,KAAKC,IAAIsH,wBAAwB,KAAKL,UACxClH,KAAKC,IAAIuH,qBAAqB,IAAIxH,KAAKC,IAAIwH,sBAAsB,KAC/DP,QACJ,IAAIS,KACN;AACAX,eAAS,IAAIvB,gBAAgBmC,aAAaC,YAAY;AACtDnC,YAAMsB,OAAOrB,WAAW,MAAM;QAAEsB,OAAO;QAAMlB,oBAAoB;MAAK,CAAC;AACvEL,UAAIyB,OAAOA;AACXzB,UAAIQ,SAAS;AACbR,UAAIM,YAAY;AAChBN,UAAIO,SAAS,GAAG,GAAG2B,aAAaC,YAAY;AAC5CnC,UAAIM,YAAY;AAChBN,UAAIoC,SACFtB,MACCoB,eAAeD,QAAQ,KAAM,GAC7BE,gBAAgB,IAAIF,SAAU,CACjC;AAEA,YAAMrB,WAAW,KAAK,SACpBZ,IAAIU,aAAa,GAAG,GAAGwB,aAAaC,YAAY,EAAExB,IACpD;AACA,YAAM9C,YAAY,KAAK,cAAc+C,QAAQ;AAC7C,YAAMjH,YAAY,KAAK,gBAAgBkE,SAAS;AAEhD,YAAMwE,cAAc,KAAK,cACvBzB,UACAsB,aACAC,cACAxI,SACF;AAEA,aAAO,KAAK2I,kBAAkB;QAC5BC,OAAO;UAAEC,QAAQH;UAAalJ,OAAO+I;UAAaxI,QAAQyI;QAAa;QACvEjB;QACAC;QACAC;QACAC;QACAoB,YAAY;QACZC,aAAa;MACf,CAAC;IACH;IAEA,OAAOC,QAAQxD,QAAQ+B,WAAWC,YAAYC,UAAUC,aAAa;AACnE,YAAM,CAACT,UAAUzH,OAAOO,MAAM,IAAI,KAAK,eAAeyF,MAAM;AAC5D,YAAM,CAACyD,SAAQ/E,SAAS,IAAI,KAAK,iBAC/B+C,UACAzH,OACAO,QACAY,KAAKwB,MAAM3C,OAAOO,MAAM,IAAI,KAAK,YAAYhB,cAC7C,KAAK,YAAYC,QACjB,KAAK,YAAYC,UACnB;AAEA,YAAMe,YAAY,KAAK,gBAAgBkE,SAAS;AAChD,YAAMwE,cAAc,KAAK,cAAcO,SAAQzJ,OAAOO,QAAQC,SAAS;AAEvE,aAAO,KAAK2I,kBAAkB;QAC5BC,OAAO;UAAEC,QAAQH;UAAalJ;UAAOO;QAAO;QAC5CwH;QACAC;QACAC;QACAC;QACAoB,YAAY;QACZC,aAAa;MACf,CAAC;IACH;IAEA,OAAOJ,kBAAkB;MACvBC;MACArB;MACAC;MACAC;MACAC;MACAoB;MACAC;IACF,GAAG;AACD,UAAItB,WAAW,QAAQ,GAAG;AACxB,SAACF,WAAWC,UAAU,IAAI,CAACA,YAAYD,SAAS;MAClD;AAEA,YAAM;QAAEsB;QAAQrJ;QAAOO;MAAO,IAAI6I;AAClC,YAAMM,YAAYN,MAAMM,aAAa;AACrC,YAAMC,iBAAiB,CAAA;AACvB,YAAMlE,QAAQtE,KAAKmE,IAAIyC,YAAY/H,OAAOgI,aAAazH,MAAM;AAC7D,YAAMqJ,SAASnE,QAAQsC;AACvB,YAAM8B,SAASpE,QAAQuC;AACvB,YAAM8B,YAAY,CAAA;AAElB,iBAAW;QAAEzI;MAAO,KAAKgI,QAAQ;AAC/B,cAAMU,gBAAgBT,aAAa,KAAK,gBAAgBjI,MAAM,IAAIA;AAClE,YAAI,CAAC0I,eAAe;AAClB;QACF;AACAD,kBAAUrI,KAAKsI,aAAa;AAE5B,cAAMjG,MAAMiG,cAAcrJ;AAC1B,cAAMsJ,YAAY,IAAI/F,aAAaH,GAAG;AACtC,cAAMmG,OAAO,IAAIhG,aAAa,KAAKH,QAAQ,IAAI,IAAIA,MAAM,EAAE;AAC3D6F,uBAAelI,KAAK;UAAEwI;UAAM5I,QAAQ2I;QAAU,CAAC;AAE/C,YAAIlG,QAAQ,GAAG;AACbkG,oBAAU,CAAC,IAAID,cAAc,CAAC,IAAIH;AAClCI,oBAAU,CAAC,IAAID,cAAc,CAAC,IAAIF;AAClCI,eAAKC,IAAI,CAACC,KAAKA,KAAKA,KAAKA,KAAKH,UAAU,CAAC,GAAGA,UAAU,CAAC,CAAC,GAAG,CAAC;AAC5D;QACF;AAEA,YAAI,CAACI,IAAIC,IAAIC,KAAIC,GAAE,IAAIR;AACvBK,cAAMR;AACNS,cAAMR;AACNS,QAAAA,OAAMV;AACNW,QAAAA,OAAMV;AACNG,kBAAUE,IAAI,CAACE,IAAIC,IAAIC,KAAIC,GAAE,GAAG,CAAC;AAEjCN,aAAKC,IAAI,CAACC,KAAKA,KAAKA,KAAKA,KAAKC,IAAIC,EAAE,GAAG,CAAC;AACxC,iBAASzK,KAAI,GAAGA,KAAIkE,KAAKlE,MAAK,GAAG;AAC/B,gBAAMwE,KAAK4F,UAAUpK,EAAC,IAAImK,cAAcnK,EAAC,IAAIgK;AAC7C,gBAAM7E,KAAKiF,UAAUpK,KAAI,CAAC,IAAImK,cAAcnK,KAAI,CAAC,IAAIiK;AACrDI,eAAKC,IAAIM,QAAQC,mBAAmBL,IAAIC,IAAIC,KAAIC,KAAInG,IAAGW,EAAC,IAAInF,KAAI,KAAK,CAAC;AACtE,WAACwK,IAAIC,IAAIC,KAAIC,GAAE,IAAI,CAACD,KAAIC,KAAInG,IAAGW,EAAC;QAClC;MACF;AAEA,UAAI4E,eAAejJ,WAAW,GAAG;AAC/B,eAAO;MACT;AAEA,YAAMgK,UAAUnB,cACZ,IAAIoB,mBAAmB,IACvB,IAAIC,eAAe;AAEvBF,cAAQG,MACNlB,gBACA5B,WACAC,YACA,GACAC,UACAsB,cAAc,IAAIG,WAClBxB,WACF;AAEA,aAAO;QAAEwC;QAASZ;QAAWP;QAAaG;QAAW1J;QAAOO;MAAO;IACrE;IAEA,aAAauK,kBAAkB;MAC7BC;MACAxB;MACAG;MACA1J;MACAO;IACF,GAAG;AAyBD,UAAIyK,UAAUzF;AACd,UAAI0F,UAAU;AACd,UAAIC,iBAAiB;AACrB,iBAAW7J,UAAU0J,UAAU;AAC7BG,0BAAkB7J,OAAOX;AACzB,iBAASd,KAAI,GAAG4F,KAAKnE,OAAOX,QAAQd,KAAI4F,IAAI5F,MAAK;AAC/C,gBAAMuL,KAAK9J,OAAOzB,EAAC,IAAIyB,OAAOzB,KAAI,CAAC;AACnCoL,oBAAU7J,KAAKmE,IAAI0F,SAASG,EAAE;AAC9BF,oBAAU9J,KAAKuC,IAAIuH,SAASE,EAAE;QAChC;MACF;AAEA,UAAIC;AACJ,UAAIJ,WAAW,QAAQC,WAAW,KAAK;AACrCG,qBAAaC;MACf,WAAWL,WAAW,UAAUC,WAAW,OAAO;AAChDG,qBAAaE;MACf,OAAO;AACLF,qBAAatL;MACf;AAEA,YAAMgE,MAAMiH,SAASrK;AACrB,YAAM6K,eAAepM,qBAAqBC,2BAA2B0E;AACrE,YAAM0H,SAAS,IAAI7G,YAAY4G,YAAY;AAE3C,UAAItL,SAAS;AACbuL,aAAOvL,QAAQ,IACbsL,eAAe5G,YAAY8G,qBAC1BP,iBAAiB,IAAIpH,OAAOsH,WAAWK;AAC1CD,aAAOvL,QAAQ,IAAI;AACnBuL,aAAOvL,QAAQ,IAAID;AACnBwL,aAAOvL,QAAQ,IAAIM;AACnBiL,aAAOvL,QAAQ,IAAIsJ,cAAc,IAAI;AACrCiC,aAAOvL,QAAQ,IAAIkB,KAAKuC,IAAI,GAAGvC,KAAKsF,MAAMiD,aAAa,CAAC,CAAC;AACzD8B,aAAOvL,QAAQ,IAAI6D;AACnB0H,aAAOvL,QAAQ,IAAImL,WAAWK;AAC9B,iBAAWpK,UAAU0J,UAAU;AAC7BS,eAAOvL,QAAQ,IAAIoB,OAAOX,SAAS;AACnC8K,eAAOvL,QAAQ,IAAIoB,OAAO,CAAC;AAC3BmK,eAAOvL,QAAQ,IAAIoB,OAAO,CAAC;MAC7B;AAEA,YAAMqK,MAAK,IAAIC,kBAAkB,aAAa;AAC9C,YAAMC,SAASF,IAAGG,SAASC,UAAU;AACrC,YAAMF,OAAOG;AAEbH,aAAOI,MAAMR,MAAM;AACnB,YAAMS,aAAab,WAAWc,UAAUC;AACxC,iBAAW9K,UAAU0J,UAAU;AAC7B,cAAMqB,QAAQ,IAAIH,WAAW5K,OAAOX,SAAS,CAAC;AAC9C,iBAASd,KAAI,GAAG4F,KAAKnE,OAAOX,QAAQd,KAAI4F,IAAI5F,MAAK;AAC/CwM,gBAAMxM,KAAI,CAAC,IAAIyB,OAAOzB,EAAC,IAAIyB,OAAOzB,KAAI,CAAC;QACzC;AACAgM,eAAOI,MAAMI,KAAK;MACpB;AAEAR,aAAO5E,MAAM;AAEb,YAAMjH,MAAM,MAAM,IAAIsM,SAASX,IAAGY,QAAQ,EAAEC,YAAY;AACxD,YAAMC,QAAQ,IAAI/H,WAAW1E,GAAG;AAEhC,aAAO0M,aAAaD,KAAK;IAC3B;IAEA,aAAaE,oBAAoBC,eAAe;AAC9C,UAAI;AACF,cAAMH,QAAQI,eAAeD,aAAa;AAC1C,cAAM;UAAEL;UAAUT;QAAS,IAAI,IAAIgB,oBAAoB,aAAa;AACpE,cAAMjB,SAASC,SAASC,UAAU;AAClC,cAAMF,OAAOG;AAIbH,eACGI,MAAMQ,KAAK,EACXM,KAAK,YAAY;AAChB,gBAAMlB,OAAOG;AACb,gBAAMH,OAAO5E,MAAM;QACrB,CAAC,EACA+F,MAAM,MAAM;QAAC,CAAC;AAEjB,YAAIvF,OAAO;AACX,YAAIvH,SAAS;AACb,yBAAiB+M,SAASV,UAAU;AAClC9E,mBAAS,IAAI/C,WAAW,IAAIE,YAAYqI,MAAMvD,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9DjC,eAAK0C,IAAI8C,OAAO/M,MAAM;AACtBA,oBAAU+M,MAAMtM;QAClB;AAGA,cAAM8K,SAAS,IAAI7G,YAAY6C,KAAKiC,QAAQ,GAAGjC,KAAK9G,UAAU,CAAC;AAC/D,cAAMuM,WAAUzB,OAAO,CAAC;AACxB,YAAIyB,aAAY,GAAG;AACjB,gBAAM,IAAIC,MAAM,oBAAoBD,QAAO,EAAE;QAC/C;AACA,cAAMjN,QAAQwL,OAAO,CAAC;AACtB,cAAMjL,SAASiL,OAAO,CAAC;AACvB,cAAMjC,cAAciC,OAAO,CAAC,MAAM;AAClC,cAAM9B,YAAY8B,OAAO,CAAC;AAC1B,cAAM2B,mBAAmB3B,OAAO,CAAC;AACjC,cAAMJ,aAAaI,OAAO,CAAC;AAC3B,cAAMT,WAAW,CAAA;AACjB,cAAMqC,eACHjO,qBAAqBC,2BAA2B+N,oBACjDxI,YAAY8G;AACd,YAAIW;AAEJ,gBAAQhB,YAAU;UAChB,KAAKC,UAAUI;AACbW,oBAAQ,IAAIf,UAAU7D,KAAKiC,QAAQ2D,WAAW;AAC9C;UACF,KAAK9B,WAAWG;AACdW,oBAAQ,IAAId,WAAW9D,KAAKiC,QAAQ2D,WAAW;AAC/C;UACF,KAAKtN,WAAW2L;AACdW,oBAAQ,IAAItM,WAAW0H,KAAKiC,QAAQ2D,WAAW;AAC/C;QACJ;AAEAnN,iBAAS;AACT,iBAASL,KAAI,GAAGA,KAAIuN,kBAAkBvN,MAAK;AACzC,gBAAMkE,MAAM0H,OAAOpM,2BAA2BQ,KAAIT,kBAAkB;AACpE,gBAAMkC,SAAS,IAAI4C,aAAaH,MAAM,CAAC;AACvCiH,mBAAStJ,KAAKJ,MAAM;AAEpB,mBAASxB,KAAI,GAAGA,KAAIT,2BAA2B,GAAGS,MAAK;AACrDwB,mBAAOxB,EAAC,IACN2L,OAAOpM,2BAA2BQ,KAAIT,qBAAqBU,KAAI,CAAC;UACpE;AACA,mBAASA,KAAI,GAAGA,KAAIiE,KAAKjE,MAAK;AAC5BwB,mBAAOxB,KAAI,CAAC,IAAIwB,OAAOxB,EAAC,IAAIuM,MAAMnM,QAAQ;UAC5C;QACF;AAEA,eAAO;UACLsJ;UACAG;UACAqB;UACA/K;UACAO;QACF;MACF,SAAS8M,IAAG;AACVC,aAAK,wBAAwBD,EAAC,EAAE;AAChC,eAAO;MACT;IACF;EACF;AC7yBA,MAAME,mBAAN,MAAMA,0BAAyBC,eAAe;IAC5CC,cAAc;AACZ,YAAM;AAEN,YAAMC,iBAAiB;QACrBC,MAAMC,iBAAiBC;QACvB,gBAAgB;MAClB,CAAC;IACH;IAEAC,QAAQ;AACN,YAAMA,SAAQ,IAAIP,kBAAiB;AACnCO,MAAAA,OAAMC,UAAU,IAAI;AACpB,aAAOD;IACT;EACF;AAEA,MAAME,wBAAN,MAAMA,+BAA8BC,kBAAkB;IACpDR,YAAYS,kBAAkB;AAC5B,YAAMA,gBAAgB;AAEtB,YAAMR,iBAAiB;QACrBS,QAAQP,iBAAiBC;QACzB,gBAAgB;MAClB,CAAC;IACH;IAEAC,QAAQ;AACN,YAAMA,SAAQ,IAAIE,uBAAsB,KAAKI,eAAe;AAC5DN,MAAAA,OAAMC,UAAU,IAAI;AACpB,aAAOD;IACT;EACF;AAMA,MAAMO,kBAAN,MAAMA,yBAAwBC,cAAc;IAC1C,eAAe;IAEf,eAAe;IAEf,iBAAiB;IAEjB,iBAAiB;IAEjB,OAAOC,QAAQ;IAEf,OAAOC,cAAcC,qBAAqBC;IAE1C,OAAOC,yBAAyB;IAEhClB,YAAYmB,QAAQ;AAClB,YAAM;QAAE,GAAGA;QAAQC,iBAAiB;QAAMC,MAAM;MAAkB,CAAC;AACnE,WAAKC,uBAAuB;AAC5B,WAAK,iBAAiBH,OAAOI,iBAAiB;AAC9C,WAAK,eAAe;AACpB,WAAKC,gBAAgB;IACvB;IAGA,OAAOC,WAAWC,MAAMC,WAAW;AACjCxB,uBAAiBsB,WAAWC,MAAMC,SAAS;AAE3C,WAAKT,yBAAyB,IAAIpB,iBAAiB;AACnD,WAAK8B,gCAAgC,IAAIrB,sBACvCoB,UAAUE,cACZ;IACF;IAGA,OAAOC,yBAAyBC,SAAS;AACvC,YAAM1B,SAAQ,KAAKa,uBAAuBb,MAAM;AAChDA,MAAAA,OAAMJ,iBAAiB8B,OAAO;AAC9B,aAAO1B;IACT;IAGA,WAAW2B,0BAA0B;AACnC,aAAO;IACT;IAEA,WAAWC,WAAW;AACpB,aAAOC,OAAO,MAAM,YAAY,oBAAIC,IAAI,CAAC;IAC3C;IAEA,WAAWC,WAAW;AACpB,aAAO;IACT;IAGA,IAAIC,qBAAqB;AACvB,aAAO;QACLC,MAAM;QACNC,gBAAgB,CAAC,CAAC,KAAK;MACzB;IACF;IAEA,OAAOC,0BAA0BC,MAAM;AACrC,YAAMC,sBAAsBD,KAAKE,IAAI,gBAAgB;AACrD,aAAO;QACLC,YAAYF,oBAAoBC,IAAI,IAAI,KAAK;QAC7CE,cAAcH,oBAAoBC,IAAI,KAAK,KAAK;MAClD;IACF;IAGA,IAAIG,cAAc;AAChB,aAAO;IACT;IAGAC,kBAAkB;AAChB,UAAI,KAAKC,YAAY,MAAM;AACzB;MACF;AACA,YAAMD,gBAAgB;IACxB;IAGAE,SAAS;AACP,UAAI,KAAKC,KAAK;AACZ,eAAO,KAAKA;MACd;AAEA,UAAIC,OAAOC;AACX,YAAM;QAAEC;MAAQ,IAAI;AACpB,UAAIA,SAAS;AAEX,aAAKA,UAAU;AACfF,gBAAQ,KAAKG;AACbF,gBAAQ,KAAKG;MACf;AAEA,YAAMN,OAAO;AAEb,UAAI,KAAKD,YAAY,MAAM;AACzB,YAAI,KAAK,gBAAgB;AACvB,gBAAM;YACJQ;YACAC;YACAC;YACAC;YACAC,MAAAA;YACAC;UACF,IAAI,KAAK;AACT,gBAAM;YACJC,SAAS;cAAEC;cAAWC;YAAW;YACjCC;UACF,IAAI,KAAKC,OAAOC;AAChB,gBAAMC,UAAUC,mBAAmBC,kBAAkB;YACnDd;YACAO;YACAC;YACAC;YACAM,aAAa3D,iBAAgB4D;YAC7Bf;YACAC;UACF,CAAC;AACD,eAAKe,aAAaL,SAASP,cAAcF,aAAaC,KAAI;QAC5D,OAAO;AAGL,eAAKV,IAAIwB,aACP,kBACAC,KAAKC,UAAU;YAAEjB,aAAa;UAAG,CAAC,CACpC;AACA,eAAKT,IAAI2B,SAAS;AAClB,eAAKC,WAAWC,aAAa,IAAI;QACnC;MACF,OAAO;AACL,aAAK7B,IAAIwB,aACP,kBACAC,KAAKC,UAAU;UAAEjB,aAAa,KAAK,gBAAgB;QAAG,CAAC,CACzD;MACF;AAEA,UAAIN,SAAS;AACX,aAAKA,UAAU;AACf,aAAK2B,gBAAgB7B,OAAOC,KAAK;MACnC;AAEA,aAAO,KAAKF;IACd;IAEA+B,QAAQrB,OAAM;AACZ,WAAK,iBAAiBA;AACtB,WAAKsB,eAAe;IACtB;IAEAC,UAAU;AACR,aAAO,KAAK;IACd;IAEA,IAAIxB,cAAc;AAChB,aAAO,KAAK;IACd;IAEA,IAAIA,YAAYA,aAAa;AAC3B,WAAK,eAAeA;AACpB,UAAI,CAAC,KAAKT,KAAK;AACb;MACF;AACA,WAAKA,IAAIwB,aAAa,kBAAkBC,KAAKC,UAAU;QAAEjB;MAAY,CAAC,CAAC;AACvE,YAAMuB,eAAe,EAAEE,KAAKC,aAAW;AACrCA,iBAASC,0BAA0B3B,WAAW;MAChD,CAAC;IACH;IAEA4B,sBAAsB;AACpB,YAAM;QAAEC;QAAW9B;QAAa+B;QAAWC;QAAOC;MAAO,IACvD,KAAK;AACP,YAAMC,SAASC,KAAKC,IAAIJ,OAAOC,MAAM;AACrC,YAAMI,cAAc1B,mBAAmBC,kBAAkB;QACvDd,OAAO;UACLwC,QAAQR,UAAUS,IAAIC,aAAW;YAAEA;UAAO,EAAE;UAC5CT;UACAC;UACAC;QACF;QACA5B,WAAW6B;QACX5B,YAAY4B;QACZ3B,UAAU;QACVM,aAAa;QACbd,YAAY;QACZC;MACF,CAAC;AACD,aAAO;QAAEA;QAAaU,SAAS2B,YAAY3B;MAAQ;IACrD;IAGA,IAAI+B,iBAAiB;AACnB,UAAI,KAAKrB,WAAWsB,kBAAkB;AACpC,eAAO,CAAC,CAAC,iBAAiB,KAAKtB,WAAWsB,gBAAgB,CAAC;MAC7D;AACA,aAAO,MAAMD;IACf;IAEA1B,aAAahC,MAAMoB,cAAcF,aAAaC,OAAM;AAClD,YAAM;QAAEN,GAAG+C;QAAQ9C,GAAG+C;MAAO,IAAI;AACjC,YAAM;QAAElC;MAAQ,IAAK,KAAK,iBAAiB3B;AAC3C,WAAK,eAAe2B,mBAAmBmC;AACvC,WAAK5C,cAAcA;AACnB,UAAI6C;AACJ,UAAI,KAAK,cAAc;AACrBA,yBAAiB5F,iBAAgBkB,yBAAyB;MAC5D,OAAO;AACL0E,yBAAiB5F,iBAAgBgB,8BAA8BvB,MAAM;AACrEmG,uBAAevG,iBAAiB;UAAE,gBAAgBmE,QAAQqB;QAAU,CAAC;MACvE;AACA,WAAKgB,aAAa;QAChBC,cAActC;QACdoC;MACF,CAAC;AACD,YAAM,CAAA,EAAGxC,UAAU,IAAI,KAAK2C;AAC5B,UAAIC,YAAY/C,eAAeG;AAG/B4C,kBAAYA,aAAa,IAAI,MAAMA;AAEnC,WAAKlB,SAASkB,YAAY,KAAKjB;AAC/B,UAAI,KAAKD,SAAS,GAAG;AACnBkB,qBAAa,MAAM,KAAKlB;AACxB,aAAKA,QAAQ;MACf;AAEA,WAAKC,SAASiB;AACd,WAAKC,QAAQ;AACb,WAAKvD,IAAI+C;AACT,WAAK9C,IAAI+C;AACT,WAAKQ,OAAO;AAEZ,WAAKC,WAAW;AAChB,WAAKhE,gBAAgB;AACrB,WAAKiE,OAAO;AACZ,WAAKlC,WAAWmC,uBAAuB,IAAI;AAC3C,WAAKhC,QAAQrB,KAAI;AAEjB,WAAKsD,iBAAiB;QACpBC,QAAQ;QACR1E,MAAM;UACJ2E,cAAc,CAAC,CAACxD;UAChBrB,gBAAgB,CAAC,CAACoB;QACpB;MACF,CAAC;AAED,WAAKT,IAAI2B,SAAS;IACpB;IAEAwC,aAAaC,QAAQ;AACnB,YAAM;QACJxD,SAAS;UAAEC;UAAWC;QAAW;QACjCC;MACF,IAAI,KAAKC,OAAOC;AAChB,aAAOE,mBAAmBkD,QACxBD,QACAvD,WACAC,YACAC,UACArD,iBAAgB4D,aAClB;IACF;IAEAgD,YAAYC,MAAMC,UAAU;AAC1B,YAAM;QACJ5D,SAAS;UAAEC;UAAWC;QAAW;QACjCC;MACF,IAAI,KAAKC,OAAOC;AAChB,aAAOE,mBAAmBsD,wBACxBF,MACAC,UACA3D,WACAC,YACAC,UACArD,iBAAgB4D,aAClB;IACF;IAEAoD,kBAAkB5B,QAAQ;AACxB,YAAM;QACJlC,SAAS;UAAEC;UAAWC;QAAW;QACjCC;MACF,IAAI,KAAKC,OAAOC;AAChB,aAAOE,mBAAmBC,kBAAkB;QAC1Cd,OAAOwC;QACPjC;QACAC;QACAC;QACAM,aAAa3D,iBAAgB4D;QAC7Bf,YAAY;QACZC,aAAa;MACf,CAAC;IACH;IAGAmE,qBAAqB;MAAEnE;MAAa+B;IAAU,GAAG;AAC/C,UAAI/B,aAAa;AACf,aAAKoE,kBAAkBlH,iBAAgBkB,yBAAyB;MAClE,OAAO;AACL,aAAKgG,kBACHlH,iBAAgBgB,8BAA8BvB,MAAM;AACtD,aAAKyH,gBAAgB7H,iBAAiB;UAAE,gBAAgBwF;QAAU,CAAC;MACrE;IACF;IAGAsC,UAAUC,eAAe,OAAO;AAC9B,UAAI,KAAKC,QAAQ,GAAG;AAClB,eAAO;MACT;AAEA,YAAM;QAAEzE;QAAO0C;MAAO,IAAI,KAAKgC,cAAcF,YAAY;AACzD,YAAM;QACJF,iBAAiB;UAAE,gBAAgBrC;QAAU;MAC/C,IAAI;AACJ,YAAM0C,aAAaC,OAAOC,OAAO,MAAMN,UAAUC,YAAY,GAAG;QAC9DM,aAAa;QACb5E,aAAa,KAAK;QAClB6E,OAAO,CAAC,GAAG,GAAG,CAAC;QACf9C,WAAW,KAAK,eAAe,IAAIA;MACrC,CAAC;AACD,WAAK+C,WAAWL,UAAU;AAC1B,UAAIH,cAAc;AAChBG,mBAAWM,QAAQ;UAAEjF;UAAO0C;QAAO;AACnCiC,mBAAWvE,OAAO,KAAK;AACvBuE,mBAAWO,SAAS;MACtB,OAAO;AACLP,mBAAW3E,QAAQA;MACrB;AACA,UAAI,KAAK,cAAc;AACrB2E,mBAAWQ,oBAAoB;UAAErG,MAAM;UAAUsG,KAAK,KAAK;QAAa;MAC1E;AACA,aAAOT;IACT;IAGA,OAAOU,gBACLC,OACAC,OACAhF,WACAC,YACAO,aACA9B,MACA;AACA,UAAIA,KAAKiB,aAAa;AACpB,eAAO6C,mBAAmByC,YACxBF,OACAC,OACAhF,WACAC,YACAO,aACA9B,IACF;MACF;AAEA,aAAOwG,eAAeD,YACpBF,OACAC,OACAhF,WACAC,YACAO,aACA9B,IACF;IACF;IAGA,aAAauG,YAAYvG,MAAMyB,QAAQvC,WAAW;AAChD,YAAMuH,SAAS,MAAM,MAAMF,YAAYvG,MAAMyB,QAAQvC,SAAS;AAC9DuH,aAAO,eAAezG,KAAKiB;AAC3BwF,aAAOvF,cAAclB,KAAKkG,mBAAmBC,OAAO;AACpDM,aAAO,iBAAiBzG,KAAKmB;AAC7B,aAAOsF;IACT;EACF;ACzZA,MAAMC,cAAN,cAA0BC,iBAAiB;IACzC,UAAU;IAEV,YAAY;IAEZ,iBAAiB;IAEjB,aAAa;IAEb,cAAc;IAEd,kBAAkB;IAElB,UAAU;IAEV,iBAAiB;IAEjB,mBAAmB;IAEnB,SAAS;IAET,2BAA2B;IAE3B,OAAOC,QAAQ;IAEf,OAAOC,cAAcC,qBAAqBC;IAE1CC,YAAYC,QAAQ;AAClB,YAAM;QAAE,GAAGA;QAAQC,MAAM;MAAc,CAAC;AACxC,WAAK,aAAaD,OAAOE;AACzB,WAAK,cAAcF,OAAOG;AAC1B,WAAKC,gBAAgB;IACvB;IAGA,OAAOC,WAAWC,MAAMC,WAAW;AACjCb,uBAAiBW,WAAWC,MAAMC,SAAS;IAC7C;IAGA,OAAOC,yBAAyBC,MAAM;AACpC,aAAOC,wBAAwBC,SAASF,IAAI;IAC9C;IAGA,OAAOG,MAAMC,MAAMC,QAAQ;AACzBA,aAAOC,YACL;QAAEC,MAAMnB,qBAAqBC;MAAM,GACnC;QAAEK,YAAYU,KAAKI,UAAU;MAAE,CACjC;IACF;IAGAC,gBAAgB;AACd,UAAI,KAAKC,WAAWC,mBAAmB;AACrC,aAAKC,IAAIC,SAAS;MACpB;AACA,YAAMJ,cAAc;IACtB;IAGA,IAAIK,qBAAqB;AACvB,aAAO;QACLC,MAAM;QACNC,YAAY,CAAC,CAAC,KAAKC,aAAaC;MAClC;IACF;IAEA,OAAOC,0BAA0BC,MAAM;AACrC,YAAMC,kBAAkBD,KAAKE,IAAI,YAAY;AAC7C,aAAO;QACLN,YAAYK,gBAAgBC,IAAI,IAAI,KAAK;QACzCC,cAAcF,gBAAgBC,IAAI,KAAK,KAAK;MAC9C;IACF;IAEA,kBAAkBF,MAAMI,SAAS,OAAO;AACtC,UAAI,CAACJ,MAAM;AACT,aAAKK,OAAO;AACZ;MACF;AACA,WAAK,UAAUL,KAAKM;AACpB,UAAI,CAACF,QAAQ;AACX,aAAK,YAAYJ,KAAKO;AACtB,aAAK,SAASP,KAAKQ;MACrB;AACA,UAAIR,KAAKS,MAAM;AACb,aAAK,kBAAkBT,KAAKS,KAAKrC;MACnC;AACA,WAAK,cAAc;IACrB;IAEA,iBAAiB;AACf,WAAK,iBAAiB;AACtB,WAAKkB,WAAWoB,cAAc,KAAK;AACnC,UAAI,CAAC,KAAK,SAAS;AACjB;MACF;AACA,UACE,KAAKpB,WAAWqB,gCAChB,KAAKrB,WAAWC,qBAChB,KAAK,SACL;AACA,aAAKqB,eAAe,EAAEC,KAAK,MAAM;AAC/B,eAAKC,aAAaC,KAAK;AACvB,eAAKzB,WAAW0B,YAAY,MAAwB,IAAI;QAC1D,CAAC;AACD;MACF;AAEA,UACE,CAAC,KAAK1B,WAAWqB,gCACjB,KAAKrB,WAAWC,qBAChB,KAAK,SACL;AACA,aAAK0B,iBAAiB;UACpBC,QAAQ;UACRlB,MAAM;YAAEmB,gBAAgB;YAAOC,eAAe;UAAQ;QACxD,CAAC;AACD,YAAI;AAGF,eAAKC,eAAe;QACtB,QAAQ;QAAC;MACX;AAEA,WAAK7B,IAAI8B,MAAM;IACjB;IAEA,MAAMD,eAAeE,YAAY,MAAMC,oBAAoB,MAAM;AAC/D,UAAI,KAAKC,eAAe,GAAG;AACzB,eAAO;MACT;AAEA,YAAM;QAAEC;MAAU,IAAI,KAAKpC;AAC3B,UAAI,CAACoC,WAAW;AACd,cAAM,IAAIC,MAAM,QAAQ;MAC1B;AACA,UAAI,CAAE,MAAMD,UAAUE,aAAa,SAAS,GAAI;AAC9C,cAAM,IAAID,MAAM,gCAAgC;MAClD;AACA,YAAM;QAAE3B;QAAM6B;QAAOC;MAAO,IAC1BP,aACA,KAAKQ,WAAW,MAAM,MAA8B,IAAI,EAAER;AAC5D,YAAMS,WAAW,MAAMN,UAAUO,MAAM;QACrC7D,MAAM;QACN8D,SAAS;UACPlC;UACA6B;UACAC;UACAK,UAAUnC,KAAKoC,UAAUP,QAAQC;QACnC;MACF,CAAC;AACD,UAAI,CAACE,UAAU;AACb,cAAM,IAAIL,MAAM,kCAAkC;MACpD;AACA,UAAIK,SAASK,OAAO;AAClB,cAAM,IAAIV,MAAM,4BAA4B;MAC9C;AACA,UAAIK,SAASM,QAAQ;AACnB,eAAO;MACT;AACA,UAAI,CAACN,SAASO,QAAQ;AACpB,cAAM,IAAIZ,MAAM,wCAAwC;MAC1D;AACA,YAAM7B,UAAUkC,SAASO;AACzB,YAAM,KAAKC,kBAAkB1C,OAAO;AACpC,UAAI0B,qBAAqB,CAAC,KAAKC,eAAe,GAAG;AAC/C,aAAK5B,cAAc;UAAE4C,KAAK3C;UAAS4C,YAAY;QAAM;MACvD;AACA,aAAO5C;IACT;IAEA,aAAa;AACX,UAAI,KAAK,WAAW;AAClB,aAAKR,WAAWoB,cAAc,IAAI;AAClC,aAAKpB,WAAWqD,aACbC,UAAU,KAAK,SAAS,EACxB/B,KAAKb,UAAQ,KAAK,kBAAkBA,MAAqB,IAAI,CAAC,EAC9D6C,QAAQ,MAAM,KAAK,eAAe,CAAC;AACtC;MACF;AAEA,UAAI,KAAK,YAAY;AACnB,cAAMC,MAAM,KAAK;AACjB,aAAK,aAAa;AAClB,aAAKxD,WAAWoB,cAAc,IAAI;AAClC,aAAK,iBAAiB,KAAKpB,WAAWqD,aACnCI,WAAWD,GAAG,EACdjC,KAAKb,UAAQ,KAAK,kBAAkBA,IAAI,CAAC,EACzC6C,QAAQ,MAAM,KAAK,eAAe,CAAC;AACtC;MACF;AAEA,UAAI,KAAK,aAAa;AACpB,cAAMpC,OAAO,KAAK;AAClB,aAAK,cAAc;AACnB,aAAKnB,WAAWoB,cAAc,IAAI;AAClC,aAAK,iBAAiB,KAAKpB,WAAWqD,aACnCK,YAAYvC,IAAI,EAChBI,KAAKb,UAAQ,KAAK,kBAAkBA,IAAI,CAAC,EACzC6C,QAAQ,MAAM,KAAK,eAAe,CAAC;AACtC;MACF;AAEA,YAAMI,QAAQC,SAASC,cAAc,OAAO;AAM5CF,YAAMtD,OAAO;AACbsD,YAAMG,SAASvE,wBAAwBwE,KAAK,GAAG;AAC/C,YAAMC,SAAS,KAAKhE,WAAWiE;AAC/B,WAAK,iBAAiB,IAAIC,QAAQC,CAAAA,aAAW;AAC3CR,cAAMS,iBACJ,UACA,YAAY;AACV,cAAI,CAACT,MAAMU,SAASV,MAAMU,MAAMvB,WAAW,GAAG;AAC5C,iBAAK/B,OAAO;UACd,OAAO;AACL,iBAAKf,WAAWoB,cAAc,IAAI;AAClC,kBAAMV,OAAO,MAAM,KAAKV,WAAWqD,aAAaK,YAC9CC,MAAMU,MAAM,CAAC,CACf;AACA,iBAAK1C,iBAAiB;cACpBC,QAAQ;cACRlB,MAAM;gBAAEmB,gBAAgB,KAAK7B,WAAWC;cAAkB;YAC5D,CAAC;AACD,iBAAK,kBAAkBS,IAAI;UAC7B;AAIAyD,UAAAA,SAAQ;QACV,GACA;UAAEH;QAAO,CACX;AACAL,cAAMS,iBACJ,UACA,MAAM;AACJ,eAAKrD,OAAO;AACZoD,UAAAA,SAAQ;QACV,GACA;UAAEH;QAAO,CACX;MACF,CAAC,EAAET,QAAQ,MAAM,KAAK,eAAe,CAAC;AAEpCI,YAAMW,MAAM;IAEhB;IAGAvD,SAAS;AACP,UAAI,KAAK,WAAW;AAClB,aAAK,UAAU;AACf,aAAKf,WAAWqD,aAAakB,SAAS,KAAK,SAAS;AACpD,aAAK,SAASxD,OAAO;AACrB,aAAK,UAAU;AACf,YAAI,KAAK,kBAAkB;AACzByD,uBAAa,KAAK,gBAAgB;AAClC,eAAK,mBAAmB;QAC1B;MACF;AACA,YAAMzD,OAAO;IACf;IAGA0D,UAAU;AACR,UAAI,CAAC,KAAK9E,QAAQ;AAGhB,YAAI,KAAK,WAAW;AAClB,eAAK,WAAW;QAClB;AACA;MACF;AACA,YAAM8E,QAAQ;AACd,UAAI,KAAKvE,QAAQ,MAAM;AACrB;MACF;AAEA,UAAI,KAAK,aAAa,KAAK,YAAY,MAAM;AAC3C,aAAK,WAAW;MAClB;AAEA,UAAI,CAAC,KAAKwE,iBAAiB;AAGzB,aAAK/E,OAAOgF,IAAI,IAAI;MACtB;IACF;IAGAC,UAAU5C,OAAO;AACf,WAAK6C,eAAe;AACpB,UAAI7C,OAAO;AACT,aAAK9B,IAAI8B,MAAM;MACjB;IACF;IAGA8C,UAAU;AACR,aAAO,EACL,KAAK,kBACL,KAAK,WACL,KAAK,cACL,KAAK,eACL,KAAK,aACL,KAAK;IAET;IAGA,IAAIC,iBAAiB;AACnB,aAAO,CAAC,CAAC,WAAW,KAAKC,cAAc,CAAC,CAAC;IAC3C;IAGA,IAAIC,cAAc;AAChB,aAAO;IACT;IAGAC,SAAS;AACP,UAAI,KAAKhF,KAAK;AACZ,eAAO,KAAKA;MACd;AAEA,UAAIiF,OAAOC;AACX,UAAI,KAAKC,SAAS;AAChBF,gBAAQ,KAAKG;AACbF,gBAAQ,KAAKG;MACf;AAEA,YAAML,OAAO;AACb,WAAKhF,IAAIC,SAAS;AAElB,WAAK6E,cAAc;AAEnB,UAAI,CAAC,KAAK,gBAAgB;AACxB,YAAI,KAAK,SAAS;AAChB,eAAK,cAAc;QACrB,OAAO;AACL,eAAK,WAAW;QAClB;MACF;AAEA,UAAI,KAAKK,SAAS;AAChB,aAAKG,gBAAgBL,OAAOC,KAAK;MACnC;AAEA,WAAKpF,WAAWyF,iBAAiB,IAAI;AAErC,aAAO,KAAKvF;IACd;IAEAwF,UAAUC,qBAAqBC,QAAQ;AACrC,YAAM;QAAE3E,IAAI4E;QAAU7E;MAAO,IAAI,KAAKhB,WAAWqD,aAAayC,cAC5DH,qBACAC,MACF;AACAA,aAAO7E,OAAO;AACd,UAAI8E,YAAY,KAAK7F,WAAWqD,aAAa0C,UAAUF,QAAQ,GAAG;AAChE,aAAK,YAAYA;AACjB,YAAI7E,QAAQ;AACV,eAAK,UAAUA;QACjB;AACA,aAAK,iBAAiB;AACtB,aAAK,cAAc;MACrB;IACF;IAGAgF,aAAa;AAGX,WAAKC,gBAAgB;IACvB;IAEAA,kBAAkB;AAChB,UAAI,CAAC,KAAKtG,QAAQ;AAChB;MACF;AACA,UAAI,KAAK,qBAAqB,MAAM;AAClC6E,qBAAa,KAAK,gBAAgB;MACpC;AAGA,YAAM0B,eAAe;AACrB,WAAK,mBAAmBC,WAAW,MAAM;AACvC,aAAK,mBAAmB;AACxB,aAAK,YAAY;MACnB,GAAGD,YAAY;IACjB;IAEA,gBAAgB;AACd,YAAM;QAAEhG;MAAI,IAAI;AAChB,UAAI;QAAEqC;QAAOC;MAAO,IAAI,KAAK;AAC7B,YAAM,CAAC4D,WAAWC,UAAU,IAAI,KAAKC;AACrC,YAAMC,YAAY;AAClB,UAAI,KAAKhE,OAAO;AACdA,gBAAQ,KAAKA,QAAQ6D;AACrB5D,iBAAS,KAAKA,SAAS6D;MACzB,WACE9D,QAAQgE,YAAYH,aACpB5D,SAAS+D,YAAYF,YACrB;AAGA,cAAMG,SAASC,KAAKC,IACjBH,YAAYH,YAAa7D,OACzBgE,YAAYF,aAAc7D,MAC7B;AACAD,iBAASiE;AACThE,kBAAUgE;MACZ;AAEA,WAAKxG,WAAWoB,cAAc,KAAK;AACnC,YAAMwE,SAAU,KAAK,UAAUhC,SAASC,cAAc,QAAQ;AAC9D+B,aAAOe,aAAa,QAAQ,KAAK;AACjC,WAAKC,aAAahB,MAAM;AAExB,WAAKrD,QAAQA,QAAQ6D;AACrB,WAAK5D,SAASA,SAAS6D;AACvB,WAAKQ,QAAQ;AAEb,UAAI,KAAKC,iBAAiBC,YAAY;AACpC,aAAKC,OAAO;MACd,OAAO;AACL,aAAKC,kBAAkB;MACzB;AACA,WAAKH,kBAAkB;AAEvB,UACE,CAAC,KAAK9G,WAAWqB,gCACjB,CAAC,KAAKrB,WAAWC,qBACjB,KAAK0F,qBACL;AACAzF,YAAIC,SAAS;MACf;AACA,WAAK,YAAY;AACjB,UAAI,CAAC,KAAK,0BAA0B;AAClC,aAAKR,OAAOuH,kBAAkB,IAAI;AAClC,aAAK,2BAA2B;MAClC;AAKA,WAAKvF,iBAAiB;QACpBC,QAAQ;MACV,CAAC;AACD,UAAI,KAAK,iBAAiB;AACxB,aAAK1B,IAAIyG,aAAa,oBAAoB,KAAK,eAAe;MAChE;AACA,UAAI,CAAC,KAAKhB,qBAAqB;AAC7B,aAAK3F,WAAWmH,UAAU,gCAAgC;MAC5D;IACF;IAEA1E,WAAW2E,kBAAkBC,qBAAqBC,kBAAkB,OAAO;AACzE,UAAI,CAACF,kBAAkB;AAIrBA,2BAAmB;MACrB;AAEA,YAAM;QAAE7E,OAAOgF;QAAa/E,QAAQgF;MAAa,IAAI,KAAK;AAC1D,YAAMC,cAAc,IAAIC,YAAY;AAEpC,UAAI1G,SAAS,KAAK;AAClB,UAAIuB,QAAQgF,aACV/E,SAASgF;AACX,UAAI5B,SAAS;AAEb,UAAIyB,qBAAqB;AACvB,YACEE,cAAcF,uBACdG,eAAeH,qBACf;AACA,gBAAMM,QAAQlB,KAAKC,IACjBW,sBAAsBE,aACtBF,sBAAsBG,YACxB;AACAjF,kBAAQkE,KAAKmB,MAAML,cAAcI,KAAK;AACtCnF,mBAASiE,KAAKmB,MAAMJ,eAAeG,KAAK;QAC1C;AAEA/B,iBAAShC,SAASC,cAAc,QAAQ;AACxC,cAAMgE,cAAejC,OAAOrD,QAAQkE,KAAKqB,KAAKvF,QAAQkF,YAAYM,EAAE;AACpE,cAAMC,eAAgBpC,OAAOpD,SAASiE,KAAKqB,KAAKtF,SAASiF,YAAYQ,EAAE;AAEvE,YAAI,CAAC,KAAK,QAAQ;AAChBjH,mBAAS,KAAK,aAAa6G,aAAaG,YAAY;QACtD;AAEA,cAAME,MAAMtC,OAAOuC,WAAW,IAAI;AAClCD,YAAIE,SAAS,KAAKpI,WAAWqI;AAI7B,YAAIC,QAAQ,SACVC,QAAQ;AACV,YAAI,KAAKvI,WAAWqI,cAAc,QAAQ;AACxCE,kBAAQ;QACV,WAAWC,YAAYC,YAAY;AACjCH,kBAAQ;AACRC,kBAAQ;QACV;AACA,cAAMG,SAAS;AACf,cAAMC,cAAcD,SAASjB,YAAYM;AACzC,cAAMa,eAAeF,SAASjB,YAAYQ;AAC1C,cAAMY,UAAU,IAAIC,gBAAgBH,cAAc,GAAGC,eAAe,CAAC;AACrE,cAAMG,aAAaF,QAAQV,WAAW,IAAI;AAC1CY,mBAAWC,YAAYV;AACvBS,mBAAWE,SAAS,GAAG,GAAGN,cAAc,GAAGC,eAAe,CAAC;AAC3DG,mBAAWC,YAAYT;AACvBQ,mBAAWE,SAAS,GAAG,GAAGN,aAAaC,YAAY;AACnDG,mBAAWE,SAASN,aAAaC,cAAcD,aAAaC,YAAY;AACxEV,YAAIc,YAAYd,IAAIgB,cAAcL,SAAS,QAAQ;AACnDX,YAAIe,SAAS,GAAG,GAAGpB,aAAaG,YAAY;AAC5CE,YAAIiB,UACFnI,QACA,GACA,GACAA,OAAOuB,OACPvB,OAAOwB,QACP,GACA,GACAqF,aACAG,YACF;MACF;AAEA,UAAI/F,YAAY;AAChB,UAAIqF,iBAAiB;AACnB,YAAI8B,WAAWC;AACf,YACE5B,YAAY6B,aACZtI,OAAOuB,QAAQ6E,oBACfpG,OAAOwB,SAAS4E,kBAChB;AACAgC,sBAAYpI,OAAOuB;AACnB8G,uBAAarI,OAAOwB;QACtB,OAAO;AACLxB,mBAAS,KAAK;AACd,cAAIuG,cAAcH,oBAAoBI,eAAeJ,kBAAkB;AACrE,kBAAMO,QAAQlB,KAAKC,IACjBU,mBAAmBG,aACnBH,mBAAmBI,YACrB;AACA4B,wBAAY3C,KAAKmB,MAAML,cAAcI,KAAK;AAC1C0B,yBAAa5C,KAAKmB,MAAMJ,eAAeG,KAAK;AAE5C,gBAAI,CAAC,KAAK,QAAQ;AAChB3G,uBAAS,KAAK,aAAaoI,WAAWC,UAAU;YAClD;UACF;QACF;AAEA,cAAME,YAAY,IAAIT,gBAAgBM,WAAWC,UAAU;AAC3D,cAAMG,eAAeD,UAAUpB,WAAW,MAAM;UAC9CsB,oBAAoB;QACtB,CAAC;AACDD,qBAAaL,UACXnI,QACA,GACA,GACAA,OAAOuB,OACPvB,OAAOwB,QACP,GACA,GACA4G,WACAC,UACF;AACApH,oBAAY;UACVM,OAAO6G;UACP5G,QAAQ6G;UACR3I,MAAM8I,aAAaE,aAAa,GAAG,GAAGN,WAAWC,UAAU,EAAE3I;QAC/D;MACF;AAEA,aAAO;QAAEkF;QAAQrD;QAAOC;QAAQP;MAAU;IAC5C;IAEA,aAAaM,OAAOC,QAAQ;AAC1B,YAAM;QAAED,OAAOgF;QAAa/E,QAAQgF;MAAa,IAAI,KAAK;AAE1D,UAAImC,WAAWpC;AACf,UAAIqC,YAAYpC;AAChB,UAAIxG,SAAS,KAAK;AAClB,aAAO2I,WAAW,IAAIpH,SAASqH,YAAY,IAAIpH,QAAQ;AACrD,cAAMqH,YAAYF;AAClB,cAAMG,aAAaF;AAEnB,YAAID,WAAW,IAAIpH,OAAO;AAIxBoH,qBACEA,YAAY,QACRlD,KAAKmB,MAAM+B,WAAW,CAAC,IAAI,IAC3BlD,KAAKqB,KAAK6B,WAAW,CAAC;QAC9B;AACA,YAAIC,YAAY,IAAIpH,QAAQ;AAC1BoH,sBACEA,aAAa,QACTnD,KAAKmB,MAAMgC,YAAY,CAAC,IAAI,IAC5BnD,KAAKqB,KAAK8B,YAAY,CAAC;QAC/B;AAEA,cAAML,YAAY,IAAIT,gBAAgBa,UAAUC,SAAS;AACzD,cAAM1B,MAAMqB,UAAUpB,WAAW,IAAI;AACrCD,YAAIiB,UACFnI,QACA,GACA,GACA6I,WACAC,YACA,GACA,GACAH,UACAC,SACF;AACA5I,iBAASuI,UAAUQ,sBAAsB;MAC3C;AAEA,aAAO/I;IACT;IAEA,cAAc;AACZ,YAAM,CAACgJ,aAAaC,YAAY,IAAI,KAAKC;AACzC,YAAM;QAAE3H;QAAOC;MAAO,IAAI;AAC1B,YAAMiF,cAAc,IAAIC,YAAY;AACpC,YAAMG,cAAcpB,KAAKqB,KAAKvF,QAAQyH,cAAcvC,YAAYM,EAAE;AAClE,YAAMC,eAAevB,KAAKqB,KAAKtF,SAASyH,eAAexC,YAAYQ,EAAE;AACrE,YAAMrC,SAAS,KAAK;AAEpB,UACE,CAACA,UACAA,OAAOrD,UAAUsF,eAAejC,OAAOpD,WAAWwF,cACnD;AACA;MACF;AAEApC,aAAOrD,QAAQsF;AACfjC,aAAOpD,SAASwF;AAEhB,YAAMhH,SAAS,KAAK,SAChB,KAAK,UACL,KAAK,aAAa6G,aAAaG,YAAY;AAE/C,YAAME,MAAMtC,OAAOuC,WAAW,IAAI;AAClCD,UAAIE,SAAS,KAAKpI,WAAWqI;AAC7BH,UAAIiB,UACFnI,QACA,GACA,GACAA,OAAOuB,OACPvB,OAAOwB,QACP,GACA,GACAqF,aACAG,YACF;IACF;IAEA,iBAAiBmC,OAAO;AACtB,UAAIA,OAAO;AACT,YAAI,KAAK,QAAQ;AACf,gBAAM3G,MAAM,KAAKxD,WAAWqD,aAAa+G,UAAU,KAAK,SAAS;AACjE,cAAI5G,KAAK;AACP,mBAAOA;UACT;QACF;AAGA,cAAMoC,SAAShC,SAASC,cAAc,QAAQ;AAC9C,SAAC;UAAEtB,OAAOqD,OAAOrD;UAAOC,QAAQoD,OAAOpD;QAAO,IAAI,KAAK;AACvD,cAAM0F,MAAMtC,OAAOuC,WAAW,IAAI;AAClCD,YAAIiB,UAAU,KAAK,SAAS,GAAG,CAAC;AAEhC,eAAOvD,OAAOyE,UAAU;MAC1B;AAEA,UAAI,KAAK,QAAQ;AACf,cAAM,CAACjE,WAAWC,UAAU,IAAI,KAAKC;AAGrC,cAAM/D,QAAQkE,KAAK6D,MACjB,KAAK/H,QAAQ6D,YAAYmE,cAAcC,gBACzC;AACA,cAAMhI,SAASiE,KAAK6D,MAClB,KAAK9H,SAAS6D,aAAakE,cAAcC,gBAC3C;AACA,cAAMjB,YAAY,IAAIT,gBAAgBvG,OAAOC,MAAM;AACnD,cAAM0F,MAAMqB,UAAUpB,WAAW,IAAI;AACrCD,YAAIiB,UACF,KAAK,SACL,GACA,GACA,KAAK,QAAQ5G,OACb,KAAK,QAAQC,QACb,GACA,GACAD,OACAC,MACF;AACA,eAAO+G,UAAUQ,sBAAsB;MACzC;AAEA,aAAOU,gBAAgB,KAAK,OAAO;IACrC;IAGA,aAAaC,YAAYhK,MAAMf,QAAQP,WAAW;AAChD,UAAIuL,cAAc;AAClB,UAAIC,gBAAgB;AACpB,UAAIlK,gBAAgBmK,wBAAwB;AAC1C,cAAM;UACJnK,MAAM;YACJoK,MAAAA;YACAC;YACA9J;YACA+J;YACAC;YACAC;YACAC;YACAC;YACAC;UACF;UACAC;UACA3L,QAAQ;YACN4L,MAAM;cAAEC;YAAW;UACrB;UACA5F;QACF,IAAIlF;AACJ,YAAImF,WAAU7E;AACd,YAAI4E,QAAQ;AACV,iBAAOlF,KAAKkF;AACZ,WAAC;YAAE3E,IAAI4E;YAAU7E,QAAAA;UAAO,IAAI5B,UAAUiE,aAAayC,cACjDwF,UAAUrK,IACV2E,MACF;AACAA,iBAAO7E,OAAO;QAChB,OAAO;AACL6J,0BAAgB;AAChBlK,eAAK+K,eAAe;QACtB;AAIA,cAAMjL,WAEF,MAAMb,OAAO+L,YAAYC,kBAAkB,GAAGC,gBAAgB,GAAG3K,EAAE,EAAE,IACpEL,IAAI,YAAY,KAAK;AAE1B+J,sBAAcjK,OAAO;UACnBmL,gBAAgBnN,qBAAqBC;UACrCkH,UAAAA;UACA7E,QAAAA;UACA8K,WAAWN,aAAa;UACxBV,MAAMA,MAAKiB,MAAM,CAAC;UAClBhB;UACApF,qBAAqB1E;UACrBA;UACA+K,SAAS;UACTC,mBAAmB;YACjB7I,YAAY;YACZ5C;UACF;UACAU,OAAO;UACP8J;UACAC;UACAC;UACAgB,SAASf,aAAagB,OAAO;UAC7Bf;UACAC;QACF;MACF;AACA,YAAMe,SAAS,MAAM,MAAM1B,YAAYhK,MAAMf,QAAQP,SAAS;AAC9D,YAAM;QAAE0L;QAAM9J;QAAQjC;QAAW8G;QAAU3E;QAAO+K;MAAkB,IAClEvL;AACF,UAAIkK,eAAe;AACjBxL,kBAAUiN,iBAAiB3L,KAAKO,IAAImL,MAAM;AAC1CA,eAAO,iBAAiB;MAC1B,WAAWvG,YAAYzG,UAAUiE,aAAa0C,UAAUF,QAAQ,GAAG;AACjEuG,eAAO,YAAYvG;AACnB,YAAI7E,QAAQ;AACVoL,iBAAO,UAAUpL;QACnB;MACF,OAAO;AACLoL,eAAO,aAAarN;MACtB;AACAqN,aAAO,SAASlL;AAEhB,YAAM,CAAC8I,aAAaC,YAAY,IAAImC,OAAO9F;AAC3C8F,aAAO7J,SAASuI,KAAK,CAAC,IAAIA,KAAK,CAAC,KAAKd;AACrCoC,aAAO5J,UAAUsI,KAAK,CAAC,IAAIA,KAAK,CAAC,KAAKb;AAEtC,UAAIgC,mBAAmB;AACrBG,eAAO7L,cAAc0L;MACvB;AACAG,aAAOE,eAAe3B;AACtB,UAAIjK,KAAKwL,SAAS;AAChBE,eAAOG,eAAe7L,IAAI;MAC5B;AAGA0L,aAAO,2BAA2B,CAAC,CAACzB;AAEpC,aAAOyB;IACT;IAGAI,UAAUC,eAAe,OAAOC,UAAU,MAAM;AAC9C,UAAI,KAAK5H,QAAQ,GAAG;AAClB,eAAO;MACT;AAEA,UAAI,KAAKkH,SAAS;AAChB,eAAO,KAAKW,iBAAiB;MAC/B;AAEA,YAAMC,aAAaC,OAAOC,OAAO,MAAMN,UAAUC,YAAY,GAAG;QAC9D5G,UAAU,KAAK;QACf3E,OAAO,KAAK;MACd,CAAC;AACD,WAAK6L,WAAWH,UAAU;AAE1B,UAAIH,cAAc;AAIhBG,mBAAW7N,YAAY,KAAK,iBAA+B,IAAI;AAC/D6N,mBAAWX,oBAAoB,KAAKe,iBAAiB,IAAI;AACzDJ,mBAAWK,SAAS;AACpB,eAAOL;MACT;AAEA,YAAM;QAAExJ;QAAY5C;MAAQ,IAAI,KAAKwM,iBAAiB,KAAK;AAC3D,UAAI,CAAC5J,cAAc5C,SAAS;AAC1BoM,mBAAWX,oBAAoB;UAAE5L,MAAM;UAAU8C,KAAK3C;QAAQ;MAChE;AACA,UAAI,KAAKmF,qBAAqB;AAC5B,cAAMuH,UAAU,KAAK,mBAAmBN,UAAU;AAClD,YAAIM,QAAQC,QAAQ;AAElB,iBAAO;QACT;AACA,YAAID,QAAQE,eAAe;AACzB,iBAAOR,WAAWX;QACpB,OAAO;AACLW,qBAAWX,kBAAkBjB,eAC3B,KAAKsB,aAAatB,gBAAgB;QACtC;AACA4B,mBAAW3L,KAAK,KAAK0E;AACrB,eAAOiH,WAAW/G;AAClB,eAAO+G;MACT;AAEA,UAAIF,YAAY,MAAM;AACpB,eAAOE;MACT;AAEAF,cAAQW,WAAW,oBAAIC,IAAI;AAC3B,YAAMC,OAAO,KAAK,UACbX,WAAW9B,KAAK,CAAC,IAAI8B,WAAW9B,KAAK,CAAC,MACtC8B,WAAW9B,KAAK,CAAC,IAAI8B,WAAW9B,KAAK,CAAC,KACvC;AACJ,UAAI,CAAC4B,QAAQW,OAAOG,IAAI,KAAK,SAAS,GAAG;AAGvCd,gBAAQW,OAAOI,IAAI,KAAK,WAAW;UAAEF;UAAMX;QAAW,CAAC;AACvDA,mBAAW5L,SAAS,KAAK,iBAA+B,KAAK;MAC/D,WAAW,KAAK,QAAQ;AAGtB,cAAM0M,WAAWhB,QAAQW,OAAOzM,IAAI,KAAK,SAAS;AAClD,YAAI2M,OAAOG,SAASH,MAAM;AACxBG,mBAASH,OAAOA;AAChBG,mBAASd,WAAW5L,OAAO2M,MAAM;AACjCD,mBAASd,WAAW5L,SAAS,KAAK,iBAA+B,KAAK;QACxE;MACF;AACA,aAAO4L;IACT;IAEA,mBAAmBA,YAAY;AAC7B,YAAM;QACJd;QACAG,mBAAmB;UAAEzL;QAAQ;MAC/B,IAAI,KAAK8L;AAET,YAAMsB,kBAAkBhB,WAAWd,cAAcA;AACjD,YAAMsB,iBAAiBR,WAAWX,mBAAmB9I,OAAO,QAAQ3C;AAEpE,aAAO;QACL2M,QACE,CAAC,KAAKU,oBACN,CAAC,KAAKC,iBACN,CAAC,KAAKC,mBACNH,mBACAR;QACFA;MACF;IACF;IAGAY,wBAAwBC,YAAY;AAClC,UAAI,KAAKjC,SAAS;AAChBiC,mBAAWxM,KAAK;AAChB,eAAO;MACT;AACAwM,iBAAWC,aAAa;QACtBpD,MAAM,KAAKqD,WAAW;QACtBC,OAAO,KAAKlC;MACd,CAAC;AAED,aAAO;IACT;EACF;ACv3BA,MAAMmC,wBAAN,MAAMA,uBAAsB;IAC1B;IAEA,cAAc;IAEd,mBAAmB;IAEnB,WAAW;IAEX,wBAAwB;IAExB,WAAW,oBAAIC,IAAI;IAEnB,kBAAkB;IAElB,eAAe;IAEf,cAAc;IAEd,aAAa;IAEb,kBAAkB;IAElB,aAAa;IAEb,mBAAmB;IAEnB,uBAAuB;IAEvB,4BAA4B;IAE5B;IAEA,OAAOC,eAAe;IAEtB,OAAO,eAAe,IAAID,IACxB,CACEE,gBACAC,WACAC,aACAC,iBACAC,eAAe,EACfC,IAAIC,UAAQ,CAACA,KAAKC,aAAaD,IAAI,CAAC,CACxC;IAKAE,YAAY;MACVC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;MACAC;IACF,GAAG;AACD,YAAMC,cAAc,CAAC,GAAGtB,uBAAsB,aAAauB,OAAO,CAAC;AACnE,UAAI,CAACvB,uBAAsBE,cAAc;AACvCF,+BAAsBE,eAAe;AACrC,mBAAWsB,cAAcF,aAAa;AACpCE,qBAAWC,WAAWJ,MAAMT,SAAS;QACvC;MACF;AACAA,gBAAUc,oBAAoBJ,WAAW;AAEzC,WAAK,aAAaV;AAClB,WAAKC,YAAYA;AACjB,WAAKC,MAAMA;AACX,WAAK,wBAAwBE;AAC7B,WAAK,mBAAmBC;AACxB,WAAKG,WAAWA;AAChB,WAAK,aAAaD;AAClB,WAAKD,YAAYA;AACjB,WAAKS,cAAcZ;AAEnB,WAAK,WAAWa,SAAS,IAAI;IAC/B;IAEA,IAAIC,UAAU;AACZ,aAAO,KAAK,SAASC,SAAS;IAChC;IAEA,IAAIC,cAAc;AAChB,aACE,KAAKF,WAAW,KAAK,WAAWG,QAAQ,MAAMC,qBAAqBC;IAEvE;IAMAC,cAAcC,SAAS;AACrB,WAAK,WAAWD,cAAcC,OAAO;IACvC;IAMAC,WAAWC,OAAO,KAAK,WAAWN,QAAQ,GAAG;AAC3C,WAAK,SAAS;AACd,cAAQM,MAAI;QACV,KAAKL,qBAAqBC;AACxB,eAAKpB,IAAIyB,UAAUC,OAAO,cAAc,IAAI;AAC5C,eAAKC,qBAAqB;AAC1B,eAAKC,oBAAoB,KAAK;AAC9B,eAAKC,mCAAmC,IAAI;AAC5C,eAAKC,aAAa;AAClB;QACF,KAAKX,qBAAqBY;AACxB,eAAKJ,qBAAqB;AAC1B,eAAKC,oBAAoB,IAAI;AAC7B,eAAKI,YAAY;AACjB;QACF,KAAKb,qBAAqBc;AACxB,eAAKC,oBAAoB;AACzB,eAAKN,oBAAoB,KAAK;AAC9B,eAAKE,aAAa;AAClB;QACF;AACE,eAAKH,qBAAqB;AAC1B,eAAKC,oBAAoB,IAAI;AAC7B,eAAKI,YAAY;MACrB;AAEA,WAAKH,mCAAmC,KAAK;AAC7C,YAAM;QAAEJ;MAAU,IAAI,KAAKzB;AAC3ByB,gBAAUC,OAAO,cAAc,KAAK;AACpC,UAAIF,SAASL,qBAAqBgB,OAAO;AACvCV,kBAAUC,OAAO,kBAAkB,IAAI;MACzC,OAAO;AACLD,kBAAUC,OAAO,kBAAkB,KAAK;AACxC,mBAAWhB,cAAcxB,uBAAsB,aAAauB,OAAO,GAAG;AACpEgB,oBAAUC,OACR,GAAGhB,WAAW0B,KAAK,WACnBZ,SAASd,WAAWd,WACtB;QACF;MACF;AACA,WAAKI,IAAIqC,SAAS;IACpB;IAEAC,aAAajC,WAAW;AACtB,aAAOA,cAAc,KAAK,YAAYL;IACxC;IAMAuC,gBAAgBC,WAAW;AACzB,WAAK,WAAWD,gBAAgBC,SAAS;IAC3C;IAMAC,YAAYC,QAAQ;AAClB,WAAK,WAAWD,YAAYC,MAAM;IACpC;IAEAC,eAAehD,MAAM;AACnB,WAAK,WAAWgD,eAAehD,IAAI;IACrC;IAEAiD,cAAcC,UAAU,OAAO;AAC7B,WAAK7C,IAAIyB,UAAUC,OAAO,WAAW,CAACmB,OAAO;IAC/C;IAEAjB,oBAAoBiB,UAAU,OAAO;AACnC,WAAK7C,IAAIyB,UAAUC,OAAO,YAAY,CAACmB,OAAO;IAChD;IAEAhB,mCAAmCgB,UAAU,OAAO;AAClD,WAAK,kBAAkBjB,oBAAoBiB,OAAO;IACpD;IAEA,IAAI,sBAAsB;AACxB,aAAO,KAAK,SAAS7B,SAAS,IAC1B,KAAK,SAASP,OAAO,IACrB,KAAK,WAAWqC,WAAW,KAAK/C,SAAS;IAC/C;IAMA,MAAMgD,SAAS;AACb,WAAK,cAAc;AACnB,WAAK/C,IAAIgD,WAAW;AACpB,WAAKpB,oBAAoB,IAAI;AAC7B,WAAK5B,IAAIyB,UAAUC,OAAO,cAAc,KAAK;AAC7C,WAAK,sBAAsBuB,MAAM;AACjC,WAAK,uBAAuB;AAC5B,YAAMC,uBAAuB,oBAAIC,IAAI;AACrC,iBAAWC,UAAU,KAAK,qBAAqB;AAC7CA,eAAOC,cAAc;AACrBD,eAAOE,KAAK,IAAI;AAChB,YAAIF,OAAOG,qBAAqB;AAC9B,eAAK,WAAWC,gCAAgCJ,MAAM;AACtDF,+BAAqBO,IAAIL,OAAOG,mBAAmB;QACrD;MACF;AAEA,YAAMpD,kBAAkB,KAAK;AAC7B,UAAIA,iBAAiB;AACnB,mBAAWuD,YAAYvD,gBAAgBwD,uBAAuB,GAAG;AAE/DD,mBAASE,KAAK;AACd,cAAI,KAAK,WAAWC,2BAA2BH,SAASI,KAAKC,EAAE,GAAG;AAChE;UACF;AACA,cAAIb,qBAAqBc,IAAIN,SAASI,KAAKC,EAAE,GAAG;AAC9C;UACF;AACA,gBAAMX,SAAS,MAAM,KAAKa,YAAYP,QAAQ;AAC9C,cAAI,CAACN,QAAQ;AACX;UACF;AACA,eAAKc,aAAad,MAAM;AACxBA,iBAAOC,cAAc;QACvB;MACF;AACA,WAAK,cAAc;AACnB,WAAK,WAAWc,UAAUC,SAAS,mBAAmB;QACpDC,QAAQ;QACRC,YAAY,KAAKvE,YAAY;MAC/B,CAAC;IACH;IAKAwE,UAAU;AACR,WAAK,eAAe;AACpB,WAAKvE,IAAIgD,WAAW;AACpB,WAAKpB,oBAAoB,KAAK;AAC9B,WAAK5B,IAAIyB,UAAUC,OAAO,cAAc,IAAI;AAC5C,UAAI,KAAK,cAAc,CAAC,KAAK,sBAAsB;AACjD,aAAK,uBAAuB,IAAI8C,gBAAgB;AAChD,cAAMC,SAAS,KAAK,WAAWC,eAAe,KAAK,oBAAoB;AACvE,aAAK,WAAW1E,IAAI2E,iBAClB,eACAC,CAAAA,OAAK;AAKH,gBAAMC,sBAAsB;AAC5B,gBAAM;YAAEC;YAASC;YAASC;UAAU,IAAIJ;AACxC,gBAAMK,2BAA2B,KAAK;AACtC,cAAID,YAAYC,2BAA2BJ,qBAAqB;AAC9D,iBAAK,4BAA4BG;AACjC;UACF;AACA,eAAK,4BAA4B;AACjC,gBAAM;YAAEvD,WAAAA;UAAU,IAAI,KAAKzB;AAC3ByB,UAAAA,WAAUC,OAAO,eAAe,IAAI;AACpC,gBAAMwD,YAAWC,SAASC,kBAAkBN,SAASC,OAAO;AAC5DtD,UAAAA,WAAUC,OAAO,eAAe,KAAK;AACrC,cAAI,CAAC,KAAK1B,IAAIqF,SAASH,UAAS,CAAC,CAAC,GAAG;AACnC;UACF;AACA,cAAInB;AACJ,gBAAMuB,QAAQ,IAAIC,OAAO,IAAIC,sBAAsB,SAAS;AAC5D,qBAAWC,WAAWP,WAAU;AAC9B,gBAAII,MAAMI,KAAKD,QAAQ1B,EAAE,GAAG;AAC1BA,mBAAK0B,QAAQ1B;AACb;YACF;UACF;AACA,cAAI,CAACA,IAAI;AACP;UACF;AACA,gBAAMX,SAAS,KAAK,SAASuC,IAAI5B,EAAE;AACnC,cAAIX,QAAQG,wBAAwB,MAAM;AACxCqB,YAAAA,GAAEgB,gBAAgB;AAClBhB,YAAAA,GAAEiB,eAAe;AACjBzC,mBAAO0C,SAASlB,EAAC;UACnB;QACF,GACA;UAAEH;UAAQsB,SAAS;QAAK,CAC1B;MACF;AAEA,YAAM5F,kBAAkB,KAAK;AAC7B,YAAM6F,qBAAqB,CAAA;AAC3B,UAAI7F,iBAAiB;AACnB,cAAM8F,qBAAqB,oBAAI9G,IAAI;AACnC,cAAM+G,mBAAmB,oBAAI/G,IAAI;AACjC,mBAAWiE,UAAU,KAAK,qBAAqB;AAC7CA,iBAAO+C,eAAe;AACtB,cAAI,CAAC/C,OAAOG,qBAAqB;AAC/ByC,+BAAmBI,KAAKhD,MAAM;AAC9B;UACF;AACA,cAAIA,OAAOiD,UAAU,MAAM,MAAM;AAC/BJ,+BAAmBK,IAAIlD,OAAOG,qBAAqBH,MAAM;AACzD;UACF,OAAO;AACL8C,6BAAiBI,IAAIlD,OAAOG,qBAAqBH,MAAM;UACzD;AACA,eAAKmD,sBAAsBnD,OAAOG,mBAAmB,GAAGD,KAAK;AAC7DF,iBAAOoD,OAAO;QAChB;AAGA,cAAMC,YAAYtG,gBAAgBwD,uBAAuB;AACzD,mBAAWD,YAAY+C,WAAW;AAChC,gBAAM;YAAE1C;UAAG,IAAIL,SAASI;AACxB,cAAI,KAAK,WAAWD,2BAA2BE,EAAE,GAAG;AAClDL,qBAASgD,aAAa;cAAEC,SAAS;YAAK,CAAC;AACvC;UACF;AACA,cAAIvD,SAAS8C,iBAAiBP,IAAI5B,EAAE;AACpC,cAAIX,QAAQ;AACVA,mBAAOwD,uBAAuBlD,QAAQ;AACtCN,mBAAOE,KAAK,KAAK;AACjBI,qBAASJ,KAAK;AACd;UACF;AAEAF,mBAAS6C,mBAAmBN,IAAI5B,EAAE;AAClC,cAAIX,QAAQ;AACV,iBAAK,WAAWyD,6BAA6BzD,MAAM;AACnD,gBAAIA,OAAO0D,wBAAwBpD,QAAQ,GAAG;AAE5CN,qBAAOE,KAAK,KAAK;YACnB;UACF;AACAI,mBAASJ,KAAK;QAChB;MACF;AAEA,WAAK,SAAS;AACd,UAAI,KAAKvC,SAAS;AAChB,aAAKf,IAAIqC,SAAS;MACpB;AACA,YAAM;QAAEZ;MAAU,IAAI,KAAKzB;AAC3B,iBAAWU,cAAcxB,uBAAsB,aAAauB,OAAO,GAAG;AACpEgB,kBAAU+E,OAAO,GAAG9F,WAAW0B,KAAK,SAAS;MAC/C;AACA,WAAKT,qBAAqB;AAC1B,WAAKE,mCAAmC,IAAI;AAC5C1B,uBAAiB4G,sBAAsBf,kBAAkB;AAEzD,WAAK,eAAe;IACtB;IAEAO,sBAAsBxC,IAAI;AACxB,aAAO,KAAK,kBAAkBwC,sBAAsBxC,EAAE,KAAK;IAC7D;IAMAiD,gBAAgB5D,QAAQ;AACtB,YAAM6D,gBAAgB,KAAK,WAAWC,UAAU;AAChD,UAAID,kBAAkB7D,QAAQ;AAC5B;MACF;AAEA,WAAK,WAAW4D,gBAAgB5D,MAAM;IACxC;IAEAlB,sBAAsB;AACpB,WAAKlC,IAAIgD,WAAW;AACpB,UAAI,KAAK,YAAYhD,OAAO,CAAC,KAAK,kBAAkB;AAClD,aAAK,mBAAmB,IAAIwE,gBAAgB;AAC5C,cAAMC,SAAS,KAAK,WAAWC,eAAe,KAAK,gBAAgB;AAEnE,aAAK,WAAW1E,IAAI2E,iBAClB,eACA,KAAK,sBAAsBwC,KAAK,IAAI,GACpC;UAAE1C;QAAO,CACX;AACA,aAAK,WAAWzE,IAAIyB,UAAUgC,IAAI,cAAc;MAClD;IACF;IAEA9B,uBAAuB;AACrB,WAAK3B,IAAIgD,WAAW;AACpB,UAAI,KAAK,YAAYhD,OAAO,KAAK,kBAAkB;AACjD,aAAK,iBAAiBiD,MAAM;AAC5B,aAAK,mBAAmB;AAExB,aAAK,WAAWjD,IAAIyB,UAAU+E,OAAO,cAAc;MACrD;IACF;IAEA,sBAAsBY,QAAO;AAG3B,WAAK,WAAWC,YAAY;AAC5B,YAAM;QAAEC;MAAO,IAAIF;AACnB,UACEE,WAAW,KAAK,WAAWtH,QACzBsH,OAAOC,aAAa,MAAM,MAAM,SAChCD,OAAO7F,UAAU4D,SAAS,cAAc,MACxC,KAAK,WAAWrF,IAAIqF,SAASiC,MAAM,GACrC;AACA,cAAM;UAAEE;QAAM,IAAIC,iBAAYC;AAC9B,YAAIN,OAAMO,WAAW,KAAMP,OAAMQ,WAAWJ,OAAQ;AAElD;QACF;AACA,aAAK,WAAWK,eACd,aACA,MACqB,IACvB;AACA,aAAK,WAAW7H,IAAIyB,UAAUgC,IAAI,MAAM;AACxC,aAAKb,cAAc;AACnBpD,wBAAgBsI,kBACd,MACA,KAAK,WAAWC,cAAc,OAC9B;UAAET,QAAQ,KAAK,WAAWtH;UAAKgI,GAAGZ,OAAMY;UAAGC,GAAGb,OAAMa;QAAE,CACxD;AACA,aAAK,WAAWjI,IAAI2E,iBAClB,aACA,MAAM;AACJ,eAAK,WAAW3E,IAAIyB,UAAU+E,OAAO,MAAM;AAC3C,eAAK5D,cAAc,IAAI;QACzB,GACA;UAAEsF,MAAM;UAAMzD,QAAQ,KAAK,WAAW0D;QAAQ,CAChD;AACAf,QAAAA,OAAMvB,eAAe;MACvB;IACF;IAEA7D,cAAc;AACZ,UAAI,KAAK,UAAU;AACjB;MACF;AACA,WAAK,WAAW,IAAIwC,gBAAgB;AACpC,YAAMC,SAAS,KAAK,WAAWC,eAAe,KAAK,QAAQ;AAE3D,WAAK1E,IAAI2E,iBAAiB,eAAe,KAAKyD,YAAYjB,KAAK,IAAI,GAAG;QACpE1C;MACF,CAAC;AACD,YAAM4D,YAAY,KAAKA,UAAUlB,KAAK,IAAI;AAC1C,WAAKnH,IAAI2E,iBAAiB,aAAa0D,WAAW;QAAE5D;MAAO,CAAC;AAC5D,WAAKzE,IAAI2E,iBAAiB,iBAAiB0D,WAAW;QAAE5D;MAAO,CAAC;IAClE;IAEA3C,eAAe;AACb,WAAK,UAAUmB,MAAM;AACrB,WAAK,WAAW;IAClB;IAEAqF,OAAOlF,QAAQ;AACb,WAAK,SAASkD,IAAIlD,OAAOW,IAAIX,MAAM;AACnC,YAAM;QAAEG;MAAoB,IAAIH;AAChC,UACEG,uBACA,KAAK,WAAWM,2BAA2BN,mBAAmB,GAC9D;AACA,aAAK,WAAWgF,+BAA+BnF,MAAM;MACvD;IACF;IAEAoF,OAAOpF,QAAQ;AACb,WAAK,SAASqF,OAAOrF,OAAOW,EAAE;AAC9B,WAAK,uBAAuB2E,yBAAyBtF,OAAOuF,UAAU;AAEtE,UAAI,CAAC,KAAK,gBAAgBvF,OAAOG,qBAAqB;AACpD,aAAK,WAAWqF,4BAA4BxF,MAAM;MACpD;IACF;IAMAoD,OAAOpD,QAAQ;AACb,WAAKoF,OAAOpF,MAAM;AAClB,WAAK,WAAWyF,aAAazF,MAAM;AACnCA,aAAOpD,IAAIwG,OAAO;AAClBpD,aAAO0F,kBAAkB;IAC3B;IAOAC,aAAa3F,QAAQ;AACnB,UAAIA,OAAO4F,WAAW,MAAM;AAC1B;MACF;AAEA,UAAI5F,OAAO4F,UAAU5F,OAAOG,qBAAqB;AAC/C,aAAK,WAAWqF,4BAA4BxF,MAAM;AAClD6F,yBAAiBC,wBAAwB9F,MAAM;AAC/CA,eAAOG,sBAAsB;MAC/B;AAEA,WAAK+E,OAAOlF,MAAM;AAClBA,aAAO4F,QAAQR,OAAOpF,MAAM;AAC5BA,aAAO+F,UAAU,IAAI;AACrB,UAAI/F,OAAOpD,OAAOoD,OAAO0F,iBAAiB;AACxC1F,eAAOpD,IAAIwG,OAAO;AAClB,aAAKxG,IAAIoJ,OAAOhG,OAAOpD,GAAG;MAC5B;IACF;IAMAyD,IAAIL,QAAQ;AACV,UAAIA,OAAO4F,WAAW,QAAQ5F,OAAO0F,iBAAiB;AACpD;MACF;AACA,WAAKC,aAAa3F,MAAM;AACxB,WAAK,WAAWiG,UAAUjG,MAAM;AAChC,WAAKkF,OAAOlF,MAAM;AAElB,UAAI,CAACA,OAAO0F,iBAAiB;AAC3B,cAAM9I,MAAMoD,OAAOkG,OAAO;AAC1B,aAAKtJ,IAAIoJ,OAAOpJ,GAAG;AACnBoD,eAAO0F,kBAAkB;MAC3B;AAGA1F,aAAOmG,kBAAkB;AACzBnG,aAAOoG,UAAwB,CAAC,KAAK,WAAW;AAChD,WAAK,WAAWC,uBAAuBrG,MAAM;AAC7CA,aAAOsG,iBAAiBtG,OAAOuG,oBAAoB;IACrD;IAEAC,gBAAgBxG,QAAQ;AACtB,UAAI,CAACA,OAAO0F,iBAAiB;AAC3B;MACF;AAEA,YAAM;QAAEe;MAAc,IAAI1E;AAC1B,UAAI/B,OAAOpD,IAAIqF,SAASwE,aAAa,KAAK,CAAC,KAAK,uBAAuB;AAKrEzG,eAAO0G,sBAAsB;AAC7B,aAAK,wBAAwBC,WAAW,MAAM;AAC5C,eAAK,wBAAwB;AAC7B,cAAI,CAAC3G,OAAOpD,IAAIqF,SAASF,SAAS0E,aAAa,GAAG;AAChDzG,mBAAOpD,IAAI2E,iBACT,WACA,MAAM;AACJvB,qBAAO0G,sBAAsB;YAC/B,GACA;cAAE5B,MAAM;cAAMzD,QAAQ,KAAK,WAAW0D;YAAQ,CAChD;AACA0B,0BAAcG,MAAM;UACtB,OAAO;AACL5G,mBAAO0G,sBAAsB;UAC/B;QACF,GAAG,CAAC;MACN;AAEA1G,aAAO6G,sBAAsB,KAAK,uBAAuBC,iBACvD,KAAKlK,KACLoD,OAAOpD,KACPoD,OAAOuF,YACa,IACtB;IACF;IAMAzE,aAAad,QAAQ;AACnB,UAAIA,OAAO+G,iBAAiB,GAAG;AAC7B/G,eAAO4F,WAAW;AAClB5F,eAAOgH,QAAQ;AACfhH,eAAOE,KAAK;MACd,OAAO;AACL,aAAKG,IAAIL,MAAM;MACjB;IACF;IAMAiH,kBAAkBjH,QAAQ;AACxB,YAAMkH,MAAMA,MAAMlH,OAAOmH,WAAWH,QAAQhH,MAAM;AAClD,YAAMoH,OAAOA,MAAM;AACjBpH,eAAOoD,OAAO;MAChB;AAEA,WAAK/D,YAAY;QAAE6H;QAAKE;QAAMC,UAAU;MAAM,CAAC;IACjD;IAEAC,eAAeC,MAAK;AAClB,iBAAWvH,UAAU,KAAK,SAAS3C,OAAO,GAAG;AAC3C,YAAI2C,OAAOuH,QAAQA,MAAK;AACtB,iBAAOvH;QACT;MACF;AACA,aAAO;IACT;IAMAwH,YAAY;AACV,aAAO,KAAK,WAAWC,MAAM;IAC/B;IAEA,IAAI,qBAAqB;AACvB,aAAO3L,uBAAsB,aAAayG,IAAI,KAAK,WAAWzE,QAAQ,CAAC;IACzE;IAEAwD,eAAeoG,IAAI;AACjB,aAAO,KAAK,WAAWpG,eAAeoG,EAAE;IAC1C;IAOA,iBAAiBpI,QAAQ;AACvB,YAAMhC,aAAa,KAAK;AACxB,aAAOA,aAAa,IAAIA,WAAWqK,UAAUlL,YAAY6C,MAAM,IAAI;IACrE;IAEAsI,0BAA0B;AACxB,aAAO,KAAK,oBAAoBA,wBAAwB;IAC1D;IAOA,MAAMC,YAAY3J,SAASoB,QAAQ;AACjC,WAAKrB,cAAcC,OAAO;AAC1B,YAAM,KAAK,WAAWC,WAAWD,QAAQE,IAAI;AAE7C,YAAM;QAAE0J;QAASC;MAAQ,IAAI,KAAK,gBAAgB;AAClD,YAAMpH,KAAK,KAAK6G,UAAU;AAC1B,YAAMxH,SAAS,KAAK,iBAAiB;QACnC4F,QAAQ;QACRjF;QACAiE,GAAGkD;QACHjD,GAAGkD;QACHrL,WAAW,KAAK;QAChBsL,YAAY;QACZ,GAAG1I;MACL,CAAC;AACD,UAAIU,QAAQ;AACV,aAAKK,IAAIL,MAAM;MACjB;IACF;IAOA,MAAMa,YAAYH,MAAM;AACtB,aACG,MAAM5E,uBAAsB,aAC1ByG,IAAI7B,KAAKuH,kBAAkBvH,KAAKwH,oBAAoB,GACnDrH,YAAYH,MAAM,MAAM,KAAK,UAAU,KAAM;IAErD;IASAyH,sBAAsBnE,QAAOgE,YAAYtH,OAAO,CAAC,GAAG;AAClD,YAAMC,KAAK,KAAK6G,UAAU;AAC1B,YAAMxH,SAAS,KAAK,iBAAiB;QACnC4F,QAAQ;QACRjF;QACAiE,GAAGZ,OAAM8D;QACTjD,GAAGb,OAAM+D;QACTrL,WAAW,KAAK;QAChBsL;QACA,GAAGtH;MACL,CAAC;AACD,UAAIV,QAAQ;AACV,aAAKK,IAAIL,MAAM;MACjB;AAEA,aAAOA;IACT;IAEA,IAAIoI,qBAAqB;AACvB,aAAO,KAAKxL,IAAIyL,sBAAsB;IACxC;IAEA,kBAAkB;AAChB,YAAM;QAAEzD,GAAAA;QAAGC,GAAAA;QAAGyD;QAAOC;MAAO,IAAI,KAAKH;AACrC,YAAMI,MAAMC,KAAKC,IAAI,GAAG9D,EAAC;AACzB,YAAM+D,MAAMF,KAAKC,IAAI,GAAG7D,EAAC;AACzB,YAAM+D,MAAMH,KAAKI,IAAIC,OAAOC,YAAYnE,KAAI0D,KAAK;AACjD,YAAMU,MAAMP,KAAKI,IAAIC,OAAOG,aAAapE,KAAI0D,MAAM;AACnD,YAAMW,WAAWV,MAAMI,OAAO,IAAIhE;AAClC,YAAMuE,WAAWR,MAAMK,OAAO,IAAInE;AAClC,YAAM,CAACiD,SAASC,OAAO,IACrB,KAAK7K,SAASkM,WAAW,QAAQ,IAC7B,CAACF,SAASC,OAAO,IACjB,CAACA,SAASD,OAAO;AAEvB,aAAO;QAAEpB;QAASC;MAAQ;IAC5B;IAKAsB,aAAa3I,OAAO,CAAC,GAAG;AACtB,WAAKyH,sBACH,KAAK,gBAAgB,GACF,MACnBzH,IACF;IACF;IAMA4I,YAAYtJ,QAAQ;AAClB,WAAK,WAAWsJ,YAAYtJ,MAAM;IACpC;IAMAuJ,eAAevJ,QAAQ;AACrB,WAAK,WAAWuJ,eAAevJ,MAAM;IACvC;IAMAwJ,SAASxJ,QAAQ;AACf,WAAK,WAAWwJ,SAASxJ,MAAM;IACjC;IAMAiF,UAAUjB,QAAO;AACf,YAAM;QAAEI;MAAM,IAAIC,iBAAYC;AAC9B,UAAIN,OAAMO,WAAW,KAAMP,OAAMQ,WAAWJ,OAAQ;AAElD;MACF;AAEA,UAAIJ,OAAME,WAAW,KAAKtH,KAAK;AAC7B;MACF;AAEA,UAAI,CAAC,KAAK,iBAAiB;AAKzB;MACF;AACA,WAAK,kBAAkB;AAEvB,UACE,KAAK,oBAAoB6M,YACzB,KAAK,mBAAmBC,yBACxB;AACA;MACF;AAEA,UAAI,CAAC,KAAK,aAAa;AACrB,aAAK,cAAc;AACnB;MACF;AAEA,YAAMC,cAAc,KAAK,WAAW7L,QAAQ;AAC5C,UACE6L,gBAAgB5L,qBAAqB6L,SACrCD,gBAAgB5L,qBAAqB8L,WACrC;AACA,aAAK,WAAW5F,YAAY;AAC5B;MACF;AAEA,WAAKkE,sBAAsBnE,QAA0B,KAAK;IAC5D;IAMAgB,YAAYhB,QAAO;AACjB,UAAI,KAAK,WAAWlG,QAAQ,MAAMC,qBAAqBc,WAAW;AAChE,aAAKC,oBAAoB;MAC3B;AACA,UAAI,KAAK,iBAAiB;AAMxB,aAAK,kBAAkB;AACvB;MACF;AACA,YAAM;QAAEsF;MAAM,IAAIC,iBAAYC;AAC9B,UAAIN,OAAMO,WAAW,KAAMP,OAAMQ,WAAWJ,OAAQ;AAElD;MACF;AAEA,UAAIJ,OAAME,WAAW,KAAKtH,KAAK;AAC7B;MACF;AAEA,WAAK,kBAAkB;AAEvB,UAAI,KAAK,oBAAoB6M,UAAU;AACrC,aAAKK,oBAAoB9F,MAAK;AAC9B;MACF;AAEA,YAAMhE,SAAS,KAAK,WAAW8D,UAAU;AACzC,WAAK,cAAc,CAAC9D,UAAUA,OAAOrC,QAAQ;IAC/C;IAEAmM,oBAAoB9F,QAAO;AACzB,WAAKpH,IAAIgK,MAAM;QACbmD,eAAe;MACjB,CAAC;AACD,UAAI,KAAK,YAAY;AACnB,aAAK,mBAAmBC,aAAa,MAAM,KAAK,YAAY,OAAOhG,MAAK;AACxE;MACF;AAEA,WAAK,WAAWiG,yBAAyB,IAAI;AAC7C,WAAK,aAAa,IAAI7I,gBAAgB;AACtC,YAAMC,SAAS,KAAK,WAAWC,eAAe,KAAK,UAAU;AAC7D,WAAK1E,IAAI2E,iBACP,QACA,CAAC;QAAE2I;MAAc,MAAM;AACrB,YAAIA,iBAAiB,CAAC,KAAKtN,IAAIqF,SAASiI,aAAa,GAAG;AACtD,eAAK,kBAAkB;AACvB,eAAKC,eAAe;QACtB;MACF,GACA;QAAE9I;MAAO,CACX;AACA,WAAK,mBAAmB2I,aAAa,MAAM,KAAK,YAAY,OAAOhG,MAAK;IAC1E;IAEAoG,MAAMC,KAAI;AACR,UAAIA,KAAI;AACN,cAAM;UAAE5D;QAAc,IAAI1E;AAC1B,YAAI,KAAKnF,IAAIqF,SAASwE,aAAa,GAAG;AACpC,eAAK,kBAAkBA;QACzB;AACA;MACF;AACA,UAAI,KAAK,iBAAiB;AACxBE,mBAAW,MAAM;AACf,eAAK,iBAAiBC,MAAM;AAC5B,eAAK,kBAAkB;QACzB,GAAG,CAAC;MACN;IACF;IAEA0D,kBAAkBC,YAAY,OAAO;AACnC,UAAI,CAAC,KAAK,YAAY;AACpB,eAAO;MACT;AACA,WAAK,WAAWN,yBAAyB,IAAI;AAC7C,WAAK,WAAWpK,MAAM;AACtB,WAAK,aAAa;AAClB,WAAK,kBAAkB;AACvB,aAAO,KAAK,mBAAmB2K,WAAWD,SAAS;IACrD;IASAE,cAAczK,QAAQ4E,IAAGC,IAAG;AAC1B,YAAM6F,QAAQ,KAAK,WAAWC,WAAW/F,IAAGC,EAAC;AAC7C,UAAI6F,UAAU,QAAQA,UAAU,MAAM;AACpC,eAAO;MACT;AACAA,YAAM/E,aAAa3F,MAAM;AACzB,aAAO;IACT;IAEAmK,iBAAiB;AACf,UAAI,KAAK,YAAY;AACnB,aAAKG,kBAAkB;AACvB,eAAO;MACT;AACA,aAAO;IACT;IAEAM,kBAAkB;AAChB,UAAI,CAAC,KAAK,YAAY;AACpB;MACF;AACA,WAAK,mBAAmBC,2BAA2B,IAAI;IACzD;IAKAC,UAAU;AACR,WAAKX,eAAe;AACpB,UAAI,KAAK,WAAWrG,UAAU,GAAG8B,WAAW,MAAM;AAEhD,aAAK,WAAWuE,eAAe;AAC/B,aAAK,WAAWvG,gBAAgB,IAAI;MACtC;AAEA,UAAI,KAAK,uBAAuB;AAC9BmH,qBAAa,KAAK,qBAAqB;AACvC,aAAK,wBAAwB;MAC/B;AAEA,iBAAW/K,UAAU,KAAK,SAAS3C,OAAO,GAAG;AAC3C,aAAK,uBAAuBiI,yBAAyBtF,OAAOuF,UAAU;AACtEvF,eAAO+F,UAAU,IAAI;AACrB/F,eAAO0F,kBAAkB;AACzB1F,eAAOpD,IAAIwG,OAAO;MACpB;AACA,WAAKxG,MAAM;AACX,WAAK,SAASoO,MAAM;AACpB,WAAK,WAAWC,YAAY,IAAI;IAClC;IAEA,WAAW;AAIT,iBAAWjL,UAAU,KAAK,SAAS3C,OAAO,GAAG;AAC3C,YAAI2C,OAAOrC,QAAQ,GAAG;AACpBqC,iBAAOoD,OAAO;QAChB;MACF;IACF;IAMA8C,OAAO;MAAEhJ;IAAS,GAAG;AACnB,WAAKA,WAAWA;AAChBgO,yBAAmB,KAAKtO,KAAKM,QAAQ;AACrC,iBAAW8C,UAAU,KAAK,WAAWN,WAAW,KAAK/C,SAAS,GAAG;AAC/D,aAAK0D,IAAIL,MAAM;AACfA,eAAOgH,QAAQ;MACjB;AAGA,WAAK7I,WAAW;IAClB;IAMAgN,OAAO;MAAEjO;IAAS,GAAG;AAInB,WAAK,WAAWiN,eAAe;AAC/B,WAAK,SAAS;AAEd,YAAMiB,cAAc,KAAKlO,SAASkM;AAClC,YAAMA,WAAWlM,SAASkM;AAE1B,WAAKlM,WAAWA;AAChBgO,yBAAmB,KAAKtO,KAAK;QAAEwM;MAAS,CAAC;AACzC,UAAIgC,gBAAgBhC,UAAU;AAC5B,mBAAWpJ,UAAU,KAAK,SAAS3C,OAAO,GAAG;AAC3C2C,iBAAOqL,OAAOjC,QAAQ;QACxB;MACF;IACF;IAMA,IAAIkC,iBAAiB;AACnB,YAAM;QAAEC;QAAWC;MAAW,IAAI,KAAKtO,SAASuO;AAChD,aAAO,CAACF,WAAWC,UAAU;IAC/B;IAEA,IAAIE,QAAQ;AACV,aAAO,KAAK,WAAWC,eAAeC;IACxC;EACF;ACliCA,MAAMC,YAAN,MAAMA,WAAU;IACd,UAAU;IAEV,WAAW,oBAAIC,IAAI;IAEnB,YAAY,oBAAIA,IAAI;IAEpB,OAAO,MAAM;IAEbC,YAAY;MAAEC;IAAU,GAAG;AACzB,WAAKA,YAAYA;IACnB;IAEAC,UAAUC,QAAQ;AAChB,UAAI,CAAC,KAAK,SAAS;AACjB,aAAK,UAAUA;AACf;MACF;AAEA,UAAI,KAAK,YAAYA,QAAQ;AAC3B,YAAI,KAAK,SAASC,OAAO,GAAG;AAC1B,qBAAWC,QAAQ,KAAK,SAASC,OAAO,GAAG;AACzCD,iBAAKE,OAAO;AACZJ,mBAAOK,OAAOH,IAAI;UACpB;QACF;AACA,aAAK,UAAUF;MACjB;IACF;IAEA,WAAWM,cAAc;AACvB,aAAOC,OAAO,MAAM,eAAe,IAAIC,cAAc,CAAC;IACxD;IAEA,OAAO,QAAQC,SAAS,CAACC,IAAGC,IAAGC,OAAOC,MAAM,GAAG;AAC7C,YAAM;QAAEC;MAAM,IAAIL;AAClBK,YAAMC,MAAM,GAAG,MAAMJ,EAAC;AACtBG,YAAME,OAAO,GAAG,MAAMN,EAAC;AACvBI,YAAMF,QAAQ,GAAG,MAAMA,KAAK;AAC5BE,YAAMD,SAAS,GAAG,MAAMA,MAAM;IAChC;IAEA,aAAa;AACX,YAAMI,MAAMtB,WAAUW,YAAYY,OAAO,GAAG,GAA0B,IAAI;AAC1E,WAAK,QAAQb,OAAOY,GAAG;AACvBA,UAAIE,aAAa,eAAe,IAAI;AAEpC,aAAOF;IACT;IAEA,gBAAgBG,MAAMC,QAAQ;AAC5B,YAAMC,WAAW3B,WAAUW,YAAYiB,cAAc,UAAU;AAC/DH,WAAKf,OAAOiB,QAAQ;AACpB,YAAME,aAAa,QAAQH,MAAM;AACjCC,eAASH,aAAa,MAAMK,UAAU;AACtCF,eAASH,aAAa,iBAAiB,mBAAmB;AAC1D,YAAMM,cAAc9B,WAAUW,YAAYiB,cAAc,KAAK;AAC7DD,eAASjB,OAAOoB,WAAW;AAC3BA,kBAAYN,aAAa,QAAQ,IAAIE,MAAM,EAAE;AAC7CI,kBAAYC,UAAUC,IAAI,MAAM;AAEhC,aAAOH;IACT;IAEA,kBAAkBf,SAASmB,YAAY;AACrC,iBAAW,CAACC,KAAKC,KAAK,KAAKC,OAAOC,QAAQJ,UAAU,GAAG;AACrD,YAAIE,UAAU,MAAM;AAClBrB,kBAAQwB,gBAAgBJ,GAAG;QAC7B,OAAO;AACLpB,kBAAQU,aAAaU,KAAKC,KAAK;QACjC;MACF;IACF;IAEAI,KAAKN,YAAYO,kBAAkB,OAAOC,UAAU,OAAO;AACzD,YAAMC,KAAK1C,WAAU;AACrB,YAAMO,OAAO,KAAK,WAAW;AAE7B,YAAMkB,OAAOzB,WAAUW,YAAYiB,cAAc,MAAM;AACvDrB,WAAKG,OAAOe,IAAI;AAChB,YAAMkB,OAAO3C,WAAUW,YAAYiB,cAAc,MAAM;AACvDH,WAAKf,OAAOiC,IAAI;AAChB,YAAMjB,SAAS,SAAS,KAAKvB,SAAS,IAAIuC,EAAE;AAC5CC,WAAKnB,aAAa,MAAME,MAAM;AAC9BiB,WAAKnB,aAAa,iBAAiB,oBAAoB;AAEvD,UAAIgB,iBAAiB;AACnB,aAAK,UAAUI,IAAIF,IAAIC,IAAI;MAC7B;AAGA,YAAMd,aAAaY,UAAU,KAAK,gBAAgBhB,MAAMC,MAAM,IAAI;AAElE,YAAMmB,MAAM7C,WAAUW,YAAYiB,cAAc,KAAK;AACrDrB,WAAKG,OAAOmC,GAAG;AACfA,UAAIrB,aAAa,QAAQ,IAAIE,MAAM,EAAE;AACrC,WAAKoB,iBAAiBvC,MAAM0B,UAAU;AAEtC,WAAK,SAASW,IAAIF,IAAInC,IAAI;AAE1B,aAAO;QAAEmC;QAAIb,YAAY,QAAQA,UAAU;MAAI;IACjD;IAEAkB,YAAYd,YAAYe,6BAA6B;AAKnD,YAAMN,KAAK1C,WAAU;AACrB,YAAMO,OAAO,KAAK,WAAW;AAC7B,YAAMkB,OAAOzB,WAAUW,YAAYiB,cAAc,MAAM;AACvDrB,WAAKG,OAAOe,IAAI;AAChB,YAAMkB,OAAO3C,WAAUW,YAAYiB,cAAc,MAAM;AACvDH,WAAKf,OAAOiC,IAAI;AAChB,YAAMjB,SAAS,SAAS,KAAKvB,SAAS,IAAIuC,EAAE;AAC5CC,WAAKnB,aAAa,MAAME,MAAM;AAC9BiB,WAAKnB,aAAa,iBAAiB,oBAAoB;AAEvD,UAAIyB;AACJ,UAAID,6BAA6B;AAC/B,cAAME,OAAOlD,WAAUW,YAAYiB,cAAc,MAAM;AACvDH,aAAKf,OAAOwC,IAAI;AAChBD,iBAAS,SAAS,KAAK9C,SAAS,IAAIuC,EAAE;AACtCQ,aAAK1B,aAAa,MAAMyB,MAAM;AAC9BC,aAAK1B,aAAa,aAAa,mBAAmB;AAClD,cAAM2B,OAAOnD,WAAUW,YAAYiB,cAAc,MAAM;AACvDsB,aAAKxC,OAAOyC,IAAI;AAChBA,aAAK3B,aAAa,SAAS,GAAG;AAC9B2B,aAAK3B,aAAa,UAAU,GAAG;AAC/B2B,aAAK3B,aAAa,QAAQ,OAAO;AACjC,cAAMqB,MAAM7C,WAAUW,YAAYiB,cAAc,KAAK;AACrDsB,aAAKxC,OAAOmC,GAAG;AACfA,YAAIrB,aAAa,QAAQ,IAAIE,MAAM,EAAE;AACrCmB,YAAIrB,aAAa,UAAU,MAAM;AACjCqB,YAAIrB,aAAa,QAAQ,OAAO;AAChCqB,YAAIrB,aAAa,aAAa,SAAS;AACvCqB,YAAId,UAAUC,IAAI,MAAM;MAC1B;AAEA,YAAMoB,OAAOpD,WAAUW,YAAYiB,cAAc,KAAK;AACtDrB,WAAKG,OAAO0C,IAAI;AAChBA,WAAK5B,aAAa,QAAQ,IAAIE,MAAM,EAAE;AACtC,UAAIuB,QAAQ;AACVG,aAAK5B,aAAa,QAAQ,QAAQyB,MAAM,GAAG;MAC7C;AACA,YAAMI,OAAOD,KAAKE,UAAU;AAC5B/C,WAAKG,OAAO2C,IAAI;AAChBD,WAAKrB,UAAUC,IAAI,aAAa;AAChCqB,WAAKtB,UAAUC,IAAI,kBAAkB;AAErC,WAAKc,iBAAiBvC,MAAM0B,UAAU;AAEtC,WAAK,SAASW,IAAIF,IAAInC,IAAI;AAE1B,aAAOmC;IACT;IAEAa,aAAab,IAAIT,YAAY;AAC3B,WAAK,UAAUuB,OAAOd,EAAE;AACxB,WAAKI,iBAAiBJ,IAAIT,UAAU;IACtC;IAEAa,iBAAiBW,aAAaxB,YAAY;AACxC,UAAI,CAACA,YAAY;AACf;MACF;AACA,YAAM;QAAE1B;QAAMmD;QAAMC;QAAWhB;MAAK,IAAIV;AACxC,YAAMnB,UACJ,OAAO2C,gBAAgB,WACnB,KAAK,SAASG,IAAIH,WAAW,IAC7BA;AACN,UAAI,CAAC3C,SAAS;AACZ;MACF;AACA,UAAIP,MAAM;AACR,aAAK,kBAAkBO,SAASP,IAAI;MACtC;AACA,UAAImD,MAAM;AACR1D,mBAAU,QAAQc,SAAS4C,IAAI;MACjC;AACA,UAAIC,WAAW;AACb,cAAM;UAAE5B;QAAU,IAAIjB;AACtB,mBAAW,CAAC+C,WAAW1B,KAAK,KAAKC,OAAOC,QAAQsB,SAAS,GAAG;AAC1D5B,oBAAU+B,OAAOD,WAAW1B,KAAK;QACnC;MACF;AACA,UAAIQ,MAAM;AACR,cAAMlB,OAAOX,QAAQiD;AACrB,cAAMC,cAAcvC,KAAKsC;AACzB,aAAK,kBAAkBC,aAAarB,IAAI;MAC1C;IACF;IAEAsB,aAAavB,IAAIwB,OAAO;AACtB,UAAIA,UAAU,MAAM;AAClB;MACF;AACA,YAAM3D,OAAO,KAAK,SAASqD,IAAIlB,EAAE;AACjC,UAAI,CAACnC,MAAM;AACT;MACF;AACA2D,YAAM,QAAQxD,OAAOH,IAAI;AACzB,WAAK,SAASiD,OAAOd,EAAE;AACvBwB,YAAM,SAAStB,IAAIF,IAAInC,IAAI;IAC7B;IAEAE,OAAOiC,IAAI;AACT,WAAK,UAAUc,OAAOd,EAAE;AACxB,UAAI,KAAK,YAAY,MAAM;AACzB;MACF;AACA,WAAK,SAASkB,IAAIlB,EAAE,EAAEjC,OAAO;AAC7B,WAAK,SAAS+C,OAAOd,EAAE;IACzB;IAEAyB,UAAU;AACR,WAAK,UAAU;AACf,iBAAW5D,QAAQ,KAAK,SAASC,OAAO,GAAG;AACzCD,aAAKE,OAAO;MACd;AACA,WAAK,SAAS2D,MAAM;AACpB,WAAK,UAAUA,MAAM;IACvB;EACF;AC9J4E;AAC1EC,eAAWC,qBAAqB;MAC9BC;IACF;EACF;AAEAF,aAAWG,WAAW;IACpBC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,aAAW;IACXC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,WAAS;IACTC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC,SAAOA;IACPC;EACF;;;ACvJA;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;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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CA;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,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;AACA,MAAI,mBAAmB;AAAA,IACrB;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,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,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,kBAAkB,MAAM,CAAC,GAAG,gBAAgB,GAAG,gBAAgB;AAGnE,MAAI,sBAAsB;AAAA,IACxB;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,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,sBAAsB;AAAA,IACxB;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,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;AACA,MAAI,qBAAqB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,uBAAuB;AAAA,IACzB;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,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,qBAAqB,CAAC,SAAS,cAAc;AACjD,MAAI,8BAA8B;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,wBAAwB;AAAA,IAC1B;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,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,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,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,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,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,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,I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,IAAI,SAAS,CAAC;AACvD,cAAI,CAAC,cAAc,QAAQ,YAAY,YAAY;AACjD,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAGA,MAAI,sBAAsB;AAAA,IACxB,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,OAAO,CAAC,oBAAoB;AAAA,EAC9B;AAGA,MAAI,qBAAqB;AAAA,IACvB,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;;;AvSzujDA,QAAM,MAAM;AAcZ,iBAAe,gBAAgB,CAAC,kBAAkB,CAAC;AAGnD,EAAS,oBAAoB,YAAY;AAGzC;AACA,0BAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAAO,kBAAkB;AACzB,SAAO,cAAc;AACrB,SAAO,mBAAmB;AAC1B,SAAO,SAAS;AAChB,SAAO,oBAAoB;AAC3B,SAAO,WAAW;AAClB,SAAO,eAAeC;AACtB,SAAO,YAAY,iBAAAC;AACnB,SAAO,SAAS,cAAAC;AAChB,SAAO,WAAW;AAClB,SAAO,KAAK;AACZ,SAAO,QAAQ;AACf,SAAO,iBAAiB;AACxB,SAAO,SAAS;AAChB,SAAO,QAAQ;AACf,SAAO,eAAe,EAAE,QAAe,YAAY;AAEnD,SAAO,0BAA0B;AAAA,IAC/B,IAAI,IAAI;AACN,UAAI;AACF,cAAM,OAAO,aAAa,QAAQ,EAAE;AACpC,YAAI,SAAS,QAAQ,SAAS,OAAW,QAAO;AAEhD,YAAI;AACF,iBAAO,KAAK,MAAM,IAAI;AAAA,QACxB,SAASC,IAAG;AACV,iBAAO;AAAA,QACT;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,yCAAyC,EAAE,IAAI,KAAK;AAClE,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,IAAI,IAAI,MAAM;AACZ,UAAI;AACF,YAAI,SAAS,OAAW,QAAO;AAE/B,YAAI,SAAS,MAAM;AACjB,uBAAa,WAAW,EAAE;AAC1B,iBAAO;AAAA,QACT;AAEA,cAAM,eAAe,OAAO,SAAS,WAAW,KAAK,UAAU,IAAI,IAAI,OAAO,IAAI;AAClF,qBAAa,QAAQ,IAAI,YAAY;AACrC,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,uCAAuC,EAAE,IAAI,KAAK;AAChE,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO,IAAI;AACT,UAAI;AACF,qBAAa,WAAW,EAAE;AAC1B,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,0CAA0C,EAAE,IAAI,KAAK;AACnE,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,uBAAuB;AACrB,UAAI;AACF,cAAM,YAAY,CAAC;AACnB,iBAASC,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK;AAC5C,gBAAM,MAAM,aAAa,IAAIA,EAAC;AAC9B,cAAI,OAAO,IAAI,SAAS,GAAG,KAAK,eAAe,KAAK,GAAG,GAAG;AACxD,sBAAU,KAAK,GAAG;AAAA,UACpB;AAAA,QACF;AAEA,kBAAU,QAAQ,CAAC,QAAQ;AACzB,uBAAa,WAAW,GAAG;AAAA,QAC7B,CAAC;AACD,eAAO,UAAU;AAAA,MACnB,SAAS,OAAO;AACd,gBAAQ,MAAM,yCAAyC,KAAK;AAC5D,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO,uBAAuB,WAAY;AACxC,WAAO,OAAO,wBAAwB,qBAAqB;AAAA,EAC7D;",
  "names": ["consumer", "event", "consumer", "s", "consumer", "s", "subscription", "a", "name", "exports", "module", "toStr", "a", "b", "i", "j", "e", "x", "name", "match", "define", "exports", "exports2", "process", "_", "k", "forEach", "forEach2", "g", "indexOf", "cache", "f", "descriptors", "x2", "isObject2", "deprecated", "set", "pid2", "formatValue", "isFunction2", "isDate2", "isArray2", "n", "isNumber2", "l", "ar", "re", "d", "o", "promisify2", "resolve", "config", "TextEncoder", "TextDecoder", "TextDecoder", "TextEncoder", "init_util", "exports", "module", "exports", "module", "O", "isSymbol", "isArray", "indexOf", "inspect", "from", "isRegExp", "name", "s", "i", "isError", "isNumber", "isBoolean", "isString", "isDate", "isPlainObject", "toStr", "e", "f", "m", "x", "l", "c", "n", "k", "j", "exports", "module", "inspect", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "isNaN", "a", "exports", "module", "sign", "exports", "module", "exports", "module", "e", "exports", "module", "e", "exports", "module", "_", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "toStr", "concatty", "a", "b", "i", "j", "slicy", "Empty", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "require_gOPD", "exports", "module", "require_gopd", "exports", "module", "e", "exports", "module", "e", "exports", "module", "O", "exports", "module", "exports", "module", "undefined", "floor", "round", "sign", "e", "doEval", "name", "stringToPath", "match", "getBaseIntrinsic", "i", "require_gOPD", "exports", "module", "require_gopd", "exports", "module", "e", "require_hasown", "exports", "module", "require_get_intrinsic", "exports", "module", "undefined", "floor", "round", "sign", "e", "doEval", "name", "stringToPath", "match", "getBaseIntrinsic", "i", "exports", "module", "name", "exports", "module", "inspect", "require_gOPD", "exports", "module", "require_gopd", "exports", "module", "e", "require_hasown", "exports", "module", "require_get_intrinsic", "exports", "module", "undefined", "floor", "round", "sign", "e", "doEval", "name", "stringToPath", "match", "getBaseIntrinsic", "i", "exports", "module", "inspect", "exports", "module", "inspect", "exports", "module", "exports", "module", "isArray", "markOverflow", "isOverflow", "getMaxIndex", "setMaxIndex", "i", "compactQueue", "queue", "j", "arrayToObject", "merge", "newIndex", "m", "assign", "e", "encode", "format", "c", "compact", "isRegExp", "isBuffer", "combine", "a", "b", "maybeMap", "exports", "module", "utils", "isArray", "defaults", "isNonNullishPrimitive", "v", "stringify", "sort", "format", "formatter", "value", "j", "normalizeStringifyOptions", "i", "exports", "module", "utils", "isArray", "defaults", "i", "index", "splitKeyIntoSegments", "normalizeParseOptions", "exports", "module", "parse", "v", "f", "h", "s", "l", "a", "n", "k", "w", "b", "i", "r", "g", "d", "c", "m", "p2", "j", "interpolate", "t", "color", "c2", "w2", "p", "noop", "isNullOrUndef", "value", "undefined", "isArray", "Array", "type", "Object", "prototype", "toString", "call", "slice", "isObject", "isNumberFinite", "Number", "isFinite", "finiteOrDefault", "defaultValue", "valueOrDefault", "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", "_splitKey", "parts", "split", "tmp", "part", "endsWith", "push", "_getKeyResolver", "obj", "resolveObjectKey", "resolver", "keyResolvers", "_capitalize", "str", "charAt", "toUpperCase", "_isClickEvent", "e", "almostEquals", "x", "y", "epsilon", "Math", "abs", "niceNum", "range", "roundedRange", "round", "niceRange", "pow", "floor", "log10", "fraction", "niceFraction", "_factorize", "result", "sqrt", "sort", "a", "b", "pop", "isNonPrimitive", "n", "Symbol", "toPrimitive", "isNumber", "isNaN", "parseFloat", "almostWhole", "rounded", "_setMinAndMaxByKey", "array", "property", "min", "max", "toRadians", "degrees", "PI", "toDegrees", "radians", "_decimalPlaces", "isFiniteNumber", "p", "getAngleFromPoint", "centrePoint", "anglePoint", "distanceFromXCenter", "distanceFromYCenter", "radialDistanceFromCenter", "angle", "atan2", "TAU", "distance", "distanceBetweenPoints", "pt1", "pt2", "_angleDiff", "PITAU", "_normalizeAngle", "_angleBetween", "start", "end", "sameAngleIsFullCircle", "s", "angleToStart", "angleToEnd", "startToAngle", "endToAngle", "_limitValue", "_int16Range", "_isBetween", "_lookup", "table", "cmp", "hi", "lo", "mid", "_filterBetween", "values", "listenArrayEvents", "listener", "_chartjs", "listeners", "defineProperty", "configurable", "enumerable", "arrayEvents", "forEach", "method", "base", "res", "object", "unlistenArrayEvents", "stub", "splice", "_arrayUnique", "items", "set", "Set", "size", "from", "throttled", "argsToUse", "ticking", "requestAnimFrame", "window", "debounce", "delay", "timeout", "clearTimeout", "setTimeout", "_getStartAndCountOfVisiblePoints", "meta", "points", "animationsDisabled", "pointCount", "count", "_sorted", "iScale", "vScale", "_parsed", "spanGaps", "dataset", "axis", "minDefined", "maxDefined", "getUserBounds", "_lookupByKey", "getPixelForValue", "distanceToDefinedLo", "findIndex", "point", "distanceToDefinedHi", "_scaleRangesChanged", "xScale", "yScale", "_scaleRanges", "newRanges", "xmin", "xmax", "ymin", "ymax", "changed", "assign", "isPatternOrGradient", "color", "Color", "getHoverColor", "saturate", "darken", "hexString", "applyAnimationsDefaults", "defaults", "duration", "easing", "loop", "to", "describe", "_fallback", "_indexable", "_scriptable", "name", "colors", "properties", "numbers", "active", "animation", "resize", "show", "animations", "visible", "hide", "v", "applyLayoutsDefaults", "autoPadding", "padding", "top", "right", "bottom", "left", "getNumberFormat", "locale", "cacheKey", "JSON", "stringify", "formatter", "intlCache", "get", "Intl", "NumberFormat", "formatNumber", "num", "format", "calculateDelta", "tickValue", "ticks", "delta", "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", "formatters", "minor", "major", "align", "crossAlign", "showLabelBackdrop", "backdropColor", "backdropPadding", "route", "startsWith", "getScope", "node", "root", "scope", "toFontString", "font", "family", "style", "weight", "_measureText", "ctx", "data", "gc", "longest", "string", "textWidth", "measureText", "_longestText", "arrayOfThings", "cache", "garbageCollect", "save", "j", "jlen", "thing", "nestedThing", "restore", "gcLen", "_alignPixel", "chart", "pixel", "devicePixelRatio", "currentDevicePixelRatio", "halfWidth", "clearCanvas", "canvas", "getContext", "resetTransform", "clearRect", "height", "drawPoint", "drawPointLegend", "w", "xOffset", "yOffset", "cornerRadius", "xOffsetW", "yOffsetW", "pointStyle", "rotation", "radius", "rad", "RAD_PER_DEG", "translate", "rotate", "drawImage", "beginPath", "ellipse", "arc", "closePath", "moveTo", "sin", "cos", "TWO_THIRDS_PI", "lineTo", "QUARTER_PI", "HALF_PI", "SQRT1_2", "rect", "fill", "borderWidth", "stroke", "_isPointInArea", "area", "margin", "clipArea", "unclipArea", "_steppedLineTo", "previous", "flip", "mode", "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", "lineHeight", "addRoundedRectPath", "h", "topLeft", "bottomLeft", "bottomRight", "topRight", "toLineHeight", "matches", "match", "LINE_HEIGHT", "_readValueToProps", "props", "ret", "objProps", "read", "prop", "numberOrZero", "toTRBL", "toTRBLCorners", "toPadding", "toFont", "fallback", "parseInt", "FONT_STYLE", "console", "warn", "resolve", "inputs", "context", "info", "cacheable", "_addGrace", "minmax", "change", "toDimension", "keepZero", "add", "createContext", "parentContext", "_createResolver", "scopes", "prefixes", "rootScopes", "getTarget", "finalRootScopes", "_resolve", "toStringTag", "_cacheable", "_scopes", "_rootScopes", "_getTarget", "override", "Proxy", "deleteProperty", "_keys", "_cached", "_resolveWithPrefixes", "getOwnPropertyDescriptor", "Reflect", "getPrototypeOf", "has", "getKeysFromAllScopes", "includes", "ownKeys", "storage", "_storage", "_attachContext", "proxy", "subProxy", "descriptorDefaults", "_proxy", "_context", "_subProxy", "_stack", "_descriptors", "setContext", "receiver", "_resolveWithContext", "allKeys", "scriptable", "indexable", "_allKeys", "isScriptable", "isFunction", "isIndexable", "descriptors", "_resolveScriptable", "_resolveArray", "needsSubResolver", "getValue", "Error", "join", "delete", "createSubResolver", "arr", "filter", "item", "resolveFallback", "addScopes", "parentScopes", "parentFallback", "parent", "allScopes", "addScopesFromKey", "subGetTarget", "prefix", "readKey", "resolveKeysFromAllScopes", "_parseObjectDataRadialScale", "_parsing", "parsed", "r", "parse", "splineCurve", "firstPoint", "middlePoint", "afterPoint", "t", "skip", "next", "d01", "d12", "s01", "s12", "fa", "fb", "monotoneAdjust", "deltaK", "mK", "pointsLen", "alphaK", "betaK", "tauK", "squaredMagnitude", "pointCurrent", "pointAfter", "getPoint", "EPSILON", "monotoneCompute", "indexAxis", "valueAxis", "getValueAxis", "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", "getStyle", "el", "getComputedStyle", "getPropertyValue", "getPositionedStyle", "styles", "suffix", "pos", "positions", "getCanvasPosition", "touches", "offsetX", "offsetY", "box", "useOffsetPos", "getBoundingClientRect", "clientX", "clientY", "getRelativePosition", "event", "borderBox", "boxSizing", "paddings", "borders", "getContainerSize", "maxHeight", "container", "clientWidth", "clientHeight", "containerStyle", "containerBorder", "containerPadding", "INFINITY", "getMaximumSize", "bbWidth", "bbHeight", "aspectRatio", "margins", "containerSize", "round1", "maintainHeight", "retinaScale", "forceRatio", "forceStyle", "pixelRatio", "deviceHeight", "deviceWidth", "setTransform", "readUsedSize", "element", "_pointInLine", "p1", "p2", "_steppedInterpolation", "_bezierInterpolation", "cp1", "cp2", "c", "d", "getRtlAdapter", "rtl", "rectX", "getRightToLeftAdapter", "getLeftToRightAdapter", "overrideTextDirection", "direction", "original", "getPropertyPriority", "setProperty", "prevTextDirection", "restoreTextDirection", "propertyFn", "between", "compare", "normalize", "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", "prevStyle", "addStyle", "l", "st", "dir", "p0", "p0DataIndex", "p1DataIndex", "styleChanged", "backgroundColor", "borderCapStyle", "borderDash", "borderDashOffset", "borderJoinStyle", "borderColor", "replacer", "getSizeForArea", "scale", "chartArea", "field", "getDatasetArea", "getDatasetClipArea", "_clip", "disabled", "uid", "toPercentage", "defined", "setsEqual", "_rlookupByKey", "_toLeftRightCenter", "_alignStartEnd", "_textX", "atEdge", "elasticIn", "elasticOut", "effects", "overrides", "Defaults", "supportsEventListenerOptions", "id", "dimension", "o", "POSITIVE_INFINITY", "ti", "requestAnimationFrame", "check", "linear", "easeInQuad", "easeOutQuad", "easeInOutQuad", "easeInCubic", "easeOutCubic", "easeInOutCubic", "easeInQuart", "easeOutQuart", "easeInOutQuart", "easeInQuint", "easeOutQuint", "easeInOutQuint", "easeInSine", "easeOutSine", "easeInOutSine", "easeInExpo", "easeOutExpo", "easeInOutExpo", "easeInCirc", "easeOutCirc", "easeInOutCirc", "easeInElastic", "easeOutElastic", "easeInOutElastic", "easeInBack", "easeOutBack", "easeInOutBack", "easeInBounce", "easeOutBounce", "m", "easeInOutBounce", "Map", "numeric", "notation", "maxTick", "logDelta", "numDecimal", "minimumFractionDigits", "maximumFractionDigits", "logarithmic", "remain", "significand", "constructor", "_appliers", "datasets", "platform", "getDevicePixelRatio", "elements", "events", "hover", "hoverBackgroundColor", "hoverBorderColor", "hoverColor", "interaction", "intersect", "includeInvisible", "maintainAspectRatio", "onHover", "onClick", "parsing", "plugins", "responsive", "scales", "showLine", "drawActiveElementsOnTop", "targetScope", "targetName", "scopeObject", "targetScopeObject", "privateName", "defineProperties", "writable", "local", "appliers", "ownerDocument", "defaultView", "shadowRoot", "passiveSupported", "passive", "addEventListener", "removeEventListener", "setWidth", "xPlus", "leftForLtr", "itemWidth", "_itemWidth", "awaitAll", "animations", "properties", "running", "keys", "Object", "i", "length", "anim", "active", "push", "wait", "Promise", "all", "resolveTargetOptions", "target", "newOptions", "options", "$shared", "assign", "$animations", "scaleClip", "scale", "allowedOverflow", "opts", "reverse", "min", "undefined", "max", "start", "end", "defaultClip", "xScale", "yScale", "x", "y", "top", "right", "bottom", "left", "toClip", "value", "t", "r", "b", "l", "isObject", "disabled", "getSortedDatasetIndices", "chart", "filterVisible", "metasets", "_getSortedDatasetMetas", "ilen", "index", "applyStack", "stack", "dsIndex", "singleMode", "mode", "datasetIndex", "otherValue", "found", "values", "isFinite", "sign", "convertObjectDataToArray", "data", "meta", "iScale", "vScale", "iAxisKey", "axis", "vAxisKey", "adata", "Array", "key", "isStacked", "stacked", "getStackKey", "indexScale", "valueScale", "id", "type", "getUserBounds", "minDefined", "maxDefined", "Number", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "getOrCreateStack", "stacks", "stackKey", "indexValue", "subStack", "getLastIndexInStack", "positive", "getMatchingVisibleMetas", "updateStacks", "controller", "parsed", "_cachedMeta", "_stacks", "iAxis", "vAxis", "item", "itemStacks", "_top", "_bottom", "visualValues", "_visualValues", "getFirstScaleId", "scales", "filter", "shift", "createDatasetContext", "parent", "createContext", "dataset", "createDataContext", "element", "dataIndex", "raw", "clearStacks", "items", "_parsed", "getAllScaleValues", "_cache", "$bar", "visibleMetas", "concat", "getAllParsedValues", "_arrayUnique", "sort", "a", "computeMinSampleSize", "_length", "curr", "prev", "updateMinAndPrev", "defined", "Math", "abs", "getPixelForValue", "ticks", "getPixelForTick", "computeFitCategoryTraits", "ruler", "stackCount", "thickness", "barThickness", "size", "ratio", "isNullOrUndef", "categoryPercentage", "barPercentage", "chunk", "pixels", "computeFlexCategoryTraits", "next", "percent", "parseFloatBar", "entry", "startValue", "parse", "endValue", "barStart", "barEnd", "_custom", "parseValue", "isArray", "parseArrayOrPrimitive", "count", "labels", "getLabels", "singleScale", "isFloatBar", "custom", "barSign", "actualBase", "isHorizontal", "borderProps", "horizontal", "base", "setBorderSkipped", "edge", "borderSkipped", "res", "enableBorderRadius", "parseEdge", "swap", "startEnd", "orig", "v1", "v2", "v", "setInflateAmount", "inflateAmount", "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", "abstract", "Error", "binarySearch", "metaset", "intersect", "_sorted", "spanGaps", "lookupMethod", "_reversePixels", "_rlookupByKey", "_lookupByKey", "result", "distanceToDefinedLo", "slice", "lo", "findIndex", "point", "distanceToDefinedHi", "hi", "_sharedOptions", "el", "range", "getRange", "evaluateInteractionItems", "position", "handler", "getSortedVisibleDatasetMetas", "j", "skip", "getDistanceMetricForAxis", "useX", "indexOf", "useY", "pt1", "pt2", "deltaX", "deltaY", "sqrt", "pow", "getIntersectItems", "useFinalPosition", "includeInvisible", "isPointInArea", "evaluationFunc", "_isPointInArea", "chartArea", "inRange", "getNearestRadialItems", "getProps", "getAngleFromPoint", "getNearestCartesianItems", "distanceMetric", "minDistance", "center", "getCenterPoint", "pointInArea", "distance", "getNearestItems", "getAxisItems", "rangeMethod", "intersectsItem", "filterByPosition", "array", "pos", "filterDynamicPositionByAxis", "STATIC_POSITIONS", "box", "sortByWeight", "v0", "weight", "wrapBoxes", "boxes", "layoutBoxes", "stackWeight", "buildStacks", "layouts", "wrap", "includes", "_stack", "placed", "setLayoutDims", "params", "vBoxMaxWidth", "hBoxMaxHeight", "layout", "fullSize", "factor", "width", "availableWidth", "height", "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", "forEach", "fitBoxes", "refitBoxes", "refit", "changed", "update", "setBoxDims", "placeBoxes", "userPadding", "padding", "initCanvas", "canvas", "aspectRatio", "style", "renderHeight", "getAttribute", "renderWidth", "EXPANDO_KEY", "initial", "display", "boxSizing", "isNullOrEmpty", "displayWidth", "readUsedSize", "displayHeight", "addListener", "node", "listener", "addEventListener", "eventListenerOptions", "removeListener", "removeEventListener", "fromNativeEvent", "event", "EVENT_TYPES", "getRelativePosition", "native", "nodeListContains", "nodeList", "contains", "createAttachObserver", "observer", "MutationObserver", "entries", "trigger", "addedNodes", "removedNodes", "observe", "document", "childList", "subtree", "createDetachObserver", "onWindowResize", "dpr", "window", "devicePixelRatio", "oldDevicePixelRatio", "drpListeningCharts", "resize", "currentDevicePixelRatio", "listenDevicePixelRatioChanges", "set", "unlistenDevicePixelRatioChanges", "delete", "createResizeObserver", "container", "_getParentNode", "throttled", "clientWidth", "ResizeObserver", "contentRect", "releaseObserver", "disconnect", "createProxyAndListen", "proxy", "ctx", "_detectPlatform", "_isDomSupported", "OffscreenCanvas", "BasicPlatform", "DomPlatform", "autoSkip", "tickOpts", "determinedMaxTicks", "determineMaxTicks", "ticksLimit", "maxTicksLimit", "majorIndices", "major", "enabled", "getMajorIndices", "numMajorIndices", "first", "last", "newTicks", "skipMajors", "spacing", "calculateSpacing", "avgMajorSpacing", "round", "offset", "tickLength", "_tickSize", "maxScale", "maxChart", "_maxLength", "floor", "evenMajorSpacing", "getEvenSpacing", "factors", "_factorize", "ceil", "majorStart", "majorEnd", "valueOrDefault", "arr", "len", "diff", "sample", "numItems", "increment", "getPixelForGridLine", "offsetGridLines", "validIndex", "_startPixel", "_endPixel", "epsilon", "lineValue", "garbageCollect", "caches", "each", "cache", "gc", "gcLen", "splice", "getTickMarkLength", "drawTicks", "getTitleHeight", "fallback", "font", "toFont", "toPadding", "lines", "text", "lineHeight", "createScaleContext", "createTickContext", "tick", "titleAlign", "align", "ret", "_toLeftRightCenter", "reverseAlign", "titleArgs", "maxWidth", "titleX", "titleY", "_alignStartEnd", "positionAxisID", "offsetFromEdge", "registerDefaults", "scope", "parentScope", "itemDefaults", "merge", "create", "defaults", "get", "defaultRoutes", "routeDefaults", "descriptors", "describe", "routes", "property", "propertyParts", "split", "sourceName", "pop", "sourceScope", "join", "parts", "targetName", "targetScope", "route", "isIChartComponent", "proto", "allPlugins", "config", "localIds", "plugins", "registry", "getPlugin", "local", "plugin", "getOpts", "createDescriptors", "context", "getContext", "pluginOpts", "pluginScopeKeys", "scopes", "getOptionScopes", "createResolver", "scriptable", "indexable", "allKeys", "getIndexAxis", "datasetDefaults", "datasets", "datasetOptions", "indexAxis", "getAxisFromDefaultScaleID", "getDefaultScaleIDFromAxis", "idMatchesAxis", "axisFromPosition", "determineAxis", "scaleOptions", "toLowerCase", "getAxisFromDataset", "retrieveAxisFromDatasets", "boundDs", "d", "xAxisID", "yAxisID", "mergeScaleConfig", "chartDefaults", "overrides", "configScales", "chartIndexAxis", "scaleConf", "console", "error", "_proxy", "warn", "defaultId", "defaultScaleOptions", "mergeIf", "defaultID", "initOptions", "initData", "initConfig", "cachedKeys", "cacheKey", "generate", "keyCache", "keysCached", "add", "getResolver", "resolverCache", "prefixes", "Map", "cached", "resolver", "_createResolver", "subPrefixes", "p", "needContext", "names", "isScriptable", "isIndexable", "_descriptors", "prop", "isFunction", "hasFunction", "positionIsHorizontal", "KNOWN_POSITIONS", "compare2Level", "l1", "l2", "onAnimationsComplete", "animationOptions", "animation", "notifyPlugins", "callCallback", "onComplete", "onAnimationProgress", "onProgress", "getCanvas", "getElementById", "moveNumericKeys", "obj", "move", "intKey", "determineLastEvent", "e", "lastEvent", "inChartArea", "isClick", "invalidatePlugins", "Chart", "instances", "_plugins", "invalidate", "clipSelf", "outerRadius", "innerRadius", "borderWidth", "borderJoinStyle", "outerAngleClip", "_normalizeAngle", "beginPath", "arc", "innerAngleClip", "clipWidth", "lineTo", "closePath", "moveTo", "rect", "clip", "clipArc", "pixelMargin", "angleMargin", "toRadiusCorners", "_readValueToProps", "parseBorderRadius", "angleDelta", "o", "borderRadius", "halfThickness", "innerLimit", "computeOuterLimit", "val", "outerArcLimit", "_limitValue", "outerStart", "outerEnd", "innerStart", "innerEnd", "rThetaToXY", "theta", "pathArc", "circular", "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", "fill", "isNaN", "drawBorder", "borderDash", "borderDashOffset", "inner", "borderAlign", "setLineDash", "lineDashOffset", "lineWidth", "lineJoin", "stroke", "selfJoin", "setStyle", "lineCap", "borderCapStyle", "strokeStyle", "borderColor", "previous", "getLineMethod", "stepped", "_steppedLineTo", "tension", "cubicInterpolationMode", "_bezierCurveTo", "pathVars", "points", "segment", "paramsStart", "paramsEnd", "segmentStart", "segmentEnd", "outside", "loop", "pathSegment", "line", "lineMethod", "fastPathSegment", "avgX", "countX", "prevX", "lastY", "pointIndex", "drawX", "truncX", "_getSegmentMethod", "useFastPath", "_decimated", "_loop", "_getInterpolationMethod", "_steppedInterpolation", "_bezierInterpolation", "_pointInLine", "strokePathWithCache", "path", "_path", "Path2D", "strokePathDirect", "segments", "segmentMethod", "draw", "usePath2D", "radius", "hitRadius", "getBarBounds", "bar", "half", "skipOrLimit", "parseBorderWidth", "maxW", "maxH", "toTRBL", "toTRBLCorners", "maxR", "enableBorder", "topLeft", "topRight", "bottomLeft", "bottomRight", "boundingRects", "bounds", "border", "outer", "skipX", "skipY", "skipBoth", "_isBetween", "hasRadius", "addNormalRectPath", "inflateRect", "amount", "refRect", "getBorderColor", "BORDER_COLORS", "getBackgroundColor", "BACKGROUND_COLORS", "colorizeDefaultDataset", "backgroundColor", "colorizeDoughnutDataset", "map", "colorizePolarAreaDataset", "getColorizer", "getDatasetMeta", "DoughnutController", "PolarAreaController", "containsColorsDefinitions", "k", "containsColorsDefinition", "descriptor", "containsDefaultColorsDefenitions", "lttbDecimation", "samples", "decimated", "bucketWidth", "sampledIndex", "endIndex", "maxAreaPoint", "maxArea", "area", "nextA", "avgY", "avgRangeStart", "avgRangeEnd", "avgRangeLength", "rangeOffs", "rangeTo", "pointAx", "pointAy", "minMaxDecimation", "minIndex", "maxIndex", "startIndex", "xMin", "xMax", "dx", "lastIndex", "intermediateIndex1", "intermediateIndex2", "cleanDecimatedDataset", "_data", "defineProperty", "configurable", "enumerable", "writable", "cleanDecimatedData", "getStartAndCountOfVisiblePointsSimplified", "pointCount", "_segments", "tpoints", "_findSegmentEnd", "_getBounds", "source", "targetSegments", "_boundSegments", "tgt", "subBounds", "fillSources", "_boundSegment", "fillSource", "_getEdge", "_pointsFromSegments", "boundary", "linePoints", "fn", "_createBoundaryLine", "LineElement", "_fullLoop", "_shouldApplyFill", "_resolveTarget", "sources", "propagate", "visited", "visible", "_decodeFill", "parseFillOption", "parseFloat", "decodeTargetIndex", "firstCh", "_getTargetPixel", "pixel", "getBasePixel", "_getTargetValue", "getBaseValue", "fillOption", "_buildStackLine", "sourcePoints", "linesBelow", "getLinesBelow", "addPointsBelow", "below", "metas", "hidden", "unshift", "sourcePoint", "postponed", "findPoint", "interpolate", "pointValue", "firstValue", "lastValue", "_getTarget", "getLineByIndex", "computeBoundary", "simpleArc", "isDatasetVisible", "getPointPositionForValue", "computeCircularBoundary", "computeLinearBoundary", "grid", "getDistanceFromCenterForValue", "_drawfill", "lineOpts", "color", "above", "getDatasetClipArea", "clipArea", "doFill", "unclipArea", "cfg", "save", "fillColor", "clipVertical", "restore", "clipHorizontal", "clipY", "lineLoop", "firstPoint", "lastPoint", "clipX", "src", "notShape", "fillStyle", "clipBounds", "interpolatedLineTo", "targetLoop", "interpolatedPoint", "calculateItemSize", "boxWidth", "labelFont", "legendItem", "_itemHeight", "itemWidth", "calculateItemWidth", "itemHeight", "calculateItemHeight", "legendItemText", "reduce", "measureText", "fontLineHeight", "calculateLegendItemHeight", "labelHeight", "isListened", "onHover", "onLeave", "onClick", "createTitle", "titleOpts", "title", "Title", "configure", "addBox", "titleBlock", "pushOrConcat", "toPush", "prototype", "apply", "splitNewlines", "str", "String", "createTooltipItem", "label", "getLabelAndValue", "getParsed", "formattedValue", "getDataset", "getTooltipSize", "tooltip", "body", "footer", "boxHeight", "bodyFont", "titleFont", "footerFont", "titleLineCount", "footerLineCount", "bodyLineItemCount", "combinedBodyLength", "bodyItem", "before", "after", "beforeBody", "afterBody", "titleSpacing", "titleMarginBottom", "bodyLineHeight", "displayColors", "bodySpacing", "footerMarginTop", "footerSpacing", "widthPadding", "maxLineWidth", "string", "determineYAlign", "doesNotFitWithAlign", "xAlign", "caret", "caretSize", "caretPadding", "determineXAlign", "yAlign", "chartWidth", "determineAlignment", "alignX", "alignY", "paddingAndSize", "getBackgroundPoint", "alignment", "cornerRadius", "getAlignedX", "getBeforeAfterBodyLines", "callback", "createTooltipContext", "tooltipItems", "overrideCallbacks", "callbacks", "override", "invokeCallbackWithFallback", "name", "arg", "call", "defaultCallbacks", "findOrAddLabel", "addedLabels", "addIfString", "lastIndexOf", "_getLabelForValue", "generateTicks", "generationOptions", "dataRange", "MIN_SPACING", "step", "precision", "maxTicks", "maxDigits", "includeBounds", "unit", "maxSpaces", "rmin", "rmax", "countDefined", "minSpacing", "niceNum", "niceMin", "niceMax", "numSpaces", "almostWhole", "almostEquals", "decimalPlaces", "_decimalPlaces", "relativeLabelSize", "tickValue", "minRotation", "rad", "toRadians", "isMajor", "tickVal", "remain", "log10Floor", "steps", "rangeExp", "rangeStep", "startExp", "finiteOrDefault", "minExp", "exp", "stepSize", "significand", "lastTick", "getTickBackdropHeight", "backdropPadding", "measureLabelSize", "_longestText", "determineLimits", "fitWithPointLabels", "_padding", "limits", "labelSizes", "valueCount", "_pointLabels", "pointLabelOpts", "pointLabels", "additionalAngle", "centerPointLabels", "setContext", "getPointLabelContext", "pointPosition", "getPointPosition", "drawingArea", "plFont", "textSize", "angleRadians", "getIndexAngle", "toDegrees", "hLimits", "vLimits", "updateLimits", "setCenterPoint", "_pointLabelItems", "buildPointLabelItems", "createPointLabelItem", "itemOpts", "outerDistance", "extra", "pointLabelPosition", "yForAngle", "textAlign", "getTextAlignForAngle", "leftForTextAlign", "isNotOverlapped", "apexesInArea", "drawPointLabelBox", "backdropColor", "backdropLeft", "backdropTop", "backdropWidth", "backdropHeight", "some", "addRoundedRectPath", "fillRect", "drawPointLabels", "labelCount", "optsAtIndex", "renderText", "textBaseline", "pathRadiusLine", "xCenter", "yCenter", "drawRadiusLine", "gridLineOpts", "borderOpts", "dash", "dashOffset", "createPointLabelContext", "sorter", "input", "adapter", "_adapter", "parser", "isoWeekday", "_parseOpts", "isNumber", "startOf", "determineUnitForAutoTicks", "minUnit", "capacity", "UNITS", "interval", "INTERVALS", "MAX_SAFE_INTEGER", "common", "determineUnitForFormatting", "numTicks", "determineMajorUnit", "addTick", "time", "timestamps", "_lookup", "timestamp", "setMajorTicks", "majorUnit", "ticksFromTimestamps", "table", "prevSource", "nextSource", "prevTarget", "nextTarget", "span", "Animator", "animator", "transparent", "interpolators", "Animation", "Animations", "isDirectUpdateMode", "cloneIfNotShared", "createStack", "DatasetController", "BarController", "BubbleController", "LineController", "PieController", "RadarController", "ScatterController", "DateAdapterBase", "adapters", "Interaction", "BasePlatform", "Element", "getTicksLimit", "Scale", "TypedRegistry", "Registry", "PluginService", "addIfFound", "Config", "getChart", "ArcElement", "PointElement", "BarElement", "plugin_colors", "plugin_decimation", "getBoxSize", "itemsEqual", "Legend", "plugin_legend", "plugin_title", "plugin_subtitle", "positioners", "Tooltip", "plugin_tooltip", "CategoryScale", "LinearScaleBase", "LinearScale", "changeExponent", "LogarithmicScale", "RadialLinearScale", "TimeScale", "TimeSeriesScale", "registerables", "constructor", "_request", "_charts", "_running", "_lastDate", "_notify", "anims", "date", "listeners", "numSteps", "duration", "currentStep", "_refresh", "requestAnimFrame", "_update", "Date", "now", "remaining", "_active", "_total", "_getAnims", "charts", "complete", "progress", "listen", "cb", "has", "acc", "cur", "_duration", "stop", "cancel", "remove", "boolean", "from", "to", "c0", "helpersColor", "c1", "valid", "mix", "hexString", "number", "currentValue", "resolve", "_fn", "_easing", "effects", "easing", "linear", "_start", "delay", "_target", "_prop", "_from", "_to", "_promises", "elapsed", "promises", "rej", "resolved", "method", "_chart", "_properties", "animatedProps", "getOwnPropertyNames", "option", "_animateOptions", "_createAnimations", "then", "props", "charAt", "shared", "canStack", "_stacked", "datasetElementType", "dataElementType", "_ctx", "_cachedDataOpts", "getMeta", "_type", "_parsing", "_objectData", "_drawStart", "_drawCount", "enableOptionSharing", "supportsDecimation", "$context", "_syncList", "initialize", "linkScales", "addElements", "isPluginEnabled", "updateIndex", "chooseId", "xid", "yid", "rid", "rAxisID", "iid", "iAxisID", "vid", "vAxisID", "getScaleForId", "rScale", "scaleID", "_getOtherScale", "reset", "_destroy", "unlistenArrayEvents", "_dataCheck", "isExtensible", "listenArrayEvents", "buildOrUpdateElements", "resetNewElements", "stackChanged", "oldStacked", "_resyncElements", "scopeKeys", "datasetScopeKeys", "parsing", "sorted", "parseArrayData", "parseObjectData", "parsePrimitiveData", "isNotInOrderComparedToPrev", "xAxisKey", "yAxisKey", "resolveObjectKey", "getDataElement", "updateRangeFromParsed", "parsedValue", "NaN", "getMinMax", "otherScale", "otherMin", "otherMax", "_skip", "getMaxOverflow", "getLabelForValue", "_clip", "elements", "drawActiveElementsOnTop", "getStyle", "resolveDatasetElementOptions", "resolveDataElementOptions", "_resolveElementOptions", "elementType", "sharing", "datasetElementScopeKeys", "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", "updateElements", "removed", "_sync", "args", "_dataChanges", "_onDataPush", "arguments", "_onDataPop", "_onDataShift", "_onDataSplice", "newCount", "_onDataUnshift", "grouped", "numbers", "_index_", "_value_", "beginAtZero", "bars", "_getRuler", "vpixels", "head", "_calculateBarValuePixels", "ipixels", "_calculateBarIndexPixels", "_getStacks", "currentParsed", "iScaleValue", "skipNull", "find", "_getStackCount", "_getAxisCount", "_getAxis", "getFirstScaleIdForIndexAxis", "indexScaleId", "firstScaleAxisId", "_getStackIndex", "baseValue", "minBarLength", "floating", "getDataVisibility", "startPixel", "getPixelForDecimal", "endPixel", "getValueForPixel", "halfGrid", "getLineWidthForValue", "maxBarThickness", "Infinity", "axisCount", "axisID", "axisNumber", "stackIndex", "rects", "iPixel", "vPixel", "animateRotate", "animateScale", "_scriptable", "_indexable", "startsWith", "legend", "generateLabels", "pointStyle", "useBorderRadius", "fontColor", "lineDash", "toggleDataVisibility", "getter", "_getRotation", "_getCircumference", "_getRotationExtents", "arcs", "getMaxBorderWidth", "getMaxOffset", "maxSize", "toPercentage", "chartWeight", "_getRingWeight", "maxHeight", "maxRadius", "toDimension", "radiusLength", "_getVisibleDatasetWeightTotal", "total", "calculateTotal", "_getRingWeightOffset", "_circumference", "calculateCircumference", "animationOpts", "centerX", "centerY", "metaData", "formatNumber", "locale", "hoverBorderWidth", "hoverOffset", "ringWeightOffset", "showLine", "_dataset", "animationsDisabled", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "_datasetIndex", "animated", "maxGapLength", "directUpdate", "pointsCount", "prevParsed", "nullData", "updateControlPoints", "angleLines", "_parseObjectDataRadialScale", "bind", "_updateRadius", "minSize", "cutoutPercentage", "getVisibleDatasetCount", "datasetStartAngle", "defaultAngle", "countVisibleElements", "_computeAngle", "interaction", "getElement", "members", "init", "formats", "format", "endOf", "_date", "modes", "nearest", "_layers", "z", "removeBox", "layoutItem", "minPadding", "verticalBoxes", "horizontalBoxes", "beforeLayout", "visibleVerticalBoxCount", "acquireContext", "releaseContext", "getDevicePixelRatio", "getMaximumSize", "isAttached", "updateConfig", "touchstart", "touchmove", "touchend", "pointerenter", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointerout", "supportsEventListenerOptions", "passive", "removeAttribute", "setAttribute", "proxies", "$proxies", "handlers", "attach", "detach", "isConnected", "tooltipPosition", "hasValue", "final", "ticksLength", "_margins", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight", "labelRotation", "_range", "_gridLineItems", "_labelItems", "_labelSizes", "_longestTextCache", "_userMax", "_userMin", "_suggestedMax", "_suggestedMin", "_ticksLength", "_borderValue", "_dataLimitsCached", "suggestedMin", "suggestedMax", "getTicks", "xLabels", "yLabels", "getLabelItems", "_computeLabelItems", "beforeUpdate", "margins", "grace", "sampleSize", "beforeSetDimensions", "setDimensions", "afterSetDimensions", "beforeDataLimits", "determineDataLimits", "afterDataLimits", "_addGrace", "beforeBuildTicks", "buildTicks", "afterBuildTicks", "samplingEnabled", "_convertTicksToLabels", "beforeCalculateLabelRotation", "calculateLabelRotation", "afterCalculateLabelRotation", "afterAutoSkip", "beforeFit", "fit", "afterFit", "afterUpdate", "reversePixels", "_alignToPixels", "alignToPixels", "_callHooks", "beforeTickToLabelConversion", "generateTickLabels", "afterTickToLabelConversion", "maxRotation", "tickWidth", "maxLabelDiagonal", "_isVisible", "_getLabelSizes", "maxLabelWidth", "widest", "maxLabelHeight", "highest", "asin", "gridOpts", "titleHeight", "tickPadding", "mirror", "labelWidth", "_calculatePadding", "_handleMargins", "isRotated", "labelsBelowTicks", "offsetLeft", "offsetRight", "isFullSize", "_computeLabelSizes", "widths", "heights", "widestLabelSize", "highestLabelSize", "jlen", "tickFont", "fontString", "nestedLabel", "_resolveTickFontOptions", "_measureText", "valueAt", "idx", "decimal", "_int16Range", "_alignPixel", "getDecimalForPixel", "optionTicks", "rot", "autoSkipPadding", "_computeGridLineItems", "tl", "axisWidth", "axisHalfWidth", "alignBorderValue", "borderValue", "alignedLineValue", "tx1", "ty1", "tx2", "ty2", "x1", "y1", "x2", "y2", "limit", "optsAtIndexBorder", "lineColor", "tickColor", "tickBorderDash", "tickBorderDashOffset", "crossAlign", "tickAndPadding", "hTickAndPadding", "lineCount", "textOffset", "_getXAxisLabelAlignment", "_getYAxisLabelAlignment", "labelOffset", "halfCount", "strokeColor", "textStrokeColor", "strokeWidth", "textStrokeWidth", "tickTextAlign", "showLabelBackdrop", "backdrop", "labelPadding", "translation", "_computeLabelArea", "drawBackground", "drawGrid", "drawLine", "p1", "p2", "drawOnChartArea", "lastLineWidth", "drawLabels", "renderTextOptions", "drawTitle", "tz", "gz", "bz", "_maxDigits", "fontSize", "isForType", "isPrototypeOf", "register", "getPrototypeOf", "unregister", "controllers", "_typedRegistries", "_each", "addControllers", "addPlugins", "addScales", "getController", "_get", "getScale", "removeControllers", "removeElements", "removePlugins", "removeScales", "typedRegistry", "reg", "_getRegistryForType", "_exec", "itemReg", "component", "camelMethod", "_capitalize", "_init", "notify", "hook", "_createDescriptors", "cancelable", "_oldCache", "_notifyStateChanges", "previousDescriptors", "Set", "_config", "_scopeCache", "_resolverCache", "platform", "clearCache", "clear", "datasetType", "additionalOptionScopes", "_cachedScopes", "mainScope", "resetCache", "keyLists", "chartOptionScopes", "subResolver", "_attachContext", "descriptorDefaults", "c", "version", "userConfig", "initialCanvas", "existingChart", "uid", "_options", "_aspectRatio", "_metasets", "_lastEvent", "_listeners", "_responsiveListeners", "_sortedMetasets", "_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", "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", "getElementsAtEventForMode", "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", "chartX", "chartY", "rAdjust", "nonZeroBetween", "betweenAngles", "withinRadius", "halfAngle", "halfRadius", "translate", "fix", "radiusOffset", "capBezierPoints", "_points", "_pointsUpdated", "_updateBezierControlPoints", "_computeSegments", "_interpolate", "interpolated", "hoverRadius", "mouseX", "mouseY", "inXRange", "inYRange", "drawPoint", "addRectPath", "replace", "forceOverride", "_args", "chartOptions", "containsColorDefenition", "colorizer", "algorithm", "beforeElementsUpdate", "xAxis", "threshold", "afterDatasetsUpdate", "$filler", "beforeDraw", "drawTime", "beforeDatasetsDraw", "beforeDatasetDraw", "labelOpts", "usePointStyle", "pointStyleWidth", "_added", "legendHitBoxes", "_hoveredItem", "doughnutMode", "legendItems", "columnSizes", "lineWidths", "buildLabels", "_computeTitleHeight", "_fitRows", "_fitCols", "hitboxes", "totalHeight", "row", "heightLimit", "totalWidth", "currentColWidth", "currentColHeight", "col", "adjustHitBoxes", "rtl", "rtlHelper", "getRtlAdapter", "hitbox", "leftForLtr", "_draw", "defaultColor", "halfFontSize", "cursor", "drawLegendBox", "drawOptions", "SQRT2", "xPlus", "drawPointLegend", "yBoxTop", "xBoxLeft", "fillText", "strikethrough", "overrideTextDirection", "textDirection", "textWidth", "setWidth", "realX", "_textX", "restoreTextDirection", "titlePadding", "topPaddingPlusHalfFontSize", "_getLegendItemAt", "hitBox", "lh", "handleEvent", "hoveredItem", "sameItem", "_element", "afterEvent", "ci", "_drawArgs", "fontOpts", "WeakMap", "average", "xSet", "xAverage", "eventPosition", "nearestElement", "distanceBetweenPoints", "tp", "beforeTitle", "noop", "afterTitle", "beforeLabel", "tooltipItem", "labelColor", "labelTextColor", "bodyColor", "labelPointStyle", "afterLabel", "beforeFooter", "afterFooter", "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", "_startValue", "_valueRange", "_addedLabels", "added", "_endValue", "handleTickRangeOptions", "setMin", "setMax", "minSign", "maxSign", "getTickLimit", "computeTickLimit", "numericGeneratorOptions", "_setMinAndMaxByKey", "Ticks", "formatters", "numeric", "log10", "m", "logarithmic", "_zero", "animate", "leftMovement", "rightMovement", "topMovement", "bottomMovement", "angleMultiplier", "scalingFactor", "getValueForDistanceFromCenter", "scaledDistance", "pointLabel", "distanceFromCenter", "getBasePosition", "getPointLabelPosition", "rotate", "millisecond", "second", "minute", "hour", "day", "week", "month", "quarter", "year", "displayFormats", "_unit", "_majorUnit", "_offsets", "_normalized", "normalized", "_applyBounds", "_getLabelBounds", "getLabelTimestamps", "timeOpts", "_generate", "_filterBetween", "_getLabelCapacity", "initOffsets", "offsetAfterAutoskip", "getDecimalForValue", "minor", "weekday", "hasWeekday", "getDataTimestamps", "tooltipFormat", "datetime", "fmt", "_tickFormatFunction", "formatter", "minorFormat", "majorFormat", "offsets", "_getLabelSize", "ticksOpts", "tickLabelWidth", "cosRotation", "sinRotation", "tickFontSize", "exampleTime", "exampleLabel", "normalize", "_table", "_minPos", "_tableRange", "_getTimestampsForTable", "buildLookupTable", "dew$2", "_dewExec$2", "exports$2", "start", "dew$1", "_dewExec$1", "exports$1", "m4", "dew", "_dewExec", "exports", "Buffer", "from", "fromObject", "fill", "isBuffer", "swap", "inspect", "indexOf3", "dew$12", "_dewExec$12", "exports$22", "dew2", "_dewExec2", "exports$12", "unimplemented", "cleanUpNextTick", "draining", "currentQueue", "queue", "queueIndex", "drainQueue", "nextTick", "Item", "noop", "_linkedBinding", "dlopen", "_getActiveRequests", "_getActiveHandles", "assert", "hasUncaughtExceptionCaptureCallback", "uptime", "_performance", "hrtime", "nanoPerSec", "on", "process", "listeners", "dew3", "_dewExec3", "exports3", "inherits", "u", "a", "h", "c", "O", "S", "y2", "b", "B", "k", "E", "D", "x", "I", "M", "z", "m", "T", "$", "G", "R", "H", "h2", "q", "K", "s2", "w", "L", "X", "dew4", "_dewExec4", "exports4", "process3", "_global", "queue2", "draining2", "currentQueue2", "queueIndex2", "cleanUpNextTick2", "drainQueue2", "Item2", "noop2", "y3", "z2", "O2", "I2", "S2", "R2", "T2", "L2", "w2", "d2", "b2", "m2", "D2", "E2", "B2", "Y2", "x2", "k2", "M2", "a3", "s3", "h3", "dew$g", "_dewExec$g", "exports$g", "dew$f", "_dewExec$f", "exports$f", "dew$e", "_dewExec$e", "exports$e", "y", "dew$d", "_dewExec$d", "exports$d", "ownKeys", "_objectSpread", "_defineProperty", "_classCallCheck", "_defineProperties", "_createClass", "_4", "dew$c", "_dewExec$c", "exports$c", "process2", "destroy", "dew$b", "_dewExec$b", "exports$b", "dew$a", "_dewExec$a", "exports$a", "dew$9", "_dewExec$9", "exports$9", "deprecate", "config2", "deprecated", "_global$2", "dew$8", "_dewExec$8", "exports$8", "_global$1", "dew$7", "get", "set", "_dewExec$7", "exports$7", "dew$3", "dew$6", "_dewExec$6", "exports$6", "once2", "callback", "dew$5", "_dewExec$5", "exports$5", "resolve", "dew$4", "_dewExec$4", "exports$4", "_dewExec$3", "exports$3", "_global2", "prependListener2", "event", "index", "dew$22", "_dewExec$22", "exports$23", "dew$13", "_dewExec$13", "exports$13", "to", "indexOf", "forEach", "Context", "crypto2", "MD5", "sl", "ar", "br", "H3", "T22", "nextTick2", "off2", "assert2", "utils", "create", "k22", "_global$12", "dew$33", "_dewExec$33", "dew$32", "_dewExec$32", "exports$33", "exports$32", "s22", "s32", "t22", "round", "x22", "toArray", "module2", "mod", "clone", "a22", "a32", "b22", "w22", "ie2", "ro", "lt", "eq", "dew$23", "_dewExec$23", "dew$222", "_dewExec$222", "exports$232", "exports$222", "$3", "e$23", "d3", "m3", "q2", "H2", "K2", "M3", "Q2", "S3", "X2", "$2", "hex", "c22", "m22", "d22", "u22", "compact", "y22", "q22", "z22", "h22", "h32", "alpha", "da", "nonce", "sign", "isError", "save", "now", "skip", "Node", "match", "map", "year", "day", "hour", "define", "match2", "format", "cache", "crypto", "isArray", "isBoolean", "isNull", "isNullOrUndefined", "isNumber", "isString", "isSymbol", "isUndefined", "isRegExp", "isObject", "isDate", "isFunction", "isPrimitive", "exports2", "dew$132", "_dewExec$132", "dew$122", "_dewExec$122", "exports$132", "exports$122", "dew$i", "dew$k", "_dewExec$k", "dew$j", "_dewExec$j", "exports$k", "_dewExec$i", "exports$j", "dew$h", "_dewExec$h", "exports$i", "dew$g2", "_dewExec$g2", "exports$h", "dew$f2", "_dewExec$f2", "exports$g2", "dew$e2", "_dewExec$e2", "exports$f2", "dew$d2", "_dewExec$d2", "exports$e2", "dew$c2", "_dewExec$c2", "exports$d2", "dew$b2", "_dewExec$b2", "exports$c2", "dew$a2", "_dewExec$a2", "exports$b2", "dew$92", "_dewExec$92", "exports$a2", "_global$22", "dew$82", "_dewExec$82", "exports$92", "dew$72", "_dewExec$72", "exports$82", "dew$62", "_dewExec$62", "module", "exports$72", "dew$52", "_dewExec$52", "exports$62", "dew$42", "_dewExec$42", "exports$52", "exports$42", "title", "arch", "platform", "env", "argv", "execArgv", "version", "versions", "emitWarning", "binding", "umask", "cwd", "chdir", "release", "_rawDebug", "moduleLoadList", "domain", "_exiting", "config", "reallyExit", "_kill", "cpuUsage", "resourceUsage", "memoryUsage", "kill", "exit", "openStdin", "allowedNodeEnvironmentFlags", "features", "_fatalExceptions", "setUncaughtExceptionCaptureCallback", "_tickCallback", "_debugProcess", "_debugEnd", "_startProfilerIdleNotifier", "_stopProfilerIdleNotifier", "stdout", "stderr", "stdin", "abort", "pid", "ppid", "execPath", "debugPort", "argv0", "_preload_modules", "setSourceMapsEnabled", "nowOffset", "_maxListeners", "_events", "_eventsCount", "addListener", "once", "off", "removeListener", "removeAllListeners", "emit", "prependListener", "prependOnceListener", "e", "t", "i", "s", "t2", "e2", "c2", "u2", "i2", "a2", "d", "Q", "Y", "promisify", "promisify2", "createContext", "h4", "G2", "_5", "mt", "pt", "init_crypto", "exports", "module", "Math", "undefined", "crypto", "create", "F", "C", "overrides", "i", "j", "clone", "e", "exports", "module", "Math", "C", "T", "i", "MD5", "M", "H", "a", "b", "c", "d", "clone", "x", "s", "t", "n", "index", "MD5", "callback", "exports", "module", "global", "callback", "isArray", "isObject", "a", "b", "k", "isUndefined", "isNumber", "isDate", "map", "i", "extend", "format", "locale", "m", "t", "isValid", "to", "from", "Moment", "config", "warn", "deprecate", "name", "isFunction", "set", "now", "sign", "token", "ordinal", "diff", "u", "localeData", "s", "p2", "p3", "p4", "year", "YEAR", "y", "daysInYear", "get", "d", "month", "mod", "n", "x", "indexOf", "o", "h", "M", "week", "day", "hours", "minutes", "chooseLocale", "names", "j", "e", "l", "match", "defaults", "c", "w", "tokens", "hour", "meridiem", "years", "months", "weeks", "days", "seconds", "milliseconds", "offset", "matches", "isString", "clone", "inspect", "toDate", "toArray", "index", "round", "thresholds", "exports", "module", "e", "t", "n", "i", "u", "a", "o", "r", "l", "s", "f", "p", "c", "d", "h", "v", "k", "D", "E", "m", "g", "y", "b", "x", "w", "P", "S", "L", "O", "_", "M", "j", "T", "A", "C", "B", "I", "R", "F", "N", "V", "G", "module", "exports", "x", "k", "a", "b", "c", "d", "s", "i", "n", "j", "hex", "clamp", "from", "to", "SparkMD5", "callback", "event", "start", "name", "elements", "toArray", "dispatchEvent", "csrfToken", "DirectUpload", "delegate", "error", "controllers", "exports", "module", "global", "x", "k", "a", "b", "c", "d", "s", "i", "n", "j", "hex", "clamp", "from", "to", "SparkMD5", "callback", "event", "start", "name", "elements", "toArray", "dispatchEvent", "csrfToken", "DirectUpload", "delegate", "error", "controllers", "exports", "module", "global", "checkForAlpine", "syncWithObservedComponent", "callback", "handler", "get", "set", "updateOnMutation", "i", "objectSetDeep", "a", "index", "componentData", "name", "start", "alpine", "bind", "isArray", "isUndefined", "isBuffer", "isString", "isNumber", "isObject", "isPlainObject", "isDate", "isFunction", "forEach", "l", "merge", "extend", "b", "utils", "buildURL", "parseValue", "v", "h", "transformData", "isCancel", "normalizeHeaderName", "enhanceError", "config", "createError", "settle", "resolve", "domain", "match", "isAbsoluteURL", "combineURLs", "buildFullPath", "parseHeaders", "href", "isURLSameOrigin", "e", "defaults", "dispatchRequest", "mergeConfig", "config2", "toString", "c", "spread", "isAxiosError", "create", "fetch", "loop", "_", "Config", "debouncedScreensUpdate", "updateScreens", "w", "d", "Element", "now", "userAgent", "x", "y", "k", "deepDiff", "inherits", "from", "to", "j", "it", "u", "history", "nodeScriptClone", "nodeScriptReplace", "_classCallCheck", "_defineProperties", "i", "_createClass", "callback", "Bridge", "renderCallback", "beforeRenderCallback", "event", "beforeCacheCallback", "nextEl", "beforeStreamFormRenderCallback", "exports", "module", "global", "_defineProperty", "ownKeys", "_objectSpread2", "i", "resolve", "kebabCase", "match", "walk", "callback", "debounce", "later", "e", "name", "a", "b", "index", "isNumeric", "once", "nextEl", "clone", "Alpine", "value", "option", "event", "el", "isArray", "isUndefined", "isFunction", "isObject", "set", "get", "o", "p", "Component", "self", "rootEl", "start", "exports", "module", "global", "__assign", "t", "s", "i", "n", "p", "r", "k", "a", "j", "defaults", "debounce", "toggleClass", "e", "event", "locale", "hour", "day", "_", "year", "month", "_a", "config", "c", "format", "match", "source", "self", "flatpickr", "destroy", "redraw", "set", "build", "bindEvents", "isSafari", "maxTime", "minTime", "element", "triggerChange", "m", "d", "x", "formats", "b", "option", "name", "instances", "attachmentSelector", "attachments", "preview", "presentation", "caption", "name", "size", "file", "attributes", "default", "tagName", "parse", "quote", "nestable", "heading1", "terminal", "breakOnReturn", "group", "code", "htmlAttributes", "text", "plaintext", "bulletList", "bullet", "listAttribute", "test", "element", "parentNode", "this", "numberList", "number", "attachmentGallery", "exclusive", "_element$tagName", "toLowerCase", "androidVersionMatch", "navigator", "userAgent", "match", "androidVersion", "parseInt", "browser$1", "composesExistingText", "recentAndroid", "samsungAndroid", "forcesObjectResizing", "supportsInputEvents", "InputEvent", "every", "prop", "prototype", "dompurify", "ADD_ATTR", "SAFE_FOR_XML", "RETURN_DOM", "lang$1", "attachFiles", "bold", "bullets", "byte", "bytes", "captionPlaceholder", "indent", "italic", "link", "numbers", "outdent", "redo", "remove", "strike", "undo", "unlink", "url", "urlPlaceholder", "GB", "KB", "MB", "PB", "TB", "sizes", "lang", "file_size_formatting", "prefix", "precision", "formatter", "concat", "base", "exp", "Math", "floor", "log", "withoutInsignificantZeros", "pow", "toFixed", "replace", "ZERO_WIDTH_SPACE", "NON_BREAKING_SPACE", "extend", "properties", "key", "value", "html", "document", "documentElement", "matches", "handleEvent", "eventName", "onElement", "matchingSelector", "withCallback", "inPhase", "preventDefault", "times", "arguments", "length", "undefined", "selector", "useCapture", "handler", "event", "destroy", "target", "findClosestElementFromNode", "call", "removeEventListener", "addEventListener", "createEvent", "bubbles", "cancelable", "initEvent", "triggerEvent", "dispatchEvent", "elementMatchesSelector", "nodeType", "node", "untilNode", "Node", "ELEMENT_NODE", "closest", "innerElementIsActive", "activeElement", "elementContainsNode", "findChildIndexOfNode", "_node", "childIndex", "previousSibling", "removeNode", "_node$parentNode", "removeChild", "walkTree", "tree", "onlyNodesOfType", "usingFilter", "expandEntityReferences", "whatToShow", "NodeFilter", "SHOW_ELEMENT", "SHOW_TEXT", "SHOW_COMMENT", "SHOW_ALL", "createTreeWalker", "makeElement", "tag", "options", "createElement", "editable", "contenteditable", "setAttribute", "style", "data", "dataset", "className", "split", "forEach", "classList", "add", "textContent", "childNodes", "childNode", "appendChild", "blockTagNames", "getBlockTagNames", "blockAttributes", "push", "nodeIsBlockContainer", "nodeIsBlockStartComment", "firstChild", "nodeIsBlockStart", "strict", "includes", "nodeIsCommentNode", "COMMENT_NODE", "nodeIsCursorTarget", "nodeIsTextNode", "trixCursorTarget", "nodeIsAttachmentElement", "nodeIsEmptyTextNode", "TEXT_NODE", "input", "level2Enabled", "getLevel", "browser", "pickFiles", "callback", "type", "multiple", "hidden", "id", "fileInputId", "files", "getElementById", "body", "click", "parser", "removeBlankTableCells", "tableCellSeparator", "tableRowSeparator", "text_attributes", "inheritable", "window", "getComputedStyle", "fontWeight", "fontStyle", "href", "groupTagName", "getAttribute", "frozen", "backgroundColor", "toolbar", "getDefaultHTML", "interval", "q", "i", "n", "a", "attachment", "attachmentCaption", "attachmentCaptionEditor", "attachmentMetadata", "attachmentMetadataContainer", "attachmentName", "attachmentProgress", "attachmentSize", "attachmentToolbar", "l", "h", "j", "c", "W", "U", "V", "z", "BasicObject", "expression", "toMethod", "toProperty", "optional", "parseProxyMethodExpression", "subject", "object", "_this$toMethod", "_object", "apply", "proxyMethodExpressionPattern", "Error", "args", "Function", "RegExp", "Y", "X", "$", "UTF16String", "box", "fromUCS2String", "toString", "ucs2String", "ucs2decode", "codepoints", "ucs2encode", "constructor", "super", "ucs2Length", "offsetToUCS2Offset", "offset", "slice", "max", "offsetFromUCS2Offset", "ucs2Offset", "fromCodepoints", "charAt", "isEqualTo", "toJSON", "getCacheKey", "hasArrayFrom", "_Array$from", "Array", "from", "hasStringCodePointAt", "_$codePointAt", "codePointAt", "hasStringFromCodePoint", "_String$fromCodePoint", "String", "fromCodePoint", "string", "map", "char", "output", "counter", "charCodeAt", "extra", "array", "result", "fromCharCode", "join", "TrixObject", "jsonString", "fromJSON", "JSON", "hasSameConstructorAs", "inspect", "parts", "contents", "contentsForInspection", "toJSONString", "stringify", "toUTF16String", "arraysAreEqual", "b", "index", "spliceArray", "_len", "_key", "splice", "RTL_PATTERN", "getDirection", "dir", "dirName", "textArea", "form", "supportsDirName", "FormData", "has", "error", "supportsDirSelector", "get", "trim", "allAttributeNames", "blockAttributeNames", "textAttributeNames", "listAttributeNames", "getAllAttributeNames", "getTextAttributeNames", "getBlockAttributeNames", "getBlockConfig", "attributeName", "config", "Object", "keys", "getTextConfig", "installDefaultCSSForTagName", "defaultCSS", "insertStyleElementForTagName", "nonce", "getCSPNonce", "head", "insertBefore", "getMetaElement", "content", "querySelector", "testTransferData", "dataTransferIsPlainText", "dataTransfer", "getData", "DOMParser", "parseFromString", "keyEventIsKeyboardCommand", "platform", "metaKey", "ctrlKey", "defer", "fn", "setTimeout", "copyObject", "objectsAreEqual", "normalizeRange", "range", "isArray", "copyValue", "rangeIsCollapsed", "start", "end", "rangeValuesAreEqual", "rangesAreEqual", "leftRange", "rightRange", "leftStart", "leftEnd", "rightStart", "rightEnd", "left", "right", "SelectionChangeObserver", "update", "bind", "selectionManagers", "started", "stop", "registerSelectionManager", "selectionManager", "unregisterSelectionManager", "filter", "sm", "notifySelectionManagersOfSelectionChange", "selectionDidChange", "reset", "selectionChangeObserver", "getDOMSelection", "selection", "getSelection", "rangeCount", "getDOMRange", "_getDOMSelection", "domRange", "getRangeAt", "domRangeIsPrivate", "setDOMRange", "removeAllRanges", "addRange", "nodeIsPrivate", "startContainer", "endContainer", "getPrototypeOf", "normalizeSpaces", "breakableWhitespacePattern", "squishBreakableWhitespace", "source", "utf16StringDifferences", "diffA", "utf16StringDifference", "utf16String", "diffB", "leftIndex", "rightIndexA", "rightIndexB", "Hash", "fromCommonAttributesOfObjects", "objects", "hash", "getKeys", "getKeysCommonToHash", "values", "copy", "merge", "unbox", "toArray", "isEmpty", "toObject", "keyToRemove", "sort", "ObjectGroup", "groupObjects", "ungroupedObjects", "depth", "asTree", "_object$canBeGrouped2", "_object$canBeGrouped", "_group$canBeGroupedWi", "_group", "canBeGrouped", "canBeGroupedWith", "getObjects", "getDepth", "ObjectMap", "find", "ElementStore", "elements", "getKey", "trixStoreKey", "Operation", "isPerforming", "performing", "hasPerformed", "performed", "hasSucceeded", "succeeded", "hasFailed", "getPromise", "promise", "Promise", "resolve", "reject", "perform", "release", "_this$promise", "_this$promise$cancel", "cancel", "proxyMethod", "ObjectView", "childViews", "rootView", "getNodes", "nodes", "createNodes", "cloneNode", "invalidate", "_this$parentView", "parentView", "invalidateViewForObject", "_this$findViewForObje", "findViewForObject", "findOrCreateCachedChildView", "viewClass", "view", "getCachedViewForObject", "recordChildView", "createChildView", "cacheViewForObject", "ObjectGroupView", "getAllChildViews", "views", "childView", "findElement", "findElementForObject", "getViewCache", "isViewCachingEnabled", "viewCache", "shouldCacheViews", "enableViewCaching", "disableViewCaching", "_this$getViewCache", "cache", "garbageCollectCachedViews", "objectKeys", "objectGroup", "getChildViews", "createContainerElement", "entries", "setPrototypeOf", "isFrozen", "getOwnPropertyDescriptor", "freeze", "seal", "create", "construct", "Reflect", "x", "func", "thisArg", "Func", "_len2", "_key2", "arrayForEach", "unapply", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "arraySplice", "stringToLowerCase", "stringToString", "stringMatch", "stringReplace", "stringIndexOf", "indexOf", "stringTrim", "objectHasOwnProperty", "hasOwnProperty", "regExpTest", "typeErrorCreate", "TypeError", "_len4", "_key4", "lastIndex", "_len3", "_key3", "addToSet", "set", "transformCaseFunc", "lcElement", "cleanArray", "clone", "newObject", "property", "lookupGetter", "desc", "Pe", "ue", "Me", "Be", "_e", "je", "ze", "qe", "he", "si", "t", "e", "r", "o", "s", "u", "d", "g", "m", "p", "f", "v", "A", "y", "C", "E", "S", "R", "k", "T", "w", "oe", "L", "D", "N", "I", "O", "F", "P", "M", "B", "_", "Ne", "de", "H", "J", "K", "G", "Z", "Q", "tt", "et", "it", "nt", "rt", "ot", "st", "at", "lt", "ct", "ut", "ht", "dt", "gt", "mt", "pt", "ft", "bt", "vt", "At", "yt", "xe", "xt", "Ct", "Et", "St", "Rt", "kt", "Tt", "wt", "Lt", "Dt", "Oe", "ye", "ke", "we", "Nt", "It", "Ot", "ve", "Ft", "Pt", "Mt", "Bt", "_t", "jt", "pe", "Wt", "Vt", "Ee", "Ut", "Se", "zt", "Re", "be", "qt", "fe", "Ae", "purify", "addHook", "attrName", "keepAttr", "forceKeepAttr", "DEFAULT_ALLOWED_ATTRIBUTES", "DEFAULT_FORBIDDEN_PROTOCOLS", "DEFAULT_FORBIDDEN_ELEMENTS", "HTMLSanitizer", "sanitizedElement", "sanitize", "sanitizedHtml", "getHTML", "outerHTML", "innerHTML", "sanitizer", "allowedAttributes", "forbiddenProtocols", "forbiddenElements", "purifyOptions", "createBodyElementForHTML", "sanitizeElements", "normalizeListElementNesting", "purifyConfig", "assign", "DOMPurify", "setConfig", "getBody", "walker", "nodesToRemove", "nextNode", "currentNode", "elementIsRemovable", "sanitizeElement", "hasAttribute", "protocol", "removeAttribute", "_ref", "querySelectorAll", "listElement", "previousElement", "previousElementSibling", "elementIsForbidden", "elementIsntSerializable", "doc", "implementation", "createHTMLDocument", "css", "AttachmentView", "uploadProgressDelegate", "attachmentPiece", "piece", "createContentNodes", "innerElement", "figure", "getClassName", "getHref", "tabindex", "hasContent", "setHTML", "getContent", "createCaptionElement", "isPending", "progressElement", "class", "getUploadProgress", "trixMutable", "createCursorTarget", "figcaption", "getCaption", "captionConfig", "getCaptionConfig", "getFilename", "getFormattedFilesize", "nameElement", "createTextNode", "sizeElement", "names", "getType", "extension", "getExtension", "trixAttachment", "trixContentType", "getContentType", "trixId", "trixAttributes", "trixSerialize", "htmlContainsTagName", "isValidAttribute", "_config$attachments$t", "findProgressElement", "_this$findElement", "attachmentDidChangeUploadProgress", "div", "PreviewableAttachmentView", "previewDelegate", "image", "src", "refresh", "updateAttributesForImage", "getURL", "previewURL", "getPreviewURL", "serializedAttributes", "width", "getWidth", "height", "getHeight", "alt", "storeKey", "attachmentDidChangeAttributes", "PieceView", "getAttributes", "textConfig", "context", "createAttachmentNodes", "createStringNodes", "_element", "firstElementChild", "isPreviewable", "_this$textConfig", "iterable", "substring", "preserveSpaces", "styles", "pendingElement", "styleProperty", "isLast", "isFirst", "followsWhitespace", "TextView", "pieces", "getPieces", "endsWithWhitespace", "previousPiece", "BlockView", "block", "createComment", "_getBlockConfig", "getLastAttribute", "textView", "shouldAddExtraNewlineElement", "isRTL", "getBlockBreakPosition", "DocumentView", "render", "sync", "elementStore", "setDocument", "shadowElement", "getBlocks", "isSynced", "elementsHaveEqualHTML", "documentFragment", "lastChild", "fragment", "createDocumentFragmentForSync", "didSync", "findStoredElements", "createDocumentFragment", "storedElement", "replaceChild", "otherElement", "ignoreSpaces", "Piece", "types", "pieceJSON", "copyWithAttributes", "getValue", "copyWithAdditionalAttributes", "copyWithoutAttribute", "attribute", "getAttributesHash", "hasSameStringValueAsPiece", "hasSameAttributesAsPiece", "isBlockBreak", "isSerializable", "getLength", "canBeConsolidatedWith", "_defineProperty", "ImagePreloadOperation", "Image", "onload", "naturalWidth", "naturalHeight", "onerror", "Attachment", "attributesForFile", "setFile", "filename", "filesize", "contentType", "attachmentJSON", "releaseFile", "didChangeAttributes", "setAttributes", "newAttributes", "_this$previewDelegate", "_this$previewDelegate2", "_this$delegate", "_this$delegate$attach", "delegate", "preloadURL", "previewablePattern", "getFilesize", "_this$getFilename$mat", "getFile", "preloadFile", "releasePreloadedFile", "uploadProgress", "setUploadProgress", "_this$uploadProgressD", "_this$uploadProgressD2", "preloadingURL", "setPreviewURL", "_this$previewDelegate3", "_this$previewDelegate4", "_this$delegate2", "_this$delegate2$attac", "attachmentDidChangePreviewURL", "preload", "fileObjectURL", "URL", "createObjectURL", "revokeObjectURL", "then", "catch", "AttachmentPiece", "ensureAttachmentExclusivelyHasAttribute", "removeProhibitedAttributes", "permittedAttributes", "_piece$attachment", "json", "toConsole", "registerType", "StringPiece", "consolidateWith", "splitAtOffset", "SplittableList", "eachObject", "insertObjectAtIndex", "insertSplittableListAtIndex", "splittableList", "insertSplittableListAtPosition", "position", "splitObjectAtPosition", "editObjectAtIndex", "replaceObjectAtIndex", "removeObjectAtIndex", "getObjectAtIndex", "getSplittableListInRange", "rightIndex", "splitObjectsAtRange", "selectSplittableList", "removeObjectsInRange", "transformObjectsInRange", "transform", "transformedObjects", "rightOuterIndex", "leftInnerIndex", "startOfRange", "endOfRange", "getObjectAtPosition", "findIndexAndOffsetAtPosition", "splitIndex", "splitOffset", "leftObject", "rightObject", "consolidate", "pendingObject", "_pendingObject$canBeC", "_pendingObject", "consolidateFromIndexToIndex", "startIndex", "endIndex", "objectsInRange", "consolidatedInRange", "currentPosition", "nextPosition", "findPositionAtIndexAndOffset", "currentIndex", "getEndPosition", "endPosition", "objectArraysAreEqual", "Text", "textJSON", "notEmpty", "pieceList", "copyWithPieceList", "copyUsingObjectMap", "objectMap", "appendText", "insertTextAtPosition", "removeTextAtRange", "replaceTextAtRange", "moveTextFromRangeToPosition", "getTextAtRange", "addAttributeAtRange", "addAttributesAtRange", "removeAttributeAtRange", "setAttributesAtRange", "getAttributesAtPosition", "_this$pieceList$getOb", "getCommonAttributes", "getCommonAttributesAtRange", "getExpandedRangeForAttributeAtOffset", "getStringAtRange", "getStringAtPosition", "startsWithString", "endsWithString", "getAttachmentPieces", "getAttachments", "getAttachmentAndPositionById", "attachmentId", "getAttachmentById", "getRangeOfAttachment", "attachmentAndPosition", "updateAttributesForAttachment", "_text$pieceList", "eachPiece", "getPieceAtPosition", "toSerializableText", "Block", "blockJSON", "applyBlockBreakToText", "copyWithText", "copyWithoutText", "copyWithoutAttributes", "mappedText", "addAttribute", "expandAttribute", "addHTMLAttribute", "removeLastValue", "removeLastAttribute", "getLastElement", "getAttributeLevel", "getAttributeAtLevel", "level", "hasAttributes", "getLastNestableAttribute", "getNestableAttributes", "getNestingLevel", "decreaseNestingLevel", "increaseNestingLevel", "getListItemAttributes", "isListItem", "isTerminalBlock", "_getBlockConfig2", "breaksOnReturn", "_getBlockConfig3", "findLineBreakInDirectionFromPosition", "direction", "newlineText", "textForStringWithAttributes", "getTextWithoutBlockBreak", "textEndsInBlockBreak", "otherBlock", "otherAttributes", "otherAttribute", "getListAttributeNames", "unmarkExistingInnerBlockBreaksInText", "addBlockBreakToText", "modified", "innerPieces", "lastPiece", "unmarkBlockBreakPiece", "blockBreakText", "blockBreak", "Document", "documentJSON", "textAttributes", "blocks", "blockList", "getBlockAtIndex", "consolidateBlocks", "copyUsingObjectsFromDocument", "sourceDocument", "copyWithBaseBlockAttributes", "replaceBlock", "oldBlock", "newBlock", "insertDocumentAtRange", "locationFromPosition", "getBlockAtPosition", "mergeDocumentAtRange", "formattedDocument", "startPosition", "startLocation", "baseBlockAttributes", "getBaseBlockAttributes", "trailingBlockAttributes", "leadingBlockAttributes", "blockCount", "getBlockCount", "firstBlock", "firstText", "insertTextAtRange", "leftPosition", "rightPosition", "leftLocation", "rightLocation", "locationRangeFromRange", "leftOffset", "leftBlock", "rightOffset", "rightBlock", "leftText", "rightText", "affectedBlockCount", "getDocumentAtRange", "movingRightward", "eachBlockAtRange", "textRange", "eachBlock", "getTextAtIndex", "removeAttributeForAttachment", "setHTMLAttributeAtPosition", "updatedBlock", "insertBlockBreakAtRange", "applyBlockAttributeAtRange", "expanded", "expandRangeToLineBreaksAndSplitBlocks", "blockConfig", "removeLastListAttributeAtRange", "exceptAttributeName", "converted", "convertLineBreaksToBlockBreaksInRange", "removeBlockAttributesAtRange", "removeLastTerminalAttributeAtRange", "consolidateBlocksAtRange", "lastAttributeName", "endLocation", "startBlock", "positionFromLocation", "endBlock", "_this$getBlockAtIndex", "getTextAtPosition", "getCharacterAtPosition", "getEditCount", "editCount", "getCommonAttributesAtPosition", "attributesForBlock", "commonAttributes", "attributesLeft", "inheritableAttributes", "getRangeOfCommonAttributeAtPosition", "startOffset", "endOffset", "blockIndex", "lastAttributeIndex", "min", "attachmentPieces", "getLocationRangeOfAttachment", "getAttachmentPieceForAttachment", "findRangesForBlockAttribute", "ranges", "findRangesForTextAttribute", "withValue", "location", "locationRangeFromPosition", "rangeFromLocationRange", "locationRange", "getTexts", "toSerializableDocument", "pieceForString", "parseTrixDataAttribute", "HTMLParser", "referenceElement", "blockElements", "processedElements", "getDocument", "createHiddenContainer", "containerElement", "nodeFilter", "processNode", "translateBlockElementMarginsToNewlines", "removeHiddenContainer", "display", "nextSibling", "isInsignificantTextNode", "appendBlockForTextNode", "processTextNode", "appendBlockForElement", "processElement", "currentBlockElement", "isBlockElement", "appendStringWithAttributes", "_this$currentBlock", "getBlockAttributes", "getBlockHTMLAttributes", "currentBlock", "appendBlockForAttributesWithElement", "elementIsBlockElement", "currentBlockContainsElement", "parentBlockElement", "findParentBlockElement", "appendEmptyBlock", "parentElement", "_node$previousSibling", "elementCanDisplayPreformattedText", "stringEndsWithWhitespace", "leftTrimBreakableWhitespace", "getTextAttributes", "appendAttachmentWithAttributes", "isExtraBR", "dimensions", "needsTableSeparator", "appendPiece", "appendStringToTextAtIndex", "prependStringToTextAtIndex", "unshift", "configAttr", "attributeInheritedFromBlock", "blockElement", "findBlockElementAncestors", "attrConfig", "_attrConfig$test", "reverse", "settings", "ancestors", "stringIsAllBreakableWhitespace", "nodeEndsWithNonWhitespace", "_element$previousSibl", "defaultMargin", "getMarginOfDefaultBlockElement", "margin", "getMarginOfBlockElementAtIndex", "top", "bottom", "getBlockElementMargin", "whiteSpace", "marginTop", "marginBottom", "FILTER_REJECT", "FILTER_ACCEPT", "unserializableAttributeNames", "serializedAttributesAttribute", "serializedAttributesSelector", "blockCommentPattern", "serializers", "serializable", "HTMLElement", "el", "ManagedAttachment", "attachmentManager", "requestRemovalOfAttachment", "AttachmentManager", "managedAttachments", "manageAttachment", "attachmentIsManaged", "attachmentManagerDidRequestRemovalOfAttachment", "unmanageAttachment", "managedAttachment", "LineBreakInsertion", "composition", "selectedRange", "getSelectedRange", "previousCharacter", "nextCharacter", "shouldInsertBlockBreak", "shouldBreakFormattedBlock", "shouldDecreaseListLevel", "shouldPrependListItem", "shouldRemoveLastBlockAttribute", "Composition", "currentAttributes", "revision", "_this$delegate$compos", "refreshAttachments", "compositionDidChangeDocument", "getSnapshot", "loadSnapshot", "_this$delegate2$compo", "_this$delegate3", "_this$delegate3$compo", "compositionWillLoadSnapshot", "setSelection", "compositionDidLoadSnapshot", "insertText", "updatePosition", "notifyDelegateOfInsertionAtRange", "insertBlock", "insertDocument", "insertString", "getCurrentTextAttributes", "insertBlockBreak", "insertLineBreak", "insertion", "decreaseListLevel", "removeLastBlockAttribute", "breakFormattedBlock", "insertHTML", "replaceHTML", "getLocationRange", "insertFile", "insertFiles", "_this$delegate4", "compositionShouldAcceptFile", "attachmentForFile", "insertAttachments", "insertAttachment", "attachmentText", "textForAttachmentWithAttributes", "shouldManageDeletingInDirection", "shouldManageMovingCursorInDirection", "deleteInDirection", "deletingIntoPreviousBlock", "selectionSpansBlocks", "selectionIsCollapsed", "canDecreaseBlockAttributeLevel", "getBlock", "decreaseBlockAttributeLevel", "getExpandedRangeInDirection", "getAttachmentAtRange", "editAttachment", "moveTextFromRange", "removeAttachment", "stopEditingAttachment", "removeCurrentAttribute", "insertPlaceholder", "placeholderPosition", "getPosition", "selectPlaceholder", "setSelectedRange", "PLACEHOLDER", "forgetPlaceholder", "hasCurrentAttribute", "toggleCurrentAttribute", "setCurrentAttribute", "canSetCurrentAttribute", "canSetCurrentBlockAttribute", "canSetCurrentTextAttribute", "getSelectedDocument", "setBlockAttribute", "setTextAttribute", "notifyDelegateOfCurrentAttributesChange", "setHTMLAtributeAtPosition", "allowedHTMLAttributes", "newDocument", "removeBlockAttribute", "updateCurrentAttributes", "removeTextAttribute", "canDecreaseNestingLevel", "_this$getBlock", "canIncreaseNestingLevel", "previousBlock", "getPreviousBlock", "_this$getBlock2", "_this$getBlock3", "attributeLevel", "ignoreLock", "getCurrentAttributes", "freezeSelection", "thawSelection", "hasFrozenSelection", "_this$delegate5", "compositionDidRequestChangingSelectionToLocationRange", "getSelectionManager", "setLocationRange", "targetLocationRange", "withTargetLocationRange", "withTargetRange", "withTargetDOMRange", "createLocationRangeFromDOMRange", "translateUTF16PositionFromOffset", "editingAttachment", "moveCursorInDirection", "canEditAttachment", "expandSelectionInDirection", "expandSelectionForEditing", "expandSelectionAroundCommonAttribute", "selectionContainsAttachments", "_this$getSelectedAtta", "getSelectedAttachments", "selectionIsInCursorTarget", "positionIsCursorTarget", "locationIsCursorTarget", "positionIsBlockBreak", "_this$document$getPie", "_this$getSelectedDocu", "added", "removed", "oldArray", "newArray", "existingValues", "Set", "currentValues", "_this$delegate6", "_this$delegate6$compo", "compositionDidRemoveAttachment", "_this$delegate7", "_this$delegate7$compo", "compositionDidAddAttachment", "_this$delegate8", "_this$delegate8$compo", "compositionDidEditAttachment", "_this$delegate9", "_this$delegate9$compo", "compositionDidChangeAttachmentPreviewURL", "_this$delegate10", "_this$delegate10$comp", "compositionDidStartEditingAttachment", "_this$delegate11", "_this$delegate11$comp", "compositionDidStopEditingAttachment", "_this$delegate12", "_this$delegate12$comp", "compositionDidChangeCurrentAttributes", "_this$delegate13", "_this$delegate13$comp", "compositionDidPerformInsertionAtRange", "utf16string", "utf16position", "UndoManager", "undoEntries", "redoEntries", "recordUndoEntry", "description", "consolidatable", "previousEntry", "entryHasDescriptionAndContext", "undoEntry", "createEntry", "redoEntry", "snapshot", "canUndo", "canRedo", "entry", "BLOCK_ATTRIBUTE_NAME", "Filter", "applyBlockAttribute", "findRangesOfBlocks", "findRangesOfPieces", "moveSelectedRangeForward", "attachmentGalleryFilter", "DEFAULT_FILTERS", "Editor", "undoManager", "filters", "loadDocument", "loadHTML", "loadJSON", "getClientRectAtPosition", "getClientRectAtLocationRange", "activateAttribute", "attributeIsActive", "canActivateAttribute", "deactivateAttribute", "LocationMapper", "findLocationFromContainerAndOffset", "container", "foundBlock", "attachmentElement", "findAttachmentElementParentForNode", "rejectAttachmentContents", "nodeLength", "findContainerAndOffsetFromLocation", "nodeOffset", "findNodeAndOffsetFromLocation", "getSignificantNodesForIndex", "acceptSignificantNodes", "recordingNodes", "rejectEmptyTextNodes", "PointMapper", "createDOMRangeFromPoint", "caretPositionFromPoint", "offsetNode", "createRange", "setStart", "caretRangeFromPoint", "createTextRange", "originalDOMRange", "moveToPoint", "select", "getClientRectsForDOMRange", "getClientRects", "SelectionManager", "didMouseDown", "locationMapper", "pointMapper", "lockCount", "currentLocationRange", "lockedLocationRange", "createDOMRangeFromLocationRange", "updateCurrentLocationRange", "setLocationRangeFromPointRange", "pointRange", "getLocationAtPoint", "lock", "unlock", "clearSelection", "_getDOMRange", "collapsed", "selectionIsExpanded", "domRangeWithinElement", "pauseTemporarily", "resumeHandlers", "paused", "resume", "clearTimeout", "resumeTimeout", "_this$delegate$locati", "locationRangeDidChange", "rangeStart", "rangeEnd", "setEnd", "point", "_this$createLocationR", "ne", "keyNames", "undoable", "commands", "do", "undos", "AttachmentEditorController", "title", "trixAction", "didClickToolbar", "didClickActionButton", "textarea", "placeholder", "textareaClone", "tabIndex", "autoresize", "scrollHeight", "didInputCaption", "didKeyDownCaption", "didChangeCaption", "didBlurCaption", "editingFigcaption", "editCaption", "focus", "install", "makeElementMutable", "addToolbar", "installCaptionEditor", "uninstall", "savePendingCaption", "didUninstallAttachmentEditor", "pendingCaption", "_this$delegate3$attac", "attachmentEditorDidRequestUpdatingAttributesForAttachment", "attachmentEditorDidRequestRemovingAttributeForAttachment", "stopPropagation", "attachmentEditorDidRequestRemovalOfAttachment", "_this$delegate5$attac", "keyCode", "attachmentEditorDidRequestDeselectingAttachment", "CompositionController", "didFocus", "didBlur", "didClickAttachment", "documentView", "_this$blurPromise", "focused", "compositionControllerDidFocus", "blurPromise", "compositionControllerDidBlur", "findAttachmentForElement", "compositionControllerDidSelectAttachment", "getSerializableElement", "isEditingAttachment", "_this$delegate4$compo", "_this$delegate5$compo", "canSyncDocumentView", "compositionControllerWillSyncDocumentView", "compositionControllerDidSyncDocumentView", "compositionControllerDidRender", "rerenderViewForObject", "refreshViewCache", "attachmentEditor", "installAttachmentEditorForAttachment", "_this$attachmentEdito", "uninstallAttachmentEditor", "_this$attachmentEdito2", "compositionControllerWillUpdateAttachment", "compositionControllerDidRequestRemovalOfAttachment", "compositionControllerDidRequestDeselectingAttachment", "Controller", "mutableAttributeName", "mutableSelector", "childList", "characterData", "characterDataOldValue", "subtree", "MutationObserver", "didMutate", "observer", "observe", "disconnect", "mutations", "_this$delegate$elemen", "findSignificantMutations", "elementDidMutate", "getMutationSummary", "mutation", "mutationIsSignificant", "nodeIsMutable", "nodesModifiedByMutation", "nodeIsSignificant", "addedNodes", "removedNodes", "getTextMutationSummary", "additions", "deletions", "getTextChangesFromCharacterData", "textChanges", "getTextChangesFromChildList", "addition", "summary", "textAdded", "deleted", "textDeleted", "getMutationsByType", "textRemoved", "getTextForNodes", "characterMutations", "startMutation", "endMutation", "summarized", "oldString", "newString", "oldValue", "FileVerificationOperation", "reader", "FileReader", "abort", "readAsArrayBuffer", "FlakyAndroidKeyboardDetector", "shouldIgnore", "previousEvent", "checkSamsungKeyboardBuggyModeStart", "checkSamsungKeyboardBuggyModeEnd", "buggyMode", "insertingLongTextAfterUnidentifiedChar", "differsInWhitespace", "innerText", "inputType", "_this$event$data", "isBeforeInputInsertText", "previousEventWasUnidentifiedKeydown", "_this$previousEvent", "_this$previousEvent2", "text1", "text2", "normalize", "whiteSpaceNormalizerRegexp", "InputController", "mutationObserver", "flakyKeyboardDetector", "events", "handlerFor", "mutationSummary", "editorWillSyncDocumentView", "editorDidSyncDocumentView", "requestRender", "_this$delegate$inputC", "inputControllerDidRequestRender", "requestReparse", "_this$delegate2$input", "inputControllerDidRequestReparse", "operations", "all", "handleInput", "_this$responder", "inputControllerWillAttachFiles", "responder", "defaultPrevented", "inputControllerWillHandleInput", "inputControllerDidHandleInput", "createLinkHTML", "pastedFileCount", "Level0InputController", "resetInputSummary", "setInputSummary", "inputSummary", "isComposing", "inputControllerDidAllowUnhandledInput", "mutationIsExpected", "preferDocument", "mutationAdditionMatchesSummary", "mutationDeletionMatchesSummary", "didDelete", "unexpectedNewlineAddition", "unexpectedNewlineDeletion", "_this$compositionInpu", "textChanged", "composedEmptyString", "compositionInput", "getEndData", "getCompositionInput", "CompositionInput", "isEnded", "_this$responder2", "serializeSelectionToDataTransfer", "_this$responder3", "setData", "canAcceptDataTransfer", "Files", "getPastedHTMLUsingHiddenElement", "pageXOffset", "pageYOffset", "opacity", "requestAnimationFrame", "keydown", "didInput", "keyName", "_context2", "modifier", "_context", "character", "inputControllerDidReceiveKeyboardCommand", "keypress", "altKey", "stringFromKeyEvent", "_this$responder9", "inputControllerWillPerformTyping", "textInput", "toUpperCase", "_this$responder10", "dragenter", "dragstart", "_this$delegate5$input", "draggedRange", "inputControllerDidStartDrag", "dragover", "draggingPoint", "clientX", "clientY", "_this$delegate6$input", "inputControllerDidReceiveDragOverPoint", "dragend", "_this$delegate7$input", "inputControllerDidCancelDrag", "drop", "_event$dataTransfer", "_this$responder11", "_this$responder12", "inputControllerWillMoveText", "_this$responder13", "fromJSONString", "cut", "_this$responder14", "clipboardData", "inputControllerWillCutText", "_this$responder15", "paste", "clipboard", "testClipboardData", "pasteEventIsCrippledSafariHTMLPaste", "_this$responder16", "inputControllerWillPaste", "inputControllerDidPaste", "_this$responder17", "_this$delegate14", "_this$responder18", "_this$delegate15", "_this$delegate16", "_this$responder19", "_this$delegate17", "_clipboard$items", "_clipboard$items$getA", "items", "getAsFile", "_this$delegate18", "_this$responder20", "_this$delegate19", "extensionForFile", "compositionstart", "compositionupdate", "compositionend", "beforeinput", "backspace", "_this$delegate20", "delete", "_this$delegate21", "return", "_this$delegate22", "_this$responder21", "tab", "_this$responder22", "_this$responder23", "_this$responder24", "_this$responder25", "control", "_this$delegate23", "_this$delegate24", "_this$delegate25", "_this$responder26", "shift", "_this$delegate26", "_this$responder27", "_this$responder28", "_this$responder29", "_this$delegate27", "meta", "_this$delegate28", "_file$type", "which", "charCode", "hasPasteboardFlavor", "hasReadableDynamicData", "isExternalHTMLPaste", "isExternalRichTextPaste", "inputController", "isSignificant", "_this$responder5", "_this$responder4", "canApplyToDocument", "_this$responder6", "_this$responder7", "_this$responder8", "_this$data$start", "_this$data$end", "Level2InputController", "scheduledRender", "composing", "reparse", "scheduleRender", "_this$afterRender", "cancelAnimationFrame", "afterRender", "toggleAttributeIfSupported", "inputControllerWillPerformFormatting", "activateAttributeIfSupported", "getTargetDOMRange", "minLength", "_this$event$getTarget", "_this$event", "targetRanges", "getTargetRanges", "staticRangeToRange", "withEvent", "command", "keyboardCommandFromKeyEvent", "shiftKey", "_event$clipboardData", "pasteEventHasFilesOnly", "pasteEventHasPlainTextOnly", "inputTypes", "immmediateRender", "inputEvent", "dragging", "pointFromEvent", "dragEventHasFiles", "ArrowLeft", "ArrowRight", "Backspace", "Tab", "deleteByComposition", "deleteByCut", "deleteByDrag", "deleteByDragRange", "deleteCompositionText", "deleteContent", "deleteContentBackward", "deleteContentForward", "deleteEntireSoftLine", "deleteHardLineBackward", "deleteHardLineForward", "deleteSoftLineBackward", "deleteSoftLineForward", "deleteWordBackward", "deleteWordForward", "formatBackColor", "formatBold", "formatFontColor", "formatFontName", "formatIndent", "formatItalic", "formatJustifyCenter", "formatJustifyFull", "formatJustifyLeft", "formatJustifyRight", "formatOutdent", "formatRemove", "_this$responder30", "formatSetBlockTextDirection", "formatSetInlineTextDirection", "formatStrikeThrough", "formatSubscript", "formatSuperscript", "formatUnderline", "historyRedo", "inputControllerWillPerformRedo", "historyUndo", "inputControllerWillPerformUndo", "insertCompositionText", "insertFromComposition", "insertFromDrop", "_this$responder31", "insertFromPaste", "_this$responder32", "_this$responder33", "processableFilePaste", "_this$responder34", "_this$responder35", "insertFromYank", "insertLink", "insertOrderedList", "insertParagraph", "_this$responder36", "insertReplacementText", "replacement", "_this$event$dataTrans", "insertTranspose", "insertUnorderedList", "staticRange", "_event$dataTransfer$f", "attributeButtonSelector", "actionButtonSelector", "toolbarButtonSelector", "dialogSelector", "activeDialogSelector", "dialogButtonSelector", "dialogInputSelector", "getInputForDialog", "getAttributeName", "getActionName", "ToolbarController", "didClickAttributeButton", "didClickDialogButton", "didKeyDownDialogInput", "actions", "resetDialogInputs", "toolbarDidClickButton", "actionName", "getDialog", "toggleDialog", "toolbarDidInvokeAction", "toolbarDidToggleAttribute", "refreshAttributeButtons", "dialogElement", "dialog", "hideDialog", "updateActions", "refreshActionButtons", "eachActionButton", "disabled", "updateAttributes", "eachAttributeButton", "dialogIsVisible", "applyKeyboardCommand", "keyString", "button", "buttonKeys", "dialogName", "showDialog", "toolbarWillShowDialog", "disabledInput", "toolbarDidShowDialog", "willValidate", "setCustomValidity", "checkValidity", "isSafeAttribute", "toolbarDidUpdateAttribute", "toolbarDidRemoveAttribute", "toolbarDidHideDialog", "EditorController", "editorElement", "compositionController", "toolbarController", "toolbarElement", "editor", "notifyEditorElement", "handlingInput", "updateCurrentActions", "pasting", "pastedRange", "attachmentLocationRange", "loadingSnapshot", "isFocused", "requestedLocationRange", "compositionRevisionWhenLocationRangeRequested", "renderedCompositionRevision", "runEditorFilters", "isFocusedInvisibly", "requestedRender", "recordTypingUndoEntry", "recordFormattingUndoEntry", "locationRangeBeforeDrag", "invokingElement", "invokeAction", "selectionFrozen", "canInvokeAction", "actionIsExternal", "_this$actions$actionN", "_this$actions$actionN2", "getCurrentActions", "currentActions", "snapshotsAreEqual", "updateInputElement", "serializer", "setFormValue", "message", "documentChangedSinceLastRender", "notify", "getUndoContext", "getLocationContext", "getTimeContext", "Date", "getTime", "_this$editorElement$o", "ownerDocument", "TrixToolbarElement", "connectedCallback", "editorElements", "_this$ownerDocument", "nodeList", "makeEditable", "toggleAttribute", "configureContentEditable", "disableObjectResizing", "setDefaultParagraphSeparator", "_document$queryComman", "_document", "queryCommandSupported", "execCommand", "_document$queryComman2", "_document2", "cursorTargetStyles", "_internals", "WeakMap", "_formDisabled", "_validate", "WeakSet", "ElementInternalsDelegate", "_classPrivateFieldInitSpec", "writable", "_classPrivateFieldSet", "attachInternals", "_classPrivateMethodGet", "_validate2", "disconnectedCallback", "_classPrivateFieldGet", "labels", "required", "validity", "validationMessage", "formDisabledCallback", "reportValidity", "customValidationMessage", "valueMissing", "customError", "setValidity", "_focusHandler", "_resetBubbled", "_clickBubbled", "LegacyDelegate", "contains", "label", "texts", "_classPrivateFieldGet2", "console", "warn", "_delegate", "TrixEditorElement", "willCreateInput", "formAssociated", "inputElement", "localName", "toolbarId", "internalToolbar", "_this$ownerDocument2", "_this$editorControlle", "editorController", "defaultValue", "_this$editor", "attributeChangedCallback", "newValue", "isConnected", "reconnect", "inputId", "nextElementSibling", "_this$editorControlle2", "removeInternalToolbar", "_this$internalToolbar", "formResetCallback", "Trix", "VERSION", "version", "core", "models", "controllers", "observers", "customElements", "define", "exports", "module", "_self", "_", "o", "clone", "v", "i", "m", "lang", "callback", "env", "toArray", "name", "callbacks", "s", "e", "match", "patterns", "j", "from", "to", "p", "k", "Prism", "start", "elements", "year", "month", "day", "e", "dueDate", "option2", "exports", "module", "undefined", "VERSION", "INFINITY", "MAX_INTEGER", "reUnescapedHtml", "types", "e", "index", "collection", "n", "cache", "map", "set", "runInContext", "_", "Array", "Date", "Error", "Function", "Math", "Object", "RegExp", "String", "TypeError", "uid", "Buffer", "Symbol", "Uint8Array", "DataView", "Map", "Promise", "Set", "WeakMap", "isArray", "isObject", "result", "start", "iteratee", "Hash", "size", "values", "isBuffer", "eq", "skip", "get", "key", "setTimeout", "includes", "isSymbol", "toInteger", "isFunction", "object", "identity", "isPlainObject", "indexOf", "clearTimeout", "buffer", "callback", "getData", "ary", "setData", "noop", "othValue", "match", "memoize", "transform", "compact", "drop", "fill", "findIndex", "toArray", "parent", "clone", "every", "find", "forEach", "isString", "sample", "now", "debounce", "once", "throttle", "isBoolean", "isDate", "isError", "isFinite", "isNaN", "isNumber", "isNull", "isRegExp", "isUndefined", "lt", "sign", "assign", "create", "defaults", "findKey", "merge", "clamp", "inRange", "escape", "kebabCase", "parseInt", "interpolate", "unescape", "matches", "chain", "ceil", "floor", "round", "value", "_", "elements", "i", "humanizeString", "import_lodash", "m", "_", "import_lodash", "buildFormData", "dispatch", "m", "checks", "_", "a", "r", "import_lodash", "index", "q", "n", "humanizeString", "c", "now", "v", "_", "_", "import_lodash", "event", "index", "_", "index", "name", "e", "event", "event", "csrfToken", "_error", "name", "r", "v", "e", "e", "_", "index", "e", "i", "_defineProperty", "_typeof", "obj", "on", "event", "off", "matches", "_", "name", "n", "index", "extend", "callback", "x", "y", "clone", "$", "ghostEl", "dispatchEvent", "rootEl", "cloneEl", "oldIndex", "newIndex", "oldDraggableIndex", "newDraggableIndex", "putSortable", "option", "info", "defaults", "setData", "dragEl", "drop", "autoScroll", "version", "plugins", "pluginEvent", "plugin", "p", "_detectDirection", "_dragElInRowColumn", "_detectNearestEmptySortable", "_prepareGroup", "to", "from", "_hideGhostForTarget", "_unhideGhostForTarget", "nearestEmptyInsertDetectEvent", "_checkOutsideTargetEl", "dragStartFn", "e", "target", "after", "toArray", "destroy", "el", "onSpill", "callback", "event", "e", "event", "index", "config", "resolve", "PaymentProvidersFactory", "name", "config", "config", "e", "p", "self", "BaseProvider", "config", "GooglePayProvider", "config", "resolve", "self", "ApplePayProvider", "config", "session", "event", "self", "config", "Map", "title", "event", "event", "modalDialog", "index", "i", "qs", "r", "e", "_", "event", "i", "r", "e", "_", "createWebSocketURL", "a", "createConsumer", "getConfig", "INTERNAL", "Consumer", "name", "adapters", "now", "secondsSince", "ConnectionMonitor", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "extend", "Subscription", "SubscriptionGuarantor", "Subscriptions", "consumer", "event", "s", "subscription", "init_consumer", "createConsumer", "getDefaultLocale", "defaultLocale", "setDefaultLocale", "locale", "getLocaleData", "localesData", "addLocaleData", "localeData", "Error", "lowercaseLocaleLookup", "toLowerCase", "resolveLocale", "resolveLocale", "locale", "options", "arguments", "length", "undefined", "localeMatcher", "resolveLocaleLookup", "RangeError", "concat", "resolvedLocale", "resolveLocaleForData", "parts", "split", "pop", "join", "$", "af", "n", "ak", "am", "ar", "s", "String", "split", "t0", "Number", "n100", "slice", "ast", "v0", "be", "n10", "blo", "br", "n1000000", "bs", "i", "f", "i10", "i100", "f10", "f100", "ca", "i1000000", "ceb", "cs", "cy", "da", "dsb", "dz", "es", "ff", "fr", "ga", "gd", "he", "is", "t", "replace", "lt", "lv", "v", "length", "mk", "mt", "pl", "pt", "ro", "ru", "se", "si", "sl", "as", "az", "bal", "bg", "bn", "brx", "ce", "chr", "de", "doi", "ee", "el", "en", "et", "eu", "fa", "fi", "fil", "fo", "fur", "fy", "gl", "gu", "ha", "hi", "hr", "hsb", "hu", "hy", "ia", "id", "ig", "ii", "it", "ja", "jgo", "jv", "ka", "kea", "kk", "kl", "km", "kn", "ko", "ks", "ksh", "ku", "ky", "lb", "lkt", "lo", "ml", "mn", "mr", "ms", "my", "nb", "ne", "nl", "nn", "no", "nqo", "om", "or", "pa", "pcm", "ps", "rm", "sah", "sc", "sd", "sk", "so", "sq", "sr", "su", "sv", "sw", "syr", "ta", "te", "th", "ti", "tk", "tn", "to", "tr", "ug", "uk", "ur", "uz", "vec", "vi", "wae", "wo", "xh", "yi", "yo", "yue", "zh", "zu", "locale", "getLanguageFromLanguageTag", "languageTag", "match", "LANGUAGE_REG_EXP", "TypeError", "concat", "PluralRules", "locale", "options", "_classCallCheck", "locales", "supportedLocalesOf", "length", "RangeError", "type", "$", "PluralRuleFunctions", "getPluralRulesLocale", "_createClass", "key", "value", "select", "number", "filter", "parseUnit", "unit", "_typeof", "TypeError", "UNIT_ERROR", "RangeError", "concat", "length", "slice", "UNITS", "indexOf", "parseNumber", "value", "Number", "isFinite", "NUMBER_ERROR", "isNegativeZero", "number", "isNegative", "parseFormatArgs", "args", "NUMERIC_VALUES", "STYLE_VALUES", "LOCALE_MATCHER_VALUES", "RelativeTimeFormat", "locales", "arguments", "undefined", "options", "_classCallCheck", "numeric", "style", "localeMatcher", "push", "getDefaultLocale", "locale", "supportedLocalesOf", "Error", "PluralRules", "pluralRules", "console", "warn", "Intl", "NumberFormat", "numberFormat", "numberingSystem", "resolvedOptions", "resolveLocale", "_createClass", "key", "format", "_parseFormatArgs", "_parseFormatArgs2", "_slicedToArray", "getRule", "replace", "formatNumber", "Math", "abs", "formatToParts", "_parseFormatArgs3", "_parseFormatArgs4", "rule", "valueIndex", "type", "parts", "formatNumberToParts", "map", "part", "_objectSpread", "unitMessages", "getLocaleData", "message", "current", "pluralizedMessages", "quantifier", "select", "other", "String", "Array", "isArray", "filter", "addLocale", "addLocaleData", "setDefaultLocale", "Cache", "_classCallCheck", "cache", "_createClass", "key", "value", "get", "_len", "arguments", "length", "keys", "Array", "_key", "_i", "_keys", "_typeof", "put", "_len2", "_key2", "pop", "lastKey", "_i2", "_keys2", "locales", "isLocaleDataAvailable", "_iterator", "_createForOfIteratorHelperLoose", "_step", "done", "locale", "value", "parts", "split", "length", "pop", "join", "Error", "concat", "intlDateTimeFormatSupported", "isIntlAvailable", "Intl", "_typeof", "DateTimeFormat", "object", "isObject", "Array", "isArray", "steps", "gradation", "flavour", "labels", "units", "custom", "_typeof", "undefined", "constructor", "OBJECT_CONSTRUCTOR", "getSecondsInUnit", "unit", "minute", "hour", "day", "week", "month", "year", "step", "factor", "undefined", "getSecondsInUnit", "unit", "formatAs", "getRoundFunction", "round", "Math", "floor", "getDiffRatioToNextRoundedNumber", "step", "_ref", "prevStep", "timestamp", "now", "future", "round", "minTime", "id", "unit", "concat", "undefined", "threshold", "_typeof", "getMinTimeForUnit", "toUnit", "fromUnit", "formatAs", "test", "console", "warn", "JSON", "stringify", "_ref2", "toUnitAmount", "getSecondsInUnit", "fromUnitAmount", "getDiffRatioToNextRoundedNumber", "steps", "secondsPassed", "_ref", "now", "future", "round", "units", "getNextStep", "filterStepsByUnits", "step", "_getStep", "prevStep", "indexOf", "nextStep", "undefined", "_ref2", "length", "i", "getStepIndex", "granularity", "secondsPassedGranular", "getRoundFunction", "Math", "abs", "getStepDenominator", "options", "arguments", "minTime", "getStepMinTime", "_objectSpread", "timestamp", "filter", "_ref3", "unit", "formatAs", "unit", "timestamp", "_ref", "now", "round", "getSecondsInUnit", "unitDenominator", "future", "preciseAmount", "Math", "abs", "roundedAmount", "getRoundFunction", "getDiffToPreviousRoundedNumber", "getDiffToNextRoundedNumber", "getDiffRatioToNextRoundedNumber", "date", "step", "_ref", "prevStep", "nextStep", "now", "future", "round", "timestamp", "getTime", "getTimeToNextUpdateForUnit", "unit", "_getTimeToNextUpdateForUnit", "timeToStepChange", "getTimeToStepChange", "undefined", "timeToNextUpdate", "getTimeToNextUpdate", "getRoundFunction", "formatAs", "Math", "min", "getStepChangesAt", "currentOrNextStep", "_ref2", "minTime", "getStepMinTime", "INFINITY", "_ref3", "stepChangesAt", "YEAR", "getLocaleData", "locale", "localesData", "addLocaleData", "localeData", "Error", "init_LocaleDataStore", "init_round", "formatAs", "round_default", "init_round", "steps", "round", "labels", "init_round", "_objectSpread", "round", "steps", "filter", "step", "formatAs", "factor", "unit", "threshold", "threshold_for_now", "minute", "granularity", "hour", "threshold_for_minute", "day", "week", "month", "year", "approximate_default", "init_approximate", "gradation", "approximate", "flavour", "units", "gradation", "approximate", "flavour", "units", "getDate", "value", "Date", "init_helpers", "init_helpers", "steps", "formatters", "monthAndDay", "yearMonthAndDay", "formatAs", "minTime", "timestamp", "_ref", "future", "getMinTimeForUnit", "format", "value", "locale", "dayMonth", "Intl", "DateTimeFormat", "month", "day", "getDate", "_ref2", "maxFittingNow", "Date", "getFullYear", "getTime", "minFittingNow", "dayMonthYear", "year", "intlDateTimeFormatSupported", "push", "labels", "_objectSpread", "twitter", "steps", "formatAs", "concat", "_objectSpread", "twitter", "steps", "filter", "step", "formatAs", "_objectSpread", "twitterMinute", "steps", "formatAs", "concat", "_objectSpread", "twitter", "steps", "filter", "step", "formatAs", "map", "minTime", "minute", "steps", "formatAs", "labels", "_objectSpread", "mini", "steps", "formatAs", "concat", "_objectSpread", "mini", "steps", "filter", "step", "formatAs", "_objectSpread", "miniMinute", "steps", "formatAs", "concat", "style", "round", "roundMinute", "approximate", "approximateTime", "mini", "miniNow", "miniMinute", "miniMinuteNow", "twitter", "twitterNow", "twitterMinute", "twitterMinuteNow", "twitterFirstMinute", "init_round", "init_approximate", "getTimestamp", "input", "constructor", "Date", "isMockedDate", "getTime", "Error", "concat", "_typeof", "object", "getTimeIntervalMeasurementUnits", "allowedUnits", "labels", "nowLabel", "units", "Object", "keys", "push", "filter", "unit", "indexOf", "getNowLabel", "nowLabels", "longLabels", "future", "now", "past", "second", "current", "isStyle", "variable", "isStyleObject", "TimeAgo", "defaultLocale", "defaultLocaleHasBeenSpecified", "init_LocaleDataStore", "locales", "arguments", "length", "undefined", "_ref", "polyfill", "_classCallCheck", "locale", "chooseLocale", "getDefaultLocale", "getLocaleData", "Intl", "NumberFormat", "numberFormat", "IntlRelativeTimeFormat", "RelativeTimeFormat", "IntlPluralRules", "PluralRules", "RelativeTimeFormatPolyfill", "relativeTimeFormatCache", "Cache", "pluralRulesCache", "_createClass", "key", "value", "format", "style", "options", "defaultStyle", "getStyleByName", "timestamp", "_this$getLabels", "getLabels", "flavour", "labelsType", "secondsPassed", "custom", "date", "time", "elapsed", "round", "_getStep", "getStep", "gradation", "steps", "getNextStep", "_getStep2", "_slicedToArray", "prevStep", "step", "nextStep", "formattedDate", "formatDateForStep", "getTimeToNextUpdate", "timeToNextUpdate", "_ref2", "_this", "formatAs", "formatValue", "JSON", "stringify", "amount", "Math", "abs", "getStepDenominator", "granularity", "getRoundFunction", "valueForFormatting", "sign", "getFormatter", "_ref3", "getFormattingRule", "replace", "formatNumber", "formattingRules", "_ref4", "pastOrFuture", "quantifierRules", "quantifier", "getPluralRules", "select", "other", "number", "String", "get", "put", "map", "localeData", "_iterator", "_createForOfIteratorHelperLoose", "_step", "done", "_labelsType", "setDefaultLocale", "addDefaultLocale", "console", "error", "addLocale", "addLocaleData", "addLabels", "name", "init_consumer", "color", "name", "names", "title", "index", "csrfToken", "from", "to", "resolve", "href", "event", "event", "i", "rng", "getRandomValues", "randomUUID", "rng", "i", "v4", "init_consumer", "e", "humanizeString", "c", "option", "serviceType", "index", "noop", "instances", "index", "event", "address", "dispatch", "set", "index", "forms", "title", "import_md5", "eachTableHeader", "callback", "index", "calculateTableKey", "name", "MD5", "calculateTableColumns", "initTable", "m", "import_lodash", "_", "e", "name", "matches", "_error", "dispatch", "event", "index", "sort", "plugins", "e", "onDragEnd", "t", "plugin", "a", "b", "auto_default", "Chart", "registerables", "drawChart", "auto_default", "exports", "module", "global", "isNode", "createStore", "queries", "actions", "state", "getState", "processActionQueue", "queue", "processDispatchQueue", "data", "dispatch", "query", "defineProperty", "forin", "createObject", "attr", "name", "isSVGElement", "createElement", "appendChild", "index", "appendChildView", "removeChildView", "isBrowser", "getViewRect", "expandRect", "calculateRectSize", "isNumber", "thereYet", "spring", "interpolate", "f", "setTarget", "get", "easeLinear", "t", "easeInOutQuad", "tween", "start", "p", "set", "animator", "createAnimator", "addGetSet", "o", "getter", "setter", "animations", "write", "destroy", "addEvent", "fn", "removeEvent", "listeners", "event", "apis", "isDefined", "defaults", "styles", "getOffset", "getScale", "getRect", "propsHaveChanged", "applyStyles", "updateRect", "createView", "create", "getElement", "getChildViews", "getReference", "createChildView", "store", "props", "getStyle", "_read", "_write", "_destroy", "is", "a", "b", "createPainter", "id", "setTimerType", "requestTick", "cancelTick", "tick", "read", "createRoute", "root", "insertBefore", "insertAfter", "isArray", "isEmpty", "trim", "toString", "toArray", "isBoolean", "toBoolean", "isString", "toNumber", "toInt", "toFloat", "isInt", "toBytes", "isFunction", "toFunctionReference", "createServerAPI", "createAction", "toServerAPI", "isNull", "isObject", "isAPI", "getType", "replaceSingleQuotes", "e", "convertTo", "getValueByType", "createOption", "createOptions", "createInitialState", "fromCamels", "createOptionAPI", "createOptionActions", "createOptionQueries", "getUniqueId", "_typeof", "obj", "i", "resolve", "arg", "info", "error", "self", "_classCallCheck", "_defineProperties", "_createClass", "_defineProperty", "_extends", "_objectSpread", "ownKeys", "_objectSpread2", "_inherits", "_setPrototypeOf", "_getPrototypeOf", "_construct", "Parent", "args", "Class", "_wrapNativeSuper", "_objectWithoutPropertiesLoose", "_objectWithoutProperties", "_assertThisInitialized", "_possibleConstructorReturn", "_get", "target", "property", "receiver", "value", "s", "_slicedToArray", "_arrayWithHoles", "_iterableToArrayLimit", "_nonIterableRest", "_e", "it", "_toPrimitive", "res", "_toPropertyKey", "desc", "v", "r", "O", "elements", "F", "j", "k", "other", "re", "groups", "_", "g", "arrayRemove", "run", "on", "off", "fire", "copyObjectPropertiesToObject", "createItemAPI", "item", "removeReleasedItems", "getNonNumeric", "getDecimalSeparator", "getThousandsSeparator", "applyFilterChain", "utils", "applyFilters", "addFilter", "extendDefaultOptions", "defaultOptions", "getOptions", "setOptions", "getItemByQuery", "getNumericAspectRatioFromString", "getActiveItems", "canUpdateFileInput", "isItemInErrorState", "isItemInBusyState", "isItemInReadyState", "isAsync", "option", "hasRoomForItem", "limit", "arrayInsert", "insertItem", "isBase64DataURI", "getFilenameFromURL", "getExtensionFromFilename", "guesstimateExtension", "leftPad", "getDateString", "getFileFromBlob", "blob", "file", "getBlobBuilder", "createBlob", "getBlobFromByteStringWithMimeType", "getMimeTypeFromBase64DataURI", "getBase64DataFromBase64DataURI", "getByteStringFromBase64DataURI", "getBlobFromBase64DataURI", "getFileFromBase64DataURI", "getFileNameFromHeader", "matches", "getFileSizeFromHeader", "getTranfserIdFromHeader", "getFileInfoFromHeaders", "createFileLoader", "getProgress", "abort", "load", "loadURL", "isGet", "sendRequest", "process", "createResponse", "createTimeoutResponse", "hasQS", "buildURL", "createFetchFunction", "headers", "processFileChunked", "requestTransferId", "requestTransferOffset", "completeProcessingChunks", "canProcessChunk", "processChunk", "chunk", "ondata", "onerror", "onload", "loaded", "retryProcessChunk", "updateTotalProgress", "processChunks", "abortChunks", "offset", "createFileProcessorFunction", "createProcessorFunction", "createRevertFunction", "getRandomNumber", "createPerceivedPerformanceUpdater", "clear", "createFileProcessor", "progressFn", "completeFn", "reset", "getFilenameWithoutExtension", "createFileStub", "isFile", "deepCloneObject", "createItem", "setStatus", "getFileExtension", "getFileType", "getFileSize", "getFile", "success", "retryLoad", "abortLoad", "serverFileReference", "requestProcessing", "abortProcessing", "abortProcessingRequestComplete", "revert", "key", "getMetadata", "extend", "release", "getItemIndexByQuery", "getItemById", "fetchBlob", "getDomainFromURL", "isExternalURL", "dynamicLabel", "isMockItem", "listUpdated", "optionalPromise", "sortItems", "getItemByQueryFromState", "upload", "isValidFile", "handleAdd", "loadComplete", "fetch", "result", "processNow", "processNext", "failure", "noop", "removeFromView", "handleRevert", "formatFilename", "text", "polarToCartesian", "describeArc", "x", "y", "percentageArc", "from", "to", "coordinates", "toNaturalFileSize", "removeDecimalsWhenZero", "updateFile", "updateFileSizeOnError", "toPercentage", "didSetItemLoadProgress", "title", "didSetItemProcessProgress", "didRequestItemProcessing", "didAbortItemProcessing", "didCompleteItemProcessing", "calculateFileInfoOffset", "calculateButtonWidth", "calculateFileVerticalCenterOffset", "calculateFileHorizontalCenterOffset", "getLoadIndicatorAlignment", "getProcessIndicatorAlignment", "getRemoveIndicatorAligment", "buttonFilter", "map", "action", "didLoadItem", "createSection", "createDragHelper", "grab", "drag", "drop", "cancel", "getItemIndexByPosition", "l", "addItemView", "now", "moveItem", "introItemView", "removeItemView", "getItemHeight", "getItemWidth", "dragItem", "oldIndex", "location", "currentIndex", "dragHeight", "itemHeight", "offsetY", "filterSetItemActions", "storeDragCoordinates", "clearDragCoordinates", "attrToggle", "resetFileInput", "setAcceptedFileTypes", "toggleAllowMultiple", "toggleDirectoryFilter", "toggleDisabled", "toggleRequired", "setCaptureMethod", "updateRequiredStatus", "updateFieldValidityStatus", "updateLabelValue", "addBlob", "moveBlob", "hideBlob", "explodeBlob", "setInputFiles", "getField", "syncFieldPositionsWithItems", "didReorderItems", "didAddItem", "didPrepareOutput", "didSetDisabled", "didRemoveItem", "didDefineValue", "getRootNode", "guesstimateMimeType", "requestDataTransferItems", "hasFiles", "getFiles", "isFileSystemItem", "getFilesFromItem", "getFilesInDirectory", "resolveIfDone", "readEntries", "readBatch", "entry", "correctMissingFileType", "isDirectoryEntry", "isEntry", "getAsEntry", "getLinks", "getLinksFromTransferURLData", "getLinksFromTransferMetaData", "eventPosition", "createDragNDropClient", "getDragNDropObserver", "createDragNDropObserver", "addListener", "elementFromPoint", "isEventTarget", "setDropEffect", "dragenter", "dragover", "dragleave", "createHopper", "handlePaste", "listen", "unlisten", "createPaster", "cb", "assist", "listModified", "isUsingFilePond", "itemAdded", "itemRemoved", "itemProcessed", "itemProcessedUndo", "itemError", "toCamels", "debounce", "prevent", "list", "panel", "history", "calculateListItemMargin", "calculateListHeight", "calculateRootBoundingBoxHeight", "exceedsMaxFiles", "getDragIndex", "toggleDrop", "toggleBrowse", "togglePaste", "createApp", "visibilityHandler", "resizeHandler", "createEvent", "exposeEvent", "routeActionsToEvents", "route", "prepareFile", "addFile", "isFilePondFile", "removeFile", "addFiles", "processFile", "prepareFiles", "processFiles", "removeFiles", "q", "sort", "createAppObject", "lowerCaseFirstLetter", "attributeNameToPropertyName", "mapObject", "getAttributesAsObject", "createAppAtElement", "createAppAPI", "replaceInString", "match", "createWorker", "post", "loadImage", "renameFile", "copyFile", "createAppPlugin", "plugin", "isOperaMini", "hasPromises", "hasBlobSlice", "hasCreateObjectURL", "hasVisibility", "hasTiming", "hasCSSSupports", "isIE11", "updateOptionTypes", "app", "parse", "find", "plugins", "abort", "event", "forms", "t", "form", "m", "index", "e", "resolve", "types", "name", "e", "event", "match", "drawChart", "auto_default", "s", "drawChart", "auto_default", "exports", "module", "__webpack_require__", "ClipboardActionCut", "fakeCopyAction", "ClipboardActionCopy", "_typeof", "obj", "ClipboardActionDefault", "_classCallCheck", "_defineProperties", "i", "_createClass", "_inherits", "_setPrototypeOf", "o", "p", "_createSuper", "_isNativeReflectConstruct", "_getPrototypeOf", "_possibleConstructorReturn", "self", "_assertThisInitialized", "e", "Clipboard", "destroy", "action", "closest", "callback", "delegate", "elements", "is", "E", "name", "exports", "module", "global", "__assign", "t", "s", "i", "n", "p", "event", "config", "_", "e", "exports", "module", "t", "e", "i", "s", "r", "a", "ResizableConstants", "WidthsData", "PointerData", "ResizableEventData", "Utilities", "m", "UtilitiesDOM", "i", "ResizableOptions", "ResizableTableColumns", "index", "_a", "event", "ZERO_WIDTH_UNICODE_CHAR", "e", "t", "i", "n", "logger", "isEnabled", "window", "TAGIFY_DEBUG", "log", "_len", "arguments", "length", "args", "Array", "_key", "console", "this", "_to_consumable_array", "warn", "sameStr", "s1", "s2", "caseSensitive", "trim", "toLowerCase", "removeCollectionProp", "collection", "unwantedProps", "isArray", "map", "v", "omit", "obj", "props", "p", "newObj", "indexOf", "parseHTML", "s", "DOMParser", "parseFromString", "body", "firstElementChild", "getfirstTextNode", "elm", "action", "nodeType", "escapeHTML", "replace", "isObject", "type", "Object", "prototype", "toString", "call", "split", "slice", "extend", "o", "o1", "o2", "copy", "a", "b", "key", "hasOwnProperty", "assign", "concatWithoutDups", "newArr", "existingObj", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "undefined", "_step", "_iterator", "Symbol", "iterator", "arr", "value", "_iteratorNormalCompletion1", "_didIteratorError1", "_iteratorError1", "_step1", "_iterator1", "item", "push", "includes", "err", "return", "unaccent", "String", "normalize", "isChromeAndroidBrowser", "test", "navigator", "userAgent", "getUID", "c", "crypto", "getRandomValues", "Uint8Array", "isNodeTag", "node", "belongs", "isNodeBelongsToThisTagifyInstance", "isTag", "classList", "contains", "settings", "classNames", "tag", "isWithinNodeTag", "closest", "tagSelector", "namespaceSelector", "DOM", "scope", "injectAtCaret", "content", "range", "selection", "getSelection", "getRangeAt", "document", "createTextNode", "deleteContents", "insertNode", "getSetTagData", "tagElm", "data", "override", "__tagifyTagData", "placeCaretAfterNode", "parentNode", "nextSibling", "sel", "rangeCount", "setStartAfter", "collapse", "removeAllRanges", "addRange", "fixCaretBetweenTags", "tags", "TagifyHasFocuse", "forEach", "previousSibling", "textNode", "before", "DEFAULTS", "delimiters", "pattern", "tagTextProp", "maxTags", "Infinity", "callbacks", "addTagOnBlur", "addTagOn", "onChangeAfterBlur", "duplicates", "whitelist", "blacklist", "enforceWhitelist", "userInput", "focusable", "focusInputOnRemove", "keepInvalidTags", "createInvalidTags", "mixTagsAllowedAfter", "mixTagsInterpolator", "backspace", "skipInvalid", "pasteAsTags", "editTags", "clicks", "keepInvalid", "transformTag", "a11y", "focusableTags", "mixMode", "insertAfterTag", "autoComplete", "enabled", "rightKey", "tabKey", "namespace", "selectMode", "input", "focus", "tagNoAnimation", "tagInvalid", "tagNotAllowed", "scopeLoading", "hasMaxTags", "hasNoTags", "empty", "inputInvalid", "dropdown", "dropdownWrapper", "dropdownHeader", "dropdownFooter", "dropdownItem", "dropdownItemActive", "dropdownItemHidden", "dropdownItemSelected", "dropdownInital", "tagText", "tagX", "tagLoading", "tagEditing", "tagFlash", "tagHide", "classname", "maxItems", "searchKeys", "fuzzySearch", "accentedSearch", "includeSelectedTags", "highlightFirst", "closeOnSelect", "clearOnSelect", "position", "appendTarget", "hooks", "beforeRemoveTag", "Promise", "resolve", "beforePaste", "suggestionClick", "beforeKeyDown", "suggestionsMethods", "events", "binding", "bindUnbind", "_CB", "_CBR", "listeners", "bind", "onKeyDown", "onMouseOver", "onMouseLeave", "onClick", "onScroll", "state", "hasFocus", "composing", "_s", "selectedElm", "querySelector", "dropdownItemActiveSelector", "selectedElmData", "getSuggestionDataByNode", "isMixMode", "mode", "isSelectMode", "tagify", "then", "result", "preventDefault", "dropdownItems", "_this", "getAllSuggestionsRefs", "actionUp", "getNextOrPrevOption", "matches", "dropdownItemSelector", "highlightOption", "itemsPerPage", "Math", "floor", "clientHeight", "offsetHeight", "isPageUp", "currentIndex", "targetIndex", "max", "min", "hide", "actions", "ArrowLeft", "shouldAutocompleteOnKey", "editing", "getMappedValue", "autoCompleteData", "autocomplete", "set", "selectOption", "setTimeout", "tagData", "suggestionElm", "nextOrPrevOption", "nextOrPrevOptionValue", "getAttribute", "getSuggestionNodeByValue", "addTags", "inputText", "catch", "raw", "charCodeAt", "removeTags", "editTag", "ddItem", "target", "button", "pos", "scrollTop", "scrollHeight", "trigger", "percentage", "round", "refilter", "query", "suggestedListItems", "filterListItems", "fill", "find", "selected", "next", "selectedIdx", "findIndex", "adjustScroll", "itemData", "className", "ddItemElm", "remove", "removeAttribute", "ddItemData", "suggest", "add", "setAttribute", "offsetTop", "event", "onSelect", "isNoMatch", "normalizedTagData", "normalizeTags", "onEditTagDone", "__isValid", "toggleFocusClass", "addEventListener", "fillHeaderFooter", "once", "selectAll", "onlyRendered", "tagsToAdd", "suggestions", "options", "whitelistItem", "valueIsInWhitelist", "searchBy", "isDuplicate", "niddle", "l", "startsWithMatch", "exactMatch", "_searchKeys", "keys", "some", "k", "_sd", "exact", "reduce", "values", "every", "q", "isTagDuplicate", "exactMatchesList", "sortby", "list", "unshift", "d", "suggestionsCount", "hasCustomSort", "filter", "_this1", "filteredList", "concat", "mapValueTo", "createListHTML", "sugegstionsList", "suggestion", "idx", "mappedValue", "templates", "apply", "_object_spread_props", "join", "M", "N", "A", "initDropdown", "_dropdown", "refs", "__tagify", "parseTemplate", "getHeaderRef", "getFooterRef", "querySelectorAll", "show", "firstListItem", "firstListItemValue", "noMatchListItem", "allowNewTags", "noWhitelist", "isManual", "dropdownItemNoMatch", "isLoading", "readonly", "clearTimeout", "dropdownHide__bindEventsTimeout", "visible", "setStateSelection", "render", "overrideManual", "_this_DOM", "removeEventListener", "removeChild", "flaggedTags", "baseOffset", "toggle", "getAppendTarget", "height", "clone", "ddHeight", "cloneNode", "style", "cssText", "appendChild", "HTMLContent", "dropdownContent", "innerHTML", "newHeaderElem", "newFooterElem", "headerRef", "footerRef", "replaceChild", "rect", "top", "bottom", "left", "width", "ancestorsOffsets", "isPlacedAbove", "hasSpaceOnRight", "cssTop", "cssLeft", "ddElm", "isRTL", "RTL", "isDefaultAppendTarget", "isSelfAppended", "appendTargetScrollTop", "pageYOffset", "root", "fullscreenElement", "webkitFullscreenElement", "documentElement", "viewportHeight", "viewportWidth", "clientWidth", "innerWidth", "positionTo", "ddTarget", "r2", "r", "startContainer", "offset", "startOffset", "createRange", "setStart", "setEnd", "getBoundingClientRect", "right", "offsetLeft", "accumulatedAncestorsScrollTop", "getAccumulatedAncestorsScrollTop", "ceil", "placeAbove", "pageXOffset", "C", "STORE_KEY", "TEXTS", "exceed", "duplicate", "notAllowed", "wrapper", "disabled", "required", "placeholder", "param", "title", "class", "getAttributes", "_t", "hasMore", "R", "F", "H", "B", "W", "U", "K", "customBinding", "customEventsList", "name", "on", "mainEvents", "eventName", "main", "bindGlobal", "isJQueryPlugin", "jQuery", "originalInput", "removeAllTags", "keydown", "onKeydown", "click", "onClickScope", "dblclick", "onDoubleClickScope", "paste", "onPaste", "drop", "onDrop", "compositionstart", "onCompositionStart", "compositionend", "onCompositionEnd", "inputMutationObserver", "MutationObserver", "onInputDOMChange", "disconnect", "observe", "childList", "bindOriginaInputListener", "delay", "DELAY", "clearInterval", "originalInputValueObserverInterval", "setInterval", "observeOriginalInputValue", "unbind", "global", "isIE", "cb", "onWindowKeyDown", "onFocusBlur", "onClickAnywhere", "useCapture", "unbindGlobal", "_this_value_", "_this_value", "nodeTag", "relatedTarget", "targetIsTagNode", "isTargetXBtn", "isFocused", "lostFocus", "Date", "text", "textContent", "currentDisplayValue", "ddEnabled", "eventData", "isTargetSelectOption", "isTargetAddNewBtn", "addNew", "postUpdate", "triggerChangeEvent", "dropdownCanBeShown", "tagTextSelector", "setRangeAtStartEnd", "loading", "firstTagNode", "getTagElms", "nextTag", "focusedElm", "activeElement", "isBelong", "isInputNode", "isReadyOnlyTag", "hasAttribute", "isDropdownVisible", "nextElementSibling", "targetIsRemoveBtn", "deleteKeyTagDetected", "anchorOffset", "anchorNode", "prevAnchorSibling", "isCaretAfterTag", "el", "createElement", "enc", "innerText", "lastTagElems", "tagBeforeCaret", "tagElmToBeDeleted", "firstTextNodeBeforeTag", "isZWS", "nodeValue", "fromCharCode", "previousElementSibling", "_instanceof", "Element", "nodeName", "collapseToEnd", "isManualDropdown", "blur", "inputSuggestion", "thingToAdd", "onInput", "onMixTagsInput", "showSuggestions", "inputElm", "validation", "validateTag", "toggleScopeValidation", "isValid", "search", "rangeText", "match", "matchedPatternCount", "matchFlaggedTag", "matchDelimiters", "lastTagsCount", "tagsElems", "fragment", "createDocumentFragment", "remainingTagsValues", "inputType", "createTagElem", "childNodes", "lastChild", "update", "withoutChangeEvent", "cloneRange", "focusNode", "endOffset", "lastIndexOf", "prefix", "onInputIE", "destroy", "tagifyValue", "loadOriginalValues", "closestTagifyDropdownElem", "dropdownSelector", "timeDiffFocus", "index", "getNodeIndex", "fixFirefoxLastTagNoCaret", "clipboardData", "pastedText", "getData", "onEditTagInput", "editableElm", "_obj", "tagElmIdx", "textValue", "dataForChangedProp", "_define_property", "__tagId", "editTagChangeDetected", "originalIsValid", "newValue", "onEditTagPaste", "newNode", "onEditTagClick", "onEditTagFocus", "onEditTagBlur", "isRelatedTargetNodeTag", "newTagData", "originalData", "__originalData", "hasChanged", "_obj1", "message", "onEditTagkeydown", "__originalHTML", "EDITED_TAG_BLUR_DELAY", "isEditingTag", "editable", "m", "record", "addedNodes", "addedNode", "outerHTML", "replaceWith", "newlineText", "nextNode", "anythingAfterNode", "removedNodes", "removedNode", "lastInputChild", "X", "J", "G", "$", "Q", "Tagify", "mockInstance", "Proxy", "get", "id", "instance", "callbacksPerType", "addRemove", "op", "ev", "removeAllCustomListeners", "entries", "cbArr", "off", "opts", "cloneData", "triggerHandler", "cloneEvent", "prop", "HTMLElement", "CustomEvent", "detail", "dispatchEvent", "isFirefox", "documentMode", "getPersistedData", "localStorage", "persistedData", "customKey", "getItem", "JSON", "parse", "setPersistedData", "setItem", "stringify", "Event", "clearPersistedData", "base", "removeItem", "applySettings", "build", "getCSSVars", "autofocus", "helpers", "dataProps", "template", "setContentEditable", "generateClassSelectors", "currentName", "defineProperty", "mergedDefaults", "attrVal", "RegExp", "_delimiters", "_object_spread", "texts", "persistedWhitelist", "attrs", "getCustomAttributes", "propName", "output", "compStyle", "getComputedStyle", "CSSVars", "tagHideTransition", "unit", "pop", "getPropertyValue", "labelWrapper", "integrated", "originalInput_tabIndex", "tabIndex", "inputSelector", "insertBefore", "_this_DOM_scope_parentNode", "_this_listeners_main", "_this_listeners", "blockChangeEvent", "persistedOriginalValue", "parseMixTags", "tagName", "insertAdjacentHTML", "lastOriginalValueReported", "clonedEvent", "toggleClass", "force", "setPlaceholder", "str", "changed", "bubbles", "simulated", "_valueTracker", "setValue", "random", "start", "getTagTextNode", "setTagTextNode", "HTML", "getLastTag", "tagIdx", "skipValidation", "editTagToggleValidity", "removeTagsFromValue", "previousData", "replaceTag", "reCheckInvalidTags", "getInvalidTagAttrs", "newTagElm", "updateValueByDOMTags", "clsNames", "skipNodesWithClassNames", "cls", "injectedNode", "_this_state_selection", "insertedNodes", "appendMixTags", "caretTarget", "updateDOM", "hideDropdown", "validate", "source", "charAt", "suggestedText", "suggestionStart", "substr", "suggestionTrimmed", "substring", "dataSuggest", "replaceTextWithNode", "getTagIdx", "classess", "_sc", "tagNodes", "tagId", "dupsCount", "done", "getTagIndexByValue", "indices", "isCaseSensitive", "getTagElmByValue", "flashTag", "isTagBlacklisted", "x", "isTagWhitelisted", "getWhitelistItem", "_wi", "_wiv", "setReadonly", "attrribute", "contentEditable", "setDisabled", "isDisabled", "tagsItems", "_this_settings", "whitelistMatches", "whitelistWithProps", "isCollection", "mapStringToCollection", "acc", "trimmed", "itemCopy", "whitelistMatchesValues", "filteredItem", "matchObj", "tagsDataSet", "textProp", "preInterpolated", "maxTagsReached", "Error", "newWrapperNode", "strToReplace", "nodeToReplace", "nodeAtCaret", "firstSplitOffset", "splitText", "prepareNewTagNode", "aggregatedInvalidInput", "tagElmParams", "__preInvalidData", "postProcessNewTagNode", "selectTag", "lastTagElm", "appendTag", "addEmptyTag", "initialData", "clearInput", "tagElems", "frag", "addedTags", "addMixTags", "newTagNode", "tagsData", "prefixedTextToTag", "children", "savedRange", "hasSavedSelection", "tagsPayload", "_this_state_tag", "newTag", "createdFromDelimiters", "insertBeforeNode", "extraData", "templateData", "textnode", "iter", "createNodeIterator", "NodeFilter", "SHOW_TEXT", "tagValidation", "tagElms", "silent", "tranDuration", "tagsToRemove", "elms", "__removed", "removeNode", "parseFloat", "clientTop", "reason", "removeTagsFromDOM", "splice", "updateCallback", "hasValue", "setOriginalInputValue", "debouncedUpdateTimeout", "inputValue", "getInputValue", "getCleanValue", "getMixedTagsAsString", "originalInputValueFormat", "that", "_interpolator", "iterateChildren", "rootNode", "removeTag", "e", "CustomEvent", "event", "name", "option", "confirm", "callback", "href", "FetchRequest", "navigator", "start", "name", "cspNonce", "event", "resolve", "match", "i", "_", "elements", "nonce", "callback", "submitter", "config", "location", "delegate", "toCacheKey", "index", "cookie", "x", "y", "clone", "defaults", "ctx", "morphChildren", "findBestMatch", "e", "morphNode", "_resolve", "createMorphContext", "normalizeElement", "normalizeParent", "callbacks", "option", "_error", "session", "visit", "href", "recentRequests", "Turbo", "document", "c", "createConsumer", "m", "x", "event", "event", "submitter", "FetchResponse", "nonce", "name", "cookie", "FetchRequest", "fetch", "FetchResponse", "_", "import_qs", "isArray", "isFunction", "extend", "i", "j", "s", "matches", "year", "month", "day", "defaultOptions", "hideLegend", "setTitle", "setMin", "setMax", "setStacked", "setXtitle", "setYtitle", "a", "b", "minute", "d", "hour", "week", "isDate", "isNumber", "round", "option", "title", "hex", "x", "v", "i$1", "i$2", "j$1", "colors", "color", "backgroundColor", "minTime", "maxTime", "destroy", "defaultExport", "renderLineChart", "renderScatterChart", "renderPieChart", "renderColumnChart", "d$1", "d2", "renderBarChart", "renderAreaChart", "drawChart", "callback", "config", "createDataTable", "i$3", "r", "e", "Chart", "getElement", "getData", "LineChart", "PieChart", "ColumnChart", "BarChart", "AreaChart", "GeoChart", "ScatterChart", "BubbleChart", "Timeline", "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", "getSizeForArea", "chartArea", "field", "getDatasetArea", "getDatasetClipArea", "_clip", "disabled", "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", "datasetElementType", "dataElementType", "_ctx", "ctx", "_cachedDataOpts", "getMeta", "_type", "_parsing", "_data", "_objectData", "_sharedOptions", "_drawStart", "_drawCount", "enableOptionSharing", "supportsDecimation", "$context", "_syncList", "initialize", "linkScales", "addElements", "fill", "isPluginEnabled", "console", "warn", "updateIndex", "getDataset", "chooseId", "xid", "xAxisID", "valueOrDefault", "yid", "yAxisID", "rid", "rAxisID", "indexAxis", "iid", "iAxisID", "vid", "vAxisID", "getScaleForId", "rScale", "datasets", "getDatasetMeta", "scaleID", "_getOtherScale", "reset", "_destroy", "unlistenArrayEvents", "_dataCheck", "isExtensible", "listenArrayEvents", "buildOrUpdateElements", "resetNewElements", "stackChanged", "oldStacked", "_resyncElements", "scopeKeys", "datasetScopeKeys", "scopes", "getOptionScopes", "createResolver", "getContext", "parsing", "parse", "count", "sorted", "_sorted", "prev", "parseArrayData", "parseObjectData", "parsePrimitiveData", "isNotInOrderComparedToPrev", "labels", "getLabels", "singleScale", "xAxisKey", "yAxisKey", "resolveObjectKey", "getParsed", "getDataElement", "updateRangeFromParsed", "range", "parsedValue", "NaN", "getMinMax", "otherScale", "otherMin", "otherMax", "_skip", "getAllParsedValues", "getMaxOverflow", "getLabelAndValue", "label", "getLabelForValue", "_clip", "clip", "elements", "area", "chartArea", "drawActiveElementsOnTop", "getStyle", "resolveDatasetElementOptions", "resolveDataElementOptions", "context", "_resolveElementOptions", "elementType", "cache", "cacheKey", "sharing", "defined", "datasetElementScopeKeys", "prefixes", "names", "resolveNamedOptions", "freeze", "_resolveAnimations", "transition", "datasetAnimationScopeKeys", "_cacheable", "getSharedOptions", "includeOptions", "sharedOptions", "_animationsDisabled", "_getSharedOptions", "firstOpts", "previouslySharedOptions", "updateSharedOptions", "updateElement", "_setStyle", "removeHoverStyle", "setHoverStyle", "_removeDatasetHoverStyle", "_setDatasetHoverStyle", "arg1", "arg2", "numMeta", "numData", "_insertElements", "_removeElements", "move", "arr", "updateElements", "removed", "splice", "_sync", "args", "_dataChanges", "_onDataPush", "arguments", "_onDataPop", "_onDataShift", "_onDataSplice", "newCount", "_onDataUnshift", "getAllScaleValues", "_cache", "$bar", "visibleMetas", "concat", "_arrayUnique", "sort", "a", "computeMinSampleSize", "_length", "curr", "updateMinAndPrev", "abs", "getPixelForValue", "ticks", "getPixelForTick", "computeFitCategoryTraits", "ruler", "stackCount", "thickness", "barThickness", "ratio", "isNullOrUndef", "categoryPercentage", "barPercentage", "chunk", "pixels", "computeFlexCategoryTraits", "next", "percent", "parseFloatBar", "entry", "startValue", "endValue", "barStart", "barEnd", "_custom", "parseValue", "parseArrayOrPrimitive", "isFloatBar", "custom", "barSign", "actualBase", "isHorizontal", "borderProps", "horizontal", "base", "setBorderSkipped", "edge", "borderSkipped", "enableBorderRadius", "parseEdge", "swap", "startEnd", "orig", "v1", "v2", "v", "setInflateAmount", "inflateAmount", "BarController", "grouped", "numbers", "overrides", "_index_", "offset", "grid", "_value_", "beginAtZero", "obj", "bars", "getBasePixel", "_getRuler", "vpixels", "head", "_calculateBarValuePixels", "ipixels", "_calculateBarIndexPixels", "center", "height", "width", "_getStacks", "last", "currentParsed", "iScaleValue", "skipNull", "find", "val", "isNaN", "indexOf", "_getStackCount", "_getAxisCount", "_getAxis", "getFirstScaleIdForIndexAxis", "indexScaleId", "firstScaleAxisId", "_getStackIndex", "name", "_startPixel", "_endPixel", "baseValue", "minBarLength", "floating", "getDataVisibility", "startPixel", "getPixelForDecimal", "endPixel", "getValueForPixel", "halfGrid", "getLineWidthForValue", "maxBarThickness", "Infinity", "axisCount", "axisID", "axisNumber", "stackIndex", "rects", "BubbleController", "radius", "points", "point", "iPixel", "vPixel", "skip", "getRatioAndOffset", "rotation", "circumference", "cutout", "ratioX", "ratioY", "offsetX", "offsetY", "TAU", "startAngle", "endAngle", "startX", "cos", "startY", "sin", "endX", "endY", "calcMax", "angle", "_angleBetween", "calcMin", "maxX", "maxY", "HALF_PI", "minX", "PI", "minY", "DoughnutController", "animateRotate", "animateScale", "spacing", "descriptors", "_scriptable", "_indexable", "startsWith", "aspectRatio", "plugins", "legend", "generateLabels", "pointStyle", "map", "style", "text", "fillStyle", "backgroundColor", "strokeStyle", "borderColor", "fontColor", "lineWidth", "borderWidth", "onClick", "e", "legendItem", "toggleDataVisibility", "innerRadius", "outerRadius", "getter", "_getRotation", "toRadians", "_getCircumference", "_getRotationExtents", "isDatasetVisible", "arcs", "getMaxBorderWidth", "getMaxOffset", "maxSize", "toPercentage", "chartWeight", "_getRingWeight", "maxWidth", "maxHeight", "maxRadius", "toDimension", "radiusLength", "_getVisibleDatasetWeightTotal", "total", "calculateTotal", "_getRingWeightOffset", "_circumference", "calculateCircumference", "animationOpts", "centerX", "centerY", "arc", "metaData", "formatNumber", "locale", "borderAlign", "hoverBorderWidth", "hoverOffset", "ringWeightOffset", "weight", "LineController", "showLine", "spanGaps", "line", "_dataset", "animationsDisabled", "_getStartAndCountOfVisiblePoints", "_scaleRangesChanged", "_datasetIndex", "_decimated", "segment", "animated", "maxGapLength", "isNumber", "directUpdate", "pointsCount", "prevParsed", "nullData", "border", "firstPoint", "lastPoint", "updateControlPoints", "PolarAreaController", "angleLines", "display", "circular", "pointLabels", "_parseObjectDataRadialScale", "bind", "_updateRadius", "minSize", "cutoutPercentage", "getVisibleDatasetCount", "xCenter", "yCenter", "datasetStartAngle", "getIndexAngle", "defaultAngle", "countVisibleElements", "_computeAngle", "getDistanceFromCenterForValue", "PieController", "RadarController", "_fullLoop", "pointPosition", "getPointPositionForValue", "ScatterController", "interaction", "registry", "getElement", "abstract", "Error", "DateAdapterBase", "override", "members", "prototype", "init", "formats", "format", "diff", "startOf", "endOf", "adapters", "_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", "defaultRoutes", "tooltipPosition", "hasValue", "final", "ret", "autoSkip", "tickOpts", "determinedMaxTicks", "determineMaxTicks", "ticksLimit", "maxTicksLimit", "majorIndices", "major", "enabled", "getMajorIndices", "numMajorIndices", "first", "newTicks", "skipMajors", "calculateSpacing", "avgMajorSpacing", "round", "tickLength", "_tickSize", "maxScale", "maxChart", "_maxLength", "evenMajorSpacing", "getEvenSpacing", "factors", "_factorize", "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", "_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", "Chart", "version", "invalidatePlugins", "userConfig", "initialCanvas", "existingChart", "uid", "_options", "_aspectRatio", "_metasets", "_lastEvent", "_listeners", "_responsiveListeners", "_sortedMetasets", "_plugins", "_hiddenIndices", "attached", "_doResize", "debounce", "resizeDelay", "_initialize", "maintainAspectRatio", "responsive", "retinaScale", "bindEvents", "clearCanvas", "_resize", "_resizeBeforeDraw", "newSize", "newRatio", "onResize", "render", "ensureScalesHaveIDs", "scalesOptions", "axisOptions", "buildOrUpdateScales", "scaleOpts", "updated", "isRadial", "dposition", "dtype", "scaleType", "scaleClass", "hasUpdated", "_updateMetasets", "_destroyDatasetMeta", "_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", "getDatasetClipArea", "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", "clipSelf", "borderJoinStyle", "outerAngleClip", "_normalizeAngle", "innerAngleClip", "clipWidth", "closePath", "rect", "clipArc", "pixelMargin", "angleMargin", "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", "inner", "lineJoin", "selfJoin", "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", "capBezierPoints", "_points", "_segments", "_pointsUpdated", "_updateBezierControlPoints", "_computeSegments", "interpolate", "_boundSegments", "_interpolate", "interpolated", "hitRadius", "PointElement", "hoverRadius", "mouseX", "mouseY", "inXRange", "inYRange", "drawPoint", "getBarBounds", "bar", "half", "skipOrLimit", "parseBorderWidth", "maxW", "maxH", "toTRBL", "toTRBLCorners", "maxR", "enableBorder", "topLeft", "topRight", "bottomLeft", "bottomRight", "boundingRects", "bounds", "outer", "skipX", "skipY", "skipBoth", "hasRadius", "addNormalRectPath", "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", "_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", "fillColor", "clipVertical", "clipHorizontal", "clipY", "lineLoop", "clipX", "src", "notShape", "clipBounds", "interpolatedLineTo", "targetLoop", "interpolatedPoint", "afterDatasetsUpdate", "$filler", "beforeDraw", "drawTime", "beforeDatasetsDraw", "beforeDatasetDraw", "getBoxSize", "labelOpts", "boxHeight", "boxWidth", "usePointStyle", "pointStyleWidth", "itemHeight", "itemsEqual", "Legend", "_added", "legendHitBoxes", "_hoveredItem", "doughnutMode", "legendItems", "columnSizes", "lineWidths", "buildLabels", "labelFont", "_computeTitleHeight", "_fitRows", "_fitCols", "hitboxes", "totalHeight", "row", "itemWidth", "measureText", "_itemHeight", "heightLimit", "totalWidth", "currentColWidth", "currentColHeight", "col", "calculateItemSize", "adjustHitBoxes", "rtl", "rtlHelper", "getRtlAdapter", "hitbox", "leftForLtr", "_draw", "defaultColor", "halfFontSize", "cursor", "drawLegendBox", "lineDash", "drawOptions", "SQRT2", "xPlus", "drawPointLegend", "yBoxTop", "xBoxLeft", "fillText", "strikethrough", "overrideTextDirection", "textDirection", "textWidth", "setWidth", "realX", "_textX", "fontLineHeight", "calculateLegendItemHeight", "restoreTextDirection", "titleFont", "titlePadding", "topPaddingPlusHalfFontSize", "_getLegendItemAt", "hitBox", "lh", "handleEvent", "isListened", "hoveredItem", "sameItem", "onLeave", "calculateItemWidth", "calculateItemHeight", "legendItemText", "_element", "afterEvent", "ci", "useBorderRadius", "Title", "_padding", "textSize", "_drawArgs", "fontOpts", "createTitle", "titleBlock", "WeakMap", "positioners", "average", "xSet", "xAverage", "eventPosition", "nearestElement", "distanceBetweenPoints", "tp", "pushOrConcat", "toPush", "apply", "splitNewlines", "str", "String", "createTooltipItem", "formattedValue", "getTooltipSize", "tooltip", "body", "footer", "bodyFont", "footerFont", "titleLineCount", "footerLineCount", "bodyLineItemCount", "combinedBodyLength", "bodyItem", "before", "after", "beforeBody", "afterBody", "titleSpacing", "titleMarginBottom", "bodyLineHeight", "displayColors", "bodySpacing", "footerMarginTop", "footerSpacing", "widthPadding", "maxLineWidth", "determineYAlign", "doesNotFitWithAlign", "xAlign", "caret", "caretSize", "caretPadding", "determineXAlign", "yAlign", "chartWidth", "determineAlignment", "alignX", "alignY", "paddingAndSize", "getBackgroundPoint", "alignment", "cornerRadius", "getAlignedX", "getBeforeAfterBodyLines", "createTooltipContext", "tooltipItems", "overrideCallbacks", "defaultCallbacks", "beforeTitle", "noop", "labelCount", "afterTitle", "beforeLabel", "tooltipItem", "labelColor", "labelTextColor", "bodyColor", "labelPointStyle", "afterLabel", "beforeFooter", "afterFooter", "invokeCallbackWithFallback", "Tooltip", "opacity", "_eventPosition", "_size", "_cachedAnimations", "_tooltipItems", "dataPoints", "caretX", "caretY", "labelColors", "labelPointStyles", "labelTextColors", "getTitle", "getBeforeBody", "getBody", "bodyItems", "scoped", "getAfterBody", "getFooter", "_createItems", "itemSort", "positionAndSize", "backgroundPoint", "external", "drawCaret", "tooltipPoint", "caretPosition", "getCaretPosition", "x3", "y3", "ptX", "ptY", "pt", "titleColor", "_drawColorBox", "colorX", "rtlColorX", "yOffSet", "colorY", "multiKeyBackground", "outerX", "innerX", "strokeRect", "drawBody", "bodyAlign", "xLinePadding", "fillLineOfText", "bodyAlignForCalculation", "textColor", "drawFooter", "footerAlign", "footerColor", "tooltipSize", "quadraticCurveTo", "_updateAnimationTarget", "animX", "animY", "_willRender", "hasTooltipContent", "globalAlpha", "positionChanged", "_positionChanged", "_ignoreReplayEvents", "afterInit", "afterDraw", "_fallback", "addIfString", "addedLabels", "findOrAddLabel", "lastIndexOf", "_getLabelForValue", "CategoryScale", "_startValue", "_valueRange", "_addedLabels", "added", "generateTicks", "generationOptions", "dataRange", "MIN_SPACING", "precision", "maxTicks", "maxDigits", "includeBounds", "unit", "maxSpaces", "rmin", "rmax", "countDefined", "minSpacing", "niceNum", "niceMin", "niceMax", "numSpaces", "almostWhole", "almostEquals", "decimalPlaces", "_decimalPlaces", "relativeLabelSize", "tickValue", "rad", "LinearScaleBase", "_endValue", "handleTickRangeOptions", "setMin", "setMax", "minSign", "maxSign", "getTickLimit", "stepSize", "computeTickLimit", "numericGeneratorOptions", "_setMinAndMaxByKey", "LinearScale", "Ticks", "formatters", "numeric", "log10Floor", "log10", "changeExponent", "m", "isMajor", "tickVal", "steps", "rangeExp", "rangeStep", "startExp", "minExp", "exp", "significand", "lastTick", "LogarithmicScale", "logarithmic", "_zero", "getTickBackdropHeight", "measureLabelSize", "_longestText", "determineLimits", "fitWithPointLabels", "limits", "valueCount", "_pointLabels", "pointLabelOpts", "additionalAngle", "centerPointLabels", "getPointLabelContext", "getPointPosition", "drawingArea", "plFont", "hLimits", "vLimits", "updateLimits", "setCenterPoint", "_pointLabelItems", "buildPointLabelItems", "createPointLabelItem", "itemOpts", "outerDistance", "extra", "pointLabelPosition", "yForAngle", "getTextAlignForAngle", "leftForTextAlign", "isNotOverlapped", "apexesInArea", "drawPointLabelBox", "backdropLeft", "backdropTop", "backdropWidth", "backdropHeight", "drawPointLabels", "pathRadiusLine", "drawRadiusLine", "gridLineOpts", "createPointLabelContext", "RadialLinearScale", "animate", "leftMovement", "rightMovement", "topMovement", "bottomMovement", "angleMultiplier", "scalingFactor", "getValueForDistanceFromCenter", "scaledDistance", "pointLabel", "distanceFromCenter", "getBasePosition", "getPointLabelPosition", "rotate", "INTERVALS", "millisecond", "common", "second", "minute", "hour", "day", "week", "month", "quarter", "year", "UNITS", "sorter", "input", "adapter", "_adapter", "parser", "isoWeekday", "_parseOpts", "determineUnitForAutoTicks", "minUnit", "capacity", "interval", "MAX_SAFE_INTEGER", "determineUnitForFormatting", "determineMajorUnit", "addTick", "time", "timestamps", "_lookup", "timestamp", "setMajorTicks", "majorUnit", "ticksFromTimestamps", "TimeScale", "displayFormats", "_unit", "_majorUnit", "_offsets", "_normalized", "normalized", "_applyBounds", "_getLabelBounds", "getLabelTimestamps", "timeOpts", "_generate", "_filterBetween", "_getLabelCapacity", "initOffsets", "offsetAfterAutoskip", "getDecimalForValue", "minor", "weekday", "hasWeekday", "getDataTimestamps", "tooltipFormat", "datetime", "fmt", "_tickFormatFunction", "formatter", "minorFormat", "majorFormat", "offsets", "_getLabelSize", "ticksOpts", "tickLabelWidth", "cosRotation", "sinRotation", "tickFontSize", "exampleTime", "exampleLabel", "normalize", "table", "prevSource", "nextSource", "prevTarget", "nextTarget", "span", "TimeSeriesScale", "_table", "_minPos", "_tableRange", "_getTimestampsForTable", "buildLookupTable", "registerables", "Chart", "o", "toDate", "toDate", "toDate", "toDate", "defaultOptions", "defaultOptions", "toDate", "day", "toDate", "toDate", "isDate", "isDate", "toDate", "toDate", "toDate", "toDate", "sign", "toDate", "toDate", "toDate", "month", "toDate", "toDate", "sign", "toDate", "sign", "toDate", "toDate", "month", "toDate", "toDate", "year", "toDate", "toDate", "defaultOptions", "toDate", "day", "toDate", "toDate", "month", "toDate", "MILLISECONDS_IN_DAY", "toDate", "toDate", "day", "toDate", "year", "year", "toDate", "defaultOptions", "toDate", "day", "toDate", "year", "defaultOptions", "defaultOptions", "year", "MILLISECONDS_IN_WEEK", "toDate", "sign", "formatters", "year", "month", "m", "formatters", "localize", "y", "year", "M", "month", "week", "d", "a", "h", "H", "m", "s", "S", "sign", "dateLongFormatter", "formatLong", "timeLongFormatter", "dateTimeLongFormatter", "format", "formatDistance", "format", "formatRelative", "index", "ordinalNumber", "valueCallback", "index", "format", "defaultOptions", "locale", "toDate", "formatter", "r", "a", "e", "n", "r", "a", "t", "r", "e", "t", "F", "n", "o", "a", "u", "s", "f", "e", "t", "e", "t", "e", "t", "t", "_isNativeReflectConstruct", "t", "e", "t", "r", "e", "o", "s", "a", "n", "t", "r", "e", "i", "t", "i", "e", "r", "t", "o", "e", "r", "t", "Setter", "ValueSetter", "set", "DateToSystemTimezoneSetter", "Parser", "match", "EraParser", "parse", "match", "set", "sign", "n", "year", "YearParser", "parse", "match", "valueCallback", "year", "set", "LocalWeekYearParser", "parse", "match", "valueCallback", "year", "set", "ISOWeekYearParser", "parse", "set", "ExtendedYearParser", "parse", "set", "QuarterParser", "parse", "match", "set", "StandAloneQuarterParser", "parse", "match", "set", "MonthParser", "parse", "match", "valueCallback", "set", "StandAloneMonthParser", "parse", "match", "valueCallback", "set", "toDate", "week", "LocalWeekParser", "parse", "match", "set", "toDate", "ISOWeekParser", "parse", "match", "set", "DateParser", "parse", "match", "year", "month", "set", "DayOfYearParser", "parse", "match", "year", "set", "defaultOptions", "toDate", "day", "DayParser", "parse", "match", "set", "LocalDayParser", "parse", "match", "valueCallback", "set", "StandAloneLocalDayParser", "parse", "match", "valueCallback", "set", "day", "toDate", "ISODayParser", "parse", "match", "valueCallback", "set", "AMPMParser", "parse", "match", "set", "AMPMMidnightParser", "parse", "match", "set", "DayPeriodParser", "parse", "match", "set", "Hour1to12Parser", "parse", "match", "set", "Hour0to23Parser", "parse", "match", "set", "Hour0To11Parser", "parse", "match", "set", "Hour1To24Parser", "parse", "match", "set", "MinuteParser", "parse", "match", "set", "SecondParser", "parse", "match", "set", "FractionOfSecondParser", "parse", "valueCallback", "set", "ISOTimezoneWithZParser", "parse", "set", "ISOTimezoneParser", "parse", "set", "TimestampSecondsParser", "parse", "set", "TimestampMillisecondsParser", "parse", "set", "formattingTokensRegExp", "longFormattingTokensRegExp", "escapedStringRegExp", "doubleQuoteRegExp", "unescapedLatinCharacterRegExp", "parse", "defaultOptions", "locale", "toDate", "_loop", "cleanEscapedString", "setter", "a", "b", "index", "toDate", "toDate", "year", "month", "day", "week", "sign", "isLeapYearIndex", "adapters", "toDate", "parse", "format", "isNullOrUndef", "i", "j", "v", "x", "y", "r", "config", "positioners", "boundingRects", "ArcElement", "PointElement", "BarElement", "w", "h", "HALF_PI", "shadow", "color", "index", "me", "merge", "toFont", "resolve", "defaults", "toPadding", "valueOrDefault", "callback", "cy", "pt", "p", "h1", "a", "b", "k", "isObject", "EXPANDO_KEY", "listeners", "each", "event", "dispatchEvent", "expando", "elements", "Tooltip", "ResizableConstants", "WidthsData", "PointerData", "ResizableEventData", "Utilities", "m", "UtilitiesDOM", "i", "ResizableOptions", "ResizableTableColumns", "index", "_a", "event", "e", "event", "config", "a", "b", "name", "index", "h", "needsReordering", "i", "e", "e", "index", "i", "h", "a", "b", "ca", "index", "m", "c", "e", "i", "c", "config", "a", "b", "event", "table", "gridId", "c", "m", "c", "p", "x", "e", "i", "a", "b", "getGridElement", "sort", "event", "href", "a", "b", "url", "searchParams", "key", "sortColKey", "currentSort", "c", "config", "CELL_HORIZONTAL_PADDING", "nativeLeft", "nativeRight", "ro", "e", "state", "callback", "getGridElement", "c", "gridElement", "elementType", "event", "Tooltip", "event", "title", "callback", "Tooltip", "exports", "isNodeJS", "process", "versions", "nw", "electron", "type", "FONT_IDENTITY_MATRIX", "LINE_FACTOR", "LINE_DESCENT_FACTOR", "BASELINE_FACTOR", "RenderingIntentFlag", "ANY", "DISPLAY", "PRINT", "SAVE", "ANNOTATIONS_FORMS", "ANNOTATIONS_STORAGE", "ANNOTATIONS_DISABLE", "IS_EDITING", "OPLIST", "AnnotationMode", "DISABLE", "ENABLE", "ENABLE_FORMS", "ENABLE_STORAGE", "AnnotationEditorPrefix", "AnnotationEditorType", "NONE", "FREETEXT", "HIGHLIGHT", "STAMP", "INK", "POPUP", "SIGNATURE", "COMMENT", "AnnotationEditorParamsType", "RESIZE", "CREATE", "FREETEXT_SIZE", "FREETEXT_COLOR", "FREETEXT_OPACITY", "INK_COLOR", "INK_THICKNESS", "INK_OPACITY", "HIGHLIGHT_COLOR", "HIGHLIGHT_THICKNESS", "HIGHLIGHT_FREE", "HIGHLIGHT_SHOW_ALL", "DRAW_STEP", "PermissionFlag", "MODIFY_CONTENTS", "COPY", "MODIFY_ANNOTATIONS", "FILL_INTERACTIVE_FORMS", "COPY_FOR_ACCESSIBILITY", "ASSEMBLE", "PRINT_HIGH_QUALITY", "MeshFigureType", "TRIANGLES", "LATTICE", "PATCH", "TextRenderingMode", "FILL", "STROKE", "FILL_STROKE", "INVISIBLE", "FILL_ADD_TO_PATH", "STROKE_ADD_TO_PATH", "FILL_STROKE_ADD_TO_PATH", "ADD_TO_PATH", "FILL_STROKE_MASK", "ADD_TO_PATH_FLAG", "ImageKind", "GRAYSCALE_1BPP", "RGB_24BPP", "RGBA_32BPP", "AnnotationType", "TEXT", "LINK", "LINE", "SQUARE", "CIRCLE", "POLYGON", "POLYLINE", "UNDERLINE", "SQUIGGLY", "STRIKEOUT", "CARET", "FILEATTACHMENT", "SOUND", "MOVIE", "WIDGET", "SCREEN", "PRINTERMARK", "TRAPNET", "WATERMARK", "THREED", "REDACT", "AnnotationBorderStyleType", "SOLID", "DASHED", "BEVELED", "INSET", "UNDERLINE", "VerbosityLevel", "ERRORS", "WARNINGS", "INFOS", "OPS", "dependency", "setLineWidth", "setLineCap", "setLineJoin", "setMiterLimit", "setDash", "setRenderingIntent", "setFlatness", "setGState", "save", "restore", "transform", "moveTo", "lineTo", "curveTo", "curveTo2", "curveTo3", "closePath", "rectangle", "stroke", "closeStroke", "fill", "eoFill", "fillStroke", "eoFillStroke", "closeFillStroke", "closeEOFillStroke", "endPath", "clip", "eoClip", "beginText", "endText", "setCharSpacing", "setWordSpacing", "setHScale", "setLeading", "setFont", "setTextRenderingMode", "setTextRise", "moveText", "setLeadingMoveText", "setTextMatrix", "nextLine", "showText", "showSpacedText", "nextLineShowText", "nextLineSetSpacingShowText", "setCharWidth", "setCharWidthAndBounds", "setStrokeColorSpace", "setFillColorSpace", "setStrokeColor", "setStrokeColorN", "setFillColor", "setFillColorN", "setStrokeGray", "setFillGray", "setStrokeRGBColor", "setFillRGBColor", "setStrokeCMYKColor", "setFillCMYKColor", "shadingFill", "beginInlineImage", "beginImageData", "endInlineImage", "paintXObject", "markPoint", "markPointProps", "beginMarkedContent", "beginMarkedContentProps", "endMarkedContent", "beginCompat", "endCompat", "paintFormXObjectBegin", "paintFormXObjectEnd", "beginGroup", "endGroup", "beginAnnotation", "endAnnotation", "paintImageMaskXObject", "paintImageMaskXObjectGroup", "paintImageXObject", "paintInlineImageXObject", "paintInlineImageXObjectGroup", "paintImageXObjectRepeat", "paintImageMaskXObjectRepeat", "paintSolidColorImageMask", "constructPath", "setStrokeTransparent", "setFillTransparent", "rawFillPath", "DrawOPS", "quadraticCurveTo", "PasswordResponses", "NEED_PASSWORD", "INCORRECT_PASSWORD", "verbosity", "setVerbosityLevel", "level", "Number", "isInteger", "getVerbosityLevel", "info", "msg", "console", "warn", "unreachable", "Error", "assert", "cond", "_isValidProtocol", "url", "protocol", "createValidAbsoluteUrl", "baseUrl", "options", "addDefaultProtocol", "startsWith", "dots", "match", "length", "tryConvertEncoding", "stringToUTF8String", "absoluteUrl", "URL", "parse", "updateUrlHash", "hash", "allowRel", "res", "href", "split", "shadow", "obj", "prop", "value", "nonSerializable", "Object", "defineProperty", "enumerable", "configurable", "writable", "BaseException", "BaseExceptionClosure", "message", "name", "prototype", "constructor", "PasswordException", "code", "UnknownErrorException", "details", "InvalidPDFException", "ResponseException", "status", "missing", "FormatError", "AbortException", "bytesToString", "bytes", "undefined", "MAX_ARGUMENT_COUNT", "String", "fromCharCode", "apply", "strBuf", "i", "chunkEnd", "Math", "min", "chunk", "subarray", "push", "join", "stringToBytes", "str", "Uint8Array", "charCodeAt", "string32", "isLittleEndian", "buffer8", "Uint8Array", "view32", "Uint32Array", "buffer", "isEvalSupported", "Function", "FeatureTest", "shadow", "isOffscreenCanvasSupported", "OffscreenCanvas", "isImageDecoderSupported", "ImageDecoder", "isFloat16ArraySupported", "Float16Array", "isSanitizerSupported", "Sanitizer", "platform", "userAgent", "navigator", "isAndroid", "includes", "isLinux", "isMac", "isWindows", "isFirefox", "isCSSRoundSupported", "globalThis", "CSS", "supports", "hexNumbers", "Array", "from", "keys", "n", "toString", "padStart", "Util", "makeHexColor", "r", "g", "b", "domMatrixToTransform", "dm", "a", "c", "d", "e", "f", "scaleMinMax", "transform", "minMax", "temp", "m1", "m2", "multiplyByDOMMatrix", "m", "md", "applyTransform", "p", "pos", "p0", "p1", "applyTransformToBezier", "m0", "m3", "m4", "m5", "i", "pI", "pI1", "applyInverseTransform", "axialAlignedBoundingBox", "rect", "output", "r0", "r1", "r2", "r3", "a0", "a2", "a1", "a3", "b0", "b2", "b1", "b3", "m1r0", "m1r2", "m2r1", "m2r3", "Math", "min", "max", "inverseTransform", "singularValueDecompose2dScale", "matrix", "first", "second", "sqrt", "normalizeRect", "slice", "intersect", "rect1", "rect2", "xLow", "xHigh", "yLow", "yHigh", "pointBoundingBox", "x", "y", "rectBoundingBox", "x0", "y0", "x1", "y1", "x2", "x3", "y2", "y3", "t", "mt", "tt", "ttt", "abs", "delta", "sqrtDelta", "bezierBoundingBox", "stringToUTF8String", "str", "decodeURIComponent", "escape", "NormalizeRegex", "NormalizationMap", "normalizeUnicode", "str", "Map", "replaceAll", "_", "p1", "p2", "normalize", "get", "getUuid", "crypto", "randomUUID", "buf", "Uint8Array", "getRandomValues", "bytesToString", "AnnotationPrefix", "_isValidExplicitDest", "validRef", "validName", "dest", "Array", "isArray", "length", "page", "zoom", "args", "Number", "isInteger", "argsLen", "allowNull", "name", "arg", "MathClamp", "v", "min", "max", "Math", "toBase64Util", "arr", "Uint8Array", "prototype", "toBase64", "btoa", "bytesToString", "fromBase64Util", "str", "fromBase64", "stringToBytes", "atob", "Promise", "try", "fn", "args", "resolve", "Math", "sumPrecise", "numbers", "reduce", "a", "b", "XfaText", "textContent", "xfa", "items", "output", "styles", "Object", "create", "walk", "node", "str", "name", "value", "shouldBuildText", "attributes", "push", "children", "child", "XfaLayer", "setupStorage", "html", "id", "element", "storage", "intent", "storedData", "getValue", "value", "name", "textContent", "addEventListener", "event", "setValue", "target", "attributes", "type", "xfaOn", "setAttribute", "xfaOff", "removeAttribute", "checked", "getAttribute", "option", "children", "selected", "hasOwnProperty", "options", "selectedIndex", "setAttributes", "linkService", "isHTMLAnchorElement", "HTMLAnchorElement", "key", "Object", "entries", "undefined", "length", "join", "assign", "style", "addLinkAttributes", "href", "newWindow", "dataId", "render", "parameters", "annotationStorage", "root", "xfaHtml", "rootHtml", "document", "createElement", "isNotForRichText", "rootDiv", "div", "append", "viewport", "transform", "textDivs", "node", "createTextNode", "XfaText", "shouldBuildText", "push", "stack", "parent", "i", "at", "pop", "child", "childHtml", "xmlns", "createElementNS", "el", "querySelectorAll", "update", "hidden", "SVG_NS", "PixelsPerInch", "CSS", "PDF", "PDF_TO_CSS_UNITS", "fetchData", "url", "type", "isValidFetchUrl", "document", "baseURI", "response", "fetch", "ok", "Error", "statusText", "arrayBuffer", "blob", "json", "text", "Promise", "resolve", "reject", "request", "XMLHttpRequest", "open", "responseType", "onreadystatechange", "readyState", "DONE", "status", "responseText", "send", "PageViewport", "constructor", "viewBox", "userUnit", "scale", "rotation", "offsetX", "offsetY", "dontFlip", "centerX", "centerY", "rotateA", "rotateB", "rotateC", "rotateD", "offsetCanvasX", "offsetCanvasY", "width", "height", "Math", "abs", "transform", "rawDims", "dims", "shadow", "pageWidth", "pageHeight", "pageX", "pageY", "clone", "slice", "convertToViewportPoint", "x", "y", "p", "Util", "applyTransform", "convertToViewportRectangle", "rect", "topLeft", "bottomRight", "convertToPdfPoint", "applyInverseTransform", "RenderingCancelledException", "BaseException", "msg", "extraDelay", "isDataScheme", "ii", "length", "i", "trim", "substring", "toLowerCase", "isPdfFile", "filename", "test", "getFilenameFromUrl", "split", "lastIndexOf", "getPdfFilenameFromUrl", "defaultFilename", "warn", "getURL", "urlString", "URL", "decodeURIComponent", "newURL", "decode", "name", "decoded", "includes", "at", "pdfRegex", "pathname", "searchParams", "size", "values", "Array", "from", "reverse", "value", "keys", "key", "hash", "reFilename", "hashFilename", "exec", "StatTimer", "started", "Object", "create", "times", "time", "Date", "now", "timeEnd", "push", "start", "end", "toString", "outBuf", "longest", "max", "padEnd", "join", "baseUrl", "res", "parse", "protocol", "noContextMenu", "e", "preventDefault", "stopEvent", "stopPropagation", "deprecated", "details", "console", "log", "PDFDateString", "toDateObject", "input", "RegExp", "matches", "year", "parseInt", "month", "day", "hour", "minute", "second", "universalTimeRelation", "offsetHour", "offsetMinute", "UTC", "getXfaPageViewport", "xfaPage", "attributes", "style", "getRGB", "color", "startsWith", "colorRGB", "map", "getColorValues", "colors", "span", "createElement", "visibility", "colorScheme", "body", "append", "computedColor", "window", "getComputedStyle", "set", "remove", "getCurrentTransform", "ctx", "a", "b", "c", "d", "f", "getTransform", "getCurrentTransformInverse", "invertSelf", "setLayerDimensions", "div", "viewport", "mustFlip", "mustRotate", "useRound", "FeatureTest", "isCSSRoundSupported", "w", "h", "widthStr", "heightStr", "setAttribute", "OutputScale", "pixelRatio", "sx", "sy", "scaled", "symmetric", "limitCanvas", "maxPixels", "maxDim", "capAreaFactor", "maxAreaScale", "Infinity", "maxWidthScale", "maxHeightScale", "capPixels", "sqrt", "maxScale", "min", "globalThis", "devicePixelRatio", "winPixels", "ceil", "screen", "availWidth", "availHeight", "SupportedImageMimeTypes", "ColorScheme", "isDarkMode", "matchMedia", "CSSConstants", "commentForegroundColor", "element", "classList", "add", "display", "applyOpacity", "r", "g", "opacity", "white", "round", "RGBToHSL", "rgb", "output", "l", "HSLToRGB", "hsl", "s", "m", "floor", "computeLuminance", "contrastRatio", "hsl1", "hsl2", "lum1", "lum2", "contrastCache", "Map", "findContrastColor", "baseColor", "fixedColor", "cachedValue", "get", "array", "Float32Array", "subarray", "baseHSL", "fixedHSL", "isFixedColorDark", "minContrast", "PRECISION", "mid", "makeHexColor", "renderRichText", "html", "dir", "className", "container", "fragment", "createDocumentFragment", "lines", "line", "createTextNode", "XfaLayer", "render", "xfaHtml", "intent", "firstElementChild", "makePathFromDrawOPS", "data", "path", "Path2D", "DrawOPS", "moveTo", "lineTo", "curveTo", "bezierCurveTo", "quadraticCurveTo", "closePath", "EditorToolbar", "constructor", "editor", "Object", "freeze", "freetext", "highlight", "ink", "stamp", "signature", "render", "editToolbar", "document", "createElement", "classList", "add", "setAttribute", "signal", "_uiManager", "_signal", "AbortSignal", "aborted", "addEventListener", "noContextMenu", "buttons", "className", "append", "position", "toolbarPosition", "style", "x", "direction", "insetInlineEnd", "top", "div", "e", "stopPropagation", "_focusEventsAllowed", "stopEvent", "element", "bind", "capture", "hide", "hideDropdown", "show", "remove", "shown", "addDeleteButton", "editorType", "button", "tabIndex", "delete", "divider", "addAltText", "altText", "addComment", "comment", "beforeElement", "renderForToolbar", "insertBefore", "toolbar", "addColorPicker", "colorPicker", "renderButton", "addEditSignatureButton", "signatureManager", "renderEditButton", "removeButton", "name", "removeToolbarCommentButton", "addButton", "tool", "addButtonBefore", "beforeSelector", "querySelector", "updateEditSignatureButton", "description", "title", "destroy", "FloatingToolbar", "uiManager", "hasCommentManager", "commentSelection", "highlightSelection", "boxes", "isLTR", "lastY", "lastX", "box", "y", "height", "width", "parent", "buttonClass", "l10nId", "labelL10nId", "clickHandler", "span", "bindEvents", "obj", "element", "names", "name", "addEventListener", "bind", "CurrentPointers", "NaN", "initializeAndAddPointerId", "pointerId", "Set", "add", "setPointer", "pointerType", "setTimeStamp", "timeStamp", "isSamePointerId", "isSamePointerIdOrRemove", "delete", "isSamePointerType", "isInitializedAndDifferentPointerType", "isSameTimeStamp", "isUsingMultiplePointers", "size", "clearPointerType", "clearPointerIds", "clearTimeStamp", "IdManager", "id", "AnnotationEditorPrefix", "ImageManager", "getUuid", "_isSVGFittingCanvas", "svg", "canvas", "OffscreenCanvas", "ctx", "getContext", "willReadFrequently", "image", "Image", "src", "promise", "decode", "then", "drawImage", "Uint32Array", "getImageData", "data", "buffer", "shadow", "key", "rawData", "Map", "get", "bitmap", "refCounter", "isSvg", "url", "fetchData", "File", "file", "Blob", "type", "mustRemoveAspectRatioPromise", "fileReader", "FileReader", "imageElement", "imagePromise", "Promise", "resolve", "reject", "onload", "svgUrl", "result", "onerror", "readAsDataURL", "createImageBitmap", "e", "warn", "set", "getFromFile", "lastModified", "getFromUrl", "getFromBlob", "blobPromise", "blob", "getFromId", "getFromCanvas", "offscreen", "width", "height", "transferToImageBitmap", "getSvgUrl", "deleteId", "transferFromImageBitmap", "convertToBlob", "close", "isValidId", "startsWith", "CommandManager", "constructor", "maxSize", "cmd", "undo", "post", "mustExec", "overwriteIfSameType", "keepUndo", "save", "length", "push", "next", "splice", "redo", "hasSomethingToUndo", "hasSomethingToRedo", "cleanType", "i", "destroy", "KeyboardManager", "callbacks", "allKeys", "isMac", "FeatureTest", "platform", "keys", "callback", "options", "isMacKey", "slice", "split", "at", "event", "altKey", "ctrlKey", "metaKey", "shiftKey", "str", "join", "exec", "self", "has", "info", "bubbles", "args", "checker", "stopEvent", "ColorManager", "_colorsMapping", "_colors", "colors", "getColorValues", "convert", "color", "rgb", "getRGB", "window", "matchMedia", "matches", "RGB", "every", "x", "getHexCode", "Util", "makeHexColor", "AnnotationEditorUIManager", "AbortController", "_editorUndoBar", "AnnotationEditorType", "NONE", "isEditing", "isEmpty", "hasSelectedEditor", "hasSelectedText", "TRANSLATE_SMALL", "TRANSLATE_BIG", "_keyboardManager", "proto", "prototype", "arrowChecker", "contains", "document", "activeElement", "tagName", "hasSomethingToControl", "textInputChecker", "_self", "target", "el", "HTMLInputElement", "small", "big", "selectAll", "addNewEditorFromKeyboard", "HTMLButtonElement", "isEnterHandled", "unselectAll", "translateSelectedEditors", "container", "viewer", "viewerAlert", "altTextManager", "commentManager", "signatureManager", "eventBus", "pdfDocument", "pageColors", "highlightColors", "enableHighlightFloatingButton", "enableUpdatedAddImage", "enableNewAltTextWhenAddingImage", "mlManager", "editorUndoBar", "supportsPinchToZoom", "signal", "_signal", "_eventBus", "_on", "onEditingAction", "onPageChanging", "onScaleChanging", "onRotationChanging", "onSetPreference", "evt", "updateParams", "value", "capture", "annotationStorage", "filterFactory", "viewParameters", "realScale", "PixelsPerInch", "PDF_TO_CSS_UNITS", "rotation", "isShiftKeyDown", "_supportsPinchToZoom", "setSidebarUiManager", "abort", "layer", "values", "clear", "hide", "clearTimeout", "combinedSignal", "ac", "AbortSignal", "any", "useNewAltTextFlow", "useNewAltTextWhenAddingImage", "hcmFilter", "addHCMFilter", "foreground", "background", "direction", "getComputedStyle", "_highlightColors", "map", "pair", "trim", "toUpperCase", "hasHCM", "isNameForHCM", "endsWith", "replace", "highlightColorNames", "Array", "from", "reverse", "getNonHCMColor", "colorName", "getNonHCMColorName", "setCurrentDrawingSession", "disableUserSelect", "setMainHighlightColorPicker", "colorPicker", "editAltText", "editor", "firstTime", "hasCommentManager", "editComment", "posX", "posY", "showDialog", "selectComment", "pageIndex", "uid", "getEditorByUID", "toggleComment", "updateComment", "getData", "updatePopupColor", "removeComment", "removeComments", "isSelected", "visibility", "undefined", "toggleCommentPopup", "makeCommentColor", "opacity", "getCommentDialogElement", "dialogElement", "waitForEditorsRendered", "pageNumber", "withResolvers", "onEditorsRendered", "_off", "on", "getSignature", "uiManager", "switchToMode", "mode", "once", "dispatch", "source", "setPreference", "focusMainContainer", "focus", "findParent", "y", "layerX", "layerY", "div", "getBoundingClientRect", "classList", "toggle", "addShouldRescale", "removeShouldRescale", "scale", "commitOrRemove", "pagesRotation", "anchorNode", "nodeType", "Node", "TEXT_NODE", "parentElement", "textLayer", "currentLayer", "hasTextLayer", "highlightSelection", "methodOfCreation", "comment", "selection", "getSelection", "isCollapsed", "anchorOffset", "focusNode", "focusOffset", "text", "toString", "anchorElement", "closest", "boxes", "getSelectionBoxes", "empty", "isNoneMode", "createAndAddNewEditor", "showAllEditors", "HIGHLIGHT", "commentSelection", "FloatingToolbar", "show", "getAndRemoveDataFromAnnotationStorage", "annotationId", "storedValue", "getRawValue", "remove", "addToAnnotationStorage", "setValue", "a11yAlert", "messageId", "setAttribute", "JSON", "stringify", "removeAttribute", "activeLayer", "toggleDrawing", "pointerup", "button", "blur", "hasSelection", "_focusEventsAllowed", "lastEditor", "lastActiveElement", "keydown", "keyup", "copy", "cut", "paste", "dragOver", "drop", "addEditListeners", "setEditingState", "removeEditListeners", "dataTransfer", "items", "editorType", "isHandlingMimeForPasting", "dropEffect", "preventDefault", "item", "editors", "serialized", "serialize", "clipboardData", "setData", "parse", "ex", "message", "isArray", "newEditors", "deserializedEditor", "deserialize", "addCommands", "isEditorHandlingKeyboard", "details", "hasChanged", "Object", "entries", "some", "assign", "AnnotationEditorParamsType", "HIGHLIGHT_FREE", "registerEditorTypes", "types", "defaultPropertiesToUpdate", "getId", "getLayer", "currentPageIndex", "addLayer", "enable", "disable", "removeLayer", "updateMode", "editId", "isFromUser", "isFromKeyboard", "mustEnterInEditMode", "POPUP", "hideSidebar", "destroyPopup", "hideStandaloneCommentButton", "addStandaloneCommentButton", "SIGNATURE", "loadSignatures", "getAnnotationsByType", "editorClass", "_editorType", "elementIds", "allComments", "annotationElementId", "hasComment", "deleted", "annotation", "popupRef", "contentsObj", "showSidebar", "setSelected", "enterInEditMode", "unselect", "canCreateNewEmptyEditor", "addNewEditor", "updateToolbar", "CREATE", "HIGHLIGHT_SHOW_ALL", "action", "updateDefaultParams", "visible", "updateButton", "state", "enableWaiting", "mustWait", "disableClick", "enableClick", "promises", "all", "getEditors", "getEditor", "addEditor", "removeEditor", "setTimeout", "addDeletedAnnotationElement", "addChangedExistingAnnotation", "isDeletedAnnotationElement", "removeDeletedAnnotationElement", "removeChangedExistingAnnotation", "addOrRebuild", "setActiveEditor", "propertiesToUpdate", "ed", "updateUI", "updateUIForDefaultProperties", "toggleSelected", "select", "firstSelectedEditor", "params", "cleanUndoStack", "drawingEditor", "endDrawingSession", "commit", "noCommit", "totalX", "totalY", "TIME_TO_WAIT", "translateInPage", "translationDone", "setUpDragSession", "savedX", "savedY", "savedPageIndex", "newX", "newY", "newPageIndex", "endDragSession", "mustBeAddedInUndoStack", "move", "parent", "_setParentAndPosition", "dragSelectedEditors", "tx", "ty", "drag", "rebuild", "changeParent", "getActive", "shouldGetKeyboardEvents", "isActive", "getMode", "isEditingMode", "imageManager", "ii", "rangeCount", "getRangeAt", "commonAncestorContainer", "parentWidth", "parentHeight", "rotator", "getAttribute", "w", "h", "range", "collapsed", "getClientRects", "renderAnnotationElement", "editorId", "hasBeenModified", "setMissingCanvas", "setCanvas", "addMissingCanvas", "AltText", "_l10n", "constructor", "editor", "_uiManager", "useNewAltTextFlow", "Object", "freeze", "added", "missing", "review", "initialize", "l10n", "render", "altText", "document", "createElement", "className", "tabIndex", "label", "append", "classList", "add", "setAttribute", "signal", "_signal", "addEventListener", "noContextMenu", "event", "stopPropagation", "onClick", "preventDefault", "editAltText", "_reportTelemetry", "action", "data", "capture", "target", "key", "guessedText", "finish", "focus", "focusVisible", "isEmpty", "hasData", "setGuessedText", "get", "generatedAltText", "toggleAltTextBadge", "visibility", "remove", "badge", "div", "toggle", "serialize", "isForCopying", "decorative", "textWithDisclaimer", "cancel", "enabled", "clearTimeout", "disabled", "shown", "destroy", "button", "tooltip", "id", "DELAY_TO_SHOW_TOOLTIP", "once", "setTimeout", "removeAttribute", "textContent", "parentNode", "element", "getElementForAltText", "Comment", "constructor", "editor", "renderForToolbar", "button", "document", "createElement", "className", "renderForStandalone", "position", "commentButtonPosition", "style", "insetInlineEnd", "_uiManager", "direction", "top", "color", "commentButtonColor", "backgroundColor", "focusButton", "setTimeout", "focus", "onUpdatedColor", "updatePopupColor", "commentButtonWidth", "getBoundingClientRect", "width", "parent", "boundingClientRect", "commentPopupPositionInLayer", "x", "y", "height", "parentX", "parentY", "parentWidth", "parentHeight", "pos", "hasDefaultPopupPosition", "removeStandaloneCommentButton", "remove", "removeToolbarCommentButton", "setCommentButtonStates", "selected", "hasPopup", "classList", "toggle", "ariaExpanded", "comment", "isStandalone", "hasCommentManager", "tabIndex", "ariaHasPopup", "ariaControls", "setAttribute", "ariaControlsElements", "getCommentDialogElement", "signal", "_signal", "AbortSignal", "aborted", "addEventListener", "noContextMenu", "e", "_focusEventsAllowed", "stopEvent", "capture", "event", "stopPropagation", "onClick", "preventDefault", "edit", "toggleComment", "target", "key", "options", "posX", "posY", "parentDimensions", "editComment", "finish", "focusVisible", "isDeleted", "isEmpty", "hasBeenEdited", "serialize", "data", "text", "richText", "date", "deleted", "Date", "setInitialText", "shown", "destroy", "TouchManager", "constructor", "container", "isPinchingDisabled", "isPinchingStopped", "onPinchStart", "onPinching", "onPinchEnd", "signal", "AbortController", "AbortSignal", "any", "addEventListener", "bind", "passive", "MIN_TOUCH_DISTANCE_TO_PINCH", "OutputScale", "pixelRatio", "evt", "touches", "length", "pointerDownAC", "opts", "capture", "cancelPointerDown", "e", "pointerType", "abort", "stopEvent", "opt", "onTouchEnd", "touch0", "touch1", "identifier", "touch0X", "screenX", "touch0Y", "screenY", "touch1X", "touch1Y", "screen0X", "screen0Y", "screen1X", "screen1Y", "touchInfo", "pTouch0X", "pTouch0Y", "pTouch1X", "pTouch1Y", "prevGapX", "prevGapY", "currGapX", "currGapY", "distance", "Math", "hypot", "pDistance", "abs", "origin", "destroy", "AnnotationEditor", "isSelected", "_isCopy", "_editToolbar", "_initialOptions", "Object", "create", "_initialData", "_isVisible", "_uiManager", "_focusEventsAllowed", "_l10n", "_l10nResizer", "_zIndex", "_borderLineWidth", "_colorManager", "ColorManager", "_telemetryTimeout", "_resizerKeyboardManager", "resize", "prototype", "_resizeWithKeyboard", "small", "AnnotationEditorUIManager", "TRANSLATE_SMALL", "big", "TRANSLATE_BIG", "shadow", "KeyboardManager", "args", "_stopResizingWithKeyboard", "constructor", "parameters", "parent", "id", "width", "height", "pageIndex", "name", "div", "uiManager", "annotationElementId", "_willKeepAspectRatio", "isCentered", "_structTreeParentId", "creationDate", "Date", "modificationDate", "canAddComment", "rotation", "rawDims", "pageWidth", "pageHeight", "pageX", "pageY", "viewport", "pageRotation", "viewParameters", "pageDimensions", "pageTranslation", "parentDimensions", "x", "y", "isAttachedToDOM", "deleted", "editorType", "getPrototypeOf", "_type", "mode", "_editorType", "isDrawer", "_defaultLineColor", "getHexCode", "deleteAnnotationElement", "editor", "fakeEditor", "FakeEditor", "getNextId", "addToAnnotationStorage", "initialize", "l10n", "freeze", "topLeft", "topMiddle", "topRight", "middleRight", "bottomRight", "bottomMiddle", "bottomLeft", "middleLeft", "style", "getComputedStyle", "document", "documentElement", "parseFloat", "getPropertyValue", "updateDefaultParams", "_value", "defaultPropertiesToUpdate", "isHandlingMimeForPasting", "mime", "paste", "item", "unreachable", "propertiesToUpdate", "_isDraggable", "value", "classList", "toggle", "uid", "isEnterHandled", "center", "parentRotation", "fixAndSetPosition", "addCommands", "params", "currentLayer", "setInBackground", "zIndex", "setInForeground", "setParent", "remove", "focusin", "event", "setSelected", "focusout", "target", "relatedTarget", "closest", "preventDefault", "isMultipleSelection", "commitOrRemove", "isEmpty", "commit", "isInEditMode", "setAt", "tx", "ty", "screenToPageTranslation", "_moveAfterPaste", "baseX", "baseY", "parentWidth", "parentHeight", "_onTranslated", "_onTranslating", "translate", "translateInPage", "scrollIntoView", "block", "translationDone", "drag", "getBoundingClientRect", "findNewParent", "Math", "floor", "bx", "by", "getBaseTranslation", "left", "toFixed", "top", "_hasBeenMoved", "_hasBeenResized", "_mustFixPosition", "MathClamp", "moveInDOM", "angle", "pageTranslationToScreen", "parentScale", "realScale", "setDims", "getInitialTranslation", "createElement", "add", "classes", "signal", "_signal", "append", "setAttribute", "addEventListener", "bind", "noContextMenu", "tabIndex", "prepend", "isMac", "FeatureTest", "platform", "button", "ctrlKey", "savedDraggable", "screenX", "screenY", "ac", "AbortController", "combinedSignal", "togglePointerEvents", "window", "passive", "capture", "stopEvent", "savedX", "savedY", "savedWidth", "savedHeight", "savedParentCursor", "cursor", "savedCursor", "pointerUpCallback", "abort", "_onResized", "newX", "newY", "newWidth", "newHeight", "cmd", "undo", "mustExec", "_round", "round", "minWidth", "MIN_SIZE", "minHeight", "rotationMatrix", "transf", "invRotationMatrix", "invTransf", "getPoint", "getOpposite", "isDiagonal", "isHorizontal", "w", "h", "point", "oppositePoint", "transfOppositePoint", "oppositeX", "oppositeY", "ratioX", "ratioY", "deltaX", "deltaY", "fromKeyboard", "lastScreenX", "lastScreenY", "oldDiag", "hypot", "max", "min", "abs", "_onResizing", "altTextFinish", "finish", "toolbarButtons", "addEditToolbar", "EditorToolbar", "render", "tool", "addButton", "hasComment", "addCommentButton", "addCommentButtonInToolbar", "addButtonBefore", "removeCommentButtonFromToolbar", "removeButton", "removeEditToolbar", "destroy", "addContainer", "container", "editToolbarDiv", "before", "getClientDimensions", "createAltText", "AltText", "data", "altTextData", "guessedAltText", "guessedText", "setGuessedAltText", "text", "setGuessedText", "serializeAltText", "isForCopying", "serialize", "hasAltText", "hasAltTextData", "hasData", "focusCommentButton", "focusButton", "Comment", "addStandaloneCommentButton", "hasCommentManager", "isEditingMode", "renderForStandalone", "removeStandaloneCommentButton", "hideStandaloneCommentButton", "comment", "richText", "date", "color", "getNonHCMColor", "opacity", "updateComment", "removeComment", "setCommentData", "popupRef", "setInitialText", "storedData", "getAndRemoveDataFromAnnotationStorage", "updateFromAnnotationLayer", "hasEditedComment", "hasBeenEdited", "hasDeletedComment", "isDeleted", "editComment", "options", "edit", "toggleComment", "visibility", "undefined", "setSelectedCommentButton", "selected", "setSelectedButton", "addComment", "serialized", "DEFAULT_POPUP_WIDTH", "DEFAULT_POPUP_HEIGHT", "trY", "rect", "blX", "blY", "trX", "popup", "contents", "parentBoundingClientRect", "boundingClientRect", "className", "defaultL10nId", "maxWidth", "maxHeight", "bindEvents", "isResizable", "_supportsPinchToZoom", "TouchManager", "isPinchingDisabled", "onPinchStart", "onPinching", "onPinchEnd", "_editorUndoBar", "hide", "_origin", "prevDistance", "distance", "slowDownFactor", "factor", "transfCenterPoint", "centerX", "centerY", "newTransfCenterPoint", "pointerdown", "shiftKey", "metaKey", "toggleSelected", "setUpDragSession", "hasDraggingStarted", "opts", "cancelDrag", "e", "endDragSession", "_onStopDragging", "clientX", "clientY", "pointerId", "pointerType", "_onStartDragging", "dragSelectedEditors", "isPrimary", "clearTimeout", "setTimeout", "moveEditorInDOM", "_setParentAndPosition", "changeParent", "getRect", "scale", "shiftX", "shiftY", "Error", "getRectInCurrentCoords", "x1", "y1", "x2", "y2", "getPDFRect", "convert", "onUpdatedColor", "getData", "str", "contentsObj", "onceAdded", "focus", "enableEditMode", "setEditingState", "disableEditMode", "shouldGetKeyboardEvents", "needsToBeRebuilt", "isOnScreen", "bottom", "right", "innerHeight", "innerWidth", "rebuild", "rotate", "_angle", "serializeDeleted", "context", "annotationType", "structTreeParentId", "deserialize", "accessibilityData", "isCopy", "hasBeenModified", "removeEditor", "hideCommentPopup", "timeout", "values", "makeResizable", "toolbarPosition", "commentButtonPosition", "direction", "commentButtonPositionInPage", "posX", "posY", "commentButtonColor", "makeCommentColor", "commentPopupPosition", "commentPopupPositionInLayer", "pos", "hasDefaultPopupPosition", "commentButtonWidth", "elementBeforePopup", "setCommentButtonStates", "keydown", "key", "children", "Array", "from", "boundResizerKeydown", "boundResizerBlur", "getAttribute", "first", "firstPosition", "nextFirstPosition", "length", "i", "firstElementChild", "lastElementChild", "child", "focusVisible", "stopImmediatePropagation", "exec", "parentNode", "select", "show", "then", "contains", "toggleAltTextBadge", "activeElement", "preventScroll", "unselect", "updateParams", "type", "disableEditing", "enableEditing", "canChangeContent", "enterInEditMode", "dblclick", "nodeName", "updateToolbar", "editId", "getElementForAltText", "contentDiv", "isEditing", "setActiveEditor", "canCreateNewEmptyEditor", "telemetryInitialData", "action", "telemetryFinalData", "_reportTelemetry", "mustWait", "Map", "get", "delete", "size", "set", "_eventBus", "dispatch", "source", "details", "visible", "enable", "disable", "updateFakeAnnotationElement", "annotationLayer", "addFakeAnnotation", "updateEdited", "renderAnnotationElement", "annotation", "content", "querySelector", "canvas", "resetAnnotationElement", "SEED", "MASK_HIGH", "MASK_LOW", "MurmurHash3_64", "constructor", "seed", "h1", "h2", "update", "input", "data", "length", "Uint8Array", "i", "ii", "code", "charCodeAt", "ArrayBuffer", "isView", "slice", "byteLength", "Error", "blockCounts", "tailLength", "dataUint32", "Uint32Array", "buffer", "k1", "k2", "C1", "C2", "C1_LOW", "C2_LOW", "hexdigest", "toString", "padStart", "SerializableEmpty", "Object", "freeze", "map", "hash", "transfer", "undefined", "AnnotationStorage", "Map", "constructor", "onSetModified", "onResetModified", "onAnnotationEditor", "getValue", "key", "defaultValue", "value", "get", "assign", "getRawValue", "remove", "storedValue", "AnnotationEditor", "delete", "annotationElementId", "size", "resetModified", "values", "setValue", "obj", "modified", "entry", "val", "entries", "set", "_type", "has", "print", "PrintAnnotationStorage", "serializable", "MurmurHash3_64", "context", "create", "hasBitmap", "serialized", "serialize", "update", "JSON", "stringify", "bitmap", "push", "hexdigest", "editorStats", "stats", "typeToEditor", "numberOfEditedComments", "numberOfDeletedComments", "popup", "deleted", "isCommentDeleted", "hasEditedComment", "telemetryFinalData", "type", "getPrototypeOf", "counters", "count", "comments", "edited", "editor", "computeTelemetryFinalData", "resetModifiedIds", "updateEditor", "annotationId", "data", "updateFromAnnotationLayer", "getEditor", "modifiedIds", "ids", "Set", "join", "Symbol", "iterator", "parent", "clone", "structuredClone", "unreachable", "shadow", "FontLoader", "Set", "constructor", "ownerDocument", "globalThis", "document", "styleElement", "_document", "nativeFontFaces", "loadingRequests", "loadTestFontId", "addNativeFontFace", "nativeFontFace", "add", "fonts", "removeNativeFontFace", "delete", "insertRule", "rule", "createElement", "documentElement", "getElementsByTagName", "append", "styleSheet", "sheet", "cssRules", "length", "clear", "remove", "loadSystemFont", "systemFontInfo", "info", "disableFontFace", "_inspectFont", "has", "loadedName", "assert", "isFontLoadingAPISupported", "src", "style", "fontFace", "FontFace", "load", "warn", "baseFontName", "unreachable", "bind", "font", "attached", "missingFile", "createNativeFontFace", "loaded", "ex", "family", "createFontFaceRule", "isSyncFontLoadingSupported", "Promise", "resolve", "request", "_queueLoadingCallback", "_prepareFontLoadEvent", "hasFonts", "shadow", "isNodeJS", "FeatureTest", "platform", "isFirefox", "callback", "completeRequest", "done", "otherRequest", "shift", "setTimeout", "complete", "push", "_loadTestFont", "testFont", "atob", "int32", "data", "offset", "charCodeAt", "spliceString", "s", "insert", "chunk1", "substring", "chunk2", "i", "ii", "canvas", "width", "height", "ctx", "getContext", "called", "isFontReady", "name", "fillText", "imageData", "getImageData", "Date", "now", "COMMENT_OFFSET", "CFF_CHECKSUM_OFFSET", "XXXX_VALUE", "checksum", "string32", "url", "btoa", "div", "visibility", "position", "top", "left", "span", "textContent", "fontFamily", "body", "FontFaceObject", "translatedData", "inspectFont", "extra", "charProcOperatorList", "compiledGlyphs", "Object", "create", "assign", "cssFontInfo", "css", "weight", "fontWeight", "italicAngle", "mimetype", "toBase64Util", "getPathGenerator", "objs", "character", "undefined", "objId", "cmds", "get", "path", "makePathFromDrawOPS", "fontExtraProperties", "black", "bold", "value", "isInvalidPDFjsFont", "isType3Font", "italic", "remeasure", "vertical", "ascent", "defaultWidth", "descent", "bbox", "fontMatrix", "fallbackName", "clearData", "defaultVMetrics", "CssFontInfo", "strings", "write", "info", "encoder", "TextEncoder", "encodedStrings", "stringsLength", "prop", "encoded", "encode", "length", "buffer", "ArrayBuffer", "data", "Uint8Array", "view", "DataView", "offset", "setUint32", "set", "assert", "byteLength", "constructor", "TextDecoder", "index", "i", "getUint32", "decode", "fontFamily", "fontWeight", "italicAngle", "SystemFontInfo", "encodedStyleStyle", "encodedStyleWeight", "lengthEstimate", "style", "weight", "setUint8", "guessFallback", "transferToFixedLength", "getUint8", "css", "loadedName", "baseFontName", "src", "styleLength", "weightLength", "FontInfo", "bools", "numbers", "Math", "ceil", "extra", "Object", "assign", "byteOffset", "floor", "bitOffset", "value", "undefined", "black", "bold", "disableFontFace", "fontExtraProperties", "isInvalidPDFjsFont", "isType3Font", "italic", "missingFile", "remeasure", "vertical", "getFloat64", "ascent", "defaultWidth", "descent", "bbox", "numCoords", "push", "getInt16", "fontMatrix", "numPoints", "defaultVMetrics", "numMetrics", "stringData", "fallbackName", "mimetype", "name", "systemFontInfoLength", "cssFontInfoLength", "clearData", "fill", "cssFontInfo", "cssFontInfoData", "systemFontInfo", "systemFontInfoData", "font", "systemFontInfoBuffer", "cssFontInfoBuffer", "numBools", "boolByte", "boolBit", "bits", "setFloat64", "coord", "setInt16", "point", "metric", "PatternInfo", "ir", "kind", "coords", "colors", "colorStops", "figures", "shadingType", "background", "Error", "nCoord", "nColor", "nStop", "nFigures", "figuresSize", "figure", "verticesPerRow", "byteLen", "dataView", "u8data", "coordsView", "Float32Array", "pos", "hex", "setFloat32", "parseInt", "slice", "v", "type", "figureCoordsView", "Int32Array", "colorsView", "getIR", "hasBBox", "hasBackground", "stops", "p", "getFloat32", "rgb", "toString", "padStart", "coordsLength", "figureCoords", "colorsLength", "figureColors", "MeshFigureType", "LATTICE", "Array", "from", "bounds", "minX", "maxX", "minY", "maxY", "x", "y", "FontPathInfo", "path", "FeatureTest", "isFloat16ArraySupported", "Float16Array", "getUrlProp", "val", "URL", "href", "isNodeJS", "url", "parse", "window", "location", "Error", "getDataProp", "Buffer", "Uint8Array", "byteLength", "buffer", "stringToBytes", "ArrayBuffer", "isView", "isNaN", "length", "getFactoryUrlProp", "endsWith", "isRefProxy", "v", "Number", "isInteger", "num", "gen", "isNameProxy", "name", "isValidExplicitDest", "_isValidExplicitDest", "bind", "LoopbackPort", "Map", "Promise", "resolve", "postMessage", "obj", "transfer", "event", "data", "structuredClone", "then", "listener", "call", "addEventListener", "options", "rmAbort", "signal", "AbortSignal", "aborted", "warn", "onAbort", "removeEventListener", "set", "get", "delete", "terminate", "clear", "CallbackKind", "DATA", "ERROR", "StreamKind", "CANCEL", "CANCEL_COMPLETE", "CLOSE", "ENQUEUE", "PULL", "PULL_COMPLETE", "START_COMPLETE", "onFn", "wrapReason", "ex", "AbortException", "InvalidPDFException", "PasswordException", "ResponseException", "UnknownErrorException", "Error", "unreachable", "name", "message", "code", "status", "missing", "details", "toString", "MessageHandler", "AbortController", "constructor", "sourceName", "targetName", "comObj", "callbackId", "streamId", "streamSinks", "Object", "create", "streamControllers", "callbackCapabilities", "actionHandler", "addEventListener", "bind", "signal", "data", "stream", "callback", "capability", "resolve", "reject", "reason", "action", "Promise", "try", "then", "result", "postMessage", "on", "actionName", "handler", "ah", "send", "transfers", "sendWithPromise", "withResolvers", "promise", "sendWithStream", "queueingStrategy", "ReadableStream", "start", "controller", "startCapability", "startCall", "pullCall", "cancelCall", "isClosed", "desiredSize", "pull", "pullCapability", "cancel", "assert", "cancelCapability", "self", "streamSink", "enqueue", "chunk", "size", "isCancelled", "lastDesiredSize", "sinkCapability", "ready", "close", "error", "onPull", "onCancel", "success", "streamController", "dataReason", "allSettled", "destroy", "abort", "BaseCanvasFactory", "constructor", "enableHWA", "create", "width", "height", "Error", "canvas", "_createCanvas", "context", "getContext", "willReadFrequently", "reset", "canvasAndContext", "destroy", "unreachable", "DOMCanvasFactory", "ownerDocument", "globalThis", "document", "_document", "createElement", "BaseCMapReaderFactory", "constructor", "baseUrl", "isCompressed", "fetch", "name", "Error", "url", "_fetch", "then", "cMapData", "catch", "reason", "unreachable", "DOMCMapReaderFactory", "data", "fetchData", "ArrayBuffer", "Uint8Array", "stringToBytes", "BaseFilterFactory", "addFilter", "maps", "addHCMFilter", "fgColor", "bgColor", "addAlphaFilter", "map", "addLuminosityFilter", "addHighlightHCMFilter", "filterName", "newFgColor", "newBgColor", "destroy", "keepHCM", "DOMFilterFactory", "constructor", "docId", "ownerDocument", "globalThis", "document", "Map", "div", "createElement", "style", "visibility", "contain", "width", "height", "position", "top", "left", "zIndex", "svg", "createElementNS", "SVG_NS", "setAttribute", "append", "body", "length", "mapR", "buffer", "Array", "i", "table", "join", "mapG", "mapB", "bufferR", "bufferG", "bufferB", "id", "undefined", "url", "URL", "baseURI", "isDataScheme", "warn", "updateUrlHash", "value", "get", "tableR", "tableG", "tableB", "key", "set", "filter", "info", "remove", "fgRGB", "Util", "makeHexColor", "bgRGB", "color", "x", "getSteps", "c", "n", "start", "end", "arr", "tableA", "bind", "fgGray", "Math", "round", "bgGray", "newFgRGB", "newBgRGB", "fg", "bg", "step", "newStart", "newStep", "prev", "k", "j", "size", "parentNode", "clear", "feColorMatrix", "feComponentTransfer", "func", "feFunc", "rTable", "gTable", "bTable", "aTable", "getRGB", "getComputedStyle", "getPropertyValue", "BaseStandardFontDataFactory", "constructor", "baseUrl", "fetch", "filename", "Error", "url", "_fetch", "catch", "reason", "unreachable", "DOMStandardFontDataFactory", "data", "fetchData", "Uint8Array", "BaseWasmFactory", "constructor", "baseUrl", "fetch", "filename", "Error", "url", "_fetch", "catch", "reason", "unreachable", "DOMWasmFactory", "data", "fetchData", "Uint8Array", "isNodeJS", "warn", "fetchData", "url", "fs", "process", "getBuiltinModule", "data", "promises", "readFile", "Uint8Array", "NodeFilterFactory", "BaseFilterFactory", "NodeCanvasFactory", "BaseCanvasFactory", "_createCanvas", "width", "height", "require", "createRequire", "import", "canvas", "createCanvas", "NodeCMapReaderFactory", "BaseCMapReaderFactory", "_fetch", "NodeStandardFontDataFactory", "BaseStandardFontDataFactory", "NodeWasmFactory", "BaseWasmFactory", "FORCED_DEPENDENCY_LABEL", "floor", "ceil", "Math", "expandBBox", "array", "index", "minX", "minY", "maxX", "maxY", "min", "max", "EMPTY_BBOX", "Uint32Array", "Uint8Array", "buffer", "BBoxReader", "constructor", "bboxes", "coords", "length", "isEmpty", "i", "ensureDebugMetadata", "map", "key", "undefined", "value", "get", "dependencies", "Set", "isRenderingOperation", "set", "CanvasDependencyTracker", "__proto__", "transform", "moveText", "sameLineText", "Map", "Infinity", "Float64Array", "canvas", "operationsCount", "recordDebugMetadata", "width", "height", "growOperationsCount", "oldBBoxes", "ArrayBuffer", "Uint8ClampedArray", "fill", "save", "opIdx", "push", "restore", "previous", "Object", "getPrototypeOf", "lastSave", "pop", "add", "recordOpenMarker", "idx", "getOpenMarker", "at", "recordCloseMarker", "beginMarkedContent", "endMarkedContent", "pushBaseTransform", "ctx", "Util", "multiplyByDOMMatrix", "getTransform", "popBaseTransform", "recordSimpleData", "name", "recordIncrementalData", "resetIncrementalData", "recordNamedData", "recordSimpleDataFromNamed", "depName", "fallbackIdx", "recordFutureForcedDependency", "inheritSimpleDataAsFutureForcedDependencies", "names", "inheritPendingDependenciesAsFutureForcedDependencies", "dep", "resetBBox", "recordClipBox", "clipBox", "axialAlignedBoundingBox", "intersection", "intersect", "recordBBox", "bbox", "recordCharacterBBox", "font", "scale", "x", "y", "getMeasure", "fontBBox", "isBBoxTrustworthy", "computedBBox", "fontMatrix", "scaleMinMax", "recordFullPageBBox", "measure", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "getSimpleIndex", "dependencyName", "recordDependencies", "dependencyNames", "pendingDependencies", "simple", "incremental", "forEach", "recordNamedDependency", "has", "recordOperation", "preserve", "metadata", "delete", "depIdx", "saveIdx", "clear", "recordShowTextOperation", "deps", "Array", "from", "bboxToClipBoxDropOperation", "_takePendingDependencies", "_extractOperation", "operation", "_pushPendingDependencies", "take", "takeDebugMetadata", "CanvasNestedDependencyTracker", "dependencyTracker", "ignoreBBoxes", "Error", "Dependencies", "stroke", "imageXObject", "rawFillPath", "showText", "transformAndFill", "PathType", "FILL", "STROKE", "SHADING", "applyBoundingBox", "ctx", "bbox", "width", "height", "region", "Path2D", "rect", "clip", "BaseShadingPattern", "isModifyingCurrentTransform", "getPattern", "unreachable", "RadialAxialShadingPattern", "constructor", "IR", "_type", "_bbox", "_colorStops", "_p0", "_p1", "_r0", "_r1", "matrix", "isOriginBased", "isRadial", "_createGradient", "transform", "grad", "firstPoint", "secondPoint", "slice", "Util", "applyTransform", "createLinearGradient", "r0", "r1", "scale", "Float32Array", "singularValueDecompose2dScale", "createRadialGradient", "colorStop", "addColorStop", "owner", "inverse", "pathType", "pattern", "transf", "baseTransform", "precision", "n1", "Math", "hypot", "n2", "ps", "abs", "ownerBBox", "current", "getClippedPathBoundingBox", "getCurrentTransform", "ceil", "tmpCanvas", "cachedCanvases", "getCanvas", "tmpCtx", "context", "clearRect", "canvas", "beginPath", "translate", "fillStyle", "fill", "createPattern", "domMatrix", "DOMMatrix", "setTransform", "drawTriangle", "data", "p1", "p2", "p3", "c1", "c2", "c3", "coords", "colors", "bytes", "rowSize", "tmp", "x1", "offsetX", "scaleX", "y1", "offsetY", "scaleY", "x2", "y2", "x3", "y3", "c1r", "c1g", "c1b", "c2r", "c2g", "c2b", "c3r", "c3g", "c3b", "minY", "round", "maxY", "xa", "car", "cag", "cab", "xb", "cbr", "cbg", "cbb", "y", "k", "x1_", "min", "x2_", "max", "j", "x", "drawFigure", "figure", "cs", "i", "ii", "type", "MeshFigureType", "LATTICE", "verticesPerRow", "rows", "floor", "length", "cols", "q", "TRIANGLES", "Error", "MeshShadingPattern", "_coords", "_colors", "_figures", "_bounds", "_background", "_createMeshCanvas", "combinedScale", "backgroundColor", "EXPECTED_SCALE", "MAX_PATTERN_SIZE", "BORDER_SIZE", "boundsWidth", "boundsHeight", "paddedWidth", "paddedHeight", "createImageData", "putImageData", "matrixScaleX", "matrixScaleY", "temporaryPatternCanvas", "DummyShadingPattern", "getShadingPattern", "PaintType", "COLORED", "UNCOLORED", "TilingPattern", "canvasGraphicsFactory", "color", "operatorList", "xstep", "ystep", "paintType", "tilingType", "createPatternCanvas", "opIdx", "info", "x0", "y0", "combinedScaleX", "combinedScaleY", "canvasWidth", "canvasHeight", "redrawHorizontally", "redrawVertically", "xScaledStep", "yScaledStep", "xScaledWidth", "yScaledHeight", "dimx", "getSizeAndScale", "dimy", "size", "graphics", "createCanvasGraphics", "groupLevel", "setFillAndStrokeStyleToContext", "save", "dependencyTracker", "clipBbox", "executeOperatorList", "endDrawing", "restore", "image", "dimx2", "dimy2", "xSize", "ySize", "tmpCanvas2", "tmpCtx2", "jj", "drawImage", "step", "realOutputSize", "maxSize", "bboxWidth", "bboxHeight", "axialAlignedBoundingBox", "minMax", "endPath", "strokeStyle", "fillColor", "strokeColor", "FormatError", "convertBlackAndWhiteToRGBA", "src", "srcPos", "dest", "width", "height", "nonBlackColor", "inverseDecode", "black", "FeatureTest", "isLittleEndian", "zeroMapping", "oneMapping", "widthInSource", "widthRemainder", "srcLength", "length", "Uint32Array", "buffer", "destPos", "i", "max", "elem", "j", "MIN_FONT_SIZE", "MAX_FONT_SIZE", "EXECUTION_TIME", "EXECUTION_STEPS", "FULL_CHUNK_HEIGHT", "SCALE_MATRIX", "DOMMatrix", "XY", "Float32Array", "MIN_MAX_INIT", "Infinity", "mirrorContextOperations", "ctx", "destCtx", "_removeMirroring", "Error", "__originalSave", "save", "__originalRestore", "restore", "__originalRotate", "rotate", "__originalScale", "scale", "__originalTranslate", "translate", "__originalTransform", "transform", "__originalSetTransform", "setTransform", "__originalResetTransform", "resetTransform", "__originalClip", "clip", "__originalMoveTo", "moveTo", "__originalLineTo", "lineTo", "__originalBezierCurveTo", "bezierCurveTo", "__originalRect", "rect", "__originalClosePath", "closePath", "__originalBeginPath", "beginPath", "x", "y", "a", "b", "c", "d", "e", "f", "angle", "rule", "cp1x", "cp1y", "cp2x", "cp2y", "width", "height", "CachedCanvases", "constructor", "canvasFactory", "cache", "Object", "create", "getCanvas", "id", "canvasEntry", "undefined", "reset", "delete", "clear", "destroy", "drawImageAtIntegerCoords", "srcImg", "srcX", "srcY", "srcW", "srcH", "destX", "destY", "destW", "destH", "tx", "ty", "getCurrentTransform", "tlX", "rTlX", "Math", "round", "tlY", "rTlY", "brX", "rWidth", "abs", "brY", "rHeight", "sign", "drawImage", "scaleX", "hypot", "scaleY", "CanvasExtraState", "alphaIsShape", "fontSize", "fontSizeScale", "textMatrix", "textMatrixScale", "fontMatrix", "FONT_IDENTITY_MATRIX", "leading", "lineX", "lineY", "charSpacing", "wordSpacing", "textHScale", "textRenderingMode", "TextRenderingMode", "FILL", "textRise", "fillColor", "strokeColor", "patternFill", "patternStroke", "fillAlpha", "strokeAlpha", "lineWidth", "activeSMask", "transferMaps", "preInit", "clipBox", "minMax", "slice", "clone", "getPathBoundingBox", "pathType", "PathType", "box", "STROKE", "unreachable", "Util", "singularValueDecompose2dScale", "xStrokePad", "yStrokePad", "updateClipFromPath", "intersect", "startNewPathAndClipBox", "isEmptyClip", "set", "getClippedPathBoundingBox", "putBinaryImageData", "imgData", "ImageData", "putImageData", "partialChunkHeight", "fullChunks", "totalChunks", "chunkImgData", "createImageData", "srcPos", "destPos", "src", "data", "dest", "i", "j", "thisChunkHeight", "elemsInThisChunk", "kind", "ImageKind", "GRAYSCALE_1BPP", "srcLength", "byteLength", "dest32", "Uint32Array", "buffer", "dest32DataLength", "length", "fullSrcDiff", "white", "black", "FeatureTest", "isLittleEndian", "srcDiff", "k", "kEnd", "kEndUnrolled", "mask", "srcByte", "RGBA_32BPP", "subarray", "RGB_24BPP", "putBinaryImageMask", "bitmap", "convertBlackAndWhiteToRGBA", "nonBlackColor", "copyCtxState", "sourceCtx", "properties", "property", "setLineDash", "getLineDash", "lineDashOffset", "resetCtxToDefault", "strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font", "filter", "getImageSmoothingEnabled", "interpolate", "actualScale", "fround", "OutputScale", "pixelRatio", "PixelsPerInch", "PDF_TO_CSS_UNITS", "LINE_CAP_STYLES", "LINE_JOIN_STYLES", "NORMAL_CLIP", "EO_CLIP", "CanvasGraphics", "canvasCtx", "commonObjs", "objs", "filterFactory", "optionalContentConfig", "markedContentStack", "annotationCanvasMap", "pageColors", "dependencyTracker", "current", "canvas", "stateStack", "pendingClip", "pendingEOFill", "res", "xobjs", "groupStack", "baseTransform", "baseTransformStack", "groupLevel", "smaskStack", "smaskCounter", "tempSMask", "suspendedCtx", "contentVisible", "cachedCanvases", "cachedPatterns", "Map", "viewportScale", "outputScaleX", "outputScaleY", "_cachedScaleForStroking", "_cachedGetSinglePixelWidth", "_cachedBitmapsMap", "getObject", "opIdx", "fallback", "recordNamedDependency", "startsWith", "get", "beginDrawing", "viewport", "transparency", "background", "savedFillStyle", "fillRect", "transparentCanvas", "compositeCtx", "context", "executeOperatorList", "operatorList", "executionStartIdx", "continueCallback", "stepper", "operationsFilter", "argsArray", "fnArray", "argsArrayLen", "chunkOperations", "endTime", "Date", "now", "steps", "fnId", "fnArgs", "nextBreakPoint", "breakIt", "OPS", "dependency", "depObjId", "recordNamedData", "objsPool", "has", "inSMaskMode", "endDrawing", "values", "HTMLCanvasElement", "hcmFilterId", "addHCMFilter", "foreground", "savedFilter", "_scaleImage", "img", "inverseTransform", "displayWidth", "displayHeight", "widthScale", "max", "heightScale", "paintWidth", "paintHeight", "tmpCanvasId", "tmpCanvas", "tmpCtx", "newWidth", "newHeight", "floor", "ceil", "clearRect", "_createMaskCanvas", "isPatternFill", "currentTransform", "cacheKey", "scaled", "maskCanvas", "count", "mainKey", "JSON", "stringify", "cachedImage", "offsetX", "min", "offsetY", "recordDependencies", "Dependencies", "transformAndFill", "maskToCanvas", "axialAlignedBoundingBox", "minX", "minY", "maxX", "maxY", "drawnWidth", "drawnHeight", "fillCanvas", "fillCtx", "getCurrentTransformInverse", "imageSmoothingEnabled", "inverse", "getPattern", "setLineWidth", "recordSimpleData", "setLineCap", "style", "setLineJoin", "setMiterLimit", "limit", "setDash", "dashArray", "dashPhase", "setRenderingIntent", "intent", "setFlatness", "flatness", "setGState", "states", "key", "value", "setFont", "checkSMaskState", "addFilter", "beginSMaskMode", "endSMaskMode", "cacheId", "scratchCanvas", "getTransform", "compose", "dirtyBox", "smask", "composeSMask", "layerCtx", "layerBox", "layerOffsetX", "layerOffsetY", "layerWidth", "layerHeight", "genericComposeSMask", "subtype", "backdrop", "transferMap", "maskCtx", "maskOffsetX", "maskOffsetY", "maskX", "maskY", "Path2D", "addAlphaFilter", "addLuminosityFilter", "old", "push", "pop", "recordIncrementalData", "constructPath", "op", "path", "outerExtraSize", "stroke", "resetBBox", "recordBBox", "makePathFromDrawOPS", "_pathStartIdx", "consumePath", "isModifyingCurrentTransform", "newPath", "addPath", "invertSelf", "multiplySelf", "rescaleAndStroke", "closeStroke", "fill", "needRestore", "eoFill", "fillStroke", "eoFillStroke", "closeFillStroke", "closeEOFillStroke", "endPath", "rawFillPath", "recordOperation", "recordFutureForcedDependency", "eoClip", "beginText", "recordOpenMarker", "resetIncrementalData", "endText", "paths", "pendingTextPaths", "getOpenMarker", "recordCloseMarker", "invTransf", "preMultiplySelf", "setCharSpacing", "spacing", "setWordSpacing", "setHScale", "setLeading", "fontRefName", "size", "recordSimpleDataFromNamed", "fontObj", "warn", "fontDirection", "isType3Font", "name", "loadedName", "typeface", "systemFontInfo", "css", "fallbackName", "bold", "italic", "browserFontSize", "setTextRenderingMode", "mode", "setTextRise", "rise", "moveText", "setLeadingMoveText", "setTextMatrix", "matrix", "nextLine", "getSimpleIndex", "paintChar", "character", "patternFillTransform", "patternStrokeTransform", "fillStrokeMode", "FILL_STROKE_MASK", "isAddToPathSet", "ADD_TO_PATH_FLAG", "missingFile", "disableFontFace", "getPathGenerator", "recordCharacterBBox", "FILL_STROKE", "scaledPath", "invPatternTransform", "transf", "fillText", "measureText", "strokeText", "isFontSubpixelAAEnabled", "getImageData", "enabled", "shadow", "showText", "glyphs", "inheritPendingDependenciesAsFutureForcedDependencies", "showType3Text", "recordShowTextOperation", "glyphsLength", "vertical", "spacingDir", "defaultVMetrics", "widthAdvanceScale", "simpleFillText", "needsFill", "needsStroke", "pattern", "getSinglePixelWidth", "isInvalidPDFjsFont", "chars", "glyph", "unicode", "joinedChars", "join", "measure", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "restoreNeeded", "isSpace", "fontChar", "accent", "scaledX", "scaledY", "vmetric", "vx", "vy", "remeasure", "measuredWidth", "characterScaleX", "isInFont", "bbox", "scaledAccentX", "offset", "scaledAccentY", "charWidth", "isTextInvisible", "INVISIBLE", "spacingLength", "CanvasNestedDependencyTracker", "charProcOperatorList", "operatorListId", "p", "applyTransform", "setCharWidth", "xWidth", "yWidth", "setCharWidthAndBounds", "llx", "lly", "urx", "ury", "recordClipBox", "getColorN_Pattern", "IR", "canvasGraphicsFactory", "createCanvasGraphics", "renderingOpIdx", "TilingPattern", "_getPattern", "setStrokeColorN", "args", "setFillColorN", "setStrokeRGBColor", "color", "setStrokeTransparent", "setFillRGBColor", "setFillTransparent", "objId", "getShadingPattern", "shadingFill", "SHADING", "inv", "x0", "y0", "x1", "y1", "recordFullPageBBox", "beginInlineImage", "beginImageData", "paintFormXObjectBegin", "paintFormXObjectEnd", "beginGroup", "group", "currentCtx", "isolated", "info", "knockout", "bounds", "canvasBounds", "groupCtx", "startTransformInverse", "inheritSimpleDataAsFutureForcedDependencies", "pushBaseTransform", "endGroup", "popBaseTransform", "currentMtx", "beginAnnotation", "hasOwnCanvas", "canvasWidth", "canvasHeight", "annotationCanvas", "savedCtx", "endAnnotation", "paintImageMaskXObject", "paintImageMaskXObjectRepeat", "skewX", "skewY", "positions", "ii", "trans", "paintImageMaskXObjectGroup", "images", "image", "paintImageXObject", "paintInlineImageXObject", "paintImageXObjectRepeat", "map", "w", "h", "paintInlineImageXObjectGroup", "applyTransferMapsToCanvas", "applyTransferMapsToBitmap", "imgToPaint", "HTMLElement", "imageXObject", "entry", "paintSolidColorImageMask", "markPoint", "tag", "markPointProps", "beginMarkedContent", "visible", "beginMarkedContentProps", "isVisible", "isContentVisible", "endMarkedContent", "beginCompat", "endCompat", "isEmpty", "bboxToClipBoxDropOperation", "m", "absDet", "normX", "normY", "getScaleForStroking", "scaledLineWidth", "scaledXLineWidth", "scaledYLineWidth", "baseArea", "saveRestore", "dashes", "prototype", "GlobalWorkerOptions", "workerPort", "val", "Worker", "Error", "workerSrc", "Metadata", "constructor", "parsedData", "rawData", "getRaw", "get", "name", "Symbol", "iterator", "entries", "INTERNAL", "Symbol", "OptionalContentGroup", "constructor", "renderingIntent", "name", "intent", "usage", "rbGroups", "RenderingIntentFlag", "DISPLAY", "PRINT", "visible", "print", "view", "viewState", "printState", "_setVisible", "internal", "userSet", "unreachable", "OptionalContentConfig", "Map", "data", "creator", "order", "group", "groups", "set", "id", "baseState", "values", "on", "get", "off", "getHash", "array", "length", "operator", "i", "element", "state", "Array", "isArray", "has", "warn", "isVisible", "size", "info", "type", "expression", "policy", "ids", "setVisibility", "preserveRB", "rbGroup", "otherId", "setOCGState", "elem", "hasInitialVisibility", "getOrder", "slice", "keys", "getGroup", "hash", "MurmurHash3_64", "update", "hexdigest", "iterator", "entries", "PDFDataTransportStream", "constructor", "pdfDataRangeTransport", "disableRange", "disableStream", "assert", "length", "initialData", "progressiveDone", "contentDispositionFilename", "_queuedChunks", "_progressiveDone", "_contentDispositionFilename", "buffer", "Uint8Array", "byteLength", "push", "_pdfDataRangeTransport", "_isStreamingSupported", "_isRangeSupported", "_contentLength", "_fullRequestReader", "_rangeReaders", "addRangeListener", "begin", "chunk", "_onReceiveData", "addProgressListener", "loaded", "total", "_onProgress", "addProgressiveReadListener", "addProgressiveDoneListener", "_onProgressiveDone", "transportReady", "undefined", "_enqueue", "found", "some", "rangeReader", "_begin", "_progressiveDataLength", "_loaded", "evt", "onProgress", "_removeRangeReader", "reader", "i", "indexOf", "splice", "getFullReader", "queuedChunks", "PDFDataTransportStreamReader", "getRangeReader", "end", "PDFDataTransportStreamRangeReader", "requestDataRange", "cancelAllRequests", "reason", "cancel", "slice", "abort", "stream", "_stream", "_done", "_filename", "isPdfFile", "_requests", "_headersReady", "Promise", "resolve", "requestCapability", "shift", "value", "done", "headersReady", "filename", "isRangeSupported", "isStreamingSupported", "contentLength", "read", "withResolvers", "promise", "_end", "_queuedChunk", "requestsCapability", "getFilenameFromContentDispositionHeader", "contentDisposition", "needsEncodingFixup", "tmp", "toParamRegExp", "exec", "filename", "rfc2616unquote", "unescape", "rfc5987decode", "rfc2047decode", "fixupEncoding", "rfc2231getparam", "attributePattern", "flags", "RegExp", "textdecode", "encoding", "value", "test", "decoder", "TextDecoder", "fatal", "buffer", "stringToBytes", "decode", "contentDispositionStr", "matches", "match", "iter", "n", "quot", "part", "parseInt", "parts", "length", "push", "join", "startsWith", "slice", "split", "i", "quotindex", "indexOf", "replaceAll", "extvalue", "encodingend", "langvalue", "replace", "charset", "text", "hex", "String", "fromCharCode", "atob", "createHeaders", "isHttp", "httpHeaders", "headers", "Headers", "key", "val", "undefined", "append", "getResponseOrigin", "url", "URL", "parse", "origin", "validateRangeRequestCapabilities", "responseHeaders", "rangeChunkSize", "disableRange", "returnValues", "allowRangeRequests", "suggestedLength", "length", "parseInt", "get", "Number", "isInteger", "contentEncoding", "extractFilenameFromHeader", "contentDisposition", "filename", "getFilenameFromContentDispositionHeader", "includes", "decodeURIComponent", "isPdfFile", "createResponseError", "status", "ResponseException", "startsWith", "validateResponseStatus", "createFetchOptions", "headers", "withCredentials", "abortController", "method", "signal", "mode", "credentials", "redirect", "getArrayBuffer", "val", "Uint8Array", "buffer", "ArrayBuffer", "warn", "PDFFetchStream", "_responseOrigin", "constructor", "source", "isHttp", "test", "url", "createHeaders", "httpHeaders", "_fullRequestReader", "_rangeRequestReaders", "_progressiveDataLength", "_loaded", "getFullReader", "assert", "PDFFetchStreamReader", "getRangeReader", "begin", "end", "reader", "PDFFetchStreamRangeReader", "push", "cancelAllRequests", "reason", "cancel", "slice", "stream", "_stream", "_reader", "_filename", "_withCredentials", "_contentLength", "length", "_headersCapability", "Promise", "withResolvers", "_disableRange", "disableRange", "_rangeChunkSize", "rangeChunkSize", "_abortController", "AbortController", "_isStreamingSupported", "disableStream", "_isRangeSupported", "Headers", "fetch", "then", "response", "getResponseOrigin", "validateResponseStatus", "status", "createResponseError", "body", "getReader", "resolve", "responseHeaders", "allowRangeRequests", "suggestedLength", "validateRangeRequestCapabilities", "extractFilenameFromHeader", "AbortException", "catch", "reject", "onProgress", "headersReady", "promise", "filename", "contentLength", "isRangeSupported", "isStreamingSupported", "read", "value", "done", "byteLength", "loaded", "total", "abort", "_readCapability", "append", "responseOrigin", "Error", "OK_RESPONSE", "PARTIAL_CONTENT_RESPONSE", "getArrayBuffer", "xhr", "data", "response", "stringToBytes", "buffer", "NetworkManager", "_responseOrigin", "constructor", "url", "httpHeaders", "withCredentials", "isHttp", "test", "headers", "createHeaders", "currXhrId", "pendingRequests", "Object", "create", "request", "args", "XMLHttpRequest", "xhrId", "pendingRequest", "open", "key", "val", "setRequestHeader", "begin", "end", "expectedStatus", "responseType", "assert", "onError", "onerror", "status", "onreadystatechange", "onStateChange", "bind", "onprogress", "onProgress", "onHeadersReceived", "onDone", "send", "evt", "readyState", "xhrStatus", "ok_response_on_range_request", "chunk", "rangeHeader", "getResponseHeader", "matches", "exec", "parseInt", "warn", "getRequestXhr", "isPendingRequest", "abortRequest", "abort", "PDFNetworkStream", "source", "_source", "_manager", "_rangeChunkSize", "rangeChunkSize", "_fullRequestReader", "_rangeRequestReaders", "_onRangeRequestReaderClosed", "reader", "i", "indexOf", "splice", "getFullReader", "PDFNetworkStreamFullRequestReader", "getRangeReader", "PDFNetworkStreamRangeRequestReader", "onClosed", "push", "cancelAllRequests", "reason", "cancel", "slice", "manager", "_url", "_fullRequestId", "_onHeadersReceived", "_onDone", "_onError", "_onProgress", "_headersCapability", "Promise", "withResolvers", "_disableRange", "disableRange", "_contentLength", "length", "_isStreamingSupported", "_isRangeSupported", "_cachedChunks", "_requests", "_done", "_storedError", "undefined", "_filename", "fullRequestXhrId", "fullRequestXhr", "getResponseOrigin", "responseURL", "rawResponseHeaders", "getAllResponseHeaders", "responseHeaders", "Headers", "trimStart", "replace", "split", "map", "x", "join", "allowRangeRequests", "suggestedLength", "validateRangeRequestCapabilities", "extractFilenameFromHeader", "resolve", "requestCapability", "shift", "value", "done", "createResponseError", "reject", "loaded", "total", "lengthComputable", "filename", "isRangeSupported", "isStreamingSupported", "contentLength", "headersReady", "promise", "read", "_requestId", "_queuedChunk", "responseOrigin", "Error", "_close", "urlRegex", "parseUrlOrPath", "sourceUrl", "test", "URL", "url", "process", "getBuiltinModule", "pathToFileURL", "PDFNodeStream", "constructor", "source", "assert", "protocol", "_fullRequestReader", "_rangeRequestReaders", "_progressiveDataLength", "_loaded", "getFullReader", "PDFNodeStreamFsFullReader", "getRangeReader", "start", "end", "rangeReader", "PDFNodeStreamFsRangeReader", "push", "cancelAllRequests", "reason", "cancel", "reader", "slice", "stream", "_url", "_done", "_storedError", "onProgress", "_contentLength", "length", "_filename", "_disableRange", "disableRange", "_rangeChunkSize", "rangeChunkSize", "_isStreamingSupported", "disableStream", "_isRangeSupported", "_readableStream", "_readCapability", "Promise", "withResolvers", "_headersCapability", "fs", "promises", "lstat", "then", "stat", "size", "_setReadableStream", "createReadStream", "resolve", "error", "code", "createResponseError", "href", "reject", "headersReady", "promise", "filename", "contentLength", "isRangeSupported", "isStreamingSupported", "read", "value", "undefined", "done", "chunk", "loaded", "total", "buffer", "Uint8Array", "_error", "destroy", "readableStream", "on", "AbortException", "INITIAL_DATA", "Symbol", "PDFObjects", "Object", "create", "objId", "Promise", "withResolvers", "data", "get", "callback", "obj", "promise", "then", "Error", "has", "delete", "resolve", "clear", "bitmap", "close", "iterator", "MAX_TEXT_DIVS_TO_RENDER", "DEFAULT_FONT_SIZE", "TextLayer", "Promise", "withResolvers", "globalThis", "FontInspector", "enabled", "Object", "create", "WeakMap", "Map", "Set", "constructor", "textContentSource", "container", "viewport", "ReadableStream", "start", "controller", "enqueue", "close", "Error", "scale", "OutputScale", "pixelRatio", "rotation", "div", "properties", "ctx", "pageWidth", "pageHeight", "pageX", "pageY", "rawDims", "style", "setProperty", "setLayerDimensions", "promise", "finally", "delete", "catch", "fontFamilyMap", "isWindows", "isFirefox", "FeatureTest", "platform", "shadow", "render", "pump", "read", "then", "value", "done", "resolve", "lang", "assign", "styles", "items", "reject", "getReader", "add", "update", "onBefore", "params", "get", "cancel", "abortEx", "AbortException", "textDivs", "textContentItemsStr", "item", "length", "warn", "str", "undefined", "type", "parent", "document", "createElement", "classList", "id", "setAttribute", "append", "parentNode", "push", "geom", "textDiv", "textDivProperties", "angle", "canvasWidth", "hasText", "hasEOL", "fontSize", "tx", "Util", "transform", "Math", "atan2", "fontName", "vertical", "PI", "fontFamily", "fontSubstitution", "fontHeight", "hypot", "fontAscent", "left", "top", "sin", "cos", "divStyle", "toFixed", "textContent", "dir", "dataset", "fontSubstitutionLoadedName", "shouldScaleText", "absScaleX", "abs", "absScaleY", "max", "min", "height", "width", "set", "br", "measureText", "cleanup", "size", "clear", "canvas", "values", "remove", "className", "body", "getContext", "alpha", "willReadFrequently", "family", "cached", "font", "opacity", "lineHeight", "position", "getBoundingClientRect", "cachedAscent", "metrics", "ascent", "fontBoundingBoxAscent", "descent", "fontBoundingBoxDescent", "ratio", "RENDERING_CANCELLED_TIMEOUT", "getDocument", "src", "URL", "url", "ArrayBuffer", "isView", "data", "task", "PDFDocumentLoadingTask", "docId", "getUrlProp", "getDataProp", "httpHeaders", "withCredentials", "password", "rangeTransport", "range", "PDFDataRangeTransport", "rangeChunkSize", "Number", "isInteger", "worker", "PDFWorker", "verbosity", "docBaseUrl", "isDataScheme", "cMapUrl", "getFactoryUrlProp", "cMapPacked", "CMapReaderFactory", "isNodeJS", "NodeCMapReaderFactory", "DOMCMapReaderFactory", "iccUrl", "standardFontDataUrl", "StandardFontDataFactory", "NodeStandardFontDataFactory", "DOMStandardFontDataFactory", "wasmUrl", "WasmFactory", "NodeWasmFactory", "DOMWasmFactory", "ignoreErrors", "stopAtErrors", "maxImageSize", "isEvalSupported", "isOffscreenCanvasSupported", "isImageDecoderSupported", "FeatureTest", "platform", "isFirefox", "globalThis", "chrome", "canvasMaxAreaInBytes", "disableFontFace", "fontExtraProperties", "enableXfa", "ownerDocument", "document", "disableRange", "disableStream", "disableAutoFetch", "pdfBug", "CanvasFactory", "NodeCanvasFactory", "DOMCanvasFactory", "FilterFactory", "NodeFilterFactory", "DOMFilterFactory", "enableHWA", "useWasm", "length", "NaN", "useSystemFonts", "useWorkerFetch", "isValidFetchUrl", "baseURI", "styleElement", "setVerbosityLevel", "transportFactory", "canvasFactory", "filterFactory", "cMapReaderFactory", "baseUrl", "isCompressed", "standardFontDataFactory", "wasmFactory", "create", "port", "GlobalWorkerOptions", "workerPort", "_worker", "docParams", "apiVersion", "evaluatorOptions", "transportParams", "loadingParams", "promise", "then", "destroyed", "Error", "workerIdPromise", "messageHandler", "sendWithPromise", "buffer", "networkStream", "PDFDataTransportStream", "NetworkStream", "PDFFetchStream", "PDFNodeStream", "PDFNetworkStream", "workerId", "MessageHandler", "transport", "WorkerTransport", "_transport", "send", "catch", "_capability", "reject", "Promise", "withResolvers", "onPassword", "onProgress", "destroy", "_pendingDestroy", "ex", "getData", "constructor", "initialData", "progressiveDone", "contentDispositionFilename", "addRangeListener", "listener", "push", "addProgressListener", "addProgressiveReadListener", "addProgressiveDoneListener", "onDataRange", "begin", "chunk", "onDataProgress", "loaded", "total", "onDataProgressiveRead", "onDataProgressiveDone", "transportReady", "resolve", "requestDataRange", "end", "unreachable", "abort", "PDFDocumentProxy", "pdfInfo", "_pdfInfo", "annotationStorage", "numPages", "fingerprints", "isPureXfa", "shadow", "_htmlForXfa", "allXfaHtml", "getPage", "pageNumber", "getPageIndex", "ref", "getDestinations", "getDestination", "id", "getPageLabels", "getPageLayout", "getPageMode", "getViewerPreferences", "getOpenAction", "getAttachments", "getAnnotationsByType", "types", "pageIndexesToSkip", "getJSActions", "getDocJSActions", "getOutline", "getOptionalContentConfig", "intent", "renderingIntent", "getRenderingIntent", "getPermissions", "getMetadata", "getMarkInfo", "saveDocument", "extractPages", "pageInfos", "getDownloadInfo", "downloadInfoCapability", "cleanup", "keepLoadedFonts", "startCleanup", "loadingTask", "cachedPageNumber", "getFieldObjects", "hasJSActions", "getCalculationOrderIds", "PDFPageProxy", "pageIndex", "pageInfo", "_pageIndex", "_pageInfo", "_stats", "StatTimer", "_pdfBug", "commonObjs", "objs", "PDFObjects", "_intentStates", "Map", "recordedBBoxes", "rotate", "userUnit", "view", "getViewport", "scale", "rotation", "offsetX", "offsetY", "dontFlip", "PageViewport", "viewBox", "getAnnotations", "getPageJSActions", "getXfa", "children", "render", "canvasContext", "canvas", "viewport", "annotationMode", "AnnotationMode", "ENABLE", "transform", "background", "optionalContentConfigPromise", "annotationCanvasMap", "pageColors", "printAnnotationStorage", "isEditing", "recordOperations", "operationsFilter", "time", "intentArgs", "cacheKey", "intentState", "get", "Object", "set", "streamReaderCancelTimeout", "clearTimeout", "intentPrint", "RenderingIntentFlag", "PRINT", "displayReadyCapability", "operatorList", "fnArray", "argsArray", "lastChunk", "separateAnnots", "_pumpOperatorList", "recordForDebugger", "Boolean", "StepperManager", "enabled", "shouldRecordOperations", "complete", "error", "renderTasks", "delete", "internalRenderTask", "gfx", "dependencyTracker", "take", "stepper", "setOperatorBBoxes", "takeDebugMetadata", "capability", "_abortOperatorList", "reason", "timeEnd", "Stats", "add", "InternalRenderTask", "callback", "params", "CanvasDependencyTracker", "useRequestAnimationFrame", "Set", "renderTask", "all", "transparency", "optionalContentConfig", "initializeGraphics", "operatorListChanged", "getOperatorList", "opListReadCapability", "opListTask", "streamTextContent", "includeMarkedContent", "disableNormalization", "TEXT_CONTENT_CHUNK_SIZE", "sendWithStream", "highWaterMark", "size", "textContent", "items", "getTextContent", "xfa", "XfaText", "readableStream", "pump", "reader", "read", "value", "done", "lang", "assign", "styles", "getReader", "getStructTree", "_destroy", "waitOn", "values", "force", "completed", "cancel", "clear", "resetStats", "success", "_startRenderPage", "_renderPageChunk", "operatorListChunk", "i", "ii", "annotationStorageSerializable", "modifiedIds", "map", "transfer", "streamReader", "RenderingCancelledException", "delay", "extraDelay", "setTimeout", "AbortException", "message", "curCacheKey", "curIntentState", "stats", "WeakMap", "workerSrc", "_isSameOrigin", "otherUrl", "base", "parse", "origin", "other", "_createCDNWrapper", "wrapper", "createObjectURL", "Blob", "type", "fromPort", "deprecated", "name", "getVerbosityLevel", "has", "on", "window", "location", "href", "Worker", "terminateEarly", "ac", "terminate", "AbortController", "addEventListener", "signal", "sendTest", "testObj", "Uint8Array", "info", "warn", "_setupFakeWorkerGlobal", "WorkerMessageHandler", "LoopbackPort", "workerHandler", "setup", "cachedPort", "pdfjsWorker", "loader", "factory", "fontLoader", "FontLoader", "_params", "destroyCapability", "_networkStream", "_fullReader", "_lastProgress", "setupMessageHandler", "cachedPromise", "AnnotationStorage", "isOpList", "DISPLAY", "SerializableEmpty", "ANY", "PrintAnnotationStorage", "DISABLE", "ANNOTATIONS_DISABLE", "ENABLE_FORMS", "ANNOTATIONS_FORMS", "ENABLE_STORAGE", "ANNOTATIONS_STORAGE", "serializable", "IS_EDITING", "OPLIST", "ids", "hash", "modifiedIdsHash", "cacheKeyBuf", "join", "page", "hasOwnProperty", "resetModified", "terminated", "TextLayer", "cancelAllRequests", "sink", "assert", "getFullReader", "evt", "onPull", "close", "enqueue", "onCancel", "ready", "readyReason", "headersReady", "isStreamingSupported", "isRangeSupported", "contentLength", "rangeReader", "getRangeReader", "_numPages", "htmlForXfa", "wrapReason", "updatePassword", "code", "err", "exportedData", "exportedError", "fontData", "FontInfo", "inspectFont", "FontInspector", "font", "fontAdded", "FontFaceObject", "extra", "charProcOperatorList", "bind", "finally", "clearData", "imageRef", "pageProxy", "dataLen", "structuredClone", "FontPathInfo", "pattern", "PatternInfo", "getIR", "imageData", "bitmap", "fetch", "filename", "refStr", "isRefProxy", "num", "gen", "OptionalContentConfig", "results", "metadata", "Metadata", "hasStructTree", "cleanupSuccessful", "RenderTask", "onContinue", "onError", "form", "WeakSet", "operatorListIdx", "running", "graphicsReadyCallback", "graphicsReady", "_useRequestAnimationFrame", "cancelled", "_cancelBound", "_continueBound", "_continue", "_scheduleNextBound", "_scheduleNext", "_nextBound", "_next", "_canvas", "_canvasContext", "_enableHWA", "_dependencyTracker", "_operationsFilter", "init", "nextBreakPoint", "getNextBreakPoint", "getContext", "alpha", "willReadFrequently", "CanvasGraphics", "beginDrawing", "endDrawing", "cancelAnimationFrame", "growOperationsCount", "updateOperatorList", "requestAnimationFrame", "executeOperatorList", "version", "build", "ColorPicker", "_keyboardManager", "shadow", "KeyboardManager", "prototype", "_hideDropdownFromKeyboard", "_colorSelectFromKeyboard", "_moveToNext", "_moveToPrevious", "_moveToBeginning", "_moveToEnd", "constructor", "editor", "uiManager", "_uiManager", "_eventBus", "color", "toUpperCase", "highlightColors", "values", "next", "value", "Object", "freeze", "blue", "green", "pink", "red", "yellow", "renderButton", "button", "document", "createElement", "className", "tabIndex", "setAttribute", "ariaHasPopup", "ariaControls", "id", "signal", "_signal", "addEventListener", "bind", "swatch", "ariaHidden", "style", "backgroundColor", "append", "renderMainDropdown", "dropdown", "ariaOrientation", "ariaLabelledBy", "div", "noContextMenu", "role", "ariaMultiSelectable", "name", "title", "ariaSelected", "event", "stopPropagation", "dispatch", "source", "type", "AnnotationEditorParamsType", "HIGHLIGHT_COLOR", "updateColor", "target", "getAttribute", "firstElementChild", "focus", "nextSibling", "previousSibling", "lastElementChild", "exec", "hideDropdown", "detail", "AbortController", "window", "combinedSignal", "ariaExpanded", "classList", "remove", "root", "contains", "add", "abort", "unselect", "preventScroll", "focusVisible", "i", "child", "children", "destroy", "BasicColorPicker", "freetext", "ink", "editorType", "colorType", "input", "updateParams", "update", "makeColorComp", "n", "Math", "floor", "max", "min", "toString", "padStart", "scaleAndClamp", "x", "ColorConverters", "CMYK_G", "c", "y", "m", "k", "G_CMYK", "g", "G_RGB", "G_rgb", "G_HTML", "G", "RGB_G", "r", "b", "RGB_rgb", "color", "map", "RGB_HTML", "join", "T_HTML", "T_rgb", "CMYK_RGB", "CMYK_rgb", "CMYK_HTML", "components", "rgb", "slice", "RGB_CMYK", "BaseSVGFactory", "create", "width", "height", "skipDimensions", "Error", "svg", "_createSVG", "setAttribute", "createElement", "type", "unreachable", "DOMSVGFactory", "document", "createElementNS", "SVG_NS", "DEFAULT_FONT_SIZE", "GetElementsByNameSet", "WeakSet", "TIMEZONE_OFFSET", "Date", "getTimezoneOffset", "AnnotationElementFactory", "create", "parameters", "subtype", "data", "annotationType", "AnnotationType", "LINK", "LinkAnnotationElement", "TEXT", "TextAnnotationElement", "WIDGET", "fieldType", "TextWidgetAnnotationElement", "radioButton", "RadioButtonWidgetAnnotationElement", "checkBox", "CheckboxWidgetAnnotationElement", "PushButtonWidgetAnnotationElement", "ChoiceWidgetAnnotationElement", "SignatureWidgetAnnotationElement", "WidgetAnnotationElement", "POPUP", "PopupAnnotationElement", "FREETEXT", "FreeTextAnnotationElement", "LINE", "LineAnnotationElement", "SQUARE", "SquareAnnotationElement", "CIRCLE", "CircleAnnotationElement", "POLYLINE", "PolylineAnnotationElement", "CARET", "CaretAnnotationElement", "INK", "InkAnnotationElement", "POLYGON", "PolygonAnnotationElement", "HIGHLIGHT", "HighlightAnnotationElement", "UNDERLINE", "UnderlineAnnotationElement", "SQUIGGLY", "SquigglyAnnotationElement", "STRIKEOUT", "StrikeOutAnnotationElement", "STAMP", "StampAnnotationElement", "FILEATTACHMENT", "FileAttachmentAnnotationElement", "AnnotationElement", "constructor", "isRenderable", "ignoreBorder", "createQuadrilaterals", "layer", "linkService", "downloadManager", "imageResourcesPath", "renderForms", "svgFactory", "annotationStorage", "enableComment", "enableScripting", "hasJSActions", "_fieldObjects", "fieldObjects", "parent", "hasOwnCommentButton", "contentElement", "container", "_createContainer", "_createQuadrilaterals", "_hasPopupData", "contentsObj", "richText", "str", "_isEditable", "isEditable", "hasPopupData", "commentText", "commentData", "editor", "getEditor", "id", "getData", "hasCommentButton", "hasPopupElement", "commentButtonPosition", "commentButtonPositionInPage", "quadPoints", "inkLists", "rect", "maxX", "maxY", "length", "i", "Math", "max", "inkList", "ii", "Infinity", "_normalizePoint", "point", "page", "view", "viewport", "rawDims", "pageWidth", "pageHeight", "pageX", "pageY", "getRawValue", "AnnotationEditorPrefix", "popup", "contents", "text", "deleted", "updateEditor", "setValue", "pageIndex", "_pageIndex", "popupRef", "modificationDate", "removePopup", "remove", "updateEdited", "params", "slice", "newPopup", "_createPopup", "resetEdited", "style", "currentRect", "rotation", "splice", "left", "top", "width", "height", "setRotation", "document", "createElement", "setAttribute", "tabIndex", "zIndex", "alternativeText", "title", "noRotate", "classList", "add", "hasOwnCanvas", "borderStyle", "borderWidth", "horizontalRadius", "horizontalCornerRadius", "verticalRadius", "verticalCornerRadius", "radius", "borderRadius", "AnnotationBorderStyleType", "SOLID", "DASHED", "BEVELED", "warn", "INSET", "borderBottomStyle", "borderColor", "Util", "makeHexColor", "normalizeRect", "angle", "_commonActions", "setColor", "jsName", "styleName", "event", "color", "detail", "colorType", "colorArray", "target", "ColorConverters", "shadow", "display", "hidden", "visibility", "noView", "noPrint", "print", "focus", "setTimeout", "preventScroll", "userName", "readonly", "disabled", "required", "_setRequired", "bgColor", "fillColor", "fgColor", "textColor", "strokeColor", "_dispatchEventFromSandbox", "actions", "jsEvent", "commonActions", "name", "Object", "keys", "action", "_setDefaultPropertiesFromJS", "element", "storedData", "actionName", "entries", "eventProxy", "rectBlX", "rectBlY", "rectTrX", "rectTrY", "map", "x", "fround", "trX", "trY", "blX", "blY", "subarray", "svgBuffer", "svg", "role", "defs", "append", "clipPath", "y", "rectWidth", "rectHeight", "push", "backgroundImage", "join", "popupData", "date", "titleObj", "parentRect", "elements", "extraPopupElement", "render", "unreachable", "_getElementsByName", "skipId", "fields", "fieldObj", "exportValues", "exportValue", "domElement", "querySelector", "has", "getElementsByName", "getAttribute", "show", "maybeShow", "hide", "forceHide", "getElementsToTriggerPopup", "addHighlightArea", "triggers", "Array", "isArray", "_editOnDoubleClick", "annotationEditorType", "mode", "editId", "addEventListener", "eventBus", "dispatch", "source", "mustEnterInEditMode", "EditorAnnotationElement", "className", "createOrUpdatePopup", "hasComment", "comment", "removeAnnotation", "options", "isTooltipOnly", "link", "isBound", "url", "addLinkAttributes", "newWindow", "_bindNamedAction", "overlaidText", "attachment", "attachmentDest", "setOCGState", "dest", "_bindLink", "Action", "_bindJSAction", "resetForm", "_bindResetFormAction", "destination", "href", "getDestinationHash", "onclick", "goToDestination", "getAnchorUrl", "executeNamedAction", "description", "openOrDownloadData", "content", "filename", "executeSetOCGState", "Map", "get", "otherClickAction", "resetFormFields", "refs", "resetFormRefs", "include", "allFields", "fieldIds", "Set", "fieldName", "values", "field", "storage", "allIds", "type", "value", "defaultValue", "dispatchEvent", "Event", "ids", "image", "src", "toLowerCase", "JSON", "stringify", "showElementAndHideCanvas", "previousSibling", "nodeName", "_getKeyModifier", "FeatureTest", "platform", "isMac", "metaKey", "ctrlKey", "_setEventListener", "elementData", "baseName", "eventName", "valueGetter", "includes", "shift", "shiftKey", "modifier", "focused", "relatedTarget", "_setEventListeners", "names", "getter", "Blur", "Focus", "_setBackgroundColor", "backgroundColor", "_setTextStyle", "TEXT_ALIGNMENT", "fontColor", "defaultAppearanceData", "fontSize", "computedFontSize", "BORDER_SIZE", "roundToOneDecimal", "round", "multiLine", "abs", "numberOfLines", "LINE_FACTOR", "lineHeight", "min", "textAlignment", "textAlign", "isRequired", "removeAttribute", "hasAppearance", "fieldValue", "setPropertyOnSiblings", "base", "key", "keyInStorage", "getValue", "textContent", "maxLen", "charLimit", "fieldFormattedValues", "formattedValue", "comb", "replaceAll", "userValue", "lastCommittedValue", "commitKey", "doNotScroll", "overflowY", "password", "overflowX", "readOnly", "datetimeFormat", "datetimeType", "timeStep", "hasDateOrTime", "maxLength", "defaultFieldValue", "blurListener", "undefined", "scrollLeft", "step", "parts", "getHours", "getMinutes", "getSeconds", "v", "toString", "padStart", "toISOString", "split", "activeElement", "selRange", "setSelectionRange", "willCommit", "selStart", "selectionStart", "selEnd", "selectionEnd", "_blurListener", "parseInt", "valueOf", "Keystroke", "inputType", "match", "substring", "preventDefault", "change", "fieldWidth", "combWidth", "letterSpacing", "verticalAlign", "checked", "checkbox", "curChecked", "buttonValue", "radio", "pdfButtonValue", "linkElement", "lastChild", "selectElement", "addAnEmptyEntry", "combo", "size", "multiSelect", "multiple", "option", "selected", "optionElement", "displayValue", "removeEmptyEntry", "noneOptionElement", "prepend", "removeEventListener", "isExport", "selectedIndex", "prototype", "filter", "call", "selectedValues", "getItems", "multipleSelection", "index", "findIndex", "items", "clear", "insert", "selectChild", "children", "before", "item", "indices", "editable", "changeEx", "keyDown", "hasCommentManager", "_commentManager", "PopupElement", "creationDate", "open", "commentManager", "elementIds", "ariaHasPopup", "AnnotationPrefix", "bind", "PDFDateString", "toDateObject", "trigger", "flatMap", "e", "AbortController", "signal", "find", "renderCommentButton", "parentNode", "after", "hasOwnButton", "togglePopup", "toggleCommentPopup", "showPopup", "hidePopup", "button", "parentContainer", "ariaControls", "commentButtonColor", "opacity", "makeCommentColor", "focusCommentButton", "elementBeforePopup", "parentBoundingClientRect", "getBoundingClientRect", "setCommentButtonStates", "hasPopup", "toggle", "ariaExpanded", "setSelectedCommentButton", "commentPopupPosition", "parentX", "parentY", "parentWidth", "parentHeight", "pos", "hasDefaultPopupPosition", "commentButtonWidth", "editComment", "posX", "posY", "parentDimensions", "showDialog", "baseColor", "outlineColor", "header", "dir", "dateObj", "dateTime", "renderRichText", "html", "attributes", "popupLines", "popupContent", "lineAttributes", "line", "altKey", "abort", "useParentRect", "intersect", "normalizedRect", "HORIZONTAL_SPACE_AFTER_ANNOTATION", "popupLeft", "popupTop", "isVisible", "textPosition", "AnnotationEditorType", "lineSpan", "lineCoordinates", "square", "circle", "containerClassName", "svgElementName", "vertices", "points", "polyline", "it", "transform", "g", "thickness", "root", "parentElement", "mark", "underline", "strikeout", "file", "fillAlpha", "test", "evt", "AnnotationLayer", "div", "accessibilityManager", "annotationCanvasMap", "annotationEditorUIManager", "structTreeLayer", "AnnotationStorage", "_annotationEditorUIManager", "hasEditableAnnotations", "annotations", "setLayerDimensions", "popupToElements", "popupAnnotations", "elementParams", "DOMSVGFactory", "noHTML", "isPopupAnnotation", "set", "rendered", "renderAnnotationElement", "at", "replaceChildren", "promises", "annotationId", "getAriaAttributes", "then", "ariaAttributes", "sort", "a0", "a1", "a2", "a3", "b0", "b1", "b2", "b3", "top1", "bot1", "mid1", "top2", "bot2", "mid2", "centerX1", "centerX2", "fragment", "createDocumentFragment", "Promise", "all", "addPointerInTextLayer", "addLinkAnnotations", "_defaultBorderStyle", "update", "canvas", "firstChild", "replaceWith", "contains", "editableAnnotation", "_hasNoCanvas", "setMissingCanvas", "getEditableAnnotations", "from", "getEditableAnnotation", "addFakeAnnotation", "getPDFRect", "el", "removePointerInTextLayer", "updateFakeAnnotations", "editors", "updateFakeAnnotationElement", "togglePointerEvents", "enabled", "freeze", "rawWidth", "dashArray", "EOL_PATTERN", "FreeTextEditor", "AnnotationEditor", "id", "_colorPicker", "_freeTextDefaultContent", "_internalPadding", "_defaultColor", "_defaultFontSize", "_keyboardManager", "proto", "prototype", "arrowChecker", "self", "isEmpty", "small", "AnnotationEditorUIManager", "TRANSLATE_SMALL", "big", "TRANSLATE_BIG", "shadow", "KeyboardManager", "commitOrRemove", "bubbles", "_translateEmpty", "args", "checker", "_type", "_editorType", "AnnotationEditorType", "FREETEXT", "constructor", "params", "name", "color", "_defaultLineColor", "fontSize", "annotationElementId", "_uiManager", "a11yAlert", "canAddComment", "initialize", "l10n", "uiManager", "style", "getComputedStyle", "document", "documentElement", "parseFloat", "getPropertyValue", "updateDefaultParams", "type", "value", "AnnotationEditorParamsType", "FREETEXT_SIZE", "FREETEXT_COLOR", "updateParams", "defaultPropertiesToUpdate", "propertiesToUpdate", "toolbarButtons", "BasicColorPicker", "colorType", "setFontsize", "size", "editorDiv", "translate", "parentScale", "savedFontsize", "addCommands", "cmd", "bind", "undo", "post", "updateUI", "mustExec", "overwriteIfSameType", "keepUndo", "onUpdatedColor", "update", "setColor", "col", "savedColor", "x", "y", "translateSelectedEditors", "getInitialTranslation", "scale", "rebuild", "parent", "div", "isAttachedToDOM", "add", "enableEditMode", "overlayDiv", "classList", "remove", "contentEditable", "_isDraggable", "removeAttribute", "AbortController", "signal", "combinedSignal", "addEventListener", "editorDivKeydown", "editorDivFocus", "editorDivBlur", "editorDivInput", "editorDivPaste", "disableEditMode", "setAttribute", "abort", "focus", "preventScroll", "isEditing", "focusin", "event", "_focusEventsAllowed", "target", "onceAdded", "width", "_initialOptions", "isCentered", "center", "innerText", "trim", "setEditingState", "buffer", "normalize", "prevChild", "child", "childNodes", "nodeType", "Node", "TEXT_NODE", "nodeName", "push", "join", "parentWidth", "parentHeight", "parentDimensions", "rect", "getBoundingClientRect", "currentLayer", "savedDisplay", "display", "savedVisibility", "contains", "append", "toggle", "rotation", "parentRotation", "height", "fixAndSetPosition", "commit", "isInEditMode", "savedText", "newText", "trimEnd", "setText", "text", "shouldGetKeyboardEvents", "enterInEditMode", "keydown", "key", "preventDefault", "exec", "disableEditing", "enableEditing", "canChangeContent", "render", "baseX", "baseY", "_isCopy", "createElement", "className", "position", "_initialData", "tx", "ty", "pageTranslationToScreen", "pageWidth", "pageHeight", "pageDimensions", "pageX", "pageY", "pageTranslation", "posX", "posY", "setAt", "_moveAfterPaste", "node", "nodeValue", "replaceAll", "clipboardData", "window", "types", "length", "paste", "getData", "selection", "getSelection", "rangeCount", "deleteFromDocument", "range", "getRangeAt", "includes", "insertNode", "createTextNode", "collapseToStart", "startContainer", "startOffset", "bufferBefore", "bufferAfter", "parentElement", "slice", "i", "newRange", "Range", "beforeLength", "Math", "sumPrecise", "map", "line", "firstChild", "setStart", "setEnd", "removeAllRanges", "addRange", "replaceChildren", "split", "content", "contentDiv", "getPDFRect", "padding", "getRect", "deserialize", "data", "initialData", "FreeTextAnnotationElement", "defaultAppearanceData", "fontColor", "popupRef", "richText", "contentsObj", "creationDate", "modificationDate", "textContent", "textPosition", "page", "pageNumber", "annotationType", "Array", "from", "pageIndex", "deleted", "comment", "str", "editor", "Util", "makeHexColor", "setCommentData", "serialize", "isForCopying", "serializeDeleted", "_colorManager", "convert", "serialized", "Object", "assign", "addComment", "isCopy", "hasEditedComment", "_hasBeenMoved", "some", "c", "renderAnnotationElement", "annotation", "updateEdited", "popup", "hasCommentManager", "resetAnnotationElement", "resetEdited", "Outline", "PRECISION", "toSVGPath", "unreachable", "box", "serialize", "_bbox", "_rotation", "_rescale", "src", "tx", "ty", "sx", "sy", "dest", "Float32Array", "length", "i", "ii", "_rescaleAndSwap", "_translate", "svgRound", "x", "Math", "round", "_normalizePoint", "y", "parentWidth", "parentHeight", "rotation", "_normalizePagePoint", "createBezierPoints", "x1", "y1", "x2", "y2", "x3", "y3", "FreeDrawOutliner", "Float32Array", "constructor", "x", "y", "box", "scaleFactor", "thickness", "isLTR", "innerMargin", "set", "NaN", "push", "isEmpty", "isNaN", "lastTop", "subarray", "lastBottom", "width", "height", "add", "layerX", "layerY", "layerWidth", "layerHeight", "x1", "y1", "x2", "y2", "diffX", "diffY", "d", "Math", "hypot", "diffD", "K", "shiftX", "shiftY", "x0", "y0", "nX", "nY", "thX", "thY", "length", "angle", "abs", "atan2", "PI", "toSVGPath", "top", "bottom", "buffer", "i", "join", "lastTopX", "lastTopY", "lastBottomX", "lastBottomY", "newFreeDrawOutline", "outline", "points", "FreeDrawOutline", "getOutlines", "last", "ii", "N", "j", "pos", "Outline", "firstPoint", "lastPoint", "serialize", "blX", "blY", "trX", "trY", "rotation", "_rescale", "_rescaleAndSwap", "Array", "from", "lastX", "lastY", "minMax", "firstPointX", "firstPointY", "lastPointX", "lastPointY", "ltrCallback", "max", "min", "bezierBbox", "Util", "pointBoundingBox", "Infinity", "bezierBoundingBox", "slice", "rectBoundingBox", "bbox", "newOutliner", "point", "getNewOutline", "sx", "sy", "tx", "ty", "outliner", "HighlightOutliner", "constructor", "boxes", "borderWidth", "innerMargin", "isLTR", "minMax", "Infinity", "NUMBER_OF_DIGITS", "EPSILON", "x", "y", "width", "height", "x1", "Math", "floor", "x2", "ceil", "y1", "y2", "left", "right", "push", "Util", "rectBoundingBox", "bboxWidth", "bboxHeight", "shiftedMinX", "shiftedMinY", "firstPointX", "firstPointY", "lastEdge", "at", "lastPoint", "edge", "max", "min", "Float32Array", "getOutlines", "sort", "a", "b", "outlineVerticalEdges", "edges", "allEdges", "Set", "i", "ii", "length", "edge1", "edge2", "add", "outlines", "outline", "size", "values", "next", "value", "delete", "lastPointX", "lastPointY", "e", "has", "HighlightOutline", "array", "start", "end", "middle", "index", "splice", "results", "j", "jj", "y3", "y4", "Outline", "box", "firstPoint", "toSVGPath", "buffer", "polygon", "prevX", "prevY", "join", "serialize", "blX", "blY", "trX", "trY", "_rotation", "points", "Array", "classNamesForOutlining", "FreeHighlightOutliner", "FreeDrawOutliner", "newFreeDrawOutline", "scaleFactor", "FreeHighlightOutline", "FreeDrawOutline", "newOutliner", "point", "thickness", "HighlightEditor", "AnnotationEditor", "_defaultColor", "_defaultOpacity", "_defaultThickness", "_type", "_editorType", "AnnotationEditorType", "HIGHLIGHT", "_freeHighlightId", "_freeHighlight", "_freeHighlightClipId", "_keyboardManager", "proto", "prototype", "shadow", "KeyboardManager", "_moveCaret", "args", "constructor", "params", "name", "color", "thickness", "opacity", "boxes", "methodOfCreation", "text", "_isDraggable", "defaultL10nId", "highlightId", "anchorNode", "anchorOffset", "focusNode", "focusOffset", "rotate", "rotation", "annotationElementId", "_uiManager", "a11yAlert", "telemetryInitialData", "action", "type", "getNonHCMColorName", "telemetryFinalData", "computeTelemetryFinalData", "data", "numberOfColors", "get", "size", "outliner", "HighlightOutliner", "getOutlines", "x", "y", "width", "height", "box", "outlinerForOutline", "direction", "firstPoint", "lastPoint", "highlightOutlines", "clipPathId", "extraThickness", "getNewOutline", "parent", "drawLayer", "finalizeDraw", "bbox", "path", "d", "toSVGPath", "drawOutline", "rootClass", "highlightOutline", "free", "angle", "viewport", "updateProperties", "pageWidth", "pageHeight", "parentDimensions", "initialize", "l10n", "uiManager", "highlightColors", "values", "next", "value", "updateDefaultParams", "AnnotationEditorParamsType", "HIGHLIGHT_COLOR", "HIGHLIGHT_THICKNESS", "translateInPage", "toolbarPosition", "commentButtonPosition", "updateParams", "defaultPropertiesToUpdate", "propertiesToUpdate", "HIGHLIGHT_FREE", "onUpdatedColor", "root", "fill", "updateColor", "setColorAndOpacity", "col", "opa", "savedColor", "savedOpacity", "addCommands", "cmd", "bind", "undo", "post", "updateUI", "mustExec", "overwriteIfSameType", "keepUndo", "_reportTelemetry", "savedThickness", "setThickness", "th", "INK_THICKNESS", "toolbarButtons", "colorPicker", "ColorPicker", "editor", "disableEditing", "div", "classList", "toggle", "enableEditing", "fixAndSetPosition", "getBaseTranslation", "getRect", "tx", "ty", "onceAdded", "focus", "addUndoableEditor", "remove", "rebuild", "isAttachedToDOM", "add", "setParent", "mustBeSelected", "contains", "show", "_isVisible", "select", "setDims", "id", "draw", "viewBox", "highlight", "style", "clipPath", "render", "setAttribute", "addEventListener", "signal", "_signal", "highlightDiv", "document", "createElement", "append", "className", "bindEvents", "pointerover", "isSelected", "hovered", "pointerleave", "event", "exec", "unselect", "start", "selection", "window", "getSelection", "setPosition", "selected", "_mustFixPosition", "visible", "hidden", "pageDimensions", "pageX", "pageY", "pageTranslation", "quadPoints", "Float32Array", "length", "i", "sx", "sy", "rect", "serialize", "startHighlighting", "isLTR", "target", "textLayer", "layerX", "layerY", "parentWidth", "parentHeight", "getBoundingClientRect", "ac", "AbortController", "combinedSignal", "pointerUpCallback", "e", "abort", "stopEvent", "capture", "passive", "noContextMenu", "FreeHighlightOutliner", "scale", "isEmpty", "createAndAddNewEditor", "deserialize", "initialData", "HighlightAnnotationElement", "popupRef", "richText", "contentsObj", "creationDate", "modificationDate", "page", "pageNumber", "annotationType", "Array", "from", "pageIndex", "slice", "deleted", "comment", "str", "InkAnnotationElement", "inkLists", "borderStyle", "rawWidth", "Util", "makeHexColor", "_initialData", "setCommentData", "push", "points", "point", "ii", "parentRotation", "isForCopying", "serializeDeleted", "_colorManager", "convert", "getNonHCMColor", "serialized", "Object", "assign", "outlines", "addComment", "hasEditedComment", "some", "c", "renderAnnotationElement", "annotation", "hide", "updateEdited", "getPDFRect", "popup", "canCreateNewEmptyEditor", "DrawingOptions", "Object", "create", "updateProperty", "name", "value", "updateSVGProperty", "updateProperties", "properties", "entries", "startsWith", "toSVGProperties", "root", "reset", "updateAll", "options", "clone", "unreachable", "DrawingEditor", "AnnotationEditor", "_colorPicker", "_drawId", "_currentDrawId", "_currentParent", "_INNER_MARGIN", "constructor", "params", "mustBeCommitted", "_addOutlines", "onUpdatedColor", "update", "color", "drawOutlines", "drawId", "drawingOptions", "_drawingOptions", "annotationElementId", "_uiManager", "a11yAlert", "editorType", "parent", "drawLayer", "finalizeDraw", "defaultProperties", "box", "id", "draw", "_mergeSVGProperties", "defaultSVGProperties", "p1", "p2", "p1Keys", "Set", "keys", "key", "has", "assign", "getDefaultDrawingOptions", "_options", "typesMap", "isDrawer", "supportMultipleDrawings", "updateDefaultParams", "type", "propertyName", "get", "_defaultDrawingOptions", "updateParams", "_updateProperty", "defaultPropertiesToUpdate", "push", "propertiesToUpdate", "savedValue", "setter", "val", "bbox", "colorType", "addCommands", "cmd", "bind", "undo", "post", "updateUI", "mustExec", "overwriteIfSameType", "keepUndo", "_onResizing", "getPathResizingSVGProperties", "_onResized", "getPathResizedSVGProperties", "_onTranslating", "_x", "_y", "_onTranslated", "getPathTranslatedSVGProperties", "parentDimensions", "_onStartDragging", "rootClass", "moving", "_onStopDragging", "commit", "disableEditMode", "disableEditing", "div", "classList", "toggle", "enableEditing", "getBaseTranslation", "isResizable", "onceAdded", "focus", "addUndoableEditor", "_isDraggable", "setSelected", "isOnScreen", "remove", "rebuild", "isAttachedToDOM", "add", "setParent", "mustBeSelected", "removeShouldRescale", "addShouldRescale", "contains", "select", "updateParent", "x", "y", "width", "height", "pW", "pH", "rotation", "fixAndSetPosition", "setDims", "parentRotation", "rotate", "updateRotation", "onScaleChanging", "updateParentDimensions", "scale", "onScaleChangingWhenDrawing", "render", "baseX", "baseY", "_isCopy", "drawDiv", "document", "createElement", "append", "setAttribute", "className", "_moveAfterPaste", "createDrawerInstance", "_parentWidth", "_parentHeight", "_rotation", "startDrawing", "uiManager", "_isLTR", "event", "target", "offsetX", "offsetY", "pointerId", "pointerType", "CurrentPointers", "isInitializedAndDifferentPointerType", "viewport", "parentWidth", "parentHeight", "getBoundingClientRect", "ac", "AbortController", "signal", "combinedSignal", "setPointer", "window", "addEventListener", "e", "isSamePointerIdOrRemove", "_endDraw", "endDrawingSession", "isSamePointerType", "initializeAndAddPointerId", "isCancellable", "removeLastElement", "isEmpty", "capture", "passive", "noContextMenu", "_drawMove", "isSameTimeStamp", "timeStamp", "stopEvent", "toggleDrawing", "_editorUndoBar", "hide", "startNew", "updateUIForDefaultProperties", "isSamePointerId", "isUsingMultiplePointers", "setTimeStamp", "_cleanup", "all", "clearTimeStamp", "abort", "clearPointerIds", "end", "lastElement", "getLastElement", "setLastElement", "AnnotationEditorParamsType", "DRAW_STEP", "endDrawing", "isAborted", "cleanUndoStack", "pageDimensions", "pageWidth", "pageHeight", "editor", "createAndAddNewEditor", "getOutlines", "createDrawingOptions", "_data", "deserializeDraw", "_pageX", "_pageY", "_pageWidth", "_pageHeight", "_innerWidth", "deserialize", "data", "rawDims", "pageX", "pageY", "serializeDraw", "isForCopying", "pageTranslation", "serialize", "renderAnnotationElement", "annotation", "updateEdited", "rect", "getPDFRect", "canCreateNewEmptyEditor", "InkDrawOutliner", "Float64Array", "InkDrawOutline", "constructor", "x", "y", "parentWidth", "parentHeight", "rotation", "thickness", "line", "NaN", "points", "set", "updateProperty", "name", "value", "Outline", "_normalizePoint", "isEmpty", "length", "isCancellable", "add", "x1", "y1", "x2", "y2", "subarray", "diffX", "diffY", "d", "Math", "hypot", "push", "isNaN", "path", "toSVGPath", "splice", "createBezierPoints", "end", "change", "startNew", "last", "at", "Float32Array", "getLastElement", "setLastElement", "element", "removeLastElement", "pop", "i", "ii", "firstX", "svgRound", "firstY", "lastIndexOf", "slice", "secondX", "secondY", "buffer", "c1x", "c1y", "c2x", "c2y", "map", "join", "getOutlines", "scale", "innerMargin", "build", "defaultSVGProperties", "root", "viewBox", "rootClass", "draw", "bbox", "lines", "parentScale", "serialize", "pageX", "pageY", "pageWidth", "pageHeight", "isForCopying", "serializedLines", "serializedPoints", "width", "height", "tx", "ty", "sx", "sy", "rescaleFn", "_rescale", "_rescaleAndSwap", "Array", "rect", "deserialize", "paths", "newLines", "point", "len", "outlines", "prototype", "margin", "marginX", "marginY", "Infinity", "Util", "pointBoundingBox", "lastX", "lastY", "bezierBoundingBox", "MathClamp", "box", "oldMarginX", "oldMarginY", "newMarginX", "newMarginY", "diffMarginX", "diffMarginY", "updateParentDimensions", "updateRotation", "transform", "rotationTransform", "defaultProperties", "a", "b", "c", "e", "f", "getPathResizingSVGProperties", "newX", "newY", "newWidth", "newHeight", "abs", "PRECISION", "s1x", "s1y", "s2x", "s2y", "getPathResizedSVGProperties", "_translate", "getPathTranslatedSVGProperties", "parentDimensions", "newParentWidth", "newParentHeight", "InkDrawingOptions", "DrawingOptions", "constructor", "viewerParameters", "_viewParameters", "updateProperties", "fill", "stroke", "AnnotationEditor", "_defaultLineColor", "updateSVGProperty", "name", "value", "realScale", "clone", "updateAll", "InkEditor", "DrawingEditor", "_type", "_editorType", "AnnotationEditorType", "INK", "_defaultDrawingOptions", "params", "_willKeepAspectRatio", "defaultL10nId", "initialize", "l10n", "uiManager", "viewParameters", "getDefaultDrawingOptions", "options", "supportMultipleDrawings", "typesMap", "shadow", "Map", "AnnotationEditorParamsType", "INK_THICKNESS", "INK_COLOR", "INK_OPACITY", "createDrawerInstance", "x", "y", "parentWidth", "parentHeight", "rotation", "InkDrawOutliner", "deserializeDraw", "pageX", "pageY", "pageWidth", "pageHeight", "innerMargin", "data", "InkDrawOutline", "deserialize", "parent", "initialData", "InkAnnotationElement", "inkLists", "rect", "id", "color", "opacity", "borderStyle", "rawWidth", "thickness", "popupRef", "richText", "contentsObj", "creationDate", "modificationDate", "page", "pageNumber", "annotationType", "Array", "from", "paths", "points", "boxes", "pageIndex", "slice", "annotationElementId", "deleted", "comment", "str", "editor", "_initialData", "setCommentData", "toolbarButtons", "_colorPicker", "BasicColorPicker", "colorType", "_drawingOptions", "onScaleChanging", "_drawId", "drawLayer", "toSVGProperties", "onScaleChangingWhenDrawing", "_currentParent", "_currentDrawId", "createDrawingOptions", "Util", "makeHexColor", "serialize", "isForCopying", "isEmpty", "serializeDeleted", "lines", "serializeDraw", "serialized", "Object", "assign", "_colorManager", "convert", "addComment", "isCopy", "hasEditedComment", "_hasBeenMoved", "_hasBeenResized", "some", "c", "i", "renderAnnotationElement", "annotation", "hide", "updateEdited", "popup", "ContourDrawOutline", "InkDrawOutline", "toSVGPath", "path", "endsWith", "BASE_HEADER_LENGTH", "POINTS_PROPERTIES_NUMBER", "SignatureExtractor", "maxDim", "sigmaSFactor", "sigmaR", "kernelSize", "i0", "j0", "i", "j", "Int32Array", "buf", "width", "offset", "id", "k", "kk", "shiftI", "shiftJ", "height", "threshold", "N", "length", "types", "nbd", "lnbd", "contours", "ij", "pix", "i2", "j2", "Math", "abs", "points", "isHole", "contour", "parent", "push", "contour0", "c", "i1", "j1", "i3", "j3", "i4", "j4", "ij3", "start", "end", "output", "ax", "ay", "abx", "aby", "dist", "hypot", "nabx", "naby", "aa", "m", "invS", "phi", "atan", "cosPhi", "cos", "sinPhi", "sin", "tmax", "poly", "partialPhi", "max", "dmax", "index", "d", "len", "sigmaS", "kernel", "Float32Array", "sigmaS2", "halfSize", "x", "exp", "rangeValues", "sigmaR2", "out", "Uint8Array", "histogram", "Uint32Array", "center", "sum", "norm", "y", "l", "neighbour", "w", "round", "g", "Uint8ClampedArray", "min", "Infinity", "ii", "ratio", "M", "L", "findIndex", "v", "pos", "spos", "bitmap", "originalBitmap", "newWidth", "newHeight", "prevWidth", "prevHeight", "steps", "log2", "isteps", "floor", "ceil", "offscreen", "OffscreenCanvas", "ctx", "getContext", "drawImage", "close", "transferToImageBitmap", "willReadFrequently", "fillStyle", "fillRect", "filter", "grayImage", "getImageData", "data", "uint8Buf", "extractContoursFromText", "text", "fontFamily", "fontStyle", "fontWeight", "pageWidth", "pageHeight", "rotation", "innerMargin", "canvas", "alpha", "fontSize", "font", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "fontBoundingBoxAscent", "fontBoundingBoxDescent", "measureText", "SCALE", "canvasWidth", "canvasHeight", "fillText", "contourList", "processDrawnLines", "lines", "curves", "mustSmooth", "areContours", "process", "buffer", "thickness", "linesAndPoints", "xScale", "yScale", "newCurves", "reducedPoints", "newPoints", "line", "set", "NaN", "x1", "y1", "x2", "y2", "Outline", "createBezierPoints", "outline", "ContourDrawOutline", "InkDrawOutline", "build", "compressSignature", "outlines", "minDiff", "maxDiff", "outlinesLength", "dx", "bufferType", "Int8Array", "Int16Array", "headerLength", "header", "BYTES_PER_ELEMENT", "cs", "CompressionStream", "writer", "writable", "getWriter", "ready", "write", "BufferCtor", "prototype", "constructor", "diffs", "Response", "readable", "arrayBuffer", "bytes", "toBase64Util", "decompressSignature", "signatureData", "fromBase64Util", "DecompressionStream", "then", "catch", "chunk", "version", "Error", "numberOfDrawings", "diffsOffset", "e", "warn", "SignatureOptions", "DrawingOptions", "constructor", "updateProperties", "fill", "AnnotationEditor", "_defaultLineColor", "clone", "updateAll", "DrawnSignatureOptions", "InkDrawingOptions", "viewerParameters", "stroke", "_viewParameters", "SignatureEditor", "DrawingEditor", "_type", "_editorType", "AnnotationEditorType", "SIGNATURE", "_defaultDrawingOptions", "params", "mustBeCommitted", "name", "_willKeepAspectRatio", "signatureData", "defaultL10nId", "initialize", "l10n", "uiManager", "_defaultDrawnSignatureOptions", "viewParameters", "getDefaultDrawingOptions", "options", "supportMultipleDrawings", "typesMap", "shadow", "Map", "isDrawer", "telemetryFinalData", "type", "hasDescription", "computeTelemetryFinalData", "data", "hasDescriptionStats", "get", "hasAltText", "hasNoAltText", "isResizable", "onScaleChanging", "_drawId", "render", "div", "baseX", "baseY", "_isCopy", "x", "y", "lines", "mustSmooth", "areContours", "description", "uuid", "heightInPage", "rawDims", "pageWidth", "pageHeight", "rotation", "parent", "viewport", "outline", "SignatureExtractor", "processDrawnLines", "innerMargin", "_INNER_MARGIN", "addSignature", "setAttribute", "JSON", "stringify", "hidden", "_uiManager", "getSignature", "_moveAfterPaste", "setUuid", "addEditToolbar", "getUuid", "then", "toolbar", "updateEditSignatureButton", "getSignaturePreview", "newCurves", "thickness", "width", "height", "maxDim", "Math", "max", "outlineData", "curves", "map", "points", "toolbarButtons", "signatureManager", "savedX", "savedY", "ContourDrawOutline", "drawingOptions", "_addOutlines", "drawOutlines", "pageDimensions", "newHeight", "setDims", "center", "_onResized", "rotate", "addToAnnotationStorage", "_reportTelemetry", "action", "hasBeenSaved", "getFromImage", "bitmap", "process", "getFromText", "text", "fontInfo", "extractContoursFromText", "getDrawnSignature", "createDrawingOptions", "_drawingOptions", "serialize", "isForCopying", "isEmpty", "serializeDraw", "serialized", "Object", "assign", "isSignature", "color", "addComment", "paths", "isCopy", "accessibilityData", "alt", "deserializeDraw", "pageX", "pageY", "deserialize", "InkDrawOutline", "editor", "StampEditor", "AnnotationEditor", "_type", "_editorType", "AnnotationEditorType", "STAMP", "constructor", "params", "name", "bitmapUrl", "bitmapFile", "defaultL10nId", "initialize", "l10n", "uiManager", "isHandlingMimeForPasting", "mime", "SupportedImageMimeTypes", "includes", "paste", "item", "parent", "pasteEditor", "mode", "getAsFile", "altTextFinish", "_uiManager", "useNewAltTextFlow", "div", "hidden", "telemetryFinalData", "type", "hasAltText", "altTextData", "altText", "computeTelemetryFinalData", "data", "hasAltTextStats", "get", "hasNoAltText", "fromId", "remove", "bitmap", "id", "isSvg", "file", "enableWaiting", "useNewAltTextWhenAddingImage", "addEditToolbar", "then", "_editToolbar", "hide", "editAltText", "_reportTelemetry", "action", "alt_text_modal", "alt_text_type", "mlGuessAltText", "focus", "imageData", "updateAltTextData", "hasAltTextData", "mlManager", "Error", "isEnabledFor", "width", "height", "copyCanvas", "response", "guess", "request", "channels", "length", "error", "cancel", "output", "setGuessedAltText", "alt", "decorative", "imageManager", "getFromId", "finally", "url", "getFromUrl", "getFromFile", "input", "document", "createElement", "accept", "join", "signal", "_signal", "Promise", "resolve", "addEventListener", "files", "click", "deleteId", "clearTimeout", "rebuild", "isAttachedToDOM", "add", "onceAdded", "_isDraggable", "isEmpty", "toolbarButtons", "createAltText", "isResizable", "render", "baseX", "baseY", "_isCopy", "x", "y", "_moveAfterPaste", "addShouldRescale", "setCanvas", "annotationElementId", "canvas", "bitmapId", "getFromCanvas", "isValidId", "_onResized", "onScaleChanging", "TIME_TO_WAIT", "setTimeout", "pageWidth", "pageHeight", "pageDimensions", "MAX_RATIO", "factor", "Math", "min", "setAttribute", "addContainer", "setDims", "_initialOptions", "isCentered", "center", "fixAndSetPosition", "addUndoableEditor", "a11yAlert", "maxDataDimension", "maxPreviewDimension", "createImageData", "bitmapWidth", "bitmapHeight", "outputScale", "OutputScale", "ratio", "floor", "scaledWidth", "ceil", "sx", "scaledHeight", "sy", "ctx", "getContext", "filter", "hcmFilter", "white", "black", "ColorScheme", "isDarkMode", "boxDim", "boxDimWidth", "boxDimHeight", "pattern", "OffscreenCanvas", "patternCtx", "fillStyle", "fillRect", "createPattern", "drawImage", "dataWidth", "dataHeight", "symmetric", "offscreen", "offscreenCtx", "willReadFrequently", "getImageData", "newWidth", "newHeight", "prevWidth", "prevHeight", "transferToImageBitmap", "parentWidth", "parentHeight", "parentDimensions", "toUrl", "getSvgUrl", "toDataURL", "round", "PixelsPerInch", "PDF_TO_CSS_UNITS", "structuredClone", "deserialize", "initialData", "missingCanvas", "StampAnnotationElement", "rect", "rotation", "structParent", "popupRef", "richText", "contentsObj", "creationDate", "modificationDate", "container", "page", "pageNumber", "_hasNoCanvas", "_structTree", "getAriaAttributes", "AnnotationPrefix", "annotationType", "pageIndex", "slice", "deleted", "accessibilityData", "comment", "str", "editor", "addMissingCanvas", "_initialData", "setCommentData", "serialize", "isForCopying", "context", "serializeDeleted", "serialized", "Object", "assign", "addComment", "serializeAltText", "isCopy", "changes", "isSame", "isSameAltText", "stamps", "Map", "area", "has", "set", "prevData", "close", "isSamePageIndex", "hasEditedComment", "_hasBeenMoved", "_hasBeenResized", "renderAnnotationElement", "annotation", "updateEdited", "getPDFRect", "popup", "AnnotationEditorLayer", "Map", "_initialized", "FreeTextEditor", "InkEditor", "StampEditor", "HighlightEditor", "SignatureEditor", "map", "type", "_editorType", "constructor", "uiManager", "pageIndex", "div", "structTreeLayer", "accessibilityManager", "annotationLayer", "drawLayer", "textLayer", "viewport", "l10n", "editorTypes", "values", "editorType", "initialize", "registerEditorTypes", "_structTree", "addLayer", "isEmpty", "size", "isInvisible", "getMode", "AnnotationEditorType", "NONE", "updateToolbar", "options", "updateMode", "mode", "classList", "toggle", "disableTextSelection", "togglePointerEvents", "toggleAnnotationLayerPointerEvents", "disableClick", "INK", "enableClick", "HIGHLIGHT", "enableTextSelection", "POPUP", "_type", "hidden", "hasTextLayer", "setEditingState", "isEditing", "addCommands", "params", "cleanUndoStack", "toggleDrawing", "enabled", "getEditors", "enable", "tabIndex", "abort", "annotationElementIds", "Set", "editor", "enableEditing", "show", "annotationElementId", "removeChangedExistingAnnotation", "add", "editable", "getEditableAnnotations", "hide", "isDeletedAnnotationElement", "data", "id", "has", "deserialize", "addOrRebuild", "_eventBus", "dispatch", "source", "pageNumber", "disable", "AbortController", "signal", "combinedSignal", "addEventListener", "e", "DBL_CLICK_THRESHOLD", "clientX", "clientY", "timeStamp", "lastPointerDownTimestamp", "elements", "document", "elementsFromPoint", "contains", "regex", "RegExp", "AnnotationEditorPrefix", "element", "test", "get", "stopPropagation", "preventDefault", "dblclick", "capture", "needFakeAnnotation", "changedAnnotations", "resetAnnotations", "disableEditing", "push", "serialize", "set", "getEditableAnnotation", "remove", "editables", "updateEdited", "deleted", "resetAnnotationElement", "addChangedExistingAnnotation", "renderAnnotationElement", "updateFakeAnnotations", "setActiveEditor", "currentActive", "getActive", "bind", "event", "unselectAll", "target", "getAttribute", "isMac", "FeatureTest", "platform", "button", "ctrlKey", "showAllEditors", "startHighlighting", "direction", "x", "y", "once", "_signal", "pointerdown", "pointerup", "attach", "removeDeletedAnnotationElement", "detach", "delete", "removePointerInTextLayer", "contentDiv", "addDeletedAnnotationElement", "removeEditor", "isAttachedToDOM", "changeParent", "parent", "AnnotationEditor", "deleteAnnotationElement", "setParent", "append", "addEditor", "render", "fixAndSetPosition", "onceAdded", "addToAnnotationStorage", "_reportTelemetry", "telemetryInitialData", "moveEditorInDOM", "activeElement", "_focusEventsAllowed", "setTimeout", "focus", "_structTreeParentId", "moveElementInDOM", "needsToBeRebuilt", "rebuild", "addUndoableEditor", "cmd", "_uiManager", "undo", "mustExec", "getEditorByUID", "uid", "getNextId", "getId", "ac", "prototype", "canCreateNewEmptyEditor", "pasteEditor", "offsetX", "offsetY", "isCentered", "annotationType", "annotationEditorType", "createAndAddNewEditor", "boundingClientRect", "getBoundingClientRect", "width", "height", "tlX", "Math", "max", "tlY", "brX", "min", "window", "innerWidth", "brY", "innerHeight", "centerX", "centerY", "rotation", "addNewEditor", "setSelected", "toggleSelected", "unselect", "isDrawer", "supportMultipleDrawings", "currentMode", "STAMP", "SIGNATURE", "startDrawingSession", "preventScroll", "startDrawing", "setCurrentDrawingSession", "relatedTarget", "commitOrRemove", "pause", "on", "endDrawingSession", "isAborted", "endDrawing", "findNewParent", "layer", "findParent", "onScaleChanging", "onScaleChangingWhenDrawing", "destroy", "clearTimeout", "clear", "removeLayer", "setLayerDimensions", "update", "oldRotation", "rotate", "pageDimensions", "pageWidth", "pageHeight", "rawDims", "scale", "viewParameters", "realScale", "DrawLayer", "Map", "constructor", "pageIndex", "setParent", "parent", "size", "root", "values", "remove", "append", "_svgFactory", "shadow", "DOMSVGFactory", "element", "x", "y", "width", "height", "style", "top", "left", "svg", "create", "setAttribute", "defs", "pathId", "clipPath", "createElement", "clipPathId", "clipPathUse", "classList", "add", "properties", "key", "value", "Object", "entries", "removeAttribute", "draw", "isPathUpdatable", "hasClip", "id", "path", "set", "use", "updateProperties", "drawOutline", "mustRemoveSelfIntersections", "maskId", "mask", "rect", "use1", "use2", "cloneNode", "finalizeDraw", "delete", "elementOrId", "bbox", "rootClass", "get", "className", "toggle", "firstElementChild", "pathElement", "updateParent", "layer", "destroy", "clear", "globalThis", "_pdfjsTestingUtils", "HighlightOutliner", "pdfjsLib", "AbortException", "AnnotationEditorLayer", "AnnotationEditorParamsType", "AnnotationEditorType", "AnnotationEditorUIManager", "AnnotationLayer", "AnnotationMode", "AnnotationType", "applyOpacity", "build", "ColorPicker", "createValidAbsoluteUrl", "CSSConstants", "DOMSVGFactory", "DrawLayer", "FeatureTest", "fetchData", "findContrastColor", "getDocument", "getFilenameFromUrl", "getPdfFilenameFromUrl", "getRGB", "getUuid", "getXfaPageViewport", "GlobalWorkerOptions", "ImageKind", "InvalidPDFException", "isDataScheme", "isPdfFile", "isValidExplicitDest", "MathClamp", "noContextMenu", "normalizeUnicode", "OPS", "OutputScale", "PasswordResponses", "PDFDataRangeTransport", "PDFDateString", "PDFWorker", "PermissionFlag", "PixelsPerInch", "RenderingCancelledException", "renderRichText", "ResponseException", "setLayerDimensions", "shadow", "SignatureExtractor", "stopEvent", "SupportedImageMimeTypes", "TextLayer", "TouchManager", "updateUrlHash", "Util", "VerbosityLevel", "version", "XfaLayer", "createGrid", "listeners", "event", "callback", "sort", "matches", "e", "i", "s", "o", "name", "a", "b", "logger", "k", "j", "process", "index", "t", "c", "cs", "map", "x", "oldIndex", "css", "elements", "resolve", "_", "module", "start", "y", "p", "e2", "lastChild", "event2", "config", "parentEl", "getElement", "callbacks", "isValid", "r", "nextEl", "names", "match", "on", "version", "f", "create", "dispatch", "n", "set", "cache", "overrides", "location", "v", "format", "year", "month", "day", "now", "newIndex", "option", "eventListenerOptions", "index2", "dispatchEvent", "destroy", "queue", "resize", "to", "from", "getColumnState", "formatValue", "Registry", "nonce", "m", "color", "q", "p2", "formatter", "_GlobalGridOptions", "registry", "sortColumns", "positions", "defaultOptions", "preventDefault", "l", "it", "getColumnState2", "features", "element", "columns", "addEventListener", "removeEventListener", "FetchRequest", "Inputmask", "Moment", "e", "i"]
}
